Built motion from commit e992f77f.|2.6.10
authorsupport <support@xcally.com>
Tue, 17 May 2022 14:57:57 +0000 (14:57 +0000)
committersupport <support@xcally.com>
Tue, 17 May 2022 14:57:57 +0000 (14:57 +0000)
1232 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/en.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/dashboards/i18n/it.json
public/app/main/apps/fax/i18n/et.json
public/app/main/apps/help/i18n/et.json
public/app/main/apps/integrations/i18n/et.json
public/app/main/apps/jscripty/i18n/et.json
public/app/main/apps/mail/i18n/et.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/motiondialer/i18n/et.json
public/app/main/apps/openchannel/i18n/et.json
public/app/main/apps/plugins/i18n/et.json
public/app/main/apps/settings/i18n/et.json
public/app/main/apps/sms/i18n/et.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/tools/i18n/et.json
public/app/main/apps/video/i18n/et.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/quick-panel/i18n/et.json
public/app/reset/i18n/et.json
public/index.html
public/scripts/app.d44c05b7.js [moved from public/scripts/app.231049c5.js with 52% similarity]
public/styles/app.d45f5a7f.css [moved from public/styles/app.fabf8255.css with 97% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.events.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.js [deleted file]
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/voiceQueueSummary.js [deleted file]
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/realtime/utils.js [deleted file]
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 0f8326e..fa25672 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-17T12:21:38.564Z",
+    "time": "2022-05-17T14:50:22.421Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 2486fcf..66c7e57 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-17T12:21:38.564Z",
+    "time": "2022-05-17T14:50:22.421Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 729f936..b061703 100644 (file)
@@ -1,8 +1,8 @@
 {
   "ERROR404": {
     "CODE": "404",
-    "MESSAGE": "Vabandame, otsitud lehekülge ei leitud",
-    "SEARCH": "Otsi mida tahes",
-    "GO_BACK": "Mine tagasi töölauale"
+    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
+    "SEARCH": "Search for anything",
+    "GO_BACK": "Go back to dashboard"
   }
 }
index eb1d0e2..b218b70 100644 (file)
@@ -1,11 +1,11 @@
 {
   "ERROR500": {
     "CODE": "500",
-    "MESSAGE": "Nonii, oled interneti katki teinud!",
-    "SUBMESSAGE": "Teeme lihtsalt nalja, tundub, et meil on sisemine tõrge, palun proovi paari minuti pärast uuesti",
-    "REPORT": "Teata sellest probleemist",
-    "JIRA_MESSAGE": "Sinu päring on kohale toimetatud ja sellega tegeletakse peagi.",
-    "JIRA_SUBMESSAGE": "Vabandame ebamugavuste pärast. Küsimuste korral palun võta meiega kontakti.",
-    "GO_BACK": "Mine tagasi töölauale"
+    "MESSAGE": "Well, you broke the internet!",
+    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
+    "REPORT": "Report this problem",
+    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
+    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
+    "GO_BACK": "Go back to dashboard"
   }
 }
index ee6d003..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index dc70b81..be7b81a 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Taasta oma parool",
-    "EMAIL_ADRESS": "E-posti aadress",
-    "SEND_RESET_LINK": "SAADA LÄHTESTAMISE LINK",
-    "GO_BACK": "Mine tagasi sisse logima",
-    "LINK_SENT": "Link saadetud",
-    "LINNK_SENT_MESSAGE": "Sulle on saadetud e-kiri, mis sisaldab Sinu parooli lähtestamise linki!",
-    "PASSWORD_RESET_ERROR": "Parooli Lähtestamise Viga",
+    "TITLE": "Recover your password",
+    "EMAIL_ADRESS": "Email address",
+    "SEND_RESET_LINK": "SEND RESET LINK",
+    "GO_BACK": "Go back to login",
+    "LINK_SENT": "Link Sent",
+    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat"
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format"
     }
   }
 }
index 1f1d597..f78785b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "HEADER": {
-    "NEWS": "Palun külasta meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a>, et avastada uusi ägedaid funktsioone, mida pakub XCALLY.",
+    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
     "ERRORS": {}
   }
 }
index 4eb3084..e371b06 100644 (file)
@@ -1,26 +1,26 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Telefonid",
-    "SELECT": "Vali",
-    "CANCEL": "Tühista",
-    "TITLE": "Logi sisse oma kontole",
-    "EMAIL": "E-post",
-    "USERNAME": "Kasutajanimi",
-    "PASSWORD": "Parool",
-    "REMEMBER_ME": "Pea mind meeles",
-    "FORGOT_PASSWORD": "Unustasid Parooli?",
-    "LOG_IN": "LOGI SISSE",
-    "OR": "VÕI",
-    "WITH_GOOGLE": "Logi sisse Google kontoga",
-    "WITH_FACEBOOK": "Logi sisse Facebooki kontoga",
-    "DONT_HAVE_ACCOUNT": "Konto puudub?",
-    "CREATE_ACCOUNT": "Loo konto",
+    "TELEPHONES": "Telephones",
+    "SELECT": "Select",
+    "CANCEL": "Cancel",
+    "TITLE": "Log in to your account",
+    "EMAIL": "Email",
+    "USERNAME": "Username",
+    "PASSWORD": "Password",
+    "REMEMBER_ME": "Remember Me",
+    "FORGOT_PASSWORD": "Forgot Password?",
+    "LOG_IN": "LOG IN",
+    "OR": "OR",
+    "WITH_GOOGLE": "Log in with Google",
+    "WITH_FACEBOOK": "Log in with Facebook",
+    "DONT_HAVE_ACCOUNT": "No account?",
+    "CREATE_ACCOUNT": "Create an account",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli"
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field"
     },
-    "WITH_AD": "Logi sisse Active Directory kontoga"
+    "WITH_AD": "Logige sisse Active Directoryga"
   }
 }
index 8d3f3e2..6d01d84 100644 (file)
@@ -1,88 +1,88 @@
 {
   "ANALYTICS": {
-    "SEND_IF_EMPTY": "Saada tühjana",
-    "REPORTNAME": "Aruande Nimi",
-    "DELETE": "Kustuta",
-    "NAME": "Nimi",
-    "ANALYTICS": "Analüüs",
-    "METRICS": "Mõõdik",
-    "ID": "ID",
-    "TABLE": "Tabel",
-    "DESCRIPTION": "Kirjeldus",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "METRIC": "Mõõdik",
+    "SEND_IF_EMPTY": "Send if empty",
+    "REPORTNAME": "Report Name",
+    "DELETE": "Delete",
+    "NAME": "Name",
+    "ANALYTICS": "Analytics",
+    "METRICS": "Metrics",
+    "ID": "Id",
+    "TABLE": "Table",
+    "DESCRIPTION": "Description",
+    "SEARCH_FOR_ANYONE": "Search",
+    "METRIC": "Metric",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "METRIC_REQUIRED": "Kohustuslik väli",
-      "COLUMN_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "CUSTOM_METRIC_REQUIRED": "Kohustuslik väli",
-      "ALIAS_REQUIRED": "Kohustuslik väli"
+      "NAME_REQUIRED": "Mandatory field",
+      "METRIC_REQUIRED": "Mandatory field",
+      "COLUMN_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field"
     },
-    "NEW_METRIC": "Uus Mõõdik",
-    "ADD_METRIC": "Lisa Mõõdik",
-    "EDIT_METRIC": "Redigeeri Mõõdikut",
-    "DELETE_METRIC": "Kustuta Mõõdik",
-    "SAVE": "Salvesta",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "TYPE": "Tüüp",
-    "EXTRACTEDREPORTS": "Ekstraktitud Aruanded",
-    "DATE_RANGE_FROM": "Kuupäevavahemik Alates",
-    "DATE_RANGE_TO": "Kuupäevavahemik Kuni",
-    "GENERATED_AT": "Loomisaeg",
-    "STATUS": "Staatus",
-    "OUTPUT": "Väljund",
-    "REPORTS": "Aruanded",
-    "SEARCH_FOR_FOLDER": "Otsi kausta",
-    "CREATED_AT": "Loomisaeg",
-    "NEW_REPORT": "Uus Aruanne",
-    "ADD_REPORT": "Lisa Aruanne",
-    "COPY_REPORT": "Kopeeri Aruanne",
-    "PREVIEW_REPORT": "Kuva Aruande eelvaade",
-    "RUN_REPORT": "Käivita Aruanne",
-    "DOWNLOAD_JSON_REPORT": "Ekspordi Aruanne JSON",
-    "EDIT_REPORT": "Redigeeri Aruannet",
-    "DELETE_REPORT": "Kustuta Aruanne",
-    "CREATE": "Loo Kaust",
-    "RENAME": "Nimeta Kaust ümber",
-    "REMOVE": "Eemalda Kaust",
-    "SELECT_NODE": "Vali Kaust",
-    "ERROR": "Viga",
-    "QUERY_ERROR": "Päringu Tõrge",
-    "MESSAGE": "Sõnum",
-    "CLOSE": "Sule",
-    "FORMAT": "Vorming",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "FIELDS": "Väljad",
-    "CONDITION": "Tingimus",
-    "OPERATOR": "Operaator",
-    "GROUP": "Rühm",
-    "COLUMN": "Veerg",
-    "VALUE": "Väärtus",
-    "PREVIEW": "Eelvaade",
-    "LIMITED_RESULT": "*Piiratud Tulemused",
-    "NO_DATA": "Andmete tulemid puuduvad",
-    "CONDITIONS": "Tingimused",
-    "ALIAS": "Pseudonüüm",
-    "FUNCTION": "Funktsioon",
-    "GROUP_BY": "Rühmita Vastavalt",
-    "ORDER_BY": "Telli Vastavalt",
-    "ADD_REPORTFIELD": "Lisa Väli",
-    "EDIT_REPORTFIELD": "Redigeeri Välja",
-    "DELETE_REPORTFIELD": "Kustuta Väli",
-    "METRIC_NAME": "Mõõdik",
-    "NO_METRIC_FOUND": "Mõõdikuid ei leitud",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "CUSTOM_METRIC": "Kohandatud Mõõdik",
-    "DELETE_EXTRACTEDREPORT": "Kustuta Ekstraktitud Aruanne",
-    "EDIT_EXTRACTEDREPORT": "Redigeeri Ekstraktitud Aruannet",
-    "DOWNLOAD_EXTRACTEDREPORT": "Laadi alla Ekstraktitud Aruanne",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "NEW_METRIC": "New Metric",
+    "ADD_METRIC": "Add Metric",
+    "EDIT_METRIC": "Edit Metric",
+    "DELETE_METRIC": "Delete Metric",
+    "SAVE": "Save",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "TYPE": "Type",
+    "EXTRACTEDREPORTS": "Extracted Reports",
+    "DATE_RANGE_FROM": "Date Range From",
+    "DATE_RANGE_TO": "Date Range To",
+    "GENERATED_AT": "Generated At",
+    "STATUS": "Status",
+    "OUTPUT": "Output",
+    "REPORTS": "Reports",
+    "SEARCH_FOR_FOLDER": "Search for folder",
+    "CREATED_AT": "Created At",
+    "NEW_REPORT": "New Report",
+    "ADD_REPORT": "Add Report",
+    "COPY_REPORT": "Copy Report",
+    "PREVIEW_REPORT": "Preview Report",
+    "RUN_REPORT": "Run Report",
+    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
+    "EDIT_REPORT": "Edit Report",
+    "DELETE_REPORT": "Delete Report",
+    "CREATE": "Create Folder",
+    "RENAME": "Rename Folder",
+    "REMOVE": "Remove Folder",
+    "SELECT_NODE": "Select Folder",
+    "ERROR": "Error",
+    "QUERY_ERROR": "Query Error",
+    "MESSAGE": "Message",
+    "CLOSE": "Close",
+    "FORMAT": "Format",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FIELDS": "Fields",
+    "CONDITION": "Condition",
+    "OPERATOR": "Operator",
+    "GROUP": "Group",
+    "COLUMN": "Column",
+    "VALUE": "Value",
+    "PREVIEW": "Preview",
+    "LIMITED_RESULT": "*Limited Results",
+    "NO_DATA": "No data results",
+    "CONDITIONS": "Conditions",
+    "ALIAS": "Alias",
+    "FUNCTION": "Function",
+    "GROUP_BY": "Group By",
+    "ORDER_BY": "Order By",
+    "ADD_REPORTFIELD": "Add Field",
+    "EDIT_REPORTFIELD": "Edit Field",
+    "DELETE_REPORTFIELD": "Delete Field",
+    "METRIC_NAME": "Metric",
+    "NO_METRIC_FOUND": "No metric found",
+    "NO_AVAILABLE_INFO": "No available info",
+    "CUSTOM_METRIC": "Custom Metric",
+    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
+    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
+    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
     "WEB_REPORT": "Veebiaruanne"
   }
index 2389db1..8b74f11 100644 (file)
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Konto",
-    "ADDUSER_PROJECTS": "Lisa Kasutajad Projekti",
-    "ADD_ODBC": "Lisa ODBC",
-    "ADD_PROJECT": "Lisa Projekt",
-    "ADD_VARIABLE": "Lisa Muutuja",
-    "AGENTS": "Agendid",
+    "ACCOUNT_ID": "Account",
+    "ADDUSER_PROJECTS": "Add Users to Project",
+    "ADD_ODBC": "Add ODBC",
+    "ADD_PROJECT": "Add Project",
+    "ADD_VARIABLE": "Add Variable",
+    "AGENTS": "Agents",
     "AGI": "AGI",
-    "ALL_USERS": "Kõik Kasutajad",
-    "ANSWER": "Vastus",
-    "APIKEY": "API võti",
-    "APPID": "Rakenduse ID",
-    "Rakendus": "Avaldus",
-    "APPSECRET": "Rakenduse Saladus",
-    "ARGS": "Argumendid",
-    "ATTACHMENT_NAME": "Manuse Nimi",
-    "ATTACHMENT_PATH": "Manuse Tee",
-    "ATTACHMENT_TYPE": "Manuse Tüüp",
+    "ALL_USERS": "All Users",
+    "ANSWER": "Answer",
+    "APIKEY": "ApiKey",
+    "APPID": "App ID",
+    "APPLICATION": "Application",
+    "APPSECRET": "App Secret",
+    "ARGS": "Arguments",
+    "ATTACHMENT_NAME": "Attachment Name",
+    "ATTACHMENT_PATH": "Attachment Path",
+    "ATTACHMENT_TYPE": "Attachment Type",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Heli kodeerimine",
     "AWSLEX": "Amazon Lex",
-    "AWS_ACCESS_KEY_ID": "Pääsuvõtme ID",
-    "AWS_BOT_NAME": "Boti nimi",
-    "AWS_LEX_REGION": "Piirkond",
-    "AWS_POLLY_REGION": "Piirkond",
-    "AWS_POLLY_VOICE": "Hääl",
-    "AWS_SECRET_ACCESS_KEY": "Salajane Pääsuvõti",
-    "AWS_TEXT_TYPE": "Teksti tüüp",
-    "BACK": "Tagasi",
+    "AWSPOLLY": "AWS Polly",
+    "AWS_ACCESS_KEY_ID": "Access Key ID",
+    "AWS_BOT_NAME": "Bot name",
+    "AWS_LEX_REGION": "Region",
+    "AWS_POLLY_REGION": "Region",
+    "AWS_POLLY_VOICE": "Voice",
+    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
+    "AWS_TEXT_TYPE": "Text type",
+    "BACK": "Back",
     "BCC": "BCC",
-    "BEEP": "Piiks",
+    "BEEP": "Beep",
     "BODY": "Keha",
-    "CALLBACK": "Tagasihelistamine",
-    "CALLBACK_PRIORITY": "Prioriteet",
+    "CALLBACK": "Callback",
+    "CALLBACK_PRIORITY": "Priority",
     "CALLYSQUARE": "Cally Square",
-    "CC": "Koop",
-    "CHOOSE_ATTACHMENT": "Vali Manus",
-    "CLOSE": "Sule",
-    "COMMAND": "Käsk",
+    "CC": "CC",
+    "CHOOSE_ATTACHMENT": "Choose Attachment",
+    "CLOSE": "Close",
+    "COMMAND": "Command",
     "COMPUTEDVARIABLES": "Arvutatud muutujate skripti tee",
-    "CONDITION": "Tingimus",
-    "CONTEXT": "Kontekst",
-    "COPY": "Koopia",
-    "COPY_PROJECT": "Kopeeri Projekt",
-    "CREATED_AT": "Loomisaeg",
+    "CONDITION": "Condition",
+    "CONTEXT": "Context",
+    "COPY": "Copy",
+    "COPY_PROJECT": "Copy Project",
+    "CREATED_AT": "Created At",
     "CUSTOM_ACTION": "Kohandatud toiming",
     "CUSTOM_ACTION_DATA": "Kohandatud toimingu andmed",
-    "CUSTOM_APP": "Kohandatud Rakendus",
-    "DATABASE": "Andmebaas",
-    "DELAY": "viivitus [min]",
-    "DELETE": "Kustuta",
-    "DELETE_ODBC": "Kustuta ODBC",
-    "DELETE_PROJECT": "Kustuta Projekt",
-    "DELETE_SQUARERECORDING": "Kustuta Ruutformaadis Salvestus",
-    "DESCRIPTION": "Kirjeldus",
-    "DIAL": "Helista",
-    "DIALOGFLOW": "Dialoogivoog",
-    "DIALOGFLOW_LANGUAGE": "Keel",
-    "DIGIT": "Maks. Numbrimärke",
-    "DIGITS": "Number",
-    "DOWNLOAD_SQUARERECORDING": "Laadi alla Ruutformaadis Salvestus",
-    "DROP_TO_UPLOAD": "ÜLESLAADIMISEKS KUKUTA",
-    "DROP_TO_UPLOAD_MESSAGE": "Üleslaadimiseks saad failid samuti siia kukutada. Ainult XML - Maks. 5MB",
+    "CUSTOM_APP": "Custom Application",
+    "DATABASE": "Database",
+    "DELAY": "delay [min]",
+    "DELETE": "Delete",
+    "DELETE_ODBC": "Delete ODBC",
+    "DELETE_PROJECT": "Delete Project",
+    "DELETE_SQUARERECORDING": "Delete Square Recording",
+    "DESCRIPTION": "Description",
+    "DIAL": "Dial",
+    "DIALOGFLOW": "Dialogflow",
+    "DIALOGFLOW_LANGUAGE": "Language",
+    "DIGIT": "Max Digits",
+    "DIGITS": "Digits",
+    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
+    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
+    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
     "DSN": "DSN",
-    "EDIT": "Redigeeri",
-    "EDIT_ODBC": "Redigeeri ODBC",
-    "EDIT_PROJECT": "Redigeeri Projekti",
-    "EDIT_SQUARERECORDING": "Redigeeri Ruutformaadis Salvestust",
-    "EDIT_XML": "Redigeeri XMLi",
-    "END": "Lõpeta",
+    "EDIT": "Edit",
+    "EDIT_ODBC": "Edit ODBC",
+    "EDIT_PROJECT": "Edit Project",
+    "EDIT_SQUARERECORDING": "Edit Square Recording",
+    "EDIT_XML": "Edit XML",
+    "END": "End",
     "ERRORS": {
-      "DSN_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "DSN_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
       "URL_REQUIRED": "Kohustuslik väli"
     },
-
-    "ESCAPE_DIGITS": "Väldi numbrimärke",
+    "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Exten",
-    "EXTENSION": "Laiendus",
-    "EXT_DIAL": "Väline Helistamine",
-    "FILE": "Faili nimi",
-    "FILENAME": "Faili nimi",
+    "EXTENSION": "Extension",
+    "EXT_DIAL": "External Dial",
+    "FILE": "Filename",
+    "FILENAME": "Filename",
     "FILE_ID": "Audio",
     "FINALLY": "Finally",
-    "FINDBY": "Otsitav",
-    "GETDIGITS": "Hangi Numbrimärgid",
-    "GETSECRETDIGITS": "Hangi Salanumbrid",
-    "GOAL": "Eesmärk",
-    "GOALNAME": "Eesmärgi Nimi",
+    "FINDBY": "Find By",
+    "GETDIGITS": "Get Digits",
+    "GETSECRETDIGITS": "Get Secret Digits",
+    "GOAL": "Goal",
+    "GOALNAME": "Goal Name",
     "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Keel",
+    "GOOGLE_ASR_LANGUAGE": "Language",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Teksti tüüp",
-    "GOOGLE_TTS_LANGUAGE": "Keel",
+    "GOOGLE_TTS_LANGUAGE": "Language",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Mine projektide juurde",
-    "GRAMMAR": "Grammatika",
-    "HANGUP": "Lõpeta kõne",
+    "GO_TO_PROJECTS": "Go to projects",
+    "GRAMMAR": "Grammar",
+    "HANGUP": "Hangup",
     "HEADERS": "Päised",
     "HELP": {
-      "BCC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Näidis: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "Toetatavate tähemärkide maksimaalne arv on 200",
-      "TO": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Peidetud Numbrimärkide Arv",
-    "HIDDENDIGITSPOS": "Peidetud Numbrimärkide Asukoht",
-    "ID": "ID",
-    "IMPORT": "Impordi",
-    "IMPORT_XML": "Impordi XML",
-    "INTERVAL_ID": "Intervall",
-    "INTKEY": "Katkestusklahv",
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "hidden Digits Position",
+    "ID": "Id",
+    "IMPORT": "Import",
+    "IMPORT_XML": "Import XML",
+    "INTERVAL_ID": "Interval",
+    "INTKEY": "Interrupt Key",
     "ISPEECHASR": "iSpeech ASR",
     "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Keel",
-    "ISPEECH_TTS_LANGUAGE": "Keel",
-    "KEY": "Võti",
-    "LABEL": "Sedel",
+    "ISPEECH_ASR_LANGUAGE": "Language",
+    "ISPEECH_TTS_LANGUAGE": "Language",
+    "KEY": "Key",
+    "LABEL": "Label",
     "LANGUAGECODE": "Keelekood",
-    "LASTNAME": "Perekonnanimi",
-    "LIST_ID": "Loend",
-    "LOGIN": "Logi sissse",
-    "LOGOUT": "Logi välja",
+    "LASTNAME": "Last Name",
+    "LIST_ID": "List",
+    "LOGIN": "Login",
+    "LOGOUT": "Logout",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Makro",
-    "MAILBOX": "Postkast",
-    "MATH": "Matemaatika",
-    "MAXDIGIT": "Maks. numbrimärke",
-    "MENU": "Manüü",
+    "MACRO": "Macro",
+    "MAILBOX": "Mailbox",
+    "MATH": "Math",
+    "MAXDIGIT": "Maximum Digits",
+    "MENU": "Menu",
     "METHOD": "Meetod",
-    "MINDIGIT": "Min. numbrimärke",
-    "MODEL": "Mudel",
+    "MINDIGIT": "Minimum Digits",
+    "MODEL": "Model",
     "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSynth",
-    "NAME": "Nimi",
+    "MRCPSYNTH": "MRCPSünth",
+    "NAME": "Name",
     "NDAACTIVITY_TYPE": "Tegevuse tüüp",
     "NDAGENERATE_AUDIO": "Loo helifail",
-    "NDASSISTANT_URL": "NDASSISTANTi URL",
+    "NDASSISTANT_URL": "NDASSISTANT URL",
     "NDAUTH_URL": "NDAUTHi URL",
-    "NEW": "Uus",
-    "NEW_ODBC": "Uus ODBC ühendus",
-    "NEW_PROJECT": "Uus Projekt",
-    "NEW_VARIABLE": "Uus Muutuja",
+    "NEW": "New",
+    "NEW_ODBC": "New ODBC connection",
+    "NEW_PROJECT": "New Project",
+    "NEW_VARIABLE": "New Variable",
     "NOOP": "NoOp",
-    "NOTES": "Märkmed",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NOTES": "Notes",
+    "NO_AVAILABLE_INFO": "No available info",
     "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Ühendus",
+    "ODBC_ID": "ODBC Connection",
     "OF": "of",
-    "OPEN": "Ava",
-    "OPEN_NEW_WINDOW": "Ava uues aknas",
-    "OPEN_PROJECT": "Ava Projekt",
-    "OPERATION": "Toiming",
-    "OPTIONS": "Suvandid",
-    "OPTS": "Suvandid",
-    "OUTPUT": "Väljund",
-    "PAGE": "Lehekülg",
+    "OPEN": "Open",
+    "OPEN_NEW_WINDOW": "Open in a new window",
+    "OPEN_PROJECT": "Open Project",
+    "OPERATION": "Operation",
+    "OPTIONS": "Options",
+    "OPTS": "Options",
+    "OUTPUT": "Output",
+    "PAGE": "Page",
     "PASSWORD": "Parool",
-    "PAUSE": "Paus",
-    "PAUSE_ID": "Pausi tüüp",
-    "PERMISSIONADD_PROJECTS": "Lisa Kasutajad projekti",
-    "PHONE": "Telefon",
-    "PLAYBACK": "Taasesita",
-    "POSITION": "Positsioon",
-    "PRIORITY": "Prioriteet",
-    "PROJECT": "Projekt",
-    "PROJECTS": "Projektid",
-    "PROJECT_ID": "Projekt",
-    "QUERY": "Päring",
-    "QUEUE": "Järjekord",
-    "QUEUE_ID": "Järjekord",
+    "PAUSE": "Pause",
+    "PAUSE_ID": "Pause type",
+    "PERMISSIONADD_PROJECTS": "Add Users to Project",
+    "PHONE": "Phone",
+    "PLAYBACK": "Playback",
+    "POSITION": "Position",
+    "PRIORITY": "Priority",
+    "PROJECT": "Project",
+    "PROJECTS": "Projects",
+    "PROJECT_ID": "Project",
+    "QUERY": "Query",
+    "QUEUE": "Queue",
+    "QUEUE_ID": "Queue",
     "RAWBODY": "Keha",
     "RAWHEADERS": "Päised",
-    "RECORD": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestuse formaat",
-    "RESPONSE": "Reaktsiooniaja Aegumine",
+    "RECORD": "Record",
+    "RECORDINGFORMAT": "Recording Format",
+    "RESPONSE": "Response Timeout",
     "RESTAPI": "Puhkuse API",
-    "RETRY": "Korduskatsed",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
-    "SAVE": "Salvesta",
-    "SAYDIGITS": "Ütle Numbrimärgid",
-    "SAYNUMBER": "Ütle Number",
-    "SAYPHONETIC": "Ütle Häälikud",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "SELECTED": "Valitud",
-    "SELECTED_USERS": "Valitud Kasutajad",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "SENDFAX": "Saada Faks",
-    "SENDMAIL": "Saada E-kiri",
-    "SENDSMS": "Saada Sõnum",
+    "RETRY": "Retries",
+    "ROWSPERPAGE": "Rows per page",
+    "SAVE": "Save",
+    "SAYDIGITS": "Say Digits",
+    "SAYNUMBER": "Say number",
+    "SAYPHONETIC": "Say Phonetics",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECTED_USERS": "Selected Users",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "SENDFAX": "Send Fax",
+    "SENDMAIL": "Send Email",
+    "SENDSMS": "Send SMS",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Hulk",
+    "SET": "Set",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Konto",
-    "SMS_TEXT": "Tekst",
-    "SPEED": "Kiirus",
-    "SQUARERECORDINGS": "Salvestused",
+    "SMS_ACCOUNT_ID": "Account",
+    "SMS_TEXT": "Text",
+    "SPEED": "Speed",
+    "SQUARERECORDINGS": "Recordings",
     "SSMLGENDER": "Sugu",
     "START": "Start",
-    "SUBJECT": "Subjekt",
-    "SUBPROJECT": "Alamprojekt",
-    "SYSTEM": "Süsteem",
-    "TELEPHONES": "Telefonid",
-    "TEMPLATE_ID": "Mall",
+    "SUBJECT": "Subject",
+    "SUBPROJECT": "Sub Project",
+    "SYSTEM": "System",
+    "TELEPHONES": "Telephones",
+    "TEMPLATE_ID": "Template",
     "TEST_ODBC": "Test ODBC",
-    "TEXT": "Tekst",
+    "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Aegumine",
-    "TO": "Kellele",
-    "TRUNK_NAME": "Magistraal",
+    "TIMEOUT": "Timeout",
+    "TO": "To",
+    "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unikaalne ID",
-    "UNPAUSE": "Lõpeta Paus",
-    "UPDATE_DESCRIPTION": "Uuenda Kirjeldust",
-    "UPDATE_INFO": "Uuenda Infot",
+    "UNIQUEID": "Unique ID",
+    "UNPAUSE": "End Pause",
+    "UPDATE_DESCRIPTION": "Update Description",
+    "UPDATE_INFO": "Update Info",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Kasutajanimi",
-    "USERS": "Kasutajad",
-    "VARIABLE_ID": "Muutuja",
-    "VARIABLE_VALUE": "Väärtus",
-    "VOICEMAIL": "Kõnepost",
-    "VSWITCH": "Muutuja Vahetus",
+    "USERS": "Users",
+    "VARIABLE_ID": "Variable",
+    "VARIABLE_VALUE": "Value",
+    "VOICEMAIL": "Voicemail",
+    "VSWITCH": "Variable Switch",
     "CLIENT_EMAIL": "Kliendi e-post",
-    "DIALOGFLOWV2": "Dialoogivoog V2",
+    "DIALOGFLOWV2": "DialoogivoogV2",
     "DIALOGFLOWV2_LANGUAGE": "Keel",
     "DIALOGFLOWV2_PROJECT_ID": "Projekti ID",
     "PRIVATE_KEY": "Privaatne võti",
index 5dc84d3..2f3b48e 100644 (file)
 {
   "CHAT": {
-    "EDIT_AMAZONLEX": "Redigeeri Amazon Lexi",
+    "EDIT_AMAZONLEX": "Edit Amazon Lex",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Pääsuvõtme ID",
-    "SECRETACCESSKEY": "Salajane Pääsuvõti",
-    "LEXREGION": "Piirkond",
-    "BOTNAME": "Boti Nimi",
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "ENABLECUSTOMERCHECKMARKS": "Luba kliendi edastatud/loetud teated",
-    "TRANSFER": "Edasta",
-    "QUEUETRANSFER": "Ooteaja Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Ooteaja Edastamise lõpp",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise lõpp",
-    "SYSTEMAVATAR": "Süsteemi Avatar",
-    "SYSTEMALIAS": "Süsteemi Alias",
-    "WELCOMEMESSAGE": "Tervitussõnum",
-    "LANGUAGE": "Keel",
-    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoogu",
-    "DIALOGFLOW": "Dialoogivoog",
-    "BACKGROUNDCOLOR": "Taustavärv",
-    "MESSAGEFONTSIZE": "Sõnumi Fondi Suurus",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "CUSTOMERALIAS": "Kliendi Alias",
-    "SNIPPETSWIPEOUT": "Väljavõtte nipsamine",
-    "CUSTOMERAVATAR": "Kleindi Avatar",
-    "SHOWCUSTOMERAVATAR": "Näita kliendi avatari",
-    "DEFAULTTITLE": "Vaiketiitel",
-    "MESSAGESALIGNMENT": "Sõnumite Joondus",
-    "ALTERNATE": "Alternatiiv",
-    "CENTERED": "Keskele",
-    "POSITION": "Paigutus",
-    "VERTICALPOSITION": "Vertikaalne Paigutus",
-    "ALIGNMENT": "Joondus",
-    "VERTICALALIGNMENT": "Vertikaalne Joondus",
-    "BOTTOM_RIGHT": "All paremal",
-    "RIGHT": "Paremal",
-    "LEFT": "Vasakul",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "AGENTIDENTIFIER": "Identifikaator",
-    "WEBSITEALIAS": "Veebileehe alias",
-    "AGENTALIAS": "Agendi Alias",
-    "AGENTFULLNAME": "Agendi Täisnimi",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "HIDEWHENOFFLINE": "Peida",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "TEXTCOLOR": "Teksti Värv",
-    "FONTSIZE": "Fondi Suurus",
-    "WEBSCRIPT": "Veebi skript",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "CHATCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole Saadaval",
-    "NEW_CHATCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_CHATCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CHATCANNEDANSWER": "Redigeeri",
-    "DELETE_CHATCANNEDANSWER": "Kustuta",
-    "OFFLINEMESSAGESUBJECT": "Sõnumi teema",
-    "OFFLINEMESSAGEBODY": "Sõnumi sisu",
-    "FORMSUBMITSUCCESSMESSAGE": "Vormi edastamise õnnestumisteade",
-    "FORMSUBMITFAILUREMESSAGE": "Vormi edastamise ebaõnnestumisteade",
-    "PLACEHOLDERMESSAGE": "Sõnumi kohatäide",
-    "NOTETITLE": "Märkme pealkiri",
-    "CLOSINGQUESTION": "Lõpetav küsimus",
-    "TAGS": "Sildid",
-    "SHOWAGENTAVATAR": "Näita isiklikku agendi avatari",
-    "AGENTAVATAR": "Agendi Avatar",
-    "SPYINTERACTION": "Spioon",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "GOTOREALTIME_CHATQUEUE": "Mine Reaalajavestluse Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "AGENTSADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
-    "QUEUES": "Järjekorrad",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "WRITING": "Ootel",
-    "CHAT": "Vestlus",
-    "MAIL": "E-kiri",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Avatud kanal",
-    "FAX": "Faks",
-    "PAUSE": "Ootele",
-    "REALTIME": "Reaalaeg",
-    "AGENTS": "Agendid",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Olek",
-    "LOGOUT": "Logi välja",
-    "UNPAUSE": "Lõpeta Paus",
-    "AGENTADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "AUTOREPLY": "Automaatvastus",
-    "NEW_CHATDISPOSITION": "Uue Vestluse Kasutaminene",
-    "ENABLECUSTOMERATTACHMENT": "Luba Kliendi Manused",
-    "OFFLINE_CHAT_BUTTON": "'Võrguühenduseta Vestluse' Nupp",
-    "OFFLINESTATUS": "Võrgust väljas staatus",
-    "NAME": "Nimi",
-    "CHATQUEUES": "Vestluse Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
-    "AGENT_TIMEOUT": "Agendi Ajalõpp",
-    "DESCRIPTION": "Kirjeldus",
-    "KEY": "Võti",
+    "ACCESSKEYID": "Access Key ID",
+    "SECRETACCESSKEY": "Secret Access Key",
+    "LEXREGION": "Region",
+    "BOTNAME": "Bot Name",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "SYSTEMAVATAR": "System Avatar",
+    "SYSTEMALIAS": "System Alias",
+    "WELCOMEMESSAGE": "Welcome Message",
+    "LANGUAGE": "Language",
+    "EDIT_DIALOGFLOW": "Edit Dialogflow",
+    "DIALOGFLOW": "Dialogflow",
+    "BACKGROUNDCOLOR": "Background Color",
+    "MESSAGEFONTSIZE": "Message Font Size",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "CUSTOMERALIAS": "Customer Alias",
+    "SNIPPETSWIPEOUT": "Snippet swipe out",
+    "CUSTOMERAVATAR": "Customer Avatar",
+    "SHOWCUSTOMERAVATAR": "Show customer avatar",
+    "DEFAULTTITLE": "Default Title",
+    "MESSAGESALIGNMENT": "Messages Alignment",
+    "ALTERNATE": "Alternate",
+    "CENTERED": "Centered",
+    "POSITION": "Position",
+    "VERTICALPOSITION": "Vertical position",
+    "ALIGNMENT": "Alignment",
+    "VERTICALALIGNMENT": "Vertical alignment",
+    "BOTTOM_RIGHT": "Bottom right",
+    "RIGHT": "Right",
+    "LEFT": "Left",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "AGENTIDENTIFIER": "Identifier",
+    "WEBSITEALIAS": "Website Alias",
+    "AGENTALIAS": "Agent Alias",
+    "AGENTFULLNAME": "Agent Fullname",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "HIDEWHENOFFLINE": "Hide",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "TEXTCOLOR": "Text Color",
+    "FONTSIZE": "Font Size",
+    "WEBSCRIPT": "Web Script",
+    "CANNEDANSWERS": "Canned Answers",
+    "CHATCANNEDANSWERS": "Canned Answers",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_CHATCANNEDANSWER": "New Canned Answer",
+    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit",
+    "DELETE_CHATCANNEDANSWER": "Delete",
+    "OFFLINEMESSAGESUBJECT": "Message subject",
+    "OFFLINEMESSAGEBODY": "Message body",
+    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
+    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
+    "PLACEHOLDERMESSAGE": "Message placeholder",
+    "NOTETITLE": "Note's title",
+    "CLOSINGQUESTION": "Closing question",
+    "TAGS": "Tags",
+    "SHOWAGENTAVATAR": "Show personal agent avatar",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "WRITING": "Writing",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Openchannel",
+    "FAX": "Fax",
+    "PAUSE": "Pause",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "UNPAUSE": "End Pause",
+    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NEW_CHATDISPOSITION": "New Chat Disposition",
+    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
+    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
+    "OFFLINESTATUS": "Offline Status",
+    "NAME": "Name",
+    "CHATQUEUES": "Chat Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "KEY": "Key",
     "ALIAS": "Alias",
-    "VARIABLE": "Muutuja",
-    "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "TIMEZONE": "Ajavöönd",
-    "MESSAGE": "Sõnum",
-    "ADVANCED": "Täpsem",
-    "FORWARDTRANSCRIPT": "Edasta Transkriptsioon",
-    "FORWARDTRANSCRIPTMESSAGE": "Edasta Transkriptsiooni Teade",
-    "SKIPMESSAGEBUTTON": "Eira Sõnumi Nuppu",
-    "EDIT_MESSAGE": "Redigeeri Sõnumit",
-    "CONDITION_AGREEMENT": "Tingimusleping",
-    "NONE": "Pole",
-    "PRIORITY": "Prioriteet",
-    "ONLINESTATUS": "Võrgusolek",
-    "UNMANAGEDSTATUS": "Haldamata Olek",
-    "AUTOCLOSE": "Luba Automaatne Sulgemine",
-    "ENABLEUNMANAGEDNOTE": "Luba Haldamata Sõnum",
-    "UNMANAGEDMESSAGE": "Sõnum",
-    "SKIPUNMANAGED": "Jäta vahele Sõnum",
-    "SENDUNMANAGED": "Saada Sõnum",
-    "WEBSITESCRIPT": "Veebilehe Skript",
-    "DELETE_OFFLINEMESSAGE": "Kustuta",
-    "OFFLINEMESSAGES": "Võrguühenduseta Sõnumid",
-    "FORWARD_OFFLINE": "Saada edasi Võrguühenduseta",
-    "SHOW_OFFLINEMESSAGE": "Näita",
-    "FORWARD_OFFLINE_ADDRESS": "Saada edasi Võrguühenduseta Aadress",
-    "CLOSINGFORM": "Sulgemise Vorm",
-    "ENABLERATING": "Luba Hindamine",
-    "ENABLECUSTOMERWRITING": "Luba kliendil kirjutamine enne agendi aktsepteerimist",
-    "ENABLEFEEDBACK": "Luba Tagasiside",
-    "RATINGTYPE": "Hinnangu Tüüp",
-    "CLOSINGMESSAGE": "Sulgemise Vorm",
-    "CLOSINGMESSAGEBUTTON": "Sulgemise Sõnumi Nupp",
-    "RATINGSTARSNUMBER": "Hinnangu Tähtede Arv",
-    "EDIT_GOTOIF": "Redigeeri GotoIfi",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
+    "VARIABLE": "Variable",
+    "INTERVAL": "Interval",
+    "EDIT_CLOSE": "Edit Close",
+    "TIMEZONE": "Timezone",
+    "MESSAGE": "Message",
+    "ADVANCED": "Advanced",
+    "FORWARDTRANSCRIPT": "Forward Transcript",
+    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
+    "SKIPMESSAGEBUTTON": "Skip Message Button",
+    "EDIT_MESSAGE": "Edit Message",
+    "CONDITION_AGREEMENT": "Condition Agreement",
+    "NONE": "None",
+    "PRIORITY": "Priority",
+    "ONLINESTATUS": "Online Status",
+    "UNMANAGEDSTATUS": "Unmanaged Status",
+    "AUTOCLOSE": "Enable Autoclose",
+    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
+    "UNMANAGEDMESSAGE": "Message",
+    "SKIPUNMANAGED": "Skip Message",
+    "SENDUNMANAGED": "Send Message",
+    "WEBSITESCRIPT": "Website Script",
+    "DELETE_OFFLINEMESSAGE": "Delete",
+    "OFFLINEMESSAGES": "Offline Messages",
+    "FORWARD_OFFLINE": "Forward Offline",
+    "SHOW_OFFLINEMESSAGE": "Show",
+    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
+    "CLOSINGFORM": "Closing Form",
+    "ENABLERATING": "Enable Rating",
+    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
+    "ENABLEFEEDBACK": "Enable Feedback",
+    "RATINGTYPE": "Rating Type",
+    "CLOSINGMESSAGE": "Closing Message",
+    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
+    "RATINGSTARSNUMBER": "Rating Stars Number",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Kohustuslik Väli",
-      "SECRETACCESSKEY_REQUIRED": "Kohustuslik Väli",
-      "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "CUSTOMERALIAS_REQUIRED": "Kohustuslik väli",
-      "AGENTALIAS_REQUIRED": "Kohustuslik väli",
-      "SYSTEMALIAS_REQUIRED": "Kohustuslik väli",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MESSAGEFONTSIZE_REQUIRED": "Kohustuslik väli",
-      "TAG_REQUIRED": "Kohustuslik väli",
-      "VERTICALPOSITION_REQUIRED": "Kohustuslik väli",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik väli",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONTSIZE_REQUIRED": "Kohustuslik väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema {{max}}",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "CUSTOMERALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "NOTETITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "TEXT_REQUIRED": "Kohustuslik väli",
-      "SENDUNMANAGED_REQUIRED": "Kohustuslik väli",
-      "SENDUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "BOTNAME_REQUIRED": "Mandatory Field",
+      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
+      "ACCESSKEYID_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
+      "AGENTALIAS_REQUIRED": "Mandatory Field",
+      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
       "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Vale formaat",
-      "ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "ADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "WAITINGMESSAGE_REQUIRED": "Kohustuslik väli",
-      "WAITINGTITLE_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "WAITINGMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "EMAIL_MUST_BE_VALID": "Wrong format",
+      "ADDRESS_REQUIRED": "Mandatory Field",
+      "ADDRESS_MUST_VALID_URL": "Wrong format",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Mandatory Field",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
+      "WAITINGTITLE_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "VIDAOOAPIKEY_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli",
       "EMAIL_ACCOUNT_REQUIRED": "Kohustuslik väli"
     },
-    "CM_FIELD": "Kontakteeru Esindajaga väli",
-    "CHATPROACTIVEACTIONS": "Ennetavad Tegevused",
-    "NEW_CHATPROACTIVEACTION": "Uus Ennetav Tegevus",
-    "EDIT_CHATPROACTIVEACTION": "Redigeeri Ennetavat Tegevust",
-    "DELETE_CHATPROACTIVEACTION": "Kustuta Ennetav Tegevus",
-    "ADD_CHATPROACTIVEACTION": "Lisa Ennetav Tegevus",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Ennetavaid Tegevusi pole Saadaval",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "Võrguväliseid Sõnumeid pole Saadaval",
-    "MOUSEOVER": "Kursor Peal",
-    "TIMEOUT": "Aegumine",
-    "TYPE": "Tüüp",
-    "SELECTOR": "Selektor",
+    "CM_FIELD": "Contact Manager Field",
+    "CHATPROACTIVEACTIONS": "Proactive Actions",
+    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
+    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
+    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
+    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
+    "MOUSEOVER": "Mouse Over",
+    "TIMEOUT": "Timeout",
+    "TYPE": "Type",
+    "SELECTOR": "Selector",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord Queue",
-    "BUILDER": "Koostur",
-    "PREVIEW": "Eelvaade",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_GOTOIf": "Redigeeri GotoIf",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "ADD_CHATQUEUE": "Lisa Vestluse Järjekord",
-    "EDIT_CHATQUEUE": "Redigeeri Vestluse Järjekorda",
-    "DELETE_CHATQUEUE": "Kustuta Vestluse Järjekord",
-    "SETTINGS": "Sätted",
-    "SAVE": "Salvesta",
-    "SCRIPT": "Skript",
-    "TOKEN": "Luba",
-    "CREATED_AT": "Loodud",
-    "CHATWEBSITES": "Vestluse Veebisaidid",
-    "MOTIONADDRESS": "Veebisaididomeen",
-    "MOTIONPROXY": "Puhvri või Liikumise domeen",
-    "ADD_CHATWEBSITE": "Lisa Vestluse Veebisait",
-    "EDIT_CHATWEBSITE": "Redigeeri Vestluse Veebisaiti",
-    "DELETE_CHATWEBSITE": "Kustuta Vestluse Veebisait",
-    "LIST": "Loend",
-    "SNIPPET": "Lõigend",
-    "FORMS": "Vormid",
-    "UP": "Üles",
-    "DOWN": "Alla",
-    "COLLAPSE": "Ahenda",
-    "PROACTIVEACTIONS": "Ennetavad Tegevused",
-    "DISPOSITIONS": "kasutaminesed",
-    "WEBHOOKS": "Veebihaagid",
-    "ACTIONS": "Tegevused",
-    "FIDELITY": "Kvaliteet",
-    "APPEARANCE": "Välimus",
-    "MAINCOLOR": "Põhivärv",
-    "FOCUSCOLOR": "Fookuse Värv",
-    "BUTTONCOLOR": "Nupu Värv",
-    "HEADERSHAPE": "Päise Kujund",
-    "ANIMATION": "Animatsioon",
-    "DEFAULT": "Vaikimisi",
-    "WHITELABEL": "Valge sedel",
+    "QUEUE": "Queue",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_GOTOIf": "Edit GotoIf",
+    "EDIT_NOOP": "Edit Noop",
+    "ADD_CHATQUEUE": "Add Chat Queue",
+    "EDIT_CHATQUEUE": "Edit Chat Queue",
+    "DELETE_CHATQUEUE": "Delete Chat Queue",
+    "SETTINGS": "Settings",
+    "SAVE": "Save",
+    "SCRIPT": "Script",
+    "TOKEN": "Token",
+    "CREATED_AT": "Created At",
+    "CHATWEBSITES": "Chat Websites",
+    "MOTIONADDRESS": "Website Domain",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "ADD_CHATWEBSITE": "Add Chat Website",
+    "EDIT_CHATWEBSITE": "Edit Chat Website",
+    "DELETE_CHATWEBSITE": "Delete Chat Website",
+    "LIST": "List",
+    "SNIPPET": "Snippet",
+    "FORMS": "Forms",
+    "UP": "Up",
+    "DOWN": "Down",
+    "COLLAPSE": "Collapse",
+    "PROACTIVEACTIONS": "Proactive Actions",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "FIDELITY": "Fidelity",
+    "APPEARANCE": "Appearance",
+    "MAINCOLOR": "Main Color",
+    "FOCUSCOLOR": "Focus Color",
+    "BUTTONCOLOR": "Button Color",
+    "HEADERSHAPE": "Header Shape",
+    "ANIMATION": "Animation",
+    "DEFAULT": "Default",
+    "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Laadi alla Transkriptsioon",
-    "ENQUIRY_ENABLE": "Päringu Lubamine",
-    "ENQUIRY_FORWARDING": "Päringu Edastamine",
-    "ENQUIRY_FORWARDING_ADDRESS": "Päringu Edastamise Aadress",
-    "LABELS": "Sildid",
-    "HEADER_ONLINE": "Võrguühendusega Päis",
-    "ONLINE_MESSAGE": "Võrguühendusega Sõnum",
-    "NAME_TITLE": "Nime Sisendi Sedel",
-    "USERNAME_PLACEHOLDER": "Kasutajanime Sisendi Kohatäide",
-    "EMAIL_TITLE": "E-kirja Sisendi Sedel",
-    "EMAIL_PLACEHOLDER": "E-kirja Sisendi Kohatäide",
-    "START_CHAT_BUTTON": "'Alusta Vestlust' Nupp",
-    "AGENTS_BUSY": "Hõivatud Agendi Sõnum",
-    "HEADER_OFFLINE": "Võrguühenduseta Päis",
-    "OFFLINE_MESSAGE": "Võrguühenduseta Sõnum",
-    "MESSAGE_TITLE": "Sõnumi Sedel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Päringu Sõnumi Sisendi Kohatäide",
-    "ENQUIRY_BUTTON": "Päringu Nupu Tekst",
-    "RATING_MESSAGE": "Hinnangu Sõnum",
-    "RATING_SEND": "Hinnangu Saada Nupu Tekst",
-    "RATING_SKIP": "Hinnangu Jäta vahele Nupu Tekst",
-    "ONLINE": "Võrguühendusega",
-    "OFFLINE": "Võrguühenduseta",
-    "PROACTIVE": "Ennetav",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Lükka Tagasi",
-    "REJECTMETHOD": "Lükka Tagasi Meetod",
-    "REJECTURL": "Lükka Tagasi URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "EMBEDDING": "Manustamine",
-    "GENERAL": "Üldine",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "BACK": "Tagasi",
+    "DOWNLOADTRANSCRIPT": "Download Transcript",
+    "ENQUIRY_ENABLE": "Enquiry Enable",
+    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
+    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
+    "LABELS": "Labels",
+    "HEADER_ONLINE": "Online Header",
+    "ONLINE_MESSAGE": "Online Message",
+    "NAME_TITLE": "Name Input Label",
+    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
+    "EMAIL_TITLE": "Email Input Label",
+    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
+    "START_CHAT_BUTTON": "'Start Chat' Button",
+    "AGENTS_BUSY": "Busy Agents Message",
+    "HEADER_OFFLINE": "Offline Header",
+    "OFFLINE_MESSAGE": "Offline Message",
+    "MESSAGE_TITLE": "Message Label",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
+    "ENQUIRY_BUTTON": "Enquiry Button Text",
+    "RATING_MESSAGE": "Rating Message",
+    "RATING_SEND": "Rating Send Button Text",
+    "RATING_SKIP": "Rating Skip Button Text",
+    "ONLINE": "Online",
+    "OFFLINE": "Offline",
+    "PROACTIVE": "Proactive",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "EMBEDDING": "Embedding",
+    "GENERAL": "General",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
     "HELP": {
-      "VERTICALPOSITION": "Tähistab kaugust ülevalt protsentides",
-      "AGENTIDENTIFIER": "Tähistab agendi identifikaatorit vestluse sessiooni piires lõigendis",
-      "HIDEWHENOFFLINE": "Peidab lõigendi võrguühenduseta olekus",
-      "KEY": "Veebisaidi lühinimi (5 tähemärki), mida kuvatakse agendi vahelehel",
-      "TOKEN": "Automaatselt genereeritud luba, mida kasutatakse skriptis",
-      "INTEVAL": "Valitav saadaolevate intervallide loendist",
-      "TIMEZONE": "Vali loendist üks (vaikimisi=kohalik ajavöönd)",
-      "ENABLERATING": "Aktiveeri see, kui soovid, et veebi külastaja saaks suhtlust hinnata lõpus",
-      "ENABLEFEEDBACK": "Aktiveeri see, kui soovid, et veebi külastaja saaks tagasisidet saata (kuni 150 tähemärki) lõpus",
-      "FORWARDTRANSCRIPT": "Aktiveeri see, kui soovid, et veebi külastajale pakutakse vestluse transkriptsiooni saamist e-kirja teel",
-      "AUTOCLOSE": "Aktiveeri see, kui soovid vestluse sessioonide sulgemist haldamata, kui ühtegi agenti pole saadaval. Uuri selle kohta täpsemalt siin: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Aktiveeri see, kui soovid, et külastajale kuvatakse teadet, et kõik agendid on hõivatud ja vestlust ei hallata",
-      "WEBSITEALIAS": "Agendi nime koostamiseks kasutatav eesliide (eesliide+agent ID), mis kuvatakse veebi külastajale vestluse sessiooni jooksul",
-      "ENABLECUSTOMERWRITING": "Aktiveeri see, kui soovid, et vestlus algaks vaba agenti ootamata (pane tähele: kui aktiveerid selle, ei ole sinu vestlused enam kunagi haldamata). Uuri täpsemalt: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "Järgmine liikumise kontakti halduri väli:",
-      "FROMKEY": "Vastendatakse sinu liikumise vestluse lõigendis kui:",
-      "COPYSCRIPTTOCLIPBOARD": "Kopeeri ja kleebi skripti tekst oma veebisaidile",
-      "FORWARD_OFFLINE": "saad lisada mitu aadressi komaga eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
-      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
-      "NAME": "Ainult numbrid, tähed ja kindlad märgid (._) on toetatud",
-      "LIST": "Kontakti halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "INTERVAL": "Vali loendist üks",
-      "WELCOMEMESSAGE": "Jäta tühjaks, kui sa ei soovi saata tervitussõnumit",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud"
+      "VERTICALPOSITION": "Represents the distance in percentage from top",
+      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
+      "HIDEWHENOFFLINE": "Hides snippet when offline",
+      "KEY": "Website short name (5 char) shown on the Agent Tab",
+      "TOKEN": "Automatically generated token used in the Script",
+      "INTEVAL": "To be selected from the list of the available intervals",
+      "TIMEZONE": "Select one from the list (default=local timezone)",
+      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
+      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
+      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
+      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
+      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
+      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "MAPKEY": "The following Motion Contact Manager field:",
+      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
+      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
+      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager list used to associate Contacts",
+      "INTERVAL": "Select one from the list",
+      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud"
     },
-    "ADDRESS": "Aadress",
-    "ONLINESTATE": "Võrguühendusega Olek",
-    "OFFLINESTATE": "Võrguühenduseta Olek",
-    "RATINGSTATE": "Hindamise Staatus",
-    "ENQUIRY": "Päring",
-    "OFFLINETEMPLATE": "Võrguühenduseta Mall",
-    "CHATDISPOSITIONS": "Vestluse Kasutused",
-    "NO_CHATDISPOSITION_AVAILABLE": "Vestluse Kasutamised Pole Saadaval",
-    "ADD_CHATDISPOSITION": "Lisa Vestluse Kasutamine",
-    "DELETE": "Kustuta",
-    "EDIT_CHATDISPOSITION": "Redigeeri Vestluse Kasutamist",
-    "DELETE_CHATDISPOSITION": "Kustuta Vestluse Kasutamine",
-    "ID": "ID",
-    "NEW_CHATQUEUE": "Uus Vestluse Järjekord",
-    "NEW_CHATWEBSITE": "Uus Vestluse Veebisait",
-    "ROUNDED": "Ümargune",
-    "SQUARED": "Ruudukujuline",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "ADDRESS": "Address",
+    "ONLINESTATE": "Online Status",
+    "OFFLINESTATE": "Offline Status",
+    "RATINGSTATE": "Rating State",
+    "ENQUIRY": "Enquiry",
+    "OFFLINETEMPLATE": "Offline Template",
+    "CHATDISPOSITIONS": "Chat Dispositions",
+    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
+    "ADD_CHATDISPOSITION": "Add Chat Disposition",
+    "DELETE": "Delete",
+    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
+    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
+    "ID": "Id",
+    "NEW_CHATQUEUE": "New Chat Queue",
+    "NEW_CHATWEBSITE": "New Chat Website",
+    "ROUNDED": "Rounded",
+    "SQUARED": "Squared",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Alustamise aeg",
-    "STATUS": "Staatus",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "OPEN": "Avatud",
-    "ACCOUNT": "Konto",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "WEBSITE": "Veebisait",
-    "ALL": "Kõik",
-    "SELECT_STATUS": "Vali Staatus",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "WEBSITE": "Website",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
     "FILTER": "Filter",
-    "FILTERS": "Filtrid",
-    "TEAMADD_CHATQUEUE": "Lisa Tiim Vestluse Järjekorda",
-    "AGENTADD_CHATQUEUE": "Lisa agent Vestluse Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CLOSEDAT": "Sulgemise aeg",
-    "DISPOSITION": "Kasutamine",
-    "CREATEDAT": "Loomise aeg",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhlusi pole saadaval",
-    "SELECTED_WEBSITE": "Vali veebisait",
+    "FILTERS": "Filters",
+    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
+    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CREATEDAT": "Created At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECTED_WEBSITE": "Select a website",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "SELECT_WEBSITE": "Vali veebisait",
-    "INFO": "Teave",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Mine Võrguühenduseta Sõnumitesse",
-    "WAITINGTITLE": "Ootamise Pealkiri",
-    "WAITINGMESSAGE": "Ootamise Sõnum",
-    "RATING": "Hindamine",
-    "NO_RATINGVALUE": "Hindamine puudub",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "UNKNOWN": "Tundmatu",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutuses",
-    "VOICE": "Hääl",
-    "INTERACTIONS_CHATWEBSITE": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Uuenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_CHATWEBSITE": "Lisa Agent Vestluse Veebisaidile",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "EDIT_GOTOP": "Edit Gotop",
+    "SELECT_WEBSITE": "Select a website",
+    "INFO": "Info",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
+    "WAITINGTITLE": "Waiting Title",
+    "WAITINGMESSAGE": "Waiting Message",
+    "RATING": "Rating",
+    "NO_RATINGVALUE": "No Rating",
+    "DEFAULT_PAUSE": "Default pause",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "ENABLESENDBUTTON": "Luba nupp Saada",
     "FEEDBACKTITLE": "Tagasiside pealkiri",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api võti",
     "OPEN_NEW_INTERACTION": "Avage uus suhtlus",
     "SUBJECT": "Teema",
     "ADD_NOTE": "Lisada märkus",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
-    "NOTE": "Märkus",
+    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
+    "NOTE": "Märge",
     "VIDAOOMETADATA": "Vidaoo metaandmed",
     "VIDAOONOTE": "Vidaoo märkus",
     "VIDAOOTOPIC": "Vidaoo teema",
     "CHANNELID": "Kanali ID",
-    "EDIT_TVOX": "Muuda TVoxi",
+    "EDIT_TVOX": "Muutke TVoxi",
     "MOTIONTITLE": "Liikumise pealkiri",
     "MOTIONURL": "Liikumise URL",
     "MOTIONURLONANSWER": "Liikumise URL vastuses",
     "SERVICEID": "Teenuse ID",
     "SERVICENAME": "Teenuse nimi",
     "TVOX": "TVox",
-    "TVOXIP": "TVoxi IP-aadress",
+    "TVOXIP": "TVoxi IP -aadress",
     "TVOXLOGINURL": "TVox Logi sisse REST Url",
     "TVOXPASSWD": "TVoxi parool",
     "TVOXSESSIONURL": "TVoxi seansi REST Url",
-    "TVOXURL": "TVoxi IP-aadress",
+    "TVOXURL": "TVoxi IP -aadress",
     "TVOXUSERNAME": "TVoxi kasutajanimi",
     "LABELTEXT": "Sildi tekst",
     "TEXT_BUTTON_COLOR": "Teksti nupu värv"
index 494d629..2592ba3 100644 (file)
 {
   "CONTACTMANAGER": {
-    "SELECT_TAG": "Vali sildid",
-    "CUSTOMER_JOURNEY": "Klienditeekond",
-    "USERID": "Kutsu tagasi Agendi ID",
-    "PRIORITY": "Prioriteet",
-    "MOTIONDIALER": "Liikumise Pull",
-    "IMPORT_CONTACTS": "Impordi Kontaktid",
-    "PREFIX": "Helistamise Eesliide",
-    "VOICEQUEUEID": "Hääljärjekorra ID",
-    "CAMPAIGNID": "Kampaania ID",
-    "STATE": "Olek",
-    "NAME": "Nimi",
-    "LISTS": "Loendid",
-    "UNIQUEID": "Unikaalne ID",
-    "STATUS": "Staatus",
-    "STARTTIME": "Algusaeg",
-    "ENDTIME": "Lõpuaeg",
-    "MOTION_BULL": "Liikumise Pull",
+    "SELECT_TAG": "Select tags",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "USERID": "Recall Agent ID",
+    "PRIORITY": "Priority",
+    "MOTIONDIALER": "Motion Bull",
+    "IMPORT_CONTACTS": "Import Contacts",
+    "PREFIX": "Dial Prefix",
+    "VOICEQUEUEID": "VoiceQueue ID",
+    "CAMPAIGNID": "Campaign ID",
+    "STATE": "State",
+    "NAME": "Name",
+    "LISTS": "Lists",
+    "UNIQUEID": "Unique Id",
+    "STATUS": "Status",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopperi Finaal",
-    "HISTORY": "Hopperi Ajalugu",
-    "SCHEDULEDAT": "Ajastatud",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "EDIT_LIST": "Redigeeri loendit",
-    "EDIT_HOPPER": "Redigeeri Hopperit",
-    "DELETE_LIST": "Kustuta Loend",
-    "DELETE_HOPPER": "Kustuta Hopper",
-    "RELOAD": "Laadi uuesti",
-    "NO_COMPANIES": "Ettevõte puudub",
-    "NO_AVAILABLE_ITEMS": "Üksusi ei ole Saadaval",
-    "ADD": "Lisa",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper History",
+    "SCHEDULEDAT": "Scheduled At",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_LIST": "Edit List",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_LIST": "Delete List",
+    "DELETE_HOPPER": "Delete Hopper",
+    "RELOAD": "Reload",
+    "NO_COMPANIES": "No Company",
+    "NO_AVAILABLE_ITEMS": "No Available Items",
+    "ADD": "Add",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "ALIAS_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "PHONEBAR_API": "Kontrolli, et Liikumisriba töötaks ja kaugjuhtimislüliti agendi jaoks oleks sees",
+      "NAME_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on",
       "ACTIONTYPE_REQUIRED": "Kohustuslik väli",
       "CLICKTOACTION_REQUIRED": "Kohustuslik väli"
     },
-    "DESCRIPTION": "Kirjeldus",
-    "DISPOSITION": "Kasutus",
-    "DISPOSITIONS": "Kasutused",
-    "VOICEDISPOSITIONS": "Hääle Kasutused",
-    "NEW_VOICEDISPOSITION": "Uus Hääle Kasutus",
-    "CUSTOM_FIELDS": "Kohandatud Väljad",
-    "ADD_LIST": "Lisa Loendid",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "COMPANIES": "Ettevõtted",
-    "EDIT_COMPANY": "Redigeeri Ettevõtet",
-    "DELETE_COMPANY": "Kustuta Ettevõtted",
-    "PHONE": "Telefon",
-    "EMAIL": "E-post",
-    "ADD_COMPANY": "Lisa Ettevõte",
-    "CONTACTS": "Kontaktid",
-    "NEW_LIST": "Uus loend",
-    "FIRSTNAME": "Eesnimi",
-    "LASTNAME": "Perekonnanimi",
-    "LIST": "Loend",
-    "COMPANY": "Ettevõte",
-    "ADD_CONTACT": "Lisa Kontakt",
-    "EDIT_CONTACT": "Muuda Kontakti",
-    "MERGE_CONTACT": "Koosta Kontakt",
-    "DUPLICATE_CONTACT": "Dubleeri Kontakti",
-    "DELETE_CONTACT": "Kustuta Kontakt",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "DETAIL": "Üksikasi",
-    "PERSONAL_INFO": "Isiklik teave",
-    "MOBILE": "Mobiil",
-    "FAX": "Faks",
-    "TAGS": "Sildid",
-    "SHOW_ALL_FIELDS": "Näita kõik väljad",
-    "FEWER_FIELDS": "Näita vähem välju",
-    "COUNTRY": "Riik",
-    "CITY": "Linn",
-    "STREET": "Tänav",
-    "POSTALCODE": "Postiindeks",
-    "DELETE": "Kustuta",
-    "DELETE_ALL": "Kustuta Kõik",
-    "CONTACTMANAGER": "Kontaktide Haldur",
-    "ID": "ID",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "CUSTOMFIELDS": "Kohandatud Väljad",
-    "NO_CUSTOMFIELD_AVAILABLE": "Kohandatud Väljad pole saadaval",
-    "ADD_TAG": "Lisa Silt",
-    "NO_TAG": "Sildid Puuduvad",
+    "DESCRIPTION": "Description",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositions",
+    "VOICEDISPOSITIONS": "Voice Dispositions",
+    "NEW_VOICEDISPOSITION": "New Voice Disposition",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "ADD_LIST": "Add List",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "COMPANIES": "Companies",
+    "EDIT_COMPANY": "Edit Company",
+    "DELETE_COMPANY": "Delete Company",
+    "PHONE": "Phone",
+    "EMAIL": "Email",
+    "ADD_COMPANY": "Add Company",
+    "CONTACTS": "Contacts",
+    "NEW_LIST": "New List",
+    "FIRSTNAME": "First Name",
+    "LASTNAME": "Last Name",
+    "LIST": "List",
+    "COMPANY": "Company",
+    "ADD_CONTACT": "Add Contact",
+    "EDIT_CONTACT": "Edit Contact",
+    "MERGE_CONTACT": "Merge Contact",
+    "DUPLICATE_CONTACT": "Duplicate Contact",
+    "DELETE_CONTACT": "Delete Contact",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "DETAIL": "Detail",
+    "PERSONAL_INFO": "Personal Info",
+    "MOBILE": "Mobile",
+    "FAX": "Fax",
+    "TAGS": "Tags",
+    "SHOW_ALL_FIELDS": "Show all fields",
+    "FEWER_FIELDS": "Show less fields",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Street",
+    "POSTALCODE": "Postal Code",
+    "DELETE": "Delete",
+    "DELETE_ALL": "Delete All",
+    "CONTACTMANAGER": "Contacts Manager",
+    "ID": "Id",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "CUSTOMFIELDS": "Custom Fields",
+    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
+    "ADD_TAG": "Add Tag",
+    "NO_TAG": "No Tags",
     "ALIAS": "Alias",
-    "TYPE": "Tüüp",
-    "VALUE": "Väärtus",
-    "ADD_CUSTOMFIELD": "Lisa Kohandatud Väli",
-    "EDIT_CUSTOMFIELD": "Redigeeri Kohandatud Välja",
-    "DELETE_CUSTOMFIELD": "Kustuta Kohandatud Väli",
-    "NEW_COMPANY": "Uus Ettevõte",
-    "NEW_CONTACT": "Uus Kontakt",
-    "NEW_TAG": "Uus Silt",
-    "UPLOAD_CONTACTS": "Laadi üles Kontaktid",
-    "FINISH": "Lõpp",
-    "SUCCESS": "Õnnestus",
-    "FAILURE": "Nurjus",
-    "ALL_CONTACTS": "Kõik Kontaktid",
-    "NEW_CUSTOMFIELD": "Uue Kliendi Väli",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Hääle Kasutused pole saadaval",
-    "ADD_VOICEDISPOSITION": "Lisa Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "VAT": "KM",
-    "COMPANYID": "Ettevõtte ID",
-    "WEBSITE": "Veebisait",
-    "EMAIL_DOMAIN": "E-posti Domeen",
-    "ADDRESS": "Aadress",
-    "POSTAL_CODE": "Postiindeks",
-    "SHIPMENTADDRESS": "Saadetise Aadress",
-    "COPY_CONTACT": "Kopeeri Kontakt",
-    "GOTOCONTACTS_LIST": "Kuva Kontaktid",
-    "GOTOCONTACTS_COMPANY": "Kuba Kontaktid",
-    "ADD_AGENT_TO_LIST": "Lisa Agent Loendisse",
-    "AGENTADD_LIST": "Lisa Agendid Loendisse",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "NONE": "Ühtegi",
-    "FULLNAME": "Täisnimi",
-    "CHECK_DUPLICATES": "Kontrolli Dublikaate",
-    "DUPLICATES": "Dublikaadid",
-    "UPLOAD_CSV": "Laadi üles CSV",
-    "TAG": "Silt",
-    "UPLOAD": "Laadi üles",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "DATE_OF_BIRTH": "Sünnikuupäev",
-    "DATEOFBIRTH": "Sünnikuupäev",
-    "NOTES": "Märkmed",
-    "EXPORTCSVCONTACTS_LIST": "Ekspordi CSVsse",
-    "GOTO_LIST": "Kuva Kontaktid",
-    "GOTO_COMPANY": "Kuva Kontaktid",
-    "REQUIRED": "Nõutud",
-    "GLOBALCUSTOMFIELDS": "Üldised Kohandatud Väljad",
-    "NEW_GLOBALCUSTOMFIELD": "Uued Kohandatud Väljad",
-    "ADD_GLOBALCUSTOMFIELD": "Lisa Kohandatud Väli",
-    "EDIT_GLOBALCUSTOMFIELD": "Redigeeri Kohandatud Välja",
-    "DELETE_GLOBALCUSTOMFIELD": "Kustuta Kohandatud Väli",
+    "TYPE": "Type",
+    "VALUE": "Value",
+    "ADD_CUSTOMFIELD": "Add Custom Field",
+    "EDIT_CUSTOMFIELD": "Edit Custom Field",
+    "DELETE_CUSTOMFIELD": "Delete Custom Field",
+    "NEW_COMPANY": "New Company",
+    "NEW_CONTACT": "New Contact",
+    "NEW_TAG": "New Tag",
+    "UPLOAD_CONTACTS": "Upload Contacts",
+    "FINISH": "Finish",
+    "SUCCESS": "Success",
+    "FAILURE": "Failure",
+    "ALL_CONTACTS": "All Contacts",
+    "NEW_CUSTOMFIELD": "New Custom Field",
+    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
+    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "VAT": "VAT",
+    "COMPANYID": "Company ID",
+    "WEBSITE": "Website",
+    "EMAIL_DOMAIN": "Email Domain",
+    "ADDRESS": "Address",
+    "POSTAL_CODE": "Postal Code",
+    "SHIPMENTADDRESS": "Shipment Address",
+    "COPY_CONTACT": "Copy Contact",
+    "GOTOCONTACTS_LIST": "Show Contacts",
+    "GOTOCONTACTS_COMPANY": "Show Contacts",
+    "ADD_AGENT_TO_LIST": "Add Agent to List",
+    "AGENTADD_LIST": "Add Agents to List",
+    "NO_AVAILABLE_INFO": "No available info",
+    "NONE": "None",
+    "FULLNAME": "Full Name",
+    "CHECK_DUPLICATES": "Check Duplicates",
+    "DUPLICATES": "Duplicates",
+    "UPLOAD_CSV": "Upload CSV",
+    "TAG": "Tag",
+    "UPLOAD": "Upload",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "DATE_OF_BIRTH": "Birthdate",
+    "DATEOFBIRTH": "Birthdate",
+    "NOTES": "Notes",
+    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
+    "GOTO_LIST": "Show Contacts",
+    "GOTO_COMPANY": "Show Contacts",
+    "REQUIRED": "Required",
+    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
+    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
+    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
+    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
+    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
     "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessioonid",
+    "SESSIONS": "Sessions",
     "AGENT": "Agent",
-    "PROJECT": "Projekt",
-    "SELECT_LIST": "Vali loend",
-    "SELECT_COMPANY": "Vali ettevõte",
-    "SELECT_TAGS": "Vali üks või enam silte",
+    "PROJECT": "Project",
+    "SELECT_LIST": "Select a list",
+    "SELECT_COMPANY": "Select a company",
+    "SELECT_TAGS": "Select one or more tags",
     "HELP": {
-      "PHONEBAR_API_MESSAGE": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees",
-      "PHONEBAR_API": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees"
+      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
+      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu leheküljel",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "SOCIAL": "Sotsiaalne",
-    "ROW": "Rida",
-    "EXPORT_ERRORS": "Ekspordi Vead",
-    "UPLOAD_COMPLETED": "Üleslaadimine Lõpetatud",
-    "STOP": "Peata",
-    "SELECT_FILE": "Vali Fail",
+    "SOCIAL": "Social",
+    "ROW": "Row",
+    "EXPORT_ERRORS": "Export Errors",
+    "UPLOAD_COMPLETED": "Upload Completed",
+    "STOP": "Stop",
+    "SELECT_FILE": "Select File",
     "ALL": "Kõik",
     "BILLINGINFORMATION": "Arveldusinfo",
     "COMPANY_FISCAL_TYPE": "Ettevõtte maksutüüp",
     "VATNUMBER_CF": "Codice Fiscale / käibemaks",
     "ACTIONTYPE": "Toimingu tüüp",
     "CLICKTOACTION": "Klõpsake toimimiseks",
+    "ADDITIONAL_PHONES": "Täiendavad telefonid",
+    "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte",
     "DIALTIMEZONE": "Vali ajavöönd",
-    "TIMEZONE": "Vali ajavöönd"
+    "TIMEZONE": "Vali ajavöönd",
+    "MOVE_DOWN": "Liigu alla",
+    "MOVE_UP": "Üles liikuma"
   }
 }
index 34b7937..3169c3f 100644 (file)
       "TRANSFER_AGENT_EXECUTED": "Transfer to agent successfully executed",
       "TRANSFER_QUEUE_EXECUTED": "Transfer to queue successfully executed"
     },
-    "LIMIT_TABS_REACHED": "Maximum number of open tabs reached",
-    "WAITING_CALLS": "Waiting Calls",
-    "WAITING_INTERACTIONS": "Waiting Interactions"
+    "LIMIT_TABS_REACHED": "Maximum number of open tabs reached"
   }
 }
index 739750c..0a5b7eb 100644 (file)
 {
   "DASHBOARDS": {
-    "DOWNLOAD": "Allalaadimine",
-    "UNMANAGED_RATE": "Haldamata Määr",
-    "UNMANAGED_RATE_TEXT": "Suhtluse Haldamata Määr",
-    "VOICE_WAITING": "OOTEL",
-    "VOICE_WAITING_TEXT": "OOTEJÄRJEKORRA KÕNED",
-    "VOICE_TALKING": "RÄÄKIMINE",
-    "VOICE_TALKING_TEXT": "AKTIIVSE JÄRJEKORRA KÕNED",
-    "VOICE_ANSWERED": "VASTATUD",
-    "VOICE_ANSWERED_TEXT": "VASTATUD JÄRJEKORRA KÕNED",
-    "VOICE_ABANDONED": "TAGASILÜKATUD",
-    "VOICE_ABANDONED_TEXT": "TAGASILÜKATUD JÄRJEKORRA KÕNED",
-    "VOICE_TOTAL_OFFERED": "KOKKU PAKUTUD",
-    "VOICE_TOTAL_OFFERED_TEXT": "JÄRJEKORRA KÕNED KOKKU",
-    "TODAY_INTERACTIONS_STATS": "Suhtluse Päeva Statistika",
-    "VOICE_AVG_HOLD_TIME": "KESKMINE OOTEAEG",
-    "VOICE_AVG_HOLD_TIME_TEXT": "JÄRJEKORRA KÕNEDE KESKMINE OOTEAEG",
-    "VOICE_AVG_TALK_TIME": "KESKMINE KÕNEAEG",
-    "VOICE_AVG_TALK_TIME_TEXT": "JÄRJEKORRA KÕNEDE RÄÄKIMISE AEG",
-    "VOICE_ANSWER_RATE": "VASTUSE MÄÄR",
-    "VOICE_ANSWER_RATE_TEXT": "JÄRJEKORRA KÕNEDE VASUSE MÄÄR",
-    "VOICE_ABANDON_RATE": "TAGASILÜKATUD MÄÄR",
-    "VOICE_ABANDON_RATE_TEXT": "JÄRJEKORRA KÕNEDE TAGASILÜKATUD MÄÄR",
-    "VOICE_UNMANAGED": "HALDAMATA",
-    "VOICE_UNMANAGED_TEXT": "HALDAMATA JÄRJEKORRA KÕNED",
-    "OPENED_TEXT": "Avatud Suhtlused",
-    "MANAGED": "Hallatud",
-    "MANAGED_TEXT": "Hallatud Suhtlused",
-    "ABANDONED": "Tagasilükatud",
-    "ABANDONED_TEXT": "Tagasilükatud Suhtlused",
-    "ABANDONED_RATE": "Tagasilükatud Määr",
-    "ABANDONED_RATE_TEXT": "Suhtluste Tagasilükatud Määr",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "TOTAL_OFFERED_TEXT": "Pakutud Suhtlused",
-    "AVG_HOLD_TIME_TEXT": "Suhtluse AVG Ooteaeg",
-    "MANAGED_RATE": "Hallatud Määr",
-    "MANAGED_RATE_TEXT": "Suhtluste Hallatud Määr",
-    "AVG_MANAGED_TIME": "AVG Haldusaeg",
-    "AVG_MANAGED_TIME_TEXT": "Suhtluste AVG Haldusaeg",
-    "NO_DISPOSITION_SET": "Kasutust pole määratud",
-    "AGENTS": "Agendid",
-    "TRANSFER": "Edastus",
-    "NO_DATA_AVAILABLE": "Andmed pole saadaval",
-    "CUSTOMER_JOURNEY": "Kliendi Teekond",
-    "ME": "Mina",
-    "CURRENTLY_IN_USE_BY": "Praegune kasutaja",
-    "NOTAVAILABLE": "Pole saadaval",
-    "CLICKRELOAD": "Uued tagasilükatud kõned! Palun laadi uuesti",
-    "ASSIGNTO": "Määra",
-    "SELECT_CAMPAIGN": "Vali Järjekord",
-    "FREE": "Vaba",
-    "RESERVED": "Reserveeritud",
-    "QUEUECALLEREXITREASON": "Põhjus",
-    "QUEUECALLEREXITAT": "Katkestatud",
-    "LASTASSIGNEDTO": "Viimati määratud",
-    "ABANDONEDQUEUECALLS": "Tagasilükatud Järjekorra Kõned",
-    "ABANDONAT": "Tagasilükatud",
-    "QUEUE": "Järjekord",
-    "SELECT_SUBSTATUS": "Vali Alamstaatus",
-    "READ": "Loetud",
-    "UNREAD": "Lugemata",
-    "SELECT_READ_UNREAD": "vali Loetud/Lugemata",
-    "SELECT_AGENT": "Vali Agent",
-    "MARK_AS_UNREAD": "Märgi kui lugemata",
-    "FILTER_VOICE_QUEUES": "Filtreeri Hääle Järjekorrad",
-    "CHANNEL_WAITING_TEXT": "Ootel Järjekorra Suhtlused",
-    "CHANNEL_QUEUE": "Järjekord",
-    "CHANNEL_FROM": "Alates",
-    "LOADING_INTERACTION": "Laadime suhtlust...",
-    "JANUARY": "Jaanuar",
-    "FEBRUARY": "Veebruar",
-    "MARCH": "Märts",
-    "APRIL": "Aprill",
-    "MAY": "Mai",
-    "JUNE": "Juuni",
-    "JULY": "Juuli",
+    "DOWNLOAD": "Download",
+    "UNMANAGED_RATE": "Unmanaged Rate",
+    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
+    "VOICE_WAITING": "WAITING",
+    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
+    "VOICE_TALKING": "TALKING",
+    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
+    "VOICE_ANSWERED": "ANSWERED",
+    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
+    "VOICE_ABANDONED": "ABANDONED",
+    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
+    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
+    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
+    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
+    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
+    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
+    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
+    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
+    "VOICE_ANSWER_RATE": "ANSWER RATE",
+    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
+    "VOICE_ABANDON_RATE": "ABANDON RATE",
+    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
+    "VOICE_UNMANAGED": "UNMANAGED",
+    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
+    "OPENED_TEXT": "Opened Interactions",
+    "MANAGED": "Managed",
+    "MANAGED_TEXT": "Managed Interactions",
+    "ABANDONED": "Abandoned",
+    "ABANDONED_TEXT": "Abandoned Interactions",
+    "ABANDONED_RATE": "Abandoned Rate",
+    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
+    "TOTAL_OFFERED": "Total Offered",
+    "TOTAL_OFFERED_TEXT": "Offered Interactions",
+    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
+    "MANAGED_RATE": "Managed Rate",
+    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
+    "AVG_MANAGED_TIME": "AVG Management Time",
+    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
+    "NO_DISPOSITION_SET": "No disposition set",
+    "AGENTS": "Agents",
+    "TRANSFER": "Transfer",
+    "NO_DATA_AVAILABLE": "No data available",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "ME": "Me",
+    "CURRENTLY_IN_USE_BY": "Currently in use by",
+    "NOTAVAILABLE": "Not available",
+    "CLICKRELOAD": "New abandoned calls! Reload please",
+    "ASSIGNTO": "Assign to",
+    "SELECT_CAMPAIGN": "Select a Queue",
+    "FREE": "Free",
+    "RESERVED": "Reserved",
+    "QUEUECALLEREXITREASON": "Reason",
+    "QUEUECALLEREXITAT": "Dropped",
+    "LASTASSIGNEDTO": "Last Assigned To",
+    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
+    "ABANDONAT": "Abandoned",
+    "QUEUE": "Queue",
+    "SELECT_SUBSTATUS": "Select Substatus",
+    "READ": "Read",
+    "UNREAD": "Unread",
+    "SELECT_READ_UNREAD": "Select Read/Unread",
+    "SELECT_AGENT": "Select Agent",
+    "MARK_AS_UNREAD": "Mark as unread",
+    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
+    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
+    "CHANNEL_QUEUE": "Queue",
+    "CHANNEL_FROM": "From",
+    "LOADING_INTERACTION": "We are loading the interaction...",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "Oktoober",
+    "OCTOBER": "October",
     "NOVEMBER": "November",
-    "DECEMBER": "Detsember",
-    "MON": "E",
-    "TUE": "T",
-    "WED": "K",
-    "THU": "N",
-    "FRI": "R",
-    "SAT": "L",
-    "SUN": "P",
-    "DELETE": "Kustuta",
-    "LAST_3_DAYS": "Viimased 3 Päeva",
-    "LAST_YEAR": "Viimane Aasta",
-    "THIS_YEAR": "See Aasta",
-    "LAST_MONTH": "Viimane Kuu",
-    "THIS_MONTH": "See Kuu",
-    "LAST_WEEK": "Viimane Nädal",
-    "THIS_WEEK": "See Nädal",
-    "YESTERDAY": "Eile",
-    "TODAY": "Täna",
-    "SELECT_DATE": "Vali Alguse Kuupäev",
-    "HOME": "Kodu",
-    "SET_AS": "Määra kui",
-    "PENDING": "Ootel",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta Salvestatud Vastuste otsimiseks tekst",
-    "TAGS": "Sildid",
-    "SELECT_TAG": "Vali Silt",
-    "TYPE": "Tüüp",
-    "SOURCE": "Lähtekoht",
-    "DESTINATION": "Sihtpunkt",
-    "CALLERID": "Helistaja ID",
-    "END_AT": "Lõpetamise aeg",
-    "DURATION": "Kestus",
-    "CHAT": "Vestlus",
-    "MAIL": "E-post",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "FAX": "Faks",
-    "NOT_ASSIGNED": "Pole määratud",
-    "UNKNOWN": "Teadmata",
-    "SELECT_USER": "Vali Kasutaja",
-    "LAST_MESSAGE": "Viimane sõnum",
-    "USER": "Kasutaja",
-    "RATING": "Hinnang",
-    "FEEDBACK": "Tagasiside",
-    "SUBJECT": "Teema",
-    "CUSTOMER_IP": "Kliendi IP",
-    "REFERER": "Viitaja",
-    "ACCOUNT": "Konto",
-    "WEBSITE": "Veebisait",
+    "DECEMBER": "December",
+    "MON": "Mon",
+    "TUE": "Tue",
+    "WED": "Wed",
+    "THU": "Thu",
+    "FRI": "Fri",
+    "SAT": "Sat",
+    "SUN": "Sun",
+    "DELETE": "Delete",
+    "LAST_3_DAYS": "Last 3 Day",
+    "LAST_YEAR": "Last Year",
+    "THIS_YEAR": "This Year",
+    "LAST_MONTH": "Last Month",
+    "THIS_MONTH": "This Month",
+    "LAST_WEEK": "Last Week",
+    "THIS_WEEK": "This Week",
+    "YESTERDAY": "Yesterday",
+    "TODAY": "Today",
+    "SELECT_DATE": "Select Start Date",
+    "HOME": "Home",
+    "SET_AS": "Set As",
+    "PENDING": "Pending",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "TAGS": "Tags",
+    "SELECT_TAG": "Select Tag",
+    "TYPE": "Type",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "CALLERID": "Caller ID",
+    "END_AT": "End At",
+    "DURATION": "Duration",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "NOT_ASSIGNED": "Not Assigned",
+    "UNKNOWN": "Unknown",
+    "SELECT_USER": "Select User",
+    "LAST_MESSAGE": "Last message",
+    "USER": "User",
+    "RATING": "Rating",
+    "FEEDBACK": "Feedback",
+    "SUBJECT": "Subject",
+    "CUSTOMER_IP": "Customer IP",
+    "REFERER": "Referer",
+    "ACCOUNT": "Account",
+    "WEBSITE": "Website",
     "AGENT": "Agent",
-    "CREATED_AT": "Loomisaeg",
-    "CLOSED_AT": "Sulgemise aeg",
-    "DISPOSITION": "Kasutus",
-    "CONTACT": "Kontakt",
-    "INTERACTION": "Suhtlus",
-    "BROWSER_NAME": "Brauseri Nimi",
-    "BROWSER_VERSION": "Brauseri Versioon",
-    "OS_NAME": "Operatsioonisüsteemi Nimi",
-    "OS_VERSION": "Operatsioonisüsteemi Versioon",
-    "DEVICE_MODEL": "Seadme Mudel",
-    "DEVICE_VENDOR": "Seadme Tarnija",
-    "DEVICE_TYPE": "Seadme Tüüp",
-    "RECALLME": "Kutsu Mind tagasi",
-    "DROP_RATE": "Katkesta Määr",
-    "DROPPED": "Katkestatud",
-    "DROPPED_TEXT": "Katkestatud Järjekorra Kõned",
-    "DETAIL": "Üksikasi",
-    "MOTION_BULL": "Liikumise Pull",
-    "LIMITED": "Piiratud",
-    "LIMITED_TEXT": "IVR Kampaania Kõnede Päritolu/Piirang",
-    "DASHBOARDS": "Töölauad",
-    "RECORDINGS": "Salvestused",
-    "TODAY_MOTION_BULL_STATS": "Järjekorra Kampaania Päevane Stat.",
-    "ORIGINATED": "Päritolu",
-    "ORIGINATED_TEXT": "Järjekorra Kõnede Päritolu",
-    "UPDATE": "Värskendamine",
-    "MORE": "Rohkem",
-    "MOTIONDIALER": "Liikumise Pull",
-    "DISPOSE": "Likvideeri",
-    "QUEUES": "Järjekorrad",
-    "DIALER_CALL": "Numbrivalija Kõne",
-    "ELAPSED_TIME": "Kulunud Aeg",
-    "EDIT": "Redigeeri",
-    "MERGE": "Ühenda",
-    "DUPLICATE": "Dubleeri",
-    "UNIQUEID": "Kordumatu ID",
-    "CAMPAIGN": "Kampaania",
-    "NONE": "Ühtegi",
-    "NAME": "Nimi",
-    "ANSWER_MACHINE": "Automaatvastaja",
-    "INTERESTED": "Huvitatud",
-    "NOT_INTERESTED": "Pole Huvitatud",
-    "PERSONAL_INFO": "Isiklik Teave",
-    "SOLD": "Müüdud",
-    "SPECIAL": "Muud",
-    "BLACKLIST": "Must nimekiri",
-    "RESCHEDULE": "Planeeri uuesti",
-    "FIRSTNAME": "Eesnimi",
-    "LASTNAME": "Perekonnanimi",
-    "MOBILE": "Mobiil",
-    "DATE_OF_BIRTH": "Sünnikuupäev",
-    "COMPANY": "Ettevõte",
-    "TAG": "Silt",
-    "COUNTRY": "Riik",
-    "CITY": "Linn",
-    "STREET": "Tänav",
-    "POSTALCODE": "Postiindeks",
-    "CUSTOM_FIELDS": "Kohandatud Väljad",
-    "GENERAL": "Üldine",
-    "VOICE": "Hääl",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Igapäevane IVR Kampaania Stat.",
-    "TODAY_INBOUND_STATS": "Siseneva Järjekorra Igapäevane Stat.",
-    "TODAY_OUTBOUND_STATS": "Väljuva Igapäevane Stat.",
-    "WAITING": "Ootamine",
-    "TALKING": "Rääkimine",
-    "INBOUND_ANSWERED": "Vastatud",
-    "OUTBOUND_ANSWERED": "Vastatud",
-    "AVG_HOLD_TIME": "Keskmine Ooteaeg",
-    "INBOUND_ANSWER_RATE": "Vastuse Määr",
-    "OUTBOUND_ANSWER_RATE": "Vastuse Määr",
-    "ABANDON_RATE": "Tagasilükkamise Määr",
-    "UNMANAGED": "Haldamata",
-    "TOTAL": "Kokku",
-    "TOT_DURATION": "Kestus Kokku",
-    "AVG_DURATION": "Keskmine Kestus",
+    "CREATED_AT": "Created At",
+    "CLOSED_AT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CONTACT": "Contact",
+    "INTERACTION": "Interaction",
+    "BROWSER_NAME": "Browser Name",
+    "BROWSER_VERSION": "Browser Version",
+    "OS_NAME": "Operating System Name",
+    "OS_VERSION": "Operating System Version",
+    "DEVICE_MODEL": "Device Model",
+    "DEVICE_VENDOR": "Device Vendor",
+    "DEVICE_TYPE": "Device Type",
+    "RECALLME": "Recall Me",
+    "DROP_RATE": "Drop Rate",
+    "DROPPED": "Dropped",
+    "DROPPED_TEXT": "Dropped Queue Calls",
+    "DETAIL": "Detail",
+    "MOTION_BULL": "Motion Bull",
+    "LIMITED": "Limited",
+    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
+    "DASHBOARDS": "Dashboards",
+    "RECORDINGS": "Recordings",
+    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
+    "ORIGINATED": "Originated",
+    "ORIGINATED_TEXT": "Queue Calls Originated",
+    "UPDATE": "Update",
+    "MORE": "More",
+    "MOTIONDIALER": "Motion Bull",
+    "DISPOSE": "Dispose",
+    "QUEUES": "Queues",
+    "DIALER_CALL": "Dialer Call",
+    "ELAPSED_TIME": "Elapsed Time",
+    "EDIT": "Edit",
+    "MERGE": "Merge",
+    "DUPLICATE": "Duplicate",
+    "UNIQUEID": "Uniqueid",
+    "CAMPAIGN": "Campaign",
+    "NONE": "None",
+    "NAME": "Name",
+    "ANSWER_MACHINE": "Answer Machine",
+    "INTERESTED": "Interested",
+    "NOT_INTERESTED": "Not Interested",
+    "PERSONAL_INFO": "Personal Info",
+    "SOLD": "Sold",
+    "SPECIAL": "Special",
+    "BLACKLIST": "Blacklist",
+    "RESCHEDULE": "Reschedule",
+    "FIRSTNAME": "Firstname",
+    "LASTNAME": "Lastname",
+    "MOBILE": "Mobile",
+    "DATE_OF_BIRTH": "Birthdate",
+    "COMPANY": "Company",
+    "TAG": "Tag",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Street",
+    "POSTALCODE": "Postal Code",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "GENERAL": "General",
+    "VOICE": "Voice",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
+    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
+    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "INBOUND_ANSWERED": "Answered",
+    "OUTBOUND_ANSWERED": "Answered",
+    "AVG_HOLD_TIME": "Average Hold Time",
+    "INBOUND_ANSWER_RATE": "Answer Rate",
+    "OUTBOUND_ANSWER_RATE": "Answer Rate",
+    "ABANDON_RATE": "Abandon Rate",
+    "UNMANAGED": "Unmanaged",
+    "TOTAL": "Total",
+    "TOT_DURATION": "Total Duration",
+    "AVG_DURATION": "Average Duration",
     "HELP": {
-      "UNMANAGED_RATE": "Haldamata Määr kõikidest Suhtlustest",
-      "WAITING": "Ootel Suhtluste koguarv",
-      "OPENED": "Aktiivsete Suhtluste koguarv",
-      "MANAGED": "Lõpetatud Suhtluste koguarv",
-      "ABANDONED": "Tagasilükatud Suhtluste koguarv",
-      "TOTAL_OFFERED": "Suhtluste (lõpetatud + tagasilükatud) koguarv",
-      "AVG_HOLD_TIME": "Keskmine Suhtluse Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Suhtluste kohta",
-      "AVG_MANAGED_TIME": "Keskmine Hallatud Suhtluse Aeg, nimelt keskmine vestlusele kulunud aeg",
-      "MANAGED_RATE": "Haldamise Määr Kõikide Suhtluste kohta ",
-      "ABANDONED_RATE": "Tagasilükkamise Määr kõikide Suhtluste kohta",
-      "UNMANAGED": "Haldamata Suhtluste koguarv",
-      "VOICE_WAITING": "Ootejärjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_TALKING": "Aktiivsete Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ANSWERED": "Lõpetatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ABANDONED": "Tagasilükatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. Pange tähele, et kõned mis on tagasi lükatud seoses vaheaja ja tühjalt liitumisega ei lähe arvesse",
-      "VOICE_TOTAL_OFFERED": "Järjekorra Kõnede (lõpetatud + tagasilükatud) koguarv. Pange tähele, et kõned, mis sisenevad IVRis, mitte järjekorras, ei lähe arvesse",
-      "VOICE_AVG_TALK_TIME": "Keskmine Järjekorra Kõneaeg, nimelt keskmine vestlustele kulunud aeg kõikide olemasolevate Järjekordade kohta",
-      "VOICE_AVG_HOLD_TIME": "Keskmine Järjekorra Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ANSWER_RATE": "Vastamise Määr kõikide Järjekorra Kõnede kohta",
-      "VOICE_UNMANAGED": "Haldamata Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. See sisaldab kõnesid, mida on tagasi lükatud seoses vaheaja, tühjalt liitumise, tühja korral lahkumise ja võtmega väljumisega (vt. täpsemalt asterisk doc)",
-      "ORIGINATED": "Kõnede koguarv, mis on valitud järjekorra kampaaniates",
-      "ORIGINATEDLIMITED": "IVR Kampaaniate Kõnede Päritolu/Piir",
-      "DROPPED": "Katkestatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "DROP_RATE": "Katkestuste Määr kõikide Järjekorra Kõnede kohta",
-      "OUTBOUND_ANSWERED": "Lõpetatud Väljuvate Kõnede koguarv",
-      "OUTBOUND_ANSWER_RATE": "Kõikide Väljuvate Kõnede Vastamise Määr",
-      "ABANDON_RATE": "Järjekorra Kõnede Tagasilükkamise Määr",
-      "TOTAL": "Väljuvate Kõnede koguarv",
-      "TOT_DURATION": "Väljuvate Kõnede kogukestus",
-      "AVG_DURATION": "Lõpetatud Väljuvate Kõnede keskmine kestus",
+      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
+      "WAITING": "The total number of Waiting Interactions",
+      "OPENED": "The total number of Active Interactions",
+      "MANAGED": "The total number of Completed Interactions",
+      "ABANDONED": "The total number of Abandoned Interactions",
+      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
+      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
+      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
+      "MANAGED_RATE": "The Managed Rate of all the Interactions",
+      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
+      "UNMANAGED": "The total number of Unmanaged Interactions",
+      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
+      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
+      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
+      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
+      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned). Note that the calls which enter in an IVR and not in a queue, will not be considered",
+      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
+      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
+      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
+      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
+      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
+      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
+      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
+      "DROP_RATE": "The Drop Rate of all the Queue Calls",
+      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
+      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
+      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
+      "TOTAL": "The total number of Outbound Calls",
+      "TOT_DURATION": "The total duration of all the Outbound Calls",
+      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
       "EXACT_MATCH_FILTER": "Täpse vaste otsimine",
       "LIKE_FILTER": "Otsige määratud mustrit",
-      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik suhtlus lubatud"
+      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik dispositsioon lubatud"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "AGENT_REQUIRED": "Kohustuslik väli",
-      "QUEUE_REQUIRED": "Kohustuslik väli",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
       "CAMPAIGN_REQUIRED": "Kohustuslik väli",
       "FAILED_INITIALIZATION": "Viga lähtestamisel"
     },
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "WELCOME_TO_MOTION": "Tere tulemust Liikumisse",
-    "WELCOME_MESSAGE": "Kasuta vasakut külgriba navigeerimiseks vabades sektsioonides",
-    "ADD": "Lisa",
-    "CONTACTMANAGER": "Kontakti Haldur",
-    "DASHBOARD": "Töölaud",
-    "EDIT_CONTACT": "Redigeeri kontakti",
-    "EMAIL": "E-post",
-    "FULLNAME": "Täisnimi",
-    "LIST": "Loend",
-    "NEW_CONTACT": "Uus Kontakt",
-    "PHONE": "Telefon",
-    "SAVE": "Salvesta",
-    "INBOUND_WAITING_CALLS": "Sisenevad Ootel Kõned",
-    "CONTACTS": "Kontaktid",
-    "MYCONTACTS": "Minu Kontaktid",
-    "ADD_CONTACT": "Lisa Kontakt",
-    "RELOAD": "Laadi uuesti",
-    "WAITING_TEXT": "Ootel Suhtlused",
-    "TALKING_TEXT": "Aktiivsed Järjekorra Kõned",
-    "INBOUND_ANSWERED_TEXT": "Vastatud Järjekorra Kõned",
-    "DROP_RATE_TEXT": "Järjekorra Kõnede Katkestamise Määr",
-    "AVG_TALK_TIME_TEXT": "Järjekorra Kõnede Kõneaeg",
-    "INBOUND_ANSWER_RATE_TEXT": "Järjekorra Kõnede Vastamise Määr",
-    "UNMANAGED_TEXT": "Haldamata Suhtlused",
-    "TOTAL_TEXT": "Väljuvad Kõned kokku",
-    "OUTBOUND_ANSWERED_TEXT": "Väljuvad Vastatud Kõned",
-    "TOT_DURATION_TEXT": "Väljuvate Kõnede Kogukestus",
-    "AVG_DURATION_TEXT": "Väljuvate Kõnede Keskmine Kestus",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Väljuvate Kõnedee Vastamise Määr",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridy lehekülje kohta",
+    "NO_AVAILABLE_INFO": "No available info",
+    "WELCOME_TO_MOTION": "Welcome to Motion",
+    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
+    "ADD": "Add",
+    "CONTACTMANAGER": "Contact Manager",
+    "DASHBOARD": "Dashboard",
+    "EDIT_CONTACT": "Edit contact",
+    "EMAIL": "Email",
+    "FULLNAME": "Fullname",
+    "LIST": "List",
+    "NEW_CONTACT": "New Contact",
+    "PHONE": "Phone",
+    "SAVE": "Save",
+    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
+    "CONTACTS": "Contacts",
+    "MYCONTACTS": "My Contacts",
+    "ADD_CONTACT": "Add Contact",
+    "RELOAD": "Reload",
+    "WAITING_TEXT": "Waiting Interactions",
+    "TALKING_TEXT": "Active Queue Calls",
+    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
+    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
+    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
+    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
+    "UNMANAGED_TEXT": "Unmanaged Interactions",
+    "TOTAL_TEXT": "Total Outbound Calls",
+    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
+    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
+    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "REPLY_PLACEHOLDER": "Tipi ja vajuta enter sõnumi saatmiseks",
-    "CONTACT_INFO": "Kontakti Teave",
-    "CLOSE_AND_DISPOSE": "Sule ja eemalda",
-    "DISPOSITIONS": "Kasutused",
-    "CLOSE_WITHOUT_DISPOSE": "Sule ilma eemaldamiseta",
-    "ACCEPT": "Aktsepteeri",
-    "REJECT": "Hülga",
-    "CLOSED": "Suletud",
-    "INFO": "Teave",
-    "NOTE": "Märge",
-    "ACCEPT_ELSEWHERE": "Aktsepteeritud mujal",
-    "ATTENTION": "Tähelepanu",
-    "SOCIAL": "Sotsiaalne",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Jscripty Projekte pole saadaval",
-    "OPENED": "Avatud",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali Staatus",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "SELECT_WEBSITE": "Vali Veebisait",
-    "ALL": "Kõik",
-    "INTERACTIONS": "Suhtlused",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "OPEN": "Ava",
-    "SHOW": "Kuba",
-    "SHOW_DETAILS": "Kuva Üksikasjad",
-    "HIDE_DETAILS": "Peida Üksikasjad",
-    "EXTERNAL_URL": "Väline Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "E-posti Kontosid pole saadaval",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "Faksi Kontosid pole saadaval",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "Sõnumi Kontosid pole saadaval",
-    "SELECT_DATE_RANGE": "Vali Kuupäevavahemik",
-    "CLEAR": "Tühjenda",
-    "CALL_NUMBER": "Helista",
-    "TRANSFER_NUMBER": "Edasta",
-    "CALL_SAVED": "Kõne õigesti salvestatud",
-    "CALL_DISPOSED": "Kõne õigesti eemaldatud",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
+    "CONTACT_INFO": "Contact Info",
+    "CLOSE_AND_DISPOSE": "Close and dispose",
+    "DISPOSITIONS": "Dispositions",
+    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
+    "ACCEPT": "Accept",
+    "REJECT": "Reject",
+    "CLOSED": "Closed",
+    "INFO": "Info",
+    "NOTE": "Note",
+    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
+    "ATTENTION": "Attention",
+    "SOCIAL": "Social",
+    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
+    "OPENED": "Opened",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "SELECT_ACCOUNT": "Select Account",
+    "SELECT_WEBSITE": "Select Website",
+    "ALL": "All",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "OPEN": "Open",
+    "SHOW": "Show",
+    "SHOW_DETAILS": "Show Details",
+    "HIDE_DETAILS": "Hide Details",
+    "EXTERNAL_URL": "External Link",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
+    "SELECT_DATE_RANGE": "Select Date Range",
+    "CLEAR": "Clear",
+    "CALL_NUMBER": "Call",
+    "TRANSFER_NUMBER": "Transfer",
+    "CALL_SAVED": "Call properly saved",
+    "CALL_DISPOSED": "Call properly disposed",
     "ACCOUNTINGDOC": "Raamatupidamine",
     "ADD_PRODUCTPRICELIST": "LISA TOODE",
     "ADVANCED_SEARCH": "Täpsem otsing",
     "BALANCE": "TASAKAAL",
     "BY": "Kõrval",
     "CANCEL": "Tühista",
-    "CHAT_INTERACTIONS": "Vestluse suhtlused",
+    "CHAT_INTERACTIONS": "Vestluse interaktsioonid",
     "CHOOSE": "Valige",
     "CLONEPROFORMA": "Kloon",
     "COMPANIES": "Ettevõtted",
     "DOSSIERNOTES": "Märge",
     "DOSSIERS": "Toimikud",
     "DOSSIER_INFO": "Teave",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "DRAFT": "Mustand",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Selle suhtluse jaoks on juba mustand salvestatud. Kas soovid selle kindlasti üle kirjutada?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Selle interaktsiooni jaoks on juba mustand salvestatud. Kas soovite selle kindlasti üle kirjutada?",
     "DRAFT_SAVE_WARNING_TITLE": "Kas kirjutada olemasolev mustand üle?",
     "ENABLED": "Lubatud",
     "ENDDATE": "Kehtivusaeg",
     "ENDING_VALUE": "Lõppväärtus",
     "ENDS_WITH": "Lõpeb koos",
     "EQUALS": "Võrdub",
-    "FAX_INTERACTIONS": "Faksi suhtlused",
+    "FAX_INTERACTIONS": "Faksi interaktsioonid",
     "FROM": "Alates",
     "GRAPHINVOICES": "Arve heitkoguste tabel",
-    "ID": "ID",
+    "ID": "Id",
     "INASSET": "Vara",
-    "INTERACTION_CLOSED": "Suhtlus on korralikult suletud",
-    "INTERACTION_CLOSED_DISPOSED": "Suhtlus on korralikult suletud ja eemaldatud",
-    "INTERACTION_DISPOSED": "Suhtlus on korralikult eemaldatud",
+    "INTERACTION_CLOSED": "Koostoime on korralikult suletud",
+    "INTERACTION_CLOSED_DISPOSED": "Koostoime on korralikult suletud ja hävitatud",
+    "INTERACTION_DISPOSED": "Koostoime on korralikult paigutatud",
     "INVOICE": "ARV",
     "INVOICEDETAILS": "ARVETE ÜKSIKASJAD",
     "INVOICEDISCOUNT": "Soodustus",
-    "INVOICEEMITED": "Väljastatud",
+    "INVOICEEMITED": "Välja antud",
     "INVOICEID": "Arve",
     "INVOICENAME": "Arve nimi",
     "INVOICENOPRODUCTAMOUNT": "Summa",
     "IS_BETWEEN": "On vahel",
     "IS_GREATER_THAN": "On suurem kui",
     "IS_GREATER_THAN_OR_EQUAL_TO": "On suurem või võrdne",
-    "IS_LESS_THAN": "On väiksem kui",
+    "IS_LESS_THAN": "On vähem kui",
     "IS_LESS_THAN_OR_EQUAL_TO": "On väiksem või võrdne",
     "IS_NOT_AMONG": "Ei kuulu",
     "IS_NOT_EQUAL": "Ei võrdu",
-    "MAIL_INTERACTIONS": "E-posti suhtlused",
+    "MAIL_INTERACTIONS": "E-posti interaktsioonid",
     "MANAGESALES": "Tellimused",
-    "MEET_ALL_CONDITIONS": "Täida kõik tingimused",
-    "MEET_ANY_CONDITIONS": "Täida vähemalt üks tingimus",
+    "MEET_ALL_CONDITIONS": "Täitke kõik tingimused",
+    "MEET_ANY_CONDITIONS": "Täitke vähemalt üks tingimus",
     "MOVEASSET": "VARA",
-    "MOVECREDITNOTE": "TEISALDA KREDIIDI MÄRKUS",
+    "MOVECREDITNOTE": "VÕI KREDIIDI MÄRKUS",
     "NETPRICE": "Hind",
     "NEW_COMPANY": "Uus",
     "NEW_CONDITION": "Uus tingimus",
     "NEW_DOSSIER": "Uus toimik",
     "NEXTINVOICE": "Järgmine arve",
     "NOTES": "Märge",
-    "NO_AVAILABLE_INTERACTION": "Suhtlus pole saadaval",
+    "NO_AVAILABLE_INTERACTION": "Pole saadaval interaktsiooni",
     "NO_PRODUCTINVOICE_AVAILABLE": "Pole toodet",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Andmed puuduvad",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Andmed puuduvad",
     "NUMBER": "Arv",
-    "OPENCHANNEL_INTERACTIONS": "Avage kanalite suhtlused",
+    "OPENCHANNEL_INTERACTIONS": "Avage kanalite interaktsioonid",
     "OPENDATE": "Avamiskuupäev",
     "ORDER": "Telli",
     "ORDERCLIENTCODE": "Kliendikood",
     "ORDERNOTES": "Märge",
     "ORDERSTATUS": "Osariik",
     "ORDER_INFO": "Telli",
-    "OVERWRITE": "Kirjuta üle",
+    "OVERWRITE": "Üle kirjutada",
     "PAIDANDEXPIRED": "Makse",
     "PAYED_AY": "Maksti edasi",
     "PAYMENT": "Makse",
     "QUOTATIONINVOICEID": "Arve ID",
     "QUOTATIONNAME": "Tsitaadi nimi",
     "QUOTATIONNOTES": "Hinnapakkumised",
-    "QUOTATIONPRODUCTNOTE": "Toote mƤrkus",
+    "QUOTATIONPRODUCTNOTE": "Toote märkus",
     "QUOTATIONPRODUCTTYPE": "Tüüp",
     "QUOTATIONPROFORMAID": "Proforma ID",
     "QUOTATIONQTY": "Kogus",
     "SAVE_AS_DRAFT": "Salvesta mustandina",
     "SCHEDULED_CALLS": "Ajastatud kõned",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_COMPANY": "Vali ettevõte",
-    "SELECT_FIELD": "Vali väli",
+    "SELECT_COMPANY": "Valige ettevõte",
+    "SELECT_FIELD": "Valige väli",
     "SELECT_OPERATOR": "Valige operaator",
-    "SELECT_PERIOD": "Vali vahemik",
-    "SELECT_PERIOD_CREATION": "Vali loomise kuupäev",
-    "SELECT_PERIOD_EXPIRE": "Vali aegumiskuupäev",
-    "SELECT_PERIOD_START": "Vali kuupäev",
-    "SELECT_PRODUCT": "Vali toode",
-    "SELECT_PRODUCTTYPE": "Vali tüüp",
-    "SELECT_QUEUE": "Vali järjekord",
-    "SELECT_WORKFLOW": "Vali Töövoog",
-    "SELECT_WORKFLOWSTEPS": "Vali Töövoo olek",
-    "SMS_INTERACTIONS": "Sõnumi suhtlused",
+    "SELECT_PERIOD": "Valige vahemik",
+    "SELECT_PERIOD_CREATION": "Valige loomise kuupäev",
+    "SELECT_PERIOD_EXPIRE": "Valige aegumiskuupäev",
+    "SELECT_PERIOD_START": "Valige kuupäev",
+    "SELECT_PRODUCT": "Valige toode",
+    "SELECT_PRODUCTTYPE": "Valige tüüp",
+    "SELECT_QUEUE": "Valige järjekord",
+    "SELECT_WORKFLOW": "Valige Töövoog",
+    "SELECT_WORKFLOWSTEPS": "Valige Töövoo olek",
+    "SMS_INTERACTIONS": "SMS-i interaktsioonid",
     "STARTDATE": "Arve kuupäev",
     "STARTING_DATE": "Alguskuupäev",
     "STARTING_VALUE": "Algväärtus",
     "VALUE_RANGE_CHECK": "Väärtus peab olema suurem kui",
     "VIDAOOSESSION": "Alusta videokõnet",
     "VISIBILITY": "Nähtavus",
-    "WHATSAPP": "WhatsApp-ühendus",
-    "WHATSAPP_INTERACTIONS": "WhatsAppi suhtlused",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPP_INTERACTIONS": "WhatsApi pistikühendused",
     "WORKFLOW": "Valige Töövoog",
-    "YEARS": "Aastad",
+    "YEARS": "Aastaid",
     "LAST_UPDATED": "Viimati uuendatud",
     "MATCHING_FIELD": "Vastav väli",
     "MULTIPLE_CONTACTS_FOUND": "Numbri jaoks leiti mitu kontakti",
-    "SELECT": "Vali",
-    "SELECT_CONTACT": "Vali kontakt",
-    "WHICH_ONE_TO_USE": "Kumba soovid kasutada?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi konto pole saadaval",
+    "SELECT": "Valige",
+    "SELECT_CONTACT": "Valige kontakt",
+    "WHICH_ONE_TO_USE": "Kumba soovite kasutada?",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Whatsappi konto pole saadaval",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Sinu litsents on aegumas! Võta ühendust oma administraatoriga",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Teie litsents on aegumas! Võtke ühendust oma administraatoriga",
     "CREATEDAT": "Loodud aadressil",
     "ELAPSED_ANSWERED": "Kulunud aeg kõne alustamisest",
     "ELAPSED_DISPOSED": "Kulunud aeg kõne lõppemisest",
-    "LOST_CONNECTION": "Võrguühendusprobleemide ilmnemine. Palun kontrolli oma internetiühendust.",
+    "LOST_CONNECTION": "Võrguühendusprobleemide kogemine. Palun kontrollige oma Interneti-ühendust.",
     "NO_RESULTS_AVAILABLE": "Tulemusi pole saadaval",
-    "AUTOCLOSE": "Pärast eemaldamist sulgege kontaktikaart automaatselt",
+    "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
-    "SELECT_TEAM": "Valige Tiim",
+    "SELECT_TEAM": "Valige Meeskond",
     "AVAILABLE": "Saadaval",
-    "CONFIRM": "Kinnita",
+    "CONFIRM": "Kinnitage",
     "FILTERS": "Filtrid",
     "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
-    "FILTER_FAX_ACCOUNTS": "Filtreeri Faksikontod",
-    "FILTER_MAIL_ACCOUNTS": "Filtreeri meilikontod",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreeri avatud kanalite kontod",
-    "FILTER_SMS_ACCOUNTS": "Filtreeri Sõnumikontod",
-    "FILTER_WHATSAPP_ACCOUNTS": "Filtreeri Whatsappi kontod",
-    "SETFILTERS": "Määra filtrid",
+    "FILTER_FAX_ACCOUNTS": "Faksikontode filtreerimine",
+    "FILTER_MAIL_ACCOUNTS": "Filtreerige meilikontosid",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreerige avatud kanalite kontod",
+    "FILTER_SMS_ACCOUNTS": "Sms -kontode filtreerimine",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtreerige Whatsappi kontosid",
+    "SETFILTERS": "Määrake filtrid",
     "DIAL_TIMEZONE": "Vali ajavöönd",
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
-    "SCHEDULED_AT": "kavas kl",
-    "SYSTEM_TIME": "Süsteemi aeg"
+    "SYSTEM_TIME": "Süsteemi aeg",
+    "CONTACT_NAME": "kontaktisiku nimi",
+    "CONTACT_PHONE": "Kontakt Telefon",
+    "RECALLME_CALL_REMINDER": "Helista mulle meeldetuletus",
+    "SCHEDULED_TIME": "Planeeritud aeg",
+    "UPCOMING_RECALLME_CALL": "Tulevane Recall Me kõne"
   }
 }
index 7478044..ceb8029 100644 (file)
     "CONTACT_PHONE": "Contatto telefonico",
     "RECALLME_CALL_REMINDER": "Ricordami di chiamare il promemoria",
     "SCHEDULED_TIME": "Orario pianificato",
-    "UPCOMING_RECALLME_CALL": "Prossima chiamata Richiamami",
-    "WAITING_CALLS": "Chiamate in attesa",
-    "WAITING_INTERACTIONS": "Interazioni in attesa"
+    "UPCOMING_RECALLME_CALL": "Prossima chiamata Richiamami"
   }
 }
index fd6d9b8..7e03440 100644 (file)
 {
   "FAX": {
-    "LOGIN_TIME": "Sisselogimise Aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Hääl",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "FAXCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole saadaval",
-    "NEW_FAXCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_FAXCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CHATCANNEDANSWER": "Redigeeri Salvestatud Vastust",
-    "DELETE_CHATCANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "SPYINTERACTION": "Spioon",
-    "TAGS": "Sildid",
-    "REPLY": "Vasta",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "FROM": "Kellelt",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "GOTOREALTIME_FAXQUEUE": "Mine Reaalaja Faksi Järjekorda",
-    "EDIT_TRUNK": "Redigeeri Magistraali",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "EDIT_ACCOUNT": "Redigeeri Faksi Kontot",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "GOTO_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
-    "ACCOUNTS": "Kontod",
-    "GOTOREALTIME_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
-    "TRUNK_STATUS": "Magistraali Staatus",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "PAUSE": "Paus",
-    "INFO": "Teave",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "LOGOUT": "Logi välja",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "AGENTADD_QUEUE": "Lisa Agent Faksi järjekorda",
-    "AGENTSADD_QUEUE": "Lisa Agendid Faksi järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "PRIORITY": "Prioriteet",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
-    "EDIT_FAXQUEUE": "Redigeeri Faksi Järjekorda",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOP": "Redigeeri GotoP",
-    "EDIT_GOTOIF": "Redigeeri GotoIf",
-    "EDIT_QUEUE": "Redigeeri Faksi Järjekorda",
-    "EDIT_CLOSE": "Redigeeri Sule",
-    "QUEUE": "Järjekord",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "CANNEDANSWERS": "Canned Answers",
+    "FAXCANNEDANSWERS": "Canned Answers",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_FAXCANNEDANSWER": "New Canned Answer",
+    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
+    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
+    "SPYINTERACTION": "Spy",
+    "TAGS": "Tags",
+    "REPLY": "Reply",
+    "SEND": "Send",
+    "TO": "To",
+    "FROM": "From",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
+    "EDIT_TRUNK": "Edit Trunk",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "EDIT_ACCOUNT": "Edit Fax Account",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
+    "ACCOUNTS": "Accounts",
+    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
+    "TRUNK_STATUS": "Trunk Status",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "PAUSE": "Pause",
+    "INFO": "Info",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "DEFAULT_PAUSE": "Default pause",
+    "AGENTADD_QUEUE": "Add Agent to Fax queue",
+    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
+    "UNPAUSE": "End Pause",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "PRIORITY": "Priority",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "EDIT_FAXQUEUE": "Edit Fax Queue",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOP": "Edit GotoP",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "EDIT_QUEUE": "Edit Fax Queue",
+    "EDIT_CLOSE": "Edit Close",
+    "QUEUE": "Queue",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agent",
-    "NOTES": "Märkmed",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutamine",
-    "REALTIME": "Reaalaeg",
-    "TEAMADD_FAXQUEUE": "Lisa Tiim Faksi Järjekorda",
-    "AGENTADD_FAXQUEUE": "Lisa Agent Faksi Järjekorda",
-    "NAME": "Nimi",
-    "FAXQUEUES": "Faksi Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
+    "NOTES": "Notes",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "REALTIME": "Realtime",
+    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
+    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
+    "NAME": "Name",
+    "FAXQUEUES": "Fax Queues",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_MUST_BE_GREATER": "Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale Formaat",
-      "LOCALSTATIONID_REQUIRED": "Kohustuslik Väli",
-      "MODEM_REQUIRED": "Kohustuslik Väli",
-      "GATEWAY_REQUIRED": "Kohustuslik Väli",
-      "FAXDETECT_REQUIRED": "Kohustuslik Väli",
-      "T38TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "HEADERINFO_REQUIRED": "Kohustuslik Väli",
-      "TRUNK_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pead pausi oleku määrama, kui see on kohustuslik"
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
+      "MODEM_REQUIRED": "Mandatory Field",
+      "GATEWAY_REQUIRED": "Mandatory Field",
+      "FAXDETECT_REQUIRED": "Mandatory Field",
+      "T38TIMEOUT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "HEADERINFO_REQUIRED": "Mandatory Field",
+      "TRUNK_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Peaksite pausi oleku määrama, kui see on kohustuslik"
     },
-    "STRATEGY": "Strateegia",
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_FAXQUEUE": "Lisa Faksi Järjekord",
-    "DELETE_FAXQUEUE": "Kustuta Faksi Järjekord",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "FAXACCOUNTS": "Faksi Kontod",
-    "MOTIONADDRESS": "Liikumise Aadress",
-    "ADD_FAXACCOUNT": "Lisa Faksi Konto",
-    "EDIT_FAXACCOUNT": "Redigeeri Faksi Kontot",
-    "DELETE_FAXACCOUNT": "Kustuta Faksi Konto",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "VeebiHaagid",
-    "ACTIONS": "Tegevused",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "TRUNK": "Magistraal",
-    "LOCALSTATIONID": "Kohaliku Jaama ID",
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_FAXQUEUE": "Add Fax Queue",
+    "DELETE_FAXQUEUE": "Delete Fax Queue",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FAXACCOUNTS": "Fax Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_FAXACCOUNT": "Add Fax Account",
+    "EDIT_FAXACCOUNT": "Edit Fax Account",
+    "DELETE_FAXACCOUNT": "Delete Fax Account",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "TRUNK": "Trunk",
+    "LOCALSTATIONID": "Local Station Identifier",
     "HELP": {
-      "LOCALSTATIONID": "Kohaliku Jaama ID (telefoninumber)",
-      "HEADERINFO": "Väljuva Faksi Päise teave",
-      "MODEM": "Modemi Tüüp (v17/v27/v29)",
-      "GATEWAY": "T.38 Faksi Portaal, valikulise faksi tegevuse aegumisega sekundite jooksul (jah/ei/[aegumine])",
-      "FAXDETECT": "Luba Faksi Tuvastamine valikulise aegumisega sekundite jooksul (jah/t38/cng/[aegumine]/ei)",
-      "T38TIMEOUT": "T.38 läbirääkimise jaoks kasutatud aegumine (miinimumväärtus=1000)",
-      "ECM": "Ühenduse Režiimi Viga (ECM)",
-      "MINRATE": "Minimaalne edastuse määr, mis on määratud enne edastamist",
-      "MAXRATE": "Maksimaalne edastuse määr, mis on määratud enne edastamist",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku kasutamise olek"
+      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
+      "HEADERINFO": "Outbound Fax Header information",
+      "MODEM": "Modem Type (v17/v27/v29)",
+      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
+      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
+      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
+      "ECM": "Error Connection Mode (ECM)",
+      "MINRATE": "Minimum transfer rate set before transmission",
+      "MAXRATE": "Maximum transfer rate set before transmission",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku dispositsiooni olek"
     },
-    "ADVANCED": "Täpsem",
+    "ADVANCED": "Advanced",
     "ECM": "ECM",
-    "MINRATE": "Min Määr",
-    "MAXRATE": "Maks Määr",
+    "MINRATE": "Min Rate",
+    "MAXRATE": "Max Rate",
     "MODEM": "Modem",
-    "GATEWAY": "Portaal",
-    "FAXDETECT": "Faksi Tuvastus",
-    "T38TIMEOUT": "T.38 Aegumine",
-    "SIP": "Tehnoloogia",
-    "HEADERINFO": "Päise Teave",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "BACK": "Tagasi",
-    "FAX": "Faks",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "FAXDISPOSITIONS": "Faksi Kasutus",
-    "NO_FAXDISPOSITION_AVAILABLE": "Faksi Kasutused pole saadaval",
-    "NEW_FAXDISPOSITION": "Uus Faksi Kasutus",
-    "ADD_FAXDISPOSITION": "Lisa Faksi Kasutus",
-    "EDIT_FAXDISPOSITION": "Redigeeri Faksi Kasutus",
-    "DELETE_FAXDISPOSITION": "Kustuta Faksi Kasutus",
-    "NEW_FAXQUEUE": "Uus Faksi Järjekord",
-    "NEW_FAXACCOUNT": "Uus Faksi Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "GATEWAY": "Gateway",
+    "FAXDETECT": "Fax Detect",
+    "T38TIMEOUT": "T.38 Timeout",
+    "SIP": "Technology",
+    "HEADERINFO": "Header Info",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "FAX": "Fax",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Fax Dispositions",
+    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
+    "NEW_FAXDISPOSITION": "New Fax Disposition",
+    "ADD_FAXDISPOSITION": "Add Fax Disposition",
+    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
+    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
+    "NEW_FAXQUEUE": "New Fax Queue",
+    "NEW_FAXACCOUNT": "New Fax Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "DELETE": "Kustuta",
-    "KEY": "Võti",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali Staatus",
-    "ALL": "Kõik",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "INTERACTIONS": "Suhtlused",
-    "CONTACT": "Kontact",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "UNKNOWN": "Teadmata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutuses",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutuses",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-post",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "TOTAL": "Kokku",
-    "IN": "Sees",
-    "OUT": "Väljas",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "INTERACTIONS_FAXACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_FAXACCOUNT": "Lisa Agent Faksi Kontole",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DELETE": "Delete",
+    "KEY": "Key",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "ALL": "All",
+    "CLOSED": "Closed",
+    "OPENED": "Opened",
+    "SELECT_ACCOUNT": "Select Account",
+    "INTERACTIONS": "Interactions",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "UNKNOWN": "Unknown",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku kasutamise korral",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku dispositsiooni korral",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli"
   }
index b43fb9a..4c1be43 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Kohta",
-    "CONTACT_US": "Võta meiega ühendust",
-    "HELP": "Abi",
-    "USEFUL_LINKS": "Kasulikud lingid"
+    "ABOUT": "About",
+    "CONTACT_US": "Contact us",
+    "HELP": "Help",
+    "USEFUL_LINKS": "Useful links"
   }
 }
index 7444e6b..0a98fe6 100644 (file)
@@ -1,54 +1,54 @@
 {
   "INTEGRATIONS": {
-    "ADVANCED": "Täpsem",
-    "MODULE_SEARCH": "Mooduli Otsing",
-    "MODULE_CREATE": "Mooduli Loomine",
-    "INTEGRATIONS": "Integreerimised",
-    "ZENDESKACCOUNTS": "Zendesk Kontod",
-    "ID": "ID",
-    "NAME": "Nimi",
-    "USERNAME": "Kasutajanimi",
+    "ADVANCED": "Advanced",
+    "MODULE_SEARCH": "Module Search",
+    "MODULE_CREATE": "Module Create",
+    "INTEGRATIONS": "Integrations",
+    "ZENDESKACCOUNTS": "Zendesk Accounts",
+    "ID": "Id",
+    "NAME": "Name",
+    "USERNAME": "Username",
     "URI": "URL",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "EDIT_ZENDESKACCOUNT": "Redigeeri Zendesk Kontot",
-    "DELETE_ZENDESKACCOUNT": "Kustuta Zendesk Konto",
-    "NEW_ZENDESKACCOUNT": "Uus Zendesk Konto",
-    "AUTHTYPE": "Autentimise Tüüp",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TOKEN": "Luba",
-    "MOTIONPROXYADDRESS": "Liikuv või Puhvri IP-aadress",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_ZENDESKACCOUNT": "Lisa Zendesk Konto",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
+    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
+    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
+    "AUTHTYPE": "Authentication Type",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TOKEN": "Token",
+    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
+    "DESCRIPTION": "Description",
+    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli",
-      "URI_REQUIRED": "Kohustuslik väli",
-      "URI_MUST_VALID_URL": "Vale formaat",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "TOKEN_REQUIRED": "Kohustuslik väli",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Vale formaat",
-      "CLIENTID_REQUIRED": "Kohustuslik väli",
-      "CLIENTSECRET_REQUIRED": "Kohustuslik väli",
-      "SECURITYTOKEN_REQUIRED": "Kohustuslik väli",
-      "APIKEY_REQUIRED": "Kohustuslik väli",
-      "CONTENT_REQUIRED": "Kohustuslik väli",
-      "VARIABLENAME_REQUIRED": "Kohustuslik väli",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "TYPE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "CONSUMERKEY_REQUIRED": "Kohustuslik väli",
-      "CONSUMERSECRET_REQUIRED": "Kohustuslik väli",
-      "TOKENSECRET_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "AUTHTOKEN_REQUIRED": "Kohustuslik väli",
-      "VTIGER_USER_NAME_REQUIRED": "Kohustuslik väli",
-      "ACCESS_KEY_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "URI_REQUIRED": "Mandatory field",
+      "URI_MUST_VALID_URL": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TOKEN_REQUIRED": "Mandatory field",
+      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
+      "CLIENTID_REQUIRED": "Mandatory field",
+      "CLIENTSECRET_REQUIRED": "Mandatory field",
+      "SECURITYTOKEN_REQUIRED": "Mandatory field",
+      "APIKEY_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "VARIABLENAME_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "CONSUMERKEY_REQUIRED": "Mandatory field",
+      "CONSUMERSECRET_REQUIRED": "Mandatory field",
+      "TOKENSECRET_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "AUTHTOKEN_REQUIRED": "Mandatory field",
+      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
+      "ACCESS_KEY_REQUIRED": "Mandatory field",
       "CODE_REQUIRED": "Kohustuslik väli",
       "EMAIL_REQUIRED": "Kohustuslik väli",
       "TENANTID_REQUIRED": "Kohustuslik väli",
       "MODULECREATE_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
-      "MOTIONPROXYADDRESS": "Liikuv (Puhvri) Address: see on nõutav, kui soovid täita pileti sisu Salvestuse URLiga. Sisesta aadress järgmises formaadis: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
       "CLIENTID": "Teie rakenduse konkreetne kliendi ID",
       "CLIENTSECRET": "Teie rakenduse konkreetne CLientSecret",
       "CODE": "Arendajakonsooli kaudu genereeritud konkreetne kood",
       "REFRESHTOKEN": "Automaatselt genereeritav värskendamisluba, mida kasutatakse aegunud juurdepääsumärkide värskendamiseks. Samuti genereeritakse pääsuluba automaatselt iga kord, kui api käivitatakse.",
       "TICKETTYPE": "Pileti tüüp",
-      "ZONE": "Vali domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
+      "ZONE": "Valige domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
       "ADDITIONALSEARCHACCOUNT": "Täiendav välja nimi, mida kasutatakse kontol kliendi telefoninumbri otsimiseks",
       "ADDITIONALSEARCHCONTACT": "Täiendav välja nimi, mida kasutatakse kliendi telefoninumbri otsimiseks menüüst Kontaktid",
       "ADDITIONALSEARCHLEAD": "Potentsiaalsete klientide telefoninumbri otsimiseks kasutatav täiendav välja nimi",
-      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi"
+      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi",
+      "MODERN_AUTHENTICATION": "Lülitage sisse, et lubada kaasaegne autentimine"
     },
-    "ACCOUNT": "Konto",
-    "ZENDESKCONFIGURATIONS": "Zendesk Konfiguratsioonid",
-    "SALESFORCECONFIGURATIONS": "Salesforce Konfiguratsioonid",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Konfiguratsioonid",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Konfiguratsioonid",
-    "GENERAL": "Üldine",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Zendesk Konfiguratsioonid pole saadaval",
-    "NEW_ZENDESKCONFIGURATION": "Uus Zendesk Konfiguratsioon",
-    "ADD_ZENDESKCONFIGURATION": "Lisa Zendesk Konfiguratsioon",
-    "EDIT_ZENDESKCONFIGURATION": "Redigeeri Zendesk Konfiguratsiooni",
-    "DELETE_ZENDESKCONFIGURATION": "Kustuta Zendesk Konfiguratsioon",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Salesforce Konfiguratsioonid pole saadaval",
-    "NEW_SALESFORCECONFIGURATION": "Uus Salesforce Konfiguratsioon",
-    "ADD_SALESFORCECONFIGURATION": "Lisa Salesforce Konfiguratsioon",
-    "EDIT_SALESFORCECONFIGURATION": "Redigeeri Salesforce Konfiguratsiooni",
-    "DELETE_SALESFORCECONFIGURATION": "Kustuta Salesforce Konfiguratsioon",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "SugarCRM Konfiguratsioonid pole saadaval",
-    "NEW_SUGARCRMCONFIGURATION": "Uus SugarCRM Konfiguratsioon",
-    "ADD_SUGARCRMCONFIGURATION": "Lisa SugarCRM Konfiguratsioon",
-    "EDIT_SUGARCRMCONFIGURATION": "Redigeeri SugarCRM Konfiguratsiooni",
-    "DELETE_SUGARCRMCONFIGURATION": "Kustuta SugarCRM Konfiguratsioon",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Freshdesk Konfiguratsioonid pole saadaval",
-    "NEW_FRESHDESKCONFIGURATION": "Uus Freshdesk Konfiguratsioon",
-    "ADD_FRESHDESKCONFIGURATION": "Lisa Freshdesk Konfiguratsioon",
-    "EDIT_FRESHDESKCONFIGURATION": "Redigeeri Freshdesk Konfiguratsiooni",
-    "DELETE_FRESHDESKCONFIGURATION": "Kustuta Freshdesk Konfiguratsioon",
-    "SALESFORCEACCOUNTS": "Salesforce Kontod",
-    "EDIT_SALESFORCEACCOUNT": "Redigeeri Salesforce Kontot",
-    "DELETE_SALESFORCEACCOUNT": "Kustuta Salesforce Konto",
-    "NEW_SALESFORCEACCOUNT": "Uus Salesforce Konto",
-    "ADD_SALESFORCEACCOUNT": "Lisa Salesforce Konto",
-    "CLIENTID": "Kliendi ID",
-    "CLIENTSECRET": "Kliendi Saladus",
-    "SECURITYTOKEN": "Turvalisuse Luba",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "APIKEY": "Api Võti",
-    "FRESHDESKACCOUNTS": "Freshdesk Kontod",
-    "EDIT_FRESHDESKACCOUNT": "Redigeeri Freshdesk Kontot",
-    "DELETE_FRESHDESKACCOUNT": "Kustuta Freshdesk Konto",
-    "NEW_FRESHDESKACCOUNT": "Uus Freshdesk Konto",
-    "ADD_FRESHDESKACCOUNT": "Lisa Freshdesk Konto",
-    "SUGARCRMACCOUNTS": "SugarCRM Kontod",
-    "EDIT_SUGARCRMACCOUNT": "Redigeeri SugarCRM Kontot",
-    "DELETE_SUGARCRMACCOUNT": "Kustuta SugarCRM Konto",
-    "NEW_SUGARCRMACCOUNT": "Uus SugarCRM Konto",
-    "ADD_SUGARCRMACCOUNT": "Lisa SugarCRM Konto",
-    "CONFIGURATIONS": "Konfiguratsioonid",
-    "NO_CONFIGURATION_AVAILABLE": "Konfiguratsioonid pole saadaval",
-    "NEW_CONFIGURATION": "Uus Konfiguratsioon",
-    "ADD_CONFIGURATION": "Lisa Konfiguratsioon",
-    "EDIT_CONFIGURATION": "Redigeeri Konfiguratsiooni",
-    "DELETE_CONFIGURATION": "Kustuta Konfiguratsioon",
-    "SUBJECTS": "Teemad",
-    "DESCRIPTIONS": "Kirjeldused",
-    "FIELDS": "Väljad",
-    "TAGS": "Sildid",
-    "TYPE": "Tüüp",
-    "CONTENT": "Sisu",
-    "EDIT_SUBJECT": "Redigeeri Teemat",
-    "DELETE_SUBJECT": "Kustuta Teema",
-    "NEW_SUBJECT": "Uus Teema",
-    "ADD_SUBJECT": "Lisa Teema",
-    "EDIT_DESCRIPTION": "Redigeeri Kirjeldust",
-    "DELETE_DESCRIPTION": "Kustuta Kirjeldus",
-    "NEW_DESCRIPTION": "Uus Kirjeldus",
-    "ADD_DESCRIPTION": "Lisa Kirjeldus",
-    "EDIT_FIELD": "Redigeeri Väli",
-    "DELETE_FIELD": "Kustuta Väli",
-    "NEW_FIELD": "Uus Väli",
-    "ADD_FIELD": "Lisa Väli",
-    "ADD": "Lisa",
-    "VOICE": "Hääl",
-    "MAIL": "E-post",
-    "CHAT": "Vestlus",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "INBOUND_IN_QUEUE": "Sisenevad Järjekorras",
-    "OUTBOUND_CALL": "Väljuv Kõne",
-    "VALUE": "Väärtus",
-    "FIELD": "Väli",
-    "KEY": "Võti",
-    "CHANNEL": "Kanal",
-    "DELETE": "Kustuta",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "TEST_ZENDESKACCOUNT": "Testi Zendesk Kontot",
-    "TEST_FRESHDESKACCOUNT": "Testi Freshdesk Kontot",
-    "TEST_SUGARCRMACCOUNT": "Testi SugerCRM Kontot",
-    "TEST_SALESFORCEACCOUNT": "Testi Salesforce Kontot",
-    "INTEGRATION_TAB": "Integratsiooni Vahekaart",
-    "NEW_TAB": "Uus Vahekaart",
-    "DESKACCOUNTS": "Desk Kontod",
-    "EDIT_DESKACCOUNT": "Redigeeri Desk Kontot",
-    "TEST_DESKACCOUNT": "Testi Desk Kontot",
-    "DELETE_DESKACCOUNT": "Kustuta Desk Konto",
-    "CONSUMERKEY": "Tarbija Võti",
-    "CONSUMERSECRET": "Tarbija Saladus",
-    "TOKENSECRET": "Loa Saladus",
-    "ADD_DESKACCOUNT": "Lisa Desk Konto",
-    "NEW_DESKACCOUNT": "Uus Desk Konto",
-    "ADD_DESKCONFIGURATION": "Lisa Desk Konfiguratsioon",
-    "NEW_DESKCONFIGURATION": "Uus Desk Konfiguratsioon",
-    "DELETE_DESKCONFIGURATION": "Kustuta Desk Konfiguratsioon",
-    "ZOHOACCOUNTS": "Zoho Kontod",
-    "EDIT_ZOHOACCOUNT": "Redigeeri Zoho Kontot",
-    "TEST_ZOHOACCOUNT": "Testi Zoho Kontot",
-    "DELETE_ZOHOACCOUNT": "Kustuta Zoho Konto",
-    "ADD_ZOHOACCOUNT": "Lisa Zoho Konto",
-    "NEW_ZOHOACCOUNT": "Uus Zoho Konto",
-    "ADD_ZOHOCONFIGURATION": "Lisa Zoho Konfiguratsioon",
-    "NEW_ZOHOCONFIGURATION": "Uus Zoho Konfiguratsioon",
-    "AUTHTOKEN": "Autoriseerimise Luba",
+    "ACCOUNT": "Account",
+    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
+    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
+    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
+    "GENERAL": "General",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
+    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
+    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
+    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
+    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
+    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
+    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
+    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
+    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
+    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
+    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
+    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
+    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
+    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
+    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
+    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
+    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
+    "SALESFORCEACCOUNTS": "Salesforce Accounts",
+    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
+    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
+    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
+    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
+    "CLIENTID": "Client ID",
+    "CLIENTSECRET": "Client Secret",
+    "SECURITYTOKEN": "Security Token",
+    "SEARCH_FOR_ANYONE": "Search",
+    "APIKEY": "Api Key",
+    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
+    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
+    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
+    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
+    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
+    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
+    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
+    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
+    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
+    "CONFIGURATIONS": "Configurations",
+    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
+    "NEW_CONFIGURATION": "New Configuration",
+    "ADD_CONFIGURATION": "Add Configuration",
+    "EDIT_CONFIGURATION": "Edit Configuration",
+    "DELETE_CONFIGURATION": "Delete Configuration",
+    "SUBJECTS": "Subjects",
+    "DESCRIPTIONS": "Descriptions",
+    "FIELDS": "Fields",
+    "TAGS": "Tags",
+    "TYPE": "Type",
+    "CONTENT": "Content",
+    "EDIT_SUBJECT": "Edit Subject",
+    "DELETE_SUBJECT": "Delete Subject",
+    "NEW_SUBJECT": "New Subject",
+    "ADD_SUBJECT": "Add Subject",
+    "EDIT_DESCRIPTION": "Edit Description",
+    "DELETE_DESCRIPTION": "Delete Description",
+    "NEW_DESCRIPTION": "New Description",
+    "ADD_DESCRIPTION": "Add Description",
+    "EDIT_FIELD": "Edit Field",
+    "DELETE_FIELD": "Delete Field",
+    "NEW_FIELD": "New Field",
+    "ADD_FIELD": "Add Field",
+    "ADD": "Add",
+    "VOICE": "Voice",
+    "MAIL": "Email",
+    "CHAT": "Chat",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "INBOUND_IN_QUEUE": "Inbound in Queue",
+    "OUTBOUND_CALL": "Outbound Call",
+    "VALUE": "Value",
+    "FIELD": "Field",
+    "KEY": "Key",
+    "CHANNEL": "Channel",
+    "DELETE": "Delete",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
+    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
+    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
+    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
+    "INTEGRATION_TAB": "Integration Tab",
+    "NEW_TAB": "New Tab",
+    "DESKACCOUNTS": "Desk Accounts",
+    "EDIT_DESKACCOUNT": "Edit Desk Account",
+    "TEST_DESKACCOUNT": "Test Desk Account",
+    "DELETE_DESKACCOUNT": "Delete Desk Account",
+    "CONSUMERKEY": "Consumer Key",
+    "CONSUMERSECRET": "Consumer Secret",
+    "TOKENSECRET": "Token Secret",
+    "ADD_DESKACCOUNT": "Add Desk Account",
+    "NEW_DESKACCOUNT": "New Desk Account",
+    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
+    "NEW_DESKCONFIGURATION": "New Desk Configuration",
+    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
+    "ZOHOACCOUNTS": "Zoho Accounts",
+    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
+    "TEST_ZOHOACCOUNT": "Test Zoho Account",
+    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
+    "ADD_ZOHOACCOUNT": "Add Zoho Account",
+    "NEW_ZOHOACCOUNT": "New Zoho Account",
+    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
+    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
+    "AUTHTOKEN": "Authorization Token",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Kustuta Zoho Konfiguratsioon",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Kontod",
-    "VTIGER_USER_NAME": "vTiger Kasutajanimi",
-    "MODULE_NAME": "vTiger Mooduli Nimi",
-    "ACCESS_KEY": "vTiger Pääsuvõti",
-    "ADD_VTIGERACCOUNT": "Lisa Uus vTiger Konto",
-    "EDIT_VTIGERACCOUNT": "Redigeeri vTiger Kontot",
-    "TEST_VTIGERACCOUNT": "Testi vTiger Kontot",
-    "DELETE_VTIGERACCOUNT": "Kustuta vTiger Konto",
-    "NEW_VTIGERACCOUNT": "Uus vTiger Konto",
-    "NEW_VTIGERCONFIGURATION": "Loo vTiger Konfiguratsioon",
-    "DELETE_VTIGERCONFIGURATION": "Kustuta vTiger Konfiguratsioon",
-    "ADD_VTIGERCONFIGURATION": "Lisa vTiger Konfiguratsioon",
-    "ADD_DYNAMICS365ACCOUNT": "Lisa uus Dynamics365 konto",
-    "ADD_DYNAMICS365CONFIGURATION": "Lisa Dynamics365 konfiguratsioon",
-    "ADD_FRESHSALESACCOUNT": "Lisa värskenduste konto",
-    "ADD_FRESHSALESCONFIGURATION": "Lisa värskenduste konfiguratsioon",
-    "ADD_SERVICENOWACCOUNT": "Lisa uus ServiceNow konto",
-    "ADD_SERVICENOWCONFIGURATION": "Lisa teenuse Now konfiguratsioon",
+    "VTIGERACCOUNTS": "vTiger Accounts",
+    "VTIGER_USER_NAME": "vTiger User Name",
+    "MODULE_NAME": "vTiger Module Name",
+    "ACCESS_KEY": "vTiger Access Key",
+    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
+    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
+    "TEST_VTIGERACCOUNT": "Test vTiger Account",
+    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
+    "NEW_VTIGERACCOUNT": "New vTiger Account",
+    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
+    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
+    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
+    "ADD_DYNAMICS365ACCOUNT": "Lisage uus Dynamics365 konto",
+    "ADD_DYNAMICS365CONFIGURATION": "Lisage Dynamics365 konfiguratsioon",
+    "ADD_FRESHSALESACCOUNT": "Lisage värskenduste konto",
+    "ADD_FRESHSALESCONFIGURATION": "Lisage värskenduste konfiguratsioon",
+    "ADD_SERVICENOWACCOUNT": "Lisage uus ServiceNow konto",
+    "ADD_SERVICENOWCONFIGURATION": "Lisage teenuseNow konfiguratsioon",
     "CASE": "Juhtum",
     "CODE": "Arendaja konsooli kood",
-    "CONTACTS": "Võta ühendust",
-    "DELETE_DYNAMICS365ACCOUNT": "Kustuta Dynamics365 konto",
-    "DELETE_DYNAMICS365CONFIGURATION": "Kustuta Dynamics365 konfiguratsioon",
+    "CONTACTS": "Võtke ühendust",
+    "DELETE_DYNAMICS365ACCOUNT": "Kustutage Dynamics365 konto",
+    "DELETE_DYNAMICS365CONFIGURATION": "Kustutage Dynamics365 konfiguratsioon",
     "DELETE_FRESHSALESACCOUNT": "Kustuta värskenduste konto",
-    "DELETE_FRESHSALESCONFIGURATION": "Kustuta värskenduste konfiguratsioon",
+    "DELETE_FRESHSALESCONFIGURATION": "Kustutage värskenduste konfiguratsioon",
     "DELETE_SERVICENOWACCOUNT": "Kustuta ServiceNow konto",
-    "DELETE_SERVICENOWCONFIGURATION": "Kustuta ServiceNow konfiguratsioon",
+    "DELETE_SERVICENOWCONFIGURATION": "Kustutage teenuseNow konfiguratsioon",
     "DYNAMICS365ACCOUNTS": "Dynamics365 kontod",
-    "EDIT_DYNAMICS365ACCOUNT": "Muuda rakenduse Dynamics365 kontot",
-    "EDIT_FRESHSALESACCOUNT": "Redigeeri Freshsales kontot",
-    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri Freshsales konfiguratsiooni",
-    "EDIT_SERVICENOWACCOUNT": "Redigeeri ServiceNow kontot",
+    "EDIT_DYNAMICS365ACCOUNT": "Muutke rakenduse Dynamics365 kontot",
+    "EDIT_FRESHSALESACCOUNT": "Redigeeri värskenduste kontot",
+    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri värskenduste konfiguratsiooni",
+    "EDIT_SERVICENOWACCOUNT": "Teenuse ServiceNow konto muutmine",
     "EMAIL": "E-post",
-    "FRESHSALESACCOUNTS": "Freshsales kontod",
-    "LEADS": "Vihjed",
+    "FRESHSALESACCOUNTS": "Värske müügi kontod",
+    "LEADS": "Plii",
     "MODULECREATE": "Mooduli loomine",
     "NEW_DYNAMICS365ACCOUNT": "Uus Dynamics365 konto",
-    "NEW_DYNAMICS365CONFIGURATION": "Loo Dynamics365 konfiguratsioon",
-    "NEW_FRESHSALESACCOUNT": "Uus Freshsales konto",
-    "NEW_FRESHSALESCONFIGURATION": "Uus Freshsales konfiguratsioon",
+    "NEW_DYNAMICS365CONFIGURATION": "Looge Dynamics365 konfiguratsioon",
+    "NEW_FRESHSALESACCOUNT": "Uus värskete müügi konto",
+    "NEW_FRESHSALESCONFIGURATION": "Uus värskenduste konfiguratsioon",
     "NEW_SERVICENOWACCOUNT": "Uus ServiceNow konto",
-    "NEW_SERVICENOWCONFIGURATION": "Loo ServiceNow konfiguratsioon",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Freshsales konfiguratsioonid pole saadaval",
+    "NEW_SERVICENOWCONFIGURATION": "Looge teenuseNow konfiguratsioon",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Värske müügi konfiguratsioone pole saadaval",
     "PHONECALL": "Telefonikõne",
-    "REFRESHTOKEN": "Värskenda luba",
+    "REFRESHTOKEN": "Värskenda luba (loodud)",
     "SERVICENOWACCOUNTS": "ServiceNow kontod",
     "TASK": "Ülesanne",
-    "TENANTID": "Rentniku ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testi Dynamics365 kontot",
-    "TEST_FRESHSALESACCOUNT": "Testi Freshsales kontot",
-    "TEST_SERVICENOWACCOUNT": "Testi ServiceNow kontot",
+    "TENANTID": "Üürniku ID",
+    "TEST_DYNAMICS365ACCOUNT": "Testige Dynamics365 kontot",
+    "TEST_FRESHSALESACCOUNT": "Testige värskenduste kontot",
+    "TEST_SERVICENOWACCOUNT": "Test ServiceNow konto testimine",
     "TICKETTYPE": "Pileti tüüp",
     "ZONE": "Tsoon",
     "ADDITIONALSEARCHACCOUNT": "Täiendav otsingukonto",
     "ADDITIONALSEARCHCONTACT": "Täiendav otsingu kontakt",
-    "ADDITIONALSEARCHLEAD": "Täiendav otsinguvihje",
-    "LEADID": "Vihje ID"
+    "ADDITIONALSEARCHLEAD": "Täiendav otsingujuht",
+    "LEADID": "Plii ID",
+    "DYNAMIC365CONTACT": "Võtke ühendust",
+    "DYNAMIC365NOTHING": "Mitte midagi",
+    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
+    "OPENNEWTAB": "Ava uus vaheleht"
   }
 }
index 0aa355b..054f558 100644 (file)
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Klooni Projekti",
-    "NAME": "Nimi",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "DESCRIPTION": "Kirjeldus",
+    "CLONE_PROJECT": "Clone Project",
+    "NAME": "Name",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DESCRIPTION": "Description",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat"
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format"
     },
-    "SAVE": "Salvesta",
-    "PROJECTS": "Projektid",
-    "ADD_PROJECT": "Lisa Projekt",
-    "EDIT_PROJECT": "Redigeeri Projekti",
-    "DELETE_PROJECT": "Kustuta Projekt",
+    "SAVE": "Save",
+    "PROJECTS": "Projects",
+    "ADD_PROJECT": "Add Project",
+    "EDIT_PROJECT": "Edit Project",
+    "DELETE_PROJECT": "Delete Project",
     "JSCRIPTY": "Jscripty",
-    "ID": "ID",
-    "PROJECT": "Projekt",
-    "CREATED_AT": "Loomisaeg",
-    "NEW_PROJECT": "Uus Projekt",
-    "EDIT": "Redigeeri",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "BUILDER": "Koostur",
-    "PREVIEW": "Eelvaade",
-    "OPEN_CONTACT": "Ava Kontakt",
+    "ID": "Id",
+    "PROJECT": "Project",
+    "CREATED_AT": "Created At",
+    "NEW_PROJECT": "New Project",
+    "EDIT": "Edit",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "OPEN_CONTACT": "Open Contact",
     "HELP": {
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "ENABLEUNCOMPLETESAVE": "Luba salvestada agendi sessiooni isegi siis, kui uuring pole lõpetatud",
-      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus katkesta agendi paus automaatselt"
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
+      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus peatage agendi paus automaatselt"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "JSCRIPTYSESSIONS": "Projekti Sessioonid",
-    "SESSIONS": "Sessioonid",
-    "STARTTIME": "Alguse Aeg",
-    "ENDTIME": "Lõpetamise Aeg",
-    "MEMBERNAME": "Liikme Nimi",
-    "CALLERIDNUM": "Helistaja Number",
-    "NO_SESSION_AVAILABLE": "Sessioonid pole saadaval",
-    "SESSION_RESULTS": "Sessiooni Tulemused",
-    "SHOW_QUESTIONS_SESSION": "Kuva Sessiooni Tulemusi",
-    "ANSWERS": "Vastused",
-    "NO_RESULTS_AVAILABLE": "Tulemused pole saadaval",
-    "TOTAL": "Kokku",
-    "ANSWER": "Vastus",
-    "EXPORT_TO_CSV": "Ekspordi CSVsse",
-    "NO_ANSWERS_AVAILABLE": "Vastused pole saadaval",
-    "DELETE_SESSION": "Kustuta Sessioon",
-    "RESET_SESSION": "Lähtesta Sessioon",
-    "YES": "Jah",
-    "NO": "Ei",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Kas soovid sessiooni lähtestada?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "Kõik uuringu vastused lähevad kaotsi!",
-    "ENABLEUNCOMPLETESAVE": "Luba pooleliolev salvestamine",
-    "SUBMIT": "Esita",
-    "PROJECT_NOT_AVAILABLE": "Projekt pole saadaval. Palun võta ühendust administraatoriga",
-    "COMPLETE": "Vii lõpule",
-    "SESSIONS_PROJECT": "Mine Sessioonidesse",
-    "SENDUNPAUSEONSUBMIT": "Saada Käivita esitamisel"
+    "JSCRIPTYSESSIONS": "Project Sessions",
+    "SESSIONS": "Sessions",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MEMBERNAME": "Member Name",
+    "CALLERIDNUM": "Caller Number",
+    "NO_SESSION_AVAILABLE": "No Sessions available",
+    "SESSION_RESULTS": "Session Results",
+    "SHOW_QUESTIONS_SESSION": "Show Session Results",
+    "ANSWERS": "Answers",
+    "NO_RESULTS_AVAILABLE": "No results available",
+    "TOTAL": "Total",
+    "ANSWER": "Answer",
+    "EXPORT_TO_CSV": "Export to CSV",
+    "NO_ANSWERS_AVAILABLE": "No answers available",
+    "DELETE_SESSION": "Delete Session",
+    "RESET_SESSION": "Reset Session",
+    "YES": "Yes",
+    "NO": "No",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
+    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
+    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
+    "SUBMIT": "Submit",
+    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
+    "COMPLETE": "Complete",
+    "SESSIONS_PROJECT": "Go to Sessions",
+    "SENDUNPAUSEONSUBMIT": "Peata esindaja saatmisel"
   },
   "mwForm": {
     "form": {
-      "name": "Pealkiri",
-      "name.placeholder": "Vormi pealkiri",
-      "description": "Kirjeldus"
+      "name": "Title",
+      "name.placeholder": "Form title",
+      "description": "Description"
     },
     "buttons": {
-      "addPage": "Lisa lehekülg",
-      "moveDown": "Liigu alla",
-      "moveUp": "Liigu üles",
-      "removePage": "Eemalda lehekülg",
-      "remove": "Eemalda",
-      "addElement": "Lisa element",
-      "questionReady": "Valmis",
-      "next": "Järgmine",
-      "back": "Tagasi",
-      "submit": "Esita",
-      "begin": "Alusta",
-      "fold": "Voldi",
-      "unfold": "Voldi lahti",
-      "edit": "Redigeeri",
-      "clone": "Klooni",
-      "view": "Vaata"
+      "addPage": "Add page",
+      "moveDown": "Move down",
+      "moveUp": "Move up",
+      "removePage": "Remove page",
+      "remove": "Remove",
+      "addElement": "Add element",
+      "questionReady": "Ready",
+      "next": "Next",
+      "back": "Back",
+      "submit": "Submit",
+      "begin": "Begin",
+      "fold": "Fold",
+      "unfold": "Unfold",
+      "edit": "Edit",
+      "clone": "Clone",
+      "view": "View"
     },
     "page": {
       "tab": {
-        "heading": "Lehekülg {{lehekülg}} {{kõikidest Lehekülgedest}}"
+        "heading": "Page {{page}} of {{allPages}}"
       },
       "elements": {
-        "empty": "Tühi lehekülg"
+        "empty": "Empty page"
       },
-      "pageWithNameCheckbox": "nimetatud",
-      "name": "Lehekülje nimi"
+      "pageWithNameCheckbox": "named",
+      "name": "Page name"
     },
     "pageFlow": {
-      "afterPage": "Pärast lehekülge {{lehekülg}}:",
-      "afterQuestionAnswer": "Mine vastusel põhinevale leheküljele",
-      "goToPage": "Mine leheküljele {{lehekülje number}}",
-      "goToNextPage": "Jätke järgmisel leheküljel",
-      "submitForm": "Esita vorm"
+      "afterPage": "After page {{page}}:",
+      "afterQuestionAnswer": "Go to page based on answer",
+      "goToPage": "Go to page {{page.number}}",
+      "goToNextPage": "Continue to next page",
+      "submitForm": "Submit form"
     },
     "elements": {
-      "question": "Küsimus",
-      "image": "Pilt",
-      "paragraph": "Lõik"
+      "question": "Question",
+      "image": "Image",
+      "paragraph": "Paragraph"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Lühike tekst"
+          "name": "Short text"
         },
         "textarea": {
-          "name": "Pikk tekst"
+          "name": "Long text"
         },
         "radio": {
-          "name": "Raadio"
+          "name": "Radio"
         },
         "select": {
-          "name": "Vali"
+          "name": "Select"
         },
         "checkbox": {
-          "name": "Märkeruudud"
+          "name": "Checkboxes"
         },
         "grid": {
-          "name": "Ruudustik"
+          "name": "Grid"
         },
         "priority": {
-          "name": "Prioriteet"
+          "name": "Priority"
         },
         "division": {
-          "name": "Jaotus"
+          "name": "Division"
         },
         "number": {
           "name": "Number"
         },
         "date": {
-          "name": "Kuupäev"
+          "name": "Date"
         },
         "datetime": {
-          "name": "Kuupäev ja kellaaeg"
+          "name": "Datetime"
         },
         "time": {
-          "name": "Kellaaeg"
+          "name": "Time"
         },
         "email": {
-          "name": "E-post"
+          "name": "Email"
         },
         "range": {
-          "name": "Vahemik"
+          "name": "Range"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Küsimuse tekst",
-      "type": "Küsimuse tüüp",
-      "required": "Nõutud",
+      "text": "Question text",
+      "type": "Question type",
+      "required": "Required",
       "preview": {
-        "text": "Lühivastuse tekst",
-        "textarea": "Pika vastuse tekst",
-        "otherAnswer": "Muu"
+        "text": "Short answer text",
+        "textarea": "Long answer text",
+        "otherAnswer": "Other"
       },
       "division": {
-        "quantity": "Kogus",
-        "unit": "Ühiku sedel",
-        "assignedSumLabel": "Määratud",
-        "fromRequiredLabel": "alates nõutavast"
+        "quantity": "Quantity",
+        "unit": "Unit label",
+        "assignedSumLabel": "Assigned",
+        "fromRequiredLabel": "from required"
       },
       "priority": {
-        "sorted": "Sorditud",
-        "available": "Saadaval",
-        "clickToAddItem": "Kliki üksuse lisamiseks"
+        "sorted": "Sorted",
+        "available": "Available",
+        "clickToAddItem": "Click to add item"
       },
       "grid": {
-        "cellInputType": "Lahtri sisendi tüüp",
+        "cellInputType": "Cell input type",
         "cellInputTypes": {
-          "radio": "Raadio",
-          "checkbox": "Märkeruut",
-          "text": "Tekst",
+          "radio": "Radio",
+          "checkbox": "Checkbox",
+          "text": "Text",
           "number": "Number",
-          "date": "Kuupäev",
-          "time": "Kellaaeg"
+          "date": "Date",
+          "time": "Time"
         },
-        "rowLabel": "Rida {{rida}}",
-        "clickToAddRow": "Kliki rea lisamiseks",
-        "columnLabel": "Veerg {{veerg}}",
-        "clickToAddColumn": "Kliki veeru lisamiseks"
+        "rowLabel": "Row {{row}}",
+        "clickToAddRow": "Click to add row",
+        "columnLabel": "Column {{col}}",
+        "clickToAddColumn": "Click to add column"
       },
       "range": {
-        "from": "Vahemik alates",
-        "to": "kuni"
+        "from": "Range from",
+        "to": "to"
       },
       "number": {
         "min": "Min",
-        "max": "Maks"
+        "max": "Max"
       },
-      "orLabel": "või ",
-      "otherLabel": "Muu: ",
-      "userAnswer": "Kasutaja vastus",
+      "orLabel": "or ",
+      "otherLabel": "Other: ",
+      "userAnswer": "User answer",
       "buttons": {
-        "addOption": "Kliki valiku lisamiseks",
-        "addOther": "Lisa 'Muu'"
+        "addOption": "Click to add option",
+        "addOther": "Add 'Other'"
       }
     },
     "image": {
-      "selectImageButton": "Vali pilt",
-      "caption": "Pildi pealdis"
+      "selectImageButton": "Select image",
+      "caption": "Image caption"
     },
     "paragraph": {
-      "placeholder": "Sisesta lõigu tekst"
+      "placeholder": "Enter paragraph text"
     },
     "confirmationPage": {
-      "title": "Kinnituse lehekülg",
-      "customMessage": "Kohandatud kinnitussõnum",
-      "defaultMessage": "Sinu vastus on salvestatud",
-      "errorMessage": "Viga! Sinu vastust ei salvestatud",
-      "pendingMessage": "Sinu vastust salvestatakse"
+      "title": "Confirmation page",
+      "customMessage": "Custom confirmation message",
+      "defaultMessage": "Your response has been saved",
+      "errorMessage": "Error! Your response has not been saved",
+      "pendingMessage": "Your response is being saved"
     }
   }
 }
index 9c16790..6a860d9 100644 (file)
 {
   "MAIL": {
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi aklla manusteta",
-    "DOWNLOAD": "Laadi alla",
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Laadi alla",
-    "YOU_ARE_REGISTERED_AS_A": "Oled registreeritud kui",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Hääl",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "SEND_AS": "Saada kui",
-    "NEW_MAILSUBSTATUS": "Uus Alamolek",
-    "ADD_MAILSUBSTATUS": "Lisa Alamolek",
-    "MAILSUBSTATUSES": "E-posti Alamolekud",
-    "EDIT_MAILSUBSTATUS": "Redigeeri",
-    "DELETE_MAILSUBSTATUS": "Kustuta",
-    "FONT_FAMILY": "Fondipere",
-    "FONT_SIZE": "Fondi Suurus",
-    "MARK_AS_UNREAD": "Märgi kui lugemata",
-    "ACCEPTED": "Aktsepteeritud",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "MAILCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Salvestatud Vastused pole saadaval",
-    "NEW_MAILCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_MAILCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_MAILCANNEDANSWER": "Redigeeri Salvestatud Vastust",
-    "DELETE_MAILCANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "SHOW_ORIGINAL_MESSAGE": "Kuva originaalsõnum",
-    "PENDING": "Ootel",
-    "SEND_AS_PENDING": "Saada Ootel olekus",
-    "SEND_AND_CLOSE": "Saada ja Sule",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst Salvestatud Vastuse otsimiseks",
-    "SPYINTERACTION": "Spioon",
-    "ADD_NOTE": "Lisa märge",
-    "NOTE": "Märge",
-    "TAGS": "Sildid",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole võrgus",
-    "GOTOREALTIME_MAILQUEUE": "Mine Reaalaja Meili Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent E-maili järjekorda",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava kanal",
-    "FAX": "Faks",
-    "REALTIME": "Reaalaeg",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "ACCOUNTS": "Kontod",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Paus",
-    "LOGGED_IN": "Sisse Logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "TOTAL": "Kokku",
-    "IN": "Sees",
-    "OUT": "Väljas",
-    "IMAP_STATUS": "IMAP Staatus",
-    "SMTP_STATUS": "SMTP Staatus",
-    "DISABLED": "Mitteaktiivne",
-    "CONNECTED": "Ühendatud",
-    "NEVER_VERIFIED": "Pole kunagi Kinnitatud",
-    "ERROR": "Viga",
-    "EDIT_ACCOUNT": "Redigeeri Kontot",
-    "VERIFY_SMTP": "Kinnita SMTP",
-    "VERIFIED": "Kinnitatud",
-    "VERIFYSMTP_MAILACCOUNT": "Kinnita SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
-    "GOTO_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
-    "AUTOREPLY": "Automaatvastus",
-    "SHOW_AUTOREPLY": "Kuva Automaatvastus",
-    "SHOW_DETAILS": "Kuva üksikasjad",
-    "HIDE_DETAILS": "Varja üksikasjad",
-    "TO": "Kellele",
-    "FROM": "Kellelt",
-    "DATE": "Kuupäev",
-    "CC": "Koopia",
-    "REPLY": "Vasta",
-    "REPLY_ALL": "Vasta Kõigile",
-    "FORWARD": "Saada edasi",
-    "SUBJECT": "Teema",
-    "BCC": "Salakoopia",
-    "SEND": "Saada",
-    "ATTACHMENT": "Manus",
-    "ATTACHMENTS": "Manused",
-    "NAME": "Nimi",
-    "MAILQUEUES": "E-maili Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
+    "DOWNLOAD": "Download",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "SEND_AS": "Send as",
+    "NEW_MAILSUBSTATUS": "New Sub Status",
+    "ADD_MAILSUBSTATUS": "Add Sub Status",
+    "MAILSUBSTATUSES": "Email Sub Statuses",
+    "EDIT_MAILSUBSTATUS": "Edit",
+    "DELETE_MAILSUBSTATUS": "Delete",
+    "FONT_FAMILY": "Font Family",
+    "FONT_SIZE": "Font Size",
+    "MARK_AS_UNREAD": "Mark as unread",
+    "ACCEPTED": "Accepted",
+    "CANNEDANSWERS": "Canned Answers",
+    "MAILCANNEDANSWERS": "Canned Answers",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_MAILCANNEDANSWER": "New Canned Answer",
+    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
+    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
+    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
+    "SHOW_ORIGINAL_MESSAGE": "Show original message",
+    "PENDING": "Pending",
+    "SEND_AS_PENDING": "Send as Pending",
+    "SEND_AND_CLOSE": "Send and Close",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "SPYINTERACTION": "Spy",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "TAGS": "Tags",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add agent to Email queue",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open channel",
+    "FAX": "Fax",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "ACCOUNTS": "Accounts",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGGED_IN": "Logged In",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "IMAP_STATUS": "IMAP Status",
+    "SMTP_STATUS": "SMTP Status",
+    "DISABLED": "Disabled",
+    "CONNECTED": "Connected",
+    "NEVER_VERIFIED": "Never Verified",
+    "ERROR": "Error",
+    "EDIT_ACCOUNT": "Edit Account",
+    "VERIFY_SMTP": "Verify SMTP",
+    "VERIFIED": "Verified",
+    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
+    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "SHOW_AUTOREPLY": "Show Auto Reply",
+    "SHOW_DETAILS": "Show details",
+    "HIDE_DETAILS": "Hide details",
+    "TO": "To",
+    "FROM": "From",
+    "DATE": "Date",
+    "CC": "Cc",
+    "REPLY": "Reply",
+    "REPLY_ALL": "Reply All",
+    "FORWARD": "Forward",
+    "SUBJECT": "Subject",
+    "BCC": "Bcc",
+    "SEND": "Send",
+    "ATTACHMENT": "Attachment",
+    "ATTACHMENTS": "Attachments",
+    "NAME": "Name",
+    "MAILQUEUES": "Email Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "FONT_SIZE_REQUIRED": "Kohustuslik Väli",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "EMAIL_ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "EMAIL_ADDRESS_MUST_VALID": "Vale formaat",
-      "HOST_REQUIRED": "Kohustuslik Väli",
-      "USERNAME_REQUIRED": "Kohustuslik Väli",
-      "PORT_REQUIRED": "Kohustuslik Väli",
-      "CONNTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AUTHTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "PASSWORD_REQUIRED": "Kohustuslik Väli",
-      "SERVICE_REQUIRED": "Kohustuslik Väli",
-      "IMAP_HOST_REQUIRED": "Kohustuslik Väli",
-      "IMAP_PORT_REQUIRED": "Kohustuslik Väli",
-      "SMTP_HOST_REQUIRED": "Kohustuslik Väli",
-      "SMTP_PORT_REQUIRED": "Kohustuslik Väli",
-      "CONFIRM_NOT_MATCH": "Sisestatud parool ei ühti",
-      "KEY_MAX_LENGTH": "Võtme maksimaalne pikkus peab võrduma {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "FONT_SIZE_REQUIRED": "Mandatory Field",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
+      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
+      "HOST_REQUIRED": "Mandatory Field",
+      "USERNAME_REQUIRED": "Mandatory Field",
+      "PORT_REQUIRED": "Mandatory Field",
+      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
+      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory Field",
+      "SERVICE_REQUIRED": "Mandatory Field",
+      "IMAP_HOST_REQUIRED": "Mandatory Field",
+      "IMAP_PORT_REQUIRED": "Mandatory Field",
+      "SMTP_HOST_REQUIRED": "Mandatory Field",
+      "SMTP_PORT_REQUIRED": "Mandatory Field",
+      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
+      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "REPLY_TYPE_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_MAILQUEUE": "Lisa E-maili Järjekord",
-    "EDIT_MAILQUEUE": "Redigeeri E-maili Järjekorda",
-    "DELETE_MAILQUEUE": "Kustuta E-maili Järjekord",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "SAVE": "Salvesta",
-    "MAILACCOUNTS": "E-maili Kontod",
-    "EMAIL_ADDRESS": "E-maili Aadress",
-    "ADD_MAILACCOUNT": "Lisa E-maili Konto",
-    "EDIT_MAILACCOUNT": "Redigeeri E-maili Konto",
-    "DELETE_MAILACCOUNT": "Kustuta E-maili Kontod",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "Veebihaak",
-    "ACTIONS": "Tegevused",
-    "OTHERS": "Teised",
-    "LIST": "Loend",
-    "TEMPLATE": "Mall",
-    "FIDELITY": "Kvaliteet",
-    "SERVICE": "Teenus",
-    "CREATED_AT": "Loomisaeg",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetud",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "WHITELABEL": "Valge Sedel",
-    "SIGNATURE": "Allkiri",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_MAILQUEUE": "Add Email Queue",
+    "EDIT_MAILQUEUE": "Edit Email Queue",
+    "DELETE_MAILQUEUE": "Delete Email Queue",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "SAVE": "Save",
+    "MAILACCOUNTS": "Email Accounts",
+    "EMAIL_ADDRESS": "Email Address",
+    "ADD_MAILACCOUNT": "Add Email Account",
+    "EDIT_MAILACCOUNT": "Edit Email Account",
+    "DELETE_MAILACCOUNT": "Delete Email Accounts",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "OTHERS": "Others",
+    "LIST": "List",
+    "TEMPLATE": "Template",
+    "FIDELITY": "Fidelity",
+    "SERVICE": "Service",
+    "CREATED_AT": "Created At",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "WHITELABEL": "White Label",
+    "SIGNATURE": "Signature",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Kasutajanimi",
+    "USERNAME": "Username",
     "PORT": "Port",
-    "MAILBOX": "Postkast",
-    "FILTER": "Filtreerimine",
-    "CONNTIMEOUT": "Ühenduse Aegumine [sec]",
-    "AUTHTIMEOUT": "Autentimise Aegumine [sec]",
-    "DELETE": "Kustuta E-mail Serverist",
+    "MAILBOX": "Mailbox",
+    "FILTER": "Filter",
+    "CONNTIMEOUT": "Connection Timeout [sec]",
+    "AUTHTIMEOUT": "Authentication Timeout [sec]",
+    "DELETE": "Delete Email From Server",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Küsitlemine",
+    "POLLING": "Polling",
     "SMTP": "SMTP",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "BACK": "Tagasi",
-    "MAIL": "E-mail",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "PASSWORD": "Parool",
-    "NO_MAILDISPOSITION_AVAILABLE": "E-maili Kasutusi pole saadaval",
-    "ADD_MAILDISPOSITION": "Lisa E-maili Kasutus",
-    "NEW_MAILDISPOSITION": "Uus E-maili Kasutus",
-    "EDIT_MAILDISPOSITION": "Redigeeri E-maili Kasutust",
-    "DELETE_MAILDISPOSITION": "Kustuta E-maili Kasutus",
-    "MAILDISPOSITIONS": "E-maili Kasutused",
-    "NEW_MAILQUEUE": "Uus E-maili Järjekord",
-    "NEW_MAILACCOUNT": "Uus E-maili Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "MAIL": "Email",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "PASSWORD": "Password",
+    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
+    "ADD_MAILDISPOSITION": "Add Email Disposition",
+    "NEW_MAILDISPOSITION": "New Email Disposition",
+    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
+    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
+    "MAILDISPOSITIONS": "Email Dispositions",
+    "NEW_MAILQUEUE": "New Email Queue",
+    "NEW_MAILACCOUNT": "New Email Account",
+    "NO_AVAILABLE_INFO": "No availables info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
     "HELP": {
-      "FONT_FAMILY": "Vaikimisi Fondipere",
-      "FONT_SIZE": "Vaikimisi Fondi Suurus",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "USERNAME": "Kasutajanimi autentimise jaoks",
-      "PASSWORD": "Parool autentimise jaoks",
-      "SECURE": "Kui tõene, kasutab ühendus TLSi serveriga ühendamisel",
-      "MARK_AS_UNREAD": "Luba/Keela agendil märkida suhtluse viimane lause kui lugemata",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "FONT_FAMILY": "Default Font Family",
+      "FONT_SIZE": "Default Font Size",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "USERNAME": "Username used for authentication",
+      "PASSWORD": "Password used for authentication",
+      "SECURE": "If true, the connection will use TLS when connecting to server",
+      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
       "CLOUD_PROVIDER": "Autentimiseks kasutatakse pilvepakkujat"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "TEAMADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
-    "AGENTADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
+    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
+    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "DISPOSITION": "Kasutamine",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_CLOSE": "Edit Close",
+    "DISPOSITION": "Disposition",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Redigeeri GotoIf",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Tõene Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Redigeeri GotoP",
-    "PRIORITY": "Prioriteet",
+    "EDIT_GOTOP": "Edit GotoP",
+    "PRIORITY": "Priority",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "VALUE": "Väärtus",
-    "QUEUE": "Järjekord",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "INTERACTIONS": "Suhtlused",
-    "STARTEDAT": "Algusaeg",
-    "CONTACT": "Kontakt",
-    "CLOSEDAT": "Sulgemisaeg",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "ACTIVE": "Aktiivne",
-    "SECURE": "Turvaline",
-    "AUTHENTICATION": "Autentimine",
+    "EDIT_NOOP": "Edit Noop",
+    "VALUE": "Value",
+    "QUEUE": "Queue",
+    "EDIT_QUEUE": "Edit Queue",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "CONTACT": "Contact",
+    "CLOSEDAT": "Closed At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "ACTIVE": "Active",
+    "SECURE": "Secure",
+    "AUTHENTICATION": "Authentication",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "SELECT_STATUS": "Vali Staatus",
-    "OPENED": "Avatud",
-    "CLOSED": "Suletud",
-    "ALL": "Kõik",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "OPEN": "Ava",
-    "KEY": "Võti",
-    "SMTPSERVICE": "SMTP Teenus",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTSADD_QUEUE": "Lisa agendid E-maili Järjekorda",
-    "INFO": "Teave",
-    "INTERACTIONS_MAILACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_MAILACCOUNT": "Lisa Agent E-maili Järjekorda",
-    "ADVANCED": "Täpsem",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "SELECT_STATUS": "Select Status",
+    "OPENED": "Open",
+    "CLOSED": "Closed",
+    "ALL": "All",
+    "SELECT_ACCOUNT": "Select Account",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "OPEN": "Open",
+    "KEY": "Key",
+    "SMTPSERVICE": "SMTP Service",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTSADD_QUEUE": "Add agents to Email Queue",
+    "INFO": "Info",
+    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
+    "ADVANCED": "Täpsemad",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "REPLY_TYPE": "Vastamise tüüp",
+    "REPLY_TYPE": "Vasta tüüp",
     "CLOUD_PROVIDER": "Pilvepakkuja",
     "CREDENTIALS": "Mandaat",
-    "CUSTOM": "Kohandatud"
+    "CUSTOM": "Kohandatud",
+    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
   }
 }
index 779913f..e80fbe2 100644 (file)
@@ -1,51 +1,51 @@
 {
   "MARKETPLACE": {
-    "MARKETPLACE": "Rakenduse Tsoon",
-    "PLUGINS": "Lisandmoodulid",
-    "BACK": "Tagasi",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Ära vali midagi",
-    "NAME": "Nimi",
-    "DESCRIPTION": "Kirjeldus",
-    "ACTIVE": "Aktiivne",
-    "TYPE": "Tüüp",
-    "ICON": "Ikoon",
-    "ADMINURL": "Admini url",
-    "AGENTURL": "Agendi url",
-    "SCRIPTNAME": "Skripti nimi",
-    "SCRIPTPATH": "Skripti tee",
-    "SIDEBAR": "Küljeriba",
-    "VERSION": "Versioon",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "MORE": "Rohkem",
-    "INSTALL_PLUGIN": "Installi lisandmoodul",
-    "EDIT_PLUGIN": "Redigeeri lisandmoodulit",
-    "STOP_PLUGIN": "Peata lisandmoodul",
-    "RESTART_PLUGIN": "Taaskäivita lisandmoodul",
-    "DOWNLOAD_PLUGIN": "Laadi alla lisandmoodul",
-    "UNINSTALL_PLUGIN": "Desinstalli lisandmoodul",
-    "DELETE_PLUGIN": "Eemalda lisandmoodul",
-    "CANCEL": "Tühista",
-    "FINISH": "Lõpeta",
-    "DELETE": "Kustuta",
-    "SAVE": "Salvesta",
-    "INSTALLING": "Installimine",
-    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
-    "DROP_TO_UPLOAD_MESSAGE": "Kukuta oma fail üleslaadimiseks. Ainult ZIP - Maks. 2MB",
-    "UPLOAD_PLUGIN": "Laadi üles lisandmoodul",
-    "UPLOADING": "Üleslaadimine",
-    "CREATED_AT": "Loomisaeg",
-    "GENERAL": "Üldine",
-    "SETTINGS": "Sätted",
-    "EDITOR": "Redaktor",
+    "MARKETPLACE": "App Zone",
+    "PLUGINS": "Plugins",
+    "BACK": "Back",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select none",
+    "NAME": "Name",
+    "DESCRIPTION": "Description",
+    "ACTIVE": "Active",
+    "TYPE": "Type",
+    "ICON": "Icon",
+    "ADMINURL": "Admin url",
+    "AGENTURL": "Agent url",
+    "SCRIPTNAME": "Script name",
+    "SCRIPTPATH": "Script path",
+    "SIDEBAR": "Sidebar",
+    "VERSION": "Version",
+    "NO_AVAILABLE_INFO": "No available info",
+    "MORE": "More",
+    "INSTALL_PLUGIN": "Install plugin",
+    "EDIT_PLUGIN": "Edit plugin",
+    "STOP_PLUGIN": "Stop plugin",
+    "RESTART_PLUGIN": "Restart plugin",
+    "DOWNLOAD_PLUGIN": "Download plugin",
+    "UNINSTALL_PLUGIN": "Uninstall plugin",
+    "DELETE_PLUGIN": "Remove plugin",
+    "CANCEL": "Cancel",
+    "FINISH": "Finish",
+    "DELETE": "Delete",
+    "SAVE": "Save",
+    "INSTALLING": "Installing",
+    "DROP_TO_UPLOAD": "Drop To Upload",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "UPLOAD_PLUGIN": "Upload plugin",
+    "UPLOADING": "Uploading",
+    "CREATED_AT": "Created at",
+    "GENERAL": "General",
+    "SETTINGS": "Settings",
+    "EDITOR": "Editor",
     "ERRORS": {
-      "URL_REQUIRED": "Kohustuslik väli"
+      "URL_REQUIRED": "Mandatory field"
     },
     "HELP": {},
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of"
   }
 }
index db6abd5..96861de 100644 (file)
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "CUTDIGIT": "Lõika Numbrid",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Juhuslik Väljuva Helistaja ID Number",
-    "CLONE_IVRCAMPAIGN": "Klooni Kampaaniat",
-    "CLONE_QUEUECAMPAIGN": "Klooni Järjekorra Kampaaniat",
-    "ABANDONEDCALLS": "Tagasi lükatud Järjekorra Kõned",
-    "HOPPERWIDGET": "Kokkuvõte",
-    "RESETLIST_IVRCAMPAIGN": "Lähtesta Loendid",
-    "RESETLIST_QUEUECAMPAIGN": "Lähtesta Loendid",
-    "RESET": "Lähtesta",
-    "RESETLIST": "Lähtesta Loendid",
-    "SELECTALL": "Vali Kõik",
-    "UNSELECTALL": "Ära Vali Kõiki",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "TIMEOUT": "Aegumine",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projekti Eelvaade",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt Pärast Eelvaadet",
-    "RUNIFHANGUPAGENT": "Käivita Square Projekt Pärast, isegi kui agent katkestab kõne",
-    "CALLYSQUAREPROJECT2": "Cally Square Projekt Pärast Järjekorda",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "PARTIALPAUSE": "Osaline Paus",
-    "ALL": "Kõik",
-    "IDLE": "Jõude",
-    "TIMER": "Taimer",
-    "MOVE_HOPPERFINAL": "Taasta kontakt",
-    "RESTORECONTACTS": "Taasta Kontaktid",
-    "NO_SUCH_NUMBER": "Sellist numbrit pole olemas",
-    "DIALORDERBYSCHEDULEDAT": "Telli Planeeritud aja alusel",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "CUTDIGIT": "Cut Digits",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
+    "CLONE_IVRCAMPAIGN": "Clone Campaign",
+    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
+    "ABANDONEDCALLS": "Abandoned Queue Calls",
+    "HOPPERWIDGET": "Summary",
+    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
+    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
+    "RESET": "Reset",
+    "RESETLIST": "Reset Lists",
+    "SELECTALL": "Select All",
+    "UNSELECTALL": "Un-Select All",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TIMEOUT": "Timeout",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
+    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
+    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "PARTIALPAUSE": "Parital Pause",
+    "ALL": "All",
+    "IDLE": "Idle",
+    "TIMER": "Timer",
+    "MOVE_HOPPERFINAL": "Restore contact",
+    "RESTORECONTACTS": "Restore Contacts",
+    "NO_SUCH_NUMBER": "No Such Number",
+    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Kutsu tagasi Agent",
-    "DIALRECALLINQUEUE": "Kutsu tagasi Järjekorda",
-    "DIALRECALLMETIMEOUT": "Kutsu tagasi Minu Aegumine [min]",
-    "RECALLME": "Kutsu tagasi Mind",
-    "RECALLFAILEDTIMEOUT": "Tagasikutsumine Nurjus",
-    "PREVIEW_CAMPAIGN": "Kuva Kampaania Eelvaade",
-    "PREVIEW_CAMPAIGNS": "Kuva Kampaaniate Eelvaade",
-    "AMD": "Asterisk Automaatvastaja Tuvastamine (AMD)",
-    "AMDTOTALANALYSISTIME": "Analüüsi Aeg Kokku",
+    "RECALLAGENT": "Recall Agent",
+    "DIALRECALLINQUEUE": "Recall In Queue",
+    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
+    "RECALLME": "Recall Me",
+    "RECALLFAILEDTIMEOUT": "Recall Failed",
+    "PREVIEW_CAMPAIGN": "Preview Campaigns",
+    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
+    "AMD": "Asterisk Answering Machine Detection (AMD)",
+    "AMDTOTALANALYSISTIME": "Total Analysis Time",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Esialgne Vaikus",
-    "AMDGREETING": "Tervitus",
-    "AMDAFTERGREETINGSILENCE": "Vaikus pärast Tervitust",
-    "AMDSILENCETHRESHOLD": "Vaikuse Lävi",
-    "AMDMINWORDLENGTH": "Min Sõna Pikkus",
-    "AMDBETWEENWORDSSILENCE": "Vaikus Sõnade Vahel",
-    "AMDMAXIMUMWORDLENGTH": "Maksimaalne Sõna Pikkus",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne Sõnade Arv",
-    "GOTO_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
-    "GOTO_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
-    "GOTOREALTIME_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
-    "LOGOUT": "Logi välja",
-    "EDIT_CAMPAIGN": "Redigeeri Kampaaniat",
-    "LIMITED": "Piiratud",
-    "IVR_CAMPAIGNS": "IVR Kampaaniad",
+    "AMDINITIALSILENCE": "Initial Silence",
+    "AMDGREETING": "Greeting",
+    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
+    "AMDSILENCETHRESHOLD": "Silence Threshold",
+    "AMDMINWORDLENGTH": "Min Word Length",
+    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
+    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
+    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
+    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
+    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
+    "LOGOUT": "Logout",
+    "EDIT_CAMPAIGN": "Edit Campaign",
+    "LIMITED": "Limited",
+    "IVR_CAMPAIGNS": "IVR Campaigns",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Järjekorra Kampaaniad",
-    "IVRCAMPAIGNS": "IVR Kampaaniad",
-    "MANAGED": "Hallatud",
-    "AVAILABLE_CONTACTS_FINISHED": "Vabad kontaktid lõpetatud",
-    "HISTORY": "Ajalugu",
-    "SCHEDULEDAT": "Planeeritud ajaks",
-    "HOPPERBLACKS": "Hopperi Must nimekiri",
-    "NO_HOPPERBLACK_AVAILABLE": "Üksused pole saadaval",
-    "HOPPERFINALS": "Hopperi Finaal",
-    "NO_HOPPERFINAL_AVAILABLE": "Üksused pole saadaval",
-    "HOPPERHISTORIES": "Kõneajalugu",
-    "NO_HOPPERHISTORY_AVAILABLE": "Üksused pole saadaval",
-    "DELETE_HOPPERHISTORY": "Kustuta",
-    "DELETE_HOPPERFINAL": "Kustuta",
-    "CONTACTID": "Kontakti ID",
-    "STARTTIME": "Algusaeg",
-    "RESPONSETIME": "Vastamise Aeg",
-    "ENDTIME": "Lõpetamise Aeg",
-    "STATUS": "Staatus",
+    "QUEUECAMPAIGNS": "Queue Campaigns",
+    "IVRCAMPAIGNS": "IVR Campaigns",
+    "MANAGED": "Managed",
+    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
+    "HISTORY": "History",
+    "SCHEDULEDAT": "Scheduled At",
+    "HOPPERBLACKS": "Hopper Blacklist",
+    "NO_HOPPERBLACK_AVAILABLE": "No items available",
+    "HOPPERFINALS": "Hopper Final",
+    "NO_HOPPERFINAL_AVAILABLE": "No items available",
+    "HOPPERHISTORIES": "Call history",
+    "NO_HOPPERHISTORY_AVAILABLE": "No items available",
+    "DELETE_HOPPERHISTORY": "Delete",
+    "DELETE_HOPPERFINAL": "Delete",
+    "CONTACTID": "Contact ID",
+    "STARTTIME": "Start Time",
+    "RESPONSETIME": "Response Time",
+    "ENDTIME": "End Time",
+    "STATUS": "Status",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "Üksused pole saadaval",
-    "EDIT_HOPPER": "Redigeeri Hopper",
-    "DELETE_HOPPER": "Kustuta Hopper",
-    "FINAL": "Finaal",
-    "BLACKLIST": "Must nimekiri",
-    "NAME": "Nimi",
-    "VOICEQUEUES": "Hääle Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
-    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
+    "NO_HOPPER_AVAILABLE": "No items available",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_HOPPER": "Delete Hopper",
+    "FINAL": "Final",
+    "BLACKLIST": "Blacklist",
+    "NAME": "Name",
+    "VOICEQUEUES": "Voice Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Queue",
+    "DELETE_VOICEQUEUE": "Delete Voice Queue",
     "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strateegia",
-    "DESCRIPTION": "Kirjeldus",
-    "INTERVAL": "Aja Intervall",
-    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
-    "NEW_QUEUECAMPAIGN": "UUs Järjekorra Kampaania",
-    "ACTIVE": "Aktiivne",
-    "METHOD": "Meetod",
-    "POWERLEVEL": "Võimsuse Tase",
-    "DROPRATE": "Kukuta Määr",
-    "AGENTBUSYFACTOR": "Agendi Hõivatuse Faktor",
-    "PREDICTIVEOPTIMIZATION": "Ennustatav Optimeerimine",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Ennustatava Optimeerimise Protsent",
-    "PREDICTIVEINTERVAL": "Ennustatav Intervall",
-    "ADD_QUEUECAMPAIGN": "Lisa Järjekorra Kampaania",
-    "CAMPAIGN": "Kampaania",
-    "MAXCONCURRENTCALLS": "Maks Samaaegsed Kõned",
-    "CONCURRENTCALLS": "Maks Samaaegsed Kõned",
-    "ORIGINATE": "Päritolu",
-    "ORIGINATECALLERIDNAME": "Helistaja ID Number",
-    "ORIGINATECALLERIDNUMBER": "Helistaja ID Number",
-    "ORIGINATETIMEOUT": "Päritolu Aegumine",
-    "QUEUEOPTIONS": "Järjekorra Valikud",
-    "QUEUETIMEOUT": "Järjekorra Aegumine",
-    "CALLYSQUAREPROJECT": "Cally Square Projekt",
-    "RETRYANDFREQUENCY": "Katseta uuesti Sätteid",
-    "GLOBAL": "Üldine",
-    "GLOBALMAXRETRY": "Maks Uusi Katseid",
-    "CONGESTION": "Ummik",
-    "CONGESTIONMAXRETRY": "Maks Uusi Katseid",
-    "CONGESTIONRETRYTIME": "Uue Katse Aeg [min]",
-    "BUSYMAXRETRY": "Maks Uusi Katseid",
-    "BUSYRETRYTIME": "Uue Katse Aeg [min]",
-    "NOANSWER": "Vastus puudub",
-    "NOANSWERMAXRETRY": "Maks Uusi Katseid",
-    "NOANSWERRETRYTIME": "Uue Katse Aeg [min]",
-    "QUEUE_PARAMS": "Järjekorra Parameetrid",
-    "ORIGINATED": "Päritolu",
-    "MESSAGE": "Sõnum",
-    "DROPPED": "Kukutatud",
-    "CREATED_AT": "Loomisaeg",
+    "STRATEGY": "Strategy",
+    "DESCRIPTION": "Description",
+    "INTERVAL": "Time Interval",
+    "ADD_VOICEQUEUE": "Add Voice Queue",
+    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
+    "ACTIVE": "Active",
+    "METHOD": "Method",
+    "POWERLEVEL": "Power Level",
+    "DROPRATE": "Drop Rate",
+    "AGENTBUSYFACTOR": "Agent Busy Factor",
+    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
+    "PREDICTIVEINTERVAL": "Predictive Interval",
+    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
+    "CAMPAIGN": "Campaign",
+    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
+    "CONCURRENTCALLS": "Max Concurrent Calls",
+    "ORIGINATE": "Originate",
+    "ORIGINATECALLERIDNAME": "Caller ID Name",
+    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
+    "ORIGINATETIMEOUT": "Originate Timeout",
+    "QUEUEOPTIONS": "Queue Options",
+    "QUEUETIMEOUT": "Queue Timeout",
+    "CALLYSQUAREPROJECT": "Cally Square Project",
+    "RETRYANDFREQUENCY": "Retry Settings",
+    "GLOBAL": "Global",
+    "GLOBALMAXRETRY": "Max Retries",
+    "CONGESTION": "Congestion",
+    "CONGESTIONMAXRETRY": "Max Retries",
+    "CONGESTIONRETRYTIME": "Retry Time [min]",
+    "BUSYMAXRETRY": "Max Retries",
+    "BUSYRETRYTIME": "Retry Time [min]",
+    "NOANSWER": "No Answer",
+    "NOANSWERMAXRETRY": "Max Retries",
+    "NOANSWERRETRYTIME": "Retry Time [min]",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "ORIGINATED": "Originated",
+    "MESSAGE": "Message",
+    "DROPPED": "Dropped",
+    "CREATED_AT": "Created At",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Kohandatud Avaldus."
+      "CUSTOM_APPLICATION": "(*) - Custom application."
     },
     "ERRORS": {
-      "CUTDIGIT_REQUIRED": "Kohustuslik väli",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Kohustuslik väli",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "INTERVAL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "PREFIX_MUST_VALID_PATTERN": "Vale formaat",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
-      "CONTEXT_REQUIRED": "Kohustuslik väli",
-      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "MAILBOX_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Parool ei ühti",
-      "TIMEZONE_REQUIRED": "Kohustuslik väli",
-      "PREFIX_REQUIRED": "Kohustuslik väli",
-      "OPTIONS_REQUIRED": "Kohustuslik väli",
-      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EXTENSION_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "GLOBALMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "CONGESTIONMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "CONGESTIONRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "BUSYMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "BUSYRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "NOANSWERMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "NOANSWERRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "QUEUETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "ORIGINATETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "GLOBALINTERVAL_REQUIRED": "Kohustuslik väli",
-      "MAXCONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
-      "CONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CUTDIGIT_REQUIRED": "Mandatory field",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
+      "INTERVAL_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
+      "NAME_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "PHONENUMBER_REQUIRED": "Mandatory field",
+      "CONTEXT_REQUIRED": "Mandatory field",
+      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "MAILBOX_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TIMEZONE_REQUIRED": "Mandatory field",
+      "PREFIX_REQUIRED": "Mandatory field",
+      "OPTIONS_REQUIRED": "Mandatory field",
+      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EXTENSION_REQUIRED": "Mandatory field",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
+      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
+      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
+      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
+      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
+      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
+      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
+      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
+      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
+      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
+      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
+      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "CALLYSQUAREPROJECT_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne",
+      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli"
     },
-    "GENERAL": "Üldine",
-    "AGENTTIMEOUT": "Agendi Aegumine",
-    "MAXLENGTH": "Maksimaalne Pikkus",
-    "RETRY": "Uus Katse",
-    "WRAPUPTIME": "Lõpetamise Aeg",
-    "WEIGHT": "Kaal",
-    "JOINWHENEMPTY": "Ühine, kui on tühi",
-    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
+    "GENERAL": "General",
+    "AGENTTIMEOUT": "Agent Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Kui on suurem kui 0, genereerib see juhuslikult Väljuva Helistaja ID numbri vastavad viimased numbrimärgid",
-      "TIMEOUT": "Sekundite arv agendile järjekorras helistamiseks",
-      "CALLYSQUAREPROJECTPREVIEW": "Valides IVR projekti suunab helistaja kõne IVRi, kui agent vastab (IVR suunatakse agendile)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Valides IVR projekti suunab helistaja kõne IVRi, kui klient katkestab kõne või pole kättesaadav (IVR suunatakse agendile)",
-      "RUNIFHANGUPAGENT": "Käivita Cally Square Projekt Pärast, isegi kui Agent katkestab kõne",
-      "CALLYSQUAREPROJECT2": "Valides IVR projekti suunab helistaja kõne IVRi pärast Järjekorda (kui Järjekord lõppeb aegumisega)",
-      "DIALORDERBYSCHEDULEDAT": "Hangi kontaktid hopperist (kasvav või kahanev).",
-      "DIALRECALLINQUEUE": "Ajasta kõne uuesti agentide jaoks Järjekorras",
-      "DIALRECALLMETIMEOUT": "Ajaintervall (minutites) Minu kehtivuse perioodi Tagasi kutsumiseks",
-      "PRIORITY": "Prioriteet loendis",
-      "AMDMAXIMUMWORDLENGTH": "Ühe häälütluse maksimaalne lubatud kestus",
-      "AMDMINWORDLENGTH": "Minimaalne Hääle kestus, mida arvestatakse sõnana",
-      "AMDSILENCETHRESHOLD": "Kui keskmine müratase näidises ei saavuta seda väärtust, skaalal 0 kuni 32767, siis loeme seda vaikuseks",
-      "AMDTOTALANALYSISTIME": "Maksimaalne algoritmile lubatud aeg otsustamaks, kas heli kuulub INIMESELE või MASINALE",
-      "AMDAFTERGREETINGSILENCE": "Vaikus pärast tervituse tuvastamist. Kui on ületatud, siis tulemuseks on INIMESE tuvastamine",
-      "AMDGREETING": "Maksimaalne tervituse pikkus.  Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
-      "AMDINITIALSILENCE": "Makimaalne vaikuse kestus enne tervitust. Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
-      "AMDACTIVE": "Aktiveeri või desaktiveeri automaatvastaja tuvastuskatsed",
-      "AMDBETWEENWORDSSILENCE": "Minimaalne vaikuse kestus  pärast sõna, et hinnata heli, mis järgneb uue sõnana",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne sõnade arv tervituses. Kui on SAAVUTATUD, siis tuvastatakse kui MASIN",
-      "CALLYSQUAREPROJECT": "Valides IVR projekti suunab helistaja kõne IVRi enne Järjekorda",
-      "PREFIX": "Telefoni eesliide",
-      "ACTIVE": "Aktiivne",
-      "AGENTTIMEOUT": "Kui kaua (sekundites), et helistada agendi seadmele",
-      "MAXLENGTH": "Maksimaalne helistajate arv, kes on Järjekorras ootele lubatud(0=piiramatu)",
-      "RETRY": "Kui kaua (sekundites) oodata enne helistamist järgmisele agendile Järjekorras, kui agendi ajalõpp on läbi saanud",
-      "WRAPUPTIME": "Kui kaua (sekundites) hoida agenti hõivatuna Järjekorras pärast kõne lõpetamist",
-      "WEIGHT": "Kasutatakse prioriteedi määramiseks, kui agent on seotud enam kui ühe järjekorraga",
-      "JOINWHENEMPTY": "Kui helistaja lisatakse järjekorda, kui ühtegi agenti pole saadaval",
-      "LEAVEWHENEMPTY": "Kui helistaja eemaldatakse järjekorrast, kui ühtegi agenti pole saadaval",
-      "ANNOUNCEFREQUENCY": "Kui sageli teatada helistaja positsiooni ja/või ooteaega järjekorras (0=keela)",
-      "MINANNOUNCEFREQUENCY": "Minimaalne teavituse sagedus (sobib, kui helistaja positsioon muutub sageli)",
-      "PERIODICANNOUNCEFREQUENCY": "Perioodiliste helistajale edastatavate teavituste sagedus",
-      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui oled määranud teavituspositsiooniks 'limiit' või 'rohkem'",
-      "AFTERCALLWORKDURATION": "Pausi pikkus, mille käivitab Pärast Kõnet Töö Suvand ",
-      "MEMBERDELAY": "Sisestab viivituse enne helistaja ja agendi ühendamist Järjekorras",
-      "MUSICONHOLD": "Määrab muusika klassi konkreetses järjekorras kasutamiseks",
-      "ANNOUNCETOAGENT": "Mängib ette teatise kõnele vastavale agendile (näiteks, et teda teavitada, millisest Järjekorrast helistaja tuleb)",
-      "RANDOMPERIODICANNOUNCE": "Kui jah, siis mängib ette perioodilised teatised juhuslikus järjekorras",
-      "ANNOUNCEHOLDTIME": "Mängib ette hinnangulise ooteaja koos perioodiliste teatistega (Jah/Ei/Üks kord)",
-      "ANNOUNCECALLERPOSITION": "Kasutatakse määramaks, kas tuleb teatada helistaja Järjekorra positsioonist: Ei=mitte kungi; Jah=alati; Piirang=ainult siis, kui see jääb teate-positsiooni-piirangu poolt määratud piirangu raamesse",
-      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teatamist agendile Järjekorras enne ühendamist",
-      "PERIODICANNOUNCE": "Ette mängitavate perioodiliste teavituste komplekt (järjestatud)",
-      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi ooteaeg. Määramata=teavitust pole",
-      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=\9cOlete nüüd järjekorras esimene. Määramata=teavitust pole",
-      "THEREAREANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=areā€¯. Määramata=teavitust pole",
-      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=kõnede ootamine. Määramata=teavitust pole",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Jooksev hinnanguline ooteaeg on. Määramata=teavitust pole",
-      "MINUTESANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
-      "MINUTEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
-      "SECONDSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=sekundit. Määramata=teavitust pole",
-      "THANKYOUANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Täname Teid kannatlikkuse eest. Määramata=teavitust pole",
-      "AFTERCALLWORK": "Kui lubatud, pannakse agent pausile pärast kõne lõpetamist",
-      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kellel ei õnnestu kõnele vastata. Kui lubatud, põhjustab agendi pausile panemist kõikides järjekordades, kuhu ta kuulub",
-      "RINGINUSE": "Kasutusel staatusega liikmetele kõnede saatmise vältimiseks/lubamiseks",
-      "TIMEOUTRESTART": "Kui jah, lähtestab see agendi jaoks vastamise lõpuaja, kui HÕIVATUD või UMMIKUS staatus saadakse kanalist",
-      "MONITORFORMAT": "Täpsustab faili formaadi salvestamisel kasutamiseks. Kui monitori formaat pole aktiivne, kõnesid ei salvestata",
-      "CONTEXT": "Lubab helistajal järjekorrast lahkuda vajutades üks kord DTMF numbrumärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püüab see numbrimärk sobituda täpsustatud konteksti, ja valimisplaani täitmine jätkub seal",
-      "SETINTERFACEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga ja järjekorrast lahkumist  (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Luba kõne salvestamine",
-      "VOICEMAIL_CONTEXT": "Suhtelise laienduse kontekst",
-      "METHOD": "Väljuva valija meetod",
-      "POWERLEVEL": "Kontaktide arv helistamiseks mistahes vaba agendi jaoks",
-      "PREDICTIVEOPTIMIZATION": "Tegur optimeerimiseks ennustavas algoritmis",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Protsendimäär, mis põhineb valitud ennustaval optimeerimise teguril",
-      "PREDICTIVEINTERVAL": "Aja intervall (minutites), mida ennustav algoritm kasutab arvutamakkõnede kogust tulemuse genereerimiseks ja optimeerimiseks",
-      "MAXCONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks (0=piiramatu)",
-      "CONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks ",
-      "ORIGINATECALLERIDNAME": "Väljuva Helistaja ID Nimi",
-      "ORIGINATECALLERIDNUMBER": "Väljuva Helistaja ID Nimi",
-      "ORIGINATETIMEOUT": "Aeg (sekundites) väljuva kõne jaoks ühenduse saamiseks, vastasel juhul määratakse staatuseks Vastamata",
-      "QUEUETIMEOUT": "Aeg (sekundites), mille jooksul kõne ootab järjekorras enne katkestamist (Min 1 and Maks 999)",
-      "GLOBALMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks",
-      "CONGESTIONMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus ummiku tõttu",
-      "CONGESTIONRETRYTIME": "Aeg minutites enne katset helistada uuesti ummiku tõttu nurjunud kontaktile",
-      "BUSYMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus hõivatuse tõttu",
-      "BUSYRETRYTIME": "Aeg minutites enne katset helistada uuesti hõivatuse tõttu nurjunud kontaktile",
-      "NOANSWERMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus vastamata kõne tõttu",
-      "NOANSWERRETRYTIME": "Aeg minutites enne katset helistada uuesti vastamata kõne tõttu nurjunud kontaktile",
-      "GLOBALINTERVAL": "Üldine aja intervall, mille jooksul on valijal lubatud kontaktidele helistada. Me keeldume vastutusest: ole selle faili muutmisel tähelepanelik, kuna võid sattuda vastuollu automaatvalijaga seotud valdkonna riiklike seaduste ja määrustega",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
+      "TIMEOUT": "Number of seconds to ring agent in queue",
+      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
+      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
+      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
+      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
+      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
+      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
+      "PRIORITY": "Priority in the list",
+      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
+      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
+      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
+      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
+      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
+      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
+      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
+      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
+      "PREFIX": "Telephone prefix",
+      "ACTIVE": "Active",
+      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
+      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
+      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
+      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
+      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
+      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
+      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
+      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
+      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
+      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+      "MUSICONHOLD": "Sets the music class to use for a particular queue",
+      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
+      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
+      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
+      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
+      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "RECORDING": "Enable call recording",
+      "VOICEMAIL_CONTEXT": "The context of the relative extension",
+      "METHOD": "Outbound dialer method",
+      "POWERLEVEL": "Number of contacts to call for any available agent",
+      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
+      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
+      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
+      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
+      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
+      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
+      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
+      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
+      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
+      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
+      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
+      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
+      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
+      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
+      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
+      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
       "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "PREDICTIVEMAXTHRESHOLD": "Kui ajaaknas saadaolevate agensite protsent ületab ennustamise ajal saadaolevate agendite protsent konfigureeritud maksimaalset piiri, arvutab ennustaja ennustuse uuesti.",
       "PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti.",
-      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kƵne ei Ćµnnestunud loobuda",
-      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaƵnnestunud kontaktile loobumise tõttu",
+      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne ei õnnestunud loobuda",
+      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile loobumise tõttu",
       "AGENTREJECTMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne nurjus agendi tagasilükkamise korral",
       "AGENTREJECTRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile agendi tagasilükkamise tõttu",
       "DROPMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne katkestamine ebaõnnestus",
-      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõµnnestunud kontaktile",
+      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõnnestunud kontaktile",
       "MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
       "MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
       "NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
       "PREVIEW_RECALL_ME_REMINDER": "Kui see on lubatud, saadab süsteem agentile n minutit teatise (vastavalt üldseadetes määratud ajaintervallile) enne minu tagasikutsumise loomist",
       "TIMEZONE": "Määrake ajavöönd"
     },
-    "MUSICONHOLD": "Muusika Ootel",
-    "ANNOUNCETOAGENT": "Teavitus Agendile",
-    "ANNOUNCEMENTS": "Teavitused",
-    "ADVANCEDPREVIEW": "Täpsem",
-    "ADVANCED": "Täpsem",
-    "ADVANCE": "Täpsem",
-    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
-    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
-    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavituse Sadegdus",
-    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
-    "ANNOUNCEHOLDTIME": "Teavituse Ooteaeg",
-    "ANNOUNCECALLERPOSITION": "Teavituse Helistaja Positsioon",
-    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Limiit",
-    "REPORTHOLDTIMEAGENT": "Teata Agendi Ooteaeg",
-    "PERIODICANNOUNCE": "Perioodiline Teavitus",
-    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
-    "YOUARENEXTANNOUNCE": "'Oled järgmine' Teavitus",
-    "THEREAREANNOUNCE": "'There are' Teavitus",
-    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise Ooteaja Teavitus",
-    "MINUTESANNOUNCE": "Minutite Teavitus",
-    "MINUTEANNOUNCE": "Minutite Teavitus",
-    "SECONDSANNOUNCE": "Sekundite Teavitus",
-    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
-    "AUTOPAUSE": "Automaatne Paus",
-    "AFTERCALLWORK": "Kõnejärgne Töö",
-    "AFTERCALLWORKDURATION": "Kõnejärgse Töö Kestus",
-    "RINGINUSE": "Kasutusel Helin",
-    "MEMBERDELAY": "Liikme Viivitus",
-    "TIMEOUTRESTART": "Lõpuaja Lähtestamine",
-    "MONITORFORMAT": "Salvestuse Formaat",
-    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujaid",
-    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
-    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
-    "CONTEXT": "Kontekst",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "INBOUNDROUTES": "Sisenevad Protsessid",
-    "PHONENUMBER": "Telefoninumber",
-    "ADD_INBOUNDROUTE": "Lisa Sisenev Protsess",
-    "EDIT_INBOUNDROUTE": "Redigeeri Sisenevat Protsessi",
-    "DELETE_INBOUNDROUTE": "Kustuta Sisenev Protsess",
-    "ACTIONS": "Tegevused",
-    "OUTBOUNDROUTES": "Väljuvad Protsessid",
-    "DESTINATIONPATTERN": "Sihtkoha Muster",
-    "ADD_OUTBOUNDROUTE": "Lisa Väljuv Protsess",
-    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljuvat Protsessi",
-    "DELETE_OUTBOUNDROUTE": "Kustuta Väljuv Protsess",
-    "CUTDIGITS": "Lõika Numbrimärke",
-    "RECORDING": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestamise formaat",
-    "INTERNALROUTES": "Sisemised Protsessid",
-    "ADD_INTERNALROUTE": "Lisa Sisemine Protsess",
-    "EDIT_INTERNALROUTE": "Redigeeri Sisemist Protsessi",
-    "DELETE_INTERNALROUTE": "Kustuta Sisemine Protsess",
-    "CONTEXTS": "Kontekstid",
-    "ADD_CONTEXT": "Lisa Kontekst",
-    "EDIT_CONTEXT": "Redigeeri Konteksti",
-    "DELETE_CONTEXT": "Kustuta Kontekst",
-    "VOICEMAILS": "Kõnepost",
-    "ADD_VOICEMAIL": "Lisa Kõnepost",
-    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
-    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
-    "FULLNAME": "Täisnimi",
-    "EMAIL": "E-post",
-    "MAILBOX": "Postkast",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TIMEZONE": "Ajavöönd",
-    "ATTACH": "Manusta",
-    "ENVELOPE": "Ümbrik",
-    "DELETE": "Kustuta",
-    "EMAILBODY": "E-kirja Sisu",
-    "EMAILSUBJECT": "E-kirja Teema",
-    "MAXSECONDS": "Maks Sekundeid",
-    "MAXMESSAGES": "Maks Sõnumeid",
-    "MESSAGES": "Sõnumid",
-    "SORT": "Sordi",
-    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
-    "MUSICONHOLDS": "Ootemuusika",
-    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
-    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
-    "DIRECTORY": "Kaust",
-    "AUDIOFILES": "Audiofailid",
-    "RECORDINGS": "Salvestused",
+    "MUSICONHOLD": "Music On Hold",
+    "ANNOUNCETOAGENT": "Announce To Agent",
+    "ANNOUNCEMENTS": "Announcements",
+    "ADVANCEDPREVIEW": "Advanced",
+    "ADVANCED": "Advanced",
+    "ADVANCE": "Advanced",
+    "ANNOUNCEFREQUENCY": "Announce Frequency",
+    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
+    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
+    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
+    "ANNOUNCEHOLDTIME": "Announce Hold Time",
+    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
+    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
+    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
+    "PERIODICANNOUNCE": "Periodic Announce",
+    "HOLDTIMEANNOUNCE": "Hold Time Announce",
+    "YOUARENEXTANNOUNCE": "'You are next' Announce",
+    "THEREAREANNOUNCE": "'There are' Announce",
+    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
+    "MINUTESANNOUNCE": "Minutes Announce",
+    "MINUTEANNOUNCE": "Minute Announce",
+    "SECONDSANNOUNCE": "Seconds Announce",
+    "THANKYOUANNOUNCE": "'Thank You' Announce",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "After Call Work",
+    "AFTERCALLWORKDURATION": "After Call Work Duration",
+    "RINGINUSE": "Ring In Use",
+    "MEMBERDELAY": "Member Delay",
+    "TIMEOUTRESTART": "Timeout Restart",
+    "MONITORFORMAT": "Recording Format",
+    "SETINTERFACEVARIABLES": "Set Interface Variables",
+    "SETQUEUEVARIABLES": "Set Queue Variables",
+    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
+    "CONTEXT": "Context",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "INBOUNDROUTES": "Inbound Routes",
+    "PHONENUMBER": "Phone Number",
+    "ADD_INBOUNDROUTE": "Add Inbound Route",
+    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
+    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
+    "ACTIONS": "Actions",
+    "OUTBOUNDROUTES": "Outbound Routes",
+    "DESTINATIONPATTERN": "Destination Pattern",
+    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
+    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
+    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
+    "CUTDIGITS": "Cut Digits",
+    "RECORDING": "Recording",
+    "RECORDINGFORMAT": "Recording format",
+    "INTERNALROUTES": "Internal Routes",
+    "ADD_INTERNALROUTE": "Add Internal Route",
+    "EDIT_INTERNALROUTE": "Edit Internal Route",
+    "DELETE_INTERNALROUTE": "Delete Internal Route",
+    "CONTEXTS": "Contexts",
+    "ADD_CONTEXT": "Add Context",
+    "EDIT_CONTEXT": "Edit Context",
+    "DELETE_CONTEXT": "Delete Context",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Add Voicemail",
+    "EDIT_VOICEMAIL": "Edit Voicemail",
+    "DELETE_VOICEMAIL": "Delete Voicemail",
+    "FULLNAME": "Full Name",
+    "EMAIL": "Email",
+    "MAILBOX": "Mailbox",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TIMEZONE": "Timezone",
+    "ATTACH": "Attach",
+    "ENVELOPE": "Envelope",
+    "DELETE": "Delete",
+    "EMAILBODY": "Email Body",
+    "EMAILSUBJECT": "Email Subject",
+    "MAXSECONDS": "Max Seconds",
+    "MAXMESSAGES": "Max Messages",
+    "MESSAGES": "Messages",
+    "SORT": "Sort",
+    "ADD_MUSICONHOLD": "Add Music On Hold",
+    "MUSICONHOLDS": "Music On Hold",
+    "EDIT_MUSICONHOLD": "Edit Music On Hold",
+    "DELETE_MUSICONHOLD": "Delete Music On Hold",
+    "DIRECTORY": "Directory",
+    "AUDIOFILES": "Audio Files",
+    "RECORDINGS": "Recordings",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Eesliide",
-    "OPTIONS": "Suvandid",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Lisa ChanSpy",
-    "EDIT_CHANSPY": "Redigeeri ChanSpy",
-    "DELETE_CHANSPY": "Kustuta ChanSpy",
-    "AGENTS": "Agendid",
-    "TELEPHONES": "Telefonis",
-    "QUEUES": "Järjekorrad",
-    "QUEUE_CALLS": "Järjekorra Kõned",
-    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
-    "ABANDONED_CALLS": "Tagasilükatud Kõned",
-    "OUTBOUND_CALLS": "Väljuvad Kõned",
+    "ADD_CHANSPY": "Add ChanSpy",
+    "EDIT_CHANSPY": "Edit ChanSpy",
+    "DELETE_CHANSPY": "Delete ChanSpy",
+    "AGENTS": "Agents",
+    "TELEPHONES": "Telephones",
+    "QUEUES": "Queues",
+    "QUEUE_CALLS": "Queue Calls",
+    "QUEUE_PARAMETERS": "Queue Parameters",
+    "ABANDONED_CALLS": "Abandoned Calls",
+    "OUTBOUND_CALLS": "Outbound Calls",
     "AGI": "AGI",
-    "DIAL": "Valimine",
-    "INTERNALDIAL": "Sisemine Valimine",
-    "EXTERNALDIAL": "Väline Valimine",
-    "RINGGROUP": "Helista Grupile",
-    "PLAYBACK": "Taasesitus",
-    "QUEUE": "Järjekord",
-    "SET": "Määra",
-    "VOICEMAIL": "Kõnepost",
+    "DIAL": "Dial",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
     "GOTO": "GoTo",
-    "HANGUP": "Lõpeta kõne",
-    "CUSTOM": "Kohandatus",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Resurss",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Redigeeri Rakendust",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_APP": "Kustuta Rakendus",
-    "INTERVALS": "Intervallid",
-    "USER": "Kasutaja",
-    "TRUNK": "Magistraal",
-    "PHONE": "Telefon",
-    "AUDIO_FILES": "Audiofailid",
-    "ANNOUNCE_OVERRIDES": "Teavita Tühistustest",
-    "MACRO": "Makro",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Reegel",
-    "POSITION": "Positsioon",
-    "ANSWER": "Vastus",
-    "VALUE": "Väärtus",
-    "MAILBOX@CONTEXT": "Postkast@Kontekst",
-    "EXTENSION": "Laiendus",
-    "PRIORITY": "Prioriteet",
-    "HANGUP_CAUSE": "Katkestamise Põhjus",
-    "OUTBOUNDDIAL": "Väljuv Valimine",
-    "CALLER_ID": "Helistaja ID",
-    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
-    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
-    "VOICERECORDINGS": "Häälsalvestused",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Extension",
+    "PRIORITY": "Priority",
+    "HANGUP_CAUSE": "Hangup Cause",
+    "OUTBOUNDDIAL": "Outbound Dial",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "No messages available",
+    "NO_SOUND_AVAILABLE": "No sounds available",
+    "VOICERECORDINGS": "Voice Recordings",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Hääl",
-    "REALTIME": "Reaalaeg",
-    "ID": "ID",
-    "VOICEMAIL_CONTEXT": "Kontekst",
-    "NO_MOHSOUND_AVAILABLE": "Ootemuusika pole saadaval",
-    "FILE": "Fail",
-    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
-    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
-    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
-    "UNIQUEID": "Unikaalne ID",
+    "VOICE": "Voice",
+    "REALTIME": "Realtime",
+    "ID": "Id",
+    "VOICEMAIL_CONTEXT": "Context",
+    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
+    "FILE": "File",
+    "ADD_MOHSOUND": "Add Music On Hold sound",
+    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
+    "DELETE_MOHSOUND": "Delete Music On Hold sound",
+    "UNIQUEID": "Unique ID",
     "AGENT": "Agent",
-    "TYPE": "Tüüp",
-    "RATING": "Hinnang",
+    "TYPE": "Type",
+    "RATING": "Rating",
     "AUDIO": "Audio",
-    "DATE": "Kuupäev",
-    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
-    "NEW_INBOUNDROUTE": "Uus Sisenev Protsess",
-    "NEW_OUTBOUNDROUTE": "Uus Väljuv Protsess",
-    "NEW_INTERNALROUTE": "Uus Sisenev Protsess",
-    "NEW_CONTEXT": "Uus Kontekst",
-    "NEW_VOICEMAIL": "Uus Kõnepost",
-    "NEW_MUSICONHOLD": "Uus Ootemuusika",
-    "NEW_CHANSPY": "Uus ChanSpy",
-    "PENALTY": "Trahv",
-    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "EDIT_DIAL": "Redigeeri Valimist",
-    "EDIT_AGI": "Redigeeri AGI",
-    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
-    "EDIT_EXTERNALDIAL": "Redigeeri Välist Valimist",
-    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
-    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_SET": "Redigeeri Häälestamist",
-    "EDIT_GOTO": "Redigeeri GoTo",
-    "EDIT_HANGUP": "Redigeeri Hangup",
-    "EDIT_CUSTOM": "Redigeeri Kohandatud",
-    "DURATION": "Kestus",
-    "RECEIVED_AT": "Kättesaamise Aeg",
-    "YES": "Jah",
-    "NO": "Ei",
-    "HANGUPCAUSE_1": "1 = Määramata number",
-    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
-    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
-    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühenduses)",
-    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
-    "HANGUPCAUSE_22": "22 = Number muutunud",
-    "HANGUPCAUSE_27": "27 = Sihtkoht vale",
-    "HANGUPCAUSE_38": "38 = Võrk vale",
-    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
-    "RANDOM": "Juhuslik",
-    "ALPHABETICAL": "Tähestikuline",
-    "NO_APPS_AVAILABLE": "Rakendused pole saadaval",
-    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
-    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "LAGGED": "Viivitatud",
-    "REACHABLE": "Kättesaadav",
-    "UNREACHABLE": "Kättesaamatu",
-    "UNKNOWN": "Teadmata",
-    "NOT_INUSE": "Pole kasutusel",
-    "INUSE": "Kasutusel",
-    "BUSY": "Hõivatud",
-    "INVALID": "Kehtetu",
-    "UNAVAILABLE": "Kättesaamatu",
-    "RINGING": "Heliseb",
-    "ONHOLD": "Ootel",
-    "RING": "Heliseb",
-    "UP": "Üles",
+    "DATE": "Date",
+    "NEW_VOICEQUEUE": "New Voice Queue",
+    "NEW_INBOUNDROUTE": "New Inbound Route",
+    "NEW_OUTBOUNDROUTE": "New Outbound Route",
+    "NEW_INTERNALROUTE": "New Internal Route",
+    "NEW_CONTEXT": "New Context",
+    "NEW_VOICEMAIL": "New Voicemail",
+    "NEW_MUSICONHOLD": "New Music On Hold",
+    "NEW_CHANSPY": "New ChanSpy",
+    "PENALTY": "Penalty",
+    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
+    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
+    "EDIT_DIAL": "Edit Dial",
+    "EDIT_AGI": "Edit AGI",
+    "EDIT_INTERNALDIAL": "Edit Internal Dial",
+    "EDIT_EXTERNALDIAL": "Edit External Dial",
+    "EDIT_RINGGROUP": "Edit Ring Group",
+    "EDIT_PLAYBACK": "Edit Playback",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_SET": "Edit Set",
+    "EDIT_GOTO": "Edit GoTo",
+    "EDIT_HANGUP": "Edit Hangup",
+    "EDIT_CUSTOM": "Edit Custom",
+    "DURATION": "Duration",
+    "RECEIVED_AT": "Received At",
+    "YES": "Yes",
+    "NO": "No",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
+    "RANDOM": "Random",
+    "ALPHABETICAL": "Alphabetical",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Delete Voice Recording",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "LAGGED": "Lagged",
+    "REACHABLE": "Reachable",
+    "UNREACHABLE": "Unreachable",
+    "UNKNOWN": "Unknown",
+    "NOT_INUSE": "Not in use",
+    "INUSE": "In Use",
+    "BUSY": "Busy",
+    "INVALID": "Invalid",
+    "UNAVAILABLE": "Unavailable",
+    "RINGING": "Ringing",
+    "ONHOLD": "On Hold",
+    "RING": "Ring",
+    "UP": "Up",
     "INFO": "Info",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "LOGGED_IN": "Sisse logitud (SIP ühendusega)",
-    "PAUSED": "Pausil",
-    "DISPOSITION": "Kasutamine",
-    "WAITING": "Ootamine",
-    "TALKING": "Rääkimine",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No registry",
+    "LOGGED_IN": "Logged in (SIP connected)",
+    "PAUSED": "Paused",
+    "DISPOSITION": "Disposition",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
     "DID": "DID",
-    "CALLER": "Helistaja",
-    "TOTAL": "Kokku",
-    "ANSWERED": "Vastatud",
-    "ABANDONED": "Katkestatud",
-    "UNMANAGED": "Haldamata",
-    "REDIRECT_TO_NUMBER": "Suuna numbrile",
-    "REDIRECT_TO_AGENT": "Suuna agendile",
-    "CLOSING": "Sulgemine",
-    "AVG_HOLD_TIME": "Avg Ooteage",
-    "AVG_DURATION": "Avg Kestus",
-    "AVG_BILLABLE": "Avg Arveldatav",
-    "SOURCE": "Allikas",
-    "DESTINATION": "Sihtkoht",
-    "REJECTED": "Tagasi lükatud",
-    "FAILED": "Nurjunud",
-    "CALLED": "Helistatud",
-    "CONNECTED": "Ühendatud",
-    "NO_RATING": "Hinnang puudub",
-    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
-    "APPLICATION_NAME": "Rakenduse Nimi",
-    "ARGUMENTS": "Argumendid",
-    "EDIT_QUEUECAMPAIGN": "Redigeeri Kampaaniat",
-    "LISTADD_QUEUECAMPAIGN": "Lisa Loend",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Lisa Must nimekiri",
-    "TEAMADD_QUEUECAMPAIGN": "Lisa Tiim",
-    "AGENTADD_QUEUECAMPAIGN": "Lisa Agent",
-    "DELETE_QUEUECAMPAIGN": "Kustuta Kampaania",
-    "DELETE_IVRCAMPAIGN": "Kustuta Kampaania",
-    "EDIT_IVRCAMPAIGN": "Redigeeri Kampaaniat",
-    "NEW_IVRCAMPAIGN": "Uus IVR Kampaania",
-    "ADD_IVRCAMPAIGN": "Lisa IVR Kampaania",
-    "LISTADD_IVRCAMPAIGN": "Lisa Loend",
-    "BLACKLISTADD_IVRCAMPAIGN": "Lisa Must nimekiri",
-    "ENABLED": "Lubatud",
-    "READY": "Valmis",
-    "PAUSE": "Paus",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi Paus",
-    "AGENTADD_QUEUE": "Lisa Agent Järjekorra Kampaaniasse",
-    "AGENTSADD_QUEUE": "Lisa Agendid Järjekorra Kampaaniasse",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "ALL_LISTS": "Kõik Nimekirjad",
-    "SELECTED_LISTS": "Valitud Nimekirjad",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "WAITING_FOR_AGENT": "Agendi Ootamine",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "RUNNING": "Jookseb",
-    "TRUNK_IS_NOT_REACHABLE": "Magistraal pole Kättesaadav",
-    "AGENTS_NOT_LOGGED": "Agent pole logitud",
-    "NOT_ACTIVE": "Pole Aktiivne",
-    "IS_DISACTIVED": "Deaktiveeritud",
-    "BACKUPTRUNK": "Varumagistraal",
-    "GLOBALINTERVAL": "Üldine Intervall",
-    "RESCHEDULED_CONTACTS": "Uuesti ajastatud kontaktid",
-    "INTERVAL_IS_OVERTIME": "Intervallist väljas",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Intervallist väljas (Üldine)",
-    "INTERVAL_IS_NULL": "Intervall on Null",
-    "TIMEZONE_UNKNOW": "Ajavöönd Teadmata",
-    "INTERVAL_IS_EMPTY": "Intervall on Tühi",
-    "TOTAL_MANAGED": "Kokku Hallatud",
-    "OPEN": "Avatud",
-    "FRESH": "Värske",
-    "CLOSED": "Suletud",
-    "ALWAYS": "Alati",
-    "NEVER": "Mitte kunagi",
-    "ONLY_IF_OPEN": "Ainult kui Avatud",
-    "CHECKDUPLICATE": "Kontrolli Duplikaati",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "CALLER": "Caller",
+    "TOTAL": "Total",
+    "ANSWERED": "Answered",
+    "ABANDONED": "Abandoned",
+    "UNMANAGED": "Unmanaged",
+    "REDIRECT_TO_NUMBER": "Redirect to a number",
+    "REDIRECT_TO_AGENT": "Redirect to an agent",
+    "CLOSING": "Closing",
+    "AVG_HOLD_TIME": "Avg Hold Time",
+    "AVG_DURATION": "Avg Duration",
+    "AVG_BILLABLE": "Avg Billable",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "REJECTED": "Rejected",
+    "FAILED": "Failed",
+    "CALLED": "Called",
+    "CONNECTED": "Connected",
+    "NO_RATING": "No rating",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "APPLICATION_NAME": "Application Name",
+    "ARGUMENTS": "Arguments",
+    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
+    "LISTADD_QUEUECAMPAIGN": "Add List",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
+    "TEAMADD_QUEUECAMPAIGN": "Add Team",
+    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
+    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
+    "DELETE_IVRCAMPAIGN": "Delete Campaign",
+    "EDIT_IVRCAMPAIGN": "Edit Campaign",
+    "NEW_IVRCAMPAIGN": "New IVR Campaign",
+    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
+    "LISTADD_IVRCAMPAIGN": "Add List",
+    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
+    "ENABLED": "Enabled",
+    "READY": "Ready",
+    "PAUSE": "Pause",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default Pause",
+    "AGENTADD_QUEUE": "Add Agent to queue campaign",
+    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "ALL_LISTS": "All Lists",
+    "SELECTED_LISTS": "Selected Lists",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "WAITING_FOR_AGENT": "Waiting for Agent",
+    "TOTAL_OFFERED": "Total Offered",
+    "RUNNING": "Running",
+    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
+    "AGENTS_NOT_LOGGED": "Agent not logged",
+    "NOT_ACTIVE": "Not Active",
+    "IS_DISACTIVED": "Deactivated",
+    "BACKUPTRUNK": "Backup Trunk",
+    "GLOBALINTERVAL": "Global Interval",
+    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
+    "INTERVAL_IS_OVERTIME": "Out of Interval",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
+    "INTERVAL_IS_NULL": "Interval is Null",
+    "TIMEZONE_UNKNOW": "Timezone Unknow",
+    "INTERVAL_IS_EMPTY": "Interval is Empty",
+    "TOTAL_MANAGED": "Total Managed",
+    "OPEN": "Open",
+    "FRESH": "Fresh",
+    "CLOSED": "Closed",
+    "ALWAYS": "Always",
+    "NEVER": "Never",
+    "ONLY_IF_OPEN": "Only If Open",
+    "CHECKDUPLICATE": "Check Duplicate",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "SMS": "SÕnum",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
     "ANSWERED_CALLS": "Vastatud kõnedele",
     "ANSWERING_MACHINE": "Automaatvastaja",
     "AVG_TALK_TIME": "Keskmine kõneaeg",
     "CURRENT_INTERVAL": "Praegune intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Andmete kogumine progressiivne",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
     "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "ONE_CALL_EVERY": "Üks kõne iga kord",
     "PREDICTIVEMAXTHRESHOLD": "Prognoositav maksimaalne lävi [%]",
     "PREDICTIVE_IS_RUNNING": "Ennustaja töötab",
     "PREVIOUS_INTERVAL": "Eelmine intervall",
     "RECALLINQUEUE": "Tagasikutsumine järjekorras",
-    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõµnede värskendamine",
+    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõnede värskendamine",
     "SCHEDULED_CALLS": "Ajastatud kõned",
-    "SELECT_CAMPAIGN": "Vali kampaania",
-    "SELECT_DATE": "Vali kuupäev",
-    "SELECT_TYPE": "Vali Tüüp",
+    "SELECT_CAMPAIGN": "Valige kampaania",
+    "SELECT_DATE": "Valige kuupäev",
+    "SELECT_TYPE": "Valige Tüüp",
     "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Kuva ennustavat teavet",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "THRESHOLDS": "Künnised",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TOTAL_CALLS": "Kõnesid kokku",
-    "ABANDONEDMAXRETRY": "Maks uued katsed",
+    "ABANDONEDMAXRETRY": "Max proovib uuesti",
     "ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
-    "AGENTREJECT": "Agendi Keeldumine",
-    "AGENTREJECTMAXRETRY": "Maks uued katsed",
+    "AGENTREJECT": "Agent Keeldu",
+    "AGENTREJECTMAXRETRY": "Max proovib uuesti",
     "AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
-    "DROP": "Katkestamine",
-    "DROPMAXRETRY": "Maks uued katsed",
+    "DROP": "Tilk",
+    "DROPMAXRETRY": "Max proovib uuesti",
     "DROPRETRYTIME": "Uuesti proovimise aeg [min]",
-    "MACHINE": "Seade",
-    "MACHINEMAXRETRY": "Maks uued katsed",
+    "MACHINE": "Masin",
+    "MACHINEMAXRETRY": "Max proovib uuesti",
     "MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
     "NOSUCHNUMBER": "Sellist numbrit pole",
-    "NOSUCHNUMBERMAXRETRY": "Maks uued katsed",
+    "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
-    "SECOND_LEVEL_DISPOSITION": "Teise taseme kasutamine",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme kasutamine",
+    "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
+    "ADDITIONALPHONES": "Täiendavad telefonid",
+    "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]",
     "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned",
     "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde"
   }
index c07979f..23ab65b 100644 (file)
@@ -1,97 +1,97 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "ADVANCED": "Täpsem",
-    "PROXY": "Puhver",
-    "TOKEN": "Luba",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "DELETE": "Kustuta",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "OPENCHANNELCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
-    "NEW_OPENCHANNELCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_OPENCHANNELCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Redigeeri",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Kustuta",
-    "DELIVERYREPORTURL": "Kohaletoimetamise Raport URL",
-    "TAGS": "Sildid",
-    "SPYINTERACTION": "Spioon",
-    "NO_AGENT_ONLINE": "Agente pole Võrgus",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Mine Reaalaja Avatud Kanali Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "REALTIME": "Reaalaeg",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastust",
-    "AUTOREPLY": "Automaatvastus",
-    "NAME": "Nimi",
-    "OPENCHANNELQUEUES": "Avatud Kanali Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsing",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "ADVANCED": "Advanced",
+    "PROXY": "Proxy",
+    "TOKEN": "Token",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "DELETE": "Delete",
+    "CANNEDANSWERS": "Canned Answers",
+    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
+    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
+    "DELIVERYREPORTURL": "Delivery Report URL",
+    "TAGS": "Tags",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "REALTIME": "Realtime",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NAME": "Name",
+    "OPENCHANNELQUEUES": "Open Channel Queues",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtus peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "TEXT_REQUIRED": "Välja tekst on kohustuslik",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "REPLYURI_REQUIRED": "Kohustuslik Väli",
-      "REPLYURI_MUST_VALID_URL": "Vale formaat",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "KEY_MAX_LENGTH": "Võti peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "KEY_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "The field text is required",
+      "NAME_REQUIRED": "Mandatory field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "REPLYURI_REQUIRED": "Mandatory field",
+      "REPLYURI_MUST_VALID_URL": "Wrong format",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "CONDITION_REQUIRED": "Mandatory field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "BOTNAME_REQUIRED": "Boti nimi on kohustuslik",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
       "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
-    "STRATEGY": "Strateegia",
+    "STRATEGY": "Strategy",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
-    "PRIORITY": "Prioriteet",
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_OPENCHANNELQUEUE": "Lisa Avatud Kanali Järjekord",
-    "EDIT_OPENCHANNELQUEUE": "Redigeeri Avatud Kanali Järjekorda",
-    "DELETE_OPENCHANNELQUEUE": "Kustuta Avatud Kanali Järjekord",
-    "PENALTY": "Trahv",
-    "TEAMADD_OPENCHANNELQUEUE": "Lisa Tiim Avatud Kanali Järjekorrale",
-    "AGENTADD_OPENCHANNELQUEUE": "Lisa Agent Avatud Kanali Järjekorrale",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "lvesta",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "OPENCHANNELACCOUNTS": "Avatud Kanali Kontod",
-    "MOTIONADDRESS": "Liikuv Aadress",
-    "ADD_OPENCHANNELACCOUNT": "Lisa Avatud Kanali Konto",
-    "EDIT_OPENCHANNELACCOUNT": "Redigeeri Avatud Kanali Kontot",
-    "DELETE_OPENCHANNELACCOUNT": "Kustuta Avatud Kanali Konto",
+    "QUEUE": "Queue",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOIF": "Edit Gotoif",
+    "EDIT_QUEUE": "Edit Queue",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "PRIORITY": "Priority",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
+    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
+    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
+    "PENALTY": "Penalty",
+    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
+    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
+    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
+    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
     "API": "API",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "Veebihaagid",
-    "ACTIONS": "Tegevused",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Lükka tagasi",
-    "REJECTMETHOD": "Lükka tagasi Meetod",
-    "REJECTURL": "Lükka tagasi URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "BACK": "Tagasi",
-    "OPENCHANNEL": "Ava Kanal",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "OPENCHANNELDISPOSITIONS": "Avatud Kanali Kasutused",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Avatud Kanali Kasutused pole saadaval",
-    "NEW_OPENCHANNELDISPOSITION": "Uus Avatud Kanali Kasutus",
-    "ADD_OPENCHANNELDISPOSITION": "Lisa Avatud Kanali Kasutus",
-    "EDIT_OPENCHANNELDISPOSITION": "Redigeeri Avatud Kanali Kasutust",
-    "DELETE_OPENCHANNELDISPOSITION": "Kustuta Avatud Kanali Kasutus",
-    "NEW_OPENCHANNELQUEUE": "Uus Avatud Kanali Järjekord",
-    "NEW_OPENCHANNELACCOUNT": "Uus Avatud Kanali Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "REPLYURI": "Vastuse URL",
-    "RECEIVEURI": "Vastuvõtu URL",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "OPENCHANNEL": "Open Channel",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
+    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
+    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
+    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
+    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
+    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
+    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "REPLYURI": "Reply URL",
+    "RECEIVEURI": "Receive URL",
     "HELP": {
-      "TOKEN": "Lisa see atribuut päringustringina oma Veebiteenuse URLi. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Automaatselt genereeritud API string, mida kasutatakse sõnumite saamiseks Teie avatud kanalis välise rakenduse poolt (kasutades POST meetodit). Kliki Click the lõikelaua nuppu selle kopeerimiseks ",
-      "REPLYURI": "URL, kuhu avatud kanal helistab sõnumit saates või vastates sellele. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "LIST": "Kontakti Halduri Loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele."
+      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
+      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager List used to associate contacts",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele."
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "OPEN": "Ava",
-    "ACCOUNT": "Konto",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "ALL": "Kõik",
-    "SELECT_STATUS": "Vali staatus",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
     "FILTER": "Filter",
-    "FILTERS": "Filtrid",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutus",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "SELECT_ACCOUNT": "Vali konto",
+    "FILTERS": "Filters",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECT_ACCOUNT": "Select an account",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "EDIT_CLOSE": "Redigeeri Sule",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_CLOSE": "Edit Close",
     "INFO": "Info",
-    "KEY": "Võti",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Kättesaamatu",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Pausile",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent Avatud Kanali järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "SMS": "Sõnum",
-    "FAX": "Faks",
-    "AGENTSADD_QUEUE": "Lisa agendid Avatud Kanali järjekorda",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_OPENCHANNELACCOUNT": "Lisa Agent Avatud Kanali Kontole",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "MAPKEY": "Kaardi Võti",
+    "KEY": "Key",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add agent to Open Channel queue",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "FAX": "Fax",
+    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
+    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
+    "SEND": "Send",
+    "TO": "To",
+    "MAPKEY": "Map Key",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "Dialoogivoog",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri Dialogflow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
index 90c89fb..be8be0f 100644 (file)
@@ -1,6 +1,6 @@
 {
   "PLUGINS": {
-    "PLUGINS": "Lisandmoodul",
+    "PLUGINS": "Plugins",
     "ERRORS": {},
     "HELP": {}
   }
index 3fc4dff..054b0d7 100644 (file)
 {
   "SETTINGS": {
-    "MOTIONBARREMEMBERME": "Pea mind meeles",
-    "CHATTIMEOUT": "Vestluse sulgemine suhtluse aegumine",
-    "VIRTUAL": "Vestlus",
-    "VOICE": "Hääl",
-    "SESSIONS": "Sessioonid",
-    "ADDONS": "Lisandmoodul",
-    "REPORT": "Raport",
-    "SPLIT": "Poolita raportit",
-    "SPLITSIZECSV": "Poolita raporti suurust [CSV kirjed]",
-    "SPLITSIZEPDF": "Poolita raporti suurust [PDF kirjed]",
-    "SPLITSIZEXLSX": "Poolita raporti suurust [XLSX kirjed]",
-    "ENABLEEMAILPREVIEW": "Luba E-maili Eelvaade",
+    "MOTIONBARREMEMBERME": "Remember Me",
+    "CHATTIMEOUT": "Chat closing interaction timeout",
+    "VIRTUAL": "Chat",
+    "VOICE": "Voice",
+    "SESSIONS": "Sessions",
+    "ADDONS": "Add-ons",
+    "REPORT": "Report",
+    "SPLIT": "Split report",
+    "SPLITSIZECSV": "Split report size [CSV records]",
+    "SPLITSIZEPDF": "Split report size [PDF records]",
+    "SPLITSIZEXLSX": "Split report size [XLSX records]",
+    "ENABLEEMAILPREVIEW": "Enable Email Preview",
     "JAWS": "Jaws",
-    "MOTIONBAR": "Liikumisriba",
-    "MOTIONBARAUTOUPDATER": "Automaatne Värskendaja",
-    "MOTIONBARAUTOUPDATERURL": "Automaatse Värskendaja URL",
+    "MOTIONBAR": "Motionbar",
+    "MOTIONBARAUTOUPDATER": "Auto Updater",
+    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Häälsalvestuse Krüptimine",
-    "TURNADDR": "TURN Aadress",
-    "TURN_USERNAME": "TURN Kasutajanimi",
-    "TURN_PASSWORD": "TURN Parool",
+    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
+    "TURNADDR": "TURN Address",
+    "TURN_USERNAME": "TURN Username",
+    "TURN_PASSWORD": "TURN Password",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "ENABLED": "Lubatud",
-    "DISABLED": "Keelatud",
-    "UNLIMITED_CHANNELS": "Piiramatud Kanalid",
-    "RELOAD": "Laadi uuesti",
-    "VERIFY": "Kinnita",
-    "INTERFACE": "Liides",
-    "UPDATING": "Värskendamine",
-    "REMOTE_VERSION": "Kaugversioon",
-    "NO_NEW_VERSION_AVAILABLE": "Uut versiooni pole saadaval",
-    "TOP_N_PROCESSES": "Tipp {{väärtus}} protsess",
-    "SYSTEM": "Süsteem",
-    "FILE_SYSTEM": "Faili Süsteem",
-    "PROCESSES": "Protsess",
-    "MOUNT_POINT": "Ühenda",
+    "ENABLED": "Enabled",
+    "DISABLED": "Disabled",
+    "UNLIMITED_CHANNELS": "Unlimited Channels",
+    "RELOAD": "Reload",
+    "VERIFY": "Verify",
+    "INTERFACE": "Interface",
+    "UPDATING": "Updating",
+    "REMOTE_VERSION": "Remote Version",
+    "NO_NEW_VERSION_AVAILABLE": "No new version available",
+    "TOP_N_PROCESSES": "Top {{value}} processes",
+    "SYSTEM": "System",
+    "FILE_SYSTEM": "File System",
+    "PROCESSES": "Processes",
+    "MOUNT_POINT": "Mount",
     "AVG_LOAD": "AVG Load",
-    "TOTAL": "Totaalne",
-    "USED": "Kasutatud",
-    "FREE": "Vaba",
-    "NAME": "Nimi",
-    "STATE": "Olek",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "MESSAGING": "Sõnum",
-    "FAX": "Faks",
-    "OPENCHANNEL": "Avatud Kanal",
-    "AGENTS": "Agendid",
-    "USERS": "Kasutajad",
-    "TELEPHONES": "Telefonid",
-    "STAFF": "Personal",
-    "CHANNELS": "Kanalis",
-    "MODULES": "Moodulid",
-    "CM": "Kontaktide Haldur",
-    "DIALER": "Valija",
+    "TOTAL": "Total",
+    "USED": "Used",
+    "FREE": "Free",
+    "NAME": "Name",
+    "STATE": "State",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "MESSAGING": "Sms",
+    "FAX": "Fax",
+    "OPENCHANNEL": "Open Channel",
+    "AGENTS": "Agents",
+    "USERS": "Users",
+    "TELEPHONES": "Telephones",
+    "STAFF": "Staff",
+    "CHANNELS": "Channels",
+    "MODULES": "Modules",
+    "CM": "Contacts Manager",
+    "DIALER": "Dialer",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Kohandamine",
-    "UPDATE": "Värskenda",
-    "OTHERS": "Teised",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
+    "CUSTOM": "Customization",
+    "UPDATE": "Update",
+    "OTHERS": "Others",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
     "SMTP": "SMTP",
-    "NETWORKS": "Võrgud",
-    "UPDATES": "Värskendused",
-    "LICENSE": "Litsents",
-    "ID": "ID",
-    "MIN_INTERNAL": "Minm Sisemine",
-    "MIN_MAILBOX": "Min Postkast",
-    "INSTALLED_AT": "Installimise aeg",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "EDIT_GENERAL": "Redigeeri Üldine",
-    "SECURE_PASSWORD": "Kindlusta Parool",
+    "NETWORKS": "Networks",
+    "UPDATES": "Updates",
+    "LICENSE": "License",
+    "ID": "Id",
+    "MIN_INTERNAL": "Min Internal",
+    "MIN_MAILBOX": "Min Mailbox",
+    "INSTALLED_AT": "Installed At",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_GENERAL": "Edit General",
+    "SECURE_PASSWORD": "Secure Password",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Vaikimisi Logo",
-    "DEFAULT_LOGIN_LOGO": "Vaikimisi Logini Logo",
-    "WHITELABEL": "Valge Sedel",
-    "DEFAULT_HEADER_WHITELABEL": "Vaikimisi Päis Valge Silt",
-    "HEADER_WHITELABEL": "Päis Valge Silt",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SMTP_SERVICE": "Teenus",
+    "DEFAULT_LOGO": "Default Logo",
+    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
+    "WHITELABEL": "White Label",
+    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
+    "HEADER_WHITELABEL": "Header White Label",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SMTP_SERVICE": "Service",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Kasutajanimi",
-    "DESCRIPTION": "Kirjeldus",
-    "SMTP_PASSWORD": "Parool",
+    "SMTP_USERNAME": "Username",
+    "DESCRIPTION": "Description",
+    "SMTP_PASSWORD": "Password",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Turvaline",
-    "TYPE": "Tüüp",
-    "ADDRESS": "Aadress",
-    "NEW_NETWORK": "Uus Võrk",
-    "ADD_NETWORK": "Lisa Võrk",
+    "SMTP_SECURE": "Secure",
+    "TYPE": "Type",
+    "ADDRESS": "Address",
+    "NEW_NETWORK": "New Network",
+    "ADD_NETWORK": "Add Network",
     "HELP": {
-      "ADDRESS": "Väline (avalik) IP-aadress",
-      "LOCALNETADDRESS": "Kohalik IP-aadress/alamvõrk",
-      "SMTP_SECURE": "Kui tõene, siis serveriga ühendus kasutab TLSi",
-      "SMTP_USERNAME": "Autentimiseks kasutatav Kasutajanimi",
-      "SMTP_PASSWORD": "Autentimiseks kasutatav Parool",
-      "EMAILADDRESS": "Sõnumi päritolu E-maili aadress (kellelt)",
-      "SECURITY_SUITE": "Lubab turvalist parooli formaati, kohustuslik parooli uuendamine pärast esimest sisselogimist ja parooli aegumist 90 päeva pärast",
-      "MOTIONBARREMEMBERME": "Luba/Keela Pea Mind Meeles funktsioon Motion Phonebar sees",
-      "DEFAULTSCREENRECORDINGPATH": "Sisesta Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
-      "LOGINMAILFREQUENCY": "Ära unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
+      "ADDRESS": "External (public) ip address",
+      "LOCALNETADDRESS": "Local ip address/subnet",
+      "SMTP_SECURE": "If true, the connection to the server will use TLS",
+      "SMTP_USERNAME": "Username used for authentication",
+      "SMTP_PASSWORD": "Password used for authentication",
+      "EMAILADDRESS": "The message origin Email address (from)",
+      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
+      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
+      "DEFAULTSCREENRECORDINGPATH": "Sisestage Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
+      "LOGINMAILFREQUENCY": "Ärge unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
       "RTLSUPPORT": "Lubab araabia, pärsia ja heebrea keelte RTL-i toe",
       "PASSWORD": "Parool",
       "USERNAME": "Kasutajanimi",
       "ENFORCE_PASSWORD_HISTORY": "Lubab valideerimise varem kasutatud paroolidega",
       "PASSWORD_HISTORY_LIMIT": "Viimati kontrollimiseks kasutatud unikaalsete paroolide arv",
       "SEARCH_ON_ENTER_KEY": "Alustage otsimist alles pärast seda, kui agent vajutab sisestusklahvi",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas väskendus)",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas värskendus)",
       "PRIVACY_POLICY": "Tärniga asendatavate märkide arv (*) (0 = kõik märgid)",
       "CLIENT_SECRET": "Pärast konfiguratsiooni salvestamist pole saladus enam nähtav. Hoidke seda ohutult, kui soovite seda mujal kasutada.",
       "LIMIT_TABS": "Avatud on maksimaalne arv võimalikke interaktsioonikaarte",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Ajavahemik minutites, enne kui agendile saadetakse teatis, mis teavitab teda eelvaate tagasikutsumise tegemisest"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Vale formaat",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Kohustuslik väli",
-      "ADDRESS_REQUIRED": "Kohustuslik väli",
-      "MIN_INTERNAL_REQUIRED": "Kohustuslik väli",
-      "MIN_MAILBOX_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HEADER_WHITELABEL_REQUIRED": "Kohustuslik väli",
-      "LOCALNETADDRESS_REQUIRED": "Kohustuslik väli",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Vale formaat",
-      "ADDRESS_MUST_VALID_PATTERN": "Vale formaat",
-      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "SMTP_USERNAME_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "SMTP_HOST_REQUIRED": "Kohustuslik väli",
-      "SMTP_PORT_REQUIRED": "Kohustuslik väli",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PAGE_TITLE_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "PLAN_REQUIRED": "Kohustuslik väli",
-      "LICENSE_REQUIRED": "Kohustuslik väli",
+      "CHATTIMEOUT_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
+      "ADDRESS_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_REQUIRED": "Mandatory field",
+      "MIN_MAILBOX_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ACCOUNTNAME_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "SMTP_USERNAME_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "SMTP_HOST_REQUIRED": "Mandatory field",
+      "SMTP_PORT_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PAGE_TITLE_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "PLAN_REQUIRED": "Mandatory field",
+      "LICENSE_REQUIRED": "Mandatory field",
       "ACCESSKEY_REQUIRED": "Kohustuslik väli",
       "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "ALLOWEDLOGINATTEMPTS_REQUIRED": "Kohustuslik väli",
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "WRONG_FORMAT": "Vale formaat"
+      "WRONG_FORMAT": "Vale formaat",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
     },
-    "EDIT_NETWORK": "Redigeeri Võrku",
-    "DELETE_NETWORK": "Kustuta Võrk",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Ühtegi",
-    "EXPIRATION_DATE": "Aegumiskuupäev",
-    "REQUEST_LICENSE": "Päri Litsentsi",
-    "EMAIL": "E-mail",
-    "SEND": "Saada",
-    "PLAN": "Plaan",
-    "MONTH_TO_MONTH": "Kuust kuusse",
-    "MOTION_PROCESS_MANAGEMENT": "Liikumise Protsessi Haldus",
-    "USEFUL_COMMANDS": "Kasulikud Käsud",
-    "COMMAND": "Käsk",
-    "PM2_LIST": "Loenda kõik protsessid",
-    "PM2_START": "Alusta protsessi ID või nime järgi",
-    "PM2_STOP": "Lõpeta protsess ID või nime järgi või sisesta 'kõik', et peatada kõik aktiivsed protsessid",
-    "PM2_RESTART": "Värskenda protsessi ID või nime järgi",
-    "PM2_LOGS": "Voogesita kõik protsessid logifailid, kui ei ole esitatud kindlat ID-d või nime",
-    "PASSWORD": "Parool",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "STUNADDR": "STUN Aadress",
+    "EDIT_NETWORK": "Edit Network",
+    "DELETE_NETWORK": "Delete Network",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "EXPIRATION_DATE": "Expiration Date",
+    "REQUEST_LICENSE": "Request License",
+    "EMAIL": "Email",
+    "SEND": "Send",
+    "PLAN": "Plan",
+    "MONTH_TO_MONTH": "Month to month",
+    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
+    "USEFUL_COMMANDS": "Useful Commands",
+    "COMMAND": "Command",
+    "PM2_LIST": "List all processes",
+    "PM2_START": "Start a process by id or name",
+    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
+    "PM2_RESTART": "Restart a process by id or name",
+    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
+    "PASSWORD": "Password",
+    "NO_AVAILABLE_INFO": "No available info",
+    "STUNADDR": "STUN Address",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Jooksev versioon",
-    "CUSTOMIZATIONS": "Kohandamised",
-    "LOCALNETADDRESS": "Kohaliku võrgu Aadress",
-    "NEW_VERSION": "Uus Versioon",
-    "TRIAL_VERSION": "Prooviversioon",
-    "TOKEN": "Luba",
-    "NEW_TOKEN_DETECTED": "Uus Luba Tuvastatud",
-    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
-    "NEW_TOKEN": "Uus Luba",
-    "PRICES": "Hinnad",
-    "UPDATE_LICENSE": "Värskenda Litsentsid",
-    "LOGOLOGIN": "Logini Logo",
-    "EXPIRATION_REASON": "Aegumise Põhjus",
-    "GLOBAL": "Üldine",
-    "SMTP_AUTHENTICATION": "Autentimine",
-    "LICENSE_REQUEST_SENT": "Täname! Litsentsimise Tiim kontrollib Teie kontot asap Teie päringu kinnitamiseks: saate e-kirja, kui muutused jõustuvad. Palun pöörduge edasise info saamiseks aadressile license@xcally.com.",
-    "ACCOUNTNAME": "Konto Nimi",
-    "EMAILADDRESS": "E-posti Aadress",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Teie litsents on kehtetu.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Teie Seadme unikaalne ID on uuendatud seoses Teie süsteemi muudatustega.",
-    "EXPIRATION_CHANGED_ADVISE": "Võtke ühendust xCALLY Liikumise Litsentsimise Tiimiga, saates nii Teie vana kui ka uue UUID.",
-    "OLD_TOKEN": "Vana Luba",
-    "SEND_EMAIL_TO": "Saada E-kiri kellele",
-    "JIRA_ERROR_MESSAGE": "Viga litsentsi päringu jooksul. Palun võtke oma päringu osas ühendust meie litsentsimise tiimiga aadressil license@xcally.com",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "CURRENT_VERSION": "Current version",
+    "CUSTOMIZATIONS": "Customizations",
+    "LOCALNETADDRESS": "Localnet Address",
+    "NEW_VERSION": "New Version",
+    "TRIAL_VERSION": "Trial Version",
+    "TOKEN": "Token",
+    "NEW_TOKEN_DETECTED": "New Token Detected",
+    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
+    "NEW_TOKEN": "New Token",
+    "PRICES": "Prices",
+    "UPDATE_LICENSE": "Update License",
+    "LOGOLOGIN": "Login Logo",
+    "EXPIRATION_REASON": "Expiration Reason",
+    "GLOBAL": "Global",
+    "SMTP_AUTHENTICATION": "Authentication",
+    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
+    "ACCOUNTNAME": "Account Name",
+    "EMAILADDRESS": "Email Address",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
+    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
+    "OLD_TOKEN": "Old Token",
+    "SEND_EMAIL_TO": "Send Email to",
+    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "PAGE_TITLE": "Lehekülje Pealkiri",
-    "DEFAULT_PAGE_TITLE": "Vaikimisi Lehekülje Pealkiri",
-    "PERPETUAL": "Lõpmatu",
-    "SECURITY_SUITE": "Turvapakett",
-    "ANNUALLY": "Iga-aastaselt",
-    "AGENTOMNIDESKTOPINTERFACE": "Agendi Omni Töölaua Liides",
-    "MESSAGESALIGNMENT": "Sõnumi Joondus",
-    "ENTER_LICENSE": "Sisesta oma litsents",
-    "UPDATE_LICENSE_MANUALLY": "Kas soovid oma litsentsi käsitsi uuendada?",
+    "PAGE_TITLE": "Page Title",
+    "DEFAULT_PAGE_TITLE": "Default Page Title",
+    "PERPETUAL": "Perpetual",
+    "SECURITY_SUITE": "Security Suite",
+    "ANNUALLY": "Annually",
+    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
+    "MESSAGESALIGNMENT": "Messages Alignment",
+    "ENTER_LICENSE": "Enter your license",
+    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
     "ACCESSKEY": "Juurdepääsukoodi ID",
     "ADD_CLOUDPROVIDER": "Lisada konto",
     "AI": "A.I. Tööriistad",
     "ALLOWEDLOGINATTEMPTS": "Enne kasutaja / esindaja lukustamist lubatakse sisselogimiskatsed",
     "APPZONE": "Rakendustsoon",
     "BLOCKDURATION": "Enne automaatse avamise ootamist on vaja minutit",
-    "BUCKET": "Salv",
+    "BUCKET": "Ämber",
     "DEFAULTSCREENRECORDINGPATH": "Ekraani salvestustee",
     "DEFAULT_FAVICON": "Vaikimisi Favicon",
     "DEFAULT_PREFERRED": "Eelistatud vaikimisi logo",
     "TRANSCRIBEREGION": "Transkribeeritav piirkond",
     "USERNAME": "Kasutajanimi",
     "VIDEO": "Video",
-    "WHATSAPP": "WhatsApp ühendus",
-    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooli ajalugu",
-    "PASSWORD_HISTORY_LIMIT": "Parooli ajaloo limiit",
-    "SEARCH_ON_ENTER_KEY": "Otsi sisestusklahvi",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse suhtluste uuesti laadimise ajalõpp",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti suhtluste uuesti laadimise ajalõpp",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali suhtluste uuesti laadimise ajalõpp",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-suhtluste uuesti laadimise ajalõpp",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori suhtluste uuesti laadimise ajalõpp",
+    "WHATSAPP": "WhatsApp-pistik",
+    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooliajalugu",
+    "PASSWORD_HISTORY_LIMIT": "Parooliajaloo limiit",
+    "SEARCH_ON_ENTER_KEY": "Otsige sisestusklahvi",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse interaktsioonide uuesti laadimise ajalõpp",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti interaktsioonide uuesti laadimise ajalõpp",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali interaktsioonide uuesti laadimise ajalõpp",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-interaktsioonide uuesti laadimise ajalõpp",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori interaktsioonide uuesti laadimise ajalõpp",
     "PRIVACY_POLICY_EMAIL": "E-posti aadresside privaatsuseeskirjad",
     "PRIVACY_POLICY_NAME": "Nimede privaatsuseeskirjad",
     "PRIVACY_POLICY_NUMBER": "Numbrite privaatsuseeskirjad",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne edastamise salvestamine",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne ülekande salvestamine",
     "AD_SSO_ENABLED": "Active Directory SSO lubatud",
     "APPLICATION_ID": "Rakenduse ID",
     "AUTHENTICATE": "Autentimine",
index 2645fe3..9d0b322 100644 (file)
 {
   "SMS": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "AUTHID": "Autentimise ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "SMS Kasutusi pole Saadaval",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "SMSCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
-    "NEW_SMSCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_SMSCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_SMSCANNEDANSWER": "Redigeeri",
-    "DELETE_SMSCANNEDANSWER": "Kustuta",
-    "DELIVERYREPORTURL": "Kohaletoimetamise Raporti URL",
-    "DELETE": "Kustuta",
-    "SENDERSTRING": "Saatja String",
-    "DELIVERYREPORT": "Kohaletoimetamise Raport",
-    "METHOD": "Meetod",
-    "ADD_NOTE": "Lisa märge",
-    "NOTE": "Märge",
-    "SPYINTERACTION": "Spioon",
-    "AUTOREPLY": "Automaatvastus",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
-    "TIMES": "Kordade arv suhtluse korda",
-    "TEXT": "Tekst",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "MESSAGE": "Sõnum",
-    "TAGS": "Sildid",
-    "NO_AGENT_ONLINE": "Agente pole Võrgus",
-    "GOTOREALTIME_SMSQUEUE": "Mine Reaalaja SMS Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "PROXY": "Puhver",
-    "ADVANCED": "Täpsem",
-    "MOTIONPROXY": "Puhver või Liikumise Domeen",
-    "REALTIME": "Reaalaeg",
-    "KEY": "Võti",
-    "NAME": "Nimi",
-    "SMSQUEUES": "SMS Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "AUTHID": "Auth ID",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
+    "CANNEDANSWERS": "Canned Answers",
+    "SMSCANNEDANSWERS": "Canned Answers",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_SMSCANNEDANSWER": "New Canned Answer",
+    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
+    "EDIT_SMSCANNEDANSWER": "Edit",
+    "DELETE_SMSCANNEDANSWER": "Delete",
+    "DELIVERYREPORTURL": "Delivery Report URL",
+    "DELETE": "Delete",
+    "SENDERSTRING": "Sender String",
+    "DELIVERYREPORT": "Delivery Report",
+    "METHOD": "Method",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "SPYINTERACTION": "Spy",
+    "AUTOREPLY": "Auto Reply",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "TIMES": "Number of times per interaction",
+    "TEXT": "Text",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "SEND": "Send",
+    "TO": "To",
+    "MESSAGE": "Message",
+    "TAGS": "Tags",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "PROXY": "Proxy",
+    "ADVANCED": "Advanced",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "REALTIME": "Realtime",
+    "KEY": "Key",
+    "NAME": "Name",
+    "SMSQUEUES": "SMS Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "AUTHID_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "SENDERSTRING_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Vale formaat",
-      "METHOD_REQUIRED": "Kohustuslik Väli",
-      "MOTIONPROXY_REQUIRED": "Kohustuslik Väli",
-      "MOTIONPROXY_MUST_VALID_URL": "Vale formaat",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "PHONE_REQUIRED": "Kohustuslik Väli",
-      "SID_REQUIRED": "Kohustuslik Väli",
-      "TOKEN_REQUIRED": "Kohustuslik Väli",
-      "USERNAME_REQUIRED": "Kohustuslik Väli",
-      "PASSWORD_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "TYPE_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "ACCOUNTSID_REQUIRED": "Kohustuslik Väli",
-      "AUTHTOKEN_REQUIRED": "Kohustuslik Väli",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "AUTHID_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
+      "METHOD_REQUIRED": "Mandatory Field",
+      "MOTIONPROXY_REQUIRED": "Mandatory Field",
+      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "PHONE_REQUIRED": "Mandatory Field",
+      "SID_REQUIRED": "Mandatory Field",
+      "TOKEN_REQUIRED": "Mandatory Field",
+      "USERNAME_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "TYPE_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "ACCOUNTSID_REQUIRED": "Mandatory Field",
+      "AUTHTOKEN_REQUIRED": "Mandatory Field",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "APIKEY_REQUIRED": "Kohustuslik väli",
       "BASEURL_REQUIRED": "Kohustuslik väli",
       "ACCOUNTID_REQUIRED": "Kohustuslik väli",
       "APPLICATIONID_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_SMSQUEUE": "Lisa SMS Järjekord",
-    "EDIT_SMSQUEUE": "Redigeeri SMS Järjekorda",
-    "DELETE_SMSQUEUE": "Kustuta SMS Järjekord",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SMSACCOUNTS": "SMS Kontod",
-    "TYPE": "Tüüp",
-    "PHONE": "Telefon",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_SMSQUEUE": "Add SMS Queue",
+    "EDIT_SMSQUEUE": "Edit SMS Queue",
+    "DELETE_SMSQUEUE": "Delete SMS Queue",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SMSACCOUNTS": "SMS Accounts",
+    "TYPE": "Type",
+    "PHONE": "Phone",
     "SID": "SID",
-    "TOKEN": "Luba",
-    "SMSTYPE": "SMS Tüüp",
-    "USERNAME": "Kasutajanimi",
-    "PASSWORD": "Parool",
-    "MOTIONADDRESS": "Liikumise Aadress",
-    "ADD_SMSACCOUNT": "Lisa SMS Konto",
-    "EDIT_SMSACCOUNT": "Redigeeri SMS Kontot",
-    "DELETE_SMSACCOUNT": "Kustuta SMS Konto",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
+    "TOKEN": "Token",
+    "SMSTYPE": "SMS Type",
+    "USERNAME": "Username",
+    "PASSWORD": "Password",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_SMSACCOUNT": "Add SMS Account",
+    "EDIT_SMSACCOUNT": "Edit SMS Account",
+    "DELETE_SMSACCOUNT": "Delete SMS Account",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
     "API": "API",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "VeebiHaagid",
-    "ACTIONS": "Tegevused",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Method",
-    "CLOSEURL": "Sule URL",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "BACK": "Tagasi",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
     "SMS": "SMS",
-    "ID": "ID",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "SMSDISPOSITIONS": "SMS Kasutused",
-    "NO_SMSDISPOSITION_AVAILABLE": "SMS Kasutused pole saadaval",
-    "NEW_SMSDISPOSITION": "Uus SMS Kasutus",
-    "ADD_SMSDISPOSITION": "Lisa SMS Kasutus",
-    "EDIT_SMSDISPOSITION": "Redigeeri SMS Kasutus",
-    "DELETE_SMSDISPOSITION": "Kustuta SMS Kasutus",
-    "NEW_SMSQUEUE": "Uus SMS Järjekord",
-    "NEW_SMSACCOUNT": "Uus SMS Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ID": "Id",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "SMSDISPOSITIONS": "SMS Dispositions",
+    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
+    "NEW_SMSDISPOSITION": "New SMS Disposition",
+    "ADD_SMSDISPOSITION": "Add SMS Disposition",
+    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
+    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
+    "NEW_SMSQUEUE": "New SMS Queue",
+    "NEW_SMSACCOUNT": "New SMS Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
     "HELP": {
-      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näidis: https://X.Y.Z.W",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "LIST": "Kontakti Halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "RECEIVEURL": "See on automaatselt genereeritud API string, mida kasutatakse sõnumite vastuvõtmiseks sinu Konto sees sinu SMS pakkujalt (kasutada tuleb POST meetodit): kliki lõikelaua nuppu selle kopeerimiseks",
+      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager list used to associate contacts",
+      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
       "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele sihtlustele"
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu Lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "TEAMADD_SMSQUEUE": "Lisa Tiim SMS Järjekorda",
-    "AGENTADD_SMSQUEUE": "Lisa Agent SMS Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "RECEIVEURL": "URL vastuvõtmine",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Algusaeg",
+    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
+    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "RECEIVEURL": "Receive URL",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
     "AGENT": "Agent",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutus",
-    "NOTES": "Märkmed",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord",
-    "TIMEOUT": "Aegumine",
-    "VALUE": "Väärtus",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "PRIORITY": "Prioriteet",
+    "QUEUE": "Queue",
+    "TIMEOUT": "Timeout",
+    "VALUE": "Value",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOIF": "Edit Gotoif",
+    "EDIT_QUEUE": "Edit Queue",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "PRIORITY": "Priority",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali staatus",
-    "ALL": "Kõik",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "OPENED": "Avatud",
-    "CLOSED": "Suletud",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "OPEN": "Ava",
-    "INFO": "Teave",
-    "ACCOUNTSID": "Konto SID",
-    "AUTHTOKEN": "Autentimisluba",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Kättesaamatu",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTS": "Agentdid",
-    "QUEUES": "Järjekorrad",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Paus",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent SMS Järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "OPENCHANNEL": "Ava kanal",
-    "FAX": "Faks",
-    "AGENTSADD_QUEUE": "Lisa agendid SMS Järjekorda",
-    "INTERACTIONS_SMSACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_SMSACCOUNT": "Lisa Agent SMS Kontole",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_CLOSE": "Edit Close",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select a status",
+    "ALL": "All",
+    "SELECT_ACCOUNT": "Select an account",
+    "OPENED": "Open",
+    "CLOSED": "Closed",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "OPEN": "Open",
+    "INFO": "Info",
+    "ACCOUNTSID": "Account SID",
+    "AUTHTOKEN": "Auth Token",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add agent to SMS queue",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "OPENCHANNEL": "Open channel",
+    "FAX": "Fax",
+    "AGENTSADD_QUEUE": "Add agents to SMS queue",
+    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "APIKEY": "ApiKey",
     "BASEURL": "Baas-URL",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "DialogFlow",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "WELCOMEMESSAGE": "Tervitussõnum",
index 75fb8d9..0d93402 100644 (file)
 {
   "STAFF": {
-    "HOTDESK": "Hostseade",
-    "ENABLEVIDEORECORDING": "Luba Videosalvestus",
-    "OLD_PASSWORD": "Vana Parool",
-    "ENABLEJAWSINTEGRATION": "Luba Jaws Integreerimine",
+    "HOTDESK": "Hot desk",
+    "ENABLEVIDEORECORDING": "Enable Video Recording",
+    "OLD_PASSWORD": "Old Password",
+    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "Parooli Muutmine puudub",
-    "SECURITY_SUITE": "Turvapakett",
-    "LAST_PASSWORD_RESET_AT": "Viimase Parooli Lähtestamise aeg",
+    "NO_PASSWORD_CHANGE": "No Password Change",
+    "SECURITY_SUITE": "Security Suite",
+    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Sätted",
+    "SETTINGS_WEBRTC": "Settings",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS sertifikaat",
-    "DTLSPRIVATEKEY": "TLS sertifikaatide privaatvõti",
-    "CONTEXT": "Kontekst",
-    "RINGINUSE": "Helistamine Kasutusel",
-    "USERS": "Kasutajad",
-    "AGENTS": "Agendid",
-    "TOGGLE_SIDENAV": "Ümberlüliti sidenav",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "MULTI_SELECT_TOGGLE": "mitme valikuga ümberlüliti",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "SELECTED": "Valitud",
-    "DELETE_SELECTED": "Kustuta valitud",
-    "EXPORT_SELECTED": "Ekspordi valitud",
-    "ALL_USERS": "Kõik kasutajad",
-    "ALL_AGENTS": "Kõik agendid",
-    "SORT": "sordi",
-    "NAME": "Nimi",
-    "FULLNAME": "Täisnimi",
-    "A_TO_Z": "(A-st Z-ni)",
-    "Z_TO_A": "(Z-st to A-ni)",
-    "MORE": "Rohkem",
-    "DELETE_USER": "Kustuta Kasutaja",
-    "EDIT_USER": "Redigeeri Kasutajat",
-    "DELETE_AGENT": "Kustuta Agent",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "DELETE": "KUSTUTA",
-    "SAVE": "SALVESTA",
-    "ADD_USER": "LISA KASUTAJA",
-    "ADD_AGENT": "LISA AGENT",
-    "NO_RESULTS": "Tulemused puuduvad..",
-    "CLOSE_DIALOG": "Sule dialoog",
-    "NAME_REQUIRED": "Nimi (nõutav)",
-    "USERNAME": "Kasutajanimi",
-    "SHOW_ALL_FIELDS": "Näita Kõik Väljad",
-    "PHONE_NUMBER": "Telefoninumber",
-    "EMAIL": "E-mail",
-    "PASSWORD": "Parool",
+    "DTLSCERTFILE": "TLS certificate",
+    "DTLSPRIVATEKEY": "TLS certificate's private key",
+    "CONTEXT": "Context",
+    "RINGINUSE": "Ring In Use",
+    "USERS": "Users",
+    "AGENTS": "Agents",
+    "TOGGLE_SIDENAV": "Toggle sidenav",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "MULTI_SELECT_TOGGLE": "multi select toggle",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select None",
+    "SELECTED": "Selected",
+    "DELETE_SELECTED": "Delete selected",
+    "EXPORT_SELECTED": "Export selected",
+    "ALL_USERS": "All users",
+    "ALL_AGENTS": "All agents",
+    "SORT": "sort",
+    "NAME": "Name",
+    "FULLNAME": "Full Name",
+    "A_TO_Z": "(A to Z)",
+    "Z_TO_A": "(Z to A)",
+    "MORE": "More",
+    "DELETE_USER": "Delete User",
+    "EDIT_USER": "Edit User",
+    "DELETE_AGENT": "Delete Agent",
+    "EDIT_AGENT": "Edit Agent",
+    "DELETE": "DELETE",
+    "SAVE": "SAVE",
+    "ADD_USER": "ADD USER",
+    "ADD_AGENT": "ADD AGENT",
+    "NO_RESULTS": "No results..",
+    "CLOSE_DIALOG": "Close dialog",
+    "NAME_REQUIRED": "Name (required)",
+    "USERNAME": "Username",
+    "SHOW_ALL_FIELDS": "Show All Fields",
+    "PHONE_NUMBER": "Phone number",
+    "EMAIL": "Email",
+    "PASSWORD": "Password",
     "ERRORS": {
-      "ALLOWCODECS_REQUIRED": "Kohustuslik väli",
-      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) Krüptimine",
-      "DTLSCERTFILE_REQUIRED": "Kohustuslik väli",
-      "DTLSPRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "CHATCAPACITY_REQUIRED": "Kohustuslik väli",
-      "MAILCAPACITY_REQUIRED": "Kohustuslik väli",
-      "FAXCAPACITY_REQUIRED": "Kohustuslik väli",
-      "SMSCAPACITY_REQUIRED": "Kohustuslik väli",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kohustuslik väli",
-      "SIPEXPIRES_REQUIRED": "Kohustuslik väli",
-      "SIPPORT_REQUIRED": "Kohustuslik väli",
-      "UNCONDITIONALNUMBER_REQUIRED": "Kohustuslik väli",
-      "NOREPLYNUMBER_REQUIRED": "Kohustuslik väli",
-      "BUSYNUMBER_REQUIRED": "Kohustuslik väli",
-      "USERNAME_MUST_VALID_PATTERN": "Vale formaat {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Kohustuslik väli",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AUTOANSWERDELAY_REQUIRED": "Kohustuslik väli",
-      "MONITOREXTENSION_REQUIRED": "Kohustuslik väli",
-      "SECURE_PASSWORD_PATTERN": "Parool peab koosnema vähemalt 8 tähemärgist ja sisaldama 1 väikest tähemärki, 1 suurt tähemärki, 1 numbrit ja 1 erimärki ~!?*@#$%^&-_=+[{]}.",
+      "ALLOWCODECS_REQUIRED": "Mandatory field",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
+      "DTLSCERTFILE_REQUIRED": "Mandatory field",
+      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "ACCOUNTNAME_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "CHATCAPACITY_REQUIRED": "Mandatory field",
+      "MAILCAPACITY_REQUIRED": "Mandatory field",
+      "FAXCAPACITY_REQUIRED": "Mandatory field",
+      "SMSCAPACITY_REQUIRED": "Mandatory field",
+      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
+      "SIPEXPIRES_REQUIRED": "Mandatory field",
+      "SIPPORT_REQUIRED": "Mandatory field",
+      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
+      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
+      "BUSYNUMBER_REQUIRED": "Mandatory field",
+      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
+      "MONITOREXTENSION_REQUIRED": "Mandatory field",
+      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
       "CONFIRM_REQUIRED": "Kohustuslik väli",
       "CRUDPERMISSIONS_REQUIRED": "Kohustuslik väli",
       "PASSWORD_OLDPASSWORD_MATCH": "Uus parool peab erinema eelmisest",
       "USERPROFILE_REQUIRED": "Kohustuslik väli",
       "WHATSAPPCAPACITY_REQUIRED": "Kohustuslik väli"
     },
-    "ACCOUNT": "Konto",
-    "VOICE": "Hääl",
-    "CREATED_AT": "Loomisaeg",
-    "ROLE": "Roll",
-    "PERSONAL_INFO": "Isiklik Teave",
-    "DESCRIPTION": "Kirjeldus",
-    "CHANGE_AVATAR": "Muuda Avatari",
-    "GENERAL": "Üldine",
-    "INTERNAL": "Sisemine",
+    "ACCOUNT": "Account",
+    "VOICE": "Voice",
+    "CREATED_AT": "Created At",
+    "ROLE": "Role",
+    "PERSONAL_INFO": "Personal Info",
+    "DESCRIPTION": "Description",
+    "CHANGE_AVATAR": "Change Avatar",
+    "GENERAL": "General",
+    "INTERNAL": "Internal",
     "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Lubatud Koodeks",
+    "ALLOWCODECS": "Allowed Codecs",
     "HELP": {
-      "LAST_PASSWORD_RESET_AT": "Parooli muutmise viimane kuupäev ja kellaaeg. Kui Turvapaketti Üldine Säte on lubatud, aegub parool 90 päeva pärast.",
-      "DTLSCERTFILE": "Link kehtivale TLS sertifikaadile(.crt file). Vaikimisi väärtus: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link sertifikaadi privaatvõtmele(.key file). Vaikimisi väärtus: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Lubatud Koodeks eelistusjärjekorras",
-      "TRANSPORT": "Seadista vaikimisi transport eelistusjärjekorras",
-      "HOST": "Kuidas leida klienti - IP või hosti nimi. Kui soovid, et telefon registreeriks ennast, kasuta võtmesõna dünaamikat Host IP asemel",
-      "NAT": "Muudab Asteriski käitumist kliendi jaokstilemüüri taga. Kui mõni komaga eraldatud valikutest on 'ei', Asterisk ignoreerib teisi sätteid ja seadistab nat=no",
-      "SIPEXPIRES": "Vaikimisi: 160",
-      "SIPPORT": "Vaikimisi: 5060",
-      "TYPE": "Määratleb SIP rolli asteriskis. Kasutaja: kasutatakse sissetuleva autentimiseks - Partner: väljuvate kõnede jaoks - Sõbrad: katab mõlemad ülaltoodud tunnused",
-      "CHATCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta (0=piiramatu)",
-      "MAILCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "FAXCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "SMSCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "OPENCHANNELCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "CALLGROUP": "Agendi kõnegrupp",
-      "PICKUPGROUP": "Grupp, milles agent saab kõnedele vastata",
-      "USERNAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) krüptimine",
-      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu ā€˛API võtmehaldurā€¯",
+      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
+      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Allowed Codecs in order of preference",
+      "TRANSPORT": "Set the default transports in order of preference",
+      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
+      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
+      "SIPEXPIRES": "Default: 160",
+      "SIPPORT": "Default: 5060",
+      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
+      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "CALLGROUP": "The agent's callgroup",
+      "PICKUPGROUP": "The groups in which the agent can answer calls",
+      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
+      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu „API võtmehaldur”",
       "BLOCKED": "Juurdepääsu lukustamine / avamine",
       "CUSTOM_DASHBOARDS_PERMISSIONS": "Kohandatud juhtpaneelide õigusi hallatakse moodulis Tööriistad",
-      "DISABLED": "Vali uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
+      "DISABLED": "valige uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
       "ENABLEAUTOMATICSCREENRECORDING": "Funktsioon on saadaval ainult häälkanalite jaoks",
       "SAVE_PERMISSIONS": "Kõik sektsioonid, mis sisaldavad ootel muudatusi, salvestatakse",
       "WHATSAPPCAPACITY": "Maksimaalne samaaegsete kanalite interaktsioonide arv agendi kohta (0 = piiramatu)",
       "WSS_PORT": "Vaikimisi: 8089",
       "AD_SSO_ENABLED": "Logige sisse oma Active Directory mandaatidega"
     },
-    "NEW_PASSWORD": "Uus Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "CHANGE_PASSWORD": "Muuda Parooli",
-    "CHANGEPASSWORD_AGENT": "Muuda Parooli",
-    "CHANGEPASSWORD_USER": "Muuda Parooli",
-    "CHANGEPASSWORD_TELEPHONE": "Muuda Parooli",
-    "LOGININPAUSE": "Sisselogimine Pausis",
+    "NEW_PASSWORD": "New Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "CHANGE_PASSWORD": "Change Password",
+    "CHANGEPASSWORD_AGENT": "Change Password",
+    "CHANGEPASSWORD_USER": "Change Password",
+    "CHANGEPASSWORD_TELEPHONE": "Change Password",
+    "LOGININPAUSE": "Login In Pause",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Teised Kanalid",
-    "CHATCAPACITY": "Vestluse Võimsus",
-    "MAILCAPACITY": "E-posti Maht",
-    "FAXCAPACITY": "Faksi Maht",
-    "SMSCAPACITY": "SMSi Maht",
-    "OPENCHANNELCAPACITY": "Avatud Kanali Maht",
-    "MOTIONBAR": "Liikumisriba",
-    "SETTINGS": "Sätted",
-    "AUTOANSWER": "Automaatvastus",
-    "ENABLESETTINGS": "Luba Sätted",
-    "CALL_FORWARDING": "Kõne Suunamine",
-    "UNCONDITIONAL": "Tingimusteta",
-    "UNCONDITIONALNUMBER": "Tingimusteta Number",
-    "NOREPLY": "Vastamine puudub",
-    "NOREPLYNUMBER": "Number, millele ei saa vastata",
-    "BUSY": "Hõivatud",
-    "BUSYNUMBER": "Hõivatud Number",
-    "REMOTE_CONTROL": "Kaugjuhtimine",
-    "REMOTECONTROL": "Kaugjuhtimine",
-    "REMOTECONTROLPORT": "Kaugjuhtimise Port",
+    "OTHER_CHANNELS": "Other Channels",
+    "CHATCAPACITY": "Chat Capacity",
+    "MAILCAPACITY": "Email Capacity",
+    "FAXCAPACITY": "Fax Capacity",
+    "SMSCAPACITY": "Sms Capacity",
+    "OPENCHANNELCAPACITY": "Open Channel Capacity",
+    "MOTIONBAR": "Motion Bar",
+    "SETTINGS": "Settings",
+    "AUTOANSWER": "Auto Answer",
+    "ENABLESETTINGS": "Enable Settings",
+    "CALL_FORWARDING": "Call Forwarding",
+    "UNCONDITIONAL": "Unconditional",
+    "UNCONDITIONALNUMBER": "Unconditional Number",
+    "NOREPLY": "No Reply",
+    "NOREPLYNUMBER": "No Reply Number",
+    "BUSY": "Busy",
+    "BUSYNUMBER": "Busy Number",
+    "REMOTE_CONTROL": "Remote Control",
+    "REMOTECONTROL": "Remote Control",
+    "REMOTECONTROLPORT": "Remote Control Port",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP aegub [sek]",
+    "SIPEXPIRES": "SIP Expires [sec]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Trahv",
-    "ACCOUNTNAME": "Konto Nimi",
-    "ADD_TELEPHONE": "Lisa Telefon",
-    "EDIT_TELEPHONE": "Redigeeri Telefoni",
-    "DELETE_TELEPHONE": "Kustuta Telefon",
-    "TEAMS": "Tiimid",
-    "DELETE_TEAM": "Kustuta Tiim",
-    "AGENTADD_TEAM": "Lisa Agendid Tiimile",
-    "EDIT_TEAM": "Redigeeri Tiimi",
-    "TYPE": "Tüüp",
-    "TELEPHONES": "Telefonid",
-    "CALLERID": "Helistaja ID",
-    "ENABLERECORDING": "Luba Salvestamine",
-    "STAFF": "Personal",
-    "ID": "ID",
-    "NEW_USER": "Uus Kasutaja",
-    "NEW_AGENT": "Uus Agent",
-    "NEW_TELEPHONE": "Uus Telefon",
-    "NEW_TEAM": "Uus Tiim",
-    "ADD_TEAM": "Lisa Tiim",
-    "JOIN_QUEUE": "Liitu Järjekorraga",
-    "CAPACITY": "Maht",
-    "AUTOINTERNAL": "Genereeri automaatselt sisemine number",
-    "ADD_AGENT_TO_TEAM": "Lisa Agent Tiimi",
-    "TEAMADD_AGENT": "Lisa Agent Tiimi",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "PERMISSIONS": "Load",
-    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
-    "ALL_MODULES_AVAILABLE": "Kõik moodulid on saadaval",
-    "CALLGROUP": "Helistamise Grupp",
-    "PICKUPGROUP": "Vastuvõtu Grupp",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisa Agent Järjekorra Kampaaniasse",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisa Agent Hääle Järjekordadesse",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisa Agent Vestluse Järjekordadesse",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisa Agent E-maili Järjekordadesse",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Lisa Agent SMSi Järjekordadesse",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisa Agent Avatud Kanali Järjekordadesse",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Lisa Agent Faksi Järjekordadesse",
-    "QUEUEADD_USER_VOICE_INBOUND": "Lisa Kasutaja Hääle Järjekordadesse",
-    "QUEUEADD_USER_CHAT_INBOUND": "Lisa Kasutaja Vestluse Järjekordadesse",
-    "QUEUEADD_USER_MAIL_INBOUND": "Lisa Kasutaja E-maili Järjekordadesse",
-    "QUEUEADD_USER_SMS_INBOUND": "Lisa Kasutaja SMSi Järjekordadesse",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Lisa Kasutaja Avatud Kanali Järjekordadesse",
-    "QUEUEADD_USER_FAX_INBOUND": "Lisa Kasutaja Faksi Järjekordadesse",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Kõik Järjekorra Kampaaniad",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitud Järjekorra Kampaaniad",
-    "ALL_QUEUES_VOICE_INBOUND": "Kõik Hääle Järjekorrad",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valitud Hääle Järjekorrad",
-    "ALL_QUEUES_CHAT_INBOUND": "Kõik Vestluse  Järjekorrad",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valitud Vestluse Järjekorrad",
-    "ALL_QUEUES_MAIL_INBOUND": "Kõik E-maili Järjekorrad",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valitud E-maili Järjekorrad",
-    "ALL_QUEUES_SMS_INBOUND": "Kõik SMSi Järjekorrad",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valitud SMSi Järjekorrad",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kõik Avatud Kanali Järjekorrad",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "vatud Kanali Järjekorrad",
-    "ALL_QUEUES_FAX_INBOUND": "Kõik Faksi Järjekorrad",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valitud Faksi Järjekorrad",
-    "VOICEMAIL": "Kõnepost",
-    "SHOWWEBCONTROL": "Tüpoloogia",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PENALTY": "Penalty",
+    "ACCOUNTNAME": "Account Name",
+    "ADD_TELEPHONE": "Add Telephone",
+    "EDIT_TELEPHONE": "Edit Telephone",
+    "DELETE_TELEPHONE": "Delete Telephone",
+    "TEAMS": "Teams",
+    "DELETE_TEAM": "Delete Team",
+    "AGENTADD_TEAM": "Add Agents to Team",
+    "EDIT_TEAM": "Edit Team",
+    "TYPE": "Type",
+    "TELEPHONES": "Telephones",
+    "CALLERID": "Caller ID",
+    "ENABLERECORDING": "Enable Recording",
+    "STAFF": "Staff",
+    "ID": "Id",
+    "NEW_USER": "New User",
+    "NEW_AGENT": "New Agent",
+    "NEW_TELEPHONE": "New Telephone",
+    "NEW_TEAM": "New Team",
+    "ADD_TEAM": "Add Team",
+    "JOIN_QUEUE": "Join Queue",
+    "CAPACITY": "Capacity",
+    "AUTOINTERNAL": "Auto generate internal number",
+    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
+    "TEAMADD_AGENT": "Add Agent to Team",
+    "NO_AVAILABLE_INFO": "No available info",
+    "PERMISSIONS": "Permissions",
+    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
+    "ALL_MODULES_AVAILABLE": "All modules available",
+    "CALLGROUP": "Call Group",
+    "PICKUPGROUP": "Pickup Group",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
+    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
+    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
+    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
+    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
+    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
+    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
+    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "SELECTED_AGENTS": "Selected Agents",
+    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
+    "ALL_VOICE_QUEUES": "All Voice Queues",
+    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
+    "ALL_CHAT_QUEUES": "All Chat Queues",
+    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
+    "ALL_MAIL_QUEUES": "All Email Queues",
+    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
+    "ALL_SMS_QUEUES": "All SMS Queues",
+    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
+    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
+    "ALL_FAX_QUEUES": "All Fax Queues",
+    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
+    "VOICEMAIL": "Voicemail",
+    "SHOWWEBCONTROL": "Typology",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CALLFORWARDING": "Kõne Suunamine",
-    "DND": "Ära tülita pausi jooksul",
-    "UNANSWEREDCALLBADGE": "Kuva vastamata kõnede märki",
-    "ENABLEDTMFTONE": "Luba Dtmf toonid",
-    "AUTOANSWERDELAY": "Automaatvastuse Viivitus [s]",
-    "ENCRYPTION": "Krüptimine",
-    "CHANNELS": "Kanalid",
-    "CHAT": "Vestlus",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Lisa Kasutaja Järjekorra Kampaaniasse",
-    "MONITOREXTENSION": "Sakvesta kõne Kasutaja laiendusse",
-    "EDITPERMISSIONS": "Redigeerimise Luba",
-    "READANDEDIT": "Loe, Redigeeri",
-    "READANDEDITANDDELETE": "Loe, Redigeeri, Kustuta",
-    "GENERAL_PERMISSIONS": "Üldine",
-    "ENABLEMESSENGER": "Luba Sisemine Messenger",
-    "OUTBOUNDPROXY": "Väljuv Puhver",
-    "PHONE": "Telefon",
-    "MOBILE": "Mobiil",
-    "PREFIXREQUIRED": "Eesliide Nõutav",
-    "MANAGE_PERMISSIONS": "Halda Lubasid",
-    "USERADD_VOICEQUEUES": "Lisa Hääle Järjekord Kasutajale",
-    "ALL_VOICEQUEUES": "Kõik Hääle Järjekorrad",
-    "SELECTED_VOICEQUEUES": "Valitud Hääle Järjekorrad",
-    "USERADD_CHATQUEUES": "Lisa Vestluse Järjekord Kasutajale",
-    "ALL_CHATQUEUES": "Kõik Vestluse Järjekorrad",
-    "SELECTED_CHATQUEUES": "Valitud E-maili Järjekorrad",
-    "USERADD_MAILQUEUES": "Lisa E-maili Järjekord Kasutajale",
-    "ALL_MAILQUEUES": "Kõik E-maili Järjekorrad",
-    "SELECTED_MAILQUEUES": "Valitud Vestluse Järjekorrad",
-    "USERADD_SMSQUEUES": "Lisa SMS Järjekord Kasutajale",
-    "ALL_SMSQUEUES": "Kõik SMS Järjekorrad",
-    "SELECTED_SMSQUEUES": "Valitud SMS Järjekorrad",
-    "USERADD_FAXQUEUES": "Lisa Faksi Järjekord Kasutajale",
-    "ALL_FAXQUEUES": "Kõik Faksi Järjekorrad",
-    "SELECTED_FAXQUEUES": "Valitud Faksi Järjekorrad",
-    "USERADD_OPENCHANNELQUEUES": "Lisa Avatud Kanali Järjekord Kasutajale",
-    "ALL_OPENCHANNELQUEUES": "Kõik Avatud Kanali Järjekorrad",
-    "SELECTED_OPENCHANNELQUEUES": "Valitud Avatud Kanali Järjekorrad",
-    "USERADD_PROJECTS": "Lisa Cally Square Projekt Kasutajale",
-    "ALL_PROJECTS": "Kõik Cally Square Projektid",
-    "SELECTED_PROJECTS": "Valitud Cally Square Projektid",
-    "USERADD_CHATWEBSITES": "Lisa Vestluse Veebisait Kasutajale",
-    "ALL_CHATWEBSITES": "Kõik Vestluse Veebisaidid",
-    "SELECTED_CHATWEBSITES": "Valitud Vestluse Veebisaidid",
-    "USERADD_QUEUECAMPAIGNS": "Lisa Järjekorra Kampaania Kasutajale",
-    "ALL_QUEUECAMPAIGNS": "Kõik Järjekorra Kampaaniad",
-    "SELECTED_QUEUECAMPAIGNS": "Valitud Järjekorra Kampaaniad",
-    "USERADD_MAILACCOUNTS": "Lisa E-maili Konto Kasutajale",
-    "ALL_MAILACCOUNTS": "Kõik E-maili Kontod",
-    "SELECTED_MAILACCOUNTS": "Valitud E-maili Kontod",
-    "USERADD_FAXACCOUNTS": "Lisa Faksi Kontod Kasutajale",
-    "ALL_FAXACCOUNTS": "Kõik Faksi Kontod",
-    "SELECTED_FAXACCOUNTS": "Valitud Faksi Kontod",
-    "USERADD_SMSACCOUNTS": "Lisa SMS Konto Kasutajale",
-    "ALL_SMSACCOUNTS": "Kõik SMS Kontod",
-    "SELECTED_SMSACCOUNTS": "Valitud SMS Kontod",
-    "USERADD_OPENCHANNELACCOUNTS": "Lisa Avatud Kanali Konto Kasutajale",
-    "ALL_OPENCHANNELACCOUNTS": "Kõik Avatud Kanali Kontod",
-    "SELECTED_OPENCHANNELACCOUNTS": "Valitud Avatud Kanali Kontod",
-    "ADD_USERPROFILE": "Lisa kasutaja profiil",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
+    "CALLFORWARDING": "Call Forwarding",
+    "DND": "Do not disturb during pause",
+    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
+    "ENABLEDTMFTONE": "Enable Dtmf tones",
+    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
+    "ENCRYPTION": "Encryption",
+    "CHANNELS": "Channels",
+    "CHAT": "Chat",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
+    "MONITOREXTENSION": "Record calls to user extension",
+    "EDITPERMISSIONS": "Editing Permissions",
+    "READANDEDIT": "Read, Edit",
+    "READANDEDITANDDELETE": "Read, Edit, Delete",
+    "GENERAL_PERMISSIONS": "General",
+    "ENABLEMESSENGER": "Enable Internal Messenger",
+    "OUTBOUNDPROXY": "Oubound Proxy",
+    "PHONE": "Phone",
+    "MOBILE": "Mobile",
+    "PREFIXREQUIRED": "Prefix Required",
+    "MANAGE_PERMISSIONS": "Manage Permissions",
+    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
+    "ALL_VOICEQUEUES": "All Voice Queues",
+    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
+    "USERADD_CHATQUEUES": "Add Chat Queue to User",
+    "ALL_CHATQUEUES": "All Chat Queues",
+    "SELECTED_CHATQUEUES": "Selected Email Queues",
+    "USERADD_MAILQUEUES": "Add Email Queue to User",
+    "ALL_MAILQUEUES": "All Email Queues",
+    "SELECTED_MAILQUEUES": "Selected Chat Queues",
+    "USERADD_SMSQUEUES": "Add SMS Queue to User",
+    "ALL_SMSQUEUES": "All SMS Queues",
+    "SELECTED_SMSQUEUES": "Selected SMS Queues",
+    "USERADD_FAXQUEUES": "Add Fax Queue to User",
+    "ALL_FAXQUEUES": "All Fax Queues",
+    "SELECTED_FAXQUEUES": "Selected Fax Queues",
+    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
+    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
+    "USERADD_PROJECTS": "Add Cally Square Project to User",
+    "ALL_PROJECTS": "All Cally Square Projects",
+    "SELECTED_PROJECTS": "Selected Cally Square Projects",
+    "USERADD_CHATWEBSITES": "Add Chat Website to User",
+    "ALL_CHATWEBSITES": "All Chat Websites",
+    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
+    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
+    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
+    "USERADD_MAILACCOUNTS": "Add Email Account to User",
+    "ALL_MAILACCOUNTS": "All Email Accounts",
+    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
+    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
+    "ALL_FAXACCOUNTS": "All Fax Accounts",
+    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
+    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
+    "ALL_SMSACCOUNTS": "All SMS Accounts",
+    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
+    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
+    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
+    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
+    "ADD_USERPROFILE": "Lisage kasutaja profiil",
+    "ALL_WHATSAPP_QUEUES": "Kõik WhatsApi järjekorrad",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
-    "ALL_WHATSAPPQUEUES": "Kõik Whataspi jäjekorrad",
+    "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
     "APIKEY": "API-võti",
     "APIKEYMANAGER_USER": "API võtmehaldur",
     "BLOCKED": "Lukustatud",
     "CANCEL": "Tühista",
     "CLONE_USERPROFILE": "Kloonide kasutaja profiil",
-    "CLOSE": "Sule",
-    "CONFIRM": "Kinnita",
+    "CLOSE": "Sulge",
+    "CONFIRM": "Kinnitage",
     "CRUDPERMISSIONS": "Loa tüüp",
     "DELETE_PERMISSION": "Kustuta",
     "DELETE_USERPROFILE": "Kustuta kasutaja profiil",
     "ENABLEAUTOMATICSCREENRECORDING": "Luba automaatne ekraanil salvestamine",
     "ENABLESCREENRECORDINGBYAGENT": "Ekraani salvestamise lubamine agendi poolt",
     "ENABLEVIDEOECORDING": "Luba videosalvestus",
-    "GENERATE": "Genereeri",
+    "GENERATE": "Genereerima",
     "MANAGE_API_KEY": "API võtmehaldur",
     "MODULES": "Moodulid",
     "NEW_USERPROFILE": "Uus kasutajaprofiil",
     "PERMISSIONS_SECTION_SHOW": "Kuva jaotis kasutajale",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} õigused",
     "PERMISSIONS_SELECTED_RESOURCES": "Valitud ressursid",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Vali aruande tüüp",
-    "PERMISSIONS_SELECT_SECTION": "Vali jaotis",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Pole lubatud ressurssi luua",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Pole lubatud valitud sektsiooni juurde pääseda",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Valige aruande tüüp",
+    "PERMISSIONS_SELECT_SECTION": "Valige jaotis",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Teil pole lubatud ressurssi luua",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Teil pole lubatud valitud sektsiooni juurde pääseda",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Volitamata tegevus",
     "PERMISSIONS_WARNING_CLOSE": "Teil on salvestamata muudatusi. Kas soovite kindlasti väljuda salvestamata?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Kõik {{sectionName}} alajaotised ja nende ressursid lubatakse. Kas soovite kindlasti jätkata?",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsAppi järjekorda",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsAppi järjekorda",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
-    "REGENERATE": "Regenereeri",
+    "REGENERATE": "Regenereerige",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
+    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
-    "TEAMS_ASSOCIATION": "Tiimidee liit",
-    "USERADD_WHATSAPPACCOUNTS": "Lisa kasutajale WhatsApi konto",
-    "USERADD_WHATSAPPQUEUES": "Lisa kasutajale WhatasApi Järjekord",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "USERADD_WHATSAPPACCOUNTS": "Lisage kasutajale WhatsApi konto",
+    "USERADD_WHATSAPPQUEUES": "Lisage kasutajale Whataspp Queue",
     "USERPROFILE": "Kasutajaprofiil",
     "USERPROFILES": "Kasutajaprofiilid",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp ühendus",
-    "WHATSAPPCAPACITY": "WhatsApp ühenduse maht",
-    "MASK_SENSITIVE_DATA": "Maskeeri tundlikud andmed",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
+    "MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
     "WSS_PORT": "WSS-port",
     "ATTACHMENTS": "Manused",
     "CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
-    "CONTACT_MANAGER_LISTS": "Kontakti Halduri loendid",
+    "CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
     "DOWNLOADS": "Allalaadimised",
     "DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
-    "OMNICHANNEL_INTERACTIONS": "Mitme kanaliga suhtlused",
+    "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
     "SCREEN_RECORDINGS": "Ekraanisalvestused",
     "VOICE_RECORDINGS": "Helisalvestised",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Eelvaatekõnede puhul ignoreerige agendi katkestuse olekut",
     "SELECT_RECALLME_CAMPAIGN": "Valige Meenuta mind kampaania",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
+    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
+    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
+    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
+    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
+    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
+    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
+    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
+    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autentimine",
     "CLIENT_LOGS": "Kliendi logid",
     "CLIENT_LOGS_LOGLEVEL": "Logitase: {{logLevel}}",
     "CLIENT_LOGS_LOGLEVEL_SELECT": "Valige minimaalne logimise tase (raskusaste)",
     "CLIENT_LOGS_DISABLED_MSG": "Kliendilogid on teie kasutaja jaoks keelatud",
-    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud"
+    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud",
+    "AUTO_ANSWER": "Automaatne vastus",
+    "CHAT_AUTOANSWER": "Vestluse automaatne vastus",
+    "CHAT_AUTOANSWERDELAY": "Vestluse automaatse vastuse viivitus [s]",
+    "EMAIL_AUTOANSWER": "Meili automaatne vastus",
+    "EMAIL_AUTOANSWERDELAY": "Meili automaatse vastuse viivitus [s]",
+    "FAX_AUTOANSWER": "Faksi automaatne vastus",
+    "FAX_AUTOANSWERDELAY": "Faksi automaatvastuse viivitus [s]",
+    "OPENCHANNEL_AUTOANSWER": "Openchanneli automaatne vastus",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Avatud kanali automaatvastuse viivitus [s]",
+    "SMS_AUTOANSWER": "Automaatne SMS-vastus",
+    "SMS_AUTOANSWERDELAY": "SMS-i automaatvastuse viivitus [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp automaatne vastus",
+    "WHATSAPP_AUTOANSWERDELAY": "Whatsapi automaatvastuse viivitus [s]"
   }
 }
index e2ccdbf..48b85d3 100644 (file)
 {
   "TOOLS": {
-    "BOT": "Häälbot",
-    "CLONE_TRUNK": "Magistraali Kloonimine",
-    "DISPOSITIONS": "Kasutused",
-    "NEW_DISPOSITION": "Uud Kasutus",
-    "ADD_DISPOSITION": "Lisa Kasutus",
-    "EDIT_DISPOSITION": "Redigeeri Kasutust",
-    "DELETE_DISPOSITION": "Kustuta Kasutus",
-    "RUN_SCHEDULE": "Käivita graafik",
-    "SENDIFEMPTY": "Saada, kui on tühi",
-    "NEXTCONTACT": "Järgmine",
-    "OUTBOUND_ROUTE": "Väljuv Teekond",
-    "EDIT_DASHBOARDITEM": "Redigeeri Töölaua Vidinat",
-    "FONTSIZE": "Fonsi Suurus",
-    "CLONE_CUSTOMDASHBOARD": "Klooni Kohandatud Töölud",
+    "BOT": "Voicebot",
+    "CLONE_TRUNK": "Clone Trunk",
+    "DISPOSITIONS": "Dispositions",
+    "NEW_DISPOSITION": "New Disposition",
+    "ADD_DISPOSITION": "Add Disposition",
+    "EDIT_DISPOSITION": "Edit Disposition",
+    "DELETE_DISPOSITION": "Delete Disposition",
+    "RUN_SCHEDULE": "Run schedule",
+    "SENDIFEMPTY": "Send if empty",
+    "NEXTCONTACT": "Next",
+    "OUTBOUND_ROUTE": "Outbound Route",
+    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
+    "FONTSIZE": "Font Size",
+    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
     "LINK": "Link [https://]",
-    "BACKGROUND": "Taust",
-    "FOREGROUND": "Esiplaan",
-    "NONE": "Pole ühtegi",
-    "TOTAL": "Kokku",
-    "ABANDONED": "Tagasilükatud",
-    "WAITING": "Ootel",
-    "TALKING": "Rääkimine",
-    "ANSWERED": "Vastatud",
-    "UNMANAGED": "Haldamata",
-    "CUSTOMTYPE": "Kohandatud [tee]",
-    "WEBREPORT": "Veebi Raport",
-    "PIECHART": "Sektordiagramm",
-    "MULTIBARCHART": "Tulpdiagramm",
-    "MOVE_WIDGET": "Liiguta Vidinat",
-    "USERADD_CUSTOMDASHBOARD": "Lisa Kasutaja Õigused",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
-    "GOTO_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
-    "METRIC": "Mõõdik",
-    "FILTERVOICEQUEUES": "Filtreeri Hääle Järjekorrad",
-    "SERIE1": "Seeria 1",
-    "SERIE2": "Seeria 2",
-    "SERIE3": "Seeria 3",
-    "REFRESH": "Värskenda [s]",
-    "FORMAT": "Formaat",
-    "PATH": "Absoluutne tee",
-    "ALL_USERS": "Kõik Kasutajad",
-    "SELECTED_USERS": "Valitud Kasutajad",
-    "ADD_WIDGET": "Lisa Vidin",
-    "COLOR": "Värv",
-    "FAX": "Faks",
-    "INTERACTION": "Suhtlus",
-    "MESSAGE": "Sõnum",
+    "BACKGROUND": "Background",
+    "FOREGROUND": "Foreground",
+    "NONE": "None",
+    "TOTAL": "Total",
+    "ABANDONED": "Abandoned",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "ANSWERED": "Answered",
+    "UNMANAGED": "Unmanaged",
+    "CUSTOMTYPE": "Custom [path]",
+    "WEBREPORT": "Web Report",
+    "PIECHART": "Pie Chart",
+    "MULTIBARCHART": "Multibar Chart",
+    "MOVE_WIDGET": "Move Widget",
+    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "METRIC": "Metric",
+    "FILTERVOICEQUEUES": "Filter Voice Queues",
+    "SERIE1": "Serie 1",
+    "SERIE2": "Serie 2",
+    "SERIE3": "Serie 3",
+    "REFRESH": "Refresh [s]",
+    "FORMAT": "Format",
+    "PATH": "Absolute Path",
+    "ALL_USERS": "All Users",
+    "SELECTED_USERS": "Selected Users",
+    "ADD_WIDGET": "Add Widget",
+    "COLOR": "Color",
+    "FAX": "Fax",
+    "INTERACTION": "Interaction",
+    "MESSAGE": "Message",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Kõne",
-    "NAME": "Nimi",
-    "TRUNKS": "Magistraalid",
-    "SEARCH_FOR_ANYONE": "Otsi",
+    "CALL": "Call",
+    "NAME": "Name",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "NAME_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "TITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "REFRESH_REQUIRED": "Kohustuslik väli",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONTSIZE_REQUIRED": "Kohustuslik väli",
-      "PATH_REQUIRED": "Kohustuslik väli",
-      "FORMAT_REQUIRED": "Kohustuslik väli",
-      "REPORT_REQUIRED": "Kohustuslik väli",
-      "TYPE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "ACCOUNT_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "DEFAULTUSER_REQUIRED": "Kohustuslik väli",
-      "CALLERID_REQUIRED": "Kohustuslik väli",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "VALIDITYSTART_REQUIRED": "Kohustuslik väli",
-      "VALIDITYEND_REQUIRED": "Kohustuslik väli",
-      "MONTHDAY_REQUIRED": "Kohustuslik väli",
-      "HOUR_REQUIRED": "Kohustuslik väli",
-      "CONTENT_REQUIRED": "Kohustuslik väli",
-      "URL_REQUIRED": "Kohustuslik väli",
-      "URL_MUST_VALID_URL": "Vale formaat",
-      "APPLICATION_REQUIRED": "Kohustuslik väli",
-      "ARGUMENTS_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "POLLING_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "TITLE_REQUIRED": "Kohustuslik väli",
-      "EMAILADDRESS_REQUIRED": "Kohustuslik väli",
-      "EVENTVARIABLES_REQUIRED": "Kohustuslik väli",
-      "INTEGRATION_REQUIRED": "Kohustuslik väli",
-      "LIST_REQUIRED": "Kohustuslik väli",
-      "TEMPLATE_REQUIRED": "Kohustuslik väli",
-      "AUTOCREATECONTACT_REQUIRED": "Kohustuslik väli",
-      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
-      "QUEUE_REQUIRED": "Kohustuslik väli",
-      "TIME_RANGE_TO_REQUIRED": "Kohustuslik väli",
-      "WEEK_DAYS_TO_REQUIRED": "Kohustuslik väli",
-      "MONTH_DAYS_TO_REQUIRED": "Kohustuslik väli",
-      "MONTH_TO_REQUIRED": "Kohustuslik väli",
-      "TIME_RANGE_FROM_INVALID": "Vale formaat",
-      "TIME_RANGE_TO_INVALID": "Vale formaat",
-      "ACTION_REQUIRED": "Kohustuslik väli",
-      "CONFIGURATION_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
-      "LOCATION_REQUIRED": "Kohustuslik väli",
-      "OUTPUT_REQUIRED": "Kohustuslik väli",
-      "REPORTTYPE_REQUIRED": "Kohustuslik väli",
-      "REPORTFOLDER_REQUIRED": "Kohustuslik väli",
-      "REPORTSUBFOLDER_REQUIRED": "Kohustuslik väli",
+      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "REFRESH_REQUIRED": "Mandatory field",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory field",
+      "PATH_REQUIRED": "Mandatory field",
+      "FORMAT_REQUIRED": "Mandatory field",
+      "REPORT_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "ACCOUNT_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "DEFAULTUSER_REQUIRED": "Mandatory field",
+      "CALLERID_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The Passwords don't match",
+      "VALIDITYSTART_REQUIRED": "Mandatory field",
+      "VALIDITYEND_REQUIRED": "Mandatory field",
+      "MONTHDAY_REQUIRED": "Mandatory field",
+      "HOUR_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "URL_REQUIRED": "Mandatory field",
+      "URL_MUST_VALID_URL": "Wrong format",
+      "APPLICATION_REQUIRED": "Mandatory field",
+      "ARGUMENTS_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
+      "TITLE_REQUIRED": "Mandatory field",
+      "EMAILADDRESS_REQUIRED": "Mandatory field",
+      "EVENTVARIABLES_REQUIRED": "Mandatory field",
+      "INTEGRATION_REQUIRED": "Mandatory field",
+      "LIST_REQUIRED": "Mandatory field",
+      "TEMPLATE_REQUIRED": "Mandatory field",
+      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
+      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
+      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_TO_REQUIRED": "Mandatory field",
+      "TIME_RANGE_FROM_INVALID": "Wrong Format",
+      "TIME_RANGE_TO_INVALID": "Wrong Format",
+      "ACTION_REQUIRED": "Mandatory field",
+      "CONFIGURATION_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "LOCATION_REQUIRED": "Mandatory field",
+      "OUTPUT_REQUIRED": "Mandatory field",
+      "REPORTTYPE_REQUIRED": "Mandatory field",
+      "REPORTFOLDER_REQUIRED": "Mandatory field",
+      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "INFO_REQUIRED": "Kohustuslik väli",
       "SCRIPT_REQUIRED": "Kohustuslik väli",
       "IGNOREDIALERCONTACTID_REQUIRED": "Ignoreeri helistaja kontakti ID väli on kohustuslik"
     },
     "HOST": "Host",
-    "SECRET": "Saladus",
-    "DEFAULTUSER": "Vaikimisi Kasutaja",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_TRUNK": "Lisa Magistraal",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Default User",
+    "DESCRIPTION": "Description",
+    "ADD_TRUNK": "Add Trunk",
     "HELP": {
-      "T38PT_UDPTL": "Es: jah,liiasus,maxdatagram=400",
-      "SECRET": "Autentimise parool",
-      "HOST": "Domeen või hosti nimi",
-      "DEFAULTUSER": "Autentimise kasutajanimi",
-      "CALLERID": "Helistaja ID, formaadis \"nimi\" <number>",
-      "REGISTRY": "Registri string, kui on teenusepakkuja poolt nõutav, reeglina vaikimisi kasutaja:secret@host",
-      "FROMDOMAIN": "Vaikimisi seatud Kellelt:domeen SIP sõnumites, tegutsedes kui SIP ua (klient). Mõned sihtkohad nõuavad kohustuslikku identiteedinime ainuüksi IP-aadressi asemel",
-      "FROMUSER": "Mille järgi sinu teenusepakkuja sind ära tunneb. How your provider knows you. See tähendab, millist kasutajat sisestada helistaja ID asemel kõnede paigutamisel partnerile (teine SIP puhver). Kehtib ainult tüüp=partner korral.",
-      "OUTBOUNDPROXY": "IP-address või DNS SRV nimi (välja arvatud _sip._udp prefix): SRV nimi, hostinimi, või väljuva SIP puhvri IP-aadress. Saada väljuv signaliseerimine sellele puhvrile, mitte otse seadmetele. Kehtib ainult tüüp=partner korral.",
-      "PORT": "SIP pordi number",
-      "CONTEXT": "Kontekst magistraali jaoks",
-      "TYPE": "Määra SIPi roll asteriskis. Kasutaja: kasutatakse sisenevate autentimiseks - Partner: väljuvatele kõnedele - Sõber: katab mõlemad plaltoodud tunnused.",
-      "DTMFMODE": "Kuidas DTMF (Multisageduslik kakstoonvalimine) saadetakse. RFC2833: vaikimisi režiim, DTMF saadetakse koos RTP-ga, kuid väljaspool helivoogu. INBAND: DTMF saadetakse jooksva vestluse helivoos, mis on kuuldav kõlaritest. Eeldab kõrget CPU laetuse taset. INFO: Ehkki tegemist on väga usaldusväärse meetodiga, ei ole see toetatud kõikide PBX seadmete poolt ja paljude SIP Magistraalide poolt.",
-      "NAT": "Muudab Asteriski käitumise kliendi jaoks tulemüüri taga. Kui mõni komadega eraldatud valikutest on 'ei', Asterisk ignoreerib mistahes muid sätteid ja seadistab nat=no.",
-      "QUALIFY": "Tuvasta, millal on SIP saavutatav",
-      "ALLOWCODECS": "Lubatud koodeks eelistusjärjekorras",
-      "INSECURE": "Täpsusta, kuidas käsitleda ühendusi partneritega, lubades ebaturvalisi sätteid",
-      "CALL_LIMIT": "Sissetulevate ja väljaminevate samaaegsete kõnede piitnumber",
-      "DIRECTMEDIA": "Asterisk proovib vaikimisi ümber suunata RTP meedium voo liikumist otse kutsujalt kutsutavale. Mõned seadmed seda ei toeta (eriti kui üks neist on NATi taga). Vaikimisi seadistus on JAH. Kui sul on kõik kliendid NATi taga, või soovid Asteriski püsimist audio teel mõnel muul põhjusel, siis on soovituslik see välja lülitada.",
-      "CALLCOUNTER": "Aktiveeri seadmetel kõnede loendur",
-      "ADD_PHONE_TO_URI": "Määra, kui teenusepakkuja nõuab ';kasutaja=telefon' URLil",
-      "TRUST_REMOTE_PARTY_ID": "Määra, kui Kaugosaleja ID-d peaks usaldama",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Määra, kui Kaugosaleja ID tuleb saata (vaikimisi on EI)",
-      "ENCRYPTION": "Kas pakkuda SRTP krüpteeritud meediumi (ja üksnes SRTP krüpteeritud meedium) väljuvatele kõnedele partneri jaoks. Kõned nurjuvad HANGUPCAUSE=58, kui partner ei toeta SRTP-d.  Vaikimisi väärtus on Ei",
-      "TRANSPORT": "Seadista vaikimisi transpordid, eelistusjärjekorras",
-      "OTHERFIELDS": "Muud väljad magistraali konf failides lisamiseks. Järgi vaikimisi asteriski formaati (võti=väärtus), iga väli eraldi real",
-      "EMAILADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "EVENTVARIABLES": "Kui aktiveeritud, lisab see kõik sündmuse muutujad URL-le (soovituslik väärtus=Ei. Määra Jah üksnes hindamise eesmärgil) ",
-      "BODY": "Kui ei ole täidetud, saadetakse vaikeväärtus",
+      "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
+      "SECRET": "Authentication password",
+      "HOST": "The domain or host name",
+      "DEFAULTUSER": "Authentication username",
+      "CALLERID": "The Caller ID, in the format \"name\" <number>",
+      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
+      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
+      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
+      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
+      "PORT": "The SIP port number",
+      "CONTEXT": "The context for the trunk",
+      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
+      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
+      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
+      "QUALIFY": "Determine when the SIP is achievable",
+      "ALLOWCODECS": "Allowed codecs in order of preference",
+      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
+      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
+      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
+      "CALLCOUNTER": "Enable call counters on devices",
+      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
+      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
+      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
+      "TRANSPORT": "Set the default transports, in order of preference",
+      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
+      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
+      "BODY": "If not filled out, the default value will be sent",
       "HEADERS": "Märkus. Päiste jaotis peab olema RAW JSON-vormingus {\"võti\": \"väärtus\"}\nMärkus: kui seda ei täideta, saadetakse vaikeväärtus",
-      "INFO": "Sisesta pealkiri",
-      "SCRIPT": "Sisesta skript",
-      "SCRIPT_INFO": "Sisesta skripti kirjeldus",
-      "SCRIPT_TYPE": "Sisesta skripti tüpoloogia (nt curl, bash ...)",
-      "TIMEOUT": "Taotle sekundit. Väärtus peab olema vahemikus 1ā€“10 ja vaikeväärtus 5.",
+      "INFO": "Sisestage pealkiri",
+      "SCRIPT": "Sisestage skript",
+      "SCRIPT_INFO": "Sisestage skripti kirjeldus",
+      "SCRIPT_TYPE": "Sisestage skripti tüpoloogia (nt curl, bash ...)",
+      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
       "MANAGED": "Lõpetatud interaktsioonide koguarv",
       "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
-    "EDIT_TRUNK": "Muuda Magistraali",
-    "DELETE_TRUNK": "Kustuta Magistraal",
-    "CREATED_AT": "Loomisaeg",
-    "SETTINGS": "Sätted",
-    "ADVANCED": "Täpsem",
-    "OTHER": "Muu",
-    "ACTIVE": "Aktiivne",
-    "CONTEXT": "Kontekst",
-    "CALLERID": "Helistaja ID",
-    "TYPE": "Tüüp",
-    "DTMFMODE": "DTMF Režiim",
+    "EDIT_TRUNK": "Edit Trunk",
+    "DELETE_TRUNK": "Delete Trunk",
+    "CREATED_AT": "Created At",
+    "SETTINGS": "Settings",
+    "ADVANCED": "Advanced",
+    "OTHER": "Other",
+    "ACTIVE": "Active",
+    "CONTEXT": "Context",
+    "CALLERID": "Caller ID",
+    "TYPE": "Type",
+    "DTMFMODE": "DTMF Mode",
     "NAT": "NAT",
-    "QUALIFY": "Kvalifitseerima",
-    "ALLOWCODECS": "Lubatud Koodeks",
-    "INSECURE": "Ebaturvaline",
-    "REGISTRY": "Register",
-    "DIRECTMEDIA": "Otsene Meedium",
-    "CALLCOUNTER": "Kõnede Loendur",
-    "FROMDOMAIN": "Domeenilt",
-    "FROMUSER": "Kasutajalt",
-    "OUTBOUNDPROXY": "Väljaminev Puhver",
-    "ADD_PHONE_TO_URI": "Lisa Telefon URLi",
-    "TRUST_REMOTE_PARTY_ID": "Usalda Kaugosaleja ID-d",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Saada Kaugosalejale ID  Päis",
-    "ENCRYPTION": "Krüpteerimine",
+    "QUALIFY": "Qualify",
+    "ALLOWCODECS": "Allowed Codecs",
+    "INSECURE": "Insecure",
+    "REGISTRY": "Registry",
+    "DIRECTMEDIA": "Direct Media",
+    "CALLCOUNTER": "Call Counter",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From User",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Add Phone to URL",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
+    "ENCRYPTION": "Encryption",
     "PORT": "Port",
     "TRANSPORT": "Transport",
-    "SAVE": "Salvesta",
-    "VARIABLES": "Muutujad",
-    "ADD_VARIABLE": "Lisa Muutuja",
-    "EDIT_VARIABLE": "Redigeeri Muutuja",
-    "DELETE_VARIABLE": "Kustuta Muutuja",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "TAGS": "Sildid",
-    "ADD_TAG": "Lisa Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "DELETE_TAG": "Kustuta Silt",
-    "PAUSES": "Pausile",
-    "ADD_PAUSE": "Lisa Paus",
-    "EDIT_PAUSE": "Redigeeri Pausi",
-    "DELETE_PAUSE": "Kustuta Paus",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "ADD_CANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CANNEDANSWER": "Redigeeri Salvestatud Vastus",
-    "DELETE_CANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "KEY": "Võti",
-    "VALUE": "Väärtus",
-    "SOUNDS": "Helid",
-    "EDIT_SOUND": "Redigeeri Heli",
-    "DELETE_SOUND": "Kustuta Heli",
-    "CANCEL": "Tühista",
-    "FINISH": "Lõpeta",
-    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
-    "UPLOADING": "Üleslaadimine",
-    "TRIGGERS": "Käivitamised",
-    "EDIT_TRIGGER": "Redigeeri Käivitust",
-    "DELETE_TRIGGER": "Kustuta Käivitus",
-    "ADD_TRIGGER": "Lisa Käivitus",
-    "DELETE": "Kustuta",
-    "AUTOMATIONS": "Automaatika",
-    "EDIT_AUTOMATION": "Redigeeri Automaatikat",
-    "DELETE_AUTOMATION": "Kustuta Automaatika",
-    "ADD_AUTOMATION": "Lisa Automaatika",
-    "INTERVALS": "Intervallid",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_INTERVAL": "Kustuta Intervall",
-    "ADD_INTERVAL": "Lisa Intervall",
-    "TOOLS": "Tööriistad",
-    "ID": "ID",
+    "SAVE": "Save",
+    "VARIABLES": "Variables",
+    "ADD_VARIABLE": "Add Variable",
+    "EDIT_VARIABLE": "Edit Variable",
+    "DELETE_VARIABLE": "Delete Variable",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "TAGS": "Tags",
+    "ADD_TAG": "Add Tag",
+    "EDIT_TAG": "Edit Tag",
+    "DELETE_TAG": "Delete Tag",
+    "PAUSES": "Pauses",
+    "ADD_PAUSE": "Add Pause",
+    "EDIT_PAUSE": "Edit Pause",
+    "DELETE_PAUSE": "Delete Pause",
+    "CANNEDANSWERS": "Canned Answers",
+    "ADD_CANNEDANSWER": "Add Canned Answer",
+    "EDIT_CANNEDANSWER": "Edit Canned Answer",
+    "DELETE_CANNEDANSWER": "Delete Canned Answer",
+    "KEY": "Key",
+    "VALUE": "Value",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Edit Sound",
+    "DELETE_SOUND": "Delete Sound",
+    "CANCEL": "Cancel",
+    "FINISH": "Finish",
+    "DROP_TO_UPLOAD": "Drop To Upload",
+    "UPLOADING": "Uploading",
+    "TRIGGERS": "Triggers",
+    "EDIT_TRIGGER": "Edit Trigger",
+    "DELETE_TRIGGER": "Delete Trigger",
+    "ADD_TRIGGER": "Add Trigger",
+    "DELETE": "Delete",
+    "AUTOMATIONS": "Automations",
+    "EDIT_AUTOMATION": "Edit Automation",
+    "DELETE_AUTOMATION": "Delete Automation",
+    "ADD_AUTOMATION": "Add Automation",
+    "INTERVALS": "Intervals",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_INTERVAL": "Delete Interval",
+    "ADD_INTERVAL": "Add Interval",
+    "TOOLS": "Tools",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Laadi alla Heli",
-    "UPLOAD_SOUND": "Tööriistad",
-    "CHANNEL": "Kanal",
-    "NEW_TRIGGER": "Uus Käivitus",
-    "GENERAL": "Üldine",
-    "STATUS": "Staatus",
-    "CONDITIONS&ACTIONS": "Tingimused ja Tegevused",
-    "ALLCONDITIONS": "Täida kõik need tingimused:",
-    "ANYCONDITIONS": "Täida mistahes milline neist tingimustest:",
-    "ACTIONS": "Tegevused:",
-    "NEW_AUTOMATION": "Uus Automaatika",
-    "TIMEOUT": "Aegumine",
-    "PEERSTATUS": "Partneri Staatus",
-    "CALL_LIMIT": "Kõnede Limiit",
-    "OTHERFIELDS": "Muud Väljad",
-    "NEW_VARIABLE": "Uus Muutuja",
-    "NEW_TAG": "Uus Silt",
-    "NEW_PAUSE": "Uus Paus",
-    "NEW_CANNEDANSWER": "Uus Salvestatud Vastus",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "NEW_TRUNK": "Uus Magistraal",
-    "FROM": "Kellelt",
-    "TO": "Kellele",
-    "WEEKDAY": "Nädalapäev",
-    "MONTHDAY": "Kuupäev",
-    "MONTH": "Kuu",
-    "ALWAYS": "Alati",
-    "MON": "Esmaspäev",
-    "TUE": "Teisipäev",
-    "WED": "Kolmapäev",
-    "THU": "Neljapäev",
-    "FRI": "Reede",
-    "SAT": "Laupäev",
-    "SUN": "Pühapäev",
-    "JAN": "Jaanuar",
-    "FEB": "Veebruar",
-    "MAR": "Märts",
-    "APR": "Aprill",
-    "MAY": "Mai",
-    "JUN": "Juuni",
-    "JUL": "Juuli",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Tools",
+    "CHANNEL": "Channel",
+    "NEW_TRIGGER": "New Trigger",
+    "GENERAL": "General",
+    "STATUS": "Status",
+    "CONDITIONS&ACTIONS": "Conditions & Actions",
+    "ALLCONDITIONS": "Meet all these conditions:",
+    "ANYCONDITIONS": "Meet any of these conditions:",
+    "ACTIONS": "Actions:",
+    "NEW_AUTOMATION": "New Automation",
+    "TIMEOUT": "Timeout",
+    "PEERSTATUS": "Peer Status",
+    "CALL_LIMIT": "Calls Limit",
+    "OTHERFIELDS": "Other Fields",
+    "NEW_VARIABLE": "New Variable",
+    "NEW_TAG": "New Tag",
+    "NEW_PAUSE": "New Pause",
+    "NEW_CANNEDANSWER": "New Canned Answer",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "NEW_TRUNK": "New Trunk",
+    "FROM": "From",
+    "TO": "To",
+    "WEEKDAY": "Week Day",
+    "MONTHDAY": "Month Day",
+    "MONTH": "Month",
+    "ALWAYS": "Always",
+    "MON": "Monday",
+    "TUE": "Tuesday",
+    "WED": "Wednesday",
+    "THU": "Thursday",
+    "FRI": "Friday",
+    "SAT": "Saturday",
+    "SUN": "Sunday",
+    "JAN": "January",
+    "FEB": "February",
+    "MAR": "March",
+    "APR": "April",
+    "MAY": "May",
+    "JUN": "June",
+    "JUL": "July",
     "AUG": "August",
     "SEP": "September",
-    "OCT": "Oktober",
+    "OCT": "October",
     "NOV": "November",
-    "DEC": "Detsember",
-    "PASSWORD": "Parool",
-    "CUSTOMDASHBOARDS": "Kohandatud Töölaud",
-    "NEW_CUSTOMDASHBOARD": "Uus Kohandatud Töölaud",
-    "ADD_CUSTOMDASHBOARD": "Lisa Kohandatud Töölaud",
-    "EDIT_CUSTOMDASHBOARD": "Redigeeri Kohandatud Töölauda",
-    "DELETE_CUSTOMDASHBOARD": "Kustuta Kohandatud Töölaud",
-    "SCHEDULER": "Plaanija",
-    "NEW_SCHEDULE": "Uus Plaanija",
-    "ADD_SCHEDULE": "Lisa Plaanija",
-    "EDIT_SCHEDULE": "Redigeeri Plaanijat",
-    "DELETE_SCHEDULE": "Kustuta Plaanija",
-    "SENDMAIL": "Saada E-mail",
-    "CONFIGURATION": "Konfiguratsioon",
-    "MAIL": "E-mail",
-    "REPORTTYPE": "Rapordi Tüüp",
-    "REPORT": "Raport",
-    "OUTPUT": "Väljund",
-    "EXECUTEON": "Käivita",
-    "REPORTRANGE": "Rapordi Vahemik",
-    "VALIDITYSTART": "Alguse Aeg",
-    "VALIDITYEND": "Lõpu Aeg",
-    "EXECUTEEVERY": "Täida iga",
-    "ACCOUNT": "Konto",
-    "EMAILADDRESS": "E-maili aadress",
-    "EMAILCCADDRESS": "Koopia",
-    "EMAILBCCADDRESS": "Salakoopia",
-    "CURRENTDAY": "Jooksev Päev",
-    "DAILY": "Igapäevane",
-    "WEEKLY": "Iganädalane",
-    "MONTHLY": "Igakuine",
-    "PREVIOUS_DAY": "Eemine päev",
-    "LAST_SEVEN_DAYS": "Viimased Seitse Päev",
-    "LAST_THIRTY_DAYS": "Viimased Kolmkümmend Päeva",
-    "LAST_MONTH": "Viimane Kuu",
-    "WEEKDAYS": "Nädalapäevad",
-    "HOUR": "Tund",
-    "DEFAULT": "Vaikimisi",
+    "DEC": "December",
+    "PASSWORD": "Password",
+    "CUSTOMDASHBOARDS": "Custom Dashboards",
+    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
+    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
+    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "New Schedule",
+    "ADD_SCHEDULE": "Add Schedule",
+    "EDIT_SCHEDULE": "Edit Schedule",
+    "DELETE_SCHEDULE": "Delete Schedule",
+    "SENDMAIL": "Send Email",
+    "CONFIGURATION": "Configuration",
+    "MAIL": "Email",
+    "REPORTTYPE": "Report Type",
+    "REPORT": "Report",
+    "OUTPUT": "Output",
+    "EXECUTEON": "Execute On",
+    "REPORTRANGE": "Report Range",
+    "VALIDITYSTART": "Start Time",
+    "VALIDITYEND": "End Time",
+    "EXECUTEEVERY": "Execute every",
+    "ACCOUNT": "Account",
+    "EMAILADDRESS": "Email Address",
+    "EMAILCCADDRESS": "Cc",
+    "EMAILBCCADDRESS": "Bcc",
+    "CURRENTDAY": "Current Day",
+    "DAILY": "Daily",
+    "WEEKLY": "Weekly",
+    "MONTHLY": "Monthly",
+    "PREVIOUS_DAY": "Previous Day",
+    "LAST_SEVEN_DAYS": "Last Seven Days",
+    "LAST_THIRTY_DAYS": "Last Thirthy Days",
+    "LAST_MONTH": "Last Month",
+    "WEEKDAYS": "Week Days",
+    "HOUR": "Hour",
+    "DEFAULT": "Default",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutit",
-    "30MIN": "30 minutit",
-    "1H": "1 tund",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
+    "15MIN": "15 minutes",
+    "30MIN": "30 minutes",
+    "1H": "1 hour",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
     "SMS": "SMS",
-    "OPENCHANNEL": "Ava Kanal",
-    "TEMPLATES": "Mallid",
-    "EDIT_TEMPLATE": "Redigeeri Malli",
-    "DELETE_TEMPLATE": "Kustuta Mall",
-    "NEW_TEMPLATE": "Uus Mall",
-    "ADD_TEMPLATE": "Lisa Mall",
-    "CONTENT": "Sisu",
-    "FIELD": "Väli",
-    "NO_ANYCONDITION_AVAILABLE": "Tingimusi pole saadaval",
-    "NO_ALLCONDITION_AVAILABLE": "Tingimusi pole saadaval",
-    "NO_ACTION_AVAILABLE": "Tegevusi pole saadaval",
-    "ACTION": "Tegevus",
-    "EDIT_ANYCONDITION": "Redigeeri Tingimust",
-    "DELETE_ANYCONDITION": "Kustuta Tingimus",
-    "NEW_ANYCONDITION": "Uus Tingimus",
-    "ADD_ANYCONDITION": "Lisa Tingimus",
-    "EDIT_ALLCONDITION": "Redigeeri Tingimust",
-    "DELETE_ALLCONDITION": "Kustuta Tingimus",
-    "NEW_ALLCONDITION": "Uus Tingimus",
-    "ADD_ALLCONDITION": "Lisa Tingimus",
-    "EDIT_ACTION": "Redigeeri Tegevust",
-    "DELETE_ACTION": "Kustuta Tegevus",
-    "NEW_ACTION": "Uus Tegevus",
-    "ADD_ACTION": "Lisa Tegevus",
-    "QUEUE": "Järjekord",
-    "CALL_STATUS": "Kõne Staatus",
-    "OUTBOUNDROUTE": "Väljaminev Tee",
-    "EQUALS": "Võrduvad",
-    "NOT_EQUALS": "Ei Võrdu",
-    "CONTACT_MANAGER": "Kontaktide Haldur",
-    "INTEGRATIONS": "Integratsioonid",
-    "MOTIONBAR": "Liikumisriba",
+    "OPENCHANNEL": "Open Channel",
+    "TEMPLATES": "Templates",
+    "EDIT_TEMPLATE": "Edit Template",
+    "DELETE_TEMPLATE": "Delete Template",
+    "NEW_TEMPLATE": "New Template",
+    "ADD_TEMPLATE": "Add Template",
+    "CONTENT": "Content",
+    "FIELD": "Field",
+    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
+    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
+    "NO_ACTION_AVAILABLE": "No Actions available",
+    "ACTION": "Action",
+    "EDIT_ANYCONDITION": "Edit Condition",
+    "DELETE_ANYCONDITION": "Delete Condition",
+    "NEW_ANYCONDITION": "New Condition",
+    "ADD_ANYCONDITION": "Add Condition",
+    "EDIT_ALLCONDITION": "Edit Condition",
+    "DELETE_ALLCONDITION": "Delete Condition",
+    "NEW_ALLCONDITION": "New Condition",
+    "ADD_ALLCONDITION": "Add Condition",
+    "EDIT_ACTION": "Edit Action",
+    "DELETE_ACTION": "Delete Action",
+    "NEW_ACTION": "New Action",
+    "ADD_ACTION": "Add Action",
+    "QUEUE": "Queue",
+    "CALL_STATUS": "Call Status",
+    "OUTBOUNDROUTE": "Outbound Route",
+    "EQUALS": "Equals",
+    "NOT_EQUALS": "Not Equals",
+    "CONTACT_MANAGER": "Contacts Manager",
+    "INTEGRATIONS": "Integrations",
+    "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Edastamine",
-    "WEB_POPUP": "Veebi Hüpik",
-    "LIST": "Loend",
-    "INTEGRATION": "Integratsioon",
-    "TEMPLATE": "Mall",
+    "URL_FORWARD": "URL Forward",
+    "WEB_POPUP": "Web Popup",
+    "LIST": "List",
+    "INTEGRATION": "Integration",
+    "TEMPLATE": "Template",
     "URL": "URL",
-    "APPLICATION": "Rakendus",
+    "APPLICATION": "Application",
     "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
-    "NEW_INTERVAL": "Uus Intervall",
-    "OPERATOR": "Operaator",
-    "NO_INTERVALS_AVAILABLE": "Intervallid pole saadaval",
-    "YES": "Jah",
-    "NO": "Ei",
-    "SUBJECT": "Teema",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "BROWSER": "Brauser",
-    "INTERVAL": "Intervall",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "NEW_INTERVAL": "New Interval",
+    "OPERATOR": "Operator",
+    "NO_INTERVALS_AVAILABLE": "No intervals available",
+    "YES": "Yes",
+    "NO": "No",
+    "SUBJECT": "Subject",
+    "NO_AVAILABLE_INFO": "No available info",
+    "BROWSER": "Browser",
+    "INTERVAL": "Interval",
     "INFO": "Info",
-    "TIME_RANGE": "Ajavahemik",
-    "WEEK_DAYS": "Nädalapäevad",
-    "MONTH_DAYS": "Kuupäevad",
-    "MONTHS": "Kuud",
-    "DROP_TO_UPLOAD_MESSAGE": "Kukuta audiofailid siia üleslaadimiseks. Ainulty MP3, WAV, GSM - Maks. 15MB",
-    "POLLING_INTERVAL": "Küsitlemise Intervall (sekundid)",
-    "DASHBOARD": "Töölaud",
-    "NEW_DASHBOARDITEM": "Uus Töölaua Vidin",
-    "COUNTER": "Loendur",
+    "TIME_RANGE": "Time Range",
+    "WEEK_DAYS": "Week Days",
+    "MONTH_DAYS": "Month Days",
+    "MONTHS": "Months",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
+    "POLLING_INTERVAL": "Polling Interval (seconds)",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "New Dashboard Widget",
+    "COUNTER": "Counter",
     "IFRAME": "IFrame",
-    "CLOCK": "Kell",
-    "ADD_DASHBOARDITEM": "Lisa Töölaua Vidin",
-    "EDIT_WIDGET": "Redigeeri Vidinat",
-    "DELETE_WIDGET": "Kustuta Vidin",
-    "FLIP_WIDGET": "Pööra Vidinat",
-    "TITLE": "Pealkiri",
-    "UPDATE": "Uuenda",
-    "LAYOUT": "Paigutus",
-    "BACKGROUND_COLOR": "Taustavärv",
-    "FOREGROUND_COLOR": "Esiplaani Värv",
-    "FOREGROUND_TITLE_COLOR": "Esiplaani Pealkirja Värv",
-    "THEME": "Teema",
-    "LIGHT": "Hele",
-    "DARK": "Tume",
-    "TIMEZONE": "Ajavöönd",
-    "DIGITAL_FORMAT": "Numbriline Kuupäeva Formaat",
-    "TOOLS_QUERY": "Päring",
-    "SELECT": "Vali",
-    "WHERE": "Kus",
-    "BACK": "Tagasi",
-    "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Mine Reaalaja Magistraali",
-    "GOTO_TRUNK": "Mine Magistraali",
+    "CLOCK": "Clock",
+    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
+    "EDIT_WIDGET": "Edit Widget",
+    "DELETE_WIDGET": "Delete Widget",
+    "FLIP_WIDGET": "Flip Widget",
+    "TITLE": "Title",
+    "UPDATE": "Update",
+    "LAYOUT": "Layout",
+    "BACKGROUND_COLOR": "Background Color",
+    "FOREGROUND_COLOR": "Foreground Color",
+    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
+    "THEME": "Theme",
+    "LIGHT": "Light",
+    "DARK": "Dark",
+    "TIMEZONE": "TimeZone",
+    "DIGITAL_FORMAT": "Digital Date Format",
+    "TOOLS_QUERY": "Query",
+    "SELECT": "Select",
+    "WHERE": "Where",
+    "BACK": "Back",
+    "PROJECT": "Project",
+    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
+    "GOTO_TRUNK": "Go To Trunk",
     "CRON": "Cron",
-    "MINUTES": "Minutid",
-    "HOURLY": "Igatunnine",
-    "YEARLY": "Iga-aastane",
-    "EVERY": "Iga",
-    "MINUTE": "Minut",
-    "ON_SECOND": "Teisel",
-    "HOUR_ON_MINUTE": "Tund minutil",
-    "AND_SECOND": "Ja teine",
+    "MINUTES": "Minutes",
+    "HOURLY": "Hourly",
+    "YEARLY": "Yearly",
+    "EVERY": "Every",
+    "MINUTE": "Minute",
+    "ON_SECOND": "On second",
+    "HOUR_ON_MINUTE": "Hour on minute",
+    "AND_SECOND": "And second",
     "DAY_AT": "Day at",
-    "START_TIME": "Algusaeg",
+    "START_TIME": "Start Time",
     "ON_THE": "On the",
     "OF_EVERY": "Of every",
     "MONTH_AT": "Month at",
     "AT": "At",
-    "LAST": "Eelmine",
-    "LASTUNIT": "Üksus",
-    "MAILACCOUNT": "E-maili Konto",
+    "LAST": "Last",
+    "LASTUNIT": "Unit",
+    "MAILACCOUNT": "Email Account",
     "OF": "of",
-    "PAST_THE_HOUR": "Üle täistunni",
-    "DAY": "Päev",
-    "WEEK": "Nädal",
-    "YEAR": "Aasta",
+    "PAST_THE_HOUR": "Past the hour",
+    "DAY": "Day",
+    "WEEK": "Week",
+    "YEAR": "Year",
     "ON": "On",
-    "PAI": "P-Tõendatud-Identiteet",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
-    "EVENTVARIABLES": "Sündmuse Muutujad",
-    "AUTOCREATECONTACT": "Loo kontakt automaatselt",
-    "LOCATION": "Asukoht",
-    "NEW_TAB": "Uus Vahekaart",
-    "NEW_WINDOW": "Uus Aken",
-    "WINDOWWIDTH": "Akna Laius(px)",
-    "WINDOWHEIGHT": "kna Kõrgus(px)",
-    "BODY": "Sisu",
-    "REPORTFOLDER": "Rapordi Kaust",
-    "REPORTSUBFOLDER": "Rapordi Alamkaust",
+    "PAI": "P-Asserted-Identity",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "EVENTVARIABLES": "Event Variables",
+    "AUTOCREATECONTACT": "Create contact automatically",
+    "LOCATION": "Location",
+    "NEW_TAB": "New Tab",
+    "NEW_WINDOW": "New Window",
+    "WINDOWWIDTH": "Window Width(px)",
+    "WINDOWHEIGHT": "Window Height(px)",
+    "BODY": "Body",
+    "REPORTFOLDER": "Report Folder",
+    "REPORTSUBFOLDER": "Report Subfolder",
     "AGENT": "Agent",
     "HEADERS": "Päised",
     "MOTION_TAB": "Uus esindaja juhtpaneeli vahekaart",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tüüp",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPP": "WhatsApp-pistik",
     "AUTOCREATE_FIELD": "Automaatne välja loomine",
-    "GLOBALS": "Üldised",
+    "GLOBALS": "Globaalid",
     "SEARCH_FIELDS": "Otsinguväljad",
     "STANDARD": "Standard",
-    "MOTION_BAR": "Liikumisriba",
+    "MOTION_BAR": "Motion Bar",
     "ALL": "Kõik",
-    "ALL_DISPOSITIONS": "Kõik kasutused",
-    "FIRST_LEVEL_DISPOSITION": "Esimese taseme kasutus",
+    "ALL_DISPOSITIONS": "Kõik dispositsioonid",
+    "FIRST_LEVEL_DISPOSITION": "Esimese taseme käsutus",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
     "TITLEFONTSIZE": "Fondi pealkirja suurus",
+    "ADD_CONTACTITEMTYPE": "Lisama",
+    "CONTACTITEMTYPE": "Kontaktüksuste tüübid",
+    "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp",
+    "ORDER_BY": "Telli",
+    "RGBBACKGROUNDCOLOR": "RGB taustavärv",
     "EMAIL": "E -post",
     "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite",
     "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine",
     "OPENED_TEXT": "Avatud interaktsioonid",
     "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID",
     "MAIL_SUBSTATUS": "Meili alamolek",
-    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum"
+    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum",
+    "DELETE_CONTACTITEMTYPE": "Kustuta kontaktiüksuse tüüp",
+    "EDIT_CONTACTITEMTYPE": "Redigeerige kontaktiüksuse tüüpi",
+    "ORDER_BY_NUMERIC": "Järjestus välja järgi peab olema numbriline!"
   }
 }
index 3b220a5..116fbad 100644 (file)
     "CLOSEDAT": "Salvestage lõpuaeg",
     "CREATEDAT": "Loodud kell",
     "DELETE": "Kustuta",
-    "DELETE_SCREENRECORDING": "Kustuta ekraanisalvestus",
-    "DOWNLOAD_SCREENRECORDING": "Laadi alla ekraanisalvestus",
+    "DELETE_SCREENRECORDING": "Kustutage ekraanisalvestus",
+    "DOWNLOAD_SCREENRECORDING": "Laadige alla ekraanisalvestus",
     "DURATION": "Kestus",
     "EDIT_SCREENRECORDING": "Hinda ekraani salvestust",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "FORMAT": "Vorming",
-    "ID": "ID",
-    "INTERACTIONID": "Suhtluse ID",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ID": "Id",
+    "INTERACTIONID": "Koostoime ID",
+    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
     "NO_RATING": "Hinnang puudub",
-    "OF": "of",
-    "PAGE": "Lehekülg",
+    "OF": "kohta",
+    "PAGE": "Leht",
     "PLAY_SCREENRECORDING": "Esita ekraanisalvestus",
-    "PROPERTIES": "Atribuudid",
+    "PROPERTIES": "Omadused",
     "RATING": "Hinnang",
-    "RECORDENDTIME": "Salvesta lõpuaeg",
-    "RECORDSTARTTIME": "Salvesta algusaeg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "RECORDENDTIME": "Salvestage lõpuaeg",
+    "RECORDSTARTTIME": "Salvestage algusaeg",
+    "ROWSPERPAGE": "Ridasid lehel",
     "SAVE": "Salvesta",
     "SCREENRECORDINGS": "Ekraanisalvestused",
     "SEARCH_FOR_ANYONE": "Otsing",
-    "STARTEDAT": "Salvesta algusaeg",
+    "STARTEDAT": "Salvestage algusaeg",
     "UPDATEDAT": "Viimane uuendus",
     "VIDEO": "Video",
     "WRONG_EXTENSION": "Failis on vale laiend"
index fe28adb..e8fc04a 100644 (file)
 {
   "VOICE": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "ABANDONEDCALLS": "Tagasilükatud Järjekorra Kõned",
-    "WAITING_FOR_AGENTS": "Agendi ootel",
-    "ACTIVE": "Aktiivne",
-    "NO_AGENT_ONLINE": "Agente pole võrgus",
-    "PARTIALPAUSE": "Osaline Paus",
-    "STATUS": "Staatus",
-    "TIMER": "Taimer",
-    "ALL": "Kõik",
-    "IDLE": "Jõude",
-    "EDIT_TRUNK": "Redigeeri Magistraal",
-    "GOTO_VOICEQUEUE": "Mine Reaalaja Hääle Järjekorda",
-    "GOTOREALTIME_VOICEQUEUE": "Mine Reaalaja Hääle Järjekordadesse",
-    "NAME": "Nimi",
-    "LOGOUT": "Logi välja",
-    "VOICEQUEUES": "Hääle Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
-    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
-    "MOHSOUNDS": "Moh Helid",
-    "STRATEGY": "Strateegia",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
-    "CREATED_AT": "Loomisaeg",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Ei saa esitada gsm või wav49 audiofaile",
-    "APPLICATIONS_LIST": "Rakenduste Loend",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "ABANDONEDCALLS": "Abandoned Queue Calls",
+    "WAITING_FOR_AGENTS": "Waiting for agents",
+    "ACTIVE": "Active",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "PARTIALPAUSE": "Partial Pause",
+    "STATUS": "Status",
+    "TIMER": "Timer",
+    "ALL": "All",
+    "IDLE": "Idle",
+    "EDIT_TRUNK": "Edit Trunk",
+    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
+    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
+    "NAME": "Name",
+    "LOGOUT": "Logout",
+    "VOICEQUEUES": "Voice Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Queue",
+    "DELETE_VOICEQUEUE": "Delete Voice Queue",
+    "MOHSOUNDS": "Moh Sounds",
+    "STRATEGY": "Strategy",
+    "DESCRIPTION": "Description",
+    "ADD_VOICEQUEUE": "Add Voice Queue",
+    "CREATED_AT": "Created At",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
+    "APPLICATIONS_LIST": "Applications List",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Kohandatud rakendus"
+      "CUSTOM_APPLICATION": "(*) - Custom application"
     },
     "ERRORS": {
-      "TRUNK_REQUIRED": "Kohustuslik väli",
-      "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "APPLICATION_NAME_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
-      "CONTEXT_REQUIRED": "Kohustuslik väli",
-      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "MAILBOX_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "TRUNK_REQUIRED": "Mandatory field",
+      "VARIABLE_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "APPLICATION_NAME_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "PHONENUMBER_REQUIRED": "Mandatory field",
+      "CONTEXT_REQUIRED": "Mandatory field",
+      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "MAILBOX_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Kohustuslik väli",
-      "PREFIX_REQUIRED": "Kohustuslik väli",
-      "OPTIONS_REQUIRED": "Kohustuslik väli",
-      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EXTENSION_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "APPLICATION_REQUIRED": "Kohustuslik väli",
-      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Vale formaat",
-      "CALLER_ID_MUST_VALID_PATTERN": "Vale formaat",
+      "TIMEZONE_REQUIRED": "Mandatory field",
+      "PREFIX_REQUIRED": "Mandatory field",
+      "OPTIONS_REQUIRED": "Mandatory field",
+      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EXTENSION_REQUIRED": "Mandatory field",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "APPLICATION_REQUIRED": "Mandatory field",
+      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
+      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PROJECT_REQUIRED": "Kohustuslik väli",
-      "PENALTY_REQUIRED": "Tuleb määrata karistuse väärtus"
+      "PENALTY_REQUIRED": "Peate määrama karistuse väärtuse"
     },
-    "GENERAL": "Üldine",
-    "TIMEOUT": "Aegumine",
-    "MAXLENGTH": "Maksimaalne Pikkus",
-    "RETRY": "Proovi uuesti",
-    "WRAPUPTIME": "Lõpetamise Aeg",
-    "WEIGHT": "Kaal",
-    "JOINWHENEMPTY": "Ühine, kui on tühi",
-    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
+    "GENERAL": "General",
+    "TIMEOUT": "Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
     "HELP": {
-      "TIMEOUT": "Mitu sekundit seadmele helistamiseks",
-      "MAXLENGTH": "Järjekorras ootamiseks lubatud maksimaalne helistajate arv: null tähendab piiramatu",
-      "RETRY": "Aeg sekundites ootamiseks, enne teisele agendile helistamist järjekorras, kui vaheaeg on läbi saanud",
-      "WRAPUPTIME": "Aeg sekundites, et hoida järjekorra osaline kättesaamatuna pärast kõne lõpetamist",
-      "WEIGHT": "Järjekorra kaal, et määrata prioriteet, kui liikmed on seotud mitmete järjekordadega",
-      "JOINWHENEMPTY": "Kasutatakse, et kontrollida, kas helistaja on edastatud järjekorda, kui kättesaadavaid liikmeid pole",
-      "LEAVEWHENEMPTY": "Kasutatakse, et kontrollida, kas helistajad on suunatud järjekorrast lahkuma, kui kõnele vastamiseks kättesaadavaid liikmeid pole",
-      "ANNOUNCEFREQUENCY": "Kui sageli teavitada helistaja positsiooni ja/või hinnangulist ooteaega järjekorras(null blokeerimiseks)",
-      "MINANNOUNCEFREQUENCY": "Minimaalne teavituste sagedus (kasulik, kui helistaja positsioon muutub sageli)",
-      "PERIODICANNOUNCEFREQUENCY": "Helistaja perioodiliste teavituste sagedus",
-      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui teavituse positsiooni on määratud, kui 'piir' või 'rohkem'",
-      "AFTERCALLWORKDURATION": "Pausi pikkus, mida käivitab Kõnele Järgnev Töö valik",
-      "MEMBERDELAY": "Sisestab viivituse enne kui helistaja ja agent ühendust saavad järjekorras",
-      "MUSICONHOLD": "Seadistab muusika klassi kindla järjekorra puhul kasutamiseks",
-      "ANNOUNCETOAGENT": "Esita teavitus agendile, kes vastab kõnele (reeglina, et teavitada teda, millisest järjekorrast helistaja tuleb)",
-      "RANDOMPERIODICANNOUNCE": "Kui jah, siis esitatakse määratud perioodilised teavitused juhuslikult",
-      "ANNOUNCEHOLDTIME": "Esitab hinnangulise ooteaja koos perioodiliste teavitustega (Jah/Ei/Üks kord)",
-      "ANNOUNCECALLERPOSITION": "Kasutatakse, et määrata, kas helistaja positsioonist järjekorras tuleb teada anda: Ei=mitte kunagi; Jah=alati; Piir=ainult kui see on piiri raames, mis on määratud teavituse-positsiooni-piiriga; Rohkem= ainult kui see on väljaspool väärtust, mis on määratud teavituse-positsiooni-piiriga",
-      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teavitamist agendile järjekorras enne ühendamist",
-      "PERIODICANNOUNCE": "Perioodiliste teavituste kompleks esitamiseks (järjekorras)",
-      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOoteaegā€¯. Määramata=teavitust pole",
-      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOled nüüd järjekorras esimeneā€¯. Määramata=teavitust pole.",
-      "THEREAREANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cThere areā€¯. Määramata=teavitust pole",
-      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9ckõneootelā€¯. Määramata=teavitust pole",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cJooksev hinnanguline ooteaeg onā€¯. Määramata=teavitust pole",
-      "MINUTESANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
-      "MINUTEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
-      "SECONDSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9csekunditā€¯. Määramata=teavitust pole",
-      "THANKYOUANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cTäname Teid kannatlikkuse eestā€¯. Määramata=teavitust pole",
-      "AFTERCALLWORK": "Kui lubatud, määratakse agent Pausile pärast kõne lõpetamist",
-      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kelle kõnele vastamine nurjub. Kui lubatud, siis pannakse agent pausile kõikides järjekordades, kuhu ta kuulub.",
-      "RINGINUSE": "Vältimaks/lubamaks kõnede saatmist liikmetele, kelle staatus on Kasutusel",
-      "TIMEOUTRESTART": "Kui jah, lähtestab agendi vastamise augumist, kui HÕIVATUD või UMMIKU staatus kanalist saadakse",
-      "CONTEXT": "Lubab helistajal väljuda järjekorrast vajutades üks kord DTMF numbrimärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püütakse seda numbrit sobitada täpsustatud kontekstiga, ning valimisplaani täitmine jätkub sealt",
-      "SETINTERFACEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs)",
-      "SETQUEUEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga ja järjekorrast lahkumist (täpsema info saamiseks vata wiki docs",
-      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs",
-      "RECORDING": "Luba kõne salvestamine",
-      "VOICEMAIL_CONTEXT": "Seotud laienduse kontekst",
-      "NAME": "ja erimärgid (._) on toetatud",
-      "CALLERIDALL": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
-      "CALLER_ID": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausil olek, et seadistada kohustusliku kasutuse aega",
+      "TIMEOUT": "How many seconds to ring a device",
+      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
+      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
+      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
+      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
+      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
+      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
+      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
+      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
+      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+      "MUSICONHOLD": "Sets the music class to use for a particular queue",
+      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
+      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
+      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
+      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
+      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
+      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
+      "RECORDING": "Enable call recording",
+      "VOICEMAIL_CONTEXT": "The context of the relative extension",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
+      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)",
       "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata",
       "SAVE_ROUTES": "Marsruuti on muudetud. Ärge unustage salvestada, kui te ei soovi oma muudatusi kaotada."
     },
-    "MUSICONHOLD": "Muusika Ooteajal",
-    "ANNOUNCETOAGENT": "Teavita Agenti",
-    "ANNOUNCEMENTS": "Teavitused",
-    "ADVANCED": "Täpsem",
-    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
-    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
-    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavitamise Sagedus",
-    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
-    "ANNOUNCEHOLDTIME": "Teavita Ooteaeg",
-    "ANNOUNCECALLERPOSITION": "Teavita Helistaja Positsioon",
-    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Piir",
-    "REPORTHOLDTIMEAGENT": "Anna teada Agendi Ooteaeg",
-    "PERIODICANNOUNCE": "Perioodiline Teavitus",
-    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
-    "YOUARENEXTANNOUNCE": "'Olete järgmine' Teavitus",
-    "THEREAREANNOUNCE": "'Seal on' Teavitus",
-    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise OOteaja Teavitus",
-    "MINUTESANNOUNCE": "Minutite Teavitus",
-    "MINUTEANNOUNCE": "Minuti Teavitus",
-    "SECONDSANNOUNCE": "Sekundite Teavitus",
-    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
-    "AUTOPAUSE": "Automaatne Paus",
-    "AFTERCALLWORK": "Tööjärgne Kõne",
-    "AFTERCALLWORKDURATION": "Tööjärgse Kõne Kestus",
-    "RINGINUSE": "Helin Kasutusel",
-    "MEMBERDELAY": "Osalise Viivitus",
-    "TIMEOUTRESTART": "Aegumise Lähtestamine",
-    "MONITORFORMAT": "Salvestamise Formaat",
-    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujad",
-    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
-    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
-    "VARIABLE": "Muutuja",
-    "CONTEXT": "Kontekst",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "INBOUNDROUTES": "Sissetulevad Teed",
-    "PHONENUMBER": "Telefoninumber",
-    "ADD_INBOUNDROUTE": "Lisa Sissetulev Tee",
-    "EDIT_INBOUNDROUTE": "Redigeeri Sissetulev Tee",
-    "DELETE_INBOUNDROUTE": "Kustuta Sissetulev Tee",
-    "ACTIONS": "Tegevused",
-    "OUTBOUNDROUTES": "Väljaminevad Teed",
-    "DESTINATIONPATTERN": "Sihtkoha Muster",
-    "ADD_OUTBOUNDROUTE": "Lisa Väljaminev Tee",
-    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljaminev Tee",
-    "DELETE_OUTBOUNDROUTE": "Kustuta Väljaminev Tee",
-    "CUTDIGITS": "Eemalda Numbrid",
-    "RECORDING": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestamise formaat",
-    "INTERNALROUTES": "Sisemised Teed",
-    "ADD_INTERNALROUTE": "Lisa Sisemine Tee",
-    "EDIT_INTERNALROUTE": "Redigeeri Sisemine Tee",
-    "DELETE_INTERNALROUTE": "Kustuta Sisemine Tee",
-    "CONTEXTS": "Kontekstid",
-    "ADD_CONTEXT": "Lisa Kontekst",
-    "EDIT_CONTEXT": "Redigeeri Konteksti",
-    "DELETE_CONTEXT": "Kustuta Kontekst",
-    "VOICEMAILS": "Kõnepostid",
-    "ADD_VOICEMAIL": "Lisa Kõnepost",
-    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
-    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
-    "FULLNAME": "Täisnimi",
-    "EMAIL": "E-mail",
-    "MAILBOX": "Postkast",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TIMEZONE": "Ajavöönd",
-    "ATTACH": "Lisa",
-    "ENVELOPE": "Ümbrik",
-    "DELETE": "Kustuta",
-    "EMAILBODY": "E-maili Sisu",
-    "EMAILSUBJECT": "E-maili Teema",
-    "MAXSECONDS": "Maks Sekundeid",
-    "MAXMESSAGES": "Maks Sõnumeid",
-    "MESSAGES": "Sõnumid",
-    "SORT": "Sordi",
-    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
-    "MUSICONHOLDS": "Ootemuusika",
-    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
-    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
-    "DIRECTORY": "Kataloog",
-    "AUDIOFILES": "Audiofailid",
-    "RECORDINGS": "Salvestused",
+    "MUSICONHOLD": "Music On Hold",
+    "ANNOUNCETOAGENT": "Announce To Agent",
+    "ANNOUNCEMENTS": "Announcements",
+    "ADVANCED": "Advanced",
+    "ANNOUNCEFREQUENCY": "Announce Frequency",
+    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
+    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
+    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
+    "ANNOUNCEHOLDTIME": "Announce Hold Time",
+    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
+    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
+    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
+    "PERIODICANNOUNCE": "Periodic Announce",
+    "HOLDTIMEANNOUNCE": "Hold Time Announce",
+    "YOUARENEXTANNOUNCE": "'You are next' Announce",
+    "THEREAREANNOUNCE": "'There are' Announce",
+    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
+    "MINUTESANNOUNCE": "Minutes Announce",
+    "MINUTEANNOUNCE": "Minute Announce",
+    "SECONDSANNOUNCE": "Seconds Announce",
+    "THANKYOUANNOUNCE": "'Thank You' Announce",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "After Call Work",
+    "AFTERCALLWORKDURATION": "After Call Work Duration",
+    "RINGINUSE": "Ring In Use",
+    "MEMBERDELAY": "Member Delay",
+    "TIMEOUTRESTART": "Timeout Restart",
+    "MONITORFORMAT": "Recording Format",
+    "SETINTERFACEVARIABLES": "Set Interface Variables",
+    "SETQUEUEVARIABLES": "Set Queue Variables",
+    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
+    "VARIABLE": "Variable",
+    "CONTEXT": "Context",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "INBOUNDROUTES": "Inbound Routes",
+    "PHONENUMBER": "Phone Number",
+    "ADD_INBOUNDROUTE": "Add Inbound Route",
+    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
+    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
+    "ACTIONS": "Actions",
+    "OUTBOUNDROUTES": "Outbound Routes",
+    "DESTINATIONPATTERN": "Destination Pattern",
+    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
+    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
+    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
+    "CUTDIGITS": "Cut Digits",
+    "RECORDING": "Recording",
+    "RECORDINGFORMAT": "Recording format",
+    "INTERNALROUTES": "Internal Routes",
+    "ADD_INTERNALROUTE": "Add Internal Route",
+    "EDIT_INTERNALROUTE": "Edit Internal Route",
+    "DELETE_INTERNALROUTE": "Delete Internal Route",
+    "CONTEXTS": "Contexts",
+    "ADD_CONTEXT": "Add Context",
+    "EDIT_CONTEXT": "Edit Context",
+    "DELETE_CONTEXT": "Delete Context",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Add Voicemail",
+    "EDIT_VOICEMAIL": "Edit Voicemail",
+    "DELETE_VOICEMAIL": "Delete Voicemail",
+    "FULLNAME": "Full Name",
+    "EMAIL": "Email",
+    "MAILBOX": "Mailbox",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TIMEZONE": "Timezone",
+    "ATTACH": "Attach",
+    "ENVELOPE": "Envelope",
+    "DELETE": "Delete",
+    "EMAILBODY": "Email Body",
+    "EMAILSUBJECT": "Email Subject",
+    "MAXSECONDS": "Max Seconds",
+    "MAXMESSAGES": "Max Messages",
+    "MESSAGES": "Messages",
+    "SORT": "Sort",
+    "ADD_MUSICONHOLD": "Add Music On Hold",
+    "MUSICONHOLDS": "Music On Hold",
+    "EDIT_MUSICONHOLD": "Edit Music On Hold",
+    "DELETE_MUSICONHOLD": "Delete Music On Hold",
+    "DIRECTORY": "Directory",
+    "AUDIOFILES": "Audio Files",
+    "RECORDINGS": "Recordings",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Eesliide",
-    "OPTIONS": "Valikud",
-    "AUTH": "Autentimine",
-    "ADD_CHANSPY": "Lisa ChanSpy",
-    "EDIT_CHANSPY": "Redigeeri ChanSpy",
-    "DELETE_CHANSPY": "Kustuta ChanSpy",
-    "AGENTS": "Agendid",
-    "TELEPHONES": "Telefonid",
-    "QUEUES": "Järjekorrad",
-    "QUEUE_CALLS": "Järjekorra Kõned",
-    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
-    "ABANDONED_CALLS": "Tagasilükatud Kõned",
-    "OUTBOUND_CALLS": "Väljuvad Kõned",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Add ChanSpy",
+    "EDIT_CHANSPY": "Edit ChanSpy",
+    "DELETE_CHANSPY": "Delete ChanSpy",
+    "AGENTS": "Agents",
+    "TELEPHONES": "Telephones",
+    "QUEUES": "Queues",
+    "QUEUE_CALLS": "Queue Calls",
+    "QUEUE_PARAMETERS": "Queue Parameters",
+    "ABANDONED_CALLS": "Abandoned Calls",
+    "OUTBOUND_CALLS": "Outbound Calls",
     "AGI": "Agi",
-    "DIAL": "Valimine",
+    "DIAL": "Dial",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Sisemine Valimine",
-    "EXTERNALDIAL": "Välimine Valimine",
-    "RINGGROUP": "Helistamise Grupp",
-    "PLAYBACK": "Taasesitus",
-    "QUEUE": "Järjekord",
-    "SET": "Määra",
-    "VOICEMAIL": "Häälkõne",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
     "GOTO": "GoTo",
-    "HANGUP": "Katkestamine",
-    "CUSTOM": "Kohandatud",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Ressurss",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Redigeeri Rakendust",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_APP": "Kustuta Rakendus",
-    "INTERVALS": "Intervallid",
-    "USER": "Kasutaja",
-    "TRUNK": "Magistraal",
-    "PHONE": "Telefon",
-    "AUDIO_FILES": "Audiofailid",
-    "ANNOUNCE_OVERRIDES": "Teavituse Tühistamine",
-    "MACRO": "Makro",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Reegel",
-    "POSITION": "Positsioon",
-    "ANSWER": "Vastus",
-    "VALUE": "Väärtus",
-    "MAILBOX@CONTEXT": "Postkast ja Kontekst",
-    "EXTENSION": "Laiendus",
-    "PRIORITY": "Prioriteet",
-    "HANGUP_CAUSE": "Katkestamise Põhjus",
-    "OUTBOUNDDIAL": "Väljaminev Valimine",
-    "CALLER_ID": "Helistaja ID",
-    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
-    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
-    "VOICERECORDINGS": "Häälsalvestused",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Extension",
+    "PRIORITY": "Priority",
+    "HANGUP_CAUSE": "Hangup Cause",
+    "OUTBOUNDDIAL": "Outbound Dial",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "No messages available",
+    "NO_SOUND_AVAILABLE": "No sounds available",
+    "VOICERECORDINGS": "Voice Recordings",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Hääl",
-    "REALTIME": "Reaalaeg",
-    "ID": "ID",
-    "VOICEMAIL_CONTEXT": "Kontekst",
-    "NO_MOHSOUND_AVAILABLE": "Ooteaja Muusika pole saadaval",
-    "FILE": "Fail",
-    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
-    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
-    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
-    "UNIQUEID": "Unikaalne ID",
+    "VOICE": "Voice",
+    "REALTIME": "Realtime",
+    "ID": "Id",
+    "VOICEMAIL_CONTEXT": "Context",
+    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
+    "FILE": "File",
+    "ADD_MOHSOUND": "Add Music On Hold sound",
+    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
+    "DELETE_MOHSOUND": "Delete Music On Hold sound",
+    "UNIQUEID": "Unique ID",
     "AGENT": "Agent",
-    "TYPE": "Tüüp",
-    "RATING": "Hinnang",
+    "TYPE": "Type",
+    "RATING": "Rating",
     "AUDIO": "Audio",
-    "DATE": "Kuupäev",
-    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
-    "NEW_INBOUNDROUTE": "Uus Sissetulev Tee",
-    "NEW_OUTBOUNDROUTE": "Uus Väljaminev Tee",
-    "NEW_INTERNALROUTE": "Uus Sisemine Tee",
-    "NEW_CONTEXT": "Uus Kontekst",
-    "NEW_VOICEMAIL": "Uus Kõnepost",
-    "NEW_MUSICONHOLD": "Uus Ootemuusika",
-    "NEW_CHANSPY": "Uus ChanSpy",
-    "PENALTY": "Trahv",
-    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "EDIT_DIAL": "Redigeeri Valimist",
-    "EDIT_AGI": "Redigeeri AGI",
-    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
-    "EDIT_EXTERNALDIAL": "Redigeeri Välimist Valimist",
-    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
-    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_SET": "Redigeeri Määramist",
-    "EDIT_GOTO": "Redigeeri GoTo",
-    "EDIT_HANGUP": "Redigeeri Katkestamist",
-    "EDIT_CUSTOM": "Redigeeri Kohandatud",
-    "DURATION": "Kestus",
-    "RECEIVED_AT": "Kättesaamise aeg",
-    "YES": "Jah",
-    "NO": "Ei",
-    "HANGUPCAUSE_1": "1 = Määramata number",
-    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
-    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
-    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühendatud)",
-    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
-    "HANGUPCAUSE_22": "22 = Number muudetud",
-    "HANGUPCAUSE_27": "27 = Sihtkoht ei toimi",
-    "HANGUPCAUSE_38": "38 = Võrk ei toimi",
-    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
-    "RANDOM": "Juhuslik",
-    "ALPHABETICAL": "Tähestikuline",
-    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
-    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
-    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "TRUNK_STATUS": "Magistraali Staatus",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "LAGGED": "Viivitatud",
-    "REACHABLE": "Kättesaadav",
-    "UNREACHABLE": "Pole kättesaadav",
-    "UNKNOWN": "Teadmata",
-    "NOT_INUSE": "Pole Kasutusel",
-    "INUSE": "Kasutusel",
-    "BUSY": "Hõivatud",
-    "INVALID": "Kehtetu",
-    "UNAVAILABLE": "Pole kättesaadav",
-    "RINGING": "Heliseb",
-    "ONHOLD": "Ootel",
-    "RING": "Helista",
-    "UP": "Üles",
+    "DATE": "Date",
+    "NEW_VOICEQUEUE": "New Voice Queue",
+    "NEW_INBOUNDROUTE": "New Inbound Route",
+    "NEW_OUTBOUNDROUTE": "New Outbound Route",
+    "NEW_INTERNALROUTE": "New Internal Route",
+    "NEW_CONTEXT": "New Context",
+    "NEW_VOICEMAIL": "New Voicemail",
+    "NEW_MUSICONHOLD": "New Music On Hold",
+    "NEW_CHANSPY": "New ChanSpy",
+    "PENALTY": "Penalty",
+    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
+    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
+    "EDIT_DIAL": "Edit Dial",
+    "EDIT_AGI": "Edit AGI",
+    "EDIT_INTERNALDIAL": "Edit Internal Dial",
+    "EDIT_EXTERNALDIAL": "Edit External Dial",
+    "EDIT_RINGGROUP": "Edit Ring Group",
+    "EDIT_PLAYBACK": "Edit Playback",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_SET": "Edit Set",
+    "EDIT_GOTO": "Edit GoTo",
+    "EDIT_HANGUP": "Edit Hangup",
+    "EDIT_CUSTOM": "Edit Custom",
+    "DURATION": "Duration",
+    "RECEIVED_AT": "Received At",
+    "YES": "Yes",
+    "NO": "No",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
+    "RANDOM": "Random",
+    "ALPHABETICAL": "Alphabetical",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Delete Voice Recording",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "TRUNK_STATUS": "Trunk Status",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "LAGGED": "Lagged",
+    "REACHABLE": "Reachable",
+    "UNREACHABLE": "Unreachable",
+    "UNKNOWN": "Unknown",
+    "NOT_INUSE": "Not In Use",
+    "INUSE": "In Use",
+    "BUSY": "Busy",
+    "INVALID": "Invalid",
+    "UNAVAILABLE": "Unavailable",
+    "RINGING": "Ringing",
+    "ONHOLD": "On Hold",
+    "RING": "Ring",
+    "UP": "Up",
     "INFO": "Info",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "LOGGED_IN": "Sisse logitud (SIP Ühendusega)",
-    "PAUSED": "Pausil",
-    "WAITING": "OOtel",
-    "TALKING": "Rääkimine",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "LOGGED_IN": "Logged In (SIP Connected)",
+    "PAUSED": "Paused",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
     "DID": "DID",
-    "CALLER": "Helistaja",
-    "TOTAL": "Kokku",
-    "ANSWERED": "Vastatud",
-    "ABANDONED": "Tagasi lükatud",
-    "UNMANAGED": "Haldamata",
-    "AVG_HOLD_TIME": "Avg Ooteaeg",
-    "AVG_DURATION": "Avg Kestus",
-    "AVG_BILLABLE": "Avg Arveldatav",
-    "SOURCE": "Allikas",
-    "DESTINATION": "Sihtkoht",
-    "REJECTED": "Katkestatud",
-    "FAILED": "Nurjunud",
-    "CALLED": "Helistatud",
-    "CONNECTED": "Ühendatud",
-    "NO_RATING": "Hinnang puudub",
-    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
-    "APPLICATION_NAME": "Rakenduse nimi",
-    "ARGUMENTS": "Argumendid",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
-    "DEFAULT_PAUSE": "VAIKIMISI PAUS",
-    "PAUSE": "Pausile",
-    "UNPAUSE": "Lõpeta Paus",
-    "REDIRECT_TO_NUMBER": "Suuna ümber Numbrile",
-    "REDIRECT_TO_AGENT": "Suuna ümber Agendile",
-    "AGENTADD_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "APPLICATION": "Rakendus",
-    "FILES": "Failid",
-    "FORMAT": "Formaat",
-    "MODE": "Režiim",
-    "RECORD": "Kirje",
-    "TEAMADD_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "NEW_MOHSOUND": "Uus Ootemuusika heli",
-    "DOWNLOAD_MESSAGE": "Allalaadimine",
-    "DELETE_MESSAGE": "Kustuta",
-    "QUEUE_PARAMS": "Järjekorra Parameetrid",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "READY": "Valmis",
-    "AGENTADD_QUEUE": "Lisa Agent Hääle Järjekorda",
-    "AGENTSADD_QUEUE": "Lisa Agents Hääle Järjekorda",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CLOSING": "Sulgemine",
-    "TAGS": "Sildid",
-    "WAITING_FOR_AGENT": "Agentide Ootamine",
-    "EDIT_OUTBOUNDDIAL": "Redigeeri Väljuvat Valimist",
-    "ACCOUNTNAME": "Konto Nimi",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "CALLER": "Caller",
+    "TOTAL": "Total",
+    "ANSWERED": "Answered",
+    "ABANDONED": "Abandoned",
+    "UNMANAGED": "Unmanaged",
+    "AVG_HOLD_TIME": "Avg Hold Time",
+    "AVG_DURATION": "Av Duration",
+    "AVG_BILLABLE": "Avg Billable",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "REJECTED": "Rejected",
+    "FAILED": "Failed",
+    "CALLED": "Called",
+    "CONNECTED": "Connected",
+    "NO_RATING": "No rating",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "APPLICATION_NAME": "Application Name",
+    "ARGUMENTS": "Arguments",
+    "NO_AVAILABLE_INFO": "No Available Info",
+    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
+    "DEFAULT_PAUSE": "DEFAULT PAUSE",
+    "PAUSE": "Pause",
+    "UNPAUSE": "End Pause",
+    "REDIRECT_TO_NUMBER": "Redirect To Number",
+    "REDIRECT_TO_AGENT": "Redirect To Agent",
+    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
+    "APPLICATION": "Application",
+    "FILES": "Files",
+    "FORMAT": "Format",
+    "MODE": "Mode",
+    "RECORD": "Record",
+    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
+    "NEW_MOHSOUND": "New Music On Hold sound",
+    "DOWNLOAD_MESSAGE": "Download",
+    "DELETE_MESSAGE": "Delete",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "TOTAL_OFFERED": "Total Offered",
+    "READY": "Ready",
+    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
+    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CLOSING": "Closing",
+    "TAGS": "Tags",
+    "WAITING_FOR_AGENT": "Waiting For Agents",
+    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
+    "ACCOUNTNAME": "Account Name",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "DISPOSITION": "Kasutus",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
+    "DISPOSITION": "Disposition",
+    "CHAT": "Chat",
+    "MAIL": "Email",
     "SMS": "SMS",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
-    "CLEAR": "Puhasta",
-    "CALLS": "Kõned",
-    "STARTEDAT": "Algusaeg",
-    "ENDEDAT": "Lõpu aeg",
-    "TAG": "Silt",
-    "DETAILS": "Üksikasjad",
-    "BILLABLESECONDS": "Tasustatavad sekundid",
-    "ANSWEREDAT": "Vastamise aeg",
-    "NOTE": "Märge",
-    "CLOSE": "Sule",
-    "SELECT_DATE": "Vali Alguse Kuupäev",
-    "SELECT_TYPE": "Vali Tüüp",
-    "VOICEPREFIXES": "Välised Eesliited",
-    "NEW_VOICEPREFIX": "Uus Eesliide",
-    "ADD_VOICEPREFIX": "Lisa Eesliide",
-    "EDIT_VOICEPREFIX": "Redigeeri Eesliidet",
-    "AGENTADD_VOICEPREFIX": "Lisa Agent Eesliitele",
-    "DELETE_VOICEPREFIX": "Kustuta Eesliidet",
-    "OUTBOUNDROUTE": "Väljuv Tee",
-    "CALLERIDALL": "Helistaja ID",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "CLEAR": "Clear",
+    "CALLS": "Calls",
+    "STARTEDAT": "Started At",
+    "ENDEDAT": "Ended At",
+    "TAG": "Tag",
+    "DETAILS": "Details",
+    "BILLABLESECONDS": "Billable seconds",
+    "ANSWEREDAT": "Answered At",
+    "NOTE": "Note",
+    "CLOSE": "Close",
+    "SELECT_DATE": "Select Start Date",
+    "SELECT_TYPE": "Select Type",
+    "VOICEPREFIXES": "Out Prefixes",
+    "NEW_VOICEPREFIX": "New Prefix",
+    "ADD_VOICEPREFIX": "Add Prefix",
+    "EDIT_VOICEPREFIX": "Edit Prefix",
+    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
+    "DELETE_VOICEPREFIX": "Delete Prefix",
+    "OUTBOUNDROUTE": "Outbound Route",
+    "CALLERIDALL": "Caller Id",
     "CANT_DOWNLOAD_THIS_FILE": "Seda faili ei saa alla laadida",
     "DIALER": "Helistaja",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadi alla transkriptsiooni häälsalvestus",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadige ärakiri alla",
     "FAILUREREASON": "Rikke põhjus",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "INBOUND": "Sissetulev",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku kasutamise pausi olek",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "OUTBOUND": "Väljaminev",
-    "RUNSENTIMENT_VOICERECORDING": "Käivita Arvamus",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivita transkriptsioon ja häälsalvestus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Käivita transkriptsioon",
+    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivitage transkriptsioon ja meeleolu",
+    "RUNTRANSCRIBE_VOICERECORDING": "Käivitage transkriptsioon",
     "SCREENRECORDING": "Halda ekraanisalvestust",
-    "SENTIMENT": "Arvamus",
-    "SENTIMENTANALYSIS": "Arvamuste analüüs",
-    "SENTIMENT_MIXED": "Kombineeritud",
+    "SENTIMENT": "Tunne",
+    "SENTIMENTANALYSIS": "Sentimentide analüüs",
+    "SENTIMENT_MIXED": "Segatud",
     "SENTIMENT_NEGATIVE": "Negatiivne",
     "SENTIMENT_NEUTRAL": "Neutraalne",
     "SENTIMENT_POSITIVE": "Positiivne",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
-    "TEAMS_ASSOCIATION": "iimide liit",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TEXT": "Tekst",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "TRANSCRIBE": "Transkribeeri",
+    "TRANSCRIBE": "Transkribeerida",
     "TRANSCRIBESTATUS_COMPLETED": "Lõpetatud",
-    "TRANSCRIBESTATUS_FAILED": "Nurjunud",
+    "TRANSCRIBESTATUS_FAILED": "Ebaõnnestus",
     "TRANSCRIBESTATUS_IN_PROGRESS": "Pooleli",
     "TRANSCRIBESTATUS_NEW": "Uus",
-    "TRANSCRIPT": "Transkriptsioon",
-    "TRANSCRIPTANALYSIS": "Transkriptsioon ja analüüs",
+    "TRANSCRIPT": "Ärakiri",
+    "TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
     "WRONG_EXTENSION": "Failis on vale laiend",
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
     "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
-    "ALIAS": "Teise nimega"
+    "ALIAS": "Teise nimega",
+    "MAXCAPACITY": "Maksimaalne mahutavus",
+    "WORKING": "Töötab"
   }
 }
index e8c6282..7c8316a 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
       "ACCOUNTSID_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "AGENT_TIMEOUT_REQUIRED": "Kohustuslik väli",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Kohustuslik väli",
       "DESCRIPTION_REQUIRED": "Kohustuslik väli",
       "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "FALSEPRIORITY_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
       "KEY_REQUIRED": "Kohustuslik väli",
       "LANGUAGE_REQUIRED": "Kohustuslik väli",
       "LEXREGION_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NAME_REQUIRED": "Kohustuslik väli",
       "PHONE_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "QUEUE_REQUIRED": "Kohustuslik väli",
       "SECRETACCESSKEY_REQUIRED": "Kohustuslik väli",
       "TAG_REQUIRED": "Kohustuslik väli",
       "TEXT_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
       "TIMES_REQUIRED": "Kohustuslik väli",
       "TOKEN_REQUIRED": "Kohustuslik väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "TRUEPRIORITY_REQUIRED": "Kohustuslik väli",
       "TYPE_REQUIRED": "Kohustuslik väli",
       "VALUE_REQUIRED": "Kohustuslik väli",
       "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli",
+      "BASEURL_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "MOTIONPROXY": "Väljal peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
-      "NAME": "Toetatud on ainult numbrid, tähed ja erimärgid (._)",
-      "RECEIVEURL": "See on automaatselt loodud API string, mida peab kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Konnektori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele"
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "MOTIONPROXY": "Välja peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
+      "NAME": "Toetatud on ainult numbrid, tähed ja kindlad märgid (._)",
+      "RECEIVEURL": "See on automaatselt loodud API string, mida peate kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Connectori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
     },
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "ACCOUNTSID": "Konto SID",
     "ACTIONS": "Tegevused",
-    "ADD_NOTE": "Lisa märkus",
-    "ADD_WHATSAPPACCOUNT": "Lisa",
-    "ADD_WHATSAPPCANNEDANSWER": "Lisa salvestatud vastus",
-    "ADD_WHATSAPPDISPOSITION": "Lisa WhatsAppi Kasutus",
-    "ADD_WHATSAPPQUEUE": "Lisa WhatsAppi järjekord",
+    "ADD_NOTE": "Lisada märkus",
+    "ADD_WHATSAPPACCOUNT": "Lisama",
+    "ADD_WHATSAPPCANNEDANSWER": "Lisage konserveeritud vastus",
+    "ADD_WHATSAPPDISPOSITION": "Lisage WhatsApp Disposition",
+    "ADD_WHATSAPPQUEUE": "Lisage järjekord WhatsApp",
     "ADVANCED": "Täpsemad",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Lisa agent WhatsAppi järjekorda",
-    "AGENTADD_WHATSAPPACCOUNT": "Lisa agent WhatsAppi kontole",
-    "AGENTADD_WHATSAPPQUEUE": "Lisa agent WhatsAppi järjekorda",
-    "AGENTS": "Agendid",
-    "AGENTSADD_QUEUE": "Lisa esindajad WhatsAppi järjekorda",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "AGENT_TIMEOUT": "Agendi aegumine",
+    "AGENTADD_QUEUE": "Lisage agent WhatsApp'i järjekorda",
+    "AGENTADD_WHATSAPPACCOUNT": "Lisage agent WhatsApi kontole",
+    "AGENTADD_WHATSAPPQUEUE": "Lisage agent WhatsApp'i järjekorda",
+    "AGENTS": "Agentid",
+    "AGENTSADD_QUEUE": "Lisage esindajad WhatsApi järjekorda",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "AGENT_TIMEOUT": "Agent aegumine",
     "ALL": "Kõik",
     "ALL_AGENTS": "Kõik esindajad",
-    "ALL_TEAMS": "Kõik tiimid",
+    "ALL_TEAMS": "Kõik võistkonnad",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Autentimisluba",
+    "AUTHTOKEN": "Autentimismärk",
     "AUTOREPLY": "Automaatne vastus",
     "BACK": "tagasi",
     "BOTNAME": "Boti nimi",
     "BUSY": "Hõivatud",
-    "CANNEDANSWERS": "Salvestatud vastused",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst salvestatud vastusest otsimiseks",
+    "CANNEDANSWERS": "Konserveeritud vastused",
+    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisestage tekst konserveeritud vastusest otsimiseks",
     "CAPACITY": "Maht",
-    "CLOSE": "Sule",
+    "CLOSE": "Sulge",
     "CLOSED": "Suletud",
     "CLOSEMETHOD": "Sule meetod",
-    "CLOSEURL": "Suge URL",
+    "CLOSEURL": "Sulge URL",
     "COMMAND": "Käsk",
     "CONDITION": "Seisund",
     "CONTACT": "Võtke ühendust",
-    "CREATED_AT": "Loomisaeg",
+    "CREATED_AT": "Loodud kell",
     "DEFAULT_PAUSE": "Vaikimisi paus",
     "DELETE": "Kustuta",
-    "DELETE_INTERACTION": "Kustuta suhtlus",
+    "DELETE_INTERACTION": "Kustuta interaktsioon",
     "DELETE_SELECTED": "Kustuta valitud",
-    "DELETE_WHATSAPPACCOUNT": "Kustuta WhatsAppi konto",
+    "DELETE_WHATSAPPACCOUNT": "Kustutage WhatsApi konto",
     "DELETE_WHATSAPPCANNEDANSWER": "Kustutatud",
-    "DELETE_WHATSAPPDISPOSITION": "Kustuta WhatsAppi Kasutus",
-    "DELETE_WHATSAPPQUEUE": "Kustuta WhatsAppi Järjekord",
+    "DELETE_WHATSAPPDISPOSITION": "Kustutage WhatsApp Disposition",
+    "DELETE_WHATSAPPQUEUE": "Kustutage WhatsApp Queue",
     "DESCRIPTION": "Kirjeldus",
-    "DIALOGFLOW": "Dialoogivoog",
-    "DISPOSITION": "Kasutused",
-    "DISPOSITIONS": "Kasutused",
-    "DOWNLOAD_INTERACTION": "Laadi alla",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
-    "EDIT_AGENT": "Redigeeri agenti",
+    "DIALOGFLOW": "DialogFlow",
+    "DISPOSITION": "Dispositsioon",
+    "DISPOSITIONS": "Dispositsioonid",
+    "DOWNLOAD_INTERACTION": "Lae alla",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "EDIT_AGENT": "Redigeeri esindajat",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "EDIT_CLOSE": "Redigeerimine Sulgemine",
-    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoo konfiguratsiooni",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_CLOSE": "Redigeerimine Sulge",
+    "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
+    "EDIT_GOTOIF": "Redigeeri Gotoifi",
     "EDIT_GOTOP": "Redigeeri Gotopit",
-    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_NOOP": "Redigeeri Noopi",
     "EDIT_QUEUE": "Redigeeri järjekorda",
     "EDIT_SYSTEM": "Redigeeri süsteemi",
     "EDIT_TAG": "Redigeeri silti",
-    "EDIT_WHATSAPPACCOUNT": "Muuda WhatsAppi kontot",
+    "EDIT_WHATSAPPACCOUNT": "Muutke WhatsApi kontot",
     "EDIT_WHATSAPPCANNEDANSWER": "Redigeeri",
-    "EDIT_WHATSAPPDISPOSITION": "Muuda WhatsAppi kasutust",
-    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsAppi järjekorda",
+    "EDIT_WHATSAPPDISPOSITION": "Muutke WhatsApi dispositsiooni",
+    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsApi järjekorda",
     "FALSEPRIORITY": "Vale prioriteet",
     "GENERAL": "Kindral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Mine reaalajas WhatsAppi järjekorda",
-    "GO_TO_WHATSAPPACCOUNTS": "Mine kontole",
-    "ID": "ID",
-    "IDLE": "Jõude",
-    "INSERT_MESSAGE_HERE": "Sisesta sõnum siia",
-    "INTERACTIONS": "Suhtlused",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Mine jaotisse Suhtlused",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Minge reaalajas WhatsApi järjekorda",
+    "GO_TO_WHATSAPPACCOUNTS": "Minge kontole",
+    "ID": "Id",
+    "IDLE": "Tühikäik",
+    "INSERT_MESSAGE_HERE": "Sisestage sõnum siia",
+    "INTERACTIONS": "Koostoimed",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Minge jaotisse Interaktsioonid",
     "KEY": "Võti",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane sõnum",
     "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "MORE": "Veel",
     "MOTIONPROXY": "Puhverserver või liikumisdomeen",
     "MULTI_SELECT_TOGGLE": "Mitme valiku lülitamine",
     "NAME": "Nimi",
-    "NEW_WHATSAPPACCOUNT": "Uus WhatsAppi konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Uus WhatsAppi salvestatud vastus",
-    "NEW_WHATSAPPDISPOSITION": "Uus WhatsAppi kasutus",
-    "NEW_WHATSAPPQUEUE": "Uus WhatsAppi järjekord",
+    "NEW_WHATSAPPACCOUNT": "Uus WhatsApi konto",
+    "NEW_WHATSAPPCANNEDANSWER": "Uus vastus WhatsAppile",
+    "NEW_WHATSAPPDISPOSITION": "Uus seade WhatsApp",
+    "NEW_WHATSAPPQUEUE": "Uus WhatsApi järjekord",
     "NOOP": "Noop",
     "NOTE": "Märge",
     "NOTIFICATION": "Teatamine",
-    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONSHAKE": "Raputama",
     "NOTIFICATIONSOUND": "Heli",
     "NOTIFICATIONTEMPLATE": "Mall",
-    "NO_AGENT_ONLINE": "Agente pole võrgus",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "NO_INTERACTION_AVAILABLE": "Ühtegi suhtlust pole saadaval",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsAppi salvestatud vastuseid pole saadaval",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsAppi kasutused pole saadaval",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi kontosid pole saadaval",
-    "OF": "of",
+    "NO_AGENT_ONLINE": "Pole esindajat võrgus",
+    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
+    "NO_INTERACTION_AVAILABLE": "Ühtegi interaktsiooni pole saadaval",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsApi konserveeritud vastuseid pole saadaval",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsApi dispositsioonid pole saadaval",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsApi kontosid pole saadaval",
+    "OF": "kohta",
     "OPENED": "Avatud",
     "PAGE": "Leht",
     "PARTIALPAUSE": "Osaline paus",
     "PROXY": "Puhverserver",
     "QUEUE": "Järjekord",
     "QUEUES": "Järjekorrad",
-    "QUEUETRANSFER": "Järjekorra edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra edastamise aegumine",
+    "QUEUETRANSFER": "Järjekorra ülekandmine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra ülekandmise ajalõpp",
     "READY": "Valmis",
     "REALTIME": "Reaalajas",
-    "RECEIVEURL": "URL-i vastuvõtmine",
-    "REFRESH_INTERACTIONS": "Värskenda suhtlusi",
-    "REMOTE": "Kaugjuhtimine",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "RECEIVEURL": "Saate URL-i",
+    "REFRESH_INTERACTIONS": "Värskenda interaktsioone",
+    "REMOTE": "Kaugjuhtimispult",
+    "ROWSPERPAGE": "Ridasid lehel",
     "SAVE": "Salvesta",
     "SCREENRECORDING": "Halda ekraanisalvestust",
     "SEARCH_FOR_ANYONE": "Otsing",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "SELECTED": "Valitud",
-    "SELECTED_AGENTS": "Valitud agendid",
-    "SELECTED_TEAMS": "Valitud tiimid",
+    "SELECTED_AGENTS": "Valitud esindajad",
+    "SELECTED_TEAMS": "Valitud meeskonnad",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Ärge valige ühtegi",
+    "SELECT_NONE": "Valige ükski",
     "SEND": "Saada",
-    "SETTINGS": "Sätted",
-    "SPYINTERACTION": "Spiooni suhtlus",
-    "STARTEDAT": "Alustatud kell",
+    "SETTINGS": "Seadistused",
+    "SPYINTERACTION": "Spioonide interaktsioon",
+    "STARTEDAT": "Alustati kell",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STATUS": "Olek",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
     "SYSTEM": "Süsteem",
     "TAG": "Silt",
     "TAGS": "Sildid",
-    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsAppi järjekorda",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsApp'i järjekorda",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TEXT": "Tekst",
     "TIMEOUT": "Aeg maha",
     "TIMER": "Taimer",
     "TIMES": "Ajad",
-    "TO": "Kellele",
+    "TO": "Et",
     "TOKEN": "Märk",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TRANSFER": "Ülekanne",
-    "TRUEPRIORITY": "Tõene prioriteet",
+    "TRUEPRIORITY": "Tõeline prioriteet",
     "TYPE": "Tüüp",
     "UNPAUSE": "Lõpeta paus",
     "VALUE": "Väärtus",
-    "VARIABLE": "Muutuja",
-    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud agenti",
-    "WAITING": "Ootamine",
-    "WELCOMEMESSAGE": "Tervitussõµnum",
-    "WHATSAPP": "WhatsApp-ühendus",
-    "WHATSAPPACCOUNTS": "WhatsAppi kontod",
-    "WHATSAPPCANNEDANSWERS": "WhatsAppi salvestatud vastused",
-    "WHATSAPPDISPOSITIONS": "WhatsAppi kasutused",
-    "WHATSAPPQUEUES": "WhatsAppi järjekorrad",
-    "CLIENTEMAIL": "Kliendi e-mail",
+    "VARIABLE": "Muutuv",
+    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud esindajat",
+    "WAITING": "Ootan",
+    "WELCOMEMESSAGE": "Tervitussõnum",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPPACCOUNTS": "WhatsApi kontod",
+    "WHATSAPPCANNEDANSWERS": "WhatsApi konserveeritud vastused",
+    "WHATSAPPDISPOSITIONS": "WhatsApi dispositsioonid",
+    "WHATSAPPQUEUES": "WhatsApi järjekorrad",
+    "CLIENTEMAIL": "Kliendi e-post",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID"
+    "PROJECTID": "Projekti ID",
+    "BASEURL": "Baas-URL",
+    "DELIVERYREPORTURL": "Edastamisaruande URL"
   }
 }
index f98da63..fd2a755 100644 (file)
@@ -1,73 +1,73 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
-    "NO_AVAILABLE_GROUPS": "Vabu Gruppe pole",
-    "SAVE": "Salvesta",
+    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
+    "NO_AVAILABLE_GROUPS": "No Available Groups",
+    "SAVE": "Save",
     "INFO": "Info",
-    "NEW_CHATGROUP": "Uus Grupp",
-    "NAME": "Nimi",
-    "MEMBERS": "Liikmed",
-    "ENABLE_WRITING": "Luba Kirjutamine",
-    "GROUPS": "Gruppid",
-    "YOU": "Teie + {{osalejad}}",
-    "NEW_INTERNAL_MESSAGE": "Uus sisemine sõnum",
-    "DELETE": "Kustuta",
-    "SEARCH": "Otsi",
-    "USERS": "Kasutajad",
-    "TODAY": "TÄNA",
-    "MONDAY": "Esmaspäev",
-    "TUESDAY": "Teisipäev",
-    "WEDNESDAY": "Kolmapäev",
-    "THURSDAY": "Neljapäev",
-    "FRIDAY": "Reede",
-    "SATURDAY": "Laupäev",
-    "SUNDAY": "Pühapäev",
-    "JANUARY": "Jaanuar",
-    "FEBRUARY": "Veebruar",
-    "MARCH": "Märts",
-    "APRIL": "Aprill",
-    "MAY": "Mai",
-    "JUNE": "Juuni",
-    "JULY": "Juuli",
+    "NEW_CHATGROUP": "New Group",
+    "NAME": "Name",
+    "MEMBERS": "Members",
+    "ENABLE_WRITING": "Enable Writing",
+    "GROUPS": "Groups",
+    "YOU": "You + {{participants}}",
+    "NEW_INTERNAL_MESSAGE": "New internal message",
+    "DELETE": "Delete",
+    "SEARCH": "Search",
+    "USERS": "Users",
+    "TODAY": "TODAY",
+    "MONDAY": "Monday",
+    "TUESDAY": "Tuesday",
+    "WEDNESDAY": "Wednesday",
+    "THURSDAY": "Thursday",
+    "FRIDAY": "Friday",
+    "SATURDAY": "Saturday",
+    "SUNDAY": "Sunday",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "Oktoober",
+    "OCTOBER": "October",
     "NOVEMBER": "November",
-    "DECEMBER": "Detsember",
-    "CHAT": "VESTLUS",
-    "ACTIVITY": "TEGEVUS",
-    "FRIENDS": "Sõbrad",
-    "APP_SERVERS": "Rakenduse Serverid",
-    "USER_STATS": "Kasutaja Stat",
-    "EVENTS": "Sündmused",
-    "NOTES": "Märkmed",
-    "QUICK_SETTINGS": "Kiirsätted",
-    "NOTIFICATIONS": "Teatised",
-    "CLOUD_SYNC": "Pilve Sünk",
+    "DECEMBER": "December",
+    "CHAT": "CHAT",
+    "ACTIVITY": "ACTIVITY",
+    "FRIENDS": "Friends",
+    "APP_SERVERS": "Application Servers",
+    "USER_STATS": "User Stats",
+    "EVENTS": "Events",
+    "NOTES": "Notes",
+    "QUICK_SETTINGS": "Quick Settings",
+    "NOTIFICATIONS": "Notifications",
+    "CLOUD_SYNC": "Cloud Sync",
     "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Hiljutine",
-    "START_NEW_CHAT": "Alusta Uut Vestlust",
-    "BACK": "Tagasi",
-    "CALL": "Helista",
-    "MORE": "Rohkem",
-    "SEND_MESSAGE": "Saada sõnum",
-    "REPLY_PLACEHOLDER": "Tipi ja vajuata enter sõnumi saatmiseks",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Võta ühendust xCALLY Liikumise Toega",
-    "EXPIRATION_DATE": "Aegumiskuupäev",
-    "EXPIRATION_REASON": "Aegumise Põhjus",
-    "LICENSE": "Litsents",
-    "NEW_TOKEN": "Uus Luba",
-    "OLD_TOKEN": "Vana Luba",
-    "SEND_EMAIL_TO": "Saada E-mail Kellele",
-    "TOKEN": "Luba",
-    "EXPIRATION_REASON_MESSAGE": "Sinu litsents on aegunud või sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
-    "GRAY_PERIOD_EXPIRATION": "Halli Perioodi Aegumine",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Sinu litsents on aegunud või on desaktiveeritud. Võta ühendust xCALLY Liikumise Toe Tiimiga.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
-    "MESSENGER_DISABLED": "Sisemine sõnumi saatmine on selle agendi jaoks desaktiveeritud!",
-    "WARNING": "Hoiatus",
+    "RECENT": "Recent",
+    "START_NEW_CHAT": "Start New Chat",
+    "BACK": "Back",
+    "CALL": "Call",
+    "MORE": "More",
+    "SEND_MESSAGE": "Send message",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
+    "EXPIRATION_DATE": "Expiration Date",
+    "EXPIRATION_REASON": "Expiration Reason",
+    "LICENSE": "License",
+    "NEW_TOKEN": "New Token",
+    "OLD_TOKEN": "Old Token",
+    "SEND_EMAIL_TO": "Send Email To",
+    "TOKEN": "Token",
+    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
+    "WARNING": "Warning",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik Väli"
+      "NAME_REQUIRED": "Mandatory Field"
     }
   }
 }
index c0ce982..c3cf8da 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Uuendage oma parooli",
-    "EMAIL_ADRESS": "E-posti aadress",
-    "PASSWORD": "Parool",
-    "PASSWORD_CONFIRM": "Parool (Kinnita)",
-    "UPDATE_PASSWORD": "UUENDA MINU PAROOLI",
-    "GO_BACK": "Mine tagasi sisselogimise lehele",
-    "PASSWORD_RESET": "Parooli Uuendamine",
-    "PASSWORD_RESET_MESSAGE": "Sinu parool on nõuetekohaselt uuendatud, saad nüüd sisse logida!",
-    "PASSWORD_RESET_ERROR": "Parooli Uuendamise Viga",
+    "TITLE": "Reset your password",
+    "EMAIL_ADRESS": "Email address",
+    "PASSWORD": "Password",
+    "PASSWORD_CONFIRM": "Password (Confirm)",
+    "UPDATE_PASSWORD": "RESET MY PASSWORD",
+    "GO_BACK": "Go back to login",
+    "PASSWORD_RESET": "Password Reset",
+    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-posti väli on kohustuslik",
-      "EMAIL_MUST_VALID": "E-posti aadress peab olema kehtiv",
-      "PASSWORD_REQUIRED": "Parooli väli on kohustuslik",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "SECURE_PASSWORD_PATTERN": "Peab sisaldama vähemalt 8 tähemärki, millest vähemalt 1 väike täht, 1 suur täht, 1 numbrimärk ja 1 erimärk ~!?*@#$%^&-_=+[{]}."
+      "EMAIL_REQUIRED": "Email field is required",
+      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
+      "PASSWORD_REQUIRED": "Password field is required",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index 3dad53a..d04a4ab 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.57a94b79.css">
 
-  <link rel="stylesheet" href="styles/app.fabf8255.css">
+  <link rel="stylesheet" href="styles/app.d45f5a7f.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.231049c5.js"></script>
+  <script src="scripts/app.d44c05b7.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.231049c5.js
rename to public/scripts/app.d44c05b7.js
index bac7b2f..6089086 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",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",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",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",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",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},STATUS_STYLES:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,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","realtimeManager","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,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,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(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,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","realtimeManager","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,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","realtimeManager","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues={},I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,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/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/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_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/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                      <td md-cell>Dropped Calls Timeout</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                    </tr>\n                    <tr md-row>\n                      <td md-cell>Dropped Calls Caller Exit</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                      </td>\n                    </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<md-menu>\n  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n  </md-button>\n  <md-menu-content width="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.EDIT_QUEUE\' }}">\n        Edit Queue\n      </md-button>\n    </md-menu-item>\n    <md-menu-item ng-if="queue.dialMethod === \'predictive\'">\n      <md-button ng-click="vm.showPredictiveInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n        Show Predictive Info\n      </md-button>\n    </md-menu-item>\n    <md-menu-item>\n      <md-button ng-click="vm.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'VOICE.NAME' | translate }}</th>\n  <th md-column>{{ 'VOICE.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'VOICE.PAUSED' | translate }}</th>\n  <th md-column>{{ 'VOICE.TALKING' | translate }}</th>\n  <th md-column>{{ 'VOICE.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'MOTIONDIALER.NAME' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.PAUSED' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TALKING' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.ORIGINATED_TEXT' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.MESSAGE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.METHOD' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TRUNK' | translate }}</th>\n  <th md-column md-order-by=\"dialActive\">{{ 'MOTIONDIALER.ACTIVE' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\n    <div layout="row" layout-align="center center">\n      <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\n    <div layout="row" layout-align="center center">\n      <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.QUEUES\' }}">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container ng-init="vm.onInit()">\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{ \'DASHBOARDS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'DASHBOARDS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'DASHBOARDS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_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/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;function i(e,n){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}n&&function(e){switch(e){case"first":a.call.secondDisposition&&(a.secondLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.secondDisposition}),a.secondLevelDisposition&&i("second",!0));break;case"second":a.call.thirdDisposition&&(a.thirdLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.thirdDisposition}),a.thirdLevelDisposition&&i("third",!0))}}(e)}a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=i,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()},a.call.disposition&&(a.firstLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.disposition}),a.firstLevelDisposition&&i("first",!0))}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,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
similarity index 97%
rename from public/styles/app.fabf8255.css
rename to public/styles/app.d45f5a7f.css
index 5729d23..aa6b231 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}#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}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%}}#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{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
index f8bc990..f63bb31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf163=['bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','sequelize','VIRTUAL','getDataValue','action','STRING','integration','motionbar','urlForward','browser'];(function(_0x2221fe,_0x5b0011){var _0x55d538=function(_0x3c0666){while(--_0x3c0666){_0x2221fe['push'](_0x2221fe['shift']());}};_0x55d538(++_0x5b0011);}(_0xf163,0x129));var _0x3f16=function(_0x5c8827,_0x5bc5d7){_0x5c8827=_0x5c8827-0x0;var _0x50ffd5=_0xf163[_0x5c8827];return _0x50ffd5;};'use strict';var Sequelize=require(_0x3f16('0x0'));module['exports']={'name':{'type':Sequelize[_0x3f16('0x1')],'get':function(_0x249c0b){return this[_0x3f16('0x2')](_0x3f16('0x3'));}},'action':{'type':Sequelize[_0x3f16('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x3f16('0x5'),_0x3f16('0x6'),'jscripty',_0x3f16('0x7'),_0x3f16('0x8'),_0x3f16('0x9'),_0x3f16('0xa')]],'msg':_0x3f16('0xb')}},'comment':_0x3f16('0xb')},'data1':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comment':_0x3f16('0xc')},'data2':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comment':_0x3f16('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x3f16('0xe')},'data4':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comments':_0x3f16('0xf')},'data5':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comments':_0x3f16('0x10')},'data6':{'type':Sequelize[_0x3f16('0x4')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x3f16('0x11')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x94b9=['browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','contactManager','integration','motionbar','urlForward','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)]','STRING','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'];(function(_0x3f9b50,_0x5d40fc){var _0x48ffaf=function(_0x4092e3){while(--_0x4092e3){_0x3f9b50['push'](_0x3f9b50['shift']());}};_0x48ffaf(++_0x5d40fc);}(_0x94b9,0xe4));var _0x994b=function(_0x5bdd49,_0x411f8f){_0x5bdd49=_0x5bdd49-0x0;var _0x6c62c7=_0x94b9[_0x5bdd49];return _0x6c62c7;};'use strict';var Sequelize=require(_0x994b('0x0'));module[_0x994b('0x1')]={'name':{'type':Sequelize[_0x994b('0x2')],'get':function(_0x4765da){return this[_0x994b('0x3')]('action');}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x994b('0x4'),_0x994b('0x5'),_0x994b('0x6'),'jscripty',_0x994b('0x7'),'browser','bot','script']],'msg':_0x994b('0x8')}},'comment':_0x994b('0x8')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x994b('0x9')},'data2':{'type':Sequelize[_0x994b('0xa')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x994b('0xb')},'data4':{'type':Sequelize[_0x994b('0xa')](0x1000),'comments':_0x994b('0xc')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize['STRING'],'comments':_0x994b('0xd')},'data7':{'type':Sequelize[_0x994b('0xe')],'comments':_0x994b('0xf')}};
\ No newline at end of file
index 776a598..13502ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ee=['moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','body','Action','find','params','catch','eml-format','rimraf','zip-dir'];(function(_0xdb963,_0x2d8865){var _0x9b4af2=function(_0x53a274){while(--_0x53a274){_0xdb963['push'](_0xdb963['shift']());}};_0x9b4af2(++_0x2d8865);}(_0x53ee,0x93));var _0xe53e=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x53ee[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0xe53e('0x0'));var rimraf=require(_0xe53e('0x1'));var zipdir=require(_0xe53e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe53e('0x3'));var BPromise=require(_0xe53e('0x4'));var Mustache=require(_0xe53e('0x5'));var util=require('util');var path=require('path');var sox=require(_0xe53e('0x6'));var csv=require(_0xe53e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe53e('0x8'));var _=require(_0xe53e('0x9'));var squel=require(_0xe53e('0xa'));var crypto=require(_0xe53e('0xb'));var jsforce=require(_0xe53e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe53e('0x7'));var querystring=require(_0xe53e('0xd'));var Papa=require(_0xe53e('0xe'));var Redis=require(_0xe53e('0xf'));var authService=require(_0xe53e('0x10'));var qs=require(_0xe53e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe53e('0x12'));var logger=require(_0xe53e('0x13'))(_0xe53e('0x14'));var utils=require(_0xe53e('0x15'));var config=require(_0xe53e('0x16'));var licenseUtil=require(_0xe53e('0x17'));var db=require(_0xe53e('0x18'))['db'];function respondWithStatusCode(_0x3bd905,_0x4f8795){_0x4f8795=_0x4f8795||0xcc;return function(_0x2e8ad2){if(_0x2e8ad2){return _0x3bd905[_0xe53e('0x19')](_0x4f8795);}return _0x3bd905[_0xe53e('0x1a')](_0x4f8795)[_0xe53e('0x1b')]();};}function respondWithResult(_0x39834d,_0x15a424){_0x15a424=_0x15a424||0xc8;return function(_0x499504){if(_0x499504){return _0x39834d[_0xe53e('0x1a')](_0x15a424)[_0xe53e('0x1c')](_0x499504);}};}function respondWithFilteredResult(_0x398fe0,_0x2ede4e){return function(_0x351ff1){if(_0x351ff1){var _0x54329d=typeof _0x2ede4e[_0xe53e('0x1d')]===_0xe53e('0x1e')&&typeof _0x2ede4e[_0xe53e('0x1f')]===_0xe53e('0x1e');var _0x52a74f=_0x351ff1[_0xe53e('0x20')];var _0xdbe24a=_0x54329d?0x0:_0x2ede4e[_0xe53e('0x1d')];var _0x50eb23=_0x54329d?_0x351ff1[_0xe53e('0x20')]:_0x2ede4e[_0xe53e('0x1d')]+_0x2ede4e[_0xe53e('0x1f')];var _0x1321d6;if(_0x50eb23>=_0x52a74f){_0x50eb23=_0x52a74f;_0x1321d6=0xc8;}else{_0x1321d6=0xce;}_0x398fe0['status'](_0x1321d6);return _0x398fe0[_0xe53e('0x21')](_0xe53e('0x22'),_0xdbe24a+'-'+_0x50eb23+'/'+_0x52a74f)[_0xe53e('0x1c')](_0x351ff1);}return null;};}function patchUpdates(_0x51d6a7){return function(_0x3fa969){try{jsonpatch[_0xe53e('0x23')](_0x3fa969,_0x51d6a7,!![]);}catch(_0x11de27){return BPromise[_0xe53e('0x24')](_0x11de27);}return _0x3fa969[_0xe53e('0x25')]();};}function saveUpdates(_0x2e52df,_0x47b82e){return function(_0x16e308){if(_0x16e308){return _0x16e308[_0xe53e('0x26')](_0x2e52df)[_0xe53e('0x27')](function(_0x26b66a){return _0x26b66a;});}return null;};}function removeEntity(_0x4235d5,_0x4eb304){return function(_0x5a644f){if(_0x5a644f){return _0x5a644f[_0xe53e('0x28')]()[_0xe53e('0x27')](function(){_0x4235d5[_0xe53e('0x1a')](0xcc)[_0xe53e('0x1b')]();});}};}function handleEntityNotFound(_0x3bcaa1,_0x34c862){return function(_0x110181){if(!_0x110181){_0x3bcaa1[_0xe53e('0x19')](0x194);}return _0x110181;};}function handleError(_0x21eba8,_0x13ad39){_0x13ad39=_0x13ad39||0x1f4;return function(_0x524910){logger[_0xe53e('0x29')](_0x524910[_0xe53e('0x2a')]);if(_0x524910[_0xe53e('0x2b')]){delete _0x524910[_0xe53e('0x2b')];}_0x21eba8[_0xe53e('0x1a')](_0x13ad39)[_0xe53e('0x2c')](_0x524910);};}exports[_0xe53e('0x26')]=function(_0x543d72,_0x240afe){if(_0x543d72[_0xe53e('0x2d')]['id']){delete _0x543d72[_0xe53e('0x2d')]['id'];}return db[_0xe53e('0x2e')][_0xe53e('0x2f')]({'where':{'id':_0x543d72[_0xe53e('0x30')]['id']}})['then'](handleEntityNotFound(_0x240afe,null))['then'](saveUpdates(_0x543d72[_0xe53e('0x2d')],null))['then'](respondWithResult(_0x240afe,null))[_0xe53e('0x31')](handleError(_0x240afe,null));};exports[_0xe53e('0x28')]=function(_0x563f92,_0x1f439f){return db[_0xe53e('0x2e')][_0xe53e('0x2f')]({'where':{'id':_0x563f92[_0xe53e('0x30')]['id']}})[_0xe53e('0x27')](handleEntityNotFound(_0x1f439f,null))['then'](removeEntity(_0x1f439f,null))[_0xe53e('0x31')](handleError(_0x1f439f,null));};
\ No newline at end of file
+var _0xc757=['Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0xc757,0x103));var _0x7c75=function(_0x2ec90a,_0x4dea7f){_0x2ec90a=_0x2ec90a-0x0;var _0x5ac432=_0xc757[_0x2ec90a];return _0x5ac432;};'use strict';var emlformat=require(_0x7c75('0x0'));var rimraf=require(_0x7c75('0x1'));var zipdir=require(_0x7c75('0x2'));var jsonpatch=require(_0x7c75('0x3'));var rp=require(_0x7c75('0x4'));var moment=require('moment');var BPromise=require(_0x7c75('0x5'));var Mustache=require(_0x7c75('0x6'));var util=require(_0x7c75('0x7'));var path=require('path');var sox=require(_0x7c75('0x8'));var csv=require(_0x7c75('0x9'));var ejs=require(_0x7c75('0xa'));var fs=require('fs');var fs_extra=require(_0x7c75('0xb'));var _=require(_0x7c75('0xc'));var squel=require('squel');var crypto=require(_0x7c75('0xd'));var jsforce=require(_0x7c75('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7c75('0x9'));var querystring=require(_0x7c75('0xf'));var Papa=require(_0x7c75('0x10'));var Redis=require(_0x7c75('0x11'));var authService=require(_0x7c75('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x7c75('0x13'));var hardwareService=require(_0x7c75('0x14'));var logger=require(_0x7c75('0x15'))(_0x7c75('0x16'));var utils=require(_0x7c75('0x17'));var config=require(_0x7c75('0x18'));var licenseUtil=require(_0x7c75('0x19'));var db=require(_0x7c75('0x1a'))['db'];function respondWithStatusCode(_0x151cf6,_0x2c3d69){_0x2c3d69=_0x2c3d69||0xcc;return function(_0x5e567d){if(_0x5e567d){return _0x151cf6[_0x7c75('0x1b')](_0x2c3d69);}return _0x151cf6[_0x7c75('0x1c')](_0x2c3d69)[_0x7c75('0x1d')]();};}function respondWithResult(_0x265d6a,_0xbaa7d2){_0xbaa7d2=_0xbaa7d2||0xc8;return function(_0x423165){if(_0x423165){return _0x265d6a[_0x7c75('0x1c')](_0xbaa7d2)[_0x7c75('0x1e')](_0x423165);}};}function respondWithFilteredResult(_0x5af69e,_0x306a6b){return function(_0x5a28e3){if(_0x5a28e3){var _0x5078aa=typeof _0x306a6b[_0x7c75('0x1f')]==='undefined'&&typeof _0x306a6b[_0x7c75('0x20')]===_0x7c75('0x21');var _0x338e58=_0x5a28e3[_0x7c75('0x22')];var _0x504bc3=_0x5078aa?0x0:_0x306a6b[_0x7c75('0x1f')];var _0x363ead=_0x5078aa?_0x5a28e3['count']:_0x306a6b[_0x7c75('0x1f')]+_0x306a6b[_0x7c75('0x20')];var _0x51c6d7;if(_0x363ead>=_0x338e58){_0x363ead=_0x338e58;_0x51c6d7=0xc8;}else{_0x51c6d7=0xce;}_0x5af69e[_0x7c75('0x1c')](_0x51c6d7);return _0x5af69e[_0x7c75('0x23')](_0x7c75('0x24'),_0x504bc3+'-'+_0x363ead+'/'+_0x338e58)[_0x7c75('0x1e')](_0x5a28e3);}return null;};}function patchUpdates(_0x3ac4c7){return function(_0x2fc47b){try{jsonpatch['apply'](_0x2fc47b,_0x3ac4c7,!![]);}catch(_0x275b8a){return BPromise[_0x7c75('0x25')](_0x275b8a);}return _0x2fc47b[_0x7c75('0x26')]();};}function saveUpdates(_0x365c18,_0x5a150d){return function(_0x5a98cd){if(_0x5a98cd){return _0x5a98cd[_0x7c75('0x27')](_0x365c18)[_0x7c75('0x28')](function(_0x207f56){return _0x207f56;});}return null;};}function removeEntity(_0x92ada2,_0x589a6d){return function(_0x1ac30b){if(_0x1ac30b){return _0x1ac30b[_0x7c75('0x29')]()[_0x7c75('0x28')](function(){_0x92ada2[_0x7c75('0x1c')](0xcc)[_0x7c75('0x1d')]();});}};}function handleEntityNotFound(_0x339280,_0x4f6ea3){return function(_0x2bc324){if(!_0x2bc324){_0x339280[_0x7c75('0x1b')](0x194);}return _0x2bc324;};}function handleError(_0x10b16b,_0x3406b1){_0x3406b1=_0x3406b1||0x1f4;return function(_0x38617e){logger[_0x7c75('0x2a')](_0x38617e[_0x7c75('0x2b')]);if(_0x38617e[_0x7c75('0x2c')]){delete _0x38617e[_0x7c75('0x2c')];}_0x10b16b[_0x7c75('0x1c')](_0x3406b1)[_0x7c75('0x2d')](_0x38617e);};}exports[_0x7c75('0x27')]=function(_0x5d491f,_0x2b5dfe){if(_0x5d491f[_0x7c75('0x2e')]['id']){delete _0x5d491f[_0x7c75('0x2e')]['id'];}return db[_0x7c75('0x2f')][_0x7c75('0x30')]({'where':{'id':_0x5d491f[_0x7c75('0x31')]['id']}})[_0x7c75('0x28')](handleEntityNotFound(_0x2b5dfe,null))[_0x7c75('0x28')](saveUpdates(_0x5d491f[_0x7c75('0x2e')],null))[_0x7c75('0x28')](respondWithResult(_0x2b5dfe,null))[_0x7c75('0x32')](handleError(_0x2b5dfe,null));};exports[_0x7c75('0x29')]=function(_0x3fce0e,_0x1f8ce0){return db[_0x7c75('0x2f')][_0x7c75('0x30')]({'where':{'id':_0x3fce0e['params']['id']}})['then'](handleEntityNotFound(_0x1f8ce0,null))[_0x7c75('0x28')](removeEntity(_0x1f8ce0,null))[_0x7c75('0x32')](handleError(_0x1f8ce0,null));};
\ No newline at end of file
index 882c79f..07f1321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99cd=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','Action','lodash'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x99cd,0x1df));var _0xd99c=function(_0x368566,_0x4fb53b){_0x368566=_0x368566-0x0;var _0x21cc9d=_0x99cd[_0x368566];return _0x21cc9d;};'use strict';var _=require(_0xd99c('0x0'));var util=require('util');var logger=require(_0xd99c('0x1'))(_0xd99c('0x2'));var moment=require(_0xd99c('0x3'));var BPromise=require(_0xd99c('0x4'));var rp=require(_0xd99c('0x5'));var fs=require('fs');var path=require(_0xd99c('0x6'));var rimraf=require(_0xd99c('0x7'));var config=require(_0xd99c('0x8'));var attributes=require(_0xd99c('0x9'));module[_0xd99c('0xa')]=function(_0x5170e7,_0x87a727){return _0x5170e7['define'](_0xd99c('0xb'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a1b=['tools_actions','lodash','moment','bluebird','request-promise','path','../../config/environment','./action.attributes','define'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x9a1b,0x1ba));var _0xb9a1=function(_0x4824cb,_0x3f31bc){_0x4824cb=_0x4824cb-0x0;var _0x48811f=_0x9a1b[_0x4824cb];return _0x48811f;};'use strict';var _=require(_0xb9a1('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb9a1('0x1'));var BPromise=require(_0xb9a1('0x2'));var rp=require(_0xb9a1('0x3'));var fs=require('fs');var path=require(_0xb9a1('0x4'));var rimraf=require('rimraf');var config=require(_0xb9a1('0x5'));var attributes=require(_0xb9a1('0x6'));module['exports']=function(_0x69b74e,_0x455fac){return _0x69b74e[_0xb9a1('0x7')]('Action',attributes,{'tableName':_0xb9a1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f2e10d4..6609d9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0xc3ef90,_0x16cc16){var _0x13a781=function(_0x41a899){while(--_0x41a899){_0xc3ef90['push'](_0xc3ef90['shift']());}};_0x13a781(++_0x16cc16);}(_0xabce,0x103));var _0xeabc=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0xabce[_0x1d9aa0];return _0x226868;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
+var _0x814b=['info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x814b,0x1a2));var _0xb814=function(_0x56ca61,_0x187321){_0x56ca61=_0x56ca61-0x0;var _0x1e7bee=_0x814b[_0x56ca61];return _0x1e7bee;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Action,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}
\ No newline at end of file
index e999eea..911870f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ff6=['util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','put','/:id','update','delete','isAuthenticated','destroy','exports','multer'];(function(_0x79aa12,_0x23aa17){var _0x4b7ba0=function(_0x31cd4d){while(--_0x31cd4d){_0x79aa12['push'](_0x79aa12['shift']());}};_0x4b7ba0(++_0x23aa17);}(_0x4ff6,0xed));var _0x64ff=function(_0x48e333,_0x3dcb2f){_0x48e333=_0x48e333-0x0;var _0x4500f9=_0x4ff6[_0x48e333];return _0x4500f9;};'use strict';var multer=require(_0x64ff('0x0'));var util=require(_0x64ff('0x1'));var path=require(_0x64ff('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x64ff('0x3')]();var fs_extra=require(_0x64ff('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x64ff('0x5'));var config=require(_0x64ff('0x6'));var controller=require('./action.controller');router[_0x64ff('0x7')](_0x64ff('0x8'),auth['isAuthenticated'](),controller[_0x64ff('0x9')]);router[_0x64ff('0xa')](_0x64ff('0x8'),auth[_0x64ff('0xb')](),controller[_0x64ff('0xc')]);module[_0x64ff('0xd')]=router;
\ No newline at end of file
+var _0x3c69=['../../config/environment','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x992b0c,_0x2955bf){var _0xa280e7=function(_0x391860){while(--_0x391860){_0x992b0c['push'](_0x992b0c['shift']());}};_0xa280e7(++_0x2955bf);}(_0x3c69,0x14a));var _0x93c6=function(_0x48eab4,_0x277c00){_0x48eab4=_0x48eab4-0x0;var _0xae2e9e=_0x3c69[_0x48eab4];return _0xae2e9e;};'use strict';var multer=require(_0x93c6('0x0'));var util=require('util');var path=require(_0x93c6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x93c6('0x2')]();var fs_extra=require(_0x93c6('0x3'));var auth=require(_0x93c6('0x4'));var interaction=require(_0x93c6('0x5'));var config=require(_0x93c6('0x6'));var controller=require('./action.controller');router[_0x93c6('0x7')](_0x93c6('0x8'),auth[_0x93c6('0x9')](),controller[_0x93c6('0xa')]);router[_0x93c6('0xb')](_0x93c6('0x8'),auth['isAuthenticated'](),controller[_0x93c6('0xc')]);module[_0x93c6('0xd')]=router;
\ No newline at end of file
index a62b14f..b3403bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['STRING','TEXT','sequelize','exports'];(function(_0x304fbd,_0x401f58){var _0x3a4448=function(_0x261bc9){while(--_0x261bc9){_0x304fbd['push'](_0x304fbd['shift']());}};_0x3a4448(++_0x401f58);}(_0x687b,0x14a));var _0xb687=function(_0x4da572,_0x326408){_0x4da572=_0x4da572-0x0;var _0x378393=_0x687b[_0x4da572];return _0x378393;};'use strict';var Sequelize=require(_0xb687('0x0'));module[_0xb687('0x1')]={'name':{'type':Sequelize[_0xb687('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb687('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xb687('0x3')]},'joins':{'type':Sequelize[_0xb687('0x3')]}};
\ No newline at end of file
+var _0x46ed=['sequelize','exports','STRING','TEXT'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0x46ed,0x168));var _0xd46e=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x46ed[_0x49b207];return _0x2dc8fa;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xd46e('0x2')]},'parent':{'type':Sequelize[_0xd46e('0x2')]},'table':{'type':Sequelize[_0xd46e('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xd46e('0x3')]}};
\ No newline at end of file
index c04e985..598c3c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeba=['model','attributes','length','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','rows','catch','params','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','update','preview','join','left_join','right_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','Limited\x20Query:','sequelize','QueryTypes','SELECT','cross_join','SUM(%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','Sequelize','groupBy','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','toString','fork','../../files/reports','countTable','COUNT(*)','run','debug','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','end','status','json','limit','undefined','count','offset','Content-Range','reject','save','then','destroy','get','CustomReports','UserProfileResource','error','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','query','keys','filters','intersection'];(function(_0x34cb01,_0x33f019){var _0x1b79f2=function(_0x296205){while(--_0x296205){_0x34cb01['push'](_0x34cb01['shift']());}};_0x1b79f2(++_0x33f019);}(_0xfeba,0x6f));var _0xafeb=function(_0x5ca8b2,_0x15b273){_0x5ca8b2=_0x5ca8b2-0x0;var _0x104be5=_0xfeba[_0x5ca8b2];return _0x104be5;};'use strict';var emlformat=require(_0xafeb('0x0'));var rimraf=require(_0xafeb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xafeb('0x2'));var rp=require(_0xafeb('0x3'));var moment=require(_0xafeb('0x4'));var BPromise=require(_0xafeb('0x5'));var Mustache=require(_0xafeb('0x6'));var util=require(_0xafeb('0x7'));var path=require('path');var sox=require(_0xafeb('0x8'));var csv=require('to-csv');var ejs=require(_0xafeb('0x9'));var fs=require('fs');var fs_extra=require(_0xafeb('0xa'));var _=require(_0xafeb('0xb'));var squel=require(_0xafeb('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xafeb('0xd'));var toCsv=require(_0xafeb('0xe'));var querystring=require(_0xafeb('0xf'));var Papa=require(_0xafeb('0x10'));var Redis=require(_0xafeb('0x11'));var authService=require(_0xafeb('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xafeb('0x13'));var hardwareService=require(_0xafeb('0x14'));var logger=require(_0xafeb('0x15'))(_0xafeb('0x16'));var utils=require(_0xafeb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xafeb('0x18'));var db=require('../../mysqldb')['db'];var dbH=require(_0xafeb('0x19'))[_0xafeb('0x1a')];function respondWithStatusCode(_0x44e2d3,_0x56aa48){_0x56aa48=_0x56aa48||0xcc;return function(_0x2faa97){if(_0x2faa97){return _0x44e2d3[_0xafeb('0x1b')](_0x56aa48);}return _0x44e2d3['status'](_0x56aa48)[_0xafeb('0x1c')]();};}function respondWithResult(_0x513bce,_0x540d1c){_0x540d1c=_0x540d1c||0xc8;return function(_0x4b49e5){if(_0x4b49e5){return _0x513bce[_0xafeb('0x1d')](_0x540d1c)[_0xafeb('0x1e')](_0x4b49e5);}};}function respondWithFilteredResult(_0x3d19c3,_0x535a3d){return function(_0x377656){if(_0x377656){var _0x145cc9=typeof _0x535a3d['offset']==='undefined'&&typeof _0x535a3d[_0xafeb('0x1f')]===_0xafeb('0x20');var _0x2b1042=_0x377656[_0xafeb('0x21')];var _0x179161=_0x145cc9?0x0:_0x535a3d[_0xafeb('0x22')];var _0x510663=_0x145cc9?_0x377656[_0xafeb('0x21')]:_0x535a3d['offset']+_0x535a3d['limit'];var _0x24d0b2;if(_0x510663>=_0x2b1042){_0x510663=_0x2b1042;_0x24d0b2=0xc8;}else{_0x24d0b2=0xce;}_0x3d19c3[_0xafeb('0x1d')](_0x24d0b2);return _0x3d19c3['set'](_0xafeb('0x23'),_0x179161+'-'+_0x510663+'/'+_0x2b1042)[_0xafeb('0x1e')](_0x377656);}return null;};}function patchUpdates(_0x136153){return function(_0x1c8cb3){try{jsonpatch['apply'](_0x1c8cb3,_0x136153,!![]);}catch(_0xe19149){return BPromise[_0xafeb('0x24')](_0xe19149);}return _0x1c8cb3[_0xafeb('0x25')]();};}function saveUpdates(_0x2bc27d,_0x581de7){return function(_0x3ee063){if(_0x3ee063){return _0x3ee063['update'](_0x2bc27d)[_0xafeb('0x26')](function(_0x46e9d5){return _0x46e9d5;});}return null;};}function removeEntity(_0x472c41,_0x511ad0){return function(_0x2c9d10){if(_0x2c9d10){return _0x2c9d10[_0xafeb('0x27')]()[_0xafeb('0x26')](function(){var _0x515bb7=_0x2c9d10[_0xafeb('0x28')]({'plain':!![]});var _0x5a869e=_0xafeb('0x29');return db[_0xafeb('0x2a')]['destroy']({'where':{'type':_0x5a869e,'resourceId':_0x515bb7['id']}})[_0xafeb('0x26')](function(){return _0x2c9d10;});})[_0xafeb('0x26')](function(){_0x472c41[_0xafeb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x358093,_0x2ac76c){return function(_0x4a3504){if(!_0x4a3504){_0x358093[_0xafeb('0x1b')](0x194);}return _0x4a3504;};}function handleError(_0x381c91,_0x2bea3c){_0x2bea3c=_0x2bea3c||0x1f4;return function(_0x43d4fa){logger[_0xafeb('0x2b')](_0x43d4fa['stack']);if(_0x43d4fa[_0xafeb('0x2c')]){delete _0x43d4fa['name'];}_0x381c91[_0xafeb('0x1d')](_0x2bea3c)[_0xafeb('0x2d')](_0x43d4fa);};}exports[_0xafeb('0x2e')]=function(_0x3c81da,_0x29b8cf){var _0x12ab93={},_0x18826f={},_0x48e0ad={'count':0x0,'rows':[]};var _0x58a051=_[_0xafeb('0x2f')](db[_0xafeb('0x30')][_0xafeb('0x31')],function(_0x556ab2){return{'name':_0x556ab2[_0xafeb('0x32')],'type':_0x556ab2[_0xafeb('0x33')]['key']};});_0x18826f['model']=_['map'](_0x58a051,_0xafeb('0x2c'));_0x18826f[_0xafeb('0x34')]=_[_0xafeb('0x35')](_0x3c81da[_0xafeb('0x34')]);_0x18826f[_0xafeb('0x36')]=_[_0xafeb('0x37')](_0x18826f[_0xafeb('0x38')],_0x18826f[_0xafeb('0x34')]);_0x12ab93['attributes']=_['intersection'](_0x18826f[_0xafeb('0x38')],qs['fields'](_0x3c81da[_0xafeb('0x34')]['fields']));_0x12ab93[_0xafeb('0x39')]=_0x12ab93['attributes'][_0xafeb('0x3a')]?_0x12ab93['attributes']:_0x18826f[_0xafeb('0x38')];if(!_0x3c81da[_0xafeb('0x34')][_0xafeb('0x3b')]('nolimit')){_0x12ab93[_0xafeb('0x1f')]=qs[_0xafeb('0x1f')](_0x3c81da[_0xafeb('0x34')][_0xafeb('0x1f')]);_0x12ab93[_0xafeb('0x22')]=qs[_0xafeb('0x22')](_0x3c81da[_0xafeb('0x34')]['offset']);}_0x12ab93[_0xafeb('0x3c')]=qs[_0xafeb('0x3d')](_0x3c81da[_0xafeb('0x34')][_0xafeb('0x3d')]);_0x12ab93['where']=qs[_0xafeb('0x36')](_['pick'](_0x3c81da['query'],_0x18826f[_0xafeb('0x36')]),_0x58a051);if(_0x3c81da['query'][_0xafeb('0x3e')]){_0x12ab93['where']=_[_0xafeb('0x3f')](_0x12ab93[_0xafeb('0x40')],{'$or':_[_0xafeb('0x2f')](_0x58a051,function(_0x12ff90){if(_0x12ff90[_0xafeb('0x33')]!==_0xafeb('0x41')){var _0x46ad62={};_0x46ad62[_0x12ff90[_0xafeb('0x2c')]]={'$like':'%'+_0x3c81da[_0xafeb('0x34')]['filter']+'%'};return _0x46ad62;}})});}_0x12ab93=_[_0xafeb('0x3f')]({},_0x12ab93,_0x3c81da[_0xafeb('0x42')]);var _0x1decf1={'where':_0x12ab93[_0xafeb('0x40')]};return db[_0xafeb('0x30')][_0xafeb('0x21')](_0x1decf1)[_0xafeb('0x26')](function(_0x5c5d17){_0x48e0ad[_0xafeb('0x21')]=_0x5c5d17;if(_0x3c81da[_0xafeb('0x34')][_0xafeb('0x43')]){_0x12ab93[_0xafeb('0x44')]=[{'all':!![]}];}return db['AnalyticCustomReport']['findAll'](_0x12ab93);})[_0xafeb('0x26')](function(_0x577d8d){_0x48e0ad[_0xafeb('0x45')]=_0x577d8d;return _0x48e0ad;})[_0xafeb('0x26')](respondWithFilteredResult(_0x29b8cf,_0x12ab93))[_0xafeb('0x46')](handleError(_0x29b8cf,null));};exports['show']=function(_0x17a644,_0x539dec){var _0x3a306c={'raw':![],'where':{'id':_0x17a644[_0xafeb('0x47')]['id']}},_0x33ef3a={};_0x33ef3a['model']=_[_0xafeb('0x35')](db[_0xafeb('0x30')][_0xafeb('0x31')]);_0x33ef3a[_0xafeb('0x34')]=_[_0xafeb('0x35')](_0x17a644[_0xafeb('0x34')]);_0x33ef3a[_0xafeb('0x36')]=_[_0xafeb('0x37')](_0x33ef3a[_0xafeb('0x38')],_0x33ef3a[_0xafeb('0x34')]);_0x3a306c[_0xafeb('0x39')]=_['intersection'](_0x33ef3a[_0xafeb('0x38')],qs[_0xafeb('0x48')](_0x17a644[_0xafeb('0x34')]['fields']));_0x3a306c[_0xafeb('0x39')]=_0x3a306c[_0xafeb('0x39')]['length']?_0x3a306c[_0xafeb('0x39')]:_0x33ef3a['model'];if(_0x17a644[_0xafeb('0x34')][_0xafeb('0x43')]){_0x3a306c['include']=[{'all':!![]}];}_0x3a306c=_['merge']({},_0x3a306c,_0x17a644[_0xafeb('0x42')]);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x3a306c)[_0xafeb('0x26')](handleEntityNotFound(_0x539dec,null))[_0xafeb('0x26')](respondWithResult(_0x539dec,null))[_0xafeb('0x46')](handleError(_0x539dec,null));};exports[_0xafeb('0x4a')]=function(_0x1301ee,_0x14214b){return db[_0xafeb('0x30')][_0xafeb('0x4a')](_0x1301ee[_0xafeb('0x4b')],{})['then'](function(_0x1e8a66){var _0x4676b5=_0x1301ee[_0xafeb('0x4c')][_0xafeb('0x28')]({'plain':!![]});if(!_0x4676b5)throw new Error(_0xafeb('0x4d'));if(_0x4676b5[_0xafeb('0x4e')]==='user'){var _0x49f840=_0x1e8a66[_0xafeb('0x28')]({'plain':!![]});var _0x532054=_0xafeb('0x4f');return db[_0xafeb('0x50')][_0xafeb('0x49')]({'where':{'name':_0x532054,'userProfileId':_0x4676b5[_0xafeb('0x51')]},'raw':!![]})[_0xafeb('0x26')](function(_0x410a6c){if(_0x410a6c&&_0x410a6c[_0xafeb('0x52')]===0x0){return db[_0xafeb('0x2a')][_0xafeb('0x4a')]({'name':_0x49f840[_0xafeb('0x2c')],'resourceId':_0x49f840['id'],'type':_0xafeb('0x29'),'sectionId':_0x410a6c['id']},{})[_0xafeb('0x26')](function(){return _0x1e8a66;});}else{return _0x1e8a66;}})[_0xafeb('0x46')](function(_0x1eacea){logger[_0xafeb('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1eacea);throw _0x1eacea;});}return _0x1e8a66;})[_0xafeb('0x26')](respondWithResult(_0x14214b,0xc9))[_0xafeb('0x46')](handleError(_0x14214b,null));};exports[_0xafeb('0x53')]=function(_0x4b11ec,_0x1515cc){if(_0x4b11ec[_0xafeb('0x4b')]['id']){delete _0x4b11ec['body']['id'];}return db[_0xafeb('0x30')][_0xafeb('0x49')]({'where':{'id':_0x4b11ec[_0xafeb('0x47')]['id']}})['then'](handleEntityNotFound(_0x1515cc,null))[_0xafeb('0x26')](saveUpdates(_0x4b11ec[_0xafeb('0x4b')],null))[_0xafeb('0x26')](respondWithResult(_0x1515cc,null))[_0xafeb('0x46')](handleError(_0x1515cc,null));};exports[_0xafeb('0x27')]=function(_0x224d3f,_0x174bf2){return db[_0xafeb('0x30')][_0xafeb('0x49')]({'where':{'id':_0x224d3f[_0xafeb('0x47')]['id']}})['then'](handleEntityNotFound(_0x174bf2,null))[_0xafeb('0x26')](removeEntity(_0x174bf2,null))[_0xafeb('0x46')](handleError(_0x174bf2,null));};exports[_0xafeb('0x54')]=function(_0x23b7b0,_0x3d49d1){var _0x2ba30a=0xa;var _0x135972=[_0xafeb('0x55'),_0xafeb('0x56'),_0xafeb('0x57'),'cross_join'];var _0x367c78={'SUM':'SUM(%s)','COUNT':_0xafeb('0x58'),'COUNT DISTINCT':_0xafeb('0x59'),'MAX':'MAX(%s)','MIN':_0xafeb('0x5a'),'AVG':_0xafeb('0x5b'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xafeb('0x5c'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x119308={'SEC_TO_TIME':_0xafeb('0x5d'),'DATE':_0xafeb('0x5e'),'HOUR':_0xafeb('0x5f'),'ROUND':_0xafeb('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2f48dd=function(_0x53814e){return!_[_0xafeb('0x61')]([_0xafeb('0x62'),'IS\x20NOT\x20NULL',_0xafeb('0x63'),_0xafeb('0x64')],_0x53814e);};var _0x458ede=function(_0x337b83){if(!_0x337b83||!_0x337b83['rules'][_0xafeb('0x3a')]){return'';}for(var _0x10c044='(',_0x33c81e=0x0;_0x33c81e<_0x337b83[_0xafeb('0x65')][_0xafeb('0x3a')];_0x33c81e+=0x1){_0x33c81e>0x0&&(_0x10c044+='\x20'+_0x337b83[_0xafeb('0x66')]+'\x20');_0x10c044+=_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x67')]?_0x458ede(_0x337b83['rules'][_0x33c81e][_0xafeb('0x67')]):_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x68')]+'\x20'+_0x337b83[_0xafeb('0x65')][_0x33c81e]['condition']+(_0x2f48dd(_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x69')])?'\x20'+_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x6a')]:'');}return _0x10c044+')';};var _0x437433={'where':{'id':_0x23b7b0['params']['id']}},_0x21da0f,_0x4de145,_0x5d5f4b,_0x19d67e,_0x2f8e4e;_0x437433=_['merge']({},_0x437433,_0x23b7b0[_0xafeb('0x42')]);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x437433)[_0xafeb('0x26')](function(_0x10a980){if(_0x10a980){_0x21da0f=_0x10a980;return _0x10a980[_0xafeb('0x6b')]();}return null;})['then'](function(_0x34cf78){if(_0x34cf78){if(!_0x34cf78[_0xafeb('0x3a')]){throw new db['Sequelize'][(_0xafeb('0x6c'))](_0xafeb('0x6d'),0x193);}_0x4de145=_0x34cf78;return db[_0xafeb('0x6e')][_0xafeb('0x6f')]({'raw':!![]});}return null;})['then'](function(_0x3b9ce8){if(_0x3b9ce8){_0x5d5f4b=_[_0xafeb('0x70')](_0x3b9ce8,'id');var _0x3fd46c;var _0x2c91a9=squel[_0xafeb('0x71')]();_0x2c91a9[_0xafeb('0x72')](_0x21da0f[_0xafeb('0x73')]);for(var _0x23c89f=0x0;_0x23c89f<_0x4de145[_0xafeb('0x3a')];_0x23c89f+=0x1){_0x3fd46c=_0x4de145[_0x23c89f][_0xafeb('0x74')]?_0x5d5f4b[_0x4de145[_0x23c89f][_0xafeb('0x74')]][_0xafeb('0x75')]:_0x4de145[_0x23c89f]['field'];_0x3fd46c=_0x4de145[_0x23c89f][_0xafeb('0x76')]?_[_0xafeb('0x77')](_0x367c78[_0x4de145[_0x23c89f][_0xafeb('0x76')]],'%s',_0x3fd46c):_0x3fd46c;_0x3fd46c=_0x4de145[_0x23c89f]['format']?_[_0xafeb('0x77')](_0x119308[_0x4de145[_0x23c89f][_0xafeb('0x78')]],'%s',_0x3fd46c):_0x3fd46c;if(_0x4de145[_0x23c89f]['groupBy']){_0x2c91a9[_0xafeb('0x67')](_0x3fd46c);}_0x4de145[_0x23c89f][_0xafeb('0x79')]&&_0x2c91a9[_0xafeb('0x3c')](_0x3fd46c,_0x4de145[_0x23c89f][_0xafeb('0x79')]===_0xafeb('0x7a')?![]:!![]);_0x2c91a9[_0xafeb('0x68')](_0x3fd46c,_0x4de145[_0x23c89f][_0xafeb('0x7b')]||_0x3fd46c);}if(_0x21da0f['joins']){_0x21da0f[_0xafeb('0x7c')]=JSON[_0xafeb('0x7d')](_0x21da0f[_0xafeb('0x7c')]);for(var _0x3ec256=0x0;_0x3ec256<_0x21da0f['joins'][_0xafeb('0x3a')];_0x3ec256+=0x1){if(_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x33')]&&_[_0xafeb('0x61')](_0x135972,_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x33')])&&_0x21da0f[_0xafeb('0x7c')][_0x3ec256]['parentKey']&&_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x7e')]&&_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x7f')]){_0x2c91a9[_0x21da0f['joins'][_0x3ec256][_0xafeb('0x33')]](_0x21da0f[_0xafeb('0x7c')][_0x3ec256]['foreignTable'],null,util[_0xafeb('0x78')](_0xafeb('0x80'),_0x21da0f['table'],_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x81')],_0x21da0f['joins'][_0x3ec256][_0xafeb('0x7e')],_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x7f')]));}}}if(_0x21da0f[_0xafeb('0x82')]){_0x21da0f[_0xafeb('0x82')]=JSON[_0xafeb('0x7d')](_0x21da0f[_0xafeb('0x82')]);_0x2c91a9[_0xafeb('0x40')](_0x458ede(_0x21da0f[_0xafeb('0x82')]['group']));}_0x2f8e4e=_0x2c91a9[_0xafeb('0x83')]();_0x2c91a9[_0xafeb('0x1f')](_0x2ba30a);_0x2c91a9[_0xafeb('0x22')](0x0);logger['debug'](_0xafeb('0x84'),_0x2c91a9['toString']());return dbH[_0xafeb('0x85')]['query'](_0x2c91a9['toString'](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')][_0xafeb('0x87')]});}})[_0xafeb('0x26')](respondWithResult(_0x3d49d1,null))[_0xafeb('0x46')](handleError(_0x3d49d1,null));};function runReport(_0x117b81,_0x94dd4c,_0x7d08c){var _0x2ac9e4=_0x94dd4c[_0xafeb('0x2c')];var _0x517a3b=0xa;var _0x15cb34=[_0xafeb('0x55'),_0xafeb('0x56'),_0xafeb('0x57'),_0xafeb('0x88')];var _0x4dc7cc={'SUM':_0xafeb('0x89'),'COUNT':_0xafeb('0x58'),'COUNT DISTINCT':_0xafeb('0x59'),'MAX':_0xafeb('0x8a'),'MIN':_0xafeb('0x5a'),'AVG':_0xafeb('0x5b'),'GROUP_CONCAT':_0xafeb('0x8b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xafeb('0x8c')};var _0x3464d2={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xafeb('0x5e'),'HOUR':_0xafeb('0x5f'),'ROUND':_0xafeb('0x60'),'UNIX_TIMESTAMP':_0xafeb('0x8d')};var _0x4d7530=function(_0x47cb83){return!_['includes']([_0xafeb('0x62'),_0xafeb('0x8e'),_0xafeb('0x63'),_0xafeb('0x64')],_0x47cb83);};var _0x207036=function(_0x37cbe2){if(!_0x37cbe2||!_0x37cbe2[_0xafeb('0x65')][_0xafeb('0x3a')]){return'';}for(var _0x5d1203='(',_0x3511ef=0x0;_0x3511ef<_0x37cbe2[_0xafeb('0x65')][_0xafeb('0x3a')];_0x3511ef+=0x1){_0x3511ef>0x0&&(_0x5d1203+='\x20'+_0x37cbe2[_0xafeb('0x66')]+'\x20');_0x5d1203+=_0x37cbe2['rules'][_0x3511ef][_0xafeb('0x67')]?_0x207036(_0x37cbe2[_0xafeb('0x65')][_0x3511ef][_0xafeb('0x67')]):_0x37cbe2[_0xafeb('0x65')][_0x3511ef][_0xafeb('0x68')]+'\x20'+_0x37cbe2[_0xafeb('0x65')][_0x3511ef]['condition']+(_0x4d7530(_0x37cbe2['rules'][_0x3511ef][_0xafeb('0x69')])?'\x20'+_0x37cbe2[_0xafeb('0x65')][_0x3511ef][_0xafeb('0x6a')]:'');}return _0x5d1203+')';};var _0x146c87={'where':{'id':_0x117b81['id']}},_0x6381a1,_0xdd9a11,_0x5e36a3,_0x50639b,_0x231deb;_0x146c87=_['merge']({},_0x146c87,_0x7d08c);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x146c87)[_0xafeb('0x26')](function(_0x546504){if(_0x546504){_0x6381a1=_0x546504;return _0x546504[_0xafeb('0x6b')]();}return null;})[_0xafeb('0x26')](function(_0x358c23){if(_0x358c23){if(!_0x358c23[_0xafeb('0x3a')]){throw new db[(_0xafeb('0x8f'))][(_0xafeb('0x6c'))](_0xafeb('0x6d'),0x193);}_0xdd9a11=_0x358c23;return db[_0xafeb('0x6e')][_0xafeb('0x6f')]({'raw':!![]});}return null;})[_0xafeb('0x26')](function(_0x188dcc){if(_0x188dcc){_0x5e36a3=_[_0xafeb('0x70')](_0x188dcc,'id');var _0x1d5358;var _0xf3fa93=squel[_0xafeb('0x71')]();_0xf3fa93[_0xafeb('0x72')](_0x6381a1[_0xafeb('0x73')]);for(var _0x340ee4=0x0;_0x340ee4<_0xdd9a11[_0xafeb('0x3a')];_0x340ee4+=0x1){_0x1d5358=_0xdd9a11[_0x340ee4][_0xafeb('0x74')]?_0x5e36a3[_0xdd9a11[_0x340ee4][_0xafeb('0x74')]][_0xafeb('0x75')]:_0xdd9a11[_0x340ee4]['field'];_0x1d5358=_0xdd9a11[_0x340ee4][_0xafeb('0x76')]?_['replace'](_0x4dc7cc[_0xdd9a11[_0x340ee4][_0xafeb('0x76')]],'%s',_0x1d5358):_0x1d5358;_0x1d5358=_0xdd9a11[_0x340ee4][_0xafeb('0x78')]?_[_0xafeb('0x77')](_0x3464d2[_0xdd9a11[_0x340ee4]['format']],'%s',_0x1d5358):_0x1d5358;if(_0xdd9a11[_0x340ee4][_0xafeb('0x90')]){_0xf3fa93[_0xafeb('0x67')](_0x1d5358);}_0xdd9a11[_0x340ee4]['orderBy']&&_0xf3fa93[_0xafeb('0x3c')](_0x1d5358,_0xdd9a11[_0x340ee4]['orderBy']==='DESC'?![]:!![]);_0xf3fa93[_0xafeb('0x68')](_0x1d5358,_0xdd9a11[_0x340ee4]['alias']||_0x1d5358);}if(_0x6381a1[_0xafeb('0x7c')]){_0x6381a1[_0xafeb('0x7c')]=JSON[_0xafeb('0x7d')](_0x6381a1[_0xafeb('0x7c')]);for(var _0x2f95cb=0x0;_0x2f95cb<_0x6381a1['joins']['length'];_0x2f95cb+=0x1){if(_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x33')]&&_[_0xafeb('0x61')](_0x15cb34,_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x33')])&&_0x6381a1['joins'][_0x2f95cb][_0xafeb('0x81')]&&_0x6381a1[_0xafeb('0x7c')][_0x2f95cb]['foreignTable']&&_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x7f')]){_0xf3fa93[_0x6381a1['joins'][_0x2f95cb]['type']](_0x6381a1['joins'][_0x2f95cb][_0xafeb('0x7e')],null,util[_0xafeb('0x78')](_0xafeb('0x80'),_0x6381a1[_0xafeb('0x73')],_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x81')],_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x7e')],_0x6381a1['joins'][_0x2f95cb][_0xafeb('0x7f')]));}}}if(_0x6381a1[_0xafeb('0x82')]){_0x6381a1[_0xafeb('0x82')]=JSON[_0xafeb('0x7d')](_0x6381a1[_0xafeb('0x82')]);_0xf3fa93[_0xafeb('0x40')](_0x207036(_0x6381a1[_0xafeb('0x82')][_0xafeb('0x67')]));}_0x231deb=_0xf3fa93[_0xafeb('0x83')]();_0xf3fa93[_0xafeb('0x1f')](_0x517a3b);_0xf3fa93[_0xafeb('0x22')](0x0);return;}})['then'](function(){if(_0x94dd4c[_0xafeb('0x91')]===_0xafeb('0x92')){return null;}var _0xaaab89=_[_0xafeb('0x3f')](_0x94dd4c,{'name':_0x94dd4c[_0xafeb('0x93')]||_0x94dd4c[_0xafeb('0x2c')]||_0x6381a1[_0xafeb('0x2c')],'basename':_0x2ac9e4,'savename':util[_0xafeb('0x78')](_0xafeb('0x94'),_0x94dd4c[_0xafeb('0x2c')]||_0x6381a1[_0xafeb('0x2c')],require(_0xafeb('0x95'))[_0xafeb('0x96')](0x4),_0x94dd4c[_0xafeb('0x91')]||_0xafeb('0x97')),'reportId':_0x6381a1['id'],'reportType':'custom'});return db[_0xafeb('0x98')][_0xafeb('0x4a')](_0xaaab89,{'raw':!![]});})[_0xafeb('0x26')](function(_0xed5737){if(_0x6381a1[_0xafeb('0x73')]===_0xafeb('0x99')){_0x231deb[_0xafeb('0x40')](_0x6381a1[_0xafeb('0x73')]+_0xafeb('0x9a'),_0x94dd4c[_0xafeb('0x9b')],_0x94dd4c[_0xafeb('0x9c')]);}else{_0x231deb['where'](_0x6381a1[_0xafeb('0x73')]+_0xafeb('0x9d'),_0x94dd4c['startDate'],_0x94dd4c[_0xafeb('0x9c')]);}if(_0xed5737){logger[_0xafeb('0x9e')](_0xafeb('0x9f'),_0x231deb[_0xafeb('0xa0')]());require('child_process')[_0xafeb('0xa1')](path[_0xafeb('0x55')](__dirname,'../../components/export/',_0xed5737[_0xafeb('0x91')]),[_0xed5737['id'],_0x231deb[_0xafeb('0xa0')](),path[_0xafeb('0x55')](__dirname,_0xafeb('0xa2'),_0xed5737['savename']),_0x2ac9e4]);return _0xed5737;}else{var _0x4a90da=squel['select']();_0x4a90da[_0xafeb('0x72')]('('+_0x231deb[_0xafeb('0xa0')]()+')',_0xafeb('0xa3'));_0x4a90da[_0xafeb('0x68')](_0xafeb('0xa4'),_0xafeb('0x21'));_0x231deb['limit'](_0x94dd4c['limit']||_0x517a3b);_0x231deb[_0xafeb('0x22')](_0x94dd4c[_0xafeb('0x22')]||0x0);return dbH[_0xafeb('0x85')][_0xafeb('0x34')](_0x4a90da[_0xafeb('0xa0')](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')][_0xafeb('0x87')]})[_0xafeb('0x26')](function(_0x367093){if(!_0x367093['length']){_0x50639b=0x0;}else{_0x50639b=_0x367093[0x0][_0xafeb('0x21')]||0x0;}return dbH[_0xafeb('0x85')]['query'](_0x231deb[_0xafeb('0xa0')](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')]['SELECT']});})[_0xafeb('0x26')](function(_0x30d36a){return{'rows':_0x30d36a||[],'count':_0x50639b};});}});}exports[_0xafeb('0xa5')]=function(_0x35ad9f,_0x2bfe28){return runReport(_0x35ad9f[_0xafeb('0x47')],_0x35ad9f[_0xafeb('0x34')],_0x35ad9f[_0xafeb('0x42')])[_0xafeb('0x26')](respondWithResult(_0x2bfe28,null))[_0xafeb('0x46')](handleError(_0x2bfe28,null));};exports['runReport']=runReport;exports[_0xafeb('0x34')]=function(_0x41d6c0,_0x47c20e){var _0x438068=0xa;var _0x4c8274=[_0xafeb('0x55'),_0xafeb('0x56'),_0xafeb('0x57'),'cross_join'];var _0x5ef461={'SUM':_0xafeb('0x89'),'COUNT':_0xafeb('0x58'),'COUNT DISTINCT':_0xafeb('0x59'),'MAX':_0xafeb('0x8a'),'MIN':_0xafeb('0x5a'),'AVG':_0xafeb('0x5b'),'GROUP_CONCAT':_0xafeb('0x8b'),'GROUP_CONCAT ASC':_0xafeb('0x5c'),'GROUP_CONCAT DESC':_0xafeb('0x8c')};var _0x3f6ad7={'SEC_TO_TIME':_0xafeb('0x5d'),'DATE':_0xafeb('0x5e'),'HOUR':_0xafeb('0x5f'),'ROUND':_0xafeb('0x60'),'UNIX_TIMESTAMP':_0xafeb('0x8d')};var _0x4f51d5=function(_0x5ed8ee){return!_[_0xafeb('0x61')]([_0xafeb('0x62'),_0xafeb('0x8e'),_0xafeb('0x63'),_0xafeb('0x64')],_0x5ed8ee);};var _0x53b603=function(_0x2934c5){if(!_0x2934c5||!_0x2934c5[_0xafeb('0x65')][_0xafeb('0x3a')]){return'';}for(var _0x18b16f='(',_0x2f58de=0x0;_0x2f58de<_0x2934c5[_0xafeb('0x65')]['length'];_0x2f58de+=0x1){_0x2f58de>0x0&&(_0x18b16f+='\x20'+_0x2934c5[_0xafeb('0x66')]+'\x20');_0x18b16f+=_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x67')]?_0x53b603(_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x67')]):_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x68')]+'\x20'+_0x2934c5[_0xafeb('0x65')][_0x2f58de]['condition']+(_0x4f51d5(_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x69')])?'\x20'+_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x6a')]:'');}return _0x18b16f+')';};var _0x2db133={'where':{'id':_0x41d6c0[_0xafeb('0x47')]['id']}},_0x52005b,_0x8e75de,_0xb2d4e4,_0x4dbb7a,_0x36b226;_0x2db133=_[_0xafeb('0x3f')]({},_0x2db133,_0x41d6c0['options']);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x2db133)[_0xafeb('0x26')](function(_0x236cf2){if(_0x236cf2){_0x52005b=_0x236cf2;return _0x236cf2['getFields']();}return null;})['then'](function(_0x570fc3){if(_0x570fc3){if(!_0x570fc3[_0xafeb('0x3a')]){throw new db[(_0xafeb('0x8f'))][(_0xafeb('0x6c'))](_0xafeb('0x6d'),0x193);}_0x8e75de=_0x570fc3;return db[_0xafeb('0x6e')][_0xafeb('0x6f')]({'raw':!![]});}return null;})[_0xafeb('0x26')](function(_0x47df9c){if(_0x47df9c){_0xb2d4e4=_[_0xafeb('0x70')](_0x47df9c,'id');var _0x5a9c8a;var _0xcefe15=squel[_0xafeb('0x71')]();_0xcefe15['from'](_0x52005b['table']);for(var _0x127ea9=0x0;_0x127ea9<_0x8e75de[_0xafeb('0x3a')];_0x127ea9+=0x1){_0x5a9c8a=_0x8e75de[_0x127ea9][_0xafeb('0x74')]?_0xb2d4e4[_0x8e75de[_0x127ea9]['MetricId']]['metric']:_0x8e75de[_0x127ea9][_0xafeb('0x68')];_0x5a9c8a=_0x8e75de[_0x127ea9][_0xafeb('0x76')]?_[_0xafeb('0x77')](_0x5ef461[_0x8e75de[_0x127ea9][_0xafeb('0x76')]],'%s',_0x5a9c8a):_0x5a9c8a;_0x5a9c8a=_0x8e75de[_0x127ea9][_0xafeb('0x78')]?_[_0xafeb('0x77')](_0x3f6ad7[_0x8e75de[_0x127ea9][_0xafeb('0x78')]],'%s',_0x5a9c8a):_0x5a9c8a;if(_0x8e75de[_0x127ea9][_0xafeb('0x90')]){_0xcefe15[_0xafeb('0x67')](_0x5a9c8a);}_0x8e75de[_0x127ea9][_0xafeb('0x79')]&&_0xcefe15[_0xafeb('0x3c')](_0x5a9c8a,_0x8e75de[_0x127ea9][_0xafeb('0x79')]===_0xafeb('0x7a')?![]:!![]);_0xcefe15[_0xafeb('0x68')](_0x5a9c8a,_0x8e75de[_0x127ea9]['alias']||_0x5a9c8a);}if(_0x52005b[_0xafeb('0x7c')]){_0x52005b['joins']=JSON[_0xafeb('0x7d')](_0x52005b[_0xafeb('0x7c')]);for(var _0x1bf991=0x0;_0x1bf991<_0x52005b[_0xafeb('0x7c')][_0xafeb('0x3a')];_0x1bf991+=0x1){if(_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x33')]&&_[_0xafeb('0x61')](_0x4c8274,_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x33')])&&_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x81')]&&_0x52005b[_0xafeb('0x7c')][_0x1bf991]['foreignTable']&&_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x7f')]){_0xcefe15[_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x33')]](_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x7e')],null,util[_0xafeb('0x78')](_0xafeb('0x80'),_0x52005b[_0xafeb('0x73')],_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x81')],_0x52005b[_0xafeb('0x7c')][_0x1bf991]['foreignTable'],_0x52005b[_0xafeb('0x7c')][_0x1bf991]['foreignKey']));}}}if(_0x52005b[_0xafeb('0x82')]){_0x52005b[_0xafeb('0x82')]=JSON['parse'](_0x52005b[_0xafeb('0x82')]);_0xcefe15[_0xafeb('0x40')](_0x53b603(_0x52005b[_0xafeb('0x82')][_0xafeb('0x67')]));}_0x36b226=_0xcefe15['clone']();_0xcefe15['limit'](_0x438068);_0xcefe15[_0xafeb('0x22')](0x0);logger[_0xafeb('0xa6')](_0xafeb('0x84'),_0xcefe15[_0xafeb('0xa0')]());return dbH[_0xafeb('0x85')][_0xafeb('0x34')](_0xcefe15[_0xafeb('0xa0')](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')][_0xafeb('0x87')]});}})[_0xafeb('0x26')](function(){return{'sql':_0x36b226[_0xafeb('0xa0')]()};})[_0xafeb('0x26')](respondWithResult(_0x47c20e,null))[_0xafeb('0x46')](handleError(_0x47c20e,null));};
\ No newline at end of file
+var _0x6950=['join','left_join','right_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','order','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','SUM(%s)','AVG(%s)','SEC_TO_TIME(%s)','IS\x20NOT\x20NULL','ValidationErrorItem','DESC','alias','foreignKey','output','web','fullPath','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','Run\x20Query:','child_process','../../files/reports','savename','countTable','run','runReport','cross_join','HOUR(%s)','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','send','map','AnalyticCustomReport','rawAttributes','type','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','keys','length','merge','create','role','user','Reports','UserProfileSection','find','userProfileId','autoAssociation','body','preview'];(function(_0x4df543,_0x1cd008){var _0x33e3b1=function(_0x239963){while(--_0x239963){_0x4df543['push'](_0x4df543['shift']());}};_0x33e3b1(++_0x1cd008);}(_0x6950,0xfb));var _0x0695=function(_0x39652c,_0x228e77){_0x39652c=_0x39652c-0x0;var _0x315138=_0x6950[_0x39652c];return _0x315138;};'use strict';var emlformat=require(_0x0695('0x0'));var rimraf=require(_0x0695('0x1'));var zipdir=require(_0x0695('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0695('0x3'));var moment=require('moment');var BPromise=require(_0x0695('0x4'));var Mustache=require(_0x0695('0x5'));var util=require(_0x0695('0x6'));var path=require('path');var sox=require(_0x0695('0x7'));var csv=require('to-csv');var ejs=require(_0x0695('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0695('0x9'));var squel=require(_0x0695('0xa'));var crypto=require(_0x0695('0xb'));var jsforce=require(_0x0695('0xc'));var deskjs=require(_0x0695('0xd'));var toCsv=require('to-csv');var querystring=require(_0x0695('0xe'));var Papa=require(_0x0695('0xf'));var Redis=require(_0x0695('0x10'));var authService=require(_0x0695('0x11'));var qs=require(_0x0695('0x12'));var as=require(_0x0695('0x13'));var hardwareService=require(_0x0695('0x14'));var logger=require(_0x0695('0x15'))('api');var utils=require(_0x0695('0x16'));var config=require(_0x0695('0x17'));var licenseUtil=require(_0x0695('0x18'));var db=require(_0x0695('0x19'))['db'];var dbH=require(_0x0695('0x19'))['dbH'];function respondWithStatusCode(_0x5ac25f,_0x36a9cb){_0x36a9cb=_0x36a9cb||0xcc;return function(_0x521009){if(_0x521009){return _0x5ac25f[_0x0695('0x1a')](_0x36a9cb);}return _0x5ac25f[_0x0695('0x1b')](_0x36a9cb)['end']();};}function respondWithResult(_0x48954e,_0x3796de){_0x3796de=_0x3796de||0xc8;return function(_0x4eb422){if(_0x4eb422){return _0x48954e['status'](_0x3796de)[_0x0695('0x1c')](_0x4eb422);}};}function respondWithFilteredResult(_0x15d3e2,_0x364d93){return function(_0x3c8085){if(_0x3c8085){var _0x3a1e97=typeof _0x364d93[_0x0695('0x1d')]==='undefined'&&typeof _0x364d93[_0x0695('0x1e')]===_0x0695('0x1f');var _0x47efde=_0x3c8085[_0x0695('0x20')];var _0x36d7d5=_0x3a1e97?0x0:_0x364d93[_0x0695('0x1d')];var _0x27747d=_0x3a1e97?_0x3c8085['count']:_0x364d93[_0x0695('0x1d')]+_0x364d93[_0x0695('0x1e')];var _0x77c707;if(_0x27747d>=_0x47efde){_0x27747d=_0x47efde;_0x77c707=0xc8;}else{_0x77c707=0xce;}_0x15d3e2[_0x0695('0x1b')](_0x77c707);return _0x15d3e2[_0x0695('0x21')](_0x0695('0x22'),_0x36d7d5+'-'+_0x27747d+'/'+_0x47efde)['json'](_0x3c8085);}return null;};}function patchUpdates(_0x4e5dfc){return function(_0x42ba7c){try{jsonpatch[_0x0695('0x23')](_0x42ba7c,_0x4e5dfc,!![]);}catch(_0x1ea7ab){return BPromise[_0x0695('0x24')](_0x1ea7ab);}return _0x42ba7c[_0x0695('0x25')]();};}function saveUpdates(_0x52704b,_0x9b4412){return function(_0x203952){if(_0x203952){return _0x203952[_0x0695('0x26')](_0x52704b)[_0x0695('0x27')](function(_0xef79cc){return _0xef79cc;});}return null;};}function removeEntity(_0x48260e,_0x2b7c0a){return function(_0x435e76){if(_0x435e76){return _0x435e76[_0x0695('0x28')]()[_0x0695('0x27')](function(){var _0x484419=_0x435e76[_0x0695('0x29')]({'plain':!![]});var _0x485c13=_0x0695('0x2a');return db[_0x0695('0x2b')][_0x0695('0x28')]({'where':{'type':_0x485c13,'resourceId':_0x484419['id']}})[_0x0695('0x27')](function(){return _0x435e76;});})[_0x0695('0x27')](function(){_0x48260e[_0x0695('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x56ff9c,_0x4ad38a){return function(_0x15b1e6){if(!_0x15b1e6){_0x56ff9c[_0x0695('0x1a')](0x194);}return _0x15b1e6;};}function handleError(_0x33a3d1,_0x425c5e){_0x425c5e=_0x425c5e||0x1f4;return function(_0x5d4b7f){logger[_0x0695('0x2c')](_0x5d4b7f[_0x0695('0x2d')]);if(_0x5d4b7f[_0x0695('0x2e')]){delete _0x5d4b7f[_0x0695('0x2e')];}_0x33a3d1[_0x0695('0x1b')](_0x425c5e)[_0x0695('0x2f')](_0x5d4b7f);};}exports['index']=function(_0xb9d7b1,_0x351745){var _0x37be55={},_0x268334={},_0x1f0f8f={'count':0x0,'rows':[]};var _0x37995d=_[_0x0695('0x30')](db[_0x0695('0x31')][_0x0695('0x32')],function(_0x287fcf){return{'name':_0x287fcf['fieldName'],'type':_0x287fcf[_0x0695('0x33')]['key']};});_0x268334[_0x0695('0x34')]=_[_0x0695('0x30')](_0x37995d,_0x0695('0x2e'));_0x268334[_0x0695('0x35')]=_['keys'](_0xb9d7b1['query']);_0x268334[_0x0695('0x36')]=_[_0x0695('0x37')](_0x268334[_0x0695('0x34')],_0x268334[_0x0695('0x35')]);_0x37be55['attributes']=_[_0x0695('0x37')](_0x268334['model'],qs[_0x0695('0x38')](_0xb9d7b1['query']['fields']));_0x37be55['attributes']=_0x37be55[_0x0695('0x39')]['length']?_0x37be55['attributes']:_0x268334[_0x0695('0x34')];if(!_0xb9d7b1[_0x0695('0x35')][_0x0695('0x3a')](_0x0695('0x3b'))){_0x37be55[_0x0695('0x1e')]=qs['limit'](_0xb9d7b1[_0x0695('0x35')][_0x0695('0x1e')]);_0x37be55[_0x0695('0x1d')]=qs[_0x0695('0x1d')](_0xb9d7b1['query']['offset']);}_0x37be55['order']=qs[_0x0695('0x3c')](_0xb9d7b1[_0x0695('0x35')][_0x0695('0x3c')]);_0x37be55[_0x0695('0x3d')]=qs[_0x0695('0x36')](_[_0x0695('0x3e')](_0xb9d7b1[_0x0695('0x35')],_0x268334[_0x0695('0x36')]),_0x37995d);if(_0xb9d7b1[_0x0695('0x35')]['filter']){_0x37be55[_0x0695('0x3d')]=_['merge'](_0x37be55[_0x0695('0x3d')],{'$or':_[_0x0695('0x30')](_0x37995d,function(_0x51dfe2){if(_0x51dfe2[_0x0695('0x33')]!==_0x0695('0x3f')){var _0x1983c1={};_0x1983c1[_0x51dfe2[_0x0695('0x2e')]]={'$like':'%'+_0xb9d7b1[_0x0695('0x35')][_0x0695('0x40')]+'%'};return _0x1983c1;}})});}_0x37be55=_['merge']({},_0x37be55,_0xb9d7b1[_0x0695('0x41')]);var _0x5e7bde={'where':_0x37be55[_0x0695('0x3d')]};return db[_0x0695('0x31')][_0x0695('0x20')](_0x5e7bde)[_0x0695('0x27')](function(_0x31e5ae){_0x1f0f8f['count']=_0x31e5ae;if(_0xb9d7b1[_0x0695('0x35')][_0x0695('0x42')]){_0x37be55[_0x0695('0x43')]=[{'all':!![]}];}return db[_0x0695('0x31')]['findAll'](_0x37be55);})['then'](function(_0x29bee){_0x1f0f8f[_0x0695('0x44')]=_0x29bee;return _0x1f0f8f;})[_0x0695('0x27')](respondWithFilteredResult(_0x351745,_0x37be55))[_0x0695('0x45')](handleError(_0x351745,null));};exports[_0x0695('0x46')]=function(_0x303bb8,_0x6869c5){var _0x43183b={'raw':![],'where':{'id':_0x303bb8[_0x0695('0x47')]['id']}},_0x5bf3e9={};_0x5bf3e9[_0x0695('0x34')]=_[_0x0695('0x48')](db[_0x0695('0x31')][_0x0695('0x32')]);_0x5bf3e9[_0x0695('0x35')]=_[_0x0695('0x48')](_0x303bb8[_0x0695('0x35')]);_0x5bf3e9[_0x0695('0x36')]=_[_0x0695('0x37')](_0x5bf3e9['model'],_0x5bf3e9['query']);_0x43183b['attributes']=_[_0x0695('0x37')](_0x5bf3e9[_0x0695('0x34')],qs[_0x0695('0x38')](_0x303bb8[_0x0695('0x35')]['fields']));_0x43183b['attributes']=_0x43183b[_0x0695('0x39')][_0x0695('0x49')]?_0x43183b[_0x0695('0x39')]:_0x5bf3e9[_0x0695('0x34')];if(_0x303bb8[_0x0695('0x35')][_0x0695('0x42')]){_0x43183b[_0x0695('0x43')]=[{'all':!![]}];}_0x43183b=_[_0x0695('0x4a')]({},_0x43183b,_0x303bb8[_0x0695('0x41')]);return db['AnalyticCustomReport']['find'](_0x43183b)[_0x0695('0x27')](handleEntityNotFound(_0x6869c5,null))[_0x0695('0x27')](respondWithResult(_0x6869c5,null))[_0x0695('0x45')](handleError(_0x6869c5,null));};exports['create']=function(_0xc7cb84,_0x45de1a){return db[_0x0695('0x31')][_0x0695('0x4b')](_0xc7cb84['body'],{})[_0x0695('0x27')](function(_0x45964b){var _0xad699a=_0xc7cb84['user'][_0x0695('0x29')]({'plain':!![]});if(!_0xad699a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xad699a[_0x0695('0x4c')]===_0x0695('0x4d')){var _0x571b20=_0x45964b[_0x0695('0x29')]({'plain':!![]});var _0x51046f=_0x0695('0x4e');return db[_0x0695('0x4f')][_0x0695('0x50')]({'where':{'name':_0x51046f,'userProfileId':_0xad699a[_0x0695('0x51')]},'raw':!![]})[_0x0695('0x27')](function(_0x4f0bd0){if(_0x4f0bd0&&_0x4f0bd0[_0x0695('0x52')]===0x0){return db[_0x0695('0x2b')][_0x0695('0x4b')]({'name':_0x571b20[_0x0695('0x2e')],'resourceId':_0x571b20['id'],'type':_0x0695('0x2a'),'sectionId':_0x4f0bd0['id']},{})[_0x0695('0x27')](function(){return _0x45964b;});}else{return _0x45964b;}})['catch'](function(_0x11e562){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x11e562);throw _0x11e562;});}return _0x45964b;})[_0x0695('0x27')](respondWithResult(_0x45de1a,0xc9))[_0x0695('0x45')](handleError(_0x45de1a,null));};exports['update']=function(_0xde7124,_0x440691){if(_0xde7124[_0x0695('0x53')]['id']){delete _0xde7124[_0x0695('0x53')]['id'];}return db[_0x0695('0x31')][_0x0695('0x50')]({'where':{'id':_0xde7124[_0x0695('0x47')]['id']}})['then'](handleEntityNotFound(_0x440691,null))[_0x0695('0x27')](saveUpdates(_0xde7124[_0x0695('0x53')],null))['then'](respondWithResult(_0x440691,null))['catch'](handleError(_0x440691,null));};exports[_0x0695('0x28')]=function(_0x571f80,_0x4a8128){return db[_0x0695('0x31')][_0x0695('0x50')]({'where':{'id':_0x571f80[_0x0695('0x47')]['id']}})[_0x0695('0x27')](handleEntityNotFound(_0x4a8128,null))[_0x0695('0x27')](removeEntity(_0x4a8128,null))[_0x0695('0x45')](handleError(_0x4a8128,null));};exports[_0x0695('0x54')]=function(_0xc22433,_0x56bd24){var _0x3e300b=0xa;var _0x159d4a=[_0x0695('0x55'),_0x0695('0x56'),_0x0695('0x57'),'cross_join'];var _0x343f9d={'SUM':'SUM(%s)','COUNT':_0x0695('0x58'),'COUNT DISTINCT':_0x0695('0x59'),'MAX':_0x0695('0x5a'),'MIN':_0x0695('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x0695('0x5c'),'GROUP_CONCAT ASC':_0x0695('0x5d'),'GROUP_CONCAT DESC':_0x0695('0x5e')};var _0x5258a2={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x0695('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0x0695('0x60'),'UNIX_TIMESTAMP':_0x0695('0x61')};var _0x30237f=function(_0x5564d1){return!_[_0x0695('0x62')]([_0x0695('0x63'),'IS\x20NOT\x20NULL',_0x0695('0x64'),_0x0695('0x65')],_0x5564d1);};var _0x3faaaa=function(_0x21d61d){if(!_0x21d61d||!_0x21d61d[_0x0695('0x66')]['length']){return'';}for(var _0x249da3='(',_0x357041=0x0;_0x357041<_0x21d61d[_0x0695('0x66')]['length'];_0x357041+=0x1){_0x357041>0x0&&(_0x249da3+='\x20'+_0x21d61d[_0x0695('0x67')]+'\x20');_0x249da3+=_0x21d61d[_0x0695('0x66')][_0x357041][_0x0695('0x68')]?_0x3faaaa(_0x21d61d['rules'][_0x357041][_0x0695('0x68')]):_0x21d61d[_0x0695('0x66')][_0x357041][_0x0695('0x69')]+'\x20'+_0x21d61d['rules'][_0x357041][_0x0695('0x6a')]+(_0x30237f(_0x21d61d['rules'][_0x357041]['condition'])?'\x20'+_0x21d61d[_0x0695('0x66')][_0x357041][_0x0695('0x6b')]:'');}return _0x249da3+')';};var _0x192daa={'where':{'id':_0xc22433[_0x0695('0x47')]['id']}},_0x2be11b,_0x2249b5,_0xa1be49,_0x522a55,_0x5211aa;_0x192daa=_[_0x0695('0x4a')]({},_0x192daa,_0xc22433[_0x0695('0x41')]);return db[_0x0695('0x31')][_0x0695('0x50')](_0x192daa)['then'](function(_0x13b5ff){if(_0x13b5ff){_0x2be11b=_0x13b5ff;return _0x13b5ff[_0x0695('0x6c')]();}return null;})[_0x0695('0x27')](function(_0x5570fb){if(_0x5570fb){if(!_0x5570fb['length']){throw new db[(_0x0695('0x6d'))]['ValidationErrorItem'](_0x0695('0x6e'),0x193);}_0x2249b5=_0x5570fb;return db[_0x0695('0x6f')][_0x0695('0x70')]({'raw':!![]});}return null;})[_0x0695('0x27')](function(_0x575235){if(_0x575235){_0xa1be49=_[_0x0695('0x71')](_0x575235,'id');var _0x37ac4c;var _0xed2403=squel[_0x0695('0x72')]();_0xed2403[_0x0695('0x73')](_0x2be11b[_0x0695('0x74')]);for(var _0x17a06a=0x0;_0x17a06a<_0x2249b5[_0x0695('0x49')];_0x17a06a+=0x1){_0x37ac4c=_0x2249b5[_0x17a06a]['MetricId']?_0xa1be49[_0x2249b5[_0x17a06a][_0x0695('0x75')]][_0x0695('0x76')]:_0x2249b5[_0x17a06a][_0x0695('0x69')];_0x37ac4c=_0x2249b5[_0x17a06a][_0x0695('0x77')]?_[_0x0695('0x78')](_0x343f9d[_0x2249b5[_0x17a06a][_0x0695('0x77')]],'%s',_0x37ac4c):_0x37ac4c;_0x37ac4c=_0x2249b5[_0x17a06a]['format']?_[_0x0695('0x78')](_0x5258a2[_0x2249b5[_0x17a06a][_0x0695('0x79')]],'%s',_0x37ac4c):_0x37ac4c;if(_0x2249b5[_0x17a06a][_0x0695('0x7a')]){_0xed2403[_0x0695('0x68')](_0x37ac4c);}_0x2249b5[_0x17a06a][_0x0695('0x7b')]&&_0xed2403[_0x0695('0x7c')](_0x37ac4c,_0x2249b5[_0x17a06a]['orderBy']==='DESC'?![]:!![]);_0xed2403[_0x0695('0x69')](_0x37ac4c,_0x2249b5[_0x17a06a]['alias']||_0x37ac4c);}if(_0x2be11b[_0x0695('0x7d')]){_0x2be11b[_0x0695('0x7d')]=JSON[_0x0695('0x7e')](_0x2be11b[_0x0695('0x7d')]);for(var _0x57b4d8=0x0;_0x57b4d8<_0x2be11b[_0x0695('0x7d')][_0x0695('0x49')];_0x57b4d8+=0x1){if(_0x2be11b['joins'][_0x57b4d8]['type']&&_[_0x0695('0x62')](_0x159d4a,_0x2be11b['joins'][_0x57b4d8][_0x0695('0x33')])&&_0x2be11b[_0x0695('0x7d')][_0x57b4d8][_0x0695('0x7f')]&&_0x2be11b[_0x0695('0x7d')][_0x57b4d8][_0x0695('0x80')]&&_0x2be11b[_0x0695('0x7d')][_0x57b4d8]['foreignKey']){_0xed2403[_0x2be11b['joins'][_0x57b4d8]['type']](_0x2be11b[_0x0695('0x7d')][_0x57b4d8][_0x0695('0x80')],null,util['format'](_0x0695('0x81'),_0x2be11b[_0x0695('0x74')],_0x2be11b['joins'][_0x57b4d8][_0x0695('0x7f')],_0x2be11b[_0x0695('0x7d')][_0x57b4d8][_0x0695('0x80')],_0x2be11b[_0x0695('0x7d')][_0x57b4d8]['foreignKey']));}}}if(_0x2be11b[_0x0695('0x82')]){_0x2be11b[_0x0695('0x82')]=JSON['parse'](_0x2be11b[_0x0695('0x82')]);_0xed2403['where'](_0x3faaaa(_0x2be11b['conditions'][_0x0695('0x68')]));}_0x5211aa=_0xed2403[_0x0695('0x83')]();_0xed2403['limit'](_0x3e300b);_0xed2403[_0x0695('0x1d')](0x0);logger[_0x0695('0x84')](_0x0695('0x85'),_0xed2403['toString']());return dbH[_0x0695('0x86')][_0x0695('0x35')](_0xed2403[_0x0695('0x87')](),{'type':dbH['sequelize'][_0x0695('0x88')][_0x0695('0x89')]});}})[_0x0695('0x27')](respondWithResult(_0x56bd24,null))['catch'](handleError(_0x56bd24,null));};function runReport(_0x522c3d,_0x48a3cb,_0x2683ab){var _0x3d388f=_0x48a3cb[_0x0695('0x2e')];var _0x515a77=0xa;var _0x35043f=['join',_0x0695('0x56'),_0x0695('0x57'),'cross_join'];var _0x16d4ee={'SUM':_0x0695('0x8a'),'COUNT':_0x0695('0x58'),'COUNT DISTINCT':_0x0695('0x59'),'MAX':'MAX(%s)','MIN':_0x0695('0x5b'),'AVG':_0x0695('0x8b'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x0695('0x5d'),'GROUP_CONCAT DESC':_0x0695('0x5e')};var _0x31d89e={'SEC_TO_TIME':_0x0695('0x8c'),'DATE':_0x0695('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0x0695('0x60'),'UNIX_TIMESTAMP':_0x0695('0x61')};var _0x1762ec=function(_0x3ce835){return!_[_0x0695('0x62')]([_0x0695('0x63'),_0x0695('0x8d'),_0x0695('0x64'),_0x0695('0x65')],_0x3ce835);};var _0x56230b=function(_0x1e3e4f){if(!_0x1e3e4f||!_0x1e3e4f['rules'][_0x0695('0x49')]){return'';}for(var _0x3127ed='(',_0x3cd811=0x0;_0x3cd811<_0x1e3e4f[_0x0695('0x66')][_0x0695('0x49')];_0x3cd811+=0x1){_0x3cd811>0x0&&(_0x3127ed+='\x20'+_0x1e3e4f[_0x0695('0x67')]+'\x20');_0x3127ed+=_0x1e3e4f['rules'][_0x3cd811][_0x0695('0x68')]?_0x56230b(_0x1e3e4f[_0x0695('0x66')][_0x3cd811][_0x0695('0x68')]):_0x1e3e4f['rules'][_0x3cd811][_0x0695('0x69')]+'\x20'+_0x1e3e4f['rules'][_0x3cd811][_0x0695('0x6a')]+(_0x1762ec(_0x1e3e4f[_0x0695('0x66')][_0x3cd811][_0x0695('0x6a')])?'\x20'+_0x1e3e4f[_0x0695('0x66')][_0x3cd811][_0x0695('0x6b')]:'');}return _0x3127ed+')';};var _0x300aff={'where':{'id':_0x522c3d['id']}},_0x332f77,_0xf0043,_0x4855cb,_0x1adb47,_0x40cadd;_0x300aff=_[_0x0695('0x4a')]({},_0x300aff,_0x2683ab);return db['AnalyticCustomReport'][_0x0695('0x50')](_0x300aff)['then'](function(_0x4a23bd){if(_0x4a23bd){_0x332f77=_0x4a23bd;return _0x4a23bd[_0x0695('0x6c')]();}return null;})[_0x0695('0x27')](function(_0x8a17e0){if(_0x8a17e0){if(!_0x8a17e0[_0x0695('0x49')]){throw new db[(_0x0695('0x6d'))][(_0x0695('0x8e'))](_0x0695('0x6e'),0x193);}_0xf0043=_0x8a17e0;return db[_0x0695('0x6f')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x2dbaaf){if(_0x2dbaaf){_0x4855cb=_['keyBy'](_0x2dbaaf,'id');var _0x5d1e66;var _0x273838=squel[_0x0695('0x72')]();_0x273838[_0x0695('0x73')](_0x332f77['table']);for(var _0x5e6131=0x0;_0x5e6131<_0xf0043[_0x0695('0x49')];_0x5e6131+=0x1){_0x5d1e66=_0xf0043[_0x5e6131][_0x0695('0x75')]?_0x4855cb[_0xf0043[_0x5e6131][_0x0695('0x75')]][_0x0695('0x76')]:_0xf0043[_0x5e6131]['field'];_0x5d1e66=_0xf0043[_0x5e6131][_0x0695('0x77')]?_[_0x0695('0x78')](_0x16d4ee[_0xf0043[_0x5e6131]['function']],'%s',_0x5d1e66):_0x5d1e66;_0x5d1e66=_0xf0043[_0x5e6131]['format']?_[_0x0695('0x78')](_0x31d89e[_0xf0043[_0x5e6131][_0x0695('0x79')]],'%s',_0x5d1e66):_0x5d1e66;if(_0xf0043[_0x5e6131][_0x0695('0x7a')]){_0x273838['group'](_0x5d1e66);}_0xf0043[_0x5e6131][_0x0695('0x7b')]&&_0x273838['order'](_0x5d1e66,_0xf0043[_0x5e6131][_0x0695('0x7b')]===_0x0695('0x8f')?![]:!![]);_0x273838['field'](_0x5d1e66,_0xf0043[_0x5e6131][_0x0695('0x90')]||_0x5d1e66);}if(_0x332f77['joins']){_0x332f77[_0x0695('0x7d')]=JSON[_0x0695('0x7e')](_0x332f77['joins']);for(var _0x36933f=0x0;_0x36933f<_0x332f77[_0x0695('0x7d')][_0x0695('0x49')];_0x36933f+=0x1){if(_0x332f77[_0x0695('0x7d')][_0x36933f][_0x0695('0x33')]&&_[_0x0695('0x62')](_0x35043f,_0x332f77[_0x0695('0x7d')][_0x36933f][_0x0695('0x33')])&&_0x332f77[_0x0695('0x7d')][_0x36933f]['parentKey']&&_0x332f77[_0x0695('0x7d')][_0x36933f][_0x0695('0x80')]&&_0x332f77[_0x0695('0x7d')][_0x36933f][_0x0695('0x91')]){_0x273838[_0x332f77[_0x0695('0x7d')][_0x36933f]['type']](_0x332f77['joins'][_0x36933f][_0x0695('0x80')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x332f77['table'],_0x332f77[_0x0695('0x7d')][_0x36933f][_0x0695('0x7f')],_0x332f77[_0x0695('0x7d')][_0x36933f][_0x0695('0x80')],_0x332f77[_0x0695('0x7d')][_0x36933f][_0x0695('0x91')]));}}}if(_0x332f77[_0x0695('0x82')]){_0x332f77['conditions']=JSON['parse'](_0x332f77[_0x0695('0x82')]);_0x273838[_0x0695('0x3d')](_0x56230b(_0x332f77[_0x0695('0x82')][_0x0695('0x68')]));}_0x40cadd=_0x273838[_0x0695('0x83')]();_0x273838[_0x0695('0x1e')](_0x515a77);_0x273838[_0x0695('0x1d')](0x0);return;}})[_0x0695('0x27')](function(){if(_0x48a3cb[_0x0695('0x92')]===_0x0695('0x93')){return null;}var _0x386ac0=_[_0x0695('0x4a')](_0x48a3cb,{'name':_0x48a3cb[_0x0695('0x94')]||_0x48a3cb[_0x0695('0x2e')]||_0x332f77[_0x0695('0x2e')],'basename':_0x3d388f,'savename':util['format']('%s-%s.%s',_0x48a3cb['name']||_0x332f77[_0x0695('0x2e')],require(_0x0695('0x95'))[_0x0695('0x96')](0x4),_0x48a3cb['output']||_0x0695('0x97')),'reportId':_0x332f77['id'],'reportType':_0x0695('0x98')});return db[_0x0695('0x99')][_0x0695('0x4b')](_0x386ac0,{'raw':!![]});})[_0x0695('0x27')](function(_0x102e30){if(_0x332f77['table']===_0x0695('0x9a')){_0x40cadd['where'](_0x332f77['table']+_0x0695('0x9b'),_0x48a3cb[_0x0695('0x9c')],_0x48a3cb['endDate']);}else{_0x40cadd[_0x0695('0x3d')](_0x332f77[_0x0695('0x74')]+_0x0695('0x9d'),_0x48a3cb[_0x0695('0x9c')],_0x48a3cb[_0x0695('0x9e')]);}if(_0x102e30){logger['info'](_0x0695('0x9f'),_0x40cadd[_0x0695('0x87')]());require(_0x0695('0xa0'))['fork'](path['join'](__dirname,'../../components/export/',_0x102e30[_0x0695('0x92')]),[_0x102e30['id'],_0x40cadd[_0x0695('0x87')](),path[_0x0695('0x55')](__dirname,_0x0695('0xa1'),_0x102e30[_0x0695('0xa2')]),_0x3d388f]);return _0x102e30;}else{var _0x3af316=squel[_0x0695('0x72')]();_0x3af316[_0x0695('0x73')]('('+_0x40cadd[_0x0695('0x87')]()+')',_0x0695('0xa3'));_0x3af316[_0x0695('0x69')]('COUNT(*)',_0x0695('0x20'));_0x40cadd['limit'](_0x48a3cb['limit']||_0x515a77);_0x40cadd[_0x0695('0x1d')](_0x48a3cb[_0x0695('0x1d')]||0x0);return dbH[_0x0695('0x86')][_0x0695('0x35')](_0x3af316[_0x0695('0x87')](),{'type':dbH['sequelize'][_0x0695('0x88')][_0x0695('0x89')]})[_0x0695('0x27')](function(_0x29c285){if(!_0x29c285[_0x0695('0x49')]){_0x1adb47=0x0;}else{_0x1adb47=_0x29c285[0x0][_0x0695('0x20')]||0x0;}return dbH[_0x0695('0x86')]['query'](_0x40cadd[_0x0695('0x87')](),{'type':dbH[_0x0695('0x86')][_0x0695('0x88')][_0x0695('0x89')]});})[_0x0695('0x27')](function(_0x1605c0){return{'rows':_0x1605c0||[],'count':_0x1adb47};});}});}exports[_0x0695('0xa4')]=function(_0x48bdbc,_0x10fdd4){return runReport(_0x48bdbc['params'],_0x48bdbc['query'],_0x48bdbc[_0x0695('0x41')])['then'](respondWithResult(_0x10fdd4,null))[_0x0695('0x45')](handleError(_0x10fdd4,null));};exports[_0x0695('0xa5')]=runReport;exports['query']=function(_0x3b8b35,_0x455050){var _0x5d1d0=0xa;var _0x5a8b2f=[_0x0695('0x55'),_0x0695('0x56'),_0x0695('0x57'),_0x0695('0xa6')];var _0x32bdea={'SUM':_0x0695('0x8a'),'COUNT':_0x0695('0x58'),'COUNT DISTINCT':_0x0695('0x59'),'MAX':_0x0695('0x5a'),'MIN':'MIN(%s)','AVG':_0x0695('0x8b'),'GROUP_CONCAT':_0x0695('0x5c'),'GROUP_CONCAT ASC':_0x0695('0x5d'),'GROUP_CONCAT DESC':_0x0695('0x5e')};var _0x278056={'SEC_TO_TIME':_0x0695('0x8c'),'DATE':_0x0695('0x5f'),'HOUR':_0x0695('0xa7'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x0695('0x61')};var _0x114707=function(_0x11516b){return!_[_0x0695('0x62')](['IS\x20NULL',_0x0695('0x8d'),_0x0695('0x64'),_0x0695('0x65')],_0x11516b);};var _0x9ef6e=function(_0x189522){if(!_0x189522||!_0x189522[_0x0695('0x66')]['length']){return'';}for(var _0x57896a='(',_0x3368f0=0x0;_0x3368f0<_0x189522[_0x0695('0x66')][_0x0695('0x49')];_0x3368f0+=0x1){_0x3368f0>0x0&&(_0x57896a+='\x20'+_0x189522[_0x0695('0x67')]+'\x20');_0x57896a+=_0x189522[_0x0695('0x66')][_0x3368f0][_0x0695('0x68')]?_0x9ef6e(_0x189522['rules'][_0x3368f0][_0x0695('0x68')]):_0x189522[_0x0695('0x66')][_0x3368f0][_0x0695('0x69')]+'\x20'+_0x189522[_0x0695('0x66')][_0x3368f0]['condition']+(_0x114707(_0x189522[_0x0695('0x66')][_0x3368f0][_0x0695('0x6a')])?'\x20'+_0x189522[_0x0695('0x66')][_0x3368f0]['value']:'');}return _0x57896a+')';};var _0x119437={'where':{'id':_0x3b8b35[_0x0695('0x47')]['id']}},_0x267fc7,_0x1537bd,_0x535e8b,_0x3645dd,_0x38e1f8;_0x119437=_[_0x0695('0x4a')]({},_0x119437,_0x3b8b35[_0x0695('0x41')]);return db[_0x0695('0x31')][_0x0695('0x50')](_0x119437)[_0x0695('0x27')](function(_0x387947){if(_0x387947){_0x267fc7=_0x387947;return _0x387947['getFields']();}return null;})[_0x0695('0x27')](function(_0x28082e){if(_0x28082e){if(!_0x28082e[_0x0695('0x49')]){throw new db['Sequelize'][(_0x0695('0x8e'))](_0x0695('0x6e'),0x193);}_0x1537bd=_0x28082e;return db['AnalyticMetric'][_0x0695('0x70')]({'raw':!![]});}return null;})[_0x0695('0x27')](function(_0x38afd2){if(_0x38afd2){_0x535e8b=_[_0x0695('0x71')](_0x38afd2,'id');var _0x5e73e7;var _0x5dbe9e=squel[_0x0695('0x72')]();_0x5dbe9e[_0x0695('0x73')](_0x267fc7[_0x0695('0x74')]);for(var _0x535723=0x0;_0x535723<_0x1537bd[_0x0695('0x49')];_0x535723+=0x1){_0x5e73e7=_0x1537bd[_0x535723][_0x0695('0x75')]?_0x535e8b[_0x1537bd[_0x535723][_0x0695('0x75')]][_0x0695('0x76')]:_0x1537bd[_0x535723]['field'];_0x5e73e7=_0x1537bd[_0x535723]['function']?_[_0x0695('0x78')](_0x32bdea[_0x1537bd[_0x535723][_0x0695('0x77')]],'%s',_0x5e73e7):_0x5e73e7;_0x5e73e7=_0x1537bd[_0x535723][_0x0695('0x79')]?_['replace'](_0x278056[_0x1537bd[_0x535723][_0x0695('0x79')]],'%s',_0x5e73e7):_0x5e73e7;if(_0x1537bd[_0x535723][_0x0695('0x7a')]){_0x5dbe9e[_0x0695('0x68')](_0x5e73e7);}_0x1537bd[_0x535723][_0x0695('0x7b')]&&_0x5dbe9e[_0x0695('0x7c')](_0x5e73e7,_0x1537bd[_0x535723][_0x0695('0x7b')]===_0x0695('0x8f')?![]:!![]);_0x5dbe9e[_0x0695('0x69')](_0x5e73e7,_0x1537bd[_0x535723][_0x0695('0x90')]||_0x5e73e7);}if(_0x267fc7[_0x0695('0x7d')]){_0x267fc7['joins']=JSON[_0x0695('0x7e')](_0x267fc7[_0x0695('0x7d')]);for(var _0x2465dd=0x0;_0x2465dd<_0x267fc7['joins'][_0x0695('0x49')];_0x2465dd+=0x1){if(_0x267fc7['joins'][_0x2465dd][_0x0695('0x33')]&&_[_0x0695('0x62')](_0x5a8b2f,_0x267fc7[_0x0695('0x7d')][_0x2465dd][_0x0695('0x33')])&&_0x267fc7[_0x0695('0x7d')][_0x2465dd][_0x0695('0x7f')]&&_0x267fc7[_0x0695('0x7d')][_0x2465dd][_0x0695('0x80')]&&_0x267fc7['joins'][_0x2465dd][_0x0695('0x91')]){_0x5dbe9e[_0x267fc7[_0x0695('0x7d')][_0x2465dd]['type']](_0x267fc7['joins'][_0x2465dd][_0x0695('0x80')],null,util['format'](_0x0695('0x81'),_0x267fc7[_0x0695('0x74')],_0x267fc7[_0x0695('0x7d')][_0x2465dd]['parentKey'],_0x267fc7['joins'][_0x2465dd][_0x0695('0x80')],_0x267fc7[_0x0695('0x7d')][_0x2465dd]['foreignKey']));}}}if(_0x267fc7['conditions']){_0x267fc7[_0x0695('0x82')]=JSON[_0x0695('0x7e')](_0x267fc7[_0x0695('0x82')]);_0x5dbe9e[_0x0695('0x3d')](_0x9ef6e(_0x267fc7['conditions'][_0x0695('0x68')]));}_0x38e1f8=_0x5dbe9e['clone']();_0x5dbe9e[_0x0695('0x1e')](_0x5d1d0);_0x5dbe9e[_0x0695('0x1d')](0x0);logger[_0x0695('0x84')]('Limited\x20Query:',_0x5dbe9e[_0x0695('0x87')]());return dbH[_0x0695('0x86')][_0x0695('0x35')](_0x5dbe9e['toString'](),{'type':dbH[_0x0695('0x86')][_0x0695('0x88')][_0x0695('0x89')]});}})[_0x0695('0x27')](function(){return{'sql':_0x38e1f8[_0x0695('0x87')]()};})[_0x0695('0x27')](respondWithResult(_0x455050,null))[_0x0695('0x45')](handleError(_0x455050,null));};
\ No newline at end of file
index f105e27..7ce6362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54b9=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api'];(function(_0x1c4002,_0x190eef){var _0x434de9=function(_0x599aa6){while(--_0x599aa6){_0x1c4002['push'](_0x1c4002['shift']());}};_0x434de9(++_0x190eef);}(_0x54b9,0x134));var _0x954b=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x54b9[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0x954b('0x0'));var util=require(_0x954b('0x1'));var logger=require(_0x954b('0x2'))(_0x954b('0x3'));var moment=require('moment');var BPromise=require(_0x954b('0x4'));var rp=require(_0x954b('0x5'));var fs=require('fs');var path=require(_0x954b('0x6'));var rimraf=require(_0x954b('0x7'));var config=require(_0x954b('0x8'));var attributes=require(_0x954b('0x9'));module[_0x954b('0xa')]=function(_0x34600c,_0x20f4c0){return _0x34600c['define'](_0x954b('0xb'),attributes,{'tableName':_0x954b('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5170=['path','rimraf','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x5170,0x199));var _0x0517=function(_0x20ed01,_0x51f6c4){_0x20ed01=_0x20ed01-0x0;var _0x3d2ab3=_0x5170[_0x20ed01];return _0x3d2ab3;};'use strict';var _=require(_0x0517('0x0'));var util=require(_0x0517('0x1'));var logger=require(_0x0517('0x2'))(_0x0517('0x3'));var moment=require(_0x0517('0x4'));var BPromise=require(_0x0517('0x5'));var rp=require(_0x0517('0x6'));var fs=require('fs');var path=require(_0x0517('0x7'));var rimraf=require(_0x0517('0x8'));var config=require('../../config/environment');var attributes=require(_0x0517('0x9'));module[_0x0517('0xa')]=function(_0x21d97b,_0x1bb9ae){return _0x21d97b[_0x0517('0xb')](_0x0517('0xc'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa41247..ad3a26f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8210=['error','code','message','info','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','AnalyticCustomReport,\x20%s,\x20%s','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x8210,0x1ea));var _0x0821=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x8210[_0x279d37];return _0x530173;};'use strict';var _=require(_0x0821('0x0'));var util=require(_0x0821('0x1'));var moment=require(_0x0821('0x2'));var BPromise=require('bluebird');var rs=require(_0x0821('0x3'));var fs=require('fs');var Redis=require(_0x0821('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0821('0x5'));var logger=require(_0x0821('0x6'))(_0x0821('0x7'));var config=require(_0x0821('0x8'));var jayson=require(_0x0821('0x9'));var client=jayson[_0x0821('0xa')][_0x0821('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x468f49,_0x2fcd82,_0x480871){return new BPromise(function(_0x1c2307,_0x5699ab){return client['request'](_0x468f49,_0x480871)[_0x0821('0xc')](function(_0x4a390d){logger['info'](_0x0821('0xd'),_0x2fcd82,'request\x20sent');logger[_0x0821('0xe')](_0x0821('0xf'),_0x2fcd82,'request\x20sent',JSON['stringify'](_0x4a390d));if(_0x4a390d[_0x0821('0x10')]){if(_0x4a390d[_0x0821('0x10')][_0x0821('0x11')]===0x1f4){logger[_0x0821('0x10')](_0x0821('0xd'),_0x2fcd82,_0x4a390d[_0x0821('0x10')][_0x0821('0x12')]);return _0x5699ab(_0x4a390d[_0x0821('0x10')][_0x0821('0x12')]);}logger[_0x0821('0x10')](_0x0821('0xd'),_0x2fcd82,_0x4a390d['error']['message']);return _0x1c2307(_0x4a390d[_0x0821('0x10')][_0x0821('0x12')]);}else{logger[_0x0821('0x13')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2fcd82,_0x0821('0x14'));_0x1c2307(_0x4a390d[_0x0821('0x15')][_0x0821('0x12')]);}})[_0x0821('0x16')](function(_0x865a8c){logger[_0x0821('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2fcd82,_0x865a8c);_0x5699ab(_0x865a8c);});});}
\ No newline at end of file
+var _0xa370=['message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa370,0x173));var _0x0a37=function(_0x1111ac,_0x27f3d9){_0x1111ac=_0x1111ac-0x0;var _0x2b30c6=_0xa370[_0x1111ac];return _0x2b30c6;};'use strict';var _=require(_0x0a37('0x0'));var util=require('util');var moment=require(_0x0a37('0x1'));var BPromise=require(_0x0a37('0x2'));var rs=require(_0x0a37('0x3'));var fs=require('fs');var Redis=require(_0x0a37('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a37('0x5'));var logger=require(_0x0a37('0x6'))(_0x0a37('0x7'));var config=require(_0x0a37('0x8'));var jayson=require(_0x0a37('0x9'));var client=jayson[_0x0a37('0xa')][_0x0a37('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23f2b4,_0x4fa856,_0x3fdec7){return new BPromise(function(_0x42a395,_0x4de362){return client['request'](_0x23f2b4,_0x3fdec7)['then'](function(_0x51a764){logger[_0x0a37('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4fa856,'request\x20sent');logger[_0x0a37('0xd')](_0x0a37('0xe'),_0x4fa856,_0x0a37('0xf'),JSON[_0x0a37('0x10')](_0x51a764));if(_0x51a764[_0x0a37('0x11')]){if(_0x51a764['error'][_0x0a37('0x12')]===0x1f4){logger['error'](_0x0a37('0x13'),_0x4fa856,_0x51a764[_0x0a37('0x11')][_0x0a37('0x14')]);return _0x4de362(_0x51a764[_0x0a37('0x11')][_0x0a37('0x14')]);}logger[_0x0a37('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4fa856,_0x51a764[_0x0a37('0x11')][_0x0a37('0x14')]);return _0x42a395(_0x51a764['error'][_0x0a37('0x14')]);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x4fa856,_0x0a37('0xf'));_0x42a395(_0x51a764[_0x0a37('0x15')][_0x0a37('0x14')]);}})[_0x0a37('0x16')](function(_0xced11){logger[_0x0a37('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4fa856,_0xced11);_0x4de362(_0xced11);});});}
\ No newline at end of file
index b4db037..ed7010e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab3=['../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','show','preview','/:id/run','run','/:id/query','query','post','put','update','delete','exports','multer','util','express','Router'];(function(_0x1a3b30,_0x420ab2){var _0x471b2c=function(_0x219e65){while(--_0x219e65){_0x1a3b30['push'](_0x1a3b30['shift']());}};_0x471b2c(++_0x420ab2);}(_0x4ab3,0x1e0));var _0x34ab=function(_0x5bfa44,_0x76dacc){_0x5bfa44=_0x5bfa44-0x0;var _0x43815f=_0x4ab3[_0x5bfa44];return _0x43815f;};'use strict';var multer=require(_0x34ab('0x0'));var util=require(_0x34ab('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x34ab('0x2'));var router=express[_0x34ab('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x34ab('0x4'));var interaction=require(_0x34ab('0x5'));var config=require('../../config/environment');var controller=require(_0x34ab('0x6'));router[_0x34ab('0x7')]('/',auth[_0x34ab('0x8')](),controller[_0x34ab('0x9')]);router[_0x34ab('0x7')](_0x34ab('0xa'),auth[_0x34ab('0x8')](),controller[_0x34ab('0xb')]);router['get']('/:id/preview',auth['isAuthenticated'](),controller[_0x34ab('0xc')]);router[_0x34ab('0x7')](_0x34ab('0xd'),auth[_0x34ab('0x8')](),controller[_0x34ab('0xe')]);router[_0x34ab('0x7')](_0x34ab('0xf'),auth[_0x34ab('0x8')](),controller[_0x34ab('0x10')]);router[_0x34ab('0x11')]('/',auth[_0x34ab('0x8')](),controller['create']);router[_0x34ab('0x12')](_0x34ab('0xa'),auth['isAuthenticated'](),controller[_0x34ab('0x13')]);router[_0x34ab('0x14')]('/:id',auth[_0x34ab('0x8')](),controller['destroy']);module[_0x34ab('0x15')]=router;
\ No newline at end of file
+var _0x9e79=['put','update','delete','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','isAuthenticated','index','get','/:id','show','/:id/preview','preview','run','/:id/query','post','create'];(function(_0x2495da,_0x11a291){var _0x15575c=function(_0x1cbe0c){while(--_0x1cbe0c){_0x2495da['push'](_0x2495da['shift']());}};_0x15575c(++_0x11a291);}(_0x9e79,0x114));var _0x99e7=function(_0x55b6a6,_0x1f6235){_0x55b6a6=_0x55b6a6-0x0;var _0x4d7974=_0x9e79[_0x55b6a6];return _0x4d7974;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x99e7('0x0'));var express=require(_0x99e7('0x1'));var router=express['Router']();var fs_extra=require(_0x99e7('0x2'));var auth=require(_0x99e7('0x3'));var interaction=require(_0x99e7('0x4'));var config=require(_0x99e7('0x5'));var controller=require(_0x99e7('0x6'));router['get']('/',auth[_0x99e7('0x7')](),controller[_0x99e7('0x8')]);router[_0x99e7('0x9')](_0x99e7('0xa'),auth[_0x99e7('0x7')](),controller[_0x99e7('0xb')]);router[_0x99e7('0x9')](_0x99e7('0xc'),auth[_0x99e7('0x7')](),controller[_0x99e7('0xd')]);router['get']('/:id/run',auth[_0x99e7('0x7')](),controller[_0x99e7('0xe')]);router['get'](_0x99e7('0xf'),auth[_0x99e7('0x7')](),controller['query']);router[_0x99e7('0x10')]('/',auth['isAuthenticated'](),controller[_0x99e7('0x11')]);router[_0x99e7('0x12')]('/:id',auth[_0x99e7('0x7')](),controller[_0x99e7('0x13')]);router[_0x99e7('0x14')](_0x99e7('0xa'),auth[_0x99e7('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 234f9c9..60849ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xfb0cfd,_0x500179){_0xfb0cfd=_0xfb0cfd-0x0;var _0x2fd8aa=_0x7da7[_0xfb0cfd];return _0x2fd8aa;};'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
+var _0xf494=['STRING','TEXT','sequelize','exports'];(function(_0x71af84,_0x5f514d){var _0x1d550d=function(_0x17f9f4){while(--_0x17f9f4){_0x71af84['push'](_0x71af84['shift']());}};_0x1d550d(++_0x5f514d);}(_0xf494,0x1c6));var _0x4f49=function(_0x7a2540,_0x1454aa){_0x7a2540=_0x7a2540-0x0;var _0x3e6f43=_0xf494[_0x7a2540];return _0x3e6f43;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4f49('0x2')]},'table':{'type':Sequelize[_0x4f49('0x2')]},'conditions':{'type':Sequelize[_0x4f49('0x3')]},'joins':{'type':Sequelize[_0x4f49('0x3')]}};
\ No newline at end of file
index ffb10c9..d89c941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['getFields','ValidationErrorItem','metric','format','DESC','output','web','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','sequelize','SELECT','run','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','set','save','destroy','then','get','end','error','stack','name','send','index','map','AnalyticDefaultReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','rawAttributes','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20EMPTY','rules','group','condition','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','field','replace','function','groupBy','orderBy','alias','parse','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','QueryTypes','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','operator','value'];(function(_0x56de0a,_0x452b57){var _0x4f63e4=function(_0x3be4f2){while(--_0x3be4f2){_0x56de0a['push'](_0x56de0a['shift']());}};_0x4f63e4(++_0x452b57);}(_0x2542,0x169));var _0x2254=function(_0x1f109c,_0x106c20){_0x1f109c=_0x1f109c-0x0;var _0x572b2c=_0x2542[_0x1f109c];return _0x572b2c;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];var dbH=require(_0x2254('0x19'))[_0x2254('0x1a')];function respondWithStatusCode(_0x3c326b,_0x381efe){_0x381efe=_0x381efe||0xcc;return function(_0x592a4f){if(_0x592a4f){return _0x3c326b[_0x2254('0x1b')](_0x381efe);}return _0x3c326b[_0x2254('0x1c')](_0x381efe)['end']();};}function respondWithResult(_0x2f4de,_0x1e582d){_0x1e582d=_0x1e582d||0xc8;return function(_0xfb23cb){if(_0xfb23cb){return _0x2f4de[_0x2254('0x1c')](_0x1e582d)[_0x2254('0x1d')](_0xfb23cb);}};}function respondWithFilteredResult(_0xbc5548,_0x50f137){return function(_0x18baf4){if(_0x18baf4){var _0x57247a=typeof _0x50f137[_0x2254('0x1e')]===_0x2254('0x1f')&&typeof _0x50f137[_0x2254('0x20')]===_0x2254('0x1f');var _0x1ae11e=_0x18baf4[_0x2254('0x21')];var _0x497724=_0x57247a?0x0:_0x50f137['offset'];var _0x5ec98d=_0x57247a?_0x18baf4[_0x2254('0x21')]:_0x50f137[_0x2254('0x1e')]+_0x50f137[_0x2254('0x20')];var _0x1f1163;if(_0x5ec98d>=_0x1ae11e){_0x5ec98d=_0x1ae11e;_0x1f1163=0xc8;}else{_0x1f1163=0xce;}_0xbc5548[_0x2254('0x1c')](_0x1f1163);return _0xbc5548[_0x2254('0x22')]('Content-Range',_0x497724+'-'+_0x5ec98d+'/'+_0x1ae11e)[_0x2254('0x1d')](_0x18baf4);}return null;};}function patchUpdates(_0x16148d){return function(_0x906cde){try{jsonpatch['apply'](_0x906cde,_0x16148d,!![]);}catch(_0x52fedc){return BPromise['reject'](_0x52fedc);}return _0x906cde[_0x2254('0x23')]();};}function saveUpdates(_0x559af4,_0xf88b56){return function(_0x56b91e){if(_0x56b91e){return _0x56b91e['update'](_0x559af4)['then'](function(_0x540020){return _0x540020;});}return null;};}function removeEntity(_0x5e5edb,_0x4f797d){return function(_0x1aa71f){if(_0x1aa71f){return _0x1aa71f[_0x2254('0x24')]()[_0x2254('0x25')](function(){var _0x265467=_0x1aa71f[_0x2254('0x26')]({'plain':!![]});var _0x1349c9='DefaultReports';return db['UserProfileResource'][_0x2254('0x24')]({'where':{'type':_0x1349c9,'resourceId':_0x265467['id']}})['then'](function(){return _0x1aa71f;});})[_0x2254('0x25')](function(){_0x5e5edb[_0x2254('0x1c')](0xcc)[_0x2254('0x27')]();});}};}function handleEntityNotFound(_0x3aa0bd,_0x19043b){return function(_0x482688){if(!_0x482688){_0x3aa0bd[_0x2254('0x1b')](0x194);}return _0x482688;};}function handleError(_0x2a789b,_0x21285d){_0x21285d=_0x21285d||0x1f4;return function(_0x37af8b){logger[_0x2254('0x28')](_0x37af8b[_0x2254('0x29')]);if(_0x37af8b[_0x2254('0x2a')]){delete _0x37af8b[_0x2254('0x2a')];}_0x2a789b[_0x2254('0x1c')](_0x21285d)[_0x2254('0x2b')](_0x37af8b);};}exports[_0x2254('0x2c')]=function(_0xad7774,_0x220f2a){var _0x27d30a={},_0x4577f4={},_0x1b16c8={'count':0x0,'rows':[]};var _0x2c929f=_[_0x2254('0x2d')](db[_0x2254('0x2e')]['rawAttributes'],function(_0xe29526){return{'name':_0xe29526[_0x2254('0x2f')],'type':_0xe29526[_0x2254('0x30')][_0x2254('0x31')]};});_0x4577f4[_0x2254('0x32')]=_[_0x2254('0x2d')](_0x2c929f,_0x2254('0x2a'));_0x4577f4[_0x2254('0x33')]=_[_0x2254('0x34')](_0xad7774['query']);_0x4577f4[_0x2254('0x35')]=_[_0x2254('0x36')](_0x4577f4['model'],_0x4577f4[_0x2254('0x33')]);_0x27d30a[_0x2254('0x37')]=_[_0x2254('0x36')](_0x4577f4[_0x2254('0x32')],qs['fields'](_0xad7774['query'][_0x2254('0x38')]));_0x27d30a['attributes']=_0x27d30a[_0x2254('0x37')][_0x2254('0x39')]?_0x27d30a[_0x2254('0x37')]:_0x4577f4[_0x2254('0x32')];if(!_0xad7774[_0x2254('0x33')][_0x2254('0x3a')](_0x2254('0x3b'))){_0x27d30a['limit']=qs[_0x2254('0x20')](_0xad7774[_0x2254('0x33')][_0x2254('0x20')]);_0x27d30a[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0xad7774[_0x2254('0x33')][_0x2254('0x1e')]);}_0x27d30a[_0x2254('0x3c')]=qs[_0x2254('0x3d')](_0xad7774[_0x2254('0x33')]['sort']);_0x27d30a[_0x2254('0x3e')]=qs[_0x2254('0x35')](_[_0x2254('0x3f')](_0xad7774[_0x2254('0x33')],_0x4577f4['filters']),_0x2c929f);if(_0xad7774[_0x2254('0x33')][_0x2254('0x40')]){_0x27d30a[_0x2254('0x3e')]=_[_0x2254('0x41')](_0x27d30a[_0x2254('0x3e')],{'$or':_[_0x2254('0x2d')](_0x2c929f,function(_0x423377){if(_0x423377[_0x2254('0x30')]!=='VIRTUAL'){var _0x362ad1={};_0x362ad1[_0x423377['name']]={'$like':'%'+_0xad7774[_0x2254('0x33')][_0x2254('0x40')]+'%'};return _0x362ad1;}})});}_0x27d30a=_[_0x2254('0x41')]({},_0x27d30a,_0xad7774[_0x2254('0x42')]);var _0x460bb3={'where':_0x27d30a[_0x2254('0x3e')]};return db[_0x2254('0x2e')]['count'](_0x460bb3)[_0x2254('0x25')](function(_0x2f1ff9){_0x1b16c8[_0x2254('0x21')]=_0x2f1ff9;if(_0xad7774[_0x2254('0x33')][_0x2254('0x43')]){_0x27d30a['include']=[{'all':!![]}];}return db[_0x2254('0x2e')][_0x2254('0x44')](_0x27d30a);})[_0x2254('0x25')](function(_0x135ed8){_0x1b16c8[_0x2254('0x45')]=_0x135ed8;return _0x1b16c8;})['then'](respondWithFilteredResult(_0x220f2a,_0x27d30a))[_0x2254('0x46')](handleError(_0x220f2a,null));};exports['show']=function(_0x91e091,_0x1ded9a){var _0xb4d042={'raw':!![],'where':{'id':_0x91e091[_0x2254('0x47')]['id']}},_0x31c31e={};_0x31c31e[_0x2254('0x32')]=_[_0x2254('0x34')](db[_0x2254('0x2e')][_0x2254('0x48')]);_0x31c31e[_0x2254('0x33')]=_[_0x2254('0x34')](_0x91e091[_0x2254('0x33')]);_0x31c31e[_0x2254('0x35')]=_['intersection'](_0x31c31e[_0x2254('0x32')],_0x31c31e[_0x2254('0x33')]);_0xb4d042[_0x2254('0x37')]=_['intersection'](_0x31c31e[_0x2254('0x32')],qs[_0x2254('0x38')](_0x91e091[_0x2254('0x33')][_0x2254('0x38')]));_0xb4d042[_0x2254('0x37')]=_0xb4d042[_0x2254('0x37')][_0x2254('0x39')]?_0xb4d042[_0x2254('0x37')]:_0x31c31e[_0x2254('0x32')];if(_0x91e091['query'][_0x2254('0x43')]){_0xb4d042[_0x2254('0x49')]=[{'all':!![]}];}_0xb4d042=_[_0x2254('0x41')]({},_0xb4d042,_0x91e091[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0xb4d042)[_0x2254('0x25')](handleEntityNotFound(_0x1ded9a,null))[_0x2254('0x25')](respondWithResult(_0x1ded9a,null))[_0x2254('0x46')](handleError(_0x1ded9a,null));};exports[_0x2254('0x4b')]=function(_0x5b14c5,_0x36b977){return db[_0x2254('0x2e')]['create'](_0x5b14c5[_0x2254('0x4c')],{})[_0x2254('0x25')](function(_0x12e2ff){var _0x4331a9=_0x5b14c5['user'][_0x2254('0x26')]({'plain':!![]});if(!_0x4331a9)throw new Error(_0x2254('0x4d'));if(_0x4331a9['role']===_0x2254('0x4e')){var _0x3f0670=_0x12e2ff[_0x2254('0x26')]({'plain':!![]});var _0x43bb88='Reports';return db[_0x2254('0x4f')][_0x2254('0x4a')]({'where':{'name':_0x43bb88,'userProfileId':_0x4331a9[_0x2254('0x50')]},'raw':!![]})['then'](function(_0x4cc18a){if(_0x4cc18a&&_0x4cc18a[_0x2254('0x51')]===0x0){return db[_0x2254('0x52')]['create']({'name':_0x3f0670[_0x2254('0x2a')],'resourceId':_0x3f0670['id'],'type':'DefaultReports','sectionId':_0x4cc18a['id']},{})['then'](function(){return _0x12e2ff;});}else{return _0x12e2ff;}})[_0x2254('0x46')](function(_0x135962){logger[_0x2254('0x28')](_0x2254('0x53'),_0x135962);throw _0x135962;});}return _0x12e2ff;})[_0x2254('0x25')](respondWithResult(_0x36b977,0xc9))['catch'](handleError(_0x36b977,null));};exports['update']=function(_0x1bd988,_0x5e3fbc){if(_0x1bd988[_0x2254('0x4c')]['id']){delete _0x1bd988[_0x2254('0x4c')]['id'];}return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x1bd988['params']['id']}})[_0x2254('0x25')](handleEntityNotFound(_0x5e3fbc,null))[_0x2254('0x25')](saveUpdates(_0x1bd988['body'],null))['then'](respondWithResult(_0x5e3fbc,null))[_0x2254('0x46')](handleError(_0x5e3fbc,null));};exports['destroy']=function(_0x2cc59c,_0x305ace){return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x2cc59c[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x305ace,null))['then'](removeEntity(_0x305ace,null))[_0x2254('0x46')](handleError(_0x305ace,null));};exports['preview']=function(_0x335c66,_0x510fe0){var _0x4da493=0xa;var _0x5999c8=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x13606e={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':_0x2254('0x5b'),'MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f391d={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x329378=function(_0xae171c){return!_[_0x2254('0x65')]([_0x2254('0x66'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x2254('0x67')],_0xae171c);};var _0x423c17=function(_0x1d73a3){if(!_0x1d73a3||!_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x53b55b='(',_0x45b7bd=0x0;_0x45b7bd<_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')];_0x45b7bd+=0x1){_0x45b7bd>0x0&&(_0x53b55b+='\x20'+_0x1d73a3['operator']+'\x20');_0x53b55b+=_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]?_0x423c17(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]):_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['field']+'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd][_0x2254('0x6a')]+(_0x329378(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x6a')])?'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['value']:'');}return _0x53b55b+')';};var _0x5cc6bd={'where':{'id':_0x335c66['params']['id']}},_0xde4e7,_0xa159a4,_0x486b82,_0x506d95,_0x48406e;_0x5cc6bd=_[_0x2254('0x41')]({},_0x5cc6bd,_0x335c66['options']);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x5cc6bd)[_0x2254('0x25')](function(_0x1ed6b9){if(_0x1ed6b9){_0xde4e7=_0x1ed6b9;return _0x1ed6b9['getFields']();}return null;})[_0x2254('0x25')](function(_0x5ecf82){if(_0x5ecf82){if(!_0x5ecf82[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xa159a4=_0x5ecf82;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x3b3b20){if(_0x3b3b20){_0x486b82=_[_0x2254('0x6e')](_0x3b3b20,'id');var _0x3cefbe;var _0x4f77e5=squel[_0x2254('0x6f')]();_0x4f77e5[_0x2254('0x70')](_0xde4e7['table']);for(var _0x1ac8ff=0x0;_0x1ac8ff<_0xa159a4[_0x2254('0x39')];_0x1ac8ff+=0x1){_0x3cefbe=_0xa159a4[_0x1ac8ff]['MetricId']?_0x486b82[_0xa159a4[_0x1ac8ff][_0x2254('0x71')]]['metric']:_0xa159a4[_0x1ac8ff][_0x2254('0x72')];_0x3cefbe=_0xa159a4[_0x1ac8ff]['function']?_[_0x2254('0x73')](_0x13606e[_0xa159a4[_0x1ac8ff][_0x2254('0x74')]],'%s',_0x3cefbe):_0x3cefbe;_0x3cefbe=_0xa159a4[_0x1ac8ff]['format']?_[_0x2254('0x73')](_0x2f391d[_0xa159a4[_0x1ac8ff]['format']],'%s',_0x3cefbe):_0x3cefbe;if(_0xa159a4[_0x1ac8ff][_0x2254('0x75')]){_0x4f77e5[_0x2254('0x69')](_0x3cefbe);}_0xa159a4[_0x1ac8ff][_0x2254('0x76')]&&_0x4f77e5['order'](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x76')]==='DESC'?![]:!![]);_0x4f77e5[_0x2254('0x72')](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x77')]||_0x3cefbe);}if(_0xde4e7['joins']){_0xde4e7['joins']=JSON[_0x2254('0x78')](_0xde4e7[_0x2254('0x79')]);for(var _0x451520=0x0;_0x451520<_0xde4e7[_0x2254('0x79')]['length'];_0x451520+=0x1){if(_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x5999c8,_0xde4e7[_0x2254('0x79')][_0x451520]['type'])&&_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7a')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7b')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7c')]){_0x4f77e5[_0xde4e7['joins'][_0x451520]['type']](_0xde4e7['joins'][_0x451520][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0xde4e7[_0x2254('0x7e')],_0xde4e7['joins'][_0x451520][_0x2254('0x7a')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7b')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7c')]));}}}if(_0xde4e7[_0x2254('0x7f')]){_0xde4e7['conditions']=JSON['parse'](_0xde4e7[_0x2254('0x7f')]);_0x4f77e5[_0x2254('0x3e')](_0x423c17(_0xde4e7[_0x2254('0x7f')][_0x2254('0x69')]));}_0x48406e=_0x4f77e5[_0x2254('0x80')]();_0x4f77e5[_0x2254('0x20')](_0x4da493);_0x4f77e5[_0x2254('0x1e')](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4f77e5[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4f77e5[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')]['SELECT']});}})[_0x2254('0x25')](respondWithResult(_0x510fe0,null))[_0x2254('0x46')](handleError(_0x510fe0,null));};function runReport(_0x4dfcb4,_0x1c317b,_0x4e699c){var _0x2ad519=_0x1c317b[_0x2254('0x2a')];var _0x30f2c9=0xa;var _0x1f7a48=['join',_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x3a8d4f={'SUM':'SUM(%s)','COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f3650={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x251d70=function(_0x2c7705){return!_['includes']([_0x2254('0x66'),'IS\x20NOT\x20NULL',_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x2c7705);};var _0x36d121=function(_0x207a09){if(!_0x207a09||!_0x207a09[_0x2254('0x68')]['length']){return'';}for(var _0x8a3656='(',_0x1554f1=0x0;_0x1554f1<_0x207a09[_0x2254('0x68')][_0x2254('0x39')];_0x1554f1+=0x1){_0x1554f1>0x0&&(_0x8a3656+='\x20'+_0x207a09[_0x2254('0x87')]+'\x20');_0x8a3656+=_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]?_0x36d121(_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]):_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x72')]+'\x20'+_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x6a')]+(_0x251d70(_0x207a09['rules'][_0x1554f1][_0x2254('0x6a')])?'\x20'+_0x207a09['rules'][_0x1554f1][_0x2254('0x88')]:'');}return _0x8a3656+')';};var _0xb98b40={'where':{'id':_0x4dfcb4['id']}},_0x3b1d5c,_0x2c907a,_0x23b78c,_0x2b5dba,_0x30307a;_0xb98b40=_['merge']({},_0xb98b40,_0x4e699c);return db[_0x2254('0x2e')]['find'](_0xb98b40)[_0x2254('0x25')](function(_0x52712d){if(_0x52712d){_0x3b1d5c=_0x52712d;return _0x52712d[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x1d0c8f){if(_0x1d0c8f){if(!_0x1d0c8f['length']){throw new db[(_0x2254('0x6b'))][(_0x2254('0x8a'))](_0x2254('0x6c'),0x193);}_0x2c907a=_0x1d0c8f;return db[_0x2254('0x6d')][_0x2254('0x44')]({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x34185c){if(_0x34185c){_0x23b78c=_[_0x2254('0x6e')](_0x34185c,'id');var _0x5e94b6;var _0x56239e=squel[_0x2254('0x6f')]();_0x56239e['from'](_0x3b1d5c[_0x2254('0x7e')]);for(var _0x3a1365=0x0;_0x3a1365<_0x2c907a[_0x2254('0x39')];_0x3a1365+=0x1){_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x71')]?_0x23b78c[_0x2c907a[_0x3a1365][_0x2254('0x71')]][_0x2254('0x8b')]:_0x2c907a[_0x3a1365][_0x2254('0x72')];_0x5e94b6=_0x2c907a[_0x3a1365]['function']?_[_0x2254('0x73')](_0x3a8d4f[_0x2c907a[_0x3a1365][_0x2254('0x74')]],'%s',_0x5e94b6):_0x5e94b6;_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x8c')]?_['replace'](_0x2f3650[_0x2c907a[_0x3a1365][_0x2254('0x8c')]],'%s',_0x5e94b6):_0x5e94b6;if(_0x2c907a[_0x3a1365][_0x2254('0x75')]){_0x56239e[_0x2254('0x69')](_0x5e94b6);}_0x2c907a[_0x3a1365][_0x2254('0x76')]&&_0x56239e[_0x2254('0x3c')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x56239e[_0x2254('0x72')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x77')]||_0x5e94b6);}if(_0x3b1d5c['joins']){_0x3b1d5c[_0x2254('0x79')]=JSON[_0x2254('0x78')](_0x3b1d5c['joins']);for(var _0x4cec5b=0x0;_0x4cec5b<_0x3b1d5c[_0x2254('0x79')]['length'];_0x4cec5b+=0x1){if(_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x1f7a48,_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')])&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7a')]&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b]['foreignTable']&&_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7c')]){_0x56239e[_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]](_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3b1d5c[_0x2254('0x7e')],_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7a')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7c')]));}}}if(_0x3b1d5c[_0x2254('0x7f')]){_0x3b1d5c[_0x2254('0x7f')]=JSON['parse'](_0x3b1d5c[_0x2254('0x7f')]);_0x56239e[_0x2254('0x3e')](_0x36d121(_0x3b1d5c['conditions'][_0x2254('0x69')]));}_0x30307a=_0x56239e[_0x2254('0x80')]();_0x56239e[_0x2254('0x20')](_0x30f2c9);_0x56239e[_0x2254('0x1e')](0x0);return;}})[_0x2254('0x25')](function(){if(_0x1c317b[_0x2254('0x8e')]===_0x2254('0x8f')){return null;}var _0x38e2df=_[_0x2254('0x41')](_0x1c317b,{'name':_0x1c317b[_0x2254('0x90')]||_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c['name'],'basename':_0x2ad519,'savename':util[_0x2254('0x8c')](_0x2254('0x91'),_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c[_0x2254('0x2a')],require(_0x2254('0x92'))[_0x2254('0x93')](0x4),_0x1c317b[_0x2254('0x8e')]||'csv'),'reportId':_0x3b1d5c['id'],'reportType':_0x2254('0x94')});return db[_0x2254('0x95')][_0x2254('0x4b')](_0x38e2df,{'raw':!![]});})['then'](function(_0x60f5ac){if(_0x3b1d5c[_0x2254('0x7e')]===_0x2254('0x96')){_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x97'),_0x1c317b['startDate'],_0x1c317b[_0x2254('0x98')]);}else{_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x99'),_0x1c317b[_0x2254('0x9a')],_0x1c317b['endDate']);}if(_0x60f5ac){logger['info'](_0x2254('0x9b'),_0x30307a['toString']());require(_0x2254('0x9c'))[_0x2254('0x9d')](path[_0x2254('0x54')](__dirname,_0x2254('0x9e'),_0x60f5ac[_0x2254('0x8e')]),[_0x60f5ac['id'],_0x30307a[_0x2254('0x83')](),path['join'](__dirname,'../../files/reports',_0x60f5ac[_0x2254('0x9f')]),_0x2ad519]);return _0x60f5ac;}else{var _0x3317d4=squel[_0x2254('0x6f')]();_0x3317d4[_0x2254('0x70')]('('+_0x30307a['toString']()+')',_0x2254('0xa0'));_0x3317d4[_0x2254('0x72')](_0x2254('0xa1'),_0x2254('0x21'));_0x30307a[_0x2254('0x20')](_0x1c317b[_0x2254('0x20')]||_0x30f2c9);_0x30307a[_0x2254('0x1e')](_0x1c317b[_0x2254('0x1e')]||0x0);return dbH[_0x2254('0xa2')]['query'](_0x3317d4[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')]['SELECT']})[_0x2254('0x25')](function(_0xe38a28){if(!_0xe38a28[_0x2254('0x39')]){_0x2b5dba=0x0;}else{_0x2b5dba=_0xe38a28[0x0]['count']||0x0;}return dbH['sequelize'][_0x2254('0x33')](_0x30307a[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')][_0x2254('0xa3')]});})[_0x2254('0x25')](function(_0x4011de){return{'rows':_0x4011de||[],'count':_0x2b5dba};});}});}exports[_0x2254('0xa4')]=function(_0x5cb3d1,_0x1d8238){return runReport(_0x5cb3d1[_0x2254('0x47')],_0x5cb3d1[_0x2254('0x33')],_0x5cb3d1[_0x2254('0x42')])[_0x2254('0x25')](respondWithResult(_0x1d8238,null))[_0x2254('0x46')](handleError(_0x1d8238,null));};exports['runReport']=runReport;exports['query']=function(_0x40339d,_0x4b3b96){var _0x59b8af=0xa;var _0x408695=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),'cross_join'];var _0x596eae={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x739a29={'SEC_TO_TIME':_0x2254('0x61'),'DATE':'DATE(%s)','HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x243466=function(_0x1b8587){return!_[_0x2254('0x65')]([_0x2254('0x66'),_0x2254('0xa5'),_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x1b8587);};var _0xbec5d0=function(_0x18f841){if(!_0x18f841||!_0x18f841[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x275b56='(',_0x315add=0x0;_0x315add<_0x18f841['rules']['length'];_0x315add+=0x1){_0x315add>0x0&&(_0x275b56+='\x20'+_0x18f841[_0x2254('0x87')]+'\x20');_0x275b56+=_0x18f841['rules'][_0x315add][_0x2254('0x69')]?_0xbec5d0(_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x69')]):_0x18f841[_0x2254('0x68')][_0x315add]['field']+'\x20'+_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x6a')]+(_0x243466(_0x18f841[_0x2254('0x68')][_0x315add]['condition'])?'\x20'+_0x18f841['rules'][_0x315add][_0x2254('0x88')]:'');}return _0x275b56+')';};var _0x51b02a={'where':{'id':_0x40339d[_0x2254('0x47')]['id']}},_0x3e7642,_0xe1abb6,_0x1a44d0,_0x4af6a7,_0x539aba;_0x51b02a=_[_0x2254('0x41')]({},_0x51b02a,_0x40339d[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x51b02a)['then'](function(_0x34e28b){if(_0x34e28b){_0x3e7642=_0x34e28b;return _0x34e28b[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x5d373){if(_0x5d373){if(!_0x5d373[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xe1abb6=_0x5d373;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x56a7ce){if(_0x56a7ce){_0x1a44d0=_[_0x2254('0x6e')](_0x56a7ce,'id');var _0x34bf19;var _0x4965c7=squel[_0x2254('0x6f')]();_0x4965c7[_0x2254('0x70')](_0x3e7642[_0x2254('0x7e')]);for(var _0x45541b=0x0;_0x45541b<_0xe1abb6[_0x2254('0x39')];_0x45541b+=0x1){_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x71')]?_0x1a44d0[_0xe1abb6[_0x45541b][_0x2254('0x71')]][_0x2254('0x8b')]:_0xe1abb6[_0x45541b][_0x2254('0x72')];_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x74')]?_[_0x2254('0x73')](_0x596eae[_0xe1abb6[_0x45541b][_0x2254('0x74')]],'%s',_0x34bf19):_0x34bf19;_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x8c')]?_[_0x2254('0x73')](_0x739a29[_0xe1abb6[_0x45541b]['format']],'%s',_0x34bf19):_0x34bf19;if(_0xe1abb6[_0x45541b][_0x2254('0x75')]){_0x4965c7[_0x2254('0x69')](_0x34bf19);}_0xe1abb6[_0x45541b]['orderBy']&&_0x4965c7['order'](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x4965c7[_0x2254('0x72')](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x77')]||_0x34bf19);}if(_0x3e7642['joins']){_0x3e7642[_0x2254('0x79')]=JSON['parse'](_0x3e7642['joins']);for(var _0x40fec0=0x0;_0x40fec0<_0x3e7642[_0x2254('0x79')][_0x2254('0x39')];_0x40fec0+=0x1){if(_0x3e7642[_0x2254('0x79')][_0x40fec0]['type']&&_[_0x2254('0x65')](_0x408695,_0x3e7642['joins'][_0x40fec0][_0x2254('0x30')])&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]){_0x4965c7[_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x30')]](_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0x3e7642[_0x2254('0x7e')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]));}}}if(_0x3e7642['conditions']){_0x3e7642[_0x2254('0x7f')]=JSON[_0x2254('0x78')](_0x3e7642[_0x2254('0x7f')]);_0x4965c7[_0x2254('0x3e')](_0xbec5d0(_0x3e7642[_0x2254('0x7f')]['group']));}_0x539aba=_0x4965c7[_0x2254('0x80')]();_0x4965c7[_0x2254('0x20')](_0x59b8af);_0x4965c7['offset'](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4965c7[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4965c7[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')][_0x2254('0xa3')]});}})[_0x2254('0x25')](function(){return{'sql':_0x539aba[_0x2254('0x83')]()};})['then'](respondWithResult(_0x4b3b96,null))[_0x2254('0x46')](handleError(_0x4b3b96,null));};
\ No newline at end of file
+var _0xda19=['ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','field','function','replace','groupBy','orderBy','order','alias','joins','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20EMPTY','operator','Sequelize','metric','format','DESC','parse','parentKey','web','output','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','countTable','run','runReport','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','dbH','status','json','offset','undefined','limit','count','set','apply','update','then','DefaultReports','destroy','end','error','stack','name','send','map','AnalyticDefaultReport','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','merge','includeAll','include','findAll','show','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','group','condition','value','options','find','getFields'];(function(_0x3a80c7,_0x10ecb7){var _0x2c83df=function(_0x428e59){while(--_0x428e59){_0x3a80c7['push'](_0x3a80c7['shift']());}};_0x2c83df(++_0x10ecb7);}(_0xda19,0xd5));var _0x9da1=function(_0x2c9ea6,_0x4be9ac){_0x2c9ea6=_0x2c9ea6-0x0;var _0x4d979d=_0xda19[_0x2c9ea6];return _0x4d979d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9da1('0x0'));var zipdir=require(_0x9da1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9da1('0x2'));var moment=require('moment');var BPromise=require(_0x9da1('0x3'));var Mustache=require('mustache');var util=require(_0x9da1('0x4'));var path=require(_0x9da1('0x5'));var sox=require(_0x9da1('0x6'));var csv=require(_0x9da1('0x7'));var ejs=require(_0x9da1('0x8'));var fs=require('fs');var fs_extra=require(_0x9da1('0x9'));var _=require(_0x9da1('0xa'));var squel=require(_0x9da1('0xb'));var crypto=require(_0x9da1('0xc'));var jsforce=require(_0x9da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9da1('0xe'));var Redis=require('ioredis');var authService=require(_0x9da1('0xf'));var qs=require(_0x9da1('0x10'));var as=require(_0x9da1('0x11'));var hardwareService=require(_0x9da1('0x12'));var logger=require(_0x9da1('0x13'))(_0x9da1('0x14'));var utils=require(_0x9da1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9da1('0x16'))['db'];var dbH=require('../../mysqldb')[_0x9da1('0x17')];function respondWithStatusCode(_0x1d93f8,_0xd2d225){_0xd2d225=_0xd2d225||0xcc;return function(_0x1ffa2a){if(_0x1ffa2a){return _0x1d93f8['sendStatus'](_0xd2d225);}return _0x1d93f8[_0x9da1('0x18')](_0xd2d225)['end']();};}function respondWithResult(_0x4d17e1,_0x40ba9d){_0x40ba9d=_0x40ba9d||0xc8;return function(_0x479ccd){if(_0x479ccd){return _0x4d17e1[_0x9da1('0x18')](_0x40ba9d)[_0x9da1('0x19')](_0x479ccd);}};}function respondWithFilteredResult(_0x37653d,_0x1a1a6b){return function(_0x7f1a64){if(_0x7f1a64){var _0x514d8e=typeof _0x1a1a6b[_0x9da1('0x1a')]===_0x9da1('0x1b')&&typeof _0x1a1a6b[_0x9da1('0x1c')]===_0x9da1('0x1b');var _0xfb278d=_0x7f1a64[_0x9da1('0x1d')];var _0x497676=_0x514d8e?0x0:_0x1a1a6b['offset'];var _0x17205d=_0x514d8e?_0x7f1a64[_0x9da1('0x1d')]:_0x1a1a6b[_0x9da1('0x1a')]+_0x1a1a6b[_0x9da1('0x1c')];var _0x40a967;if(_0x17205d>=_0xfb278d){_0x17205d=_0xfb278d;_0x40a967=0xc8;}else{_0x40a967=0xce;}_0x37653d[_0x9da1('0x18')](_0x40a967);return _0x37653d[_0x9da1('0x1e')]('Content-Range',_0x497676+'-'+_0x17205d+'/'+_0xfb278d)[_0x9da1('0x19')](_0x7f1a64);}return null;};}function patchUpdates(_0x554845){return function(_0x9c3b37){try{jsonpatch[_0x9da1('0x1f')](_0x9c3b37,_0x554845,!![]);}catch(_0x1fc065){return BPromise['reject'](_0x1fc065);}return _0x9c3b37['save']();};}function saveUpdates(_0x14793b,_0x3e6f85){return function(_0x16ee0c){if(_0x16ee0c){return _0x16ee0c[_0x9da1('0x20')](_0x14793b)[_0x9da1('0x21')](function(_0x165b73){return _0x165b73;});}return null;};}function removeEntity(_0x4c60aa,_0x2413fe){return function(_0x3bfa40){if(_0x3bfa40){return _0x3bfa40['destroy']()[_0x9da1('0x21')](function(){var _0x3f5680=_0x3bfa40['get']({'plain':!![]});var _0x2fd49c=_0x9da1('0x22');return db['UserProfileResource'][_0x9da1('0x23')]({'where':{'type':_0x2fd49c,'resourceId':_0x3f5680['id']}})[_0x9da1('0x21')](function(){return _0x3bfa40;});})['then'](function(){_0x4c60aa['status'](0xcc)[_0x9da1('0x24')]();});}};}function handleEntityNotFound(_0x47055e,_0x5eca5b){return function(_0x27c6e2){if(!_0x27c6e2){_0x47055e['sendStatus'](0x194);}return _0x27c6e2;};}function handleError(_0x5a6f2d,_0x5a59c2){_0x5a59c2=_0x5a59c2||0x1f4;return function(_0x31b826){logger[_0x9da1('0x25')](_0x31b826[_0x9da1('0x26')]);if(_0x31b826[_0x9da1('0x27')]){delete _0x31b826[_0x9da1('0x27')];}_0x5a6f2d['status'](_0x5a59c2)[_0x9da1('0x28')](_0x31b826);};}exports['index']=function(_0x1feae0,_0x235ced){var _0x5b38b3={},_0xc29ba8={},_0x2eb48f={'count':0x0,'rows':[]};var _0x4f318b=_[_0x9da1('0x29')](db[_0x9da1('0x2a')][_0x9da1('0x2b')],function(_0x2b2b48){return{'name':_0x2b2b48['fieldName'],'type':_0x2b2b48['type'][_0x9da1('0x2c')]};});_0xc29ba8[_0x9da1('0x2d')]=_[_0x9da1('0x29')](_0x4f318b,_0x9da1('0x27'));_0xc29ba8[_0x9da1('0x2e')]=_['keys'](_0x1feae0[_0x9da1('0x2e')]);_0xc29ba8[_0x9da1('0x2f')]=_[_0x9da1('0x30')](_0xc29ba8[_0x9da1('0x2d')],_0xc29ba8[_0x9da1('0x2e')]);_0x5b38b3[_0x9da1('0x31')]=_['intersection'](_0xc29ba8[_0x9da1('0x2d')],qs['fields'](_0x1feae0['query'][_0x9da1('0x32')]));_0x5b38b3['attributes']=_0x5b38b3[_0x9da1('0x31')][_0x9da1('0x33')]?_0x5b38b3[_0x9da1('0x31')]:_0xc29ba8[_0x9da1('0x2d')];if(!_0x1feae0[_0x9da1('0x2e')][_0x9da1('0x34')](_0x9da1('0x35'))){_0x5b38b3[_0x9da1('0x1c')]=qs['limit'](_0x1feae0[_0x9da1('0x2e')]['limit']);_0x5b38b3[_0x9da1('0x1a')]=qs['offset'](_0x1feae0['query'][_0x9da1('0x1a')]);}_0x5b38b3['order']=qs[_0x9da1('0x36')](_0x1feae0[_0x9da1('0x2e')]['sort']);_0x5b38b3[_0x9da1('0x37')]=qs[_0x9da1('0x2f')](_[_0x9da1('0x38')](_0x1feae0[_0x9da1('0x2e')],_0xc29ba8['filters']),_0x4f318b);if(_0x1feae0[_0x9da1('0x2e')]['filter']){_0x5b38b3[_0x9da1('0x37')]=_['merge'](_0x5b38b3[_0x9da1('0x37')],{'$or':_[_0x9da1('0x29')](_0x4f318b,function(_0x58e165){if(_0x58e165[_0x9da1('0x39')]!==_0x9da1('0x3a')){var _0x394acf={};_0x394acf[_0x58e165['name']]={'$like':'%'+_0x1feae0['query']['filter']+'%'};return _0x394acf;}})});}_0x5b38b3=_[_0x9da1('0x3b')]({},_0x5b38b3,_0x1feae0['options']);var _0x5b215c={'where':_0x5b38b3[_0x9da1('0x37')]};return db[_0x9da1('0x2a')][_0x9da1('0x1d')](_0x5b215c)['then'](function(_0x42dbd8){_0x2eb48f[_0x9da1('0x1d')]=_0x42dbd8;if(_0x1feae0[_0x9da1('0x2e')][_0x9da1('0x3c')]){_0x5b38b3[_0x9da1('0x3d')]=[{'all':!![]}];}return db[_0x9da1('0x2a')][_0x9da1('0x3e')](_0x5b38b3);})['then'](function(_0x467350){_0x2eb48f['rows']=_0x467350;return _0x2eb48f;})[_0x9da1('0x21')](respondWithFilteredResult(_0x235ced,_0x5b38b3))['catch'](handleError(_0x235ced,null));};exports[_0x9da1('0x3f')]=function(_0x40d848,_0x599211){var _0x265366={'raw':!![],'where':{'id':_0x40d848['params']['id']}},_0xfeec5f={};_0xfeec5f[_0x9da1('0x2d')]=_['keys'](db[_0x9da1('0x2a')][_0x9da1('0x2b')]);_0xfeec5f['query']=_['keys'](_0x40d848[_0x9da1('0x2e')]);_0xfeec5f[_0x9da1('0x2f')]=_[_0x9da1('0x30')](_0xfeec5f[_0x9da1('0x2d')],_0xfeec5f[_0x9da1('0x2e')]);_0x265366[_0x9da1('0x31')]=_[_0x9da1('0x30')](_0xfeec5f[_0x9da1('0x2d')],qs['fields'](_0x40d848[_0x9da1('0x2e')][_0x9da1('0x32')]));_0x265366[_0x9da1('0x31')]=_0x265366['attributes'][_0x9da1('0x33')]?_0x265366[_0x9da1('0x31')]:_0xfeec5f[_0x9da1('0x2d')];if(_0x40d848['query'][_0x9da1('0x3c')]){_0x265366[_0x9da1('0x3d')]=[{'all':!![]}];}_0x265366=_[_0x9da1('0x3b')]({},_0x265366,_0x40d848['options']);return db[_0x9da1('0x2a')]['find'](_0x265366)['then'](handleEntityNotFound(_0x599211,null))[_0x9da1('0x21')](respondWithResult(_0x599211,null))[_0x9da1('0x40')](handleError(_0x599211,null));};exports['create']=function(_0x712d10,_0x2066d2){return db['AnalyticDefaultReport'][_0x9da1('0x41')](_0x712d10[_0x9da1('0x42')],{})[_0x9da1('0x21')](function(_0x3a529d){var _0x4780ca=_0x712d10[_0x9da1('0x43')][_0x9da1('0x44')]({'plain':!![]});if(!_0x4780ca)throw new Error(_0x9da1('0x45'));if(_0x4780ca[_0x9da1('0x46')]==='user'){var _0x147c65=_0x3a529d[_0x9da1('0x44')]({'plain':!![]});var _0x34a203=_0x9da1('0x47');return db['UserProfileSection']['find']({'where':{'name':_0x34a203,'userProfileId':_0x4780ca[_0x9da1('0x48')]},'raw':!![]})[_0x9da1('0x21')](function(_0x3870dd){if(_0x3870dd&&_0x3870dd[_0x9da1('0x49')]===0x0){return db[_0x9da1('0x4a')][_0x9da1('0x41')]({'name':_0x147c65[_0x9da1('0x27')],'resourceId':_0x147c65['id'],'type':_0x9da1('0x22'),'sectionId':_0x3870dd['id']},{})[_0x9da1('0x21')](function(){return _0x3a529d;});}else{return _0x3a529d;}})[_0x9da1('0x40')](function(_0x868167){logger[_0x9da1('0x25')](_0x9da1('0x4b'),_0x868167);throw _0x868167;});}return _0x3a529d;})[_0x9da1('0x21')](respondWithResult(_0x2066d2,0xc9))['catch'](handleError(_0x2066d2,null));};exports[_0x9da1('0x20')]=function(_0x1fbb5d,_0x4d241a){if(_0x1fbb5d[_0x9da1('0x42')]['id']){delete _0x1fbb5d['body']['id'];}return db[_0x9da1('0x2a')]['find']({'where':{'id':_0x1fbb5d[_0x9da1('0x4c')]['id']}})[_0x9da1('0x21')](handleEntityNotFound(_0x4d241a,null))[_0x9da1('0x21')](saveUpdates(_0x1fbb5d[_0x9da1('0x42')],null))[_0x9da1('0x21')](respondWithResult(_0x4d241a,null))[_0x9da1('0x40')](handleError(_0x4d241a,null));};exports[_0x9da1('0x23')]=function(_0x343b05,_0x170351){return db[_0x9da1('0x2a')]['find']({'where':{'id':_0x343b05[_0x9da1('0x4c')]['id']}})[_0x9da1('0x21')](handleEntityNotFound(_0x170351,null))[_0x9da1('0x21')](removeEntity(_0x170351,null))[_0x9da1('0x40')](handleError(_0x170351,null));};exports[_0x9da1('0x4d')]=function(_0x4607a9,_0x2020d0){var _0x3c01c3=0xa;var _0xfa8d3f=[_0x9da1('0x4e'),'left_join',_0x9da1('0x4f'),_0x9da1('0x50')];var _0x5bda2a={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0xc27b00={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':_0x9da1('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x9da1('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x27ac84=function(_0x10ebc9){return!_[_0x9da1('0x5c')]([_0x9da1('0x5d'),_0x9da1('0x5e'),_0x9da1('0x5f'),'IS\x20NOT\x20EMPTY'],_0x10ebc9);};var _0x5f5dc2=function(_0x454a68){if(!_0x454a68||!_0x454a68['rules']['length']){return'';}for(var _0x5b4a05='(',_0x6f86c3=0x0;_0x6f86c3<_0x454a68['rules'][_0x9da1('0x33')];_0x6f86c3+=0x1){_0x6f86c3>0x0&&(_0x5b4a05+='\x20'+_0x454a68['operator']+'\x20');_0x5b4a05+=_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x61')]?_0x5f5dc2(_0x454a68['rules'][_0x6f86c3][_0x9da1('0x61')]):_0x454a68[_0x9da1('0x60')][_0x6f86c3]['field']+'\x20'+_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x62')]+(_0x27ac84(_0x454a68['rules'][_0x6f86c3]['condition'])?'\x20'+_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x63')]:'');}return _0x5b4a05+')';};var _0x21d00c={'where':{'id':_0x4607a9['params']['id']}},_0x3ca531,_0x236b01,_0x44d7fe,_0x5cb102,_0x3d2c25;_0x21d00c=_['merge']({},_0x21d00c,_0x4607a9[_0x9da1('0x64')]);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0x21d00c)[_0x9da1('0x21')](function(_0x3382b1){if(_0x3382b1){_0x3ca531=_0x3382b1;return _0x3382b1[_0x9da1('0x66')]();}return null;})[_0x9da1('0x21')](function(_0x1f2a4b){if(_0x1f2a4b){if(!_0x1f2a4b[_0x9da1('0x33')]){throw new db['Sequelize'][(_0x9da1('0x67'))](_0x9da1('0x68'),0x193);}_0x236b01=_0x1f2a4b;return db[_0x9da1('0x69')][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x491fcb){if(_0x491fcb){_0x44d7fe=_[_0x9da1('0x6a')](_0x491fcb,'id');var _0x13fadd;var _0x419f78=squel[_0x9da1('0x6b')]();_0x419f78[_0x9da1('0x6c')](_0x3ca531[_0x9da1('0x6d')]);for(var _0x55a6d2=0x0;_0x55a6d2<_0x236b01[_0x9da1('0x33')];_0x55a6d2+=0x1){_0x13fadd=_0x236b01[_0x55a6d2]['MetricId']?_0x44d7fe[_0x236b01[_0x55a6d2][_0x9da1('0x6e')]]['metric']:_0x236b01[_0x55a6d2][_0x9da1('0x6f')];_0x13fadd=_0x236b01[_0x55a6d2][_0x9da1('0x70')]?_[_0x9da1('0x71')](_0x5bda2a[_0x236b01[_0x55a6d2][_0x9da1('0x70')]],'%s',_0x13fadd):_0x13fadd;_0x13fadd=_0x236b01[_0x55a6d2]['format']?_['replace'](_0xc27b00[_0x236b01[_0x55a6d2]['format']],'%s',_0x13fadd):_0x13fadd;if(_0x236b01[_0x55a6d2][_0x9da1('0x72')]){_0x419f78[_0x9da1('0x61')](_0x13fadd);}_0x236b01[_0x55a6d2][_0x9da1('0x73')]&&_0x419f78[_0x9da1('0x74')](_0x13fadd,_0x236b01[_0x55a6d2]['orderBy']==='DESC'?![]:!![]);_0x419f78[_0x9da1('0x6f')](_0x13fadd,_0x236b01[_0x55a6d2][_0x9da1('0x75')]||_0x13fadd);}if(_0x3ca531[_0x9da1('0x76')]){_0x3ca531['joins']=JSON['parse'](_0x3ca531[_0x9da1('0x76')]);for(var _0x1deb93=0x0;_0x1deb93<_0x3ca531[_0x9da1('0x76')]['length'];_0x1deb93+=0x1){if(_0x3ca531['joins'][_0x1deb93][_0x9da1('0x39')]&&_[_0x9da1('0x5c')](_0xfa8d3f,_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x39')])&&_0x3ca531[_0x9da1('0x76')][_0x1deb93]['parentKey']&&_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')]&&_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x78')]){_0x419f78[_0x3ca531['joins'][_0x1deb93][_0x9da1('0x39')]](_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')],null,util['format'](_0x9da1('0x79'),_0x3ca531[_0x9da1('0x6d')],_0x3ca531[_0x9da1('0x76')][_0x1deb93]['parentKey'],_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')],_0x3ca531['joins'][_0x1deb93][_0x9da1('0x78')]));}}}if(_0x3ca531['conditions']){_0x3ca531[_0x9da1('0x7a')]=JSON['parse'](_0x3ca531[_0x9da1('0x7a')]);_0x419f78[_0x9da1('0x37')](_0x5f5dc2(_0x3ca531[_0x9da1('0x7a')][_0x9da1('0x61')]));}_0x3d2c25=_0x419f78[_0x9da1('0x7b')]();_0x419f78[_0x9da1('0x1c')](_0x3c01c3);_0x419f78[_0x9da1('0x1a')](0x0);logger[_0x9da1('0x7c')](_0x9da1('0x7d'),_0x419f78[_0x9da1('0x7e')]());return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x419f78[_0x9da1('0x7e')](),{'type':dbH['sequelize'][_0x9da1('0x80')][_0x9da1('0x81')]});}})[_0x9da1('0x21')](respondWithResult(_0x2020d0,null))[_0x9da1('0x40')](handleError(_0x2020d0,null));};function runReport(_0x162597,_0x4f39bc,_0x1ca102){var _0x2eb5e6=_0x4f39bc['name'];var _0x4a4cda=0xa;var _0x84f8d8=[_0x9da1('0x4e'),_0x9da1('0x82'),_0x9da1('0x4f'),_0x9da1('0x50')];var _0x4701b3={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0x3a0a84={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':_0x9da1('0x5a'),'HOUR':_0x9da1('0x83'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9da1('0x84')};var _0x354c5a=function(_0x53ab6a){return!_[_0x9da1('0x5c')](['IS\x20NULL',_0x9da1('0x5e'),'IS\x20EMPTY',_0x9da1('0x85')],_0x53ab6a);};var _0x106bd9=function(_0x347cb8){if(!_0x347cb8||!_0x347cb8[_0x9da1('0x60')][_0x9da1('0x33')]){return'';}for(var _0x3e331a='(',_0x1f785c=0x0;_0x1f785c<_0x347cb8[_0x9da1('0x60')][_0x9da1('0x33')];_0x1f785c+=0x1){_0x1f785c>0x0&&(_0x3e331a+='\x20'+_0x347cb8[_0x9da1('0x86')]+'\x20');_0x3e331a+=_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x61')]?_0x106bd9(_0x347cb8['rules'][_0x1f785c][_0x9da1('0x61')]):_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x6f')]+'\x20'+_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x62')]+(_0x354c5a(_0x347cb8[_0x9da1('0x60')][_0x1f785c]['condition'])?'\x20'+_0x347cb8['rules'][_0x1f785c][_0x9da1('0x63')]:'');}return _0x3e331a+')';};var _0xdecc82={'where':{'id':_0x162597['id']}},_0xe12dd7,_0x4cd85f,_0x4bf74c,_0x28335d,_0x175b4b;_0xdecc82=_[_0x9da1('0x3b')]({},_0xdecc82,_0x1ca102);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0xdecc82)[_0x9da1('0x21')](function(_0x5561f0){if(_0x5561f0){_0xe12dd7=_0x5561f0;return _0x5561f0[_0x9da1('0x66')]();}return null;})[_0x9da1('0x21')](function(_0x5a64fd){if(_0x5a64fd){if(!_0x5a64fd['length']){throw new db[(_0x9da1('0x87'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4cd85f=_0x5a64fd;return db[_0x9da1('0x69')][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x18ae08){if(_0x18ae08){_0x4bf74c=_[_0x9da1('0x6a')](_0x18ae08,'id');var _0x30065d;var _0x40a2ef=squel[_0x9da1('0x6b')]();_0x40a2ef['from'](_0xe12dd7['table']);for(var _0xd10ba4=0x0;_0xd10ba4<_0x4cd85f[_0x9da1('0x33')];_0xd10ba4+=0x1){_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x6e')]?_0x4bf74c[_0x4cd85f[_0xd10ba4][_0x9da1('0x6e')]][_0x9da1('0x88')]:_0x4cd85f[_0xd10ba4][_0x9da1('0x6f')];_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x70')]?_[_0x9da1('0x71')](_0x4701b3[_0x4cd85f[_0xd10ba4]['function']],'%s',_0x30065d):_0x30065d;_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x89')]?_['replace'](_0x3a0a84[_0x4cd85f[_0xd10ba4][_0x9da1('0x89')]],'%s',_0x30065d):_0x30065d;if(_0x4cd85f[_0xd10ba4][_0x9da1('0x72')]){_0x40a2ef[_0x9da1('0x61')](_0x30065d);}_0x4cd85f[_0xd10ba4][_0x9da1('0x73')]&&_0x40a2ef[_0x9da1('0x74')](_0x30065d,_0x4cd85f[_0xd10ba4][_0x9da1('0x73')]===_0x9da1('0x8a')?![]:!![]);_0x40a2ef['field'](_0x30065d,_0x4cd85f[_0xd10ba4][_0x9da1('0x75')]||_0x30065d);}if(_0xe12dd7['joins']){_0xe12dd7[_0x9da1('0x76')]=JSON[_0x9da1('0x8b')](_0xe12dd7[_0x9da1('0x76')]);for(var _0x22b679=0x0;_0x22b679<_0xe12dd7['joins'][_0x9da1('0x33')];_0x22b679+=0x1){if(_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')]&&_[_0x9da1('0x5c')](_0x84f8d8,_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')])&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x8c')]&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x77')]&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x78')]){_0x40a2ef[_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')]](_0xe12dd7['joins'][_0x22b679][_0x9da1('0x77')],null,util['format'](_0x9da1('0x79'),_0xe12dd7['table'],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x8c')],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x77')],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x78')]));}}}if(_0xe12dd7[_0x9da1('0x7a')]){_0xe12dd7[_0x9da1('0x7a')]=JSON['parse'](_0xe12dd7[_0x9da1('0x7a')]);_0x40a2ef[_0x9da1('0x37')](_0x106bd9(_0xe12dd7['conditions'][_0x9da1('0x61')]));}_0x175b4b=_0x40a2ef[_0x9da1('0x7b')]();_0x40a2ef[_0x9da1('0x1c')](_0x4a4cda);_0x40a2ef['offset'](0x0);return;}})['then'](function(){if(_0x4f39bc['output']===_0x9da1('0x8d')){return null;}var _0x3b17aa=_[_0x9da1('0x3b')](_0x4f39bc,{'name':_0x4f39bc['fullPath']||_0x4f39bc['name']||_0xe12dd7[_0x9da1('0x27')],'basename':_0x2eb5e6,'savename':util[_0x9da1('0x89')]('%s-%s.%s',_0x4f39bc[_0x9da1('0x27')]||_0xe12dd7['name'],require('randomstring')['generate'](0x4),_0x4f39bc[_0x9da1('0x8e')]||_0x9da1('0x8f')),'reportId':_0xe12dd7['id'],'reportType':_0x9da1('0x90')});return db[_0x9da1('0x91')][_0x9da1('0x41')](_0x3b17aa,{'raw':!![]});})[_0x9da1('0x21')](function(_0x2aac99){if(_0xe12dd7[_0x9da1('0x6d')]===_0x9da1('0x92')){_0x175b4b[_0x9da1('0x37')](_0xe12dd7[_0x9da1('0x6d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x4f39bc['startDate'],_0x4f39bc['endDate']);}else{_0x175b4b[_0x9da1('0x37')](_0xe12dd7[_0x9da1('0x6d')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4f39bc[_0x9da1('0x93')],_0x4f39bc[_0x9da1('0x94')]);}if(_0x2aac99){logger[_0x9da1('0x95')](_0x9da1('0x96'),_0x175b4b[_0x9da1('0x7e')]());require(_0x9da1('0x97'))[_0x9da1('0x98')](path[_0x9da1('0x4e')](__dirname,'../../components/export/',_0x2aac99[_0x9da1('0x8e')]),[_0x2aac99['id'],_0x175b4b[_0x9da1('0x7e')](),path[_0x9da1('0x4e')](__dirname,_0x9da1('0x99'),_0x2aac99[_0x9da1('0x9a')]),_0x2eb5e6]);return _0x2aac99;}else{var _0x5ad3f8=squel[_0x9da1('0x6b')]();_0x5ad3f8['from']('('+_0x175b4b[_0x9da1('0x7e')]()+')',_0x9da1('0x9b'));_0x5ad3f8[_0x9da1('0x6f')]('COUNT(*)','count');_0x175b4b[_0x9da1('0x1c')](_0x4f39bc[_0x9da1('0x1c')]||_0x4a4cda);_0x175b4b[_0x9da1('0x1a')](_0x4f39bc['offset']||0x0);return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x5ad3f8['toString'](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')]['SELECT']})['then'](function(_0x489b3f){if(!_0x489b3f[_0x9da1('0x33')]){_0x28335d=0x0;}else{_0x28335d=_0x489b3f[0x0]['count']||0x0;}return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x175b4b[_0x9da1('0x7e')](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')][_0x9da1('0x81')]});})['then'](function(_0x355a71){return{'rows':_0x355a71||[],'count':_0x28335d};});}});}exports[_0x9da1('0x9c')]=function(_0x492e1a,_0x449a17){return runReport(_0x492e1a[_0x9da1('0x4c')],_0x492e1a[_0x9da1('0x2e')],_0x492e1a[_0x9da1('0x64')])['then'](respondWithResult(_0x449a17,null))[_0x9da1('0x40')](handleError(_0x449a17,null));};exports[_0x9da1('0x9d')]=runReport;exports[_0x9da1('0x2e')]=function(_0x8280a9,_0x374754){var _0x1e466a=0xa;var _0x3f9133=[_0x9da1('0x4e'),'left_join',_0x9da1('0x4f'),'cross_join'];var _0x3dd3e0={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0x52e4a6={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x9da1('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x4aa903=function(_0x55d7f2){return!_['includes'](['IS\x20NULL',_0x9da1('0x5e'),_0x9da1('0x5f'),_0x9da1('0x85')],_0x55d7f2);};var _0x3212ad=function(_0x5ac65b){if(!_0x5ac65b||!_0x5ac65b[_0x9da1('0x60')][_0x9da1('0x33')]){return'';}for(var _0x21a99d='(',_0xd19a7c=0x0;_0xd19a7c<_0x5ac65b[_0x9da1('0x60')][_0x9da1('0x33')];_0xd19a7c+=0x1){_0xd19a7c>0x0&&(_0x21a99d+='\x20'+_0x5ac65b[_0x9da1('0x86')]+'\x20');_0x21a99d+=_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x61')]?_0x3212ad(_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x61')]):_0x5ac65b['rules'][_0xd19a7c][_0x9da1('0x6f')]+'\x20'+_0x5ac65b[_0x9da1('0x60')][_0xd19a7c]['condition']+(_0x4aa903(_0x5ac65b['rules'][_0xd19a7c][_0x9da1('0x62')])?'\x20'+_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x63')]:'');}return _0x21a99d+')';};var _0xb14af1={'where':{'id':_0x8280a9[_0x9da1('0x4c')]['id']}},_0x245566,_0x5b2591,_0x3c51e3,_0x54b83d,_0x23bf86;_0xb14af1=_['merge']({},_0xb14af1,_0x8280a9[_0x9da1('0x64')]);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0xb14af1)[_0x9da1('0x21')](function(_0x4bb140){if(_0x4bb140){_0x245566=_0x4bb140;return _0x4bb140[_0x9da1('0x66')]();}return null;})['then'](function(_0x47cbdd){if(_0x47cbdd){if(!_0x47cbdd['length']){throw new db[(_0x9da1('0x87'))][(_0x9da1('0x67'))](_0x9da1('0x68'),0x193);}_0x5b2591=_0x47cbdd;return db['AnalyticMetric'][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x5e1e24){if(_0x5e1e24){_0x3c51e3=_[_0x9da1('0x6a')](_0x5e1e24,'id');var _0x49ddec;var _0x407218=squel['select']();_0x407218['from'](_0x245566['table']);for(var _0x316fee=0x0;_0x316fee<_0x5b2591['length'];_0x316fee+=0x1){_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x6e')]?_0x3c51e3[_0x5b2591[_0x316fee][_0x9da1('0x6e')]]['metric']:_0x5b2591[_0x316fee]['field'];_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x70')]?_['replace'](_0x3dd3e0[_0x5b2591[_0x316fee][_0x9da1('0x70')]],'%s',_0x49ddec):_0x49ddec;_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x89')]?_['replace'](_0x52e4a6[_0x5b2591[_0x316fee]['format']],'%s',_0x49ddec):_0x49ddec;if(_0x5b2591[_0x316fee][_0x9da1('0x72')]){_0x407218[_0x9da1('0x61')](_0x49ddec);}_0x5b2591[_0x316fee][_0x9da1('0x73')]&&_0x407218[_0x9da1('0x74')](_0x49ddec,_0x5b2591[_0x316fee]['orderBy']==='DESC'?![]:!![]);_0x407218[_0x9da1('0x6f')](_0x49ddec,_0x5b2591[_0x316fee][_0x9da1('0x75')]||_0x49ddec);}if(_0x245566[_0x9da1('0x76')]){_0x245566[_0x9da1('0x76')]=JSON[_0x9da1('0x8b')](_0x245566['joins']);for(var _0x56ec7d=0x0;_0x56ec7d<_0x245566[_0x9da1('0x76')][_0x9da1('0x33')];_0x56ec7d+=0x1){if(_0x245566['joins'][_0x56ec7d][_0x9da1('0x39')]&&_['includes'](_0x3f9133,_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x39')])&&_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x8c')]&&_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x77')]&&_0x245566['joins'][_0x56ec7d][_0x9da1('0x78')]){_0x407218[_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x39')]](_0x245566[_0x9da1('0x76')][_0x56ec7d]['foreignTable'],null,util[_0x9da1('0x89')](_0x9da1('0x79'),_0x245566[_0x9da1('0x6d')],_0x245566['joins'][_0x56ec7d]['parentKey'],_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x77')],_0x245566['joins'][_0x56ec7d]['foreignKey']));}}}if(_0x245566[_0x9da1('0x7a')]){_0x245566[_0x9da1('0x7a')]=JSON[_0x9da1('0x8b')](_0x245566[_0x9da1('0x7a')]);_0x407218[_0x9da1('0x37')](_0x3212ad(_0x245566['conditions'][_0x9da1('0x61')]));}_0x23bf86=_0x407218['clone']();_0x407218[_0x9da1('0x1c')](_0x1e466a);_0x407218[_0x9da1('0x1a')](0x0);logger[_0x9da1('0x7c')](_0x9da1('0x7d'),_0x407218['toString']());return dbH['sequelize'][_0x9da1('0x2e')](_0x407218[_0x9da1('0x7e')](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')][_0x9da1('0x81')]});}})[_0x9da1('0x21')](function(){return{'sql':_0x23bf86['toString']()};})[_0x9da1('0x21')](respondWithResult(_0x374754,null))[_0x9da1('0x40')](handleError(_0x374754,null));};
\ No newline at end of file
index 04b357c..850c35d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f6=['path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','util','../../config/logger','api','bluebird','request-promise'];(function(_0x258a61,_0x2c55c3){var _0x19b44c=function(_0x384957){while(--_0x384957){_0x258a61['push'](_0x258a61['shift']());}};_0x19b44c(++_0x2c55c3);}(_0xa5f6,0x1db));var _0x6a5f=function(_0x2935d6,_0x57c319){_0x2935d6=_0x2935d6-0x0;var _0x523590=_0xa5f6[_0x2935d6];return _0x523590;};'use strict';var _=require('lodash');var util=require(_0x6a5f('0x0'));var logger=require(_0x6a5f('0x1'))(_0x6a5f('0x2'));var moment=require('moment');var BPromise=require(_0x6a5f('0x3'));var rp=require(_0x6a5f('0x4'));var fs=require('fs');var path=require(_0x6a5f('0x5'));var rimraf=require(_0x6a5f('0x6'));var config=require(_0x6a5f('0x7'));var attributes=require(_0x6a5f('0x8'));module[_0x6a5f('0x9')]=function(_0x48fa85,_0x3b345d){return _0x48fa85[_0x6a5f('0xa')](_0x6a5f('0xb'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2581=['lodash','util','../../config/logger','moment','path','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2581,0x1ad));var _0x1258=function(_0x1073e5,_0xb4ef22){_0x1073e5=_0x1073e5-0x0;var _0x27eba9=_0x2581[_0x1073e5];return _0x27eba9;};'use strict';var _=require(_0x1258('0x0'));var util=require(_0x1258('0x1'));var logger=require(_0x1258('0x2'))('api');var moment=require(_0x1258('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1258('0x4'));var rimraf=require('rimraf');var config=require(_0x1258('0x5'));var attributes=require(_0x1258('0x6'));module[_0x1258('0x7')]=function(_0x2ff83f,_0x567b5e){return _0x2ff83f[_0x1258('0x8')](_0x1258('0x9'),attributes,{'tableName':_0x1258('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9542ef9..f4e045f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc975=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','code','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3eef17,_0x9849dd){var _0x4223bd=function(_0x2a3f82){while(--_0x2a3f82){_0x3eef17['push'](_0x3eef17['shift']());}};_0x4223bd(++_0x9849dd);}(_0xc975,0xba));var _0x5c97=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc975[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x5c97('0x0'));var util=require(_0x5c97('0x1'));var moment=require(_0x5c97('0x2'));var BPromise=require(_0x5c97('0x3'));var rs=require(_0x5c97('0x4'));var fs=require('fs');var Redis=require(_0x5c97('0x5'));var db=require(_0x5c97('0x6'))['db'];var utils=require(_0x5c97('0x7'));var logger=require('../../config/logger')(_0x5c97('0x8'));var config=require(_0x5c97('0x9'));var jayson=require(_0x5c97('0xa'));var client=jayson[_0x5c97('0xb')][_0x5c97('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x53649c,_0x945ab3,_0x24d613){return new BPromise(function(_0x425c3f,_0xc8424a){return client[_0x5c97('0xd')](_0x53649c,_0x24d613)[_0x5c97('0xe')](function(_0x419b51){logger['info'](_0x5c97('0xf'),_0x945ab3,_0x5c97('0x10'));logger['debug'](_0x5c97('0x11'),_0x945ab3,_0x5c97('0x10'),JSON['stringify'](_0x419b51));if(_0x419b51['error']){if(_0x419b51['error'][_0x5c97('0x12')]===0x1f4){logger[_0x5c97('0x13')](_0x5c97('0xf'),_0x945ab3,_0x419b51[_0x5c97('0x13')][_0x5c97('0x14')]);return _0xc8424a(_0x419b51['error'][_0x5c97('0x14')]);}logger[_0x5c97('0x13')](_0x5c97('0xf'),_0x945ab3,_0x419b51[_0x5c97('0x13')][_0x5c97('0x14')]);return _0x425c3f(_0x419b51[_0x5c97('0x13')]['message']);}else{logger[_0x5c97('0x15')](_0x5c97('0xf'),_0x945ab3,_0x5c97('0x10'));_0x425c3f(_0x419b51[_0x5c97('0x16')][_0x5c97('0x14')]);}})[_0x5c97('0x17')](function(_0x58ecd0){logger['error'](_0x5c97('0xf'),_0x945ab3,_0x58ecd0);_0xc8424a(_0x58ecd0);});});}
\ No newline at end of file
+var _0x0eff=['request','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','http'];(function(_0x1402c4,_0x3fd787){var _0x11053c=function(_0xbc540e){while(--_0xbc540e){_0x1402c4['push'](_0x1402c4['shift']());}};_0x11053c(++_0x3fd787);}(_0x0eff,0xbe));var _0xf0ef=function(_0x8dc04d,_0xaa7559){_0x8dc04d=_0x8dc04d-0x0;var _0x2f5f28=_0x0eff[_0x8dc04d];return _0x2f5f28;};'use strict';var _=require('lodash');var util=require(_0xf0ef('0x0'));var moment=require(_0xf0ef('0x1'));var BPromise=require('bluebird');var rs=require(_0xf0ef('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf0ef('0x3'))['db'];var utils=require(_0xf0ef('0x4'));var logger=require(_0xf0ef('0x5'))(_0xf0ef('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xf0ef('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x21a869,_0x19d2ae,_0x3b3d56){return new BPromise(function(_0x56a7b4,_0x454594){return client[_0xf0ef('0x8')](_0x21a869,_0x3b3d56)['then'](function(_0x41b06f){logger[_0xf0ef('0x9')](_0xf0ef('0xa'),_0x19d2ae,'request\x20sent');logger[_0xf0ef('0xb')](_0xf0ef('0xc'),_0x19d2ae,_0xf0ef('0xd'),JSON['stringify'](_0x41b06f));if(_0x41b06f['error']){if(_0x41b06f[_0xf0ef('0xe')][_0xf0ef('0xf')]===0x1f4){logger[_0xf0ef('0xe')](_0xf0ef('0xa'),_0x19d2ae,_0x41b06f[_0xf0ef('0xe')]['message']);return _0x454594(_0x41b06f[_0xf0ef('0xe')][_0xf0ef('0x10')]);}logger['error'](_0xf0ef('0xa'),_0x19d2ae,_0x41b06f[_0xf0ef('0xe')][_0xf0ef('0x10')]);return _0x56a7b4(_0x41b06f[_0xf0ef('0xe')][_0xf0ef('0x10')]);}else{logger[_0xf0ef('0x9')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x19d2ae,_0xf0ef('0xd'));_0x56a7b4(_0x41b06f[_0xf0ef('0x11')]['message']);}})['catch'](function(_0x162bdb){logger[_0xf0ef('0xe')](_0xf0ef('0xa'),_0x19d2ae,_0x162bdb);_0x454594(_0x162bdb);});});}
\ No newline at end of file
index e3295d5..250991c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd36c=['delete','destroy','multer','util','path','connect-timeout','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','preview','/:id/query','query','post','put','update'];(function(_0xbe31a4,_0x11ba89){var _0x15ec28=function(_0x124633){while(--_0x124633){_0xbe31a4['push'](_0xbe31a4['shift']());}};_0x15ec28(++_0x11ba89);}(_0xd36c,0x1a6));var _0xcd36=function(_0x3a7634,_0x2db384){_0x3a7634=_0x3a7634-0x0;var _0x23bbe9=_0xd36c[_0x3a7634];return _0x23bbe9;};'use strict';var multer=require(_0xcd36('0x0'));var util=require(_0xcd36('0x1'));var path=require(_0xcd36('0x2'));var timeout=require(_0xcd36('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcd36('0x4'));var config=require(_0xcd36('0x5'));var controller=require(_0xcd36('0x6'));router[_0xcd36('0x7')]('/',auth[_0xcd36('0x8')](),controller[_0xcd36('0x9')]);router[_0xcd36('0x7')](_0xcd36('0xa'),auth[_0xcd36('0x8')](),controller[_0xcd36('0xb')]);router[_0xcd36('0x7')]('/:id/preview',auth['isAuthenticated'](),controller[_0xcd36('0xc')]);router[_0xcd36('0x7')]('/:id/run',auth[_0xcd36('0x8')](),controller['run']);router[_0xcd36('0x7')](_0xcd36('0xd'),auth['isAuthenticated'](),controller[_0xcd36('0xe')]);router[_0xcd36('0xf')]('/',auth[_0xcd36('0x8')](),controller['create']);router[_0xcd36('0x10')](_0xcd36('0xa'),auth[_0xcd36('0x8')](),controller[_0xcd36('0x11')]);router[_0xcd36('0x12')](_0xcd36('0xa'),auth[_0xcd36('0x8')](),controller[_0xcd36('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x9d22=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','update','delete'];(function(_0x1303b6,_0x3d7288){var _0x4a983f=function(_0x77db26){while(--_0x77db26){_0x1303b6['push'](_0x1303b6['shift']());}};_0x4a983f(++_0x3d7288);}(_0x9d22,0x192));var _0x29d2=function(_0x543a4e,_0x544f2e){_0x543a4e=_0x543a4e-0x0;var _0x27a3a9=_0x9d22[_0x543a4e];return _0x27a3a9;};'use strict';var multer=require(_0x29d2('0x0'));var util=require(_0x29d2('0x1'));var path=require(_0x29d2('0x2'));var timeout=require(_0x29d2('0x3'));var express=require(_0x29d2('0x4'));var router=express[_0x29d2('0x5')]();var fs_extra=require(_0x29d2('0x6'));var auth=require(_0x29d2('0x7'));var interaction=require(_0x29d2('0x8'));var config=require(_0x29d2('0x9'));var controller=require('./analyticDefaultReport.controller');router[_0x29d2('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x29d2('0xb'),auth[_0x29d2('0xc')](),controller[_0x29d2('0xd')]);router[_0x29d2('0xa')](_0x29d2('0xe'),auth[_0x29d2('0xc')](),controller[_0x29d2('0xf')]);router['get'](_0x29d2('0x10'),auth[_0x29d2('0xc')](),controller[_0x29d2('0x11')]);router['get'](_0x29d2('0x12'),auth['isAuthenticated'](),controller[_0x29d2('0x13')]);router[_0x29d2('0x14')]('/',auth[_0x29d2('0xc')](),controller['create']);router['put'](_0x29d2('0xb'),auth[_0x29d2('0xc')](),controller[_0x29d2('0x15')]);router[_0x29d2('0x16')]('/:id',auth[_0x29d2('0xc')](),controller[_0x29d2('0x17')]);module[_0x29d2('0x18')]=router;
\ No newline at end of file
index 86b3ff9..25de334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa50d=['exports','STRING','ENUM','csv','pdf','xlsx','DATE','scheduled','manual','INTEGER','UNSIGNED','moment'];(function(_0x51fa7b,_0x4b82ba){var _0x52c266=function(_0x18f173){while(--_0x18f173){_0x51fa7b['push'](_0x51fa7b['shift']());}};_0x52c266(++_0x4b82ba);}(_0xa50d,0x173));var _0xda50=function(_0x46e7d9,_0x288cea){_0x46e7d9=_0x46e7d9-0x0;var _0x9c9edb=_0xa50d[_0x46e7d9];return _0x9c9edb;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xda50('0x0'));module[_0xda50('0x1')]={'name':{'type':Sequelize[_0xda50('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xda50('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0xda50('0x3')](_0xda50('0x4'),_0xda50('0x5'),_0xda50('0x6')),'allowNull':![],'defaultValue':_0xda50('0x4')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0xda50('0x7')]},'status':{'type':Sequelize[_0xda50('0x2')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0xda50('0x3')]('manual',_0xda50('0x8')),'allowNull':![],'defaultValue':_0xda50('0x9')},'reportId':{'type':Sequelize[_0xda50('0xa')](0xb)[_0xda50('0xb')]},'reportType':{'type':Sequelize[_0xda50('0x2')]}};
\ No newline at end of file
+var _0x3f79=['STRING','ENUM','csv','pdf','DATE','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3f79,0x1d1));var _0x93f7=function(_0x1a4be0,_0x5a56d6){_0x1a4be0=_0x1a4be0-0x0;var _0xcb2db7=_0x3f79[_0x1a4be0];return _0xcb2db7;};'use strict';var Sequelize=require(_0x93f7('0x0'));var moment=require(_0x93f7('0x1'));module[_0x93f7('0x2')]={'name':{'type':Sequelize[_0x93f7('0x3')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0x93f7('0x4')](_0x93f7('0x5'),_0x93f7('0x6'),'xlsx'),'allowNull':![],'defaultValue':_0x93f7('0x5')},'savename':{'type':Sequelize[_0x93f7('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x93f7('0x7')]},'endDate':{'type':Sequelize[_0x93f7('0x7')]},'status':{'type':Sequelize[_0x93f7('0x3')],'defaultValue':_0x93f7('0x8')},'type':{'type':Sequelize[_0x93f7('0x4')](_0x93f7('0x9'),_0x93f7('0xa')),'allowNull':![],'defaultValue':_0x93f7('0x9')},'reportId':{'type':Sequelize[_0x93f7('0xb')](0xb)[_0x93f7('0xc')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d547553..b472bf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a91=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','existsSync','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','root','server/files/reports','format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','AnalyticExtractedReport','includeAll','include','findAll','catch','show','params','find','create','body'];(function(_0x576fdb,_0x1ed0a2){var _0x55d055=function(_0x5953b5){while(--_0x5953b5){_0x576fdb['push'](_0x576fdb['shift']());}};_0x55d055(++_0x1ed0a2);}(_0x1a91,0x188));var _0x11a9=function(_0x13639d,_0x3c996b){_0x13639d=_0x13639d-0x0;var _0x52ef14=_0x1a91[_0x13639d];return _0x52ef14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x11a9('0x0'));var zipdir=require(_0x11a9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x11a9('0x2'));var moment=require(_0x11a9('0x3'));var BPromise=require(_0x11a9('0x4'));var Mustache=require('mustache');var util=require(_0x11a9('0x5'));var path=require(_0x11a9('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x11a9('0x7'));var fs=require('fs');var fs_extra=require(_0x11a9('0x8'));var _=require(_0x11a9('0x9'));var squel=require(_0x11a9('0xa'));var crypto=require(_0x11a9('0xb'));var jsforce=require(_0x11a9('0xc'));var deskjs=require(_0x11a9('0xd'));var toCsv=require(_0x11a9('0xe'));var querystring=require(_0x11a9('0xf'));var Papa=require(_0x11a9('0x10'));var Redis=require(_0x11a9('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x11a9('0x12'));var as=require(_0x11a9('0x13'));var hardwareService=require(_0x11a9('0x14'));var logger=require('../../config/logger')(_0x11a9('0x15'));var utils=require(_0x11a9('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x11a9('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1547c4,_0x3e7707){_0x3e7707=_0x3e7707||0xcc;return function(_0x1403a6){if(_0x1403a6){return _0x1547c4[_0x11a9('0x18')](_0x3e7707);}return _0x1547c4[_0x11a9('0x19')](_0x3e7707)[_0x11a9('0x1a')]();};}function respondWithResult(_0x5a798,_0x51bbd7){_0x51bbd7=_0x51bbd7||0xc8;return function(_0x56e8da){if(_0x56e8da){return _0x5a798['status'](_0x51bbd7)[_0x11a9('0x1b')](_0x56e8da);}};}function respondWithFilteredResult(_0x41523f,_0x22dfe1){return function(_0x4d7050){if(_0x4d7050){var _0x214754=typeof _0x22dfe1[_0x11a9('0x1c')]===_0x11a9('0x1d')&&typeof _0x22dfe1[_0x11a9('0x1e')]===_0x11a9('0x1d');var _0x591938=_0x4d7050[_0x11a9('0x1f')];var _0x5e9ad2=_0x214754?0x0:_0x22dfe1[_0x11a9('0x1c')];var _0x2ab7b5=_0x214754?_0x4d7050['count']:_0x22dfe1[_0x11a9('0x1c')]+_0x22dfe1['limit'];var _0x490071;if(_0x2ab7b5>=_0x591938){_0x2ab7b5=_0x591938;_0x490071=0xc8;}else{_0x490071=0xce;}_0x41523f[_0x11a9('0x19')](_0x490071);return _0x41523f['set'](_0x11a9('0x20'),_0x5e9ad2+'-'+_0x2ab7b5+'/'+_0x591938)[_0x11a9('0x1b')](_0x4d7050);}return null;};}function patchUpdates(_0x4ed466){return function(_0xf58a69){try{jsonpatch[_0x11a9('0x21')](_0xf58a69,_0x4ed466,!![]);}catch(_0x5be075){return BPromise[_0x11a9('0x22')](_0x5be075);}return _0xf58a69[_0x11a9('0x23')]();};}function saveUpdates(_0x488ee3,_0x1a79d2){return function(_0x4a67ba){if(_0x4a67ba){return _0x4a67ba[_0x11a9('0x24')](_0x488ee3)[_0x11a9('0x25')](function(_0x5f298d){return _0x5f298d;});}return null;};}function removeEntity(_0x5c9918,_0x125191){return function(_0x2f1354){if(_0x2f1354){return _0x2f1354[_0x11a9('0x26')]()[_0x11a9('0x25')](function(){var _0x1bea1a=_0x2f1354[_0x11a9('0x27')]({'plain':!![]});var _0xbd1ab8=_0x11a9('0x28');return db[_0x11a9('0x29')]['destroy']({'where':{'type':_0xbd1ab8,'resourceId':_0x1bea1a['id']}})[_0x11a9('0x25')](function(){return _0x2f1354;});})['then'](function(){_0x5c9918[_0x11a9('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32729a,_0x36fae4){return function(_0x2d5d7b){if(!_0x2d5d7b){_0x32729a[_0x11a9('0x18')](0x194);}return _0x2d5d7b;};}function handleError(_0x426fd,_0x32a6f1){_0x32a6f1=_0x32a6f1||0x1f4;return function(_0x5bad9b){logger[_0x11a9('0x2a')](_0x5bad9b[_0x11a9('0x2b')]);if(_0x5bad9b[_0x11a9('0x2c')]){delete _0x5bad9b[_0x11a9('0x2c')];}_0x426fd['status'](_0x32a6f1)[_0x11a9('0x2d')](_0x5bad9b);};}exports[_0x11a9('0x2e')]=function(_0x5970ba,_0xdc1366){var _0x2bf7b5={},_0x28d697={},_0x3b43b7={'count':0x0,'rows':[]};var _0x53b25b=_[_0x11a9('0x2f')](db['AnalyticExtractedReport'][_0x11a9('0x30')],function(_0x35f41e){return{'name':_0x35f41e[_0x11a9('0x31')],'type':_0x35f41e[_0x11a9('0x32')]['key']};});_0x28d697[_0x11a9('0x33')]=_['map'](_0x53b25b,_0x11a9('0x2c'));_0x28d697[_0x11a9('0x34')]=_[_0x11a9('0x35')](_0x5970ba[_0x11a9('0x34')]);_0x28d697[_0x11a9('0x36')]=_[_0x11a9('0x37')](_0x28d697[_0x11a9('0x33')],_0x28d697[_0x11a9('0x34')]);_0x2bf7b5['attributes']=_[_0x11a9('0x37')](_0x28d697[_0x11a9('0x33')],qs['fields'](_0x5970ba['query'][_0x11a9('0x38')]));_0x2bf7b5['attributes']=_0x2bf7b5[_0x11a9('0x39')][_0x11a9('0x3a')]?_0x2bf7b5['attributes']:_0x28d697[_0x11a9('0x33')];if(!_0x5970ba['query'][_0x11a9('0x3b')]('nolimit')){_0x2bf7b5[_0x11a9('0x1e')]=qs[_0x11a9('0x1e')](_0x5970ba[_0x11a9('0x34')]['limit']);_0x2bf7b5['offset']=qs['offset'](_0x5970ba[_0x11a9('0x34')]['offset']);}_0x2bf7b5[_0x11a9('0x3c')]=qs[_0x11a9('0x3d')](_0x5970ba[_0x11a9('0x34')]['sort']);_0x2bf7b5[_0x11a9('0x3e')]=qs['filters'](_[_0x11a9('0x3f')](_0x5970ba['query'],_0x28d697['filters']),_0x53b25b);if(_0x5970ba['query'][_0x11a9('0x40')]){_0x2bf7b5[_0x11a9('0x3e')]=_[_0x11a9('0x41')](_0x2bf7b5[_0x11a9('0x3e')],{'$or':_[_0x11a9('0x2f')](_0x53b25b,function(_0x15a3f9){if(_0x15a3f9[_0x11a9('0x32')]!==_0x11a9('0x42')){var _0x2d8d0c={};_0x2d8d0c[_0x15a3f9[_0x11a9('0x2c')]]={'$like':'%'+_0x5970ba[_0x11a9('0x34')]['filter']+'%'};return _0x2d8d0c;}})});}_0x2bf7b5=_[_0x11a9('0x41')]({},_0x2bf7b5,_0x5970ba[_0x11a9('0x43')]);var _0x4afe3c={'where':_0x2bf7b5['where']};return db[_0x11a9('0x44')][_0x11a9('0x1f')](_0x4afe3c)[_0x11a9('0x25')](function(_0x2b5865){_0x3b43b7['count']=_0x2b5865;if(_0x5970ba[_0x11a9('0x34')][_0x11a9('0x45')]){_0x2bf7b5[_0x11a9('0x46')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x11a9('0x47')](_0x2bf7b5);})['then'](function(_0x4cb87a){_0x3b43b7['rows']=_0x4cb87a;return _0x3b43b7;})[_0x11a9('0x25')](respondWithFilteredResult(_0xdc1366,_0x2bf7b5))[_0x11a9('0x48')](handleError(_0xdc1366,null));};exports[_0x11a9('0x49')]=function(_0x5c815a,_0x3d14fe){var _0x2e8601={'raw':!![],'where':{'id':_0x5c815a[_0x11a9('0x4a')]['id']}},_0x1911d4={};_0x1911d4[_0x11a9('0x33')]=_[_0x11a9('0x35')](db[_0x11a9('0x44')][_0x11a9('0x30')]);_0x1911d4[_0x11a9('0x34')]=_['keys'](_0x5c815a['query']);_0x1911d4[_0x11a9('0x36')]=_['intersection'](_0x1911d4[_0x11a9('0x33')],_0x1911d4[_0x11a9('0x34')]);_0x2e8601[_0x11a9('0x39')]=_[_0x11a9('0x37')](_0x1911d4[_0x11a9('0x33')],qs[_0x11a9('0x38')](_0x5c815a[_0x11a9('0x34')]['fields']));_0x2e8601[_0x11a9('0x39')]=_0x2e8601[_0x11a9('0x39')]['length']?_0x2e8601[_0x11a9('0x39')]:_0x1911d4[_0x11a9('0x33')];if(_0x5c815a[_0x11a9('0x34')][_0x11a9('0x45')]){_0x2e8601[_0x11a9('0x46')]=[{'all':!![]}];}_0x2e8601=_[_0x11a9('0x41')]({},_0x2e8601,_0x5c815a[_0x11a9('0x43')]);return db[_0x11a9('0x44')][_0x11a9('0x4b')](_0x2e8601)['then'](handleEntityNotFound(_0x3d14fe,null))['then'](respondWithResult(_0x3d14fe,null))['catch'](handleError(_0x3d14fe,null));};exports[_0x11a9('0x4c')]=function(_0x4147cc,_0x356da3){return db[_0x11a9('0x44')][_0x11a9('0x4c')](_0x4147cc[_0x11a9('0x4d')],{})[_0x11a9('0x25')](function(_0x51c160){var _0x45607a=_0x4147cc[_0x11a9('0x4e')][_0x11a9('0x27')]({'plain':!![]});if(!_0x45607a)throw new Error(_0x11a9('0x4f'));if(_0x45607a['role']==='user'){var _0x3ba259=_0x51c160['get']({'plain':!![]});var _0x4371e5=_0x11a9('0x28');return db[_0x11a9('0x50')][_0x11a9('0x4b')]({'where':{'name':_0x4371e5,'userProfileId':_0x45607a['userProfileId']},'raw':!![]})[_0x11a9('0x25')](function(_0x2a1884){if(_0x2a1884&&_0x2a1884[_0x11a9('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x3ba259[_0x11a9('0x2c')],'resourceId':_0x3ba259['id'],'type':_0x2a1884[_0x11a9('0x2c')],'sectionId':_0x2a1884['id']},{})['then'](function(){return _0x51c160;});}else{return _0x51c160;}})[_0x11a9('0x48')](function(_0x3fde43){logger[_0x11a9('0x2a')](_0x11a9('0x52'),_0x3fde43);throw _0x3fde43;});}return _0x51c160;})[_0x11a9('0x25')](respondWithResult(_0x356da3,0xc9))[_0x11a9('0x48')](handleError(_0x356da3,null));};exports[_0x11a9('0x24')]=function(_0x30a32c,_0x461185){if(_0x30a32c['body']['id']){delete _0x30a32c[_0x11a9('0x4d')]['id'];}return db[_0x11a9('0x44')][_0x11a9('0x4b')]({'where':{'id':_0x30a32c[_0x11a9('0x4a')]['id']}})[_0x11a9('0x25')](handleEntityNotFound(_0x461185,null))[_0x11a9('0x25')](saveUpdates(_0x30a32c[_0x11a9('0x4d')],null))['then'](respondWithResult(_0x461185,null))[_0x11a9('0x48')](handleError(_0x461185,null));};exports[_0x11a9('0x26')]=function(_0x6f5207,_0x551e7e){return db[_0x11a9('0x44')][_0x11a9('0x4b')]({'where':{'id':_0x6f5207[_0x11a9('0x4a')]['id']}})[_0x11a9('0x25')](handleEntityNotFound(_0x551e7e,null))['then'](removeEntity(_0x551e7e,null))[_0x11a9('0x48')](handleError(_0x551e7e,null));};exports[_0x11a9('0x53')]=function(_0x26cf71,_0x183009,_0x1dd721){return db[_0x11a9('0x44')][_0x11a9('0x4b')]({'where':{'id':_0x26cf71[_0x11a9('0x4a')]['id']},'attributes':['name',_0x11a9('0x54'),_0x11a9('0x55'),_0x11a9('0x56')],'raw':!![]})[_0x11a9('0x25')](handleEntityNotFound(_0x183009,null))[_0x11a9('0x25')](function(_0xfc5aa2){if(_0xfc5aa2){if(!fs[_0x11a9('0x57')](path['join'](config['root'],'server/files/reports',_0xfc5aa2[_0x11a9('0x55')]))){throw new db['Sequelize'][(_0x11a9('0x58'))](_0x11a9('0x59'));}if(_0x26cf71['query'][_0x11a9('0x5a')]){return _0x183009[_0x11a9('0x18')](0xc8);}return _0x183009['download'](path['join'](config[_0x11a9('0x5b')],_0x11a9('0x5c'),_0xfc5aa2[_0x11a9('0x55')]),util[_0x11a9('0x5d')]('%s.%s',_0xfc5aa2['basename']||_0xfc5aa2['name'],_0xfc5aa2[_0x11a9('0x56')]['toLowerCase']()));}})['catch'](handleError(_0x183009,null));};
\ No newline at end of file
+var _0x4bc8=['where','filter','merge','options','count','includeAll','AnalyticExtractedReport','rows','show','params','length','include','find','catch','create','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','output','existsSync','join','savename','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','download','root','server/files/reports','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','set','Content-Range','json','apply','reject','save','update','then','get','ExtractedReports','UserProfileResource','destroy','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort'];(function(_0x4dc9dc,_0x4624e1){var _0x15d4d0=function(_0x4bd346){while(--_0x4bd346){_0x4dc9dc['push'](_0x4dc9dc['shift']());}};_0x15d4d0(++_0x4624e1);}(_0x4bc8,0x132));var _0x84bc=function(_0x6692e1,_0x49d9be){_0x6692e1=_0x6692e1-0x0;var _0x302923=_0x4bc8[_0x6692e1];return _0x302923;};'use strict';var emlformat=require(_0x84bc('0x0'));var rimraf=require(_0x84bc('0x1'));var zipdir=require(_0x84bc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x84bc('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x84bc('0x4'));var util=require(_0x84bc('0x5'));var path=require(_0x84bc('0x6'));var sox=require('sox');var csv=require(_0x84bc('0x7'));var ejs=require(_0x84bc('0x8'));var fs=require('fs');var fs_extra=require(_0x84bc('0x9'));var _=require(_0x84bc('0xa'));var squel=require(_0x84bc('0xb'));var crypto=require('crypto');var jsforce=require(_0x84bc('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x84bc('0x7'));var querystring=require(_0x84bc('0xd'));var Papa=require(_0x84bc('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x84bc('0xf'));var as=require(_0x84bc('0x10'));var hardwareService=require(_0x84bc('0x11'));var logger=require(_0x84bc('0x12'))('api');var utils=require(_0x84bc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x84bc('0x14'));var db=require(_0x84bc('0x15'))['db'];function respondWithStatusCode(_0x143df0,_0x1cfa0d){_0x1cfa0d=_0x1cfa0d||0xcc;return function(_0x538677){if(_0x538677){return _0x143df0[_0x84bc('0x16')](_0x1cfa0d);}return _0x143df0[_0x84bc('0x17')](_0x1cfa0d)[_0x84bc('0x18')]();};}function respondWithResult(_0x4d5c49,_0x4a40c5){_0x4a40c5=_0x4a40c5||0xc8;return function(_0x3ff814){if(_0x3ff814){return _0x4d5c49[_0x84bc('0x17')](_0x4a40c5)['json'](_0x3ff814);}};}function respondWithFilteredResult(_0x57e79f,_0x29fbe1){return function(_0x1069a0){if(_0x1069a0){var _0x2d4d46=typeof _0x29fbe1['offset']===_0x84bc('0x19')&&typeof _0x29fbe1[_0x84bc('0x1a')]===_0x84bc('0x19');var _0x4afe65=_0x1069a0['count'];var _0x194d31=_0x2d4d46?0x0:_0x29fbe1['offset'];var _0x26d957=_0x2d4d46?_0x1069a0['count']:_0x29fbe1[_0x84bc('0x1b')]+_0x29fbe1[_0x84bc('0x1a')];var _0x1e7ec1;if(_0x26d957>=_0x4afe65){_0x26d957=_0x4afe65;_0x1e7ec1=0xc8;}else{_0x1e7ec1=0xce;}_0x57e79f[_0x84bc('0x17')](_0x1e7ec1);return _0x57e79f[_0x84bc('0x1c')](_0x84bc('0x1d'),_0x194d31+'-'+_0x26d957+'/'+_0x4afe65)[_0x84bc('0x1e')](_0x1069a0);}return null;};}function patchUpdates(_0x70381a){return function(_0x423da0){try{jsonpatch[_0x84bc('0x1f')](_0x423da0,_0x70381a,!![]);}catch(_0xb480ac){return BPromise[_0x84bc('0x20')](_0xb480ac);}return _0x423da0[_0x84bc('0x21')]();};}function saveUpdates(_0x32d790,_0x29ef73){return function(_0x334d31){if(_0x334d31){return _0x334d31[_0x84bc('0x22')](_0x32d790)[_0x84bc('0x23')](function(_0xe8470c){return _0xe8470c;});}return null;};}function removeEntity(_0x3ddbea,_0x176f9f){return function(_0x500c4f){if(_0x500c4f){return _0x500c4f['destroy']()['then'](function(){var _0x4b63fb=_0x500c4f[_0x84bc('0x24')]({'plain':!![]});var _0xf28d4f=_0x84bc('0x25');return db[_0x84bc('0x26')][_0x84bc('0x27')]({'where':{'type':_0xf28d4f,'resourceId':_0x4b63fb['id']}})['then'](function(){return _0x500c4f;});})['then'](function(){_0x3ddbea[_0x84bc('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x36e2e4,_0x2cc4c0){return function(_0x3204d2){if(!_0x3204d2){_0x36e2e4['sendStatus'](0x194);}return _0x3204d2;};}function handleError(_0x31f9b1,_0x513f1c){_0x513f1c=_0x513f1c||0x1f4;return function(_0x295bbd){logger['error'](_0x295bbd['stack']);if(_0x295bbd[_0x84bc('0x28')]){delete _0x295bbd[_0x84bc('0x28')];}_0x31f9b1[_0x84bc('0x17')](_0x513f1c)[_0x84bc('0x29')](_0x295bbd);};}exports[_0x84bc('0x2a')]=function(_0x25e21c,_0x52b61c){var _0x573c07={},_0x37eb68={},_0x49211d={'count':0x0,'rows':[]};var _0x362f34=_[_0x84bc('0x2b')](db['AnalyticExtractedReport'][_0x84bc('0x2c')],function(_0x2c1e37){return{'name':_0x2c1e37[_0x84bc('0x2d')],'type':_0x2c1e37[_0x84bc('0x2e')]['key']};});_0x37eb68[_0x84bc('0x2f')]=_[_0x84bc('0x2b')](_0x362f34,'name');_0x37eb68[_0x84bc('0x30')]=_[_0x84bc('0x31')](_0x25e21c[_0x84bc('0x30')]);_0x37eb68[_0x84bc('0x32')]=_[_0x84bc('0x33')](_0x37eb68[_0x84bc('0x2f')],_0x37eb68[_0x84bc('0x30')]);_0x573c07[_0x84bc('0x34')]=_[_0x84bc('0x33')](_0x37eb68['model'],qs[_0x84bc('0x35')](_0x25e21c[_0x84bc('0x30')][_0x84bc('0x35')]));_0x573c07[_0x84bc('0x34')]=_0x573c07[_0x84bc('0x34')]['length']?_0x573c07[_0x84bc('0x34')]:_0x37eb68[_0x84bc('0x2f')];if(!_0x25e21c['query'][_0x84bc('0x36')](_0x84bc('0x37'))){_0x573c07[_0x84bc('0x1a')]=qs['limit'](_0x25e21c[_0x84bc('0x30')][_0x84bc('0x1a')]);_0x573c07['offset']=qs[_0x84bc('0x1b')](_0x25e21c[_0x84bc('0x30')][_0x84bc('0x1b')]);}_0x573c07[_0x84bc('0x38')]=qs[_0x84bc('0x39')](_0x25e21c[_0x84bc('0x30')][_0x84bc('0x39')]);_0x573c07[_0x84bc('0x3a')]=qs[_0x84bc('0x32')](_['pick'](_0x25e21c['query'],_0x37eb68[_0x84bc('0x32')]),_0x362f34);if(_0x25e21c['query'][_0x84bc('0x3b')]){_0x573c07[_0x84bc('0x3a')]=_[_0x84bc('0x3c')](_0x573c07[_0x84bc('0x3a')],{'$or':_[_0x84bc('0x2b')](_0x362f34,function(_0x22054d){if(_0x22054d[_0x84bc('0x2e')]!=='VIRTUAL'){var _0x2eaccd={};_0x2eaccd[_0x22054d[_0x84bc('0x28')]]={'$like':'%'+_0x25e21c[_0x84bc('0x30')][_0x84bc('0x3b')]+'%'};return _0x2eaccd;}})});}_0x573c07=_[_0x84bc('0x3c')]({},_0x573c07,_0x25e21c[_0x84bc('0x3d')]);var _0x5534bb={'where':_0x573c07[_0x84bc('0x3a')]};return db['AnalyticExtractedReport'][_0x84bc('0x3e')](_0x5534bb)['then'](function(_0x164da4){_0x49211d[_0x84bc('0x3e')]=_0x164da4;if(_0x25e21c[_0x84bc('0x30')][_0x84bc('0x3f')]){_0x573c07['include']=[{'all':!![]}];}return db[_0x84bc('0x40')]['findAll'](_0x573c07);})[_0x84bc('0x23')](function(_0x49c39a){_0x49211d[_0x84bc('0x41')]=_0x49c39a;return _0x49211d;})[_0x84bc('0x23')](respondWithFilteredResult(_0x52b61c,_0x573c07))['catch'](handleError(_0x52b61c,null));};exports[_0x84bc('0x42')]=function(_0x28d0cc,_0x1f4bb2){var _0x3272ad={'raw':!![],'where':{'id':_0x28d0cc[_0x84bc('0x43')]['id']}},_0x2641aa={};_0x2641aa[_0x84bc('0x2f')]=_[_0x84bc('0x31')](db[_0x84bc('0x40')][_0x84bc('0x2c')]);_0x2641aa[_0x84bc('0x30')]=_[_0x84bc('0x31')](_0x28d0cc[_0x84bc('0x30')]);_0x2641aa[_0x84bc('0x32')]=_[_0x84bc('0x33')](_0x2641aa[_0x84bc('0x2f')],_0x2641aa[_0x84bc('0x30')]);_0x3272ad[_0x84bc('0x34')]=_[_0x84bc('0x33')](_0x2641aa[_0x84bc('0x2f')],qs[_0x84bc('0x35')](_0x28d0cc[_0x84bc('0x30')][_0x84bc('0x35')]));_0x3272ad[_0x84bc('0x34')]=_0x3272ad[_0x84bc('0x34')][_0x84bc('0x44')]?_0x3272ad[_0x84bc('0x34')]:_0x2641aa[_0x84bc('0x2f')];if(_0x28d0cc['query'][_0x84bc('0x3f')]){_0x3272ad[_0x84bc('0x45')]=[{'all':!![]}];}_0x3272ad=_[_0x84bc('0x3c')]({},_0x3272ad,_0x28d0cc[_0x84bc('0x3d')]);return db['AnalyticExtractedReport'][_0x84bc('0x46')](_0x3272ad)[_0x84bc('0x23')](handleEntityNotFound(_0x1f4bb2,null))[_0x84bc('0x23')](respondWithResult(_0x1f4bb2,null))[_0x84bc('0x47')](handleError(_0x1f4bb2,null));};exports[_0x84bc('0x48')]=function(_0x3492dc,_0x591d67){return db[_0x84bc('0x40')][_0x84bc('0x48')](_0x3492dc['body'],{})[_0x84bc('0x23')](function(_0x48c319){var _0x573971=_0x3492dc[_0x84bc('0x49')]['get']({'plain':!![]});if(!_0x573971)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x573971['role']===_0x84bc('0x49')){var _0x2ae41b=_0x48c319[_0x84bc('0x24')]({'plain':!![]});var _0x4a36b3=_0x84bc('0x25');return db[_0x84bc('0x4a')][_0x84bc('0x46')]({'where':{'name':_0x4a36b3,'userProfileId':_0x573971[_0x84bc('0x4b')]},'raw':!![]})[_0x84bc('0x23')](function(_0x1bf1c3){if(_0x1bf1c3&&_0x1bf1c3['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x2ae41b['name'],'resourceId':_0x2ae41b['id'],'type':_0x1bf1c3[_0x84bc('0x28')],'sectionId':_0x1bf1c3['id']},{})[_0x84bc('0x23')](function(){return _0x48c319;});}else{return _0x48c319;}})[_0x84bc('0x47')](function(_0x313a9a){logger['error'](_0x84bc('0x4c'),_0x313a9a);throw _0x313a9a;});}return _0x48c319;})['then'](respondWithResult(_0x591d67,0xc9))[_0x84bc('0x47')](handleError(_0x591d67,null));};exports[_0x84bc('0x22')]=function(_0x5c72fb,_0x3d44d4){if(_0x5c72fb[_0x84bc('0x4d')]['id']){delete _0x5c72fb[_0x84bc('0x4d')]['id'];}return db['AnalyticExtractedReport'][_0x84bc('0x46')]({'where':{'id':_0x5c72fb[_0x84bc('0x43')]['id']}})[_0x84bc('0x23')](handleEntityNotFound(_0x3d44d4,null))['then'](saveUpdates(_0x5c72fb['body'],null))[_0x84bc('0x23')](respondWithResult(_0x3d44d4,null))[_0x84bc('0x47')](handleError(_0x3d44d4,null));};exports[_0x84bc('0x27')]=function(_0x581372,_0x444ca4){return db[_0x84bc('0x40')][_0x84bc('0x46')]({'where':{'id':_0x581372[_0x84bc('0x43')]['id']}})[_0x84bc('0x23')](handleEntityNotFound(_0x444ca4,null))[_0x84bc('0x23')](removeEntity(_0x444ca4,null))[_0x84bc('0x47')](handleError(_0x444ca4,null));};exports['download']=function(_0x58f54a,_0x290931,_0x142cc8){return db['AnalyticExtractedReport'][_0x84bc('0x46')]({'where':{'id':_0x58f54a[_0x84bc('0x43')]['id']},'attributes':[_0x84bc('0x28'),'basename','savename',_0x84bc('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x290931,null))[_0x84bc('0x23')](function(_0x38b5fd){if(_0x38b5fd){if(!fs[_0x84bc('0x4f')](path[_0x84bc('0x50')](config['root'],'server/files/reports',_0x38b5fd[_0x84bc('0x51')]))){throw new db['Sequelize'][(_0x84bc('0x52'))](_0x84bc('0x53'));}if(_0x58f54a[_0x84bc('0x30')][_0x84bc('0x54')]){return _0x290931[_0x84bc('0x16')](0xc8);}return _0x290931[_0x84bc('0x55')](path[_0x84bc('0x50')](config[_0x84bc('0x56')],_0x84bc('0x57'),_0x38b5fd['savename']),util[_0x84bc('0x58')](_0x84bc('0x59'),_0x38b5fd['basename']||_0x38b5fd[_0x84bc('0x28')],_0x38b5fd['output'][_0x84bc('0x5a')]()));}})[_0x84bc('0x47')](handleError(_0x290931,null));};
\ No newline at end of file
index 9bb6697..156f997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a1=['AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define'];(function(_0x11bf89,_0x225e19){var _0x5878fd=function(_0xec80c5){while(--_0xec80c5){_0x11bf89['push'](_0x11bf89['shift']());}};_0x5878fd(++_0x225e19);}(_0xd7a1,0x8e));var _0x1d7a=function(_0x1ba3f0,_0x3b220d){_0x1ba3f0=_0x1ba3f0-0x0;var _0x53064d=_0xd7a1[_0x1ba3f0];return _0x53064d;};'use strict';var _=require('lodash');var util=require(_0x1d7a('0x0'));var logger=require(_0x1d7a('0x1'))(_0x1d7a('0x2'));var moment=require(_0x1d7a('0x3'));var BPromise=require(_0x1d7a('0x4'));var rp=require(_0x1d7a('0x5'));var fs=require('fs');var path=require(_0x1d7a('0x6'));var rimraf=require(_0x1d7a('0x7'));var config=require(_0x1d7a('0x8'));var attributes=require(_0x1d7a('0x9'));module[_0x1d7a('0xa')]=function(_0x32c67a,_0x182028){return _0x32c67a[_0x1d7a('0xb')](_0x1d7a('0xc'),attributes,{'tableName':_0x1d7a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1148=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util'];(function(_0x38a3d6,_0x52e305){var _0x3768d7=function(_0x1af8a9){while(--_0x1af8a9){_0x38a3d6['push'](_0x38a3d6['shift']());}};_0x3768d7(++_0x52e305);}(_0x1148,0xc2));var _0x8114=function(_0x481b7c,_0x18f807){_0x481b7c=_0x481b7c-0x0;var _0x213ae8=_0x1148[_0x481b7c];return _0x213ae8;};'use strict';var _=require(_0x8114('0x0'));var util=require(_0x8114('0x1'));var logger=require(_0x8114('0x2'))(_0x8114('0x3'));var moment=require(_0x8114('0x4'));var BPromise=require('bluebird');var rp=require(_0x8114('0x5'));var fs=require('fs');var path=require(_0x8114('0x6'));var rimraf=require(_0x8114('0x7'));var config=require(_0x8114('0x8'));var attributes=require(_0x8114('0x9'));module[_0x8114('0xa')]=function(_0x3249d5,_0x505423){return _0x3249d5[_0x8114('0xb')](_0x8114('0xc'),attributes,{'tableName':_0x8114('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e507db..c84191f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e82=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x27a2a2,_0x2b9f1f){var _0x3938ee=function(_0xa65281){while(--_0xa65281){_0x27a2a2['push'](_0x27a2a2['shift']());}};_0x3938ee(++_0x2b9f1f);}(_0x3e82,0x18a));var _0x23e8=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x3e82[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x23e8('0x0'));var util=require(_0x23e8('0x1'));var moment=require(_0x23e8('0x2'));var BPromise=require(_0x23e8('0x3'));var rs=require(_0x23e8('0x4'));var fs=require('fs');var Redis=require(_0x23e8('0x5'));var db=require(_0x23e8('0x6'))['db'];var utils=require(_0x23e8('0x7'));var logger=require(_0x23e8('0x8'))(_0x23e8('0x9'));var config=require(_0x23e8('0xa'));var jayson=require(_0x23e8('0xb'));var client=jayson[_0x23e8('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29effc,_0x1d1a55,_0x16a3bb){return new BPromise(function(_0x164c59,_0x1afc29){return client['request'](_0x29effc,_0x16a3bb)[_0x23e8('0xd')](function(_0x4f01b5){logger[_0x23e8('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1d1a55,_0x23e8('0xf'));logger[_0x23e8('0x10')](_0x23e8('0x11'),_0x1d1a55,'request\x20sent',JSON[_0x23e8('0x12')](_0x4f01b5));if(_0x4f01b5[_0x23e8('0x13')]){if(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x14')]===0x1f4){logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);return _0x1afc29(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);}logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x4f01b5[_0x23e8('0x13')]['message']);return _0x164c59(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);}else{logger[_0x23e8('0xe')](_0x23e8('0x15'),_0x1d1a55,'request\x20sent');_0x164c59(_0x4f01b5[_0x23e8('0x17')][_0x23e8('0x16')]);}})[_0x23e8('0x18')](function(_0x96768d){logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x96768d);_0x1afc29(_0x96768d);});});}
\ No newline at end of file
+var _0xcd94=['debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent'];(function(_0x4e918e,_0x2ab80f){var _0x153104=function(_0x221d45){while(--_0x221d45){_0x4e918e['push'](_0x4e918e['shift']());}};_0x153104(++_0x2ab80f);}(_0xcd94,0x1d0));var _0x4cd9=function(_0x50e0b4,_0x1057f7){_0x50e0b4=_0x50e0b4-0x0;var _0x2fa8b0=_0xcd94[_0x50e0b4];return _0x2fa8b0;};'use strict';var _=require(_0x4cd9('0x0'));var util=require(_0x4cd9('0x1'));var moment=require('moment');var BPromise=require(_0x4cd9('0x2'));var rs=require(_0x4cd9('0x3'));var fs=require('fs');var Redis=require(_0x4cd9('0x4'));var db=require(_0x4cd9('0x5'))['db'];var utils=require(_0x4cd9('0x6'));var logger=require(_0x4cd9('0x7'))('rpc');var config=require(_0x4cd9('0x8'));var jayson=require(_0x4cd9('0x9'));var client=jayson[_0x4cd9('0xa')][_0x4cd9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x373c0f,_0x33cac0,_0x4848c6){return new BPromise(function(_0x355e85,_0x311268){return client[_0x4cd9('0xc')](_0x373c0f,_0x4848c6)[_0x4cd9('0xd')](function(_0x199ab7){logger['info'](_0x4cd9('0xe'),_0x33cac0,_0x4cd9('0xf'));logger[_0x4cd9('0x10')](_0x4cd9('0x11'),_0x33cac0,_0x4cd9('0xf'),JSON[_0x4cd9('0x12')](_0x199ab7));if(_0x199ab7['error']){if(_0x199ab7[_0x4cd9('0x13')][_0x4cd9('0x14')]===0x1f4){logger[_0x4cd9('0x13')](_0x4cd9('0xe'),_0x33cac0,_0x199ab7[_0x4cd9('0x13')][_0x4cd9('0x15')]);return _0x311268(_0x199ab7[_0x4cd9('0x13')][_0x4cd9('0x15')]);}logger[_0x4cd9('0x13')](_0x4cd9('0xe'),_0x33cac0,_0x199ab7[_0x4cd9('0x13')]['message']);return _0x355e85(_0x199ab7['error']['message']);}else{logger[_0x4cd9('0x16')](_0x4cd9('0xe'),_0x33cac0,_0x4cd9('0xf'));_0x355e85(_0x199ab7[_0x4cd9('0x17')][_0x4cd9('0x15')]);}})['catch'](function(_0x4d2ae5){logger[_0x4cd9('0x13')](_0x4cd9('0xe'),_0x33cac0,_0x4d2ae5);_0x311268(_0x4d2ae5);});});}
\ No newline at end of file
index 280c9d1..ec4aca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e33=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticExtractedReport.controller','get','isAuthenticated','show','/:id/download','post','/:id','update','destroy','exports','util','path'];(function(_0x17d97e,_0x5ab24e){var _0x5696ac=function(_0x39e224){while(--_0x39e224){_0x17d97e['push'](_0x17d97e['shift']());}};_0x5696ac(++_0x5ab24e);}(_0x4e33,0xa8));var _0x34e3=function(_0x2bd88d,_0x2d5dc3){_0x2bd88d=_0x2bd88d-0x0;var _0x5516d4=_0x4e33[_0x2bd88d];return _0x5516d4;};'use strict';var multer=require('multer');var util=require(_0x34e3('0x0'));var path=require(_0x34e3('0x1'));var timeout=require(_0x34e3('0x2'));var express=require(_0x34e3('0x3'));var router=express[_0x34e3('0x4')]();var fs_extra=require(_0x34e3('0x5'));var auth=require(_0x34e3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x34e3('0x7'));router[_0x34e3('0x8')]('/',auth[_0x34e3('0x9')](),controller['index']);router[_0x34e3('0x8')]('/:id',auth[_0x34e3('0x9')](),controller[_0x34e3('0xa')]);router['get'](_0x34e3('0xb'),auth['isAuthenticated'](),controller['download']);router[_0x34e3('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x34e3('0xd'),auth[_0x34e3('0x9')](),controller[_0x34e3('0xe')]);router['delete']('/:id',auth[_0x34e3('0x9')](),controller[_0x34e3('0xf')]);module[_0x34e3('0x10')]=router;
\ No newline at end of file
+var _0xea3e=['update','delete','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','download','post','create','put'];(function(_0x29bdcc,_0x5d1a49){var _0x1f1c67=function(_0x58b29e){while(--_0x58b29e){_0x29bdcc['push'](_0x29bdcc['shift']());}};_0x1f1c67(++_0x5d1a49);}(_0xea3e,0xa2));var _0xeea3=function(_0x121432,_0x3f39a6){_0x121432=_0x121432-0x0;var _0x11b7eb=_0xea3e[_0x121432];return _0x11b7eb;};'use strict';var multer=require('multer');var util=require(_0xeea3('0x0'));var path=require(_0xeea3('0x1'));var timeout=require(_0xeea3('0x2'));var express=require(_0xeea3('0x3'));var router=express[_0xeea3('0x4')]();var fs_extra=require(_0xeea3('0x5'));var auth=require(_0xeea3('0x6'));var interaction=require(_0xeea3('0x7'));var config=require(_0xeea3('0x8'));var controller=require('./analyticExtractedReport.controller');router[_0xeea3('0x9')]('/',auth[_0xeea3('0xa')](),controller[_0xeea3('0xb')]);router['get'](_0xeea3('0xc'),auth['isAuthenticated'](),controller[_0xeea3('0xd')]);router[_0xeea3('0x9')]('/:id/download',auth[_0xeea3('0xa')](),controller[_0xeea3('0xe')]);router[_0xeea3('0xf')]('/',auth[_0xeea3('0xa')](),controller[_0xeea3('0x10')]);router[_0xeea3('0x11')](_0xeea3('0xc'),auth[_0xeea3('0xa')](),controller[_0xeea3('0x12')]);router[_0xeea3('0x13')](_0xeea3('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9096d64..98fec3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eac=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x46ebc4,_0x47b573){var _0xa3c86c=function(_0x6ea477){while(--_0x6ea477){_0x46ebc4['push'](_0x46ebc4['shift']());}};_0xa3c86c(++_0x47b573);}(_0x8eac,0x1c7));var _0xc8ea=function(_0x29c3a0,_0x32be87){_0x29c3a0=_0x29c3a0-0x0;var _0x430f8a=_0x8eac[_0x29c3a0];return _0x430f8a;};'use strict';var Sequelize=require(_0xc8ea('0x0'));module[_0xc8ea('0x1')]={'field':{'type':Sequelize[_0xc8ea('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xc8ea('0x3')]},'groupBy':{'type':Sequelize[_0xc8ea('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xc8ea('0x3')]},'custom':{'type':Sequelize[_0xc8ea('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xeb24=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x3de873,_0x174b5f){var _0x380b8c=function(_0x313dea){while(--_0x313dea){_0x3de873['push'](_0x3de873['shift']());}};_0x380b8c(++_0x174b5f);}(_0xeb24,0xb6));var _0x4eb2=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xeb24[_0x4ff09b];return _0x3f5c2e;};'use strict';var Sequelize=require(_0x4eb2('0x0'));module[_0x4eb2('0x1')]={'field':{'type':Sequelize[_0x4eb2('0x2')]},'alias':{'type':Sequelize[_0x4eb2('0x3')]},'function':{'type':Sequelize[_0x4eb2('0x3')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x4eb2('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x4eb2('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 153d312..192a44e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb010=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','bulkCreate','body','find','destroy','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x49bdc4,_0x1e2507){var _0x1f7437=function(_0x25a9f9){while(--_0x25a9f9){_0x49bdc4['push'](_0x49bdc4['shift']());}};_0x1f7437(++_0x1e2507);}(_0xb010,0x97));var _0x0b01=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb010[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x0b01('0x0'));var rimraf=require(_0x0b01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0b01('0x2'));var moment=require(_0x0b01('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0b01('0x4'));var util=require(_0x0b01('0x5'));var path=require(_0x0b01('0x6'));var sox=require(_0x0b01('0x7'));var csv=require('to-csv');var ejs=require(_0x0b01('0x8'));var fs=require('fs');var fs_extra=require(_0x0b01('0x9'));var _=require(_0x0b01('0xa'));var squel=require(_0x0b01('0xb'));var crypto=require(_0x0b01('0xc'));var jsforce=require(_0x0b01('0xd'));var deskjs=require(_0x0b01('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0b01('0xf'));var Papa=require(_0x0b01('0x10'));var Redis=require(_0x0b01('0x11'));var authService=require(_0x0b01('0x12'));var qs=require(_0x0b01('0x13'));var as=require(_0x0b01('0x14'));var hardwareService=require(_0x0b01('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x0b01('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0b01('0x17'));var db=require(_0x0b01('0x18'))['db'];function respondWithStatusCode(_0x16b07b,_0x26c52a){_0x26c52a=_0x26c52a||0xcc;return function(_0x119159){if(_0x119159){return _0x16b07b[_0x0b01('0x19')](_0x26c52a);}return _0x16b07b['status'](_0x26c52a)[_0x0b01('0x1a')]();};}function respondWithResult(_0x49790a,_0x546b0b){_0x546b0b=_0x546b0b||0xc8;return function(_0x53b40d){if(_0x53b40d){return _0x49790a[_0x0b01('0x1b')](_0x546b0b)[_0x0b01('0x1c')](_0x53b40d);}};}function respondWithFilteredResult(_0x103e89,_0x345073){return function(_0x2e507a){if(_0x2e507a){var _0x112a3d=typeof _0x345073[_0x0b01('0x1d')]==='undefined'&&typeof _0x345073[_0x0b01('0x1e')]===_0x0b01('0x1f');var _0x309a8f=_0x2e507a[_0x0b01('0x20')];var _0x519e9b=_0x112a3d?0x0:_0x345073[_0x0b01('0x1d')];var _0x245e2d=_0x112a3d?_0x2e507a['count']:_0x345073[_0x0b01('0x1d')]+_0x345073[_0x0b01('0x1e')];var _0x2110a4;if(_0x245e2d>=_0x309a8f){_0x245e2d=_0x309a8f;_0x2110a4=0xc8;}else{_0x2110a4=0xce;}_0x103e89[_0x0b01('0x1b')](_0x2110a4);return _0x103e89[_0x0b01('0x21')](_0x0b01('0x22'),_0x519e9b+'-'+_0x245e2d+'/'+_0x309a8f)[_0x0b01('0x1c')](_0x2e507a);}return null;};}function patchUpdates(_0x265ad8){return function(_0xfc38ee){try{jsonpatch[_0x0b01('0x23')](_0xfc38ee,_0x265ad8,!![]);}catch(_0x2b86ab){return BPromise[_0x0b01('0x24')](_0x2b86ab);}return _0xfc38ee['save']();};}function saveUpdates(_0x1a77e1,_0x451a7f){return function(_0x3457f0){if(_0x3457f0){return _0x3457f0[_0x0b01('0x25')](_0x1a77e1)['then'](function(_0x49dc8e){return _0x49dc8e;});}return null;};}function removeEntity(_0x4e7bc1,_0x4e156a){return function(_0x373d25){if(_0x373d25){return _0x373d25['destroy']()['then'](function(){_0x4e7bc1['status'](0xcc)[_0x0b01('0x1a')]();});}};}function handleEntityNotFound(_0x501c1d,_0x20bdca){return function(_0x5e8083){if(!_0x5e8083){_0x501c1d[_0x0b01('0x19')](0x194);}return _0x5e8083;};}function handleError(_0x102286,_0x58ffbd){_0x58ffbd=_0x58ffbd||0x1f4;return function(_0x750b77){logger['error'](_0x750b77[_0x0b01('0x26')]);if(_0x750b77[_0x0b01('0x27')]){delete _0x750b77[_0x0b01('0x27')];}_0x102286[_0x0b01('0x1b')](_0x58ffbd)[_0x0b01('0x28')](_0x750b77);};}exports[_0x0b01('0x29')]=function(_0x6139ec,_0x5a8001){var _0x256476={},_0x2727cb={},_0x3822d3={'count':0x0,'rows':[]};var _0x2b9c19=_[_0x0b01('0x2a')](db[_0x0b01('0x2b')][_0x0b01('0x2c')],function(_0x19a922){return{'name':_0x19a922[_0x0b01('0x2d')],'type':_0x19a922[_0x0b01('0x2e')][_0x0b01('0x2f')]};});_0x2727cb[_0x0b01('0x30')]=_['map'](_0x2b9c19,_0x0b01('0x27'));_0x2727cb['query']=_[_0x0b01('0x31')](_0x6139ec['query']);_0x2727cb[_0x0b01('0x32')]=_[_0x0b01('0x33')](_0x2727cb['model'],_0x2727cb['query']);_0x256476[_0x0b01('0x34')]=_[_0x0b01('0x33')](_0x2727cb[_0x0b01('0x30')],qs[_0x0b01('0x35')](_0x6139ec[_0x0b01('0x36')][_0x0b01('0x35')]));_0x256476[_0x0b01('0x34')]=_0x256476[_0x0b01('0x34')][_0x0b01('0x37')]?_0x256476['attributes']:_0x2727cb[_0x0b01('0x30')];if(!_0x6139ec[_0x0b01('0x36')][_0x0b01('0x38')](_0x0b01('0x39'))){_0x256476['limit']=qs['limit'](_0x6139ec['query'][_0x0b01('0x1e')]);_0x256476[_0x0b01('0x1d')]=qs[_0x0b01('0x1d')](_0x6139ec[_0x0b01('0x36')][_0x0b01('0x1d')]);}_0x256476['order']=qs['sort'](_0x6139ec['query'][_0x0b01('0x3a')]);_0x256476[_0x0b01('0x3b')]=qs[_0x0b01('0x32')](_[_0x0b01('0x3c')](_0x6139ec[_0x0b01('0x36')],_0x2727cb[_0x0b01('0x32')]),_0x2b9c19);if(_0x6139ec[_0x0b01('0x36')][_0x0b01('0x3d')]){_0x256476['where']=_[_0x0b01('0x3e')](_0x256476[_0x0b01('0x3b')],{'$or':_['map'](_0x2b9c19,function(_0x31c47e){if(_0x31c47e[_0x0b01('0x2e')]!==_0x0b01('0x3f')){var _0x512e08={};_0x512e08[_0x31c47e[_0x0b01('0x27')]]={'$like':'%'+_0x6139ec['query'][_0x0b01('0x3d')]+'%'};return _0x512e08;}})});}_0x256476=_['merge']({},_0x256476,_0x6139ec[_0x0b01('0x40')]);var _0x4893ae={'where':_0x256476[_0x0b01('0x3b')]};return db[_0x0b01('0x2b')]['count'](_0x4893ae)[_0x0b01('0x41')](function(_0x4615c0){_0x3822d3[_0x0b01('0x20')]=_0x4615c0;if(_0x6139ec[_0x0b01('0x36')][_0x0b01('0x42')]){_0x256476[_0x0b01('0x43')]=[{'all':!![]}];}return db[_0x0b01('0x2b')][_0x0b01('0x44')](_0x256476);})['then'](function(_0x1969fc){_0x3822d3[_0x0b01('0x45')]=_0x1969fc;return _0x3822d3;})[_0x0b01('0x41')](respondWithFilteredResult(_0x5a8001,_0x256476))[_0x0b01('0x46')](handleError(_0x5a8001,null));};exports[_0x0b01('0x47')]=function(_0xaf4e95,_0x507f60){var _0xcb577c={'raw':![],'where':{'id':_0xaf4e95[_0x0b01('0x48')]['id']}},_0x35a638={};_0x35a638[_0x0b01('0x30')]=_['keys'](db[_0x0b01('0x2b')][_0x0b01('0x2c')]);_0x35a638[_0x0b01('0x36')]=_['keys'](_0xaf4e95['query']);_0x35a638[_0x0b01('0x32')]=_[_0x0b01('0x33')](_0x35a638[_0x0b01('0x30')],_0x35a638[_0x0b01('0x36')]);_0xcb577c[_0x0b01('0x34')]=_['intersection'](_0x35a638[_0x0b01('0x30')],qs[_0x0b01('0x35')](_0xaf4e95[_0x0b01('0x36')][_0x0b01('0x35')]));_0xcb577c['attributes']=_0xcb577c[_0x0b01('0x34')][_0x0b01('0x37')]?_0xcb577c['attributes']:_0x35a638[_0x0b01('0x30')];if(_0xaf4e95[_0x0b01('0x36')]['includeAll']){_0xcb577c[_0x0b01('0x43')]=[{'all':!![]}];}_0xcb577c=_[_0x0b01('0x3e')]({},_0xcb577c,_0xaf4e95[_0x0b01('0x40')]);return db[_0x0b01('0x2b')]['find'](_0xcb577c)[_0x0b01('0x41')](handleEntityNotFound(_0x507f60,null))[_0x0b01('0x41')](respondWithResult(_0x507f60,null))[_0x0b01('0x46')](handleError(_0x507f60,null));};exports['create']=function(_0x3d4db9,_0x11904b){return db[_0x0b01('0x2b')]['create'](_0x3d4db9['body'],{})[_0x0b01('0x41')](respondWithResult(_0x11904b,0xc9))[_0x0b01('0x46')](handleError(_0x11904b,null));};exports[_0x0b01('0x49')]=function(_0x1e8615,_0x5c27f3){return db[_0x0b01('0x2b')][_0x0b01('0x49')](_0x1e8615[_0x0b01('0x4a')],{'raw':![],'individualHooks':!![]})[_0x0b01('0x41')](respondWithResult(_0x5c27f3,0xc9))['catch'](handleError(_0x5c27f3,null));};exports['update']=function(_0x386671,_0x36473f){if(_0x386671[_0x0b01('0x4a')]['id']){delete _0x386671[_0x0b01('0x4a')]['id'];}return db[_0x0b01('0x2b')][_0x0b01('0x4b')]({'where':{'id':_0x386671[_0x0b01('0x48')]['id']}})[_0x0b01('0x41')](handleEntityNotFound(_0x36473f,null))['then'](saveUpdates(_0x386671[_0x0b01('0x4a')],null))[_0x0b01('0x41')](respondWithResult(_0x36473f,null))[_0x0b01('0x46')](handleError(_0x36473f,null));};exports[_0x0b01('0x4c')]=function(_0xd8554b,_0x3f6c5c){return db[_0x0b01('0x2b')][_0x0b01('0x4b')]({'where':{'id':_0xd8554b[_0x0b01('0x48')]['id']}})[_0x0b01('0x41')](handleEntityNotFound(_0x3f6c5c,null))[_0x0b01('0x41')](removeEntity(_0x3f6c5c,null))[_0x0b01('0x46')](handleError(_0x3f6c5c,null));};exports[_0x0b01('0x4d')]=function(_0x9f2702,_0x1aa78d){return db[_0x0b01('0x2b')][_0x0b01('0x4c')]({'where':{'id':_0x9f2702[_0x0b01('0x36')][_0x0b01('0x4e')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x1aa78d,0xcc))[_0x0b01('0x46')](handleError(_0x1aa78d,null));};exports[_0x0b01('0x4f')]=function(_0x2dd7c9,_0x32982e,_0x23944e){return db[_0x0b01('0x50')][_0x0b01('0x51')]({'where':{'id':_0x2dd7c9[_0x0b01('0x48')]['id']}})[_0x0b01('0x41')](handleEntityNotFound(_0x32982e,null))[_0x0b01('0x41')](function(_0x2d857f){if(_0x2d857f){return db[_0x0b01('0x52')]['transaction'](function(_0x53e05){return db[_0x0b01('0x2b')]['destroy']({'where':{'CustomReportId':_0x2dd7c9['params']['id']},'transaction':_0x53e05})['then'](function(_0x295332){var _0x2e1633=_[_0x0b01('0x2a')](_0x2dd7c9[_0x0b01('0x4a')],function(_0x255693){delete _0x255693['id'];_0x255693[_0x0b01('0x53')]=_0x2dd7c9['params']['id'];return _0x255693;});return db[_0x0b01('0x2b')][_0x0b01('0x49')](_0x2e1633,{'transaction':_0x53e05});});})['then'](function(){return db[_0x0b01('0x2b')][_0x0b01('0x44')]({'where':{'CustomReportId':_0x2dd7c9[_0x0b01('0x48')]['id']}});});}})[_0x0b01('0x41')](respondWithResult(_0x32982e,null))['catch'](handleError(_0x32982e,null));};
\ No newline at end of file
+var _0x643b=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','map','AnalyticFieldReport','rawAttributes','type','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','include','findAll','includeAll','catch','create','bulkCreate','body','find','bulkDestroy','ids','params','sequelize','CustomReportId','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x4c8779,_0x399ca4){var _0x55a207=function(_0x5323f5){while(--_0x5323f5){_0x4c8779['push'](_0x4c8779['shift']());}};_0x55a207(++_0x399ca4);}(_0x643b,0xde));var _0xb643=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x643b[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xb643('0x0'));var rimraf=require(_0xb643('0x1'));var zipdir=require(_0xb643('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb643('0x3'));var moment=require(_0xb643('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb643('0x5'));var util=require(_0xb643('0x6'));var path=require(_0xb643('0x7'));var sox=require(_0xb643('0x8'));var csv=require(_0xb643('0x9'));var ejs=require(_0xb643('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb643('0xb'));var squel=require(_0xb643('0xc'));var crypto=require(_0xb643('0xd'));var jsforce=require(_0xb643('0xe'));var deskjs=require(_0xb643('0xf'));var toCsv=require(_0xb643('0x9'));var querystring=require(_0xb643('0x10'));var Papa=require(_0xb643('0x11'));var Redis=require(_0xb643('0x12'));var authService=require(_0xb643('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xb643('0x14'));var hardwareService=require(_0xb643('0x15'));var logger=require('../../config/logger')(_0xb643('0x16'));var utils=require(_0xb643('0x17'));var config=require(_0xb643('0x18'));var licenseUtil=require(_0xb643('0x19'));var db=require(_0xb643('0x1a'))['db'];function respondWithStatusCode(_0x5f40e1,_0x279b7e){_0x279b7e=_0x279b7e||0xcc;return function(_0x401952){if(_0x401952){return _0x5f40e1[_0xb643('0x1b')](_0x279b7e);}return _0x5f40e1['status'](_0x279b7e)['end']();};}function respondWithResult(_0x19b6c3,_0x15c6bc){_0x15c6bc=_0x15c6bc||0xc8;return function(_0x51425c){if(_0x51425c){return _0x19b6c3['status'](_0x15c6bc)[_0xb643('0x1c')](_0x51425c);}};}function respondWithFilteredResult(_0x117158,_0x1ce74c){return function(_0x4f87a6){if(_0x4f87a6){var _0x256a89=typeof _0x1ce74c[_0xb643('0x1d')]===_0xb643('0x1e')&&typeof _0x1ce74c['limit']===_0xb643('0x1e');var _0x241a3f=_0x4f87a6[_0xb643('0x1f')];var _0x3d5a3c=_0x256a89?0x0:_0x1ce74c[_0xb643('0x1d')];var _0x381d40=_0x256a89?_0x4f87a6[_0xb643('0x1f')]:_0x1ce74c['offset']+_0x1ce74c[_0xb643('0x20')];var _0x2a22c1;if(_0x381d40>=_0x241a3f){_0x381d40=_0x241a3f;_0x2a22c1=0xc8;}else{_0x2a22c1=0xce;}_0x117158[_0xb643('0x21')](_0x2a22c1);return _0x117158[_0xb643('0x22')](_0xb643('0x23'),_0x3d5a3c+'-'+_0x381d40+'/'+_0x241a3f)[_0xb643('0x1c')](_0x4f87a6);}return null;};}function patchUpdates(_0xa352a0){return function(_0x2f1a72){try{jsonpatch[_0xb643('0x24')](_0x2f1a72,_0xa352a0,!![]);}catch(_0x132d52){return BPromise[_0xb643('0x25')](_0x132d52);}return _0x2f1a72[_0xb643('0x26')]();};}function saveUpdates(_0x5487e0,_0x28975d){return function(_0x176f65){if(_0x176f65){return _0x176f65[_0xb643('0x27')](_0x5487e0)[_0xb643('0x28')](function(_0x147631){return _0x147631;});}return null;};}function removeEntity(_0x5efa9b,_0x1459bc){return function(_0x551a5a){if(_0x551a5a){return _0x551a5a[_0xb643('0x29')]()[_0xb643('0x28')](function(){_0x5efa9b[_0xb643('0x21')](0xcc)[_0xb643('0x2a')]();});}};}function handleEntityNotFound(_0xa98f05,_0x5403da){return function(_0x3aa548){if(!_0x3aa548){_0xa98f05['sendStatus'](0x194);}return _0x3aa548;};}function handleError(_0x5983f7,_0x5269ec){_0x5269ec=_0x5269ec||0x1f4;return function(_0x3bfc92){logger[_0xb643('0x2b')](_0x3bfc92['stack']);if(_0x3bfc92[_0xb643('0x2c')]){delete _0x3bfc92[_0xb643('0x2c')];}_0x5983f7[_0xb643('0x21')](_0x5269ec)[_0xb643('0x2d')](_0x3bfc92);};}exports[_0xb643('0x2e')]=function(_0x1ac834,_0x3f233a){var _0x2d4dd3={},_0x254042={},_0x1ddb1d={'count':0x0,'rows':[]};var _0x441855=_[_0xb643('0x2f')](db[_0xb643('0x30')][_0xb643('0x31')],function(_0x26e7b4){return{'name':_0x26e7b4['fieldName'],'type':_0x26e7b4[_0xb643('0x32')][_0xb643('0x33')]};});_0x254042['model']=_['map'](_0x441855,_0xb643('0x2c'));_0x254042[_0xb643('0x34')]=_[_0xb643('0x35')](_0x1ac834[_0xb643('0x34')]);_0x254042[_0xb643('0x36')]=_['intersection'](_0x254042[_0xb643('0x37')],_0x254042['query']);_0x2d4dd3[_0xb643('0x38')]=_[_0xb643('0x39')](_0x254042[_0xb643('0x37')],qs['fields'](_0x1ac834[_0xb643('0x34')][_0xb643('0x3a')]));_0x2d4dd3[_0xb643('0x38')]=_0x2d4dd3['attributes'][_0xb643('0x3b')]?_0x2d4dd3[_0xb643('0x38')]:_0x254042['model'];if(!_0x1ac834[_0xb643('0x34')]['hasOwnProperty'](_0xb643('0x3c'))){_0x2d4dd3[_0xb643('0x20')]=qs[_0xb643('0x20')](_0x1ac834[_0xb643('0x34')][_0xb643('0x20')]);_0x2d4dd3[_0xb643('0x1d')]=qs['offset'](_0x1ac834[_0xb643('0x34')][_0xb643('0x1d')]);}_0x2d4dd3[_0xb643('0x3d')]=qs[_0xb643('0x3e')](_0x1ac834[_0xb643('0x34')][_0xb643('0x3e')]);_0x2d4dd3[_0xb643('0x3f')]=qs['filters'](_[_0xb643('0x40')](_0x1ac834['query'],_0x254042[_0xb643('0x36')]),_0x441855);if(_0x1ac834['query']['filter']){_0x2d4dd3['where']=_[_0xb643('0x41')](_0x2d4dd3[_0xb643('0x3f')],{'$or':_['map'](_0x441855,function(_0x1b45ff){if(_0x1b45ff[_0xb643('0x32')]!==_0xb643('0x42')){var _0x4996ef={};_0x4996ef[_0x1b45ff[_0xb643('0x2c')]]={'$like':'%'+_0x1ac834[_0xb643('0x34')]['filter']+'%'};return _0x4996ef;}})});}_0x2d4dd3=_['merge']({},_0x2d4dd3,_0x1ac834['options']);var _0x433a43={'where':_0x2d4dd3[_0xb643('0x3f')]};return db[_0xb643('0x30')]['count'](_0x433a43)[_0xb643('0x28')](function(_0x50dc62){_0x1ddb1d['count']=_0x50dc62;if(_0x1ac834[_0xb643('0x34')]['includeAll']){_0x2d4dd3[_0xb643('0x43')]=[{'all':!![]}];}return db['AnalyticFieldReport'][_0xb643('0x44')](_0x2d4dd3);})['then'](function(_0x529d36){_0x1ddb1d['rows']=_0x529d36;return _0x1ddb1d;})['then'](respondWithFilteredResult(_0x3f233a,_0x2d4dd3))['catch'](handleError(_0x3f233a,null));};exports['show']=function(_0x1e614e,_0x17d39f){var _0x5f0138={'raw':![],'where':{'id':_0x1e614e['params']['id']}},_0x51e2a8={};_0x51e2a8[_0xb643('0x37')]=_['keys'](db[_0xb643('0x30')]['rawAttributes']);_0x51e2a8[_0xb643('0x34')]=_[_0xb643('0x35')](_0x1e614e['query']);_0x51e2a8[_0xb643('0x36')]=_[_0xb643('0x39')](_0x51e2a8[_0xb643('0x37')],_0x51e2a8['query']);_0x5f0138[_0xb643('0x38')]=_['intersection'](_0x51e2a8[_0xb643('0x37')],qs[_0xb643('0x3a')](_0x1e614e[_0xb643('0x34')][_0xb643('0x3a')]));_0x5f0138[_0xb643('0x38')]=_0x5f0138['attributes'][_0xb643('0x3b')]?_0x5f0138[_0xb643('0x38')]:_0x51e2a8[_0xb643('0x37')];if(_0x1e614e[_0xb643('0x34')][_0xb643('0x45')]){_0x5f0138[_0xb643('0x43')]=[{'all':!![]}];}_0x5f0138=_[_0xb643('0x41')]({},_0x5f0138,_0x1e614e['options']);return db[_0xb643('0x30')]['find'](_0x5f0138)['then'](handleEntityNotFound(_0x17d39f,null))[_0xb643('0x28')](respondWithResult(_0x17d39f,null))[_0xb643('0x46')](handleError(_0x17d39f,null));};exports[_0xb643('0x47')]=function(_0x2197d6,_0x5b56ab){return db['AnalyticFieldReport'][_0xb643('0x47')](_0x2197d6['body'],{})['then'](respondWithResult(_0x5b56ab,0xc9))[_0xb643('0x46')](handleError(_0x5b56ab,null));};exports['bulkCreate']=function(_0x166a93,_0x378732){return db[_0xb643('0x30')][_0xb643('0x48')](_0x166a93[_0xb643('0x49')],{'raw':![],'individualHooks':!![]})[_0xb643('0x28')](respondWithResult(_0x378732,0xc9))[_0xb643('0x46')](handleError(_0x378732,null));};exports['update']=function(_0xd5b4f2,_0x345759){if(_0xd5b4f2[_0xb643('0x49')]['id']){delete _0xd5b4f2[_0xb643('0x49')]['id'];}return db[_0xb643('0x30')][_0xb643('0x4a')]({'where':{'id':_0xd5b4f2['params']['id']}})[_0xb643('0x28')](handleEntityNotFound(_0x345759,null))[_0xb643('0x28')](saveUpdates(_0xd5b4f2['body'],null))[_0xb643('0x28')](respondWithResult(_0x345759,null))['catch'](handleError(_0x345759,null));};exports[_0xb643('0x29')]=function(_0x5ab5bd,_0xe8987){return db[_0xb643('0x30')][_0xb643('0x4a')]({'where':{'id':_0x5ab5bd['params']['id']}})[_0xb643('0x28')](handleEntityNotFound(_0xe8987,null))[_0xb643('0x28')](removeEntity(_0xe8987,null))[_0xb643('0x46')](handleError(_0xe8987,null));};exports[_0xb643('0x4b')]=function(_0x403af2,_0x26b052){return db[_0xb643('0x30')]['destroy']({'where':{'id':_0x403af2[_0xb643('0x34')][_0xb643('0x4c')]||[]},'raw':![],'individualHooks':!![]})[_0xb643('0x28')](respondWithResult(_0x26b052,0xcc))[_0xb643('0x46')](handleError(_0x26b052,null));};exports['addFields']=function(_0x25efde,_0x23e4e6,_0x57eea2){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x25efde[_0xb643('0x4d')]['id']}})['then'](handleEntityNotFound(_0x23e4e6,null))[_0xb643('0x28')](function(_0x554147){if(_0x554147){return db[_0xb643('0x4e')]['transaction'](function(_0x33b039){return db[_0xb643('0x30')][_0xb643('0x29')]({'where':{'CustomReportId':_0x25efde[_0xb643('0x4d')]['id']},'transaction':_0x33b039})[_0xb643('0x28')](function(_0x43021a){var _0x56785b=_[_0xb643('0x2f')](_0x25efde[_0xb643('0x49')],function(_0x2d9937){delete _0x2d9937['id'];_0x2d9937[_0xb643('0x4f')]=_0x25efde[_0xb643('0x4d')]['id'];return _0x2d9937;});return db[_0xb643('0x30')][_0xb643('0x48')](_0x56785b,{'transaction':_0x33b039});});})[_0xb643('0x28')](function(){return db[_0xb643('0x30')]['findAll']({'where':{'CustomReportId':_0x25efde[_0xb643('0x4d')]['id']}});});}})['then'](respondWithResult(_0x23e4e6,null))['catch'](handleError(_0x23e4e6,null));};
\ No newline at end of file
index 3c218b0..dd2d518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c93=['bluebird','request-promise','path','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7c93,0x1b6));var _0x37c9=function(_0x1aaf1a,_0x1bb3bc){_0x1aaf1a=_0x1aaf1a-0x0;var _0x112c28=_0x7c93[_0x1aaf1a];return _0x112c28;};'use strict';var _=require(_0x37c9('0x0'));var util=require(_0x37c9('0x1'));var logger=require('../../config/logger')(_0x37c9('0x2'));var moment=require(_0x37c9('0x3'));var BPromise=require(_0x37c9('0x4'));var rp=require(_0x37c9('0x5'));var fs=require('fs');var path=require(_0x37c9('0x6'));var rimraf=require('rimraf');var config=require(_0x37c9('0x7'));var attributes=require(_0x37c9('0x8'));module[_0x37c9('0x9')]=function(_0x50a8c9,_0x336781){return _0x50a8c9[_0x37c9('0xa')](_0x37c9('0xb'),attributes,{'tableName':_0x37c9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6e7=['analytics_report_fields','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','AnalyticFieldReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd6e7,0x83));var _0x7d6e=function(_0x3a86a7,_0x12ade0){_0x3a86a7=_0x3a86a7-0x0;var _0x19b1b6=_0xd6e7[_0x3a86a7];return _0x19b1b6;};'use strict';var _=require(_0x7d6e('0x0'));var util=require(_0x7d6e('0x1'));var logger=require(_0x7d6e('0x2'))(_0x7d6e('0x3'));var moment=require(_0x7d6e('0x4'));var BPromise=require(_0x7d6e('0x5'));var rp=require(_0x7d6e('0x6'));var fs=require('fs');var path=require(_0x7d6e('0x7'));var rimraf=require(_0x7d6e('0x8'));var config=require(_0x7d6e('0x9'));var attributes=require('./analyticFieldReport.attributes');module[_0x7d6e('0xa')]=function(_0x1e6bc2,_0xfa76a6){return _0x1e6bc2['define'](_0x7d6e('0xb'),attributes,{'tableName':_0x7d6e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b4d504..80ef4f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad83=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x52d508,_0x2f0254){var _0x204d5e=function(_0x45554d){while(--_0x45554d){_0x52d508['push'](_0x52d508['shift']());}};_0x204d5e(++_0x2f0254);}(_0xad83,0x18b));var _0x3ad8=function(_0x15a6fb,_0x4be8da){_0x15a6fb=_0x15a6fb-0x0;var _0x22ef2c=_0xad83[_0x15a6fb];return _0x22ef2c;};'use strict';var _=require(_0x3ad8('0x0'));var util=require(_0x3ad8('0x1'));var moment=require(_0x3ad8('0x2'));var BPromise=require(_0x3ad8('0x3'));var rs=require(_0x3ad8('0x4'));var fs=require('fs');var Redis=require(_0x3ad8('0x5'));var db=require(_0x3ad8('0x6'))['db'];var utils=require(_0x3ad8('0x7'));var logger=require(_0x3ad8('0x8'))(_0x3ad8('0x9'));var config=require(_0x3ad8('0xa'));var jayson=require(_0x3ad8('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x283e9e,_0x52a27e,_0x21cdd5){return new BPromise(function(_0x2d16d3,_0x27e60b){return client[_0x3ad8('0xc')](_0x283e9e,_0x21cdd5)['then'](function(_0x55cf7e){logger[_0x3ad8('0xd')](_0x3ad8('0xe'),_0x52a27e,_0x3ad8('0xf'));logger[_0x3ad8('0x10')](_0x3ad8('0x11'),_0x52a27e,_0x3ad8('0xf'),JSON['stringify'](_0x55cf7e));if(_0x55cf7e[_0x3ad8('0x12')]){if(_0x55cf7e[_0x3ad8('0x12')][_0x3ad8('0x13')]===0x1f4){logger[_0x3ad8('0x12')](_0x3ad8('0xe'),_0x52a27e,_0x55cf7e[_0x3ad8('0x12')]['message']);return _0x27e60b(_0x55cf7e[_0x3ad8('0x12')][_0x3ad8('0x14')]);}logger[_0x3ad8('0x12')](_0x3ad8('0xe'),_0x52a27e,_0x55cf7e['error'][_0x3ad8('0x14')]);return _0x2d16d3(_0x55cf7e[_0x3ad8('0x12')][_0x3ad8('0x14')]);}else{logger[_0x3ad8('0xd')](_0x3ad8('0xe'),_0x52a27e,'request\x20sent');_0x2d16d3(_0x55cf7e[_0x3ad8('0x15')][_0x3ad8('0x14')]);}})[_0x3ad8('0x16')](function(_0x5491b2){logger[_0x3ad8('0x12')](_0x3ad8('0xe'),_0x52a27e,_0x5491b2);_0x27e60b(_0x5491b2);});});}
\ No newline at end of file
+var _0x9eb7=['AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x1fc1f9,_0x454fb2){var _0x4987ca=function(_0x5e90dd){while(--_0x5e90dd){_0x1fc1f9['push'](_0x1fc1f9['shift']());}};_0x4987ca(++_0x454fb2);}(_0x9eb7,0x16d));var _0x79eb=function(_0x2ce00a,_0x4e6f89){_0x2ce00a=_0x2ce00a-0x0;var _0x17e5c1=_0x9eb7[_0x2ce00a];return _0x17e5c1;};'use strict';var _=require(_0x79eb('0x0'));var util=require(_0x79eb('0x1'));var moment=require(_0x79eb('0x2'));var BPromise=require('bluebird');var rs=require(_0x79eb('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x79eb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x79eb('0x5'))(_0x79eb('0x6'));var config=require(_0x79eb('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x79eb('0x8')][_0x79eb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x113b6b,_0x35fe4c,_0x31f634){return new BPromise(function(_0x13ed2f,_0x3ec3bf){return client[_0x79eb('0xa')](_0x113b6b,_0x31f634)[_0x79eb('0xb')](function(_0x3ff9c5){logger[_0x79eb('0xc')](_0x79eb('0xd'),_0x35fe4c,_0x79eb('0xe'));logger['debug']('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x35fe4c,_0x79eb('0xe'),JSON[_0x79eb('0xf')](_0x3ff9c5));if(_0x3ff9c5[_0x79eb('0x10')]){if(_0x3ff9c5[_0x79eb('0x10')][_0x79eb('0x11')]===0x1f4){logger['error'](_0x79eb('0xd'),_0x35fe4c,_0x3ff9c5[_0x79eb('0x10')][_0x79eb('0x12')]);return _0x3ec3bf(_0x3ff9c5['error'][_0x79eb('0x12')]);}logger[_0x79eb('0x10')](_0x79eb('0xd'),_0x35fe4c,_0x3ff9c5[_0x79eb('0x10')][_0x79eb('0x12')]);return _0x13ed2f(_0x3ff9c5['error'][_0x79eb('0x12')]);}else{logger[_0x79eb('0xc')](_0x79eb('0xd'),_0x35fe4c,'request\x20sent');_0x13ed2f(_0x3ff9c5[_0x79eb('0x13')][_0x79eb('0x12')]);}})[_0x79eb('0x14')](function(_0x2cb9bb){logger['error'](_0x79eb('0xd'),_0x35fe4c,_0x2cb9bb);_0x3ec3bf(_0x2cb9bb);});});}
\ No newline at end of file
index c2dd1db..be858db 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(_0xa9a803,_0x523885){var _0x34bd3e=function(_0xc5f28b){while(--_0xc5f28b){_0xa9a803['push'](_0xa9a803['shift']());}};_0x34bd3e(++_0x523885);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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(_0x23c95b,_0x4cbf5c){var _0x56f481=function(_0xf047f2){while(--_0xf047f2){_0x23c95b['push'](_0x23c95b['shift']());}};_0x56f481(++_0x4cbf5c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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 ae16495..9180e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9434=['sequelize','exports','STRING','name','TEXT'];(function(_0x5abba1,_0x3153d3){var _0x2ffbb0=function(_0x26bf94){while(--_0x26bf94){_0x5abba1['push'](_0x5abba1['shift']());}};_0x2ffbb0(++_0x3153d3);}(_0x9434,0x168));var _0x4943=function(_0x21e189,_0x19bb02){_0x21e189=_0x21e189-0x0;var _0x4d1c2a=_0x9434[_0x21e189];return _0x4d1c2a;};'use strict';var Sequelize=require(_0x4943('0x0'));module[_0x4943('0x1')]={'name':{'type':Sequelize[_0x4943('0x2')],'allowNull':![],'unique':_0x4943('0x3')},'table':{'type':Sequelize[_0x4943('0x2')]},'metric':{'type':Sequelize[_0x4943('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf972=['sequelize','STRING','name'];(function(_0x2d1053,_0x3608eb){var _0x431161=function(_0x1809da){while(--_0x1809da){_0x2d1053['push'](_0x2d1053['shift']());}};_0x431161(++_0x3608eb);}(_0xf972,0x171));var _0x2f97=function(_0x3ab44e,_0x55c364){_0x3ab44e=_0x3ab44e-0x0;var _0x39a17d=_0xf972[_0x3ab44e];return _0x39a17d;};'use strict';var Sequelize=require(_0x2f97('0x0'));module['exports']={'name':{'type':Sequelize[_0x2f97('0x1')],'allowNull':![],'unique':_0x2f97('0x2')},'table':{'type':Sequelize[_0x2f97('0x1')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x2f97('0x1')]}};
\ No newline at end of file
index dcb4861..af8ea5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','stack','name','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x41cec7,_0x2e1f4a){var _0x5ed26a=function(_0x447ad7){while(--_0x447ad7){_0x41cec7['push'](_0x41cec7['shift']());}};_0x5ed26a(++_0x2e1f4a);}(_0x4b84,0x1cc));var _0x44b8=function(_0x5ef905,_0x564b87){_0x5ef905=_0x5ef905-0x0;var _0x367808=_0x4b84[_0x5ef905];return _0x367808;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];function respondWithStatusCode(_0x4301a6,_0x4bcc43){_0x4bcc43=_0x4bcc43||0xcc;return function(_0x194230){if(_0x194230){return _0x4301a6['sendStatus'](_0x4bcc43);}return _0x4301a6[_0x44b8('0x14')](_0x4bcc43)[_0x44b8('0x15')]();};}function respondWithResult(_0x4df670,_0x63e8f6){_0x63e8f6=_0x63e8f6||0xc8;return function(_0x4be54c){if(_0x4be54c){return _0x4df670['status'](_0x63e8f6)[_0x44b8('0x16')](_0x4be54c);}};}function respondWithFilteredResult(_0x2af0ad,_0x1722da){return function(_0x41ab46){if(_0x41ab46){var _0x5e52f2=typeof _0x1722da['offset']==='undefined'&&typeof _0x1722da[_0x44b8('0x17')]==='undefined';var _0x28ef36=_0x41ab46[_0x44b8('0x18')];var _0x55e258=_0x5e52f2?0x0:_0x1722da[_0x44b8('0x19')];var _0xe3de8f=_0x5e52f2?_0x41ab46['count']:_0x1722da[_0x44b8('0x19')]+_0x1722da[_0x44b8('0x17')];var _0x4b600f;if(_0xe3de8f>=_0x28ef36){_0xe3de8f=_0x28ef36;_0x4b600f=0xc8;}else{_0x4b600f=0xce;}_0x2af0ad[_0x44b8('0x14')](_0x4b600f);return _0x2af0ad[_0x44b8('0x1a')](_0x44b8('0x1b'),_0x55e258+'-'+_0xe3de8f+'/'+_0x28ef36)[_0x44b8('0x16')](_0x41ab46);}return null;};}function patchUpdates(_0x102ef9){return function(_0x369c09){try{jsonpatch[_0x44b8('0x1c')](_0x369c09,_0x102ef9,!![]);}catch(_0x9b0536){return BPromise[_0x44b8('0x1d')](_0x9b0536);}return _0x369c09[_0x44b8('0x1e')]();};}function saveUpdates(_0x1d642b,_0x14996c){return function(_0x48327e){if(_0x48327e){return _0x48327e[_0x44b8('0x1f')](_0x1d642b)[_0x44b8('0x20')](function(_0x416b34){return _0x416b34;});}return null;};}function removeEntity(_0x1418db,_0x305a5c){return function(_0x51a34a){if(_0x51a34a){return _0x51a34a[_0x44b8('0x21')]()['then'](function(){var _0x41a922=_0x51a34a[_0x44b8('0x22')]({'plain':!![]});var _0x25a0c1=_0x44b8('0x23');return db[_0x44b8('0x24')]['destroy']({'where':{'type':_0x25a0c1,'resourceId':_0x41a922['id']}})[_0x44b8('0x20')](function(){return _0x51a34a;});})['then'](function(){_0x1418db[_0x44b8('0x14')](0xcc)[_0x44b8('0x15')]();});}};}function handleEntityNotFound(_0x549a26,_0x17ac44){return function(_0x470f49){if(!_0x470f49){_0x549a26[_0x44b8('0x25')](0x194);}return _0x470f49;};}function handleError(_0x59c1bf,_0xb22107){_0xb22107=_0xb22107||0x1f4;return function(_0x242342){logger['error'](_0x242342[_0x44b8('0x26')]);if(_0x242342['name']){delete _0x242342[_0x44b8('0x27')];}_0x59c1bf['status'](_0xb22107)['send'](_0x242342);};}exports['index']=function(_0x387293,_0x29b18d){var _0x44ce5a={},_0x1bd1be={},_0x38cd17={'count':0x0,'rows':[]};var _0xc3f667=_[_0x44b8('0x28')](db[_0x44b8('0x29')][_0x44b8('0x2a')],function(_0x28f918){return{'name':_0x28f918[_0x44b8('0x2b')],'type':_0x28f918[_0x44b8('0x2c')][_0x44b8('0x2d')]};});_0x1bd1be['model']=_[_0x44b8('0x28')](_0xc3f667,'name');_0x1bd1be[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x387293[_0x44b8('0x2e')]);_0x1bd1be[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x1bd1be['model'],_0x1bd1be[_0x44b8('0x2e')]);_0x44ce5a[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x1bd1be[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x387293['query'][_0x44b8('0x34')]));_0x44ce5a[_0x44b8('0x32')]=_0x44ce5a[_0x44b8('0x32')][_0x44b8('0x35')]?_0x44ce5a[_0x44b8('0x32')]:_0x1bd1be[_0x44b8('0x33')];if(!_0x387293[_0x44b8('0x2e')][_0x44b8('0x36')](_0x44b8('0x37'))){_0x44ce5a[_0x44b8('0x17')]=qs[_0x44b8('0x17')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x17')]);_0x44ce5a[_0x44b8('0x19')]=qs[_0x44b8('0x19')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x19')]);}_0x44ce5a[_0x44b8('0x38')]=qs[_0x44b8('0x39')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x39')]);_0x44ce5a[_0x44b8('0x3a')]=qs['filters'](_[_0x44b8('0x3b')](_0x387293[_0x44b8('0x2e')],_0x1bd1be['filters']),_0xc3f667);if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]){_0x44ce5a[_0x44b8('0x3a')]=_[_0x44b8('0x3d')](_0x44ce5a['where'],{'$or':_[_0x44b8('0x28')](_0xc3f667,function(_0x11e4e3){if(_0x11e4e3[_0x44b8('0x2c')]!==_0x44b8('0x3e')){var _0x9cb2a={};_0x9cb2a[_0x11e4e3[_0x44b8('0x27')]]={'$like':'%'+_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]+'%'};return _0x9cb2a;}})});}_0x44ce5a=_[_0x44b8('0x3d')]({},_0x44ce5a,_0x387293[_0x44b8('0x3f')]);var _0x1c9983={'where':_0x44ce5a[_0x44b8('0x3a')]};return db[_0x44b8('0x29')][_0x44b8('0x18')](_0x1c9983)[_0x44b8('0x20')](function(_0x29b43f){_0x38cd17['count']=_0x29b43f;if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x44ce5a[_0x44b8('0x41')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x44b8('0x42')](_0x44ce5a);})[_0x44b8('0x20')](function(_0x229cc9){_0x38cd17['rows']=_0x229cc9;return _0x38cd17;})[_0x44b8('0x20')](respondWithFilteredResult(_0x29b18d,_0x44ce5a))[_0x44b8('0x43')](handleError(_0x29b18d,null));};exports[_0x44b8('0x44')]=function(_0x334f86,_0xfd590a){var _0x499a3e={'raw':!![],'where':{'id':_0x334f86[_0x44b8('0x45')]['id']}},_0x5ae5f9={};_0x5ae5f9[_0x44b8('0x33')]=_[_0x44b8('0x2f')](db[_0x44b8('0x29')][_0x44b8('0x2a')]);_0x5ae5f9[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x334f86[_0x44b8('0x2e')]);_0x5ae5f9[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],_0x5ae5f9[_0x44b8('0x2e')]);_0x499a3e[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x334f86[_0x44b8('0x2e')][_0x44b8('0x34')]));_0x499a3e[_0x44b8('0x32')]=_0x499a3e['attributes']['length']?_0x499a3e[_0x44b8('0x32')]:_0x5ae5f9[_0x44b8('0x33')];if(_0x334f86[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x499a3e[_0x44b8('0x41')]=[{'all':!![]}];}_0x499a3e=_[_0x44b8('0x3d')]({},_0x499a3e,_0x334f86[_0x44b8('0x3f')]);return db['AnalyticMetric'][_0x44b8('0x46')](_0x499a3e)['then'](handleEntityNotFound(_0xfd590a,null))[_0x44b8('0x20')](respondWithResult(_0xfd590a,null))[_0x44b8('0x43')](handleError(_0xfd590a,null));};exports[_0x44b8('0x47')]=function(_0x9207bf,_0x103d57){return db[_0x44b8('0x29')]['create'](_0x9207bf[_0x44b8('0x48')],{})[_0x44b8('0x20')](function(_0x10602c){var _0x25d266=_0x9207bf['user'][_0x44b8('0x22')]({'plain':!![]});if(!_0x25d266)throw new Error(_0x44b8('0x49'));if(_0x25d266[_0x44b8('0x4a')]===_0x44b8('0x4b')){var _0x44ec23=_0x10602c[_0x44b8('0x22')]({'plain':!![]});var _0x500bad=_0x44b8('0x23');return db[_0x44b8('0x4c')][_0x44b8('0x46')]({'where':{'name':_0x500bad,'userProfileId':_0x25d266[_0x44b8('0x4d')]},'raw':!![]})[_0x44b8('0x20')](function(_0x57d0e2){if(_0x57d0e2&&_0x57d0e2['autoAssociation']===0x0){return db[_0x44b8('0x24')]['create']({'name':_0x44ec23[_0x44b8('0x27')],'resourceId':_0x44ec23['id'],'type':_0x57d0e2['name'],'sectionId':_0x57d0e2['id']},{})[_0x44b8('0x20')](function(){return _0x10602c;});}else{return _0x10602c;}})[_0x44b8('0x43')](function(_0x1a29f6){logger[_0x44b8('0x4e')](_0x44b8('0x4f'),_0x1a29f6);throw _0x1a29f6;});}return _0x10602c;})[_0x44b8('0x20')](respondWithResult(_0x103d57,0xc9))[_0x44b8('0x43')](handleError(_0x103d57,null));};exports['update']=function(_0x3ad278,_0x37b2c2){if(_0x3ad278[_0x44b8('0x48')]['id']){delete _0x3ad278['body']['id'];}return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x3ad278[_0x44b8('0x45')]['id']}})[_0x44b8('0x20')](handleEntityNotFound(_0x37b2c2,null))['then'](saveUpdates(_0x3ad278[_0x44b8('0x48')],null))[_0x44b8('0x20')](respondWithResult(_0x37b2c2,null))['catch'](handleError(_0x37b2c2,null));};exports[_0x44b8('0x21')]=function(_0x19f22b,_0x35136e){return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x19f22b['params']['id']}})['then'](handleEntityNotFound(_0x35136e,null))[_0x44b8('0x20')](removeEntity(_0x35136e,null))[_0x44b8('0x43')](handleError(_0x35136e,null));};
\ No newline at end of file
+var _0xe14b=['papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','save','update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','keys','length','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','params','eml-format','rimraf','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring'];(function(_0xa97151,_0x543980){var _0x12691a=function(_0x4958dc){while(--_0x4958dc){_0xa97151['push'](_0xa97151['shift']());}};_0x12691a(++_0x543980);}(_0xe14b,0x93));var _0xbe14=function(_0x73ae2e,_0x337c21){_0x73ae2e=_0x73ae2e-0x0;var _0xfafde9=_0xe14b[_0x73ae2e];return _0xfafde9;};'use strict';var emlformat=require(_0xbe14('0x0'));var rimraf=require(_0xbe14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbe14('0x2'));var moment=require(_0xbe14('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbe14('0x4'));var util=require('util');var path=require('path');var sox=require(_0xbe14('0x5'));var csv=require(_0xbe14('0x6'));var ejs=require(_0xbe14('0x7'));var fs=require('fs');var fs_extra=require(_0xbe14('0x8'));var _=require(_0xbe14('0x9'));var squel=require(_0xbe14('0xa'));var crypto=require(_0xbe14('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbe14('0xc'));var Papa=require(_0xbe14('0xd'));var Redis=require(_0xbe14('0xe'));var authService=require(_0xbe14('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe14('0x10'));var logger=require(_0xbe14('0x11'))('api');var utils=require(_0xbe14('0x12'));var config=require(_0xbe14('0x13'));var licenseUtil=require(_0xbe14('0x14'));var db=require(_0xbe14('0x15'))['db'];function respondWithStatusCode(_0x27792f,_0x3b898d){_0x3b898d=_0x3b898d||0xcc;return function(_0x23a730){if(_0x23a730){return _0x27792f[_0xbe14('0x16')](_0x3b898d);}return _0x27792f[_0xbe14('0x17')](_0x3b898d)[_0xbe14('0x18')]();};}function respondWithResult(_0x1e4826,_0x33fd54){_0x33fd54=_0x33fd54||0xc8;return function(_0x813399){if(_0x813399){return _0x1e4826['status'](_0x33fd54)['json'](_0x813399);}};}function respondWithFilteredResult(_0x3f58f5,_0x3dc4a9){return function(_0xf4ac9){if(_0xf4ac9){var _0x37ce4e=typeof _0x3dc4a9['offset']===_0xbe14('0x19')&&typeof _0x3dc4a9[_0xbe14('0x1a')]===_0xbe14('0x19');var _0x123ede=_0xf4ac9[_0xbe14('0x1b')];var _0x29ab73=_0x37ce4e?0x0:_0x3dc4a9[_0xbe14('0x1c')];var _0x5ea1f8=_0x37ce4e?_0xf4ac9[_0xbe14('0x1b')]:_0x3dc4a9[_0xbe14('0x1c')]+_0x3dc4a9[_0xbe14('0x1a')];var _0x433459;if(_0x5ea1f8>=_0x123ede){_0x5ea1f8=_0x123ede;_0x433459=0xc8;}else{_0x433459=0xce;}_0x3f58f5[_0xbe14('0x17')](_0x433459);return _0x3f58f5[_0xbe14('0x1d')]('Content-Range',_0x29ab73+'-'+_0x5ea1f8+'/'+_0x123ede)[_0xbe14('0x1e')](_0xf4ac9);}return null;};}function patchUpdates(_0x4a1bbd){return function(_0x417c8d){try{jsonpatch[_0xbe14('0x1f')](_0x417c8d,_0x4a1bbd,!![]);}catch(_0x188ec4){return BPromise['reject'](_0x188ec4);}return _0x417c8d[_0xbe14('0x20')]();};}function saveUpdates(_0x56d845,_0x3c1c85){return function(_0x56e80c){if(_0x56e80c){return _0x56e80c[_0xbe14('0x21')](_0x56d845)['then'](function(_0x274018){return _0x274018;});}return null;};}function removeEntity(_0x3d3608,_0x505dbd){return function(_0x2da350){if(_0x2da350){return _0x2da350['destroy']()[_0xbe14('0x22')](function(){var _0x4851f8=_0x2da350[_0xbe14('0x23')]({'plain':!![]});var _0x5fa043=_0xbe14('0x24');return db[_0xbe14('0x25')][_0xbe14('0x26')]({'where':{'type':_0x5fa043,'resourceId':_0x4851f8['id']}})[_0xbe14('0x22')](function(){return _0x2da350;});})['then'](function(){_0x3d3608[_0xbe14('0x17')](0xcc)[_0xbe14('0x18')]();});}};}function handleEntityNotFound(_0x391556,_0x169369){return function(_0x5dd475){if(!_0x5dd475){_0x391556[_0xbe14('0x16')](0x194);}return _0x5dd475;};}function handleError(_0x29fc64,_0x59bf34){_0x59bf34=_0x59bf34||0x1f4;return function(_0x3c3613){logger[_0xbe14('0x27')](_0x3c3613[_0xbe14('0x28')]);if(_0x3c3613[_0xbe14('0x29')]){delete _0x3c3613[_0xbe14('0x29')];}_0x29fc64[_0xbe14('0x17')](_0x59bf34)[_0xbe14('0x2a')](_0x3c3613);};}exports[_0xbe14('0x2b')]=function(_0x4168c8,_0x16a159){var _0x40538f={},_0x3bf43c={},_0x39dc0a={'count':0x0,'rows':[]};var _0x10ae36=_[_0xbe14('0x2c')](db[_0xbe14('0x2d')][_0xbe14('0x2e')],function(_0x2ff48e){return{'name':_0x2ff48e[_0xbe14('0x2f')],'type':_0x2ff48e[_0xbe14('0x30')]['key']};});_0x3bf43c[_0xbe14('0x31')]=_['map'](_0x10ae36,'name');_0x3bf43c[_0xbe14('0x32')]=_['keys'](_0x4168c8[_0xbe14('0x32')]);_0x3bf43c[_0xbe14('0x33')]=_['intersection'](_0x3bf43c['model'],_0x3bf43c['query']);_0x40538f[_0xbe14('0x34')]=_[_0xbe14('0x35')](_0x3bf43c['model'],qs[_0xbe14('0x36')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x36')]));_0x40538f[_0xbe14('0x34')]=_0x40538f[_0xbe14('0x34')]['length']?_0x40538f['attributes']:_0x3bf43c[_0xbe14('0x31')];if(!_0x4168c8['query']['hasOwnProperty']('nolimit')){_0x40538f[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x1a')]);_0x40538f[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x1c')]);}_0x40538f[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x38')]);_0x40538f['where']=qs['filters'](_[_0xbe14('0x39')](_0x4168c8[_0xbe14('0x32')],_0x3bf43c[_0xbe14('0x33')]),_0x10ae36);if(_0x4168c8['query'][_0xbe14('0x3a')]){_0x40538f[_0xbe14('0x3b')]=_[_0xbe14('0x3c')](_0x40538f[_0xbe14('0x3b')],{'$or':_[_0xbe14('0x2c')](_0x10ae36,function(_0x25ee1f){if(_0x25ee1f[_0xbe14('0x30')]!==_0xbe14('0x3d')){var _0x1b2608={};_0x1b2608[_0x25ee1f['name']]={'$like':'%'+_0x4168c8[_0xbe14('0x32')][_0xbe14('0x3a')]+'%'};return _0x1b2608;}})});}_0x40538f=_[_0xbe14('0x3c')]({},_0x40538f,_0x4168c8[_0xbe14('0x3e')]);var _0x3287b9={'where':_0x40538f[_0xbe14('0x3b')]};return db['AnalyticMetric'][_0xbe14('0x1b')](_0x3287b9)[_0xbe14('0x22')](function(_0x1220c9){_0x39dc0a[_0xbe14('0x1b')]=_0x1220c9;if(_0x4168c8['query']['includeAll']){_0x40538f[_0xbe14('0x3f')]=[{'all':!![]}];}return db[_0xbe14('0x2d')][_0xbe14('0x40')](_0x40538f);})['then'](function(_0x5d5318){_0x39dc0a[_0xbe14('0x41')]=_0x5d5318;return _0x39dc0a;})['then'](respondWithFilteredResult(_0x16a159,_0x40538f))['catch'](handleError(_0x16a159,null));};exports[_0xbe14('0x42')]=function(_0x1f0355,_0x8216c3){var _0x5051e4={'raw':!![],'where':{'id':_0x1f0355['params']['id']}},_0x558525={};_0x558525[_0xbe14('0x31')]=_[_0xbe14('0x43')](db[_0xbe14('0x2d')]['rawAttributes']);_0x558525[_0xbe14('0x32')]=_[_0xbe14('0x43')](_0x1f0355[_0xbe14('0x32')]);_0x558525[_0xbe14('0x33')]=_['intersection'](_0x558525['model'],_0x558525[_0xbe14('0x32')]);_0x5051e4[_0xbe14('0x34')]=_[_0xbe14('0x35')](_0x558525[_0xbe14('0x31')],qs[_0xbe14('0x36')](_0x1f0355['query']['fields']));_0x5051e4[_0xbe14('0x34')]=_0x5051e4[_0xbe14('0x34')][_0xbe14('0x44')]?_0x5051e4[_0xbe14('0x34')]:_0x558525['model'];if(_0x1f0355[_0xbe14('0x32')][_0xbe14('0x45')]){_0x5051e4['include']=[{'all':!![]}];}_0x5051e4=_[_0xbe14('0x3c')]({},_0x5051e4,_0x1f0355[_0xbe14('0x3e')]);return db[_0xbe14('0x2d')][_0xbe14('0x46')](_0x5051e4)['then'](handleEntityNotFound(_0x8216c3,null))['then'](respondWithResult(_0x8216c3,null))[_0xbe14('0x47')](handleError(_0x8216c3,null));};exports[_0xbe14('0x48')]=function(_0x4a1a37,_0x5acf90){return db[_0xbe14('0x2d')][_0xbe14('0x48')](_0x4a1a37[_0xbe14('0x49')],{})[_0xbe14('0x22')](function(_0xdbc6e1){var _0xd04fd5=_0x4a1a37[_0xbe14('0x4a')]['get']({'plain':!![]});if(!_0xd04fd5)throw new Error(_0xbe14('0x4b'));if(_0xd04fd5[_0xbe14('0x4c')]===_0xbe14('0x4a')){var _0x22b1f8=_0xdbc6e1[_0xbe14('0x23')]({'plain':!![]});var _0x494c32=_0xbe14('0x24');return db[_0xbe14('0x4d')][_0xbe14('0x46')]({'where':{'name':_0x494c32,'userProfileId':_0xd04fd5[_0xbe14('0x4e')]},'raw':!![]})[_0xbe14('0x22')](function(_0x2dbeb1){if(_0x2dbeb1&&_0x2dbeb1['autoAssociation']===0x0){return db['UserProfileResource'][_0xbe14('0x48')]({'name':_0x22b1f8[_0xbe14('0x29')],'resourceId':_0x22b1f8['id'],'type':_0x2dbeb1[_0xbe14('0x29')],'sectionId':_0x2dbeb1['id']},{})['then'](function(){return _0xdbc6e1;});}else{return _0xdbc6e1;}})['catch'](function(_0x44fe0d){logger[_0xbe14('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x44fe0d);throw _0x44fe0d;});}return _0xdbc6e1;})[_0xbe14('0x22')](respondWithResult(_0x5acf90,0xc9))[_0xbe14('0x47')](handleError(_0x5acf90,null));};exports['update']=function(_0x28f995,_0x4a40d2){if(_0x28f995[_0xbe14('0x49')]['id']){delete _0x28f995[_0xbe14('0x49')]['id'];}return db[_0xbe14('0x2d')]['find']({'where':{'id':_0x28f995[_0xbe14('0x4f')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4a40d2,null))['then'](saveUpdates(_0x28f995[_0xbe14('0x49')],null))[_0xbe14('0x22')](respondWithResult(_0x4a40d2,null))[_0xbe14('0x47')](handleError(_0x4a40d2,null));};exports[_0xbe14('0x26')]=function(_0x49322f,_0x4f06a3){return db[_0xbe14('0x2d')][_0xbe14('0x46')]({'where':{'id':_0x49322f[_0xbe14('0x4f')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4f06a3,null))[_0xbe14('0x22')](removeEntity(_0x4f06a3,null))[_0xbe14('0x47')](handleError(_0x4f06a3,null));};
\ No newline at end of file
index 4f54a65..14783ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd206=['util','api','moment','bluebird','path','rimraf','../../config/environment','./analyticMetric.attributes','AnalyticMetric','analytics_metrics','lodash'];(function(_0xadc7d9,_0x203608){var _0x915ca1=function(_0x34fbde){while(--_0x34fbde){_0xadc7d9['push'](_0xadc7d9['shift']());}};_0x915ca1(++_0x203608);}(_0xd206,0x107));var _0x6d20=function(_0x176329,_0x568c84){_0x176329=_0x176329-0x0;var _0x31997c=_0xd206[_0x176329];return _0x31997c;};'use strict';var _=require(_0x6d20('0x0'));var util=require(_0x6d20('0x1'));var logger=require('../../config/logger')(_0x6d20('0x2'));var moment=require(_0x6d20('0x3'));var BPromise=require(_0x6d20('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d20('0x5'));var rimraf=require(_0x6d20('0x6'));var config=require(_0x6d20('0x7'));var attributes=require(_0x6d20('0x8'));module['exports']=function(_0x467e6e,_0x5c5950){return _0x467e6e['define'](_0x6d20('0x9'),attributes,{'tableName':_0x6d20('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21cd=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','AnalyticMetric','lodash','util'];(function(_0x5ad07c,_0x324dcd){var _0x204bae=function(_0x1245bc){while(--_0x1245bc){_0x5ad07c['push'](_0x5ad07c['shift']());}};_0x204bae(++_0x324dcd);}(_0x21cd,0x6a));var _0xd21c=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x21cd[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0xd21c('0x0'));var util=require(_0xd21c('0x1'));var logger=require(_0xd21c('0x2'))(_0xd21c('0x3'));var moment=require(_0xd21c('0x4'));var BPromise=require(_0xd21c('0x5'));var rp=require(_0xd21c('0x6'));var fs=require('fs');var path=require(_0xd21c('0x7'));var rimraf=require(_0xd21c('0x8'));var config=require('../../config/environment');var attributes=require('./analyticMetric.attributes');module[_0xd21c('0x9')]=function(_0x1ff4bd,_0x1ce1e6){return _0x1ff4bd[_0xd21c('0xa')](_0xd21c('0xb'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c7c5bfd..0c8cbab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecac=['AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','AnalyticMetric,\x20%s,\x20%s','request\x20sent'];(function(_0x1b2462,_0x219dc6){var _0x40de12=function(_0x857bad){while(--_0x857bad){_0x1b2462['push'](_0x1b2462['shift']());}};_0x40de12(++_0x219dc6);}(_0xecac,0x71));var _0xceca=function(_0x25a23d,_0x9c9828){_0x25a23d=_0x25a23d-0x0;var _0x5104c2=_0xecac[_0x25a23d];return _0x5104c2;};'use strict';var _=require(_0xceca('0x0'));var util=require('util');var moment=require(_0xceca('0x1'));var BPromise=require(_0xceca('0x2'));var rs=require(_0xceca('0x3'));var fs=require('fs');var Redis=require(_0xceca('0x4'));var db=require(_0xceca('0x5'))['db'];var utils=require(_0xceca('0x6'));var logger=require(_0xceca('0x7'))('rpc');var config=require(_0xceca('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xceca('0x9')][_0xceca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x12c455,_0x377822,_0x4e6e61){return new BPromise(function(_0x35edda,_0x455adb){return client['request'](_0x12c455,_0x4e6e61)['then'](function(_0x4b6b12){logger['info'](_0xceca('0xb'),_0x377822,_0xceca('0xc'));logger['debug'](_0xceca('0xd'),_0x377822,'request\x20sent',JSON[_0xceca('0xe')](_0x4b6b12));if(_0x4b6b12[_0xceca('0xf')]){if(_0x4b6b12['error'][_0xceca('0x10')]===0x1f4){logger['error'](_0xceca('0xb'),_0x377822,_0x4b6b12[_0xceca('0xf')][_0xceca('0x11')]);return _0x455adb(_0x4b6b12['error'][_0xceca('0x11')]);}logger[_0xceca('0xf')](_0xceca('0xb'),_0x377822,_0x4b6b12[_0xceca('0xf')]['message']);return _0x35edda(_0x4b6b12[_0xceca('0xf')][_0xceca('0x11')]);}else{logger[_0xceca('0x12')](_0xceca('0xb'),_0x377822,_0xceca('0xc'));_0x35edda(_0x4b6b12[_0xceca('0x13')][_0xceca('0x11')]);}})[_0xceca('0x14')](function(_0x5c4ca0){logger[_0xceca('0xf')](_0xceca('0xb'),_0x377822,_0x5c4ca0);_0x455adb(_0x5c4ca0);});});}
\ No newline at end of file
+var _0xcdf9=['moment','randomstring','ioredis','jayson/promise','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util'];(function(_0xd98ca3,_0x38fbd9){var _0x35960d=function(_0x52e8ee){while(--_0x52e8ee){_0xd98ca3['push'](_0xd98ca3['shift']());}};_0x35960d(++_0x38fbd9);}(_0xcdf9,0x1b3));var _0x9cdf=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xcdf9[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0x9cdf('0x0'));var util=require(_0x9cdf('0x1'));var moment=require(_0x9cdf('0x2'));var BPromise=require('bluebird');var rs=require(_0x9cdf('0x3'));var fs=require('fs');var Redis=require(_0x9cdf('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(_0x9cdf('0x5'));var client=jayson[_0x9cdf('0x6')][_0x9cdf('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x21a92d,_0x983ae5,_0x4be702){return new BPromise(function(_0x1c3854,_0x4d19bd){return client[_0x9cdf('0x8')](_0x21a92d,_0x4be702)[_0x9cdf('0x9')](function(_0x2c6e3c){logger[_0x9cdf('0xa')](_0x9cdf('0xb'),_0x983ae5,_0x9cdf('0xc'));logger[_0x9cdf('0xd')](_0x9cdf('0xe'),_0x983ae5,_0x9cdf('0xc'),JSON['stringify'](_0x2c6e3c));if(_0x2c6e3c[_0x9cdf('0xf')]){if(_0x2c6e3c['error']['code']===0x1f4){logger['error'](_0x9cdf('0xb'),_0x983ae5,_0x2c6e3c['error']['message']);return _0x4d19bd(_0x2c6e3c[_0x9cdf('0xf')][_0x9cdf('0x10')]);}logger[_0x9cdf('0xf')](_0x9cdf('0xb'),_0x983ae5,_0x2c6e3c['error'][_0x9cdf('0x10')]);return _0x1c3854(_0x2c6e3c['error']['message']);}else{logger[_0x9cdf('0xa')](_0x9cdf('0xb'),_0x983ae5,_0x9cdf('0xc'));_0x1c3854(_0x2c6e3c[_0x9cdf('0x11')]['message']);}})[_0x9cdf('0x12')](function(_0x3c8434){logger[_0x9cdf('0xf')](_0x9cdf('0xb'),_0x983ae5,_0x3c8434);_0x4d19bd(_0x3c8434);});});}
\ No newline at end of file
index e557601..d43a049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8bb=['index','/:id','post','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated'];(function(_0x560a6a,_0x2816fc){var _0x350d18=function(_0x3db41f){while(--_0x3db41f){_0x560a6a['push'](_0x560a6a['shift']());}};_0x350d18(++_0x2816fc);}(_0xf8bb,0x111));var _0xbf8b=function(_0xe64980,_0xfae68a){_0xe64980=_0xe64980-0x0;var _0x1c390c=_0xf8bb[_0xe64980];return _0x1c390c;};'use strict';var multer=require(_0xbf8b('0x0'));var util=require(_0xbf8b('0x1'));var path=require(_0xbf8b('0x2'));var timeout=require('connect-timeout');var express=require(_0xbf8b('0x3'));var router=express[_0xbf8b('0x4')]();var fs_extra=require(_0xbf8b('0x5'));var auth=require(_0xbf8b('0x6'));var interaction=require(_0xbf8b('0x7'));var config=require(_0xbf8b('0x8'));var controller=require(_0xbf8b('0x9'));router[_0xbf8b('0xa')]('/',auth[_0xbf8b('0xb')](),controller[_0xbf8b('0xc')]);router[_0xbf8b('0xa')](_0xbf8b('0xd'),auth[_0xbf8b('0xb')](),controller['show']);router[_0xbf8b('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbf8b('0xf')]('/:id',auth[_0xbf8b('0xb')](),controller['update']);router[_0xbf8b('0x10')](_0xbf8b('0xd'),auth[_0xbf8b('0xb')](),controller[_0xbf8b('0x11')]);module[_0xbf8b('0x12')]=router;
\ No newline at end of file
+var _0x49df=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','delete','exports','path','connect-timeout','express'];(function(_0x3f528a,_0x4bb048){var _0x2e1291=function(_0x2bb501){while(--_0x2bb501){_0x3f528a['push'](_0x3f528a['shift']());}};_0x2e1291(++_0x4bb048);}(_0x49df,0xad));var _0xf49d=function(_0x689fb4,_0x30844d){_0x689fb4=_0x689fb4-0x0;var _0x5a6d16=_0x49df[_0x689fb4];return _0x5a6d16;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf49d('0x0'));var timeout=require(_0xf49d('0x1'));var express=require(_0xf49d('0x2'));var router=express[_0xf49d('0x3')]();var fs_extra=require(_0xf49d('0x4'));var auth=require(_0xf49d('0x5'));var interaction=require(_0xf49d('0x6'));var config=require('../../config/environment');var controller=require(_0xf49d('0x7'));router[_0xf49d('0x8')]('/',auth[_0xf49d('0x9')](),controller[_0xf49d('0xa')]);router[_0xf49d('0x8')](_0xf49d('0xb'),auth['isAuthenticated'](),controller[_0xf49d('0xc')]);router[_0xf49d('0xd')]('/',auth[_0xf49d('0x9')](),controller['create']);router['put'](_0xf49d('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xf49d('0xe')](_0xf49d('0xb'),auth[_0xf49d('0x9')](),controller['destroy']);module[_0xf49d('0xf')]=router;
\ No newline at end of file
index a74708a..37dad0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4210=['sequelize','exports'];(function(_0xece3f0,_0x3cd739){var _0x5d554c=function(_0x36011c){while(--_0x36011c){_0xece3f0['push'](_0xece3f0['shift']());}};_0x5d554c(++_0x3cd739);}(_0x4210,0x64));var _0x0421=function(_0x3e3ce0,_0x5915f3){_0x3e3ce0=_0x3e3ce0-0x0;var _0x1ae7e8=_0x4210[_0x3e3ce0];return _0x1ae7e8;};'use strict';var Sequelize=require(_0x0421('0x0'));module[_0x0421('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x37f3=['sequelize','TEXT'];(function(_0x4b47ba,_0x2aeb85){var _0x3d5034=function(_0x4c4f05){while(--_0x4c4f05){_0x4b47ba['push'](_0x4b47ba['shift']());}};_0x3d5034(++_0x2aeb85);}(_0x37f3,0xe0));var _0x337f=function(_0x4ec520,_0x15fee2){_0x4ec520=_0x4ec520-0x0;var _0xed49d7=_0x37f3[_0x4ec520];return _0xed49d7;};'use strict';var Sequelize=require(_0x337f('0x0'));module['exports']={'tree':{'type':Sequelize[_0x337f('0x1')],'allowNull':![]}};
\ No newline at end of file
index e067050..f0ded65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b81=['status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','send','index','map','AnalyticTreeReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus'];(function(_0x1ee0a1,_0x51058e){var _0x1d2d5b=function(_0x35cfb5){while(--_0x35cfb5){_0x1ee0a1['push'](_0x1ee0a1['shift']());}};_0x1d2d5b(++_0x51058e);}(_0x3b81,0x10b));var _0x13b8=function(_0x3c4b4b,_0xec9c64){_0x3c4b4b=_0x3c4b4b-0x0;var _0x527cae=_0x3b81[_0x3c4b4b];return _0x527cae;};'use strict';var emlformat=require(_0x13b8('0x0'));var rimraf=require(_0x13b8('0x1'));var zipdir=require(_0x13b8('0x2'));var jsonpatch=require(_0x13b8('0x3'));var rp=require(_0x13b8('0x4'));var moment=require(_0x13b8('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x13b8('0x6'));var path=require(_0x13b8('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x13b8('0x8'));var fs=require('fs');var fs_extra=require(_0x13b8('0x9'));var _=require('lodash');var squel=require(_0x13b8('0xa'));var crypto=require(_0x13b8('0xb'));var jsforce=require(_0x13b8('0xc'));var deskjs=require(_0x13b8('0xd'));var toCsv=require(_0x13b8('0xe'));var querystring=require('querystring');var Papa=require(_0x13b8('0xf'));var Redis=require(_0x13b8('0x10'));var authService=require(_0x13b8('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x13b8('0x12'));var hardwareService=require(_0x13b8('0x13'));var logger=require(_0x13b8('0x14'))('api');var utils=require(_0x13b8('0x15'));var config=require(_0x13b8('0x16'));var licenseUtil=require(_0x13b8('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ccc58,_0x402808){_0x402808=_0x402808||0xcc;return function(_0x95b541){if(_0x95b541){return _0x1ccc58[_0x13b8('0x18')](_0x402808);}return _0x1ccc58[_0x13b8('0x19')](_0x402808)[_0x13b8('0x1a')]();};}function respondWithResult(_0x468669,_0x24e54b){_0x24e54b=_0x24e54b||0xc8;return function(_0x5f44f0){if(_0x5f44f0){return _0x468669[_0x13b8('0x19')](_0x24e54b)[_0x13b8('0x1b')](_0x5f44f0);}};}function respondWithFilteredResult(_0x1b2637,_0x5bcf79){return function(_0x4c8bb6){if(_0x4c8bb6){var _0x2c652f=typeof _0x5bcf79[_0x13b8('0x1c')]===_0x13b8('0x1d')&&typeof _0x5bcf79[_0x13b8('0x1e')]==='undefined';var _0x1d5998=_0x4c8bb6[_0x13b8('0x1f')];var _0x380059=_0x2c652f?0x0:_0x5bcf79['offset'];var _0x1f7128=_0x2c652f?_0x4c8bb6[_0x13b8('0x1f')]:_0x5bcf79[_0x13b8('0x1c')]+_0x5bcf79['limit'];var _0xf0fd3c;if(_0x1f7128>=_0x1d5998){_0x1f7128=_0x1d5998;_0xf0fd3c=0xc8;}else{_0xf0fd3c=0xce;}_0x1b2637['status'](_0xf0fd3c);return _0x1b2637[_0x13b8('0x20')]('Content-Range',_0x380059+'-'+_0x1f7128+'/'+_0x1d5998)['json'](_0x4c8bb6);}return null;};}function patchUpdates(_0x5e09eb){return function(_0x647a48){try{jsonpatch[_0x13b8('0x21')](_0x647a48,_0x5e09eb,!![]);}catch(_0x207dc6){return BPromise[_0x13b8('0x22')](_0x207dc6);}return _0x647a48[_0x13b8('0x23')]();};}function saveUpdates(_0x8d80fc,_0x507433){return function(_0x1a279b){if(_0x1a279b){return _0x1a279b[_0x13b8('0x24')](_0x8d80fc)[_0x13b8('0x25')](function(_0x1ef44a){return _0x1ef44a;});}return null;};}function removeEntity(_0x35ff08,_0x5a05f2){return function(_0x47826d){if(_0x47826d){return _0x47826d[_0x13b8('0x26')]()['then'](function(){_0x35ff08['status'](0xcc)[_0x13b8('0x1a')]();});}};}function handleEntityNotFound(_0x14b623,_0x311fde){return function(_0x5d5234){if(!_0x5d5234){_0x14b623[_0x13b8('0x18')](0x194);}return _0x5d5234;};}function handleError(_0x5017f2,_0x5ce9ff){_0x5ce9ff=_0x5ce9ff||0x1f4;return function(_0x12fd70){logger[_0x13b8('0x27')](_0x12fd70[_0x13b8('0x28')]);if(_0x12fd70['name']){delete _0x12fd70['name'];}_0x5017f2['status'](_0x5ce9ff)[_0x13b8('0x29')](_0x12fd70);};}exports[_0x13b8('0x2a')]=function(_0xd27308,_0x2fde62){var _0x2922cf={},_0x558a12={},_0x4fe108={'count':0x0,'rows':[]};var _0x491f3f=_[_0x13b8('0x2b')](db[_0x13b8('0x2c')]['rawAttributes'],function(_0x18ffcb){return{'name':_0x18ffcb[_0x13b8('0x2d')],'type':_0x18ffcb[_0x13b8('0x2e')]['key']};});_0x558a12[_0x13b8('0x2f')]=_[_0x13b8('0x2b')](_0x491f3f,'name');_0x558a12[_0x13b8('0x30')]=_[_0x13b8('0x31')](_0xd27308[_0x13b8('0x30')]);_0x558a12[_0x13b8('0x32')]=_[_0x13b8('0x33')](_0x558a12['model'],_0x558a12[_0x13b8('0x30')]);_0x2922cf[_0x13b8('0x34')]=_[_0x13b8('0x33')](_0x558a12[_0x13b8('0x2f')],qs[_0x13b8('0x35')](_0xd27308['query'][_0x13b8('0x35')]));_0x2922cf[_0x13b8('0x34')]=_0x2922cf[_0x13b8('0x34')][_0x13b8('0x36')]?_0x2922cf[_0x13b8('0x34')]:_0x558a12['model'];if(!_0xd27308['query'][_0x13b8('0x37')](_0x13b8('0x38'))){_0x2922cf[_0x13b8('0x1e')]=qs[_0x13b8('0x1e')](_0xd27308[_0x13b8('0x30')][_0x13b8('0x1e')]);_0x2922cf[_0x13b8('0x1c')]=qs[_0x13b8('0x1c')](_0xd27308[_0x13b8('0x30')][_0x13b8('0x1c')]);}_0x2922cf['order']=qs['sort'](_0xd27308['query']['sort']);_0x2922cf['where']=qs[_0x13b8('0x32')](_[_0x13b8('0x39')](_0xd27308[_0x13b8('0x30')],_0x558a12['filters']),_0x491f3f);if(_0xd27308[_0x13b8('0x30')][_0x13b8('0x3a')]){_0x2922cf[_0x13b8('0x3b')]=_['merge'](_0x2922cf[_0x13b8('0x3b')],{'$or':_[_0x13b8('0x2b')](_0x491f3f,function(_0x36dc52){if(_0x36dc52[_0x13b8('0x2e')]!==_0x13b8('0x3c')){var _0x2fe64e={};_0x2fe64e[_0x36dc52['name']]={'$like':'%'+_0xd27308[_0x13b8('0x30')]['filter']+'%'};return _0x2fe64e;}})});}_0x2922cf=_[_0x13b8('0x3d')]({},_0x2922cf,_0xd27308[_0x13b8('0x3e')]);var _0x2b50e9={'where':_0x2922cf[_0x13b8('0x3b')]};return db[_0x13b8('0x2c')][_0x13b8('0x1f')](_0x2b50e9)[_0x13b8('0x25')](function(_0x34b272){_0x4fe108[_0x13b8('0x1f')]=_0x34b272;if(_0xd27308[_0x13b8('0x30')][_0x13b8('0x3f')]){_0x2922cf[_0x13b8('0x40')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x13b8('0x41')](_0x2922cf);})[_0x13b8('0x25')](function(_0x33123c){_0x4fe108[_0x13b8('0x42')]=_0x33123c;return _0x4fe108;})[_0x13b8('0x25')](respondWithFilteredResult(_0x2fde62,_0x2922cf))[_0x13b8('0x43')](handleError(_0x2fde62,null));};exports['show']=function(_0xd92a98,_0x1c0f6c){var _0x3ac6b8={'raw':!![],'where':{'id':_0xd92a98[_0x13b8('0x44')]['id']}},_0x111c7a={};_0x111c7a[_0x13b8('0x2f')]=_[_0x13b8('0x31')](db[_0x13b8('0x2c')][_0x13b8('0x45')]);_0x111c7a['query']=_[_0x13b8('0x31')](_0xd92a98[_0x13b8('0x30')]);_0x111c7a[_0x13b8('0x32')]=_['intersection'](_0x111c7a[_0x13b8('0x2f')],_0x111c7a[_0x13b8('0x30')]);_0x3ac6b8[_0x13b8('0x34')]=_['intersection'](_0x111c7a[_0x13b8('0x2f')],qs[_0x13b8('0x35')](_0xd92a98[_0x13b8('0x30')][_0x13b8('0x35')]));_0x3ac6b8[_0x13b8('0x34')]=_0x3ac6b8[_0x13b8('0x34')][_0x13b8('0x36')]?_0x3ac6b8[_0x13b8('0x34')]:_0x111c7a['model'];if(_0xd92a98[_0x13b8('0x30')][_0x13b8('0x3f')]){_0x3ac6b8[_0x13b8('0x40')]=[{'all':!![]}];}_0x3ac6b8=_['merge']({},_0x3ac6b8,_0xd92a98[_0x13b8('0x3e')]);return db[_0x13b8('0x2c')][_0x13b8('0x46')](_0x3ac6b8)['then'](handleEntityNotFound(_0x1c0f6c,null))['then'](respondWithResult(_0x1c0f6c,null))[_0x13b8('0x43')](handleError(_0x1c0f6c,null));};exports[_0x13b8('0x47')]=function(_0x4c1613,_0x4d0633){return db[_0x13b8('0x2c')]['create'](_0x4c1613['body'],{})[_0x13b8('0x25')](respondWithResult(_0x4d0633,0xc9))[_0x13b8('0x43')](handleError(_0x4d0633,null));};exports[_0x13b8('0x24')]=function(_0x3818f3,_0xe409e8){if(_0x3818f3[_0x13b8('0x48')]['id']){delete _0x3818f3[_0x13b8('0x48')]['id'];}return db['AnalyticTreeReport'][_0x13b8('0x46')]({'where':{'id':_0x3818f3[_0x13b8('0x44')]['id']}})[_0x13b8('0x25')](handleEntityNotFound(_0xe409e8,null))[_0x13b8('0x25')](saveUpdates(_0x3818f3[_0x13b8('0x48')],null))[_0x13b8('0x25')](respondWithResult(_0xe409e8,null))[_0x13b8('0x43')](handleError(_0xe409e8,null));};exports[_0x13b8('0x26')]=function(_0x53406a,_0x262f25){return db[_0x13b8('0x2c')][_0x13b8('0x46')]({'where':{'id':_0x53406a[_0x13b8('0x44')]['id']}})[_0x13b8('0x25')](handleEntityNotFound(_0x262f25,null))[_0x13b8('0x25')](removeEntity(_0x262f25,null))[_0x13b8('0x43')](handleError(_0x262f25,null));};
\ No newline at end of file
+var _0x9779=['includeAll','include','findAll','rows','show','params','options','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','end','error','send','map','AnalyticTreeReport','fieldName','key','name','keys','query','filters','intersection','model','attributes','fields','nolimit','sort','where','pick','filter','type','merge'];(function(_0x225bd6,_0xa696ad){var _0x406c9e=function(_0x2e01c7){while(--_0x2e01c7){_0x225bd6['push'](_0x225bd6['shift']());}};_0x406c9e(++_0xa696ad);}(_0x9779,0x98));var _0x9977=function(_0x5b31ce,_0xb5634){_0x5b31ce=_0x5b31ce-0x0;var _0x16d708=_0x9779[_0x5b31ce];return _0x16d708;};'use strict';var emlformat=require(_0x9977('0x0'));var rimraf=require(_0x9977('0x1'));var zipdir=require(_0x9977('0x2'));var jsonpatch=require(_0x9977('0x3'));var rp=require('request-promise');var moment=require(_0x9977('0x4'));var BPromise=require(_0x9977('0x5'));var Mustache=require(_0x9977('0x6'));var util=require('util');var path=require(_0x9977('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9977('0x8'));var fs=require('fs');var fs_extra=require(_0x9977('0x9'));var _=require('lodash');var squel=require(_0x9977('0xa'));var crypto=require(_0x9977('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9977('0xc'));var toCsv=require(_0x9977('0xd'));var querystring=require(_0x9977('0xe'));var Papa=require(_0x9977('0xf'));var Redis=require(_0x9977('0x10'));var authService=require(_0x9977('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9977('0x12'));var hardwareService=require(_0x9977('0x13'));var logger=require(_0x9977('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x9977('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x9977('0x16'))['db'];function respondWithStatusCode(_0x262659,_0x4e2e3e){_0x4e2e3e=_0x4e2e3e||0xcc;return function(_0x306b18){if(_0x306b18){return _0x262659[_0x9977('0x17')](_0x4e2e3e);}return _0x262659[_0x9977('0x18')](_0x4e2e3e)['end']();};}function respondWithResult(_0x1597af,_0x1ce7af){_0x1ce7af=_0x1ce7af||0xc8;return function(_0xff2265){if(_0xff2265){return _0x1597af[_0x9977('0x18')](_0x1ce7af)['json'](_0xff2265);}};}function respondWithFilteredResult(_0x48699e,_0xdf2e2f){return function(_0x6d34c6){if(_0x6d34c6){var _0x5bdf47=typeof _0xdf2e2f[_0x9977('0x19')]===_0x9977('0x1a')&&typeof _0xdf2e2f[_0x9977('0x1b')]===_0x9977('0x1a');var _0x17f9d3=_0x6d34c6['count'];var _0x18c029=_0x5bdf47?0x0:_0xdf2e2f['offset'];var _0x3f271e=_0x5bdf47?_0x6d34c6[_0x9977('0x1c')]:_0xdf2e2f[_0x9977('0x19')]+_0xdf2e2f['limit'];var _0x2b492f;if(_0x3f271e>=_0x17f9d3){_0x3f271e=_0x17f9d3;_0x2b492f=0xc8;}else{_0x2b492f=0xce;}_0x48699e[_0x9977('0x18')](_0x2b492f);return _0x48699e['set'](_0x9977('0x1d'),_0x18c029+'-'+_0x3f271e+'/'+_0x17f9d3)[_0x9977('0x1e')](_0x6d34c6);}return null;};}function patchUpdates(_0x1fea5b){return function(_0x5896c){try{jsonpatch[_0x9977('0x1f')](_0x5896c,_0x1fea5b,!![]);}catch(_0x811dea){return BPromise[_0x9977('0x20')](_0x811dea);}return _0x5896c[_0x9977('0x21')]();};}function saveUpdates(_0x34e655,_0x5b3b90){return function(_0x316c75){if(_0x316c75){return _0x316c75[_0x9977('0x22')](_0x34e655)[_0x9977('0x23')](function(_0x5db765){return _0x5db765;});}return null;};}function removeEntity(_0x22f9e2,_0x587603){return function(_0x5b836f){if(_0x5b836f){return _0x5b836f['destroy']()['then'](function(){_0x22f9e2[_0x9977('0x18')](0xcc)[_0x9977('0x24')]();});}};}function handleEntityNotFound(_0x51b15e,_0x4e9914){return function(_0x36f08c){if(!_0x36f08c){_0x51b15e[_0x9977('0x17')](0x194);}return _0x36f08c;};}function handleError(_0x49a14e,_0x51cc03){_0x51cc03=_0x51cc03||0x1f4;return function(_0x29bdb3){logger[_0x9977('0x25')](_0x29bdb3['stack']);if(_0x29bdb3['name']){delete _0x29bdb3['name'];}_0x49a14e[_0x9977('0x18')](_0x51cc03)[_0x9977('0x26')](_0x29bdb3);};}exports['index']=function(_0x2af1bd,_0x237ad5){var _0x354a58={},_0xed26bd={},_0x34d36f={'count':0x0,'rows':[]};var _0x27975a=_[_0x9977('0x27')](db[_0x9977('0x28')]['rawAttributes'],function(_0x168df7){return{'name':_0x168df7[_0x9977('0x29')],'type':_0x168df7['type'][_0x9977('0x2a')]};});_0xed26bd['model']=_[_0x9977('0x27')](_0x27975a,_0x9977('0x2b'));_0xed26bd['query']=_[_0x9977('0x2c')](_0x2af1bd[_0x9977('0x2d')]);_0xed26bd[_0x9977('0x2e')]=_[_0x9977('0x2f')](_0xed26bd[_0x9977('0x30')],_0xed26bd['query']);_0x354a58[_0x9977('0x31')]=_[_0x9977('0x2f')](_0xed26bd['model'],qs[_0x9977('0x32')](_0x2af1bd[_0x9977('0x2d')][_0x9977('0x32')]));_0x354a58['attributes']=_0x354a58[_0x9977('0x31')]['length']?_0x354a58[_0x9977('0x31')]:_0xed26bd[_0x9977('0x30')];if(!_0x2af1bd['query']['hasOwnProperty'](_0x9977('0x33'))){_0x354a58[_0x9977('0x1b')]=qs[_0x9977('0x1b')](_0x2af1bd['query'][_0x9977('0x1b')]);_0x354a58[_0x9977('0x19')]=qs[_0x9977('0x19')](_0x2af1bd['query']['offset']);}_0x354a58['order']=qs[_0x9977('0x34')](_0x2af1bd[_0x9977('0x2d')]['sort']);_0x354a58[_0x9977('0x35')]=qs['filters'](_[_0x9977('0x36')](_0x2af1bd[_0x9977('0x2d')],_0xed26bd[_0x9977('0x2e')]),_0x27975a);if(_0x2af1bd[_0x9977('0x2d')][_0x9977('0x37')]){_0x354a58[_0x9977('0x35')]=_['merge'](_0x354a58[_0x9977('0x35')],{'$or':_[_0x9977('0x27')](_0x27975a,function(_0x5f1a3d){if(_0x5f1a3d[_0x9977('0x38')]!=='VIRTUAL'){var _0x194c87={};_0x194c87[_0x5f1a3d[_0x9977('0x2b')]]={'$like':'%'+_0x2af1bd[_0x9977('0x2d')][_0x9977('0x37')]+'%'};return _0x194c87;}})});}_0x354a58=_[_0x9977('0x39')]({},_0x354a58,_0x2af1bd['options']);var _0x4daf56={'where':_0x354a58['where']};return db['AnalyticTreeReport'][_0x9977('0x1c')](_0x4daf56)[_0x9977('0x23')](function(_0x34d636){_0x34d36f[_0x9977('0x1c')]=_0x34d636;if(_0x2af1bd[_0x9977('0x2d')][_0x9977('0x3a')]){_0x354a58[_0x9977('0x3b')]=[{'all':!![]}];}return db[_0x9977('0x28')][_0x9977('0x3c')](_0x354a58);})[_0x9977('0x23')](function(_0x476ac0){_0x34d36f[_0x9977('0x3d')]=_0x476ac0;return _0x34d36f;})[_0x9977('0x23')](respondWithFilteredResult(_0x237ad5,_0x354a58))['catch'](handleError(_0x237ad5,null));};exports[_0x9977('0x3e')]=function(_0x45f0b2,_0x2aac03){var _0x3e4096={'raw':!![],'where':{'id':_0x45f0b2[_0x9977('0x3f')]['id']}},_0x2535b4={};_0x2535b4['model']=_[_0x9977('0x2c')](db[_0x9977('0x28')]['rawAttributes']);_0x2535b4['query']=_[_0x9977('0x2c')](_0x45f0b2[_0x9977('0x2d')]);_0x2535b4['filters']=_[_0x9977('0x2f')](_0x2535b4[_0x9977('0x30')],_0x2535b4[_0x9977('0x2d')]);_0x3e4096[_0x9977('0x31')]=_[_0x9977('0x2f')](_0x2535b4['model'],qs['fields'](_0x45f0b2['query'][_0x9977('0x32')]));_0x3e4096[_0x9977('0x31')]=_0x3e4096['attributes']['length']?_0x3e4096[_0x9977('0x31')]:_0x2535b4[_0x9977('0x30')];if(_0x45f0b2['query']['includeAll']){_0x3e4096[_0x9977('0x3b')]=[{'all':!![]}];}_0x3e4096=_[_0x9977('0x39')]({},_0x3e4096,_0x45f0b2[_0x9977('0x40')]);return db[_0x9977('0x28')][_0x9977('0x41')](_0x3e4096)['then'](handleEntityNotFound(_0x2aac03,null))[_0x9977('0x23')](respondWithResult(_0x2aac03,null))[_0x9977('0x42')](handleError(_0x2aac03,null));};exports[_0x9977('0x43')]=function(_0x4845c9,_0x22c6bf){return db[_0x9977('0x28')]['create'](_0x4845c9[_0x9977('0x44')],{})[_0x9977('0x23')](respondWithResult(_0x22c6bf,0xc9))[_0x9977('0x42')](handleError(_0x22c6bf,null));};exports[_0x9977('0x22')]=function(_0x2a800e,_0x2c2bc3){if(_0x2a800e['body']['id']){delete _0x2a800e[_0x9977('0x44')]['id'];}return db[_0x9977('0x28')][_0x9977('0x41')]({'where':{'id':_0x2a800e[_0x9977('0x3f')]['id']}})[_0x9977('0x23')](handleEntityNotFound(_0x2c2bc3,null))['then'](saveUpdates(_0x2a800e[_0x9977('0x44')],null))[_0x9977('0x23')](respondWithResult(_0x2c2bc3,null))['catch'](handleError(_0x2c2bc3,null));};exports[_0x9977('0x45')]=function(_0x2503d7,_0x315ed6){return db['AnalyticTreeReport']['find']({'where':{'id':_0x2503d7['params']['id']}})['then'](handleEntityNotFound(_0x315ed6,null))[_0x9977('0x23')](removeEntity(_0x315ed6,null))[_0x9977('0x42')](handleError(_0x315ed6,null));};
\ No newline at end of file
index 10e0c76..b7f5f47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66d4=['AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define'];(function(_0x511907,_0x4ae413){var _0x5e58e6=function(_0xfd27e3){while(--_0xfd27e3){_0x511907['push'](_0x511907['shift']());}};_0x5e58e6(++_0x4ae413);}(_0x66d4,0x11a));var _0x466d=function(_0x280f4a,_0x2ed8d6){_0x280f4a=_0x280f4a-0x0;var _0x1bb157=_0x66d4[_0x280f4a];return _0x1bb157;};'use strict';var _=require(_0x466d('0x0'));var util=require(_0x466d('0x1'));var logger=require(_0x466d('0x2'))(_0x466d('0x3'));var moment=require('moment');var BPromise=require(_0x466d('0x4'));var rp=require(_0x466d('0x5'));var fs=require('fs');var path=require(_0x466d('0x6'));var rimraf=require(_0x466d('0x7'));var config=require(_0x466d('0x8'));var attributes=require(_0x466d('0x9'));module[_0x466d('0xa')]=function(_0x442ad5,_0x17b614){return _0x442ad5[_0x466d('0xb')](_0x466d('0xc'),attributes,{'tableName':_0x466d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfdd4=['./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0xfdd4,0x164));var _0x4fdd=function(_0x4f67f1,_0x3d02bf){_0x4f67f1=_0x4f67f1-0x0;var _0x52c611=_0xfdd4[_0x4f67f1];return _0x52c611;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4fdd('0x0'))(_0x4fdd('0x1'));var moment=require(_0x4fdd('0x2'));var BPromise=require(_0x4fdd('0x3'));var rp=require(_0x4fdd('0x4'));var fs=require('fs');var path=require(_0x4fdd('0x5'));var rimraf=require(_0x4fdd('0x6'));var config=require(_0x4fdd('0x7'));var attributes=require(_0x4fdd('0x8'));module[_0x4fdd('0x9')]=function(_0x14c064,_0x2aa6ec){return _0x14c064[_0x4fdd('0xa')](_0x4fdd('0xb'),attributes,{'tableName':_0x4fdd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9f22cfc..61fc808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x11dcf0,_0x4eb137){var _0x4f9831=function(_0x2d278e){while(--_0x2d278e){_0x11dcf0['push'](_0x11dcf0['shift']());}};_0x4f9831(++_0x4eb137);}(_0xadb5,0xad));var _0x5adb=function(_0x50434a,_0x12dc4c){_0x50434a=_0x50434a-0x0;var _0x4af5d6=_0xadb5[_0x50434a];return _0x4af5d6;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x534817,_0x55cc0a){var _0x4e3ecb=function(_0x43046d){while(--_0x43046d){_0x534817['push'](_0x534817['shift']());}};_0x4e3ecb(++_0x55cc0a);}(_0xadb5,0xad));var _0x5adb=function(_0x456769,_0x426f89){_0x456769=_0x456769-0x0;var _0x261442=_0xadb5[_0x456769];return _0x261442;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index 2ac6506..9269983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc51d=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','post','create','put','update','destroy'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc51d,0x105));var _0xdc51=function(_0x4257b3,_0x40165a){_0x4257b3=_0x4257b3-0x0;var _0x584a7b=_0xc51d[_0x4257b3];return _0x584a7b;};'use strict';var multer=require(_0xdc51('0x0'));var util=require(_0xdc51('0x1'));var path=require(_0xdc51('0x2'));var timeout=require(_0xdc51('0x3'));var express=require(_0xdc51('0x4'));var router=express[_0xdc51('0x5')]();var fs_extra=require(_0xdc51('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xdc51('0x7'));var config=require(_0xdc51('0x8'));var controller=require(_0xdc51('0x9'));router[_0xdc51('0xa')]('/',auth[_0xdc51('0xb')](),controller[_0xdc51('0xc')]);router[_0xdc51('0xa')](_0xdc51('0xd'),auth[_0xdc51('0xb')](),controller['show']);router[_0xdc51('0xe')]('/',auth['isAuthenticated'](),controller[_0xdc51('0xf')]);router[_0xdc51('0x10')](_0xdc51('0xd'),auth['isAuthenticated'](),controller[_0xdc51('0x11')]);router['delete']('/:id',auth[_0xdc51('0xb')](),controller[_0xdc51('0x12')]);module[_0xdc51('0x13')]=router;
\ No newline at end of file
+var _0xd890=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','show','create','put','update','delete','destroy','exports','multer'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xd890,0x143));var _0x0d89=function(_0x1afabf,_0x56fdcc){_0x1afabf=_0x1afabf-0x0;var _0x497ff1=_0xd890[_0x1afabf];return _0x497ff1;};'use strict';var multer=require(_0x0d89('0x0'));var util=require('util');var path=require(_0x0d89('0x1'));var timeout=require(_0x0d89('0x2'));var express=require(_0x0d89('0x3'));var router=express[_0x0d89('0x4')]();var fs_extra=require(_0x0d89('0x5'));var auth=require(_0x0d89('0x6'));var interaction=require(_0x0d89('0x7'));var config=require('../../config/environment');var controller=require('./analyticTreeReport.controller');router[_0x0d89('0x8')]('/',auth[_0x0d89('0x9')](),controller['index']);router['get'](_0x0d89('0xa'),auth[_0x0d89('0x9')](),controller[_0x0d89('0xb')]);router['post']('/',auth[_0x0d89('0x9')](),controller[_0x0d89('0xc')]);router[_0x0d89('0xd')](_0x0d89('0xa'),auth[_0x0d89('0x9')](),controller[_0x0d89('0xe')]);router[_0x0d89('0xf')](_0x0d89('0xa'),auth[_0x0d89('0x9')](),controller[_0x0d89('0x10')]);module[_0x0d89('0x11')]=router;
\ No newline at end of file
index 3637658..6fae99d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7f=['STRING','exports'];(function(_0x2d4fee,_0xc38b94){var _0x265b33=function(_0x315350){while(--_0x315350){_0x2d4fee['push'](_0x2d4fee['shift']());}};_0x265b33(++_0xc38b94);}(_0x6f7f,0x177));var _0xf6f7=function(_0x34dda2,_0x43be2a){_0x34dda2=_0x34dda2-0x0;var _0x37a783=_0x6f7f[_0x34dda2];return _0x37a783;};'use strict';var Sequelize=require('sequelize');module[_0xf6f7('0x0')]={'name':{'type':Sequelize[_0xf6f7('0x1')]},'basename':{'type':Sequelize[_0xf6f7('0x1')]},'type':{'type':Sequelize[_0xf6f7('0x1')]}};
\ No newline at end of file
+var _0x8ff9=['exports','STRING','sequelize'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8ff9,0x188));var _0x98ff=function(_0x5396ac,_0x49f735){_0x5396ac=_0x5396ac-0x0;var _0x252f6c=_0x8ff9[_0x5396ac];return _0x252f6c;};'use strict';var Sequelize=require(_0x98ff('0x0'));module[_0x98ff('0x1')]={'name':{'type':Sequelize[_0x98ff('0x2')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x98ff('0x2')]}};
\ No newline at end of file
index ec50bf8..49aa1ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb1=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','Attachment','findAll','rows','catch','show','params','length','options','find','clone','get','omit','createdAt','updatedAt','body','create','file','originalname','basename','mimetype','download','ChatOfflineMessageId','join','root','server/files/attachments/','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','status','end','json','limit','undefined','offset','count','apply','reject','save','then','destroy','error','stack','name','map','rawAttributes','fieldName','key'];(function(_0x596ff9,_0x11b25e){var _0x29a2b6=function(_0x2926b8){while(--_0x2926b8){_0x596ff9['push'](_0x596ff9['shift']());}};_0x29a2b6(++_0x11b25e);}(_0x7eb1,0x121));var _0x17eb=function(_0x47e92b,_0x29e3b5){_0x47e92b=_0x47e92b-0x0;var _0x2da694=_0x7eb1[_0x47e92b];return _0x2da694;};'use strict';var emlformat=require(_0x17eb('0x0'));var rimraf=require(_0x17eb('0x1'));var zipdir=require(_0x17eb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x17eb('0x3'));var moment=require(_0x17eb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x17eb('0x5'));var util=require(_0x17eb('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x17eb('0x7'));var ejs=require(_0x17eb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x17eb('0x9'));var squel=require('squel');var crypto=require(_0x17eb('0xa'));var jsforce=require(_0x17eb('0xb'));var deskjs=require(_0x17eb('0xc'));var toCsv=require(_0x17eb('0x7'));var querystring=require('querystring');var Papa=require(_0x17eb('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x17eb('0xe'));var as=require(_0x17eb('0xf'));var hardwareService=require(_0x17eb('0x10'));var logger=require('../../config/logger')(_0x17eb('0x11'));var utils=require(_0x17eb('0x12'));var config=require(_0x17eb('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5dbf54,_0x406cb3){_0x406cb3=_0x406cb3||0xcc;return function(_0xdc49d1){if(_0xdc49d1){return _0x5dbf54['sendStatus'](_0x406cb3);}return _0x5dbf54[_0x17eb('0x14')](_0x406cb3)[_0x17eb('0x15')]();};}function respondWithResult(_0x463a98,_0x2ba536){_0x2ba536=_0x2ba536||0xc8;return function(_0xccd5db){if(_0xccd5db){return _0x463a98['status'](_0x2ba536)[_0x17eb('0x16')](_0xccd5db);}};}function respondWithFilteredResult(_0x4432f5,_0x32d7b4){return function(_0x1f6651){if(_0x1f6651){var _0x3fb2f7=typeof _0x32d7b4['offset']==='undefined'&&typeof _0x32d7b4[_0x17eb('0x17')]===_0x17eb('0x18');var _0x567152=_0x1f6651['count'];var _0x2eef3b=_0x3fb2f7?0x0:_0x32d7b4[_0x17eb('0x19')];var _0x236373=_0x3fb2f7?_0x1f6651[_0x17eb('0x1a')]:_0x32d7b4[_0x17eb('0x19')]+_0x32d7b4[_0x17eb('0x17')];var _0x44855b;if(_0x236373>=_0x567152){_0x236373=_0x567152;_0x44855b=0xc8;}else{_0x44855b=0xce;}_0x4432f5[_0x17eb('0x14')](_0x44855b);return _0x4432f5['set']('Content-Range',_0x2eef3b+'-'+_0x236373+'/'+_0x567152)[_0x17eb('0x16')](_0x1f6651);}return null;};}function patchUpdates(_0xecc1dd){return function(_0x57a1f6){try{jsonpatch[_0x17eb('0x1b')](_0x57a1f6,_0xecc1dd,!![]);}catch(_0x53f9f9){return BPromise[_0x17eb('0x1c')](_0x53f9f9);}return _0x57a1f6[_0x17eb('0x1d')]();};}function saveUpdates(_0x50321c,_0x328ec4){return function(_0x5c1c28){if(_0x5c1c28){return _0x5c1c28['update'](_0x50321c)[_0x17eb('0x1e')](function(_0x46a157){return _0x46a157;});}return null;};}function removeEntity(_0xa53c8d,_0x28cf84){return function(_0x1fe542){if(_0x1fe542){return _0x1fe542[_0x17eb('0x1f')]()[_0x17eb('0x1e')](function(){_0xa53c8d[_0x17eb('0x14')](0xcc)[_0x17eb('0x15')]();});}};}function handleEntityNotFound(_0x19e09d,_0x22b616){return function(_0x18cda1){if(!_0x18cda1){_0x19e09d['sendStatus'](0x194);}return _0x18cda1;};}function handleError(_0x2cfcc0,_0x567987){_0x567987=_0x567987||0x1f4;return function(_0x25d20f){logger[_0x17eb('0x20')](_0x25d20f[_0x17eb('0x21')]);if(_0x25d20f[_0x17eb('0x22')]){delete _0x25d20f[_0x17eb('0x22')];}_0x2cfcc0[_0x17eb('0x14')](_0x567987)['send'](_0x25d20f);};}exports['index']=function(_0x14e672,_0x4d26f4){var _0x2a4723={},_0x25f2d9={},_0x100e2b={'count':0x0,'rows':[]};var _0x547c32=_[_0x17eb('0x23')](db['Attachment'][_0x17eb('0x24')],function(_0x55fcae){return{'name':_0x55fcae[_0x17eb('0x25')],'type':_0x55fcae['type'][_0x17eb('0x26')]};});_0x25f2d9[_0x17eb('0x27')]=_[_0x17eb('0x23')](_0x547c32,_0x17eb('0x22'));_0x25f2d9[_0x17eb('0x28')]=_[_0x17eb('0x29')](_0x14e672['query']);_0x25f2d9['filters']=_[_0x17eb('0x2a')](_0x25f2d9['model'],_0x25f2d9[_0x17eb('0x28')]);_0x2a4723[_0x17eb('0x2b')]=_[_0x17eb('0x2a')](_0x25f2d9[_0x17eb('0x27')],qs['fields'](_0x14e672['query'][_0x17eb('0x2c')]));_0x2a4723[_0x17eb('0x2b')]=_0x2a4723[_0x17eb('0x2b')]['length']?_0x2a4723[_0x17eb('0x2b')]:_0x25f2d9[_0x17eb('0x27')];if(!_0x14e672[_0x17eb('0x28')][_0x17eb('0x2d')](_0x17eb('0x2e'))){_0x2a4723[_0x17eb('0x17')]=qs['limit'](_0x14e672[_0x17eb('0x28')][_0x17eb('0x17')]);_0x2a4723[_0x17eb('0x19')]=qs[_0x17eb('0x19')](_0x14e672['query'][_0x17eb('0x19')]);}_0x2a4723[_0x17eb('0x2f')]=qs[_0x17eb('0x30')](_0x14e672[_0x17eb('0x28')][_0x17eb('0x30')]);_0x2a4723[_0x17eb('0x31')]=qs[_0x17eb('0x32')](_['pick'](_0x14e672[_0x17eb('0x28')],_0x25f2d9[_0x17eb('0x32')]),_0x547c32);if(_0x14e672['query'][_0x17eb('0x33')]){_0x2a4723[_0x17eb('0x31')]=_[_0x17eb('0x34')](_0x2a4723[_0x17eb('0x31')],{'$or':_['map'](_0x547c32,function(_0x1b736f){if(_0x1b736f[_0x17eb('0x35')]!==_0x17eb('0x36')){var _0x557420={};_0x557420[_0x1b736f[_0x17eb('0x22')]]={'$like':'%'+_0x14e672[_0x17eb('0x28')][_0x17eb('0x33')]+'%'};return _0x557420;}})});}_0x2a4723=_[_0x17eb('0x34')]({},_0x2a4723,_0x14e672['options']);var _0xf4c5c9={'where':_0x2a4723[_0x17eb('0x31')]};return db['Attachment'][_0x17eb('0x1a')](_0xf4c5c9)[_0x17eb('0x1e')](function(_0x36da09){_0x100e2b[_0x17eb('0x1a')]=_0x36da09;if(_0x14e672['query'][_0x17eb('0x37')]){_0x2a4723[_0x17eb('0x38')]=[{'all':!![]}];}return db[_0x17eb('0x39')][_0x17eb('0x3a')](_0x2a4723);})[_0x17eb('0x1e')](function(_0x17d5ef){_0x100e2b[_0x17eb('0x3b')]=_0x17d5ef;return _0x100e2b;})[_0x17eb('0x1e')](respondWithFilteredResult(_0x4d26f4,_0x2a4723))[_0x17eb('0x3c')](handleError(_0x4d26f4,null));};exports[_0x17eb('0x3d')]=function(_0x1a2c00,_0x517e13){var _0x5096c8={'raw':!![],'where':{'id':_0x1a2c00[_0x17eb('0x3e')]['id']}},_0x2f1850={};_0x2f1850['model']=_[_0x17eb('0x29')](db['Attachment'][_0x17eb('0x24')]);_0x2f1850['query']=_[_0x17eb('0x29')](_0x1a2c00[_0x17eb('0x28')]);_0x2f1850[_0x17eb('0x32')]=_[_0x17eb('0x2a')](_0x2f1850['model'],_0x2f1850[_0x17eb('0x28')]);_0x5096c8['attributes']=_[_0x17eb('0x2a')](_0x2f1850[_0x17eb('0x27')],qs[_0x17eb('0x2c')](_0x1a2c00['query']['fields']));_0x5096c8[_0x17eb('0x2b')]=_0x5096c8[_0x17eb('0x2b')][_0x17eb('0x3f')]?_0x5096c8[_0x17eb('0x2b')]:_0x2f1850[_0x17eb('0x27')];if(_0x1a2c00[_0x17eb('0x28')][_0x17eb('0x37')]){_0x5096c8[_0x17eb('0x38')]=[{'all':!![]}];}_0x5096c8=_[_0x17eb('0x34')]({},_0x5096c8,_0x1a2c00[_0x17eb('0x40')]);return db[_0x17eb('0x39')][_0x17eb('0x41')](_0x5096c8)[_0x17eb('0x1e')](handleEntityNotFound(_0x517e13,null))[_0x17eb('0x1e')](respondWithResult(_0x517e13,null))[_0x17eb('0x3c')](handleError(_0x517e13,null));};exports[_0x17eb('0x42')]=function(_0x296d90,_0xffe09a){var _0x348707={'where':{'id':_0x296d90[_0x17eb('0x3e')]['id']}},_0x1b86d6={};_0x1b86d6[_0x17eb('0x27')]=_[_0x17eb('0x29')](db[_0x17eb('0x39')][_0x17eb('0x24')]);_0x348707[_0x17eb('0x2b')]=_[_0x17eb('0x2a')](_0x1b86d6[_0x17eb('0x27')],qs['fields'](_0x296d90['query'][_0x17eb('0x2c')]));_0x348707[_0x17eb('0x2b')]=_0x348707[_0x17eb('0x2b')]['length']?_0x348707['attributes']:_0x1b86d6['model'];if(_0x296d90['query']['includeAll']){_0x348707[_0x17eb('0x38')]=[{'all':!![]}];}_0x348707=_[_0x17eb('0x34')]({},_0x348707,_0x296d90[_0x17eb('0x40')]);return db[_0x17eb('0x39')][_0x17eb('0x41')](_0x348707)[_0x17eb('0x1e')](handleEntityNotFound(_0xffe09a,null))[_0x17eb('0x1e')](function(_0x1344e6){if(_0x1344e6){var _0x40d518=_0x1344e6[_0x17eb('0x43')]({'plain':!![]});_0x40d518=qs[_0x17eb('0x44')](_0x40d518,['id',_0x17eb('0x45'),_0x17eb('0x46')]);_0x296d90[_0x17eb('0x47')]=_['omit'](_0x296d90[_0x17eb('0x47')],['id',_0x17eb('0x45'),_0x17eb('0x46')]);return db['Attachment'][_0x17eb('0x48')](_[_0x17eb('0x34')](_0x40d518,_0x296d90[_0x17eb('0x47')]),{'include':_0x296d90[_0x17eb('0x28')][_0x17eb('0x37')]?[{'all':!![]}]:undefined});}})[_0x17eb('0x1e')](respondWithResult(_0xffe09a,0xc9))[_0x17eb('0x3c')](handleError(_0xffe09a,null));};exports['update']=function(_0x2c8d34,_0x3e30be){if(_0x2c8d34['body']['id']){delete _0x2c8d34['body']['id'];}return db[_0x17eb('0x39')][_0x17eb('0x41')]({'where':{'id':_0x2c8d34[_0x17eb('0x3e')]['id']}})[_0x17eb('0x1e')](handleEntityNotFound(_0x3e30be,null))[_0x17eb('0x1e')](saveUpdates(_0x2c8d34[_0x17eb('0x47')],null))['then'](respondWithResult(_0x3e30be,null))[_0x17eb('0x3c')](handleError(_0x3e30be,null));};exports['destroy']=function(_0x518387,_0xa2664b){return db[_0x17eb('0x39')][_0x17eb('0x41')]({'where':{'id':_0x518387[_0x17eb('0x3e')]['id']}})['then'](handleEntityNotFound(_0xa2664b,null))[_0x17eb('0x1e')](removeEntity(_0xa2664b,null))[_0x17eb('0x3c')](handleError(_0xa2664b,null));};exports[_0x17eb('0x48')]=function(_0x490451,_0x5e4bae,_0x9d9a2f){_0x490451[_0x17eb('0x47')][_0x17eb('0x22')]=_0x490451[_0x17eb('0x49')][_0x17eb('0x4a')];_0x490451['body'][_0x17eb('0x4b')]=_0x490451[_0x17eb('0x49')]['filename'];_0x490451[_0x17eb('0x47')][_0x17eb('0x35')]=_0x490451['file'][_0x17eb('0x4c')];return db[_0x17eb('0x39')][_0x17eb('0x48')](_0x490451[_0x17eb('0x47')])[_0x17eb('0x1e')](respondWithResult(_0x5e4bae,0xc9))['catch'](handleError(_0x5e4bae,null));};exports[_0x17eb('0x4d')]=function(_0x356786,_0x48c4db,_0x10e943){return db[_0x17eb('0x39')]['findOne']({'where':{'id':_0x356786[_0x17eb('0x3e')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x48c4db,null))[_0x17eb('0x1e')](function(_0x23ab4f){if(_0x23ab4f){var _0x28ce39=_0x23ab4f[_0x17eb('0x4e')]!==null;var _0x246f7e=path[_0x17eb('0x4f')](config[_0x17eb('0x50')],_0x17eb('0x51'));if(_0x28ce39){_0x246f7e=path[_0x17eb('0x4f')](_0x246f7e,'offline-chat/');}var _0x5f9edc=path[_0x17eb('0x4f')](_0x246f7e,_0x23ab4f[_0x17eb('0x4b')]);return _0x48c4db[_0x17eb('0x4d')](_0x5f9edc);}})[_0x17eb('0x3c')](handleError(_0x48c4db,null));};
\ No newline at end of file
+var _0x13a2=['index','map','Attachment','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','catch','show','params','keys','include','options','find','clone','get','createdAt','updatedAt','body','omit','create','file','originalname','filename','mimetype','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','download','eml-format','rimraf','zip-dir','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','stack','name'];(function(_0x9c6c1c,_0x21ead9){var _0x594c42=function(_0x27764b){while(--_0x27764b){_0x9c6c1c['push'](_0x9c6c1c['shift']());}};_0x594c42(++_0x21ead9);}(_0x13a2,0x1d6));var _0x213a=function(_0x41db7,_0x2f2055){_0x41db7=_0x41db7-0x0;var _0x4a6204=_0x13a2[_0x41db7];return _0x4a6204;};'use strict';var emlformat=require(_0x213a('0x0'));var rimraf=require(_0x213a('0x1'));var zipdir=require(_0x213a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x213a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x213a('0x4'));var path=require(_0x213a('0x5'));var sox=require(_0x213a('0x6'));var csv=require(_0x213a('0x7'));var ejs=require(_0x213a('0x8'));var fs=require('fs');var fs_extra=require(_0x213a('0x9'));var _=require(_0x213a('0xa'));var squel=require(_0x213a('0xb'));var crypto=require(_0x213a('0xc'));var jsforce=require(_0x213a('0xd'));var deskjs=require(_0x213a('0xe'));var toCsv=require(_0x213a('0x7'));var querystring=require(_0x213a('0xf'));var Papa=require(_0x213a('0x10'));var Redis=require(_0x213a('0x11'));var authService=require(_0x213a('0x12'));var qs=require(_0x213a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x213a('0x14'));var config=require(_0x213a('0x15'));var licenseUtil=require(_0x213a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e2a37,_0x315de5){_0x315de5=_0x315de5||0xcc;return function(_0x374d18){if(_0x374d18){return _0x3e2a37['sendStatus'](_0x315de5);}return _0x3e2a37[_0x213a('0x17')](_0x315de5)[_0x213a('0x18')]();};}function respondWithResult(_0x4f9105,_0x3fa321){_0x3fa321=_0x3fa321||0xc8;return function(_0x5f1e23){if(_0x5f1e23){return _0x4f9105[_0x213a('0x17')](_0x3fa321)['json'](_0x5f1e23);}};}function respondWithFilteredResult(_0x309106,_0x114fd4){return function(_0x7484a4){if(_0x7484a4){var _0x446d24=typeof _0x114fd4[_0x213a('0x19')]===_0x213a('0x1a')&&typeof _0x114fd4[_0x213a('0x1b')]===_0x213a('0x1a');var _0x2e1319=_0x7484a4['count'];var _0x2d0d03=_0x446d24?0x0:_0x114fd4[_0x213a('0x19')];var _0x545ad5=_0x446d24?_0x7484a4[_0x213a('0x1c')]:_0x114fd4['offset']+_0x114fd4[_0x213a('0x1b')];var _0x15fe7e;if(_0x545ad5>=_0x2e1319){_0x545ad5=_0x2e1319;_0x15fe7e=0xc8;}else{_0x15fe7e=0xce;}_0x309106[_0x213a('0x17')](_0x15fe7e);return _0x309106['set'](_0x213a('0x1d'),_0x2d0d03+'-'+_0x545ad5+'/'+_0x2e1319)[_0x213a('0x1e')](_0x7484a4);}return null;};}function patchUpdates(_0x44a561){return function(_0x1980b2){try{jsonpatch[_0x213a('0x1f')](_0x1980b2,_0x44a561,!![]);}catch(_0x3fa9e9){return BPromise[_0x213a('0x20')](_0x3fa9e9);}return _0x1980b2[_0x213a('0x21')]();};}function saveUpdates(_0x1e7f61,_0x455d2a){return function(_0x14771a){if(_0x14771a){return _0x14771a[_0x213a('0x22')](_0x1e7f61)[_0x213a('0x23')](function(_0x2ed89b){return _0x2ed89b;});}return null;};}function removeEntity(_0x2234f8,_0x5b2a04){return function(_0x5192c5){if(_0x5192c5){return _0x5192c5[_0x213a('0x24')]()['then'](function(){_0x2234f8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x146dd5,_0x102cb3){return function(_0x147029){if(!_0x147029){_0x146dd5[_0x213a('0x25')](0x194);}return _0x147029;};}function handleError(_0x2cbedf,_0x320bf7){_0x320bf7=_0x320bf7||0x1f4;return function(_0x4bd682){logger['error'](_0x4bd682[_0x213a('0x26')]);if(_0x4bd682[_0x213a('0x27')]){delete _0x4bd682[_0x213a('0x27')];}_0x2cbedf[_0x213a('0x17')](_0x320bf7)['send'](_0x4bd682);};}exports[_0x213a('0x28')]=function(_0x17f351,_0x212cee){var _0x56ec0e={},_0x47c95a={},_0x3646d6={'count':0x0,'rows':[]};var _0x371487=_[_0x213a('0x29')](db[_0x213a('0x2a')][_0x213a('0x2b')],function(_0x4397a2){return{'name':_0x4397a2[_0x213a('0x2c')],'type':_0x4397a2[_0x213a('0x2d')]['key']};});_0x47c95a[_0x213a('0x2e')]=_[_0x213a('0x29')](_0x371487,_0x213a('0x27'));_0x47c95a[_0x213a('0x2f')]=_['keys'](_0x17f351[_0x213a('0x2f')]);_0x47c95a[_0x213a('0x30')]=_[_0x213a('0x31')](_0x47c95a[_0x213a('0x2e')],_0x47c95a[_0x213a('0x2f')]);_0x56ec0e[_0x213a('0x32')]=_[_0x213a('0x31')](_0x47c95a[_0x213a('0x2e')],qs[_0x213a('0x33')](_0x17f351[_0x213a('0x2f')][_0x213a('0x33')]));_0x56ec0e[_0x213a('0x32')]=_0x56ec0e[_0x213a('0x32')][_0x213a('0x34')]?_0x56ec0e[_0x213a('0x32')]:_0x47c95a[_0x213a('0x2e')];if(!_0x17f351['query']['hasOwnProperty'](_0x213a('0x35'))){_0x56ec0e[_0x213a('0x1b')]=qs['limit'](_0x17f351[_0x213a('0x2f')][_0x213a('0x1b')]);_0x56ec0e[_0x213a('0x19')]=qs[_0x213a('0x19')](_0x17f351[_0x213a('0x2f')]['offset']);}_0x56ec0e[_0x213a('0x36')]=qs[_0x213a('0x37')](_0x17f351['query'][_0x213a('0x37')]);_0x56ec0e[_0x213a('0x38')]=qs['filters'](_['pick'](_0x17f351[_0x213a('0x2f')],_0x47c95a['filters']),_0x371487);if(_0x17f351['query'][_0x213a('0x39')]){_0x56ec0e[_0x213a('0x38')]=_[_0x213a('0x3a')](_0x56ec0e[_0x213a('0x38')],{'$or':_[_0x213a('0x29')](_0x371487,function(_0xf3f469){if(_0xf3f469['type']!==_0x213a('0x3b')){var _0x2abdfc={};_0x2abdfc[_0xf3f469[_0x213a('0x27')]]={'$like':'%'+_0x17f351['query'][_0x213a('0x39')]+'%'};return _0x2abdfc;}})});}_0x56ec0e=_[_0x213a('0x3a')]({},_0x56ec0e,_0x17f351['options']);var _0x353091={'where':_0x56ec0e[_0x213a('0x38')]};return db['Attachment']['count'](_0x353091)[_0x213a('0x23')](function(_0x247a74){_0x3646d6['count']=_0x247a74;if(_0x17f351[_0x213a('0x2f')][_0x213a('0x3c')]){_0x56ec0e['include']=[{'all':!![]}];}return db[_0x213a('0x2a')]['findAll'](_0x56ec0e);})[_0x213a('0x23')](function(_0x24fc50){_0x3646d6['rows']=_0x24fc50;return _0x3646d6;})['then'](respondWithFilteredResult(_0x212cee,_0x56ec0e))[_0x213a('0x3d')](handleError(_0x212cee,null));};exports[_0x213a('0x3e')]=function(_0x55b9b6,_0x4863da){var _0x7d6f4f={'raw':!![],'where':{'id':_0x55b9b6[_0x213a('0x3f')]['id']}},_0x2879b9={};_0x2879b9[_0x213a('0x2e')]=_[_0x213a('0x40')](db[_0x213a('0x2a')]['rawAttributes']);_0x2879b9[_0x213a('0x2f')]=_['keys'](_0x55b9b6[_0x213a('0x2f')]);_0x2879b9[_0x213a('0x30')]=_['intersection'](_0x2879b9[_0x213a('0x2e')],_0x2879b9[_0x213a('0x2f')]);_0x7d6f4f[_0x213a('0x32')]=_['intersection'](_0x2879b9[_0x213a('0x2e')],qs[_0x213a('0x33')](_0x55b9b6['query'][_0x213a('0x33')]));_0x7d6f4f[_0x213a('0x32')]=_0x7d6f4f['attributes'][_0x213a('0x34')]?_0x7d6f4f[_0x213a('0x32')]:_0x2879b9['model'];if(_0x55b9b6[_0x213a('0x2f')][_0x213a('0x3c')]){_0x7d6f4f[_0x213a('0x41')]=[{'all':!![]}];}_0x7d6f4f=_['merge']({},_0x7d6f4f,_0x55b9b6[_0x213a('0x42')]);return db[_0x213a('0x2a')][_0x213a('0x43')](_0x7d6f4f)[_0x213a('0x23')](handleEntityNotFound(_0x4863da,null))[_0x213a('0x23')](respondWithResult(_0x4863da,null))[_0x213a('0x3d')](handleError(_0x4863da,null));};exports[_0x213a('0x44')]=function(_0x4d20fd,_0x1864d5){var _0xb0c14a={'where':{'id':_0x4d20fd['params']['id']}},_0x2efb16={};_0x2efb16['model']=_[_0x213a('0x40')](db[_0x213a('0x2a')]['rawAttributes']);_0xb0c14a['attributes']=_[_0x213a('0x31')](_0x2efb16[_0x213a('0x2e')],qs['fields'](_0x4d20fd[_0x213a('0x2f')][_0x213a('0x33')]));_0xb0c14a[_0x213a('0x32')]=_0xb0c14a['attributes'][_0x213a('0x34')]?_0xb0c14a['attributes']:_0x2efb16['model'];if(_0x4d20fd['query'][_0x213a('0x3c')]){_0xb0c14a[_0x213a('0x41')]=[{'all':!![]}];}_0xb0c14a=_['merge']({},_0xb0c14a,_0x4d20fd[_0x213a('0x42')]);return db[_0x213a('0x2a')][_0x213a('0x43')](_0xb0c14a)['then'](handleEntityNotFound(_0x1864d5,null))['then'](function(_0x5ee18c){if(_0x5ee18c){var _0x45cf63=_0x5ee18c[_0x213a('0x45')]({'plain':!![]});_0x45cf63=qs['omit'](_0x45cf63,['id',_0x213a('0x46'),_0x213a('0x47')]);_0x4d20fd[_0x213a('0x48')]=_[_0x213a('0x49')](_0x4d20fd[_0x213a('0x48')],['id','createdAt','updatedAt']);return db[_0x213a('0x2a')][_0x213a('0x4a')](_[_0x213a('0x3a')](_0x45cf63,_0x4d20fd[_0x213a('0x48')]),{'include':_0x4d20fd[_0x213a('0x2f')][_0x213a('0x3c')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x1864d5,0xc9))[_0x213a('0x3d')](handleError(_0x1864d5,null));};exports[_0x213a('0x22')]=function(_0x2f6c37,_0x5d502a){if(_0x2f6c37[_0x213a('0x48')]['id']){delete _0x2f6c37[_0x213a('0x48')]['id'];}return db[_0x213a('0x2a')][_0x213a('0x43')]({'where':{'id':_0x2f6c37[_0x213a('0x3f')]['id']}})[_0x213a('0x23')](handleEntityNotFound(_0x5d502a,null))[_0x213a('0x23')](saveUpdates(_0x2f6c37[_0x213a('0x48')],null))['then'](respondWithResult(_0x5d502a,null))[_0x213a('0x3d')](handleError(_0x5d502a,null));};exports[_0x213a('0x24')]=function(_0x36070b,_0x5dda15){return db[_0x213a('0x2a')][_0x213a('0x43')]({'where':{'id':_0x36070b['params']['id']}})[_0x213a('0x23')](handleEntityNotFound(_0x5dda15,null))['then'](removeEntity(_0x5dda15,null))[_0x213a('0x3d')](handleError(_0x5dda15,null));};exports[_0x213a('0x4a')]=function(_0x474e33,_0x5014c1,_0x23ff81){_0x474e33['body']['name']=_0x474e33[_0x213a('0x4b')][_0x213a('0x4c')];_0x474e33[_0x213a('0x48')]['basename']=_0x474e33[_0x213a('0x4b')][_0x213a('0x4d')];_0x474e33[_0x213a('0x48')][_0x213a('0x2d')]=_0x474e33[_0x213a('0x4b')][_0x213a('0x4e')];return db['Attachment'][_0x213a('0x4a')](_0x474e33[_0x213a('0x48')])[_0x213a('0x23')](respondWithResult(_0x5014c1,0xc9))['catch'](handleError(_0x5014c1,null));};exports['download']=function(_0x1dac04,_0x2ddce3,_0x3187ed){return db[_0x213a('0x2a')][_0x213a('0x4f')]({'where':{'id':_0x1dac04[_0x213a('0x3f')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x2ddce3,null))[_0x213a('0x23')](function(_0x3e0045){if(_0x3e0045){var _0x53af12=_0x3e0045[_0x213a('0x50')]!==null;var _0x46e1ef=path[_0x213a('0x51')](config[_0x213a('0x52')],_0x213a('0x53'));if(_0x53af12){_0x46e1ef=path[_0x213a('0x51')](_0x46e1ef,'offline-chat/');}var _0x2878de=path[_0x213a('0x51')](_0x46e1ef,_0x3e0045['basename']);return _0x2ddce3[_0x213a('0x54')](_0x2878de);}})[_0x213a('0x3d')](handleError(_0x2ddce3,null));};
\ No newline at end of file
index 6fcb96d..074b45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cfe=['../../config/environment','exports','define','attachments','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x59c352,_0x1a3d99){var _0x24e1ac=function(_0x3e4931){while(--_0x3e4931){_0x59c352['push'](_0x59c352['shift']());}};_0x24e1ac(++_0x1a3d99);}(_0x4cfe,0x1dd));var _0xe4cf=function(_0x55f607,_0x12da07){_0x55f607=_0x55f607-0x0;var _0x5716ef=_0x4cfe[_0x55f607];return _0x5716ef;};'use strict';var _=require(_0xe4cf('0x0'));var util=require(_0xe4cf('0x1'));var logger=require(_0xe4cf('0x2'))(_0xe4cf('0x3'));var moment=require('moment');var BPromise=require(_0xe4cf('0x4'));var rp=require(_0xe4cf('0x5'));var fs=require('fs');var path=require(_0xe4cf('0x6'));var rimraf=require('rimraf');var config=require(_0xe4cf('0x7'));var attributes=require('./attachment.attributes');module[_0xe4cf('0x8')]=function(_0x1ee564,_0x3dd3f8){return _0x1ee564[_0xe4cf('0x9')]('Attachment',attributes,{'tableName':_0xe4cf('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa610=['util','../../config/logger','api','moment','bluebird','path','rimraf','./attachment.attributes','Attachment','attachments','lodash'];(function(_0x566476,_0x5cb80a){var _0x14ad48=function(_0x560fe0){while(--_0x560fe0){_0x566476['push'](_0x566476['shift']());}};_0x14ad48(++_0x5cb80a);}(_0xa610,0x149));var _0x0a61=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa610[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0a61('0x0'));var util=require(_0x0a61('0x1'));var logger=require(_0x0a61('0x2'))(_0x0a61('0x3'));var moment=require(_0x0a61('0x4'));var BPromise=require(_0x0a61('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a61('0x6'));var rimraf=require(_0x0a61('0x7'));var config=require('../../config/environment');var attributes=require(_0x0a61('0x8'));module['exports']=function(_0x48483c,_0x5bb91e){return _0x48483c['define'](_0x0a61('0x9'),attributes,{'tableName':_0x0a61('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2671bfa..ec54dad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9f=['debug','stringify','error','code','message','info','result','catch','body','options','raw','CreateAttachment','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Attachment,\x20%s,\x20%s','request\x20sent'];(function(_0x39947f,_0x5787a6){var _0x415d92=function(_0x148fcd){while(--_0x148fcd){_0x39947f['push'](_0x39947f['shift']());}};_0x415d92(++_0x5787a6);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0x56b3a3,_0x77b2d){_0x56b3a3=_0x56b3a3-0x0;var _0x5315cf=_0x0f9f[_0x56b3a3];return _0x5315cf;};'use strict';var _=require('lodash');var util=require(_0xf0f9('0x0'));var moment=require(_0xf0f9('0x1'));var BPromise=require(_0xf0f9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf0f9('0x3'));var db=require(_0xf0f9('0x4'))['db'];var utils=require(_0xf0f9('0x5'));var logger=require(_0xf0f9('0x6'))(_0xf0f9('0x7'));var config=require(_0xf0f9('0x8'));var jayson=require(_0xf0f9('0x9'));var client=jayson[_0xf0f9('0xa')][_0xf0f9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45694e,_0x51a0ed,_0x448cf5){return new BPromise(function(_0x294b42,_0x5d1753){return client[_0xf0f9('0xc')](_0x45694e,_0x448cf5)[_0xf0f9('0xd')](function(_0x2d72c9){logger['info'](_0xf0f9('0xe'),_0x51a0ed,_0xf0f9('0xf'));logger[_0xf0f9('0x10')]('Attachment,\x20%s,\x20%s,\x20%s',_0x51a0ed,'request\x20sent',JSON[_0xf0f9('0x11')](_0x2d72c9));if(_0x2d72c9[_0xf0f9('0x12')]){if(_0x2d72c9[_0xf0f9('0x12')][_0xf0f9('0x13')]===0x1f4){logger[_0xf0f9('0x12')](_0xf0f9('0xe'),_0x51a0ed,_0x2d72c9[_0xf0f9('0x12')]['message']);return _0x5d1753(_0x2d72c9[_0xf0f9('0x12')][_0xf0f9('0x14')]);}logger[_0xf0f9('0x12')](_0xf0f9('0xe'),_0x51a0ed,_0x2d72c9[_0xf0f9('0x12')]['message']);return _0x294b42(_0x2d72c9[_0xf0f9('0x12')][_0xf0f9('0x14')]);}else{logger[_0xf0f9('0x15')](_0xf0f9('0xe'),_0x51a0ed,_0xf0f9('0xf'));_0x294b42(_0x2d72c9[_0xf0f9('0x16')][_0xf0f9('0x14')]);}})[_0xf0f9('0x17')](function(_0x677b32){logger[_0xf0f9('0x12')]('Attachment,\x20%s,\x20%s',_0x51a0ed,_0x677b32);_0x5d1753(_0x677b32);});});}exports['CreateAttachment']=function(_0x350a48){var _0x3227cf=this;return new Promise(function(_0x4c4e17,_0x178e16){return db['Attachment']['create'](_0x350a48[_0xf0f9('0x18')],{'raw':_0x350a48[_0xf0f9('0x19')]?_0x350a48[_0xf0f9('0x19')][_0xf0f9('0x1a')]===undefined?!![]:![]:!![]})[_0xf0f9('0xd')](function(_0x4ed9ff){logger['info']('CreateAttachment',_0x350a48);logger[_0xf0f9('0x10')](_0xf0f9('0x1b'),_0x350a48,JSON[_0xf0f9('0x11')](_0x4ed9ff));_0x4c4e17(_0x4ed9ff);})['catch'](function(_0x4a8726){logger[_0xf0f9('0x12')]('CreateAttachment',_0x4a8726[_0xf0f9('0x14')],_0x350a48);_0x178e16(_0x3227cf[_0xf0f9('0x12')](0x1f4,_0x4a8726[_0xf0f9('0x14')]));});});};
\ No newline at end of file
+var _0xf46a=['http','then','request\x20sent','debug','stringify','error','code','Attachment,\x20%s,\x20%s','message','info','Attachment','create','options','CreateAttachment','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x42a058,_0x70c2e8){var _0x5787d4=function(_0x180e67){while(--_0x180e67){_0x42a058['push'](_0x42a058['shift']());}};_0x5787d4(++_0x70c2e8);}(_0xf46a,0xa4));var _0xaf46=function(_0x5baf32,_0x3ae37b){_0x5baf32=_0x5baf32-0x0;var _0x2eab43=_0xf46a[_0x5baf32];return _0x2eab43;};'use strict';var _=require(_0xaf46('0x0'));var util=require('util');var moment=require(_0xaf46('0x1'));var BPromise=require(_0xaf46('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaf46('0x3'));var db=require(_0xaf46('0x4'))['db'];var utils=require(_0xaf46('0x5'));var logger=require(_0xaf46('0x6'))(_0xaf46('0x7'));var config=require(_0xaf46('0x8'));var jayson=require(_0xaf46('0x9'));var client=jayson[_0xaf46('0xa')][_0xaf46('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9e9887,_0x4f76cc,_0xa4a618){return new BPromise(function(_0x105943,_0x328d92){return client['request'](_0x9e9887,_0xa4a618)[_0xaf46('0xc')](function(_0x4e67c0){logger['info']('Attachment,\x20%s,\x20%s',_0x4f76cc,_0xaf46('0xd'));logger[_0xaf46('0xe')]('Attachment,\x20%s,\x20%s,\x20%s',_0x4f76cc,_0xaf46('0xd'),JSON[_0xaf46('0xf')](_0x4e67c0));if(_0x4e67c0[_0xaf46('0x10')]){if(_0x4e67c0['error'][_0xaf46('0x11')]===0x1f4){logger['error'](_0xaf46('0x12'),_0x4f76cc,_0x4e67c0['error'][_0xaf46('0x13')]);return _0x328d92(_0x4e67c0['error'][_0xaf46('0x13')]);}logger[_0xaf46('0x10')](_0xaf46('0x12'),_0x4f76cc,_0x4e67c0[_0xaf46('0x10')][_0xaf46('0x13')]);return _0x105943(_0x4e67c0[_0xaf46('0x10')][_0xaf46('0x13')]);}else{logger[_0xaf46('0x14')]('Attachment,\x20%s,\x20%s',_0x4f76cc,'request\x20sent');_0x105943(_0x4e67c0['result'][_0xaf46('0x13')]);}})['catch'](function(_0x498720){logger[_0xaf46('0x10')](_0xaf46('0x12'),_0x4f76cc,_0x498720);_0x328d92(_0x498720);});});}exports['CreateAttachment']=function(_0x128ad8){var _0x3a26f1=this;return new Promise(function(_0x224413,_0xd1b9ce){return db[_0xaf46('0x15')][_0xaf46('0x16')](_0x128ad8['body'],{'raw':_0x128ad8[_0xaf46('0x17')]?_0x128ad8[_0xaf46('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xaf46('0xc')](function(_0x4459d5){logger['info']('CreateAttachment',_0x128ad8);logger['debug'](_0xaf46('0x18'),_0x128ad8,JSON[_0xaf46('0xf')](_0x4459d5));_0x224413(_0x4459d5);})['catch'](function(_0x183cb6){logger['error'](_0xaf46('0x18'),_0x183cb6[_0xaf46('0x13')],_0x128ad8);_0xd1b9ce(_0x3a26f1[_0xaf46('0x10')](0x1f4,_0x183cb6[_0xaf46('0x13')]));});});};
\ No newline at end of file
index 9e304c9..8c4d98f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0x3f54f7,_0x1aedb8){var _0x332d81=function(_0x5f25c1){while(--_0x5f25c1){_0x3f54f7['push'](_0x3f54f7['shift']());}};_0x332d81(++_0x1aedb8);}(_0x757a,0xde));var _0xa757=function(_0x1da071,_0x172e92){_0x1da071=_0x1da071-0x0;var _0x471de3=_0x757a[_0x1da071];return _0x471de3;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
+var _0x5f2f=['show','/:id/download','download','post','/:id/clone','clone','root','server/files/attachments/','format','now','originalname','replace','single','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./attachment.controller','get','isAuthenticated','index','/:id'];(function(_0x3edca9,_0x47b7f2){var _0x1ceba8=function(_0x520a73){while(--_0x520a73){_0x3edca9['push'](_0x3edca9['shift']());}};_0x1ceba8(++_0x47b7f2);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3cc624,_0x388919){_0x3cc624=_0x3cc624-0x0;var _0xa12e2a=_0x5f2f[_0x3cc624];return _0xa12e2a;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')](_0xf5f2('0x11'),auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x53fb33,_0xa7e1a6,_0x151aba){_0x151aba(null,path['join'](config[_0xf5f2('0x13')],_0xf5f2('0x14')));},'filename':function(_0x331482,_0x3f2997,_0x59bb6c){_0x59bb6c(null,util[_0xf5f2('0x15')]('%s-%s',Date[_0xf5f2('0x16')](),_0x3f2997[_0xf5f2('0x17')][_0xf5f2('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf5f2('0x10')]('/',upload[_0xf5f2('0x19')]('file'),controller[_0xf5f2('0x1a')]);router[_0xf5f2('0x1b')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1c')]);router[_0xf5f2('0x1d')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1e')]);module[_0xf5f2('0x1f')]=router;
\ No newline at end of file
index a5c379b..3f670c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad1c=['message','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','use','passport-local','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/logger','activedirectory','baseDN','url','domain','authenticate','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','error','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','blockedAt','user','agent','add','minutes','clearBlockUser','getLicense','catch','send'];(function(_0x304730,_0x483b78){var _0xe27bbf=function(_0xec4003){while(--_0xec4003){_0x304730['push'](_0x304730['shift']());}};_0xe27bbf(++_0x483b78);}(_0xad1c,0x1c8));var _0xcad1=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0xad1c[_0x55e08b];return _0xd1a7ff;};'use strict';var passport=require('passport');var LocalStrategy=require(_0xcad1('0x0'))['Strategy'];var moment=require('moment');var ActiveDirectory=require(_0xcad1('0x1'));var BPromise=require(_0xcad1('0x2'));var util=require(_0xcad1('0x3'));var db=require(_0xcad1('0x4'))['db'];var authService=require(_0xcad1('0x5'));var utils=require(_0xcad1('0x6'));var config=require('../../config/environment');var logger=require(_0xcad1('0x7'))('api');function isActiveDirectoryConfigured(_0x513989){var _0x57dafe=![];if(typeof _0x513989[_0xcad1('0x8')]!=='undefined'){_0x57dafe=_0x513989[_0xcad1('0x8')][_0xcad1('0x9')]&&_0x513989['activedirectory'][_0xcad1('0xa')]&&_0x513989['activedirectory'][_0xcad1('0xb')];}return _0x57dafe;}function adAuthenticate(_0x34014b,_0x45fbbb,_0x36fb5b){return new BPromise(function(_0x20c65a,_0x5a0b98){try{var _0x517b0c=new ActiveDirectory(_0x34014b);_0x517b0c[_0xcad1('0xc')](_0x45fbbb,_0x36fb5b,function(_0x49f995,_0x57549d){if(_0x49f995){logger['error'](_0xcad1('0xd'),_0x45fbbb,util['inspect'](_0x49f995,{'showHidden':![],'depth':null}));_0x5a0b98(_0xcad1('0xe'));}else if(!_0x57549d){logger['error'](_0xcad1('0xf'),_0x45fbbb);_0x5a0b98(_0xcad1('0xe'));}else{_0x20c65a(_0x57549d);}});}catch(_0x44a5cb){_0x5a0b98(_0x44a5cb);}});}function ActiveDirectoryAuthenticate(_0x504f97,_0x32c10a,_0x55517f,_0x4c037b){var _0x32b4fd,_0x3545f4;if(!isActiveDirectoryConfigured(config)){logger[_0xcad1('0x10')](_0xcad1('0x11'),_0x32c10a);return _0x4c037b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0xcad1('0x12')][_0xcad1('0x13')]({'where':{'id':0x1},'attributes':[_0xcad1('0x14'),_0xcad1('0x15')],'raw':!![]})[_0xcad1('0x16')](function(_0x321808){_0x32b4fd=_0x321808;if(!_0x32b4fd[_0xcad1('0x14')]){logger['error'](_0xcad1('0x17'),_0x32c10a);throw new Error(_0xcad1('0xe'));}return _0x504f97[_0xcad1('0x13')]({'attributes':['id',_0xcad1('0x18'),_0xcad1('0x19'),_0xcad1('0x1a'),_0xcad1('0x1b'),_0xcad1('0x1c'),_0xcad1('0x1d'),_0xcad1('0x1e'),'online'],'where':{'name':_0x32c10a,'role':{'$or':['admin',_0xcad1('0x1f'),_0xcad1('0x20')]},'adSsoEnabled':!![]}});})['then'](function(_0x2193e1){if(!_0x2193e1||_0x2193e1&&_0x2193e1[_0xcad1('0x18')]!==_0x32c10a){throw new Error(_0xcad1('0xe'));}_0x3545f4=_0x2193e1;var _0x225a1c=_0x3545f4[_0xcad1('0x18')]+'@'+config[_0xcad1('0x8')]['domain'];return adAuthenticate(config[_0xcad1('0x8')],_0x225a1c,_0x55517f);})[_0xcad1('0x16')](function(_0x1d5e73){if(_0x3545f4[_0xcad1('0x1c')]){throw new Error(_0xcad1('0xe'));}if(_0x32b4fd[_0xcad1('0x15')]>0x0){if(_0x3545f4[_0xcad1('0x1d')]){if(moment(_0x3545f4['blockedAt'])[_0xcad1('0x21')](_0x32b4fd['blockDuration'],_0xcad1('0x22'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0xcad1('0x23')](_0x3545f4,0x0,![],null)[_0xcad1('0x16')](function(){return utils['getLicense'](_0x3545f4);})[_0xcad1('0x16')](function(){return _0x4c037b(null,_0x3545f4);});}else{return utils[_0xcad1('0x24')](_0x3545f4)[_0xcad1('0x16')](function(){return _0x4c037b(null,_0x3545f4);});}}else{return utils[_0xcad1('0x24')](_0x3545f4)[_0xcad1('0x16')](function(){return _0x4c037b(null,_0x3545f4);});}})[_0xcad1('0x25')](function(_0x42b205){return _0x4c037b(null,![],_0x42b205);});}function handleError(_0x28652e,_0x2a13d,_0x4da92e){return _0x28652e['status'](_0x2a13d||0x1f4)[_0xcad1('0x26')]({'message':_0x4da92e?_0x4da92e[_0xcad1('0x27')]||_0x4da92e:''});}exports['login']=function(_0x3bc7a0,_0x3b921d,_0x40491f){passport[_0xcad1('0xc')]('ad-login',function(_0x4a7d91,_0x3b1486,_0x2a48a8){var _0x51ee31=_0x4a7d91||_0x2a48a8;if(_0x51ee31){return handleError(_0x3b921d,0x191,_0x51ee31);}if(!_0x3b1486){return handleError(_0x3b921d,0x194,{'message':_0xcad1('0x28')});}else{var _0x1a5ca3={'payload':{'id':_0x3b1486['id'],'role':_0x3b1486['role']},'options':{'expiresIn':0x15180}};return authService[_0xcad1('0x29')](_0x1a5ca3)[_0xcad1('0x16')](function(_0x2b87ac){_0x3b921d[_0xcad1('0x2a')]({'id':_0x3b1486['id'],'token':_0x2b87ac,'statusCall':'','isAlreadyLogged':_0x3b1486[_0xcad1('0x2b')]});});}})(_0x3bc7a0,_0x3b921d,_0x40491f);};passport[_0xcad1('0x2c')]('ad-login',new LocalStrategy({'usernameField':_0xcad1('0x18'),'passwordField':_0xcad1('0x19')},function(_0x19a905,_0x37af19,_0x220f7c){return ActiveDirectoryAuthenticate(db['User'],_0x19a905,_0x37af19,_0x220f7c);}));
\ No newline at end of file
+var _0x8e36=['domain','add','minutes','clearBlockUser','getLicense','catch','message','login','json','use','ad-login','User','passport','passport-local','moment','activedirectory2','bluebird','util','../../components/auth/service','../../config/environment','../../config/logger','api','undefined','activedirectory','baseDN','url','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','blockedAt','online'];(function(_0x1b41c5,_0x6de6fd){var _0x1c0c8f=function(_0xd29b70){while(--_0xd29b70){_0x1b41c5['push'](_0x1b41c5['shift']());}};_0x1c0c8f(++_0x6de6fd);}(_0x8e36,0x1ce));var _0x68e3=function(_0x2bd8c3,_0x20968f){_0x2bd8c3=_0x2bd8c3-0x0;var _0x1c559f=_0x8e36[_0x2bd8c3];return _0x1c559f;};'use strict';var passport=require(_0x68e3('0x0'));var LocalStrategy=require(_0x68e3('0x1'))['Strategy'];var moment=require(_0x68e3('0x2'));var ActiveDirectory=require(_0x68e3('0x3'));var BPromise=require(_0x68e3('0x4'));var util=require(_0x68e3('0x5'));var db=require('../../mysqldb')['db'];var authService=require(_0x68e3('0x6'));var utils=require('../../config/utils');var config=require(_0x68e3('0x7'));var logger=require(_0x68e3('0x8'))(_0x68e3('0x9'));function isActiveDirectoryConfigured(_0x42e67e){var _0x18e20e=![];if(typeof _0x42e67e['activedirectory']!==_0x68e3('0xa')){_0x18e20e=_0x42e67e[_0x68e3('0xb')][_0x68e3('0xc')]&&_0x42e67e['activedirectory'][_0x68e3('0xd')]&&_0x42e67e[_0x68e3('0xb')]['domain'];}return _0x18e20e;}function adAuthenticate(_0x3841fa,_0x541deb,_0x49d991){return new BPromise(function(_0xc6f626,_0x2d206b){try{var _0x342e11=new ActiveDirectory(_0x3841fa);_0x342e11['authenticate'](_0x541deb,_0x49d991,function(_0x328abf,_0x2412e4){if(_0x328abf){logger['error'](_0x68e3('0xe'),_0x541deb,util[_0x68e3('0xf')](_0x328abf,{'showHidden':![],'depth':null}));_0x2d206b(_0x68e3('0x10'));}else if(!_0x2412e4){logger[_0x68e3('0x11')](_0x68e3('0x12'),_0x541deb);_0x2d206b(_0x68e3('0x10'));}else{_0xc6f626(_0x2412e4);}});}catch(_0x216261){_0x2d206b(_0x216261);}});}function ActiveDirectoryAuthenticate(_0x9107f0,_0x2fc7c1,_0x276294,_0x6da79){var _0x580e89,_0x37efa9;if(!isActiveDirectoryConfigured(config)){logger['error']('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x2fc7c1);return _0x6da79(null,![],{'message':_0x68e3('0x10')});}return db[_0x68e3('0x13')][_0x68e3('0x14')]({'where':{'id':0x1},'attributes':[_0x68e3('0x15'),_0x68e3('0x16')],'raw':!![]})[_0x68e3('0x17')](function(_0x396629){_0x580e89=_0x396629;if(!_0x580e89['adSsoEnabled']){logger[_0x68e3('0x11')](_0x68e3('0x18'),_0x2fc7c1);throw new Error(_0x68e3('0x10'));}return _0x9107f0['findOne']({'attributes':['id',_0x68e3('0x19'),_0x68e3('0x1a'),_0x68e3('0x1b'),_0x68e3('0x1c'),_0x68e3('0x1d'),_0x68e3('0x1e'),_0x68e3('0x1f'),_0x68e3('0x20')],'where':{'name':_0x2fc7c1,'role':{'$or':['admin','user','agent']},'adSsoEnabled':!![]}});})['then'](function(_0x49284b){if(!_0x49284b||_0x49284b&&_0x49284b[_0x68e3('0x19')]!==_0x2fc7c1){throw new Error(_0x68e3('0x10'));}_0x37efa9=_0x49284b;var _0x3aa167=_0x37efa9[_0x68e3('0x19')]+'@'+config[_0x68e3('0xb')][_0x68e3('0x21')];return adAuthenticate(config['activedirectory'],_0x3aa167,_0x276294);})[_0x68e3('0x17')](function(_0x80bcda){if(_0x37efa9[_0x68e3('0x1d')]){throw new Error(_0x68e3('0x10'));}if(_0x580e89[_0x68e3('0x16')]>0x0){if(_0x37efa9[_0x68e3('0x1e')]){if(moment(_0x37efa9[_0x68e3('0x1f')])[_0x68e3('0x22')](_0x580e89[_0x68e3('0x16')],_0x68e3('0x23'))>moment()){throw new Error(_0x68e3('0x10'));}return utils[_0x68e3('0x24')](_0x37efa9,0x0,![],null)[_0x68e3('0x17')](function(){return utils['getLicense'](_0x37efa9);})[_0x68e3('0x17')](function(){return _0x6da79(null,_0x37efa9);});}else{return utils[_0x68e3('0x25')](_0x37efa9)[_0x68e3('0x17')](function(){return _0x6da79(null,_0x37efa9);});}}else{return utils[_0x68e3('0x25')](_0x37efa9)[_0x68e3('0x17')](function(){return _0x6da79(null,_0x37efa9);});}})[_0x68e3('0x26')](function(_0x492567){return _0x6da79(null,![],_0x492567);});}function handleError(_0x35256f,_0x1f105f,_0x7219d0){return _0x35256f['status'](_0x1f105f||0x1f4)['send']({'message':_0x7219d0?_0x7219d0[_0x68e3('0x27')]||_0x7219d0:''});}exports[_0x68e3('0x28')]=function(_0x478387,_0x512664,_0x38a482){passport['authenticate']('ad-login',function(_0x57869d,_0x5461d4,_0x39bd94){var _0xceb23d=_0x57869d||_0x39bd94;if(_0xceb23d){return handleError(_0x512664,0x191,_0xceb23d);}if(!_0x5461d4){return handleError(_0x512664,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x4b16fe={'payload':{'id':_0x5461d4['id'],'role':_0x5461d4[_0x68e3('0x1c')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x4b16fe)[_0x68e3('0x17')](function(_0x3d50f8){_0x512664[_0x68e3('0x29')]({'id':_0x5461d4['id'],'token':_0x3d50f8,'statusCall':'','isAlreadyLogged':_0x5461d4['online']});});}})(_0x478387,_0x512664,_0x38a482);};passport[_0x68e3('0x2a')](_0x68e3('0x2b'),new LocalStrategy({'usernameField':_0x68e3('0x19'),'passwordField':_0x68e3('0x1a')},function(_0x17a6f4,_0x150fd7,_0x29f4b4){return ActiveDirectoryAuthenticate(db[_0x68e3('0x2c')],_0x17a6f4,_0x150fd7,_0x29f4b4);}));
\ No newline at end of file
index c3c8252..d365140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0930=['./authActiveDirectory.controller','post','exports','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0930,0x1ed));var _0x0093=function(_0x52c553,_0x273e5a){_0x52c553=_0x52c553-0x0;var _0x425607=_0x0930[_0x52c553];return _0x425607;};'use strict';var express=require(_0x0093('0x0'));var router=express[_0x0093('0x1')]();var controller=require(_0x0093('0x2'));router[_0x0093('0x3')]('/',controller['login']);module[_0x0093('0x4')]=router;
\ No newline at end of file
+var _0x3879=['post','exports','Router','./authActiveDirectory.controller'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x3879,0xfe));var _0x9387=function(_0x5cc4ac,_0x31bd5e){_0x5cc4ac=_0x5cc4ac-0x0;var _0x909a46=_0x3879[_0x5cc4ac];return _0x909a46;};'use strict';var express=require('express');var router=express[_0x9387('0x0')]();var controller=require(_0x9387('0x1'));router[_0x9387('0x2')]('/',controller['login']);module[_0x9387('0x3')]=router;
\ No newline at end of file
index 2db958a..ccc408c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x5949d0,_0x34a473){var _0x4d1c7f=function(_0x2b71d2){while(--_0x2b71d2){_0x5949d0['push'](_0x5949d0['shift']());}};_0x4d1c7f(++_0x34a473);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
+var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x5a20fa,_0x76391d){var _0x3cfb93=function(_0x51c452){while(--_0x51c452){_0x5a20fa['push'](_0x5a20fa['shift']());}};_0x3cfb93(++_0x76391d);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
index aca7c15..77a6008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85f8=['express','passport','Router','../user/user.controller.js','login','get','/callback','setTokenCookie'];(function(_0x5e1547,_0x3c8c01){var _0x5076b2=function(_0x3b30bd){while(--_0x3b30bd){_0x5e1547['push'](_0x5e1547['shift']());}};_0x5076b2(++_0x3c8c01);}(_0x85f8,0x118));var _0x885f=function(_0x439c28,_0x274bad){_0x439c28=_0x439c28-0x0;var _0x4d23dd=_0x85f8[_0x439c28];return _0x4d23dd;};'use strict';var express=require(_0x885f('0x0'));var passport=require(_0x885f('0x1'));var router=express[_0x885f('0x2')]();var controller=require('./authGoogle.controller');var userController=require(_0x885f('0x3'));var authService=require('../../components/auth/service');router['get']('/',controller[_0x885f('0x4')]);router[_0x885f('0x5')](_0x885f('0x6'),controller['callback'],authService['isMiddleware'],userController['login'],authService[_0x885f('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x7a4c=['exports','express','passport','Router','../user/user.controller.js','get','login','/callback','callback','isMiddleware','setTokenCookie'];(function(_0x3369b5,_0x49c485){var _0x478e7a=function(_0x434e36){while(--_0x434e36){_0x3369b5['push'](_0x3369b5['shift']());}};_0x478e7a(++_0x49c485);}(_0x7a4c,0x1cf));var _0xc7a4=function(_0x2c21fa,_0x5f0a10){_0x2c21fa=_0x2c21fa-0x0;var _0x5aafc6=_0x7a4c[_0x2c21fa];return _0x5aafc6;};'use strict';var express=require(_0xc7a4('0x0'));var passport=require(_0xc7a4('0x1'));var router=express[_0xc7a4('0x2')]();var controller=require('./authGoogle.controller');var userController=require(_0xc7a4('0x3'));var authService=require('../../components/auth/service');router[_0xc7a4('0x4')]('/',controller[_0xc7a4('0x5')]);router[_0xc7a4('0x4')](_0xc7a4('0x6'),controller[_0xc7a4('0x7')],authService[_0xc7a4('0x8')],userController[_0xc7a4('0x5')],authService[_0xc7a4('0x9')]);module[_0xc7a4('0xa')]=router;
\ No newline at end of file
index 837a753..d614179 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e7d=['headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordToken','local-login','util','passport','jayson/promise','lodash','moment','../../mysqldb','../../components/auth/service','../../config/utils','http','Setting','allowedLoginAttempts','then','findOne','password','salt','role','blocked','blockedAt','loginAttempts','admin','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','disabled','blockDuration','add','minutes','clearBlockUser','getLicense','catch','find','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','\x22%s\x22\x20<%s>','email','request','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','json','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'];(function(_0x43e19a,_0x3127f2){var _0x35099e=function(_0x3bbc47){while(--_0x3bbc47){_0x43e19a['push'](_0x43e19a['shift']());}};_0x35099e(++_0x3127f2);}(_0x5e7d,0xb8));var _0xd5e7=function(_0x3de0d9,_0x2ccb8f){_0x3de0d9=_0x3de0d9-0x0;var _0x161cd9=_0x5e7d[_0x3de0d9];return _0x161cd9;};'use strict';var util=require(_0xd5e7('0x0'));var passport=require(_0xd5e7('0x1'));var LocalStrategy=require('passport-local')['Strategy'];var jayson=require(_0xd5e7('0x2'));var _=require(_0xd5e7('0x3'));var rs=require('randomstring');var moment=require(_0xd5e7('0x4'));var db=require(_0xd5e7('0x5'))['db'];var authService=require(_0xd5e7('0x6'));var utils=require(_0xd5e7('0x7'));var client=jayson['client'][_0xd5e7('0x8')]({'port':0x232b});function localAuthenticate(_0x2fbd1e,_0x5217b4,_0x39ae3a,_0x10f943){var _0x3d9498,_0x412c98;return db[_0xd5e7('0x9')]['findOne']({'where':{'id':0x1},'attributes':[_0xd5e7('0xa'),'blockDuration'],'raw':!![]})[_0xd5e7('0xb')](function(_0x12525c){_0x3d9498=_0x12525c;return _0x2fbd1e[_0xd5e7('0xc')]({'attributes':['id','name',_0xd5e7('0xd'),_0xd5e7('0xe'),_0xd5e7('0xf'),'disabled',_0xd5e7('0x10'),_0xd5e7('0x11'),_0xd5e7('0x12')],'where':{'name':_0x5217b4,'role':{'$or':[_0xd5e7('0x13'),_0xd5e7('0x14'),_0xd5e7('0x15')]}}});})[_0xd5e7('0xb')](function(_0x5e6d0a){if(!_0x5e6d0a||_0x5e6d0a&&_0x5e6d0a[_0xd5e7('0x16')]!==_0x5217b4){throw new Error(_0xd5e7('0x17'));}else{_0x412c98=_0x5e6d0a;return _0x412c98;}})[_0xd5e7('0xb')](function(){_0x412c98['authenticate'](_0x39ae3a,function(_0x158572,_0x41f3b0){var _0x2c8882=_0x412c98['loginAttempts']+0x1;if(_0x158572){return _0x10f943(_0x158572);}else if(!_0x41f3b0){if(_0x412c98[_0xd5e7('0x18')]){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else if(_0x3d9498[_0xd5e7('0xa')]>0x0){if(_0x412c98[_0xd5e7('0x10')]){if(_0x3d9498[_0xd5e7('0x19')]>0x0){if(moment(_0x412c98[_0xd5e7('0x11')])[_0xd5e7('0x1a')](_0x3d9498['blockDuration'],_0xd5e7('0x1b'))>moment()){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else{return utils[_0xd5e7('0x1c')](_0x412c98,_0x2c8882,![],null)[_0xd5e7('0xb')](function(){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});});}}else{return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}}else{if(_0x2c8882>=_0x3d9498[_0xd5e7('0xa')]){return utils[_0xd5e7('0x1c')](_0x412c98,0x0,!![],moment())[_0xd5e7('0xb')](function(){return _0x10f943(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xd5e7('0x1c')](_0x412c98,_0x2c8882,![],null)[_0xd5e7('0xb')](function(){return _0x10f943(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}}else{if(_0x412c98[_0xd5e7('0x18')]){return _0x10f943(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x3d9498['allowedLoginAttempts']>0x0){if(_0x412c98[_0xd5e7('0x10')]){if(_0x3d9498[_0xd5e7('0x19')]>0x0){if(moment(_0x412c98[_0xd5e7('0x11')])[_0xd5e7('0x1a')](_0x3d9498[_0xd5e7('0x19')],_0xd5e7('0x1b'))>moment()){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else{return utils['clearBlockUser'](_0x412c98,0x0,![],null)[_0xd5e7('0xb')](function(){return utils['getLicense'](_0x412c98);})[_0xd5e7('0xb')](function(){return _0x10f943(null,_0x412c98);});}}else{return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}}else{return utils[_0xd5e7('0x1c')](_0x412c98,0x0,![],null)[_0xd5e7('0xb')](function(){return utils[_0xd5e7('0x1d')](_0x412c98);})['then'](function(){return _0x10f943(null,_0x412c98);})['catch'](function(_0x5c8669){return _0x10f943(null,![],_0x5c8669);});}}else{if(_0x412c98[_0xd5e7('0x10')]){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else{return utils[_0xd5e7('0x1d')](_0x412c98)['then'](function(){return _0x10f943(null,_0x412c98);});}}}});})[_0xd5e7('0x1e')](function(_0x5ef213){return _0x10f943(null,![],_0x5ef213);});}function sendServiceMail(_0x14b99){return db['MailAccount'][_0xd5e7('0x1f')]({'where':{'service':!![]},'attributes':['id',_0xd5e7('0x16'),'email'],'include':[{'model':db[_0xd5e7('0x20')],'as':_0xd5e7('0x21'),'include':[{'model':db[_0xd5e7('0x22')],'as':_0xd5e7('0x22')}]}]})[_0xd5e7('0xb')](function(_0x6dcf49){if(!_0x6dcf49){throw new Error(_0xd5e7('0x23'));}var _0x4ea0a5=_0x6dcf49[_0xd5e7('0x24')]();var _0x25f521={'account':_0x4ea0a5,'message':_[_0xd5e7('0x25')]({'from':util['format'](_0xd5e7('0x26'),_0x6dcf49[_0xd5e7('0x16')],_0x6dcf49[_0xd5e7('0x27')]||_0x6dcf49[_0xd5e7('0x21')][_0xd5e7('0x14')])},_0x14b99)};return client[_0xd5e7('0x28')](_0xd5e7('0x29'),_0x25f521);})[_0xd5e7('0xb')](function(_0x4b324e){if(_0x4b324e[_0xd5e7('0x2a')]){throw new Error(util[_0xd5e7('0x2b')](_0xd5e7('0x2c'),_0x4b324e[_0xd5e7('0x2a')][_0xd5e7('0x2d')]||JSON[_0xd5e7('0x2e')](_0x4b324e[_0xd5e7('0x2a')])));}return!![];});}function handleError(_0x195b9b,_0x1a9798,_0x299a7d){return _0x195b9b[_0xd5e7('0x2f')](_0x1a9798||0x1f4)[_0xd5e7('0x30')]({'message':_0x299a7d?_0x299a7d[_0xd5e7('0x2d')]||_0x299a7d:''});}exports[_0xd5e7('0x31')]=function(_0x4ea092,_0x56d78d,_0x1217c8){passport['authenticate']('local-login',function(_0x184638,_0x2bcf2b,_0x19635c){var _0x50812d=_0x184638||_0x19635c;if(_0x50812d){return handleError(_0x56d78d,0x191,_0x50812d);}if(!_0x2bcf2b){return handleError(_0x56d78d,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x274f15={'payload':{'id':_0x2bcf2b['id'],'role':_0x2bcf2b[_0xd5e7('0xf')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x274f15)[_0xd5e7('0xb')](function(_0x13515e){_0x56d78d[_0xd5e7('0x32')]({'id':_0x2bcf2b['id'],'token':_0x13515e,'statusCall':'','isAlreadyLogged':_0x2bcf2b[_0xd5e7('0x33')]});});}})(_0x4ea092,_0x56d78d,_0x1217c8);};exports[_0xd5e7('0x34')]=function(_0x19860d,_0x4fbef5){if(!_0x19860d['body'][_0xd5e7('0x27')]){return handleError(_0x4fbef5,0x1f4,{'message':_0xd5e7('0x35')});}var _0x8134ac=rs[_0xd5e7('0x36')]();_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')]=_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')][_0xd5e7('0x38')]()[_0xd5e7('0x39')]();var _0x2aad51;return db[_0xd5e7('0x9')][_0xd5e7('0xc')]({'where':{'id':0x1},'attributes':[_0xd5e7('0xa'),_0xd5e7('0x19')],'raw':!![]})[_0xd5e7('0xb')](function(_0x104dd8){_0x2aad51=_0x104dd8;return db[_0xd5e7('0x3a')][_0xd5e7('0x1f')]({'where':{'email':_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')]}});})[_0xd5e7('0xb')](function(_0xf23434){if(!_0xf23434){throw new Error(_0xd5e7('0x3b'));}if(_0xf23434['disabled']){throw new Error(_0xd5e7('0x3c'));}if(_0xf23434[_0xd5e7('0x10')]){if(moment(_0xf23434[_0xd5e7('0x11')])[_0xd5e7('0x1a')](_0x2aad51[_0xd5e7('0x19')],_0xd5e7('0x1b'))>moment()){throw new Error(_0xd5e7('0x3d'));}else{_0xf23434[_0xd5e7('0x10')]=![];_0xf23434['blockedAt']=null;}}_0xf23434['resetPasswordToken']=_0x8134ac;_0xf23434[_0xd5e7('0x3e')]=Date[_0xd5e7('0x3f')]()+0x36ee80;return _0xf23434[_0xd5e7('0x40')]();})[_0xd5e7('0xb')](function(){return sendServiceMail({'to':_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')],'subject':_0xd5e7('0x41'),'text':_0xd5e7('0x42')+_0xd5e7('0x43')+'https://'+_0x19860d[_0xd5e7('0x44')][_0xd5e7('0x45')]+_0xd5e7('0x46')+_0x8134ac+'\x0a\x0a'+_0xd5e7('0x47')});})[_0xd5e7('0xb')](function(){_0x4fbef5['status'](0xc8)[_0xd5e7('0x30')]({'message':_0xd5e7('0x48')});})[_0xd5e7('0x1e')](function(_0x1bd183){return handleError(_0x4fbef5,0x1f4,_0x1bd183);});};exports[_0xd5e7('0x49')]=function(_0x2bf2b9,_0x38d88f){return db[_0xd5e7('0x3a')]['find']({'where':{'resetPasswordToken':_0x2bf2b9[_0xd5e7('0x4a')][_0xd5e7('0x4b')],'resetPasswordExpires':{'$gt':Date['now']()}}})['then'](function(_0x1a63ba){if(!_0x1a63ba){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xd5e7('0x9')]['findOne']({'attributes':['id',_0xd5e7('0x4c'),_0xd5e7('0x4d'),_0xd5e7('0x4e')]})[_0xd5e7('0xb')](function(_0x5ab9c6){if(_0x5ab9c6[_0xd5e7('0x4c')])authService[_0xd5e7('0x4f')](_0x2bf2b9[_0xd5e7('0x37')]['password']);if(!_0x5ab9c6[_0xd5e7('0x4d')]||!_0x1a63ba[_0xd5e7('0x50')])return _0x1a63ba;authService[_0xd5e7('0x51')](_0x2bf2b9[_0xd5e7('0x37')]['password'],_0x1a63ba[_0xd5e7('0x50')],_0x5ab9c6['passwordHistoryLimit']);return _0x1a63ba;})[_0xd5e7('0xb')](function(){_0x1a63ba['password']=_0x2bf2b9[_0xd5e7('0x37')][_0xd5e7('0xd')];_0x1a63ba[_0xd5e7('0x52')]=null;_0x1a63ba[_0xd5e7('0x3e')]=null;return _0x1a63ba['save']();});})[_0xd5e7('0xb')](function(){_0x38d88f[_0xd5e7('0x2f')](0xc8)['send']({'message':'Password\x20reset!'});})['catch'](function(_0x36092d){return handleError(_0x38d88f,0x1f4,_0x36092d);});};passport['use'](_0xd5e7('0x53'),new LocalStrategy({'usernameField':_0xd5e7('0x16'),'passwordField':_0xd5e7('0xd')},function(_0x228cfb,_0x2aa4bf,_0x36b0cb){return localAuthenticate(db[_0xd5e7('0x3a')],_0x228cfb,_0x2aa4bf,_0x36b0cb);}));
\ No newline at end of file
+var _0x13be=['SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local-login','json','online','forgot','body','generate','trim','toLowerCase','Setting','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','Password\x20reset!','use','passport','passport-local','Strategy','jayson/promise','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','findOne','allowedLoginAttempts','then','password','role','blocked','blockedAt','loginAttempts','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','blockDuration','add','minutes','clearBlockUser','getLicense','catch','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x13be,0x7d));var _0xe13b=function(_0x47505b,_0xf838db){_0x47505b=_0x47505b-0x0;var _0x318935=_0x13be[_0x47505b];return _0x318935;};'use strict';var util=require('util');var passport=require(_0xe13b('0x0'));var LocalStrategy=require(_0xe13b('0x1'))[_0xe13b('0x2')];var jayson=require(_0xe13b('0x3'));var _=require('lodash');var rs=require(_0xe13b('0x4'));var moment=require(_0xe13b('0x5'));var db=require(_0xe13b('0x6'))['db'];var authService=require(_0xe13b('0x7'));var utils=require(_0xe13b('0x8'));var client=jayson[_0xe13b('0x9')][_0xe13b('0xa')]({'port':0x232b});function localAuthenticate(_0x5eb5a2,_0x44b112,_0x55bef2,_0x347f5a){var _0x270636,_0x4ac70f;return db['Setting'][_0xe13b('0xb')]({'where':{'id':0x1},'attributes':[_0xe13b('0xc'),'blockDuration'],'raw':!![]})[_0xe13b('0xd')](function(_0x3e557e){_0x270636=_0x3e557e;return _0x5eb5a2[_0xe13b('0xb')]({'attributes':['id','name',_0xe13b('0xe'),'salt',_0xe13b('0xf'),'disabled',_0xe13b('0x10'),_0xe13b('0x11'),_0xe13b('0x12')],'where':{'name':_0x44b112,'role':{'$or':['admin',_0xe13b('0x13'),_0xe13b('0x14')]}}});})[_0xe13b('0xd')](function(_0x18978b){if(!_0x18978b||_0x18978b&&_0x18978b[_0xe13b('0x15')]!==_0x44b112){throw new Error(_0xe13b('0x16'));}else{_0x4ac70f=_0x18978b;return _0x4ac70f;}})['then'](function(){_0x4ac70f[_0xe13b('0x17')](_0x55bef2,function(_0x24e39c,_0x4108b0){var _0x38f83e=_0x4ac70f[_0xe13b('0x12')]+0x1;if(_0x24e39c){return _0x347f5a(_0x24e39c);}else if(!_0x4108b0){if(_0x4ac70f[_0xe13b('0x18')]){return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}else if(_0x270636[_0xe13b('0xc')]>0x0){if(_0x4ac70f[_0xe13b('0x10')]){if(_0x270636[_0xe13b('0x19')]>0x0){if(moment(_0x4ac70f[_0xe13b('0x11')])[_0xe13b('0x1a')](_0x270636['blockDuration'],_0xe13b('0x1b'))>moment()){return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}else{return utils[_0xe13b('0x1c')](_0x4ac70f,_0x38f83e,![],null)[_0xe13b('0xd')](function(){return _0x347f5a(null,![],{'message':_0xe13b('0x16')});});}}else{return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}}else{if(_0x38f83e>=_0x270636[_0xe13b('0xc')]){return utils[_0xe13b('0x1c')](_0x4ac70f,0x0,!![],moment())[_0xe13b('0xd')](function(){return _0x347f5a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils['clearBlockUser'](_0x4ac70f,_0x38f83e,![],null)['then'](function(){return _0x347f5a(null,![],{'message':_0xe13b('0x16')});});}}}else{return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}}else{if(_0x4ac70f[_0xe13b('0x18')]){return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}else if(_0x270636[_0xe13b('0xc')]>0x0){if(_0x4ac70f[_0xe13b('0x10')]){if(_0x270636[_0xe13b('0x19')]>0x0){if(moment(_0x4ac70f['blockedAt'])[_0xe13b('0x1a')](_0x270636[_0xe13b('0x19')],'minutes')>moment()){return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}else{return utils[_0xe13b('0x1c')](_0x4ac70f,0x0,![],null)['then'](function(){return utils[_0xe13b('0x1d')](_0x4ac70f);})[_0xe13b('0xd')](function(){return _0x347f5a(null,_0x4ac70f);});}}else{return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}}else{return utils['clearBlockUser'](_0x4ac70f,0x0,![],null)[_0xe13b('0xd')](function(){return utils[_0xe13b('0x1d')](_0x4ac70f);})[_0xe13b('0xd')](function(){return _0x347f5a(null,_0x4ac70f);})[_0xe13b('0x1e')](function(_0x43c3cc){return _0x347f5a(null,![],_0x43c3cc);});}}else{if(_0x4ac70f[_0xe13b('0x10')]){return _0x347f5a(null,![],{'message':_0xe13b('0x16')});}else{return utils[_0xe13b('0x1d')](_0x4ac70f)['then'](function(){return _0x347f5a(null,_0x4ac70f);});}}}});})[_0xe13b('0x1e')](function(_0x3a6bbb){return _0x347f5a(null,![],_0x3a6bbb);});}function sendServiceMail(_0x4ff256){return db['MailAccount'][_0xe13b('0x1f')]({'where':{'service':!![]},'attributes':['id',_0xe13b('0x15'),_0xe13b('0x20')],'include':[{'model':db[_0xe13b('0x21')],'as':_0xe13b('0x22'),'include':[{'model':db[_0xe13b('0x23')],'as':_0xe13b('0x23')}]}]})[_0xe13b('0xd')](function(_0x4cd810){if(!_0x4cd810){throw new Error(_0xe13b('0x24'));}var _0x4963d4=_0x4cd810[_0xe13b('0x25')]();var _0x33dad7={'account':_0x4963d4,'message':_[_0xe13b('0x26')]({'from':util[_0xe13b('0x27')](_0xe13b('0x28'),_0x4cd810[_0xe13b('0x15')],_0x4cd810[_0xe13b('0x20')]||_0x4cd810[_0xe13b('0x22')][_0xe13b('0x13')])},_0x4ff256)};return client[_0xe13b('0x29')]('SendMail',_0x33dad7);})[_0xe13b('0xd')](function(_0x17b676){if(_0x17b676[_0xe13b('0x2a')]){throw new Error(util['format'](_0xe13b('0x2b'),_0x17b676['error'][_0xe13b('0x2c')]||JSON[_0xe13b('0x2d')](_0x17b676[_0xe13b('0x2a')])));}return!![];});}function handleError(_0x1b730a,_0x5bddd7,_0x15eaa1){return _0x1b730a[_0xe13b('0x2e')](_0x5bddd7||0x1f4)[_0xe13b('0x2f')]({'message':_0x15eaa1?_0x15eaa1[_0xe13b('0x2c')]||_0x15eaa1:''});}exports[_0xe13b('0x30')]=function(_0x99c78c,_0x255b72,_0x1b2d50){passport['authenticate'](_0xe13b('0x31'),function(_0x3da805,_0x425a51,_0x54c38c){var _0x1fcb63=_0x3da805||_0x54c38c;if(_0x1fcb63){return handleError(_0x255b72,0x191,_0x1fcb63);}if(!_0x425a51){return handleError(_0x255b72,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x4c776b={'payload':{'id':_0x425a51['id'],'role':_0x425a51[_0xe13b('0xf')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x4c776b)['then'](function(_0x2f7bf1){_0x255b72[_0xe13b('0x32')]({'id':_0x425a51['id'],'token':_0x2f7bf1,'statusCall':'','isAlreadyLogged':_0x425a51[_0xe13b('0x33')]});});}})(_0x99c78c,_0x255b72,_0x1b2d50);};exports[_0xe13b('0x34')]=function(_0x302246,_0x2345ac){if(!_0x302246[_0xe13b('0x35')][_0xe13b('0x20')]){return handleError(_0x2345ac,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x2a54b3=rs[_0xe13b('0x36')]();_0x302246[_0xe13b('0x35')][_0xe13b('0x20')]=_0x302246[_0xe13b('0x35')]['email'][_0xe13b('0x37')]()[_0xe13b('0x38')]();var _0x2b5f52;return db[_0xe13b('0x39')][_0xe13b('0xb')]({'where':{'id':0x1},'attributes':[_0xe13b('0xc'),_0xe13b('0x19')],'raw':!![]})[_0xe13b('0xd')](function(_0x4aed39){_0x2b5f52=_0x4aed39;return db[_0xe13b('0x3a')][_0xe13b('0x1f')]({'where':{'email':_0x302246[_0xe13b('0x35')][_0xe13b('0x20')]}});})[_0xe13b('0xd')](function(_0x54da8a){if(!_0x54da8a){throw new Error(_0xe13b('0x3b'));}if(_0x54da8a[_0xe13b('0x18')]){throw new Error(_0xe13b('0x3c'));}if(_0x54da8a[_0xe13b('0x10')]){if(moment(_0x54da8a[_0xe13b('0x11')])[_0xe13b('0x1a')](_0x2b5f52['blockDuration'],_0xe13b('0x1b'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x54da8a[_0xe13b('0x10')]=![];_0x54da8a[_0xe13b('0x11')]=null;}}_0x54da8a[_0xe13b('0x3d')]=_0x2a54b3;_0x54da8a[_0xe13b('0x3e')]=Date[_0xe13b('0x3f')]()+0x36ee80;return _0x54da8a[_0xe13b('0x40')]();})[_0xe13b('0xd')](function(){return sendServiceMail({'to':_0x302246[_0xe13b('0x35')][_0xe13b('0x20')],'subject':_0xe13b('0x41'),'text':_0xe13b('0x42')+_0xe13b('0x43')+_0xe13b('0x44')+_0x302246[_0xe13b('0x45')][_0xe13b('0x46')]+_0xe13b('0x47')+_0x2a54b3+'\x0a\x0a'+_0xe13b('0x48')});})[_0xe13b('0xd')](function(){_0x2345ac['status'](0xc8)[_0xe13b('0x2f')]({'message':'Reset\x20Email\x20sent!'});})[_0xe13b('0x1e')](function(_0x4e2133){return handleError(_0x2345ac,0x1f4,_0x4e2133);});};exports['reset']=function(_0x1dbcdf,_0x4204b0){return db[_0xe13b('0x3a')][_0xe13b('0x1f')]({'where':{'resetPasswordToken':_0x1dbcdf[_0xe13b('0x49')][_0xe13b('0x4a')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0xe13b('0xd')](function(_0x2b0f54){if(!_0x2b0f54){throw new Error(_0xe13b('0x4b'));}return db['Setting'][_0xe13b('0xb')]({'attributes':['id',_0xe13b('0x4c'),_0xe13b('0x4d'),_0xe13b('0x4e')]})[_0xe13b('0xd')](function(_0x40b236){if(_0x40b236[_0xe13b('0x4c')])authService[_0xe13b('0x4f')](_0x1dbcdf['body']['password']);if(!_0x40b236[_0xe13b('0x4d')]||!_0x2b0f54[_0xe13b('0x50')])return _0x2b0f54;authService[_0xe13b('0x51')](_0x1dbcdf['body'][_0xe13b('0xe')],_0x2b0f54['previousPasswords'],_0x40b236['passwordHistoryLimit']);return _0x2b0f54;})[_0xe13b('0xd')](function(){_0x2b0f54['password']=_0x1dbcdf[_0xe13b('0x35')]['password'];_0x2b0f54['resetPasswordToken']=null;_0x2b0f54[_0xe13b('0x3e')]=null;return _0x2b0f54['save']();});})[_0xe13b('0xd')](function(){_0x4204b0[_0xe13b('0x2e')](0xc8)[_0xe13b('0x2f')]({'message':_0xe13b('0x52')});})[_0xe13b('0x1e')](function(_0xf6b3b){return handleError(_0x4204b0,0x1f4,_0xf6b3b);});};passport[_0xe13b('0x53')](_0xe13b('0x31'),new LocalStrategy({'usernameField':_0xe13b('0x15'),'passwordField':_0xe13b('0xe')},function(_0x44f9c3,_0xbbfbb4,_0x453ecc){return localAuthenticate(db[_0xe13b('0x3a')],_0x44f9c3,_0xbbfbb4,_0x453ecc);}));
\ No newline at end of file
index 35d7c1a..8f0a577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb9=['express','Router','./authLocal.controller','post','login','/forgot','forgot','reset'];(function(_0x4bb593,_0x272ed0){var _0x2da2d8=function(_0x4b25e9){while(--_0x4b25e9){_0x4bb593['push'](_0x4bb593['shift']());}};_0x2da2d8(++_0x272ed0);}(_0xdeb9,0x68));var _0x9deb=function(_0x2aa9d6,_0x309e34){_0x2aa9d6=_0x2aa9d6-0x0;var _0x23f553=_0xdeb9[_0x2aa9d6];return _0x23f553;};'use strict';var express=require(_0x9deb('0x0'));var router=express[_0x9deb('0x1')]();var controller=require(_0x9deb('0x2'));router[_0x9deb('0x3')]('/',controller[_0x9deb('0x4')]);router[_0x9deb('0x3')](_0x9deb('0x5'),controller[_0x9deb('0x6')]);router[_0x9deb('0x3')]('/reset/:token',controller[_0x9deb('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x7a9f=['exports','express','./authLocal.controller','post','login','/forgot','forgot','/reset/:token','reset'];(function(_0x2ba24f,_0x2fd89a){var _0x39123c=function(_0x548fd5){while(--_0x548fd5){_0x2ba24f['push'](_0x2ba24f['shift']());}};_0x39123c(++_0x2fd89a);}(_0x7a9f,0x1ba));var _0xf7a9=function(_0x4db4e1,_0x32ffc6){_0x4db4e1=_0x4db4e1-0x0;var _0x1d9b3c=_0x7a9f[_0x4db4e1];return _0x1d9b3c;};'use strict';var express=require(_0xf7a9('0x0'));var router=express['Router']();var controller=require(_0xf7a9('0x1'));router[_0xf7a9('0x2')]('/',controller[_0xf7a9('0x3')]);router[_0xf7a9('0x2')](_0xf7a9('0x4'),controller[_0xf7a9('0x5')]);router[_0xf7a9('0x2')](_0xf7a9('0x6'),controller[_0xf7a9('0x7')]);module[_0xf7a9('0x8')]=router;
\ No newline at end of file
index 2e70610..4464f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5e=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x5da8e9,_0x3beb32){var _0x24a605=function(_0x284ab3){while(--_0x284ab3){_0x5da8e9['push'](_0x5da8e9['shift']());}};_0x24a605(++_0x3beb32);}(_0xee5e,0x84));var _0xeee5=function(_0x276c1c,_0x54f43f){_0x276c1c=_0x276c1c-0x0;var _0xd440a0=_0xee5e[_0x276c1c];return _0xd440a0;};'use strict';var Sequelize=require(_0xeee5('0x0'));module[_0xeee5('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0xeee5('0x2')]},'description':{'type':Sequelize[_0xeee5('0x2')]},'status':{'type':Sequelize[_0xeee5('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xeee5('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x7cf9=['sequelize','exports','STRING','INTEGER'];(function(_0x5df0ec,_0x4e9dd0){var _0x4c08a1=function(_0x5c5a53){while(--_0x5c5a53){_0x5df0ec['push'](_0x5df0ec['shift']());}};_0x4c08a1(++_0x4e9dd0);}(_0x7cf9,0xdc));var _0x97cf=function(_0x2f168a,_0x2e7371){_0x2f168a=_0x2f168a-0x0;var _0x279e5b=_0x7cf9[_0x2f168a];return _0x279e5b;};'use strict';var Sequelize=require(_0x97cf('0x0'));module[_0x97cf('0x1')]={'name':{'type':Sequelize[_0x97cf('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x97cf('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x97cf('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 30cc95f..cc74ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4939=['offset','undefined','limit','count','status','set','apply','update','then','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','sort','where','filter','merge','VIRTUAL','options','Automation','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','destroy','Condition','addConditions','ids','findOne','order','pick','getConditions','hasOwnProperty','nolimit','addActions','Action','omit','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','json'];(function(_0x2655bb,_0x45b1c1){var _0x40abb1=function(_0x3d781c){while(--_0x3d781c){_0x2655bb['push'](_0x2655bb['shift']());}};_0x40abb1(++_0x45b1c1);}(_0x4939,0xdc));var _0x9493=function(_0x1d1f59,_0x4ca321){_0x1d1f59=_0x1d1f59-0x0;var _0x5df55a=_0x4939[_0x1d1f59];return _0x5df55a;};'use strict';var emlformat=require(_0x9493('0x0'));var rimraf=require(_0x9493('0x1'));var zipdir=require(_0x9493('0x2'));var jsonpatch=require(_0x9493('0x3'));var rp=require('request-promise');var moment=require(_0x9493('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9493('0x5'));var util=require('util');var path=require(_0x9493('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9493('0x7'));var _=require(_0x9493('0x8'));var squel=require(_0x9493('0x9'));var crypto=require(_0x9493('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9493('0xb'));var toCsv=require(_0x9493('0xc'));var querystring=require(_0x9493('0xd'));var Papa=require(_0x9493('0xe'));var Redis=require(_0x9493('0xf'));var authService=require(_0x9493('0x10'));var qs=require(_0x9493('0x11'));var as=require(_0x9493('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9493('0x13'))(_0x9493('0x14'));var utils=require(_0x9493('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9493('0x16'));var db=require(_0x9493('0x17'))['db'];function respondWithStatusCode(_0xce55d9,_0x527c65){_0x527c65=_0x527c65||0xcc;return function(_0x381697){if(_0x381697){return _0xce55d9['sendStatus'](_0x527c65);}return _0xce55d9['status'](_0x527c65)[_0x9493('0x18')]();};}function respondWithResult(_0x3ac6a5,_0x368f6d){_0x368f6d=_0x368f6d||0xc8;return function(_0x2648f2){if(_0x2648f2){return _0x3ac6a5['status'](_0x368f6d)[_0x9493('0x19')](_0x2648f2);}};}function respondWithFilteredResult(_0x3349d9,_0xf64cf){return function(_0x31015b){if(_0x31015b){var _0x56b8c6=typeof _0xf64cf[_0x9493('0x1a')]===_0x9493('0x1b')&&typeof _0xf64cf[_0x9493('0x1c')]==='undefined';var _0x1cff0e=_0x31015b[_0x9493('0x1d')];var _0x135125=_0x56b8c6?0x0:_0xf64cf[_0x9493('0x1a')];var _0x1e6f71=_0x56b8c6?_0x31015b[_0x9493('0x1d')]:_0xf64cf['offset']+_0xf64cf[_0x9493('0x1c')];var _0x32b7bf;if(_0x1e6f71>=_0x1cff0e){_0x1e6f71=_0x1cff0e;_0x32b7bf=0xc8;}else{_0x32b7bf=0xce;}_0x3349d9[_0x9493('0x1e')](_0x32b7bf);return _0x3349d9[_0x9493('0x1f')]('Content-Range',_0x135125+'-'+_0x1e6f71+'/'+_0x1cff0e)[_0x9493('0x19')](_0x31015b);}return null;};}function patchUpdates(_0x3e7d60){return function(_0x4d15ce){try{jsonpatch[_0x9493('0x20')](_0x4d15ce,_0x3e7d60,!![]);}catch(_0xf9cab1){return BPromise['reject'](_0xf9cab1);}return _0x4d15ce['save']();};}function saveUpdates(_0x580945,_0x2fe55a){return function(_0x4a6b06){if(_0x4a6b06){return _0x4a6b06[_0x9493('0x21')](_0x580945)[_0x9493('0x22')](function(_0x1dd760){return _0x1dd760;});}return null;};}function removeEntity(_0x48cc56,_0x1abbff){return function(_0x1a98b0){if(_0x1a98b0){return _0x1a98b0['destroy']()[_0x9493('0x22')](function(){_0x48cc56[_0x9493('0x1e')](0xcc)[_0x9493('0x18')]();});}};}function handleEntityNotFound(_0x3b7415,_0x22eb60){return function(_0x2a79f5){if(!_0x2a79f5){_0x3b7415['sendStatus'](0x194);}return _0x2a79f5;};}function handleError(_0x469124,_0xe97477){_0xe97477=_0xe97477||0x1f4;return function(_0x3dcfb0){logger['error'](_0x3dcfb0[_0x9493('0x23')]);if(_0x3dcfb0[_0x9493('0x24')]){delete _0x3dcfb0['name'];}_0x469124[_0x9493('0x1e')](_0xe97477)[_0x9493('0x25')](_0x3dcfb0);};}exports[_0x9493('0x26')]=function(_0x2e20ce,_0xecb59d){var _0x2cf11d={},_0x11aaac={},_0x128841={'count':0x0,'rows':[]};var _0x521cc8=_[_0x9493('0x27')](db['Automation'][_0x9493('0x28')],function(_0x3ca560){return{'name':_0x3ca560['fieldName'],'type':_0x3ca560[_0x9493('0x29')][_0x9493('0x2a')]};});_0x11aaac[_0x9493('0x2b')]=_[_0x9493('0x27')](_0x521cc8,_0x9493('0x24'));_0x11aaac[_0x9493('0x2c')]=_['keys'](_0x2e20ce['query']);_0x11aaac[_0x9493('0x2d')]=_[_0x9493('0x2e')](_0x11aaac[_0x9493('0x2b')],_0x11aaac['query']);_0x2cf11d['attributes']=_['intersection'](_0x11aaac[_0x9493('0x2b')],qs[_0x9493('0x2f')](_0x2e20ce[_0x9493('0x2c')][_0x9493('0x2f')]));_0x2cf11d[_0x9493('0x30')]=_0x2cf11d['attributes'][_0x9493('0x31')]?_0x2cf11d['attributes']:_0x11aaac[_0x9493('0x2b')];if(!_0x2e20ce[_0x9493('0x2c')]['hasOwnProperty']('nolimit')){_0x2cf11d[_0x9493('0x1c')]=qs[_0x9493('0x1c')](_0x2e20ce[_0x9493('0x2c')][_0x9493('0x1c')]);_0x2cf11d['offset']=qs[_0x9493('0x1a')](_0x2e20ce[_0x9493('0x2c')]['offset']);}_0x2cf11d['order']=qs[_0x9493('0x32')](_0x2e20ce[_0x9493('0x2c')][_0x9493('0x32')]);_0x2cf11d[_0x9493('0x33')]=qs['filters'](_['pick'](_0x2e20ce[_0x9493('0x2c')],_0x11aaac[_0x9493('0x2d')]),_0x521cc8);if(_0x2e20ce[_0x9493('0x2c')][_0x9493('0x34')]){_0x2cf11d['where']=_[_0x9493('0x35')](_0x2cf11d[_0x9493('0x33')],{'$or':_['map'](_0x521cc8,function(_0x1e1d19){if(_0x1e1d19[_0x9493('0x29')]!==_0x9493('0x36')){var _0x3ed288={};_0x3ed288[_0x1e1d19[_0x9493('0x24')]]={'$like':'%'+_0x2e20ce['query'][_0x9493('0x34')]+'%'};return _0x3ed288;}})});}_0x2cf11d=_[_0x9493('0x35')]({},_0x2cf11d,_0x2e20ce[_0x9493('0x37')]);var _0x3fb322={'where':_0x2cf11d[_0x9493('0x33')]};return db[_0x9493('0x38')][_0x9493('0x1d')](_0x3fb322)[_0x9493('0x22')](function(_0x3b8c2a){_0x128841[_0x9493('0x1d')]=_0x3b8c2a;if(_0x2e20ce[_0x9493('0x2c')][_0x9493('0x39')]){_0x2cf11d[_0x9493('0x3a')]=[{'all':!![]}];}return db[_0x9493('0x38')][_0x9493('0x3b')](_0x2cf11d);})['then'](function(_0xcb7d84){_0x128841[_0x9493('0x3c')]=_0xcb7d84;return _0x128841;})[_0x9493('0x22')](respondWithFilteredResult(_0xecb59d,_0x2cf11d))[_0x9493('0x3d')](handleError(_0xecb59d,null));};exports[_0x9493('0x3e')]=function(_0x4d6634,_0xa2af42){var _0x3cecd4={'raw':![],'where':{'id':_0x4d6634['params']['id']}},_0x41e5ef={};_0x41e5ef['model']=_[_0x9493('0x3f')](db[_0x9493('0x38')][_0x9493('0x28')]);_0x41e5ef[_0x9493('0x2c')]=_[_0x9493('0x3f')](_0x4d6634[_0x9493('0x2c')]);_0x41e5ef['filters']=_['intersection'](_0x41e5ef[_0x9493('0x2b')],_0x41e5ef[_0x9493('0x2c')]);_0x3cecd4['attributes']=_[_0x9493('0x2e')](_0x41e5ef[_0x9493('0x2b')],qs[_0x9493('0x2f')](_0x4d6634[_0x9493('0x2c')][_0x9493('0x2f')]));_0x3cecd4['attributes']=_0x3cecd4[_0x9493('0x30')][_0x9493('0x31')]?_0x3cecd4[_0x9493('0x30')]:_0x41e5ef['model'];if(_0x4d6634[_0x9493('0x2c')][_0x9493('0x39')]){_0x3cecd4[_0x9493('0x3a')]=[{'all':!![]}];}_0x3cecd4=_['merge']({},_0x3cecd4,_0x4d6634[_0x9493('0x37')]);return db[_0x9493('0x38')][_0x9493('0x40')](_0x3cecd4)[_0x9493('0x22')](handleEntityNotFound(_0xa2af42,null))[_0x9493('0x22')](respondWithResult(_0xa2af42,null))['catch'](handleError(_0xa2af42,null));};exports[_0x9493('0x41')]=function(_0x7e6449,_0x2e88dc){return db[_0x9493('0x38')][_0x9493('0x41')](_0x7e6449[_0x9493('0x42')],{})[_0x9493('0x22')](respondWithResult(_0x2e88dc,0xc9))['catch'](handleError(_0x2e88dc,null));};exports[_0x9493('0x21')]=function(_0x474bb9,_0x94f028){if(_0x474bb9[_0x9493('0x42')]['id']){delete _0x474bb9[_0x9493('0x42')]['id'];}return db['Automation']['find']({'where':{'id':_0x474bb9[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x94f028,null))['then'](saveUpdates(_0x474bb9['body'],null))[_0x9493('0x22')](respondWithResult(_0x94f028,null))['catch'](handleError(_0x94f028,null));};exports[_0x9493('0x44')]=function(_0x3ca018,_0x5165e6){return db[_0x9493('0x38')][_0x9493('0x40')]({'where':{'id':_0x3ca018[_0x9493('0x43')]['id']}})['then'](handleEntityNotFound(_0x5165e6,null))[_0x9493('0x22')](removeEntity(_0x5165e6,null))[_0x9493('0x3d')](handleError(_0x5165e6,null));};exports['addConditions']=function(_0x442a0a,_0x47db7b,_0x3b5ba4){return db[_0x9493('0x45')]['find']({'where':{'id':_0x442a0a[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x47db7b,null))[_0x9493('0x22')](function(_0x53fe16){if(_0x53fe16){return _0x53fe16[_0x9493('0x46')](_0x442a0a[_0x9493('0x42')][_0x9493('0x47')],_['omit'](_0x442a0a[_0x9493('0x42')],[_0x9493('0x47'),'id'])||{});}})[_0x9493('0x22')](respondWithResult(_0x47db7b,null))['catch'](handleError(_0x47db7b,null));};exports['getConditions']=function(_0x44e211,_0x5bdbaa,_0x2320c9){var _0x2acdd0={};var _0x2d311b={};var _0x5eeb08;var _0x3df333;return db['Automation'][_0x9493('0x48')]({'where':{'id':_0x44e211[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x5bdbaa,null))[_0x9493('0x22')](function(_0x15f892){if(_0x15f892){_0x5eeb08=_0x15f892;_0x2d311b[_0x9493('0x2b')]=_[_0x9493('0x3f')](db['Condition'][_0x9493('0x28')]);_0x2d311b[_0x9493('0x2c')]=_[_0x9493('0x3f')](_0x44e211[_0x9493('0x2c')]);_0x2d311b[_0x9493('0x2d')]=_[_0x9493('0x2e')](_0x2d311b[_0x9493('0x2b')],_0x2d311b[_0x9493('0x2c')]);_0x2acdd0[_0x9493('0x30')]=_['intersection'](_0x2d311b['model'],qs[_0x9493('0x2f')](_0x44e211[_0x9493('0x2c')][_0x9493('0x2f')]));_0x2acdd0[_0x9493('0x30')]=_0x2acdd0[_0x9493('0x30')][_0x9493('0x31')]?_0x2acdd0[_0x9493('0x30')]:_0x2d311b[_0x9493('0x2b')];_0x2acdd0[_0x9493('0x49')]=qs[_0x9493('0x32')](_0x44e211[_0x9493('0x2c')][_0x9493('0x32')]);_0x2acdd0['where']=qs[_0x9493('0x2d')](_[_0x9493('0x4a')](_0x44e211[_0x9493('0x2c')],_0x2d311b[_0x9493('0x2d')]));if(_0x44e211[_0x9493('0x2c')][_0x9493('0x34')]){_0x2acdd0[_0x9493('0x33')]=_[_0x9493('0x35')](_0x2acdd0[_0x9493('0x33')],{'$or':_['map'](_0x2acdd0['attributes'],function(_0x2ff8d8){var _0xf4d0a8={};_0xf4d0a8[_0x2ff8d8]={'$like':'%'+_0x44e211[_0x9493('0x2c')][_0x9493('0x34')]+'%'};return _0xf4d0a8;})});}_0x2acdd0=_[_0x9493('0x35')]({},_0x2acdd0,_0x44e211[_0x9493('0x37')]);return _0x5eeb08[_0x9493('0x4b')](_0x2acdd0);}})[_0x9493('0x22')](function(_0x272452){if(_0x272452){_0x3df333=_0x272452[_0x9493('0x31')];if(!_0x44e211[_0x9493('0x2c')][_0x9493('0x4c')](_0x9493('0x4d'))){_0x2acdd0[_0x9493('0x1c')]=qs['limit'](_0x44e211[_0x9493('0x2c')][_0x9493('0x1c')]);_0x2acdd0[_0x9493('0x1a')]=qs['offset'](_0x44e211['query'][_0x9493('0x1a')]);}return _0x5eeb08[_0x9493('0x4b')](_0x2acdd0);}})[_0x9493('0x22')](function(_0x588c52){if(_0x588c52){return _0x588c52?{'count':_0x3df333,'rows':_0x588c52}:null;}})[_0x9493('0x22')](respondWithResult(_0x5bdbaa,null))[_0x9493('0x3d')](handleError(_0x5bdbaa,null));};exports[_0x9493('0x4e')]=function(_0x2aeca3,_0x4dd1cd,_0xafb51){return db[_0x9493('0x4f')][_0x9493('0x40')]({'where':{'id':_0x2aeca3[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x4dd1cd,null))[_0x9493('0x22')](function(_0x4ff56b){if(_0x4ff56b){return _0x4ff56b[_0x9493('0x4e')](_0x2aeca3[_0x9493('0x42')][_0x9493('0x47')],_[_0x9493('0x50')](_0x2aeca3[_0x9493('0x42')],['ids','id'])||{});}})[_0x9493('0x22')](respondWithResult(_0x4dd1cd,null))[_0x9493('0x3d')](handleError(_0x4dd1cd,null));};exports[_0x9493('0x51')]=function(_0x25b5c4,_0x10e7ca,_0x4dc54c){var _0x57cccd={};var _0x4eeadf={};var _0x5702da;var _0xa4c8d0;return db['Automation'][_0x9493('0x48')]({'where':{'id':_0x25b5c4['params']['id']}})['then'](handleEntityNotFound(_0x10e7ca,null))[_0x9493('0x22')](function(_0x24154e){if(_0x24154e){_0x5702da=_0x24154e;_0x4eeadf[_0x9493('0x2b')]=_['keys'](db[_0x9493('0x4f')][_0x9493('0x28')]);_0x4eeadf[_0x9493('0x2c')]=_[_0x9493('0x3f')](_0x25b5c4[_0x9493('0x2c')]);_0x4eeadf[_0x9493('0x2d')]=_[_0x9493('0x2e')](_0x4eeadf[_0x9493('0x2b')],_0x4eeadf[_0x9493('0x2c')]);_0x57cccd[_0x9493('0x30')]=_[_0x9493('0x2e')](_0x4eeadf[_0x9493('0x2b')],qs[_0x9493('0x2f')](_0x25b5c4[_0x9493('0x2c')]['fields']));_0x57cccd[_0x9493('0x30')]=_0x57cccd['attributes'][_0x9493('0x31')]?_0x57cccd[_0x9493('0x30')]:_0x4eeadf['model'];_0x57cccd[_0x9493('0x49')]=qs[_0x9493('0x32')](_0x25b5c4['query']['sort']);_0x57cccd['where']=qs[_0x9493('0x2d')](_[_0x9493('0x4a')](_0x25b5c4['query'],_0x4eeadf['filters']));if(_0x25b5c4[_0x9493('0x2c')]['filter']){_0x57cccd[_0x9493('0x33')]=_[_0x9493('0x35')](_0x57cccd[_0x9493('0x33')],{'$or':_[_0x9493('0x27')](_0x57cccd[_0x9493('0x30')],function(_0x51474f){var _0x1c349e={};_0x1c349e[_0x51474f]={'$like':'%'+_0x25b5c4[_0x9493('0x2c')]['filter']+'%'};return _0x1c349e;})});}_0x57cccd=_[_0x9493('0x35')]({},_0x57cccd,_0x25b5c4['options']);return _0x5702da[_0x9493('0x51')](_0x57cccd);}})[_0x9493('0x22')](function(_0x559d52){if(_0x559d52){_0xa4c8d0=_0x559d52[_0x9493('0x31')];if(!_0x25b5c4[_0x9493('0x2c')][_0x9493('0x4c')]('nolimit')){_0x57cccd[_0x9493('0x1c')]=qs[_0x9493('0x1c')](_0x25b5c4['query'][_0x9493('0x1c')]);_0x57cccd[_0x9493('0x1a')]=qs[_0x9493('0x1a')](_0x25b5c4[_0x9493('0x2c')][_0x9493('0x1a')]);}return _0x5702da[_0x9493('0x51')](_0x57cccd);}})['then'](function(_0x4c5e84){if(_0x4c5e84){return _0x4c5e84?{'count':_0xa4c8d0,'rows':_0x4c5e84}:null;}})[_0x9493('0x22')](respondWithResult(_0x10e7ca,null))[_0x9493('0x3d')](handleError(_0x10e7ca,null));};
\ No newline at end of file
+var _0x6f14=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','apply','save','destroy','then','end','error','name','send','rawAttributes','type','key','model','map','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','Automation','includeAll','findAll','rows','params','keys','include','options','find','create','catch','body','addConditions','ids','getConditions','findOne','Condition','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring'];(function(_0x3a53c8,_0x1f39e7){var _0x5a4943=function(_0x1657ba){while(--_0x1657ba){_0x3a53c8['push'](_0x3a53c8['shift']());}};_0x5a4943(++_0x1f39e7);}(_0x6f14,0x1dc));var _0x46f1=function(_0x476558,_0x32d07f){_0x476558=_0x476558-0x0;var _0x565cca=_0x6f14[_0x476558];return _0x565cca;};'use strict';var emlformat=require(_0x46f1('0x0'));var rimraf=require(_0x46f1('0x1'));var zipdir=require(_0x46f1('0x2'));var jsonpatch=require(_0x46f1('0x3'));var rp=require('request-promise');var moment=require(_0x46f1('0x4'));var BPromise=require(_0x46f1('0x5'));var Mustache=require(_0x46f1('0x6'));var util=require('util');var path=require(_0x46f1('0x7'));var sox=require(_0x46f1('0x8'));var csv=require('to-csv');var ejs=require(_0x46f1('0x9'));var fs=require('fs');var fs_extra=require(_0x46f1('0xa'));var _=require('lodash');var squel=require(_0x46f1('0xb'));var crypto=require(_0x46f1('0xc'));var jsforce=require(_0x46f1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x46f1('0xe'));var querystring=require(_0x46f1('0xf'));var Papa=require(_0x46f1('0x10'));var Redis=require(_0x46f1('0x11'));var authService=require(_0x46f1('0x12'));var qs=require(_0x46f1('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x46f1('0x14'));var logger=require(_0x46f1('0x15'))(_0x46f1('0x16'));var utils=require(_0x46f1('0x17'));var config=require(_0x46f1('0x18'));var licenseUtil=require(_0x46f1('0x19'));var db=require(_0x46f1('0x1a'))['db'];function respondWithStatusCode(_0x46ae94,_0x2c3ddd){_0x2c3ddd=_0x2c3ddd||0xcc;return function(_0x2d6895){if(_0x2d6895){return _0x46ae94[_0x46f1('0x1b')](_0x2c3ddd);}return _0x46ae94[_0x46f1('0x1c')](_0x2c3ddd)['end']();};}function respondWithResult(_0x310175,_0x3e13df){_0x3e13df=_0x3e13df||0xc8;return function(_0x54079a){if(_0x54079a){return _0x310175[_0x46f1('0x1c')](_0x3e13df)[_0x46f1('0x1d')](_0x54079a);}};}function respondWithFilteredResult(_0x263bb2,_0xed1ffc){return function(_0x1e7016){if(_0x1e7016){var _0x258e41=typeof _0xed1ffc[_0x46f1('0x1e')]==='undefined'&&typeof _0xed1ffc[_0x46f1('0x1f')]===_0x46f1('0x20');var _0x5bde3f=_0x1e7016[_0x46f1('0x21')];var _0x9eb2f5=_0x258e41?0x0:_0xed1ffc[_0x46f1('0x1e')];var _0x1503e8=_0x258e41?_0x1e7016[_0x46f1('0x21')]:_0xed1ffc[_0x46f1('0x1e')]+_0xed1ffc[_0x46f1('0x1f')];var _0x27c552;if(_0x1503e8>=_0x5bde3f){_0x1503e8=_0x5bde3f;_0x27c552=0xc8;}else{_0x27c552=0xce;}_0x263bb2[_0x46f1('0x1c')](_0x27c552);return _0x263bb2[_0x46f1('0x22')]('Content-Range',_0x9eb2f5+'-'+_0x1503e8+'/'+_0x5bde3f)[_0x46f1('0x1d')](_0x1e7016);}return null;};}function patchUpdates(_0x599fa6){return function(_0x4a69c7){try{jsonpatch[_0x46f1('0x23')](_0x4a69c7,_0x599fa6,!![]);}catch(_0xbf08bd){return BPromise['reject'](_0xbf08bd);}return _0x4a69c7[_0x46f1('0x24')]();};}function saveUpdates(_0x5caddb,_0x3250f4){return function(_0x1008c2){if(_0x1008c2){return _0x1008c2['update'](_0x5caddb)['then'](function(_0x2bdc19){return _0x2bdc19;});}return null;};}function removeEntity(_0x2ae220,_0x31cffb){return function(_0x14bd31){if(_0x14bd31){return _0x14bd31[_0x46f1('0x25')]()[_0x46f1('0x26')](function(){_0x2ae220[_0x46f1('0x1c')](0xcc)[_0x46f1('0x27')]();});}};}function handleEntityNotFound(_0x142b20,_0x21ad94){return function(_0x4de322){if(!_0x4de322){_0x142b20[_0x46f1('0x1b')](0x194);}return _0x4de322;};}function handleError(_0x3a975f,_0x911b53){_0x911b53=_0x911b53||0x1f4;return function(_0xaf9ef5){logger[_0x46f1('0x28')](_0xaf9ef5['stack']);if(_0xaf9ef5[_0x46f1('0x29')]){delete _0xaf9ef5[_0x46f1('0x29')];}_0x3a975f['status'](_0x911b53)[_0x46f1('0x2a')](_0xaf9ef5);};}exports['index']=function(_0xb64500,_0x5e792d){var _0x5bd1a7={},_0x1bfe02={},_0x2d1d11={'count':0x0,'rows':[]};var _0xf02d3e=_['map'](db['Automation'][_0x46f1('0x2b')],function(_0xee9114){return{'name':_0xee9114['fieldName'],'type':_0xee9114[_0x46f1('0x2c')][_0x46f1('0x2d')]};});_0x1bfe02[_0x46f1('0x2e')]=_[_0x46f1('0x2f')](_0xf02d3e,'name');_0x1bfe02[_0x46f1('0x30')]=_['keys'](_0xb64500['query']);_0x1bfe02[_0x46f1('0x31')]=_['intersection'](_0x1bfe02[_0x46f1('0x2e')],_0x1bfe02[_0x46f1('0x30')]);_0x5bd1a7[_0x46f1('0x32')]=_[_0x46f1('0x33')](_0x1bfe02['model'],qs[_0x46f1('0x34')](_0xb64500['query'][_0x46f1('0x34')]));_0x5bd1a7[_0x46f1('0x32')]=_0x5bd1a7['attributes'][_0x46f1('0x35')]?_0x5bd1a7[_0x46f1('0x32')]:_0x1bfe02['model'];if(!_0xb64500[_0x46f1('0x30')]['hasOwnProperty'](_0x46f1('0x36'))){_0x5bd1a7['limit']=qs[_0x46f1('0x1f')](_0xb64500['query'][_0x46f1('0x1f')]);_0x5bd1a7[_0x46f1('0x1e')]=qs[_0x46f1('0x1e')](_0xb64500['query'][_0x46f1('0x1e')]);}_0x5bd1a7[_0x46f1('0x37')]=qs[_0x46f1('0x38')](_0xb64500['query'][_0x46f1('0x38')]);_0x5bd1a7[_0x46f1('0x39')]=qs['filters'](_[_0x46f1('0x3a')](_0xb64500[_0x46f1('0x30')],_0x1bfe02[_0x46f1('0x31')]),_0xf02d3e);if(_0xb64500['query'][_0x46f1('0x3b')]){_0x5bd1a7['where']=_[_0x46f1('0x3c')](_0x5bd1a7[_0x46f1('0x39')],{'$or':_[_0x46f1('0x2f')](_0xf02d3e,function(_0x2ae1b2){if(_0x2ae1b2[_0x46f1('0x2c')]!==_0x46f1('0x3d')){var _0x541535={};_0x541535[_0x2ae1b2[_0x46f1('0x29')]]={'$like':'%'+_0xb64500[_0x46f1('0x30')]['filter']+'%'};return _0x541535;}})});}_0x5bd1a7=_[_0x46f1('0x3c')]({},_0x5bd1a7,_0xb64500['options']);var _0x50f323={'where':_0x5bd1a7[_0x46f1('0x39')]};return db[_0x46f1('0x3e')][_0x46f1('0x21')](_0x50f323)[_0x46f1('0x26')](function(_0x59ca30){_0x2d1d11['count']=_0x59ca30;if(_0xb64500[_0x46f1('0x30')][_0x46f1('0x3f')]){_0x5bd1a7['include']=[{'all':!![]}];}return db['Automation'][_0x46f1('0x40')](_0x5bd1a7);})[_0x46f1('0x26')](function(_0x23627f){_0x2d1d11[_0x46f1('0x41')]=_0x23627f;return _0x2d1d11;})['then'](respondWithFilteredResult(_0x5e792d,_0x5bd1a7))['catch'](handleError(_0x5e792d,null));};exports['show']=function(_0x851889,_0x44f014){var _0x5668cb={'raw':![],'where':{'id':_0x851889[_0x46f1('0x42')]['id']}},_0x1235ee={};_0x1235ee[_0x46f1('0x2e')]=_[_0x46f1('0x43')](db[_0x46f1('0x3e')]['rawAttributes']);_0x1235ee[_0x46f1('0x30')]=_[_0x46f1('0x43')](_0x851889['query']);_0x1235ee[_0x46f1('0x31')]=_['intersection'](_0x1235ee[_0x46f1('0x2e')],_0x1235ee[_0x46f1('0x30')]);_0x5668cb[_0x46f1('0x32')]=_[_0x46f1('0x33')](_0x1235ee['model'],qs[_0x46f1('0x34')](_0x851889['query']['fields']));_0x5668cb['attributes']=_0x5668cb['attributes'][_0x46f1('0x35')]?_0x5668cb[_0x46f1('0x32')]:_0x1235ee[_0x46f1('0x2e')];if(_0x851889[_0x46f1('0x30')][_0x46f1('0x3f')]){_0x5668cb[_0x46f1('0x44')]=[{'all':!![]}];}_0x5668cb=_[_0x46f1('0x3c')]({},_0x5668cb,_0x851889[_0x46f1('0x45')]);return db['Automation'][_0x46f1('0x46')](_0x5668cb)[_0x46f1('0x26')](handleEntityNotFound(_0x44f014,null))[_0x46f1('0x26')](respondWithResult(_0x44f014,null))['catch'](handleError(_0x44f014,null));};exports[_0x46f1('0x47')]=function(_0x196f27,_0xcd70aa){return db['Automation'][_0x46f1('0x47')](_0x196f27['body'],{})['then'](respondWithResult(_0xcd70aa,0xc9))[_0x46f1('0x48')](handleError(_0xcd70aa,null));};exports['update']=function(_0x1c4cb6,_0x1c7d0b){if(_0x1c4cb6['body']['id']){delete _0x1c4cb6['body']['id'];}return db['Automation'][_0x46f1('0x46')]({'where':{'id':_0x1c4cb6['params']['id']}})[_0x46f1('0x26')](handleEntityNotFound(_0x1c7d0b,null))[_0x46f1('0x26')](saveUpdates(_0x1c4cb6[_0x46f1('0x49')],null))[_0x46f1('0x26')](respondWithResult(_0x1c7d0b,null))['catch'](handleError(_0x1c7d0b,null));};exports['destroy']=function(_0x398e48,_0x50a5ec){return db['Automation'][_0x46f1('0x46')]({'where':{'id':_0x398e48['params']['id']}})[_0x46f1('0x26')](handleEntityNotFound(_0x50a5ec,null))['then'](removeEntity(_0x50a5ec,null))['catch'](handleError(_0x50a5ec,null));};exports['addConditions']=function(_0xd823d7,_0xffe3fb,_0x32c530){return db['Condition'][_0x46f1('0x46')]({'where':{'id':_0xd823d7[_0x46f1('0x42')]['id']}})[_0x46f1('0x26')](handleEntityNotFound(_0xffe3fb,null))['then'](function(_0x5e11b8){if(_0x5e11b8){return _0x5e11b8[_0x46f1('0x4a')](_0xd823d7['body']['ids'],_['omit'](_0xd823d7[_0x46f1('0x49')],[_0x46f1('0x4b'),'id'])||{});}})[_0x46f1('0x26')](respondWithResult(_0xffe3fb,null))[_0x46f1('0x48')](handleError(_0xffe3fb,null));};exports[_0x46f1('0x4c')]=function(_0x25a4d2,_0x57b97d,_0x24744b){var _0x169d85={};var _0x120ea1={};var _0x24ed57;var _0x39f36c;return db[_0x46f1('0x3e')][_0x46f1('0x4d')]({'where':{'id':_0x25a4d2[_0x46f1('0x42')]['id']}})[_0x46f1('0x26')](handleEntityNotFound(_0x57b97d,null))['then'](function(_0x3def40){if(_0x3def40){_0x24ed57=_0x3def40;_0x120ea1[_0x46f1('0x2e')]=_[_0x46f1('0x43')](db[_0x46f1('0x4e')]['rawAttributes']);_0x120ea1[_0x46f1('0x30')]=_['keys'](_0x25a4d2[_0x46f1('0x30')]);_0x120ea1['filters']=_[_0x46f1('0x33')](_0x120ea1[_0x46f1('0x2e')],_0x120ea1['query']);_0x169d85[_0x46f1('0x32')]=_[_0x46f1('0x33')](_0x120ea1[_0x46f1('0x2e')],qs['fields'](_0x25a4d2[_0x46f1('0x30')][_0x46f1('0x34')]));_0x169d85[_0x46f1('0x32')]=_0x169d85[_0x46f1('0x32')]['length']?_0x169d85[_0x46f1('0x32')]:_0x120ea1[_0x46f1('0x2e')];_0x169d85[_0x46f1('0x37')]=qs[_0x46f1('0x38')](_0x25a4d2['query'][_0x46f1('0x38')]);_0x169d85[_0x46f1('0x39')]=qs[_0x46f1('0x31')](_[_0x46f1('0x3a')](_0x25a4d2[_0x46f1('0x30')],_0x120ea1[_0x46f1('0x31')]));if(_0x25a4d2['query'][_0x46f1('0x3b')]){_0x169d85[_0x46f1('0x39')]=_[_0x46f1('0x3c')](_0x169d85['where'],{'$or':_[_0x46f1('0x2f')](_0x169d85[_0x46f1('0x32')],function(_0x9fb7c0){var _0x22bb5d={};_0x22bb5d[_0x9fb7c0]={'$like':'%'+_0x25a4d2['query'][_0x46f1('0x3b')]+'%'};return _0x22bb5d;})});}_0x169d85=_[_0x46f1('0x3c')]({},_0x169d85,_0x25a4d2[_0x46f1('0x45')]);return _0x24ed57[_0x46f1('0x4c')](_0x169d85);}})[_0x46f1('0x26')](function(_0x26bd0b){if(_0x26bd0b){_0x39f36c=_0x26bd0b[_0x46f1('0x35')];if(!_0x25a4d2[_0x46f1('0x30')]['hasOwnProperty'](_0x46f1('0x36'))){_0x169d85[_0x46f1('0x1f')]=qs[_0x46f1('0x1f')](_0x25a4d2[_0x46f1('0x30')]['limit']);_0x169d85['offset']=qs[_0x46f1('0x1e')](_0x25a4d2[_0x46f1('0x30')][_0x46f1('0x1e')]);}return _0x24ed57[_0x46f1('0x4c')](_0x169d85);}})[_0x46f1('0x26')](function(_0x4e4d9a){if(_0x4e4d9a){return _0x4e4d9a?{'count':_0x39f36c,'rows':_0x4e4d9a}:null;}})[_0x46f1('0x26')](respondWithResult(_0x57b97d,null))[_0x46f1('0x48')](handleError(_0x57b97d,null));};exports[_0x46f1('0x4f')]=function(_0x4b5a39,_0x662717,_0x2cecfc){return db[_0x46f1('0x50')][_0x46f1('0x46')]({'where':{'id':_0x4b5a39[_0x46f1('0x42')]['id']}})[_0x46f1('0x26')](handleEntityNotFound(_0x662717,null))['then'](function(_0x34cb73){if(_0x34cb73){return _0x34cb73[_0x46f1('0x4f')](_0x4b5a39['body']['ids'],_['omit'](_0x4b5a39['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x662717,null))[_0x46f1('0x48')](handleError(_0x662717,null));};exports[_0x46f1('0x51')]=function(_0x28cf95,_0x2527a0,_0x3eef2e){var _0x4db11f={};var _0x2ae1f4={};var _0x412539;var _0x20803c;return db[_0x46f1('0x3e')][_0x46f1('0x4d')]({'where':{'id':_0x28cf95[_0x46f1('0x42')]['id']}})['then'](handleEntityNotFound(_0x2527a0,null))[_0x46f1('0x26')](function(_0x261bc5){if(_0x261bc5){_0x412539=_0x261bc5;_0x2ae1f4['model']=_[_0x46f1('0x43')](db['Action'][_0x46f1('0x2b')]);_0x2ae1f4[_0x46f1('0x30')]=_['keys'](_0x28cf95[_0x46f1('0x30')]);_0x2ae1f4['filters']=_[_0x46f1('0x33')](_0x2ae1f4['model'],_0x2ae1f4['query']);_0x4db11f[_0x46f1('0x32')]=_[_0x46f1('0x33')](_0x2ae1f4['model'],qs[_0x46f1('0x34')](_0x28cf95[_0x46f1('0x30')][_0x46f1('0x34')]));_0x4db11f[_0x46f1('0x32')]=_0x4db11f[_0x46f1('0x32')]['length']?_0x4db11f[_0x46f1('0x32')]:_0x2ae1f4[_0x46f1('0x2e')];_0x4db11f[_0x46f1('0x37')]=qs[_0x46f1('0x38')](_0x28cf95[_0x46f1('0x30')][_0x46f1('0x38')]);_0x4db11f[_0x46f1('0x39')]=qs['filters'](_[_0x46f1('0x3a')](_0x28cf95[_0x46f1('0x30')],_0x2ae1f4[_0x46f1('0x31')]));if(_0x28cf95[_0x46f1('0x30')][_0x46f1('0x3b')]){_0x4db11f[_0x46f1('0x39')]=_['merge'](_0x4db11f[_0x46f1('0x39')],{'$or':_[_0x46f1('0x2f')](_0x4db11f[_0x46f1('0x32')],function(_0x1e5b54){var _0x3181a6={};_0x3181a6[_0x1e5b54]={'$like':'%'+_0x28cf95[_0x46f1('0x30')][_0x46f1('0x3b')]+'%'};return _0x3181a6;})});}_0x4db11f=_[_0x46f1('0x3c')]({},_0x4db11f,_0x28cf95['options']);return _0x412539['getActions'](_0x4db11f);}})[_0x46f1('0x26')](function(_0x3a7770){if(_0x3a7770){_0x20803c=_0x3a7770[_0x46f1('0x35')];if(!_0x28cf95[_0x46f1('0x30')]['hasOwnProperty']('nolimit')){_0x4db11f[_0x46f1('0x1f')]=qs['limit'](_0x28cf95[_0x46f1('0x30')][_0x46f1('0x1f')]);_0x4db11f[_0x46f1('0x1e')]=qs['offset'](_0x28cf95[_0x46f1('0x30')]['offset']);}return _0x412539[_0x46f1('0x51')](_0x4db11f);}})[_0x46f1('0x26')](function(_0x518d97){if(_0x518d97){return _0x518d97?{'count':_0x20803c,'rows':_0x518d97}:null;}})[_0x46f1('0x26')](respondWithResult(_0x2527a0,null))[_0x46f1('0x48')](handleError(_0x2527a0,null));};
\ No newline at end of file
index 0c40237..b92b98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5ef=['lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./automation.attributes','define','Automation','tools_automations'];(function(_0x59162a,_0x10e547){var _0x35e50d=function(_0x578425){while(--_0x578425){_0x59162a['push'](_0x59162a['shift']());}};_0x35e50d(++_0x10e547);}(_0xa5ef,0x114));var _0xfa5e=function(_0x490be3,_0xf0fca3){_0x490be3=_0x490be3-0x0;var _0x3f5140=_0xa5ef[_0x490be3];return _0x3f5140;};'use strict';var _=require(_0xfa5e('0x0'));var util=require(_0xfa5e('0x1'));var logger=require(_0xfa5e('0x2'))(_0xfa5e('0x3'));var moment=require('moment');var BPromise=require(_0xfa5e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfa5e('0x5'));var rimraf=require(_0xfa5e('0x6'));var config=require(_0xfa5e('0x7'));var attributes=require(_0xfa5e('0x8'));module['exports']=function(_0x53a5fc,_0x2dd856){return _0x53a5fc[_0xfa5e('0x9')](_0xfa5e('0xa'),attributes,{'tableName':_0xfa5e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1074=['bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','define','Automation','tools_automations','lodash','../../config/logger','api','moment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1074,0x1b6));var _0x4107=function(_0x33feca,_0x2bd9ae){_0x33feca=_0x33feca-0x0;var _0x3c558f=_0x1074[_0x33feca];return _0x3c558f;};'use strict';var _=require(_0x4107('0x0'));var util=require('util');var logger=require(_0x4107('0x1'))(_0x4107('0x2'));var moment=require(_0x4107('0x3'));var BPromise=require(_0x4107('0x4'));var rp=require(_0x4107('0x5'));var fs=require('fs');var path=require(_0x4107('0x6'));var rimraf=require(_0x4107('0x7'));var config=require(_0x4107('0x8'));var attributes=require(_0x4107('0x9'));module['exports']=function(_0x33ebd7,_0x5733df){return _0x33ebd7[_0x4107('0xa')](_0x4107('0xb'),attributes,{'tableName':_0x4107('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf29e9d..0d98469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7524=['../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis'];(function(_0x23c23c,_0x5ee1ff){var _0xf99e32=function(_0x16c73f){while(--_0x16c73f){_0x23c23c['push'](_0x23c23c['shift']());}};_0xf99e32(++_0x5ee1ff);}(_0x7524,0xce));var _0x4752=function(_0x1342d8,_0x8106de){_0x1342d8=_0x1342d8-0x0;var _0x961b01=_0x7524[_0x1342d8];return _0x961b01;};'use strict';var _=require('lodash');var util=require(_0x4752('0x0'));var moment=require(_0x4752('0x1'));var BPromise=require('bluebird');var rs=require(_0x4752('0x2'));var fs=require('fs');var Redis=require(_0x4752('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4752('0x4'))('rpc');var config=require(_0x4752('0x5'));var jayson=require(_0x4752('0x6'));var client=jayson[_0x4752('0x7')][_0x4752('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x104962,_0x5b98c0,_0x1e76cf){return new BPromise(function(_0x1cbf34,_0x59477c){return client['request'](_0x104962,_0x1e76cf)[_0x4752('0x9')](function(_0x45e0ff){logger[_0x4752('0xa')](_0x4752('0xb'),_0x5b98c0,'request\x20sent');logger[_0x4752('0xc')](_0x4752('0xd'),_0x5b98c0,_0x4752('0xe'),JSON[_0x4752('0xf')](_0x45e0ff));if(_0x45e0ff[_0x4752('0x10')]){if(_0x45e0ff['error'][_0x4752('0x11')]===0x1f4){logger[_0x4752('0x10')](_0x4752('0xb'),_0x5b98c0,_0x45e0ff[_0x4752('0x10')][_0x4752('0x12')]);return _0x59477c(_0x45e0ff[_0x4752('0x10')][_0x4752('0x12')]);}logger['error'](_0x4752('0xb'),_0x5b98c0,_0x45e0ff['error'][_0x4752('0x12')]);return _0x1cbf34(_0x45e0ff[_0x4752('0x10')][_0x4752('0x12')]);}else{logger[_0x4752('0xa')](_0x4752('0xb'),_0x5b98c0,_0x4752('0xe'));_0x1cbf34(_0x45e0ff[_0x4752('0x13')]['message']);}})[_0x4752('0x14')](function(_0x1dad7c){logger['error'](_0x4752('0xb'),_0x5b98c0,_0x1dad7c);_0x59477c(_0x1dad7c);});});}
\ No newline at end of file
+var _0x8383=['stringify','error','message','info','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','Automation,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xe14ee9,_0x4cd8e1){var _0x1dda60=function(_0x50b9cf){while(--_0x50b9cf){_0xe14ee9['push'](_0xe14ee9['shift']());}};_0x1dda60(++_0x4cd8e1);}(_0x8383,0x98));var _0x3838=function(_0xed5c38,_0x591348){_0xed5c38=_0xed5c38-0x0;var _0x296302=_0x8383[_0xed5c38];return _0x296302;};'use strict';var _=require(_0x3838('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3838('0x1'));var rs=require(_0x3838('0x2'));var fs=require('fs');var Redis=require(_0x3838('0x3'));var db=require(_0x3838('0x4'))['db'];var utils=require(_0x3838('0x5'));var logger=require(_0x3838('0x6'))(_0x3838('0x7'));var config=require(_0x3838('0x8'));var jayson=require(_0x3838('0x9'));var client=jayson[_0x3838('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x239750,_0x235001,_0x4cf52b){return new BPromise(function(_0x2abbda,_0x5e2e42){return client[_0x3838('0xb')](_0x239750,_0x4cf52b)[_0x3838('0xc')](function(_0x340c39){logger['info'](_0x3838('0xd'),_0x235001,_0x3838('0xe'));logger[_0x3838('0xf')]('Automation,\x20%s,\x20%s,\x20%s',_0x235001,_0x3838('0xe'),JSON[_0x3838('0x10')](_0x340c39));if(_0x340c39[_0x3838('0x11')]){if(_0x340c39[_0x3838('0x11')]['code']===0x1f4){logger[_0x3838('0x11')](_0x3838('0xd'),_0x235001,_0x340c39[_0x3838('0x11')]['message']);return _0x5e2e42(_0x340c39[_0x3838('0x11')]['message']);}logger[_0x3838('0x11')](_0x3838('0xd'),_0x235001,_0x340c39[_0x3838('0x11')][_0x3838('0x12')]);return _0x2abbda(_0x340c39[_0x3838('0x11')]['message']);}else{logger[_0x3838('0x13')](_0x3838('0xd'),_0x235001,_0x3838('0xe'));_0x2abbda(_0x340c39[_0x3838('0x14')][_0x3838('0x12')]);}})['catch'](function(_0x464fd9){logger[_0x3838('0x11')](_0x3838('0xd'),_0x235001,_0x464fd9);_0x5e2e42(_0x464fd9);});});}
\ No newline at end of file
index 06d3ac8..57c4914 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc300=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','show','/:id/conditions','/:id/actions','getActions','post','addActions','put','delete','/:id','destroy','exports','multer','util'];(function(_0x4243df,_0x4a1785){var _0xc9b7ff=function(_0x8e9271){while(--_0x8e9271){_0x4243df['push'](_0x4243df['shift']());}};_0xc9b7ff(++_0x4a1785);}(_0xc300,0x132));var _0x0c30=function(_0x380d16,_0x54254f){_0x380d16=_0x380d16-0x0;var _0x74c950=_0xc300[_0x380d16];return _0x74c950;};'use strict';var multer=require(_0x0c30('0x0'));var util=require(_0x0c30('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0c30('0x2'));var router=express[_0x0c30('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0c30('0x4'));var interaction=require(_0x0c30('0x5'));var config=require(_0x0c30('0x6'));var controller=require(_0x0c30('0x7'));router[_0x0c30('0x8')]('/',auth[_0x0c30('0x9')](),controller[_0x0c30('0xa')]);router[_0x0c30('0x8')]('/:id',auth[_0x0c30('0x9')](),controller[_0x0c30('0xb')]);router['get'](_0x0c30('0xc'),auth[_0x0c30('0x9')](),controller['getConditions']);router[_0x0c30('0x8')](_0x0c30('0xd'),auth[_0x0c30('0x9')](),controller[_0x0c30('0xe')]);router[_0x0c30('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0c30('0xf')](_0x0c30('0xc'),auth['isAuthenticated'](),controller['addConditions']);router[_0x0c30('0xf')](_0x0c30('0xd'),auth[_0x0c30('0x9')](),controller[_0x0c30('0x10')]);router[_0x0c30('0x11')]('/:id',auth[_0x0c30('0x9')](),controller['update']);router[_0x0c30('0x12')](_0x0c30('0x13'),auth[_0x0c30('0x9')](),controller[_0x0c30('0x14')]);module[_0x0c30('0x15')]=router;
\ No newline at end of file
+var _0x297b=['multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./automation.controller','get','/:id','isAuthenticated','/:id/actions','getActions','post','/:id/conditions','addConditions','put','delete','destroy','exports'];(function(_0x35268e,_0x4acfd1){var _0x28ba11=function(_0x34f637){while(--_0x34f637){_0x35268e['push'](_0x35268e['shift']());}};_0x28ba11(++_0x4acfd1);}(_0x297b,0x85));var _0xb297=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0x297b[_0x36884e];return _0x1cc367;};'use strict';var multer=require(_0xb297('0x0'));var util=require('util');var path=require(_0xb297('0x1'));var timeout=require(_0xb297('0x2'));var express=require(_0xb297('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb297('0x4'));var interaction=require(_0xb297('0x5'));var config=require('../../config/environment');var controller=require(_0xb297('0x6'));router[_0xb297('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb297('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xb297('0x7')]('/:id/conditions',auth[_0xb297('0x9')](),controller['getConditions']);router['get'](_0xb297('0xa'),auth['isAuthenticated'](),controller[_0xb297('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xb297('0xc')](_0xb297('0xd'),auth[_0xb297('0x9')](),controller[_0xb297('0xe')]);router[_0xb297('0xc')]('/:id/actions',auth[_0xb297('0x9')](),controller['addActions']);router[_0xb297('0xf')](_0xb297('0x8'),auth[_0xb297('0x9')](),controller['update']);router[_0xb297('0x10')](_0xb297('0x8'),auth[_0xb297('0x9')](),controller[_0xb297('0x11')]);module[_0xb297('0x12')]=router;
\ No newline at end of file
index 8928d0a..88369ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x578f=['Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)'];(function(_0x5d7aff,_0x165908){var _0x4ab28a=function(_0x4577fe){while(--_0x4577fe){_0x5d7aff['push'](_0x5d7aff['shift']());}};_0x4ab28a(++_0x165908);}(_0x578f,0x19a));var _0xf578=function(_0x17d035,_0x2d4c8c){_0x17d035=_0x17d035-0x0;var _0x1cbb92=_0x578f[_0x17d035];return _0x1cbb92;};'use strict';var Sequelize=require(_0xf578('0x0'));module[_0xf578('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf578('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xf578('0x3')]('ivr'),'allowNull':![],'defaultValue':_0xf578('0x4')},'description':{'type':Sequelize[_0xf578('0x5')]},'active':{'type':Sequelize[_0xf578('0x6')],'defaultValue':0x0,'comment':_0xf578('0x7')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xf578('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xf578('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf578('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0xb')},'dialCongestionMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xf578('0xe')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf578('0x5')],'defaultValue':_0xf578('0xf')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xf578('0x10'),_0xf578('0x11'),_0xf578('0x12')),'defaultValue':_0xf578('0x10')},'dialAMDActive':{'type':Sequelize[_0xf578('0x6')],'defaultValue':0x0,'comment':_0xf578('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0xf578('0xa')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf578('0x14')},'dialAMDGreeting':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf578('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf578('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf578('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0xf578('0xa')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf578('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf578('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf578('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0xf578('0x3')](_0xf578('0x1b'),_0xf578('0x1c')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xf578('0x5')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf578('0x1d')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xf578('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf578('0x1e')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x1f')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x20')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x21')},'dialDropRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x22')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x23')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x24')},'dialMachineMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x25')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x26')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x27')}};
\ No newline at end of file
+var _0xeeaf=['#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence'];(function(_0xad9ed5,_0x3c39af){var _0x5d6242=function(_0x491434){while(--_0x491434){_0xad9ed5['push'](_0xad9ed5['shift']());}};_0x5d6242(++_0x3c39af);}(_0xeeaf,0x150));var _0xfeea=function(_0xf0ed01,_0x2445dc){_0xf0ed01=_0xf0ed01-0x0;var _0x556048=_0xeeaf[_0xf0ed01];return _0x556048;};'use strict';var Sequelize=require(_0xfeea('0x0'));module['exports']={'name':{'type':Sequelize[_0xfeea('0x1')],'unique':_0xfeea('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xfeea('0x3')](_0xfeea('0x4')),'allowNull':![],'defaultValue':_0xfeea('0x4')},'description':{'type':Sequelize[_0xfeea('0x1')]},'active':{'type':Sequelize[_0xfeea('0x5')],'defaultValue':0x0,'comment':_0xfeea('0x6')},'limitCalls':{'type':Sequelize[_0xfeea('0x7')](0x4)[_0xfeea('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xfeea('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xfeea('0x7')](0x3)[_0xfeea('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfeea('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0xfeea('0x7')](0x3)[_0xfeea('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfeea('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xfeea('0x7')](0x5)[_0xfeea('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfeea('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xfeea('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfeea('0xc')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xfeea('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfeea('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xfeea('0x7')](0x3)[_0xfeea('0x8')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xfeea('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xfeea('0x7')](0x3)[_0xfeea('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xfeea('0xe')},'dialTimezone':{'type':Sequelize[_0xfeea('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xfeea('0x1')],'defaultValue':_0xfeea('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0xfeea('0x3')](_0xfeea('0x10'),_0xfeea('0x11'),_0xfeea('0x12')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xfeea('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0xfeea('0x7')](0x9)[_0xfeea('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xfeea('0x14')},'dialAMDGreeting':{'type':Sequelize[_0xfeea('0x7')](0x9)[_0xfeea('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xfeea('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xfeea('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xfeea('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xfeea('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xfeea('0x7')](0x9)[_0xfeea('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xfeea('0x7')](0x9)[_0xfeea('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xfeea('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xfeea('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xfeea('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xfeea('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xfeea('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xfeea('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0xfeea('0x3')](_0xfeea('0x1a'),_0xfeea('0x1b')),'defaultValue':_0xfeea('0x1a')},'dialPrefix':{'type':Sequelize[_0xfeea('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xfeea('0x7')](0x3)[_0xfeea('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xfeea('0x1c')},'dialCutDigit':{'type':Sequelize[_0xfeea('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xfeea('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfeea('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xfeea('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfeea('0x1e')},'dialDropRetryFrequency':{'type':Sequelize[_0xfeea('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfeea('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xfeea('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfeea('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xfeea('0x7')](0x5)[_0xfeea('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xfeea('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfeea('0x21')},'dialMachineRetryFrequency':{'type':Sequelize[_0xfeea('0x7')](0x5)[_0xfeea('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfeea('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xfeea('0x7')](0x3)[_0xfeea('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xfeea('0x7')](0x5)[_0xfeea('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfeea('0x23')}};
\ No newline at end of file
index 59c6676..351428b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f9=['ids','spread','dialCheckDuplicateType','always','into','fromQuery','phone','scheduledAt','ContactId','ListId','field','NOW()','CmListId','toString','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','from','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','cm_hopper','cmHopperId','OrderBy','h.id','ci.item','cm_contact_has_items','join','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','get','IvrCampaigns','UserProfileResource','destroy','name','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','Campaign','includeAll','include','rows','params','rawAttributes','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','userProfileId','update','getHoppers','CmHopper','pick','filter','getHopperHistories','findOne','CmHopperHistory','CampaignId','findAll','getHopperFinals','CmHopperFinal','CmHopperBlack','CmList','getLists','addLists','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1fd1e3,_0x63e5e1){var _0x31467c=function(_0x5b0fbb){while(--_0x5b0fbb){_0x1fd1e3['push'](_0x1fd1e3['shift']());}};_0x31467c(++_0x63e5e1);}(_0x36f9,0x151));var _0x936f=function(_0x5bc223,_0x543186){_0x5bc223=_0x5bc223-0x0;var _0x66367c=_0x36f9[_0x5bc223];return _0x66367c;};'use strict';var emlformat=require(_0x936f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x936f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x936f('0x2'));var BPromise=require(_0x936f('0x3'));var Mustache=require(_0x936f('0x4'));var util=require(_0x936f('0x5'));var path=require(_0x936f('0x6'));var sox=require(_0x936f('0x7'));var csv=require(_0x936f('0x8'));var ejs=require(_0x936f('0x9'));var fs=require('fs');var fs_extra=require(_0x936f('0xa'));var _=require(_0x936f('0xb'));var squel=require(_0x936f('0xc'));var crypto=require('crypto');var jsforce=require(_0x936f('0xd'));var deskjs=require(_0x936f('0xe'));var toCsv=require(_0x936f('0x8'));var querystring=require(_0x936f('0xf'));var Papa=require(_0x936f('0x10'));var Redis=require(_0x936f('0x11'));var authService=require(_0x936f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x936f('0x13'))(_0x936f('0x14'));var utils=require(_0x936f('0x15'));var config=require(_0x936f('0x16'));var licenseUtil=require(_0x936f('0x17'));var db=require(_0x936f('0x18'))['db'];function respondWithStatusCode(_0x1eeef1,_0x44399c){_0x44399c=_0x44399c||0xcc;return function(_0x565475){if(_0x565475){return _0x1eeef1[_0x936f('0x19')](_0x44399c);}return _0x1eeef1[_0x936f('0x1a')](_0x44399c)[_0x936f('0x1b')]();};}function respondWithResult(_0x18eb93,_0x203409){_0x203409=_0x203409||0xc8;return function(_0x3e046b){if(_0x3e046b){return _0x18eb93['status'](_0x203409)[_0x936f('0x1c')](_0x3e046b);}};}function respondWithFilteredResult(_0x4e4579,_0x365f05){return function(_0x401dfd){if(_0x401dfd){var _0x5f003c=typeof _0x365f05[_0x936f('0x1d')]===_0x936f('0x1e')&&typeof _0x365f05['limit']==='undefined';var _0x298ece=_0x401dfd['count'];var _0x1363e3=_0x5f003c?0x0:_0x365f05['offset'];var _0x3867bc=_0x5f003c?_0x401dfd[_0x936f('0x1f')]:_0x365f05[_0x936f('0x1d')]+_0x365f05[_0x936f('0x20')];var _0x181d83;if(_0x3867bc>=_0x298ece){_0x3867bc=_0x298ece;_0x181d83=0xc8;}else{_0x181d83=0xce;}_0x4e4579[_0x936f('0x1a')](_0x181d83);return _0x4e4579[_0x936f('0x21')](_0x936f('0x22'),_0x1363e3+'-'+_0x3867bc+'/'+_0x298ece)[_0x936f('0x1c')](_0x401dfd);}return null;};}function patchUpdates(_0x25a8eb){return function(_0x4ea210){try{jsonpatch['apply'](_0x4ea210,_0x25a8eb,!![]);}catch(_0x49c1ce){return BPromise[_0x936f('0x23')](_0x49c1ce);}return _0x4ea210[_0x936f('0x24')]();};}function saveUpdates(_0x3c25a5,_0x1f98e5){return function(_0x42d3d7){if(_0x42d3d7){return _0x42d3d7['update'](_0x3c25a5)[_0x936f('0x25')](function(_0xf6e496){return _0xf6e496;});}return null;};}function removeEntity(_0x45fbd3,_0x19e692){return function(_0x3640b1){if(_0x3640b1){return _0x3640b1['destroy']()['then'](function(){var _0xdba7c2=_0x3640b1[_0x936f('0x26')]({'plain':!![]});var _0x32f008=_0x936f('0x27');return db[_0x936f('0x28')][_0x936f('0x29')]({'where':{'type':_0x32f008,'resourceId':_0xdba7c2['id']}})[_0x936f('0x25')](function(){return _0x3640b1;});})['then'](function(){_0x45fbd3['status'](0xcc)[_0x936f('0x1b')]();});}};}function handleEntityNotFound(_0xa5bc90,_0x3678f1){return function(_0x4fd473){if(!_0x4fd473){_0xa5bc90[_0x936f('0x19')](0x194);}return _0x4fd473;};}function handleError(_0x485883,_0x49407b){_0x49407b=_0x49407b||0x1f4;return function(_0x2b0d8b){logger['error'](_0x2b0d8b['stack']);if(_0x2b0d8b[_0x936f('0x2a')]){delete _0x2b0d8b[_0x936f('0x2a')];}_0x485883[_0x936f('0x1a')](_0x49407b)['send'](_0x2b0d8b);};}exports[_0x936f('0x2b')]=function(_0x12db98,_0x4126ed){var _0xdfb5f4={},_0x333483={},_0x4661d5={'count':0x0,'rows':[]};var _0x517978=_[_0x936f('0x2c')](db['Campaign']['rawAttributes'],function(_0x2118a9){return{'name':_0x2118a9[_0x936f('0x2d')],'type':_0x2118a9[_0x936f('0x2e')][_0x936f('0x2f')]};});_0x333483[_0x936f('0x30')]=_[_0x936f('0x2c')](_0x517978,_0x936f('0x2a'));_0x333483[_0x936f('0x31')]=_[_0x936f('0x32')](_0x12db98[_0x936f('0x31')]);_0x333483[_0x936f('0x33')]=_[_0x936f('0x34')](_0x333483[_0x936f('0x30')],_0x333483[_0x936f('0x31')]);_0xdfb5f4[_0x936f('0x35')]=_[_0x936f('0x34')](_0x333483['model'],qs[_0x936f('0x36')](_0x12db98[_0x936f('0x31')]['fields']));_0xdfb5f4['attributes']=_0xdfb5f4[_0x936f('0x35')][_0x936f('0x37')]?_0xdfb5f4['attributes']:_0x333483[_0x936f('0x30')];if(!_0x12db98[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0xdfb5f4[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x12db98[_0x936f('0x31')]['limit']);_0xdfb5f4[_0x936f('0x1d')]=qs[_0x936f('0x1d')](_0x12db98[_0x936f('0x31')][_0x936f('0x1d')]);}_0xdfb5f4[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x12db98[_0x936f('0x31')][_0x936f('0x3b')]);_0xdfb5f4[_0x936f('0x3c')]=qs[_0x936f('0x33')](_['pick'](_0x12db98['query'],_0x333483[_0x936f('0x33')]),_0x517978);if(_0x12db98[_0x936f('0x31')]['filter']){_0xdfb5f4[_0x936f('0x3c')]=_[_0x936f('0x3d')](_0xdfb5f4[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x517978,function(_0x40d1c3){if(_0x40d1c3[_0x936f('0x2e')]!==_0x936f('0x3e')){var _0x43639f={};_0x43639f[_0x40d1c3['name']]={'$like':'%'+_0x12db98[_0x936f('0x31')]['filter']+'%'};return _0x43639f;}})});}_0xdfb5f4=_[_0x936f('0x3d')]({},_0xdfb5f4,_0x12db98[_0x936f('0x3f')]);var _0x4e962c={'where':_0xdfb5f4['where']};return db[_0x936f('0x40')][_0x936f('0x1f')](_0x4e962c)[_0x936f('0x25')](function(_0x1f6b20){_0x4661d5[_0x936f('0x1f')]=_0x1f6b20;if(_0x12db98[_0x936f('0x31')][_0x936f('0x41')]){_0xdfb5f4[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x40')]['findAll'](_0xdfb5f4);})[_0x936f('0x25')](function(_0x213729){_0x4661d5[_0x936f('0x43')]=_0x213729;return _0x4661d5;})['then'](respondWithFilteredResult(_0x4126ed,_0xdfb5f4))['catch'](handleError(_0x4126ed,null));};exports['show']=function(_0x306b64,_0xc97a99){var _0x43386d={'raw':![],'where':{'id':_0x306b64[_0x936f('0x44')]['id']}},_0x56d1ac={};_0x56d1ac[_0x936f('0x30')]=_[_0x936f('0x32')](db['Campaign'][_0x936f('0x45')]);_0x56d1ac[_0x936f('0x31')]=_[_0x936f('0x32')](_0x306b64[_0x936f('0x31')]);_0x56d1ac[_0x936f('0x33')]=_[_0x936f('0x34')](_0x56d1ac[_0x936f('0x30')],_0x56d1ac[_0x936f('0x31')]);_0x43386d[_0x936f('0x35')]=_[_0x936f('0x34')](_0x56d1ac[_0x936f('0x30')],qs['fields'](_0x306b64[_0x936f('0x31')]['fields']));_0x43386d[_0x936f('0x35')]=_0x43386d[_0x936f('0x35')][_0x936f('0x37')]?_0x43386d[_0x936f('0x35')]:_0x56d1ac[_0x936f('0x30')];if(_0x306b64['query'][_0x936f('0x41')]){_0x43386d[_0x936f('0x42')]=[{'all':!![]}];}_0x43386d=_[_0x936f('0x3d')]({},_0x43386d,_0x306b64[_0x936f('0x3f')]);return db[_0x936f('0x40')]['find'](_0x43386d)[_0x936f('0x25')](handleEntityNotFound(_0xc97a99,null))['then'](respondWithResult(_0xc97a99,null))['catch'](handleError(_0xc97a99,null));};exports[_0x936f('0x46')]=function(_0x1e1e07,_0x1bbfed){return db[_0x936f('0x40')][_0x936f('0x46')](_0x1e1e07[_0x936f('0x47')],{})[_0x936f('0x25')](function(_0x334d14){var _0x3d0fbc=_0x1e1e07['user'][_0x936f('0x26')]({'plain':!![]});if(!_0x3d0fbc)throw new Error(_0x936f('0x48'));if(_0x3d0fbc['role']===_0x936f('0x49')){var _0x5aeb85=_0x334d14['get']({'plain':!![]});var _0x1e6899=_0x936f('0x27');return db[_0x936f('0x4a')][_0x936f('0x4b')]({'where':{'name':_0x1e6899,'userProfileId':_0x3d0fbc['userProfileId']},'raw':!![]})[_0x936f('0x25')](function(_0x4b9f55){if(_0x4b9f55&&_0x4b9f55[_0x936f('0x4c')]===0x0){return db[_0x936f('0x28')][_0x936f('0x46')]({'name':_0x5aeb85[_0x936f('0x2a')],'resourceId':_0x5aeb85['id'],'type':_0x4b9f55[_0x936f('0x2a')],'sectionId':_0x4b9f55['id']},{})['then'](function(){return _0x334d14;});}else{return _0x334d14;}})[_0x936f('0x4d')](function(_0x5cd85a){logger[_0x936f('0x4e')](_0x936f('0x4f'),_0x5cd85a);throw _0x5cd85a;});}return _0x334d14;})['then'](respondWithResult(_0x1bbfed,0xc9))['catch'](handleError(_0x1bbfed,null));};exports[_0x936f('0x50')]=function(_0x4e0b6d,_0x208df1){var _0x3b93b7={'where':{'id':_0x4e0b6d[_0x936f('0x44')]['id']}},_0x19e453={};_0x19e453[_0x936f('0x30')]=_[_0x936f('0x32')](db[_0x936f('0x40')][_0x936f('0x45')]);_0x3b93b7['attributes']=_[_0x936f('0x34')](_0x19e453['model'],qs['fields'](_0x4e0b6d['query'][_0x936f('0x36')]));_0x3b93b7[_0x936f('0x35')]=_0x3b93b7[_0x936f('0x35')][_0x936f('0x37')]?_0x3b93b7['attributes']:_0x19e453[_0x936f('0x30')];if(_0x4e0b6d['query'][_0x936f('0x41')]){_0x3b93b7[_0x936f('0x42')]=[{'all':!![]}];}_0x3b93b7=_[_0x936f('0x3d')]({},_0x3b93b7,_0x4e0b6d[_0x936f('0x3f')]);return db[_0x936f('0x40')]['find'](_0x3b93b7)['then'](handleEntityNotFound(_0x208df1,null))[_0x936f('0x25')](function(_0x399e9b){if(_0x399e9b){var _0x2dc231=_0x399e9b[_0x936f('0x26')]({'plain':!![]});_0x2dc231=qs[_0x936f('0x51')](_0x2dc231,['id',_0x936f('0x52'),_0x936f('0x53')]);_0x4e0b6d[_0x936f('0x47')]=_[_0x936f('0x51')](_0x4e0b6d[_0x936f('0x47')],['id','createdAt','updatedAt']);return db[_0x936f('0x40')][_0x936f('0x46')](_['merge'](_0x2dc231,_0x4e0b6d[_0x936f('0x47')]),{'include':_0x4e0b6d['query'][_0x936f('0x41')]?[{'all':!![]}]:undefined})[_0x936f('0x25')](function(_0x5a10bd){var _0x5d8399=_0x4e0b6d[_0x936f('0x49')][_0x936f('0x26')]({'plain':!![]});if(!_0x5d8399)throw new Error(_0x936f('0x48'));if(_0x5d8399[_0x936f('0x54')]===_0x936f('0x49')){var _0x48416e=_0x5a10bd['get']({'plain':!![]});var _0x12848d=_0x936f('0x27');return db[_0x936f('0x4a')][_0x936f('0x4b')]({'where':{'name':_0x12848d,'userProfileId':_0x5d8399[_0x936f('0x55')]},'raw':!![]})[_0x936f('0x25')](function(_0x229f7a){if(_0x229f7a&&_0x229f7a[_0x936f('0x4c')]===0x0){return db[_0x936f('0x28')][_0x936f('0x46')]({'name':_0x48416e[_0x936f('0x2a')],'resourceId':_0x48416e['id'],'type':_0x229f7a[_0x936f('0x2a')],'sectionId':_0x229f7a['id']},{})[_0x936f('0x25')](function(){return _0x5a10bd;});}else{return _0x5a10bd;}})[_0x936f('0x4d')](function(_0xb1386b){logger[_0x936f('0x4e')](_0x936f('0x4f'),_0xb1386b);throw _0xb1386b;});}return _0x5a10bd;});}})[_0x936f('0x25')](respondWithResult(_0x208df1,0xc9))[_0x936f('0x4d')](handleError(_0x208df1,null));};exports[_0x936f('0x56')]=function(_0x2574e6,_0x5ebb49){if(_0x2574e6[_0x936f('0x47')]['id']){delete _0x2574e6[_0x936f('0x47')]['id'];}return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x2574e6[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x5ebb49,null))[_0x936f('0x25')](saveUpdates(_0x2574e6[_0x936f('0x47')],null))[_0x936f('0x25')](respondWithResult(_0x5ebb49,null))[_0x936f('0x4d')](handleError(_0x5ebb49,null));};exports['destroy']=function(_0x46bc08,_0x391298){return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x46bc08[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x391298,null))[_0x936f('0x25')](removeEntity(_0x391298,null))[_0x936f('0x4d')](handleError(_0x391298,null));};exports[_0x936f('0x57')]=function(_0x28a2c3,_0x11e499,_0x3c99be){var _0x3075e9={'raw':!![],'where':{}};var _0x3deaa2={};var _0x268798={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x28a2c3[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x11e499,null))[_0x936f('0x25')](function(_0x48babe){if(_0x48babe){_0x3deaa2[_0x936f('0x30')]=_['keys'](db[_0x936f('0x58')][_0x936f('0x45')]);_0x3deaa2[_0x936f('0x31')]=_[_0x936f('0x32')](_0x28a2c3[_0x936f('0x31')]);_0x3deaa2['filters']=_['intersection'](_0x3deaa2[_0x936f('0x30')],_0x3deaa2[_0x936f('0x31')]);_0x3075e9[_0x936f('0x35')]=_[_0x936f('0x34')](_0x3deaa2['model'],qs[_0x936f('0x36')](_0x28a2c3[_0x936f('0x31')][_0x936f('0x36')]));_0x3075e9[_0x936f('0x35')]=_0x3075e9['attributes'][_0x936f('0x37')]?_0x3075e9[_0x936f('0x35')]:_0x3deaa2[_0x936f('0x30')];if(!_0x28a2c3[_0x936f('0x31')]['hasOwnProperty'](_0x936f('0x39'))){_0x3075e9[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x28a2c3[_0x936f('0x31')][_0x936f('0x20')]);_0x3075e9[_0x936f('0x1d')]=qs[_0x936f('0x1d')](_0x28a2c3[_0x936f('0x31')][_0x936f('0x1d')]);}_0x3075e9[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x28a2c3['query'][_0x936f('0x3b')]);_0x3075e9[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x28a2c3['query'],_0x3deaa2[_0x936f('0x33')]));_0x3075e9[_0x936f('0x3c')]['CampaignId']=_0x48babe['id'];if(_0x28a2c3[_0x936f('0x31')]['filter']){_0x3075e9[_0x936f('0x3c')]=_[_0x936f('0x3d')](_0x3075e9['where'],{'$or':_[_0x936f('0x2c')](_0x3075e9[_0x936f('0x35')],function(_0x46b74d){var _0x356bfc={};_0x356bfc[_0x46b74d]={'$like':'%'+_0x28a2c3[_0x936f('0x31')][_0x936f('0x5a')]+'%'};return _0x356bfc;})});}_0x3075e9=_[_0x936f('0x3d')]({},_0x3075e9,_0x28a2c3[_0x936f('0x3f')]);return db[_0x936f('0x58')][_0x936f('0x1f')]({'where':_0x3075e9['where']})['then'](function(_0x54b850){_0x268798[_0x936f('0x1f')]=_0x54b850;if(_0x28a2c3[_0x936f('0x31')][_0x936f('0x41')]){_0x3075e9[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x58')]['findAll'](_0x3075e9);})[_0x936f('0x25')](function(_0x292946){_0x268798[_0x936f('0x43')]=_0x292946;return _0x268798;});}})[_0x936f('0x25')](respondWithFilteredResult(_0x11e499,_0x3075e9))[_0x936f('0x4d')](handleError(_0x11e499,null));};exports[_0x936f('0x5b')]=function(_0x3242af,_0x10099c,_0x4e35f5){var _0xeac3be={'raw':!![],'where':{}};var _0x5b53a1={};var _0x58445b={'count':0x0,'rows':[]};return db['Campaign'][_0x936f('0x5c')]({'where':{'id':_0x3242af[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x10099c,null))['then'](function(_0x2686ed){if(_0x2686ed){_0x5b53a1[_0x936f('0x30')]=_[_0x936f('0x32')](db[_0x936f('0x5d')][_0x936f('0x45')]);_0x5b53a1[_0x936f('0x31')]=_['keys'](_0x3242af[_0x936f('0x31')]);_0x5b53a1[_0x936f('0x33')]=_['intersection'](_0x5b53a1[_0x936f('0x30')],_0x5b53a1['query']);_0xeac3be[_0x936f('0x35')]=_[_0x936f('0x34')](_0x5b53a1[_0x936f('0x30')],qs['fields'](_0x3242af[_0x936f('0x31')][_0x936f('0x36')]));_0xeac3be[_0x936f('0x35')]=_0xeac3be[_0x936f('0x35')][_0x936f('0x37')]?_0xeac3be['attributes']:_0x5b53a1[_0x936f('0x30')];if(!_0x3242af[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0xeac3be[_0x936f('0x20')]=qs['limit'](_0x3242af[_0x936f('0x31')]['limit']);_0xeac3be['offset']=qs[_0x936f('0x1d')](_0x3242af[_0x936f('0x31')][_0x936f('0x1d')]);}_0xeac3be[_0x936f('0x3a')]=qs['sort'](_0x3242af[_0x936f('0x31')][_0x936f('0x3b')]);_0xeac3be[_0x936f('0x3c')]=qs[_0x936f('0x33')](_['pick'](_0x3242af[_0x936f('0x31')],_0x5b53a1[_0x936f('0x33')]));_0xeac3be[_0x936f('0x3c')][_0x936f('0x5e')]=_0x2686ed['id'];if(_0x3242af[_0x936f('0x31')]['filter']){_0xeac3be['where']=_[_0x936f('0x3d')](_0xeac3be[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0xeac3be[_0x936f('0x35')],function(_0xdab17c){var _0x5efcc1={};_0x5efcc1[_0xdab17c]={'$like':'%'+_0x3242af[_0x936f('0x31')]['filter']+'%'};return _0x5efcc1;})});}_0xeac3be=_[_0x936f('0x3d')]({},_0xeac3be,_0x3242af[_0x936f('0x3f')]);return db[_0x936f('0x5d')][_0x936f('0x1f')]({'where':_0xeac3be[_0x936f('0x3c')]})[_0x936f('0x25')](function(_0x568dfd){_0x58445b[_0x936f('0x1f')]=_0x568dfd;if(_0x3242af[_0x936f('0x31')][_0x936f('0x41')]){_0xeac3be[_0x936f('0x42')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x936f('0x5f')](_0xeac3be);})['then'](function(_0x5d02a5){_0x58445b[_0x936f('0x43')]=_0x5d02a5;return _0x58445b;});}})[_0x936f('0x25')](respondWithFilteredResult(_0x10099c,_0xeac3be))[_0x936f('0x4d')](handleError(_0x10099c,null));};exports[_0x936f('0x60')]=function(_0x7958a0,_0x1240a2,_0x4a6fa1){var _0x421f7f={'raw':!![],'where':{}};var _0x1663fd={};var _0x392aa8={'count':0x0,'rows':[]};return db[_0x936f('0x40')]['findOne']({'where':{'id':_0x7958a0['params']['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x1240a2,null))['then'](function(_0x2ca0d3){if(_0x2ca0d3){_0x1663fd[_0x936f('0x30')]=_[_0x936f('0x32')](db['CmHopperFinal'][_0x936f('0x45')]);_0x1663fd[_0x936f('0x31')]=_[_0x936f('0x32')](_0x7958a0[_0x936f('0x31')]);_0x1663fd[_0x936f('0x33')]=_[_0x936f('0x34')](_0x1663fd[_0x936f('0x30')],_0x1663fd[_0x936f('0x31')]);_0x421f7f['attributes']=_[_0x936f('0x34')](_0x1663fd[_0x936f('0x30')],qs['fields'](_0x7958a0[_0x936f('0x31')][_0x936f('0x36')]));_0x421f7f[_0x936f('0x35')]=_0x421f7f[_0x936f('0x35')][_0x936f('0x37')]?_0x421f7f[_0x936f('0x35')]:_0x1663fd[_0x936f('0x30')];if(!_0x7958a0[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0x421f7f[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x7958a0[_0x936f('0x31')][_0x936f('0x20')]);_0x421f7f['offset']=qs['offset'](_0x7958a0[_0x936f('0x31')][_0x936f('0x1d')]);}_0x421f7f[_0x936f('0x3a')]=qs['sort'](_0x7958a0[_0x936f('0x31')][_0x936f('0x3b')]);_0x421f7f[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x7958a0['query'],_0x1663fd[_0x936f('0x33')]));_0x421f7f[_0x936f('0x3c')]['CampaignId']=_0x2ca0d3['id'];if(_0x7958a0[_0x936f('0x31')][_0x936f('0x5a')]){_0x421f7f['where']=_[_0x936f('0x3d')](_0x421f7f[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x421f7f['attributes'],function(_0xbc8cfc){var _0x8c2395={};_0x8c2395[_0xbc8cfc]={'$like':'%'+_0x7958a0[_0x936f('0x31')][_0x936f('0x5a')]+'%'};return _0x8c2395;})});}_0x421f7f=_[_0x936f('0x3d')]({},_0x421f7f,_0x7958a0[_0x936f('0x3f')]);return db[_0x936f('0x61')]['count']({'where':_0x421f7f[_0x936f('0x3c')]})['then'](function(_0x18ddc6){_0x392aa8[_0x936f('0x1f')]=_0x18ddc6;if(_0x7958a0[_0x936f('0x31')][_0x936f('0x41')]){_0x421f7f[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x61')]['findAll'](_0x421f7f);})[_0x936f('0x25')](function(_0x5877df){_0x392aa8[_0x936f('0x43')]=_0x5877df;return _0x392aa8;});}})['then'](respondWithFilteredResult(_0x1240a2,_0x421f7f))[_0x936f('0x4d')](handleError(_0x1240a2,null));};exports['getHopperBlacks']=function(_0x402567,_0x4e4256,_0x13b04e){var _0x1e8cf7={'raw':!![],'where':{}};var _0x538dce={};var _0x91f8d5={'count':0x0,'rows':[]};return db[_0x936f('0x40')][_0x936f('0x5c')]({'where':{'id':_0x402567['params']['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x4e4256,null))[_0x936f('0x25')](function(_0x93a26b){if(_0x93a26b){_0x538dce[_0x936f('0x30')]=_[_0x936f('0x32')](db[_0x936f('0x62')]['rawAttributes']);_0x538dce[_0x936f('0x31')]=_[_0x936f('0x32')](_0x402567[_0x936f('0x31')]);_0x538dce['filters']=_['intersection'](_0x538dce[_0x936f('0x30')],_0x538dce[_0x936f('0x31')]);_0x1e8cf7[_0x936f('0x35')]=_[_0x936f('0x34')](_0x538dce['model'],qs['fields'](_0x402567[_0x936f('0x31')][_0x936f('0x36')]));_0x1e8cf7[_0x936f('0x35')]=_0x1e8cf7[_0x936f('0x35')][_0x936f('0x37')]?_0x1e8cf7[_0x936f('0x35')]:_0x538dce['model'];if(!_0x402567['query'][_0x936f('0x38')]('nolimit')){_0x1e8cf7[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x402567['query'][_0x936f('0x20')]);_0x1e8cf7[_0x936f('0x1d')]=qs[_0x936f('0x1d')](_0x402567[_0x936f('0x31')][_0x936f('0x1d')]);}_0x1e8cf7[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x402567[_0x936f('0x31')]['sort']);_0x1e8cf7[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x402567[_0x936f('0x31')],_0x538dce[_0x936f('0x33')]));_0x1e8cf7[_0x936f('0x3c')]['CampaignId']=_0x93a26b['id'];if(_0x402567[_0x936f('0x31')]['filter']){_0x1e8cf7['where']=_[_0x936f('0x3d')](_0x1e8cf7[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x1e8cf7['attributes'],function(_0x4c73e2){var _0x4f4985={};_0x4f4985[_0x4c73e2]={'$like':'%'+_0x402567['query'][_0x936f('0x5a')]+'%'};return _0x4f4985;})});}_0x1e8cf7=_[_0x936f('0x3d')]({},_0x1e8cf7,_0x402567[_0x936f('0x3f')]);return db[_0x936f('0x62')][_0x936f('0x1f')]({'where':_0x1e8cf7[_0x936f('0x3c')]})[_0x936f('0x25')](function(_0x30f54f){_0x91f8d5['count']=_0x30f54f;if(_0x402567[_0x936f('0x31')][_0x936f('0x41')]){_0x1e8cf7[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x62')][_0x936f('0x5f')](_0x1e8cf7);})[_0x936f('0x25')](function(_0x9c9326){_0x91f8d5[_0x936f('0x43')]=_0x9c9326;return _0x91f8d5;});}})[_0x936f('0x25')](respondWithFilteredResult(_0x4e4256,_0x1e8cf7))[_0x936f('0x4d')](handleError(_0x4e4256,null));};exports['getLists']=function(_0x35565f,_0x108484,_0x52eb02){var _0x38d4be={};var _0x3df5b4={};var _0x5e291f;var _0x1289da;return db[_0x936f('0x40')][_0x936f('0x5c')]({'where':{'id':_0x35565f[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x108484,null))[_0x936f('0x25')](function(_0x259cd2){if(_0x259cd2){_0x5e291f=_0x259cd2;_0x3df5b4['model']=_[_0x936f('0x32')](db[_0x936f('0x63')][_0x936f('0x45')]);_0x3df5b4[_0x936f('0x31')]=_['keys'](_0x35565f[_0x936f('0x31')]);_0x3df5b4['filters']=_[_0x936f('0x34')](_0x3df5b4[_0x936f('0x30')],_0x3df5b4['query']);_0x38d4be[_0x936f('0x35')]=_[_0x936f('0x34')](_0x3df5b4['model'],qs[_0x936f('0x36')](_0x35565f[_0x936f('0x31')][_0x936f('0x36')]));_0x38d4be[_0x936f('0x35')]=_0x38d4be[_0x936f('0x35')][_0x936f('0x37')]?_0x38d4be['attributes']:_0x3df5b4['model'];_0x38d4be[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x35565f['query'][_0x936f('0x3b')]);_0x38d4be[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x35565f[_0x936f('0x31')],_0x3df5b4['filters']));if(_0x35565f[_0x936f('0x31')][_0x936f('0x5a')]){_0x38d4be['where']=_[_0x936f('0x3d')](_0x38d4be[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x38d4be[_0x936f('0x35')],function(_0x36ecb9){var _0xace9a={};_0xace9a[_0x36ecb9]={'$like':'%'+_0x35565f['query'][_0x936f('0x5a')]+'%'};return _0xace9a;})});}_0x38d4be=_[_0x936f('0x3d')]({},_0x38d4be,_0x35565f[_0x936f('0x3f')]);return _0x5e291f[_0x936f('0x64')](_0x38d4be);}})[_0x936f('0x25')](function(_0x3c2596){if(_0x3c2596){_0x1289da=_0x3c2596[_0x936f('0x37')];if(!_0x35565f[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0x38d4be[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x35565f[_0x936f('0x31')]['limit']);_0x38d4be['offset']=qs['offset'](_0x35565f[_0x936f('0x31')][_0x936f('0x1d')]);}return _0x5e291f[_0x936f('0x64')](_0x38d4be);}})['then'](function(_0x2500ba){if(_0x2500ba){return _0x2500ba?{'count':_0x1289da,'rows':_0x2500ba}:null;}})[_0x936f('0x25')](respondWithResult(_0x108484,null))[_0x936f('0x4d')](handleError(_0x108484,null));};exports[_0x936f('0x65')]=function(_0x155091,_0x4a510b,_0x37cbf0){var _0x2e3713,_0x54a6e3;var _0x19edd4=[];var _0x26563d=moment()[_0x936f('0x66')](_0x936f('0x67'));return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x155091[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x4a510b,null))['then'](function(_0x1051df){if(_0x1051df){_0x54a6e3=_0x1051df;return _0x1051df[_0x936f('0x65')](_0x155091[_0x936f('0x47')][_0x936f('0x68')],_[_0x936f('0x51')](_0x155091[_0x936f('0x47')],['ids','id'])||{});}return null;})[_0x936f('0x69')](function(_0x5e9275){var _0x2ea615;var _0x519c60;_0x2e3713=_0x5e9275||[];var _0x3d114b=[];if(_0x5e9275){for(var _0xc26b80=0x0;_0xc26b80<_0x5e9275[_0x936f('0x37')];_0xc26b80+=0x1){var _0x1cd80f=_0x5e9275[_0xc26b80][_0x936f('0x26')]({'plain':!![]});_0x54a6e3[_0x936f('0x6a')]=_0x155091[_0x936f('0x47')][_0x936f('0x6a')]?_0x155091['body'][_0x936f('0x6a')]:_0x54a6e3[_0x936f('0x6a')];switch(_0x54a6e3[_0x936f('0x6a')]){case _0x936f('0x6b'):_0x2ea615=squel['insert']()[_0x936f('0x6c')]('cm_hopper')[_0x936f('0x6d')]([_0x936f('0x6e'),_0x936f('0x6f'),_0x936f('0x70'),_0x936f('0x71'),_0x936f('0x5e'),_0x936f('0x52'),_0x936f('0x53')],squel['select']()[_0x936f('0x72')]('phone',_0x936f('0x6e'))[_0x936f('0x72')](_0x936f('0x73'),_0x936f('0x6f'))['field']('id',_0x936f('0x70'))[_0x936f('0x72')](_0x1cd80f[_0x936f('0x74')]['toString'](),'ListId')[_0x936f('0x72')](_0x155091[_0x936f('0x44')]['id'][_0x936f('0x75')](),_0x936f('0x5e'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x52'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x53'))['from'](_0x936f('0x76'))[_0x936f('0x3c')]('deletedAt\x20IS\x20NULL')['where'](_0x936f('0x77'),_0x1cd80f['CmListId'][_0x936f('0x75')]())[_0x936f('0x3c')](_0x936f('0x78'))[_0x936f('0x3c')](_0x936f('0x79'),squel[_0x936f('0x7a')]()['field']('COALESCE(calleridnum,\x27\x27)')[_0x936f('0x7b')](_0x936f('0x7c'))[_0x936f('0x3c')](_0x936f('0x7d'),_0x155091[_0x936f('0x44')]['id'][_0x936f('0x75')]()))[_0x936f('0x3c')](_0x936f('0x79'),squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x7e'))[_0x936f('0x7b')]('cm_hopper')['where'](_0x936f('0x7d'),_0x155091[_0x936f('0x44')]['id']['toString']())))[_0x936f('0x75')]();break;case _0x936f('0x7f'):_0x2ea615=squel[_0x936f('0x80')]()[_0x936f('0x6c')]('cm_hopper')[_0x936f('0x6d')]([_0x936f('0x6e'),_0x936f('0x6f'),_0x936f('0x70'),_0x936f('0x71'),'CampaignId','createdAt',_0x936f('0x53')],squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x6e'),'phone')[_0x936f('0x72')](_0x936f('0x73'),_0x936f('0x6f'))[_0x936f('0x72')]('id','ContactId')[_0x936f('0x72')](_0x1cd80f[_0x936f('0x74')]['toString'](),_0x936f('0x71'))[_0x936f('0x72')](_0x155091[_0x936f('0x44')]['id'][_0x936f('0x75')](),_0x936f('0x5e'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x52'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x53'))[_0x936f('0x7b')](_0x936f('0x76'))['where']('deletedAt\x20IS\x20NULL')[_0x936f('0x3c')](_0x936f('0x77'),_0x1cd80f[_0x936f('0x74')][_0x936f('0x75')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x936f('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel[_0x936f('0x7a')]()[_0x936f('0x72')]('COALESCE(phone,\x27\x27)')[_0x936f('0x7b')](_0x936f('0x81'))['where'](_0x936f('0x7d'),_0x155091[_0x936f('0x44')]['id']['toString']())))[_0x936f('0x75')]();break;default:_0x2ea615=squel[_0x936f('0x80')]()[_0x936f('0x6c')](_0x936f('0x81'))[_0x936f('0x6d')]([_0x936f('0x6e'),'scheduledAt',_0x936f('0x70'),_0x936f('0x71'),_0x936f('0x5e'),_0x936f('0x52'),_0x936f('0x53')],squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x6e'),_0x936f('0x6e'))[_0x936f('0x72')]('NOW()',_0x936f('0x6f'))[_0x936f('0x72')]('id',_0x936f('0x70'))[_0x936f('0x72')](_0x1cd80f['CmListId'][_0x936f('0x75')](),_0x936f('0x71'))['field'](_0x155091['params']['id'][_0x936f('0x75')](),_0x936f('0x5e'))['field']('\x27'+_0x26563d+'\x27',_0x936f('0x52'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x53'))[_0x936f('0x7b')](_0x936f('0x76'))[_0x936f('0x3c')]('deletedAt\x20IS\x20NULL')[_0x936f('0x3c')](_0x936f('0x77'),_0x1cd80f[_0x936f('0x74')]['toString']())[_0x936f('0x3c')](_0x936f('0x78')))[_0x936f('0x75')]();}_0x519c60=squel[_0x936f('0x80')]()[_0x936f('0x6c')]('cm_hopper_additional_phones')[_0x936f('0x6d')]([_0x936f('0x82'),_0x936f('0x6f'),_0x936f('0x6e'),_0x936f('0x83'),_0x936f('0x52'),_0x936f('0x53')],squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x84'),'id')[_0x936f('0x72')](_0x936f('0x73'),'scheduledAt')[_0x936f('0x72')](_0x936f('0x85'),_0x936f('0x6e'))[_0x936f('0x72')]('ci.OrderBY','OrderBy')['field']('\x27'+_0x26563d+'\x27','createdAt')['field']('\x27'+_0x26563d+'\x27',_0x936f('0x53'))['from'](_0x936f('0x86'),'ci')[_0x936f('0x87')](_0x936f('0x81'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0x936f('0x3c')](_0x936f('0x88'),_0x1cd80f[_0x936f('0x74')][_0x936f('0x75')]())[_0x936f('0x3c')](_0x936f('0x89'),_0x155091['params']['id']['toString']())[_0x936f('0x3c')](_0x936f('0x8a'),_0x26563d))[_0x936f('0x75')]();_0x3d114b[_0x936f('0x8b')](db[_0x936f('0x8c')][_0x936f('0x31')](_0x2ea615));_0x19edd4[_0x936f('0x8b')](db[_0x936f('0x8c')][_0x936f('0x31')](_0x519c60));}return BPromise[_0x936f('0x8d')](_0x3d114b);}})[_0x936f('0x25')](function(){return BPromise[_0x936f('0x8d')](_0x19edd4);})[_0x936f('0x25')](function(){return _0x2e3713;})['then'](respondWithResult(_0x4a510b,null))[_0x936f('0x4d')](handleError(_0x4a510b,null));};exports[_0x936f('0x8e')]=function(_0x1f3800,_0x4ee6be,_0x3e5f09){return db['Campaign'][_0x936f('0x4b')]({'where':{'id':_0x1f3800[_0x936f('0x44')]['id']}})['then'](handleEntityNotFound(_0x4ee6be,null))[_0x936f('0x25')](function(_0x4f5860){if(_0x4f5860){return _0x4f5860['removeLists'](_0x1f3800[_0x936f('0x31')][_0x936f('0x68')]);}})['then'](function(_0xd095e0){if(_0xd095e0){return db['CmHopper']['destroy']({'where':{'ListId':_0x1f3800[_0x936f('0x31')]['ids'],'CampaignId':_0x1f3800['params']['id']}})[_0x936f('0x25')](function(){return _0xd095e0;});}})['then'](respondWithStatusCode(_0x4ee6be,null))['catch'](handleError(_0x4ee6be,null));};exports[_0x936f('0x8f')]=function(_0x123911,_0x45a11c,_0x3d7cf2){var _0x112783={};var _0x209f09={};var _0x1e37f8;var _0x1c5c17;return db[_0x936f('0x40')][_0x936f('0x5c')]({'where':{'id':_0x123911[_0x936f('0x44')]['id']}})['then'](handleEntityNotFound(_0x45a11c,null))[_0x936f('0x25')](function(_0xec5752){if(_0xec5752){_0x1e37f8=_0xec5752;_0x209f09[_0x936f('0x30')]=_[_0x936f('0x32')](db['CmList'][_0x936f('0x45')]);_0x209f09[_0x936f('0x31')]=_['keys'](_0x123911[_0x936f('0x31')]);_0x209f09['filters']=_[_0x936f('0x34')](_0x209f09[_0x936f('0x30')],_0x209f09['query']);_0x112783[_0x936f('0x35')]=_['intersection'](_0x209f09['model'],qs[_0x936f('0x36')](_0x123911[_0x936f('0x31')][_0x936f('0x36')]));_0x112783[_0x936f('0x35')]=_0x112783[_0x936f('0x35')][_0x936f('0x37')]?_0x112783[_0x936f('0x35')]:_0x209f09['model'];_0x112783[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x123911[_0x936f('0x31')][_0x936f('0x3b')]);_0x112783['where']=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x123911['query'],_0x209f09['filters']));if(_0x123911[_0x936f('0x31')][_0x936f('0x5a')]){_0x112783[_0x936f('0x3c')]=_[_0x936f('0x3d')](_0x112783[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x112783[_0x936f('0x35')],function(_0x16c62a){var _0x5a8399={};_0x5a8399[_0x16c62a]={'$like':'%'+_0x123911[_0x936f('0x31')][_0x936f('0x5a')]+'%'};return _0x5a8399;})});}_0x112783=_[_0x936f('0x3d')]({},_0x112783,_0x123911[_0x936f('0x3f')]);return _0x1e37f8[_0x936f('0x8f')](_0x112783);}})[_0x936f('0x25')](function(_0x319e38){if(_0x319e38){_0x1c5c17=_0x319e38[_0x936f('0x37')];if(!_0x123911['query']['hasOwnProperty'](_0x936f('0x39'))){_0x112783['limit']=qs[_0x936f('0x20')](_0x123911[_0x936f('0x31')][_0x936f('0x20')]);_0x112783[_0x936f('0x1d')]=qs['offset'](_0x123911[_0x936f('0x31')][_0x936f('0x1d')]);}return _0x1e37f8[_0x936f('0x8f')](_0x112783);}})[_0x936f('0x25')](function(_0x4c11dd){if(_0x4c11dd){return _0x4c11dd?{'count':_0x1c5c17,'rows':_0x4c11dd}:null;}})[_0x936f('0x25')](respondWithResult(_0x45a11c,null))['catch'](handleError(_0x45a11c,null));};exports[_0x936f('0x90')]=function(_0x16b57e,_0x12f9a8,_0x44b415){var _0x58cabc,_0x1f64ee;var _0x447018=[];var _0x5f4d16=moment()[_0x936f('0x66')](_0x936f('0x67'));return db['Campaign'][_0x936f('0x4b')]({'where':{'id':_0x16b57e['params']['id']}})['then'](handleEntityNotFound(_0x12f9a8,null))[_0x936f('0x25')](function(_0xa1c8e9){if(_0xa1c8e9){_0x1f64ee=_0xa1c8e9;return _0xa1c8e9['addBlackLists'](_0x16b57e[_0x936f('0x47')][_0x936f('0x68')],_[_0x936f('0x51')](_0x16b57e[_0x936f('0x47')],[_0x936f('0x68'),'id'])||{});}return null;})['spread'](function(_0x4cf618){var _0x1cc656;var _0x47b984;_0x58cabc=_0x4cf618||[];var _0x43bc68=[];if(_0x4cf618){for(var _0x65f6fe=0x0;_0x65f6fe<_0x4cf618[_0x936f('0x37')];_0x65f6fe+=0x1){var _0x5b9899=_0x4cf618[_0x65f6fe]['get']({'plain':!![]});_0x1cc656=squel[_0x936f('0x80')]()[_0x936f('0x6c')](_0x936f('0x91'))['fromQuery']([_0x936f('0x6e'),_0x936f('0x70'),_0x936f('0x71'),_0x936f('0x5e'),'createdAt','updatedAt'],squel['select']()[_0x936f('0x72')]('phone',_0x936f('0x6e'))['field']('id',_0x936f('0x70'))[_0x936f('0x72')](_0x5b9899['CmListId'][_0x936f('0x75')](),_0x936f('0x71'))[_0x936f('0x72')](_0x16b57e['params']['id']['toString'](),_0x936f('0x5e'))[_0x936f('0x72')](_0x936f('0x73'),_0x936f('0x52'))['field'](_0x936f('0x73'),'updatedAt')['from'](_0x936f('0x76'))[_0x936f('0x3c')]('deletedAt\x20IS\x20NULL')[_0x936f('0x3c')](_0x936f('0x77'),_0x5b9899[_0x936f('0x74')][_0x936f('0x75')]())['where'](_0x936f('0x78')))[_0x936f('0x75')]();_0x43bc68['push'](db[_0x936f('0x8c')][_0x936f('0x31')](_0x1cc656));}return BPromise[_0x936f('0x8d')](_0x43bc68);}})['then'](function(){return _0x58cabc;})['then'](respondWithResult(_0x12f9a8,null))[_0x936f('0x4d')](handleError(_0x12f9a8,null));};exports[_0x936f('0x92')]=function(_0x2c6cfc,_0x216b7d,_0x4dcd57){return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x2c6cfc['params']['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x216b7d,null))[_0x936f('0x25')](function(_0x2b0d0d){if(_0x2b0d0d){return _0x2b0d0d[_0x936f('0x92')](_0x2c6cfc[_0x936f('0x31')][_0x936f('0x68')]);}})[_0x936f('0x25')](function(_0x48fa49){if(_0x48fa49){return db[_0x936f('0x62')]['destroy']({'where':{'ListId':_0x2c6cfc[_0x936f('0x31')][_0x936f('0x68')],'CampaignId':_0x2c6cfc['params']['id']}})[_0x936f('0x25')](function(){return _0x48fa49;});}})[_0x936f('0x25')](respondWithStatusCode(_0x216b7d,null))['catch'](handleError(_0x216b7d,null));};
\ No newline at end of file
+var _0xe0dc=['limit','count','Content-Range','apply','reject','update','then','destroy','IvrCampaigns','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','key','model','map','keys','filters','intersection','attributes','fields','query','length','order','sort','where','pick','merge','type','VIRTUAL','filter','options','Campaign','includeAll','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','include','createdAt','updatedAt','omit','UserProfileSection','getHoppers','findOne','CmHopper','hasOwnProperty','nolimit','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','CmList','getLists','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','select','phone','field','NOW()','toString','from','cm_contacts','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','CampaignId\x20=\x20?','onlyIfOpen','cm_hopper_additional_phones','cmHopperId','OrderBy','h.id','ci.item','ci.OrderBY','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','deletedAt\x20IS\x20NULL','removeBlackLists','rimraf','zip-dir','fast-json-patch','moment','bluebird','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','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined'];(function(_0x1cac7d,_0x587638){var _0x468636=function(_0x455ba1){while(--_0x455ba1){_0x1cac7d['push'](_0x1cac7d['shift']());}};_0x468636(++_0x587638);}(_0xe0dc,0x77));var _0xce0d=function(_0x7a2a2f,_0x26057a){_0x7a2a2f=_0x7a2a2f-0x0;var _0x4fbb2a=_0xe0dc[_0x7a2a2f];return _0x4fbb2a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xce0d('0x0'));var zipdir=require(_0xce0d('0x1'));var jsonpatch=require(_0xce0d('0x2'));var rp=require('request-promise');var moment=require(_0xce0d('0x3'));var BPromise=require(_0xce0d('0x4'));var Mustache=require('mustache');var util=require(_0xce0d('0x5'));var path=require(_0xce0d('0x6'));var sox=require(_0xce0d('0x7'));var csv=require(_0xce0d('0x8'));var ejs=require(_0xce0d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xce0d('0xa'));var squel=require(_0xce0d('0xb'));var crypto=require(_0xce0d('0xc'));var jsforce=require(_0xce0d('0xd'));var deskjs=require(_0xce0d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xce0d('0xf'));var Papa=require(_0xce0d('0x10'));var Redis=require(_0xce0d('0x11'));var authService=require(_0xce0d('0x12'));var qs=require(_0xce0d('0x13'));var as=require(_0xce0d('0x14'));var hardwareService=require(_0xce0d('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xce0d('0x16'));var config=require(_0xce0d('0x17'));var licenseUtil=require(_0xce0d('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a5ee2,_0x939148){_0x939148=_0x939148||0xcc;return function(_0x46333e){if(_0x46333e){return _0x3a5ee2[_0xce0d('0x19')](_0x939148);}return _0x3a5ee2[_0xce0d('0x1a')](_0x939148)[_0xce0d('0x1b')]();};}function respondWithResult(_0x3ab231,_0xb49710){_0xb49710=_0xb49710||0xc8;return function(_0x260743){if(_0x260743){return _0x3ab231[_0xce0d('0x1a')](_0xb49710)[_0xce0d('0x1c')](_0x260743);}};}function respondWithFilteredResult(_0x6852f1,_0x1f8b05){return function(_0x1b6930){if(_0x1b6930){var _0x4d0a7b=typeof _0x1f8b05[_0xce0d('0x1d')]===_0xce0d('0x1e')&&typeof _0x1f8b05[_0xce0d('0x1f')]===_0xce0d('0x1e');var _0x4fc046=_0x1b6930[_0xce0d('0x20')];var _0x19295b=_0x4d0a7b?0x0:_0x1f8b05[_0xce0d('0x1d')];var _0x598284=_0x4d0a7b?_0x1b6930[_0xce0d('0x20')]:_0x1f8b05[_0xce0d('0x1d')]+_0x1f8b05['limit'];var _0x5379aa;if(_0x598284>=_0x4fc046){_0x598284=_0x4fc046;_0x5379aa=0xc8;}else{_0x5379aa=0xce;}_0x6852f1[_0xce0d('0x1a')](_0x5379aa);return _0x6852f1['set'](_0xce0d('0x21'),_0x19295b+'-'+_0x598284+'/'+_0x4fc046)['json'](_0x1b6930);}return null;};}function patchUpdates(_0x36ace7){return function(_0x37f0fa){try{jsonpatch[_0xce0d('0x22')](_0x37f0fa,_0x36ace7,!![]);}catch(_0xc4f5c7){return BPromise[_0xce0d('0x23')](_0xc4f5c7);}return _0x37f0fa['save']();};}function saveUpdates(_0x337cc6,_0x4e4768){return function(_0x4e745c){if(_0x4e745c){return _0x4e745c[_0xce0d('0x24')](_0x337cc6)[_0xce0d('0x25')](function(_0xbfeca5){return _0xbfeca5;});}return null;};}function removeEntity(_0x407529,_0x5c3c0e){return function(_0x59b7f4){if(_0x59b7f4){return _0x59b7f4[_0xce0d('0x26')]()[_0xce0d('0x25')](function(){var _0x3a40e5=_0x59b7f4['get']({'plain':!![]});var _0x221134=_0xce0d('0x27');return db[_0xce0d('0x28')]['destroy']({'where':{'type':_0x221134,'resourceId':_0x3a40e5['id']}})[_0xce0d('0x25')](function(){return _0x59b7f4;});})[_0xce0d('0x25')](function(){_0x407529[_0xce0d('0x1a')](0xcc)[_0xce0d('0x1b')]();});}};}function handleEntityNotFound(_0x54ddaf,_0x51c773){return function(_0x13577e){if(!_0x13577e){_0x54ddaf[_0xce0d('0x19')](0x194);}return _0x13577e;};}function handleError(_0x2fbaca,_0x28f415){_0x28f415=_0x28f415||0x1f4;return function(_0x3e4b39){logger[_0xce0d('0x29')](_0x3e4b39[_0xce0d('0x2a')]);if(_0x3e4b39[_0xce0d('0x2b')]){delete _0x3e4b39[_0xce0d('0x2b')];}_0x2fbaca[_0xce0d('0x1a')](_0x28f415)[_0xce0d('0x2c')](_0x3e4b39);};}exports[_0xce0d('0x2d')]=function(_0x2ac5a1,_0x2e31d6){var _0x3bf08a={},_0x3c690={},_0x5b8758={'count':0x0,'rows':[]};var _0xd14899=_['map'](db['Campaign'][_0xce0d('0x2e')],function(_0x4b733d){return{'name':_0x4b733d[_0xce0d('0x2f')],'type':_0x4b733d['type'][_0xce0d('0x30')]};});_0x3c690[_0xce0d('0x31')]=_[_0xce0d('0x32')](_0xd14899,_0xce0d('0x2b'));_0x3c690['query']=_[_0xce0d('0x33')](_0x2ac5a1['query']);_0x3c690[_0xce0d('0x34')]=_[_0xce0d('0x35')](_0x3c690[_0xce0d('0x31')],_0x3c690['query']);_0x3bf08a[_0xce0d('0x36')]=_[_0xce0d('0x35')](_0x3c690[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0x2ac5a1[_0xce0d('0x38')]['fields']));_0x3bf08a[_0xce0d('0x36')]=_0x3bf08a[_0xce0d('0x36')][_0xce0d('0x39')]?_0x3bf08a[_0xce0d('0x36')]:_0x3c690[_0xce0d('0x31')];if(!_0x2ac5a1[_0xce0d('0x38')]['hasOwnProperty']('nolimit')){_0x3bf08a['limit']=qs[_0xce0d('0x1f')](_0x2ac5a1[_0xce0d('0x38')][_0xce0d('0x1f')]);_0x3bf08a[_0xce0d('0x1d')]=qs[_0xce0d('0x1d')](_0x2ac5a1[_0xce0d('0x38')]['offset']);}_0x3bf08a[_0xce0d('0x3a')]=qs[_0xce0d('0x3b')](_0x2ac5a1[_0xce0d('0x38')]['sort']);_0x3bf08a[_0xce0d('0x3c')]=qs[_0xce0d('0x34')](_[_0xce0d('0x3d')](_0x2ac5a1[_0xce0d('0x38')],_0x3c690['filters']),_0xd14899);if(_0x2ac5a1[_0xce0d('0x38')]['filter']){_0x3bf08a[_0xce0d('0x3c')]=_[_0xce0d('0x3e')](_0x3bf08a['where'],{'$or':_[_0xce0d('0x32')](_0xd14899,function(_0x118037){if(_0x118037[_0xce0d('0x3f')]!==_0xce0d('0x40')){var _0x1b14c5={};_0x1b14c5[_0x118037[_0xce0d('0x2b')]]={'$like':'%'+_0x2ac5a1[_0xce0d('0x38')][_0xce0d('0x41')]+'%'};return _0x1b14c5;}})});}_0x3bf08a=_[_0xce0d('0x3e')]({},_0x3bf08a,_0x2ac5a1[_0xce0d('0x42')]);var _0x32dc5e={'where':_0x3bf08a[_0xce0d('0x3c')]};return db[_0xce0d('0x43')]['count'](_0x32dc5e)[_0xce0d('0x25')](function(_0x543347){_0x5b8758[_0xce0d('0x20')]=_0x543347;if(_0x2ac5a1[_0xce0d('0x38')][_0xce0d('0x44')]){_0x3bf08a['include']=[{'all':!![]}];}return db[_0xce0d('0x43')][_0xce0d('0x45')](_0x3bf08a);})[_0xce0d('0x25')](function(_0x123876){_0x5b8758[_0xce0d('0x46')]=_0x123876;return _0x5b8758;})[_0xce0d('0x25')](respondWithFilteredResult(_0x2e31d6,_0x3bf08a))[_0xce0d('0x47')](handleError(_0x2e31d6,null));};exports[_0xce0d('0x48')]=function(_0xf5122e,_0x34a106){var _0x219753={'raw':![],'where':{'id':_0xf5122e[_0xce0d('0x49')]['id']}},_0x4a6272={};_0x4a6272[_0xce0d('0x31')]=_[_0xce0d('0x33')](db['Campaign']['rawAttributes']);_0x4a6272['query']=_[_0xce0d('0x33')](_0xf5122e[_0xce0d('0x38')]);_0x4a6272[_0xce0d('0x34')]=_[_0xce0d('0x35')](_0x4a6272[_0xce0d('0x31')],_0x4a6272[_0xce0d('0x38')]);_0x219753[_0xce0d('0x36')]=_[_0xce0d('0x35')](_0x4a6272[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0xf5122e[_0xce0d('0x38')][_0xce0d('0x37')]));_0x219753[_0xce0d('0x36')]=_0x219753[_0xce0d('0x36')][_0xce0d('0x39')]?_0x219753['attributes']:_0x4a6272[_0xce0d('0x31')];if(_0xf5122e[_0xce0d('0x38')]['includeAll']){_0x219753['include']=[{'all':!![]}];}_0x219753=_['merge']({},_0x219753,_0xf5122e['options']);return db[_0xce0d('0x43')][_0xce0d('0x4a')](_0x219753)[_0xce0d('0x25')](handleEntityNotFound(_0x34a106,null))[_0xce0d('0x25')](respondWithResult(_0x34a106,null))[_0xce0d('0x47')](handleError(_0x34a106,null));};exports[_0xce0d('0x4b')]=function(_0x497052,_0x5ba16e){return db[_0xce0d('0x43')]['create'](_0x497052[_0xce0d('0x4c')],{})[_0xce0d('0x25')](function(_0x3f724a){var _0xf92f95=_0x497052[_0xce0d('0x4d')]['get']({'plain':!![]});if(!_0xf92f95)throw new Error(_0xce0d('0x4e'));if(_0xf92f95[_0xce0d('0x4f')]===_0xce0d('0x4d')){var _0x15f678=_0x3f724a[_0xce0d('0x50')]({'plain':!![]});var _0xcbccf='IvrCampaigns';return db['UserProfileSection'][_0xce0d('0x4a')]({'where':{'name':_0xcbccf,'userProfileId':_0xf92f95[_0xce0d('0x51')]},'raw':!![]})[_0xce0d('0x25')](function(_0x3555ef){if(_0x3555ef&&_0x3555ef[_0xce0d('0x52')]===0x0){return db['UserProfileResource']['create']({'name':_0x15f678[_0xce0d('0x2b')],'resourceId':_0x15f678['id'],'type':_0x3555ef['name'],'sectionId':_0x3555ef['id']},{})[_0xce0d('0x25')](function(){return _0x3f724a;});}else{return _0x3f724a;}})[_0xce0d('0x47')](function(_0x394035){logger['error'](_0xce0d('0x53'),_0x394035);throw _0x394035;});}return _0x3f724a;})[_0xce0d('0x25')](respondWithResult(_0x5ba16e,0xc9))[_0xce0d('0x47')](handleError(_0x5ba16e,null));};exports[_0xce0d('0x54')]=function(_0x4030a8,_0x3eebfc){var _0x2a27d5={'where':{'id':_0x4030a8[_0xce0d('0x49')]['id']}},_0x12a1ea={};_0x12a1ea['model']=_['keys'](db[_0xce0d('0x43')]['rawAttributes']);_0x2a27d5[_0xce0d('0x36')]=_[_0xce0d('0x35')](_0x12a1ea[_0xce0d('0x31')],qs['fields'](_0x4030a8[_0xce0d('0x38')][_0xce0d('0x37')]));_0x2a27d5[_0xce0d('0x36')]=_0x2a27d5[_0xce0d('0x36')][_0xce0d('0x39')]?_0x2a27d5[_0xce0d('0x36')]:_0x12a1ea['model'];if(_0x4030a8[_0xce0d('0x38')][_0xce0d('0x44')]){_0x2a27d5[_0xce0d('0x55')]=[{'all':!![]}];}_0x2a27d5=_[_0xce0d('0x3e')]({},_0x2a27d5,_0x4030a8['options']);return db['Campaign']['find'](_0x2a27d5)['then'](handleEntityNotFound(_0x3eebfc,null))[_0xce0d('0x25')](function(_0x25c334){if(_0x25c334){var _0x4bd5cc=_0x25c334[_0xce0d('0x50')]({'plain':!![]});_0x4bd5cc=qs['omit'](_0x4bd5cc,['id',_0xce0d('0x56'),_0xce0d('0x57')]);_0x4030a8[_0xce0d('0x4c')]=_[_0xce0d('0x58')](_0x4030a8[_0xce0d('0x4c')],['id',_0xce0d('0x56'),_0xce0d('0x57')]);return db[_0xce0d('0x43')][_0xce0d('0x4b')](_[_0xce0d('0x3e')](_0x4bd5cc,_0x4030a8[_0xce0d('0x4c')]),{'include':_0x4030a8[_0xce0d('0x38')][_0xce0d('0x44')]?[{'all':!![]}]:undefined})['then'](function(_0x467d22){var _0x29d4ae=_0x4030a8[_0xce0d('0x4d')][_0xce0d('0x50')]({'plain':!![]});if(!_0x29d4ae)throw new Error(_0xce0d('0x4e'));if(_0x29d4ae[_0xce0d('0x4f')]==='user'){var _0x15bab9=_0x467d22[_0xce0d('0x50')]({'plain':!![]});var _0xfe3fc='IvrCampaigns';return db[_0xce0d('0x59')]['find']({'where':{'name':_0xfe3fc,'userProfileId':_0x29d4ae['userProfileId']},'raw':!![]})['then'](function(_0x4192ee){if(_0x4192ee&&_0x4192ee[_0xce0d('0x52')]===0x0){return db[_0xce0d('0x28')][_0xce0d('0x4b')]({'name':_0x15bab9[_0xce0d('0x2b')],'resourceId':_0x15bab9['id'],'type':_0x4192ee[_0xce0d('0x2b')],'sectionId':_0x4192ee['id']},{})['then'](function(){return _0x467d22;});}else{return _0x467d22;}})[_0xce0d('0x47')](function(_0xd5c7cb){logger[_0xce0d('0x29')](_0xce0d('0x53'),_0xd5c7cb);throw _0xd5c7cb;});}return _0x467d22;});}})['then'](respondWithResult(_0x3eebfc,0xc9))['catch'](handleError(_0x3eebfc,null));};exports[_0xce0d('0x24')]=function(_0x11eefe,_0x120eb2){if(_0x11eefe[_0xce0d('0x4c')]['id']){delete _0x11eefe['body']['id'];}return db['Campaign']['find']({'where':{'id':_0x11eefe[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x120eb2,null))[_0xce0d('0x25')](saveUpdates(_0x11eefe[_0xce0d('0x4c')],null))[_0xce0d('0x25')](respondWithResult(_0x120eb2,null))[_0xce0d('0x47')](handleError(_0x120eb2,null));};exports['destroy']=function(_0x42df70,_0x5cb491){return db[_0xce0d('0x43')][_0xce0d('0x4a')]({'where':{'id':_0x42df70[_0xce0d('0x49')]['id']}})['then'](handleEntityNotFound(_0x5cb491,null))[_0xce0d('0x25')](removeEntity(_0x5cb491,null))['catch'](handleError(_0x5cb491,null));};exports[_0xce0d('0x5a')]=function(_0x35a27e,_0x22e2d6,_0x38add9){var _0x32b9f8={'raw':!![],'where':{}};var _0x1067fd={};var _0x9ffab3={'count':0x0,'rows':[]};return db['Campaign'][_0xce0d('0x5b')]({'where':{'id':_0x35a27e[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x22e2d6,null))[_0xce0d('0x25')](function(_0x3ee294){if(_0x3ee294){_0x1067fd[_0xce0d('0x31')]=_[_0xce0d('0x33')](db[_0xce0d('0x5c')][_0xce0d('0x2e')]);_0x1067fd[_0xce0d('0x38')]=_[_0xce0d('0x33')](_0x35a27e[_0xce0d('0x38')]);_0x1067fd['filters']=_[_0xce0d('0x35')](_0x1067fd[_0xce0d('0x31')],_0x1067fd[_0xce0d('0x38')]);_0x32b9f8[_0xce0d('0x36')]=_[_0xce0d('0x35')](_0x1067fd[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0x35a27e[_0xce0d('0x38')][_0xce0d('0x37')]));_0x32b9f8['attributes']=_0x32b9f8['attributes'][_0xce0d('0x39')]?_0x32b9f8[_0xce0d('0x36')]:_0x1067fd[_0xce0d('0x31')];if(!_0x35a27e['query'][_0xce0d('0x5d')](_0xce0d('0x5e'))){_0x32b9f8[_0xce0d('0x1f')]=qs[_0xce0d('0x1f')](_0x35a27e[_0xce0d('0x38')][_0xce0d('0x1f')]);_0x32b9f8[_0xce0d('0x1d')]=qs[_0xce0d('0x1d')](_0x35a27e['query']['offset']);}_0x32b9f8[_0xce0d('0x3a')]=qs[_0xce0d('0x3b')](_0x35a27e[_0xce0d('0x38')][_0xce0d('0x3b')]);_0x32b9f8[_0xce0d('0x3c')]=qs[_0xce0d('0x34')](_[_0xce0d('0x3d')](_0x35a27e['query'],_0x1067fd[_0xce0d('0x34')]));_0x32b9f8[_0xce0d('0x3c')][_0xce0d('0x5f')]=_0x3ee294['id'];if(_0x35a27e[_0xce0d('0x38')]['filter']){_0x32b9f8[_0xce0d('0x3c')]=_[_0xce0d('0x3e')](_0x32b9f8[_0xce0d('0x3c')],{'$or':_[_0xce0d('0x32')](_0x32b9f8[_0xce0d('0x36')],function(_0x93e3aa){var _0x45e154={};_0x45e154[_0x93e3aa]={'$like':'%'+_0x35a27e[_0xce0d('0x38')][_0xce0d('0x41')]+'%'};return _0x45e154;})});}_0x32b9f8=_[_0xce0d('0x3e')]({},_0x32b9f8,_0x35a27e[_0xce0d('0x42')]);return db[_0xce0d('0x5c')]['count']({'where':_0x32b9f8['where']})['then'](function(_0x2e10d0){_0x9ffab3[_0xce0d('0x20')]=_0x2e10d0;if(_0x35a27e[_0xce0d('0x38')][_0xce0d('0x44')]){_0x32b9f8[_0xce0d('0x55')]=[{'all':!![]}];}return db[_0xce0d('0x5c')][_0xce0d('0x45')](_0x32b9f8);})[_0xce0d('0x25')](function(_0x4c3c92){_0x9ffab3[_0xce0d('0x46')]=_0x4c3c92;return _0x9ffab3;});}})[_0xce0d('0x25')](respondWithFilteredResult(_0x22e2d6,_0x32b9f8))['catch'](handleError(_0x22e2d6,null));};exports[_0xce0d('0x60')]=function(_0x2f5be2,_0x192b34,_0x3337f5){var _0x344d46={'raw':!![],'where':{}};var _0x30a204={};var _0x3ad14e={'count':0x0,'rows':[]};return db[_0xce0d('0x43')]['findOne']({'where':{'id':_0x2f5be2[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x192b34,null))[_0xce0d('0x25')](function(_0x17877d){if(_0x17877d){_0x30a204[_0xce0d('0x31')]=_[_0xce0d('0x33')](db[_0xce0d('0x61')]['rawAttributes']);_0x30a204['query']=_[_0xce0d('0x33')](_0x2f5be2[_0xce0d('0x38')]);_0x30a204[_0xce0d('0x34')]=_[_0xce0d('0x35')](_0x30a204[_0xce0d('0x31')],_0x30a204[_0xce0d('0x38')]);_0x344d46[_0xce0d('0x36')]=_[_0xce0d('0x35')](_0x30a204[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0x2f5be2[_0xce0d('0x38')][_0xce0d('0x37')]));_0x344d46[_0xce0d('0x36')]=_0x344d46['attributes'][_0xce0d('0x39')]?_0x344d46[_0xce0d('0x36')]:_0x30a204[_0xce0d('0x31')];if(!_0x2f5be2['query'][_0xce0d('0x5d')](_0xce0d('0x5e'))){_0x344d46[_0xce0d('0x1f')]=qs[_0xce0d('0x1f')](_0x2f5be2[_0xce0d('0x38')]['limit']);_0x344d46['offset']=qs[_0xce0d('0x1d')](_0x2f5be2[_0xce0d('0x38')][_0xce0d('0x1d')]);}_0x344d46[_0xce0d('0x3a')]=qs['sort'](_0x2f5be2[_0xce0d('0x38')]['sort']);_0x344d46[_0xce0d('0x3c')]=qs[_0xce0d('0x34')](_['pick'](_0x2f5be2[_0xce0d('0x38')],_0x30a204[_0xce0d('0x34')]));_0x344d46[_0xce0d('0x3c')][_0xce0d('0x5f')]=_0x17877d['id'];if(_0x2f5be2[_0xce0d('0x38')][_0xce0d('0x41')]){_0x344d46['where']=_[_0xce0d('0x3e')](_0x344d46[_0xce0d('0x3c')],{'$or':_[_0xce0d('0x32')](_0x344d46[_0xce0d('0x36')],function(_0x545b6a){var _0x1acce8={};_0x1acce8[_0x545b6a]={'$like':'%'+_0x2f5be2[_0xce0d('0x38')]['filter']+'%'};return _0x1acce8;})});}_0x344d46=_['merge']({},_0x344d46,_0x2f5be2[_0xce0d('0x42')]);return db[_0xce0d('0x61')][_0xce0d('0x20')]({'where':_0x344d46[_0xce0d('0x3c')]})['then'](function(_0x4ebca4){_0x3ad14e['count']=_0x4ebca4;if(_0x2f5be2[_0xce0d('0x38')]['includeAll']){_0x344d46[_0xce0d('0x55')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xce0d('0x45')](_0x344d46);})['then'](function(_0x27e5c5){_0x3ad14e[_0xce0d('0x46')]=_0x27e5c5;return _0x3ad14e;});}})['then'](respondWithFilteredResult(_0x192b34,_0x344d46))[_0xce0d('0x47')](handleError(_0x192b34,null));};exports[_0xce0d('0x62')]=function(_0x5e77d5,_0x359457,_0x4ce9bd){var _0x35465d={'raw':!![],'where':{}};var _0x217c14={};var _0x3a8cfe={'count':0x0,'rows':[]};return db[_0xce0d('0x43')][_0xce0d('0x5b')]({'where':{'id':_0x5e77d5[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x359457,null))[_0xce0d('0x25')](function(_0x23527c){if(_0x23527c){_0x217c14[_0xce0d('0x31')]=_[_0xce0d('0x33')](db[_0xce0d('0x63')][_0xce0d('0x2e')]);_0x217c14['query']=_[_0xce0d('0x33')](_0x5e77d5[_0xce0d('0x38')]);_0x217c14[_0xce0d('0x34')]=_[_0xce0d('0x35')](_0x217c14[_0xce0d('0x31')],_0x217c14[_0xce0d('0x38')]);_0x35465d[_0xce0d('0x36')]=_[_0xce0d('0x35')](_0x217c14[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0x5e77d5['query']['fields']));_0x35465d[_0xce0d('0x36')]=_0x35465d[_0xce0d('0x36')][_0xce0d('0x39')]?_0x35465d[_0xce0d('0x36')]:_0x217c14[_0xce0d('0x31')];if(!_0x5e77d5[_0xce0d('0x38')][_0xce0d('0x5d')]('nolimit')){_0x35465d[_0xce0d('0x1f')]=qs[_0xce0d('0x1f')](_0x5e77d5[_0xce0d('0x38')]['limit']);_0x35465d['offset']=qs[_0xce0d('0x1d')](_0x5e77d5[_0xce0d('0x38')][_0xce0d('0x1d')]);}_0x35465d[_0xce0d('0x3a')]=qs['sort'](_0x5e77d5[_0xce0d('0x38')]['sort']);_0x35465d[_0xce0d('0x3c')]=qs[_0xce0d('0x34')](_['pick'](_0x5e77d5[_0xce0d('0x38')],_0x217c14['filters']));_0x35465d[_0xce0d('0x3c')]['CampaignId']=_0x23527c['id'];if(_0x5e77d5[_0xce0d('0x38')][_0xce0d('0x41')]){_0x35465d['where']=_['merge'](_0x35465d['where'],{'$or':_['map'](_0x35465d[_0xce0d('0x36')],function(_0x27f73f){var _0x29b3ea={};_0x29b3ea[_0x27f73f]={'$like':'%'+_0x5e77d5[_0xce0d('0x38')][_0xce0d('0x41')]+'%'};return _0x29b3ea;})});}_0x35465d=_[_0xce0d('0x3e')]({},_0x35465d,_0x5e77d5[_0xce0d('0x42')]);return db[_0xce0d('0x63')]['count']({'where':_0x35465d[_0xce0d('0x3c')]})[_0xce0d('0x25')](function(_0x4a0ae9){_0x3a8cfe[_0xce0d('0x20')]=_0x4a0ae9;if(_0x5e77d5[_0xce0d('0x38')][_0xce0d('0x44')]){_0x35465d['include']=[{'all':!![]}];}return db[_0xce0d('0x63')]['findAll'](_0x35465d);})[_0xce0d('0x25')](function(_0x3b289f){_0x3a8cfe['rows']=_0x3b289f;return _0x3a8cfe;});}})[_0xce0d('0x25')](respondWithFilteredResult(_0x359457,_0x35465d))[_0xce0d('0x47')](handleError(_0x359457,null));};exports['getHopperBlacks']=function(_0x442d57,_0x1a9e4e,_0x4d2796){var _0x4bf001={'raw':!![],'where':{}};var _0x3d60b5={};var _0x4d780b={'count':0x0,'rows':[]};return db[_0xce0d('0x43')][_0xce0d('0x5b')]({'where':{'id':_0x442d57[_0xce0d('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a9e4e,null))[_0xce0d('0x25')](function(_0x433b39){if(_0x433b39){_0x3d60b5[_0xce0d('0x31')]=_[_0xce0d('0x33')](db[_0xce0d('0x64')]['rawAttributes']);_0x3d60b5[_0xce0d('0x38')]=_['keys'](_0x442d57[_0xce0d('0x38')]);_0x3d60b5[_0xce0d('0x34')]=_[_0xce0d('0x35')](_0x3d60b5[_0xce0d('0x31')],_0x3d60b5[_0xce0d('0x38')]);_0x4bf001[_0xce0d('0x36')]=_[_0xce0d('0x35')](_0x3d60b5[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0x442d57[_0xce0d('0x38')][_0xce0d('0x37')]));_0x4bf001[_0xce0d('0x36')]=_0x4bf001['attributes'][_0xce0d('0x39')]?_0x4bf001['attributes']:_0x3d60b5[_0xce0d('0x31')];if(!_0x442d57[_0xce0d('0x38')][_0xce0d('0x5d')]('nolimit')){_0x4bf001[_0xce0d('0x1f')]=qs['limit'](_0x442d57[_0xce0d('0x38')]['limit']);_0x4bf001[_0xce0d('0x1d')]=qs[_0xce0d('0x1d')](_0x442d57[_0xce0d('0x38')][_0xce0d('0x1d')]);}_0x4bf001[_0xce0d('0x3a')]=qs[_0xce0d('0x3b')](_0x442d57[_0xce0d('0x38')][_0xce0d('0x3b')]);_0x4bf001[_0xce0d('0x3c')]=qs[_0xce0d('0x34')](_[_0xce0d('0x3d')](_0x442d57[_0xce0d('0x38')],_0x3d60b5['filters']));_0x4bf001[_0xce0d('0x3c')][_0xce0d('0x5f')]=_0x433b39['id'];if(_0x442d57['query'][_0xce0d('0x41')]){_0x4bf001[_0xce0d('0x3c')]=_['merge'](_0x4bf001[_0xce0d('0x3c')],{'$or':_[_0xce0d('0x32')](_0x4bf001[_0xce0d('0x36')],function(_0x38c3df){var _0x114185={};_0x114185[_0x38c3df]={'$like':'%'+_0x442d57[_0xce0d('0x38')][_0xce0d('0x41')]+'%'};return _0x114185;})});}_0x4bf001=_['merge']({},_0x4bf001,_0x442d57[_0xce0d('0x42')]);return db[_0xce0d('0x64')][_0xce0d('0x20')]({'where':_0x4bf001[_0xce0d('0x3c')]})[_0xce0d('0x25')](function(_0x564a2b){_0x4d780b['count']=_0x564a2b;if(_0x442d57[_0xce0d('0x38')][_0xce0d('0x44')]){_0x4bf001['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0xce0d('0x45')](_0x4bf001);})[_0xce0d('0x25')](function(_0x2da9b4){_0x4d780b['rows']=_0x2da9b4;return _0x4d780b;});}})['then'](respondWithFilteredResult(_0x1a9e4e,_0x4bf001))['catch'](handleError(_0x1a9e4e,null));};exports['getLists']=function(_0x317d85,_0x5da8df,_0x4863da){var _0x11c87a={};var _0xd940c7={};var _0x57e705;var _0x13188d;return db['Campaign'][_0xce0d('0x5b')]({'where':{'id':_0x317d85[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x5da8df,null))['then'](function(_0x41767a){if(_0x41767a){_0x57e705=_0x41767a;_0xd940c7[_0xce0d('0x31')]=_['keys'](db[_0xce0d('0x65')][_0xce0d('0x2e')]);_0xd940c7[_0xce0d('0x38')]=_[_0xce0d('0x33')](_0x317d85[_0xce0d('0x38')]);_0xd940c7[_0xce0d('0x34')]=_[_0xce0d('0x35')](_0xd940c7['model'],_0xd940c7['query']);_0x11c87a['attributes']=_[_0xce0d('0x35')](_0xd940c7[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0x317d85['query']['fields']));_0x11c87a[_0xce0d('0x36')]=_0x11c87a[_0xce0d('0x36')]['length']?_0x11c87a[_0xce0d('0x36')]:_0xd940c7[_0xce0d('0x31')];_0x11c87a[_0xce0d('0x3a')]=qs[_0xce0d('0x3b')](_0x317d85['query']['sort']);_0x11c87a['where']=qs[_0xce0d('0x34')](_[_0xce0d('0x3d')](_0x317d85[_0xce0d('0x38')],_0xd940c7[_0xce0d('0x34')]));if(_0x317d85['query'][_0xce0d('0x41')]){_0x11c87a[_0xce0d('0x3c')]=_['merge'](_0x11c87a[_0xce0d('0x3c')],{'$or':_['map'](_0x11c87a[_0xce0d('0x36')],function(_0x3a6f21){var _0xddc2ea={};_0xddc2ea[_0x3a6f21]={'$like':'%'+_0x317d85['query'][_0xce0d('0x41')]+'%'};return _0xddc2ea;})});}_0x11c87a=_['merge']({},_0x11c87a,_0x317d85[_0xce0d('0x42')]);return _0x57e705[_0xce0d('0x66')](_0x11c87a);}})[_0xce0d('0x25')](function(_0x446c39){if(_0x446c39){_0x13188d=_0x446c39[_0xce0d('0x39')];if(!_0x317d85['query'][_0xce0d('0x5d')]('nolimit')){_0x11c87a[_0xce0d('0x1f')]=qs[_0xce0d('0x1f')](_0x317d85['query'][_0xce0d('0x1f')]);_0x11c87a[_0xce0d('0x1d')]=qs[_0xce0d('0x1d')](_0x317d85[_0xce0d('0x38')]['offset']);}return _0x57e705['getLists'](_0x11c87a);}})['then'](function(_0x20c2bf){if(_0x20c2bf){return _0x20c2bf?{'count':_0x13188d,'rows':_0x20c2bf}:null;}})[_0xce0d('0x25')](respondWithResult(_0x5da8df,null))[_0xce0d('0x47')](handleError(_0x5da8df,null));};exports[_0xce0d('0x67')]=function(_0x3cb52f,_0x1a7c34,_0x3d47a5){var _0x1f2e46,_0x56144a;var _0x5dcfcb=[];var _0x402a73=moment()[_0xce0d('0x68')](_0xce0d('0x69'));return db[_0xce0d('0x43')]['find']({'where':{'id':_0x3cb52f['params']['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x1a7c34,null))['then'](function(_0x2b991){if(_0x2b991){_0x56144a=_0x2b991;return _0x2b991['addLists'](_0x3cb52f[_0xce0d('0x4c')][_0xce0d('0x6a')],_['omit'](_0x3cb52f['body'],[_0xce0d('0x6a'),'id'])||{});}return null;})[_0xce0d('0x6b')](function(_0x53cfe1){var _0x527794;var _0x4282ee;_0x1f2e46=_0x53cfe1||[];var _0x4aded0=[];if(_0x53cfe1){for(var _0x321ccd=0x0;_0x321ccd<_0x53cfe1['length'];_0x321ccd+=0x1){var _0x2e3b96=_0x53cfe1[_0x321ccd]['get']({'plain':!![]});_0x56144a[_0xce0d('0x6c')]=_0x3cb52f[_0xce0d('0x4c')][_0xce0d('0x6c')]?_0x3cb52f[_0xce0d('0x4c')]['dialCheckDuplicateType']:_0x56144a[_0xce0d('0x6c')];switch(_0x56144a[_0xce0d('0x6c')]){case'always':_0x527794=squel[_0xce0d('0x6d')]()[_0xce0d('0x6e')](_0xce0d('0x6f'))[_0xce0d('0x70')](['phone',_0xce0d('0x71'),_0xce0d('0x72'),_0xce0d('0x73'),'CampaignId',_0xce0d('0x56'),_0xce0d('0x57')],squel[_0xce0d('0x74')]()['field'](_0xce0d('0x75'),'phone')[_0xce0d('0x76')](_0xce0d('0x77'),_0xce0d('0x71'))[_0xce0d('0x76')]('id',_0xce0d('0x72'))[_0xce0d('0x76')](_0x2e3b96['CmListId'][_0xce0d('0x78')](),_0xce0d('0x73'))['field'](_0x3cb52f[_0xce0d('0x49')]['id'][_0xce0d('0x78')](),'CampaignId')[_0xce0d('0x76')]('\x27'+_0x402a73+'\x27','createdAt')['field']('\x27'+_0x402a73+'\x27',_0xce0d('0x57'))[_0xce0d('0x79')](_0xce0d('0x7a'))[_0xce0d('0x3c')]('deletedAt\x20IS\x20NULL')[_0xce0d('0x3c')](_0xce0d('0x7b'),_0x2e3b96[_0xce0d('0x7c')][_0xce0d('0x78')]())[_0xce0d('0x3c')](_0xce0d('0x7d'))[_0xce0d('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xce0d('0x76')](_0xce0d('0x7e'))['from'](_0xce0d('0x7f'))[_0xce0d('0x3c')]('CampaignId\x20=\x20?',_0x3cb52f['params']['id']['toString']()))['where'](_0xce0d('0x80'),squel[_0xce0d('0x74')]()[_0xce0d('0x76')](_0xce0d('0x81'))[_0xce0d('0x79')]('cm_hopper')[_0xce0d('0x3c')](_0xce0d('0x82'),_0x3cb52f[_0xce0d('0x49')]['id']['toString']())))['toString']();break;case _0xce0d('0x83'):_0x527794=squel[_0xce0d('0x6d')]()[_0xce0d('0x6e')](_0xce0d('0x6f'))[_0xce0d('0x70')]([_0xce0d('0x75'),'scheduledAt',_0xce0d('0x72'),_0xce0d('0x73'),'CampaignId','createdAt',_0xce0d('0x57')],squel['select']()[_0xce0d('0x76')]('phone',_0xce0d('0x75'))[_0xce0d('0x76')](_0xce0d('0x77'),_0xce0d('0x71'))[_0xce0d('0x76')]('id',_0xce0d('0x72'))[_0xce0d('0x76')](_0x2e3b96[_0xce0d('0x7c')][_0xce0d('0x78')](),_0xce0d('0x73'))[_0xce0d('0x76')](_0x3cb52f[_0xce0d('0x49')]['id'][_0xce0d('0x78')](),'CampaignId')[_0xce0d('0x76')]('\x27'+_0x402a73+'\x27',_0xce0d('0x56'))[_0xce0d('0x76')]('\x27'+_0x402a73+'\x27',_0xce0d('0x57'))[_0xce0d('0x79')](_0xce0d('0x7a'))[_0xce0d('0x3c')]('deletedAt\x20IS\x20NULL')['where'](_0xce0d('0x7b'),_0x2e3b96[_0xce0d('0x7c')][_0xce0d('0x78')]())[_0xce0d('0x3c')](_0xce0d('0x7d'))[_0xce0d('0x3c')](_0xce0d('0x80'),squel[_0xce0d('0x74')]()[_0xce0d('0x76')](_0xce0d('0x81'))[_0xce0d('0x79')]('cm_hopper')['where'](_0xce0d('0x82'),_0x3cb52f[_0xce0d('0x49')]['id']['toString']())))[_0xce0d('0x78')]();break;default:_0x527794=squel['insert']()['into']('cm_hopper')['fromQuery']([_0xce0d('0x75'),_0xce0d('0x71'),'ContactId',_0xce0d('0x73'),_0xce0d('0x5f'),_0xce0d('0x56'),_0xce0d('0x57')],squel['select']()[_0xce0d('0x76')]('phone',_0xce0d('0x75'))[_0xce0d('0x76')]('NOW()',_0xce0d('0x71'))['field']('id',_0xce0d('0x72'))[_0xce0d('0x76')](_0x2e3b96[_0xce0d('0x7c')][_0xce0d('0x78')](),_0xce0d('0x73'))[_0xce0d('0x76')](_0x3cb52f[_0xce0d('0x49')]['id'][_0xce0d('0x78')](),_0xce0d('0x5f'))[_0xce0d('0x76')]('\x27'+_0x402a73+'\x27',_0xce0d('0x56'))[_0xce0d('0x76')]('\x27'+_0x402a73+'\x27',_0xce0d('0x57'))[_0xce0d('0x79')](_0xce0d('0x7a'))[_0xce0d('0x3c')]('deletedAt\x20IS\x20NULL')['where'](_0xce0d('0x7b'),_0x2e3b96['CmListId'][_0xce0d('0x78')]())[_0xce0d('0x3c')](_0xce0d('0x7d')))[_0xce0d('0x78')]();}_0x4282ee=squel['insert']()[_0xce0d('0x6e')](_0xce0d('0x84'))[_0xce0d('0x70')]([_0xce0d('0x85'),_0xce0d('0x71'),_0xce0d('0x75'),_0xce0d('0x86'),'createdAt',_0xce0d('0x57')],squel['select']()[_0xce0d('0x76')](_0xce0d('0x87'),'id')[_0xce0d('0x76')]('NOW()',_0xce0d('0x71'))['field'](_0xce0d('0x88'),_0xce0d('0x75'))['field'](_0xce0d('0x89'),_0xce0d('0x86'))[_0xce0d('0x76')]('\x27'+_0x402a73+'\x27',_0xce0d('0x56'))[_0xce0d('0x76')]('\x27'+_0x402a73+'\x27','updatedAt')[_0xce0d('0x79')]('cm_contact_has_items','ci')['join'](_0xce0d('0x6f'),'h',_0xce0d('0x8a'))['where'](_0xce0d('0x8b'),_0x2e3b96[_0xce0d('0x7c')][_0xce0d('0x78')]())[_0xce0d('0x3c')]('h.CampaignId=?',_0x3cb52f[_0xce0d('0x49')]['id'][_0xce0d('0x78')]())[_0xce0d('0x3c')](_0xce0d('0x8c'),_0x402a73))[_0xce0d('0x78')]();_0x4aded0[_0xce0d('0x8d')](db[_0xce0d('0x8e')]['query'](_0x527794));_0x5dcfcb[_0xce0d('0x8d')](db[_0xce0d('0x8e')][_0xce0d('0x38')](_0x4282ee));}return BPromise[_0xce0d('0x8f')](_0x4aded0);}})['then'](function(){return BPromise['all'](_0x5dcfcb);})['then'](function(){return _0x1f2e46;})[_0xce0d('0x25')](respondWithResult(_0x1a7c34,null))['catch'](handleError(_0x1a7c34,null));};exports['removeLists']=function(_0xbc490e,_0x4fd5b8,_0x38504f){return db[_0xce0d('0x43')]['find']({'where':{'id':_0xbc490e[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x4fd5b8,null))[_0xce0d('0x25')](function(_0x6dfc3e){if(_0x6dfc3e){return _0x6dfc3e[_0xce0d('0x90')](_0xbc490e[_0xce0d('0x38')][_0xce0d('0x6a')]);}})[_0xce0d('0x25')](function(_0x6d2639){if(_0x6d2639){return db[_0xce0d('0x5c')][_0xce0d('0x26')]({'where':{'ListId':_0xbc490e[_0xce0d('0x38')]['ids'],'CampaignId':_0xbc490e[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](function(){return _0x6d2639;});}})['then'](respondWithStatusCode(_0x4fd5b8,null))[_0xce0d('0x47')](handleError(_0x4fd5b8,null));};exports['getBlackLists']=function(_0xbfeab1,_0x1a6bf9,_0x3d33b5){var _0x18cacf={};var _0x1b02af={};var _0x52a0d0;var _0x26d5e3;return db[_0xce0d('0x43')][_0xce0d('0x5b')]({'where':{'id':_0xbfeab1[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x1a6bf9,null))['then'](function(_0x3b928b){if(_0x3b928b){_0x52a0d0=_0x3b928b;_0x1b02af[_0xce0d('0x31')]=_[_0xce0d('0x33')](db[_0xce0d('0x65')]['rawAttributes']);_0x1b02af['query']=_[_0xce0d('0x33')](_0xbfeab1[_0xce0d('0x38')]);_0x1b02af[_0xce0d('0x34')]=_[_0xce0d('0x35')](_0x1b02af[_0xce0d('0x31')],_0x1b02af[_0xce0d('0x38')]);_0x18cacf[_0xce0d('0x36')]=_['intersection'](_0x1b02af[_0xce0d('0x31')],qs[_0xce0d('0x37')](_0xbfeab1[_0xce0d('0x38')]['fields']));_0x18cacf[_0xce0d('0x36')]=_0x18cacf[_0xce0d('0x36')]['length']?_0x18cacf[_0xce0d('0x36')]:_0x1b02af[_0xce0d('0x31')];_0x18cacf['order']=qs[_0xce0d('0x3b')](_0xbfeab1[_0xce0d('0x38')]['sort']);_0x18cacf['where']=qs[_0xce0d('0x34')](_[_0xce0d('0x3d')](_0xbfeab1[_0xce0d('0x38')],_0x1b02af[_0xce0d('0x34')]));if(_0xbfeab1[_0xce0d('0x38')]['filter']){_0x18cacf[_0xce0d('0x3c')]=_[_0xce0d('0x3e')](_0x18cacf[_0xce0d('0x3c')],{'$or':_[_0xce0d('0x32')](_0x18cacf[_0xce0d('0x36')],function(_0x50c43e){var _0x3e6a07={};_0x3e6a07[_0x50c43e]={'$like':'%'+_0xbfeab1[_0xce0d('0x38')]['filter']+'%'};return _0x3e6a07;})});}_0x18cacf=_[_0xce0d('0x3e')]({},_0x18cacf,_0xbfeab1['options']);return _0x52a0d0[_0xce0d('0x91')](_0x18cacf);}})[_0xce0d('0x25')](function(_0x14c059){if(_0x14c059){_0x26d5e3=_0x14c059[_0xce0d('0x39')];if(!_0xbfeab1[_0xce0d('0x38')][_0xce0d('0x5d')](_0xce0d('0x5e'))){_0x18cacf[_0xce0d('0x1f')]=qs[_0xce0d('0x1f')](_0xbfeab1[_0xce0d('0x38')][_0xce0d('0x1f')]);_0x18cacf['offset']=qs[_0xce0d('0x1d')](_0xbfeab1['query'][_0xce0d('0x1d')]);}return _0x52a0d0[_0xce0d('0x91')](_0x18cacf);}})[_0xce0d('0x25')](function(_0x45f627){if(_0x45f627){return _0x45f627?{'count':_0x26d5e3,'rows':_0x45f627}:null;}})[_0xce0d('0x25')](respondWithResult(_0x1a6bf9,null))[_0xce0d('0x47')](handleError(_0x1a6bf9,null));};exports[_0xce0d('0x92')]=function(_0x307264,_0x2d89ef,_0x288aa4){var _0x21258b,_0x260ffe;var _0xfa8c68=[];var _0x5b5d01=moment()[_0xce0d('0x68')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0xce0d('0x43')]['find']({'where':{'id':_0x307264[_0xce0d('0x49')]['id']}})[_0xce0d('0x25')](handleEntityNotFound(_0x2d89ef,null))[_0xce0d('0x25')](function(_0xdd3cf6){if(_0xdd3cf6){_0x260ffe=_0xdd3cf6;return _0xdd3cf6[_0xce0d('0x92')](_0x307264['body']['ids'],_[_0xce0d('0x58')](_0x307264[_0xce0d('0x4c')],[_0xce0d('0x6a'),'id'])||{});}return null;})[_0xce0d('0x6b')](function(_0x13b643){var _0x6aa1b2;var _0x2fa868;_0x21258b=_0x13b643||[];var _0x265650=[];if(_0x13b643){for(var _0x3b9e66=0x0;_0x3b9e66<_0x13b643[_0xce0d('0x39')];_0x3b9e66+=0x1){var _0x53db9f=_0x13b643[_0x3b9e66]['get']({'plain':!![]});_0x6aa1b2=squel[_0xce0d('0x6d')]()['into'](_0xce0d('0x93'))[_0xce0d('0x70')](['phone',_0xce0d('0x72'),_0xce0d('0x73'),_0xce0d('0x5f'),_0xce0d('0x56'),'updatedAt'],squel[_0xce0d('0x74')]()[_0xce0d('0x76')](_0xce0d('0x75'),_0xce0d('0x75'))['field']('id',_0xce0d('0x72'))['field'](_0x53db9f[_0xce0d('0x7c')][_0xce0d('0x78')](),_0xce0d('0x73'))['field'](_0x307264[_0xce0d('0x49')]['id'][_0xce0d('0x78')](),'CampaignId')[_0xce0d('0x76')](_0xce0d('0x77'),'createdAt')[_0xce0d('0x76')](_0xce0d('0x77'),'updatedAt')[_0xce0d('0x79')](_0xce0d('0x7a'))[_0xce0d('0x3c')](_0xce0d('0x94'))[_0xce0d('0x3c')]('ListId\x20=\x20?',_0x53db9f[_0xce0d('0x7c')][_0xce0d('0x78')]())['where'](_0xce0d('0x7d')))[_0xce0d('0x78')]();_0x265650[_0xce0d('0x8d')](db[_0xce0d('0x8e')]['query'](_0x6aa1b2));}return BPromise[_0xce0d('0x8f')](_0x265650);}})['then'](function(){return _0x21258b;})[_0xce0d('0x25')](respondWithResult(_0x2d89ef,null))[_0xce0d('0x47')](handleError(_0x2d89ef,null));};exports[_0xce0d('0x95')]=function(_0x32333a,_0x19e9ae,_0x264c36){return db[_0xce0d('0x43')]['find']({'where':{'id':_0x32333a[_0xce0d('0x49')]['id']}})['then'](handleEntityNotFound(_0x19e9ae,null))[_0xce0d('0x25')](function(_0x55eeec){if(_0x55eeec){return _0x55eeec['removeBlackLists'](_0x32333a[_0xce0d('0x38')][_0xce0d('0x6a')]);}})[_0xce0d('0x25')](function(_0x5c996c){if(_0x5c996c){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x32333a[_0xce0d('0x38')]['ids'],'CampaignId':_0x32333a['params']['id']}})[_0xce0d('0x25')](function(){return _0x5c996c;});}})['then'](respondWithStatusCode(_0x19e9ae,null))[_0xce0d('0x47')](handleError(_0x19e9ae,null));};
\ No newline at end of file
index 1123f98..c0de23c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x331dd8,_0x15e211){var _0x56408f=function(_0x576ffd){while(--_0x576ffd){_0x331dd8['push'](_0x331dd8['shift']());}};_0x56408f(++_0x15e211);}(_0x7a54,0x106));var _0x47a5=function(_0x6c793b,_0x36a422){_0x6c793b=_0x6c793b-0x0;var _0xea9b22=_0x7a54[_0x6c793b];return _0xea9b22;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x32062c,_0x43ee1f){var _0xa8ccf1=function(_0x501489){while(--_0x501489){_0x32062c['push'](_0x32062c['shift']());}};_0xa8ccf1(++_0x43ee1f);}(_0x7a54,0x106));var _0x47a5=function(_0x483c5a,_0x5e9d87){_0x483c5a=_0x483c5a-0x0;var _0x5c6bb2=_0x7a54[_0x483c5a];return _0x5c6bb2;};'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 4fc2bfc..427778c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x851d=['options','raw','where','attributes','limit','include','map','model','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','Campaign,\x20%s,\x20%s','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','GetCampaign','findAll'];(function(_0x1809c5,_0x46cabc){var _0x5254a4=function(_0xd1d319){while(--_0xd1d319){_0x1809c5['push'](_0x1809c5['shift']());}};_0x5254a4(++_0x46cabc);}(_0x851d,0x69));var _0xd851=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x851d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd851('0x0'));var util=require('util');var moment=require(_0xd851('0x1'));var BPromise=require(_0xd851('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd851('0x3'));var db=require(_0xd851('0x4'))['db'];var utils=require(_0xd851('0x5'));var logger=require(_0xd851('0x6'))(_0xd851('0x7'));var config=require(_0xd851('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd851('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b63e4,_0x3d2383,_0x2f9540){return new BPromise(function(_0x60bef0,_0x4554d8){return client['request'](_0x2b63e4,_0x2f9540)[_0xd851('0xa')](function(_0x51bf16){logger[_0xd851('0xb')](_0xd851('0xc'),_0x3d2383,'request\x20sent');logger[_0xd851('0xd')](_0xd851('0xe'),_0x3d2383,_0xd851('0xf'),JSON[_0xd851('0x10')](_0x51bf16));if(_0x51bf16['error']){if(_0x51bf16['error'][_0xd851('0x11')]===0x1f4){logger[_0xd851('0x12')](_0xd851('0xc'),_0x3d2383,_0x51bf16[_0xd851('0x12')]['message']);return _0x4554d8(_0x51bf16[_0xd851('0x12')][_0xd851('0x13')]);}logger['error'](_0xd851('0xc'),_0x3d2383,_0x51bf16[_0xd851('0x12')][_0xd851('0x13')]);return _0x60bef0(_0x51bf16['error'][_0xd851('0x13')]);}else{logger[_0xd851('0xb')](_0xd851('0xc'),_0x3d2383,_0xd851('0xf'));_0x60bef0(_0x51bf16[_0xd851('0x14')][_0xd851('0x13')]);}})['catch'](function(_0x448e31){logger[_0xd851('0x12')](_0xd851('0xc'),_0x3d2383,_0x448e31);_0x4554d8(_0x448e31);});});}exports[_0xd851('0x15')]=function(_0x12b309){var _0x2be9c9=this;return new Promise(function(_0x3559a1,_0x5e7bb0){return db['Campaign'][_0xd851('0x16')]({'raw':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x18')]===undefined?!![]:![]:!![],'where':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x19')]||null:null,'attributes':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x1a')]||null:null,'limit':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x1b')]||null:null,'include':_0x12b309['options']?_0x12b309[_0xd851('0x17')][_0xd851('0x1c')]?_['map'](_0x12b309[_0xd851('0x17')][_0xd851('0x1c')],function(_0x2f888e){return{'model':db[_0x2f888e['model']],'as':_0x2f888e['as'],'attributes':_0x2f888e['attributes'],'include':_0x2f888e['include']?_[_0xd851('0x1d')](_0x2f888e[_0xd851('0x1c')],function(_0x2f2009){return{'model':db[_0x2f2009[_0xd851('0x1e')]],'as':_0x2f2009['as'],'attributes':_0x2f2009[_0xd851('0x1a')],'include':_0x2f2009['include']?_[_0xd851('0x1d')](_0x2f2009['include'],function(_0x412bbc){return{'model':db[_0x412bbc[_0xd851('0x1e')]],'as':_0x412bbc['as'],'attributes':_0x412bbc[_0xd851('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd851('0xa')](function(_0x337da5){logger[_0xd851('0xb')]('GetCampaign',_0x12b309);logger[_0xd851('0xd')](_0xd851('0x15'),_0x12b309,JSON[_0xd851('0x10')](_0x337da5));_0x3559a1(_0x337da5);})[_0xd851('0x1f')](function(_0x6c52fb){logger[_0xd851('0x12')](_0xd851('0x15'),_0x6c52fb[_0xd851('0x13')],_0x12b309);_0x5e7bb0(_0x2be9c9[_0xd851('0x12')](0x1f4,_0x6c52fb[_0xd851('0x13')]));});});};
\ No newline at end of file
+var _0x5178=['randomstring','ioredis','../../config/logger','rpc','jayson/promise','http','request','info','Campaign,\x20%s,\x20%s','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetCampaign','Campaign','findAll','options','where','attributes','include','map','model','then','util','moment','bluebird'];(function(_0x2ba006,_0x32c82d){var _0x4af089=function(_0x51de61){while(--_0x51de61){_0x2ba006['push'](_0x2ba006['shift']());}};_0x4af089(++_0x32c82d);}(_0x5178,0x171));var _0x8517=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5178[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require(_0x8517('0x0'));var moment=require(_0x8517('0x1'));var BPromise=require(_0x8517('0x2'));var rs=require(_0x8517('0x3'));var fs=require('fs');var Redis=require(_0x8517('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8517('0x5'))(_0x8517('0x6'));var config=require('../../config/environment');var jayson=require(_0x8517('0x7'));var client=jayson['client'][_0x8517('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x45498e,_0x3615b2,_0x10f918){return new BPromise(function(_0x25146d,_0x49739b){return client[_0x8517('0x9')](_0x45498e,_0x10f918)['then'](function(_0x485677){logger[_0x8517('0xa')](_0x8517('0xb'),_0x3615b2,'request\x20sent');logger[_0x8517('0xc')](_0x8517('0xd'),_0x3615b2,_0x8517('0xe'),JSON[_0x8517('0xf')](_0x485677));if(_0x485677[_0x8517('0x10')]){if(_0x485677[_0x8517('0x10')][_0x8517('0x11')]===0x1f4){logger[_0x8517('0x10')]('Campaign,\x20%s,\x20%s',_0x3615b2,_0x485677[_0x8517('0x10')][_0x8517('0x12')]);return _0x49739b(_0x485677[_0x8517('0x10')][_0x8517('0x12')]);}logger[_0x8517('0x10')]('Campaign,\x20%s,\x20%s',_0x3615b2,_0x485677[_0x8517('0x10')][_0x8517('0x12')]);return _0x25146d(_0x485677[_0x8517('0x10')][_0x8517('0x12')]);}else{logger[_0x8517('0xa')](_0x8517('0xb'),_0x3615b2,_0x8517('0xe'));_0x25146d(_0x485677[_0x8517('0x13')][_0x8517('0x12')]);}})[_0x8517('0x14')](function(_0x22b687){logger[_0x8517('0x10')]('Campaign,\x20%s,\x20%s',_0x3615b2,_0x22b687);_0x49739b(_0x22b687);});});}exports[_0x8517('0x15')]=function(_0x100b76){var _0x38e0f3=this;return new Promise(function(_0xf1b53b,_0x64875e){return db[_0x8517('0x16')][_0x8517('0x17')]({'raw':_0x100b76['options']?_0x100b76[_0x8517('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x100b76['options']?_0x100b76[_0x8517('0x18')][_0x8517('0x19')]||null:null,'attributes':_0x100b76[_0x8517('0x18')]?_0x100b76[_0x8517('0x18')][_0x8517('0x1a')]||null:null,'limit':_0x100b76[_0x8517('0x18')]?_0x100b76['options']['limit']||null:null,'include':_0x100b76[_0x8517('0x18')]?_0x100b76[_0x8517('0x18')][_0x8517('0x1b')]?_[_0x8517('0x1c')](_0x100b76[_0x8517('0x18')][_0x8517('0x1b')],function(_0x5f02ee){return{'model':db[_0x5f02ee[_0x8517('0x1d')]],'as':_0x5f02ee['as'],'attributes':_0x5f02ee[_0x8517('0x1a')],'include':_0x5f02ee['include']?_[_0x8517('0x1c')](_0x5f02ee[_0x8517('0x1b')],function(_0x42c779){return{'model':db[_0x42c779['model']],'as':_0x42c779['as'],'attributes':_0x42c779[_0x8517('0x1a')],'include':_0x42c779['include']?_[_0x8517('0x1c')](_0x42c779[_0x8517('0x1b')],function(_0x448211){return{'model':db[_0x448211[_0x8517('0x1d')]],'as':_0x448211['as'],'attributes':_0x448211[_0x8517('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8517('0x1e')](function(_0x481ceb){logger[_0x8517('0xa')]('GetCampaign',_0x100b76);logger[_0x8517('0xc')](_0x8517('0x15'),_0x100b76,JSON[_0x8517('0xf')](_0x481ceb));_0xf1b53b(_0x481ceb);})[_0x8517('0x14')](function(_0x3e6f89){logger[_0x8517('0x10')]('GetCampaign',_0x3e6f89[_0x8517('0x12')],_0x100b76);_0x64875e(_0x38e0f3['error'](0x1f4,_0x3e6f89[_0x8517('0x12')]));});});};
\ No newline at end of file
index 7cf857c..d24f407 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2900=['./campaign.controller','get','isAuthenticated','index','/:id','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','addBlackLists','put','update','destroy','delete','removeLists','removeBlackLists','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x2900,0x108));var _0x0290=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x2900[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x0290('0x0'));var util=require(_0x0290('0x1'));var path=require(_0x0290('0x2'));var timeout=require('connect-timeout');var express=require(_0x0290('0x3'));var router=express[_0x0290('0x4')]();var fs_extra=require(_0x0290('0x5'));var auth=require(_0x0290('0x6'));var interaction=require(_0x0290('0x7'));var config=require('../../config/environment');var controller=require(_0x0290('0x8'));router[_0x0290('0x9')]('/',auth[_0x0290('0xa')](),controller[_0x0290('0xb')]);router[_0x0290('0x9')](_0x0290('0xc'),auth[_0x0290('0xa')](),controller['show']);router[_0x0290('0x9')](_0x0290('0xd'),auth[_0x0290('0xa')](),controller['getHoppers']);router[_0x0290('0x9')](_0x0290('0xe'),auth['isAuthenticated'](),controller[_0x0290('0xf')]);router[_0x0290('0x9')](_0x0290('0x10'),auth['isAuthenticated'](),controller[_0x0290('0x11')]);router[_0x0290('0x9')]('/:id/hopper_black',auth['isAuthenticated'](),controller['getHopperBlacks']);router[_0x0290('0x9')](_0x0290('0x12'),auth[_0x0290('0xa')](),controller['getLists']);router[_0x0290('0x9')](_0x0290('0x13'),auth[_0x0290('0xa')](),controller[_0x0290('0x14')]);router[_0x0290('0x15')]('/',auth[_0x0290('0xa')](),controller[_0x0290('0x16')]);router[_0x0290('0x15')](_0x0290('0x17'),auth[_0x0290('0xa')](),controller[_0x0290('0x18')]);router[_0x0290('0x15')](_0x0290('0x12'),auth[_0x0290('0xa')](),controller[_0x0290('0x19')]);router[_0x0290('0x15')](_0x0290('0x13'),auth['isAuthenticated'](),controller[_0x0290('0x1a')]);router[_0x0290('0x1b')](_0x0290('0xc'),auth['isAuthenticated'](),controller[_0x0290('0x1c')]);router['delete'](_0x0290('0xc'),auth[_0x0290('0xa')](),controller[_0x0290('0x1d')]);router[_0x0290('0x1e')]('/:id/lists',auth[_0x0290('0xa')](),controller[_0x0290('0x1f')]);router[_0x0290('0x1e')](_0x0290('0x13'),auth['isAuthenticated'](),controller[_0x0290('0x20')]);module[_0x0290('0x21')]=router;
\ No newline at end of file
+var _0xb00d=['getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','post','create','clone','addLists','addBlackLists','put','update','/:id','destroy','delete','removeLists','removeBlackLists','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','index','show','isAuthenticated','/:id/hopper_histories','/:id/hopper_finals'];(function(_0x5d07bb,_0x271464){var _0x42960a=function(_0x2f0724){while(--_0x2f0724){_0x5d07bb['push'](_0x5d07bb['shift']());}};_0x42960a(++_0x271464);}(_0xb00d,0x97));var _0xdb00=function(_0x2b4448,_0x5bcc69){_0x2b4448=_0x2b4448-0x0;var _0xb4b465=_0xb00d[_0x2b4448];return _0xb4b465;};'use strict';var multer=require(_0xdb00('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdb00('0x1'));var router=express[_0xdb00('0x2')]();var fs_extra=require(_0xdb00('0x3'));var auth=require(_0xdb00('0x4'));var interaction=require(_0xdb00('0x5'));var config=require(_0xdb00('0x6'));var controller=require(_0xdb00('0x7'));router[_0xdb00('0x8')]('/',auth['isAuthenticated'](),controller[_0xdb00('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xdb00('0xa')]);router[_0xdb00('0x8')]('/:id/hoppers',auth[_0xdb00('0xb')](),controller['getHoppers']);router[_0xdb00('0x8')](_0xdb00('0xc'),auth['isAuthenticated'](),controller['getHopperHistories']);router['get'](_0xdb00('0xd'),auth[_0xdb00('0xb')](),controller[_0xdb00('0xe')]);router['get'](_0xdb00('0xf'),auth[_0xdb00('0xb')](),controller[_0xdb00('0x10')]);router[_0xdb00('0x8')](_0xdb00('0x11'),auth[_0xdb00('0xb')](),controller[_0xdb00('0x12')]);router['get'](_0xdb00('0x13'),auth[_0xdb00('0xb')](),controller['getBlackLists']);router[_0xdb00('0x14')]('/',auth[_0xdb00('0xb')](),controller[_0xdb00('0x15')]);router['post']('/:id/clone',auth[_0xdb00('0xb')](),controller[_0xdb00('0x16')]);router[_0xdb00('0x14')](_0xdb00('0x11'),auth[_0xdb00('0xb')](),controller[_0xdb00('0x17')]);router['post'](_0xdb00('0x13'),auth[_0xdb00('0xb')](),controller[_0xdb00('0x18')]);router[_0xdb00('0x19')]('/:id',auth[_0xdb00('0xb')](),controller[_0xdb00('0x1a')]);router['delete'](_0xdb00('0x1b'),auth['isAuthenticated'](),controller[_0xdb00('0x1c')]);router[_0xdb00('0x1d')](_0xdb00('0x11'),auth[_0xdb00('0xb')](),controller[_0xdb00('0x1e')]);router[_0xdb00('0x1d')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0xdb00('0x1f')]);module[_0xdb00('0x20')]=router;
\ No newline at end of file
index 772a7c4..f310f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bb8=['getDataValue','key','sequelize','exports','STRING'];(function(_0x3811ae,_0x2e3f4a){var _0x5873a1=function(_0x791f90){while(--_0x791f90){_0x3811ae['push'](_0x3811ae['shift']());}};_0x5873a1(++_0x2e3f4a);}(_0x4bb8,0x151));var _0x84bb=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4bb8[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0x84bb('0x0'));module[_0x84bb('0x1')]={'key':{'type':Sequelize[_0x84bb('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x84bb('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x84bb('0x3')](_0x84bb('0x4'));}}};
\ No newline at end of file
+var _0xc58d=['getDataValue','sequelize','exports','STRING','TEXT','VIRTUAL'];(function(_0x2a3a18,_0x438fbf){var _0x5620f5=function(_0x3df409){while(--_0x3df409){_0x2a3a18['push'](_0x2a3a18['shift']());}};_0x5620f5(++_0x438fbf);}(_0xc58d,0x73));var _0xdc58=function(_0x4f12ee,_0xbe8277){_0x4f12ee=_0x4f12ee-0x0;var _0x4b0fe2=_0xc58d[_0x4f12ee];return _0x4b0fe2;};'use strict';var Sequelize=require(_0xdc58('0x0'));module[_0xdc58('0x1')]={'key':{'type':Sequelize[_0xdc58('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0xdc58('0x3')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xdc58('0x4')],'get':function(){return this[_0xdc58('0x5')]('key');}}};
\ No newline at end of file
index 5bd09d0..76189fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab6a=['count','set','Content-Range','apply','reject','save','update','then','destroy','CannedAnswers','UserProfileResource','sendStatus','error','stack','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','merge','filter','options','includeAll','rows','catch','show','keys','find','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit'];(function(_0x548627,_0x4ec392){var _0x844a84=function(_0x2ffdd2){while(--_0x2ffdd2){_0x548627['push'](_0x548627['shift']());}};_0x844a84(++_0x4ec392);}(_0xab6a,0x1e8));var _0xaab6=function(_0x34801d,_0x1f5090){_0x34801d=_0x34801d-0x0;var _0xee1580=_0xab6a[_0x34801d];return _0xee1580;};'use strict';var emlformat=require(_0xaab6('0x0'));var rimraf=require(_0xaab6('0x1'));var zipdir=require(_0xaab6('0x2'));var jsonpatch=require(_0xaab6('0x3'));var rp=require('request-promise');var moment=require(_0xaab6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xaab6('0x5'));var util=require('util');var path=require(_0xaab6('0x6'));var sox=require('sox');var csv=require(_0xaab6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xaab6('0x8'));var crypto=require(_0xaab6('0x9'));var jsforce=require(_0xaab6('0xa'));var deskjs=require(_0xaab6('0xb'));var toCsv=require(_0xaab6('0x7'));var querystring=require(_0xaab6('0xc'));var Papa=require('papaparse');var Redis=require(_0xaab6('0xd'));var authService=require(_0xaab6('0xe'));var qs=require(_0xaab6('0xf'));var as=require(_0xaab6('0x10'));var hardwareService=require(_0xaab6('0x11'));var logger=require(_0xaab6('0x12'))(_0xaab6('0x13'));var utils=require(_0xaab6('0x14'));var config=require(_0xaab6('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5339e1,_0x2baa5a){_0x2baa5a=_0x2baa5a||0xcc;return function(_0x356c0f){if(_0x356c0f){return _0x5339e1['sendStatus'](_0x2baa5a);}return _0x5339e1[_0xaab6('0x16')](_0x2baa5a)[_0xaab6('0x17')]();};}function respondWithResult(_0x52bdb1,_0x3f9dc){_0x3f9dc=_0x3f9dc||0xc8;return function(_0x5e3dba){if(_0x5e3dba){return _0x52bdb1[_0xaab6('0x16')](_0x3f9dc)[_0xaab6('0x18')](_0x5e3dba);}};}function respondWithFilteredResult(_0x461d02,_0x211876){return function(_0xbeeaaa){if(_0xbeeaaa){var _0x31152f=typeof _0x211876[_0xaab6('0x19')]===_0xaab6('0x1a')&&typeof _0x211876[_0xaab6('0x1b')]==='undefined';var _0x3c6f64=_0xbeeaaa[_0xaab6('0x1c')];var _0xc3f68c=_0x31152f?0x0:_0x211876[_0xaab6('0x19')];var _0x264fd6=_0x31152f?_0xbeeaaa['count']:_0x211876[_0xaab6('0x19')]+_0x211876[_0xaab6('0x1b')];var _0x447240;if(_0x264fd6>=_0x3c6f64){_0x264fd6=_0x3c6f64;_0x447240=0xc8;}else{_0x447240=0xce;}_0x461d02[_0xaab6('0x16')](_0x447240);return _0x461d02[_0xaab6('0x1d')](_0xaab6('0x1e'),_0xc3f68c+'-'+_0x264fd6+'/'+_0x3c6f64)[_0xaab6('0x18')](_0xbeeaaa);}return null;};}function patchUpdates(_0x5618b1){return function(_0x446284){try{jsonpatch[_0xaab6('0x1f')](_0x446284,_0x5618b1,!![]);}catch(_0x3008e5){return BPromise[_0xaab6('0x20')](_0x3008e5);}return _0x446284[_0xaab6('0x21')]();};}function saveUpdates(_0x115532,_0x1340bd){return function(_0x36aa98){if(_0x36aa98){return _0x36aa98[_0xaab6('0x22')](_0x115532)[_0xaab6('0x23')](function(_0x400db5){return _0x400db5;});}return null;};}function removeEntity(_0x58e2a2,_0x50a9c3){return function(_0x46fbd7){if(_0x46fbd7){return _0x46fbd7[_0xaab6('0x24')]()[_0xaab6('0x23')](function(){var _0x21abed=_0x46fbd7['get']({'plain':!![]});var _0x41d662=_0xaab6('0x25');return db[_0xaab6('0x26')][_0xaab6('0x24')]({'where':{'type':_0x41d662,'resourceId':_0x21abed['id']}})[_0xaab6('0x23')](function(){return _0x46fbd7;});})[_0xaab6('0x23')](function(){_0x58e2a2[_0xaab6('0x16')](0xcc)[_0xaab6('0x17')]();});}};}function handleEntityNotFound(_0x5ecf29,_0xfcc18){return function(_0x4761fb){if(!_0x4761fb){_0x5ecf29[_0xaab6('0x27')](0x194);}return _0x4761fb;};}function handleError(_0x1dac57,_0x30c976){_0x30c976=_0x30c976||0x1f4;return function(_0x179af4){logger[_0xaab6('0x28')](_0x179af4[_0xaab6('0x29')]);if(_0x179af4[_0xaab6('0x2a')]){delete _0x179af4['name'];}_0x1dac57[_0xaab6('0x16')](_0x30c976)[_0xaab6('0x2b')](_0x179af4);};}exports[_0xaab6('0x2c')]=function(_0x5ebdd4,_0x58c1f8){var _0x5351f8={},_0x519fa9={},_0x57f527={'count':0x0,'rows':[]};var _0x93b29e=_[_0xaab6('0x2d')](db[_0xaab6('0x2e')][_0xaab6('0x2f')],function(_0x146d8d){return{'name':_0x146d8d[_0xaab6('0x30')],'type':_0x146d8d[_0xaab6('0x31')][_0xaab6('0x32')]};});_0x519fa9[_0xaab6('0x33')]=_[_0xaab6('0x2d')](_0x93b29e,_0xaab6('0x2a'));_0x519fa9['query']=_['keys'](_0x5ebdd4[_0xaab6('0x34')]);_0x519fa9[_0xaab6('0x35')]=_[_0xaab6('0x36')](_0x519fa9[_0xaab6('0x33')],_0x519fa9[_0xaab6('0x34')]);_0x5351f8[_0xaab6('0x37')]=_[_0xaab6('0x36')](_0x519fa9['model'],qs[_0xaab6('0x38')](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x38')]));_0x5351f8[_0xaab6('0x37')]=_0x5351f8['attributes']['length']?_0x5351f8['attributes']:_0x519fa9[_0xaab6('0x33')];if(!_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x39')]('nolimit')){_0x5351f8[_0xaab6('0x1b')]=qs['limit'](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x1b')]);_0x5351f8['offset']=qs[_0xaab6('0x19')](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x19')]);}_0x5351f8['order']=qs[_0xaab6('0x3a')](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x3a')]);_0x5351f8[_0xaab6('0x3b')]=qs['filters'](_[_0xaab6('0x3c')](_0x5ebdd4[_0xaab6('0x34')],_0x519fa9[_0xaab6('0x35')]),_0x93b29e);if(_0x5ebdd4[_0xaab6('0x34')]['filter']){_0x5351f8[_0xaab6('0x3b')]=_[_0xaab6('0x3d')](_0x5351f8[_0xaab6('0x3b')],{'$or':[{'key':{'$like':'%'+_0x5ebdd4['query']['filter']+'%'}},{'value':{'$like':'%'+_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x3e')]+'%'}}]});}_0x5351f8=_[_0xaab6('0x3d')]({},_0x5351f8,_0x5ebdd4[_0xaab6('0x3f')]);var _0x141bb={'where':_0x5351f8[_0xaab6('0x3b')]};return db[_0xaab6('0x2e')][_0xaab6('0x1c')](_0x141bb)[_0xaab6('0x23')](function(_0x2b5f7c){_0x57f527['count']=_0x2b5f7c;if(_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x40')]){_0x5351f8['include']=[{'all':!![]}];}return db[_0xaab6('0x2e')]['findAll'](_0x5351f8);})[_0xaab6('0x23')](function(_0x3fbccb){_0x57f527[_0xaab6('0x41')]=_0x3fbccb;return _0x57f527;})[_0xaab6('0x23')](respondWithFilteredResult(_0x58c1f8,_0x5351f8))[_0xaab6('0x42')](handleError(_0x58c1f8,null));};exports[_0xaab6('0x43')]=function(_0x30d95f,_0x6a092a){var _0x200183={'raw':!![],'where':{'id':_0x30d95f['params']['id']}},_0x1fdb12={};_0x1fdb12['model']=_[_0xaab6('0x44')](db[_0xaab6('0x2e')]['rawAttributes']);_0x1fdb12[_0xaab6('0x34')]=_[_0xaab6('0x44')](_0x30d95f[_0xaab6('0x34')]);_0x1fdb12[_0xaab6('0x35')]=_[_0xaab6('0x36')](_0x1fdb12[_0xaab6('0x33')],_0x1fdb12[_0xaab6('0x34')]);_0x200183[_0xaab6('0x37')]=_[_0xaab6('0x36')](_0x1fdb12[_0xaab6('0x33')],qs[_0xaab6('0x38')](_0x30d95f[_0xaab6('0x34')][_0xaab6('0x38')]));_0x200183[_0xaab6('0x37')]=_0x200183[_0xaab6('0x37')]['length']?_0x200183[_0xaab6('0x37')]:_0x1fdb12[_0xaab6('0x33')];if(_0x30d95f[_0xaab6('0x34')]['includeAll']){_0x200183['include']=[{'all':!![]}];}_0x200183=_['merge']({},_0x200183,_0x30d95f[_0xaab6('0x3f')]);return db[_0xaab6('0x2e')][_0xaab6('0x45')](_0x200183)[_0xaab6('0x23')](handleEntityNotFound(_0x6a092a,null))['then'](respondWithResult(_0x6a092a,null))[_0xaab6('0x42')](handleError(_0x6a092a,null));};exports[_0xaab6('0x22')]=function(_0x3d616c,_0x5ec96f){if(_0x3d616c[_0xaab6('0x46')]['id']){delete _0x3d616c[_0xaab6('0x46')]['id'];}return db[_0xaab6('0x2e')][_0xaab6('0x45')]({'where':{'id':_0x3d616c[_0xaab6('0x47')]['id']}})[_0xaab6('0x23')](handleEntityNotFound(_0x5ec96f,null))[_0xaab6('0x23')](saveUpdates(_0x3d616c[_0xaab6('0x46')],null))[_0xaab6('0x23')](respondWithResult(_0x5ec96f,null))[_0xaab6('0x42')](handleError(_0x5ec96f,null));};exports[_0xaab6('0x24')]=function(_0x3fb749,_0x829bf3){return db[_0xaab6('0x2e')][_0xaab6('0x45')]({'where':{'id':_0x3fb749[_0xaab6('0x47')]['id']}})[_0xaab6('0x23')](handleEntityNotFound(_0x829bf3,null))['then'](removeEntity(_0x829bf3,null))[_0xaab6('0x42')](handleError(_0x829bf3,null));};exports[_0xaab6('0x48')]=function(_0x30186b,_0xd2da5e){var _0x64d118={'key':_0x30186b[_0xaab6('0x46')][_0xaab6('0x32')]};if(_0x30186b[_0xaab6('0x46')]['MailAccountId']){_0x64d118[_0xaab6('0x49')]=_0x30186b['body'][_0xaab6('0x49')];}else if(_0x30186b['body'][_0xaab6('0x4a')]){_0x64d118[_0xaab6('0x4a')]=_0x30186b['body']['SmsAccountId'];}else if(_0x30186b['body'][_0xaab6('0x4b')]){_0x64d118['OpenchannelAccountId']=_0x30186b[_0xaab6('0x46')][_0xaab6('0x4b')];}else if(_0x30186b['body']['ChatWebsiteId']){_0x64d118['ChatWebsiteId']=_0x30186b[_0xaab6('0x46')][_0xaab6('0x4c')];}return db[_0xaab6('0x2e')][_0xaab6('0x45')]({'where':_0x64d118})[_0xaab6('0x23')](function(_0x1f45cd){if(_0x1f45cd){throw new db[(_0xaab6('0x4d'))]['ValidationError'](_0xaab6('0x4e'));}return db['CannedAnswer'][_0xaab6('0x48')](_0x30186b['body']);})['then'](function(_0x42d605){var _0x552ba2=_0x30186b[_0xaab6('0x4f')][_0xaab6('0x50')]({'plain':!![]});if(!_0x552ba2)throw new Error(_0xaab6('0x51'));if(_0x552ba2[_0xaab6('0x52')]===_0xaab6('0x4f')){var _0x1a9ff5=_0x42d605[_0xaab6('0x50')]({'plain':!![]});return db['UserProfileSection'][_0xaab6('0x45')]({'where':{'name':'CannedAnswers','userProfileId':_0x552ba2[_0xaab6('0x53')]},'raw':!![]})[_0xaab6('0x23')](function(_0x4e5349){if(_0x4e5349&&_0x4e5349[_0xaab6('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x1a9ff5[_0xaab6('0x2a')],'resourceId':_0x1a9ff5['id'],'type':_0x4e5349[_0xaab6('0x2a')],'sectionId':_0x4e5349['id']},{})[_0xaab6('0x23')](function(){return _0x42d605;});}else{return _0x42d605;}})['catch'](function(_0x5ca4e2){logger[_0xaab6('0x28')](_0xaab6('0x55'),_0x5ca4e2);throw _0x5ca4e2;});}return _0x42d605;})[_0xaab6('0x23')](respondWithResult(_0xd2da5e,0xc9))[_0xaab6('0x42')](handleError(_0xd2da5e,null));};
\ No newline at end of file
+var _0xbc20=['jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','CannedAnswers','UserProfileResource','error','name','index','map','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','CannedAnswer','includeAll','rows','catch','show','params','length','include','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','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','to-csv','ejs','fs-extra','lodash','crypto'];(function(_0x26bc4b,_0x3cee9d){var _0x1e30ed=function(_0x122c24){while(--_0x122c24){_0x26bc4b['push'](_0x26bc4b['shift']());}};_0x1e30ed(++_0x3cee9d);}(_0xbc20,0xa0));var _0x0bc2=function(_0xae1a83,_0x1980d4){_0xae1a83=_0xae1a83-0x0;var _0xdb9da8=_0xbc20[_0xae1a83];return _0xdb9da8;};'use strict';var emlformat=require(_0x0bc2('0x0'));var rimraf=require(_0x0bc2('0x1'));var zipdir=require(_0x0bc2('0x2'));var jsonpatch=require(_0x0bc2('0x3'));var rp=require(_0x0bc2('0x4'));var moment=require(_0x0bc2('0x5'));var BPromise=require(_0x0bc2('0x6'));var Mustache=require('mustache');var util=require(_0x0bc2('0x7'));var path=require(_0x0bc2('0x8'));var sox=require('sox');var csv=require(_0x0bc2('0x9'));var ejs=require(_0x0bc2('0xa'));var fs=require('fs');var fs_extra=require(_0x0bc2('0xb'));var _=require(_0x0bc2('0xc'));var squel=require('squel');var crypto=require(_0x0bc2('0xd'));var jsforce=require(_0x0bc2('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0bc2('0x9'));var querystring=require(_0x0bc2('0xf'));var Papa=require(_0x0bc2('0x10'));var Redis=require(_0x0bc2('0x11'));var authService=require(_0x0bc2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0bc2('0x13'));var hardwareService=require(_0x0bc2('0x14'));var logger=require(_0x0bc2('0x15'))(_0x0bc2('0x16'));var utils=require(_0x0bc2('0x17'));var config=require(_0x0bc2('0x18'));var licenseUtil=require(_0x0bc2('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16655d,_0x20b05a){_0x20b05a=_0x20b05a||0xcc;return function(_0x4fd2f0){if(_0x4fd2f0){return _0x16655d[_0x0bc2('0x1a')](_0x20b05a);}return _0x16655d['status'](_0x20b05a)[_0x0bc2('0x1b')]();};}function respondWithResult(_0x507a44,_0xb64cc3){_0xb64cc3=_0xb64cc3||0xc8;return function(_0x5dab1a){if(_0x5dab1a){return _0x507a44[_0x0bc2('0x1c')](_0xb64cc3)[_0x0bc2('0x1d')](_0x5dab1a);}};}function respondWithFilteredResult(_0x181691,_0x4a8045){return function(_0x1161f1){if(_0x1161f1){var _0x321b7f=typeof _0x4a8045[_0x0bc2('0x1e')]===_0x0bc2('0x1f')&&typeof _0x4a8045['limit']===_0x0bc2('0x1f');var _0x32bc99=_0x1161f1[_0x0bc2('0x20')];var _0x23a9ab=_0x321b7f?0x0:_0x4a8045[_0x0bc2('0x1e')];var _0x5e1e15=_0x321b7f?_0x1161f1[_0x0bc2('0x20')]:_0x4a8045[_0x0bc2('0x1e')]+_0x4a8045[_0x0bc2('0x21')];var _0x3824b0;if(_0x5e1e15>=_0x32bc99){_0x5e1e15=_0x32bc99;_0x3824b0=0xc8;}else{_0x3824b0=0xce;}_0x181691[_0x0bc2('0x1c')](_0x3824b0);return _0x181691[_0x0bc2('0x22')](_0x0bc2('0x23'),_0x23a9ab+'-'+_0x5e1e15+'/'+_0x32bc99)['json'](_0x1161f1);}return null;};}function patchUpdates(_0x2fae58){return function(_0x56e351){try{jsonpatch[_0x0bc2('0x24')](_0x56e351,_0x2fae58,!![]);}catch(_0x579046){return BPromise[_0x0bc2('0x25')](_0x579046);}return _0x56e351['save']();};}function saveUpdates(_0x2c33c5,_0x37bfc8){return function(_0x1a9af1){if(_0x1a9af1){return _0x1a9af1[_0x0bc2('0x26')](_0x2c33c5)[_0x0bc2('0x27')](function(_0x1d2372){return _0x1d2372;});}return null;};}function removeEntity(_0x44539d,_0x3e9d65){return function(_0x56aca0){if(_0x56aca0){return _0x56aca0[_0x0bc2('0x28')]()[_0x0bc2('0x27')](function(){var _0x186394=_0x56aca0[_0x0bc2('0x29')]({'plain':!![]});var _0x505693=_0x0bc2('0x2a');return db[_0x0bc2('0x2b')][_0x0bc2('0x28')]({'where':{'type':_0x505693,'resourceId':_0x186394['id']}})[_0x0bc2('0x27')](function(){return _0x56aca0;});})['then'](function(){_0x44539d[_0x0bc2('0x1c')](0xcc)[_0x0bc2('0x1b')]();});}};}function handleEntityNotFound(_0x2080f4,_0x4722ad){return function(_0x153ad6){if(!_0x153ad6){_0x2080f4[_0x0bc2('0x1a')](0x194);}return _0x153ad6;};}function handleError(_0x29ca32,_0x64f4e5){_0x64f4e5=_0x64f4e5||0x1f4;return function(_0x528a02){logger[_0x0bc2('0x2c')](_0x528a02['stack']);if(_0x528a02['name']){delete _0x528a02[_0x0bc2('0x2d')];}_0x29ca32[_0x0bc2('0x1c')](_0x64f4e5)['send'](_0x528a02);};}exports[_0x0bc2('0x2e')]=function(_0x34f97f,_0x130666){var _0x34a90d={},_0x2be473={},_0x2775d2={'count':0x0,'rows':[]};var _0x15814a=_[_0x0bc2('0x2f')](db['CannedAnswer'][_0x0bc2('0x30')],function(_0x1f4b64){return{'name':_0x1f4b64[_0x0bc2('0x31')],'type':_0x1f4b64['type'][_0x0bc2('0x32')]};});_0x2be473[_0x0bc2('0x33')]=_[_0x0bc2('0x2f')](_0x15814a,_0x0bc2('0x2d'));_0x2be473['query']=_[_0x0bc2('0x34')](_0x34f97f[_0x0bc2('0x35')]);_0x2be473[_0x0bc2('0x36')]=_[_0x0bc2('0x37')](_0x2be473[_0x0bc2('0x33')],_0x2be473[_0x0bc2('0x35')]);_0x34a90d[_0x0bc2('0x38')]=_[_0x0bc2('0x37')](_0x2be473[_0x0bc2('0x33')],qs[_0x0bc2('0x39')](_0x34f97f[_0x0bc2('0x35')][_0x0bc2('0x39')]));_0x34a90d[_0x0bc2('0x38')]=_0x34a90d[_0x0bc2('0x38')]['length']?_0x34a90d[_0x0bc2('0x38')]:_0x2be473[_0x0bc2('0x33')];if(!_0x34f97f['query'][_0x0bc2('0x3a')](_0x0bc2('0x3b'))){_0x34a90d[_0x0bc2('0x21')]=qs['limit'](_0x34f97f[_0x0bc2('0x35')][_0x0bc2('0x21')]);_0x34a90d['offset']=qs[_0x0bc2('0x1e')](_0x34f97f[_0x0bc2('0x35')]['offset']);}_0x34a90d[_0x0bc2('0x3c')]=qs[_0x0bc2('0x3d')](_0x34f97f[_0x0bc2('0x35')][_0x0bc2('0x3d')]);_0x34a90d[_0x0bc2('0x3e')]=qs[_0x0bc2('0x36')](_[_0x0bc2('0x3f')](_0x34f97f[_0x0bc2('0x35')],_0x2be473[_0x0bc2('0x36')]),_0x15814a);if(_0x34f97f[_0x0bc2('0x35')]['filter']){_0x34a90d[_0x0bc2('0x3e')]=_[_0x0bc2('0x40')](_0x34a90d[_0x0bc2('0x3e')],{'$or':[{'key':{'$like':'%'+_0x34f97f[_0x0bc2('0x35')][_0x0bc2('0x41')]+'%'}},{'value':{'$like':'%'+_0x34f97f[_0x0bc2('0x35')]['filter']+'%'}}]});}_0x34a90d=_[_0x0bc2('0x40')]({},_0x34a90d,_0x34f97f['options']);var _0x28417c={'where':_0x34a90d[_0x0bc2('0x3e')]};return db[_0x0bc2('0x42')]['count'](_0x28417c)[_0x0bc2('0x27')](function(_0x4fb503){_0x2775d2[_0x0bc2('0x20')]=_0x4fb503;if(_0x34f97f[_0x0bc2('0x35')][_0x0bc2('0x43')]){_0x34a90d['include']=[{'all':!![]}];}return db[_0x0bc2('0x42')]['findAll'](_0x34a90d);})[_0x0bc2('0x27')](function(_0x38904c){_0x2775d2[_0x0bc2('0x44')]=_0x38904c;return _0x2775d2;})[_0x0bc2('0x27')](respondWithFilteredResult(_0x130666,_0x34a90d))[_0x0bc2('0x45')](handleError(_0x130666,null));};exports[_0x0bc2('0x46')]=function(_0x3e6e6a,_0x262c26){var _0x4cab99={'raw':!![],'where':{'id':_0x3e6e6a[_0x0bc2('0x47')]['id']}},_0x1ff630={};_0x1ff630['model']=_[_0x0bc2('0x34')](db[_0x0bc2('0x42')][_0x0bc2('0x30')]);_0x1ff630[_0x0bc2('0x35')]=_[_0x0bc2('0x34')](_0x3e6e6a[_0x0bc2('0x35')]);_0x1ff630['filters']=_['intersection'](_0x1ff630['model'],_0x1ff630[_0x0bc2('0x35')]);_0x4cab99[_0x0bc2('0x38')]=_[_0x0bc2('0x37')](_0x1ff630[_0x0bc2('0x33')],qs[_0x0bc2('0x39')](_0x3e6e6a[_0x0bc2('0x35')][_0x0bc2('0x39')]));_0x4cab99[_0x0bc2('0x38')]=_0x4cab99[_0x0bc2('0x38')][_0x0bc2('0x48')]?_0x4cab99[_0x0bc2('0x38')]:_0x1ff630['model'];if(_0x3e6e6a['query']['includeAll']){_0x4cab99[_0x0bc2('0x49')]=[{'all':!![]}];}_0x4cab99=_[_0x0bc2('0x40')]({},_0x4cab99,_0x3e6e6a['options']);return db[_0x0bc2('0x42')][_0x0bc2('0x4a')](_0x4cab99)['then'](handleEntityNotFound(_0x262c26,null))[_0x0bc2('0x27')](respondWithResult(_0x262c26,null))[_0x0bc2('0x45')](handleError(_0x262c26,null));};exports[_0x0bc2('0x26')]=function(_0x2014fd,_0x3d7c56){if(_0x2014fd['body']['id']){delete _0x2014fd[_0x0bc2('0x4b')]['id'];}return db[_0x0bc2('0x42')]['find']({'where':{'id':_0x2014fd['params']['id']}})[_0x0bc2('0x27')](handleEntityNotFound(_0x3d7c56,null))[_0x0bc2('0x27')](saveUpdates(_0x2014fd[_0x0bc2('0x4b')],null))[_0x0bc2('0x27')](respondWithResult(_0x3d7c56,null))['catch'](handleError(_0x3d7c56,null));};exports['destroy']=function(_0x640ff5,_0xf819d5){return db[_0x0bc2('0x42')][_0x0bc2('0x4a')]({'where':{'id':_0x640ff5['params']['id']}})[_0x0bc2('0x27')](handleEntityNotFound(_0xf819d5,null))[_0x0bc2('0x27')](removeEntity(_0xf819d5,null))['catch'](handleError(_0xf819d5,null));};exports[_0x0bc2('0x4c')]=function(_0x2da5d4,_0x430dda){var _0x3ea30e={'key':_0x2da5d4[_0x0bc2('0x4b')]['key']};if(_0x2da5d4[_0x0bc2('0x4b')][_0x0bc2('0x4d')]){_0x3ea30e[_0x0bc2('0x4d')]=_0x2da5d4['body'][_0x0bc2('0x4d')];}else if(_0x2da5d4[_0x0bc2('0x4b')][_0x0bc2('0x4e')]){_0x3ea30e[_0x0bc2('0x4e')]=_0x2da5d4[_0x0bc2('0x4b')][_0x0bc2('0x4e')];}else if(_0x2da5d4[_0x0bc2('0x4b')][_0x0bc2('0x4f')]){_0x3ea30e[_0x0bc2('0x4f')]=_0x2da5d4[_0x0bc2('0x4b')][_0x0bc2('0x4f')];}else if(_0x2da5d4[_0x0bc2('0x4b')][_0x0bc2('0x50')]){_0x3ea30e['ChatWebsiteId']=_0x2da5d4[_0x0bc2('0x4b')][_0x0bc2('0x50')];}return db[_0x0bc2('0x42')][_0x0bc2('0x4a')]({'where':_0x3ea30e})[_0x0bc2('0x27')](function(_0x1708a0){if(_0x1708a0){throw new db['Sequelize']['ValidationError'](_0x0bc2('0x51'));}return db[_0x0bc2('0x42')]['create'](_0x2da5d4['body']);})[_0x0bc2('0x27')](function(_0x30497b){var _0x2244c3=_0x2da5d4[_0x0bc2('0x52')][_0x0bc2('0x29')]({'plain':!![]});if(!_0x2244c3)throw new Error(_0x0bc2('0x53'));if(_0x2244c3['role']===_0x0bc2('0x52')){var _0x2694f9=_0x30497b[_0x0bc2('0x29')]({'plain':!![]});return db[_0x0bc2('0x54')][_0x0bc2('0x4a')]({'where':{'name':_0x0bc2('0x2a'),'userProfileId':_0x2244c3['userProfileId']},'raw':!![]})[_0x0bc2('0x27')](function(_0x132f4c){if(_0x132f4c&&_0x132f4c[_0x0bc2('0x55')]===0x0){return db[_0x0bc2('0x2b')][_0x0bc2('0x4c')]({'name':_0x2694f9['name'],'resourceId':_0x2694f9['id'],'type':_0x132f4c[_0x0bc2('0x2d')],'sectionId':_0x132f4c['id']},{})[_0x0bc2('0x27')](function(){return _0x30497b;});}else{return _0x30497b;}})[_0x0bc2('0x45')](function(_0x2699b7){logger[_0x0bc2('0x2c')](_0x0bc2('0x56'),_0x2699b7);throw _0x2699b7;});}return _0x30497b;})[_0x0bc2('0x27')](respondWithResult(_0x430dda,0xc9))[_0x0bc2('0x45')](handleError(_0x430dda,null));};
\ No newline at end of file
index 7606840..42d4973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5397=['utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CannedAnswer'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x5397,0x105));var _0x7539=function(_0x1a21d4,_0x42f41a){_0x1a21d4=_0x1a21d4-0x0;var _0x2434a9=_0x5397[_0x1a21d4];return _0x2434a9;};'use strict';var _=require('lodash');var util=require(_0x7539('0x0'));var logger=require(_0x7539('0x1'))(_0x7539('0x2'));var moment=require(_0x7539('0x3'));var BPromise=require(_0x7539('0x4'));var rp=require(_0x7539('0x5'));var fs=require('fs');var path=require(_0x7539('0x6'));var rimraf=require(_0x7539('0x7'));var config=require(_0x7539('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0x7539('0x9')]=function(_0x3486c2,_0x4486c0){return _0x3486c2[_0x7539('0xa')](_0x7539('0xb'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7539('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3079=['api','moment','bluebird','request-promise','path','../../config/environment','./cannedAnswer.attributes','exports','define','utf8mb4_unicode_ci','lodash','util'];(function(_0x53467c,_0x5b69eb){var _0x212648=function(_0x43613a){while(--_0x43613a){_0x53467c['push'](_0x53467c['shift']());}};_0x212648(++_0x5b69eb);}(_0x3079,0x112));var _0x9307=function(_0x4ce898,_0x16d932){_0x4ce898=_0x4ce898-0x0;var _0x2d9f21=_0x3079[_0x4ce898];return _0x2d9f21;};'use strict';var _=require(_0x9307('0x0'));var util=require(_0x9307('0x1'));var logger=require('../../config/logger')(_0x9307('0x2'));var moment=require(_0x9307('0x3'));var BPromise=require(_0x9307('0x4'));var rp=require(_0x9307('0x5'));var fs=require('fs');var path=require(_0x9307('0x6'));var rimraf=require('rimraf');var config=require(_0x9307('0x7'));var attributes=require(_0x9307('0x8'));module[_0x9307('0x9')]=function(_0x5b189b,_0x5deffa){return _0x5b189b[_0x9307('0xa')]('CannedAnswer',attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x9307('0xb')});};
\ No newline at end of file
index 7a8fdc3..3fbfcd2 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(_0x2d5552,_0x536898){var _0x42316f=function(_0xef47ce){while(--_0xef47ce){_0x2d5552['push'](_0x2d5552['shift']());}};_0x42316f(++_0x536898);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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(_0x3ee8ae,_0x4722e9){var _0x571c6d=function(_0x39150d){while(--_0x39150d){_0x3ee8ae['push'](_0x3ee8ae['shift']());}};_0x571c6d(++_0x4722e9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 57522b1..8248dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed55=['destroy','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','index','/:id','isAuthenticated','show','put','delete'];(function(_0x27973f,_0x32ae84){var _0x392c09=function(_0xfa819c){while(--_0xfa819c){_0x27973f['push'](_0x27973f['shift']());}};_0x392c09(++_0x32ae84);}(_0xed55,0x1e1));var _0x5ed5=function(_0x3005d5,_0xf588c7){_0x3005d5=_0x3005d5-0x0;var _0x547c7e=_0xed55[_0x3005d5];return _0x547c7e;};'use strict';var multer=require('multer');var util=require(_0x5ed5('0x0'));var path=require('path');var timeout=require(_0x5ed5('0x1'));var express=require(_0x5ed5('0x2'));var router=express[_0x5ed5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5ed5('0x4'));var interaction=require(_0x5ed5('0x5'));var config=require(_0x5ed5('0x6'));var controller=require(_0x5ed5('0x7'));router[_0x5ed5('0x8')]('/',auth['isAuthenticated'](),controller[_0x5ed5('0x9')]);router[_0x5ed5('0x8')](_0x5ed5('0xa'),auth[_0x5ed5('0xb')](),controller[_0x5ed5('0xc')]);router['post']('/',auth[_0x5ed5('0xb')](),controller['create']);router[_0x5ed5('0xd')](_0x5ed5('0xa'),auth[_0x5ed5('0xb')](),controller['update']);router[_0x5ed5('0xe')](_0x5ed5('0xa'),auth[_0x5ed5('0xb')](),controller[_0x5ed5('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x1c3b=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cannedAnswer.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x29cc7d,_0xa495a6){var _0x272628=function(_0x189f6a){while(--_0x189f6a){_0x29cc7d['push'](_0x29cc7d['shift']());}};_0x272628(++_0xa495a6);}(_0x1c3b,0xbb));var _0xb1c3=function(_0x426059,_0x3c9e20){_0x426059=_0x426059-0x0;var _0x13903a=_0x1c3b[_0x426059];return _0x13903a;};'use strict';var multer=require(_0xb1c3('0x0'));var util=require('util');var path=require(_0xb1c3('0x1'));var timeout=require(_0xb1c3('0x2'));var express=require(_0xb1c3('0x3'));var router=express[_0xb1c3('0x4')]();var fs_extra=require(_0xb1c3('0x5'));var auth=require(_0xb1c3('0x6'));var interaction=require(_0xb1c3('0x7'));var config=require('../../config/environment');var controller=require(_0xb1c3('0x8'));router[_0xb1c3('0x9')]('/',auth['isAuthenticated'](),controller[_0xb1c3('0xa')]);router['get'](_0xb1c3('0xb'),auth[_0xb1c3('0xc')](),controller[_0xb1c3('0xd')]);router[_0xb1c3('0xe')]('/',auth['isAuthenticated'](),controller[_0xb1c3('0xf')]);router[_0xb1c3('0x10')](_0xb1c3('0xb'),auth[_0xb1c3('0xc')](),controller[_0xb1c3('0x11')]);router[_0xb1c3('0x12')](_0xb1c3('0xb'),auth['isAuthenticated'](),controller[_0xb1c3('0x13')]);module[_0xb1c3('0x14')]=router;
\ No newline at end of file
index 5370c5d..e0b548c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88c9=['sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x5d0e5d,_0xaf8575){var _0x44940c=function(_0x42fe6d){while(--_0x42fe6d){_0x5d0e5d['push'](_0x5d0e5d['shift']());}};_0x44940c(++_0xaf8575);}(_0x88c9,0x1f2));var _0x988c=function(_0x57266d,_0x14aa26){_0x57266d=_0x57266d-0x0;var _0x5e356b=_0x88c9[_0x57266d];return _0x5e356b;};'use strict';var Sequelize=require(_0x988c('0x0'));module[_0x988c('0x1')]={'calldate':{'type':Sequelize[_0x988c('0x2')],'allowNull':![],'defaultValue':_0x988c('0x3')},'clid':{'type':Sequelize[_0x988c('0x4')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x988c('0x4')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x988c('0x4')]},'lastapp':{'type':Sequelize[_0x988c('0x4')]},'lastdata':{'type':Sequelize[_0x988c('0x4')]},'duration':{'type':Sequelize[_0x988c('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x988c('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x988c('0x4')]},'userfield':{'type':Sequelize[_0x988c('0x4')]},'uniqueid':{'type':Sequelize[_0x988c('0x4')]},'linkedid':{'type':Sequelize[_0x988c('0x4')]},'sequence':{'type':Sequelize[_0x988c('0x4')]},'peeraccount':{'type':Sequelize[_0x988c('0x4')]},'type':{'type':Sequelize[_0x988c('0x4')]},'tag':{'type':Sequelize[_0x988c('0x4')]}};
\ No newline at end of file
+var _0xca7b=['STRING','INTEGER','DATE','1970-01-01\x2000:00:01'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca7b,0x14e));var _0xbca7=function(_0x319d7e,_0xacccae){_0x319d7e=_0x319d7e-0x0;var _0x418e62=_0xca7b[_0x319d7e];return _0x418e62;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0xbca7('0x0')],'allowNull':![],'defaultValue':_0xbca7('0x1')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xbca7('0x2')]},'dst':{'type':Sequelize[_0xbca7('0x2')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xbca7('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xbca7('0x2')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xbca7('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xbca7('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xbca7('0x2')]},'userfield':{'type':Sequelize[_0xbca7('0x2')]},'uniqueid':{'type':Sequelize[_0xbca7('0x2')]},'linkedid':{'type':Sequelize[_0xbca7('0x2')]},'sequence':{'type':Sequelize[_0xbca7('0x2')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xbca7('0x2')]},'tag':{'type':Sequelize[_0xbca7('0x2')]}};
\ No newline at end of file
index b745514..3d97ae1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3be=['then','error','stack','name','send','index','map','Cdr','fieldName','type','key','query','keys','intersection','attributes','fields','model','nolimit','order','sort','where','filters','pick','filter','merge','options','include','rows','catch','rawAttributes','length','includeAll','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy'];(function(_0x467070,_0x393133){var _0x5a5575=function(_0x5881ff){while(--_0x5881ff){_0x467070['push'](_0x467070['shift']());}};_0x5a5575(++_0x393133);}(_0xf3be,0x1e1));var _0xef3b=function(_0x39d659,_0x1e2f0e){_0x39d659=_0x39d659-0x0;var _0x4085f9=_0xf3be[_0x39d659];return _0x4085f9;};'use strict';var emlformat=require(_0xef3b('0x0'));var rimraf=require(_0xef3b('0x1'));var zipdir=require(_0xef3b('0x2'));var jsonpatch=require(_0xef3b('0x3'));var rp=require('request-promise');var moment=require(_0xef3b('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xef3b('0x5'));var csv=require(_0xef3b('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef3b('0x7'));var _=require(_0xef3b('0x8'));var squel=require(_0xef3b('0x9'));var crypto=require(_0xef3b('0xa'));var jsforce=require(_0xef3b('0xb'));var deskjs=require(_0xef3b('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef3b('0xd'));var Redis=require('ioredis');var authService=require(_0xef3b('0xe'));var qs=require(_0xef3b('0xf'));var as=require(_0xef3b('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef3b('0x11'))('api');var utils=require(_0xef3b('0x12'));var config=require(_0xef3b('0x13'));var licenseUtil=require(_0xef3b('0x14'));var db=require(_0xef3b('0x15'))['db'];function respondWithStatusCode(_0x2a2a27,_0x3aef79){_0x3aef79=_0x3aef79||0xcc;return function(_0x169b2c){if(_0x169b2c){return _0x2a2a27[_0xef3b('0x16')](_0x3aef79);}return _0x2a2a27[_0xef3b('0x17')](_0x3aef79)[_0xef3b('0x18')]();};}function respondWithResult(_0x510cc3,_0x5a53b9){_0x5a53b9=_0x5a53b9||0xc8;return function(_0x138ea5){if(_0x138ea5){return _0x510cc3[_0xef3b('0x17')](_0x5a53b9)[_0xef3b('0x19')](_0x138ea5);}};}function respondWithFilteredResult(_0x118a31,_0x416801){return function(_0x529e89){if(_0x529e89){var _0x169803=typeof _0x416801[_0xef3b('0x1a')]===_0xef3b('0x1b')&&typeof _0x416801[_0xef3b('0x1c')]===_0xef3b('0x1b');var _0x5908cb=_0x529e89[_0xef3b('0x1d')];var _0x406eb7=_0x169803?0x0:_0x416801['offset'];var _0x280ccf=_0x169803?_0x529e89['count']:_0x416801[_0xef3b('0x1a')]+_0x416801['limit'];var _0x278de3;if(_0x280ccf>=_0x5908cb){_0x280ccf=_0x5908cb;_0x278de3=0xc8;}else{_0x278de3=0xce;}_0x118a31[_0xef3b('0x17')](_0x278de3);return _0x118a31[_0xef3b('0x1e')](_0xef3b('0x1f'),_0x406eb7+'-'+_0x280ccf+'/'+_0x5908cb)[_0xef3b('0x19')](_0x529e89);}return null;};}function patchUpdates(_0x3d18ef){return function(_0x19d4b5){try{jsonpatch[_0xef3b('0x20')](_0x19d4b5,_0x3d18ef,!![]);}catch(_0x4a3fbf){return BPromise[_0xef3b('0x21')](_0x4a3fbf);}return _0x19d4b5[_0xef3b('0x22')]();};}function saveUpdates(_0x214b53,_0xfe39a4){return function(_0x93a080){if(_0x93a080){return _0x93a080[_0xef3b('0x23')](_0x214b53)['then'](function(_0x27cc47){return _0x27cc47;});}return null;};}function removeEntity(_0x574042,_0x57b14a){return function(_0xc68cb2){if(_0xc68cb2){return _0xc68cb2[_0xef3b('0x24')]()[_0xef3b('0x25')](function(){_0x574042[_0xef3b('0x17')](0xcc)[_0xef3b('0x18')]();});}};}function handleEntityNotFound(_0x179338,_0x4ecb5e){return function(_0x487ae6){if(!_0x487ae6){_0x179338[_0xef3b('0x16')](0x194);}return _0x487ae6;};}function handleError(_0x4b6ee7,_0x4d5449){_0x4d5449=_0x4d5449||0x1f4;return function(_0x13dd47){logger[_0xef3b('0x26')](_0x13dd47[_0xef3b('0x27')]);if(_0x13dd47[_0xef3b('0x28')]){delete _0x13dd47[_0xef3b('0x28')];}_0x4b6ee7[_0xef3b('0x17')](_0x4d5449)[_0xef3b('0x29')](_0x13dd47);};}exports[_0xef3b('0x2a')]=function(_0x556c5c,_0xded00b){var _0x2b073b={},_0x634a45={},_0x187d1b={'count':0x0,'rows':[]};var _0x27ab13=_[_0xef3b('0x2b')](db[_0xef3b('0x2c')]['rawAttributes'],function(_0x4c9a84){return{'name':_0x4c9a84[_0xef3b('0x2d')],'type':_0x4c9a84[_0xef3b('0x2e')][_0xef3b('0x2f')]};});_0x634a45['model']=_[_0xef3b('0x2b')](_0x27ab13,_0xef3b('0x28'));_0x634a45[_0xef3b('0x30')]=_[_0xef3b('0x31')](_0x556c5c[_0xef3b('0x30')]);_0x634a45['filters']=_[_0xef3b('0x32')](_0x634a45['model'],_0x634a45[_0xef3b('0x30')]);_0x2b073b[_0xef3b('0x33')]=_[_0xef3b('0x32')](_0x634a45['model'],qs[_0xef3b('0x34')](_0x556c5c[_0xef3b('0x30')][_0xef3b('0x34')]));_0x2b073b['attributes']=_0x2b073b[_0xef3b('0x33')]['length']?_0x2b073b[_0xef3b('0x33')]:_0x634a45[_0xef3b('0x35')];if(!_0x556c5c['query']['hasOwnProperty'](_0xef3b('0x36'))){_0x2b073b[_0xef3b('0x1c')]=qs[_0xef3b('0x1c')](_0x556c5c['query'][_0xef3b('0x1c')]);_0x2b073b[_0xef3b('0x1a')]=qs[_0xef3b('0x1a')](_0x556c5c[_0xef3b('0x30')][_0xef3b('0x1a')]);}_0x2b073b[_0xef3b('0x37')]=qs['sort'](_0x556c5c['query'][_0xef3b('0x38')]);_0x2b073b[_0xef3b('0x39')]=qs[_0xef3b('0x3a')](_[_0xef3b('0x3b')](_0x556c5c[_0xef3b('0x30')],_0x634a45[_0xef3b('0x3a')]),_0x27ab13);if(_0x556c5c['query'][_0xef3b('0x3c')]){_0x2b073b[_0xef3b('0x39')]=_[_0xef3b('0x3d')](_0x2b073b['where'],{'$or':_[_0xef3b('0x2b')](_0x27ab13,function(_0x5ab5eb){if(_0x5ab5eb[_0xef3b('0x2e')]!=='VIRTUAL'){var _0x3a361f={};_0x3a361f[_0x5ab5eb['name']]={'$like':'%'+_0x556c5c[_0xef3b('0x30')]['filter']+'%'};return _0x3a361f;}})});}_0x2b073b=_[_0xef3b('0x3d')]({},_0x2b073b,_0x556c5c[_0xef3b('0x3e')]);var _0x1108e1={'where':_0x2b073b[_0xef3b('0x39')]};return db[_0xef3b('0x2c')][_0xef3b('0x1d')](_0x1108e1)[_0xef3b('0x25')](function(_0x219cfc){_0x187d1b['count']=_0x219cfc;if(_0x556c5c[_0xef3b('0x30')]['includeAll']){_0x2b073b[_0xef3b('0x3f')]=[{'all':!![]}];}return db[_0xef3b('0x2c')]['findAll'](_0x2b073b);})['then'](function(_0x51fb51){_0x187d1b[_0xef3b('0x40')]=_0x51fb51;return _0x187d1b;})['then'](respondWithFilteredResult(_0xded00b,_0x2b073b))[_0xef3b('0x41')](handleError(_0xded00b,null));};exports['show']=function(_0x4b2230,_0x516d08){var _0x5cec25={'raw':!![],'where':{'id':_0x4b2230['params']['id']}},_0x48699a={};_0x48699a['model']=_[_0xef3b('0x31')](db[_0xef3b('0x2c')][_0xef3b('0x42')]);_0x48699a['query']=_['keys'](_0x4b2230[_0xef3b('0x30')]);_0x48699a[_0xef3b('0x3a')]=_[_0xef3b('0x32')](_0x48699a[_0xef3b('0x35')],_0x48699a['query']);_0x5cec25[_0xef3b('0x33')]=_['intersection'](_0x48699a[_0xef3b('0x35')],qs[_0xef3b('0x34')](_0x4b2230[_0xef3b('0x30')][_0xef3b('0x34')]));_0x5cec25[_0xef3b('0x33')]=_0x5cec25['attributes'][_0xef3b('0x43')]?_0x5cec25[_0xef3b('0x33')]:_0x48699a[_0xef3b('0x35')];if(_0x4b2230[_0xef3b('0x30')][_0xef3b('0x44')]){_0x5cec25[_0xef3b('0x3f')]=[{'all':!![]}];}_0x5cec25=_[_0xef3b('0x3d')]({},_0x5cec25,_0x4b2230[_0xef3b('0x3e')]);return db[_0xef3b('0x2c')]['find'](_0x5cec25)[_0xef3b('0x25')](handleEntityNotFound(_0x516d08,null))[_0xef3b('0x25')](respondWithResult(_0x516d08,null))[_0xef3b('0x41')](handleError(_0x516d08,null));};exports['create']=function(_0x3f3e8b,_0x5d48c8){return db[_0xef3b('0x2c')][_0xef3b('0x45')](_0x3f3e8b[_0xef3b('0x46')],{})['then'](respondWithResult(_0x5d48c8,0xc9))['catch'](handleError(_0x5d48c8,null));};exports[_0xef3b('0x23')]=function(_0x38ee41,_0x4b368c){if(_0x38ee41[_0xef3b('0x46')]['id']){delete _0x38ee41[_0xef3b('0x46')]['id'];}return db[_0xef3b('0x2c')][_0xef3b('0x47')]({'where':{'id':_0x38ee41['params']['id']}})[_0xef3b('0x25')](handleEntityNotFound(_0x4b368c,null))[_0xef3b('0x25')](saveUpdates(_0x38ee41[_0xef3b('0x46')],null))[_0xef3b('0x25')](respondWithResult(_0x4b368c,null))[_0xef3b('0x41')](handleError(_0x4b368c,null));};exports[_0xef3b('0x24')]=function(_0x5e66fe,_0x2f45b1){return db[_0xef3b('0x2c')][_0xef3b('0x47')]({'where':{'id':_0x5e66fe[_0xef3b('0x48')]['id']}})[_0xef3b('0x25')](handleEntityNotFound(_0x2f45b1,null))[_0xef3b('0x25')](removeEntity(_0x2f45b1,null))[_0xef3b('0x41')](handleError(_0x2f45b1,null));};exports[_0xef3b('0x49')]=function(_0x3995b9,_0xf30f16){return db[_0xef3b('0x2c')][_0xef3b('0x49')]()[_0xef3b('0x25')](respondWithResult(_0xf30f16,null))['catch'](handleError(_0xf30f16,null));};
\ No newline at end of file
+var _0x8375=['attributes','intersection','fields','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','include','rows','catch','show','params','rawAttributes','length','includeAll','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','save','destroy','then','error','stack','name','send','map','Cdr','fieldName','type','model','query','keys'];(function(_0x77cbc3,_0x3f2d07){var _0x263ee5=function(_0x29207c){while(--_0x29207c){_0x77cbc3['push'](_0x77cbc3['shift']());}};_0x263ee5(++_0x3f2d07);}(_0x8375,0xa8));var _0x5837=function(_0x5297e6,_0x19926d){_0x5297e6=_0x5297e6-0x0;var _0x58df8a=_0x8375[_0x5297e6];return _0x58df8a;};'use strict';var emlformat=require(_0x5837('0x0'));var rimraf=require(_0x5837('0x1'));var zipdir=require(_0x5837('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5837('0x3'));var moment=require(_0x5837('0x4'));var BPromise=require(_0x5837('0x5'));var Mustache=require(_0x5837('0x6'));var util=require(_0x5837('0x7'));var path=require(_0x5837('0x8'));var sox=require('sox');var csv=require(_0x5837('0x9'));var ejs=require(_0x5837('0xa'));var fs=require('fs');var fs_extra=require(_0x5837('0xb'));var _=require(_0x5837('0xc'));var squel=require(_0x5837('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5837('0xe'));var toCsv=require(_0x5837('0x9'));var querystring=require('querystring');var Papa=require(_0x5837('0xf'));var Redis=require('ioredis');var authService=require(_0x5837('0x10'));var qs=require(_0x5837('0x11'));var as=require(_0x5837('0x12'));var hardwareService=require(_0x5837('0x13'));var logger=require(_0x5837('0x14'))(_0x5837('0x15'));var utils=require('../../config/utils');var config=require(_0x5837('0x16'));var licenseUtil=require(_0x5837('0x17'));var db=require(_0x5837('0x18'))['db'];function respondWithStatusCode(_0x10c1a1,_0x143210){_0x143210=_0x143210||0xcc;return function(_0x485366){if(_0x485366){return _0x10c1a1['sendStatus'](_0x143210);}return _0x10c1a1['status'](_0x143210)[_0x5837('0x19')]();};}function respondWithResult(_0x111dbf,_0x469903){_0x469903=_0x469903||0xc8;return function(_0xa5718d){if(_0xa5718d){return _0x111dbf[_0x5837('0x1a')](_0x469903)[_0x5837('0x1b')](_0xa5718d);}};}function respondWithFilteredResult(_0x206f02,_0x754f39){return function(_0x10d882){if(_0x10d882){var _0x59a378=typeof _0x754f39[_0x5837('0x1c')]===_0x5837('0x1d')&&typeof _0x754f39['limit']===_0x5837('0x1d');var _0x2297b4=_0x10d882[_0x5837('0x1e')];var _0x49279d=_0x59a378?0x0:_0x754f39['offset'];var _0x4bee08=_0x59a378?_0x10d882[_0x5837('0x1e')]:_0x754f39[_0x5837('0x1c')]+_0x754f39[_0x5837('0x1f')];var _0x58e7f7;if(_0x4bee08>=_0x2297b4){_0x4bee08=_0x2297b4;_0x58e7f7=0xc8;}else{_0x58e7f7=0xce;}_0x206f02[_0x5837('0x1a')](_0x58e7f7);return _0x206f02[_0x5837('0x20')](_0x5837('0x21'),_0x49279d+'-'+_0x4bee08+'/'+_0x2297b4)[_0x5837('0x1b')](_0x10d882);}return null;};}function patchUpdates(_0x5881ff){return function(_0x4908c2){try{jsonpatch['apply'](_0x4908c2,_0x5881ff,!![]);}catch(_0x3d352f){return BPromise['reject'](_0x3d352f);}return _0x4908c2[_0x5837('0x22')]();};}function saveUpdates(_0x2bd103,_0x32733a){return function(_0x3a7efe){if(_0x3a7efe){return _0x3a7efe['update'](_0x2bd103)['then'](function(_0x1b80db){return _0x1b80db;});}return null;};}function removeEntity(_0x2262b9,_0x406506){return function(_0x5e8089){if(_0x5e8089){return _0x5e8089[_0x5837('0x23')]()[_0x5837('0x24')](function(){_0x2262b9[_0x5837('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41f86a,_0x2646ed){return function(_0x39babd){if(!_0x39babd){_0x41f86a['sendStatus'](0x194);}return _0x39babd;};}function handleError(_0x57baed,_0x1d545c){_0x1d545c=_0x1d545c||0x1f4;return function(_0x15655e){logger[_0x5837('0x25')](_0x15655e[_0x5837('0x26')]);if(_0x15655e[_0x5837('0x27')]){delete _0x15655e[_0x5837('0x27')];}_0x57baed[_0x5837('0x1a')](_0x1d545c)[_0x5837('0x28')](_0x15655e);};}exports['index']=function(_0x2f0c8d,_0x13830f){var _0x3cbd3f={},_0x3918ee={},_0x1c9f32={'count':0x0,'rows':[]};var _0x228f1=_[_0x5837('0x29')](db[_0x5837('0x2a')]['rawAttributes'],function(_0x4f7502){return{'name':_0x4f7502[_0x5837('0x2b')],'type':_0x4f7502[_0x5837('0x2c')]['key']};});_0x3918ee[_0x5837('0x2d')]=_[_0x5837('0x29')](_0x228f1,'name');_0x3918ee[_0x5837('0x2e')]=_[_0x5837('0x2f')](_0x2f0c8d[_0x5837('0x2e')]);_0x3918ee['filters']=_['intersection'](_0x3918ee['model'],_0x3918ee[_0x5837('0x2e')]);_0x3cbd3f[_0x5837('0x30')]=_[_0x5837('0x31')](_0x3918ee[_0x5837('0x2d')],qs[_0x5837('0x32')](_0x2f0c8d['query']['fields']));_0x3cbd3f[_0x5837('0x30')]=_0x3cbd3f[_0x5837('0x30')]['length']?_0x3cbd3f['attributes']:_0x3918ee[_0x5837('0x2d')];if(!_0x2f0c8d['query']['hasOwnProperty'](_0x5837('0x33'))){_0x3cbd3f[_0x5837('0x1f')]=qs['limit'](_0x2f0c8d[_0x5837('0x2e')][_0x5837('0x1f')]);_0x3cbd3f[_0x5837('0x1c')]=qs['offset'](_0x2f0c8d[_0x5837('0x2e')][_0x5837('0x1c')]);}_0x3cbd3f[_0x5837('0x34')]=qs[_0x5837('0x35')](_0x2f0c8d[_0x5837('0x2e')]['sort']);_0x3cbd3f[_0x5837('0x36')]=qs['filters'](_['pick'](_0x2f0c8d[_0x5837('0x2e')],_0x3918ee[_0x5837('0x37')]),_0x228f1);if(_0x2f0c8d['query'][_0x5837('0x38')]){_0x3cbd3f[_0x5837('0x36')]=_[_0x5837('0x39')](_0x3cbd3f[_0x5837('0x36')],{'$or':_['map'](_0x228f1,function(_0x2ed688){if(_0x2ed688[_0x5837('0x2c')]!==_0x5837('0x3a')){var _0x5dcd18={};_0x5dcd18[_0x2ed688[_0x5837('0x27')]]={'$like':'%'+_0x2f0c8d[_0x5837('0x2e')][_0x5837('0x38')]+'%'};return _0x5dcd18;}})});}_0x3cbd3f=_[_0x5837('0x39')]({},_0x3cbd3f,_0x2f0c8d[_0x5837('0x3b')]);var _0x76f00d={'where':_0x3cbd3f[_0x5837('0x36')]};return db[_0x5837('0x2a')][_0x5837('0x1e')](_0x76f00d)[_0x5837('0x24')](function(_0x1a5e2d){_0x1c9f32[_0x5837('0x1e')]=_0x1a5e2d;if(_0x2f0c8d['query']['includeAll']){_0x3cbd3f[_0x5837('0x3c')]=[{'all':!![]}];}return db[_0x5837('0x2a')]['findAll'](_0x3cbd3f);})[_0x5837('0x24')](function(_0x1ae168){_0x1c9f32[_0x5837('0x3d')]=_0x1ae168;return _0x1c9f32;})['then'](respondWithFilteredResult(_0x13830f,_0x3cbd3f))[_0x5837('0x3e')](handleError(_0x13830f,null));};exports[_0x5837('0x3f')]=function(_0x1c81ed,_0x3acdf5){var _0x4643e3={'raw':!![],'where':{'id':_0x1c81ed[_0x5837('0x40')]['id']}},_0xd443be={};_0xd443be[_0x5837('0x2d')]=_[_0x5837('0x2f')](db['Cdr'][_0x5837('0x41')]);_0xd443be[_0x5837('0x2e')]=_[_0x5837('0x2f')](_0x1c81ed['query']);_0xd443be['filters']=_[_0x5837('0x31')](_0xd443be[_0x5837('0x2d')],_0xd443be[_0x5837('0x2e')]);_0x4643e3[_0x5837('0x30')]=_[_0x5837('0x31')](_0xd443be[_0x5837('0x2d')],qs[_0x5837('0x32')](_0x1c81ed[_0x5837('0x2e')][_0x5837('0x32')]));_0x4643e3[_0x5837('0x30')]=_0x4643e3[_0x5837('0x30')][_0x5837('0x42')]?_0x4643e3['attributes']:_0xd443be[_0x5837('0x2d')];if(_0x1c81ed['query'][_0x5837('0x43')]){_0x4643e3[_0x5837('0x3c')]=[{'all':!![]}];}_0x4643e3=_['merge']({},_0x4643e3,_0x1c81ed[_0x5837('0x3b')]);return db[_0x5837('0x2a')]['find'](_0x4643e3)[_0x5837('0x24')](handleEntityNotFound(_0x3acdf5,null))[_0x5837('0x24')](respondWithResult(_0x3acdf5,null))[_0x5837('0x3e')](handleError(_0x3acdf5,null));};exports[_0x5837('0x44')]=function(_0x54a23b,_0x55cf2b){return db[_0x5837('0x2a')][_0x5837('0x44')](_0x54a23b['body'],{})['then'](respondWithResult(_0x55cf2b,0xc9))['catch'](handleError(_0x55cf2b,null));};exports['update']=function(_0x38e987,_0x6423f2){if(_0x38e987[_0x5837('0x45')]['id']){delete _0x38e987['body']['id'];}return db['Cdr'][_0x5837('0x46')]({'where':{'id':_0x38e987[_0x5837('0x40')]['id']}})[_0x5837('0x24')](handleEntityNotFound(_0x6423f2,null))[_0x5837('0x24')](saveUpdates(_0x38e987[_0x5837('0x45')],null))[_0x5837('0x24')](respondWithResult(_0x6423f2,null))[_0x5837('0x3e')](handleError(_0x6423f2,null));};exports[_0x5837('0x23')]=function(_0x27f7b9,_0x38743a){return db['Cdr'][_0x5837('0x46')]({'where':{'id':_0x27f7b9[_0x5837('0x40')]['id']}})['then'](handleEntityNotFound(_0x38743a,null))[_0x5837('0x24')](removeEntity(_0x38743a,null))[_0x5837('0x3e')](handleError(_0x38743a,null));};exports[_0x5837('0x47')]=function(_0x397cd9,_0x38e75d){return db['Cdr'][_0x5837('0x47')]()[_0x5837('0x24')](respondWithResult(_0x38e75d,null))[_0x5837('0x3e')](handleError(_0x38e75d,null));};
\ No newline at end of file
index 596a9a9..e42d032 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(_0x2ce428,_0x458535){var _0x4759ec=function(_0x4c63eb){while(--_0x4c63eb){_0x2ce428['push'](_0x2ce428['shift']());}};_0x4759ec(++_0x458535);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x530b12,_0x3adbd6){var _0x527f5f=function(_0x1307d9){while(--_0x1307d9){_0x530b12['push'](_0x530b12['shift']());}};_0x527f5f(++_0x3adbd6);}(_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':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index 29b7545..2611f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd6d=['stringify','error','Cdr,\x20%s,\x20%s','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','Cdr,\x20%s,\x20%s,\x20%s'];(function(_0x256ac1,_0x3e9a5f){var _0x52f0a6=function(_0x4ff812){while(--_0x4ff812){_0x256ac1['push'](_0x256ac1['shift']());}};_0x52f0a6(++_0x3e9a5f);}(_0xbd6d,0xf6));var _0xdbd6=function(_0x222214,_0x5c3279){_0x222214=_0x222214-0x0;var _0x303520=_0xbd6d[_0x222214];return _0x303520;};'use strict';var _=require(_0xdbd6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xdbd6('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdbd6('0x2'));var db=require(_0xdbd6('0x3'))['db'];var utils=require(_0xdbd6('0x4'));var logger=require(_0xdbd6('0x5'))(_0xdbd6('0x6'));var config=require(_0xdbd6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdbd6('0x8')][_0xdbd6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ac885,_0x8148d5,_0x508fac){return new BPromise(function(_0x398e00,_0x2fb323){return client[_0xdbd6('0xa')](_0x4ac885,_0x508fac)['then'](function(_0x3b0b9c){logger[_0xdbd6('0xb')]('Cdr,\x20%s,\x20%s',_0x8148d5,_0xdbd6('0xc'));logger['debug'](_0xdbd6('0xd'),_0x8148d5,_0xdbd6('0xc'),JSON[_0xdbd6('0xe')](_0x3b0b9c));if(_0x3b0b9c[_0xdbd6('0xf')]){if(_0x3b0b9c[_0xdbd6('0xf')]['code']===0x1f4){logger['error'](_0xdbd6('0x10'),_0x8148d5,_0x3b0b9c[_0xdbd6('0xf')]['message']);return _0x2fb323(_0x3b0b9c[_0xdbd6('0xf')]['message']);}logger[_0xdbd6('0xf')](_0xdbd6('0x10'),_0x8148d5,_0x3b0b9c[_0xdbd6('0xf')]['message']);return _0x398e00(_0x3b0b9c[_0xdbd6('0xf')][_0xdbd6('0x11')]);}else{logger[_0xdbd6('0xb')](_0xdbd6('0x10'),_0x8148d5,'request\x20sent');_0x398e00(_0x3b0b9c[_0xdbd6('0x12')][_0xdbd6('0x11')]);}})[_0xdbd6('0x13')](function(_0x57d416){logger[_0xdbd6('0xf')](_0xdbd6('0x10'),_0x8148d5,_0x57d416);_0x2fb323(_0x57d416);});});}
\ No newline at end of file
+var _0x7058=['jayson/promise','client','http','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x354bd6,_0x4a7c74){var _0x39bf52=function(_0x585791){while(--_0x585791){_0x354bd6['push'](_0x354bd6['shift']());}};_0x39bf52(++_0x4a7c74);}(_0x7058,0x7c));var _0x8705=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0x7058[_0x1a36a5];return _0x746243;};'use strict';var _=require('lodash');var util=require(_0x8705('0x0'));var moment=require('moment');var BPromise=require(_0x8705('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8705('0x2'));var db=require(_0x8705('0x3'))['db'];var utils=require(_0x8705('0x4'));var logger=require(_0x8705('0x5'))(_0x8705('0x6'));var config=require(_0x8705('0x7'));var jayson=require(_0x8705('0x8'));var client=jayson[_0x8705('0x9')][_0x8705('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x294347,_0x5e825e,_0x56f333){return new BPromise(function(_0x3b8bc8,_0x71fc8){return client['request'](_0x294347,_0x56f333)[_0x8705('0xb')](function(_0x40421f){logger[_0x8705('0xc')](_0x8705('0xd'),_0x5e825e,_0x8705('0xe'));logger[_0x8705('0xf')](_0x8705('0x10'),_0x5e825e,_0x8705('0xe'),JSON[_0x8705('0x11')](_0x40421f));if(_0x40421f[_0x8705('0x12')]){if(_0x40421f[_0x8705('0x12')]['code']===0x1f4){logger[_0x8705('0x12')]('Cdr,\x20%s,\x20%s',_0x5e825e,_0x40421f[_0x8705('0x12')]['message']);return _0x71fc8(_0x40421f[_0x8705('0x12')]['message']);}logger[_0x8705('0x12')](_0x8705('0xd'),_0x5e825e,_0x40421f[_0x8705('0x12')][_0x8705('0x13')]);return _0x3b8bc8(_0x40421f[_0x8705('0x12')][_0x8705('0x13')]);}else{logger[_0x8705('0xc')](_0x8705('0xd'),_0x5e825e,'request\x20sent');_0x3b8bc8(_0x40421f[_0x8705('0x14')][_0x8705('0x13')]);}})[_0x8705('0x15')](function(_0x1101c1){logger[_0x8705('0x12')](_0x8705('0xd'),_0x5e825e,_0x1101c1);_0x71fc8(_0x1101c1);});});}
\ No newline at end of file
index 087e7d1..a5e4f89 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(_0x16d4b6,_0x527555){var _0xeeaf29=function(_0x272d27){while(--_0x272d27){_0x16d4b6['push'](_0x16d4b6['shift']());}};_0xeeaf29(++_0x527555);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _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(_0x48e1ec,_0x35f468){var _0x3b33eb=function(_0x507bf9){while(--_0x507bf9){_0x48e1ec['push'](_0x48e1ec['shift']());}};_0x3b33eb(++_0x35f468);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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 a17e0b2..c617eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa4c=['INTEGER','STRING','noop','TEXT','*,*,*,*','exports'];(function(_0x36438c,_0x286033){var _0x1ec81b=function(_0x3a0935){while(--_0x3a0935){_0x36438c['push'](_0x36438c['shift']());}};_0x1ec81b(++_0x286033);}(_0xaa4c,0x1e5));var _0xcaa4=function(_0x43b658,_0x506ad2){_0x43b658=_0x43b658-0x0;var _0x526e1e=_0xaa4c[_0x43b658];return _0x526e1e;};'use strict';var Sequelize=require('sequelize');module[_0xcaa4('0x0')]={'priority':{'type':Sequelize[_0xcaa4('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xcaa4('0x2')],'allowNull':![],'defaultValue':_0xcaa4('0x3')},'appdata':{'type':Sequelize[_0xcaa4('0x4')]()},'description':{'type':Sequelize[_0xcaa4('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xcaa4('0x5')}};
\ No newline at end of file
+var _0x58a7=['TEXT','*,*,*,*','sequelize','exports','STRING','noop'];(function(_0x4b08bd,_0x5e638b){var _0x5270d1=function(_0x3c4ce6){while(--_0x3c4ce6){_0x4b08bd['push'](_0x4b08bd['shift']());}};_0x5270d1(++_0x5e638b);}(_0x58a7,0x7a));var _0x758a=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x58a7[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0x758a('0x0'));module[_0x758a('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x758a('0x2')],'allowNull':![],'defaultValue':_0x758a('0x3')},'appdata':{'type':Sequelize[_0x758a('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x758a('0x5')}};
\ No newline at end of file
index fdbe050..88635eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb04a=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','Content-Range','reject','save','update','then','destroy','error','name','send','show','model','keys','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','merge','find','body','ChatApplication','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x4027da,_0x50cffc){var _0x2db375=function(_0x23afd2){while(--_0x23afd2){_0x4027da['push'](_0x4027da['shift']());}};_0x2db375(++_0x50cffc);}(_0xb04a,0xcf));var _0xab04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb04a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xab04('0x0'));var rimraf=require(_0xab04('0x1'));var zipdir=require(_0xab04('0x2'));var jsonpatch=require(_0xab04('0x3'));var rp=require('request-promise');var moment=require(_0xab04('0x4'));var BPromise=require(_0xab04('0x5'));var Mustache=require(_0xab04('0x6'));var util=require('util');var path=require(_0xab04('0x7'));var sox=require(_0xab04('0x8'));var csv=require(_0xab04('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xab04('0xa'));var _=require(_0xab04('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xab04('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xab04('0xd'));var authService=require(_0xab04('0xe'));var qs=require(_0xab04('0xf'));var as=require(_0xab04('0x10'));var hardwareService=require(_0xab04('0x11'));var logger=require(_0xab04('0x12'))(_0xab04('0x13'));var utils=require(_0xab04('0x14'));var config=require(_0xab04('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38e003,_0x3cf546){_0x3cf546=_0x3cf546||0xcc;return function(_0x4160d5){if(_0x4160d5){return _0x38e003[_0xab04('0x16')](_0x3cf546);}return _0x38e003['status'](_0x3cf546)[_0xab04('0x17')]();};}function respondWithResult(_0x2934bd,_0x5e3471){_0x5e3471=_0x5e3471||0xc8;return function(_0x233a8d){if(_0x233a8d){return _0x2934bd[_0xab04('0x18')](_0x5e3471)[_0xab04('0x19')](_0x233a8d);}};}function respondWithFilteredResult(_0x1fb034,_0x2cff48){return function(_0x523c51){if(_0x523c51){var _0x3371ed=typeof _0x2cff48[_0xab04('0x1a')]===_0xab04('0x1b')&&typeof _0x2cff48[_0xab04('0x1c')]===_0xab04('0x1b');var _0x5d10f7=_0x523c51['count'];var _0x371c30=_0x3371ed?0x0:_0x2cff48[_0xab04('0x1a')];var _0x2c0b39=_0x3371ed?_0x523c51['count']:_0x2cff48['offset']+_0x2cff48[_0xab04('0x1c')];var _0x287011;if(_0x2c0b39>=_0x5d10f7){_0x2c0b39=_0x5d10f7;_0x287011=0xc8;}else{_0x287011=0xce;}_0x1fb034[_0xab04('0x18')](_0x287011);return _0x1fb034['set'](_0xab04('0x1d'),_0x371c30+'-'+_0x2c0b39+'/'+_0x5d10f7)['json'](_0x523c51);}return null;};}function patchUpdates(_0x395c6b){return function(_0x2ac32c){try{jsonpatch['apply'](_0x2ac32c,_0x395c6b,!![]);}catch(_0x4808ba){return BPromise[_0xab04('0x1e')](_0x4808ba);}return _0x2ac32c[_0xab04('0x1f')]();};}function saveUpdates(_0x5a204c,_0x3f0d72){return function(_0x19d9cb){if(_0x19d9cb){return _0x19d9cb[_0xab04('0x20')](_0x5a204c)[_0xab04('0x21')](function(_0x3667fd){return _0x3667fd;});}return null;};}function removeEntity(_0x4c7a19,_0x19fcab){return function(_0x4df287){if(_0x4df287){return _0x4df287[_0xab04('0x22')]()[_0xab04('0x21')](function(){_0x4c7a19['status'](0xcc)[_0xab04('0x17')]();});}};}function handleEntityNotFound(_0x49b9bf,_0x59f287){return function(_0x587620){if(!_0x587620){_0x49b9bf[_0xab04('0x16')](0x194);}return _0x587620;};}function handleError(_0xb8bb3,_0x2f5a8c){_0x2f5a8c=_0x2f5a8c||0x1f4;return function(_0x9a1b1){logger[_0xab04('0x23')](_0x9a1b1['stack']);if(_0x9a1b1['name']){delete _0x9a1b1[_0xab04('0x24')];}_0xb8bb3['status'](_0x2f5a8c)[_0xab04('0x25')](_0x9a1b1);};}exports[_0xab04('0x26')]=function(_0x15cae9,_0x2fb6e4){var _0x331aa9={'raw':!![],'where':{'id':_0x15cae9['params']['id']}},_0x3c61bd={};_0x3c61bd[_0xab04('0x27')]=_[_0xab04('0x28')](db['ChatApplication'][_0xab04('0x29')]);_0x3c61bd[_0xab04('0x2a')]=_[_0xab04('0x28')](_0x15cae9[_0xab04('0x2a')]);_0x3c61bd[_0xab04('0x2b')]=_[_0xab04('0x2c')](_0x3c61bd['model'],_0x3c61bd[_0xab04('0x2a')]);_0x331aa9['attributes']=_[_0xab04('0x2c')](_0x3c61bd[_0xab04('0x27')],qs[_0xab04('0x2d')](_0x15cae9[_0xab04('0x2a')]['fields']));_0x331aa9[_0xab04('0x2e')]=_0x331aa9['attributes'][_0xab04('0x2f')]?_0x331aa9[_0xab04('0x2e')]:_0x3c61bd[_0xab04('0x27')];if(_0x15cae9[_0xab04('0x2a')][_0xab04('0x30')]){_0x331aa9[_0xab04('0x31')]=[{'all':!![]}];}_0x331aa9=_[_0xab04('0x32')]({},_0x331aa9,_0x15cae9['options']);return db['ChatApplication'][_0xab04('0x33')](_0x331aa9)[_0xab04('0x21')](handleEntityNotFound(_0x2fb6e4,null))[_0xab04('0x21')](respondWithResult(_0x2fb6e4,null))['catch'](handleError(_0x2fb6e4,null));};exports[_0xab04('0x20')]=function(_0x29b73a,_0x5a9a5b){if(_0x29b73a[_0xab04('0x34')]['id']){delete _0x29b73a[_0xab04('0x34')]['id'];}return db[_0xab04('0x35')][_0xab04('0x33')]({'where':{'id':_0x29b73a[_0xab04('0x36')]['id']}})['then'](handleEntityNotFound(_0x5a9a5b,null))[_0xab04('0x21')](saveUpdates(_0x29b73a['body'],null))['then'](respondWithResult(_0x5a9a5b,null))[_0xab04('0x37')](handleError(_0x5a9a5b,null));};exports[_0xab04('0x22')]=function(_0x12539d,_0x16ad54){return db['ChatApplication'][_0xab04('0x33')]({'where':{'id':_0x12539d[_0xab04('0x36')]['id']}})['then'](handleEntityNotFound(_0x16ad54,null))[_0xab04('0x21')](removeEntity(_0x16ad54,null))[_0xab04('0x37')](handleError(_0x16ad54,null));};
\ No newline at end of file
+var _0xfb71=['sendStatus','error','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','intersection','query','attributes','fields','length','includeAll','include','merge','options','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','end','json','offset','undefined','limit','count','status','set','reject','update','then','destroy'];(function(_0x508ea4,_0x366cab){var _0x253bd0=function(_0x31ef43){while(--_0x31ef43){_0x508ea4['push'](_0x508ea4['shift']());}};_0x253bd0(++_0x366cab);}(_0xfb71,0x1ef));var _0x1fb7=function(_0x251dcb,_0x3cc3ba){_0x251dcb=_0x251dcb-0x0;var _0x3b7b18=_0xfb71[_0x251dcb];return _0x3b7b18;};'use strict';var emlformat=require(_0x1fb7('0x0'));var rimraf=require(_0x1fb7('0x1'));var zipdir=require(_0x1fb7('0x2'));var jsonpatch=require(_0x1fb7('0x3'));var rp=require(_0x1fb7('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1fb7('0x5'));var util=require(_0x1fb7('0x6'));var path=require(_0x1fb7('0x7'));var sox=require('sox');var csv=require(_0x1fb7('0x8'));var ejs=require(_0x1fb7('0x9'));var fs=require('fs');var fs_extra=require(_0x1fb7('0xa'));var _=require(_0x1fb7('0xb'));var squel=require(_0x1fb7('0xc'));var crypto=require(_0x1fb7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1fb7('0xe'));var toCsv=require(_0x1fb7('0x8'));var querystring=require('querystring');var Papa=require(_0x1fb7('0xf'));var Redis=require(_0x1fb7('0x10'));var authService=require(_0x1fb7('0x11'));var qs=require(_0x1fb7('0x12'));var as=require(_0x1fb7('0x13'));var hardwareService=require(_0x1fb7('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x1fb7('0x15'));var config=require(_0x1fb7('0x16'));var licenseUtil=require(_0x1fb7('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49ac10,_0x195eb2){_0x195eb2=_0x195eb2||0xcc;return function(_0x3cc07d){if(_0x3cc07d){return _0x49ac10['sendStatus'](_0x195eb2);}return _0x49ac10['status'](_0x195eb2)[_0x1fb7('0x18')]();};}function respondWithResult(_0x508475,_0x5117a1){_0x5117a1=_0x5117a1||0xc8;return function(_0x1b333b){if(_0x1b333b){return _0x508475['status'](_0x5117a1)[_0x1fb7('0x19')](_0x1b333b);}};}function respondWithFilteredResult(_0x34b6c0,_0x3245cf){return function(_0x5a010a){if(_0x5a010a){var _0xf4c50f=typeof _0x3245cf[_0x1fb7('0x1a')]===_0x1fb7('0x1b')&&typeof _0x3245cf[_0x1fb7('0x1c')]===_0x1fb7('0x1b');var _0x57387e=_0x5a010a[_0x1fb7('0x1d')];var _0x17de9d=_0xf4c50f?0x0:_0x3245cf[_0x1fb7('0x1a')];var _0x5e34c8=_0xf4c50f?_0x5a010a['count']:_0x3245cf[_0x1fb7('0x1a')]+_0x3245cf[_0x1fb7('0x1c')];var _0x1c4b31;if(_0x5e34c8>=_0x57387e){_0x5e34c8=_0x57387e;_0x1c4b31=0xc8;}else{_0x1c4b31=0xce;}_0x34b6c0[_0x1fb7('0x1e')](_0x1c4b31);return _0x34b6c0[_0x1fb7('0x1f')]('Content-Range',_0x17de9d+'-'+_0x5e34c8+'/'+_0x57387e)['json'](_0x5a010a);}return null;};}function patchUpdates(_0x4124d2){return function(_0x28ad2b){try{jsonpatch['apply'](_0x28ad2b,_0x4124d2,!![]);}catch(_0x3a90fe){return BPromise[_0x1fb7('0x20')](_0x3a90fe);}return _0x28ad2b['save']();};}function saveUpdates(_0x5792d1,_0x3c47be){return function(_0x294e2b){if(_0x294e2b){return _0x294e2b[_0x1fb7('0x21')](_0x5792d1)[_0x1fb7('0x22')](function(_0x10c424){return _0x10c424;});}return null;};}function removeEntity(_0xf41888,_0x350384){return function(_0x525149){if(_0x525149){return _0x525149[_0x1fb7('0x23')]()[_0x1fb7('0x22')](function(){_0xf41888['status'](0xcc)[_0x1fb7('0x18')]();});}};}function handleEntityNotFound(_0x4919a5,_0x4eee37){return function(_0xe7d132){if(!_0xe7d132){_0x4919a5[_0x1fb7('0x24')](0x194);}return _0xe7d132;};}function handleError(_0x2be17f,_0x5c1800){_0x5c1800=_0x5c1800||0x1f4;return function(_0x3695b6){logger[_0x1fb7('0x25')](_0x3695b6[_0x1fb7('0x26')]);if(_0x3695b6[_0x1fb7('0x27')]){delete _0x3695b6[_0x1fb7('0x27')];}_0x2be17f[_0x1fb7('0x1e')](_0x5c1800)[_0x1fb7('0x28')](_0x3695b6);};}exports[_0x1fb7('0x29')]=function(_0x39bb74,_0x24c1d2){var _0x57bba8={'raw':!![],'where':{'id':_0x39bb74[_0x1fb7('0x2a')]['id']}},_0x1513ef={};_0x1513ef[_0x1fb7('0x2b')]=_[_0x1fb7('0x2c')](db[_0x1fb7('0x2d')][_0x1fb7('0x2e')]);_0x1513ef['query']=_[_0x1fb7('0x2c')](_0x39bb74['query']);_0x1513ef['filters']=_[_0x1fb7('0x2f')](_0x1513ef[_0x1fb7('0x2b')],_0x1513ef[_0x1fb7('0x30')]);_0x57bba8[_0x1fb7('0x31')]=_['intersection'](_0x1513ef[_0x1fb7('0x2b')],qs[_0x1fb7('0x32')](_0x39bb74['query'][_0x1fb7('0x32')]));_0x57bba8[_0x1fb7('0x31')]=_0x57bba8[_0x1fb7('0x31')][_0x1fb7('0x33')]?_0x57bba8['attributes']:_0x1513ef[_0x1fb7('0x2b')];if(_0x39bb74[_0x1fb7('0x30')][_0x1fb7('0x34')]){_0x57bba8[_0x1fb7('0x35')]=[{'all':!![]}];}_0x57bba8=_[_0x1fb7('0x36')]({},_0x57bba8,_0x39bb74[_0x1fb7('0x37')]);return db[_0x1fb7('0x2d')][_0x1fb7('0x38')](_0x57bba8)['then'](handleEntityNotFound(_0x24c1d2,null))['then'](respondWithResult(_0x24c1d2,null))[_0x1fb7('0x39')](handleError(_0x24c1d2,null));};exports[_0x1fb7('0x21')]=function(_0x45b4e6,_0x2d5123){if(_0x45b4e6[_0x1fb7('0x3a')]['id']){delete _0x45b4e6[_0x1fb7('0x3a')]['id'];}return db[_0x1fb7('0x2d')][_0x1fb7('0x38')]({'where':{'id':_0x45b4e6[_0x1fb7('0x2a')]['id']}})[_0x1fb7('0x22')](handleEntityNotFound(_0x2d5123,null))[_0x1fb7('0x22')](saveUpdates(_0x45b4e6[_0x1fb7('0x3a')],null))[_0x1fb7('0x22')](respondWithResult(_0x2d5123,null))[_0x1fb7('0x39')](handleError(_0x2d5123,null));};exports[_0x1fb7('0x23')]=function(_0x592ed7,_0x6f2c46){return db[_0x1fb7('0x2d')][_0x1fb7('0x38')]({'where':{'id':_0x592ed7[_0x1fb7('0x2a')]['id']}})['then'](handleEntityNotFound(_0x6f2c46,null))[_0x1fb7('0x22')](removeEntity(_0x6f2c46,null))['catch'](handleError(_0x6f2c46,null));};
\ No newline at end of file
index 7dad892..9e91cfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x672e=['path','rimraf','../../config/environment','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x672e,0x1ac));var _0xe672=function(_0x9b8437,_0xe2180d){_0x9b8437=_0x9b8437-0x0;var _0x30391a=_0x672e[_0x9b8437];return _0x30391a;};'use strict';var _=require(_0xe672('0x0'));var util=require(_0xe672('0x1'));var logger=require('../../config/logger')(_0xe672('0x2'));var moment=require(_0xe672('0x3'));var BPromise=require(_0xe672('0x4'));var rp=require(_0xe672('0x5'));var fs=require('fs');var path=require(_0xe672('0x6'));var rimraf=require(_0xe672('0x7'));var config=require(_0xe672('0x8'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x642e2e,_0x44bd36){return _0x642e2e[_0xe672('0x9')](_0xe672('0xa'),attributes,{'tableName':_0xe672('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe672('0xc'),'collate':_0xe672('0xd')});};
\ No newline at end of file
+var _0xb9ee=['rimraf','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x15867a,_0x46dc79){var _0x29b70f=function(_0x13721c){while(--_0x13721c){_0x15867a['push'](_0x15867a['shift']());}};_0x29b70f(++_0x46dc79);}(_0xb9ee,0x12d));var _0xeb9e=function(_0x4513df,_0x389801){_0x4513df=_0x4513df-0x0;var _0x1c8eae=_0xb9ee[_0x4513df];return _0x1c8eae;};'use strict';var _=require(_0xeb9e('0x0'));var util=require(_0xeb9e('0x1'));var logger=require(_0xeb9e('0x2'))('api');var moment=require(_0xeb9e('0x3'));var BPromise=require(_0xeb9e('0x4'));var rp=require(_0xeb9e('0x5'));var fs=require('fs');var path=require(_0xeb9e('0x6'));var rimraf=require(_0xeb9e('0x7'));var config=require('../../config/environment');var attributes=require(_0xeb9e('0x8'));module[_0xeb9e('0x9')]=function(_0x43daa8,_0x5b35fe){return _0x43daa8[_0xeb9e('0xa')](_0xeb9e('0xb'),attributes,{'tableName':_0xeb9e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xeb9e('0xd')});};
\ No newline at end of file
index af8a5f6..5970daa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69bb=['client','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment'];(function(_0x3cf7d4,_0x9090f2){var _0x4e3770=function(_0x4dabfc){while(--_0x4dabfc){_0x3cf7d4['push'](_0x3cf7d4['shift']());}};_0x4e3770(++_0x9090f2);}(_0x69bb,0xdc));var _0xb69b=function(_0xa2d998,_0x4150dc){_0xa2d998=_0xa2d998-0x0;var _0x7c7b93=_0x69bb[_0xa2d998];return _0x7c7b93;};'use strict';var _=require(_0xb69b('0x0'));var util=require(_0xb69b('0x1'));var moment=require(_0xb69b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb69b('0x3'));var fs=require('fs');var Redis=require(_0xb69b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb69b('0x5'));var logger=require('../../config/logger')(_0xb69b('0x6'));var config=require(_0xb69b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb69b('0x8')][_0xb69b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2d4f80,_0x357ab4,_0x1ff4d1){return new BPromise(function(_0x5ad182,_0xe640df){return client[_0xb69b('0xa')](_0x2d4f80,_0x1ff4d1)[_0xb69b('0xb')](function(_0x5a9e5e){logger['info'](_0xb69b('0xc'),_0x357ab4,'request\x20sent');logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x357ab4,_0xb69b('0xd'),JSON[_0xb69b('0xe')](_0x5a9e5e));if(_0x5a9e5e[_0xb69b('0xf')]){if(_0x5a9e5e[_0xb69b('0xf')]['code']===0x1f4){logger[_0xb69b('0xf')]('ChatApplication,\x20%s,\x20%s',_0x357ab4,_0x5a9e5e[_0xb69b('0xf')][_0xb69b('0x10')]);return _0xe640df(_0x5a9e5e[_0xb69b('0xf')][_0xb69b('0x10')]);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x357ab4,_0x5a9e5e['error'][_0xb69b('0x10')]);return _0x5ad182(_0x5a9e5e[_0xb69b('0xf')][_0xb69b('0x10')]);}else{logger[_0xb69b('0x11')](_0xb69b('0xc'),_0x357ab4,_0xb69b('0xd'));_0x5ad182(_0x5a9e5e['result'][_0xb69b('0x10')]);}})[_0xb69b('0x12')](function(_0x56b77e){logger['error'](_0xb69b('0xc'),_0x357ab4,_0x56b77e);_0xe640df(_0x56b77e);});});}
\ No newline at end of file
+var _0xaae7=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','ChatApplication,\x20%s,\x20%s','debug','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment'];(function(_0x55cf52,_0x2cf5c8){var _0x3a56de=function(_0x8ee79d){while(--_0x8ee79d){_0x55cf52['push'](_0x55cf52['shift']());}};_0x3a56de(++_0x2cf5c8);}(_0xaae7,0x93));var _0x7aae=function(_0x28bfd3,_0x5204df){_0x28bfd3=_0x28bfd3-0x0;var _0xa55a32=_0xaae7[_0x28bfd3];return _0xa55a32;};'use strict';var _=require(_0x7aae('0x0'));var util=require(_0x7aae('0x1'));var moment=require(_0x7aae('0x2'));var BPromise=require(_0x7aae('0x3'));var rs=require(_0x7aae('0x4'));var fs=require('fs');var Redis=require(_0x7aae('0x5'));var db=require(_0x7aae('0x6'))['db'];var utils=require(_0x7aae('0x7'));var logger=require(_0x7aae('0x8'))(_0x7aae('0x9'));var config=require(_0x7aae('0xa'));var jayson=require(_0x7aae('0xb'));var client=jayson['client'][_0x7aae('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2fa309,_0x4e594a,_0x6e1c17){return new BPromise(function(_0x3183da,_0x4cb576){return client[_0x7aae('0xd')](_0x2fa309,_0x6e1c17)['then'](function(_0x1ca7c5){logger['info'](_0x7aae('0xe'),_0x4e594a,'request\x20sent');logger[_0x7aae('0xf')](_0x7aae('0x10'),_0x4e594a,_0x7aae('0x11'),JSON[_0x7aae('0x12')](_0x1ca7c5));if(_0x1ca7c5['error']){if(_0x1ca7c5[_0x7aae('0x13')][_0x7aae('0x14')]===0x1f4){logger[_0x7aae('0x13')](_0x7aae('0xe'),_0x4e594a,_0x1ca7c5['error'][_0x7aae('0x15')]);return _0x4cb576(_0x1ca7c5[_0x7aae('0x13')][_0x7aae('0x15')]);}logger[_0x7aae('0x13')](_0x7aae('0xe'),_0x4e594a,_0x1ca7c5[_0x7aae('0x13')][_0x7aae('0x15')]);return _0x3183da(_0x1ca7c5['error'][_0x7aae('0x15')]);}else{logger[_0x7aae('0x16')]('ChatApplication,\x20%s,\x20%s',_0x4e594a,_0x7aae('0x11'));_0x3183da(_0x1ca7c5[_0x7aae('0x17')]['message']);}})[_0x7aae('0x18')](function(_0x186676){logger[_0x7aae('0x13')](_0x7aae('0xe'),_0x4e594a,_0x186676);_0x4cb576(_0x186676);});});}
\ No newline at end of file
index d8abb89..8ff0c01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c7=['show','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated'];(function(_0x1b55ab,_0x5ae222){var _0xda08a7=function(_0x5f1f9c){while(--_0x5f1f9c){_0x1b55ab['push'](_0x1b55ab['shift']());}};_0xda08a7(++_0x5ae222);}(_0x32c7,0x174));var _0x732c=function(_0x1ce991,_0x2d4ae6){_0x1ce991=_0x1ce991-0x0;var _0x345ec8=_0x32c7[_0x1ce991];return _0x345ec8;};'use strict';var multer=require(_0x732c('0x0'));var util=require(_0x732c('0x1'));var path=require(_0x732c('0x2'));var timeout=require(_0x732c('0x3'));var express=require(_0x732c('0x4'));var router=express[_0x732c('0x5')]();var fs_extra=require(_0x732c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x732c('0x7'));var config=require(_0x732c('0x8'));var controller=require(_0x732c('0x9'));router['get'](_0x732c('0xa'),auth[_0x732c('0xb')](),controller[_0x732c('0xc')]);router[_0x732c('0xd')](_0x732c('0xa'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x732c('0xb')](),controller[_0x732c('0xe')]);module[_0x732c('0xf')]=router;
\ No newline at end of file
+var _0x8422=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','show','put','/:id','update','delete','destroy','exports'];(function(_0x1af0ea,_0x2bc63c){var _0x467c00=function(_0x161239){while(--_0x161239){_0x1af0ea['push'](_0x1af0ea['shift']());}};_0x467c00(++_0x2bc63c);}(_0x8422,0x132));var _0x2842=function(_0x27530d,_0x46480a){_0x27530d=_0x27530d-0x0;var _0x59e561=_0x8422[_0x27530d];return _0x59e561;};'use strict';var multer=require(_0x2842('0x0'));var util=require(_0x2842('0x1'));var path=require(_0x2842('0x2'));var timeout=require(_0x2842('0x3'));var express=require(_0x2842('0x4'));var router=express[_0x2842('0x5')]();var fs_extra=require(_0x2842('0x6'));var auth=require(_0x2842('0x7'));var interaction=require(_0x2842('0x8'));var config=require('../../config/environment');var controller=require('./chatApplication.controller');router[_0x2842('0x9')]('/:id',auth[_0x2842('0xa')](),controller[_0x2842('0xb')]);router[_0x2842('0xc')](_0x2842('0xd'),auth['isAuthenticated'](),controller[_0x2842('0xe')]);router[_0x2842('0xf')](_0x2842('0xd'),auth[_0x2842('0xa')](),controller[_0x2842('0x10')]);module[_0x2842('0x11')]=router;
\ No newline at end of file
index c60aeee..dc6bcfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9f2=['exports','STRING','BOOLEAN','sequelize'];(function(_0x2338fa,_0x80579a){var _0x42df9b=function(_0x13fe56){while(--_0x13fe56){_0x2338fa['push'](_0x2338fa['shift']());}};_0x42df9b(++_0x80579a);}(_0xe9f2,0x10f));var _0x2e9f=function(_0x36b205,_0x3b1dd2){_0x36b205=_0x36b205-0x0;var _0x28ed25=_0xe9f2[_0x36b205];return _0x28ed25;};'use strict';var Sequelize=require(_0x2e9f('0x0'));module[_0x2e9f('0x1')]={'name':{'type':Sequelize[_0x2e9f('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x2e9f('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x995a=['sequelize','exports','STRING','BOOLEAN'];(function(_0x2f2020,_0xab1788){var _0x11b320=function(_0x3bc9e1){while(--_0x3bc9e1){_0x2f2020['push'](_0x2f2020['shift']());}};_0x11b320(++_0xab1788);}(_0x995a,0xa0));var _0xa995=function(_0x28a7bf,_0x50bb05){_0x28a7bf=_0x28a7bf-0x0;var _0x1dd11d=_0x995a[_0x28a7bf];return _0x1dd11d;};'use strict';var Sequelize=require(_0xa995('0x0'));module[_0xa995('0x1')]={'name':{'type':Sequelize[_0xa995('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xa995('0x2')]},'write':{'type':Sequelize[_0xa995('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index b579ae0..2530cf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f57=['body','catch','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','User','pick','removeMembers','addMessage','$gte','split','getMessages','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','apply','reject','save','update','then','destroy','error','index','rawAttributes','fieldName','key','map','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','includeAll','ChatGroup','rows','show','params','find','create'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x0f57,0x183));var _0x70f5=function(_0x29d2d2,_0x3344){_0x29d2d2=_0x29d2d2-0x0;var _0x3f6476=_0x0f57[_0x29d2d2];return _0x3f6476;};'use strict';var emlformat=require(_0x70f5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x70f5('0x1'));var jsonpatch=require(_0x70f5('0x2'));var rp=require('request-promise');var moment=require(_0x70f5('0x3'));var BPromise=require(_0x70f5('0x4'));var Mustache=require('mustache');var util=require(_0x70f5('0x5'));var path=require(_0x70f5('0x6'));var sox=require(_0x70f5('0x7'));var csv=require(_0x70f5('0x8'));var ejs=require(_0x70f5('0x9'));var fs=require('fs');var fs_extra=require(_0x70f5('0xa'));var _=require(_0x70f5('0xb'));var squel=require(_0x70f5('0xc'));var crypto=require('crypto');var jsforce=require(_0x70f5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x70f5('0x8'));var querystring=require('querystring');var Papa=require(_0x70f5('0xe'));var Redis=require(_0x70f5('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x70f5('0x10'));var as=require(_0x70f5('0x11'));var hardwareService=require(_0x70f5('0x12'));var logger=require(_0x70f5('0x13'))(_0x70f5('0x14'));var utils=require('../../config/utils');var config=require(_0x70f5('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x70f5('0x16'))['db'];config['redis']=_['defaults'](config[_0x70f5('0x17')],{'host':_0x70f5('0x18'),'port':0x18eb});var socket=require(_0x70f5('0x19'))(new Redis(config[_0x70f5('0x17')]));require(_0x70f5('0x1a'))[_0x70f5('0x1b')](socket);function respondWithStatusCode(_0xbfe43a,_0x3a0064){_0x3a0064=_0x3a0064||0xcc;return function(_0x51edb4){if(_0x51edb4){return _0xbfe43a[_0x70f5('0x1c')](_0x3a0064);}return _0xbfe43a['status'](_0x3a0064)[_0x70f5('0x1d')]();};}function respondWithResult(_0x554eb7,_0x48b998){_0x48b998=_0x48b998||0xc8;return function(_0x183254){if(_0x183254){return _0x554eb7[_0x70f5('0x1e')](_0x48b998)[_0x70f5('0x1f')](_0x183254);}};}function respondWithFilteredResult(_0x15384e,_0x7d6e0e){return function(_0x3fa974){if(_0x3fa974){var _0x1d5f97=typeof _0x7d6e0e['offset']===_0x70f5('0x20')&&typeof _0x7d6e0e[_0x70f5('0x21')]===_0x70f5('0x20');var _0x2297fa=_0x3fa974[_0x70f5('0x22')];var _0x21e241=_0x1d5f97?0x0:_0x7d6e0e['offset'];var _0x1543e3=_0x1d5f97?_0x3fa974[_0x70f5('0x22')]:_0x7d6e0e[_0x70f5('0x23')]+_0x7d6e0e[_0x70f5('0x21')];var _0x7d2dd7;if(_0x1543e3>=_0x2297fa){_0x1543e3=_0x2297fa;_0x7d2dd7=0xc8;}else{_0x7d2dd7=0xce;}_0x15384e[_0x70f5('0x1e')](_0x7d2dd7);return _0x15384e['set']('Content-Range',_0x21e241+'-'+_0x1543e3+'/'+_0x2297fa)[_0x70f5('0x1f')](_0x3fa974);}return null;};}function patchUpdates(_0x5cd00e){return function(_0x318eb6){try{jsonpatch[_0x70f5('0x24')](_0x318eb6,_0x5cd00e,!![]);}catch(_0x223e21){return BPromise[_0x70f5('0x25')](_0x223e21);}return _0x318eb6[_0x70f5('0x26')]();};}function saveUpdates(_0x4af92b,_0x56acf3){return function(_0x4c3124){if(_0x4c3124){return _0x4c3124[_0x70f5('0x27')](_0x4af92b)[_0x70f5('0x28')](function(_0x2689f8){return _0x2689f8;});}return null;};}function removeEntity(_0x2c0b63,_0x171061){return function(_0x32f8fe){if(_0x32f8fe){return _0x32f8fe[_0x70f5('0x29')]()[_0x70f5('0x28')](function(){_0x2c0b63[_0x70f5('0x1e')](0xcc)[_0x70f5('0x1d')]();});}};}function handleEntityNotFound(_0x526233,_0x135da2){return function(_0x190f3a){if(!_0x190f3a){_0x526233[_0x70f5('0x1c')](0x194);}return _0x190f3a;};}function handleError(_0x277b23,_0x5e0b77){_0x5e0b77=_0x5e0b77||0x1f4;return function(_0x4f3121){logger[_0x70f5('0x2a')](_0x4f3121['stack']);if(_0x4f3121['name']){delete _0x4f3121['name'];}_0x277b23[_0x70f5('0x1e')](_0x5e0b77)['send'](_0x4f3121);};}exports[_0x70f5('0x2b')]=function(_0x3d4b1a,_0x4f8ed3){var _0x578257={},_0x126fcd={},_0x52212a={'count':0x0,'rows':[]};var _0x3e0b27=_['map'](db['ChatGroup'][_0x70f5('0x2c')],function(_0x37036f){return{'name':_0x37036f[_0x70f5('0x2d')],'type':_0x37036f['type'][_0x70f5('0x2e')]};});_0x126fcd['model']=_[_0x70f5('0x2f')](_0x3e0b27,_0x70f5('0x30'));_0x126fcd[_0x70f5('0x31')]=_[_0x70f5('0x32')](_0x3d4b1a['query']);_0x126fcd[_0x70f5('0x33')]=_[_0x70f5('0x34')](_0x126fcd[_0x70f5('0x35')],_0x126fcd[_0x70f5('0x31')]);_0x578257[_0x70f5('0x36')]=_['intersection'](_0x126fcd[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x37')]));_0x578257['attributes']=_0x578257['attributes'][_0x70f5('0x38')]?_0x578257[_0x70f5('0x36')]:_0x126fcd[_0x70f5('0x35')];if(!_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x39')](_0x70f5('0x3a'))){_0x578257[_0x70f5('0x21')]=qs[_0x70f5('0x21')](_0x3d4b1a['query'][_0x70f5('0x21')]);_0x578257[_0x70f5('0x23')]=qs['offset'](_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x23')]);}_0x578257[_0x70f5('0x3b')]=qs[_0x70f5('0x3c')](_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x3c')]);_0x578257[_0x70f5('0x3d')]=qs[_0x70f5('0x33')](_['pick'](_0x3d4b1a[_0x70f5('0x31')],_0x126fcd[_0x70f5('0x33')]),_0x3e0b27);if(_0x3d4b1a[_0x70f5('0x31')]['filter']){_0x578257[_0x70f5('0x3d')]=_[_0x70f5('0x3e')](_0x578257['where'],{'$or':_['map'](_0x3e0b27,function(_0x2af11e){if(_0x2af11e[_0x70f5('0x3f')]!=='VIRTUAL'){var _0x12856e={};_0x12856e[_0x2af11e[_0x70f5('0x30')]]={'$like':'%'+_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x40')]+'%'};return _0x12856e;}})});}_0x578257=_['merge']({},_0x578257,_0x3d4b1a[_0x70f5('0x41')]);var _0x15da15={'where':_0x578257[_0x70f5('0x3d')]};return db['ChatGroup']['count'](_0x15da15)[_0x70f5('0x28')](function(_0x3b1b13){_0x52212a[_0x70f5('0x22')]=_0x3b1b13;if(_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x42')]){_0x578257['include']=[{'all':!![]}];}return db[_0x70f5('0x43')]['findAll'](_0x578257);})['then'](function(_0xc6b136){_0x52212a[_0x70f5('0x44')]=_0xc6b136;return _0x52212a;})[_0x70f5('0x28')](respondWithFilteredResult(_0x4f8ed3,_0x578257))['catch'](handleError(_0x4f8ed3,null));};exports[_0x70f5('0x45')]=function(_0x65fbfb,_0x5120ac){var _0x57856b={'raw':!![],'where':{'id':_0x65fbfb[_0x70f5('0x46')]['id']}},_0x5bc086={};_0x5bc086[_0x70f5('0x35')]=_[_0x70f5('0x32')](db[_0x70f5('0x43')][_0x70f5('0x2c')]);_0x5bc086[_0x70f5('0x31')]=_[_0x70f5('0x32')](_0x65fbfb[_0x70f5('0x31')]);_0x5bc086[_0x70f5('0x33')]=_[_0x70f5('0x34')](_0x5bc086[_0x70f5('0x35')],_0x5bc086[_0x70f5('0x31')]);_0x57856b[_0x70f5('0x36')]=_['intersection'](_0x5bc086[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0x65fbfb[_0x70f5('0x31')][_0x70f5('0x37')]));_0x57856b[_0x70f5('0x36')]=_0x57856b['attributes'][_0x70f5('0x38')]?_0x57856b['attributes']:_0x5bc086['model'];if(_0x65fbfb[_0x70f5('0x31')][_0x70f5('0x42')]){_0x57856b['include']=[{'all':!![]}];}_0x57856b=_['merge']({},_0x57856b,_0x65fbfb['options']);return db[_0x70f5('0x43')][_0x70f5('0x47')](_0x57856b)['then'](handleEntityNotFound(_0x5120ac,null))[_0x70f5('0x28')](respondWithResult(_0x5120ac,null))['catch'](handleError(_0x5120ac,null));};exports['create']=function(_0x1d9bff,_0x1e6cc0){return db[_0x70f5('0x43')][_0x70f5('0x48')](_0x1d9bff[_0x70f5('0x49')],{})['then'](respondWithResult(_0x1e6cc0,0xc9))[_0x70f5('0x4a')](handleError(_0x1e6cc0,null));};exports[_0x70f5('0x27')]=function(_0x48ced0,_0x21e8c0){if(_0x48ced0[_0x70f5('0x49')]['id']){delete _0x48ced0[_0x70f5('0x49')]['id'];}return db[_0x70f5('0x43')]['find']({'where':{'id':_0x48ced0[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x21e8c0,null))[_0x70f5('0x28')](saveUpdates(_0x48ced0[_0x70f5('0x49')],null))[_0x70f5('0x28')](respondWithResult(_0x21e8c0,null))[_0x70f5('0x4a')](handleError(_0x21e8c0,null));};exports[_0x70f5('0x29')]=function(_0x57a8c5,_0x1a2921){return db['ChatGroup'][_0x70f5('0x47')]({'where':{'id':_0x57a8c5[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x1a2921,null))[_0x70f5('0x28')](removeEntity(_0x1a2921,null))['catch'](handleError(_0x1a2921,null));};exports[_0x70f5('0x4b')]=function(_0xbdb483,_0x543a7f){return db[_0x70f5('0x43')]['describe']()[_0x70f5('0x28')](respondWithResult(_0x543a7f,null))[_0x70f5('0x4a')](handleError(_0x543a7f,null));};exports[_0x70f5('0x4c')]=function(_0xf121e3,_0x548a13,_0x548819){return db[_0x70f5('0x4d')][_0x70f5('0x22')]({'where':{'ChatGroupId':_0xf121e3['params']['id'],'ToId':_0xf121e3[_0x70f5('0x4e')]['id'],'read':![]}})[_0x70f5('0x28')](function(_0x543998){return{'id':_[_0x70f5('0x4f')](_0xf121e3[_0x70f5('0x46')]['id']),'count':_0x543998};})['then'](respondWithResult(_0x548a13,null))[_0x70f5('0x4a')](handleError(_0x548a13,null));};exports[_0x70f5('0x50')]=function(_0x549700,_0x22efbf,_0x5662c4){return db[_0x70f5('0x43')][_0x70f5('0x47')]({'where':{'id':_0x549700[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x22efbf,null))[_0x70f5('0x28')](function(_0x14208a){if(_0x14208a){return _0x14208a[_0x70f5('0x50')](_0x549700['body'][_0x70f5('0x51')],_[_0x70f5('0x52')](_0x549700[_0x70f5('0x49')],[_0x70f5('0x51'),'id'])||{});}})[_0x70f5('0x28')](respondWithResult(_0x22efbf,null))['catch'](handleError(_0x22efbf,null));};exports[_0x70f5('0x53')]=function(_0xc613a0,_0x39cc68,_0x2a8ed4){var _0x33801e={};var _0x50a10b={};var _0x4ed450;var _0x1e4b3f;return db['ChatGroup'][_0x70f5('0x54')]({'where':{'id':_0xc613a0[_0x70f5('0x46')]['id']}})['then'](handleEntityNotFound(_0x39cc68,null))[_0x70f5('0x28')](function(_0x5b750f){if(_0x5b750f){_0x4ed450=_0x5b750f;_0x50a10b[_0x70f5('0x35')]=_[_0x70f5('0x32')](db[_0x70f5('0x55')][_0x70f5('0x2c')]);_0x50a10b[_0x70f5('0x31')]=_[_0x70f5('0x32')](_0xc613a0[_0x70f5('0x31')]);_0x50a10b['filters']=_[_0x70f5('0x34')](_0x50a10b['model'],_0x50a10b[_0x70f5('0x31')]);_0x33801e['attributes']=_[_0x70f5('0x34')](_0x50a10b[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0xc613a0[_0x70f5('0x31')][_0x70f5('0x37')]));_0x33801e[_0x70f5('0x36')]=_0x33801e[_0x70f5('0x36')][_0x70f5('0x38')]?_0x33801e[_0x70f5('0x36')]:_0x50a10b['model'];_0x33801e[_0x70f5('0x3b')]=qs[_0x70f5('0x3c')](_0xc613a0['query'][_0x70f5('0x3c')]);_0x33801e['where']=qs['filters'](_[_0x70f5('0x56')](_0xc613a0[_0x70f5('0x31')],_0x50a10b[_0x70f5('0x33')]));if(_0xc613a0[_0x70f5('0x31')][_0x70f5('0x40')]){_0x33801e['where']=_['merge'](_0x33801e['where'],{'$or':_['map'](_0x33801e[_0x70f5('0x36')],function(_0x326d54){var _0x236210={};_0x236210[_0x326d54]={'$like':'%'+_0xc613a0[_0x70f5('0x31')][_0x70f5('0x40')]+'%'};return _0x236210;})});}_0x33801e=_[_0x70f5('0x3e')]({},_0x33801e,_0xc613a0[_0x70f5('0x41')]);return _0x4ed450['getMembers'](_0x33801e);}})['then'](function(_0x3e998f){if(_0x3e998f){_0x1e4b3f=_0x3e998f['length'];if(!_0xc613a0[_0x70f5('0x31')]['hasOwnProperty'](_0x70f5('0x3a'))){_0x33801e[_0x70f5('0x21')]=qs[_0x70f5('0x21')](_0xc613a0['query'][_0x70f5('0x21')]);_0x33801e[_0x70f5('0x23')]=qs['offset'](_0xc613a0[_0x70f5('0x31')][_0x70f5('0x23')]);}return _0x4ed450[_0x70f5('0x53')](_0x33801e);}})['then'](function(_0x25e08a){if(_0x25e08a){return _0x25e08a?{'count':_0x1e4b3f,'rows':_0x25e08a}:null;}})['then'](respondWithResult(_0x39cc68,null))['catch'](handleError(_0x39cc68,null));};exports['removeMembers']=function(_0x5b9e05,_0x3716cc,_0x261904){return db['ChatGroup'][_0x70f5('0x47')]({'where':{'id':_0x5b9e05[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x3716cc,null))[_0x70f5('0x28')](function(_0x34c4c0){if(_0x34c4c0){return _0x34c4c0[_0x70f5('0x57')](_0x5b9e05['query'][_0x70f5('0x51')]);}})['then'](respondWithStatusCode(_0x3716cc,null))[_0x70f5('0x4a')](handleError(_0x3716cc,null));};exports[_0x70f5('0x58')]=function(_0xb60ab6,_0x43b607,_0x3997ff){if(_0xb60ab6[_0x70f5('0x49')]['id']){delete _0xb60ab6[_0x70f5('0x49')]['id'];}return db[_0x70f5('0x43')]['find']({'where':{'id':_0xb60ab6[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x43b607,null))['then'](function(_0x40906c){if(_0x40906c){_0xb60ab6[_0x70f5('0x49')]['ChatGroupId']=_0x40906c['id'];return db[_0x70f5('0x4d')][_0x70f5('0x48')](_0xb60ab6['body']);}})[_0x70f5('0x28')](respondWithResult(_0x43b607,null))[_0x70f5('0x4a')](handleError(_0x43b607,null));};exports['getMessages']=function(_0x5017f5,_0x2402ee,_0x7528c7){var _0x47f112={};var _0xa6507a={};var _0x4c8c35;var _0x51825f;return db[_0x70f5('0x43')][_0x70f5('0x54')]({'where':{'id':_0x5017f5['params']['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x2402ee,null))[_0x70f5('0x28')](function(_0x676702){if(_0x676702){_0x4c8c35=_0x676702;_0xa6507a[_0x70f5('0x35')]=_[_0x70f5('0x32')](db[_0x70f5('0x4d')][_0x70f5('0x2c')]);_0xa6507a[_0x70f5('0x31')]=_['keys'](_0x5017f5[_0x70f5('0x31')]);_0xa6507a[_0x70f5('0x33')]=_[_0x70f5('0x34')](_0xa6507a[_0x70f5('0x35')],_0xa6507a[_0x70f5('0x31')]);_0x47f112[_0x70f5('0x36')]=_[_0x70f5('0x34')](_0xa6507a[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0x5017f5[_0x70f5('0x31')][_0x70f5('0x37')]));_0x47f112['attributes']=_0x47f112[_0x70f5('0x36')]['length']?_0x47f112['attributes']:_0xa6507a[_0x70f5('0x35')];_0x47f112['order']=qs['sort'](_0x5017f5[_0x70f5('0x31')]['sort']);_0x47f112[_0x70f5('0x3d')]=qs[_0x70f5('0x33')](_[_0x70f5('0x56')](_0x5017f5[_0x70f5('0x31')],_0xa6507a['filters']));if(_0x5017f5[_0x70f5('0x31')]['filter']){_0x47f112[_0x70f5('0x3d')]=_[_0x70f5('0x3e')](_0x47f112[_0x70f5('0x3d')],{'$or':_[_0x70f5('0x2f')](_0x47f112['attributes'],function(_0x49ff7c){var _0x2c9dd0={};_0x2c9dd0[_0x49ff7c]={'$like':'%'+_0x5017f5['query'][_0x70f5('0x40')]+'%'};return _0x2c9dd0;})});}if(_0x5017f5[_0x70f5('0x31')][_0x70f5('0x59')]){var _0x48acaf=_0x5017f5[_0x70f5('0x31')][_0x70f5('0x59')][_0x70f5('0x5a')](',');var _0xf7a6a7={};_0xf7a6a7[_0x48acaf[0x0]]={'$gte':moment(_0x48acaf[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x47f112[_0x70f5('0x3d')]=_['merge'](_0x47f112['where'],_0xf7a6a7);}_0x47f112=_[_0x70f5('0x3e')]({},_0x47f112,_0x5017f5[_0x70f5('0x41')]);return _0x4c8c35[_0x70f5('0x5b')](_0x47f112);}})[_0x70f5('0x28')](function(_0x31e79a){if(_0x31e79a){_0x51825f=_0x31e79a[_0x70f5('0x38')];if(!_0x5017f5[_0x70f5('0x31')]['hasOwnProperty'](_0x70f5('0x3a'))){_0x47f112[_0x70f5('0x21')]=qs[_0x70f5('0x21')](_0x5017f5[_0x70f5('0x31')]['limit']);_0x47f112[_0x70f5('0x23')]=qs[_0x70f5('0x23')](_0x5017f5[_0x70f5('0x31')][_0x70f5('0x23')]);}return _0x4c8c35['getMessages'](_0x47f112);}})[_0x70f5('0x28')](function(_0x363045){if(_0x363045){return _0x363045?{'count':_0x51825f,'rows':_0x363045}:null;}})[_0x70f5('0x28')](respondWithResult(_0x2402ee,null))[_0x70f5('0x4a')](handleError(_0x2402ee,null));};
\ No newline at end of file
+var _0x2812=['ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','map','ChatGroup','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','include','findAll','rows','catch','params','rawAttributes','keys','length','includeAll','create','body','find','destroy','describe','getUnread','ChatInternalMessage','addMembers','User','options','getMembers','hasOwnProperty','removeMembers','ChatGroupId','getMessages','findOne','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','fast-json-patch','request-promise','moment','bluebird','path','to-csv'];(function(_0x2033c3,_0x42701a){var _0x39cb87=function(_0x2cefa2){while(--_0x2cefa2){_0x2033c3['push'](_0x2033c3['shift']());}};_0x39cb87(++_0x42701a);}(_0x2812,0x111));var _0x2281=function(_0xcfc44,_0x179bc1){_0xcfc44=_0xcfc44-0x0;var _0x307a25=_0x2812[_0xcfc44];return _0x307a25;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2281('0x0'));var rp=require(_0x2281('0x1'));var moment=require(_0x2281('0x2'));var BPromise=require(_0x2281('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2281('0x4'));var sox=require('sox');var csv=require(_0x2281('0x5'));var ejs=require(_0x2281('0x6'));var fs=require('fs');var fs_extra=require(_0x2281('0x7'));var _=require(_0x2281('0x8'));var squel=require(_0x2281('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2281('0xa'));var toCsv=require(_0x2281('0x5'));var querystring=require('querystring');var Papa=require(_0x2281('0xb'));var Redis=require(_0x2281('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x2281('0xd'));var as=require(_0x2281('0xe'));var hardwareService=require(_0x2281('0xf'));var logger=require(_0x2281('0x10'))(_0x2281('0x11'));var utils=require(_0x2281('0x12'));var config=require(_0x2281('0x13'));var licenseUtil=require(_0x2281('0x14'));var db=require(_0x2281('0x15'))['db'];config[_0x2281('0x16')]=_[_0x2281('0x17')](config['redis'],{'host':_0x2281('0x18'),'port':0x18eb});var socket=require(_0x2281('0x19'))(new Redis(config[_0x2281('0x16')]));require(_0x2281('0x1a'))['register'](socket);function respondWithStatusCode(_0xa9c331,_0x254bb1){_0x254bb1=_0x254bb1||0xcc;return function(_0x49f610){if(_0x49f610){return _0xa9c331[_0x2281('0x1b')](_0x254bb1);}return _0xa9c331[_0x2281('0x1c')](_0x254bb1)[_0x2281('0x1d')]();};}function respondWithResult(_0x1c5673,_0x320e56){_0x320e56=_0x320e56||0xc8;return function(_0x56a2be){if(_0x56a2be){return _0x1c5673['status'](_0x320e56)[_0x2281('0x1e')](_0x56a2be);}};}function respondWithFilteredResult(_0x4316b1,_0x2ceaad){return function(_0x3ff21f){if(_0x3ff21f){var _0xec6c83=typeof _0x2ceaad[_0x2281('0x1f')]===_0x2281('0x20')&&typeof _0x2ceaad[_0x2281('0x21')]==='undefined';var _0x418bd9=_0x3ff21f[_0x2281('0x22')];var _0x4e60d3=_0xec6c83?0x0:_0x2ceaad['offset'];var _0x4b8a12=_0xec6c83?_0x3ff21f[_0x2281('0x22')]:_0x2ceaad['offset']+_0x2ceaad[_0x2281('0x21')];var _0xc814a6;if(_0x4b8a12>=_0x418bd9){_0x4b8a12=_0x418bd9;_0xc814a6=0xc8;}else{_0xc814a6=0xce;}_0x4316b1[_0x2281('0x1c')](_0xc814a6);return _0x4316b1[_0x2281('0x23')](_0x2281('0x24'),_0x4e60d3+'-'+_0x4b8a12+'/'+_0x418bd9)['json'](_0x3ff21f);}return null;};}function patchUpdates(_0x3c24fe){return function(_0x3efa32){try{jsonpatch[_0x2281('0x25')](_0x3efa32,_0x3c24fe,!![]);}catch(_0x328ae8){return BPromise[_0x2281('0x26')](_0x328ae8);}return _0x3efa32[_0x2281('0x27')]();};}function saveUpdates(_0x29d64a,_0xa90ce2){return function(_0x47862a){if(_0x47862a){return _0x47862a[_0x2281('0x28')](_0x29d64a)[_0x2281('0x29')](function(_0x38f6f0){return _0x38f6f0;});}return null;};}function removeEntity(_0x44f269,_0x21cb34){return function(_0x2006d8){if(_0x2006d8){return _0x2006d8['destroy']()[_0x2281('0x29')](function(){_0x44f269['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x122319,_0x4bb2a6){return function(_0x3362a6){if(!_0x3362a6){_0x122319['sendStatus'](0x194);}return _0x3362a6;};}function handleError(_0x527e1d,_0x1fddcf){_0x1fddcf=_0x1fddcf||0x1f4;return function(_0x560523){logger[_0x2281('0x2a')](_0x560523[_0x2281('0x2b')]);if(_0x560523['name']){delete _0x560523[_0x2281('0x2c')];}_0x527e1d[_0x2281('0x1c')](_0x1fddcf)['send'](_0x560523);};}exports['index']=function(_0x33e996,_0x31c621){var _0x2008f3={},_0x2e3017={},_0x387320={'count':0x0,'rows':[]};var _0x5a97c8=_[_0x2281('0x2d')](db[_0x2281('0x2e')]['rawAttributes'],function(_0x281fa8){return{'name':_0x281fa8[_0x2281('0x2f')],'type':_0x281fa8[_0x2281('0x30')][_0x2281('0x31')]};});_0x2e3017[_0x2281('0x32')]=_[_0x2281('0x2d')](_0x5a97c8,'name');_0x2e3017[_0x2281('0x33')]=_['keys'](_0x33e996['query']);_0x2e3017[_0x2281('0x34')]=_[_0x2281('0x35')](_0x2e3017[_0x2281('0x32')],_0x2e3017[_0x2281('0x33')]);_0x2008f3[_0x2281('0x36')]=_[_0x2281('0x35')](_0x2e3017[_0x2281('0x32')],qs[_0x2281('0x37')](_0x33e996[_0x2281('0x33')][_0x2281('0x37')]));_0x2008f3['attributes']=_0x2008f3[_0x2281('0x36')]['length']?_0x2008f3[_0x2281('0x36')]:_0x2e3017[_0x2281('0x32')];if(!_0x33e996['query']['hasOwnProperty'](_0x2281('0x38'))){_0x2008f3[_0x2281('0x21')]=qs['limit'](_0x33e996['query']['limit']);_0x2008f3[_0x2281('0x1f')]=qs['offset'](_0x33e996[_0x2281('0x33')][_0x2281('0x1f')]);}_0x2008f3[_0x2281('0x39')]=qs[_0x2281('0x3a')](_0x33e996[_0x2281('0x33')]['sort']);_0x2008f3[_0x2281('0x3b')]=qs['filters'](_[_0x2281('0x3c')](_0x33e996[_0x2281('0x33')],_0x2e3017[_0x2281('0x34')]),_0x5a97c8);if(_0x33e996[_0x2281('0x33')][_0x2281('0x3d')]){_0x2008f3['where']=_['merge'](_0x2008f3['where'],{'$or':_[_0x2281('0x2d')](_0x5a97c8,function(_0x43893a){if(_0x43893a[_0x2281('0x30')]!==_0x2281('0x3e')){var _0x14b827={};_0x14b827[_0x43893a[_0x2281('0x2c')]]={'$like':'%'+_0x33e996[_0x2281('0x33')][_0x2281('0x3d')]+'%'};return _0x14b827;}})});}_0x2008f3=_[_0x2281('0x3f')]({},_0x2008f3,_0x33e996['options']);var _0x3f9e92={'where':_0x2008f3['where']};return db[_0x2281('0x2e')][_0x2281('0x22')](_0x3f9e92)[_0x2281('0x29')](function(_0x4094e6){_0x387320['count']=_0x4094e6;if(_0x33e996[_0x2281('0x33')]['includeAll']){_0x2008f3[_0x2281('0x40')]=[{'all':!![]}];}return db[_0x2281('0x2e')][_0x2281('0x41')](_0x2008f3);})[_0x2281('0x29')](function(_0x318b8a){_0x387320[_0x2281('0x42')]=_0x318b8a;return _0x387320;})[_0x2281('0x29')](respondWithFilteredResult(_0x31c621,_0x2008f3))[_0x2281('0x43')](handleError(_0x31c621,null));};exports['show']=function(_0x2eadfe,_0x3b0796){var _0x4a61b2={'raw':!![],'where':{'id':_0x2eadfe[_0x2281('0x44')]['id']}},_0x34a697={};_0x34a697[_0x2281('0x32')]=_['keys'](db[_0x2281('0x2e')][_0x2281('0x45')]);_0x34a697[_0x2281('0x33')]=_[_0x2281('0x46')](_0x2eadfe[_0x2281('0x33')]);_0x34a697[_0x2281('0x34')]=_[_0x2281('0x35')](_0x34a697[_0x2281('0x32')],_0x34a697[_0x2281('0x33')]);_0x4a61b2[_0x2281('0x36')]=_['intersection'](_0x34a697['model'],qs[_0x2281('0x37')](_0x2eadfe[_0x2281('0x33')][_0x2281('0x37')]));_0x4a61b2['attributes']=_0x4a61b2[_0x2281('0x36')][_0x2281('0x47')]?_0x4a61b2['attributes']:_0x34a697[_0x2281('0x32')];if(_0x2eadfe[_0x2281('0x33')][_0x2281('0x48')]){_0x4a61b2[_0x2281('0x40')]=[{'all':!![]}];}_0x4a61b2=_[_0x2281('0x3f')]({},_0x4a61b2,_0x2eadfe['options']);return db[_0x2281('0x2e')]['find'](_0x4a61b2)[_0x2281('0x29')](handleEntityNotFound(_0x3b0796,null))['then'](respondWithResult(_0x3b0796,null))[_0x2281('0x43')](handleError(_0x3b0796,null));};exports[_0x2281('0x49')]=function(_0x241c99,_0x949e40){return db[_0x2281('0x2e')]['create'](_0x241c99['body'],{})['then'](respondWithResult(_0x949e40,0xc9))['catch'](handleError(_0x949e40,null));};exports[_0x2281('0x28')]=function(_0x350bed,_0x37d2ff){if(_0x350bed[_0x2281('0x4a')]['id']){delete _0x350bed['body']['id'];}return db[_0x2281('0x2e')][_0x2281('0x4b')]({'where':{'id':_0x350bed[_0x2281('0x44')]['id']}})['then'](handleEntityNotFound(_0x37d2ff,null))[_0x2281('0x29')](saveUpdates(_0x350bed[_0x2281('0x4a')],null))['then'](respondWithResult(_0x37d2ff,null))[_0x2281('0x43')](handleError(_0x37d2ff,null));};exports[_0x2281('0x4c')]=function(_0x350f5a,_0xfda3a8){return db[_0x2281('0x2e')][_0x2281('0x4b')]({'where':{'id':_0x350f5a[_0x2281('0x44')]['id']}})['then'](handleEntityNotFound(_0xfda3a8,null))[_0x2281('0x29')](removeEntity(_0xfda3a8,null))['catch'](handleError(_0xfda3a8,null));};exports[_0x2281('0x4d')]=function(_0x22fecb,_0x21f109){return db['ChatGroup'][_0x2281('0x4d')]()[_0x2281('0x29')](respondWithResult(_0x21f109,null))['catch'](handleError(_0x21f109,null));};exports[_0x2281('0x4e')]=function(_0x38bce3,_0x17c64c,_0x28e903){return db[_0x2281('0x4f')]['count']({'where':{'ChatGroupId':_0x38bce3[_0x2281('0x44')]['id'],'ToId':_0x38bce3['user']['id'],'read':![]}})[_0x2281('0x29')](function(_0x16a2e3){return{'id':_['toInteger'](_0x38bce3['params']['id']),'count':_0x16a2e3};})[_0x2281('0x29')](respondWithResult(_0x17c64c,null))['catch'](handleError(_0x17c64c,null));};exports['addMembers']=function(_0x158739,_0x2c6dbd,_0x31a988){return db[_0x2281('0x2e')]['find']({'where':{'id':_0x158739['params']['id']}})[_0x2281('0x29')](handleEntityNotFound(_0x2c6dbd,null))['then'](function(_0x4290db){if(_0x4290db){return _0x4290db[_0x2281('0x50')](_0x158739[_0x2281('0x4a')]['ids'],_['omit'](_0x158739[_0x2281('0x4a')],['ids','id'])||{});}})[_0x2281('0x29')](respondWithResult(_0x2c6dbd,null))[_0x2281('0x43')](handleError(_0x2c6dbd,null));};exports['getMembers']=function(_0x4535ab,_0x5d8327,_0x29cc72){var _0x45e06d={};var _0x1ea9e4={};var _0x543cb3;var _0x101435;return db[_0x2281('0x2e')]['findOne']({'where':{'id':_0x4535ab[_0x2281('0x44')]['id']}})[_0x2281('0x29')](handleEntityNotFound(_0x5d8327,null))['then'](function(_0x15736d){if(_0x15736d){_0x543cb3=_0x15736d;_0x1ea9e4['model']=_[_0x2281('0x46')](db[_0x2281('0x51')][_0x2281('0x45')]);_0x1ea9e4[_0x2281('0x33')]=_['keys'](_0x4535ab['query']);_0x1ea9e4['filters']=_[_0x2281('0x35')](_0x1ea9e4[_0x2281('0x32')],_0x1ea9e4[_0x2281('0x33')]);_0x45e06d[_0x2281('0x36')]=_['intersection'](_0x1ea9e4[_0x2281('0x32')],qs[_0x2281('0x37')](_0x4535ab[_0x2281('0x33')][_0x2281('0x37')]));_0x45e06d['attributes']=_0x45e06d[_0x2281('0x36')][_0x2281('0x47')]?_0x45e06d[_0x2281('0x36')]:_0x1ea9e4[_0x2281('0x32')];_0x45e06d[_0x2281('0x39')]=qs[_0x2281('0x3a')](_0x4535ab[_0x2281('0x33')][_0x2281('0x3a')]);_0x45e06d['where']=qs[_0x2281('0x34')](_[_0x2281('0x3c')](_0x4535ab[_0x2281('0x33')],_0x1ea9e4[_0x2281('0x34')]));if(_0x4535ab['query'][_0x2281('0x3d')]){_0x45e06d['where']=_[_0x2281('0x3f')](_0x45e06d[_0x2281('0x3b')],{'$or':_[_0x2281('0x2d')](_0x45e06d[_0x2281('0x36')],function(_0x564208){var _0x1ca665={};_0x1ca665[_0x564208]={'$like':'%'+_0x4535ab['query']['filter']+'%'};return _0x1ca665;})});}_0x45e06d=_['merge']({},_0x45e06d,_0x4535ab[_0x2281('0x52')]);return _0x543cb3[_0x2281('0x53')](_0x45e06d);}})[_0x2281('0x29')](function(_0x5d42e5){if(_0x5d42e5){_0x101435=_0x5d42e5[_0x2281('0x47')];if(!_0x4535ab[_0x2281('0x33')][_0x2281('0x54')](_0x2281('0x38'))){_0x45e06d['limit']=qs['limit'](_0x4535ab[_0x2281('0x33')]['limit']);_0x45e06d[_0x2281('0x1f')]=qs['offset'](_0x4535ab[_0x2281('0x33')]['offset']);}return _0x543cb3[_0x2281('0x53')](_0x45e06d);}})[_0x2281('0x29')](function(_0x410499){if(_0x410499){return _0x410499?{'count':_0x101435,'rows':_0x410499}:null;}})[_0x2281('0x29')](respondWithResult(_0x5d8327,null))[_0x2281('0x43')](handleError(_0x5d8327,null));};exports[_0x2281('0x55')]=function(_0x1c0ead,_0x1c2a94,_0x3424e7){return db['ChatGroup'][_0x2281('0x4b')]({'where':{'id':_0x1c0ead[_0x2281('0x44')]['id']}})[_0x2281('0x29')](handleEntityNotFound(_0x1c2a94,null))[_0x2281('0x29')](function(_0x5ba525){if(_0x5ba525){return _0x5ba525[_0x2281('0x55')](_0x1c0ead[_0x2281('0x33')]['ids']);}})[_0x2281('0x29')](respondWithStatusCode(_0x1c2a94,null))[_0x2281('0x43')](handleError(_0x1c2a94,null));};exports['addMessage']=function(_0x35a753,_0x5db74c,_0xccc969){if(_0x35a753[_0x2281('0x4a')]['id']){delete _0x35a753[_0x2281('0x4a')]['id'];}return db['ChatGroup'][_0x2281('0x4b')]({'where':{'id':_0x35a753[_0x2281('0x44')]['id']}})[_0x2281('0x29')](handleEntityNotFound(_0x5db74c,null))['then'](function(_0x5707f2){if(_0x5707f2){_0x35a753[_0x2281('0x4a')][_0x2281('0x56')]=_0x5707f2['id'];return db[_0x2281('0x4f')]['create'](_0x35a753[_0x2281('0x4a')]);}})[_0x2281('0x29')](respondWithResult(_0x5db74c,null))[_0x2281('0x43')](handleError(_0x5db74c,null));};exports[_0x2281('0x57')]=function(_0x35ed85,_0x256823,_0x49775d){var _0x47d520={};var _0x3366c3={};var _0x53eb94;var _0x37f553;return db[_0x2281('0x2e')][_0x2281('0x58')]({'where':{'id':_0x35ed85[_0x2281('0x44')]['id']}})['then'](handleEntityNotFound(_0x256823,null))[_0x2281('0x29')](function(_0x127fb3){if(_0x127fb3){_0x53eb94=_0x127fb3;_0x3366c3[_0x2281('0x32')]=_[_0x2281('0x46')](db[_0x2281('0x4f')][_0x2281('0x45')]);_0x3366c3[_0x2281('0x33')]=_[_0x2281('0x46')](_0x35ed85['query']);_0x3366c3[_0x2281('0x34')]=_['intersection'](_0x3366c3[_0x2281('0x32')],_0x3366c3[_0x2281('0x33')]);_0x47d520[_0x2281('0x36')]=_['intersection'](_0x3366c3[_0x2281('0x32')],qs[_0x2281('0x37')](_0x35ed85['query'][_0x2281('0x37')]));_0x47d520[_0x2281('0x36')]=_0x47d520[_0x2281('0x36')][_0x2281('0x47')]?_0x47d520['attributes']:_0x3366c3[_0x2281('0x32')];_0x47d520[_0x2281('0x39')]=qs[_0x2281('0x3a')](_0x35ed85[_0x2281('0x33')]['sort']);_0x47d520[_0x2281('0x3b')]=qs[_0x2281('0x34')](_[_0x2281('0x3c')](_0x35ed85['query'],_0x3366c3[_0x2281('0x34')]));if(_0x35ed85[_0x2281('0x33')][_0x2281('0x3d')]){_0x47d520[_0x2281('0x3b')]=_[_0x2281('0x3f')](_0x47d520[_0x2281('0x3b')],{'$or':_[_0x2281('0x2d')](_0x47d520[_0x2281('0x36')],function(_0x180d84){var _0x1a4456={};_0x1a4456[_0x180d84]={'$like':'%'+_0x35ed85[_0x2281('0x33')]['filter']+'%'};return _0x1a4456;})});}if(_0x35ed85[_0x2281('0x33')][_0x2281('0x59')]){var _0x290784=_0x35ed85[_0x2281('0x33')][_0x2281('0x59')][_0x2281('0x5a')](',');var _0x51adfd={};_0x51adfd[_0x290784[0x0]]={'$gte':moment(_0x290784[0x1])[_0x2281('0x5b')](_0x2281('0x5c'))};_0x47d520[_0x2281('0x3b')]=_[_0x2281('0x3f')](_0x47d520[_0x2281('0x3b')],_0x51adfd);}_0x47d520=_['merge']({},_0x47d520,_0x35ed85['options']);return _0x53eb94[_0x2281('0x57')](_0x47d520);}})[_0x2281('0x29')](function(_0x269abf){if(_0x269abf){_0x37f553=_0x269abf['length'];if(!_0x35ed85[_0x2281('0x33')][_0x2281('0x54')](_0x2281('0x38'))){_0x47d520[_0x2281('0x21')]=qs[_0x2281('0x21')](_0x35ed85['query'][_0x2281('0x21')]);_0x47d520['offset']=qs[_0x2281('0x1f')](_0x35ed85['query'][_0x2281('0x1f')]);}return _0x53eb94[_0x2281('0x57')](_0x47d520);}})[_0x2281('0x29')](function(_0x1095de){if(_0x1095de){return _0x1095de?{'count':_0x37f553,'rows':_0x1095de}:null;}})[_0x2281('0x29')](respondWithResult(_0x256823,null))['catch'](handleError(_0x256823,null));};
\ No newline at end of file
index b67cb61..741d93f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c77=['ChatGroup','setMaxListeners','save','update','emit','hasOwnProperty','../../mysqldb'];(function(_0x3bf147,_0x2403fc){var _0x5e445d=function(_0x4bbdf9){while(--_0x4bbdf9){_0x3bf147['push'](_0x3bf147['shift']());}};_0x5e445d(++_0x2403fc);}(_0x1c77,0xed));var _0x71c7=function(_0x476c7,_0x298ee0){_0x476c7=_0x476c7-0x0;var _0x47ae56=_0x1c77[_0x476c7];return _0x47ae56;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0x71c7('0x0'))['db'][_0x71c7('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x71c7('0x2')](0x0);var events={'afterCreate':_0x71c7('0x3'),'afterUpdate':_0x71c7('0x4'),'afterDestroy':'remove'};function emitEvent(_0x29ab58){return function(_0x37620a,_0x1f314c,_0x305ff7){ChatGroupEvents[_0x71c7('0x5')](_0x29ab58+':'+_0x37620a['id'],_0x37620a);ChatGroupEvents[_0x71c7('0x5')](_0x29ab58,_0x37620a);_0x305ff7(null);};}for(var e in events){if(events[_0x71c7('0x6')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xc130=['events','ChatGroup','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x561ebe,_0x2335a0){var _0x62617c=function(_0x8304b8){while(--_0x8304b8){_0x561ebe['push'](_0x561ebe['shift']());}};_0x62617c(++_0x2335a0);}(_0xc130,0x170));var _0x0c13=function(_0x5bb79d,_0x4c01fb){_0x5bb79d=_0x5bb79d-0x0;var _0x53ad9b=_0xc130[_0x5bb79d];return _0x53ad9b;};'use strict';var EventEmitter=require(_0x0c13('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0x0c13('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x0c13('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0c13('0x3'),'afterDestroy':_0x0c13('0x4')};function emitEvent(_0x5bbd93){return function(_0x3f19,_0x1ec471,_0x102bac){ChatGroupEvents[_0x0c13('0x5')](_0x5bbd93+':'+_0x3f19['id'],_0x3f19);ChatGroupEvents[_0x0c13('0x5')](_0x5bbd93,_0x3f19);_0x102bac(null);};}for(var e in events){if(events[_0x0c13('0x6')](e)){var event=events[e];ChatGroup[_0x0c13('0x7')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index 9e6d70f..5a249c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x470f=['exports','define','ChatGroup','chat_groups','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x6ac806,_0x4804ff){var _0x473393=function(_0x59efe1){while(--_0x59efe1){_0x6ac806['push'](_0x6ac806['shift']());}};_0x473393(++_0x4804ff);}(_0x470f,0xad));var _0xf470=function(_0x4d9443,_0xe0d01f){_0x4d9443=_0x4d9443-0x0;var _0x350586=_0x470f[_0x4d9443];return _0x350586;};'use strict';var _=require(_0xf470('0x0'));var util=require(_0xf470('0x1'));var logger=require('../../config/logger')(_0xf470('0x2'));var moment=require(_0xf470('0x3'));var BPromise=require(_0xf470('0x4'));var rp=require(_0xf470('0x5'));var fs=require('fs');var path=require(_0xf470('0x6'));var rimraf=require(_0xf470('0x7'));var config=require(_0xf470('0x8'));var attributes=require('./chatGroup.attributes');module[_0xf470('0x9')]=function(_0x100660,_0x4d29e1){return _0x100660[_0xf470('0xa')](_0xf470('0xb'),attributes,{'tableName':_0xf470('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x908c=['request-promise','path','rimraf','../../config/environment','exports','define','ChatGroup','chat_groups','lodash','util','api','moment','bluebird'];(function(_0x4159f9,_0x3e64c2){var _0x5987bb=function(_0x508063){while(--_0x508063){_0x4159f9['push'](_0x4159f9['shift']());}};_0x5987bb(++_0x3e64c2);}(_0x908c,0x119));var _0xc908=function(_0x2ba337,_0x196398){_0x2ba337=_0x2ba337-0x0;var _0x5dcde3=_0x908c[_0x2ba337];return _0x5dcde3;};'use strict';var _=require(_0xc908('0x0'));var util=require(_0xc908('0x1'));var logger=require('../../config/logger')(_0xc908('0x2'));var moment=require(_0xc908('0x3'));var BPromise=require(_0xc908('0x4'));var rp=require(_0xc908('0x5'));var fs=require('fs');var path=require(_0xc908('0x6'));var rimraf=require(_0xc908('0x7'));var config=require(_0xc908('0x8'));var attributes=require('./chatGroup.attributes');module[_0xc908('0x9')]=function(_0x9a0c1,_0xb43642){return _0x9a0c1[_0xc908('0xa')](_0xc908('0xb'),attributes,{'tableName':_0xc908('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e0ac47d..a4425eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b67=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch'];(function(_0x24c559,_0x2b89c3){var _0x5f2cd4=function(_0x537f2c){while(--_0x537f2c){_0x24c559['push'](_0x24c559['shift']());}};_0x5f2cd4(++_0x2b89c3);}(_0x2b67,0xf3));var _0x72b6=function(_0x42def5,_0x1c334a){_0x42def5=_0x42def5-0x0;var _0x3cbb4e=_0x2b67[_0x42def5];return _0x3cbb4e;};'use strict';var _=require(_0x72b6('0x0'));var util=require(_0x72b6('0x1'));var moment=require(_0x72b6('0x2'));var BPromise=require(_0x72b6('0x3'));var rs=require(_0x72b6('0x4'));var fs=require('fs');var Redis=require(_0x72b6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x72b6('0x6'));var logger=require('../../config/logger')(_0x72b6('0x7'));var config=require(_0x72b6('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x72b6('0x9')]=_[_0x72b6('0xa')](config[_0x72b6('0x9')],{'host':_0x72b6('0xb'),'port':0x18eb});var socket=require(_0x72b6('0xc'))(new Redis(config['redis']));require(_0x72b6('0xd'))[_0x72b6('0xe')](socket);function respondWithRpcPromise(_0x4f476c,_0x539a79,_0x3e8d77){return new BPromise(function(_0x3ec108,_0x128e11){return client[_0x72b6('0xf')](_0x4f476c,_0x3e8d77)[_0x72b6('0x10')](function(_0x48be1b){logger['info']('ChatGroup,\x20%s,\x20%s',_0x539a79,_0x72b6('0x11'));logger[_0x72b6('0x12')](_0x72b6('0x13'),_0x539a79,_0x72b6('0x11'),JSON[_0x72b6('0x14')](_0x48be1b));if(_0x48be1b[_0x72b6('0x15')]){if(_0x48be1b[_0x72b6('0x15')][_0x72b6('0x16')]===0x1f4){logger[_0x72b6('0x15')](_0x72b6('0x17'),_0x539a79,_0x48be1b[_0x72b6('0x15')][_0x72b6('0x18')]);return _0x128e11(_0x48be1b[_0x72b6('0x15')][_0x72b6('0x18')]);}logger[_0x72b6('0x15')](_0x72b6('0x17'),_0x539a79,_0x48be1b['error'][_0x72b6('0x18')]);return _0x3ec108(_0x48be1b['error'][_0x72b6('0x18')]);}else{logger['info'](_0x72b6('0x17'),_0x539a79,_0x72b6('0x11'));_0x3ec108(_0x48be1b[_0x72b6('0x19')][_0x72b6('0x18')]);}})[_0x72b6('0x1a')](function(_0x3d0055){logger[_0x72b6('0x15')](_0x72b6('0x17'),_0x539a79,_0x3d0055);_0x128e11(_0x3d0055);});});}
\ No newline at end of file
+var _0xaba6=['debug','stringify','error','code','message','result','lodash','util','../../mysqldb','../../config/utils','rpc','../../config/environment','redis','localhost','./chatGroup.socket','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent'];(function(_0x5158e0,_0x397492){var _0x256510=function(_0x44c557){while(--_0x44c557){_0x5158e0['push'](_0x5158e0['shift']());}};_0x256510(++_0x397492);}(_0xaba6,0xe2));var _0x6aba=function(_0x353fba,_0x46db7e){_0x353fba=_0x353fba-0x0;var _0x4694e4=_0xaba6[_0x353fba];return _0x4694e4;};'use strict';var _=require(_0x6aba('0x0'));var util=require(_0x6aba('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6aba('0x2'))['db'];var utils=require(_0x6aba('0x3'));var logger=require('../../config/logger')(_0x6aba('0x4'));var config=require(_0x6aba('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x6aba('0x6')]=_['defaults'](config[_0x6aba('0x6')],{'host':_0x6aba('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6aba('0x6')]));require(_0x6aba('0x8'))['register'](socket);function respondWithRpcPromise(_0x1114bd,_0x1bd238,_0x1a2dcc){return new BPromise(function(_0x1a04c3,_0xdbc119){return client[_0x6aba('0x9')](_0x1114bd,_0x1a2dcc)[_0x6aba('0xa')](function(_0x55b1b6){logger[_0x6aba('0xb')](_0x6aba('0xc'),_0x1bd238,_0x6aba('0xd'));logger[_0x6aba('0xe')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x1bd238,_0x6aba('0xd'),JSON[_0x6aba('0xf')](_0x55b1b6));if(_0x55b1b6['error']){if(_0x55b1b6[_0x6aba('0x10')][_0x6aba('0x11')]===0x1f4){logger[_0x6aba('0x10')]('ChatGroup,\x20%s,\x20%s',_0x1bd238,_0x55b1b6[_0x6aba('0x10')][_0x6aba('0x12')]);return _0xdbc119(_0x55b1b6[_0x6aba('0x10')]['message']);}logger[_0x6aba('0x10')](_0x6aba('0xc'),_0x1bd238,_0x55b1b6[_0x6aba('0x10')][_0x6aba('0x12')]);return _0x1a04c3(_0x55b1b6[_0x6aba('0x10')][_0x6aba('0x12')]);}else{logger[_0x6aba('0xb')]('ChatGroup,\x20%s,\x20%s',_0x1bd238,_0x6aba('0xd'));_0x1a04c3(_0x55b1b6[_0x6aba('0x13')][_0x6aba('0x12')]);}})['catch'](function(_0x1d6ad4){logger['error']('ChatGroup,\x20%s,\x20%s',_0x1bd238,_0x1d6ad4);_0xdbc119(_0x1d6ad4);});});}
\ No newline at end of file
index bd2cdd2..a09a039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7709=['chatGroup:','save','remove','update','emit','length'];(function(_0xd32b55,_0x1b2696){var _0x5b86fd=function(_0x3a667a){while(--_0x3a667a){_0xd32b55['push'](_0xd32b55['shift']());}};_0x5b86fd(++_0x1b2696);}(_0x7709,0x175));var _0x9770=function(_0xbc606e,_0x36836b){_0xbc606e=_0xbc606e-0x0;var _0x24bd3d=_0x7709[_0xbc606e];return _0x24bd3d;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x9770('0x0'),_0x9770('0x1'),_0x9770('0x2')];function createListener(_0x38cc2b,_0x5a9cea){return function(_0x19d313){_0x5a9cea[_0x9770('0x3')](_0x38cc2b,_0x19d313);};}function removeListener(_0x3ab4e6,_0x5f43e5){return function(){ChatGroupEvents['removeListener'](_0x3ab4e6,_0x5f43e5);};}exports['register']=function(_0x60075e){for(var _0x2e7d32=0x0,_0x41b0d4=events[_0x9770('0x4')];_0x2e7d32<_0x41b0d4;_0x2e7d32++){var _0x5ec4f8=events[_0x2e7d32];var _0x503ef9=createListener(_0x9770('0x5')+_0x5ec4f8,_0x60075e);ChatGroupEvents['on'](_0x5ec4f8,_0x503ef9);}};
\ No newline at end of file
+var _0xb64b=['register','length','chatGroup:','save','emit'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb64b,0x1ca));var _0xbb64=function(_0x3b76f7,_0x566c53){_0x3b76f7=_0x3b76f7-0x0;var _0x43984e=_0xb64b[_0x3b76f7];return _0x43984e;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0xbb64('0x0'),'remove','update'];function createListener(_0x582947,_0x511624){return function(_0x5b3a1a){_0x511624[_0xbb64('0x1')](_0x582947,_0x5b3a1a);};}function removeListener(_0x235f88,_0x4c36d9){return function(){ChatGroupEvents['removeListener'](_0x235f88,_0x4c36d9);};}exports[_0xbb64('0x2')]=function(_0x5bc9e4){for(var _0x130ca8=0x0,_0x54990a=events[_0xbb64('0x3')];_0x130ca8<_0x54990a;_0x130ca8++){var _0x4618c5=events[_0x130ca8];var _0x5711d6=createListener(_0xbb64('0x4')+_0x4618c5,_0x5bc9e4);ChatGroupEvents['on'](_0x4618c5,_0x5711d6);}};
\ No newline at end of file
index bb463c8..e41a394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7761=['get','/:id','show','/:id/unread','getMembers','getMessages','post','create','/:id/members','addMembers','/:id/messages','addMessage','put','delete','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','isAuthenticated','/describe','describe'];(function(_0x72e4fa,_0x58621c){var _0x30e945=function(_0x17905c){while(--_0x17905c){_0x72e4fa['push'](_0x72e4fa['shift']());}};_0x30e945(++_0x58621c);}(_0x7761,0x154));var _0x1776=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7761[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x1776('0x0'));var util=require('util');var path=require(_0x1776('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1776('0x2'));var auth=require(_0x1776('0x3'));var interaction=require(_0x1776('0x4'));var config=require(_0x1776('0x5'));var controller=require(_0x1776('0x6'));router['get']('/',auth[_0x1776('0x7')](),controller['index']);router['get'](_0x1776('0x8'),auth['isAuthenticated'](),controller[_0x1776('0x9')]);router[_0x1776('0xa')](_0x1776('0xb'),auth[_0x1776('0x7')](),controller[_0x1776('0xc')]);router['get'](_0x1776('0xd'),auth[_0x1776('0x7')](),controller['getUnread']);router[_0x1776('0xa')]('/:id/members',auth[_0x1776('0x7')](),controller[_0x1776('0xe')]);router[_0x1776('0xa')]('/:id/messages',auth[_0x1776('0x7')](),controller[_0x1776('0xf')]);router[_0x1776('0x10')]('/',auth['isAuthenticated'](),controller[_0x1776('0x11')]);router[_0x1776('0x10')](_0x1776('0x12'),auth[_0x1776('0x7')](),controller[_0x1776('0x13')]);router[_0x1776('0x10')](_0x1776('0x14'),auth[_0x1776('0x7')](),controller[_0x1776('0x15')]);router[_0x1776('0x16')](_0x1776('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x1776('0xb'),auth[_0x1776('0x7')](),controller['destroy']);router[_0x1776('0x17')]('/:id/members',auth[_0x1776('0x7')](),controller['removeMembers']);module[_0x1776('0x18')]=router;
\ No newline at end of file
+var _0xda8e=['isAuthenticated','index','/describe','/:id','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','addMembers','post','put','update','delete','destroy','removeMembers','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get'];(function(_0x3d95dc,_0x5eb141){var _0xc88f=function(_0x381507){while(--_0x381507){_0x3d95dc['push'](_0x3d95dc['shift']());}};_0xc88f(++_0x5eb141);}(_0xda8e,0x114));var _0xeda8=function(_0x2e2681,_0x4089c1){_0x2e2681=_0x2e2681-0x0;var _0x368a64=_0xda8e[_0x2e2681];return _0x368a64;};'use strict';var multer=require(_0xeda8('0x0'));var util=require('util');var path=require(_0xeda8('0x1'));var timeout=require(_0xeda8('0x2'));var express=require(_0xeda8('0x3'));var router=express[_0xeda8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xeda8('0x5'));var interaction=require(_0xeda8('0x6'));var config=require(_0xeda8('0x7'));var controller=require(_0xeda8('0x8'));router[_0xeda8('0x9')]('/',auth[_0xeda8('0xa')](),controller[_0xeda8('0xb')]);router[_0xeda8('0x9')](_0xeda8('0xc'),auth[_0xeda8('0xa')](),controller['describe']);router[_0xeda8('0x9')](_0xeda8('0xd'),auth[_0xeda8('0xa')](),controller['show']);router[_0xeda8('0x9')](_0xeda8('0xe'),auth[_0xeda8('0xa')](),controller[_0xeda8('0xf')]);router[_0xeda8('0x9')](_0xeda8('0x10'),auth[_0xeda8('0xa')](),controller[_0xeda8('0x11')]);router[_0xeda8('0x9')](_0xeda8('0x12'),auth[_0xeda8('0xa')](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xeda8('0x10'),auth[_0xeda8('0xa')](),controller[_0xeda8('0x13')]);router[_0xeda8('0x14')](_0xeda8('0x12'),auth[_0xeda8('0xa')](),controller['addMessage']);router[_0xeda8('0x15')]('/:id',auth[_0xeda8('0xa')](),controller[_0xeda8('0x16')]);router[_0xeda8('0x17')](_0xeda8('0xd'),auth['isAuthenticated'](),controller[_0xeda8('0x18')]);router['delete'](_0xeda8('0x10'),auth[_0xeda8('0xa')](),controller[_0xeda8('0x19')]);module['exports']=router;
\ No newline at end of file
index dac7e7d..28945a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc901=['out','BOOLEAN','sequelize','star','thumb','TEXT','STRING','DATE','long','ENUM'];(function(_0x25c398,_0x13284b){var _0x3311bc=function(_0x383d58){while(--_0x383d58){_0x25c398['push'](_0x25c398['shift']());}};_0x3311bc(++_0x13284b);}(_0xc901,0x142));var _0x1c90=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xc901[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0x1c90('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM'](_0x1c90('0x1'),_0x1c90('0x2')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0x1c90('0x3')]},'pathTranscript':{'type':Sequelize[_0x1c90('0x3')]},'mailTranscript':{'type':Sequelize[_0x1c90('0x4')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x1c90('0x5')]},'disposition':{'type':Sequelize[_0x1c90('0x4')]},'secondDisposition':{'type':Sequelize[_0x1c90('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1c90('0x4')]},'note':{'type':Sequelize[_0x1c90('0x4')]},'browserName':{'type':Sequelize[_0x1c90('0x4')]},'browserVersion':{'type':Sequelize[_0x1c90('0x4')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x1c90('0x4')]},'deviceModel':{'type':Sequelize[_0x1c90('0x4')]},'deviceVendor':{'type':Sequelize[_0x1c90('0x4')]},'deviceType':{'type':Sequelize[_0x1c90('0x4')]},'referer':{'type':Sequelize[_0x1c90('0x3')]},'customerIp':{'type':Sequelize[_0x1c90('0x4')]},'formData':{'type':Sequelize[_0x1c90('0x3')](_0x1c90('0x6'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x1c90('0x7')]('in',_0x1c90('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x1c90('0x4')]},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x1c90('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4e81=['DATE','long','ENUM','out','sequelize','exports','BOOLEAN','thumb','star','TEXT','STRING'];(function(_0x288eaa,_0x5a0c1f){var _0xfa6a0c=function(_0x5c6706){while(--_0x5c6706){_0x288eaa['push'](_0x288eaa['shift']());}};_0xfa6a0c(++_0x5a0c1f);}(_0x4e81,0x1bc));var _0x14e8=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x4e81[_0x12f688];return _0x59c3de;};'use strict';var Sequelize=require(_0x14e8('0x0'));module[_0x14e8('0x1')]={'closed':{'type':Sequelize[_0x14e8('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM']('star',_0x14e8('0x3')),'defaultValue':_0x14e8('0x4')},'ratingMessage':{'type':Sequelize[_0x14e8('0x5')]},'pathTranscript':{'type':Sequelize[_0x14e8('0x5')]},'mailTranscript':{'type':Sequelize[_0x14e8('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x14e8('0x7')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x14e8('0x6')]},'note':{'type':Sequelize[_0x14e8('0x6')]},'browserName':{'type':Sequelize[_0x14e8('0x6')]},'browserVersion':{'type':Sequelize[_0x14e8('0x6')]},'osName':{'type':Sequelize[_0x14e8('0x6')]},'osVersion':{'type':Sequelize[_0x14e8('0x6')]},'deviceModel':{'type':Sequelize[_0x14e8('0x6')]},'deviceVendor':{'type':Sequelize[_0x14e8('0x6')]},'deviceType':{'type':Sequelize[_0x14e8('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x14e8('0x6')]},'formData':{'type':Sequelize[_0x14e8('0x5')](_0x14e8('0x8'))},'read1stAt':{'type':Sequelize[_0x14e8('0x7')]},'lastMsgAt':{'type':Sequelize[_0x14e8('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x14e8('0x9')]('in',_0x14e8('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x14e8('0x6')]},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize[_0x14e8('0x5')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index ec47e76..4d97f45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe013=['entity\x20not\x20found','UserId','disposition','AbandonInteraction','attachmentUpload','originalname','filename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','basename','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','User','ChatWebsiteId','%s%d','agentAlias','System','customer','ContactId','agentIdentifier','website_alias','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','getMyMessages','includeAgent','push','include','rows','addTags','setTags','spread','Tag','color','emit','chatInteractionTags:save','removeTags','toString','server','tmp','attachments','transcript-%d-%s.zip','lastName','Account','Owner','get','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerIp','customerPort','tail','pipe','createWriteStream','Contact','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','rimraf','zip-dir','moment','mustache','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','client','request','then','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','sendStatus','status','json','offset','limit','count','set','Content-Range','update','destroy','stack','name','send','render','merge','contact','interaction','account','index','map','ChatInteraction','fieldName','type','getOptions','findAll','user','catch','show','rawAttributes','query','keys','filters','intersection','model','attributes','fields','length','includeAll','options','find','create','body','params','describe','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','metadata','Sequelize','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon'];(function(_0x283e0e,_0x3f29df){var _0x37f29a=function(_0x57235f){while(--_0x57235f){_0x283e0e['push'](_0x283e0e['shift']());}};_0x37f29a(++_0x3f29df);}(_0xe013,0x6f));var _0x3e01=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xe013[_0x24237f];return _0x48298e;};'use strict';var rimraf=require(_0x3e01('0x0'));var zipdir=require(_0x3e01('0x1'));var rp=require('request-promise');var moment=require(_0x3e01('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3e01('0x3'));var util=require(_0x3e01('0x4'));var path=require(_0x3e01('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x3e01('0x6'));var Redis=require(_0x3e01('0x7'));var interaction=require(_0x3e01('0x8'));var qs=require(_0x3e01('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x3e01('0xa'))(_0x3e01('0xb'));var config=require(_0x3e01('0xc'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x3e01('0xd')](config[_0x3e01('0xe')],{'host':_0x3e01('0xf'),'port':0x18eb});var socket=require(_0x3e01('0x10'))(new Redis(config[_0x3e01('0xe')]));require(_0x3e01('0x11'))[_0x3e01('0x12')](socket);var jayson=require(_0x3e01('0x13'));var client=jayson['client'][_0x3e01('0x14')]({'port':0x232b});var client9004=jayson[_0x3e01('0x15')][_0x3e01('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x3d85a5,_0x16c648,_0x374435,_0x58a55f){return new BPromise(function(_0x3b3b23,_0x4b7b97){var _0xb81455=_0x58a55f||client;return _0xb81455[_0x3e01('0x16')](_0x3d85a5,_0x374435)[_0x3e01('0x17')](function(_0x3a3be2){logger['info'](_0x3e01('0x18'),_0x16c648,'request\x20sent');logger[_0x3e01('0x19')](_0x3e01('0x1a'),_0x16c648,'request\x20sent',JSON[_0x3e01('0x1b')](_0x3a3be2));if(_0x3a3be2[_0x3e01('0x1c')]){if(_0x3a3be2[_0x3e01('0x1c')][_0x3e01('0x1d')]===0x1f4){logger[_0x3e01('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x16c648,_0x3a3be2['error'][_0x3e01('0x1e')]);return _0x4b7b97(_0x3a3be2[_0x3e01('0x1c')]['message']);}logger[_0x3e01('0x1c')](_0x3e01('0x18'),_0x16c648,_0x3a3be2['error'][_0x3e01('0x1e')]);return _0x3b3b23(_0x3a3be2['error'][_0x3e01('0x1e')]);}else{logger[_0x3e01('0x1f')](_0x3e01('0x18'),_0x16c648,_0x3e01('0x20'));_0x3b3b23(_0x3a3be2[_0x3e01('0x21')][_0x3e01('0x1e')]);}})['catch'](function(_0x5bdde4){logger[_0x3e01('0x1c')](_0x3e01('0x18'),_0x16c648,_0x5bdde4);_0x4b7b97(_0x5bdde4);});});}function respondWithStatusCode(_0x3e0cc9,_0x2672f9){_0x2672f9=_0x2672f9||0xcc;return function(_0x403b92){if(_0x403b92){return _0x3e0cc9[_0x3e01('0x22')](_0x2672f9);}return _0x3e0cc9[_0x3e01('0x23')](_0x2672f9)['end']();};}function respondWithResult(_0x4fd6b7,_0x38fe18){_0x38fe18=_0x38fe18||0xc8;return function(_0x246c04){if(_0x246c04){return _0x4fd6b7[_0x3e01('0x23')](_0x38fe18)[_0x3e01('0x24')](_0x246c04);}};}function respondWithFilteredResult(_0x3eaec3,_0x36ed08){return function(_0x29858a){if(_0x29858a){var _0x454153=typeof _0x36ed08[_0x3e01('0x25')]==='undefined'&&typeof _0x36ed08[_0x3e01('0x26')]==='undefined';var _0x2156c2=_0x29858a[_0x3e01('0x27')];var _0x1104f1=_0x454153?0x0:_0x36ed08[_0x3e01('0x25')];var _0x3b9125=_0x454153?_0x29858a[_0x3e01('0x27')]:_0x36ed08[_0x3e01('0x25')]+_0x36ed08[_0x3e01('0x26')];var _0x35ffe0;if(_0x3b9125>=_0x2156c2){_0x3b9125=_0x2156c2;_0x35ffe0=0xc8;}else{_0x35ffe0=0xce;}_0x3eaec3[_0x3e01('0x23')](_0x35ffe0);return _0x3eaec3[_0x3e01('0x28')](_0x3e01('0x29'),_0x1104f1+'-'+_0x3b9125+'/'+_0x2156c2)[_0x3e01('0x24')](_0x29858a);}return null;};}function saveUpdates(_0x51f794){return function(_0x57a312){if(_0x57a312){return _0x57a312[_0x3e01('0x2a')](_0x51f794)[_0x3e01('0x17')](function(_0x22a25c){return _0x22a25c;});}return null;};}function removeEntity(_0x2e99a5){return function(_0x4d0fd7){if(_0x4d0fd7){return _0x4d0fd7[_0x3e01('0x2b')]()[_0x3e01('0x17')](function(){_0x2e99a5[_0x3e01('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd2dd2d){return function(_0xb1640c){if(!_0xb1640c){_0xd2dd2d[_0x3e01('0x22')](0x194);}return _0xb1640c;};}function handleError(_0x462df0,_0x54de6f){_0x54de6f=_0x54de6f||0x1f4;return function(_0x2e178b){logger[_0x3e01('0x1c')](_0x2e178b[_0x3e01('0x2c')]);if(_0x2e178b[_0x3e01('0x2d')]){delete _0x2e178b[_0x3e01('0x2d')];}_0x462df0['status'](_0x54de6f)[_0x3e01('0x2e')](_0x2e178b);};}function getMustacheRender(_0x5dfcbe,_0x33eb09){return Mustache[_0x3e01('0x2f')](_0x5dfcbe,_[_0x3e01('0x30')](_0x33eb09['body'],{'contact':_0x33eb09[_0x3e01('0x31')],'message':_0x33eb09[_0x3e01('0x1e')],'agent':_0x33eb09['agent'],'interaction':_0x33eb09[_0x3e01('0x32')],'account':_0x33eb09[_0x3e01('0x33')]}))||'';}exports[_0x3e01('0x34')]=function(_0x290e42,_0x581ff0){var _0x4dd63f={};var _0x533c6b=_[_0x3e01('0x35')](db[_0x3e01('0x36')]['rawAttributes'],function(_0x5cc499){return{'name':_0x5cc499[_0x3e01('0x37')],'type':_0x5cc499[_0x3e01('0x38')]['key']};});_0x4dd63f=qs[_0x3e01('0x39')](_0x533c6b,_0x290e42);return interaction[_0x3e01('0x3a')]('chat',_0x290e42['query'],_0x290e42[_0x3e01('0x3b')],_0x4dd63f,_0x533c6b)[_0x3e01('0x17')](respondWithFilteredResult(_0x581ff0,_0x4dd63f))[_0x3e01('0x3c')](handleError(_0x581ff0,null));};exports[_0x3e01('0x3d')]=function(_0x423e05,_0x127996){var _0xce7d7a={'raw':![],'where':{'id':_0x423e05['params']['id']}},_0x3db735={};_0x3db735['model']=_['keys'](db['ChatInteraction'][_0x3e01('0x3e')]);_0x3db735[_0x3e01('0x3f')]=_[_0x3e01('0x40')](_0x423e05[_0x3e01('0x3f')]);_0x3db735[_0x3e01('0x41')]=_[_0x3e01('0x42')](_0x3db735[_0x3e01('0x43')],_0x3db735['query']);_0xce7d7a[_0x3e01('0x44')]=_[_0x3e01('0x42')](_0x3db735['model'],qs[_0x3e01('0x45')](_0x423e05[_0x3e01('0x3f')]['fields']));_0xce7d7a[_0x3e01('0x44')]=_0xce7d7a[_0x3e01('0x44')][_0x3e01('0x46')]?_0xce7d7a[_0x3e01('0x44')]:_0x3db735[_0x3e01('0x43')];if(_0x423e05[_0x3e01('0x3f')][_0x3e01('0x47')]){_0xce7d7a['include']=[{'all':!![]}];}_0xce7d7a=_[_0x3e01('0x30')]({},_0xce7d7a,_0x423e05[_0x3e01('0x48')]);return db[_0x3e01('0x36')][_0x3e01('0x49')](_0xce7d7a)[_0x3e01('0x17')](handleEntityNotFound(_0x127996,null))[_0x3e01('0x17')](respondWithResult(_0x127996,null))['catch'](handleError(_0x127996,null));};exports['create']=function(_0x18ffc2,_0x131c21){return db[_0x3e01('0x36')][_0x3e01('0x4a')](_0x18ffc2[_0x3e01('0x4b')],{})[_0x3e01('0x17')](respondWithResult(_0x131c21,0xc9))['catch'](handleError(_0x131c21,null));};exports[_0x3e01('0x2a')]=function(_0x2ef252,_0x5b88bb){if(_0x2ef252[_0x3e01('0x4b')]['id']){delete _0x2ef252['body']['id'];}return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x2ef252[_0x3e01('0x4c')]['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x5b88bb,null))['then'](saveUpdates(_0x2ef252[_0x3e01('0x4b')],null))[_0x3e01('0x17')](respondWithResult(_0x5b88bb,null))[_0x3e01('0x3c')](handleError(_0x5b88bb,null));};exports[_0x3e01('0x2b')]=function(_0x3deaf1,_0x1cb561){return db['ChatInteraction'][_0x3e01('0x49')]({'where':{'id':_0x3deaf1['params']['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x1cb561,null))[_0x3e01('0x17')](removeEntity(_0x1cb561,null))[_0x3e01('0x3c')](handleError(_0x1cb561,null));};exports[_0x3e01('0x4d')]=function(_0xbc367a,_0x540066){return db[_0x3e01('0x36')][_0x3e01('0x4d')]()[_0x3e01('0x17')](respondWithResult(_0x540066,null))['catch'](handleError(_0x540066,null));};exports['createVidaooSession']=function(_0x331f66,_0x47acc3){var _0x29768a=_0x331f66['params']['id'];var _0x534446;var _0x498463;var _0x1dbace;return db[_0x3e01('0x36')][_0x3e01('0x4e')]({'where':{'id':_0x29768a}})[_0x3e01('0x17')](function(_0x3c8fd7){_0x534446=_0x3c8fd7;return db[_0x3e01('0x4f')]['findOne']({'where':{'id':_0x3c8fd7['ChatWebsiteId']},'attributes':['id',_0x3e01('0x50'),_0x3e01('0x51'),_0x3e01('0x52'),_0x3e01('0x53'),_0x3e01('0x54')],'raw':!![]});})[_0x3e01('0x17')](function(_0x15c90){if(_0x15c90&&_0x15c90['vidaooApiKey']&&_0x15c90[_0x3e01('0x51')]){_0x498463=_0x15c90;var _0xdba3b={'interaction':{'id':_0x29768a},'agent':{'id':_0x331f66[_0x3e01('0x3b')]['id'],'name':_0x331f66[_0x3e01('0x3b')][_0x3e01('0x2d')],'fullname':_0x331f66[_0x3e01('0x3b')][_0x3e01('0x55')],'email':_0x331f66['user'][_0x3e01('0x56')]},'contact':_0x331f66[_0x3e01('0x4b')][_0x3e01('0x31')],'account':_0x331f66[_0x3e01('0x4b')][_0x3e01('0x33')]};var _0x5dc4e1={'rejectUnauthorized':![],'method':_0x3e01('0x57'),'url':_0x3e01('0x58'),'headers':{'X-APIKEY':_0x15c90[_0x3e01('0x50')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x331f66['user']['email']],'buttons':null,'topic':_0x498463[_0x3e01('0x52')],'note':_[_0x3e01('0x59')](_0x498463[_0x3e01('0x53')])?null:getMustacheRender(_0x498463['vidaooNote'],_0xdba3b),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x3e01('0x59')](_0x498463[_0x3e01('0x54')])){var _0x54a96f=getMustacheRender(_0x498463['vidaooMetadata'],_0xdba3b);var _0x3bbf52=JSON['parse'](_0x54a96f);_0x5dc4e1[_0x3e01('0x4b')][_0x3e01('0x5a')]=_0x3bbf52;}}catch(_0x4d7146){throw new db[(_0x3e01('0x5b'))]['ValidationError'](_0x3e01('0x5c'));}return rp(_0x5dc4e1);}else{throw new db[(_0x3e01('0x5b'))][(_0x3e01('0x5d'))](_0x3e01('0x5e'));}})[_0x3e01('0x17')](function(_0xe42ba){_0x1dbace=_0xe42ba;if(_0x1dbace['id']){var _0xea0b0d={'body':_0x1dbace[_0x3e01('0x5f')],'ChatWebsiteId':_0x498463['id'],'ChatInteractionId':_0x534446['id'],'direction':_0x3e01('0x60'),'UserId':_0x331f66[_0x3e01('0x3b')]['id']};return db[_0x3e01('0x61')][_0x3e01('0x4a')](_0xea0b0d,{});}else{throw new db[(_0x3e01('0x5b'))][(_0x3e01('0x5d'))](_0x3e01('0x62'));}})[_0x3e01('0x17')](function(){return _0x534446[_0x3e01('0x63')]({'vidaooSessionId':_0x1dbace['id']});})[_0x3e01('0x17')](respondWithResult(_0x47acc3,null))[_0x3e01('0x3c')](handleError(_0x47acc3,null));};exports[_0x3e01('0x64')]=function(_0x302b75,_0x1c65a6){if(_0x302b75['body']['id']){delete _0x302b75[_0x3e01('0x4b')]['id'];}return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x302b75[_0x3e01('0x4c')]['id']},'include':[{'model':db[_0x3e01('0x65')],'as':'Contact'}]})[_0x3e01('0x17')](handleEntityNotFound(_0x1c65a6,null))[_0x3e01('0x17')](saveUpdates(_0x302b75[_0x3e01('0x4b')],null))[_0x3e01('0x17')](respondWithResult(_0x1c65a6,null))[_0x3e01('0x3c')](handleError(_0x1c65a6,null));};exports['abandon']=function(_0x426311,_0x3c19f1){if(_0x426311[_0x3e01('0x4b')]['id']){delete _0x426311[_0x3e01('0x4b')]['id'];}return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x426311[_0x3e01('0x4c')]['id']}})['then'](function(_0xd80515){if(!_0xd80515){logger[_0x3e01('0x1c')](_0x3e01('0x66'),_0x3e01('0x67'),0x194,_0x3e01('0x68'));_0x3c19f1['sendStatus'](0x194);}else{if(_0xd80515[_0x3e01('0x69')]){throw new db[(_0x3e01('0x5b'))]['ValidationError']('Interaction\x20already\x20assigned');}}return _0xd80515;})[_0x3e01('0x17')](function(_0x2b68bf){if(_0x2b68bf){return _0x2b68bf[_0x3e01('0x2a')]({'closed':_0x426311[_0x3e01('0x4b')]['closed'],'disposition':_0x426311['body'][_0x3e01('0x6a')]})[_0x3e01('0x17')](function(_0x1f9fe6){return _0x1f9fe6;});}})['then'](function(){return respondWithRpcPromise(_0x3e01('0x6b'),_0x3e01('0x67'),_0x426311[_0x3e01('0x4b')],client9004);})[_0x3e01('0x17')](respondWithResult(_0x3c19f1,null))['catch'](handleError(_0x3c19f1,null));};exports[_0x3e01('0x6c')]=function(_0x59a7c8,_0x4c4f64){_0x59a7c8[_0x3e01('0x4b')][_0x3e01('0x2d')]=_0x59a7c8['file'][_0x3e01('0x6d')];_0x59a7c8[_0x3e01('0x4b')]['basename']=_0x59a7c8['file'][_0x3e01('0x6e')];_0x59a7c8['body'][_0x3e01('0x38')]=_0x59a7c8['file'][_0x3e01('0x6f')];return db['Attachment'][_0x3e01('0x4a')](_0x59a7c8[_0x3e01('0x4b')])['then'](respondWithResult(_0x4c4f64,0xc9))[_0x3e01('0x3c')](handleError(_0x4c4f64,null));};exports[_0x3e01('0x70')]=function(_0x16ea9a,_0x42490e){return db['ChatInteraction'][_0x3e01('0x4e')]({'where':{'id':_0x16ea9a['params']['id']},'raw':!![]})[_0x3e01('0x17')](handleEntityNotFound(_0x42490e,null))['then'](function(_0x4cdf20){if(_0x4cdf20){if(_0x4cdf20[_0x3e01('0x71')]){return _0x42490e['status'](0x193)[_0x3e01('0x24')]({'status':0x193,'message':_0x3e01('0x72')});}return db[_0x3e01('0x73')]['findOne']({'where':{'id':_0x16ea9a[_0x3e01('0x3f')][_0x3e01('0x74')]},'raw':!![]})['then'](handleEntityNotFound(_0x42490e,null));}})[_0x3e01('0x17')](function(_0x619961){if(_0x619961){var _0x53558c=_0x619961[_0x3e01('0x75')]!==null;var _0x291064=path[_0x3e01('0x76')](config[_0x3e01('0x77')],_0x3e01('0x78'));if(_0x53558c){_0x291064=path[_0x3e01('0x76')](_0x291064,_0x3e01('0x79'));}var _0x2a6aa7=path[_0x3e01('0x76')](_0x291064,_0x619961[_0x3e01('0x7a')]);return _0x42490e[_0x3e01('0x7b')](_0x2a6aa7);}})['catch'](handleError(_0x42490e,null));};exports[_0x3e01('0x7c')]=function(_0x48525a,_0x6a7705){var _0x27d080=null;var _0x2f03fd=null;var _0x4a2d55=null;if(_0x48525a['body']['id']){delete _0x48525a[_0x3e01('0x4b')]['id'];}if(_0x48525a[_0x3e01('0x4b')][_0x3e01('0x7d')]){_0x4a2d55=path[_0x3e01('0x76')](config[_0x3e01('0x77')],_0x3e01('0x7e'),util[_0x3e01('0x7f')](_0x3e01('0x80'),Date[_0x3e01('0x81')]()));_0x48525a[_0x3e01('0x4b')][_0x3e01('0x82')]=_0x4a2d55;}return db[_0x3e01('0x36')]['find']({'where':{'id':_0x48525a[_0x3e01('0x4c')]['id']},'include':[{'model':db[_0x3e01('0x61')],'as':_0x3e01('0x83'),'include':[{'model':db['User'],'as':_0x3e01('0x84')}]}]})[_0x3e01('0x17')](handleEntityNotFound(_0x6a7705,null))[_0x3e01('0x17')](saveUpdates(_0x48525a[_0x3e01('0x4b')],null))[_0x3e01('0x17')](function(_0x3f952f){if(_0x3f952f){_0x27d080=_0x3f952f;return db[_0x3e01('0x4f')][_0x3e01('0x49')]({'where':{'id':_0x27d080[_0x3e01('0x85')]}});}})[_0x3e01('0x17')](function(_0x59b797){if(_0x59b797){_0x2f03fd=_0x59b797;return db[_0x3e01('0x65')][_0x3e01('0x49')]({'where':{'id':_0x27d080['ContactId']}});}})[_0x3e01('0x17')](function(_0x319f54){if(_0x319f54){if(_0x4a2d55){var _0x4efa20=null;for(var _0x514502=0x1;_0x514502<_0x27d080['Messages'][_0x3e01('0x46')];++_0x514502){_0x4efa20=_0x27d080['Messages'][_0x514502];var _0x3f2360=_0x4efa20[_0x3e01('0x69')]?util['format'](_0x3e01('0x86'),_0x2f03fd[_0x3e01('0x87')],_0x4efa20[_0x3e01('0x69')]):_0x3e01('0x88');var _0x317750=_0x48525a[_0x3e01('0x4b')][_0x3e01('0x89')]||util[_0x3e01('0x7f')](_0x3e01('0x86'),'Visitor',_0x4efa20[_0x3e01('0x8a')]);switch(_0x2f03fd[_0x3e01('0x8b')]){case _0x3e01('0x8c'):_0x3f2360=_0x4efa20[_0x3e01('0x69')]?util[_0x3e01('0x7f')](_0x3e01('0x86'),_0x2f03fd[_0x3e01('0x87')],_0x4efa20['UserId']):_0x3e01('0x88');break;case _0x3e01('0x8d'):_0x3f2360=_0x4efa20['UserId']?_0x4efa20[_0x3e01('0x84')][_0x3e01('0x8e')]||_0x4efa20[_0x3e01('0x84')][_0x3e01('0x55')]:_0x3e01('0x88');break;case'agent_fullname':_0x3f2360=_0x4efa20[_0x3e01('0x69')]?_0x4efa20[_0x3e01('0x84')][_0x3e01('0x55')]:_0x3e01('0x88');break;default:_0x3f2360=_0x4efa20[_0x3e01('0x69')]?util[_0x3e01('0x7f')](_0x3e01('0x86'),_0x2f03fd[_0x3e01('0x87')],_0x4efa20[_0x3e01('0x69')]):_0x3e01('0x88');}var _0x4a1461=util['format'](_0x3e01('0x8f'),moment(_0x4efa20[_0x3e01('0x90')])[_0x3e01('0x7f')](_0x3e01('0x91')),_0x4efa20[_0x3e01('0x92')]==='in'?_0x317750:_0x3f2360,_0x4efa20[_0x3e01('0x4b')]);if(!_0x4efa20[_0x3e01('0x93')]){fs[_0x3e01('0x94')](_0x4a2d55,_0x4a1461);}}return db[_0x3e01('0x95')][_0x3e01('0x4e')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x3e01('0x96'),'raw':!![],'include':[{'model':db[_0x3e01('0x97')],'as':_0x3e01('0x97'),'raw':!![]}]}]});}}})[_0x3e01('0x17')](function(_0x4b12a0){if(!_0x4b12a0||!_0x4b12a0[_0x3e01('0x96')]||!_0x48525a[_0x3e01('0x4b')])return _0x27d080;var _0x302ef5=_0x4b12a0[_0x3e01('0x98')]();return respondWithRpcPromise(_0x3e01('0x99'),_0x3e01('0x9a'),{'account':_0x302ef5,'message':{'from':util[_0x3e01('0x7f')]('\x22%s\x22\x20<%s>',_0x4b12a0[_0x3e01('0x2d')],_0x4b12a0[_0x3e01('0x56')]||_0x4b12a0[_0x3e01('0x96')][_0x3e01('0x3b')]),'to':_0x48525a[_0x3e01('0x4b')]['mailTranscript'],'subject':_0x3e01('0x9b'),'text':util['format'](_0x3e01('0x9c'),_0x48525a[_0x3e01('0x4b')]['mailTranscript']),'attachments':[{'path':_0x4a2d55}]}})[_0x3e01('0x17')](function(){return _0x27d080;})[_0x3e01('0x3c')](function(_0x682077){logger['error'](_0x682077);});})[_0x3e01('0x17')](respondWithStatusCode(_0x6a7705,0xc8))['catch'](handleError(_0x6a7705,null));};exports[_0x3e01('0x9d')]=function(_0x932cce,_0x1a6888){return db[_0x3e01('0x61')][_0x3e01('0x49')]({'where':{'id':_0x932cce['params']['id']}})['then'](handleEntityNotFound(_0x1a6888,null))[_0x3e01('0x17')](function(_0x4e0905){if(_0x4e0905){return _0x4e0905['addMessage'](_0x932cce['body']['ids'],_['omit'](_0x932cce['body'],[_0x3e01('0x9e'),'id'])||{});}})[_0x3e01('0x17')](respondWithResult(_0x1a6888,null))[_0x3e01('0x3c')](handleError(_0x1a6888,null));};exports[_0x3e01('0x9f')]=function(_0x104313,_0x44a7a1){var _0x34929d={'raw':![],'where':{}};var _0x42aed1={};var _0x28bf30={'count':0x0,'rows':[]};return db[_0x3e01('0x36')]['findOne']({'where':{'id':_0x104313[_0x3e01('0x4c')]['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x44a7a1,null))['then'](function(_0x356b97){if(_0x356b97){_0x42aed1[_0x3e01('0x43')]=_['keys'](db['ChatMessage'][_0x3e01('0x3e')]);_0x42aed1['query']=_[_0x3e01('0x40')](_0x104313[_0x3e01('0x3f')]);_0x42aed1[_0x3e01('0x41')]=_[_0x3e01('0x42')](_0x42aed1[_0x3e01('0x43')],_0x42aed1['query']);_0x34929d[_0x3e01('0x44')]=_[_0x3e01('0x42')](_0x42aed1[_0x3e01('0x43')],qs['fields'](_0x104313[_0x3e01('0x3f')][_0x3e01('0x45')]));_0x34929d[_0x3e01('0x44')]=_0x34929d['attributes'][_0x3e01('0x46')]?_0x34929d['attributes']:_0x42aed1['model'];if(!_0x104313[_0x3e01('0x3f')][_0x3e01('0xa0')](_0x3e01('0xa1'))){_0x34929d[_0x3e01('0x26')]=qs[_0x3e01('0x26')](_0x104313[_0x3e01('0x3f')][_0x3e01('0x26')]);_0x34929d[_0x3e01('0x25')]=qs[_0x3e01('0x25')](_0x104313[_0x3e01('0x3f')][_0x3e01('0x25')]);}_0x34929d[_0x3e01('0xa2')]=qs['sort'](_0x104313[_0x3e01('0x3f')][_0x3e01('0xa3')]);_0x34929d[_0x3e01('0xa4')]=qs[_0x3e01('0x41')](_[_0x3e01('0xa5')](_0x104313[_0x3e01('0x3f')],_0x42aed1[_0x3e01('0x41')]));_0x34929d[_0x3e01('0xa4')][_0x3e01('0xa6')]=_0x356b97['id'];if(_0x104313[_0x3e01('0x3f')][_0x3e01('0xa7')]){_0x34929d[_0x3e01('0xa4')]=_[_0x3e01('0x30')](_0x34929d[_0x3e01('0xa4')],{'$or':_[_0x3e01('0x35')](_0x34929d['attributes'],function(_0x20ddf4){var _0x43edd1={};_0x43edd1[_0x20ddf4]={'$like':'%'+_0x104313[_0x3e01('0x3f')][_0x3e01('0xa7')]+'%'};return _0x43edd1;})});}if(_0x104313[_0x3e01('0x3f')]['$gte']){var _0x5afbfc=_0x104313[_0x3e01('0x3f')][_0x3e01('0xa8')][_0x3e01('0xa9')](',');var _0x1e7885={};_0x1e7885[_0x5afbfc[0x0]]={'$gte':moment(_0x5afbfc[0x1])['format'](_0x3e01('0xaa'))};_0x34929d[_0x3e01('0xa4')]=_[_0x3e01('0x30')](_0x34929d['where'],_0x1e7885);}_0x34929d=_[_0x3e01('0x30')]({},_0x34929d,_0x104313[_0x3e01('0x48')]);return db[_0x3e01('0x61')][_0x3e01('0x27')]({'where':_0x34929d[_0x3e01('0xa4')]})[_0x3e01('0x17')](function(_0x1cf2d0){_0x28bf30[_0x3e01('0x27')]=_0x1cf2d0;if(_0x104313[_0x3e01('0x3f')][_0x3e01('0x47')]){_0x34929d['include']=[{'all':!![]}];}return db[_0x3e01('0x61')][_0x3e01('0x3a')](_0x34929d);})['then'](function(_0x155f38){_0x28bf30['rows']=_0x155f38;return _0x28bf30;});}})[_0x3e01('0x17')](respondWithFilteredResult(_0x44a7a1,_0x34929d))[_0x3e01('0x3c')](handleError(_0x44a7a1,null));};exports[_0x3e01('0xab')]=function(_0x3a1328,_0x5f50e3){var _0x3d9563={'where':{}},_0x1c176d={},_0x19dfd7={'count':0x0,'rows':[]};return db[_0x3e01('0x36')][_0x3e01('0x4e')]({'where':{'id':_0x3a1328[_0x3e01('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5f50e3,null))[_0x3e01('0x17')](function(_0x3fb876){if(_0x3fb876){_0x1c176d[_0x3e01('0x43')]=_[_0x3e01('0x40')](db[_0x3e01('0x61')][_0x3e01('0x3e')]);_0x1c176d[_0x3e01('0x3f')]=_[_0x3e01('0x40')](_0x3a1328[_0x3e01('0x3f')]);_0x1c176d[_0x3e01('0x41')]=_['intersection'](_0x1c176d[_0x3e01('0x43')],_0x1c176d['query']);_0x3d9563[_0x3e01('0x44')]=_[_0x3e01('0x42')](_0x1c176d['model'],qs[_0x3e01('0x45')](_0x3a1328['query'][_0x3e01('0x45')]));_0x3d9563[_0x3e01('0x44')]=_0x3d9563[_0x3e01('0x44')][_0x3e01('0x46')]?_0x3d9563['attributes']:_0x1c176d[_0x3e01('0x43')];if(!_0x3a1328['query'][_0x3e01('0xa0')](_0x3e01('0xa1'))){_0x3d9563[_0x3e01('0x26')]=qs['limit'](_0x3a1328[_0x3e01('0x3f')]['limit']);_0x3d9563[_0x3e01('0x25')]=qs[_0x3e01('0x25')](_0x3a1328[_0x3e01('0x3f')][_0x3e01('0x25')]);}_0x3d9563[_0x3e01('0xa2')]=qs[_0x3e01('0xa3')](_0x3a1328[_0x3e01('0x3f')][_0x3e01('0xa3')]);_0x3d9563[_0x3e01('0xa4')]=qs[_0x3e01('0x41')](_[_0x3e01('0xa5')](_0x3a1328[_0x3e01('0x3f')],_0x1c176d['filters']));_0x3d9563[_0x3e01('0xa4')][_0x3e01('0xa6')]=_0x3fb876['id'];if(_0x3a1328['query']['filter']){_0x3d9563['where']=_[_0x3e01('0x30')](_0x3d9563[_0x3e01('0xa4')],{'$or':_['map'](_0x3d9563[_0x3e01('0x44')],function(_0x522881){var _0x1b4151={};_0x1b4151[_0x522881]={'$like':'%'+_0x3a1328[_0x3e01('0x3f')]['filter']+'%'};return _0x1b4151;})});}_0x3d9563[_0x3e01('0xa4')][_0x3e01('0x93')]=![];if(_0x3a1328['query']['id']){_0x3d9563[_0x3e01('0xa4')]['id']={'$gt':_0x3a1328[_0x3e01('0x3f')]['id']};}_0x3d9563=_[_0x3e01('0x30')]({},_0x3d9563,_0x3a1328['options']);return db[_0x3e01('0x61')][_0x3e01('0x27')]({'where':_0x3d9563[_0x3e01('0xa4')]})[_0x3e01('0x17')](function(_0x23b686){_0x19dfd7[_0x3e01('0x27')]=_0x23b686;_0x3d9563['include']=[];if(_0x3a1328[_0x3e01('0x3f')][_0x3e01('0xac')]){_0x3d9563['include'][_0x3e01('0xad')]({'model':db[_0x3e01('0x84')],'as':'User','attributes':['id',_0x3e01('0x55'),_0x3e01('0x8e')]});}if(_0x3a1328[_0x3e01('0x3f')]['includeAll']){_0x3d9563[_0x3e01('0xae')]=[{'all':!![]}];}return db[_0x3e01('0x61')]['findAll'](_0x3d9563);})[_0x3e01('0x17')](function(_0x126630){_0x19dfd7[_0x3e01('0xaf')]=_0x126630;return _0x19dfd7;});}})[_0x3e01('0x17')](respondWithFilteredResult(_0x5f50e3,_0x3d9563))[_0x3e01('0x3c')](handleError(_0x5f50e3,null));};exports[_0x3e01('0xb0')]=function(_0x24a0bc,_0x3df2af){return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x24a0bc[_0x3e01('0x4c')]['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x3df2af,null))['then'](function(_0x491261){if(_0x491261){return _0x491261[_0x3e01('0xb1')](_0x24a0bc[_0x3e01('0x4b')][_0x3e01('0x9e')],_['omit'](_0x24a0bc[_0x3e01('0x4b')],[_0x3e01('0x9e'),'id'])||{})[_0x3e01('0xb2')](function(){return db[_0x3e01('0xb3')][_0x3e01('0x3a')]({'attributes':['id',_0x3e01('0x2d'),_0x3e01('0xb4')],'where':{'id':_0x24a0bc[_0x3e01('0x4b')][_0x3e01('0x9e')]}});})[_0x3e01('0x17')](function(_0x19aa2c){socket[_0x3e01('0xb5')](_0x3e01('0xb6'),{'id':Number(_0x24a0bc['params']['id']),'tags':_0x19aa2c||[]});return{'id':Number(_0x24a0bc[_0x3e01('0x4c')]['id']),'tags':_0x19aa2c||[]};});}})[_0x3e01('0x17')](respondWithResult(_0x3df2af,null))[_0x3e01('0x3c')](handleError(_0x3df2af,null));};exports[_0x3e01('0xb7')]=function(_0x18a778,_0x3d8805){return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x18a778['params']['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x3d8805,null))['then'](function(_0x1d094e){if(_0x1d094e){return _0x1d094e[_0x3e01('0xb7')](_0x18a778['query'][_0x3e01('0x9e')]);}})['then'](respondWithStatusCode(_0x3d8805,null))[_0x3e01('0x3c')](handleError(_0x3d8805,null));};exports[_0x3e01('0x7b')]=function(_0x2d2213,_0x58ffc9){var _0x33fc33=moment()['unix']()[_0x3e01('0xb8')]();var _0x4e46ca=path[_0x3e01('0x76')](config['root'],_0x3e01('0xb9'),'files',_0x3e01('0xba'));var _0x11482a=path[_0x3e01('0x76')](config['root'],_0x3e01('0xb9'),'files',_0x3e01('0xbb'));var _0x2a82ac=path[_0x3e01('0x76')](_0x4e46ca,_0x33fc33);var _0x17cbd9=util['format'](_0x3e01('0xbc'),_0x2d2213['params']['id'],_0x33fc33);var _0x87b546=path['join'](_0x4e46ca,_0x17cbd9);var _0x123239=[];_0x123239[_0x3e01('0xad')]({'model':db[_0x3e01('0x84')],'as':_0x3e01('0x84'),'attributes':['id','fullname'],'raw':!![]});_0x123239[_0x3e01('0xad')]({'model':db[_0x3e01('0x65')],'as':'Contact','attributes':['id','firstName',_0x3e01('0xbd')],'raw':!![]});if(_0x2d2213[_0x3e01('0x3f')]['attachments']){_0x123239[_0x3e01('0xad')]({'model':db['Attachment'],'as':_0x3e01('0x73'),'raw':!![]});}var _0x1c455a=[{'model':db[_0x3e01('0x61')],'as':_0x3e01('0x83'),'attributes':['id',_0x3e01('0x4b'),_0x3e01('0x90'),_0x3e01('0x92'),_0x3e01('0x93'),'read'],'include':_0x123239}];_0x1c455a[_0x3e01('0xad')]({'model':db[_0x3e01('0x4f')],'as':_0x3e01('0xbe'),'attributes':['id',_0x3e01('0x2d')]});_0x1c455a['push']({'model':db[_0x3e01('0x84')],'as':_0x3e01('0xbf'),'attributes':['id',_0x3e01('0x55')]});return db['ChatInteraction'][_0x3e01('0x49')]({'where':{'id':_0x2d2213[_0x3e01('0x4c')]['id']},'include':_0x1c455a})[_0x3e01('0x17')](handleEntityNotFound(_0x58ffc9,null))[_0x3e01('0x17')](function(_0x5ef330){if(_0x5ef330){var _0x5ab1c7=_0x5ef330[_0x3e01('0xc0')]({'plain':!![]});fs[_0x3e01('0xc1')](_0x2a82ac);var _0x20b398={'channel':_0x3e01('0xc2'),'account':_0x5ab1c7[_0x3e01('0xbe')][_0x3e01('0x2d')],'agent':_0x5ab1c7['Owner']?_0x5ab1c7[_0x3e01('0xbf')]['fullname']:_0x3e01('0xc3'),'createdAt':moment(_0x5ab1c7[_0x3e01('0x90')])['format'](_0x3e01('0xaa'))[_0x3e01('0xb8')](),'closedAt':_0x5ab1c7[_0x3e01('0x71')]?moment(_0x5ab1c7[_0x3e01('0xc4')])[_0x3e01('0x7f')](_0x3e01('0xaa'))['toString']():'','disposition':_0x5ab1c7['disposition'],'chatInfo':{'browser':_0x5ab1c7[_0x3e01('0xc5')],'os':_0x5ab1c7[_0x3e01('0xc6')],'referer':_0x5ab1c7[_0x3e01('0xc7')],'customerIp':_0x5ab1c7[_0x3e01('0xc8')],'customerPort':_0x5ab1c7[_0x3e01('0xc9')]?_0x5ab1c7[_0x3e01('0xc9')]:_0x3e01('0xc3')},'messages':_(_0x5ab1c7[_0x3e01('0x83')])[_0x3e01('0xca')]()[_0x3e01('0xa7')]({'secret':![]})[_0x3e01('0x35')](function(_0x37fe2c){if(_0x37fe2c[_0x3e01('0x73')]){var _0x3af1a3=path['join'](_0x11482a,_0x37fe2c['Attachment'][_0x3e01('0x7a')]);if(fs['existsSync'](_0x3af1a3)){fs['createReadStream'](_0x3af1a3)[_0x3e01('0xcb')](fs[_0x3e01('0xcc')](path['join'](_0x2a82ac,_0x37fe2c[_0x3e01('0x73')][_0x3e01('0x7a')])));}}return{'date':moment(_0x37fe2c[_0x3e01('0x90')])[_0x3e01('0x7f')](_0x3e01('0xaa'))[_0x3e01('0xb8')](),'sender':_0x37fe2c[_0x3e01('0x92')]===_0x3e01('0x60')?_0x37fe2c[_0x3e01('0x84')]?_0x37fe2c[_0x3e01('0x84')][_0x3e01('0x55')]:_0x3e01('0x88'):_0x37fe2c[_0x3e01('0xcd')]['firstName']+(_0x37fe2c[_0x3e01('0xcd')][_0x3e01('0xbd')]?'\x20'+_0x37fe2c['Contact'][_0x3e01('0xbd')]:''),'body':_0x37fe2c[_0x3e01('0x73')]?_0x37fe2c['Attachment'][_0x3e01('0x7a')]:_0x37fe2c[_0x3e01('0x4b')],'direction':_0x37fe2c['direction']===_0x3e01('0x60')?'A':'C','secret':_0x37fe2c[_0x3e01('0x93')],'read':_0x37fe2c[_0x3e01('0xce')],'attachment':_0x37fe2c[_0x3e01('0x73')]};})[_0x3e01('0xcf')]()};return ejs[_0x3e01('0xd0')](path['join'](config[_0x3e01('0x77')],_0x3e01('0xb9'),_0x3e01('0xd1'),_0x3e01('0xd2')),{'interaction':_0x20b398})[_0x3e01('0x17')](function(_0x537efe){var _0x4c65da=path[_0x3e01('0x76')](_0x2a82ac,_0x3e01('0xd3')+_0x5ab1c7['id']+'-'+_0x33fc33+_0x3e01('0xd4'));var _0x4c9c1b={'path':_0x4c65da,'channel':'Chat','interactionId':_0x5ab1c7['id']};return pdf[_0x3e01('0xd5')](_0x537efe,_0x4c9c1b);})['then'](function(){return new Promise(function(_0x25a221,_0x1313d8){zipdir(_0x2a82ac,{'saveTo':_0x87b546},function(_0x392378,_0x4d398e){if(_0x392378)return _0x1313d8(_0x392378);return _0x25a221(_0x4d398e);});})['then'](function(){return new BPromise(function(_0x323e19,_0x93bbb4){rimraf(_0x2a82ac,function(_0x1e3869){if(_0x1e3869)_0x93bbb4(_0x1e3869);return _0x323e19();});});})[_0x3e01('0x17')](function(){return _0x58ffc9[_0x3e01('0x7b')](_0x87b546,_0x17cbd9,function(_0x50fcc6){if(_0x50fcc6){logger[_0x3e01('0x1c')](_0x3e01('0xd6'),_0x50fcc6);}else{fs['unlinkSync'](_0x87b546);}});});});}else{return _0x58ffc9[_0x3e01('0x22')](0xc8);}})[_0x3e01('0x3c')](handleError(_0x58ffc9,null));};
\ No newline at end of file
+var _0x3b93=['agent_fullname','[%s]\x20%s:\x20%s\x0a','secret','appendFileSync','MailAccount','CloudProvider','Smtp','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','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','split','YYYY-MM-DD\x20HH:mm:ss','rows','getMyMessages','includeAgent','push','addTags','setTags','spread','Tag','chatInteractionTags:save','removeTags','download','unix','toString','server','files','attachments','transcript-%d-%s.zip','firstName','createdAt','ChatWebsite','Owner','get','mkdirSync','Account','N.A.','closedAt','browserName','osName','referer','customerPort','tail','existsSync','createReadStream','createWriteStream','lastName','direction','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','err','unlinkSync','rimraf','zip-dir','moment','bluebird','mustache','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','redis','defaults','localhost','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','status','end','json','offset','limit','undefined','count','update','destroy','name','send','render','merge','body','contact','agent','interaction','map','ChatInteraction','rawAttributes','fieldName','type','getOptions','findAll','chat','query','user','show','model','keys','filters','attributes','intersection','fields','length','includeAll','include','options','create','find','params','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','fullname','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','follow','vidaooMetadata','parse','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','Contact','abandon','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','attachId','offline-chat/','join','close','mailTranscript','root','server/files/chat/upload/','format','now','pathTranscript','ChatMessage','Messages','User','ChatWebsiteId','ContactId','%s%d','agentAlias','System','customer','Visitor','agentIdentifier','agent_alias','alias'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x3b93,0x117));var _0x33b9=function(_0x553b1f,_0x3d98ff){_0x553b1f=_0x553b1f-0x0;var _0x249314=_0x3b93[_0x553b1f];return _0x249314;};'use strict';var rimraf=require(_0x33b9('0x0'));var zipdir=require(_0x33b9('0x1'));var rp=require('request-promise');var moment=require(_0x33b9('0x2'));var BPromise=require(_0x33b9('0x3'));var Mustache=require(_0x33b9('0x4'));var util=require(_0x33b9('0x5'));var path=require(_0x33b9('0x6'));var ejs=require(_0x33b9('0x7'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x33b9('0x8'));var interaction=require(_0x33b9('0x9'));var qs=require(_0x33b9('0xa'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x33b9('0xb'));var config=require(_0x33b9('0xc'));var db=require('../../mysqldb')['db'];config[_0x33b9('0xd')]=_[_0x33b9('0xe')](config['redis'],{'host':_0x33b9('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x33b9('0xd')]));require('./chatInteraction.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x33b9('0x10')][_0x33b9('0x11')]({'port':0x232b});var client9004=jayson[_0x33b9('0x10')][_0x33b9('0x11')]({'port':0x232c});function respondWithRpcPromise(_0x117d30,_0x196611,_0x22307c,_0xd2bb3c){return new BPromise(function(_0x360f9a,_0x1d27c8){var _0x1df204=_0xd2bb3c||client;return _0x1df204[_0x33b9('0x12')](_0x117d30,_0x22307c)[_0x33b9('0x13')](function(_0x48c7fa){logger[_0x33b9('0x14')](_0x33b9('0x15'),_0x196611,_0x33b9('0x16'));logger[_0x33b9('0x17')](_0x33b9('0x18'),_0x196611,_0x33b9('0x16'),JSON['stringify'](_0x48c7fa));if(_0x48c7fa[_0x33b9('0x19')]){if(_0x48c7fa[_0x33b9('0x19')]['code']===0x1f4){logger['error'](_0x33b9('0x15'),_0x196611,_0x48c7fa[_0x33b9('0x19')][_0x33b9('0x1a')]);return _0x1d27c8(_0x48c7fa['error']['message']);}logger[_0x33b9('0x19')](_0x33b9('0x15'),_0x196611,_0x48c7fa[_0x33b9('0x19')][_0x33b9('0x1a')]);return _0x360f9a(_0x48c7fa[_0x33b9('0x19')]['message']);}else{logger[_0x33b9('0x14')](_0x33b9('0x15'),_0x196611,_0x33b9('0x16'));_0x360f9a(_0x48c7fa['result']['message']);}})[_0x33b9('0x1b')](function(_0x4a1f98){logger[_0x33b9('0x19')](_0x33b9('0x15'),_0x196611,_0x4a1f98);_0x1d27c8(_0x4a1f98);});});}function respondWithStatusCode(_0x4649cc,_0x45b853){_0x45b853=_0x45b853||0xcc;return function(_0x35fa97){if(_0x35fa97){return _0x4649cc[_0x33b9('0x1c')](_0x45b853);}return _0x4649cc[_0x33b9('0x1d')](_0x45b853)[_0x33b9('0x1e')]();};}function respondWithResult(_0x1fec9a,_0x29648e){_0x29648e=_0x29648e||0xc8;return function(_0x377421){if(_0x377421){return _0x1fec9a[_0x33b9('0x1d')](_0x29648e)[_0x33b9('0x1f')](_0x377421);}};}function respondWithFilteredResult(_0x25a7dc,_0xadfabc){return function(_0x3066a1){if(_0x3066a1){var _0x39737b=typeof _0xadfabc[_0x33b9('0x20')]==='undefined'&&typeof _0xadfabc[_0x33b9('0x21')]===_0x33b9('0x22');var _0x578fd5=_0x3066a1[_0x33b9('0x23')];var _0x40bca7=_0x39737b?0x0:_0xadfabc['offset'];var _0x555578=_0x39737b?_0x3066a1[_0x33b9('0x23')]:_0xadfabc[_0x33b9('0x20')]+_0xadfabc[_0x33b9('0x21')];var _0x54c5bf;if(_0x555578>=_0x578fd5){_0x555578=_0x578fd5;_0x54c5bf=0xc8;}else{_0x54c5bf=0xce;}_0x25a7dc[_0x33b9('0x1d')](_0x54c5bf);return _0x25a7dc['set']('Content-Range',_0x40bca7+'-'+_0x555578+'/'+_0x578fd5)[_0x33b9('0x1f')](_0x3066a1);}return null;};}function saveUpdates(_0x4491c3){return function(_0x531cc4){if(_0x531cc4){return _0x531cc4[_0x33b9('0x24')](_0x4491c3)['then'](function(_0x45a6a2){return _0x45a6a2;});}return null;};}function removeEntity(_0x3ff9b4){return function(_0x41e6b3){if(_0x41e6b3){return _0x41e6b3[_0x33b9('0x25')]()[_0x33b9('0x13')](function(){_0x3ff9b4[_0x33b9('0x1d')](0xcc)[_0x33b9('0x1e')]();});}};}function handleEntityNotFound(_0x4a3635){return function(_0x3b4e90){if(!_0x3b4e90){_0x4a3635[_0x33b9('0x1c')](0x194);}return _0x3b4e90;};}function handleError(_0x1ca809,_0x54ae42){_0x54ae42=_0x54ae42||0x1f4;return function(_0x3f49c5){logger['error'](_0x3f49c5['stack']);if(_0x3f49c5[_0x33b9('0x26')]){delete _0x3f49c5['name'];}_0x1ca809[_0x33b9('0x1d')](_0x54ae42)[_0x33b9('0x27')](_0x3f49c5);};}function getMustacheRender(_0x3a952a,_0x20af16){return Mustache[_0x33b9('0x28')](_0x3a952a,_[_0x33b9('0x29')](_0x20af16[_0x33b9('0x2a')],{'contact':_0x20af16[_0x33b9('0x2b')],'message':_0x20af16[_0x33b9('0x1a')],'agent':_0x20af16[_0x33b9('0x2c')],'interaction':_0x20af16[_0x33b9('0x2d')],'account':_0x20af16['account']}))||'';}exports['index']=function(_0x55ce2e,_0x29c622){var _0x1aaacc={};var _0x2cb6dc=_[_0x33b9('0x2e')](db[_0x33b9('0x2f')][_0x33b9('0x30')],function(_0x5cc813){return{'name':_0x5cc813[_0x33b9('0x31')],'type':_0x5cc813[_0x33b9('0x32')]['key']};});_0x1aaacc=qs[_0x33b9('0x33')](_0x2cb6dc,_0x55ce2e);return interaction[_0x33b9('0x34')](_0x33b9('0x35'),_0x55ce2e[_0x33b9('0x36')],_0x55ce2e[_0x33b9('0x37')],_0x1aaacc,_0x2cb6dc)[_0x33b9('0x13')](respondWithFilteredResult(_0x29c622,_0x1aaacc))[_0x33b9('0x1b')](handleError(_0x29c622,null));};exports[_0x33b9('0x38')]=function(_0x2b4181,_0x1343da){var _0x1ca7e7={'raw':![],'where':{'id':_0x2b4181['params']['id']}},_0xa8682e={};_0xa8682e[_0x33b9('0x39')]=_['keys'](db[_0x33b9('0x2f')][_0x33b9('0x30')]);_0xa8682e[_0x33b9('0x36')]=_[_0x33b9('0x3a')](_0x2b4181[_0x33b9('0x36')]);_0xa8682e[_0x33b9('0x3b')]=_['intersection'](_0xa8682e[_0x33b9('0x39')],_0xa8682e[_0x33b9('0x36')]);_0x1ca7e7[_0x33b9('0x3c')]=_[_0x33b9('0x3d')](_0xa8682e[_0x33b9('0x39')],qs[_0x33b9('0x3e')](_0x2b4181[_0x33b9('0x36')][_0x33b9('0x3e')]));_0x1ca7e7[_0x33b9('0x3c')]=_0x1ca7e7['attributes'][_0x33b9('0x3f')]?_0x1ca7e7[_0x33b9('0x3c')]:_0xa8682e[_0x33b9('0x39')];if(_0x2b4181[_0x33b9('0x36')][_0x33b9('0x40')]){_0x1ca7e7[_0x33b9('0x41')]=[{'all':!![]}];}_0x1ca7e7=_[_0x33b9('0x29')]({},_0x1ca7e7,_0x2b4181[_0x33b9('0x42')]);return db['ChatInteraction']['find'](_0x1ca7e7)[_0x33b9('0x13')](handleEntityNotFound(_0x1343da,null))['then'](respondWithResult(_0x1343da,null))['catch'](handleError(_0x1343da,null));};exports['create']=function(_0x3ac608,_0x59ef4e){return db['ChatInteraction'][_0x33b9('0x43')](_0x3ac608[_0x33b9('0x2a')],{})[_0x33b9('0x13')](respondWithResult(_0x59ef4e,0xc9))['catch'](handleError(_0x59ef4e,null));};exports[_0x33b9('0x24')]=function(_0x2b74f1,_0x356293){if(_0x2b74f1[_0x33b9('0x2a')]['id']){delete _0x2b74f1[_0x33b9('0x2a')]['id'];}return db[_0x33b9('0x2f')][_0x33b9('0x44')]({'where':{'id':_0x2b74f1[_0x33b9('0x45')]['id']}})[_0x33b9('0x13')](handleEntityNotFound(_0x356293,null))['then'](saveUpdates(_0x2b74f1[_0x33b9('0x2a')],null))[_0x33b9('0x13')](respondWithResult(_0x356293,null))[_0x33b9('0x1b')](handleError(_0x356293,null));};exports[_0x33b9('0x25')]=function(_0x49b8c5,_0x4767fe){return db[_0x33b9('0x2f')][_0x33b9('0x44')]({'where':{'id':_0x49b8c5[_0x33b9('0x45')]['id']}})[_0x33b9('0x13')](handleEntityNotFound(_0x4767fe,null))[_0x33b9('0x13')](removeEntity(_0x4767fe,null))[_0x33b9('0x1b')](handleError(_0x4767fe,null));};exports['describe']=function(_0x5380f2,_0x485b65){return db[_0x33b9('0x2f')][_0x33b9('0x46')]()['then'](respondWithResult(_0x485b65,null))[_0x33b9('0x1b')](handleError(_0x485b65,null));};exports[_0x33b9('0x47')]=function(_0x23d513,_0x6775f9){var _0x19cac5=_0x23d513[_0x33b9('0x45')]['id'];var _0x361293;var _0xfa669d;var _0x140551;return db['ChatInteraction']['findOne']({'where':{'id':_0x19cac5}})[_0x33b9('0x13')](function(_0xe5adc){_0x361293=_0xe5adc;return db['ChatWebsite'][_0x33b9('0x48')]({'where':{'id':_0xe5adc['ChatWebsiteId']},'attributes':['id',_0x33b9('0x49'),_0x33b9('0x4a'),_0x33b9('0x4b'),_0x33b9('0x4c'),'vidaooMetadata'],'raw':!![]});})[_0x33b9('0x13')](function(_0x4ed692){if(_0x4ed692&&_0x4ed692[_0x33b9('0x49')]&&_0x4ed692[_0x33b9('0x4a')]){_0xfa669d=_0x4ed692;var _0x2124fc={'interaction':{'id':_0x19cac5},'agent':{'id':_0x23d513[_0x33b9('0x37')]['id'],'name':_0x23d513[_0x33b9('0x37')][_0x33b9('0x26')],'fullname':_0x23d513['user'][_0x33b9('0x4d')],'email':_0x23d513[_0x33b9('0x37')]['email']},'contact':_0x23d513[_0x33b9('0x2a')]['contact'],'account':_0x23d513[_0x33b9('0x2a')]['account']};var _0x34392a={'rejectUnauthorized':![],'method':_0x33b9('0x4e'),'url':_0x33b9('0x4f'),'headers':{'X-APIKEY':_0x4ed692[_0x33b9('0x49')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x23d513[_0x33b9('0x37')][_0x33b9('0x50')]],'buttons':null,'topic':_0xfa669d[_0x33b9('0x4b')],'note':_[_0x33b9('0x51')](_0xfa669d['vidaooNote'])?null:getMustacheRender(_0xfa669d[_0x33b9('0x4c')],_0x2124fc),'metadata':null},'redirect':_0x33b9('0x52'),'json':!![]};try{if(!_[_0x33b9('0x51')](_0xfa669d[_0x33b9('0x53')])){var _0x25d262=getMustacheRender(_0xfa669d[_0x33b9('0x53')],_0x2124fc);var _0x5222f2=JSON[_0x33b9('0x54')](_0x25d262);_0x34392a['body'][_0x33b9('0x55')]=_0x5222f2;}}catch(_0x307cd8){throw new db['Sequelize'][(_0x33b9('0x56'))](_0x33b9('0x57'));}return rp(_0x34392a);}else{throw new db[(_0x33b9('0x58'))]['ValidationError'](_0x33b9('0x59'));}})[_0x33b9('0x13')](function(_0x9b170d){_0x140551=_0x9b170d;if(_0x140551['id']){var _0x4e40b0={'body':_0x140551[_0x33b9('0x5a')],'ChatWebsiteId':_0xfa669d['id'],'ChatInteractionId':_0x361293['id'],'direction':_0x33b9('0x5b'),'UserId':_0x23d513['user']['id']};return db['ChatMessage'][_0x33b9('0x43')](_0x4e40b0,{});}else{throw new db[(_0x33b9('0x58'))][(_0x33b9('0x56'))](_0x33b9('0x5c'));}})[_0x33b9('0x13')](function(){return _0x361293[_0x33b9('0x5d')]({'vidaooSessionId':_0x140551['id']});})[_0x33b9('0x13')](respondWithResult(_0x6775f9,null))['catch'](handleError(_0x6775f9,null));};exports['customUpdate']=function(_0x6ff65,_0x1f15bf){if(_0x6ff65[_0x33b9('0x2a')]['id']){delete _0x6ff65[_0x33b9('0x2a')]['id'];}return db[_0x33b9('0x2f')]['find']({'where':{'id':_0x6ff65['params']['id']},'include':[{'model':db[_0x33b9('0x5e')],'as':_0x33b9('0x5f')}]})[_0x33b9('0x13')](handleEntityNotFound(_0x1f15bf,null))[_0x33b9('0x13')](saveUpdates(_0x6ff65[_0x33b9('0x2a')],null))['then'](respondWithResult(_0x1f15bf,null))[_0x33b9('0x1b')](handleError(_0x1f15bf,null));};exports[_0x33b9('0x60')]=function(_0x1b56c7,_0x38d3b4){if(_0x1b56c7['body']['id']){delete _0x1b56c7['body']['id'];}return db[_0x33b9('0x2f')]['find']({'where':{'id':_0x1b56c7[_0x33b9('0x45')]['id']}})[_0x33b9('0x13')](function(_0x68e06c){if(!_0x68e06c){logger[_0x33b9('0x19')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x33b9('0x60'),0x194,_0x33b9('0x61'));_0x38d3b4[_0x33b9('0x1c')](0x194);}else{if(_0x68e06c[_0x33b9('0x62')]){throw new db[(_0x33b9('0x58'))][(_0x33b9('0x56'))](_0x33b9('0x63'));}}return _0x68e06c;})[_0x33b9('0x13')](function(_0x52f870){if(_0x52f870){return _0x52f870[_0x33b9('0x24')]({'closed':_0x1b56c7[_0x33b9('0x2a')][_0x33b9('0x64')],'disposition':_0x1b56c7[_0x33b9('0x2a')][_0x33b9('0x65')]})[_0x33b9('0x13')](function(_0x274f0c){return _0x274f0c;});}})[_0x33b9('0x13')](function(){return respondWithRpcPromise('AbandonInteraction','abandon',_0x1b56c7[_0x33b9('0x2a')],client9004);})[_0x33b9('0x13')](respondWithResult(_0x38d3b4,null))['catch'](handleError(_0x38d3b4,null));};exports['attachmentUpload']=function(_0x4138bc,_0x46476e){_0x4138bc['body'][_0x33b9('0x26')]=_0x4138bc[_0x33b9('0x66')][_0x33b9('0x67')];_0x4138bc[_0x33b9('0x2a')][_0x33b9('0x68')]=_0x4138bc[_0x33b9('0x66')][_0x33b9('0x69')];_0x4138bc[_0x33b9('0x2a')]['type']=_0x4138bc[_0x33b9('0x66')][_0x33b9('0x6a')];return db[_0x33b9('0x6b')][_0x33b9('0x43')](_0x4138bc[_0x33b9('0x2a')])['then'](respondWithResult(_0x46476e,0xc9))[_0x33b9('0x1b')](handleError(_0x46476e,null));};exports[_0x33b9('0x6c')]=function(_0x1899f4,_0x56cc0d){return db[_0x33b9('0x2f')][_0x33b9('0x48')]({'where':{'id':_0x1899f4[_0x33b9('0x45')]['id']},'raw':!![]})[_0x33b9('0x13')](handleEntityNotFound(_0x56cc0d,null))[_0x33b9('0x13')](function(_0x19db4e){if(_0x19db4e){if(_0x19db4e[_0x33b9('0x64')]){return _0x56cc0d[_0x33b9('0x1d')](0x193)[_0x33b9('0x1f')]({'status':0x193,'message':_0x33b9('0x6d')});}return db[_0x33b9('0x6b')][_0x33b9('0x48')]({'where':{'id':_0x1899f4[_0x33b9('0x36')][_0x33b9('0x6e')]},'raw':!![]})[_0x33b9('0x13')](handleEntityNotFound(_0x56cc0d,null));}})[_0x33b9('0x13')](function(_0x68dc9){if(_0x68dc9){var _0x4e7598=_0x68dc9['ChatOfflineMessageId']!==null;var _0x2f0df1=path['join'](config['root'],'server/files/attachments/');if(_0x4e7598){_0x2f0df1=path['join'](_0x2f0df1,_0x33b9('0x6f'));}var _0x5c76b0=path[_0x33b9('0x70')](_0x2f0df1,_0x68dc9[_0x33b9('0x68')]);return _0x56cc0d['download'](_0x5c76b0);}})['catch'](handleError(_0x56cc0d,null));};exports[_0x33b9('0x71')]=function(_0x2f839a,_0xa9740a){var _0x5bde69=null;var _0x503b98=null;var _0x3f00e0=null;if(_0x2f839a['body']['id']){delete _0x2f839a[_0x33b9('0x2a')]['id'];}if(_0x2f839a[_0x33b9('0x2a')][_0x33b9('0x72')]){_0x3f00e0=path[_0x33b9('0x70')](config[_0x33b9('0x73')],_0x33b9('0x74'),util[_0x33b9('0x75')]('transcript-%s.txt',Date[_0x33b9('0x76')]()));_0x2f839a[_0x33b9('0x2a')][_0x33b9('0x77')]=_0x3f00e0;}return db[_0x33b9('0x2f')][_0x33b9('0x44')]({'where':{'id':_0x2f839a['params']['id']},'include':[{'model':db[_0x33b9('0x78')],'as':_0x33b9('0x79'),'include':[{'model':db[_0x33b9('0x7a')],'as':_0x33b9('0x7a')}]}]})[_0x33b9('0x13')](handleEntityNotFound(_0xa9740a,null))[_0x33b9('0x13')](saveUpdates(_0x2f839a[_0x33b9('0x2a')],null))['then'](function(_0x57aee8){if(_0x57aee8){_0x5bde69=_0x57aee8;return db['ChatWebsite']['find']({'where':{'id':_0x5bde69[_0x33b9('0x7b')]}});}})[_0x33b9('0x13')](function(_0x2801ec){if(_0x2801ec){_0x503b98=_0x2801ec;return db[_0x33b9('0x5e')][_0x33b9('0x44')]({'where':{'id':_0x5bde69[_0x33b9('0x7c')]}});}})[_0x33b9('0x13')](function(_0x25ebab){if(_0x25ebab){if(_0x3f00e0){var _0x5f2dbb=null;for(var _0x17f8eb=0x1;_0x17f8eb<_0x5bde69[_0x33b9('0x79')]['length'];++_0x17f8eb){_0x5f2dbb=_0x5bde69[_0x33b9('0x79')][_0x17f8eb];var _0x3a56af=_0x5f2dbb[_0x33b9('0x62')]?util['format'](_0x33b9('0x7d'),_0x503b98[_0x33b9('0x7e')],_0x5f2dbb['UserId']):_0x33b9('0x7f');var _0x21c680=_0x2f839a[_0x33b9('0x2a')][_0x33b9('0x80')]||util[_0x33b9('0x75')](_0x33b9('0x7d'),_0x33b9('0x81'),_0x5f2dbb['ContactId']);switch(_0x503b98[_0x33b9('0x82')]){case'website_alias':_0x3a56af=_0x5f2dbb['UserId']?util[_0x33b9('0x75')](_0x33b9('0x7d'),_0x503b98[_0x33b9('0x7e')],_0x5f2dbb[_0x33b9('0x62')]):'System';break;case _0x33b9('0x83'):_0x3a56af=_0x5f2dbb[_0x33b9('0x62')]?_0x5f2dbb[_0x33b9('0x7a')][_0x33b9('0x84')]||_0x5f2dbb[_0x33b9('0x7a')]['fullname']:_0x33b9('0x7f');break;case _0x33b9('0x85'):_0x3a56af=_0x5f2dbb['UserId']?_0x5f2dbb[_0x33b9('0x7a')][_0x33b9('0x4d')]:_0x33b9('0x7f');break;default:_0x3a56af=_0x5f2dbb['UserId']?util[_0x33b9('0x75')](_0x33b9('0x7d'),_0x503b98[_0x33b9('0x7e')],_0x5f2dbb[_0x33b9('0x62')]):_0x33b9('0x7f');}var _0x5433dc=util[_0x33b9('0x75')](_0x33b9('0x86'),moment(_0x5f2dbb['createdAt'])['format']('MM/DD/YYYY\x20HH:mm:ss'),_0x5f2dbb['direction']==='in'?_0x21c680:_0x3a56af,_0x5f2dbb[_0x33b9('0x2a')]);if(!_0x5f2dbb[_0x33b9('0x87')]){fs[_0x33b9('0x88')](_0x3f00e0,_0x5433dc);}}return db[_0x33b9('0x89')][_0x33b9('0x48')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db[_0x33b9('0x8a')],'as':_0x33b9('0x8a'),'raw':!![]}]}]});}}})[_0x33b9('0x13')](function(_0x495564){if(!_0x495564||!_0x495564[_0x33b9('0x8b')]||!_0x2f839a[_0x33b9('0x2a')])return _0x5bde69;var _0x4a72e8=_0x495564[_0x33b9('0x8c')]();return respondWithRpcPromise(_0x33b9('0x8d'),_0x33b9('0x8e'),{'account':_0x4a72e8,'message':{'from':util[_0x33b9('0x75')](_0x33b9('0x8f'),_0x495564[_0x33b9('0x26')],_0x495564[_0x33b9('0x50')]||_0x495564[_0x33b9('0x8b')][_0x33b9('0x37')]),'to':_0x2f839a['body'][_0x33b9('0x72')],'subject':_0x33b9('0x90'),'text':util['format'](_0x33b9('0x91'),_0x2f839a['body'][_0x33b9('0x72')]),'attachments':[{'path':_0x3f00e0}]}})[_0x33b9('0x13')](function(){return _0x5bde69;})[_0x33b9('0x1b')](function(_0x1fbc6e){logger[_0x33b9('0x19')](_0x1fbc6e);});})['then'](respondWithStatusCode(_0xa9740a,0xc8))[_0x33b9('0x1b')](handleError(_0xa9740a,null));};exports[_0x33b9('0x92')]=function(_0x1bd61e,_0x5dc1d1){return db['ChatMessage'][_0x33b9('0x44')]({'where':{'id':_0x1bd61e[_0x33b9('0x45')]['id']}})[_0x33b9('0x13')](handleEntityNotFound(_0x5dc1d1,null))[_0x33b9('0x13')](function(_0x3b9dda){if(_0x3b9dda){return _0x3b9dda['addMessage'](_0x1bd61e[_0x33b9('0x2a')][_0x33b9('0x93')],_[_0x33b9('0x94')](_0x1bd61e[_0x33b9('0x2a')],[_0x33b9('0x93'),'id'])||{});}})[_0x33b9('0x13')](respondWithResult(_0x5dc1d1,null))['catch'](handleError(_0x5dc1d1,null));};exports[_0x33b9('0x95')]=function(_0x10b4a5,_0x4e76d4){var _0x1a7a02={'raw':![],'where':{}};var _0x176508={};var _0x17bd7f={'count':0x0,'rows':[]};return db[_0x33b9('0x2f')][_0x33b9('0x48')]({'where':{'id':_0x10b4a5[_0x33b9('0x45')]['id']}})[_0x33b9('0x13')](handleEntityNotFound(_0x4e76d4,null))[_0x33b9('0x13')](function(_0x4a4a50){if(_0x4a4a50){_0x176508[_0x33b9('0x39')]=_['keys'](db[_0x33b9('0x78')][_0x33b9('0x30')]);_0x176508[_0x33b9('0x36')]=_[_0x33b9('0x3a')](_0x10b4a5[_0x33b9('0x36')]);_0x176508[_0x33b9('0x3b')]=_[_0x33b9('0x3d')](_0x176508['model'],_0x176508[_0x33b9('0x36')]);_0x1a7a02[_0x33b9('0x3c')]=_[_0x33b9('0x3d')](_0x176508[_0x33b9('0x39')],qs['fields'](_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x3e')]));_0x1a7a02[_0x33b9('0x3c')]=_0x1a7a02[_0x33b9('0x3c')]['length']?_0x1a7a02[_0x33b9('0x3c')]:_0x176508[_0x33b9('0x39')];if(!_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x96')](_0x33b9('0x97'))){_0x1a7a02['limit']=qs[_0x33b9('0x21')](_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x21')]);_0x1a7a02[_0x33b9('0x20')]=qs[_0x33b9('0x20')](_0x10b4a5[_0x33b9('0x36')]['offset']);}_0x1a7a02[_0x33b9('0x98')]=qs['sort'](_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x99')]);_0x1a7a02[_0x33b9('0x9a')]=qs['filters'](_[_0x33b9('0x9b')](_0x10b4a5[_0x33b9('0x36')],_0x176508[_0x33b9('0x3b')]));_0x1a7a02[_0x33b9('0x9a')][_0x33b9('0x9c')]=_0x4a4a50['id'];if(_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x9d')]){_0x1a7a02[_0x33b9('0x9a')]=_['merge'](_0x1a7a02[_0x33b9('0x9a')],{'$or':_[_0x33b9('0x2e')](_0x1a7a02[_0x33b9('0x3c')],function(_0x5221fa){var _0x3c4201={};_0x3c4201[_0x5221fa]={'$like':'%'+_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x9d')]+'%'};return _0x3c4201;})});}if(_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x9e')]){var _0x3ce0bf=_0x10b4a5[_0x33b9('0x36')][_0x33b9('0x9e')][_0x33b9('0x9f')](',');var _0x2d3942={};_0x2d3942[_0x3ce0bf[0x0]]={'$gte':moment(_0x3ce0bf[0x1])[_0x33b9('0x75')](_0x33b9('0xa0'))};_0x1a7a02[_0x33b9('0x9a')]=_[_0x33b9('0x29')](_0x1a7a02[_0x33b9('0x9a')],_0x2d3942);}_0x1a7a02=_[_0x33b9('0x29')]({},_0x1a7a02,_0x10b4a5[_0x33b9('0x42')]);return db[_0x33b9('0x78')][_0x33b9('0x23')]({'where':_0x1a7a02['where']})[_0x33b9('0x13')](function(_0x2fe2d4){_0x17bd7f['count']=_0x2fe2d4;if(_0x10b4a5[_0x33b9('0x36')]['includeAll']){_0x1a7a02[_0x33b9('0x41')]=[{'all':!![]}];}return db[_0x33b9('0x78')][_0x33b9('0x34')](_0x1a7a02);})[_0x33b9('0x13')](function(_0x433633){_0x17bd7f[_0x33b9('0xa1')]=_0x433633;return _0x17bd7f;});}})['then'](respondWithFilteredResult(_0x4e76d4,_0x1a7a02))['catch'](handleError(_0x4e76d4,null));};exports[_0x33b9('0xa2')]=function(_0x2e2017,_0x5b2e04){var _0x35f96e={'where':{}},_0x9e042a={},_0x3a292c={'count':0x0,'rows':[]};return db[_0x33b9('0x2f')][_0x33b9('0x48')]({'where':{'id':_0x2e2017[_0x33b9('0x45')]['id']}})[_0x33b9('0x13')](handleEntityNotFound(_0x5b2e04,null))[_0x33b9('0x13')](function(_0x23302f){if(_0x23302f){_0x9e042a[_0x33b9('0x39')]=_[_0x33b9('0x3a')](db[_0x33b9('0x78')][_0x33b9('0x30')]);_0x9e042a[_0x33b9('0x36')]=_['keys'](_0x2e2017[_0x33b9('0x36')]);_0x9e042a[_0x33b9('0x3b')]=_[_0x33b9('0x3d')](_0x9e042a['model'],_0x9e042a['query']);_0x35f96e[_0x33b9('0x3c')]=_['intersection'](_0x9e042a[_0x33b9('0x39')],qs[_0x33b9('0x3e')](_0x2e2017[_0x33b9('0x36')]['fields']));_0x35f96e['attributes']=_0x35f96e[_0x33b9('0x3c')][_0x33b9('0x3f')]?_0x35f96e[_0x33b9('0x3c')]:_0x9e042a['model'];if(!_0x2e2017[_0x33b9('0x36')]['hasOwnProperty'](_0x33b9('0x97'))){_0x35f96e[_0x33b9('0x21')]=qs[_0x33b9('0x21')](_0x2e2017[_0x33b9('0x36')][_0x33b9('0x21')]);_0x35f96e['offset']=qs[_0x33b9('0x20')](_0x2e2017[_0x33b9('0x36')][_0x33b9('0x20')]);}_0x35f96e[_0x33b9('0x98')]=qs['sort'](_0x2e2017[_0x33b9('0x36')]['sort']);_0x35f96e['where']=qs[_0x33b9('0x3b')](_[_0x33b9('0x9b')](_0x2e2017[_0x33b9('0x36')],_0x9e042a[_0x33b9('0x3b')]));_0x35f96e[_0x33b9('0x9a')][_0x33b9('0x9c')]=_0x23302f['id'];if(_0x2e2017[_0x33b9('0x36')][_0x33b9('0x9d')]){_0x35f96e[_0x33b9('0x9a')]=_[_0x33b9('0x29')](_0x35f96e['where'],{'$or':_['map'](_0x35f96e[_0x33b9('0x3c')],function(_0x117bdc){var _0x37fdbf={};_0x37fdbf[_0x117bdc]={'$like':'%'+_0x2e2017[_0x33b9('0x36')]['filter']+'%'};return _0x37fdbf;})});}_0x35f96e[_0x33b9('0x9a')][_0x33b9('0x87')]=![];if(_0x2e2017['query']['id']){_0x35f96e[_0x33b9('0x9a')]['id']={'$gt':_0x2e2017[_0x33b9('0x36')]['id']};}_0x35f96e=_[_0x33b9('0x29')]({},_0x35f96e,_0x2e2017[_0x33b9('0x42')]);return db[_0x33b9('0x78')][_0x33b9('0x23')]({'where':_0x35f96e[_0x33b9('0x9a')]})[_0x33b9('0x13')](function(_0x24a9df){_0x3a292c[_0x33b9('0x23')]=_0x24a9df;_0x35f96e[_0x33b9('0x41')]=[];if(_0x2e2017[_0x33b9('0x36')][_0x33b9('0xa3')]){_0x35f96e[_0x33b9('0x41')][_0x33b9('0xa4')]({'model':db[_0x33b9('0x7a')],'as':_0x33b9('0x7a'),'attributes':['id',_0x33b9('0x4d'),_0x33b9('0x84')]});}if(_0x2e2017['query'][_0x33b9('0x40')]){_0x35f96e['include']=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x35f96e);})['then'](function(_0x246bd0){_0x3a292c[_0x33b9('0xa1')]=_0x246bd0;return _0x3a292c;});}})[_0x33b9('0x13')](respondWithFilteredResult(_0x5b2e04,_0x35f96e))[_0x33b9('0x1b')](handleError(_0x5b2e04,null));};exports[_0x33b9('0xa5')]=function(_0x4053ca,_0x527b54){return db[_0x33b9('0x2f')][_0x33b9('0x44')]({'where':{'id':_0x4053ca[_0x33b9('0x45')]['id']}})['then'](handleEntityNotFound(_0x527b54,null))[_0x33b9('0x13')](function(_0x538301){if(_0x538301){return _0x538301[_0x33b9('0xa6')](_0x4053ca[_0x33b9('0x2a')][_0x33b9('0x93')],_[_0x33b9('0x94')](_0x4053ca[_0x33b9('0x2a')],[_0x33b9('0x93'),'id'])||{})[_0x33b9('0xa7')](function(){return db[_0x33b9('0xa8')]['findAll']({'attributes':['id',_0x33b9('0x26'),'color'],'where':{'id':_0x4053ca[_0x33b9('0x2a')][_0x33b9('0x93')]}});})[_0x33b9('0x13')](function(_0x2abecd){socket['emit'](_0x33b9('0xa9'),{'id':Number(_0x4053ca[_0x33b9('0x45')]['id']),'tags':_0x2abecd||[]});return{'id':Number(_0x4053ca['params']['id']),'tags':_0x2abecd||[]};});}})[_0x33b9('0x13')](respondWithResult(_0x527b54,null))[_0x33b9('0x1b')](handleError(_0x527b54,null));};exports[_0x33b9('0xaa')]=function(_0x27e6d3,_0x93cbb6){return db[_0x33b9('0x2f')]['find']({'where':{'id':_0x27e6d3[_0x33b9('0x45')]['id']}})['then'](handleEntityNotFound(_0x93cbb6,null))[_0x33b9('0x13')](function(_0x3cc586){if(_0x3cc586){return _0x3cc586[_0x33b9('0xaa')](_0x27e6d3['query'][_0x33b9('0x93')]);}})[_0x33b9('0x13')](respondWithStatusCode(_0x93cbb6,null))['catch'](handleError(_0x93cbb6,null));};exports[_0x33b9('0xab')]=function(_0x8f7ab9,_0x24b8c2){var _0x815649=moment()[_0x33b9('0xac')]()[_0x33b9('0xad')]();var _0x5a9e59=path[_0x33b9('0x70')](config[_0x33b9('0x73')],_0x33b9('0xae'),_0x33b9('0xaf'),'tmp');var _0x2554b5=path['join'](config[_0x33b9('0x73')],_0x33b9('0xae'),_0x33b9('0xaf'),_0x33b9('0xb0'));var _0x3eb78b=path[_0x33b9('0x70')](_0x5a9e59,_0x815649);var _0x45d960=util['format'](_0x33b9('0xb1'),_0x8f7ab9[_0x33b9('0x45')]['id'],_0x815649);var _0x37ee68=path[_0x33b9('0x70')](_0x5a9e59,_0x45d960);var _0xef6ee0=[];_0xef6ee0[_0x33b9('0xa4')]({'model':db[_0x33b9('0x7a')],'as':_0x33b9('0x7a'),'attributes':['id',_0x33b9('0x4d')],'raw':!![]});_0xef6ee0[_0x33b9('0xa4')]({'model':db[_0x33b9('0x5e')],'as':_0x33b9('0x5f'),'attributes':['id',_0x33b9('0xb2'),'lastName'],'raw':!![]});if(_0x8f7ab9[_0x33b9('0x36')][_0x33b9('0xb0')]){_0xef6ee0[_0x33b9('0xa4')]({'model':db[_0x33b9('0x6b')],'as':'Attachment','raw':!![]});}var _0x2fb400=[{'model':db[_0x33b9('0x78')],'as':'Messages','attributes':['id','body',_0x33b9('0xb3'),'direction',_0x33b9('0x87'),'read'],'include':_0xef6ee0}];_0x2fb400[_0x33b9('0xa4')]({'model':db[_0x33b9('0xb4')],'as':'Account','attributes':['id',_0x33b9('0x26')]});_0x2fb400[_0x33b9('0xa4')]({'model':db[_0x33b9('0x7a')],'as':_0x33b9('0xb5'),'attributes':['id',_0x33b9('0x4d')]});return db[_0x33b9('0x2f')][_0x33b9('0x44')]({'where':{'id':_0x8f7ab9[_0x33b9('0x45')]['id']},'include':_0x2fb400})[_0x33b9('0x13')](handleEntityNotFound(_0x24b8c2,null))[_0x33b9('0x13')](function(_0x59cd2a){if(_0x59cd2a){var _0x2b394a=_0x59cd2a[_0x33b9('0xb6')]({'plain':!![]});fs[_0x33b9('0xb7')](_0x3eb78b);var _0x4d995d={'channel':'Chat','account':_0x2b394a[_0x33b9('0xb8')][_0x33b9('0x26')],'agent':_0x2b394a[_0x33b9('0xb5')]?_0x2b394a[_0x33b9('0xb5')][_0x33b9('0x4d')]:_0x33b9('0xb9'),'createdAt':moment(_0x2b394a[_0x33b9('0xb3')])[_0x33b9('0x75')](_0x33b9('0xa0'))[_0x33b9('0xad')](),'closedAt':_0x2b394a[_0x33b9('0x64')]?moment(_0x2b394a[_0x33b9('0xba')])[_0x33b9('0x75')](_0x33b9('0xa0'))[_0x33b9('0xad')]():'','disposition':_0x2b394a['disposition'],'chatInfo':{'browser':_0x2b394a[_0x33b9('0xbb')],'os':_0x2b394a[_0x33b9('0xbc')],'referer':_0x2b394a[_0x33b9('0xbd')],'customerIp':_0x2b394a['customerIp'],'customerPort':_0x2b394a[_0x33b9('0xbe')]?_0x2b394a[_0x33b9('0xbe')]:'N.A.'},'messages':_(_0x2b394a[_0x33b9('0x79')])[_0x33b9('0xbf')]()[_0x33b9('0x9d')]({'secret':![]})['map'](function(_0x4b8fab){if(_0x4b8fab[_0x33b9('0x6b')]){var _0xc5eb37=path[_0x33b9('0x70')](_0x2554b5,_0x4b8fab[_0x33b9('0x6b')]['basename']);if(fs[_0x33b9('0xc0')](_0xc5eb37)){fs[_0x33b9('0xc1')](_0xc5eb37)['pipe'](fs[_0x33b9('0xc2')](path[_0x33b9('0x70')](_0x3eb78b,_0x4b8fab[_0x33b9('0x6b')][_0x33b9('0x68')])));}}return{'date':moment(_0x4b8fab[_0x33b9('0xb3')])['format'](_0x33b9('0xa0'))['toString'](),'sender':_0x4b8fab['direction']==='out'?_0x4b8fab[_0x33b9('0x7a')]?_0x4b8fab[_0x33b9('0x7a')]['fullname']:_0x33b9('0x7f'):_0x4b8fab[_0x33b9('0x5f')][_0x33b9('0xb2')]+(_0x4b8fab[_0x33b9('0x5f')][_0x33b9('0xc3')]?'\x20'+_0x4b8fab['Contact'][_0x33b9('0xc3')]:''),'body':_0x4b8fab['Attachment']?_0x4b8fab[_0x33b9('0x6b')][_0x33b9('0x68')]:_0x4b8fab[_0x33b9('0x2a')],'direction':_0x4b8fab[_0x33b9('0xc4')]===_0x33b9('0x5b')?'A':'C','secret':_0x4b8fab['secret'],'read':_0x4b8fab[_0x33b9('0xc5')],'attachment':_0x4b8fab[_0x33b9('0x6b')]};})[_0x33b9('0xc6')]()};return ejs[_0x33b9('0xc7')](path[_0x33b9('0x70')](config[_0x33b9('0x73')],_0x33b9('0xae'),_0x33b9('0xc8'),_0x33b9('0xc9')),{'interaction':_0x4d995d})[_0x33b9('0x13')](function(_0x571747){var _0x1aee3c=path[_0x33b9('0x70')](_0x3eb78b,_0x33b9('0xca')+_0x2b394a['id']+'-'+_0x815649+_0x33b9('0xcb'));var _0x183f15={'path':_0x1aee3c,'channel':'Chat','interactionId':_0x2b394a['id']};return pdf['createPdfFromHTML'](_0x571747,_0x183f15);})[_0x33b9('0x13')](function(){return new Promise(function(_0x43e536,_0x1a61a8){zipdir(_0x3eb78b,{'saveTo':_0x37ee68},function(_0xb7b9fd,_0x2e99ba){if(_0xb7b9fd)return _0x1a61a8(_0xb7b9fd);return _0x43e536(_0x2e99ba);});})['then'](function(){return new BPromise(function(_0x431c46,_0x1fa80a){rimraf(_0x3eb78b,function(_0x5a05c8){if(_0x5a05c8)_0x1fa80a(_0x5a05c8);return _0x431c46();});});})[_0x33b9('0x13')](function(){return _0x24b8c2[_0x33b9('0xab')](_0x37ee68,_0x45d960,function(_0x507ae6){if(_0x507ae6){logger[_0x33b9('0x19')](_0x33b9('0xcc'),_0x507ae6);}else{fs[_0x33b9('0xcd')](_0x37ee68);}});});});}else{return _0x24b8c2[_0x33b9('0x1c')](0xc8);}})[_0x33b9('0x1b')](handleError(_0x24b8c2,null));};
\ No newline at end of file
index a25b8ff..95aa671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21c6=['events','../../mysqldb','ChatInteraction','setMaxListeners','save','update','remove','then','setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x403fc7,_0x32931a){var _0x5d0827=function(_0x5ea698){while(--_0x5ea698){_0x403fc7['push'](_0x403fc7['shift']());}};_0x5d0827(++_0x32931a);}(_0x21c6,0x1b0));var _0x621c=function(_0x575f0e,_0x5d722e){_0x575f0e=_0x575f0e-0x0;var _0x495789=_0x21c6[_0x575f0e];return _0x495789;};'use strict';var EventEmitter=require(_0x621c('0x0'));var ChatInteraction=require(_0x621c('0x1'))['db'][_0x621c('0x2')];var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x621c('0x3')](0x0);var events={'afterCreate':_0x621c('0x4'),'afterUpdate':_0x621c('0x5'),'afterDestroy':_0x621c('0x6')};function emitEvent(_0x536dac){return function(_0x28279e,_0xb94a6f,_0xa34df2){_0x28279e['getUsers']({'attributes':['id'],'raw':!![]})[_0x621c('0x7')](function(_0x51e173){_0x28279e[_0x621c('0x8')](_0x621c('0x9'),_0x51e173[_0x621c('0xa')](function(_0x2f2265){return{'id':_0x2f2265['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x28279e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x621c('0x7')](function(_0x7e743a){_0x28279e['setDataValue'](_0x621c('0xb'),_0x7e743a[_0x621c('0xc')]);ChatInteractionEvents['emit'](_0x536dac+':'+_0x28279e['id'],_0x28279e);ChatInteractionEvents[_0x621c('0xd')](_0x536dac,_0x28279e);_0xa34df2(null);})[_0x621c('0xe')](_0xa34df2(null));};}for(var e in events){if(events[_0x621c('0xf')](e)){var event=events[e];ChatInteraction[_0x621c('0x10')](e,emitEvent(event));}}module[_0x621c('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x91b6=['unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','getUsers','setDataValue','map'];(function(_0x3a22be,_0x2436ed){var _0x1085f1=function(_0x230ac2){while(--_0x230ac2){_0x3a22be['push'](_0x3a22be['shift']());}};_0x1085f1(++_0x2436ed);}(_0x91b6,0xd6));var _0x691b=function(_0x4ef230,_0x54f257){_0x4ef230=_0x4ef230-0x0;var _0x4c0d99=_0x91b6[_0x4ef230];return _0x4c0d99;};'use strict';var EventEmitter=require(_0x691b('0x0'));var ChatInteraction=require(_0x691b('0x1'))['db'][_0x691b('0x2')];var ChatMessage=require(_0x691b('0x1'))['db'][_0x691b('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x691b('0x4')](0x0);var events={'afterCreate':_0x691b('0x5'),'afterUpdate':_0x691b('0x6'),'afterDestroy':'remove'};function emitEvent(_0xef1bf){return function(_0xd16cae,_0x1b3375,_0x183568){_0xd16cae[_0x691b('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x35d40d){_0xd16cae[_0x691b('0x8')]('Users',_0x35d40d[_0x691b('0x9')](function(_0x32421b){return{'id':_0x32421b['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0xd16cae['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x42087c){_0xd16cae[_0x691b('0x8')](_0x691b('0xa'),_0x42087c[_0x691b('0xb')]);ChatInteractionEvents[_0x691b('0xc')](_0xef1bf+':'+_0xd16cae['id'],_0xd16cae);ChatInteractionEvents[_0x691b('0xc')](_0xef1bf,_0xd16cae);_0x183568(null);})['catch'](_0x183568(null));};}for(var e in events){if(events[_0x691b('0xd')](e)){var event=events[e];ChatInteraction[_0x691b('0xe')](e,emitEvent(event));}}module[_0x691b('0xf')]=ChatInteractionEvents;
\ No newline at end of file
index 91f0747..b51d3f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa043=['request-promise','path','rimraf','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','api','moment','bluebird'];(function(_0x21580e,_0x23eee3){var _0x927366=function(_0x366eda){while(--_0x366eda){_0x21580e['push'](_0x21580e['shift']());}};_0x927366(++_0x23eee3);}(_0xa043,0x6c));var _0x3a04=function(_0x353ba1,_0x1f437b){_0x353ba1=_0x353ba1-0x0;var _0x1c768f=_0xa043[_0x353ba1];return _0x1c768f;};'use strict';var _=require(_0x3a04('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3a04('0x1'));var moment=require(_0x3a04('0x2'));var BPromise=require(_0x3a04('0x3'));var rp=require(_0x3a04('0x4'));var fs=require('fs');var path=require(_0x3a04('0x5'));var rimraf=require(_0x3a04('0x6'));var config=require('../../config/environment');var attributes=require(_0x3a04('0x7'));module[_0x3a04('0x8')]=function(_0x2ba1b7,_0x3615de){return _0x2ba1b7[_0x3a04('0x9')](_0x3a04('0xa'),attributes,{'tableName':_0x3a04('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x16884d,_0x2861b6,_0x2c572d){if(_0x16884d['changed']('closed')){_0x16884d[_0x3a04('0xc')]=moment()[_0x3a04('0xd')](_0x3a04('0xe'));}_0x2c572d(null,_0x16884d);}},'charset':_0x3a04('0xf'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf6b2=['format','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','chat_interactions','closed'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0xf6b2,0x1b2));var _0x2f6b=function(_0x176d91,_0x2a0829){_0x176d91=_0x176d91-0x0;var _0x1cf8d8=_0xf6b2[_0x176d91];return _0x1cf8d8;};'use strict';var _=require(_0x2f6b('0x0'));var util=require(_0x2f6b('0x1'));var logger=require(_0x2f6b('0x2'))(_0x2f6b('0x3'));var moment=require('moment');var BPromise=require(_0x2f6b('0x4'));var rp=require(_0x2f6b('0x5'));var fs=require('fs');var path=require(_0x2f6b('0x6'));var rimraf=require(_0x2f6b('0x7'));var config=require(_0x2f6b('0x8'));var attributes=require(_0x2f6b('0x9'));module[_0x2f6b('0xa')]=function(_0x26d28f,_0x481066){return _0x26d28f[_0x2f6b('0xb')]('ChatInteraction',attributes,{'tableName':_0x2f6b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2cc4a0,_0x16e889,_0x36677d){if(_0x2cc4a0['changed'](_0x2f6b('0xd'))){_0x2cc4a0['closedAt']=moment()[_0x2f6b('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x36677d(null,_0x2cc4a0);}},'charset':'utf8mb4','collate':_0x2f6b('0xf')});};
\ No newline at end of file
index 74a8dc8..2b6ef28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x917b=['stringify','error','code','message','request\x20sent','result','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','catch','AddTagsToChatInteraction','where','addTags','omit','ids','AddTags','lodash','util','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./chatInteraction.socket','register','then','info','ChatInteraction,\x20%s,\x20%s','debug'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x917b,0x190));var _0xb917=function(_0x55e1ce,_0x5b109d){_0x55e1ce=_0x55e1ce-0x0;var _0x29b8c4=_0x917b[_0x55e1ce];return _0x29b8c4;};'use strict';var _=require(_0xb917('0x0'));var util=require(_0xb917('0x1'));var moment=require('moment');var BPromise=require(_0xb917('0x2'));var rs=require(_0xb917('0x3'));var fs=require('fs');var Redis=require(_0xb917('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb917('0x5'));var config=require(_0xb917('0x6'));var jayson=require(_0xb917('0x7'));var client=jayson['client'][_0xb917('0x8')]({'port':0x232a});config[_0xb917('0x9')]=_[_0xb917('0xa')](config[_0xb917('0x9')],{'host':_0xb917('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb917('0x9')]));require(_0xb917('0xc'))[_0xb917('0xd')](socket);function respondWithRpcPromise(_0x474e28,_0x3b6102,_0x49cee){return new BPromise(function(_0x3e7e7d,_0x57eca0){return client['request'](_0x474e28,_0x49cee)[_0xb917('0xe')](function(_0x187a96){logger[_0xb917('0xf')](_0xb917('0x10'),_0x3b6102,'request\x20sent');logger[_0xb917('0x11')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x3b6102,'request\x20sent',JSON[_0xb917('0x12')](_0x187a96));if(_0x187a96[_0xb917('0x13')]){if(_0x187a96[_0xb917('0x13')][_0xb917('0x14')]===0x1f4){logger[_0xb917('0x13')](_0xb917('0x10'),_0x3b6102,_0x187a96[_0xb917('0x13')][_0xb917('0x15')]);return _0x57eca0(_0x187a96['error']['message']);}logger[_0xb917('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x3b6102,_0x187a96['error']['message']);return _0x3e7e7d(_0x187a96[_0xb917('0x13')][_0xb917('0x15')]);}else{logger[_0xb917('0xf')]('ChatInteraction,\x20%s,\x20%s',_0x3b6102,_0xb917('0x16'));_0x3e7e7d(_0x187a96[_0xb917('0x17')][_0xb917('0x15')]);}})['catch'](function(_0x5ba3e4){logger[_0xb917('0x13')](_0xb917('0x10'),_0x3b6102,_0x5ba3e4);_0x57eca0(_0x5ba3e4);});});}exports[_0xb917('0x18')]=function(_0x19603f){var _0x1cbb7b=this;return new Promise(function(_0x123d29,_0x11a167){return db[_0xb917('0x19')][_0xb917('0x1a')](_0x19603f[_0xb917('0x1b')],{'raw':_0x19603f[_0xb917('0x1c')]?_0x19603f[_0xb917('0x1c')][_0xb917('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19603f['options']?_0x19603f[_0xb917('0x1c')]['where']||null:null,'attributes':_0x19603f[_0xb917('0x1c')]?_0x19603f[_0xb917('0x1c')][_0xb917('0x1e')]||null:null,'limit':_0x19603f[_0xb917('0x1c')]?_0x19603f[_0xb917('0x1c')]['limit']||null:null})[_0xb917('0xe')](function(_0x1a9d44){logger['info'](_0xb917('0x18'),_0x19603f);logger[_0xb917('0x11')](_0xb917('0x18'),_0x19603f,JSON[_0xb917('0x12')](_0x1a9d44));_0x123d29(_0x1a9d44);})[_0xb917('0x1f')](function(_0x55ba49){logger['error']('UpdateChatInteraction',_0x55ba49['message'],_0x19603f);_0x11a167(_0x1cbb7b['error'](0x1f4,_0x55ba49[_0xb917('0x15')]));});});};exports[_0xb917('0x20')]=function(_0x5c96e6){return new Promise(function(_0x2ac33d,_0x46fa8f){return db[_0xb917('0x19')]['find']({'where':_0x5c96e6[_0xb917('0x1c')]?_0x5c96e6['options'][_0xb917('0x21')]||null:null})[_0xb917('0xe')](function(_0x2cc538){if(_0x2cc538){return _0x2cc538[_0xb917('0x22')](_0x5c96e6[_0xb917('0x1b')]['ids'],_[_0xb917('0x23')](_0x5c96e6[_0xb917('0x1b')],[_0xb917('0x24'),'id'])||{});}})['spread'](function(_0x3488a6){logger[_0xb917('0xf')](_0xb917('0x25'),_0x5c96e6);logger[_0xb917('0x11')](_0xb917('0x25'),_0x5c96e6,JSON['stringify'](_0x3488a6));_0x2ac33d(_0x3488a6);})['catch'](function(_0x1884e5){logger['error'](_0xb917('0x25'),_0x1884e5[_0xb917('0x15')],_0x5c96e6);_0x46fa8f(_this[_0xb917('0x13')](0x1f4,_0x1884e5[_0xb917('0x15')]));});});};
\ No newline at end of file
+var _0x8969=['catch','then','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','limit','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8969,0x103));var _0x9896=function(_0x44e7e8,_0x2196a0){_0x44e7e8=_0x44e7e8-0x0;var _0xfbea4=_0x8969[_0x44e7e8];return _0xfbea4;};'use strict';var _=require(_0x9896('0x0'));var util=require(_0x9896('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9896('0x2'));var fs=require('fs');var Redis=require(_0x9896('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9896('0x4'));var logger=require(_0x9896('0x5'))(_0x9896('0x6'));var config=require(_0x9896('0x7'));var jayson=require(_0x9896('0x8'));var client=jayson[_0x9896('0x9')]['http']({'port':0x232a});config[_0x9896('0xa')]=_[_0x9896('0xb')](config[_0x9896('0xa')],{'host':_0x9896('0xc'),'port':0x18eb});var socket=require(_0x9896('0xd'))(new Redis(config[_0x9896('0xa')]));require(_0x9896('0xe'))[_0x9896('0xf')](socket);function respondWithRpcPromise(_0xc84bb4,_0x3849c5,_0x219b53){return new BPromise(function(_0x24f520,_0x59d276){return client[_0x9896('0x10')](_0xc84bb4,_0x219b53)['then'](function(_0x9dba25){logger[_0x9896('0x11')](_0x9896('0x12'),_0x3849c5,_0x9896('0x13'));logger['debug'](_0x9896('0x14'),_0x3849c5,_0x9896('0x13'),JSON[_0x9896('0x15')](_0x9dba25));if(_0x9dba25['error']){if(_0x9dba25[_0x9896('0x16')][_0x9896('0x17')]===0x1f4){logger[_0x9896('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x3849c5,_0x9dba25['error']['message']);return _0x59d276(_0x9dba25[_0x9896('0x16')][_0x9896('0x18')]);}logger[_0x9896('0x16')](_0x9896('0x12'),_0x3849c5,_0x9dba25[_0x9896('0x16')]['message']);return _0x24f520(_0x9dba25[_0x9896('0x16')][_0x9896('0x18')]);}else{logger[_0x9896('0x11')]('ChatInteraction,\x20%s,\x20%s',_0x3849c5,_0x9896('0x13'));_0x24f520(_0x9dba25[_0x9896('0x19')][_0x9896('0x18')]);}})['catch'](function(_0x2a8d61){logger[_0x9896('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x3849c5,_0x2a8d61);_0x59d276(_0x2a8d61);});});}exports[_0x9896('0x1a')]=function(_0x5e290c){var _0x28754f=this;return new Promise(function(_0x3c6815,_0x5d6ea5){return db[_0x9896('0x1b')][_0x9896('0x1c')](_0x5e290c[_0x9896('0x1d')],{'raw':_0x5e290c[_0x9896('0x1e')]?_0x5e290c[_0x9896('0x1e')][_0x9896('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e290c[_0x9896('0x1e')]?_0x5e290c['options'][_0x9896('0x20')]||null:null,'attributes':_0x5e290c[_0x9896('0x1e')]?_0x5e290c[_0x9896('0x1e')]['attributes']||null:null,'limit':_0x5e290c[_0x9896('0x1e')]?_0x5e290c['options'][_0x9896('0x21')]||null:null})['then'](function(_0x54ce3a){logger['info']('UpdateChatInteraction',_0x5e290c);logger[_0x9896('0x22')](_0x9896('0x1a'),_0x5e290c,JSON[_0x9896('0x15')](_0x54ce3a));_0x3c6815(_0x54ce3a);})[_0x9896('0x23')](function(_0x26adf3){logger[_0x9896('0x16')](_0x9896('0x1a'),_0x26adf3['message'],_0x5e290c);_0x5d6ea5(_0x28754f['error'](0x1f4,_0x26adf3[_0x9896('0x18')]));});});};exports['AddTagsToChatInteraction']=function(_0x1aee30){return new Promise(function(_0x476076,_0x4c2d2e){return db[_0x9896('0x1b')]['find']({'where':_0x1aee30[_0x9896('0x1e')]?_0x1aee30[_0x9896('0x1e')][_0x9896('0x20')]||null:null})[_0x9896('0x24')](function(_0x108f9f){if(_0x108f9f){return _0x108f9f[_0x9896('0x25')](_0x1aee30['body'][_0x9896('0x26')],_[_0x9896('0x27')](_0x1aee30[_0x9896('0x1d')],[_0x9896('0x26'),'id'])||{});}})[_0x9896('0x28')](function(_0x2588c1){logger[_0x9896('0x11')](_0x9896('0x29'),_0x1aee30);logger[_0x9896('0x22')](_0x9896('0x29'),_0x1aee30,JSON[_0x9896('0x15')](_0x2588c1));_0x476076(_0x2588c1);})[_0x9896('0x23')](function(_0x30c747){logger[_0x9896('0x16')]('AddTags',_0x30c747[_0x9896('0x18')],_0x1aee30);_0x4c2d2e(_this['error'](0x1f4,_0x30c747[_0x9896('0x18')]));});});};
\ No newline at end of file
index 65876ac..477437f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf766=['./chatInteraction.events','save','remove','update','emit','register','length','chatInteraction:'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf766,0x78));var _0x6f76=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0xf766[_0x3826ad];return _0x17b900;};'use strict';var ChatInteractionEvents=require(_0x6f76('0x0'));var events=[_0x6f76('0x1'),_0x6f76('0x2'),_0x6f76('0x3')];function createListener(_0x554133,_0x2c195f){return function(_0x938cf3){_0x2c195f[_0x6f76('0x4')](_0x554133,_0x938cf3);};}function removeListener(_0x1424c1,_0x41823e){return function(){ChatInteractionEvents['removeListener'](_0x1424c1,_0x41823e);};}exports[_0x6f76('0x5')]=function(_0x10a456){for(var _0x241997=0x0,_0x37b19a=events[_0x6f76('0x6')];_0x241997<_0x37b19a;_0x241997++){var _0x41cbf5=events[_0x241997];var _0x48132a=createListener(_0x6f76('0x7')+_0x41cbf5,_0x10a456);ChatInteractionEvents['on'](_0x41cbf5,_0x48132a);}};
\ No newline at end of file
+var _0x11fe=['remove','update','register','length','save'];(function(_0x234ae1,_0x42bdd6){var _0x227ba0=function(_0x1f6531){while(--_0x1f6531){_0x234ae1['push'](_0x234ae1['shift']());}};_0x227ba0(++_0x42bdd6);}(_0x11fe,0xb8));var _0xe11f=function(_0x3b2141,_0x300475){_0x3b2141=_0x3b2141-0x0;var _0x58d916=_0x11fe[_0x3b2141];return _0x58d916;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0xe11f('0x0'),_0xe11f('0x1'),_0xe11f('0x2')];function createListener(_0x1b2ba9,_0xa221ad){return function(_0x7fbf0a){_0xa221ad['emit'](_0x1b2ba9,_0x7fbf0a);};}function removeListener(_0x3de4e2,_0x45ecaa){return function(){ChatInteractionEvents['removeListener'](_0x3de4e2,_0x45ecaa);};}exports[_0xe11f('0x3')]=function(_0x561a45){for(var _0x1ac005=0x0,_0x5660c6=events[_0xe11f('0x4')];_0x1ac005<_0x5660c6;_0x1ac005++){var _0x5b7284=events[_0x1ac005];var _0x1e5b75=createListener('chatInteraction:'+_0x5b7284,_0x561a45);ChatInteractionEvents['on'](_0x5b7284,_0x1e5b75);}};
\ No newline at end of file
index 9233934..ea6747f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeebe=['customUpdate','/:id/abandon','/:id/close','chatinteraction:destroy','destroy','delete','removeTags','exports','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','/:id/messages','/:id/my_messages','getMyMessages','/:id/download','download','create','post','createVidaooSession','diskStorage','join','format','%s-%s','originalname','replace','/:id/attachment_upload','single','file','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','/:id/custom_update'];(function(_0x45ad09,_0x521ab1){var _0x2084fd=function(_0x6fd212){while(--_0x6fd212){_0x45ad09['push'](_0x45ad09['shift']());}};_0x2084fd(++_0x521ab1);}(_0xeebe,0x128));var _0xeeeb=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xeebe[_0x4c12ec];return _0x3ae42c;};'use strict';var multer=require(_0xeeeb('0x0'));var util=require(_0xeeeb('0x1'));var path=require('path');var timeout=require(_0xeeeb('0x2'));var express=require(_0xeeeb('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeeeb('0x4'));var interaction=require(_0xeeeb('0x5'));var config=require(_0xeeeb('0x6'));var controller=require(_0xeeeb('0x7'));router[_0xeeeb('0x8')]('/',auth[_0xeeeb('0x9')](),controller[_0xeeeb('0xa')]);router[_0xeeeb('0x8')](_0xeeeb('0xb'),auth[_0xeeeb('0x9')](),controller['describe']);router[_0xeeeb('0x8')](_0xeeeb('0xc'),auth[_0xeeeb('0xd')](),controller['show']);router[_0xeeeb('0x8')](_0xeeeb('0xe'),auth[_0xeeeb('0xd')](),controller['attachmentDownload']);router[_0xeeeb('0x8')](_0xeeeb('0xf'),auth['isAuthenticated'](),controller['getMessages']);router[_0xeeeb('0x8')](_0xeeeb('0x10'),auth[_0xeeeb('0xd')](),controller[_0xeeeb('0x11')]);router['get'](_0xeeeb('0x12'),auth['isAuthenticated'](),controller[_0xeeeb('0x13')]);router['post']('/',auth[_0xeeeb('0x9')](),controller[_0xeeeb('0x14')]);router[_0xeeeb('0x15')]('/:id/vidaoo',auth[_0xeeeb('0x9')](),controller[_0xeeeb('0x16')]);var upload=multer({'storage':multer[_0xeeeb('0x17')]({'destination':function(_0x1798ce,_0x56a18a,_0x4a5592){_0x4a5592(null,path[_0xeeeb('0x18')](config['root'],'server/files/attachments/'));},'filename':function(_0x1c247d,_0x3cd629,_0x3c8b6d){_0x3c8b6d(null,util[_0xeeeb('0x19')](_0xeeeb('0x1a'),Date['now'](),_0x3cd629[_0xeeeb('0x1b')][_0xeeeb('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xeeeb('0x1d'),upload[_0xeeeb('0x1e')](_0xeeeb('0x1f')),controller['attachmentUpload']);router[_0xeeeb('0x15')]('/:id/messages',auth[_0xeeeb('0xd')](),controller['addMessage']);router[_0xeeeb('0x15')](_0xeeeb('0x20'),auth[_0xeeeb('0x9')](),interaction[_0xeeeb('0x21')](_0xeeeb('0x22'),_0xeeeb('0x23')),controller[_0xeeeb('0x24')]);router[_0xeeeb('0x25')](_0xeeeb('0xc'),auth['isAuthenticated'](),interaction[_0xeeeb('0x21')](_0xeeeb('0x22'),_0xeeeb('0x26')),controller['update']);router[_0xeeeb('0x25')](_0xeeeb('0x27'),controller[_0xeeeb('0x28')]);router[_0xeeeb('0x25')](_0xeeeb('0x29'),auth['isChatInteractionAuthorized'](),controller['abandon']);router['put'](_0xeeeb('0x2a'),controller['close']);router['delete'](_0xeeeb('0xc'),auth[_0xeeeb('0x9')](),interaction[_0xeeeb('0x21')](_0xeeeb('0x22'),_0xeeeb('0x2b')),controller[_0xeeeb('0x2c')]);router[_0xeeeb('0x2d')](_0xeeeb('0x20'),auth[_0xeeeb('0x9')](),controller[_0xeeeb('0x2e')]);module[_0xeeeb('0x2f')]=router;
\ No newline at end of file
+var _0xf31e=['multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/:id','show','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','originalname','replace','file','attachmentUpload','addMessage','chat','chatinteraction:addtags','addTags','put','tracked','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','/:id/tags','removeTags','exports'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0xf31e,0xa2));var _0xef31=function(_0x32eca9,_0x79a379){_0x32eca9=_0x32eca9-0x0;var _0x2e6d1e=_0xf31e[_0x32eca9];return _0x2e6d1e;};'use strict';var multer=require(_0xef31('0x0'));var util=require(_0xef31('0x1'));var path=require(_0xef31('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xef31('0x3')]();var fs_extra=require(_0xef31('0x4'));var auth=require(_0xef31('0x5'));var interaction=require(_0xef31('0x6'));var config=require(_0xef31('0x7'));var controller=require(_0xef31('0x8'));router[_0xef31('0x9')]('/',auth[_0xef31('0xa')](),controller[_0xef31('0xb')]);router[_0xef31('0x9')]('/describe',auth[_0xef31('0xa')](),controller['describe']);router[_0xef31('0x9')](_0xef31('0xc'),auth['isChatInteractionAuthorized'](),controller[_0xef31('0xd')]);router['get']('/:id/attachment_download',auth[_0xef31('0xe')](),controller[_0xef31('0xf')]);router['get'](_0xef31('0x10'),auth[_0xef31('0xa')](),controller[_0xef31('0x11')]);router[_0xef31('0x9')](_0xef31('0x12'),auth['isChatInteractionAuthorized'](),controller[_0xef31('0x13')]);router[_0xef31('0x9')]('/:id/download',auth[_0xef31('0xa')](),controller[_0xef31('0x14')]);router[_0xef31('0x15')]('/',auth['isAuthenticated'](),controller[_0xef31('0x16')]);router[_0xef31('0x15')](_0xef31('0x17'),auth[_0xef31('0xa')](),controller[_0xef31('0x18')]);var upload=multer({'storage':multer[_0xef31('0x19')]({'destination':function(_0x3556d6,_0xec74df,_0x1423b4){_0x1423b4(null,path[_0xef31('0x1a')](config[_0xef31('0x1b')],_0xef31('0x1c')));},'filename':function(_0x2ee7cf,_0x291bfc,_0x33bc0c){_0x33bc0c(null,util[_0xef31('0x1d')](_0xef31('0x1e'),Date['now'](),_0x291bfc[_0xef31('0x1f')][_0xef31('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xef31('0x15')]('/:id/attachment_upload',upload['single'](_0xef31('0x21')),controller[_0xef31('0x22')]);router[_0xef31('0x15')]('/:id/messages',auth[_0xef31('0xe')](),controller[_0xef31('0x23')]);router[_0xef31('0x15')]('/:id/tags',auth[_0xef31('0xa')](),interaction['tracked'](_0xef31('0x24'),_0xef31('0x25')),controller[_0xef31('0x26')]);router[_0xef31('0x27')]('/:id',auth[_0xef31('0xa')](),interaction[_0xef31('0x28')](_0xef31('0x24'),_0xef31('0x29')),controller[_0xef31('0x2a')]);router['put'](_0xef31('0x2b'),controller[_0xef31('0x2c')]);router[_0xef31('0x27')](_0xef31('0x2d'),auth[_0xef31('0xe')](),controller['abandon']);router[_0xef31('0x27')](_0xef31('0x2e'),controller[_0xef31('0x2f')]);router[_0xef31('0x30')](_0xef31('0xc'),auth['isAuthenticated'](),interaction[_0xef31('0x28')](_0xef31('0x24'),_0xef31('0x31')),controller[_0xef31('0x32')]);router[_0xef31('0x30')](_0xef31('0x33'),auth[_0xef31('0xa')](),controller[_0xef31('0x34')]);module[_0xef31('0x35')]=router;
\ No newline at end of file
index a0238d7..c300de0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e43=['INTEGER','exports','TEXT','medium','BOOLEAN'];(function(_0x3a732d,_0x573e63){var _0x3248d6=function(_0x1d7c83){while(--_0x1d7c83){_0x3a732d['push'](_0x3a732d['shift']());}};_0x3248d6(++_0x573e63);}(_0x3e43,0x14b));var _0x33e4=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x3e43[_0x5c351c];return _0x26f3b3;};'use strict';var Sequelize=require('sequelize');module[_0x33e4('0x0')]={'body':{'type':Sequelize[_0x33e4('0x1')](_0x33e4('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x33e4('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x33e4('0x4')]}};
\ No newline at end of file
+var _0x38c3=['INTEGER','TEXT','medium','BOOLEAN'];(function(_0xfed94,_0x41cb7a){var _0x126db6=function(_0x14076f){while(--_0x14076f){_0xfed94['push'](_0xfed94['shift']());}};_0x126db6(++_0x41cb7a);}(_0x38c3,0xf1));var _0x338c=function(_0x4debdd,_0x114aab){_0x4debdd=_0x4debdd-0x0;var _0x4a83e6=_0x38c3[_0x4debdd];return _0x4a83e6;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x338c('0x0')](_0x338c('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x338c('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x338c('0x3')]}};
\ No newline at end of file
index e686878..e11b117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9156=['format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','admin','fullname','role','internal','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','FromId','ToId','read','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','ChatInternalMessage','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','filter','options','includeAll','include','rows','catch','show','params','rawAttributes','create','body','find','describe','messages','createdAt','lastMessage'];(function(_0x4de7f0,_0x434442){var _0x208374=function(_0x4b9a28){while(--_0x4b9a28){_0x4de7f0['push'](_0x4de7f0['shift']());}};_0x208374(++_0x434442);}(_0x9156,0x8d));var _0x6915=function(_0x1fd899,_0x38ce5a){_0x1fd899=_0x1fd899-0x0;var _0x1d2212=_0x9156[_0x1fd899];return _0x1d2212;};'use strict';var emlformat=require(_0x6915('0x0'));var rimraf=require(_0x6915('0x1'));var zipdir=require(_0x6915('0x2'));var jsonpatch=require(_0x6915('0x3'));var rp=require(_0x6915('0x4'));var moment=require(_0x6915('0x5'));var BPromise=require(_0x6915('0x6'));var Mustache=require(_0x6915('0x7'));var util=require(_0x6915('0x8'));var path=require(_0x6915('0x9'));var sox=require(_0x6915('0xa'));var csv=require(_0x6915('0xb'));var ejs=require(_0x6915('0xc'));var fs=require('fs');var fs_extra=require(_0x6915('0xd'));var _=require(_0x6915('0xe'));var squel=require(_0x6915('0xf'));var crypto=require(_0x6915('0x10'));var jsforce=require(_0x6915('0x11'));var deskjs=require(_0x6915('0x12'));var toCsv=require(_0x6915('0xb'));var querystring=require(_0x6915('0x13'));var Papa=require('papaparse');var Redis=require(_0x6915('0x14'));var authService=require(_0x6915('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6915('0x16'));var logger=require(_0x6915('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6915('0x18'));var db=require(_0x6915('0x19'))['db'];config[_0x6915('0x1a')]=_[_0x6915('0x1b')](config[_0x6915('0x1a')],{'host':_0x6915('0x1c'),'port':0x18eb});var socket=require(_0x6915('0x1d'))(new Redis(config[_0x6915('0x1a')]));require(_0x6915('0x1e'))[_0x6915('0x1f')](socket);function respondWithStatusCode(_0x218c66,_0x4febcf){_0x4febcf=_0x4febcf||0xcc;return function(_0x5db09c){if(_0x5db09c){return _0x218c66[_0x6915('0x20')](_0x4febcf);}return _0x218c66[_0x6915('0x21')](_0x4febcf)[_0x6915('0x22')]();};}function respondWithResult(_0x521349,_0x527e0d){_0x527e0d=_0x527e0d||0xc8;return function(_0x40c856){if(_0x40c856){return _0x521349[_0x6915('0x21')](_0x527e0d)[_0x6915('0x23')](_0x40c856);}};}function respondWithFilteredResult(_0x5204e4,_0x4a9f74){return function(_0x273d2a){if(_0x273d2a){var _0x2ed7e8=typeof _0x4a9f74[_0x6915('0x24')]===_0x6915('0x25')&&typeof _0x4a9f74['limit']===_0x6915('0x25');var _0x184e46=_0x273d2a[_0x6915('0x26')];var _0x2714e3=_0x2ed7e8?0x0:_0x4a9f74[_0x6915('0x24')];var _0x3846fc=_0x2ed7e8?_0x273d2a[_0x6915('0x26')]:_0x4a9f74[_0x6915('0x24')]+_0x4a9f74['limit'];var _0x592d5e;if(_0x3846fc>=_0x184e46){_0x3846fc=_0x184e46;_0x592d5e=0xc8;}else{_0x592d5e=0xce;}_0x5204e4['status'](_0x592d5e);return _0x5204e4[_0x6915('0x27')](_0x6915('0x28'),_0x2714e3+'-'+_0x3846fc+'/'+_0x184e46)['json'](_0x273d2a);}return null;};}function patchUpdates(_0x4701b5){return function(_0x2824c7){try{jsonpatch[_0x6915('0x29')](_0x2824c7,_0x4701b5,!![]);}catch(_0x1fcdd2){return BPromise[_0x6915('0x2a')](_0x1fcdd2);}return _0x2824c7[_0x6915('0x2b')]();};}function saveUpdates(_0x1c2dbd,_0x12820d){return function(_0x17460c){if(_0x17460c){return _0x17460c[_0x6915('0x2c')](_0x1c2dbd)[_0x6915('0x2d')](function(_0x3dd05d){return _0x3dd05d;});}return null;};}function removeEntity(_0x2818e6,_0x3ce4ac){return function(_0xdbcd64){if(_0xdbcd64){return _0xdbcd64[_0x6915('0x2e')]()['then'](function(){_0x2818e6[_0x6915('0x21')](0xcc)[_0x6915('0x22')]();});}};}function handleEntityNotFound(_0x56510b,_0x3c7b8b){return function(_0x46311c){if(!_0x46311c){_0x56510b[_0x6915('0x20')](0x194);}return _0x46311c;};}function handleError(_0x1fc484,_0xa7d853){_0xa7d853=_0xa7d853||0x1f4;return function(_0x382df0){logger['error'](_0x382df0[_0x6915('0x2f')]);if(_0x382df0[_0x6915('0x30')]){delete _0x382df0[_0x6915('0x30')];}_0x1fc484[_0x6915('0x21')](_0xa7d853)[_0x6915('0x31')](_0x382df0);};}exports[_0x6915('0x32')]=function(_0x5f285a,_0x4bcdea){var _0x181b90={},_0x166968={},_0x2a276a={'count':0x0,'rows':[]};var _0x2632c1=_[_0x6915('0x33')](db[_0x6915('0x34')]['rawAttributes'],function(_0x54429b){return{'name':_0x54429b['fieldName'],'type':_0x54429b[_0x6915('0x35')]['key']};});_0x166968[_0x6915('0x36')]=_[_0x6915('0x33')](_0x2632c1,'name');_0x166968[_0x6915('0x37')]=_[_0x6915('0x38')](_0x5f285a['query']);_0x166968[_0x6915('0x39')]=_[_0x6915('0x3a')](_0x166968['model'],_0x166968[_0x6915('0x37')]);_0x181b90[_0x6915('0x3b')]=_[_0x6915('0x3a')](_0x166968['model'],qs['fields'](_0x5f285a[_0x6915('0x37')][_0x6915('0x3c')]));_0x181b90['attributes']=_0x181b90[_0x6915('0x3b')][_0x6915('0x3d')]?_0x181b90['attributes']:_0x166968['model'];if(!_0x5f285a['query'][_0x6915('0x3e')](_0x6915('0x3f'))){_0x181b90[_0x6915('0x40')]=qs[_0x6915('0x40')](_0x5f285a[_0x6915('0x37')][_0x6915('0x40')]);_0x181b90['offset']=qs[_0x6915('0x24')](_0x5f285a[_0x6915('0x37')][_0x6915('0x24')]);}_0x181b90['order']=qs[_0x6915('0x41')](_0x5f285a['query'][_0x6915('0x41')]);_0x181b90[_0x6915('0x42')]=qs[_0x6915('0x39')](_[_0x6915('0x43')](_0x5f285a['query'],_0x166968[_0x6915('0x39')]),_0x2632c1);if(_0x5f285a[_0x6915('0x37')]['filter']){_0x181b90['where']=_[_0x6915('0x44')](_0x181b90['where'],{'$or':_[_0x6915('0x33')](_0x2632c1,function(_0x4c1a47){if(_0x4c1a47[_0x6915('0x35')]!=='VIRTUAL'){var _0x4b0ef9={};_0x4b0ef9[_0x4c1a47[_0x6915('0x30')]]={'$like':'%'+_0x5f285a[_0x6915('0x37')][_0x6915('0x45')]+'%'};return _0x4b0ef9;}})});}_0x181b90=_['merge']({},_0x181b90,_0x5f285a[_0x6915('0x46')]);var _0x263cef={'where':_0x181b90['where']};return db[_0x6915('0x34')][_0x6915('0x26')](_0x263cef)[_0x6915('0x2d')](function(_0x1dcbd2){_0x2a276a[_0x6915('0x26')]=_0x1dcbd2;if(_0x5f285a[_0x6915('0x37')][_0x6915('0x47')]){_0x181b90[_0x6915('0x48')]=[{'all':!![]}];}return db[_0x6915('0x34')]['findAll'](_0x181b90);})[_0x6915('0x2d')](function(_0x512d78){_0x2a276a[_0x6915('0x49')]=_0x512d78;return _0x2a276a;})['then'](respondWithFilteredResult(_0x4bcdea,_0x181b90))[_0x6915('0x4a')](handleError(_0x4bcdea,null));};exports[_0x6915('0x4b')]=function(_0x5025ea,_0x1f6722){var _0xaa8006={'raw':!![],'where':{'id':_0x5025ea[_0x6915('0x4c')]['id']}},_0x21a035={};_0x21a035[_0x6915('0x36')]=_[_0x6915('0x38')](db[_0x6915('0x34')][_0x6915('0x4d')]);_0x21a035[_0x6915('0x37')]=_[_0x6915('0x38')](_0x5025ea['query']);_0x21a035[_0x6915('0x39')]=_[_0x6915('0x3a')](_0x21a035[_0x6915('0x36')],_0x21a035[_0x6915('0x37')]);_0xaa8006['attributes']=_[_0x6915('0x3a')](_0x21a035[_0x6915('0x36')],qs[_0x6915('0x3c')](_0x5025ea[_0x6915('0x37')][_0x6915('0x3c')]));_0xaa8006[_0x6915('0x3b')]=_0xaa8006[_0x6915('0x3b')][_0x6915('0x3d')]?_0xaa8006[_0x6915('0x3b')]:_0x21a035[_0x6915('0x36')];if(_0x5025ea[_0x6915('0x37')][_0x6915('0x47')]){_0xaa8006[_0x6915('0x48')]=[{'all':!![]}];}_0xaa8006=_[_0x6915('0x44')]({},_0xaa8006,_0x5025ea[_0x6915('0x46')]);return db[_0x6915('0x34')]['find'](_0xaa8006)['then'](handleEntityNotFound(_0x1f6722,null))[_0x6915('0x2d')](respondWithResult(_0x1f6722,null))['catch'](handleError(_0x1f6722,null));};exports['create']=function(_0x30d5e7,_0x2ca2e7){return db['ChatInternalMessage'][_0x6915('0x4e')](_0x30d5e7[_0x6915('0x4f')],{})['then'](respondWithResult(_0x2ca2e7,0xc9))[_0x6915('0x4a')](handleError(_0x2ca2e7,null));};exports[_0x6915('0x2c')]=function(_0xbe1c62,_0x4790b4){if(_0xbe1c62[_0x6915('0x4f')]['id']){delete _0xbe1c62['body']['id'];}return db[_0x6915('0x34')][_0x6915('0x50')]({'where':{'id':_0xbe1c62[_0x6915('0x4c')]['id']}})[_0x6915('0x2d')](handleEntityNotFound(_0x4790b4,null))[_0x6915('0x2d')](saveUpdates(_0xbe1c62['body'],null))['then'](respondWithResult(_0x4790b4,null))[_0x6915('0x4a')](handleError(_0x4790b4,null));};exports[_0x6915('0x2e')]=function(_0x2c9b99,_0x15db32){return db['ChatInternalMessage'][_0x6915('0x50')]({'where':{'id':_0x2c9b99['params']['id']}})[_0x6915('0x2d')](handleEntityNotFound(_0x15db32,null))[_0x6915('0x2d')](removeEntity(_0x15db32,null))[_0x6915('0x4a')](handleError(_0x15db32,null));};exports['describe']=function(_0x357e7e,_0x39944d){return db[_0x6915('0x34')][_0x6915('0x51')]()[_0x6915('0x2d')](respondWithResult(_0x39944d,null))['catch'](handleError(_0x39944d,null));};function wrapUser(_0x4c4be9){return function(_0x52d8f6){var _0x58f88f=_0x4c4be9['get']({'plain':!![]});_0x58f88f[_0x6915('0x52')]=[];if(_0x52d8f6){_0x58f88f['lastMessageAt']=_0x52d8f6[_0x6915('0x53')];_0x58f88f[_0x6915('0x54')]=_0x52d8f6;}else{_0x58f88f['lastMessageAt']=moment(0x0)[_0x6915('0x55')](_0x6915('0x56'));_0x58f88f[_0x6915('0x54')]={};}return _0x58f88f;};}exports[_0x6915('0x57')]=function(_0x4009b6,_0xf66bea,_0x42b277){var _0x218365=[];return db[_0x6915('0x58')][_0x6915('0x59')]({'where':{'role':['agent',_0x6915('0x5a'),'user']},'attributes':['id',_0x6915('0x5b'),_0x6915('0x30'),_0x6915('0x5c'),'userpic',_0x6915('0x5d'),'online',_0x6915('0x5e'),_0x6915('0x5f'),_0x6915('0x60')],'order':qs['sort']('-online'),'include':[{'model':db[_0x6915('0x61')],'as':_0x6915('0x62'),'attributes':['id',_0x6915('0x30'),'type'],'through':{'attributes':[]}}]})[_0x6915('0x2d')](function(_0x38ad1f){if(_0x38ad1f){var _0x5cd634=_0x4009b6[_0x6915('0x63')][_0x6915('0x64')]({'plain':!![]});if(!_0x5cd634)throw new Error(_0x6915('0x65'));if(_0x5cd634[_0x6915('0x5c')]===_0x6915('0x63')){return db[_0x6915('0x66')]['find']({'where':{'name':_0x6915('0x67'),'userProfileId':_0x5cd634['userProfileId']},'raw':!![]})[_0x6915('0x2d')](function(_0x61de31){if(_0x61de31){if(_0x61de31[_0x6915('0x68')]===0x0){return db[_0x6915('0x69')][_0x6915('0x59')]({'where':{'sectionId':_0x61de31['id']},'raw':!![]})[_0x6915('0x2d')](function(_0x426cae){var _0x383f80=[];if(_[_0x6915('0x6a')](_0x426cae)){_0x383f80=_[_0x6915('0x45')](_0x38ad1f,function(_0x51dc41){if(_0x51dc41[_0x6915('0x5c')]!==_0x6915('0x6b')){return _0x51dc41;}});return _0x383f80;}else{for(var _0x4846d5=0x0;_0x4846d5<_0x38ad1f[_0x6915('0x3d')];_0x4846d5++){var _0x33eb20=_0x38ad1f[_0x4846d5];if(_0x33eb20[_0x6915('0x5c')]==='agent'){var _0x400a59=_['find'](_0x426cae,function(_0x114b06){return _0x114b06[_0x6915('0x6c')]===_0x33eb20['id'];});if(_0x400a59)_0x383f80[_0x6915('0x6d')](_0x33eb20);}else{_0x383f80['push'](_0x33eb20);}}return _0x383f80;}});}else{return _0x38ad1f;}}else{var _0x2f75df=_[_0x6915('0x45')](_0x38ad1f,function(_0x48f6b5){if(_0x48f6b5[_0x6915('0x5c')]!==_0x6915('0x6b')){return _0x48f6b5;}});return _0x2f75df;}});}else{return _0x38ad1f;}}})['then'](function(_0x2fc3cf){var _0x4944f1=[];if(_0x2fc3cf){_0x218365=_0x2fc3cf;for(var _0x2b0c54=0x0;_0x2b0c54<_0x2fc3cf[_0x6915('0x3d')];_0x2b0c54+=0x1){_0x218365[_0x2b0c54][_0x6915('0x52')]=[];_0x4944f1[_0x6915('0x6d')](db[_0x6915('0x34')][_0x6915('0x50')]({'where':{'FromId':[_0x4009b6[_0x6915('0x63')]['id'],_0x2fc3cf[_0x2b0c54]['id']],'ToId':[_0x4009b6['user']['id'],_0x2fc3cf[_0x2b0c54]['id']],'ChatGroupId':null},'attributes':['id',_0x6915('0x53'),_0x6915('0x6e'),_0x6915('0x6f'),_0x6915('0x70'),_0x6915('0x4f')],'order':qs[_0x6915('0x41')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x6915('0x2d')](wrapUser(_0x2fc3cf[_0x2b0c54])));}return BPromise['all'](_0x4944f1);}return[];})['then'](function(_0x547d6e){return{'rows':_0x547d6e,'count':_0x547d6e[_0x6915('0x3d')]};})[_0x6915('0x2d')](respondWithResult(_0xf66bea,null))['catch'](handleError(_0xf66bea,null));};
\ No newline at end of file
+var _0xdade=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','catch','show','params','find','body','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','admin','fullname','role','userpic','online','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','resourceId','push','read','-createdAt','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./chatInternalMessage.socket','register','end','status','json','offset','limit','undefined','count','set','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','model','query'];(function(_0x59c4c6,_0x5ed8ef){var _0x37ca0f=function(_0x6466a1){while(--_0x6466a1){_0x59c4c6['push'](_0x59c4c6['shift']());}};_0x37ca0f(++_0x5ed8ef);}(_0xdade,0xa2));var _0xedad=function(_0x2eaff4,_0x4852b7){_0x2eaff4=_0x2eaff4-0x0;var _0x278c7a=_0xdade[_0x2eaff4];return _0x278c7a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xedad('0x0'));var zipdir=require(_0xedad('0x1'));var jsonpatch=require(_0xedad('0x2'));var rp=require(_0xedad('0x3'));var moment=require('moment');var BPromise=require(_0xedad('0x4'));var Mustache=require('mustache');var util=require(_0xedad('0x5'));var path=require(_0xedad('0x6'));var sox=require(_0xedad('0x7'));var csv=require(_0xedad('0x8'));var ejs=require(_0xedad('0x9'));var fs=require('fs');var fs_extra=require(_0xedad('0xa'));var _=require(_0xedad('0xb'));var squel=require(_0xedad('0xc'));var crypto=require(_0xedad('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xedad('0x8'));var querystring=require(_0xedad('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xedad('0xf'));var qs=require(_0xedad('0x10'));var as=require(_0xedad('0x11'));var hardwareService=require(_0xedad('0x12'));var logger=require('../../config/logger')(_0xedad('0x13'));var utils=require(_0xedad('0x14'));var config=require(_0xedad('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xedad('0x16'))['db'];config[_0xedad('0x17')]=_['defaults'](config[_0xedad('0x17')],{'host':_0xedad('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xedad('0x17')]));require(_0xedad('0x19'))[_0xedad('0x1a')](socket);function respondWithStatusCode(_0x5d66ab,_0x2e311e){_0x2e311e=_0x2e311e||0xcc;return function(_0x2724a2){if(_0x2724a2){return _0x5d66ab['sendStatus'](_0x2e311e);}return _0x5d66ab['status'](_0x2e311e)[_0xedad('0x1b')]();};}function respondWithResult(_0x11ec88,_0x21c14d){_0x21c14d=_0x21c14d||0xc8;return function(_0x9895f3){if(_0x9895f3){return _0x11ec88[_0xedad('0x1c')](_0x21c14d)[_0xedad('0x1d')](_0x9895f3);}};}function respondWithFilteredResult(_0x1e633c,_0x44dfab){return function(_0x3bb7c6){if(_0x3bb7c6){var _0x1393c6=typeof _0x44dfab[_0xedad('0x1e')]==='undefined'&&typeof _0x44dfab[_0xedad('0x1f')]===_0xedad('0x20');var _0x2970bb=_0x3bb7c6['count'];var _0x1dd7f2=_0x1393c6?0x0:_0x44dfab[_0xedad('0x1e')];var _0x1c6a4e=_0x1393c6?_0x3bb7c6[_0xedad('0x21')]:_0x44dfab[_0xedad('0x1e')]+_0x44dfab[_0xedad('0x1f')];var _0x57ab65;if(_0x1c6a4e>=_0x2970bb){_0x1c6a4e=_0x2970bb;_0x57ab65=0xc8;}else{_0x57ab65=0xce;}_0x1e633c['status'](_0x57ab65);return _0x1e633c[_0xedad('0x22')]('Content-Range',_0x1dd7f2+'-'+_0x1c6a4e+'/'+_0x2970bb)[_0xedad('0x1d')](_0x3bb7c6);}return null;};}function patchUpdates(_0x5eb604){return function(_0x1ff4cb){try{jsonpatch['apply'](_0x1ff4cb,_0x5eb604,!![]);}catch(_0x47d6d9){return BPromise[_0xedad('0x23')](_0x47d6d9);}return _0x1ff4cb[_0xedad('0x24')]();};}function saveUpdates(_0x1c2243,_0x20032d){return function(_0x2484f0){if(_0x2484f0){return _0x2484f0[_0xedad('0x25')](_0x1c2243)[_0xedad('0x26')](function(_0x436410){return _0x436410;});}return null;};}function removeEntity(_0x261e96,_0x5ee776){return function(_0x2dec4f){if(_0x2dec4f){return _0x2dec4f[_0xedad('0x27')]()[_0xedad('0x26')](function(){_0x261e96[_0xedad('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7e0227,_0x4c225c){return function(_0x5d00b5){if(!_0x5d00b5){_0x7e0227['sendStatus'](0x194);}return _0x5d00b5;};}function handleError(_0x35bec8,_0x21eaef){_0x21eaef=_0x21eaef||0x1f4;return function(_0xfada42){logger[_0xedad('0x28')](_0xfada42[_0xedad('0x29')]);if(_0xfada42['name']){delete _0xfada42[_0xedad('0x2a')];}_0x35bec8[_0xedad('0x1c')](_0x21eaef)[_0xedad('0x2b')](_0xfada42);};}exports[_0xedad('0x2c')]=function(_0x3c37ba,_0x2d3da7){var _0x255a4c={},_0x48d55={},_0x342dd4={'count':0x0,'rows':[]};var _0x1a9834=_[_0xedad('0x2d')](db[_0xedad('0x2e')][_0xedad('0x2f')],function(_0x35653d){return{'name':_0x35653d[_0xedad('0x30')],'type':_0x35653d[_0xedad('0x31')]['key']};});_0x48d55[_0xedad('0x32')]=_['map'](_0x1a9834,'name');_0x48d55[_0xedad('0x33')]=_[_0xedad('0x34')](_0x3c37ba['query']);_0x48d55[_0xedad('0x35')]=_[_0xedad('0x36')](_0x48d55['model'],_0x48d55[_0xedad('0x33')]);_0x255a4c[_0xedad('0x37')]=_[_0xedad('0x36')](_0x48d55[_0xedad('0x32')],qs[_0xedad('0x38')](_0x3c37ba[_0xedad('0x33')][_0xedad('0x38')]));_0x255a4c[_0xedad('0x37')]=_0x255a4c['attributes'][_0xedad('0x39')]?_0x255a4c['attributes']:_0x48d55[_0xedad('0x32')];if(!_0x3c37ba[_0xedad('0x33')][_0xedad('0x3a')](_0xedad('0x3b'))){_0x255a4c[_0xedad('0x1f')]=qs[_0xedad('0x1f')](_0x3c37ba[_0xedad('0x33')][_0xedad('0x1f')]);_0x255a4c[_0xedad('0x1e')]=qs[_0xedad('0x1e')](_0x3c37ba['query'][_0xedad('0x1e')]);}_0x255a4c[_0xedad('0x3c')]=qs[_0xedad('0x3d')](_0x3c37ba[_0xedad('0x33')]['sort']);_0x255a4c[_0xedad('0x3e')]=qs[_0xedad('0x35')](_[_0xedad('0x3f')](_0x3c37ba[_0xedad('0x33')],_0x48d55[_0xedad('0x35')]),_0x1a9834);if(_0x3c37ba[_0xedad('0x33')][_0xedad('0x40')]){_0x255a4c['where']=_[_0xedad('0x41')](_0x255a4c[_0xedad('0x3e')],{'$or':_[_0xedad('0x2d')](_0x1a9834,function(_0x5055f2){if(_0x5055f2[_0xedad('0x31')]!==_0xedad('0x42')){var _0x269550={};_0x269550[_0x5055f2[_0xedad('0x2a')]]={'$like':'%'+_0x3c37ba[_0xedad('0x33')][_0xedad('0x40')]+'%'};return _0x269550;}})});}_0x255a4c=_['merge']({},_0x255a4c,_0x3c37ba[_0xedad('0x43')]);var _0xd95e7e={'where':_0x255a4c[_0xedad('0x3e')]};return db[_0xedad('0x2e')][_0xedad('0x21')](_0xd95e7e)[_0xedad('0x26')](function(_0x2e42e6){_0x342dd4['count']=_0x2e42e6;if(_0x3c37ba[_0xedad('0x33')][_0xedad('0x44')]){_0x255a4c['include']=[{'all':!![]}];}return db[_0xedad('0x2e')]['findAll'](_0x255a4c);})[_0xedad('0x26')](function(_0x2c5a38){_0x342dd4['rows']=_0x2c5a38;return _0x342dd4;})['then'](respondWithFilteredResult(_0x2d3da7,_0x255a4c))[_0xedad('0x45')](handleError(_0x2d3da7,null));};exports[_0xedad('0x46')]=function(_0x2424b4,_0x21443f){var _0x47e09f={'raw':!![],'where':{'id':_0x2424b4[_0xedad('0x47')]['id']}},_0x135f9e={};_0x135f9e[_0xedad('0x32')]=_[_0xedad('0x34')](db[_0xedad('0x2e')][_0xedad('0x2f')]);_0x135f9e[_0xedad('0x33')]=_['keys'](_0x2424b4[_0xedad('0x33')]);_0x135f9e[_0xedad('0x35')]=_[_0xedad('0x36')](_0x135f9e[_0xedad('0x32')],_0x135f9e[_0xedad('0x33')]);_0x47e09f[_0xedad('0x37')]=_['intersection'](_0x135f9e[_0xedad('0x32')],qs[_0xedad('0x38')](_0x2424b4['query'][_0xedad('0x38')]));_0x47e09f[_0xedad('0x37')]=_0x47e09f['attributes']['length']?_0x47e09f[_0xedad('0x37')]:_0x135f9e[_0xedad('0x32')];if(_0x2424b4[_0xedad('0x33')][_0xedad('0x44')]){_0x47e09f['include']=[{'all':!![]}];}_0x47e09f=_['merge']({},_0x47e09f,_0x2424b4[_0xedad('0x43')]);return db['ChatInternalMessage'][_0xedad('0x48')](_0x47e09f)[_0xedad('0x26')](handleEntityNotFound(_0x21443f,null))[_0xedad('0x26')](respondWithResult(_0x21443f,null))[_0xedad('0x45')](handleError(_0x21443f,null));};exports['create']=function(_0x8ea881,_0x30a98e){return db['ChatInternalMessage']['create'](_0x8ea881[_0xedad('0x49')],{})['then'](respondWithResult(_0x30a98e,0xc9))[_0xedad('0x45')](handleError(_0x30a98e,null));};exports[_0xedad('0x25')]=function(_0x1a6997,_0x1a5424){if(_0x1a6997[_0xedad('0x49')]['id']){delete _0x1a6997[_0xedad('0x49')]['id'];}return db[_0xedad('0x2e')]['find']({'where':{'id':_0x1a6997['params']['id']}})['then'](handleEntityNotFound(_0x1a5424,null))['then'](saveUpdates(_0x1a6997['body'],null))['then'](respondWithResult(_0x1a5424,null))[_0xedad('0x45')](handleError(_0x1a5424,null));};exports[_0xedad('0x27')]=function(_0x39e42e,_0x267be5){return db['ChatInternalMessage'][_0xedad('0x48')]({'where':{'id':_0x39e42e[_0xedad('0x47')]['id']}})[_0xedad('0x26')](handleEntityNotFound(_0x267be5,null))['then'](removeEntity(_0x267be5,null))[_0xedad('0x45')](handleError(_0x267be5,null));};exports[_0xedad('0x4a')]=function(_0x314671,_0x51ba8c){return db[_0xedad('0x2e')][_0xedad('0x4a')]()['then'](respondWithResult(_0x51ba8c,null))[_0xedad('0x45')](handleError(_0x51ba8c,null));};function wrapUser(_0x3bbae3){return function(_0x47c41){var _0x3c57d6=_0x3bbae3[_0xedad('0x4b')]({'plain':!![]});_0x3c57d6[_0xedad('0x4c')]=[];if(_0x47c41){_0x3c57d6[_0xedad('0x4d')]=_0x47c41[_0xedad('0x4e')];_0x3c57d6[_0xedad('0x4f')]=_0x47c41;}else{_0x3c57d6[_0xedad('0x4d')]=moment(0x0)[_0xedad('0x50')](_0xedad('0x51'));_0x3c57d6['lastMessage']={};}return _0x3c57d6;};}exports[_0xedad('0x52')]=function(_0x264515,_0x864569,_0x1b2a8c){var _0x2ae588=[];return db[_0xedad('0x53')][_0xedad('0x54')]({'where':{'role':[_0xedad('0x55'),_0xedad('0x56'),'user']},'attributes':['id',_0xedad('0x57'),_0xedad('0x2a'),_0xedad('0x58'),_0xedad('0x59'),'internal',_0xedad('0x5a'),'lastLoginAt',_0xedad('0x5b'),_0xedad('0x5c')],'order':qs[_0xedad('0x3d')](_0xedad('0x5d')),'include':[{'model':db[_0xedad('0x5e')],'as':_0xedad('0x5f'),'attributes':['id',_0xedad('0x2a'),_0xedad('0x31')],'through':{'attributes':[]}}]})[_0xedad('0x26')](function(_0x242977){if(_0x242977){var _0x46363a=_0x264515[_0xedad('0x60')][_0xedad('0x4b')]({'plain':!![]});if(!_0x46363a)throw new Error(_0xedad('0x61'));if(_0x46363a[_0xedad('0x58')]===_0xedad('0x60')){return db[_0xedad('0x62')][_0xedad('0x48')]({'where':{'name':_0xedad('0x63'),'userProfileId':_0x46363a[_0xedad('0x64')]},'raw':!![]})[_0xedad('0x26')](function(_0x1d5dbb){if(_0x1d5dbb){if(_0x1d5dbb[_0xedad('0x65')]===0x0){return db[_0xedad('0x66')]['findAll']({'where':{'sectionId':_0x1d5dbb['id']},'raw':!![]})[_0xedad('0x26')](function(_0x32448f){var _0x5d75c6=[];if(_['isEmpty'](_0x32448f)){_0x5d75c6=_[_0xedad('0x40')](_0x242977,function(_0x4af6fe){if(_0x4af6fe[_0xedad('0x58')]!==_0xedad('0x55')){return _0x4af6fe;}});return _0x5d75c6;}else{for(var _0x5586fe=0x0;_0x5586fe<_0x242977[_0xedad('0x39')];_0x5586fe++){var _0x1821e5=_0x242977[_0x5586fe];if(_0x1821e5[_0xedad('0x58')]===_0xedad('0x55')){var _0xb2b995=_['find'](_0x32448f,function(_0x2b94e3){return _0x2b94e3[_0xedad('0x67')]===_0x1821e5['id'];});if(_0xb2b995)_0x5d75c6[_0xedad('0x68')](_0x1821e5);}else{_0x5d75c6[_0xedad('0x68')](_0x1821e5);}}return _0x5d75c6;}});}else{return _0x242977;}}else{var _0x13d58b=_[_0xedad('0x40')](_0x242977,function(_0x4389ff){if(_0x4389ff['role']!==_0xedad('0x55')){return _0x4389ff;}});return _0x13d58b;}});}else{return _0x242977;}}})[_0xedad('0x26')](function(_0x6c7b2d){var _0x46ddbb=[];if(_0x6c7b2d){_0x2ae588=_0x6c7b2d;for(var _0xff2e64=0x0;_0xff2e64<_0x6c7b2d[_0xedad('0x39')];_0xff2e64+=0x1){_0x2ae588[_0xff2e64][_0xedad('0x4c')]=[];_0x46ddbb['push'](db[_0xedad('0x2e')][_0xedad('0x48')]({'where':{'FromId':[_0x264515[_0xedad('0x60')]['id'],_0x6c7b2d[_0xff2e64]['id']],'ToId':[_0x264515[_0xedad('0x60')]['id'],_0x6c7b2d[_0xff2e64]['id']],'ChatGroupId':null},'attributes':['id','createdAt','FromId','ToId',_0xedad('0x69'),_0xedad('0x49')],'order':qs['sort'](_0xedad('0x6a')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xedad('0x26')](wrapUser(_0x6c7b2d[_0xff2e64])));}return BPromise['all'](_0x46ddbb);}return[];})[_0xedad('0x26')](function(_0xdbdd0c){return{'rows':_0xdbdd0c,'count':_0xdbdd0c[_0xedad('0x39')]};})[_0xedad('0x26')](respondWithResult(_0x864569,null))[_0xedad('0x45')](handleError(_0x864569,null));};
\ No newline at end of file
index 30326fa..7bb9eed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d82=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update'];(function(_0x5dc8c3,_0x22eee9){var _0x456a93=function(_0x12a63d){while(--_0x12a63d){_0x5dc8c3['push'](_0x5dc8c3['shift']());}};_0x456a93(++_0x22eee9);}(_0x1d82,0xe1));var _0x21d8=function(_0x2d5ee2,_0x25e3ca){_0x2d5ee2=_0x2d5ee2-0x0;var _0x394ca4=_0x1d82[_0x2d5ee2];return _0x394ca4;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x21d8('0x0'))['db'][_0x21d8('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x21d8('0x2')](0x0);var events={'afterCreate':_0x21d8('0x3'),'afterUpdate':_0x21d8('0x4'),'afterDestroy':_0x21d8('0x5')};function emitEvent(_0x11953d){return function(_0x43a508,_0x50630a,_0x4d50e6){ChatInternalMessageEvents[_0x21d8('0x6')](_0x11953d+':'+_0x43a508['id'],_0x43a508);ChatInternalMessageEvents[_0x21d8('0x6')](_0x11953d,_0x43a508);_0x4d50e6(null);};}for(var e in events){if(events[_0x21d8('0x7')](e)){var event=events[e];ChatInternalMessage[_0x21d8('0x8')](e,emitEvent(event));}}module[_0x21d8('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x980c=['hasOwnProperty','hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update','remove','emit'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x980c,0x100));var _0xc980=function(_0x5e63da,_0x35a5e8){_0x5e63da=_0x5e63da-0x0;var _0x3046cb=_0x980c[_0x5e63da];return _0x3046cb;};'use strict';var EventEmitter=require(_0xc980('0x0'));var ChatInternalMessage=require(_0xc980('0x1'))['db'][_0xc980('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xc980('0x3')](0x0);var events={'afterCreate':_0xc980('0x4'),'afterUpdate':_0xc980('0x5'),'afterDestroy':_0xc980('0x6')};function emitEvent(_0x41d503){return function(_0x31af83,_0x3dd395,_0x2af8db){ChatInternalMessageEvents['emit'](_0x41d503+':'+_0x31af83['id'],_0x31af83);ChatInternalMessageEvents[_0xc980('0x7')](_0x41d503,_0x31af83);_0x2af8db(null);};}for(var e in events){if(events[_0xc980('0x8')](e)){var event=events[e];ChatInternalMessage[_0xc980('0x9')](e,emitEvent(event));}}module[_0xc980('0xa')]=ChatInternalMessageEvents;
\ No newline at end of file
index d762964..76d7449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x101e=['path','rimraf','../../config/environment','./chatInternalMessage.attributes','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise'];(function(_0x34d52b,_0x410457){var _0x380c14=function(_0x5ad444){while(--_0x5ad444){_0x34d52b['push'](_0x34d52b['shift']());}};_0x380c14(++_0x410457);}(_0x101e,0x13f));var _0xe101=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x101e[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0xe101('0x0'));var util=require(_0xe101('0x1'));var logger=require(_0xe101('0x2'))(_0xe101('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe101('0x4'));var fs=require('fs');var path=require(_0xe101('0x5'));var rimraf=require(_0xe101('0x6'));var config=require(_0xe101('0x7'));var attributes=require(_0xe101('0x8'));module['exports']=function(_0x4df00c,_0x2bb9d0){return _0x4df00c['define'](_0xe101('0x9'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe101('0xa'),'collate':_0xe101('0xb')});};
\ No newline at end of file
+var _0x39de=['request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','lodash','../../config/logger','api','moment','bluebird'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x39de,0x145));var _0xe39d=function(_0x4bf83e,_0x429223){_0x4bf83e=_0x4bf83e-0x0;var _0x5647c9=_0x39de[_0x4bf83e];return _0x5647c9;};'use strict';var _=require(_0xe39d('0x0'));var util=require('util');var logger=require(_0xe39d('0x1'))(_0xe39d('0x2'));var moment=require(_0xe39d('0x3'));var BPromise=require(_0xe39d('0x4'));var rp=require(_0xe39d('0x5'));var fs=require('fs');var path=require(_0xe39d('0x6'));var rimraf=require(_0xe39d('0x7'));var config=require(_0xe39d('0x8'));var attributes=require(_0xe39d('0x9'));module[_0xe39d('0xa')]=function(_0x327568,_0x50b77b){return _0x327568[_0xe39d('0xb')](_0xe39d('0xc'),attributes,{'tableName':_0xe39d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe39d('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 811a405..1e7d0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d11=['request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3d11,0x105));var _0x13d1=function(_0x5c56bd,_0x5c8369){_0x5c56bd=_0x5c56bd-0x0;var _0x56d6c6=_0x3d11[_0x5c56bd];return _0x56d6c6;};'use strict';var _=require(_0x13d1('0x0'));var util=require(_0x13d1('0x1'));var moment=require(_0x13d1('0x2'));var BPromise=require(_0x13d1('0x3'));var rs=require(_0x13d1('0x4'));var fs=require('fs');var Redis=require(_0x13d1('0x5'));var db=require(_0x13d1('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x13d1('0x7'));var config=require('../../config/environment');var jayson=require(_0x13d1('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x13d1('0x9')](config[_0x13d1('0xa')],{'host':_0x13d1('0xb'),'port':0x18eb});var socket=require(_0x13d1('0xc'))(new Redis(config[_0x13d1('0xa')]));require(_0x13d1('0xd'))[_0x13d1('0xe')](socket);function respondWithRpcPromise(_0xc215b7,_0x54f1dd,_0x2289b4){return new BPromise(function(_0x22924f,_0x2120d4){return client[_0x13d1('0xf')](_0xc215b7,_0x2289b4)[_0x13d1('0x10')](function(_0x58c54b){logger[_0x13d1('0x11')](_0x13d1('0x12'),_0x54f1dd,_0x13d1('0x13'));logger[_0x13d1('0x14')](_0x13d1('0x15'),_0x54f1dd,'request\x20sent',JSON[_0x13d1('0x16')](_0x58c54b));if(_0x58c54b['error']){if(_0x58c54b[_0x13d1('0x17')][_0x13d1('0x18')]===0x1f4){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x54f1dd,_0x58c54b[_0x13d1('0x17')][_0x13d1('0x19')]);return _0x2120d4(_0x58c54b[_0x13d1('0x17')][_0x13d1('0x19')]);}logger[_0x13d1('0x17')](_0x13d1('0x12'),_0x54f1dd,_0x58c54b[_0x13d1('0x17')][_0x13d1('0x19')]);return _0x22924f(_0x58c54b['error'][_0x13d1('0x19')]);}else{logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x54f1dd,_0x13d1('0x13'));_0x22924f(_0x58c54b[_0x13d1('0x1a')]['message']);}})[_0x13d1('0x1b')](function(_0x5d7196){logger[_0x13d1('0x17')](_0x13d1('0x12'),_0x54f1dd,_0x5d7196);_0x2120d4(_0x5d7196);});});}
\ No newline at end of file
+var _0x33dc=['then','info','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register'];(function(_0xcfdb3b,_0x2eb63d){var _0x3e1505=function(_0x91fac2){while(--_0x91fac2){_0xcfdb3b['push'](_0xcfdb3b['shift']());}};_0x3e1505(++_0x2eb63d);}(_0x33dc,0x91));var _0xc33d=function(_0x5be7aa,_0x5de661){_0x5be7aa=_0x5be7aa-0x0;var _0x215408=_0x33dc[_0x5be7aa];return _0x215408;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc33d('0x0'));var BPromise=require('bluebird');var rs=require(_0xc33d('0x1'));var fs=require('fs');var Redis=require(_0xc33d('0x2'));var db=require(_0xc33d('0x3'))['db'];var utils=require(_0xc33d('0x4'));var logger=require(_0xc33d('0x5'))(_0xc33d('0x6'));var config=require(_0xc33d('0x7'));var jayson=require(_0xc33d('0x8'));var client=jayson[_0xc33d('0x9')][_0xc33d('0xa')]({'port':0x232a});config['redis']=_[_0xc33d('0xb')](config[_0xc33d('0xc')],{'host':_0xc33d('0xd'),'port':0x18eb});var socket=require(_0xc33d('0xe'))(new Redis(config['redis']));require(_0xc33d('0xf'))[_0xc33d('0x10')](socket);function respondWithRpcPromise(_0x3ca8d4,_0x94212f,_0x362cf0){return new BPromise(function(_0x143d8a,_0x1e7323){return client['request'](_0x3ca8d4,_0x362cf0)[_0xc33d('0x11')](function(_0x5bb189){logger[_0xc33d('0x12')]('ChatInternalMessage,\x20%s,\x20%s',_0x94212f,'request\x20sent');logger[_0xc33d('0x13')](_0xc33d('0x14'),_0x94212f,_0xc33d('0x15'),JSON[_0xc33d('0x16')](_0x5bb189));if(_0x5bb189[_0xc33d('0x17')]){if(_0x5bb189[_0xc33d('0x17')][_0xc33d('0x18')]===0x1f4){logger[_0xc33d('0x17')](_0xc33d('0x19'),_0x94212f,_0x5bb189[_0xc33d('0x17')][_0xc33d('0x1a')]);return _0x1e7323(_0x5bb189[_0xc33d('0x17')][_0xc33d('0x1a')]);}logger[_0xc33d('0x17')](_0xc33d('0x19'),_0x94212f,_0x5bb189[_0xc33d('0x17')][_0xc33d('0x1a')]);return _0x143d8a(_0x5bb189[_0xc33d('0x17')][_0xc33d('0x1a')]);}else{logger[_0xc33d('0x12')](_0xc33d('0x19'),_0x94212f,'request\x20sent');_0x143d8a(_0x5bb189['result'][_0xc33d('0x1a')]);}})['catch'](function(_0x44d16b){logger[_0xc33d('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x94212f,_0x44d16b);_0x1e7323(_0x44d16b);});});}
\ No newline at end of file
index 1c0d23a..0b215cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0099=['./chatInternalMessage.events','remove','update','removeListener','register','length','chatInternalMessage:'];(function(_0x4a6ce8,_0x55347e){var _0xa8624=function(_0x5ef885){while(--_0x5ef885){_0x4a6ce8['push'](_0x4a6ce8['shift']());}};_0xa8624(++_0x55347e);}(_0x0099,0x18f));var _0x9009=function(_0xffd1b5,_0x1ede18){_0xffd1b5=_0xffd1b5-0x0;var _0x3176d6=_0x0099[_0xffd1b5];return _0x3176d6;};'use strict';var ChatInternalMessageEvents=require(_0x9009('0x0'));var events=['save',_0x9009('0x1'),_0x9009('0x2')];function createListener(_0x4d2107,_0x54d110){return function(_0x4d3fbc){_0x54d110['emit'](_0x4d2107,_0x4d3fbc);};}function removeListener(_0x111895,_0x3f8e05){return function(){ChatInternalMessageEvents[_0x9009('0x3')](_0x111895,_0x3f8e05);};}exports[_0x9009('0x4')]=function(_0x4c5fe4){for(var _0x3d3af2=0x0,_0x599ac4=events[_0x9009('0x5')];_0x3d3af2<_0x599ac4;_0x3d3af2++){var _0x5865a4=events[_0x3d3af2];var _0xa2757b=createListener(_0x9009('0x6')+_0x5865a4,_0x4c5fe4);ChatInternalMessageEvents['on'](_0x5865a4,_0xa2757b);}};
\ No newline at end of file
+var _0x5a55=['register','chatInternalMessage:','./chatInternalMessage.events','save','update','emit','removeListener'];(function(_0x3ecf87,_0x1e07a9){var _0x4fae46=function(_0x4d5ba4){while(--_0x4d5ba4){_0x3ecf87['push'](_0x3ecf87['shift']());}};_0x4fae46(++_0x1e07a9);}(_0x5a55,0x1bb));var _0x55a5=function(_0x231e16,_0x67347b){_0x231e16=_0x231e16-0x0;var _0x570a7c=_0x5a55[_0x231e16];return _0x570a7c;};'use strict';var ChatInternalMessageEvents=require(_0x55a5('0x0'));var events=[_0x55a5('0x1'),'remove',_0x55a5('0x2')];function createListener(_0x261940,_0xb56eae){return function(_0x4d3c5f){_0xb56eae[_0x55a5('0x3')](_0x261940,_0x4d3c5f);};}function removeListener(_0x357ddc,_0x1b2b57){return function(){ChatInternalMessageEvents[_0x55a5('0x4')](_0x357ddc,_0x1b2b57);};}exports[_0x55a5('0x5')]=function(_0x50605a){for(var _0x3266d0=0x0,_0x25e3f7=events['length'];_0x3266d0<_0x25e3f7;_0x3266d0++){var _0x472df6=events[_0x3266d0];var _0x391da7=createListener(_0x55a5('0x6')+_0x472df6,_0x50605a);ChatInternalMessageEvents['on'](_0x472df6,_0x391da7);}};
\ No newline at end of file
index aa9ecf4..885a481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d1=['multer','path','fs-extra','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','/users','/:id','show','post','create','delete','destroy','exports'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x90d1,0xff));var _0x190d=function(_0x4a6953,_0x226a21){_0x4a6953=_0x4a6953-0x0;var _0x4c1f52=_0x90d1[_0x4a6953];return _0x4c1f52;};'use strict';var multer=require(_0x190d('0x0'));var util=require('util');var path=require(_0x190d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x190d('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x190d('0x3'));var controller=require(_0x190d('0x4'));router[_0x190d('0x5')]('/',auth[_0x190d('0x6')](),controller[_0x190d('0x7')]);router['get'](_0x190d('0x8'),auth[_0x190d('0x6')](),controller['describe']);router[_0x190d('0x5')](_0x190d('0x9'),auth[_0x190d('0x6')](),controller['getUsers']);router[_0x190d('0x5')](_0x190d('0xa'),auth[_0x190d('0x6')](),controller[_0x190d('0xb')]);router[_0x190d('0xc')]('/',auth[_0x190d('0x6')](),controller[_0x190d('0xd')]);router['put'](_0x190d('0xa'),controller['update']);router[_0x190d('0xe')](_0x190d('0xa'),auth[_0x190d('0x6')](),controller[_0x190d('0xf')]);module[_0x190d('0x10')]=router;
\ No newline at end of file
+var _0x87c6=['express','Router','./chatInternalMessage.controller','get','isAuthenticated','/describe','describe','/users','getUsers','/:id','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x2a6501,_0x9c5a0e){var _0x34d3ae=function(_0x204c8b){while(--_0x204c8b){_0x2a6501['push'](_0x2a6501['shift']());}};_0x34d3ae(++_0x9c5a0e);}(_0x87c6,0x150));var _0x687c=function(_0x48260b,_0x496068){_0x48260b=_0x48260b-0x0;var _0x15213f=_0x87c6[_0x48260b];return _0x15213f;};'use strict';var multer=require(_0x687c('0x0'));var util=require(_0x687c('0x1'));var path=require(_0x687c('0x2'));var timeout=require(_0x687c('0x3'));var express=require(_0x687c('0x4'));var router=express[_0x687c('0x5')]();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(_0x687c('0x6'));router[_0x687c('0x7')]('/',auth[_0x687c('0x8')](),controller['index']);router[_0x687c('0x7')](_0x687c('0x9'),auth[_0x687c('0x8')](),controller[_0x687c('0xa')]);router[_0x687c('0x7')](_0x687c('0xb'),auth[_0x687c('0x8')](),controller[_0x687c('0xc')]);router[_0x687c('0x7')](_0x687c('0xd'),auth[_0x687c('0x8')](),controller['show']);router[_0x687c('0xe')]('/',auth['isAuthenticated'](),controller[_0x687c('0xf')]);router['put']('/:id',controller[_0x687c('0x10')]);router[_0x687c('0x11')]('/:id',auth[_0x687c('0x8')](),controller[_0x687c('0x12')]);module[_0x687c('0x13')]=router;
\ No newline at end of file
index aeedca0..6e253db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x349e=['ENUM','out','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x4ed205,_0x149f2b){var _0x119603=function(_0x17091b){while(--_0x17091b){_0x4ed205['push'](_0x4ed205['shift']());}};_0x119603(++_0x149f2b);}(_0x349e,0xcb));var _0xe349=function(_0x302916,_0x5d7e60){_0x302916=_0x302916-0x0;var _0x48c086=_0x349e[_0x302916];return _0x48c086;};'use strict';var Sequelize=require(_0xe349('0x0'));module[_0xe349('0x1')]={'body':{'type':Sequelize[_0xe349('0x2')](_0xe349('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe349('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xe349('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe349('0x5')]('in',_0xe349('0x6')),'defaultValue':_0xe349('0x6'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xe349('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x81cb=['DATE','TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out'];(function(_0x3d602a,_0x229900){var _0x46b2e8=function(_0x278a2b){while(--_0x278a2b){_0x3d602a['push'](_0x3d602a['shift']());}};_0x46b2e8(++_0x229900);}(_0x81cb,0xaa));var _0xb81c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x81cb[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb81c('0x0'));module[_0xb81c('0x1')]={'body':{'type':Sequelize['TEXT'](_0xb81c('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xb81c('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xb81c('0x4')]('in',_0xb81c('0x5')),'defaultValue':_0xb81c('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xb81c('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xb81c('0x7')]}};
\ No newline at end of file
index 6dfbf82..663e647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e70=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','code','ChatMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','destroy','stack','name','send','map','ChatMessage','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','find','create','update','body','describe','accept','chat','read','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','stringify','null','AcceptMessage','acceptMessage','sequelize','QueryTypes','SELECT','contact','User','fullname','email','SIP/%s','channel','motionChannel','event','acceptmessage','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','internal','interface','rejectmessage','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8e70,0xf8));var _0x08e7=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x8e70[_0x599f41];return _0x2e4d58;};'use strict';var emlformat=require(_0x08e7('0x0'));var rimraf=require(_0x08e7('0x1'));var zipdir=require(_0x08e7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x08e7('0x3'));var BPromise=require(_0x08e7('0x4'));var Mustache=require(_0x08e7('0x5'));var util=require(_0x08e7('0x6'));var path=require(_0x08e7('0x7'));var sox=require(_0x08e7('0x8'));var csv=require(_0x08e7('0x9'));var ejs=require(_0x08e7('0xa'));var fs=require('fs');var fs_extra=require(_0x08e7('0xb'));var _=require(_0x08e7('0xc'));var squel=require(_0x08e7('0xd'));var crypto=require(_0x08e7('0xe'));var jsforce=require(_0x08e7('0xf'));var deskjs=require(_0x08e7('0x10'));var toCsv=require(_0x08e7('0x9'));var querystring=require(_0x08e7('0x11'));var Papa=require('papaparse');var Redis=require(_0x08e7('0x12'));var authService=require(_0x08e7('0x13'));var qs=require(_0x08e7('0x14'));var as=require(_0x08e7('0x15'));var hardwareService=require(_0x08e7('0x16'));var logger=require(_0x08e7('0x17'))(_0x08e7('0x18'));var utils=require('../../config/utils');var config=require(_0x08e7('0x19'));var licenseUtil=require(_0x08e7('0x1a'));var db=require(_0x08e7('0x1b'))['db'];config[_0x08e7('0x1c')]=_[_0x08e7('0x1d')](config[_0x08e7('0x1c')],{'host':_0x08e7('0x1e'),'port':0x18eb});var socket=require(_0x08e7('0x1f'))(new Redis(config['redis']));require(_0x08e7('0x20'))['register'](socket);var jayson=require(_0x08e7('0x21'));var client=jayson[_0x08e7('0x22')][_0x08e7('0x23')]({'port':0x232c});var client9002=jayson[_0x08e7('0x22')][_0x08e7('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x461250,_0x2df62e,_0x35f61c,_0x2c30a6){return new BPromise(function(_0x1fee66,_0x5f3dd2){var _0x32d8e6=_0x2c30a6||client;return _0x32d8e6[_0x08e7('0x24')](_0x461250,_0x35f61c)[_0x08e7('0x25')](function(_0x42acc0){logger[_0x08e7('0x26')]('ChatMessage,\x20%s,\x20%s',_0x2df62e,_0x08e7('0x27'));logger[_0x08e7('0x28')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x2df62e,_0x08e7('0x27'),JSON['stringify'](_0x42acc0));if(_0x42acc0[_0x08e7('0x29')]){if(_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2a')]===0x1f4){logger[_0x08e7('0x29')](_0x08e7('0x2b'),_0x2df62e,_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2c')]);return _0x5f3dd2(_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2c')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x2df62e,_0x42acc0['error']['message']);return _0x1fee66(_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2c')]);}else{logger[_0x08e7('0x26')](_0x08e7('0x2b'),_0x2df62e,'request\x20sent');_0x1fee66(_0x42acc0['result'][_0x08e7('0x2c')]);}})[_0x08e7('0x2d')](function(_0x4a2987){logger[_0x08e7('0x29')](_0x08e7('0x2b'),_0x2df62e,_0x4a2987);_0x5f3dd2(_0x4a2987);});});}function respondWithStatusCode(_0x2fb4a5,_0x38d20d){_0x38d20d=_0x38d20d||0xcc;return function(_0xd06bc0){if(_0xd06bc0){return _0x2fb4a5[_0x08e7('0x2e')](_0x38d20d);}return _0x2fb4a5[_0x08e7('0x2f')](_0x38d20d)[_0x08e7('0x30')]();};}function respondWithResult(_0x26dfc7,_0x14cae3){_0x14cae3=_0x14cae3||0xc8;return function(_0x3439c1){if(_0x3439c1){return _0x26dfc7[_0x08e7('0x2f')](_0x14cae3)['json'](_0x3439c1);}};}function respondWithFilteredResult(_0x42662c,_0xc1350a){return function(_0x3e3a03){if(_0x3e3a03){var _0x3d0799=typeof _0xc1350a[_0x08e7('0x31')]===_0x08e7('0x32')&&typeof _0xc1350a[_0x08e7('0x33')]===_0x08e7('0x32');var _0x1a7e3c=_0x3e3a03['count'];var _0x4272ab=_0x3d0799?0x0:_0xc1350a[_0x08e7('0x31')];var _0x360d84=_0x3d0799?_0x3e3a03[_0x08e7('0x34')]:_0xc1350a['offset']+_0xc1350a[_0x08e7('0x33')];var _0x3989c9;if(_0x360d84>=_0x1a7e3c){_0x360d84=_0x1a7e3c;_0x3989c9=0xc8;}else{_0x3989c9=0xce;}_0x42662c[_0x08e7('0x2f')](_0x3989c9);return _0x42662c[_0x08e7('0x35')]('Content-Range',_0x4272ab+'-'+_0x360d84+'/'+_0x1a7e3c)[_0x08e7('0x36')](_0x3e3a03);}return null;};}function patchUpdates(_0x1c6922){return function(_0x2e36f0){try{jsonpatch['apply'](_0x2e36f0,_0x1c6922,!![]);}catch(_0x1c746d){return BPromise[_0x08e7('0x37')](_0x1c746d);}return _0x2e36f0['save']();};}function saveUpdates(_0x19768b,_0x3740e7){return function(_0x433c35){if(_0x433c35){return _0x433c35['update'](_0x19768b)[_0x08e7('0x25')](function(_0x43e70a){return _0x43e70a;});}return null;};}function removeEntity(_0x1be0d1,_0x5aea8d){return function(_0x136601){if(_0x136601){return _0x136601[_0x08e7('0x38')]()[_0x08e7('0x25')](function(){_0x1be0d1[_0x08e7('0x2f')](0xcc)[_0x08e7('0x30')]();});}};}function handleEntityNotFound(_0x33077f,_0x46514b){return function(_0xc4d67f){if(!_0xc4d67f){_0x33077f[_0x08e7('0x2e')](0x194);}return _0xc4d67f;};}function handleError(_0x31e457,_0x3d005f){_0x3d005f=_0x3d005f||0x1f4;return function(_0x2e3579){logger[_0x08e7('0x29')](_0x2e3579[_0x08e7('0x39')]);if(_0x2e3579[_0x08e7('0x3a')]){delete _0x2e3579[_0x08e7('0x3a')];}_0x31e457[_0x08e7('0x2f')](_0x3d005f)[_0x08e7('0x3b')](_0x2e3579);};}exports['index']=function(_0xf656ab,_0x390168){var _0x47aee9={},_0x4b4934={},_0x18479a={'count':0x0,'rows':[]};var _0x1ef38c=_[_0x08e7('0x3c')](db[_0x08e7('0x3d')][_0x08e7('0x3e')],function(_0x3e68fa){return{'name':_0x3e68fa['fieldName'],'type':_0x3e68fa[_0x08e7('0x3f')][_0x08e7('0x40')]};});_0x4b4934[_0x08e7('0x41')]=_[_0x08e7('0x3c')](_0x1ef38c,'name');_0x4b4934['query']=_[_0x08e7('0x42')](_0xf656ab[_0x08e7('0x43')]);_0x4b4934[_0x08e7('0x44')]=_[_0x08e7('0x45')](_0x4b4934[_0x08e7('0x41')],_0x4b4934[_0x08e7('0x43')]);_0x47aee9['attributes']=_[_0x08e7('0x45')](_0x4b4934[_0x08e7('0x41')],qs[_0x08e7('0x46')](_0xf656ab['query'][_0x08e7('0x46')]));_0x47aee9[_0x08e7('0x47')]=_0x47aee9[_0x08e7('0x47')][_0x08e7('0x48')]?_0x47aee9[_0x08e7('0x47')]:_0x4b4934[_0x08e7('0x41')];if(!_0xf656ab[_0x08e7('0x43')][_0x08e7('0x49')](_0x08e7('0x4a'))){_0x47aee9[_0x08e7('0x33')]=qs['limit'](_0xf656ab[_0x08e7('0x43')]['limit']);_0x47aee9['offset']=qs[_0x08e7('0x31')](_0xf656ab['query']['offset']);}_0x47aee9[_0x08e7('0x4b')]=qs[_0x08e7('0x4c')](_0xf656ab[_0x08e7('0x43')][_0x08e7('0x4c')]);_0x47aee9[_0x08e7('0x4d')]=qs[_0x08e7('0x44')](_[_0x08e7('0x4e')](_0xf656ab['query'],_0x4b4934[_0x08e7('0x44')]),_0x1ef38c);if(_0xf656ab[_0x08e7('0x43')]['filter']){_0x47aee9[_0x08e7('0x4d')]=_[_0x08e7('0x4f')](_0x47aee9[_0x08e7('0x4d')],{'$or':_['map'](_0x1ef38c,function(_0x22fe84){if(_0x22fe84[_0x08e7('0x3f')]!==_0x08e7('0x50')){var _0x7c98ac={};_0x7c98ac[_0x22fe84[_0x08e7('0x3a')]]={'$like':'%'+_0xf656ab[_0x08e7('0x43')][_0x08e7('0x51')]+'%'};return _0x7c98ac;}})});}_0x47aee9=_[_0x08e7('0x4f')]({},_0x47aee9,_0xf656ab[_0x08e7('0x52')]);var _0x420f69={'where':_0x47aee9[_0x08e7('0x4d')]};return db[_0x08e7('0x3d')]['count'](_0x420f69)['then'](function(_0x2e3996){_0x18479a['count']=_0x2e3996;if(_0xf656ab[_0x08e7('0x43')][_0x08e7('0x53')]){_0x47aee9[_0x08e7('0x54')]=[{'all':!![]}];}return db[_0x08e7('0x3d')][_0x08e7('0x55')](_0x47aee9);})[_0x08e7('0x25')](function(_0x1c3eb7){_0x18479a[_0x08e7('0x56')]=_0x1c3eb7;return _0x18479a;})[_0x08e7('0x25')](respondWithFilteredResult(_0x390168,_0x47aee9))[_0x08e7('0x2d')](handleError(_0x390168,null));};exports['show']=function(_0x5a3a7f,_0x39a550){var _0x244c79={'raw':!![],'where':{'id':_0x5a3a7f[_0x08e7('0x57')]['id']}},_0x385e3f={};_0x385e3f[_0x08e7('0x41')]=_[_0x08e7('0x42')](db['ChatMessage'][_0x08e7('0x3e')]);_0x385e3f[_0x08e7('0x43')]=_[_0x08e7('0x42')](_0x5a3a7f[_0x08e7('0x43')]);_0x385e3f[_0x08e7('0x44')]=_[_0x08e7('0x45')](_0x385e3f[_0x08e7('0x41')],_0x385e3f['query']);_0x244c79[_0x08e7('0x47')]=_['intersection'](_0x385e3f[_0x08e7('0x41')],qs[_0x08e7('0x46')](_0x5a3a7f[_0x08e7('0x43')][_0x08e7('0x46')]));_0x244c79[_0x08e7('0x47')]=_0x244c79[_0x08e7('0x47')][_0x08e7('0x48')]?_0x244c79['attributes']:_0x385e3f[_0x08e7('0x41')];if(_0x5a3a7f[_0x08e7('0x43')][_0x08e7('0x53')]){_0x244c79[_0x08e7('0x54')]=[{'all':!![]}];}_0x244c79=_[_0x08e7('0x4f')]({},_0x244c79,_0x5a3a7f[_0x08e7('0x52')]);return db[_0x08e7('0x3d')][_0x08e7('0x58')](_0x244c79)['then'](handleEntityNotFound(_0x39a550,null))[_0x08e7('0x25')](respondWithResult(_0x39a550,null))[_0x08e7('0x2d')](handleError(_0x39a550,null));};exports['create']=function(_0x1a6c2d,_0x1f18c9){return db[_0x08e7('0x3d')][_0x08e7('0x59')](_0x1a6c2d['body'],{})['then'](respondWithResult(_0x1f18c9,0xc9))['catch'](handleError(_0x1f18c9,null));};exports[_0x08e7('0x5a')]=function(_0x52dc5e,_0x571191){if(_0x52dc5e[_0x08e7('0x5b')]['id']){delete _0x52dc5e[_0x08e7('0x5b')]['id'];}return db[_0x08e7('0x3d')][_0x08e7('0x58')]({'where':{'id':_0x52dc5e[_0x08e7('0x57')]['id']}})['then'](handleEntityNotFound(_0x571191,null))['then'](saveUpdates(_0x52dc5e[_0x08e7('0x5b')],null))[_0x08e7('0x25')](respondWithResult(_0x571191,null))[_0x08e7('0x2d')](handleError(_0x571191,null));};exports[_0x08e7('0x38')]=function(_0x2c998b,_0x51666f){return db[_0x08e7('0x3d')]['find']({'where':{'id':_0x2c998b['params']['id']}})[_0x08e7('0x25')](handleEntityNotFound(_0x51666f,null))['then'](removeEntity(_0x51666f,null))[_0x08e7('0x2d')](handleError(_0x51666f,null));};exports['describe']=function(_0x39efcc,_0x3be378){return db['ChatMessage'][_0x08e7('0x5c')]()[_0x08e7('0x25')](respondWithResult(_0x3be378,null))['catch'](handleError(_0x3be378,null));};var interaction_log=require(_0x08e7('0x17'))('chat-interactions');exports[_0x08e7('0x5d')]=function(_0x61f1b3,_0x1d20b0,_0x450456){var _0x261eb3={'agent':{},'channel':_0x08e7('0x5e')};if(_0x61f1b3[_0x08e7('0x5b')]['id']){delete _0x61f1b3[_0x08e7('0x5b')]['id'];}_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x5f')]=!![];_0x61f1b3[_0x08e7('0x5b')]['readAt']=moment()[_0x08e7('0x60')](_0x08e7('0x61'));_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')]=_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')]||_0x61f1b3['user']['id'];_0x261eb3[_0x08e7('0x63')]['id']=_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')];return db[_0x08e7('0x3d')][_0x08e7('0x58')]({'where':{'id':_0x61f1b3['params']['id'],'UserId':null}})[_0x08e7('0x25')](handleEntityNotFound(_0x1d20b0,null))[_0x08e7('0x25')](saveUpdates(_0x61f1b3[_0x08e7('0x5b')],null))[_0x08e7('0x25')](function(_0x5737b7){if(_0x5737b7){_0x261eb3[_0x08e7('0x2c')]=_0x5737b7[_0x08e7('0x64')]({'plain':!![]});return db[_0x08e7('0x65')]['find']({'where':{'id':_0x5737b7[_0x08e7('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x1d20b0,null))[_0x08e7('0x25')](function(_0x334032){if(_0x334032){return _0x334032[_0x08e7('0x5a')]({'UserId':_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')],'read1stAt':_[_0x08e7('0x67')](_0x334032[_0x08e7('0x68')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x37ea91){if(_0x37ea91){_0x261eb3[_0x08e7('0x69')]=_0x37ea91[_0x08e7('0x64')]({'plain':!![]});interaction_log[_0x08e7('0x26')](_0x08e7('0x6a'),_0x61f1b3[_0x08e7('0x6b')]['id'],_0x61f1b3[_0x08e7('0x6b')][_0x08e7('0x3a')],_0x61f1b3[_0x08e7('0x6b')][_0x08e7('0x6c')],_0x261eb3[_0x08e7('0x69')]['id'],_0x61f1b3[_0x08e7('0x5b')]?JSON[_0x08e7('0x6d')](_0x61f1b3[_0x08e7('0x5b')]):_0x08e7('0x6e'));return respondWithRpcPromise(_0x08e7('0x6f'),_0x08e7('0x70'),_0x261eb3);}return null;})[_0x08e7('0x25')](function(_0x342b14){var _0x1e469d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x342b14[_0x08e7('0x2c')]['ContactId'];return db[_0x08e7('0x71')][_0x08e7('0x43')](_0x1e469d,{'type':db['Sequelize'][_0x08e7('0x72')][_0x08e7('0x73')],'raw':!![]})['then'](function(_0x94d1a0){return _0x94d1a0;});})[_0x08e7('0x25')](function(_0x25e224){if(_0x25e224){_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x74')]=_0x25e224[0x0];if(!_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')])return;return db[_0x08e7('0x75')][_0x08e7('0x58')]({'where':{'id':_0x61f1b3['body']['UserId'],'role':_0x08e7('0x63')},'attributes':['id',_0x08e7('0x3a'),_0x08e7('0x76'),_0x08e7('0x77'),'internal'],'raw':!![]});}return null;})['then'](function(_0x58e9ba){if(!_0x58e9ba)return null;_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x63')]=_0x58e9ba;return _0x261eb3;})[_0x08e7('0x25')](function(_0x5a71dd){if(_0x5a71dd){if(_0x61f1b3['body']['manual']){_0x261eb3[_0x08e7('0x2c')]['interface']=util['format'](_0x08e7('0x78'),_0x61f1b3[_0x08e7('0x6b')]['name']);_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x79')]=_0x261eb3[_0x08e7('0x79')];_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x7a')]=_0x261eb3[_0x08e7('0x79')];_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x7b')]=_0x08e7('0x5d');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x08e7('0x7c'),'message':_['merge'](_0x261eb3['message'],JSON[_0x08e7('0x7d')](_0x261eb3[_0x08e7('0x69')][_0x08e7('0x7e')]))},client9002)[_0x08e7('0x25')](function(){return _0x261eb3;});}return _0x261eb3;}return null;})[_0x08e7('0x25')](respondWithResult(_0x1d20b0,null))[_0x08e7('0x2d')](handleError(_0x1d20b0,null));};var interaction_log=require(_0x08e7('0x17'))('chat-interactions');exports[_0x08e7('0x37')]=function(_0x51e538,_0x28d6c9,_0x435bd0){var _0x1a7d20={'agent':{},'channel':'chat'};if(_0x51e538['body']['id']){delete _0x51e538[_0x08e7('0x5b')]['id'];}_0x51e538[_0x08e7('0x5b')][_0x08e7('0x62')]=_0x51e538[_0x08e7('0x5b')][_0x08e7('0x62')]||_0x51e538[_0x08e7('0x6b')]['id'];_0x1a7d20[_0x08e7('0x63')]['id']=_0x51e538['body'][_0x08e7('0x62')];return db[_0x08e7('0x3d')][_0x08e7('0x58')]({'where':{'id':_0x51e538[_0x08e7('0x57')]['id'],'UserId':null}})[_0x08e7('0x25')](handleEntityNotFound(_0x28d6c9,null))[_0x08e7('0x25')](function(_0x243a31){if(_0x243a31){_0x1a7d20['message']=_0x243a31[_0x08e7('0x64')]({'plain':!![]});return db['ChatInteraction'][_0x08e7('0x58')]({'where':{'id':_0x243a31[_0x08e7('0x66')]}});}return null;})[_0x08e7('0x25')](handleEntityNotFound(_0x28d6c9,null))[_0x08e7('0x25')](function(_0x12247c){if(_0x12247c){_0x1a7d20[_0x08e7('0x69')]=_0x12247c['get']({'plain':!![]});interaction_log['info'](_0x08e7('0x7f'),_0x51e538[_0x08e7('0x6b')]['id'],_0x51e538[_0x08e7('0x6b')][_0x08e7('0x3a')],_0x51e538[_0x08e7('0x6b')]['role'],_0x1a7d20['interaction']['id'],_0x51e538[_0x08e7('0x5b')]?JSON[_0x08e7('0x6d')](_0x51e538[_0x08e7('0x5b')]):_0x08e7('0x6e'));return respondWithRpcPromise(_0x08e7('0x80'),_0x08e7('0x81'),_0x1a7d20);}return null;})[_0x08e7('0x25')](function(_0x597274){var _0x1e6cfd='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x597274[_0x08e7('0x2c')]['ContactId'];return db[_0x08e7('0x71')][_0x08e7('0x43')](_0x1e6cfd,{'type':db[_0x08e7('0x82')][_0x08e7('0x72')]['SELECT'],'raw':!![]})[_0x08e7('0x25')](function(_0x420369){return _0x420369;});})[_0x08e7('0x25')](function(_0x362b4f){if(_0x362b4f){_0x1a7d20[_0x08e7('0x2c')][_0x08e7('0x74')]=_0x362b4f[0x0];if(!_0x51e538[_0x08e7('0x5b')]['UserId'])return;return db[_0x08e7('0x75')][_0x08e7('0x58')]({'where':{'id':_0x51e538[_0x08e7('0x5b')][_0x08e7('0x62')],'role':_0x08e7('0x63')},'attributes':['id',_0x08e7('0x3a'),_0x08e7('0x76'),_0x08e7('0x77'),_0x08e7('0x83')],'raw':!![]});}return null;})['then'](function(_0x2c3d54){if(!_0x2c3d54)return null;_0x1a7d20['message'][_0x08e7('0x63')]=_0x2c3d54;return _0x1a7d20;})[_0x08e7('0x25')](function(_0x362ff5){if(_0x362ff5){_0x362ff5[_0x08e7('0x2c')][_0x08e7('0x84')]=util[_0x08e7('0x60')]('SIP/%s',_0x51e538[_0x08e7('0x6b')]['name']);_0x362ff5[_0x08e7('0x2c')][_0x08e7('0x79')]=_0x1a7d20[_0x08e7('0x79')];_0x362ff5[_0x08e7('0x2c')]['motionChannel']=_0x1a7d20[_0x08e7('0x79')];_0x362ff5['message'][_0x08e7('0x7b')]=_0x08e7('0x37');respondWithRpcPromise('EventManager','EventManager',{'event':_0x08e7('0x85'),'message':_['merge'](_0x1a7d20[_0x08e7('0x2c')],JSON[_0x08e7('0x7d')](_0x1a7d20[_0x08e7('0x69')][_0x08e7('0x7e')]))},client9002);return _0x1a7d20;}return null;})[_0x08e7('0x25')](respondWithResult(_0x28d6c9,null))[_0x08e7('0x2d')](handleError(_0x28d6c9,null));};
\ No newline at end of file
+var _0x9d32=['key','model','map','name','query','intersection','fields','attributes','length','hasOwnProperty','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','rawAttributes','includeAll','find','create','body','destroy','describe','accept','chat','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','format','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','fullname','email','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','chat-interactions','reject','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','User','internal','formData','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','result','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','update','send','index','ChatMessage','fieldName','type'];(function(_0x3f3658,_0x2ae9c7){var _0x1725cc=function(_0x3dae42){while(--_0x3dae42){_0x3f3658['push'](_0x3f3658['shift']());}};_0x1725cc(++_0x2ae9c7);}(_0x9d32,0x15e));var _0x29d3=function(_0x10a212,_0x579d85){_0x10a212=_0x10a212-0x0;var _0x23c82b=_0x9d32[_0x10a212];return _0x23c82b;};'use strict';var emlformat=require(_0x29d3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x29d3('0x1'));var jsonpatch=require(_0x29d3('0x2'));var rp=require('request-promise');var moment=require(_0x29d3('0x3'));var BPromise=require(_0x29d3('0x4'));var Mustache=require(_0x29d3('0x5'));var util=require('util');var path=require(_0x29d3('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x29d3('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x29d3('0x8'));var squel=require(_0x29d3('0x9'));var crypto=require(_0x29d3('0xa'));var jsforce=require(_0x29d3('0xb'));var deskjs=require(_0x29d3('0xc'));var toCsv=require('to-csv');var querystring=require(_0x29d3('0xd'));var Papa=require(_0x29d3('0xe'));var Redis=require('ioredis');var authService=require(_0x29d3('0xf'));var qs=require(_0x29d3('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x29d3('0x11'));var logger=require(_0x29d3('0x12'))(_0x29d3('0x13'));var utils=require(_0x29d3('0x14'));var config=require(_0x29d3('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x29d3('0x16'))['db'];config[_0x29d3('0x17')]=_[_0x29d3('0x18')](config[_0x29d3('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x29d3('0x19'))(new Redis(config['redis']));require(_0x29d3('0x1a'))[_0x29d3('0x1b')](socket);var jayson=require(_0x29d3('0x1c'));var client=jayson[_0x29d3('0x1d')][_0x29d3('0x1e')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x12af08,_0x62336d,_0x3e048b,_0x438b81){return new BPromise(function(_0x37f0f3,_0xcfc8d7){var _0x58a323=_0x438b81||client;return _0x58a323[_0x29d3('0x1f')](_0x12af08,_0x3e048b)[_0x29d3('0x20')](function(_0x1b4bcb){logger[_0x29d3('0x21')]('ChatMessage,\x20%s,\x20%s',_0x62336d,_0x29d3('0x22'));logger[_0x29d3('0x23')](_0x29d3('0x24'),_0x62336d,_0x29d3('0x22'),JSON[_0x29d3('0x25')](_0x1b4bcb));if(_0x1b4bcb[_0x29d3('0x26')]){if(_0x1b4bcb[_0x29d3('0x26')][_0x29d3('0x27')]===0x1f4){logger[_0x29d3('0x26')]('ChatMessage,\x20%s,\x20%s',_0x62336d,_0x1b4bcb['error']['message']);return _0xcfc8d7(_0x1b4bcb[_0x29d3('0x26')]['message']);}logger[_0x29d3('0x26')](_0x29d3('0x28'),_0x62336d,_0x1b4bcb[_0x29d3('0x26')][_0x29d3('0x29')]);return _0x37f0f3(_0x1b4bcb[_0x29d3('0x26')][_0x29d3('0x29')]);}else{logger[_0x29d3('0x21')]('ChatMessage,\x20%s,\x20%s',_0x62336d,'request\x20sent');_0x37f0f3(_0x1b4bcb[_0x29d3('0x2a')][_0x29d3('0x29')]);}})['catch'](function(_0x4b2124){logger['error'](_0x29d3('0x28'),_0x62336d,_0x4b2124);_0xcfc8d7(_0x4b2124);});});}function respondWithStatusCode(_0x464b09,_0x2c3952){_0x2c3952=_0x2c3952||0xcc;return function(_0x4796a0){if(_0x4796a0){return _0x464b09[_0x29d3('0x2b')](_0x2c3952);}return _0x464b09['status'](_0x2c3952)[_0x29d3('0x2c')]();};}function respondWithResult(_0x19f3f0,_0x58ba65){_0x58ba65=_0x58ba65||0xc8;return function(_0x1a1471){if(_0x1a1471){return _0x19f3f0[_0x29d3('0x2d')](_0x58ba65)[_0x29d3('0x2e')](_0x1a1471);}};}function respondWithFilteredResult(_0x570325,_0x3ac954){return function(_0x45cab7){if(_0x45cab7){var _0x5ef601=typeof _0x3ac954[_0x29d3('0x2f')]===_0x29d3('0x30')&&typeof _0x3ac954['limit']==='undefined';var _0x8201ab=_0x45cab7[_0x29d3('0x31')];var _0x2c8719=_0x5ef601?0x0:_0x3ac954[_0x29d3('0x2f')];var _0x5af1f1=_0x5ef601?_0x45cab7[_0x29d3('0x31')]:_0x3ac954[_0x29d3('0x2f')]+_0x3ac954['limit'];var _0x2d6e96;if(_0x5af1f1>=_0x8201ab){_0x5af1f1=_0x8201ab;_0x2d6e96=0xc8;}else{_0x2d6e96=0xce;}_0x570325[_0x29d3('0x2d')](_0x2d6e96);return _0x570325[_0x29d3('0x32')](_0x29d3('0x33'),_0x2c8719+'-'+_0x5af1f1+'/'+_0x8201ab)[_0x29d3('0x2e')](_0x45cab7);}return null;};}function patchUpdates(_0x1998c2){return function(_0x49e40d){try{jsonpatch['apply'](_0x49e40d,_0x1998c2,!![]);}catch(_0x45c8d5){return BPromise['reject'](_0x45c8d5);}return _0x49e40d['save']();};}function saveUpdates(_0x22b6dc,_0x14f146){return function(_0x591fc9){if(_0x591fc9){return _0x591fc9[_0x29d3('0x34')](_0x22b6dc)[_0x29d3('0x20')](function(_0x55d2b8){return _0x55d2b8;});}return null;};}function removeEntity(_0x4695f8,_0x64a1a4){return function(_0x12aabf){if(_0x12aabf){return _0x12aabf['destroy']()['then'](function(){_0x4695f8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x54b12e,_0x261bfd){return function(_0xaa0abe){if(!_0xaa0abe){_0x54b12e[_0x29d3('0x2b')](0x194);}return _0xaa0abe;};}function handleError(_0x1f5df1,_0x10421f){_0x10421f=_0x10421f||0x1f4;return function(_0x4f36fe){logger[_0x29d3('0x26')](_0x4f36fe['stack']);if(_0x4f36fe['name']){delete _0x4f36fe['name'];}_0x1f5df1[_0x29d3('0x2d')](_0x10421f)[_0x29d3('0x35')](_0x4f36fe);};}exports[_0x29d3('0x36')]=function(_0x4c4166,_0x2630d9){var _0x35ccda={},_0x3dff6f={},_0x2d067a={'count':0x0,'rows':[]};var _0x4f27b3=_['map'](db[_0x29d3('0x37')]['rawAttributes'],function(_0x56067f){return{'name':_0x56067f[_0x29d3('0x38')],'type':_0x56067f[_0x29d3('0x39')][_0x29d3('0x3a')]};});_0x3dff6f[_0x29d3('0x3b')]=_[_0x29d3('0x3c')](_0x4f27b3,_0x29d3('0x3d'));_0x3dff6f[_0x29d3('0x3e')]=_['keys'](_0x4c4166['query']);_0x3dff6f['filters']=_[_0x29d3('0x3f')](_0x3dff6f[_0x29d3('0x3b')],_0x3dff6f['query']);_0x35ccda['attributes']=_[_0x29d3('0x3f')](_0x3dff6f['model'],qs[_0x29d3('0x40')](_0x4c4166[_0x29d3('0x3e')][_0x29d3('0x40')]));_0x35ccda[_0x29d3('0x41')]=_0x35ccda[_0x29d3('0x41')][_0x29d3('0x42')]?_0x35ccda[_0x29d3('0x41')]:_0x3dff6f[_0x29d3('0x3b')];if(!_0x4c4166[_0x29d3('0x3e')][_0x29d3('0x43')]('nolimit')){_0x35ccda['limit']=qs[_0x29d3('0x44')](_0x4c4166[_0x29d3('0x3e')][_0x29d3('0x44')]);_0x35ccda['offset']=qs[_0x29d3('0x2f')](_0x4c4166[_0x29d3('0x3e')][_0x29d3('0x2f')]);}_0x35ccda[_0x29d3('0x45')]=qs[_0x29d3('0x46')](_0x4c4166[_0x29d3('0x3e')][_0x29d3('0x46')]);_0x35ccda[_0x29d3('0x47')]=qs[_0x29d3('0x48')](_[_0x29d3('0x49')](_0x4c4166[_0x29d3('0x3e')],_0x3dff6f[_0x29d3('0x48')]),_0x4f27b3);if(_0x4c4166[_0x29d3('0x3e')][_0x29d3('0x4a')]){_0x35ccda['where']=_[_0x29d3('0x4b')](_0x35ccda[_0x29d3('0x47')],{'$or':_[_0x29d3('0x3c')](_0x4f27b3,function(_0x395aee){if(_0x395aee[_0x29d3('0x39')]!==_0x29d3('0x4c')){var _0x4bf18d={};_0x4bf18d[_0x395aee['name']]={'$like':'%'+_0x4c4166[_0x29d3('0x3e')][_0x29d3('0x4a')]+'%'};return _0x4bf18d;}})});}_0x35ccda=_[_0x29d3('0x4b')]({},_0x35ccda,_0x4c4166[_0x29d3('0x4d')]);var _0x2a8426={'where':_0x35ccda[_0x29d3('0x47')]};return db[_0x29d3('0x37')][_0x29d3('0x31')](_0x2a8426)['then'](function(_0x4a947c){_0x2d067a[_0x29d3('0x31')]=_0x4a947c;if(_0x4c4166[_0x29d3('0x3e')]['includeAll']){_0x35ccda[_0x29d3('0x4e')]=[{'all':!![]}];}return db['ChatMessage'][_0x29d3('0x4f')](_0x35ccda);})[_0x29d3('0x20')](function(_0x19399f){_0x2d067a[_0x29d3('0x50')]=_0x19399f;return _0x2d067a;})['then'](respondWithFilteredResult(_0x2630d9,_0x35ccda))[_0x29d3('0x51')](handleError(_0x2630d9,null));};exports[_0x29d3('0x52')]=function(_0x25b903,_0x28f56a){var _0x312c2f={'raw':!![],'where':{'id':_0x25b903[_0x29d3('0x53')]['id']}},_0x4ebcb2={};_0x4ebcb2[_0x29d3('0x3b')]=_[_0x29d3('0x54')](db[_0x29d3('0x37')][_0x29d3('0x55')]);_0x4ebcb2[_0x29d3('0x3e')]=_[_0x29d3('0x54')](_0x25b903[_0x29d3('0x3e')]);_0x4ebcb2['filters']=_[_0x29d3('0x3f')](_0x4ebcb2[_0x29d3('0x3b')],_0x4ebcb2['query']);_0x312c2f[_0x29d3('0x41')]=_[_0x29d3('0x3f')](_0x4ebcb2['model'],qs[_0x29d3('0x40')](_0x25b903[_0x29d3('0x3e')][_0x29d3('0x40')]));_0x312c2f[_0x29d3('0x41')]=_0x312c2f[_0x29d3('0x41')][_0x29d3('0x42')]?_0x312c2f['attributes']:_0x4ebcb2['model'];if(_0x25b903['query'][_0x29d3('0x56')]){_0x312c2f['include']=[{'all':!![]}];}_0x312c2f=_[_0x29d3('0x4b')]({},_0x312c2f,_0x25b903[_0x29d3('0x4d')]);return db[_0x29d3('0x37')][_0x29d3('0x57')](_0x312c2f)[_0x29d3('0x20')](handleEntityNotFound(_0x28f56a,null))[_0x29d3('0x20')](respondWithResult(_0x28f56a,null))[_0x29d3('0x51')](handleError(_0x28f56a,null));};exports[_0x29d3('0x58')]=function(_0x137fe7,_0x2c47ae){return db[_0x29d3('0x37')][_0x29d3('0x58')](_0x137fe7[_0x29d3('0x59')],{})[_0x29d3('0x20')](respondWithResult(_0x2c47ae,0xc9))[_0x29d3('0x51')](handleError(_0x2c47ae,null));};exports[_0x29d3('0x34')]=function(_0x56f7cb,_0xdc9439){if(_0x56f7cb[_0x29d3('0x59')]['id']){delete _0x56f7cb[_0x29d3('0x59')]['id'];}return db['ChatMessage'][_0x29d3('0x57')]({'where':{'id':_0x56f7cb['params']['id']}})[_0x29d3('0x20')](handleEntityNotFound(_0xdc9439,null))[_0x29d3('0x20')](saveUpdates(_0x56f7cb[_0x29d3('0x59')],null))['then'](respondWithResult(_0xdc9439,null))['catch'](handleError(_0xdc9439,null));};exports[_0x29d3('0x5a')]=function(_0x34d950,_0x3e7b9f){return db[_0x29d3('0x37')][_0x29d3('0x57')]({'where':{'id':_0x34d950['params']['id']}})[_0x29d3('0x20')](handleEntityNotFound(_0x3e7b9f,null))[_0x29d3('0x20')](removeEntity(_0x3e7b9f,null))['catch'](handleError(_0x3e7b9f,null));};exports[_0x29d3('0x5b')]=function(_0x4a6e8d,_0x26f936){return db[_0x29d3('0x37')][_0x29d3('0x5b')]()[_0x29d3('0x20')](respondWithResult(_0x26f936,null))['catch'](handleError(_0x26f936,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x29d3('0x5c')]=function(_0x5dc377,_0x2f9e43,_0x402e0b){var _0x24c544={'agent':{},'channel':_0x29d3('0x5d')};if(_0x5dc377[_0x29d3('0x59')]['id']){delete _0x5dc377[_0x29d3('0x59')]['id'];}_0x5dc377[_0x29d3('0x59')][_0x29d3('0x5e')]=!![];_0x5dc377['body'][_0x29d3('0x5f')]=moment()['format'](_0x29d3('0x60'));_0x5dc377['body'][_0x29d3('0x61')]=_0x5dc377['body'][_0x29d3('0x61')]||_0x5dc377[_0x29d3('0x62')]['id'];_0x24c544[_0x29d3('0x63')]['id']=_0x5dc377['body'][_0x29d3('0x61')];return db[_0x29d3('0x37')]['find']({'where':{'id':_0x5dc377['params']['id'],'UserId':null}})[_0x29d3('0x20')](handleEntityNotFound(_0x2f9e43,null))[_0x29d3('0x20')](saveUpdates(_0x5dc377[_0x29d3('0x59')],null))[_0x29d3('0x20')](function(_0x2a776c){if(_0x2a776c){_0x24c544[_0x29d3('0x29')]=_0x2a776c[_0x29d3('0x64')]({'plain':!![]});return db[_0x29d3('0x65')][_0x29d3('0x57')]({'where':{'id':_0x2a776c[_0x29d3('0x66')]}});}return null;})[_0x29d3('0x20')](handleEntityNotFound(_0x2f9e43,null))['then'](function(_0x2ffa38){if(_0x2ffa38){return _0x2ffa38[_0x29d3('0x34')]({'UserId':_0x5dc377['body']['UserId'],'read1stAt':_[_0x29d3('0x67')](_0x2ffa38[_0x29d3('0x68')])?moment()[_0x29d3('0x69')](_0x29d3('0x60')):undefined});}return null;})[_0x29d3('0x20')](function(_0x306e68){if(_0x306e68){_0x24c544[_0x29d3('0x6a')]=_0x306e68[_0x29d3('0x64')]({'plain':!![]});interaction_log[_0x29d3('0x21')](_0x29d3('0x6b'),_0x5dc377[_0x29d3('0x62')]['id'],_0x5dc377[_0x29d3('0x62')][_0x29d3('0x3d')],_0x5dc377['user'][_0x29d3('0x6c')],_0x24c544['interaction']['id'],_0x5dc377[_0x29d3('0x59')]?JSON['stringify'](_0x5dc377[_0x29d3('0x59')]):_0x29d3('0x6d'));return respondWithRpcPromise(_0x29d3('0x6e'),'acceptMessage',_0x24c544);}return null;})[_0x29d3('0x20')](function(_0x29dcce){var _0x4bc6e8=_0x29d3('0x6f')+_0x29dcce[_0x29d3('0x29')][_0x29d3('0x70')];return db[_0x29d3('0x71')][_0x29d3('0x3e')](_0x4bc6e8,{'type':db['Sequelize'][_0x29d3('0x72')][_0x29d3('0x73')],'raw':!![]})[_0x29d3('0x20')](function(_0x52c93d){return _0x52c93d;});})['then'](function(_0x227e77){if(_0x227e77){_0x24c544[_0x29d3('0x29')][_0x29d3('0x74')]=_0x227e77[0x0];if(!_0x5dc377[_0x29d3('0x59')][_0x29d3('0x61')])return;return db['User']['find']({'where':{'id':_0x5dc377['body']['UserId'],'role':'agent'},'attributes':['id',_0x29d3('0x3d'),_0x29d3('0x75'),_0x29d3('0x76'),'internal'],'raw':!![]});}return null;})['then'](function(_0xe2734e){if(!_0xe2734e)return null;_0x24c544[_0x29d3('0x29')][_0x29d3('0x63')]=_0xe2734e;return _0x24c544;})[_0x29d3('0x20')](function(_0x2d6899){if(_0x2d6899){if(_0x5dc377[_0x29d3('0x59')][_0x29d3('0x77')]){_0x24c544['message'][_0x29d3('0x78')]=util['format'](_0x29d3('0x79'),_0x5dc377['user'][_0x29d3('0x3d')]);_0x24c544[_0x29d3('0x29')][_0x29d3('0x7a')]=_0x24c544[_0x29d3('0x7a')];_0x24c544['message'][_0x29d3('0x7b')]=_0x24c544[_0x29d3('0x7a')];_0x24c544['message'][_0x29d3('0x7c')]='accept';return respondWithRpcPromise('EventManager',_0x29d3('0x7d'),{'event':_0x29d3('0x7e'),'message':_[_0x29d3('0x4b')](_0x24c544[_0x29d3('0x29')],JSON[_0x29d3('0x7f')](_0x24c544['interaction']['formData']))},client9002)['then'](function(){return _0x24c544;});}return _0x24c544;}return null;})['then'](respondWithResult(_0x2f9e43,null))[_0x29d3('0x51')](handleError(_0x2f9e43,null));};var interaction_log=require(_0x29d3('0x12'))(_0x29d3('0x80'));exports[_0x29d3('0x81')]=function(_0x1a5101,_0x61fbd3,_0x101497){var _0xbc22c7={'agent':{},'channel':_0x29d3('0x5d')};if(_0x1a5101[_0x29d3('0x59')]['id']){delete _0x1a5101[_0x29d3('0x59')]['id'];}_0x1a5101['body'][_0x29d3('0x61')]=_0x1a5101[_0x29d3('0x59')][_0x29d3('0x61')]||_0x1a5101[_0x29d3('0x62')]['id'];_0xbc22c7['agent']['id']=_0x1a5101[_0x29d3('0x59')]['UserId'];return db['ChatMessage']['find']({'where':{'id':_0x1a5101[_0x29d3('0x53')]['id'],'UserId':null}})[_0x29d3('0x20')](handleEntityNotFound(_0x61fbd3,null))[_0x29d3('0x20')](function(_0x13c172){if(_0x13c172){_0xbc22c7[_0x29d3('0x29')]=_0x13c172[_0x29d3('0x64')]({'plain':!![]});return db[_0x29d3('0x65')][_0x29d3('0x57')]({'where':{'id':_0x13c172['ChatInteractionId']}});}return null;})[_0x29d3('0x20')](handleEntityNotFound(_0x61fbd3,null))[_0x29d3('0x20')](function(_0x375d7e){if(_0x375d7e){_0xbc22c7[_0x29d3('0x6a')]=_0x375d7e[_0x29d3('0x64')]({'plain':!![]});interaction_log[_0x29d3('0x21')](_0x29d3('0x82'),_0x1a5101['user']['id'],_0x1a5101[_0x29d3('0x62')]['name'],_0x1a5101['user'][_0x29d3('0x6c')],_0xbc22c7[_0x29d3('0x6a')]['id'],_0x1a5101['body']?JSON[_0x29d3('0x25')](_0x1a5101[_0x29d3('0x59')]):_0x29d3('0x6d'));return respondWithRpcPromise(_0x29d3('0x83'),_0x29d3('0x84'),_0xbc22c7);}return null;})[_0x29d3('0x20')](function(_0x2e49bf){var _0x37fa6d=_0x29d3('0x6f')+_0x2e49bf[_0x29d3('0x29')][_0x29d3('0x70')];return db[_0x29d3('0x71')][_0x29d3('0x3e')](_0x37fa6d,{'type':db['Sequelize'][_0x29d3('0x72')][_0x29d3('0x73')],'raw':!![]})[_0x29d3('0x20')](function(_0x3c4116){return _0x3c4116;});})['then'](function(_0xe3a743){if(_0xe3a743){_0xbc22c7[_0x29d3('0x29')][_0x29d3('0x74')]=_0xe3a743[0x0];if(!_0x1a5101['body'][_0x29d3('0x61')])return;return db[_0x29d3('0x85')][_0x29d3('0x57')]({'where':{'id':_0x1a5101[_0x29d3('0x59')][_0x29d3('0x61')],'role':_0x29d3('0x63')},'attributes':['id','name',_0x29d3('0x75'),_0x29d3('0x76'),_0x29d3('0x86')],'raw':!![]});}return null;})['then'](function(_0x9bead2){if(!_0x9bead2)return null;_0xbc22c7[_0x29d3('0x29')]['agent']=_0x9bead2;return _0xbc22c7;})[_0x29d3('0x20')](function(_0x494dbd){if(_0x494dbd){_0x494dbd[_0x29d3('0x29')][_0x29d3('0x78')]=util[_0x29d3('0x69')](_0x29d3('0x79'),_0x1a5101[_0x29d3('0x62')][_0x29d3('0x3d')]);_0x494dbd[_0x29d3('0x29')][_0x29d3('0x7a')]=_0xbc22c7[_0x29d3('0x7a')];_0x494dbd[_0x29d3('0x29')][_0x29d3('0x7b')]=_0xbc22c7[_0x29d3('0x7a')];_0x494dbd[_0x29d3('0x29')][_0x29d3('0x7c')]='reject';respondWithRpcPromise(_0x29d3('0x7d'),_0x29d3('0x7d'),{'event':'rejectmessage','message':_[_0x29d3('0x4b')](_0xbc22c7[_0x29d3('0x29')],JSON[_0x29d3('0x7f')](_0xbc22c7[_0x29d3('0x6a')][_0x29d3('0x87')]))},client9002);return _0xbc22c7;}return null;})[_0x29d3('0x20')](respondWithResult(_0x61fbd3,null))[_0x29d3('0x51')](handleError(_0x61fbd3,null));};
\ No newline at end of file
index 3334104..0b936fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde4c=['remove','emit','hasOwnProperty','exports','events','ChatMessage','setMaxListeners','save','update'];(function(_0x234869,_0x25ce29){var _0xdc5c37=function(_0x1bb15a){while(--_0x1bb15a){_0x234869['push'](_0x234869['shift']());}};_0xdc5c37(++_0x25ce29);}(_0xde4c,0xee));var _0xcde4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xde4c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xcde4('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0xcde4('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xcde4('0x2')](0x0);var events={'afterCreate':_0xcde4('0x3'),'afterUpdate':_0xcde4('0x4'),'afterDestroy':_0xcde4('0x5')};function emitEvent(_0x4ae2e3){return function(_0x4ce138,_0x25c029,_0x471cc7){ChatMessageEvents['emit'](_0x4ae2e3+':'+_0x4ce138['id'],_0x4ce138);ChatMessageEvents[_0xcde4('0x6')](_0x4ae2e3,_0x4ce138);_0x471cc7(null);};}for(var e in events){if(events[_0xcde4('0x7')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0xcde4('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0xc90a=['exports','events','../../mysqldb','ChatMessage','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x53a5d3,_0x130412){var _0x15b0e=function(_0x249520){while(--_0x249520){_0x53a5d3['push'](_0x53a5d3['shift']());}};_0x15b0e(++_0x130412);}(_0xc90a,0xa1));var _0xac90=function(_0x13939c,_0x28e042){_0x13939c=_0x13939c-0x0;var _0x8eacdf=_0xc90a[_0x13939c];return _0x8eacdf;};'use strict';var EventEmitter=require(_0xac90('0x0'));var ChatMessage=require(_0xac90('0x1'))['db'][_0xac90('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xac90('0x3'),'afterUpdate':_0xac90('0x4'),'afterDestroy':_0xac90('0x5')};function emitEvent(_0x506eff){return function(_0x426ec1,_0x3b3b51,_0x4aaca3){ChatMessageEvents['emit'](_0x506eff+':'+_0x426ec1['id'],_0x426ec1);ChatMessageEvents[_0xac90('0x6')](_0x506eff,_0x426ec1);_0x4aaca3(null);};}for(var e in events){if(events[_0xac90('0x7')](e)){var event=events[e];ChatMessage[_0xac90('0x8')](e,emitEvent(event));}}module[_0xac90('0x9')]=ChatMessageEvents;
\ No newline at end of file
index 80695f2..c4312c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0141=['FULLTEXT','models','get','direction','toLowerCase','isNil','UserId','ChatInteraction','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','api','moment','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','ChatMessage','chat_messages','fti_chat_messages','body'];(function(_0x3c029a,_0x30fbba){var _0x619f33=function(_0x522b50){while(--_0x522b50){_0x3c029a['push'](_0x3c029a['shift']());}};_0x619f33(++_0x30fbba);}(_0x0141,0xbe));var _0x1014=function(_0x4ccc9c,_0x5c7ae3){_0x4ccc9c=_0x4ccc9c-0x0;var _0xbb3d6=_0x0141[_0x4ccc9c];return _0xbb3d6;};'use strict';var _=require('lodash');var util=require(_0x1014('0x0'));var logger=require('../../config/logger')(_0x1014('0x1'));var moment=require(_0x1014('0x2'));var BPromise=require('bluebird');var rp=require(_0x1014('0x3'));var fs=require('fs');var path=require(_0x1014('0x4'));var rimraf=require(_0x1014('0x5'));var config=require(_0x1014('0x6'));var attributes=require(_0x1014('0x7'));module[_0x1014('0x8')]=function(_0x522434,_0x17a985){return _0x522434['define'](_0x1014('0x9'),attributes,{'tableName':_0x1014('0xa'),'paranoid':![],'indexes':[{'name':_0x1014('0xb'),'fields':[_0x1014('0xc')],'type':_0x1014('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x15c81a,_0x3203a1,_0x496fb4){var _0x1d1806=_0x522434[_0x1014('0xe')];var _0x40f916=_0x15c81a[_0x1014('0xf')]({'plain':!![]});if(_0x40f916[_0x1014('0x10')][_0x1014('0x11')]()==='in'||_0x40f916[_0x1014('0x10')][_0x1014('0x11')]()==='out'&&!_0x40f916['secret']&&!_[_0x1014('0x12')](_0x40f916[_0x1014('0x13')])){_0x1d1806[_0x1014('0x14')]['findOne']({'where':{'id':_0x40f916[_0x1014('0x15')]}})[_0x1014('0x16')](function(_0x23181d){if(_0x23181d){_0x23181d[_0x1014('0x17')]({'lastMsgAt':_0x40f916[_0x1014('0x18')],'lastMsgDirection':_0x40f916[_0x1014('0x10')][_0x1014('0x11')]()});}})[_0x1014('0x19')](function(_0x16032e){console[_0x1014('0x1a')](_0x16032e);});}_0x496fb4();}},'charset':_0x1014('0x1b'),'collate':_0x1014('0x1c')});};
\ No newline at end of file
+var _0x5fdd=['catch','error','utf8mb4_unicode_ci','../../config/logger','api','bluebird','request-promise','path','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','models','get','direction','toLowerCase','out','secret','ChatInteraction','findOne','ChatInteractionId','update','createdAt'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x5fdd,0x16f));var _0xd5fd=function(_0x152678,_0x11e0ac){_0x152678=_0x152678-0x0;var _0x311a9=_0x5fdd[_0x152678];return _0x311a9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd5fd('0x0'))(_0xd5fd('0x1'));var moment=require('moment');var BPromise=require(_0xd5fd('0x2'));var rp=require(_0xd5fd('0x3'));var fs=require('fs');var path=require(_0xd5fd('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd5fd('0x5'));module[_0xd5fd('0x6')]=function(_0x280387,_0x58e392){return _0x280387[_0xd5fd('0x7')](_0xd5fd('0x8'),attributes,{'tableName':_0xd5fd('0x9'),'paranoid':![],'indexes':[{'name':_0xd5fd('0xa'),'fields':[_0xd5fd('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5fcdd2,_0x559dae,_0x59b39f){var _0x5b9d2e=_0x280387[_0xd5fd('0xc')];var _0x3818ed=_0x5fcdd2[_0xd5fd('0xd')]({'plain':!![]});if(_0x3818ed[_0xd5fd('0xe')][_0xd5fd('0xf')]()==='in'||_0x3818ed[_0xd5fd('0xe')][_0xd5fd('0xf')]()===_0xd5fd('0x10')&&!_0x3818ed[_0xd5fd('0x11')]&&!_['isNil'](_0x3818ed['UserId'])){_0x5b9d2e[_0xd5fd('0x12')][_0xd5fd('0x13')]({'where':{'id':_0x3818ed[_0xd5fd('0x14')]}})['then'](function(_0x21ba93){if(_0x21ba93){_0x21ba93[_0xd5fd('0x15')]({'lastMsgAt':_0x3818ed[_0xd5fd('0x16')],'lastMsgDirection':_0x3818ed['direction'][_0xd5fd('0xf')]()});}})[_0xd5fd('0x17')](function(_0x55cdea){console[_0xd5fd('0x18')](_0x55cdea);});}_0x59b39f();}},'charset':'utf8mb4','collate':_0xd5fd('0x19')});};
\ No newline at end of file
index 4aae0ff..0b6eac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd07b=['randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','register','request','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateChatMessage','ChatMessage','create','body','options','raw','then','debug','lodash','util','moment','bluebird'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0xd07b,0xfc));var _0xbd07=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xd07b[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xbd07('0x0'));var util=require(_0xbd07('0x1'));var moment=require(_0xbd07('0x2'));var BPromise=require(_0xbd07('0x3'));var rs=require(_0xbd07('0x4'));var fs=require('fs');var Redis=require(_0xbd07('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xbd07('0x6'));var logger=require('../../config/logger')(_0xbd07('0x7'));var config=require(_0xbd07('0x8'));var jayson=require(_0xbd07('0x9'));var client=jayson[_0xbd07('0xa')][_0xbd07('0xb')]({'port':0x232a});config[_0xbd07('0xc')]=_[_0xbd07('0xd')](config[_0xbd07('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbd07('0xc')]));require('./chatMessage.socket')[_0xbd07('0xe')](socket);function respondWithRpcPromise(_0x572247,_0x2e5a49,_0x4f7d5a){return new BPromise(function(_0x4ce7d1,_0x3f685e){return client[_0xbd07('0xf')](_0x572247,_0x4f7d5a)['then'](function(_0xc4b876){logger['info'](_0xbd07('0x10'),_0x2e5a49,'request\x20sent');logger['debug'](_0xbd07('0x11'),_0x2e5a49,_0xbd07('0x12'),JSON[_0xbd07('0x13')](_0xc4b876));if(_0xc4b876[_0xbd07('0x14')]){if(_0xc4b876[_0xbd07('0x14')][_0xbd07('0x15')]===0x1f4){logger[_0xbd07('0x14')](_0xbd07('0x10'),_0x2e5a49,_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);return _0x3f685e(_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);}logger[_0xbd07('0x14')](_0xbd07('0x10'),_0x2e5a49,_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);return _0x4ce7d1(_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);}else{logger['info'](_0xbd07('0x10'),_0x2e5a49,'request\x20sent');_0x4ce7d1(_0xc4b876['result'][_0xbd07('0x16')]);}})[_0xbd07('0x17')](function(_0x44d4b6){logger[_0xbd07('0x14')](_0xbd07('0x10'),_0x2e5a49,_0x44d4b6);_0x3f685e(_0x44d4b6);});});}exports[_0xbd07('0x18')]=function(_0x184d24){var _0x5cb154=this;return new Promise(function(_0x39e7fc,_0x2a759e){return db[_0xbd07('0x19')][_0xbd07('0x1a')](_0x184d24[_0xbd07('0x1b')],{'raw':_0x184d24[_0xbd07('0x1c')]?_0x184d24['options'][_0xbd07('0x1d')]===undefined?!![]:![]:!![]})[_0xbd07('0x1e')](function(_0x236673){logger['info'](_0xbd07('0x18'),_0x184d24);logger[_0xbd07('0x1f')](_0xbd07('0x18'),_0x184d24,JSON[_0xbd07('0x13')](_0x236673));_0x39e7fc(_0x236673);})['catch'](function(_0x58f9bc){logger[_0xbd07('0x14')]('CreateChatMessage',_0x58f9bc[_0xbd07('0x16')],_0x184d24);_0x2a759e(_0x5cb154[_0xbd07('0x14')](0x1f4,_0x58f9bc[_0xbd07('0x16')]));});});};
\ No newline at end of file
+var _0xd631=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateChatMessage','ChatMessage','body','raw','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x1c89c4,_0x5b8b57){var _0x4a4717=function(_0x2421a2){while(--_0x2421a2){_0x1c89c4['push'](_0x1c89c4['shift']());}};_0x4a4717(++_0x5b8b57);}(_0xd631,0xbb));var _0x1d63=function(_0x53abe5,_0x33a9e5){_0x53abe5=_0x53abe5-0x0;var _0xc1c37e=_0xd631[_0x53abe5];return _0xc1c37e;};'use strict';var _=require(_0x1d63('0x0'));var util=require(_0x1d63('0x1'));var moment=require(_0x1d63('0x2'));var BPromise=require(_0x1d63('0x3'));var rs=require(_0x1d63('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1d63('0x5'))(_0x1d63('0x6'));var config=require(_0x1d63('0x7'));var jayson=require(_0x1d63('0x8'));var client=jayson[_0x1d63('0x9')][_0x1d63('0xa')]({'port':0x232a});config['redis']=_[_0x1d63('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1d63('0xc'))(new Redis(config['redis']));require(_0x1d63('0xd'))[_0x1d63('0xe')](socket);function respondWithRpcPromise(_0x51ac4d,_0x37e4ca,_0x12226f){return new BPromise(function(_0x41cb68,_0x10915e){return client[_0x1d63('0xf')](_0x51ac4d,_0x12226f)[_0x1d63('0x10')](function(_0xc2ac16){logger[_0x1d63('0x11')](_0x1d63('0x12'),_0x37e4ca,'request\x20sent');logger[_0x1d63('0x13')](_0x1d63('0x14'),_0x37e4ca,_0x1d63('0x15'),JSON[_0x1d63('0x16')](_0xc2ac16));if(_0xc2ac16[_0x1d63('0x17')]){if(_0xc2ac16['error'][_0x1d63('0x18')]===0x1f4){logger[_0x1d63('0x17')](_0x1d63('0x12'),_0x37e4ca,_0xc2ac16['error']['message']);return _0x10915e(_0xc2ac16[_0x1d63('0x17')][_0x1d63('0x19')]);}logger['error'](_0x1d63('0x12'),_0x37e4ca,_0xc2ac16[_0x1d63('0x17')][_0x1d63('0x19')]);return _0x41cb68(_0xc2ac16['error']['message']);}else{logger[_0x1d63('0x11')]('ChatMessage,\x20%s,\x20%s',_0x37e4ca,'request\x20sent');_0x41cb68(_0xc2ac16[_0x1d63('0x1a')]['message']);}})['catch'](function(_0x57287f){logger[_0x1d63('0x17')](_0x1d63('0x12'),_0x37e4ca,_0x57287f);_0x10915e(_0x57287f);});});}exports[_0x1d63('0x1b')]=function(_0x5954d2){var _0x2594c3=this;return new Promise(function(_0x413256,_0x322a2b){return db[_0x1d63('0x1c')]['create'](_0x5954d2[_0x1d63('0x1d')],{'raw':_0x5954d2['options']?_0x5954d2['options'][_0x1d63('0x1e')]===undefined?!![]:![]:!![]})[_0x1d63('0x10')](function(_0x4a374d){logger[_0x1d63('0x11')](_0x1d63('0x1b'),_0x5954d2);logger[_0x1d63('0x13')](_0x1d63('0x1b'),_0x5954d2,JSON[_0x1d63('0x16')](_0x4a374d));_0x413256(_0x4a374d);})[_0x1d63('0x1f')](function(_0x45371a){logger[_0x1d63('0x17')](_0x1d63('0x1b'),_0x45371a['message'],_0x5954d2);_0x322a2b(_0x2594c3[_0x1d63('0x17')](0x1f4,_0x45371a[_0x1d63('0x19')]));});});};
\ No newline at end of file
index 66d883f..b5668fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432b=['remove','update','removeListener','length','chatMessage:','./chatMessage.events'];(function(_0x146ca3,_0x29a10e){var _0x30dd24=function(_0x4b4f36){while(--_0x4b4f36){_0x146ca3['push'](_0x146ca3['shift']());}};_0x30dd24(++_0x29a10e);}(_0x432b,0x161));var _0xb432=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x432b[_0x3dd15e];return _0x231fd0;};'use strict';var ChatMessageEvents=require(_0xb432('0x0'));var events=['save',_0xb432('0x1'),_0xb432('0x2')];function createListener(_0x7170b6,_0xee80f1){return function(_0x5173f6){_0xee80f1['emit'](_0x7170b6,_0x5173f6);};}function removeListener(_0x93e722,_0x4cefc4){return function(){ChatMessageEvents[_0xb432('0x3')](_0x93e722,_0x4cefc4);};}exports['register']=function(_0x143093){for(var _0x3f1a78=0x0,_0x274447=events[_0xb432('0x4')];_0x3f1a78<_0x274447;_0x3f1a78++){var _0x14fed4=events[_0x3f1a78];var _0x6833df=createListener(_0xb432('0x5')+_0x14fed4,_0x143093);ChatMessageEvents['on'](_0x14fed4,_0x6833df);}};
\ No newline at end of file
+var _0xe9e7=['remove','emit','removeListener','chatMessage:','./chatMessage.events','save'];(function(_0x3b8025,_0x35323d){var _0x19a2ed=function(_0x561930){while(--_0x561930){_0x3b8025['push'](_0x3b8025['shift']());}};_0x19a2ed(++_0x35323d);}(_0xe9e7,0x1f0));var _0x7e9e=function(_0x5a1484,_0x7d60f7){_0x5a1484=_0x5a1484-0x0;var _0x357688=_0xe9e7[_0x5a1484];return _0x357688;};'use strict';var ChatMessageEvents=require(_0x7e9e('0x0'));var events=[_0x7e9e('0x1'),_0x7e9e('0x2'),'update'];function createListener(_0x1fd5fc,_0x99030){return function(_0x108c11){_0x99030[_0x7e9e('0x3')](_0x1fd5fc,_0x108c11);};}function removeListener(_0x410b21,_0x18bf13){return function(){ChatMessageEvents[_0x7e9e('0x4')](_0x410b21,_0x18bf13);};}exports['register']=function(_0x319f70){for(var _0x134fac=0x0,_0xba25=events['length'];_0x134fac<_0xba25;_0x134fac++){var _0x366350=events[_0x134fac];var _0x4d9f9a=createListener(_0x7e9e('0x5')+_0x366350,_0x319f70);ChatMessageEvents['on'](_0x366350,_0x4d9f9a);}};
\ No newline at end of file
index 742a108..a8a2600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad18=['multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','tracked','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy'];(function(_0x24f9d9,_0x6b4d81){var _0x392b6c=function(_0x4e685b){while(--_0x4e685b){_0x24f9d9['push'](_0x24f9d9['shift']());}};_0x392b6c(++_0x6b4d81);}(_0xad18,0x1e6));var _0x8ad1=function(_0x4ba17b,_0x55f724){_0x4ba17b=_0x4ba17b-0x0;var _0x1f0669=_0xad18[_0x4ba17b];return _0x1f0669;};'use strict';var multer=require(_0x8ad1('0x0'));var util=require(_0x8ad1('0x1'));var path=require('path');var timeout=require(_0x8ad1('0x2'));var express=require(_0x8ad1('0x3'));var router=express[_0x8ad1('0x4')]();var fs_extra=require(_0x8ad1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8ad1('0x6'));var config=require(_0x8ad1('0x7'));var controller=require(_0x8ad1('0x8'));router[_0x8ad1('0x9')]('/',auth['isAuthenticated'](),controller[_0x8ad1('0xa')]);router[_0x8ad1('0x9')](_0x8ad1('0xb'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0xd')]);router[_0x8ad1('0x9')](_0x8ad1('0xe'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0xf')]);router[_0x8ad1('0x10')]('/',auth['isAuthenticated'](),interaction[_0x8ad1('0x11')]('chat','chatmessage:create'),controller[_0x8ad1('0x12')]);router[_0x8ad1('0x13')](_0x8ad1('0xe'),controller[_0x8ad1('0x14')]);router[_0x8ad1('0x13')](_0x8ad1('0x15'),auth['isAuthenticated'](),controller[_0x8ad1('0x16')]);router[_0x8ad1('0x13')](_0x8ad1('0x17'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0x18')]);router[_0x8ad1('0x19')](_0x8ad1('0xe'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x67fc=['put','/:id/accept','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','chat'];(function(_0x44ca6e,_0x5e2c91){var _0x2edab2=function(_0x3afa91){while(--_0x3afa91){_0x44ca6e['push'](_0x44ca6e['shift']());}};_0x2edab2(++_0x5e2c91);}(_0x67fc,0xfa));var _0xc67f=function(_0x58f363,_0x135c64){_0x58f363=_0x58f363-0x0;var _0xcb2c83=_0x67fc[_0x58f363];return _0xcb2c83;};'use strict';var multer=require(_0xc67f('0x0'));var util=require(_0xc67f('0x1'));var path=require(_0xc67f('0x2'));var timeout=require(_0xc67f('0x3'));var express=require(_0xc67f('0x4'));var router=express[_0xc67f('0x5')]();var fs_extra=require(_0xc67f('0x6'));var auth=require(_0xc67f('0x7'));var interaction=require(_0xc67f('0x8'));var config=require(_0xc67f('0x9'));var controller=require(_0xc67f('0xa'));router['get']('/',auth[_0xc67f('0xb')](),controller[_0xc67f('0xc')]);router[_0xc67f('0xd')](_0xc67f('0xe'),auth['isAuthenticated'](),controller[_0xc67f('0xf')]);router['get'](_0xc67f('0x10'),auth[_0xc67f('0xb')](),controller[_0xc67f('0x11')]);router[_0xc67f('0x12')]('/',auth['isAuthenticated'](),interaction['tracked'](_0xc67f('0x13'),'chatmessage:create'),controller['create']);router['put'](_0xc67f('0x10'),controller['update']);router[_0xc67f('0x14')](_0xc67f('0x15'),auth[_0xc67f('0xb')](),controller[_0xc67f('0x16')]);router[_0xc67f('0x14')]('/:id/reject',auth[_0xc67f('0xb')](),controller[_0xc67f('0x17')]);router[_0xc67f('0x18')](_0xc67f('0x10'),auth[_0xc67f('0xb')](),controller[_0xc67f('0x19')]);module[_0xc67f('0x1a')]=router;
\ No newline at end of file
index a77a23f..dd06adb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['medium','TEXT','exports'];(function(_0x47f993,_0x4ff051){var _0x307475=function(_0x29513d){while(--_0x29513d){_0x47f993['push'](_0x47f993['shift']());}};_0x307475(++_0x4ff051);}(_0xadb5,0xad));var _0x5adb=function(_0x3ade09,_0x1460cb){_0x3ade09=_0x3ade09-0x0;var _0x13c81e=_0xadb5[_0x3ade09];return _0x13c81e;};'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
+var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0x30f91e,_0x387ab6){var _0x43f79c=function(_0x4fc4cd){while(--_0x4fc4cd){_0x30f91e['push'](_0x30f91e['shift']());}};_0x43f79c(++_0x387ab6);}(_0xdb28,0x106));var _0x8db2=function(_0x14a158,_0x377200){_0x14a158=_0x14a158-0x0;var _0x16695c=_0xdb28[_0x14a158];return _0x16695c;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'body':{'type':Sequelize[_0x8db2('0x2')](_0x8db2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8db2('0x3')),'allowNull':![]}};
\ No newline at end of file
index 1f961bf..2941d03 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(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x7a54,0x106));var _0x47a5=function(_0x1c0082,_0x8be926){_0x1c0082=_0x1c0082-0x0;var _0x291ec2=_0x7a54[_0x1c0082];return _0x291ec2;};'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(_0x220dbb,_0x99328d){var _0x2b77de=function(_0x15e966){while(--_0x15e966){_0x220dbb['push'](_0x220dbb['shift']());}};_0x2b77de(++_0x99328d);}(_0x7a54,0x106));var _0x47a5=function(_0x3e403d,_0x1ef137){_0x3e403d=_0x3e403d-0x0;var _0xe63698=_0x7a54[_0x3e403d];return _0xe63698;};'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 4ffdcf8..b6990c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb606=['emit','hook','exports','../../mysqldb','ChatOfflineMessage','save','update','remove'];(function(_0x397014,_0x17cc12){var _0x1163f7=function(_0x290ac1){while(--_0x290ac1){_0x397014['push'](_0x397014['shift']());}};_0x1163f7(++_0x17cc12);}(_0xb606,0xfb));var _0x6b60=function(_0x5f25b3,_0x35481a){_0x5f25b3=_0x5f25b3-0x0;var _0x4ab9bf=_0xb606[_0x5f25b3];return _0x4ab9bf;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x6b60('0x0'))['db'][_0x6b60('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6b60('0x2'),'afterUpdate':_0x6b60('0x3'),'afterDestroy':_0x6b60('0x4')};function emitEvent(_0x6bbf34){return function(_0x52594c,_0x22ac35,_0x2daf5e){ChatOfflineMessageEvents[_0x6b60('0x5')](_0x6bbf34+':'+_0x52594c['id'],_0x52594c);ChatOfflineMessageEvents['emit'](_0x6bbf34,_0x52594c);_0x2daf5e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x6b60('0x6')](e,emitEvent(event));}}module[_0x6b60('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x23f4=['remove','emit','hook','exports','../../mysqldb','save','update'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x23f4,0x1ee));var _0x423f=function(_0x3222d5,_0xdcca67){_0x3222d5=_0x3222d5-0x0;var _0x26386b=_0x23f4[_0x3222d5];return _0x26386b;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x423f('0x0'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x423f('0x1'),'afterUpdate':_0x423f('0x2'),'afterDestroy':_0x423f('0x3')};function emitEvent(_0x3503a0){return function(_0x1ab106,_0x129dba,_0x34bf9e){ChatOfflineMessageEvents[_0x423f('0x4')](_0x3503a0+':'+_0x1ab106['id'],_0x1ab106);ChatOfflineMessageEvents[_0x423f('0x4')](_0x3503a0,_0x1ab106);_0x34bf9e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x423f('0x5')](e,emitEvent(event));}}module[_0x423f('0x6')]=ChatOfflineMessageEvents;
\ No newline at end of file
index fac776e..824b261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a41=['utf8mb4_unicode_ci','define','ChatOfflineMessage','utf8mb4'];(function(_0x53fad9,_0xa46b4){var _0x1d6db5=function(_0x575d73){while(--_0x575d73){_0x53fad9['push'](_0x53fad9['shift']());}};_0x1d6db5(++_0xa46b4);}(_0x8a41,0x15d));var _0x18a4=function(_0x27c156,_0x14ce9b){_0x27c156=_0x27c156-0x0;var _0x4a94af=_0x8a41[_0x27c156];return _0x4a94af;};'use strict';var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0x21472f){return _0x21472f[_0x18a4('0x0')](_0x18a4('0x1'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x18a4('0x2'),'collate':_0x18a4('0x3')});};
\ No newline at end of file
+var _0x8f02=['ChatOfflineMessage','chat_offline_messages','utf8mb4','./chatOfflineMessage.attributes','define'];(function(_0x311909,_0x414bf7){var _0x8d3163=function(_0x226f55){while(--_0x226f55){_0x311909['push'](_0x311909['shift']());}};_0x8d3163(++_0x414bf7);}(_0x8f02,0x161));var _0x28f0=function(_0x2b6fb9,_0xc8b11){_0x2b6fb9=_0x2b6fb9-0x0;var _0x53b067=_0x8f02[_0x2b6fb9];return _0x53b067;};'use strict';var attributes=require(_0x28f0('0x0'));module['exports']=function(_0x44f081){return _0x44f081[_0x28f0('0x1')](_0x28f0('0x2'),attributes,{'tableName':_0x28f0('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x28f0('0x4'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8823adf..d79efff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70ff=['http','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5570ba,_0x59da83){var _0x415507=function(_0x1b920f){while(--_0x1b920f){_0x5570ba['push'](_0x5570ba['shift']());}};_0x415507(++_0x59da83);}(_0x70ff,0x1ce));var _0xf70f=function(_0x3c989b,_0x53999a){_0x3c989b=_0x3c989b-0x0;var _0x1c68d2=_0x70ff[_0x3c989b];return _0x1c68d2;};'use strict';var _=require(_0xf70f('0x0'));var util=require(_0xf70f('0x1'));var moment=require(_0xf70f('0x2'));var BPromise=require(_0xf70f('0x3'));var rs=require(_0xf70f('0x4'));var fs=require('fs');var Redis=require(_0xf70f('0x5'));var db=require(_0xf70f('0x6'))['db'];var utils=require(_0xf70f('0x7'));var logger=require(_0xf70f('0x8'))(_0xf70f('0x9'));var config=require(_0xf70f('0xa'));var jayson=require(_0xf70f('0xb'));var client=jayson[_0xf70f('0xc')][_0xf70f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x30db8a,_0x442b2d,_0x4d3634){return new BPromise(function(_0x5d4a24,_0xbd6e2c){return client[_0xf70f('0xe')](_0x30db8a,_0x4d3634)[_0xf70f('0xf')](function(_0x222744){logger['info'](_0xf70f('0x10'),_0x442b2d,_0xf70f('0x11'));logger[_0xf70f('0x12')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x442b2d,'request\x20sent',JSON[_0xf70f('0x13')](_0x222744));if(_0x222744[_0xf70f('0x14')]){if(_0x222744['error']['code']===0x1f4){logger['error'](_0xf70f('0x10'),_0x442b2d,_0x222744['error']['message']);return _0xbd6e2c(_0x222744[_0xf70f('0x14')][_0xf70f('0x15')]);}logger[_0xf70f('0x14')](_0xf70f('0x10'),_0x442b2d,_0x222744[_0xf70f('0x14')]['message']);return _0x5d4a24(_0x222744[_0xf70f('0x14')][_0xf70f('0x15')]);}else{logger[_0xf70f('0x16')](_0xf70f('0x10'),_0x442b2d,'request\x20sent');_0x5d4a24(_0x222744[_0xf70f('0x17')][_0xf70f('0x15')]);}})[_0xf70f('0x18')](function(_0x59fd5c){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x442b2d,_0x59fd5c);_0xbd6e2c(_0x59fd5c);});});}
\ No newline at end of file
+var _0xcd63=['catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','code','error','ChatOfflineMessage,\x20%s,\x20%s','message'];(function(_0x1e9ae1,_0x10dc5d){var _0xc6bc15=function(_0x1a6a7d){while(--_0x1a6a7d){_0x1e9ae1['push'](_0x1e9ae1['shift']());}};_0xc6bc15(++_0x10dc5d);}(_0xcd63,0xfe));var _0x3cd6=function(_0x57427b,_0x2b8c9e){_0x57427b=_0x57427b-0x0;var _0x2b1e2d=_0xcd63[_0x57427b];return _0x2b1e2d;};'use strict';var _=require(_0x3cd6('0x0'));var util=require(_0x3cd6('0x1'));var moment=require(_0x3cd6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3cd6('0x3'));var db=require(_0x3cd6('0x4'))['db'];var utils=require(_0x3cd6('0x5'));var logger=require(_0x3cd6('0x6'))(_0x3cd6('0x7'));var config=require(_0x3cd6('0x8'));var jayson=require(_0x3cd6('0x9'));var client=jayson[_0x3cd6('0xa')][_0x3cd6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe9557a,_0x57b7ec,_0xa1ba80){return new BPromise(function(_0x3e2d30,_0xa718da){return client[_0x3cd6('0xc')](_0xe9557a,_0xa1ba80)[_0x3cd6('0xd')](function(_0x31df6f){logger[_0x3cd6('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57b7ec,_0x3cd6('0xf'));logger[_0x3cd6('0x10')](_0x3cd6('0x11'),_0x57b7ec,'request\x20sent',JSON['stringify'](_0x31df6f));if(_0x31df6f['error']){if(_0x31df6f['error'][_0x3cd6('0x12')]===0x1f4){logger[_0x3cd6('0x13')](_0x3cd6('0x14'),_0x57b7ec,_0x31df6f[_0x3cd6('0x13')][_0x3cd6('0x15')]);return _0xa718da(_0x31df6f[_0x3cd6('0x13')][_0x3cd6('0x15')]);}logger['error'](_0x3cd6('0x14'),_0x57b7ec,_0x31df6f['error'][_0x3cd6('0x15')]);return _0x3e2d30(_0x31df6f['error']['message']);}else{logger[_0x3cd6('0xe')](_0x3cd6('0x14'),_0x57b7ec,'request\x20sent');_0x3e2d30(_0x31df6f['result'][_0x3cd6('0x15')]);}})[_0x3cd6('0x16')](function(_0x474701){logger['error'](_0x3cd6('0x14'),_0x57b7ec,_0x474701);_0xa718da(_0x474701);});});}
\ No newline at end of file
index 876a374..ac94918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d8e=['path','connect-timeout','Router','fs-extra','../../components/interaction/service','isAuthenticated','get','/describe','/:id','show','post','create','put','update','destroy','exports','multer','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6d8e,0x154));var _0xe6d8=function(_0x2881d9,_0x128a32){_0x2881d9=_0x2881d9-0x0;var _0x50e78b=_0x6d8e[_0x2881d9];return _0x50e78b;};'use strict';var multer=require(_0xe6d8('0x0'));var util=require(_0xe6d8('0x1'));var path=require(_0xe6d8('0x2'));var timeout=require(_0xe6d8('0x3'));var express=require('express');var router=express[_0xe6d8('0x4')]();var fs_extra=require(_0xe6d8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe6d8('0x6'));var config=require('../../config/environment');var controller=require('./chatOfflineMessage.controller');router['get']('/',auth[_0xe6d8('0x7')](),controller['index']);router[_0xe6d8('0x8')](_0xe6d8('0x9'),auth[_0xe6d8('0x7')](),controller['describe']);router[_0xe6d8('0x8')](_0xe6d8('0xa'),auth[_0xe6d8('0x7')](),controller[_0xe6d8('0xb')]);router[_0xe6d8('0xc')]('/',auth[_0xe6d8('0x7')](),controller[_0xe6d8('0xd')]);router[_0xe6d8('0xe')](_0xe6d8('0xa'),auth[_0xe6d8('0x7')](),controller[_0xe6d8('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe6d8('0x10')]);module[_0xe6d8('0x11')]=router;
\ No newline at end of file
+var _0xb232=['describe','/:id','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatOfflineMessage.controller','isAuthenticated','index','get','/describe'];(function(_0x349e12,_0x1aee4c){var _0x477fdf=function(_0x4ce477){while(--_0x4ce477){_0x349e12['push'](_0x349e12['shift']());}};_0x477fdf(++_0x1aee4c);}(_0xb232,0xdb));var _0x2b23=function(_0x34bb68,_0x5b0079){_0x34bb68=_0x34bb68-0x0;var _0x3db9fb=_0xb232[_0x34bb68];return _0x3db9fb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2b23('0x0'));var timeout=require(_0x2b23('0x1'));var express=require(_0x2b23('0x2'));var router=express[_0x2b23('0x3')]();var fs_extra=require(_0x2b23('0x4'));var auth=require(_0x2b23('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2b23('0x6'));var controller=require(_0x2b23('0x7'));router['get']('/',auth[_0x2b23('0x8')](),controller[_0x2b23('0x9')]);router[_0x2b23('0xa')](_0x2b23('0xb'),auth[_0x2b23('0x8')](),controller[_0x2b23('0xc')]);router[_0x2b23('0xa')](_0x2b23('0xd'),auth[_0x2b23('0x8')](),controller['show']);router[_0x2b23('0xe')]('/',auth[_0x2b23('0x8')](),controller[_0x2b23('0xf')]);router[_0x2b23('0x10')](_0x2b23('0xd'),auth[_0x2b23('0x8')](),controller[_0x2b23('0x11')]);router[_0x2b23('0x12')]('/:id',auth[_0x2b23('0x8')](),controller[_0x2b23('0x13')]);module[_0x2b23('0x14')]=router;
\ No newline at end of file
index ba04652..3fec80f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3fa=['STRING','ENUM','timeout','mouseOver','INTEGER','exports'];(function(_0x2f8aeb,_0x1f53af){var _0x234dd7=function(_0x1dd7ae){while(--_0x1dd7ae){_0x2f8aeb['push'](_0x2f8aeb['shift']());}};_0x234dd7(++_0x1f53af);}(_0xd3fa,0xd7));var _0xad3f=function(_0x3fd719,_0xcf1547){_0x3fd719=_0x3fd719-0x0;var _0x4e02a3=_0xd3fa[_0x3fd719];return _0x4e02a3;};'use strict';var Sequelize=require('sequelize');module[_0xad3f('0x0')]={'name':{'type':Sequelize[_0xad3f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xad3f('0x2')]('mouseOver',_0xad3f('0x3')),'defaultValue':_0xad3f('0x4')},'selector':{'type':Sequelize[_0xad3f('0x1')]},'timeout':{'type':Sequelize[_0xad3f('0x5')]}};
\ No newline at end of file
+var _0x0e10=['ENUM','mouseOver','timeout','sequelize','exports','STRING'];(function(_0x1d5a18,_0x585dc8){var _0x411450=function(_0x3f4ad8){while(--_0x3f4ad8){_0x1d5a18['push'](_0x1d5a18['shift']());}};_0x411450(++_0x585dc8);}(_0x0e10,0x1b9));var _0x00e1=function(_0x13d01b,_0x4741d5){_0x13d01b=_0x13d01b-0x0;var _0x330936=_0x0e10[_0x13d01b];return _0x330936;};'use strict';var Sequelize=require(_0x00e1('0x0'));module[_0x00e1('0x1')]={'name':{'type':Sequelize[_0x00e1('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x00e1('0x3')](_0x00e1('0x4'),_0x00e1('0x5')),'defaultValue':_0x00e1('0x4')},'selector':{'type':Sequelize[_0x00e1('0x2')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index d65e20d..2f2badf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc43c=['status','end','json','undefined','limit','offset','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','params','model','keys','ChatProactiveAction','query','filters','intersection','attributes','fields','length','include','merge','options','catch','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xc43c,0x152));var _0xcc43=function(_0x3081ff,_0x31a160){_0x3081ff=_0x3081ff-0x0;var _0x1a729f=_0xc43c[_0x3081ff];return _0x1a729f;};'use strict';var emlformat=require(_0xcc43('0x0'));var rimraf=require(_0xcc43('0x1'));var zipdir=require(_0xcc43('0x2'));var jsonpatch=require(_0xcc43('0x3'));var rp=require(_0xcc43('0x4'));var moment=require(_0xcc43('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xcc43('0x6'));var util=require(_0xcc43('0x7'));var path=require('path');var sox=require(_0xcc43('0x8'));var csv=require(_0xcc43('0x9'));var ejs=require(_0xcc43('0xa'));var fs=require('fs');var fs_extra=require(_0xcc43('0xb'));var _=require(_0xcc43('0xc'));var squel=require(_0xcc43('0xd'));var crypto=require(_0xcc43('0xe'));var jsforce=require(_0xcc43('0xf'));var deskjs=require(_0xcc43('0x10'));var toCsv=require(_0xcc43('0x9'));var querystring=require('querystring');var Papa=require(_0xcc43('0x11'));var Redis=require(_0xcc43('0x12'));var authService=require(_0xcc43('0x13'));var qs=require(_0xcc43('0x14'));var as=require(_0xcc43('0x15'));var hardwareService=require(_0xcc43('0x16'));var logger=require('../../config/logger')(_0xcc43('0x17'));var utils=require(_0xcc43('0x18'));var config=require(_0xcc43('0x19'));var licenseUtil=require(_0xcc43('0x1a'));var db=require(_0xcc43('0x1b'))['db'];function respondWithStatusCode(_0x2e2292,_0x4967cb){_0x4967cb=_0x4967cb||0xcc;return function(_0x3587b8){if(_0x3587b8){return _0x2e2292['sendStatus'](_0x4967cb);}return _0x2e2292[_0xcc43('0x1c')](_0x4967cb)[_0xcc43('0x1d')]();};}function respondWithResult(_0x5289af,_0x4ac110){_0x4ac110=_0x4ac110||0xc8;return function(_0xe312ba){if(_0xe312ba){return _0x5289af[_0xcc43('0x1c')](_0x4ac110)[_0xcc43('0x1e')](_0xe312ba);}};}function respondWithFilteredResult(_0x3b9eff,_0x34326c){return function(_0x345333){if(_0x345333){var _0x4c34a7=typeof _0x34326c['offset']===_0xcc43('0x1f')&&typeof _0x34326c[_0xcc43('0x20')]===_0xcc43('0x1f');var _0x2e053d=_0x345333['count'];var _0x33fe3a=_0x4c34a7?0x0:_0x34326c[_0xcc43('0x21')];var _0x266af8=_0x4c34a7?_0x345333['count']:_0x34326c['offset']+_0x34326c[_0xcc43('0x20')];var _0x18a1ae;if(_0x266af8>=_0x2e053d){_0x266af8=_0x2e053d;_0x18a1ae=0xc8;}else{_0x18a1ae=0xce;}_0x3b9eff['status'](_0x18a1ae);return _0x3b9eff['set'](_0xcc43('0x22'),_0x33fe3a+'-'+_0x266af8+'/'+_0x2e053d)[_0xcc43('0x1e')](_0x345333);}return null;};}function patchUpdates(_0x2418d3){return function(_0x3a1005){try{jsonpatch[_0xcc43('0x23')](_0x3a1005,_0x2418d3,!![]);}catch(_0x3ae999){return BPromise[_0xcc43('0x24')](_0x3ae999);}return _0x3a1005[_0xcc43('0x25')]();};}function saveUpdates(_0x216bdb,_0x188edd){return function(_0x4f72a2){if(_0x4f72a2){return _0x4f72a2[_0xcc43('0x26')](_0x216bdb)[_0xcc43('0x27')](function(_0x2e26b3){return _0x2e26b3;});}return null;};}function removeEntity(_0x40137c,_0x410d18){return function(_0x52c22e){if(_0x52c22e){return _0x52c22e[_0xcc43('0x28')]()[_0xcc43('0x27')](function(){_0x40137c[_0xcc43('0x1c')](0xcc)[_0xcc43('0x1d')]();});}};}function handleEntityNotFound(_0x440efa,_0x52137f){return function(_0x1b44ce){if(!_0x1b44ce){_0x440efa[_0xcc43('0x29')](0x194);}return _0x1b44ce;};}function handleError(_0x110956,_0x2fd407){_0x2fd407=_0x2fd407||0x1f4;return function(_0x38b860){logger[_0xcc43('0x2a')](_0x38b860[_0xcc43('0x2b')]);if(_0x38b860[_0xcc43('0x2c')]){delete _0x38b860[_0xcc43('0x2c')];}_0x110956[_0xcc43('0x1c')](_0x2fd407)['send'](_0x38b860);};}exports['show']=function(_0x33a463,_0xb70262){var _0x1727e4={'raw':!![],'where':{'id':_0x33a463[_0xcc43('0x2d')]['id']}},_0x430664={};_0x430664[_0xcc43('0x2e')]=_[_0xcc43('0x2f')](db[_0xcc43('0x30')]['rawAttributes']);_0x430664[_0xcc43('0x31')]=_[_0xcc43('0x2f')](_0x33a463[_0xcc43('0x31')]);_0x430664[_0xcc43('0x32')]=_[_0xcc43('0x33')](_0x430664[_0xcc43('0x2e')],_0x430664[_0xcc43('0x31')]);_0x1727e4[_0xcc43('0x34')]=_[_0xcc43('0x33')](_0x430664['model'],qs[_0xcc43('0x35')](_0x33a463[_0xcc43('0x31')]['fields']));_0x1727e4[_0xcc43('0x34')]=_0x1727e4[_0xcc43('0x34')][_0xcc43('0x36')]?_0x1727e4[_0xcc43('0x34')]:_0x430664[_0xcc43('0x2e')];if(_0x33a463[_0xcc43('0x31')]['includeAll']){_0x1727e4[_0xcc43('0x37')]=[{'all':!![]}];}_0x1727e4=_[_0xcc43('0x38')]({},_0x1727e4,_0x33a463[_0xcc43('0x39')]);return db['ChatProactiveAction']['find'](_0x1727e4)[_0xcc43('0x27')](handleEntityNotFound(_0xb70262,null))['then'](respondWithResult(_0xb70262,null))[_0xcc43('0x3a')](handleError(_0xb70262,null));};exports['create']=function(_0x368b26,_0x58df74){return db[_0xcc43('0x30')]['create'](_0x368b26[_0xcc43('0x3b')],{})['then'](respondWithResult(_0x58df74,0xc9))[_0xcc43('0x3a')](handleError(_0x58df74,null));};exports['update']=function(_0x21fdea,_0x887d9c){if(_0x21fdea[_0xcc43('0x3b')]['id']){delete _0x21fdea[_0xcc43('0x3b')]['id'];}return db[_0xcc43('0x30')][_0xcc43('0x3c')]({'where':{'id':_0x21fdea['params']['id']}})[_0xcc43('0x27')](handleEntityNotFound(_0x887d9c,null))[_0xcc43('0x27')](saveUpdates(_0x21fdea['body'],null))[_0xcc43('0x27')](respondWithResult(_0x887d9c,null))[_0xcc43('0x3a')](handleError(_0x887d9c,null));};exports[_0xcc43('0x28')]=function(_0x4d6aa2,_0x27989b){return db[_0xcc43('0x30')][_0xcc43('0x3c')]({'where':{'id':_0x4d6aa2[_0xcc43('0x2d')]['id']}})['then'](handleEntityNotFound(_0x27989b,null))[_0xcc43('0x27')](removeEntity(_0x27989b,null))[_0xcc43('0x3a')](handleError(_0x27989b,null));};
\ No newline at end of file
+var _0xdbf7=['params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','includeAll','include','options','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','stack','name','show'];(function(_0x36fa0e,_0x5c2e92){var _0x3d9c51=function(_0x48856a){while(--_0x48856a){_0x36fa0e['push'](_0x36fa0e['shift']());}};_0x3d9c51(++_0x5c2e92);}(_0xdbf7,0x8d));var _0x7dbf=function(_0x1d7037,_0x57dd95){_0x1d7037=_0x1d7037-0x0;var _0x4d6568=_0xdbf7[_0x1d7037];return _0x4d6568;};'use strict';var emlformat=require(_0x7dbf('0x0'));var rimraf=require(_0x7dbf('0x1'));var zipdir=require(_0x7dbf('0x2'));var jsonpatch=require(_0x7dbf('0x3'));var rp=require(_0x7dbf('0x4'));var moment=require(_0x7dbf('0x5'));var BPromise=require(_0x7dbf('0x6'));var Mustache=require(_0x7dbf('0x7'));var util=require('util');var path=require(_0x7dbf('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7dbf('0x9'));var fs=require('fs');var fs_extra=require(_0x7dbf('0xa'));var _=require(_0x7dbf('0xb'));var squel=require(_0x7dbf('0xc'));var crypto=require(_0x7dbf('0xd'));var jsforce=require(_0x7dbf('0xe'));var deskjs=require(_0x7dbf('0xf'));var toCsv=require(_0x7dbf('0x10'));var querystring=require(_0x7dbf('0x11'));var Papa=require(_0x7dbf('0x12'));var Redis=require(_0x7dbf('0x13'));var authService=require(_0x7dbf('0x14'));var qs=require(_0x7dbf('0x15'));var as=require(_0x7dbf('0x16'));var hardwareService=require(_0x7dbf('0x17'));var logger=require('../../config/logger')(_0x7dbf('0x18'));var utils=require(_0x7dbf('0x19'));var config=require(_0x7dbf('0x1a'));var licenseUtil=require(_0x7dbf('0x1b'));var db=require(_0x7dbf('0x1c'))['db'];function respondWithStatusCode(_0x2254d7,_0x50bddb){_0x50bddb=_0x50bddb||0xcc;return function(_0x54bb0a){if(_0x54bb0a){return _0x2254d7['sendStatus'](_0x50bddb);}return _0x2254d7['status'](_0x50bddb)['end']();};}function respondWithResult(_0x524ed4,_0x201d38){_0x201d38=_0x201d38||0xc8;return function(_0x35686a){if(_0x35686a){return _0x524ed4[_0x7dbf('0x1d')](_0x201d38)['json'](_0x35686a);}};}function respondWithFilteredResult(_0x3dd291,_0x4492c8){return function(_0x38be73){if(_0x38be73){var _0x4a3cd3=typeof _0x4492c8[_0x7dbf('0x1e')]===_0x7dbf('0x1f')&&typeof _0x4492c8[_0x7dbf('0x20')]===_0x7dbf('0x1f');var _0x1d6b88=_0x38be73[_0x7dbf('0x21')];var _0xc47749=_0x4a3cd3?0x0:_0x4492c8['offset'];var _0x3abe64=_0x4a3cd3?_0x38be73['count']:_0x4492c8[_0x7dbf('0x1e')]+_0x4492c8['limit'];var _0x3dfcb8;if(_0x3abe64>=_0x1d6b88){_0x3abe64=_0x1d6b88;_0x3dfcb8=0xc8;}else{_0x3dfcb8=0xce;}_0x3dd291[_0x7dbf('0x1d')](_0x3dfcb8);return _0x3dd291[_0x7dbf('0x22')](_0x7dbf('0x23'),_0xc47749+'-'+_0x3abe64+'/'+_0x1d6b88)['json'](_0x38be73);}return null;};}function patchUpdates(_0xe2b82){return function(_0x104025){try{jsonpatch[_0x7dbf('0x24')](_0x104025,_0xe2b82,!![]);}catch(_0x56d108){return BPromise[_0x7dbf('0x25')](_0x56d108);}return _0x104025[_0x7dbf('0x26')]();};}function saveUpdates(_0x8b988d,_0xd2460c){return function(_0x4638b8){if(_0x4638b8){return _0x4638b8['update'](_0x8b988d)[_0x7dbf('0x27')](function(_0x26a5e2){return _0x26a5e2;});}return null;};}function removeEntity(_0x29f89f,_0x502014){return function(_0x48d753){if(_0x48d753){return _0x48d753[_0x7dbf('0x28')]()[_0x7dbf('0x27')](function(){_0x29f89f[_0x7dbf('0x1d')](0xcc)[_0x7dbf('0x29')]();});}};}function handleEntityNotFound(_0x205a70,_0x2360a3){return function(_0x35d4d2){if(!_0x35d4d2){_0x205a70['sendStatus'](0x194);}return _0x35d4d2;};}function handleError(_0x5a68fb,_0xba1115){_0xba1115=_0xba1115||0x1f4;return function(_0x2403d7){logger['error'](_0x2403d7[_0x7dbf('0x2a')]);if(_0x2403d7[_0x7dbf('0x2b')]){delete _0x2403d7[_0x7dbf('0x2b')];}_0x5a68fb[_0x7dbf('0x1d')](_0xba1115)['send'](_0x2403d7);};}exports[_0x7dbf('0x2c')]=function(_0x5dcdf4,_0x36d433){var _0x55c1f6={'raw':!![],'where':{'id':_0x5dcdf4[_0x7dbf('0x2d')]['id']}},_0x3c0515={};_0x3c0515[_0x7dbf('0x2e')]=_[_0x7dbf('0x2f')](db[_0x7dbf('0x30')][_0x7dbf('0x31')]);_0x3c0515[_0x7dbf('0x32')]=_[_0x7dbf('0x2f')](_0x5dcdf4[_0x7dbf('0x32')]);_0x3c0515[_0x7dbf('0x33')]=_[_0x7dbf('0x34')](_0x3c0515[_0x7dbf('0x2e')],_0x3c0515[_0x7dbf('0x32')]);_0x55c1f6[_0x7dbf('0x35')]=_[_0x7dbf('0x34')](_0x3c0515['model'],qs[_0x7dbf('0x36')](_0x5dcdf4[_0x7dbf('0x32')][_0x7dbf('0x36')]));_0x55c1f6[_0x7dbf('0x35')]=_0x55c1f6[_0x7dbf('0x35')]['length']?_0x55c1f6[_0x7dbf('0x35')]:_0x3c0515[_0x7dbf('0x2e')];if(_0x5dcdf4[_0x7dbf('0x32')][_0x7dbf('0x37')]){_0x55c1f6[_0x7dbf('0x38')]=[{'all':!![]}];}_0x55c1f6=_['merge']({},_0x55c1f6,_0x5dcdf4[_0x7dbf('0x39')]);return db[_0x7dbf('0x30')]['find'](_0x55c1f6)[_0x7dbf('0x27')](handleEntityNotFound(_0x36d433,null))['then'](respondWithResult(_0x36d433,null))[_0x7dbf('0x3a')](handleError(_0x36d433,null));};exports[_0x7dbf('0x3b')]=function(_0x431c00,_0x4ab0eb){return db[_0x7dbf('0x30')][_0x7dbf('0x3b')](_0x431c00['body'],{})[_0x7dbf('0x27')](respondWithResult(_0x4ab0eb,0xc9))[_0x7dbf('0x3a')](handleError(_0x4ab0eb,null));};exports['update']=function(_0x1a1362,_0x4fda6f){if(_0x1a1362[_0x7dbf('0x3c')]['id']){delete _0x1a1362['body']['id'];}return db[_0x7dbf('0x30')][_0x7dbf('0x3d')]({'where':{'id':_0x1a1362[_0x7dbf('0x2d')]['id']}})[_0x7dbf('0x27')](handleEntityNotFound(_0x4fda6f,null))[_0x7dbf('0x27')](saveUpdates(_0x1a1362[_0x7dbf('0x3c')],null))['then'](respondWithResult(_0x4fda6f,null))['catch'](handleError(_0x4fda6f,null));};exports[_0x7dbf('0x28')]=function(_0x1d2d5d,_0x5dda39){return db[_0x7dbf('0x30')][_0x7dbf('0x3d')]({'where':{'id':_0x1d2d5d[_0x7dbf('0x2d')]['id']}})['then'](handleEntityNotFound(_0x5dda39,null))[_0x7dbf('0x27')](removeEntity(_0x5dda39,null))[_0x7dbf('0x3a')](handleError(_0x5dda39,null));};
\ No newline at end of file
index 7d1cb88..eed4719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x515a=['define','ChatProactiveAction','chat_proactive_actions','lodash','util','api','../../config/environment','./chatProactiveAction.attributes','exports'];(function(_0x52d06b,_0x1a4321){var _0x51d13f=function(_0xfda2a8){while(--_0xfda2a8){_0x52d06b['push'](_0x52d06b['shift']());}};_0x51d13f(++_0x1a4321);}(_0x515a,0x1b3));var _0xa515=function(_0x428d9e,_0x50ab20){_0x428d9e=_0x428d9e-0x0;var _0x870c8a=_0x515a[_0x428d9e];return _0x870c8a;};'use strict';var _=require(_0xa515('0x0'));var util=require(_0xa515('0x1'));var logger=require('../../config/logger')(_0xa515('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa515('0x3'));var attributes=require(_0xa515('0x4'));module[_0xa515('0x5')]=function(_0x5726e6,_0x3426be){return _0x5726e6[_0xa515('0x6')](_0xa515('0x7'),attributes,{'tableName':_0xa515('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x944c=['path','rimraf','../../config/environment','./chatProactiveAction.attributes','ChatProactiveAction','chat_proactive_actions','lodash','util','moment','bluebird'];(function(_0x37ae26,_0x2ecd70){var _0x1b1902=function(_0x5a6ae0){while(--_0x5a6ae0){_0x37ae26['push'](_0x37ae26['shift']());}};_0x1b1902(++_0x2ecd70);}(_0x944c,0x18c));var _0xc944=function(_0x4cd77a,_0x27fb35){_0x4cd77a=_0x4cd77a-0x0;var _0x8d22ab=_0x944c[_0x4cd77a];return _0x8d22ab;};'use strict';var _=require(_0xc944('0x0'));var util=require(_0xc944('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc944('0x2'));var BPromise=require(_0xc944('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc944('0x4'));var rimraf=require(_0xc944('0x5'));var config=require(_0xc944('0x6'));var attributes=require(_0xc944('0x7'));module['exports']=function(_0x2118b7,_0x5b52a4){return _0x2118b7['define'](_0xc944('0x8'),attributes,{'tableName':_0xc944('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c114d08..d53789a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd5b=['http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','client'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xfd5b,0xc0));var _0xbfd5=function(_0x291be9,_0x2fd057){_0x291be9=_0x291be9-0x0;var _0x525e3b=_0xfd5b[_0x291be9];return _0x525e3b;};'use strict';var _=require(_0xbfd5('0x0'));var util=require('util');var moment=require(_0xbfd5('0x1'));var BPromise=require(_0xbfd5('0x2'));var rs=require(_0xbfd5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbfd5('0x4'))(_0xbfd5('0x5'));var config=require(_0xbfd5('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xbfd5('0x7')][_0xbfd5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x402710,_0x27dcaa,_0x5a5d51){return new BPromise(function(_0x166925,_0xb57dfe){return client[_0xbfd5('0x9')](_0x402710,_0x5a5d51)[_0xbfd5('0xa')](function(_0x571925){logger[_0xbfd5('0xb')](_0xbfd5('0xc'),_0x27dcaa,_0xbfd5('0xd'));logger['debug'](_0xbfd5('0xe'),_0x27dcaa,_0xbfd5('0xd'),JSON['stringify'](_0x571925));if(_0x571925[_0xbfd5('0xf')]){if(_0x571925[_0xbfd5('0xf')][_0xbfd5('0x10')]===0x1f4){logger[_0xbfd5('0xf')](_0xbfd5('0xc'),_0x27dcaa,_0x571925[_0xbfd5('0xf')][_0xbfd5('0x11')]);return _0xb57dfe(_0x571925['error'][_0xbfd5('0x11')]);}logger['error'](_0xbfd5('0xc'),_0x27dcaa,_0x571925[_0xbfd5('0xf')]['message']);return _0x166925(_0x571925['error']['message']);}else{logger[_0xbfd5('0xb')](_0xbfd5('0xc'),_0x27dcaa,_0xbfd5('0xd'));_0x166925(_0x571925[_0xbfd5('0x12')][_0xbfd5('0x11')]);}})[_0xbfd5('0x13')](function(_0x2c60c4){logger[_0xbfd5('0xf')](_0xbfd5('0xc'),_0x27dcaa,_0x2c60c4);_0xb57dfe(_0x2c60c4);});});}
\ No newline at end of file
+var _0xfc36=['message','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4f73ce,_0x584350){var _0x2cbc2b=function(_0x420c09){while(--_0x420c09){_0x4f73ce['push'](_0x4f73ce['shift']());}};_0x2cbc2b(++_0x584350);}(_0xfc36,0x1a5));var _0x6fc3=function(_0x2c16e5,_0xc56a48){_0x2c16e5=_0x2c16e5-0x0;var _0x47d93b=_0xfc36[_0x2c16e5];return _0x47d93b;};'use strict';var _=require(_0x6fc3('0x0'));var util=require(_0x6fc3('0x1'));var moment=require('moment');var BPromise=require(_0x6fc3('0x2'));var rs=require(_0x6fc3('0x3'));var fs=require('fs');var Redis=require(_0x6fc3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6fc3('0x5'));var logger=require('../../config/logger')(_0x6fc3('0x6'));var config=require(_0x6fc3('0x7'));var jayson=require(_0x6fc3('0x8'));var client=jayson[_0x6fc3('0x9')][_0x6fc3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x467c8a,_0x9a58f4,_0xa88cd4){return new BPromise(function(_0x351b29,_0x312f8a){return client[_0x6fc3('0xb')](_0x467c8a,_0xa88cd4)['then'](function(_0x33d5e3){logger[_0x6fc3('0xc')](_0x6fc3('0xd'),_0x9a58f4,'request\x20sent');logger[_0x6fc3('0xe')](_0x6fc3('0xf'),_0x9a58f4,'request\x20sent',JSON[_0x6fc3('0x10')](_0x33d5e3));if(_0x33d5e3[_0x6fc3('0x11')]){if(_0x33d5e3['error'][_0x6fc3('0x12')]===0x1f4){logger[_0x6fc3('0x11')](_0x6fc3('0xd'),_0x9a58f4,_0x33d5e3['error']['message']);return _0x312f8a(_0x33d5e3[_0x6fc3('0x11')][_0x6fc3('0x13')]);}logger['error'](_0x6fc3('0xd'),_0x9a58f4,_0x33d5e3['error'][_0x6fc3('0x13')]);return _0x351b29(_0x33d5e3['error'][_0x6fc3('0x13')]);}else{logger['info'](_0x6fc3('0xd'),_0x9a58f4,'request\x20sent');_0x351b29(_0x33d5e3['result'][_0x6fc3('0x13')]);}})['catch'](function(_0x4855f6){logger[_0x6fc3('0x11')](_0x6fc3('0xd'),_0x9a58f4,_0x4855f6);_0x312f8a(_0x4855f6);});});}
\ No newline at end of file
index 8beab41..da81b77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','create','destroy','exports'];(function(_0x3a11cb,_0x860592){var _0x913418=function(_0x4dee82){while(--_0x4dee82){_0x3a11cb['push'](_0x3a11cb['shift']());}};_0x913418(++_0x860592);}(_0x55ca,0x126));var _0xa55c=function(_0x59ee91,_0x5ca1ef){_0x59ee91=_0x59ee91-0x0;var _0x51b0b7=_0x55ca[_0x59ee91];return _0x51b0b7;};'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')](_0xa55c('0x8'),auth[_0xa55c('0x9')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x9')](),controller[_0xa55c('0xb')]);router['put'](_0xa55c('0x8'),auth[_0xa55c('0x9')](),controller['update']);router['delete'](_0xa55c('0x8'),auth[_0xa55c('0x9')](),controller[_0xa55c('0xc')]);module[_0xa55c('0xd')]=router;
\ No newline at end of file
+var _0x7fbe=['show','post','create','put','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated'];(function(_0x5f0e63,_0x3d7dd6){var _0x1e4574=function(_0x2df20d){while(--_0x2df20d){_0x5f0e63['push'](_0x5f0e63['shift']());}};_0x1e4574(++_0x3d7dd6);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x3a831f,_0x31c8a4){_0x3a831f=_0x3a831f-0x0;var _0x26786c=_0x7fbe[_0x3a831f];return _0x26786c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')](_0xe7fb('0xa'),auth[_0xe7fb('0xb')](),controller[_0xe7fb('0xc')]);router[_0xe7fb('0xd')]('/',auth['isAuthenticated'](),controller[_0xe7fb('0xe')]);router[_0xe7fb('0xf')](_0xe7fb('0xa'),auth[_0xe7fb('0xb')](),controller['update']);router['delete'](_0xe7fb('0xa'),auth[_0xe7fb('0xb')](),controller[_0xe7fb('0x10')]);module[_0xe7fb('0x11')]=router;
\ No newline at end of file
index c62f85c..d40604b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fdd=['beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','rrmemory'];(function(_0x51d252,_0x5453db){var _0x113bf2=function(_0x4e8003){while(--_0x4e8003){_0x51d252['push'](_0x51d252['shift']());}};_0x113bf2(++_0x5453db);}(_0x2fdd,0x13a));var _0xd2fd=function(_0x526730,_0x5e7f2a){_0x526730=_0x526730-0x0;var _0x5f0126=_0x2fdd[_0x526730];return _0x5f0126;};'use strict';var Sequelize=require(_0xd2fd('0x0'));module[_0xd2fd('0x1')]={'name':{'type':Sequelize[_0xd2fd('0x2')],'unique':_0xd2fd('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd2fd('0x2')]},'timeout':{'type':Sequelize[_0xd2fd('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd2fd('0x5'),_0xd2fd('0x6'),_0xd2fd('0x7'))}};
\ No newline at end of file
+var _0xb5a7=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0xb5a7,0x66));var _0x7b5a=function(_0xa13ad7,_0x27270b){_0xa13ad7=_0xa13ad7-0x0;var _0x409c3d=_0xb5a7[_0xa13ad7];return _0x409c3d;};'use strict';var Sequelize=require(_0x7b5a('0x0'));module[_0x7b5a('0x1')]={'name':{'type':Sequelize[_0x7b5a('0x2')],'unique':_0x7b5a('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x7b5a('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7b5a('0x5')](_0x7b5a('0x6'),_0x7b5a('0x7'),_0x7b5a('0x8'))}};
\ No newline at end of file
index 172a1a7..ffa59e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04a8=['Team','Agents','online','voicePause','flatMap','sequelize','each','findOrCreate','emit','userChatQueue:save','ids','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','all','compact','removeTeams','isEmpty','removeAgents','forEach','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','jayson/promise','client','http','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','ChatQueue,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','ChatQueues','stack','name','index','ChatQueue','rawAttributes','fieldName','key','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','merge','type','options','where','includeAll','findAll','catch','params','model','length','include','create','get','role','user','UserProfileSection','find','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserChatQueue','filters','pick','ChatQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','rows','format','%s/%s','SIP','chatPause','getTeams','addTeams'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x04a8,0x1e2));var _0x804a=function(_0x309351,_0x20b73f){_0x309351=_0x309351-0x0;var _0xf60dd7=_0x04a8[_0x309351];return _0xf60dd7;};'use strict';var emlformat=require(_0x804a('0x0'));var rimraf=require(_0x804a('0x1'));var zipdir=require(_0x804a('0x2'));var jsonpatch=require(_0x804a('0x3'));var rp=require('request-promise');var moment=require(_0x804a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x804a('0x5'));var util=require('util');var path=require(_0x804a('0x6'));var sox=require(_0x804a('0x7'));var csv=require('to-csv');var ejs=require(_0x804a('0x8'));var fs=require('fs');var fs_extra=require(_0x804a('0x9'));var _=require(_0x804a('0xa'));var squel=require('squel');var crypto=require(_0x804a('0xb'));var jsforce=require(_0x804a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x804a('0xd'));var querystring=require(_0x804a('0xe'));var Papa=require(_0x804a('0xf'));var Redis=require(_0x804a('0x10'));var authService=require(_0x804a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x804a('0x12'));var logger=require('../../config/logger')(_0x804a('0x13'));var utils=require(_0x804a('0x14'));var config=require(_0x804a('0x15'));var licenseUtil=require(_0x804a('0x16'));var db=require(_0x804a('0x17'))['db'];config[_0x804a('0x18')]=_[_0x804a('0x19')](config['redis'],{'host':_0x804a('0x1a'),'port':0x18eb});var socket=require(_0x804a('0x1b'))(new Redis(config[_0x804a('0x18')]));require(_0x804a('0x1c'))['register'](socket);var jayson=require(_0x804a('0x1d'));var client=jayson[_0x804a('0x1e')][_0x804a('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x405fa6,_0x1a9901,_0x3854fa,_0x2b95bf){return new BPromise(function(_0x3af818,_0x34842e){var _0x20d451=_0x2b95bf||client;return _0x20d451['request'](_0x405fa6,_0x3854fa)[_0x804a('0x20')](function(_0x4fd402){logger[_0x804a('0x21')]('ChatQueue,\x20%s,\x20%s',_0x1a9901,'request\x20sent');logger[_0x804a('0x22')](_0x804a('0x23'),_0x1a9901,_0x804a('0x24'),JSON['stringify'](_0x4fd402));if(_0x4fd402[_0x804a('0x25')]){if(_0x4fd402['error'][_0x804a('0x26')]===0x1f4){logger['error'](_0x804a('0x27'),_0x1a9901,_0x4fd402['error'][_0x804a('0x28')]);return _0x34842e(_0x4fd402[_0x804a('0x25')][_0x804a('0x28')]);}logger['error'](_0x804a('0x27'),_0x1a9901,_0x4fd402[_0x804a('0x25')][_0x804a('0x28')]);return _0x3af818(_0x4fd402[_0x804a('0x25')][_0x804a('0x28')]);}else{logger[_0x804a('0x21')](_0x804a('0x27'),_0x1a9901,_0x804a('0x24'));_0x3af818(_0x4fd402[_0x804a('0x29')][_0x804a('0x28')]);}})['catch'](function(_0x191702){logger[_0x804a('0x25')](_0x804a('0x27'),_0x1a9901,_0x191702);_0x34842e(_0x191702);});});}function respondWithStatusCode(_0x5b6cc3,_0x425fa6){_0x425fa6=_0x425fa6||0xcc;return function(_0x4c6990){if(_0x4c6990){return _0x5b6cc3[_0x804a('0x2a')](_0x425fa6);}return _0x5b6cc3[_0x804a('0x2b')](_0x425fa6)[_0x804a('0x2c')]();};}function respondWithResult(_0x47022d,_0x565cbf){_0x565cbf=_0x565cbf||0xc8;return function(_0x48efdf){if(_0x48efdf){return _0x47022d[_0x804a('0x2b')](_0x565cbf)[_0x804a('0x2d')](_0x48efdf);}};}function respondWithFilteredResult(_0x4f38c4,_0x1e12e9){return function(_0x3c9ace){if(_0x3c9ace){var _0x41999c=typeof _0x1e12e9[_0x804a('0x2e')]===_0x804a('0x2f')&&typeof _0x1e12e9[_0x804a('0x30')]===_0x804a('0x2f');var _0x1686fc=_0x3c9ace[_0x804a('0x31')];var _0x1b4fcf=_0x41999c?0x0:_0x1e12e9[_0x804a('0x2e')];var _0x29022d=_0x41999c?_0x3c9ace[_0x804a('0x31')]:_0x1e12e9[_0x804a('0x2e')]+_0x1e12e9['limit'];var _0x1b436a;if(_0x29022d>=_0x1686fc){_0x29022d=_0x1686fc;_0x1b436a=0xc8;}else{_0x1b436a=0xce;}_0x4f38c4[_0x804a('0x2b')](_0x1b436a);return _0x4f38c4['set'](_0x804a('0x32'),_0x1b4fcf+'-'+_0x29022d+'/'+_0x1686fc)[_0x804a('0x2d')](_0x3c9ace);}return null;};}function patchUpdates(_0x3b9f8e){return function(_0x5133e3){try{jsonpatch['apply'](_0x5133e3,_0x3b9f8e,!![]);}catch(_0x145e5a){return BPromise[_0x804a('0x33')](_0x145e5a);}return _0x5133e3[_0x804a('0x34')]();};}function saveUpdates(_0x26b707,_0x2063ba){return function(_0x1dca54){if(_0x1dca54){return _0x1dca54[_0x804a('0x35')](_0x26b707)[_0x804a('0x20')](function(_0x811aae){return _0x811aae;});}return null;};}function removeEntity(_0x43cdc1,_0x1df8f0){return function(_0x4aa7b6){if(_0x4aa7b6){return _0x4aa7b6[_0x804a('0x36')]()['then'](function(){var _0x5057b6=_0x4aa7b6['get']({'plain':!![]});var _0x2464a0=_0x804a('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x2464a0,'resourceId':_0x5057b6['id']}})[_0x804a('0x20')](function(){return _0x4aa7b6;});})[_0x804a('0x20')](function(){_0x43cdc1[_0x804a('0x2b')](0xcc)[_0x804a('0x2c')]();});}};}function handleEntityNotFound(_0x1d446b,_0xdab077){return function(_0x274fc7){if(!_0x274fc7){_0x1d446b[_0x804a('0x2a')](0x194);}return _0x274fc7;};}function handleError(_0x4937e1,_0x1e8572){_0x1e8572=_0x1e8572||0x1f4;return function(_0x354f1f){logger[_0x804a('0x25')](_0x354f1f[_0x804a('0x38')]);if(_0x354f1f[_0x804a('0x39')]){delete _0x354f1f[_0x804a('0x39')];}_0x4937e1[_0x804a('0x2b')](_0x1e8572)['send'](_0x354f1f);};}exports[_0x804a('0x3a')]=function(_0x3a8951,_0x554379){var _0x14591f={},_0x1687ca={},_0x5a0614={'count':0x0,'rows':[]};var _0x3bfc50=_['map'](db[_0x804a('0x3b')][_0x804a('0x3c')],function(_0x1e9c36){return{'name':_0x1e9c36[_0x804a('0x3d')],'type':_0x1e9c36['type'][_0x804a('0x3e')]};});_0x1687ca['model']=_[_0x804a('0x3f')](_0x3bfc50,'name');_0x1687ca[_0x804a('0x40')]=_[_0x804a('0x41')](_0x3a8951[_0x804a('0x40')]);_0x1687ca['filters']=_[_0x804a('0x42')](_0x1687ca['model'],_0x1687ca[_0x804a('0x40')]);_0x14591f[_0x804a('0x43')]=_[_0x804a('0x42')](_0x1687ca['model'],qs['fields'](_0x3a8951[_0x804a('0x40')][_0x804a('0x44')]));_0x14591f['attributes']=_0x14591f[_0x804a('0x43')]['length']?_0x14591f[_0x804a('0x43')]:_0x1687ca['model'];if(!_0x3a8951['query'][_0x804a('0x45')](_0x804a('0x46'))){_0x14591f['limit']=qs[_0x804a('0x30')](_0x3a8951[_0x804a('0x40')][_0x804a('0x30')]);_0x14591f[_0x804a('0x2e')]=qs[_0x804a('0x2e')](_0x3a8951[_0x804a('0x40')][_0x804a('0x2e')]);}_0x14591f[_0x804a('0x47')]=qs[_0x804a('0x48')](_0x3a8951[_0x804a('0x40')][_0x804a('0x48')]);_0x14591f['where']=qs['filters'](_['pick'](_0x3a8951[_0x804a('0x40')],_0x1687ca['filters']),_0x3bfc50);if(_0x3a8951[_0x804a('0x40')][_0x804a('0x49')]){_0x14591f['where']=_[_0x804a('0x4a')](_0x14591f['where'],{'$or':_[_0x804a('0x3f')](_0x3bfc50,function(_0x3f5b99){if(_0x3f5b99[_0x804a('0x4b')]!=='VIRTUAL'){var _0x41e27d={};_0x41e27d[_0x3f5b99[_0x804a('0x39')]]={'$like':'%'+_0x3a8951[_0x804a('0x40')][_0x804a('0x49')]+'%'};return _0x41e27d;}})});}_0x14591f=_['merge']({},_0x14591f,_0x3a8951[_0x804a('0x4c')]);var _0x166440={'where':_0x14591f[_0x804a('0x4d')]};return db[_0x804a('0x3b')][_0x804a('0x31')](_0x166440)[_0x804a('0x20')](function(_0x25c6d7){_0x5a0614[_0x804a('0x31')]=_0x25c6d7;if(_0x3a8951[_0x804a('0x40')][_0x804a('0x4e')]){_0x14591f['include']=[{'all':!![]}];}return db[_0x804a('0x3b')][_0x804a('0x4f')](_0x14591f);})[_0x804a('0x20')](function(_0x345a4e){_0x5a0614['rows']=_0x345a4e;return _0x5a0614;})[_0x804a('0x20')](respondWithFilteredResult(_0x554379,_0x14591f))[_0x804a('0x50')](handleError(_0x554379,null));};exports['show']=function(_0x5960ce,_0x1fb919){var _0x385722={'raw':!![],'where':{'id':_0x5960ce[_0x804a('0x51')]['id']}},_0x500ae2={};_0x500ae2[_0x804a('0x52')]=_[_0x804a('0x41')](db[_0x804a('0x3b')][_0x804a('0x3c')]);_0x500ae2['query']=_[_0x804a('0x41')](_0x5960ce[_0x804a('0x40')]);_0x500ae2['filters']=_[_0x804a('0x42')](_0x500ae2['model'],_0x500ae2[_0x804a('0x40')]);_0x385722[_0x804a('0x43')]=_[_0x804a('0x42')](_0x500ae2['model'],qs[_0x804a('0x44')](_0x5960ce[_0x804a('0x40')][_0x804a('0x44')]));_0x385722['attributes']=_0x385722[_0x804a('0x43')][_0x804a('0x53')]?_0x385722[_0x804a('0x43')]:_0x500ae2['model'];if(_0x5960ce[_0x804a('0x40')][_0x804a('0x4e')]){_0x385722[_0x804a('0x54')]=[{'all':!![]}];}_0x385722=_['merge']({},_0x385722,_0x5960ce[_0x804a('0x4c')]);return db[_0x804a('0x3b')]['find'](_0x385722)[_0x804a('0x20')](handleEntityNotFound(_0x1fb919,null))['then'](respondWithResult(_0x1fb919,null))['catch'](handleError(_0x1fb919,null));};exports[_0x804a('0x55')]=function(_0x20e038,_0x4c50b1){return db[_0x804a('0x3b')][_0x804a('0x55')](_0x20e038['body'],{})[_0x804a('0x20')](function(_0x59e5fe){var _0x593caf=_0x20e038['user'][_0x804a('0x56')]({'plain':!![]});if(!_0x593caf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x593caf[_0x804a('0x57')]===_0x804a('0x58')){var _0x164fae=_0x59e5fe[_0x804a('0x56')]({'plain':!![]});var _0x472213=_0x804a('0x37');return db[_0x804a('0x59')][_0x804a('0x5a')]({'where':{'name':_0x472213,'userProfileId':_0x593caf['userProfileId']},'raw':!![]})[_0x804a('0x20')](function(_0x372958){if(_0x372958&&_0x372958['autoAssociation']===0x0){return db[_0x804a('0x5b')][_0x804a('0x55')]({'name':_0x164fae['name'],'resourceId':_0x164fae['id'],'type':_0x372958['name'],'sectionId':_0x372958['id']},{})[_0x804a('0x20')](function(){return _0x59e5fe;});}else{return _0x59e5fe;}})[_0x804a('0x50')](function(_0x5a922f){logger['error'](_0x804a('0x5c'),_0x5a922f);throw _0x5a922f;});}return _0x59e5fe;})['then'](respondWithResult(_0x4c50b1,0xc9))[_0x804a('0x50')](handleError(_0x4c50b1,null));};exports[_0x804a('0x35')]=function(_0x158663,_0x15a99d){if(_0x158663[_0x804a('0x5d')]['id']){delete _0x158663[_0x804a('0x5d')]['id'];}return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x158663['params']['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x15a99d,null))[_0x804a('0x20')](saveUpdates(_0x158663['body'],null))[_0x804a('0x20')](respondWithResult(_0x15a99d,null))[_0x804a('0x50')](handleError(_0x15a99d,null));};exports[_0x804a('0x36')]=function(_0x149d14,_0x15f9a7){return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x149d14['params']['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x15f9a7,null))['then'](removeEntity(_0x15f9a7,null))['catch'](handleError(_0x15f9a7,null));};exports[_0x804a('0x5e')]=function(_0x39b408,_0x4790c5){return db[_0x804a('0x3b')][_0x804a('0x5e')]()[_0x804a('0x20')](respondWithResult(_0x4790c5,null))[_0x804a('0x50')](handleError(_0x4790c5,null));};exports[_0x804a('0x5f')]=function(_0x168755,_0x10cab0,_0x5a8241){var _0x18ed35={'raw':!![],'where':{}},_0x3fdfa6={},_0x5d3168;return db[_0x804a('0x3b')][_0x804a('0x60')]({'where':{'id':_0x168755[_0x804a('0x51')]['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x10cab0,null))[_0x804a('0x20')](function(_0x4a8b9a){if(_0x4a8b9a){_0x5d3168=_0x4a8b9a[_0x804a('0x56')]({'plain':!![]});_0x3fdfa6[_0x804a('0x52')]=_[_0x804a('0x41')](db[_0x804a('0x61')]['rawAttributes']);_0x3fdfa6[_0x804a('0x40')]=_[_0x804a('0x41')](_0x168755[_0x804a('0x40')]);_0x3fdfa6[_0x804a('0x62')]=_[_0x804a('0x42')](_0x3fdfa6['model'],_0x3fdfa6[_0x804a('0x40')]);_0x18ed35['attributes']=_['intersection'](_0x3fdfa6[_0x804a('0x52')],qs[_0x804a('0x44')](_0x168755[_0x804a('0x40')][_0x804a('0x44')]));_0x18ed35[_0x804a('0x43')]=_0x18ed35[_0x804a('0x43')][_0x804a('0x53')]?_0x18ed35[_0x804a('0x43')]:_0x3fdfa6[_0x804a('0x52')];if(!_0x168755[_0x804a('0x40')][_0x804a('0x45')](_0x804a('0x46'))){_0x18ed35[_0x804a('0x30')]=qs[_0x804a('0x30')](_0x168755['query'][_0x804a('0x30')]);_0x18ed35['offset']=qs[_0x804a('0x2e')](_0x168755[_0x804a('0x40')][_0x804a('0x2e')]);}_0x18ed35['order']=qs[_0x804a('0x48')](_0x168755[_0x804a('0x40')][_0x804a('0x48')]);_0x18ed35['where']=qs[_0x804a('0x62')](_[_0x804a('0x63')](_0x168755[_0x804a('0x40')],_0x3fdfa6[_0x804a('0x62')]));_0x18ed35[_0x804a('0x4d')][_0x804a('0x64')]=_0x4a8b9a['id'];if(_0x168755['query'][_0x804a('0x49')]){_0x18ed35[_0x804a('0x4d')]=_[_0x804a('0x4a')](_0x18ed35['where'],{'$or':_[_0x804a('0x3f')](_0x18ed35[_0x804a('0x43')],function(_0x45e08e){var _0x59dcd7={};_0x59dcd7[_0x45e08e]={'$like':'%'+_0x168755['query'][_0x804a('0x49')]+'%'};return _0x59dcd7;})});}_0x18ed35=_[_0x804a('0x4a')]({},_0x18ed35,_0x168755[_0x804a('0x4c')]);return db['UserChatQueue'][_0x804a('0x4f')](_0x18ed35);}})[_0x804a('0x20')](function(_0x16068e){if(_0x16068e){return db[_0x804a('0x65')][_0x804a('0x66')]({'where':{'id':_[_0x804a('0x3f')](_0x16068e,_0x804a('0x67')),'role':_0x804a('0x68')},'attributes':['id',_0x804a('0x39'),'chatPause',_0x804a('0x69'),_0x804a('0x6a')]});}})[_0x804a('0x20')](function(_0x3e4b23){if(_0x3e4b23){return{'count':_0x3e4b23[_0x804a('0x31')],'rows':_['map'](_0x3e4b23[_0x804a('0x6b')],function(_0xc0262a){return{'membername':_0xc0262a[_0x804a('0x39')],'UserId':_0xc0262a['id'],'queue_name':_0x5d3168['name'],'ChatQueueId':_0x5d3168['id'],'interface':util[_0x804a('0x6c')](_0x804a('0x6d'),_0x804a('0x6e'),_0xc0262a[_0x804a('0x39')]),'penalty':0x0,'paused':_0xc0262a[_0x804a('0x6f')],'createdAt':_0xc0262a['createdAt'],'updatedAt':_0xc0262a[_0x804a('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x804a('0x20')](respondWithFilteredResult(_0x10cab0,_0x18ed35))[_0x804a('0x50')](handleError(_0x10cab0,null));};exports[_0x804a('0x70')]=function(_0x271451,_0x26a066,_0xe47800){var _0x3801ca={};var _0x13bedc={};var _0x17223c;var _0x37c8b5;return db[_0x804a('0x3b')][_0x804a('0x60')]({'where':{'id':_0x271451[_0x804a('0x51')]['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x26a066,null))['then'](function(_0x3c32df){if(_0x3c32df){_0x17223c=_0x3c32df;_0x13bedc['model']=_['keys'](db['Team'][_0x804a('0x3c')]);_0x13bedc[_0x804a('0x40')]=_[_0x804a('0x41')](_0x271451[_0x804a('0x40')]);_0x13bedc[_0x804a('0x62')]=_['intersection'](_0x13bedc[_0x804a('0x52')],_0x13bedc[_0x804a('0x40')]);_0x3801ca['attributes']=_[_0x804a('0x42')](_0x13bedc[_0x804a('0x52')],qs[_0x804a('0x44')](_0x271451['query'][_0x804a('0x44')]));_0x3801ca[_0x804a('0x43')]=_0x3801ca[_0x804a('0x43')][_0x804a('0x53')]?_0x3801ca[_0x804a('0x43')]:_0x13bedc[_0x804a('0x52')];_0x3801ca['order']=qs[_0x804a('0x48')](_0x271451[_0x804a('0x40')][_0x804a('0x48')]);_0x3801ca['where']=qs[_0x804a('0x62')](_[_0x804a('0x63')](_0x271451[_0x804a('0x40')],_0x13bedc['filters']));if(_0x271451[_0x804a('0x40')][_0x804a('0x49')]){_0x3801ca[_0x804a('0x4d')]=_[_0x804a('0x4a')](_0x3801ca[_0x804a('0x4d')],{'$or':_[_0x804a('0x3f')](_0x3801ca[_0x804a('0x43')],function(_0x29ff6f){var _0x341589={};_0x341589[_0x29ff6f]={'$like':'%'+_0x271451[_0x804a('0x40')]['filter']+'%'};return _0x341589;})});}_0x3801ca=_[_0x804a('0x4a')]({},_0x3801ca,_0x271451[_0x804a('0x4c')]);return _0x17223c[_0x804a('0x70')](_0x3801ca);}})[_0x804a('0x20')](function(_0x189b1d){if(_0x189b1d){_0x37c8b5=_0x189b1d['length'];if(!_0x271451[_0x804a('0x40')][_0x804a('0x45')](_0x804a('0x46'))){_0x3801ca[_0x804a('0x30')]=qs[_0x804a('0x30')](_0x271451[_0x804a('0x40')]['limit']);_0x3801ca[_0x804a('0x2e')]=qs[_0x804a('0x2e')](_0x271451['query'][_0x804a('0x2e')]);}return _0x17223c[_0x804a('0x70')](_0x3801ca);}})[_0x804a('0x20')](function(_0x46f6a8){if(_0x46f6a8){return _0x46f6a8?{'count':_0x37c8b5,'rows':_0x46f6a8}:null;}})[_0x804a('0x20')](respondWithResult(_0x26a066,null))[_0x804a('0x50')](handleError(_0x26a066,null));};exports[_0x804a('0x71')]=function(_0x3d0445,_0x374f4e,_0x3f6db3){var _0x3d951a=_0x3d0445['body']['ids'];return db[_0x804a('0x72')][_0x804a('0x4f')]({'where':{'id':_0x3d951a},'attributes':['id'],'include':[{'model':db['User'],'as':_0x804a('0x73'),'attributes':['id',_0x804a('0x39'),_0x804a('0x74'),_0x804a('0x75'),'interface'],'raw':!![]}]})[_0x804a('0x20')](function(_0x4e543a){if(_0x4e543a){var _0x51ecd9=_[_0x804a('0x76')](_0x4e543a,function(_0x3b6c50){var _0x456959=_0x3b6c50[_0x804a('0x56')]({'plain':!![]});return _0x456959['Agents'];});return db['ChatQueue']['find']({'where':{'id':_0x3d0445[_0x804a('0x51')]['id']}})[_0x804a('0x20')](function(_0x4ce6b0){return db[_0x804a('0x77')]['transaction'](function(_0x239790){return _0x4ce6b0[_0x804a('0x71')](_0x3d951a,{'transaction':_0x239790})[_0x804a('0x20')](function(){return BPromise[_0x804a('0x78')](_0x51ecd9,function(_0xf0447a){return db[_0x804a('0x61')][_0x804a('0x79')]({'where':{'UserId':_0xf0447a['id'],'ChatQueueId':_0x3d0445[_0x804a('0x51')]['id']},'transaction':_0x239790});});})[_0x804a('0x20')](function(){_0x51ecd9['forEach'](function(_0x40e7e0){socket[_0x804a('0x7a')](_0x804a('0x7b'),{'UserId':_0x40e7e0['id'],'ChatQueueId':_0x4ce6b0['id']});});});});});}})[_0x804a('0x20')](respondWithStatusCode(_0x374f4e,null))['catch'](handleError(_0x374f4e,null));};exports['removeTeams']=function(_0x272d5d,_0x236db3,_0x330e21){return db[_0x804a('0x72')][_0x804a('0x4f')]({'where':{'id':_0x272d5d[_0x804a('0x40')][_0x804a('0x7c')]},'attributes':['id'],'include':[{'model':db[_0x804a('0x65')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x804a('0x20')](handleEntityNotFound(_0x236db3,null))[_0x804a('0x20')](function(_0xe97e53){var _0x50f5d5=_[_0x804a('0x3f')](_0xe97e53,'id');var _0x19e438=[];var _0x26a9ef=[];var _0x171060=squel[_0x804a('0x7d')]();_0x171060[_0x804a('0x7e')](_0x804a('0x7f'))[_0x804a('0x80')]('team_has_chat_queues','tq')[_0x804a('0x81')](_0x804a('0x82'),'ut',_0x804a('0x83'))[_0x804a('0x4d')](_0x804a('0x84'),_0x272d5d[_0x804a('0x51')]['id']);for(var _0x30af29=0x0;_0x30af29<_0xe97e53['length'];_0x30af29+=0x1){let _0x31bb40=_0xe97e53[_0x30af29];for(var _0x470d96=0x0;_0x470d96<_0x31bb40[_0x804a('0x73')][_0x804a('0x53')];_0x470d96+=0x1){let _0x2fa82b=_0x31bb40['Agents'][_0x470d96];var _0x1efdbe=_0x171060['clone']();_0x1efdbe[_0x804a('0x4d')](_0x804a('0x85'),_0x2fa82b['id']);_0x26a9ef['push'](db[_0x804a('0x77')][_0x804a('0x40')](_0x1efdbe[_0x804a('0x86')](),{'type':db[_0x804a('0x77')][_0x804a('0x87')]['SELECT']})[_0x804a('0x20')](function(_0x21f3a8){if(_0x21f3a8[_0x804a('0x53')]===0x1){return _0x2fa82b['id'];}else{var _0x3ef5f4=_[_0x804a('0x88')](_[_0x804a('0x3f')](_0x21f3a8,'TeamId'),function(_0x3ecbee){return _['includes'](_0x50f5d5,_0x3ecbee);});if(_0x3ef5f4){return _0x2fa82b['id'];}}}));}}return BPromise[_0x804a('0x89')](_0x26a9ef)[_0x804a('0x20')](function(_0x341732){_0x19e438=_(_0x19e438)['union'](_0x341732)[_0x804a('0x8a')]()['value']();return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x272d5d[_0x804a('0x51')]['id']}})[_0x804a('0x20')](function(_0x4f3045){return db[_0x804a('0x77')]['transaction'](function(_0x41db69){return _0x4f3045[_0x804a('0x8b')](_0x272d5d['query']['ids'],{'transaction':_0x41db69})['then'](function(){if(!_[_0x804a('0x8c')](_0x19e438)){return _0x4f3045[_0x804a('0x8d')](_0x19e438,{'transaction':_0x41db69});}})[_0x804a('0x20')](function(){_0x19e438[_0x804a('0x8e')](function(_0x3f60e5){socket[_0x804a('0x7a')](_0x804a('0x8f'),{'UserId':_0x3f60e5,'ChatQueueId':_0x4f3045['id']});});});});});});})[_0x804a('0x20')](respondWithStatusCode(_0x236db3,null))[_0x804a('0x50')](handleError(_0x236db3,null));};exports[_0x804a('0x90')]=function(_0x3bf4bb,_0x2d3edc,_0x1eed76){return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x3bf4bb['params']['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x2d3edc,null))['then'](function(_0x1c048a){if(_0x1c048a){return _0x1c048a['addAgents'](_0x3bf4bb['body'][_0x804a('0x7c')],_[_0x804a('0x91')](_0x3bf4bb[_0x804a('0x5d')],['ids','id'])||{})[_0x804a('0x92')](function(_0x5dc4f9){for(var _0xcfd701=0x0;_0xcfd701<_0x3bf4bb[_0x804a('0x5d')][_0x804a('0x7c')][_0x804a('0x53')];_0xcfd701+=0x1){socket[_0x804a('0x7a')](_0x804a('0x7b'),{'UserId':Number(_0x3bf4bb[_0x804a('0x5d')][_0x804a('0x7c')][_0xcfd701]),'ChatQueueId':Number(_0x3bf4bb[_0x804a('0x51')]['id'])});}return _0x5dc4f9;});}})[_0x804a('0x20')](respondWithResult(_0x2d3edc,null))[_0x804a('0x50')](handleError(_0x2d3edc,null));};exports['removeAgents']=function(_0x4c3563,_0x193f1f,_0x479fc2){return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x4c3563[_0x804a('0x51')]['id']}})['then'](handleEntityNotFound(_0x193f1f,null))[_0x804a('0x20')](function(_0x570155){if(_0x570155){return _0x570155[_0x804a('0x8d')](_0x4c3563['query'][_0x804a('0x7c')])[_0x804a('0x20')](function(){if(_[_0x804a('0x93')](_0x4c3563[_0x804a('0x40')]['ids'])){for(var _0x22368c=0x0;_0x22368c<_0x4c3563['query'][_0x804a('0x7c')][_0x804a('0x53')];_0x22368c+=0x1){socket['emit'](_0x804a('0x8f'),{'UserId':Number(_0x4c3563[_0x804a('0x40')][_0x804a('0x7c')][_0x22368c]),'ChatQueueId':Number(_0x4c3563['params']['id'])});}}else{socket[_0x804a('0x7a')](_0x804a('0x8f'),{'UserId':Number(_0x4c3563['query'][_0x804a('0x7c')]),'ChatQueueId':Number(_0x4c3563[_0x804a('0x51')]['id'])});}});}})[_0x804a('0x20')](respondWithStatusCode(_0x193f1f,null))[_0x804a('0x50')](handleError(_0x193f1f,null));};exports[_0x804a('0x94')]=function(_0x52a22b,_0x373b93,_0x1128cc){var _0x3c6f1d={};var _0x39574b={};var _0x5070b4;var _0x5bc088;return db['ChatQueue'][_0x804a('0x60')]({'where':{'id':_0x52a22b[_0x804a('0x51')]['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x373b93,null))[_0x804a('0x20')](function(_0x5d83ef){if(_0x5d83ef){_0x5070b4=_0x5d83ef;_0x39574b[_0x804a('0x52')]=_['keys'](db['User']['rawAttributes']);_0x39574b[_0x804a('0x40')]=_[_0x804a('0x41')](_0x52a22b[_0x804a('0x40')]);_0x39574b[_0x804a('0x62')]=_['intersection'](_0x39574b[_0x804a('0x52')],_0x39574b['query']);_0x3c6f1d['attributes']=_[_0x804a('0x42')](_0x39574b['model'],qs[_0x804a('0x44')](_0x52a22b[_0x804a('0x40')][_0x804a('0x44')]));_0x3c6f1d['attributes']=_0x3c6f1d[_0x804a('0x43')][_0x804a('0x53')]?_0x3c6f1d[_0x804a('0x43')]:_0x39574b[_0x804a('0x52')];_0x3c6f1d[_0x804a('0x47')]=qs[_0x804a('0x48')](_0x52a22b[_0x804a('0x40')]['sort']);_0x3c6f1d[_0x804a('0x4d')]=qs[_0x804a('0x62')](_[_0x804a('0x63')](_0x52a22b[_0x804a('0x40')],_0x39574b[_0x804a('0x62')]));if(_0x52a22b['query'][_0x804a('0x49')]){_0x3c6f1d[_0x804a('0x4d')]=_['merge'](_0x3c6f1d['where'],{'$or':_[_0x804a('0x3f')](_0x3c6f1d[_0x804a('0x43')],function(_0x1928d1){var _0x1bae2c={};_0x1bae2c[_0x1928d1]={'$like':'%'+_0x52a22b['query'][_0x804a('0x49')]+'%'};return _0x1bae2c;})});}_0x3c6f1d=_[_0x804a('0x4a')]({},_0x3c6f1d,_0x52a22b['options']);return _0x5070b4['getAgents'](_0x3c6f1d);}})[_0x804a('0x20')](function(_0x51502e){if(_0x51502e){_0x5bc088=_0x51502e['length'];if(!_0x52a22b[_0x804a('0x40')][_0x804a('0x45')](_0x804a('0x46'))){_0x3c6f1d[_0x804a('0x30')]=qs['limit'](_0x52a22b[_0x804a('0x40')][_0x804a('0x30')]);_0x3c6f1d['offset']=qs['offset'](_0x52a22b[_0x804a('0x40')][_0x804a('0x2e')]);}return _0x5070b4[_0x804a('0x94')](_0x3c6f1d);}})[_0x804a('0x20')](function(_0x168e94){if(_0x168e94){return _0x168e94?{'count':_0x5bc088,'rows':_0x168e94}:null;}})[_0x804a('0x20')](respondWithResult(_0x373b93,null))[_0x804a('0x50')](handleError(_0x373b93,null));};
\ No newline at end of file
+var _0x6444=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','destroy','get','ChatQueues','UserProfileResource','sendStatus','stack','name','map','ChatQueue','rawAttributes','fieldName','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserChatQueue','User','findAndCountAll','UserId','agent','chatPause','createdAt','%s/%s','SIP','getTeams','Team','ids','Agents','online','voicePause','flatMap','sequelize','transaction','addTeams','findOrCreate','forEach','emit','userChatQueue:save','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','push','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','removeTeams','isEmpty','removeAgents','userChatQueue:remove','omit','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x4b1e1f,_0x3b4477){var _0x41a007=function(_0x4c7686){while(--_0x4c7686){_0x4b1e1f['push'](_0x4b1e1f['shift']());}};_0x41a007(++_0x3b4477);}(_0x6444,0x112));var _0x4644=function(_0x52becd,_0x4c9daf){_0x52becd=_0x52becd-0x0;var _0x1dbddc=_0x6444[_0x52becd];return _0x1dbddc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4644('0x0'));var jsonpatch=require(_0x4644('0x1'));var rp=require(_0x4644('0x2'));var moment=require(_0x4644('0x3'));var BPromise=require(_0x4644('0x4'));var Mustache=require(_0x4644('0x5'));var util=require(_0x4644('0x6'));var path=require(_0x4644('0x7'));var sox=require(_0x4644('0x8'));var csv=require('to-csv');var ejs=require(_0x4644('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4644('0xa'));var crypto=require('crypto');var jsforce=require(_0x4644('0xb'));var deskjs=require(_0x4644('0xc'));var toCsv=require(_0x4644('0xd'));var querystring=require('querystring');var Papa=require(_0x4644('0xe'));var Redis=require(_0x4644('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4644('0x10'));var as=require(_0x4644('0x11'));var hardwareService=require(_0x4644('0x12'));var logger=require('../../config/logger')(_0x4644('0x13'));var utils=require(_0x4644('0x14'));var config=require(_0x4644('0x15'));var licenseUtil=require(_0x4644('0x16'));var db=require(_0x4644('0x17'))['db'];config[_0x4644('0x18')]=_[_0x4644('0x19')](config[_0x4644('0x18')],{'host':_0x4644('0x1a'),'port':0x18eb});var socket=require(_0x4644('0x1b'))(new Redis(config['redis']));require('./chatQueue.socket')[_0x4644('0x1c')](socket);var jayson=require(_0x4644('0x1d'));var client=jayson[_0x4644('0x1e')][_0x4644('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x11195f,_0x5d6ce8,_0x19c60b,_0x5772cb){return new BPromise(function(_0x30d474,_0x3622b2){var _0x4f6663=_0x5772cb||client;return _0x4f6663[_0x4644('0x20')](_0x11195f,_0x19c60b)[_0x4644('0x21')](function(_0x28ed59){logger[_0x4644('0x22')](_0x4644('0x23'),_0x5d6ce8,_0x4644('0x24'));logger['debug'](_0x4644('0x25'),_0x5d6ce8,_0x4644('0x24'),JSON[_0x4644('0x26')](_0x28ed59));if(_0x28ed59[_0x4644('0x27')]){if(_0x28ed59['error'][_0x4644('0x28')]===0x1f4){logger[_0x4644('0x27')](_0x4644('0x23'),_0x5d6ce8,_0x28ed59['error'][_0x4644('0x29')]);return _0x3622b2(_0x28ed59['error'][_0x4644('0x29')]);}logger[_0x4644('0x27')](_0x4644('0x23'),_0x5d6ce8,_0x28ed59[_0x4644('0x27')][_0x4644('0x29')]);return _0x30d474(_0x28ed59['error'][_0x4644('0x29')]);}else{logger['info'](_0x4644('0x23'),_0x5d6ce8,'request\x20sent');_0x30d474(_0x28ed59[_0x4644('0x2a')][_0x4644('0x29')]);}})['catch'](function(_0x2ba17e){logger[_0x4644('0x27')](_0x4644('0x23'),_0x5d6ce8,_0x2ba17e);_0x3622b2(_0x2ba17e);});});}function respondWithStatusCode(_0x2008b6,_0x17a12e){_0x17a12e=_0x17a12e||0xcc;return function(_0x5a6d35){if(_0x5a6d35){return _0x2008b6['sendStatus'](_0x17a12e);}return _0x2008b6[_0x4644('0x2b')](_0x17a12e)[_0x4644('0x2c')]();};}function respondWithResult(_0x463971,_0x1d1a42){_0x1d1a42=_0x1d1a42||0xc8;return function(_0x41552c){if(_0x41552c){return _0x463971[_0x4644('0x2b')](_0x1d1a42)[_0x4644('0x2d')](_0x41552c);}};}function respondWithFilteredResult(_0x7fff05,_0x588a8b){return function(_0x1fe51f){if(_0x1fe51f){var _0x388f4b=typeof _0x588a8b[_0x4644('0x2e')]===_0x4644('0x2f')&&typeof _0x588a8b['limit']===_0x4644('0x2f');var _0x15341e=_0x1fe51f[_0x4644('0x30')];var _0x2dffbb=_0x388f4b?0x0:_0x588a8b[_0x4644('0x2e')];var _0x45dc2f=_0x388f4b?_0x1fe51f[_0x4644('0x30')]:_0x588a8b[_0x4644('0x2e')]+_0x588a8b[_0x4644('0x31')];var _0x19dfca;if(_0x45dc2f>=_0x15341e){_0x45dc2f=_0x15341e;_0x19dfca=0xc8;}else{_0x19dfca=0xce;}_0x7fff05['status'](_0x19dfca);return _0x7fff05[_0x4644('0x32')](_0x4644('0x33'),_0x2dffbb+'-'+_0x45dc2f+'/'+_0x15341e)[_0x4644('0x2d')](_0x1fe51f);}return null;};}function patchUpdates(_0x40c2a0){return function(_0x5814cf){try{jsonpatch['apply'](_0x5814cf,_0x40c2a0,!![]);}catch(_0x4f3b33){return BPromise[_0x4644('0x34')](_0x4f3b33);}return _0x5814cf[_0x4644('0x35')]();};}function saveUpdates(_0x84a519,_0x2d5720){return function(_0x1d9e1b){if(_0x1d9e1b){return _0x1d9e1b['update'](_0x84a519)[_0x4644('0x21')](function(_0x37c1ce){return _0x37c1ce;});}return null;};}function removeEntity(_0x41077b,_0x1b383b){return function(_0x2180c2){if(_0x2180c2){return _0x2180c2[_0x4644('0x36')]()[_0x4644('0x21')](function(){var _0x22ce6c=_0x2180c2[_0x4644('0x37')]({'plain':!![]});var _0x45290d=_0x4644('0x38');return db[_0x4644('0x39')]['destroy']({'where':{'type':_0x45290d,'resourceId':_0x22ce6c['id']}})[_0x4644('0x21')](function(){return _0x2180c2;});})[_0x4644('0x21')](function(){_0x41077b[_0x4644('0x2b')](0xcc)[_0x4644('0x2c')]();});}};}function handleEntityNotFound(_0x4358ae,_0x22c9c5){return function(_0xca218e){if(!_0xca218e){_0x4358ae[_0x4644('0x3a')](0x194);}return _0xca218e;};}function handleError(_0x5437a9,_0x199677){_0x199677=_0x199677||0x1f4;return function(_0x562941){logger[_0x4644('0x27')](_0x562941[_0x4644('0x3b')]);if(_0x562941[_0x4644('0x3c')]){delete _0x562941[_0x4644('0x3c')];}_0x5437a9['status'](_0x199677)['send'](_0x562941);};}exports['index']=function(_0x200a53,_0x49ea40){var _0x1722b6={},_0x15195e={},_0x1a7eb5={'count':0x0,'rows':[]};var _0xb2494=_[_0x4644('0x3d')](db[_0x4644('0x3e')][_0x4644('0x3f')],function(_0x1c95d3){return{'name':_0x1c95d3[_0x4644('0x40')],'type':_0x1c95d3['type']['key']};});_0x15195e[_0x4644('0x41')]=_[_0x4644('0x3d')](_0xb2494,_0x4644('0x3c'));_0x15195e[_0x4644('0x42')]=_[_0x4644('0x43')](_0x200a53[_0x4644('0x42')]);_0x15195e['filters']=_[_0x4644('0x44')](_0x15195e['model'],_0x15195e[_0x4644('0x42')]);_0x1722b6['attributes']=_[_0x4644('0x44')](_0x15195e[_0x4644('0x41')],qs[_0x4644('0x45')](_0x200a53[_0x4644('0x42')][_0x4644('0x45')]));_0x1722b6[_0x4644('0x46')]=_0x1722b6[_0x4644('0x46')][_0x4644('0x47')]?_0x1722b6[_0x4644('0x46')]:_0x15195e[_0x4644('0x41')];if(!_0x200a53[_0x4644('0x42')][_0x4644('0x48')](_0x4644('0x49'))){_0x1722b6[_0x4644('0x31')]=qs['limit'](_0x200a53[_0x4644('0x42')][_0x4644('0x31')]);_0x1722b6[_0x4644('0x2e')]=qs[_0x4644('0x2e')](_0x200a53[_0x4644('0x42')][_0x4644('0x2e')]);}_0x1722b6[_0x4644('0x4a')]=qs['sort'](_0x200a53[_0x4644('0x42')][_0x4644('0x4b')]);_0x1722b6[_0x4644('0x4c')]=qs[_0x4644('0x4d')](_[_0x4644('0x4e')](_0x200a53[_0x4644('0x42')],_0x15195e[_0x4644('0x4d')]),_0xb2494);if(_0x200a53[_0x4644('0x42')][_0x4644('0x4f')]){_0x1722b6['where']=_[_0x4644('0x50')](_0x1722b6[_0x4644('0x4c')],{'$or':_[_0x4644('0x3d')](_0xb2494,function(_0x3de003){if(_0x3de003['type']!==_0x4644('0x51')){var _0x1ddbf2={};_0x1ddbf2[_0x3de003[_0x4644('0x3c')]]={'$like':'%'+_0x200a53['query'][_0x4644('0x4f')]+'%'};return _0x1ddbf2;}})});}_0x1722b6=_[_0x4644('0x50')]({},_0x1722b6,_0x200a53[_0x4644('0x52')]);var _0x3dd73f={'where':_0x1722b6['where']};return db[_0x4644('0x3e')][_0x4644('0x30')](_0x3dd73f)['then'](function(_0x2971f0){_0x1a7eb5[_0x4644('0x30')]=_0x2971f0;if(_0x200a53['query']['includeAll']){_0x1722b6[_0x4644('0x53')]=[{'all':!![]}];}return db[_0x4644('0x3e')][_0x4644('0x54')](_0x1722b6);})[_0x4644('0x21')](function(_0x58c783){_0x1a7eb5[_0x4644('0x55')]=_0x58c783;return _0x1a7eb5;})[_0x4644('0x21')](respondWithFilteredResult(_0x49ea40,_0x1722b6))[_0x4644('0x56')](handleError(_0x49ea40,null));};exports[_0x4644('0x57')]=function(_0x285504,_0x23c6a2){var _0x49dd27={'raw':!![],'where':{'id':_0x285504[_0x4644('0x58')]['id']}},_0x4fd6f9={};_0x4fd6f9['model']=_[_0x4644('0x43')](db[_0x4644('0x3e')][_0x4644('0x3f')]);_0x4fd6f9[_0x4644('0x42')]=_[_0x4644('0x43')](_0x285504[_0x4644('0x42')]);_0x4fd6f9['filters']=_['intersection'](_0x4fd6f9[_0x4644('0x41')],_0x4fd6f9[_0x4644('0x42')]);_0x49dd27[_0x4644('0x46')]=_[_0x4644('0x44')](_0x4fd6f9['model'],qs[_0x4644('0x45')](_0x285504[_0x4644('0x42')][_0x4644('0x45')]));_0x49dd27[_0x4644('0x46')]=_0x49dd27['attributes'][_0x4644('0x47')]?_0x49dd27['attributes']:_0x4fd6f9[_0x4644('0x41')];if(_0x285504[_0x4644('0x42')]['includeAll']){_0x49dd27['include']=[{'all':!![]}];}_0x49dd27=_[_0x4644('0x50')]({},_0x49dd27,_0x285504[_0x4644('0x52')]);return db[_0x4644('0x3e')][_0x4644('0x59')](_0x49dd27)['then'](handleEntityNotFound(_0x23c6a2,null))['then'](respondWithResult(_0x23c6a2,null))['catch'](handleError(_0x23c6a2,null));};exports['create']=function(_0x3f4a0e,_0x395675){return db['ChatQueue']['create'](_0x3f4a0e[_0x4644('0x5a')],{})[_0x4644('0x21')](function(_0x4b82d0){var _0x4dec68=_0x3f4a0e['user']['get']({'plain':!![]});if(!_0x4dec68)throw new Error(_0x4644('0x5b'));if(_0x4dec68['role']===_0x4644('0x5c')){var _0x4a950b=_0x4b82d0[_0x4644('0x37')]({'plain':!![]});var _0x4161dc=_0x4644('0x38');return db[_0x4644('0x5d')]['find']({'where':{'name':_0x4161dc,'userProfileId':_0x4dec68[_0x4644('0x5e')]},'raw':!![]})[_0x4644('0x21')](function(_0x7139d5){if(_0x7139d5&&_0x7139d5[_0x4644('0x5f')]===0x0){return db[_0x4644('0x39')]['create']({'name':_0x4a950b[_0x4644('0x3c')],'resourceId':_0x4a950b['id'],'type':_0x7139d5[_0x4644('0x3c')],'sectionId':_0x7139d5['id']},{})[_0x4644('0x21')](function(){return _0x4b82d0;});}else{return _0x4b82d0;}})[_0x4644('0x56')](function(_0x59660a){logger[_0x4644('0x27')](_0x4644('0x60'),_0x59660a);throw _0x59660a;});}return _0x4b82d0;})[_0x4644('0x21')](respondWithResult(_0x395675,0xc9))[_0x4644('0x56')](handleError(_0x395675,null));};exports[_0x4644('0x61')]=function(_0x280afb,_0xf965d4){if(_0x280afb[_0x4644('0x5a')]['id']){delete _0x280afb['body']['id'];}return db[_0x4644('0x3e')]['find']({'where':{'id':_0x280afb['params']['id']}})['then'](handleEntityNotFound(_0xf965d4,null))[_0x4644('0x21')](saveUpdates(_0x280afb[_0x4644('0x5a')],null))[_0x4644('0x21')](respondWithResult(_0xf965d4,null))[_0x4644('0x56')](handleError(_0xf965d4,null));};exports['destroy']=function(_0x5937c8,_0x329c84){return db[_0x4644('0x3e')]['find']({'where':{'id':_0x5937c8['params']['id']}})[_0x4644('0x21')](handleEntityNotFound(_0x329c84,null))['then'](removeEntity(_0x329c84,null))['catch'](handleError(_0x329c84,null));};exports['describe']=function(_0x5bc014,_0x2893b0){return db[_0x4644('0x3e')][_0x4644('0x62')]()[_0x4644('0x21')](respondWithResult(_0x2893b0,null))[_0x4644('0x56')](handleError(_0x2893b0,null));};exports[_0x4644('0x63')]=function(_0x62e0ab,_0x5eec0b,_0x5005a0){var _0x503008={'raw':!![],'where':{}},_0x587bd2={},_0x316ff1;return db[_0x4644('0x3e')][_0x4644('0x64')]({'where':{'id':_0x62e0ab['params']['id']}})[_0x4644('0x21')](handleEntityNotFound(_0x5eec0b,null))[_0x4644('0x21')](function(_0x76ba36){if(_0x76ba36){_0x316ff1=_0x76ba36[_0x4644('0x37')]({'plain':!![]});_0x587bd2[_0x4644('0x41')]=_['keys'](db[_0x4644('0x65')][_0x4644('0x3f')]);_0x587bd2['query']=_[_0x4644('0x43')](_0x62e0ab[_0x4644('0x42')]);_0x587bd2[_0x4644('0x4d')]=_[_0x4644('0x44')](_0x587bd2[_0x4644('0x41')],_0x587bd2[_0x4644('0x42')]);_0x503008[_0x4644('0x46')]=_['intersection'](_0x587bd2[_0x4644('0x41')],qs[_0x4644('0x45')](_0x62e0ab[_0x4644('0x42')]['fields']));_0x503008[_0x4644('0x46')]=_0x503008[_0x4644('0x46')][_0x4644('0x47')]?_0x503008[_0x4644('0x46')]:_0x587bd2[_0x4644('0x41')];if(!_0x62e0ab[_0x4644('0x42')][_0x4644('0x48')](_0x4644('0x49'))){_0x503008[_0x4644('0x31')]=qs[_0x4644('0x31')](_0x62e0ab[_0x4644('0x42')][_0x4644('0x31')]);_0x503008[_0x4644('0x2e')]=qs[_0x4644('0x2e')](_0x62e0ab['query'][_0x4644('0x2e')]);}_0x503008['order']=qs[_0x4644('0x4b')](_0x62e0ab['query']['sort']);_0x503008[_0x4644('0x4c')]=qs[_0x4644('0x4d')](_[_0x4644('0x4e')](_0x62e0ab[_0x4644('0x42')],_0x587bd2[_0x4644('0x4d')]));_0x503008['where']['ChatQueueId']=_0x76ba36['id'];if(_0x62e0ab[_0x4644('0x42')][_0x4644('0x4f')]){_0x503008[_0x4644('0x4c')]=_[_0x4644('0x50')](_0x503008['where'],{'$or':_['map'](_0x503008[_0x4644('0x46')],function(_0x10108a){var _0x3ac694={};_0x3ac694[_0x10108a]={'$like':'%'+_0x62e0ab[_0x4644('0x42')][_0x4644('0x4f')]+'%'};return _0x3ac694;})});}_0x503008=_[_0x4644('0x50')]({},_0x503008,_0x62e0ab[_0x4644('0x52')]);return db['UserChatQueue'][_0x4644('0x54')](_0x503008);}})[_0x4644('0x21')](function(_0x204aeb){if(_0x204aeb){return db[_0x4644('0x66')][_0x4644('0x67')]({'where':{'id':_[_0x4644('0x3d')](_0x204aeb,_0x4644('0x68')),'role':_0x4644('0x69')},'attributes':['id',_0x4644('0x3c'),_0x4644('0x6a'),'updatedAt',_0x4644('0x6b')]});}})[_0x4644('0x21')](function(_0x54bb67){if(_0x54bb67){return{'count':_0x54bb67[_0x4644('0x30')],'rows':_[_0x4644('0x3d')](_0x54bb67['rows'],function(_0x483133){return{'membername':_0x483133[_0x4644('0x3c')],'UserId':_0x483133['id'],'queue_name':_0x316ff1['name'],'ChatQueueId':_0x316ff1['id'],'interface':util['format'](_0x4644('0x6c'),_0x4644('0x6d'),_0x483133[_0x4644('0x3c')]),'penalty':0x0,'paused':_0x483133[_0x4644('0x6a')],'createdAt':_0x483133[_0x4644('0x6b')],'updatedAt':_0x483133['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x4644('0x21')](respondWithFilteredResult(_0x5eec0b,_0x503008))[_0x4644('0x56')](handleError(_0x5eec0b,null));};exports[_0x4644('0x6e')]=function(_0x18a793,_0xe9cdc1,_0x5d8551){var _0x59294d={};var _0x3cf457={};var _0x377f51;var _0x2ddd89;return db[_0x4644('0x3e')][_0x4644('0x64')]({'where':{'id':_0x18a793[_0x4644('0x58')]['id']}})['then'](handleEntityNotFound(_0xe9cdc1,null))[_0x4644('0x21')](function(_0x51bd98){if(_0x51bd98){_0x377f51=_0x51bd98;_0x3cf457['model']=_[_0x4644('0x43')](db[_0x4644('0x6f')][_0x4644('0x3f')]);_0x3cf457['query']=_[_0x4644('0x43')](_0x18a793[_0x4644('0x42')]);_0x3cf457[_0x4644('0x4d')]=_[_0x4644('0x44')](_0x3cf457[_0x4644('0x41')],_0x3cf457[_0x4644('0x42')]);_0x59294d['attributes']=_[_0x4644('0x44')](_0x3cf457['model'],qs[_0x4644('0x45')](_0x18a793[_0x4644('0x42')][_0x4644('0x45')]));_0x59294d['attributes']=_0x59294d['attributes'][_0x4644('0x47')]?_0x59294d[_0x4644('0x46')]:_0x3cf457[_0x4644('0x41')];_0x59294d['order']=qs['sort'](_0x18a793[_0x4644('0x42')]['sort']);_0x59294d[_0x4644('0x4c')]=qs[_0x4644('0x4d')](_[_0x4644('0x4e')](_0x18a793['query'],_0x3cf457[_0x4644('0x4d')]));if(_0x18a793['query']['filter']){_0x59294d[_0x4644('0x4c')]=_['merge'](_0x59294d[_0x4644('0x4c')],{'$or':_[_0x4644('0x3d')](_0x59294d[_0x4644('0x46')],function(_0x5e5144){var _0x1490f4={};_0x1490f4[_0x5e5144]={'$like':'%'+_0x18a793[_0x4644('0x42')][_0x4644('0x4f')]+'%'};return _0x1490f4;})});}_0x59294d=_[_0x4644('0x50')]({},_0x59294d,_0x18a793[_0x4644('0x52')]);return _0x377f51[_0x4644('0x6e')](_0x59294d);}})[_0x4644('0x21')](function(_0x6a3d35){if(_0x6a3d35){_0x2ddd89=_0x6a3d35[_0x4644('0x47')];if(!_0x18a793[_0x4644('0x42')][_0x4644('0x48')]('nolimit')){_0x59294d[_0x4644('0x31')]=qs['limit'](_0x18a793[_0x4644('0x42')]['limit']);_0x59294d[_0x4644('0x2e')]=qs[_0x4644('0x2e')](_0x18a793[_0x4644('0x42')][_0x4644('0x2e')]);}return _0x377f51[_0x4644('0x6e')](_0x59294d);}})[_0x4644('0x21')](function(_0x432168){if(_0x432168){return _0x432168?{'count':_0x2ddd89,'rows':_0x432168}:null;}})[_0x4644('0x21')](respondWithResult(_0xe9cdc1,null))[_0x4644('0x56')](handleError(_0xe9cdc1,null));};exports['addTeams']=function(_0x141c79,_0x39ea0e,_0x1730cd){var _0x35d0e1=_0x141c79['body'][_0x4644('0x70')];return db[_0x4644('0x6f')]['findAll']({'where':{'id':_0x35d0e1},'attributes':['id'],'include':[{'model':db[_0x4644('0x66')],'as':_0x4644('0x71'),'attributes':['id',_0x4644('0x3c'),_0x4644('0x72'),_0x4644('0x73'),'interface'],'raw':!![]}]})['then'](function(_0x508999){if(_0x508999){var _0x5a534f=_[_0x4644('0x74')](_0x508999,function(_0x12745c){var _0x2c64df=_0x12745c[_0x4644('0x37')]({'plain':!![]});return _0x2c64df[_0x4644('0x71')];});return db[_0x4644('0x3e')][_0x4644('0x59')]({'where':{'id':_0x141c79[_0x4644('0x58')]['id']}})[_0x4644('0x21')](function(_0xd4ab43){return db[_0x4644('0x75')][_0x4644('0x76')](function(_0x5afa19){return _0xd4ab43[_0x4644('0x77')](_0x35d0e1,{'transaction':_0x5afa19})[_0x4644('0x21')](function(){return BPromise['each'](_0x5a534f,function(_0x29dff6){return db[_0x4644('0x65')][_0x4644('0x78')]({'where':{'UserId':_0x29dff6['id'],'ChatQueueId':_0x141c79[_0x4644('0x58')]['id']},'transaction':_0x5afa19});});})[_0x4644('0x21')](function(){_0x5a534f[_0x4644('0x79')](function(_0xcedbb3){socket[_0x4644('0x7a')](_0x4644('0x7b'),{'UserId':_0xcedbb3['id'],'ChatQueueId':_0xd4ab43['id']});});});});});}})[_0x4644('0x21')](respondWithStatusCode(_0x39ea0e,null))['catch'](handleError(_0x39ea0e,null));};exports['removeTeams']=function(_0x30c565,_0x3983da,_0xdbfaa0){return db[_0x4644('0x6f')][_0x4644('0x54')]({'where':{'id':_0x30c565[_0x4644('0x42')]['ids']},'attributes':['id'],'include':[{'model':db[_0x4644('0x66')],'as':_0x4644('0x71'),'attributes':['id'],'raw':!![]}]})[_0x4644('0x21')](handleEntityNotFound(_0x3983da,null))['then'](function(_0x2ce008){var _0x5ad129=_[_0x4644('0x3d')](_0x2ce008,'id');var _0x3fd0d6=[];var _0x17e04d=[];var _0x297d21=squel[_0x4644('0x7c')]();_0x297d21['field'](_0x4644('0x7d'))[_0x4644('0x7e')]('team_has_chat_queues','tq')[_0x4644('0x7f')](_0x4644('0x80'),'ut',_0x4644('0x81'))[_0x4644('0x4c')](_0x4644('0x82'),_0x30c565[_0x4644('0x58')]['id']);for(var _0x4bdf51=0x0;_0x4bdf51<_0x2ce008[_0x4644('0x47')];_0x4bdf51+=0x1){let _0x26149d=_0x2ce008[_0x4bdf51];for(var _0x4dfe33=0x0;_0x4dfe33<_0x26149d[_0x4644('0x71')][_0x4644('0x47')];_0x4dfe33+=0x1){let _0x406779=_0x26149d[_0x4644('0x71')][_0x4dfe33];var _0x48e56d=_0x297d21[_0x4644('0x83')]();_0x48e56d[_0x4644('0x4c')]('ut.UserId\x20=\x20?',_0x406779['id']);_0x17e04d[_0x4644('0x84')](db[_0x4644('0x75')][_0x4644('0x42')](_0x48e56d['toString'](),{'type':db[_0x4644('0x75')][_0x4644('0x85')][_0x4644('0x86')]})[_0x4644('0x21')](function(_0x11a683){if(_0x11a683[_0x4644('0x47')]===0x1){return _0x406779['id'];}else{var _0x32057e=_[_0x4644('0x87')](_[_0x4644('0x3d')](_0x11a683,_0x4644('0x88')),function(_0x221473){return _[_0x4644('0x89')](_0x5ad129,_0x221473);});if(_0x32057e){return _0x406779['id'];}}}));}}return BPromise['all'](_0x17e04d)[_0x4644('0x21')](function(_0x27cd3b){_0x3fd0d6=_(_0x3fd0d6)[_0x4644('0x8a')](_0x27cd3b)[_0x4644('0x8b')]()[_0x4644('0x8c')]();return db[_0x4644('0x3e')][_0x4644('0x59')]({'where':{'id':_0x30c565[_0x4644('0x58')]['id']}})['then'](function(_0x21bfab){return db['sequelize'][_0x4644('0x76')](function(_0x5f0608){return _0x21bfab[_0x4644('0x8d')](_0x30c565[_0x4644('0x42')][_0x4644('0x70')],{'transaction':_0x5f0608})[_0x4644('0x21')](function(){if(!_[_0x4644('0x8e')](_0x3fd0d6)){return _0x21bfab[_0x4644('0x8f')](_0x3fd0d6,{'transaction':_0x5f0608});}})[_0x4644('0x21')](function(){_0x3fd0d6['forEach'](function(_0x5280d3){socket[_0x4644('0x7a')](_0x4644('0x90'),{'UserId':_0x5280d3,'ChatQueueId':_0x21bfab['id']});});});});});});})['then'](respondWithStatusCode(_0x3983da,null))[_0x4644('0x56')](handleError(_0x3983da,null));};exports['addAgents']=function(_0x335d42,_0x10eea2,_0x34d451){return db[_0x4644('0x3e')][_0x4644('0x59')]({'where':{'id':_0x335d42[_0x4644('0x58')]['id']}})[_0x4644('0x21')](handleEntityNotFound(_0x10eea2,null))[_0x4644('0x21')](function(_0x1bb52e){if(_0x1bb52e){return _0x1bb52e['addAgents'](_0x335d42[_0x4644('0x5a')][_0x4644('0x70')],_[_0x4644('0x91')](_0x335d42['body'],[_0x4644('0x70'),'id'])||{})['spread'](function(_0x5d28bc){for(var _0xe14dcf=0x0;_0xe14dcf<_0x335d42[_0x4644('0x5a')]['ids'][_0x4644('0x47')];_0xe14dcf+=0x1){socket[_0x4644('0x7a')](_0x4644('0x7b'),{'UserId':Number(_0x335d42['body'][_0x4644('0x70')][_0xe14dcf]),'ChatQueueId':Number(_0x335d42[_0x4644('0x58')]['id'])});}return _0x5d28bc;});}})[_0x4644('0x21')](respondWithResult(_0x10eea2,null))[_0x4644('0x56')](handleError(_0x10eea2,null));};exports[_0x4644('0x8f')]=function(_0x161310,_0x28b021,_0x53414d){return db[_0x4644('0x3e')][_0x4644('0x59')]({'where':{'id':_0x161310[_0x4644('0x58')]['id']}})[_0x4644('0x21')](handleEntityNotFound(_0x28b021,null))[_0x4644('0x21')](function(_0x581ce0){if(_0x581ce0){return _0x581ce0[_0x4644('0x8f')](_0x161310[_0x4644('0x42')][_0x4644('0x70')])['then'](function(){if(_['isArray'](_0x161310[_0x4644('0x42')][_0x4644('0x70')])){for(var _0x2afaa7=0x0;_0x2afaa7<_0x161310[_0x4644('0x42')][_0x4644('0x70')][_0x4644('0x47')];_0x2afaa7+=0x1){socket[_0x4644('0x7a')](_0x4644('0x90'),{'UserId':Number(_0x161310[_0x4644('0x42')][_0x4644('0x70')][_0x2afaa7]),'ChatQueueId':Number(_0x161310[_0x4644('0x58')]['id'])});}}else{socket['emit'](_0x4644('0x90'),{'UserId':Number(_0x161310[_0x4644('0x42')][_0x4644('0x70')]),'ChatQueueId':Number(_0x161310[_0x4644('0x58')]['id'])});}});}})[_0x4644('0x21')](respondWithStatusCode(_0x28b021,null))[_0x4644('0x56')](handleError(_0x28b021,null));};exports[_0x4644('0x92')]=function(_0x263c8e,_0x3f621d,_0x2c12ea){var _0x1eae81={};var _0xb6ffe3={};var _0x1afa32;var _0x5c5c63;return db[_0x4644('0x3e')][_0x4644('0x64')]({'where':{'id':_0x263c8e[_0x4644('0x58')]['id']}})[_0x4644('0x21')](handleEntityNotFound(_0x3f621d,null))[_0x4644('0x21')](function(_0x11ce2d){if(_0x11ce2d){_0x1afa32=_0x11ce2d;_0xb6ffe3[_0x4644('0x41')]=_[_0x4644('0x43')](db['User']['rawAttributes']);_0xb6ffe3[_0x4644('0x42')]=_[_0x4644('0x43')](_0x263c8e['query']);_0xb6ffe3[_0x4644('0x4d')]=_[_0x4644('0x44')](_0xb6ffe3['model'],_0xb6ffe3[_0x4644('0x42')]);_0x1eae81[_0x4644('0x46')]=_['intersection'](_0xb6ffe3[_0x4644('0x41')],qs[_0x4644('0x45')](_0x263c8e[_0x4644('0x42')][_0x4644('0x45')]));_0x1eae81[_0x4644('0x46')]=_0x1eae81[_0x4644('0x46')]['length']?_0x1eae81[_0x4644('0x46')]:_0xb6ffe3['model'];_0x1eae81['order']=qs[_0x4644('0x4b')](_0x263c8e[_0x4644('0x42')]['sort']);_0x1eae81[_0x4644('0x4c')]=qs['filters'](_['pick'](_0x263c8e[_0x4644('0x42')],_0xb6ffe3[_0x4644('0x4d')]));if(_0x263c8e[_0x4644('0x42')][_0x4644('0x4f')]){_0x1eae81[_0x4644('0x4c')]=_[_0x4644('0x50')](_0x1eae81[_0x4644('0x4c')],{'$or':_[_0x4644('0x3d')](_0x1eae81['attributes'],function(_0xe49b0c){var _0x44714c={};_0x44714c[_0xe49b0c]={'$like':'%'+_0x263c8e[_0x4644('0x42')][_0x4644('0x4f')]+'%'};return _0x44714c;})});}_0x1eae81=_['merge']({},_0x1eae81,_0x263c8e[_0x4644('0x52')]);return _0x1afa32['getAgents'](_0x1eae81);}})[_0x4644('0x21')](function(_0x154d40){if(_0x154d40){_0x5c5c63=_0x154d40[_0x4644('0x47')];if(!_0x263c8e[_0x4644('0x42')][_0x4644('0x48')]('nolimit')){_0x1eae81['limit']=qs['limit'](_0x263c8e[_0x4644('0x42')]['limit']);_0x1eae81['offset']=qs[_0x4644('0x2e')](_0x263c8e[_0x4644('0x42')]['offset']);}return _0x1afa32[_0x4644('0x92')](_0x1eae81);}})[_0x4644('0x21')](function(_0x249c35){if(_0x249c35){return _0x249c35?{'count':_0x5c5c63,'rows':_0x249c35}:null;}})['then'](respondWithResult(_0x3f621d,null))[_0x4644('0x56')](handleError(_0x3f621d,null));};
\ No newline at end of file
index e4a77e2..ee0f7be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3c5=['ChatQueue','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x45b9b6,_0x183d64){var _0x37c2cb=function(_0x2b37f5){while(--_0x2b37f5){_0x45b9b6['push'](_0x45b9b6['shift']());}};_0x37c2cb(++_0x183d64);}(_0xf3c5,0x178));var _0x5f3c=function(_0x296b3c,_0x203828){_0x296b3c=_0x296b3c-0x0;var _0x53adfa=_0xf3c5[_0x296b3c];return _0x53adfa;};'use strict';var EventEmitter=require(_0x5f3c('0x0'));var ChatQueue=require(_0x5f3c('0x1'))['db'][_0x5f3c('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5f3c('0x3'),'afterDestroy':_0x5f3c('0x4')};function emitEvent(_0x270ffa){return function(_0x2fb3b3,_0x2a8c1c,_0x536888){ChatQueueEvents[_0x5f3c('0x5')](_0x270ffa+':'+_0x2fb3b3['id'],_0x2fb3b3);ChatQueueEvents[_0x5f3c('0x5')](_0x270ffa,_0x2fb3b3);_0x536888(null);};}for(var e in events){if(events[_0x5f3c('0x6')](e)){var event=events[e];ChatQueue[_0x5f3c('0x7')](e,emitEvent(event));}}module[_0x5f3c('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0x32f6=['remove','hook','exports','ChatQueue','setMaxListeners','update'];(function(_0x4ec58c,_0x3daded){var _0x398af2=function(_0x5292b4){while(--_0x5292b4){_0x4ec58c['push'](_0x4ec58c['shift']());}};_0x398af2(++_0x3daded);}(_0x32f6,0xbd));var _0x632f=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0x32f6[_0x5a776b];return _0xbbef59;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db'][_0x632f('0x0')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x632f('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x632f('0x2'),'afterDestroy':_0x632f('0x3')};function emitEvent(_0x1079f2){return function(_0x3b5c4a,_0x272348,_0x53a747){ChatQueueEvents['emit'](_0x1079f2+':'+_0x3b5c4a['id'],_0x3b5c4a);ChatQueueEvents['emit'](_0x1079f2,_0x3b5c4a);_0x53a747(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0x632f('0x4')](e,emitEvent(event));}}module[_0x632f('0x5')]=ChatQueueEvents;
\ No newline at end of file
index d18e737..ef81666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x678f=['chat_queues','lodash','../../config/logger','api','moment','bluebird','path','rimraf','ChatQueue'];(function(_0x45d9ff,_0x3e5ed4){var _0x34bb61=function(_0x5cb4d1){while(--_0x5cb4d1){_0x45d9ff['push'](_0x45d9ff['shift']());}};_0x34bb61(++_0x3e5ed4);}(_0x678f,0xbe));var _0xf678=function(_0x59e862,_0x477bf2){_0x59e862=_0x59e862-0x0;var _0x1a25ee=_0x678f[_0x59e862];return _0x1a25ee;};'use strict';var _=require(_0xf678('0x0'));var util=require('util');var logger=require(_0xf678('0x1'))(_0xf678('0x2'));var moment=require(_0xf678('0x3'));var BPromise=require(_0xf678('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf678('0x5'));var rimraf=require(_0xf678('0x6'));var config=require('../../config/environment');var attributes=require('./chatQueue.attributes');module['exports']=function(_0x28398b,_0x223405){return _0x28398b['define'](_0xf678('0x7'),attributes,{'tableName':_0xf678('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd94c=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatQueue','chat_queues','lodash'];(function(_0x319cb9,_0x4b8d35){var _0x1735fc=function(_0x43b061){while(--_0x43b061){_0x319cb9['push'](_0x319cb9['shift']());}};_0x1735fc(++_0x4b8d35);}(_0xd94c,0x151));var _0xcd94=function(_0x57d53b,_0x4b0c2f){_0x57d53b=_0x57d53b-0x0;var _0x13a2df=_0xd94c[_0x57d53b];return _0x13a2df;};'use strict';var _=require(_0xcd94('0x0'));var util=require(_0xcd94('0x1'));var logger=require('../../config/logger')(_0xcd94('0x2'));var moment=require(_0xcd94('0x3'));var BPromise=require(_0xcd94('0x4'));var rp=require(_0xcd94('0x5'));var fs=require('fs');var path=require(_0xcd94('0x6'));var rimraf=require(_0xcd94('0x7'));var config=require(_0xcd94('0x8'));var attributes=require('./chatQueue.attributes');module[_0xcd94('0x9')]=function(_0x5a3a4d,_0x582a6f){return _0x5a3a4d[_0xcd94('0xa')](_0xcd94('0xb'),attributes,{'tableName':_0xcd94('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ca6d9c..2a5d20e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0472=['socket.io-emitter','./chatQueue.socket','register','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetChatQueue','ChatQueue','options','raw','where','attributes','limit','include','map','model','then','ShowChatQueue','find','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','localhost'];(function(_0x19bda1,_0x1030bc){var _0xff9459=function(_0x1ab496){while(--_0x1ab496){_0x19bda1['push'](_0x19bda1['shift']());}};_0xff9459(++_0x1030bc);}(_0x0472,0x197));var _0x2047=function(_0x8ded8d,_0x5f5a40){_0x8ded8d=_0x8ded8d-0x0;var _0x5a68e5=_0x0472[_0x8ded8d];return _0x5a68e5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2047('0x0'));var BPromise=require('bluebird');var rs=require(_0x2047('0x1'));var fs=require('fs');var Redis=require(_0x2047('0x2'));var db=require(_0x2047('0x3'))['db'];var utils=require(_0x2047('0x4'));var logger=require('../../config/logger')(_0x2047('0x5'));var config=require('../../config/environment');var jayson=require(_0x2047('0x6'));var client=jayson[_0x2047('0x7')][_0x2047('0x8')]({'port':0x232a});config[_0x2047('0x9')]=_['defaults'](config[_0x2047('0x9')],{'host':_0x2047('0xa'),'port':0x18eb});var socket=require(_0x2047('0xb'))(new Redis(config[_0x2047('0x9')]));require(_0x2047('0xc'))[_0x2047('0xd')](socket);function respondWithRpcPromise(_0x223c89,_0x3f3bb1,_0x25c437){return new BPromise(function(_0x5e6bf2,_0x17f863){return client[_0x2047('0xe')](_0x223c89,_0x25c437)['then'](function(_0x16012f){logger[_0x2047('0xf')](_0x2047('0x10'),_0x3f3bb1,_0x2047('0x11'));logger[_0x2047('0x12')](_0x2047('0x13'),_0x3f3bb1,_0x2047('0x11'),JSON[_0x2047('0x14')](_0x16012f));if(_0x16012f[_0x2047('0x15')]){if(_0x16012f[_0x2047('0x15')][_0x2047('0x16')]===0x1f4){logger[_0x2047('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3f3bb1,_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);return _0x17f863(_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);}logger[_0x2047('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3f3bb1,_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);return _0x5e6bf2(_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);}else{logger[_0x2047('0xf')](_0x2047('0x10'),_0x3f3bb1,_0x2047('0x11'));_0x5e6bf2(_0x16012f['result']['message']);}})[_0x2047('0x18')](function(_0x115741){logger[_0x2047('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3f3bb1,_0x115741);_0x17f863(_0x115741);});});}exports[_0x2047('0x19')]=function(_0x2843bc){var _0x5a5af5=this;return new Promise(function(_0x49f495,_0x42dcb0){return db[_0x2047('0x1a')]['findAll']({'raw':_0x2843bc[_0x2047('0x1b')]?_0x2843bc[_0x2047('0x1b')][_0x2047('0x1c')]===undefined?!![]:![]:!![],'where':_0x2843bc['options']?_0x2843bc['options'][_0x2047('0x1d')]||null:null,'attributes':_0x2843bc['options']?_0x2843bc['options'][_0x2047('0x1e')]||null:null,'limit':_0x2843bc[_0x2047('0x1b')]?_0x2843bc[_0x2047('0x1b')][_0x2047('0x1f')]||null:null,'include':_0x2843bc[_0x2047('0x1b')]?_0x2843bc['options'][_0x2047('0x20')]?_[_0x2047('0x21')](_0x2843bc[_0x2047('0x1b')][_0x2047('0x20')],function(_0x2d8f40){return{'model':db[_0x2d8f40[_0x2047('0x22')]],'as':_0x2d8f40['as'],'attributes':_0x2d8f40[_0x2047('0x1e')],'include':_0x2d8f40['include']?_[_0x2047('0x21')](_0x2d8f40[_0x2047('0x20')],function(_0xf5518e){return{'model':db[_0xf5518e['model']],'as':_0xf5518e['as'],'attributes':_0xf5518e['attributes'],'include':_0xf5518e['include']?_[_0x2047('0x21')](_0xf5518e[_0x2047('0x20')],function(_0x1a90af){return{'model':db[_0x1a90af[_0x2047('0x22')]],'as':_0x1a90af['as'],'attributes':_0x1a90af['attributes']};}):[]};}):[]};}):[]:[]})[_0x2047('0x23')](function(_0x2a3dcb){logger[_0x2047('0xf')](_0x2047('0x19'),_0x2843bc);logger[_0x2047('0x12')](_0x2047('0x19'),_0x2843bc,JSON[_0x2047('0x14')](_0x2a3dcb));_0x49f495(_0x2a3dcb);})[_0x2047('0x18')](function(_0x31eb73){logger['error'](_0x2047('0x19'),_0x31eb73[_0x2047('0x17')],_0x2843bc);_0x42dcb0(_0x5a5af5[_0x2047('0x15')](0x1f4,_0x31eb73[_0x2047('0x17')]));});});};exports[_0x2047('0x24')]=function(_0x35a786){var _0x16e55c=this;return new Promise(function(_0x2b9b4a,_0x37e832){return db[_0x2047('0x1a')][_0x2047('0x25')]({'raw':_0x35a786[_0x2047('0x1b')]?_0x35a786[_0x2047('0x1b')][_0x2047('0x1c')]===undefined?!![]:![]:!![],'where':_0x35a786['options']?_0x35a786[_0x2047('0x1b')][_0x2047('0x1d')]||null:null,'attributes':_0x35a786[_0x2047('0x1b')]?_0x35a786[_0x2047('0x1b')][_0x2047('0x1e')]||null:null,'include':_0x35a786[_0x2047('0x1b')]?_0x35a786[_0x2047('0x1b')][_0x2047('0x20')]?_[_0x2047('0x21')](_0x35a786[_0x2047('0x1b')][_0x2047('0x20')],function(_0x30c00b){return{'model':db[_0x30c00b[_0x2047('0x22')]],'as':_0x30c00b['as'],'attributes':_0x30c00b[_0x2047('0x1e')],'include':_0x30c00b['include']?_['map'](_0x30c00b[_0x2047('0x20')],function(_0x3b4ebd){return{'model':db[_0x3b4ebd[_0x2047('0x22')]],'as':_0x3b4ebd['as'],'attributes':_0x3b4ebd[_0x2047('0x1e')],'include':_0x3b4ebd[_0x2047('0x20')]?_['map'](_0x3b4ebd['include'],function(_0xb4ae91){return{'model':db[_0xb4ae91[_0x2047('0x22')]],'as':_0xb4ae91['as'],'attributes':_0xb4ae91['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1b9863){logger[_0x2047('0xf')]('ShowChatQueue',_0x35a786);logger[_0x2047('0x12')](_0x2047('0x24'),_0x35a786,JSON[_0x2047('0x14')](_0x1b9863));_0x2b9b4a(_0x1b9863);})[_0x2047('0x18')](function(_0x9a02da){logger[_0x2047('0x15')](_0x2047('0x24'),_0x9a02da[_0x2047('0x17')],_0x35a786);_0x37e832(_0x16e55c['error'](0x1f4,_0x9a02da[_0x2047('0x17')]));});});};
\ No newline at end of file
+var _0xa664=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','raw','where','attributes','limit','include','map','model','GetChatQueue','ShowChatQueue','util','moment','bluebird','randomstring','../../mysqldb','rpc'];(function(_0xf4666e,_0x571140){var _0x1853f1=function(_0x5160a5){while(--_0x5160a5){_0xf4666e['push'](_0xf4666e['shift']());}};_0x1853f1(++_0x571140);}(_0xa664,0x132));var _0x4a66=function(_0x125919,_0x2c5909){_0x125919=_0x125919-0x0;var _0x22f531=_0xa664[_0x125919];return _0x22f531;};'use strict';var _=require('lodash');var util=require(_0x4a66('0x0'));var moment=require(_0x4a66('0x1'));var BPromise=require(_0x4a66('0x2'));var rs=require(_0x4a66('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a66('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4a66('0x5'));var config=require(_0x4a66('0x6'));var jayson=require(_0x4a66('0x7'));var client=jayson[_0x4a66('0x8')][_0x4a66('0x9')]({'port':0x232a});config[_0x4a66('0xa')]=_[_0x4a66('0xb')](config['redis'],{'host':_0x4a66('0xc'),'port':0x18eb});var socket=require(_0x4a66('0xd'))(new Redis(config[_0x4a66('0xa')]));require(_0x4a66('0xe'))['register'](socket);function respondWithRpcPromise(_0x1f553d,_0x124ed0,_0x5b7ccd){return new BPromise(function(_0x11b0b7,_0x33430f){return client[_0x4a66('0xf')](_0x1f553d,_0x5b7ccd)[_0x4a66('0x10')](function(_0x2bebf3){logger[_0x4a66('0x11')](_0x4a66('0x12'),_0x124ed0,_0x4a66('0x13'));logger[_0x4a66('0x14')](_0x4a66('0x15'),_0x124ed0,_0x4a66('0x13'),JSON[_0x4a66('0x16')](_0x2bebf3));if(_0x2bebf3[_0x4a66('0x17')]){if(_0x2bebf3[_0x4a66('0x17')][_0x4a66('0x18')]===0x1f4){logger[_0x4a66('0x17')](_0x4a66('0x12'),_0x124ed0,_0x2bebf3['error'][_0x4a66('0x19')]);return _0x33430f(_0x2bebf3[_0x4a66('0x17')][_0x4a66('0x19')]);}logger[_0x4a66('0x17')](_0x4a66('0x12'),_0x124ed0,_0x2bebf3[_0x4a66('0x17')][_0x4a66('0x19')]);return _0x11b0b7(_0x2bebf3[_0x4a66('0x17')]['message']);}else{logger[_0x4a66('0x11')](_0x4a66('0x12'),_0x124ed0,_0x4a66('0x13'));_0x11b0b7(_0x2bebf3[_0x4a66('0x1a')]['message']);}})[_0x4a66('0x1b')](function(_0x398374){logger[_0x4a66('0x17')]('ChatQueue,\x20%s,\x20%s',_0x124ed0,_0x398374);_0x33430f(_0x398374);});});}exports['GetChatQueue']=function(_0x1e01b8){var _0x83a690=this;return new Promise(function(_0x25fb2c,_0x4c78e1){return db['ChatQueue'][_0x4a66('0x1c')]({'raw':_0x1e01b8[_0x4a66('0x1d')]?_0x1e01b8[_0x4a66('0x1d')][_0x4a66('0x1e')]===undefined?!![]:![]:!![],'where':_0x1e01b8[_0x4a66('0x1d')]?_0x1e01b8[_0x4a66('0x1d')][_0x4a66('0x1f')]||null:null,'attributes':_0x1e01b8[_0x4a66('0x1d')]?_0x1e01b8[_0x4a66('0x1d')][_0x4a66('0x20')]||null:null,'limit':_0x1e01b8[_0x4a66('0x1d')]?_0x1e01b8[_0x4a66('0x1d')][_0x4a66('0x21')]||null:null,'include':_0x1e01b8[_0x4a66('0x1d')]?_0x1e01b8[_0x4a66('0x1d')][_0x4a66('0x22')]?_[_0x4a66('0x23')](_0x1e01b8['options'][_0x4a66('0x22')],function(_0x4d58c){return{'model':db[_0x4d58c['model']],'as':_0x4d58c['as'],'attributes':_0x4d58c[_0x4a66('0x20')],'include':_0x4d58c[_0x4a66('0x22')]?_[_0x4a66('0x23')](_0x4d58c[_0x4a66('0x22')],function(_0x3260d4){return{'model':db[_0x3260d4['model']],'as':_0x3260d4['as'],'attributes':_0x3260d4['attributes'],'include':_0x3260d4[_0x4a66('0x22')]?_[_0x4a66('0x23')](_0x3260d4[_0x4a66('0x22')],function(_0x257485){return{'model':db[_0x257485[_0x4a66('0x24')]],'as':_0x257485['as'],'attributes':_0x257485[_0x4a66('0x20')]};}):[]};}):[]};}):[]:[]})[_0x4a66('0x10')](function(_0x32bd79){logger[_0x4a66('0x11')](_0x4a66('0x25'),_0x1e01b8);logger[_0x4a66('0x14')](_0x4a66('0x25'),_0x1e01b8,JSON['stringify'](_0x32bd79));_0x25fb2c(_0x32bd79);})['catch'](function(_0xc6938d){logger['error'](_0x4a66('0x25'),_0xc6938d[_0x4a66('0x19')],_0x1e01b8);_0x4c78e1(_0x83a690[_0x4a66('0x17')](0x1f4,_0xc6938d[_0x4a66('0x19')]));});});};exports['ShowChatQueue']=function(_0x1fc788){var _0xe56dc=this;return new Promise(function(_0x33e098,_0x2acf4d){return db['ChatQueue']['find']({'raw':_0x1fc788[_0x4a66('0x1d')]?_0x1fc788[_0x4a66('0x1d')][_0x4a66('0x1e')]===undefined?!![]:![]:!![],'where':_0x1fc788[_0x4a66('0x1d')]?_0x1fc788[_0x4a66('0x1d')][_0x4a66('0x1f')]||null:null,'attributes':_0x1fc788[_0x4a66('0x1d')]?_0x1fc788[_0x4a66('0x1d')][_0x4a66('0x20')]||null:null,'include':_0x1fc788[_0x4a66('0x1d')]?_0x1fc788['options']['include']?_['map'](_0x1fc788[_0x4a66('0x1d')][_0x4a66('0x22')],function(_0x46177a){return{'model':db[_0x46177a[_0x4a66('0x24')]],'as':_0x46177a['as'],'attributes':_0x46177a[_0x4a66('0x20')],'include':_0x46177a['include']?_[_0x4a66('0x23')](_0x46177a['include'],function(_0x48de00){return{'model':db[_0x48de00[_0x4a66('0x24')]],'as':_0x48de00['as'],'attributes':_0x48de00[_0x4a66('0x20')],'include':_0x48de00[_0x4a66('0x22')]?_[_0x4a66('0x23')](_0x48de00['include'],function(_0x1ef7ff){return{'model':db[_0x1ef7ff['model']],'as':_0x1ef7ff['as'],'attributes':_0x1ef7ff[_0x4a66('0x20')]};}):[]};}):[]};}):[]:[]})[_0x4a66('0x10')](function(_0x3252c9){logger[_0x4a66('0x11')](_0x4a66('0x26'),_0x1fc788);logger[_0x4a66('0x14')](_0x4a66('0x26'),_0x1fc788,JSON[_0x4a66('0x16')](_0x3252c9));_0x33e098(_0x3252c9);})[_0x4a66('0x1b')](function(_0x3a3703){logger[_0x4a66('0x17')](_0x4a66('0x26'),_0x3a3703[_0x4a66('0x19')],_0x1fc788);_0x2acf4d(_0xe56dc[_0x4a66('0x17')](0x1f4,_0x3a3703[_0x4a66('0x19')]));});});};
\ No newline at end of file
index 05a39b3..36da3ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['removeListener','chatQueue:','save','remove','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x5c12,0x188));var _0x25c1=function(_0x57a50d,_0x2871f8){_0x57a50d=_0x57a50d-0x0;var _0x1b25b3=_0x5c12[_0x57a50d];return _0x1b25b3;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x25c1('0x0'),_0x25c1('0x1'),'update'];function createListener(_0x44bc2e,_0x1991e5){return function(_0x4042fe){_0x1991e5[_0x25c1('0x2')](_0x44bc2e,_0x4042fe);};}function removeListener(_0x2c5df0,_0x21ec20){return function(){ChatQueueEvents[_0x25c1('0x3')](_0x2c5df0,_0x21ec20);};}exports['register']=function(_0x204287){for(var _0x42ac16=0x0,_0x382922=events['length'];_0x42ac16<_0x382922;_0x42ac16++){var _0x5c69b1=events[_0x42ac16];var _0x24981c=createListener(_0x25c1('0x4')+_0x5c69b1,_0x204287);ChatQueueEvents['on'](_0x5c69b1,_0x24981c);}};
\ No newline at end of file
+var _0x303a=['removeListener','register','length','./chatQueue.events','remove','update','emit'];(function(_0x2e9edd,_0x20b98){var _0x5e42a5=function(_0x3bc294){while(--_0x3bc294){_0x2e9edd['push'](_0x2e9edd['shift']());}};_0x5e42a5(++_0x20b98);}(_0x303a,0x1a0));var _0xa303=function(_0x301dab,_0x38050a){_0x301dab=_0x301dab-0x0;var _0x2500a2=_0x303a[_0x301dab];return _0x2500a2;};'use strict';var ChatQueueEvents=require(_0xa303('0x0'));var events=['save',_0xa303('0x1'),_0xa303('0x2')];function createListener(_0x36e548,_0x19d27a){return function(_0x594b49){_0x19d27a[_0xa303('0x3')](_0x36e548,_0x594b49);};}function removeListener(_0x26b47c,_0x38a354){return function(){ChatQueueEvents[_0xa303('0x4')](_0x26b47c,_0x38a354);};}exports[_0xa303('0x5')]=function(_0x1c7ee9){for(var _0x2bc3d7=0x0,_0x3f61f1=events[_0xa303('0x6')];_0x2bc3d7<_0x3f61f1;_0x2bc3d7++){var _0x5d95fd=events[_0x2bc3d7];var _0x51e1ee=createListener('chatQueue:'+_0x5d95fd,_0x1c7ee9);ChatQueueEvents['on'](_0x5d95fd,_0x51e1ee);}};
\ No newline at end of file
index 88e2cd7..8cd0f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1c5142,_0x30ea72){_0x1c5142=_0x1c5142-0x0;var _0x1268cb=_0x5fc3[_0x1c5142];return _0x1268cb;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
+var _0x008c=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','delete','/:id','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3db01c,_0x1a1cb9){var _0x50920a=function(_0x40aec7){while(--_0x40aec7){_0x3db01c['push'](_0x3db01c['shift']());}};_0x50920a(++_0x1a1cb9);}(_0x008c,0x188));var _0xc008=function(_0x5219aa,_0x357da6){_0x5219aa=_0x5219aa-0x0;var _0x479261=_0x008c[_0x5219aa];return _0x479261;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x12')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x15')]);router[_0xc008('0x16')](_0xc008('0x17'),auth[_0xc008('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0xc008('0x18')]);router[_0xc008('0x16')]('/:id/users',auth[_0xc008('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index bde391b..170419a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa85a=['sequelize','exports','DATE','STRING','moment'];(function(_0x1c483f,_0x2485db){var _0x4164b9=function(_0xb76d2d){while(--_0xb76d2d){_0x1c483f['push'](_0x1c483f['shift']());}};_0x4164b9(++_0x2485db);}(_0xa85a,0x103));var _0xaa85=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xa85a[_0x42cae2];return _0x5f256f;};'use strict';var moment=require(_0xaa85('0x0'));var Sequelize=require(_0xaa85('0x1'));module[_0xaa85('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xaa85('0x3')]},'leaveAt':{'type':Sequelize[_0xaa85('0x3')]},'acceptAt':{'type':Sequelize[_0xaa85('0x3')]},'exitAt':{'type':Sequelize[_0xaa85('0x3')]},'reason':{'type':Sequelize[_0xaa85('0x4')]}};
\ No newline at end of file
+var _0xf116=['DATE','moment','exports','STRING'];(function(_0x11f84a,_0x3084a0){var _0x480340=function(_0x1b935c){while(--_0x1b935c){_0x11f84a['push'](_0x11f84a['shift']());}};_0x480340(++_0x3084a0);}(_0xf116,0xad));var _0x6f11=function(_0x5e9d35,_0x382c91){_0x5e9d35=_0x5e9d35-0x0;var _0x3beb2e=_0xf116[_0x5e9d35];return _0x3beb2e;};'use strict';var moment=require(_0x6f11('0x0'));var Sequelize=require('sequelize');module[_0x6f11('0x1')]={'uniqueid':{'type':Sequelize[_0x6f11('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x6f11('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x6f11('0x3')]},'reason':{'type':Sequelize[_0x6f11('0x2')]}};
\ No newline at end of file
index 0b2e89e..9c0623a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x042a=['stack','name','index','map','ChatQueueReport','rawAttributes','key','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','limit','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','json','apply','reject','update','destroy','then','end','error'];(function(_0x74e5bf,_0x1d6719){var _0x4be63f=function(_0x4352eb){while(--_0x4352eb){_0x74e5bf['push'](_0x74e5bf['shift']());}};_0x4be63f(++_0x1d6719);}(_0x042a,0x1d9));var _0xa042=function(_0x5bc8b8,_0x3c082e){_0x5bc8b8=_0x5bc8b8-0x0;var _0x4c78a0=_0x042a[_0x5bc8b8];return _0x4c78a0;};'use strict';var emlformat=require(_0xa042('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa042('0x1'));var jsonpatch=require(_0xa042('0x2'));var rp=require(_0xa042('0x3'));var moment=require('moment');var BPromise=require(_0xa042('0x4'));var Mustache=require(_0xa042('0x5'));var util=require(_0xa042('0x6'));var path=require(_0xa042('0x7'));var sox=require(_0xa042('0x8'));var csv=require(_0xa042('0x9'));var ejs=require(_0xa042('0xa'));var fs=require('fs');var fs_extra=require(_0xa042('0xb'));var _=require('lodash');var squel=require(_0xa042('0xc'));var crypto=require(_0xa042('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa042('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa042('0xf'));var Papa=require(_0xa042('0x10'));var Redis=require(_0xa042('0x11'));var authService=require(_0xa042('0x12'));var qs=require(_0xa042('0x13'));var as=require(_0xa042('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa042('0x15'))('api');var utils=require(_0xa042('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa042('0x17'));var db=require(_0xa042('0x18'))['db'];function respondWithStatusCode(_0x116b5d,_0x4c8c0d){_0x4c8c0d=_0x4c8c0d||0xcc;return function(_0xde3040){if(_0xde3040){return _0x116b5d[_0xa042('0x19')](_0x4c8c0d);}return _0x116b5d[_0xa042('0x1a')](_0x4c8c0d)['end']();};}function respondWithResult(_0x3ef835,_0x2589a1){_0x2589a1=_0x2589a1||0xc8;return function(_0x34062a){if(_0x34062a){return _0x3ef835[_0xa042('0x1a')](_0x2589a1)['json'](_0x34062a);}};}function respondWithFilteredResult(_0x404ff5,_0x37f2df){return function(_0x262d83){if(_0x262d83){var _0x2fa5ed=typeof _0x37f2df[_0xa042('0x1b')]===_0xa042('0x1c')&&typeof _0x37f2df['limit']==='undefined';var _0x3a0dd8=_0x262d83[_0xa042('0x1d')];var _0x1752bf=_0x2fa5ed?0x0:_0x37f2df[_0xa042('0x1b')];var _0x20879b=_0x2fa5ed?_0x262d83[_0xa042('0x1d')]:_0x37f2df[_0xa042('0x1b')]+_0x37f2df['limit'];var _0x4ad400;if(_0x20879b>=_0x3a0dd8){_0x20879b=_0x3a0dd8;_0x4ad400=0xc8;}else{_0x4ad400=0xce;}_0x404ff5['status'](_0x4ad400);return _0x404ff5['set']('Content-Range',_0x1752bf+'-'+_0x20879b+'/'+_0x3a0dd8)[_0xa042('0x1e')](_0x262d83);}return null;};}function patchUpdates(_0x16319e){return function(_0x3099f0){try{jsonpatch[_0xa042('0x1f')](_0x3099f0,_0x16319e,!![]);}catch(_0x1b76b0){return BPromise[_0xa042('0x20')](_0x1b76b0);}return _0x3099f0['save']();};}function saveUpdates(_0x38e0a1,_0x38ac84){return function(_0x3e164f){if(_0x3e164f){return _0x3e164f[_0xa042('0x21')](_0x38e0a1)['then'](function(_0x48cd0d){return _0x48cd0d;});}return null;};}function removeEntity(_0x40f174,_0x384d9e){return function(_0x290944){if(_0x290944){return _0x290944[_0xa042('0x22')]()[_0xa042('0x23')](function(){_0x40f174[_0xa042('0x1a')](0xcc)[_0xa042('0x24')]();});}};}function handleEntityNotFound(_0x3b4ec8,_0x3cdfdd){return function(_0x31853d){if(!_0x31853d){_0x3b4ec8[_0xa042('0x19')](0x194);}return _0x31853d;};}function handleError(_0x43191c,_0x417589){_0x417589=_0x417589||0x1f4;return function(_0x4b41f0){logger[_0xa042('0x25')](_0x4b41f0[_0xa042('0x26')]);if(_0x4b41f0['name']){delete _0x4b41f0[_0xa042('0x27')];}_0x43191c[_0xa042('0x1a')](_0x417589)['send'](_0x4b41f0);};}exports[_0xa042('0x28')]=function(_0x1105aa,_0x4d2a2d){var _0x331276={},_0x3baff3={},_0x2aa39e={'count':0x0,'rows':[]};var _0x32b82a=_[_0xa042('0x29')](db[_0xa042('0x2a')][_0xa042('0x2b')],function(_0x3fb5d9){return{'name':_0x3fb5d9['fieldName'],'type':_0x3fb5d9['type'][_0xa042('0x2c')]};});_0x3baff3[_0xa042('0x2d')]=_[_0xa042('0x29')](_0x32b82a,_0xa042('0x27'));_0x3baff3['query']=_[_0xa042('0x2e')](_0x1105aa['query']);_0x3baff3[_0xa042('0x2f')]=_[_0xa042('0x30')](_0x3baff3['model'],_0x3baff3['query']);_0x331276['attributes']=_['intersection'](_0x3baff3[_0xa042('0x2d')],qs['fields'](_0x1105aa[_0xa042('0x31')][_0xa042('0x32')]));_0x331276['attributes']=_0x331276[_0xa042('0x33')]['length']?_0x331276['attributes']:_0x3baff3[_0xa042('0x2d')];if(!_0x1105aa[_0xa042('0x31')][_0xa042('0x34')](_0xa042('0x35'))){_0x331276[_0xa042('0x36')]=qs[_0xa042('0x36')](_0x1105aa[_0xa042('0x31')][_0xa042('0x36')]);_0x331276[_0xa042('0x1b')]=qs[_0xa042('0x1b')](_0x1105aa[_0xa042('0x31')]['offset']);}_0x331276['order']=qs['sort'](_0x1105aa[_0xa042('0x31')]['sort']);_0x331276[_0xa042('0x37')]=qs[_0xa042('0x2f')](_[_0xa042('0x38')](_0x1105aa[_0xa042('0x31')],_0x3baff3['filters']),_0x32b82a);if(_0x1105aa[_0xa042('0x31')]['filter']){_0x331276['where']=_[_0xa042('0x39')](_0x331276['where'],{'$or':_[_0xa042('0x29')](_0x32b82a,function(_0x25ccfa){if(_0x25ccfa[_0xa042('0x3a')]!==_0xa042('0x3b')){var _0x452f23={};_0x452f23[_0x25ccfa['name']]={'$like':'%'+_0x1105aa[_0xa042('0x31')][_0xa042('0x3c')]+'%'};return _0x452f23;}})});}_0x331276=_[_0xa042('0x39')]({},_0x331276,_0x1105aa[_0xa042('0x3d')]);var _0x20894c={'where':_0x331276[_0xa042('0x37')]};return db[_0xa042('0x2a')][_0xa042('0x1d')](_0x20894c)[_0xa042('0x23')](function(_0xcbb370){_0x2aa39e[_0xa042('0x1d')]=_0xcbb370;if(_0x1105aa[_0xa042('0x31')][_0xa042('0x3e')]){_0x331276[_0xa042('0x3f')]=[{'all':!![]}];}return db['ChatQueueReport'][_0xa042('0x40')](_0x331276);})[_0xa042('0x23')](function(_0x4a8c69){_0x2aa39e[_0xa042('0x41')]=_0x4a8c69;return _0x2aa39e;})[_0xa042('0x23')](respondWithFilteredResult(_0x4d2a2d,_0x331276))[_0xa042('0x42')](handleError(_0x4d2a2d,null));};exports[_0xa042('0x43')]=function(_0x13dd53,_0x53decf){var _0x1c704d={'raw':!![],'where':{'id':_0x13dd53[_0xa042('0x44')]['id']}},_0x168790={};_0x168790[_0xa042('0x2d')]=_[_0xa042('0x2e')](db[_0xa042('0x2a')][_0xa042('0x2b')]);_0x168790[_0xa042('0x31')]=_[_0xa042('0x2e')](_0x13dd53[_0xa042('0x31')]);_0x168790[_0xa042('0x2f')]=_['intersection'](_0x168790[_0xa042('0x2d')],_0x168790[_0xa042('0x31')]);_0x1c704d[_0xa042('0x33')]=_[_0xa042('0x30')](_0x168790[_0xa042('0x2d')],qs['fields'](_0x13dd53[_0xa042('0x31')][_0xa042('0x32')]));_0x1c704d[_0xa042('0x33')]=_0x1c704d[_0xa042('0x33')]['length']?_0x1c704d['attributes']:_0x168790[_0xa042('0x2d')];if(_0x13dd53[_0xa042('0x31')]['includeAll']){_0x1c704d[_0xa042('0x3f')]=[{'all':!![]}];}_0x1c704d=_[_0xa042('0x39')]({},_0x1c704d,_0x13dd53[_0xa042('0x3d')]);return db[_0xa042('0x2a')]['find'](_0x1c704d)[_0xa042('0x23')](handleEntityNotFound(_0x53decf,null))['then'](respondWithResult(_0x53decf,null))[_0xa042('0x42')](handleError(_0x53decf,null));};exports[_0xa042('0x45')]=function(_0x37bcbb,_0x5434c6){return db[_0xa042('0x2a')]['create'](_0x37bcbb[_0xa042('0x46')],{})[_0xa042('0x23')](respondWithResult(_0x5434c6,0xc9))['catch'](handleError(_0x5434c6,null));};exports[_0xa042('0x21')]=function(_0x2f96a3,_0x14f1ca){if(_0x2f96a3[_0xa042('0x46')]['id']){delete _0x2f96a3[_0xa042('0x46')]['id'];}return db['ChatQueueReport'][_0xa042('0x47')]({'where':{'id':_0x2f96a3[_0xa042('0x44')]['id']}})[_0xa042('0x23')](handleEntityNotFound(_0x14f1ca,null))[_0xa042('0x23')](saveUpdates(_0x2f96a3[_0xa042('0x46')],null))[_0xa042('0x23')](respondWithResult(_0x14f1ca,null))[_0xa042('0x42')](handleError(_0x14f1ca,null));};exports[_0xa042('0x22')]=function(_0x28597e,_0x158409){return db['ChatQueueReport'][_0xa042('0x47')]({'where':{'id':_0x28597e[_0xa042('0x44')]['id']}})[_0xa042('0x23')](handleEntityNotFound(_0x158409,null))[_0xa042('0x23')](removeEntity(_0x158409,null))[_0xa042('0x42')](handleError(_0x158409,null));};exports[_0xa042('0x48')]=function(_0x59c6cc,_0x4e0f02){return db[_0xa042('0x2a')][_0xa042('0x48')]()[_0xa042('0x23')](respondWithResult(_0x4e0f02,null))[_0xa042('0x42')](handleError(_0x4e0f02,null));};
\ No newline at end of file
+var _0xaac4=['ChatQueueReport','rawAttributes','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','catch','show','params','includeAll','create','body','update','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','set','Content-Range','json','apply','save','then','destroy','error','name','send','index'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0xaac4,0x6c));var _0x4aac=function(_0x3d5e72,_0x3ab167){_0x3d5e72=_0x3d5e72-0x0;var _0x2230e4=_0xaac4[_0x3d5e72];return _0x2230e4;};'use strict';var emlformat=require(_0x4aac('0x0'));var rimraf=require(_0x4aac('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4aac('0x2'));var rp=require(_0x4aac('0x3'));var moment=require(_0x4aac('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4aac('0x5'));var util=require(_0x4aac('0x6'));var path=require(_0x4aac('0x7'));var sox=require(_0x4aac('0x8'));var csv=require(_0x4aac('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4aac('0xa'));var _=require(_0x4aac('0xb'));var squel=require(_0x4aac('0xc'));var crypto=require('crypto');var jsforce=require(_0x4aac('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4aac('0x9'));var querystring=require(_0x4aac('0xe'));var Papa=require(_0x4aac('0xf'));var Redis=require(_0x4aac('0x10'));var authService=require(_0x4aac('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4aac('0x12'));var hardwareService=require(_0x4aac('0x13'));var logger=require(_0x4aac('0x14'))(_0x4aac('0x15'));var utils=require('../../config/utils');var config=require(_0x4aac('0x16'));var licenseUtil=require(_0x4aac('0x17'));var db=require(_0x4aac('0x18'))['db'];function respondWithStatusCode(_0xfec6bd,_0x323eb0){_0x323eb0=_0x323eb0||0xcc;return function(_0x30eefc){if(_0x30eefc){return _0xfec6bd[_0x4aac('0x19')](_0x323eb0);}return _0xfec6bd['status'](_0x323eb0)[_0x4aac('0x1a')]();};}function respondWithResult(_0x5b1b27,_0x35469f){_0x35469f=_0x35469f||0xc8;return function(_0x55cbf4){if(_0x55cbf4){return _0x5b1b27[_0x4aac('0x1b')](_0x35469f)['json'](_0x55cbf4);}};}function respondWithFilteredResult(_0x2c58d3,_0x442883){return function(_0x2dca5b){if(_0x2dca5b){var _0x593782=typeof _0x442883[_0x4aac('0x1c')]===_0x4aac('0x1d')&&typeof _0x442883['limit']==='undefined';var _0x5c02c6=_0x2dca5b['count'];var _0x1539fb=_0x593782?0x0:_0x442883[_0x4aac('0x1c')];var _0x44d2a1=_0x593782?_0x2dca5b['count']:_0x442883[_0x4aac('0x1c')]+_0x442883[_0x4aac('0x1e')];var _0x2f751b;if(_0x44d2a1>=_0x5c02c6){_0x44d2a1=_0x5c02c6;_0x2f751b=0xc8;}else{_0x2f751b=0xce;}_0x2c58d3[_0x4aac('0x1b')](_0x2f751b);return _0x2c58d3[_0x4aac('0x1f')](_0x4aac('0x20'),_0x1539fb+'-'+_0x44d2a1+'/'+_0x5c02c6)[_0x4aac('0x21')](_0x2dca5b);}return null;};}function patchUpdates(_0x2c26cc){return function(_0x331226){try{jsonpatch[_0x4aac('0x22')](_0x331226,_0x2c26cc,!![]);}catch(_0x39d457){return BPromise['reject'](_0x39d457);}return _0x331226[_0x4aac('0x23')]();};}function saveUpdates(_0x16eef9,_0x594ef1){return function(_0x192db5){if(_0x192db5){return _0x192db5['update'](_0x16eef9)[_0x4aac('0x24')](function(_0x23fb33){return _0x23fb33;});}return null;};}function removeEntity(_0x34a384,_0x3d4836){return function(_0x1a9cca){if(_0x1a9cca){return _0x1a9cca[_0x4aac('0x25')]()[_0x4aac('0x24')](function(){_0x34a384['status'](0xcc)[_0x4aac('0x1a')]();});}};}function handleEntityNotFound(_0x279c10,_0x431cd9){return function(_0x516261){if(!_0x516261){_0x279c10[_0x4aac('0x19')](0x194);}return _0x516261;};}function handleError(_0x1f135a,_0x1b57ed){_0x1b57ed=_0x1b57ed||0x1f4;return function(_0x18bafe){logger[_0x4aac('0x26')](_0x18bafe['stack']);if(_0x18bafe[_0x4aac('0x27')]){delete _0x18bafe['name'];}_0x1f135a['status'](_0x1b57ed)[_0x4aac('0x28')](_0x18bafe);};}exports[_0x4aac('0x29')]=function(_0x459028,_0x3a1bd3){var _0x37a98b={},_0x5133b8={},_0x2750f3={'count':0x0,'rows':[]};var _0xf7618d=_['map'](db[_0x4aac('0x2a')][_0x4aac('0x2b')],function(_0x59b69f){return{'name':_0x59b69f[_0x4aac('0x2c')],'type':_0x59b69f['type']['key']};});_0x5133b8[_0x4aac('0x2d')]=_[_0x4aac('0x2e')](_0xf7618d,_0x4aac('0x27'));_0x5133b8['query']=_[_0x4aac('0x2f')](_0x459028[_0x4aac('0x30')]);_0x5133b8[_0x4aac('0x31')]=_[_0x4aac('0x32')](_0x5133b8[_0x4aac('0x2d')],_0x5133b8['query']);_0x37a98b[_0x4aac('0x33')]=_[_0x4aac('0x32')](_0x5133b8[_0x4aac('0x2d')],qs[_0x4aac('0x34')](_0x459028['query'][_0x4aac('0x34')]));_0x37a98b[_0x4aac('0x33')]=_0x37a98b['attributes'][_0x4aac('0x35')]?_0x37a98b[_0x4aac('0x33')]:_0x5133b8['model'];if(!_0x459028[_0x4aac('0x30')][_0x4aac('0x36')](_0x4aac('0x37'))){_0x37a98b['limit']=qs['limit'](_0x459028[_0x4aac('0x30')][_0x4aac('0x1e')]);_0x37a98b['offset']=qs[_0x4aac('0x1c')](_0x459028[_0x4aac('0x30')]['offset']);}_0x37a98b[_0x4aac('0x38')]=qs[_0x4aac('0x39')](_0x459028[_0x4aac('0x30')][_0x4aac('0x39')]);_0x37a98b[_0x4aac('0x3a')]=qs[_0x4aac('0x31')](_[_0x4aac('0x3b')](_0x459028[_0x4aac('0x30')],_0x5133b8[_0x4aac('0x31')]),_0xf7618d);if(_0x459028['query'][_0x4aac('0x3c')]){_0x37a98b[_0x4aac('0x3a')]=_[_0x4aac('0x3d')](_0x37a98b['where'],{'$or':_[_0x4aac('0x2e')](_0xf7618d,function(_0x1717c0){if(_0x1717c0[_0x4aac('0x3e')]!==_0x4aac('0x3f')){var _0x2c9a8f={};_0x2c9a8f[_0x1717c0[_0x4aac('0x27')]]={'$like':'%'+_0x459028[_0x4aac('0x30')][_0x4aac('0x3c')]+'%'};return _0x2c9a8f;}})});}_0x37a98b=_[_0x4aac('0x3d')]({},_0x37a98b,_0x459028[_0x4aac('0x40')]);var _0x331514={'where':_0x37a98b['where']};return db[_0x4aac('0x2a')]['count'](_0x331514)[_0x4aac('0x24')](function(_0x1d1435){_0x2750f3['count']=_0x1d1435;if(_0x459028[_0x4aac('0x30')]['includeAll']){_0x37a98b['include']=[{'all':!![]}];}return db[_0x4aac('0x2a')][_0x4aac('0x41')](_0x37a98b);})[_0x4aac('0x24')](function(_0x3d1cd5){_0x2750f3['rows']=_0x3d1cd5;return _0x2750f3;})[_0x4aac('0x24')](respondWithFilteredResult(_0x3a1bd3,_0x37a98b))[_0x4aac('0x42')](handleError(_0x3a1bd3,null));};exports[_0x4aac('0x43')]=function(_0xf84265,_0x44fb73){var _0x354fed={'raw':!![],'where':{'id':_0xf84265[_0x4aac('0x44')]['id']}},_0x5d09f6={};_0x5d09f6['model']=_[_0x4aac('0x2f')](db[_0x4aac('0x2a')][_0x4aac('0x2b')]);_0x5d09f6['query']=_[_0x4aac('0x2f')](_0xf84265[_0x4aac('0x30')]);_0x5d09f6[_0x4aac('0x31')]=_[_0x4aac('0x32')](_0x5d09f6[_0x4aac('0x2d')],_0x5d09f6[_0x4aac('0x30')]);_0x354fed['attributes']=_['intersection'](_0x5d09f6[_0x4aac('0x2d')],qs['fields'](_0xf84265[_0x4aac('0x30')][_0x4aac('0x34')]));_0x354fed[_0x4aac('0x33')]=_0x354fed[_0x4aac('0x33')][_0x4aac('0x35')]?_0x354fed[_0x4aac('0x33')]:_0x5d09f6[_0x4aac('0x2d')];if(_0xf84265[_0x4aac('0x30')][_0x4aac('0x45')]){_0x354fed['include']=[{'all':!![]}];}_0x354fed=_[_0x4aac('0x3d')]({},_0x354fed,_0xf84265[_0x4aac('0x40')]);return db['ChatQueueReport']['find'](_0x354fed)[_0x4aac('0x24')](handleEntityNotFound(_0x44fb73,null))['then'](respondWithResult(_0x44fb73,null))['catch'](handleError(_0x44fb73,null));};exports['create']=function(_0x5191ba,_0x58c47b){return db['ChatQueueReport'][_0x4aac('0x46')](_0x5191ba[_0x4aac('0x47')],{})[_0x4aac('0x24')](respondWithResult(_0x58c47b,0xc9))[_0x4aac('0x42')](handleError(_0x58c47b,null));};exports[_0x4aac('0x48')]=function(_0x2d25f9,_0x74f0ad){if(_0x2d25f9[_0x4aac('0x47')]['id']){delete _0x2d25f9[_0x4aac('0x47')]['id'];}return db[_0x4aac('0x2a')]['find']({'where':{'id':_0x2d25f9[_0x4aac('0x44')]['id']}})[_0x4aac('0x24')](handleEntityNotFound(_0x74f0ad,null))['then'](saveUpdates(_0x2d25f9[_0x4aac('0x47')],null))[_0x4aac('0x24')](respondWithResult(_0x74f0ad,null))[_0x4aac('0x42')](handleError(_0x74f0ad,null));};exports[_0x4aac('0x25')]=function(_0x1b2179,_0x1164de){return db[_0x4aac('0x2a')][_0x4aac('0x49')]({'where':{'id':_0x1b2179[_0x4aac('0x44')]['id']}})[_0x4aac('0x24')](handleEntityNotFound(_0x1164de,null))[_0x4aac('0x24')](removeEntity(_0x1164de,null))[_0x4aac('0x42')](handleError(_0x1164de,null));};exports[_0x4aac('0x4a')]=function(_0x11419b,_0x1d9197){return db['ChatQueueReport'][_0x4aac('0x4a')]()['then'](respondWithResult(_0x1d9197,null))[_0x4aac('0x42')](handleError(_0x1d9197,null));};
\ No newline at end of file
index 5e5dbb2..9be8308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0xda501a,_0x159d6a){var _0x44be3a=function(_0x5c1c5f){while(--_0x5c1c5f){_0xda501a['push'](_0xda501a['shift']());}};_0x44be3a(++_0x159d6a);}(_0xb10b,0x12a));var _0xbb10=function(_0x457b64,_0x49a219){_0x457b64=_0x457b64-0x0;var _0x437111=_0xb10b[_0x457b64];return _0x437111;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util'];(function(_0x13cd99,_0x50bd8d){var _0x1d42c7=function(_0x1fa433){while(--_0x1fa433){_0x13cd99['push'](_0x13cd99['shift']());}};_0x1d42c7(++_0x50bd8d);}(_0xe706,0xa3));var _0x6e70=function(_0x3ad62c,_0x465700){_0x3ad62c=_0x3ad62c-0x0;var _0x18e4f3=_0xe706[_0x3ad62c];return _0x18e4f3;};'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 4b99a63..37d2653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a05=['rpc','../../config/environment','jayson/promise','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','CreateChatQueueReport','ChatQueueReport','create','options','raw','UpdateChatQueueReport','update','body','where','attributes','limit','util','randomstring','../../mysqldb','../../config/utils'];(function(_0x2973c4,_0xa5334d){var _0x348932=function(_0x14d3e1){while(--_0x14d3e1){_0x2973c4['push'](_0x2973c4['shift']());}};_0x348932(++_0xa5334d);}(_0x3a05,0x74));var _0x53a0=function(_0x5b9db1,_0x58298a){_0x5b9db1=_0x5b9db1-0x0;var _0x3b1224=_0x3a05[_0x5b9db1];return _0x3b1224;};'use strict';var _=require('lodash');var util=require(_0x53a0('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x53a0('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x53a0('0x2'))['db'];var utils=require(_0x53a0('0x3'));var logger=require('../../config/logger')(_0x53a0('0x4'));var config=require(_0x53a0('0x5'));var jayson=require(_0x53a0('0x6'));var client=jayson['client'][_0x53a0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x46f992,_0x430aaf,_0x53493a){return new BPromise(function(_0x208579,_0x10d646){return client[_0x53a0('0x8')](_0x46f992,_0x53493a)[_0x53a0('0x9')](function(_0x2a2401){logger[_0x53a0('0xa')](_0x53a0('0xb'),_0x430aaf,'request\x20sent');logger[_0x53a0('0xc')](_0x53a0('0xd'),_0x430aaf,_0x53a0('0xe'),JSON[_0x53a0('0xf')](_0x2a2401));if(_0x2a2401['error']){if(_0x2a2401[_0x53a0('0x10')]['code']===0x1f4){logger[_0x53a0('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x430aaf,_0x2a2401['error'][_0x53a0('0x11')]);return _0x10d646(_0x2a2401[_0x53a0('0x10')][_0x53a0('0x11')]);}logger['error'](_0x53a0('0xb'),_0x430aaf,_0x2a2401['error'][_0x53a0('0x11')]);return _0x208579(_0x2a2401[_0x53a0('0x10')][_0x53a0('0x11')]);}else{logger[_0x53a0('0xa')](_0x53a0('0xb'),_0x430aaf,'request\x20sent');_0x208579(_0x2a2401['result'][_0x53a0('0x11')]);}})[_0x53a0('0x12')](function(_0x6b01e5){logger['error'](_0x53a0('0xb'),_0x430aaf,_0x6b01e5);_0x10d646(_0x6b01e5);});});}exports[_0x53a0('0x13')]=function(_0x4162b8){var _0x43a456=this;return new Promise(function(_0x2c26c2,_0x1a8163){return db[_0x53a0('0x14')][_0x53a0('0x15')](_0x4162b8['body'],{'raw':_0x4162b8['options']?_0x4162b8[_0x53a0('0x16')][_0x53a0('0x17')]===undefined?!![]:![]:!![]})[_0x53a0('0x9')](function(_0x58aace){logger[_0x53a0('0xa')](_0x53a0('0x13'),_0x4162b8);logger[_0x53a0('0xc')](_0x53a0('0x13'),_0x4162b8,JSON['stringify'](_0x58aace));_0x2c26c2(_0x58aace);})[_0x53a0('0x12')](function(_0x93d3ba){logger[_0x53a0('0x10')](_0x53a0('0x13'),_0x93d3ba[_0x53a0('0x11')],_0x4162b8);_0x1a8163(_0x43a456[_0x53a0('0x10')](0x1f4,_0x93d3ba[_0x53a0('0x11')]));});});};exports[_0x53a0('0x18')]=function(_0x10ac1c){var _0x4d0844=this;return new Promise(function(_0x136782,_0x35d62){return db[_0x53a0('0x14')][_0x53a0('0x19')](_0x10ac1c[_0x53a0('0x1a')],{'raw':_0x10ac1c[_0x53a0('0x16')]?_0x10ac1c[_0x53a0('0x16')][_0x53a0('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x10ac1c['options']?_0x10ac1c[_0x53a0('0x16')][_0x53a0('0x1b')]||null:null,'attributes':_0x10ac1c[_0x53a0('0x16')]?_0x10ac1c['options'][_0x53a0('0x1c')]||null:null,'limit':_0x10ac1c[_0x53a0('0x16')]?_0x10ac1c[_0x53a0('0x16')][_0x53a0('0x1d')]||null:null})[_0x53a0('0x9')](function(_0x835dda){logger[_0x53a0('0xa')]('UpdateChatQueueReport',_0x10ac1c);logger[_0x53a0('0xc')](_0x53a0('0x18'),_0x10ac1c,JSON[_0x53a0('0xf')](_0x835dda));_0x136782(_0x835dda);})['catch'](function(_0x2d3ce1){logger['error'](_0x53a0('0x18'),_0x2d3ce1[_0x53a0('0x11')],_0x10ac1c);_0x35d62(_0x4d0844[_0x53a0('0x10')](0x1f4,_0x2d3ce1['message']));});});};
\ No newline at end of file
+var _0x7c87=['attributes','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreateChatQueueReport','ChatQueueReport','create','options','raw','UpdateChatQueueReport','update','body','where'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x7c87,0x1a1));var _0x77c8=function(_0x13efb3,_0x26996a){_0x13efb3=_0x13efb3-0x0;var _0x30f0d8=_0x7c87[_0x13efb3];return _0x30f0d8;};'use strict';var _=require(_0x77c8('0x0'));var util=require(_0x77c8('0x1'));var moment=require(_0x77c8('0x2'));var BPromise=require(_0x77c8('0x3'));var rs=require(_0x77c8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77c8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x77c8('0x6'))(_0x77c8('0x7'));var config=require(_0x77c8('0x8'));var jayson=require(_0x77c8('0x9'));var client=jayson['client'][_0x77c8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33faf9,_0x1fbc8f,_0x418ac5){return new BPromise(function(_0xeffe90,_0x45b13b){return client[_0x77c8('0xb')](_0x33faf9,_0x418ac5)[_0x77c8('0xc')](function(_0x5561aa){logger[_0x77c8('0xd')](_0x77c8('0xe'),_0x1fbc8f,_0x77c8('0xf'));logger[_0x77c8('0x10')](_0x77c8('0x11'),_0x1fbc8f,_0x77c8('0xf'),JSON[_0x77c8('0x12')](_0x5561aa));if(_0x5561aa[_0x77c8('0x13')]){if(_0x5561aa[_0x77c8('0x13')]['code']===0x1f4){logger[_0x77c8('0x13')](_0x77c8('0xe'),_0x1fbc8f,_0x5561aa[_0x77c8('0x13')][_0x77c8('0x14')]);return _0x45b13b(_0x5561aa['error'][_0x77c8('0x14')]);}logger['error'](_0x77c8('0xe'),_0x1fbc8f,_0x5561aa[_0x77c8('0x13')]['message']);return _0xeffe90(_0x5561aa[_0x77c8('0x13')][_0x77c8('0x14')]);}else{logger[_0x77c8('0xd')](_0x77c8('0xe'),_0x1fbc8f,_0x77c8('0xf'));_0xeffe90(_0x5561aa['result']['message']);}})[_0x77c8('0x15')](function(_0xc39f04){logger['error'](_0x77c8('0xe'),_0x1fbc8f,_0xc39f04);_0x45b13b(_0xc39f04);});});}exports[_0x77c8('0x16')]=function(_0x4412aa){var _0x546630=this;return new Promise(function(_0x5d5b9a,_0x5e8ed8){return db[_0x77c8('0x17')][_0x77c8('0x18')](_0x4412aa['body'],{'raw':_0x4412aa[_0x77c8('0x19')]?_0x4412aa[_0x77c8('0x19')][_0x77c8('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0xba1577){logger[_0x77c8('0xd')](_0x77c8('0x16'),_0x4412aa);logger['debug'](_0x77c8('0x16'),_0x4412aa,JSON[_0x77c8('0x12')](_0xba1577));_0x5d5b9a(_0xba1577);})[_0x77c8('0x15')](function(_0x119eb3){logger[_0x77c8('0x13')](_0x77c8('0x16'),_0x119eb3['message'],_0x4412aa);_0x5e8ed8(_0x546630[_0x77c8('0x13')](0x1f4,_0x119eb3['message']));});});};exports[_0x77c8('0x1b')]=function(_0x45b2ab){var _0x2ce791=this;return new Promise(function(_0x50b498,_0x53bba8){return db[_0x77c8('0x17')][_0x77c8('0x1c')](_0x45b2ab[_0x77c8('0x1d')],{'raw':_0x45b2ab['options']?_0x45b2ab[_0x77c8('0x19')][_0x77c8('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45b2ab[_0x77c8('0x19')]?_0x45b2ab[_0x77c8('0x19')][_0x77c8('0x1e')]||null:null,'attributes':_0x45b2ab[_0x77c8('0x19')]?_0x45b2ab[_0x77c8('0x19')][_0x77c8('0x1f')]||null:null,'limit':_0x45b2ab[_0x77c8('0x19')]?_0x45b2ab[_0x77c8('0x19')]['limit']||null:null})[_0x77c8('0xc')](function(_0x58c68b){logger[_0x77c8('0xd')](_0x77c8('0x1b'),_0x45b2ab);logger['debug']('UpdateChatQueueReport',_0x45b2ab,JSON[_0x77c8('0x12')](_0x58c68b));_0x50b498(_0x58c68b);})[_0x77c8('0x15')](function(_0x555041){logger[_0x77c8('0x13')]('UpdateChatQueueReport',_0x555041['message'],_0x45b2ab);_0x53bba8(_0x2ce791[_0x77c8('0x13')](0x1f4,_0x555041[_0x77c8('0x14')]));});});};
\ No newline at end of file
index 35bbf84..83fc203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63ea=['../../components/interaction/service','./chatQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','update','delete','exports','util','path','connect-timeout','Router'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x63ea,0x1dc));var _0xa63e=function(_0x55f933,_0xfdf72a){_0x55f933=_0x55f933-0x0;var _0x17f312=_0x63ea[_0x55f933];return _0x17f312;};'use strict';var multer=require('multer');var util=require(_0xa63e('0x0'));var path=require(_0xa63e('0x1'));var timeout=require(_0xa63e('0x2'));var express=require('express');var router=express[_0xa63e('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa63e('0x4'));var config=require('../../config/environment');var controller=require(_0xa63e('0x5'));router[_0xa63e('0x6')]('/',auth[_0xa63e('0x7')](),controller[_0xa63e('0x8')]);router[_0xa63e('0x6')]('/describe',auth[_0xa63e('0x7')](),controller[_0xa63e('0x9')]);router['get'](_0xa63e('0xa'),auth[_0xa63e('0x7')](),controller[_0xa63e('0xb')]);router[_0xa63e('0xc')]('/',auth[_0xa63e('0x7')](),controller['create']);router['put'](_0xa63e('0xa'),auth['isAuthenticated'](),controller[_0xa63e('0xd')]);router[_0xa63e('0xe')]('/:id',auth[_0xa63e('0x7')](),controller['destroy']);module[_0xa63e('0xf')]=router;
\ No newline at end of file
+var _0xd272=['multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','destroy','exports'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xd272,0x156));var _0x2d27=function(_0x5e3132,_0x24d653){_0x5e3132=_0x5e3132-0x0;var _0x404fe8=_0xd272[_0x5e3132];return _0x404fe8;};'use strict';var multer=require(_0x2d27('0x0'));var util=require(_0x2d27('0x1'));var path=require(_0x2d27('0x2'));var timeout=require(_0x2d27('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2d27('0x4'));var auth=require(_0x2d27('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2d27('0x6'));var controller=require('./chatQueueReport.controller');router[_0x2d27('0x7')]('/',auth[_0x2d27('0x8')](),controller['index']);router[_0x2d27('0x7')](_0x2d27('0x9'),auth[_0x2d27('0x8')](),controller[_0x2d27('0xa')]);router['get'](_0x2d27('0xb'),auth[_0x2d27('0x8')](),controller[_0x2d27('0xc')]);router[_0x2d27('0xd')]('/',auth['isAuthenticated'](),controller[_0x2d27('0xe')]);router['put']('/:id',auth[_0x2d27('0x8')](),controller[_0x2d27('0xf')]);router[_0x2d27('0x10')](_0x2d27('0xb'),auth['isAuthenticated'](),controller[_0x2d27('0x11')]);module[_0x2d27('0x12')]=router;
\ No newline at end of file
index afb44db..adc99bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x44508f,_0x3d2edc){var _0x3cc7b9=function(_0x362c76){while(--_0x362c76){_0x44508f['push'](_0x44508f['shift']());}};_0x3cc7b9(++_0x3d2edc);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0xdaa456,_0x3dbbe5){var _0x288a4a=function(_0x4e4d5d){while(--_0x4e4d5d){_0xdaa456['push'](_0xdaa456['shift']());}};_0x288a4a(++_0x3dbbe5);}(_0x54ef,0x112));var _0xf54e=function(_0x429841,_0xde67a9){_0x429841=_0x429841-0x0;var _0x3908f6=_0x54ef[_0x429841];return _0x3908f6;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index b12abc1..41f1e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5c=['includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','save','update','then','error','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options'];(function(_0x24b9c5,_0x2672cd){var _0x27fd24=function(_0x3c7215){while(--_0x3c7215){_0x24b9c5['push'](_0x24b9c5['shift']());}};_0x27fd24(++_0x2672cd);}(_0xad5c,0x179));var _0xcad5=function(_0x2b05e1,_0x42dd94){_0x2b05e1=_0x2b05e1-0x0;var _0x1701ba=_0xad5c[_0x2b05e1];return _0x1701ba;};'use strict';var emlformat=require(_0xcad5('0x0'));var rimraf=require(_0xcad5('0x1'));var zipdir=require(_0xcad5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcad5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xcad5('0x4'));var util=require(_0xcad5('0x5'));var path=require('path');var sox=require(_0xcad5('0x6'));var csv=require(_0xcad5('0x7'));var ejs=require(_0xcad5('0x8'));var fs=require('fs');var fs_extra=require(_0xcad5('0x9'));var _=require('lodash');var squel=require(_0xcad5('0xa'));var crypto=require('crypto');var jsforce=require(_0xcad5('0xb'));var deskjs=require(_0xcad5('0xc'));var toCsv=require(_0xcad5('0x7'));var querystring=require(_0xcad5('0xd'));var Papa=require(_0xcad5('0xe'));var Redis=require('ioredis');var authService=require(_0xcad5('0xf'));var qs=require(_0xcad5('0x10'));var as=require(_0xcad5('0x11'));var hardwareService=require(_0xcad5('0x12'));var logger=require(_0xcad5('0x13'))(_0xcad5('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcad5('0x15'));var db=require(_0xcad5('0x16'))['db'];function respondWithStatusCode(_0x32dee4,_0x472383){_0x472383=_0x472383||0xcc;return function(_0x36e5e1){if(_0x36e5e1){return _0x32dee4[_0xcad5('0x17')](_0x472383);}return _0x32dee4[_0xcad5('0x18')](_0x472383)[_0xcad5('0x19')]();};}function respondWithResult(_0x5c8188,_0x101fe5){_0x101fe5=_0x101fe5||0xc8;return function(_0x58c2ee){if(_0x58c2ee){return _0x5c8188['status'](_0x101fe5)[_0xcad5('0x1a')](_0x58c2ee);}};}function respondWithFilteredResult(_0x21bf8b,_0x4465ee){return function(_0x15aa96){if(_0x15aa96){var _0x415cf1=typeof _0x4465ee[_0xcad5('0x1b')]===_0xcad5('0x1c')&&typeof _0x4465ee[_0xcad5('0x1d')]==='undefined';var _0x1a0939=_0x15aa96[_0xcad5('0x1e')];var _0x2ffb37=_0x415cf1?0x0:_0x4465ee[_0xcad5('0x1b')];var _0x4ee9b7=_0x415cf1?_0x15aa96['count']:_0x4465ee['offset']+_0x4465ee[_0xcad5('0x1d')];var _0x284591;if(_0x4ee9b7>=_0x1a0939){_0x4ee9b7=_0x1a0939;_0x284591=0xc8;}else{_0x284591=0xce;}_0x21bf8b[_0xcad5('0x18')](_0x284591);return _0x21bf8b[_0xcad5('0x1f')]('Content-Range',_0x2ffb37+'-'+_0x4ee9b7+'/'+_0x1a0939)[_0xcad5('0x1a')](_0x15aa96);}return null;};}function patchUpdates(_0x3e59a4){return function(_0xa9f434){try{jsonpatch['apply'](_0xa9f434,_0x3e59a4,!![]);}catch(_0x3c57bd){return BPromise['reject'](_0x3c57bd);}return _0xa9f434[_0xcad5('0x20')]();};}function saveUpdates(_0x3b5fca,_0x2b565a){return function(_0x7b419b){if(_0x7b419b){return _0x7b419b[_0xcad5('0x21')](_0x3b5fca)[_0xcad5('0x22')](function(_0x51eede){return _0x51eede;});}return null;};}function removeEntity(_0x443268,_0x5b835d){return function(_0x287ea7){if(_0x287ea7){return _0x287ea7['destroy']()[_0xcad5('0x22')](function(){_0x443268[_0xcad5('0x18')](0xcc)[_0xcad5('0x19')]();});}};}function handleEntityNotFound(_0x5c3afc,_0xbb6f96){return function(_0x41b32d){if(!_0x41b32d){_0x5c3afc[_0xcad5('0x17')](0x194);}return _0x41b32d;};}function handleError(_0x36f518,_0x4285a0){_0x4285a0=_0x4285a0||0x1f4;return function(_0xd68b67){logger[_0xcad5('0x23')](_0xd68b67['stack']);if(_0xd68b67[_0xcad5('0x24')]){delete _0xd68b67[_0xcad5('0x24')];}_0x36f518[_0xcad5('0x18')](_0x4285a0)[_0xcad5('0x25')](_0xd68b67);};}exports[_0xcad5('0x26')]=function(_0x300c13,_0x48899d){var _0x329202={},_0x334a33={},_0x541087={'count':0x0,'rows':[]};var _0x20cc21=_[_0xcad5('0x27')](db[_0xcad5('0x28')][_0xcad5('0x29')],function(_0x5aaddb){return{'name':_0x5aaddb[_0xcad5('0x2a')],'type':_0x5aaddb[_0xcad5('0x2b')]['key']};});_0x334a33[_0xcad5('0x2c')]=_[_0xcad5('0x27')](_0x20cc21,'name');_0x334a33[_0xcad5('0x2d')]=_[_0xcad5('0x2e')](_0x300c13[_0xcad5('0x2d')]);_0x334a33[_0xcad5('0x2f')]=_[_0xcad5('0x30')](_0x334a33[_0xcad5('0x2c')],_0x334a33['query']);_0x329202['attributes']=_[_0xcad5('0x30')](_0x334a33[_0xcad5('0x2c')],qs[_0xcad5('0x31')](_0x300c13['query']['fields']));_0x329202[_0xcad5('0x32')]=_0x329202[_0xcad5('0x32')][_0xcad5('0x33')]?_0x329202[_0xcad5('0x32')]:_0x334a33['model'];if(!_0x300c13[_0xcad5('0x2d')][_0xcad5('0x34')](_0xcad5('0x35'))){_0x329202['limit']=qs[_0xcad5('0x1d')](_0x300c13[_0xcad5('0x2d')]['limit']);_0x329202[_0xcad5('0x1b')]=qs[_0xcad5('0x1b')](_0x300c13['query']['offset']);}_0x329202[_0xcad5('0x36')]=qs[_0xcad5('0x37')](_0x300c13[_0xcad5('0x2d')][_0xcad5('0x37')]);_0x329202[_0xcad5('0x38')]=qs[_0xcad5('0x2f')](_[_0xcad5('0x39')](_0x300c13[_0xcad5('0x2d')],_0x334a33['filters']),_0x20cc21);if(_0x300c13['query'][_0xcad5('0x3a')]){_0x329202[_0xcad5('0x38')]=_['merge'](_0x329202[_0xcad5('0x38')],{'$or':_['map'](_0x20cc21,function(_0x195880){if(_0x195880[_0xcad5('0x2b')]!=='VIRTUAL'){var _0x1db052={};_0x1db052[_0x195880['name']]={'$like':'%'+_0x300c13[_0xcad5('0x2d')][_0xcad5('0x3a')]+'%'};return _0x1db052;}})});}_0x329202=_[_0xcad5('0x3b')]({},_0x329202,_0x300c13[_0xcad5('0x3c')]);var _0x20662d={'where':_0x329202[_0xcad5('0x38')]};return db['ChatTransferReport'][_0xcad5('0x1e')](_0x20662d)['then'](function(_0x4dc2e9){_0x541087[_0xcad5('0x1e')]=_0x4dc2e9;if(_0x300c13[_0xcad5('0x2d')][_0xcad5('0x3d')]){_0x329202[_0xcad5('0x3e')]=[{'all':!![]}];}return db[_0xcad5('0x28')][_0xcad5('0x3f')](_0x329202);})[_0xcad5('0x22')](function(_0xc81721){_0x541087[_0xcad5('0x40')]=_0xc81721;return _0x541087;})[_0xcad5('0x22')](respondWithFilteredResult(_0x48899d,_0x329202))['catch'](handleError(_0x48899d,null));};exports[_0xcad5('0x41')]=function(_0x328a42,_0xaf628e){var _0x4d6c06={'raw':!![],'where':{'id':_0x328a42[_0xcad5('0x42')]['id']}},_0x2f113c={};_0x2f113c[_0xcad5('0x2c')]=_[_0xcad5('0x2e')](db[_0xcad5('0x28')][_0xcad5('0x29')]);_0x2f113c['query']=_[_0xcad5('0x2e')](_0x328a42[_0xcad5('0x2d')]);_0x2f113c[_0xcad5('0x2f')]=_[_0xcad5('0x30')](_0x2f113c['model'],_0x2f113c[_0xcad5('0x2d')]);_0x4d6c06['attributes']=_['intersection'](_0x2f113c[_0xcad5('0x2c')],qs[_0xcad5('0x31')](_0x328a42[_0xcad5('0x2d')][_0xcad5('0x31')]));_0x4d6c06[_0xcad5('0x32')]=_0x4d6c06[_0xcad5('0x32')][_0xcad5('0x33')]?_0x4d6c06[_0xcad5('0x32')]:_0x2f113c[_0xcad5('0x2c')];if(_0x328a42[_0xcad5('0x2d')][_0xcad5('0x3d')]){_0x4d6c06[_0xcad5('0x3e')]=[{'all':!![]}];}_0x4d6c06=_['merge']({},_0x4d6c06,_0x328a42[_0xcad5('0x3c')]);return db[_0xcad5('0x28')][_0xcad5('0x43')](_0x4d6c06)[_0xcad5('0x22')](handleEntityNotFound(_0xaf628e,null))[_0xcad5('0x22')](respondWithResult(_0xaf628e,null))[_0xcad5('0x44')](handleError(_0xaf628e,null));};exports[_0xcad5('0x45')]=function(_0x2b9a62,_0x2b1edb){return db[_0xcad5('0x28')][_0xcad5('0x45')](_0x2b9a62[_0xcad5('0x46')],{})[_0xcad5('0x22')](respondWithResult(_0x2b1edb,0xc9))[_0xcad5('0x44')](handleError(_0x2b1edb,null));};exports[_0xcad5('0x21')]=function(_0x1e2059,_0x10d147){if(_0x1e2059[_0xcad5('0x46')]['id']){delete _0x1e2059['body']['id'];}return db[_0xcad5('0x28')][_0xcad5('0x43')]({'where':{'id':_0x1e2059[_0xcad5('0x42')]['id']}})[_0xcad5('0x22')](handleEntityNotFound(_0x10d147,null))[_0xcad5('0x22')](saveUpdates(_0x1e2059[_0xcad5('0x46')],null))[_0xcad5('0x22')](respondWithResult(_0x10d147,null))[_0xcad5('0x44')](handleError(_0x10d147,null));};exports[_0xcad5('0x47')]=function(_0x236e17,_0x14825e){return db[_0xcad5('0x28')][_0xcad5('0x43')]({'where':{'id':_0x236e17[_0xcad5('0x42')]['id']}})[_0xcad5('0x22')](handleEntityNotFound(_0x14825e,null))['then'](removeEntity(_0x14825e,null))['catch'](handleError(_0x14825e,null));};exports[_0xcad5('0x48')]=function(_0xf610a0,_0xb513){return db[_0xcad5('0x28')][_0xcad5('0x48')]()[_0xcad5('0x22')](respondWithResult(_0xb513,null))[_0xcad5('0x44')](handleError(_0xb513,null));};
\ No newline at end of file
+var _0x3900=['end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','sendStatus','error','name','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','update','body','describe','rimraf','zip-dir','request-promise','moment','mustache','util','path','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','../../config/environment','../../config/license/util','../../mysqldb','status'];(function(_0x59fada,_0x3d1b90){var _0x288d34=function(_0x4a1b7f){while(--_0x4a1b7f){_0x59fada['push'](_0x59fada['shift']());}};_0x288d34(++_0x3d1b90);}(_0x3900,0x1b7));var _0x0390=function(_0x43c8b8,_0x5e8934){_0x43c8b8=_0x43c8b8-0x0;var _0x413be3=_0x3900[_0x43c8b8];return _0x413be3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0390('0x0'));var zipdir=require(_0x0390('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0390('0x2'));var moment=require(_0x0390('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0390('0x4'));var util=require(_0x0390('0x5'));var path=require(_0x0390('0x6'));var sox=require(_0x0390('0x7'));var csv=require('to-csv');var ejs=require(_0x0390('0x8'));var fs=require('fs');var fs_extra=require(_0x0390('0x9'));var _=require(_0x0390('0xa'));var squel=require(_0x0390('0xb'));var crypto=require(_0x0390('0xc'));var jsforce=require(_0x0390('0xd'));var deskjs=require(_0x0390('0xe'));var toCsv=require(_0x0390('0xf'));var querystring=require(_0x0390('0x10'));var Papa=require(_0x0390('0x11'));var Redis=require(_0x0390('0x12'));var authService=require(_0x0390('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0390('0x14'));var hardwareService=require(_0x0390('0x15'));var logger=require(_0x0390('0x16'))(_0x0390('0x17'));var utils=require(_0x0390('0x18'));var config=require(_0x0390('0x19'));var licenseUtil=require(_0x0390('0x1a'));var db=require(_0x0390('0x1b'))['db'];function respondWithStatusCode(_0x541b3d,_0x3422b5){_0x3422b5=_0x3422b5||0xcc;return function(_0x175555){if(_0x175555){return _0x541b3d['sendStatus'](_0x3422b5);}return _0x541b3d[_0x0390('0x1c')](_0x3422b5)[_0x0390('0x1d')]();};}function respondWithResult(_0xc6f6eb,_0x40d1fc){_0x40d1fc=_0x40d1fc||0xc8;return function(_0x3d771c){if(_0x3d771c){return _0xc6f6eb['status'](_0x40d1fc)[_0x0390('0x1e')](_0x3d771c);}};}function respondWithFilteredResult(_0x83abb4,_0x4abafb){return function(_0x35b910){if(_0x35b910){var _0x3a392d=typeof _0x4abafb[_0x0390('0x1f')]===_0x0390('0x20')&&typeof _0x4abafb[_0x0390('0x21')]==='undefined';var _0x171911=_0x35b910[_0x0390('0x22')];var _0x4411dd=_0x3a392d?0x0:_0x4abafb[_0x0390('0x1f')];var _0x9c1dbe=_0x3a392d?_0x35b910[_0x0390('0x22')]:_0x4abafb[_0x0390('0x1f')]+_0x4abafb[_0x0390('0x21')];var _0x34ac61;if(_0x9c1dbe>=_0x171911){_0x9c1dbe=_0x171911;_0x34ac61=0xc8;}else{_0x34ac61=0xce;}_0x83abb4[_0x0390('0x1c')](_0x34ac61);return _0x83abb4[_0x0390('0x23')](_0x0390('0x24'),_0x4411dd+'-'+_0x9c1dbe+'/'+_0x171911)[_0x0390('0x1e')](_0x35b910);}return null;};}function patchUpdates(_0x27bab9){return function(_0x37e7dc){try{jsonpatch['apply'](_0x37e7dc,_0x27bab9,!![]);}catch(_0x1a56e4){return BPromise[_0x0390('0x25')](_0x1a56e4);}return _0x37e7dc[_0x0390('0x26')]();};}function saveUpdates(_0x355205,_0x3e658c){return function(_0x125b40){if(_0x125b40){return _0x125b40['update'](_0x355205)[_0x0390('0x27')](function(_0x3927f0){return _0x3927f0;});}return null;};}function removeEntity(_0x2f25c8,_0x2550b8){return function(_0x2d9f33){if(_0x2d9f33){return _0x2d9f33[_0x0390('0x28')]()[_0x0390('0x27')](function(){_0x2f25c8[_0x0390('0x1c')](0xcc)[_0x0390('0x1d')]();});}};}function handleEntityNotFound(_0x182aeb,_0x31d900){return function(_0x2f5076){if(!_0x2f5076){_0x182aeb[_0x0390('0x29')](0x194);}return _0x2f5076;};}function handleError(_0xed0aa9,_0x3e4641){_0x3e4641=_0x3e4641||0x1f4;return function(_0x2b7cc9){logger[_0x0390('0x2a')](_0x2b7cc9['stack']);if(_0x2b7cc9['name']){delete _0x2b7cc9[_0x0390('0x2b')];}_0xed0aa9[_0x0390('0x1c')](_0x3e4641)['send'](_0x2b7cc9);};}exports[_0x0390('0x2c')]=function(_0x26d806,_0xc9b4e8){var _0x36b48d={},_0x2a19c4={},_0x5d79e8={'count':0x0,'rows':[]};var _0x147f06=_[_0x0390('0x2d')](db[_0x0390('0x2e')][_0x0390('0x2f')],function(_0x3137b6){return{'name':_0x3137b6[_0x0390('0x30')],'type':_0x3137b6[_0x0390('0x31')][_0x0390('0x32')]};});_0x2a19c4[_0x0390('0x33')]=_[_0x0390('0x2d')](_0x147f06,'name');_0x2a19c4[_0x0390('0x34')]=_[_0x0390('0x35')](_0x26d806[_0x0390('0x34')]);_0x2a19c4[_0x0390('0x36')]=_[_0x0390('0x37')](_0x2a19c4[_0x0390('0x33')],_0x2a19c4[_0x0390('0x34')]);_0x36b48d[_0x0390('0x38')]=_['intersection'](_0x2a19c4['model'],qs[_0x0390('0x39')](_0x26d806[_0x0390('0x34')][_0x0390('0x39')]));_0x36b48d['attributes']=_0x36b48d[_0x0390('0x38')][_0x0390('0x3a')]?_0x36b48d[_0x0390('0x38')]:_0x2a19c4['model'];if(!_0x26d806[_0x0390('0x34')]['hasOwnProperty'](_0x0390('0x3b'))){_0x36b48d['limit']=qs[_0x0390('0x21')](_0x26d806['query']['limit']);_0x36b48d[_0x0390('0x1f')]=qs[_0x0390('0x1f')](_0x26d806[_0x0390('0x34')][_0x0390('0x1f')]);}_0x36b48d['order']=qs[_0x0390('0x3c')](_0x26d806[_0x0390('0x34')]['sort']);_0x36b48d[_0x0390('0x3d')]=qs[_0x0390('0x36')](_[_0x0390('0x3e')](_0x26d806[_0x0390('0x34')],_0x2a19c4[_0x0390('0x36')]),_0x147f06);if(_0x26d806['query']['filter']){_0x36b48d[_0x0390('0x3d')]=_[_0x0390('0x3f')](_0x36b48d[_0x0390('0x3d')],{'$or':_[_0x0390('0x2d')](_0x147f06,function(_0x5ecb94){if(_0x5ecb94['type']!==_0x0390('0x40')){var _0x467d58={};_0x467d58[_0x5ecb94[_0x0390('0x2b')]]={'$like':'%'+_0x26d806['query'][_0x0390('0x41')]+'%'};return _0x467d58;}})});}_0x36b48d=_[_0x0390('0x3f')]({},_0x36b48d,_0x26d806[_0x0390('0x42')]);var _0x5db5e0={'where':_0x36b48d[_0x0390('0x3d')]};return db[_0x0390('0x2e')][_0x0390('0x22')](_0x5db5e0)[_0x0390('0x27')](function(_0x4b579c){_0x5d79e8['count']=_0x4b579c;if(_0x26d806['query'][_0x0390('0x43')]){_0x36b48d[_0x0390('0x44')]=[{'all':!![]}];}return db[_0x0390('0x2e')][_0x0390('0x45')](_0x36b48d);})[_0x0390('0x27')](function(_0x2524fe){_0x5d79e8[_0x0390('0x46')]=_0x2524fe;return _0x5d79e8;})[_0x0390('0x27')](respondWithFilteredResult(_0xc9b4e8,_0x36b48d))[_0x0390('0x47')](handleError(_0xc9b4e8,null));};exports[_0x0390('0x48')]=function(_0x53cd3d,_0x19570c){var _0x3d094d={'raw':!![],'where':{'id':_0x53cd3d[_0x0390('0x49')]['id']}},_0x573e1f={};_0x573e1f[_0x0390('0x33')]=_[_0x0390('0x35')](db[_0x0390('0x2e')]['rawAttributes']);_0x573e1f[_0x0390('0x34')]=_[_0x0390('0x35')](_0x53cd3d[_0x0390('0x34')]);_0x573e1f[_0x0390('0x36')]=_[_0x0390('0x37')](_0x573e1f[_0x0390('0x33')],_0x573e1f[_0x0390('0x34')]);_0x3d094d['attributes']=_[_0x0390('0x37')](_0x573e1f[_0x0390('0x33')],qs[_0x0390('0x39')](_0x53cd3d[_0x0390('0x34')]['fields']));_0x3d094d[_0x0390('0x38')]=_0x3d094d[_0x0390('0x38')][_0x0390('0x3a')]?_0x3d094d[_0x0390('0x38')]:_0x573e1f['model'];if(_0x53cd3d['query'][_0x0390('0x43')]){_0x3d094d[_0x0390('0x44')]=[{'all':!![]}];}_0x3d094d=_[_0x0390('0x3f')]({},_0x3d094d,_0x53cd3d[_0x0390('0x42')]);return db['ChatTransferReport'][_0x0390('0x4a')](_0x3d094d)[_0x0390('0x27')](handleEntityNotFound(_0x19570c,null))[_0x0390('0x27')](respondWithResult(_0x19570c,null))[_0x0390('0x47')](handleError(_0x19570c,null));};exports['create']=function(_0x361789,_0x38bf52){return db[_0x0390('0x2e')]['create'](_0x361789['body'],{})[_0x0390('0x27')](respondWithResult(_0x38bf52,0xc9))[_0x0390('0x47')](handleError(_0x38bf52,null));};exports[_0x0390('0x4b')]=function(_0x57d783,_0x40ba39){if(_0x57d783['body']['id']){delete _0x57d783[_0x0390('0x4c')]['id'];}return db[_0x0390('0x2e')][_0x0390('0x4a')]({'where':{'id':_0x57d783['params']['id']}})[_0x0390('0x27')](handleEntityNotFound(_0x40ba39,null))[_0x0390('0x27')](saveUpdates(_0x57d783['body'],null))['then'](respondWithResult(_0x40ba39,null))[_0x0390('0x47')](handleError(_0x40ba39,null));};exports[_0x0390('0x28')]=function(_0x4c0457,_0x46d689){return db[_0x0390('0x2e')]['find']({'where':{'id':_0x4c0457[_0x0390('0x49')]['id']}})[_0x0390('0x27')](handleEntityNotFound(_0x46d689,null))['then'](removeEntity(_0x46d689,null))[_0x0390('0x47')](handleError(_0x46d689,null));};exports[_0x0390('0x4d')]=function(_0x2c91ba,_0x2f1e28){return db[_0x0390('0x2e')][_0x0390('0x4d')]()['then'](respondWithResult(_0x2f1e28,null))['catch'](handleError(_0x2f1e28,null));};
\ No newline at end of file
index 9a4d896..231def3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf781=['lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','define','ChatTransferReport','uniqueid'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0xf781,0xb4));var _0x1f78=function(_0x4f8a8c,_0x1c9763){_0x4f8a8c=_0x4f8a8c-0x0;var _0x28169b=_0xf781[_0x4f8a8c];return _0x28169b;};'use strict';var _=require(_0x1f78('0x0'));var util=require('util');var logger=require(_0x1f78('0x1'))(_0x1f78('0x2'));var moment=require(_0x1f78('0x3'));var BPromise=require(_0x1f78('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1f78('0x5'));var rimraf=require(_0x1f78('0x6'));var config=require(_0x1f78('0x7'));var attributes=require(_0x1f78('0x8'));module['exports']=function(_0x1fe4a6,_0x2bbd1f){return _0x1fe4a6[_0x1f78('0x9')](_0x1f78('0xa'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x1f78('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7d0=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid'];(function(_0x4a1160,_0x22b485){var _0x2657cd=function(_0x3f07d6){while(--_0x3f07d6){_0x4a1160['push'](_0x4a1160['shift']());}};_0x2657cd(++_0x22b485);}(_0xb7d0,0x104));var _0x0b7d=function(_0x112e6a,_0x4dfc41){_0x112e6a=_0x112e6a-0x0;var _0x1b691b=_0xb7d0[_0x112e6a];return _0x1b691b;};'use strict';var _=require('lodash');var util=require(_0x0b7d('0x0'));var logger=require(_0x0b7d('0x1'))(_0x0b7d('0x2'));var moment=require('moment');var BPromise=require(_0x0b7d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0b7d('0x4'));var rimraf=require(_0x0b7d('0x5'));var config=require(_0x0b7d('0x6'));var attributes=require(_0x0b7d('0x7'));module[_0x0b7d('0x8')]=function(_0x59915e,_0x973571){return _0x59915e[_0x0b7d('0x9')](_0x0b7d('0xa'),attributes,{'tableName':_0x0b7d('0xb'),'paranoid':![],'indexes':[{'name':_0x0b7d('0xc'),'fields':[_0x0b7d('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 79492e8..097d958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4612=['http','request','then','request\x20sent','debug','stringify','error','ChatTransferReport,\x20%s,\x20%s','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x2caa58,_0x152bc8){var _0x2c3da2=function(_0x12bd61){while(--_0x12bd61){_0x2caa58['push'](_0x2caa58['shift']());}};_0x2c3da2(++_0x152bc8);}(_0x4612,0x90));var _0x2461=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0x4612[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0x2461('0x0'));var util=require(_0x2461('0x1'));var moment=require('moment');var BPromise=require(_0x2461('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2461('0x3'));var db=require(_0x2461('0x4'))['db'];var utils=require(_0x2461('0x5'));var logger=require(_0x2461('0x6'))(_0x2461('0x7'));var config=require('../../config/environment');var jayson=require(_0x2461('0x8'));var client=jayson[_0x2461('0x9')][_0x2461('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2ffdff,_0x50f5e6,_0x5dc794){return new BPromise(function(_0x4b0a5c,_0x173532){return client[_0x2461('0xb')](_0x2ffdff,_0x5dc794)[_0x2461('0xc')](function(_0x5afacb){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x50f5e6,_0x2461('0xd'));logger[_0x2461('0xe')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x50f5e6,'request\x20sent',JSON[_0x2461('0xf')](_0x5afacb));if(_0x5afacb['error']){if(_0x5afacb[_0x2461('0x10')]['code']===0x1f4){logger[_0x2461('0x10')](_0x2461('0x11'),_0x50f5e6,_0x5afacb[_0x2461('0x10')][_0x2461('0x12')]);return _0x173532(_0x5afacb['error'][_0x2461('0x12')]);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x50f5e6,_0x5afacb[_0x2461('0x10')]['message']);return _0x4b0a5c(_0x5afacb[_0x2461('0x10')][_0x2461('0x12')]);}else{logger[_0x2461('0x13')](_0x2461('0x11'),_0x50f5e6,_0x2461('0xd'));_0x4b0a5c(_0x5afacb[_0x2461('0x14')][_0x2461('0x12')]);}})[_0x2461('0x15')](function(_0x55a059){logger[_0x2461('0x10')](_0x2461('0x11'),_0x50f5e6,_0x55a059);_0x173532(_0x55a059);});});}
\ No newline at end of file
+var _0x9e1b=['http','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','randomstring','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x4a83bf,_0x17f142){var _0x5420ec=function(_0xa94fb8){while(--_0xa94fb8){_0x4a83bf['push'](_0x4a83bf['shift']());}};_0x5420ec(++_0x17f142);}(_0x9e1b,0xfb));var _0xb9e1=function(_0x118e4e,_0x31f5ca){_0x118e4e=_0x118e4e-0x0;var _0x32ca14=_0x9e1b[_0x118e4e];return _0x32ca14;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb9e1('0x0'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb9e1('0x1'))['db'];var utils=require(_0xb9e1('0x2'));var logger=require('../../config/logger')('rpc');var config=require(_0xb9e1('0x3'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb9e1('0x4')]({'port':0x232a});function respondWithRpcPromise(_0x3428a1,_0x3ec089,_0x22613d){return new BPromise(function(_0x59550d,_0x4266b8){return client['request'](_0x3428a1,_0x22613d)['then'](function(_0xc848fb){logger[_0xb9e1('0x5')](_0xb9e1('0x6'),_0x3ec089,_0xb9e1('0x7'));logger[_0xb9e1('0x8')](_0xb9e1('0x9'),_0x3ec089,_0xb9e1('0x7'),JSON[_0xb9e1('0xa')](_0xc848fb));if(_0xc848fb[_0xb9e1('0xb')]){if(_0xc848fb[_0xb9e1('0xb')][_0xb9e1('0xc')]===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x3ec089,_0xc848fb[_0xb9e1('0xb')][_0xb9e1('0xd')]);return _0x4266b8(_0xc848fb['error'][_0xb9e1('0xd')]);}logger[_0xb9e1('0xb')]('ChatTransferReport,\x20%s,\x20%s',_0x3ec089,_0xc848fb[_0xb9e1('0xb')][_0xb9e1('0xd')]);return _0x59550d(_0xc848fb[_0xb9e1('0xb')][_0xb9e1('0xd')]);}else{logger[_0xb9e1('0x5')]('ChatTransferReport,\x20%s,\x20%s',_0x3ec089,_0xb9e1('0x7'));_0x59550d(_0xc848fb[_0xb9e1('0xe')][_0xb9e1('0xd')]);}})['catch'](function(_0x33bcd4){logger[_0xb9e1('0xb')](_0xb9e1('0x6'),_0x3ec089,_0x33bcd4);_0x4266b8(_0x33bcd4);});});}
\ No newline at end of file
index 91ebc8d..c15a933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x707e=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','index','/describe','isAuthenticated','/:id','show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x991bc8,_0x176be1){var _0x256454=function(_0x14da93){while(--_0x14da93){_0x991bc8['push'](_0x991bc8['shift']());}};_0x256454(++_0x176be1);}(_0x707e,0xc0));var _0xe707=function(_0x119705,_0xba9427){_0x119705=_0x119705-0x0;var _0x2affc2=_0x707e[_0x119705];return _0x2affc2;};'use strict';var multer=require(_0xe707('0x0'));var util=require(_0xe707('0x1'));var path=require(_0xe707('0x2'));var timeout=require(_0xe707('0x3'));var express=require(_0xe707('0x4'));var router=express[_0xe707('0x5')]();var fs_extra=require(_0xe707('0x6'));var auth=require(_0xe707('0x7'));var interaction=require(_0xe707('0x8'));var config=require(_0xe707('0x9'));var controller=require(_0xe707('0xa'));router[_0xe707('0xb')]('/',auth['isAuthenticated'](),controller[_0xe707('0xc')]);router[_0xe707('0xb')](_0xe707('0xd'),auth[_0xe707('0xe')](),controller['describe']);router[_0xe707('0xb')](_0xe707('0xf'),auth[_0xe707('0xe')](),controller[_0xe707('0x10')]);router[_0xe707('0x11')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xe707('0xf'),auth[_0xe707('0xe')](),controller[_0xe707('0x12')]);router[_0xe707('0x13')]('/:id',auth[_0xe707('0xe')](),controller[_0xe707('0x14')]);module[_0xe707('0x15')]=router;
\ No newline at end of file
+var _0x13fc=['../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0xea367b,_0x131726){var _0x2a0cfb=function(_0x3c15d2){while(--_0x3c15d2){_0xea367b['push'](_0xea367b['shift']());}};_0x2a0cfb(++_0x131726);}(_0x13fc,0x14e));var _0xc13f=function(_0x5c4291,_0x4e7086){_0x5c4291=_0x5c4291-0x0;var _0x3090f1=_0x13fc[_0x5c4291];return _0x3090f1;};'use strict';var multer=require(_0xc13f('0x0'));var util=require(_0xc13f('0x1'));var path=require(_0xc13f('0x2'));var timeout=require(_0xc13f('0x3'));var express=require(_0xc13f('0x4'));var router=express[_0xc13f('0x5')]();var fs_extra=require(_0xc13f('0x6'));var auth=require(_0xc13f('0x7'));var interaction=require(_0xc13f('0x8'));var config=require(_0xc13f('0x9'));var controller=require(_0xc13f('0xa'));router[_0xc13f('0xb')]('/',auth[_0xc13f('0xc')](),controller['index']);router['get']('/describe',auth[_0xc13f('0xc')](),controller['describe']);router['get']('/:id',auth[_0xc13f('0xc')](),controller['show']);router[_0xc13f('0xd')]('/',auth[_0xc13f('0xc')](),controller['create']);router[_0xc13f('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xc13f('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xc13f('0x10')]);module[_0xc13f('0x11')]=router;
\ No newline at end of file
index 467bd0e..cd9a5f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['text','getDataValue','onlineForm','setDataValue','stringify','Comments','Leave\x20your\x20comments','offlineForm','parse','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','STRING','address','email','Agent','#011F6A','#ffffff','BOOLEAN','squared','Chat','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','ENUM','star','thumb','input','name'];(function(_0x399e1f,_0x273571){var _0x4247bd=function(_0x1fcf17){while(--_0x1fcf17){_0x399e1f['push'](_0x399e1f['shift']());}};_0x4247bd(++_0x273571);}(_0x5ff3,0x17d));var _0x35ff=function(_0x591423,_0x4ed898){_0x591423=_0x591423-0x0;var _0x427378=_0x5ff3[_0x591423];return _0x427378;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x35ff('0x0'));module['exports']={'name':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x35ff('0x2')},'description':{'type':Sequelize[_0x35ff('0x1')]},'mapKey':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x3')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0x3')},'key':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x4')},'customerAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':_0x35ff('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x35ff('0x1')]},'animation':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0x35ff('0x8')),'defaultValue':'rounded'},'header_online':{'type':Sequelize['STRING'],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x9')},'offline_chat_button':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xa')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xb')},'download_transcript':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x35ff('0xc')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x35ff('0xe')]},'closingQuestion':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x11')},'noteTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x12')},'placeholderMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x13')},'closingMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xa')},'skipMessageButton':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x15')},'conditionAgreement':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x35ff('0x16')](_0x35ff('0x17'),_0x35ff('0x18')),'defaultValue':_0x35ff('0x17')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x35ff('0x19'),'variable':null,'config':{'placeholder':_0x35ff('0x1a'),'type':_0x35ff('0x1b'),'required':!![]},'props':{'title':_0x35ff('0x1a'),'helpText':''}},{'type':_0x35ff('0x19'),'props':{'title':_0x35ff('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x35ff('0x3'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x35ff('0x1c')](_0x35ff('0x1d'))?JSON['parse'](this[_0x35ff('0x1c')]('onlineForm')):{};},'set':function(_0x4c46b7){return this[_0x35ff('0x1e')](_0x35ff('0x1d'),JSON[_0x35ff('0x1f')](_0x4c46b7));}},'offlineForm':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return JSON[_0x35ff('0x1f')]({'items':[{'type':'input','props':{'title':_0x35ff('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x35ff('0x3'),'type':_0x35ff('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':_0x35ff('0x20')},'props':{'title':_0x35ff('0x20'),'helpText':_0x35ff('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x35ff('0x1c')](_0x35ff('0x22'))?JSON[_0x35ff('0x23')](this[_0x35ff('0x1c')](_0x35ff('0x22'))):{};},'set':function(_0x105e58){return this['setDataValue'](_0x35ff('0x22'),JSON['stringify'](_0x105e58));}},'token':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':function(){return rs[_0x35ff('0x24')]();}},'autoclose':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x35ff('0x1')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x35ff('0x1')]},'waitingTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x26')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x27')},'skipUnmanaged':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x15')},'sendUnmanaged':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xa')},'enableCustomerAttachment':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x35ff('0xe')]},'showAgentAvatar':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x35ff('0x1')]},'notificationTemplate':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return _0x35ff('0x28');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x29')},'waitForTheAssignedAgent':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2a')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2b')},'messagesAlignment':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2c')},'defaultTitle':{'type':Sequelize[_0x35ff('0x1')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x35ff('0xc')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2d')},'systemAvatar':{'type':Sequelize[_0x35ff('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x35ff('0xc')],'comment':_0x35ff('0x2e')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x550c09){if(!_0x550c09)this[_0x35ff('0x1e')](_0x35ff('0x2f'),null);this[_0x35ff('0x1e')](_0x35ff('0x30'),_0x550c09);}},'vidaooEscalation':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':_0x35ff('0x31')},'vidaooNote':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':function(){return _0x35ff('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x9c44=['input','parse','getDataValue','setDataValue','onlineForm','stringify','textarea','Comments','Leave\x20your\x20comments','offlineForm','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','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','CHAT','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','exports','STRING','address','email','Agent','#011F6A','#ffffff','BOOLEAN','rounded','squared','We\x20are\x20here!','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Feedback','ENUM','star','thumb','name'];(function(_0x100ea5,_0x2f13b4){var _0x1c331=function(_0x247f46){while(--_0x247f46){_0x100ea5['push'](_0x100ea5['shift']());}};_0x1c331(++_0x2f13b4);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x49c4('0x0')]={'name':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'address':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![],'unique':_0x49c4('0x2')},'description':{'type':Sequelize[_0x49c4('0x1')]},'mapKey':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x3')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x4')},'customerAlias':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![],'defaultValue':_0x49c4('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x49c4('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![],'defaultValue':_0x49c4('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x49c4('0x1')]},'animation':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0x49c4('0x8'),_0x49c4('0x9')),'defaultValue':'rounded'},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0xa')},'start_chat_button':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0xb')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0xc')},'download_transcript':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x49c4('0xd')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0xe')},'defaultWhiteLabel':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x49c4('0xf')]},'closingQuestion':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x11')},'noteTitle':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x12')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0xb')},'skipMessageButton':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x13')},'ratingType':{'type':Sequelize[_0x49c4('0x14')](_0x49c4('0x15'),_0x49c4('0x16')),'defaultValue':_0x49c4('0x15')},'ratingStarsNumber':{'type':Sequelize[_0x49c4('0xd')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x49c4('0x17'),'type':'text','required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x49c4('0x18'),'props':{'title':_0x49c4('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x49c4('0x3'),'type':_0x49c4('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON[_0x49c4('0x19')](this[_0x49c4('0x1a')]('onlineForm')):{};},'set':function(_0x207358){return this[_0x49c4('0x1b')](_0x49c4('0x1c'),JSON[_0x49c4('0x1d')](_0x207358));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x49c4('0x18'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x49c4('0x3'),'type':_0x49c4('0x3')},'variable':null},{'type':_0x49c4('0x1e'),'config':{'placeholder':_0x49c4('0x1f')},'props':{'title':'Comments','helpText':_0x49c4('0x20')}}],'fromKey':0x0});},'get':function(){return this[_0x49c4('0x1a')](_0x49c4('0x21'))?JSON[_0x49c4('0x19')](this[_0x49c4('0x1a')](_0x49c4('0x21'))):{};},'set':function(_0x26ba17){return this[_0x49c4('0x1b')](_0x49c4('0x21'),JSON[_0x49c4('0x1d')](_0x26ba17));}},'token':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x49c4('0x1')]},'forwardOffline':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x49c4('0x1')]},'waitingTitle':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x22')},'offlineMessageSubject':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x23')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x24')},'skipUnmanaged':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x25')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0xb')},'enableCustomerAttachment':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x49c4('0x1')]},'notificationTemplate':{'type':Sequelize[_0x49c4('0xf')],'defaultValue':function(){return _0x49c4('0x26');}},'notificationSound':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0x49c4('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x28')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x29')},'messagesAlignment':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x2a')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x49c4('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x49c4('0xd')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x49c4('0x2b'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x49c4('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x49c4('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':_0x49c4('0x2c')},'systemAvatar':{'type':Sequelize[_0x49c4('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x49c4('0xd')],'comment':_0x49c4('0x2d')},'mandatoryDisposition':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2d2510){if(!_0x2d2510)this[_0x49c4('0x1b')](_0x49c4('0x2e'),null);this[_0x49c4('0x1b')](_0x49c4('0x2f'),_0x2d2510);}},'vidaooEscalation':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x49c4('0x1')]},'vidaooTopic':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![],'defaultValue':_0x49c4('0x30')},'vidaooNote':{'type':Sequelize[_0x49c4('0x1')],'defaultValue':function(){return _0x49c4('0x31');}},'vidaooMetadata':{'type':Sequelize[_0x49c4('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x49c4('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index b87a60f..42bb5b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd496=['device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','contact','firstName','lastName','messageId','created','autoclose','push','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','mimetype','server','attachments','offline-chat','sequelize','transaction','Attachment','bulkCreate','Smtp','CloudProvider','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','email','offlineMessageSubject','openNewInteraction','originalname','toPairsIn','subjectOffline','NotifyMailAccount','notifyMail','files','remove','addInteraction','omit','getInteractions','User','Owner','fullname','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','ONLINE','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','getSnippet','Interval','Intervals','getProactiveActions','../../config/license/util','getLicense','virtual','increment','chatLicenseExceeded','all','some','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','color','labelText','textColor','textButtonColor','color_button','hideWhenOffline','addApplications','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','fs-extra','querystring','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','register','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','get','UserProfileResource','destroy','stack','name','send','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','rows','show','params','keys','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','includeAll','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addLogo','file','agentAvatar','filename','customerAvatar','systemAvatar','getLogo','join','root','sitepic','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','headers','user-agent','getResult','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','List','Contacts','Applications','account','applications','orderBy','priority','asc','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','referer','browser','version','format','%s\x20%s','unknown'];(function(_0x2b1601,_0x50e2d6){var _0x3849e4=function(_0x406364){while(--_0x406364){_0x2b1601['push'](_0x2b1601['shift']());}};_0x3849e4(++_0x50e2d6);}(_0xd496,0x1a1));var _0x6d49=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0xd496[_0x342700];return _0x53406f;};'use strict';var BPromise=require(_0x6d49('0x0'));var Mustache=require(_0x6d49('0x1'));var util=require(_0x6d49('0x2'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d49('0x3'));var _=require('lodash');var querystring=require(_0x6d49('0x4'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x6d49('0x5'))(_0x6d49('0x6'));var config=require(_0x6d49('0x7'));var db=require(_0x6d49('0x8'))['db'];config['redis']=_[_0x6d49('0x9')](config[_0x6d49('0xa')],{'host':_0x6d49('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6d49('0xa')]));require('./chatWebsite.socket')[_0x6d49('0xc')](socket);var htmlToText=require('html-to-text');var jayson=require('jayson/promise');var client=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x232c});var client9002=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x232a});var client9003=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x232b});var client9001=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x2329});function respondWithRpcPromise(_0x57e715,_0x3b5bc3,_0x17e088,_0x3287b7){return new BPromise(function(_0x18e63f,_0x453a80){var _0x3619e3=_0x3287b7||client;return _0x3619e3[_0x6d49('0xf')](_0x57e715,_0x17e088)[_0x6d49('0x10')](function(_0x7a588a){logger[_0x6d49('0x11')](_0x6d49('0x12'),_0x3b5bc3,_0x6d49('0x13'));logger[_0x6d49('0x14')](_0x6d49('0x15'),_0x3b5bc3,'request\x20sent',JSON[_0x6d49('0x16')](_0x7a588a));if(_0x7a588a['error']){if(_0x7a588a[_0x6d49('0x17')]['code']===0x1f4){logger[_0x6d49('0x17')](_0x6d49('0x12'),_0x3b5bc3,_0x7a588a['error'][_0x6d49('0x18')]);return _0x453a80(_0x7a588a[_0x6d49('0x17')][_0x6d49('0x18')]);}logger[_0x6d49('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x3b5bc3,_0x7a588a['error'][_0x6d49('0x18')]);return _0x18e63f(_0x7a588a[_0x6d49('0x17')][_0x6d49('0x18')]);}else{logger[_0x6d49('0x11')](_0x6d49('0x12'),_0x3b5bc3,_0x6d49('0x13'));_0x18e63f(_0x7a588a[_0x6d49('0x19')][_0x6d49('0x18')]);}})[_0x6d49('0x1a')](function(_0x44018f){logger[_0x6d49('0x17')](_0x6d49('0x12'),_0x3b5bc3,_0x44018f);_0x453a80(_0x44018f);});});}function respondWithStatusCode(_0xe5153b,_0x2e4f72){_0x2e4f72=_0x2e4f72||0xcc;return function(_0x31e6c7){if(_0x31e6c7){return _0xe5153b[_0x6d49('0x1b')](_0x2e4f72);}return _0xe5153b['status'](_0x2e4f72)[_0x6d49('0x1c')]();};}function respondWithResult(_0x1c50a0,_0x2bdea7){_0x2bdea7=_0x2bdea7||0xc8;return function(_0x58a485){if(_0x58a485){return _0x1c50a0[_0x6d49('0x1d')](_0x2bdea7)[_0x6d49('0x1e')](_0x58a485);}};}function respondWithFilteredResult(_0x1961b1,_0x56b18e){return function(_0x547284){if(_0x547284){var _0x281e4d=typeof _0x56b18e[_0x6d49('0x1f')]===_0x6d49('0x20')&&typeof _0x56b18e['limit']===_0x6d49('0x20');var _0x3af46f=_0x547284[_0x6d49('0x21')];var _0x26b93a=_0x281e4d?0x0:_0x56b18e[_0x6d49('0x1f')];var _0x3165a3=_0x281e4d?_0x547284[_0x6d49('0x21')]:_0x56b18e['offset']+_0x56b18e[_0x6d49('0x22')];var _0xc55472;if(_0x3165a3>=_0x3af46f){_0x3165a3=_0x3af46f;_0xc55472=0xc8;}else{_0xc55472=0xce;}_0x1961b1[_0x6d49('0x1d')](_0xc55472);return _0x1961b1[_0x6d49('0x23')](_0x6d49('0x24'),_0x26b93a+'-'+_0x3165a3+'/'+_0x3af46f)[_0x6d49('0x1e')](_0x547284);}return null;};}function saveUpdates(_0x47eb32){return function(_0x5c44eb){if(_0x5c44eb){return _0x5c44eb['update'](_0x47eb32)[_0x6d49('0x10')](function(_0x257c6f){return _0x257c6f;});}return null;};}function removeEntity(_0x471a9a){return function(_0x388724){if(_0x388724){return _0x388724['destroy']()[_0x6d49('0x10')](function(){var _0x17c7cd=_0x388724[_0x6d49('0x25')]({'plain':!![]});var _0x5ee037='ChatWebsites';return db[_0x6d49('0x26')][_0x6d49('0x27')]({'where':{'type':_0x5ee037,'resourceId':_0x17c7cd['id']}})['then'](function(){return _0x388724;});})[_0x6d49('0x10')](function(){_0x471a9a['status'](0xcc)[_0x6d49('0x1c')]();});}};}function handleEntityNotFound(_0x59e714){return function(_0x12aac3){if(!_0x12aac3){_0x59e714[_0x6d49('0x1b')](0x194);}return _0x12aac3;};}function handleError(_0xf22d7e,_0x3c673d){_0x3c673d=_0x3c673d||0x1f4;return function(_0x17afc8){logger[_0x6d49('0x17')](_0x17afc8[_0x6d49('0x28')]);if(_0x17afc8[_0x6d49('0x29')]){delete _0x17afc8[_0x6d49('0x29')];}_0xf22d7e[_0x6d49('0x1d')](_0x3c673d)[_0x6d49('0x2a')](_0x17afc8);};}exports['index']=function(_0x3258fb,_0x423a07){var _0x24cf9d={'include':[{'model':db[_0x6d49('0x2b')],'as':_0x6d49('0x2c')}]},_0x4471ca={},_0x1d5b7c={'count':0x0,'rows':[]};var _0x14617a=_[_0x6d49('0x2d')](db[_0x6d49('0x2e')][_0x6d49('0x2f')],function(_0x44a63e){return{'name':_0x44a63e['fieldName'],'type':_0x44a63e['type'][_0x6d49('0x30')]};});_0x4471ca[_0x6d49('0x31')]=_['map'](_0x14617a,_0x6d49('0x29'));_0x4471ca[_0x6d49('0x32')]=_['keys'](_0x3258fb[_0x6d49('0x32')]);_0x4471ca[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x4471ca[_0x6d49('0x31')],_0x4471ca['query']);_0x24cf9d[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x4471ca[_0x6d49('0x31')],qs[_0x6d49('0x36')](_0x3258fb[_0x6d49('0x32')][_0x6d49('0x36')]));_0x24cf9d[_0x6d49('0x35')]=_0x24cf9d[_0x6d49('0x35')][_0x6d49('0x37')]?_0x24cf9d[_0x6d49('0x35')]:_0x4471ca[_0x6d49('0x31')];if(!_0x3258fb['query'][_0x6d49('0x38')](_0x6d49('0x39'))){_0x24cf9d[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x3258fb[_0x6d49('0x32')][_0x6d49('0x22')]);_0x24cf9d[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x3258fb[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x24cf9d[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x3258fb['query']['sort']);_0x24cf9d[_0x6d49('0x3c')]=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x3258fb[_0x6d49('0x32')],_0x4471ca[_0x6d49('0x33')]),_0x14617a);if(_0x3258fb[_0x6d49('0x32')][_0x6d49('0x3e')]){_0x24cf9d[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x24cf9d[_0x6d49('0x3c')],{'$or':_['map'](_0x14617a,function(_0x1035c8){if(_0x1035c8[_0x6d49('0x40')]!==_0x6d49('0x41')){var _0x215d07={};_0x215d07[_0x1035c8[_0x6d49('0x29')]]={'$like':'%'+_0x3258fb['query']['filter']+'%'};return _0x215d07;}})});}_0x24cf9d=_[_0x6d49('0x3f')]({},_0x24cf9d,_0x3258fb[_0x6d49('0x42')]);var _0x1db150={'where':_0x24cf9d[_0x6d49('0x3c')]};return db[_0x6d49('0x2e')][_0x6d49('0x21')](_0x1db150)[_0x6d49('0x10')](function(_0x582096){_0x1d5b7c[_0x6d49('0x21')]=_0x582096;if(_0x3258fb['query']['includeAll']){_0x24cf9d['include']=[{'all':!![]}];}return db[_0x6d49('0x2e')]['findAll'](_0x24cf9d);})['then'](function(_0x1ecb65){_0x1d5b7c[_0x6d49('0x43')]=_0x1ecb65;return _0x1d5b7c;})[_0x6d49('0x10')](respondWithFilteredResult(_0x423a07,_0x24cf9d))['catch'](handleError(_0x423a07,null));};exports[_0x6d49('0x44')]=function(_0x5e379c,_0x872626){var _0x164387={'raw':![],'where':{'id':_0x5e379c[_0x6d49('0x45')]['id']},'include':[{'model':db[_0x6d49('0x2b')],'as':'mandatoryDispositionPause'}]},_0x4b0feb={};_0x4b0feb[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x2e')][_0x6d49('0x2f')]);_0x4b0feb[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x5e379c[_0x6d49('0x32')]);_0x4b0feb[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x4b0feb[_0x6d49('0x31')],_0x4b0feb[_0x6d49('0x32')]);_0x164387[_0x6d49('0x35')]=_['intersection'](_0x4b0feb[_0x6d49('0x31')],qs['fields'](_0x5e379c[_0x6d49('0x32')][_0x6d49('0x36')]));_0x164387[_0x6d49('0x35')]=_0x164387['attributes'][_0x6d49('0x37')]?_0x164387[_0x6d49('0x35')]:_0x4b0feb[_0x6d49('0x31')];if(_0x5e379c['query']['includeAll']){_0x164387[_0x6d49('0x47')]=[{'all':!![]}];}_0x164387=_['merge']({},_0x164387,_0x5e379c[_0x6d49('0x42')]);return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x164387)['then'](handleEntityNotFound(_0x872626,null))[_0x6d49('0x10')](respondWithResult(_0x872626,null))[_0x6d49('0x1a')](handleError(_0x872626,null));};exports[_0x6d49('0x49')]=function(_0x5536cb,_0x2499d1){return db[_0x6d49('0x2e')][_0x6d49('0x49')](_0x5536cb[_0x6d49('0x4a')],{})[_0x6d49('0x10')](function(_0x5f555a){var _0x25c381=_0x5536cb[_0x6d49('0x4b')]['get']({'plain':!![]});if(!_0x25c381)throw new Error(_0x6d49('0x4c'));if(_0x25c381[_0x6d49('0x4d')]==='user'){var _0xcdabc3=_0x5f555a['get']({'plain':!![]});var _0x405932='ChatWebsites';return db['UserProfileSection'][_0x6d49('0x48')]({'where':{'name':_0x405932,'userProfileId':_0x25c381[_0x6d49('0x4e')]},'raw':!![]})[_0x6d49('0x10')](function(_0x411f64){if(_0x411f64&&_0x411f64['autoAssociation']===0x0){return db['UserProfileResource'][_0x6d49('0x49')]({'name':_0xcdabc3[_0x6d49('0x29')],'resourceId':_0xcdabc3['id'],'type':_0x411f64[_0x6d49('0x29')],'sectionId':_0x411f64['id']},{})[_0x6d49('0x10')](function(){return _0x5f555a;});}else{return _0x5f555a;}})[_0x6d49('0x1a')](function(_0x1629a5){logger[_0x6d49('0x17')](_0x6d49('0x4f'),_0x1629a5);throw _0x1629a5;});}return _0x5f555a;})[_0x6d49('0x10')](respondWithResult(_0x2499d1,0xc9))[_0x6d49('0x1a')](handleError(_0x2499d1,null));};exports[_0x6d49('0x50')]=function(_0x145e27,_0x4f582c){if(_0x145e27['body']['id']){delete _0x145e27[_0x6d49('0x4a')]['id'];}return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x145e27['params']['id']},'include':[{'model':db[_0x6d49('0x2b')],'as':_0x6d49('0x2c')}]})[_0x6d49('0x10')](handleEntityNotFound(_0x4f582c,null))['then'](saveUpdates(_0x145e27[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x4f582c,null))['catch'](handleError(_0x4f582c,null));};exports[_0x6d49('0x27')]=function(_0xe47055,_0x8004b0){return db[_0x6d49('0x2e')]['find']({'where':{'id':_0xe47055['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x8004b0,null))[_0x6d49('0x10')](removeEntity(_0x8004b0,null))['catch'](handleError(_0x8004b0,null));};exports[_0x6d49('0x51')]=function(_0x4e5606,_0xeb0ccf){return db[_0x6d49('0x2e')][_0x6d49('0x51')]()[_0x6d49('0x10')](respondWithResult(_0xeb0ccf,null))[_0x6d49('0x1a')](handleError(_0xeb0ccf,null));};exports[_0x6d49('0x52')]=function(_0x2d0228,_0x1a1a14){if(_0x2d0228[_0x6d49('0x4a')]['id']){delete _0x2d0228[_0x6d49('0x4a')]['id'];}return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x2d0228['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x1a1a14,null))['then'](function(_0x51bac9){if(_0x51bac9){_0x2d0228[_0x6d49('0x4a')][_0x6d49('0x53')]=_0x51bac9['id'];return db[_0x6d49('0x54')][_0x6d49('0x49')](_0x2d0228[_0x6d49('0x4a')]);}})[_0x6d49('0x10')](respondWithResult(_0x1a1a14,null))[_0x6d49('0x1a')](handleError(_0x1a1a14,null));};exports[_0x6d49('0x55')]=function(_0x5c07fa,_0x4a6656){var _0x24ca3b={'raw':![],'where':{}};var _0x5e6dce={};var _0x542814={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x5c07fa[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x4a6656,null))[_0x6d49('0x10')](function(_0x40f644){if(_0x40f644){_0x5e6dce[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x54')][_0x6d49('0x2f')]);_0x5e6dce[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x5c07fa[_0x6d49('0x32')]);_0x5e6dce['filters']=_['intersection'](_0x5e6dce[_0x6d49('0x31')],_0x5e6dce[_0x6d49('0x32')]);_0x24ca3b[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x5e6dce[_0x6d49('0x31')],qs['fields'](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x36')]));_0x24ca3b['attributes']=_0x24ca3b[_0x6d49('0x35')][_0x6d49('0x37')]?_0x24ca3b[_0x6d49('0x35')]:_0x5e6dce[_0x6d49('0x31')];if(!_0x5c07fa['query'][_0x6d49('0x38')](_0x6d49('0x39'))){_0x24ca3b[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x22')]);_0x24ca3b[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x24ca3b[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x24ca3b['where']=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x5c07fa[_0x6d49('0x32')],_0x5e6dce['filters']));_0x24ca3b[_0x6d49('0x3c')][_0x6d49('0x53')]=_0x40f644['id'];if(_0x5c07fa['query'][_0x6d49('0x3e')]){_0x24ca3b[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x24ca3b['where'],{'$or':_[_0x6d49('0x2d')](_0x24ca3b['attributes'],function(_0x3c149f){var _0x440bd6={};_0x440bd6[_0x3c149f]={'$like':'%'+_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x3e')]+'%'};return _0x440bd6;})});}_0x24ca3b=_[_0x6d49('0x3f')]({},_0x24ca3b,_0x5c07fa[_0x6d49('0x42')]);return db['Disposition'][_0x6d49('0x21')]({'where':_0x24ca3b[_0x6d49('0x3c')]})[_0x6d49('0x10')](function(_0xd554d5){_0x542814[_0x6d49('0x21')]=_0xd554d5;if(_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x57')]){_0x24ca3b[_0x6d49('0x47')]=[{'all':!![]}];}return db[_0x6d49('0x54')][_0x6d49('0x58')](_0x24ca3b);})[_0x6d49('0x10')](function(_0xc476fe){_0x542814[_0x6d49('0x43')]=_0xc476fe;return _0x542814;});}})[_0x6d49('0x10')](respondWithFilteredResult(_0x4a6656,_0x24ca3b))[_0x6d49('0x1a')](handleError(_0x4a6656,null));};exports[_0x6d49('0x59')]=function(_0xfc4174,_0x11bf25){return db[_0x6d49('0x2e')]['find']({'where':{'id':_0xfc4174['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x11bf25,null))[_0x6d49('0x10')](function(_0x142159){if(_0x142159){return _0x142159[_0x6d49('0x59')](_0xfc4174[_0x6d49('0x32')]['ids']);}})[_0x6d49('0x10')](respondWithStatusCode(_0x11bf25,null))[_0x6d49('0x1a')](handleError(_0x11bf25,null));};exports[_0x6d49('0x5a')]=function(_0x5d7671,_0x47341b){if(_0x5d7671[_0x6d49('0x4a')]['id']){delete _0x5d7671['body']['id'];}return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x5d7671[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x47341b,null))['then'](function(_0x40391b){if(_0x40391b){_0x5d7671[_0x6d49('0x4a')][_0x6d49('0x53')]=_0x40391b['id'];return db[_0x6d49('0x5b')][_0x6d49('0x49')](_0x5d7671[_0x6d49('0x4a')]);}})[_0x6d49('0x10')](respondWithResult(_0x47341b,null))['catch'](handleError(_0x47341b,null));};exports[_0x6d49('0x5c')]=function(_0x4884e9,_0x41def7){var _0x321db6={'raw':![],'where':{}};var _0x42973f={};var _0x3453c1={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x4884e9[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x41def7,null))[_0x6d49('0x10')](function(_0x1da5d4){if(_0x1da5d4){_0x42973f[_0x6d49('0x31')]=_['keys'](db[_0x6d49('0x5b')][_0x6d49('0x2f')]);_0x42973f['query']=_[_0x6d49('0x46')](_0x4884e9['query']);_0x42973f['filters']=_[_0x6d49('0x34')](_0x42973f[_0x6d49('0x31')],_0x42973f[_0x6d49('0x32')]);_0x321db6[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x42973f['model'],qs['fields'](_0x4884e9[_0x6d49('0x32')][_0x6d49('0x36')]));_0x321db6[_0x6d49('0x35')]=_0x321db6['attributes'][_0x6d49('0x37')]?_0x321db6[_0x6d49('0x35')]:_0x42973f[_0x6d49('0x31')];if(!_0x4884e9[_0x6d49('0x32')][_0x6d49('0x38')]('nolimit')){_0x321db6[_0x6d49('0x22')]=qs['limit'](_0x4884e9['query'][_0x6d49('0x22')]);_0x321db6[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x4884e9[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x321db6[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x4884e9[_0x6d49('0x32')]['sort']);_0x321db6[_0x6d49('0x3c')]=qs['filters'](_[_0x6d49('0x3d')](_0x4884e9[_0x6d49('0x32')],_0x42973f['filters']));_0x321db6[_0x6d49('0x3c')]['ChatWebsiteId']=_0x1da5d4['id'];if(_0x4884e9['query']['filter']){_0x321db6['where']=_[_0x6d49('0x3f')](_0x321db6[_0x6d49('0x3c')],{'$or':_['map'](_0x321db6[_0x6d49('0x35')],function(_0x3c53bc){var _0x49804a={};_0x49804a[_0x3c53bc]={'$like':'%'+_0x4884e9[_0x6d49('0x32')]['filter']+'%'};return _0x49804a;})});}_0x321db6=_[_0x6d49('0x3f')]({},_0x321db6,_0x4884e9[_0x6d49('0x42')]);return db['CannedAnswer'][_0x6d49('0x21')]({'where':_0x321db6[_0x6d49('0x3c')]})[_0x6d49('0x10')](function(_0xa73391){_0x3453c1[_0x6d49('0x21')]=_0xa73391;if(_0x4884e9['query']['includeAll']){_0x321db6[_0x6d49('0x47')]=[{'all':!![]}];}return db[_0x6d49('0x5b')][_0x6d49('0x58')](_0x321db6);})[_0x6d49('0x10')](function(_0x8e3e90){_0x3453c1[_0x6d49('0x43')]=_0x8e3e90;return _0x3453c1;});}})[_0x6d49('0x10')](respondWithFilteredResult(_0x41def7,_0x321db6))[_0x6d49('0x1a')](handleError(_0x41def7,null));};exports[_0x6d49('0x5d')]=function(_0x257cbf,_0x298525){return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x257cbf[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x298525,null))[_0x6d49('0x10')](function(_0x2bf210){if(_0x2bf210){return _0x2bf210['removeAnswers'](_0x257cbf[_0x6d49('0x32')][_0x6d49('0x5e')]);}})['then'](respondWithStatusCode(_0x298525,null))[_0x6d49('0x1a')](handleError(_0x298525,null));};exports[_0x6d49('0x5f')]=function(_0x1e6841,_0x288b43){_0x1e6841['body']['sitepic']=_0x1e6841[_0x6d49('0x60')]['filename'];return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x1e6841[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x288b43,null))[_0x6d49('0x10')](saveUpdates(_0x1e6841[_0x6d49('0x4a')],null))['then'](respondWithResult(_0x288b43,null))['catch'](handleError(_0x288b43,null));};exports['addAvatar']=function(_0x5cc80a,_0x3280ea){_0x5cc80a[_0x6d49('0x4a')][_0x6d49('0x61')]=_0x5cc80a[_0x6d49('0x60')][_0x6d49('0x62')];return db['ChatWebsite'][_0x6d49('0x48')]({'where':{'id':_0x5cc80a[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x3280ea,null))[_0x6d49('0x10')](saveUpdates(_0x5cc80a[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x3280ea,null))[_0x6d49('0x1a')](handleError(_0x3280ea,null));};exports['addCustomerAvatar']=function(_0x207ded,_0x52439e){_0x207ded[_0x6d49('0x4a')][_0x6d49('0x63')]=_0x207ded['file'][_0x6d49('0x62')];return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x207ded[_0x6d49('0x45')]['id']}})['then'](handleEntityNotFound(_0x52439e,null))[_0x6d49('0x10')](saveUpdates(_0x207ded[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x52439e,null))[_0x6d49('0x1a')](handleError(_0x52439e,null));};exports['addSystemAvatar']=function(_0x31a870,_0x590b04){_0x31a870[_0x6d49('0x4a')][_0x6d49('0x64')]=_0x31a870[_0x6d49('0x60')]['filename'];return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x31a870[_0x6d49('0x45')]['id']}})['then'](handleEntityNotFound(_0x590b04,null))[_0x6d49('0x10')](saveUpdates(_0x31a870[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x590b04,null))[_0x6d49('0x1a')](handleError(_0x590b04,null));};exports[_0x6d49('0x65')]=function(_0xf6558f,_0x48fe06){var _0x5b3db8=path[_0x6d49('0x66')](config[_0x6d49('0x67')],'server/files/images/logos/default_logo.svg');var _0x5338a8={'where':{'id':_0xf6558f[_0x6d49('0x45')]['id']},'attributes':['id',_0x6d49('0x68')],'raw':!![]};var _0x271d56=![];return require('../../config/license/util')['getLicense']()[_0x6d49('0x10')](function(_0x1a231e){if(_0x1a231e){_0x271d56=_0x1a231e[_0x6d49('0x69')];}})[_0x6d49('0x10')](function(){return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x5338a8);})['then'](handleEntityNotFound(_0x48fe06,null))[_0x6d49('0x10')](function(_0x1fc966){if(_0x1fc966){if(!_[_0x6d49('0x6a')](_0x1fc966['sitepic'])){if(fs[_0x6d49('0x6b')](path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x6c'),_0x1fc966['sitepic']))&&_0x271d56){_0x5b3db8=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x6c'),_0x1fc966[_0x6d49('0x68')]);}}return _0x48fe06[_0x6d49('0x6d')](_0x5b3db8);}})[_0x6d49('0x1a')](handleError(_0x48fe06,null));};exports[_0x6d49('0x6e')]=function(_0x2d9a10,_0x5dedb6){var _0x25fccf=path[_0x6d49('0x66')](config['root'],_0x6d49('0x6f'));var _0x175d02={'where':{'id':_0x2d9a10['params']['id']},'attributes':['id',_0x6d49('0x61')],'raw':!![]};return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x175d02)[_0x6d49('0x10')](handleEntityNotFound(_0x5dedb6,null))['then'](function(_0x1d54d9){if(_0x1d54d9){if(!_[_0x6d49('0x6a')](_0x1d54d9[_0x6d49('0x61')])){if(fs[_0x6d49('0x6b')](path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x70'),_0x1d54d9[_0x6d49('0x61')]))){_0x25fccf=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x70'),_0x1d54d9[_0x6d49('0x61')]);}}return _0x5dedb6[_0x6d49('0x6d')](_0x25fccf);}})['catch'](handleError(_0x5dedb6,null));};exports[_0x6d49('0x71')]=function(_0x1fe96b,_0x3d2426){var _0x20c8ae=path['join'](config[_0x6d49('0x67')],'server/files/images/avatars/customer_avatar.png');var _0x4e2c09={'where':{'id':_0x1fe96b[_0x6d49('0x45')]['id']},'attributes':['id',_0x6d49('0x63'),'showCustomerAvatar'],'raw':!![]};return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x4e2c09)[_0x6d49('0x10')](handleEntityNotFound(_0x3d2426,null))[_0x6d49('0x10')](function(_0x460279){if(_0x460279){if(!_[_0x6d49('0x6a')](_0x460279[_0x6d49('0x63')])){if(fs[_0x6d49('0x6b')](path[_0x6d49('0x66')](config['root'],_0x6d49('0x70'),_0x460279[_0x6d49('0x63')]))&&_0x460279['showCustomerAvatar']){_0x20c8ae=path['join'](config[_0x6d49('0x67')],_0x6d49('0x70'),_0x460279['customerAvatar']);}}return _0x3d2426[_0x6d49('0x6d')](_0x20c8ae);}})[_0x6d49('0x1a')](handleError(_0x3d2426,null));};exports[_0x6d49('0x72')]=function(_0x4a3e35,_0x396c46){var _0x348b2d=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x73'));var _0x358010={'where':{'id':_0x4a3e35['params']['id']},'attributes':['id',_0x6d49('0x64')],'raw':!![]};return db['ChatWebsite'][_0x6d49('0x48')](_0x358010)[_0x6d49('0x10')](handleEntityNotFound(_0x396c46,null))['then'](function(_0xc00c3){if(_0xc00c3){if(!_[_0x6d49('0x6a')](_0xc00c3[_0x6d49('0x64')])){if(fs['existsSync'](path['join'](config[_0x6d49('0x67')],_0x6d49('0x70'),_0xc00c3[_0x6d49('0x64')]))){_0x348b2d=path['join'](config[_0x6d49('0x67')],'server/files/images/avatars/',_0xc00c3[_0x6d49('0x64')]);}}return _0x396c46[_0x6d49('0x6d')](_0x348b2d);}})[_0x6d49('0x1a')](handleError(_0x396c46,null));};exports[_0x6d49('0x74')]=function(_0x2dfa7c,_0x4a4cb2){var _0x51d840=require('user-agent-parser');var _0x4e5e92=new _0x51d840();var _0x24e747=_0x4e5e92['setUA'](_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x76')])[_0x6d49('0x77')]();var _0x15a749={'body':_0x2dfa7c[_0x6d49('0x4a')],'channel':'chat'};var _0x1391ec=[];var _0x9a4adf=[];var _0x831e84={};var _0x2b08ac=![];return db[_0x6d49('0x78')]['describe']()[_0x6d49('0x10')](function(_0x4361b1){if(!_0x4361b1){throw new db[(_0x6d49('0x79'))][(_0x6d49('0x7a'))](_0x6d49('0x7b'));}_0x1391ec=_[_0x6d49('0x7c')](_['keys'](_0x4361b1),[_0x6d49('0x7d'),_0x6d49('0x7e')]);_0x9a4adf=_[_0x6d49('0x7c')](_[_0x6d49('0x46')](_0x4361b1),[_0x6d49('0x7d'),'updatedAt',_0x6d49('0x7f'),_0x6d49('0x80')]);if(_0x2dfa7c[_0x6d49('0x4a')]['id']){delete _0x2dfa7c['body']['id'];}if(_[_0x6d49('0x6a')](_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x81')])){throw new db['Sequelize'][(_0x6d49('0x7a'))](_0x6d49('0x82'));}if(_[_0x6d49('0x6a')](_0x2dfa7c['body'][_0x6d49('0x4a')])||_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x4a')]===''){throw new db[(_0x6d49('0x79'))]['ValidationError'](_0x6d49('0x83'));}if(_[_0x6d49('0x6a')](_0x2dfa7c[_0x6d49('0x4a')]['mapKey'])){throw new db['Sequelize'][(_0x6d49('0x7a'))](_0x6d49('0x84')+_0x9a4adf);}if(!_[_0x6d49('0x85')](_0x9a4adf,_0x2dfa7c['body'][_0x6d49('0x86')])){throw new db['Sequelize'][(_0x6d49('0x7a'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x9a4adf);}_0x831e84[_0x2dfa7c[_0x6d49('0x4a')]['mapKey']]=_0x2dfa7c[_0x6d49('0x4a')]['from'];})[_0x6d49('0x10')](function(){return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x2dfa7c[_0x6d49('0x45')]['id']},'include':[{'model':db[_0x6d49('0x87')],'as':_0x6d49('0x88'),'include':[{'model':db[_0x6d49('0x78')],'as':_0x6d49('0x89'),'where':_0x831e84,'limit':0x1,'order':[[_0x6d49('0x7e'),'DESC']]}]},{'model':db['ChatApplication'],'as':_0x6d49('0x8a')}]});})[_0x6d49('0x10')](handleEntityNotFound(_0x4a4cb2,null))['then'](function(_0x5701fe){if(_0x5701fe&&_0x5701fe[_0x6d49('0x88')]){_0x15a749[_0x6d49('0x8b')]=_0x5701fe;_0x15a749[_0x6d49('0x8c')]=_0x5701fe[_0x6d49('0x8a')];_0x15a749['list']=_0x5701fe['List'];_0x15a749[_0x6d49('0x8c')]=_[_0x6d49('0x8d')](_0x15a749[_0x6d49('0x8c')],[_0x6d49('0x8e')],[_0x6d49('0x8f')]);if(_0x15a749[_0x6d49('0x8b')]['Applications']){delete _0x15a749['account'][_0x6d49('0x8a')];}if(_0x15a749[_0x6d49('0x8b')][_0x6d49('0x88')]&&_0x15a749[_0x6d49('0x8b')]['List'][_0x6d49('0x89')]['length']){return _0x15a749['account'][_0x6d49('0x88')]['Contacts'][0x0];}var _0x1ed2a9=_[_0x6d49('0x9')](_0x2dfa7c['body'],{'firstName':_0x2dfa7c['body'][_0x6d49('0x81')],'ListId':_0x5701fe[_0x6d49('0x80')]});_0x1ed2a9[_0x2dfa7c[_0x6d49('0x4a')]['mapKey']]=_0x2dfa7c['body'][_0x6d49('0x81')];return db['CmContact'][_0x6d49('0x49')](_0x1ed2a9,{'fields':_0x1391ec,'raw':!![]});}})[_0x6d49('0x10')](handleEntityNotFound(_0x4a4cb2,null))[_0x6d49('0x10')](function(_0x7876e1){_0x15a749['contact']=_0x7876e1;var _0x4ec1c4=_0x2dfa7c[_0x6d49('0x4a')]['customerIp'];if(_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x90')]){_0x4ec1c4=_0x2dfa7c['headers'][_0x6d49('0x90')];}else if(_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x91')]){_0x4ec1c4=_[_0x6d49('0x92')](_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x91')][_0x6d49('0x93')](','));}if(_0x7876e1){var _0xf24332={'ContactId':_0x7876e1['id'],'ChatWebsiteId':_0x2dfa7c[_0x6d49('0x45')]['id'],'from':(_0x7876e1['firstName']||'')+'\x20'+(_0x7876e1['lastName']||''),'customerIp':_0x4ec1c4,'customerPort':_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x94')]?_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x94')]:null,'referer':_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x95')],'browserName':_0x24e747[_0x6d49('0x96')][_0x6d49('0x29')]&&_0x24e747[_0x6d49('0x96')][_0x6d49('0x97')]?util[_0x6d49('0x98')](_0x6d49('0x99'),_0x24e747['browser'][_0x6d49('0x29')],_0x24e747[_0x6d49('0x96')][_0x6d49('0x97')]):_0x6d49('0x9a'),'browserVersion':_0x24e747[_0x6d49('0x96')][_0x6d49('0x97')]||_0x6d49('0x9a'),'osName':util[_0x6d49('0x98')](_0x6d49('0x99'),_0x24e747['os'][_0x6d49('0x29')],_0x24e747['os'][_0x6d49('0x97')]),'osVersion':_0x24e747['os'][_0x6d49('0x97')],'deviceModel':_0x24e747[_0x6d49('0x9b')][_0x6d49('0x31')]&&_0x24e747['device'][_0x6d49('0x9c')]?util[_0x6d49('0x98')](_0x6d49('0x9d'),_0x24e747[_0x6d49('0x9b')][_0x6d49('0x31')],_0x24e747[_0x6d49('0x9b')]['vendor'],_0x24e747['device'][_0x6d49('0x40')]):null,'deviceVendor':_0x24e747[_0x6d49('0x9b')][_0x6d49('0x9c')],'deviceType':_0x24e747[_0x6d49('0x9b')]['type'],'formData':JSON[_0x6d49('0x16')](_0x2dfa7c[_0x6d49('0x4a')])};var _0x16f426={'ChatWebsiteId':_0x2dfa7c[_0x6d49('0x45')]['id'],'closed':![]};if(_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x9e')]){_0x16f426[_0x6d49('0x9e')]=_0x2dfa7c[_0x6d49('0x4a')]['threadId'];return db[_0x6d49('0x9f')][_0x6d49('0x48')]({'where':_0x16f426})[_0x6d49('0x10')](function(_0x4c56e8){if(_0x4c56e8){return[_0x4c56e8,![]];}_0xf24332[_0x6d49('0x9e')]=_0x2dfa7c['body'][_0x6d49('0x9e')];_0xf24332[_0x6d49('0xa0')]=_0x2dfa7c['body'][_0x6d49('0xa0')];return db[_0x6d49('0x9f')][_0x6d49('0x49')](_0xf24332)[_0x6d49('0x10')](function(_0x2fbf4e){return[_0x2fbf4e,!![]];});});}_0x16f426[_0x6d49('0xa1')]=_0x7876e1['id'];if(_0x2dfa7c[_0x6d49('0x4a')]['interaction']&&_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa2')]['id']){_0x16f426['id']=_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa2')]['id'];return db[_0x6d49('0x9f')][_0x6d49('0x48')]({'where':_0x16f426})[_0x6d49('0x10')](function(_0x4d5a05){if(_0x4d5a05){return[_0x4d5a05,![]];}return db[_0x6d49('0x9f')][_0x6d49('0x49')](_0xf24332)[_0x6d49('0x10')](function(_0xcd7a82){return[_0xcd7a82,!![]];});});}return db[_0x6d49('0x9f')][_0x6d49('0x49')](_0xf24332)['then'](function(_0x22af07){return[_0x22af07,!![]];});}})[_0x6d49('0xa3')](function(_0x48ff1d,_0x4183fd){if(_0x48ff1d){_0x2b08ac=_0x4183fd;if(!_0x4183fd){var _0x23132b={'from':(_0x15a749[_0x6d49('0xa4')][_0x6d49('0xa5')]||'')+'\x20'+(_0x15a749[_0x6d49('0xa4')][_0x6d49('0xa6')]||'')};if(_0x2dfa7c['body'][_0x6d49('0x9e')]&&_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa7')]&&_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x9e')]!=_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa7')]){_0x23132b[_0x6d49('0x9e')]=_0x2dfa7c[_0x6d49('0x4a')]['messageId'];}return _0x48ff1d['update'](_0x23132b);}else{return _0x48ff1d;}}})[_0x6d49('0x10')](function(_0xcbeab3){_0x15a749[_0x6d49('0xa2')]=_0xcbeab3[_0x6d49('0x25')]({'plain':!![]});_0x15a749[_0x6d49('0xa2')][_0x6d49('0xa8')]=_0x2b08ac;if(_0x15a749[_0x6d49('0xa2')][_0x6d49('0xa8')]){if(_0x15a749['account'][_0x6d49('0xa9')]){_0x15a749['applications'][_0x6d49('0xaa')]({'id':0x0,'priority':_0x15a749[_0x6d49('0x8c')][_0x6d49('0x37')]+0x1,'app':'close','appdata':_0x6d49('0xab'),'interval':_0x6d49('0xac')});}}return db[_0x6d49('0xad')][_0x6d49('0x49')]({'body':_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x4a')],'ChatWebsiteId':_0x2dfa7c['params']['id'],'ChatInteractionId':_0xcbeab3['id'],'direction':'in','ContactId':_0x15a749['contact']['id'],'AttachmentId':_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xae')]});})[_0x6d49('0x10')](function(_0x50cf36){_0x15a749[_0x6d49('0x18')]=_0x50cf36;if(_0x15a749[_0x6d49('0xa2')][_0x6d49('0xaf')]){return db['User'][_0x6d49('0x48')]({'attributes':['id',_0x6d49('0x29')],'where':{'id':_0x15a749[_0x6d49('0xa2')][_0x6d49('0xaf')]}})['then'](function(_0x1b518f){if(_0x1b518f){_0x15a749[_0x6d49('0x8c')][_0x6d49('0xb0')]({'id':0x0,'priority':0x0,'app':_0x6d49('0xb1'),'appdata':_0x1b518f['name']+','+(_0x15a749[_0x6d49('0x8b')][_0x6d49('0xb2')]||0xa),'interval':_0x6d49('0xac')});_0x15a749[_0x6d49('0xb3')]=!![];}return respondWithRpcPromise(_0x6d49('0xb4'),'startRouting',_0x15a749);});}return respondWithRpcPromise(_0x6d49('0xb4'),_0x6d49('0xb5'),_0x15a749);})[_0x6d49('0x10')](function(_0x3c5484){respondWithRpcPromise(_0x6d49('0xb6'),_0x6d49('0xb6'),{'event':_0x6d49('0x74'),'message':_0x3c5484},client9002);return _0x3c5484;})[_0x6d49('0x10')](respondWithResult(_0x4a4cb2,null))[_0x6d49('0x1a')](handleError(_0x4a4cb2,null));};exports[_0x6d49('0xb7')]=function(_0x33d05b,_0xb0ee18){var _0x323d34,_0x54051b,_0x17d390;var _0x41587f=[];var _0x3f5dc7={};var _0x2d48df=_0x33d05b['files']||[];var _0x4c00bb=[];var _0x549289;return db[_0x6d49('0x78')][_0x6d49('0x51')]()[_0x6d49('0x10')](function(_0x1bec22){if(!_0x1bec22){throw new db['Sequelize'][(_0x6d49('0x7a'))]('no\x20available\x20attributes');}_0x41587f=_[_0x6d49('0x7c')](_[_0x6d49('0x46')](_0x1bec22),[_0x6d49('0x7d'),_0x6d49('0x7e'),_0x6d49('0x7f'),_0x6d49('0x80')]);if(_0x33d05b['body']['id']){delete _0x33d05b[_0x6d49('0x4a')]['id'];}if(_[_0x6d49('0x6a')](_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x81')])){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db[(_0x6d49('0x79'))]['ValidationError'](_0x6d49('0x82')));}if(_[_0x6d49('0x6a')](_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x4a')])||_0x33d05b['body'][_0x6d49('0x4a')]===''){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db[(_0x6d49('0x79'))][(_0x6d49('0x7a'))](_0x6d49('0x83')));}if(_[_0x6d49('0x6a')](_0x33d05b[_0x6d49('0x4a')]['mapKeyOffline'])){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db['Sequelize'][(_0x6d49('0x7a'))](_0x6d49('0xb8')+_0x41587f));}if(!_['includes'](_0x41587f,_0x33d05b[_0x6d49('0x4a')][_0x6d49('0xb9')])){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db['Sequelize']['ValidationError'](_0x6d49('0xba')+_0x41587f));}_0x3f5dc7[_0x33d05b[_0x6d49('0x4a')][_0x6d49('0xb9')]]=_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x81')];})[_0x6d49('0x10')](function(){return db['ChatWebsite'][_0x6d49('0x48')]({'where':{'id':_0x33d05b[_0x6d49('0x45')]['id']},'include':[{'model':db[_0x6d49('0x87')],'as':_0x6d49('0x88')},{'model':db[_0x6d49('0xbb')],'as':_0x6d49('0xbb')}]});})[_0x6d49('0x10')](handleEntityNotFound(_0xb0ee18,null))[_0x6d49('0x10')](function(_0x4b0320){if(_0x4b0320&&_0x4b0320['List']){_0x54051b=_0x4b0320;var _0x1e95d6=_[_0x6d49('0x9')](_0x33d05b[_0x6d49('0x4a')],{'firstName':_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x81')],'phone':_0x33d05b[_0x6d49('0x4a')]['from'],'ListId':_0x4b0320[_0x6d49('0x80')]});_0x1e95d6[_0x33d05b[_0x6d49('0x4a')][_0x6d49('0xb9')]]=_0x33d05b['body']['from'];return db[_0x6d49('0x78')]['findOrCreate']({'where':_0x3f5dc7,'defaults':_0x1e95d6});}})[_0x6d49('0xa3')](function(_0x593690){if(_0x593690){_0x17d390=_0x593690;var _0x11ed0e=fs['readFileSync'](path[_0x6d49('0x66')](config[_0x6d49('0x67')],'server/files/templates/chatOfflineMessage.ejs'),_0x6d49('0xbc'));var _0x5e9400=ejs[_0x6d49('0xbd')](_0x11ed0e,{'body':_[_0x6d49('0xbe')](_0x33d05b['body'][_0x6d49('0x4a')]),'bodyTitle':_0x54051b[_0x6d49('0xbf')]});return db[_0x6d49('0xc0')][_0x6d49('0x49')]({'body':_0x5e9400,'plainBody':htmlToText[_0x6d49('0xc1')](_0x5e9400),'ContactId':_0x593690['id'],'ChatWebsiteId':_0x54051b['id']});}})['then'](function(_0x6f1233){_0x549289=_0x6f1233;if(_0x2d48df[_0x6d49('0x37')]){var _0x333070=_0x2d48df['map'](function(_0xdaee8c){return{'name':_0xdaee8c['originalname'],'basename':_0xdaee8c[_0x6d49('0x62')],'type':_0xdaee8c[_0x6d49('0xc2')],'ChatOfflineMessageId':_0x6f1233['id']};});_0x4c00bb=_0x333070[_0x6d49('0x2d')](_0x4903b6=>{var _0x14d716={'filename':_0x4903b6[_0x6d49('0x29')],'path':path['join'](config['root'],_0x6d49('0xc3'),'files',_0x6d49('0xc4'),_0x6d49('0xc5'),_0x4903b6['basename'])};return _0x14d716;});if(!_0x54051b['openNewInteraction']){return db[_0x6d49('0xc6')][_0x6d49('0xc7')](function(_0x242712){return db[_0x6d49('0xc8')][_0x6d49('0xc9')](_0x333070,{'transaction':_0x242712});});}}})[_0x6d49('0x10')](function(){if(_0x549289){_0x323d34=_0x549289;return db['MailAccount'][_0x6d49('0x56')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x6d49('0xca'),'raw':!![],'include':[{'model':db[_0x6d49('0xcb')],'as':_0x6d49('0xcb'),'raw':!![]}]}]});}})[_0x6d49('0x10')](function(_0x52e12e){if(_0x52e12e&&_0x52e12e['Smtp']&&_0x54051b['forwardOffline']&&_0x54051b[_0x6d49('0xcc')]){var _0x253ce3=_0x52e12e[_0x6d49('0xcd')]();return respondWithRpcPromise(_0x6d49('0xce'),_0x6d49('0xcf'),{'account':_0x253ce3,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x52e12e[_0x6d49('0x29')],_0x52e12e[_0x6d49('0xd0')]||_0x52e12e[_0x6d49('0xca')]['user']),'to':_0x54051b['forwardOfflineAddress'],'subject':_0x54051b[_0x6d49('0xd1')],'html':_0x323d34[_0x6d49('0x4a')],'attachments':_0x4c00bb}},client9003)[_0x6d49('0x10')](function(){return _0x323d34;})[_0x6d49('0x1a')](function(_0x37cc15){logger[_0x6d49('0x17')](_0x37cc15);});}})['then'](function(){if(_0x54051b&&_0x54051b[_0x6d49('0xd2')]&&_0x54051b['MailAccountId']){var _0x334908=[];if(_0x2d48df['length']){_0x334908=_0x2d48df[_0x6d49('0x2d')](function(_0x423616){return{'name':_0x423616[_0x6d49('0xd3')],'basename':_0x423616['filename'],'type':_0x423616[_0x6d49('0xc2')],'ChatOfflineMessageId':_0x549289['id']};});}var _0x4aa002;if(!_[_0x6d49('0x6a')](_0x54051b['subjectOffline'])){var _0x4e6ac1=_[_0x6d49('0x2d')](_0x33d05b[_0x6d49('0x4a')],function(_0x5c5d30){return _0x5c5d30;});var _0x3093de=_[_0x6d49('0xd4')](_0x4e6ac1)[0x0];var _0x52de1a=_['mapValues'](_0x3093de,function(_0x462296){return _0x462296;});_0x4aa002=_0x52de1a[0x1][_0x54051b[_0x6d49('0xd5')]];}var _0x117f41={'from':_0x17d390['email'],'firstName':_0x17d390[_0x6d49('0xa5')],'lastName':_0x17d390[_0x6d49('0xa6')],'mapKey':_0x6d49('0xd0'),'message':{'from':_0x17d390[_0x6d49('0xd0')],'to':_0x54051b[_0x6d49('0xbb')]['email'],'cc':'','subject':_['isNil'](_0x4aa002)?_0x54051b[_0x6d49('0xd1')]:_0x4aa002,'messageId':'','sentAt':new Date(),'attach':_0x334908[_0x6d49('0x37')],'attachments':_0x334908,'originChannel':'Chat','ChatWebsiteId':_0x54051b['id'],'ChatOfflineMessageId':_0x323d34['id'],'originTo':_0x54051b[_0x6d49('0xbb')]['email']},'body':_0x323d34[_0x6d49('0x4a')]};var _0x57215b={'account':{'id':_0x54051b['MailAccountId']},'body':_0x117f41,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x6d49('0xd6'),_0x6d49('0xd7'),_0x57215b,client9001)[_0x6d49('0x10')](function(){return _0x323d34;})[_0x6d49('0x1a')](function(_0x30f793){logger[_0x6d49('0x17')](_0x30f793);});}return;})[_0x6d49('0x10')](function(){if(_0x323d34){return _0x323d34;}})[_0x6d49('0x10')](respondWithResult(_0xb0ee18,null))[_0x6d49('0x1a')](function(_0x4289e5){logger[_0x6d49('0x17')](_0x6d49('0x1a'),_0x4289e5);for(var _0x49ae5a of _0x2d48df){var _0x444f5b=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0xc3'),_0x6d49('0xd8'),_0x6d49('0xc4'),_0x6d49('0xc5'),_0x49ae5a[_0x6d49('0x62')]);fs_extra[_0x6d49('0xd9')](_0x444f5b)['catch'](function(_0x2c5292){logger['error']('Could\x20not\x20remove\x20attachment\x20file',_0x444f5b,_0x2c5292);});}});};exports[_0x6d49('0xda')]=function(_0x153dcb,_0xd3e95f){return db[_0x6d49('0x9f')]['find']({'where':{'id':_0x153dcb['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0xd3e95f,null))[_0x6d49('0x10')](function(_0x110a11){if(_0x110a11){return _0x110a11[_0x6d49('0xda')](_0x153dcb['body'][_0x6d49('0x5e')],_[_0x6d49('0xdb')](_0x153dcb['body'],[_0x6d49('0x5e'),'id'])||{});}})['then'](respondWithResult(_0xd3e95f,null))[_0x6d49('0x1a')](handleError(_0xd3e95f,null));};exports[_0x6d49('0xdc')]=function(_0xe85258,_0x26612f){var _0x2a0b1c={'raw':![],'where':{}};var _0x5832ea={};var _0x5203f9={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')]['findOne']({'where':{'id':_0xe85258['params']['id']}})['then'](handleEntityNotFound(_0x26612f,null))[_0x6d49('0x10')](function(_0x589f3f){if(_0x589f3f){_0x5832ea[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x9f')]['rawAttributes']);_0x5832ea[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0xe85258[_0x6d49('0x32')]);_0x5832ea[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x5832ea[_0x6d49('0x31')],_0x5832ea['query']);_0x2a0b1c[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x5832ea[_0x6d49('0x31')],qs['fields'](_0xe85258[_0x6d49('0x32')][_0x6d49('0x36')]));_0x2a0b1c[_0x6d49('0x35')]=_0x2a0b1c[_0x6d49('0x35')][_0x6d49('0x37')]?_0x2a0b1c[_0x6d49('0x35')]:_0x5832ea[_0x6d49('0x31')];if(!_0xe85258[_0x6d49('0x32')][_0x6d49('0x38')](_0x6d49('0x39'))){_0x2a0b1c['limit']=qs[_0x6d49('0x22')](_0xe85258[_0x6d49('0x32')][_0x6d49('0x22')]);_0x2a0b1c[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0xe85258[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x2a0b1c['order']=qs['sort'](_0xe85258[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x2a0b1c[_0x6d49('0x3c')]=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0xe85258['query'],_0x5832ea[_0x6d49('0x33')]));_0x2a0b1c[_0x6d49('0x3c')]['ChatWebsiteId']=_0x589f3f['id'];if(_0xe85258[_0x6d49('0x32')][_0x6d49('0x3e')]){_0x2a0b1c[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x2a0b1c[_0x6d49('0x3c')],{'$or':_[_0x6d49('0x2d')](_0x2a0b1c[_0x6d49('0x35')],function(_0x3c8756){var _0x388eac={};_0x388eac[_0x3c8756]={'$like':'%'+_0xe85258['query'][_0x6d49('0x3e')]+'%'};return _0x388eac;})});}_0x2a0b1c=_[_0x6d49('0x3f')]({},_0x2a0b1c,_0xe85258[_0x6d49('0x42')]);return db[_0x6d49('0x9f')][_0x6d49('0x21')]({'where':_0x2a0b1c[_0x6d49('0x3c')]})[_0x6d49('0x10')](function(_0x2c6644){_0x5203f9[_0x6d49('0x21')]=_0x2c6644;if(_0xe85258[_0x6d49('0x32')][_0x6d49('0x57')]){_0x2a0b1c['include']=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x6d49('0xdd')],'as':_0x6d49('0xde'),'attributes':['name',_0x6d49('0xdf'),'internal'],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x6d49('0x29'),'color'],'where':_0xe85258['query'][_0x6d49('0xe0')]?{'id':_0xe85258[_0x6d49('0x32')][_0x6d49('0xe0')]}:undefined,'required':_0xe85258['query']['tag']?!![]:![]}];}return db['ChatInteraction']['findAll'](_0x2a0b1c);})[_0x6d49('0x10')](function(_0xc9c296){_0x5203f9[_0x6d49('0x43')]=_0xc9c296;return _0x5203f9;});}})['then'](respondWithFilteredResult(_0x26612f,_0x2a0b1c))[_0x6d49('0x1a')](handleError(_0x26612f,null));};function iftimePromise(_0x49dff0,_0x1f516b){return respondWithRpcPromise(_0x6d49('0xe1'),'getSnippet',{'command':_0x1f516b[_0x6d49('0xe2')]?util[_0x6d49('0x98')](_0x6d49('0xe3'),_0x49dff0[_0x6d49('0xe4')],_0x1f516b[_0x6d49('0xe2')]):util[_0x6d49('0x98')](_0x6d49('0xe5'),_0x49dff0[_0x6d49('0xe4')])},client9002)[_0x6d49('0x10')](function(_0x998b3d){var _0x28934c=_0x998b3d&&_0x998b3d[_0x6d49('0xe6')](_0x6d49('0xe7'))>=0x0?!![]:![];logger[_0x6d49('0x11')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x1f516b['id'],_0x49dff0['id'],_0x49dff0[_0x6d49('0xe4')],_0x28934c?_0x6d49('0xe8'):_0x6d49('0xe9'),_0x1f516b[_0x6d49('0xe2')]?_0x1f516b[_0x6d49('0xe2')]:_0x6d49('0xea'));return _0x28934c;})[_0x6d49('0x1a')](function(_0xef8968){logger['error'](_0x6d49('0xeb'),_0x1f516b['id'],_0x49dff0['id'],_0x49dff0[_0x6d49('0xe4')],util[_0x6d49('0xec')](_0xef8968,{'showHidden':![],'depth':null}),_0x1f516b[_0x6d49('0xe2')]?_0x1f516b[_0x6d49('0xe2')]:_0x6d49('0xea'));return![];});}exports[_0x6d49('0xed')]=function(_0x180ffc,_0xed82a0){var _0xf6bcf8=0x0;var _0x5b1f89=0x0;var _0xabd945=![];var _0x26d34e;var _0x350886;return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x180ffc[_0x6d49('0x45')]['id']},'include':[{'model':db['Interval'],'as':'Interval','include':[{'model':db[_0x6d49('0xee')],'as':_0x6d49('0xef'),'attributes':['id',_0x6d49('0xe4')],'raw':!![]}]}]})[_0x6d49('0x10')](handleEntityNotFound(_0xed82a0,null))[_0x6d49('0x10')](function(_0x2f2cc7){if(_0x2f2cc7){_0x26d34e=_0x2f2cc7;return _0x2f2cc7[_0x6d49('0xf0')]({'raw':!![]});}})['then'](function(_0x52dd2c){if(_0x26d34e){if(_0x52dd2c){_0x350886=_0x52dd2c;}}return require(_0x6d49('0xf1'))[_0x6d49('0xf2')]();})[_0x6d49('0x10')](function(_0x2141fe){if(_0x2141fe){_0x5b1f89=_0x2141fe[_0x6d49('0xf3')];_0xabd945=_0x2141fe[_0x6d49('0x69')];}})[_0x6d49('0x10')](function(){return db[_0x6d49('0x9f')][_0x6d49('0x21')]({'where':{'closed':![]}});})[_0x6d49('0x10')](function(_0x58f3c7){_0xf6bcf8=_0x58f3c7;if(_0x5b1f89&&_0x58f3c7>_0x5b1f89){return db['License']['findOne']({'where':{'id':0x1}})['then'](function(_0x42cd17){if(_0x42cd17){_0x42cd17[_0x6d49('0xf4')](_0x6d49('0xf5'));}});}})[_0x6d49('0x10')](function(){if(_0x26d34e[_0x6d49('0xee')]&&_0x26d34e['Interval'][_0x6d49('0xef')]){var _0x13d942=[];for(var _0x40df8e=0x0;_0x40df8e<_0x26d34e[_0x6d49('0xee')]['Intervals']['length'];_0x40df8e++){var _0x43b9a6=_0x26d34e[_0x6d49('0xee')][_0x6d49('0xef')][_0x40df8e][_0x6d49('0x25')]({'plain':!![]});_0x13d942['push'](iftimePromise(_0x43b9a6,_0x26d34e));}return BPromise[_0x6d49('0xf6')](_0x13d942)[_0x6d49('0x10')](function(_0x3197a9){return _[_0x6d49('0xf7')](_0x3197a9);});}else{return!![];}})[_0x6d49('0x10')](function(_0x3f2897){var _0x31b164=fs['readFileSync'](path[_0x6d49('0x66')](config['root'],'server/files/chat/iframe.ejs'),_0x6d49('0xbc'));var _0x4f4d4d={'remote':_0x26d34e['remote'],'query':querystring[_0x6d49('0x16')](_[_0x6d49('0x3f')](_0x26d34e[_0x6d49('0x25')]({'plain':!![]}),{'customerIp':_0x180ffc[_0x6d49('0x75')]['x-forwarded-for']||_0x180ffc[_0x6d49('0x75')][_0x6d49('0xf8')]||_0x180ffc[_0x6d49('0xf9')][_0x6d49('0xfa')]||_0x180ffc['ip'],'referer':_0x180ffc[_0x6d49('0x75')][_0x6d49('0x95')],'openedInteractions':_0xf6bcf8,'maxInteractions':_0x5b1f89,'virtual':_0xabd945[_0x6d49('0xf3')],'online':_0x3f2897,'custom':_0xabd945}))[_0x6d49('0xfb')](/'/g,'\x5c\x27')};_0xed82a0[_0x6d49('0x2a')](ejs['render'](Mustache[_0x6d49('0xbd')](_0x31b164,_0x4f4d4d),{'proactiveActions':_0x350886,'alignment':_0x26d34e[_0x6d49('0xfc')],'verticalAlignment':_0x26d34e[_0x6d49('0xfd')],'div_color':_0x26d34e[_0x6d49('0xfe')],'labelText':_0x26d34e[_0x6d49('0xff')],'text_color':_0x26d34e[_0x6d49('0x100')],'text_button_color':_0x26d34e[_0x6d49('0x101')],'button_color':_0x26d34e[_0x6d49('0x102')],'background_color':_0x26d34e['backgroundColor'],'hideWhenOffline':_0x26d34e[_0x6d49('0x103')],'interval':_0x26d34e['IntervalId']}));})[_0x6d49('0x1a')](handleError(_0xed82a0,null));};exports[_0x6d49('0x104')]=function(_0x4ba60e,_0x2d53bd){var _0x471417=_0x4ba60e[_0x6d49('0x45')]['id'];var _0x4560dc=_0x4ba60e['body'];var _0x8efbf0=0xc8;var _0x5a55e2=null;return db[_0x6d49('0xc6')][_0x6d49('0xc7')]({'isolationLevel':db['sequelize']['Transaction'][_0x6d49('0x105')][_0x6d49('0x106')]},function(_0x44372b){return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x471417},'transaction':_0x44372b})[_0x6d49('0x10')](function(_0x519ef0){if(_0x519ef0){return db['ChatApplication'][_0x6d49('0x27')]({'where':{'ChatWebsiteId':_0x471417},'transaction':_0x44372b})[_0x6d49('0x10')](function(){var _0x3e3f90=_[_0x6d49('0x2d')](_0x4560dc,function(_0x460d51){_0x460d51[_0x6d49('0x53')]=_0x471417;return _0x460d51;});return db[_0x6d49('0x107')][_0x6d49('0xc9')](_0x3e3f90,{'transaction':_0x44372b});});}else{_0x8efbf0=0x194;_0x5a55e2=[];}});})[_0x6d49('0x10')](function(){if(_0x8efbf0!==0x194){return db[_0x6d49('0x107')][_0x6d49('0x108')]({'where':{'ChatWebsiteId':_0x471417},'order':_0x6d49('0x8e')})[_0x6d49('0x10')](function(_0x318cb4){_0x5a55e2=_0x318cb4;});}})[_0x6d49('0x1a')](function(_0x53f455){_0x8efbf0=0x1f4;logger[_0x6d49('0x17')](_0x53f455[_0x6d49('0x28')]);if(_0x53f455[_0x6d49('0x29')]){delete _0x53f455[_0x6d49('0x29')];}_0x5a55e2=_0x53f455;})['finally'](function(){if(_0x5a55e2===null){_0x2d53bd[_0x6d49('0x1b')](_0x8efbf0);}else{if(_0x8efbf0===0x1f4){_0x2d53bd[_0x6d49('0x1d')](_0x8efbf0)['send'](_0x5a55e2);}else{_0x2d53bd[_0x6d49('0x1d')](_0x8efbf0)[_0x6d49('0x1e')](_0x5a55e2);}}});};exports[_0x6d49('0x109')]=function(_0x1b6276,_0x2254c3){var _0x3c8877={};var _0xc21f3e={};var _0xfa78dc;var _0xb0ddd0;return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x1b6276[_0x6d49('0x45')]['id']}})['then'](handleEntityNotFound(_0x2254c3,null))[_0x6d49('0x10')](function(_0x167801){if(_0x167801){_0xfa78dc=_0x167801;_0xc21f3e[_0x6d49('0x31')]=_[_0x6d49('0x46')](db['ChatApplication'][_0x6d49('0x2f')]);_0xc21f3e[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x1b6276[_0x6d49('0x32')]);_0xc21f3e[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0xc21f3e[_0x6d49('0x31')],_0xc21f3e[_0x6d49('0x32')]);_0x3c8877['attributes']=_[_0x6d49('0x34')](_0xc21f3e[_0x6d49('0x31')],qs[_0x6d49('0x36')](_0x1b6276['query'][_0x6d49('0x36')]));_0x3c8877[_0x6d49('0x35')]=_0x3c8877[_0x6d49('0x35')][_0x6d49('0x37')]?_0x3c8877[_0x6d49('0x35')]:_0xc21f3e[_0x6d49('0x31')];_0x3c8877[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x1b6276[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x3c8877['where']=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x1b6276[_0x6d49('0x32')],_0xc21f3e[_0x6d49('0x33')]));if(_0x1b6276['query']['filter']){_0x3c8877['where']=_[_0x6d49('0x3f')](_0x3c8877[_0x6d49('0x3c')],{'$or':_[_0x6d49('0x2d')](_0x3c8877[_0x6d49('0x35')],function(_0x2d5ed7){var _0x2b02f4={};_0x2b02f4[_0x2d5ed7]={'$like':'%'+_0x1b6276[_0x6d49('0x32')][_0x6d49('0x3e')]+'%'};return _0x2b02f4;})});}_0x3c8877=_['merge']({},_0x3c8877,_0x1b6276[_0x6d49('0x42')]);return _0xfa78dc[_0x6d49('0x109')](_0x3c8877);}})[_0x6d49('0x10')](function(_0x223c34){if(_0x223c34){_0xb0ddd0=_0x223c34[_0x6d49('0x37')];if(!_0x1b6276[_0x6d49('0x32')][_0x6d49('0x38')](_0x6d49('0x39'))){_0x3c8877['limit']=qs['limit'](_0x1b6276[_0x6d49('0x32')]['limit']);_0x3c8877[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x1b6276[_0x6d49('0x32')][_0x6d49('0x1f')]);}return _0xfa78dc[_0x6d49('0x109')](_0x3c8877);}})[_0x6d49('0x10')](function(_0x30dfe2){if(_0x30dfe2){return _0x30dfe2?{'count':_0xb0ddd0,'rows':_0x30dfe2}:null;}})[_0x6d49('0x10')](respondWithResult(_0x2254c3,null))['catch'](handleError(_0x2254c3,null));};exports[_0x6d49('0x10a')]=function(_0x19c39f,_0x198daa){return db[_0x6d49('0x10b')]['find']({'where':{'id':_0x19c39f[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x198daa,null))[_0x6d49('0x10')](function(_0x2d8f7b){if(_0x2d8f7b){return _0x2d8f7b['addProactiveActions'](_0x19c39f[_0x6d49('0x4a')][_0x6d49('0x5e')],_[_0x6d49('0xdb')](_0x19c39f['body'],[_0x6d49('0x5e'),'id'])||{});}})[_0x6d49('0x10')](respondWithResult(_0x198daa,null))[_0x6d49('0x1a')](handleError(_0x198daa,null));};exports[_0x6d49('0xf0')]=function(_0x210dfc,_0x8d9680){var _0x5e94c2={};var _0x5a9b12={};var _0x433986;var _0x1ae23e;return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x210dfc[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x8d9680,null))[_0x6d49('0x10')](function(_0x15537e){if(_0x15537e){_0x433986=_0x15537e;_0x5a9b12[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x10c')][_0x6d49('0x2f')]);_0x5a9b12[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x210dfc[_0x6d49('0x32')]);_0x5a9b12[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x5a9b12[_0x6d49('0x31')],_0x5a9b12[_0x6d49('0x32')]);_0x5e94c2['attributes']=_[_0x6d49('0x34')](_0x5a9b12[_0x6d49('0x31')],qs['fields'](_0x210dfc[_0x6d49('0x32')][_0x6d49('0x36')]));_0x5e94c2[_0x6d49('0x35')]=_0x5e94c2[_0x6d49('0x35')][_0x6d49('0x37')]?_0x5e94c2[_0x6d49('0x35')]:_0x5a9b12[_0x6d49('0x31')];_0x5e94c2[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x210dfc[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x5e94c2[_0x6d49('0x3c')]=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x210dfc[_0x6d49('0x32')],_0x5a9b12[_0x6d49('0x33')]));if(_0x210dfc['query'][_0x6d49('0x3e')]){_0x5e94c2[_0x6d49('0x3c')]=_['merge'](_0x5e94c2[_0x6d49('0x3c')],{'$or':_[_0x6d49('0x2d')](_0x5e94c2['attributes'],function(_0x590a33){var _0x53f55d={};_0x53f55d[_0x590a33]={'$like':'%'+_0x210dfc['query'][_0x6d49('0x3e')]+'%'};return _0x53f55d;})});}_0x5e94c2=_['merge']({},_0x5e94c2,_0x210dfc[_0x6d49('0x42')]);return _0x433986[_0x6d49('0xf0')](_0x5e94c2);}})[_0x6d49('0x10')](function(_0x77e0dd){if(_0x77e0dd){_0x1ae23e=_0x77e0dd['length'];if(!_0x210dfc[_0x6d49('0x32')][_0x6d49('0x38')](_0x6d49('0x39'))){_0x5e94c2[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x210dfc[_0x6d49('0x32')][_0x6d49('0x22')]);_0x5e94c2[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x210dfc['query'][_0x6d49('0x1f')]);}return _0x433986['getProactiveActions'](_0x5e94c2);}})[_0x6d49('0x10')](function(_0x2bc67f){if(_0x2bc67f){return _0x2bc67f?{'count':_0x1ae23e,'rows':_0x2bc67f}:null;}})[_0x6d49('0x10')](respondWithResult(_0x8d9680,null))[_0x6d49('0x1a')](handleError(_0x8d9680,null));};exports[_0x6d49('0x10d')]=function(_0x579d41,_0x382a69){var _0x5ab65f=_0x579d41[_0x6d49('0x32')][_0x6d49('0x10e')]===_0x6d49('0x10f')?_0x6d49('0x110'):_0x6d49('0x111');return db[_0x6d49('0x2e')]['find']({'attributes':['id',_0x5ab65f],'where':{'id':_0x579d41['params']['id']}})['then'](handleEntityNotFound(_0x382a69,null))['then'](function(_0xef9a7a){if(_0xef9a7a){var _0x2ccf8d=_0xef9a7a[_0x5ab65f];var _0x37e131=_0x2ccf8d&&_0x2ccf8d['items']?_0x2ccf8d[_0x6d49('0x112')]:[];_0x382a69['send']({'fromKey':_[_0x6d49('0x6a')](_0x2ccf8d[_0x6d49('0x113')])?undefined:_0x2ccf8d[_0x6d49('0x113')],'count':_0x37e131['length'],'rows':_0x37e131});}})['catch'](handleError(_0x382a69,null));};exports[_0x6d49('0x114')]=function(_0x2fbd67,_0xd96d46){var _0x17ff82={'raw':![],'where':{}};var _0x14787b={};var _0x524219={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x2fbd67['params']['id']}})['then'](handleEntityNotFound(_0xd96d46,null))[_0x6d49('0x10')](function(_0x1eef76){if(_0x1eef76){_0x14787b[_0x6d49('0x31')]=_[_0x6d49('0x46')](db['ChatOfflineMessage'][_0x6d49('0x2f')]);_0x14787b[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x2fbd67[_0x6d49('0x32')]);_0x14787b[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x14787b[_0x6d49('0x31')],_0x14787b[_0x6d49('0x32')]);_0x17ff82['attributes']=_[_0x6d49('0x34')](_0x14787b['model'],qs[_0x6d49('0x36')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x36')]));_0x17ff82[_0x6d49('0x35')]=_0x17ff82['attributes'][_0x6d49('0x37')]?_0x17ff82[_0x6d49('0x35')]:_0x14787b[_0x6d49('0x31')];if(!_0x2fbd67[_0x6d49('0x32')]['hasOwnProperty']('nolimit')){_0x17ff82['limit']=qs[_0x6d49('0x22')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x22')]);_0x17ff82['offset']=qs[_0x6d49('0x1f')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x17ff82[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x17ff82[_0x6d49('0x3c')]=qs['filters'](_[_0x6d49('0x3d')](_0x2fbd67[_0x6d49('0x32')],_0x14787b[_0x6d49('0x33')]));_0x17ff82[_0x6d49('0x3c')]['ChatWebsiteId']=_0x1eef76['id'];if(_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x3e')]){_0x17ff82['where']=_['merge'](_0x17ff82[_0x6d49('0x3c')],{'$or':_['map'](_0x17ff82[_0x6d49('0x35')],function(_0x113ada){var _0x32643f={};_0x32643f[_0x113ada]={'$like':'%'+_0x2fbd67['query']['filter']+'%'};return _0x32643f;})});}_0x17ff82=_[_0x6d49('0x3f')]({},_0x17ff82,_0x2fbd67['options']);return db[_0x6d49('0xc0')]['count']({'where':_0x17ff82[_0x6d49('0x3c')]})['then'](function(_0x35eae1){_0x524219[_0x6d49('0x21')]=_0x35eae1;if(_0x2fbd67['query']['includeAll']){_0x17ff82[_0x6d49('0x47')]=[{'all':!![]}];}else{_0x17ff82[_0x6d49('0x47')]=[{'model':db[_0x6d49('0x78')],'as':_0x6d49('0x115'),'required':![]},{'model':db[_0x6d49('0xc8')],'as':_0x6d49('0x116'),'required':![]}];}return db[_0x6d49('0xc0')][_0x6d49('0x58')](_0x17ff82);})[_0x6d49('0x10')](function(_0x500204){_0x524219[_0x6d49('0x43')]=_0x500204;return _0x524219;});}})['then'](respondWithFilteredResult(_0xd96d46,_0x17ff82))[_0x6d49('0x1a')](handleError(_0xd96d46,null));};exports[_0x6d49('0x117')]=function(_0x3483d8,_0x3e39d0){return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x3483d8[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x3e39d0,null))[_0x6d49('0x10')](function(_0x599b18){if(_0x599b18){return _0x599b18[_0x6d49('0x117')](_0x3483d8['body'][_0x6d49('0x5e')],_[_0x6d49('0xdb')](_0x3483d8[_0x6d49('0x4a')],[_0x6d49('0x5e'),'id'])||{})[_0x6d49('0xa3')](function(_0x41d9f9){for(var _0x5b2010=0x0;_0x5b2010<_0x3483d8[_0x6d49('0x4a')][_0x6d49('0x5e')][_0x6d49('0x37')];_0x5b2010+=0x1){socket[_0x6d49('0x118')](_0x6d49('0x119'),{'UserId':Number(_0x3483d8[_0x6d49('0x4a')][_0x6d49('0x5e')][_0x5b2010]),'ChatWebsiteId':Number(_0x3483d8[_0x6d49('0x45')]['id'])});}return _0x41d9f9;});}})[_0x6d49('0x10')](respondWithResult(_0x3e39d0,null))[_0x6d49('0x1a')](handleError(_0x3e39d0,null));};exports[_0x6d49('0x11a')]=function(_0xd7d577,_0x5636c2){return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0xd7d577[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x5636c2,null))['then'](function(_0x491431){if(_0x491431){return _0x491431[_0x6d49('0x11a')](_0xd7d577['query'][_0x6d49('0x5e')])[_0x6d49('0x10')](function(){if(_[_0x6d49('0x11b')](_0xd7d577['query']['ids'])){for(var _0x13cac8=0x0;_0x13cac8<_0xd7d577[_0x6d49('0x32')][_0x6d49('0x5e')][_0x6d49('0x37')];_0x13cac8+=0x1){socket[_0x6d49('0x118')]('userChatWebsite:remove',{'UserId':Number(_0xd7d577[_0x6d49('0x32')][_0x6d49('0x5e')][_0x13cac8]),'ChatWebsiteId':Number(_0xd7d577[_0x6d49('0x45')]['id'])});}}else{socket[_0x6d49('0x118')](_0x6d49('0x11c'),{'UserId':Number(_0xd7d577[_0x6d49('0x32')]['ids']),'ChatWebsiteId':Number(_0xd7d577[_0x6d49('0x45')]['id'])});}});}})[_0x6d49('0x10')](respondWithStatusCode(_0x5636c2,null))[_0x6d49('0x1a')](handleError(_0x5636c2,null));};exports[_0x6d49('0x11d')]=function(_0x210688,_0x55ebb3){var _0x1cd3ca={};var _0x30b06e={};var _0x43d388;var _0x4525a0;return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x210688[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x55ebb3,null))[_0x6d49('0x10')](function(_0x556b76){if(_0x556b76){_0x43d388=_0x556b76;_0x30b06e[_0x6d49('0x31')]=_[_0x6d49('0x46')](db['User'][_0x6d49('0x2f')]);_0x30b06e[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x210688['query']);_0x30b06e['filters']=_[_0x6d49('0x34')](_0x30b06e[_0x6d49('0x31')],_0x30b06e['query']);_0x1cd3ca[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x30b06e[_0x6d49('0x31')],qs[_0x6d49('0x36')](_0x210688[_0x6d49('0x32')][_0x6d49('0x36')]));_0x1cd3ca[_0x6d49('0x35')]=_0x1cd3ca[_0x6d49('0x35')][_0x6d49('0x37')]?_0x1cd3ca[_0x6d49('0x35')]:_0x30b06e['model'];_0x1cd3ca[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x210688[_0x6d49('0x32')]['sort']);_0x1cd3ca[_0x6d49('0x3c')]=qs['filters'](_[_0x6d49('0x3d')](_0x210688['query'],_0x30b06e[_0x6d49('0x33')]));if(_0x210688['query'][_0x6d49('0x3e')]){_0x1cd3ca[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x1cd3ca[_0x6d49('0x3c')],{'$or':_['map'](_0x1cd3ca[_0x6d49('0x35')],function(_0x4d31df){var _0x54e562={};_0x54e562[_0x4d31df]={'$like':'%'+_0x210688['query']['filter']+'%'};return _0x54e562;})});}_0x1cd3ca=_[_0x6d49('0x3f')]({},_0x1cd3ca,_0x210688[_0x6d49('0x42')]);return _0x43d388[_0x6d49('0x11d')](_0x1cd3ca);}})[_0x6d49('0x10')](function(_0x48c525){if(_0x48c525){_0x4525a0=_0x48c525[_0x6d49('0x37')];if(!_0x210688['query'][_0x6d49('0x38')]('nolimit')){_0x1cd3ca[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x210688['query'][_0x6d49('0x22')]);_0x1cd3ca['offset']=qs[_0x6d49('0x1f')](_0x210688[_0x6d49('0x32')][_0x6d49('0x1f')]);}return _0x43d388[_0x6d49('0x11d')](_0x1cd3ca);}})['then'](function(_0xb71105){if(_0xb71105){return _0xb71105?{'count':_0x4525a0,'rows':_0xb71105}:null;}})[_0x6d49('0x10')](respondWithResult(_0x55ebb3,null))[_0x6d49('0x1a')](handleError(_0x55ebb3,null));};
\ No newline at end of file
+var _0x0058=['emit','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','ejs','fs-extra','../../components/parsers/qs','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','html-to-text','jayson/promise','client','http','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','destroy','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','ChatWebsite','rawAttributes','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatWebsites','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ChatWebsiteId','findOne','Disposition','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','addLogo','sitepic','file','agentAvatar','addCustomerAvatar','filename','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','custom','isNil','server/files/images/logos/','server/files/images/avatars/','download','customerAvatar','showCustomerAvatar','notify','user-agent-parser','headers','user-agent','chat','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','ListId','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','ChatApplication','List','applications','Applications','priority','asc','account','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','lastName','x-real-port','referer','browser','version','format','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','firstName','messageId','update','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','files','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','transaction','Attachment','bulkCreate','MailServerOut','CloudProvider','Smtp','forwardOffline','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','MailAccountId','toPairsIn','mapValues','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','internal','Tags','color','tag','Command','getSnippet','timezone','interval','iftime\x20%s','indexOf','true','ONLINE','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','No\x20timezone','Interval','Intervals','../../config/license/util','getLicense','License','increment','chatLicenseExceeded','some','readFileSync','server/files/chat/iframe.ejs','remote','stringify','x-real-ip','connection','remoteAddress','virtual','alignment','verticalAlignment','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','finally','json','getApplications','chatProactiveAction','addProactiveActions','getProactiveActions','ChatProactiveAction','getFields','false','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x0058,0x129));var _0x8005=function(_0x21a5c8,_0x164ac7){_0x21a5c8=_0x21a5c8-0x0;var _0x1647a7=_0x0058[_0x21a5c8];return _0x1647a7;};'use strict';var BPromise=require(_0x8005('0x0'));var Mustache=require(_0x8005('0x1'));var util=require(_0x8005('0x2'));var path=require(_0x8005('0x3'));var ejs=require(_0x8005('0x4'));var fs=require('fs');var fs_extra=require(_0x8005('0x5'));var _=require('lodash');var querystring=require('querystring');var Redis=require('ioredis');var qs=require(_0x8005('0x6'));var logger=require('../../config/logger')(_0x8005('0x7'));var config=require(_0x8005('0x8'));var db=require('../../mysqldb')['db'];config[_0x8005('0x9')]=_[_0x8005('0xa')](config[_0x8005('0x9')],{'host':_0x8005('0xb'),'port':0x18eb});var socket=require(_0x8005('0xc'))(new Redis(config[_0x8005('0x9')]));require(_0x8005('0xd'))[_0x8005('0xe')](socket);var htmlToText=require(_0x8005('0xf'));var jayson=require(_0x8005('0x10'));var client=jayson[_0x8005('0x11')][_0x8005('0x12')]({'port':0x232c});var client9002=jayson[_0x8005('0x11')]['http']({'port':0x232a});var client9003=jayson[_0x8005('0x11')][_0x8005('0x12')]({'port':0x232b});var client9001=jayson['client']['http']({'port':0x2329});function respondWithRpcPromise(_0x5ea0bb,_0x2138d1,_0x1e17eb,_0x44d11b){return new BPromise(function(_0x474426,_0x2f18c8){var _0x44003b=_0x44d11b||client;return _0x44003b[_0x8005('0x13')](_0x5ea0bb,_0x1e17eb)[_0x8005('0x14')](function(_0x97b904){logger[_0x8005('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x2138d1,'request\x20sent');logger[_0x8005('0x16')](_0x8005('0x17'),_0x2138d1,_0x8005('0x18'),JSON['stringify'](_0x97b904));if(_0x97b904[_0x8005('0x19')]){if(_0x97b904['error'][_0x8005('0x1a')]===0x1f4){logger['error'](_0x8005('0x1b'),_0x2138d1,_0x97b904[_0x8005('0x19')]['message']);return _0x2f18c8(_0x97b904['error'][_0x8005('0x1c')]);}logger['error'](_0x8005('0x1b'),_0x2138d1,_0x97b904[_0x8005('0x19')][_0x8005('0x1c')]);return _0x474426(_0x97b904[_0x8005('0x19')][_0x8005('0x1c')]);}else{logger[_0x8005('0x15')](_0x8005('0x1b'),_0x2138d1,_0x8005('0x18'));_0x474426(_0x97b904[_0x8005('0x1d')][_0x8005('0x1c')]);}})[_0x8005('0x1e')](function(_0x252df8){logger['error'](_0x8005('0x1b'),_0x2138d1,_0x252df8);_0x2f18c8(_0x252df8);});});}function respondWithStatusCode(_0x498cc4,_0x13ac76){_0x13ac76=_0x13ac76||0xcc;return function(_0x533e3d){if(_0x533e3d){return _0x498cc4[_0x8005('0x1f')](_0x13ac76);}return _0x498cc4[_0x8005('0x20')](_0x13ac76)[_0x8005('0x21')]();};}function respondWithResult(_0x52f6ba,_0x16c284){_0x16c284=_0x16c284||0xc8;return function(_0x572053){if(_0x572053){return _0x52f6ba[_0x8005('0x20')](_0x16c284)['json'](_0x572053);}};}function respondWithFilteredResult(_0xe7235c,_0x1bb31a){return function(_0x1d0213){if(_0x1d0213){var _0x2a786d=typeof _0x1bb31a[_0x8005('0x22')]===_0x8005('0x23')&&typeof _0x1bb31a[_0x8005('0x24')]===_0x8005('0x23');var _0x442ee1=_0x1d0213[_0x8005('0x25')];var _0x2d70c7=_0x2a786d?0x0:_0x1bb31a[_0x8005('0x22')];var _0x1c8bf2=_0x2a786d?_0x1d0213['count']:_0x1bb31a['offset']+_0x1bb31a[_0x8005('0x24')];var _0x5550a6;if(_0x1c8bf2>=_0x442ee1){_0x1c8bf2=_0x442ee1;_0x5550a6=0xc8;}else{_0x5550a6=0xce;}_0xe7235c[_0x8005('0x20')](_0x5550a6);return _0xe7235c[_0x8005('0x26')](_0x8005('0x27'),_0x2d70c7+'-'+_0x1c8bf2+'/'+_0x442ee1)['json'](_0x1d0213);}return null;};}function saveUpdates(_0x2ecc95){return function(_0xe2813b){if(_0xe2813b){return _0xe2813b['update'](_0x2ecc95)[_0x8005('0x14')](function(_0x2fbb7d){return _0x2fbb7d;});}return null;};}function removeEntity(_0x14fe1f){return function(_0x2ccb72){if(_0x2ccb72){return _0x2ccb72[_0x8005('0x28')]()[_0x8005('0x14')](function(){var _0x384d64=_0x2ccb72[_0x8005('0x29')]({'plain':!![]});var _0x2e3bc5='ChatWebsites';return db[_0x8005('0x2a')][_0x8005('0x28')]({'where':{'type':_0x2e3bc5,'resourceId':_0x384d64['id']}})[_0x8005('0x14')](function(){return _0x2ccb72;});})[_0x8005('0x14')](function(){_0x14fe1f[_0x8005('0x20')](0xcc)[_0x8005('0x21')]();});}};}function handleEntityNotFound(_0x1e7138){return function(_0x3b51b2){if(!_0x3b51b2){_0x1e7138[_0x8005('0x1f')](0x194);}return _0x3b51b2;};}function handleError(_0x35f040,_0xdc9501){_0xdc9501=_0xdc9501||0x1f4;return function(_0x2b05f4){logger[_0x8005('0x19')](_0x2b05f4[_0x8005('0x2b')]);if(_0x2b05f4[_0x8005('0x2c')]){delete _0x2b05f4[_0x8005('0x2c')];}_0x35f040[_0x8005('0x20')](_0xdc9501)[_0x8005('0x2d')](_0x2b05f4);};}exports[_0x8005('0x2e')]=function(_0xdb4c12,_0x57c23c){var _0x1b72fc={'include':[{'model':db[_0x8005('0x2f')],'as':_0x8005('0x30')}]},_0x2a649c={},_0x598c45={'count':0x0,'rows':[]};var _0x1b9ae1=_['map'](db[_0x8005('0x31')][_0x8005('0x32')],function(_0x4c3b88){return{'name':_0x4c3b88['fieldName'],'type':_0x4c3b88['type'][_0x8005('0x33')]};});_0x2a649c[_0x8005('0x34')]=_[_0x8005('0x35')](_0x1b9ae1,'name');_0x2a649c[_0x8005('0x36')]=_['keys'](_0xdb4c12[_0x8005('0x36')]);_0x2a649c[_0x8005('0x37')]=_['intersection'](_0x2a649c['model'],_0x2a649c[_0x8005('0x36')]);_0x1b72fc[_0x8005('0x38')]=_[_0x8005('0x39')](_0x2a649c[_0x8005('0x34')],qs[_0x8005('0x3a')](_0xdb4c12[_0x8005('0x36')][_0x8005('0x3a')]));_0x1b72fc[_0x8005('0x38')]=_0x1b72fc[_0x8005('0x38')][_0x8005('0x3b')]?_0x1b72fc[_0x8005('0x38')]:_0x2a649c['model'];if(!_0xdb4c12['query'][_0x8005('0x3c')](_0x8005('0x3d'))){_0x1b72fc[_0x8005('0x24')]=qs[_0x8005('0x24')](_0xdb4c12[_0x8005('0x36')][_0x8005('0x24')]);_0x1b72fc[_0x8005('0x22')]=qs[_0x8005('0x22')](_0xdb4c12[_0x8005('0x36')][_0x8005('0x22')]);}_0x1b72fc[_0x8005('0x3e')]=qs[_0x8005('0x3f')](_0xdb4c12[_0x8005('0x36')][_0x8005('0x3f')]);_0x1b72fc[_0x8005('0x40')]=qs[_0x8005('0x37')](_[_0x8005('0x41')](_0xdb4c12['query'],_0x2a649c[_0x8005('0x37')]),_0x1b9ae1);if(_0xdb4c12['query'][_0x8005('0x42')]){_0x1b72fc[_0x8005('0x40')]=_['merge'](_0x1b72fc[_0x8005('0x40')],{'$or':_[_0x8005('0x35')](_0x1b9ae1,function(_0x447022){if(_0x447022[_0x8005('0x43')]!==_0x8005('0x44')){var _0x7858bb={};_0x7858bb[_0x447022[_0x8005('0x2c')]]={'$like':'%'+_0xdb4c12[_0x8005('0x36')]['filter']+'%'};return _0x7858bb;}})});}_0x1b72fc=_[_0x8005('0x45')]({},_0x1b72fc,_0xdb4c12[_0x8005('0x46')]);var _0x265d3b={'where':_0x1b72fc[_0x8005('0x40')]};return db[_0x8005('0x31')]['count'](_0x265d3b)[_0x8005('0x14')](function(_0xa22c9f){_0x598c45[_0x8005('0x25')]=_0xa22c9f;if(_0xdb4c12[_0x8005('0x36')][_0x8005('0x47')]){_0x1b72fc[_0x8005('0x48')]=[{'all':!![]}];}return db[_0x8005('0x31')][_0x8005('0x49')](_0x1b72fc);})[_0x8005('0x14')](function(_0x104ad1){_0x598c45[_0x8005('0x4a')]=_0x104ad1;return _0x598c45;})[_0x8005('0x14')](respondWithFilteredResult(_0x57c23c,_0x1b72fc))['catch'](handleError(_0x57c23c,null));};exports['show']=function(_0x46756d,_0x503ac8){var _0x570a77={'raw':![],'where':{'id':_0x46756d['params']['id']},'include':[{'model':db[_0x8005('0x2f')],'as':_0x8005('0x30')}]},_0x2f6271={};_0x2f6271[_0x8005('0x34')]=_[_0x8005('0x4b')](db[_0x8005('0x31')][_0x8005('0x32')]);_0x2f6271['query']=_[_0x8005('0x4b')](_0x46756d[_0x8005('0x36')]);_0x2f6271[_0x8005('0x37')]=_['intersection'](_0x2f6271['model'],_0x2f6271[_0x8005('0x36')]);_0x570a77[_0x8005('0x38')]=_[_0x8005('0x39')](_0x2f6271['model'],qs[_0x8005('0x3a')](_0x46756d[_0x8005('0x36')]['fields']));_0x570a77[_0x8005('0x38')]=_0x570a77['attributes'][_0x8005('0x3b')]?_0x570a77['attributes']:_0x2f6271['model'];if(_0x46756d[_0x8005('0x36')][_0x8005('0x47')]){_0x570a77[_0x8005('0x48')]=[{'all':!![]}];}_0x570a77=_[_0x8005('0x45')]({},_0x570a77,_0x46756d[_0x8005('0x46')]);return db[_0x8005('0x31')][_0x8005('0x4c')](_0x570a77)[_0x8005('0x14')](handleEntityNotFound(_0x503ac8,null))['then'](respondWithResult(_0x503ac8,null))['catch'](handleError(_0x503ac8,null));};exports[_0x8005('0x4d')]=function(_0x186f08,_0x55759d){return db[_0x8005('0x31')]['create'](_0x186f08[_0x8005('0x4e')],{})[_0x8005('0x14')](function(_0x24f844){var _0x4f7f22=_0x186f08[_0x8005('0x4f')][_0x8005('0x29')]({'plain':!![]});if(!_0x4f7f22)throw new Error(_0x8005('0x50'));if(_0x4f7f22[_0x8005('0x51')]==='user'){var _0x2bee05=_0x24f844[_0x8005('0x29')]({'plain':!![]});var _0x4d2f7d=_0x8005('0x52');return db[_0x8005('0x53')]['find']({'where':{'name':_0x4d2f7d,'userProfileId':_0x4f7f22[_0x8005('0x54')]},'raw':!![]})[_0x8005('0x14')](function(_0xe64dff){if(_0xe64dff&&_0xe64dff[_0x8005('0x55')]===0x0){return db[_0x8005('0x2a')][_0x8005('0x4d')]({'name':_0x2bee05['name'],'resourceId':_0x2bee05['id'],'type':_0xe64dff['name'],'sectionId':_0xe64dff['id']},{})['then'](function(){return _0x24f844;});}else{return _0x24f844;}})['catch'](function(_0x31661f){logger['error'](_0x8005('0x56'),_0x31661f);throw _0x31661f;});}return _0x24f844;})[_0x8005('0x14')](respondWithResult(_0x55759d,0xc9))[_0x8005('0x1e')](handleError(_0x55759d,null));};exports['update']=function(_0x49d2ee,_0x2dd9a6){if(_0x49d2ee[_0x8005('0x4e')]['id']){delete _0x49d2ee[_0x8005('0x4e')]['id'];}return db[_0x8005('0x31')]['find']({'where':{'id':_0x49d2ee[_0x8005('0x57')]['id']},'include':[{'model':db[_0x8005('0x2f')],'as':'mandatoryDispositionPause'}]})[_0x8005('0x14')](handleEntityNotFound(_0x2dd9a6,null))[_0x8005('0x14')](saveUpdates(_0x49d2ee['body'],null))[_0x8005('0x14')](respondWithResult(_0x2dd9a6,null))[_0x8005('0x1e')](handleError(_0x2dd9a6,null));};exports[_0x8005('0x28')]=function(_0x273d4f,_0x1430a5){return db[_0x8005('0x31')][_0x8005('0x4c')]({'where':{'id':_0x273d4f[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x1430a5,null))[_0x8005('0x14')](removeEntity(_0x1430a5,null))[_0x8005('0x1e')](handleError(_0x1430a5,null));};exports[_0x8005('0x58')]=function(_0x38123f,_0x4b18e5){return db[_0x8005('0x31')][_0x8005('0x58')]()[_0x8005('0x14')](respondWithResult(_0x4b18e5,null))[_0x8005('0x1e')](handleError(_0x4b18e5,null));};exports[_0x8005('0x59')]=function(_0x14490a,_0x343ecc){if(_0x14490a['body']['id']){delete _0x14490a[_0x8005('0x4e')]['id'];}return db[_0x8005('0x31')]['find']({'where':{'id':_0x14490a['params']['id']}})['then'](handleEntityNotFound(_0x343ecc,null))[_0x8005('0x14')](function(_0x5ef6e8){if(_0x5ef6e8){_0x14490a[_0x8005('0x4e')][_0x8005('0x5a')]=_0x5ef6e8['id'];return db['Disposition']['create'](_0x14490a[_0x8005('0x4e')]);}})['then'](respondWithResult(_0x343ecc,null))[_0x8005('0x1e')](handleError(_0x343ecc,null));};exports['getDispositions']=function(_0xeaf8b9,_0x5d680f){var _0x30da28={'raw':![],'where':{}};var _0x536c5e={};var _0x1e1879={'count':0x0,'rows':[]};return db[_0x8005('0x31')][_0x8005('0x5b')]({'where':{'id':_0xeaf8b9[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x5d680f,null))[_0x8005('0x14')](function(_0x435690){if(_0x435690){_0x536c5e['model']=_['keys'](db[_0x8005('0x5c')][_0x8005('0x32')]);_0x536c5e[_0x8005('0x36')]=_[_0x8005('0x4b')](_0xeaf8b9[_0x8005('0x36')]);_0x536c5e[_0x8005('0x37')]=_[_0x8005('0x39')](_0x536c5e['model'],_0x536c5e[_0x8005('0x36')]);_0x30da28[_0x8005('0x38')]=_['intersection'](_0x536c5e[_0x8005('0x34')],qs[_0x8005('0x3a')](_0xeaf8b9[_0x8005('0x36')][_0x8005('0x3a')]));_0x30da28[_0x8005('0x38')]=_0x30da28['attributes']['length']?_0x30da28[_0x8005('0x38')]:_0x536c5e[_0x8005('0x34')];if(!_0xeaf8b9[_0x8005('0x36')][_0x8005('0x3c')](_0x8005('0x3d'))){_0x30da28['limit']=qs[_0x8005('0x24')](_0xeaf8b9[_0x8005('0x36')][_0x8005('0x24')]);_0x30da28[_0x8005('0x22')]=qs[_0x8005('0x22')](_0xeaf8b9['query'][_0x8005('0x22')]);}_0x30da28['order']=qs[_0x8005('0x3f')](_0xeaf8b9[_0x8005('0x36')][_0x8005('0x3f')]);_0x30da28['where']=qs[_0x8005('0x37')](_['pick'](_0xeaf8b9[_0x8005('0x36')],_0x536c5e['filters']));_0x30da28[_0x8005('0x40')][_0x8005('0x5a')]=_0x435690['id'];if(_0xeaf8b9[_0x8005('0x36')][_0x8005('0x42')]){_0x30da28[_0x8005('0x40')]=_[_0x8005('0x45')](_0x30da28[_0x8005('0x40')],{'$or':_[_0x8005('0x35')](_0x30da28[_0x8005('0x38')],function(_0x543d22){var _0x5972d3={};_0x5972d3[_0x543d22]={'$like':'%'+_0xeaf8b9[_0x8005('0x36')][_0x8005('0x42')]+'%'};return _0x5972d3;})});}_0x30da28=_[_0x8005('0x45')]({},_0x30da28,_0xeaf8b9[_0x8005('0x46')]);return db[_0x8005('0x5c')][_0x8005('0x25')]({'where':_0x30da28['where']})[_0x8005('0x14')](function(_0x26d713){_0x1e1879['count']=_0x26d713;if(_0xeaf8b9[_0x8005('0x36')][_0x8005('0x47')]){_0x30da28[_0x8005('0x48')]=[{'all':!![]}];}return db[_0x8005('0x5c')][_0x8005('0x49')](_0x30da28);})[_0x8005('0x14')](function(_0x106964){_0x1e1879['rows']=_0x106964;return _0x1e1879;});}})[_0x8005('0x14')](respondWithFilteredResult(_0x5d680f,_0x30da28))[_0x8005('0x1e')](handleError(_0x5d680f,null));};exports['removeDispositions']=function(_0x4f1f9a,_0x11e85b){return db[_0x8005('0x31')][_0x8005('0x4c')]({'where':{'id':_0x4f1f9a[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x11e85b,null))[_0x8005('0x14')](function(_0x3af028){if(_0x3af028){return _0x3af028[_0x8005('0x5d')](_0x4f1f9a['query'][_0x8005('0x5e')]);}})[_0x8005('0x14')](respondWithStatusCode(_0x11e85b,null))[_0x8005('0x1e')](handleError(_0x11e85b,null));};exports['addAnswer']=function(_0x209a20,_0x36ba78){if(_0x209a20[_0x8005('0x4e')]['id']){delete _0x209a20[_0x8005('0x4e')]['id'];}return db['ChatWebsite'][_0x8005('0x4c')]({'where':{'id':_0x209a20['params']['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x36ba78,null))[_0x8005('0x14')](function(_0x55e576){if(_0x55e576){_0x209a20['body'][_0x8005('0x5a')]=_0x55e576['id'];return db[_0x8005('0x5f')][_0x8005('0x4d')](_0x209a20[_0x8005('0x4e')]);}})['then'](respondWithResult(_0x36ba78,null))['catch'](handleError(_0x36ba78,null));};exports[_0x8005('0x60')]=function(_0x4b7243,_0x272514){var _0x3610e5={'raw':![],'where':{}};var _0x3992a4={};var _0xeb478f={'count':0x0,'rows':[]};return db[_0x8005('0x31')][_0x8005('0x5b')]({'where':{'id':_0x4b7243[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x272514,null))[_0x8005('0x14')](function(_0x155257){if(_0x155257){_0x3992a4[_0x8005('0x34')]=_[_0x8005('0x4b')](db[_0x8005('0x5f')][_0x8005('0x32')]);_0x3992a4[_0x8005('0x36')]=_[_0x8005('0x4b')](_0x4b7243[_0x8005('0x36')]);_0x3992a4[_0x8005('0x37')]=_['intersection'](_0x3992a4[_0x8005('0x34')],_0x3992a4[_0x8005('0x36')]);_0x3610e5[_0x8005('0x38')]=_['intersection'](_0x3992a4['model'],qs[_0x8005('0x3a')](_0x4b7243[_0x8005('0x36')][_0x8005('0x3a')]));_0x3610e5[_0x8005('0x38')]=_0x3610e5[_0x8005('0x38')]['length']?_0x3610e5[_0x8005('0x38')]:_0x3992a4[_0x8005('0x34')];if(!_0x4b7243[_0x8005('0x36')][_0x8005('0x3c')](_0x8005('0x3d'))){_0x3610e5[_0x8005('0x24')]=qs[_0x8005('0x24')](_0x4b7243[_0x8005('0x36')][_0x8005('0x24')]);_0x3610e5[_0x8005('0x22')]=qs[_0x8005('0x22')](_0x4b7243[_0x8005('0x36')][_0x8005('0x22')]);}_0x3610e5[_0x8005('0x3e')]=qs['sort'](_0x4b7243['query'][_0x8005('0x3f')]);_0x3610e5[_0x8005('0x40')]=qs[_0x8005('0x37')](_[_0x8005('0x41')](_0x4b7243[_0x8005('0x36')],_0x3992a4[_0x8005('0x37')]));_0x3610e5['where'][_0x8005('0x5a')]=_0x155257['id'];if(_0x4b7243[_0x8005('0x36')][_0x8005('0x42')]){_0x3610e5[_0x8005('0x40')]=_[_0x8005('0x45')](_0x3610e5[_0x8005('0x40')],{'$or':_[_0x8005('0x35')](_0x3610e5[_0x8005('0x38')],function(_0x2f81f3){var _0x55feb0={};_0x55feb0[_0x2f81f3]={'$like':'%'+_0x4b7243[_0x8005('0x36')][_0x8005('0x42')]+'%'};return _0x55feb0;})});}_0x3610e5=_['merge']({},_0x3610e5,_0x4b7243['options']);return db['CannedAnswer']['count']({'where':_0x3610e5['where']})['then'](function(_0x3e3853){_0xeb478f[_0x8005('0x25')]=_0x3e3853;if(_0x4b7243[_0x8005('0x36')][_0x8005('0x47')]){_0x3610e5['include']=[{'all':!![]}];}return db[_0x8005('0x5f')][_0x8005('0x49')](_0x3610e5);})[_0x8005('0x14')](function(_0x19c9ed){_0xeb478f[_0x8005('0x4a')]=_0x19c9ed;return _0xeb478f;});}})[_0x8005('0x14')](respondWithFilteredResult(_0x272514,_0x3610e5))[_0x8005('0x1e')](handleError(_0x272514,null));};exports[_0x8005('0x61')]=function(_0x5f2d06,_0x21bab1){return db['ChatWebsite'][_0x8005('0x4c')]({'where':{'id':_0x5f2d06[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x21bab1,null))[_0x8005('0x14')](function(_0x55f785){if(_0x55f785){return _0x55f785[_0x8005('0x61')](_0x5f2d06[_0x8005('0x36')]['ids']);}})['then'](respondWithStatusCode(_0x21bab1,null))[_0x8005('0x1e')](handleError(_0x21bab1,null));};exports[_0x8005('0x62')]=function(_0xa11345,_0x4647b8){_0xa11345[_0x8005('0x4e')][_0x8005('0x63')]=_0xa11345[_0x8005('0x64')]['filename'];return db['ChatWebsite'][_0x8005('0x4c')]({'where':{'id':_0xa11345[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x4647b8,null))[_0x8005('0x14')](saveUpdates(_0xa11345[_0x8005('0x4e')],null))[_0x8005('0x14')](respondWithResult(_0x4647b8,null))[_0x8005('0x1e')](handleError(_0x4647b8,null));};exports['addAvatar']=function(_0x2b68cb,_0x1c7786){_0x2b68cb['body'][_0x8005('0x65')]=_0x2b68cb[_0x8005('0x64')]['filename'];return db[_0x8005('0x31')]['find']({'where':{'id':_0x2b68cb[_0x8005('0x57')]['id']}})['then'](handleEntityNotFound(_0x1c7786,null))['then'](saveUpdates(_0x2b68cb['body'],null))[_0x8005('0x14')](respondWithResult(_0x1c7786,null))[_0x8005('0x1e')](handleError(_0x1c7786,null));};exports[_0x8005('0x66')]=function(_0x1545ea,_0x2043d5){_0x1545ea[_0x8005('0x4e')]['customerAvatar']=_0x1545ea['file'][_0x8005('0x67')];return db[_0x8005('0x31')][_0x8005('0x4c')]({'where':{'id':_0x1545ea['params']['id']}})['then'](handleEntityNotFound(_0x2043d5,null))[_0x8005('0x14')](saveUpdates(_0x1545ea[_0x8005('0x4e')],null))[_0x8005('0x14')](respondWithResult(_0x2043d5,null))[_0x8005('0x1e')](handleError(_0x2043d5,null));};exports[_0x8005('0x68')]=function(_0x1339a3,_0x1ba213){_0x1339a3['body'][_0x8005('0x69')]=_0x1339a3[_0x8005('0x64')][_0x8005('0x67')];return db[_0x8005('0x31')][_0x8005('0x4c')]({'where':{'id':_0x1339a3[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x1ba213,null))[_0x8005('0x14')](saveUpdates(_0x1339a3[_0x8005('0x4e')],null))[_0x8005('0x14')](respondWithResult(_0x1ba213,null))[_0x8005('0x1e')](handleError(_0x1ba213,null));};exports[_0x8005('0x6a')]=function(_0x30e1c1,_0x34f9e2){var _0x19857d=path[_0x8005('0x6b')](config[_0x8005('0x6c')],_0x8005('0x6d'));var _0x210076={'where':{'id':_0x30e1c1[_0x8005('0x57')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x347796=![];return require('../../config/license/util')['getLicense']()[_0x8005('0x14')](function(_0x4afa81){if(_0x4afa81){_0x347796=_0x4afa81[_0x8005('0x6e')];}})[_0x8005('0x14')](function(){return db[_0x8005('0x31')][_0x8005('0x4c')](_0x210076);})[_0x8005('0x14')](handleEntityNotFound(_0x34f9e2,null))['then'](function(_0x5e9784){if(_0x5e9784){if(!_[_0x8005('0x6f')](_0x5e9784['sitepic'])){if(fs['existsSync'](path[_0x8005('0x6b')](config[_0x8005('0x6c')],_0x8005('0x70'),_0x5e9784[_0x8005('0x63')]))&&_0x347796){_0x19857d=path['join'](config['root'],_0x8005('0x70'),_0x5e9784[_0x8005('0x63')]);}}return _0x34f9e2['download'](_0x19857d);}})[_0x8005('0x1e')](handleError(_0x34f9e2,null));};exports['getAvatar']=function(_0x4e80ec,_0x57cf23){var _0x1f353c=path[_0x8005('0x6b')](config[_0x8005('0x6c')],'server/files/images/avatars/default_avatar.png');var _0x37f9e4={'where':{'id':_0x4e80ec[_0x8005('0x57')]['id']},'attributes':['id',_0x8005('0x65')],'raw':!![]};return db['ChatWebsite'][_0x8005('0x4c')](_0x37f9e4)[_0x8005('0x14')](handleEntityNotFound(_0x57cf23,null))['then'](function(_0x11431b){if(_0x11431b){if(!_[_0x8005('0x6f')](_0x11431b[_0x8005('0x65')])){if(fs['existsSync'](path[_0x8005('0x6b')](config[_0x8005('0x6c')],_0x8005('0x71'),_0x11431b['agentAvatar']))){_0x1f353c=path[_0x8005('0x6b')](config['root'],'server/files/images/avatars/',_0x11431b['agentAvatar']);}}return _0x57cf23[_0x8005('0x72')](_0x1f353c);}})[_0x8005('0x1e')](handleError(_0x57cf23,null));};exports['getCustomerAvatar']=function(_0x610578,_0x5183b4){var _0x41355c=path[_0x8005('0x6b')](config[_0x8005('0x6c')],'server/files/images/avatars/customer_avatar.png');var _0xbf2ea6={'where':{'id':_0x610578[_0x8005('0x57')]['id']},'attributes':['id',_0x8005('0x73'),_0x8005('0x74')],'raw':!![]};return db[_0x8005('0x31')][_0x8005('0x4c')](_0xbf2ea6)[_0x8005('0x14')](handleEntityNotFound(_0x5183b4,null))['then'](function(_0x4420f5){if(_0x4420f5){if(!_['isNil'](_0x4420f5[_0x8005('0x73')])){if(fs['existsSync'](path[_0x8005('0x6b')](config['root'],_0x8005('0x71'),_0x4420f5['customerAvatar']))&&_0x4420f5['showCustomerAvatar']){_0x41355c=path[_0x8005('0x6b')](config['root'],_0x8005('0x71'),_0x4420f5[_0x8005('0x73')]);}}return _0x5183b4[_0x8005('0x72')](_0x41355c);}})[_0x8005('0x1e')](handleError(_0x5183b4,null));};exports['getSystemAvatar']=function(_0x9e70a1,_0x145a30){var _0x5b1089=path[_0x8005('0x6b')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x3002da={'where':{'id':_0x9e70a1[_0x8005('0x57')]['id']},'attributes':['id',_0x8005('0x69')],'raw':!![]};return db['ChatWebsite'][_0x8005('0x4c')](_0x3002da)[_0x8005('0x14')](handleEntityNotFound(_0x145a30,null))['then'](function(_0x4ad14f){if(_0x4ad14f){if(!_[_0x8005('0x6f')](_0x4ad14f[_0x8005('0x69')])){if(fs['existsSync'](path[_0x8005('0x6b')](config['root'],_0x8005('0x71'),_0x4ad14f[_0x8005('0x69')]))){_0x5b1089=path[_0x8005('0x6b')](config['root'],_0x8005('0x71'),_0x4ad14f[_0x8005('0x69')]);}}return _0x145a30['download'](_0x5b1089);}})[_0x8005('0x1e')](handleError(_0x145a30,null));};exports[_0x8005('0x75')]=function(_0x4eb4cf,_0xbfc925){var _0x38a5a9=require(_0x8005('0x76'));var _0x1df53d=new _0x38a5a9();var _0x53131c=_0x1df53d['setUA'](_0x4eb4cf[_0x8005('0x77')][_0x8005('0x78')])['getResult']();var _0xd1e57f={'body':_0x4eb4cf[_0x8005('0x4e')],'channel':_0x8005('0x79')};var _0x3891a5=[];var _0x4dbea5=[];var _0x425daf={};var _0x2d31b3=![];return db[_0x8005('0x7a')]['describe']()[_0x8005('0x14')](function(_0x601395){if(!_0x601395){throw new db[(_0x8005('0x7b'))][(_0x8005('0x7c'))]('no\x20available\x20attributes');}_0x3891a5=_[_0x8005('0x7d')](_[_0x8005('0x4b')](_0x601395),[_0x8005('0x7e'),_0x8005('0x7f')]);_0x4dbea5=_[_0x8005('0x7d')](_[_0x8005('0x4b')](_0x601395),[_0x8005('0x7e'),'updatedAt','CompanyId',_0x8005('0x80')]);if(_0x4eb4cf[_0x8005('0x4e')]['id']){delete _0x4eb4cf[_0x8005('0x4e')]['id'];}if(_[_0x8005('0x6f')](_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x81')])){throw new db[(_0x8005('0x7b'))][(_0x8005('0x7c'))](_0x8005('0x82'));}if(_[_0x8005('0x6f')](_0x4eb4cf['body'][_0x8005('0x4e')])||_0x4eb4cf[_0x8005('0x4e')]['body']===''){throw new db[(_0x8005('0x7b'))][(_0x8005('0x7c'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x8005('0x6f')](_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x83')])){throw new db[(_0x8005('0x7b'))][(_0x8005('0x7c'))](_0x8005('0x84')+_0x4dbea5);}if(!_[_0x8005('0x85')](_0x4dbea5,_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x83')])){throw new db['Sequelize'][(_0x8005('0x7c'))](_0x8005('0x86')+_0x4dbea5);}_0x425daf[_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x83')]]=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x81')];})[_0x8005('0x14')](function(){return db[_0x8005('0x31')]['find']({'where':{'id':_0x4eb4cf[_0x8005('0x57')]['id']},'include':[{'model':db[_0x8005('0x87')],'as':'List','include':[{'model':db['CmContact'],'as':_0x8005('0x88'),'where':_0x425daf,'limit':0x1,'order':[[_0x8005('0x7f'),_0x8005('0x89')]]}]},{'model':db[_0x8005('0x8a')],'as':'Applications'}]});})[_0x8005('0x14')](handleEntityNotFound(_0xbfc925,null))[_0x8005('0x14')](function(_0x9e88a4){if(_0x9e88a4&&_0x9e88a4[_0x8005('0x8b')]){_0xd1e57f['account']=_0x9e88a4;_0xd1e57f[_0x8005('0x8c')]=_0x9e88a4[_0x8005('0x8d')];_0xd1e57f['list']=_0x9e88a4[_0x8005('0x8b')];_0xd1e57f[_0x8005('0x8c')]=_['orderBy'](_0xd1e57f['applications'],[_0x8005('0x8e')],[_0x8005('0x8f')]);if(_0xd1e57f['account'][_0x8005('0x8d')]){delete _0xd1e57f['account'][_0x8005('0x8d')];}if(_0xd1e57f[_0x8005('0x90')][_0x8005('0x8b')]&&_0xd1e57f[_0x8005('0x90')][_0x8005('0x8b')][_0x8005('0x88')][_0x8005('0x3b')]){return _0xd1e57f[_0x8005('0x90')][_0x8005('0x8b')][_0x8005('0x88')][0x0];}var _0x5cc46b=_[_0x8005('0xa')](_0x4eb4cf[_0x8005('0x4e')],{'firstName':_0x4eb4cf['body'][_0x8005('0x81')],'ListId':_0x9e88a4[_0x8005('0x80')]});_0x5cc46b[_0x4eb4cf['body'][_0x8005('0x83')]]=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x81')];return db[_0x8005('0x7a')]['create'](_0x5cc46b,{'fields':_0x3891a5,'raw':!![]});}})['then'](handleEntityNotFound(_0xbfc925,null))[_0x8005('0x14')](function(_0x47f769){_0xd1e57f[_0x8005('0x91')]=_0x47f769;var _0x14e694=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x92')];if(_0x4eb4cf[_0x8005('0x77')][_0x8005('0x93')]){_0x14e694=_0x4eb4cf['headers'][_0x8005('0x93')];}else if(_0x4eb4cf['headers'][_0x8005('0x94')]){_0x14e694=_[_0x8005('0x95')](_0x4eb4cf[_0x8005('0x77')][_0x8005('0x94')]['split'](','));}if(_0x47f769){var _0x3dc2f7={'ContactId':_0x47f769['id'],'ChatWebsiteId':_0x4eb4cf[_0x8005('0x57')]['id'],'from':(_0x47f769['firstName']||'')+'\x20'+(_0x47f769[_0x8005('0x96')]||''),'customerIp':_0x14e694,'customerPort':_0x4eb4cf[_0x8005('0x77')][_0x8005('0x97')]?_0x4eb4cf[_0x8005('0x77')][_0x8005('0x97')]:null,'referer':_0x4eb4cf[_0x8005('0x4e')][_0x8005('0x98')],'browserName':_0x53131c[_0x8005('0x99')][_0x8005('0x2c')]&&_0x53131c[_0x8005('0x99')][_0x8005('0x9a')]?util[_0x8005('0x9b')]('%s\x20%s',_0x53131c[_0x8005('0x99')][_0x8005('0x2c')],_0x53131c[_0x8005('0x99')][_0x8005('0x9a')]):_0x8005('0x9c'),'browserVersion':_0x53131c[_0x8005('0x99')]['version']||_0x8005('0x9c'),'osName':util[_0x8005('0x9b')]('%s\x20%s',_0x53131c['os'][_0x8005('0x2c')],_0x53131c['os'][_0x8005('0x9a')]),'osVersion':_0x53131c['os'][_0x8005('0x9a')],'deviceModel':_0x53131c[_0x8005('0x9d')][_0x8005('0x34')]&&_0x53131c[_0x8005('0x9d')][_0x8005('0x9e')]?util[_0x8005('0x9b')](_0x8005('0x9f'),_0x53131c[_0x8005('0x9d')][_0x8005('0x34')],_0x53131c[_0x8005('0x9d')]['vendor'],_0x53131c['device'][_0x8005('0x43')]):null,'deviceVendor':_0x53131c[_0x8005('0x9d')][_0x8005('0x9e')],'deviceType':_0x53131c[_0x8005('0x9d')][_0x8005('0x43')],'formData':JSON['stringify'](_0x4eb4cf[_0x8005('0x4e')])};var _0x2a6fed={'ChatWebsiteId':_0x4eb4cf[_0x8005('0x57')]['id'],'closed':![]};if(_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa0')]){_0x2a6fed[_0x8005('0xa0')]=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa0')];return db[_0x8005('0xa1')]['find']({'where':_0x2a6fed})[_0x8005('0x14')](function(_0x1e379b){if(_0x1e379b){return[_0x1e379b,![]];}_0x3dc2f7[_0x8005('0xa0')]=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa0')];_0x3dc2f7[_0x8005('0xa2')]=_0x4eb4cf[_0x8005('0x4e')]['externalUrl'];return db['ChatInteraction']['create'](_0x3dc2f7)['then'](function(_0x1f24d7){return[_0x1f24d7,!![]];});});}_0x2a6fed[_0x8005('0xa3')]=_0x47f769['id'];if(_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa4')]&&_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa4')]['id']){_0x2a6fed['id']=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa4')]['id'];return db['ChatInteraction']['find']({'where':_0x2a6fed})[_0x8005('0x14')](function(_0x13d3e2){if(_0x13d3e2){return[_0x13d3e2,![]];}return db[_0x8005('0xa1')]['create'](_0x3dc2f7)[_0x8005('0x14')](function(_0x329a09){return[_0x329a09,!![]];});});}return db[_0x8005('0xa1')]['create'](_0x3dc2f7)[_0x8005('0x14')](function(_0x295ebf){return[_0x295ebf,!![]];});}})[_0x8005('0xa5')](function(_0x1f526f,_0x1df7d1){if(_0x1f526f){_0x2d31b3=_0x1df7d1;if(!_0x1df7d1){var _0x5248a2={'from':(_0xd1e57f[_0x8005('0x91')][_0x8005('0xa6')]||'')+'\x20'+(_0xd1e57f[_0x8005('0x91')][_0x8005('0x96')]||'')};if(_0x4eb4cf['body'][_0x8005('0xa0')]&&_0x4eb4cf['body'][_0x8005('0xa7')]&&_0x4eb4cf[_0x8005('0x4e')]['threadId']!=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa7')]){_0x5248a2[_0x8005('0xa0')]=_0x4eb4cf[_0x8005('0x4e')][_0x8005('0xa7')];}return _0x1f526f[_0x8005('0xa8')](_0x5248a2);}else{return _0x1f526f;}}})[_0x8005('0x14')](function(_0x504920){_0xd1e57f[_0x8005('0xa4')]=_0x504920[_0x8005('0x29')]({'plain':!![]});_0xd1e57f[_0x8005('0xa4')]['created']=_0x2d31b3;if(_0xd1e57f[_0x8005('0xa4')][_0x8005('0xa9')]){if(_0xd1e57f[_0x8005('0x90')][_0x8005('0xaa')]){_0xd1e57f[_0x8005('0x8c')][_0x8005('0xab')]({'id':0x0,'priority':_0xd1e57f[_0x8005('0x8c')]['length']+0x1,'app':_0x8005('0xac'),'appdata':_0x8005('0xad'),'interval':_0x8005('0xae')});}}return db[_0x8005('0xaf')][_0x8005('0x4d')]({'body':_0x4eb4cf[_0x8005('0x4e')]['body'],'ChatWebsiteId':_0x4eb4cf[_0x8005('0x57')]['id'],'ChatInteractionId':_0x504920['id'],'direction':'in','ContactId':_0xd1e57f[_0x8005('0x91')]['id'],'AttachmentId':_0x4eb4cf['body']['AttachmentId']});})[_0x8005('0x14')](function(_0x472697){_0xd1e57f[_0x8005('0x1c')]=_0x472697;if(_0xd1e57f[_0x8005('0xa4')][_0x8005('0xb0')]){return db[_0x8005('0xb1')]['find']({'attributes':['id',_0x8005('0x2c')],'where':{'id':_0xd1e57f[_0x8005('0xa4')][_0x8005('0xb0')]}})[_0x8005('0x14')](function(_0x51ea51){if(_0x51ea51){_0xd1e57f['applications'][_0x8005('0xb2')]({'id':0x0,'priority':0x0,'app':_0x8005('0xb3'),'appdata':_0x51ea51[_0x8005('0x2c')]+','+(_0xd1e57f['account'][_0x8005('0xb4')]||0xa),'interval':_0x8005('0xae')});_0xd1e57f[_0x8005('0xb5')]=!![];}return respondWithRpcPromise(_0x8005('0xb6'),_0x8005('0xb7'),_0xd1e57f);});}return respondWithRpcPromise('Start',_0x8005('0xb7'),_0xd1e57f);})[_0x8005('0x14')](function(_0x44d5e9){respondWithRpcPromise(_0x8005('0xb8'),_0x8005('0xb8'),{'event':'notify','message':_0x44d5e9},client9002);return _0x44d5e9;})[_0x8005('0x14')](respondWithResult(_0xbfc925,null))[_0x8005('0x1e')](handleError(_0xbfc925,null));};exports[_0x8005('0xb9')]=function(_0x2d211c,_0x47a2e6){var _0x527abb,_0x564255,_0x40b86f;var _0x18ec12=[];var _0x24fa5f={};var _0x387b52=_0x2d211c[_0x8005('0xba')]||[];var _0x4ab1bd=[];var _0x574b9a;return db[_0x8005('0x7a')][_0x8005('0x58')]()[_0x8005('0x14')](function(_0x245f37){if(!_0x245f37){throw new db[(_0x8005('0x7b'))][(_0x8005('0x7c'))]('no\x20available\x20attributes');}_0x18ec12=_[_0x8005('0x7d')](_[_0x8005('0x4b')](_0x245f37),['createdAt',_0x8005('0x7f'),'CompanyId',_0x8005('0x80')]);if(_0x2d211c[_0x8005('0x4e')]['id']){delete _0x2d211c['body']['id'];}if(_[_0x8005('0x6f')](_0x2d211c['body'][_0x8005('0x81')])){throw _0x47a2e6[_0x8005('0x20')](0x1f4)['send'](new db['Sequelize'][(_0x8005('0x7c'))](_0x8005('0x82')));}if(_['isNil'](_0x2d211c['body'][_0x8005('0x4e')])||_0x2d211c['body']['body']===''){throw _0x47a2e6[_0x8005('0x20')](0x1f4)['send'](new db[(_0x8005('0x7b'))][(_0x8005('0x7c'))](_0x8005('0xbb')));}if(_[_0x8005('0x6f')](_0x2d211c[_0x8005('0x4e')][_0x8005('0xbc')])){throw _0x47a2e6[_0x8005('0x20')](0x1f4)[_0x8005('0x2d')](new db[(_0x8005('0x7b'))]['ValidationError']('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x18ec12));}if(!_['includes'](_0x18ec12,_0x2d211c[_0x8005('0x4e')][_0x8005('0xbc')])){throw _0x47a2e6[_0x8005('0x20')](0x1f4)[_0x8005('0x2d')](new db[(_0x8005('0x7b'))][(_0x8005('0x7c'))](_0x8005('0xbd')+_0x18ec12));}_0x24fa5f[_0x2d211c[_0x8005('0x4e')][_0x8005('0xbc')]]=_0x2d211c['body'][_0x8005('0x81')];})[_0x8005('0x14')](function(){return db[_0x8005('0x31')][_0x8005('0x4c')]({'where':{'id':_0x2d211c[_0x8005('0x57')]['id']},'include':[{'model':db['CmList'],'as':_0x8005('0x8b')},{'model':db[_0x8005('0xbe')],'as':'MailAccount'}]});})[_0x8005('0x14')](handleEntityNotFound(_0x47a2e6,null))[_0x8005('0x14')](function(_0x26136a){if(_0x26136a&&_0x26136a[_0x8005('0x8b')]){_0x564255=_0x26136a;var _0x15bc5f=_[_0x8005('0xa')](_0x2d211c[_0x8005('0x4e')],{'firstName':_0x2d211c['body'][_0x8005('0x81')],'phone':_0x2d211c[_0x8005('0x4e')][_0x8005('0x81')],'ListId':_0x26136a[_0x8005('0x80')]});_0x15bc5f[_0x2d211c[_0x8005('0x4e')][_0x8005('0xbc')]]=_0x2d211c[_0x8005('0x4e')]['from'];return db[_0x8005('0x7a')]['findOrCreate']({'where':_0x24fa5f,'defaults':_0x15bc5f});}})[_0x8005('0xa5')](function(_0x106eeb){if(_0x106eeb){_0x40b86f=_0x106eeb;var _0x4604f1=fs['readFileSync'](path[_0x8005('0x6b')](config[_0x8005('0x6c')],_0x8005('0xbf')),_0x8005('0xc0'));var _0x5e86b6=ejs[_0x8005('0xc1')](_0x4604f1,{'body':_[_0x8005('0xc2')](_0x2d211c['body'][_0x8005('0x4e')]),'bodyTitle':_0x564255['offlineMessageBody']});return db[_0x8005('0xc3')][_0x8005('0x4d')]({'body':_0x5e86b6,'plainBody':htmlToText[_0x8005('0xc4')](_0x5e86b6),'ContactId':_0x106eeb['id'],'ChatWebsiteId':_0x564255['id']});}})[_0x8005('0x14')](function(_0x2230a0){_0x574b9a=_0x2230a0;if(_0x387b52[_0x8005('0x3b')]){var _0x36f6f8=_0x387b52['map'](function(_0x29b0e5){return{'name':_0x29b0e5[_0x8005('0xc5')],'basename':_0x29b0e5['filename'],'type':_0x29b0e5[_0x8005('0xc6')],'ChatOfflineMessageId':_0x2230a0['id']};});_0x4ab1bd=_0x36f6f8[_0x8005('0x35')](_0x30ab9a=>{var _0x10a5dc={'filename':_0x30ab9a[_0x8005('0x2c')],'path':path[_0x8005('0x6b')](config[_0x8005('0x6c')],_0x8005('0xc7'),_0x8005('0xba'),_0x8005('0xc8'),_0x8005('0xc9'),_0x30ab9a[_0x8005('0xca')])};return _0x10a5dc;});if(!_0x564255[_0x8005('0xcb')]){return db['sequelize'][_0x8005('0xcc')](function(_0x4302f7){return db[_0x8005('0xcd')][_0x8005('0xce')](_0x36f6f8,{'transaction':_0x4302f7});});}}})['then'](function(){if(_0x574b9a){_0x527abb=_0x574b9a;return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x8005('0xcf')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x8005('0xd0')],'as':_0x8005('0xd0'),'raw':!![]}]}]});}})[_0x8005('0x14')](function(_0x2b28f5){if(_0x2b28f5&&_0x2b28f5[_0x8005('0xd1')]&&_0x564255[_0x8005('0xd2')]&&_0x564255['forwardOfflineAddress']){var _0xd2bcf3=_0x2b28f5[_0x8005('0xd3')]();return respondWithRpcPromise(_0x8005('0xd4'),_0x8005('0xd5'),{'account':_0xd2bcf3,'message':{'from':util[_0x8005('0x9b')](_0x8005('0xd6'),_0x2b28f5[_0x8005('0x2c')],_0x2b28f5[_0x8005('0xd7')]||_0x2b28f5[_0x8005('0xd1')]['user']),'to':_0x564255[_0x8005('0xd8')],'subject':_0x564255['offlineMessageSubject'],'html':_0x527abb[_0x8005('0x4e')],'attachments':_0x4ab1bd}},client9003)[_0x8005('0x14')](function(){return _0x527abb;})[_0x8005('0x1e')](function(_0x14311f){logger[_0x8005('0x19')](_0x14311f);});}})[_0x8005('0x14')](function(){if(_0x564255&&_0x564255[_0x8005('0xcb')]&&_0x564255[_0x8005('0xd9')]){var _0x50475c=[];if(_0x387b52[_0x8005('0x3b')]){_0x50475c=_0x387b52[_0x8005('0x35')](function(_0x3a0f5a){return{'name':_0x3a0f5a['originalname'],'basename':_0x3a0f5a[_0x8005('0x67')],'type':_0x3a0f5a[_0x8005('0xc6')],'ChatOfflineMessageId':_0x574b9a['id']};});}var _0x2137c0;if(!_[_0x8005('0x6f')](_0x564255['subjectOffline'])){var _0x53744f=_[_0x8005('0x35')](_0x2d211c[_0x8005('0x4e')],function(_0xa8f330){return _0xa8f330;});var _0x2c473f=_[_0x8005('0xda')](_0x53744f)[0x0];var _0x48eec5=_[_0x8005('0xdb')](_0x2c473f,function(_0x43b723){return _0x43b723;});_0x2137c0=_0x48eec5[0x1][_0x564255['subjectOffline']];}var _0x34c93={'from':_0x40b86f[_0x8005('0xd7')],'firstName':_0x40b86f[_0x8005('0xa6')],'lastName':_0x40b86f[_0x8005('0x96')],'mapKey':_0x8005('0xd7'),'message':{'from':_0x40b86f['email'],'to':_0x564255[_0x8005('0xbe')][_0x8005('0xd7')],'cc':'','subject':_[_0x8005('0x6f')](_0x2137c0)?_0x564255['offlineMessageSubject']:_0x2137c0,'messageId':'','sentAt':new Date(),'attach':_0x50475c[_0x8005('0x3b')],'attachments':_0x50475c,'originChannel':'Chat','ChatWebsiteId':_0x564255['id'],'ChatOfflineMessageId':_0x527abb['id'],'originTo':_0x564255[_0x8005('0xbe')][_0x8005('0xd7')]},'body':_0x527abb[_0x8005('0x4e')]};var _0x4a3744={'account':{'id':_0x564255[_0x8005('0xd9')]},'body':_0x34c93,'log':_0x8005('0xdc')};return respondWithRpcPromise('NotifyMailAccount',_0x8005('0xdd'),_0x4a3744,client9001)['then'](function(){return _0x527abb;})['catch'](function(_0x16e51b){logger[_0x8005('0x19')](_0x16e51b);});}return;})[_0x8005('0x14')](function(){if(_0x527abb){return _0x527abb;}})['then'](respondWithResult(_0x47a2e6,null))['catch'](function(_0x557157){logger[_0x8005('0x19')](_0x8005('0x1e'),_0x557157);for(var _0x21a879 of _0x387b52){var _0x19c4dd=path[_0x8005('0x6b')](config[_0x8005('0x6c')],_0x8005('0xc7'),_0x8005('0xba'),'attachments',_0x8005('0xc9'),_0x21a879[_0x8005('0x67')]);fs_extra[_0x8005('0xde')](_0x19c4dd)[_0x8005('0x1e')](function(_0x21ba00){logger[_0x8005('0x19')](_0x8005('0xdf'),_0x19c4dd,_0x21ba00);});}});};exports[_0x8005('0xe0')]=function(_0x488a47,_0x352238){return db['ChatInteraction'][_0x8005('0x4c')]({'where':{'id':_0x488a47[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x352238,null))[_0x8005('0x14')](function(_0x2eef53){if(_0x2eef53){return _0x2eef53[_0x8005('0xe0')](_0x488a47['body'][_0x8005('0x5e')],_[_0x8005('0xe1')](_0x488a47[_0x8005('0x4e')],[_0x8005('0x5e'),'id'])||{});}})[_0x8005('0x14')](respondWithResult(_0x352238,null))[_0x8005('0x1e')](handleError(_0x352238,null));};exports[_0x8005('0xe2')]=function(_0x5d1552,_0x4f71a4){var _0x52ed50={'raw':![],'where':{}};var _0x1c6252={};var _0x278214={'count':0x0,'rows':[]};return db[_0x8005('0x31')][_0x8005('0x5b')]({'where':{'id':_0x5d1552[_0x8005('0x57')]['id']}})['then'](handleEntityNotFound(_0x4f71a4,null))[_0x8005('0x14')](function(_0x19c2db){if(_0x19c2db){_0x1c6252[_0x8005('0x34')]=_[_0x8005('0x4b')](db[_0x8005('0xa1')][_0x8005('0x32')]);_0x1c6252[_0x8005('0x36')]=_[_0x8005('0x4b')](_0x5d1552[_0x8005('0x36')]);_0x1c6252[_0x8005('0x37')]=_[_0x8005('0x39')](_0x1c6252[_0x8005('0x34')],_0x1c6252[_0x8005('0x36')]);_0x52ed50[_0x8005('0x38')]=_['intersection'](_0x1c6252[_0x8005('0x34')],qs[_0x8005('0x3a')](_0x5d1552[_0x8005('0x36')][_0x8005('0x3a')]));_0x52ed50[_0x8005('0x38')]=_0x52ed50[_0x8005('0x38')][_0x8005('0x3b')]?_0x52ed50['attributes']:_0x1c6252[_0x8005('0x34')];if(!_0x5d1552['query']['hasOwnProperty'](_0x8005('0x3d'))){_0x52ed50['limit']=qs[_0x8005('0x24')](_0x5d1552[_0x8005('0x36')][_0x8005('0x24')]);_0x52ed50[_0x8005('0x22')]=qs[_0x8005('0x22')](_0x5d1552[_0x8005('0x36')][_0x8005('0x22')]);}_0x52ed50['order']=qs[_0x8005('0x3f')](_0x5d1552[_0x8005('0x36')][_0x8005('0x3f')]);_0x52ed50[_0x8005('0x40')]=qs['filters'](_[_0x8005('0x41')](_0x5d1552[_0x8005('0x36')],_0x1c6252[_0x8005('0x37')]));_0x52ed50[_0x8005('0x40')][_0x8005('0x5a')]=_0x19c2db['id'];if(_0x5d1552['query'][_0x8005('0x42')]){_0x52ed50[_0x8005('0x40')]=_[_0x8005('0x45')](_0x52ed50['where'],{'$or':_[_0x8005('0x35')](_0x52ed50['attributes'],function(_0x33a4a9){var _0x48d7b2={};_0x48d7b2[_0x33a4a9]={'$like':'%'+_0x5d1552['query']['filter']+'%'};return _0x48d7b2;})});}_0x52ed50=_[_0x8005('0x45')]({},_0x52ed50,_0x5d1552['options']);return db[_0x8005('0xa1')]['count']({'where':_0x52ed50['where']})[_0x8005('0x14')](function(_0x408d9c){_0x278214[_0x8005('0x25')]=_0x408d9c;if(_0x5d1552['query'][_0x8005('0x47')]){_0x52ed50[_0x8005('0x48')]=[{'model':db[_0x8005('0x7a')],'as':_0x8005('0xe3'),'required':![]},{'model':db['User'],'as':'Owner','attributes':['name','fullname',_0x8005('0xe4')],'required':![]},{'model':db['Tag'],'as':_0x8005('0xe5'),'attributes':['id',_0x8005('0x2c'),_0x8005('0xe6')],'where':_0x5d1552[_0x8005('0x36')][_0x8005('0xe7')]?{'id':_0x5d1552[_0x8005('0x36')][_0x8005('0xe7')]}:undefined,'required':_0x5d1552['query'][_0x8005('0xe7')]?!![]:![]}];}return db[_0x8005('0xa1')][_0x8005('0x49')](_0x52ed50);})[_0x8005('0x14')](function(_0x5f2b82){_0x278214[_0x8005('0x4a')]=_0x5f2b82;return _0x278214;});}})[_0x8005('0x14')](respondWithFilteredResult(_0x4f71a4,_0x52ed50))['catch'](handleError(_0x4f71a4,null));};function iftimePromise(_0x5f236b,_0x11fb7e){return respondWithRpcPromise(_0x8005('0xe8'),_0x8005('0xe9'),{'command':_0x11fb7e[_0x8005('0xea')]?util['format']('iftime\x20%s,%s',_0x5f236b[_0x8005('0xeb')],_0x11fb7e[_0x8005('0xea')]):util[_0x8005('0x9b')](_0x8005('0xec'),_0x5f236b['interval'])},client9002)['then'](function(_0x1339f9){var _0x294bc1=_0x1339f9&&_0x1339f9[_0x8005('0xed')](_0x8005('0xee'))>=0x0?!![]:![];logger[_0x8005('0x15')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x11fb7e['id'],_0x5f236b['id'],_0x5f236b[_0x8005('0xeb')],_0x294bc1?_0x8005('0xef'):'OFFLINE',_0x11fb7e[_0x8005('0xea')]?_0x11fb7e['timezone']:'No\x20timezone');return _0x294bc1;})[_0x8005('0x1e')](function(_0x32609d){logger[_0x8005('0x19')](_0x8005('0xf0'),_0x11fb7e['id'],_0x5f236b['id'],_0x5f236b[_0x8005('0xeb')],util['inspect'](_0x32609d,{'showHidden':![],'depth':null}),_0x11fb7e[_0x8005('0xea')]?_0x11fb7e[_0x8005('0xea')]:_0x8005('0xf1'));return![];});}exports['getSnippet']=function(_0x3af3a9,_0x1eaa3f){var _0x5d44de=0x0;var _0x4d3e5b=0x0;var _0x10620a=![];var _0x41d2b4;var _0x107968;return db[_0x8005('0x31')][_0x8005('0x4c')]({'where':{'id':_0x3af3a9[_0x8005('0x57')]['id']},'include':[{'model':db[_0x8005('0xf2')],'as':_0x8005('0xf2'),'include':[{'model':db['Interval'],'as':_0x8005('0xf3'),'attributes':['id',_0x8005('0xeb')],'raw':!![]}]}]})[_0x8005('0x14')](handleEntityNotFound(_0x1eaa3f,null))[_0x8005('0x14')](function(_0x3af87e){if(_0x3af87e){_0x41d2b4=_0x3af87e;return _0x3af87e['getProactiveActions']({'raw':!![]});}})[_0x8005('0x14')](function(_0x33c9d9){if(_0x41d2b4){if(_0x33c9d9){_0x107968=_0x33c9d9;}}return require(_0x8005('0xf4'))[_0x8005('0xf5')]();})[_0x8005('0x14')](function(_0x239cad){if(_0x239cad){_0x4d3e5b=_0x239cad['virtual'];_0x10620a=_0x239cad['custom'];}})['then'](function(){return db[_0x8005('0xa1')][_0x8005('0x25')]({'where':{'closed':![]}});})[_0x8005('0x14')](function(_0x58b20f){_0x5d44de=_0x58b20f;if(_0x4d3e5b&&_0x58b20f>_0x4d3e5b){return db[_0x8005('0xf6')][_0x8005('0x5b')]({'where':{'id':0x1}})['then'](function(_0x28671a){if(_0x28671a){_0x28671a[_0x8005('0xf7')](_0x8005('0xf8'));}});}})[_0x8005('0x14')](function(){if(_0x41d2b4[_0x8005('0xf2')]&&_0x41d2b4[_0x8005('0xf2')][_0x8005('0xf3')]){var _0x365ceb=[];for(var _0x20a2fe=0x0;_0x20a2fe<_0x41d2b4['Interval'][_0x8005('0xf3')][_0x8005('0x3b')];_0x20a2fe++){var _0x33e7a5=_0x41d2b4[_0x8005('0xf2')]['Intervals'][_0x20a2fe][_0x8005('0x29')]({'plain':!![]});_0x365ceb[_0x8005('0xab')](iftimePromise(_0x33e7a5,_0x41d2b4));}return BPromise['all'](_0x365ceb)[_0x8005('0x14')](function(_0x20fb70){return _[_0x8005('0xf9')](_0x20fb70);});}else{return!![];}})[_0x8005('0x14')](function(_0x29da8f){var _0x57698f=fs[_0x8005('0xfa')](path['join'](config[_0x8005('0x6c')],_0x8005('0xfb')),'utf8');var _0x33a3d2={'remote':_0x41d2b4[_0x8005('0xfc')],'query':querystring[_0x8005('0xfd')](_['merge'](_0x41d2b4[_0x8005('0x29')]({'plain':!![]}),{'customerIp':_0x3af3a9['headers']['x-forwarded-for']||_0x3af3a9[_0x8005('0x77')][_0x8005('0xfe')]||_0x3af3a9[_0x8005('0xff')][_0x8005('0x100')]||_0x3af3a9['ip'],'referer':_0x3af3a9[_0x8005('0x77')][_0x8005('0x98')],'openedInteractions':_0x5d44de,'maxInteractions':_0x4d3e5b,'virtual':_0x10620a[_0x8005('0x101')],'online':_0x29da8f,'custom':_0x10620a}))['replace'](/'/g,'\x5c\x27')};_0x1eaa3f[_0x8005('0x2d')](ejs[_0x8005('0xc1')](Mustache[_0x8005('0xc1')](_0x57698f,_0x33a3d2),{'proactiveActions':_0x107968,'alignment':_0x41d2b4[_0x8005('0x102')],'verticalAlignment':_0x41d2b4[_0x8005('0x103')],'div_color':_0x41d2b4[_0x8005('0xe6')],'labelText':_0x41d2b4['labelText'],'text_color':_0x41d2b4[_0x8005('0x104')],'text_button_color':_0x41d2b4[_0x8005('0x105')],'button_color':_0x41d2b4[_0x8005('0x106')],'background_color':_0x41d2b4[_0x8005('0x107')],'hideWhenOffline':_0x41d2b4[_0x8005('0x108')],'interval':_0x41d2b4[_0x8005('0x109')]}));})[_0x8005('0x1e')](handleError(_0x1eaa3f,null));};exports[_0x8005('0x10a')]=function(_0x318785,_0x291d5d){var _0x1a4f16=_0x318785['params']['id'];var _0x4ad847=_0x318785['body'];var _0x3fe3c9=0xc8;var _0x4aec31=null;return db[_0x8005('0x10b')][_0x8005('0xcc')]({'isolationLevel':db[_0x8005('0x10b')][_0x8005('0x10c')][_0x8005('0x10d')][_0x8005('0x10e')]},function(_0x54131b){return db[_0x8005('0x31')][_0x8005('0x5b')]({'where':{'id':_0x1a4f16},'transaction':_0x54131b})[_0x8005('0x14')](function(_0x1bf583){if(_0x1bf583){return db[_0x8005('0x8a')][_0x8005('0x28')]({'where':{'ChatWebsiteId':_0x1a4f16},'transaction':_0x54131b})['then'](function(){var _0x132748=_[_0x8005('0x35')](_0x4ad847,function(_0x2a8fa5){_0x2a8fa5[_0x8005('0x5a')]=_0x1a4f16;return _0x2a8fa5;});return db['ChatApplication'][_0x8005('0xce')](_0x132748,{'transaction':_0x54131b});});}else{_0x3fe3c9=0x194;_0x4aec31=[];}});})['then'](function(){if(_0x3fe3c9!==0x194){return db['ChatApplication'][_0x8005('0x10f')]({'where':{'ChatWebsiteId':_0x1a4f16},'order':_0x8005('0x8e')})[_0x8005('0x14')](function(_0x5cbbae){_0x4aec31=_0x5cbbae;});}})[_0x8005('0x1e')](function(_0x1907eb){_0x3fe3c9=0x1f4;logger[_0x8005('0x19')](_0x1907eb[_0x8005('0x2b')]);if(_0x1907eb[_0x8005('0x2c')]){delete _0x1907eb[_0x8005('0x2c')];}_0x4aec31=_0x1907eb;})[_0x8005('0x110')](function(){if(_0x4aec31===null){_0x291d5d[_0x8005('0x1f')](_0x3fe3c9);}else{if(_0x3fe3c9===0x1f4){_0x291d5d['status'](_0x3fe3c9)[_0x8005('0x2d')](_0x4aec31);}else{_0x291d5d[_0x8005('0x20')](_0x3fe3c9)[_0x8005('0x111')](_0x4aec31);}}});};exports[_0x8005('0x112')]=function(_0x69c32b,_0xee3405){var _0x10fc99={};var _0x5ae0ee={};var _0x392323;var _0x3cd530;return db['ChatWebsite']['findOne']({'where':{'id':_0x69c32b[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0xee3405,null))[_0x8005('0x14')](function(_0x9206a6){if(_0x9206a6){_0x392323=_0x9206a6;_0x5ae0ee['model']=_[_0x8005('0x4b')](db[_0x8005('0x8a')]['rawAttributes']);_0x5ae0ee[_0x8005('0x36')]=_[_0x8005('0x4b')](_0x69c32b[_0x8005('0x36')]);_0x5ae0ee['filters']=_['intersection'](_0x5ae0ee['model'],_0x5ae0ee[_0x8005('0x36')]);_0x10fc99[_0x8005('0x38')]=_[_0x8005('0x39')](_0x5ae0ee['model'],qs[_0x8005('0x3a')](_0x69c32b[_0x8005('0x36')][_0x8005('0x3a')]));_0x10fc99[_0x8005('0x38')]=_0x10fc99[_0x8005('0x38')][_0x8005('0x3b')]?_0x10fc99[_0x8005('0x38')]:_0x5ae0ee['model'];_0x10fc99['order']=qs[_0x8005('0x3f')](_0x69c32b[_0x8005('0x36')][_0x8005('0x3f')]);_0x10fc99[_0x8005('0x40')]=qs[_0x8005('0x37')](_['pick'](_0x69c32b[_0x8005('0x36')],_0x5ae0ee[_0x8005('0x37')]));if(_0x69c32b[_0x8005('0x36')][_0x8005('0x42')]){_0x10fc99[_0x8005('0x40')]=_['merge'](_0x10fc99[_0x8005('0x40')],{'$or':_[_0x8005('0x35')](_0x10fc99['attributes'],function(_0x12dece){var _0x528e4e={};_0x528e4e[_0x12dece]={'$like':'%'+_0x69c32b['query'][_0x8005('0x42')]+'%'};return _0x528e4e;})});}_0x10fc99=_[_0x8005('0x45')]({},_0x10fc99,_0x69c32b['options']);return _0x392323['getApplications'](_0x10fc99);}})[_0x8005('0x14')](function(_0x47002b){if(_0x47002b){_0x3cd530=_0x47002b[_0x8005('0x3b')];if(!_0x69c32b[_0x8005('0x36')]['hasOwnProperty'](_0x8005('0x3d'))){_0x10fc99[_0x8005('0x24')]=qs[_0x8005('0x24')](_0x69c32b[_0x8005('0x36')][_0x8005('0x24')]);_0x10fc99[_0x8005('0x22')]=qs[_0x8005('0x22')](_0x69c32b[_0x8005('0x36')][_0x8005('0x22')]);}return _0x392323[_0x8005('0x112')](_0x10fc99);}})[_0x8005('0x14')](function(_0x2773b2){if(_0x2773b2){return _0x2773b2?{'count':_0x3cd530,'rows':_0x2773b2}:null;}})['then'](respondWithResult(_0xee3405,null))[_0x8005('0x1e')](handleError(_0xee3405,null));};exports['addProactiveActions']=function(_0x274fd5,_0x309d0a){return db[_0x8005('0x113')][_0x8005('0x4c')]({'where':{'id':_0x274fd5['params']['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x309d0a,null))[_0x8005('0x14')](function(_0x594758){if(_0x594758){return _0x594758[_0x8005('0x114')](_0x274fd5[_0x8005('0x4e')][_0x8005('0x5e')],_['omit'](_0x274fd5[_0x8005('0x4e')],['ids','id'])||{});}})['then'](respondWithResult(_0x309d0a,null))[_0x8005('0x1e')](handleError(_0x309d0a,null));};exports[_0x8005('0x115')]=function(_0x378806,_0x48f1c1){var _0x4b2609={};var _0x8a4862={};var _0x7ef3d8;var _0x155ed6;return db[_0x8005('0x31')][_0x8005('0x5b')]({'where':{'id':_0x378806[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x48f1c1,null))[_0x8005('0x14')](function(_0x461106){if(_0x461106){_0x7ef3d8=_0x461106;_0x8a4862[_0x8005('0x34')]=_[_0x8005('0x4b')](db[_0x8005('0x116')][_0x8005('0x32')]);_0x8a4862[_0x8005('0x36')]=_['keys'](_0x378806[_0x8005('0x36')]);_0x8a4862[_0x8005('0x37')]=_[_0x8005('0x39')](_0x8a4862[_0x8005('0x34')],_0x8a4862['query']);_0x4b2609[_0x8005('0x38')]=_['intersection'](_0x8a4862['model'],qs[_0x8005('0x3a')](_0x378806[_0x8005('0x36')]['fields']));_0x4b2609[_0x8005('0x38')]=_0x4b2609[_0x8005('0x38')]['length']?_0x4b2609[_0x8005('0x38')]:_0x8a4862[_0x8005('0x34')];_0x4b2609[_0x8005('0x3e')]=qs['sort'](_0x378806[_0x8005('0x36')][_0x8005('0x3f')]);_0x4b2609[_0x8005('0x40')]=qs[_0x8005('0x37')](_[_0x8005('0x41')](_0x378806[_0x8005('0x36')],_0x8a4862['filters']));if(_0x378806[_0x8005('0x36')]['filter']){_0x4b2609['where']=_[_0x8005('0x45')](_0x4b2609[_0x8005('0x40')],{'$or':_['map'](_0x4b2609[_0x8005('0x38')],function(_0x192eb1){var _0x1fd5c0={};_0x1fd5c0[_0x192eb1]={'$like':'%'+_0x378806[_0x8005('0x36')][_0x8005('0x42')]+'%'};return _0x1fd5c0;})});}_0x4b2609=_[_0x8005('0x45')]({},_0x4b2609,_0x378806[_0x8005('0x46')]);return _0x7ef3d8[_0x8005('0x115')](_0x4b2609);}})[_0x8005('0x14')](function(_0x2f6e13){if(_0x2f6e13){_0x155ed6=_0x2f6e13[_0x8005('0x3b')];if(!_0x378806[_0x8005('0x36')]['hasOwnProperty']('nolimit')){_0x4b2609['limit']=qs['limit'](_0x378806[_0x8005('0x36')][_0x8005('0x24')]);_0x4b2609['offset']=qs['offset'](_0x378806[_0x8005('0x36')][_0x8005('0x22')]);}return _0x7ef3d8[_0x8005('0x115')](_0x4b2609);}})['then'](function(_0x500ec1){if(_0x500ec1){return _0x500ec1?{'count':_0x155ed6,'rows':_0x500ec1}:null;}})[_0x8005('0x14')](respondWithResult(_0x48f1c1,null))['catch'](handleError(_0x48f1c1,null));};exports[_0x8005('0x117')]=function(_0xfa6f28,_0x264eba){var _0x3dc9fe=_0xfa6f28[_0x8005('0x36')]['online']===_0x8005('0x118')?'offlineForm':_0x8005('0x119');return db[_0x8005('0x31')]['find']({'attributes':['id',_0x3dc9fe],'where':{'id':_0xfa6f28[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x264eba,null))['then'](function(_0x5e1c21){if(_0x5e1c21){var _0x45e893=_0x5e1c21[_0x3dc9fe];var _0xc067a3=_0x45e893&&_0x45e893['items']?_0x45e893[_0x8005('0x11a')]:[];_0x264eba[_0x8005('0x2d')]({'fromKey':_['isNil'](_0x45e893[_0x8005('0x11b')])?undefined:_0x45e893[_0x8005('0x11b')],'count':_0xc067a3[_0x8005('0x3b')],'rows':_0xc067a3});}})[_0x8005('0x1e')](handleError(_0x264eba,null));};exports[_0x8005('0x11c')]=function(_0x43e3ca,_0xe0f393){var _0x34b3b1={'raw':![],'where':{}};var _0x270869={};var _0x263288={'count':0x0,'rows':[]};return db[_0x8005('0x31')]['findOne']({'where':{'id':_0x43e3ca[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0xe0f393,null))[_0x8005('0x14')](function(_0x24db76){if(_0x24db76){_0x270869[_0x8005('0x34')]=_[_0x8005('0x4b')](db[_0x8005('0xc3')][_0x8005('0x32')]);_0x270869[_0x8005('0x36')]=_['keys'](_0x43e3ca[_0x8005('0x36')]);_0x270869['filters']=_['intersection'](_0x270869[_0x8005('0x34')],_0x270869[_0x8005('0x36')]);_0x34b3b1[_0x8005('0x38')]=_[_0x8005('0x39')](_0x270869[_0x8005('0x34')],qs[_0x8005('0x3a')](_0x43e3ca[_0x8005('0x36')][_0x8005('0x3a')]));_0x34b3b1['attributes']=_0x34b3b1[_0x8005('0x38')][_0x8005('0x3b')]?_0x34b3b1[_0x8005('0x38')]:_0x270869[_0x8005('0x34')];if(!_0x43e3ca[_0x8005('0x36')][_0x8005('0x3c')]('nolimit')){_0x34b3b1['limit']=qs[_0x8005('0x24')](_0x43e3ca[_0x8005('0x36')][_0x8005('0x24')]);_0x34b3b1[_0x8005('0x22')]=qs[_0x8005('0x22')](_0x43e3ca[_0x8005('0x36')][_0x8005('0x22')]);}_0x34b3b1[_0x8005('0x3e')]=qs[_0x8005('0x3f')](_0x43e3ca[_0x8005('0x36')]['sort']);_0x34b3b1['where']=qs[_0x8005('0x37')](_[_0x8005('0x41')](_0x43e3ca[_0x8005('0x36')],_0x270869['filters']));_0x34b3b1[_0x8005('0x40')][_0x8005('0x5a')]=_0x24db76['id'];if(_0x43e3ca['query'][_0x8005('0x42')]){_0x34b3b1['where']=_[_0x8005('0x45')](_0x34b3b1[_0x8005('0x40')],{'$or':_[_0x8005('0x35')](_0x34b3b1[_0x8005('0x38')],function(_0x12c42f){var _0x583568={};_0x583568[_0x12c42f]={'$like':'%'+_0x43e3ca['query']['filter']+'%'};return _0x583568;})});}_0x34b3b1=_['merge']({},_0x34b3b1,_0x43e3ca[_0x8005('0x46')]);return db[_0x8005('0xc3')][_0x8005('0x25')]({'where':_0x34b3b1[_0x8005('0x40')]})[_0x8005('0x14')](function(_0x56054a){_0x263288[_0x8005('0x25')]=_0x56054a;if(_0x43e3ca[_0x8005('0x36')]['includeAll']){_0x34b3b1['include']=[{'all':!![]}];}else{_0x34b3b1[_0x8005('0x48')]=[{'model':db[_0x8005('0x7a')],'as':_0x8005('0xe3'),'required':![]},{'model':db[_0x8005('0xcd')],'as':_0x8005('0x11d'),'required':![]}];}return db[_0x8005('0xc3')]['findAll'](_0x34b3b1);})[_0x8005('0x14')](function(_0x12dc67){_0x263288['rows']=_0x12dc67;return _0x263288;});}})['then'](respondWithFilteredResult(_0xe0f393,_0x34b3b1))[_0x8005('0x1e')](handleError(_0xe0f393,null));};exports['addAgents']=function(_0x62d44,_0x570da3){return db['ChatWebsite'][_0x8005('0x4c')]({'where':{'id':_0x62d44[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x570da3,null))[_0x8005('0x14')](function(_0x1b55e7){if(_0x1b55e7){return _0x1b55e7[_0x8005('0x11e')](_0x62d44[_0x8005('0x4e')][_0x8005('0x5e')],_['omit'](_0x62d44[_0x8005('0x4e')],['ids','id'])||{})[_0x8005('0xa5')](function(_0x553660){for(var _0x1cb759=0x0;_0x1cb759<_0x62d44['body'][_0x8005('0x5e')]['length'];_0x1cb759+=0x1){socket[_0x8005('0x11f')]('userChatWebsite:save',{'UserId':Number(_0x62d44[_0x8005('0x4e')][_0x8005('0x5e')][_0x1cb759]),'ChatWebsiteId':Number(_0x62d44[_0x8005('0x57')]['id'])});}return _0x553660;});}})[_0x8005('0x14')](respondWithResult(_0x570da3,null))['catch'](handleError(_0x570da3,null));};exports['removeAgents']=function(_0x645108,_0x4096ef){return db['ChatWebsite'][_0x8005('0x4c')]({'where':{'id':_0x645108[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x4096ef,null))['then'](function(_0x1a0386){if(_0x1a0386){return _0x1a0386[_0x8005('0x120')](_0x645108[_0x8005('0x36')][_0x8005('0x5e')])[_0x8005('0x14')](function(){if(_[_0x8005('0x121')](_0x645108[_0x8005('0x36')][_0x8005('0x5e')])){for(var _0x14c60d=0x0;_0x14c60d<_0x645108[_0x8005('0x36')][_0x8005('0x5e')][_0x8005('0x3b')];_0x14c60d+=0x1){socket[_0x8005('0x11f')](_0x8005('0x122'),{'UserId':Number(_0x645108['query'][_0x8005('0x5e')][_0x14c60d]),'ChatWebsiteId':Number(_0x645108[_0x8005('0x57')]['id'])});}}else{socket[_0x8005('0x11f')](_0x8005('0x122'),{'UserId':Number(_0x645108[_0x8005('0x36')][_0x8005('0x5e')]),'ChatWebsiteId':Number(_0x645108['params']['id'])});}});}})[_0x8005('0x14')](respondWithStatusCode(_0x4096ef,null))['catch'](handleError(_0x4096ef,null));};exports['getAgents']=function(_0x376aad,_0x49e8b7){var _0x3d1f31={};var _0x2cb598={};var _0x534036;var _0x2d077d;return db['ChatWebsite'][_0x8005('0x5b')]({'where':{'id':_0x376aad[_0x8005('0x57')]['id']}})[_0x8005('0x14')](handleEntityNotFound(_0x49e8b7,null))['then'](function(_0x5ec56c){if(_0x5ec56c){_0x534036=_0x5ec56c;_0x2cb598[_0x8005('0x34')]=_[_0x8005('0x4b')](db[_0x8005('0xb1')][_0x8005('0x32')]);_0x2cb598[_0x8005('0x36')]=_[_0x8005('0x4b')](_0x376aad[_0x8005('0x36')]);_0x2cb598[_0x8005('0x37')]=_[_0x8005('0x39')](_0x2cb598['model'],_0x2cb598['query']);_0x3d1f31[_0x8005('0x38')]=_[_0x8005('0x39')](_0x2cb598['model'],qs[_0x8005('0x3a')](_0x376aad[_0x8005('0x36')][_0x8005('0x3a')]));_0x3d1f31['attributes']=_0x3d1f31[_0x8005('0x38')][_0x8005('0x3b')]?_0x3d1f31[_0x8005('0x38')]:_0x2cb598['model'];_0x3d1f31[_0x8005('0x3e')]=qs[_0x8005('0x3f')](_0x376aad[_0x8005('0x36')]['sort']);_0x3d1f31[_0x8005('0x40')]=qs[_0x8005('0x37')](_['pick'](_0x376aad['query'],_0x2cb598['filters']));if(_0x376aad[_0x8005('0x36')][_0x8005('0x42')]){_0x3d1f31[_0x8005('0x40')]=_[_0x8005('0x45')](_0x3d1f31[_0x8005('0x40')],{'$or':_['map'](_0x3d1f31[_0x8005('0x38')],function(_0x58c895){var _0x5e90d9={};_0x5e90d9[_0x58c895]={'$like':'%'+_0x376aad[_0x8005('0x36')]['filter']+'%'};return _0x5e90d9;})});}_0x3d1f31=_[_0x8005('0x45')]({},_0x3d1f31,_0x376aad[_0x8005('0x46')]);return _0x534036[_0x8005('0x123')](_0x3d1f31);}})[_0x8005('0x14')](function(_0xc7127f){if(_0xc7127f){_0x2d077d=_0xc7127f[_0x8005('0x3b')];if(!_0x376aad['query']['hasOwnProperty'](_0x8005('0x3d'))){_0x3d1f31['limit']=qs['limit'](_0x376aad[_0x8005('0x36')][_0x8005('0x24')]);_0x3d1f31[_0x8005('0x22')]=qs[_0x8005('0x22')](_0x376aad[_0x8005('0x36')][_0x8005('0x22')]);}return _0x534036[_0x8005('0x123')](_0x3d1f31);}})[_0x8005('0x14')](function(_0x3af32){if(_0x3af32){return _0x3af32?{'count':_0x2d077d,'rows':_0x3af32}:null;}})[_0x8005('0x14')](respondWithResult(_0x49e8b7,null))[_0x8005('0x1e')](handleError(_0x49e8b7,null));};
\ No newline at end of file
index 78c8d64..c50b64a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x294b=['events','ChatWebsite','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x460b0b,_0x2ddfc0){var _0x2a02c3=function(_0x401aba){while(--_0x401aba){_0x460b0b['push'](_0x460b0b['shift']());}};_0x2a02c3(++_0x2ddfc0);}(_0x294b,0xea));var _0xb294=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x294b[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xb294('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xb294('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb294('0x2')](0x0);var events={'afterCreate':_0xb294('0x3'),'afterUpdate':_0xb294('0x4'),'afterDestroy':_0xb294('0x5')};function emitEvent(_0x417648){return function(_0x58fe24,_0x5c0237,_0xba5c68){ChatWebsiteEvents[_0xb294('0x6')](_0x417648+':'+_0x58fe24['id'],_0x58fe24);ChatWebsiteEvents[_0xb294('0x6')](_0x417648,_0x58fe24);_0xba5c68(null);};}for(var e in events){if(events[_0xb294('0x7')](e)){var event=events[e];ChatWebsite[_0xb294('0x8')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x3248=['hasOwnProperty','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners','save','update','remove','emit'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x3248,0x1b0));var _0x8324=function(_0x2aa08b,_0x23e9b9){_0x2aa08b=_0x2aa08b-0x0;var _0x2ea276=_0x3248[_0x2aa08b];return _0x2ea276;};'use strict';var EventEmitter=require(_0x8324('0x0'));var ChatWebsite=require(_0x8324('0x1'))['db'][_0x8324('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x8324('0x3')](0x0);var events={'afterCreate':_0x8324('0x4'),'afterUpdate':_0x8324('0x5'),'afterDestroy':_0x8324('0x6')};function emitEvent(_0x5a7e4d){return function(_0x4c565b,_0x2e46f3,_0xbf17e8){ChatWebsiteEvents['emit'](_0x5a7e4d+':'+_0x4c565b['id'],_0x4c565b);ChatWebsiteEvents[_0x8324('0x7')](_0x5a7e4d,_0x4c565b);_0xbf17e8(null);};}for(var e in events){if(events[_0x8324('0x8')](e)){var event=events[e];ChatWebsite[_0x8324('0x9')](e,emitEvent(event));}}module[_0x8324('0xa')]=ChatWebsiteEvents;
\ No newline at end of file
index 9358695..3fb6f22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9fc=['define','ChatWebsite','chat_websites','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x4e05df,_0x53eb7f){var _0x48b67d=function(_0x5cf362){while(--_0x5cf362){_0x4e05df['push'](_0x4e05df['shift']());}};_0x48b67d(++_0x53eb7f);}(_0xf9fc,0x1bd));var _0xcf9f=function(_0x10e2b1,_0x3ac400){_0x10e2b1=_0x10e2b1-0x0;var _0x43442a=_0xf9fc[_0x10e2b1];return _0x43442a;};'use strict';var _=require(_0xcf9f('0x0'));var util=require(_0xcf9f('0x1'));var logger=require(_0xcf9f('0x2'))(_0xcf9f('0x3'));var moment=require(_0xcf9f('0x4'));var BPromise=require('bluebird');var rp=require(_0xcf9f('0x5'));var fs=require('fs');var path=require(_0xcf9f('0x6'));var rimraf=require(_0xcf9f('0x7'));var config=require(_0xcf9f('0x8'));var attributes=require('./chatWebsite.attributes');module[_0xcf9f('0x9')]=function(_0x5f220f,_0x115f04){return _0x5f220f[_0xcf9f('0xa')](_0xcf9f('0xb'),attributes,{'tableName':_0xcf9f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5e73=['./chatWebsite.attributes','ChatWebsite','lodash','../../config/logger','api','moment','path','rimraf'];(function(_0xae1a83,_0x1980d4){var _0xdb9da8=function(_0x36fc99){while(--_0x36fc99){_0xae1a83['push'](_0xae1a83['shift']());}};_0xdb9da8(++_0x1980d4);}(_0x5e73,0x1b2));var _0x35e7=function(_0x2b257b,_0x2a9042){_0x2b257b=_0x2b257b-0x0;var _0x8162e6=_0x5e73[_0x2b257b];return _0x8162e6;};'use strict';var _=require(_0x35e7('0x0'));var util=require('util');var logger=require(_0x35e7('0x1'))(_0x35e7('0x2'));var moment=require(_0x35e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x35e7('0x4'));var rimraf=require(_0x35e7('0x5'));var config=require('../../config/environment');var attributes=require(_0x35e7('0x6'));module['exports']=function(_0x37e464,_0x23f023){return _0x37e464['define'](_0x35e7('0x7'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1cb9209..bcf9131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd142=['code','message','request\x20sent','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xd142,0x17b));var _0x2d14=function(_0x121195,_0x2cd8b8){_0x121195=_0x121195-0x0;var _0x363aea=_0xd142[_0x121195];return _0x363aea;};'use strict';var _=require(_0x2d14('0x0'));var util=require('util');var moment=require(_0x2d14('0x1'));var BPromise=require('bluebird');var rs=require(_0x2d14('0x2'));var fs=require('fs');var Redis=require(_0x2d14('0x3'));var db=require(_0x2d14('0x4'))['db'];var utils=require(_0x2d14('0x5'));var logger=require(_0x2d14('0x6'))('rpc');var config=require(_0x2d14('0x7'));var jayson=require(_0x2d14('0x8'));var client=jayson[_0x2d14('0x9')]['http']({'port':0x232a});config[_0x2d14('0xa')]=_['defaults'](config[_0x2d14('0xa')],{'host':_0x2d14('0xb'),'port':0x18eb});var socket=require(_0x2d14('0xc'))(new Redis(config['redis']));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x3bdf3b,_0x1a22e3,_0x399191){return new BPromise(function(_0xb98bf1,_0x5ca4f4){return client['request'](_0x3bdf3b,_0x399191)['then'](function(_0x1d3ac5){logger['info'](_0x2d14('0xd'),_0x1a22e3,'request\x20sent');logger[_0x2d14('0xe')](_0x2d14('0xf'),_0x1a22e3,'request\x20sent',JSON['stringify'](_0x1d3ac5));if(_0x1d3ac5[_0x2d14('0x10')]){if(_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x11')]===0x1f4){logger[_0x2d14('0x10')]('ChatWebsite,\x20%s,\x20%s',_0x1a22e3,_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x12')]);return _0x5ca4f4(_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x12')]);}logger['error'](_0x2d14('0xd'),_0x1a22e3,_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x12')]);return _0xb98bf1(_0x1d3ac5['error'][_0x2d14('0x12')]);}else{logger['info'](_0x2d14('0xd'),_0x1a22e3,_0x2d14('0x13'));_0xb98bf1(_0x1d3ac5[_0x2d14('0x14')][_0x2d14('0x12')]);}})[_0x2d14('0x15')](function(_0x35c9cf){logger[_0x2d14('0x10')](_0x2d14('0xd'),_0x1a22e3,_0x35c9cf);_0x5ca4f4(_0x35c9cf);});});}
\ No newline at end of file
+var _0xe9b8=['socket.io-emitter','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','localhost'];(function(_0x451353,_0x19710b){var _0x102315=function(_0x51204c){while(--_0x51204c){_0x451353['push'](_0x451353['shift']());}};_0x102315(++_0x19710b);}(_0xe9b8,0x1eb));var _0x8e9b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe9b8[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x8e9b('0x0'));var util=require(_0x8e9b('0x1'));var moment=require(_0x8e9b('0x2'));var BPromise=require(_0x8e9b('0x3'));var rs=require(_0x8e9b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e9b('0x5'))['db'];var utils=require(_0x8e9b('0x6'));var logger=require('../../config/logger')(_0x8e9b('0x7'));var config=require(_0x8e9b('0x8'));var jayson=require(_0x8e9b('0x9'));var client=jayson['client'][_0x8e9b('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x8e9b('0xb')],{'host':_0x8e9b('0xc'),'port':0x18eb});var socket=require(_0x8e9b('0xd'))(new Redis(config[_0x8e9b('0xb')]));require(_0x8e9b('0xe'))[_0x8e9b('0xf')](socket);function respondWithRpcPromise(_0x3ea91d,_0x4b5ffd,_0x1f76f2){return new BPromise(function(_0x163def,_0xdaee33){return client['request'](_0x3ea91d,_0x1f76f2)[_0x8e9b('0x10')](function(_0x3e2ba1){logger[_0x8e9b('0x11')](_0x8e9b('0x12'),_0x4b5ffd,_0x8e9b('0x13'));logger[_0x8e9b('0x14')](_0x8e9b('0x15'),_0x4b5ffd,'request\x20sent',JSON[_0x8e9b('0x16')](_0x3e2ba1));if(_0x3e2ba1['error']){if(_0x3e2ba1[_0x8e9b('0x17')][_0x8e9b('0x18')]===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x4b5ffd,_0x3e2ba1[_0x8e9b('0x17')][_0x8e9b('0x19')]);return _0xdaee33(_0x3e2ba1[_0x8e9b('0x17')][_0x8e9b('0x19')]);}logger[_0x8e9b('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x4b5ffd,_0x3e2ba1['error']['message']);return _0x163def(_0x3e2ba1[_0x8e9b('0x17')][_0x8e9b('0x19')]);}else{logger['info'](_0x8e9b('0x12'),_0x4b5ffd,_0x8e9b('0x13'));_0x163def(_0x3e2ba1[_0x8e9b('0x1a')][_0x8e9b('0x19')]);}})[_0x8e9b('0x1b')](function(_0x1baffa){logger[_0x8e9b('0x17')](_0x8e9b('0x12'),_0x4b5ffd,_0x1baffa);_0xdaee33(_0x1baffa);});});}
\ No newline at end of file
index 5447216..38a12b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f2d=['save','remove','emit','register','chatWebsite:','./chatWebsite.events'];(function(_0x4da624,_0x363498){var _0x405bfd=function(_0x4459a1){while(--_0x4459a1){_0x4da624['push'](_0x4da624['shift']());}};_0x405bfd(++_0x363498);}(_0x0f2d,0x83));var _0xd0f2=function(_0x45f6a3,_0x1ba71d){_0x45f6a3=_0x45f6a3-0x0;var _0x4a4eaf=_0x0f2d[_0x45f6a3];return _0x4a4eaf;};'use strict';var ChatWebsiteEvents=require(_0xd0f2('0x0'));var events=[_0xd0f2('0x1'),_0xd0f2('0x2'),'update'];function createListener(_0x104aa2,_0x598787){return function(_0x1fcb8d){_0x598787[_0xd0f2('0x3')](_0x104aa2,_0x1fcb8d);};}function removeListener(_0x19c79b,_0x287c85){return function(){ChatWebsiteEvents['removeListener'](_0x19c79b,_0x287c85);};}exports[_0xd0f2('0x4')]=function(_0x17d907){for(var _0x2c0398=0x0,_0x191fa5=events['length'];_0x2c0398<_0x191fa5;_0x2c0398++){var _0x2cf44b=events[_0x2c0398];var _0x3cbaba=createListener(_0xd0f2('0x5')+_0x2cf44b,_0x17d907);ChatWebsiteEvents['on'](_0x2cf44b,_0x3cbaba);}};
\ No newline at end of file
+var _0xec35=['./chatWebsite.events','save','remove','update','emit','removeListener','length','chatWebsite:'];(function(_0xc56c3,_0x3f6ba2){var _0x6fabbb=function(_0x376c96){while(--_0x376c96){_0xc56c3['push'](_0xc56c3['shift']());}};_0x6fabbb(++_0x3f6ba2);}(_0xec35,0x88));var _0x5ec3=function(_0x353b11,_0x1cb36c){_0x353b11=_0x353b11-0x0;var _0x12cc49=_0xec35[_0x353b11];return _0x12cc49;};'use strict';var ChatWebsiteEvents=require(_0x5ec3('0x0'));var events=[_0x5ec3('0x1'),_0x5ec3('0x2'),_0x5ec3('0x3')];function createListener(_0x1e6568,_0x471f4c){return function(_0x441e0f){_0x471f4c[_0x5ec3('0x4')](_0x1e6568,_0x441e0f);};}function removeListener(_0x11befe,_0x2a3827){return function(){ChatWebsiteEvents[_0x5ec3('0x5')](_0x11befe,_0x2a3827);};}exports['register']=function(_0x36f6af){for(var _0x155628=0x0,_0x276fb8=events[_0x5ec3('0x6')];_0x155628<_0x276fb8;_0x155628++){var _0x7f6159=events[_0x155628];var _0x3d839a=createListener(_0x5ec3('0x7')+_0x7f6159,_0x36f6af);ChatWebsiteEvents['on'](_0x7f6159,_0x3d839a);}};
\ No newline at end of file
index fa797b9..628bc1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75a9=['/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','/:id/snippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','create','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','single','file','addLogo','server/files/images/avatars/','now','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','originalname','replace','extname','offline','addInteraction','/:id/proactive_actions','put','update','delete','destroy','removeDispositions','exports','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x75a9,0x151));var _0x975a=function(_0x477b00,_0x5cfde6){_0x477b00=_0x477b00-0x0;var _0x2e12c7=_0x75a9[_0x477b00];return _0x2e12c7;};'use strict';var multer=require('multer');var util=require(_0x975a('0x0'));var path=require(_0x975a('0x1'));var timeout=require('connect-timeout');var express=require(_0x975a('0x2'));var router=express['Router']();var fs_extra=require(_0x975a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x975a('0x4'));var config=require(_0x975a('0x5'));var controller=require('./chatWebsite.controller');router[_0x975a('0x6')]('/',auth[_0x975a('0x7')](),controller[_0x975a('0x8')]);router[_0x975a('0x6')](_0x975a('0x9'),auth[_0x975a('0x7')](),controller[_0x975a('0xa')]);router[_0x975a('0x6')](_0x975a('0xb'),auth['isAuthenticated'](),controller[_0x975a('0xc')]);router[_0x975a('0x6')](_0x975a('0xd'),auth['isAuthenticated'](),controller[_0x975a('0xe')]);router[_0x975a('0x6')](_0x975a('0xf'),auth['isAuthenticated'](),controller[_0x975a('0x10')]);router[_0x975a('0x6')](_0x975a('0x11'),controller[_0x975a('0x12')]);router[_0x975a('0x6')](_0x975a('0x13'),controller['getAvatar']);router['get'](_0x975a('0x14'),controller[_0x975a('0x15')]);router[_0x975a('0x6')](_0x975a('0x16'),controller[_0x975a('0x17')]);router[_0x975a('0x6')](_0x975a('0x18'),auth[_0x975a('0x7')](),controller['getInteractions']);router[_0x975a('0x6')](_0x975a('0x19'),controller['getSnippet']);router[_0x975a('0x6')](_0x975a('0x1a'),auth[_0x975a('0x7')](),controller[_0x975a('0x1b')]);router[_0x975a('0x6')]('/:id/proactive_actions',auth[_0x975a('0x7')](),controller[_0x975a('0x1c')]);router['get'](_0x975a('0x1d'),controller[_0x975a('0x1e')]);router[_0x975a('0x6')](_0x975a('0x1f'),auth[_0x975a('0x7')](),controller[_0x975a('0x20')]);router[_0x975a('0x6')](_0x975a('0x21'),auth['isAuthenticated'](),controller[_0x975a('0x22')]);router['post']('/',auth[_0x975a('0x7')](),controller[_0x975a('0x23')]);router[_0x975a('0x24')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x975a('0x25')]);router[_0x975a('0x24')]('/:id/canned_answers',auth[_0x975a('0x7')](),controller[_0x975a('0x26')]);var upload=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x428d97,_0x1699a0,_0x409e75){_0x409e75(null,path[_0x975a('0x28')](config[_0x975a('0x29')],_0x975a('0x2a')));},'filename':function(_0x3ae59,_0xe3a794,_0x52e09c){_0x52e09c(null,util[_0x975a('0x2b')](_0x975a('0x2c'),Date['now'](),_0xe3a794['originalname']));}})});router['post'](_0x975a('0x11'),upload[_0x975a('0x2d')](_0x975a('0x2e')),controller[_0x975a('0x2f')]);var upload=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x40a349,_0x286712,_0x4a35f6){_0x4a35f6(null,path[_0x975a('0x28')](config[_0x975a('0x29')],_0x975a('0x30')));},'filename':function(_0x3505ea,_0x4a278b,_0x132f64){_0x132f64(null,util[_0x975a('0x2b')](_0x975a('0x2c'),Date[_0x975a('0x31')](),_0x4a278b['originalname']));}})});router[_0x975a('0x24')]('/:id/avatar',upload['single'](_0x975a('0x2e')),controller['addAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4bde24,_0xcb1d9b,_0xd46b0c){_0xd46b0c(null,path[_0x975a('0x28')](config['root'],'server/files/images/avatars/'));},'filename':function(_0x1a1242,_0x4f5285,_0x4a3d9e){_0x4a3d9e(null,util[_0x975a('0x2b')](_0x975a('0x2c'),Date[_0x975a('0x31')](),_0x4f5285['originalname']));}})});router[_0x975a('0x24')](_0x975a('0x14'),upload[_0x975a('0x2d')](_0x975a('0x2e')),controller[_0x975a('0x32')]);var upload=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x41bf2e,_0x52e559,_0xd35fe7){_0xd35fe7(null,path['join'](config[_0x975a('0x29')],_0x975a('0x30')));},'filename':function(_0x405876,_0x10b301,_0x150fc4){_0x150fc4(null,util['format'](_0x975a('0x2c'),Date[_0x975a('0x31')](),_0x10b301['originalname']));}})});router['post']('/:id/system_avatar',upload[_0x975a('0x2d')]('file'),controller[_0x975a('0x33')]);router[_0x975a('0x24')](_0x975a('0x34'),controller[_0x975a('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x740be0,_0x21558f,_0x167abb){const _0x53591a=path[_0x975a('0x28')](config[_0x975a('0x29')],_0x975a('0x36'),_0x975a('0x37'),_0x975a('0x38'));fs_extra[_0x975a('0x39')](_0x53591a,function(){_0x167abb(null,_0x53591a);});},'filename':function(_0x232ba2,_0x130593,_0x452613){const _0x2ade38=_0x130593[_0x975a('0x3a')][_0x975a('0x3b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x4c402f=path[_0x975a('0x3c')](_0x2ade38);const _0x416c37=Date[_0x975a('0x31')]()+'-'+_0x2ade38[_0x975a('0x3b')](_0x4c402f,'')+_0x4c402f;_0x452613(null,_0x416c37);}})});router[_0x975a('0x24')]('/:id/offline',offlineUploadMulter['any'](),controller[_0x975a('0x3d')]);router[_0x975a('0x24')](_0x975a('0x18'),auth['isAuthenticated'](),controller[_0x975a('0x3e')]);router[_0x975a('0x24')](_0x975a('0x1a'),auth['isAuthenticated'](),controller['addApplications']);router[_0x975a('0x24')](_0x975a('0x3f'),auth['isAuthenticated'](),controller['addProactiveActions']);router['post'](_0x975a('0x21'),auth[_0x975a('0x7')](),controller['addAgents']);router[_0x975a('0x40')](_0x975a('0xb'),auth[_0x975a('0x7')](),controller[_0x975a('0x41')]);router[_0x975a('0x42')](_0x975a('0xb'),auth[_0x975a('0x7')](),controller[_0x975a('0x43')]);router['delete'](_0x975a('0xd'),auth['isAuthenticated'](),controller[_0x975a('0x44')]);router[_0x975a('0x42')](_0x975a('0xf'),auth[_0x975a('0x7')](),controller['removeAnswers']);router[_0x975a('0x42')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x975a('0x45')]=router;
\ No newline at end of file
+var _0x3c76=['format','%s-%s','now','originalname','single','file','addLogo','root','addAvatar','server/files/images/avatars/','addCustomerAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','extname','any','/:id/interactions','/:id/applications','addApplications','addProactiveActions','/:id/users','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getSnippet','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','getAgents','post','create','addDisposition','addAnswer','diskStorage','join'];(function(_0x393b80,_0x17aaa5){var _0x1e0cbc=function(_0x987b1e){while(--_0x987b1e){_0x393b80['push'](_0x393b80['shift']());}};_0x1e0cbc(++_0x17aaa5);}(_0x3c76,0x1e4));var _0x63c7=function(_0x1dd3b3,_0x54db4c){_0x1dd3b3=_0x1dd3b3-0x0;var _0xab5e42=_0x3c76[_0x1dd3b3];return _0xab5e42;};'use strict';var multer=require(_0x63c7('0x0'));var util=require(_0x63c7('0x1'));var path=require(_0x63c7('0x2'));var timeout=require(_0x63c7('0x3'));var express=require(_0x63c7('0x4'));var router=express[_0x63c7('0x5')]();var fs_extra=require(_0x63c7('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x63c7('0x7'));var config=require(_0x63c7('0x8'));var controller=require('./chatWebsite.controller');router[_0x63c7('0x9')]('/',auth[_0x63c7('0xa')](),controller[_0x63c7('0xb')]);router[_0x63c7('0x9')](_0x63c7('0xc'),auth['isAuthenticated'](),controller[_0x63c7('0xd')]);router[_0x63c7('0x9')]('/:id',auth[_0x63c7('0xa')](),controller['show']);router[_0x63c7('0x9')](_0x63c7('0xe'),auth[_0x63c7('0xa')](),controller[_0x63c7('0xf')]);router[_0x63c7('0x9')](_0x63c7('0x10'),auth[_0x63c7('0xa')](),controller['getAnswers']);router[_0x63c7('0x9')](_0x63c7('0x11'),controller[_0x63c7('0x12')]);router[_0x63c7('0x9')](_0x63c7('0x13'),controller[_0x63c7('0x14')]);router['get'](_0x63c7('0x15'),controller['getCustomerAvatar']);router['get'](_0x63c7('0x16'),controller[_0x63c7('0x17')]);router[_0x63c7('0x9')]('/:id/interactions',auth[_0x63c7('0xa')](),controller[_0x63c7('0x18')]);router['get'](_0x63c7('0x19'),controller[_0x63c7('0x1a')]);router[_0x63c7('0x9')]('/:id/applications',auth[_0x63c7('0xa')](),controller[_0x63c7('0x1b')]);router[_0x63c7('0x9')](_0x63c7('0x1c'),auth['isAuthenticated'](),controller[_0x63c7('0x1d')]);router[_0x63c7('0x9')](_0x63c7('0x1e'),controller[_0x63c7('0x1f')]);router[_0x63c7('0x9')](_0x63c7('0x20'),auth[_0x63c7('0xa')](),controller[_0x63c7('0x21')]);router[_0x63c7('0x9')]('/:id/users',auth[_0x63c7('0xa')](),controller[_0x63c7('0x22')]);router[_0x63c7('0x23')]('/',auth[_0x63c7('0xa')](),controller[_0x63c7('0x24')]);router['post']('/:id/dispositions',auth[_0x63c7('0xa')](),controller[_0x63c7('0x25')]);router[_0x63c7('0x23')](_0x63c7('0x10'),auth[_0x63c7('0xa')](),controller[_0x63c7('0x26')]);var upload=multer({'storage':multer[_0x63c7('0x27')]({'destination':function(_0x204da5,_0x455c81,_0x59007c){_0x59007c(null,path[_0x63c7('0x28')](config['root'],'server/files/images/logos/'));},'filename':function(_0x5b9a38,_0x3719f4,_0x5f4278){_0x5f4278(null,util[_0x63c7('0x29')](_0x63c7('0x2a'),Date[_0x63c7('0x2b')](),_0x3719f4[_0x63c7('0x2c')]));}})});router[_0x63c7('0x23')]('/:id/logo',upload[_0x63c7('0x2d')](_0x63c7('0x2e')),controller[_0x63c7('0x2f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x342289,_0x2a93a2,_0xd18f09){_0xd18f09(null,path['join'](config[_0x63c7('0x30')],'server/files/images/avatars/'));},'filename':function(_0x2107b4,_0x5ae889,_0x53ae41){_0x53ae41(null,util[_0x63c7('0x29')](_0x63c7('0x2a'),Date[_0x63c7('0x2b')](),_0x5ae889['originalname']));}})});router[_0x63c7('0x23')](_0x63c7('0x13'),upload[_0x63c7('0x2d')](_0x63c7('0x2e')),controller[_0x63c7('0x31')]);var upload=multer({'storage':multer[_0x63c7('0x27')]({'destination':function(_0x49667e,_0x35c25b,_0x42249e){_0x42249e(null,path[_0x63c7('0x28')](config[_0x63c7('0x30')],_0x63c7('0x32')));},'filename':function(_0x2575d7,_0x1b2b7d,_0xb0f0d3){_0xb0f0d3(null,util['format'](_0x63c7('0x2a'),Date[_0x63c7('0x2b')](),_0x1b2b7d['originalname']));}})});router[_0x63c7('0x23')]('/:id/customer_avatar',upload[_0x63c7('0x2d')](_0x63c7('0x2e')),controller[_0x63c7('0x33')]);var upload=multer({'storage':multer[_0x63c7('0x27')]({'destination':function(_0x30b667,_0x1e7bd5,_0x288a49){_0x288a49(null,path[_0x63c7('0x28')](config[_0x63c7('0x30')],_0x63c7('0x32')));},'filename':function(_0xcdf499,_0xc9808c,_0x24c8c7){_0x24c8c7(null,util[_0x63c7('0x29')](_0x63c7('0x2a'),Date[_0x63c7('0x2b')](),_0xc9808c['originalname']));}})});router[_0x63c7('0x23')](_0x63c7('0x16'),upload[_0x63c7('0x2d')]('file'),controller['addSystemAvatar']);router[_0x63c7('0x23')](_0x63c7('0x34'),controller[_0x63c7('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x63c7('0x27')]({'destination':function(_0x4fb7ae,_0x36ffed,_0x1940d1){const _0x3b18af=path[_0x63c7('0x28')](config[_0x63c7('0x30')],_0x63c7('0x36'),_0x63c7('0x37'),_0x63c7('0x38'));fs_extra[_0x63c7('0x39')](_0x3b18af,function(){_0x1940d1(null,_0x3b18af);});},'filename':function(_0x6bb512,_0x582fa8,_0x36c346){const _0x41d3eb=_0x582fa8[_0x63c7('0x2c')][_0x63c7('0x3a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x16a6cb=path[_0x63c7('0x3b')](_0x41d3eb);const _0x55a716=Date[_0x63c7('0x2b')]()+'-'+_0x41d3eb['replace'](_0x16a6cb,'')+_0x16a6cb;_0x36c346(null,_0x55a716);}})});router[_0x63c7('0x23')]('/:id/offline',offlineUploadMulter[_0x63c7('0x3c')](),controller['offline']);router[_0x63c7('0x23')](_0x63c7('0x3d'),auth[_0x63c7('0xa')](),controller['addInteraction']);router[_0x63c7('0x23')](_0x63c7('0x3e'),auth[_0x63c7('0xa')](),controller[_0x63c7('0x3f')]);router[_0x63c7('0x23')](_0x63c7('0x1c'),auth[_0x63c7('0xa')](),controller[_0x63c7('0x40')]);router[_0x63c7('0x23')](_0x63c7('0x41'),auth[_0x63c7('0xa')](),controller[_0x63c7('0x42')]);router[_0x63c7('0x43')](_0x63c7('0x44'),auth['isAuthenticated'](),controller[_0x63c7('0x45')]);router['delete'](_0x63c7('0x44'),auth['isAuthenticated'](),controller[_0x63c7('0x46')]);router[_0x63c7('0x47')](_0x63c7('0xe'),auth[_0x63c7('0xa')](),controller[_0x63c7('0x48')]);router[_0x63c7('0x47')](_0x63c7('0x10'),auth[_0x63c7('0xa')](),controller[_0x63c7('0x49')]);router[_0x63c7('0x47')]('/:id/users',auth[_0x63c7('0xa')](),controller[_0x63c7('0x4a')]);module['exports']=router;
\ No newline at end of file
index b442d4f..3da1f7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1359=['express','../components/auth/service','../config/environment','production','app','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','isAuthenticated','exports'];(function(_0x625c64,_0x53869a){var _0x262d13=function(_0x8fa361){while(--_0x8fa361){_0x625c64['push'](_0x625c64['shift']());}};_0x262d13(++_0x53869a);}(_0x1359,0x6c));var _0x9135=function(_0xcf36a9,_0xce6c4e){_0xcf36a9=_0xcf36a9-0x0;var _0x309776=_0x1359[_0xcf36a9];return _0x309776;};var beaverLogger=require('beaver-logger/server');var express=require(_0x9135('0x0'));var auth=require(_0x9135('0x1'));var config=require(_0x9135('0x2'));var router=express['Router']();var isProduction=config['env']===_0x9135('0x3')||![];function clientSideLogs(_0x3ff211,_0x5091c1,_0x3603e8){var _0x27e8f5=_0x3ff211[_0x9135('0x4')][_0x9135('0x5')](_0x9135('0x6'));if(!_0x27e8f5){throw new Error(_0x9135('0x7'));}return beaverLogger[_0x9135('0x8')]({'uri':_0x9135('0x9'),'logger':_0x27e8f5,'enableCors':!isProduction})(_0x3ff211,_0x5091c1,_0x3603e8);}router['use'](auth[_0x9135('0xa')](),clientSideLogs);module[_0x9135('0xb')]=router;
\ No newline at end of file
+var _0x3ab1=['/client-logs','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service','env','production','app','Client-Side\x20logger\x20not\x20found!','expressEndpoint'];(function(_0x4f3019,_0x162d8b){var _0x1b449a=function(_0x4da52e){while(--_0x4da52e){_0x4f3019['push'](_0x4f3019['shift']());}};_0x1b449a(++_0x162d8b);}(_0x3ab1,0xea));var _0x13ab=function(_0x1a232b,_0x4d1ddb){_0x1a232b=_0x1a232b-0x0;var _0x3e8282=_0x3ab1[_0x1a232b];return _0x3e8282;};var beaverLogger=require(_0x13ab('0x0'));var express=require(_0x13ab('0x1'));var auth=require(_0x13ab('0x2'));var config=require('../config/environment');var router=express['Router']();var isProduction=config[_0x13ab('0x3')]===_0x13ab('0x4')||![];function clientSideLogs(_0x12bc3a,_0x130954,_0x5be626){var _0x334207=_0x12bc3a[_0x13ab('0x5')]['get']('client-side-logger');if(!_0x334207){throw new Error(_0x13ab('0x6'));}return beaverLogger[_0x13ab('0x7')]({'uri':_0x13ab('0x8'),'logger':_0x334207,'enableCors':!isProduction})(_0x12bc3a,_0x130954,_0x5be626);}router['use'](auth[_0x13ab('0x9')](),clientSideLogs);module[_0x13ab('0xa')]=router;
\ No newline at end of file
index 7bd9c42..9a58616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ab=['ENUM','Google','MicrosoftAzure','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING'];(function(_0x369e31,_0x5f1558){var _0x33b750=function(_0x264483){while(--_0x264483){_0x369e31['push'](_0x369e31['shift']());}};_0x33b750(++_0x5f1558);}(_0x34ab,0xed));var _0xb34a=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x34ab[_0x2235bf];return _0x4c3a64;};'use strict';var Sequelize=require(_0xb34a('0x0'));module[_0xb34a('0x1')]={'name':{'type':Sequelize[_0xb34a('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xb34a('0x3')]('AmazonAWS',_0xb34a('0x4'),_0xb34a('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('Outlook365','Dynamics365')},'data1':{'type':Sequelize[_0xb34a('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xb34a('0x2')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xb34a('0x2')],'comment':_0xb34a('0x6')},'data4':{'type':Sequelize['STRING'],'comment':_0xb34a('0x7')},'data5':{'type':Sequelize[_0xb34a('0x8')],'comment':_0xb34a('0x9')},'data6':{'type':Sequelize[_0xb34a('0x8')],'comment':_0xb34a('0xa')},'data7':{'type':Sequelize[_0xb34a('0x8')],'comment':_0xb34a('0xb')}};
\ No newline at end of file
+var _0xb035=['MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','exports','STRING','AmazonAWS','Google','MicrosoftAzure','ENUM','Outlook365','Dynamics365'];(function(_0x3497f5,_0x157212){var _0x35d256=function(_0x395dae){while(--_0x395dae){_0x3497f5['push'](_0x3497f5['shift']());}};_0x35d256(++_0x157212);}(_0xb035,0x1aa));var _0x5b03=function(_0x404fbe,_0x1944dc){_0x404fbe=_0x404fbe-0x0;var _0x5869ae=_0xb035[_0x404fbe];return _0x5869ae;};'use strict';var Sequelize=require('sequelize');module[_0x5b03('0x0')]={'name':{'type':Sequelize[_0x5b03('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0x5b03('0x2'),_0x5b03('0x3'),_0x5b03('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x5b03('0x5')](_0x5b03('0x6'),_0x5b03('0x7'))},'data1':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0x5b03('0x1')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0x5b03('0x1')],'comment':_0x5b03('0x8')},'data4':{'type':Sequelize[_0x5b03('0x1')],'comment':_0x5b03('0x9')},'data5':{'type':Sequelize[_0x5b03('0xa')],'comment':_0x5b03('0xb')},'data6':{'type':Sequelize[_0x5b03('0xa')],'comment':_0x5b03('0xc')},'data7':{'type':Sequelize[_0x5b03('0xa')],'comment':_0x5b03('0xd')}};
\ No newline at end of file
index be16585..467688d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a55=['limit','undefined','count','set','Content-Range','json','update','end','stack','padEnd','slice','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','name','merge','options','then','includeAll','include','CloudProvider','findAll','rows','service','MicrosoftAzure','data3','show','params','find','decryptString','catch','create','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','destroy','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','error','get','state','Invalid\x20state\x20parameter','from','base64','toString','ascii','parse','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','access_token','data6','data5','startRefreshInterval','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../config/logger','./cloudProvider.oauth','redis','localhost','socket.io-emitter','sendStatus','status','offset'];(function(_0x211f5f,_0xc6daac){var _0x4feb86=function(_0x30c168){while(--_0x30c168){_0x211f5f['push'](_0x211f5f['shift']());}};_0x4feb86(++_0xc6daac);}(_0x3a55,0x17c));var _0x53a5=function(_0x3df0d0,_0x32d817){_0x3df0d0=_0x3df0d0-0x0;var _0x257890=_0x3a55[_0x3df0d0];return _0x257890;};'use strict';var _=require(_0x53a5('0x0'));var Redis=require(_0x53a5('0x1'));var qs=require(_0x53a5('0x2'));var encryptor=require('../../components/encryptor');var config=require(_0x53a5('0x3'));var logger=require(_0x53a5('0x4'))('api');var db=require('../../mysqldb')['db'];var oauth=require(_0x53a5('0x5'));config[_0x53a5('0x6')]=_['defaults'](config[_0x53a5('0x6')],{'host':_0x53a5('0x7'),'port':0x18eb});var socket=require(_0x53a5('0x8'))(new Redis(config[_0x53a5('0x6')]));var redis=new Redis(config[_0x53a5('0x6')]);function respondWithStatusCode(_0x654ad6,_0x40295f){_0x40295f=_0x40295f||0xcc;return function(_0x1bd432){if(_0x1bd432){return _0x654ad6[_0x53a5('0x9')](_0x40295f);}return _0x654ad6[_0x53a5('0xa')](_0x40295f)['end']();};}function respondWithResult(_0x2a75fe,_0x41f838){_0x41f838=_0x41f838||0xc8;return function(_0x287c18){if(_0x287c18){return _0x2a75fe['status'](_0x41f838)['json'](_0x287c18);}};}function respondWithFilteredResult(_0x5a41c9,_0x1ab29f){return function(_0x197c09){if(_0x197c09){var _0x2da4e5=typeof _0x1ab29f[_0x53a5('0xb')]==='undefined'&&typeof _0x1ab29f[_0x53a5('0xc')]===_0x53a5('0xd');var _0x1fc178=_0x197c09[_0x53a5('0xe')];var _0x49eb16=_0x2da4e5?0x0:_0x1ab29f[_0x53a5('0xb')];var _0x5b4bb7=_0x2da4e5?_0x197c09[_0x53a5('0xe')]:_0x1ab29f[_0x53a5('0xb')]+_0x1ab29f['limit'];var _0x54e44d;if(_0x5b4bb7>=_0x1fc178){_0x5b4bb7=_0x1fc178;_0x54e44d=0xc8;}else{_0x54e44d=0xce;}_0x5a41c9['status'](_0x54e44d);return _0x5a41c9[_0x53a5('0xf')](_0x53a5('0x10'),_0x49eb16+'-'+_0x5b4bb7+'/'+_0x1fc178)[_0x53a5('0x11')](_0x197c09);}return null;};}function saveUpdates(_0x47abb1){return function(_0x502e7f){if(_0x502e7f){return _0x502e7f[_0x53a5('0x12')](_0x47abb1)['then'](function(_0x2b5159){return _0x2b5159;});}return null;};}function removeEntity(_0x5b0111){return function(_0x226195){if(_0x226195){return _0x226195['destroy']()['then'](function(){_0x5b0111[_0x53a5('0xa')](0xcc)[_0x53a5('0x13')]();});}};}function handleEntityNotFound(_0x3da66e){return function(_0xc3c29b){if(!_0xc3c29b){_0x3da66e[_0x53a5('0x9')](0x194);}return _0xc3c29b;};}function handleError(_0x47d130,_0x3d0afe){_0x3d0afe=_0x3d0afe||0x1f4;return function(_0x1d7ea7){logger['error'](_0x1d7ea7[_0x53a5('0x14')]);if(_0x1d7ea7['name']){delete _0x1d7ea7['name'];}_0x47d130[_0x53a5('0xa')](_0x3d0afe)['send'](_0x1d7ea7);};}function maskClientSecret(_0x22b765){return _[_0x53a5('0x15')](_0x22b765[_0x53a5('0x16')](0x0,0x3),0x14,'*');}exports['index']=function(_0x153c81,_0x1c50be){var _0x98265e={},_0x522ea7={},_0x3a509e={'count':0x0,'rows':[]};var _0x25df0a=_['map'](db['CloudProvider'][_0x53a5('0x17')],function(_0x56e3cd){return{'name':_0x56e3cd[_0x53a5('0x18')],'type':_0x56e3cd['type'][_0x53a5('0x19')]};});_0x522ea7[_0x53a5('0x1a')]=_[_0x53a5('0x1b')](_0x25df0a,'name');_0x522ea7[_0x53a5('0x1c')]=_[_0x53a5('0x1d')](_0x153c81[_0x53a5('0x1c')]);_0x522ea7[_0x53a5('0x1e')]=_[_0x53a5('0x1f')](_0x522ea7[_0x53a5('0x1a')],_0x522ea7['query']);_0x98265e[_0x53a5('0x20')]=_['intersection'](_0x522ea7['model'],qs['fields'](_0x153c81[_0x53a5('0x1c')][_0x53a5('0x21')]));_0x98265e[_0x53a5('0x20')]=_0x98265e[_0x53a5('0x20')][_0x53a5('0x22')]?_0x98265e[_0x53a5('0x20')]:_0x522ea7['model'];if(!_0x153c81[_0x53a5('0x1c')][_0x53a5('0x23')](_0x53a5('0x24'))){_0x98265e[_0x53a5('0xc')]=qs[_0x53a5('0xc')](_0x153c81[_0x53a5('0x1c')][_0x53a5('0xc')]);_0x98265e['offset']=qs[_0x53a5('0xb')](_0x153c81[_0x53a5('0x1c')][_0x53a5('0xb')]);}_0x98265e[_0x53a5('0x25')]=qs['sort'](_0x153c81[_0x53a5('0x1c')][_0x53a5('0x26')]);_0x98265e[_0x53a5('0x27')]=qs[_0x53a5('0x1e')](_['pick'](_0x153c81[_0x53a5('0x1c')],_0x522ea7[_0x53a5('0x1e')]),_0x25df0a);if(_0x153c81['query'][_0x53a5('0x28')]){_0x98265e[_0x53a5('0x27')]=_['merge'](_0x98265e['where'],{'$or':_[_0x53a5('0x1b')](_0x25df0a,function(_0x3dbe85){if(_0x3dbe85[_0x53a5('0x29')]!==_0x53a5('0x2a')){var _0x5c7928={};_0x5c7928[_0x3dbe85[_0x53a5('0x2b')]]={'$like':'%'+_0x153c81[_0x53a5('0x1c')][_0x53a5('0x28')]+'%'};return _0x5c7928;}})});}_0x98265e=_[_0x53a5('0x2c')]({},_0x98265e,_0x153c81[_0x53a5('0x2d')]);var _0x465ed8={'where':_0x98265e['where']};return db['CloudProvider'][_0x53a5('0xe')](_0x465ed8)[_0x53a5('0x2e')](function(_0x529ce7){_0x3a509e['count']=_0x529ce7;if(_0x153c81[_0x53a5('0x1c')][_0x53a5('0x2f')]){_0x98265e[_0x53a5('0x30')]=[{'all':!![]}];}return db[_0x53a5('0x31')][_0x53a5('0x32')](_0x98265e);})[_0x53a5('0x2e')](function(_0x38c804){_0x3a509e[_0x53a5('0x33')]=_['map'](_0x38c804,function(_0x4a2f89){if(_0x4a2f89[_0x53a5('0x34')]===_0x53a5('0x35')){var _0x31c101=encryptor['decryptString'](_0x4a2f89[_0x53a5('0x36')]);_0x4a2f89[_0x53a5('0x36')]=maskClientSecret(_0x31c101);}return _0x4a2f89;});return _0x3a509e;})[_0x53a5('0x2e')](respondWithFilteredResult(_0x1c50be,_0x98265e))['catch'](handleError(_0x1c50be,null));};exports[_0x53a5('0x37')]=function(_0x3cb38f,_0x56b36c){var _0x397c75={'raw':!![],'where':{'id':_0x3cb38f[_0x53a5('0x38')]['id']}},_0x460a1e={};_0x460a1e[_0x53a5('0x1a')]=_['keys'](db[_0x53a5('0x31')]['rawAttributes']);_0x460a1e[_0x53a5('0x1c')]=_['keys'](_0x3cb38f[_0x53a5('0x1c')]);_0x460a1e[_0x53a5('0x1e')]=_[_0x53a5('0x1f')](_0x460a1e[_0x53a5('0x1a')],_0x460a1e[_0x53a5('0x1c')]);_0x397c75['attributes']=_[_0x53a5('0x1f')](_0x460a1e[_0x53a5('0x1a')],qs[_0x53a5('0x21')](_0x3cb38f['query'][_0x53a5('0x21')]));_0x397c75['attributes']=_0x397c75[_0x53a5('0x20')][_0x53a5('0x22')]?_0x397c75['attributes']:_0x460a1e[_0x53a5('0x1a')];if(_0x3cb38f[_0x53a5('0x1c')]['includeAll']){_0x397c75[_0x53a5('0x30')]=[{'all':!![]}];}_0x397c75=_[_0x53a5('0x2c')]({},_0x397c75,_0x3cb38f[_0x53a5('0x2d')]);return db[_0x53a5('0x31')][_0x53a5('0x39')](_0x397c75)[_0x53a5('0x2e')](handleEntityNotFound(_0x56b36c,null))[_0x53a5('0x2e')](function(_0x10300c){if(_0x10300c[_0x53a5('0x34')]==='MicrosoftAzure'){var _0x585823=encryptor[_0x53a5('0x3a')](_0x10300c[_0x53a5('0x36')]);_0x10300c[_0x53a5('0x36')]=maskClientSecret(_0x585823);}return _0x10300c;})[_0x53a5('0x2e')](respondWithResult(_0x56b36c,null))[_0x53a5('0x3b')](handleError(_0x56b36c,null));};exports[_0x53a5('0x3c')]=function(_0x53aef1,_0x3f8d3b){if(!_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x2b')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x34')])throw new Error(_0x53a5('0x3e'));var _0x4b9686=db[_0x53a5('0x31')]['rawAttributes'][_0x53a5('0x34')][_0x53a5('0x3f')];if(!_0x4b9686[_0x53a5('0x40')](_0x53aef1['body'][_0x53a5('0x34')]))throw new Error(_0x53a5('0x41')+_0x4b9686[_0x53a5('0x42')](',\x20'));if(_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x34')]===_0x53a5('0x35')&&_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x36')]){_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x36')]=encryptor[_0x53a5('0x43')](_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x36')]);}return db['CloudProvider'][_0x53a5('0x3c')](_0x53aef1['body'],{})['then'](respondWithResult(_0x3f8d3b,0xc9))['catch'](handleError(_0x3f8d3b,null));};exports[_0x53a5('0x12')]=function(_0x3e5604,_0x32f52d){if(_0x3e5604[_0x53a5('0x3d')]['id']){delete _0x3e5604[_0x53a5('0x3d')]['id'];}return db[_0x53a5('0x31')][_0x53a5('0x39')]({'where':{'id':_0x3e5604['params']['id']}})['then'](handleEntityNotFound(_0x32f52d,null))['then'](function(_0x4102ed){if(_0x4102ed[_0x53a5('0x34')]===_0x53a5('0x35')&&_0x3e5604[_0x53a5('0x3d')][_0x53a5('0x36')]){_0x3e5604['body'][_0x53a5('0x36')]=encryptor['encryptString'](_0x3e5604['body']['data3']);}return _0x4102ed;})[_0x53a5('0x2e')](saveUpdates(_0x3e5604[_0x53a5('0x3d')],null))['then'](respondWithResult(_0x32f52d,null))[_0x53a5('0x3b')](handleError(_0x32f52d,null));};exports[_0x53a5('0x44')]=function(_0xa493e8,_0x452514){return db[_0x53a5('0x31')][_0x53a5('0x39')]({'where':{'id':_0xa493e8[_0x53a5('0x38')]['id']}})['then'](handleEntityNotFound(_0x452514,null))[_0x53a5('0x2e')](removeEntity(_0x452514,null))[_0x53a5('0x3b')](handleError(_0x452514,null));};exports['oauth2MicrosoftAuthorize']=function(_0x18ff77,_0x269cb2){return db[_0x53a5('0x31')][_0x53a5('0x45')]({'where':{'id':_0x18ff77[_0x53a5('0x38')]['id']},'raw':!![]})[_0x53a5('0x2e')](function(_0xb880e6){if(!_0xb880e6)return _0x269cb2['sendStatus'](0x194);return{'url':oauth[_0x53a5('0x46')](_0xb880e6,_0x18ff77[_0x53a5('0x47')]['id'])};})['then'](respondWithResult(_0x269cb2,null))[_0x53a5('0x3b')](handleError(_0x269cb2,null));};exports[_0x53a5('0x48')]=function(_0x55b186,_0xd065a){var _0x49268b=_0x55b186[_0x53a5('0x3d')];var _0x21e0e1;var _0x2f3460;if(_0x49268b[_0x53a5('0x49')])throw _0x49268b;redis[_0x53a5('0x4a')](_0x49268b[_0x53a5('0x4b')])['then'](function(_0x181bbb){if(!_0x181bbb)throw new Error(_0x53a5('0x4c'));_0x21e0e1=JSON['parse'](_0x181bbb);var _0xdc0df5=Buffer[_0x53a5('0x4d')](_0x49268b[_0x53a5('0x4b')],_0x53a5('0x4e'))[_0x53a5('0x4f')](_0x53a5('0x50'));_0x2f3460=JSON[_0x53a5('0x51')](_0xdc0df5);if(!oauth['isValidIdToken'](_0x49268b[_0x53a5('0x52')],_0x21e0e1[_0x53a5('0x53')]))throw new Error(_0x53a5('0x54'));redis[_0x53a5('0x55')](_0x49268b['state']);return oauth[_0x53a5('0x56')](_0x49268b[_0x53a5('0x57')],_0x21e0e1);})[_0x53a5('0x2e')](function(_0x2e6ea6){_0x21e0e1['data5']=_0x2e6ea6[_0x53a5('0x58')];_0x21e0e1[_0x53a5('0x59')]=_0x2e6ea6['refresh_token'];return db[_0x53a5('0x31')][_0x53a5('0x12')]({'data5':_0x21e0e1[_0x53a5('0x5a')],'data6':_0x21e0e1[_0x53a5('0x59')]},{'where':{'id':_0x21e0e1['id']}});})[_0x53a5('0x2e')](function(){oauth[_0x53a5('0x5b')](_0x21e0e1);socket[_0x53a5('0x5c')](_0x53a5('0x5d'),{'id':_0x2f3460['id']});return;})[_0x53a5('0x2e')](respondWithStatusCode(_0xd065a,null))[_0x53a5('0x3b')](function(_0x28b0f6){if(_0x2f3460){socket[_0x53a5('0x5c')]('microsoftAuthorization:error',{'id':_0x2f3460['id']});}if(!_0x21e0e1){logger['error'](_0x53a5('0x5e'),_0x28b0f6);return _0xd065a[_0x53a5('0xa')](0x1f4)['send'](_0x28b0f6[_0x53a5('0x5f')]);}logger['error'](_0x53a5('0x60'),_0x21e0e1['id'],JSON[_0x53a5('0x61')](_0x28b0f6));});};
\ No newline at end of file
+var _0xfed6=['status','end','offset','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','send','padEnd','slice','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','CloudProvider','includeAll','include','findAll','rows','MicrosoftAzure','decryptString','data3','options','find','catch','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','service','values','includes','body','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','params','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','parse','from','isValidIdToken','Unable\x20to\x20validate\x20id_token','del','code','data5','access_token','data6','refresh_token','startRefreshInterval','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','socket.io-emitter','sendStatus'];(function(_0x4b57ec,_0x3a8166){var _0x47d417=function(_0xdff2fc){while(--_0xdff2fc){_0x4b57ec['push'](_0x4b57ec['shift']());}};_0x47d417(++_0x3a8166);}(_0xfed6,0x1c0));var _0x6fed=function(_0x50641e,_0x3bc2fe){_0x50641e=_0x50641e-0x0;var _0x426fa1=_0xfed6[_0x50641e];return _0x426fa1;};'use strict';var _=require(_0x6fed('0x0'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var encryptor=require(_0x6fed('0x1'));var config=require(_0x6fed('0x2'));var logger=require(_0x6fed('0x3'))(_0x6fed('0x4'));var db=require(_0x6fed('0x5'))['db'];var oauth=require(_0x6fed('0x6'));config[_0x6fed('0x7')]=_[_0x6fed('0x8')](config[_0x6fed('0x7')],{'host':_0x6fed('0x9'),'port':0x18eb});var socket=require(_0x6fed('0xa'))(new Redis(config[_0x6fed('0x7')]));var redis=new Redis(config[_0x6fed('0x7')]);function respondWithStatusCode(_0x26d728,_0x47da6a){_0x47da6a=_0x47da6a||0xcc;return function(_0x1f9111){if(_0x1f9111){return _0x26d728[_0x6fed('0xb')](_0x47da6a);}return _0x26d728[_0x6fed('0xc')](_0x47da6a)[_0x6fed('0xd')]();};}function respondWithResult(_0x13b793,_0x2abecb){_0x2abecb=_0x2abecb||0xc8;return function(_0x3ad558){if(_0x3ad558){return _0x13b793[_0x6fed('0xc')](_0x2abecb)['json'](_0x3ad558);}};}function respondWithFilteredResult(_0x4efdaa,_0x28502c){return function(_0xc7f68b){if(_0xc7f68b){var _0x3bbf31=typeof _0x28502c[_0x6fed('0xe')]==='undefined'&&typeof _0x28502c[_0x6fed('0xf')]==='undefined';var _0xe07aaf=_0xc7f68b[_0x6fed('0x10')];var _0x4606bb=_0x3bbf31?0x0:_0x28502c['offset'];var _0x29daf6=_0x3bbf31?_0xc7f68b['count']:_0x28502c[_0x6fed('0xe')]+_0x28502c[_0x6fed('0xf')];var _0x7686dc;if(_0x29daf6>=_0xe07aaf){_0x29daf6=_0xe07aaf;_0x7686dc=0xc8;}else{_0x7686dc=0xce;}_0x4efdaa[_0x6fed('0xc')](_0x7686dc);return _0x4efdaa[_0x6fed('0x11')](_0x6fed('0x12'),_0x4606bb+'-'+_0x29daf6+'/'+_0xe07aaf)[_0x6fed('0x13')](_0xc7f68b);}return null;};}function saveUpdates(_0x1e13d1){return function(_0x110216){if(_0x110216){return _0x110216[_0x6fed('0x14')](_0x1e13d1)[_0x6fed('0x15')](function(_0x28acfc){return _0x28acfc;});}return null;};}function removeEntity(_0x844008){return function(_0x11843c){if(_0x11843c){return _0x11843c[_0x6fed('0x16')]()['then'](function(){_0x844008['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4bd346){return function(_0x46248c){if(!_0x46248c){_0x4bd346[_0x6fed('0xb')](0x194);}return _0x46248c;};}function handleError(_0x3d2f52,_0x2872b8){_0x2872b8=_0x2872b8||0x1f4;return function(_0x4f528e){logger[_0x6fed('0x17')](_0x4f528e[_0x6fed('0x18')]);if(_0x4f528e[_0x6fed('0x19')]){delete _0x4f528e['name'];}_0x3d2f52[_0x6fed('0xc')](_0x2872b8)[_0x6fed('0x1a')](_0x4f528e);};}function maskClientSecret(_0x2deb4d){return _[_0x6fed('0x1b')](_0x2deb4d[_0x6fed('0x1c')](0x0,0x3),0x14,'*');}exports['index']=function(_0x466d6b,_0x5569ea){var _0x4ad31a={},_0x2b8e5e={},_0x163d01={'count':0x0,'rows':[]};var _0x1c9a22=_[_0x6fed('0x1d')](db['CloudProvider'][_0x6fed('0x1e')],function(_0x2ba7ce){return{'name':_0x2ba7ce[_0x6fed('0x1f')],'type':_0x2ba7ce[_0x6fed('0x20')][_0x6fed('0x21')]};});_0x2b8e5e[_0x6fed('0x22')]=_[_0x6fed('0x1d')](_0x1c9a22,_0x6fed('0x19'));_0x2b8e5e[_0x6fed('0x23')]=_[_0x6fed('0x24')](_0x466d6b[_0x6fed('0x23')]);_0x2b8e5e[_0x6fed('0x25')]=_['intersection'](_0x2b8e5e[_0x6fed('0x22')],_0x2b8e5e[_0x6fed('0x23')]);_0x4ad31a['attributes']=_[_0x6fed('0x26')](_0x2b8e5e['model'],qs[_0x6fed('0x27')](_0x466d6b[_0x6fed('0x23')][_0x6fed('0x27')]));_0x4ad31a[_0x6fed('0x28')]=_0x4ad31a[_0x6fed('0x28')][_0x6fed('0x29')]?_0x4ad31a['attributes']:_0x2b8e5e[_0x6fed('0x22')];if(!_0x466d6b[_0x6fed('0x23')][_0x6fed('0x2a')]('nolimit')){_0x4ad31a[_0x6fed('0xf')]=qs[_0x6fed('0xf')](_0x466d6b[_0x6fed('0x23')]['limit']);_0x4ad31a[_0x6fed('0xe')]=qs['offset'](_0x466d6b[_0x6fed('0x23')][_0x6fed('0xe')]);}_0x4ad31a[_0x6fed('0x2b')]=qs[_0x6fed('0x2c')](_0x466d6b[_0x6fed('0x23')][_0x6fed('0x2c')]);_0x4ad31a[_0x6fed('0x2d')]=qs[_0x6fed('0x25')](_[_0x6fed('0x2e')](_0x466d6b[_0x6fed('0x23')],_0x2b8e5e[_0x6fed('0x25')]),_0x1c9a22);if(_0x466d6b[_0x6fed('0x23')][_0x6fed('0x2f')]){_0x4ad31a[_0x6fed('0x2d')]=_[_0x6fed('0x30')](_0x4ad31a[_0x6fed('0x2d')],{'$or':_[_0x6fed('0x1d')](_0x1c9a22,function(_0x1be6b3){if(_0x1be6b3[_0x6fed('0x20')]!==_0x6fed('0x31')){var _0x5a31dd={};_0x5a31dd[_0x1be6b3[_0x6fed('0x19')]]={'$like':'%'+_0x466d6b['query'][_0x6fed('0x2f')]+'%'};return _0x5a31dd;}})});}_0x4ad31a=_[_0x6fed('0x30')]({},_0x4ad31a,_0x466d6b['options']);var _0x2af860={'where':_0x4ad31a[_0x6fed('0x2d')]};return db[_0x6fed('0x32')][_0x6fed('0x10')](_0x2af860)[_0x6fed('0x15')](function(_0x423a07){_0x163d01['count']=_0x423a07;if(_0x466d6b[_0x6fed('0x23')][_0x6fed('0x33')]){_0x4ad31a[_0x6fed('0x34')]=[{'all':!![]}];}return db[_0x6fed('0x32')][_0x6fed('0x35')](_0x4ad31a);})[_0x6fed('0x15')](function(_0x4abddf){_0x163d01[_0x6fed('0x36')]=_[_0x6fed('0x1d')](_0x4abddf,function(_0x3e480b){if(_0x3e480b['service']===_0x6fed('0x37')){var _0x3a915e=encryptor[_0x6fed('0x38')](_0x3e480b[_0x6fed('0x39')]);_0x3e480b[_0x6fed('0x39')]=maskClientSecret(_0x3a915e);}return _0x3e480b;});return _0x163d01;})[_0x6fed('0x15')](respondWithFilteredResult(_0x5569ea,_0x4ad31a))['catch'](handleError(_0x5569ea,null));};exports['show']=function(_0x2123d1,_0x52a9ed){var _0x5c7b5f={'raw':!![],'where':{'id':_0x2123d1['params']['id']}},_0x1e3494={};_0x1e3494[_0x6fed('0x22')]=_['keys'](db[_0x6fed('0x32')]['rawAttributes']);_0x1e3494[_0x6fed('0x23')]=_[_0x6fed('0x24')](_0x2123d1[_0x6fed('0x23')]);_0x1e3494[_0x6fed('0x25')]=_[_0x6fed('0x26')](_0x1e3494['model'],_0x1e3494['query']);_0x5c7b5f[_0x6fed('0x28')]=_['intersection'](_0x1e3494[_0x6fed('0x22')],qs[_0x6fed('0x27')](_0x2123d1[_0x6fed('0x23')][_0x6fed('0x27')]));_0x5c7b5f[_0x6fed('0x28')]=_0x5c7b5f[_0x6fed('0x28')][_0x6fed('0x29')]?_0x5c7b5f[_0x6fed('0x28')]:_0x1e3494[_0x6fed('0x22')];if(_0x2123d1[_0x6fed('0x23')][_0x6fed('0x33')]){_0x5c7b5f['include']=[{'all':!![]}];}_0x5c7b5f=_[_0x6fed('0x30')]({},_0x5c7b5f,_0x2123d1[_0x6fed('0x3a')]);return db[_0x6fed('0x32')][_0x6fed('0x3b')](_0x5c7b5f)[_0x6fed('0x15')](handleEntityNotFound(_0x52a9ed,null))['then'](function(_0x505052){if(_0x505052['service']===_0x6fed('0x37')){var _0x4ac5fb=encryptor['decryptString'](_0x505052[_0x6fed('0x39')]);_0x505052[_0x6fed('0x39')]=maskClientSecret(_0x4ac5fb);}return _0x505052;})[_0x6fed('0x15')](respondWithResult(_0x52a9ed,null))[_0x6fed('0x3c')](handleError(_0x52a9ed,null));};exports['create']=function(_0x44250e,_0x3ddd20){if(!_0x44250e['body'][_0x6fed('0x19')])throw new Error(_0x6fed('0x3d'));if(!_0x44250e['body']['service'])throw new Error(_0x6fed('0x3e'));var _0x2c7a58=db[_0x6fed('0x32')][_0x6fed('0x1e')][_0x6fed('0x3f')][_0x6fed('0x40')];if(!_0x2c7a58[_0x6fed('0x41')](_0x44250e[_0x6fed('0x42')][_0x6fed('0x3f')]))throw new Error(_0x6fed('0x43')+_0x2c7a58['join'](',\x20'));if(_0x44250e[_0x6fed('0x42')]['service']===_0x6fed('0x37')&&_0x44250e['body'][_0x6fed('0x39')]){_0x44250e['body'][_0x6fed('0x39')]=encryptor[_0x6fed('0x44')](_0x44250e[_0x6fed('0x42')][_0x6fed('0x39')]);}return db[_0x6fed('0x32')]['create'](_0x44250e[_0x6fed('0x42')],{})[_0x6fed('0x15')](respondWithResult(_0x3ddd20,0xc9))[_0x6fed('0x3c')](handleError(_0x3ddd20,null));};exports[_0x6fed('0x14')]=function(_0x517e12,_0x5df2ea){if(_0x517e12['body']['id']){delete _0x517e12[_0x6fed('0x42')]['id'];}return db[_0x6fed('0x32')][_0x6fed('0x3b')]({'where':{'id':_0x517e12[_0x6fed('0x45')]['id']}})['then'](handleEntityNotFound(_0x5df2ea,null))[_0x6fed('0x15')](function(_0x4259d3){if(_0x4259d3['service']===_0x6fed('0x37')&&_0x517e12[_0x6fed('0x42')][_0x6fed('0x39')]){_0x517e12[_0x6fed('0x42')]['data3']=encryptor[_0x6fed('0x44')](_0x517e12[_0x6fed('0x42')]['data3']);}return _0x4259d3;})['then'](saveUpdates(_0x517e12['body'],null))[_0x6fed('0x15')](respondWithResult(_0x5df2ea,null))['catch'](handleError(_0x5df2ea,null));};exports[_0x6fed('0x16')]=function(_0x23d73b,_0x2fc2b5){return db[_0x6fed('0x32')][_0x6fed('0x3b')]({'where':{'id':_0x23d73b[_0x6fed('0x45')]['id']}})[_0x6fed('0x15')](handleEntityNotFound(_0x2fc2b5,null))[_0x6fed('0x15')](removeEntity(_0x2fc2b5,null))['catch'](handleError(_0x2fc2b5,null));};exports['oauth2MicrosoftAuthorize']=function(_0x14dafe,_0x438000){return db[_0x6fed('0x32')][_0x6fed('0x46')]({'where':{'id':_0x14dafe[_0x6fed('0x45')]['id']},'raw':!![]})[_0x6fed('0x15')](function(_0xc37249){if(!_0xc37249)return _0x438000[_0x6fed('0xb')](0x194);return{'url':oauth[_0x6fed('0x47')](_0xc37249,_0x14dafe[_0x6fed('0x48')]['id'])};})[_0x6fed('0x15')](respondWithResult(_0x438000,null))[_0x6fed('0x3c')](handleError(_0x438000,null));};exports[_0x6fed('0x49')]=function(_0x531207,_0x19d04d){var _0x257c68=_0x531207[_0x6fed('0x42')];var _0x2cca10;var _0x552941;if(_0x257c68[_0x6fed('0x17')])throw _0x257c68;redis[_0x6fed('0x4a')](_0x257c68[_0x6fed('0x4b')])[_0x6fed('0x15')](function(_0x4d7251){if(!_0x4d7251)throw new Error('Invalid\x20state\x20parameter');_0x2cca10=JSON[_0x6fed('0x4c')](_0x4d7251);var _0x39074a=Buffer[_0x6fed('0x4d')](_0x257c68[_0x6fed('0x4b')],'base64')['toString']('ascii');_0x552941=JSON[_0x6fed('0x4c')](_0x39074a);if(!oauth[_0x6fed('0x4e')](_0x257c68['id_token'],_0x2cca10['oauth2Claims']))throw new Error(_0x6fed('0x4f'));redis[_0x6fed('0x50')](_0x257c68['state']);return oauth['getOauth2MicrosoftAccessToken'](_0x257c68[_0x6fed('0x51')],_0x2cca10);})['then'](function(_0x4bb08f){_0x2cca10[_0x6fed('0x52')]=_0x4bb08f[_0x6fed('0x53')];_0x2cca10[_0x6fed('0x54')]=_0x4bb08f[_0x6fed('0x55')];return db['CloudProvider']['update']({'data5':_0x2cca10['data5'],'data6':_0x2cca10[_0x6fed('0x54')]},{'where':{'id':_0x2cca10['id']}});})[_0x6fed('0x15')](function(){oauth[_0x6fed('0x56')](_0x2cca10);socket[_0x6fed('0x57')](_0x6fed('0x58'),{'id':_0x552941['id']});return;})['then'](respondWithStatusCode(_0x19d04d,null))[_0x6fed('0x3c')](function(_0x159521){if(_0x552941){socket[_0x6fed('0x57')]('microsoftAuthorization:error',{'id':_0x552941['id']});}if(!_0x2cca10){logger[_0x6fed('0x17')](_0x6fed('0x59'),_0x159521);return _0x19d04d['status'](0x1f4)[_0x6fed('0x1a')](_0x159521[_0x6fed('0x5a')]);}logger[_0x6fed('0x17')](_0x6fed('0x5b'),_0x2cca10['id'],JSON['stringify'](_0x159521));});};
\ No newline at end of file
index ae4562c..a047f6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12a9=['bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','define','CloudProvider','cloud_providers','lodash','../../config/logger','api','moment'];(function(_0x189ee7,_0x86cdc2){var _0x6442ad=function(_0x4db069){while(--_0x4db069){_0x189ee7['push'](_0x189ee7['shift']());}};_0x6442ad(++_0x86cdc2);}(_0x12a9,0xcc));var _0x912a=function(_0x43578e,_0x21e84c){_0x43578e=_0x43578e-0x0;var _0x3c83e4=_0x12a9[_0x43578e];return _0x3c83e4;};'use strict';var _=require(_0x912a('0x0'));var util=require('util');var logger=require(_0x912a('0x1'))(_0x912a('0x2'));var moment=require(_0x912a('0x3'));var BPromise=require(_0x912a('0x4'));var rp=require(_0x912a('0x5'));var fs=require('fs');var path=require(_0x912a('0x6'));var rimraf=require(_0x912a('0x7'));var config=require(_0x912a('0x8'));var attributes=require(_0x912a('0x9'));module['exports']=function(_0x2de5e1,_0x7eb550){return _0x2de5e1[_0x912a('0xa')](_0x912a('0xb'),attributes,{'tableName':_0x912a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x19f3=['./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x19f3,0x1a7));var _0x319f=function(_0x3fd455,_0x1f7c5b){_0x3fd455=_0x3fd455-0x0;var _0x1c259f=_0x19f3[_0x3fd455];return _0x1c259f;};'use strict';var _=require(_0x319f('0x0'));var util=require(_0x319f('0x1'));var logger=require(_0x319f('0x2'))('api');var moment=require(_0x319f('0x3'));var BPromise=require(_0x319f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x319f('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x319f('0x6'));module[_0x319f('0x7')]=function(_0x131330,_0xeb014d){return _0x131330[_0x319f('0x8')](_0x319f('0x9'),attributes,{'tableName':_0x319f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92a67ba..00ee85c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb5=['https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','push','/.default','Dynamics365','data7','code','toString','base64','randomBytes','client_id','data1','join','response_mode','form_post','scope','state','nonce','prompt','login','oauth2Claims','replace','stringify','decode','iss','issuer','aud','audience','isAfter','unix','exp','resolve','then','CloudProvider','refresh_token','data6','data4','data3','POST','{TENANT_ID}','data2','data5','access_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','intervals','bind','findAll','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','crypto','jsonwebtoken','moment','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','defaults','redis','localhost'];(function(_0x1d52ac,_0x14a509){var _0x1c56ce=function(_0x3014f0){while(--_0x3014f0){_0x1d52ac['push'](_0x1d52ac['shift']());}};_0x1c56ce(++_0x14a509);}(_0xdbb5,0x170));var _0x5dbb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdbb5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var crypto=require(_0x5dbb('0x0'));var jwt=require(_0x5dbb('0x1'));var moment=require(_0x5dbb('0x2'));var Redis=require('ioredis');var rp=require('request-promise');var util=require('util');var encryptor=require(_0x5dbb('0x3'));var config=require(_0x5dbb('0x4'));var logger=require(_0x5dbb('0x5'))(_0x5dbb('0x6'));var schedule=require(_0x5dbb('0x7'));var db=require(_0x5dbb('0x8'))['db'];config['redis']=_[_0x5dbb('0x9')](config[_0x5dbb('0xa')],{'host':_0x5dbb('0xb'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x5dbb('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x5dbb('0xd'),'profile',_0x5dbb('0xe'),_0x5dbb('0xf'),_0x5dbb('0x10'),_0x5dbb('0x11'),_0x5dbb('0x12')],'Dynamics365':[_0x5dbb('0xd'),_0x5dbb('0xf')]};var MICROSOFT_AUTH_ENDPOINT=_0x5dbb('0x13');var MICROSOFT_TOKEN_ENDPOINT=_0x5dbb('0x14');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x5ddae4){var _0x44fbc8=_[_0x5dbb('0x15')](AZURE_AUTH_SCOPES[_0x5ddae4[_0x5dbb('0x16')]]);if(_0x5ddae4[_0x5dbb('0x16')]==='Dynamics365')_0x44fbc8[_0x5dbb('0x17')](_0x5ddae4['data7']+_0x5dbb('0x18'));return _0x44fbc8['join']('\x20');}function getAccessTokenScope(_0x3acc31){if(_0x3acc31[_0x5dbb('0x16')]==='Outlook365')return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x3acc31[_0x5dbb('0x16')]===_0x5dbb('0x19'))return _0x3acc31[_0x5dbb('0x1a')]+_0x5dbb('0x18');}function generateMicrosoftAuthorizationUrl(_0x41a7cf,_0xe1890){var _0x2e4d09=MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0x41a7cf['data2']);var _0x4f8543=[_0x5dbb('0x1b'),'id_token'];var _0x40fccc=Buffer['from'](JSON['stringify']({'id':_0xe1890}))[_0x5dbb('0x1c')](_0x5dbb('0x1d'));var _0x2e4d80=crypto[_0x5dbb('0x1e')](0x10)[_0x5dbb('0x1c')]('hex');var _0x1ed901=getAuthorizationScopes(_0x41a7cf);var _0x343953=[{'key':_0x5dbb('0x1f'),'value':_0x41a7cf[_0x5dbb('0x20')]},{'key':'response_type','value':encodeURIComponent(_0x4f8543[_0x5dbb('0x21')]('\x20'))},{'key':'redirect_uri','value':_0x41a7cf['data4']},{'key':_0x5dbb('0x22'),'value':_0x5dbb('0x23')},{'key':_0x5dbb('0x24'),'value':encodeURIComponent(_0x1ed901)},{'key':_0x5dbb('0x25'),'value':_0x40fccc},{'key':_0x5dbb('0x26'),'value':_0x2e4d80},{'key':_0x5dbb('0x27'),'value':_0x5dbb('0x28')}];var _0x222135=_0x2e4d09+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x5dbb('0x15')](_0x343953,function(_0x30180f){return _0x30180f['key']+'='+_0x30180f['value'];})[_0x5dbb('0x21')]('&');_0x41a7cf[_0x5dbb('0x29')]={'issuer':_0x2e4d09[_0x5dbb('0x2a')]('oauth2/',''),'audience':_0x41a7cf[_0x5dbb('0x20')],'state':_0x40fccc,'nonce':_0x2e4d80};redis['set'](_0x40fccc,JSON[_0x5dbb('0x2b')](_0x41a7cf));return _0x222135;}function isValidIdToken(_0x405491,_0x4a8ad1){try{var _0x3f2e1c=jwt[_0x5dbb('0x2c')](_0x405491,{'complete':!![]});var _0x36f5b6=_0x3f2e1c['payload'];if(_0x36f5b6[_0x5dbb('0x2d')]!==_0x4a8ad1[_0x5dbb('0x2e')])return![];if(_0x36f5b6[_0x5dbb('0x2f')]!==_0x4a8ad1[_0x5dbb('0x30')])return![];if(_0x36f5b6[_0x5dbb('0x26')]!==_0x4a8ad1[_0x5dbb('0x26')])return![];if(moment()[_0x5dbb('0x31')](moment[_0x5dbb('0x32')](_0x36f5b6[_0x5dbb('0x33')])))return![];return!![];}catch(_0x3d4b36){throw _0x3d4b36;}}function refreshOauth2MicrosoftAccessToken(_0x275810){return Promise[_0x5dbb('0x34')]()[_0x5dbb('0x35')](function(){if(_0x275810['data3'])return _0x275810;return db[_0x5dbb('0x36')]['findOne']({'where':{'id':_0x275810['id']},'raw':!![]});})[_0x5dbb('0x35')](function(_0x3a4a67){var _0x2161c1={'grant_type':_0x5dbb('0x37'),'refresh_token':_0x3a4a67[_0x5dbb('0x38')],'scope':getAccessTokenScope(_0x3a4a67),'redirect_uri':_0x3a4a67[_0x5dbb('0x39')],'client_id':_0x3a4a67[_0x5dbb('0x20')],'client_secret':encryptor['decryptString'](_0x3a4a67[_0x5dbb('0x3a')])};var _0x141b38={'method':_0x5dbb('0x3b'),'uri':MICROSOFT_AUTH_URL[_0x5dbb('0x2a')](_0x5dbb('0x3c'),_0x3a4a67[_0x5dbb('0x3d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2161c1,'json':!![]};return rp(_0x141b38);})['then'](function(_0x17f60b){_0x275810[_0x5dbb('0x3e')]=_0x17f60b[_0x5dbb('0x3f')];_0x275810[_0x5dbb('0x38')]=_0x17f60b['refresh_token'];return db[_0x5dbb('0x36')][_0x5dbb('0x40')]({'data5':_0x275810['data5'],'data6':_0x275810[_0x5dbb('0x38')]},{'where':{'id':_0x275810['id']}});})['then'](function(){return _0x275810;})[_0x5dbb('0x41')](function(_0x32a8e7){logger[_0x5dbb('0x42')](_0x5dbb('0x43'),_0x275810['id'],_0x32a8e7);});}function getOauth2MicrosoftAccessToken(_0x58030e,_0x19612d){var _0xc96674={'grant_type':_0x5dbb('0x44'),'code':_0x58030e,'scope':getAccessTokenScope(_0x19612d),'redirect_uri':_0x19612d[_0x5dbb('0x39')],'client_id':_0x19612d[_0x5dbb('0x20')],'client_secret':encryptor[_0x5dbb('0x45')](_0x19612d[_0x5dbb('0x3a')])};var _0x8fbe33={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x5dbb('0x2a')](_0x5dbb('0x3c'),_0x19612d['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xc96674,'json':!![]};return rp(_0x8fbe33);}function startRefreshInterval(_0x4870dc){var _0x204b17=schedule[_0x5dbb('0x46')];if(_0x204b17[_0x4870dc['id']])clearInterval(_0x204b17[_0x4870dc['id']]);_0x204b17[_0x4870dc['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x5dbb('0x47')](this,{'id':_0x4870dc['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x204b17;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x5dbb('0x48')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x5dbb('0x35')](function(_0x280278){var _0x8b8bf4=_0x280278[_0x5dbb('0x15')](function(_0x30e615){return refreshOauth2MicrosoftAccessToken(_0x30e615)[_0x5dbb('0x35')](function(_0x3ee00c){startRefreshInterval(_0x3ee00c);});});return Promise[_0x5dbb('0x49')](_0x8b8bf4);})[_0x5dbb('0x41')](function(_0x57bace){var _0x341a1a=_0x57bace?util['inspect'](_0x57bace,{'showHidden':![],'depth':null}):'';logger[_0x5dbb('0x42')](_0x5dbb('0x4a'),_0x341a1a);});}module[_0x5dbb('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x6ec7=['type','push','data7','/.default','https://outlook.office365.com/IMAP.AccessAsUser.All','replace','data2','code','id_token','from','stringify','toString','randomBytes','hex','client_id','data1','response_type','redirect_uri','response_mode','form_post','state','prompt','login','key','value','join','oauth2Claims','oauth2/','decode','issuer','aud','audience','nonce','exp','resolve','data3','CloudProvider','findOne','then','data6','data4','{TENANT_ID}','data5','access_token','refresh_token','update','catch','error','authorization_code','decryptString','bind','intervals','findAll','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','crypto','util','../../config/environment','api','../../config/schedule/cloud-provider','../../mysqldb','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','email','offline_access','https://outlook.office.com/SMTP.Send','/authorize','/token','map'];(function(_0x4fce36,_0x4adbfa){var _0x423cae=function(_0x168fcd){while(--_0x168fcd){_0x4fce36['push'](_0x4fce36['shift']());}};_0x423cae(++_0x4adbfa);}(_0x6ec7,0x158));var _0x76ec=function(_0x4fb6c,_0x343465){_0x4fb6c=_0x4fb6c-0x0;var _0x31db60=_0x6ec7[_0x4fb6c];return _0x31db60;};'use strict';var _=require('lodash');var crypto=require(_0x76ec('0x0'));var jwt=require('jsonwebtoken');var moment=require('moment');var Redis=require('ioredis');var rp=require('request-promise');var util=require(_0x76ec('0x1'));var encryptor=require('../../components/encryptor');var config=require(_0x76ec('0x2'));var logger=require('../../config/logger')(_0x76ec('0x3'));var schedule=require(_0x76ec('0x4'));var db=require(_0x76ec('0x5'))['db'];config['redis']=_['defaults'](config[_0x76ec('0x6')],{'host':_0x76ec('0x7'),'port':0x18eb});var redis=new Redis(config[_0x76ec('0x6')]);var MICROSOFT_AUTH_URL=_0x76ec('0x8');var AZURE_AUTH_SCOPES={'Outlook365':[_0x76ec('0x9'),'profile',_0x76ec('0xa'),_0x76ec('0xb'),'https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All',_0x76ec('0xc')],'Dynamics365':[_0x76ec('0x9'),_0x76ec('0xb')]};var MICROSOFT_AUTH_ENDPOINT=_0x76ec('0xd');var MICROSOFT_TOKEN_ENDPOINT=_0x76ec('0xe');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x44a1f6){var _0x19dd55=_[_0x76ec('0xf')](AZURE_AUTH_SCOPES[_0x44a1f6['type']]);if(_0x44a1f6[_0x76ec('0x10')]==='Dynamics365')_0x19dd55[_0x76ec('0x11')](_0x44a1f6[_0x76ec('0x12')]+_0x76ec('0x13'));return _0x19dd55['join']('\x20');}function getAccessTokenScope(_0x1de183){if(_0x1de183['type']==='Outlook365')return _0x76ec('0x14');if(_0x1de183[_0x76ec('0x10')]==='Dynamics365')return _0x1de183['data7']+'/.default';}function generateMicrosoftAuthorizationUrl(_0x4816a7,_0x3e209f){var _0x4b03f7=MICROSOFT_AUTH_URL[_0x76ec('0x15')]('{TENANT_ID}',_0x4816a7[_0x76ec('0x16')]);var _0x19205a=[_0x76ec('0x17'),_0x76ec('0x18')];var _0x2cdf81=Buffer[_0x76ec('0x19')](JSON[_0x76ec('0x1a')]({'id':_0x3e209f}))[_0x76ec('0x1b')]('base64');var _0x3526ec=crypto[_0x76ec('0x1c')](0x10)[_0x76ec('0x1b')](_0x76ec('0x1d'));var _0x1931ff=getAuthorizationScopes(_0x4816a7);var _0x26d97e=[{'key':_0x76ec('0x1e'),'value':_0x4816a7[_0x76ec('0x1f')]},{'key':_0x76ec('0x20'),'value':encodeURIComponent(_0x19205a['join']('\x20'))},{'key':_0x76ec('0x21'),'value':_0x4816a7['data4']},{'key':_0x76ec('0x22'),'value':_0x76ec('0x23')},{'key':'scope','value':encodeURIComponent(_0x1931ff)},{'key':_0x76ec('0x24'),'value':_0x2cdf81},{'key':'nonce','value':_0x3526ec},{'key':_0x76ec('0x25'),'value':_0x76ec('0x26')}];var _0x2e1070=_0x4b03f7+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x76ec('0xf')](_0x26d97e,function(_0x570c51){return _0x570c51[_0x76ec('0x27')]+'='+_0x570c51[_0x76ec('0x28')];})[_0x76ec('0x29')]('&');_0x4816a7[_0x76ec('0x2a')]={'issuer':_0x4b03f7[_0x76ec('0x15')](_0x76ec('0x2b'),''),'audience':_0x4816a7[_0x76ec('0x1f')],'state':_0x2cdf81,'nonce':_0x3526ec};redis['set'](_0x2cdf81,JSON[_0x76ec('0x1a')](_0x4816a7));return _0x2e1070;}function isValidIdToken(_0x3f7e2b,_0x581921){try{var _0x244f90=jwt[_0x76ec('0x2c')](_0x3f7e2b,{'complete':!![]});var _0x44e9ab=_0x244f90['payload'];if(_0x44e9ab['iss']!==_0x581921[_0x76ec('0x2d')])return![];if(_0x44e9ab[_0x76ec('0x2e')]!==_0x581921[_0x76ec('0x2f')])return![];if(_0x44e9ab[_0x76ec('0x30')]!==_0x581921[_0x76ec('0x30')])return![];if(moment()['isAfter'](moment['unix'](_0x44e9ab[_0x76ec('0x31')])))return![];return!![];}catch(_0xed7be0){throw _0xed7be0;}}function refreshOauth2MicrosoftAccessToken(_0x436274){return Promise[_0x76ec('0x32')]()['then'](function(){if(_0x436274[_0x76ec('0x33')])return _0x436274;return db[_0x76ec('0x34')][_0x76ec('0x35')]({'where':{'id':_0x436274['id']},'raw':!![]});})[_0x76ec('0x36')](function(_0x189d66){var _0xf8c6f3={'grant_type':'refresh_token','refresh_token':_0x189d66[_0x76ec('0x37')],'scope':getAccessTokenScope(_0x189d66),'redirect_uri':_0x189d66[_0x76ec('0x38')],'client_id':_0x189d66[_0x76ec('0x1f')],'client_secret':encryptor['decryptString'](_0x189d66['data3'])};var _0x16353f={'method':'POST','uri':MICROSOFT_AUTH_URL['replace'](_0x76ec('0x39'),_0x189d66['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xf8c6f3,'json':!![]};return rp(_0x16353f);})['then'](function(_0x1c75e8){_0x436274[_0x76ec('0x3a')]=_0x1c75e8[_0x76ec('0x3b')];_0x436274[_0x76ec('0x37')]=_0x1c75e8[_0x76ec('0x3c')];return db[_0x76ec('0x34')][_0x76ec('0x3d')]({'data5':_0x436274[_0x76ec('0x3a')],'data6':_0x436274[_0x76ec('0x37')]},{'where':{'id':_0x436274['id']}});})[_0x76ec('0x36')](function(){return _0x436274;})[_0x76ec('0x3e')](function(_0x44b4c8){logger[_0x76ec('0x3f')]('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x436274['id'],_0x44b4c8);});}function getOauth2MicrosoftAccessToken(_0x299a38,_0x25c2e6){var _0x580b66={'grant_type':_0x76ec('0x40'),'code':_0x299a38,'scope':getAccessTokenScope(_0x25c2e6),'redirect_uri':_0x25c2e6[_0x76ec('0x38')],'client_id':_0x25c2e6[_0x76ec('0x1f')],'client_secret':encryptor[_0x76ec('0x41')](_0x25c2e6[_0x76ec('0x33')])};var _0x5e243a={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x76ec('0x15')](_0x76ec('0x39'),_0x25c2e6[_0x76ec('0x16')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x580b66,'json':!![]};return rp(_0x5e243a);}function startRefreshInterval(_0x186317){var _0x5e7198=schedule['intervals'];if(_0x5e7198[_0x186317['id']])clearInterval(_0x5e7198[_0x186317['id']]);_0x5e7198[_0x186317['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x76ec('0x42')](this,{'id':_0x186317['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x76ec('0x43')]=_0x5e7198;}function startAllRefreshIntervals(){return db[_0x76ec('0x34')][_0x76ec('0x44')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x76ec('0x36')](function(_0x47f57b){var _0x30e16b=_0x47f57b[_0x76ec('0xf')](function(_0x4001b2){return refreshOauth2MicrosoftAccessToken(_0x4001b2)[_0x76ec('0x36')](function(_0x41d20b){startRefreshInterval(_0x41d20b);});});return Promise['all'](_0x30e16b);})['catch'](function(_0x4c9f47){var _0x156c85=_0x4c9f47?util[_0x76ec('0x45')](_0x4c9f47,{'showHidden':![],'depth':null}):'';logger['error'](_0x76ec('0x46'),_0x156c85);});}module[_0x76ec('0x47')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 3151b6c..4200ccb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce14=['code','message','result','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x45df1c,_0x26abb5){var _0x2ead21=function(_0x2fea48){while(--_0x2fea48){_0x45df1c['push'](_0x45df1c['shift']());}};_0x2ead21(++_0x26abb5);}(_0xce14,0x17f));var _0x4ce1=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xce14[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0x4ce1('0x0'));var moment=require('moment');var BPromise=require(_0x4ce1('0x1'));var rs=require(_0x4ce1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4ce1('0x3'))['db'];var utils=require(_0x4ce1('0x4'));var logger=require(_0x4ce1('0x5'))(_0x4ce1('0x6'));var config=require(_0x4ce1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4ce1('0x8')][_0x4ce1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f603d,_0x2b9923,_0x539c1d){return new BPromise(function(_0x256648,_0x2beed4){return client[_0x4ce1('0xa')](_0x1f603d,_0x539c1d)['then'](function(_0x1b5bd8){logger[_0x4ce1('0xb')](_0x4ce1('0xc'),_0x2b9923,_0x4ce1('0xd'));logger['debug'](_0x4ce1('0xe'),_0x2b9923,_0x4ce1('0xd'),JSON[_0x4ce1('0xf')](_0x1b5bd8));if(_0x1b5bd8[_0x4ce1('0x10')]){if(_0x1b5bd8['error'][_0x4ce1('0x11')]===0x1f4){logger[_0x4ce1('0x10')](_0x4ce1('0xc'),_0x2b9923,_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);return _0x2beed4(_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);}logger[_0x4ce1('0x10')](_0x4ce1('0xc'),_0x2b9923,_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);return _0x256648(_0x1b5bd8['error'][_0x4ce1('0x12')]);}else{logger['info'](_0x4ce1('0xc'),_0x2b9923,_0x4ce1('0xd'));_0x256648(_0x1b5bd8[_0x4ce1('0x13')][_0x4ce1('0x12')]);}})['catch'](function(_0x221306){logger['error']('CloudProvider,\x20%s,\x20%s',_0x2b9923,_0x221306);_0x2beed4(_0x221306);});});}
\ No newline at end of file
+var _0x80c4=['request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4d674b,_0x176474){var _0x535a1f=function(_0xac7726){while(--_0xac7726){_0x4d674b['push'](_0x4d674b['shift']());}};_0x535a1f(++_0x176474);}(_0x80c4,0xa3));var _0x480c=function(_0xc7272c,_0x281fe1){_0xc7272c=_0xc7272c-0x0;var _0x2760ca=_0x80c4[_0xc7272c];return _0x2760ca;};'use strict';var _=require(_0x480c('0x0'));var util=require('util');var moment=require(_0x480c('0x1'));var BPromise=require(_0x480c('0x2'));var rs=require(_0x480c('0x3'));var fs=require('fs');var Redis=require(_0x480c('0x4'));var db=require(_0x480c('0x5'))['db'];var utils=require(_0x480c('0x6'));var logger=require('../../config/logger')(_0x480c('0x7'));var config=require(_0x480c('0x8'));var jayson=require(_0x480c('0x9'));var client=jayson[_0x480c('0xa')][_0x480c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40a5a6,_0x3a69ec,_0x277efe){return new BPromise(function(_0x21545d,_0x510038){return client[_0x480c('0xc')](_0x40a5a6,_0x277efe)[_0x480c('0xd')](function(_0x292aca){logger[_0x480c('0xe')](_0x480c('0xf'),_0x3a69ec,_0x480c('0x10'));logger[_0x480c('0x11')](_0x480c('0x12'),_0x3a69ec,_0x480c('0x10'),JSON[_0x480c('0x13')](_0x292aca));if(_0x292aca[_0x480c('0x14')]){if(_0x292aca[_0x480c('0x14')][_0x480c('0x15')]===0x1f4){logger[_0x480c('0x14')](_0x480c('0xf'),_0x3a69ec,_0x292aca[_0x480c('0x14')][_0x480c('0x16')]);return _0x510038(_0x292aca[_0x480c('0x14')]['message']);}logger[_0x480c('0x14')](_0x480c('0xf'),_0x3a69ec,_0x292aca['error'][_0x480c('0x16')]);return _0x21545d(_0x292aca[_0x480c('0x14')][_0x480c('0x16')]);}else{logger['info']('CloudProvider,\x20%s,\x20%s',_0x3a69ec,_0x480c('0x10'));_0x21545d(_0x292aca[_0x480c('0x17')][_0x480c('0x16')]);}})[_0x480c('0x18')](function(_0x93d6c5){logger['error']('CloudProvider,\x20%s,\x20%s',_0x3a69ec,_0x93d6c5);_0x510038(_0x93d6c5);});});}
\ No newline at end of file
index a1c9fe4..75e2c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['put','/:id','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','show','post','create'];(function(_0x3be714,_0x38e9f4){var _0xcf112e=function(_0x15d9c2){while(--_0x15d9c2){_0x3be714['push'](_0x3be714['shift']());}};_0xcf112e(++_0x38e9f4);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xc4aa[_0x21549c];return _0x426cbd;};'use strict';var express=require(_0xac4a('0x0'));var router=express[_0xac4a('0x1')]();var auth=require(_0xac4a('0x2'));var controller=require(_0xac4a('0x3'));router[_0xac4a('0x4')]('/',auth[_0xac4a('0x5')](),controller['index']);router['get']('/:id',auth[_0xac4a('0x5')](),controller[_0xac4a('0x6')]);router[_0xac4a('0x7')]('/',auth[_0xac4a('0x5')](),controller[_0xac4a('0x8')]);router[_0xac4a('0x9')](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller['update']);router['delete'](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xb')]);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xd')]);router['post'](_0xac4a('0xe'),controller['oauth2MicrosoftCallback']);module[_0xac4a('0xf')]=router;
\ No newline at end of file
+var _0x1261=['/:id','show','create','put','update','delete','/:id/oauth2/microsoft/authorize/','post','exports','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index'];(function(_0x34e752,_0x32e2a2){var _0x7c6347=function(_0x4db671){while(--_0x4db671){_0x34e752['push'](_0x34e752['shift']());}};_0x7c6347(++_0x32e2a2);}(_0x1261,0x144));var _0x1126=function(_0x4d6bfd,_0x8d79ff){_0x4d6bfd=_0x4d6bfd-0x0;var _0x243a46=_0x1261[_0x4d6bfd];return _0x243a46;};'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 8fbc117..57b5fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5fa=['name','STRING','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd5fa,0x1ae));var _0xad5f=function(_0x2bf2e7,_0x1ce9f1){_0x2bf2e7=_0x2bf2e7-0x0;var _0x4ceb7f=_0xd5fa[_0x2bf2e7];return _0x4ceb7f;};'use strict';var Sequelize=require(_0xad5f('0x0'));module[_0xad5f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xad5f('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xad5f('0x3')]},'website':{'type':Sequelize[_0xad5f('0x3')]},'phone':{'type':Sequelize[_0xad5f('0x3')]},'fax':{'type':Sequelize[_0xad5f('0x3')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xad5f('0x3')]},'postalCode':{'type':Sequelize[_0xad5f('0x3')]},'city':{'type':Sequelize[_0xad5f('0x3')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xad5f('0x3')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xad5f('0x3')]},'sStreet':{'type':Sequelize[_0xad5f('0x3')]},'sPostalCode':{'type':Sequelize[_0xad5f('0x3')]},'sCity':{'type':Sequelize[_0xad5f('0x3')]},'sCountry':{'type':Sequelize[_0xad5f('0x3')]},'description':{'type':Sequelize[_0xad5f('0x3')]}};
\ No newline at end of file
+var _0x3c14=['sequelize','STRING','name'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x3c14,0x186));var _0x43c1=function(_0x4d7a70,_0x2d3bfa){_0x4d7a70=_0x4d7a70-0x0;var _0x3aafbb=_0x3c14[_0x4d7a70];return _0x3aafbb;};'use strict';var Sequelize=require(_0x43c1('0x0'));module['exports']={'name':{'type':Sequelize[_0x43c1('0x1')],'unique':_0x43c1('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x43c1('0x1')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x43c1('0x1')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x43c1('0x1')]},'type':{'type':Sequelize[_0x43c1('0x1')]},'street':{'type':Sequelize[_0x43c1('0x1')]},'postalCode':{'type':Sequelize[_0x43c1('0x1')]},'city':{'type':Sequelize[_0x43c1('0x1')]},'country':{'type':Sequelize[_0x43c1('0x1')]},'email':{'type':Sequelize[_0x43c1('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x43c1('0x1')]}};
\ No newline at end of file
index 3a3c333..6c403bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdffe=['nolimit','sort','where','merge','map','filter','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','addContacts','ids','omit','getContacts','findOne','CmContact','options','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','get','Companies','UserProfileResource','end','error','stack','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x2145c0,_0x549319){var _0x4c613a=function(_0x4e7350){while(--_0x4e7350){_0x2145c0['push'](_0x2145c0['shift']());}};_0x4c613a(++_0x549319);}(_0xdffe,0xcc));var _0xedff=function(_0x265e81,_0x514eff){_0x265e81=_0x265e81-0x0;var _0x55b6b7=_0xdffe[_0x265e81];return _0x55b6b7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xedff('0x0'));var zipdir=require(_0xedff('0x1'));var jsonpatch=require(_0xedff('0x2'));var rp=require(_0xedff('0x3'));var moment=require('moment');var BPromise=require(_0xedff('0x4'));var Mustache=require(_0xedff('0x5'));var util=require(_0xedff('0x6'));var path=require(_0xedff('0x7'));var sox=require(_0xedff('0x8'));var csv=require(_0xedff('0x9'));var ejs=require(_0xedff('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xedff('0xb'));var squel=require(_0xedff('0xc'));var crypto=require(_0xedff('0xd'));var jsforce=require(_0xedff('0xe'));var deskjs=require(_0xedff('0xf'));var toCsv=require('to-csv');var querystring=require(_0xedff('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xedff('0x11'));var qs=require(_0xedff('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xedff('0x13'))(_0xedff('0x14'));var utils=require(_0xedff('0x15'));var config=require(_0xedff('0x16'));var licenseUtil=require(_0xedff('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x566daa,_0x13219e){_0x13219e=_0x13219e||0xcc;return function(_0x80a3e0){if(_0x80a3e0){return _0x566daa['sendStatus'](_0x13219e);}return _0x566daa['status'](_0x13219e)['end']();};}function respondWithResult(_0x224429,_0x1cbc89){_0x1cbc89=_0x1cbc89||0xc8;return function(_0x388a42){if(_0x388a42){return _0x224429[_0xedff('0x18')](_0x1cbc89)['json'](_0x388a42);}};}function respondWithFilteredResult(_0x187e58,_0x521546){return function(_0x2dfc3b){if(_0x2dfc3b){var _0x3c8ac4=typeof _0x521546[_0xedff('0x19')]==='undefined'&&typeof _0x521546[_0xedff('0x1a')]===_0xedff('0x1b');var _0x475eac=_0x2dfc3b['count'];var _0x4aaf2e=_0x3c8ac4?0x0:_0x521546[_0xedff('0x19')];var _0x3e929b=_0x3c8ac4?_0x2dfc3b[_0xedff('0x1c')]:_0x521546['offset']+_0x521546[_0xedff('0x1a')];var _0xb3cc9a;if(_0x3e929b>=_0x475eac){_0x3e929b=_0x475eac;_0xb3cc9a=0xc8;}else{_0xb3cc9a=0xce;}_0x187e58[_0xedff('0x18')](_0xb3cc9a);return _0x187e58[_0xedff('0x1d')](_0xedff('0x1e'),_0x4aaf2e+'-'+_0x3e929b+'/'+_0x475eac)[_0xedff('0x1f')](_0x2dfc3b);}return null;};}function patchUpdates(_0x49b16a){return function(_0x5c94f3){try{jsonpatch[_0xedff('0x20')](_0x5c94f3,_0x49b16a,!![]);}catch(_0x4abeba){return BPromise[_0xedff('0x21')](_0x4abeba);}return _0x5c94f3[_0xedff('0x22')]();};}function saveUpdates(_0x12c417,_0x2f4e23){return function(_0x1da119){if(_0x1da119){return _0x1da119[_0xedff('0x23')](_0x12c417)[_0xedff('0x24')](function(_0x2742bb){return _0x2742bb;});}return null;};}function removeEntity(_0x46df1c,_0x4537b0){return function(_0x1fed6f){if(_0x1fed6f){return _0x1fed6f['destroy']()['then'](function(){var _0x667759=_0x1fed6f[_0xedff('0x25')]({'plain':!![]});var _0x19707e=_0xedff('0x26');return db[_0xedff('0x27')]['destroy']({'where':{'type':_0x19707e,'resourceId':_0x667759['id']}})[_0xedff('0x24')](function(){return _0x1fed6f;});})[_0xedff('0x24')](function(){_0x46df1c[_0xedff('0x18')](0xcc)[_0xedff('0x28')]();});}};}function handleEntityNotFound(_0x1d50d3,_0x372a0a){return function(_0x3fbb41){if(!_0x3fbb41){_0x1d50d3['sendStatus'](0x194);}return _0x3fbb41;};}function handleError(_0x3d9a77,_0x3a7bbf){_0x3a7bbf=_0x3a7bbf||0x1f4;return function(_0x10a043){logger[_0xedff('0x29')](_0x10a043[_0xedff('0x2a')]);if(_0x10a043[_0xedff('0x2b')]){delete _0x10a043[_0xedff('0x2b')];}_0x3d9a77[_0xedff('0x18')](_0x3a7bbf)[_0xedff('0x2c')](_0x10a043);};}exports[_0xedff('0x2d')]=function(_0x24e2a1,_0x411843){var _0x4f7344={},_0x4b58e9={},_0x1aae29={'count':0x0,'rows':[]};return db[_0xedff('0x2e')][_0xedff('0x2f')]()[_0xedff('0x24')](function(_0x2779b8){_0x4b58e9[_0xedff('0x30')]=_[_0xedff('0x31')](_0x2779b8);_0x4b58e9[_0xedff('0x32')]=_[_0xedff('0x31')](_0x24e2a1[_0xedff('0x32')]);_0x4b58e9[_0xedff('0x33')]=_[_0xedff('0x34')](_0x4b58e9['model'],_0x4b58e9[_0xedff('0x32')]);_0x4f7344[_0xedff('0x35')]=_[_0xedff('0x34')](_0x4b58e9[_0xedff('0x30')],qs[_0xedff('0x36')](_0x24e2a1[_0xedff('0x32')][_0xedff('0x36')]));_0x4f7344['attributes']=_0x4f7344['attributes'][_0xedff('0x37')]?_0x4f7344[_0xedff('0x35')]:_0x4b58e9['model'];if(!_0x24e2a1[_0xedff('0x32')][_0xedff('0x38')](_0xedff('0x39'))){_0x4f7344[_0xedff('0x1a')]=qs['limit'](_0x24e2a1[_0xedff('0x32')]['limit']);_0x4f7344[_0xedff('0x19')]=qs['offset'](_0x24e2a1['query'][_0xedff('0x19')]);}_0x4f7344['order']=qs['sort'](_0x24e2a1[_0xedff('0x32')][_0xedff('0x3a')]);_0x4f7344['where']=qs[_0xedff('0x33')](_['pick'](_0x24e2a1[_0xedff('0x32')],_0x4b58e9[_0xedff('0x33')]),_0x2779b8);if(_0x24e2a1[_0xedff('0x32')]['filter']){_0x4f7344[_0xedff('0x3b')]=_[_0xedff('0x3c')](_0x4f7344['where'],{'$or':_[_0xedff('0x3d')](_0x4f7344['attributes'],function(_0x9f808c){var _0x349d6e={};_0x349d6e[_0x9f808c]={'$like':'%'+_0x24e2a1[_0xedff('0x32')][_0xedff('0x3e')]+'%'};return _0x349d6e;})});}_0x4f7344=_[_0xedff('0x3c')]({},_0x4f7344,_0x24e2a1['options']);var _0x47e659={'where':_0x4f7344[_0xedff('0x3b')]};return db[_0xedff('0x2e')][_0xedff('0x1c')](_0x47e659)[_0xedff('0x24')](function(_0x5edaf4){_0x1aae29[_0xedff('0x1c')]=_0x5edaf4;if(_0x24e2a1['query'][_0xedff('0x3f')]){_0x4f7344[_0xedff('0x40')]=[{'all':!![]}];}return db[_0xedff('0x2e')][_0xedff('0x41')](_0x4f7344);})[_0xedff('0x24')](function(_0x3f037f){_0x1aae29[_0xedff('0x42')]=_0x3f037f;return _0x1aae29;})[_0xedff('0x24')](respondWithFilteredResult(_0x411843,_0x4f7344))[_0xedff('0x43')](handleError(_0x411843,null));})[_0xedff('0x43')](handleError(_0x411843,null));};exports['show']=function(_0x1fc8b8,_0x55f891){var _0x2b4e84={'raw':![],'where':{'id':_0x1fc8b8[_0xedff('0x44')]['id']}},_0x18f6ce={};_0x18f6ce[_0xedff('0x30')]=_[_0xedff('0x31')](db[_0xedff('0x2e')][_0xedff('0x45')]);_0x18f6ce[_0xedff('0x32')]=_[_0xedff('0x31')](_0x1fc8b8[_0xedff('0x32')]);_0x18f6ce[_0xedff('0x33')]=_['intersection'](_0x18f6ce['model'],_0x18f6ce[_0xedff('0x32')]);_0x2b4e84[_0xedff('0x35')]=_[_0xedff('0x34')](_0x18f6ce[_0xedff('0x30')],qs[_0xedff('0x36')](_0x1fc8b8['query'][_0xedff('0x36')]));_0x2b4e84[_0xedff('0x35')]=_0x2b4e84[_0xedff('0x35')][_0xedff('0x37')]?_0x2b4e84[_0xedff('0x35')]:_0x18f6ce['model'];if(_0x1fc8b8[_0xedff('0x32')][_0xedff('0x3f')]){_0x2b4e84[_0xedff('0x40')]=[{'all':!![]}];}_0x2b4e84=_[_0xedff('0x3c')]({},_0x2b4e84,_0x1fc8b8['options']);return db[_0xedff('0x2e')][_0xedff('0x46')](_0x2b4e84)['then'](handleEntityNotFound(_0x55f891,null))[_0xedff('0x24')](respondWithResult(_0x55f891,null))[_0xedff('0x43')](handleError(_0x55f891,null));};exports[_0xedff('0x47')]=function(_0x1d483e,_0xbc4e89){return db[_0xedff('0x2e')]['create'](_0x1d483e['body'],{})[_0xedff('0x24')](function(_0x26b1fd){var _0x1b925a=_0x1d483e[_0xedff('0x48')]['get']({'plain':!![]});if(!_0x1b925a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b925a[_0xedff('0x49')]===_0xedff('0x48')){var _0xcde938=_0x26b1fd[_0xedff('0x25')]({'plain':!![]});var _0x573e7d=_0xedff('0x26');return db[_0xedff('0x4a')][_0xedff('0x46')]({'where':{'name':_0x573e7d,'userProfileId':_0x1b925a[_0xedff('0x4b')]},'raw':!![]})[_0xedff('0x24')](function(_0x3fbce5){if(_0x3fbce5&&_0x3fbce5[_0xedff('0x4c')]===0x0){return db['UserProfileResource']['create']({'name':_0xcde938['name'],'resourceId':_0xcde938['id'],'type':_0x3fbce5[_0xedff('0x2b')],'sectionId':_0x3fbce5['id']},{})['then'](function(){return _0x26b1fd;});}else{return _0x26b1fd;}})[_0xedff('0x43')](function(_0x6457cf){logger[_0xedff('0x29')](_0xedff('0x4d'),_0x6457cf);throw _0x6457cf;});}return _0x26b1fd;})[_0xedff('0x24')](respondWithResult(_0xbc4e89,0xc9))[_0xedff('0x43')](handleError(_0xbc4e89,null));};exports['update']=function(_0x4ab061,_0x1d80fa){if(_0x4ab061[_0xedff('0x4e')]['id']){delete _0x4ab061[_0xedff('0x4e')]['id'];}return db['CmCompany'][_0xedff('0x46')]({'where':{'id':_0x4ab061[_0xedff('0x44')]['id']}})['then'](handleEntityNotFound(_0x1d80fa,null))[_0xedff('0x24')](saveUpdates(_0x4ab061['body'],null))[_0xedff('0x24')](respondWithResult(_0x1d80fa,null))[_0xedff('0x43')](handleError(_0x1d80fa,null));};exports[_0xedff('0x4f')]=function(_0x579ccf,_0x44a1e2){return db[_0xedff('0x2e')]['find']({'where':{'id':_0x579ccf[_0xedff('0x44')]['id']}})[_0xedff('0x24')](handleEntityNotFound(_0x44a1e2,null))[_0xedff('0x24')](removeEntity(_0x44a1e2,null))[_0xedff('0x43')](handleError(_0x44a1e2,null));};exports['describe']=function(_0x1e6fee,_0x439404){return db[_0xedff('0x2e')]['describe']()['then'](respondWithResult(_0x439404,null))[_0xedff('0x43')](handleError(_0x439404,null));};exports[_0xedff('0x50')]=function(_0x33c3b7,_0x4d638a,_0x2e9e47){return db['CmContact'][_0xedff('0x46')]({'where':{'id':_0x33c3b7[_0xedff('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d638a,null))[_0xedff('0x24')](function(_0x183885){if(_0x183885){return _0x183885[_0xedff('0x50')](_0x33c3b7[_0xedff('0x4e')][_0xedff('0x51')],_[_0xedff('0x52')](_0x33c3b7[_0xedff('0x4e')],[_0xedff('0x51'),'id'])||{});}})['then'](respondWithResult(_0x4d638a,null))[_0xedff('0x43')](handleError(_0x4d638a,null));};exports[_0xedff('0x53')]=function(_0xc16c02,_0x1976e8,_0xba7870){var _0x414497={};var _0x49ce29={};var _0x4b4fde;var _0x1726c7;return db['CmCompany'][_0xedff('0x54')]({'where':{'id':_0xc16c02[_0xedff('0x44')]['id']}})[_0xedff('0x24')](handleEntityNotFound(_0x1976e8,null))[_0xedff('0x24')](function(_0x276b13){if(_0x276b13){_0x4b4fde=_0x276b13;_0x49ce29[_0xedff('0x30')]=_[_0xedff('0x31')](db[_0xedff('0x55')]['rawAttributes']);_0x49ce29[_0xedff('0x32')]=_[_0xedff('0x31')](_0xc16c02[_0xedff('0x32')]);_0x49ce29[_0xedff('0x33')]=_[_0xedff('0x34')](_0x49ce29[_0xedff('0x30')],_0x49ce29[_0xedff('0x32')]);_0x414497['attributes']=_[_0xedff('0x34')](_0x49ce29[_0xedff('0x30')],qs[_0xedff('0x36')](_0xc16c02['query'][_0xedff('0x36')]));_0x414497[_0xedff('0x35')]=_0x414497[_0xedff('0x35')][_0xedff('0x37')]?_0x414497[_0xedff('0x35')]:_0x49ce29[_0xedff('0x30')];_0x414497['order']=qs['sort'](_0xc16c02[_0xedff('0x32')][_0xedff('0x3a')]);_0x414497[_0xedff('0x3b')]=qs['filters'](_['pick'](_0xc16c02[_0xedff('0x32')],_0x49ce29[_0xedff('0x33')]));if(_0xc16c02[_0xedff('0x32')][_0xedff('0x3e')]){_0x414497[_0xedff('0x3b')]=_[_0xedff('0x3c')](_0x414497['where'],{'$or':_[_0xedff('0x3d')](_0x414497[_0xedff('0x35')],function(_0x1c2d5f){var _0x5f0de8={};_0x5f0de8[_0x1c2d5f]={'$like':'%'+_0xc16c02[_0xedff('0x32')][_0xedff('0x3e')]+'%'};return _0x5f0de8;})});}_0x414497=_[_0xedff('0x3c')]({},_0x414497,_0xc16c02[_0xedff('0x56')]);return _0x4b4fde[_0xedff('0x53')](_0x414497);}})['then'](function(_0x1dad93){if(_0x1dad93){_0x1726c7=_0x1dad93[_0xedff('0x37')];if(!_0xc16c02['query']['hasOwnProperty']('nolimit')){_0x414497[_0xedff('0x1a')]=qs[_0xedff('0x1a')](_0xc16c02[_0xedff('0x32')]['limit']);_0x414497['offset']=qs[_0xedff('0x19')](_0xc16c02[_0xedff('0x32')]['offset']);}return _0x4b4fde['getContacts'](_0x414497);}})[_0xedff('0x24')](function(_0x488819){if(_0x488819){return _0x488819?{'count':_0x1726c7,'rows':_0x488819}:null;}})['then'](respondWithResult(_0x1976e8,null))[_0xedff('0x43')](handleError(_0x1976e8,null));};
\ No newline at end of file
+var _0x1fab=['findOne','pick','getContacts','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','get','Companies','UserProfileResource','error','stack','name','index','CmCompany','describe','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','CmContact','addContacts','ids','omit'];(function(_0x187664,_0x57a4f3){var _0x1da05b=function(_0x2e81a8){while(--_0x2e81a8){_0x187664['push'](_0x187664['shift']());}};_0x1da05b(++_0x57a4f3);}(_0x1fab,0x1ac));var _0xb1fa=function(_0x1b1b90,_0x3d4143){_0x1b1b90=_0x1b1b90-0x0;var _0x11de94=_0x1fab[_0x1b1b90];return _0x11de94;};'use strict';var emlformat=require(_0xb1fa('0x0'));var rimraf=require(_0xb1fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb1fa('0x2'));var rp=require('request-promise');var moment=require(_0xb1fa('0x3'));var BPromise=require(_0xb1fa('0x4'));var Mustache=require(_0xb1fa('0x5'));var util=require(_0xb1fa('0x6'));var path=require('path');var sox=require(_0xb1fa('0x7'));var csv=require(_0xb1fa('0x8'));var ejs=require(_0xb1fa('0x9'));var fs=require('fs');var fs_extra=require(_0xb1fa('0xa'));var _=require('lodash');var squel=require(_0xb1fa('0xb'));var crypto=require(_0xb1fa('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb1fa('0xd'));var toCsv=require(_0xb1fa('0x8'));var querystring=require(_0xb1fa('0xe'));var Papa=require(_0xb1fa('0xf'));var Redis=require(_0xb1fa('0x10'));var authService=require(_0xb1fa('0x11'));var qs=require(_0xb1fa('0x12'));var as=require(_0xb1fa('0x13'));var hardwareService=require(_0xb1fa('0x14'));var logger=require(_0xb1fa('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xb1fa('0x16'));var licenseUtil=require(_0xb1fa('0x17'));var db=require(_0xb1fa('0x18'))['db'];function respondWithStatusCode(_0x5bec30,_0x5e5999){_0x5e5999=_0x5e5999||0xcc;return function(_0xd2cfe3){if(_0xd2cfe3){return _0x5bec30[_0xb1fa('0x19')](_0x5e5999);}return _0x5bec30[_0xb1fa('0x1a')](_0x5e5999)[_0xb1fa('0x1b')]();};}function respondWithResult(_0x4e8877,_0x11ec10){_0x11ec10=_0x11ec10||0xc8;return function(_0x5d1373){if(_0x5d1373){return _0x4e8877[_0xb1fa('0x1a')](_0x11ec10)['json'](_0x5d1373);}};}function respondWithFilteredResult(_0x21b926,_0x500ec4){return function(_0x95c031){if(_0x95c031){var _0x12eec7=typeof _0x500ec4[_0xb1fa('0x1c')]===_0xb1fa('0x1d')&&typeof _0x500ec4[_0xb1fa('0x1e')]===_0xb1fa('0x1d');var _0x506cfb=_0x95c031[_0xb1fa('0x1f')];var _0x3378e1=_0x12eec7?0x0:_0x500ec4[_0xb1fa('0x1c')];var _0x167b38=_0x12eec7?_0x95c031[_0xb1fa('0x1f')]:_0x500ec4[_0xb1fa('0x1c')]+_0x500ec4[_0xb1fa('0x1e')];var _0x37b2aa;if(_0x167b38>=_0x506cfb){_0x167b38=_0x506cfb;_0x37b2aa=0xc8;}else{_0x37b2aa=0xce;}_0x21b926[_0xb1fa('0x1a')](_0x37b2aa);return _0x21b926['set'](_0xb1fa('0x20'),_0x3378e1+'-'+_0x167b38+'/'+_0x506cfb)['json'](_0x95c031);}return null;};}function patchUpdates(_0x454906){return function(_0x475565){try{jsonpatch[_0xb1fa('0x21')](_0x475565,_0x454906,!![]);}catch(_0x940f33){return BPromise['reject'](_0x940f33);}return _0x475565[_0xb1fa('0x22')]();};}function saveUpdates(_0x45b174,_0x3a3369){return function(_0x165b4e){if(_0x165b4e){return _0x165b4e['update'](_0x45b174)[_0xb1fa('0x23')](function(_0x2e1fef){return _0x2e1fef;});}return null;};}function removeEntity(_0x45893d,_0x24099e){return function(_0x4469d9){if(_0x4469d9){return _0x4469d9[_0xb1fa('0x24')]()['then'](function(){var _0x5e0536=_0x4469d9[_0xb1fa('0x25')]({'plain':!![]});var _0x325ce3=_0xb1fa('0x26');return db[_0xb1fa('0x27')]['destroy']({'where':{'type':_0x325ce3,'resourceId':_0x5e0536['id']}})[_0xb1fa('0x23')](function(){return _0x4469d9;});})[_0xb1fa('0x23')](function(){_0x45893d[_0xb1fa('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52b196,_0x8c681c){return function(_0x1460c9){if(!_0x1460c9){_0x52b196[_0xb1fa('0x19')](0x194);}return _0x1460c9;};}function handleError(_0x1b71d0,_0x29e10e){_0x29e10e=_0x29e10e||0x1f4;return function(_0x559550){logger[_0xb1fa('0x28')](_0x559550[_0xb1fa('0x29')]);if(_0x559550[_0xb1fa('0x2a')]){delete _0x559550['name'];}_0x1b71d0['status'](_0x29e10e)['send'](_0x559550);};}exports[_0xb1fa('0x2b')]=function(_0x140220,_0x699930){var _0x2326f7={},_0x5cc965={},_0x2e9e58={'count':0x0,'rows':[]};return db[_0xb1fa('0x2c')][_0xb1fa('0x2d')]()['then'](function(_0x5ce47d){_0x5cc965[_0xb1fa('0x2e')]=_[_0xb1fa('0x2f')](_0x5ce47d);_0x5cc965[_0xb1fa('0x30')]=_[_0xb1fa('0x2f')](_0x140220['query']);_0x5cc965['filters']=_[_0xb1fa('0x31')](_0x5cc965['model'],_0x5cc965[_0xb1fa('0x30')]);_0x2326f7[_0xb1fa('0x32')]=_['intersection'](_0x5cc965['model'],qs[_0xb1fa('0x33')](_0x140220[_0xb1fa('0x30')][_0xb1fa('0x33')]));_0x2326f7[_0xb1fa('0x32')]=_0x2326f7[_0xb1fa('0x32')]['length']?_0x2326f7[_0xb1fa('0x32')]:_0x5cc965[_0xb1fa('0x2e')];if(!_0x140220[_0xb1fa('0x30')][_0xb1fa('0x34')](_0xb1fa('0x35'))){_0x2326f7[_0xb1fa('0x1e')]=qs[_0xb1fa('0x1e')](_0x140220[_0xb1fa('0x30')]['limit']);_0x2326f7[_0xb1fa('0x1c')]=qs['offset'](_0x140220[_0xb1fa('0x30')][_0xb1fa('0x1c')]);}_0x2326f7[_0xb1fa('0x36')]=qs[_0xb1fa('0x37')](_0x140220[_0xb1fa('0x30')]['sort']);_0x2326f7['where']=qs[_0xb1fa('0x38')](_['pick'](_0x140220[_0xb1fa('0x30')],_0x5cc965[_0xb1fa('0x38')]),_0x5ce47d);if(_0x140220[_0xb1fa('0x30')][_0xb1fa('0x39')]){_0x2326f7[_0xb1fa('0x3a')]=_[_0xb1fa('0x3b')](_0x2326f7[_0xb1fa('0x3a')],{'$or':_['map'](_0x2326f7[_0xb1fa('0x32')],function(_0x2ed529){var _0x288aff={};_0x288aff[_0x2ed529]={'$like':'%'+_0x140220[_0xb1fa('0x30')][_0xb1fa('0x39')]+'%'};return _0x288aff;})});}_0x2326f7=_[_0xb1fa('0x3b')]({},_0x2326f7,_0x140220[_0xb1fa('0x3c')]);var _0x2e850e={'where':_0x2326f7[_0xb1fa('0x3a')]};return db[_0xb1fa('0x2c')][_0xb1fa('0x1f')](_0x2e850e)[_0xb1fa('0x23')](function(_0x1ea4b5){_0x2e9e58[_0xb1fa('0x1f')]=_0x1ea4b5;if(_0x140220[_0xb1fa('0x30')][_0xb1fa('0x3d')]){_0x2326f7[_0xb1fa('0x3e')]=[{'all':!![]}];}return db[_0xb1fa('0x2c')]['findAll'](_0x2326f7);})[_0xb1fa('0x23')](function(_0x492d4e){_0x2e9e58[_0xb1fa('0x3f')]=_0x492d4e;return _0x2e9e58;})[_0xb1fa('0x23')](respondWithFilteredResult(_0x699930,_0x2326f7))['catch'](handleError(_0x699930,null));})[_0xb1fa('0x40')](handleError(_0x699930,null));};exports[_0xb1fa('0x41')]=function(_0x45ca9b,_0x3ef4d5){var _0x3e1f62={'raw':![],'where':{'id':_0x45ca9b[_0xb1fa('0x42')]['id']}},_0x4777ae={};_0x4777ae['model']=_[_0xb1fa('0x2f')](db[_0xb1fa('0x2c')][_0xb1fa('0x43')]);_0x4777ae[_0xb1fa('0x30')]=_['keys'](_0x45ca9b['query']);_0x4777ae[_0xb1fa('0x38')]=_[_0xb1fa('0x31')](_0x4777ae[_0xb1fa('0x2e')],_0x4777ae[_0xb1fa('0x30')]);_0x3e1f62[_0xb1fa('0x32')]=_[_0xb1fa('0x31')](_0x4777ae[_0xb1fa('0x2e')],qs[_0xb1fa('0x33')](_0x45ca9b[_0xb1fa('0x30')][_0xb1fa('0x33')]));_0x3e1f62[_0xb1fa('0x32')]=_0x3e1f62['attributes'][_0xb1fa('0x44')]?_0x3e1f62[_0xb1fa('0x32')]:_0x4777ae['model'];if(_0x45ca9b[_0xb1fa('0x30')][_0xb1fa('0x3d')]){_0x3e1f62[_0xb1fa('0x3e')]=[{'all':!![]}];}_0x3e1f62=_['merge']({},_0x3e1f62,_0x45ca9b[_0xb1fa('0x3c')]);return db[_0xb1fa('0x2c')][_0xb1fa('0x45')](_0x3e1f62)[_0xb1fa('0x23')](handleEntityNotFound(_0x3ef4d5,null))['then'](respondWithResult(_0x3ef4d5,null))[_0xb1fa('0x40')](handleError(_0x3ef4d5,null));};exports[_0xb1fa('0x46')]=function(_0x19307c,_0x37e5b0){return db['CmCompany'][_0xb1fa('0x46')](_0x19307c[_0xb1fa('0x47')],{})[_0xb1fa('0x23')](function(_0x210ace){var _0x5b4470=_0x19307c[_0xb1fa('0x48')][_0xb1fa('0x25')]({'plain':!![]});if(!_0x5b4470)throw new Error(_0xb1fa('0x49'));if(_0x5b4470[_0xb1fa('0x4a')]===_0xb1fa('0x48')){var _0x4ab5af=_0x210ace[_0xb1fa('0x25')]({'plain':!![]});var _0x4c697c=_0xb1fa('0x26');return db['UserProfileSection'][_0xb1fa('0x45')]({'where':{'name':_0x4c697c,'userProfileId':_0x5b4470[_0xb1fa('0x4b')]},'raw':!![]})['then'](function(_0x5ae30c){if(_0x5ae30c&&_0x5ae30c['autoAssociation']===0x0){return db[_0xb1fa('0x27')]['create']({'name':_0x4ab5af[_0xb1fa('0x2a')],'resourceId':_0x4ab5af['id'],'type':_0x5ae30c[_0xb1fa('0x2a')],'sectionId':_0x5ae30c['id']},{})[_0xb1fa('0x23')](function(){return _0x210ace;});}else{return _0x210ace;}})[_0xb1fa('0x40')](function(_0x2f1845){logger['error'](_0xb1fa('0x4c'),_0x2f1845);throw _0x2f1845;});}return _0x210ace;})['then'](respondWithResult(_0x37e5b0,0xc9))[_0xb1fa('0x40')](handleError(_0x37e5b0,null));};exports[_0xb1fa('0x4d')]=function(_0x19ca7b,_0x100a14){if(_0x19ca7b[_0xb1fa('0x47')]['id']){delete _0x19ca7b[_0xb1fa('0x47')]['id'];}return db[_0xb1fa('0x2c')][_0xb1fa('0x45')]({'where':{'id':_0x19ca7b[_0xb1fa('0x42')]['id']}})[_0xb1fa('0x23')](handleEntityNotFound(_0x100a14,null))[_0xb1fa('0x23')](saveUpdates(_0x19ca7b[_0xb1fa('0x47')],null))[_0xb1fa('0x23')](respondWithResult(_0x100a14,null))['catch'](handleError(_0x100a14,null));};exports[_0xb1fa('0x24')]=function(_0xcfc102,_0x249c16){return db[_0xb1fa('0x2c')][_0xb1fa('0x45')]({'where':{'id':_0xcfc102[_0xb1fa('0x42')]['id']}})[_0xb1fa('0x23')](handleEntityNotFound(_0x249c16,null))[_0xb1fa('0x23')](removeEntity(_0x249c16,null))[_0xb1fa('0x40')](handleError(_0x249c16,null));};exports[_0xb1fa('0x2d')]=function(_0x88a94e,_0x3ab8e3){return db[_0xb1fa('0x2c')][_0xb1fa('0x2d')]()[_0xb1fa('0x23')](respondWithResult(_0x3ab8e3,null))['catch'](handleError(_0x3ab8e3,null));};exports['addContacts']=function(_0x516729,_0x95db89,_0x57c5a5){return db[_0xb1fa('0x4e')][_0xb1fa('0x45')]({'where':{'id':_0x516729[_0xb1fa('0x42')]['id']}})['then'](handleEntityNotFound(_0x95db89,null))['then'](function(_0x3b728f){if(_0x3b728f){return _0x3b728f[_0xb1fa('0x4f')](_0x516729[_0xb1fa('0x47')][_0xb1fa('0x50')],_[_0xb1fa('0x51')](_0x516729['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x95db89,null))[_0xb1fa('0x40')](handleError(_0x95db89,null));};exports['getContacts']=function(_0x5c31c5,_0x2ce01b,_0x4dc290){var _0x49c8ac={};var _0x3c6c8c={};var _0x359f47;var _0x21c562;return db[_0xb1fa('0x2c')][_0xb1fa('0x52')]({'where':{'id':_0x5c31c5['params']['id']}})['then'](handleEntityNotFound(_0x2ce01b,null))[_0xb1fa('0x23')](function(_0x267169){if(_0x267169){_0x359f47=_0x267169;_0x3c6c8c[_0xb1fa('0x2e')]=_[_0xb1fa('0x2f')](db[_0xb1fa('0x4e')][_0xb1fa('0x43')]);_0x3c6c8c[_0xb1fa('0x30')]=_['keys'](_0x5c31c5[_0xb1fa('0x30')]);_0x3c6c8c[_0xb1fa('0x38')]=_[_0xb1fa('0x31')](_0x3c6c8c['model'],_0x3c6c8c[_0xb1fa('0x30')]);_0x49c8ac[_0xb1fa('0x32')]=_[_0xb1fa('0x31')](_0x3c6c8c['model'],qs[_0xb1fa('0x33')](_0x5c31c5[_0xb1fa('0x30')][_0xb1fa('0x33')]));_0x49c8ac['attributes']=_0x49c8ac[_0xb1fa('0x32')]['length']?_0x49c8ac[_0xb1fa('0x32')]:_0x3c6c8c['model'];_0x49c8ac[_0xb1fa('0x36')]=qs['sort'](_0x5c31c5[_0xb1fa('0x30')][_0xb1fa('0x37')]);_0x49c8ac[_0xb1fa('0x3a')]=qs['filters'](_[_0xb1fa('0x53')](_0x5c31c5[_0xb1fa('0x30')],_0x3c6c8c[_0xb1fa('0x38')]));if(_0x5c31c5[_0xb1fa('0x30')][_0xb1fa('0x39')]){_0x49c8ac['where']=_[_0xb1fa('0x3b')](_0x49c8ac[_0xb1fa('0x3a')],{'$or':_['map'](_0x49c8ac[_0xb1fa('0x32')],function(_0x3bd605){var _0x4fd939={};_0x4fd939[_0x3bd605]={'$like':'%'+_0x5c31c5[_0xb1fa('0x30')][_0xb1fa('0x39')]+'%'};return _0x4fd939;})});}_0x49c8ac=_[_0xb1fa('0x3b')]({},_0x49c8ac,_0x5c31c5['options']);return _0x359f47[_0xb1fa('0x54')](_0x49c8ac);}})[_0xb1fa('0x23')](function(_0x25af4a){if(_0x25af4a){_0x21c562=_0x25af4a['length'];if(!_0x5c31c5[_0xb1fa('0x30')][_0xb1fa('0x34')](_0xb1fa('0x35'))){_0x49c8ac['limit']=qs[_0xb1fa('0x1e')](_0x5c31c5[_0xb1fa('0x30')][_0xb1fa('0x1e')]);_0x49c8ac[_0xb1fa('0x1c')]=qs['offset'](_0x5c31c5[_0xb1fa('0x30')][_0xb1fa('0x1c')]);}return _0x359f47['getContacts'](_0x49c8ac);}})[_0xb1fa('0x23')](function(_0x206e55){if(_0x206e55){return _0x206e55?{'count':_0x21c562,'rows':_0x206e55}:null;}})[_0xb1fa('0x23')](respondWithResult(_0x2ce01b,null))[_0xb1fa('0x40')](handleError(_0x2ce01b,null));};
\ No newline at end of file
index 6d39548..5c608b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f7=['cm_companies','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./cmCompany.attributes','CmCompany'];(function(_0x8a0c86,_0xfe68c1){var _0x4e2c86=function(_0xfa5fad){while(--_0xfa5fad){_0x8a0c86['push'](_0x8a0c86['shift']());}};_0x4e2c86(++_0xfe68c1);}(_0x41f7,0x14b));var _0x741f=function(_0x47edcc,_0x40d7d5){_0x47edcc=_0x47edcc-0x0;var _0x488421=_0x41f7[_0x47edcc];return _0x488421;};'use strict';var _=require(_0x741f('0x0'));var util=require(_0x741f('0x1'));var logger=require(_0x741f('0x2'))(_0x741f('0x3'));var moment=require(_0x741f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x741f('0x5'));var config=require(_0x741f('0x6'));var attributes=require(_0x741f('0x7'));module['exports']=function(_0xffc848,_0x1d7f60){return _0xffc848['define'](_0x741f('0x8'),attributes,{'tableName':_0x741f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdbc1=['./cmCompany.attributes','define','cm_companies','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x30717e,_0xd96659){var _0x38e97f=function(_0x2b2eeb){while(--_0x2b2eeb){_0x30717e['push'](_0x30717e['shift']());}};_0x38e97f(++_0xd96659);}(_0xdbc1,0x161));var _0x1dbc=function(_0x4ccf96,_0x34978e){_0x4ccf96=_0x4ccf96-0x0;var _0xd103b7=_0xdbc1[_0x4ccf96];return _0xd103b7;};'use strict';var _=require(_0x1dbc('0x0'));var util=require(_0x1dbc('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1dbc('0x2'));var BPromise=require(_0x1dbc('0x3'));var rp=require(_0x1dbc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1dbc('0x5'));var config=require(_0x1dbc('0x6'));var attributes=require(_0x1dbc('0x7'));module['exports']=function(_0x1accc8,_0x2cdcb8){return _0x1accc8[_0x1dbc('0x8')]('CmCompany',attributes,{'tableName':_0x1dbc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a63b5b..73b1fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa605=['stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xa605,0x9f));var _0x5a60=function(_0x1659ef,_0x38c512){_0x1659ef=_0x1659ef-0x0;var _0x5cb60f=_0xa605[_0x1659ef];return _0x5cb60f;};'use strict';var _=require(_0x5a60('0x0'));var util=require(_0x5a60('0x1'));var moment=require(_0x5a60('0x2'));var BPromise=require(_0x5a60('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5a60('0x4'));var db=require(_0x5a60('0x5'))['db'];var utils=require(_0x5a60('0x6'));var logger=require(_0x5a60('0x7'))(_0x5a60('0x8'));var config=require('../../config/environment');var jayson=require(_0x5a60('0x9'));var client=jayson[_0x5a60('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7190b2,_0x17f348,_0x311302){return new BPromise(function(_0x2ecd9b,_0x88647f){return client['request'](_0x7190b2,_0x311302)[_0x5a60('0xb')](function(_0x3ce71c){logger[_0x5a60('0xc')](_0x5a60('0xd'),_0x17f348,_0x5a60('0xe'));logger[_0x5a60('0xf')](_0x5a60('0x10'),_0x17f348,_0x5a60('0xe'),JSON[_0x5a60('0x11')](_0x3ce71c));if(_0x3ce71c[_0x5a60('0x12')]){if(_0x3ce71c[_0x5a60('0x12')]['code']===0x1f4){logger[_0x5a60('0x12')](_0x5a60('0xd'),_0x17f348,_0x3ce71c['error'][_0x5a60('0x13')]);return _0x88647f(_0x3ce71c[_0x5a60('0x12')][_0x5a60('0x13')]);}logger[_0x5a60('0x12')](_0x5a60('0xd'),_0x17f348,_0x3ce71c[_0x5a60('0x12')]['message']);return _0x2ecd9b(_0x3ce71c[_0x5a60('0x12')]['message']);}else{logger[_0x5a60('0xc')]('CmCompany,\x20%s,\x20%s',_0x17f348,_0x5a60('0xe'));_0x2ecd9b(_0x3ce71c[_0x5a60('0x14')][_0x5a60('0x13')]);}})[_0x5a60('0x15')](function(_0x1bb049){logger['error']('CmCompany,\x20%s,\x20%s',_0x17f348,_0x1bb049);_0x88647f(_0x1bb049);});});}
\ No newline at end of file
+var _0x7288=['info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0x4e172f,_0xcd6760){var _0xf03f51=function(_0x3756d7){while(--_0x3756d7){_0x4e172f['push'](_0x4e172f['shift']());}};_0xf03f51(++_0xcd6760);}(_0x7288,0x134));var _0x8728=function(_0x1fff75,_0xb0a79e){_0x1fff75=_0x1fff75-0x0;var _0x14a0b4=_0x7288[_0x1fff75];return _0x14a0b4;};'use strict';var _=require(_0x8728('0x0'));var util=require(_0x8728('0x1'));var moment=require(_0x8728('0x2'));var BPromise=require(_0x8728('0x3'));var rs=require(_0x8728('0x4'));var fs=require('fs');var Redis=require(_0x8728('0x5'));var db=require(_0x8728('0x6'))['db'];var utils=require(_0x8728('0x7'));var logger=require(_0x8728('0x8'))(_0x8728('0x9'));var config=require('../../config/environment');var jayson=require(_0x8728('0xa'));var client=jayson[_0x8728('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4198cd,_0x3bbeb5,_0x25ba67){return new BPromise(function(_0xbc105,_0x5bc022){return client[_0x8728('0xc')](_0x4198cd,_0x25ba67)[_0x8728('0xd')](function(_0x58e457){logger[_0x8728('0xe')](_0x8728('0xf'),_0x3bbeb5,_0x8728('0x10'));logger[_0x8728('0x11')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x3bbeb5,'request\x20sent',JSON['stringify'](_0x58e457));if(_0x58e457['error']){if(_0x58e457[_0x8728('0x12')][_0x8728('0x13')]===0x1f4){logger[_0x8728('0x12')](_0x8728('0xf'),_0x3bbeb5,_0x58e457[_0x8728('0x12')][_0x8728('0x14')]);return _0x5bc022(_0x58e457[_0x8728('0x12')][_0x8728('0x14')]);}logger[_0x8728('0x12')]('CmCompany,\x20%s,\x20%s',_0x3bbeb5,_0x58e457[_0x8728('0x12')][_0x8728('0x14')]);return _0xbc105(_0x58e457['error'][_0x8728('0x14')]);}else{logger[_0x8728('0xe')](_0x8728('0xf'),_0x3bbeb5,'request\x20sent');_0xbc105(_0x58e457[_0x8728('0x15')][_0x8728('0x14')]);}})[_0x8728('0x16')](function(_0x52b22c){logger[_0x8728('0x12')](_0x8728('0xf'),_0x3bbeb5,_0x52b22c);_0x5bc022(_0x52b22c);});});}
\ No newline at end of file
index f920857..c6a4a1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x780c=['getContacts','create','post','addContacts','delete','destroy','multer','util','Router','../../components/auth/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts'];(function(_0x3a6a1d,_0x22a746){var _0x2356d4=function(_0x3b587a){while(--_0x3b587a){_0x3a6a1d['push'](_0x3a6a1d['shift']());}};_0x2356d4(++_0x22a746);}(_0x780c,0x15a));var _0xc780=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0x780c[_0x382a62];return _0x490a25;};'use strict';var multer=require(_0xc780('0x0'));var util=require(_0xc780('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc780('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xc780('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xc780('0x4'));var controller=require(_0xc780('0x5'));router[_0xc780('0x6')]('/',auth[_0xc780('0x7')](),controller[_0xc780('0x8')]);router[_0xc780('0x6')](_0xc780('0x9'),auth[_0xc780('0x7')](),controller[_0xc780('0xa')]);router[_0xc780('0x6')](_0xc780('0xb'),auth[_0xc780('0x7')](),controller[_0xc780('0xc')]);router[_0xc780('0x6')](_0xc780('0xd'),auth[_0xc780('0x7')](),controller[_0xc780('0xe')]);router['post']('/',auth[_0xc780('0x7')](),controller[_0xc780('0xf')]);router[_0xc780('0x10')]('/:id/contacts',auth[_0xc780('0x7')](),controller[_0xc780('0x11')]);router['put'](_0xc780('0xb'),auth[_0xc780('0x7')](),controller['update']);router[_0xc780('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xc780('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xc274=['addContacts','put','update','delete','/:id','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','show','/:id/contacts','post','create'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xc274,0x151));var _0x4c27=function(_0x17c9ce,_0x53692a){_0x17c9ce=_0x17c9ce-0x0;var _0x4f44d7=_0xc274[_0x17c9ce];return _0x4f44d7;};'use strict';var multer=require('multer');var util=require(_0x4c27('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4c27('0x1'));var router=express[_0x4c27('0x2')]();var fs_extra=require(_0x4c27('0x3'));var auth=require(_0x4c27('0x4'));var interaction=require(_0x4c27('0x5'));var config=require(_0x4c27('0x6'));var controller=require('./cmCompany.controller');router[_0x4c27('0x7')]('/',auth['isAuthenticated'](),controller[_0x4c27('0x8')]);router[_0x4c27('0x7')](_0x4c27('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x4c27('0x7')]('/:id',auth[_0x4c27('0xa')](),controller[_0x4c27('0xb')]);router[_0x4c27('0x7')](_0x4c27('0xc'),auth[_0x4c27('0xa')](),controller['getContacts']);router[_0x4c27('0xd')]('/',auth[_0x4c27('0xa')](),controller[_0x4c27('0xe')]);router[_0x4c27('0xd')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x4c27('0xf')]);router[_0x4c27('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x4c27('0x11')]);router[_0x4c27('0x12')](_0x4c27('0x13'),auth['isAuthenticated'](),controller[_0x4c27('0x14')]);module[_0x4c27('0x15')]=router;
\ No newline at end of file
index ae86ac4..1d3e7c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','lodash'];(function(_0x4d7424,_0xfc2fb){var _0x558f8e=function(_0x1696ad){while(--_0x1696ad){_0x4d7424['push'](_0x4d7424['shift']());}};_0x558f8e(++_0xfc2fb);}(_0x958a,0xf2));var _0xa958=function(_0xadcc82,_0x1a1266){_0xadcc82=_0xadcc82-0x0;var _0x5b4a77=_0x958a[_0xadcc82];return _0x5b4a77;};'use strict';var _=require(_0xa958('0x0'));var Sequelize=require(_0xa958('0x1'));module[_0xa958('0x2')]={'firstName':{'type':Sequelize[_0xa958('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xa958('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0xa958('0x3')]},'city':{'type':Sequelize[_0xa958('0x3')]},'country':{'type':Sequelize[_0xa958('0x3')]},'dateOfBirth':{'type':Sequelize[_0xa958('0x3')]},'description':{'type':Sequelize[_0xa958('0x4')]},'phone':{'type':Sequelize[_0xa958('0x3')]},'mobile':{'type':Sequelize[_0xa958('0x3')]},'fax':{'type':Sequelize[_0xa958('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xa958('0x3')]},'facebook':{'type':Sequelize[_0xa958('0x3')]},'fb_data':{'type':Sequelize[_0xa958('0x3')]},'twitter':{'type':Sequelize[_0xa958('0x3')]},'skype':{'type':Sequelize[_0xa958('0x3')]},'teams':{'type':Sequelize[_0xa958('0x3')]},'viber':{'type':Sequelize[_0xa958('0x3')]},'line':{'type':Sequelize[_0xa958('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xa958('0x3')]},'UserId':{'type':Sequelize[_0xa958('0x5')]},'AdditionalPhones':{'type':Sequelize[_0xa958('0x3')]},'priority':{'type':Sequelize[_0xa958('0x5')](0x2)[_0xa958('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xa958('0x7')],'defaultValue':Sequelize[_0xa958('0x8')]},'dialTimezone':{'type':Sequelize[_0xa958('0x3')]},'utcOffset':{'type':Sequelize[_0xa958('0x5')]}};
\ No newline at end of file
+var _0xe5f5=['lodash','exports','STRING','INTEGER','UNSIGNED','NOW'];(function(_0x58547b,_0x4b89c2){var _0x1d3fd2=function(_0x4ac500){while(--_0x4ac500){_0x58547b['push'](_0x58547b['shift']());}};_0x1d3fd2(++_0x4b89c2);}(_0xe5f5,0x1ec));var _0x5e5f=function(_0x1ef6a1,_0x59fbc1){_0x1ef6a1=_0x1ef6a1-0x0;var _0x24b89e=_0xe5f5[_0x1ef6a1];return _0x24b89e;};'use strict';var _=require(_0x5e5f('0x0'));var Sequelize=require('sequelize');module[_0x5e5f('0x1')]={'firstName':{'type':Sequelize[_0x5e5f('0x2')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x5e5f('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x5e5f('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0x5e5f('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x5e5f('0x2')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x5e5f('0x2')]},'url':{'type':Sequelize[_0x5e5f('0x2')]},'facebook':{'type':Sequelize[_0x5e5f('0x2')]},'fb_data':{'type':Sequelize[_0x5e5f('0x2')]},'twitter':{'type':Sequelize[_0x5e5f('0x2')]},'skype':{'type':Sequelize[_0x5e5f('0x2')]},'teams':{'type':Sequelize[_0x5e5f('0x2')]},'viber':{'type':Sequelize[_0x5e5f('0x2')]},'line':{'type':Sequelize[_0x5e5f('0x2')]},'wechat':{'type':Sequelize[_0x5e5f('0x2')]},'telegram':{'type':Sequelize[_0x5e5f('0x2')]},'UserId':{'type':Sequelize[_0x5e5f('0x3')]},'AdditionalPhones':{'type':Sequelize[_0x5e5f('0x2')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x5e5f('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x5e5f('0x5')]},'dialTimezone':{'type':Sequelize[_0x5e5f('0x2')]},'utcOffset':{'type':Sequelize[_0x5e5f('0x3')]}};
\ No newline at end of file
index 96f1bf4..ab877e8 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(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'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 d1550a4..0e623fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6b=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','CmContact','save'];(function(_0x263999,_0x477176){var _0x336996=function(_0x43c50a){while(--_0x43c50a){_0x263999['push'](_0x263999['shift']());}};_0x336996(++_0x477176);}(_0x9e6b,0x1d9));var _0xb9e6=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x9e6b[_0x5d6456];return _0x4d66c1;};'use strict';var EventEmitter=require(_0xb9e6('0x0'));var CmContact=require(_0xb9e6('0x1'))['db'][_0xb9e6('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb9e6('0x3'),'afterUpdate':_0xb9e6('0x4'),'afterDestroy':_0xb9e6('0x5')};function emitEvent(_0x5ba71f){return function(_0x3aba54,_0x33cc75,_0x293ee1){CmContactEvents[_0xb9e6('0x6')](_0x5ba71f+':'+_0x3aba54['id'],_0x3aba54);CmContactEvents[_0xb9e6('0x6')](_0x5ba71f,_0x3aba54);_0x293ee1(null);};}for(var e in events){if(events[_0xb9e6('0x7')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xb9e6('0x8')]=CmContactEvents;
\ No newline at end of file
+var _0x81a4=['emit','hasOwnProperty','hook','exports','CmContact','save','update','remove'];(function(_0x53c077,_0x5d25ae){var _0x2f699d=function(_0x1711f5){while(--_0x1711f5){_0x53c077['push'](_0x53c077['shift']());}};_0x2f699d(++_0x5d25ae);}(_0x81a4,0x1bc));var _0x481a=function(_0x3048ea,_0x3838c2){_0x3048ea=_0x3048ea-0x0;var _0x1a13c4=_0x81a4[_0x3048ea];return _0x1a13c4;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db'][_0x481a('0x0')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x481a('0x1'),'afterUpdate':_0x481a('0x2'),'afterDestroy':_0x481a('0x3')};function emitEvent(_0xfd549f){return function(_0x37d6cd,_0x96fb6,_0x1db80e){CmContactEvents[_0x481a('0x4')](_0xfd549f+':'+_0x37d6cd['id'],_0x37d6cd);CmContactEvents[_0x481a('0x4')](_0xfd549f,_0x37d6cd);_0x1db80e(null);};}for(var e in events){if(events[_0x481a('0x5')](e)){var event=events[e];CmContact[_0x481a('0x6')](e,emitEvent(event));}}module[_0x481a('0x7')]=CmContactEvents;
\ No newline at end of file
index ae729f9..6461ec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24d1=['fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','afterCreate','inspect','scheduledat','format','isNil','dialTimezone','VoiceQueue','findOne','then','utcOffset','add','YYYY-MM-DD\x20HH:mm:ss','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','catch','timezones','minutes','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','dialCheckDuplicateType','CmList','Lists','length','onlyIfOpen','BlackLists','CmHopperBlack','message','Campaign','always','cmContact,\x20%s,\x20%s','models','isEmpty','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','phone','firstName','lastName'];(function(_0x11bc66,_0x1822c2){var _0x3462b5=function(_0x45784a){while(--_0x45784a){_0x11bc66['push'](_0x11bc66['shift']());}};_0x3462b5(++_0x1822c2);}(_0x24d1,0x154));var _0x124d=function(_0x574445,_0xc10949){_0x574445=_0x574445-0x0;var _0x2c48db=_0x24d1[_0x574445];return _0x2c48db;};'use strict';var _=require(_0x124d('0x0'));var util=require(_0x124d('0x1'));var logger=require(_0x124d('0x2'))(_0x124d('0x3'));var moment=require(_0x124d('0x4'));var BPromise=require(_0x124d('0x5'));var rp=require(_0x124d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x124d('0x7'));var config=require(_0x124d('0x8'));var shared=require('../../config/environment/shared');var attributes=require(_0x124d('0x9'));module[_0x124d('0xa')]=function(_0x452a83,_0x18acf7){return _0x452a83[_0x124d('0xb')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x124d('0xc'),'fields':[_0x124d('0xc')]},{'name':'fti_cm_contacts','fields':[_0x124d('0xd'),_0x124d('0xe'),_0x124d('0xc'),'mobile',_0x124d('0xf'),_0x124d('0x10')],'type':_0x124d('0x11')}],'timestamps':!![],'charset':_0x124d('0x12'),'collate':_0x124d('0x13'),'hooks':{'afterCreate':function(_0x853295,_0xe6cc4e,_0x19a6f1){var _0x4caa9e=_0x452a83['models'];var _0x3057ee=_0x853295[_0x124d('0x14')]({'plain':!![]});function _0x4bfc8c(){return function(_0x55b520){logger[_0x124d('0x15')](_0x124d('0x16'),_0x124d('0x17'),util[_0x124d('0x18')](_0x55b520,{'showHidden':![],'depth':null}));};}function _0x35ea1f(_0x3d5e8a,_0x433fa6){var _0x2664ee=_0x433fa6[_0x124d('0x19')]?_0x433fa6[_0x124d('0x19')]:moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x3ccaf5,_0xd60216){if(_[_0x124d('0x1b')](_0x433fa6[_0x124d('0x1c')])){_0x3ccaf5({'ret':_0x2664ee});}else{_0x4caa9e[_0x124d('0x1d')][_0x124d('0x1e')]({'where':{'id':_0x3d5e8a['id']}})[_0x124d('0x1f')](function(_0x1dde80){if(!_[_0x124d('0x1b')](_0x1dde80)){var _0xb30a4e=_0x1dde80[_0x124d('0x1c')];if(!_[_0x124d('0x1b')](_0xb30a4e)){var _0x29e17a=shared['timezones'];var _0x20b960=_0x29e17a[_0xb30a4e];var _0x22c489=_0x29e17a[_0x433fa6['dialTimezone']];if(!_[_0x124d('0x1b')](_0x20b960)&&!_[_0x124d('0x1b')](_0x22c489)){var _0x3ae91f=_0x20b960[_0x124d('0x20')]-_0x22c489[_0x124d('0x20')];_0x2664ee=_0x433fa6[_0x124d('0x19')]?_0x433fa6[_0x124d('0x19')]:moment();var _0x44a9e8=moment(_0x2664ee)[_0x124d('0x21')](_0x3ae91f,'minutes');_0x3ccaf5({'ret':_0x44a9e8[_0x124d('0x1a')](_0x124d('0x22'))});}else _0x3ccaf5({'ret':_0x2664ee});}else _0x3ccaf5({'ret':_0x2664ee});}else{_0x3ccaf5({'ret':_0x2664ee});}});}});return 0xa;}var _0x59b586=function(_0x57ea07){return new BPromise(function(_0x101af0,_0x4612e4){_0x35ea1f(_0x57ea07,_0x3057ee)[_0x124d('0x1f')](function(_0x179b08){_0x3057ee[_0x124d('0x19')]=_0x179b08[_0x124d('0x23')];_0x4caa9e[_0x124d('0x24')]['findOne']({'where':{'phone':_0x3057ee[_0x124d('0xc')],'VoiceQueueId':_0x57ea07['id']}})[_0x124d('0x1f')](function(_0x13c2a8){if(!_[_0x124d('0x1b')](_0x13c2a8)){throw new Error(_0x124d('0x25')+_0x3057ee['phone']+_0x124d('0x26')+_0x57ea07['id']);}return _0x4caa9e['CmHopper'][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee[_0x124d('0x28')],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')](_0x124d('0x22')),'callback':_0x3057ee['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'VoiceQueueId':_0x57ea07['id']});})['catch'](function(_0xc085fa){_0x4612e4(_0xc085fa);});});});};var _0x20f71b=function(_0x14cbf6){return new BPromise(function(_0xcc48b4,_0x3a2ce7){_0x35ea1f(_0x14cbf6,_0x3057ee)[_0x124d('0x1f')](function(_0x1faa6d){_0x3057ee[_0x124d('0x19')]=_0x1faa6d['ret'];_0x4caa9e[_0x124d('0x24')]['findOne']({'where':{'phone':_0x3057ee[_0x124d('0xc')],'VoiceQueueId':_0x14cbf6['id']}})[_0x124d('0x1f')](function(_0x5d0712){if(!_[_0x124d('0x1b')](_0x5d0712)){throw new Error(_0x124d('0x25')+_0x3057ee[_0x124d('0xc')]+_0x124d('0x2b')+_0x14cbf6['id']);}return _0x4caa9e[_0x124d('0x2c')][_0x124d('0x1e')]({'where':{'calleridnum':_0x3057ee[_0x124d('0xc')],'VoiceQueueId':_0x14cbf6['id']}});})['then'](function(_0x5ae9c7){if(!_['isNil'](_0x5ae9c7)){throw new Error(_0x124d('0x2d')+_0x3057ee['phone']+_0x124d('0x2e')+_0x14cbf6['id']);}return _0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee['callbackUniqueid']:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'VoiceQueueId':_0x14cbf6['id']});})[_0x124d('0x2f')](function(_0x7cf923){_0x3a2ce7(_0x7cf923);});});});};function _0x858af2(){return function(_0x4d3e5b){logger[_0x124d('0x15')](_0x124d('0x16'),_0x124d('0x17'),util[_0x124d('0x18')](_0x4d3e5b,{'showHidden':![],'depth':null}));};}function _0xf2e770(_0x1d0283,_0x324820){var _0x2fa761=_0x324820[_0x124d('0x19')]?_0x324820['scheduledat']:moment()[_0x124d('0x1a')](_0x124d('0x22'));return new BPromise(function(_0x4a5ff1,_0x466fdd){if(_[_0x124d('0x1b')](_0x324820['dialTimezone'])){_0x4a5ff1({'ret':_0x2fa761});}else{_0x4caa9e['Campaign'][_0x124d('0x1e')]({'where':{'id':_0x1d0283['id']}})['then'](function(_0x368a6f){if(!_[_0x124d('0x1b')](_0x368a6f)){var _0x59904c=_0x368a6f[_0x124d('0x1c')];if(!_[_0x124d('0x1b')](_0x59904c)){var _0xbc1076=shared[_0x124d('0x30')];var _0x21c000=_0xbc1076[_0x59904c];var _0x39a7fe=_0xbc1076[_0x324820[_0x124d('0x1c')]];if(!_[_0x124d('0x1b')](_0x21c000)&&!_[_0x124d('0x1b')](_0x39a7fe)){var _0x3a224c=_0x21c000[_0x124d('0x20')]-_0x39a7fe[_0x124d('0x20')];_0x2fa761=_0x324820[_0x124d('0x19')]?_0x324820[_0x124d('0x19')]:moment();var _0x9f4d53=moment(_0x2fa761)[_0x124d('0x21')](_0x3a224c,_0x124d('0x31'));_0x4a5ff1({'ret':_0x9f4d53[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x4a5ff1({'ret':_0x2fa761});}else _0x4a5ff1({'ret':_0x2fa761});}else{_0x4a5ff1({'ret':_0x2fa761});}});}});return 0xa;}var _0x208470=function(_0x17263a){return new BPromise(function(_0x5bc601,_0x497d7c){_0xf2e770(_0x17263a,_0x3057ee)[_0x124d('0x1f')](function(_0x591514){_0x3057ee[_0x124d('0x19')]=_0x591514['ret'];_0x4caa9e[_0x124d('0x24')][_0x124d('0x1e')]({'where':{'phone':_0x3057ee[_0x124d('0xc')],'CampaignId':_0x17263a['id']}})[_0x124d('0x1f')](function(_0x1fdb68){if(!_['isNil'](_0x1fdb68)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3057ee[_0x124d('0xc')]+_0x124d('0x32')+_0x17263a['id']);}return _0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')](_0x124d('0x22')),'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'CampaignId':_0x17263a['id']});})[_0x124d('0x2f')](function(_0x55514f){_0x497d7c(_0x55514f);});});});};var _0x23cea2=function(_0x10ed42){return new BPromise(function(_0x425152,_0x4acc40){_0xf2e770(_0x10ed42,_0x3057ee)[_0x124d('0x1f')](function(_0x3f04f8){_0x3057ee[_0x124d('0x19')]=_0x3f04f8[_0x124d('0x23')];_0x4caa9e[_0x124d('0x24')]['findOne']({'where':{'phone':_0x3057ee[_0x124d('0xc')],'CampaignId':_0x10ed42['id']}})[_0x124d('0x1f')](function(_0x29a874){if(!_[_0x124d('0x1b')](_0x29a874)){throw new Error(_0x124d('0x25')+_0x3057ee[_0x124d('0xc')]+_0x124d('0x33')+_0x10ed42['id']);}return _0x4caa9e[_0x124d('0x2c')]['findOne']({'where':{'calleridnum':_0x3057ee[_0x124d('0xc')],'CampaignId':_0x10ed42['id']}});})[_0x124d('0x1f')](function(_0x213b82){if(!_[_0x124d('0x1b')](_0x213b82)){throw new Error(_0x124d('0x2d')+_0x3057ee[_0x124d('0xc')]+_0x124d('0x34')+_0x10ed42['id']);}return _0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee[_0x124d('0x28')],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')](_0x124d('0x22')),'callback':_0x3057ee['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee['callbackUniqueid']:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x10ed42['id']});})[_0x124d('0x2f')](function(_0x22c0ca){_0x4acc40(_0x22c0ca);});});});};if(_0x3057ee[_0x124d('0x28')]){_0x4caa9e['VoiceQueue'][_0x124d('0x35')]({'where':{'type':'outbound'},'attributes':['id',_0x124d('0x36'),_0x124d('0x1c')],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':_0x124d('0x38'),'where':{'id':_0x3057ee[_0x124d('0x28')]}}]})['then'](function(_0x2b7959){if(_0x2b7959){var _0x194eca=[];for(var _0x2255eb=0x0,_0x131a88;_0x2255eb<_0x2b7959[_0x124d('0x39')];_0x2255eb+=0x1){_0x131a88=_0x2b7959[_0x2255eb][_0x124d('0x14')]({'plain':!![]});switch(_0x131a88[_0x124d('0x36')]){case'always':_0x20f71b(_0x131a88)[_0x124d('0x2f')](_0x4bfc8c());break;case _0x124d('0x3a'):_0x59b586(_0x131a88)[_0x124d('0x2f')](_0x4bfc8c());break;default:_0xf2e770(_0x131a88,_0x3057ee)[_0x124d('0x1f')](function(_0x2d300d){_0x3057ee[_0x124d('0x19')]=_0x2d300d[_0x124d('0x23')];_0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'scheduledat':_0x3057ee['scheduledat']?_0x3057ee['scheduledat']:moment()[_0x124d('0x1a')](_0x124d('0x22')),'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'VoiceQueueId':_0x131a88['id']})['catch'](_0x4bfc8c());});}}}})['then'](function(){return _0x4caa9e[_0x124d('0x1d')][_0x124d('0x35')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':_0x124d('0x3b'),'where':{'id':_0x3057ee[_0x124d('0x28')]}}]})[_0x124d('0x1f')](function(_0x3273a8){if(_0x3273a8){var _0x37f27e=[];for(var _0x46f74f=0x0,_0x579b4c;_0x46f74f<_0x3273a8[_0x124d('0x39')];_0x46f74f+=0x1){_0x579b4c=_0x3273a8[_0x46f74f][_0x124d('0x14')]({'plain':!![]});_0x4caa9e[_0x124d('0x3c')][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'VoiceQueueId':_0x579b4c['id']})[_0x124d('0x2f')](function(_0x34269c){logger[_0x124d('0x15')]('cmContact,\x20%s,\x20%s',_0x124d('0x17'),_0x34269c[_0x124d('0x3d')]);});}}});})[_0x124d('0x1f')](function(){return _0x4caa9e[_0x124d('0x3e')][_0x124d('0x35')]({'attributes':['id',_0x124d('0x36'),_0x124d('0x1c')],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':_0x124d('0x38'),'where':{'id':_0x3057ee[_0x124d('0x28')]}}]})['then'](function(_0x4f9fba){if(_0x4f9fba){var _0x32fa19=[];for(var _0x221e0c=0x0,_0x46e504;_0x221e0c<_0x4f9fba[_0x124d('0x39')];_0x221e0c+=0x1){_0x46e504=_0x4f9fba[_0x221e0c][_0x124d('0x14')]({'plain':!![]});switch(_0x46e504[_0x124d('0x36')]){case _0x124d('0x3f'):_0x23cea2(_0x46e504)[_0x124d('0x2f')](_0x858af2());break;case _0x124d('0x3a'):_0x208470(_0x46e504)['catch'](_0x858af2());break;default:_0x4caa9e['CmHopper'][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee[_0x124d('0x28')],'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee['callbackUniqueid']?moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x46e504['id']})[_0x124d('0x2f')](_0x858af2());}}}});})[_0x124d('0x1f')](function(){return _0x4caa9e['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':'BlackLists','where':{'id':_0x3057ee[_0x124d('0x28')]}}]})[_0x124d('0x1f')](function(_0x59b33f){if(_0x59b33f){var _0x572d4b=[];for(var _0x16a00f=0x0,_0x5b517e;_0x16a00f<_0x59b33f[_0x124d('0x39')];_0x16a00f+=0x1){_0x5b517e=_0x59b33f[_0x16a00f][_0x124d('0x14')]({'plain':!![]});_0x4caa9e[_0x124d('0x3c')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'CampaignId':_0x5b517e['id']})[_0x124d('0x2f')](function(_0x859dd){logger[_0x124d('0x15')](_0x124d('0x40'),_0x124d('0x17'),_0x859dd['message']);});}}});})['then'](function(){_0x19a6f1();})['catch'](function(_0x3d667f){logger[_0x124d('0x15')](_0x124d('0x40'),_0x124d('0x17'),_0x3d667f[_0x124d('0x3d')]);_0x19a6f1(_0x3d667f);});}else{_0x19a6f1(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x30be64,_0x24508f,_0x220c5b){var _0x5793df=_0x452a83[_0x124d('0x41')];var _0x464aea=_0x30be64[_0x124d('0x14')]({'plain':!![]});return _0x5793df[_0x124d('0x24')][_0x124d('0x35')]({'raw':!![],'where':{'ListId':_0x464aea['ListId'],'ContactId':_0x464aea['id']}})[_0x124d('0x1f')](function(_0x247b1f){if(!_[_0x124d('0x42')](_0x247b1f)){var _0x2fb59d=[];for(var _0xe9a58d=0x0;_0xe9a58d<_0x247b1f['length'];_0xe9a58d+=0x1){var _0x572019=_0x5793df[_0x124d('0x24')]['destroy']({'where':{'ListId':_0x247b1f[_0xe9a58d][_0x124d('0x28')],'ContactId':_0x247b1f[_0xe9a58d]['ContactId'],'VoiceQueueId':_0x247b1f[_0xe9a58d]['VoiceQueueId'],'CampaignId':_0x247b1f[_0xe9a58d][_0x124d('0x43')]}});_0x2fb59d[_0x124d('0x44')](_0x572019);}return BPromise[_0x124d('0x45')](_0x2fb59d);}})[_0x124d('0x1f')](function(_0x4d38a5){logger['info'](_0x124d('0x46'),util[_0x124d('0x18')](_0x4d38a5,{'showHidden':![],'depth':null}));_0x220c5b();})[_0x124d('0x2f')](function(_0x4a4f8e){logger['error']('[CmContact][afterDestroy][Error]',util[_0x124d('0x18')](_0x4a4f8e,{'showHidden':![],'depth':null}));_0x220c5b(_0x4a4f8e);});}}});};
\ No newline at end of file
+var _0xccde=['length','afterCreate','message','List\x20not\x20found','models','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4_unicode_ci','error','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','timezones','utcOffset','add','format','then','ret','CmHopper','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','callbackUniqueid','catch','findOne','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','cmContact','Campaign','minutes','cmContact,\x20afterCreate\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','Lists','get','onlyIfOpen','outbound','CmList','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s'];(function(_0x4b3cad,_0xc339fc){var _0x5f0eb8=function(_0x488fc5){while(--_0x488fc5){_0x4b3cad['push'](_0x4b3cad['shift']());}};_0x5f0eb8(++_0xc339fc);}(_0xccde,0x1c4));var _0xeccd=function(_0x4e198a,_0x5a6bad){_0x4e198a=_0x4e198a-0x0;var _0xb84bfe=_0xccde[_0x4e198a];return _0xb84bfe;};'use strict';var _=require('lodash');var util=require(_0xeccd('0x0'));var logger=require(_0xeccd('0x1'))('api');var moment=require('moment');var BPromise=require(_0xeccd('0x2'));var rp=require(_0xeccd('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeccd('0x4'));var config=require(_0xeccd('0x5'));var shared=require('../../config/environment/shared');var attributes=require(_0xeccd('0x6'));module[_0xeccd('0x7')]=function(_0x50c374,_0x5991a1){return _0x50c374['define'](_0xeccd('0x8'),attributes,{'tableName':_0xeccd('0x9'),'paranoid':!![],'indexes':[{'name':_0xeccd('0xa'),'fields':[_0xeccd('0xa')]},{'name':_0xeccd('0xb'),'fields':[_0xeccd('0xc'),_0xeccd('0xd'),_0xeccd('0xa'),_0xeccd('0xe'),_0xeccd('0xf'),_0xeccd('0x10')],'type':_0xeccd('0x11')}],'timestamps':!![],'charset':'utf8mb4','collate':_0xeccd('0x12'),'hooks':{'afterCreate':function(_0x243f36,_0x5e7857,_0x5c8d1b){var _0x471688=_0x50c374['models'];var _0x18807b=_0x243f36['get']({'plain':!![]});function _0x1493e5(){return function(_0x23b74c){logger[_0xeccd('0x13')]('cmContact','afterCreate',util[_0xeccd('0x14')](_0x23b74c,{'showHidden':![],'depth':null}));};}function _0x5aac02(_0x20aa63,_0x454df5){var _0x3dd890=_0x454df5['scheduledat']?_0x454df5[_0xeccd('0x15')]:moment()['format'](_0xeccd('0x16'));return new BPromise(function(_0x41412b,_0x2de842){if(_[_0xeccd('0x17')](_0x454df5[_0xeccd('0x18')])){_0x41412b({'ret':_0x3dd890});}else{_0x471688[_0xeccd('0x19')]['findOne']({'where':{'id':_0x20aa63['id']}})['then'](function(_0x237294){if(!_[_0xeccd('0x17')](_0x237294)){var _0x4d7730=_0x237294['dialTimezone'];if(!_[_0xeccd('0x17')](_0x4d7730)){var _0x2d0f0c=shared[_0xeccd('0x1a')];var _0x244d6f=_0x2d0f0c[_0x4d7730];var _0x30a8f4=_0x2d0f0c[_0x454df5['dialTimezone']];if(!_[_0xeccd('0x17')](_0x244d6f)&&!_[_0xeccd('0x17')](_0x30a8f4)){var _0xf7b8f4=_0x244d6f[_0xeccd('0x1b')]-_0x30a8f4[_0xeccd('0x1b')];_0x3dd890=_0x454df5[_0xeccd('0x15')]?_0x454df5[_0xeccd('0x15')]:moment();var _0x4d9c92=moment(_0x3dd890)[_0xeccd('0x1c')](_0xf7b8f4,'minutes');_0x41412b({'ret':_0x4d9c92[_0xeccd('0x1d')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x41412b({'ret':_0x3dd890});}else _0x41412b({'ret':_0x3dd890});}else{_0x41412b({'ret':_0x3dd890});}});}});return 0xa;}var _0x491b71=function(_0x3b5124){return new BPromise(function(_0x1b6dd8,_0x3b87de){_0x5aac02(_0x3b5124,_0x18807b)[_0xeccd('0x1e')](function(_0x509ea0){_0x18807b[_0xeccd('0x15')]=_0x509ea0[_0xeccd('0x1f')];_0x471688[_0xeccd('0x20')]['findOne']({'where':{'phone':_0x18807b[_0xeccd('0xa')],'VoiceQueueId':_0x3b5124['id']}})[_0xeccd('0x1e')](function(_0x5e84d7){if(!_[_0xeccd('0x17')](_0x5e84d7)){throw new Error('cmContact,\x20afterCreate\x20'+_0x18807b['phone']+_0xeccd('0x21')+_0x3b5124['id']);}return _0x471688['CmHopper']['create']({'phone':_0x18807b[_0xeccd('0xa')],'ContactId':_0x18807b['id'],'ListId':_0x18807b[_0xeccd('0x22')],'priority':_0x18807b[_0xeccd('0x23')]?_0x18807b[_0xeccd('0x23')]:0x2,'scheduledat':_0x18807b[_0xeccd('0x15')]?_0x18807b['scheduledat']:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x18807b[_0xeccd('0x24')]?!![]:![],'callbackuniqueid':_0x18807b[_0xeccd('0x24')]?_0x18807b['callbackUniqueid']:undefined,'callbackat':_0x18807b[_0xeccd('0x24')]?moment()[_0xeccd('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x3b5124['id']});})[_0xeccd('0x25')](function(_0x3d1df7){_0x3b87de(_0x3d1df7);});});});};var _0x50852f=function(_0x3d561c){return new BPromise(function(_0x3f8c5a,_0x5b41d2){_0x5aac02(_0x3d561c,_0x18807b)[_0xeccd('0x1e')](function(_0x38b7fa){_0x18807b['scheduledat']=_0x38b7fa[_0xeccd('0x1f')];_0x471688[_0xeccd('0x20')][_0xeccd('0x26')]({'where':{'phone':_0x18807b['phone'],'VoiceQueueId':_0x3d561c['id']}})[_0xeccd('0x1e')](function(_0x26c947){if(!_[_0xeccd('0x17')](_0x26c947)){throw new Error('cmContact,\x20afterCreate\x20'+_0x18807b[_0xeccd('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x3d561c['id']);}return _0x471688[_0xeccd('0x27')][_0xeccd('0x26')]({'where':{'calleridnum':_0x18807b['phone'],'VoiceQueueId':_0x3d561c['id']}});})['then'](function(_0x2be379){if(!_[_0xeccd('0x17')](_0x2be379)){throw new Error(_0xeccd('0x28')+_0x18807b[_0xeccd('0xa')]+_0xeccd('0x29')+_0x3d561c['id']);}return _0x471688[_0xeccd('0x20')][_0xeccd('0x2a')]({'phone':_0x18807b[_0xeccd('0xa')],'ContactId':_0x18807b['id'],'ListId':_0x18807b[_0xeccd('0x22')],'priority':_0x18807b['priority']?_0x18807b['priority']:0x2,'scheduledat':_0x18807b[_0xeccd('0x15')]?_0x18807b[_0xeccd('0x15')]:moment()[_0xeccd('0x1d')](_0xeccd('0x16')),'callback':_0x18807b[_0xeccd('0x24')]?!![]:![],'callbackuniqueid':_0x18807b[_0xeccd('0x24')]?_0x18807b[_0xeccd('0x24')]:undefined,'callbackat':_0x18807b[_0xeccd('0x24')]?moment()[_0xeccd('0x1d')](_0xeccd('0x16')):undefined,'VoiceQueueId':_0x3d561c['id']});})['catch'](function(_0x19d5b3){_0x5b41d2(_0x19d5b3);});});});};function _0x53e36a(){return function(_0x568cc5){logger[_0xeccd('0x13')](_0xeccd('0x2b'),'afterCreate',util[_0xeccd('0x14')](_0x568cc5,{'showHidden':![],'depth':null}));};}function _0x13a88f(_0x169dc8,_0x2ba3b2){var _0x3482e6=_0x2ba3b2[_0xeccd('0x15')]?_0x2ba3b2[_0xeccd('0x15')]:moment()[_0xeccd('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x531178,_0x3eb45e){if(_[_0xeccd('0x17')](_0x2ba3b2[_0xeccd('0x18')])){_0x531178({'ret':_0x3482e6});}else{_0x471688[_0xeccd('0x2c')][_0xeccd('0x26')]({'where':{'id':_0x169dc8['id']}})['then'](function(_0x587c5a){if(!_[_0xeccd('0x17')](_0x587c5a)){var _0x10e0fe=_0x587c5a[_0xeccd('0x18')];if(!_[_0xeccd('0x17')](_0x10e0fe)){var _0x3e3b2a=shared[_0xeccd('0x1a')];var _0x5f07f0=_0x3e3b2a[_0x10e0fe];var _0x5a81a8=_0x3e3b2a[_0x2ba3b2['dialTimezone']];if(!_[_0xeccd('0x17')](_0x5f07f0)&&!_[_0xeccd('0x17')](_0x5a81a8)){var _0x1d5c55=_0x5f07f0[_0xeccd('0x1b')]-_0x5a81a8[_0xeccd('0x1b')];_0x3482e6=_0x2ba3b2['scheduledat']?_0x2ba3b2[_0xeccd('0x15')]:moment();var _0x46b8c4=moment(_0x3482e6)[_0xeccd('0x1c')](_0x1d5c55,_0xeccd('0x2d'));_0x531178({'ret':_0x46b8c4[_0xeccd('0x1d')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x531178({'ret':_0x3482e6});}else _0x531178({'ret':_0x3482e6});}else{_0x531178({'ret':_0x3482e6});}});}});return 0xa;}var _0x547b70=function(_0x412737){return new BPromise(function(_0x1bae6b,_0x237922){_0x13a88f(_0x412737,_0x18807b)[_0xeccd('0x1e')](function(_0x2dbdb8){_0x18807b[_0xeccd('0x15')]=_0x2dbdb8['ret'];_0x471688[_0xeccd('0x20')][_0xeccd('0x26')]({'where':{'phone':_0x18807b[_0xeccd('0xa')],'CampaignId':_0x412737['id']}})['then'](function(_0x468e95){if(!_[_0xeccd('0x17')](_0x468e95)){throw new Error(_0xeccd('0x2e')+_0x18807b[_0xeccd('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x412737['id']);}return _0x471688[_0xeccd('0x20')]['create']({'phone':_0x18807b['phone'],'ContactId':_0x18807b['id'],'ListId':_0x18807b[_0xeccd('0x22')],'priority':_0x18807b[_0xeccd('0x23')]?_0x18807b['priority']:0x2,'scheduledat':_0x18807b[_0xeccd('0x15')]?_0x18807b['scheduledat']:moment()[_0xeccd('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x18807b[_0xeccd('0x24')]?!![]:![],'callbackuniqueid':_0x18807b[_0xeccd('0x24')]?_0x18807b[_0xeccd('0x24')]:undefined,'callbackat':_0x18807b[_0xeccd('0x24')]?moment()['format'](_0xeccd('0x16')):undefined,'CampaignId':_0x412737['id']});})[_0xeccd('0x25')](function(_0x40ec0a){_0x237922(_0x40ec0a);});});});};var _0xe77ba0=function(_0x1b23b9){return new BPromise(function(_0x495908,_0x4dae0c){_0x13a88f(_0x1b23b9,_0x18807b)[_0xeccd('0x1e')](function(_0x508b91){_0x18807b['scheduledat']=_0x508b91[_0xeccd('0x1f')];_0x471688['CmHopper'][_0xeccd('0x26')]({'where':{'phone':_0x18807b[_0xeccd('0xa')],'CampaignId':_0x1b23b9['id']}})[_0xeccd('0x1e')](function(_0xd26ab1){if(!_[_0xeccd('0x17')](_0xd26ab1)){throw new Error(_0xeccd('0x2e')+_0x18807b['phone']+_0xeccd('0x2f')+_0x1b23b9['id']);}return _0x471688['CmHopperFinal'][_0xeccd('0x26')]({'where':{'calleridnum':_0x18807b['phone'],'CampaignId':_0x1b23b9['id']}});})[_0xeccd('0x1e')](function(_0x234464){if(!_[_0xeccd('0x17')](_0x234464)){throw new Error(_0xeccd('0x28')+_0x18807b['phone']+_0xeccd('0x30')+_0x1b23b9['id']);}return _0x471688['CmHopper']['create']({'phone':_0x18807b['phone'],'ContactId':_0x18807b['id'],'ListId':_0x18807b[_0xeccd('0x22')],'priority':_0x18807b[_0xeccd('0x23')]?_0x18807b[_0xeccd('0x23')]:0x2,'scheduledat':_0x18807b[_0xeccd('0x15')]?_0x18807b[_0xeccd('0x15')]:moment()['format'](_0xeccd('0x16')),'callback':_0x18807b[_0xeccd('0x24')]?!![]:![],'callbackuniqueid':_0x18807b['callbackUniqueid']?_0x18807b[_0xeccd('0x24')]:undefined,'callbackat':_0x18807b[_0xeccd('0x24')]?moment()[_0xeccd('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x1b23b9['id']});})[_0xeccd('0x25')](function(_0x57ea4e){_0x4dae0c(_0x57ea4e);});});});};if(_0x18807b[_0xeccd('0x22')]){_0x471688['VoiceQueue'][_0xeccd('0x31')]({'where':{'type':'outbound'},'attributes':['id',_0xeccd('0x32'),_0xeccd('0x18')],'include':[{'model':_0x471688['CmList'],'as':_0xeccd('0x33'),'where':{'id':_0x18807b[_0xeccd('0x22')]}}]})[_0xeccd('0x1e')](function(_0x34637e){if(_0x34637e){var _0x2cb906=[];for(var _0x526f1e=0x0,_0x5a2b11;_0x526f1e<_0x34637e['length'];_0x526f1e+=0x1){_0x5a2b11=_0x34637e[_0x526f1e][_0xeccd('0x34')]({'plain':!![]});switch(_0x5a2b11[_0xeccd('0x32')]){case'always':_0x50852f(_0x5a2b11)[_0xeccd('0x25')](_0x1493e5());break;case _0xeccd('0x35'):_0x491b71(_0x5a2b11)[_0xeccd('0x25')](_0x1493e5());break;default:_0x13a88f(_0x5a2b11,_0x18807b)['then'](function(_0x9ec625){_0x18807b['scheduledat']=_0x9ec625['ret'];_0x471688[_0xeccd('0x20')][_0xeccd('0x2a')]({'phone':_0x18807b[_0xeccd('0xa')],'ContactId':_0x18807b['id'],'ListId':_0x18807b['ListId'],'scheduledat':_0x18807b['scheduledat']?_0x18807b[_0xeccd('0x15')]:moment()[_0xeccd('0x1d')](_0xeccd('0x16')),'priority':_0x18807b[_0xeccd('0x23')]?_0x18807b[_0xeccd('0x23')]:0x2,'callback':_0x18807b[_0xeccd('0x24')]?!![]:![],'callbackuniqueid':_0x18807b[_0xeccd('0x24')]?_0x18807b[_0xeccd('0x24')]:undefined,'callbackat':_0x18807b[_0xeccd('0x24')]?moment()['format'](_0xeccd('0x16')):undefined,'VoiceQueueId':_0x5a2b11['id']})[_0xeccd('0x25')](_0x1493e5());});}}}})['then'](function(){return _0x471688['VoiceQueue'][_0xeccd('0x31')]({'where':{'type':_0xeccd('0x36')},'attributes':['id'],'include':[{'model':_0x471688[_0xeccd('0x37')],'as':_0xeccd('0x38'),'where':{'id':_0x18807b['ListId']}}]})[_0xeccd('0x1e')](function(_0x431a11){if(_0x431a11){var _0x157e24=[];for(var _0x19d248=0x0,_0xbb88b2;_0x19d248<_0x431a11['length'];_0x19d248+=0x1){_0xbb88b2=_0x431a11[_0x19d248][_0xeccd('0x34')]({'plain':!![]});_0x471688[_0xeccd('0x39')][_0xeccd('0x2a')]({'phone':_0x18807b[_0xeccd('0xa')],'ContactId':_0x18807b['id'],'ListId':_0x18807b[_0xeccd('0x22')],'VoiceQueueId':_0xbb88b2['id']})[_0xeccd('0x25')](function(_0x2caa10){logger['error'](_0xeccd('0x3a'),'afterCreate',_0x2caa10['message']);});}}});})[_0xeccd('0x1e')](function(){return _0x471688['Campaign'][_0xeccd('0x31')]({'attributes':['id',_0xeccd('0x32'),'dialTimezone'],'include':[{'model':_0x471688[_0xeccd('0x37')],'as':_0xeccd('0x33'),'where':{'id':_0x18807b[_0xeccd('0x22')]}}]})[_0xeccd('0x1e')](function(_0x217970){if(_0x217970){var _0x403b02=[];for(var _0x2ac601=0x0,_0x512793;_0x2ac601<_0x217970[_0xeccd('0x3b')];_0x2ac601+=0x1){_0x512793=_0x217970[_0x2ac601]['get']({'plain':!![]});switch(_0x512793[_0xeccd('0x32')]){case'always':_0xe77ba0(_0x512793)[_0xeccd('0x25')](_0x53e36a());break;case'onlyIfOpen':_0x547b70(_0x512793)[_0xeccd('0x25')](_0x53e36a());break;default:_0x471688[_0xeccd('0x20')]['create']({'phone':_0x18807b[_0xeccd('0xa')],'ContactId':_0x18807b['id'],'ListId':_0x18807b[_0xeccd('0x22')],'scheduledat':_0x18807b[_0xeccd('0x15')]?_0x18807b[_0xeccd('0x15')]:moment()[_0xeccd('0x1d')](_0xeccd('0x16')),'priority':_0x18807b[_0xeccd('0x23')]?_0x18807b[_0xeccd('0x23')]:0x2,'callback':_0x18807b[_0xeccd('0x24')]?!![]:![],'callbackuniqueid':_0x18807b[_0xeccd('0x24')]?_0x18807b[_0xeccd('0x24')]:undefined,'callbackat':_0x18807b[_0xeccd('0x24')]?moment()[_0xeccd('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x512793['id']})[_0xeccd('0x25')](_0x53e36a());}}}});})['then'](function(){return _0x471688['Campaign'][_0xeccd('0x31')]({'attributes':['id'],'include':[{'model':_0x471688[_0xeccd('0x37')],'as':_0xeccd('0x38'),'where':{'id':_0x18807b['ListId']}}]})[_0xeccd('0x1e')](function(_0x37c1b7){if(_0x37c1b7){var _0x3eebbb=[];for(var _0x2bdacc=0x0,_0x4e7850;_0x2bdacc<_0x37c1b7[_0xeccd('0x3b')];_0x2bdacc+=0x1){_0x4e7850=_0x37c1b7[_0x2bdacc][_0xeccd('0x34')]({'plain':!![]});_0x471688[_0xeccd('0x39')][_0xeccd('0x2a')]({'phone':_0x18807b['phone'],'ContactId':_0x18807b['id'],'ListId':_0x18807b[_0xeccd('0x22')],'CampaignId':_0x4e7850['id']})[_0xeccd('0x25')](function(_0x166bfb){logger[_0xeccd('0x13')]('cmContact,\x20%s,\x20%s',_0xeccd('0x3c'),_0x166bfb['message']);});}}});})[_0xeccd('0x1e')](function(){_0x5c8d1b();})[_0xeccd('0x25')](function(_0x5a51b4){logger[_0xeccd('0x13')](_0xeccd('0x3a'),_0xeccd('0x3c'),_0x5a51b4[_0xeccd('0x3d')]);_0x5c8d1b(_0x5a51b4);});}else{_0x5c8d1b(new Error(_0xeccd('0x3e')));}},'afterDestroy':function(_0x1b2974,_0x57cb2b,_0xc51eb8){var _0x4c69eb=_0x50c374[_0xeccd('0x3f')];var _0x3f9ab3=_0x1b2974[_0xeccd('0x34')]({'plain':!![]});return _0x4c69eb[_0xeccd('0x20')]['findAll']({'raw':!![],'where':{'ListId':_0x3f9ab3[_0xeccd('0x22')],'ContactId':_0x3f9ab3['id']}})['then'](function(_0xb716b1){if(!_[_0xeccd('0x40')](_0xb716b1)){var _0x483730=[];for(var _0x56a0c0=0x0;_0x56a0c0<_0xb716b1[_0xeccd('0x3b')];_0x56a0c0+=0x1){var _0x63b0b6=_0x4c69eb[_0xeccd('0x20')][_0xeccd('0x41')]({'where':{'ListId':_0xb716b1[_0x56a0c0][_0xeccd('0x22')],'ContactId':_0xb716b1[_0x56a0c0][_0xeccd('0x42')],'VoiceQueueId':_0xb716b1[_0x56a0c0][_0xeccd('0x43')],'CampaignId':_0xb716b1[_0x56a0c0][_0xeccd('0x44')]}});_0x483730['push'](_0x63b0b6);}return BPromise[_0xeccd('0x45')](_0x483730);}})[_0xeccd('0x1e')](function(_0x5764c6){logger[_0xeccd('0x46')](_0xeccd('0x47'),util[_0xeccd('0x14')](_0x5764c6,{'showHidden':![],'depth':null}));_0xc51eb8();})[_0xeccd('0x25')](function(_0xc5acfc){logger['error'](_0xeccd('0x48'),util[_0xeccd('0x14')](_0xc5acfc,{'showHidden':![],'depth':null}));_0xc51eb8(_0xc5acfc);});}}});};
\ No newline at end of file
index 195862a..35d192b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
+var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x345010,_0x539853){var _0xe0deef=function(_0x5517a0){while(--_0x5517a0){_0x345010['push'](_0x345010['shift']());}};_0xe0deef(++_0x539853);}(_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 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 892c1f7..0905e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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 9dad25c..6875f1c 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(_0x26d944,_0x5b2919){var _0x429946=function(_0x1b8242){while(--_0x1b8242){_0x26d944['push'](_0x26d944['shift']());}};_0x429946(++_0x5b2919);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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(_0x4e2ab3,_0x50d9cd){var _0x2978f9=function(_0x456bc2){while(--_0x456bc2){_0x4e2ab3['push'](_0x4e2ab3['shift']());}};_0x2978f9(++_0x50d9cd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'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 b779c42..9f0b1b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04de=['INTEGER','STRING','PHONE','sequelize','exports'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x04de,0x107));var _0xe04d=function(_0x4728f1,_0x1e21ce){_0x4728f1=_0x4728f1-0x0;var _0x5aca98=_0x04de[_0x4728f1];return _0x5aca98;};'use strict';var Sequelize=require(_0xe04d('0x0'));module[_0xe04d('0x1')]={'CmContactId':{'type':Sequelize[_0xe04d('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0xe04d('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xe04d('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xe04d('0x3')],'defaultValue':_0xe04d('0x4')},'OrderBy':{'type':Sequelize[_0xe04d('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0xe04d('0x3')],'defaultValue':null}};
\ No newline at end of file
+var _0xecd5=['exports','INTEGER','STRING','PHONE'];(function(_0x1b02bb,_0x3d9fde){var _0x131245=function(_0x2fd1d8){while(--_0x2fd1d8){_0x1b02bb['push'](_0x1b02bb['shift']());}};_0x131245(++_0x3d9fde);}(_0xecd5,0x110));var _0x5ecd=function(_0x19bb90,_0x543f2a){_0x19bb90=_0x19bb90-0x0;var _0x453ba7=_0xecd5[_0x19bb90];return _0x453ba7;};'use strict';var Sequelize=require('sequelize');module[_0x5ecd('0x0')]={'CmContactId':{'type':Sequelize[_0x5ecd('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0x5ecd('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize['INTEGER'],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x5ecd('0x2')],'defaultValue':_0x5ecd('0x3')},'OrderBy':{'type':Sequelize[_0x5ecd('0x1')],'defaultValue':null},'description':{'type':Sequelize[_0x5ecd('0x2')],'defaultValue':null}};
\ No newline at end of file
index 4f1d551..0b5e999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a57=['name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type','key','query','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','filters','merge','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','CmContactHasItems','stack'];(function(_0x57cfd4,_0x30823a){var _0xef983=function(_0x54ea2a){while(--_0x54ea2a){_0x57cfd4['push'](_0x57cfd4['shift']());}};_0xef983(++_0x30823a);}(_0x3a57,0x127));var _0x73a5=function(_0x5737df,_0x49e164){_0x5737df=_0x5737df-0x0;var _0x2456c6=_0x3a57[_0x5737df];return _0x2456c6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x73a5('0x0'));var zipdir=require(_0x73a5('0x1'));var jsonpatch=require(_0x73a5('0x2'));var rp=require(_0x73a5('0x3'));var moment=require(_0x73a5('0x4'));var BPromise=require(_0x73a5('0x5'));var Mustache=require(_0x73a5('0x6'));var util=require(_0x73a5('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x73a5('0x8'));var ejs=require(_0x73a5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x73a5('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x73a5('0xb'));var toCsv=require(_0x73a5('0x8'));var querystring=require('querystring');var Papa=require(_0x73a5('0xc'));var Redis=require('ioredis');var authService=require(_0x73a5('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x73a5('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x73a5('0xf'))(_0x73a5('0x10'));var utils=require(_0x73a5('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x73a5('0x12'));var db=require(_0x73a5('0x13'))['db'];function respondWithStatusCode(_0x53a363,_0x243285){_0x243285=_0x243285||0xcc;return function(_0x4d232d){if(_0x4d232d){return _0x53a363['sendStatus'](_0x243285);}return _0x53a363[_0x73a5('0x14')](_0x243285)[_0x73a5('0x15')]();};}function respondWithResult(_0x44e2f4,_0x39549a){_0x39549a=_0x39549a||0xc8;return function(_0x3b529d){if(_0x3b529d){return _0x44e2f4[_0x73a5('0x14')](_0x39549a)[_0x73a5('0x16')](_0x3b529d);}};}function respondWithFilteredResult(_0x220e55,_0x5bbc0e){return function(_0x5468bf){if(_0x5468bf){var _0x5a7986=typeof _0x5bbc0e['offset']===_0x73a5('0x17')&&typeof _0x5bbc0e['limit']==='undefined';var _0x2574cc=_0x5468bf[_0x73a5('0x18')];var _0x54b772=_0x5a7986?0x0:_0x5bbc0e[_0x73a5('0x19')];var _0x36bd17=_0x5a7986?_0x5468bf[_0x73a5('0x18')]:_0x5bbc0e[_0x73a5('0x19')]+_0x5bbc0e[_0x73a5('0x1a')];var _0x370b0b;if(_0x36bd17>=_0x2574cc){_0x36bd17=_0x2574cc;_0x370b0b=0xc8;}else{_0x370b0b=0xce;}_0x220e55['status'](_0x370b0b);return _0x220e55[_0x73a5('0x1b')](_0x73a5('0x1c'),_0x54b772+'-'+_0x36bd17+'/'+_0x2574cc)[_0x73a5('0x16')](_0x5468bf);}return null;};}function patchUpdates(_0x268a0b){return function(_0x16b42b){try{jsonpatch[_0x73a5('0x1d')](_0x16b42b,_0x268a0b,!![]);}catch(_0x11ebc7){return BPromise[_0x73a5('0x1e')](_0x11ebc7);}return _0x16b42b[_0x73a5('0x1f')]();};}function saveUpdates(_0x4b0374,_0x47f3e0){return function(_0xe3a88e){if(_0xe3a88e){return _0xe3a88e['update'](_0x4b0374)[_0x73a5('0x20')](function(_0xed43eb){return _0xed43eb;});}return null;};}function removeEntity(_0x4799f2,_0x46b362){return function(_0x42b8cc){if(_0x42b8cc){return _0x42b8cc[_0x73a5('0x21')]()[_0x73a5('0x20')](function(){var _0x326db3=_0x42b8cc[_0x73a5('0x22')]({'plain':!![]});var _0x672511=_0x73a5('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0x672511,'resourceId':_0x326db3['id']}})[_0x73a5('0x20')](function(){return _0x42b8cc;});})[_0x73a5('0x20')](function(){_0x4799f2[_0x73a5('0x14')](0xcc)[_0x73a5('0x15')]();});}};}function handleEntityNotFound(_0x562419,_0xe1406e){return function(_0x5ad9ec){if(!_0x5ad9ec){_0x562419['sendStatus'](0x194);}return _0x5ad9ec;};}function handleError(_0x2831d7,_0x244656){_0x244656=_0x244656||0x1f4;return function(_0xb9869c){logger['error'](_0xb9869c[_0x73a5('0x24')]);if(_0xb9869c[_0x73a5('0x25')]){delete _0xb9869c[_0x73a5('0x25')];}_0x2831d7['status'](_0x244656)[_0x73a5('0x26')](_0xb9869c);};}exports[_0x73a5('0x27')]=function(_0x30a9fe,_0x2b1d57){var _0x14b67b={},_0x4e3f10={},_0x384ad5={'count':0x0,'rows':[]};var _0x183032=_[_0x73a5('0x28')](db[_0x73a5('0x29')][_0x73a5('0x2a')],function(_0x27d24c){return{'name':_0x27d24c[_0x73a5('0x2b')],'type':_0x27d24c[_0x73a5('0x2c')][_0x73a5('0x2d')]};});_0x4e3f10['model']=_[_0x73a5('0x28')](_0x183032,_0x73a5('0x25'));_0x4e3f10[_0x73a5('0x2e')]=_['keys'](_0x30a9fe['query']);_0x4e3f10['filters']=_['intersection'](_0x4e3f10[_0x73a5('0x2f')],_0x4e3f10[_0x73a5('0x2e')]);_0x14b67b['attributes']=_[_0x73a5('0x30')](_0x4e3f10[_0x73a5('0x2f')],qs[_0x73a5('0x31')](_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x31')]));_0x14b67b[_0x73a5('0x32')]=_0x14b67b[_0x73a5('0x32')][_0x73a5('0x33')]?_0x14b67b[_0x73a5('0x32')]:_0x4e3f10[_0x73a5('0x2f')];if(!_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x34')](_0x73a5('0x35'))){_0x14b67b[_0x73a5('0x1a')]=qs[_0x73a5('0x1a')](_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x1a')]);_0x14b67b[_0x73a5('0x19')]=qs[_0x73a5('0x19')](_0x30a9fe[_0x73a5('0x2e')]['offset']);}_0x14b67b[_0x73a5('0x36')]=qs['sort'](_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x37')]);_0x14b67b[_0x73a5('0x38')]=qs['filters'](_[_0x73a5('0x39')](_0x30a9fe[_0x73a5('0x2e')],_0x4e3f10['filters']),_0x183032);if(_0x30a9fe['query'][_0x73a5('0x3a')]){_0x14b67b[_0x73a5('0x38')]=_['merge'](_0x14b67b['where'],{'$or':_['map'](_0x183032,function(_0x39df91){if(_0x39df91[_0x73a5('0x2c')]!==_0x73a5('0x3b')){var _0x133bd1={};_0x133bd1[_0x39df91[_0x73a5('0x25')]]={'$like':'%'+_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x3a')]+'%'};return _0x133bd1;}})});}_0x14b67b=_['merge']({},_0x14b67b,_0x30a9fe[_0x73a5('0x3c')]);var _0x496490={'where':_0x14b67b[_0x73a5('0x38')]};return db['CmContactHasItem']['count'](_0x496490)[_0x73a5('0x20')](function(_0x1d492f){_0x384ad5[_0x73a5('0x18')]=_0x1d492f;if(_0x30a9fe['query'][_0x73a5('0x3d')]){_0x14b67b[_0x73a5('0x3e')]=[{'all':!![]}];}return db[_0x73a5('0x29')][_0x73a5('0x3f')](_0x14b67b);})['then'](function(_0x17aedb){_0x384ad5[_0x73a5('0x40')]=_0x17aedb;return _0x384ad5;})[_0x73a5('0x20')](respondWithFilteredResult(_0x2b1d57,_0x14b67b))['catch'](handleError(_0x2b1d57,null));};exports[_0x73a5('0x41')]=function(_0x1de4b8,_0x29fb2a){var _0x1a46f8={'raw':!![],'where':{'id':_0x1de4b8[_0x73a5('0x42')]['id']}},_0x4fa470={};_0x4fa470[_0x73a5('0x2f')]=_[_0x73a5('0x43')](db['CmContactHasItem']['rawAttributes']);_0x4fa470['query']=_[_0x73a5('0x43')](_0x1de4b8[_0x73a5('0x2e')]);_0x4fa470[_0x73a5('0x44')]=_[_0x73a5('0x30')](_0x4fa470['model'],_0x4fa470[_0x73a5('0x2e')]);_0x1a46f8['attributes']=_[_0x73a5('0x30')](_0x4fa470[_0x73a5('0x2f')],qs[_0x73a5('0x31')](_0x1de4b8[_0x73a5('0x2e')][_0x73a5('0x31')]));_0x1a46f8[_0x73a5('0x32')]=_0x1a46f8[_0x73a5('0x32')][_0x73a5('0x33')]?_0x1a46f8[_0x73a5('0x32')]:_0x4fa470[_0x73a5('0x2f')];if(_0x1de4b8[_0x73a5('0x2e')][_0x73a5('0x3d')]){_0x1a46f8[_0x73a5('0x3e')]=[{'all':!![]}];}_0x1a46f8=_[_0x73a5('0x45')]({},_0x1a46f8,_0x1de4b8['options']);return db['CmContactHasItem'][_0x73a5('0x46')](_0x1a46f8)['then'](handleEntityNotFound(_0x29fb2a,null))[_0x73a5('0x20')](respondWithResult(_0x29fb2a,null))[_0x73a5('0x47')](handleError(_0x29fb2a,null));};exports[_0x73a5('0x48')]=function(_0x5ed6a6,_0x4605e1){return db[_0x73a5('0x29')][_0x73a5('0x48')](_0x5ed6a6[_0x73a5('0x49')],{})['then'](function(_0x26c8c3){var _0x2d9a1d=_0x5ed6a6[_0x73a5('0x4a')][_0x73a5('0x22')]({'plain':!![]});if(!_0x2d9a1d)throw new Error(_0x73a5('0x4b'));if(_0x2d9a1d[_0x73a5('0x4c')]===_0x73a5('0x4a')){var _0x3da4b7=_0x26c8c3[_0x73a5('0x22')]({'plain':!![]});var _0x31dfa3=_0x73a5('0x23');return db['UserProfileSection'][_0x73a5('0x46')]({'where':{'name':_0x31dfa3,'userProfileId':_0x2d9a1d[_0x73a5('0x4d')]},'raw':!![]})['then'](function(_0x2d81a0){if(_0x2d81a0&&_0x2d81a0[_0x73a5('0x4e')]===0x0){return db[_0x73a5('0x4f')][_0x73a5('0x48')]({'name':_0x3da4b7['name'],'resourceId':_0x3da4b7['id'],'type':_0x2d81a0[_0x73a5('0x25')],'sectionId':_0x2d81a0['id']},{})[_0x73a5('0x20')](function(){return _0x26c8c3;});}else{return _0x26c8c3;}})['catch'](function(_0x344c4e){logger[_0x73a5('0x50')](_0x73a5('0x51'),_0x344c4e);throw _0x344c4e;});}return _0x26c8c3;})[_0x73a5('0x20')](respondWithResult(_0x4605e1,0xc9))[_0x73a5('0x47')](handleError(_0x4605e1,null));};exports[_0x73a5('0x52')]=function(_0x209c9e,_0x21a5de){if(_0x209c9e[_0x73a5('0x49')]['id']){delete _0x209c9e[_0x73a5('0x49')]['id'];}return db[_0x73a5('0x29')][_0x73a5('0x46')]({'where':{'id':_0x209c9e[_0x73a5('0x42')]['id']}})['then'](handleEntityNotFound(_0x21a5de,null))['then'](saveUpdates(_0x209c9e['body'],null))['then'](respondWithResult(_0x21a5de,null))['catch'](handleError(_0x21a5de,null));};exports['destroy']=function(_0x5440b3,_0x2752b0){return db[_0x73a5('0x29')][_0x73a5('0x46')]({'where':{'id':_0x5440b3[_0x73a5('0x42')]['id']}})[_0x73a5('0x20')](handleEntityNotFound(_0x2752b0,null))[_0x73a5('0x20')](removeEntity(_0x2752b0,null))[_0x73a5('0x47')](handleError(_0x2752b0,null));};
\ No newline at end of file
+var _0x8152=['offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','get','CmContactHasItems','UserProfileResource','destroy','end','stack','name','index','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','CmContactHasItem','includeAll','include','findAll','rows','catch','show','params','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','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/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'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x8152,0x1a1));var _0x2815=function(_0x5e6811,_0x16c3e8){_0x5e6811=_0x5e6811-0x0;var _0x22d471=_0x8152[_0x5e6811];return _0x22d471;};'use strict';var emlformat=require(_0x2815('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2815('0x1'));var jsonpatch=require(_0x2815('0x2'));var rp=require(_0x2815('0x3'));var moment=require(_0x2815('0x4'));var BPromise=require(_0x2815('0x5'));var Mustache=require(_0x2815('0x6'));var util=require(_0x2815('0x7'));var path=require(_0x2815('0x8'));var sox=require(_0x2815('0x9'));var csv=require(_0x2815('0xa'));var ejs=require(_0x2815('0xb'));var fs=require('fs');var fs_extra=require(_0x2815('0xc'));var _=require(_0x2815('0xd'));var squel=require('squel');var crypto=require(_0x2815('0xe'));var jsforce=require(_0x2815('0xf'));var deskjs=require(_0x2815('0x10'));var toCsv=require(_0x2815('0xa'));var querystring=require(_0x2815('0x11'));var Papa=require(_0x2815('0x12'));var Redis=require(_0x2815('0x13'));var authService=require(_0x2815('0x14'));var qs=require(_0x2815('0x15'));var as=require(_0x2815('0x16'));var hardwareService=require(_0x2815('0x17'));var logger=require(_0x2815('0x18'))(_0x2815('0x19'));var utils=require(_0x2815('0x1a'));var config=require(_0x2815('0x1b'));var licenseUtil=require(_0x2815('0x1c'));var db=require(_0x2815('0x1d'))['db'];function respondWithStatusCode(_0x261df5,_0xbd0dcc){_0xbd0dcc=_0xbd0dcc||0xcc;return function(_0x4c9213){if(_0x4c9213){return _0x261df5[_0x2815('0x1e')](_0xbd0dcc);}return _0x261df5[_0x2815('0x1f')](_0xbd0dcc)['end']();};}function respondWithResult(_0x396c2d,_0x3b02b9){_0x3b02b9=_0x3b02b9||0xc8;return function(_0x14f9f3){if(_0x14f9f3){return _0x396c2d['status'](_0x3b02b9)[_0x2815('0x20')](_0x14f9f3);}};}function respondWithFilteredResult(_0x3650fb,_0x1f196b){return function(_0x51c254){if(_0x51c254){var _0xdba83e=typeof _0x1f196b[_0x2815('0x21')]==='undefined'&&typeof _0x1f196b['limit']===_0x2815('0x22');var _0x1ddf14=_0x51c254[_0x2815('0x23')];var _0x417b46=_0xdba83e?0x0:_0x1f196b[_0x2815('0x21')];var _0x3913aa=_0xdba83e?_0x51c254['count']:_0x1f196b[_0x2815('0x21')]+_0x1f196b[_0x2815('0x24')];var _0x56700b;if(_0x3913aa>=_0x1ddf14){_0x3913aa=_0x1ddf14;_0x56700b=0xc8;}else{_0x56700b=0xce;}_0x3650fb[_0x2815('0x1f')](_0x56700b);return _0x3650fb[_0x2815('0x25')](_0x2815('0x26'),_0x417b46+'-'+_0x3913aa+'/'+_0x1ddf14)[_0x2815('0x20')](_0x51c254);}return null;};}function patchUpdates(_0x19adf5){return function(_0x48d48b){try{jsonpatch[_0x2815('0x27')](_0x48d48b,_0x19adf5,!![]);}catch(_0x34c69a){return BPromise[_0x2815('0x28')](_0x34c69a);}return _0x48d48b['save']();};}function saveUpdates(_0x187a59,_0x51d400){return function(_0x9eaec){if(_0x9eaec){return _0x9eaec[_0x2815('0x29')](_0x187a59)[_0x2815('0x2a')](function(_0x55b679){return _0x55b679;});}return null;};}function removeEntity(_0x430de8,_0x44e919){return function(_0x308762){if(_0x308762){return _0x308762['destroy']()['then'](function(){var _0x3f8259=_0x308762[_0x2815('0x2b')]({'plain':!![]});var _0x4d484d=_0x2815('0x2c');return db[_0x2815('0x2d')][_0x2815('0x2e')]({'where':{'type':_0x4d484d,'resourceId':_0x3f8259['id']}})[_0x2815('0x2a')](function(){return _0x308762;});})[_0x2815('0x2a')](function(){_0x430de8[_0x2815('0x1f')](0xcc)[_0x2815('0x2f')]();});}};}function handleEntityNotFound(_0x34c997,_0x1f6414){return function(_0x2cbe8e){if(!_0x2cbe8e){_0x34c997['sendStatus'](0x194);}return _0x2cbe8e;};}function handleError(_0x3d18eb,_0x40b880){_0x40b880=_0x40b880||0x1f4;return function(_0x49b519){logger['error'](_0x49b519[_0x2815('0x30')]);if(_0x49b519[_0x2815('0x31')]){delete _0x49b519[_0x2815('0x31')];}_0x3d18eb[_0x2815('0x1f')](_0x40b880)['send'](_0x49b519);};}exports[_0x2815('0x32')]=function(_0x47a2d6,_0x1ea14e){var _0x3e89b8={},_0x57f8db={},_0x384c21={'count':0x0,'rows':[]};var _0x2200dc=_['map'](db['CmContactHasItem'][_0x2815('0x33')],function(_0x591a06){return{'name':_0x591a06[_0x2815('0x34')],'type':_0x591a06['type'][_0x2815('0x35')]};});_0x57f8db['model']=_[_0x2815('0x36')](_0x2200dc,_0x2815('0x31'));_0x57f8db[_0x2815('0x37')]=_[_0x2815('0x38')](_0x47a2d6[_0x2815('0x37')]);_0x57f8db[_0x2815('0x39')]=_[_0x2815('0x3a')](_0x57f8db[_0x2815('0x3b')],_0x57f8db[_0x2815('0x37')]);_0x3e89b8[_0x2815('0x3c')]=_[_0x2815('0x3a')](_0x57f8db[_0x2815('0x3b')],qs[_0x2815('0x3d')](_0x47a2d6[_0x2815('0x37')][_0x2815('0x3d')]));_0x3e89b8[_0x2815('0x3c')]=_0x3e89b8[_0x2815('0x3c')][_0x2815('0x3e')]?_0x3e89b8[_0x2815('0x3c')]:_0x57f8db[_0x2815('0x3b')];if(!_0x47a2d6[_0x2815('0x37')]['hasOwnProperty'](_0x2815('0x3f'))){_0x3e89b8['limit']=qs[_0x2815('0x24')](_0x47a2d6[_0x2815('0x37')][_0x2815('0x24')]);_0x3e89b8[_0x2815('0x21')]=qs[_0x2815('0x21')](_0x47a2d6['query'][_0x2815('0x21')]);}_0x3e89b8[_0x2815('0x40')]=qs[_0x2815('0x41')](_0x47a2d6[_0x2815('0x37')]['sort']);_0x3e89b8[_0x2815('0x42')]=qs[_0x2815('0x39')](_[_0x2815('0x43')](_0x47a2d6[_0x2815('0x37')],_0x57f8db[_0x2815('0x39')]),_0x2200dc);if(_0x47a2d6[_0x2815('0x37')][_0x2815('0x44')]){_0x3e89b8['where']=_['merge'](_0x3e89b8[_0x2815('0x42')],{'$or':_[_0x2815('0x36')](_0x2200dc,function(_0xf49b02){if(_0xf49b02[_0x2815('0x45')]!==_0x2815('0x46')){var _0x59a71a={};_0x59a71a[_0xf49b02[_0x2815('0x31')]]={'$like':'%'+_0x47a2d6[_0x2815('0x37')][_0x2815('0x44')]+'%'};return _0x59a71a;}})});}_0x3e89b8=_['merge']({},_0x3e89b8,_0x47a2d6[_0x2815('0x47')]);var _0x39fbb5={'where':_0x3e89b8[_0x2815('0x42')]};return db[_0x2815('0x48')]['count'](_0x39fbb5)[_0x2815('0x2a')](function(_0x26e4c6){_0x384c21[_0x2815('0x23')]=_0x26e4c6;if(_0x47a2d6[_0x2815('0x37')][_0x2815('0x49')]){_0x3e89b8[_0x2815('0x4a')]=[{'all':!![]}];}return db[_0x2815('0x48')][_0x2815('0x4b')](_0x3e89b8);})['then'](function(_0x436289){_0x384c21[_0x2815('0x4c')]=_0x436289;return _0x384c21;})[_0x2815('0x2a')](respondWithFilteredResult(_0x1ea14e,_0x3e89b8))[_0x2815('0x4d')](handleError(_0x1ea14e,null));};exports[_0x2815('0x4e')]=function(_0x43984e,_0x1cb590){var _0x218ed6={'raw':!![],'where':{'id':_0x43984e[_0x2815('0x4f')]['id']}},_0x4572b7={};_0x4572b7[_0x2815('0x3b')]=_[_0x2815('0x38')](db[_0x2815('0x48')][_0x2815('0x33')]);_0x4572b7['query']=_[_0x2815('0x38')](_0x43984e[_0x2815('0x37')]);_0x4572b7[_0x2815('0x39')]=_[_0x2815('0x3a')](_0x4572b7[_0x2815('0x3b')],_0x4572b7[_0x2815('0x37')]);_0x218ed6[_0x2815('0x3c')]=_[_0x2815('0x3a')](_0x4572b7[_0x2815('0x3b')],qs[_0x2815('0x3d')](_0x43984e[_0x2815('0x37')][_0x2815('0x3d')]));_0x218ed6['attributes']=_0x218ed6['attributes'][_0x2815('0x3e')]?_0x218ed6[_0x2815('0x3c')]:_0x4572b7[_0x2815('0x3b')];if(_0x43984e['query']['includeAll']){_0x218ed6[_0x2815('0x4a')]=[{'all':!![]}];}_0x218ed6=_[_0x2815('0x50')]({},_0x218ed6,_0x43984e[_0x2815('0x47')]);return db[_0x2815('0x48')]['find'](_0x218ed6)[_0x2815('0x2a')](handleEntityNotFound(_0x1cb590,null))[_0x2815('0x2a')](respondWithResult(_0x1cb590,null))[_0x2815('0x4d')](handleError(_0x1cb590,null));};exports[_0x2815('0x51')]=function(_0x535f1f,_0x230620){return db[_0x2815('0x48')]['create'](_0x535f1f[_0x2815('0x52')],{})[_0x2815('0x2a')](function(_0x289844){var _0x465766=_0x535f1f[_0x2815('0x53')][_0x2815('0x2b')]({'plain':!![]});if(!_0x465766)throw new Error(_0x2815('0x54'));if(_0x465766['role']==='user'){var _0x847f86=_0x289844['get']({'plain':!![]});var _0x6c1c0=_0x2815('0x2c');return db[_0x2815('0x55')][_0x2815('0x56')]({'where':{'name':_0x6c1c0,'userProfileId':_0x465766[_0x2815('0x57')]},'raw':!![]})['then'](function(_0xb8c878){if(_0xb8c878&&_0xb8c878['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x847f86[_0x2815('0x31')],'resourceId':_0x847f86['id'],'type':_0xb8c878['name'],'sectionId':_0xb8c878['id']},{})[_0x2815('0x2a')](function(){return _0x289844;});}else{return _0x289844;}})[_0x2815('0x4d')](function(_0x57a801){logger[_0x2815('0x58')](_0x2815('0x59'),_0x57a801);throw _0x57a801;});}return _0x289844;})[_0x2815('0x2a')](respondWithResult(_0x230620,0xc9))[_0x2815('0x4d')](handleError(_0x230620,null));};exports[_0x2815('0x29')]=function(_0x16c3e5,_0x4dfa31){if(_0x16c3e5[_0x2815('0x52')]['id']){delete _0x16c3e5[_0x2815('0x52')]['id'];}return db[_0x2815('0x48')][_0x2815('0x56')]({'where':{'id':_0x16c3e5[_0x2815('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4dfa31,null))[_0x2815('0x2a')](saveUpdates(_0x16c3e5[_0x2815('0x52')],null))[_0x2815('0x2a')](respondWithResult(_0x4dfa31,null))['catch'](handleError(_0x4dfa31,null));};exports[_0x2815('0x2e')]=function(_0x403d63,_0x22724c){return db[_0x2815('0x48')][_0x2815('0x56')]({'where':{'id':_0x403d63[_0x2815('0x4f')]['id']}})['then'](handleEntityNotFound(_0x22724c,null))[_0x2815('0x2a')](removeEntity(_0x22724c,null))[_0x2815('0x4d')](handleError(_0x22724c,null));};
\ No newline at end of file
index 3abb361..ac31a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x219c=['path','../../config/environment','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x4fd80a,_0x1d71d5){var _0x433edd=function(_0x582752){while(--_0x582752){_0x4fd80a['push'](_0x4fd80a['shift']());}};_0x433edd(++_0x1d71d5);}(_0x219c,0x163));var _0xc219=function(_0x1b7cba,_0x526c43){_0x1b7cba=_0x1b7cba-0x0;var _0x59ac7d=_0x219c[_0x1b7cba];return _0x59ac7d;};'use strict';var _=require(_0xc219('0x0'));var util=require(_0xc219('0x1'));var logger=require(_0xc219('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc219('0x3'));var rp=require(_0xc219('0x4'));var fs=require('fs');var path=require(_0xc219('0x5'));var rimraf=require('rimraf');var config=require(_0xc219('0x6'));var attributes=require(_0xc219('0x7'));module[_0xc219('0x8')]=function(_0x3f90a0,_0xf6834){return _0x3f90a0[_0xc219('0x9')](_0xc219('0xa'),attributes,{'tableName':_0xc219('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x77b7=['define','CmContactHasItem','cm_contact_has_items','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x77b7,0xb7));var _0x777b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x77b7[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0x777b('0x0'));var logger=require(_0x777b('0x1'))(_0x777b('0x2'));var moment=require(_0x777b('0x3'));var BPromise=require(_0x777b('0x4'));var rp=require(_0x777b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x777b('0x6'));var config=require(_0x777b('0x7'));var attributes=require('./cmContactHasItem.attributes');module[_0x777b('0x8')]=function(_0x4afbec,_0x453152){return _0x4afbec[_0x777b('0x9')](_0x777b('0xa'),attributes,{'tableName':_0x777b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8083736..9a2071c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80a1=['client','request','then','CmContactHasItem,\x20%s,\x20%s','request\x20sent','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise'];(function(_0x2c03ae,_0x9ef2a6){var _0x2f4ec3=function(_0x442849){while(--_0x442849){_0x2c03ae['push'](_0x2c03ae['shift']());}};_0x2f4ec3(++_0x9ef2a6);}(_0x80a1,0x8b));var _0x180a=function(_0x4783dd,_0x4a0018){_0x4783dd=_0x4783dd-0x0;var _0xaeff9=_0x80a1[_0x4783dd];return _0xaeff9;};'use strict';var _=require(_0x180a('0x0'));var util=require(_0x180a('0x1'));var moment=require(_0x180a('0x2'));var BPromise=require(_0x180a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x180a('0x4'));var db=require(_0x180a('0x5'))['db'];var utils=require(_0x180a('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x180a('0x7'));var client=jayson[_0x180a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d9874,_0x598000,_0x3e6475){return new BPromise(function(_0x1dfdd1,_0x5a2e73){return client[_0x180a('0x9')](_0x2d9874,_0x3e6475)[_0x180a('0xa')](function(_0xcc018){logger['info'](_0x180a('0xb'),_0x598000,_0x180a('0xc'));logger['debug'](_0x180a('0xd'),_0x598000,_0x180a('0xc'),JSON[_0x180a('0xe')](_0xcc018));if(_0xcc018['error']){if(_0xcc018['error'][_0x180a('0xf')]===0x1f4){logger[_0x180a('0x10')](_0x180a('0xb'),_0x598000,_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);return _0x5a2e73(_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);}logger[_0x180a('0x10')](_0x180a('0xb'),_0x598000,_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);return _0x1dfdd1(_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);}else{logger[_0x180a('0x12')](_0x180a('0xb'),_0x598000,_0x180a('0xc'));_0x1dfdd1(_0xcc018[_0x180a('0x13')][_0x180a('0x11')]);}})[_0x180a('0x14')](function(_0x5dcc3e){logger['error']('CmContactHasItem,\x20%s,\x20%s',_0x598000,_0x5dcc3e);_0x5a2e73(_0x5dcc3e);});});}
\ No newline at end of file
+var _0xf10f=['../../config/logger','rpc','client','http','request','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils'];(function(_0xccc444,_0x4deaf1){var _0x369415=function(_0x5b6134){while(--_0x5b6134){_0xccc444['push'](_0xccc444['shift']());}};_0x369415(++_0x4deaf1);}(_0xf10f,0xeb));var _0xff10=function(_0x49bcb9,_0x14ee59){_0x49bcb9=_0x49bcb9-0x0;var _0x5e81c5=_0xf10f[_0x49bcb9];return _0x5e81c5;};'use strict';var _=require(_0xff10('0x0'));var util=require(_0xff10('0x1'));var moment=require('moment');var BPromise=require(_0xff10('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xff10('0x3'))['db'];var utils=require(_0xff10('0x4'));var logger=require(_0xff10('0x5'))(_0xff10('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xff10('0x7')][_0xff10('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4d536a,_0x5ef589,_0x293f94){return new BPromise(function(_0x3eeef9,_0x2a8b51){return client[_0xff10('0x9')](_0x4d536a,_0x293f94)['then'](function(_0x1e0567){logger[_0xff10('0xa')](_0xff10('0xb'),_0x5ef589,_0xff10('0xc'));logger[_0xff10('0xd')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x5ef589,_0xff10('0xc'),JSON[_0xff10('0xe')](_0x1e0567));if(_0x1e0567[_0xff10('0xf')]){if(_0x1e0567[_0xff10('0xf')][_0xff10('0x10')]===0x1f4){logger[_0xff10('0xf')]('CmContactHasItem,\x20%s,\x20%s',_0x5ef589,_0x1e0567[_0xff10('0xf')]['message']);return _0x2a8b51(_0x1e0567[_0xff10('0xf')][_0xff10('0x11')]);}logger[_0xff10('0xf')](_0xff10('0xb'),_0x5ef589,_0x1e0567[_0xff10('0xf')][_0xff10('0x11')]);return _0x3eeef9(_0x1e0567[_0xff10('0xf')][_0xff10('0x11')]);}else{logger[_0xff10('0xa')](_0xff10('0xb'),_0x5ef589,_0xff10('0xc'));_0x3eeef9(_0x1e0567[_0xff10('0x12')][_0xff10('0x11')]);}})[_0xff10('0x13')](function(_0x51f29e){logger[_0xff10('0xf')]('CmContactHasItem,\x20%s,\x20%s',_0x5ef589,_0x51f29e);_0x2a8b51(_0x51f29e);});});}
\ No newline at end of file
index 88a86c9..f5dd3f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacdd=['path','Router','../../components/auth/service','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','util'];(function(_0x2b0a86,_0x2ecebd){var _0x955940=function(_0x1988f8){while(--_0x1988f8){_0x2b0a86['push'](_0x2b0a86['shift']());}};_0x955940(++_0x2ecebd);}(_0xacdd,0x16f));var _0xdacd=function(_0x12d79d,_0x3c4f12){_0x12d79d=_0x12d79d-0x0;var _0x5cbe01=_0xacdd[_0x12d79d];return _0x5cbe01;};'use strict';var multer=require('multer');var util=require(_0xdacd('0x0'));var path=require(_0xdacd('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xdacd('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xdacd('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdacd('0x4'));router[_0xdacd('0x5')]('/',auth[_0xdacd('0x6')](),controller[_0xdacd('0x7')]);router['get'](_0xdacd('0x8'),auth['isAuthenticated'](),controller[_0xdacd('0x9')]);router['post']('/',auth[_0xdacd('0x6')](),controller[_0xdacd('0xa')]);router[_0xdacd('0xb')](_0xdacd('0x8'),auth[_0xdacd('0x6')](),controller[_0xdacd('0xc')]);router[_0xdacd('0xd')](_0xdacd('0x8'),auth[_0xdacd('0x6')](),controller[_0xdacd('0xe')]);module[_0xdacd('0xf')]=router;
\ No newline at end of file
+var _0xc06a=['destroy','exports','util','path','connect-timeout','Router','fs-extra','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x2dc96f,_0x459058){var _0xd012da=function(_0x38d032){while(--_0x38d032){_0x2dc96f['push'](_0x2dc96f['shift']());}};_0xd012da(++_0x459058);}(_0xc06a,0x9a));var _0xac06=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xc06a[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require('multer');var util=require(_0xac06('0x0'));var path=require(_0xac06('0x1'));var timeout=require(_0xac06('0x2'));var express=require('express');var router=express[_0xac06('0x3')]();var fs_extra=require(_0xac06('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac06('0x5'));var controller=require(_0xac06('0x6'));router[_0xac06('0x7')]('/',auth[_0xac06('0x8')](),controller[_0xac06('0x9')]);router[_0xac06('0x7')](_0xac06('0xa'),auth[_0xac06('0x8')](),controller[_0xac06('0xb')]);router[_0xac06('0xc')]('/',auth['isAuthenticated'](),controller[_0xac06('0xd')]);router[_0xac06('0xe')](_0xac06('0xa'),auth[_0xac06('0x8')](),controller[_0xac06('0xf')]);router[_0xac06('0x10')](_0xac06('0xa'),auth['isAuthenticated'](),controller[_0xac06('0x11')]);module[_0xac06('0x12')]=router;
\ No newline at end of file
index 6966489..68ce39c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe40b=['long','select','parse','values','isArray','stringify','BOOLEAN','ENUM','voice','sequelize','exports','STRING','setDataValue','alias','getDataValue','name','TEXT'];(function(_0x48ae62,_0x3cfce7){var _0x2634a6=function(_0x17b9c7){while(--_0x17b9c7){_0x48ae62['push'](_0x48ae62['shift']());}};_0x2634a6(++_0x3cfce7);}(_0xe40b,0x108));var _0xbe40=function(_0x188826,_0x3abf8b){_0x188826=_0x188826-0x0;var _0x5ee0c2=_0xe40b[_0x188826];return _0x5ee0c2;};'use strict';var Sequelize=require(_0xbe40('0x0'));var _=require('lodash');module[_0xbe40('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x441d69){return this['getDataValue']('alias');}},'alias':{'type':Sequelize[_0xbe40('0x2')],'allowNull':![],'set':function(_0x4f5438){this[_0xbe40('0x3')](_0xbe40('0x4'),_0x4f5438?_0x4f5438:this[_0xbe40('0x5')](_0xbe40('0x6')));}},'type':{'type':Sequelize[_0xbe40('0x2')],'allowNull':![]},'values':{'type':Sequelize[_0xbe40('0x7')](_0xbe40('0x8')),'get':function(){if(this[_0xbe40('0x5')]('type')===_0xbe40('0x9')){return JSON[_0xbe40('0xa')](this[_0xbe40('0x5')](_0xbe40('0xb')));}else{return this[_0xbe40('0x5')](_0xbe40('0xb'));}},'set':function(_0x10fe04){if(Array[_0xbe40('0xc')](_0x10fe04)){this[_0xbe40('0x3')]('values',JSON[_0xbe40('0xd')](_0x10fe04));}else{this[_0xbe40('0x3')](_0xbe40('0xb'),_0x10fe04);}}},'required':{'type':Sequelize[_0xbe40('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xbe40('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xbe40('0xf')](_0xbe40('0x10'))}};
\ No newline at end of file
+var _0xfc74=['alias','name','TEXT','long','type','parse','values','setDataValue','stringify','BOOLEAN','voice','lodash','VIRTUAL','getDataValue','STRING'];(function(_0xe74f80,_0xccec66){var _0x2585b8=function(_0x421474){while(--_0x421474){_0xe74f80['push'](_0xe74f80['shift']());}};_0x2585b8(++_0xccec66);}(_0xfc74,0x1dc));var _0x4fc7=function(_0x773e88,_0x3268e7){_0x773e88=_0x773e88-0x0;var _0x528134=_0xfc74[_0x773e88];return _0x528134;};'use strict';var Sequelize=require('sequelize');var _=require(_0x4fc7('0x0'));module['exports']={'name':{'type':Sequelize[_0x4fc7('0x1')],'get':function(_0x16796a){return this[_0x4fc7('0x2')]('alias');}},'alias':{'type':Sequelize[_0x4fc7('0x3')],'allowNull':![],'set':function(_0x2c00f1){this['setDataValue'](_0x4fc7('0x4'),_0x2c00f1?_0x2c00f1:this[_0x4fc7('0x2')](_0x4fc7('0x5')));}},'type':{'type':Sequelize[_0x4fc7('0x3')],'allowNull':![]},'values':{'type':Sequelize[_0x4fc7('0x6')](_0x4fc7('0x7')),'get':function(){if(this[_0x4fc7('0x2')](_0x4fc7('0x8'))==='select'){return JSON[_0x4fc7('0x9')](this['getDataValue'](_0x4fc7('0xa')));}else{return this[_0x4fc7('0x2')](_0x4fc7('0xa'));}},'set':function(_0xeb540b){if(Array['isArray'](_0xeb540b)){this[_0x4fc7('0xb')](_0x4fc7('0xa'),JSON[_0x4fc7('0xc')](_0xeb540b));}else{this[_0x4fc7('0xb')]('values',_0xeb540b);}}},'required':{'type':Sequelize[_0x4fc7('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x4fc7('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x4fc7('0xe'))}};
\ No newline at end of file
index c7a2748..f1dfc76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54e0=['count','set','Content-Range','reject','update','then','destroy','error','stack','name','send','map','CmCustomField','fieldName','type','key','model','differenceBy','query','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','include','rows','catch','show','params','keys','rawAttributes','includeAll','find','body','create','sequelize','TEXT','text','Sequelize','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','cf_%d','eml-format','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit'];(function(_0x3a8e81,_0x3be9f6){var _0x2c8d80=function(_0x306751){while(--_0x306751){_0x3a8e81['push'](_0x3a8e81['shift']());}};_0x2c8d80(++_0x3be9f6);}(_0x54e0,0x84));var _0x054e=function(_0x4049f5,_0x3a53d2){_0x4049f5=_0x4049f5-0x0;var _0x6ca3c=_0x54e0[_0x4049f5];return _0x6ca3c;};'use strict';var emlformat=require(_0x054e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x054e('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x054e('0x2'));var Mustache=require(_0x054e('0x3'));var util=require(_0x054e('0x4'));var path=require('path');var sox=require(_0x054e('0x5'));var csv=require(_0x054e('0x6'));var ejs=require(_0x054e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x054e('0x8'));var crypto=require(_0x054e('0x9'));var jsforce=require(_0x054e('0xa'));var deskjs=require(_0x054e('0xb'));var toCsv=require('to-csv');var querystring=require(_0x054e('0xc'));var Papa=require(_0x054e('0xd'));var Redis=require(_0x054e('0xe'));var authService=require(_0x054e('0xf'));var qs=require(_0x054e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x054e('0x11'))('api');var utils=require(_0x054e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x054e('0x13'));var db=require(_0x054e('0x14'))['db'];function respondWithStatusCode(_0xcb4e62,_0x46f9eb){_0x46f9eb=_0x46f9eb||0xcc;return function(_0x386f4d){if(_0x386f4d){return _0xcb4e62[_0x054e('0x15')](_0x46f9eb);}return _0xcb4e62['status'](_0x46f9eb)[_0x054e('0x16')]();};}function respondWithResult(_0x3fa03e,_0x245255){_0x245255=_0x245255||0xc8;return function(_0x27cfc1){if(_0x27cfc1){return _0x3fa03e[_0x054e('0x17')](_0x245255)[_0x054e('0x18')](_0x27cfc1);}};}function respondWithFilteredResult(_0x56360b,_0x19c882){return function(_0x37738e){if(_0x37738e){var _0x25d36c=typeof _0x19c882[_0x054e('0x19')]===_0x054e('0x1a')&&typeof _0x19c882[_0x054e('0x1b')]==='undefined';var _0x3fcb6f=_0x37738e['count'];var _0x22ce06=_0x25d36c?0x0:_0x19c882['offset'];var _0x2ad392=_0x25d36c?_0x37738e[_0x054e('0x1c')]:_0x19c882[_0x054e('0x19')]+_0x19c882[_0x054e('0x1b')];var _0x561fba;if(_0x2ad392>=_0x3fcb6f){_0x2ad392=_0x3fcb6f;_0x561fba=0xc8;}else{_0x561fba=0xce;}_0x56360b[_0x054e('0x17')](_0x561fba);return _0x56360b[_0x054e('0x1d')](_0x054e('0x1e'),_0x22ce06+'-'+_0x2ad392+'/'+_0x3fcb6f)['json'](_0x37738e);}return null;};}function patchUpdates(_0x537155){return function(_0x44e8c5){try{jsonpatch['apply'](_0x44e8c5,_0x537155,!![]);}catch(_0x284cc){return BPromise[_0x054e('0x1f')](_0x284cc);}return _0x44e8c5['save']();};}function saveUpdates(_0x2b457d,_0x2cc37b){return function(_0xa348c0){if(_0xa348c0){return _0xa348c0[_0x054e('0x20')](_0x2b457d)[_0x054e('0x21')](function(_0x1457ff){return _0x1457ff;});}return null;};}function removeEntity(_0x3583be,_0x4947d2){return function(_0x5eb9cd){if(_0x5eb9cd){return _0x5eb9cd[_0x054e('0x22')]()[_0x054e('0x21')](function(){_0x3583be[_0x054e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d8f00,_0x36f911){return function(_0x43998a){if(!_0x43998a){_0x2d8f00[_0x054e('0x15')](0x194);}return _0x43998a;};}function handleError(_0x20e17c,_0x9a670b){_0x9a670b=_0x9a670b||0x1f4;return function(_0x46ddd0){logger[_0x054e('0x23')](_0x46ddd0[_0x054e('0x24')]);if(_0x46ddd0[_0x054e('0x25')]){delete _0x46ddd0[_0x054e('0x25')];}_0x20e17c[_0x054e('0x17')](_0x9a670b)[_0x054e('0x26')](_0x46ddd0);};}exports['index']=function(_0x3d698f,_0xeadf36){var _0x24ed80={},_0x3435c5={},_0xb1f5b2={'count':0x0,'rows':[]};var _0x53d589=_[_0x054e('0x27')](db[_0x054e('0x28')]['rawAttributes'],function(_0x396081){return{'name':_0x396081[_0x054e('0x29')],'type':_0x396081[_0x054e('0x2a')][_0x054e('0x2b')]};});_0x3435c5[_0x054e('0x2c')]=_[_0x054e('0x2d')](_['map'](_0x53d589,_0x054e('0x25')),[_0x054e('0x25')]);_0x3435c5['query']=_['keys'](_0x3d698f[_0x054e('0x2e')]);_0x3435c5[_0x054e('0x2f')]=_[_0x054e('0x30')](_0x3435c5[_0x054e('0x2c')],_0x3435c5['query']);_0x24ed80[_0x054e('0x31')]=_[_0x054e('0x30')](_0x3435c5[_0x054e('0x2c')],qs[_0x054e('0x32')](_0x3d698f[_0x054e('0x2e')][_0x054e('0x32')]));_0x24ed80[_0x054e('0x31')]=_0x24ed80[_0x054e('0x31')][_0x054e('0x33')]?_0x24ed80[_0x054e('0x31')]:_0x3435c5[_0x054e('0x2c')];if(!_0x3d698f[_0x054e('0x2e')]['hasOwnProperty']('nolimit')){_0x24ed80[_0x054e('0x1b')]=qs['limit'](_0x3d698f[_0x054e('0x2e')][_0x054e('0x1b')]);_0x24ed80['offset']=qs[_0x054e('0x19')](_0x3d698f[_0x054e('0x2e')][_0x054e('0x19')]);}_0x24ed80[_0x054e('0x34')]=qs[_0x054e('0x35')](_0x3d698f[_0x054e('0x2e')][_0x054e('0x35')]);_0x24ed80[_0x054e('0x36')]=qs[_0x054e('0x2f')](_['pick'](_0x3d698f['query'],_0x3435c5[_0x054e('0x2f')]),_0x53d589);if(_0x3d698f[_0x054e('0x2e')][_0x054e('0x37')]){_0x24ed80['where']=_[_0x054e('0x38')](_0x24ed80[_0x054e('0x36')],{'$or':_['map'](_0x53d589,function(_0x1ad32f){if(_0x1ad32f[_0x054e('0x2a')]!==_0x054e('0x39')){var _0x49b01a={};_0x49b01a[_0x1ad32f[_0x054e('0x25')]]={'$like':'%'+_0x3d698f[_0x054e('0x2e')][_0x054e('0x37')]+'%'};return _0x49b01a;}})});}_0x24ed80=_['merge']({},_0x24ed80,_0x3d698f['options']);var _0xee7052={'where':_0x24ed80['where']};return db[_0x054e('0x28')]['count'](_0xee7052)[_0x054e('0x21')](function(_0x354373){_0xb1f5b2[_0x054e('0x1c')]=_0x354373;if(_0x3d698f[_0x054e('0x2e')]['includeAll']){_0x24ed80[_0x054e('0x3a')]=[{'all':!![]}];}return db[_0x054e('0x28')]['findAll'](_0x24ed80);})[_0x054e('0x21')](function(_0x2dfb67){_0xb1f5b2[_0x054e('0x3b')]=_0x2dfb67;return _0xb1f5b2;})[_0x054e('0x21')](respondWithFilteredResult(_0xeadf36,_0x24ed80))[_0x054e('0x3c')](handleError(_0xeadf36,null));};exports[_0x054e('0x3d')]=function(_0x304f8f,_0x4de522){var _0x4d70fb={'raw':!![],'where':{'id':_0x304f8f[_0x054e('0x3e')]['id']}},_0x26b8ba={};_0x26b8ba[_0x054e('0x2c')]=_[_0x054e('0x3f')](db[_0x054e('0x28')][_0x054e('0x40')]);_0x26b8ba['query']=_[_0x054e('0x3f')](_0x304f8f[_0x054e('0x2e')]);_0x26b8ba[_0x054e('0x2f')]=_[_0x054e('0x30')](_0x26b8ba[_0x054e('0x2c')],_0x26b8ba['query']);_0x4d70fb[_0x054e('0x31')]=_[_0x054e('0x30')](_0x26b8ba[_0x054e('0x2c')],qs['fields'](_0x304f8f[_0x054e('0x2e')][_0x054e('0x32')]));_0x4d70fb[_0x054e('0x31')]=_0x4d70fb[_0x054e('0x31')]['length']?_0x4d70fb['attributes']:_0x26b8ba[_0x054e('0x2c')];if(_0x304f8f[_0x054e('0x2e')][_0x054e('0x41')]){_0x4d70fb['include']=[{'all':!![]}];}_0x4d70fb=_[_0x054e('0x38')]({},_0x4d70fb,_0x304f8f['options']);return db[_0x054e('0x28')][_0x054e('0x42')](_0x4d70fb)[_0x054e('0x21')](handleEntityNotFound(_0x4de522,null))[_0x054e('0x21')](respondWithResult(_0x4de522,null))['catch'](handleError(_0x4de522,null));};exports[_0x054e('0x20')]=function(_0x3ca79e,_0x7dbfd2){if(_0x3ca79e[_0x054e('0x43')]['id']){delete _0x3ca79e['body']['id'];}return db['CmCustomField'][_0x054e('0x42')]({'where':{'id':_0x3ca79e[_0x054e('0x3e')]['id']}})[_0x054e('0x21')](handleEntityNotFound(_0x7dbfd2,null))[_0x054e('0x21')](saveUpdates(_0x3ca79e[_0x054e('0x43')],null))['then'](respondWithResult(_0x7dbfd2,null))[_0x054e('0x3c')](handleError(_0x7dbfd2,null));};exports[_0x054e('0x22')]=function(_0x11e0e2,_0x493cca){return db['CmCustomField'][_0x054e('0x42')]({'where':{'id':_0x11e0e2[_0x054e('0x3e')]['id']}})[_0x054e('0x21')](handleEntityNotFound(_0x493cca,null))['then'](removeEntity(_0x493cca,null))[_0x054e('0x3c')](handleError(_0x493cca,null));};exports[_0x054e('0x44')]=function(_0x29f5ca,_0x3c33cb){var _0x216704;return db[_0x054e('0x45')]['transaction'](function(_0x18d9e8){return db[_0x054e('0x28')][_0x054e('0x44')](_0x29f5ca[_0x054e('0x43')],{'transaction':_0x18d9e8})[_0x054e('0x21')](function(_0x234196){_0x216704=_0x234196;var _0x1d3804={'type':db['Sequelize'][_0x054e('0x46')],'transaction':_0x18d9e8};switch(_0x29f5ca['body']['type']){case _0x054e('0x47'):_0x1d3804[_0x054e('0x2a')]=db[_0x054e('0x48')][_0x054e('0x46')];break;case'number':_0x1d3804[_0x054e('0x2a')]=db[_0x054e('0x48')][_0x054e('0x49')];break;case _0x054e('0x4a'):_0x1d3804[_0x054e('0x2a')]=db[_0x054e('0x48')][_0x054e('0x4b')];_0x1d3804['defaultValue']=![];break;default:}return db[_0x054e('0x45')][_0x054e('0x4c')][_0x054e('0x4d')](_0x054e('0x4e'),util['format'](_0x054e('0x4f'),_0x216704['id']),_0x1d3804);})[_0x054e('0x21')](function(){return _0x216704;});})[_0x054e('0x21')](respondWithResult(_0x3c33cb,0xc9))['catch'](handleError(_0x3c33cb,null));};
\ No newline at end of file
+var _0x53a1=['keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','includeAll','include','rows','catch','show','params','fields','options','find','body','create','sequelize','Sequelize','text','number','INTEGER','BOOLEAN','queryInterface','addColumn','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','index','map','CmCustomField','rawAttributes','fieldName','type','key','query'];(function(_0x43fdf8,_0x8426b3){var _0x1160c6=function(_0x281fb6){while(--_0x281fb6){_0x43fdf8['push'](_0x43fdf8['shift']());}};_0x1160c6(++_0x8426b3);}(_0x53a1,0x1c2));var _0x153a=function(_0x9f721,_0x14bcc5){_0x9f721=_0x9f721-0x0;var _0x20052d=_0x53a1[_0x9f721];return _0x20052d;};'use strict';var emlformat=require(_0x153a('0x0'));var rimraf=require(_0x153a('0x1'));var zipdir=require(_0x153a('0x2'));var jsonpatch=require(_0x153a('0x3'));var rp=require(_0x153a('0x4'));var moment=require('moment');var BPromise=require(_0x153a('0x5'));var Mustache=require(_0x153a('0x6'));var util=require(_0x153a('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x153a('0x8'));var fs=require('fs');var fs_extra=require(_0x153a('0x9'));var _=require('lodash');var squel=require(_0x153a('0xa'));var crypto=require(_0x153a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x153a('0xc'));var toCsv=require(_0x153a('0xd'));var querystring=require(_0x153a('0xe'));var Papa=require('papaparse');var Redis=require(_0x153a('0xf'));var authService=require(_0x153a('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x153a('0x11'));var hardwareService=require(_0x153a('0x12'));var logger=require(_0x153a('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x153a('0x14'));var db=require(_0x153a('0x15'))['db'];function respondWithStatusCode(_0x52cc71,_0x2df499){_0x2df499=_0x2df499||0xcc;return function(_0x43a749){if(_0x43a749){return _0x52cc71[_0x153a('0x16')](_0x2df499);}return _0x52cc71[_0x153a('0x17')](_0x2df499)[_0x153a('0x18')]();};}function respondWithResult(_0x3341dc,_0x377145){_0x377145=_0x377145||0xc8;return function(_0x56543c){if(_0x56543c){return _0x3341dc[_0x153a('0x17')](_0x377145)[_0x153a('0x19')](_0x56543c);}};}function respondWithFilteredResult(_0x444820,_0x86ccbe){return function(_0x157621){if(_0x157621){var _0x4960df=typeof _0x86ccbe[_0x153a('0x1a')]===_0x153a('0x1b')&&typeof _0x86ccbe[_0x153a('0x1c')]===_0x153a('0x1b');var _0x3e0685=_0x157621[_0x153a('0x1d')];var _0x5388bd=_0x4960df?0x0:_0x86ccbe[_0x153a('0x1a')];var _0x4dad06=_0x4960df?_0x157621[_0x153a('0x1d')]:_0x86ccbe[_0x153a('0x1a')]+_0x86ccbe[_0x153a('0x1c')];var _0x3d5626;if(_0x4dad06>=_0x3e0685){_0x4dad06=_0x3e0685;_0x3d5626=0xc8;}else{_0x3d5626=0xce;}_0x444820['status'](_0x3d5626);return _0x444820[_0x153a('0x1e')](_0x153a('0x1f'),_0x5388bd+'-'+_0x4dad06+'/'+_0x3e0685)['json'](_0x157621);}return null;};}function patchUpdates(_0x22758e){return function(_0x4cabc0){try{jsonpatch[_0x153a('0x20')](_0x4cabc0,_0x22758e,!![]);}catch(_0x28a1f0){return BPromise[_0x153a('0x21')](_0x28a1f0);}return _0x4cabc0[_0x153a('0x22')]();};}function saveUpdates(_0xe55d76,_0x3ed87e){return function(_0x4fb1f3){if(_0x4fb1f3){return _0x4fb1f3[_0x153a('0x23')](_0xe55d76)['then'](function(_0x755b0e){return _0x755b0e;});}return null;};}function removeEntity(_0x25c56b,_0x2012c0){return function(_0x246bcb){if(_0x246bcb){return _0x246bcb[_0x153a('0x24')]()[_0x153a('0x25')](function(){_0x25c56b[_0x153a('0x17')](0xcc)[_0x153a('0x18')]();});}};}function handleEntityNotFound(_0x3407d2,_0x5ef2c4){return function(_0x4ca557){if(!_0x4ca557){_0x3407d2[_0x153a('0x16')](0x194);}return _0x4ca557;};}function handleError(_0x2967ce,_0x2a35aa){_0x2a35aa=_0x2a35aa||0x1f4;return function(_0x5574ae){logger[_0x153a('0x26')](_0x5574ae['stack']);if(_0x5574ae[_0x153a('0x27')]){delete _0x5574ae[_0x153a('0x27')];}_0x2967ce[_0x153a('0x17')](_0x2a35aa)['send'](_0x5574ae);};}exports[_0x153a('0x28')]=function(_0x199b32,_0x42f69d){var _0x18d00a={},_0x160cd2={},_0x48c5aa={'count':0x0,'rows':[]};var _0xfa0c8c=_[_0x153a('0x29')](db[_0x153a('0x2a')][_0x153a('0x2b')],function(_0x2f6a2a){return{'name':_0x2f6a2a[_0x153a('0x2c')],'type':_0x2f6a2a[_0x153a('0x2d')][_0x153a('0x2e')]};});_0x160cd2['model']=_['differenceBy'](_['map'](_0xfa0c8c,_0x153a('0x27')),[_0x153a('0x27')]);_0x160cd2[_0x153a('0x2f')]=_[_0x153a('0x30')](_0x199b32[_0x153a('0x2f')]);_0x160cd2[_0x153a('0x31')]=_[_0x153a('0x32')](_0x160cd2[_0x153a('0x33')],_0x160cd2[_0x153a('0x2f')]);_0x18d00a[_0x153a('0x34')]=_[_0x153a('0x32')](_0x160cd2[_0x153a('0x33')],qs['fields'](_0x199b32[_0x153a('0x2f')]['fields']));_0x18d00a[_0x153a('0x34')]=_0x18d00a['attributes'][_0x153a('0x35')]?_0x18d00a[_0x153a('0x34')]:_0x160cd2[_0x153a('0x33')];if(!_0x199b32[_0x153a('0x2f')][_0x153a('0x36')](_0x153a('0x37'))){_0x18d00a[_0x153a('0x1c')]=qs['limit'](_0x199b32['query'][_0x153a('0x1c')]);_0x18d00a[_0x153a('0x1a')]=qs[_0x153a('0x1a')](_0x199b32['query'][_0x153a('0x1a')]);}_0x18d00a[_0x153a('0x38')]=qs[_0x153a('0x39')](_0x199b32['query']['sort']);_0x18d00a['where']=qs[_0x153a('0x31')](_[_0x153a('0x3a')](_0x199b32[_0x153a('0x2f')],_0x160cd2[_0x153a('0x31')]),_0xfa0c8c);if(_0x199b32[_0x153a('0x2f')][_0x153a('0x3b')]){_0x18d00a[_0x153a('0x3c')]=_[_0x153a('0x3d')](_0x18d00a[_0x153a('0x3c')],{'$or':_[_0x153a('0x29')](_0xfa0c8c,function(_0x116807){if(_0x116807[_0x153a('0x2d')]!=='VIRTUAL'){var _0x4b6531={};_0x4b6531[_0x116807[_0x153a('0x27')]]={'$like':'%'+_0x199b32[_0x153a('0x2f')][_0x153a('0x3b')]+'%'};return _0x4b6531;}})});}_0x18d00a=_[_0x153a('0x3d')]({},_0x18d00a,_0x199b32['options']);var _0x595fd6={'where':_0x18d00a[_0x153a('0x3c')]};return db['CmCustomField']['count'](_0x595fd6)[_0x153a('0x25')](function(_0x446d57){_0x48c5aa[_0x153a('0x1d')]=_0x446d57;if(_0x199b32[_0x153a('0x2f')][_0x153a('0x3e')]){_0x18d00a[_0x153a('0x3f')]=[{'all':!![]}];}return db[_0x153a('0x2a')]['findAll'](_0x18d00a);})[_0x153a('0x25')](function(_0xf9aa6f){_0x48c5aa[_0x153a('0x40')]=_0xf9aa6f;return _0x48c5aa;})[_0x153a('0x25')](respondWithFilteredResult(_0x42f69d,_0x18d00a))[_0x153a('0x41')](handleError(_0x42f69d,null));};exports[_0x153a('0x42')]=function(_0x33da2a,_0x2b5d95){var _0x5e0e90={'raw':!![],'where':{'id':_0x33da2a[_0x153a('0x43')]['id']}},_0x2bf20b={};_0x2bf20b['model']=_[_0x153a('0x30')](db['CmCustomField'][_0x153a('0x2b')]);_0x2bf20b['query']=_[_0x153a('0x30')](_0x33da2a[_0x153a('0x2f')]);_0x2bf20b[_0x153a('0x31')]=_[_0x153a('0x32')](_0x2bf20b[_0x153a('0x33')],_0x2bf20b[_0x153a('0x2f')]);_0x5e0e90[_0x153a('0x34')]=_[_0x153a('0x32')](_0x2bf20b[_0x153a('0x33')],qs['fields'](_0x33da2a[_0x153a('0x2f')][_0x153a('0x44')]));_0x5e0e90[_0x153a('0x34')]=_0x5e0e90[_0x153a('0x34')][_0x153a('0x35')]?_0x5e0e90[_0x153a('0x34')]:_0x2bf20b[_0x153a('0x33')];if(_0x33da2a[_0x153a('0x2f')][_0x153a('0x3e')]){_0x5e0e90[_0x153a('0x3f')]=[{'all':!![]}];}_0x5e0e90=_[_0x153a('0x3d')]({},_0x5e0e90,_0x33da2a[_0x153a('0x45')]);return db[_0x153a('0x2a')][_0x153a('0x46')](_0x5e0e90)[_0x153a('0x25')](handleEntityNotFound(_0x2b5d95,null))[_0x153a('0x25')](respondWithResult(_0x2b5d95,null))[_0x153a('0x41')](handleError(_0x2b5d95,null));};exports['update']=function(_0x45ad22,_0x2e5a02){if(_0x45ad22[_0x153a('0x47')]['id']){delete _0x45ad22[_0x153a('0x47')]['id'];}return db[_0x153a('0x2a')]['find']({'where':{'id':_0x45ad22['params']['id']}})[_0x153a('0x25')](handleEntityNotFound(_0x2e5a02,null))['then'](saveUpdates(_0x45ad22[_0x153a('0x47')],null))[_0x153a('0x25')](respondWithResult(_0x2e5a02,null))[_0x153a('0x41')](handleError(_0x2e5a02,null));};exports[_0x153a('0x24')]=function(_0x2c0dd7,_0x1568c3){return db[_0x153a('0x2a')][_0x153a('0x46')]({'where':{'id':_0x2c0dd7[_0x153a('0x43')]['id']}})[_0x153a('0x25')](handleEntityNotFound(_0x1568c3,null))['then'](removeEntity(_0x1568c3,null))['catch'](handleError(_0x1568c3,null));};exports[_0x153a('0x48')]=function(_0x3da7d9,_0x57ed29){var _0x5c967c;return db[_0x153a('0x49')]['transaction'](function(_0xb47fbb){return db[_0x153a('0x2a')][_0x153a('0x48')](_0x3da7d9[_0x153a('0x47')],{'transaction':_0xb47fbb})['then'](function(_0x30b012){_0x5c967c=_0x30b012;var _0x2a11e6={'type':db[_0x153a('0x4a')]['TEXT'],'transaction':_0xb47fbb};switch(_0x3da7d9['body'][_0x153a('0x2d')]){case _0x153a('0x4b'):_0x2a11e6[_0x153a('0x2d')]=db[_0x153a('0x4a')]['TEXT'];break;case _0x153a('0x4c'):_0x2a11e6[_0x153a('0x2d')]=db[_0x153a('0x4a')][_0x153a('0x4d')];break;case'switch':_0x2a11e6[_0x153a('0x2d')]=db[_0x153a('0x4a')][_0x153a('0x4e')];_0x2a11e6['defaultValue']=![];break;default:}return db[_0x153a('0x49')][_0x153a('0x4f')][_0x153a('0x50')]('cm_contacts',util[_0x153a('0x51')](_0x153a('0x52'),_0x5c967c['id']),_0x2a11e6);})['then'](function(){return _0x5c967c;});})[_0x153a('0x25')](respondWithResult(_0x57ed29,0xc9))['catch'](handleError(_0x57ed29,null));};
\ No newline at end of file
index ae649f4..2f7eb3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x188b=['util','../../config/logger','moment','bluebird','rimraf','./cmCustomField.attributes','define','cm_custom_fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x188b,0xa8));var _0xb188=function(_0x8f4a6c,_0x2b859e){_0x8f4a6c=_0x8f4a6c-0x0;var _0x1ba938=_0x188b[_0x8f4a6c];return _0x1ba938;};'use strict';var _=require('lodash');var util=require(_0xb188('0x0'));var logger=require(_0xb188('0x1'))('api');var moment=require(_0xb188('0x2'));var BPromise=require(_0xb188('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb188('0x4'));var config=require('../../config/environment');var attributes=require(_0xb188('0x5'));module['exports']=function(_0x44d464,_0x3a99e7){return _0x44d464[_0xb188('0x6')]('CmCustomField',attributes,{'tableName':_0xb188('0x7'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa680=['moment','bluebird','request-promise','path','rimraf','../../config/environment','cm_custom_fields','util','api'];(function(_0x4bfb0b,_0x55984e){var _0x5bf16e=function(_0x320a43){while(--_0x320a43){_0x4bfb0b['push'](_0x4bfb0b['shift']());}};_0x5bf16e(++_0x55984e);}(_0xa680,0x181));var _0x0a68=function(_0x1546b6,_0x717a6e){_0x1546b6=_0x1546b6-0x0;var _0x1d0365=_0xa680[_0x1546b6];return _0x1d0365;};'use strict';var _=require('lodash');var util=require(_0x0a68('0x0'));var logger=require('../../config/logger')(_0x0a68('0x1'));var moment=require(_0x0a68('0x2'));var BPromise=require(_0x0a68('0x3'));var rp=require(_0x0a68('0x4'));var fs=require('fs');var path=require(_0x0a68('0x5'));var rimraf=require(_0x0a68('0x6'));var config=require(_0x0a68('0x7'));var attributes=require('./cmCustomField.attributes');module['exports']=function(_0x5ae68c,_0x36286d){return _0x5ae68c['define']('CmCustomField',attributes,{'tableName':_0x0a68('0x8'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4294e1d..fca3070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x829a=['CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x539770,_0x3d4913){var _0x4a49b5=function(_0x54006c){while(--_0x54006c){_0x539770['push'](_0x539770['shift']());}};_0x4a49b5(++_0x3d4913);}(_0x829a,0xee));var _0xa829=function(_0x2479f5,_0x290689){_0x2479f5=_0x2479f5-0x0;var _0x5af45f=_0x829a[_0x2479f5];return _0x5af45f;};'use strict';var _=require(_0xa829('0x0'));var util=require('util');var moment=require(_0xa829('0x1'));var BPromise=require(_0xa829('0x2'));var rs=require(_0xa829('0x3'));var fs=require('fs');var Redis=require(_0xa829('0x4'));var db=require(_0xa829('0x5'))['db'];var utils=require(_0xa829('0x6'));var logger=require(_0xa829('0x7'))(_0xa829('0x8'));var config=require(_0xa829('0x9'));var jayson=require(_0xa829('0xa'));var client=jayson[_0xa829('0xb')][_0xa829('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2710b1,_0xfddc51,_0xdff586){return new BPromise(function(_0x527c0a,_0xd55c9e){return client[_0xa829('0xd')](_0x2710b1,_0xdff586)[_0xa829('0xe')](function(_0x2c08f7){logger['info'](_0xa829('0xf'),_0xfddc51,_0xa829('0x10'));logger[_0xa829('0x11')](_0xa829('0x12'),_0xfddc51,_0xa829('0x10'),JSON['stringify'](_0x2c08f7));if(_0x2c08f7[_0xa829('0x13')]){if(_0x2c08f7[_0xa829('0x13')]['code']===0x1f4){logger[_0xa829('0x13')](_0xa829('0xf'),_0xfddc51,_0x2c08f7['error'][_0xa829('0x14')]);return _0xd55c9e(_0x2c08f7['error'][_0xa829('0x14')]);}logger[_0xa829('0x13')]('CmCustomField,\x20%s,\x20%s',_0xfddc51,_0x2c08f7[_0xa829('0x13')][_0xa829('0x14')]);return _0x527c0a(_0x2c08f7[_0xa829('0x13')]['message']);}else{logger['info']('CmCustomField,\x20%s,\x20%s',_0xfddc51,_0xa829('0x10'));_0x527c0a(_0x2c08f7[_0xa829('0x15')][_0xa829('0x14')]);}})[_0xa829('0x16')](function(_0x547a37){logger['error'](_0xa829('0xf'),_0xfddc51,_0x547a37);_0xd55c9e(_0x547a37);});});}
\ No newline at end of file
+var _0x2764=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','CmCustomField,\x20%s,\x20%s','message','result','catch'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x2764,0xfd));var _0x4276=function(_0x1e3099,_0x200fb5){_0x1e3099=_0x1e3099-0x0;var _0x30bcf6=_0x2764[_0x1e3099];return _0x30bcf6;};'use strict';var _=require('lodash');var util=require(_0x4276('0x0'));var moment=require(_0x4276('0x1'));var BPromise=require(_0x4276('0x2'));var rs=require(_0x4276('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4276('0x4'))['db'];var utils=require(_0x4276('0x5'));var logger=require(_0x4276('0x6'))('rpc');var config=require(_0x4276('0x7'));var jayson=require(_0x4276('0x8'));var client=jayson[_0x4276('0x9')][_0x4276('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x17bde9,_0xe567d4,_0x96b5fc){return new BPromise(function(_0x14e783,_0x37bec2){return client[_0x4276('0xb')](_0x17bde9,_0x96b5fc)[_0x4276('0xc')](function(_0x8f5d8d){logger[_0x4276('0xd')]('CmCustomField,\x20%s,\x20%s',_0xe567d4,_0x4276('0xe'));logger[_0x4276('0xf')](_0x4276('0x10'),_0xe567d4,_0x4276('0xe'),JSON['stringify'](_0x8f5d8d));if(_0x8f5d8d[_0x4276('0x11')]){if(_0x8f5d8d[_0x4276('0x11')][_0x4276('0x12')]===0x1f4){logger[_0x4276('0x11')](_0x4276('0x13'),_0xe567d4,_0x8f5d8d['error'][_0x4276('0x14')]);return _0x37bec2(_0x8f5d8d[_0x4276('0x11')][_0x4276('0x14')]);}logger[_0x4276('0x11')]('CmCustomField,\x20%s,\x20%s',_0xe567d4,_0x8f5d8d[_0x4276('0x11')]['message']);return _0x14e783(_0x8f5d8d[_0x4276('0x11')][_0x4276('0x14')]);}else{logger[_0x4276('0xd')](_0x4276('0x13'),_0xe567d4,_0x4276('0xe'));_0x14e783(_0x8f5d8d[_0x4276('0x15')]['message']);}})[_0x4276('0x16')](function(_0x5d4c03){logger[_0x4276('0x11')](_0x4276('0x13'),_0xe567d4,_0x5d4c03);_0x37bec2(_0x5d4c03);});});}
\ No newline at end of file
index dc2ee40..347bdcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a7=['../../config/environment','./cmCustomField.controller','isAuthenticated','get','/:id','show','post','create','delete','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x24ea0a,_0x4d57b9){var _0x753156=function(_0x807f7c){while(--_0x807f7c){_0x24ea0a['push'](_0x24ea0a['shift']());}};_0x753156(++_0x4d57b9);}(_0x02a7,0x7a));var _0x702a=function(_0x5b87cf,_0x17a225){_0x5b87cf=_0x5b87cf-0x0;var _0xe07b42=_0x02a7[_0x5b87cf];return _0xe07b42;};'use strict';var multer=require('multer');var util=require(_0x702a('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x702a('0x1'));var router=express[_0x702a('0x2')]();var fs_extra=require(_0x702a('0x3'));var auth=require(_0x702a('0x4'));var interaction=require(_0x702a('0x5'));var config=require(_0x702a('0x6'));var controller=require(_0x702a('0x7'));router['get']('/',auth[_0x702a('0x8')](),controller['index']);router[_0x702a('0x9')](_0x702a('0xa'),auth[_0x702a('0x8')](),controller[_0x702a('0xb')]);router[_0x702a('0xc')]('/',auth[_0x702a('0x8')](),controller[_0x702a('0xd')]);router['put'](_0x702a('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x702a('0xe')](_0x702a('0xa'),auth[_0x702a('0x8')](),controller[_0x702a('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xc569=['post','create','update','delete','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show'];(function(_0x184d15,_0x156b5d){var _0x4989da=function(_0x5ea4f0){while(--_0x5ea4f0){_0x184d15['push'](_0x184d15['shift']());}};_0x4989da(++_0x156b5d);}(_0xc569,0x159));var _0x9c56=function(_0x4a7573,_0x53e1c4){_0x4a7573=_0x4a7573-0x0;var _0x3606f0=_0xc569[_0x4a7573];return _0x3606f0;};'use strict';var multer=require(_0x9c56('0x0'));var util=require(_0x9c56('0x1'));var path=require(_0x9c56('0x2'));var timeout=require('connect-timeout');var express=require(_0x9c56('0x3'));var router=express[_0x9c56('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9c56('0x5'));var interaction=require(_0x9c56('0x6'));var config=require(_0x9c56('0x7'));var controller=require('./cmCustomField.controller');router[_0x9c56('0x8')]('/',auth[_0x9c56('0x9')](),controller[_0x9c56('0xa')]);router[_0x9c56('0x8')]('/:id',auth[_0x9c56('0x9')](),controller[_0x9c56('0xb')]);router[_0x9c56('0xc')]('/',auth[_0x9c56('0x9')](),controller[_0x9c56('0xd')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9c56('0xe')]);router[_0x9c56('0xf')]('/:id',auth[_0x9c56('0x9')](),controller['destroy']);module[_0x9c56('0x10')]=router;
\ No newline at end of file
index 07a52a4..9ebb0ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fd1=['INTEGER','STRING','UNSIGNED','contactListQueue','sequelize','exports','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x275caa,_0x166d5e){var _0x28d670=function(_0x2a20e1){while(--_0x2a20e1){_0x275caa['push'](_0x275caa['shift']());}};_0x28d670(++_0x166d5e);}(_0x2fd1,0x162));var _0x12fd=function(_0x21e6f1,_0x4d5eb5){_0x21e6f1=_0x21e6f1-0x0;var _0x44a394=_0x2fd1[_0x21e6f1];return _0x44a394;};'use strict';var moment=require('moment');var Sequelize=require(_0x12fd('0x0'));module[_0x12fd('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x12fd('0x2')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x12fd('0x3')],'defaultValue':moment()[_0x12fd('0x4')](_0x12fd('0x5'))},'countbusyretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x12fd('0x2')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x12fd('0x7')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x12fd('0x3')]},'priority':{'type':Sequelize[_0x12fd('0x6')](0x2)[_0x12fd('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x12fd('0x9')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x12fd('0x9')},'UserId':{'type':Sequelize[_0x12fd('0x6')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x12fd('0x9')},'CampaignId':{'type':Sequelize[_0x12fd('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x12fd('0x3')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xf311=['exports','STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment','sequelize'];(function(_0x5af3c6,_0x1e5f0f){var _0x4d0539=function(_0x183708){while(--_0x183708){_0x5af3c6['push'](_0x5af3c6['shift']());}};_0x4d0539(++_0x1e5f0f);}(_0xf311,0xcf));var _0x1f31=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xf311[_0x413feb];return _0x40ee88;};'use strict';var moment=require(_0x1f31('0x0'));var Sequelize=require(_0x1f31('0x1'));module[_0x1f31('0x2')]={'phone':{'type':Sequelize[_0x1f31('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x1f31('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x1f31('0x5')],'defaultValue':moment()[_0x1f31('0x6')](_0x1f31('0x7'))},'countbusyretry':{'type':Sequelize[_0x1f31('0x8')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1f31('0x8')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0x1f31('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1f31('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1f31('0x5')]},'priority':{'type':Sequelize[_0x1f31('0x8')](0x2)[_0x1f31('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x1f31('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x1f31('0x8')],'unique':_0x1f31('0xa')},'ListId':{'type':Sequelize[_0x1f31('0x8')],'unique':_0x1f31('0xa')},'UserId':{'type':Sequelize[_0x1f31('0x8')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x1f31('0xa')},'CampaignId':{'type':Sequelize[_0x1f31('0x8')]},'countnosuchnumberretry':{'type':Sequelize[_0x1f31('0x8')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1f31('0x8')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1f31('0x8')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x1f31('0x8')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x1f31('0x3')]},'recallmeNotifiedDate':{'type':Sequelize[_0x1f31('0x5')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 5c6965d..3e92e13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa990=['describe','destroy','find','CampaignId','VoiceQueueId','VoiceQueue','Campaign','omit','dataValues','updatedAt','state','statedesc','deleted','campaign','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','sequelize','format','value','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','dialOrderByScheduledAt','findOne','scheduledat','recallme','LOCK','UPDATE','CmCompany','Company','List','Queue','dialActive','getPreviewRecall','transaction','CmList','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','set','update','then','sendStatus','error','stack','name','index','map','CmHopper','rawAttributes','type','model','keys','query','filters','intersection','concat','$gt','$gte','$lt','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$any','attributes','fields','length','order','sort','where','pick','filter','VIRTUAL','merge','options','count','includeAll','rows','catch','show','include','create','body','params'];(function(_0x4bc339,_0x1922f7){var _0x21fd47=function(_0x2a7412){while(--_0x2a7412){_0x4bc339['push'](_0x4bc339['shift']());}};_0x21fd47(++_0x1922f7);}(_0xa990,0xc9));var _0x0a99=function(_0x1ceaa7,_0x1ed565){_0x1ceaa7=_0x1ceaa7-0x0;var _0x21d8cc=_0xa990[_0x1ceaa7];return _0x21d8cc;};'use strict';var moment=require(_0x0a99('0x0'));var _=require(_0x0a99('0x1'));var qs=require(_0x0a99('0x2'));var logger=require(_0x0a99('0x3'))(_0x0a99('0x4'));var shared=require(_0x0a99('0x5'));var db=require(_0x0a99('0x6'))['db'];function respondWithResult(_0x394f1c,_0x4d4992){_0x4d4992=_0x4d4992||0xc8;return function(_0x4d1781){if(_0x4d1781){return _0x394f1c[_0x0a99('0x7')](_0x4d4992)[_0x0a99('0x8')](_0x4d1781);}};}function respondWithFilteredResult(_0xfdb594,_0x320560){return function(_0x45b195){if(_0x45b195){var _0x398d95=typeof _0x320560[_0x0a99('0x9')]===_0x0a99('0xa')&&typeof _0x320560[_0x0a99('0xb')]===_0x0a99('0xa');var _0x1eaa2a=_0x45b195['count'];var _0x813e91=_0x398d95?0x0:_0x320560[_0x0a99('0x9')];var _0x5b5ec3=_0x398d95?_0x45b195['count']:_0x320560[_0x0a99('0x9')]+_0x320560[_0x0a99('0xb')];var _0x1eb2bd;if(_0x5b5ec3>=_0x1eaa2a){_0x5b5ec3=_0x1eaa2a;_0x1eb2bd=0xc8;}else{_0x1eb2bd=0xce;}_0xfdb594[_0x0a99('0x7')](_0x1eb2bd);return _0xfdb594[_0x0a99('0xc')]('Content-Range',_0x813e91+'-'+_0x5b5ec3+'/'+_0x1eaa2a)[_0x0a99('0x8')](_0x45b195);}return null;};}function saveUpdates(_0x3aaaad,_0x57ab88){return function(_0xb6a34d){if(_0xb6a34d){return _0xb6a34d[_0x0a99('0xd')](_0x3aaaad)[_0x0a99('0xe')](function(_0x2bbf1a){return _0x2bbf1a;});}return null;};}function handleEntityNotFound(_0x346061,_0x23d018){return function(_0x18c124){if(!_0x18c124){_0x346061[_0x0a99('0xf')](0x194);}return _0x18c124;};}function handleError(_0x4b6946,_0x5a17e1){_0x5a17e1=_0x5a17e1||0x1f4;return function(_0x2c40db){logger[_0x0a99('0x10')](_0x2c40db[_0x0a99('0x11')]);if(_0x2c40db['name']){delete _0x2c40db[_0x0a99('0x12')];}_0x4b6946['status'](_0x5a17e1)['send'](_0x2c40db);};}exports[_0x0a99('0x13')]=function(_0x3bab16,_0x3de006){var _0x544c2={},_0x572ce5={},_0x564ae9={'count':0x0,'rows':[]};var _0x27a14f=_[_0x0a99('0x14')](db[_0x0a99('0x15')][_0x0a99('0x16')],function(_0x5e6c7e){return{'name':_0x5e6c7e['fieldName'],'type':_0x5e6c7e[_0x0a99('0x17')]['key']};});_0x572ce5[_0x0a99('0x18')]=_['map'](_0x27a14f,_0x0a99('0x12'));_0x572ce5['query']=_[_0x0a99('0x19')](_0x3bab16[_0x0a99('0x1a')]);_0x572ce5[_0x0a99('0x1b')]=_[_0x0a99('0x1c')](_0x572ce5[_0x0a99('0x18')],_0x572ce5[_0x0a99('0x1a')]);_0x572ce5[_0x0a99('0x1b')]=_[_0x0a99('0x1d')](_0x572ce5[_0x0a99('0x1b')],['$and','$or',_0x0a99('0x1e'),_0x0a99('0x1f'),_0x0a99('0x20'),'$lte','$ne',_0x0a99('0x21'),_0x0a99('0x22'),_0x0a99('0x23'),_0x0a99('0x24'),_0x0a99('0x25'),_0x0a99('0x26'),_0x0a99('0x27'),_0x0a99('0x28'),_0x0a99('0x29'),'$notILike',_0x0a99('0x27'),'$overlap','$contains','$contained',_0x0a99('0x2a')]);_0x544c2[_0x0a99('0x2b')]=_[_0x0a99('0x1c')](_0x572ce5[_0x0a99('0x18')],qs[_0x0a99('0x2c')](_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x2c')]));_0x544c2['attributes']=_0x544c2[_0x0a99('0x2b')][_0x0a99('0x2d')]?_0x544c2[_0x0a99('0x2b')]:_0x572ce5[_0x0a99('0x18')];if(!_0x3bab16['query']['hasOwnProperty']('nolimit')){_0x544c2[_0x0a99('0xb')]=qs[_0x0a99('0xb')](_0x3bab16[_0x0a99('0x1a')]['limit']);_0x544c2[_0x0a99('0x9')]=qs[_0x0a99('0x9')](_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x9')]);}_0x544c2[_0x0a99('0x2e')]=qs[_0x0a99('0x2f')](_0x3bab16[_0x0a99('0x1a')]['sort']);_0x544c2[_0x0a99('0x30')]=qs[_0x0a99('0x1b')](_[_0x0a99('0x31')](_0x3bab16[_0x0a99('0x1a')],_0x572ce5[_0x0a99('0x1b')]),_0x27a14f);if(_0x3bab16['query'][_0x0a99('0x32')]){_0x544c2['where']=_['merge'](_0x544c2['where'],{'$or':_['map'](_0x27a14f,function(_0x155a14){if(_0x155a14['type']!==_0x0a99('0x33')){var _0x3d5e0f={};_0x3d5e0f[_0x155a14[_0x0a99('0x12')]]={'$like':'%'+_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x32')]+'%'};return _0x3d5e0f;}})});}_0x544c2=_[_0x0a99('0x34')]({},_0x544c2,_0x3bab16[_0x0a99('0x35')]);var _0x3bc3fc={'where':_0x544c2[_0x0a99('0x30')]};return db[_0x0a99('0x15')][_0x0a99('0x36')](_0x3bc3fc)[_0x0a99('0xe')](function(_0x472850){_0x564ae9['count']=_0x472850;if(_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x37')]){_0x544c2['include']=[{'all':!![]}];}return db[_0x0a99('0x15')]['findAll'](_0x544c2);})[_0x0a99('0xe')](function(_0x563fbc){_0x564ae9[_0x0a99('0x38')]=_0x563fbc;return _0x564ae9;})[_0x0a99('0xe')](respondWithFilteredResult(_0x3de006,_0x544c2))[_0x0a99('0x39')](handleError(_0x3de006,null));};exports[_0x0a99('0x3a')]=function(_0x4a5c58,_0x19774f){var _0x11e046={'raw':!![],'where':{'id':_0x4a5c58['params']['id']}},_0x3b7efc={};_0x3b7efc[_0x0a99('0x18')]=_[_0x0a99('0x19')](db[_0x0a99('0x15')][_0x0a99('0x16')]);_0x3b7efc['query']=_[_0x0a99('0x19')](_0x4a5c58['query']);_0x3b7efc['filters']=_[_0x0a99('0x1c')](_0x3b7efc['model'],_0x3b7efc[_0x0a99('0x1a')]);_0x11e046['attributes']=_[_0x0a99('0x1c')](_0x3b7efc[_0x0a99('0x18')],qs[_0x0a99('0x2c')](_0x4a5c58[_0x0a99('0x1a')]['fields']));_0x11e046[_0x0a99('0x2b')]=_0x11e046[_0x0a99('0x2b')][_0x0a99('0x2d')]?_0x11e046[_0x0a99('0x2b')]:_0x3b7efc['model'];if(_0x4a5c58['query']['includeAll']){_0x11e046[_0x0a99('0x3b')]=[{'all':!![]}];}_0x11e046=_['merge']({},_0x11e046,_0x4a5c58[_0x0a99('0x35')]);return db['CmHopper']['find'](_0x11e046)['then'](handleEntityNotFound(_0x19774f,null))['then'](respondWithResult(_0x19774f,null))[_0x0a99('0x39')](handleError(_0x19774f,null));};exports['create']=function(_0x3e6213,_0x78cd0c){return db['CmHopper'][_0x0a99('0x3c')](_0x3e6213[_0x0a99('0x3d')],{})['then'](respondWithResult(_0x78cd0c,0xc9))[_0x0a99('0x39')](handleError(_0x78cd0c,null));};exports['update']=function(_0x3107bc,_0x278454){if(_0x3107bc['body']['id']){delete _0x3107bc[_0x0a99('0x3d')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x3107bc[_0x0a99('0x3e')]['id']}})[_0x0a99('0xe')](handleEntityNotFound(_0x278454,null))[_0x0a99('0xe')](saveUpdates(_0x3107bc[_0x0a99('0x3d')],null))[_0x0a99('0xe')](respondWithResult(_0x278454,null))['catch'](handleError(_0x278454,null));};exports[_0x0a99('0x3f')]=function(_0x174298,_0x4525d1){return db[_0x0a99('0x15')][_0x0a99('0x3f')]()[_0x0a99('0xe')](respondWithResult(_0x4525d1,null))[_0x0a99('0x39')](handleError(_0x4525d1,null));};exports[_0x0a99('0x40')]=function(_0x1cd328,_0x1621d9){var _0x52c754;var _0x50e04f=_0x1cd328[_0x0a99('0x3e')]['id'];return db[_0x0a99('0x15')][_0x0a99('0x41')]({'where':{'id':_0x1cd328[_0x0a99('0x3e')]['id']}})[_0x0a99('0xe')](handleEntityNotFound(_0x1621d9,null))[_0x0a99('0xe')](function(_0x5cda7d){if(_0x5cda7d){return _0x5cda7d[_0x0a99('0x40')]()[_0x0a99('0xe')](function(_0x55fee0){return _0x55fee0;});}})[_0x0a99('0xe')](function(_0x474e8b){_0x52c754=_0x474e8b;if(_0x474e8b){if(_0x474e8b['VoiceQueueId']||_0x474e8b[_0x0a99('0x42')]){return db[_0x474e8b[_0x0a99('0x43')]?_0x0a99('0x44'):_0x0a99('0x45')][_0x0a99('0x41')]({'where':{'id':_0x474e8b[_0x0a99('0x43')]?_0x474e8b[_0x0a99('0x43')]:_0x474e8b['CampaignId']},'attributes':['id',_0x0a99('0x12')],'raw':!![]});}}})[_0x0a99('0xe')](function(_0x1e9e9d){var _0x5a6762={};if(_0x1e9e9d){_[_0x0a99('0x34')](_0x5a6762,_[_0x0a99('0x46')](_0x52c754[_0x0a99('0x47')],['createdAt',_0x0a99('0x48'),'id']));_0x5a6762[_0x0a99('0x49')]=0x15;_0x5a6762[_0x0a99('0x4a')]=_0x0a99('0x4b');_0x5a6762[_0x0a99('0x4c')]=_0x1e9e9d[_0x0a99('0x12')];_0x5a6762['membername']=_0x1cd328[_0x0a99('0x4d')]['name'];_0x5a6762[_0x0a99('0x4e')]=_0x1cd328[_0x0a99('0x4d')]['id'];_0x5a6762[_0x0a99('0x4b')]=!![];_0x5a6762[_0x0a99('0x4f')]=moment()['format'](_0x0a99('0x50'));_0x5a6762['calleridnum']=_0x52c754[_0x0a99('0x51')];_0x5a6762[_0x0a99('0x52')]=_0x52c754[_0x0a99('0x43')]?_0x0a99('0x53'):_0x0a99('0x54');return db[_0x0a99('0x55')][_0x0a99('0x41')]({'where':{'id':_0x5a6762[_0x0a99('0x56')]},'attributes':[_0x0a99('0x57'),_0x0a99('0x58')]})[_0x0a99('0xe')](function(_0x3f2e09){if(!_[_0x0a99('0x59')](_0x1621d9)&&!_['isNil'](_0x3f2e09[_0x0a99('0x57')])){_0x5a6762[_0x0a99('0x5a')]=_0x3f2e09[_0x0a99('0x57')];if(!_['isNil'](_0x3f2e09[_0x0a99('0x58')])){_0x5a6762[_0x0a99('0x5a')]+='\x20'+_0x3f2e09[_0x0a99('0x58')];}}})['finally'](function(){return db[_0x0a99('0x5b')][_0x0a99('0x3c')](_0x5a6762);});}})[_0x0a99('0xe')](function(_0x144032){return db['CmHopperAdditionalPhone'][_0x0a99('0x40')]({'where':{'CmHopperId':_0x50e04f}});})[_0x0a99('0xe')](function(){return _0x1621d9[_0x0a99('0x7')](0xcc)['end']();})['catch'](handleError(_0x1621d9,null));};exports[_0x0a99('0x5c')]=function(_0x528a5d,_0x53b1f4){var _0x5406a7=[];return db[_0x0a99('0x55')]['describe']()[_0x0a99('0xe')](function(_0x436942){_0x5406a7=_[_0x0a99('0x19')](_0x436942);return _0x528a5d[_0x0a99('0x4d')][_0x0a99('0x5d')]({'where':{'type':_0x0a99('0x5e'),'dialActive':!![],'dialMethod':_0x0a99('0x5f')},'attributes':['id','dialOrderByScheduledAt',_0x0a99('0x60')],'raw':!![]});})[_0x0a99('0xe')](function(_0x2d3b63){if(_0x2d3b63&&_0x2d3b63['length']){return db[_0x0a99('0x61')]['transaction'](function(_0x2109db){var _0x51d18a={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0a99('0x62')](_0x0a99('0x50'))},'VoiceQueueId':{'$in':_['map'](_0x2d3b63,'id')},'$or':[{'UserId':null},{'UserId':_0x528a5d[_0x0a99('0x4d')]['id']}]};var _0x4ce300={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2d3b63)[_0x0a99('0x32')]([_0x0a99('0x60'),0x0])[_0x0a99('0x14')]('id')[_0x0a99('0x63')]()},'$or':[{'UserId':null},{'UserId':_0x528a5d[_0x0a99('0x4d')]['id']}]};var _0x9b52c7={'$or':[_0x51d18a,_0x4ce300]};var _0x44aa5d=[];if(_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x64')]&&_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x64')]===_0x0a99('0x65')){if(!_[_0x0a99('0x66')](_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x67')])){_0x9b52c7['id']={'$in':_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x67')]};}_0x44aa5d=[[_0x0a99('0x68'),'ASC'],['scheduledAt',_0x2d3b63[0x0]['dialOrderByScheduledAt']===_0x0a99('0x69')?_0x0a99('0x6a'):_0x0a99('0x69')],db['sequelize'][_0x0a99('0x6b')](_0x0a99('0x6c')),['id',_0x0a99('0x6a')]];}else{if(!_[_0x0a99('0x66')](_0x528a5d['body'][_0x0a99('0x67')])){_0x9b52c7['id']={'$notIn':_0x528a5d[_0x0a99('0x3d')]['hopperIds']};}_0x44aa5d=[['priority',_0x0a99('0x6a')],[_0x0a99('0x6d'),_0x2d3b63[0x0][_0x0a99('0x6e')]],db[_0x0a99('0x61')][_0x0a99('0x6b')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0x0a99('0x15')][_0x0a99('0x6f')]({'attributes':['id',_0x0a99('0x70'),_0x0a99('0x51'),_0x0a99('0x71')],'where':_0x9b52c7,'order':_0x44aa5d,'transaction':_0x2109db,'lock':_0x2109db[_0x0a99('0x72')][_0x0a99('0x73')],'include':[{'model':db[_0x0a99('0x55')],'as':'Contact','attributes':_0x5406a7,'include':[{'model':db[_0x0a99('0x74')],'as':_0x0a99('0x75'),'attributes':['id',_0x0a99('0x12')]}]},{'model':db['CmList'],'as':_0x0a99('0x76'),'attributes':['id','name']},{'model':db[_0x0a99('0x44')],'as':_0x0a99('0x77'),'attributes':['id',_0x0a99('0x12'),_0x0a99('0x78')]}]})['then'](function(_0x3435e3){if(_0x3435e3){return _0x3435e3[_0x0a99('0xd')]({'UserId':_0x528a5d[_0x0a99('0x4d')]['id']},{'transaction':_0x2109db});}});});}})[_0x0a99('0xe')](handleEntityNotFound(_0x53b1f4,null))[_0x0a99('0xe')](respondWithResult(_0x53b1f4,null))[_0x0a99('0x39')](handleError(_0x53b1f4,null));};exports[_0x0a99('0x79')]=function(_0x4c6a12,_0x656dd,_0x31950f){var _0x436163=[];var _0x2bae3d=_0x4c6a12['params']['id'];var _0x1a40e9=_0x4c6a12['user']['id'];return db['CmContact'][_0x0a99('0x3f')]()[_0x0a99('0xe')](function(_0x3bed6e){_0x436163=_[_0x0a99('0x19')](_0x3bed6e);return db[_0x0a99('0x61')][_0x0a99('0x7a')](function(_0x24a389){const _0x353660={'id':_0x2bae3d};return db['CmHopper'][_0x0a99('0x6f')]({'attributes':['id','scheduledat','recallme'],'where':_0x353660,'transaction':_0x24a389,'lock':_0x24a389['LOCK'][_0x0a99('0x73')],'include':[{'model':db[_0x0a99('0x55')],'as':'Contact','attributes':_0x436163,'include':[{'model':db['CmCompany'],'as':_0x0a99('0x75'),'attributes':['id',_0x0a99('0x12')]}]},{'model':db[_0x0a99('0x7b')],'as':_0x0a99('0x76'),'attributes':['id',_0x0a99('0x12')]},{'model':db[_0x0a99('0x44')],'as':_0x0a99('0x77'),'attributes':['id',_0x0a99('0x12'),_0x0a99('0x78')]}]})['then'](function(_0x51627a){if(_0x51627a){return _0x51627a[_0x0a99('0xd')]({'UserId':_0x1a40e9},{'transaction':_0x24a389});}});});})[_0x0a99('0xe')](handleEntityNotFound(_0x656dd,null))[_0x0a99('0xe')](respondWithResult(_0x656dd,null))[_0x0a99('0x39')](handleError(_0x656dd,null));};exports[_0x0a99('0x7c')]=function(_0x22b737,_0x3a6773){return _0x22b737['user']['getVoiceQueues']({'where':{'type':_0x0a99('0x5e'),'dialActive':!![],'dialMethod':_0x0a99('0x5f')},'attributes':['id'],'raw':!![]})['then'](function(_0x587442){if(_0x587442&&_0x587442[_0x0a99('0x2d')]){return db['CmHopper'][_0x0a99('0x36')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0a99('0x62')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x587442,'id')},'$or':[{'UserId':null},{'UserId':_0x22b737[_0x0a99('0x4d')]['id']}]}});}return 0x0;})['then'](function(_0x17436d){if(!_['isNil'](_0x17436d)&&_[_0x0a99('0x7d')](_0x17436d)){return _0x3a6773[_0x0a99('0x7')](0xc8)[_0x0a99('0x8')]({'contacts':_0x17436d});}else{logger[_0x0a99('0x10')](_0x0a99('0x7e'),_0x0a99('0x7c'),0x194,_0x0a99('0x7f'));_0x3a6773[_0x0a99('0xf')](0x194);}})[_0x0a99('0x39')](handleError(_0x3a6773,null));};exports[_0x0a99('0x80')]=function(_0x2d3efa,_0xe18018){var _0x51df2a=shared[_0x0a99('0x81')];var _0x2f4d34=[];_[_0x0a99('0x14')](_0x51df2a,function(_0x25c31b){_0x2f4d34[_0x0a99('0x82')]({'id':_0x25c31b[_0x0a99('0x12')],'name':_0x25c31b[_0x0a99('0x12')],'utcOffset':_0x25c31b[_0x0a99('0x83')]});});return _0xe18018[_0x0a99('0x7')](0xc8)[_0x0a99('0x8')]({'tz':_0x2f4d34});};exports['getTimezone']=function(_0x5607f1,_0x505a2c){var _0x59228e=shared[_0x0a99('0x81')];var _0x38932f={};if(!_[_0x0a99('0x59')](_0x59228e[_0x5607f1[_0x0a99('0x3d')]['id']]))_0x38932f=_0x59228e[_0x5607f1[_0x0a99('0x3d')]['id']];return _0x505a2c[_0x0a99('0x7')](0xc8)[_0x0a99('0x8')](_0x38932f);};
\ No newline at end of file
+var _0xeec6=['isEmpty','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','Contact','CmCompany','Company','List','Queue','getPreviewRecall','UPDATE','CmList','dialActive','getOpenContacts','isNumber','entity\x20not\x20found','getTimezones','timezones','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','json','update','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','key','model','query','keys','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$iLike','$notILike','$contains','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','then','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','createdAt','updatedAt','state','statedesc','membername','user','UserId','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','outbound','preview','dialPreviewAutoRecallMe','value','direction','prev'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xeec6,0x1c2));var _0x6eec=function(_0xea1570,_0x2f7856){_0xea1570=_0xea1570-0x0;var _0x579e74=_0xeec6[_0xea1570];return _0x579e74;};'use strict';var moment=require(_0x6eec('0x0'));var _=require(_0x6eec('0x1'));var qs=require(_0x6eec('0x2'));var logger=require(_0x6eec('0x3'))('api');var shared=require(_0x6eec('0x4'));var db=require(_0x6eec('0x5'))['db'];function respondWithResult(_0x1699ce,_0x2d7a15){_0x2d7a15=_0x2d7a15||0xc8;return function(_0x3e7b6b){if(_0x3e7b6b){return _0x1699ce[_0x6eec('0x6')](_0x2d7a15)['json'](_0x3e7b6b);}};}function respondWithFilteredResult(_0x185f31,_0x3c6eda){return function(_0x48064a){if(_0x48064a){var _0x5a5e47=typeof _0x3c6eda[_0x6eec('0x7')]===_0x6eec('0x8')&&typeof _0x3c6eda[_0x6eec('0x9')]==='undefined';var _0x2be38f=_0x48064a[_0x6eec('0xa')];var _0x1c774d=_0x5a5e47?0x0:_0x3c6eda['offset'];var _0x595dd4=_0x5a5e47?_0x48064a['count']:_0x3c6eda[_0x6eec('0x7')]+_0x3c6eda[_0x6eec('0x9')];var _0x51a9e3;if(_0x595dd4>=_0x2be38f){_0x595dd4=_0x2be38f;_0x51a9e3=0xc8;}else{_0x51a9e3=0xce;}_0x185f31['status'](_0x51a9e3);return _0x185f31[_0x6eec('0xb')]('Content-Range',_0x1c774d+'-'+_0x595dd4+'/'+_0x2be38f)[_0x6eec('0xc')](_0x48064a);}return null;};}function saveUpdates(_0x3387c2,_0x162db1){return function(_0x3fe94b){if(_0x3fe94b){return _0x3fe94b[_0x6eec('0xd')](_0x3387c2)['then'](function(_0x25e2a5){return _0x25e2a5;});}return null;};}function handleEntityNotFound(_0x3b2972,_0x462dbb){return function(_0xc35914){if(!_0xc35914){_0x3b2972[_0x6eec('0xe')](0x194);}return _0xc35914;};}function handleError(_0x2b35d6,_0x345852){_0x345852=_0x345852||0x1f4;return function(_0x393271){logger[_0x6eec('0xf')](_0x393271[_0x6eec('0x10')]);if(_0x393271['name']){delete _0x393271[_0x6eec('0x11')];}_0x2b35d6['status'](_0x345852)[_0x6eec('0x12')](_0x393271);};}exports[_0x6eec('0x13')]=function(_0x512619,_0x3ee353){var _0x80736b={},_0xb1eab7={},_0x56c78b={'count':0x0,'rows':[]};var _0x87f3be=_[_0x6eec('0x14')](db[_0x6eec('0x15')][_0x6eec('0x16')],function(_0xd86135){return{'name':_0xd86135[_0x6eec('0x17')],'type':_0xd86135['type'][_0x6eec('0x18')]};});_0xb1eab7[_0x6eec('0x19')]=_[_0x6eec('0x14')](_0x87f3be,_0x6eec('0x11'));_0xb1eab7[_0x6eec('0x1a')]=_[_0x6eec('0x1b')](_0x512619['query']);_0xb1eab7[_0x6eec('0x1c')]=_[_0x6eec('0x1d')](_0xb1eab7[_0x6eec('0x19')],_0xb1eab7[_0x6eec('0x1a')]);_0xb1eab7[_0x6eec('0x1c')]=_[_0x6eec('0x1e')](_0xb1eab7['filters'],[_0x6eec('0x1f'),_0x6eec('0x20'),_0x6eec('0x21'),_0x6eec('0x22'),_0x6eec('0x23'),_0x6eec('0x24'),_0x6eec('0x25'),_0x6eec('0x26'),_0x6eec('0x27'),'$between',_0x6eec('0x28'),_0x6eec('0x29'),_0x6eec('0x2a'),_0x6eec('0x2b'),'$notLike',_0x6eec('0x2c'),_0x6eec('0x2d'),'$like','$overlap',_0x6eec('0x2e'),'$contained',_0x6eec('0x2f')]);_0x80736b[_0x6eec('0x30')]=_[_0x6eec('0x1d')](_0xb1eab7[_0x6eec('0x19')],qs[_0x6eec('0x31')](_0x512619[_0x6eec('0x1a')][_0x6eec('0x31')]));_0x80736b[_0x6eec('0x30')]=_0x80736b[_0x6eec('0x30')][_0x6eec('0x32')]?_0x80736b['attributes']:_0xb1eab7[_0x6eec('0x19')];if(!_0x512619['query'][_0x6eec('0x33')](_0x6eec('0x34'))){_0x80736b[_0x6eec('0x9')]=qs['limit'](_0x512619['query']['limit']);_0x80736b[_0x6eec('0x7')]=qs[_0x6eec('0x7')](_0x512619[_0x6eec('0x1a')][_0x6eec('0x7')]);}_0x80736b[_0x6eec('0x35')]=qs[_0x6eec('0x36')](_0x512619[_0x6eec('0x1a')][_0x6eec('0x36')]);_0x80736b[_0x6eec('0x37')]=qs[_0x6eec('0x1c')](_[_0x6eec('0x38')](_0x512619[_0x6eec('0x1a')],_0xb1eab7['filters']),_0x87f3be);if(_0x512619[_0x6eec('0x1a')][_0x6eec('0x39')]){_0x80736b[_0x6eec('0x37')]=_['merge'](_0x80736b[_0x6eec('0x37')],{'$or':_[_0x6eec('0x14')](_0x87f3be,function(_0xd857fa){if(_0xd857fa[_0x6eec('0x3a')]!==_0x6eec('0x3b')){var _0x34d3b1={};_0x34d3b1[_0xd857fa['name']]={'$like':'%'+_0x512619[_0x6eec('0x1a')][_0x6eec('0x39')]+'%'};return _0x34d3b1;}})});}_0x80736b=_[_0x6eec('0x3c')]({},_0x80736b,_0x512619['options']);var _0x53acd9={'where':_0x80736b[_0x6eec('0x37')]};return db[_0x6eec('0x15')][_0x6eec('0xa')](_0x53acd9)[_0x6eec('0x3d')](function(_0x402bac){_0x56c78b['count']=_0x402bac;if(_0x512619[_0x6eec('0x1a')][_0x6eec('0x3e')]){_0x80736b[_0x6eec('0x3f')]=[{'all':!![]}];}return db[_0x6eec('0x15')][_0x6eec('0x40')](_0x80736b);})[_0x6eec('0x3d')](function(_0x36cfe1){_0x56c78b[_0x6eec('0x41')]=_0x36cfe1;return _0x56c78b;})['then'](respondWithFilteredResult(_0x3ee353,_0x80736b))[_0x6eec('0x42')](handleError(_0x3ee353,null));};exports[_0x6eec('0x43')]=function(_0x4d30c9,_0x5b3283){var _0x160fc0={'raw':!![],'where':{'id':_0x4d30c9[_0x6eec('0x44')]['id']}},_0x66f786={};_0x66f786[_0x6eec('0x19')]=_['keys'](db['CmHopper'][_0x6eec('0x16')]);_0x66f786['query']=_['keys'](_0x4d30c9[_0x6eec('0x1a')]);_0x66f786[_0x6eec('0x1c')]=_[_0x6eec('0x1d')](_0x66f786[_0x6eec('0x19')],_0x66f786[_0x6eec('0x1a')]);_0x160fc0['attributes']=_[_0x6eec('0x1d')](_0x66f786[_0x6eec('0x19')],qs['fields'](_0x4d30c9[_0x6eec('0x1a')][_0x6eec('0x31')]));_0x160fc0['attributes']=_0x160fc0[_0x6eec('0x30')][_0x6eec('0x32')]?_0x160fc0['attributes']:_0x66f786[_0x6eec('0x19')];if(_0x4d30c9[_0x6eec('0x1a')][_0x6eec('0x3e')]){_0x160fc0[_0x6eec('0x3f')]=[{'all':!![]}];}_0x160fc0=_['merge']({},_0x160fc0,_0x4d30c9[_0x6eec('0x45')]);return db[_0x6eec('0x15')][_0x6eec('0x46')](_0x160fc0)[_0x6eec('0x3d')](handleEntityNotFound(_0x5b3283,null))[_0x6eec('0x3d')](respondWithResult(_0x5b3283,null))['catch'](handleError(_0x5b3283,null));};exports['create']=function(_0x1edb5f,_0x3d5c80){return db[_0x6eec('0x15')][_0x6eec('0x47')](_0x1edb5f[_0x6eec('0x48')],{})['then'](respondWithResult(_0x3d5c80,0xc9))[_0x6eec('0x42')](handleError(_0x3d5c80,null));};exports['update']=function(_0x20524a,_0x408295){if(_0x20524a[_0x6eec('0x48')]['id']){delete _0x20524a['body']['id'];}return db[_0x6eec('0x15')][_0x6eec('0x46')]({'where':{'id':_0x20524a[_0x6eec('0x44')]['id']}})[_0x6eec('0x3d')](handleEntityNotFound(_0x408295,null))[_0x6eec('0x3d')](saveUpdates(_0x20524a['body'],null))[_0x6eec('0x3d')](respondWithResult(_0x408295,null))['catch'](handleError(_0x408295,null));};exports['describe']=function(_0x2529ad,_0x535d96){return db[_0x6eec('0x15')][_0x6eec('0x49')]()[_0x6eec('0x3d')](respondWithResult(_0x535d96,null))['catch'](handleError(_0x535d96,null));};exports['destroy']=function(_0x6b200d,_0x142914){var _0x1d6626;var _0x2d0fc0=_0x6b200d[_0x6eec('0x44')]['id'];return db[_0x6eec('0x15')][_0x6eec('0x46')]({'where':{'id':_0x6b200d[_0x6eec('0x44')]['id']}})[_0x6eec('0x3d')](handleEntityNotFound(_0x142914,null))[_0x6eec('0x3d')](function(_0x4e1be2){if(_0x4e1be2){return _0x4e1be2['destroy']()[_0x6eec('0x3d')](function(_0x2270ce){return _0x2270ce;});}})[_0x6eec('0x3d')](function(_0x577fb6){_0x1d6626=_0x577fb6;if(_0x577fb6){if(_0x577fb6[_0x6eec('0x4a')]||_0x577fb6[_0x6eec('0x4b')]){return db[_0x577fb6[_0x6eec('0x4a')]?_0x6eec('0x4c'):_0x6eec('0x4d')][_0x6eec('0x46')]({'where':{'id':_0x577fb6[_0x6eec('0x4a')]?_0x577fb6[_0x6eec('0x4a')]:_0x577fb6['CampaignId']},'attributes':['id',_0x6eec('0x11')],'raw':!![]});}}})[_0x6eec('0x3d')](function(_0x3374ef){var _0x3e77f3={};if(_0x3374ef){_['merge'](_0x3e77f3,_['omit'](_0x1d6626['dataValues'],[_0x6eec('0x4e'),_0x6eec('0x4f'),'id']));_0x3e77f3[_0x6eec('0x50')]=0x15;_0x3e77f3[_0x6eec('0x51')]='deleted';_0x3e77f3['campaign']=_0x3374ef[_0x6eec('0x11')];_0x3e77f3[_0x6eec('0x52')]=_0x6b200d[_0x6eec('0x53')]['name'];_0x3e77f3[_0x6eec('0x54')]=_0x6b200d[_0x6eec('0x53')]['id'];_0x3e77f3[_0x6eec('0x55')]=!![];_0x3e77f3[_0x6eec('0x56')]=moment()[_0x6eec('0x57')](_0x6eec('0x58'));_0x3e77f3[_0x6eec('0x59')]=_0x1d6626[_0x6eec('0x5a')];_0x3e77f3[_0x6eec('0x5b')]=_0x1d6626['VoiceQueueId']?_0x6eec('0x5c'):'ivr';return db[_0x6eec('0x5d')][_0x6eec('0x46')]({'where':{'id':_0x3e77f3[_0x6eec('0x5e')]},'attributes':[_0x6eec('0x5f'),_0x6eec('0x60')]})[_0x6eec('0x3d')](function(_0x274975){if(!_['isNil'](_0x142914)&&!_[_0x6eec('0x61')](_0x274975['firstName'])){_0x3e77f3[_0x6eec('0x62')]=_0x274975['firstName'];if(!_[_0x6eec('0x61')](_0x274975[_0x6eec('0x60')])){_0x3e77f3[_0x6eec('0x62')]+='\x20'+_0x274975[_0x6eec('0x60')];}}})[_0x6eec('0x63')](function(){return db[_0x6eec('0x64')][_0x6eec('0x47')](_0x3e77f3);});}})[_0x6eec('0x3d')](function(_0x130002){return db[_0x6eec('0x65')]['destroy']({'where':{'CmHopperId':_0x2d0fc0}});})['then'](function(){return _0x142914[_0x6eec('0x6')](0xcc)[_0x6eec('0x66')]();})[_0x6eec('0x42')](handleError(_0x142914,null));};exports[_0x6eec('0x67')]=function(_0x20b040,_0x4a8fca){var _0x1d8fb1=[];return db[_0x6eec('0x5d')]['describe']()['then'](function(_0x5dc8b3){_0x1d8fb1=_[_0x6eec('0x1b')](_0x5dc8b3);return _0x20b040[_0x6eec('0x53')]['getVoiceQueues']({'where':{'type':_0x6eec('0x68'),'dialActive':!![],'dialMethod':_0x6eec('0x69')},'attributes':['id','dialOrderByScheduledAt',_0x6eec('0x6a')],'raw':!![]});})[_0x6eec('0x3d')](function(_0xc852b3){if(_0xc852b3&&_0xc852b3[_0x6eec('0x32')]){return db['sequelize']['transaction'](function(_0x54fcd0){var _0x1230fc={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x6eec('0x57')](_0x6eec('0x58'))},'VoiceQueueId':{'$in':_[_0x6eec('0x14')](_0xc852b3,'id')},'$or':[{'UserId':null},{'UserId':_0x20b040[_0x6eec('0x53')]['id']}]};var _0x169607={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0xc852b3)[_0x6eec('0x39')]([_0x6eec('0x6a'),0x0])[_0x6eec('0x14')]('id')[_0x6eec('0x6b')]()},'$or':[{'UserId':null},{'UserId':_0x20b040[_0x6eec('0x53')]['id']}]};var _0x2799ca={'$or':[_0x1230fc,_0x169607]};var _0x386a67=[];if(_0x20b040[_0x6eec('0x48')][_0x6eec('0x6c')]&&_0x20b040[_0x6eec('0x48')]['direction']===_0x6eec('0x6d')){if(!_[_0x6eec('0x6e')](_0x20b040['body'][_0x6eec('0x6f')])){_0x2799ca['id']={'$in':_0x20b040[_0x6eec('0x48')]['hopperIds']};}_0x386a67=[[_0x6eec('0x70'),_0x6eec('0x71')],[_0x6eec('0x72'),_0xc852b3[0x0][_0x6eec('0x73')]==='ASC'?_0x6eec('0x74'):_0x6eec('0x71')],db[_0x6eec('0x75')][_0x6eec('0x76')](_0x6eec('0x77')),['id',_0x6eec('0x74')]];}else{if(!_['isEmpty'](_0x20b040[_0x6eec('0x48')]['hopperIds'])){_0x2799ca['id']={'$notIn':_0x20b040[_0x6eec('0x48')][_0x6eec('0x6f')]};}_0x386a67=[[_0x6eec('0x70'),_0x6eec('0x74')],[_0x6eec('0x72'),_0xc852b3[0x0][_0x6eec('0x73')]],db[_0x6eec('0x75')][_0x6eec('0x76')](_0x6eec('0x78')),['id','ASC']];}return db[_0x6eec('0x15')][_0x6eec('0x79')]({'attributes':['id',_0x6eec('0x7a'),'phone',_0x6eec('0x7b')],'where':_0x2799ca,'order':_0x386a67,'transaction':_0x54fcd0,'lock':_0x54fcd0[_0x6eec('0x7c')]['UPDATE'],'include':[{'model':db[_0x6eec('0x5d')],'as':_0x6eec('0x7d'),'attributes':_0x1d8fb1,'include':[{'model':db[_0x6eec('0x7e')],'as':_0x6eec('0x7f'),'attributes':['id',_0x6eec('0x11')]}]},{'model':db['CmList'],'as':_0x6eec('0x80'),'attributes':['id',_0x6eec('0x11')]},{'model':db[_0x6eec('0x4c')],'as':_0x6eec('0x81'),'attributes':['id',_0x6eec('0x11'),'dialActive']}]})[_0x6eec('0x3d')](function(_0x16e5dd){if(_0x16e5dd){return _0x16e5dd[_0x6eec('0xd')]({'UserId':_0x20b040[_0x6eec('0x53')]['id']},{'transaction':_0x54fcd0});}});});}})[_0x6eec('0x3d')](handleEntityNotFound(_0x4a8fca,null))[_0x6eec('0x3d')](respondWithResult(_0x4a8fca,null))[_0x6eec('0x42')](handleError(_0x4a8fca,null));};exports[_0x6eec('0x82')]=function(_0x59feac,_0x43d89a,_0x59341a){var _0x55b7bb=[];var _0xd209bc=_0x59feac[_0x6eec('0x44')]['id'];var _0x23a2ba=_0x59feac['user']['id'];return db[_0x6eec('0x5d')]['describe']()[_0x6eec('0x3d')](function(_0x185793){_0x55b7bb=_[_0x6eec('0x1b')](_0x185793);return db[_0x6eec('0x75')]['transaction'](function(_0x4a64ed){const _0x5e0824={'id':_0xd209bc};return db[_0x6eec('0x15')][_0x6eec('0x79')]({'attributes':['id',_0x6eec('0x7a'),_0x6eec('0x7b')],'where':_0x5e0824,'transaction':_0x4a64ed,'lock':_0x4a64ed['LOCK'][_0x6eec('0x83')],'include':[{'model':db['CmContact'],'as':_0x6eec('0x7d'),'attributes':_0x55b7bb,'include':[{'model':db[_0x6eec('0x7e')],'as':'Company','attributes':['id',_0x6eec('0x11')]}]},{'model':db[_0x6eec('0x84')],'as':_0x6eec('0x80'),'attributes':['id',_0x6eec('0x11')]},{'model':db[_0x6eec('0x4c')],'as':_0x6eec('0x81'),'attributes':['id','name',_0x6eec('0x85')]}]})['then'](function(_0x64c2ef){if(_0x64c2ef){return _0x64c2ef[_0x6eec('0xd')]({'UserId':_0x23a2ba},{'transaction':_0x4a64ed});}});});})['then'](handleEntityNotFound(_0x43d89a,null))[_0x6eec('0x3d')](respondWithResult(_0x43d89a,null))['catch'](handleError(_0x43d89a,null));};exports[_0x6eec('0x86')]=function(_0x1d1683,_0x8a4166){return _0x1d1683[_0x6eec('0x53')]['getVoiceQueues']({'where':{'type':_0x6eec('0x68'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0x6eec('0x3d')](function(_0x2c0a85){if(_0x2c0a85&&_0x2c0a85['length']){return db[_0x6eec('0x15')][_0x6eec('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x6eec('0x57')](_0x6eec('0x58'))},'VoiceQueueId':{'$in':_[_0x6eec('0x14')](_0x2c0a85,'id')},'$or':[{'UserId':null},{'UserId':_0x1d1683['user']['id']}]}});}return 0x0;})[_0x6eec('0x3d')](function(_0x18e949){if(!_[_0x6eec('0x61')](_0x18e949)&&_[_0x6eec('0x87')](_0x18e949)){return _0x8a4166[_0x6eec('0x6')](0xc8)[_0x6eec('0xc')]({'contacts':_0x18e949});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s',_0x6eec('0x86'),0x194,_0x6eec('0x88'));_0x8a4166['sendStatus'](0x194);}})['catch'](handleError(_0x8a4166,null));};exports[_0x6eec('0x89')]=function(_0x1b62ba,_0x52b8b4){var _0x2c7853=shared[_0x6eec('0x8a')];var _0x1e69a0=[];_['map'](_0x2c7853,function(_0xcd62ad){_0x1e69a0['push']({'id':_0xcd62ad[_0x6eec('0x11')],'name':_0xcd62ad[_0x6eec('0x11')],'utcOffset':_0xcd62ad['utcOffset']});});return _0x52b8b4[_0x6eec('0x6')](0xc8)[_0x6eec('0xc')]({'tz':_0x1e69a0});};exports[_0x6eec('0x8b')]=function(_0x4a7a37,_0xf4f91){var _0xc4e3bc=shared[_0x6eec('0x8a')];var _0x1bdf2b={};if(!_[_0x6eec('0x61')](_0xc4e3bc[_0x4a7a37[_0x6eec('0x48')]['id']]))_0x1bdf2b=_0xc4e3bc[_0x4a7a37['body']['id']];return _0xf4f91[_0x6eec('0x6')](0xc8)[_0x6eec('0xc')](_0x1bdf2b);};
\ No newline at end of file
index f21a3bd..2581f84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['./cmHopper.attributes','exports','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x34694a,_0x43f9c5){_0x34694a=_0x34694a-0x0;var _0x13f8f2=_0xc6ac[_0x34694a];return _0x13f8f2;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var logger=require(_0xcc6a('0x2'))(_0xcc6a('0x3'));var moment=require(_0xcc6a('0x4'));var BPromise=require(_0xcc6a('0x5'));var rp=require(_0xcc6a('0x6'));var fs=require('fs');var path=require(_0xcc6a('0x7'));var rimraf=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var attributes=require(_0xcc6a('0xa'));module[_0xcc6a('0xb')]=function(_0x12330e,_0x197bd7){return _0x12330e['define'](_0xcc6a('0xc'),attributes,{'tableName':_0xcc6a('0xd'),'paranoid':![],'indexes':[{'name':_0xcc6a('0xe'),'fields':['scheduledat']},{'name':_0xcc6a('0xf'),'fields':[_0xcc6a('0xf')]},{'name':_0xcc6a('0x10'),'fields':[_0xcc6a('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['define','scheduledat','phone','priority','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x417f11,_0x8196fc){var _0x35cfb4=function(_0x4e9d88){while(--_0x4e9d88){_0x417f11['push'](_0x417f11['shift']());}};_0x35cfb4(++_0x8196fc);}(_0xf494,0x1c6));var _0x4f49=function(_0x6ebf46,_0x15132e){_0x6ebf46=_0x6ebf46-0x0;var _0x448f35=_0xf494[_0x6ebf46];return _0x448f35;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('CmHopper',attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]},{'name':_0x4f49('0xd'),'fields':[_0x4f49('0xd')]},{'name':_0x4f49('0xe'),'fields':[_0x4f49('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 4ceec9e..2c16f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa71d=['CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','findAll','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetContactByPhone','findOne','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','literal','NOW()\x20+\x20INTERVAL\x20','NOW()','User','List','lodash','util','../../mysqldb','../../config/logger','rpc','GetCmHopper','options','raw','where','attributes','limit','include','map','model','then','info','stringify','error','message','ShowCmHopper','CmHopper','find','debug','create','body','CreateCmHopper','catch','UpdateCmHopper','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','order','LOCK','UPDATE','Contact','keys','Agent','name','voicePause','length','UserId','update','includes','push','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','MoveContactManagedDialer'];(function(_0x26dd76,_0x56d8d1){var _0x493254=function(_0x5a729a){while(--_0x5a729a){_0x26dd76['push'](_0x26dd76['shift']());}};_0x493254(++_0x56d8d1);}(_0xa71d,0xbd));var _0xda71=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xa71d[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xda71('0x0'));var util=require(_0xda71('0x1'));var moment=require('moment');var BPromise=require('bluebird');var db=require(_0xda71('0x2'))['db'];var logger=require(_0xda71('0x3'))(_0xda71('0x4'));exports[_0xda71('0x5')]=function(_0x2e7648){var _0x2fd854=this;return new Promise(function(_0x1fdea2,_0x123a07){return db['CmHopper']['findAll']({'raw':_0x2e7648['options']?_0x2e7648[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0xa')]||null:null,'include':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0xb')]?_[_0xda71('0xc')](_0x2e7648[_0xda71('0x6')][_0xda71('0xb')],function(_0x156d41){return{'model':db[_0x156d41[_0xda71('0xd')]],'as':_0x156d41['as'],'attributes':_0x156d41[_0xda71('0x9')],'include':_0x156d41[_0xda71('0xb')]?_[_0xda71('0xc')](_0x156d41[_0xda71('0xb')],function(_0x267400){return{'model':db[_0x267400['model']],'as':_0x267400['as'],'attributes':_0x267400[_0xda71('0x9')],'include':_0x267400[_0xda71('0xb')]?_[_0xda71('0xc')](_0x267400[_0xda71('0xb')],function(_0x26c108){return{'model':db[_0x26c108[_0xda71('0xd')]],'as':_0x26c108['as'],'attributes':_0x26c108[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x593000){logger[_0xda71('0xf')]('GetCmHopper',_0x2e7648);logger['debug']('GetCmHopper',_0x2e7648,JSON[_0xda71('0x10')](_0x593000));_0x1fdea2(_0x593000);})['catch'](function(_0x4f203b){logger[_0xda71('0x11')]('GetCmHopper',_0x4f203b[_0xda71('0x12')],_0x2e7648);_0x123a07(_0x2fd854['error'](0x1f4,_0x4f203b[_0xda71('0x12')]));});});};exports[_0xda71('0x13')]=function(_0x6eb140){var _0x2ff2f3=this;return new Promise(function(_0x4a7fda,_0x419f46){return db[_0xda71('0x14')][_0xda71('0x15')]({'raw':_0x6eb140[_0xda71('0x6')]?_0x6eb140[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x6eb140[_0xda71('0x6')]?_0x6eb140['options'][_0xda71('0x8')]||null:null,'attributes':_0x6eb140[_0xda71('0x6')]?_0x6eb140['options']['attributes']||null:null,'include':_0x6eb140[_0xda71('0x6')]?_0x6eb140['options'][_0xda71('0xb')]?_[_0xda71('0xc')](_0x6eb140[_0xda71('0x6')]['include'],function(_0x2baf34){return{'model':db[_0x2baf34[_0xda71('0xd')]],'as':_0x2baf34['as'],'attributes':_0x2baf34[_0xda71('0x9')],'include':_0x2baf34[_0xda71('0xb')]?_[_0xda71('0xc')](_0x2baf34[_0xda71('0xb')],function(_0xc55b58){return{'model':db[_0xc55b58[_0xda71('0xd')]],'as':_0xc55b58['as'],'attributes':_0xc55b58[_0xda71('0x9')],'include':_0xc55b58[_0xda71('0xb')]?_[_0xda71('0xc')](_0xc55b58[_0xda71('0xb')],function(_0x22fb0c){return{'model':db[_0x22fb0c[_0xda71('0xd')]],'as':_0x22fb0c['as'],'attributes':_0x22fb0c[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x1fe2fb){logger[_0xda71('0xf')](_0xda71('0x13'),_0x6eb140);logger[_0xda71('0x16')](_0xda71('0x13'),_0x6eb140,JSON[_0xda71('0x10')](_0x1fe2fb));_0x4a7fda(_0x1fe2fb);})['catch'](function(_0x238fa6){logger[_0xda71('0x11')](_0xda71('0x13'),_0x238fa6[_0xda71('0x12')],_0x6eb140);_0x419f46(_0x2ff2f3[_0xda71('0x11')](0x1f4,_0x238fa6[_0xda71('0x12')]));});});};exports['CreateCmHopper']=function(_0x5a361a){var _0x57a3be=this;return new Promise(function(_0x35abcd,_0x393d09){return db[_0xda71('0x14')][_0xda71('0x17')](_0x5a361a[_0xda71('0x18')],{'raw':_0x5a361a[_0xda71('0x6')]?_0x5a361a[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![]})[_0xda71('0xe')](function(_0x90442f){logger[_0xda71('0xf')]('CreateCmHopper',_0x5a361a);logger[_0xda71('0x16')](_0xda71('0x19'),_0x5a361a,JSON[_0xda71('0x10')](_0x90442f));_0x35abcd(_0x90442f);})[_0xda71('0x1a')](function(_0x614d17){logger[_0xda71('0x11')](_0xda71('0x19'),_0x614d17[_0xda71('0x12')],_0x5a361a);_0x393d09(_0x57a3be[_0xda71('0x11')](0x1f4,_0x614d17[_0xda71('0x12')]));});});};exports[_0xda71('0x1b')]=function(_0x5cb5f8){var _0x3eba41=this;return new Promise(function(_0x221285,_0x1758b5){return db[_0xda71('0x14')]['update'](_0x5cb5f8[_0xda71('0x18')],{'raw':_0x5cb5f8[_0xda71('0x6')]?_0x5cb5f8[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5cb5f8[_0xda71('0x6')]?_0x5cb5f8['options'][_0xda71('0x8')]||null:null,'attributes':_0x5cb5f8['options']?_0x5cb5f8[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':_0x5cb5f8[_0xda71('0x6')]?_0x5cb5f8[_0xda71('0x6')]['limit']||null:null})['then'](function(_0x3c6cf2){logger[_0xda71('0xf')]('UpdateCmHopper',_0x5cb5f8);logger[_0xda71('0xf')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xda71('0x10')](_0x5cb5f8['options']['where']),_0x5cb5f8[_0xda71('0x18')]['active']);logger[_0xda71('0x16')](_0xda71('0x1b'),_0x5cb5f8,JSON[_0xda71('0x10')](_0x3c6cf2));_0x221285(_0x3c6cf2);})['catch'](function(_0x464545){logger[_0xda71('0x11')](_0xda71('0x1b'),_0x464545['message'],_0x5cb5f8);_0x1758b5(_0x3eba41[_0xda71('0x11')](0x1f4,_0x464545['message']));});});};exports[_0xda71('0x1c')]=function(_0x131b06){var _0x1bccdc=this;return new Promise(function(_0x3bee70,_0x4159dd){return db['CmHopper'][_0xda71('0x1d')]({'where':_0x131b06[_0xda71('0x6')]?_0x131b06['options'][_0xda71('0x8')]||null:null})[_0xda71('0xe')](function(_0x22db30){logger[_0xda71('0xf')]('DestroyCmHopper',_0x131b06);logger[_0xda71('0x16')](_0xda71('0x1c'),_0x131b06,JSON['stringify'](_0x22db30));_0x3bee70(_0x22db30);})[_0xda71('0x1a')](function(_0x4b1067){logger[_0xda71('0x11')]('DestroyCmHopper',_0x4b1067[_0xda71('0x12')],_0x131b06);_0x4159dd(_0x1bccdc[_0xda71('0x11')](0x1f4,_0x4b1067[_0xda71('0x12')]));});});};exports[_0xda71('0x1e')]=function(_0x5111da){var _0x38a814=this;return new Promise(function(_0x1d1e7e,_0x188490){return db[_0xda71('0x1f')][_0xda71('0x20')]()[_0xda71('0xe')](function(_0x1601d6){return db[_0xda71('0x21')][_0xda71('0x22')](function(_0xa034c9){return db[_0xda71('0x14')]['findAll']({'where':_0x5111da[_0xda71('0x6')]?_0x5111da[_0xda71('0x6')]['where']||null:null,'attributes':_0x5111da[_0xda71('0x6')]?_0x5111da['options'][_0xda71('0x9')]||null:null,'limit':_0x5111da[_0xda71('0x6')]?_0x5111da['options'][_0xda71('0xa')]||null:null,'order':_0x5111da['options']?_0x5111da[_0xda71('0x6')][_0xda71('0x23')]||null:null,'transaction':_0xa034c9,'lock':_0xa034c9[_0xda71('0x24')][_0xda71('0x25')],'include':[{'model':db[_0xda71('0x1f')],'as':_0xda71('0x26'),'attributes':_[_0xda71('0x27')](_0x1601d6)},{'model':db['User'],'as':_0xda71('0x28'),'attributes':['id',_0xda71('0x29'),_0xda71('0x2a')]}]})['then'](function(_0x3e7771){var _0x25113b=[];var _0x52af35=[];for(var _0x960398=0x0;_0x960398<_0x3e7771[_0xda71('0x2b')];_0x960398+=0x1){var _0x1ab90e=_0x3e7771[_0x960398][_0xda71('0x2c')];if(_0x1ab90e===null){_0x25113b['push'](_0x3e7771[_0x960398][_0xda71('0x2d')](_0x5111da['body'],{'transaction':_0xa034c9}));}else if(!_0x52af35[_0xda71('0x2e')](_0x1ab90e)){_0x52af35[_0xda71('0x2f')](_0x1ab90e);_0x25113b[_0xda71('0x2f')](_0x3e7771[_0x960398][_0xda71('0x2d')](_0x5111da['body'],{'transaction':_0xa034c9}));}}return BPromise[_0xda71('0x30')](_0x25113b);});})[_0xda71('0xe')](function(_0x5ebbe6){logger[_0xda71('0xf')](_0xda71('0x1e'),_0x5111da);if(_0x5ebbe6['length']>0x0){logger[_0xda71('0xf')](_0xda71('0x31'),_0x5ebbe6[0x0][_0xda71('0x32')]['id'],_0x5ebbe6[0x0][_0xda71('0x32')][_0xda71('0x33')],_0x5ebbe6[0x0][_0xda71('0x32')][_0xda71('0x34')]);}logger['debug'](_0xda71('0x1e'),_0x5111da,JSON['stringify'](_0x5ebbe6));_0x1d1e7e(_0x5ebbe6);})['catch'](function(_0x5e77f7){logger['error'](_0xda71('0x1e'),_0x5e77f7['message'],_0x5111da);_0x188490(_0x38a814['error'](0x1f4,_0x5e77f7[_0xda71('0x12')]));});});});};exports[_0xda71('0x35')]=function(_0x225143){var _0x4ac4f1=this;return new Promise(function(_0x151ae4,_0x43624b){return db['sequelize'][_0xda71('0x22')](function(_0x222593){return db[_0xda71('0x36')][_0xda71('0x17')](_0x225143[_0xda71('0x18')],{'raw':_0x225143[_0xda71('0x6')]?_0x225143[_0xda71('0x6')]['raw']===undefined?!![]:![]:!![],'transaction':_0x222593})[_0xda71('0xe')](function(){logger['info'](_0xda71('0x37'),JSON[_0xda71('0x10')](_0x225143['options'][_0xda71('0x8')]),_0x225143[_0xda71('0x6')][_0xda71('0x8')]['active']);return db['CmHopper'][_0xda71('0x1d')]({'where':_0x225143[_0xda71('0x6')]?_0x225143['options']['where']||null:null,'transaction':_0x222593});});})['then'](function(_0xe2330e){logger[_0xda71('0xf')](_0xda71('0x35'),_0x225143);logger['debug'](_0xda71('0x35'),_0x225143,JSON[_0xda71('0x10')](_0xe2330e));_0x151ae4(_0xe2330e);})[_0xda71('0x1a')](function(_0x18927a){logger[_0xda71('0x11')](_0xda71('0x35'),_0x18927a[_0xda71('0x12')],_0x225143);_0x43624b(_0x4ac4f1[_0xda71('0x11')](0x1f4,_0x18927a[_0xda71('0x12')]));});});};exports[_0xda71('0x38')]=function(_0x3dbfb){var _0x4cda4f=this;return new Promise(function(_0xfa4c48,_0x5a76e9){return db[_0xda71('0x14')][_0xda71('0x39')]({'raw':_0x3dbfb[_0xda71('0x6')]?_0x3dbfb[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x3dbfb[_0xda71('0x6')]?_0x3dbfb[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':[[db[_0xda71('0x21')]['fn'](_0xda71('0x3a'),db[_0xda71('0x21')]['fn']('IF',db[_0xda71('0x21')]['literal'](_0xda71('0x3b')+util[_0xda71('0x3c')](_0xda71('0x3d'),moment()[_0xda71('0x3c')](_0xda71('0x3e')))+_0xda71('0x3f')))),_0xda71('0x40')]]})[_0xda71('0xe')](function(_0x17a1af){logger[_0xda71('0xf')](_0xda71('0x38'),_0x3dbfb);logger[_0xda71('0x16')](_0xda71('0x38'),_0x3dbfb,JSON[_0xda71('0x10')](_0x17a1af));_0xfa4c48(_0x17a1af);})['catch'](function(_0x17e8d7){logger['error'](_0xda71('0x38'),_0x17e8d7[_0xda71('0x12')],_0x3dbfb);_0x5a76e9(_0x4cda4f['error'](0x1f4,_0x17e8d7['message']));});});};exports[_0xda71('0x41')]=function(_0x3ab779){var _0x13b39b=this;return new Promise(function(_0x587eff,_0x31c1cc){return db[_0xda71('0x1f')][_0xda71('0x20')]()['then'](function(){return db['sequelize'][_0xda71('0x22')](function(_0xd5f96c){return db[_0xda71('0x14')][_0xda71('0x39')]({'where':_0x3ab779[_0xda71('0x6')]?_0x3ab779[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':_0x3ab779[_0xda71('0x6')]?_0x3ab779[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':0x1,'order':_0x3ab779[_0xda71('0x6')]?_0x3ab779['options'][_0xda71('0x23')]||null:null,'group':db[_0xda71('0x14')][_0xda71('0x2c')],'transaction':_0xd5f96c,'lock':_0xd5f96c[_0xda71('0x24')][_0xda71('0x25')],'include':_0x3ab779['options']?_0x3ab779[_0xda71('0x6')][_0xda71('0xb')]?_[_0xda71('0xc')](_0x3ab779[_0xda71('0x6')][_0xda71('0xb')],function(_0x16e172){return{'model':db[_0x16e172[_0xda71('0xd')]],'as':_0x16e172['as'],'attributes':_0x16e172[_0xda71('0x9')],'include':_0x16e172[_0xda71('0xb')]?_[_0xda71('0xc')](_0x16e172[_0xda71('0xb')],function(_0x661ed0){return{'model':db[_0x661ed0[_0xda71('0xd')]],'as':_0x661ed0['as'],'attributes':_0x661ed0['attributes'],'include':_0x661ed0[_0xda71('0xb')]?_[_0xda71('0xc')](_0x661ed0[_0xda71('0xb')],function(_0x1fea66){return{'model':db[_0x1fea66[_0xda71('0xd')]],'as':_0x1fea66['as'],'attributes':_0x1fea66[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x5f2b2d){var _0x29eb2b=[];for(var _0x4a85af=0x0;_0x4a85af<_0x5f2b2d['length'];_0x4a85af+=0x1){_0x29eb2b[_0xda71('0x2f')](_0x5f2b2d[_0x4a85af][_0xda71('0x2d')](_0x3ab779[_0xda71('0x18')],{'transaction':_0xd5f96c}));}return BPromise[_0xda71('0x30')](_0x29eb2b);});})[_0xda71('0xe')](function(_0x501faa){logger[_0xda71('0xf')]('GetContactRecallMe',_0x3ab779);logger[_0xda71('0x16')](_0xda71('0x41'),_0x3ab779,JSON['stringify'](_0x501faa));_0x587eff(_0x501faa);})['catch'](function(_0x4bbcf8){logger['error'](_0xda71('0x41'),_0x4bbcf8['message'],_0x3ab779);_0x31c1cc(_0x13b39b[_0xda71('0x11')](0x1f4,_0x4bbcf8[_0xda71('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x4aba76){var _0x29c0ad=this;return new Promise(function(_0x2a907e,_0x98b202){db[_0xda71('0x1f')][_0xda71('0x20')]()['then'](function(_0x2b31ea){return db[_0xda71('0x14')][_0xda71('0x39')]({'raw':_0x4aba76[_0xda71('0x6')]?_0x4aba76[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x4aba76[_0xda71('0x6')]?_0x4aba76[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':_0x4aba76[_0xda71('0x6')]?_0x4aba76[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':_0x4aba76['options']?_0x4aba76[_0xda71('0x6')][_0xda71('0xa')]||null:null,'include':_0x4aba76['options']?_0x4aba76[_0xda71('0x6')][_0xda71('0xb')]?_['map'](_0x4aba76['options'][_0xda71('0xb')],function(_0x487863){return{'model':db[_0x487863['model']],'as':_0x487863['as'],'attributes':_0x487863['as']===_0xda71('0x26')?_[_0xda71('0x27')](_0x2b31ea):_0x487863[_0xda71('0x9')],'include':_0x487863['include']?_[_0xda71('0xc')](_0x487863[_0xda71('0xb')],function(_0x2a393b){return{'model':db[_0x2a393b[_0xda71('0xd')]],'as':_0x2a393b['as'],'attributes':_0x2a393b[_0xda71('0x9')],'include':_0x2a393b[_0xda71('0xb')]?_[_0xda71('0xc')](_0x2a393b[_0xda71('0xb')],function(_0x1302c7){return{'model':db[_0x1302c7['model']],'as':_0x1302c7['as'],'attributes':_0x1302c7[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x28dff1){logger['info']('GetCmHopper',_0x4aba76);logger['debug'](_0xda71('0x5'),_0x4aba76,JSON[_0xda71('0x10')](_0x28dff1));_0x2a907e(_0x28dff1);})['catch'](function(_0xc45ff2){logger[_0xda71('0x11')](_0xda71('0x5'),_0xc45ff2[_0xda71('0x12')],_0x4aba76);_0x98b202(_0x29c0ad['error'](0x1f4,_0xc45ff2[_0xda71('0x12')]));});});});};exports[_0xda71('0x42')]=function(_0x235ff7){var _0x4e9e73=this;return new Promise(function(_0x36fd14,_0x378a1b){return db[_0xda71('0x1f')][_0xda71('0x43')]({'raw':!![],'where':{'phone':_0x235ff7[_0xda71('0x6')]['where']['phone']},'attributes':['id',_0xda71('0x44')],'order':[['id',_0xda71('0x45')]]})[_0xda71('0xe')](function(_0x5d4b87){logger['info']('getContactByPhone',_0x235ff7);logger[_0xda71('0x16')](_0xda71('0x46'),_0x235ff7,JSON[_0xda71('0x10')](_0x5d4b87));_0x36fd14(_0x5d4b87);})[_0xda71('0x1a')](function(_0x2d062a){logger[_0xda71('0x11')](_0xda71('0x46'),_0x2d062a[_0xda71('0x12')],_0x235ff7);_0x378a1b(_0x4e9e73[_0xda71('0x11')](0x1f4,_0x2d062a[_0xda71('0x12')]));});});};exports['ResetActiveCalls']=function(_0x4eb034){var _0x209e7d=this;return new Promise(function(_0x3a9eda,_0x4460cd){return db['sequelize']['transaction'](function(_0x40ed54){var _0x1cc937=_0x4eb034[_0xda71('0x6')]&&_0x4eb034[_0xda71('0x6')][_0xda71('0x8')]?_0x4eb034[_0xda71('0x6')][_0xda71('0x8')]:{};return db[_0xda71('0x14')][_0xda71('0x2d')](_0x4eb034[_0xda71('0x18')],{'where':_0x1cc937,'transaction':_0x40ed54})[_0xda71('0xe')](function(_0x45883a){logger[_0xda71('0xf')]('ResetActiveCalls',_0x4eb034);logger[_0xda71('0x16')]('ResetActiveCalls',_0x4eb034,JSON[_0xda71('0x10')](_0x45883a));_0x3a9eda(_0x45883a);})[_0xda71('0x1a')](function(_0x4e39da){logger[_0xda71('0x11')](_0xda71('0x47'),_0x4e39da['message'],_0x4eb034);_0x4460cd(_0x209e7d['error'](0x1f4,_0x4e39da[_0xda71('0x12')]));});});});};exports[_0xda71('0x48')]=function(_0x53f053){var _0x531529=this;var _0x41a359=_0x53f053[_0xda71('0x18')]['where'][_0xda71('0x49')];var _0x5eea96=_0x53f053['body'][_0xda71('0x8')][_0xda71('0x4a')];var _0x45bb99=_0x53f053[_0xda71('0x18')][_0xda71('0x8')][_0xda71('0x4b')];return new Promise(function(_0x3f1ff1,_0x4c85bb){return db[_0xda71('0x14')][_0xda71('0x39')]({'where':{'voiceQueueId':{'$in':_0x41a359},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xda71('0x21')][_0xda71('0x4c')](_0xda71('0x4d')+_0x5eea96+'\x20MINUTE'),'$gt':db[_0xda71('0x21')][_0xda71('0x4c')](_0xda71('0x4e'))}},'UserId':{'$in':_0x45bb99}},'include':[{'model':db['CmContact'],'as':_0xda71('0x26')},{'model':db[_0xda71('0x4f')],'as':_0xda71('0x28'),'attributes':['id','name',_0xda71('0x2a')]},{'model':db['CmList'],'as':_0xda71('0x50')}]})[_0xda71('0xe')](function(_0x49a877){if(_0x49a877[_0xda71('0x2b')]>0x0){return db[_0xda71('0x21')]['transaction'](function(_0x426bef){return db[_0xda71('0x14')][_0xda71('0x2d')]({'recallmeNotifiedDate':db[_0xda71('0x21')][_0xda71('0x4c')](_0xda71('0x4e'))},{'where':{'id':{'$in':_[_0xda71('0xc')](_0x49a877,'id')}},'transaction':_0x426bef})['then'](function(){_0x3f1ff1(_0x49a877);})[_0xda71('0x1a')](function(_0x3ed2a8){logger[_0xda71('0x11')]('CmHopperHandlePreviewRecallNotifications',_0x3ed2a8[_0xda71('0x12')],_0x53f053);_0x4c85bb(_0x531529[_0xda71('0x11')](0x1f4,_0x3ed2a8[_0xda71('0x12')]));});})[_0xda71('0x1a')](function(_0x23fe0c){logger[_0xda71('0x11')](_0xda71('0x48'),_0x23fe0c[_0xda71('0x12')],_0x53f053);_0x4c85bb(_0x531529['error'](0x1f4,_0x23fe0c[_0xda71('0x12')]));});}else{_0x3f1ff1(_0x49a877);}});});};
\ No newline at end of file
+var _0x94db=['GetContactDialer','describe','transaction','order','LOCK','UPDATE','Contact','User','Agent','voicePause','length','UserId','push','includes','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','MoveContactManagedDialer','sequelize','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','destroy','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','\x22%s\x22','\x20,\x201,\x20null','GetContactRecallMe','CmContact','GetCmHopperPreview','findOne','phone','dialTimezone','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','NOW()','name','CmList','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','GetCmHopper','debug','stringify','catch','error','message','ShowCmHopper','find','info','CreateCmHopper','create','UpdateCmHopper','update','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','DestroyCmHopper'];(function(_0x4b6778,_0x505a76){var _0x22dbb9=function(_0x4881eb){while(--_0x4881eb){_0x4b6778['push'](_0x4b6778['shift']());}};_0x22dbb9(++_0x505a76);}(_0x94db,0x1b8));var _0xb94d=function(_0xb88439,_0x36cbc6){_0xb88439=_0xb88439-0x0;var _0x3df599=_0x94db[_0xb88439];return _0x3df599;};'use strict';var _=require(_0xb94d('0x0'));var util=require(_0xb94d('0x1'));var moment=require(_0xb94d('0x2'));var BPromise=require(_0xb94d('0x3'));var db=require(_0xb94d('0x4'))['db'];var logger=require(_0xb94d('0x5'))(_0xb94d('0x6'));exports['GetCmHopper']=function(_0x2c06da){var _0x1d4f74=this;return new Promise(function(_0x19b9c3,_0xf76590){return db[_0xb94d('0x7')][_0xb94d('0x8')]({'raw':_0x2c06da['options']?_0x2c06da[_0xb94d('0x9')][_0xb94d('0xa')]===undefined?!![]:![]:!![],'where':_0x2c06da[_0xb94d('0x9')]?_0x2c06da[_0xb94d('0x9')][_0xb94d('0xb')]||null:null,'attributes':_0x2c06da[_0xb94d('0x9')]?_0x2c06da['options'][_0xb94d('0xc')]||null:null,'limit':_0x2c06da[_0xb94d('0x9')]?_0x2c06da[_0xb94d('0x9')][_0xb94d('0xd')]||null:null,'include':_0x2c06da[_0xb94d('0x9')]?_0x2c06da[_0xb94d('0x9')][_0xb94d('0xe')]?_[_0xb94d('0xf')](_0x2c06da[_0xb94d('0x9')]['include'],function(_0x3c73ec){return{'model':db[_0x3c73ec[_0xb94d('0x10')]],'as':_0x3c73ec['as'],'attributes':_0x3c73ec[_0xb94d('0xc')],'include':_0x3c73ec[_0xb94d('0xe')]?_[_0xb94d('0xf')](_0x3c73ec[_0xb94d('0xe')],function(_0x126e37){return{'model':db[_0x126e37[_0xb94d('0x10')]],'as':_0x126e37['as'],'attributes':_0x126e37['attributes'],'include':_0x126e37[_0xb94d('0xe')]?_['map'](_0x126e37[_0xb94d('0xe')],function(_0x5a50d7){return{'model':db[_0x5a50d7[_0xb94d('0x10')]],'as':_0x5a50d7['as'],'attributes':_0x5a50d7['attributes']};}):[]};}):[]};}):[]:[]})[_0xb94d('0x11')](function(_0x3d0714){logger['info'](_0xb94d('0x12'),_0x2c06da);logger[_0xb94d('0x13')]('GetCmHopper',_0x2c06da,JSON[_0xb94d('0x14')](_0x3d0714));_0x19b9c3(_0x3d0714);})[_0xb94d('0x15')](function(_0xff8eda){logger[_0xb94d('0x16')]('GetCmHopper',_0xff8eda['message'],_0x2c06da);_0xf76590(_0x1d4f74[_0xb94d('0x16')](0x1f4,_0xff8eda[_0xb94d('0x17')]));});});};exports[_0xb94d('0x18')]=function(_0x3b27fe){var _0x42423f=this;return new Promise(function(_0x40a4a0,_0x138920){return db[_0xb94d('0x7')][_0xb94d('0x19')]({'raw':_0x3b27fe[_0xb94d('0x9')]?_0x3b27fe[_0xb94d('0x9')]['raw']===undefined?!![]:![]:!![],'where':_0x3b27fe[_0xb94d('0x9')]?_0x3b27fe[_0xb94d('0x9')]['where']||null:null,'attributes':_0x3b27fe[_0xb94d('0x9')]?_0x3b27fe[_0xb94d('0x9')][_0xb94d('0xc')]||null:null,'include':_0x3b27fe[_0xb94d('0x9')]?_0x3b27fe[_0xb94d('0x9')]['include']?_['map'](_0x3b27fe['options'][_0xb94d('0xe')],function(_0x3c9b1a){return{'model':db[_0x3c9b1a[_0xb94d('0x10')]],'as':_0x3c9b1a['as'],'attributes':_0x3c9b1a[_0xb94d('0xc')],'include':_0x3c9b1a[_0xb94d('0xe')]?_['map'](_0x3c9b1a[_0xb94d('0xe')],function(_0x270cf4){return{'model':db[_0x270cf4[_0xb94d('0x10')]],'as':_0x270cf4['as'],'attributes':_0x270cf4['attributes'],'include':_0x270cf4[_0xb94d('0xe')]?_[_0xb94d('0xf')](_0x270cf4['include'],function(_0x383e94){return{'model':db[_0x383e94[_0xb94d('0x10')]],'as':_0x383e94['as'],'attributes':_0x383e94['attributes']};}):[]};}):[]};}):[]:[]})[_0xb94d('0x11')](function(_0x8ab9c){logger[_0xb94d('0x1a')](_0xb94d('0x18'),_0x3b27fe);logger[_0xb94d('0x13')](_0xb94d('0x18'),_0x3b27fe,JSON['stringify'](_0x8ab9c));_0x40a4a0(_0x8ab9c);})[_0xb94d('0x15')](function(_0x121d7c){logger[_0xb94d('0x16')]('ShowCmHopper',_0x121d7c[_0xb94d('0x17')],_0x3b27fe);_0x138920(_0x42423f['error'](0x1f4,_0x121d7c['message']));});});};exports[_0xb94d('0x1b')]=function(_0x8b62f3){var _0x280aff=this;return new Promise(function(_0x21d57e,_0xb8fd81){return db[_0xb94d('0x7')][_0xb94d('0x1c')](_0x8b62f3['body'],{'raw':_0x8b62f3[_0xb94d('0x9')]?_0x8b62f3[_0xb94d('0x9')]['raw']===undefined?!![]:![]:!![]})[_0xb94d('0x11')](function(_0x3c2985){logger['info']('CreateCmHopper',_0x8b62f3);logger['debug'](_0xb94d('0x1b'),_0x8b62f3,JSON['stringify'](_0x3c2985));_0x21d57e(_0x3c2985);})[_0xb94d('0x15')](function(_0x430fc4){logger[_0xb94d('0x16')](_0xb94d('0x1b'),_0x430fc4[_0xb94d('0x17')],_0x8b62f3);_0xb8fd81(_0x280aff[_0xb94d('0x16')](0x1f4,_0x430fc4[_0xb94d('0x17')]));});});};exports[_0xb94d('0x1d')]=function(_0x3c146f){var _0x3245f0=this;return new Promise(function(_0x367849,_0x270c2a){return db[_0xb94d('0x7')][_0xb94d('0x1e')](_0x3c146f[_0xb94d('0x1f')],{'raw':_0x3c146f['options']?_0x3c146f['options'][_0xb94d('0xa')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c146f[_0xb94d('0x9')]?_0x3c146f[_0xb94d('0x9')][_0xb94d('0xb')]||null:null,'attributes':_0x3c146f['options']?_0x3c146f[_0xb94d('0x9')][_0xb94d('0xc')]||null:null,'limit':_0x3c146f[_0xb94d('0x9')]?_0x3c146f[_0xb94d('0x9')][_0xb94d('0xd')]||null:null})['then'](function(_0x47d34f){logger['info'](_0xb94d('0x1d'),_0x3c146f);logger['info'](_0xb94d('0x20'),JSON[_0xb94d('0x14')](_0x3c146f[_0xb94d('0x9')][_0xb94d('0xb')]),_0x3c146f['body']['active']);logger[_0xb94d('0x13')](_0xb94d('0x1d'),_0x3c146f,JSON[_0xb94d('0x14')](_0x47d34f));_0x367849(_0x47d34f);})[_0xb94d('0x15')](function(_0x1cd943){logger[_0xb94d('0x16')](_0xb94d('0x1d'),_0x1cd943['message'],_0x3c146f);_0x270c2a(_0x3245f0[_0xb94d('0x16')](0x1f4,_0x1cd943[_0xb94d('0x17')]));});});};exports['DestroyCmHopper']=function(_0x517bce){var _0x38eb86=this;return new Promise(function(_0x39efc0,_0x4fee3d){return db[_0xb94d('0x7')]['destroy']({'where':_0x517bce[_0xb94d('0x9')]?_0x517bce[_0xb94d('0x9')]['where']||null:null})[_0xb94d('0x11')](function(_0x52d3eb){logger['info'](_0xb94d('0x21'),_0x517bce);logger[_0xb94d('0x13')](_0xb94d('0x21'),_0x517bce,JSON[_0xb94d('0x14')](_0x52d3eb));_0x39efc0(_0x52d3eb);})[_0xb94d('0x15')](function(_0x3baf0a){logger[_0xb94d('0x16')]('DestroyCmHopper',_0x3baf0a['message'],_0x517bce);_0x4fee3d(_0x38eb86[_0xb94d('0x16')](0x1f4,_0x3baf0a[_0xb94d('0x17')]));});});};exports[_0xb94d('0x22')]=function(_0x20b5df){var _0xf7709d=this;return new Promise(function(_0x3fe4e3,_0x1127b6){return db['CmContact'][_0xb94d('0x23')]()[_0xb94d('0x11')](function(_0x56d6c7){return db['sequelize'][_0xb94d('0x24')](function(_0x153e15){return db[_0xb94d('0x7')]['findAll']({'where':_0x20b5df['options']?_0x20b5df[_0xb94d('0x9')]['where']||null:null,'attributes':_0x20b5df[_0xb94d('0x9')]?_0x20b5df[_0xb94d('0x9')][_0xb94d('0xc')]||null:null,'limit':_0x20b5df['options']?_0x20b5df[_0xb94d('0x9')][_0xb94d('0xd')]||null:null,'order':_0x20b5df['options']?_0x20b5df[_0xb94d('0x9')][_0xb94d('0x25')]||null:null,'transaction':_0x153e15,'lock':_0x153e15[_0xb94d('0x26')][_0xb94d('0x27')],'include':[{'model':db['CmContact'],'as':_0xb94d('0x28'),'attributes':_['keys'](_0x56d6c7)},{'model':db[_0xb94d('0x29')],'as':_0xb94d('0x2a'),'attributes':['id','name',_0xb94d('0x2b')]}]})[_0xb94d('0x11')](function(_0x49bab5){var _0x1ebb01=[];var _0x4e785a=[];for(var _0x47da6c=0x0;_0x47da6c<_0x49bab5[_0xb94d('0x2c')];_0x47da6c+=0x1){var _0xbe3562=_0x49bab5[_0x47da6c][_0xb94d('0x2d')];if(_0xbe3562===null){_0x1ebb01[_0xb94d('0x2e')](_0x49bab5[_0x47da6c][_0xb94d('0x1e')](_0x20b5df['body'],{'transaction':_0x153e15}));}else if(!_0x4e785a[_0xb94d('0x2f')](_0xbe3562)){_0x4e785a[_0xb94d('0x2e')](_0xbe3562);_0x1ebb01['push'](_0x49bab5[_0x47da6c][_0xb94d('0x1e')](_0x20b5df['body'],{'transaction':_0x153e15}));}}return BPromise[_0xb94d('0x30')](_0x1ebb01);});})[_0xb94d('0x11')](function(_0x1cafa8){logger[_0xb94d('0x1a')]('GetContactDialer',_0x20b5df);if(_0x1cafa8['length']>0x0){logger[_0xb94d('0x1a')](_0xb94d('0x31'),_0x1cafa8[0x0][_0xb94d('0x32')]['id'],_0x1cafa8[0x0][_0xb94d('0x32')][_0xb94d('0x33')],_0x1cafa8[0x0]['dataValues'][_0xb94d('0x34')]);}logger[_0xb94d('0x13')](_0xb94d('0x22'),_0x20b5df,JSON[_0xb94d('0x14')](_0x1cafa8));_0x3fe4e3(_0x1cafa8);})['catch'](function(_0x419067){logger[_0xb94d('0x16')](_0xb94d('0x22'),_0x419067['message'],_0x20b5df);_0x1127b6(_0xf7709d[_0xb94d('0x16')](0x1f4,_0x419067[_0xb94d('0x17')]));});});});};exports[_0xb94d('0x35')]=function(_0x4e4d49){var _0x1cd7bb=this;return new Promise(function(_0x2c9787,_0x155758){return db[_0xb94d('0x36')][_0xb94d('0x24')](function(_0x15870b){return db[_0xb94d('0x37')][_0xb94d('0x1c')](_0x4e4d49[_0xb94d('0x1f')],{'raw':_0x4e4d49['options']?_0x4e4d49[_0xb94d('0x9')][_0xb94d('0xa')]===undefined?!![]:![]:!![],'transaction':_0x15870b})[_0xb94d('0x11')](function(){logger[_0xb94d('0x1a')](_0xb94d('0x38'),JSON[_0xb94d('0x14')](_0x4e4d49[_0xb94d('0x9')][_0xb94d('0xb')]),_0x4e4d49[_0xb94d('0x9')][_0xb94d('0xb')]['active']);return db[_0xb94d('0x7')][_0xb94d('0x39')]({'where':_0x4e4d49[_0xb94d('0x9')]?_0x4e4d49[_0xb94d('0x9')]['where']||null:null,'transaction':_0x15870b});});})[_0xb94d('0x11')](function(_0x558d24){logger['info'](_0xb94d('0x35'),_0x4e4d49);logger[_0xb94d('0x13')]('MoveContactManagedDialer',_0x4e4d49,JSON[_0xb94d('0x14')](_0x558d24));_0x2c9787(_0x558d24);})[_0xb94d('0x15')](function(_0xb3e109){logger[_0xb94d('0x16')](_0xb94d('0x35'),_0xb3e109[_0xb94d('0x17')],_0x4e4d49);_0x155758(_0x1cd7bb[_0xb94d('0x16')](0x1f4,_0xb3e109[_0xb94d('0x17')]));});});};exports[_0xb94d('0x3a')]=function(_0x17d16c){var _0x72d6b6=this;return new Promise(function(_0x6caba8,_0x586b72){return db[_0xb94d('0x7')]['findAll']({'raw':_0x17d16c[_0xb94d('0x9')]?_0x17d16c[_0xb94d('0x9')][_0xb94d('0xa')]===undefined?!![]:![]:!![],'where':_0x17d16c[_0xb94d('0x9')]?_0x17d16c[_0xb94d('0x9')][_0xb94d('0xb')]||null:null,'attributes':[[db[_0xb94d('0x36')]['fn'](_0xb94d('0x3b'),db[_0xb94d('0x36')]['fn']('IF',db[_0xb94d('0x36')][_0xb94d('0x3c')](_0xb94d('0x3d')+util['format'](_0xb94d('0x3e'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'))+_0xb94d('0x3f')))),'contactsRescheduled']]})['then'](function(_0x3d2842){logger[_0xb94d('0x1a')](_0xb94d('0x3a'),_0x17d16c);logger[_0xb94d('0x13')](_0xb94d('0x3a'),_0x17d16c,JSON[_0xb94d('0x14')](_0x3d2842));_0x6caba8(_0x3d2842);})['catch'](function(_0x36a197){logger[_0xb94d('0x16')](_0xb94d('0x3a'),_0x36a197[_0xb94d('0x17')],_0x17d16c);_0x586b72(_0x72d6b6[_0xb94d('0x16')](0x1f4,_0x36a197[_0xb94d('0x17')]));});});};exports[_0xb94d('0x40')]=function(_0x578786){var _0x24b57c=this;return new Promise(function(_0xee2cd8,_0x5bc7fd){return db[_0xb94d('0x41')][_0xb94d('0x23')]()[_0xb94d('0x11')](function(){return db[_0xb94d('0x36')][_0xb94d('0x24')](function(_0x52bab8){return db[_0xb94d('0x7')][_0xb94d('0x8')]({'where':_0x578786[_0xb94d('0x9')]?_0x578786[_0xb94d('0x9')][_0xb94d('0xb')]||null:null,'attributes':_0x578786['options']?_0x578786[_0xb94d('0x9')][_0xb94d('0xc')]||null:null,'limit':0x1,'order':_0x578786[_0xb94d('0x9')]?_0x578786[_0xb94d('0x9')][_0xb94d('0x25')]||null:null,'group':db['CmHopper'][_0xb94d('0x2d')],'transaction':_0x52bab8,'lock':_0x52bab8[_0xb94d('0x26')][_0xb94d('0x27')],'include':_0x578786['options']?_0x578786[_0xb94d('0x9')][_0xb94d('0xe')]?_[_0xb94d('0xf')](_0x578786[_0xb94d('0x9')]['include'],function(_0x4dd171){return{'model':db[_0x4dd171[_0xb94d('0x10')]],'as':_0x4dd171['as'],'attributes':_0x4dd171[_0xb94d('0xc')],'include':_0x4dd171[_0xb94d('0xe')]?_[_0xb94d('0xf')](_0x4dd171[_0xb94d('0xe')],function(_0x4ecf15){return{'model':db[_0x4ecf15[_0xb94d('0x10')]],'as':_0x4ecf15['as'],'attributes':_0x4ecf15['attributes'],'include':_0x4ecf15['include']?_[_0xb94d('0xf')](_0x4ecf15[_0xb94d('0xe')],function(_0x11a4bd){return{'model':db[_0x11a4bd[_0xb94d('0x10')]],'as':_0x11a4bd['as'],'attributes':_0x11a4bd[_0xb94d('0xc')]};}):[]};}):[]};}):[]:[]})[_0xb94d('0x11')](function(_0xa514fa){var _0x5e2071=[];for(var _0x2118d1=0x0;_0x2118d1<_0xa514fa[_0xb94d('0x2c')];_0x2118d1+=0x1){_0x5e2071[_0xb94d('0x2e')](_0xa514fa[_0x2118d1]['update'](_0x578786['body'],{'transaction':_0x52bab8}));}return BPromise['all'](_0x5e2071);});})[_0xb94d('0x11')](function(_0x367ce7){logger['info'](_0xb94d('0x40'),_0x578786);logger[_0xb94d('0x13')](_0xb94d('0x40'),_0x578786,JSON['stringify'](_0x367ce7));_0xee2cd8(_0x367ce7);})[_0xb94d('0x15')](function(_0x50e4bb){logger['error']('GetContactRecallMe',_0x50e4bb[_0xb94d('0x17')],_0x578786);_0x5bc7fd(_0x24b57c[_0xb94d('0x16')](0x1f4,_0x50e4bb[_0xb94d('0x17')]));});});});};exports[_0xb94d('0x42')]=function(_0x418ba0){var _0x25d693=this;return new Promise(function(_0x59e200,_0x284b9f){db[_0xb94d('0x41')][_0xb94d('0x23')]()['then'](function(_0x487a26){return db[_0xb94d('0x7')]['findAll']({'raw':_0x418ba0[_0xb94d('0x9')]?_0x418ba0[_0xb94d('0x9')][_0xb94d('0xa')]===undefined?!![]:![]:!![],'where':_0x418ba0['options']?_0x418ba0[_0xb94d('0x9')][_0xb94d('0xb')]||null:null,'attributes':_0x418ba0['options']?_0x418ba0[_0xb94d('0x9')]['attributes']||null:null,'limit':_0x418ba0[_0xb94d('0x9')]?_0x418ba0['options']['limit']||null:null,'include':_0x418ba0[_0xb94d('0x9')]?_0x418ba0[_0xb94d('0x9')][_0xb94d('0xe')]?_[_0xb94d('0xf')](_0x418ba0['options']['include'],function(_0x131b94){return{'model':db[_0x131b94[_0xb94d('0x10')]],'as':_0x131b94['as'],'attributes':_0x131b94['as']===_0xb94d('0x28')?_['keys'](_0x487a26):_0x131b94['attributes'],'include':_0x131b94[_0xb94d('0xe')]?_['map'](_0x131b94['include'],function(_0x4c58b5){return{'model':db[_0x4c58b5[_0xb94d('0x10')]],'as':_0x4c58b5['as'],'attributes':_0x4c58b5['attributes'],'include':_0x4c58b5['include']?_[_0xb94d('0xf')](_0x4c58b5[_0xb94d('0xe')],function(_0x4d8203){return{'model':db[_0x4d8203[_0xb94d('0x10')]],'as':_0x4d8203['as'],'attributes':_0x4d8203['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x199d3e){logger[_0xb94d('0x1a')](_0xb94d('0x12'),_0x418ba0);logger[_0xb94d('0x13')](_0xb94d('0x12'),_0x418ba0,JSON[_0xb94d('0x14')](_0x199d3e));_0x59e200(_0x199d3e);})[_0xb94d('0x15')](function(_0x3f9d3a){logger['error']('GetCmHopper',_0x3f9d3a[_0xb94d('0x17')],_0x418ba0);_0x284b9f(_0x25d693[_0xb94d('0x16')](0x1f4,_0x3f9d3a[_0xb94d('0x17')]));});});});};exports['GetContactByPhone']=function(_0x1f4425){var _0x8f56f6=this;return new Promise(function(_0x5a2cb4,_0xf9ac50){return db[_0xb94d('0x41')][_0xb94d('0x43')]({'raw':!![],'where':{'phone':_0x1f4425['options'][_0xb94d('0xb')][_0xb94d('0x44')]},'attributes':['id',_0xb94d('0x45')],'order':[['id','DESC']]})[_0xb94d('0x11')](function(_0x3c76b0){logger['info'](_0xb94d('0x46'),_0x1f4425);logger[_0xb94d('0x13')]('getContactByPhone',_0x1f4425,JSON['stringify'](_0x3c76b0));_0x5a2cb4(_0x3c76b0);})[_0xb94d('0x15')](function(_0x3b65b7){logger[_0xb94d('0x16')](_0xb94d('0x46'),_0x3b65b7['message'],_0x1f4425);_0xf9ac50(_0x8f56f6['error'](0x1f4,_0x3b65b7[_0xb94d('0x17')]));});});};exports[_0xb94d('0x47')]=function(_0x2bb178){var _0x3c4fa2=this;return new Promise(function(_0x568d28,_0x55ed42){return db[_0xb94d('0x36')][_0xb94d('0x24')](function(_0x367264){var _0x3c6222=_0x2bb178[_0xb94d('0x9')]&&_0x2bb178[_0xb94d('0x9')][_0xb94d('0xb')]?_0x2bb178['options'][_0xb94d('0xb')]:{};return db[_0xb94d('0x7')][_0xb94d('0x1e')](_0x2bb178[_0xb94d('0x1f')],{'where':_0x3c6222,'transaction':_0x367264})[_0xb94d('0x11')](function(_0x54850b){logger[_0xb94d('0x1a')](_0xb94d('0x47'),_0x2bb178);logger['debug'](_0xb94d('0x47'),_0x2bb178,JSON[_0xb94d('0x14')](_0x54850b));_0x568d28(_0x54850b);})['catch'](function(_0x2fd200){logger['error']('ResetActiveCalls',_0x2fd200['message'],_0x2bb178);_0x55ed42(_0x3c4fa2[_0xb94d('0x16')](0x1f4,_0x2fd200['message']));});});});};exports[_0xb94d('0x48')]=function(_0x20a1a3){var _0x2f8a38=this;var _0x62f8=_0x20a1a3[_0xb94d('0x1f')]['where'][_0xb94d('0x49')];var _0x166179=_0x20a1a3[_0xb94d('0x1f')]['where']['interval'];var _0x3fcb64=_0x20a1a3[_0xb94d('0x1f')][_0xb94d('0xb')][_0xb94d('0x4a')];return new Promise(function(_0x2e804f,_0x364bb4){return db[_0xb94d('0x7')]['findAll']({'where':{'voiceQueueId':{'$in':_0x62f8},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xb94d('0x36')][_0xb94d('0x3c')](_0xb94d('0x4b')+_0x166179+'\x20MINUTE'),'$gt':db['sequelize'][_0xb94d('0x3c')](_0xb94d('0x4c'))}},'UserId':{'$in':_0x3fcb64}},'include':[{'model':db[_0xb94d('0x41')],'as':'Contact'},{'model':db[_0xb94d('0x29')],'as':_0xb94d('0x2a'),'attributes':['id',_0xb94d('0x4d'),'voicePause']},{'model':db[_0xb94d('0x4e')],'as':'List'}]})[_0xb94d('0x11')](function(_0x53efd2){if(_0x53efd2[_0xb94d('0x2c')]>0x0){return db[_0xb94d('0x36')][_0xb94d('0x24')](function(_0x24980b){return db[_0xb94d('0x7')][_0xb94d('0x1e')]({'recallmeNotifiedDate':db[_0xb94d('0x36')][_0xb94d('0x3c')](_0xb94d('0x4c'))},{'where':{'id':{'$in':_['map'](_0x53efd2,'id')}},'transaction':_0x24980b})[_0xb94d('0x11')](function(){_0x2e804f(_0x53efd2);})[_0xb94d('0x15')](function(_0x3e0fe9){logger[_0xb94d('0x16')]('CmHopperHandlePreviewRecallNotifications',_0x3e0fe9[_0xb94d('0x17')],_0x20a1a3);_0x364bb4(_0x2f8a38['error'](0x1f4,_0x3e0fe9[_0xb94d('0x17')]));});})[_0xb94d('0x15')](function(_0x4f7aa3){logger[_0xb94d('0x16')](_0xb94d('0x48'),_0x4f7aa3['message'],_0x20a1a3);_0x364bb4(_0x2f8a38[_0xb94d('0x16')](0x1f4,_0x4f7aa3[_0xb94d('0x17')]));});}else{_0x2e804f(_0x53efd2);}});});};
\ No newline at end of file
index c6902c1..3ea2230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x515c=['isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/timezones','/:id','show','/:id/previewrecall','post','create','/preview','getPreview','/timezone','delete','destroy','exports','express','Router','../../components/auth/service','./cmHopper.controller','get'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x515c,0xca));var _0xc515=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x515c[_0x20a584];return _0x4b41a8;};'use strict';var express=require(_0xc515('0x0'));var router=express[_0xc515('0x1')]();var auth=require(_0xc515('0x2'));var controller=require(_0xc515('0x3'));router[_0xc515('0x4')]('/',auth[_0xc515('0x5')](),controller[_0xc515('0x6')]);router[_0xc515('0x4')](_0xc515('0x7'),auth[_0xc515('0x5')](),controller[_0xc515('0x8')]);router[_0xc515('0x4')](_0xc515('0x9'),auth['isAuthenticated'](),controller[_0xc515('0xa')]);router[_0xc515('0x4')](_0xc515('0xb'),auth[_0xc515('0x5')](),controller['getTimezones']);router['get'](_0xc515('0xc'),auth[_0xc515('0x5')](),controller[_0xc515('0xd')]);router[_0xc515('0x4')](_0xc515('0xe'),auth[_0xc515('0x5')](),controller['getPreviewRecall']);router[_0xc515('0xf')]('/',auth[_0xc515('0x5')](),controller[_0xc515('0x10')]);router[_0xc515('0xf')](_0xc515('0x11'),auth[_0xc515('0x5')](),controller[_0xc515('0x12')]);router[_0xc515('0xf')](_0xc515('0x13'),auth['isAuthenticated'](),controller['getTimezone']);router['put'](_0xc515('0xc'),auth[_0xc515('0x5')](),controller['update']);router[_0xc515('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xc515('0x15')]);module[_0xc515('0x16')]=router;
\ No newline at end of file
+var _0x4b63=['getPreview','/timezone','put','update','delete','destroy','exports','express','Router','../../components/auth/service','./cmHopper.controller','isAuthenticated','get','/describe','describe','/opencontacts','/timezones','getTimezones','/:id','/:id/previewrecall','getPreviewRecall','post','/preview'];(function(_0x116cde,_0x315b6e){var _0x2ada78=function(_0x453187){while(--_0x453187){_0x116cde['push'](_0x116cde['shift']());}};_0x2ada78(++_0x315b6e);}(_0x4b63,0xd6));var _0x34b6=function(_0x1e196b,_0x175aa7){_0x1e196b=_0x1e196b-0x0;var _0x330e6d=_0x4b63[_0x1e196b];return _0x330e6d;};'use strict';var express=require(_0x34b6('0x0'));var router=express[_0x34b6('0x1')]();var auth=require(_0x34b6('0x2'));var controller=require(_0x34b6('0x3'));router['get']('/',auth[_0x34b6('0x4')](),controller['index']);router[_0x34b6('0x5')](_0x34b6('0x6'),auth[_0x34b6('0x4')](),controller[_0x34b6('0x7')]);router[_0x34b6('0x5')](_0x34b6('0x8'),auth[_0x34b6('0x4')](),controller['getOpenContacts']);router[_0x34b6('0x5')](_0x34b6('0x9'),auth[_0x34b6('0x4')](),controller[_0x34b6('0xa')]);router[_0x34b6('0x5')](_0x34b6('0xb'),auth[_0x34b6('0x4')](),controller['show']);router[_0x34b6('0x5')](_0x34b6('0xc'),auth['isAuthenticated'](),controller[_0x34b6('0xd')]);router['post']('/',auth[_0x34b6('0x4')](),controller['create']);router[_0x34b6('0xe')](_0x34b6('0xf'),auth['isAuthenticated'](),controller[_0x34b6('0x10')]);router[_0x34b6('0xe')](_0x34b6('0x11'),auth[_0x34b6('0x4')](),controller['getTimezone']);router[_0x34b6('0x12')](_0x34b6('0xb'),auth[_0x34b6('0x4')](),controller[_0x34b6('0x13')]);router[_0x34b6('0x14')](_0x34b6('0xb'),auth[_0x34b6('0x4')](),controller[_0x34b6('0x15')]);module[_0x34b6('0x16')]=router;
\ No newline at end of file
index a566635..ecb3884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91d7=['exports','INTEGER','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize'];(function(_0x13b442,_0x448c33){var _0x49d09c=function(_0x477277){while(--_0x477277){_0x13b442['push'](_0x13b442['shift']());}};_0x49d09c(++_0x448c33);}(_0x91d7,0xc6));var _0x791d=function(_0x22fbca,_0x2ac57c){_0x22fbca=_0x22fbca-0x0;var _0x5d6158=_0x91d7[_0x22fbca];return _0x5d6158;};'use strict';var moment=require(_0x791d('0x0'));var Sequelize=require(_0x791d('0x1'));module[_0x791d('0x2')]={'CmHopperId':{'type':Sequelize[_0x791d('0x3')]},'phone':{'type':Sequelize[_0x791d('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x791d('0x5')],'defaultValue':moment()[_0x791d('0x6')](_0x791d('0x7'))},'countbusyretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x05d5=['INTEGER','STRING','YYYY-MM-DD\x20HH:mm:ss','moment'];(function(_0x4fd1e9,_0x5e61f6){var _0x3577ae=function(_0x2ae094){while(--_0x2ae094){_0x4fd1e9['push'](_0x4fd1e9['shift']());}};_0x3577ae(++_0x5e61f6);}(_0x05d5,0x10b));var _0x505d=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x05d5[_0x2a6809];return _0x11c371;};'use strict';var moment=require(_0x505d('0x0'));var Sequelize=require('sequelize');module['exports']={'CmHopperId':{'type':Sequelize[_0x505d('0x1')]},'phone':{'type':Sequelize[_0x505d('0x2')],'allowNull':![]},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format'](_0x505d('0x3'))},'countbusyretry':{'type':Sequelize[_0x505d('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x505d('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x505d('0x1')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x505d('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x505d('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x505d('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x505d('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index b244fcc..a68ed20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36fa=['request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','end','status','json','limit','undefined','offset','count','apply','then','destroy','get','CmHopperAdditionalPhones','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','CmHopperAdditionalPhone','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x36fa,0xf5));var _0xa36f=function(_0x5c809a,_0x3d5bc9){_0x5c809a=_0x5c809a-0x0;var _0x41def9=_0x36fa[_0x5c809a];return _0x41def9;};'use strict';var emlformat=require(_0xa36f('0x0'));var rimraf=require(_0xa36f('0x1'));var zipdir=require(_0xa36f('0x2'));var jsonpatch=require(_0xa36f('0x3'));var rp=require(_0xa36f('0x4'));var moment=require('moment');var BPromise=require(_0xa36f('0x5'));var Mustache=require(_0xa36f('0x6'));var util=require(_0xa36f('0x7'));var path=require(_0xa36f('0x8'));var sox=require(_0xa36f('0x9'));var csv=require(_0xa36f('0xa'));var ejs=require(_0xa36f('0xb'));var fs=require('fs');var fs_extra=require(_0xa36f('0xc'));var _=require(_0xa36f('0xd'));var squel=require('squel');var crypto=require(_0xa36f('0xe'));var jsforce=require(_0xa36f('0xf'));var deskjs=require(_0xa36f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa36f('0x11'));var Papa=require('papaparse');var Redis=require(_0xa36f('0x12'));var authService=require(_0xa36f('0x13'));var qs=require(_0xa36f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa36f('0x15'));var logger=require(_0xa36f('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa36f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x955fe5,_0x3230a5){_0x3230a5=_0x3230a5||0xcc;return function(_0x16f8d0){if(_0x16f8d0){return _0x955fe5['sendStatus'](_0x3230a5);}return _0x955fe5['status'](_0x3230a5)[_0xa36f('0x18')]();};}function respondWithResult(_0x35655f,_0x4dbf60){_0x4dbf60=_0x4dbf60||0xc8;return function(_0x15de9d){if(_0x15de9d){return _0x35655f[_0xa36f('0x19')](_0x4dbf60)[_0xa36f('0x1a')](_0x15de9d);}};}function respondWithFilteredResult(_0x40acdd,_0x5a61e1){return function(_0x222277){if(_0x222277){var _0x5a731f=typeof _0x5a61e1['offset']==='undefined'&&typeof _0x5a61e1[_0xa36f('0x1b')]===_0xa36f('0x1c');var _0x99640a=_0x222277['count'];var _0x1d9f77=_0x5a731f?0x0:_0x5a61e1[_0xa36f('0x1d')];var _0x3097f8=_0x5a731f?_0x222277[_0xa36f('0x1e')]:_0x5a61e1[_0xa36f('0x1d')]+_0x5a61e1[_0xa36f('0x1b')];var _0x3ccd7d;if(_0x3097f8>=_0x99640a){_0x3097f8=_0x99640a;_0x3ccd7d=0xc8;}else{_0x3ccd7d=0xce;}_0x40acdd['status'](_0x3ccd7d);return _0x40acdd['set']('Content-Range',_0x1d9f77+'-'+_0x3097f8+'/'+_0x99640a)[_0xa36f('0x1a')](_0x222277);}return null;};}function patchUpdates(_0xb981a9){return function(_0x3c809){try{jsonpatch[_0xa36f('0x1f')](_0x3c809,_0xb981a9,!![]);}catch(_0x1d39c7){return BPromise['reject'](_0x1d39c7);}return _0x3c809['save']();};}function saveUpdates(_0x213ccc,_0x56c17b){return function(_0x318599){if(_0x318599){return _0x318599['update'](_0x213ccc)[_0xa36f('0x20')](function(_0x23911c){return _0x23911c;});}return null;};}function removeEntity(_0x2b4b9f,_0x8666cd){return function(_0xeb45b1){if(_0xeb45b1){return _0xeb45b1[_0xa36f('0x21')]()['then'](function(){var _0x2cff33=_0xeb45b1[_0xa36f('0x22')]({'plain':!![]});var _0x4f124f=_0xa36f('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0x4f124f,'resourceId':_0x2cff33['id']}})['then'](function(){return _0xeb45b1;});})[_0xa36f('0x20')](function(){_0x2b4b9f[_0xa36f('0x19')](0xcc)[_0xa36f('0x18')]();});}};}function handleEntityNotFound(_0x1e3d27,_0x5a5ffa){return function(_0x40b579){if(!_0x40b579){_0x1e3d27[_0xa36f('0x24')](0x194);}return _0x40b579;};}function handleError(_0x38850b,_0x397e8c){_0x397e8c=_0x397e8c||0x1f4;return function(_0x4be6f7){logger[_0xa36f('0x25')](_0x4be6f7[_0xa36f('0x26')]);if(_0x4be6f7[_0xa36f('0x27')]){delete _0x4be6f7[_0xa36f('0x27')];}_0x38850b[_0xa36f('0x19')](_0x397e8c)[_0xa36f('0x28')](_0x4be6f7);};}exports[_0xa36f('0x29')]=function(_0x504168,_0x43df71){var _0x3b7b44={},_0x33eaa5={},_0x52752f={'count':0x0,'rows':[]};var _0x35405b=_[_0xa36f('0x2a')](db['CmHopperAdditionalPhone'][_0xa36f('0x2b')],function(_0x482047){return{'name':_0x482047[_0xa36f('0x2c')],'type':_0x482047[_0xa36f('0x2d')][_0xa36f('0x2e')]};});_0x33eaa5[_0xa36f('0x2f')]=_[_0xa36f('0x2a')](_0x35405b,_0xa36f('0x27'));_0x33eaa5[_0xa36f('0x30')]=_[_0xa36f('0x31')](_0x504168[_0xa36f('0x30')]);_0x33eaa5['filters']=_[_0xa36f('0x32')](_0x33eaa5[_0xa36f('0x2f')],_0x33eaa5[_0xa36f('0x30')]);_0x3b7b44[_0xa36f('0x33')]=_[_0xa36f('0x32')](_0x33eaa5[_0xa36f('0x2f')],qs[_0xa36f('0x34')](_0x504168[_0xa36f('0x30')][_0xa36f('0x34')]));_0x3b7b44[_0xa36f('0x33')]=_0x3b7b44['attributes'][_0xa36f('0x35')]?_0x3b7b44[_0xa36f('0x33')]:_0x33eaa5[_0xa36f('0x2f')];if(!_0x504168[_0xa36f('0x30')][_0xa36f('0x36')](_0xa36f('0x37'))){_0x3b7b44[_0xa36f('0x1b')]=qs['limit'](_0x504168[_0xa36f('0x30')]['limit']);_0x3b7b44[_0xa36f('0x1d')]=qs[_0xa36f('0x1d')](_0x504168['query'][_0xa36f('0x1d')]);}_0x3b7b44[_0xa36f('0x38')]=qs['sort'](_0x504168['query'][_0xa36f('0x39')]);_0x3b7b44[_0xa36f('0x3a')]=qs[_0xa36f('0x3b')](_[_0xa36f('0x3c')](_0x504168[_0xa36f('0x30')],_0x33eaa5[_0xa36f('0x3b')]),_0x35405b);if(_0x504168[_0xa36f('0x30')][_0xa36f('0x3d')]){_0x3b7b44[_0xa36f('0x3a')]=_['merge'](_0x3b7b44['where'],{'$or':_[_0xa36f('0x2a')](_0x35405b,function(_0xe2c507){if(_0xe2c507[_0xa36f('0x2d')]!==_0xa36f('0x3e')){var _0x1a4f07={};_0x1a4f07[_0xe2c507[_0xa36f('0x27')]]={'$like':'%'+_0x504168[_0xa36f('0x30')][_0xa36f('0x3d')]+'%'};return _0x1a4f07;}})});}_0x3b7b44=_[_0xa36f('0x3f')]({},_0x3b7b44,_0x504168[_0xa36f('0x40')]);var _0x2909bf={'where':_0x3b7b44[_0xa36f('0x3a')]};return db[_0xa36f('0x41')][_0xa36f('0x1e')](_0x2909bf)[_0xa36f('0x20')](function(_0xd54014){_0x52752f['count']=_0xd54014;if(_0x504168[_0xa36f('0x30')][_0xa36f('0x42')]){_0x3b7b44[_0xa36f('0x43')]=[{'all':!![]}];}return db[_0xa36f('0x41')][_0xa36f('0x44')](_0x3b7b44);})['then'](function(_0x1af9ac){_0x52752f[_0xa36f('0x45')]=_0x1af9ac;return _0x52752f;})[_0xa36f('0x20')](respondWithFilteredResult(_0x43df71,_0x3b7b44))[_0xa36f('0x46')](handleError(_0x43df71,null));};exports[_0xa36f('0x47')]=function(_0x14c297,_0xa1e97b){var _0x1ab343={'raw':!![],'where':{'id':_0x14c297[_0xa36f('0x48')]['id']}},_0x2d987a={};_0x2d987a['model']=_['keys'](db['CmHopperAdditionalPhone'][_0xa36f('0x2b')]);_0x2d987a[_0xa36f('0x30')]=_['keys'](_0x14c297['query']);_0x2d987a['filters']=_['intersection'](_0x2d987a[_0xa36f('0x2f')],_0x2d987a[_0xa36f('0x30')]);_0x1ab343['attributes']=_[_0xa36f('0x32')](_0x2d987a[_0xa36f('0x2f')],qs[_0xa36f('0x34')](_0x14c297[_0xa36f('0x30')][_0xa36f('0x34')]));_0x1ab343[_0xa36f('0x33')]=_0x1ab343[_0xa36f('0x33')]['length']?_0x1ab343[_0xa36f('0x33')]:_0x2d987a['model'];if(_0x14c297['query'][_0xa36f('0x42')]){_0x1ab343[_0xa36f('0x43')]=[{'all':!![]}];}_0x1ab343=_[_0xa36f('0x3f')]({},_0x1ab343,_0x14c297['options']);return db[_0xa36f('0x41')][_0xa36f('0x49')](_0x1ab343)['then'](handleEntityNotFound(_0xa1e97b,null))[_0xa36f('0x20')](respondWithResult(_0xa1e97b,null))[_0xa36f('0x46')](handleError(_0xa1e97b,null));};exports[_0xa36f('0x4a')]=function(_0x1add8e,_0x270b74){return db[_0xa36f('0x41')][_0xa36f('0x4a')](_0x1add8e[_0xa36f('0x4b')],{})[_0xa36f('0x20')](function(_0xedb317){var _0x5a4993=_0x1add8e['user']['get']({'plain':!![]});if(!_0x5a4993)throw new Error(_0xa36f('0x4c'));if(_0x5a4993[_0xa36f('0x4d')]==='user'){var _0x304b1=_0xedb317[_0xa36f('0x22')]({'plain':!![]});var _0x5d6405='CmHopperAdditionalPhones';return db[_0xa36f('0x4e')][_0xa36f('0x49')]({'where':{'name':_0x5d6405,'userProfileId':_0x5a4993[_0xa36f('0x4f')]},'raw':!![]})[_0xa36f('0x20')](function(_0x94ab36){if(_0x94ab36&&_0x94ab36[_0xa36f('0x50')]===0x0){return db['UserProfileResource'][_0xa36f('0x4a')]({'name':_0x304b1[_0xa36f('0x27')],'resourceId':_0x304b1['id'],'type':_0x94ab36[_0xa36f('0x27')],'sectionId':_0x94ab36['id']},{})[_0xa36f('0x20')](function(){return _0xedb317;});}else{return _0xedb317;}})[_0xa36f('0x46')](function(_0x3ed1ed){logger['error'](_0xa36f('0x51'),_0x3ed1ed);throw _0x3ed1ed;});}return _0xedb317;})[_0xa36f('0x20')](respondWithResult(_0x270b74,0xc9))[_0xa36f('0x46')](handleError(_0x270b74,null));};exports[_0xa36f('0x52')]=function(_0x3d3d29,_0x6f4ac8){if(_0x3d3d29[_0xa36f('0x4b')]['id']){delete _0x3d3d29[_0xa36f('0x4b')]['id'];}return db[_0xa36f('0x41')][_0xa36f('0x49')]({'where':{'id':_0x3d3d29[_0xa36f('0x48')]['id']}})[_0xa36f('0x20')](handleEntityNotFound(_0x6f4ac8,null))[_0xa36f('0x20')](saveUpdates(_0x3d3d29['body'],null))['then'](respondWithResult(_0x6f4ac8,null))[_0xa36f('0x46')](handleError(_0x6f4ac8,null));};exports[_0xa36f('0x21')]=function(_0x4f3e33,_0x166b0c){return db['CmHopperAdditionalPhone'][_0xa36f('0x49')]({'where':{'id':_0x4f3e33[_0xa36f('0x48')]['id']}})[_0xa36f('0x20')](handleEntityNotFound(_0x166b0c,null))[_0xa36f('0x20')](removeEntity(_0x166b0c,null))['catch'](handleError(_0x166b0c,null));};
\ No newline at end of file
+var _0x9b95=['params','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','update','then','destroy','get','CmHopperAdditionalPhones','UserProfileResource','error','stack','name','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','show'];(function(_0x284278,_0x56603e){var _0x3e8b50=function(_0x365b71){while(--_0x365b71){_0x284278['push'](_0x284278['shift']());}};_0x3e8b50(++_0x56603e);}(_0x9b95,0xed));var _0x59b9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9b95[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x59b9('0x0'));var rimraf=require(_0x59b9('0x1'));var zipdir=require(_0x59b9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x59b9('0x3'));var moment=require(_0x59b9('0x4'));var BPromise=require(_0x59b9('0x5'));var Mustache=require(_0x59b9('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x59b9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x59b9('0x8'));var _=require(_0x59b9('0x9'));var squel=require(_0x59b9('0xa'));var crypto=require(_0x59b9('0xb'));var jsforce=require(_0x59b9('0xc'));var deskjs=require(_0x59b9('0xd'));var toCsv=require('to-csv');var querystring=require(_0x59b9('0xe'));var Papa=require(_0x59b9('0xf'));var Redis=require('ioredis');var authService=require(_0x59b9('0x10'));var qs=require(_0x59b9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x59b9('0x12'));var config=require(_0x59b9('0x13'));var licenseUtil=require(_0x59b9('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54a186,_0x35494f){_0x35494f=_0x35494f||0xcc;return function(_0x8a32e6){if(_0x8a32e6){return _0x54a186[_0x59b9('0x15')](_0x35494f);}return _0x54a186[_0x59b9('0x16')](_0x35494f)[_0x59b9('0x17')]();};}function respondWithResult(_0x4d1694,_0x541cb1){_0x541cb1=_0x541cb1||0xc8;return function(_0x14468f){if(_0x14468f){return _0x4d1694['status'](_0x541cb1)['json'](_0x14468f);}};}function respondWithFilteredResult(_0x6e724b,_0x59fbff){return function(_0x18636a){if(_0x18636a){var _0x1c7bf4=typeof _0x59fbff['offset']===_0x59b9('0x18')&&typeof _0x59fbff[_0x59b9('0x19')]===_0x59b9('0x18');var _0x26a33a=_0x18636a[_0x59b9('0x1a')];var _0x5d9196=_0x1c7bf4?0x0:_0x59fbff[_0x59b9('0x1b')];var _0x2dfd5d=_0x1c7bf4?_0x18636a[_0x59b9('0x1a')]:_0x59fbff['offset']+_0x59fbff[_0x59b9('0x19')];var _0x25ba1b;if(_0x2dfd5d>=_0x26a33a){_0x2dfd5d=_0x26a33a;_0x25ba1b=0xc8;}else{_0x25ba1b=0xce;}_0x6e724b[_0x59b9('0x16')](_0x25ba1b);return _0x6e724b[_0x59b9('0x1c')](_0x59b9('0x1d'),_0x5d9196+'-'+_0x2dfd5d+'/'+_0x26a33a)[_0x59b9('0x1e')](_0x18636a);}return null;};}function patchUpdates(_0x2cf24e){return function(_0x19df17){try{jsonpatch['apply'](_0x19df17,_0x2cf24e,!![]);}catch(_0x65ed7d){return BPromise[_0x59b9('0x1f')](_0x65ed7d);}return _0x19df17['save']();};}function saveUpdates(_0x4e7658,_0x427547){return function(_0x20ffd4){if(_0x20ffd4){return _0x20ffd4[_0x59b9('0x20')](_0x4e7658)[_0x59b9('0x21')](function(_0x43c40d){return _0x43c40d;});}return null;};}function removeEntity(_0x22aad5,_0x43ceca){return function(_0x138892){if(_0x138892){return _0x138892[_0x59b9('0x22')]()[_0x59b9('0x21')](function(){var _0x2d18cb=_0x138892[_0x59b9('0x23')]({'plain':!![]});var _0xe27c1=_0x59b9('0x24');return db[_0x59b9('0x25')][_0x59b9('0x22')]({'where':{'type':_0xe27c1,'resourceId':_0x2d18cb['id']}})[_0x59b9('0x21')](function(){return _0x138892;});})[_0x59b9('0x21')](function(){_0x22aad5[_0x59b9('0x16')](0xcc)[_0x59b9('0x17')]();});}};}function handleEntityNotFound(_0x9fcf76,_0x1e5fc5){return function(_0x228f2e){if(!_0x228f2e){_0x9fcf76[_0x59b9('0x15')](0x194);}return _0x228f2e;};}function handleError(_0x251ac0,_0xdc4834){_0xdc4834=_0xdc4834||0x1f4;return function(_0x5337fc){logger[_0x59b9('0x26')](_0x5337fc[_0x59b9('0x27')]);if(_0x5337fc[_0x59b9('0x28')]){delete _0x5337fc[_0x59b9('0x28')];}_0x251ac0[_0x59b9('0x16')](_0xdc4834)['send'](_0x5337fc);};}exports[_0x59b9('0x29')]=function(_0x317c26,_0x3bffe1){var _0x19a436={},_0x3ab99f={},_0x2717a8={'count':0x0,'rows':[]};var _0x378cfc=_[_0x59b9('0x2a')](db[_0x59b9('0x2b')][_0x59b9('0x2c')],function(_0x5470e3){return{'name':_0x5470e3[_0x59b9('0x2d')],'type':_0x5470e3[_0x59b9('0x2e')][_0x59b9('0x2f')]};});_0x3ab99f[_0x59b9('0x30')]=_[_0x59b9('0x2a')](_0x378cfc,_0x59b9('0x28'));_0x3ab99f[_0x59b9('0x31')]=_[_0x59b9('0x32')](_0x317c26[_0x59b9('0x31')]);_0x3ab99f[_0x59b9('0x33')]=_[_0x59b9('0x34')](_0x3ab99f['model'],_0x3ab99f['query']);_0x19a436[_0x59b9('0x35')]=_[_0x59b9('0x34')](_0x3ab99f['model'],qs['fields'](_0x317c26[_0x59b9('0x31')][_0x59b9('0x36')]));_0x19a436['attributes']=_0x19a436[_0x59b9('0x35')][_0x59b9('0x37')]?_0x19a436[_0x59b9('0x35')]:_0x3ab99f[_0x59b9('0x30')];if(!_0x317c26[_0x59b9('0x31')]['hasOwnProperty'](_0x59b9('0x38'))){_0x19a436[_0x59b9('0x19')]=qs[_0x59b9('0x19')](_0x317c26[_0x59b9('0x31')]['limit']);_0x19a436['offset']=qs[_0x59b9('0x1b')](_0x317c26[_0x59b9('0x31')][_0x59b9('0x1b')]);}_0x19a436[_0x59b9('0x39')]=qs['sort'](_0x317c26['query'][_0x59b9('0x3a')]);_0x19a436['where']=qs[_0x59b9('0x33')](_['pick'](_0x317c26['query'],_0x3ab99f[_0x59b9('0x33')]),_0x378cfc);if(_0x317c26[_0x59b9('0x31')]['filter']){_0x19a436[_0x59b9('0x3b')]=_[_0x59b9('0x3c')](_0x19a436[_0x59b9('0x3b')],{'$or':_[_0x59b9('0x2a')](_0x378cfc,function(_0x586c9f){if(_0x586c9f['type']!==_0x59b9('0x3d')){var _0xc16e44={};_0xc16e44[_0x586c9f['name']]={'$like':'%'+_0x317c26[_0x59b9('0x31')][_0x59b9('0x3e')]+'%'};return _0xc16e44;}})});}_0x19a436=_[_0x59b9('0x3c')]({},_0x19a436,_0x317c26[_0x59b9('0x3f')]);var _0x55a47b={'where':_0x19a436['where']};return db['CmHopperAdditionalPhone']['count'](_0x55a47b)[_0x59b9('0x21')](function(_0x11ea15){_0x2717a8[_0x59b9('0x1a')]=_0x11ea15;if(_0x317c26[_0x59b9('0x31')][_0x59b9('0x40')]){_0x19a436['include']=[{'all':!![]}];}return db[_0x59b9('0x2b')][_0x59b9('0x41')](_0x19a436);})[_0x59b9('0x21')](function(_0x200ae1){_0x2717a8['rows']=_0x200ae1;return _0x2717a8;})[_0x59b9('0x21')](respondWithFilteredResult(_0x3bffe1,_0x19a436))['catch'](handleError(_0x3bffe1,null));};exports[_0x59b9('0x42')]=function(_0xda7bf3,_0x534866){var _0x5f2806={'raw':!![],'where':{'id':_0xda7bf3[_0x59b9('0x43')]['id']}},_0xc94dc5={};_0xc94dc5[_0x59b9('0x30')]=_[_0x59b9('0x32')](db[_0x59b9('0x2b')][_0x59b9('0x2c')]);_0xc94dc5['query']=_['keys'](_0xda7bf3[_0x59b9('0x31')]);_0xc94dc5[_0x59b9('0x33')]=_[_0x59b9('0x34')](_0xc94dc5['model'],_0xc94dc5[_0x59b9('0x31')]);_0x5f2806[_0x59b9('0x35')]=_['intersection'](_0xc94dc5['model'],qs['fields'](_0xda7bf3[_0x59b9('0x31')][_0x59b9('0x36')]));_0x5f2806[_0x59b9('0x35')]=_0x5f2806['attributes']['length']?_0x5f2806['attributes']:_0xc94dc5[_0x59b9('0x30')];if(_0xda7bf3[_0x59b9('0x31')]['includeAll']){_0x5f2806['include']=[{'all':!![]}];}_0x5f2806=_[_0x59b9('0x3c')]({},_0x5f2806,_0xda7bf3['options']);return db[_0x59b9('0x2b')][_0x59b9('0x44')](_0x5f2806)[_0x59b9('0x21')](handleEntityNotFound(_0x534866,null))[_0x59b9('0x21')](respondWithResult(_0x534866,null))[_0x59b9('0x45')](handleError(_0x534866,null));};exports[_0x59b9('0x46')]=function(_0x5e2c35,_0x31279a){return db['CmHopperAdditionalPhone']['create'](_0x5e2c35['body'],{})['then'](function(_0x42a78f){var _0x2bb64e=_0x5e2c35[_0x59b9('0x47')][_0x59b9('0x23')]({'plain':!![]});if(!_0x2bb64e)throw new Error(_0x59b9('0x48'));if(_0x2bb64e['role']===_0x59b9('0x47')){var _0x3b13c4=_0x42a78f['get']({'plain':!![]});var _0x4e18a9=_0x59b9('0x24');return db['UserProfileSection'][_0x59b9('0x44')]({'where':{'name':_0x4e18a9,'userProfileId':_0x2bb64e[_0x59b9('0x49')]},'raw':!![]})[_0x59b9('0x21')](function(_0x173b20){if(_0x173b20&&_0x173b20[_0x59b9('0x4a')]===0x0){return db['UserProfileResource'][_0x59b9('0x46')]({'name':_0x3b13c4['name'],'resourceId':_0x3b13c4['id'],'type':_0x173b20[_0x59b9('0x28')],'sectionId':_0x173b20['id']},{})['then'](function(){return _0x42a78f;});}else{return _0x42a78f;}})['catch'](function(_0x71f4cb){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x71f4cb);throw _0x71f4cb;});}return _0x42a78f;})[_0x59b9('0x21')](respondWithResult(_0x31279a,0xc9))[_0x59b9('0x45')](handleError(_0x31279a,null));};exports[_0x59b9('0x20')]=function(_0x3d9109,_0x5370ab){if(_0x3d9109['body']['id']){delete _0x3d9109['body']['id'];}return db[_0x59b9('0x2b')][_0x59b9('0x44')]({'where':{'id':_0x3d9109['params']['id']}})['then'](handleEntityNotFound(_0x5370ab,null))[_0x59b9('0x21')](saveUpdates(_0x3d9109[_0x59b9('0x4b')],null))[_0x59b9('0x21')](respondWithResult(_0x5370ab,null))['catch'](handleError(_0x5370ab,null));};exports['destroy']=function(_0x7a4160,_0x1871a4){return db[_0x59b9('0x2b')][_0x59b9('0x44')]({'where':{'id':_0x7a4160[_0x59b9('0x43')]['id']}})[_0x59b9('0x21')](handleEntityNotFound(_0x1871a4,null))[_0x59b9('0x21')](removeEntity(_0x1871a4,null))['catch'](handleError(_0x1871a4,null));};
\ No newline at end of file
index 25a6d2d..7addb68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe436=['lodash','util','api','bluebird','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones'];(function(_0x11ba46,_0x1d6752){var _0x1c8c6f=function(_0x4cf96f){while(--_0x4cf96f){_0x11ba46['push'](_0x11ba46['shift']());}};_0x1c8c6f(++_0x1d6752);}(_0xe436,0x1ef));var _0x6e43=function(_0x1b5b22,_0x332a4d){_0x1b5b22=_0x1b5b22-0x0;var _0x3e4384=_0xe436[_0x1b5b22];return _0x3e4384;};'use strict';var _=require(_0x6e43('0x0'));var util=require(_0x6e43('0x1'));var logger=require('../../config/logger')(_0x6e43('0x2'));var moment=require('moment');var BPromise=require(_0x6e43('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6e43('0x4'));var config=require(_0x6e43('0x5'));var attributes=require(_0x6e43('0x6'));module[_0x6e43('0x7')]=function(_0x5c7f9a,_0x5a1017){return _0x5c7f9a[_0x6e43('0x8')](_0x6e43('0x9'),attributes,{'tableName':_0x6e43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b25=['util','api','moment','bluebird','request-promise','path','../../config/environment','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash'];(function(_0x227d6f,_0x555816){var _0x20b29d=function(_0x3de7db){while(--_0x3de7db){_0x227d6f['push'](_0x227d6f['shift']());}};_0x20b29d(++_0x555816);}(_0x9b25,0x175));var _0x59b2=function(_0xba153,_0x157238){_0xba153=_0xba153-0x0;var _0x235a1e=_0x9b25[_0xba153];return _0x235a1e;};'use strict';var _=require(_0x59b2('0x0'));var util=require(_0x59b2('0x1'));var logger=require('../../config/logger')(_0x59b2('0x2'));var moment=require(_0x59b2('0x3'));var BPromise=require(_0x59b2('0x4'));var rp=require(_0x59b2('0x5'));var fs=require('fs');var path=require(_0x59b2('0x6'));var rimraf=require('rimraf');var config=require(_0x59b2('0x7'));var attributes=require('./cmHopperAdditionalPhone.attributes');module['exports']=function(_0x17dbd8,_0xe1539f){return _0x17dbd8[_0x59b2('0x8')](_0x59b2('0x9'),attributes,{'tableName':_0x59b2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 11aec62..7f681a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3140=['http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','VerifyAdditionalPhones','findOne','body','ContactId','ListId','VoiceQueueId','CmHopperAdditionalPhone','OrderBy','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','ASC','SwapAdditionalPhones','CampaignId','waitTime','duration','scheduledat','add','minutes','isNil','phone','createdAt','updatedAt','sequelize','transaction','update','CmHopper','activateAdditionalPhone','IncrementPreviewCounters','field','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x3140,0xa2));var _0x0314=function(_0x9765f2,_0x4fe9c6){_0x9765f2=_0x9765f2-0x0;var _0x27c61c=_0x3140[_0x9765f2];return _0x27c61c;};'use strict';var _=require('lodash');var util=require(_0x0314('0x0'));var moment=require('moment');var BPromise=require(_0x0314('0x1'));var rs=require(_0x0314('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0314('0x3'))['db'];var utils=require(_0x0314('0x4'));var logger=require(_0x0314('0x5'))(_0x0314('0x6'));var config=require(_0x0314('0x7'));var jayson=require(_0x0314('0x8'));var client=jayson['client'][_0x0314('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x64c3b,_0x114727,_0x34434d){return new BPromise(function(_0x55b7c1,_0x398d9d){return client[_0x0314('0xa')](_0x64c3b,_0x34434d)[_0x0314('0xb')](function(_0x45b441){logger[_0x0314('0xc')](_0x0314('0xd'),_0x114727,_0x0314('0xe'));logger['debug']('CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s',_0x114727,_0x0314('0xe'),JSON[_0x0314('0xf')](_0x45b441));if(_0x45b441[_0x0314('0x10')]){if(_0x45b441[_0x0314('0x10')]['code']===0x1f4){logger[_0x0314('0x10')](_0x0314('0xd'),_0x114727,_0x45b441['error']['message']);return _0x398d9d(_0x45b441[_0x0314('0x10')][_0x0314('0x11')]);}logger[_0x0314('0x10')](_0x0314('0xd'),_0x114727,_0x45b441[_0x0314('0x10')][_0x0314('0x11')]);return _0x55b7c1(_0x45b441[_0x0314('0x10')]['message']);}else{logger[_0x0314('0xc')](_0x0314('0xd'),_0x114727,'request\x20sent');_0x55b7c1(_0x45b441[_0x0314('0x12')][_0x0314('0x11')]);}})[_0x0314('0x13')](function(_0x420b84){logger[_0x0314('0x10')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x114727,_0x420b84);_0x398d9d(_0x420b84);});});}exports[_0x0314('0x14')]=function(_0x2fff2f){var _0x26d882=this;return new Promise(function(_0x13bad4,_0x4e5a33){return db['CmHopper'][_0x0314('0x15')]({'raw':!![],'where':{'ContactId':_0x2fff2f[_0x0314('0x16')][_0x0314('0x17')],'ListId':_0x2fff2f['body'][_0x0314('0x18')],'VoiceQueueId':_0x2fff2f[_0x0314('0x16')][_0x0314('0x19')]===undefined?null:_0x2fff2f[_0x0314('0x16')][_0x0314('0x19')],'CampaignId':_0x2fff2f[_0x0314('0x16')]['CampaignId']===undefined?null:_0x2fff2f[_0x0314('0x16')]['CampaignId']}})[_0x0314('0xb')](function(_0x4aeb7e){if(_0x4aeb7e!=null){return db[_0x0314('0x1a')][_0x0314('0x15')]({'raw':!![],'where':{'CmHopperId':_0x4aeb7e['id'],'OrderBy':{'$gt':_0x4aeb7e[_0x0314('0x1b')]}},'order':[[_0x0314('0x1b'),'ASC']]})[_0x0314('0xb')](function(_0x191358){var _0x1b6e23=0x0;if(_0x191358){if(_0x191358[_0x0314('0x1c')]+_0x191358[_0x0314('0x1d')]+_0x191358[_0x0314('0x1e')]+_0x191358[_0x0314('0x1f')]+_0x191358[_0x0314('0x20')]+_0x191358[_0x0314('0x21')]+_0x191358[_0x0314('0x22')]+_0x191358[_0x0314('0x23')]<_0x2fff2f[_0x0314('0x24')][_0x0314('0x25')])_0x1b6e23=0x1;_0x13bad4({'additional':_0x1b6e23});}else{return db[_0x0314('0x1a')][_0x0314('0x15')]({'raw':!![],'where':{'CmHopperId':_0x4aeb7e['id']},'order':[[_0x0314('0x1b'),_0x0314('0x26')]]})[_0x0314('0xb')](function(_0x8ac564){var _0x3c67f4=0x0;if(_0x8ac564){if(_0x8ac564[_0x0314('0x1c')]+_0x8ac564[_0x0314('0x1d')]+_0x8ac564[_0x0314('0x1e')]+_0x8ac564[_0x0314('0x1f')]+_0x8ac564[_0x0314('0x20')]+_0x8ac564[_0x0314('0x21')]+_0x8ac564[_0x0314('0x22')]+_0x8ac564[_0x0314('0x23')]<_0x2fff2f['entity'][_0x0314('0x25')])_0x3c67f4=0x1;_0x13bad4({'additional':_0x3c67f4});}else{_0x13bad4({'additional':0x0});}})[_0x0314('0x13')](function(_0x3699e4){logger[_0x0314('0x10')](_0x0314('0x14'),_0x3699e4[_0x0314('0x11')]);_0x4e5a33(_0x26d882[_0x0314('0x10')](0x1f4,_0x3699e4['message']));});}})[_0x0314('0x13')](function(_0xa478b3){logger['error']('VerifyAdditionalPhones',_0xa478b3[_0x0314('0x11')]);_0x4e5a33(_0x26d882[_0x0314('0x10')](0x1f4,_0xa478b3[_0x0314('0x11')]));});}else _0x13bad4({'additional':0x0});});});};exports[_0x0314('0x27')]=function(_0x17c6b1){var _0x33e70b=this;return new Promise(function(_0xf754a0,_0x5304d8){return db['CmHopper'][_0x0314('0x15')]({'raw':!![],'where':{'ContactId':_0x17c6b1['body'][_0x0314('0x17')],'ListId':_0x17c6b1[_0x0314('0x16')]['ListId'],'VoiceQueueId':_0x17c6b1['body'][_0x0314('0x19')]===undefined?null:_0x17c6b1[_0x0314('0x16')]['VoiceQueueId'],'CampaignId':_0x17c6b1['body'][_0x0314('0x28')]===undefined?null:_0x17c6b1[_0x0314('0x16')][_0x0314('0x28')]}})[_0x0314('0xb')](function(_0x2a67bd){if(_0x2a67bd!=null){return db[_0x0314('0x1a')][_0x0314('0x15')]({'raw':!![],'where':{'CmHopperId':_0x2a67bd['id'],'OrderBy':{'$gte':_0x2a67bd[_0x0314('0x1b')]}},'order':[[_0x0314('0x1b'),_0x0314('0x26')]]})[_0x0314('0xb')](function(_0x5e8469){if(_0x5e8469)return activateAdditionalPhone(_0x2a67bd,_0x17c6b1['body'],_0x5e8469,_0x17c6b1['duration'],_0x17c6b1[_0x0314('0x29')])[_0x0314('0xb')](function(_0xbb650a){_0xf754a0(_0xbb650a);});else{return db[_0x0314('0x1a')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x2a67bd['id']},'order':[[_0x0314('0x1b'),_0x0314('0x26')]]})[_0x0314('0xb')](function(_0x233d4a){if(_0x233d4a)return activateAdditionalPhone(_0x2a67bd,_0x17c6b1[_0x0314('0x16')],_0x233d4a,_0x17c6b1[_0x0314('0x2a')],_0x17c6b1[_0x0314('0x29')])[_0x0314('0xb')](function(_0x1c108e){_0xf754a0(_0x1c108e);});else{_0xf754a0({'id':_0x2a67bd['id'],'phone':''});}})[_0x0314('0x13')](function(_0x3dda6f){logger[_0x0314('0x10')](_0x0314('0x14'),_0x3dda6f[_0x0314('0x11')]);_0x5304d8(_0x33e70b[_0x0314('0x10')](0x1f4,_0x3dda6f[_0x0314('0x11')]));});}})[_0x0314('0x13')](function(_0x3a6d55){logger[_0x0314('0x10')](_0x0314('0x14'),_0x3a6d55[_0x0314('0x11')]);_0x5304d8(_0x33e70b[_0x0314('0x10')](0x1f4,_0x3a6d55['message']));});}else _0xf754a0(0x1);});});};function activateAdditionalPhone(_0x42229c,_0x493dd8,_0x473521,_0xbe682f,_0x5ad64e){return new Promise(function(_0x557507,_0x36b378){var _0x222662;if(_['isNil'](_0x473521['scheduledat'])){_0x473521[_0x0314('0x2b')]=moment();}if(moment()>moment(_0x473521['scheduledat'])){_0x222662=moment()[_0x0314('0x2c')](_0x5ad64e||0x3,_0x0314('0x2d'));}else{if(_0x473521['OrderBy']==0x0){_0x222662=moment(_0x473521['scheduledat']);}else{_0x222662=moment()[_0x0314('0x2c')](_0x5ad64e||0x3,_0x0314('0x2d'));}}if(_[_0x0314('0x2e')](_0x222662)){_0x222662=moment()[_0x0314('0x2c')](_0x5ad64e||0x3,_0x0314('0x2d'));}var _0x29aeb6={'phone':_0x42229c[_0x0314('0x2f')],'active':0x0,'OrderBy':_[_0x0314('0x2e')](_0x42229c[_0x0314('0x1b')])?0x0:_0x42229c[_0x0314('0x1b')],'scheduledat':moment()[_0x0314('0x2c')](_0xbe682f||0x1,_0x0314('0x2d')),'countbusyretry':_0x493dd8[_0x0314('0x1c')],'countcongestionretry':_0x493dd8['countcongestionretry'],'countnoanswerretry':_0x493dd8[_0x0314('0x1e')],'countnosuchnumberretry':_0x493dd8[_0x0314('0x1f')],'countdropretry':_0x493dd8['countdropretry'],'countabandonedretry':_0x493dd8[_0x0314('0x21')],'countmachineretry':_0x493dd8[_0x0314('0x22')],'countagentrejectretry':_0x493dd8[_0x0314('0x23')],'createdAt':_0x493dd8[_0x0314('0x30')],'updatedAt':_0x493dd8[_0x0314('0x31')]};var _0x53fc98={'CmHopperId':_0x42229c['id'],'phone':_0x473521[_0x0314('0x2f')],'active':0x0,'OrderBy':_[_0x0314('0x2e')](_0x473521[_0x0314('0x1b')])?0x0:_0x473521[_0x0314('0x1b')],'scheduledat':_0x222662,'countbusyretry':_0x473521[_0x0314('0x1c')],'countcongestionretry':_0x473521[_0x0314('0x1d')],'countnoanswerretry':_0x473521['countnoanswerretry'],'countnosuchnumberretry':_0x473521[_0x0314('0x1f')],'countdropretry':_0x473521[_0x0314('0x20')],'countabandonedretry':_0x473521[_0x0314('0x21')],'countmachineretry':_0x473521['countmachineretry'],'countagentrejectretry':_0x473521[_0x0314('0x23')],'createdAt':_0x473521[_0x0314('0x30')],'updatedAt':_0x473521['updatedAt']};return db[_0x0314('0x32')][_0x0314('0x33')](function(_0x4b6eb1){return db[_0x0314('0x1a')][_0x0314('0x34')](_0x29aeb6,{'where':{'id':_0x473521['id']}},{'transaction':_0x4b6eb1})[_0x0314('0xb')](function(){return db[_0x0314('0x35')][_0x0314('0x34')](_0x53fc98,{'where':{'id':_0x42229c['id']}},{'transaction':_0x4b6eb1});});})[_0x0314('0xb')](function(_0x27030d){_0x557507({'id':_0x42229c['id'],'phone':_0x473521[_0x0314('0x2f')]});})['catch'](function(_0x4daf08){logger[_0x0314('0x10')](_0x0314('0x36'),_0x4daf08['message']);_0x36b378({'error':_0x4daf08[_0x0314('0x11')]});});});}exports[_0x0314('0x37')]=function(_0x2d8fdb){var _0x56a65c=this;return new Promise(function(_0x2ac759,_0x437c60){return db[_0x0314('0x35')][_0x0314('0x34')](_0x2d8fdb[_0x0314('0x16')][_0x0314('0x38')],{'where':{'id':_0x2d8fdb[_0x0314('0x16')]['id']}})[_0x0314('0xb')](function(_0x1c63bd){_0x2ac759(_0x1c63bd);})[_0x0314('0x13')](function(_0x4e3458){logger['error']('IncrementPreviewCounters',_0x4e3458[_0x0314('0x11')]);_0x437c60(_0x56a65c['error'](0x1f4,_0x4e3458[_0x0314('0x11')]));});});};
\ No newline at end of file
+var _0x0655=['OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','entity','dialGlobalMaxRetry','countnosuchnumberretry','countagentrejectretry','SwapAdditionalPhones','duration','isNil','scheduledat','add','minutes','phone','createdAt','updatedAt','transaction','update','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone'];(function(_0x8e24a3,_0x4816ac){var _0x1022f4=function(_0x546832){while(--_0x546832){_0x8e24a3['push'](_0x8e24a3['shift']());}};_0x1022f4(++_0x4816ac);}(_0x0655,0x176));var _0x5065=function(_0xef4cf0,_0x16c9c3){_0xef4cf0=_0xef4cf0-0x0;var _0x497ad2=_0x0655[_0xef4cf0];return _0x497ad2;};'use strict';var _=require(_0x5065('0x0'));var util=require(_0x5065('0x1'));var moment=require(_0x5065('0x2'));var BPromise=require(_0x5065('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5065('0x4'));var db=require(_0x5065('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5065('0x6'))(_0x5065('0x7'));var config=require(_0x5065('0x8'));var jayson=require(_0x5065('0x9'));var client=jayson[_0x5065('0xa')][_0x5065('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4cfa03,_0x432ea1,_0x2ec3a3){return new BPromise(function(_0x49f1d0,_0x2bc916){return client[_0x5065('0xc')](_0x4cfa03,_0x2ec3a3)['then'](function(_0x2c25f8){logger[_0x5065('0xd')](_0x5065('0xe'),_0x432ea1,_0x5065('0xf'));logger['debug'](_0x5065('0x10'),_0x432ea1,_0x5065('0xf'),JSON[_0x5065('0x11')](_0x2c25f8));if(_0x2c25f8[_0x5065('0x12')]){if(_0x2c25f8[_0x5065('0x12')]['code']===0x1f4){logger[_0x5065('0x12')](_0x5065('0xe'),_0x432ea1,_0x2c25f8['error'][_0x5065('0x13')]);return _0x2bc916(_0x2c25f8[_0x5065('0x12')]['message']);}logger[_0x5065('0x12')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x432ea1,_0x2c25f8['error'][_0x5065('0x13')]);return _0x49f1d0(_0x2c25f8[_0x5065('0x12')]['message']);}else{logger[_0x5065('0xd')](_0x5065('0xe'),_0x432ea1,_0x5065('0xf'));_0x49f1d0(_0x2c25f8[_0x5065('0x14')][_0x5065('0x13')]);}})[_0x5065('0x15')](function(_0x35ab3c){logger[_0x5065('0x12')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x432ea1,_0x35ab3c);_0x2bc916(_0x35ab3c);});});}exports[_0x5065('0x16')]=function(_0x380dcb){var _0x5bbbdd=this;return new Promise(function(_0x1ff9bf,_0x58ff55){return db[_0x5065('0x17')][_0x5065('0x18')]({'raw':!![],'where':{'ContactId':_0x380dcb[_0x5065('0x19')][_0x5065('0x1a')],'ListId':_0x380dcb['body'][_0x5065('0x1b')],'VoiceQueueId':_0x380dcb[_0x5065('0x19')][_0x5065('0x1c')]===undefined?null:_0x380dcb[_0x5065('0x19')][_0x5065('0x1c')],'CampaignId':_0x380dcb['body'][_0x5065('0x1d')]===undefined?null:_0x380dcb[_0x5065('0x19')]['CampaignId']}})[_0x5065('0x1e')](function(_0x3df6a4){if(_0x3df6a4!=null){return db[_0x5065('0x1f')][_0x5065('0x18')]({'raw':!![],'where':{'CmHopperId':_0x3df6a4['id'],'OrderBy':{'$gt':_0x3df6a4['OrderBy']}},'order':[[_0x5065('0x20'),_0x5065('0x21')]]})[_0x5065('0x1e')](function(_0x514470){var _0x333b7c=0x0;if(_0x514470){if(_0x514470[_0x5065('0x22')]+_0x514470[_0x5065('0x23')]+_0x514470[_0x5065('0x24')]+_0x514470['countnosuchnumberretry']+_0x514470[_0x5065('0x25')]+_0x514470[_0x5065('0x26')]+_0x514470[_0x5065('0x27')]+_0x514470['countagentrejectretry']<_0x380dcb[_0x5065('0x28')][_0x5065('0x29')])_0x333b7c=0x1;_0x1ff9bf({'additional':_0x333b7c});}else{return db[_0x5065('0x1f')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x3df6a4['id']},'order':[[_0x5065('0x20'),_0x5065('0x21')]]})['then'](function(_0x421d38){var _0x32aaa8=0x0;if(_0x421d38){if(_0x421d38[_0x5065('0x22')]+_0x421d38[_0x5065('0x23')]+_0x421d38[_0x5065('0x24')]+_0x421d38[_0x5065('0x2a')]+_0x421d38[_0x5065('0x25')]+_0x421d38[_0x5065('0x26')]+_0x421d38[_0x5065('0x27')]+_0x421d38[_0x5065('0x2b')]<_0x380dcb[_0x5065('0x28')][_0x5065('0x29')])_0x32aaa8=0x1;_0x1ff9bf({'additional':_0x32aaa8});}else{_0x1ff9bf({'additional':0x0});}})[_0x5065('0x15')](function(_0x2906a1){logger[_0x5065('0x12')](_0x5065('0x16'),_0x2906a1[_0x5065('0x13')]);_0x58ff55(_0x5bbbdd[_0x5065('0x12')](0x1f4,_0x2906a1[_0x5065('0x13')]));});}})[_0x5065('0x15')](function(_0xbede33){logger[_0x5065('0x12')](_0x5065('0x16'),_0xbede33[_0x5065('0x13')]);_0x58ff55(_0x5bbbdd['error'](0x1f4,_0xbede33[_0x5065('0x13')]));});}else _0x1ff9bf({'additional':0x0});});});};exports[_0x5065('0x2c')]=function(_0x221d30){var _0xc79f4f=this;return new Promise(function(_0x1a7e0c,_0x821ef3){return db['CmHopper'][_0x5065('0x18')]({'raw':!![],'where':{'ContactId':_0x221d30[_0x5065('0x19')][_0x5065('0x1a')],'ListId':_0x221d30[_0x5065('0x19')][_0x5065('0x1b')],'VoiceQueueId':_0x221d30[_0x5065('0x19')][_0x5065('0x1c')]===undefined?null:_0x221d30['body']['VoiceQueueId'],'CampaignId':_0x221d30[_0x5065('0x19')]['CampaignId']===undefined?null:_0x221d30[_0x5065('0x19')][_0x5065('0x1d')]}})[_0x5065('0x1e')](function(_0x1863a9){if(_0x1863a9!=null){return db[_0x5065('0x1f')][_0x5065('0x18')]({'raw':!![],'where':{'CmHopperId':_0x1863a9['id'],'OrderBy':{'$gte':_0x1863a9[_0x5065('0x20')]}},'order':[[_0x5065('0x20'),_0x5065('0x21')]]})[_0x5065('0x1e')](function(_0x804a23){if(_0x804a23)return activateAdditionalPhone(_0x1863a9,_0x221d30['body'],_0x804a23,_0x221d30[_0x5065('0x2d')],_0x221d30['waitTime'])[_0x5065('0x1e')](function(_0x1e3442){_0x1a7e0c(_0x1e3442);});else{return db['CmHopperAdditionalPhone'][_0x5065('0x18')]({'raw':!![],'where':{'CmHopperId':_0x1863a9['id']},'order':[['OrderBy','ASC']]})[_0x5065('0x1e')](function(_0x2213d5){if(_0x2213d5)return activateAdditionalPhone(_0x1863a9,_0x221d30['body'],_0x2213d5,_0x221d30[_0x5065('0x2d')],_0x221d30['waitTime'])[_0x5065('0x1e')](function(_0x5e5c07){_0x1a7e0c(_0x5e5c07);});else{_0x1a7e0c({'id':_0x1863a9['id'],'phone':''});}})['catch'](function(_0x42f6f7){logger[_0x5065('0x12')](_0x5065('0x16'),_0x42f6f7[_0x5065('0x13')]);_0x821ef3(_0xc79f4f['error'](0x1f4,_0x42f6f7[_0x5065('0x13')]));});}})[_0x5065('0x15')](function(_0x48e87c){logger[_0x5065('0x12')](_0x5065('0x16'),_0x48e87c[_0x5065('0x13')]);_0x821ef3(_0xc79f4f[_0x5065('0x12')](0x1f4,_0x48e87c['message']));});}else _0x1a7e0c(0x1);});});};function activateAdditionalPhone(_0x37ada0,_0x81b10d,_0x2c2703,_0x236f55,_0x5e5e4e){return new Promise(function(_0x26c02d,_0x31ad71){var _0x19b32d;if(_[_0x5065('0x2e')](_0x2c2703['scheduledat'])){_0x2c2703[_0x5065('0x2f')]=moment();}if(moment()>moment(_0x2c2703[_0x5065('0x2f')])){_0x19b32d=moment()[_0x5065('0x30')](_0x5e5e4e||0x3,_0x5065('0x31'));}else{if(_0x2c2703[_0x5065('0x20')]==0x0){_0x19b32d=moment(_0x2c2703['scheduledat']);}else{_0x19b32d=moment()[_0x5065('0x30')](_0x5e5e4e||0x3,_0x5065('0x31'));}}if(_[_0x5065('0x2e')](_0x19b32d)){_0x19b32d=moment()[_0x5065('0x30')](_0x5e5e4e||0x3,_0x5065('0x31'));}var _0x116fd8={'phone':_0x37ada0[_0x5065('0x32')],'active':0x0,'OrderBy':_[_0x5065('0x2e')](_0x37ada0[_0x5065('0x20')])?0x0:_0x37ada0[_0x5065('0x20')],'scheduledat':moment()[_0x5065('0x30')](_0x236f55||0x1,_0x5065('0x31')),'countbusyretry':_0x81b10d[_0x5065('0x22')],'countcongestionretry':_0x81b10d[_0x5065('0x23')],'countnoanswerretry':_0x81b10d[_0x5065('0x24')],'countnosuchnumberretry':_0x81b10d[_0x5065('0x2a')],'countdropretry':_0x81b10d[_0x5065('0x25')],'countabandonedretry':_0x81b10d[_0x5065('0x26')],'countmachineretry':_0x81b10d[_0x5065('0x27')],'countagentrejectretry':_0x81b10d[_0x5065('0x2b')],'createdAt':_0x81b10d[_0x5065('0x33')],'updatedAt':_0x81b10d['updatedAt']};var _0x3295bf={'CmHopperId':_0x37ada0['id'],'phone':_0x2c2703['phone'],'active':0x0,'OrderBy':_[_0x5065('0x2e')](_0x2c2703[_0x5065('0x20')])?0x0:_0x2c2703[_0x5065('0x20')],'scheduledat':_0x19b32d,'countbusyretry':_0x2c2703[_0x5065('0x22')],'countcongestionretry':_0x2c2703[_0x5065('0x23')],'countnoanswerretry':_0x2c2703[_0x5065('0x24')],'countnosuchnumberretry':_0x2c2703[_0x5065('0x2a')],'countdropretry':_0x2c2703['countdropretry'],'countabandonedretry':_0x2c2703[_0x5065('0x26')],'countmachineretry':_0x2c2703[_0x5065('0x27')],'countagentrejectretry':_0x2c2703[_0x5065('0x2b')],'createdAt':_0x2c2703[_0x5065('0x33')],'updatedAt':_0x2c2703[_0x5065('0x34')]};return db['sequelize'][_0x5065('0x35')](function(_0x41452a){return db[_0x5065('0x1f')][_0x5065('0x36')](_0x116fd8,{'where':{'id':_0x2c2703['id']}},{'transaction':_0x41452a})[_0x5065('0x1e')](function(){return db[_0x5065('0x17')][_0x5065('0x36')](_0x3295bf,{'where':{'id':_0x37ada0['id']}},{'transaction':_0x41452a});});})[_0x5065('0x1e')](function(_0x5e36a6){_0x26c02d({'id':_0x37ada0['id'],'phone':_0x2c2703[_0x5065('0x32')]});})[_0x5065('0x15')](function(_0x5a1150){logger[_0x5065('0x12')](_0x5065('0x37'),_0x5a1150['message']);_0x31ad71({'error':_0x5a1150[_0x5065('0x13')]});});});}exports[_0x5065('0x38')]=function(_0x19412f){var _0xe6850e=this;return new Promise(function(_0x334357,_0x42644e){return db[_0x5065('0x17')][_0x5065('0x36')](_0x19412f[_0x5065('0x19')][_0x5065('0x39')],{'where':{'id':_0x19412f[_0x5065('0x19')]['id']}})[_0x5065('0x1e')](function(_0x6d36f4){_0x334357(_0x6d36f4);})[_0x5065('0x15')](function(_0x1bfd7c){logger[_0x5065('0x12')](_0x5065('0x38'),_0x1bfd7c[_0x5065('0x13')]);_0x42644e(_0xe6850e['error'](0x1f4,_0x1bfd7c[_0x5065('0x13')]));});});};
\ No newline at end of file
index 2115a57..f907b2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x655c=['../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x655c,0x15e));var _0xc655=function(_0x1c2ff9,_0x3ea117){_0x1c2ff9=_0x1c2ff9-0x0;var _0x587607=_0x655c[_0x1c2ff9];return _0x587607;};'use strict';var multer=require(_0xc655('0x0'));var util=require(_0xc655('0x1'));var path=require('path');var timeout=require(_0xc655('0x2'));var express=require(_0xc655('0x3'));var router=express[_0xc655('0x4')]();var fs_extra=require(_0xc655('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc655('0x6'));var config=require(_0xc655('0x7'));var controller=require(_0xc655('0x8'));router[_0xc655('0x9')]('/',auth[_0xc655('0xa')](),controller[_0xc655('0xb')]);router[_0xc655('0x9')](_0xc655('0xc'),auth[_0xc655('0xa')](),controller[_0xc655('0xd')]);router[_0xc655('0xe')]('/',auth[_0xc655('0xa')](),controller[_0xc655('0xf')]);router[_0xc655('0x10')]('/:id',auth[_0xc655('0xa')](),controller[_0xc655('0x11')]);router[_0xc655('0x12')](_0xc655('0xc'),auth[_0xc655('0xa')](),controller[_0xc655('0x13')]);module[_0xc655('0x14')]=router;
\ No newline at end of file
+var _0x13ea=['isAuthenticated','show','post','create','put','/:id','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/interaction/service','./cmHopperAdditionalPhone.controller','get'];(function(_0x5932d6,_0x2fd1da){var _0x5d0d42=function(_0x237e22){while(--_0x237e22){_0x5932d6['push'](_0x5932d6['shift']());}};_0x5d0d42(++_0x2fd1da);}(_0x13ea,0xa9));var _0xa13e=function(_0x2f6f50,_0x1d21a7){_0x2f6f50=_0x2f6f50-0x0;var _0x2cf365=_0x13ea[_0x2f6f50];return _0x2cf365;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa13e('0x0'));var timeout=require(_0xa13e('0x1'));var express=require(_0xa13e('0x2'));var router=express['Router']();var fs_extra=require(_0xa13e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa13e('0x4'));var config=require('../../config/environment');var controller=require(_0xa13e('0x5'));router[_0xa13e('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0xa13e('0x7')](),controller[_0xa13e('0x8')]);router[_0xa13e('0x9')]('/',auth['isAuthenticated'](),controller[_0xa13e('0xa')]);router[_0xa13e('0xb')](_0xa13e('0xc'),auth[_0xa13e('0x7')](),controller[_0xa13e('0xd')]);router['delete'](_0xa13e('0xc'),auth[_0xa13e('0x7')](),controller[_0xa13e('0xe')]);module[_0xa13e('0xf')]=router;
\ No newline at end of file
index 24388ab..038f639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb715=['contactListQueue','sequelize','STRING','INTEGER'];(function(_0xd292c1,_0x296792){var _0x41504a=function(_0x2b4263){while(--_0x2b4263){_0xd292c1['push'](_0xd292c1['shift']());}};_0x41504a(++_0x296792);}(_0xb715,0x16d));var _0x5b71=function(_0x3ca0df,_0x447d9b){_0x3ca0df=_0x3ca0df-0x0;var _0x27bfce=_0xb715[_0x3ca0df];return _0x27bfce;};'use strict';var moment=require('moment');var Sequelize=require(_0x5b71('0x0'));module['exports']={'phone':{'type':Sequelize[_0x5b71('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x5b71('0x2')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x5b71('0x2')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x5b71('0x2')],'unique':_0x5b71('0x3')}};
\ No newline at end of file
+var _0xb8ba=['sequelize','exports','INTEGER','contactListQueue','moment'];(function(_0x4f3038,_0x535fd2){var _0x5b255a=function(_0x11b96b){while(--_0x11b96b){_0x4f3038['push'](_0x4f3038['shift']());}};_0x5b255a(++_0x535fd2);}(_0xb8ba,0x6d));var _0xab8b=function(_0x3167e3,_0x5b3673){_0x3167e3=_0x3167e3-0x0;var _0x2611e0=_0xb8ba[_0x3167e3];return _0x2611e0;};'use strict';var moment=require(_0xab8b('0x0'));var Sequelize=require(_0xab8b('0x1'));module[_0xab8b('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0xab8b('0x3')],'unique':_0xab8b('0x4')},'ListId':{'type':Sequelize[_0xab8b('0x3')],'unique':_0xab8b('0x4')},'VoiceQueueId':{'type':Sequelize[_0xab8b('0x3')],'unique':_0xab8b('0x4')}};
\ No newline at end of file
index 8c629ae..c2fdcc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x272a=['show','params','rawAttributes','includeAll','find','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','CmHopperBlack','include','findAll','rows','catch'];(function(_0x5d5c49,_0x528f94){var _0x41cb72=function(_0x4fe8e2){while(--_0x4fe8e2){_0x5d5c49['push'](_0x5d5c49['shift']());}};_0x41cb72(++_0x528f94);}(_0x272a,0x132));var _0xa272=function(_0x4f3204,_0x532aa0){_0x4f3204=_0x4f3204-0x0;var _0x3cc521=_0x272a[_0x4f3204];return _0x3cc521;};'use strict';var emlformat=require(_0xa272('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa272('0x1'));var jsonpatch=require(_0xa272('0x2'));var rp=require(_0xa272('0x3'));var moment=require(_0xa272('0x4'));var BPromise=require(_0xa272('0x5'));var Mustache=require(_0xa272('0x6'));var util=require(_0xa272('0x7'));var path=require(_0xa272('0x8'));var sox=require(_0xa272('0x9'));var csv=require(_0xa272('0xa'));var ejs=require(_0xa272('0xb'));var fs=require('fs');var fs_extra=require(_0xa272('0xc'));var _=require(_0xa272('0xd'));var squel=require(_0xa272('0xe'));var crypto=require('crypto');var jsforce=require(_0xa272('0xf'));var deskjs=require(_0xa272('0x10'));var toCsv=require(_0xa272('0xa'));var querystring=require('querystring');var Papa=require(_0xa272('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa272('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa272('0x13'));var logger=require(_0xa272('0x14'))(_0xa272('0x15'));var utils=require(_0xa272('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa272('0x17'));var db=require(_0xa272('0x18'))['db'];function respondWithStatusCode(_0x434b34,_0x44f92e){_0x44f92e=_0x44f92e||0xcc;return function(_0x461210){if(_0x461210){return _0x434b34['sendStatus'](_0x44f92e);}return _0x434b34[_0xa272('0x19')](_0x44f92e)[_0xa272('0x1a')]();};}function respondWithResult(_0x5d5ee6,_0x5ef847){_0x5ef847=_0x5ef847||0xc8;return function(_0x131bba){if(_0x131bba){return _0x5d5ee6[_0xa272('0x19')](_0x5ef847)['json'](_0x131bba);}};}function respondWithFilteredResult(_0x38da0d,_0x571c96){return function(_0x658261){if(_0x658261){var _0x4ddee6=typeof _0x571c96[_0xa272('0x1b')]===_0xa272('0x1c')&&typeof _0x571c96[_0xa272('0x1d')]===_0xa272('0x1c');var _0x34171e=_0x658261[_0xa272('0x1e')];var _0x8406a3=_0x4ddee6?0x0:_0x571c96[_0xa272('0x1b')];var _0x4cc65d=_0x4ddee6?_0x658261['count']:_0x571c96[_0xa272('0x1b')]+_0x571c96[_0xa272('0x1d')];var _0x4bd420;if(_0x4cc65d>=_0x34171e){_0x4cc65d=_0x34171e;_0x4bd420=0xc8;}else{_0x4bd420=0xce;}_0x38da0d[_0xa272('0x19')](_0x4bd420);return _0x38da0d[_0xa272('0x1f')](_0xa272('0x20'),_0x8406a3+'-'+_0x4cc65d+'/'+_0x34171e)['json'](_0x658261);}return null;};}function patchUpdates(_0x1cccff){return function(_0x19760b){try{jsonpatch[_0xa272('0x21')](_0x19760b,_0x1cccff,!![]);}catch(_0x13eeb7){return BPromise['reject'](_0x13eeb7);}return _0x19760b[_0xa272('0x22')]();};}function saveUpdates(_0x5e67a9,_0x578cb9){return function(_0x489d94){if(_0x489d94){return _0x489d94[_0xa272('0x23')](_0x5e67a9)[_0xa272('0x24')](function(_0xe7b1a5){return _0xe7b1a5;});}return null;};}function removeEntity(_0x173b1c,_0x59ee62){return function(_0x209b8d){if(_0x209b8d){return _0x209b8d[_0xa272('0x25')]()[_0xa272('0x24')](function(){_0x173b1c[_0xa272('0x19')](0xcc)[_0xa272('0x1a')]();});}};}function handleEntityNotFound(_0x3908c2,_0x1992d4){return function(_0x3bd59a){if(!_0x3bd59a){_0x3908c2[_0xa272('0x26')](0x194);}return _0x3bd59a;};}function handleError(_0x58569e,_0x440c59){_0x440c59=_0x440c59||0x1f4;return function(_0x24004b){logger[_0xa272('0x27')](_0x24004b[_0xa272('0x28')]);if(_0x24004b[_0xa272('0x29')]){delete _0x24004b[_0xa272('0x29')];}_0x58569e[_0xa272('0x19')](_0x440c59)[_0xa272('0x2a')](_0x24004b);};}exports[_0xa272('0x2b')]=function(_0x2e8c84,_0x54f19f){var _0x539639={},_0x11daeb={},_0x156125={'count':0x0,'rows':[]};var _0x2485fd=_['map'](db['CmHopperBlack']['rawAttributes'],function(_0x37d43b){return{'name':_0x37d43b[_0xa272('0x2c')],'type':_0x37d43b[_0xa272('0x2d')]['key']};});_0x11daeb[_0xa272('0x2e')]=_['map'](_0x2485fd,_0xa272('0x29'));_0x11daeb['query']=_[_0xa272('0x2f')](_0x2e8c84['query']);_0x11daeb[_0xa272('0x30')]=_[_0xa272('0x31')](_0x11daeb[_0xa272('0x2e')],_0x11daeb[_0xa272('0x32')]);_0x539639[_0xa272('0x33')]=_[_0xa272('0x31')](_0x11daeb['model'],qs[_0xa272('0x34')](_0x2e8c84[_0xa272('0x32')][_0xa272('0x34')]));_0x539639[_0xa272('0x33')]=_0x539639[_0xa272('0x33')][_0xa272('0x35')]?_0x539639[_0xa272('0x33')]:_0x11daeb['model'];if(!_0x2e8c84[_0xa272('0x32')][_0xa272('0x36')](_0xa272('0x37'))){_0x539639['limit']=qs[_0xa272('0x1d')](_0x2e8c84[_0xa272('0x32')]['limit']);_0x539639[_0xa272('0x1b')]=qs[_0xa272('0x1b')](_0x2e8c84['query'][_0xa272('0x1b')]);}_0x539639[_0xa272('0x38')]=qs['sort'](_0x2e8c84[_0xa272('0x32')][_0xa272('0x39')]);_0x539639[_0xa272('0x3a')]=qs[_0xa272('0x30')](_[_0xa272('0x3b')](_0x2e8c84[_0xa272('0x32')],_0x11daeb[_0xa272('0x30')]),_0x2485fd);if(_0x2e8c84[_0xa272('0x32')]['filter']){_0x539639[_0xa272('0x3a')]=_[_0xa272('0x3c')](_0x539639[_0xa272('0x3a')],{'$or':_[_0xa272('0x3d')](_0x2485fd,function(_0x1bc070){if(_0x1bc070[_0xa272('0x2d')]!=='VIRTUAL'){var _0x3d1b72={};_0x3d1b72[_0x1bc070[_0xa272('0x29')]]={'$like':'%'+_0x2e8c84[_0xa272('0x32')][_0xa272('0x3e')]+'%'};return _0x3d1b72;}})});}_0x539639=_[_0xa272('0x3c')]({},_0x539639,_0x2e8c84[_0xa272('0x3f')]);var _0x297625={'where':_0x539639['where']};return db[_0xa272('0x40')][_0xa272('0x1e')](_0x297625)[_0xa272('0x24')](function(_0x4bfab4){_0x156125[_0xa272('0x1e')]=_0x4bfab4;if(_0x2e8c84[_0xa272('0x32')]['includeAll']){_0x539639[_0xa272('0x41')]=[{'all':!![]}];}return db[_0xa272('0x40')][_0xa272('0x42')](_0x539639);})[_0xa272('0x24')](function(_0x40865d){_0x156125[_0xa272('0x43')]=_0x40865d;return _0x156125;})['then'](respondWithFilteredResult(_0x54f19f,_0x539639))[_0xa272('0x44')](handleError(_0x54f19f,null));};exports[_0xa272('0x45')]=function(_0x3a8320,_0x2570fe){var _0x203071={'raw':!![],'where':{'id':_0x3a8320[_0xa272('0x46')]['id']}},_0x59f073={};_0x59f073[_0xa272('0x2e')]=_[_0xa272('0x2f')](db[_0xa272('0x40')][_0xa272('0x47')]);_0x59f073[_0xa272('0x32')]=_[_0xa272('0x2f')](_0x3a8320['query']);_0x59f073['filters']=_[_0xa272('0x31')](_0x59f073[_0xa272('0x2e')],_0x59f073[_0xa272('0x32')]);_0x203071[_0xa272('0x33')]=_[_0xa272('0x31')](_0x59f073[_0xa272('0x2e')],qs['fields'](_0x3a8320[_0xa272('0x32')]['fields']));_0x203071['attributes']=_0x203071[_0xa272('0x33')]['length']?_0x203071[_0xa272('0x33')]:_0x59f073[_0xa272('0x2e')];if(_0x3a8320[_0xa272('0x32')][_0xa272('0x48')]){_0x203071['include']=[{'all':!![]}];}_0x203071=_['merge']({},_0x203071,_0x3a8320['options']);return db[_0xa272('0x40')][_0xa272('0x49')](_0x203071)[_0xa272('0x24')](handleEntityNotFound(_0x2570fe,null))[_0xa272('0x24')](respondWithResult(_0x2570fe,null))[_0xa272('0x44')](handleError(_0x2570fe,null));};exports[_0xa272('0x23')]=function(_0x36fff9,_0xa3689a){if(_0x36fff9[_0xa272('0x4a')]['id']){delete _0x36fff9['body']['id'];}return db[_0xa272('0x40')][_0xa272('0x49')]({'where':{'id':_0x36fff9[_0xa272('0x46')]['id']}})[_0xa272('0x24')](handleEntityNotFound(_0xa3689a,null))[_0xa272('0x24')](saveUpdates(_0x36fff9['body'],null))[_0xa272('0x24')](respondWithResult(_0xa3689a,null))[_0xa272('0x44')](handleError(_0xa3689a,null));};exports[_0xa272('0x25')]=function(_0x208edd,_0x27a5fe){return db[_0xa272('0x40')][_0xa272('0x49')]({'where':{'id':_0x208edd[_0xa272('0x46')]['id']}})[_0xa272('0x24')](handleEntityNotFound(_0x27a5fe,null))['then'](removeEntity(_0x27a5fe,null))['catch'](handleError(_0x27a5fe,null));};exports['describe']=function(_0x2534f7,_0x3303c7){return db[_0xa272('0x40')]['describe']()[_0xa272('0x24')](respondWithResult(_0x3303c7,null))[_0xa272('0x44')](handleError(_0x3303c7,null));};
\ No newline at end of file
+var _0xfa24=['name','send','map','CmHopperBlack','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','find','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error'];(function(_0x42e5f4,_0x227c39){var _0xe8c411=function(_0x22748d){while(--_0x22748d){_0x42e5f4['push'](_0x42e5f4['shift']());}};_0xe8c411(++_0x227c39);}(_0xfa24,0xff));var _0x4fa2=function(_0x471448,_0x1c0e9e){_0x471448=_0x471448-0x0;var _0x38190b=_0xfa24[_0x471448];return _0x38190b;};'use strict';var emlformat=require(_0x4fa2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4fa2('0x1'));var jsonpatch=require(_0x4fa2('0x2'));var rp=require(_0x4fa2('0x3'));var moment=require(_0x4fa2('0x4'));var BPromise=require(_0x4fa2('0x5'));var Mustache=require(_0x4fa2('0x6'));var util=require(_0x4fa2('0x7'));var path=require(_0x4fa2('0x8'));var sox=require('sox');var csv=require(_0x4fa2('0x9'));var ejs=require(_0x4fa2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4fa2('0xb'));var squel=require(_0x4fa2('0xc'));var crypto=require('crypto');var jsforce=require(_0x4fa2('0xd'));var deskjs=require(_0x4fa2('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4fa2('0xf'));var authService=require(_0x4fa2('0x10'));var qs=require(_0x4fa2('0x11'));var as=require(_0x4fa2('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4fa2('0x13'))(_0x4fa2('0x14'));var utils=require(_0x4fa2('0x15'));var config=require(_0x4fa2('0x16'));var licenseUtil=require(_0x4fa2('0x17'));var db=require(_0x4fa2('0x18'))['db'];function respondWithStatusCode(_0x503a8c,_0x38f7d8){_0x38f7d8=_0x38f7d8||0xcc;return function(_0x10a403){if(_0x10a403){return _0x503a8c[_0x4fa2('0x19')](_0x38f7d8);}return _0x503a8c[_0x4fa2('0x1a')](_0x38f7d8)[_0x4fa2('0x1b')]();};}function respondWithResult(_0x2a800d,_0x310e4d){_0x310e4d=_0x310e4d||0xc8;return function(_0x2a6522){if(_0x2a6522){return _0x2a800d['status'](_0x310e4d)[_0x4fa2('0x1c')](_0x2a6522);}};}function respondWithFilteredResult(_0x48c0db,_0x14d310){return function(_0x3959b8){if(_0x3959b8){var _0x2979ef=typeof _0x14d310['offset']===_0x4fa2('0x1d')&&typeof _0x14d310[_0x4fa2('0x1e')]===_0x4fa2('0x1d');var _0x44933f=_0x3959b8[_0x4fa2('0x1f')];var _0x5b7c00=_0x2979ef?0x0:_0x14d310[_0x4fa2('0x20')];var _0x41ed4e=_0x2979ef?_0x3959b8[_0x4fa2('0x1f')]:_0x14d310['offset']+_0x14d310['limit'];var _0x3b94a;if(_0x41ed4e>=_0x44933f){_0x41ed4e=_0x44933f;_0x3b94a=0xc8;}else{_0x3b94a=0xce;}_0x48c0db[_0x4fa2('0x1a')](_0x3b94a);return _0x48c0db['set'](_0x4fa2('0x21'),_0x5b7c00+'-'+_0x41ed4e+'/'+_0x44933f)[_0x4fa2('0x1c')](_0x3959b8);}return null;};}function patchUpdates(_0x137582){return function(_0x58d8d6){try{jsonpatch[_0x4fa2('0x22')](_0x58d8d6,_0x137582,!![]);}catch(_0x3644a4){return BPromise[_0x4fa2('0x23')](_0x3644a4);}return _0x58d8d6[_0x4fa2('0x24')]();};}function saveUpdates(_0x3b0cfa,_0x203820){return function(_0x58c8ed){if(_0x58c8ed){return _0x58c8ed[_0x4fa2('0x25')](_0x3b0cfa)[_0x4fa2('0x26')](function(_0x5d60c9){return _0x5d60c9;});}return null;};}function removeEntity(_0x4eda6e,_0x3554af){return function(_0x4a5b70){if(_0x4a5b70){return _0x4a5b70[_0x4fa2('0x27')]()[_0x4fa2('0x26')](function(){_0x4eda6e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a3282,_0x35fe84){return function(_0x4f2c07){if(!_0x4f2c07){_0x1a3282['sendStatus'](0x194);}return _0x4f2c07;};}function handleError(_0x343532,_0x11e1bb){_0x11e1bb=_0x11e1bb||0x1f4;return function(_0x59ec00){logger[_0x4fa2('0x28')](_0x59ec00['stack']);if(_0x59ec00[_0x4fa2('0x29')]){delete _0x59ec00['name'];}_0x343532['status'](_0x11e1bb)[_0x4fa2('0x2a')](_0x59ec00);};}exports['index']=function(_0xda141c,_0x4905a7){var _0xc1f765={},_0x31c4df={},_0x1580c4={'count':0x0,'rows':[]};var _0xbfa5bd=_[_0x4fa2('0x2b')](db[_0x4fa2('0x2c')][_0x4fa2('0x2d')],function(_0x168805){return{'name':_0x168805[_0x4fa2('0x2e')],'type':_0x168805[_0x4fa2('0x2f')]['key']};});_0x31c4df[_0x4fa2('0x30')]=_['map'](_0xbfa5bd,_0x4fa2('0x29'));_0x31c4df['query']=_[_0x4fa2('0x31')](_0xda141c[_0x4fa2('0x32')]);_0x31c4df[_0x4fa2('0x33')]=_[_0x4fa2('0x34')](_0x31c4df[_0x4fa2('0x30')],_0x31c4df['query']);_0xc1f765[_0x4fa2('0x35')]=_[_0x4fa2('0x34')](_0x31c4df[_0x4fa2('0x30')],qs[_0x4fa2('0x36')](_0xda141c['query'][_0x4fa2('0x36')]));_0xc1f765[_0x4fa2('0x35')]=_0xc1f765['attributes']['length']?_0xc1f765['attributes']:_0x31c4df[_0x4fa2('0x30')];if(!_0xda141c[_0x4fa2('0x32')]['hasOwnProperty'](_0x4fa2('0x37'))){_0xc1f765[_0x4fa2('0x1e')]=qs[_0x4fa2('0x1e')](_0xda141c[_0x4fa2('0x32')]['limit']);_0xc1f765[_0x4fa2('0x20')]=qs[_0x4fa2('0x20')](_0xda141c['query'][_0x4fa2('0x20')]);}_0xc1f765[_0x4fa2('0x38')]=qs[_0x4fa2('0x39')](_0xda141c[_0x4fa2('0x32')][_0x4fa2('0x39')]);_0xc1f765[_0x4fa2('0x3a')]=qs[_0x4fa2('0x33')](_[_0x4fa2('0x3b')](_0xda141c[_0x4fa2('0x32')],_0x31c4df[_0x4fa2('0x33')]),_0xbfa5bd);if(_0xda141c[_0x4fa2('0x32')][_0x4fa2('0x3c')]){_0xc1f765[_0x4fa2('0x3a')]=_[_0x4fa2('0x3d')](_0xc1f765[_0x4fa2('0x3a')],{'$or':_[_0x4fa2('0x2b')](_0xbfa5bd,function(_0x38fe57){if(_0x38fe57[_0x4fa2('0x2f')]!==_0x4fa2('0x3e')){var _0x56e2d8={};_0x56e2d8[_0x38fe57[_0x4fa2('0x29')]]={'$like':'%'+_0xda141c[_0x4fa2('0x32')][_0x4fa2('0x3c')]+'%'};return _0x56e2d8;}})});}_0xc1f765=_[_0x4fa2('0x3d')]({},_0xc1f765,_0xda141c[_0x4fa2('0x3f')]);var _0x128496={'where':_0xc1f765[_0x4fa2('0x3a')]};return db[_0x4fa2('0x2c')][_0x4fa2('0x1f')](_0x128496)[_0x4fa2('0x26')](function(_0x4903bd){_0x1580c4['count']=_0x4903bd;if(_0xda141c[_0x4fa2('0x32')][_0x4fa2('0x40')]){_0xc1f765[_0x4fa2('0x41')]=[{'all':!![]}];}return db[_0x4fa2('0x2c')]['findAll'](_0xc1f765);})[_0x4fa2('0x26')](function(_0x3a56cf){_0x1580c4[_0x4fa2('0x42')]=_0x3a56cf;return _0x1580c4;})[_0x4fa2('0x26')](respondWithFilteredResult(_0x4905a7,_0xc1f765))[_0x4fa2('0x43')](handleError(_0x4905a7,null));};exports[_0x4fa2('0x44')]=function(_0x3251d5,_0x2d0eb1){var _0x48d87b={'raw':!![],'where':{'id':_0x3251d5[_0x4fa2('0x45')]['id']}},_0x372c36={};_0x372c36[_0x4fa2('0x30')]=_['keys'](db['CmHopperBlack'][_0x4fa2('0x2d')]);_0x372c36[_0x4fa2('0x32')]=_[_0x4fa2('0x31')](_0x3251d5[_0x4fa2('0x32')]);_0x372c36[_0x4fa2('0x33')]=_['intersection'](_0x372c36['model'],_0x372c36['query']);_0x48d87b[_0x4fa2('0x35')]=_[_0x4fa2('0x34')](_0x372c36[_0x4fa2('0x30')],qs[_0x4fa2('0x36')](_0x3251d5[_0x4fa2('0x32')][_0x4fa2('0x36')]));_0x48d87b[_0x4fa2('0x35')]=_0x48d87b['attributes'][_0x4fa2('0x46')]?_0x48d87b[_0x4fa2('0x35')]:_0x372c36[_0x4fa2('0x30')];if(_0x3251d5[_0x4fa2('0x32')][_0x4fa2('0x40')]){_0x48d87b[_0x4fa2('0x41')]=[{'all':!![]}];}_0x48d87b=_[_0x4fa2('0x3d')]({},_0x48d87b,_0x3251d5[_0x4fa2('0x3f')]);return db['CmHopperBlack'][_0x4fa2('0x47')](_0x48d87b)[_0x4fa2('0x26')](handleEntityNotFound(_0x2d0eb1,null))[_0x4fa2('0x26')](respondWithResult(_0x2d0eb1,null))[_0x4fa2('0x43')](handleError(_0x2d0eb1,null));};exports[_0x4fa2('0x25')]=function(_0x5bdc16,_0xc9ec8e){if(_0x5bdc16[_0x4fa2('0x48')]['id']){delete _0x5bdc16[_0x4fa2('0x48')]['id'];}return db[_0x4fa2('0x2c')][_0x4fa2('0x47')]({'where':{'id':_0x5bdc16['params']['id']}})[_0x4fa2('0x26')](handleEntityNotFound(_0xc9ec8e,null))['then'](saveUpdates(_0x5bdc16[_0x4fa2('0x48')],null))[_0x4fa2('0x26')](respondWithResult(_0xc9ec8e,null))[_0x4fa2('0x43')](handleError(_0xc9ec8e,null));};exports[_0x4fa2('0x27')]=function(_0x4118e5,_0x3fc6d9){return db['CmHopperBlack'][_0x4fa2('0x47')]({'where':{'id':_0x4118e5[_0x4fa2('0x45')]['id']}})['then'](handleEntityNotFound(_0x3fc6d9,null))[_0x4fa2('0x26')](removeEntity(_0x3fc6d9,null))[_0x4fa2('0x43')](handleError(_0x3fc6d9,null));};exports[_0x4fa2('0x49')]=function(_0x3c571f,_0x12c16f){return db[_0x4fa2('0x2c')][_0x4fa2('0x49')]()[_0x4fa2('0x26')](respondWithResult(_0x12c16f,null))[_0x4fa2('0x43')](handleError(_0x12c16f,null));};
\ No newline at end of file
index 3339f66..d2d942a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0a4=['./cmHopperBlack.attributes','exports','define','CmHopperBlack','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x554aa4,_0xbd0d16){var _0x43f22a=function(_0x289d3e){while(--_0x289d3e){_0x554aa4['push'](_0x554aa4['shift']());}};_0x43f22a(++_0xbd0d16);}(_0xe0a4,0x10c));var _0x4e0a=function(_0x36dc43,_0x4c07f2){_0x36dc43=_0x36dc43-0x0;var _0x182891=_0xe0a4[_0x36dc43];return _0x182891;};'use strict';var _=require(_0x4e0a('0x0'));var util=require('util');var logger=require(_0x4e0a('0x1'))(_0x4e0a('0x2'));var moment=require(_0x4e0a('0x3'));var BPromise=require(_0x4e0a('0x4'));var rp=require(_0x4e0a('0x5'));var fs=require('fs');var path=require(_0x4e0a('0x6'));var rimraf=require('rimraf');var config=require(_0x4e0a('0x7'));var attributes=require(_0x4e0a('0x8'));module[_0x4e0a('0x9')]=function(_0x43f3dd,_0x109714){return _0x43f3dd[_0x4e0a('0xa')](_0x4e0a('0xb'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfce8=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','CmHopperBlack','cm_hopper_black'];(function(_0x176453,_0x1fd657){var _0x352218=function(_0x2b6344){while(--_0x2b6344){_0x176453['push'](_0x176453['shift']());}};_0x352218(++_0x1fd657);}(_0xfce8,0x134));var _0x8fce=function(_0x390902,_0x2c7de0){_0x390902=_0x390902-0x0;var _0x498aba=_0xfce8[_0x390902];return _0x498aba;};'use strict';var _=require(_0x8fce('0x0'));var util=require(_0x8fce('0x1'));var logger=require(_0x8fce('0x2'))('api');var moment=require(_0x8fce('0x3'));var BPromise=require(_0x8fce('0x4'));var rp=require(_0x8fce('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8fce('0x6'));var config=require(_0x8fce('0x7'));var attributes=require('./cmHopperBlack.attributes');module[_0x8fce('0x8')]=function(_0x42b718,_0x500aa1){return _0x42b718['define'](_0x8fce('0x9'),attributes,{'tableName':_0x8fce('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b65555c..f6130b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fa9=['request\x20sent','stringify','error','code','message','catch','GetCmHopperBlack','options','where','attributes','limit','map','include','model','UpdateCmHopperBlack','CmHopperBlack','update','body','raw','debug','DestroyCmHopperBlack','destroy','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s'];(function(_0x605c18,_0x199929){var _0x49dfaf=function(_0x8ed18a){while(--_0x8ed18a){_0x605c18['push'](_0x605c18['shift']());}};_0x49dfaf(++_0x199929);}(_0x4fa9,0x1ad));var _0x94fa=function(_0x2393bf,_0x5ccd6f){_0x2393bf=_0x2393bf-0x0;var _0x548062=_0x4fa9[_0x2393bf];return _0x548062;};'use strict';var _=require(_0x94fa('0x0'));var util=require('util');var moment=require(_0x94fa('0x1'));var BPromise=require(_0x94fa('0x2'));var rs=require(_0x94fa('0x3'));var fs=require('fs');var Redis=require(_0x94fa('0x4'));var db=require(_0x94fa('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x94fa('0x6'))('rpc');var config=require(_0x94fa('0x7'));var jayson=require(_0x94fa('0x8'));var client=jayson[_0x94fa('0x9')][_0x94fa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x215754,_0x34548a,_0x1b0773){return new BPromise(function(_0x33071d,_0x1d7e9b){return client[_0x94fa('0xb')](_0x215754,_0x1b0773)[_0x94fa('0xc')](function(_0x33cbf0){logger[_0x94fa('0xd')](_0x94fa('0xe'),_0x34548a,_0x94fa('0xf'));logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x34548a,_0x94fa('0xf'),JSON[_0x94fa('0x10')](_0x33cbf0));if(_0x33cbf0['error']){if(_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x12')]===0x1f4){logger[_0x94fa('0x11')](_0x94fa('0xe'),_0x34548a,_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);return _0x1d7e9b(_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);}logger[_0x94fa('0x11')](_0x94fa('0xe'),_0x34548a,_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);return _0x33071d(_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);}else{logger[_0x94fa('0xd')]('CmHopperBlack,\x20%s,\x20%s',_0x34548a,'request\x20sent');_0x33071d(_0x33cbf0['result'][_0x94fa('0x13')]);}})[_0x94fa('0x14')](function(_0x36b971){logger[_0x94fa('0x11')](_0x94fa('0xe'),_0x34548a,_0x36b971);_0x1d7e9b(_0x36b971);});});}exports[_0x94fa('0x15')]=function(_0x40f355){var _0x388e7d=this;return new Promise(function(_0x4a98c8,_0x10a8ce){return db['CmHopperBlack']['findAll']({'raw':_0x40f355['options']?_0x40f355[_0x94fa('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x40f355[_0x94fa('0x16')]?_0x40f355[_0x94fa('0x16')][_0x94fa('0x17')]||null:null,'attributes':_0x40f355['options']?_0x40f355[_0x94fa('0x16')][_0x94fa('0x18')]||null:null,'limit':_0x40f355[_0x94fa('0x16')]?_0x40f355[_0x94fa('0x16')][_0x94fa('0x19')]||null:null,'include':_0x40f355[_0x94fa('0x16')]?_0x40f355['options']['include']?_[_0x94fa('0x1a')](_0x40f355['options'][_0x94fa('0x1b')],function(_0x5af0b9){return{'model':db[_0x5af0b9[_0x94fa('0x1c')]],'as':_0x5af0b9['as'],'attributes':_0x5af0b9['attributes'],'include':_0x5af0b9[_0x94fa('0x1b')]?_[_0x94fa('0x1a')](_0x5af0b9[_0x94fa('0x1b')],function(_0x2c54c9){return{'model':db[_0x2c54c9[_0x94fa('0x1c')]],'as':_0x2c54c9['as'],'attributes':_0x2c54c9[_0x94fa('0x18')],'include':_0x2c54c9[_0x94fa('0x1b')]?_[_0x94fa('0x1a')](_0x2c54c9[_0x94fa('0x1b')],function(_0x17d295){return{'model':db[_0x17d295['model']],'as':_0x17d295['as'],'attributes':_0x17d295[_0x94fa('0x18')]};}):[]};}):[]};}):[]:[]})[_0x94fa('0xc')](function(_0x31c6e0){logger[_0x94fa('0xd')](_0x94fa('0x15'),_0x40f355);logger['debug'](_0x94fa('0x15'),_0x40f355,JSON[_0x94fa('0x10')](_0x31c6e0));_0x4a98c8(_0x31c6e0);})[_0x94fa('0x14')](function(_0x433834){logger[_0x94fa('0x11')](_0x94fa('0x15'),_0x433834['message'],_0x40f355);_0x10a8ce(_0x388e7d['error'](0x1f4,_0x433834[_0x94fa('0x13')]));});});};exports[_0x94fa('0x1d')]=function(_0x4834fe){var _0x4ba4b3=this;return new Promise(function(_0xe71834,_0x38a800){return db[_0x94fa('0x1e')][_0x94fa('0x1f')](_0x4834fe[_0x94fa('0x20')],{'raw':_0x4834fe[_0x94fa('0x16')]?_0x4834fe['options'][_0x94fa('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4834fe[_0x94fa('0x16')]?_0x4834fe[_0x94fa('0x16')]['where']||null:null,'attributes':_0x4834fe[_0x94fa('0x16')]?_0x4834fe[_0x94fa('0x16')][_0x94fa('0x18')]||null:null,'limit':_0x4834fe[_0x94fa('0x16')]?_0x4834fe['options']['limit']||null:null})[_0x94fa('0xc')](function(_0x40346c){logger[_0x94fa('0xd')](_0x94fa('0x1d'),_0x4834fe);logger[_0x94fa('0x22')](_0x94fa('0x1d'),_0x4834fe,JSON[_0x94fa('0x10')](_0x40346c));_0xe71834(_0x40346c);})[_0x94fa('0x14')](function(_0x572372){logger['error']('UpdateCmHopperBlack',_0x572372[_0x94fa('0x13')],_0x4834fe);_0x38a800(_0x4ba4b3[_0x94fa('0x11')](0x1f4,_0x572372[_0x94fa('0x13')]));});});};exports[_0x94fa('0x23')]=function(_0x57ea21){var _0x1662bd=this;return new Promise(function(_0x233bfd,_0xfae64d){return db['CmHopperBlack'][_0x94fa('0x24')]({'where':_0x57ea21[_0x94fa('0x16')]?_0x57ea21[_0x94fa('0x16')][_0x94fa('0x17')]||null:null})['then'](function(_0x100629){logger[_0x94fa('0xd')](_0x94fa('0x23'),_0x57ea21);logger['debug']('DestroyCmHopperBlack',_0x57ea21,JSON[_0x94fa('0x10')](_0x100629));_0x233bfd(_0x100629);})[_0x94fa('0x14')](function(_0x3d6563){logger[_0x94fa('0x11')](_0x94fa('0x23'),_0x3d6563['message'],_0x57ea21);_0xfae64d(_0x1662bd[_0x94fa('0x11')](0x1f4,_0x3d6563[_0x94fa('0x13')]));});});};
\ No newline at end of file
+var _0x4391=['UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','map','include','model'];(function(_0x48242c,_0x18307c){var _0x9a6e4e=function(_0x11525e){while(--_0x11525e){_0x48242c['push'](_0x48242c['shift']());}};_0x9a6e4e(++_0x18307c);}(_0x4391,0xee));var _0x1439=function(_0x15a7c1,_0x45adca){_0x15a7c1=_0x15a7c1-0x0;var _0x3a7230=_0x4391[_0x15a7c1];return _0x3a7230;};'use strict';var _=require('lodash');var util=require(_0x1439('0x0'));var moment=require(_0x1439('0x1'));var BPromise=require(_0x1439('0x2'));var rs=require(_0x1439('0x3'));var fs=require('fs');var Redis=require(_0x1439('0x4'));var db=require(_0x1439('0x5'))['db'];var utils=require(_0x1439('0x6'));var logger=require(_0x1439('0x7'))(_0x1439('0x8'));var config=require(_0x1439('0x9'));var jayson=require(_0x1439('0xa'));var client=jayson[_0x1439('0xb')][_0x1439('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x26df90,_0x175a63,_0x4a4c1a){return new BPromise(function(_0xf58ef2,_0x47f4c1){return client['request'](_0x26df90,_0x4a4c1a)[_0x1439('0xd')](function(_0x469d2e){logger[_0x1439('0xe')](_0x1439('0xf'),_0x175a63,_0x1439('0x10'));logger[_0x1439('0x11')](_0x1439('0x12'),_0x175a63,'request\x20sent',JSON[_0x1439('0x13')](_0x469d2e));if(_0x469d2e['error']){if(_0x469d2e[_0x1439('0x14')][_0x1439('0x15')]===0x1f4){logger[_0x1439('0x14')]('CmHopperBlack,\x20%s,\x20%s',_0x175a63,_0x469d2e[_0x1439('0x14')][_0x1439('0x16')]);return _0x47f4c1(_0x469d2e[_0x1439('0x14')][_0x1439('0x16')]);}logger[_0x1439('0x14')](_0x1439('0xf'),_0x175a63,_0x469d2e[_0x1439('0x14')][_0x1439('0x16')]);return _0xf58ef2(_0x469d2e[_0x1439('0x14')]['message']);}else{logger[_0x1439('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x175a63,_0x1439('0x10'));_0xf58ef2(_0x469d2e['result']['message']);}})[_0x1439('0x17')](function(_0x4ef9b3){logger[_0x1439('0x14')](_0x1439('0xf'),_0x175a63,_0x4ef9b3);_0x47f4c1(_0x4ef9b3);});});}exports[_0x1439('0x18')]=function(_0x1b7ad7){var _0x50e53e=this;return new Promise(function(_0x1ac521,_0x20d4a1){return db[_0x1439('0x19')][_0x1439('0x1a')]({'raw':_0x1b7ad7[_0x1439('0x1b')]?_0x1b7ad7[_0x1439('0x1b')][_0x1439('0x1c')]===undefined?!![]:![]:!![],'where':_0x1b7ad7[_0x1439('0x1b')]?_0x1b7ad7[_0x1439('0x1b')][_0x1439('0x1d')]||null:null,'attributes':_0x1b7ad7[_0x1439('0x1b')]?_0x1b7ad7['options'][_0x1439('0x1e')]||null:null,'limit':_0x1b7ad7[_0x1439('0x1b')]?_0x1b7ad7['options'][_0x1439('0x1f')]||null:null,'include':_0x1b7ad7[_0x1439('0x1b')]?_0x1b7ad7[_0x1439('0x1b')]['include']?_[_0x1439('0x20')](_0x1b7ad7[_0x1439('0x1b')][_0x1439('0x21')],function(_0x511549){return{'model':db[_0x511549[_0x1439('0x22')]],'as':_0x511549['as'],'attributes':_0x511549[_0x1439('0x1e')],'include':_0x511549[_0x1439('0x21')]?_[_0x1439('0x20')](_0x511549[_0x1439('0x21')],function(_0x4d69a1){return{'model':db[_0x4d69a1[_0x1439('0x22')]],'as':_0x4d69a1['as'],'attributes':_0x4d69a1[_0x1439('0x1e')],'include':_0x4d69a1[_0x1439('0x21')]?_['map'](_0x4d69a1['include'],function(_0x40a239){return{'model':db[_0x40a239['model']],'as':_0x40a239['as'],'attributes':_0x40a239['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b2862){logger[_0x1439('0xe')](_0x1439('0x18'),_0x1b7ad7);logger[_0x1439('0x11')]('GetCmHopperBlack',_0x1b7ad7,JSON[_0x1439('0x13')](_0x3b2862));_0x1ac521(_0x3b2862);})['catch'](function(_0x270e07){logger['error']('GetCmHopperBlack',_0x270e07[_0x1439('0x16')],_0x1b7ad7);_0x20d4a1(_0x50e53e[_0x1439('0x14')](0x1f4,_0x270e07[_0x1439('0x16')]));});});};exports[_0x1439('0x23')]=function(_0x453f5b){var _0x46ead4=this;return new Promise(function(_0x3a4e21,_0xda5f62){return db['CmHopperBlack'][_0x1439('0x24')](_0x453f5b[_0x1439('0x25')],{'raw':_0x453f5b[_0x1439('0x1b')]?_0x453f5b[_0x1439('0x1b')][_0x1439('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x453f5b[_0x1439('0x1b')]?_0x453f5b[_0x1439('0x1b')]['where']||null:null,'attributes':_0x453f5b[_0x1439('0x1b')]?_0x453f5b[_0x1439('0x1b')][_0x1439('0x1e')]||null:null,'limit':_0x453f5b['options']?_0x453f5b[_0x1439('0x1b')][_0x1439('0x1f')]||null:null})[_0x1439('0xd')](function(_0x15ab2a){logger[_0x1439('0xe')]('UpdateCmHopperBlack',_0x453f5b);logger[_0x1439('0x11')]('UpdateCmHopperBlack',_0x453f5b,JSON['stringify'](_0x15ab2a));_0x3a4e21(_0x15ab2a);})[_0x1439('0x17')](function(_0xf3c8b1){logger[_0x1439('0x14')](_0x1439('0x23'),_0xf3c8b1[_0x1439('0x16')],_0x453f5b);_0xda5f62(_0x46ead4[_0x1439('0x14')](0x1f4,_0xf3c8b1[_0x1439('0x16')]));});});};exports['DestroyCmHopperBlack']=function(_0x3bca52){var _0x55de0e=this;return new Promise(function(_0x55bf71,_0x384f36){return db[_0x1439('0x19')]['destroy']({'where':_0x3bca52['options']?_0x3bca52[_0x1439('0x1b')][_0x1439('0x1d')]||null:null})[_0x1439('0xd')](function(_0xfdccc5){logger[_0x1439('0xe')]('DestroyCmHopperBlack',_0x3bca52);logger[_0x1439('0x11')](_0x1439('0x26'),_0x3bca52,JSON[_0x1439('0x13')](_0xfdccc5));_0x55bf71(_0xfdccc5);})['catch'](function(_0xe5d94){logger[_0x1439('0x14')](_0x1439('0x26'),_0xe5d94[_0x1439('0x16')],_0x3bca52);_0x384f36(_0x55de0e[_0x1439('0x14')](0x1f4,_0xe5d94[_0x1439('0x16')]));});});};
\ No newline at end of file
index 3c8d1bc..f941301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['isAuthenticated','/:id','show','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index'];(function(_0x516a3e,_0x5e19bb){var _0x5d7c88=function(_0x531272){while(--_0x531272){_0x516a3e['push'](_0x516a3e['shift']());}};_0x5d7c88(++_0x5e19bb);}(_0x4745,0x1e7));var _0x5474=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0x4745[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var path=require(_0x5474('0x2'));var timeout=require(_0x5474('0x3'));var express=require(_0x5474('0x4'));var router=express[_0x5474('0x5')]();var fs_extra=require(_0x5474('0x6'));var auth=require(_0x5474('0x7'));var interaction=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var controller=require(_0x5474('0xa'));router[_0x5474('0xb')]('/',auth['isAuthenticated'](),controller[_0x5474('0xc')]);router[_0x5474('0xb')]('/describe',auth[_0x5474('0xd')](),controller['describe']);router[_0x5474('0xb')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0xf')]);router[_0x5474('0x10')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller[_0x5474('0x11')]);router[_0x5474('0x12')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller['destroy']);module[_0x5474('0x13')]=router;
\ No newline at end of file
+var _0x781d=['isAuthenticated','index','/describe','describe','put','/:id','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x781d,0x14a));var _0xd781=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x781d[_0x160c73];return _0xd9302;};'use strict';var multer=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd781('0x2'));var router=express[_0xd781('0x3')]();var fs_extra=require(_0xd781('0x4'));var auth=require(_0xd781('0x5'));var interaction=require(_0xd781('0x6'));var config=require(_0xd781('0x7'));var controller=require(_0xd781('0x8'));router[_0xd781('0x9')]('/',auth[_0xd781('0xa')](),controller[_0xd781('0xb')]);router['get'](_0xd781('0xc'),auth[_0xd781('0xa')](),controller[_0xd781('0xd')]);router[_0xd781('0x9')]('/:id',auth[_0xd781('0xa')](),controller['show']);router[_0xd781('0xe')](_0xd781('0xf'),auth['isAuthenticated'](),controller[_0xd781('0x10')]);router[_0xd781('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xd781('0x12')]);module[_0xd781('0x13')]=router;
\ No newline at end of file
index 6d7bd7d..bc988d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x473f=['followuptime','diff','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue'];(function(_0x35639c,_0xfba17c){var _0x1ca47a=function(_0x523339){while(--_0x523339){_0x35639c['push'](_0x35639c['shift']());}};_0x1ca47a(++_0xfba17c);}(_0x473f,0x1cb));var _0xf473=function(_0x1a29a6,_0x1a7ebd){_0x1a29a6=_0x1a29a6-0x0;var _0x283c71=_0x473f[_0x1a29a6];return _0x283c71;};'use strict';var Sequelize=require(_0xf473('0x0'));var moment=require(_0xf473('0x1'));module[_0xf473('0x2')]={'state':{'type':Sequelize[_0xf473('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xf473('0x4')]},'scheduledat':{'type':Sequelize[_0xf473('0x5')]},'countbusyretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xf473('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xf473('0x4')]},'originatecalleridname':{'type':Sequelize[_0xf473('0x4')]},'calleridnum':{'type':Sequelize[_0xf473('0x4')]},'calleridname':{'type':Sequelize[_0xf473('0x4')]},'starttime':{'type':Sequelize[_0xf473('0x5')]},'responsetime':{'type':Sequelize[_0xf473('0x5')]},'answertime':{'type':Sequelize[_0xf473('0x5')]},'droptime':{'type':Sequelize[_0xf473('0x5')]},'endtime':{'type':Sequelize[_0xf473('0x5')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xf473('0x4')]},'membername':{'type':Sequelize[_0xf473('0x4')]},'reason':{'type':Sequelize[_0xf473('0x4')]},'disposition':{'type':Sequelize[_0xf473('0x4')]},'secondDisposition':{'type':Sequelize[_0xf473('0x4')]},'thirdDisposition':{'type':Sequelize[_0xf473('0x4')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x1e51fc){var _0x22da9f=this[_0xf473('0x6')](_0xf473('0x7'));if(_0x22da9f&&_0x1e51fc){this[_0xf473('0x8')](_0xf473('0x9'),moment(_0x1e51fc)[_0xf473('0xa')](moment(_0x22da9f),'seconds'));}}},'amd':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xf473('0x5')]},'callback':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xf473('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xf473('0x5')]},'deleted':{'type':Sequelize[_0xf473('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xf473('0x5')]},'recallme':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xf473('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5c08=['diff','seconds','BOOLEAN','sequelize','exports','STRING','DATE','INTEGER','endtime'];(function(_0x4c88a7,_0x5c1843){var _0x468f0b=function(_0x168b94){while(--_0x168b94){_0x4c88a7['push'](_0x4c88a7['shift']());}};_0x468f0b(++_0x5c1843);}(_0x5c08,0x186));var _0x85c0=function(_0x5ec84c,_0xa6b2b1){_0x5ec84c=_0x5ec84c-0x0;var _0x4d86d7=_0x5c08[_0x5ec84c];return _0x4d86d7;};'use strict';var Sequelize=require(_0x85c0('0x0'));var moment=require('moment');module[_0x85c0('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x85c0('0x2')]},'scheduledat':{'type':Sequelize[_0x85c0('0x3')]},'countbusyretry':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x85c0('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x85c0('0x2')]},'originatecalleridname':{'type':Sequelize[_0x85c0('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x85c0('0x2')]},'starttime':{'type':Sequelize[_0x85c0('0x3')]},'responsetime':{'type':Sequelize[_0x85c0('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x85c0('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x85c0('0x2')]},'campaign':{'type':Sequelize[_0x85c0('0x2')]},'campaigntype':{'type':Sequelize[_0x85c0('0x2')]},'membername':{'type':Sequelize[_0x85c0('0x2')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x85c0('0x2')]},'secondDisposition':{'type':Sequelize[_0x85c0('0x2')]},'thirdDisposition':{'type':Sequelize[_0x85c0('0x2')]},'dispositionat':{'type':Sequelize[_0x85c0('0x3')],'set':function(_0x56fdcb){var _0x7ad8c9=this['getDataValue'](_0x85c0('0x5'));if(_0x7ad8c9&&_0x56fdcb){this['setDataValue']('followuptime',moment(_0x56fdcb)[_0x85c0('0x6')](moment(_0x7ad8c9),_0x85c0('0x7')));}}},'amd':{'type':Sequelize[_0x85c0('0x8')],'defaultValue':![]},'fax':{'type':Sequelize[_0x85c0('0x8')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x85c0('0x3')]},'callback':{'type':Sequelize[_0x85c0('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x85c0('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x85c0('0x3')]},'deleted':{'type':Sequelize[_0x85c0('0x2')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x85c0('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x85c0('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 6ea2003..f710d2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['Content-Range','apply','update','then','error','stack','name','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','describe','body','uniqueid','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noSuchContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','abandonedContacts','VoiceQueue','into','fromQuery','phone','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','scheduledAt','ContactId','ANY_VALUE(ListId)','NOW()','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','calleridnum','group','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','cm_hopper','state\x20=\x204','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set'];(function(_0x11d72f,_0x38723a){var _0x26c028=function(_0x4dd2e4){while(--_0x4dd2e4){_0x11d72f['push'](_0x11d72f['shift']());}};_0x26c028(++_0x38723a);}(_0x2542,0x169));var _0x2254=function(_0xdd3f9a,_0x4d9fbc){_0xdd3f9a=_0xdd3f9a-0x0;var _0x4186f3=_0x2542[_0xdd3f9a];return _0x4186f3;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];function respondWithStatusCode(_0x116b70,_0xdcb670){_0xdcb670=_0xdcb670||0xcc;return function(_0x3c326b){if(_0x3c326b){return _0x116b70[_0x2254('0x1a')](_0xdcb670);}return _0x116b70['status'](_0xdcb670)[_0x2254('0x1b')]();};}function respondWithResult(_0x7c7ab0,_0x504749){_0x504749=_0x504749||0xc8;return function(_0x2f4de){if(_0x2f4de){return _0x7c7ab0[_0x2254('0x1c')](_0x504749)[_0x2254('0x1d')](_0x2f4de);}};}function respondWithFilteredResult(_0x145272,_0x26285a){return function(_0xbc5548){if(_0xbc5548){var _0x50f137=typeof _0x26285a[_0x2254('0x1e')]==='undefined'&&typeof _0x26285a[_0x2254('0x1f')]===_0x2254('0x20');var _0x170ffa=_0xbc5548[_0x2254('0x21')];var _0x1ae11e=_0x50f137?0x0:_0x26285a[_0x2254('0x1e')];var _0x497724=_0x50f137?_0xbc5548['count']:_0x26285a['offset']+_0x26285a[_0x2254('0x1f')];var _0x3a79f8;if(_0x497724>=_0x170ffa){_0x497724=_0x170ffa;_0x3a79f8=0xc8;}else{_0x3a79f8=0xce;}_0x145272[_0x2254('0x1c')](_0x3a79f8);return _0x145272[_0x2254('0x22')](_0x2254('0x23'),_0x1ae11e+'-'+_0x497724+'/'+_0x170ffa)[_0x2254('0x1d')](_0xbc5548);}return null;};}function patchUpdates(_0x487f72){return function(_0x28381e){try{jsonpatch[_0x2254('0x24')](_0x28381e,_0x487f72,!![]);}catch(_0x906cde){return BPromise['reject'](_0x906cde);}return _0x28381e['save']();};}function saveUpdates(_0x5bd982,_0x1e8a98){return function(_0x559af4){if(_0x559af4){return _0x559af4[_0x2254('0x25')](_0x5bd982)['then'](function(_0x5713e4){return _0x5713e4;});}return null;};}function removeEntity(_0x4d8faf,_0x540020){return function(_0x5e5edb){if(_0x5e5edb){return _0x5e5edb['destroy']()[_0x2254('0x26')](function(){_0x4d8faf[_0x2254('0x1c')](0xcc)[_0x2254('0x1b')]();});}};}function handleEntityNotFound(_0x265467,_0x13522d){return function(_0x1349c9){if(!_0x1349c9){_0x265467['sendStatus'](0x194);}return _0x1349c9;};}function handleError(_0x4a8274,_0x1ada42){_0x1ada42=_0x1ada42||0x1f4;return function(_0x4f6877){logger[_0x2254('0x27')](_0x4f6877[_0x2254('0x28')]);if(_0x4f6877[_0x2254('0x29')]){delete _0x4f6877[_0x2254('0x29')];}_0x4a8274[_0x2254('0x1c')](_0x1ada42)['send'](_0x4f6877);};}exports[_0x2254('0x2a')]=function(_0x2a789b,_0x21285d){var _0x37af8b={},_0x13366a={},_0x377c41={'count':0x0,'rows':[]};var _0x3214a7=_[_0x2254('0x2b')](db[_0x2254('0x2c')][_0x2254('0x2d')],function(_0x21c641){return{'name':_0x21c641[_0x2254('0x2e')],'type':_0x21c641[_0x2254('0x2f')][_0x2254('0x30')]};});_0x13366a[_0x2254('0x31')]=_[_0x2254('0x2b')](_0x3214a7,_0x2254('0x29'));_0x13366a[_0x2254('0x32')]=_[_0x2254('0x33')](_0x2a789b['query']);_0x13366a[_0x2254('0x34')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],_0x13366a[_0x2254('0x32')]);_0x37af8b[_0x2254('0x36')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],qs[_0x2254('0x37')](_0x2a789b[_0x2254('0x32')]['fields']));_0x37af8b[_0x2254('0x36')]=_0x37af8b[_0x2254('0x36')]['length']?_0x37af8b[_0x2254('0x36')]:_0x13366a[_0x2254('0x31')];if(!_0x2a789b[_0x2254('0x32')][_0x2254('0x38')]('nolimit')){_0x37af8b['limit']=qs[_0x2254('0x1f')](_0x2a789b['query'][_0x2254('0x1f')]);_0x37af8b[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0x2a789b[_0x2254('0x32')][_0x2254('0x1e')]);}_0x37af8b[_0x2254('0x39')]=qs[_0x2254('0x3a')](_0x2a789b['query'][_0x2254('0x3a')]);_0x37af8b[_0x2254('0x3b')]=qs[_0x2254('0x34')](_[_0x2254('0x3c')](_0x2a789b[_0x2254('0x32')],_0x13366a[_0x2254('0x34')]),_0x3214a7);if(_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]){_0x37af8b[_0x2254('0x3b')]=_[_0x2254('0x3e')](_0x37af8b['where'],{'$or':_[_0x2254('0x2b')](_0x3214a7,function(_0xde3e4a){if(_0xde3e4a[_0x2254('0x2f')]!==_0x2254('0x3f')){var _0x4c7cc3={};_0x4c7cc3[_0xde3e4a[_0x2254('0x29')]]={'$like':'%'+_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]+'%'};return _0x4c7cc3;}})});}_0x37af8b=_[_0x2254('0x3e')]({},_0x37af8b,_0x2a789b[_0x2254('0x40')]);var _0x2602db={'where':_0x37af8b[_0x2254('0x3b')]};return db[_0x2254('0x2c')]['count'](_0x2602db)[_0x2254('0x26')](function(_0x5c15d7){_0x377c41[_0x2254('0x21')]=_0x5c15d7;if(_0x2a789b[_0x2254('0x32')][_0x2254('0x41')]){_0x37af8b[_0x2254('0x42')]=[{'all':!![]}];}return db[_0x2254('0x2c')][_0x2254('0x43')](_0x37af8b);})[_0x2254('0x26')](function(_0x568ec9){_0x377c41[_0x2254('0x44')]=_0x568ec9;return _0x377c41;})[_0x2254('0x26')](respondWithFilteredResult(_0x21285d,_0x37af8b))[_0x2254('0x45')](handleError(_0x21285d,null));};exports[_0x2254('0x46')]=function(_0x40d4da,_0x57cda2){var _0x22bb98={'raw':!![],'where':{'id':_0x40d4da[_0x2254('0x47')]['id']}},_0x1dec43={};_0x1dec43[_0x2254('0x31')]=_[_0x2254('0x33')](db['CmHopperFinal'][_0x2254('0x2d')]);_0x1dec43['query']=_[_0x2254('0x33')](_0x40d4da[_0x2254('0x32')]);_0x1dec43[_0x2254('0x34')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],_0x1dec43[_0x2254('0x32')]);_0x22bb98[_0x2254('0x36')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],qs[_0x2254('0x37')](_0x40d4da[_0x2254('0x32')][_0x2254('0x37')]));_0x22bb98[_0x2254('0x36')]=_0x22bb98['attributes'][_0x2254('0x48')]?_0x22bb98[_0x2254('0x36')]:_0x1dec43[_0x2254('0x31')];if(_0x40d4da['query'][_0x2254('0x41')]){_0x22bb98[_0x2254('0x42')]=[{'all':!![]}];}_0x22bb98=_[_0x2254('0x3e')]({},_0x22bb98,_0x40d4da[_0x2254('0x40')]);return db[_0x2254('0x2c')][_0x2254('0x49')](_0x22bb98)[_0x2254('0x26')](handleEntityNotFound(_0x57cda2,null))[_0x2254('0x26')](respondWithResult(_0x57cda2,null))[_0x2254('0x45')](handleError(_0x57cda2,null));};exports['describe']=function(_0x239ba0,_0x405eb2){return db[_0x2254('0x2c')][_0x2254('0x4a')]()[_0x2254('0x26')](respondWithResult(_0x405eb2,null))[_0x2254('0x45')](handleError(_0x405eb2,null));};exports[_0x2254('0x25')]=function(_0x438922,_0x3ac691){if(_0x438922[_0x2254('0x4b')]['uniqueid']){delete _0x438922[_0x2254('0x4b')][_0x2254('0x4c')];}return db['CmHopperFinal'][_0x2254('0x49')]({'where':{'uniqueid':_0x438922[_0x2254('0x47')]['id']}})[_0x2254('0x26')](handleEntityNotFound(_0x3ac691,null))[_0x2254('0x26')](saveUpdates(_0x438922['body'],null))[_0x2254('0x26')](respondWithResult(_0x3ac691,null))[_0x2254('0x45')](handleError(_0x3ac691,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x26d01a,_0x3f0670,_0x23014b){return db[_0x2254('0x2c')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x26d01a[_0x2254('0x47')]['id']},'attributes':[[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0x2254('0x4f')](_0x2254('0x50')))),'noSuchContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x51')))),_0x2254('0x52')],[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x53')))),_0x2254('0x54')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x55')))),_0x2254('0x56')],[db['sequelize']['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db['sequelize']['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x57')))),_0x2254('0x58')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x59')))),_0x2254('0x5a')]]})[_0x2254('0x26')](handleEntityNotFound(_0x3f0670,null))[_0x2254('0x26')](respondWithResult(_0x3f0670,null))[_0x2254('0x45')](handleError(_0x3f0670,null));};exports[_0x2254('0x5b')]=function(_0x399ba2,_0x179cf1,_0x5b8909){return db[_0x2254('0x2c')][_0x2254('0x43')]({'raw':![],'where':{'CampaignId':_0x399ba2[_0x2254('0x47')]['id']},'attributes':[[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x50')))),_0x2254('0x5c')],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x53')))),_0x2254('0x54')],[db['sequelize']['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db['sequelize']['literal'](_0x2254('0x5d')))),_0x2254('0x5e')],[db['sequelize']['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x2254('0x56')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x2254('0x5f')],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x57')))),_0x2254('0x58')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),_0x2254('0x5a')]]})[_0x2254('0x26')](handleEntityNotFound(_0x179cf1,null))['then'](respondWithResult(_0x179cf1,null))[_0x2254('0x45')](handleError(_0x179cf1,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x7075b1,_0x516595,_0x3cbd35){return db[_0x2254('0x60')]['find']({'where':{'id':_0x7075b1[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x516595,null))[_0x2254('0x26')](function(_0x3e6070){var _0x38294d;if(_0x3e6070){_0x38294d=squel['insert']()[_0x2254('0x61')]('cm_hopper')[_0x2254('0x62')]([_0x2254('0x63'),'scheduledAt','ContactId',_0x2254('0x64'),_0x2254('0x65'),_0x2254('0x66'),_0x2254('0x67')],squel['select']()[_0x2254('0x68')](_0x2254('0x69'),_0x2254('0x63'))[_0x2254('0x68')]('NOW()',_0x2254('0x6a'))[_0x2254('0x68')]('ANY_VALUE(ContactId)',_0x2254('0x6b'))['field'](_0x2254('0x6c'),'ListId')['field']('ANY_VALUE(VoiceQueueId)',_0x2254('0x65'))['field'](_0x2254('0x6d'),_0x2254('0x66'))['field'](_0x2254('0x6d'),_0x2254('0x67'))[_0x2254('0x6e')](_0x2254('0x6f'))[_0x2254('0x3b')](_0x2254('0x70'),_0x7075b1['params']['id']['toString']())[_0x2254('0x3b')](_0x2254('0x71'),_0x7075b1[_0x2254('0x4b')][_0x2254('0x72')][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x74'))[_0x2254('0x3b')](_0x2254('0x75'),squel[_0x2254('0x76')]()['field'](_0x2254('0x63'))[_0x2254('0x6e')]('cm_hopper')[_0x2254('0x3b')]('VoiceQueueId\x20=\x20?',_0x7075b1[_0x2254('0x47')]['id'][_0x2254('0x73')]()))['where'](_0x2254('0x75'),squel['select']()[_0x2254('0x68')](_0x2254('0x77'))[_0x2254('0x6e')](_0x2254('0x6f'))['where'](_0x2254('0x70'),_0x7075b1[_0x2254('0x47')]['id'][_0x2254('0x73')]())[_0x2254('0x3b')]('state\x20=\x204'))[_0x2254('0x78')](_0x2254('0x6b')))['toString']();return db[_0x2254('0x4d')][_0x2254('0x32')](_0x38294d);}return[];})['then'](respondWithResult(_0x516595,null))['catch'](handleError(_0x516595,null));};exports[_0x2254('0x79')]=function(_0x2f3650,_0x1a3fd9,_0x3058d9){return db[_0x2254('0x7a')][_0x2254('0x49')]({'where':{'id':_0x2f3650[_0x2254('0x47')]['id']}})[_0x2254('0x26')](handleEntityNotFound(_0x1a3fd9,null))[_0x2254('0x26')](function(_0x5df20f){var _0x10c44;if(_0x5df20f){_0x10c44=squel['insert']()[_0x2254('0x61')]('cm_hopper')[_0x2254('0x62')]([_0x2254('0x63'),_0x2254('0x6a'),'ContactId',_0x2254('0x64'),_0x2254('0x7b'),_0x2254('0x66'),_0x2254('0x67')],squel[_0x2254('0x76')]()[_0x2254('0x68')](_0x2254('0x69'),_0x2254('0x63'))[_0x2254('0x68')](_0x2254('0x6d'),_0x2254('0x6a'))[_0x2254('0x68')](_0x2254('0x7c'),'ContactId')[_0x2254('0x68')]('ANY_VALUE(ListId)',_0x2254('0x64'))[_0x2254('0x68')](_0x2254('0x7d'),_0x2254('0x7b'))[_0x2254('0x68')](_0x2254('0x6d'),_0x2254('0x66'))['field'](_0x2254('0x6d'),'updatedAt')[_0x2254('0x6e')]('cm_hopper_final')[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id']['toString']())[_0x2254('0x3b')](_0x2254('0x71'),_0x2f3650[_0x2254('0x4b')][_0x2254('0x72')][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x74'))[_0x2254('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x2254('0x68')]('phone')[_0x2254('0x6e')](_0x2254('0x7f'))[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id'][_0x2254('0x73')]()))[_0x2254('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x2254('0x76')]()[_0x2254('0x68')](_0x2254('0x77'))['from'](_0x2254('0x6f'))[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id'][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x80')))[_0x2254('0x78')](_0x2254('0x6b')))['toString']();return db[_0x2254('0x4d')][_0x2254('0x32')](_0x10c44);}return[];})['then'](respondWithResult(_0x1a3fd9,null))['catch'](handleError(_0x1a3fd9,null));};exports[_0x2254('0x81')]=function(_0x54339e,_0x226c19,_0x10645f){return db[_0x2254('0x82')][_0x2254('0x83')]({'where':{'VoiceQueueId':_0x54339e[_0x2254('0x4b')][_0x2254('0x65')],'CampaignId':_0x54339e[_0x2254('0x4b')][_0x2254('0x7b')],'ContactId':_0x54339e['body']['ContactId']}})[_0x2254('0x26')](handleEntityNotFound(_0x226c19,null))[_0x2254('0x26')](function(_0x1e8617){if(_0x1e8617){return _0x1e8617;}return null;})[_0x2254('0x26')](respondWithResult(_0x226c19,null))[_0x2254('0x45')](handleError(_0x226c19,null));};
\ No newline at end of file
+var _0x4888=['ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','NOW()','from','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','find','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','cm_hopper_final','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','undefined','count','set','apply','reject','save','then','sendStatus','error','name','send','index','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','CmHopperFinal','includeAll','include','rows','catch','params','options','describe','update','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','COUNT','sequelize','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','dropContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','createdAt','updatedAt','select','field','ANY_VALUE(ContactId)','ContactId'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0x4888,0x198));var _0x8488=function(_0x46dab8,_0x4ef8ed){_0x46dab8=_0x46dab8-0x0;var _0x3d1e3a=_0x4888[_0x46dab8];return _0x3d1e3a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8488('0x0'));var zipdir=require(_0x8488('0x1'));var jsonpatch=require(_0x8488('0x2'));var rp=require(_0x8488('0x3'));var moment=require(_0x8488('0x4'));var BPromise=require(_0x8488('0x5'));var Mustache=require(_0x8488('0x6'));var util=require('util');var path=require(_0x8488('0x7'));var sox=require(_0x8488('0x8'));var csv=require(_0x8488('0x9'));var ejs=require(_0x8488('0xa'));var fs=require('fs');var fs_extra=require(_0x8488('0xb'));var _=require(_0x8488('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8488('0x9'));var querystring=require(_0x8488('0xd'));var Papa=require('papaparse');var Redis=require(_0x8488('0xe'));var authService=require(_0x8488('0xf'));var qs=require(_0x8488('0x10'));var as=require(_0x8488('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8488('0x12'))(_0x8488('0x13'));var utils=require(_0x8488('0x14'));var config=require(_0x8488('0x15'));var licenseUtil=require(_0x8488('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x14462e,_0x3d1f7a){_0x3d1f7a=_0x3d1f7a||0xcc;return function(_0x58f83d){if(_0x58f83d){return _0x14462e['sendStatus'](_0x3d1f7a);}return _0x14462e[_0x8488('0x17')](_0x3d1f7a)['end']();};}function respondWithResult(_0x214083,_0x4e94fc){_0x4e94fc=_0x4e94fc||0xc8;return function(_0x5161a3){if(_0x5161a3){return _0x214083[_0x8488('0x17')](_0x4e94fc)[_0x8488('0x18')](_0x5161a3);}};}function respondWithFilteredResult(_0x5700b,_0x2bcb7c){return function(_0x3b3cfa){if(_0x3b3cfa){var _0x8d3b3d=typeof _0x2bcb7c[_0x8488('0x19')]==='undefined'&&typeof _0x2bcb7c[_0x8488('0x1a')]===_0x8488('0x1b');var _0x3edfe4=_0x3b3cfa[_0x8488('0x1c')];var _0x60ae2f=_0x8d3b3d?0x0:_0x2bcb7c[_0x8488('0x19')];var _0x1aedb1=_0x8d3b3d?_0x3b3cfa[_0x8488('0x1c')]:_0x2bcb7c[_0x8488('0x19')]+_0x2bcb7c[_0x8488('0x1a')];var _0x10bfd6;if(_0x1aedb1>=_0x3edfe4){_0x1aedb1=_0x3edfe4;_0x10bfd6=0xc8;}else{_0x10bfd6=0xce;}_0x5700b[_0x8488('0x17')](_0x10bfd6);return _0x5700b[_0x8488('0x1d')]('Content-Range',_0x60ae2f+'-'+_0x1aedb1+'/'+_0x3edfe4)['json'](_0x3b3cfa);}return null;};}function patchUpdates(_0x340d6b){return function(_0x12d40f){try{jsonpatch[_0x8488('0x1e')](_0x12d40f,_0x340d6b,!![]);}catch(_0x3c9fc2){return BPromise[_0x8488('0x1f')](_0x3c9fc2);}return _0x12d40f[_0x8488('0x20')]();};}function saveUpdates(_0x43b672,_0x3c078c){return function(_0x39dd43){if(_0x39dd43){return _0x39dd43['update'](_0x43b672)[_0x8488('0x21')](function(_0x4e07e1){return _0x4e07e1;});}return null;};}function removeEntity(_0x140b0b,_0x1361a6){return function(_0x290b33){if(_0x290b33){return _0x290b33['destroy']()['then'](function(){_0x140b0b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x472624,_0x51fe30){return function(_0x58057a){if(!_0x58057a){_0x472624[_0x8488('0x22')](0x194);}return _0x58057a;};}function handleError(_0x2f350a,_0x2b3c97){_0x2b3c97=_0x2b3c97||0x1f4;return function(_0x6ebee0){logger[_0x8488('0x23')](_0x6ebee0['stack']);if(_0x6ebee0[_0x8488('0x24')]){delete _0x6ebee0[_0x8488('0x24')];}_0x2f350a[_0x8488('0x17')](_0x2b3c97)[_0x8488('0x25')](_0x6ebee0);};}exports[_0x8488('0x26')]=function(_0x27f5cf,_0x2c15ff){var _0x296b6c={},_0x368f9c={},_0x1d9317={'count':0x0,'rows':[]};var _0x888b24=_['map'](db['CmHopperFinal']['rawAttributes'],function(_0x292fe8){return{'name':_0x292fe8[_0x8488('0x27')],'type':_0x292fe8[_0x8488('0x28')][_0x8488('0x29')]};});_0x368f9c[_0x8488('0x2a')]=_[_0x8488('0x2b')](_0x888b24,'name');_0x368f9c[_0x8488('0x2c')]=_[_0x8488('0x2d')](_0x27f5cf[_0x8488('0x2c')]);_0x368f9c[_0x8488('0x2e')]=_[_0x8488('0x2f')](_0x368f9c['model'],_0x368f9c[_0x8488('0x2c')]);_0x296b6c[_0x8488('0x30')]=_['intersection'](_0x368f9c[_0x8488('0x2a')],qs[_0x8488('0x31')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x31')]));_0x296b6c[_0x8488('0x30')]=_0x296b6c['attributes'][_0x8488('0x32')]?_0x296b6c[_0x8488('0x30')]:_0x368f9c[_0x8488('0x2a')];if(!_0x27f5cf['query'][_0x8488('0x33')]('nolimit')){_0x296b6c[_0x8488('0x1a')]=qs[_0x8488('0x1a')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x1a')]);_0x296b6c['offset']=qs[_0x8488('0x19')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x19')]);}_0x296b6c['order']=qs[_0x8488('0x34')](_0x27f5cf[_0x8488('0x2c')][_0x8488('0x34')]);_0x296b6c[_0x8488('0x35')]=qs[_0x8488('0x2e')](_[_0x8488('0x36')](_0x27f5cf[_0x8488('0x2c')],_0x368f9c[_0x8488('0x2e')]),_0x888b24);if(_0x27f5cf[_0x8488('0x2c')][_0x8488('0x37')]){_0x296b6c[_0x8488('0x35')]=_['merge'](_0x296b6c['where'],{'$or':_[_0x8488('0x2b')](_0x888b24,function(_0x36c17a){if(_0x36c17a[_0x8488('0x28')]!==_0x8488('0x38')){var _0x2d9fa1={};_0x2d9fa1[_0x36c17a[_0x8488('0x24')]]={'$like':'%'+_0x27f5cf[_0x8488('0x2c')][_0x8488('0x37')]+'%'};return _0x2d9fa1;}})});}_0x296b6c=_[_0x8488('0x39')]({},_0x296b6c,_0x27f5cf['options']);var _0xf5a0a0={'where':_0x296b6c[_0x8488('0x35')]};return db[_0x8488('0x3a')]['count'](_0xf5a0a0)[_0x8488('0x21')](function(_0xa50c4b){_0x1d9317[_0x8488('0x1c')]=_0xa50c4b;if(_0x27f5cf[_0x8488('0x2c')][_0x8488('0x3b')]){_0x296b6c[_0x8488('0x3c')]=[{'all':!![]}];}return db[_0x8488('0x3a')]['findAll'](_0x296b6c);})[_0x8488('0x21')](function(_0x1c33a1){_0x1d9317[_0x8488('0x3d')]=_0x1c33a1;return _0x1d9317;})['then'](respondWithFilteredResult(_0x2c15ff,_0x296b6c))[_0x8488('0x3e')](handleError(_0x2c15ff,null));};exports['show']=function(_0x40ee7e,_0x34b11b){var _0x5cbd11={'raw':!![],'where':{'id':_0x40ee7e[_0x8488('0x3f')]['id']}},_0x22a3f3={};_0x22a3f3[_0x8488('0x2a')]=_[_0x8488('0x2d')](db[_0x8488('0x3a')]['rawAttributes']);_0x22a3f3[_0x8488('0x2c')]=_['keys'](_0x40ee7e[_0x8488('0x2c')]);_0x22a3f3[_0x8488('0x2e')]=_[_0x8488('0x2f')](_0x22a3f3[_0x8488('0x2a')],_0x22a3f3[_0x8488('0x2c')]);_0x5cbd11[_0x8488('0x30')]=_[_0x8488('0x2f')](_0x22a3f3[_0x8488('0x2a')],qs[_0x8488('0x31')](_0x40ee7e[_0x8488('0x2c')][_0x8488('0x31')]));_0x5cbd11[_0x8488('0x30')]=_0x5cbd11[_0x8488('0x30')][_0x8488('0x32')]?_0x5cbd11[_0x8488('0x30')]:_0x22a3f3[_0x8488('0x2a')];if(_0x40ee7e[_0x8488('0x2c')]['includeAll']){_0x5cbd11[_0x8488('0x3c')]=[{'all':!![]}];}_0x5cbd11=_[_0x8488('0x39')]({},_0x5cbd11,_0x40ee7e[_0x8488('0x40')]);return db[_0x8488('0x3a')]['find'](_0x5cbd11)[_0x8488('0x21')](handleEntityNotFound(_0x34b11b,null))[_0x8488('0x21')](respondWithResult(_0x34b11b,null))[_0x8488('0x3e')](handleError(_0x34b11b,null));};exports[_0x8488('0x41')]=function(_0x52042c,_0x1f0516){return db[_0x8488('0x3a')][_0x8488('0x41')]()[_0x8488('0x21')](respondWithResult(_0x1f0516,null))[_0x8488('0x3e')](handleError(_0x1f0516,null));};exports[_0x8488('0x42')]=function(_0x886a9e,_0x299d8e){if(_0x886a9e[_0x8488('0x43')][_0x8488('0x44')]){delete _0x886a9e[_0x8488('0x43')][_0x8488('0x44')];}return db[_0x8488('0x3a')]['find']({'where':{'uniqueid':_0x886a9e['params']['id']}})[_0x8488('0x21')](handleEntityNotFound(_0x299d8e,null))[_0x8488('0x21')](saveUpdates(_0x886a9e[_0x8488('0x43')],null))[_0x8488('0x21')](respondWithResult(_0x299d8e,null))[_0x8488('0x3e')](handleError(_0x299d8e,null));};exports[_0x8488('0x45')]=function(_0x25f2dc,_0x27dfd2,_0x24fa20){return db['CmHopperFinal'][_0x8488('0x46')]({'raw':![],'where':{'VoiceQueueId':_0x25f2dc[_0x8488('0x3f')]['id']},'attributes':[[db['sequelize']['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x200,\x201,\x20null'))),_0x8488('0x4a')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x4b')))),_0x8488('0x4c')],[db['sequelize']['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db['sequelize'][_0x8488('0x49')]('`state`\x20=\x205,\x201,\x20null'))),_0x8488('0x4d')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x208,\x201,\x20null'))),_0x8488('0x4e')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')]['literal'](_0x8488('0x4f')))),'dropContacts'],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x50')))),_0x8488('0x51')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')]['literal'](_0x8488('0x52')))),_0x8488('0x53')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')]['literal'](_0x8488('0x54')))),'answeringMachine']]})[_0x8488('0x21')](handleEntityNotFound(_0x27dfd2,null))[_0x8488('0x21')](respondWithResult(_0x27dfd2,null))[_0x8488('0x3e')](handleError(_0x27dfd2,null));};exports[_0x8488('0x55')]=function(_0x1971f3,_0x24ba2d,_0x4facfb){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x1971f3[_0x8488('0x3f')]['id']},'attributes':[[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x56')))),_0x8488('0x4a')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x4b')))),'noAnswerContacts'],[db['sequelize']['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x205,\x201,\x20null'))),'busyContacts'],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db['sequelize'][_0x8488('0x49')](_0x8488('0x57')))),_0x8488('0x4e')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x8488('0x58')],[db[_0x8488('0x48')]['fn']('COUNT',db[_0x8488('0x48')]['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')](_0x8488('0x50')))),_0x8488('0x51')],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db['sequelize']['fn']('IF',db[_0x8488('0x48')][_0x8488('0x49')]('`state`\x20=\x2022,\x201,\x20null'))),'reCallContacts'],[db[_0x8488('0x48')]['fn'](_0x8488('0x47'),db[_0x8488('0x48')]['fn']('IF',db['sequelize'][_0x8488('0x49')](_0x8488('0x54')))),'answeringMachine']]})[_0x8488('0x21')](handleEntityNotFound(_0x24ba2d,null))['then'](respondWithResult(_0x24ba2d,null))[_0x8488('0x3e')](handleError(_0x24ba2d,null));};exports[_0x8488('0x59')]=function(_0x44a50b,_0x5815cb,_0xbee86e){return db[_0x8488('0x5a')]['find']({'where':{'id':_0x44a50b['params']['id']}})[_0x8488('0x21')](handleEntityNotFound(_0x5815cb,null))[_0x8488('0x21')](function(_0xfedfd2){var _0x3ab1b6;if(_0xfedfd2){_0x3ab1b6=squel[_0x8488('0x5b')]()[_0x8488('0x5c')](_0x8488('0x5d'))[_0x8488('0x5e')]([_0x8488('0x5f'),_0x8488('0x60'),'ContactId',_0x8488('0x61'),'VoiceQueueId',_0x8488('0x62'),_0x8488('0x63')],squel[_0x8488('0x64')]()[_0x8488('0x65')]('ANY_VALUE(calleridnum)',_0x8488('0x5f'))[_0x8488('0x65')]('NOW()',_0x8488('0x60'))['field'](_0x8488('0x66'),_0x8488('0x67'))[_0x8488('0x65')](_0x8488('0x68'),_0x8488('0x61'))[_0x8488('0x65')](_0x8488('0x69'),_0x8488('0x6a'))['field'](_0x8488('0x6b'),'createdAt')['field'](_0x8488('0x6b'),_0x8488('0x63'))[_0x8488('0x6c')]('cm_hopper_final')['where'](_0x8488('0x6d'),_0x44a50b[_0x8488('0x3f')]['id']['toString']())[_0x8488('0x35')](_0x8488('0x6e'),_0x44a50b[_0x8488('0x43')][_0x8488('0x6f')][_0x8488('0x70')]())[_0x8488('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x8488('0x35')](_0x8488('0x71'),squel[_0x8488('0x64')]()['field'](_0x8488('0x5f'))[_0x8488('0x6c')](_0x8488('0x5d'))['where'](_0x8488('0x6d'),_0x44a50b[_0x8488('0x3f')]['id']['toString']()))['where'](_0x8488('0x71'),squel[_0x8488('0x64')]()['field'](_0x8488('0x72'))[_0x8488('0x6c')]('cm_hopper_final')['where'](_0x8488('0x6d'),_0x44a50b['params']['id'][_0x8488('0x70')]())[_0x8488('0x35')](_0x8488('0x73')))[_0x8488('0x74')]('ContactId'))[_0x8488('0x70')]();return db['sequelize'][_0x8488('0x2c')](_0x3ab1b6);}return[];})['then'](respondWithResult(_0x5815cb,null))[_0x8488('0x3e')](handleError(_0x5815cb,null));};exports[_0x8488('0x75')]=function(_0x267401,_0x1e635a,_0x31ab35){return db[_0x8488('0x76')][_0x8488('0x77')]({'where':{'id':_0x267401[_0x8488('0x3f')]['id']}})[_0x8488('0x21')](handleEntityNotFound(_0x1e635a,null))[_0x8488('0x21')](function(_0xce1d1a){var _0xc9c221;if(_0xce1d1a){_0xc9c221=squel[_0x8488('0x5b')]()[_0x8488('0x5c')]('cm_hopper')[_0x8488('0x5e')]([_0x8488('0x5f'),'scheduledAt',_0x8488('0x67'),_0x8488('0x61'),_0x8488('0x78'),_0x8488('0x62'),_0x8488('0x63')],squel[_0x8488('0x64')]()[_0x8488('0x65')](_0x8488('0x79'),_0x8488('0x5f'))[_0x8488('0x65')](_0x8488('0x6b'),'scheduledAt')[_0x8488('0x65')](_0x8488('0x66'),'ContactId')[_0x8488('0x65')](_0x8488('0x68'),_0x8488('0x61'))[_0x8488('0x65')](_0x8488('0x7a'),'CampaignId')['field'](_0x8488('0x6b'),_0x8488('0x62'))[_0x8488('0x65')](_0x8488('0x6b'),_0x8488('0x63'))[_0x8488('0x6c')](_0x8488('0x7b'))[_0x8488('0x35')](_0x8488('0x7c'),_0x267401[_0x8488('0x3f')]['id'][_0x8488('0x70')]())[_0x8488('0x35')](_0x8488('0x6e'),_0x267401[_0x8488('0x43')][_0x8488('0x6f')]['toString']())[_0x8488('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0x8488('0x71'),squel[_0x8488('0x64')]()[_0x8488('0x65')](_0x8488('0x5f'))[_0x8488('0x6c')](_0x8488('0x5d'))[_0x8488('0x35')](_0x8488('0x7c'),_0x267401[_0x8488('0x3f')]['id'][_0x8488('0x70')]()))['where'](_0x8488('0x71'),squel[_0x8488('0x64')]()[_0x8488('0x65')](_0x8488('0x72'))[_0x8488('0x6c')](_0x8488('0x7b'))['where'](_0x8488('0x7c'),_0x267401['params']['id'][_0x8488('0x70')]())[_0x8488('0x35')]('state\x20=\x204'))['group'](_0x8488('0x67')))[_0x8488('0x70')]();return db[_0x8488('0x48')][_0x8488('0x2c')](_0xc9c221);}return[];})[_0x8488('0x21')](respondWithResult(_0x1e635a,null))['catch'](handleError(_0x1e635a,null));};exports[_0x8488('0x7d')]=function(_0x19c5c6,_0x50f773,_0x52c750){return db[_0x8488('0x7e')][_0x8488('0x7f')]({'where':{'VoiceQueueId':_0x19c5c6[_0x8488('0x43')]['VoiceQueueId'],'CampaignId':_0x19c5c6['body'][_0x8488('0x78')],'ContactId':_0x19c5c6[_0x8488('0x43')][_0x8488('0x67')]}})['then'](handleEntityNotFound(_0x50f773,null))[_0x8488('0x21')](function(_0x1e4e51){if(_0x1e4e51){return _0x1e4e51;}return null;})[_0x8488('0x21')](respondWithResult(_0x50f773,null))[_0x8488('0x3e')](handleError(_0x50f773,null));};
\ No newline at end of file
index 774dff6..3656808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3057=['./cmHopperFinal.attributes','exports','define','cm_hopper_final','uniqueid','lodash','api','moment','bluebird','rimraf','../../config/environment'];(function(_0xa9aecd,_0x111340){var _0x5cc7dd=function(_0xe6bf4d){while(--_0xe6bf4d){_0xa9aecd['push'](_0xa9aecd['shift']());}};_0x5cc7dd(++_0x111340);}(_0x3057,0x1bd));var _0x7305=function(_0x513b3d,_0x5d0731){_0x513b3d=_0x513b3d-0x0;var _0x1cdf9e=_0x3057[_0x513b3d];return _0x1cdf9e;};'use strict';var _=require(_0x7305('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7305('0x1'));var moment=require(_0x7305('0x2'));var BPromise=require(_0x7305('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7305('0x4'));var config=require(_0x7305('0x5'));var attributes=require(_0x7305('0x6'));module[_0x7305('0x7')]=function(_0x19903c,_0x283ddb){return _0x19903c[_0x7305('0x8')]('CmHopperFinal',attributes,{'tableName':_0x7305('0x9'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':['calleridnum']},{'name':_0x7305('0xa'),'fields':[_0x7305('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x250f=['uniqueid','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','cm_hopper_final','calleridnum'];(function(_0x527786,_0x54c406){var _0x4b406b=function(_0x2a96b2){while(--_0x2a96b2){_0x527786['push'](_0x527786['shift']());}};_0x4b406b(++_0x54c406);}(_0x250f,0x187));var _0xf250=function(_0x514c17,_0x5d6489){_0x514c17=_0x514c17-0x0;var _0x130bbe=_0x250f[_0x514c17];return _0x130bbe;};'use strict';var _=require(_0xf250('0x0'));var util=require(_0xf250('0x1'));var logger=require('../../config/logger')(_0xf250('0x2'));var moment=require(_0xf250('0x3'));var BPromise=require(_0xf250('0x4'));var rp=require(_0xf250('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf250('0x6'));var config=require(_0xf250('0x7'));var attributes=require('./cmHopperFinal.attributes');module[_0xf250('0x8')]=function(_0x486aae,_0x10ed42){return _0x486aae[_0xf250('0x9')]('CmHopperFinal',attributes,{'tableName':_0xf250('0xa'),'paranoid':![],'indexes':[{'name':_0xf250('0xb'),'fields':[_0xf250('0xb')]},{'name':_0xf250('0xc'),'fields':[_0xf250('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 8bab9ff..1eea185 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(_0x136833,_0x46b675){var _0x4074eb=function(_0x560316){while(--_0x560316){_0x136833['push'](_0x136833['shift']());}};_0x4074eb(++_0x46b675);}(_0xb10b,0x12a));var _0xbb10=function(_0x1c1913,_0x1d1b59){_0x1c1913=_0x1c1913-0x0;var _0x3b352a=_0xb10b[_0x1c1913];return _0x3b352a;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x242c05,_0x87b7d3){var _0x1b2b5c=function(_0x160d4d){while(--_0x160d4d){_0x242c05['push'](_0x242c05['shift']());}};_0x1b2b5c(++_0x87b7d3);}(_0x7a54,0x106));var _0x47a5=function(_0x1d3841,_0x3160ba){_0x1d3841=_0x1d3841-0x0;var _0x2188c4=_0x7a54[_0x1d3841];return _0x2188c4;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
index f2252c4..e2744ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f8=['/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x2c883c,_0x248bfb){var _0x1e7bc7=function(_0x2b5dad){while(--_0x2b5dad){_0x2c883c['push'](_0x2c883c['shift']());}};_0x1e7bc7(++_0x248bfb);}(_0x21f8,0x179));var _0x821f=function(_0x380a3f,_0x202483){_0x380a3f=_0x380a3f-0x0;var _0x2b4eca=_0x21f8[_0x380a3f];return _0x2b4eca;};'use strict';var multer=require(_0x821f('0x0'));var util=require(_0x821f('0x1'));var path=require(_0x821f('0x2'));var timeout=require(_0x821f('0x3'));var express=require(_0x821f('0x4'));var router=express[_0x821f('0x5')]();var fs_extra=require(_0x821f('0x6'));var auth=require(_0x821f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x821f('0x8'));var controller=require(_0x821f('0x9'));router[_0x821f('0xa')]('/',auth[_0x821f('0xb')](),controller[_0x821f('0xc')]);router[_0x821f('0xa')](_0x821f('0xd'),auth['isAuthenticated'](),controller[_0x821f('0xe')]);router[_0x821f('0xa')](_0x821f('0xf'),auth['isAuthenticated'](),controller[_0x821f('0x10')]);router[_0x821f('0xa')](_0x821f('0x11'),auth[_0x821f('0xb')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x821f('0xa')](_0x821f('0x12'),auth[_0x821f('0xb')](),controller[_0x821f('0x13')]);router[_0x821f('0x14')](_0x821f('0x15'),auth[_0x821f('0xb')](),controller['moveContactsQueueCampaignHopperFinal']);router[_0x821f('0x14')](_0x821f('0x16'),auth['isAuthenticated'](),controller[_0x821f('0x17')]);router[_0x821f('0x14')](_0x821f('0x18'),auth[_0x821f('0xb')](),controller['checkContactHopper']);router[_0x821f('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x821f('0x1a')]);module[_0x821f('0x1b')]=router;
\ No newline at end of file
+var _0x782b=['get','isAuthenticated','index','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller'];(function(_0x40af45,_0xc068d9){var _0xc46faa=function(_0x38f784){while(--_0x38f784){_0x40af45['push'](_0x40af45['shift']());}};_0xc46faa(++_0xc068d9);}(_0x782b,0x89));var _0xb782=function(_0x1d98c4,_0xa18ecd){_0x1d98c4=_0x1d98c4-0x0;var _0x450ca6=_0x782b[_0x1d98c4];return _0x450ca6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb782('0x0'));var timeout=require('connect-timeout');var express=require(_0xb782('0x1'));var router=express[_0xb782('0x2')]();var fs_extra=require(_0xb782('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xb782('0x4'));var config=require(_0xb782('0x5'));var controller=require(_0xb782('0x6'));router[_0xb782('0x7')]('/',auth[_0xb782('0x8')](),controller[_0xb782('0x9')]);router[_0xb782('0x7')]('/describe',auth[_0xb782('0x8')](),controller[_0xb782('0xa')]);router[_0xb782('0x7')](_0xb782('0xb'),auth['isAuthenticated'](),controller[_0xb782('0xc')]);router[_0xb782('0x7')](_0xb782('0xd'),auth[_0xb782('0x8')](),controller['countContactsQueueCampaignHopperFinal']);router[_0xb782('0x7')](_0xb782('0xe'),auth[_0xb782('0x8')](),controller[_0xb782('0xf')]);router[_0xb782('0x10')](_0xb782('0x11'),auth[_0xb782('0x8')](),controller[_0xb782('0x12')]);router['post']('/voice/campaign/moveContacts/:id',auth[_0xb782('0x8')](),controller['moveContactsIvrCampaignHopperFinal']);router['post'](_0xb782('0x13'),auth[_0xb782('0x8')](),controller[_0xb782('0x14')]);router[_0xb782('0x15')](_0xb782('0xb'),auth['isAuthenticated'](),controller[_0xb782('0x16')]);module[_0xb782('0x17')]=router;
\ No newline at end of file
index ddf2b73..ae20bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52df=['STRING','BOOLEAN','sequelize','exports','INTEGER','DATE'];(function(_0x2b63a0,_0x14fc48){var _0x4f0434=function(_0x8cba9e){while(--_0x8cba9e){_0x2b63a0['push'](_0x2b63a0['shift']());}};_0x4f0434(++_0x14fc48);}(_0x52df,0x92));var _0xf52d=function(_0x14b5a5,_0x231b3a){_0x14b5a5=_0x14b5a5-0x0;var _0x2a7706=_0x52df[_0x14b5a5];return _0x2a7706;};'use strict';var Sequelize=require(_0xf52d('0x0'));module[_0xf52d('0x1')]={'state':{'type':Sequelize[_0xf52d('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xf52d('0x3')]},'countbusyretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xf52d('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xf52d('0x4')]},'originatecalleridname':{'type':Sequelize[_0xf52d('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xf52d('0x4')]},'starttime':{'type':Sequelize[_0xf52d('0x3')]},'responsetime':{'type':Sequelize[_0xf52d('0x3')]},'answertime':{'type':Sequelize[_0xf52d('0x3')]},'droptime':{'type':Sequelize[_0xf52d('0x3')]},'endtime':{'type':Sequelize[_0xf52d('0x3')]},'ringtime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xf52d('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xf52d('0x4')]},'membername':{'type':Sequelize[_0xf52d('0x4')]},'reason':{'type':Sequelize[_0xf52d('0x4')]},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0xf52d('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xf52d('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xf52d('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xf52d('0x4')]}};
\ No newline at end of file
+var _0x007d=['exports','INTEGER','STRING','DATE','BOOLEAN'];(function(_0x2a972c,_0x2f8026){var _0xc3c903=function(_0x2b66e6){while(--_0x2b66e6){_0x2a972c['push'](_0x2a972c['shift']());}};_0xc3c903(++_0x2f8026);}(_0x007d,0xff));var _0xd007=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x007d[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require('sequelize');module[_0xd007('0x0')]={'state':{'type':Sequelize[_0xd007('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xd007('0x2')]},'scheduledat':{'type':Sequelize[_0xd007('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xd007('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xd007('0x2')]},'originatecalleridname':{'type':Sequelize[_0xd007('0x2')]},'calleridnum':{'type':Sequelize[_0xd007('0x2')]},'calleridname':{'type':Sequelize[_0xd007('0x2')]},'starttime':{'type':Sequelize[_0xd007('0x3')]},'responsetime':{'type':Sequelize[_0xd007('0x3')]},'answertime':{'type':Sequelize[_0xd007('0x3')]},'droptime':{'type':Sequelize[_0xd007('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xd007('0x2')]},'campaign':{'type':Sequelize[_0xd007('0x2')]},'campaigntype':{'type':Sequelize[_0xd007('0x2')]},'membername':{'type':Sequelize[_0xd007('0x2')]},'reason':{'type':Sequelize[_0xd007('0x2')]},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0xd007('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xd007('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xd007('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xd007('0x3')]},'edited':{'type':Sequelize[_0xd007('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xd007('0x1')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xd007('0x2')]}};
\ No newline at end of file
index 48d2191..05001cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ba1=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','update','then','destroy','end','error','name','send','index','CmHopperHistory','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','merge','options','includeAll','include','rows','catch','show','params','find','create','describe','body','uniqueid'];(function(_0x2dfbd4,_0x1effa3){var _0x10c8e6=function(_0x15e1d1){while(--_0x15e1d1){_0x2dfbd4['push'](_0x2dfbd4['shift']());}};_0x10c8e6(++_0x1effa3);}(_0x4ba1,0x92));var _0x14ba=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x4ba1[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x14ba('0x0'));var rimraf=require(_0x14ba('0x1'));var zipdir=require(_0x14ba('0x2'));var jsonpatch=require(_0x14ba('0x3'));var rp=require('request-promise');var moment=require(_0x14ba('0x4'));var BPromise=require(_0x14ba('0x5'));var Mustache=require(_0x14ba('0x6'));var util=require('util');var path=require(_0x14ba('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x14ba('0x8'));var _=require(_0x14ba('0x9'));var squel=require('squel');var crypto=require(_0x14ba('0xa'));var jsforce=require(_0x14ba('0xb'));var deskjs=require(_0x14ba('0xc'));var toCsv=require(_0x14ba('0xd'));var querystring=require(_0x14ba('0xe'));var Papa=require(_0x14ba('0xf'));var Redis=require(_0x14ba('0x10'));var authService=require(_0x14ba('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x14ba('0x12'));var hardwareService=require(_0x14ba('0x13'));var logger=require(_0x14ba('0x14'))(_0x14ba('0x15'));var utils=require(_0x14ba('0x16'));var config=require(_0x14ba('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x14ba('0x18'))['db'];function respondWithStatusCode(_0x580ef9,_0x803b4d){_0x803b4d=_0x803b4d||0xcc;return function(_0x2d7fb2){if(_0x2d7fb2){return _0x580ef9[_0x14ba('0x19')](_0x803b4d);}return _0x580ef9[_0x14ba('0x1a')](_0x803b4d)['end']();};}function respondWithResult(_0x50a9e5,_0x173b25){_0x173b25=_0x173b25||0xc8;return function(_0x25cf5d){if(_0x25cf5d){return _0x50a9e5[_0x14ba('0x1a')](_0x173b25)[_0x14ba('0x1b')](_0x25cf5d);}};}function respondWithFilteredResult(_0x19bf9e,_0x31ea46){return function(_0x24bd33){if(_0x24bd33){var _0x1a5f03=typeof _0x31ea46[_0x14ba('0x1c')]==='undefined'&&typeof _0x31ea46[_0x14ba('0x1d')]==='undefined';var _0x88c510=_0x24bd33[_0x14ba('0x1e')];var _0x59d024=_0x1a5f03?0x0:_0x31ea46[_0x14ba('0x1c')];var _0x3dc4bc=_0x1a5f03?_0x24bd33['count']:_0x31ea46[_0x14ba('0x1c')]+_0x31ea46[_0x14ba('0x1d')];var _0x4af90b;if(_0x3dc4bc>=_0x88c510){_0x3dc4bc=_0x88c510;_0x4af90b=0xc8;}else{_0x4af90b=0xce;}_0x19bf9e['status'](_0x4af90b);return _0x19bf9e[_0x14ba('0x1f')](_0x14ba('0x20'),_0x59d024+'-'+_0x3dc4bc+'/'+_0x88c510)[_0x14ba('0x1b')](_0x24bd33);}return null;};}function patchUpdates(_0x128c38){return function(_0x8876ef){try{jsonpatch[_0x14ba('0x21')](_0x8876ef,_0x128c38,!![]);}catch(_0x469193){return BPromise['reject'](_0x469193);}return _0x8876ef['save']();};}function saveUpdates(_0x1fd01b,_0x2a03a3){return function(_0x12421a){if(_0x12421a){return _0x12421a[_0x14ba('0x22')](_0x1fd01b)[_0x14ba('0x23')](function(_0x1c2189){return _0x1c2189;});}return null;};}function removeEntity(_0xc6d6e0,_0x5c9cfe){return function(_0xa0a7d9){if(_0xa0a7d9){return _0xa0a7d9[_0x14ba('0x24')]()[_0x14ba('0x23')](function(){_0xc6d6e0[_0x14ba('0x1a')](0xcc)[_0x14ba('0x25')]();});}};}function handleEntityNotFound(_0x2c2223,_0x5295f5){return function(_0x2a5ea7){if(!_0x2a5ea7){_0x2c2223[_0x14ba('0x19')](0x194);}return _0x2a5ea7;};}function handleError(_0x1b82ee,_0x521e23){_0x521e23=_0x521e23||0x1f4;return function(_0x58da53){logger[_0x14ba('0x26')](_0x58da53['stack']);if(_0x58da53[_0x14ba('0x27')]){delete _0x58da53['name'];}_0x1b82ee[_0x14ba('0x1a')](_0x521e23)[_0x14ba('0x28')](_0x58da53);};}exports[_0x14ba('0x29')]=function(_0x530d4e,_0x6f30be){var _0x2eda6f={},_0x39760c={},_0x229085={'count':0x0,'rows':[]};var _0x1a10a3=_['map'](db[_0x14ba('0x2a')][_0x14ba('0x2b')],function(_0x3e9b43){return{'name':_0x3e9b43['fieldName'],'type':_0x3e9b43[_0x14ba('0x2c')]['key']};});_0x39760c[_0x14ba('0x2d')]=_['map'](_0x1a10a3,'name');_0x39760c[_0x14ba('0x2e')]=_[_0x14ba('0x2f')](_0x530d4e[_0x14ba('0x2e')]);_0x39760c['filters']=_[_0x14ba('0x30')](_0x39760c['model'],_0x39760c[_0x14ba('0x2e')]);_0x2eda6f[_0x14ba('0x31')]=_[_0x14ba('0x30')](_0x39760c['model'],qs[_0x14ba('0x32')](_0x530d4e[_0x14ba('0x2e')]['fields']));_0x2eda6f[_0x14ba('0x31')]=_0x2eda6f[_0x14ba('0x31')][_0x14ba('0x33')]?_0x2eda6f['attributes']:_0x39760c[_0x14ba('0x2d')];if(!_0x530d4e['query'][_0x14ba('0x34')](_0x14ba('0x35'))){_0x2eda6f[_0x14ba('0x1d')]=qs[_0x14ba('0x1d')](_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x1d')]);_0x2eda6f[_0x14ba('0x1c')]=qs[_0x14ba('0x1c')](_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x1c')]);}_0x2eda6f['order']=qs['sort'](_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x36')]);_0x2eda6f[_0x14ba('0x37')]=qs[_0x14ba('0x38')](_[_0x14ba('0x39')](_0x530d4e[_0x14ba('0x2e')],_0x39760c[_0x14ba('0x38')]),_0x1a10a3);if(_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x3a')]){_0x2eda6f[_0x14ba('0x37')]=_['merge'](_0x2eda6f[_0x14ba('0x37')],{'$or':_[_0x14ba('0x3b')](_0x1a10a3,function(_0x314fdb){if(_0x314fdb['type']!=='VIRTUAL'){var _0x49aac2={};_0x49aac2[_0x314fdb['name']]={'$like':'%'+_0x530d4e[_0x14ba('0x2e')]['filter']+'%'};return _0x49aac2;}})});}_0x2eda6f=_[_0x14ba('0x3c')]({},_0x2eda6f,_0x530d4e[_0x14ba('0x3d')]);var _0x361429={'where':_0x2eda6f[_0x14ba('0x37')]};return db[_0x14ba('0x2a')][_0x14ba('0x1e')](_0x361429)['then'](function(_0xf31101){_0x229085[_0x14ba('0x1e')]=_0xf31101;if(_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x3e')]){_0x2eda6f[_0x14ba('0x3f')]=[{'all':!![]}];}return db[_0x14ba('0x2a')]['findAll'](_0x2eda6f);})[_0x14ba('0x23')](function(_0x5dc945){_0x229085[_0x14ba('0x40')]=_0x5dc945;return _0x229085;})[_0x14ba('0x23')](respondWithFilteredResult(_0x6f30be,_0x2eda6f))[_0x14ba('0x41')](handleError(_0x6f30be,null));};exports[_0x14ba('0x42')]=function(_0x56756f,_0x467610){var _0x3665f9={'raw':!![],'where':{'id':_0x56756f[_0x14ba('0x43')]['id']}},_0x50ec94={};_0x50ec94[_0x14ba('0x2d')]=_[_0x14ba('0x2f')](db[_0x14ba('0x2a')][_0x14ba('0x2b')]);_0x50ec94[_0x14ba('0x2e')]=_['keys'](_0x56756f[_0x14ba('0x2e')]);_0x50ec94[_0x14ba('0x38')]=_[_0x14ba('0x30')](_0x50ec94[_0x14ba('0x2d')],_0x50ec94[_0x14ba('0x2e')]);_0x3665f9[_0x14ba('0x31')]=_['intersection'](_0x50ec94[_0x14ba('0x2d')],qs['fields'](_0x56756f[_0x14ba('0x2e')][_0x14ba('0x32')]));_0x3665f9[_0x14ba('0x31')]=_0x3665f9['attributes']['length']?_0x3665f9[_0x14ba('0x31')]:_0x50ec94['model'];if(_0x56756f['query'][_0x14ba('0x3e')]){_0x3665f9[_0x14ba('0x3f')]=[{'all':!![]}];}_0x3665f9=_[_0x14ba('0x3c')]({},_0x3665f9,_0x56756f[_0x14ba('0x3d')]);return db['CmHopperHistory'][_0x14ba('0x44')](_0x3665f9)['then'](handleEntityNotFound(_0x467610,null))[_0x14ba('0x23')](respondWithResult(_0x467610,null))['catch'](handleError(_0x467610,null));};exports[_0x14ba('0x45')]=function(_0x566403,_0x3ed203){return db[_0x14ba('0x2a')][_0x14ba('0x45')](_0x566403['body'],{})[_0x14ba('0x23')](respondWithResult(_0x3ed203,0xc9))[_0x14ba('0x41')](handleError(_0x3ed203,null));};exports['describe']=function(_0x2c4103,_0x463261){return db['CmHopperHistory'][_0x14ba('0x46')]()[_0x14ba('0x23')](respondWithResult(_0x463261,null))[_0x14ba('0x41')](handleError(_0x463261,null));};exports[_0x14ba('0x22')]=function(_0x5e2a1e,_0x466779){if(_0x5e2a1e[_0x14ba('0x47')][_0x14ba('0x48')]){delete _0x5e2a1e[_0x14ba('0x47')][_0x14ba('0x48')];}return db[_0x14ba('0x2a')]['find']({'where':{'uniqueid':_0x5e2a1e[_0x14ba('0x43')]['id']}})['then'](handleEntityNotFound(_0x466779,null))[_0x14ba('0x23')](saveUpdates(_0x5e2a1e[_0x14ba('0x47')],null))[_0x14ba('0x23')](respondWithResult(_0x466779,null))[_0x14ba('0x41')](handleError(_0x466779,null));};
\ No newline at end of file
+var _0xf388=['json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','error','name','send','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','rows','catch','params','find','create','body','describe','uniqueid','eml-format','moment','bluebird','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x1d2601,_0x1cc9e4){var _0x34ea1b=function(_0x34d234){while(--_0x34d234){_0x1d2601['push'](_0x1d2601['shift']());}};_0x34ea1b(++_0x1cc9e4);}(_0xf388,0x147));var _0x8f38=function(_0x3ce31a,_0x57d5a5){_0x3ce31a=_0x3ce31a-0x0;var _0xc12103=_0xf388[_0x3ce31a];return _0xc12103;};'use strict';var emlformat=require(_0x8f38('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8f38('0x1'));var BPromise=require(_0x8f38('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8f38('0x3'));var sox=require(_0x8f38('0x4'));var csv=require(_0x8f38('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8f38('0x6'));var _=require('lodash');var squel=require(_0x8f38('0x7'));var crypto=require(_0x8f38('0x8'));var jsforce=require(_0x8f38('0x9'));var deskjs=require(_0x8f38('0xa'));var toCsv=require(_0x8f38('0x5'));var querystring=require(_0x8f38('0xb'));var Papa=require(_0x8f38('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8f38('0xd'));var as=require(_0x8f38('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8f38('0xf'));var utils=require(_0x8f38('0x10'));var config=require(_0x8f38('0x11'));var licenseUtil=require(_0x8f38('0x12'));var db=require(_0x8f38('0x13'))['db'];function respondWithStatusCode(_0x1441fa,_0x1a5d30){_0x1a5d30=_0x1a5d30||0xcc;return function(_0x3d5b22){if(_0x3d5b22){return _0x1441fa[_0x8f38('0x14')](_0x1a5d30);}return _0x1441fa['status'](_0x1a5d30)[_0x8f38('0x15')]();};}function respondWithResult(_0x419527,_0x282fad){_0x282fad=_0x282fad||0xc8;return function(_0x4e8820){if(_0x4e8820){return _0x419527[_0x8f38('0x16')](_0x282fad)[_0x8f38('0x17')](_0x4e8820);}};}function respondWithFilteredResult(_0x111431,_0x3bf84d){return function(_0x15f2ff){if(_0x15f2ff){var _0x2a7e90=typeof _0x3bf84d[_0x8f38('0x18')]===_0x8f38('0x19')&&typeof _0x3bf84d[_0x8f38('0x1a')]===_0x8f38('0x19');var _0x1c643c=_0x15f2ff['count'];var _0x4e3fce=_0x2a7e90?0x0:_0x3bf84d[_0x8f38('0x18')];var _0x10a04c=_0x2a7e90?_0x15f2ff[_0x8f38('0x1b')]:_0x3bf84d[_0x8f38('0x18')]+_0x3bf84d[_0x8f38('0x1a')];var _0x15c28e;if(_0x10a04c>=_0x1c643c){_0x10a04c=_0x1c643c;_0x15c28e=0xc8;}else{_0x15c28e=0xce;}_0x111431[_0x8f38('0x16')](_0x15c28e);return _0x111431['set']('Content-Range',_0x4e3fce+'-'+_0x10a04c+'/'+_0x1c643c)[_0x8f38('0x17')](_0x15f2ff);}return null;};}function patchUpdates(_0x469d37){return function(_0x203c44){try{jsonpatch[_0x8f38('0x1c')](_0x203c44,_0x469d37,!![]);}catch(_0x4e2291){return BPromise[_0x8f38('0x1d')](_0x4e2291);}return _0x203c44[_0x8f38('0x1e')]();};}function saveUpdates(_0x16be64,_0x295292){return function(_0x53a5d4){if(_0x53a5d4){return _0x53a5d4[_0x8f38('0x1f')](_0x16be64)['then'](function(_0x1078ce){return _0x1078ce;});}return null;};}function removeEntity(_0x12ea2d,_0x23e63d){return function(_0x4693c4){if(_0x4693c4){return _0x4693c4[_0x8f38('0x20')]()[_0x8f38('0x21')](function(){_0x12ea2d[_0x8f38('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1954c6,_0x406afa){return function(_0x38510e){if(!_0x38510e){_0x1954c6[_0x8f38('0x14')](0x194);}return _0x38510e;};}function handleError(_0x3fe4c3,_0x4e8759){_0x4e8759=_0x4e8759||0x1f4;return function(_0x43f592){logger[_0x8f38('0x22')](_0x43f592['stack']);if(_0x43f592[_0x8f38('0x23')]){delete _0x43f592['name'];}_0x3fe4c3[_0x8f38('0x16')](_0x4e8759)[_0x8f38('0x24')](_0x43f592);};}exports['index']=function(_0x36fe8f,_0x3a979c){var _0x1857ab={},_0x58089d={},_0x90f7a3={'count':0x0,'rows':[]};var _0x221a5b=_[_0x8f38('0x25')](db[_0x8f38('0x26')][_0x8f38('0x27')],function(_0x4e9879){return{'name':_0x4e9879[_0x8f38('0x28')],'type':_0x4e9879[_0x8f38('0x29')][_0x8f38('0x2a')]};});_0x58089d[_0x8f38('0x2b')]=_[_0x8f38('0x25')](_0x221a5b,_0x8f38('0x23'));_0x58089d['query']=_[_0x8f38('0x2c')](_0x36fe8f['query']);_0x58089d[_0x8f38('0x2d')]=_[_0x8f38('0x2e')](_0x58089d[_0x8f38('0x2b')],_0x58089d[_0x8f38('0x2f')]);_0x1857ab['attributes']=_[_0x8f38('0x2e')](_0x58089d[_0x8f38('0x2b')],qs[_0x8f38('0x30')](_0x36fe8f[_0x8f38('0x2f')]['fields']));_0x1857ab[_0x8f38('0x31')]=_0x1857ab[_0x8f38('0x31')][_0x8f38('0x32')]?_0x1857ab[_0x8f38('0x31')]:_0x58089d[_0x8f38('0x2b')];if(!_0x36fe8f['query'][_0x8f38('0x33')](_0x8f38('0x34'))){_0x1857ab[_0x8f38('0x1a')]=qs['limit'](_0x36fe8f[_0x8f38('0x2f')][_0x8f38('0x1a')]);_0x1857ab[_0x8f38('0x18')]=qs['offset'](_0x36fe8f[_0x8f38('0x2f')][_0x8f38('0x18')]);}_0x1857ab[_0x8f38('0x35')]=qs[_0x8f38('0x36')](_0x36fe8f['query'][_0x8f38('0x36')]);_0x1857ab['where']=qs[_0x8f38('0x2d')](_[_0x8f38('0x37')](_0x36fe8f[_0x8f38('0x2f')],_0x58089d[_0x8f38('0x2d')]),_0x221a5b);if(_0x36fe8f[_0x8f38('0x2f')][_0x8f38('0x38')]){_0x1857ab['where']=_[_0x8f38('0x39')](_0x1857ab[_0x8f38('0x3a')],{'$or':_[_0x8f38('0x25')](_0x221a5b,function(_0x22497c){if(_0x22497c['type']!==_0x8f38('0x3b')){var _0x1fc8c5={};_0x1fc8c5[_0x22497c[_0x8f38('0x23')]]={'$like':'%'+_0x36fe8f['query'][_0x8f38('0x38')]+'%'};return _0x1fc8c5;}})});}_0x1857ab=_[_0x8f38('0x39')]({},_0x1857ab,_0x36fe8f['options']);var _0xf90b35={'where':_0x1857ab[_0x8f38('0x3a')]};return db['CmHopperHistory'][_0x8f38('0x1b')](_0xf90b35)[_0x8f38('0x21')](function(_0x7a1b6){_0x90f7a3['count']=_0x7a1b6;if(_0x36fe8f['query'][_0x8f38('0x3c')]){_0x1857ab[_0x8f38('0x3d')]=[{'all':!![]}];}return db[_0x8f38('0x26')]['findAll'](_0x1857ab);})['then'](function(_0x4398f5){_0x90f7a3[_0x8f38('0x3e')]=_0x4398f5;return _0x90f7a3;})[_0x8f38('0x21')](respondWithFilteredResult(_0x3a979c,_0x1857ab))[_0x8f38('0x3f')](handleError(_0x3a979c,null));};exports['show']=function(_0x426696,_0xf0d56d){var _0x7c5a47={'raw':!![],'where':{'id':_0x426696[_0x8f38('0x40')]['id']}},_0x2981a8={};_0x2981a8[_0x8f38('0x2b')]=_[_0x8f38('0x2c')](db[_0x8f38('0x26')][_0x8f38('0x27')]);_0x2981a8[_0x8f38('0x2f')]=_[_0x8f38('0x2c')](_0x426696[_0x8f38('0x2f')]);_0x2981a8[_0x8f38('0x2d')]=_[_0x8f38('0x2e')](_0x2981a8[_0x8f38('0x2b')],_0x2981a8['query']);_0x7c5a47[_0x8f38('0x31')]=_[_0x8f38('0x2e')](_0x2981a8[_0x8f38('0x2b')],qs[_0x8f38('0x30')](_0x426696[_0x8f38('0x2f')][_0x8f38('0x30')]));_0x7c5a47[_0x8f38('0x31')]=_0x7c5a47['attributes'][_0x8f38('0x32')]?_0x7c5a47[_0x8f38('0x31')]:_0x2981a8[_0x8f38('0x2b')];if(_0x426696[_0x8f38('0x2f')]['includeAll']){_0x7c5a47[_0x8f38('0x3d')]=[{'all':!![]}];}_0x7c5a47=_[_0x8f38('0x39')]({},_0x7c5a47,_0x426696['options']);return db[_0x8f38('0x26')][_0x8f38('0x41')](_0x7c5a47)[_0x8f38('0x21')](handleEntityNotFound(_0xf0d56d,null))['then'](respondWithResult(_0xf0d56d,null))[_0x8f38('0x3f')](handleError(_0xf0d56d,null));};exports['create']=function(_0x373ba6,_0x56bb4e){return db[_0x8f38('0x26')][_0x8f38('0x42')](_0x373ba6[_0x8f38('0x43')],{})['then'](respondWithResult(_0x56bb4e,0xc9))[_0x8f38('0x3f')](handleError(_0x56bb4e,null));};exports['describe']=function(_0x33c598,_0x83481b){return db['CmHopperHistory'][_0x8f38('0x44')]()[_0x8f38('0x21')](respondWithResult(_0x83481b,null))[_0x8f38('0x3f')](handleError(_0x83481b,null));};exports['update']=function(_0x6204a1,_0x825d60){if(_0x6204a1[_0x8f38('0x43')]['uniqueid']){delete _0x6204a1['body'][_0x8f38('0x45')];}return db[_0x8f38('0x26')][_0x8f38('0x41')]({'where':{'uniqueid':_0x6204a1[_0x8f38('0x40')]['id']}})['then'](handleEntityNotFound(_0x825d60,null))['then'](saveUpdates(_0x6204a1['body'],null))[_0x8f38('0x21')](respondWithResult(_0x825d60,null))[_0x8f38('0x3f')](handleError(_0x825d60,null));};
\ No newline at end of file
index b071a19..20e2b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee9c=['endtime','uniqueid','util','../../config/logger','api','moment','path','rimraf','exports','define','CmHopperHistory'];(function(_0x227ff4,_0x2d3a58){var _0x9208d6=function(_0x1b5319){while(--_0x1b5319){_0x227ff4['push'](_0x227ff4['shift']());}};_0x9208d6(++_0x2d3a58);}(_0xee9c,0x1e6));var _0xcee9=function(_0x3fe042,_0x1106f7){_0x3fe042=_0x3fe042-0x0;var _0x7d4a1f=_0xee9c[_0x3fe042];return _0x7d4a1f;};'use strict';var _=require('lodash');var util=require(_0xcee9('0x0'));var logger=require(_0xcee9('0x1'))(_0xcee9('0x2'));var moment=require(_0xcee9('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xcee9('0x4'));var rimraf=require(_0xcee9('0x5'));var config=require('../../config/environment');var attributes=require('./cmHopperHistory.attributes');module[_0xcee9('0x6')]=function(_0x547ea0,_0x2e438b){return _0x547ea0[_0xcee9('0x7')](_0xcee9('0x8'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':'endtime','fields':[_0xcee9('0x9')]},{'name':_0xcee9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc43c=['cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','request-promise','./cmHopperHistory.attributes','exports','define','CmHopperHistory'];(function(_0x4ddd75,_0x5df919){var _0x2882c2=function(_0x2d7c6d){while(--_0x2d7c6d){_0x4ddd75['push'](_0x4ddd75['shift']());}};_0x2882c2(++_0x5df919);}(_0xc43c,0xd4));var _0xcc43=function(_0x42bae5,_0x4306e0){_0x42bae5=_0x42bae5-0x0;var _0x30f161=_0xc43c[_0x42bae5];return _0x30f161;};'use strict';var _=require(_0xcc43('0x0'));var util=require(_0xcc43('0x1'));var logger=require(_0xcc43('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcc43('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcc43('0x4'));module[_0xcc43('0x5')]=function(_0x13d329,_0x5e818f){return _0x13d329[_0xcc43('0x6')](_0xcc43('0x7'),attributes,{'tableName':_0xcc43('0x8'),'paranoid':![],'indexes':[{'name':_0xcc43('0x9'),'fields':[_0xcc43('0x9')]},{'name':_0xcc43('0xa'),'fields':[_0xcc43('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 804c0a8..c281497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f0=['predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateCmHopperHistory','CmHopperHistory','create','body','options','debug','stringify','catch','AvgHandleTime','findAll','raw','where','sequelize','col'];(function(_0x2f1343,_0x59bd6a){var _0x2d8268=function(_0x2844e9){while(--_0x2844e9){_0x2f1343['push'](_0x2f1343['shift']());}};_0x2d8268(++_0x59bd6a);}(_0x78f0,0x15d));var _0x078f=function(_0x1d3cea,_0x16cfe6){_0x1d3cea=_0x1d3cea-0x0;var _0x44da18=_0x78f0[_0x1d3cea];return _0x44da18;};'use strict';var _=require(_0x078f('0x0'));var util=require(_0x078f('0x1'));var moment=require(_0x078f('0x2'));var BPromise=require(_0x078f('0x3'));var rs=require(_0x078f('0x4'));var fs=require('fs');var Redis=require(_0x078f('0x5'));var db=require(_0x078f('0x6'))['db'];var utils=require(_0x078f('0x7'));var logger=require('../../config/logger')(_0x078f('0x8'));var config=require(_0x078f('0x9'));var jayson=require(_0x078f('0xa'));var client=jayson[_0x078f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x728cfe,_0x205510,_0x4a7db3){return new BPromise(function(_0x2ef013,_0x1901e3){return client[_0x078f('0xc')](_0x728cfe,_0x4a7db3)[_0x078f('0xd')](function(_0x7e87f){logger[_0x078f('0xe')](_0x078f('0xf'),_0x205510,_0x078f('0x10'));logger['debug'](_0x078f('0x11'),_0x205510,_0x078f('0x10'),JSON['stringify'](_0x7e87f));if(_0x7e87f[_0x078f('0x12')]){if(_0x7e87f[_0x078f('0x12')][_0x078f('0x13')]===0x1f4){logger[_0x078f('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x205510,_0x7e87f['error'][_0x078f('0x14')]);return _0x1901e3(_0x7e87f[_0x078f('0x12')][_0x078f('0x14')]);}logger[_0x078f('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x205510,_0x7e87f[_0x078f('0x12')][_0x078f('0x14')]);return _0x2ef013(_0x7e87f['error'][_0x078f('0x14')]);}else{logger[_0x078f('0xe')](_0x078f('0xf'),_0x205510,_0x078f('0x10'));_0x2ef013(_0x7e87f[_0x078f('0x15')][_0x078f('0x14')]);}})['catch'](function(_0x56bad2){logger[_0x078f('0x12')](_0x078f('0xf'),_0x205510,_0x56bad2);_0x1901e3(_0x56bad2);});});}exports[_0x078f('0x16')]=function(_0x19a182){var _0x201560=this;return new Promise(function(_0x25bb2d,_0xb8af8c){return db[_0x078f('0x17')][_0x078f('0x18')](_0x19a182[_0x078f('0x19')],{'raw':_0x19a182[_0x078f('0x1a')]?_0x19a182[_0x078f('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x078f('0xd')](function(_0x52c74f){logger['info'](_0x078f('0x16'),_0x19a182);logger[_0x078f('0x1b')](_0x078f('0x16'),_0x19a182,JSON[_0x078f('0x1c')](_0x52c74f));_0x25bb2d(_0x52c74f);})[_0x078f('0x1d')](function(_0x2c6db4){logger[_0x078f('0x12')](_0x078f('0x16'),_0x2c6db4[_0x078f('0x14')],_0x19a182);_0xb8af8c(_0x201560['error'](0x1f4,_0x2c6db4[_0x078f('0x14')]));});});};exports[_0x078f('0x1e')]=function(_0x363cce){var _0x5a41c9=this;return new Promise(function(_0x484f7e,_0x3e5aa8){return db[_0x078f('0x17')][_0x078f('0x1f')]({'raw':_0x363cce[_0x078f('0x1a')]?_0x363cce[_0x078f('0x1a')][_0x078f('0x20')]===undefined?!![]:![]:!![],'where':_0x363cce[_0x078f('0x1a')]?_0x363cce['options'][_0x078f('0x21')]||null:null,'attributes':[[db[_0x078f('0x22')]['fn']('COUNT',db[_0x078f('0x22')][_0x078f('0x23')]('id')),_0x078f('0x24')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x27')))),_0x078f('0x28')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x29')))),_0x078f('0x2a')],[db[_0x078f('0x22')]['fn']('COUNT',db[_0x078f('0x22')]['fn']('IF',db['sequelize']['literal'](_0x078f('0x2b')))),_0x078f('0x2c')],[db[_0x078f('0x22')]['fn'](_0x078f('0x2d'),db['sequelize']['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x2e')))),_0x078f('0x2f')],[db[_0x078f('0x22')]['fn']('AVG',db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0x078f('0x30')]]})[_0x078f('0xd')](function(_0x52d891){logger[_0x078f('0xe')](_0x078f('0x1e'),_0x363cce);logger[_0x078f('0x1b')]('AvgHandleTime',_0x363cce,JSON[_0x078f('0x1c')](_0x52d891));_0x484f7e(_0x52d891);})[_0x078f('0x1d')](function(_0x392037){logger[_0x078f('0x12')](_0x078f('0x1e'),_0x392037[_0x078f('0x14')],_0x363cce);_0x3e5aa8(_0x5a41c9['error'](0x1f4,_0x392037[_0x078f('0x14')]));});});};exports[_0x078f('0x31')]=function(_0x407895){var _0x99f89d=this;return new Promise(function(_0x4ef5dc,_0x474a46){return db[_0x078f('0x17')][_0x078f('0x1f')]({'raw':_0x407895[_0x078f('0x1a')]?_0x407895[_0x078f('0x1a')][_0x078f('0x20')]===undefined?!![]:![]:!![],'where':_0x407895[_0x078f('0x1a')]?_0x407895[_0x078f('0x1a')][_0x078f('0x21')]||null:null,'attributes':[[_0x078f('0x32'),_0x078f('0x33')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')]('`state`\x20=\x200,\x201,\x20null'))),'outboundNoSuchCallsDay'],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x34')))),_0x078f('0x35')],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x078f('0x27')))),_0x078f('0x36')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x37')))),_0x078f('0x38')],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db['sequelize'][_0x078f('0x26')]('`state`\x20=\x208,\x201,\x20null'))),_0x078f('0x39')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x3a')))),_0x078f('0x3b')],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db[_0x078f('0x22')]['literal'](_0x078f('0x3c')))),_0x078f('0x3d')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x3e')))),_0x078f('0x3f')],[db['sequelize']['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db['sequelize'][_0x078f('0x26')](_0x078f('0x40')))),_0x078f('0x41')],[db[_0x078f('0x22')]['fn']('COUNT',db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')]('`state`\x20=\x2014,\x201,\x20null'))),_0x078f('0x42')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')]['literal'](_0x078f('0x43')))),_0x078f('0x44')],[db['sequelize']['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db['sequelize'][_0x078f('0x26')](_0x078f('0x45')))),_0x078f('0x46')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x47')))),'outboundRejectCallsDay'],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db['sequelize'][_0x078f('0x26')](_0x078f('0x48')))),_0x078f('0x49')]],'group':[_0x078f('0x32')]})['then'](function(_0x3badef){logger[_0x078f('0xe')]('GetVoiceQueueHopperHistory',_0x407895);logger[_0x078f('0x1b')]('GetVoiceQueueHopperHistory',_0x407895,JSON[_0x078f('0x1c')](_0x3badef));_0x4ef5dc(_0x3badef);})[_0x078f('0x1d')](function(_0x46561d){logger['error']('GetVoiceQueueHopperHistory',_0x46561d['message'],_0x407895);_0x474a46(_0x99f89d[_0x078f('0x12')](0x1f4,_0x46561d['message']));});});};exports[_0x078f('0x4a')]=function(_0x5bc135){var _0x38b069=this;return new Promise(function(_0x1109af,_0xa9e662){return db[_0x078f('0x17')]['findAll']({'raw':_0x5bc135[_0x078f('0x1a')]?_0x5bc135['options'][_0x078f('0x20')]===undefined?!![]:![]:!![],'where':_0x5bc135[_0x078f('0x1a')]?_0x5bc135['options'][_0x078f('0x21')]||null:null,'attributes':[[_0x078f('0x32'),_0x078f('0x33')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')][_0x078f('0x23')]('id')),_0x078f('0x4b')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')]['literal'](_0x078f('0x27')))),_0x078f('0x4c')]],'group':['campaign']})['then'](function(_0x244ba5){logger['info']('GetCampaignHopperHistory',_0x5bc135);logger[_0x078f('0x1b')](_0x078f('0x4a'),_0x5bc135,JSON[_0x078f('0x1c')](_0x244ba5));_0x1109af(_0x244ba5);})['catch'](function(_0x20d6f7){logger['error'](_0x078f('0x4a'),_0x20d6f7[_0x078f('0x14')],_0x5bc135);_0xa9e662(_0x38b069[_0x078f('0x12')](0x1f4,_0x20d6f7[_0x078f('0x14')]));});});};
\ No newline at end of file
+var _0xe5fb=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','options','raw','CreateCmHopperHistory','AvgHandleTime','CmHopperHistory','findAll','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','where','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','bluebird','randomstring'];(function(_0x4a9d94,_0x2a4800){var _0x5befb9=function(_0xf07086){while(--_0xf07086){_0x4a9d94['push'](_0x4a9d94['shift']());}};_0x5befb9(++_0x2a4800);}(_0xe5fb,0xce));var _0xbe5f=function(_0x156a0d,_0x3946ce){_0x156a0d=_0x156a0d-0x0;var _0x98a9ba=_0xe5fb[_0x156a0d];return _0x98a9ba;};'use strict';var _=require(_0xbe5f('0x0'));var util=require(_0xbe5f('0x1'));var moment=require('moment');var BPromise=require(_0xbe5f('0x2'));var rs=require(_0xbe5f('0x3'));var fs=require('fs');var Redis=require(_0xbe5f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe5f('0x5'));var logger=require(_0xbe5f('0x6'))(_0xbe5f('0x7'));var config=require(_0xbe5f('0x8'));var jayson=require(_0xbe5f('0x9'));var client=jayson['client'][_0xbe5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2dd594,_0x2fc62b,_0x38c423){return new BPromise(function(_0x3fc210,_0x188fe9){return client['request'](_0x2dd594,_0x38c423)[_0xbe5f('0xb')](function(_0x332fa9){logger[_0xbe5f('0xc')](_0xbe5f('0xd'),_0x2fc62b,_0xbe5f('0xe'));logger[_0xbe5f('0xf')](_0xbe5f('0x10'),_0x2fc62b,_0xbe5f('0xe'),JSON[_0xbe5f('0x11')](_0x332fa9));if(_0x332fa9[_0xbe5f('0x12')]){if(_0x332fa9[_0xbe5f('0x12')][_0xbe5f('0x13')]===0x1f4){logger['error'](_0xbe5f('0xd'),_0x2fc62b,_0x332fa9[_0xbe5f('0x12')][_0xbe5f('0x14')]);return _0x188fe9(_0x332fa9[_0xbe5f('0x12')][_0xbe5f('0x14')]);}logger[_0xbe5f('0x12')](_0xbe5f('0xd'),_0x2fc62b,_0x332fa9[_0xbe5f('0x12')][_0xbe5f('0x14')]);return _0x3fc210(_0x332fa9[_0xbe5f('0x12')][_0xbe5f('0x14')]);}else{logger[_0xbe5f('0xc')](_0xbe5f('0xd'),_0x2fc62b,_0xbe5f('0xe'));_0x3fc210(_0x332fa9[_0xbe5f('0x15')][_0xbe5f('0x14')]);}})[_0xbe5f('0x16')](function(_0x2bd011){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x2fc62b,_0x2bd011);_0x188fe9(_0x2bd011);});});}exports['CreateCmHopperHistory']=function(_0x565c40){var _0x9b274e=this;return new Promise(function(_0x35615a,_0x30f6d2){return db['CmHopperHistory']['create'](_0x565c40['body'],{'raw':_0x565c40[_0xbe5f('0x17')]?_0x565c40[_0xbe5f('0x17')][_0xbe5f('0x18')]===undefined?!![]:![]:!![]})[_0xbe5f('0xb')](function(_0x420ea7){logger[_0xbe5f('0xc')](_0xbe5f('0x19'),_0x565c40);logger['debug'](_0xbe5f('0x19'),_0x565c40,JSON[_0xbe5f('0x11')](_0x420ea7));_0x35615a(_0x420ea7);})[_0xbe5f('0x16')](function(_0x306974){logger[_0xbe5f('0x12')](_0xbe5f('0x19'),_0x306974[_0xbe5f('0x14')],_0x565c40);_0x30f6d2(_0x9b274e['error'](0x1f4,_0x306974[_0xbe5f('0x14')]));});});};exports[_0xbe5f('0x1a')]=function(_0x4832a7){var _0x37b5a9=this;return new Promise(function(_0x393418,_0x3d87ca){return db[_0xbe5f('0x1b')][_0xbe5f('0x1c')]({'raw':_0x4832a7[_0xbe5f('0x17')]?_0x4832a7[_0xbe5f('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4832a7['options']?_0x4832a7['options']['where']||null:null,'attributes':[[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')][_0xbe5f('0x1f')]('id')),_0xbe5f('0x20')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x22')))),_0xbe5f('0x23')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x24')))),_0xbe5f('0x25')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x26')))),'predictiveIntervalDroppedCallsCallersExit'],[db['sequelize']['fn'](_0xbe5f('0x27'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x28')))),_0xbe5f('0x29')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x27'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xbe5f('0x2a')]]})['then'](function(_0x342e87){logger[_0xbe5f('0xc')](_0xbe5f('0x1a'),_0x4832a7);logger[_0xbe5f('0xf')](_0xbe5f('0x1a'),_0x4832a7,JSON[_0xbe5f('0x11')](_0x342e87));_0x393418(_0x342e87);})[_0xbe5f('0x16')](function(_0x18da92){logger[_0xbe5f('0x12')](_0xbe5f('0x1a'),_0x18da92['message'],_0x4832a7);_0x3d87ca(_0x37b5a9[_0xbe5f('0x12')](0x1f4,_0x18da92[_0xbe5f('0x14')]));});});};exports[_0xbe5f('0x2b')]=function(_0xb4a365){var _0x34e2f5=this;return new Promise(function(_0x282259,_0x4be02c){return db[_0xbe5f('0x1b')][_0xbe5f('0x1c')]({'raw':_0xb4a365['options']?_0xb4a365[_0xbe5f('0x17')][_0xbe5f('0x18')]===undefined?!![]:![]:!![],'where':_0xb4a365['options']?_0xb4a365['options']['where']||null:null,'attributes':[[_0xbe5f('0x2c'),_0xbe5f('0x2d')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xbe5f('0x1d')]['literal'](_0xbe5f('0x2e')))),'outboundNoSuchCallsDay'],[db['sequelize']['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')]('`state`\x20=\x203,\x201,\x20null'))),'outboundNoAnswerCallsDay'],[db['sequelize']['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x22')))),'outboundAnswerCallsDay'],[db['sequelize']['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x2f')))),_0xbe5f('0x30')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')]['literal'](_0xbe5f('0x31')))),_0xbe5f('0x32')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x33')))),'outboundDropCallsDayTimeout'],[db[_0xbe5f('0x1d')]['fn']('COUNT',db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x34')))),_0xbe5f('0x35')],[db['sequelize']['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db['sequelize'][_0xbe5f('0x21')](_0xbe5f('0x36')))),_0xbe5f('0x37')],[db['sequelize']['fn']('COUNT',db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x38')))),_0xbe5f('0x39')],[db[_0xbe5f('0x1d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')]('`state`\x20=\x2014,\x201,\x20null'))),_0xbe5f('0x3a')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db['sequelize'][_0xbe5f('0x21')](_0xbe5f('0x3b')))),_0xbe5f('0x3c')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db['sequelize']['literal'](_0xbe5f('0x3d')))),_0xbe5f('0x3e')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x3f')))),_0xbe5f('0x3c')],[db[_0xbe5f('0x1d')]['fn']('COUNT',db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')][_0xbe5f('0x21')](_0xbe5f('0x40')))),_0xbe5f('0x41')]],'group':[_0xbe5f('0x2c')]})['then'](function(_0x3aefce){logger[_0xbe5f('0xc')](_0xbe5f('0x2b'),_0xb4a365);logger[_0xbe5f('0xf')](_0xbe5f('0x2b'),_0xb4a365,JSON[_0xbe5f('0x11')](_0x3aefce));_0x282259(_0x3aefce);})[_0xbe5f('0x16')](function(_0x346a55){logger[_0xbe5f('0x12')](_0xbe5f('0x2b'),_0x346a55[_0xbe5f('0x14')],_0xb4a365);_0x4be02c(_0x34e2f5[_0xbe5f('0x12')](0x1f4,_0x346a55[_0xbe5f('0x14')]));});});};exports[_0xbe5f('0x42')]=function(_0x451e18){var _0x3bb2a5=this;return new Promise(function(_0x300520,_0x275f67){return db[_0xbe5f('0x1b')][_0xbe5f('0x1c')]({'raw':_0x451e18[_0xbe5f('0x17')]?_0x451e18[_0xbe5f('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x451e18[_0xbe5f('0x17')]?_0x451e18[_0xbe5f('0x17')][_0xbe5f('0x43')]||null:null,'attributes':[[_0xbe5f('0x2c'),'name'],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')][_0xbe5f('0x1f')]('id')),_0xbe5f('0x44')],[db[_0xbe5f('0x1d')]['fn'](_0xbe5f('0x1e'),db[_0xbe5f('0x1d')]['fn']('IF',db[_0xbe5f('0x1d')]['literal'](_0xbe5f('0x22')))),_0xbe5f('0x45')]],'group':[_0xbe5f('0x2c')]})[_0xbe5f('0xb')](function(_0x290d81){logger[_0xbe5f('0xc')]('GetCampaignHopperHistory',_0x451e18);logger[_0xbe5f('0xf')](_0xbe5f('0x42'),_0x451e18,JSON[_0xbe5f('0x11')](_0x290d81));_0x300520(_0x290d81);})[_0xbe5f('0x16')](function(_0x2a6be1){logger[_0xbe5f('0x12')]('GetCampaignHopperHistory',_0x2a6be1['message'],_0x451e18);_0x275f67(_0x3bb2a5[_0xbe5f('0x12')](0x1f4,_0x2a6be1[_0xbe5f('0x14')]));});});};
\ No newline at end of file
index f572415..876ed5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ef=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','/describe','isAuthenticated','/:id','show','create','put','exports'];(function(_0x7d5a8b,_0x2aedef){var _0x56ac46=function(_0x55a1ab){while(--_0x55a1ab){_0x7d5a8b['push'](_0x7d5a8b['shift']());}};_0x56ac46(++_0x2aedef);}(_0x03ef,0x169));var _0xf03e=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x03ef[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0xf03e('0x0'));var util=require(_0xf03e('0x1'));var path=require(_0xf03e('0x2'));var timeout=require(_0xf03e('0x3'));var express=require(_0xf03e('0x4'));var router=express['Router']();var fs_extra=require(_0xf03e('0x5'));var auth=require(_0xf03e('0x6'));var interaction=require(_0xf03e('0x7'));var config=require(_0xf03e('0x8'));var controller=require(_0xf03e('0x9'));router[_0xf03e('0xa')]('/',auth['isAuthenticated'](),controller[_0xf03e('0xb')]);router[_0xf03e('0xa')](_0xf03e('0xc'),auth[_0xf03e('0xd')](),controller['describe']);router[_0xf03e('0xa')](_0xf03e('0xe'),auth[_0xf03e('0xd')](),controller[_0xf03e('0xf')]);router['post']('/',auth[_0xf03e('0xd')](),controller[_0xf03e('0x10')]);router[_0xf03e('0x11')](_0xf03e('0xe'),auth[_0xf03e('0xd')](),controller['update']);module[_0xf03e('0x12')]=router;
\ No newline at end of file
+var _0x5a7a=['describe','show','post','create','put','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','/describe','isAuthenticated'];(function(_0x215f2c,_0x4dbda1){var _0x193f9d=function(_0x4f3b3f){while(--_0x4f3b3f){_0x215f2c['push'](_0x215f2c['shift']());}};_0x193f9d(++_0x4dbda1);}(_0x5a7a,0x16a));var _0xa5a7=function(_0x3856d8,_0x1924aa){_0x3856d8=_0x3856d8-0x0;var _0x436991=_0x5a7a[_0x3856d8];return _0x436991;};'use strict';var multer=require(_0xa5a7('0x0'));var util=require(_0xa5a7('0x1'));var path=require(_0xa5a7('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa5a7('0x3')]();var fs_extra=require(_0xa5a7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa5a7('0x5'));var config=require(_0xa5a7('0x6'));var controller=require(_0xa5a7('0x7'));router[_0xa5a7('0x8')]('/',auth['isAuthenticated'](),controller[_0xa5a7('0x9')]);router[_0xa5a7('0x8')](_0xa5a7('0xa'),auth[_0xa5a7('0xb')](),controller[_0xa5a7('0xc')]);router['get']('/:id',auth[_0xa5a7('0xb')](),controller[_0xa5a7('0xd')]);router[_0xa5a7('0xe')]('/',auth[_0xa5a7('0xb')](),controller[_0xa5a7('0xf')]);router[_0xa5a7('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);module['exports']=router;
\ No newline at end of file
index 8150cf5..08da0cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe94a=['exports','STRING','sequelize'];(function(_0x4fb7f5,_0x65876){var _0x2bf949=function(_0x23aab7){while(--_0x23aab7){_0x4fb7f5['push'](_0x4fb7f5['shift']());}};_0x2bf949(++_0x65876);}(_0xe94a,0x1c7));var _0xae94=function(_0x565fed,_0xb85768){_0x565fed=_0x565fed-0x0;var _0x3e018f=_0xe94a[_0x565fed];return _0x3e018f;};'use strict';var Sequelize=require(_0xae94('0x0'));module[_0xae94('0x1')]={'name':{'type':Sequelize[_0xae94('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xae94('0x2')]},'dialPrefix':{'type':Sequelize[_0xae94('0x2')]}};
\ No newline at end of file
+var _0x3a5e=['sequelize','exports','STRING','name'];(function(_0x11c1a1,_0x17ba8c){var _0x483746=function(_0x5253c3){while(--_0x5253c3){_0x11c1a1['push'](_0x11c1a1['shift']());}};_0x483746(++_0x17ba8c);}(_0x3a5e,0x14c));var _0xe3a5=function(_0x1a6156,_0x1e7722){_0x1a6156=_0x1a6156-0x0;var _0x559292=_0x3a5e[_0x1a6156];return _0x559292;};'use strict';var Sequelize=require(_0xe3a5('0x0'));module[_0xe3a5('0x1')]={'name':{'type':Sequelize[_0xe3a5('0x2')],'unique':_0xe3a5('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe3a5('0x2')]},'dialPrefix':{'type':Sequelize[_0xe3a5('0x2')]}};
\ No newline at end of file
index 0bf03b7..5de7246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741a=['defaultValue','addColumn','cf_%s','getCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','info','eml-format','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Lists','UserProfileResource','error','name','send','index','map','rawAttributes','fieldName','key','query','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','CmList','findAll','rows','catch','show','params','keys','intersection','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','describe','addDisposition','ListId','Disposition','getDispositions','findOne','removeDispositions','addContacts','CmContact','tags','isArray','push','omit','ids','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','raw','ContactItemType','OrderBy','alias','select','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','c.cf_','customField_','field','cm_contact_has_items','ItemTypeId\x20=\x20?','additionalPhone_','description','toString','isEmpty','now','writeFileSync','format','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','/tmp/list_%d_%s.csv','addCustomField','sequelize','transaction','addCustomFields','TEXT','type','text','Sequelize','INTEGER','switch','BOOLEAN'];(function(_0x147949,_0x1fa37f){var _0xeff9a1=function(_0x149137){while(--_0x149137){_0x147949['push'](_0x147949['shift']());}};_0xeff9a1(++_0x1fa37f);}(_0x741a,0xb1));var _0xa741=function(_0x594609,_0x30836c){_0x594609=_0x594609-0x0;var _0x1550ff=_0x741a[_0x594609];return _0x1550ff;};'use strict';var emlformat=require(_0xa741('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa741('0x1'));var rp=require(_0xa741('0x2'));var moment=require(_0xa741('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa741('0x4'));var util=require('util');var path=require(_0xa741('0x5'));var sox=require(_0xa741('0x6'));var csv=require(_0xa741('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa741('0x8'));var _=require(_0xa741('0x9'));var squel=require('squel');var crypto=require(_0xa741('0xa'));var jsforce=require(_0xa741('0xb'));var deskjs=require(_0xa741('0xc'));var toCsv=require(_0xa741('0x7'));var querystring=require(_0xa741('0xd'));var Papa=require('papaparse');var Redis=require(_0xa741('0xe'));var authService=require(_0xa741('0xf'));var qs=require(_0xa741('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa741('0x11'));var config=require(_0xa741('0x12'));var licenseUtil=require(_0xa741('0x13'));var db=require(_0xa741('0x14'))['db'];var csv_results;config[_0xa741('0x15')]=_['defaults'](config[_0xa741('0x15')],{'host':_0xa741('0x16'),'port':0x18eb});var socket=require(_0xa741('0x17'))(new Redis(config[_0xa741('0x15')]));require(_0xa741('0x18'))[_0xa741('0x19')](socket);function respondWithStatusCode(_0x800c84,_0x144a64){_0x144a64=_0x144a64||0xcc;return function(_0x56c11e){if(_0x56c11e){return _0x800c84[_0xa741('0x1a')](_0x144a64);}return _0x800c84['status'](_0x144a64)[_0xa741('0x1b')]();};}function respondWithResult(_0x26bebe,_0x179ba0){_0x179ba0=_0x179ba0||0xc8;return function(_0x408316){if(_0x408316){return _0x26bebe[_0xa741('0x1c')](_0x179ba0)[_0xa741('0x1d')](_0x408316);}};}function respondWithFilteredResult(_0x4d1835,_0x2d97ec){return function(_0x457dde){if(_0x457dde){var _0x1d0930=typeof _0x2d97ec[_0xa741('0x1e')]===_0xa741('0x1f')&&typeof _0x2d97ec[_0xa741('0x20')]==='undefined';var _0x4acac3=_0x457dde[_0xa741('0x21')];var _0x45a1ce=_0x1d0930?0x0:_0x2d97ec[_0xa741('0x1e')];var _0x189946=_0x1d0930?_0x457dde[_0xa741('0x21')]:_0x2d97ec['offset']+_0x2d97ec[_0xa741('0x20')];var _0x169bf8;if(_0x189946>=_0x4acac3){_0x189946=_0x4acac3;_0x169bf8=0xc8;}else{_0x169bf8=0xce;}_0x4d1835[_0xa741('0x1c')](_0x169bf8);return _0x4d1835[_0xa741('0x22')](_0xa741('0x23'),_0x45a1ce+'-'+_0x189946+'/'+_0x4acac3)[_0xa741('0x1d')](_0x457dde);}return null;};}function patchUpdates(_0x4a0527){return function(_0x5ce014){try{jsonpatch[_0xa741('0x24')](_0x5ce014,_0x4a0527,!![]);}catch(_0x3d6442){return BPromise['reject'](_0x3d6442);}return _0x5ce014[_0xa741('0x25')]();};}function saveUpdates(_0x1abb38,_0x1ac84d){return function(_0x5c438e){if(_0x5c438e){return _0x5c438e[_0xa741('0x26')](_0x1abb38)[_0xa741('0x27')](function(_0x3489aa){return _0x3489aa;});}return null;};}function removeEntity(_0x5b2555,_0x1c1987){return function(_0x3fb8fa){if(_0x3fb8fa){return _0x3fb8fa[_0xa741('0x28')]()[_0xa741('0x27')](function(){var _0x274ef9=_0x3fb8fa[_0xa741('0x29')]({'plain':!![]});var _0x476447=_0xa741('0x2a');return db[_0xa741('0x2b')]['destroy']({'where':{'type':_0x476447,'resourceId':_0x274ef9['id']}})[_0xa741('0x27')](function(){return _0x3fb8fa;});})[_0xa741('0x27')](function(){_0x5b2555[_0xa741('0x1c')](0xcc)[_0xa741('0x1b')]();});}};}function handleEntityNotFound(_0x4fbd62,_0x4eb940){return function(_0x182244){if(!_0x182244){_0x4fbd62[_0xa741('0x1a')](0x194);}return _0x182244;};}function handleError(_0x300dd6,_0x146f16){_0x146f16=_0x146f16||0x1f4;return function(_0x15a4c9){logger[_0xa741('0x2c')](_0x15a4c9['stack']);if(_0x15a4c9[_0xa741('0x2d')]){delete _0x15a4c9[_0xa741('0x2d')];}_0x300dd6[_0xa741('0x1c')](_0x146f16)[_0xa741('0x2e')](_0x15a4c9);};}exports[_0xa741('0x2f')]=function(_0x2ff08d,_0x570c85){var _0x40badd={},_0x6bf062={},_0x1d8d24={'count':0x0,'rows':[]};var _0x4c0652=_[_0xa741('0x30')](db['CmList'][_0xa741('0x31')],function(_0x174eb0){return{'name':_0x174eb0[_0xa741('0x32')],'type':_0x174eb0['type'][_0xa741('0x33')]};});_0x6bf062['model']=_[_0xa741('0x30')](_0x4c0652,_0xa741('0x2d'));_0x6bf062[_0xa741('0x34')]=_['keys'](_0x2ff08d['query']);_0x6bf062['filters']=_['intersection'](_0x6bf062[_0xa741('0x35')],_0x6bf062[_0xa741('0x34')]);_0x40badd[_0xa741('0x36')]=_['intersection'](_0x6bf062['model'],qs[_0xa741('0x37')](_0x2ff08d[_0xa741('0x34')]['fields']));_0x40badd[_0xa741('0x36')]=_0x40badd['attributes'][_0xa741('0x38')]?_0x40badd['attributes']:_0x6bf062[_0xa741('0x35')];if(!_0x2ff08d[_0xa741('0x34')][_0xa741('0x39')](_0xa741('0x3a'))){_0x40badd[_0xa741('0x20')]=qs[_0xa741('0x20')](_0x2ff08d[_0xa741('0x34')]['limit']);_0x40badd[_0xa741('0x1e')]=qs[_0xa741('0x1e')](_0x2ff08d[_0xa741('0x34')][_0xa741('0x1e')]);}_0x40badd[_0xa741('0x3b')]=qs[_0xa741('0x3c')](_0x2ff08d[_0xa741('0x34')]['sort']);_0x40badd[_0xa741('0x3d')]=qs['filters'](_[_0xa741('0x3e')](_0x2ff08d[_0xa741('0x34')],_0x6bf062[_0xa741('0x3f')]),_0x4c0652);if(_0x2ff08d[_0xa741('0x34')][_0xa741('0x40')]){_0x40badd[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x40badd[_0xa741('0x3d')],{'$or':_[_0xa741('0x30')](_0x4c0652,function(_0x2674da){if(_0x2674da['type']!==_0xa741('0x42')){var _0x57cfa5={};_0x57cfa5[_0x2674da[_0xa741('0x2d')]]={'$like':'%'+_0x2ff08d[_0xa741('0x34')][_0xa741('0x40')]+'%'};return _0x57cfa5;}})});}_0x40badd=_['merge']({},_0x40badd,_0x2ff08d[_0xa741('0x43')]);var _0x486f1d={'where':_0x40badd[_0xa741('0x3d')]};return db['CmList'][_0xa741('0x21')](_0x486f1d)[_0xa741('0x27')](function(_0x2d74df){_0x1d8d24[_0xa741('0x21')]=_0x2d74df;if(_0x2ff08d[_0xa741('0x34')]['includeAll']){_0x40badd[_0xa741('0x44')]=[{'all':!![]}];}return db[_0xa741('0x45')][_0xa741('0x46')](_0x40badd);})[_0xa741('0x27')](function(_0x4dae2f){_0x1d8d24[_0xa741('0x47')]=_0x4dae2f;return _0x1d8d24;})[_0xa741('0x27')](respondWithFilteredResult(_0x570c85,_0x40badd))[_0xa741('0x48')](handleError(_0x570c85,null));};exports[_0xa741('0x49')]=function(_0x25f3fd,_0x52aa47){var _0x5a1f9b={'raw':![],'where':{'id':_0x25f3fd[_0xa741('0x4a')]['id']}},_0x418002={};_0x418002[_0xa741('0x35')]=_[_0xa741('0x4b')](db[_0xa741('0x45')][_0xa741('0x31')]);_0x418002[_0xa741('0x34')]=_[_0xa741('0x4b')](_0x25f3fd[_0xa741('0x34')]);_0x418002[_0xa741('0x3f')]=_[_0xa741('0x4c')](_0x418002[_0xa741('0x35')],_0x418002['query']);_0x5a1f9b[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x418002['model'],qs[_0xa741('0x37')](_0x25f3fd[_0xa741('0x34')][_0xa741('0x37')]));_0x5a1f9b[_0xa741('0x36')]=_0x5a1f9b[_0xa741('0x36')][_0xa741('0x38')]?_0x5a1f9b[_0xa741('0x36')]:_0x418002[_0xa741('0x35')];if(_0x25f3fd[_0xa741('0x34')][_0xa741('0x4d')]){_0x5a1f9b[_0xa741('0x44')]=[{'all':!![]}];}_0x5a1f9b=_[_0xa741('0x41')]({},_0x5a1f9b,_0x25f3fd[_0xa741('0x43')]);return db['CmList']['find'](_0x5a1f9b)[_0xa741('0x27')](handleEntityNotFound(_0x52aa47,null))[_0xa741('0x27')](respondWithResult(_0x52aa47,null))[_0xa741('0x48')](handleError(_0x52aa47,null));};exports[_0xa741('0x4e')]=function(_0x4b95f0,_0x3560ed){return db[_0xa741('0x45')]['create'](_0x4b95f0[_0xa741('0x4f')],{})[_0xa741('0x27')](function(_0x296bb0){var _0xc7e2bf=_0x4b95f0[_0xa741('0x50')]['get']({'plain':!![]});if(!_0xc7e2bf)throw new Error(_0xa741('0x51'));if(_0xc7e2bf[_0xa741('0x52')]===_0xa741('0x50')){var _0xbe7307=_0x296bb0['get']({'plain':!![]});var _0xf231ce=_0xa741('0x2a');return db[_0xa741('0x53')][_0xa741('0x54')]({'where':{'name':_0xf231ce,'userProfileId':_0xc7e2bf[_0xa741('0x55')]},'raw':!![]})['then'](function(_0x2b5ce8){if(_0x2b5ce8&&_0x2b5ce8[_0xa741('0x56')]===0x0){return db[_0xa741('0x2b')][_0xa741('0x4e')]({'name':_0xbe7307[_0xa741('0x2d')],'resourceId':_0xbe7307['id'],'type':_0x2b5ce8['name'],'sectionId':_0x2b5ce8['id']},{})[_0xa741('0x27')](function(){return _0x296bb0;});}else{return _0x296bb0;}})[_0xa741('0x48')](function(_0x570942){logger[_0xa741('0x2c')](_0xa741('0x57'),_0x570942);throw _0x570942;});}return _0x296bb0;})[_0xa741('0x27')](respondWithResult(_0x3560ed,0xc9))[_0xa741('0x48')](handleError(_0x3560ed,null));};exports[_0xa741('0x26')]=function(_0x405e4c,_0x4559b6){if(_0x405e4c[_0xa741('0x4f')]['id']){delete _0x405e4c[_0xa741('0x4f')]['id'];}return db['CmList'][_0xa741('0x54')]({'where':{'id':_0x405e4c['params']['id']}})['then'](handleEntityNotFound(_0x4559b6,null))[_0xa741('0x27')](saveUpdates(_0x405e4c['body'],null))[_0xa741('0x27')](respondWithResult(_0x4559b6,null))['catch'](handleError(_0x4559b6,null));};exports[_0xa741('0x28')]=function(_0x3c9d1f,_0xeb27d7){return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x3c9d1f[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0xeb27d7,null))[_0xa741('0x27')](removeEntity(_0xeb27d7,null))[_0xa741('0x48')](handleError(_0xeb27d7,null));};exports[_0xa741('0x58')]=function(_0x80799c,_0x5c86d3){return db['CmList'][_0xa741('0x58')]()['then'](respondWithResult(_0x5c86d3,null))[_0xa741('0x48')](handleError(_0x5c86d3,null));};exports[_0xa741('0x59')]=function(_0x4ed18d,_0xe87c5b,_0x11b54d){if(_0x4ed18d[_0xa741('0x4f')]['id']){delete _0x4ed18d['body']['id'];}return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x4ed18d[_0xa741('0x4a')]['id']}})['then'](handleEntityNotFound(_0xe87c5b,null))[_0xa741('0x27')](function(_0x2f0be4){if(_0x2f0be4){_0x4ed18d[_0xa741('0x4f')][_0xa741('0x5a')]=_0x2f0be4['id'];return db[_0xa741('0x5b')][_0xa741('0x4e')](_0x4ed18d[_0xa741('0x4f')]);}})[_0xa741('0x27')](respondWithResult(_0xe87c5b,null))[_0xa741('0x48')](handleError(_0xe87c5b,null));};exports[_0xa741('0x5c')]=function(_0x51dcf5,_0x3c936b,_0x27e9d3){var _0x3f8da6={'raw':![],'where':{}};var _0x3e1680={};var _0x5aa5f3={'count':0x0,'rows':[]};return db['CmList'][_0xa741('0x5d')]({'where':{'id':_0x51dcf5[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x3c936b,null))[_0xa741('0x27')](function(_0x10c53d){if(_0x10c53d){_0x3e1680['model']=_['keys'](db['Disposition'][_0xa741('0x31')]);_0x3e1680['query']=_[_0xa741('0x4b')](_0x51dcf5[_0xa741('0x34')]);_0x3e1680[_0xa741('0x3f')]=_['intersection'](_0x3e1680[_0xa741('0x35')],_0x3e1680[_0xa741('0x34')]);_0x3f8da6[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x3e1680[_0xa741('0x35')],qs[_0xa741('0x37')](_0x51dcf5['query'][_0xa741('0x37')]));_0x3f8da6[_0xa741('0x36')]=_0x3f8da6['attributes'][_0xa741('0x38')]?_0x3f8da6['attributes']:_0x3e1680[_0xa741('0x35')];if(!_0x51dcf5[_0xa741('0x34')][_0xa741('0x39')](_0xa741('0x3a'))){_0x3f8da6['limit']=qs[_0xa741('0x20')](_0x51dcf5[_0xa741('0x34')][_0xa741('0x20')]);_0x3f8da6['offset']=qs[_0xa741('0x1e')](_0x51dcf5[_0xa741('0x34')][_0xa741('0x1e')]);}_0x3f8da6[_0xa741('0x3b')]=qs[_0xa741('0x3c')](_0x51dcf5[_0xa741('0x34')][_0xa741('0x3c')]);_0x3f8da6['where']=qs[_0xa741('0x3f')](_['pick'](_0x51dcf5['query'],_0x3e1680[_0xa741('0x3f')]));_0x3f8da6['where'][_0xa741('0x5a')]=_0x10c53d['id'];if(_0x51dcf5['query'][_0xa741('0x40')]){_0x3f8da6['where']=_['merge'](_0x3f8da6[_0xa741('0x3d')],{'$or':_[_0xa741('0x30')](_0x3f8da6[_0xa741('0x36')],function(_0x2e0f5b){var _0x1a55db={};_0x1a55db[_0x2e0f5b]={'$like':'%'+_0x51dcf5[_0xa741('0x34')]['filter']+'%'};return _0x1a55db;})});}_0x3f8da6=_['merge']({},_0x3f8da6,_0x51dcf5[_0xa741('0x43')]);return db[_0xa741('0x5b')][_0xa741('0x21')]({'where':_0x3f8da6[_0xa741('0x3d')]})[_0xa741('0x27')](function(_0x138a4d){_0x5aa5f3[_0xa741('0x21')]=_0x138a4d;if(_0x51dcf5[_0xa741('0x34')]['includeAll']){_0x3f8da6['include']=[{'all':!![]}];}return db['Disposition'][_0xa741('0x46')](_0x3f8da6);})[_0xa741('0x27')](function(_0x11398d){_0x5aa5f3['rows']=_0x11398d;return _0x5aa5f3;});}})[_0xa741('0x27')](respondWithFilteredResult(_0x3c936b,_0x3f8da6))[_0xa741('0x48')](handleError(_0x3c936b,null));};exports['removeDispositions']=function(_0x183a27,_0x1e3e49,_0x23c03b){return db['CmList']['find']({'where':{'id':_0x183a27[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x1e3e49,null))[_0xa741('0x27')](function(_0xd722fe){if(_0xd722fe){return _0xd722fe[_0xa741('0x5e')](_0x183a27[_0xa741('0x34')]['ids']);}})[_0xa741('0x27')](respondWithStatusCode(_0x1e3e49,null))['catch'](handleError(_0x1e3e49,null));};exports[_0xa741('0x5f')]=function(_0x318c4b,_0x2b9d51,_0x3ca23b){return db['CmList'][_0xa741('0x54')]({'where':{'id':_0x318c4b[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x2b9d51,null))[_0xa741('0x27')](function(_0x1df4c0){if(_0x1df4c0){var _0x28fa40=[];var _0x52e7f6={'success':[],'errors':[]};return db[_0xa741('0x60')][_0xa741('0x58')]()[_0xa741('0x27')](function(_0x6a5669){if(_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]&&_['isArray'](_0x318c4b[_0xa741('0x4f')]['tags'])){if(_0x318c4b[_0xa741('0x4f')]['tags'][_0xa741('0x38')]){_0x318c4b['body'][_0xa741('0x61')]=_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]['join'](';')+';';}else{_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]=null;}}else{_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]=null;}if(_0x318c4b[_0xa741('0x4f')]&&_[_0xa741('0x62')](_0x318c4b['body'])){for(var _0x28e0c5=0x0;_0x28e0c5<_0x318c4b[_0xa741('0x4f')][_0xa741('0x38')];_0x28e0c5+=0x1){_0x318c4b['body'][_0x28e0c5]['ListId']=_0x318c4b[_0xa741('0x4a')]['id'];_0x28fa40[_0xa741('0x63')](_0x318c4b[_0xa741('0x4f')][_0x28e0c5]);}return BPromise['each'](_0x28fa40,function(_0x5875c8){return db[_0xa741('0x60')]['create'](_[_0xa741('0x64')](_0x5875c8,[_0xa741('0x65'),'id'])||{},{'fields':_[_0xa741('0x4b')](_0x6a5669),'raw':!![]})[_0xa741('0x27')](function(_0x4d7cae){_0x52e7f6[_0xa741('0x66')][_0xa741('0x63')](_0x4d7cae[_0xa741('0x67')]);})[_0xa741('0x48')](function(_0x4b6d2f){_0x52e7f6[_0xa741('0x68')][_0xa741('0x63')]({'data':_0x5875c8,'error':_0x4b6d2f[_0xa741('0x69')]});});})[_0xa741('0x27')](function(_0x44b673){return _0x52e7f6;})[_0xa741('0x48')](function(_0x1e228a){return _0x1e228a;});}else{_0x2b9d51[_0xa741('0x1c')](0x190)['json']({'message':_0xa741('0x6a')});}});}})[_0xa741('0x27')](respondWithResult(_0x2b9d51,null))[_0xa741('0x48')](handleError(_0x2b9d51,null));};exports[_0xa741('0x6b')]=function(_0x474cc3,_0x5487cc,_0x1562b5){var _0x596e00;return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x474cc3[_0xa741('0x4a')]['id']},'include':[{'model':db[_0xa741('0x6c')],'as':_0xa741('0x6d')}]})[_0xa741('0x27')](handleEntityNotFound(_0x5487cc,null))[_0xa741('0x27')](function(_0x2c1a35){if(_0x2c1a35){_0x596e00=_0x2c1a35;return db[_0xa741('0x60')][_0xa741('0x31')];}})[_0xa741('0x27')](function(_0x31c963){if(_0x31c963){var _0x6a6cda={};var _0x38116f={};_0x38116f[_0xa741('0x35')]=_['concat'](_[_0xa741('0x4b')](_0x31c963),_['map'](_0x596e00[_0xa741('0x6d')],function(_0x1ce503){return util['format']('cf_%d',_0x1ce503['id']);}));_0x38116f[_0xa741('0x34')]=_[_0xa741('0x4b')](_0x474cc3[_0xa741('0x34')]);_0x38116f[_0xa741('0x3f')]=_['intersection'](_0x38116f[_0xa741('0x35')],_0x38116f[_0xa741('0x34')]);_0x6a6cda[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x38116f[_0xa741('0x35')],qs[_0xa741('0x37')](_0x474cc3[_0xa741('0x34')]['fields']));_0x6a6cda[_0xa741('0x36')]=_0x6a6cda['attributes']['length']?_0x6a6cda[_0xa741('0x36')]:_0x38116f[_0xa741('0x35')];if(!_0x474cc3[_0xa741('0x34')][_0xa741('0x39')](_0xa741('0x3a'))){_0x6a6cda[_0xa741('0x20')]=qs[_0xa741('0x20')](_0x474cc3[_0xa741('0x34')][_0xa741('0x20')]);_0x6a6cda[_0xa741('0x1e')]=qs[_0xa741('0x1e')](_0x474cc3[_0xa741('0x34')][_0xa741('0x1e')]);}_0x6a6cda['order']=qs[_0xa741('0x3c')](_0x474cc3['query'][_0xa741('0x3c')]);_0x6a6cda['where']=qs[_0xa741('0x3f')](_['pick'](_0x474cc3[_0xa741('0x34')],_0x38116f[_0xa741('0x3f')]));_0x6a6cda[_0xa741('0x6e')]=!![];if(_0x474cc3[_0xa741('0x34')][_0xa741('0x40')]){_0x6a6cda[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x6a6cda['where'],{'$or':_[_0xa741('0x30')](_0x6a6cda[_0xa741('0x36')],function(_0x337d90){var _0x3c9f0b={};_0x3c9f0b[_0x337d90]={'$like':'%'+_0x474cc3[_0xa741('0x34')][_0xa741('0x40')]+'%'};return _0x3c9f0b;})});}_0x6a6cda=_[_0xa741('0x41')]({},_0x6a6cda,_0x474cc3[_0xa741('0x43')]);return _0x596e00['getContacts'](_0x6a6cda);}})['then'](respondWithResult(_0x5487cc,null))[_0xa741('0x48')](handleError(_0x5487cc,null));};exports['getContactsCsv']=function(_0x2ec53e,_0x558d79,_0x5e3efe){var _0x2ac812;var _0x1f9611;var _0x14fb60;var _0x59d81b=_0x2ec53e[_0xa741('0x4a')]['id'];csv_results=[];return db[_0xa741('0x6f')][_0xa741('0x46')]({'attributes':['id',_0xa741('0x2d')],'raw':!![],'order':[_0xa741('0x70')]})[_0xa741('0x27')](function(_0x125130){_0x2ac812=_0x125130;var _0x232187=_[_0xa741('0x4b')](db[_0xa741('0x60')][_0xa741('0x31')]);return db[_0xa741('0x6c')]['findAll']({'raw':!![],'attributes':['id',_0xa741('0x71')]})['then'](function(_0x102202){_0x1f9611=_0x102202;var _0x53043a=squel[_0xa741('0x72')]()[_0xa741('0x37')](_0x232187)[_0xa741('0x73')](_0xa741('0x74'),'c')[_0xa741('0x3d')](_0xa741('0x75'),_0x59d81b)[_0xa741('0x3d')](_0xa741('0x76'))[_0xa741('0x77')]();for(var _0x494f7e=0x0;_0x494f7e<_0x1f9611[_0xa741('0x38')];_0x494f7e++){_0x53043a['field'](_0xa741('0x78')+_0x1f9611[_0x494f7e]['id'],_0xa741('0x79')+_0x1f9611[_0x494f7e][_0xa741('0x71')]);}for(var _0x494f7e=0x0;_0x494f7e<_0x2ac812[_0xa741('0x38')];_0x494f7e++){_0x53043a[_0xa741('0x7a')](squel[_0xa741('0x72')]()[_0xa741('0x7a')]('item')[_0xa741('0x73')](_0xa741('0x7b'))[_0xa741('0x3d')](_0xa741('0x7c'),_0x2ac812[_0x494f7e]['id'])[_0xa741('0x3d')]('CmContactId\x20=\x20c.id'),_0xa741('0x7d')+_0x2ac812[_0x494f7e][_0xa741('0x2d')]);_0x53043a[_0xa741('0x7a')](squel['select']()[_0xa741('0x7a')](_0xa741('0x7e'))['from'](_0xa741('0x7b'))[_0xa741('0x3d')]('ItemTypeId\x20=\x20?',_0x2ac812[_0x494f7e]['id'])[_0xa741('0x3d')]('CmContactId\x20=\x20c.id'),'description_additionalPhone_'+_0x2ac812[_0x494f7e][_0xa741('0x2d')]);}var _0x159174=[];_0x159174[_0xa741('0x63')](_0x53043a['toString']());BPromise['each'](_0x159174,handleQuery)[_0xa741('0x27')](function(_0x176898){handleQuery(_0x53043a[_0xa741('0x7f')]());var _0x377b5c=csv_results[0x0];if(!_[_0xa741('0x80')](_0x377b5c)){var _0x3bc4b7=toCsv(_0x377b5c);var _0x4ce289=Date[_0xa741('0x81')]();fs[_0xa741('0x82')](util[_0xa741('0x83')]('/tmp/list_%d_%s.csv',_0x59d81b,_0x4ce289),_0x3bc4b7);_0x558d79[_0xa741('0x84')](_0xa741('0x85'),_0xa741('0x86')+util['format'](_0xa741('0x87'),_0x59d81b,_0x4ce289));_0x558d79[_0xa741('0x84')](_0xa741('0x88'),_0xa741('0x89'));return _0x558d79[_0xa741('0x8a')](util[_0xa741('0x83')](_0xa741('0x8b'),_0x59d81b,_0x4ce289));}else{return _0x558d79[_0xa741('0x1a')](0xcc);}});});});};exports[_0xa741('0x8c')]=function(_0x16afec,_0x510f3b,_0xd39320){var _0x3c78aa;delete _0x16afec[_0xa741('0x4f')]['id'];return db[_0xa741('0x45')]['findOne']({'where':{'id':_0x16afec['params']['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x510f3b,null))[_0xa741('0x27')](function(_0x497287){if(_0x497287){return db[_0xa741('0x8d')][_0xa741('0x8e')](function(_0x2aa041){return db[_0xa741('0x6c')][_0xa741('0x4e')](_0x16afec[_0xa741('0x4f')],{'transaction':_0x2aa041})['then'](function(_0x30d7a4){_0x3c78aa=_0x30d7a4;return _0x497287[_0xa741('0x8f')](_0x30d7a4,{'transaction':_0x2aa041});})['then'](function(){var _0x129ca1={'type':db['Sequelize'][_0xa741('0x90')],'transaction':_0x2aa041};switch(_0x16afec[_0xa741('0x4f')][_0xa741('0x91')]){case _0xa741('0x92'):_0x129ca1['type']=db[_0xa741('0x93')][_0xa741('0x90')];break;case'number':_0x129ca1[_0xa741('0x91')]=db[_0xa741('0x93')][_0xa741('0x94')];break;case _0xa741('0x95'):_0x129ca1['type']=db[_0xa741('0x93')][_0xa741('0x96')];_0x129ca1[_0xa741('0x97')]=![];break;default:}return db[_0xa741('0x8d')]['queryInterface'][_0xa741('0x98')](_0xa741('0x74'),util[_0xa741('0x83')](_0xa741('0x99'),_0x3c78aa['id']),_0x129ca1);})[_0xa741('0x27')](function(){return _0x3c78aa;});});}})[_0xa741('0x27')](respondWithResult(_0x510f3b,null))[_0xa741('0x48')](handleError(_0x510f3b,null));};exports[_0xa741('0x9a')]=function(_0x4a369d,_0x5b650b,_0xdf2d90){var _0x51cfeb={};var _0x50146a={};var _0x263163;var _0x4106bc;return db[_0xa741('0x45')]['findOne']({'where':{'id':_0x4a369d[_0xa741('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5b650b,null))[_0xa741('0x27')](function(_0x2951fe){if(_0x2951fe){_0x263163=_0x2951fe;_0x50146a[_0xa741('0x35')]=_[_0xa741('0x4b')](db['CmCustomField']['rawAttributes']);_0x50146a[_0xa741('0x34')]=_['keys'](_0x4a369d[_0xa741('0x34')]);_0x50146a['filters']=_[_0xa741('0x4c')](_0x50146a['model'],_0x50146a[_0xa741('0x34')]);_0x51cfeb[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x50146a[_0xa741('0x35')],qs[_0xa741('0x37')](_0x4a369d[_0xa741('0x34')]['fields']));_0x51cfeb[_0xa741('0x36')]=_0x51cfeb[_0xa741('0x36')]['length']?_0x51cfeb['attributes']:_0x50146a[_0xa741('0x35')];_0x51cfeb[_0xa741('0x3b')]=qs['sort'](_0x4a369d[_0xa741('0x34')][_0xa741('0x3c')]);_0x51cfeb[_0xa741('0x3d')]=qs[_0xa741('0x3f')](_[_0xa741('0x3e')](_0x4a369d[_0xa741('0x34')],_0x50146a['filters']));_0x51cfeb[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x51cfeb[_0xa741('0x3d')],{'$or':[{'ListId':_0x2951fe['id']},{'ListId':null}]});if(_0x4a369d[_0xa741('0x34')]['filter']){_0x51cfeb[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x51cfeb[_0xa741('0x3d')],{'$or':_[_0xa741('0x30')](_0x51cfeb[_0xa741('0x36')],function(_0x4cc866){var _0x5f3c3d={};_0x5f3c3d[_0x4cc866]={'$like':'%'+_0x4a369d['query'][_0xa741('0x40')]+'%'};return _0x5f3c3d;})});}_0x51cfeb=_[_0xa741('0x41')]({},_0x51cfeb,_0x4a369d['options']);return db[_0xa741('0x6c')]['findAndCountAll'](_0x51cfeb);}})[_0xa741('0x27')](respondWithResult(_0x5b650b,null))[_0xa741('0x48')](handleError(_0x5b650b,null));};exports['getGlobalCustomFields']=function(_0x1288a3,_0x58d531){return db['CmCustomField']['findAndCountAll']({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x58d531,null))[_0xa741('0x27')](function(_0xf4a3e5){return _0xf4a3e5;})['then'](respondWithResult(_0x58d531,null))[_0xa741('0x48')](handleError(_0x58d531,null));};exports['addAgents']=function(_0x563850,_0x2035f8,_0x108482){return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x563850['params']['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x2035f8,null))[_0xa741('0x27')](function(_0xe40e0b){if(_0xe40e0b){return _0xe40e0b[_0xa741('0x9b')](_0x563850[_0xa741('0x4f')][_0xa741('0x65')],_['omit'](_0x563850[_0xa741('0x4f')],[_0xa741('0x65'),'id'])||{})[_0xa741('0x9c')](function(_0x10d3c0){for(var _0x3515ac=0x0;_0x3515ac<_0x563850[_0xa741('0x4f')][_0xa741('0x65')]['length'];_0x3515ac+=0x1){socket[_0xa741('0x9d')](_0xa741('0x9e'),{'UserId':Number(_0x563850[_0xa741('0x4f')]['ids'][_0x3515ac]),'CmListId':Number(_0x563850[_0xa741('0x4a')]['id'])});}return _0x10d3c0;});}})['then'](respondWithResult(_0x2035f8,null))[_0xa741('0x48')](handleError(_0x2035f8,null));};exports['removeAgents']=function(_0x2784e0,_0x466f00,_0x18e19a){return db[_0xa741('0x45')]['find']({'where':{'id':_0x2784e0[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x466f00,null))[_0xa741('0x27')](function(_0x2e80d5){if(_0x2e80d5){return _0x2e80d5[_0xa741('0x9f')](_0x2784e0[_0xa741('0x34')][_0xa741('0x65')])[_0xa741('0x27')](function(){if(_[_0xa741('0x62')](_0x2784e0[_0xa741('0x34')][_0xa741('0x65')])){for(var _0x31ac72=0x0;_0x31ac72<_0x2784e0[_0xa741('0x34')][_0xa741('0x65')]['length'];_0x31ac72+=0x1){socket[_0xa741('0x9d')](_0xa741('0xa0'),{'UserId':Number(_0x2784e0['query'][_0xa741('0x65')][_0x31ac72]),'CmListId':Number(_0x2784e0[_0xa741('0x4a')]['id'])});}}else{socket['emit'](_0xa741('0xa0'),{'UserId':Number(_0x2784e0[_0xa741('0x34')][_0xa741('0x65')]),'CmListId':Number(_0x2784e0[_0xa741('0x4a')]['id'])});}});}})[_0xa741('0x27')](respondWithStatusCode(_0x466f00,null))['catch'](handleError(_0x466f00,null));};exports[_0xa741('0xa1')]=function(_0x345759,_0x2915d9,_0x4a5ea0){var _0x34639c={};var _0x4751a3={};var _0x2c10ec;var _0x1f719d;return db['CmList'][_0xa741('0x5d')]({'where':{'id':_0x345759[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x2915d9,null))['then'](function(_0x1ca88f){if(_0x1ca88f){_0x2c10ec=_0x1ca88f;_0x4751a3[_0xa741('0x35')]=_[_0xa741('0x4b')](db[_0xa741('0xa2')][_0xa741('0x31')]);_0x4751a3[_0xa741('0x34')]=_[_0xa741('0x4b')](_0x345759[_0xa741('0x34')]);_0x4751a3[_0xa741('0x3f')]=_[_0xa741('0x4c')](_0x4751a3[_0xa741('0x35')],_0x4751a3[_0xa741('0x34')]);_0x34639c[_0xa741('0x36')]=_['intersection'](_0x4751a3[_0xa741('0x35')],qs[_0xa741('0x37')](_0x345759[_0xa741('0x34')][_0xa741('0x37')]));_0x34639c[_0xa741('0x36')]=_0x34639c[_0xa741('0x36')]['length']?_0x34639c[_0xa741('0x36')]:_0x4751a3[_0xa741('0x35')];_0x34639c['order']=qs[_0xa741('0x3c')](_0x345759['query']['sort']);_0x34639c[_0xa741('0x3d')]=qs[_0xa741('0x3f')](_[_0xa741('0x3e')](_0x345759[_0xa741('0x34')],_0x4751a3[_0xa741('0x3f')]));if(_0x345759[_0xa741('0x34')][_0xa741('0x40')]){_0x34639c[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x34639c[_0xa741('0x3d')],{'$or':_['map'](_0x34639c[_0xa741('0x36')],function(_0x47f886){var _0x20fad2={};_0x20fad2[_0x47f886]={'$like':'%'+_0x345759[_0xa741('0x34')]['filter']+'%'};return _0x20fad2;})});}_0x34639c=_['merge']({},_0x34639c,_0x345759[_0xa741('0x43')]);return _0x2c10ec[_0xa741('0xa1')](_0x34639c);}})[_0xa741('0x27')](function(_0x54ce7d){if(_0x54ce7d){_0x1f719d=_0x54ce7d[_0xa741('0x38')];if(!_0x345759[_0xa741('0x34')]['hasOwnProperty'](_0xa741('0x3a'))){_0x34639c[_0xa741('0x20')]=qs[_0xa741('0x20')](_0x345759[_0xa741('0x34')]['limit']);_0x34639c[_0xa741('0x1e')]=qs['offset'](_0x345759[_0xa741('0x34')][_0xa741('0x1e')]);}return _0x2c10ec[_0xa741('0xa1')](_0x34639c);}})[_0xa741('0x27')](function(_0x1e062c){if(_0x1e062c){return _0x1e062c?{'count':_0x1f719d,'rows':_0x1e062c}:null;}})[_0xa741('0x27')](respondWithResult(_0x2915d9,null))[_0xa741('0x48')](handleError(_0x2915d9,null));};function handleQuery(_0x2723bd){logger[_0xa741('0xa3')](_0x2723bd);return db['sequelize'][_0xa741('0x34')](_0x2723bd)['spread'](function(_0x463a61){csv_results[_0xa741('0x63')](_0x463a61);})[_0xa741('0x48')](function(_0x51215f){logger['error'](_0x51215f[_0xa741('0x69')]);});}
\ No newline at end of file
+var _0x549a=['fast-json-patch','request-promise','mustache','util','path','sox','ejs','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./cmList.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','index','map','CmList','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','catch','show','params','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','findOne','hasOwnProperty','findAll','rows','removeDispositions','ids','tags','join','isArray','push','CmContact','omit','success','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','concat','format','cf_%d','raw','alias','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','field','customField_','select','item','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','additionalPhone_','description','cm_contact_has_items','description_additionalPhone_','toString','each','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','TEXT','text','number','INTEGER','Sequelize','BOOLEAN','defaultValue','queryInterface','addColumn','cf_%s','findAndCountAll','getGlobalCustomFields','addAgents','emit','userCmList:save','removeAgents','userCmList:remove','User','info','spread','zip-dir'];(function(_0x1a0ea3,_0x43d52c){var _0x16a746=function(_0x126bd9){while(--_0x126bd9){_0x1a0ea3['push'](_0x1a0ea3['shift']());}};_0x16a746(++_0x43d52c);}(_0x549a,0x1e8));var _0xa549=function(_0xe14fe9,_0x19aa8e){_0xe14fe9=_0xe14fe9-0x0;var _0x1c1498=_0x549a[_0xe14fe9];return _0x1c1498;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa549('0x0'));var jsonpatch=require(_0xa549('0x1'));var rp=require(_0xa549('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa549('0x3'));var util=require(_0xa549('0x4'));var path=require(_0xa549('0x5'));var sox=require(_0xa549('0x6'));var csv=require('to-csv');var ejs=require(_0xa549('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa549('0x8'));var squel=require(_0xa549('0x9'));var crypto=require('crypto');var jsforce=require(_0xa549('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa549('0xb'));var Redis=require(_0xa549('0xc'));var authService=require(_0xa549('0xd'));var qs=require(_0xa549('0xe'));var as=require(_0xa549('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa549('0x10'))('api');var utils=require(_0xa549('0x11'));var config=require(_0xa549('0x12'));var licenseUtil=require(_0xa549('0x13'));var db=require(_0xa549('0x14'))['db'];var csv_results;config[_0xa549('0x15')]=_[_0xa549('0x16')](config[_0xa549('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa549('0x15')]));require(_0xa549('0x17'))[_0xa549('0x18')](socket);function respondWithStatusCode(_0x31264e,_0x2b446a){_0x2b446a=_0x2b446a||0xcc;return function(_0x33bc69){if(_0x33bc69){return _0x31264e[_0xa549('0x19')](_0x2b446a);}return _0x31264e[_0xa549('0x1a')](_0x2b446a)[_0xa549('0x1b')]();};}function respondWithResult(_0x5d5e87,_0x273ad0){_0x273ad0=_0x273ad0||0xc8;return function(_0x30faa7){if(_0x30faa7){return _0x5d5e87[_0xa549('0x1a')](_0x273ad0)[_0xa549('0x1c')](_0x30faa7);}};}function respondWithFilteredResult(_0x1fc80f,_0x4f9b71){return function(_0x42f36f){if(_0x42f36f){var _0x283efe=typeof _0x4f9b71[_0xa549('0x1d')]===_0xa549('0x1e')&&typeof _0x4f9b71[_0xa549('0x1f')]===_0xa549('0x1e');var _0x468f36=_0x42f36f[_0xa549('0x20')];var _0x1692d9=_0x283efe?0x0:_0x4f9b71['offset'];var _0x4e9f77=_0x283efe?_0x42f36f['count']:_0x4f9b71[_0xa549('0x1d')]+_0x4f9b71[_0xa549('0x1f')];var _0x3644ca;if(_0x4e9f77>=_0x468f36){_0x4e9f77=_0x468f36;_0x3644ca=0xc8;}else{_0x3644ca=0xce;}_0x1fc80f['status'](_0x3644ca);return _0x1fc80f['set'](_0xa549('0x21'),_0x1692d9+'-'+_0x4e9f77+'/'+_0x468f36)[_0xa549('0x1c')](_0x42f36f);}return null;};}function patchUpdates(_0x244a38){return function(_0x544ea5){try{jsonpatch[_0xa549('0x22')](_0x544ea5,_0x244a38,!![]);}catch(_0x2acf39){return BPromise['reject'](_0x2acf39);}return _0x544ea5[_0xa549('0x23')]();};}function saveUpdates(_0x197adf,_0x25cba4){return function(_0x3bded2){if(_0x3bded2){return _0x3bded2[_0xa549('0x24')](_0x197adf)[_0xa549('0x25')](function(_0x1fe128){return _0x1fe128;});}return null;};}function removeEntity(_0x14ab30,_0x6a0f4a){return function(_0x57c2a3){if(_0x57c2a3){return _0x57c2a3[_0xa549('0x26')]()[_0xa549('0x25')](function(){var _0x22f1fd=_0x57c2a3[_0xa549('0x27')]({'plain':!![]});var _0x46165c=_0xa549('0x28');return db[_0xa549('0x29')][_0xa549('0x26')]({'where':{'type':_0x46165c,'resourceId':_0x22f1fd['id']}})[_0xa549('0x25')](function(){return _0x57c2a3;});})['then'](function(){_0x14ab30[_0xa549('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f8eb5,_0x5746c7){return function(_0x475d17){if(!_0x475d17){_0x4f8eb5['sendStatus'](0x194);}return _0x475d17;};}function handleError(_0x22a787,_0x1335b2){_0x1335b2=_0x1335b2||0x1f4;return function(_0x54c733){logger[_0xa549('0x2a')](_0x54c733[_0xa549('0x2b')]);if(_0x54c733[_0xa549('0x2c')]){delete _0x54c733[_0xa549('0x2c')];}_0x22a787[_0xa549('0x1a')](_0x1335b2)[_0xa549('0x2d')](_0x54c733);};}exports[_0xa549('0x2e')]=function(_0x43ee35,_0x4dc6f0){var _0x23d81e={},_0x1e1cd6={},_0xc01aca={'count':0x0,'rows':[]};var _0x9fcd0a=_[_0xa549('0x2f')](db[_0xa549('0x30')][_0xa549('0x31')],function(_0xfd8ca2){return{'name':_0xfd8ca2[_0xa549('0x32')],'type':_0xfd8ca2[_0xa549('0x33')][_0xa549('0x34')]};});_0x1e1cd6['model']=_[_0xa549('0x2f')](_0x9fcd0a,_0xa549('0x2c'));_0x1e1cd6[_0xa549('0x35')]=_[_0xa549('0x36')](_0x43ee35['query']);_0x1e1cd6[_0xa549('0x37')]=_['intersection'](_0x1e1cd6[_0xa549('0x38')],_0x1e1cd6[_0xa549('0x35')]);_0x23d81e[_0xa549('0x39')]=_[_0xa549('0x3a')](_0x1e1cd6[_0xa549('0x38')],qs[_0xa549('0x3b')](_0x43ee35[_0xa549('0x35')][_0xa549('0x3b')]));_0x23d81e['attributes']=_0x23d81e[_0xa549('0x39')][_0xa549('0x3c')]?_0x23d81e['attributes']:_0x1e1cd6[_0xa549('0x38')];if(!_0x43ee35['query']['hasOwnProperty'](_0xa549('0x3d'))){_0x23d81e[_0xa549('0x1f')]=qs[_0xa549('0x1f')](_0x43ee35[_0xa549('0x35')]['limit']);_0x23d81e['offset']=qs[_0xa549('0x1d')](_0x43ee35[_0xa549('0x35')][_0xa549('0x1d')]);}_0x23d81e[_0xa549('0x3e')]=qs[_0xa549('0x3f')](_0x43ee35[_0xa549('0x35')][_0xa549('0x3f')]);_0x23d81e['where']=qs[_0xa549('0x37')](_[_0xa549('0x40')](_0x43ee35[_0xa549('0x35')],_0x1e1cd6['filters']),_0x9fcd0a);if(_0x43ee35[_0xa549('0x35')][_0xa549('0x41')]){_0x23d81e[_0xa549('0x42')]=_[_0xa549('0x43')](_0x23d81e['where'],{'$or':_[_0xa549('0x2f')](_0x9fcd0a,function(_0x19ba82){if(_0x19ba82[_0xa549('0x33')]!==_0xa549('0x44')){var _0x8f70d={};_0x8f70d[_0x19ba82[_0xa549('0x2c')]]={'$like':'%'+_0x43ee35['query'][_0xa549('0x41')]+'%'};return _0x8f70d;}})});}_0x23d81e=_[_0xa549('0x43')]({},_0x23d81e,_0x43ee35[_0xa549('0x45')]);var _0x2d4753={'where':_0x23d81e[_0xa549('0x42')]};return db['CmList'][_0xa549('0x20')](_0x2d4753)[_0xa549('0x25')](function(_0x211f83){_0xc01aca[_0xa549('0x20')]=_0x211f83;if(_0x43ee35['query'][_0xa549('0x46')]){_0x23d81e[_0xa549('0x47')]=[{'all':!![]}];}return db[_0xa549('0x30')]['findAll'](_0x23d81e);})[_0xa549('0x25')](function(_0x3b3bff){_0xc01aca['rows']=_0x3b3bff;return _0xc01aca;})['then'](respondWithFilteredResult(_0x4dc6f0,_0x23d81e))[_0xa549('0x48')](handleError(_0x4dc6f0,null));};exports[_0xa549('0x49')]=function(_0x4987d4,_0x549b45){var _0x2a83a9={'raw':![],'where':{'id':_0x4987d4[_0xa549('0x4a')]['id']}},_0x7dd30={};_0x7dd30[_0xa549('0x38')]=_['keys'](db['CmList'][_0xa549('0x31')]);_0x7dd30[_0xa549('0x35')]=_[_0xa549('0x36')](_0x4987d4['query']);_0x7dd30[_0xa549('0x37')]=_['intersection'](_0x7dd30[_0xa549('0x38')],_0x7dd30[_0xa549('0x35')]);_0x2a83a9[_0xa549('0x39')]=_[_0xa549('0x3a')](_0x7dd30[_0xa549('0x38')],qs[_0xa549('0x3b')](_0x4987d4[_0xa549('0x35')]['fields']));_0x2a83a9[_0xa549('0x39')]=_0x2a83a9[_0xa549('0x39')][_0xa549('0x3c')]?_0x2a83a9[_0xa549('0x39')]:_0x7dd30[_0xa549('0x38')];if(_0x4987d4[_0xa549('0x35')]['includeAll']){_0x2a83a9[_0xa549('0x47')]=[{'all':!![]}];}_0x2a83a9=_[_0xa549('0x43')]({},_0x2a83a9,_0x4987d4[_0xa549('0x45')]);return db['CmList'][_0xa549('0x4b')](_0x2a83a9)['then'](handleEntityNotFound(_0x549b45,null))[_0xa549('0x25')](respondWithResult(_0x549b45,null))[_0xa549('0x48')](handleError(_0x549b45,null));};exports[_0xa549('0x4c')]=function(_0x161a20,_0x5bb164){return db[_0xa549('0x30')][_0xa549('0x4c')](_0x161a20[_0xa549('0x4d')],{})[_0xa549('0x25')](function(_0x16a67c){var _0x379741=_0x161a20[_0xa549('0x4e')]['get']({'plain':!![]});if(!_0x379741)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x379741[_0xa549('0x4f')]==='user'){var _0x13aa4a=_0x16a67c[_0xa549('0x27')]({'plain':!![]});var _0x2f19aa='Lists';return db[_0xa549('0x50')][_0xa549('0x4b')]({'where':{'name':_0x2f19aa,'userProfileId':_0x379741[_0xa549('0x51')]},'raw':!![]})[_0xa549('0x25')](function(_0x3afd19){if(_0x3afd19&&_0x3afd19[_0xa549('0x52')]===0x0){return db[_0xa549('0x29')][_0xa549('0x4c')]({'name':_0x13aa4a[_0xa549('0x2c')],'resourceId':_0x13aa4a['id'],'type':_0x3afd19[_0xa549('0x2c')],'sectionId':_0x3afd19['id']},{})[_0xa549('0x25')](function(){return _0x16a67c;});}else{return _0x16a67c;}})[_0xa549('0x48')](function(_0x4c9eed){logger[_0xa549('0x2a')](_0xa549('0x53'),_0x4c9eed);throw _0x4c9eed;});}return _0x16a67c;})[_0xa549('0x25')](respondWithResult(_0x5bb164,0xc9))[_0xa549('0x48')](handleError(_0x5bb164,null));};exports[_0xa549('0x24')]=function(_0x539723,_0x279aad){if(_0x539723[_0xa549('0x4d')]['id']){delete _0x539723[_0xa549('0x4d')]['id'];}return db[_0xa549('0x30')][_0xa549('0x4b')]({'where':{'id':_0x539723[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x279aad,null))[_0xa549('0x25')](saveUpdates(_0x539723[_0xa549('0x4d')],null))[_0xa549('0x25')](respondWithResult(_0x279aad,null))['catch'](handleError(_0x279aad,null));};exports[_0xa549('0x26')]=function(_0x5bae3c,_0x2c39bc){return db[_0xa549('0x30')][_0xa549('0x4b')]({'where':{'id':_0x5bae3c[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x2c39bc,null))[_0xa549('0x25')](removeEntity(_0x2c39bc,null))[_0xa549('0x48')](handleError(_0x2c39bc,null));};exports[_0xa549('0x54')]=function(_0x228405,_0x4b98a7){return db[_0xa549('0x30')][_0xa549('0x54')]()[_0xa549('0x25')](respondWithResult(_0x4b98a7,null))[_0xa549('0x48')](handleError(_0x4b98a7,null));};exports[_0xa549('0x55')]=function(_0x4b257b,_0x3c075d,_0x25b2d2){if(_0x4b257b[_0xa549('0x4d')]['id']){delete _0x4b257b[_0xa549('0x4d')]['id'];}return db[_0xa549('0x30')]['find']({'where':{'id':_0x4b257b[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x3c075d,null))[_0xa549('0x25')](function(_0x4655a8){if(_0x4655a8){_0x4b257b[_0xa549('0x4d')][_0xa549('0x56')]=_0x4655a8['id'];return db[_0xa549('0x57')][_0xa549('0x4c')](_0x4b257b[_0xa549('0x4d')]);}})[_0xa549('0x25')](respondWithResult(_0x3c075d,null))[_0xa549('0x48')](handleError(_0x3c075d,null));};exports['getDispositions']=function(_0x21714b,_0x2fbe75,_0x2e6553){var _0x37d28c={'raw':![],'where':{}};var _0x2e4a3c={};var _0x8bd33b={'count':0x0,'rows':[]};return db[_0xa549('0x30')][_0xa549('0x58')]({'where':{'id':_0x21714b[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x2fbe75,null))[_0xa549('0x25')](function(_0x35dffe){if(_0x35dffe){_0x2e4a3c['model']=_[_0xa549('0x36')](db[_0xa549('0x57')][_0xa549('0x31')]);_0x2e4a3c[_0xa549('0x35')]=_['keys'](_0x21714b[_0xa549('0x35')]);_0x2e4a3c['filters']=_[_0xa549('0x3a')](_0x2e4a3c[_0xa549('0x38')],_0x2e4a3c['query']);_0x37d28c[_0xa549('0x39')]=_[_0xa549('0x3a')](_0x2e4a3c[_0xa549('0x38')],qs[_0xa549('0x3b')](_0x21714b[_0xa549('0x35')][_0xa549('0x3b')]));_0x37d28c[_0xa549('0x39')]=_0x37d28c['attributes']['length']?_0x37d28c['attributes']:_0x2e4a3c['model'];if(!_0x21714b[_0xa549('0x35')][_0xa549('0x59')](_0xa549('0x3d'))){_0x37d28c[_0xa549('0x1f')]=qs['limit'](_0x21714b['query']['limit']);_0x37d28c[_0xa549('0x1d')]=qs[_0xa549('0x1d')](_0x21714b[_0xa549('0x35')][_0xa549('0x1d')]);}_0x37d28c[_0xa549('0x3e')]=qs['sort'](_0x21714b[_0xa549('0x35')][_0xa549('0x3f')]);_0x37d28c[_0xa549('0x42')]=qs['filters'](_[_0xa549('0x40')](_0x21714b[_0xa549('0x35')],_0x2e4a3c[_0xa549('0x37')]));_0x37d28c[_0xa549('0x42')]['ListId']=_0x35dffe['id'];if(_0x21714b[_0xa549('0x35')][_0xa549('0x41')]){_0x37d28c[_0xa549('0x42')]=_[_0xa549('0x43')](_0x37d28c['where'],{'$or':_['map'](_0x37d28c[_0xa549('0x39')],function(_0x1ae517){var _0x1efb50={};_0x1efb50[_0x1ae517]={'$like':'%'+_0x21714b[_0xa549('0x35')][_0xa549('0x41')]+'%'};return _0x1efb50;})});}_0x37d28c=_[_0xa549('0x43')]({},_0x37d28c,_0x21714b[_0xa549('0x45')]);return db['Disposition'][_0xa549('0x20')]({'where':_0x37d28c['where']})['then'](function(_0x3d0e08){_0x8bd33b[_0xa549('0x20')]=_0x3d0e08;if(_0x21714b['query'][_0xa549('0x46')]){_0x37d28c['include']=[{'all':!![]}];}return db['Disposition'][_0xa549('0x5a')](_0x37d28c);})[_0xa549('0x25')](function(_0x31ade6){_0x8bd33b[_0xa549('0x5b')]=_0x31ade6;return _0x8bd33b;});}})['then'](respondWithFilteredResult(_0x2fbe75,_0x37d28c))['catch'](handleError(_0x2fbe75,null));};exports[_0xa549('0x5c')]=function(_0x3f977d,_0x57ca1a,_0x526f55){return db[_0xa549('0x30')]['find']({'where':{'id':_0x3f977d['params']['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x57ca1a,null))[_0xa549('0x25')](function(_0x27f460){if(_0x27f460){return _0x27f460[_0xa549('0x5c')](_0x3f977d['query'][_0xa549('0x5d')]);}})['then'](respondWithStatusCode(_0x57ca1a,null))[_0xa549('0x48')](handleError(_0x57ca1a,null));};exports['addContacts']=function(_0x282796,_0x864c0,_0x7d2032){return db[_0xa549('0x30')]['find']({'where':{'id':_0x282796[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x864c0,null))[_0xa549('0x25')](function(_0x5a8fa7){if(_0x5a8fa7){var _0x4f2f66=[];var _0x7dd4ab={'success':[],'errors':[]};return db['CmContact'][_0xa549('0x54')]()[_0xa549('0x25')](function(_0x3b7aac){if(_0x282796[_0xa549('0x4d')][_0xa549('0x5e')]&&_['isArray'](_0x282796[_0xa549('0x4d')]['tags'])){if(_0x282796[_0xa549('0x4d')][_0xa549('0x5e')][_0xa549('0x3c')]){_0x282796[_0xa549('0x4d')][_0xa549('0x5e')]=_0x282796['body'][_0xa549('0x5e')][_0xa549('0x5f')](';')+';';}else{_0x282796[_0xa549('0x4d')][_0xa549('0x5e')]=null;}}else{_0x282796['body']['tags']=null;}if(_0x282796[_0xa549('0x4d')]&&_[_0xa549('0x60')](_0x282796[_0xa549('0x4d')])){for(var _0xed009c=0x0;_0xed009c<_0x282796[_0xa549('0x4d')][_0xa549('0x3c')];_0xed009c+=0x1){_0x282796['body'][_0xed009c]['ListId']=_0x282796[_0xa549('0x4a')]['id'];_0x4f2f66[_0xa549('0x61')](_0x282796['body'][_0xed009c]);}return BPromise['each'](_0x4f2f66,function(_0x54634e){return db[_0xa549('0x62')][_0xa549('0x4c')](_[_0xa549('0x63')](_0x54634e,['ids','id'])||{},{'fields':_[_0xa549('0x36')](_0x3b7aac),'raw':!![]})[_0xa549('0x25')](function(_0x5c0067){_0x7dd4ab[_0xa549('0x64')][_0xa549('0x61')](_0x5c0067['dataValues']);})['catch'](function(_0x3cb475){_0x7dd4ab[_0xa549('0x65')][_0xa549('0x61')]({'data':_0x54634e,'error':_0x3cb475[_0xa549('0x66')]});});})[_0xa549('0x25')](function(_0x5a4033){return _0x7dd4ab;})[_0xa549('0x48')](function(_0x425e35){return _0x425e35;});}else{_0x864c0[_0xa549('0x1a')](0x190)['json']({'message':_0xa549('0x67')});}});}})[_0xa549('0x25')](respondWithResult(_0x864c0,null))[_0xa549('0x48')](handleError(_0x864c0,null));};exports[_0xa549('0x68')]=function(_0x1e9663,_0x3c7d71,_0x4d37de){var _0x423032;return db['CmList'][_0xa549('0x4b')]({'where':{'id':_0x1e9663[_0xa549('0x4a')]['id']},'include':[{'model':db[_0xa549('0x69')],'as':'CustomFields'}]})['then'](handleEntityNotFound(_0x3c7d71,null))[_0xa549('0x25')](function(_0x50792d){if(_0x50792d){_0x423032=_0x50792d;return db[_0xa549('0x62')][_0xa549('0x31')];}})[_0xa549('0x25')](function(_0x1a51af){if(_0x1a51af){var _0x44ebe8={};var _0x24403f={};_0x24403f[_0xa549('0x38')]=_[_0xa549('0x6a')](_['keys'](_0x1a51af),_[_0xa549('0x2f')](_0x423032['CustomFields'],function(_0x49c79a){return util[_0xa549('0x6b')](_0xa549('0x6c'),_0x49c79a['id']);}));_0x24403f[_0xa549('0x35')]=_[_0xa549('0x36')](_0x1e9663[_0xa549('0x35')]);_0x24403f[_0xa549('0x37')]=_['intersection'](_0x24403f[_0xa549('0x38')],_0x24403f[_0xa549('0x35')]);_0x44ebe8[_0xa549('0x39')]=_[_0xa549('0x3a')](_0x24403f['model'],qs[_0xa549('0x3b')](_0x1e9663[_0xa549('0x35')]['fields']));_0x44ebe8[_0xa549('0x39')]=_0x44ebe8[_0xa549('0x39')][_0xa549('0x3c')]?_0x44ebe8[_0xa549('0x39')]:_0x24403f[_0xa549('0x38')];if(!_0x1e9663[_0xa549('0x35')]['hasOwnProperty'](_0xa549('0x3d'))){_0x44ebe8[_0xa549('0x1f')]=qs[_0xa549('0x1f')](_0x1e9663['query'][_0xa549('0x1f')]);_0x44ebe8['offset']=qs[_0xa549('0x1d')](_0x1e9663['query'][_0xa549('0x1d')]);}_0x44ebe8[_0xa549('0x3e')]=qs[_0xa549('0x3f')](_0x1e9663['query'][_0xa549('0x3f')]);_0x44ebe8[_0xa549('0x42')]=qs[_0xa549('0x37')](_[_0xa549('0x40')](_0x1e9663[_0xa549('0x35')],_0x24403f[_0xa549('0x37')]));_0x44ebe8[_0xa549('0x6d')]=!![];if(_0x1e9663[_0xa549('0x35')]['filter']){_0x44ebe8[_0xa549('0x42')]=_[_0xa549('0x43')](_0x44ebe8[_0xa549('0x42')],{'$or':_['map'](_0x44ebe8['attributes'],function(_0x55b97d){var _0x4df634={};_0x4df634[_0x55b97d]={'$like':'%'+_0x1e9663[_0xa549('0x35')][_0xa549('0x41')]+'%'};return _0x4df634;})});}_0x44ebe8=_['merge']({},_0x44ebe8,_0x1e9663[_0xa549('0x45')]);return _0x423032[_0xa549('0x68')](_0x44ebe8);}})[_0xa549('0x25')](respondWithResult(_0x3c7d71,null))['catch'](handleError(_0x3c7d71,null));};exports['getContactsCsv']=function(_0x20af6f,_0x2c0d42,_0x5bc8f1){var _0x52c1f9;var _0x2ab3af;var _0x555780;var _0x280c68=_0x20af6f[_0xa549('0x4a')]['id'];csv_results=[];return db['ContactItemType'][_0xa549('0x5a')]({'attributes':['id',_0xa549('0x2c')],'raw':!![],'order':['OrderBy']})[_0xa549('0x25')](function(_0x3c2f15){_0x52c1f9=_0x3c2f15;var _0x3d65b0=_[_0xa549('0x36')](db['CmContact'][_0xa549('0x31')]);return db[_0xa549('0x69')]['findAll']({'raw':!![],'attributes':['id',_0xa549('0x6e')]})['then'](function(_0x52f474){_0x2ab3af=_0x52f474;var _0x12c54b=squel['select']()[_0xa549('0x3b')](_0x3d65b0)[_0xa549('0x6f')](_0xa549('0x70'),'c')['where'](_0xa549('0x71'),_0x280c68)[_0xa549('0x42')](_0xa549('0x72'))[_0xa549('0x73')]();for(var _0x4d54eb=0x0;_0x4d54eb<_0x2ab3af[_0xa549('0x3c')];_0x4d54eb++){_0x12c54b[_0xa549('0x74')]('c.cf_'+_0x2ab3af[_0x4d54eb]['id'],_0xa549('0x75')+_0x2ab3af[_0x4d54eb][_0xa549('0x6e')]);}for(var _0x4d54eb=0x0;_0x4d54eb<_0x52c1f9[_0xa549('0x3c')];_0x4d54eb++){_0x12c54b[_0xa549('0x74')](squel[_0xa549('0x76')]()[_0xa549('0x74')](_0xa549('0x77'))['from']('cm_contact_has_items')['where'](_0xa549('0x78'),_0x52c1f9[_0x4d54eb]['id'])[_0xa549('0x42')](_0xa549('0x79')),_0xa549('0x7a')+_0x52c1f9[_0x4d54eb][_0xa549('0x2c')]);_0x12c54b['field'](squel[_0xa549('0x76')]()[_0xa549('0x74')](_0xa549('0x7b'))['from'](_0xa549('0x7c'))[_0xa549('0x42')](_0xa549('0x78'),_0x52c1f9[_0x4d54eb]['id'])[_0xa549('0x42')](_0xa549('0x79')),_0xa549('0x7d')+_0x52c1f9[_0x4d54eb]['name']);}var _0x924537=[];_0x924537[_0xa549('0x61')](_0x12c54b[_0xa549('0x7e')]());BPromise[_0xa549('0x7f')](_0x924537,handleQuery)[_0xa549('0x25')](function(_0x30fcde){handleQuery(_0x12c54b[_0xa549('0x7e')]());var _0x2427d7=csv_results[0x0];if(!_[_0xa549('0x80')](_0x2427d7)){var _0x488124=toCsv(_0x2427d7);var _0x14fbec=Date[_0xa549('0x81')]();fs[_0xa549('0x82')](util[_0xa549('0x6b')](_0xa549('0x83'),_0x280c68,_0x14fbec),_0x488124);_0x2c0d42[_0xa549('0x84')](_0xa549('0x85'),_0xa549('0x86')+util[_0xa549('0x6b')](_0xa549('0x87'),_0x280c68,_0x14fbec));_0x2c0d42[_0xa549('0x84')](_0xa549('0x88'),_0xa549('0x89'));return _0x2c0d42[_0xa549('0x8a')](util['format'](_0xa549('0x83'),_0x280c68,_0x14fbec));}else{return _0x2c0d42[_0xa549('0x19')](0xcc);}});});});};exports[_0xa549('0x8b')]=function(_0x1c7168,_0x4eda49,_0x5770cc){var _0x24f101;delete _0x1c7168['body']['id'];return db[_0xa549('0x30')][_0xa549('0x58')]({'where':{'id':_0x1c7168[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x4eda49,null))[_0xa549('0x25')](function(_0x30ae67){if(_0x30ae67){return db[_0xa549('0x8c')][_0xa549('0x8d')](function(_0x136900){return db[_0xa549('0x69')]['create'](_0x1c7168[_0xa549('0x4d')],{'transaction':_0x136900})[_0xa549('0x25')](function(_0x1c257b){_0x24f101=_0x1c257b;return _0x30ae67[_0xa549('0x8e')](_0x1c257b,{'transaction':_0x136900});})[_0xa549('0x25')](function(){var _0x35fd6c={'type':db['Sequelize'][_0xa549('0x8f')],'transaction':_0x136900};switch(_0x1c7168['body'][_0xa549('0x33')]){case _0xa549('0x90'):_0x35fd6c[_0xa549('0x33')]=db['Sequelize']['TEXT'];break;case _0xa549('0x91'):_0x35fd6c[_0xa549('0x33')]=db['Sequelize'][_0xa549('0x92')];break;case'switch':_0x35fd6c[_0xa549('0x33')]=db[_0xa549('0x93')][_0xa549('0x94')];_0x35fd6c[_0xa549('0x95')]=![];break;default:}return db[_0xa549('0x8c')][_0xa549('0x96')][_0xa549('0x97')](_0xa549('0x70'),util['format'](_0xa549('0x98'),_0x24f101['id']),_0x35fd6c);})[_0xa549('0x25')](function(){return _0x24f101;});});}})[_0xa549('0x25')](respondWithResult(_0x4eda49,null))['catch'](handleError(_0x4eda49,null));};exports['getCustomFields']=function(_0x2ef381,_0x4d8fe5,_0x98dd18){var _0x15a028={};var _0x32e825={};var _0x4d8337;var _0x401cf0;return db['CmList'][_0xa549('0x58')]({'where':{'id':_0x2ef381[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x4d8fe5,null))['then'](function(_0x5c8859){if(_0x5c8859){_0x4d8337=_0x5c8859;_0x32e825[_0xa549('0x38')]=_['keys'](db[_0xa549('0x69')]['rawAttributes']);_0x32e825['query']=_[_0xa549('0x36')](_0x2ef381[_0xa549('0x35')]);_0x32e825[_0xa549('0x37')]=_[_0xa549('0x3a')](_0x32e825[_0xa549('0x38')],_0x32e825[_0xa549('0x35')]);_0x15a028[_0xa549('0x39')]=_[_0xa549('0x3a')](_0x32e825[_0xa549('0x38')],qs[_0xa549('0x3b')](_0x2ef381[_0xa549('0x35')]['fields']));_0x15a028[_0xa549('0x39')]=_0x15a028[_0xa549('0x39')][_0xa549('0x3c')]?_0x15a028[_0xa549('0x39')]:_0x32e825[_0xa549('0x38')];_0x15a028[_0xa549('0x3e')]=qs['sort'](_0x2ef381['query']['sort']);_0x15a028[_0xa549('0x42')]=qs['filters'](_[_0xa549('0x40')](_0x2ef381[_0xa549('0x35')],_0x32e825[_0xa549('0x37')]));_0x15a028[_0xa549('0x42')]=_[_0xa549('0x43')](_0x15a028[_0xa549('0x42')],{'$or':[{'ListId':_0x5c8859['id']},{'ListId':null}]});if(_0x2ef381[_0xa549('0x35')][_0xa549('0x41')]){_0x15a028['where']=_[_0xa549('0x43')](_0x15a028[_0xa549('0x42')],{'$or':_[_0xa549('0x2f')](_0x15a028[_0xa549('0x39')],function(_0x355423){var _0xc78239={};_0xc78239[_0x355423]={'$like':'%'+_0x2ef381[_0xa549('0x35')][_0xa549('0x41')]+'%'};return _0xc78239;})});}_0x15a028=_[_0xa549('0x43')]({},_0x15a028,_0x2ef381[_0xa549('0x45')]);return db['CmCustomField'][_0xa549('0x99')](_0x15a028);}})[_0xa549('0x25')](respondWithResult(_0x4d8fe5,null))[_0xa549('0x48')](handleError(_0x4d8fe5,null));};exports[_0xa549('0x9a')]=function(_0x4e1a9f,_0x41ebb2){return db[_0xa549('0x69')][_0xa549('0x99')]({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x41ebb2,null))[_0xa549('0x25')](function(_0x3d9eb7){return _0x3d9eb7;})[_0xa549('0x25')](respondWithResult(_0x41ebb2,null))[_0xa549('0x48')](handleError(_0x41ebb2,null));};exports[_0xa549('0x9b')]=function(_0xeaa11b,_0x1cea41,_0x32f766){return db[_0xa549('0x30')][_0xa549('0x4b')]({'where':{'id':_0xeaa11b[_0xa549('0x4a')]['id']}})[_0xa549('0x25')](handleEntityNotFound(_0x1cea41,null))[_0xa549('0x25')](function(_0x4254ea){if(_0x4254ea){return _0x4254ea[_0xa549('0x9b')](_0xeaa11b['body'][_0xa549('0x5d')],_[_0xa549('0x63')](_0xeaa11b['body'],[_0xa549('0x5d'),'id'])||{})['spread'](function(_0x2328f5){for(var _0x24078b=0x0;_0x24078b<_0xeaa11b['body'][_0xa549('0x5d')][_0xa549('0x3c')];_0x24078b+=0x1){socket[_0xa549('0x9c')](_0xa549('0x9d'),{'UserId':Number(_0xeaa11b[_0xa549('0x4d')][_0xa549('0x5d')][_0x24078b]),'CmListId':Number(_0xeaa11b[_0xa549('0x4a')]['id'])});}return _0x2328f5;});}})[_0xa549('0x25')](respondWithResult(_0x1cea41,null))[_0xa549('0x48')](handleError(_0x1cea41,null));};exports[_0xa549('0x9e')]=function(_0x2b4a7c,_0xba0d6b,_0x88df8b){return db['CmList'][_0xa549('0x4b')]({'where':{'id':_0x2b4a7c['params']['id']}})['then'](handleEntityNotFound(_0xba0d6b,null))[_0xa549('0x25')](function(_0x230fd7){if(_0x230fd7){return _0x230fd7[_0xa549('0x9e')](_0x2b4a7c[_0xa549('0x35')]['ids'])['then'](function(){if(_['isArray'](_0x2b4a7c[_0xa549('0x35')][_0xa549('0x5d')])){for(var _0x2ef510=0x0;_0x2ef510<_0x2b4a7c[_0xa549('0x35')]['ids']['length'];_0x2ef510+=0x1){socket['emit'](_0xa549('0x9f'),{'UserId':Number(_0x2b4a7c[_0xa549('0x35')]['ids'][_0x2ef510]),'CmListId':Number(_0x2b4a7c[_0xa549('0x4a')]['id'])});}}else{socket[_0xa549('0x9c')]('userCmList:remove',{'UserId':Number(_0x2b4a7c['query'][_0xa549('0x5d')]),'CmListId':Number(_0x2b4a7c[_0xa549('0x4a')]['id'])});}});}})[_0xa549('0x25')](respondWithStatusCode(_0xba0d6b,null))[_0xa549('0x48')](handleError(_0xba0d6b,null));};exports['getAgents']=function(_0x59e691,_0x3f744c,_0x10953a){var _0x39f930={};var _0xa9fdb1={};var _0x1b3a92;var _0x37104c;return db[_0xa549('0x30')]['findOne']({'where':{'id':_0x59e691['params']['id']}})['then'](handleEntityNotFound(_0x3f744c,null))['then'](function(_0x4362e9){if(_0x4362e9){_0x1b3a92=_0x4362e9;_0xa9fdb1[_0xa549('0x38')]=_[_0xa549('0x36')](db[_0xa549('0xa0')][_0xa549('0x31')]);_0xa9fdb1[_0xa549('0x35')]=_[_0xa549('0x36')](_0x59e691[_0xa549('0x35')]);_0xa9fdb1['filters']=_[_0xa549('0x3a')](_0xa9fdb1[_0xa549('0x38')],_0xa9fdb1['query']);_0x39f930[_0xa549('0x39')]=_[_0xa549('0x3a')](_0xa9fdb1['model'],qs[_0xa549('0x3b')](_0x59e691['query'][_0xa549('0x3b')]));_0x39f930[_0xa549('0x39')]=_0x39f930['attributes'][_0xa549('0x3c')]?_0x39f930[_0xa549('0x39')]:_0xa9fdb1[_0xa549('0x38')];_0x39f930['order']=qs['sort'](_0x59e691[_0xa549('0x35')][_0xa549('0x3f')]);_0x39f930[_0xa549('0x42')]=qs[_0xa549('0x37')](_[_0xa549('0x40')](_0x59e691[_0xa549('0x35')],_0xa9fdb1['filters']));if(_0x59e691[_0xa549('0x35')][_0xa549('0x41')]){_0x39f930['where']=_['merge'](_0x39f930[_0xa549('0x42')],{'$or':_['map'](_0x39f930[_0xa549('0x39')],function(_0x13d1db){var _0x132eb0={};_0x132eb0[_0x13d1db]={'$like':'%'+_0x59e691['query'][_0xa549('0x41')]+'%'};return _0x132eb0;})});}_0x39f930=_[_0xa549('0x43')]({},_0x39f930,_0x59e691['options']);return _0x1b3a92['getAgents'](_0x39f930);}})[_0xa549('0x25')](function(_0x118a47){if(_0x118a47){_0x37104c=_0x118a47[_0xa549('0x3c')];if(!_0x59e691['query'][_0xa549('0x59')](_0xa549('0x3d'))){_0x39f930[_0xa549('0x1f')]=qs['limit'](_0x59e691[_0xa549('0x35')]['limit']);_0x39f930[_0xa549('0x1d')]=qs[_0xa549('0x1d')](_0x59e691[_0xa549('0x35')]['offset']);}return _0x1b3a92['getAgents'](_0x39f930);}})['then'](function(_0x57057c){if(_0x57057c){return _0x57057c?{'count':_0x37104c,'rows':_0x57057c}:null;}})[_0xa549('0x25')](respondWithResult(_0x3f744c,null))[_0xa549('0x48')](handleError(_0x3f744c,null));};function handleQuery(_0x13c409){logger[_0xa549('0xa1')](_0x13c409);return db['sequelize']['query'](_0x13c409)[_0xa549('0xa2')](function(_0x2c3b38){csv_results[_0xa549('0x61')](_0x2c3b38);})['catch'](function(_0x109c10){logger[_0xa549('0x2a')](_0x109c10['message']);});}
\ No newline at end of file
index 587d46c..228347c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['hasOwnProperty','hook','exports','events','../../mysqldb','save','update','emit'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe14b,0x93));var _0xbe14=function(_0x4e905a,_0x54b7b4){_0x4e905a=_0x4e905a-0x0;var _0x617c31=_0xe14b[_0x4e905a];return _0x617c31;};'use strict';var EventEmitter=require(_0xbe14('0x0'));var CmList=require(_0xbe14('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbe14('0x2'),'afterUpdate':_0xbe14('0x3'),'afterDestroy':'remove'};function emitEvent(_0x7d3665){return function(_0x5ce8fb,_0x496c04,_0x1833e3){CmListEvents[_0xbe14('0x4')](_0x7d3665+':'+_0x5ce8fb['id'],_0x5ce8fb);CmListEvents[_0xbe14('0x4')](_0x7d3665,_0x5ce8fb);_0x1833e3(null);};}for(var e in events){if(events[_0xbe14('0x5')](e)){var event=events[e];CmList[_0xbe14('0x6')](e,emitEvent(event));}}module[_0xbe14('0x7')]=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x5fc3[_0x3d42d8];return _0x27fc41;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index e3e0997..2f66f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750a=['path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','util','moment','bluebird','request-promise'];(function(_0x2b0f7e,_0x4a1843){var _0x38137e=function(_0x50af0c){while(--_0x50af0c){_0x2b0f7e['push'](_0x2b0f7e['shift']());}};_0x38137e(++_0x4a1843);}(_0x750a,0x140));var _0xa750=function(_0x35a6da,_0x2e43df){_0x35a6da=_0x35a6da-0x0;var _0x5119e6=_0x750a[_0x35a6da];return _0x5119e6;};'use strict';var _=require('lodash');var util=require(_0xa750('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa750('0x1'));var BPromise=require(_0xa750('0x2'));var rp=require(_0xa750('0x3'));var fs=require('fs');var path=require(_0xa750('0x4'));var rimraf=require(_0xa750('0x5'));var config=require(_0xa750('0x6'));var attributes=require(_0xa750('0x7'));module[_0xa750('0x8')]=function(_0x10b4d9,_0x2497df){return _0x10b4d9[_0xa750('0x9')](_0xa750('0xa'),attributes,{'tableName':_0xa750('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa75b=['request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','lodash','api','moment','bluebird'];(function(_0x1895b7,_0x21fbc7){var _0x1aecdc=function(_0x44682a){while(--_0x44682a){_0x1895b7['push'](_0x1895b7['shift']());}};_0x1aecdc(++_0x21fbc7);}(_0xa75b,0x170));var _0xba75=function(_0x36fd93,_0x4d1ffa){_0x36fd93=_0x36fd93-0x0;var _0x3c7d38=_0xa75b[_0x36fd93];return _0x3c7d38;};'use strict';var _=require(_0xba75('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xba75('0x1'));var moment=require(_0xba75('0x2'));var BPromise=require(_0xba75('0x3'));var rp=require(_0xba75('0x4'));var fs=require('fs');var path=require(_0xba75('0x5'));var rimraf=require(_0xba75('0x6'));var config=require(_0xba75('0x7'));var attributes=require(_0xba75('0x8'));module[_0xba75('0x9')]=function(_0x41afc9,_0x2baa28){return _0x41afc9[_0xba75('0xa')](_0xba75('0xb'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d0f59a..cb40e91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d16=['info','debug','stringify','error','code','CmList,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./cmList.socket','register','request','then'];(function(_0x59a0e4,_0x492f2c){var _0x64e2f9=function(_0x42df1e){while(--_0x42df1e){_0x59a0e4['push'](_0x59a0e4['shift']());}};_0x64e2f9(++_0x492f2c);}(_0x1d16,0x128));var _0x61d1=function(_0x20a005,_0x3267c4){_0x20a005=_0x20a005-0x0;var _0x318723=_0x1d16[_0x20a005];return _0x318723;};'use strict';var _=require(_0x61d1('0x0'));var util=require(_0x61d1('0x1'));var moment=require('moment');var BPromise=require(_0x61d1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x61d1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x61d1('0x4'));var logger=require('../../config/logger')(_0x61d1('0x5'));var config=require(_0x61d1('0x6'));var jayson=require(_0x61d1('0x7'));var client=jayson[_0x61d1('0x8')][_0x61d1('0x9')]({'port':0x232a});config[_0x61d1('0xa')]=_[_0x61d1('0xb')](config[_0x61d1('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x61d1('0xc'))[_0x61d1('0xd')](socket);function respondWithRpcPromise(_0x4bbce0,_0x220cbd,_0x9678e8){return new BPromise(function(_0x185fb7,_0x33f62e){return client[_0x61d1('0xe')](_0x4bbce0,_0x9678e8)[_0x61d1('0xf')](function(_0xb22f7b){logger[_0x61d1('0x10')]('CmList,\x20%s,\x20%s',_0x220cbd,'request\x20sent');logger[_0x61d1('0x11')]('CmList,\x20%s,\x20%s,\x20%s',_0x220cbd,'request\x20sent',JSON[_0x61d1('0x12')](_0xb22f7b));if(_0xb22f7b['error']){if(_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x14')]===0x1f4){logger[_0x61d1('0x13')](_0x61d1('0x15'),_0x220cbd,_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x16')]);return _0x33f62e(_0xb22f7b[_0x61d1('0x13')]['message']);}logger[_0x61d1('0x13')](_0x61d1('0x15'),_0x220cbd,_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x16')]);return _0x185fb7(_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x16')]);}else{logger[_0x61d1('0x10')](_0x61d1('0x15'),_0x220cbd,_0x61d1('0x17'));_0x185fb7(_0xb22f7b[_0x61d1('0x18')][_0x61d1('0x16')]);}})[_0x61d1('0x19')](function(_0x231a46){logger[_0x61d1('0x13')]('CmList,\x20%s,\x20%s',_0x220cbd,_0x231a46);_0x33f62e(_0x231a46);});});}
\ No newline at end of file
+var _0x0964=['request','then','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register'];(function(_0x4384ea,_0x3810c6){var _0x5c4aae=function(_0x2d3fac){while(--_0x2d3fac){_0x4384ea['push'](_0x4384ea['shift']());}};_0x5c4aae(++_0x3810c6);}(_0x0964,0x138));var _0x4096=function(_0x476bf4,_0x2a3755){_0x476bf4=_0x476bf4-0x0;var _0x788ffe=_0x0964[_0x476bf4];return _0x788ffe;};'use strict';var _=require(_0x4096('0x0'));var util=require(_0x4096('0x1'));var moment=require(_0x4096('0x2'));var BPromise=require(_0x4096('0x3'));var rs=require(_0x4096('0x4'));var fs=require('fs');var Redis=require(_0x4096('0x5'));var db=require(_0x4096('0x6'))['db'];var utils=require(_0x4096('0x7'));var logger=require('../../config/logger')(_0x4096('0x8'));var config=require(_0x4096('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4096('0xa')][_0x4096('0xb')]({'port':0x232a});config[_0x4096('0xc')]=_[_0x4096('0xd')](config[_0x4096('0xc')],{'host':_0x4096('0xe'),'port':0x18eb});var socket=require(_0x4096('0xf'))(new Redis(config[_0x4096('0xc')]));require(_0x4096('0x10'))[_0x4096('0x11')](socket);function respondWithRpcPromise(_0x92a980,_0x3d3a83,_0x21eed5){return new BPromise(function(_0x55b3c3,_0x59fcd0){return client[_0x4096('0x12')](_0x92a980,_0x21eed5)[_0x4096('0x13')](function(_0x274c45){logger['info'](_0x4096('0x14'),_0x3d3a83,_0x4096('0x15'));logger[_0x4096('0x16')]('CmList,\x20%s,\x20%s,\x20%s',_0x3d3a83,_0x4096('0x15'),JSON[_0x4096('0x17')](_0x274c45));if(_0x274c45[_0x4096('0x18')]){if(_0x274c45[_0x4096('0x18')][_0x4096('0x19')]===0x1f4){logger['error'](_0x4096('0x14'),_0x3d3a83,_0x274c45[_0x4096('0x18')][_0x4096('0x1a')]);return _0x59fcd0(_0x274c45[_0x4096('0x18')]['message']);}logger[_0x4096('0x18')]('CmList,\x20%s,\x20%s',_0x3d3a83,_0x274c45[_0x4096('0x18')][_0x4096('0x1a')]);return _0x55b3c3(_0x274c45[_0x4096('0x18')][_0x4096('0x1a')]);}else{logger[_0x4096('0x1b')](_0x4096('0x14'),_0x3d3a83,_0x4096('0x15'));_0x55b3c3(_0x274c45[_0x4096('0x1c')]['message']);}})[_0x4096('0x1d')](function(_0x11eb7b){logger[_0x4096('0x18')]('CmList,\x20%s,\x20%s',_0x3d3a83,_0x11eb7b);_0x59fcd0(_0x11eb7b);});});}
\ No newline at end of file
index a93b519..7570197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf113=['emit','removeListener','register','cmList:','save','remove','update'];(function(_0x188a73,_0x4e7590){var _0x572eef=function(_0x2cf0ff){while(--_0x2cf0ff){_0x188a73['push'](_0x188a73['shift']());}};_0x572eef(++_0x4e7590);}(_0xf113,0x74));var _0x3f11=function(_0x41ccec,_0x273430){_0x41ccec=_0x41ccec-0x0;var _0x5c3eb2=_0xf113[_0x41ccec];return _0x5c3eb2;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x3f11('0x0'),_0x3f11('0x1'),_0x3f11('0x2')];function createListener(_0x16bd05,_0x3d8086){return function(_0x52e72d){_0x3d8086[_0x3f11('0x3')](_0x16bd05,_0x52e72d);};}function removeListener(_0x3a0464,_0x257912){return function(){CmListEvents[_0x3f11('0x4')](_0x3a0464,_0x257912);};}exports[_0x3f11('0x5')]=function(_0x372296){for(var _0x1010d6=0x0,_0x5b2df4=events['length'];_0x1010d6<_0x5b2df4;_0x1010d6++){var _0x182f52=events[_0x1010d6];var _0x1c90c8=createListener(_0x3f11('0x6')+_0x182f52,_0x372296);CmListEvents['on'](_0x182f52,_0x1c90c8);}};
\ No newline at end of file
+var _0xb7c2=['update','emit','removeListener','register','length','cmList:','./cmList.events','save','remove'];(function(_0x44b967,_0x4ace3f){var _0xe3c187=function(_0x11f252){while(--_0x11f252){_0x44b967['push'](_0x44b967['shift']());}};_0xe3c187(++_0x4ace3f);}(_0xb7c2,0x114));var _0x2b7c=function(_0x9aa69f,_0x401ad2){_0x9aa69f=_0x9aa69f-0x0;var _0x377472=_0xb7c2[_0x9aa69f];return _0x377472;};'use strict';var CmListEvents=require(_0x2b7c('0x0'));var events=[_0x2b7c('0x1'),_0x2b7c('0x2'),_0x2b7c('0x3')];function createListener(_0x1de8ae,_0x25e203){return function(_0x1426b9){_0x25e203[_0x2b7c('0x4')](_0x1de8ae,_0x1426b9);};}function removeListener(_0x271979,_0x15cfc8){return function(){CmListEvents[_0x2b7c('0x5')](_0x271979,_0x15cfc8);};}exports[_0x2b7c('0x6')]=function(_0x2d6856){for(var _0x1df508=0x0,_0x2f825a=events[_0x2b7c('0x7')];_0x1df508<_0x2f825a;_0x1df508++){var _0x144fe8=events[_0x1df508];var _0x1b6e5c=createListener(_0x2b7c('0x8')+_0x144fe8,_0x2d6856);CmListEvents['on'](_0x144fe8,_0x1b6e5c);}};
\ No newline at end of file
index 55c6df9..e2a8ce9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb8=['addContacts','/:id/fields','addCustomField','addAgents','put','update','destroy','removeDispositions','delete','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','/:id/contacts/csv','getContactsCsv','getCustomFields','/:id/users','post'];(function(_0x38ce4c,_0xfdbe8c){var _0x5d4544=function(_0x503537){while(--_0x503537){_0x38ce4c['push'](_0x38ce4c['shift']());}};_0x5d4544(++_0xfdbe8c);}(_0xbdb8,0x89));var _0x8bdb=function(_0x22241f,_0x48bd97){_0x22241f=_0x22241f-0x0;var _0x16c966=_0xbdb8[_0x22241f];return _0x16c966;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8bdb('0x0'));var timeout=require(_0x8bdb('0x1'));var express=require('express');var router=express[_0x8bdb('0x2')]();var fs_extra=require(_0x8bdb('0x3'));var auth=require(_0x8bdb('0x4'));var interaction=require(_0x8bdb('0x5'));var config=require(_0x8bdb('0x6'));var controller=require(_0x8bdb('0x7'));router[_0x8bdb('0x8')]('/',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0xa')]);router[_0x8bdb('0x8')](_0x8bdb('0xb'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0xc')]);router[_0x8bdb('0x8')]('/global_fields',auth[_0x8bdb('0x9')](),controller['getGlobalCustomFields']);router['get'](_0x8bdb('0xd'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0xe')]);router[_0x8bdb('0x8')](_0x8bdb('0xf'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x10')]);router[_0x8bdb('0x8')](_0x8bdb('0x11'),auth['isAuthenticated'](),controller['getContacts']);router[_0x8bdb('0x8')](_0x8bdb('0x12'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x13')]);router['get']('/:id/fields',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x14')]);router[_0x8bdb('0x8')](_0x8bdb('0x15'),auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0x8bdb('0x9')](),controller['create']);router[_0x8bdb('0x16')](_0x8bdb('0xf'),auth[_0x8bdb('0x9')](),controller['addDisposition']);router[_0x8bdb('0x16')]('/:id/contacts',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x17')]);router['post'](_0x8bdb('0x18'),auth['isAuthenticated'](),controller[_0x8bdb('0x19')]);router[_0x8bdb('0x16')]('/:id/users',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x1a')]);router[_0x8bdb('0x1b')]('/:id',auth['isAuthenticated'](),controller[_0x8bdb('0x1c')]);router['delete'](_0x8bdb('0xd'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x1d')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x8bdb('0x1e')]);router[_0x8bdb('0x1f')](_0x8bdb('0x15'),auth[_0x8bdb('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x46ee=['getCustomFields','/:id/users','post','create','addDisposition','addContacts','addCustomField','put','update','delete','removeDispositions','multer','util','path','connect-timeout','express','Router','fs-extra','get','isAuthenticated','index','/describe','describe','/global_fields','getGlobalCustomFields','/:id','/:id/dispositions','getDispositions','/:id/contacts','/:id/contacts/csv','getContactsCsv','/:id/fields'];(function(_0x2cbfe5,_0x1fb99b){var _0x3f69ad=function(_0x10b7c6){while(--_0x10b7c6){_0x2cbfe5['push'](_0x2cbfe5['shift']());}};_0x3f69ad(++_0x1fb99b);}(_0x46ee,0x6b));var _0xe46e=function(_0x217e5e,_0x40226f){_0x217e5e=_0x217e5e-0x0;var _0x2f7b44=_0x46ee[_0x217e5e];return _0x2f7b44;};'use strict';var multer=require(_0xe46e('0x0'));var util=require(_0xe46e('0x1'));var path=require(_0xe46e('0x2'));var timeout=require(_0xe46e('0x3'));var express=require(_0xe46e('0x4'));var router=express[_0xe46e('0x5')]();var fs_extra=require(_0xe46e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmList.controller');router[_0xe46e('0x7')]('/',auth[_0xe46e('0x8')](),controller[_0xe46e('0x9')]);router['get'](_0xe46e('0xa'),auth['isAuthenticated'](),controller[_0xe46e('0xb')]);router[_0xe46e('0x7')](_0xe46e('0xc'),auth['isAuthenticated'](),controller[_0xe46e('0xd')]);router[_0xe46e('0x7')](_0xe46e('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xe46e('0x7')](_0xe46e('0xf'),auth['isAuthenticated'](),controller[_0xe46e('0x10')]);router[_0xe46e('0x7')](_0xe46e('0x11'),auth[_0xe46e('0x8')](),controller['getContacts']);router[_0xe46e('0x7')](_0xe46e('0x12'),auth[_0xe46e('0x8')](),controller[_0xe46e('0x13')]);router[_0xe46e('0x7')](_0xe46e('0x14'),auth['isAuthenticated'](),controller[_0xe46e('0x15')]);router['get'](_0xe46e('0x16'),auth[_0xe46e('0x8')](),controller['getAgents']);router[_0xe46e('0x17')]('/',auth[_0xe46e('0x8')](),controller[_0xe46e('0x18')]);router[_0xe46e('0x17')]('/:id/dispositions',auth[_0xe46e('0x8')](),controller[_0xe46e('0x19')]);router[_0xe46e('0x17')](_0xe46e('0x11'),auth[_0xe46e('0x8')](),controller[_0xe46e('0x1a')]);router['post'](_0xe46e('0x14'),auth[_0xe46e('0x8')](),controller[_0xe46e('0x1b')]);router['post'](_0xe46e('0x16'),auth[_0xe46e('0x8')](),controller['addAgents']);router[_0xe46e('0x1c')](_0xe46e('0xe'),auth[_0xe46e('0x8')](),controller[_0xe46e('0x1d')]);router[_0xe46e('0x1e')](_0xe46e('0xe'),auth[_0xe46e('0x8')](),controller['destroy']);router['delete'](_0xe46e('0xf'),auth[_0xe46e('0x8')](),controller[_0xe46e('0x1f')]);router[_0xe46e('0x1e')](_0xe46e('0x16'),auth[_0xe46e('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 99116c0..a751ed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a05=['STRING','sequelize','VIRTUAL','getDataValue','field'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x1a05,0x12d));var _0x51a0=function(_0x4fbcf3,_0x508a70){_0x4fbcf3=_0x4fbcf3-0x0;var _0x4e087e=_0x1a05[_0x4fbcf3];return _0x4e087e;};'use strict';var Sequelize=require(_0x51a0('0x0'));module['exports']={'name':{'type':Sequelize[_0x51a0('0x1')],'get':function(_0xe5d648){return this[_0x51a0('0x2')](_0x51a0('0x3'));}},'field':{'type':Sequelize[_0x51a0('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x51a0('0x4')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x5c58=['sequelize','getDataValue','field','STRING'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x5c58,0x114));var _0x85c5=function(_0x1dc46e,_0x5d3b2f){_0x1dc46e=_0x1dc46e-0x0;var _0x12f8ba=_0x5c58[_0x1dc46e];return _0x12f8ba;};'use strict';var Sequelize=require(_0x85c5('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2fc5e1){return this[_0x85c5('0x1')](_0x85c5('0x2'));}},'field':{'type':Sequelize[_0x85c5('0x3')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x85c5('0x3')],'allowNull':![]}};
\ No newline at end of file
index d0e83dd..f2066bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0xb0b72f,_0xdb1686){var _0x184107=function(_0x413273){while(--_0x413273){_0xb0b72f['push'](_0xb0b72f['shift']());}};_0x184107(++_0xdb1686);}(_0x7a54,0x106));var _0x47a5=function(_0x248d5e,_0x40a586){_0x248d5e=_0x248d5e-0x0;var _0x40615f=_0x7a54[_0x248d5e];return _0x40615f;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x37978c,_0x218395){var _0x5a45f5=function(_0x1eb6e7){while(--_0x1eb6e7){_0x37978c['push'](_0x37978c['shift']());}};_0x5a45f5(++_0x218395);}(_0x7a54,0x106));var _0x47a5=function(_0x5dbabf,_0x3be274){_0x5dbabf=_0x5dbabf-0x0;var _0x4bab72=_0x7a54[_0x5dbabf];return _0x4bab72;};'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 6fec192..4d4d6cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62aa=['define','Condition','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./condition.attributes'];(function(_0x2fcf18,_0x10009a){var _0x4c68cc=function(_0x444002){while(--_0x444002){_0x2fcf18['push'](_0x2fcf18['shift']());}};_0x4c68cc(++_0x10009a);}(_0x62aa,0x6e));var _0xa62a=function(_0x54d5e1,_0x3fc1d4){_0x54d5e1=_0x54d5e1-0x0;var _0x76a20b=_0x62aa[_0x54d5e1];return _0x76a20b;};'use strict';var _=require(_0xa62a('0x0'));var util=require(_0xa62a('0x1'));var logger=require(_0xa62a('0x2'))(_0xa62a('0x3'));var moment=require(_0xa62a('0x4'));var BPromise=require(_0xa62a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa62a('0x6'));var rimraf=require(_0xa62a('0x7'));var config=require(_0xa62a('0x8'));var attributes=require(_0xa62a('0x9'));module['exports']=function(_0x4e886d,_0x5d94bf){return _0x4e886d[_0xa62a('0xa')](_0xa62a('0xb'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5592=['util','../../config/logger','api','moment','path','rimraf','define','Condition','tools_conditions'];(function(_0x14f457,_0x540565){var _0x51056d=function(_0x906c18){while(--_0x906c18){_0x14f457['push'](_0x14f457['shift']());}};_0x51056d(++_0x540565);}(_0x5592,0x14d));var _0x2559=function(_0x479dce,_0x4dce8b){_0x479dce=_0x479dce-0x0;var _0x320557=_0x5592[_0x479dce];return _0x320557;};'use strict';var _=require('lodash');var util=require(_0x2559('0x0'));var logger=require(_0x2559('0x1'))(_0x2559('0x2'));var moment=require(_0x2559('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2559('0x4'));var rimraf=require(_0x2559('0x5'));var config=require('../../config/environment');var attributes=require('./condition.attributes');module['exports']=function(_0x368343,_0x304ea3){return _0x368343[_0x2559('0x6')](_0x2559('0x7'),attributes,{'tableName':_0x2559('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 33c2915..8b053d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x414d=['stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','Condition,\x20%s,\x20%s,\x20%s'];(function(_0x591db7,_0x150445){var _0x4ad760=function(_0x5dd24e){while(--_0x5dd24e){_0x591db7['push'](_0x591db7['shift']());}};_0x4ad760(++_0x150445);}(_0x414d,0x190));var _0xd414=function(_0x3a7a50,_0xf3ba4b){_0x3a7a50=_0x3a7a50-0x0;var _0x2f8187=_0x414d[_0x3a7a50];return _0x2f8187;};'use strict';var _=require('lodash');var util=require(_0xd414('0x0'));var moment=require(_0xd414('0x1'));var BPromise=require(_0xd414('0x2'));var rs=require(_0xd414('0x3'));var fs=require('fs');var Redis=require(_0xd414('0x4'));var db=require(_0xd414('0x5'))['db'];var utils=require(_0xd414('0x6'));var logger=require(_0xd414('0x7'))(_0xd414('0x8'));var config=require(_0xd414('0x9'));var jayson=require(_0xd414('0xa'));var client=jayson['client'][_0xd414('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40a8bf,_0x5e3d0c,_0x3703cd){return new BPromise(function(_0x13ac3f,_0x4f8887){return client[_0xd414('0xc')](_0x40a8bf,_0x3703cd)[_0xd414('0xd')](function(_0xe73a0a){logger[_0xd414('0xe')](_0xd414('0xf'),_0x5e3d0c,_0xd414('0x10'));logger['debug'](_0xd414('0x11'),_0x5e3d0c,'request\x20sent',JSON[_0xd414('0x12')](_0xe73a0a));if(_0xe73a0a[_0xd414('0x13')]){if(_0xe73a0a[_0xd414('0x13')]['code']===0x1f4){logger[_0xd414('0x13')](_0xd414('0xf'),_0x5e3d0c,_0xe73a0a['error'][_0xd414('0x14')]);return _0x4f8887(_0xe73a0a[_0xd414('0x13')][_0xd414('0x14')]);}logger[_0xd414('0x13')]('Condition,\x20%s,\x20%s',_0x5e3d0c,_0xe73a0a[_0xd414('0x13')]['message']);return _0x13ac3f(_0xe73a0a['error'][_0xd414('0x14')]);}else{logger['info'](_0xd414('0xf'),_0x5e3d0c,'request\x20sent');_0x13ac3f(_0xe73a0a['result']['message']);}})[_0xd414('0x15')](function(_0x2a205a){logger[_0xd414('0x13')](_0xd414('0xf'),_0x5e3d0c,_0x2a205a);_0x4f8887(_0x2a205a);});});}
\ No newline at end of file
+var _0x30a2=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0xfc8faf,_0x86244a){var _0x48c40b=function(_0x107c22){while(--_0x107c22){_0xfc8faf['push'](_0xfc8faf['shift']());}};_0x48c40b(++_0x86244a);}(_0x30a2,0x8d));var _0x230a=function(_0x380b8f,_0x32271d){_0x380b8f=_0x380b8f-0x0;var _0x646c69=_0x30a2[_0x380b8f];return _0x646c69;};'use strict';var _=require(_0x230a('0x0'));var util=require('util');var moment=require(_0x230a('0x1'));var BPromise=require(_0x230a('0x2'));var rs=require(_0x230a('0x3'));var fs=require('fs');var Redis=require(_0x230a('0x4'));var db=require(_0x230a('0x5'))['db'];var utils=require(_0x230a('0x6'));var logger=require(_0x230a('0x7'))(_0x230a('0x8'));var config=require(_0x230a('0x9'));var jayson=require(_0x230a('0xa'));var client=jayson['client'][_0x230a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4dd662,_0x43daae,_0x493119){return new BPromise(function(_0x5f0c79,_0x4a5dd7){return client[_0x230a('0xc')](_0x4dd662,_0x493119)[_0x230a('0xd')](function(_0x5c8e69){logger[_0x230a('0xe')](_0x230a('0xf'),_0x43daae,_0x230a('0x10'));logger[_0x230a('0x11')](_0x230a('0x12'),_0x43daae,_0x230a('0x10'),JSON['stringify'](_0x5c8e69));if(_0x5c8e69[_0x230a('0x13')]){if(_0x5c8e69[_0x230a('0x13')][_0x230a('0x14')]===0x1f4){logger[_0x230a('0x13')](_0x230a('0xf'),_0x43daae,_0x5c8e69[_0x230a('0x13')][_0x230a('0x15')]);return _0x4a5dd7(_0x5c8e69[_0x230a('0x13')][_0x230a('0x15')]);}logger[_0x230a('0x13')](_0x230a('0xf'),_0x43daae,_0x5c8e69[_0x230a('0x13')]['message']);return _0x5f0c79(_0x5c8e69[_0x230a('0x13')][_0x230a('0x15')]);}else{logger[_0x230a('0xe')]('Condition,\x20%s,\x20%s',_0x43daae,_0x230a('0x10'));_0x5f0c79(_0x5c8e69[_0x230a('0x16')]['message']);}})[_0x230a('0x17')](function(_0x970bd4){logger[_0x230a('0x13')](_0x230a('0xf'),_0x43daae,_0x970bd4);_0x4a5dd7(_0x970bd4);});});}
\ No newline at end of file
index c3c5ba7..a0e13fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf05f=['./condition.controller','put','/:id','isAuthenticated','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5bb3d9,_0x2912cb){var _0x5dcdae=function(_0x3b2aa1){while(--_0x3b2aa1){_0x5bb3d9['push'](_0x5bb3d9['shift']());}};_0x5dcdae(++_0x2912cb);}(_0xf05f,0xcb));var _0xff05=function(_0x45513d,_0x108ef2){_0x45513d=_0x45513d-0x0;var _0x1ea633=_0xf05f[_0x45513d];return _0x1ea633;};'use strict';var multer=require(_0xff05('0x0'));var util=require(_0xff05('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xff05('0x2')]();var fs_extra=require(_0xff05('0x3'));var auth=require(_0xff05('0x4'));var interaction=require(_0xff05('0x5'));var config=require(_0xff05('0x6'));var controller=require(_0xff05('0x7'));router[_0xff05('0x8')](_0xff05('0x9'),auth[_0xff05('0xa')](),controller['update']);router[_0xff05('0xb')](_0xff05('0x9'),auth[_0xff05('0xa')](),controller[_0xff05('0xc')]);module[_0xff05('0xd')]=router;
\ No newline at end of file
+var _0xe073=['Router','../../components/auth/service','../../config/environment','put','/:id','update','delete','isAuthenticated','destroy','exports','util','path'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xe073,0x14e));var _0x3e07=function(_0x2ee122,_0x29a979){_0x2ee122=_0x2ee122-0x0;var _0x3d9be6=_0xe073[_0x2ee122];return _0x3d9be6;};'use strict';var multer=require('multer');var util=require(_0x3e07('0x0'));var path=require(_0x3e07('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3e07('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3e07('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x3e07('0x4'));var controller=require('./condition.controller');router[_0x3e07('0x5')](_0x3e07('0x6'),auth['isAuthenticated'](),controller[_0x3e07('0x7')]);router[_0x3e07('0x8')](_0x3e07('0x6'),auth[_0x3e07('0x9')](),controller[_0x3e07('0xa')]);module[_0x3e07('0xb')]=router;
\ No newline at end of file
index cb02664..222bdf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd4b=['name','INTEGER','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfd4b,0x10a));var _0xbfd4=function(_0x48f5b6,_0x2ffecf){_0x48f5b6=_0x48f5b6-0x0;var _0x85b577=_0xfd4b[_0x48f5b6];return _0x85b577;};'use strict';var Sequelize=require('sequelize');module[_0xbfd4('0x0')]={'name':{'type':Sequelize[_0xbfd4('0x1')],'allowNull':![],'unique':_0xbfd4('0x2')},'OrderBy':{'type':Sequelize[_0xbfd4('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xbfd4('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x18e1=['STRING','sequelize','name'];(function(_0x4fc877,_0x3d1514){var _0x4b4bc9=function(_0x22d9a0){while(--_0x22d9a0){_0x4fc877['push'](_0x4fc877['shift']());}};_0x4b4bc9(++_0x3d1514);}(_0x18e1,0xdc));var _0x118e=function(_0x55f947,_0x52c099){_0x55f947=_0x55f947-0x0;var _0xcea0b2=_0x18e1[_0x55f947];return _0xcea0b2;};'use strict';var Sequelize=require(_0x118e('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x118e('0x1')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x118e('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 6ece080..d14c072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','options','ContactItemType','includeAll','include','rows','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','ContactItemTypes','UserProfileResource','error','stack','name'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x93e9,0xcc));var _0x993e=function(_0x5d9a28,_0x1bf0bf){_0x5d9a28=_0x5d9a28-0x0;var _0x1a0fcd=_0x93e9[_0x5d9a28];return _0x1a0fcd;};'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'];function respondWithStatusCode(_0x5d5c0d,_0x4c2707){_0x4c2707=_0x4c2707||0xcc;return function(_0x31ece2){if(_0x31ece2){return _0x5d5c0d[_0x993e('0x19')](_0x4c2707);}return _0x5d5c0d[_0x993e('0x1a')](_0x4c2707)[_0x993e('0x1b')]();};}function respondWithResult(_0x3e082b,_0x397b42){_0x397b42=_0x397b42||0xc8;return function(_0x34ddda){if(_0x34ddda){return _0x3e082b[_0x993e('0x1a')](_0x397b42)[_0x993e('0x1c')](_0x34ddda);}};}function respondWithFilteredResult(_0xa43a4e,_0x1a7726){return function(_0x135771){if(_0x135771){var _0x3df0e7=typeof _0x1a7726[_0x993e('0x1d')]===_0x993e('0x1e')&&typeof _0x1a7726[_0x993e('0x1f')]===_0x993e('0x1e');var _0x526e06=_0x135771[_0x993e('0x20')];var _0x1acd21=_0x3df0e7?0x0:_0x1a7726[_0x993e('0x1d')];var _0x3d6109=_0x3df0e7?_0x135771[_0x993e('0x20')]:_0x1a7726[_0x993e('0x1d')]+_0x1a7726['limit'];var _0x11cd41;if(_0x3d6109>=_0x526e06){_0x3d6109=_0x526e06;_0x11cd41=0xc8;}else{_0x11cd41=0xce;}_0xa43a4e[_0x993e('0x1a')](_0x11cd41);return _0xa43a4e[_0x993e('0x21')](_0x993e('0x22'),_0x1acd21+'-'+_0x3d6109+'/'+_0x526e06)[_0x993e('0x1c')](_0x135771);}return null;};}function patchUpdates(_0x425ab4){return function(_0x29e48d){try{jsonpatch[_0x993e('0x23')](_0x29e48d,_0x425ab4,!![]);}catch(_0x4bbe9c){return BPromise[_0x993e('0x24')](_0x4bbe9c);}return _0x29e48d['save']();};}function saveUpdates(_0x11f6f4,_0x37ff57){return function(_0x32b09e){if(_0x32b09e){return _0x32b09e['update'](_0x11f6f4)[_0x993e('0x25')](function(_0x13db4e){return _0x13db4e;});}return null;};}function removeEntity(_0xfba00f,_0x1c52fd){return function(_0x3b45ef){if(_0x3b45ef){return _0x3b45ef[_0x993e('0x26')]()[_0x993e('0x25')](function(){var _0x3ad96f=_0x3b45ef[_0x993e('0x27')]({'plain':!![]});var _0x18f6ac=_0x993e('0x28');return db[_0x993e('0x29')]['destroy']({'where':{'type':_0x18f6ac,'resourceId':_0x3ad96f['id']}})[_0x993e('0x25')](function(){return _0x3b45ef;});})[_0x993e('0x25')](function(){_0xfba00f['status'](0xcc)[_0x993e('0x1b')]();});}};}function handleEntityNotFound(_0x4f5cc1,_0x14a0c7){return function(_0xa03fbd){if(!_0xa03fbd){_0x4f5cc1[_0x993e('0x19')](0x194);}return _0xa03fbd;};}function handleError(_0x2ff973,_0x5c7507){_0x5c7507=_0x5c7507||0x1f4;return function(_0x48d457){logger[_0x993e('0x2a')](_0x48d457[_0x993e('0x2b')]);if(_0x48d457['name']){delete _0x48d457[_0x993e('0x2c')];}_0x2ff973[_0x993e('0x1a')](_0x5c7507)[_0x993e('0x2d')](_0x48d457);};}exports['index']=function(_0x2495b7,_0x9e0309){var _0x1f5d51={},_0x1fa8a5={},_0x2599ec={'count':0x0,'rows':[]};var _0x54da4e=_[_0x993e('0x2e')](db['ContactItemType'][_0x993e('0x2f')],function(_0x5ba163){return{'name':_0x5ba163[_0x993e('0x30')],'type':_0x5ba163['type'][_0x993e('0x31')]};});_0x1fa8a5[_0x993e('0x32')]=_[_0x993e('0x2e')](_0x54da4e,_0x993e('0x2c'));_0x1fa8a5[_0x993e('0x33')]=_[_0x993e('0x34')](_0x2495b7['query']);_0x1fa8a5[_0x993e('0x35')]=_['intersection'](_0x1fa8a5['model'],_0x1fa8a5[_0x993e('0x33')]);_0x1f5d51['attributes']=_[_0x993e('0x36')](_0x1fa8a5[_0x993e('0x32')],qs[_0x993e('0x37')](_0x2495b7[_0x993e('0x33')][_0x993e('0x37')]));_0x1f5d51[_0x993e('0x38')]=_0x1f5d51[_0x993e('0x38')][_0x993e('0x39')]?_0x1f5d51[_0x993e('0x38')]:_0x1fa8a5[_0x993e('0x32')];if(!_0x2495b7[_0x993e('0x33')][_0x993e('0x3a')](_0x993e('0x3b'))){_0x1f5d51[_0x993e('0x1f')]=qs[_0x993e('0x1f')](_0x2495b7['query'][_0x993e('0x1f')]);_0x1f5d51[_0x993e('0x1d')]=qs[_0x993e('0x1d')](_0x2495b7[_0x993e('0x33')][_0x993e('0x1d')]);}_0x1f5d51[_0x993e('0x3c')]=qs[_0x993e('0x3d')](_0x2495b7[_0x993e('0x33')][_0x993e('0x3d')]);_0x1f5d51['where']=qs[_0x993e('0x35')](_['pick'](_0x2495b7[_0x993e('0x33')],_0x1fa8a5[_0x993e('0x35')]),_0x54da4e);if(_0x2495b7[_0x993e('0x33')][_0x993e('0x3e')]){_0x1f5d51[_0x993e('0x3f')]=_[_0x993e('0x40')](_0x1f5d51[_0x993e('0x3f')],{'$or':_[_0x993e('0x2e')](_0x54da4e,function(_0x4f057e){if(_0x4f057e[_0x993e('0x41')]!=='VIRTUAL'){var _0x180ad4={};_0x180ad4[_0x4f057e['name']]={'$like':'%'+_0x2495b7[_0x993e('0x33')][_0x993e('0x3e')]+'%'};return _0x180ad4;}})});}_0x1f5d51=_[_0x993e('0x40')]({},_0x1f5d51,_0x2495b7[_0x993e('0x42')]);var _0x39424a={'where':_0x1f5d51[_0x993e('0x3f')]};return db[_0x993e('0x43')][_0x993e('0x20')](_0x39424a)['then'](function(_0xe64c){_0x2599ec['count']=_0xe64c;if(_0x2495b7['query'][_0x993e('0x44')]){_0x1f5d51[_0x993e('0x45')]=[{'all':!![]}];}return db[_0x993e('0x43')]['findAll'](_0x1f5d51);})[_0x993e('0x25')](function(_0x40719d){_0x2599ec[_0x993e('0x46')]=_0x40719d;return _0x2599ec;})['then'](respondWithFilteredResult(_0x9e0309,_0x1f5d51))['catch'](handleError(_0x9e0309,null));};exports['show']=function(_0x3f29c8,_0x1adb09){var _0x254f74={'raw':!![],'where':{'id':_0x3f29c8[_0x993e('0x47')]['id']}},_0x539c9d={};_0x539c9d[_0x993e('0x32')]=_['keys'](db[_0x993e('0x43')][_0x993e('0x2f')]);_0x539c9d['query']=_[_0x993e('0x34')](_0x3f29c8[_0x993e('0x33')]);_0x539c9d[_0x993e('0x35')]=_['intersection'](_0x539c9d['model'],_0x539c9d['query']);_0x254f74[_0x993e('0x38')]=_[_0x993e('0x36')](_0x539c9d[_0x993e('0x32')],qs[_0x993e('0x37')](_0x3f29c8['query'][_0x993e('0x37')]));_0x254f74[_0x993e('0x38')]=_0x254f74[_0x993e('0x38')][_0x993e('0x39')]?_0x254f74[_0x993e('0x38')]:_0x539c9d[_0x993e('0x32')];if(_0x3f29c8['query']['includeAll']){_0x254f74[_0x993e('0x45')]=[{'all':!![]}];}_0x254f74=_[_0x993e('0x40')]({},_0x254f74,_0x3f29c8['options']);return db['ContactItemType'][_0x993e('0x48')](_0x254f74)[_0x993e('0x25')](handleEntityNotFound(_0x1adb09,null))[_0x993e('0x25')](respondWithResult(_0x1adb09,null))[_0x993e('0x49')](handleError(_0x1adb09,null));};exports[_0x993e('0x4a')]=function(_0x256ce3,_0x5b18e3){return db[_0x993e('0x43')]['create'](_0x256ce3[_0x993e('0x4b')],{})[_0x993e('0x25')](function(_0x28cf3b){var _0x402e37=_0x256ce3[_0x993e('0x4c')][_0x993e('0x27')]({'plain':!![]});if(!_0x402e37)throw new Error(_0x993e('0x4d'));if(_0x402e37[_0x993e('0x4e')]==='user'){var _0x23f09c=_0x28cf3b[_0x993e('0x27')]({'plain':!![]});var _0x8b1516='ContactItemTypes';return db[_0x993e('0x4f')]['find']({'where':{'name':_0x8b1516,'userProfileId':_0x402e37[_0x993e('0x50')]},'raw':!![]})[_0x993e('0x25')](function(_0x5cd41a){if(_0x5cd41a&&_0x5cd41a[_0x993e('0x51')]===0x0){return db[_0x993e('0x29')]['create']({'name':_0x23f09c[_0x993e('0x2c')],'resourceId':_0x23f09c['id'],'type':_0x5cd41a[_0x993e('0x2c')],'sectionId':_0x5cd41a['id']},{})[_0x993e('0x25')](function(){return _0x28cf3b;});}else{return _0x28cf3b;}})[_0x993e('0x49')](function(_0x2e368e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e368e);throw _0x2e368e;});}return _0x28cf3b;})['then'](respondWithResult(_0x5b18e3,0xc9))[_0x993e('0x49')](handleError(_0x5b18e3,null));};exports[_0x993e('0x52')]=function(_0x42af4f,_0x2c3df7){if(_0x42af4f[_0x993e('0x4b')]['id']){delete _0x42af4f[_0x993e('0x4b')]['id'];}return db['ContactItemType'][_0x993e('0x48')]({'where':{'id':_0x42af4f[_0x993e('0x47')]['id']}})[_0x993e('0x25')](handleEntityNotFound(_0x2c3df7,null))['then'](saveUpdates(_0x42af4f[_0x993e('0x4b')],null))['then'](respondWithResult(_0x2c3df7,null))['catch'](handleError(_0x2c3df7,null));};exports[_0x993e('0x26')]=function(_0x37d7b1,_0x511641){return db[_0x993e('0x43')]['find']({'where':{'id':_0x37d7b1[_0x993e('0x47')]['id']}})[_0x993e('0x25')](handleEntityNotFound(_0x511641,null))['then'](db['CmContactHasItem'][_0x993e('0x52')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x37d7b1[_0x993e('0x47')]['id']}}))[_0x993e('0x25')](removeEntity(_0x511641,null))[_0x993e('0x49')](handleError(_0x511641,null));};
\ No newline at end of file
+var _0x6a55=['../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','apply','update','then','destroy','get','ContactItemTypes','UserProfileResource','end','error','name','index','map','ContactItemType','rawAttributes','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','params','CmContactHasItem','eml-format','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x6a55,0xdb));var _0x56a5=function(_0x3f5210,_0x32f195){_0x3f5210=_0x3f5210-0x0;var _0x53c3ab=_0x6a55[_0x3f5210];return _0x53c3ab;};'use strict';var emlformat=require(_0x56a5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x56a5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x56a5('0x2'));var util=require('util');var path=require(_0x56a5('0x3'));var sox=require('sox');var csv=require(_0x56a5('0x4'));var ejs=require(_0x56a5('0x5'));var fs=require('fs');var fs_extra=require(_0x56a5('0x6'));var _=require(_0x56a5('0x7'));var squel=require(_0x56a5('0x8'));var crypto=require(_0x56a5('0x9'));var jsforce=require(_0x56a5('0xa'));var deskjs=require(_0x56a5('0xb'));var toCsv=require('to-csv');var querystring=require(_0x56a5('0xc'));var Papa=require(_0x56a5('0xd'));var Redis=require(_0x56a5('0xe'));var authService=require(_0x56a5('0xf'));var qs=require(_0x56a5('0x10'));var as=require(_0x56a5('0x11'));var hardwareService=require(_0x56a5('0x12'));var logger=require(_0x56a5('0x13'))(_0x56a5('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x56a5('0x15'));var db=require(_0x56a5('0x16'))['db'];function respondWithStatusCode(_0x2b9d7d,_0x1a9bf0){_0x1a9bf0=_0x1a9bf0||0xcc;return function(_0x2de420){if(_0x2de420){return _0x2b9d7d[_0x56a5('0x17')](_0x1a9bf0);}return _0x2b9d7d['status'](_0x1a9bf0)['end']();};}function respondWithResult(_0x3e3ff6,_0x1e416f){_0x1e416f=_0x1e416f||0xc8;return function(_0x176c7b){if(_0x176c7b){return _0x3e3ff6[_0x56a5('0x18')](_0x1e416f)[_0x56a5('0x19')](_0x176c7b);}};}function respondWithFilteredResult(_0x2db112,_0xe3091f){return function(_0x5c4028){if(_0x5c4028){var _0x360297=typeof _0xe3091f['offset']===_0x56a5('0x1a')&&typeof _0xe3091f['limit']===_0x56a5('0x1a');var _0x3f3e5b=_0x5c4028[_0x56a5('0x1b')];var _0x28fe74=_0x360297?0x0:_0xe3091f[_0x56a5('0x1c')];var _0x143f3d=_0x360297?_0x5c4028[_0x56a5('0x1b')]:_0xe3091f['offset']+_0xe3091f[_0x56a5('0x1d')];var _0x3db687;if(_0x143f3d>=_0x3f3e5b){_0x143f3d=_0x3f3e5b;_0x3db687=0xc8;}else{_0x3db687=0xce;}_0x2db112[_0x56a5('0x18')](_0x3db687);return _0x2db112[_0x56a5('0x1e')]('Content-Range',_0x28fe74+'-'+_0x143f3d+'/'+_0x3f3e5b)[_0x56a5('0x19')](_0x5c4028);}return null;};}function patchUpdates(_0x1fdb7a){return function(_0xa274f4){try{jsonpatch[_0x56a5('0x1f')](_0xa274f4,_0x1fdb7a,!![]);}catch(_0x155d3b){return BPromise['reject'](_0x155d3b);}return _0xa274f4['save']();};}function saveUpdates(_0x29f181,_0x1c4ab8){return function(_0x487505){if(_0x487505){return _0x487505[_0x56a5('0x20')](_0x29f181)[_0x56a5('0x21')](function(_0x615d49){return _0x615d49;});}return null;};}function removeEntity(_0x15d9f8,_0xe1ded0){return function(_0x616922){if(_0x616922){return _0x616922[_0x56a5('0x22')]()[_0x56a5('0x21')](function(){var _0x2f4514=_0x616922[_0x56a5('0x23')]({'plain':!![]});var _0xcf212=_0x56a5('0x24');return db[_0x56a5('0x25')]['destroy']({'where':{'type':_0xcf212,'resourceId':_0x2f4514['id']}})[_0x56a5('0x21')](function(){return _0x616922;});})[_0x56a5('0x21')](function(){_0x15d9f8[_0x56a5('0x18')](0xcc)[_0x56a5('0x26')]();});}};}function handleEntityNotFound(_0x43a815,_0x527e84){return function(_0x18e863){if(!_0x18e863){_0x43a815['sendStatus'](0x194);}return _0x18e863;};}function handleError(_0x2efde7,_0x3c6ac1){_0x3c6ac1=_0x3c6ac1||0x1f4;return function(_0x1b27b5){logger[_0x56a5('0x27')](_0x1b27b5['stack']);if(_0x1b27b5[_0x56a5('0x28')]){delete _0x1b27b5[_0x56a5('0x28')];}_0x2efde7[_0x56a5('0x18')](_0x3c6ac1)['send'](_0x1b27b5);};}exports[_0x56a5('0x29')]=function(_0x29dbe7,_0xeb4378){var _0x214649={},_0x55978e={},_0x4e1a6b={'count':0x0,'rows':[]};var _0x78b2b1=_[_0x56a5('0x2a')](db[_0x56a5('0x2b')][_0x56a5('0x2c')],function(_0x643937){return{'name':_0x643937['fieldName'],'type':_0x643937['type'][_0x56a5('0x2d')]};});_0x55978e[_0x56a5('0x2e')]=_[_0x56a5('0x2a')](_0x78b2b1,'name');_0x55978e[_0x56a5('0x2f')]=_[_0x56a5('0x30')](_0x29dbe7['query']);_0x55978e['filters']=_['intersection'](_0x55978e['model'],_0x55978e[_0x56a5('0x2f')]);_0x214649[_0x56a5('0x31')]=_[_0x56a5('0x32')](_0x55978e['model'],qs[_0x56a5('0x33')](_0x29dbe7['query'][_0x56a5('0x33')]));_0x214649[_0x56a5('0x31')]=_0x214649['attributes'][_0x56a5('0x34')]?_0x214649['attributes']:_0x55978e[_0x56a5('0x2e')];if(!_0x29dbe7[_0x56a5('0x2f')][_0x56a5('0x35')]('nolimit')){_0x214649[_0x56a5('0x1d')]=qs[_0x56a5('0x1d')](_0x29dbe7[_0x56a5('0x2f')]['limit']);_0x214649[_0x56a5('0x1c')]=qs[_0x56a5('0x1c')](_0x29dbe7[_0x56a5('0x2f')][_0x56a5('0x1c')]);}_0x214649[_0x56a5('0x36')]=qs['sort'](_0x29dbe7['query'][_0x56a5('0x37')]);_0x214649[_0x56a5('0x38')]=qs[_0x56a5('0x39')](_[_0x56a5('0x3a')](_0x29dbe7[_0x56a5('0x2f')],_0x55978e[_0x56a5('0x39')]),_0x78b2b1);if(_0x29dbe7[_0x56a5('0x2f')][_0x56a5('0x3b')]){_0x214649[_0x56a5('0x38')]=_[_0x56a5('0x3c')](_0x214649[_0x56a5('0x38')],{'$or':_[_0x56a5('0x2a')](_0x78b2b1,function(_0x184186){if(_0x184186[_0x56a5('0x3d')]!==_0x56a5('0x3e')){var _0x32318c={};_0x32318c[_0x184186[_0x56a5('0x28')]]={'$like':'%'+_0x29dbe7[_0x56a5('0x2f')][_0x56a5('0x3b')]+'%'};return _0x32318c;}})});}_0x214649=_[_0x56a5('0x3c')]({},_0x214649,_0x29dbe7[_0x56a5('0x3f')]);var _0x1cca30={'where':_0x214649['where']};return db['ContactItemType'][_0x56a5('0x1b')](_0x1cca30)['then'](function(_0x7c3c3e){_0x4e1a6b[_0x56a5('0x1b')]=_0x7c3c3e;if(_0x29dbe7[_0x56a5('0x2f')][_0x56a5('0x40')]){_0x214649[_0x56a5('0x41')]=[{'all':!![]}];}return db[_0x56a5('0x2b')]['findAll'](_0x214649);})['then'](function(_0x29ab9b){_0x4e1a6b[_0x56a5('0x42')]=_0x29ab9b;return _0x4e1a6b;})[_0x56a5('0x21')](respondWithFilteredResult(_0xeb4378,_0x214649))[_0x56a5('0x43')](handleError(_0xeb4378,null));};exports[_0x56a5('0x44')]=function(_0x2ae3ea,_0x50f029){var _0x1191d0={'raw':!![],'where':{'id':_0x2ae3ea['params']['id']}},_0x252c94={};_0x252c94[_0x56a5('0x2e')]=_[_0x56a5('0x30')](db[_0x56a5('0x2b')][_0x56a5('0x2c')]);_0x252c94['query']=_[_0x56a5('0x30')](_0x2ae3ea['query']);_0x252c94[_0x56a5('0x39')]=_[_0x56a5('0x32')](_0x252c94['model'],_0x252c94[_0x56a5('0x2f')]);_0x1191d0['attributes']=_[_0x56a5('0x32')](_0x252c94[_0x56a5('0x2e')],qs['fields'](_0x2ae3ea[_0x56a5('0x2f')]['fields']));_0x1191d0[_0x56a5('0x31')]=_0x1191d0['attributes'][_0x56a5('0x34')]?_0x1191d0['attributes']:_0x252c94[_0x56a5('0x2e')];if(_0x2ae3ea[_0x56a5('0x2f')][_0x56a5('0x40')]){_0x1191d0[_0x56a5('0x41')]=[{'all':!![]}];}_0x1191d0=_[_0x56a5('0x3c')]({},_0x1191d0,_0x2ae3ea[_0x56a5('0x3f')]);return db[_0x56a5('0x2b')]['find'](_0x1191d0)['then'](handleEntityNotFound(_0x50f029,null))['then'](respondWithResult(_0x50f029,null))[_0x56a5('0x43')](handleError(_0x50f029,null));};exports[_0x56a5('0x45')]=function(_0x1e510a,_0x55d2e2){return db[_0x56a5('0x2b')][_0x56a5('0x45')](_0x1e510a[_0x56a5('0x46')],{})['then'](function(_0x19829f){var _0x3e38b9=_0x1e510a['user'][_0x56a5('0x23')]({'plain':!![]});if(!_0x3e38b9)throw new Error(_0x56a5('0x47'));if(_0x3e38b9[_0x56a5('0x48')]===_0x56a5('0x49')){var _0xcb3cb9=_0x19829f['get']({'plain':!![]});var _0x2b1fcb=_0x56a5('0x24');return db[_0x56a5('0x4a')][_0x56a5('0x4b')]({'where':{'name':_0x2b1fcb,'userProfileId':_0x3e38b9[_0x56a5('0x4c')]},'raw':!![]})['then'](function(_0x22be73){if(_0x22be73&&_0x22be73[_0x56a5('0x4d')]===0x0){return db['UserProfileResource'][_0x56a5('0x45')]({'name':_0xcb3cb9[_0x56a5('0x28')],'resourceId':_0xcb3cb9['id'],'type':_0x22be73[_0x56a5('0x28')],'sectionId':_0x22be73['id']},{})['then'](function(){return _0x19829f;});}else{return _0x19829f;}})[_0x56a5('0x43')](function(_0x5c41a9){logger[_0x56a5('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5c41a9);throw _0x5c41a9;});}return _0x19829f;})[_0x56a5('0x21')](respondWithResult(_0x55d2e2,0xc9))[_0x56a5('0x43')](handleError(_0x55d2e2,null));};exports[_0x56a5('0x20')]=function(_0x14647d,_0x4afdb9){if(_0x14647d[_0x56a5('0x46')]['id']){delete _0x14647d['body']['id'];}return db[_0x56a5('0x2b')][_0x56a5('0x4b')]({'where':{'id':_0x14647d[_0x56a5('0x4e')]['id']}})[_0x56a5('0x21')](handleEntityNotFound(_0x4afdb9,null))[_0x56a5('0x21')](saveUpdates(_0x14647d[_0x56a5('0x46')],null))[_0x56a5('0x21')](respondWithResult(_0x4afdb9,null))[_0x56a5('0x43')](handleError(_0x4afdb9,null));};exports[_0x56a5('0x22')]=function(_0x76c6bb,_0x5279fe){return db[_0x56a5('0x2b')][_0x56a5('0x4b')]({'where':{'id':_0x76c6bb['params']['id']}})[_0x56a5('0x21')](handleEntityNotFound(_0x5279fe,null))['then'](db[_0x56a5('0x4f')][_0x56a5('0x20')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x76c6bb[_0x56a5('0x4e')]['id']}}))[_0x56a5('0x21')](removeEntity(_0x5279fe,null))[_0x56a5('0x43')](handleError(_0x5279fe,null));};
\ No newline at end of file
index b531d3e..00d39b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x295e=['define','ContactItemType','tools_contact_item_types','util','../../config/logger','api','moment','bluebird','rimraf','./contactItemType.attributes'];(function(_0x44b005,_0x51199e){var _0x304f0b=function(_0x5a810e){while(--_0x5a810e){_0x44b005['push'](_0x44b005['shift']());}};_0x304f0b(++_0x51199e);}(_0x295e,0x16b));var _0xe295=function(_0x10a3cf,_0x48e4b3){_0x10a3cf=_0x10a3cf-0x0;var _0x227855=_0x295e[_0x10a3cf];return _0x227855;};'use strict';var _=require('lodash');var util=require(_0xe295('0x0'));var logger=require(_0xe295('0x1'))(_0xe295('0x2'));var moment=require(_0xe295('0x3'));var BPromise=require(_0xe295('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe295('0x5'));var config=require('../../config/environment');var attributes=require(_0xe295('0x6'));module['exports']=function(_0x3e585a,_0x3c0604){return _0x3e585a[_0xe295('0x7')](_0xe295('0x8'),attributes,{'tableName':_0xe295('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3da7=['moment','bluebird','../../config/environment','./contactItemType.attributes','define','ContactItemType','lodash','../../config/logger','api'];(function(_0xd4636c,_0x34dbf6){var _0x5ee17d=function(_0x223c38){while(--_0x223c38){_0xd4636c['push'](_0xd4636c['shift']());}};_0x5ee17d(++_0x34dbf6);}(_0x3da7,0x14a));var _0x73da=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0x3da7[_0x2261ce];return _0x524640;};'use strict';var _=require(_0x73da('0x0'));var util=require('util');var logger=require(_0x73da('0x1'))(_0x73da('0x2'));var moment=require(_0x73da('0x3'));var BPromise=require(_0x73da('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x73da('0x5'));var attributes=require(_0x73da('0x6'));module['exports']=function(_0x17af10,_0x27057b){return _0x17af10[_0x73da('0x7')](_0x73da('0x8'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f7acc5a..0404d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8856=['client','request','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise'];(function(_0x53af27,_0x12b16c){var _0x1d3634=function(_0x185da0){while(--_0x185da0){_0x53af27['push'](_0x53af27['shift']());}};_0x1d3634(++_0x12b16c);}(_0x8856,0xe2));var _0x6885=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8856[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6885('0x0'));var util=require(_0x6885('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6885('0x2'));var fs=require('fs');var Redis=require(_0x6885('0x3'));var db=require(_0x6885('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6885('0x5'));var config=require(_0x6885('0x6'));var jayson=require(_0x6885('0x7'));var client=jayson[_0x6885('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3652b3,_0x5901bb,_0x577019){return new BPromise(function(_0x5a6ccc,_0x232121){return client[_0x6885('0x9')](_0x3652b3,_0x577019)['then'](function(_0x4f6106){logger[_0x6885('0xa')](_0x6885('0xb'),_0x5901bb,_0x6885('0xc'));logger[_0x6885('0xd')](_0x6885('0xe'),_0x5901bb,_0x6885('0xc'),JSON['stringify'](_0x4f6106));if(_0x4f6106[_0x6885('0xf')]){if(_0x4f6106[_0x6885('0xf')]['code']===0x1f4){logger[_0x6885('0xf')](_0x6885('0xb'),_0x5901bb,_0x4f6106[_0x6885('0xf')][_0x6885('0x10')]);return _0x232121(_0x4f6106['error'][_0x6885('0x10')]);}logger[_0x6885('0xf')](_0x6885('0xb'),_0x5901bb,_0x4f6106[_0x6885('0xf')]['message']);return _0x5a6ccc(_0x4f6106['error'][_0x6885('0x10')]);}else{logger[_0x6885('0xa')](_0x6885('0xb'),_0x5901bb,_0x6885('0xc'));_0x5a6ccc(_0x4f6106['result'][_0x6885('0x10')]);}})[_0x6885('0x11')](function(_0x235d7b){logger[_0x6885('0xf')](_0x6885('0xb'),_0x5901bb,_0x235d7b);_0x232121(_0x235d7b);});});}
\ No newline at end of file
+var _0x4bb0=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','error','ContactItemType,\x20%s,\x20%s','message','info','catch'];(function(_0x534a75,_0x32e732){var _0xcc7d09=function(_0xe48fde){while(--_0xe48fde){_0x534a75['push'](_0x534a75['shift']());}};_0xcc7d09(++_0x32e732);}(_0x4bb0,0x73));var _0x04bb=function(_0x3f2d02,_0x2c7deb){_0x3f2d02=_0x3f2d02-0x0;var _0x54092b=_0x4bb0[_0x3f2d02];return _0x54092b;};'use strict';var _=require(_0x04bb('0x0'));var util=require(_0x04bb('0x1'));var moment=require(_0x04bb('0x2'));var BPromise=require(_0x04bb('0x3'));var rs=require(_0x04bb('0x4'));var fs=require('fs');var Redis=require(_0x04bb('0x5'));var db=require(_0x04bb('0x6'))['db'];var utils=require(_0x04bb('0x7'));var logger=require(_0x04bb('0x8'))(_0x04bb('0x9'));var config=require(_0x04bb('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x04bb('0xb')][_0x04bb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x453fde,_0x3b8695,_0x152da4){return new BPromise(function(_0x1b6fbd,_0x2f35cc){return client[_0x04bb('0xd')](_0x453fde,_0x152da4)[_0x04bb('0xe')](function(_0x5594d8){logger['info']('ContactItemType,\x20%s,\x20%s',_0x3b8695,_0x04bb('0xf'));logger[_0x04bb('0x10')](_0x04bb('0x11'),_0x3b8695,_0x04bb('0xf'),JSON['stringify'](_0x5594d8));if(_0x5594d8[_0x04bb('0x12')]){if(_0x5594d8[_0x04bb('0x12')]['code']===0x1f4){logger[_0x04bb('0x12')](_0x04bb('0x13'),_0x3b8695,_0x5594d8[_0x04bb('0x12')][_0x04bb('0x14')]);return _0x2f35cc(_0x5594d8['error'][_0x04bb('0x14')]);}logger[_0x04bb('0x12')](_0x04bb('0x13'),_0x3b8695,_0x5594d8['error']['message']);return _0x1b6fbd(_0x5594d8[_0x04bb('0x12')][_0x04bb('0x14')]);}else{logger[_0x04bb('0x15')](_0x04bb('0x13'),_0x3b8695,_0x04bb('0xf'));_0x1b6fbd(_0x5594d8['result'][_0x04bb('0x14')]);}})[_0x04bb('0x16')](function(_0xc000c6){logger['error']('ContactItemType,\x20%s,\x20%s',_0x3b8695,_0xc000c6);_0x2f35cc(_0xc000c6);});});}
\ No newline at end of file
index ed88f79..e09cf16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff8a=['get','isAuthenticated','index','/:id','create','update','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','./contactItemType.controller'];(function(_0x3f5ef6,_0x4394dc){var _0x4b36b0=function(_0x1f750f){while(--_0x1f750f){_0x3f5ef6['push'](_0x3f5ef6['shift']());}};_0x4b36b0(++_0x4394dc);}(_0xff8a,0x86));var _0xaff8=function(_0x423ab0,_0x58ac42){_0x423ab0=_0x423ab0-0x0;var _0x519d9e=_0xff8a[_0x423ab0];return _0x519d9e;};'use strict';var multer=require(_0xaff8('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaff8('0x1'));var express=require(_0xaff8('0x2'));var router=express[_0xaff8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xaff8('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xaff8('0x5'));router[_0xaff8('0x6')]('/',auth[_0xaff8('0x7')](),controller[_0xaff8('0x8')]);router['get'](_0xaff8('0x9'),auth[_0xaff8('0x7')](),controller['show']);router['post']('/',auth[_0xaff8('0x7')](),controller[_0xaff8('0xa')]);router['put'](_0xaff8('0x9'),auth[_0xaff8('0x7')](),controller[_0xaff8('0xb')]);router['delete'](_0xaff8('0x9'),auth['isAuthenticated'](),controller[_0xaff8('0xc')]);module[_0xaff8('0xd')]=router;
\ No newline at end of file
+var _0xec00=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','isAuthenticated','index','show','create','/:id','update','delete'];(function(_0x1a7433,_0x3e65ed){var _0x24c1cd=function(_0x2a0304){while(--_0x2a0304){_0x1a7433['push'](_0x1a7433['shift']());}};_0x24c1cd(++_0x3e65ed);}(_0xec00,0xbf));var _0x0ec0=function(_0x5534fe,_0x43c22e){_0x5534fe=_0x5534fe-0x0;var _0x3d1dc2=_0xec00[_0x5534fe];return _0x3d1dc2;};'use strict';var multer=require(_0x0ec0('0x0'));var util=require(_0x0ec0('0x1'));var path=require(_0x0ec0('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ec0('0x3'));var router=express[_0x0ec0('0x4')]();var fs_extra=require(_0x0ec0('0x5'));var auth=require(_0x0ec0('0x6'));var interaction=require(_0x0ec0('0x7'));var config=require(_0x0ec0('0x8'));var controller=require(_0x0ec0('0x9'));router[_0x0ec0('0xa')]('/',auth[_0x0ec0('0xb')](),controller[_0x0ec0('0xc')]);router['get']('/:id',auth[_0x0ec0('0xb')](),controller[_0x0ec0('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0ec0('0xe')]);router['put'](_0x0ec0('0xf'),auth[_0x0ec0('0xb')](),controller[_0x0ec0('0x10')]);router[_0x0ec0('0x11')](_0x0ec0('0xf'),auth[_0x0ec0('0xb')](),controller['destroy']);module[_0x0ec0('0x12')]=router;
\ No newline at end of file
index 593ea3c..e1e5975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['STRING','sequelize','exports'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xe706,0xa3));var _0x6e70=function(_0x197a8a,_0x2f70dd){_0x197a8a=_0x197a8a-0x0;var _0x3624c0=_0xe706[_0x197a8a];return _0x3624c0;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x4cf1a3,_0x458d03){var _0x3b507b=function(_0x20b831){while(--_0x20b831){_0x4cf1a3['push'](_0x4cf1a3['shift']());}};_0x3b507b(++_0x458d03);}(_0xb10b,0x12a));var _0xbb10=function(_0x13c70c,_0x546b34){_0x13c70c=_0x13c70c-0x0;var _0x50f0f2=_0xb10b[_0x13c70c];return _0x50f0f2;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
index 207e557..5bc3e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3fe=['keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','updatedAt','createdAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','key','query'];(function(_0x4a02bf,_0x19ec55){var _0x57f0f4=function(_0x20a74c){while(--_0x20a74c){_0x4a02bf['push'](_0x4a02bf['shift']());}};_0x57f0f4(++_0x19ec55);}(_0xc3fe,0x155));var _0xec3f=function(_0x5702da,_0x2c574f){_0x5702da=_0x5702da-0x0;var _0x20c67e=_0xc3fe[_0x5702da];return _0x20c67e;};'use strict';var emlformat=require(_0xec3f('0x0'));var rimraf=require(_0xec3f('0x1'));var zipdir=require(_0xec3f('0x2'));var jsonpatch=require(_0xec3f('0x3'));var rp=require('request-promise');var moment=require(_0xec3f('0x4'));var BPromise=require(_0xec3f('0x5'));var Mustache=require(_0xec3f('0x6'));var util=require(_0xec3f('0x7'));var path=require(_0xec3f('0x8'));var sox=require(_0xec3f('0x9'));var csv=require(_0xec3f('0xa'));var ejs=require(_0xec3f('0xb'));var fs=require('fs');var fs_extra=require(_0xec3f('0xc'));var _=require(_0xec3f('0xd'));var squel=require(_0xec3f('0xe'));var crypto=require(_0xec3f('0xf'));var jsforce=require(_0xec3f('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xec3f('0xa'));var querystring=require(_0xec3f('0x11'));var Papa=require('papaparse');var Redis=require(_0xec3f('0x12'));var authService=require(_0xec3f('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xec3f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xec3f('0x15'));var utils=require(_0xec3f('0x16'));var config=require(_0xec3f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xec3f('0x18'))['db'];config[_0xec3f('0x19')]=_[_0xec3f('0x1a')](config[_0xec3f('0x19')],{'host':_0xec3f('0x1b'),'port':0x18eb});var socket=require(_0xec3f('0x1c'))(new Redis(config[_0xec3f('0x19')]));require(_0xec3f('0x1d'))[_0xec3f('0x1e')](socket);function respondWithStatusCode(_0x5ed450,_0x21a051){_0x21a051=_0x21a051||0xcc;return function(_0x509d28){if(_0x509d28){return _0x5ed450[_0xec3f('0x1f')](_0x21a051);}return _0x5ed450[_0xec3f('0x20')](_0x21a051)[_0xec3f('0x21')]();};}function respondWithResult(_0x29b160,_0x496b86){_0x496b86=_0x496b86||0xc8;return function(_0xbd9ee5){if(_0xbd9ee5){return _0x29b160['status'](_0x496b86)[_0xec3f('0x22')](_0xbd9ee5);}};}function respondWithFilteredResult(_0x586cb6,_0x5e9e80){return function(_0x2454cb){if(_0x2454cb){var _0x1e3c39=typeof _0x5e9e80[_0xec3f('0x23')]==='undefined'&&typeof _0x5e9e80['limit']===_0xec3f('0x24');var _0x4b847e=_0x2454cb['count'];var _0x115bcc=_0x1e3c39?0x0:_0x5e9e80[_0xec3f('0x23')];var _0x591899=_0x1e3c39?_0x2454cb[_0xec3f('0x25')]:_0x5e9e80[_0xec3f('0x23')]+_0x5e9e80['limit'];var _0x58b791;if(_0x591899>=_0x4b847e){_0x591899=_0x4b847e;_0x58b791=0xc8;}else{_0x58b791=0xce;}_0x586cb6[_0xec3f('0x20')](_0x58b791);return _0x586cb6[_0xec3f('0x26')](_0xec3f('0x27'),_0x115bcc+'-'+_0x591899+'/'+_0x4b847e)[_0xec3f('0x22')](_0x2454cb);}return null;};}function patchUpdates(_0x967b47){return function(_0x4f1d9d){try{jsonpatch['apply'](_0x4f1d9d,_0x967b47,!![]);}catch(_0x3c5417){return BPromise[_0xec3f('0x28')](_0x3c5417);}return _0x4f1d9d['save']();};}function saveUpdates(_0x41adb6,_0x151da6){return function(_0x1f3403){if(_0x1f3403){return _0x1f3403[_0xec3f('0x29')](_0x41adb6)[_0xec3f('0x2a')](function(_0x80be47){return _0x80be47;});}return null;};}function removeEntity(_0x1d0362,_0x267361){return function(_0x276487){if(_0x276487){return _0x276487[_0xec3f('0x2b')]()[_0xec3f('0x2a')](function(){var _0x41799d=_0x276487[_0xec3f('0x2c')]({'plain':!![]});var _0x332284=_0xec3f('0x2d');return db[_0xec3f('0x2e')][_0xec3f('0x2b')]({'where':{'type':_0x332284,'resourceId':_0x41799d['id']}})[_0xec3f('0x2a')](function(){return _0x276487;});})[_0xec3f('0x2a')](function(){_0x1d0362['status'](0xcc)[_0xec3f('0x21')]();});}};}function handleEntityNotFound(_0x9fc85,_0x3767b7){return function(_0x3936b6){if(!_0x3936b6){_0x9fc85[_0xec3f('0x1f')](0x194);}return _0x3936b6;};}function handleError(_0xf089f5,_0x2f670f){_0x2f670f=_0x2f670f||0x1f4;return function(_0x5da586){logger[_0xec3f('0x2f')](_0x5da586[_0xec3f('0x30')]);if(_0x5da586[_0xec3f('0x31')]){delete _0x5da586['name'];}_0xf089f5[_0xec3f('0x20')](_0x2f670f)[_0xec3f('0x32')](_0x5da586);};}exports[_0xec3f('0x33')]=function(_0x4d7044,_0x5558e9){var _0xc6dd83={},_0x3974eb={},_0x580e64={'count':0x0,'rows':[]};var _0x148336=_[_0xec3f('0x34')](db[_0xec3f('0x35')][_0xec3f('0x36')],function(_0x501d04){return{'name':_0x501d04[_0xec3f('0x37')],'type':_0x501d04['type'][_0xec3f('0x38')]};});_0x3974eb['model']=_[_0xec3f('0x34')](_0x148336,_0xec3f('0x31'));_0x3974eb[_0xec3f('0x39')]=_[_0xec3f('0x3a')](_0x4d7044[_0xec3f('0x39')]);_0x3974eb[_0xec3f('0x3b')]=_[_0xec3f('0x3c')](_0x3974eb[_0xec3f('0x3d')],_0x3974eb[_0xec3f('0x39')]);_0xc6dd83[_0xec3f('0x3e')]=_['intersection'](_0x3974eb['model'],qs['fields'](_0x4d7044[_0xec3f('0x39')][_0xec3f('0x3f')]));_0xc6dd83[_0xec3f('0x3e')]=_0xc6dd83[_0xec3f('0x3e')][_0xec3f('0x40')]?_0xc6dd83[_0xec3f('0x3e')]:_0x3974eb[_0xec3f('0x3d')];if(!_0x4d7044[_0xec3f('0x39')][_0xec3f('0x41')]('nolimit')){_0xc6dd83[_0xec3f('0x42')]=qs[_0xec3f('0x42')](_0x4d7044['query'][_0xec3f('0x42')]);_0xc6dd83['offset']=qs[_0xec3f('0x23')](_0x4d7044[_0xec3f('0x39')]['offset']);}_0xc6dd83[_0xec3f('0x43')]=qs[_0xec3f('0x44')](_0x4d7044['query'][_0xec3f('0x44')]);_0xc6dd83[_0xec3f('0x45')]=qs[_0xec3f('0x3b')](_[_0xec3f('0x46')](_0x4d7044[_0xec3f('0x39')],_0x3974eb['filters']),_0x148336);if(_0x4d7044['query'][_0xec3f('0x47')]){_0xc6dd83[_0xec3f('0x45')]=_['merge'](_0xc6dd83[_0xec3f('0x45')],{'$or':_[_0xec3f('0x34')](_0x148336,function(_0x1dca2d){if(_0x1dca2d[_0xec3f('0x48')]!==_0xec3f('0x49')){var _0x3a6620={};_0x3a6620[_0x1dca2d['name']]={'$like':'%'+_0x4d7044[_0xec3f('0x39')][_0xec3f('0x47')]+'%'};return _0x3a6620;}})});}_0xc6dd83=_[_0xec3f('0x4a')]({},_0xc6dd83,_0x4d7044[_0xec3f('0x4b')]);var _0x2da9c2={'where':_0xc6dd83[_0xec3f('0x45')]};return db[_0xec3f('0x35')]['count'](_0x2da9c2)['then'](function(_0x333327){_0x580e64[_0xec3f('0x25')]=_0x333327;if(_0x4d7044[_0xec3f('0x39')][_0xec3f('0x4c')]){_0xc6dd83[_0xec3f('0x4d')]=[{'all':!![]}];}return db[_0xec3f('0x35')][_0xec3f('0x4e')](_0xc6dd83);})[_0xec3f('0x2a')](function(_0x56fe8e){_0x580e64['rows']=_0x56fe8e;return _0x580e64;})['then'](respondWithFilteredResult(_0x5558e9,_0xc6dd83))['catch'](handleError(_0x5558e9,null));};exports[_0xec3f('0x4f')]=function(_0x483251,_0x5af5f7){var _0x48e517={'raw':![],'where':{'id':_0x483251[_0xec3f('0x50')]['id']}},_0x38f5dc={};_0x38f5dc[_0xec3f('0x3d')]=_['keys'](db['Dashboard'][_0xec3f('0x36')]);_0x38f5dc['query']=_[_0xec3f('0x3a')](_0x483251[_0xec3f('0x39')]);_0x38f5dc[_0xec3f('0x3b')]=_[_0xec3f('0x3c')](_0x38f5dc[_0xec3f('0x3d')],_0x38f5dc[_0xec3f('0x39')]);_0x48e517[_0xec3f('0x3e')]=_[_0xec3f('0x3c')](_0x38f5dc['model'],qs[_0xec3f('0x3f')](_0x483251[_0xec3f('0x39')][_0xec3f('0x3f')]));_0x48e517[_0xec3f('0x3e')]=_0x48e517[_0xec3f('0x3e')][_0xec3f('0x40')]?_0x48e517[_0xec3f('0x3e')]:_0x38f5dc['model'];if(_0x483251[_0xec3f('0x39')]['includeAll']){_0x48e517[_0xec3f('0x4d')]=[{'all':!![]}];}_0x48e517=_[_0xec3f('0x4a')]({},_0x48e517,_0x483251['options']);return db[_0xec3f('0x35')][_0xec3f('0x51')](_0x48e517)['then'](handleEntityNotFound(_0x5af5f7,null))[_0xec3f('0x2a')](respondWithResult(_0x5af5f7,null))[_0xec3f('0x52')](handleError(_0x5af5f7,null));};exports[_0xec3f('0x53')]=function(_0x67eaec,_0x2c606b){return db[_0xec3f('0x35')][_0xec3f('0x53')](_0x67eaec[_0xec3f('0x54')],{})['then'](function(_0x3e7e4c){var _0x1c6c9b=_0x67eaec[_0xec3f('0x55')][_0xec3f('0x2c')]({'plain':!![]});if(!_0x1c6c9b)throw new Error(_0xec3f('0x56'));if(_0x1c6c9b[_0xec3f('0x57')]===_0xec3f('0x55')){var _0x439bb5=_0x3e7e4c['get']({'plain':!![]});var _0x5567e0=_0xec3f('0x2d');return db[_0xec3f('0x58')][_0xec3f('0x51')]({'where':{'name':_0x5567e0,'userProfileId':_0x1c6c9b[_0xec3f('0x59')]},'raw':!![]})['then'](function(_0x2c7260){if(_0x2c7260&&_0x2c7260[_0xec3f('0x5a')]===0x0){return db[_0xec3f('0x2e')][_0xec3f('0x53')]({'name':_0x439bb5[_0xec3f('0x31')],'resourceId':_0x439bb5['id'],'type':_0x2c7260[_0xec3f('0x31')],'sectionId':_0x2c7260['id']},{})[_0xec3f('0x2a')](function(){return _0x3e7e4c;});}else{return _0x3e7e4c;}})['catch'](function(_0x1ffd3c){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ffd3c);throw _0x1ffd3c;});}return _0x3e7e4c;})[_0xec3f('0x2a')](respondWithResult(_0x2c606b,0xc9))[_0xec3f('0x52')](handleError(_0x2c606b,null));};exports['clone']=function(_0x59dc9a,_0x28b649){var _0x253fba={'where':{'id':_0x59dc9a['params']['id']}},_0x16d58e={};_0x16d58e[_0xec3f('0x3d')]=_['keys'](db['Dashboard'][_0xec3f('0x36')]);_0x253fba[_0xec3f('0x3e')]=_[_0xec3f('0x3c')](_0x16d58e[_0xec3f('0x3d')],qs[_0xec3f('0x3f')](_0x59dc9a['query'][_0xec3f('0x3f')]));_0x253fba[_0xec3f('0x3e')]=_0x253fba[_0xec3f('0x3e')]['length']?_0x253fba[_0xec3f('0x3e')]:_0x16d58e[_0xec3f('0x3d')];if(_0x59dc9a[_0xec3f('0x39')]['includeAll']){_0x253fba[_0xec3f('0x4d')]=[{'all':!![]}];}_0x253fba=_[_0xec3f('0x4a')]({},_0x253fba,_0x59dc9a[_0xec3f('0x4b')]);return db[_0xec3f('0x35')][_0xec3f('0x51')](_0x253fba)[_0xec3f('0x2a')](handleEntityNotFound(_0x28b649,null))['then'](function(_0x41c0d4){if(_0x41c0d4){var _0x4b7f0c=_0x41c0d4[_0xec3f('0x2c')]({'plain':!![]});_0x4b7f0c=qs['omit'](_0x4b7f0c,['id','createdAt',_0xec3f('0x5b')]);_0x59dc9a[_0xec3f('0x54')]=_['omit'](_0x59dc9a['body'],['id',_0xec3f('0x5c'),_0xec3f('0x5b')]);return db[_0xec3f('0x35')][_0xec3f('0x53')](_[_0xec3f('0x4a')](_0x4b7f0c,_0x59dc9a[_0xec3f('0x54')]),{'include':_0x59dc9a['query'][_0xec3f('0x4c')]?[{'all':!![]}]:undefined})[_0xec3f('0x2a')](function(_0xa9b532){var _0x30d784=_0x59dc9a[_0xec3f('0x55')][_0xec3f('0x2c')]({'plain':!![]});if(!_0x30d784)throw new Error(_0xec3f('0x56'));if(_0x30d784[_0xec3f('0x57')]==='user'){var _0x40a510=_0xa9b532['get']({'plain':!![]});var _0x403afa=_0xec3f('0x2d');return db[_0xec3f('0x58')][_0xec3f('0x51')]({'where':{'name':_0x403afa,'userProfileId':_0x30d784['userProfileId']},'raw':!![]})[_0xec3f('0x2a')](function(_0x5b2369){if(_0x5b2369&&_0x5b2369['autoAssociation']===0x0){return db[_0xec3f('0x2e')][_0xec3f('0x53')]({'name':_0x40a510['name'],'resourceId':_0x40a510['id'],'type':_0x5b2369['name'],'sectionId':_0x5b2369['id']},{})['then'](function(){return _0xa9b532;});}else{return _0xa9b532;}})[_0xec3f('0x52')](function(_0x45f70b){logger[_0xec3f('0x2f')](_0xec3f('0x5d'),_0x45f70b);throw _0x45f70b;});}return _0xa9b532;});}})['then'](respondWithResult(_0x28b649,0xc9))[_0xec3f('0x52')](handleError(_0x28b649,null));};exports[_0xec3f('0x29')]=function(_0x1fc990,_0x148da4){if(_0x1fc990[_0xec3f('0x54')]['id']){delete _0x1fc990[_0xec3f('0x54')]['id'];}return db[_0xec3f('0x35')][_0xec3f('0x51')]({'where':{'id':_0x1fc990[_0xec3f('0x50')]['id']}})['then'](handleEntityNotFound(_0x148da4,null))[_0xec3f('0x2a')](saveUpdates(_0x1fc990[_0xec3f('0x54')],null))[_0xec3f('0x2a')](respondWithResult(_0x148da4,null))['catch'](handleError(_0x148da4,null));};exports['destroy']=function(_0x30222b,_0x219fb6){return db[_0xec3f('0x35')][_0xec3f('0x51')]({'where':{'id':_0x30222b['params']['id']}})[_0xec3f('0x2a')](handleEntityNotFound(_0x219fb6,null))[_0xec3f('0x2a')](removeEntity(_0x219fb6,null))[_0xec3f('0x52')](handleError(_0x219fb6,null));};function widgetAttributes(_0x57b98a){try{switch(_0x57b98a[_0xec3f('0x48')]){case'iframe':return[{'name':_0xec3f('0x5e'),'value':_0x57b98a[_0xec3f('0x5e')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||_0xec3f('0x61')}];case'custom':return[{'name':_0xec3f('0x62'),'value':_0x57b98a[_0xec3f('0x62')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||''}];case _0xec3f('0x63'):return[{'name':'attrHourFormat','value':_0x57b98a[_0xec3f('0x64')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':_0xec3f('0x65'),'value':_0x57b98a[_0xec3f('0x65')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x1]?_0x57b98a[_0xec3f('0x5f')][0x1][_0xec3f('0x60')]:undefined)||_0xec3f('0x66')},{'name':_0xec3f('0x67'),'value':_0x57b98a['attrFontSize']||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x2]?_0x57b98a['attrs'][0x2][_0xec3f('0x60')]:undefined)||0xc}];case _0xec3f('0x68'):return[{'name':_0xec3f('0x69'),'value':_0x57b98a[_0xec3f('0x69')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||_0xec3f('0x6a')},{'name':'attrVoiceQueues','value':_0x57b98a[_0xec3f('0x6b')]||(_0x57b98a['attrs']&&_0x57b98a['attrs'][0x1]?_0x57b98a[_0xec3f('0x5f')][0x1][_0xec3f('0x60')]:undefined)||[]},{'name':_0xec3f('0x67'),'value':_0x57b98a[_0xec3f('0x67')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x2]?_0x57b98a['attrs'][0x2][_0xec3f('0x60')]:undefined)||0x14},{'name':_0xec3f('0x6c'),'value':_0x57b98a[_0xec3f('0x6c')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x3]?_0x57b98a[_0xec3f('0x5f')][0x3]['value']:undefined)||_0xec3f('0x6d')},{'name':'attrEmailAccounts','value':_0x57b98a[_0xec3f('0x6e')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x4]?_0x57b98a[_0xec3f('0x5f')][0x4][_0xec3f('0x60')]:undefined)||''},{'name':_0xec3f('0x6f'),'value':_0x57b98a[_0xec3f('0x6f')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x5]?_0x57b98a['attrs'][0x5]['value']:undefined)||''},{'name':_0xec3f('0x70'),'value':_0x57b98a[_0xec3f('0x70')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x6]?_0x57b98a['attrs'][0x6][_0xec3f('0x60')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x57b98a[_0xec3f('0x71')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x7]?_0x57b98a[_0xec3f('0x5f')][0x7]['value']:undefined)||''},{'name':_0xec3f('0x72'),'value':_0x57b98a[_0xec3f('0x72')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x8]?_0x57b98a['attrs'][0x8]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x57b98a[_0xec3f('0x73')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x9]?_0x57b98a[_0xec3f('0x5f')][0x9][_0xec3f('0x60')]:undefined)||''}];case _0xec3f('0x74'):case _0xec3f('0x75'):return[{'name':_0xec3f('0x76'),'value':_0x57b98a[_0xec3f('0x76')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||_0xec3f('0x6a')},{'name':_0xec3f('0x77'),'value':_0x57b98a[_0xec3f('0x77')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x1]?_0x57b98a[_0xec3f('0x5f')][0x1][_0xec3f('0x60')]:undefined)||null},{'name':_0xec3f('0x78'),'value':_0x57b98a['attrSerie3']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x2]?_0x57b98a[_0xec3f('0x5f')][0x2][_0xec3f('0x60')]:undefined)||null},{'name':_0xec3f('0x6b'),'value':_0x57b98a[_0xec3f('0x6b')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x3]?_0x57b98a[_0xec3f('0x5f')][0x3][_0xec3f('0x60')]:undefined)||[]},{'name':_0xec3f('0x6c'),'value':_0x57b98a['attrChannel']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x4]?_0x57b98a['attrs'][0x4][_0xec3f('0x60')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x57b98a['attrEmailAccounts']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x5]?_0x57b98a['attrs'][0x5][_0xec3f('0x60')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x57b98a['attrFaxAccounts']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x6]?_0x57b98a[_0xec3f('0x5f')][0x6][_0xec3f('0x60')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x57b98a[_0xec3f('0x70')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x7]?_0x57b98a[_0xec3f('0x5f')][0x7][_0xec3f('0x60')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x57b98a['attrOpenchannelAccounts']||(_0x57b98a['attrs']&&_0x57b98a['attrs'][0x8]?_0x57b98a[_0xec3f('0x5f')][0x8][_0xec3f('0x60')]:undefined)||''},{'name':_0xec3f('0x72'),'value':_0x57b98a['attrWhatsappAccounts']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x9]?_0x57b98a['attrs'][0x9][_0xec3f('0x60')]:undefined)||''},{'name':_0xec3f('0x73'),'value':_0x57b98a[_0xec3f('0x73')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0xa]?_0x57b98a[_0xec3f('0x5f')][0xa][_0xec3f('0x60')]:undefined)||''}];case _0xec3f('0x79'):return[{'name':'attrReport','type':_0x57b98a[_0xec3f('0x7a')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a['attrs'][0x0]['type']:undefined)||null,'value':_0x57b98a[_0xec3f('0x7b')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||null},{'name':_0xec3f('0x7c'),'value':_0x57b98a['attrRefresh']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x1]?_0x57b98a['attrs'][0x1][_0xec3f('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x42e06f){logger['error'](_0xec3f('0x7d'),JSON[_0xec3f('0x7e')](_0x42e06f));return[];}}exports[_0xec3f('0x7f')]=function(_0x2072b9,_0x1e7088,_0x26dff2){if(_0x2072b9['body']['id']){delete _0x2072b9[_0xec3f('0x54')]['id'];}return db[_0xec3f('0x35')][_0xec3f('0x51')]({'where':{'id':_0x2072b9[_0xec3f('0x50')]['id']}})[_0xec3f('0x2a')](handleEntityNotFound(_0x1e7088,null))[_0xec3f('0x2a')](function(_0x4761ce){if(_0x4761ce){_0x2072b9[_0xec3f('0x54')][_0xec3f('0x80')]=_0x4761ce['id'];_0x2072b9['body'][_0xec3f('0x5f')]=widgetAttributes(_0x2072b9[_0xec3f('0x54')]);return db[_0xec3f('0x81')][_0xec3f('0x53')](_0x2072b9[_0xec3f('0x54')]);}})[_0xec3f('0x2a')](respondWithResult(_0x1e7088,null))['catch'](handleError(_0x1e7088,null));};exports[_0xec3f('0x82')]=function(_0x2d0841,_0x1fa8d0,_0x54728c){var _0x399c72={};var _0x364ec6={};var _0xbf2758;var _0xd5e0c9;return db['Dashboard'][_0xec3f('0x83')]({'where':{'id':_0x2d0841['params']['id']}})[_0xec3f('0x2a')](handleEntityNotFound(_0x1fa8d0,null))[_0xec3f('0x2a')](function(_0xbfa0db){if(_0xbfa0db){_0xbf2758=_0xbfa0db;_0x364ec6[_0xec3f('0x3d')]=_[_0xec3f('0x3a')](db[_0xec3f('0x81')][_0xec3f('0x36')]);_0x364ec6[_0xec3f('0x39')]=_[_0xec3f('0x3a')](_0x2d0841[_0xec3f('0x39')]);_0x364ec6[_0xec3f('0x3b')]=_[_0xec3f('0x3c')](_0x364ec6[_0xec3f('0x3d')],_0x364ec6['query']);_0x399c72['attributes']=_['intersection'](_0x364ec6[_0xec3f('0x3d')],qs['fields'](_0x2d0841[_0xec3f('0x39')][_0xec3f('0x3f')]));_0x399c72[_0xec3f('0x3e')]=_0x399c72[_0xec3f('0x3e')][_0xec3f('0x40')]?_0x399c72[_0xec3f('0x3e')]:_0x364ec6['model'];_0x399c72['order']=qs[_0xec3f('0x44')](_0x2d0841[_0xec3f('0x39')][_0xec3f('0x44')]);_0x399c72['where']=qs[_0xec3f('0x3b')](_[_0xec3f('0x46')](_0x2d0841[_0xec3f('0x39')],_0x364ec6['filters']));if(_0x2d0841[_0xec3f('0x39')]['filter']){_0x399c72[_0xec3f('0x45')]=_[_0xec3f('0x4a')](_0x399c72[_0xec3f('0x45')],{'$or':_['map'](_0x399c72[_0xec3f('0x3e')],function(_0x98b912){var _0x203ff9={};_0x203ff9[_0x98b912]={'$like':'%'+_0x2d0841[_0xec3f('0x39')][_0xec3f('0x47')]+'%'};return _0x203ff9;})});}_0x399c72=_['merge']({},_0x399c72,_0x2d0841[_0xec3f('0x4b')]);return _0xbf2758[_0xec3f('0x82')](_0x399c72);}})[_0xec3f('0x2a')](function(_0x57a6b8){if(_0x57a6b8){_0xd5e0c9=_0x57a6b8['length'];if(!_0x2d0841[_0xec3f('0x39')]['hasOwnProperty'](_0xec3f('0x84'))){_0x399c72[_0xec3f('0x42')]=qs[_0xec3f('0x42')](_0x2d0841['query'][_0xec3f('0x42')]);_0x399c72['offset']=qs[_0xec3f('0x23')](_0x2d0841[_0xec3f('0x39')][_0xec3f('0x23')]);}return _0xbf2758[_0xec3f('0x82')](_0x399c72);}})[_0xec3f('0x2a')](function(_0x474b89){if(_0x474b89){return _0x474b89?{'count':_0xd5e0c9,'rows':_0x474b89}:null;}})[_0xec3f('0x2a')](respondWithResult(_0x1fa8d0,null))[_0xec3f('0x52')](handleError(_0x1fa8d0,null));};
\ No newline at end of file
+var _0x13a9=['attrSerie2','attrSerie3','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','addItem','getItems','findOne','DashboardItem','hasOwnProperty','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','CustomDashboards','UserProfileResource','error','stack','name','index','Dashboard','rawAttributes','fieldName','type','key','model','map','query','intersection','fields','length','attributes','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','role','update','attrUrl','attrs','https://','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1'];(function(_0x1e2e92,_0x14fe3f){var _0x2541ac=function(_0x45a489){while(--_0x45a489){_0x1e2e92['push'](_0x1e2e92['shift']());}};_0x2541ac(++_0x14fe3f);}(_0x13a9,0x10e));var _0x913a=function(_0x4e0334,_0x57bf8){_0x4e0334=_0x4e0334-0x0;var _0x270733=_0x13a9[_0x4e0334];return _0x270733;};'use strict';var emlformat=require(_0x913a('0x0'));var rimraf=require(_0x913a('0x1'));var zipdir=require(_0x913a('0x2'));var jsonpatch=require(_0x913a('0x3'));var rp=require('request-promise');var moment=require(_0x913a('0x4'));var BPromise=require(_0x913a('0x5'));var Mustache=require(_0x913a('0x6'));var util=require(_0x913a('0x7'));var path=require(_0x913a('0x8'));var sox=require(_0x913a('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x913a('0xa'));var squel=require(_0x913a('0xb'));var crypto=require('crypto');var jsforce=require(_0x913a('0xc'));var deskjs=require(_0x913a('0xd'));var toCsv=require(_0x913a('0xe'));var querystring=require(_0x913a('0xf'));var Papa=require('papaparse');var Redis=require(_0x913a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x913a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x913a('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x913a('0x13'));var config=require(_0x913a('0x14'));var licenseUtil=require(_0x913a('0x15'));var db=require(_0x913a('0x16'))['db'];config[_0x913a('0x17')]=_[_0x913a('0x18')](config['redis'],{'host':_0x913a('0x19'),'port':0x18eb});var socket=require(_0x913a('0x1a'))(new Redis(config['redis']));require(_0x913a('0x1b'))[_0x913a('0x1c')](socket);function respondWithStatusCode(_0x23db48,_0x4e2a79){_0x4e2a79=_0x4e2a79||0xcc;return function(_0x5b8b70){if(_0x5b8b70){return _0x23db48[_0x913a('0x1d')](_0x4e2a79);}return _0x23db48[_0x913a('0x1e')](_0x4e2a79)[_0x913a('0x1f')]();};}function respondWithResult(_0x5440c3,_0x3fabfc){_0x3fabfc=_0x3fabfc||0xc8;return function(_0x4299e4){if(_0x4299e4){return _0x5440c3[_0x913a('0x1e')](_0x3fabfc)[_0x913a('0x20')](_0x4299e4);}};}function respondWithFilteredResult(_0x26b33a,_0x35aa2c){return function(_0x443c17){if(_0x443c17){var _0x595e85=typeof _0x35aa2c[_0x913a('0x21')]===_0x913a('0x22')&&typeof _0x35aa2c[_0x913a('0x23')]===_0x913a('0x22');var _0x6fe362=_0x443c17[_0x913a('0x24')];var _0x2942a8=_0x595e85?0x0:_0x35aa2c[_0x913a('0x21')];var _0x1489b6=_0x595e85?_0x443c17[_0x913a('0x24')]:_0x35aa2c['offset']+_0x35aa2c['limit'];var _0x4aa97f;if(_0x1489b6>=_0x6fe362){_0x1489b6=_0x6fe362;_0x4aa97f=0xc8;}else{_0x4aa97f=0xce;}_0x26b33a[_0x913a('0x1e')](_0x4aa97f);return _0x26b33a[_0x913a('0x25')](_0x913a('0x26'),_0x2942a8+'-'+_0x1489b6+'/'+_0x6fe362)[_0x913a('0x20')](_0x443c17);}return null;};}function patchUpdates(_0x5128a4){return function(_0xd98805){try{jsonpatch[_0x913a('0x27')](_0xd98805,_0x5128a4,!![]);}catch(_0x5ec6d0){return BPromise[_0x913a('0x28')](_0x5ec6d0);}return _0xd98805[_0x913a('0x29')]();};}function saveUpdates(_0x53e37f,_0x5a220b){return function(_0x273f4c){if(_0x273f4c){return _0x273f4c['update'](_0x53e37f)['then'](function(_0x15c732){return _0x15c732;});}return null;};}function removeEntity(_0x2628e9,_0x36d4fb){return function(_0x4ada43){if(_0x4ada43){return _0x4ada43[_0x913a('0x2a')]()[_0x913a('0x2b')](function(){var _0x538b59=_0x4ada43[_0x913a('0x2c')]({'plain':!![]});var _0x16a550=_0x913a('0x2d');return db[_0x913a('0x2e')]['destroy']({'where':{'type':_0x16a550,'resourceId':_0x538b59['id']}})[_0x913a('0x2b')](function(){return _0x4ada43;});})[_0x913a('0x2b')](function(){_0x2628e9[_0x913a('0x1e')](0xcc)[_0x913a('0x1f')]();});}};}function handleEntityNotFound(_0x20ac10,_0x15e45a){return function(_0x2ab993){if(!_0x2ab993){_0x20ac10[_0x913a('0x1d')](0x194);}return _0x2ab993;};}function handleError(_0x34c179,_0xa39820){_0xa39820=_0xa39820||0x1f4;return function(_0x44df8f){logger[_0x913a('0x2f')](_0x44df8f[_0x913a('0x30')]);if(_0x44df8f[_0x913a('0x31')]){delete _0x44df8f[_0x913a('0x31')];}_0x34c179['status'](_0xa39820)['send'](_0x44df8f);};}exports[_0x913a('0x32')]=function(_0x370a20,_0x2e98e4){var _0xa5b601={},_0x29b46d={},_0x3dad99={'count':0x0,'rows':[]};var _0x409767=_['map'](db[_0x913a('0x33')][_0x913a('0x34')],function(_0x1d07f5){return{'name':_0x1d07f5[_0x913a('0x35')],'type':_0x1d07f5[_0x913a('0x36')][_0x913a('0x37')]};});_0x29b46d[_0x913a('0x38')]=_[_0x913a('0x39')](_0x409767,_0x913a('0x31'));_0x29b46d[_0x913a('0x3a')]=_['keys'](_0x370a20[_0x913a('0x3a')]);_0x29b46d['filters']=_[_0x913a('0x3b')](_0x29b46d[_0x913a('0x38')],_0x29b46d['query']);_0xa5b601['attributes']=_[_0x913a('0x3b')](_0x29b46d[_0x913a('0x38')],qs[_0x913a('0x3c')](_0x370a20['query']['fields']));_0xa5b601['attributes']=_0xa5b601['attributes'][_0x913a('0x3d')]?_0xa5b601[_0x913a('0x3e')]:_0x29b46d[_0x913a('0x38')];if(!_0x370a20[_0x913a('0x3a')]['hasOwnProperty']('nolimit')){_0xa5b601[_0x913a('0x23')]=qs['limit'](_0x370a20['query'][_0x913a('0x23')]);_0xa5b601[_0x913a('0x21')]=qs[_0x913a('0x21')](_0x370a20[_0x913a('0x3a')][_0x913a('0x21')]);}_0xa5b601[_0x913a('0x3f')]=qs['sort'](_0x370a20[_0x913a('0x3a')][_0x913a('0x40')]);_0xa5b601[_0x913a('0x41')]=qs[_0x913a('0x42')](_[_0x913a('0x43')](_0x370a20[_0x913a('0x3a')],_0x29b46d[_0x913a('0x42')]),_0x409767);if(_0x370a20[_0x913a('0x3a')][_0x913a('0x44')]){_0xa5b601[_0x913a('0x41')]=_[_0x913a('0x45')](_0xa5b601['where'],{'$or':_[_0x913a('0x39')](_0x409767,function(_0x75324c){if(_0x75324c[_0x913a('0x36')]!==_0x913a('0x46')){var _0x204d3d={};_0x204d3d[_0x75324c['name']]={'$like':'%'+_0x370a20[_0x913a('0x3a')][_0x913a('0x44')]+'%'};return _0x204d3d;}})});}_0xa5b601=_[_0x913a('0x45')]({},_0xa5b601,_0x370a20[_0x913a('0x47')]);var _0x1b7240={'where':_0xa5b601[_0x913a('0x41')]};return db[_0x913a('0x33')]['count'](_0x1b7240)['then'](function(_0x11b2f7){_0x3dad99[_0x913a('0x24')]=_0x11b2f7;if(_0x370a20['query'][_0x913a('0x48')]){_0xa5b601[_0x913a('0x49')]=[{'all':!![]}];}return db[_0x913a('0x33')][_0x913a('0x4a')](_0xa5b601);})[_0x913a('0x2b')](function(_0x4ffdb0){_0x3dad99[_0x913a('0x4b')]=_0x4ffdb0;return _0x3dad99;})[_0x913a('0x2b')](respondWithFilteredResult(_0x2e98e4,_0xa5b601))[_0x913a('0x4c')](handleError(_0x2e98e4,null));};exports['show']=function(_0x174629,_0x2447d2){var _0x5923c4={'raw':![],'where':{'id':_0x174629[_0x913a('0x4d')]['id']}},_0x3f4582={};_0x3f4582[_0x913a('0x38')]=_[_0x913a('0x4e')](db[_0x913a('0x33')][_0x913a('0x34')]);_0x3f4582[_0x913a('0x3a')]=_[_0x913a('0x4e')](_0x174629[_0x913a('0x3a')]);_0x3f4582[_0x913a('0x42')]=_[_0x913a('0x3b')](_0x3f4582[_0x913a('0x38')],_0x3f4582[_0x913a('0x3a')]);_0x5923c4['attributes']=_[_0x913a('0x3b')](_0x3f4582[_0x913a('0x38')],qs[_0x913a('0x3c')](_0x174629['query'][_0x913a('0x3c')]));_0x5923c4[_0x913a('0x3e')]=_0x5923c4['attributes'][_0x913a('0x3d')]?_0x5923c4[_0x913a('0x3e')]:_0x3f4582[_0x913a('0x38')];if(_0x174629['query'][_0x913a('0x48')]){_0x5923c4[_0x913a('0x49')]=[{'all':!![]}];}_0x5923c4=_[_0x913a('0x45')]({},_0x5923c4,_0x174629[_0x913a('0x47')]);return db[_0x913a('0x33')]['find'](_0x5923c4)[_0x913a('0x2b')](handleEntityNotFound(_0x2447d2,null))[_0x913a('0x2b')](respondWithResult(_0x2447d2,null))['catch'](handleError(_0x2447d2,null));};exports[_0x913a('0x4f')]=function(_0x111191,_0x1e9500){return db[_0x913a('0x33')][_0x913a('0x4f')](_0x111191[_0x913a('0x50')],{})['then'](function(_0x877f0d){var _0x295177=_0x111191[_0x913a('0x51')][_0x913a('0x2c')]({'plain':!![]});if(!_0x295177)throw new Error(_0x913a('0x52'));if(_0x295177['role']==='user'){var _0x453240=_0x877f0d['get']({'plain':!![]});var _0x2148af=_0x913a('0x2d');return db[_0x913a('0x53')][_0x913a('0x54')]({'where':{'name':_0x2148af,'userProfileId':_0x295177['userProfileId']},'raw':!![]})[_0x913a('0x2b')](function(_0x5811ef){if(_0x5811ef&&_0x5811ef[_0x913a('0x55')]===0x0){return db[_0x913a('0x2e')][_0x913a('0x4f')]({'name':_0x453240[_0x913a('0x31')],'resourceId':_0x453240['id'],'type':_0x5811ef[_0x913a('0x31')],'sectionId':_0x5811ef['id']},{})[_0x913a('0x2b')](function(){return _0x877f0d;});}else{return _0x877f0d;}})[_0x913a('0x4c')](function(_0x571412){logger[_0x913a('0x2f')](_0x913a('0x56'),_0x571412);throw _0x571412;});}return _0x877f0d;})[_0x913a('0x2b')](respondWithResult(_0x1e9500,0xc9))[_0x913a('0x4c')](handleError(_0x1e9500,null));};exports[_0x913a('0x57')]=function(_0xf031db,_0x4d9f50){var _0x5776db={'where':{'id':_0xf031db['params']['id']}},_0x178715={};_0x178715[_0x913a('0x38')]=_[_0x913a('0x4e')](db[_0x913a('0x33')][_0x913a('0x34')]);_0x5776db['attributes']=_['intersection'](_0x178715['model'],qs[_0x913a('0x3c')](_0xf031db['query']['fields']));_0x5776db[_0x913a('0x3e')]=_0x5776db[_0x913a('0x3e')][_0x913a('0x3d')]?_0x5776db[_0x913a('0x3e')]:_0x178715['model'];if(_0xf031db['query']['includeAll']){_0x5776db[_0x913a('0x49')]=[{'all':!![]}];}_0x5776db=_[_0x913a('0x45')]({},_0x5776db,_0xf031db[_0x913a('0x47')]);return db[_0x913a('0x33')][_0x913a('0x54')](_0x5776db)[_0x913a('0x2b')](handleEntityNotFound(_0x4d9f50,null))[_0x913a('0x2b')](function(_0x5c0f78){if(_0x5c0f78){var _0x3798ee=_0x5c0f78[_0x913a('0x2c')]({'plain':!![]});_0x3798ee=qs['omit'](_0x3798ee,['id',_0x913a('0x58'),_0x913a('0x59')]);_0xf031db[_0x913a('0x50')]=_['omit'](_0xf031db[_0x913a('0x50')],['id',_0x913a('0x58'),_0x913a('0x59')]);return db[_0x913a('0x33')][_0x913a('0x4f')](_['merge'](_0x3798ee,_0xf031db[_0x913a('0x50')]),{'include':_0xf031db[_0x913a('0x3a')][_0x913a('0x48')]?[{'all':!![]}]:undefined})['then'](function(_0x57e8c6){var _0x1df094=_0xf031db[_0x913a('0x51')]['get']({'plain':!![]});if(!_0x1df094)throw new Error(_0x913a('0x52'));if(_0x1df094[_0x913a('0x5a')]==='user'){var _0x27f1a4=_0x57e8c6[_0x913a('0x2c')]({'plain':!![]});var _0x3accdf=_0x913a('0x2d');return db[_0x913a('0x53')][_0x913a('0x54')]({'where':{'name':_0x3accdf,'userProfileId':_0x1df094['userProfileId']},'raw':!![]})['then'](function(_0x5b6a8c){if(_0x5b6a8c&&_0x5b6a8c['autoAssociation']===0x0){return db[_0x913a('0x2e')][_0x913a('0x4f')]({'name':_0x27f1a4[_0x913a('0x31')],'resourceId':_0x27f1a4['id'],'type':_0x5b6a8c['name'],'sectionId':_0x5b6a8c['id']},{})[_0x913a('0x2b')](function(){return _0x57e8c6;});}else{return _0x57e8c6;}})[_0x913a('0x4c')](function(_0x3cf576){logger[_0x913a('0x2f')](_0x913a('0x56'),_0x3cf576);throw _0x3cf576;});}return _0x57e8c6;});}})[_0x913a('0x2b')](respondWithResult(_0x4d9f50,0xc9))[_0x913a('0x4c')](handleError(_0x4d9f50,null));};exports[_0x913a('0x5b')]=function(_0x533e80,_0x1cd8d9){if(_0x533e80['body']['id']){delete _0x533e80[_0x913a('0x50')]['id'];}return db['Dashboard']['find']({'where':{'id':_0x533e80[_0x913a('0x4d')]['id']}})[_0x913a('0x2b')](handleEntityNotFound(_0x1cd8d9,null))[_0x913a('0x2b')](saveUpdates(_0x533e80['body'],null))[_0x913a('0x2b')](respondWithResult(_0x1cd8d9,null))['catch'](handleError(_0x1cd8d9,null));};exports[_0x913a('0x2a')]=function(_0x497094,_0xa07801){return db[_0x913a('0x33')][_0x913a('0x54')]({'where':{'id':_0x497094[_0x913a('0x4d')]['id']}})[_0x913a('0x2b')](handleEntityNotFound(_0xa07801,null))['then'](removeEntity(_0xa07801,null))[_0x913a('0x4c')](handleError(_0xa07801,null));};function widgetAttributes(_0x4ef037){try{switch(_0x4ef037['type']){case'iframe':return[{'name':_0x913a('0x5c'),'value':_0x4ef037[_0x913a('0x5c')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x0]?_0x4ef037[_0x913a('0x5d')][0x0]['value']:undefined)||_0x913a('0x5e')}];case'custom':return[{'name':_0x913a('0x5f'),'value':_0x4ef037[_0x913a('0x5f')]||(_0x4ef037['attrs']&&_0x4ef037['attrs'][0x0]?_0x4ef037[_0x913a('0x5d')][0x0][_0x913a('0x60')]:undefined)||''}];case _0x913a('0x61'):return[{'name':_0x913a('0x62'),'value':_0x4ef037['attrHourFormat']||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x0]?_0x4ef037[_0x913a('0x5d')][0x0][_0x913a('0x60')]:undefined)||_0x913a('0x63')},{'name':_0x913a('0x64'),'value':_0x4ef037[_0x913a('0x64')]||(_0x4ef037['attrs']&&_0x4ef037[_0x913a('0x5d')][0x1]?_0x4ef037['attrs'][0x1][_0x913a('0x60')]:undefined)||'0.00'},{'name':_0x913a('0x65'),'value':_0x4ef037[_0x913a('0x65')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037['attrs'][0x2]?_0x4ef037[_0x913a('0x5d')][0x2]['value']:undefined)||0xc}];case _0x913a('0x66'):return[{'name':_0x913a('0x67'),'value':_0x4ef037[_0x913a('0x67')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x0]?_0x4ef037[_0x913a('0x5d')][0x0]['value']:undefined)||_0x913a('0x68')},{'name':_0x913a('0x69'),'value':_0x4ef037['attrVoiceQueues']||(_0x4ef037['attrs']&&_0x4ef037[_0x913a('0x5d')][0x1]?_0x4ef037[_0x913a('0x5d')][0x1][_0x913a('0x60')]:undefined)||[]},{'name':_0x913a('0x65'),'value':_0x4ef037[_0x913a('0x65')]||(_0x4ef037['attrs']&&_0x4ef037[_0x913a('0x5d')][0x2]?_0x4ef037[_0x913a('0x5d')][0x2][_0x913a('0x60')]:undefined)||0x14},{'name':_0x913a('0x6a'),'value':_0x4ef037['attrChannel']||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x3]?_0x4ef037[_0x913a('0x5d')][0x3][_0x913a('0x60')]:undefined)||_0x913a('0x6b')},{'name':'attrEmailAccounts','value':_0x4ef037[_0x913a('0x6c')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x4]?_0x4ef037[_0x913a('0x5d')][0x4][_0x913a('0x60')]:undefined)||''},{'name':_0x913a('0x6d'),'value':_0x4ef037[_0x913a('0x6d')]||(_0x4ef037['attrs']&&_0x4ef037[_0x913a('0x5d')][0x5]?_0x4ef037[_0x913a('0x5d')][0x5][_0x913a('0x60')]:undefined)||''},{'name':_0x913a('0x6e'),'value':_0x4ef037[_0x913a('0x6e')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x6]?_0x4ef037[_0x913a('0x5d')][0x6]['value']:undefined)||''},{'name':_0x913a('0x6f'),'value':_0x4ef037[_0x913a('0x6f')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x7]?_0x4ef037[_0x913a('0x5d')][0x7][_0x913a('0x60')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x4ef037[_0x913a('0x70')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x8]?_0x4ef037['attrs'][0x8][_0x913a('0x60')]:undefined)||''},{'name':_0x913a('0x71'),'value':_0x4ef037[_0x913a('0x71')]||(_0x4ef037['attrs']&&_0x4ef037[_0x913a('0x5d')][0x9]?_0x4ef037['attrs'][0x9][_0x913a('0x60')]:undefined)||''}];case _0x913a('0x72'):case _0x913a('0x73'):return[{'name':_0x913a('0x74'),'value':_0x4ef037['attrSerie1']||(_0x4ef037['attrs']&&_0x4ef037['attrs'][0x0]?_0x4ef037[_0x913a('0x5d')][0x0][_0x913a('0x60')]:undefined)||_0x913a('0x68')},{'name':_0x913a('0x75'),'value':_0x4ef037[_0x913a('0x75')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x1]?_0x4ef037[_0x913a('0x5d')][0x1][_0x913a('0x60')]:undefined)||null},{'name':_0x913a('0x76'),'value':_0x4ef037[_0x913a('0x76')]||(_0x4ef037['attrs']&&_0x4ef037[_0x913a('0x5d')][0x2]?_0x4ef037['attrs'][0x2][_0x913a('0x60')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x4ef037[_0x913a('0x69')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037['attrs'][0x3]?_0x4ef037[_0x913a('0x5d')][0x3][_0x913a('0x60')]:undefined)||[]},{'name':'attrChannel','value':_0x4ef037[_0x913a('0x6a')]||(_0x4ef037['attrs']&&_0x4ef037[_0x913a('0x5d')][0x4]?_0x4ef037['attrs'][0x4][_0x913a('0x60')]:undefined)||_0x913a('0x6b')},{'name':_0x913a('0x6c'),'value':_0x4ef037[_0x913a('0x6c')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x5]?_0x4ef037[_0x913a('0x5d')][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x4ef037['attrFaxAccounts']||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x6]?_0x4ef037[_0x913a('0x5d')][0x6][_0x913a('0x60')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x4ef037[_0x913a('0x6e')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x7]?_0x4ef037[_0x913a('0x5d')][0x7][_0x913a('0x60')]:undefined)||''},{'name':_0x913a('0x6f'),'value':_0x4ef037[_0x913a('0x6f')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037['attrs'][0x8]?_0x4ef037[_0x913a('0x5d')][0x8][_0x913a('0x60')]:undefined)||''},{'name':_0x913a('0x70'),'value':_0x4ef037[_0x913a('0x70')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x9]?_0x4ef037[_0x913a('0x5d')][0x9][_0x913a('0x60')]:undefined)||''},{'name':'attrChatWebsites','value':_0x4ef037['attrChatWebsites']||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0xa]?_0x4ef037[_0x913a('0x5d')][0xa][_0x913a('0x60')]:undefined)||''}];case'web-report':return[{'name':_0x913a('0x77'),'type':_0x4ef037[_0x913a('0x78')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x0]?_0x4ef037[_0x913a('0x5d')][0x0][_0x913a('0x36')]:undefined)||null,'value':_0x4ef037[_0x913a('0x77')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x0]?_0x4ef037[_0x913a('0x5d')][0x0][_0x913a('0x60')]:undefined)||null},{'name':'attrRefresh','value':_0x4ef037[_0x913a('0x79')]||(_0x4ef037[_0x913a('0x5d')]&&_0x4ef037[_0x913a('0x5d')][0x1]?_0x4ef037['attrs'][0x1][_0x913a('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x1ddc93){logger[_0x913a('0x2f')](_0x913a('0x7a'),JSON['stringify'](_0x1ddc93));return[];}}exports[_0x913a('0x7b')]=function(_0x185fc3,_0x1d2dbf,_0x5b1b37){if(_0x185fc3[_0x913a('0x50')]['id']){delete _0x185fc3['body']['id'];}return db[_0x913a('0x33')][_0x913a('0x54')]({'where':{'id':_0x185fc3[_0x913a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1d2dbf,null))[_0x913a('0x2b')](function(_0x4d14bd){if(_0x4d14bd){_0x185fc3[_0x913a('0x50')]['DashboardId']=_0x4d14bd['id'];_0x185fc3['body'][_0x913a('0x5d')]=widgetAttributes(_0x185fc3[_0x913a('0x50')]);return db['DashboardItem'][_0x913a('0x4f')](_0x185fc3[_0x913a('0x50')]);}})[_0x913a('0x2b')](respondWithResult(_0x1d2dbf,null))[_0x913a('0x4c')](handleError(_0x1d2dbf,null));};exports[_0x913a('0x7c')]=function(_0x32cb41,_0x5abae8,_0x43a297){var _0x967e8c={};var _0xc8e2ac={};var _0x566d50;var _0x1e9b24;return db['Dashboard'][_0x913a('0x7d')]({'where':{'id':_0x32cb41['params']['id']}})[_0x913a('0x2b')](handleEntityNotFound(_0x5abae8,null))[_0x913a('0x2b')](function(_0xd92ce0){if(_0xd92ce0){_0x566d50=_0xd92ce0;_0xc8e2ac[_0x913a('0x38')]=_['keys'](db[_0x913a('0x7e')][_0x913a('0x34')]);_0xc8e2ac[_0x913a('0x3a')]=_[_0x913a('0x4e')](_0x32cb41['query']);_0xc8e2ac[_0x913a('0x42')]=_[_0x913a('0x3b')](_0xc8e2ac[_0x913a('0x38')],_0xc8e2ac[_0x913a('0x3a')]);_0x967e8c[_0x913a('0x3e')]=_[_0x913a('0x3b')](_0xc8e2ac[_0x913a('0x38')],qs['fields'](_0x32cb41[_0x913a('0x3a')][_0x913a('0x3c')]));_0x967e8c[_0x913a('0x3e')]=_0x967e8c[_0x913a('0x3e')][_0x913a('0x3d')]?_0x967e8c[_0x913a('0x3e')]:_0xc8e2ac[_0x913a('0x38')];_0x967e8c[_0x913a('0x3f')]=qs[_0x913a('0x40')](_0x32cb41[_0x913a('0x3a')][_0x913a('0x40')]);_0x967e8c[_0x913a('0x41')]=qs[_0x913a('0x42')](_['pick'](_0x32cb41[_0x913a('0x3a')],_0xc8e2ac[_0x913a('0x42')]));if(_0x32cb41['query'][_0x913a('0x44')]){_0x967e8c[_0x913a('0x41')]=_[_0x913a('0x45')](_0x967e8c[_0x913a('0x41')],{'$or':_[_0x913a('0x39')](_0x967e8c[_0x913a('0x3e')],function(_0x478645){var _0x801a5a={};_0x801a5a[_0x478645]={'$like':'%'+_0x32cb41[_0x913a('0x3a')][_0x913a('0x44')]+'%'};return _0x801a5a;})});}_0x967e8c=_[_0x913a('0x45')]({},_0x967e8c,_0x32cb41[_0x913a('0x47')]);return _0x566d50[_0x913a('0x7c')](_0x967e8c);}})['then'](function(_0x5820df){if(_0x5820df){_0x1e9b24=_0x5820df[_0x913a('0x3d')];if(!_0x32cb41[_0x913a('0x3a')][_0x913a('0x7f')](_0x913a('0x80'))){_0x967e8c[_0x913a('0x23')]=qs[_0x913a('0x23')](_0x32cb41[_0x913a('0x3a')][_0x913a('0x23')]);_0x967e8c[_0x913a('0x21')]=qs[_0x913a('0x21')](_0x32cb41[_0x913a('0x3a')][_0x913a('0x21')]);}return _0x566d50[_0x913a('0x7c')](_0x967e8c);}})['then'](function(_0x16313c){if(_0x16313c){return _0x16313c?{'count':_0x1e9b24,'rows':_0x16313c}:null;}})[_0x913a('0x2b')](respondWithResult(_0x5abae8,null))[_0x913a('0x4c')](handleError(_0x5abae8,null));};
\ No newline at end of file
index cff8d97..f7936a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7286=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','Dashboard','setMaxListeners','save'];(function(_0x56564a,_0x363039){var _0x593718=function(_0x561a55){while(--_0x561a55){_0x56564a['push'](_0x56564a['shift']());}};_0x593718(++_0x363039);}(_0x7286,0xca));var _0x6728=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x7286[_0x599f41];return _0x2e4d58;};'use strict';var EventEmitter=require(_0x6728('0x0'));var Dashboard=require(_0x6728('0x1'))['db'][_0x6728('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x6728('0x3')](0x0);var events={'afterCreate':_0x6728('0x4'),'afterUpdate':'update','afterDestroy':_0x6728('0x5')};function emitEvent(_0x2d0cac){return function(_0x21f700,_0x4db10b,_0x1e167a){DashboardEvents[_0x6728('0x6')](_0x2d0cac+':'+_0x21f700['id'],_0x21f700);DashboardEvents['emit'](_0x2d0cac,_0x21f700);_0x1e167a(null);};}for(var e in events){if(events[_0x6728('0x7')](e)){var event=events[e];Dashboard[_0x6728('0x8')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
+var _0x1e43=['events','../../mysqldb','Dashboard','setMaxListeners','save','update','remove','emit'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x1e43,0x168));var _0x31e4=function(_0x48f7cf,_0x4baa04){_0x48f7cf=_0x48f7cf-0x0;var _0xc201c0=_0x1e43[_0x48f7cf];return _0xc201c0;};'use strict';var EventEmitter=require(_0x31e4('0x0'));var Dashboard=require(_0x31e4('0x1'))['db'][_0x31e4('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x31e4('0x3')](0x0);var events={'afterCreate':_0x31e4('0x4'),'afterUpdate':_0x31e4('0x5'),'afterDestroy':_0x31e4('0x6')};function emitEvent(_0x510dc7){return function(_0x18b49e,_0x3a5d4d,_0x510051){DashboardEvents[_0x31e4('0x7')](_0x510dc7+':'+_0x18b49e['id'],_0x18b49e);DashboardEvents['emit'](_0x510dc7,_0x18b49e);_0x510051(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index db18df9..358f555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6856=['moment','bluebird','rimraf','../../config/environment','exports','define','Dashboard','dashboards','util','api'];(function(_0x18038f,_0xd441){var _0x1713a8=function(_0x5db039){while(--_0x5db039){_0x18038f['push'](_0x18038f['shift']());}};_0x1713a8(++_0xd441);}(_0x6856,0x13e));var _0x6685=function(_0x31d861,_0x1149a4){_0x31d861=_0x31d861-0x0;var _0x1415ea=_0x6856[_0x31d861];return _0x1415ea;};'use strict';var _=require('lodash');var util=require(_0x6685('0x0'));var logger=require('../../config/logger')(_0x6685('0x1'));var moment=require(_0x6685('0x2'));var BPromise=require(_0x6685('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6685('0x4'));var config=require(_0x6685('0x5'));var attributes=require('./dashboard.attributes');module[_0x6685('0x6')]=function(_0x5e9152,_0x2162dd){return _0x5e9152[_0x6685('0x7')](_0x6685('0x8'),attributes,{'tableName':_0x6685('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x51c7=['path','rimraf','../../config/environment','define','Dashboard','dashboards','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x3a3c17,_0x5b7b7e){var _0xd07f21=function(_0xeaad44){while(--_0xeaad44){_0x3a3c17['push'](_0x3a3c17['shift']());}};_0xd07f21(++_0x5b7b7e);}(_0x51c7,0x96));var _0x751c=function(_0x5d5ea8,_0x24952a){_0x5d5ea8=_0x5d5ea8-0x0;var _0x553c87=_0x51c7[_0x5d5ea8];return _0x553c87;};'use strict';var _=require(_0x751c('0x0'));var util=require(_0x751c('0x1'));var logger=require(_0x751c('0x2'))('api');var moment=require(_0x751c('0x3'));var BPromise=require(_0x751c('0x4'));var rp=require(_0x751c('0x5'));var fs=require('fs');var path=require(_0x751c('0x6'));var rimraf=require(_0x751c('0x7'));var config=require(_0x751c('0x8'));var attributes=require('./dashboard.attributes');module['exports']=function(_0x58aca1,_0x42637e){return _0x58aca1[_0x751c('0x9')](_0x751c('0xa'),attributes,{'tableName':_0x751c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c873b2d..d88dc8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c51=['error','Dashboard,\x20%s,\x20%s','message','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','debug','request\x20sent','stringify'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x6c51,0x19a));var _0x16c5=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6c51[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x16c5('0x0'));var BPromise=require('bluebird');var rs=require(_0x16c5('0x1'));var fs=require('fs');var Redis=require(_0x16c5('0x2'));var db=require(_0x16c5('0x3'))['db'];var utils=require(_0x16c5('0x4'));var logger=require(_0x16c5('0x5'))(_0x16c5('0x6'));var config=require(_0x16c5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x16c5('0x8')][_0x16c5('0x9')]({'port':0x232a});config[_0x16c5('0xa')]=_[_0x16c5('0xb')](config[_0x16c5('0xa')],{'host':_0x16c5('0xc'),'port':0x18eb});var socket=require(_0x16c5('0xd'))(new Redis(config[_0x16c5('0xa')]));require(_0x16c5('0xe'))[_0x16c5('0xf')](socket);function respondWithRpcPromise(_0x2a646c,_0x12b2b9,_0x1bd3b7){return new BPromise(function(_0x418b6c,_0x5efbd8){return client[_0x16c5('0x10')](_0x2a646c,_0x1bd3b7)[_0x16c5('0x11')](function(_0x465b67){logger[_0x16c5('0x12')]('Dashboard,\x20%s,\x20%s',_0x12b2b9,'request\x20sent');logger[_0x16c5('0x13')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x12b2b9,_0x16c5('0x14'),JSON[_0x16c5('0x15')](_0x465b67));if(_0x465b67[_0x16c5('0x16')]){if(_0x465b67[_0x16c5('0x16')]['code']===0x1f4){logger[_0x16c5('0x16')](_0x16c5('0x17'),_0x12b2b9,_0x465b67[_0x16c5('0x16')][_0x16c5('0x18')]);return _0x5efbd8(_0x465b67[_0x16c5('0x16')][_0x16c5('0x18')]);}logger[_0x16c5('0x16')](_0x16c5('0x17'),_0x12b2b9,_0x465b67[_0x16c5('0x16')][_0x16c5('0x18')]);return _0x418b6c(_0x465b67['error'][_0x16c5('0x18')]);}else{logger[_0x16c5('0x12')](_0x16c5('0x17'),_0x12b2b9,_0x16c5('0x14'));_0x418b6c(_0x465b67[_0x16c5('0x19')][_0x16c5('0x18')]);}})[_0x16c5('0x1a')](function(_0x1e6212){logger['error'](_0x16c5('0x17'),_0x12b2b9,_0x1e6212);_0x5efbd8(_0x1e6212);});});}
\ No newline at end of file
+var _0x2d8d=['stringify','code','Dashboard,\x20%s,\x20%s','error','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','request\x20sent','debug'];(function(_0x54a6c1,_0x2be625){var _0x2af157=function(_0x14fb5e){while(--_0x14fb5e){_0x54a6c1['push'](_0x54a6c1['shift']());}};_0x2af157(++_0x2be625);}(_0x2d8d,0x115));var _0xd2d8=function(_0x325501,_0x5242f6){_0x325501=_0x325501-0x0;var _0x2c1626=_0x2d8d[_0x325501];return _0x2c1626;};'use strict';var _=require('lodash');var util=require(_0xd2d8('0x0'));var moment=require('moment');var BPromise=require(_0xd2d8('0x1'));var rs=require(_0xd2d8('0x2'));var fs=require('fs');var Redis=require(_0xd2d8('0x3'));var db=require(_0xd2d8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd2d8('0x5'));var config=require(_0xd2d8('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd2d8('0x7')][_0xd2d8('0x8')]({'port':0x232a});config[_0xd2d8('0x9')]=_[_0xd2d8('0xa')](config[_0xd2d8('0x9')],{'host':_0xd2d8('0xb'),'port':0x18eb});var socket=require(_0xd2d8('0xc'))(new Redis(config[_0xd2d8('0x9')]));require(_0xd2d8('0xd'))[_0xd2d8('0xe')](socket);function respondWithRpcPromise(_0x11d914,_0x56ae4b,_0x330d12){return new BPromise(function(_0x57d96f,_0x2bea45){return client[_0xd2d8('0xf')](_0x11d914,_0x330d12)[_0xd2d8('0x10')](function(_0x5bc3e7){logger[_0xd2d8('0x11')]('Dashboard,\x20%s,\x20%s',_0x56ae4b,_0xd2d8('0x12'));logger[_0xd2d8('0x13')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x56ae4b,_0xd2d8('0x12'),JSON[_0xd2d8('0x14')](_0x5bc3e7));if(_0x5bc3e7['error']){if(_0x5bc3e7['error'][_0xd2d8('0x15')]===0x1f4){logger['error'](_0xd2d8('0x16'),_0x56ae4b,_0x5bc3e7[_0xd2d8('0x17')]['message']);return _0x2bea45(_0x5bc3e7[_0xd2d8('0x17')][_0xd2d8('0x18')]);}logger[_0xd2d8('0x17')](_0xd2d8('0x16'),_0x56ae4b,_0x5bc3e7[_0xd2d8('0x17')][_0xd2d8('0x18')]);return _0x57d96f(_0x5bc3e7[_0xd2d8('0x17')][_0xd2d8('0x18')]);}else{logger[_0xd2d8('0x11')](_0xd2d8('0x16'),_0x56ae4b,_0xd2d8('0x12'));_0x57d96f(_0x5bc3e7[_0xd2d8('0x19')][_0xd2d8('0x18')]);}})[_0xd2d8('0x1a')](function(_0x6cfd3c){logger['error'](_0xd2d8('0x16'),_0x56ae4b,_0x6cfd3c);_0x2bea45(_0x6cfd3c);});});}
\ No newline at end of file
index 6fc103d..7879268 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fce=['register','length','dashboard:','./dashboard.events','save','remove','update','removeListener'];(function(_0x364997,_0x3ce8bd){var _0x27e571=function(_0x433e6b){while(--_0x433e6b){_0x364997['push'](_0x364997['shift']());}};_0x27e571(++_0x3ce8bd);}(_0x1fce,0xdb));var _0xe1fc=function(_0x16db8b,_0xca7d28){_0x16db8b=_0x16db8b-0x0;var _0x5ba017=_0x1fce[_0x16db8b];return _0x5ba017;};'use strict';var DashboardEvents=require(_0xe1fc('0x0'));var events=[_0xe1fc('0x1'),_0xe1fc('0x2'),_0xe1fc('0x3')];function createListener(_0x5df3e2,_0x2cbb60){return function(_0x261c8a){_0x2cbb60['emit'](_0x5df3e2,_0x261c8a);};}function removeListener(_0x48a8ce,_0x7b3c3f){return function(){DashboardEvents[_0xe1fc('0x4')](_0x48a8ce,_0x7b3c3f);};}exports[_0xe1fc('0x5')]=function(_0x33b786){for(var _0xac0558=0x0,_0x4eb9c6=events[_0xe1fc('0x6')];_0xac0558<_0x4eb9c6;_0xac0558++){var _0x31d811=events[_0xac0558];var _0x458e0a=createListener(_0xe1fc('0x7')+_0x31d811,_0x33b786);DashboardEvents['on'](_0x31d811,_0x458e0a);}};
\ No newline at end of file
+var _0x9c55=['remove','emit','removeListener','register','length','dashboard:','./dashboard.events','save'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x9c55,0x12e));var _0x59c5=function(_0x448313,_0x2b5e0f){_0x448313=_0x448313-0x0;var _0x3740be=_0x9c55[_0x448313];return _0x3740be;};'use strict';var DashboardEvents=require(_0x59c5('0x0'));var events=[_0x59c5('0x1'),_0x59c5('0x2'),'update'];function createListener(_0x4370ed,_0x46dc6a){return function(_0x319389){_0x46dc6a[_0x59c5('0x3')](_0x4370ed,_0x319389);};}function removeListener(_0x4a83ef,_0x58287a){return function(){DashboardEvents[_0x59c5('0x4')](_0x4a83ef,_0x58287a);};}exports[_0x59c5('0x5')]=function(_0x45a84a){for(var _0x10f4fd=0x0,_0x4b642b=events[_0x59c5('0x6')];_0x10f4fd<_0x4b642b;_0x10f4fd++){var _0x41f8bc=events[_0x10f4fd];var _0x391339=createListener(_0x59c5('0x7')+_0x41f8bc,_0x45a84a);DashboardEvents['on'](_0x41f8bc,_0x391339);}};
\ No newline at end of file
index e4a82c9..759a48f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf5e=['./dashboard.controller','get','isAuthenticated','index','/:id','show','/:id/items','post','create','clone','addItem','update','delete','destroy','path','connect-timeout','express','fs-extra','../../config/environment'];(function(_0x16fda4,_0x39ee5e){var _0x43a676=function(_0x2bfae2){while(--_0x2bfae2){_0x16fda4['push'](_0x16fda4['shift']());}};_0x43a676(++_0x39ee5e);}(_0xdf5e,0x12b));var _0xedf5=function(_0x2defb5,_0x1cda14){_0x2defb5=_0x2defb5-0x0;var _0x229c53=_0xdf5e[_0x2defb5];return _0x229c53;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xedf5('0x0'));var timeout=require(_0xedf5('0x1'));var express=require(_0xedf5('0x2'));var router=express['Router']();var fs_extra=require(_0xedf5('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xedf5('0x4'));var controller=require(_0xedf5('0x5'));router[_0xedf5('0x6')]('/',auth[_0xedf5('0x7')](),controller[_0xedf5('0x8')]);router[_0xedf5('0x6')](_0xedf5('0x9'),auth['isAuthenticated'](),controller[_0xedf5('0xa')]);router['get'](_0xedf5('0xb'),auth[_0xedf5('0x7')](),controller['getItems']);router[_0xedf5('0xc')]('/',auth[_0xedf5('0x7')](),controller[_0xedf5('0xd')]);router['post']('/:id/clone',auth[_0xedf5('0x7')](),controller[_0xedf5('0xe')]);router['post'](_0xedf5('0xb'),auth[_0xedf5('0x7')](),controller[_0xedf5('0xf')]);router['put'](_0xedf5('0x9'),auth[_0xedf5('0x7')](),controller[_0xedf5('0x10')]);router[_0xedf5('0x11')]('/:id',auth[_0xedf5('0x7')](),controller[_0xedf5('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x1555=['./dashboard.controller','get','isAuthenticated','index','show','/:id/items','getItems','post','create','/:id/clone','clone','addItem','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x26448f,_0x4c5be8){var _0x23f221=function(_0x5eb608){while(--_0x5eb608){_0x26448f['push'](_0x26448f['shift']());}};_0x23f221(++_0x4c5be8);}(_0x1555,0x15f));var _0x5155=function(_0x72352c,_0xce6196){_0x72352c=_0x72352c-0x0;var _0x56a0e0=_0x1555[_0x72352c];return _0x56a0e0;};'use strict';var multer=require(_0x5155('0x0'));var util=require(_0x5155('0x1'));var path=require(_0x5155('0x2'));var timeout=require(_0x5155('0x3'));var express=require(_0x5155('0x4'));var router=express[_0x5155('0x5')]();var fs_extra=require(_0x5155('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5155('0x7'));var config=require(_0x5155('0x8'));var controller=require(_0x5155('0x9'));router[_0x5155('0xa')]('/',auth[_0x5155('0xb')](),controller[_0x5155('0xc')]);router['get']('/:id',auth[_0x5155('0xb')](),controller[_0x5155('0xd')]);router[_0x5155('0xa')](_0x5155('0xe'),auth[_0x5155('0xb')](),controller[_0x5155('0xf')]);router[_0x5155('0x10')]('/',auth[_0x5155('0xb')](),controller[_0x5155('0x11')]);router[_0x5155('0x10')](_0x5155('0x12'),auth['isAuthenticated'](),controller[_0x5155('0x13')]);router[_0x5155('0x10')]('/:id/items',auth[_0x5155('0xb')](),controller[_0x5155('0x14')]);router['put'](_0x5155('0x15'),auth[_0x5155('0xb')](),controller['update']);router['delete'](_0x5155('0x15'),auth[_0x5155('0xb')](),controller[_0x5155('0x16')]);module[_0x5155('0x17')]=router;
\ No newline at end of file
index df28824..8e7c5e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','lodash','exports','STRING','TEXT','long'];(function(_0x221827,_0x4ea786){var _0xd1de18=function(_0x4d41a9){while(--_0x4d41a9){_0x221827['push'](_0x221827['shift']());}};_0xd1de18(++_0x4ea786);}(_0x4975,0x86));var _0x5497=function(_0x8a83ef,_0x1ee179){_0x8a83ef=_0x8a83ef-0x0;var _0x10e2ce=_0x4975[_0x8a83ef];return _0x10e2ce;};'use strict';var Sequelize=require(_0x5497('0x0'));var squel=require('squel');var _=require(_0x5497('0x1'));module[_0x5497('0x2')]={'title':{'type':Sequelize[_0x5497('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x5497('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x5497('0x4')](_0x5497('0x5')),'get':function(){try{return JSON[_0x5497('0x6')](this[_0x5497('0x7')](_0x5497('0x8')));}catch(_0x5d5272){return[];}},'set':function(_0x539a27){try{this[_0x5497('0x9')]('attrs',JSON[_0x5497('0xa')](_0x539a27));}catch(_0x674a2a){this[_0x5497('0x9')]('attrs',JSON[_0x5497('0xa')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x5497('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5497('0xb')]},'col':{'type':Sequelize[_0x5497('0xb')]},'background':{'type':Sequelize[_0x5497('0x3')],'allowNull':![],'defaultValue':_0x5497('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x5497('0x3')],'allowNull':![],'defaultValue':_0x5497('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5497('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0xc4aa=['getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','squel','lodash','exports','STRING'];(function(_0x2b6060,_0x37e3f5){var _0x5d19c6=function(_0x17c310){while(--_0x17c310){_0x2b6060['push'](_0x2b6060['shift']());}};_0x5d19c6(++_0x37e3f5);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xc4aa[_0x5f09c5];return _0x426ad9;};'use strict';var Sequelize=require(_0xac4a('0x0'));var squel=require(_0xac4a('0x1'));var _=require(_0xac4a('0x2'));module[_0xac4a('0x3')]={'title':{'type':Sequelize[_0xac4a('0x4')],'allowNull':![]},'type':{'type':Sequelize[_0xac4a('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT']('long'),'get':function(){try{return JSON['parse'](this[_0xac4a('0x5')](_0xac4a('0x6')));}catch(_0x730a38){return[];}},'set':function(_0x215f39){try{this[_0xac4a('0x7')](_0xac4a('0x6'),JSON[_0xac4a('0x8')](_0x215f39));}catch(_0x10525b){this['setDataValue']('attrs',JSON[_0xac4a('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0xac4a('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xac4a('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0xac4a('0x9')]},'background':{'type':Sequelize[_0xac4a('0x4')],'allowNull':![],'defaultValue':_0xac4a('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xac4a('0xb'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0xac4a('0x9')],'defaultValue':0xc}};
\ No newline at end of file
index 2144076..ec08e5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e83=['0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','type','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','body','create','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','show','model','keys','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','catch','find','params','iframe','attrUrl','attrs','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone'];(function(_0x393e6c,_0x4f2f55){var _0x2842cb=function(_0x2e3fd1){while(--_0x2e3fd1){_0x393e6c['push'](_0x393e6c['shift']());}};_0x2842cb(++_0x4f2f55);}(_0x4e83,0x1ae));var _0x34e8=function(_0x22ffbf,_0x16f31e){_0x22ffbf=_0x22ffbf-0x0;var _0x360c17=_0x4e83[_0x22ffbf];return _0x360c17;};'use strict';var emlformat=require(_0x34e8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x34e8('0x1'));var jsonpatch=require(_0x34e8('0x2'));var rp=require(_0x34e8('0x3'));var moment=require(_0x34e8('0x4'));var BPromise=require(_0x34e8('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x34e8('0x6'));var ejs=require(_0x34e8('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34e8('0x8'));var squel=require(_0x34e8('0x9'));var crypto=require(_0x34e8('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x34e8('0xb'));var toCsv=require(_0x34e8('0x6'));var querystring=require(_0x34e8('0xc'));var Papa=require('papaparse');var Redis=require(_0x34e8('0xd'));var authService=require(_0x34e8('0xe'));var qs=require(_0x34e8('0xf'));var as=require(_0x34e8('0x10'));var hardwareService=require(_0x34e8('0x11'));var logger=require(_0x34e8('0x12'))(_0x34e8('0x13'));var utils=require(_0x34e8('0x14'));var config=require(_0x34e8('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x34e8('0x16'))['db'];config[_0x34e8('0x17')]=_['defaults'](config[_0x34e8('0x17')],{'host':_0x34e8('0x18'),'port':0x18eb});var socket=require(_0x34e8('0x19'))(new Redis(config[_0x34e8('0x17')]));require(_0x34e8('0x1a'))[_0x34e8('0x1b')](socket);function respondWithStatusCode(_0x21f234,_0x621c31){_0x621c31=_0x621c31||0xcc;return function(_0x4498d0){if(_0x4498d0){return _0x21f234['sendStatus'](_0x621c31);}return _0x21f234[_0x34e8('0x1c')](_0x621c31)[_0x34e8('0x1d')]();};}function respondWithResult(_0x36adfb,_0x332735){_0x332735=_0x332735||0xc8;return function(_0x3772d7){if(_0x3772d7){return _0x36adfb['status'](_0x332735)[_0x34e8('0x1e')](_0x3772d7);}};}function respondWithFilteredResult(_0x37b6ae,_0x2d080a){return function(_0x708dd4){if(_0x708dd4){var _0x381484=typeof _0x2d080a[_0x34e8('0x1f')]===_0x34e8('0x20')&&typeof _0x2d080a[_0x34e8('0x21')]===_0x34e8('0x20');var _0x19b9a4=_0x708dd4[_0x34e8('0x22')];var _0x53b90a=_0x381484?0x0:_0x2d080a[_0x34e8('0x1f')];var _0x368706=_0x381484?_0x708dd4[_0x34e8('0x22')]:_0x2d080a[_0x34e8('0x1f')]+_0x2d080a[_0x34e8('0x21')];var _0x188055;if(_0x368706>=_0x19b9a4){_0x368706=_0x19b9a4;_0x188055=0xc8;}else{_0x188055=0xce;}_0x37b6ae[_0x34e8('0x1c')](_0x188055);return _0x37b6ae[_0x34e8('0x23')]('Content-Range',_0x53b90a+'-'+_0x368706+'/'+_0x19b9a4)[_0x34e8('0x1e')](_0x708dd4);}return null;};}function patchUpdates(_0x20c7d3){return function(_0x4a3086){try{jsonpatch[_0x34e8('0x24')](_0x4a3086,_0x20c7d3,!![]);}catch(_0x592c0e){return BPromise[_0x34e8('0x25')](_0x592c0e);}return _0x4a3086[_0x34e8('0x26')]();};}function saveUpdates(_0x43c689,_0x51f28e){return function(_0x58cb2f){if(_0x58cb2f){return _0x58cb2f[_0x34e8('0x27')](_0x43c689)[_0x34e8('0x28')](function(_0xb8c9f){return _0xb8c9f;});}return null;};}function removeEntity(_0x2dad57,_0x2e29fb){return function(_0xe098f4){if(_0xe098f4){return _0xe098f4[_0x34e8('0x29')]()['then'](function(){_0x2dad57[_0x34e8('0x1c')](0xcc)[_0x34e8('0x1d')]();});}};}function handleEntityNotFound(_0x46c2a0,_0x277457){return function(_0xe77c9e){if(!_0xe77c9e){_0x46c2a0[_0x34e8('0x2a')](0x194);}return _0xe77c9e;};}function handleError(_0x21f31e,_0xae7ab8){_0xae7ab8=_0xae7ab8||0x1f4;return function(_0x2b445a){logger[_0x34e8('0x2b')](_0x2b445a[_0x34e8('0x2c')]);if(_0x2b445a[_0x34e8('0x2d')]){delete _0x2b445a[_0x34e8('0x2d')];}_0x21f31e[_0x34e8('0x1c')](_0xae7ab8)[_0x34e8('0x2e')](_0x2b445a);};}exports[_0x34e8('0x2f')]=function(_0x2eb565,_0x5c20db){var _0x3e7e42={'raw':![],'where':{'id':_0x2eb565['params']['id']}},_0x1a3146={};_0x1a3146[_0x34e8('0x30')]=_[_0x34e8('0x31')](db[_0x34e8('0x32')][_0x34e8('0x33')]);_0x1a3146[_0x34e8('0x34')]=_[_0x34e8('0x31')](_0x2eb565[_0x34e8('0x34')]);_0x1a3146[_0x34e8('0x35')]=_[_0x34e8('0x36')](_0x1a3146[_0x34e8('0x30')],_0x1a3146[_0x34e8('0x34')]);_0x3e7e42[_0x34e8('0x37')]=_[_0x34e8('0x36')](_0x1a3146[_0x34e8('0x30')],qs[_0x34e8('0x38')](_0x2eb565[_0x34e8('0x34')][_0x34e8('0x38')]));_0x3e7e42['attributes']=_0x3e7e42[_0x34e8('0x37')][_0x34e8('0x39')]?_0x3e7e42['attributes']:_0x1a3146[_0x34e8('0x30')];if(_0x2eb565[_0x34e8('0x34')][_0x34e8('0x3a')]){_0x3e7e42[_0x34e8('0x3b')]=[{'all':!![]}];}_0x3e7e42=_[_0x34e8('0x3c')]({},_0x3e7e42,_0x2eb565[_0x34e8('0x3d')]);return db[_0x34e8('0x32')]['find'](_0x3e7e42)['then'](handleEntityNotFound(_0x5c20db,null))[_0x34e8('0x28')](respondWithResult(_0x5c20db,null))[_0x34e8('0x3e')](handleError(_0x5c20db,null));};exports[_0x34e8('0x29')]=function(_0x5988b4,_0x32f216){return db[_0x34e8('0x32')][_0x34e8('0x3f')]({'where':{'id':_0x5988b4[_0x34e8('0x40')]['id']}})[_0x34e8('0x28')](handleEntityNotFound(_0x32f216,null))[_0x34e8('0x28')](removeEntity(_0x32f216,null))[_0x34e8('0x3e')](handleError(_0x32f216,null));};function widgetAttributes(_0x2e4fce){try{switch(_0x2e4fce['type']){case _0x34e8('0x41'):return[{'name':_0x34e8('0x42'),'value':_0x2e4fce[_0x34e8('0x42')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0]['value']:undefined)||'https://'}];case _0x34e8('0x44'):return[{'name':_0x34e8('0x45'),'value':_0x2e4fce['attrPath']||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0][_0x34e8('0x46')]:undefined)||''}];case _0x34e8('0x47'):return[{'name':_0x34e8('0x48'),'value':_0x2e4fce[_0x34e8('0x48')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce['attrs'][0x0]['value']:undefined)||_0x34e8('0x49')},{'name':'attrTimezone','value':_0x2e4fce[_0x34e8('0x4a')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x1]?_0x2e4fce[_0x34e8('0x43')][0x1]['value']:undefined)||_0x34e8('0x4b')},{'name':_0x34e8('0x4c'),'value':_0x2e4fce[_0x34e8('0x4c')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x2]?_0x2e4fce['attrs'][0x2][_0x34e8('0x46')]:undefined)||0xc}];case'counter':return[{'name':_0x34e8('0x4d'),'value':_0x2e4fce[_0x34e8('0x4d')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0][_0x34e8('0x46')]:undefined)||_0x34e8('0x4e')},{'name':'attrVoiceQueues','value':_0x2e4fce[_0x34e8('0x4f')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x1]?_0x2e4fce['attrs'][0x1][_0x34e8('0x46')]:undefined)||[]},{'name':'attrFontSize','value':_0x2e4fce[_0x34e8('0x4c')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x2]?_0x2e4fce[_0x34e8('0x43')][0x2]['value']:undefined)||0x14},{'name':_0x34e8('0x50'),'value':_0x2e4fce['attrChannel']||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x3]?_0x2e4fce[_0x34e8('0x43')][0x3][_0x34e8('0x46')]:undefined)||_0x34e8('0x51')},{'name':_0x34e8('0x52'),'value':_0x2e4fce[_0x34e8('0x52')]||(_0x2e4fce['attrs']&&_0x2e4fce['attrs'][0x4]?_0x2e4fce[_0x34e8('0x43')][0x4][_0x34e8('0x46')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x2e4fce[_0x34e8('0x53')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x5]?_0x2e4fce['attrs'][0x5][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x54'),'value':_0x2e4fce['attrSmsAccounts']||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x6]?_0x2e4fce['attrs'][0x6][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x55'),'value':_0x2e4fce[_0x34e8('0x55')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x7]?_0x2e4fce[_0x34e8('0x43')][0x7][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x56'),'value':_0x2e4fce[_0x34e8('0x56')]||(_0x2e4fce['attrs']&&_0x2e4fce['attrs'][0x8]?_0x2e4fce[_0x34e8('0x43')][0x8][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x57'),'value':_0x2e4fce[_0x34e8('0x57')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x9]?_0x2e4fce[_0x34e8('0x43')][0x9][_0x34e8('0x46')]:undefined)||''}];case _0x34e8('0x58'):case'pie-chart':return[{'name':'attrSerie1','value':_0x2e4fce[_0x34e8('0x59')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0][_0x34e8('0x46')]:undefined)||_0x34e8('0x4e')},{'name':'attrSerie2','value':_0x2e4fce[_0x34e8('0x5a')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x1]?_0x2e4fce[_0x34e8('0x43')][0x1][_0x34e8('0x46')]:undefined)||null},{'name':_0x34e8('0x5b'),'value':_0x2e4fce[_0x34e8('0x5b')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x2]?_0x2e4fce[_0x34e8('0x43')][0x2][_0x34e8('0x46')]:undefined)||null},{'name':_0x34e8('0x4f'),'value':_0x2e4fce[_0x34e8('0x4f')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x3]?_0x2e4fce[_0x34e8('0x43')][0x3][_0x34e8('0x46')]:undefined)||[]},{'name':_0x34e8('0x50'),'value':_0x2e4fce[_0x34e8('0x50')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x4]?_0x2e4fce[_0x34e8('0x43')][0x4][_0x34e8('0x46')]:undefined)||_0x34e8('0x51')},{'name':_0x34e8('0x52'),'value':_0x2e4fce[_0x34e8('0x52')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x5]?_0x2e4fce[_0x34e8('0x43')][0x5][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x53'),'value':_0x2e4fce[_0x34e8('0x53')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x6]?_0x2e4fce[_0x34e8('0x43')][0x6][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x54'),'value':_0x2e4fce[_0x34e8('0x54')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x7]?_0x2e4fce[_0x34e8('0x43')][0x7][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x55'),'value':_0x2e4fce[_0x34e8('0x55')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x8]?_0x2e4fce[_0x34e8('0x43')][0x8]['value']:undefined)||''},{'name':_0x34e8('0x56'),'value':_0x2e4fce['attrWhatsappAccounts']||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x9]?_0x2e4fce['attrs'][0x9][_0x34e8('0x46')]:undefined)||''},{'name':'attrChatWebsites','value':_0x2e4fce[_0x34e8('0x57')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0xa]?_0x2e4fce[_0x34e8('0x43')][0xa][_0x34e8('0x46')]:undefined)||''}];case _0x34e8('0x5c'):return[{'name':'attrReport','type':_0x2e4fce[_0x34e8('0x5d')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce['attrs'][0x0][_0x34e8('0x5e')]:undefined)||null,'value':_0x2e4fce[_0x34e8('0x5f')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0]['value']:undefined)||null},{'name':_0x34e8('0x60'),'value':_0x2e4fce[_0x34e8('0x60')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x1]?_0x2e4fce[_0x34e8('0x43')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x4d1ad9){logger['error'](_0x34e8('0x61'),JSON[_0x34e8('0x62')](_0x4d1ad9));return[];}}exports['create']=function(_0x32e199,_0x41cbed){if(_0x32e199[_0x34e8('0x63')]){_0x32e199[_0x34e8('0x63')][_0x34e8('0x43')]=widgetAttributes(_0x32e199[_0x34e8('0x63')]);}return db[_0x34e8('0x32')][_0x34e8('0x64')](_0x32e199[_0x34e8('0x63')],{})[_0x34e8('0x28')](respondWithResult(_0x41cbed,0xc9))[_0x34e8('0x3e')](handleError(_0x41cbed,null));};exports['update']=function(_0x1ddd9c,_0x6baa1c){if(_0x1ddd9c['body']['id']){delete _0x1ddd9c[_0x34e8('0x63')]['id'];}_0x1ddd9c[_0x34e8('0x63')]['attrs']=widgetAttributes(_0x1ddd9c['body']);return db[_0x34e8('0x32')]['find']({'where':{'id':_0x1ddd9c['params']['id']}})['then'](handleEntityNotFound(_0x6baa1c,null))[_0x34e8('0x28')](saveUpdates(_0x1ddd9c['body'],null))[_0x34e8('0x28')](respondWithResult(_0x6baa1c,null))[_0x34e8('0x3e')](handleError(_0x6baa1c,null));};
\ No newline at end of file
+var _0x1115=['clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','show','DashboardItem','rawAttributes','query','keys','filters','intersection','attributes','model','fields','length','includeAll','merge','options','catch','find','params','type','iframe','attrUrl','attrs','value','https://','custom','attrPath'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1115,0x1b6));var _0x5111=function(_0x31c7b3,_0x4da6c8){_0x31c7b3=_0x31c7b3-0x0;var _0x22a194=_0x1115[_0x31c7b3];return _0x22a194;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5111('0x0'));var zipdir=require(_0x5111('0x1'));var jsonpatch=require(_0x5111('0x2'));var rp=require(_0x5111('0x3'));var moment=require(_0x5111('0x4'));var BPromise=require(_0x5111('0x5'));var Mustache=require(_0x5111('0x6'));var util=require(_0x5111('0x7'));var path=require(_0x5111('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5111('0x9'));var fs=require('fs');var fs_extra=require(_0x5111('0xa'));var _=require('lodash');var squel=require(_0x5111('0xb'));var crypto=require(_0x5111('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5111('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5111('0xe'));var Papa=require(_0x5111('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5111('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5111('0x11'));var logger=require('../../config/logger')(_0x5111('0x12'));var utils=require(_0x5111('0x13'));var config=require(_0x5111('0x14'));var licenseUtil=require(_0x5111('0x15'));var db=require(_0x5111('0x16'))['db'];config[_0x5111('0x17')]=_[_0x5111('0x18')](config[_0x5111('0x17')],{'host':_0x5111('0x19'),'port':0x18eb});var socket=require(_0x5111('0x1a'))(new Redis(config[_0x5111('0x17')]));require(_0x5111('0x1b'))[_0x5111('0x1c')](socket);function respondWithStatusCode(_0x3e60b5,_0x3721d5){_0x3721d5=_0x3721d5||0xcc;return function(_0x291d54){if(_0x291d54){return _0x3e60b5[_0x5111('0x1d')](_0x3721d5);}return _0x3e60b5[_0x5111('0x1e')](_0x3721d5)['end']();};}function respondWithResult(_0x1ac606,_0x54e2b7){_0x54e2b7=_0x54e2b7||0xc8;return function(_0x5ba7b1){if(_0x5ba7b1){return _0x1ac606[_0x5111('0x1e')](_0x54e2b7)[_0x5111('0x1f')](_0x5ba7b1);}};}function respondWithFilteredResult(_0x638470,_0x51ce4a){return function(_0x367f8d){if(_0x367f8d){var _0xa3f4ba=typeof _0x51ce4a['offset']===_0x5111('0x20')&&typeof _0x51ce4a[_0x5111('0x21')]===_0x5111('0x20');var _0x1b3b45=_0x367f8d['count'];var _0x52d236=_0xa3f4ba?0x0:_0x51ce4a[_0x5111('0x22')];var _0x1b0e5c=_0xa3f4ba?_0x367f8d[_0x5111('0x23')]:_0x51ce4a[_0x5111('0x22')]+_0x51ce4a[_0x5111('0x21')];var _0x3e8de1;if(_0x1b0e5c>=_0x1b3b45){_0x1b0e5c=_0x1b3b45;_0x3e8de1=0xc8;}else{_0x3e8de1=0xce;}_0x638470[_0x5111('0x1e')](_0x3e8de1);return _0x638470[_0x5111('0x24')](_0x5111('0x25'),_0x52d236+'-'+_0x1b0e5c+'/'+_0x1b3b45)['json'](_0x367f8d);}return null;};}function patchUpdates(_0x3f462d){return function(_0x162ff9){try{jsonpatch[_0x5111('0x26')](_0x162ff9,_0x3f462d,!![]);}catch(_0x5bf534){return BPromise[_0x5111('0x27')](_0x5bf534);}return _0x162ff9[_0x5111('0x28')]();};}function saveUpdates(_0x2d9446,_0x268070){return function(_0x10a3fe){if(_0x10a3fe){return _0x10a3fe[_0x5111('0x29')](_0x2d9446)[_0x5111('0x2a')](function(_0x316b39){return _0x316b39;});}return null;};}function removeEntity(_0x382bd0,_0x1a5793){return function(_0x4ffdc3){if(_0x4ffdc3){return _0x4ffdc3[_0x5111('0x2b')]()[_0x5111('0x2a')](function(){_0x382bd0[_0x5111('0x1e')](0xcc)[_0x5111('0x2c')]();});}};}function handleEntityNotFound(_0x265149,_0x403dd7){return function(_0x2e24ed){if(!_0x2e24ed){_0x265149['sendStatus'](0x194);}return _0x2e24ed;};}function handleError(_0x1ce17f,_0x46134c){_0x46134c=_0x46134c||0x1f4;return function(_0x25a75a){logger['error'](_0x25a75a[_0x5111('0x2d')]);if(_0x25a75a[_0x5111('0x2e')]){delete _0x25a75a[_0x5111('0x2e')];}_0x1ce17f['status'](_0x46134c)['send'](_0x25a75a);};}exports[_0x5111('0x2f')]=function(_0x5165fc,_0xbacf9e){var _0x5b5a6d={'raw':![],'where':{'id':_0x5165fc['params']['id']}},_0x35ed41={};_0x35ed41['model']=_['keys'](db[_0x5111('0x30')][_0x5111('0x31')]);_0x35ed41[_0x5111('0x32')]=_[_0x5111('0x33')](_0x5165fc[_0x5111('0x32')]);_0x35ed41[_0x5111('0x34')]=_[_0x5111('0x35')](_0x35ed41['model'],_0x35ed41[_0x5111('0x32')]);_0x5b5a6d[_0x5111('0x36')]=_[_0x5111('0x35')](_0x35ed41[_0x5111('0x37')],qs['fields'](_0x5165fc['query'][_0x5111('0x38')]));_0x5b5a6d[_0x5111('0x36')]=_0x5b5a6d[_0x5111('0x36')][_0x5111('0x39')]?_0x5b5a6d[_0x5111('0x36')]:_0x35ed41[_0x5111('0x37')];if(_0x5165fc[_0x5111('0x32')][_0x5111('0x3a')]){_0x5b5a6d['include']=[{'all':!![]}];}_0x5b5a6d=_[_0x5111('0x3b')]({},_0x5b5a6d,_0x5165fc[_0x5111('0x3c')]);return db[_0x5111('0x30')]['find'](_0x5b5a6d)[_0x5111('0x2a')](handleEntityNotFound(_0xbacf9e,null))[_0x5111('0x2a')](respondWithResult(_0xbacf9e,null))[_0x5111('0x3d')](handleError(_0xbacf9e,null));};exports['destroy']=function(_0x4ecbc9,_0x4c26b1){return db[_0x5111('0x30')][_0x5111('0x3e')]({'where':{'id':_0x4ecbc9[_0x5111('0x3f')]['id']}})[_0x5111('0x2a')](handleEntityNotFound(_0x4c26b1,null))[_0x5111('0x2a')](removeEntity(_0x4c26b1,null))['catch'](handleError(_0x4c26b1,null));};function widgetAttributes(_0x45d094){try{switch(_0x45d094[_0x5111('0x40')]){case _0x5111('0x41'):return[{'name':_0x5111('0x42'),'value':_0x45d094['attrUrl']||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x0]?_0x45d094[_0x5111('0x43')][0x0][_0x5111('0x44')]:undefined)||_0x5111('0x45')}];case _0x5111('0x46'):return[{'name':_0x5111('0x47'),'value':_0x45d094[_0x5111('0x47')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x0]?_0x45d094[_0x5111('0x43')][0x0][_0x5111('0x44')]:undefined)||''}];case _0x5111('0x48'):return[{'name':'attrHourFormat','value':_0x45d094[_0x5111('0x49')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094['attrs'][0x0]?_0x45d094[_0x5111('0x43')][0x0][_0x5111('0x44')]:undefined)||_0x5111('0x4a')},{'name':_0x5111('0x4b'),'value':_0x45d094[_0x5111('0x4b')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x1]?_0x45d094['attrs'][0x1][_0x5111('0x44')]:undefined)||_0x5111('0x4c')},{'name':_0x5111('0x4d'),'value':_0x45d094[_0x5111('0x4d')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094['attrs'][0x2]?_0x45d094['attrs'][0x2][_0x5111('0x44')]:undefined)||0xc}];case _0x5111('0x4e'):return[{'name':'attrMetric','value':_0x45d094[_0x5111('0x4f')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x0]?_0x45d094[_0x5111('0x43')][0x0][_0x5111('0x44')]:undefined)||_0x5111('0x50')},{'name':_0x5111('0x51'),'value':_0x45d094[_0x5111('0x51')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x1]?_0x45d094['attrs'][0x1]['value']:undefined)||[]},{'name':_0x5111('0x4d'),'value':_0x45d094[_0x5111('0x4d')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x2]?_0x45d094[_0x5111('0x43')][0x2][_0x5111('0x44')]:undefined)||0x14},{'name':'attrChannel','value':_0x45d094[_0x5111('0x52')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x3]?_0x45d094[_0x5111('0x43')][0x3]['value']:undefined)||_0x5111('0x53')},{'name':_0x5111('0x54'),'value':_0x45d094[_0x5111('0x54')]||(_0x45d094['attrs']&&_0x45d094[_0x5111('0x43')][0x4]?_0x45d094[_0x5111('0x43')][0x4][_0x5111('0x44')]:undefined)||''},{'name':_0x5111('0x55'),'value':_0x45d094['attrFaxAccounts']||(_0x45d094['attrs']&&_0x45d094[_0x5111('0x43')][0x5]?_0x45d094['attrs'][0x5]['value']:undefined)||''},{'name':_0x5111('0x56'),'value':_0x45d094[_0x5111('0x56')]||(_0x45d094['attrs']&&_0x45d094[_0x5111('0x43')][0x6]?_0x45d094[_0x5111('0x43')][0x6][_0x5111('0x44')]:undefined)||''},{'name':_0x5111('0x57'),'value':_0x45d094[_0x5111('0x57')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x7]?_0x45d094[_0x5111('0x43')][0x7][_0x5111('0x44')]:undefined)||''},{'name':_0x5111('0x58'),'value':_0x45d094[_0x5111('0x58')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094['attrs'][0x8]?_0x45d094[_0x5111('0x43')][0x8][_0x5111('0x44')]:undefined)||''},{'name':_0x5111('0x59'),'value':_0x45d094[_0x5111('0x59')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x9]?_0x45d094[_0x5111('0x43')][0x9]['value']:undefined)||''}];case'multibar-chart':case _0x5111('0x5a'):return[{'name':'attrSerie1','value':_0x45d094[_0x5111('0x5b')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x0]?_0x45d094[_0x5111('0x43')][0x0][_0x5111('0x44')]:undefined)||_0x5111('0x50')},{'name':_0x5111('0x5c'),'value':_0x45d094['attrSerie2']||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x1]?_0x45d094['attrs'][0x1][_0x5111('0x44')]:undefined)||null},{'name':_0x5111('0x5d'),'value':_0x45d094['attrSerie3']||(_0x45d094[_0x5111('0x43')]&&_0x45d094['attrs'][0x2]?_0x45d094['attrs'][0x2]['value']:undefined)||null},{'name':_0x5111('0x51'),'value':_0x45d094[_0x5111('0x51')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x3]?_0x45d094['attrs'][0x3][_0x5111('0x44')]:undefined)||[]},{'name':_0x5111('0x52'),'value':_0x45d094[_0x5111('0x52')]||(_0x45d094['attrs']&&_0x45d094[_0x5111('0x43')][0x4]?_0x45d094[_0x5111('0x43')][0x4][_0x5111('0x44')]:undefined)||'voice'},{'name':_0x5111('0x54'),'value':_0x45d094['attrEmailAccounts']||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x5]?_0x45d094[_0x5111('0x43')][0x5][_0x5111('0x44')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x45d094[_0x5111('0x55')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x6]?_0x45d094[_0x5111('0x43')][0x6][_0x5111('0x44')]:undefined)||''},{'name':_0x5111('0x56'),'value':_0x45d094[_0x5111('0x56')]||(_0x45d094['attrs']&&_0x45d094[_0x5111('0x43')][0x7]?_0x45d094['attrs'][0x7][_0x5111('0x44')]:undefined)||''},{'name':_0x5111('0x57'),'value':_0x45d094[_0x5111('0x57')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x8]?_0x45d094[_0x5111('0x43')][0x8]['value']:undefined)||''},{'name':_0x5111('0x58'),'value':_0x45d094[_0x5111('0x58')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x9]?_0x45d094[_0x5111('0x43')][0x9][_0x5111('0x44')]:undefined)||''},{'name':'attrChatWebsites','value':_0x45d094[_0x5111('0x59')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0xa]?_0x45d094[_0x5111('0x43')][0xa][_0x5111('0x44')]:undefined)||''}];case'web-report':return[{'name':_0x5111('0x5e'),'type':_0x45d094[_0x5111('0x5f')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x0]?_0x45d094[_0x5111('0x43')][0x0][_0x5111('0x40')]:undefined)||null,'value':_0x45d094[_0x5111('0x5e')]||(_0x45d094['attrs']&&_0x45d094['attrs'][0x0]?_0x45d094['attrs'][0x0][_0x5111('0x44')]:undefined)||null},{'name':_0x5111('0x60'),'value':_0x45d094[_0x5111('0x60')]||(_0x45d094[_0x5111('0x43')]&&_0x45d094[_0x5111('0x43')][0x1]?_0x45d094['attrs'][0x1][_0x5111('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x2d2d52){logger[_0x5111('0x61')](_0x5111('0x62'),JSON[_0x5111('0x63')](_0x2d2d52));return[];}}exports[_0x5111('0x64')]=function(_0x8bc97b,_0x3dee92){if(_0x8bc97b[_0x5111('0x65')]){_0x8bc97b[_0x5111('0x65')]['attrs']=widgetAttributes(_0x8bc97b[_0x5111('0x65')]);}return db[_0x5111('0x30')]['create'](_0x8bc97b[_0x5111('0x65')],{})[_0x5111('0x2a')](respondWithResult(_0x3dee92,0xc9))['catch'](handleError(_0x3dee92,null));};exports[_0x5111('0x29')]=function(_0x3aaecb,_0x1db9a3){if(_0x3aaecb[_0x5111('0x65')]['id']){delete _0x3aaecb[_0x5111('0x65')]['id'];}_0x3aaecb[_0x5111('0x65')][_0x5111('0x43')]=widgetAttributes(_0x3aaecb['body']);return db[_0x5111('0x30')]['find']({'where':{'id':_0x3aaecb['params']['id']}})[_0x5111('0x2a')](handleEntityNotFound(_0x1db9a3,null))['then'](saveUpdates(_0x3aaecb[_0x5111('0x65')],null))['then'](respondWithResult(_0x1db9a3,null))[_0x5111('0x3d')](handleError(_0x1db9a3,null));};
\ No newline at end of file
index 4fcdb8c..1ef2901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x847d=['hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x9df36,_0xaf99ba){var _0x3a74b9=function(_0x2e9ece){while(--_0x2e9ece){_0x9df36['push'](_0x9df36['shift']());}};_0x3a74b9(++_0xaf99ba);}(_0x847d,0x142));var _0xd847=function(_0x631a3c,_0x1b61b6){_0x631a3c=_0x631a3c-0x0;var _0x2bdfa3=_0x847d[_0x631a3c];return _0x2bdfa3;};'use strict';var EventEmitter=require(_0xd847('0x0'));var DashboardItem=require(_0xd847('0x1'))['db'][_0xd847('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xd847('0x3')](0x0);var events={'afterCreate':_0xd847('0x4'),'afterUpdate':'update','afterDestroy':_0xd847('0x5')};function emitEvent(_0x4961e4){return function(_0x30431e,_0x143daf,_0x3d0bd2){DashboardItemEvents['emit'](_0x4961e4+':'+_0x30431e['id'],_0x30431e);DashboardItemEvents[_0xd847('0x6')](_0x4961e4,_0x30431e);_0x3d0bd2(null);};}for(var e in events){if(events[_0xd847('0x7')](e)){var event=events[e];DashboardItem[_0xd847('0x8')](e,emitEvent(event));}}module[_0xd847('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0xdda7=['update','remove','emit','hook','events','../../mysqldb','DashboardItem','save'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xdda7,0x8c));var _0x7dda=function(_0x5df39c,_0x5c5c62){_0x5df39c=_0x5df39c-0x0;var _0xaf468e=_0xdda7[_0x5df39c];return _0xaf468e;};'use strict';var EventEmitter=require(_0x7dda('0x0'));var DashboardItem=require(_0x7dda('0x1'))['db'][_0x7dda('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7dda('0x3'),'afterUpdate':_0x7dda('0x4'),'afterDestroy':_0x7dda('0x5')};function emitEvent(_0x54df12){return function(_0x1f85a6,_0x4e1d72,_0x108031){DashboardItemEvents['emit'](_0x54df12+':'+_0x1f85a6['id'],_0x1f85a6);DashboardItemEvents[_0x7dda('0x6')](_0x54df12,_0x1f85a6);_0x108031(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0x7dda('0x7')](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
index 9d335f9..3085d5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a16=['request-promise','path','rimraf','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','../../config/logger','api','bluebird'];(function(_0x3cd30b,_0x70fad5){var _0x56fcfe=function(_0x3bc8c4){while(--_0x3bc8c4){_0x3cd30b['push'](_0x3cd30b['shift']());}};_0x56fcfe(++_0x70fad5);}(_0x0a16,0x17e));var _0x60a1=function(_0x63e59d,_0x1696a7){_0x63e59d=_0x63e59d-0x0;var _0x5f4893=_0x0a16[_0x63e59d];return _0x5f4893;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x60a1('0x0'))(_0x60a1('0x1'));var moment=require('moment');var BPromise=require(_0x60a1('0x2'));var rp=require(_0x60a1('0x3'));var fs=require('fs');var path=require(_0x60a1('0x4'));var rimraf=require(_0x60a1('0x5'));var config=require('../../config/environment');var attributes=require(_0x60a1('0x6'));module[_0x60a1('0x7')]=function(_0x5c0e2b,_0x24b93d){return _0x5c0e2b[_0x60a1('0x8')](_0x60a1('0x9'),attributes,{'tableName':_0x60a1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e20=['path','rimraf','exports','define','DashboardItem','dashboard_items','lodash','util','api','bluebird','request-promise'];(function(_0x5b3c11,_0x9d539){var _0x5f4a82=function(_0x58fa2e){while(--_0x58fa2e){_0x5b3c11['push'](_0x5b3c11['shift']());}};_0x5f4a82(++_0x9d539);}(_0x3e20,0xa0));var _0x03e2=function(_0x234cf2,_0x45d5cd){_0x234cf2=_0x234cf2-0x0;var _0xcdc56d=_0x3e20[_0x234cf2];return _0xcdc56d;};'use strict';var _=require(_0x03e2('0x0'));var util=require(_0x03e2('0x1'));var logger=require('../../config/logger')(_0x03e2('0x2'));var moment=require('moment');var BPromise=require(_0x03e2('0x3'));var rp=require(_0x03e2('0x4'));var fs=require('fs');var path=require(_0x03e2('0x5'));var rimraf=require(_0x03e2('0x6'));var config=require('../../config/environment');var attributes=require('./dashboardItem.attributes');module[_0x03e2('0x7')]=function(_0x4a509d,_0x1fbb97){return _0x4a509d[_0x03e2('0x8')](_0x03e2('0x9'),attributes,{'tableName':_0x03e2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e2ca25..fcde607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x792d=['request','info','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./dashboardItem.socket','register'];(function(_0x19b6f5,_0x367239){var _0x5f429f=function(_0xe1000b){while(--_0xe1000b){_0x19b6f5['push'](_0x19b6f5['shift']());}};_0x5f429f(++_0x367239);}(_0x792d,0x123));var _0xd792=function(_0xa5a364,_0x250a50){_0xa5a364=_0xa5a364-0x0;var _0xdcf40f=_0x792d[_0xa5a364];return _0xdcf40f;};'use strict';var _=require(_0xd792('0x0'));var util=require(_0xd792('0x1'));var moment=require(_0xd792('0x2'));var BPromise=require(_0xd792('0x3'));var rs=require(_0xd792('0x4'));var fs=require('fs');var Redis=require(_0xd792('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd792('0x6'));var logger=require(_0xd792('0x7'))(_0xd792('0x8'));var config=require(_0xd792('0x9'));var jayson=require(_0xd792('0xa'));var client=jayson['client'][_0xd792('0xb')]({'port':0x232a});config[_0xd792('0xc')]=_[_0xd792('0xd')](config[_0xd792('0xc')],{'host':_0xd792('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd792('0xc')]));require(_0xd792('0xf'))[_0xd792('0x10')](socket);function respondWithRpcPromise(_0x4654bd,_0x27a160,_0x454c9e){return new BPromise(function(_0x5e312e,_0x1f18b8){return client[_0xd792('0x11')](_0x4654bd,_0x454c9e)['then'](function(_0x1ac2ef){logger[_0xd792('0x12')]('DashboardItem,\x20%s,\x20%s',_0x27a160,_0xd792('0x13'));logger[_0xd792('0x14')](_0xd792('0x15'),_0x27a160,'request\x20sent',JSON[_0xd792('0x16')](_0x1ac2ef));if(_0x1ac2ef[_0xd792('0x17')]){if(_0x1ac2ef[_0xd792('0x17')][_0xd792('0x18')]===0x1f4){logger[_0xd792('0x17')](_0xd792('0x19'),_0x27a160,_0x1ac2ef[_0xd792('0x17')]['message']);return _0x1f18b8(_0x1ac2ef['error'][_0xd792('0x1a')]);}logger[_0xd792('0x17')](_0xd792('0x19'),_0x27a160,_0x1ac2ef['error'][_0xd792('0x1a')]);return _0x5e312e(_0x1ac2ef[_0xd792('0x17')][_0xd792('0x1a')]);}else{logger[_0xd792('0x12')](_0xd792('0x19'),_0x27a160,_0xd792('0x13'));_0x5e312e(_0x1ac2ef['result']['message']);}})[_0xd792('0x1b')](function(_0x763307){logger[_0xd792('0x17')](_0xd792('0x19'),_0x27a160,_0x763307);_0x1f18b8(_0x763307);});});}
\ No newline at end of file
+var _0xb7fb=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','info','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','error','DashboardItem,\x20%s,\x20%s','message','catch','lodash','util','../../config/utils'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xb7fb,0xd9));var _0xbb7f=function(_0x198396,_0x49883b){_0x198396=_0x198396-0x0;var _0x15c689=_0xb7fb[_0x198396];return _0x15c689;};'use strict';var _=require(_0xbb7f('0x0'));var util=require(_0xbb7f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbb7f('0x2'));var logger=require(_0xbb7f('0x3'))(_0xbb7f('0x4'));var config=require(_0xbb7f('0x5'));var jayson=require(_0xbb7f('0x6'));var client=jayson[_0xbb7f('0x7')][_0xbb7f('0x8')]({'port':0x232a});config[_0xbb7f('0x9')]=_['defaults'](config[_0xbb7f('0x9')],{'host':_0xbb7f('0xa'),'port':0x18eb});var socket=require(_0xbb7f('0xb'))(new Redis(config[_0xbb7f('0x9')]));require('./dashboardItem.socket')[_0xbb7f('0xc')](socket);function respondWithRpcPromise(_0x39cf53,_0x10f022,_0x456928){return new BPromise(function(_0x5e69d,_0x2a69b4){return client[_0xbb7f('0xd')](_0x39cf53,_0x456928)['then'](function(_0x51364d){logger[_0xbb7f('0xe')]('DashboardItem,\x20%s,\x20%s',_0x10f022,_0xbb7f('0xf'));logger[_0xbb7f('0x10')](_0xbb7f('0x11'),_0x10f022,_0xbb7f('0xf'),JSON['stringify'](_0x51364d));if(_0x51364d[_0xbb7f('0x12')]){if(_0x51364d[_0xbb7f('0x12')]['code']===0x1f4){logger[_0xbb7f('0x12')](_0xbb7f('0x13'),_0x10f022,_0x51364d['error'][_0xbb7f('0x14')]);return _0x2a69b4(_0x51364d['error'][_0xbb7f('0x14')]);}logger['error'](_0xbb7f('0x13'),_0x10f022,_0x51364d[_0xbb7f('0x12')][_0xbb7f('0x14')]);return _0x5e69d(_0x51364d[_0xbb7f('0x12')][_0xbb7f('0x14')]);}else{logger[_0xbb7f('0xe')](_0xbb7f('0x13'),_0x10f022,_0xbb7f('0xf'));_0x5e69d(_0x51364d['result'][_0xbb7f('0x14')]);}})[_0xbb7f('0x15')](function(_0x273073){logger[_0xbb7f('0x12')](_0xbb7f('0x13'),_0x10f022,_0x273073);_0x2a69b4(_0x273073);});});}
\ No newline at end of file
index c56a732..715d220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cc8=['./dashboardItem.events','save','remove','update','register','dashboardItem:'];(function(_0x431eae,_0xc1ef29){var _0x5c07b2=function(_0x419212){while(--_0x419212){_0x431eae['push'](_0x431eae['shift']());}};_0x5c07b2(++_0xc1ef29);}(_0x1cc8,0x198));var _0x81cc=function(_0x1f28c1,_0x4ebeaa){_0x1f28c1=_0x1f28c1-0x0;var _0xd44fe2=_0x1cc8[_0x1f28c1];return _0xd44fe2;};'use strict';var DashboardItemEvents=require(_0x81cc('0x0'));var events=[_0x81cc('0x1'),_0x81cc('0x2'),_0x81cc('0x3')];function createListener(_0x38c535,_0x315f2a){return function(_0x42ff09){_0x315f2a['emit'](_0x38c535,_0x42ff09);};}function removeListener(_0x47135a,_0x32625e){return function(){DashboardItemEvents['removeListener'](_0x47135a,_0x32625e);};}exports[_0x81cc('0x4')]=function(_0x44c288){for(var _0xab7023=0x0,_0x247cc1=events['length'];_0xab7023<_0x247cc1;_0xab7023++){var _0x51fd40=events[_0xab7023];var _0x5d8949=createListener(_0x81cc('0x5')+_0x51fd40,_0x44c288);DashboardItemEvents['on'](_0x51fd40,_0x5d8949);}};
\ No newline at end of file
+var _0x3d0b=['register','dashboardItem:','./dashboardItem.events','save','remove','update','emit'];(function(_0xad09cb,_0x18b848){var _0x37b003=function(_0x23020c){while(--_0x23020c){_0xad09cb['push'](_0xad09cb['shift']());}};_0x37b003(++_0x18b848);}(_0x3d0b,0x1bb));var _0xb3d0=function(_0xf61d62,_0x5e1ce1){_0xf61d62=_0xf61d62-0x0;var _0x1b8b00=_0x3d0b[_0xf61d62];return _0x1b8b00;};'use strict';var DashboardItemEvents=require(_0xb3d0('0x0'));var events=[_0xb3d0('0x1'),_0xb3d0('0x2'),_0xb3d0('0x3')];function createListener(_0x51c616,_0x57c4c1){return function(_0x15a78c){_0x57c4c1[_0xb3d0('0x4')](_0x51c616,_0x15a78c);};}function removeListener(_0x36c977,_0x222a87){return function(){DashboardItemEvents['removeListener'](_0x36c977,_0x222a87);};}exports[_0xb3d0('0x5')]=function(_0x2cf668){for(var _0x2c6393=0x0,_0x5a9698=events['length'];_0x2c6393<_0x5a9698;_0x2c6393++){var _0x37ceeb=events[_0x2c6393];var _0xd028d7=createListener(_0xb3d0('0x6')+_0x37ceeb,_0x2cf668);DashboardItemEvents['on'](_0x37ceeb,_0xd028d7);}};
\ No newline at end of file
index 465b5e3..e04913e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe78=['../../components/interaction/service','../../config/environment','./dashboardItem.controller','/:id','isAuthenticated','show','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x33a948,_0x363a39){var _0x9dbb38=function(_0xc0d1e5){while(--_0xc0d1e5){_0x33a948['push'](_0x33a948['shift']());}};_0x9dbb38(++_0x363a39);}(_0xfe78,0x91));var _0x8fe7=function(_0x5aacc8,_0x405af7){_0x5aacc8=_0x5aacc8-0x0;var _0x32fb1e=_0xfe78[_0x5aacc8];return _0x32fb1e;};'use strict';var multer=require(_0x8fe7('0x0'));var util=require(_0x8fe7('0x1'));var path=require(_0x8fe7('0x2'));var timeout=require(_0x8fe7('0x3'));var express=require('express');var router=express[_0x8fe7('0x4')]();var fs_extra=require(_0x8fe7('0x5'));var auth=require(_0x8fe7('0x6'));var interaction=require(_0x8fe7('0x7'));var config=require(_0x8fe7('0x8'));var controller=require(_0x8fe7('0x9'));router['get'](_0x8fe7('0xa'),auth[_0x8fe7('0xb')](),controller[_0x8fe7('0xc')]);router['post']('/',auth[_0x8fe7('0xb')](),controller[_0x8fe7('0xd')]);router[_0x8fe7('0xe')](_0x8fe7('0xa'),auth[_0x8fe7('0xb')](),controller[_0x8fe7('0xf')]);router[_0x8fe7('0x10')](_0x8fe7('0xa'),auth[_0x8fe7('0xb')](),controller[_0x8fe7('0x11')]);module[_0x8fe7('0x12')]=router;
\ No newline at end of file
+var _0x1f48=['multer','util','path','express','Router','fs-extra','../../config/environment','get','/:id','isAuthenticated','post','create','delete','destroy','exports'];(function(_0x448422,_0x362248){var _0xcc0afd=function(_0x576b07){while(--_0x576b07){_0x448422['push'](_0x448422['shift']());}};_0xcc0afd(++_0x362248);}(_0x1f48,0x186));var _0x81f4=function(_0xda464c,_0x26e47d){_0xda464c=_0xda464c-0x0;var _0x19e222=_0x1f48[_0xda464c];return _0x19e222;};'use strict';var multer=require(_0x81f4('0x0'));var util=require(_0x81f4('0x1'));var path=require(_0x81f4('0x2'));var timeout=require('connect-timeout');var express=require(_0x81f4('0x3'));var router=express[_0x81f4('0x4')]();var fs_extra=require(_0x81f4('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x81f4('0x6'));var controller=require('./dashboardItem.controller');router[_0x81f4('0x7')](_0x81f4('0x8'),auth[_0x81f4('0x9')](),controller['show']);router[_0x81f4('0xa')]('/',auth[_0x81f4('0x9')](),controller[_0x81f4('0xb')]);router['put']('/:id',auth[_0x81f4('0x9')](),controller['update']);router[_0x81f4('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x81f4('0xd')]);module[_0x81f4('0xe')]=router;
\ No newline at end of file
index 45eb3f6..67d8924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12a5=['STRING','ENUM','first','third','sequelize','exports'];(function(_0x468b55,_0x413fe1){var _0x1f5e45=function(_0x5c7f74){while(--_0x5c7f74){_0x468b55['push'](_0x468b55['shift']());}};_0x1f5e45(++_0x413fe1);}(_0x12a5,0x118));var _0x512a=function(_0x1b3744,_0x45cbb5){_0x1b3744=_0x1b3744-0x0;var _0x367dd2=_0x12a5[_0x1b3744];return _0x367dd2;};'use strict';var Sequelize=require(_0x512a('0x0'));module[_0x512a('0x1')]={'name':{'type':Sequelize[_0x512a('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x512a('0x3')](_0x512a('0x4'),'second',_0x512a('0x5')),'allowNull':![],'defaultValue':_0x512a('0x4')},'description':{'type':Sequelize[_0x512a('0x2')]}};
\ No newline at end of file
+var _0x9846=['sequelize','exports','STRING','ENUM','first','second','third'];(function(_0x43bea1,_0x3e629d){var _0x5e760b=function(_0x173979){while(--_0x173979){_0x43bea1['push'](_0x43bea1['shift']());}};_0x5e760b(++_0x3e629d);}(_0x9846,0x77));var _0x6984=function(_0x598a8d,_0x26d433){_0x598a8d=_0x598a8d-0x0;var _0x2072aa=_0x9846[_0x598a8d];return _0x2072aa;};'use strict';var Sequelize=require(_0x6984('0x0'));module[_0x6984('0x1')]={'name':{'type':Sequelize[_0x6984('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x6984('0x3')](_0x6984('0x4'),_0x6984('0x5'),_0x6984('0x6')),'allowNull':![],'defaultValue':_0x6984('0x4')},'description':{'type':Sequelize[_0x6984('0x2')]}};
\ No newline at end of file
index 1a8eb3f..2318904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38ec=['body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','includeAll','include','findAll','rows','catch','params','options','find','create','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update'];(function(_0x11ec09,_0x24e078){var _0x410d64=function(_0x1a026a){while(--_0x1a026a){_0x11ec09['push'](_0x11ec09['shift']());}};_0x410d64(++_0x24e078);}(_0x38ec,0xfa));var _0xc38e=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x38ec[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xc38e('0x0'));var rimraf=require(_0xc38e('0x1'));var zipdir=require(_0xc38e('0x2'));var jsonpatch=require(_0xc38e('0x3'));var rp=require(_0xc38e('0x4'));var moment=require(_0xc38e('0x5'));var BPromise=require(_0xc38e('0x6'));var Mustache=require(_0xc38e('0x7'));var util=require(_0xc38e('0x8'));var path=require('path');var sox=require(_0xc38e('0x9'));var csv=require(_0xc38e('0xa'));var ejs=require(_0xc38e('0xb'));var fs=require('fs');var fs_extra=require(_0xc38e('0xc'));var _=require(_0xc38e('0xd'));var squel=require(_0xc38e('0xe'));var crypto=require(_0xc38e('0xf'));var jsforce=require(_0xc38e('0x10'));var deskjs=require(_0xc38e('0x11'));var toCsv=require(_0xc38e('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc38e('0x12'));var authService=require(_0xc38e('0x13'));var qs=require(_0xc38e('0x14'));var as=require(_0xc38e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc38e('0x16'))(_0xc38e('0x17'));var utils=require('../../config/utils');var config=require(_0xc38e('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x259a4d,_0x3e90ab){_0x3e90ab=_0x3e90ab||0xcc;return function(_0x3c808d){if(_0x3c808d){return _0x259a4d[_0xc38e('0x19')](_0x3e90ab);}return _0x259a4d[_0xc38e('0x1a')](_0x3e90ab)[_0xc38e('0x1b')]();};}function respondWithResult(_0x32273a,_0x33e11a){_0x33e11a=_0x33e11a||0xc8;return function(_0x4f6f89){if(_0x4f6f89){return _0x32273a[_0xc38e('0x1a')](_0x33e11a)[_0xc38e('0x1c')](_0x4f6f89);}};}function respondWithFilteredResult(_0x5cb21f,_0x10fee9){return function(_0x13c707){if(_0x13c707){var _0x1d189f=typeof _0x10fee9[_0xc38e('0x1d')]==='undefined'&&typeof _0x10fee9[_0xc38e('0x1e')]===_0xc38e('0x1f');var _0x38be21=_0x13c707[_0xc38e('0x20')];var _0x29a89b=_0x1d189f?0x0:_0x10fee9[_0xc38e('0x1d')];var _0x14d09f=_0x1d189f?_0x13c707[_0xc38e('0x20')]:_0x10fee9[_0xc38e('0x1d')]+_0x10fee9[_0xc38e('0x1e')];var _0x38e4af;if(_0x14d09f>=_0x38be21){_0x14d09f=_0x38be21;_0x38e4af=0xc8;}else{_0x38e4af=0xce;}_0x5cb21f[_0xc38e('0x1a')](_0x38e4af);return _0x5cb21f['set'](_0xc38e('0x21'),_0x29a89b+'-'+_0x14d09f+'/'+_0x38be21)[_0xc38e('0x1c')](_0x13c707);}return null;};}function patchUpdates(_0x5d8a6c){return function(_0x48e7d4){try{jsonpatch[_0xc38e('0x22')](_0x48e7d4,_0x5d8a6c,!![]);}catch(_0x16f781){return BPromise[_0xc38e('0x23')](_0x16f781);}return _0x48e7d4[_0xc38e('0x24')]();};}function saveUpdates(_0x135f77,_0x45ad96){return function(_0x4bdd5d){if(_0x4bdd5d){return _0x4bdd5d['update'](_0x135f77)[_0xc38e('0x25')](function(_0x388918){return _0x388918;});}return null;};}function removeEntity(_0x4cf9d3,_0xcc1fa){return function(_0x538398){if(_0x538398){return _0x538398[_0xc38e('0x26')]()[_0xc38e('0x25')](function(){var _0x12528c=_0x538398[_0xc38e('0x27')]({'plain':!![]});var _0x35c2de=_0xc38e('0x28');return db[_0xc38e('0x29')]['destroy']({'where':{'type':_0x35c2de,'resourceId':_0x12528c['id']}})['then'](function(){return _0x538398;});})['then'](function(){_0x4cf9d3[_0xc38e('0x1a')](0xcc)[_0xc38e('0x1b')]();});}};}function handleEntityNotFound(_0x3a6203,_0x2b3963){return function(_0x19b6c3){if(!_0x19b6c3){_0x3a6203[_0xc38e('0x19')](0x194);}return _0x19b6c3;};}function handleError(_0x26e70d,_0x2621b2){_0x2621b2=_0x2621b2||0x1f4;return function(_0x76853f){logger[_0xc38e('0x2a')](_0x76853f[_0xc38e('0x2b')]);if(_0x76853f[_0xc38e('0x2c')]){delete _0x76853f[_0xc38e('0x2c')];}_0x26e70d[_0xc38e('0x1a')](_0x2621b2)['send'](_0x76853f);};}exports[_0xc38e('0x2d')]=function(_0x105a8a,_0x35e567){var _0x1f9200={},_0x1880ed={},_0x6dea58={'count':0x0,'rows':[]};var _0x4b2128=_[_0xc38e('0x2e')](db[_0xc38e('0x2f')][_0xc38e('0x30')],function(_0x2eb3a5){return{'name':_0x2eb3a5[_0xc38e('0x31')],'type':_0x2eb3a5[_0xc38e('0x32')][_0xc38e('0x33')]};});_0x1880ed[_0xc38e('0x34')]=_[_0xc38e('0x2e')](_0x4b2128,_0xc38e('0x2c'));_0x1880ed[_0xc38e('0x35')]=_[_0xc38e('0x36')](_0x105a8a[_0xc38e('0x35')]);_0x1880ed[_0xc38e('0x37')]=_[_0xc38e('0x38')](_0x1880ed[_0xc38e('0x34')],_0x1880ed['query']);_0x1f9200['attributes']=_[_0xc38e('0x38')](_0x1880ed[_0xc38e('0x34')],qs[_0xc38e('0x39')](_0x105a8a[_0xc38e('0x35')][_0xc38e('0x39')]));_0x1f9200[_0xc38e('0x3a')]=_0x1f9200['attributes'][_0xc38e('0x3b')]?_0x1f9200[_0xc38e('0x3a')]:_0x1880ed[_0xc38e('0x34')];if(!_0x105a8a[_0xc38e('0x35')][_0xc38e('0x3c')](_0xc38e('0x3d'))){_0x1f9200[_0xc38e('0x1e')]=qs[_0xc38e('0x1e')](_0x105a8a[_0xc38e('0x35')]['limit']);_0x1f9200[_0xc38e('0x1d')]=qs['offset'](_0x105a8a[_0xc38e('0x35')][_0xc38e('0x1d')]);}_0x1f9200[_0xc38e('0x3e')]=qs[_0xc38e('0x3f')](_0x105a8a[_0xc38e('0x35')][_0xc38e('0x3f')]);_0x1f9200[_0xc38e('0x40')]=qs[_0xc38e('0x37')](_[_0xc38e('0x41')](_0x105a8a[_0xc38e('0x35')],_0x1880ed[_0xc38e('0x37')]),_0x4b2128);if(_0x105a8a[_0xc38e('0x35')]['filter']){_0x1f9200[_0xc38e('0x40')]=_[_0xc38e('0x42')](_0x1f9200[_0xc38e('0x40')],{'$or':_[_0xc38e('0x2e')](_0x4b2128,function(_0x4a5b19){if(_0x4a5b19[_0xc38e('0x32')]!=='VIRTUAL'){var _0x18a805={};_0x18a805[_0x4a5b19[_0xc38e('0x2c')]]={'$like':'%'+_0x105a8a[_0xc38e('0x35')]['filter']+'%'};return _0x18a805;}})});}_0x1f9200=_['merge']({},_0x1f9200,_0x105a8a['options']);var _0x502365={'where':_0x1f9200[_0xc38e('0x40')]};return db['Disposition'][_0xc38e('0x20')](_0x502365)['then'](function(_0xc879d3){_0x6dea58[_0xc38e('0x20')]=_0xc879d3;if(_0x105a8a[_0xc38e('0x35')][_0xc38e('0x43')]){_0x1f9200[_0xc38e('0x44')]=[{'all':!![]}];}return db['Disposition'][_0xc38e('0x45')](_0x1f9200);})[_0xc38e('0x25')](function(_0x42287c){_0x6dea58[_0xc38e('0x46')]=_0x42287c;return _0x6dea58;})[_0xc38e('0x25')](respondWithFilteredResult(_0x35e567,_0x1f9200))[_0xc38e('0x47')](handleError(_0x35e567,null));};exports['show']=function(_0xead33f,_0x3f51ef){var _0x1bf043={'raw':!![],'where':{'id':_0xead33f[_0xc38e('0x48')]['id']}},_0x4fd907={};_0x4fd907[_0xc38e('0x34')]=_['keys'](db[_0xc38e('0x2f')]['rawAttributes']);_0x4fd907['query']=_[_0xc38e('0x36')](_0xead33f[_0xc38e('0x35')]);_0x4fd907[_0xc38e('0x37')]=_['intersection'](_0x4fd907['model'],_0x4fd907[_0xc38e('0x35')]);_0x1bf043[_0xc38e('0x3a')]=_[_0xc38e('0x38')](_0x4fd907[_0xc38e('0x34')],qs[_0xc38e('0x39')](_0xead33f[_0xc38e('0x35')][_0xc38e('0x39')]));_0x1bf043[_0xc38e('0x3a')]=_0x1bf043[_0xc38e('0x3a')]['length']?_0x1bf043['attributes']:_0x4fd907['model'];if(_0xead33f[_0xc38e('0x35')][_0xc38e('0x43')]){_0x1bf043[_0xc38e('0x44')]=[{'all':!![]}];}_0x1bf043=_[_0xc38e('0x42')]({},_0x1bf043,_0xead33f[_0xc38e('0x49')]);return db[_0xc38e('0x2f')][_0xc38e('0x4a')](_0x1bf043)[_0xc38e('0x25')](handleEntityNotFound(_0x3f51ef,null))[_0xc38e('0x25')](respondWithResult(_0x3f51ef,null))[_0xc38e('0x47')](handleError(_0x3f51ef,null));};exports[_0xc38e('0x4b')]=function(_0x3c93,_0x28ae3a){return db['Disposition'][_0xc38e('0x4b')](_0x3c93['body'],{})[_0xc38e('0x25')](function(_0x290404){var _0x3c1ac4=_0x3c93[_0xc38e('0x4c')][_0xc38e('0x27')]({'plain':!![]});if(!_0x3c1ac4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3c1ac4[_0xc38e('0x4d')]===_0xc38e('0x4c')){var _0x1d95e9=_0x290404[_0xc38e('0x27')]({'plain':!![]});var _0x4df5d4='Dispositions';return db['UserProfileSection'][_0xc38e('0x4a')]({'where':{'name':_0x4df5d4,'userProfileId':_0x3c1ac4[_0xc38e('0x4e')]},'raw':!![]})['then'](function(_0x143a17){if(_0x143a17&&_0x143a17[_0xc38e('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x1d95e9[_0xc38e('0x2c')],'resourceId':_0x1d95e9['id'],'type':_0x143a17[_0xc38e('0x2c')],'sectionId':_0x143a17['id']},{})['then'](function(){return _0x290404;});}else{return _0x290404;}})[_0xc38e('0x47')](function(_0x41881a){logger[_0xc38e('0x2a')](_0xc38e('0x50'),_0x41881a);throw _0x41881a;});}return _0x290404;})['then'](respondWithResult(_0x28ae3a,0xc9))[_0xc38e('0x47')](handleError(_0x28ae3a,null));};exports[_0xc38e('0x51')]=function(_0xba6652,_0x1cf4c7){if(_0xba6652[_0xc38e('0x52')]['id']){delete _0xba6652[_0xc38e('0x52')]['id'];}return db['Disposition'][_0xc38e('0x4a')]({'where':{'id':_0xba6652[_0xc38e('0x48')]['id']}})['then'](handleEntityNotFound(_0x1cf4c7,null))['then'](saveUpdates(_0xba6652['body'],null))[_0xc38e('0x25')](respondWithResult(_0x1cf4c7,null))[_0xc38e('0x47')](handleError(_0x1cf4c7,null));};exports['destroy']=function(_0x38c5ce,_0x17916d){return db[_0xc38e('0x2f')][_0xc38e('0x4a')]({'where':{'id':_0x38c5ce[_0xc38e('0x48')]['id']}})[_0xc38e('0x25')](handleEntityNotFound(_0x17916d,null))[_0xc38e('0x25')](removeEntity(_0x17916d,null))[_0xc38e('0x47')](handleError(_0x17916d,null));};
\ No newline at end of file
+var _0xfa45=['keys','intersection','attributes','fields','length','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','then','get','Dispositions','UserProfileResource','stack','name','index','map','Disposition','fieldName','type','model','query'];(function(_0x4b55cb,_0x49791b){var _0x2631df=function(_0x2bf591){while(--_0x2bf591){_0x4b55cb['push'](_0x4b55cb['shift']());}};_0x2631df(++_0x49791b);}(_0xfa45,0x11b));var _0x5fa4=function(_0x4a1e41,_0x4d50f7){_0x4a1e41=_0x4a1e41-0x0;var _0x1d4a12=_0xfa45[_0x4a1e41];return _0x1d4a12;};'use strict';var emlformat=require(_0x5fa4('0x0'));var rimraf=require(_0x5fa4('0x1'));var zipdir=require(_0x5fa4('0x2'));var jsonpatch=require(_0x5fa4('0x3'));var rp=require(_0x5fa4('0x4'));var moment=require(_0x5fa4('0x5'));var BPromise=require(_0x5fa4('0x6'));var Mustache=require('mustache');var util=require(_0x5fa4('0x7'));var path=require('path');var sox=require(_0x5fa4('0x8'));var csv=require(_0x5fa4('0x9'));var ejs=require(_0x5fa4('0xa'));var fs=require('fs');var fs_extra=require(_0x5fa4('0xb'));var _=require(_0x5fa4('0xc'));var squel=require(_0x5fa4('0xd'));var crypto=require(_0x5fa4('0xe'));var jsforce=require(_0x5fa4('0xf'));var deskjs=require(_0x5fa4('0x10'));var toCsv=require(_0x5fa4('0x9'));var querystring=require('querystring');var Papa=require(_0x5fa4('0x11'));var Redis=require('ioredis');var authService=require(_0x5fa4('0x12'));var qs=require(_0x5fa4('0x13'));var as=require(_0x5fa4('0x14'));var hardwareService=require(_0x5fa4('0x15'));var logger=require(_0x5fa4('0x16'))(_0x5fa4('0x17'));var utils=require(_0x5fa4('0x18'));var config=require(_0x5fa4('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x5fa4('0x1a'))['db'];function respondWithStatusCode(_0x4a6ce3,_0x25abcd){_0x25abcd=_0x25abcd||0xcc;return function(_0x2eeea3){if(_0x2eeea3){return _0x4a6ce3[_0x5fa4('0x1b')](_0x25abcd);}return _0x4a6ce3[_0x5fa4('0x1c')](_0x25abcd)[_0x5fa4('0x1d')]();};}function respondWithResult(_0x51af4c,_0x397328){_0x397328=_0x397328||0xc8;return function(_0x3921b0){if(_0x3921b0){return _0x51af4c['status'](_0x397328)[_0x5fa4('0x1e')](_0x3921b0);}};}function respondWithFilteredResult(_0x40ce98,_0x4d8471){return function(_0x442064){if(_0x442064){var _0x5cacd7=typeof _0x4d8471['offset']===_0x5fa4('0x1f')&&typeof _0x4d8471[_0x5fa4('0x20')]===_0x5fa4('0x1f');var _0x21d502=_0x442064[_0x5fa4('0x21')];var _0x100a46=_0x5cacd7?0x0:_0x4d8471['offset'];var _0x3d6380=_0x5cacd7?_0x442064[_0x5fa4('0x21')]:_0x4d8471[_0x5fa4('0x22')]+_0x4d8471[_0x5fa4('0x20')];var _0x7273f9;if(_0x3d6380>=_0x21d502){_0x3d6380=_0x21d502;_0x7273f9=0xc8;}else{_0x7273f9=0xce;}_0x40ce98[_0x5fa4('0x1c')](_0x7273f9);return _0x40ce98[_0x5fa4('0x23')](_0x5fa4('0x24'),_0x100a46+'-'+_0x3d6380+'/'+_0x21d502)[_0x5fa4('0x1e')](_0x442064);}return null;};}function patchUpdates(_0x1b50c6){return function(_0x7998dc){try{jsonpatch[_0x5fa4('0x25')](_0x7998dc,_0x1b50c6,!![]);}catch(_0x541f44){return BPromise['reject'](_0x541f44);}return _0x7998dc[_0x5fa4('0x26')]();};}function saveUpdates(_0x3b23d6,_0x18eb29){return function(_0x1cd221){if(_0x1cd221){return _0x1cd221['update'](_0x3b23d6)['then'](function(_0x45f9d9){return _0x45f9d9;});}return null;};}function removeEntity(_0x54134f,_0xe63c6b){return function(_0x1a242a){if(_0x1a242a){return _0x1a242a[_0x5fa4('0x27')]()[_0x5fa4('0x28')](function(){var _0x5c479f=_0x1a242a[_0x5fa4('0x29')]({'plain':!![]});var _0x3d2abb=_0x5fa4('0x2a');return db[_0x5fa4('0x2b')]['destroy']({'where':{'type':_0x3d2abb,'resourceId':_0x5c479f['id']}})['then'](function(){return _0x1a242a;});})[_0x5fa4('0x28')](function(){_0x54134f[_0x5fa4('0x1c')](0xcc)[_0x5fa4('0x1d')]();});}};}function handleEntityNotFound(_0xf91114,_0x5a7580){return function(_0x34006f){if(!_0x34006f){_0xf91114[_0x5fa4('0x1b')](0x194);}return _0x34006f;};}function handleError(_0x2355e6,_0x41fbfd){_0x41fbfd=_0x41fbfd||0x1f4;return function(_0x51833c){logger['error'](_0x51833c[_0x5fa4('0x2c')]);if(_0x51833c[_0x5fa4('0x2d')]){delete _0x51833c[_0x5fa4('0x2d')];}_0x2355e6[_0x5fa4('0x1c')](_0x41fbfd)['send'](_0x51833c);};}exports[_0x5fa4('0x2e')]=function(_0x1c6082,_0x14ea77){var _0x25ce24={},_0x1f6b19={},_0x1764b6={'count':0x0,'rows':[]};var _0x2c5397=_[_0x5fa4('0x2f')](db[_0x5fa4('0x30')]['rawAttributes'],function(_0x2c4abf){return{'name':_0x2c4abf[_0x5fa4('0x31')],'type':_0x2c4abf[_0x5fa4('0x32')]['key']};});_0x1f6b19[_0x5fa4('0x33')]=_[_0x5fa4('0x2f')](_0x2c5397,_0x5fa4('0x2d'));_0x1f6b19[_0x5fa4('0x34')]=_[_0x5fa4('0x35')](_0x1c6082[_0x5fa4('0x34')]);_0x1f6b19['filters']=_[_0x5fa4('0x36')](_0x1f6b19[_0x5fa4('0x33')],_0x1f6b19[_0x5fa4('0x34')]);_0x25ce24[_0x5fa4('0x37')]=_[_0x5fa4('0x36')](_0x1f6b19['model'],qs[_0x5fa4('0x38')](_0x1c6082[_0x5fa4('0x34')]['fields']));_0x25ce24[_0x5fa4('0x37')]=_0x25ce24['attributes'][_0x5fa4('0x39')]?_0x25ce24['attributes']:_0x1f6b19[_0x5fa4('0x33')];if(!_0x1c6082[_0x5fa4('0x34')]['hasOwnProperty']('nolimit')){_0x25ce24['limit']=qs[_0x5fa4('0x20')](_0x1c6082[_0x5fa4('0x34')][_0x5fa4('0x20')]);_0x25ce24[_0x5fa4('0x22')]=qs['offset'](_0x1c6082['query'][_0x5fa4('0x22')]);}_0x25ce24[_0x5fa4('0x3a')]=qs[_0x5fa4('0x3b')](_0x1c6082['query'][_0x5fa4('0x3b')]);_0x25ce24[_0x5fa4('0x3c')]=qs[_0x5fa4('0x3d')](_['pick'](_0x1c6082[_0x5fa4('0x34')],_0x1f6b19[_0x5fa4('0x3d')]),_0x2c5397);if(_0x1c6082['query'][_0x5fa4('0x3e')]){_0x25ce24['where']=_[_0x5fa4('0x3f')](_0x25ce24[_0x5fa4('0x3c')],{'$or':_[_0x5fa4('0x2f')](_0x2c5397,function(_0x2f23b){if(_0x2f23b['type']!==_0x5fa4('0x40')){var _0xfdc187={};_0xfdc187[_0x2f23b[_0x5fa4('0x2d')]]={'$like':'%'+_0x1c6082[_0x5fa4('0x34')]['filter']+'%'};return _0xfdc187;}})});}_0x25ce24=_[_0x5fa4('0x3f')]({},_0x25ce24,_0x1c6082[_0x5fa4('0x41')]);var _0x15b081={'where':_0x25ce24[_0x5fa4('0x3c')]};return db[_0x5fa4('0x30')][_0x5fa4('0x21')](_0x15b081)[_0x5fa4('0x28')](function(_0x41683c){_0x1764b6[_0x5fa4('0x21')]=_0x41683c;if(_0x1c6082['query'][_0x5fa4('0x42')]){_0x25ce24[_0x5fa4('0x43')]=[{'all':!![]}];}return db[_0x5fa4('0x30')][_0x5fa4('0x44')](_0x25ce24);})[_0x5fa4('0x28')](function(_0x282257){_0x1764b6[_0x5fa4('0x45')]=_0x282257;return _0x1764b6;})[_0x5fa4('0x28')](respondWithFilteredResult(_0x14ea77,_0x25ce24))[_0x5fa4('0x46')](handleError(_0x14ea77,null));};exports[_0x5fa4('0x47')]=function(_0x724049,_0x1ad8ca){var _0x566499={'raw':!![],'where':{'id':_0x724049[_0x5fa4('0x48')]['id']}},_0x245d28={};_0x245d28[_0x5fa4('0x33')]=_[_0x5fa4('0x35')](db[_0x5fa4('0x30')]['rawAttributes']);_0x245d28[_0x5fa4('0x34')]=_[_0x5fa4('0x35')](_0x724049[_0x5fa4('0x34')]);_0x245d28[_0x5fa4('0x3d')]=_[_0x5fa4('0x36')](_0x245d28[_0x5fa4('0x33')],_0x245d28[_0x5fa4('0x34')]);_0x566499[_0x5fa4('0x37')]=_[_0x5fa4('0x36')](_0x245d28[_0x5fa4('0x33')],qs['fields'](_0x724049[_0x5fa4('0x34')][_0x5fa4('0x38')]));_0x566499[_0x5fa4('0x37')]=_0x566499[_0x5fa4('0x37')][_0x5fa4('0x39')]?_0x566499[_0x5fa4('0x37')]:_0x245d28[_0x5fa4('0x33')];if(_0x724049['query']['includeAll']){_0x566499[_0x5fa4('0x43')]=[{'all':!![]}];}_0x566499=_['merge']({},_0x566499,_0x724049[_0x5fa4('0x41')]);return db[_0x5fa4('0x30')][_0x5fa4('0x49')](_0x566499)[_0x5fa4('0x28')](handleEntityNotFound(_0x1ad8ca,null))[_0x5fa4('0x28')](respondWithResult(_0x1ad8ca,null))[_0x5fa4('0x46')](handleError(_0x1ad8ca,null));};exports[_0x5fa4('0x4a')]=function(_0x571cd2,_0x6e95a){return db[_0x5fa4('0x30')][_0x5fa4('0x4a')](_0x571cd2['body'],{})[_0x5fa4('0x28')](function(_0x4a29b4){var _0x40cc84=_0x571cd2[_0x5fa4('0x4b')][_0x5fa4('0x29')]({'plain':!![]});if(!_0x40cc84)throw new Error(_0x5fa4('0x4c'));if(_0x40cc84[_0x5fa4('0x4d')]===_0x5fa4('0x4b')){var _0xcba431=_0x4a29b4['get']({'plain':!![]});var _0x429683=_0x5fa4('0x2a');return db[_0x5fa4('0x4e')][_0x5fa4('0x49')]({'where':{'name':_0x429683,'userProfileId':_0x40cc84[_0x5fa4('0x4f')]},'raw':!![]})[_0x5fa4('0x28')](function(_0x3e5770){if(_0x3e5770&&_0x3e5770[_0x5fa4('0x50')]===0x0){return db[_0x5fa4('0x2b')][_0x5fa4('0x4a')]({'name':_0xcba431['name'],'resourceId':_0xcba431['id'],'type':_0x3e5770[_0x5fa4('0x2d')],'sectionId':_0x3e5770['id']},{})[_0x5fa4('0x28')](function(){return _0x4a29b4;});}else{return _0x4a29b4;}})['catch'](function(_0xd1527f){logger[_0x5fa4('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xd1527f);throw _0xd1527f;});}return _0x4a29b4;})[_0x5fa4('0x28')](respondWithResult(_0x6e95a,0xc9))[_0x5fa4('0x46')](handleError(_0x6e95a,null));};exports[_0x5fa4('0x52')]=function(_0x47d207,_0x14aa7c){if(_0x47d207[_0x5fa4('0x53')]['id']){delete _0x47d207[_0x5fa4('0x53')]['id'];}return db[_0x5fa4('0x30')][_0x5fa4('0x49')]({'where':{'id':_0x47d207[_0x5fa4('0x48')]['id']}})[_0x5fa4('0x28')](handleEntityNotFound(_0x14aa7c,null))['then'](saveUpdates(_0x47d207[_0x5fa4('0x53')],null))[_0x5fa4('0x28')](respondWithResult(_0x14aa7c,null))[_0x5fa4('0x46')](handleError(_0x14aa7c,null));};exports[_0x5fa4('0x27')]=function(_0x4ecf5b,_0x30b4c4){return db[_0x5fa4('0x30')][_0x5fa4('0x49')]({'where':{'id':_0x4ecf5b[_0x5fa4('0x48')]['id']}})[_0x5fa4('0x28')](handleEntityNotFound(_0x30b4c4,null))[_0x5fa4('0x28')](removeEntity(_0x30b4c4,null))['catch'](handleError(_0x30b4c4,null));};
\ No newline at end of file
index ecb7e23..19bd2f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8cc=['bluebird','request-promise','path','rimraf','../../config/environment','./disposition.attributes','define','Disposition','tools_dispositions','name_voice','name','name_chat','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment'];(function(_0x3187f1,_0x4b86b9){var _0x547d6b=function(_0x16e680){while(--_0x16e680){_0x3187f1['push'](_0x3187f1['shift']());}};_0x547d6b(++_0x4b86b9);}(_0xd8cc,0x1e1));var _0xcd8c=function(_0x2d486b,_0x5f213c){_0x2d486b=_0x2d486b-0x0;var _0x4291d1=_0xd8cc[_0x2d486b];return _0x4291d1;};'use strict';var _=require(_0xcd8c('0x0'));var util=require(_0xcd8c('0x1'));var logger=require(_0xcd8c('0x2'))(_0xcd8c('0x3'));var moment=require(_0xcd8c('0x4'));var BPromise=require(_0xcd8c('0x5'));var rp=require(_0xcd8c('0x6'));var fs=require('fs');var path=require(_0xcd8c('0x7'));var rimraf=require(_0xcd8c('0x8'));var config=require(_0xcd8c('0x9'));var attributes=require(_0xcd8c('0xa'));module['exports']=function(_0x21cedd,_0x4732c1){return _0x21cedd[_0xcd8c('0xb')](_0xcd8c('0xc'),attributes,{'tableName':_0xcd8c('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xcd8c('0xe'),'fields':[_0xcd8c('0xf'),'ListId']},{'unique':!![],'name':_0xcd8c('0x10'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0xcd8c('0x11'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x12')]},{'unique':!![],'name':_0xcd8c('0x13'),'fields':['name',_0xcd8c('0x14')]},{'unique':!![],'name':_0xcd8c('0x15'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x16')]},{'unique':!![],'name':_0xcd8c('0x17'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x18')]},{'unique':!![],'name':_0xcd8c('0x19'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x1a')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x49d6=['Disposition','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','OpenchannelAccountId','WhatsappAccountId','lodash','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./disposition.attributes','exports'];(function(_0x37d86b,_0x4a4334){var _0x14847d=function(_0x591420){while(--_0x591420){_0x37d86b['push'](_0x37d86b['shift']());}};_0x14847d(++_0x4a4334);}(_0x49d6,0x1bf));var _0x649d=function(_0x7d48b6,_0x413434){_0x7d48b6=_0x7d48b6-0x0;var _0x16d10d=_0x49d6[_0x7d48b6];return _0x16d10d;};'use strict';var _=require(_0x649d('0x0'));var util=require('util');var logger=require(_0x649d('0x1'))(_0x649d('0x2'));var moment=require(_0x649d('0x3'));var BPromise=require(_0x649d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x649d('0x5'));var config=require(_0x649d('0x6'));var attributes=require(_0x649d('0x7'));module[_0x649d('0x8')]=function(_0x4ebac4,_0x54562c){return _0x4ebac4['define'](_0x649d('0x9'),attributes,{'tableName':_0x649d('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x649d('0xb'),'fields':[_0x649d('0xc'),_0x649d('0xd')]},{'unique':!![],'name':_0x649d('0xe'),'fields':[_0x649d('0xc'),_0x649d('0xf')]},{'unique':!![],'name':_0x649d('0x10'),'fields':[_0x649d('0xc'),_0x649d('0x11')]},{'unique':!![],'name':_0x649d('0x12'),'fields':[_0x649d('0xc'),_0x649d('0x13')]},{'unique':!![],'name':_0x649d('0x14'),'fields':[_0x649d('0xc'),_0x649d('0x15')]},{'unique':!![],'name':'name_openchannel','fields':['name',_0x649d('0x16')]},{'unique':!![],'name':'name_whatsapp','fields':[_0x649d('0xc'),_0x649d('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
index 5246e34..612b43e 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(_0x28b525,_0x47dfa2){var _0x20915f=function(_0x478f19){while(--_0x478f19){_0x28b525['push'](_0x28b525['shift']());}};_0x20915f(++_0x47dfa2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var 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(_0xcec0d1,_0x3abb38){var _0x67eed2=function(_0x58853d){while(--_0x58853d){_0xcec0d1['push'](_0xcec0d1['shift']());}};_0x67eed2(++_0x3abb38);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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 2ed169c..bdc25d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b60=['put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x9b60,0x147));var _0x09b6=function(_0x2578af,_0x408e3d){_0x2578af=_0x2578af-0x0;var _0x3a2a1b=_0x9b60[_0x2578af];return _0x3a2a1b;};'use strict';var multer=require(_0x09b6('0x0'));var util=require(_0x09b6('0x1'));var path=require(_0x09b6('0x2'));var timeout=require('connect-timeout');var express=require(_0x09b6('0x3'));var router=express[_0x09b6('0x4')]();var fs_extra=require(_0x09b6('0x5'));var auth=require(_0x09b6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x09b6('0x7'));var controller=require('./disposition.controller');router['get']('/',auth[_0x09b6('0x8')](),controller[_0x09b6('0x9')]);router[_0x09b6('0xa')](_0x09b6('0xb'),auth[_0x09b6('0x8')](),controller[_0x09b6('0xc')]);router[_0x09b6('0xd')]('/',auth[_0x09b6('0x8')](),controller[_0x09b6('0xe')]);router[_0x09b6('0xf')]('/:id',auth[_0x09b6('0x8')](),controller[_0x09b6('0x10')]);router[_0x09b6('0x11')](_0x09b6('0xb'),auth['isAuthenticated'](),controller[_0x09b6('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x120d=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./disposition.controller','get','isAuthenticated','/:id','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x70404,_0x507113){var _0x2da0b9=function(_0x3fa2a9){while(--_0x3fa2a9){_0x70404['push'](_0x70404['shift']());}};_0x2da0b9(++_0x507113);}(_0x120d,0x140));var _0xd120=function(_0x4e7c2,_0x3b3347){_0x4e7c2=_0x4e7c2-0x0;var _0x84bb35=_0x120d[_0x4e7c2];return _0x84bb35;};'use strict';var multer=require(_0xd120('0x0'));var util=require(_0xd120('0x1'));var path=require(_0xd120('0x2'));var timeout=require(_0xd120('0x3'));var express=require('express');var router=express[_0xd120('0x4')]();var fs_extra=require(_0xd120('0x5'));var auth=require(_0xd120('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd120('0x7'));var controller=require(_0xd120('0x8'));router[_0xd120('0x9')]('/',auth[_0xd120('0xa')](),controller['index']);router['get'](_0xd120('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xd120('0xc')]('/',auth[_0xd120('0xa')](),controller[_0xd120('0xd')]);router[_0xd120('0xe')]('/:id',auth[_0xd120('0xa')](),controller[_0xd120('0xf')]);router[_0xd120('0x10')](_0xd120('0xb'),auth['isAuthenticated'](),controller[_0xd120('0x11')]);module[_0xd120('0x12')]=router;
\ No newline at end of file
index e134e68..e70de7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x362a=['mandatoryDisposition','exports','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','ENUM','4800','9600','12000','2400','14400','INTEGER','SIP','IAX','DADHI','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x362a,0xb5));var _0xa362=function(_0x282026,_0x15f1e8){_0x282026=_0x282026-0x0;var _0x201157=_0x362a[_0x282026];return _0x201157;};'use strict';var Sequelize=require('sequelize');module[_0xa362('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa362('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0xa362('0x2'),'no'),'defaultValue':_0xa362('0x2')},'headerinfo':{'type':Sequelize[_0xa362('0x1')],'defaultValue':_0xa362('0x3')},'localstationid':{'type':Sequelize[_0xa362('0x1')],'unique':_0xa362('0x4')},'minrate':{'type':Sequelize[_0xa362('0x5')]('2400',_0xa362('0x6'),'7200',_0xa362('0x7'),_0xa362('0x8'),'14400'),'defaultValue':_0xa362('0x6')},'maxrate':{'type':Sequelize[_0xa362('0x5')](_0xa362('0x9'),_0xa362('0x6'),'7200',_0xa362('0x7'),_0xa362('0x8'),_0xa362('0xa')),'defaultValue':_0xa362('0xa')},'modem':{'type':Sequelize[_0xa362('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0xa362('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xa362('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0xa362('0xc'),_0xa362('0xd'),_0xa362('0xe'),'KHOMP'),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xa362('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xa362('0xf')],'defaultValue':function(){return _0xa362('0x10');}},'notificationSound':{'type':Sequelize[_0xa362('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa362('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa362('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa362('0xb')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![],'comment':_0xa362('0x12'),'set':function(_0x52fb77){if(!_0x52fb77)this['setDataValue']('mandatoryDispositionPauseId',null);this['setDataValue'](_0xa362('0x13'),_0x52fb77);}}};
\ No newline at end of file
+var _0x6313=['7200','12000','14400','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','4800'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6313,0x6a));var _0x3631=function(_0x39ca94,_0x378f98){_0x39ca94=_0x39ca94-0x0;var _0x484538=_0x6313[_0x39ca94];return _0x484538;};'use strict';var Sequelize=require(_0x3631('0x0'));module[_0x3631('0x1')]={'name':{'type':Sequelize[_0x3631('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3631('0x2')]},'ecm':{'type':Sequelize[_0x3631('0x3')](_0x3631('0x4'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x3631('0x2')],'defaultValue':_0x3631('0x5')},'localstationid':{'type':Sequelize[_0x3631('0x2')],'unique':_0x3631('0x6')},'minrate':{'type':Sequelize[_0x3631('0x3')](_0x3631('0x7'),_0x3631('0x8'),_0x3631('0x9'),'9600',_0x3631('0xa'),_0x3631('0xb')),'defaultValue':_0x3631('0x8')},'maxrate':{'type':Sequelize[_0x3631('0x3')](_0x3631('0x7'),'4800','7200','9600',_0x3631('0xa'),_0x3631('0xb')),'defaultValue':_0x3631('0xb')},'modem':{'type':Sequelize['STRING'],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x3631('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x3631('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x3631('0x3')](_0x3631('0xd'),_0x3631('0xe'),_0x3631('0xf'),_0x3631('0x10')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x3631('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3631('0x11')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x3631('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3631('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3631('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3631('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x3631('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x3631('0x12')],'defaultValue':![],'comment':_0x3631('0x14'),'set':function(_0x389677){if(!_0x389677)this['setDataValue'](_0x3631('0x15'),null);this[_0x3631('0x16')]('mandatoryDisposition',_0x389677);}}};
\ No newline at end of file
index f72f50b..159eab0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x752f=['CheckAfterSend','isNil','\x22%s\x22\x20<%s>','fax','List','List\x20not\x20found','Send\x20Fax\x20failed','filename','Messages','Contact\x20not\x20found','spread','out','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./faxAccount.socket','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','get','UserProfileResource','destroy','end','stack','name','send','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','where','filter','merge','VIRTUAL','options','include','rows','show','params','Pause','length','includeAll','find','create','body','user','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','sort','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','pick','removeAnswers','ids','FaxInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','tag','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','findAndCountAll','priority','finally','getApplications','context','from-voip-provider','localstationid','app','system','description','appdata','push','Answer','CDR(type)=inbound-fax','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','Set','Wait','ReceiveFax','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','tech','createdAt','updatedAt','TrunkId','ListId','findById','$gte','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','Contacts','DESC','attachments','join','server/files/attachments','basename'];(function(_0x5bfe0f,_0x11617b){var _0x42c33b=function(_0x30dc41){while(--_0x30dc41){_0x5bfe0f['push'](_0x5bfe0f['shift']());}};_0x42c33b(++_0x11617b);}(_0x752f,0xe0));var _0xf752=function(_0x105271,_0x7fd534){_0x105271=_0x105271-0x0;var _0x5a887c=_0x752f[_0x105271];return _0x5a887c;};'use strict';var emlformat=require(_0xf752('0x0'));var rimraf=require(_0xf752('0x1'));var zipdir=require(_0xf752('0x2'));var jsonpatch=require(_0xf752('0x3'));var rp=require(_0xf752('0x4'));var moment=require(_0xf752('0x5'));var BPromise=require(_0xf752('0x6'));var Mustache=require(_0xf752('0x7'));var util=require(_0xf752('0x8'));var path=require(_0xf752('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf752('0xa'));var fs=require('fs');var fs_extra=require(_0xf752('0xb'));var _=require(_0xf752('0xc'));var squel=require(_0xf752('0xd'));var crypto=require(_0xf752('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xf752('0xf'));var toCsv=require(_0xf752('0x10'));var querystring=require(_0xf752('0x11'));var Papa=require('papaparse');var Redis=require(_0xf752('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xf752('0x13'));var as=require(_0xf752('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf752('0x15'))('api');var utils=require(_0xf752('0x16'));var config=require(_0xf752('0x17'));var licenseUtil=require(_0xf752('0x18'));var db=require(_0xf752('0x19'))['db'];config['redis']=_[_0xf752('0x1a')](config[_0xf752('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xf752('0x1c'))(new Redis(config[_0xf752('0x1b')]));require(_0xf752('0x1d'))['register'](socket);var jayson=require(_0xf752('0x1e'));var client=jayson[_0xf752('0x1f')][_0xf752('0x20')]({'port':0x232c});var client9002=jayson[_0xf752('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f879c,_0xdb94ad,_0x302c99,_0x3ec91c){return new BPromise(function(_0x5896eb,_0x1da22b){var _0x367e0c=_0x3ec91c||client;return _0x367e0c[_0xf752('0x21')](_0x1f879c,_0x302c99)[_0xf752('0x22')](function(_0x5f434d){logger[_0xf752('0x23')](_0xf752('0x24'),_0xdb94ad,_0xf752('0x25'));logger[_0xf752('0x26')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0xdb94ad,_0xf752('0x25'),JSON[_0xf752('0x27')](_0x5f434d));if(_0x5f434d[_0xf752('0x28')]){if(_0x5f434d[_0xf752('0x28')][_0xf752('0x29')]===0x1f4){logger[_0xf752('0x28')]('FaxAccount,\x20%s,\x20%s',_0xdb94ad,_0x5f434d[_0xf752('0x28')][_0xf752('0x2a')]);return _0x1da22b(_0x5f434d[_0xf752('0x28')][_0xf752('0x2a')]);}logger['error'](_0xf752('0x24'),_0xdb94ad,_0x5f434d[_0xf752('0x28')]['message']);return _0x5896eb(_0x5f434d[_0xf752('0x28')][_0xf752('0x2a')]);}else{logger[_0xf752('0x23')](_0xf752('0x24'),_0xdb94ad,'request\x20sent');_0x5896eb(_0x5f434d[_0xf752('0x2b')][_0xf752('0x2a')]);}})[_0xf752('0x2c')](function(_0x15e750){logger[_0xf752('0x28')](_0xf752('0x24'),_0xdb94ad,_0x15e750);_0x1da22b(_0x15e750);});});}function respondWithStatusCode(_0xa5941f,_0x56d126){_0x56d126=_0x56d126||0xcc;return function(_0x17e261){if(_0x17e261){return _0xa5941f[_0xf752('0x2d')](_0x56d126);}return _0xa5941f['status'](_0x56d126)['end']();};}function respondWithResult(_0x570a48,_0x36acc1){_0x36acc1=_0x36acc1||0xc8;return function(_0x429dc8){if(_0x429dc8){return _0x570a48[_0xf752('0x2e')](_0x36acc1)[_0xf752('0x2f')](_0x429dc8);}};}function respondWithFilteredResult(_0x2508f9,_0xdcf72d){return function(_0x1e7ca6){if(_0x1e7ca6){var _0x856948=typeof _0xdcf72d[_0xf752('0x30')]===_0xf752('0x31')&&typeof _0xdcf72d[_0xf752('0x32')]===_0xf752('0x31');var _0x3ef8bc=_0x1e7ca6[_0xf752('0x33')];var _0x167d98=_0x856948?0x0:_0xdcf72d[_0xf752('0x30')];var _0x113428=_0x856948?_0x1e7ca6['count']:_0xdcf72d['offset']+_0xdcf72d[_0xf752('0x32')];var _0x521228;if(_0x113428>=_0x3ef8bc){_0x113428=_0x3ef8bc;_0x521228=0xc8;}else{_0x521228=0xce;}_0x2508f9[_0xf752('0x2e')](_0x521228);return _0x2508f9['set'](_0xf752('0x34'),_0x167d98+'-'+_0x113428+'/'+_0x3ef8bc)['json'](_0x1e7ca6);}return null;};}function patchUpdates(_0x55008a){return function(_0xf0d826){try{jsonpatch['apply'](_0xf0d826,_0x55008a,!![]);}catch(_0x54ef96){return BPromise[_0xf752('0x35')](_0x54ef96);}return _0xf0d826[_0xf752('0x36')]();};}function saveUpdates(_0x3cf651,_0x36a511){return function(_0x318653){if(_0x318653){return _0x318653[_0xf752('0x37')](_0x3cf651)['then'](function(_0x520b22){return _0x520b22;});}return null;};}function removeEntity(_0x2a246c,_0x5a0d55){return function(_0x33b6f1){if(_0x33b6f1){return _0x33b6f1['destroy']()[_0xf752('0x22')](function(){var _0x28fa1d=_0x33b6f1[_0xf752('0x38')]({'plain':!![]});var _0x509f92='FaxAccounts';return db[_0xf752('0x39')][_0xf752('0x3a')]({'where':{'type':_0x509f92,'resourceId':_0x28fa1d['id']}})[_0xf752('0x22')](function(){return _0x33b6f1;});})[_0xf752('0x22')](function(){_0x2a246c['status'](0xcc)[_0xf752('0x3b')]();});}};}function handleEntityNotFound(_0x591d95,_0x3ea680){return function(_0x171227){if(!_0x171227){_0x591d95[_0xf752('0x2d')](0x194);}return _0x171227;};}function handleError(_0x2b4692,_0x35c8f0){_0x35c8f0=_0x35c8f0||0x1f4;return function(_0x1d8f4e){logger[_0xf752('0x28')](_0x1d8f4e[_0xf752('0x3c')]);if(_0x1d8f4e[_0xf752('0x3d')]){delete _0x1d8f4e[_0xf752('0x3d')];}_0x2b4692[_0xf752('0x2e')](_0x35c8f0)[_0xf752('0x3e')](_0x1d8f4e);};}exports['index']=function(_0x334ac7,_0x2e5d7d){var _0x44caa7={'include':[{'model':db['Pause'],'as':_0xf752('0x3f')}]},_0x350755={},_0x21ac58={'count':0x0,'rows':[]};var _0xb7b8ea=_[_0xf752('0x40')](db[_0xf752('0x41')][_0xf752('0x42')],function(_0x4bbd41){return{'name':_0x4bbd41[_0xf752('0x43')],'type':_0x4bbd41[_0xf752('0x44')][_0xf752('0x45')]};});_0x350755[_0xf752('0x46')]=_['map'](_0xb7b8ea,_0xf752('0x3d'));_0x350755[_0xf752('0x47')]=_[_0xf752('0x48')](_0x334ac7['query']);_0x350755[_0xf752('0x49')]=_[_0xf752('0x4a')](_0x350755['model'],_0x350755['query']);_0x44caa7[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x350755['model'],qs['fields'](_0x334ac7['query'][_0xf752('0x4c')]));_0x44caa7[_0xf752('0x4b')]=_0x44caa7[_0xf752('0x4b')]['length']?_0x44caa7[_0xf752('0x4b')]:_0x350755['model'];if(!_0x334ac7[_0xf752('0x47')]['hasOwnProperty'](_0xf752('0x4d'))){_0x44caa7[_0xf752('0x32')]=qs['limit'](_0x334ac7[_0xf752('0x47')][_0xf752('0x32')]);_0x44caa7[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x334ac7[_0xf752('0x47')][_0xf752('0x30')]);}_0x44caa7['order']=qs['sort'](_0x334ac7[_0xf752('0x47')]['sort']);_0x44caa7[_0xf752('0x4e')]=qs[_0xf752('0x49')](_['pick'](_0x334ac7['query'],_0x350755[_0xf752('0x49')]),_0xb7b8ea);if(_0x334ac7[_0xf752('0x47')][_0xf752('0x4f')]){_0x44caa7[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x44caa7['where'],{'$or':_[_0xf752('0x40')](_0xb7b8ea,function(_0x49600b){if(_0x49600b['type']!==_0xf752('0x51')){var _0x97206e={};_0x97206e[_0x49600b['name']]={'$like':'%'+_0x334ac7['query'][_0xf752('0x4f')]+'%'};return _0x97206e;}})});}_0x44caa7=_[_0xf752('0x50')]({},_0x44caa7,_0x334ac7[_0xf752('0x52')]);var _0x49d9ee={'where':_0x44caa7[_0xf752('0x4e')]};return db[_0xf752('0x41')][_0xf752('0x33')](_0x49d9ee)[_0xf752('0x22')](function(_0xd14827){_0x21ac58[_0xf752('0x33')]=_0xd14827;if(_0x334ac7[_0xf752('0x47')]['includeAll']){_0x44caa7[_0xf752('0x53')]=[{'all':!![]}];}return db[_0xf752('0x41')]['findAll'](_0x44caa7);})[_0xf752('0x22')](function(_0x40a471){_0x21ac58[_0xf752('0x54')]=_0x40a471;return _0x21ac58;})[_0xf752('0x22')](respondWithFilteredResult(_0x2e5d7d,_0x44caa7))[_0xf752('0x2c')](handleError(_0x2e5d7d,null));};exports[_0xf752('0x55')]=function(_0x4da21f,_0x4befe3){var _0x17000d={'raw':![],'where':{'id':_0x4da21f[_0xf752('0x56')]['id']},'include':[{'model':db[_0xf752('0x57')],'as':_0xf752('0x3f')}]},_0x350406={};_0x350406[_0xf752('0x46')]=_[_0xf752('0x48')](db[_0xf752('0x41')]['rawAttributes']);_0x350406[_0xf752('0x47')]=_[_0xf752('0x48')](_0x4da21f[_0xf752('0x47')]);_0x350406['filters']=_[_0xf752('0x4a')](_0x350406['model'],_0x350406[_0xf752('0x47')]);_0x17000d[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x350406[_0xf752('0x46')],qs[_0xf752('0x4c')](_0x4da21f[_0xf752('0x47')]['fields']));_0x17000d['attributes']=_0x17000d[_0xf752('0x4b')][_0xf752('0x58')]?_0x17000d['attributes']:_0x350406[_0xf752('0x46')];if(_0x4da21f[_0xf752('0x47')][_0xf752('0x59')]){_0x17000d[_0xf752('0x53')]=[{'all':!![]}];}_0x17000d=_[_0xf752('0x50')]({},_0x17000d,_0x4da21f[_0xf752('0x52')]);return db[_0xf752('0x41')][_0xf752('0x5a')](_0x17000d)[_0xf752('0x22')](handleEntityNotFound(_0x4befe3,null))['then'](respondWithResult(_0x4befe3,null))['catch'](handleError(_0x4befe3,null));};exports['create']=function(_0x247d89,_0x269b79){return db['FaxAccount'][_0xf752('0x5b')](_0x247d89[_0xf752('0x5c')],{})[_0xf752('0x22')](function(_0x45409c){var _0x1f7131=_0x247d89[_0xf752('0x5d')][_0xf752('0x38')]({'plain':!![]});if(!_0x1f7131)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f7131['role']===_0xf752('0x5d')){var _0x1ab441=_0x45409c[_0xf752('0x38')]({'plain':!![]});var _0x6cb8a5=_0xf752('0x5e');return db[_0xf752('0x5f')][_0xf752('0x5a')]({'where':{'name':_0x6cb8a5,'userProfileId':_0x1f7131[_0xf752('0x60')]},'raw':!![]})[_0xf752('0x22')](function(_0x3567ea){if(_0x3567ea&&_0x3567ea[_0xf752('0x61')]===0x0){return db[_0xf752('0x39')][_0xf752('0x5b')]({'name':_0x1ab441['name'],'resourceId':_0x1ab441['id'],'type':_0x3567ea[_0xf752('0x3d')],'sectionId':_0x3567ea['id']},{})[_0xf752('0x22')](function(){return _0x45409c;});}else{return _0x45409c;}})[_0xf752('0x2c')](function(_0x2718b0){logger[_0xf752('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2718b0);throw _0x2718b0;});}return _0x45409c;})['then'](respondWithResult(_0x269b79,0xc9))[_0xf752('0x2c')](handleError(_0x269b79,null));};exports['update']=function(_0x5e9717,_0x56c8db){if(_0x5e9717['body']['id']){delete _0x5e9717['body']['id'];}return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0x5e9717[_0xf752('0x56')]['id']},'include':[{'model':db['Pause'],'as':_0xf752('0x3f')}]})['then'](handleEntityNotFound(_0x56c8db,null))[_0xf752('0x22')](saveUpdates(_0x5e9717['body'],null))[_0xf752('0x22')](respondWithResult(_0x56c8db,null))[_0xf752('0x2c')](handleError(_0x56c8db,null));};exports[_0xf752('0x3a')]=function(_0x4e56f0,_0x1d5eb7){return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x4e56f0[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x1d5eb7,null))[_0xf752('0x22')](removeEntity(_0x1d5eb7,null))['catch'](handleError(_0x1d5eb7,null));};exports[_0xf752('0x62')]=function(_0x221f32,_0x5f251b){return db[_0xf752('0x41')][_0xf752('0x62')]()[_0xf752('0x22')](respondWithResult(_0x5f251b,null))[_0xf752('0x2c')](handleError(_0x5f251b,null));};exports[_0xf752('0x63')]=function(_0x494d9a,_0x59c808,_0x2a5af9){if(_0x494d9a[_0xf752('0x5c')]['id']){delete _0x494d9a[_0xf752('0x5c')]['id'];}return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x494d9a[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x59c808,null))[_0xf752('0x22')](function(_0x41a504){if(_0x41a504){_0x494d9a[_0xf752('0x5c')][_0xf752('0x64')]=_0x41a504['id'];return db[_0xf752('0x65')][_0xf752('0x5b')](_0x494d9a['body']);}})[_0xf752('0x22')](respondWithResult(_0x59c808,null))[_0xf752('0x2c')](handleError(_0x59c808,null));};exports[_0xf752('0x66')]=function(_0x19dd2b,_0x3a6a2e,_0x6ad4af){var _0x25c583={'raw':![],'where':{}};var _0x3156e9={};var _0x164308={'count':0x0,'rows':[]};return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x19dd2b[_0xf752('0x56')]['id']}})['then'](handleEntityNotFound(_0x3a6a2e,null))[_0xf752('0x22')](function(_0x5d34fb){if(_0x5d34fb){_0x3156e9[_0xf752('0x46')]=_['keys'](db[_0xf752('0x65')][_0xf752('0x42')]);_0x3156e9[_0xf752('0x47')]=_[_0xf752('0x48')](_0x19dd2b[_0xf752('0x47')]);_0x3156e9[_0xf752('0x49')]=_[_0xf752('0x4a')](_0x3156e9['model'],_0x3156e9[_0xf752('0x47')]);_0x25c583[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x3156e9[_0xf752('0x46')],qs['fields'](_0x19dd2b['query'][_0xf752('0x4c')]));_0x25c583[_0xf752('0x4b')]=_0x25c583[_0xf752('0x4b')]['length']?_0x25c583[_0xf752('0x4b')]:_0x3156e9['model'];if(!_0x19dd2b['query'][_0xf752('0x68')](_0xf752('0x4d'))){_0x25c583[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x19dd2b[_0xf752('0x47')]['limit']);_0x25c583[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x19dd2b['query'][_0xf752('0x30')]);}_0x25c583[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0x19dd2b[_0xf752('0x47')][_0xf752('0x6a')]);_0x25c583[_0xf752('0x4e')]=qs[_0xf752('0x49')](_['pick'](_0x19dd2b[_0xf752('0x47')],_0x3156e9[_0xf752('0x49')]));_0x25c583[_0xf752('0x4e')]['FaxAccountId']=_0x5d34fb['id'];if(_0x19dd2b[_0xf752('0x47')][_0xf752('0x4f')]){_0x25c583['where']=_['merge'](_0x25c583[_0xf752('0x4e')],{'$or':_['map'](_0x25c583[_0xf752('0x4b')],function(_0x216469){var _0x500027={};_0x500027[_0x216469]={'$like':'%'+_0x19dd2b[_0xf752('0x47')]['filter']+'%'};return _0x500027;})});}_0x25c583=_[_0xf752('0x50')]({},_0x25c583,_0x19dd2b[_0xf752('0x52')]);return db[_0xf752('0x65')][_0xf752('0x33')]({'where':_0x25c583[_0xf752('0x4e')]})[_0xf752('0x22')](function(_0x5d81da){_0x164308[_0xf752('0x33')]=_0x5d81da;if(_0x19dd2b[_0xf752('0x47')][_0xf752('0x59')]){_0x25c583[_0xf752('0x53')]=[{'all':!![]}];}return db['Disposition'][_0xf752('0x6b')](_0x25c583);})['then'](function(_0xb294d8){_0x164308[_0xf752('0x54')]=_0xb294d8;return _0x164308;});}})[_0xf752('0x22')](respondWithFilteredResult(_0x3a6a2e,_0x25c583))['catch'](handleError(_0x3a6a2e,null));};exports['removeDispositions']=function(_0xbf579a,_0xdbdd7d,_0x3efccb){return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0xbf579a['params']['id']}})['then'](handleEntityNotFound(_0xdbdd7d,null))[_0xf752('0x22')](function(_0x2b259e){if(_0x2b259e){return _0x2b259e[_0xf752('0x6c')](_0xbf579a[_0xf752('0x47')]['ids']);}})[_0xf752('0x22')](respondWithStatusCode(_0xdbdd7d,null))[_0xf752('0x2c')](handleError(_0xdbdd7d,null));};exports[_0xf752('0x6d')]=function(_0xd33476,_0x1b1901,_0xeafef4){if(_0xd33476['body']['id']){delete _0xd33476['body']['id'];}return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0xd33476['params']['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x1b1901,null))[_0xf752('0x22')](function(_0x1e2d2d){if(_0x1e2d2d){_0xd33476[_0xf752('0x5c')][_0xf752('0x64')]=_0x1e2d2d['id'];return db[_0xf752('0x6e')][_0xf752('0x5b')](_0xd33476[_0xf752('0x5c')]);}})[_0xf752('0x22')](respondWithResult(_0x1b1901,null))[_0xf752('0x2c')](handleError(_0x1b1901,null));};exports[_0xf752('0x6f')]=function(_0x4a344f,_0x126134,_0x19de03){var _0x2499dc={'raw':![],'where':{}};var _0x58b669={};var _0x379b3e={'count':0x0,'rows':[]};return db['FaxAccount'][_0xf752('0x67')]({'where':{'id':_0x4a344f[_0xf752('0x56')]['id']}})['then'](handleEntityNotFound(_0x126134,null))[_0xf752('0x22')](function(_0x567893){if(_0x567893){_0x58b669[_0xf752('0x46')]=_[_0xf752('0x48')](db[_0xf752('0x6e')][_0xf752('0x42')]);_0x58b669[_0xf752('0x47')]=_[_0xf752('0x48')](_0x4a344f[_0xf752('0x47')]);_0x58b669[_0xf752('0x49')]=_['intersection'](_0x58b669['model'],_0x58b669[_0xf752('0x47')]);_0x2499dc[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x58b669[_0xf752('0x46')],qs[_0xf752('0x4c')](_0x4a344f['query'][_0xf752('0x4c')]));_0x2499dc[_0xf752('0x4b')]=_0x2499dc[_0xf752('0x4b')][_0xf752('0x58')]?_0x2499dc[_0xf752('0x4b')]:_0x58b669[_0xf752('0x46')];if(!_0x4a344f[_0xf752('0x47')]['hasOwnProperty']('nolimit')){_0x2499dc[_0xf752('0x32')]=qs['limit'](_0x4a344f[_0xf752('0x47')][_0xf752('0x32')]);_0x2499dc[_0xf752('0x30')]=qs['offset'](_0x4a344f[_0xf752('0x47')][_0xf752('0x30')]);}_0x2499dc['order']=qs[_0xf752('0x6a')](_0x4a344f[_0xf752('0x47')][_0xf752('0x6a')]);_0x2499dc[_0xf752('0x4e')]=qs['filters'](_[_0xf752('0x70')](_0x4a344f[_0xf752('0x47')],_0x58b669[_0xf752('0x49')]));_0x2499dc[_0xf752('0x4e')][_0xf752('0x64')]=_0x567893['id'];if(_0x4a344f['query']['filter']){_0x2499dc[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x2499dc['where'],{'$or':_[_0xf752('0x40')](_0x2499dc[_0xf752('0x4b')],function(_0x1579b6){var _0x510ed2={};_0x510ed2[_0x1579b6]={'$like':'%'+_0x4a344f[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x510ed2;})});}_0x2499dc=_[_0xf752('0x50')]({},_0x2499dc,_0x4a344f[_0xf752('0x52')]);return db[_0xf752('0x6e')][_0xf752('0x33')]({'where':_0x2499dc[_0xf752('0x4e')]})[_0xf752('0x22')](function(_0x33861c){_0x379b3e[_0xf752('0x33')]=_0x33861c;if(_0x4a344f[_0xf752('0x47')]['includeAll']){_0x2499dc[_0xf752('0x53')]=[{'all':!![]}];}return db[_0xf752('0x6e')]['findAll'](_0x2499dc);})[_0xf752('0x22')](function(_0x46445a){_0x379b3e['rows']=_0x46445a;return _0x379b3e;});}})[_0xf752('0x22')](respondWithFilteredResult(_0x126134,_0x2499dc))['catch'](handleError(_0x126134,null));};exports[_0xf752('0x71')]=function(_0x34cdd1,_0x244c05,_0x580583){return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0x34cdd1[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x244c05,null))[_0xf752('0x22')](function(_0x32a77f){if(_0x32a77f){return _0x32a77f[_0xf752('0x71')](_0x34cdd1[_0xf752('0x47')][_0xf752('0x72')]);}})[_0xf752('0x22')](respondWithStatusCode(_0x244c05,null))[_0xf752('0x2c')](handleError(_0x244c05,null));};exports['addInteraction']=function(_0x572b64,_0x585230,_0x44539e){return db[_0xf752('0x73')]['find']({'where':{'id':_0x572b64[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x585230,null))['then'](function(_0x3a6d0f){if(_0x3a6d0f){return _0x3a6d0f['addInteraction'](_0x572b64[_0xf752('0x5c')]['ids'],_[_0xf752('0x74')](_0x572b64[_0xf752('0x5c')],[_0xf752('0x72'),'id'])||{});}})[_0xf752('0x22')](respondWithResult(_0x585230,null))[_0xf752('0x2c')](handleError(_0x585230,null));};exports[_0xf752('0x75')]=function(_0x963374,_0x36b15b,_0x53d846){var _0x166f1b={'raw':![],'where':{}};var _0x4634dd={};var _0x45f08b={'count':0x0,'rows':[]};return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x963374['params']['id']}})['then'](handleEntityNotFound(_0x36b15b,null))[_0xf752('0x22')](function(_0x3964cc){if(_0x3964cc){_0x4634dd[_0xf752('0x46')]=_[_0xf752('0x48')](db[_0xf752('0x73')]['rawAttributes']);_0x4634dd['query']=_[_0xf752('0x48')](_0x963374[_0xf752('0x47')]);_0x4634dd[_0xf752('0x49')]=_['intersection'](_0x4634dd[_0xf752('0x46')],_0x4634dd['query']);_0x166f1b[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x4634dd['model'],qs['fields'](_0x963374[_0xf752('0x47')][_0xf752('0x4c')]));_0x166f1b[_0xf752('0x4b')]=_0x166f1b[_0xf752('0x4b')]['length']?_0x166f1b['attributes']:_0x4634dd[_0xf752('0x46')];if(!_0x963374[_0xf752('0x47')]['hasOwnProperty'](_0xf752('0x4d'))){_0x166f1b[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x963374['query'][_0xf752('0x32')]);_0x166f1b[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x963374['query'][_0xf752('0x30')]);}_0x166f1b[_0xf752('0x69')]=qs['sort'](_0x963374[_0xf752('0x47')][_0xf752('0x6a')]);_0x166f1b[_0xf752('0x4e')]=qs['filters'](_['pick'](_0x963374[_0xf752('0x47')],_0x4634dd[_0xf752('0x49')]));_0x166f1b[_0xf752('0x4e')][_0xf752('0x64')]=_0x3964cc['id'];if(_0x963374['query'][_0xf752('0x4f')]){_0x166f1b[_0xf752('0x4e')]=_['merge'](_0x166f1b['where'],{'$or':_[_0xf752('0x40')](_0x166f1b[_0xf752('0x4b')],function(_0x53c78d){var _0x551183={};_0x551183[_0x53c78d]={'$like':'%'+_0x963374[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x551183;})});}_0x166f1b=_[_0xf752('0x50')]({},_0x166f1b,_0x963374[_0xf752('0x52')]);return db[_0xf752('0x73')][_0xf752('0x33')]({'where':_0x166f1b[_0xf752('0x4e')]})['then'](function(_0x1c7d75){_0x45f08b[_0xf752('0x33')]=_0x1c7d75;if(_0x963374[_0xf752('0x47')][_0xf752('0x59')]){_0x166f1b[_0xf752('0x53')]=[{'model':db[_0xf752('0x76')],'as':_0xf752('0x77'),'required':![]},{'model':db[_0xf752('0x78')],'as':_0xf752('0x79'),'attributes':[_0xf752('0x3d'),_0xf752('0x7a'),_0xf752('0x7b')],'required':![]},{'model':db[_0xf752('0x7c')],'as':_0xf752('0x7d'),'attributes':['id','name','color'],'where':_0x963374['query'][_0xf752('0x7e')]?{'id':_0x963374['query'][_0xf752('0x7e')]}:undefined,'required':_0x963374['query'][_0xf752('0x7e')]?!![]:![]}];}return db[_0xf752('0x73')][_0xf752('0x6b')](_0x166f1b);})[_0xf752('0x22')](function(_0x17ba3d){_0x45f08b['rows']=_0x17ba3d;return _0x45f08b;});}})[_0xf752('0x22')](respondWithFilteredResult(_0x36b15b,_0x166f1b))[_0xf752('0x2c')](handleError(_0x36b15b,null));};exports[_0xf752('0x7f')]=function(_0x4835b3,_0x554b86){var _0x395b98=_0x4835b3['params']['id'];var _0x14eebe=_0x4835b3['body'];var _0x327f3b=0xc8;var _0x53060a=null;return db['sequelize'][_0xf752('0x80')]({'isolationLevel':db[_0xf752('0x81')][_0xf752('0x82')][_0xf752('0x83')][_0xf752('0x84')]},function(_0x305ae7){return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x395b98},'transaction':_0x305ae7})['then'](function(_0x60f936){if(_0x60f936){return db[_0xf752('0x85')][_0xf752('0x3a')]({'where':{'FaxAccountId':_0x395b98},'transaction':_0x305ae7})[_0xf752('0x22')](function(){var _0x280d6e=_[_0xf752('0x40')](_0x14eebe,function(_0x1bb4af){_0x1bb4af['FaxAccountId']=_0x395b98;return _0x1bb4af;});return db[_0xf752('0x85')]['bulkCreate'](_0x280d6e,{'transaction':_0x305ae7});});}else{_0x327f3b=0x194;_0x53060a=[];}});})[_0xf752('0x22')](function(){if(_0x327f3b!==0x194){return db[_0xf752('0x85')][_0xf752('0x86')]({'where':{'FaxAccountId':_0x395b98},'order':_0xf752('0x87')})[_0xf752('0x22')](function(_0x21d044){_0x53060a=_0x21d044;});}})['catch'](function(_0x4adbf6){_0x327f3b=0x1f4;logger[_0xf752('0x28')](_0x4adbf6['stack']);if(_0x4adbf6[_0xf752('0x3d')]){delete _0x4adbf6[_0xf752('0x3d')];}_0x53060a=_0x4adbf6;})[_0xf752('0x88')](function(){if(_0x53060a===null){_0x554b86['sendStatus'](_0x327f3b);}else{if(_0x327f3b===0x1f4){_0x554b86['status'](_0x327f3b)[_0xf752('0x3e')](_0x53060a);}else{_0x554b86[_0xf752('0x2e')](_0x327f3b)['json'](_0x53060a);}}});};exports['getApplications']=function(_0x3f5508,_0x44c9f2,_0x1cae27){var _0x42d611={};var _0x47844b={};var _0xf404c1;var _0x51a605;return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x3f5508[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x44c9f2,null))['then'](function(_0x54caea){if(_0x54caea){_0xf404c1=_0x54caea;_0x47844b[_0xf752('0x46')]=_[_0xf752('0x48')](db['FaxApplication'][_0xf752('0x42')]);_0x47844b[_0xf752('0x47')]=_[_0xf752('0x48')](_0x3f5508['query']);_0x47844b['filters']=_[_0xf752('0x4a')](_0x47844b[_0xf752('0x46')],_0x47844b['query']);_0x42d611['attributes']=_[_0xf752('0x4a')](_0x47844b[_0xf752('0x46')],qs[_0xf752('0x4c')](_0x3f5508[_0xf752('0x47')][_0xf752('0x4c')]));_0x42d611[_0xf752('0x4b')]=_0x42d611[_0xf752('0x4b')][_0xf752('0x58')]?_0x42d611[_0xf752('0x4b')]:_0x47844b[_0xf752('0x46')];_0x42d611[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0x3f5508[_0xf752('0x47')][_0xf752('0x6a')]);_0x42d611[_0xf752('0x4e')]=qs[_0xf752('0x49')](_[_0xf752('0x70')](_0x3f5508['query'],_0x47844b[_0xf752('0x49')]));if(_0x3f5508[_0xf752('0x47')][_0xf752('0x4f')]){_0x42d611['where']=_[_0xf752('0x50')](_0x42d611['where'],{'$or':_[_0xf752('0x40')](_0x42d611[_0xf752('0x4b')],function(_0x32c585){var _0xdbbc2a={};_0xdbbc2a[_0x32c585]={'$like':'%'+_0x3f5508[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0xdbbc2a;})});}_0x42d611=_[_0xf752('0x50')]({},_0x42d611,_0x3f5508[_0xf752('0x52')]);return _0xf404c1['getApplications'](_0x42d611);}})[_0xf752('0x22')](function(_0x255df4){if(_0x255df4){_0x51a605=_0x255df4[_0xf752('0x58')];if(!_0x3f5508['query']['hasOwnProperty']('nolimit')){_0x42d611[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x3f5508[_0xf752('0x47')]['limit']);_0x42d611[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x3f5508[_0xf752('0x47')][_0xf752('0x30')]);}return _0xf404c1[_0xf752('0x89')](_0x42d611);}})[_0xf752('0x22')](function(_0x41bb61){if(_0x41bb61){return _0x41bb61?{'count':_0x51a605,'rows':_0x41bb61}:null;}})[_0xf752('0x22')](respondWithResult(_0x44c9f2,null))[_0xf752('0x2c')](handleError(_0x44c9f2,null));};function Extension(_0x5626aa,_0x3a2928,_0x36f94f,_0x1c8454){this[_0xf752('0x8a')]=_0xf752('0x8b');this['exten']=_0x5626aa[_0xf752('0x8c')];this[_0xf752('0x8d')]=_0x1c8454;this[_0xf752('0x44')]=_0xf752('0x8e');this[_0xf752('0x8f')]='Fax\x20Extension';this[_0xf752('0x64')]=_0x5626aa['id'];this['priority']=_0x3a2928;this[_0xf752('0x90')]=_0x36f94f;}function createExtensionsReciveFax(_0x1a3874){var _0x23349f=0x1;var _0x14a5f4=[];_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,'',_0xf752('0x92')));_0x23349f+=0x1;_0x14a5f4['push'](new Extension(_0x1a3874,_0x23349f,_0xf752('0x93'),'Set'));_0x23349f+=0x1;for(var _0x1cfe98 in _0x1a3874){if(_0x1a3874[_0xf752('0x68')](_0x1cfe98)&&(_0x1cfe98==='ecm'||_0x1cfe98===_0xf752('0x8c')||_0x1cfe98===_0xf752('0x94')||_0x1cfe98===_0xf752('0x95')||_0x1cfe98===_0xf752('0x96')||_0x1cfe98===_0xf752('0x97')||_0x1cfe98===_0xf752('0x98')||_0x1cfe98===_0xf752('0x99')||_0x1cfe98===_0xf752('0x9a'))){_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,_0xf752('0x9b')+_0x1cfe98+')='+_0x1a3874[_0x1cfe98],_0xf752('0x9c')));_0x23349f+=0x1;}}_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,'6',_0xf752('0x9d')));_0x23349f+=0x1;_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,'/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',_0xf752('0x9e')));_0x23349f=0x0;return _0x14a5f4;}exports[_0xf752('0x9f')]=function(_0x15a18d,_0x4ab9a9,_0x4ef70e){var _0x1c502e;return db[_0xf752('0x81')][_0xf752('0x80')](function(_0x127a4e){return db[_0xf752('0x41')][_0xf752('0x5b')](_0x15a18d[_0xf752('0x5c')],{'transaction':_0x127a4e})[_0xf752('0x22')](function(_0x156db3){_0x1c502e=_0x156db3[_0xf752('0x38')]({'plain':!![]});return db['VoiceExtension'][_0xf752('0xa0')](createExtensionsReciveFax(_0x1c502e),{'transaction':_0x127a4e});});})[_0xf752('0x22')](function(){return _0x1c502e;})['then'](respondWithResult(_0x4ab9a9,null))[_0xf752('0x2c')](handleError(_0x4ab9a9,null));};exports[_0xf752('0xa1')]=function(_0x6d4235,_0x4e815e,_0x2f772b){var _0x2104ab;return db[_0xf752('0x81')][_0xf752('0x80')](function(_0x4511f8){return db[_0xf752('0x41')][_0xf752('0x37')](_0x6d4235[_0xf752('0x5c')],{'where':{'id':_0x6d4235['body']['id']},'transaction':_0x4511f8})[_0xf752('0x22')](function(_0x2c2d2e){return db[_0xf752('0xa2')][_0xf752('0x3a')]({'where':{'FaxAccountId':_0x6d4235[_0xf752('0x5c')]['id']},'transaction':_0x4511f8})['then'](function(_0x1beee9){return db[_0xf752('0xa2')][_0xf752('0xa0')](createExtensionsReciveFax(_['omit'](_0x6d4235['body'],[_0xf752('0xa3'),_0xf752('0x45'),_0xf752('0xa4'),_0xf752('0xa5'),_0xf752('0xa6'),_0xf752('0xa7')])),{'transaction':_0x4511f8});});});})[_0xf752('0x22')](function(){return db[_0xf752('0x41')][_0xf752('0xa8')](_0x6d4235['body']['id']);})[_0xf752('0x22')](respondWithResult(_0x4e815e,null))['catch'](handleError(_0x4e815e,null));};exports['getMessages']=function(_0xafc51f,_0x2481cf,_0x3b8f79){var _0x371373={'raw':!![],'where':{}};var _0x1b6271={};var _0x201732={'count':0x0,'rows':[]};return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0xafc51f[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x2481cf,null))['then'](function(_0x1d90f3){if(_0x1d90f3){_0x1b6271[_0xf752('0x46')]=_[_0xf752('0x48')](db['FaxMessage'][_0xf752('0x42')]);_0x1b6271[_0xf752('0x47')]=_['keys'](_0xafc51f[_0xf752('0x47')]);_0x1b6271['filters']=_[_0xf752('0x4a')](_0x1b6271['model'],_0x1b6271['query']);_0x371373['attributes']=_[_0xf752('0x4a')](_0x1b6271['model'],qs[_0xf752('0x4c')](_0xafc51f[_0xf752('0x47')][_0xf752('0x4c')]));_0x371373[_0xf752('0x4b')]=_0x371373[_0xf752('0x4b')]['length']?_0x371373[_0xf752('0x4b')]:_0x1b6271[_0xf752('0x46')];if(!_0xafc51f[_0xf752('0x47')][_0xf752('0x68')](_0xf752('0x4d'))){_0x371373['limit']=qs[_0xf752('0x32')](_0xafc51f[_0xf752('0x47')]['limit']);_0x371373[_0xf752('0x30')]=qs[_0xf752('0x30')](_0xafc51f[_0xf752('0x47')][_0xf752('0x30')]);}_0x371373[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0xafc51f[_0xf752('0x47')]['sort']);_0x371373[_0xf752('0x4e')]=qs['filters'](_[_0xf752('0x70')](_0xafc51f['query'],_0x1b6271[_0xf752('0x49')]));_0x371373[_0xf752('0x4e')][_0xf752('0x64')]=_0x1d90f3['id'];if(_0xafc51f[_0xf752('0x47')][_0xf752('0x4f')]){_0x371373['where']=_['merge'](_0x371373[_0xf752('0x4e')],{'$or':_[_0xf752('0x40')](_0x371373[_0xf752('0x4b')],function(_0x5e8ffb){var _0x551eed={};_0x551eed[_0x5e8ffb]={'$like':'%'+_0xafc51f[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x551eed;})});}if(_0xafc51f[_0xf752('0x47')][_0xf752('0xa9')]){var _0x39526b=_0xafc51f[_0xf752('0x47')][_0xf752('0xa9')]['split'](',');var _0x19845e={};_0x19845e[_0x39526b[0x0]]={'$gte':moment(_0x39526b[0x1])[_0xf752('0xaa')](_0xf752('0xab'))};_0x371373[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x371373[_0xf752('0x4e')],_0x19845e);}_0x371373=_['merge']({},_0x371373,_0xafc51f[_0xf752('0x52')]);return db[_0xf752('0xac')]['count']({'where':_0x371373[_0xf752('0x4e')]})[_0xf752('0x22')](function(_0x3a24d6){_0x201732[_0xf752('0x33')]=_0x3a24d6;if(_0xafc51f[_0xf752('0x47')][_0xf752('0x59')]){_0x371373[_0xf752('0x53')]=[{'all':!![]}];}return db[_0xf752('0xac')][_0xf752('0x6b')](_0x371373);})[_0xf752('0x22')](function(_0x11d00d){_0x201732[_0xf752('0x54')]=_0x11d00d;return _0x201732;});}})['then'](respondWithFilteredResult(_0x2481cf,_0x371373))['catch'](handleError(_0x2481cf,null));};exports[_0xf752('0x3e')]=function(_0x18959c,_0x56769e,_0x40b403){var _0x34cbb0,_0x4d2c0e={},_0x8dd4a8;if(_0x18959c[_0xf752('0x5c')]['to']){_0x8dd4a8=_0x18959c[_0xf752('0x5c')]['to'][0x0];}return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x18959c[_0xf752('0x56')]['id']},'include':[{'model':db[_0xf752('0xad')],'as':'List','include':[{'model':db[_0xf752('0x76')],'as':_0xf752('0xae'),'where':{'fax':_0x8dd4a8},'limit':0x1,'order':[[_0xf752('0xa5'),_0xf752('0xaf')]]}]}]})[_0xf752('0x22')](handleEntityNotFound(_0x56769e,null))[_0xf752('0x22')](function(_0x42b59b){_0x34cbb0=_0x42b59b;if(_0x18959c[_0xf752('0x5c')]['attachments']&&_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][_0xf752('0x58')]){for(var _0x39876c=0x0;_0x39876c<_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][_0xf752('0x58')];_0x39876c+=0x1){_0x18959c[_0xf752('0x5c')]['attachments'][_0x39876c]={'filename':_0x18959c['body'][_0xf752('0xb0')][_0x39876c]['name'],'id':_0x18959c['body'][_0xf752('0xb0')][_0x39876c]['id'],'path':path[_0xf752('0xb1')](config['root'],_0xf752('0xb2'),_0x18959c[_0xf752('0x5c')]['attachments'][_0x39876c][_0xf752('0xb3')])};}}return respondWithRpcPromise('CheckAfterSend',_0xf752('0xb4'),{'FaxAccountId':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x56')]['id'])?undefined:_0x18959c[_0xf752('0x56')]['id'],'path':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x5c')]['attachments'][0x0]['path'])?undefined:_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0]['path'],'fax':_['isNil'](_0x18959c[_0xf752('0x5c')]['to'][0x0])?undefined:_0x18959c[_0xf752('0x5c')]['to'][0x0]},client9002);})['then'](function(){if(_0x34cbb0){if(_[_0xf752('0xb5')](_0x18959c[_0xf752('0x5c')]['from'])){_0x18959c['body']['from']=util[_0xf752('0xaa')](_0xf752('0xb6'),_0x34cbb0[_0xf752('0x3d')],_0x34cbb0[_0xf752('0xb7')]);}if(_0x34cbb0[_0xf752('0xb8')]){if(_0x34cbb0['List'][_0xf752('0xae')][_0xf752('0x58')]){return _0x34cbb0['List']['Contacts'][0x0];}else{return db[_0xf752('0x76')]['create'](_[_0xf752('0x1a')](_0x18959c['body'],{'firstName':_0x18959c[_0xf752('0x5c')]['to'][0x0],'phone':_0x18959c[_0xf752('0x5c')]['to'][0x0],'fax':_0x18959c[_0xf752('0x5c')]['to'][0x0],'ListId':_0x34cbb0[_0xf752('0xa7')]}));}}else{throw new Error(_0xf752('0xb9'));}}else{throw new Error(_0xf752('0xba'));}})[_0xf752('0x22')](function(_0x17b3d1){if(_0x17b3d1){return db['FaxInteraction'][_0xf752('0x5a')]({'where':{'ContactId':_0x17b3d1['id'],'closed':![],'FaxAccountId':_0x34cbb0['id']}})[_0xf752('0x22')](function(_0x3d717c){if(_0x3d717c){return[_0x3d717c,![]];}return db[_0xf752('0x73')][_0xf752('0x5b')]({'UserId':_0x18959c[_0xf752('0x5d')]['id'],'ContactId':_0x17b3d1['id'],'FaxAccountId':_0x34cbb0['id'],'fax':_0x18959c[_0xf752('0x5c')]['to'][0x0],'firstMsgDirection':'out','Messages':[_['merge'](_0x18959c['body'],{'read':![],'body':_0x18959c[_0xf752('0x5c')]['attachments'][0x0][_0xf752('0xbb')],'FaxAccountId':_0x34cbb0['id'],'UserId':_0x18959c[_0xf752('0x5d')]['id'],'ContactId':_0x17b3d1['id'],'AttachmentId':_0x18959c[_0xf752('0x5c')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xf752('0xac')],'as':_0xf752('0xbc')}]})[_0xf752('0x22')](function(_0x2a26a9){return[_0x2a26a9,!![]];});});}else{throw new Error(_0xf752('0xbd'));}})[_0xf752('0xbe')](function(_0x5958a8,_0x5cfd07){if(_0x5cfd07){return _0x5958a8;}return db[_0xf752('0xac')][_0xf752('0x5b')]({'direction':_0xf752('0xbf'),'read':![],'body':_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0][_0xf752('0xbb')],'FaxAccountId':_0x34cbb0['id'],'FaxInteractionId':_0x5958a8['id'],'UserId':_0x18959c[_0xf752('0x5d')]['id'],'ContactId':_0x5958a8[_0xf752('0xc0')],'AttachmentId':_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0]['id']})[_0xf752('0x22')](function(_0x845a50){_0x5958a8[_0xf752('0xc1')][_0xf752('0xbc')]=[];_0x5958a8[_0xf752('0xc1')][_0xf752('0xbc')][_0xf752('0x91')](_0x845a50[_0xf752('0xc1')]);return _0x5958a8;});})[_0xf752('0x22')](function(_0x475a45){respondWithRpcPromise(_0xf752('0xc2'),'SendFax',{'FaxAccountId':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x56')]['id'])?undefined:_0x18959c[_0xf752('0x56')]['id'],'path':_[_0xf752('0xb5')](_0x18959c['body'][_0xf752('0xb0')][0x0][_0xf752('0x9')])?undefined:_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0][_0xf752('0x9')],'fax':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x5c')]['to'][0x0])?undefined:_0x18959c[_0xf752('0x5c')]['to'][0x0],'AttachmentId':_0x18959c['body']['attachments'][0x0]['id']},client9002)[_0xf752('0x22')](function(_0x100245){logger[_0xf752('0x23')](_0xf752('0xc3'),_0x100245);})[_0xf752('0x2c')](function(_0x53462f){logger[_0xf752('0x23')](_0xf752('0xc3'),_0x53462f);});return _0x475a45;})['then'](respondWithResult(_0x56769e,null))[_0xf752('0x2c')](handleError(_0x56769e,null));};exports[_0xf752('0xc4')]=function(_0x787615,_0x176be7,_0x50bba4){return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0x787615[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x176be7,null))[_0xf752('0x22')](function(_0x1a90f3){if(_0x1a90f3){return _0x1a90f3[_0xf752('0xc4')](_0x787615[_0xf752('0x5c')][_0xf752('0x72')],_[_0xf752('0x74')](_0x787615['body'],['ids','id'])||{})['spread'](function(_0x42e342){for(var _0x510661=0x0;_0x510661<_0x787615[_0xf752('0x5c')][_0xf752('0x72')][_0xf752('0x58')];_0x510661+=0x1){socket[_0xf752('0xc5')](_0xf752('0xc6'),{'UserId':Number(_0x787615[_0xf752('0x5c')][_0xf752('0x72')][_0x510661]),'FaxAccountId':Number(_0x787615[_0xf752('0x56')]['id'])});}return _0x42e342;});}})[_0xf752('0x22')](respondWithResult(_0x176be7,null))[_0xf752('0x2c')](handleError(_0x176be7,null));};exports['removeAgents']=function(_0x130acb,_0x353d5a,_0x48eec3){return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x130acb[_0xf752('0x56')]['id']}})['then'](handleEntityNotFound(_0x353d5a,null))['then'](function(_0x2b30df){if(_0x2b30df){return _0x2b30df[_0xf752('0xc7')](_0x130acb[_0xf752('0x47')][_0xf752('0x72')])['then'](function(){if(_['isArray'](_0x130acb['query'][_0xf752('0x72')])){for(var _0x2130ac=0x0;_0x2130ac<_0x130acb[_0xf752('0x47')][_0xf752('0x72')][_0xf752('0x58')];_0x2130ac+=0x1){socket['emit'](_0xf752('0xc8'),{'UserId':Number(_0x130acb[_0xf752('0x47')][_0xf752('0x72')][_0x2130ac]),'FaxAccountId':Number(_0x130acb['params']['id'])});}}else{socket[_0xf752('0xc5')](_0xf752('0xc8'),{'UserId':Number(_0x130acb[_0xf752('0x47')][_0xf752('0x72')]),'FaxAccountId':Number(_0x130acb[_0xf752('0x56')]['id'])});}});}})[_0xf752('0x22')](respondWithStatusCode(_0x353d5a,null))[_0xf752('0x2c')](handleError(_0x353d5a,null));};exports[_0xf752('0xc9')]=function(_0x279d54,_0x4baa06,_0x47b004){var _0x3bc82b={};var _0x578a49={};var _0x569778;var _0x3abdf1;return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x279d54['params']['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x4baa06,null))[_0xf752('0x22')](function(_0x266ca6){if(_0x266ca6){_0x569778=_0x266ca6;_0x578a49[_0xf752('0x46')]=_['keys'](db['User'][_0xf752('0x42')]);_0x578a49[_0xf752('0x47')]=_[_0xf752('0x48')](_0x279d54['query']);_0x578a49[_0xf752('0x49')]=_['intersection'](_0x578a49[_0xf752('0x46')],_0x578a49['query']);_0x3bc82b[_0xf752('0x4b')]=_['intersection'](_0x578a49['model'],qs[_0xf752('0x4c')](_0x279d54[_0xf752('0x47')][_0xf752('0x4c')]));_0x3bc82b['attributes']=_0x3bc82b['attributes']['length']?_0x3bc82b['attributes']:_0x578a49[_0xf752('0x46')];_0x3bc82b[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0x279d54[_0xf752('0x47')][_0xf752('0x6a')]);_0x3bc82b[_0xf752('0x4e')]=qs[_0xf752('0x49')](_[_0xf752('0x70')](_0x279d54[_0xf752('0x47')],_0x578a49[_0xf752('0x49')]));if(_0x279d54[_0xf752('0x47')][_0xf752('0x4f')]){_0x3bc82b[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x3bc82b['where'],{'$or':_['map'](_0x3bc82b['attributes'],function(_0x45652a){var _0x4497fe={};_0x4497fe[_0x45652a]={'$like':'%'+_0x279d54[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x4497fe;})});}_0x3bc82b=_[_0xf752('0x50')]({},_0x3bc82b,_0x279d54['options']);return _0x569778[_0xf752('0xc9')](_0x3bc82b);}})['then'](function(_0x15aee6){if(_0x15aee6){_0x3abdf1=_0x15aee6[_0xf752('0x58')];if(!_0x279d54[_0xf752('0x47')]['hasOwnProperty'](_0xf752('0x4d'))){_0x3bc82b[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x279d54['query']['limit']);_0x3bc82b['offset']=qs[_0xf752('0x30')](_0x279d54['query'][_0xf752('0x30')]);}return _0x569778[_0xf752('0xc9')](_0x3bc82b);}})['then'](function(_0x36354a){if(_0x36354a){return _0x36354a?{'count':_0x3abdf1,'rows':_0x36354a}:null;}})[_0xf752('0x22')](respondWithResult(_0x4baa06,null))[_0xf752('0x2c')](handleError(_0x4baa06,null));};
\ No newline at end of file
+var _0x2efb=['addApplications','sequelize','Transaction','ISOLATION_LEVELS','bulkCreate','FaxApplication','priority','finally','getApplications','from-voip-provider','localstationid','app','system','description','Fax\x20Extension','appdata','Answer','push','Set','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','updateAccountApplications','VoiceExtension','tech','key','createdAt','updatedAt','TrunkId','findById','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','ListId','List\x20not\x20found','out','filename','user','Messages','Contact\x20not\x20found','ContactId','dataValues','SendFax','info','SendFaxRpc,\x20%s','addAgents','spread','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','User','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','sendStatus','status','end','json','offset','undefined','limit','count','reject','save','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','merge','options','includeAll','include','findAll','rows','catch','show','intersection','find','userProfileId','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','Disposition','getDispositions','findOne','nolimit','pick','FaxAccountId','filter','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Contact','Owner','fullname','internal','color','tag'];(function(_0x92b1f5,_0xdf7a26){var _0x3c1d17=function(_0x1d0b68){while(--_0x1d0b68){_0x92b1f5['push'](_0x92b1f5['shift']());}};_0x3c1d17(++_0xdf7a26);}(_0x2efb,0x1d7));var _0xb2ef=function(_0x5a19dd,_0x30c16d){_0x5a19dd=_0x5a19dd-0x0;var _0x361faa=_0x2efb[_0x5a19dd];return _0x361faa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb2ef('0x0'));var zipdir=require(_0xb2ef('0x1'));var jsonpatch=require(_0xb2ef('0x2'));var rp=require(_0xb2ef('0x3'));var moment=require(_0xb2ef('0x4'));var BPromise=require(_0xb2ef('0x5'));var Mustache=require(_0xb2ef('0x6'));var util=require(_0xb2ef('0x7'));var path=require(_0xb2ef('0x8'));var sox=require('sox');var csv=require(_0xb2ef('0x9'));var ejs=require(_0xb2ef('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb2ef('0xb'));var squel=require('squel');var crypto=require(_0xb2ef('0xc'));var jsforce=require(_0xb2ef('0xd'));var deskjs=require(_0xb2ef('0xe'));var toCsv=require(_0xb2ef('0x9'));var querystring=require(_0xb2ef('0xf'));var Papa=require(_0xb2ef('0x10'));var Redis=require(_0xb2ef('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb2ef('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb2ef('0x13'))(_0xb2ef('0x14'));var utils=require(_0xb2ef('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb2ef('0x16'))['db'];config[_0xb2ef('0x17')]=_[_0xb2ef('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb2ef('0x19'))(new Redis(config[_0xb2ef('0x17')]));require(_0xb2ef('0x1a'))[_0xb2ef('0x1b')](socket);var jayson=require(_0xb2ef('0x1c'));var client=jayson[_0xb2ef('0x1d')][_0xb2ef('0x1e')]({'port':0x232c});var client9002=jayson[_0xb2ef('0x1d')][_0xb2ef('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0xe76276,_0x109667,_0x4df417,_0x427554){return new BPromise(function(_0x4be554,_0x87c6fa){var _0x21d15f=_0x427554||client;return _0x21d15f[_0xb2ef('0x1f')](_0xe76276,_0x4df417)[_0xb2ef('0x20')](function(_0x5cc57c){logger['info']('FaxAccount,\x20%s,\x20%s',_0x109667,_0xb2ef('0x21'));logger[_0xb2ef('0x22')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x109667,_0xb2ef('0x21'),JSON[_0xb2ef('0x23')](_0x5cc57c));if(_0x5cc57c[_0xb2ef('0x24')]){if(_0x5cc57c[_0xb2ef('0x24')][_0xb2ef('0x25')]===0x1f4){logger[_0xb2ef('0x24')](_0xb2ef('0x26'),_0x109667,_0x5cc57c[_0xb2ef('0x24')]['message']);return _0x87c6fa(_0x5cc57c[_0xb2ef('0x24')][_0xb2ef('0x27')]);}logger[_0xb2ef('0x24')](_0xb2ef('0x26'),_0x109667,_0x5cc57c[_0xb2ef('0x24')][_0xb2ef('0x27')]);return _0x4be554(_0x5cc57c[_0xb2ef('0x24')]['message']);}else{logger['info'](_0xb2ef('0x26'),_0x109667,_0xb2ef('0x21'));_0x4be554(_0x5cc57c['result'][_0xb2ef('0x27')]);}})['catch'](function(_0x1ac5e2){logger['error'](_0xb2ef('0x26'),_0x109667,_0x1ac5e2);_0x87c6fa(_0x1ac5e2);});});}function respondWithStatusCode(_0x50802c,_0x1195e5){_0x1195e5=_0x1195e5||0xcc;return function(_0x291299){if(_0x291299){return _0x50802c[_0xb2ef('0x28')](_0x1195e5);}return _0x50802c[_0xb2ef('0x29')](_0x1195e5)[_0xb2ef('0x2a')]();};}function respondWithResult(_0xf7a3e3,_0x204f58){_0x204f58=_0x204f58||0xc8;return function(_0x34af12){if(_0x34af12){return _0xf7a3e3[_0xb2ef('0x29')](_0x204f58)[_0xb2ef('0x2b')](_0x34af12);}};}function respondWithFilteredResult(_0x3b3507,_0x15c724){return function(_0x5b3c3b){if(_0x5b3c3b){var _0x2a7899=typeof _0x15c724[_0xb2ef('0x2c')]===_0xb2ef('0x2d')&&typeof _0x15c724[_0xb2ef('0x2e')]===_0xb2ef('0x2d');var _0x38510a=_0x5b3c3b[_0xb2ef('0x2f')];var _0x5d0f74=_0x2a7899?0x0:_0x15c724[_0xb2ef('0x2c')];var _0xe2c012=_0x2a7899?_0x5b3c3b['count']:_0x15c724[_0xb2ef('0x2c')]+_0x15c724[_0xb2ef('0x2e')];var _0x104017;if(_0xe2c012>=_0x38510a){_0xe2c012=_0x38510a;_0x104017=0xc8;}else{_0x104017=0xce;}_0x3b3507['status'](_0x104017);return _0x3b3507['set']('Content-Range',_0x5d0f74+'-'+_0xe2c012+'/'+_0x38510a)[_0xb2ef('0x2b')](_0x5b3c3b);}return null;};}function patchUpdates(_0x16dbd8){return function(_0x3dd084){try{jsonpatch['apply'](_0x3dd084,_0x16dbd8,!![]);}catch(_0x2173ba){return BPromise[_0xb2ef('0x30')](_0x2173ba);}return _0x3dd084[_0xb2ef('0x31')]();};}function saveUpdates(_0x33fa98,_0x44b9c5){return function(_0x1453e3){if(_0x1453e3){return _0x1453e3[_0xb2ef('0x32')](_0x33fa98)[_0xb2ef('0x20')](function(_0x2b5e28){return _0x2b5e28;});}return null;};}function removeEntity(_0xd47c67,_0x2efe79){return function(_0x18fef7){if(_0x18fef7){return _0x18fef7[_0xb2ef('0x33')]()['then'](function(){var _0xfc2655=_0x18fef7[_0xb2ef('0x34')]({'plain':!![]});var _0x404c6b=_0xb2ef('0x35');return db[_0xb2ef('0x36')][_0xb2ef('0x33')]({'where':{'type':_0x404c6b,'resourceId':_0xfc2655['id']}})['then'](function(){return _0x18fef7;});})[_0xb2ef('0x20')](function(){_0xd47c67[_0xb2ef('0x29')](0xcc)[_0xb2ef('0x2a')]();});}};}function handleEntityNotFound(_0x280b08,_0x16e500){return function(_0x53ae3d){if(!_0x53ae3d){_0x280b08[_0xb2ef('0x28')](0x194);}return _0x53ae3d;};}function handleError(_0x29e619,_0x372ce2){_0x372ce2=_0x372ce2||0x1f4;return function(_0x47a996){logger[_0xb2ef('0x24')](_0x47a996[_0xb2ef('0x37')]);if(_0x47a996[_0xb2ef('0x38')]){delete _0x47a996[_0xb2ef('0x38')];}_0x29e619[_0xb2ef('0x29')](_0x372ce2)[_0xb2ef('0x39')](_0x47a996);};}exports[_0xb2ef('0x3a')]=function(_0x552db0,_0x7ca38a){var _0x1fdd34={'include':[{'model':db[_0xb2ef('0x3b')],'as':_0xb2ef('0x3c')}]},_0x5ab8fa={},_0x5762d7={'count':0x0,'rows':[]};var _0x423293=_[_0xb2ef('0x3d')](db[_0xb2ef('0x3e')][_0xb2ef('0x3f')],function(_0x37ff32){return{'name':_0x37ff32['fieldName'],'type':_0x37ff32[_0xb2ef('0x40')]['key']};});_0x5ab8fa[_0xb2ef('0x41')]=_[_0xb2ef('0x3d')](_0x423293,_0xb2ef('0x38'));_0x5ab8fa[_0xb2ef('0x42')]=_[_0xb2ef('0x43')](_0x552db0[_0xb2ef('0x42')]);_0x5ab8fa[_0xb2ef('0x44')]=_['intersection'](_0x5ab8fa[_0xb2ef('0x41')],_0x5ab8fa[_0xb2ef('0x42')]);_0x1fdd34[_0xb2ef('0x45')]=_['intersection'](_0x5ab8fa['model'],qs['fields'](_0x552db0[_0xb2ef('0x42')][_0xb2ef('0x46')]));_0x1fdd34[_0xb2ef('0x45')]=_0x1fdd34[_0xb2ef('0x45')][_0xb2ef('0x47')]?_0x1fdd34['attributes']:_0x5ab8fa[_0xb2ef('0x41')];if(!_0x552db0[_0xb2ef('0x42')][_0xb2ef('0x48')]('nolimit')){_0x1fdd34[_0xb2ef('0x2e')]=qs['limit'](_0x552db0[_0xb2ef('0x42')][_0xb2ef('0x2e')]);_0x1fdd34[_0xb2ef('0x2c')]=qs[_0xb2ef('0x2c')](_0x552db0['query'][_0xb2ef('0x2c')]);}_0x1fdd34[_0xb2ef('0x49')]=qs['sort'](_0x552db0['query'][_0xb2ef('0x4a')]);_0x1fdd34['where']=qs[_0xb2ef('0x44')](_['pick'](_0x552db0[_0xb2ef('0x42')],_0x5ab8fa['filters']),_0x423293);if(_0x552db0[_0xb2ef('0x42')]['filter']){_0x1fdd34[_0xb2ef('0x4b')]=_[_0xb2ef('0x4c')](_0x1fdd34[_0xb2ef('0x4b')],{'$or':_[_0xb2ef('0x3d')](_0x423293,function(_0x1bc06d){if(_0x1bc06d[_0xb2ef('0x40')]!=='VIRTUAL'){var _0x8ccd01={};_0x8ccd01[_0x1bc06d['name']]={'$like':'%'+_0x552db0[_0xb2ef('0x42')]['filter']+'%'};return _0x8ccd01;}})});}_0x1fdd34=_[_0xb2ef('0x4c')]({},_0x1fdd34,_0x552db0[_0xb2ef('0x4d')]);var _0x396839={'where':_0x1fdd34[_0xb2ef('0x4b')]};return db[_0xb2ef('0x3e')]['count'](_0x396839)[_0xb2ef('0x20')](function(_0x583f35){_0x5762d7['count']=_0x583f35;if(_0x552db0[_0xb2ef('0x42')][_0xb2ef('0x4e')]){_0x1fdd34[_0xb2ef('0x4f')]=[{'all':!![]}];}return db['FaxAccount'][_0xb2ef('0x50')](_0x1fdd34);})[_0xb2ef('0x20')](function(_0xded0b5){_0x5762d7[_0xb2ef('0x51')]=_0xded0b5;return _0x5762d7;})['then'](respondWithFilteredResult(_0x7ca38a,_0x1fdd34))[_0xb2ef('0x52')](handleError(_0x7ca38a,null));};exports[_0xb2ef('0x53')]=function(_0x232646,_0xcce55e){var _0x14665f={'raw':![],'where':{'id':_0x232646['params']['id']},'include':[{'model':db['Pause'],'as':_0xb2ef('0x3c')}]},_0x51cafd={};_0x51cafd[_0xb2ef('0x41')]=_[_0xb2ef('0x43')](db[_0xb2ef('0x3e')][_0xb2ef('0x3f')]);_0x51cafd[_0xb2ef('0x42')]=_[_0xb2ef('0x43')](_0x232646[_0xb2ef('0x42')]);_0x51cafd[_0xb2ef('0x44')]=_[_0xb2ef('0x54')](_0x51cafd[_0xb2ef('0x41')],_0x51cafd[_0xb2ef('0x42')]);_0x14665f[_0xb2ef('0x45')]=_[_0xb2ef('0x54')](_0x51cafd[_0xb2ef('0x41')],qs[_0xb2ef('0x46')](_0x232646['query']['fields']));_0x14665f[_0xb2ef('0x45')]=_0x14665f[_0xb2ef('0x45')]['length']?_0x14665f[_0xb2ef('0x45')]:_0x51cafd[_0xb2ef('0x41')];if(_0x232646[_0xb2ef('0x42')][_0xb2ef('0x4e')]){_0x14665f['include']=[{'all':!![]}];}_0x14665f=_[_0xb2ef('0x4c')]({},_0x14665f,_0x232646[_0xb2ef('0x4d')]);return db[_0xb2ef('0x3e')][_0xb2ef('0x55')](_0x14665f)['then'](handleEntityNotFound(_0xcce55e,null))[_0xb2ef('0x20')](respondWithResult(_0xcce55e,null))['catch'](handleError(_0xcce55e,null));};exports['create']=function(_0x164b30,_0xd1578){return db[_0xb2ef('0x3e')]['create'](_0x164b30['body'],{})['then'](function(_0x221e11){var _0x192741=_0x164b30['user'][_0xb2ef('0x34')]({'plain':!![]});if(!_0x192741)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x192741['role']==='user'){var _0x390719=_0x221e11[_0xb2ef('0x34')]({'plain':!![]});var _0x272eb0=_0xb2ef('0x35');return db['UserProfileSection'][_0xb2ef('0x55')]({'where':{'name':_0x272eb0,'userProfileId':_0x192741[_0xb2ef('0x56')]},'raw':!![]})[_0xb2ef('0x20')](function(_0x99ff50){if(_0x99ff50&&_0x99ff50['autoAssociation']===0x0){return db[_0xb2ef('0x36')][_0xb2ef('0x57')]({'name':_0x390719['name'],'resourceId':_0x390719['id'],'type':_0x99ff50[_0xb2ef('0x38')],'sectionId':_0x99ff50['id']},{})['then'](function(){return _0x221e11;});}else{return _0x221e11;}})['catch'](function(_0x17e5e6){logger['error'](_0xb2ef('0x58'),_0x17e5e6);throw _0x17e5e6;});}return _0x221e11;})[_0xb2ef('0x20')](respondWithResult(_0xd1578,0xc9))[_0xb2ef('0x52')](handleError(_0xd1578,null));};exports[_0xb2ef('0x32')]=function(_0x492531,_0xe7a783){if(_0x492531[_0xb2ef('0x59')]['id']){delete _0x492531['body']['id'];}return db[_0xb2ef('0x3e')]['find']({'where':{'id':_0x492531[_0xb2ef('0x5a')]['id']},'include':[{'model':db[_0xb2ef('0x3b')],'as':_0xb2ef('0x3c')}]})['then'](handleEntityNotFound(_0xe7a783,null))[_0xb2ef('0x20')](saveUpdates(_0x492531['body'],null))[_0xb2ef('0x20')](respondWithResult(_0xe7a783,null))['catch'](handleError(_0xe7a783,null));};exports[_0xb2ef('0x33')]=function(_0x29dc86,_0x179dfb){return db['FaxAccount']['find']({'where':{'id':_0x29dc86[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x179dfb,null))['then'](removeEntity(_0x179dfb,null))['catch'](handleError(_0x179dfb,null));};exports[_0xb2ef('0x5b')]=function(_0x53435a,_0x1b2aa5){return db[_0xb2ef('0x3e')][_0xb2ef('0x5b')]()['then'](respondWithResult(_0x1b2aa5,null))['catch'](handleError(_0x1b2aa5,null));};exports[_0xb2ef('0x5c')]=function(_0x34e1f3,_0x1efee8,_0xe6337b){if(_0x34e1f3[_0xb2ef('0x59')]['id']){delete _0x34e1f3[_0xb2ef('0x59')]['id'];}return db[_0xb2ef('0x3e')]['find']({'where':{'id':_0x34e1f3[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x1efee8,null))['then'](function(_0x56dd46){if(_0x56dd46){_0x34e1f3[_0xb2ef('0x59')]['FaxAccountId']=_0x56dd46['id'];return db[_0xb2ef('0x5d')]['create'](_0x34e1f3[_0xb2ef('0x59')]);}})[_0xb2ef('0x20')](respondWithResult(_0x1efee8,null))[_0xb2ef('0x52')](handleError(_0x1efee8,null));};exports[_0xb2ef('0x5e')]=function(_0x42068a,_0x27fe95,_0x1a4824){var _0x278dce={'raw':![],'where':{}};var _0x257881={};var _0x336c4b={'count':0x0,'rows':[]};return db[_0xb2ef('0x3e')][_0xb2ef('0x5f')]({'where':{'id':_0x42068a[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x27fe95,null))[_0xb2ef('0x20')](function(_0x412ec3){if(_0x412ec3){_0x257881[_0xb2ef('0x41')]=_[_0xb2ef('0x43')](db[_0xb2ef('0x5d')]['rawAttributes']);_0x257881[_0xb2ef('0x42')]=_[_0xb2ef('0x43')](_0x42068a[_0xb2ef('0x42')]);_0x257881[_0xb2ef('0x44')]=_[_0xb2ef('0x54')](_0x257881['model'],_0x257881[_0xb2ef('0x42')]);_0x278dce[_0xb2ef('0x45')]=_['intersection'](_0x257881['model'],qs['fields'](_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x46')]));_0x278dce['attributes']=_0x278dce['attributes'][_0xb2ef('0x47')]?_0x278dce[_0xb2ef('0x45')]:_0x257881[_0xb2ef('0x41')];if(!_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x48')](_0xb2ef('0x60'))){_0x278dce[_0xb2ef('0x2e')]=qs[_0xb2ef('0x2e')](_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x2e')]);_0x278dce[_0xb2ef('0x2c')]=qs[_0xb2ef('0x2c')](_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x2c')]);}_0x278dce[_0xb2ef('0x49')]=qs[_0xb2ef('0x4a')](_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x4a')]);_0x278dce[_0xb2ef('0x4b')]=qs['filters'](_[_0xb2ef('0x61')](_0x42068a[_0xb2ef('0x42')],_0x257881['filters']));_0x278dce['where'][_0xb2ef('0x62')]=_0x412ec3['id'];if(_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x63')]){_0x278dce['where']=_['merge'](_0x278dce[_0xb2ef('0x4b')],{'$or':_['map'](_0x278dce[_0xb2ef('0x45')],function(_0x2ae0c3){var _0x1e2ea4={};_0x1e2ea4[_0x2ae0c3]={'$like':'%'+_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x63')]+'%'};return _0x1e2ea4;})});}_0x278dce=_[_0xb2ef('0x4c')]({},_0x278dce,_0x42068a[_0xb2ef('0x4d')]);return db[_0xb2ef('0x5d')][_0xb2ef('0x2f')]({'where':_0x278dce[_0xb2ef('0x4b')]})[_0xb2ef('0x20')](function(_0x9017f9){_0x336c4b['count']=_0x9017f9;if(_0x42068a[_0xb2ef('0x42')][_0xb2ef('0x4e')]){_0x278dce[_0xb2ef('0x4f')]=[{'all':!![]}];}return db[_0xb2ef('0x5d')][_0xb2ef('0x50')](_0x278dce);})['then'](function(_0x1065e5){_0x336c4b[_0xb2ef('0x51')]=_0x1065e5;return _0x336c4b;});}})[_0xb2ef('0x20')](respondWithFilteredResult(_0x27fe95,_0x278dce))[_0xb2ef('0x52')](handleError(_0x27fe95,null));};exports[_0xb2ef('0x64')]=function(_0x3df6fe,_0x164599,_0x5a51c3){return db[_0xb2ef('0x3e')][_0xb2ef('0x55')]({'where':{'id':_0x3df6fe[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x164599,null))[_0xb2ef('0x20')](function(_0x43e1ba){if(_0x43e1ba){return _0x43e1ba[_0xb2ef('0x64')](_0x3df6fe[_0xb2ef('0x42')][_0xb2ef('0x65')]);}})[_0xb2ef('0x20')](respondWithStatusCode(_0x164599,null))[_0xb2ef('0x52')](handleError(_0x164599,null));};exports[_0xb2ef('0x66')]=function(_0x201323,_0x1bb199,_0x240779){if(_0x201323['body']['id']){delete _0x201323[_0xb2ef('0x59')]['id'];}return db['FaxAccount'][_0xb2ef('0x55')]({'where':{'id':_0x201323[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x1bb199,null))['then'](function(_0x4b79ab){if(_0x4b79ab){_0x201323[_0xb2ef('0x59')]['FaxAccountId']=_0x4b79ab['id'];return db[_0xb2ef('0x67')][_0xb2ef('0x57')](_0x201323[_0xb2ef('0x59')]);}})[_0xb2ef('0x20')](respondWithResult(_0x1bb199,null))[_0xb2ef('0x52')](handleError(_0x1bb199,null));};exports[_0xb2ef('0x68')]=function(_0x443bd8,_0x4e8c06,_0x4930f8){var _0x2652b1={'raw':![],'where':{}};var _0xd0070={};var _0x4ca9ba={'count':0x0,'rows':[]};return db[_0xb2ef('0x3e')][_0xb2ef('0x5f')]({'where':{'id':_0x443bd8[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x4e8c06,null))[_0xb2ef('0x20')](function(_0x2a276b){if(_0x2a276b){_0xd0070['model']=_['keys'](db[_0xb2ef('0x67')][_0xb2ef('0x3f')]);_0xd0070[_0xb2ef('0x42')]=_['keys'](_0x443bd8[_0xb2ef('0x42')]);_0xd0070['filters']=_[_0xb2ef('0x54')](_0xd0070['model'],_0xd0070[_0xb2ef('0x42')]);_0x2652b1[_0xb2ef('0x45')]=_[_0xb2ef('0x54')](_0xd0070[_0xb2ef('0x41')],qs[_0xb2ef('0x46')](_0x443bd8[_0xb2ef('0x42')][_0xb2ef('0x46')]));_0x2652b1[_0xb2ef('0x45')]=_0x2652b1[_0xb2ef('0x45')][_0xb2ef('0x47')]?_0x2652b1[_0xb2ef('0x45')]:_0xd0070[_0xb2ef('0x41')];if(!_0x443bd8[_0xb2ef('0x42')][_0xb2ef('0x48')]('nolimit')){_0x2652b1['limit']=qs[_0xb2ef('0x2e')](_0x443bd8[_0xb2ef('0x42')][_0xb2ef('0x2e')]);_0x2652b1[_0xb2ef('0x2c')]=qs[_0xb2ef('0x2c')](_0x443bd8[_0xb2ef('0x42')]['offset']);}_0x2652b1[_0xb2ef('0x49')]=qs[_0xb2ef('0x4a')](_0x443bd8[_0xb2ef('0x42')][_0xb2ef('0x4a')]);_0x2652b1['where']=qs['filters'](_[_0xb2ef('0x61')](_0x443bd8[_0xb2ef('0x42')],_0xd0070[_0xb2ef('0x44')]));_0x2652b1[_0xb2ef('0x4b')]['FaxAccountId']=_0x2a276b['id'];if(_0x443bd8['query']['filter']){_0x2652b1[_0xb2ef('0x4b')]=_['merge'](_0x2652b1[_0xb2ef('0x4b')],{'$or':_[_0xb2ef('0x3d')](_0x2652b1[_0xb2ef('0x45')],function(_0x4f7f50){var _0xcec33d={};_0xcec33d[_0x4f7f50]={'$like':'%'+_0x443bd8[_0xb2ef('0x42')][_0xb2ef('0x63')]+'%'};return _0xcec33d;})});}_0x2652b1=_[_0xb2ef('0x4c')]({},_0x2652b1,_0x443bd8['options']);return db[_0xb2ef('0x67')][_0xb2ef('0x2f')]({'where':_0x2652b1[_0xb2ef('0x4b')]})[_0xb2ef('0x20')](function(_0x29df46){_0x4ca9ba['count']=_0x29df46;if(_0x443bd8['query']['includeAll']){_0x2652b1[_0xb2ef('0x4f')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x2652b1);})[_0xb2ef('0x20')](function(_0x49cd22){_0x4ca9ba[_0xb2ef('0x51')]=_0x49cd22;return _0x4ca9ba;});}})['then'](respondWithFilteredResult(_0x4e8c06,_0x2652b1))[_0xb2ef('0x52')](handleError(_0x4e8c06,null));};exports[_0xb2ef('0x69')]=function(_0x1dacce,_0x5cb6ec,_0x12847b){return db['FaxAccount'][_0xb2ef('0x55')]({'where':{'id':_0x1dacce[_0xb2ef('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5cb6ec,null))[_0xb2ef('0x20')](function(_0x4adf23){if(_0x4adf23){return _0x4adf23[_0xb2ef('0x69')](_0x1dacce[_0xb2ef('0x42')][_0xb2ef('0x65')]);}})[_0xb2ef('0x20')](respondWithStatusCode(_0x5cb6ec,null))[_0xb2ef('0x52')](handleError(_0x5cb6ec,null));};exports[_0xb2ef('0x6a')]=function(_0x53aa17,_0x320345,_0x210096){return db[_0xb2ef('0x6b')][_0xb2ef('0x55')]({'where':{'id':_0x53aa17[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x320345,null))[_0xb2ef('0x20')](function(_0x3e1c72){if(_0x3e1c72){return _0x3e1c72[_0xb2ef('0x6a')](_0x53aa17[_0xb2ef('0x59')]['ids'],_[_0xb2ef('0x6c')](_0x53aa17[_0xb2ef('0x59')],[_0xb2ef('0x65'),'id'])||{});}})[_0xb2ef('0x20')](respondWithResult(_0x320345,null))[_0xb2ef('0x52')](handleError(_0x320345,null));};exports[_0xb2ef('0x6d')]=function(_0xa2f647,_0x4b1c17,_0x159a1a){var _0x4af3bb={'raw':![],'where':{}};var _0x120789={};var _0x3ca2d2={'count':0x0,'rows':[]};return db[_0xb2ef('0x3e')][_0xb2ef('0x5f')]({'where':{'id':_0xa2f647[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x4b1c17,null))[_0xb2ef('0x20')](function(_0x484cca){if(_0x484cca){_0x120789[_0xb2ef('0x41')]=_['keys'](db[_0xb2ef('0x6b')][_0xb2ef('0x3f')]);_0x120789[_0xb2ef('0x42')]=_['keys'](_0xa2f647[_0xb2ef('0x42')]);_0x120789['filters']=_['intersection'](_0x120789[_0xb2ef('0x41')],_0x120789['query']);_0x4af3bb['attributes']=_[_0xb2ef('0x54')](_0x120789[_0xb2ef('0x41')],qs[_0xb2ef('0x46')](_0xa2f647[_0xb2ef('0x42')][_0xb2ef('0x46')]));_0x4af3bb[_0xb2ef('0x45')]=_0x4af3bb[_0xb2ef('0x45')]['length']?_0x4af3bb[_0xb2ef('0x45')]:_0x120789['model'];if(!_0xa2f647[_0xb2ef('0x42')][_0xb2ef('0x48')](_0xb2ef('0x60'))){_0x4af3bb['limit']=qs[_0xb2ef('0x2e')](_0xa2f647['query'][_0xb2ef('0x2e')]);_0x4af3bb[_0xb2ef('0x2c')]=qs[_0xb2ef('0x2c')](_0xa2f647['query'][_0xb2ef('0x2c')]);}_0x4af3bb[_0xb2ef('0x49')]=qs[_0xb2ef('0x4a')](_0xa2f647[_0xb2ef('0x42')][_0xb2ef('0x4a')]);_0x4af3bb[_0xb2ef('0x4b')]=qs[_0xb2ef('0x44')](_[_0xb2ef('0x61')](_0xa2f647[_0xb2ef('0x42')],_0x120789[_0xb2ef('0x44')]));_0x4af3bb[_0xb2ef('0x4b')][_0xb2ef('0x62')]=_0x484cca['id'];if(_0xa2f647[_0xb2ef('0x42')]['filter']){_0x4af3bb[_0xb2ef('0x4b')]=_[_0xb2ef('0x4c')](_0x4af3bb[_0xb2ef('0x4b')],{'$or':_['map'](_0x4af3bb['attributes'],function(_0x2f9469){var _0x4421a9={};_0x4421a9[_0x2f9469]={'$like':'%'+_0xa2f647[_0xb2ef('0x42')][_0xb2ef('0x63')]+'%'};return _0x4421a9;})});}_0x4af3bb=_[_0xb2ef('0x4c')]({},_0x4af3bb,_0xa2f647[_0xb2ef('0x4d')]);return db['FaxInteraction'][_0xb2ef('0x2f')]({'where':_0x4af3bb[_0xb2ef('0x4b')]})[_0xb2ef('0x20')](function(_0x20aa2d){_0x3ca2d2[_0xb2ef('0x2f')]=_0x20aa2d;if(_0xa2f647[_0xb2ef('0x42')][_0xb2ef('0x4e')]){_0x4af3bb[_0xb2ef('0x4f')]=[{'model':db[_0xb2ef('0x6e')],'as':_0xb2ef('0x6f'),'required':![]},{'model':db['User'],'as':_0xb2ef('0x70'),'attributes':['name',_0xb2ef('0x71'),_0xb2ef('0x72')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xb2ef('0x38'),_0xb2ef('0x73')],'where':_0xa2f647[_0xb2ef('0x42')][_0xb2ef('0x74')]?{'id':_0xa2f647[_0xb2ef('0x42')]['tag']}:undefined,'required':_0xa2f647[_0xb2ef('0x42')][_0xb2ef('0x74')]?!![]:![]}];}return db['FaxInteraction'][_0xb2ef('0x50')](_0x4af3bb);})[_0xb2ef('0x20')](function(_0xbe9b5){_0x3ca2d2['rows']=_0xbe9b5;return _0x3ca2d2;});}})['then'](respondWithFilteredResult(_0x4b1c17,_0x4af3bb))[_0xb2ef('0x52')](handleError(_0x4b1c17,null));};exports[_0xb2ef('0x75')]=function(_0x3229dc,_0x3be88c){var _0x3b7db8=_0x3229dc[_0xb2ef('0x5a')]['id'];var _0x517665=_0x3229dc[_0xb2ef('0x59')];var _0x295945=0xc8;var _0x394bc1=null;return db[_0xb2ef('0x76')]['transaction']({'isolationLevel':db[_0xb2ef('0x76')][_0xb2ef('0x77')][_0xb2ef('0x78')]['READ_COMMITTED']},function(_0x1018d4){return db['FaxAccount'][_0xb2ef('0x5f')]({'where':{'id':_0x3b7db8},'transaction':_0x1018d4})[_0xb2ef('0x20')](function(_0x2b70e3){if(_0x2b70e3){return db['FaxApplication'][_0xb2ef('0x33')]({'where':{'FaxAccountId':_0x3b7db8},'transaction':_0x1018d4})['then'](function(){var _0x14a0ee=_[_0xb2ef('0x3d')](_0x517665,function(_0x1e639f){_0x1e639f['FaxAccountId']=_0x3b7db8;return _0x1e639f;});return db['FaxApplication'][_0xb2ef('0x79')](_0x14a0ee,{'transaction':_0x1018d4});});}else{_0x295945=0x194;_0x394bc1=[];}});})[_0xb2ef('0x20')](function(){if(_0x295945!==0x194){return db[_0xb2ef('0x7a')]['findAndCountAll']({'where':{'FaxAccountId':_0x3b7db8},'order':_0xb2ef('0x7b')})[_0xb2ef('0x20')](function(_0x161ffa){_0x394bc1=_0x161ffa;});}})[_0xb2ef('0x52')](function(_0x5b6a21){_0x295945=0x1f4;logger[_0xb2ef('0x24')](_0x5b6a21['stack']);if(_0x5b6a21[_0xb2ef('0x38')]){delete _0x5b6a21[_0xb2ef('0x38')];}_0x394bc1=_0x5b6a21;})[_0xb2ef('0x7c')](function(){if(_0x394bc1===null){_0x3be88c[_0xb2ef('0x28')](_0x295945);}else{if(_0x295945===0x1f4){_0x3be88c[_0xb2ef('0x29')](_0x295945)[_0xb2ef('0x39')](_0x394bc1);}else{_0x3be88c[_0xb2ef('0x29')](_0x295945)['json'](_0x394bc1);}}});};exports[_0xb2ef('0x7d')]=function(_0x5b71e5,_0x2ef086,_0x359990){var _0x2423fe={};var _0x101494={};var _0x5a9090;var _0x3acd5c;return db[_0xb2ef('0x3e')][_0xb2ef('0x5f')]({'where':{'id':_0x5b71e5[_0xb2ef('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2ef086,null))[_0xb2ef('0x20')](function(_0x52d149){if(_0x52d149){_0x5a9090=_0x52d149;_0x101494[_0xb2ef('0x41')]=_[_0xb2ef('0x43')](db[_0xb2ef('0x7a')][_0xb2ef('0x3f')]);_0x101494['query']=_[_0xb2ef('0x43')](_0x5b71e5[_0xb2ef('0x42')]);_0x101494[_0xb2ef('0x44')]=_[_0xb2ef('0x54')](_0x101494[_0xb2ef('0x41')],_0x101494['query']);_0x2423fe[_0xb2ef('0x45')]=_['intersection'](_0x101494[_0xb2ef('0x41')],qs[_0xb2ef('0x46')](_0x5b71e5[_0xb2ef('0x42')][_0xb2ef('0x46')]));_0x2423fe[_0xb2ef('0x45')]=_0x2423fe[_0xb2ef('0x45')][_0xb2ef('0x47')]?_0x2423fe['attributes']:_0x101494[_0xb2ef('0x41')];_0x2423fe[_0xb2ef('0x49')]=qs[_0xb2ef('0x4a')](_0x5b71e5[_0xb2ef('0x42')][_0xb2ef('0x4a')]);_0x2423fe[_0xb2ef('0x4b')]=qs[_0xb2ef('0x44')](_['pick'](_0x5b71e5['query'],_0x101494[_0xb2ef('0x44')]));if(_0x5b71e5[_0xb2ef('0x42')][_0xb2ef('0x63')]){_0x2423fe['where']=_[_0xb2ef('0x4c')](_0x2423fe[_0xb2ef('0x4b')],{'$or':_[_0xb2ef('0x3d')](_0x2423fe[_0xb2ef('0x45')],function(_0x344611){var _0x2c5960={};_0x2c5960[_0x344611]={'$like':'%'+_0x5b71e5[_0xb2ef('0x42')][_0xb2ef('0x63')]+'%'};return _0x2c5960;})});}_0x2423fe=_[_0xb2ef('0x4c')]({},_0x2423fe,_0x5b71e5['options']);return _0x5a9090[_0xb2ef('0x7d')](_0x2423fe);}})[_0xb2ef('0x20')](function(_0x41a701){if(_0x41a701){_0x3acd5c=_0x41a701[_0xb2ef('0x47')];if(!_0x5b71e5['query'][_0xb2ef('0x48')](_0xb2ef('0x60'))){_0x2423fe[_0xb2ef('0x2e')]=qs[_0xb2ef('0x2e')](_0x5b71e5['query'][_0xb2ef('0x2e')]);_0x2423fe[_0xb2ef('0x2c')]=qs['offset'](_0x5b71e5['query'][_0xb2ef('0x2c')]);}return _0x5a9090[_0xb2ef('0x7d')](_0x2423fe);}})[_0xb2ef('0x20')](function(_0x1054ef){if(_0x1054ef){return _0x1054ef?{'count':_0x3acd5c,'rows':_0x1054ef}:null;}})[_0xb2ef('0x20')](respondWithResult(_0x2ef086,null))[_0xb2ef('0x52')](handleError(_0x2ef086,null));};function Extension(_0x5ef1b6,_0x5c4cd3,_0x5d664a,_0x3c26d8){this['context']=_0xb2ef('0x7e');this['exten']=_0x5ef1b6[_0xb2ef('0x7f')];this[_0xb2ef('0x80')]=_0x3c26d8;this['type']=_0xb2ef('0x81');this[_0xb2ef('0x82')]=_0xb2ef('0x83');this[_0xb2ef('0x62')]=_0x5ef1b6['id'];this[_0xb2ef('0x7b')]=_0x5c4cd3;this[_0xb2ef('0x84')]=_0x5d664a;}function createExtensionsReciveFax(_0x167eb6){var _0xc13354=0x1;var _0x2f920c=[];_0x2f920c['push'](new Extension(_0x167eb6,_0xc13354,'',_0xb2ef('0x85')));_0xc13354+=0x1;_0x2f920c[_0xb2ef('0x86')](new Extension(_0x167eb6,_0xc13354,'CDR(type)=inbound-fax',_0xb2ef('0x87')));_0xc13354+=0x1;for(var _0x3b8aee in _0x167eb6){if(_0x167eb6[_0xb2ef('0x48')](_0x3b8aee)&&(_0x3b8aee===_0xb2ef('0x88')||_0x3b8aee===_0xb2ef('0x7f')||_0x3b8aee===_0xb2ef('0x89')||_0x3b8aee===_0xb2ef('0x8a')||_0x3b8aee===_0xb2ef('0x8b')||_0x3b8aee===_0xb2ef('0x8c')||_0x3b8aee===_0xb2ef('0x8d')||_0x3b8aee===_0xb2ef('0x8e')||_0x3b8aee===_0xb2ef('0x8f'))){_0x2f920c['push'](new Extension(_0x167eb6,_0xc13354,_0xb2ef('0x90')+_0x3b8aee+')='+_0x167eb6[_0x3b8aee],_0xb2ef('0x87')));_0xc13354+=0x1;}}_0x2f920c[_0xb2ef('0x86')](new Extension(_0x167eb6,_0xc13354,'6',_0xb2ef('0x91')));_0xc13354+=0x1;_0x2f920c['push'](new Extension(_0x167eb6,_0xc13354,_0xb2ef('0x92'),_0xb2ef('0x93')));_0xc13354=0x0;return _0x2f920c;}exports['addAccountApplications']=function(_0x24dcdd,_0x4f6580,_0x2b3a08){var _0x230c11;return db['sequelize']['transaction'](function(_0x26ad70){return db[_0xb2ef('0x3e')][_0xb2ef('0x57')](_0x24dcdd['body'],{'transaction':_0x26ad70})[_0xb2ef('0x20')](function(_0x21df45){_0x230c11=_0x21df45[_0xb2ef('0x34')]({'plain':!![]});return db['VoiceExtension'][_0xb2ef('0x79')](createExtensionsReciveFax(_0x230c11),{'transaction':_0x26ad70});});})[_0xb2ef('0x20')](function(){return _0x230c11;})[_0xb2ef('0x20')](respondWithResult(_0x4f6580,null))['catch'](handleError(_0x4f6580,null));};exports[_0xb2ef('0x94')]=function(_0x5588f9,_0x1fe57a,_0x25b9f7){var _0x484fb4;return db['sequelize']['transaction'](function(_0x12a4f0){return db[_0xb2ef('0x3e')][_0xb2ef('0x32')](_0x5588f9['body'],{'where':{'id':_0x5588f9[_0xb2ef('0x59')]['id']},'transaction':_0x12a4f0})[_0xb2ef('0x20')](function(_0x49d543){return db[_0xb2ef('0x95')][_0xb2ef('0x33')]({'where':{'FaxAccountId':_0x5588f9[_0xb2ef('0x59')]['id']},'transaction':_0x12a4f0})[_0xb2ef('0x20')](function(_0x1c8e9e){return db[_0xb2ef('0x95')][_0xb2ef('0x79')](createExtensionsReciveFax(_[_0xb2ef('0x6c')](_0x5588f9['body'],[_0xb2ef('0x96'),_0xb2ef('0x97'),_0xb2ef('0x98'),_0xb2ef('0x99'),_0xb2ef('0x9a'),'ListId'])),{'transaction':_0x12a4f0});});});})[_0xb2ef('0x20')](function(){return db['FaxAccount'][_0xb2ef('0x9b')](_0x5588f9[_0xb2ef('0x59')]['id']);})['then'](respondWithResult(_0x1fe57a,null))[_0xb2ef('0x52')](handleError(_0x1fe57a,null));};exports[_0xb2ef('0x9c')]=function(_0xd89f0,_0x57c994,_0x15f6b0){var _0x2433ad={'raw':!![],'where':{}};var _0x24bdab={};var _0x47f624={'count':0x0,'rows':[]};return db[_0xb2ef('0x3e')][_0xb2ef('0x5f')]({'where':{'id':_0xd89f0[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x57c994,null))['then'](function(_0x559784){if(_0x559784){_0x24bdab['model']=_[_0xb2ef('0x43')](db[_0xb2ef('0x9d')][_0xb2ef('0x3f')]);_0x24bdab['query']=_['keys'](_0xd89f0[_0xb2ef('0x42')]);_0x24bdab[_0xb2ef('0x44')]=_[_0xb2ef('0x54')](_0x24bdab[_0xb2ef('0x41')],_0x24bdab[_0xb2ef('0x42')]);_0x2433ad[_0xb2ef('0x45')]=_[_0xb2ef('0x54')](_0x24bdab[_0xb2ef('0x41')],qs[_0xb2ef('0x46')](_0xd89f0['query'][_0xb2ef('0x46')]));_0x2433ad[_0xb2ef('0x45')]=_0x2433ad['attributes'][_0xb2ef('0x47')]?_0x2433ad['attributes']:_0x24bdab[_0xb2ef('0x41')];if(!_0xd89f0['query']['hasOwnProperty'](_0xb2ef('0x60'))){_0x2433ad[_0xb2ef('0x2e')]=qs[_0xb2ef('0x2e')](_0xd89f0[_0xb2ef('0x42')][_0xb2ef('0x2e')]);_0x2433ad[_0xb2ef('0x2c')]=qs['offset'](_0xd89f0[_0xb2ef('0x42')][_0xb2ef('0x2c')]);}_0x2433ad[_0xb2ef('0x49')]=qs[_0xb2ef('0x4a')](_0xd89f0[_0xb2ef('0x42')]['sort']);_0x2433ad[_0xb2ef('0x4b')]=qs['filters'](_[_0xb2ef('0x61')](_0xd89f0[_0xb2ef('0x42')],_0x24bdab[_0xb2ef('0x44')]));_0x2433ad[_0xb2ef('0x4b')][_0xb2ef('0x62')]=_0x559784['id'];if(_0xd89f0[_0xb2ef('0x42')][_0xb2ef('0x63')]){_0x2433ad[_0xb2ef('0x4b')]=_[_0xb2ef('0x4c')](_0x2433ad[_0xb2ef('0x4b')],{'$or':_['map'](_0x2433ad[_0xb2ef('0x45')],function(_0x3ce1e7){var _0x52f7e0={};_0x52f7e0[_0x3ce1e7]={'$like':'%'+_0xd89f0[_0xb2ef('0x42')][_0xb2ef('0x63')]+'%'};return _0x52f7e0;})});}if(_0xd89f0[_0xb2ef('0x42')][_0xb2ef('0x9e')]){var _0x3bbfb0=_0xd89f0['query'][_0xb2ef('0x9e')]['split'](',');var _0x58a5ac={};_0x58a5ac[_0x3bbfb0[0x0]]={'$gte':moment(_0x3bbfb0[0x1])[_0xb2ef('0x9f')](_0xb2ef('0xa0'))};_0x2433ad['where']=_[_0xb2ef('0x4c')](_0x2433ad[_0xb2ef('0x4b')],_0x58a5ac);}_0x2433ad=_['merge']({},_0x2433ad,_0xd89f0[_0xb2ef('0x4d')]);return db[_0xb2ef('0x9d')][_0xb2ef('0x2f')]({'where':_0x2433ad['where']})[_0xb2ef('0x20')](function(_0x257875){_0x47f624[_0xb2ef('0x2f')]=_0x257875;if(_0xd89f0['query'][_0xb2ef('0x4e')]){_0x2433ad[_0xb2ef('0x4f')]=[{'all':!![]}];}return db[_0xb2ef('0x9d')][_0xb2ef('0x50')](_0x2433ad);})[_0xb2ef('0x20')](function(_0x5398bd){_0x47f624[_0xb2ef('0x51')]=_0x5398bd;return _0x47f624;});}})[_0xb2ef('0x20')](respondWithFilteredResult(_0x57c994,_0x2433ad))[_0xb2ef('0x52')](handleError(_0x57c994,null));};exports['send']=function(_0x8cca4d,_0x2de621,_0x427a5b){var _0x57ddf2,_0x5ca471={},_0x8591cf;if(_0x8cca4d[_0xb2ef('0x59')]['to']){_0x8591cf=_0x8cca4d[_0xb2ef('0x59')]['to'][0x0];}return db[_0xb2ef('0x3e')][_0xb2ef('0x55')]({'where':{'id':_0x8cca4d[_0xb2ef('0x5a')]['id']},'include':[{'model':db[_0xb2ef('0xa1')],'as':_0xb2ef('0xa2'),'include':[{'model':db[_0xb2ef('0x6e')],'as':_0xb2ef('0xa3'),'where':{'fax':_0x8591cf},'limit':0x1,'order':[[_0xb2ef('0x99'),_0xb2ef('0xa4')]]}]}]})[_0xb2ef('0x20')](handleEntityNotFound(_0x2de621,null))[_0xb2ef('0x20')](function(_0xf39109){_0x57ddf2=_0xf39109;if(_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')]&&_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')]['length']){for(var _0x521379=0x0;_0x521379<_0x8cca4d['body'][_0xb2ef('0xa5')][_0xb2ef('0x47')];_0x521379+=0x1){_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][_0x521379]={'filename':_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][_0x521379]['name'],'id':_0x8cca4d[_0xb2ef('0x59')]['attachments'][_0x521379]['id'],'path':path[_0xb2ef('0xa6')](config[_0xb2ef('0xa7')],_0xb2ef('0xa8'),_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][_0x521379][_0xb2ef('0xa9')])};}}return respondWithRpcPromise(_0xb2ef('0xaa'),_0xb2ef('0xaa'),{'FaxAccountId':_[_0xb2ef('0xab')](_0x8cca4d[_0xb2ef('0x5a')]['id'])?undefined:_0x8cca4d[_0xb2ef('0x5a')]['id'],'path':_['isNil'](_0x8cca4d['body'][_0xb2ef('0xa5')][0x0][_0xb2ef('0x8')])?undefined:_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][0x0][_0xb2ef('0x8')],'fax':_[_0xb2ef('0xab')](_0x8cca4d[_0xb2ef('0x59')]['to'][0x0])?undefined:_0x8cca4d[_0xb2ef('0x59')]['to'][0x0]},client9002);})['then'](function(){if(_0x57ddf2){if(_[_0xb2ef('0xab')](_0x8cca4d['body'][_0xb2ef('0xac')])){_0x8cca4d[_0xb2ef('0x59')]['from']=util[_0xb2ef('0x9f')](_0xb2ef('0xad'),_0x57ddf2[_0xb2ef('0x38')],_0x57ddf2[_0xb2ef('0xae')]);}if(_0x57ddf2[_0xb2ef('0xa2')]){if(_0x57ddf2[_0xb2ef('0xa2')]['Contacts'][_0xb2ef('0x47')]){return _0x57ddf2[_0xb2ef('0xa2')][_0xb2ef('0xa3')][0x0];}else{return db['CmContact'][_0xb2ef('0x57')](_[_0xb2ef('0x18')](_0x8cca4d['body'],{'firstName':_0x8cca4d['body']['to'][0x0],'phone':_0x8cca4d[_0xb2ef('0x59')]['to'][0x0],'fax':_0x8cca4d[_0xb2ef('0x59')]['to'][0x0],'ListId':_0x57ddf2[_0xb2ef('0xaf')]}));}}else{throw new Error(_0xb2ef('0xb0'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0xb2ef('0x20')](function(_0x58ef6a){if(_0x58ef6a){return db[_0xb2ef('0x6b')][_0xb2ef('0x55')]({'where':{'ContactId':_0x58ef6a['id'],'closed':![],'FaxAccountId':_0x57ddf2['id']}})[_0xb2ef('0x20')](function(_0x4402a6){if(_0x4402a6){return[_0x4402a6,![]];}return db[_0xb2ef('0x6b')][_0xb2ef('0x57')]({'UserId':_0x8cca4d['user']['id'],'ContactId':_0x58ef6a['id'],'FaxAccountId':_0x57ddf2['id'],'fax':_0x8cca4d[_0xb2ef('0x59')]['to'][0x0],'firstMsgDirection':_0xb2ef('0xb1'),'Messages':[_['merge'](_0x8cca4d[_0xb2ef('0x59')],{'read':![],'body':_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][0x0][_0xb2ef('0xb2')],'FaxAccountId':_0x57ddf2['id'],'UserId':_0x8cca4d[_0xb2ef('0xb3')]['id'],'ContactId':_0x58ef6a['id'],'AttachmentId':_0x8cca4d['body'][_0xb2ef('0xa5')][0x0]['id']})]},{'include':[{'model':db[_0xb2ef('0x9d')],'as':_0xb2ef('0xb4')}]})[_0xb2ef('0x20')](function(_0x346153){return[_0x346153,!![]];});});}else{throw new Error(_0xb2ef('0xb5'));}})['spread'](function(_0x393ef3,_0x43ec6f){if(_0x43ec6f){return _0x393ef3;}return db[_0xb2ef('0x9d')]['create']({'direction':'out','read':![],'body':_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][0x0][_0xb2ef('0xb2')],'FaxAccountId':_0x57ddf2['id'],'FaxInteractionId':_0x393ef3['id'],'UserId':_0x8cca4d[_0xb2ef('0xb3')]['id'],'ContactId':_0x393ef3[_0xb2ef('0xb6')],'AttachmentId':_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][0x0]['id']})[_0xb2ef('0x20')](function(_0x33aba6){_0x393ef3[_0xb2ef('0xb7')][_0xb2ef('0xb4')]=[];_0x393ef3[_0xb2ef('0xb7')]['Messages'][_0xb2ef('0x86')](_0x33aba6['dataValues']);return _0x393ef3;});})[_0xb2ef('0x20')](function(_0x38e56a){respondWithRpcPromise(_0xb2ef('0xb8'),_0xb2ef('0xb8'),{'FaxAccountId':_[_0xb2ef('0xab')](_0x8cca4d[_0xb2ef('0x5a')]['id'])?undefined:_0x8cca4d[_0xb2ef('0x5a')]['id'],'path':_[_0xb2ef('0xab')](_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][0x0]['path'])?undefined:_0x8cca4d[_0xb2ef('0x59')]['attachments'][0x0][_0xb2ef('0x8')],'fax':_[_0xb2ef('0xab')](_0x8cca4d[_0xb2ef('0x59')]['to'][0x0])?undefined:_0x8cca4d[_0xb2ef('0x59')]['to'][0x0],'AttachmentId':_0x8cca4d[_0xb2ef('0x59')][_0xb2ef('0xa5')][0x0]['id']},client9002)['then'](function(_0x946647){logger[_0xb2ef('0xb9')](_0xb2ef('0xba'),_0x946647);})[_0xb2ef('0x52')](function(_0x4b44d7){logger[_0xb2ef('0xb9')](_0xb2ef('0xba'),_0x4b44d7);});return _0x38e56a;})[_0xb2ef('0x20')](respondWithResult(_0x2de621,null))[_0xb2ef('0x52')](handleError(_0x2de621,null));};exports[_0xb2ef('0xbb')]=function(_0x409998,_0x49c58c,_0x2928c2){return db[_0xb2ef('0x3e')][_0xb2ef('0x55')]({'where':{'id':_0x409998[_0xb2ef('0x5a')]['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x49c58c,null))[_0xb2ef('0x20')](function(_0x516640){if(_0x516640){return _0x516640[_0xb2ef('0xbb')](_0x409998[_0xb2ef('0x59')][_0xb2ef('0x65')],_[_0xb2ef('0x6c')](_0x409998[_0xb2ef('0x59')],[_0xb2ef('0x65'),'id'])||{})[_0xb2ef('0xbc')](function(_0x453d8b){for(var _0x3dfd5a=0x0;_0x3dfd5a<_0x409998[_0xb2ef('0x59')]['ids'][_0xb2ef('0x47')];_0x3dfd5a+=0x1){socket[_0xb2ef('0xbd')](_0xb2ef('0xbe'),{'UserId':Number(_0x409998[_0xb2ef('0x59')][_0xb2ef('0x65')][_0x3dfd5a]),'FaxAccountId':Number(_0x409998[_0xb2ef('0x5a')]['id'])});}return _0x453d8b;});}})['then'](respondWithResult(_0x49c58c,null))['catch'](handleError(_0x49c58c,null));};exports[_0xb2ef('0xbf')]=function(_0x10915d,_0x507334,_0x98c98e){return db['FaxAccount'][_0xb2ef('0x55')]({'where':{'id':_0x10915d[_0xb2ef('0x5a')]['id']}})['then'](handleEntityNotFound(_0x507334,null))[_0xb2ef('0x20')](function(_0x35ff7b){if(_0x35ff7b){return _0x35ff7b[_0xb2ef('0xbf')](_0x10915d['query'][_0xb2ef('0x65')])[_0xb2ef('0x20')](function(){if(_[_0xb2ef('0xc0')](_0x10915d[_0xb2ef('0x42')][_0xb2ef('0x65')])){for(var _0x41372c=0x0;_0x41372c<_0x10915d[_0xb2ef('0x42')][_0xb2ef('0x65')][_0xb2ef('0x47')];_0x41372c+=0x1){socket[_0xb2ef('0xbd')](_0xb2ef('0xc1'),{'UserId':Number(_0x10915d[_0xb2ef('0x42')]['ids'][_0x41372c]),'FaxAccountId':Number(_0x10915d['params']['id'])});}}else{socket[_0xb2ef('0xbd')]('userFaxAccount:remove',{'UserId':Number(_0x10915d['query'][_0xb2ef('0x65')]),'FaxAccountId':Number(_0x10915d[_0xb2ef('0x5a')]['id'])});}});}})[_0xb2ef('0x20')](respondWithStatusCode(_0x507334,null))[_0xb2ef('0x52')](handleError(_0x507334,null));};exports['getAgents']=function(_0x13da5c,_0x33a6db,_0x14a3c8){var _0x3f0a67={};var _0x1f5dee={};var _0x305846;var _0x2dca3b;return db[_0xb2ef('0x3e')][_0xb2ef('0x5f')]({'where':{'id':_0x13da5c['params']['id']}})[_0xb2ef('0x20')](handleEntityNotFound(_0x33a6db,null))[_0xb2ef('0x20')](function(_0x2c5c75){if(_0x2c5c75){_0x305846=_0x2c5c75;_0x1f5dee[_0xb2ef('0x41')]=_['keys'](db[_0xb2ef('0xc2')][_0xb2ef('0x3f')]);_0x1f5dee[_0xb2ef('0x42')]=_[_0xb2ef('0x43')](_0x13da5c[_0xb2ef('0x42')]);_0x1f5dee['filters']=_[_0xb2ef('0x54')](_0x1f5dee['model'],_0x1f5dee[_0xb2ef('0x42')]);_0x3f0a67[_0xb2ef('0x45')]=_['intersection'](_0x1f5dee[_0xb2ef('0x41')],qs[_0xb2ef('0x46')](_0x13da5c['query']['fields']));_0x3f0a67['attributes']=_0x3f0a67['attributes']['length']?_0x3f0a67['attributes']:_0x1f5dee[_0xb2ef('0x41')];_0x3f0a67[_0xb2ef('0x49')]=qs['sort'](_0x13da5c[_0xb2ef('0x42')][_0xb2ef('0x4a')]);_0x3f0a67['where']=qs[_0xb2ef('0x44')](_[_0xb2ef('0x61')](_0x13da5c[_0xb2ef('0x42')],_0x1f5dee[_0xb2ef('0x44')]));if(_0x13da5c[_0xb2ef('0x42')][_0xb2ef('0x63')]){_0x3f0a67[_0xb2ef('0x4b')]=_[_0xb2ef('0x4c')](_0x3f0a67[_0xb2ef('0x4b')],{'$or':_[_0xb2ef('0x3d')](_0x3f0a67[_0xb2ef('0x45')],function(_0x58ccda){var _0xde9ef1={};_0xde9ef1[_0x58ccda]={'$like':'%'+_0x13da5c[_0xb2ef('0x42')][_0xb2ef('0x63')]+'%'};return _0xde9ef1;})});}_0x3f0a67=_[_0xb2ef('0x4c')]({},_0x3f0a67,_0x13da5c[_0xb2ef('0x4d')]);return _0x305846[_0xb2ef('0xc3')](_0x3f0a67);}})[_0xb2ef('0x20')](function(_0x5eebea){if(_0x5eebea){_0x2dca3b=_0x5eebea[_0xb2ef('0x47')];if(!_0x13da5c[_0xb2ef('0x42')][_0xb2ef('0x48')](_0xb2ef('0x60'))){_0x3f0a67['limit']=qs['limit'](_0x13da5c[_0xb2ef('0x42')]['limit']);_0x3f0a67[_0xb2ef('0x2c')]=qs[_0xb2ef('0x2c')](_0x13da5c[_0xb2ef('0x42')][_0xb2ef('0x2c')]);}return _0x305846[_0xb2ef('0xc3')](_0x3f0a67);}})['then'](function(_0xb5b8b7){if(_0xb5b8b7){return _0xb5b8b7?{'count':_0x2dca3b,'rows':_0xb5b8b7}:null;}})[_0xb2ef('0x20')](respondWithResult(_0x33a6db,null))[_0xb2ef('0x52')](handleError(_0x33a6db,null));};
\ No newline at end of file
index 77a0a1d..7942846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8c4=['update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xd8c4,0xd8));var _0x4d8c=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xd8c4[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require('events');var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4d8c('0x0'),'afterDestroy':_0x4d8c('0x1')};function emitEvent(_0x1139b2){return function(_0x4041cc,_0x26703a,_0x16b3c5){FaxAccountEvents[_0x4d8c('0x2')](_0x1139b2+':'+_0x4041cc['id'],_0x4041cc);FaxAccountEvents[_0x4d8c('0x2')](_0x1139b2,_0x4041cc);_0x16b3c5(null);};}for(var e in events){if(events[_0x4d8c('0x3')](e)){var event=events[e];FaxAccount[_0x4d8c('0x4')](e,emitEvent(event));}}module[_0x4d8c('0x5')]=FaxAccountEvents;
\ No newline at end of file
+var _0xa76a=['update','remove','emit','hasOwnProperty','hook','../../mysqldb','FaxAccount','setMaxListeners'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa76a,0xad));var _0xaa76=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa76a[_0x5c351c];return _0x26f3b3;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0xaa76('0x0'))['db'][_0xaa76('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xaa76('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaa76('0x3'),'afterDestroy':_0xaa76('0x4')};function emitEvent(_0x3c5bab){return function(_0x3778ba,_0x344e9d,_0xe59019){FaxAccountEvents[_0xaa76('0x5')](_0x3c5bab+':'+_0x3778ba['id'],_0x3778ba);FaxAccountEvents[_0xaa76('0x5')](_0x3c5bab,_0x3778ba);_0xe59019(null);};}for(var e in events){if(events[_0xaa76('0x6')](e)){var event=events[e];FaxAccount[_0xaa76('0x7')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index 31c0b9e..f641239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf72f=['api','bluebird','path','rimraf','../../config/environment','./faxAccount.attributes','define','FaxAccount','fax_accounts','lodash','util','../../config/logger'];(function(_0x1147ac,_0x15d8d3){var _0x1c30d1=function(_0x4b948a){while(--_0x4b948a){_0x1147ac['push'](_0x1147ac['shift']());}};_0x1c30d1(++_0x15d8d3);}(_0xf72f,0xed));var _0xff72=function(_0x2a147c,_0x2b8164){_0x2a147c=_0x2a147c-0x0;var _0x3a29c3=_0xf72f[_0x2a147c];return _0x3a29c3;};'use strict';var _=require(_0xff72('0x0'));var util=require(_0xff72('0x1'));var logger=require(_0xff72('0x2'))(_0xff72('0x3'));var moment=require('moment');var BPromise=require(_0xff72('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xff72('0x5'));var rimraf=require(_0xff72('0x6'));var config=require(_0xff72('0x7'));var attributes=require(_0xff72('0x8'));module['exports']=function(_0x1b99b0,_0xf2dfc1){return _0x1b99b0[_0xff72('0x9')](_0xff72('0xa'),attributes,{'tableName':_0xff72('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa6c6=['./faxAccount.attributes','define','fax_accounts','util','moment','path','rimraf','../../config/environment'];(function(_0x3114af,_0x482e75){var _0xf4a23=function(_0x148507){while(--_0x148507){_0x3114af['push'](_0x3114af['shift']());}};_0xf4a23(++_0x482e75);}(_0xa6c6,0x14b));var _0x6a6c=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xa6c6[_0x42cae2];return _0x5f256f;};'use strict';var _=require('lodash');var util=require(_0x6a6c('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x6a6c('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6a6c('0x2'));var rimraf=require(_0x6a6c('0x3'));var config=require(_0x6a6c('0x4'));var attributes=require(_0x6a6c('0x5'));module['exports']=function(_0x2997b5,_0x55bb60){return _0x2997b5[_0x6a6c('0x6')]('FaxAccount',attributes,{'tableName':_0x6a6c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76db939..6019d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7818=['redis','defaults','localhost','./faxAccount.socket','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','GetFaxAccount','FaxAccount','options','raw','attributes','limit','include','map','model','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','no\x20available\x20attributes','keys','createdAt','updatedAt','difference','CompanyId','ListId','isNil','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','CmList','Contacts','DESC','FaxApplication','Applications','get','account','applications','list','List','orderBy','priority','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','close','unmanaged','*,*,*,*','created','FaxMessage','ContactId','AttachmentId','interaction','User','name','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x1cad4c,_0x3461a2){var _0x436b7d=function(_0x27c283){while(--_0x27c283){_0x1cad4c['push'](_0x1cad4c['shift']());}};_0x436b7d(++_0x3461a2);}(_0x7818,0x103));var _0x8781=function(_0x319aee,_0x1d6917){_0x319aee=_0x319aee-0x0;var _0xcd9d3a=_0x7818[_0x319aee];return _0xcd9d3a;};'use strict';var _=require('lodash');var util=require(_0x8781('0x0'));var moment=require(_0x8781('0x1'));var BPromise=require(_0x8781('0x2'));var rs=require(_0x8781('0x3'));var fs=require('fs');var Redis=require(_0x8781('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8781('0x5'));var logger=require(_0x8781('0x6'))(_0x8781('0x7'));var config=require(_0x8781('0x8'));var jayson=require(_0x8781('0x9'));var client=jayson['client'][_0x8781('0xa')]({'port':0x232c});config[_0x8781('0xb')]=_[_0x8781('0xc')](config[_0x8781('0xb')],{'host':_0x8781('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8781('0xb')]));require(_0x8781('0xe'))['register'](socket);function respondWithRpcPromise(_0x4ba256,_0x28b9cc,_0x84abbe){return new BPromise(function(_0x2827e6,_0x8f6647){return client['request'](_0x4ba256,_0x84abbe)[_0x8781('0xf')](function(_0x265e88){logger['info'](_0x8781('0x10'),_0x28b9cc,_0x8781('0x11'));logger[_0x8781('0x12')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x28b9cc,'request\x20sent',JSON[_0x8781('0x13')](_0x265e88));if(_0x265e88[_0x8781('0x14')]){if(_0x265e88[_0x8781('0x14')][_0x8781('0x15')]===0x1f4){logger[_0x8781('0x14')](_0x8781('0x10'),_0x28b9cc,_0x265e88[_0x8781('0x14')][_0x8781('0x16')]);return _0x8f6647(_0x265e88[_0x8781('0x14')]['message']);}logger[_0x8781('0x14')](_0x8781('0x10'),_0x28b9cc,_0x265e88[_0x8781('0x14')]['message']);return _0x2827e6(_0x265e88[_0x8781('0x14')][_0x8781('0x16')]);}else{logger[_0x8781('0x17')](_0x8781('0x10'),_0x28b9cc,_0x8781('0x11'));_0x2827e6(_0x265e88['result'][_0x8781('0x16')]);}})[_0x8781('0x18')](function(_0x4f7e0f){logger[_0x8781('0x14')](_0x8781('0x10'),_0x28b9cc,_0x4f7e0f);_0x8f6647(_0x4f7e0f);});});}exports[_0x8781('0x19')]=function(_0x28fd57){var _0x18825d=this;return new Promise(function(_0x1bcbb9,_0x58bd0a){return db[_0x8781('0x1a')]['findAll']({'raw':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')][_0x8781('0x1c')]===undefined?!![]:![]:!![],'where':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')]['where']||null:null,'attributes':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')][_0x8781('0x1d')]||null:null,'limit':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')][_0x8781('0x1e')]||null:null,'include':_0x28fd57[_0x8781('0x1b')]?_0x28fd57['options'][_0x8781('0x1f')]?_[_0x8781('0x20')](_0x28fd57[_0x8781('0x1b')][_0x8781('0x1f')],function(_0x2f5698){return{'model':db[_0x2f5698[_0x8781('0x21')]],'as':_0x2f5698['as'],'attributes':_0x2f5698[_0x8781('0x1d')],'include':_0x2f5698[_0x8781('0x1f')]?_['map'](_0x2f5698[_0x8781('0x1f')],function(_0x323c07){return{'model':db[_0x323c07['model']],'as':_0x323c07['as'],'attributes':_0x323c07[_0x8781('0x1d')],'include':_0x323c07[_0x8781('0x1f')]?_[_0x8781('0x20')](_0x323c07['include'],function(_0x281eb0){return{'model':db[_0x281eb0['model']],'as':_0x281eb0['as'],'attributes':_0x281eb0[_0x8781('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8781('0xf')](function(_0xc3896a){logger[_0x8781('0x17')](_0x8781('0x19'),_0x28fd57);logger[_0x8781('0x12')]('GetFaxAccount',_0x28fd57,JSON[_0x8781('0x13')](_0xc3896a));_0x1bcbb9(_0xc3896a);})[_0x8781('0x18')](function(_0x6c48e9){logger['error'](_0x8781('0x19'),_0x6c48e9[_0x8781('0x16')],_0x28fd57);_0x58bd0a(_0x18825d[_0x8781('0x14')](0x1f4,_0x6c48e9[_0x8781('0x16')]));});});};exports[_0x8781('0x22')]=function(_0x1ed966,_0x4a7676,_0x2ec1ed){var _0x315312=this;return new Promise(function(_0x365be4,_0xb4d37c){var _0x4b26e3={'body':_0x1ed966[_0x8781('0x23')],'channel':_0x8781('0x24')};var _0x50d617=[];var _0x49acc7=[];var _0x3e093a={};return db[_0x8781('0x25')][_0x8781('0x26')]()['then'](function(_0x3a44ae){if(!_0x3a44ae){throw new db[(_0x8781('0x27'))]['ValidationError'](_0x8781('0x28'));}_0x50d617=_['difference'](_[_0x8781('0x29')](_0x3a44ae),[_0x8781('0x2a'),_0x8781('0x2b')]);_0x49acc7=_[_0x8781('0x2c')](_[_0x8781('0x29')](_0x3a44ae),[_0x8781('0x2a'),_0x8781('0x2b'),_0x8781('0x2d'),_0x8781('0x2e')]);if(_0x1ed966[_0x8781('0x23')]['id']){delete _0x1ed966[_0x8781('0x23')]['id'];}if(_[_0x8781('0x2f')](_0x1ed966['body'][_0x8781('0x30')])){throw new db['Sequelize'][(_0x8781('0x31'))](_0x8781('0x32'));}if(_[_0x8781('0x2f')](_0x1ed966[_0x8781('0x23')][_0x8781('0x23')])||_0x1ed966[_0x8781('0x23')][_0x8781('0x23')]===''){throw new db[(_0x8781('0x27'))][(_0x8781('0x31'))](_0x8781('0x33'));}if(_[_0x8781('0x2f')](_0x1ed966[_0x8781('0x23')]['mapKey'])){throw new db[(_0x8781('0x27'))][(_0x8781('0x31'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49acc7);}if(!_['includes'](_0x49acc7,_0x1ed966['body'][_0x8781('0x34')])){throw new db['Sequelize'][(_0x8781('0x31'))](_0x8781('0x35')+_0x49acc7);}_0x3e093a[_0x1ed966[_0x8781('0x23')][_0x8781('0x34')]]=_0x1ed966[_0x8781('0x23')]['from'];})['then'](function(){return db[_0x8781('0x1a')][_0x8781('0x36')]({'where':{'id':_0x1ed966['account']['id']},'include':[{'model':db[_0x8781('0x37')],'as':'List','include':[{'model':db['CmContact'],'as':_0x8781('0x38'),'where':_0x3e093a,'limit':0x1,'order':[[_0x8781('0x2b'),_0x8781('0x39')]]}]},{'model':db[_0x8781('0x3a')],'as':_0x8781('0x3b')}]});})['then'](function(_0x17e89c){if(_0x17e89c&&_0x17e89c['List']){var _0x4d9c1d=_0x17e89c[_0x8781('0x3c')]({'plain':!![]});_0x4b26e3[_0x8781('0x3d')]=_0x4d9c1d;_0x4b26e3[_0x8781('0x3e')]=_0x4d9c1d[_0x8781('0x3b')];_0x4b26e3[_0x8781('0x3f')]=_0x4d9c1d[_0x8781('0x40')];_0x4b26e3[_0x8781('0x3e')]=_[_0x8781('0x41')](_0x4b26e3[_0x8781('0x3e')],[_0x8781('0x42')],['asc']);if(_0x4b26e3[_0x8781('0x3d')][_0x8781('0x3b')]){delete _0x4b26e3[_0x8781('0x3d')][_0x8781('0x3b')];}if(_0x4b26e3['account'][_0x8781('0x40')]&&_0x4b26e3[_0x8781('0x3d')][_0x8781('0x40')][_0x8781('0x38')][_0x8781('0x43')]){return _0x4b26e3['account']['List'][_0x8781('0x38')][0x0];}var _0x49e818=_['defaults'](_0x1ed966[_0x8781('0x23')],{'firstName':_0x1ed966[_0x8781('0x23')][_0x8781('0x30')],'ListId':_0x4d9c1d[_0x8781('0x2e')]});_0x49e818[_0x1ed966[_0x8781('0x23')][_0x8781('0x34')]]=_0x1ed966[_0x8781('0x23')][_0x8781('0x30')];return db['CmContact'][_0x8781('0x44')](_0x49e818,{'fields':_0x50d617,'raw':!![]});}})[_0x8781('0xf')](function(_0x353392){_0x4b26e3[_0x8781('0x45')]=_0x353392;if(_0x353392){var _0x6632c0={'ContactId':_0x353392['id'],'FaxAccountId':_0x1ed966['account']['id'],'fax':_0x353392['fax']};return db[_0x8781('0x46')][_0x8781('0x36')]({'where':{'ContactId':_0x353392['id'],'closed':![],'FaxAccountId':_0x1ed966['account']['id']}})[_0x8781('0xf')](function(_0x2cd4d7){if(_0x2cd4d7){return[_0x2cd4d7,![]];}return db[_0x8781('0x46')]['create'](_0x6632c0)[_0x8781('0xf')](function(_0x18465f){return[_0x18465f,!![]];});});}else{throw new Error(_0x8781('0x47'));}})[_0x8781('0x48')](function(_0x1aaacd,_0x239c34){var _0x42591a=_0x1aaacd[_0x8781('0x3c')]({'plain':!![]});if(_0x239c34){if(_0x4b26e3[_0x8781('0x3d')][_0x8781('0x49')]){_0x4b26e3[_0x8781('0x3e')][_0x8781('0x4a')]({'id':0x0,'priority':_0x4b26e3['applications'][_0x8781('0x43')]+0x1,'app':_0x8781('0x4b'),'appdata':_0x8781('0x4c'),'interval':_0x8781('0x4d')});}_0x42591a[_0x8781('0x4e')]=!![];}else{_0x42591a[_0x8781('0x4e')]=![];}_0x4b26e3['interaction']=_0x42591a;return db[_0x8781('0x4f')]['create']({'body':_0x1ed966[_0x8781('0x23')]['body'],'FaxAccountId':_0x1ed966[_0x8781('0x3d')]['id'],'FaxInteractionId':_0x1aaacd['id'],'direction':'in','ContactId':_0x1aaacd[_0x8781('0x50')],'AttachmentId':_0x1ed966[_0x8781('0x23')][_0x8781('0x51')]});})[_0x8781('0xf')](function(_0x538a24){_0x4b26e3[_0x8781('0x16')]=_0x538a24;if(_0x4b26e3[_0x8781('0x52')]['UserId']){return db[_0x8781('0x53')][_0x8781('0x36')]({'attributes':['id',_0x8781('0x54')],'where':{'id':_0x4b26e3['interaction'][_0x8781('0x55')]}})[_0x8781('0xf')](function(_0x1e9e9e){if(_0x1e9e9e){_0x4b26e3[_0x8781('0x3e')][_0x8781('0x56')]({'id':0x0,'priority':0x0,'app':_0x8781('0x57'),'appdata':_0x1e9e9e[_0x8781('0x54')]+','+(_0x4b26e3[_0x8781('0x3d')][_0x8781('0x58')]||0xa),'interval':_0x8781('0x4d')});}return respondWithRpcPromise('Start',_0x8781('0x59'),_0x4b26e3);});}return respondWithRpcPromise('Start',_0x8781('0x59'),_0x4b26e3);})[_0x8781('0xf')](function(_0x5cc0fd){_0x365be4(_0x5cc0fd);})[_0x8781('0x18')](function(_0x4f64ec){_0xb4d37c(_0x315312[_0x8781('0x14')](0x1f4,_0x4f64ec[_0x8781('0x16')]));});});};
\ No newline at end of file
+var _0xe832=['Contacts','DESC','FaxApplication','Applications','applications','list','orderBy','priority','asc','length','create','FaxInteraction','Contact\x20not\x20found','spread','get','autoclose','push','close','unmanaged','*,*,*,*','created','interaction','AttachmentId','UserId','User','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','findAll','options','raw','where','attributes','limit','include','map','model','GetFaxAccount','NotifyFaxAccount','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','body','from\x20is\x20mandatory','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','FaxAccount','find','account','List'];(function(_0xd6e79,_0x2df92f){var _0x4709fe=function(_0x10fd0f){while(--_0x10fd0f){_0xd6e79['push'](_0xd6e79['shift']());}};_0x4709fe(++_0x2df92f);}(_0xe832,0xce));var _0x2e83=function(_0x4795bd,_0x44fce0){_0x4795bd=_0x4795bd-0x0;var _0x49c80e=_0xe832[_0x4795bd];return _0x49c80e;};'use strict';var _=require('lodash');var util=require(_0x2e83('0x0'));var moment=require(_0x2e83('0x1'));var BPromise=require(_0x2e83('0x2'));var rs=require(_0x2e83('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2e83('0x4'))['db'];var utils=require(_0x2e83('0x5'));var logger=require('../../config/logger')(_0x2e83('0x6'));var config=require('../../config/environment');var jayson=require(_0x2e83('0x7'));var client=jayson[_0x2e83('0x8')][_0x2e83('0x9')]({'port':0x232c});config[_0x2e83('0xa')]=_[_0x2e83('0xb')](config[_0x2e83('0xa')],{'host':_0x2e83('0xc'),'port':0x18eb});var socket=require(_0x2e83('0xd'))(new Redis(config[_0x2e83('0xa')]));require('./faxAccount.socket')[_0x2e83('0xe')](socket);function respondWithRpcPromise(_0x1bcf34,_0x29a081,_0x49f44d){return new BPromise(function(_0x54f0a6,_0x407ee7){return client[_0x2e83('0xf')](_0x1bcf34,_0x49f44d)[_0x2e83('0x10')](function(_0x139f61){logger[_0x2e83('0x11')]('FaxAccount,\x20%s,\x20%s',_0x29a081,_0x2e83('0x12'));logger['debug'](_0x2e83('0x13'),_0x29a081,_0x2e83('0x12'),JSON[_0x2e83('0x14')](_0x139f61));if(_0x139f61[_0x2e83('0x15')]){if(_0x139f61[_0x2e83('0x15')][_0x2e83('0x16')]===0x1f4){logger[_0x2e83('0x15')](_0x2e83('0x17'),_0x29a081,_0x139f61[_0x2e83('0x15')]['message']);return _0x407ee7(_0x139f61[_0x2e83('0x15')]['message']);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x29a081,_0x139f61['error'][_0x2e83('0x18')]);return _0x54f0a6(_0x139f61[_0x2e83('0x15')]['message']);}else{logger[_0x2e83('0x11')]('FaxAccount,\x20%s,\x20%s',_0x29a081,'request\x20sent');_0x54f0a6(_0x139f61[_0x2e83('0x19')][_0x2e83('0x18')]);}})[_0x2e83('0x1a')](function(_0x5e964c){logger[_0x2e83('0x15')](_0x2e83('0x17'),_0x29a081,_0x5e964c);_0x407ee7(_0x5e964c);});});}exports['GetFaxAccount']=function(_0x187d46){var _0x50983f=this;return new Promise(function(_0x537ee2,_0x27a814){return db['FaxAccount'][_0x2e83('0x1b')]({'raw':_0x187d46[_0x2e83('0x1c')]?_0x187d46[_0x2e83('0x1c')][_0x2e83('0x1d')]===undefined?!![]:![]:!![],'where':_0x187d46['options']?_0x187d46[_0x2e83('0x1c')][_0x2e83('0x1e')]||null:null,'attributes':_0x187d46[_0x2e83('0x1c')]?_0x187d46['options'][_0x2e83('0x1f')]||null:null,'limit':_0x187d46[_0x2e83('0x1c')]?_0x187d46['options'][_0x2e83('0x20')]||null:null,'include':_0x187d46[_0x2e83('0x1c')]?_0x187d46[_0x2e83('0x1c')][_0x2e83('0x21')]?_[_0x2e83('0x22')](_0x187d46[_0x2e83('0x1c')][_0x2e83('0x21')],function(_0x2c450e){return{'model':db[_0x2c450e[_0x2e83('0x23')]],'as':_0x2c450e['as'],'attributes':_0x2c450e[_0x2e83('0x1f')],'include':_0x2c450e['include']?_[_0x2e83('0x22')](_0x2c450e[_0x2e83('0x21')],function(_0x5975fb){return{'model':db[_0x5975fb[_0x2e83('0x23')]],'as':_0x5975fb['as'],'attributes':_0x5975fb[_0x2e83('0x1f')],'include':_0x5975fb[_0x2e83('0x21')]?_[_0x2e83('0x22')](_0x5975fb[_0x2e83('0x21')],function(_0x6ac7a9){return{'model':db[_0x6ac7a9[_0x2e83('0x23')]],'as':_0x6ac7a9['as'],'attributes':_0x6ac7a9[_0x2e83('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2e83('0x10')](function(_0x507700){logger[_0x2e83('0x11')](_0x2e83('0x24'),_0x187d46);logger['debug'](_0x2e83('0x24'),_0x187d46,JSON['stringify'](_0x507700));_0x537ee2(_0x507700);})[_0x2e83('0x1a')](function(_0x592efd){logger['error'](_0x2e83('0x24'),_0x592efd[_0x2e83('0x18')],_0x187d46);_0x27a814(_0x50983f['error'](0x1f4,_0x592efd[_0x2e83('0x18')]));});});};exports[_0x2e83('0x25')]=function(_0x271569,_0x377143,_0x10eb50){var _0x102d29=this;return new Promise(function(_0x178af2,_0x233956){var _0x18e870={'body':_0x271569['body'],'channel':_0x2e83('0x26')};var _0x857c90=[];var _0x59801a=[];var _0x3e5e6b={};return db[_0x2e83('0x27')][_0x2e83('0x28')]()[_0x2e83('0x10')](function(_0x2eb0e2){if(!_0x2eb0e2){throw new db[(_0x2e83('0x29'))][(_0x2e83('0x2a'))](_0x2e83('0x2b'));}_0x857c90=_[_0x2e83('0x2c')](_[_0x2e83('0x2d')](_0x2eb0e2),[_0x2e83('0x2e'),_0x2e83('0x2f')]);_0x59801a=_['difference'](_['keys'](_0x2eb0e2),[_0x2e83('0x2e'),'updatedAt',_0x2e83('0x30'),'ListId']);if(_0x271569[_0x2e83('0x31')]['id']){delete _0x271569[_0x2e83('0x31')]['id'];}if(_['isNil'](_0x271569[_0x2e83('0x31')]['from'])){throw new db[(_0x2e83('0x29'))][(_0x2e83('0x2a'))](_0x2e83('0x32'));}if(_['isNil'](_0x271569[_0x2e83('0x31')][_0x2e83('0x31')])||_0x271569[_0x2e83('0x31')][_0x2e83('0x31')]===''){throw new db['Sequelize'][(_0x2e83('0x2a'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x2e83('0x33')](_0x271569[_0x2e83('0x31')]['mapKey'])){throw new db['Sequelize'][(_0x2e83('0x2a'))](_0x2e83('0x34')+_0x59801a);}if(!_[_0x2e83('0x35')](_0x59801a,_0x271569['body'][_0x2e83('0x36')])){throw new db['Sequelize'][(_0x2e83('0x2a'))](_0x2e83('0x37')+_0x59801a);}_0x3e5e6b[_0x271569['body']['mapKey']]=_0x271569['body'][_0x2e83('0x38')];})[_0x2e83('0x10')](function(){return db[_0x2e83('0x39')][_0x2e83('0x3a')]({'where':{'id':_0x271569[_0x2e83('0x3b')]['id']},'include':[{'model':db['CmList'],'as':_0x2e83('0x3c'),'include':[{'model':db[_0x2e83('0x27')],'as':_0x2e83('0x3d'),'where':_0x3e5e6b,'limit':0x1,'order':[[_0x2e83('0x2f'),_0x2e83('0x3e')]]}]},{'model':db[_0x2e83('0x3f')],'as':_0x2e83('0x40')}]});})[_0x2e83('0x10')](function(_0x29b4da){if(_0x29b4da&&_0x29b4da[_0x2e83('0x3c')]){var _0x6dca71=_0x29b4da['get']({'plain':!![]});_0x18e870[_0x2e83('0x3b')]=_0x6dca71;_0x18e870[_0x2e83('0x41')]=_0x6dca71['Applications'];_0x18e870[_0x2e83('0x42')]=_0x6dca71[_0x2e83('0x3c')];_0x18e870[_0x2e83('0x41')]=_[_0x2e83('0x43')](_0x18e870[_0x2e83('0x41')],[_0x2e83('0x44')],[_0x2e83('0x45')]);if(_0x18e870[_0x2e83('0x3b')]['Applications']){delete _0x18e870[_0x2e83('0x3b')][_0x2e83('0x40')];}if(_0x18e870[_0x2e83('0x3b')][_0x2e83('0x3c')]&&_0x18e870[_0x2e83('0x3b')][_0x2e83('0x3c')]['Contacts'][_0x2e83('0x46')]){return _0x18e870[_0x2e83('0x3b')][_0x2e83('0x3c')][_0x2e83('0x3d')][0x0];}var _0x5587ec=_[_0x2e83('0xb')](_0x271569[_0x2e83('0x31')],{'firstName':_0x271569[_0x2e83('0x31')][_0x2e83('0x38')],'ListId':_0x6dca71['ListId']});_0x5587ec[_0x271569['body']['mapKey']]=_0x271569[_0x2e83('0x31')][_0x2e83('0x38')];return db[_0x2e83('0x27')][_0x2e83('0x47')](_0x5587ec,{'fields':_0x857c90,'raw':!![]});}})[_0x2e83('0x10')](function(_0x15a600){_0x18e870['contact']=_0x15a600;if(_0x15a600){var _0x1fabd1={'ContactId':_0x15a600['id'],'FaxAccountId':_0x271569[_0x2e83('0x3b')]['id'],'fax':_0x15a600['fax']};return db[_0x2e83('0x48')][_0x2e83('0x3a')]({'where':{'ContactId':_0x15a600['id'],'closed':![],'FaxAccountId':_0x271569[_0x2e83('0x3b')]['id']}})[_0x2e83('0x10')](function(_0x343136){if(_0x343136){return[_0x343136,![]];}return db['FaxInteraction'][_0x2e83('0x47')](_0x1fabd1)['then'](function(_0x1df8cd){return[_0x1df8cd,!![]];});});}else{throw new Error(_0x2e83('0x49'));}})[_0x2e83('0x4a')](function(_0x49cf5d,_0x4aacbf){var _0x48ff5e=_0x49cf5d[_0x2e83('0x4b')]({'plain':!![]});if(_0x4aacbf){if(_0x18e870[_0x2e83('0x3b')][_0x2e83('0x4c')]){_0x18e870[_0x2e83('0x41')][_0x2e83('0x4d')]({'id':0x0,'priority':_0x18e870[_0x2e83('0x41')]['length']+0x1,'app':_0x2e83('0x4e'),'appdata':_0x2e83('0x4f'),'interval':_0x2e83('0x50')});}_0x48ff5e[_0x2e83('0x51')]=!![];}else{_0x48ff5e['created']=![];}_0x18e870[_0x2e83('0x52')]=_0x48ff5e;return db['FaxMessage'][_0x2e83('0x47')]({'body':_0x271569[_0x2e83('0x31')][_0x2e83('0x31')],'FaxAccountId':_0x271569[_0x2e83('0x3b')]['id'],'FaxInteractionId':_0x49cf5d['id'],'direction':'in','ContactId':_0x49cf5d['ContactId'],'AttachmentId':_0x271569[_0x2e83('0x31')][_0x2e83('0x53')]});})[_0x2e83('0x10')](function(_0x3aa6db){_0x18e870[_0x2e83('0x18')]=_0x3aa6db;if(_0x18e870[_0x2e83('0x52')][_0x2e83('0x54')]){return db[_0x2e83('0x55')][_0x2e83('0x3a')]({'attributes':['id','name'],'where':{'id':_0x18e870[_0x2e83('0x52')][_0x2e83('0x54')]}})[_0x2e83('0x10')](function(_0x4da2dc){if(_0x4da2dc){_0x18e870[_0x2e83('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4da2dc['name']+','+(_0x18e870[_0x2e83('0x3b')][_0x2e83('0x56')]||0xa),'interval':_0x2e83('0x50')});}return respondWithRpcPromise(_0x2e83('0x57'),_0x2e83('0x58'),_0x18e870);});}return respondWithRpcPromise(_0x2e83('0x57'),'startRouting',_0x18e870);})[_0x2e83('0x10')](function(_0xafc7e6){_0x178af2(_0xafc7e6);})[_0x2e83('0x1a')](function(_0x43d2a8){_0x233956(_0x102d29[_0x2e83('0x15')](0x1f4,_0x43d2a8[_0x2e83('0x18')]));});});};
\ No newline at end of file
index 525c09e..ec06711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0622=['length','faxAccount:','./faxAccount.events','save','remove','update','emit','register'];(function(_0x582168,_0x4f33d4){var _0x461464=function(_0x3c0d18){while(--_0x3c0d18){_0x582168['push'](_0x582168['shift']());}};_0x461464(++_0x4f33d4);}(_0x0622,0x15a));var _0x2062=function(_0x493552,_0x2cd527){_0x493552=_0x493552-0x0;var _0x243ea8=_0x0622[_0x493552];return _0x243ea8;};'use strict';var FaxAccountEvents=require(_0x2062('0x0'));var events=[_0x2062('0x1'),_0x2062('0x2'),_0x2062('0x3')];function createListener(_0x357901,_0x557b78){return function(_0x481b60){_0x557b78[_0x2062('0x4')](_0x357901,_0x481b60);};}function removeListener(_0x43128e,_0x56791e){return function(){FaxAccountEvents['removeListener'](_0x43128e,_0x56791e);};}exports[_0x2062('0x5')]=function(_0x2036d8){for(var _0x18eba6=0x0,_0x3df12f=events[_0x2062('0x6')];_0x18eba6<_0x3df12f;_0x18eba6++){var _0x1177fe=events[_0x18eba6];var _0x333347=createListener(_0x2062('0x7')+_0x1177fe,_0x2036d8);FaxAccountEvents['on'](_0x1177fe,_0x333347);}};
\ No newline at end of file
+var _0x315d=['remove','update','emit','register','length','./faxAccount.events'];(function(_0x1a1117,_0x879478){var _0x58edab=function(_0x255c03){while(--_0x255c03){_0x1a1117['push'](_0x1a1117['shift']());}};_0x58edab(++_0x879478);}(_0x315d,0xe9));var _0xd315=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x315d[_0x3dd15e];return _0x231fd0;};'use strict';var FaxAccountEvents=require(_0xd315('0x0'));var events=['save',_0xd315('0x1'),_0xd315('0x2')];function createListener(_0x433dd9,_0x1c1307){return function(_0x5af3e5){_0x1c1307[_0xd315('0x3')](_0x433dd9,_0x5af3e5);};}function removeListener(_0x1429db,_0x3bd686){return function(){FaxAccountEvents['removeListener'](_0x1429db,_0x3bd686);};}exports[_0xd315('0x4')]=function(_0x4d2085){for(var _0x4b45fb=0x0,_0x1c98be=events[_0xd315('0x5')];_0x4b45fb<_0x1c98be;_0x4b45fb++){var _0x230b32=events[_0x4b45fb];var _0x394531=createListener('faxAccount:'+_0x230b32,_0x4d2085);FaxAccountEvents['on'](_0x230b32,_0x394531);}};
\ No newline at end of file
index 6a7f885..f8a24a3 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(_0x149016,_0x374450){var _0x326a70=function(_0x5ed00a){while(--_0x5ed00a){_0x149016['push'](_0x149016['shift']());}};_0x326a70(++_0x374450);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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(_0x1ebeaf,_0x2b7387){var _0x388001=function(_0x336f3f){while(--_0x336f3f){_0x1ebeaf['push'](_0x1ebeaf['shift']());}};_0x388001(++_0x2b7387);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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 baa6106..0656bcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef3a=['noop','TEXT','*,*,*,*','exports','INTEGER','STRING'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xef3a,0xe1));var _0xaef3=function(_0x4c8a8f,_0x997ef){_0x4c8a8f=_0x4c8a8f-0x0;var _0x404500=_0xef3a[_0x4c8a8f];return _0x404500;};'use strict';var Sequelize=require('sequelize');module[_0xaef3('0x0')]={'priority':{'type':Sequelize[_0xaef3('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xaef3('0x2')],'allowNull':![],'defaultValue':_0xaef3('0x3')},'appdata':{'type':Sequelize[_0xaef3('0x4')]()},'description':{'type':Sequelize[_0xaef3('0x2')]},'interval':{'type':Sequelize[_0xaef3('0x2')],'defaultValue':_0xaef3('0x5')}};
\ No newline at end of file
+var _0x5814=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x5f4025,_0x45e202){var _0x546658=function(_0xc3baed){while(--_0xc3baed){_0x5f4025['push'](_0x5f4025['shift']());}};_0x546658(++_0x45e202);}(_0x5814,0x110));var _0x4581=function(_0x2ef8e9,_0x42bf2c){_0x2ef8e9=_0x2ef8e9-0x0;var _0x28e94d=_0x5814[_0x2ef8e9];return _0x28e94d;};'use strict';var Sequelize=require(_0x4581('0x0'));module[_0x4581('0x1')]={'priority':{'type':Sequelize[_0x4581('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4581('0x3')],'allowNull':![],'defaultValue':_0x4581('0x4')},'appdata':{'type':Sequelize[_0x4581('0x5')]()},'description':{'type':Sequelize[_0x4581('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x4581('0x6')}};
\ No newline at end of file
index 012869d..e430331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cf0=['status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','FaxApplication','includeAll','include','findAll','catch','show','create','body','find','params','rimraf','zip-dir','fast-json-patch','request-promise','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','end'];(function(_0x1893ea,_0x425667){var _0x83c724=function(_0x19a218){while(--_0x19a218){_0x1893ea['push'](_0x1893ea['shift']());}};_0x83c724(++_0x425667);}(_0x7cf0,0x150));var _0x07cf=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x7cf0[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x07cf('0x0'));var zipdir=require(_0x07cf('0x1'));var jsonpatch=require(_0x07cf('0x2'));var rp=require(_0x07cf('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x07cf('0x4'));var util=require('util');var path=require('path');var sox=require(_0x07cf('0x5'));var csv=require(_0x07cf('0x6'));var ejs=require(_0x07cf('0x7'));var fs=require('fs');var fs_extra=require(_0x07cf('0x8'));var _=require(_0x07cf('0x9'));var squel=require(_0x07cf('0xa'));var crypto=require('crypto');var jsforce=require(_0x07cf('0xb'));var deskjs=require(_0x07cf('0xc'));var toCsv=require(_0x07cf('0x6'));var querystring=require(_0x07cf('0xd'));var Papa=require(_0x07cf('0xe'));var Redis=require(_0x07cf('0xf'));var authService=require(_0x07cf('0x10'));var qs=require(_0x07cf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x07cf('0x12'));var logger=require(_0x07cf('0x13'))('api');var utils=require(_0x07cf('0x14'));var config=require(_0x07cf('0x15'));var licenseUtil=require(_0x07cf('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc9f40e,_0xb7641e){_0xb7641e=_0xb7641e||0xcc;return function(_0x102cba){if(_0x102cba){return _0xc9f40e['sendStatus'](_0xb7641e);}return _0xc9f40e['status'](_0xb7641e)[_0x07cf('0x17')]();};}function respondWithResult(_0x544b53,_0x2962b7){_0x2962b7=_0x2962b7||0xc8;return function(_0x1f1e09){if(_0x1f1e09){return _0x544b53[_0x07cf('0x18')](_0x2962b7)[_0x07cf('0x19')](_0x1f1e09);}};}function respondWithFilteredResult(_0x5bc98a,_0x1cf2c3){return function(_0x445909){if(_0x445909){var _0x5eea7b=typeof _0x1cf2c3['offset']===_0x07cf('0x1a')&&typeof _0x1cf2c3[_0x07cf('0x1b')]===_0x07cf('0x1a');var _0x403042=_0x445909[_0x07cf('0x1c')];var _0x268658=_0x5eea7b?0x0:_0x1cf2c3[_0x07cf('0x1d')];var _0x2f1cec=_0x5eea7b?_0x445909[_0x07cf('0x1c')]:_0x1cf2c3[_0x07cf('0x1d')]+_0x1cf2c3[_0x07cf('0x1b')];var _0x19e238;if(_0x2f1cec>=_0x403042){_0x2f1cec=_0x403042;_0x19e238=0xc8;}else{_0x19e238=0xce;}_0x5bc98a[_0x07cf('0x18')](_0x19e238);return _0x5bc98a[_0x07cf('0x1e')](_0x07cf('0x1f'),_0x268658+'-'+_0x2f1cec+'/'+_0x403042)[_0x07cf('0x19')](_0x445909);}return null;};}function patchUpdates(_0x2f07a5){return function(_0x448e1f){try{jsonpatch[_0x07cf('0x20')](_0x448e1f,_0x2f07a5,!![]);}catch(_0x26a36f){return BPromise['reject'](_0x26a36f);}return _0x448e1f[_0x07cf('0x21')]();};}function saveUpdates(_0x1d2cc5,_0x24a084){return function(_0x27a175){if(_0x27a175){return _0x27a175[_0x07cf('0x22')](_0x1d2cc5)['then'](function(_0x218c89){return _0x218c89;});}return null;};}function removeEntity(_0x580031,_0x32794b){return function(_0x59a45c){if(_0x59a45c){return _0x59a45c[_0x07cf('0x23')]()[_0x07cf('0x24')](function(){_0x580031[_0x07cf('0x18')](0xcc)[_0x07cf('0x17')]();});}};}function handleEntityNotFound(_0x4a67b7,_0x2b3569){return function(_0x4f00a1){if(!_0x4f00a1){_0x4a67b7['sendStatus'](0x194);}return _0x4f00a1;};}function handleError(_0xe84f47,_0x1c819a){_0x1c819a=_0x1c819a||0x1f4;return function(_0x18cefe){logger[_0x07cf('0x25')](_0x18cefe[_0x07cf('0x26')]);if(_0x18cefe[_0x07cf('0x27')]){delete _0x18cefe['name'];}_0xe84f47[_0x07cf('0x18')](_0x1c819a)[_0x07cf('0x28')](_0x18cefe);};}exports[_0x07cf('0x29')]=function(_0x3623c2,_0x1c631e){var _0x237bb6={},_0x2cc832={},_0x421205={'count':0x0,'rows':[]};var _0x480b10=_['map'](db['FaxApplication'][_0x07cf('0x2a')],function(_0x9db2be){return{'name':_0x9db2be[_0x07cf('0x2b')],'type':_0x9db2be[_0x07cf('0x2c')][_0x07cf('0x2d')]};});_0x2cc832['model']=_[_0x07cf('0x2e')](_0x480b10,_0x07cf('0x27'));_0x2cc832[_0x07cf('0x2f')]=_[_0x07cf('0x30')](_0x3623c2['query']);_0x2cc832[_0x07cf('0x31')]=_[_0x07cf('0x32')](_0x2cc832[_0x07cf('0x33')],_0x2cc832[_0x07cf('0x2f')]);_0x237bb6[_0x07cf('0x34')]=_[_0x07cf('0x32')](_0x2cc832['model'],qs[_0x07cf('0x35')](_0x3623c2['query'][_0x07cf('0x35')]));_0x237bb6[_0x07cf('0x34')]=_0x237bb6[_0x07cf('0x34')][_0x07cf('0x36')]?_0x237bb6[_0x07cf('0x34')]:_0x2cc832[_0x07cf('0x33')];if(!_0x3623c2[_0x07cf('0x2f')]['hasOwnProperty'](_0x07cf('0x37'))){_0x237bb6[_0x07cf('0x1b')]=qs[_0x07cf('0x1b')](_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x1b')]);_0x237bb6['offset']=qs['offset'](_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x1d')]);}_0x237bb6[_0x07cf('0x38')]=qs[_0x07cf('0x39')](_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x39')]);_0x237bb6[_0x07cf('0x3a')]=qs[_0x07cf('0x31')](_['pick'](_0x3623c2[_0x07cf('0x2f')],_0x2cc832['filters']),_0x480b10);if(_0x3623c2['query'][_0x07cf('0x3b')]){_0x237bb6[_0x07cf('0x3a')]=_[_0x07cf('0x3c')](_0x237bb6[_0x07cf('0x3a')],{'$or':_[_0x07cf('0x2e')](_0x480b10,function(_0x158ce6){if(_0x158ce6[_0x07cf('0x2c')]!=='VIRTUAL'){var _0x4483b4={};_0x4483b4[_0x158ce6[_0x07cf('0x27')]]={'$like':'%'+_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x3b')]+'%'};return _0x4483b4;}})});}_0x237bb6=_[_0x07cf('0x3c')]({},_0x237bb6,_0x3623c2[_0x07cf('0x3d')]);var _0x45a15e={'where':_0x237bb6[_0x07cf('0x3a')]};return db[_0x07cf('0x3e')][_0x07cf('0x1c')](_0x45a15e)[_0x07cf('0x24')](function(_0x22a090){_0x421205[_0x07cf('0x1c')]=_0x22a090;if(_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x3f')]){_0x237bb6[_0x07cf('0x40')]=[{'all':!![]}];}return db[_0x07cf('0x3e')][_0x07cf('0x41')](_0x237bb6);})[_0x07cf('0x24')](function(_0x43472f){_0x421205['rows']=_0x43472f;return _0x421205;})['then'](respondWithFilteredResult(_0x1c631e,_0x237bb6))[_0x07cf('0x42')](handleError(_0x1c631e,null));};exports[_0x07cf('0x43')]=function(_0x4f3c8c,_0x592fe6){var _0xadc740={'raw':!![],'where':{'id':_0x4f3c8c['params']['id']}},_0x26bb80={};_0x26bb80[_0x07cf('0x33')]=_[_0x07cf('0x30')](db['FaxApplication'][_0x07cf('0x2a')]);_0x26bb80[_0x07cf('0x2f')]=_[_0x07cf('0x30')](_0x4f3c8c[_0x07cf('0x2f')]);_0x26bb80[_0x07cf('0x31')]=_['intersection'](_0x26bb80[_0x07cf('0x33')],_0x26bb80[_0x07cf('0x2f')]);_0xadc740[_0x07cf('0x34')]=_[_0x07cf('0x32')](_0x26bb80[_0x07cf('0x33')],qs[_0x07cf('0x35')](_0x4f3c8c[_0x07cf('0x2f')][_0x07cf('0x35')]));_0xadc740[_0x07cf('0x34')]=_0xadc740['attributes'][_0x07cf('0x36')]?_0xadc740[_0x07cf('0x34')]:_0x26bb80[_0x07cf('0x33')];if(_0x4f3c8c[_0x07cf('0x2f')][_0x07cf('0x3f')]){_0xadc740[_0x07cf('0x40')]=[{'all':!![]}];}_0xadc740=_[_0x07cf('0x3c')]({},_0xadc740,_0x4f3c8c[_0x07cf('0x3d')]);return db['FaxApplication']['find'](_0xadc740)[_0x07cf('0x24')](handleEntityNotFound(_0x592fe6,null))[_0x07cf('0x24')](respondWithResult(_0x592fe6,null))[_0x07cf('0x42')](handleError(_0x592fe6,null));};exports[_0x07cf('0x44')]=function(_0x4c9958,_0x4f9104){return db[_0x07cf('0x3e')]['create'](_0x4c9958[_0x07cf('0x45')],{})['then'](respondWithResult(_0x4f9104,0xc9))[_0x07cf('0x42')](handleError(_0x4f9104,null));};exports[_0x07cf('0x22')]=function(_0x4fd8a9,_0x1c13d2){if(_0x4fd8a9[_0x07cf('0x45')]['id']){delete _0x4fd8a9[_0x07cf('0x45')]['id'];}return db[_0x07cf('0x3e')][_0x07cf('0x46')]({'where':{'id':_0x4fd8a9['params']['id']}})[_0x07cf('0x24')](handleEntityNotFound(_0x1c13d2,null))['then'](saveUpdates(_0x4fd8a9[_0x07cf('0x45')],null))[_0x07cf('0x24')](respondWithResult(_0x1c13d2,null))['catch'](handleError(_0x1c13d2,null));};exports[_0x07cf('0x23')]=function(_0x1b0e7b,_0x5de85a){return db[_0x07cf('0x3e')][_0x07cf('0x46')]({'where':{'id':_0x1b0e7b[_0x07cf('0x47')]['id']}})[_0x07cf('0x24')](handleEntityNotFound(_0x5de85a,null))[_0x07cf('0x24')](removeEntity(_0x5de85a,null))[_0x07cf('0x42')](handleError(_0x5de85a,null));};
\ No newline at end of file
+var _0x5f57=['limit','count','set','apply','save','update','then','destroy','end','error','stack','send','index','map','rawAttributes','fieldName','type','key','name','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','catch','show','params','FaxApplication','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined'];(function(_0x57cf94,_0x2b099c){var _0x73983f=function(_0xce3742){while(--_0xce3742){_0x57cf94['push'](_0x57cf94['shift']());}};_0x73983f(++_0x2b099c);}(_0x5f57,0x10b));var _0x75f5=function(_0x16ff44,_0x474210){_0x16ff44=_0x16ff44-0x0;var _0x54dff8=_0x5f57[_0x16ff44];return _0x54dff8;};'use strict';var emlformat=require(_0x75f5('0x0'));var rimraf=require(_0x75f5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x75f5('0x2'));var rp=require(_0x75f5('0x3'));var moment=require(_0x75f5('0x4'));var BPromise=require(_0x75f5('0x5'));var Mustache=require('mustache');var util=require(_0x75f5('0x6'));var path=require(_0x75f5('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('lodash');var squel=require(_0x75f5('0x8'));var crypto=require(_0x75f5('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x75f5('0xa'));var toCsv=require(_0x75f5('0xb'));var querystring=require('querystring');var Papa=require(_0x75f5('0xc'));var Redis=require(_0x75f5('0xd'));var authService=require(_0x75f5('0xe'));var qs=require(_0x75f5('0xf'));var as=require(_0x75f5('0x10'));var hardwareService=require(_0x75f5('0x11'));var logger=require(_0x75f5('0x12'))(_0x75f5('0x13'));var utils=require(_0x75f5('0x14'));var config=require(_0x75f5('0x15'));var licenseUtil=require(_0x75f5('0x16'));var db=require(_0x75f5('0x17'))['db'];function respondWithStatusCode(_0x11e246,_0x159da8){_0x159da8=_0x159da8||0xcc;return function(_0x5bf92c){if(_0x5bf92c){return _0x11e246[_0x75f5('0x18')](_0x159da8);}return _0x11e246[_0x75f5('0x19')](_0x159da8)['end']();};}function respondWithResult(_0x5b101e,_0x56b430){_0x56b430=_0x56b430||0xc8;return function(_0x1c60f6){if(_0x1c60f6){return _0x5b101e[_0x75f5('0x19')](_0x56b430)[_0x75f5('0x1a')](_0x1c60f6);}};}function respondWithFilteredResult(_0x2725d,_0x1d0fd1){return function(_0x3ed2eb){if(_0x3ed2eb){var _0x7dfbf7=typeof _0x1d0fd1[_0x75f5('0x1b')]===_0x75f5('0x1c')&&typeof _0x1d0fd1[_0x75f5('0x1d')]===_0x75f5('0x1c');var _0x2b7048=_0x3ed2eb[_0x75f5('0x1e')];var _0x5a6650=_0x7dfbf7?0x0:_0x1d0fd1['offset'];var _0x3c86e3=_0x7dfbf7?_0x3ed2eb[_0x75f5('0x1e')]:_0x1d0fd1['offset']+_0x1d0fd1[_0x75f5('0x1d')];var _0x53eb2c;if(_0x3c86e3>=_0x2b7048){_0x3c86e3=_0x2b7048;_0x53eb2c=0xc8;}else{_0x53eb2c=0xce;}_0x2725d[_0x75f5('0x19')](_0x53eb2c);return _0x2725d[_0x75f5('0x1f')]('Content-Range',_0x5a6650+'-'+_0x3c86e3+'/'+_0x2b7048)['json'](_0x3ed2eb);}return null;};}function patchUpdates(_0x1e47b8){return function(_0x22cec8){try{jsonpatch[_0x75f5('0x20')](_0x22cec8,_0x1e47b8,!![]);}catch(_0x49d038){return BPromise['reject'](_0x49d038);}return _0x22cec8[_0x75f5('0x21')]();};}function saveUpdates(_0x1eb0e3,_0x52618b){return function(_0x5b4be7){if(_0x5b4be7){return _0x5b4be7[_0x75f5('0x22')](_0x1eb0e3)[_0x75f5('0x23')](function(_0x17bd7f){return _0x17bd7f;});}return null;};}function removeEntity(_0x1010ec,_0x45321e){return function(_0x50a75b){if(_0x50a75b){return _0x50a75b[_0x75f5('0x24')]()[_0x75f5('0x23')](function(){_0x1010ec[_0x75f5('0x19')](0xcc)[_0x75f5('0x25')]();});}};}function handleEntityNotFound(_0x275732,_0x49d46a){return function(_0x252f74){if(!_0x252f74){_0x275732[_0x75f5('0x18')](0x194);}return _0x252f74;};}function handleError(_0x1dde98,_0x373c86){_0x373c86=_0x373c86||0x1f4;return function(_0x5e0cf4){logger[_0x75f5('0x26')](_0x5e0cf4[_0x75f5('0x27')]);if(_0x5e0cf4['name']){delete _0x5e0cf4['name'];}_0x1dde98[_0x75f5('0x19')](_0x373c86)[_0x75f5('0x28')](_0x5e0cf4);};}exports[_0x75f5('0x29')]=function(_0x5d9cf2,_0x36c66e){var _0x31e6e2={},_0x576ddc={},_0x144555={'count':0x0,'rows':[]};var _0x4e2c1f=_[_0x75f5('0x2a')](db['FaxApplication'][_0x75f5('0x2b')],function(_0x4efb3f){return{'name':_0x4efb3f[_0x75f5('0x2c')],'type':_0x4efb3f[_0x75f5('0x2d')][_0x75f5('0x2e')]};});_0x576ddc['model']=_[_0x75f5('0x2a')](_0x4e2c1f,_0x75f5('0x2f'));_0x576ddc['query']=_[_0x75f5('0x30')](_0x5d9cf2[_0x75f5('0x31')]);_0x576ddc[_0x75f5('0x32')]=_[_0x75f5('0x33')](_0x576ddc[_0x75f5('0x34')],_0x576ddc[_0x75f5('0x31')]);_0x31e6e2[_0x75f5('0x35')]=_[_0x75f5('0x33')](_0x576ddc[_0x75f5('0x34')],qs[_0x75f5('0x36')](_0x5d9cf2[_0x75f5('0x31')][_0x75f5('0x36')]));_0x31e6e2[_0x75f5('0x35')]=_0x31e6e2[_0x75f5('0x35')][_0x75f5('0x37')]?_0x31e6e2[_0x75f5('0x35')]:_0x576ddc['model'];if(!_0x5d9cf2[_0x75f5('0x31')]['hasOwnProperty'](_0x75f5('0x38'))){_0x31e6e2[_0x75f5('0x1d')]=qs['limit'](_0x5d9cf2['query'][_0x75f5('0x1d')]);_0x31e6e2[_0x75f5('0x1b')]=qs[_0x75f5('0x1b')](_0x5d9cf2[_0x75f5('0x31')][_0x75f5('0x1b')]);}_0x31e6e2[_0x75f5('0x39')]=qs[_0x75f5('0x3a')](_0x5d9cf2[_0x75f5('0x31')][_0x75f5('0x3a')]);_0x31e6e2[_0x75f5('0x3b')]=qs[_0x75f5('0x32')](_[_0x75f5('0x3c')](_0x5d9cf2[_0x75f5('0x31')],_0x576ddc[_0x75f5('0x32')]),_0x4e2c1f);if(_0x5d9cf2[_0x75f5('0x31')][_0x75f5('0x3d')]){_0x31e6e2[_0x75f5('0x3b')]=_[_0x75f5('0x3e')](_0x31e6e2['where'],{'$or':_['map'](_0x4e2c1f,function(_0x239ebe){if(_0x239ebe['type']!==_0x75f5('0x3f')){var _0x5ce353={};_0x5ce353[_0x239ebe[_0x75f5('0x2f')]]={'$like':'%'+_0x5d9cf2[_0x75f5('0x31')][_0x75f5('0x3d')]+'%'};return _0x5ce353;}})});}_0x31e6e2=_['merge']({},_0x31e6e2,_0x5d9cf2['options']);var _0x3d06cb={'where':_0x31e6e2[_0x75f5('0x3b')]};return db['FaxApplication'][_0x75f5('0x1e')](_0x3d06cb)['then'](function(_0x1d6cac){_0x144555[_0x75f5('0x1e')]=_0x1d6cac;if(_0x5d9cf2[_0x75f5('0x31')][_0x75f5('0x40')]){_0x31e6e2[_0x75f5('0x41')]=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x31e6e2);})['then'](function(_0x2b4e35){_0x144555['rows']=_0x2b4e35;return _0x144555;})[_0x75f5('0x23')](respondWithFilteredResult(_0x36c66e,_0x31e6e2))[_0x75f5('0x42')](handleError(_0x36c66e,null));};exports[_0x75f5('0x43')]=function(_0x3b541f,_0x20095b){var _0x3dbc96={'raw':!![],'where':{'id':_0x3b541f[_0x75f5('0x44')]['id']}},_0x113681={};_0x113681[_0x75f5('0x34')]=_[_0x75f5('0x30')](db[_0x75f5('0x45')][_0x75f5('0x2b')]);_0x113681[_0x75f5('0x31')]=_['keys'](_0x3b541f[_0x75f5('0x31')]);_0x113681[_0x75f5('0x32')]=_['intersection'](_0x113681['model'],_0x113681[_0x75f5('0x31')]);_0x3dbc96[_0x75f5('0x35')]=_[_0x75f5('0x33')](_0x113681[_0x75f5('0x34')],qs['fields'](_0x3b541f['query'][_0x75f5('0x36')]));_0x3dbc96[_0x75f5('0x35')]=_0x3dbc96[_0x75f5('0x35')][_0x75f5('0x37')]?_0x3dbc96[_0x75f5('0x35')]:_0x113681[_0x75f5('0x34')];if(_0x3b541f[_0x75f5('0x31')][_0x75f5('0x40')]){_0x3dbc96[_0x75f5('0x41')]=[{'all':!![]}];}_0x3dbc96=_['merge']({},_0x3dbc96,_0x3b541f[_0x75f5('0x46')]);return db[_0x75f5('0x45')][_0x75f5('0x47')](_0x3dbc96)[_0x75f5('0x23')](handleEntityNotFound(_0x20095b,null))[_0x75f5('0x23')](respondWithResult(_0x20095b,null))[_0x75f5('0x42')](handleError(_0x20095b,null));};exports[_0x75f5('0x48')]=function(_0x1c27da,_0x445029){return db[_0x75f5('0x45')]['create'](_0x1c27da[_0x75f5('0x49')],{})['then'](respondWithResult(_0x445029,0xc9))[_0x75f5('0x42')](handleError(_0x445029,null));};exports[_0x75f5('0x22')]=function(_0x373cdf,_0x4ddf2c){if(_0x373cdf[_0x75f5('0x49')]['id']){delete _0x373cdf[_0x75f5('0x49')]['id'];}return db[_0x75f5('0x45')][_0x75f5('0x47')]({'where':{'id':_0x373cdf[_0x75f5('0x44')]['id']}})[_0x75f5('0x23')](handleEntityNotFound(_0x4ddf2c,null))[_0x75f5('0x23')](saveUpdates(_0x373cdf[_0x75f5('0x49')],null))[_0x75f5('0x23')](respondWithResult(_0x4ddf2c,null))[_0x75f5('0x42')](handleError(_0x4ddf2c,null));};exports[_0x75f5('0x24')]=function(_0x412f65,_0x514b82){return db[_0x75f5('0x45')][_0x75f5('0x47')]({'where':{'id':_0x412f65[_0x75f5('0x44')]['id']}})[_0x75f5('0x23')](handleEntityNotFound(_0x514b82,null))[_0x75f5('0x23')](removeEntity(_0x514b82,null))['catch'](handleError(_0x514b82,null));};
\ No newline at end of file
index 88c44be..5bea775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5671=['FaxApplication','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./faxApplication.attributes','exports'];(function(_0x8da403,_0x437957){var _0x4d00cc=function(_0x29de3f){while(--_0x29de3f){_0x8da403['push'](_0x8da403['shift']());}};_0x4d00cc(++_0x437957);}(_0x5671,0xf2));var _0x1567=function(_0xfa75b5,_0x5cbe19){_0xfa75b5=_0xfa75b5-0x0;var _0x1c1911=_0x5671[_0xfa75b5];return _0x1c1911;};'use strict';var _=require(_0x1567('0x0'));var util=require(_0x1567('0x1'));var logger=require(_0x1567('0x2'))(_0x1567('0x3'));var moment=require(_0x1567('0x4'));var BPromise=require(_0x1567('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1567('0x6'));var rimraf=require(_0x1567('0x7'));var config=require('../../config/environment');var attributes=require(_0x1567('0x8'));module[_0x1567('0x9')]=function(_0x8e3097,_0x21745a){return _0x8e3097['define'](_0x1567('0xa'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x1567('0xb')});};
\ No newline at end of file
+var _0xab67=['request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','util','api','moment','bluebird'];(function(_0x2965b3,_0x1c0483){var _0x3f8693=function(_0x4f39f6){while(--_0x4f39f6){_0x2965b3['push'](_0x2965b3['shift']());}};_0x3f8693(++_0x1c0483);}(_0xab67,0x65));var _0x7ab6=function(_0x27929e,_0x75968b){_0x27929e=_0x27929e-0x0;var _0x3125c0=_0xab67[_0x27929e];return _0x3125c0;};'use strict';var _=require('lodash');var util=require(_0x7ab6('0x0'));var logger=require('../../config/logger')(_0x7ab6('0x1'));var moment=require(_0x7ab6('0x2'));var BPromise=require(_0x7ab6('0x3'));var rp=require(_0x7ab6('0x4'));var fs=require('fs');var path=require(_0x7ab6('0x5'));var rimraf=require(_0x7ab6('0x6'));var config=require(_0x7ab6('0x7'));var attributes=require(_0x7ab6('0x8'));module[_0x7ab6('0x9')]=function(_0x321db0,_0x5ec0d1){return _0x321db0[_0x7ab6('0xa')](_0x7ab6('0xb'),attributes,{'tableName':_0x7ab6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7ab6('0xd'),'collate':_0x7ab6('0xe')});};
\ No newline at end of file
index a81f828..0042e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf404=['then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','where','attributes','limit','lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http','request'];(function(_0x12c0ee,_0x528c3e){var _0x3cb7e7=function(_0x5d4135){while(--_0x5d4135){_0x12c0ee['push'](_0x12c0ee['shift']());}};_0x3cb7e7(++_0x528c3e);}(_0xf404,0x120));var _0x4f40=function(_0x5e6ba3,_0x20b172){_0x5e6ba3=_0x5e6ba3-0x0;var _0x270fed=_0xf404[_0x5e6ba3];return _0x270fed;};'use strict';var _=require(_0x4f40('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4f40('0x1'));var rs=require(_0x4f40('0x2'));var fs=require('fs');var Redis=require(_0x4f40('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4f40('0x4'));var logger=require('../../config/logger')(_0x4f40('0x5'));var config=require('../../config/environment');var jayson=require(_0x4f40('0x6'));var client=jayson['client'][_0x4f40('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1aea28,_0x1d65c8,_0x45970a){return new BPromise(function(_0x23e3eb,_0x1ae1d7){return client[_0x4f40('0x8')](_0x1aea28,_0x45970a)[_0x4f40('0x9')](function(_0x102700){logger[_0x4f40('0xa')](_0x4f40('0xb'),_0x1d65c8,_0x4f40('0xc'));logger['debug'](_0x4f40('0xd'),_0x1d65c8,_0x4f40('0xc'),JSON['stringify'](_0x102700));if(_0x102700['error']){if(_0x102700['error'][_0x4f40('0xe')]===0x1f4){logger[_0x4f40('0xf')](_0x4f40('0xb'),_0x1d65c8,_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);return _0x1ae1d7(_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);}logger[_0x4f40('0xf')](_0x4f40('0xb'),_0x1d65c8,_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);return _0x23e3eb(_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);}else{logger[_0x4f40('0xa')]('FaxApplication,\x20%s,\x20%s',_0x1d65c8,_0x4f40('0xc'));_0x23e3eb(_0x102700[_0x4f40('0x11')]['message']);}})[_0x4f40('0x12')](function(_0x1406c6){logger['error'](_0x4f40('0xb'),_0x1d65c8,_0x1406c6);_0x1ae1d7(_0x1406c6);});});}exports[_0x4f40('0x13')]=function(_0x2a8017){var _0xa038ab=this;return new Promise(function(_0x20f34a,_0x501269){return db[_0x4f40('0x14')][_0x4f40('0x15')](_0x2a8017[_0x4f40('0x16')],{'raw':_0x2a8017['options']?_0x2a8017[_0x4f40('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a8017[_0x4f40('0x17')]?_0x2a8017['options'][_0x4f40('0x18')]||null:null,'attributes':_0x2a8017[_0x4f40('0x17')]?_0x2a8017[_0x4f40('0x17')][_0x4f40('0x19')]||null:null,'limit':_0x2a8017['options']?_0x2a8017['options'][_0x4f40('0x1a')]||null:null})['then'](function(_0x334f42){logger[_0x4f40('0xa')]('UpdateFaxApplication',_0x2a8017);logger['debug'](_0x4f40('0x13'),_0x2a8017,JSON['stringify'](_0x334f42));_0x20f34a(_0x334f42);})[_0x4f40('0x12')](function(_0x264af6){logger[_0x4f40('0xf')](_0x4f40('0x13'),_0x264af6[_0x4f40('0x10')],_0x2a8017);_0x501269(_0xa038ab[_0x4f40('0xf')](0x1f4,_0x264af6['message']));});});};
\ No newline at end of file
+var _0xfc4e=['randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','info','UpdateFaxApplication','FaxApplication','update','body','raw','where','options','attributes','limit','catch','lodash','util','moment','bluebird'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xfc4e,0xb0));var _0xefc4=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xfc4e[_0x5f09c5];return _0x426ad9;};'use strict';var _=require(_0xefc4('0x0'));var util=require(_0xefc4('0x1'));var moment=require(_0xefc4('0x2'));var BPromise=require(_0xefc4('0x3'));var rs=require(_0xefc4('0x4'));var fs=require('fs');var Redis=require(_0xefc4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xefc4('0x6'))(_0xefc4('0x7'));var config=require(_0xefc4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xefc4('0x9')][_0xefc4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4553d0,_0x3aaa31,_0x2aec65){return new BPromise(function(_0x221890,_0x3bb84e){return client['request'](_0x4553d0,_0x2aec65)[_0xefc4('0xb')](function(_0x43ad95){logger['info'](_0xefc4('0xc'),_0x3aaa31,_0xefc4('0xd'));logger[_0xefc4('0xe')](_0xefc4('0xf'),_0x3aaa31,_0xefc4('0xd'),JSON[_0xefc4('0x10')](_0x43ad95));if(_0x43ad95[_0xefc4('0x11')]){if(_0x43ad95[_0xefc4('0x11')]['code']===0x1f4){logger[_0xefc4('0x11')](_0xefc4('0xc'),_0x3aaa31,_0x43ad95[_0xefc4('0x11')][_0xefc4('0x12')]);return _0x3bb84e(_0x43ad95[_0xefc4('0x11')]['message']);}logger[_0xefc4('0x11')]('FaxApplication,\x20%s,\x20%s',_0x3aaa31,_0x43ad95[_0xefc4('0x11')][_0xefc4('0x12')]);return _0x221890(_0x43ad95[_0xefc4('0x11')]['message']);}else{logger[_0xefc4('0x13')](_0xefc4('0xc'),_0x3aaa31,_0xefc4('0xd'));_0x221890(_0x43ad95['result'][_0xefc4('0x12')]);}})['catch'](function(_0x1fbaac){logger[_0xefc4('0x11')]('FaxApplication,\x20%s,\x20%s',_0x3aaa31,_0x1fbaac);_0x3bb84e(_0x1fbaac);});});}exports[_0xefc4('0x14')]=function(_0x23b80a){var _0x22bab5=this;return new Promise(function(_0x50a00e,_0x5f2f97){return db[_0xefc4('0x15')][_0xefc4('0x16')](_0x23b80a[_0xefc4('0x17')],{'raw':_0x23b80a['options']?_0x23b80a['options'][_0xefc4('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23b80a['options']?_0x23b80a['options'][_0xefc4('0x19')]||null:null,'attributes':_0x23b80a[_0xefc4('0x1a')]?_0x23b80a[_0xefc4('0x1a')][_0xefc4('0x1b')]||null:null,'limit':_0x23b80a[_0xefc4('0x1a')]?_0x23b80a['options'][_0xefc4('0x1c')]||null:null})['then'](function(_0x3a6ba1){logger[_0xefc4('0x13')](_0xefc4('0x14'),_0x23b80a);logger['debug'](_0xefc4('0x14'),_0x23b80a,JSON[_0xefc4('0x10')](_0x3a6ba1));_0x50a00e(_0x3a6ba1);})[_0xefc4('0x1d')](function(_0x411b44){logger[_0xefc4('0x11')](_0xefc4('0x14'),_0x411b44[_0xefc4('0x12')],_0x23b80a);_0x5f2f97(_0x22bab5['error'](0x1f4,_0x411b44['message']));});});};
\ No newline at end of file
index 7e116be..0d57163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xfb02c9,_0x43c274){var _0x9afb71=function(_0x56dff0){while(--_0x56dff0){_0xfb02c9['push'](_0xfb02c9['shift']());}};_0x9afb71(++_0x43c274);}(_0x4fc2,0x111));var _0x24fc=function(_0x986fec,_0x5bd00f){_0x986fec=_0x986fec-0x0;var _0x50db2f=_0x4fc2[_0x986fec];return _0x50db2f;};'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
+var _0x8603=['../../components/interaction/service','./faxApplication.controller','isAuthenticated','index','get','/:id','create','put','update','exports','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x1e393b,_0x355f6b){var _0x3d0bfe=function(_0x320830){while(--_0x320830){_0x1e393b['push'](_0x1e393b['shift']());}};_0x3d0bfe(++_0x355f6b);}(_0x8603,0x190));var _0x3860=function(_0x25981f,_0x392e24){_0x25981f=_0x25981f-0x0;var _0x2aacbf=_0x8603[_0x25981f];return _0x2aacbf;};'use strict';var multer=require('multer');var util=require(_0x3860('0x0'));var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3860('0x3'));var auth=require(_0x3860('0x4'));var interaction=require(_0x3860('0x5'));var config=require('../../config/environment');var controller=require(_0x3860('0x6'));router['get']('/',auth[_0x3860('0x7')](),controller[_0x3860('0x8')]);router[_0x3860('0x9')](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3860('0xb')]);router[_0x3860('0xc')]('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xd')]);router['delete'](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['destroy']);module[_0x3860('0xe')]=router;
\ No newline at end of file
index 10371fb..63ea896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bfe=['out','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0xbd4eb7,_0x527b62){var _0x1bf52c=function(_0x599786){while(--_0x599786){_0xbd4eb7['push'](_0xbd4eb7['shift']());}};_0x1bf52c(++_0x527b62);}(_0x0bfe,0x1e1));var _0xe0bf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0bfe[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0xe0bf('0x0')]={'closed':{'type':Sequelize[_0xe0bf('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xe0bf('0x2')]},'disposition':{'type':Sequelize[_0xe0bf('0x3')]},'secondDisposition':{'type':Sequelize[_0xe0bf('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe0bf('0x3')]},'note':{'type':Sequelize[_0xe0bf('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0xe0bf('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xe0bf('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe0bf('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xe0bf('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xb4f8=['BOOLEAN','DATE','STRING','ENUM','out','exports'];(function(_0x4092f7,_0xeeac3c){var _0x1e3948=function(_0x2c8fcb){while(--_0x2c8fcb){_0x4092f7['push'](_0x4092f7['shift']());}};_0x1e3948(++_0xeeac3c);}(_0xb4f8,0x83));var _0x8b4f=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0xb4f8[_0x500419];return _0x241c1a;};'use strict';var Sequelize=require('sequelize');module[_0x8b4f('0x0')]={'closed':{'type':Sequelize[_0x8b4f('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8b4f('0x2')]},'disposition':{'type':Sequelize[_0x8b4f('0x3')]},'secondDisposition':{'type':Sequelize[_0x8b4f('0x3')]},'thirdDisposition':{'type':Sequelize[_0x8b4f('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x8b4f('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x8b4f('0x4')]('in',_0x8b4f('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8b4f('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x8b4f('0x4')]('in',_0x8b4f('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index c7db472..95f28f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8662=['defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','destroy','stack','name','send','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','catch','show','params','model','keys','intersection','attributes','fields','length','includeAll','include','merge','options','create','body','find','describe','addMessage','FaxMessage','omit','ids','findOne','filters','order','sort','where','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','spread','Tag','emit','faxInteractionTags:save','removeTags','download','join','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','existsSync','createReadStream','createWriteStream','basename','resolve','err','unlinkSync','rimraf','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis'];(function(_0x516510,_0x48f18a){var _0x5c5246=function(_0x3ea365){while(--_0x3ea365){_0x516510['push'](_0x516510['shift']());}};_0x5c5246(++_0x48f18a);}(_0x8662,0x180));var _0x2866=function(_0x1421e2,_0x3de428){_0x1421e2=_0x1421e2-0x0;var _0x5459de=_0x8662[_0x1421e2];return _0x5459de;};'use strict';var rimraf=require(_0x2866('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x2866('0x1'));var util=require(_0x2866('0x2'));var path=require(_0x2866('0x3'));var fs=require('fs');var _=require(_0x2866('0x4'));var Redis=require(_0x2866('0x5'));var interaction=require(_0x2866('0x6'));var qs=require(_0x2866('0x7'));var logger=require('../../config/logger')(_0x2866('0x8'));var config=require(_0x2866('0x9'));var db=require(_0x2866('0xa'))['db'];config[_0x2866('0xb')]=_[_0x2866('0xc')](config[_0x2866('0xb')],{'host':_0x2866('0xd'),'port':0x18eb});var socket=require(_0x2866('0xe'))(new Redis(config[_0x2866('0xb')]));require(_0x2866('0xf'))[_0x2866('0x10')](socket);function respondWithStatusCode(_0x11d208,_0xccd611){_0xccd611=_0xccd611||0xcc;return function(_0x1658f7){if(_0x1658f7){return _0x11d208[_0x2866('0x11')](_0xccd611);}return _0x11d208[_0x2866('0x12')](_0xccd611)[_0x2866('0x13')]();};}function respondWithResult(_0x8437f9,_0x3212f9){_0x3212f9=_0x3212f9||0xc8;return function(_0x5ac76e){if(_0x5ac76e){return _0x8437f9[_0x2866('0x12')](_0x3212f9)[_0x2866('0x14')](_0x5ac76e);}};}function respondWithFilteredResult(_0x48ced0,_0x21edcb){return function(_0x34a25f){if(_0x34a25f){var _0x46a614=typeof _0x21edcb[_0x2866('0x15')]===_0x2866('0x16')&&typeof _0x21edcb[_0x2866('0x17')]===_0x2866('0x16');var _0x17b29b=_0x34a25f[_0x2866('0x18')];var _0x2c8273=_0x46a614?0x0:_0x21edcb[_0x2866('0x15')];var _0x9829cf=_0x46a614?_0x34a25f['count']:_0x21edcb[_0x2866('0x15')]+_0x21edcb[_0x2866('0x17')];var _0x5a1c08;if(_0x9829cf>=_0x17b29b){_0x9829cf=_0x17b29b;_0x5a1c08=0xc8;}else{_0x5a1c08=0xce;}_0x48ced0['status'](_0x5a1c08);return _0x48ced0[_0x2866('0x19')](_0x2866('0x1a'),_0x2c8273+'-'+_0x9829cf+'/'+_0x17b29b)[_0x2866('0x14')](_0x34a25f);}return null;};}function saveUpdates(_0x3c4c0b){return function(_0x31348e){if(_0x31348e){return _0x31348e['update'](_0x3c4c0b)[_0x2866('0x1b')](function(_0x533018){return _0x533018;});}return null;};}function removeEntity(_0x5d301e){return function(_0x3ad6e9){if(_0x3ad6e9){return _0x3ad6e9[_0x2866('0x1c')]()[_0x2866('0x1b')](function(){_0x5d301e[_0x2866('0x12')](0xcc)[_0x2866('0x13')]();});}};}function handleEntityNotFound(_0x16b5ff){return function(_0x122734){if(!_0x122734){_0x16b5ff[_0x2866('0x11')](0x194);}return _0x122734;};}function handleError(_0x2fdbaa,_0xbc6968){_0xbc6968=_0xbc6968||0x1f4;return function(_0x296d7d){logger['error'](_0x296d7d[_0x2866('0x1d')]);if(_0x296d7d[_0x2866('0x1e')]){delete _0x296d7d[_0x2866('0x1e')];}_0x2fdbaa[_0x2866('0x12')](_0xbc6968)[_0x2866('0x1f')](_0x296d7d);};}exports[_0x2866('0x20')]=function(_0x296935,_0x2edba3){var _0x1db48a={};var _0x2acea3=_[_0x2866('0x21')](db[_0x2866('0x22')][_0x2866('0x23')],function(_0x1c88f8){return{'name':_0x1c88f8[_0x2866('0x24')],'type':_0x1c88f8[_0x2866('0x25')][_0x2866('0x26')]};});_0x1db48a=qs[_0x2866('0x27')](_0x2acea3,_0x296935);return interaction[_0x2866('0x28')](_0x2866('0x29'),_0x296935[_0x2866('0x2a')],_0x296935['user'],_0x1db48a,_0x2acea3)[_0x2866('0x1b')](respondWithFilteredResult(_0x2edba3,_0x1db48a))[_0x2866('0x2b')](handleError(_0x2edba3,null));};exports[_0x2866('0x2c')]=function(_0x529741,_0x548e54){var _0x7e0f21={'raw':![],'where':{'id':_0x529741[_0x2866('0x2d')]['id']}},_0x391af3={};_0x391af3[_0x2866('0x2e')]=_['keys'](db[_0x2866('0x22')]['rawAttributes']);_0x391af3['query']=_[_0x2866('0x2f')](_0x529741[_0x2866('0x2a')]);_0x391af3['filters']=_[_0x2866('0x30')](_0x391af3[_0x2866('0x2e')],_0x391af3[_0x2866('0x2a')]);_0x7e0f21[_0x2866('0x31')]=_[_0x2866('0x30')](_0x391af3[_0x2866('0x2e')],qs[_0x2866('0x32')](_0x529741[_0x2866('0x2a')][_0x2866('0x32')]));_0x7e0f21[_0x2866('0x31')]=_0x7e0f21['attributes'][_0x2866('0x33')]?_0x7e0f21[_0x2866('0x31')]:_0x391af3[_0x2866('0x2e')];if(_0x529741[_0x2866('0x2a')][_0x2866('0x34')]){_0x7e0f21[_0x2866('0x35')]=[{'all':!![]}];}_0x7e0f21=_[_0x2866('0x36')]({},_0x7e0f21,_0x529741[_0x2866('0x37')]);return db[_0x2866('0x22')]['find'](_0x7e0f21)['then'](handleEntityNotFound(_0x548e54,null))[_0x2866('0x1b')](respondWithResult(_0x548e54,null))[_0x2866('0x2b')](handleError(_0x548e54,null));};exports[_0x2866('0x38')]=function(_0x3c6a68,_0x50b272){return db[_0x2866('0x22')][_0x2866('0x38')](_0x3c6a68[_0x2866('0x39')],{})[_0x2866('0x1b')](respondWithResult(_0x50b272,0xc9))[_0x2866('0x2b')](handleError(_0x50b272,null));};exports['update']=function(_0x4085f3,_0x52bebf){if(_0x4085f3['body']['id']){delete _0x4085f3['body']['id'];}return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x4085f3[_0x2866('0x2d')]['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x52bebf,null))[_0x2866('0x1b')](saveUpdates(_0x4085f3['body'],null))[_0x2866('0x1b')](respondWithResult(_0x52bebf,null))[_0x2866('0x2b')](handleError(_0x52bebf,null));};exports[_0x2866('0x1c')]=function(_0x525d8b,_0x45c871){return db['FaxInteraction'][_0x2866('0x3a')]({'where':{'id':_0x525d8b[_0x2866('0x2d')]['id']}})['then'](handleEntityNotFound(_0x45c871,null))['then'](removeEntity(_0x45c871,null))['catch'](handleError(_0x45c871,null));};exports['describe']=function(_0x33b7be,_0x2db646){return db[_0x2866('0x22')][_0x2866('0x3b')]()[_0x2866('0x1b')](respondWithResult(_0x2db646,null))[_0x2866('0x2b')](handleError(_0x2db646,null));};exports[_0x2866('0x3c')]=function(_0x24d49c,_0x5b4f28){return db[_0x2866('0x3d')][_0x2866('0x3a')]({'where':{'id':_0x24d49c[_0x2866('0x2d')]['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x5b4f28,null))['then'](function(_0x1295ac){if(_0x1295ac){return _0x1295ac[_0x2866('0x3c')](_0x24d49c[_0x2866('0x39')]['ids'],_[_0x2866('0x3e')](_0x24d49c['body'],[_0x2866('0x3f'),'id'])||{});}})['then'](respondWithResult(_0x5b4f28,null))[_0x2866('0x2b')](handleError(_0x5b4f28,null));};exports['getMessages']=function(_0x1dd97c,_0x233a2f){var _0x3e7e02={'raw':![],'where':{}};var _0x43bb6f={};var _0x559771={'count':0x0,'rows':[]};return db[_0x2866('0x22')][_0x2866('0x40')]({'where':{'id':_0x1dd97c[_0x2866('0x2d')]['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x233a2f,null))['then'](function(_0x4bf39d){if(_0x4bf39d){_0x43bb6f[_0x2866('0x2e')]=_[_0x2866('0x2f')](db[_0x2866('0x3d')][_0x2866('0x23')]);_0x43bb6f['query']=_[_0x2866('0x2f')](_0x1dd97c[_0x2866('0x2a')]);_0x43bb6f[_0x2866('0x41')]=_[_0x2866('0x30')](_0x43bb6f[_0x2866('0x2e')],_0x43bb6f[_0x2866('0x2a')]);_0x3e7e02[_0x2866('0x31')]=_[_0x2866('0x30')](_0x43bb6f[_0x2866('0x2e')],qs[_0x2866('0x32')](_0x1dd97c[_0x2866('0x2a')][_0x2866('0x32')]));_0x3e7e02['attributes']=_0x3e7e02[_0x2866('0x31')][_0x2866('0x33')]?_0x3e7e02['attributes']:_0x43bb6f[_0x2866('0x2e')];if(!_0x1dd97c['query']['hasOwnProperty']('nolimit')){_0x3e7e02[_0x2866('0x17')]=qs[_0x2866('0x17')](_0x1dd97c['query'][_0x2866('0x17')]);_0x3e7e02[_0x2866('0x15')]=qs['offset'](_0x1dd97c['query'][_0x2866('0x15')]);}_0x3e7e02[_0x2866('0x42')]=qs[_0x2866('0x43')](_0x1dd97c[_0x2866('0x2a')][_0x2866('0x43')]);_0x3e7e02[_0x2866('0x44')]=qs['filters'](_['pick'](_0x1dd97c[_0x2866('0x2a')],_0x43bb6f[_0x2866('0x41')]));_0x3e7e02[_0x2866('0x44')]['FaxInteractionId']=_0x4bf39d['id'];if(_0x1dd97c[_0x2866('0x2a')][_0x2866('0x45')]){_0x3e7e02[_0x2866('0x44')]=_[_0x2866('0x36')](_0x3e7e02[_0x2866('0x44')],{'$or':_['map'](_0x3e7e02[_0x2866('0x31')],function(_0x45269b){var _0x4adc18={};_0x4adc18[_0x45269b]={'$like':'%'+_0x1dd97c[_0x2866('0x2a')][_0x2866('0x45')]+'%'};return _0x4adc18;})});}if(_0x1dd97c[_0x2866('0x2a')]['$gte']){var _0x443362=_0x1dd97c[_0x2866('0x2a')][_0x2866('0x46')][_0x2866('0x47')](',');var _0x3c5daa={};_0x3c5daa[_0x443362[0x0]]={'$gte':moment(_0x443362[0x1])['format'](_0x2866('0x48'))};_0x3e7e02['where']=_[_0x2866('0x36')](_0x3e7e02[_0x2866('0x44')],_0x3c5daa);}_0x3e7e02=_[_0x2866('0x36')]({},_0x3e7e02,_0x1dd97c[_0x2866('0x37')]);return db[_0x2866('0x3d')][_0x2866('0x18')]({'where':_0x3e7e02[_0x2866('0x44')]})[_0x2866('0x1b')](function(_0x581ed6){_0x559771[_0x2866('0x18')]=_0x581ed6;if(_0x1dd97c[_0x2866('0x2a')][_0x2866('0x34')]){_0x3e7e02[_0x2866('0x35')]=[{'all':!![]}];}return db['FaxMessage'][_0x2866('0x28')](_0x3e7e02);})[_0x2866('0x1b')](function(_0x293194){_0x559771[_0x2866('0x49')]=_0x293194;return _0x559771;});}})[_0x2866('0x1b')](respondWithFilteredResult(_0x233a2f,_0x3e7e02))[_0x2866('0x2b')](handleError(_0x233a2f,null));};exports[_0x2866('0x4a')]=function(_0x32c672,_0x36c43e){return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x32c672['params']['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x36c43e,null))['then'](function(_0x1ee359){if(_0x1ee359){return _0x1ee359['setTags'](_0x32c672[_0x2866('0x39')][_0x2866('0x3f')],_[_0x2866('0x3e')](_0x32c672[_0x2866('0x39')],[_0x2866('0x3f'),'id'])||{})[_0x2866('0x4b')](function(){return db[_0x2866('0x4c')]['findAll']({'attributes':['id',_0x2866('0x1e'),'color'],'where':{'id':_0x32c672[_0x2866('0x39')][_0x2866('0x3f')]}});})[_0x2866('0x1b')](function(_0x2f4920){socket[_0x2866('0x4d')](_0x2866('0x4e'),{'id':Number(_0x32c672[_0x2866('0x2d')]['id']),'tags':_0x2f4920||[]});return{'id':Number(_0x32c672[_0x2866('0x2d')]['id']),'tags':_0x2f4920||[]};});}})[_0x2866('0x1b')](respondWithResult(_0x36c43e,null))[_0x2866('0x2b')](handleError(_0x36c43e,null));};exports[_0x2866('0x4f')]=function(_0x5be5c0,_0xd425a0){return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x5be5c0['params']['id']}})['then'](handleEntityNotFound(_0xd425a0,null))[_0x2866('0x1b')](function(_0x127ba4){if(_0x127ba4){return _0x127ba4[_0x2866('0x4f')](_0x5be5c0[_0x2866('0x2a')][_0x2866('0x3f')]);}})[_0x2866('0x1b')](respondWithStatusCode(_0xd425a0,null))[_0x2866('0x2b')](handleError(_0xd425a0,null));};exports[_0x2866('0x50')]=function(_0x170020,_0x262d91){var _0x79cb81=moment()['unix']()['toString']();var _0x3143e4=path[_0x2866('0x51')](config['root'],_0x2866('0x52'),_0x2866('0x53'),_0x2866('0x54'));var _0x1a3c9f=path[_0x2866('0x51')](config['root'],_0x2866('0x52'),_0x2866('0x53'),_0x2866('0x55'));var _0x54e081=path['join'](_0x3143e4,_0x79cb81);var _0x3deb39=util['format'](_0x2866('0x56'),_0x170020[_0x2866('0x2d')]['id'],_0x79cb81);var _0x52bd99=path[_0x2866('0x51')](_0x3143e4,_0x3deb39);var _0x2d4dac=[];_0x2d4dac['push']({'model':db[_0x2866('0x57')],'as':_0x2866('0x57'),'raw':!![]});var _0x12f04e=[{'model':db[_0x2866('0x3d')],'as':_0x2866('0x58'),'attributes':['id',_0x2866('0x39'),_0x2866('0x59')],'include':_0x2d4dac}];return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x170020['params']['id']},'include':_0x12f04e})[_0x2866('0x1b')](handleEntityNotFound(_0x262d91,null))[_0x2866('0x1b')](function(_0x4c4546){if(_0x4c4546&&_0x4c4546[_0x2866('0x58')]){var _0x2d9220=_0x4c4546[_0x2866('0x5a')]({'plain':!![]});fs[_0x2866('0x5b')](_0x54e081);for(var _0x5f22f5=0x0;_0x5f22f5<_0x2d9220[_0x2866('0x58')][_0x2866('0x33')];_0x5f22f5++){var _0x5e76b4=_0x2d9220[_0x2866('0x58')][_0x5f22f5][_0x2866('0x57')];if(_0x5e76b4){var _0x501c47=path[_0x2866('0x51')](_0x1a3c9f,_0x5e76b4['basename']);if(fs[_0x2866('0x5c')](_0x501c47)){fs[_0x2866('0x5d')](_0x501c47)['pipe'](fs[_0x2866('0x5e')](path[_0x2866('0x51')](_0x54e081,_0x5e76b4[_0x2866('0x5f')])));}}}return BPromise[_0x2866('0x60')]()['then'](function(){return new BPromise(function(_0x4710f4,_0x243621){zipdir(_0x54e081,{'saveTo':_0x52bd99},function(_0x47a24e,_0x2a959a){if(_0x47a24e)return _0x243621(_0x47a24e);return _0x4710f4(_0x2a959a);});})['then'](function(){return new BPromise(function(_0x44f359,_0x3ba304){rimraf(_0x54e081,function(_0x1e3214){if(_0x1e3214)_0x3ba304(_0x1e3214);return _0x44f359();});});})[_0x2866('0x1b')](function(){return _0x262d91[_0x2866('0x50')](_0x52bd99,_0x3deb39,function(_0x1f95a6){if(_0x1f95a6){console['log'](_0x2866('0x61'),_0x1f95a6);}else{fs[_0x2866('0x62')](_0x52bd99);}});});});}else{return _0x262d91[_0x2866('0x11')](0xc8);}})[_0x2866('0x2b')](handleError(_0x262d91,null));};
\ No newline at end of file
+var _0xee92=['keys','filters','attributes','intersection','fields','length','includeAll','include','merge','find','catch','create','update','body','describe','FaxMessage','addMessage','ids','findOne','nolimit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','omit','color','emit','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','rimraf','bluebird','util','ioredis','../../components/interaction/service','../../config/logger','api','../../config/environment','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','then','destroy','error','stack','name','index','map','FaxInteraction','rawAttributes','fieldName','type','findAll','fax','query','user','show','params','model'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xee92,0x16d));var _0x2ee9=function(_0x34dee1,_0x43eed8){_0x34dee1=_0x34dee1-0x0;var _0x1910ea=_0xee92[_0x34dee1];return _0x1910ea;};'use strict';var rimraf=require(_0x2ee9('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x2ee9('0x1'));var util=require(_0x2ee9('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var Redis=require(_0x2ee9('0x3'));var interaction=require(_0x2ee9('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0x2ee9('0x5'))(_0x2ee9('0x6'));var config=require(_0x2ee9('0x7'));var db=require('../../mysqldb')['db'];config[_0x2ee9('0x8')]=_['defaults'](config[_0x2ee9('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x2ee9('0x9'))(new Redis(config['redis']));require(_0x2ee9('0xa'))[_0x2ee9('0xb')](socket);function respondWithStatusCode(_0x3b74d9,_0x41c0f4){_0x41c0f4=_0x41c0f4||0xcc;return function(_0x56a1f1){if(_0x56a1f1){return _0x3b74d9[_0x2ee9('0xc')](_0x41c0f4);}return _0x3b74d9[_0x2ee9('0xd')](_0x41c0f4)[_0x2ee9('0xe')]();};}function respondWithResult(_0x43890c,_0x5b242d){_0x5b242d=_0x5b242d||0xc8;return function(_0xf49f9){if(_0xf49f9){return _0x43890c[_0x2ee9('0xd')](_0x5b242d)['json'](_0xf49f9);}};}function respondWithFilteredResult(_0x547f68,_0x3a607b){return function(_0x3ccb37){if(_0x3ccb37){var _0x5f3d27=typeof _0x3a607b[_0x2ee9('0xf')]===_0x2ee9('0x10')&&typeof _0x3a607b[_0x2ee9('0x11')]===_0x2ee9('0x10');var _0x50246e=_0x3ccb37['count'];var _0x4ab70b=_0x5f3d27?0x0:_0x3a607b['offset'];var _0x3dfad5=_0x5f3d27?_0x3ccb37[_0x2ee9('0x12')]:_0x3a607b[_0x2ee9('0xf')]+_0x3a607b['limit'];var _0x353a8d;if(_0x3dfad5>=_0x50246e){_0x3dfad5=_0x50246e;_0x353a8d=0xc8;}else{_0x353a8d=0xce;}_0x547f68[_0x2ee9('0xd')](_0x353a8d);return _0x547f68[_0x2ee9('0x13')](_0x2ee9('0x14'),_0x4ab70b+'-'+_0x3dfad5+'/'+_0x50246e)['json'](_0x3ccb37);}return null;};}function saveUpdates(_0x4afa7c){return function(_0x2009a0){if(_0x2009a0){return _0x2009a0['update'](_0x4afa7c)[_0x2ee9('0x15')](function(_0x4bab6a){return _0x4bab6a;});}return null;};}function removeEntity(_0x12327a){return function(_0x41f2ae){if(_0x41f2ae){return _0x41f2ae[_0x2ee9('0x16')]()['then'](function(){_0x12327a['status'](0xcc)[_0x2ee9('0xe')]();});}};}function handleEntityNotFound(_0x26b697){return function(_0x18c1d4){if(!_0x18c1d4){_0x26b697['sendStatus'](0x194);}return _0x18c1d4;};}function handleError(_0x2031ad,_0x3707ae){_0x3707ae=_0x3707ae||0x1f4;return function(_0x44f9d9){logger[_0x2ee9('0x17')](_0x44f9d9[_0x2ee9('0x18')]);if(_0x44f9d9[_0x2ee9('0x19')]){delete _0x44f9d9[_0x2ee9('0x19')];}_0x2031ad[_0x2ee9('0xd')](_0x3707ae)['send'](_0x44f9d9);};}exports[_0x2ee9('0x1a')]=function(_0x42f8d5,_0x252e48){var _0x51f695={};var _0x2ca574=_[_0x2ee9('0x1b')](db[_0x2ee9('0x1c')][_0x2ee9('0x1d')],function(_0x3936a7){return{'name':_0x3936a7[_0x2ee9('0x1e')],'type':_0x3936a7[_0x2ee9('0x1f')]['key']};});_0x51f695=qs['getOptions'](_0x2ca574,_0x42f8d5);return interaction[_0x2ee9('0x20')](_0x2ee9('0x21'),_0x42f8d5[_0x2ee9('0x22')],_0x42f8d5[_0x2ee9('0x23')],_0x51f695,_0x2ca574)[_0x2ee9('0x15')](respondWithFilteredResult(_0x252e48,_0x51f695))['catch'](handleError(_0x252e48,null));};exports[_0x2ee9('0x24')]=function(_0xd84c78,_0x9561e1){var _0x2629b3={'raw':![],'where':{'id':_0xd84c78[_0x2ee9('0x25')]['id']}},_0x2b5b94={};_0x2b5b94[_0x2ee9('0x26')]=_[_0x2ee9('0x27')](db[_0x2ee9('0x1c')]['rawAttributes']);_0x2b5b94[_0x2ee9('0x22')]=_['keys'](_0xd84c78[_0x2ee9('0x22')]);_0x2b5b94[_0x2ee9('0x28')]=_['intersection'](_0x2b5b94[_0x2ee9('0x26')],_0x2b5b94['query']);_0x2629b3[_0x2ee9('0x29')]=_[_0x2ee9('0x2a')](_0x2b5b94[_0x2ee9('0x26')],qs[_0x2ee9('0x2b')](_0xd84c78[_0x2ee9('0x22')]['fields']));_0x2629b3[_0x2ee9('0x29')]=_0x2629b3[_0x2ee9('0x29')][_0x2ee9('0x2c')]?_0x2629b3['attributes']:_0x2b5b94[_0x2ee9('0x26')];if(_0xd84c78[_0x2ee9('0x22')][_0x2ee9('0x2d')]){_0x2629b3[_0x2ee9('0x2e')]=[{'all':!![]}];}_0x2629b3=_[_0x2ee9('0x2f')]({},_0x2629b3,_0xd84c78['options']);return db[_0x2ee9('0x1c')][_0x2ee9('0x30')](_0x2629b3)[_0x2ee9('0x15')](handleEntityNotFound(_0x9561e1,null))[_0x2ee9('0x15')](respondWithResult(_0x9561e1,null))[_0x2ee9('0x31')](handleError(_0x9561e1,null));};exports[_0x2ee9('0x32')]=function(_0x35bf2f,_0x54f862){return db[_0x2ee9('0x1c')][_0x2ee9('0x32')](_0x35bf2f['body'],{})[_0x2ee9('0x15')](respondWithResult(_0x54f862,0xc9))[_0x2ee9('0x31')](handleError(_0x54f862,null));};exports[_0x2ee9('0x33')]=function(_0x5d837c,_0x4bed20){if(_0x5d837c[_0x2ee9('0x34')]['id']){delete _0x5d837c[_0x2ee9('0x34')]['id'];}return db['FaxInteraction']['find']({'where':{'id':_0x5d837c[_0x2ee9('0x25')]['id']}})[_0x2ee9('0x15')](handleEntityNotFound(_0x4bed20,null))[_0x2ee9('0x15')](saveUpdates(_0x5d837c['body'],null))[_0x2ee9('0x15')](respondWithResult(_0x4bed20,null))['catch'](handleError(_0x4bed20,null));};exports[_0x2ee9('0x16')]=function(_0x4e72b6,_0x1d05c7){return db[_0x2ee9('0x1c')][_0x2ee9('0x30')]({'where':{'id':_0x4e72b6[_0x2ee9('0x25')]['id']}})['then'](handleEntityNotFound(_0x1d05c7,null))['then'](removeEntity(_0x1d05c7,null))['catch'](handleError(_0x1d05c7,null));};exports['describe']=function(_0x35cd8a,_0x183283){return db[_0x2ee9('0x1c')][_0x2ee9('0x35')]()[_0x2ee9('0x15')](respondWithResult(_0x183283,null))['catch'](handleError(_0x183283,null));};exports['addMessage']=function(_0x45143b,_0xa03112){return db[_0x2ee9('0x36')][_0x2ee9('0x30')]({'where':{'id':_0x45143b[_0x2ee9('0x25')]['id']}})[_0x2ee9('0x15')](handleEntityNotFound(_0xa03112,null))[_0x2ee9('0x15')](function(_0x4ae366){if(_0x4ae366){return _0x4ae366[_0x2ee9('0x37')](_0x45143b[_0x2ee9('0x34')][_0x2ee9('0x38')],_['omit'](_0x45143b[_0x2ee9('0x34')],['ids','id'])||{});}})[_0x2ee9('0x15')](respondWithResult(_0xa03112,null))[_0x2ee9('0x31')](handleError(_0xa03112,null));};exports['getMessages']=function(_0x5849b4,_0x1fc5ee){var _0x3c0747={'raw':![],'where':{}};var _0x3984e0={};var _0x2ec9c5={'count':0x0,'rows':[]};return db[_0x2ee9('0x1c')][_0x2ee9('0x39')]({'where':{'id':_0x5849b4[_0x2ee9('0x25')]['id']}})[_0x2ee9('0x15')](handleEntityNotFound(_0x1fc5ee,null))['then'](function(_0x2a7ee7){if(_0x2a7ee7){_0x3984e0[_0x2ee9('0x26')]=_[_0x2ee9('0x27')](db[_0x2ee9('0x36')]['rawAttributes']);_0x3984e0[_0x2ee9('0x22')]=_[_0x2ee9('0x27')](_0x5849b4[_0x2ee9('0x22')]);_0x3984e0[_0x2ee9('0x28')]=_[_0x2ee9('0x2a')](_0x3984e0[_0x2ee9('0x26')],_0x3984e0[_0x2ee9('0x22')]);_0x3c0747[_0x2ee9('0x29')]=_[_0x2ee9('0x2a')](_0x3984e0[_0x2ee9('0x26')],qs[_0x2ee9('0x2b')](_0x5849b4[_0x2ee9('0x22')]['fields']));_0x3c0747[_0x2ee9('0x29')]=_0x3c0747[_0x2ee9('0x29')][_0x2ee9('0x2c')]?_0x3c0747[_0x2ee9('0x29')]:_0x3984e0[_0x2ee9('0x26')];if(!_0x5849b4[_0x2ee9('0x22')]['hasOwnProperty'](_0x2ee9('0x3a'))){_0x3c0747['limit']=qs[_0x2ee9('0x11')](_0x5849b4[_0x2ee9('0x22')][_0x2ee9('0x11')]);_0x3c0747[_0x2ee9('0xf')]=qs['offset'](_0x5849b4['query']['offset']);}_0x3c0747[_0x2ee9('0x3b')]=qs[_0x2ee9('0x3c')](_0x5849b4[_0x2ee9('0x22')][_0x2ee9('0x3c')]);_0x3c0747[_0x2ee9('0x3d')]=qs[_0x2ee9('0x28')](_[_0x2ee9('0x3e')](_0x5849b4[_0x2ee9('0x22')],_0x3984e0[_0x2ee9('0x28')]));_0x3c0747['where']['FaxInteractionId']=_0x2a7ee7['id'];if(_0x5849b4[_0x2ee9('0x22')][_0x2ee9('0x3f')]){_0x3c0747[_0x2ee9('0x3d')]=_[_0x2ee9('0x2f')](_0x3c0747[_0x2ee9('0x3d')],{'$or':_[_0x2ee9('0x1b')](_0x3c0747[_0x2ee9('0x29')],function(_0x24d44a){var _0x4e07bd={};_0x4e07bd[_0x24d44a]={'$like':'%'+_0x5849b4[_0x2ee9('0x22')][_0x2ee9('0x3f')]+'%'};return _0x4e07bd;})});}if(_0x5849b4['query'][_0x2ee9('0x40')]){var _0x127566=_0x5849b4[_0x2ee9('0x22')][_0x2ee9('0x40')][_0x2ee9('0x41')](',');var _0x57e3b2={};_0x57e3b2[_0x127566[0x0]]={'$gte':moment(_0x127566[0x1])[_0x2ee9('0x42')](_0x2ee9('0x43'))};_0x3c0747[_0x2ee9('0x3d')]=_[_0x2ee9('0x2f')](_0x3c0747['where'],_0x57e3b2);}_0x3c0747=_[_0x2ee9('0x2f')]({},_0x3c0747,_0x5849b4['options']);return db['FaxMessage'][_0x2ee9('0x12')]({'where':_0x3c0747[_0x2ee9('0x3d')]})[_0x2ee9('0x15')](function(_0x23c2d2){_0x2ec9c5[_0x2ee9('0x12')]=_0x23c2d2;if(_0x5849b4[_0x2ee9('0x22')][_0x2ee9('0x2d')]){_0x3c0747['include']=[{'all':!![]}];}return db[_0x2ee9('0x36')][_0x2ee9('0x20')](_0x3c0747);})['then'](function(_0x368652){_0x2ec9c5[_0x2ee9('0x44')]=_0x368652;return _0x2ec9c5;});}})['then'](respondWithFilteredResult(_0x1fc5ee,_0x3c0747))[_0x2ee9('0x31')](handleError(_0x1fc5ee,null));};exports[_0x2ee9('0x45')]=function(_0x5c4864,_0x35d127){return db[_0x2ee9('0x1c')][_0x2ee9('0x30')]({'where':{'id':_0x5c4864[_0x2ee9('0x25')]['id']}})[_0x2ee9('0x15')](handleEntityNotFound(_0x35d127,null))[_0x2ee9('0x15')](function(_0x579965){if(_0x579965){return _0x579965[_0x2ee9('0x46')](_0x5c4864[_0x2ee9('0x34')][_0x2ee9('0x38')],_[_0x2ee9('0x47')](_0x5c4864['body'],[_0x2ee9('0x38'),'id'])||{})['spread'](function(){return db['Tag'][_0x2ee9('0x20')]({'attributes':['id',_0x2ee9('0x19'),_0x2ee9('0x48')],'where':{'id':_0x5c4864[_0x2ee9('0x34')]['ids']}});})['then'](function(_0x36f5d0){socket[_0x2ee9('0x49')](_0x2ee9('0x4a'),{'id':Number(_0x5c4864['params']['id']),'tags':_0x36f5d0||[]});return{'id':Number(_0x5c4864['params']['id']),'tags':_0x36f5d0||[]};});}})[_0x2ee9('0x15')](respondWithResult(_0x35d127,null))[_0x2ee9('0x31')](handleError(_0x35d127,null));};exports[_0x2ee9('0x4b')]=function(_0x1874b0,_0x59aa6f){return db['FaxInteraction'][_0x2ee9('0x30')]({'where':{'id':_0x1874b0[_0x2ee9('0x25')]['id']}})[_0x2ee9('0x15')](handleEntityNotFound(_0x59aa6f,null))[_0x2ee9('0x15')](function(_0x46f906){if(_0x46f906){return _0x46f906[_0x2ee9('0x4b')](_0x1874b0[_0x2ee9('0x22')][_0x2ee9('0x38')]);}})['then'](respondWithStatusCode(_0x59aa6f,null))[_0x2ee9('0x31')](handleError(_0x59aa6f,null));};exports[_0x2ee9('0x4c')]=function(_0x527a65,_0x29a874){var _0x4cffcf=moment()[_0x2ee9('0x4d')]()[_0x2ee9('0x4e')]();var _0x5b9f37=path[_0x2ee9('0x4f')](config[_0x2ee9('0x50')],_0x2ee9('0x51'),_0x2ee9('0x52'),_0x2ee9('0x53'));var _0x5f3354=path[_0x2ee9('0x4f')](config[_0x2ee9('0x50')],'server',_0x2ee9('0x52'),_0x2ee9('0x54'));var _0x4de2aa=path['join'](_0x5b9f37,_0x4cffcf);var _0x1fc7a6=util[_0x2ee9('0x42')](_0x2ee9('0x55'),_0x527a65['params']['id'],_0x4cffcf);var _0xc1bed=path['join'](_0x5b9f37,_0x1fc7a6);var _0x55bdfb=[];_0x55bdfb[_0x2ee9('0x56')]({'model':db[_0x2ee9('0x57')],'as':_0x2ee9('0x57'),'raw':!![]});var _0x1156ca=[{'model':db[_0x2ee9('0x36')],'as':_0x2ee9('0x58'),'attributes':['id','body',_0x2ee9('0x59')],'include':_0x55bdfb}];return db['FaxInteraction']['find']({'where':{'id':_0x527a65[_0x2ee9('0x25')]['id']},'include':_0x1156ca})[_0x2ee9('0x15')](handleEntityNotFound(_0x29a874,null))[_0x2ee9('0x15')](function(_0x46b100){if(_0x46b100&&_0x46b100[_0x2ee9('0x58')]){var _0x2d7ba8=_0x46b100[_0x2ee9('0x5a')]({'plain':!![]});fs[_0x2ee9('0x5b')](_0x4de2aa);for(var _0x32286b=0x0;_0x32286b<_0x2d7ba8['Messages'][_0x2ee9('0x2c')];_0x32286b++){var _0x985bb4=_0x2d7ba8[_0x2ee9('0x58')][_0x32286b][_0x2ee9('0x57')];if(_0x985bb4){var _0x37d95f=path[_0x2ee9('0x4f')](_0x5f3354,_0x985bb4[_0x2ee9('0x5c')]);if(fs[_0x2ee9('0x5d')](_0x37d95f)){fs[_0x2ee9('0x5e')](_0x37d95f)[_0x2ee9('0x5f')](fs[_0x2ee9('0x60')](path['join'](_0x4de2aa,_0x985bb4['basename'])));}}}return BPromise[_0x2ee9('0x61')]()[_0x2ee9('0x15')](function(){return new BPromise(function(_0x1aa74c,_0x23e09f){zipdir(_0x4de2aa,{'saveTo':_0xc1bed},function(_0x4cd0de,_0x2ce93d){if(_0x4cd0de)return _0x23e09f(_0x4cd0de);return _0x1aa74c(_0x2ce93d);});})[_0x2ee9('0x15')](function(){return new BPromise(function(_0x40ec61,_0x362451){rimraf(_0x4de2aa,function(_0x16b108){if(_0x16b108)_0x362451(_0x16b108);return _0x40ec61();});});})[_0x2ee9('0x15')](function(){return _0x29a874['download'](_0xc1bed,_0x1fc7a6,function(_0x276a55){if(_0x276a55){console[_0x2ee9('0x62')](_0x2ee9('0x63'),_0x276a55);}else{fs[_0x2ee9('0x64')](_0xc1bed);}});});});}else{return _0x29a874['sendStatus'](0xc8);}})['catch'](handleError(_0x29a874,null));};
\ No newline at end of file
index 60bd2c2..9ef975b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793f=['unreadMessages','length','emit','catch','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map'];(function(_0x2a9580,_0x381627){var _0x3414ea=function(_0x50fbf0){while(--_0x50fbf0){_0x2a9580['push'](_0x2a9580['shift']());}};_0x3414ea(++_0x381627);}(_0x793f,0x1d0));var _0xf793=function(_0x3e5a85,_0x41e242){_0x3e5a85=_0x3e5a85-0x0;var _0x499a76=_0x793f[_0x3e5a85];return _0x499a76;};'use strict';var EventEmitter=require(_0xf793('0x0'));var FaxInteraction=require(_0xf793('0x1'))['db'][_0xf793('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xf793('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xf793('0x4')](0x0);var events={'afterCreate':_0xf793('0x5'),'afterUpdate':_0xf793('0x6'),'afterDestroy':_0xf793('0x7')};function emitEvent(_0x393c6b){return function(_0x3fc4af,_0x18f303,_0x4d0a08){_0x3fc4af['getUsers']({'attributes':['id'],'raw':!![]})[_0xf793('0x8')](function(_0x38cadc){_0x3fc4af[_0xf793('0x9')](_0xf793('0xa'),_0x38cadc[_0xf793('0xb')](function(_0x3edd46){return{'id':_0x3edd46['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x3fc4af['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf793('0x8')](function(_0x2005f6){_0x3fc4af[_0xf793('0x9')](_0xf793('0xc'),_0x2005f6[_0xf793('0xd')]);FaxInteractionEvents['emit'](_0x393c6b+':'+_0x3fc4af['id'],_0x3fc4af);FaxInteractionEvents[_0xf793('0xe')](_0x393c6b,_0x3fc4af);_0x4d0a08(null);})[_0xf793('0xf')](_0x4d0a08(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0xf793('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x0660=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','setMaxListeners','save','update','then','setDataValue','findAll','unreadMessages','length','emit'];(function(_0xbbd5cc,_0x5c72d5){var _0x1d7c29=function(_0x1ba8bc){while(--_0x1ba8bc){_0xbbd5cc['push'](_0xbbd5cc['shift']());}};_0x1d7c29(++_0x5c72d5);}(_0x0660,0x120));var _0x0066=function(_0x39a1a2,_0x41df12){_0x39a1a2=_0x39a1a2-0x0;var _0x23371b=_0x0660[_0x39a1a2];return _0x23371b;};'use strict';var EventEmitter=require(_0x0066('0x0'));var FaxInteraction=require(_0x0066('0x1'))['db'][_0x0066('0x2')];var FaxMessage=require(_0x0066('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x0066('0x3')](0x0);var events={'afterCreate':_0x0066('0x4'),'afterUpdate':_0x0066('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5c1476){return function(_0x5064da,_0x496a3f,_0x5709b0){_0x5064da['getUsers']({'attributes':['id'],'raw':!![]})[_0x0066('0x6')](function(_0x491c97){_0x5064da[_0x0066('0x7')]('Users',_0x491c97['map'](function(_0x34e31b){return{'id':_0x34e31b['id']};}));return FaxMessage[_0x0066('0x8')]({'where':{'FaxInteractionId':_0x5064da['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0066('0x6')](function(_0x50bf4a){_0x5064da[_0x0066('0x7')](_0x0066('0x9'),_0x50bf4a[_0x0066('0xa')]);FaxInteractionEvents[_0x0066('0xb')](_0x5c1476+':'+_0x5064da['id'],_0x5064da);FaxInteractionEvents[_0x0066('0xb')](_0x5c1476,_0x5064da);_0x5709b0(null);})['catch'](_0x5709b0(null));};}for(var e in events){if(events[_0x0066('0xc')](e)){var event=events[e];FaxInteraction[_0x0066('0xd')](e,emitEvent(event));}}module[_0x0066('0xe')]=FaxInteractionEvents;
\ No newline at end of file
index 151d5d1..87467d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c54=['FaxInteraction','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','moment','request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','define'];(function(_0x52147d,_0x1aa7c9){var _0x51cc95=function(_0x2778c4){while(--_0x2778c4){_0x52147d['push'](_0x52147d['shift']());}};_0x51cc95(++_0x1aa7c9);}(_0x3c54,0x6c));var _0x43c5=function(_0x3e186d,_0x3621db){_0x3e186d=_0x3e186d-0x0;var _0x8feb7e=_0x3c54[_0x3e186d];return _0x8feb7e;};'use strict';var _=require(_0x43c5('0x0'));var util=require(_0x43c5('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x43c5('0x2'));var BPromise=require('bluebird');var rp=require(_0x43c5('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x43c5('0x4'));var config=require(_0x43c5('0x5'));var attributes=require(_0x43c5('0x6'));module[_0x43c5('0x7')]=function(_0x129511,_0x3f2175){return _0x129511[_0x43c5('0x8')](_0x43c5('0x9'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xb9041d,_0x3f8998,_0x5b4ddf){if(_0xb9041d['changed'](_0x43c5('0xa'))){_0xb9041d[_0x43c5('0xb')]=moment()['format'](_0x43c5('0xc'));}_0x5b4ddf(null,_0xb9041d);}}});};
\ No newline at end of file
+var _0xa9c7=['bluebird','path','exports','define','FaxInteraction','fax_interactions','closedAt','format','lodash','api'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa9c7,0x148));var _0x7a9c=function(_0x1073ad,_0x44bf0b){_0x1073ad=_0x1073ad-0x0;var _0x528474=_0xa9c7[_0x1073ad];return _0x528474;};'use strict';var _=require(_0x7a9c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7a9c('0x1'));var moment=require('moment');var BPromise=require(_0x7a9c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7a9c('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./faxInteraction.attributes');module[_0x7a9c('0x4')]=function(_0x2cb4d6,_0x150e60){return _0x2cb4d6[_0x7a9c('0x5')](_0x7a9c('0x6'),attributes,{'tableName':_0x7a9c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x337afa,_0x436bb4,_0x38c762){if(_0x337afa['changed']('closed')){_0x337afa[_0x7a9c('0x8')]=moment()[_0x7a9c('0x9')]('YYYY-MM-DD\x20HH:mm:ss');}_0x38c762(null,_0x337afa);}}});};
\ No newline at end of file
index f09f3a0..8b1811e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1bf=['../../config/utils','../../config/logger','rpc','../../config/environment','client','defaults','redis','localhost','./faxInteraction.socket','register','request','then','request\x20sent','debug','stringify','error','code','FaxInteraction,\x20%s,\x20%s','message','info','catch','UpdateFaxInteraction','FaxInteraction','update','options','raw','where','find','addTags','body','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb1bf,0x13a));var _0xfb1b=function(_0x249ca5,_0x45c491){_0x249ca5=_0x249ca5-0x0;var _0x627edd=_0xb1bf[_0x249ca5];return _0x627edd;};'use strict';var _=require('lodash');var util=require(_0xfb1b('0x0'));var moment=require(_0xfb1b('0x1'));var BPromise=require(_0xfb1b('0x2'));var rs=require(_0xfb1b('0x3'));var fs=require('fs');var Redis=require(_0xfb1b('0x4'));var db=require(_0xfb1b('0x5'))['db'];var utils=require(_0xfb1b('0x6'));var logger=require(_0xfb1b('0x7'))(_0xfb1b('0x8'));var config=require(_0xfb1b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfb1b('0xa')]['http']({'port':0x232a});config['redis']=_[_0xfb1b('0xb')](config[_0xfb1b('0xc')],{'host':_0xfb1b('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfb1b('0xe'))[_0xfb1b('0xf')](socket);function respondWithRpcPromise(_0x101422,_0x10a4a,_0x50cd6b){return new BPromise(function(_0x38ffc6,_0x786826){return client[_0xfb1b('0x10')](_0x101422,_0x50cd6b)[_0xfb1b('0x11')](function(_0x4ae635){logger['info']('FaxInteraction,\x20%s,\x20%s',_0x10a4a,_0xfb1b('0x12'));logger[_0xfb1b('0x13')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x10a4a,_0xfb1b('0x12'),JSON[_0xfb1b('0x14')](_0x4ae635));if(_0x4ae635[_0xfb1b('0x15')]){if(_0x4ae635['error'][_0xfb1b('0x16')]===0x1f4){logger[_0xfb1b('0x15')](_0xfb1b('0x17'),_0x10a4a,_0x4ae635['error'][_0xfb1b('0x18')]);return _0x786826(_0x4ae635[_0xfb1b('0x15')]['message']);}logger[_0xfb1b('0x15')](_0xfb1b('0x17'),_0x10a4a,_0x4ae635[_0xfb1b('0x15')][_0xfb1b('0x18')]);return _0x38ffc6(_0x4ae635['error'][_0xfb1b('0x18')]);}else{logger[_0xfb1b('0x19')]('FaxInteraction,\x20%s,\x20%s',_0x10a4a,_0xfb1b('0x12'));_0x38ffc6(_0x4ae635['result'][_0xfb1b('0x18')]);}})[_0xfb1b('0x1a')](function(_0x24847f){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x10a4a,_0x24847f);_0x786826(_0x24847f);});});}exports[_0xfb1b('0x1b')]=function(_0x50f4af){var _0x453467=this;return new Promise(function(_0x38e4d1,_0x520ddd){return db[_0xfb1b('0x1c')][_0xfb1b('0x1d')](_0x50f4af['body'],{'raw':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af[_0xfb1b('0x1e')][_0xfb1b('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af['options'][_0xfb1b('0x20')]||null:null,'attributes':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af[_0xfb1b('0x1e')]['attributes']||null:null,'limit':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af[_0xfb1b('0x1e')]['limit']||null:null})[_0xfb1b('0x11')](function(_0x3d3cc4){logger[_0xfb1b('0x19')](_0xfb1b('0x1b'),_0x50f4af);logger['debug'](_0xfb1b('0x1b'),_0x50f4af,JSON[_0xfb1b('0x14')](_0x3d3cc4));_0x38e4d1(_0x3d3cc4);})[_0xfb1b('0x1a')](function(_0x4298dc){logger['error'](_0xfb1b('0x1b'),_0x4298dc[_0xfb1b('0x18')],_0x50f4af);_0x520ddd(_0x453467['error'](0x1f4,_0x4298dc['message']));});});};exports['AddTagsToFaxInteraction']=function(_0x301529){return new Promise(function(_0x2db320,_0x4ac0ea){return db[_0xfb1b('0x1c')][_0xfb1b('0x21')]({'where':_0x301529[_0xfb1b('0x1e')]?_0x301529[_0xfb1b('0x1e')]['where']||null:null})[_0xfb1b('0x11')](function(_0x2d42e4){if(_0x2d42e4){return _0x2d42e4[_0xfb1b('0x22')](_0x301529[_0xfb1b('0x23')][_0xfb1b('0x24')],_[_0xfb1b('0x25')](_0x301529['body'],[_0xfb1b('0x24'),'id'])||{});}})[_0xfb1b('0x26')](function(_0x348cf6){logger[_0xfb1b('0x19')](_0xfb1b('0x27'),_0x301529);logger[_0xfb1b('0x13')](_0xfb1b('0x27'),_0x301529,JSON[_0xfb1b('0x14')](_0x348cf6));_0x2db320(_0x348cf6);})[_0xfb1b('0x1a')](function(_0x175ebc){logger['error'](_0xfb1b('0x27'),_0x175ebc[_0xfb1b('0x18')],_0x301529);_0x4ac0ea(_this[_0xfb1b('0x15')](0x1f4,_0x175ebc['message']));});});};
\ No newline at end of file
+var _0xfe40=['localhost','socket.io-emitter','./faxInteraction.socket','register','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','options','raw','where','attributes','limit','debug','AddTagsToFaxInteraction','find','addTags','body','omit','ids','AddTags','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis'];(function(_0x575287,_0x288709){var _0x224c5f=function(_0x1c7bee){while(--_0x1c7bee){_0x575287['push'](_0x575287['shift']());}};_0x224c5f(++_0x288709);}(_0xfe40,0xb9));var _0x0fe4=function(_0x4b7ac6,_0x454ef8){_0x4b7ac6=_0x4b7ac6-0x0;var _0x3efa64=_0xfe40[_0x4b7ac6];return _0x3efa64;};'use strict';var _=require('lodash');var util=require(_0x0fe4('0x0'));var moment=require(_0x0fe4('0x1'));var BPromise=require(_0x0fe4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0fe4('0x3'));var db=require(_0x0fe4('0x4'))['db'];var utils=require(_0x0fe4('0x5'));var logger=require(_0x0fe4('0x6'))('rpc');var config=require(_0x0fe4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0fe4('0x8')]['http']({'port':0x232a});config[_0x0fe4('0x9')]=_['defaults'](config['redis'],{'host':_0x0fe4('0xa'),'port':0x18eb});var socket=require(_0x0fe4('0xb'))(new Redis(config['redis']));require(_0x0fe4('0xc'))[_0x0fe4('0xd')](socket);function respondWithRpcPromise(_0x5c3bbd,_0x30727d,_0x41a9eb){return new BPromise(function(_0x146b7f,_0x54b594){return client['request'](_0x5c3bbd,_0x41a9eb)[_0x0fe4('0xe')](function(_0x1b3ab6){logger[_0x0fe4('0xf')](_0x0fe4('0x10'),_0x30727d,'request\x20sent');logger['debug']('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x30727d,_0x0fe4('0x11'),JSON[_0x0fe4('0x12')](_0x1b3ab6));if(_0x1b3ab6[_0x0fe4('0x13')]){if(_0x1b3ab6[_0x0fe4('0x13')]['code']===0x1f4){logger[_0x0fe4('0x13')](_0x0fe4('0x10'),_0x30727d,_0x1b3ab6['error'][_0x0fe4('0x14')]);return _0x54b594(_0x1b3ab6[_0x0fe4('0x13')][_0x0fe4('0x14')]);}logger[_0x0fe4('0x13')](_0x0fe4('0x10'),_0x30727d,_0x1b3ab6[_0x0fe4('0x13')]['message']);return _0x146b7f(_0x1b3ab6['error']['message']);}else{logger[_0x0fe4('0xf')](_0x0fe4('0x10'),_0x30727d,_0x0fe4('0x11'));_0x146b7f(_0x1b3ab6[_0x0fe4('0x15')]['message']);}})[_0x0fe4('0x16')](function(_0x57f032){logger['error'](_0x0fe4('0x10'),_0x30727d,_0x57f032);_0x54b594(_0x57f032);});});}exports[_0x0fe4('0x17')]=function(_0x1eb843){var _0x2e42db=this;return new Promise(function(_0x3ddae4,_0x8a9154){return db[_0x0fe4('0x18')][_0x0fe4('0x19')](_0x1eb843['body'],{'raw':_0x1eb843[_0x0fe4('0x1a')]?_0x1eb843[_0x0fe4('0x1a')][_0x0fe4('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1eb843[_0x0fe4('0x1a')]?_0x1eb843['options'][_0x0fe4('0x1c')]||null:null,'attributes':_0x1eb843[_0x0fe4('0x1a')]?_0x1eb843[_0x0fe4('0x1a')][_0x0fe4('0x1d')]||null:null,'limit':_0x1eb843[_0x0fe4('0x1a')]?_0x1eb843[_0x0fe4('0x1a')][_0x0fe4('0x1e')]||null:null})[_0x0fe4('0xe')](function(_0x4f5027){logger[_0x0fe4('0xf')](_0x0fe4('0x17'),_0x1eb843);logger[_0x0fe4('0x1f')](_0x0fe4('0x17'),_0x1eb843,JSON[_0x0fe4('0x12')](_0x4f5027));_0x3ddae4(_0x4f5027);})[_0x0fe4('0x16')](function(_0x4c40b1){logger[_0x0fe4('0x13')](_0x0fe4('0x17'),_0x4c40b1[_0x0fe4('0x14')],_0x1eb843);_0x8a9154(_0x2e42db[_0x0fe4('0x13')](0x1f4,_0x4c40b1[_0x0fe4('0x14')]));});});};exports[_0x0fe4('0x20')]=function(_0xf62f92){return new Promise(function(_0x2c6088,_0x17fc56){return db[_0x0fe4('0x18')][_0x0fe4('0x21')]({'where':_0xf62f92[_0x0fe4('0x1a')]?_0xf62f92[_0x0fe4('0x1a')][_0x0fe4('0x1c')]||null:null})[_0x0fe4('0xe')](function(_0x4b2245){if(_0x4b2245){return _0x4b2245[_0x0fe4('0x22')](_0xf62f92[_0x0fe4('0x23')]['ids'],_[_0x0fe4('0x24')](_0xf62f92[_0x0fe4('0x23')],[_0x0fe4('0x25'),'id'])||{});}})['spread'](function(_0x5ee62a){logger[_0x0fe4('0xf')](_0x0fe4('0x26'),_0xf62f92);logger[_0x0fe4('0x1f')](_0x0fe4('0x26'),_0xf62f92,JSON[_0x0fe4('0x12')](_0x5ee62a));_0x2c6088(_0x5ee62a);})['catch'](function(_0x4e87f5){logger['error'](_0x0fe4('0x26'),_0x4e87f5['message'],_0xf62f92);_0x17fc56(_this[_0x0fe4('0x13')](0x1f4,_0x4e87f5[_0x0fe4('0x14')]));});});};
\ No newline at end of file
index f0113f5..a4cf6d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x832c=['save','remove','update','emit','removeListener','register','faxInteraction:'];(function(_0x1b999d,_0xae4119){var _0x354fe0=function(_0x472ffd){while(--_0x472ffd){_0x1b999d['push'](_0x1b999d['shift']());}};_0x354fe0(++_0xae4119);}(_0x832c,0x134));var _0xc832=function(_0x416ef5,_0x430832){_0x416ef5=_0x416ef5-0x0;var _0x4270a8=_0x832c[_0x416ef5];return _0x4270a8;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0xc832('0x0'),_0xc832('0x1'),_0xc832('0x2')];function createListener(_0x5c2e3d,_0x2cd86c){return function(_0xc81095){_0x2cd86c[_0xc832('0x3')](_0x5c2e3d,_0xc81095);};}function removeListener(_0x4dab41,_0x4d2a94){return function(){FaxInteractionEvents[_0xc832('0x4')](_0x4dab41,_0x4d2a94);};}exports[_0xc832('0x5')]=function(_0xcda3c6){for(var _0x1878c2=0x0,_0x480e26=events['length'];_0x1878c2<_0x480e26;_0x1878c2++){var _0x3fb036=events[_0x1878c2];var _0xef0f9f=createListener(_0xc832('0x6')+_0x3fb036,_0xcda3c6);FaxInteractionEvents['on'](_0x3fb036,_0xef0f9f);}};
\ No newline at end of file
+var _0x7bb1=['save','remove','update','emit','removeListener','register','faxInteraction:'];(function(_0x580057,_0x556c92){var _0x1dea32=function(_0x31eb35){while(--_0x31eb35){_0x580057['push'](_0x580057['shift']());}};_0x1dea32(++_0x556c92);}(_0x7bb1,0xd9));var _0x17bb=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x7bb1[_0x68ee8b];return _0x5148f7;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0x17bb('0x0'),_0x17bb('0x1'),_0x17bb('0x2')];function createListener(_0x4f7ee0,_0x25d60e){return function(_0x2dedbf){_0x25d60e[_0x17bb('0x3')](_0x4f7ee0,_0x2dedbf);};}function removeListener(_0x448a01,_0xdcf423){return function(){FaxInteractionEvents[_0x17bb('0x4')](_0x448a01,_0xdcf423);};}exports[_0x17bb('0x5')]=function(_0x5344eb){for(var _0x3ebbfe=0x0,_0x4d6916=events['length'];_0x3ebbfe<_0x4d6916;_0x3ebbfe++){var _0x2bdcbf=events[_0x3ebbfe];var _0x1ee04f=createListener(_0x17bb('0x6')+_0x2bdcbf,_0x5344eb);FaxInteractionEvents['on'](_0x2bdcbf,_0x1ee04f);}};
\ No newline at end of file
index 8061d91..ab09934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6278=['delete','faxinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','/:id/download','create','post','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','faxinteraction:update','update'];(function(_0x1af482,_0x1af5b7){var _0x7e7580=function(_0x5ed4a7){while(--_0x5ed4a7){_0x1af482['push'](_0x1af482['shift']());}};_0x7e7580(++_0x1af5b7);}(_0x6278,0x7c));var _0x8627=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x6278[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require(_0x8627('0x0'));var util=require(_0x8627('0x1'));var path=require(_0x8627('0x2'));var timeout=require(_0x8627('0x3'));var express=require(_0x8627('0x4'));var router=express[_0x8627('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8627('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8627('0x7'));var controller=require(_0x8627('0x8'));router[_0x8627('0x9')]('/',auth[_0x8627('0xa')](),controller[_0x8627('0xb')]);router[_0x8627('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x8627('0xc')]);router['get'](_0x8627('0xd'),auth['isAuthenticated'](),controller[_0x8627('0xe')]);router[_0x8627('0x9')](_0x8627('0xf'),auth[_0x8627('0xa')](),controller['getMessages']);router[_0x8627('0x9')](_0x8627('0x10'),auth['isAuthenticated'](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x8627('0x11')]);router[_0x8627('0x12')](_0x8627('0xf'),auth[_0x8627('0xa')](),controller['addMessage']);router[_0x8627('0x12')](_0x8627('0x13'),auth[_0x8627('0xa')](),interaction[_0x8627('0x14')](_0x8627('0x15'),_0x8627('0x16')),controller[_0x8627('0x17')]);router['put']('/:id',auth['isAuthenticated'](),interaction[_0x8627('0x14')]('fax',_0x8627('0x18')),controller[_0x8627('0x19')]);router[_0x8627('0x1a')]('/:id',auth[_0x8627('0xa')](),interaction[_0x8627('0x14')]('fax',_0x8627('0x1b')),controller[_0x8627('0x1c')]);router[_0x8627('0x1a')](_0x8627('0x13'),auth[_0x8627('0xa')](),controller['removeTags']);module[_0x8627('0x1d')]=router;
\ No newline at end of file
+var _0xa535=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/download','download','post','create','/:id/messages','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete','destroy','removeTags','exports'];(function(_0x18fe2a,_0x514773){var _0x11c348=function(_0x3054c4){while(--_0x3054c4){_0x18fe2a['push'](_0x18fe2a['shift']());}};_0x11c348(++_0x514773);}(_0xa535,0x1ad));var _0x5a53=function(_0x420e67,_0x31d1a3){_0x420e67=_0x420e67-0x0;var _0x43bab1=_0xa535[_0x420e67];return _0x43bab1;};'use strict';var multer=require(_0x5a53('0x0'));var util=require(_0x5a53('0x1'));var path=require(_0x5a53('0x2'));var timeout=require(_0x5a53('0x3'));var express=require(_0x5a53('0x4'));var router=express[_0x5a53('0x5')]();var fs_extra=require(_0x5a53('0x6'));var auth=require(_0x5a53('0x7'));var interaction=require(_0x5a53('0x8'));var config=require(_0x5a53('0x9'));var controller=require('./faxInteraction.controller');router[_0x5a53('0xa')]('/',auth[_0x5a53('0xb')](),controller[_0x5a53('0xc')]);router[_0x5a53('0xa')](_0x5a53('0xd'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x5a53('0xe'),auth[_0x5a53('0xb')](),controller[_0x5a53('0xf')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0x5a53('0xa')](_0x5a53('0x10'),auth[_0x5a53('0xb')](),controller[_0x5a53('0x11')]);router[_0x5a53('0x12')]('/',auth[_0x5a53('0xb')](),controller[_0x5a53('0x13')]);router[_0x5a53('0x12')](_0x5a53('0x14'),auth[_0x5a53('0xb')](),controller['addMessage']);router[_0x5a53('0x12')](_0x5a53('0x15'),auth[_0x5a53('0xb')](),interaction[_0x5a53('0x16')](_0x5a53('0x17'),_0x5a53('0x18')),controller[_0x5a53('0x19')]);router[_0x5a53('0x1a')]('/:id',auth[_0x5a53('0xb')](),interaction[_0x5a53('0x16')]('fax',_0x5a53('0x1b')),controller[_0x5a53('0x1c')]);router[_0x5a53('0x1d')](_0x5a53('0xe'),auth['isAuthenticated'](),interaction[_0x5a53('0x16')](_0x5a53('0x17'),'faxinteraction:destroy'),controller[_0x5a53('0x1e')]);router[_0x5a53('0x1d')](_0x5a53('0x15'),auth[_0x5a53('0xb')](),controller[_0x5a53('0x1f')]);module[_0x5a53('0x20')]=router;
\ No newline at end of file
index e4396f3..0c1dfc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc3=['TEXT','DATE','sequelize','exports','medium','BOOLEAN','out'];(function(_0x283304,_0x318b3b){var _0x568be4=function(_0x3e8188){while(--_0x3e8188){_0x283304['push'](_0x283304['shift']());}};_0x568be4(++_0x318b3b);}(_0x4bc3,0x16e));var _0x34bc=function(_0x381589,_0x27a707){_0x381589=_0x381589-0x0;var _0x2a075d=_0x4bc3[_0x381589];return _0x2a075d;};'use strict';var Sequelize=require(_0x34bc('0x0'));module[_0x34bc('0x1')]={'body':{'type':Sequelize['TEXT'](_0x34bc('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x34bc('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x34bc('0x4')),'defaultValue':_0x34bc('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x34bc('0x5')],'defaultValue':null},'readAt':{'type':Sequelize[_0x34bc('0x6')]}};
\ No newline at end of file
+var _0xb903=['medium','ENUM','out','DATE','sequelize','exports','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb903,0x185));var _0x3b90=function(_0x5ef0ea,_0xa695a9){_0x5ef0ea=_0x5ef0ea-0x0;var _0x4090c4=_0xb903[_0x5ef0ea];return _0x4090c4;};'use strict';var Sequelize=require(_0x3b90('0x0'));module[_0x3b90('0x1')]={'body':{'type':Sequelize[_0x3b90('0x2')](_0x3b90('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x3b90('0x4')]('in',_0x3b90('0x5')),'defaultValue':_0x3b90('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x3b90('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x3b90('0x6')]}};
\ No newline at end of file
index a605fdc..79311b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaff5=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','FaxMessage,\x20%s,\x20%s','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','stack','name','send','index','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','pick','merge','where','VIRTUAL','options','includeAll','include','FaxMessage','params','keys','length','find','body','destroy','describe','fax-interactions','accept','fax','read','readAt','format','UserId','user','agent','get','FaxInteraction','FaxInteractionId','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','event','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','interface','motionChannel','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','isNil','download','join','root','server','files','attachments','basename','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaff5,0x1a4));var _0x5aff=function(_0x2ef505,_0x210e76){_0x2ef505=_0x2ef505-0x0;var _0x3029d8=_0xaff5[_0x2ef505];return _0x3029d8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5aff('0x0'));var zipdir=require(_0x5aff('0x1'));var jsonpatch=require(_0x5aff('0x2'));var rp=require('request-promise');var moment=require(_0x5aff('0x3'));var BPromise=require(_0x5aff('0x4'));var Mustache=require(_0x5aff('0x5'));var util=require(_0x5aff('0x6'));var path=require(_0x5aff('0x7'));var sox=require(_0x5aff('0x8'));var csv=require(_0x5aff('0x9'));var ejs=require(_0x5aff('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5aff('0xb'));var squel=require(_0x5aff('0xc'));var crypto=require(_0x5aff('0xd'));var jsforce=require(_0x5aff('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5aff('0xf'));var qs=require(_0x5aff('0x10'));var as=require(_0x5aff('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5aff('0x12'))(_0x5aff('0x13'));var utils=require(_0x5aff('0x14'));var config=require(_0x5aff('0x15'));var licenseUtil=require(_0x5aff('0x16'));var db=require(_0x5aff('0x17'))['db'];config['redis']=_[_0x5aff('0x18')](config[_0x5aff('0x19')],{'host':_0x5aff('0x1a'),'port':0x18eb});var socket=require(_0x5aff('0x1b'))(new Redis(config[_0x5aff('0x19')]));require(_0x5aff('0x1c'))[_0x5aff('0x1d')](socket);var jayson=require(_0x5aff('0x1e'));var client=jayson[_0x5aff('0x1f')][_0x5aff('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x5aff('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5bcfc0,_0x250778,_0x44f97b,_0x41d5fb){return new BPromise(function(_0x3eb95b,_0x508f2c){var _0x296af2=_0x41d5fb||client;return _0x296af2[_0x5aff('0x21')](_0x5bcfc0,_0x44f97b)[_0x5aff('0x22')](function(_0x12fb5b){logger['info'](_0x5aff('0x23'),_0x250778,'request\x20sent');logger['debug'](_0x5aff('0x24'),_0x250778,_0x5aff('0x25'),JSON[_0x5aff('0x26')](_0x12fb5b));if(_0x12fb5b[_0x5aff('0x27')]){if(_0x12fb5b[_0x5aff('0x27')][_0x5aff('0x28')]===0x1f4){logger['error'](_0x5aff('0x23'),_0x250778,_0x12fb5b[_0x5aff('0x27')][_0x5aff('0x29')]);return _0x508f2c(_0x12fb5b[_0x5aff('0x27')][_0x5aff('0x29')]);}logger['error'](_0x5aff('0x23'),_0x250778,_0x12fb5b[_0x5aff('0x27')]['message']);return _0x3eb95b(_0x12fb5b[_0x5aff('0x27')]['message']);}else{logger[_0x5aff('0x2a')](_0x5aff('0x23'),_0x250778,'request\x20sent');_0x3eb95b(_0x12fb5b[_0x5aff('0x2b')][_0x5aff('0x29')]);}})[_0x5aff('0x2c')](function(_0x29f4fc){logger[_0x5aff('0x27')](_0x5aff('0x23'),_0x250778,_0x29f4fc);_0x508f2c(_0x29f4fc);});});}function respondWithStatusCode(_0x174b12,_0x35ee9f){_0x35ee9f=_0x35ee9f||0xcc;return function(_0x35d616){if(_0x35d616){return _0x174b12[_0x5aff('0x2d')](_0x35ee9f);}return _0x174b12[_0x5aff('0x2e')](_0x35ee9f)[_0x5aff('0x2f')]();};}function respondWithResult(_0x239416,_0x39bc5e){_0x39bc5e=_0x39bc5e||0xc8;return function(_0x324432){if(_0x324432){return _0x239416['status'](_0x39bc5e)['json'](_0x324432);}};}function respondWithFilteredResult(_0x2bc3f3,_0xbfc9f8){return function(_0x4f99a0){if(_0x4f99a0){var _0x18022e=typeof _0xbfc9f8[_0x5aff('0x30')]===_0x5aff('0x31')&&typeof _0xbfc9f8['limit']===_0x5aff('0x31');var _0x1d2af6=_0x4f99a0[_0x5aff('0x32')];var _0x1a2471=_0x18022e?0x0:_0xbfc9f8[_0x5aff('0x30')];var _0x17d9be=_0x18022e?_0x4f99a0[_0x5aff('0x32')]:_0xbfc9f8[_0x5aff('0x30')]+_0xbfc9f8['limit'];var _0x4b61ea;if(_0x17d9be>=_0x1d2af6){_0x17d9be=_0x1d2af6;_0x4b61ea=0xc8;}else{_0x4b61ea=0xce;}_0x2bc3f3[_0x5aff('0x2e')](_0x4b61ea);return _0x2bc3f3[_0x5aff('0x33')](_0x5aff('0x34'),_0x1a2471+'-'+_0x17d9be+'/'+_0x1d2af6)[_0x5aff('0x35')](_0x4f99a0);}return null;};}function patchUpdates(_0xf2c13c){return function(_0x5f02b1){try{jsonpatch[_0x5aff('0x36')](_0x5f02b1,_0xf2c13c,!![]);}catch(_0xf3fe4f){return BPromise[_0x5aff('0x37')](_0xf3fe4f);}return _0x5f02b1[_0x5aff('0x38')]();};}function saveUpdates(_0x9d2de6,_0x34c7bc){return function(_0x403849){if(_0x403849){return _0x403849[_0x5aff('0x39')](_0x9d2de6)['then'](function(_0xfb7591){return _0xfb7591;});}return null;};}function removeEntity(_0x3c50ea,_0x3f0829){return function(_0x5c7686){if(_0x5c7686){return _0x5c7686['destroy']()['then'](function(){_0x3c50ea[_0x5aff('0x2e')](0xcc)[_0x5aff('0x2f')]();});}};}function handleEntityNotFound(_0x1d4738,_0x2e7d99){return function(_0xe50557){if(!_0xe50557){_0x1d4738[_0x5aff('0x2d')](0x194);}return _0xe50557;};}function handleError(_0x92de64,_0x264b0a){_0x264b0a=_0x264b0a||0x1f4;return function(_0x3f2ee){logger[_0x5aff('0x27')](_0x3f2ee[_0x5aff('0x3a')]);if(_0x3f2ee[_0x5aff('0x3b')]){delete _0x3f2ee['name'];}_0x92de64[_0x5aff('0x2e')](_0x264b0a)[_0x5aff('0x3c')](_0x3f2ee);};}exports[_0x5aff('0x3d')]=function(_0x3cf3eb,_0x45e0a4){var _0x168bf0={},_0x506cde={},_0xfde434={'count':0x0,'rows':[]};var _0x45ed88=_['map'](db['FaxMessage'][_0x5aff('0x3e')],function(_0x35451d){return{'name':_0x35451d['fieldName'],'type':_0x35451d[_0x5aff('0x3f')][_0x5aff('0x40')]};});_0x506cde[_0x5aff('0x41')]=_[_0x5aff('0x42')](_0x45ed88,'name');_0x506cde[_0x5aff('0x43')]=_['keys'](_0x3cf3eb['query']);_0x506cde[_0x5aff('0x44')]=_[_0x5aff('0x45')](_0x506cde[_0x5aff('0x41')],_0x506cde[_0x5aff('0x43')]);_0x168bf0[_0x5aff('0x46')]=_[_0x5aff('0x45')](_0x506cde[_0x5aff('0x41')],qs[_0x5aff('0x47')](_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x47')]));_0x168bf0['attributes']=_0x168bf0[_0x5aff('0x46')]['length']?_0x168bf0['attributes']:_0x506cde['model'];if(!_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x48')](_0x5aff('0x49'))){_0x168bf0[_0x5aff('0x4a')]=qs[_0x5aff('0x4a')](_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x4a')]);_0x168bf0[_0x5aff('0x30')]=qs[_0x5aff('0x30')](_0x3cf3eb[_0x5aff('0x43')]['offset']);}_0x168bf0['order']=qs['sort'](_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x4b')]);_0x168bf0['where']=qs[_0x5aff('0x44')](_[_0x5aff('0x4c')](_0x3cf3eb['query'],_0x506cde['filters']),_0x45ed88);if(_0x3cf3eb[_0x5aff('0x43')]['filter']){_0x168bf0['where']=_[_0x5aff('0x4d')](_0x168bf0[_0x5aff('0x4e')],{'$or':_[_0x5aff('0x42')](_0x45ed88,function(_0x52ff54){if(_0x52ff54['type']!==_0x5aff('0x4f')){var _0x3a9982={};_0x3a9982[_0x52ff54[_0x5aff('0x3b')]]={'$like':'%'+_0x3cf3eb['query']['filter']+'%'};return _0x3a9982;}})});}_0x168bf0=_[_0x5aff('0x4d')]({},_0x168bf0,_0x3cf3eb[_0x5aff('0x50')]);var _0x41acc0={'where':_0x168bf0[_0x5aff('0x4e')]};return db['FaxMessage'][_0x5aff('0x32')](_0x41acc0)[_0x5aff('0x22')](function(_0x422ed9){_0xfde434[_0x5aff('0x32')]=_0x422ed9;if(_0x3cf3eb['query'][_0x5aff('0x51')]){_0x168bf0[_0x5aff('0x52')]=[{'all':!![]}];}return db[_0x5aff('0x53')]['findAll'](_0x168bf0);})['then'](function(_0x1dec0b){_0xfde434['rows']=_0x1dec0b;return _0xfde434;})['then'](respondWithFilteredResult(_0x45e0a4,_0x168bf0))['catch'](handleError(_0x45e0a4,null));};exports['show']=function(_0x20e32c,_0x2ac198){var _0x5cdc76={'raw':!![],'where':{'id':_0x20e32c[_0x5aff('0x54')]['id']}},_0x5f4f57={};_0x5f4f57[_0x5aff('0x41')]=_[_0x5aff('0x55')](db['FaxMessage'][_0x5aff('0x3e')]);_0x5f4f57[_0x5aff('0x43')]=_[_0x5aff('0x55')](_0x20e32c[_0x5aff('0x43')]);_0x5f4f57[_0x5aff('0x44')]=_['intersection'](_0x5f4f57[_0x5aff('0x41')],_0x5f4f57[_0x5aff('0x43')]);_0x5cdc76['attributes']=_['intersection'](_0x5f4f57['model'],qs[_0x5aff('0x47')](_0x20e32c[_0x5aff('0x43')]['fields']));_0x5cdc76[_0x5aff('0x46')]=_0x5cdc76['attributes'][_0x5aff('0x56')]?_0x5cdc76[_0x5aff('0x46')]:_0x5f4f57[_0x5aff('0x41')];if(_0x20e32c[_0x5aff('0x43')][_0x5aff('0x51')]){_0x5cdc76['include']=[{'all':!![]}];}_0x5cdc76=_[_0x5aff('0x4d')]({},_0x5cdc76,_0x20e32c['options']);return db[_0x5aff('0x53')][_0x5aff('0x57')](_0x5cdc76)[_0x5aff('0x22')](handleEntityNotFound(_0x2ac198,null))['then'](respondWithResult(_0x2ac198,null))[_0x5aff('0x2c')](handleError(_0x2ac198,null));};exports[_0x5aff('0x39')]=function(_0x4ccdbb,_0x26aff4){if(_0x4ccdbb[_0x5aff('0x58')]['id']){delete _0x4ccdbb['body']['id'];}return db[_0x5aff('0x53')]['find']({'where':{'id':_0x4ccdbb['params']['id']}})[_0x5aff('0x22')](handleEntityNotFound(_0x26aff4,null))[_0x5aff('0x22')](saveUpdates(_0x4ccdbb['body'],null))['then'](respondWithResult(_0x26aff4,null))[_0x5aff('0x2c')](handleError(_0x26aff4,null));};exports[_0x5aff('0x59')]=function(_0x54294f,_0x4a57e3){return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0x54294f[_0x5aff('0x54')]['id']}})[_0x5aff('0x22')](handleEntityNotFound(_0x4a57e3,null))[_0x5aff('0x22')](removeEntity(_0x4a57e3,null))[_0x5aff('0x2c')](handleError(_0x4a57e3,null));};exports[_0x5aff('0x5a')]=function(_0x34064a,_0x5c6b86){return db['FaxMessage'][_0x5aff('0x5a')]()[_0x5aff('0x22')](respondWithResult(_0x5c6b86,null))[_0x5aff('0x2c')](handleError(_0x5c6b86,null));};var interaction_log=require(_0x5aff('0x12'))(_0x5aff('0x5b'));exports[_0x5aff('0x5c')]=function(_0xc18139,_0x2ce40f,_0x5cdcbf){var _0x465410={'agent':{},'channel':_0x5aff('0x5d')};if(_0xc18139['body']['id']){delete _0xc18139[_0x5aff('0x58')]['id'];}_0xc18139[_0x5aff('0x58')][_0x5aff('0x5e')]=!![];_0xc18139[_0x5aff('0x58')][_0x5aff('0x5f')]=moment()[_0x5aff('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')]=_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')]||_0xc18139[_0x5aff('0x62')]['id'];_0x465410[_0x5aff('0x63')]['id']=_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')];return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0xc18139[_0x5aff('0x54')]['id'],'UserId':null}})[_0x5aff('0x22')](handleEntityNotFound(_0x2ce40f,null))[_0x5aff('0x22')](saveUpdates(_0xc18139['body'],null))['then'](function(_0x2f1256){if(_0x2f1256){_0x465410[_0x5aff('0x29')]=_0x2f1256[_0x5aff('0x64')]({'plain':!![]});return db[_0x5aff('0x65')][_0x5aff('0x57')]({'where':{'id':_0x2f1256[_0x5aff('0x66')]}});}return null;})[_0x5aff('0x22')](handleEntityNotFound(_0x2ce40f,null))[_0x5aff('0x22')](function(_0x194846){if(_0x194846){return _0x194846[_0x5aff('0x39')]({'UserId':_0xc18139['body'][_0x5aff('0x61')],'read1stAt':_['isNil'](_0x194846[_0x5aff('0x67')])?moment()[_0x5aff('0x60')](_0x5aff('0x68')):undefined});}return null;})['then'](function(_0x360dff){if(_0x360dff){_0x465410[_0x5aff('0x69')]=_0x360dff[_0x5aff('0x64')]({'plain':!![]});interaction_log[_0x5aff('0x2a')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xc18139['user']['id'],_0xc18139[_0x5aff('0x62')][_0x5aff('0x3b')],_0xc18139[_0x5aff('0x62')][_0x5aff('0x6a')],_0x465410['interaction']['id'],_0xc18139[_0x5aff('0x58')]?JSON[_0x5aff('0x26')](_0xc18139[_0x5aff('0x58')]):_0x5aff('0x6b'));return respondWithRpcPromise(_0x5aff('0x6c'),_0x5aff('0x6d'),_0x465410);}return null;})['then'](function(_0x532b6c){var _0x3346b5=_0x5aff('0x6e')+_0x532b6c['message'][_0x5aff('0x6f')];return db[_0x5aff('0x70')][_0x5aff('0x43')](_0x3346b5,{'type':db[_0x5aff('0x71')][_0x5aff('0x72')][_0x5aff('0x73')],'raw':!![]})[_0x5aff('0x22')](function(_0x4585f4){return _0x4585f4;});})[_0x5aff('0x22')](function(_0x3d35a0){if(_0x3d35a0){_0x465410[_0x5aff('0x29')][_0x5aff('0x74')]=_0x3d35a0[0x0];if(!_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')])return;return db[_0x5aff('0x75')][_0x5aff('0x57')]({'where':{'id':_0xc18139[_0x5aff('0x58')]['UserId'],'role':'agent'},'attributes':['id',_0x5aff('0x3b'),_0x5aff('0x76'),_0x5aff('0x77'),_0x5aff('0x78')],'raw':!![]});}return null;})['then'](function(_0x5c1867){if(!_0x5c1867)return null;_0x465410['message'][_0x5aff('0x63')]=_0x5c1867;return _0x465410;})[_0x5aff('0x22')](function(_0x5e995e){if(_0x5e995e){if(_0xc18139[_0x5aff('0x58')][_0x5aff('0x79')]){_0x465410[_0x5aff('0x29')]['interface']=util[_0x5aff('0x60')](_0x5aff('0x7a'),_0xc18139[_0x5aff('0x62')][_0x5aff('0x3b')]);_0x465410[_0x5aff('0x29')]['channel']=_0x465410[_0x5aff('0x7b')];_0x465410['message']['motionChannel']=_0x465410['channel'];_0x465410['message'][_0x5aff('0x7c')]=_0x5aff('0x5c');return respondWithRpcPromise(_0x5aff('0x7d'),_0x5aff('0x7d'),{'event':'acceptmessage','message':_0x465410[_0x5aff('0x29')]},client9002)[_0x5aff('0x22')](function(){return _0x465410;});}return _0x465410;}return null;})[_0x5aff('0x22')](respondWithResult(_0x2ce40f,null))[_0x5aff('0x2c')](handleError(_0x2ce40f,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x5aff('0x37')]=function(_0x4b459a,_0x486da9,_0x70768f){var _0x267622={'agent':{},'channel':_0x5aff('0x5d')};if(_0x4b459a[_0x5aff('0x58')]['id']){delete _0x4b459a[_0x5aff('0x58')]['id'];}_0x4b459a['body'][_0x5aff('0x61')]=_0x4b459a['body'][_0x5aff('0x61')]||_0x4b459a['user']['id'];_0x267622[_0x5aff('0x63')]['id']=_0x4b459a[_0x5aff('0x58')][_0x5aff('0x61')];return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0x4b459a[_0x5aff('0x54')]['id'],'UserId':null}})[_0x5aff('0x22')](handleEntityNotFound(_0x486da9,null))[_0x5aff('0x22')](function(_0x4d6023){if(_0x4d6023){_0x267622[_0x5aff('0x29')]=_0x4d6023[_0x5aff('0x64')]({'plain':!![]});return db[_0x5aff('0x65')]['find']({'where':{'id':_0x4d6023['FaxInteractionId']}});}return null;})[_0x5aff('0x22')](handleEntityNotFound(_0x486da9,null))[_0x5aff('0x22')](function(_0x2ca2c9){if(_0x2ca2c9){_0x267622[_0x5aff('0x69')]=_0x2ca2c9[_0x5aff('0x64')]({'plain':!![]});interaction_log['info'](_0x5aff('0x7e'),_0x4b459a['user']['id'],_0x4b459a['user'][_0x5aff('0x3b')],_0x4b459a[_0x5aff('0x62')][_0x5aff('0x6a')],_0x267622[_0x5aff('0x69')]['id'],_0x4b459a[_0x5aff('0x58')]?JSON['stringify'](_0x4b459a[_0x5aff('0x58')]):_0x5aff('0x6b'));return respondWithRpcPromise(_0x5aff('0x7f'),_0x5aff('0x80'),_0x267622);}return null;})[_0x5aff('0x22')](function(_0x5b1ee1){var _0x17bea2='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5b1ee1[_0x5aff('0x29')]['ContactId'];return db['sequelize'][_0x5aff('0x43')](_0x17bea2,{'type':db[_0x5aff('0x71')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x51b9d2){return _0x51b9d2;});})[_0x5aff('0x22')](function(_0x8a4c8f){if(_0x8a4c8f){_0x267622[_0x5aff('0x29')][_0x5aff('0x74')]=_0x8a4c8f[0x0];if(!_0x4b459a[_0x5aff('0x58')]['UserId'])return;return db[_0x5aff('0x75')][_0x5aff('0x57')]({'where':{'id':_0x4b459a[_0x5aff('0x58')]['UserId'],'role':'agent'},'attributes':['id','name',_0x5aff('0x76'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x2dd817){if(!_0x2dd817)return null;_0x267622[_0x5aff('0x29')][_0x5aff('0x63')]=_0x2dd817;return _0x267622;})['then'](function(_0x48fab9){if(_0x48fab9){_0x48fab9[_0x5aff('0x29')][_0x5aff('0x81')]=util[_0x5aff('0x60')](_0x5aff('0x7a'),_0x4b459a[_0x5aff('0x62')][_0x5aff('0x3b')]);_0x48fab9[_0x5aff('0x29')][_0x5aff('0x7b')]=_0x267622[_0x5aff('0x7b')];_0x48fab9[_0x5aff('0x29')][_0x5aff('0x82')]=_0x267622[_0x5aff('0x7b')];_0x48fab9[_0x5aff('0x29')][_0x5aff('0x7c')]=_0x5aff('0x37');respondWithRpcPromise(_0x5aff('0x7d'),_0x5aff('0x7d'),{'event':_0x5aff('0x83'),'message':_0x48fab9[_0x5aff('0x29')]},client9002);return _0x267622;}return null;})['then'](respondWithResult(_0x486da9,null))['catch'](handleError(_0x486da9,null));};exports['create']=function(_0x9dfda7,_0x32f947){var _0x15140f;return db['FaxMessage'][_0x5aff('0x84')](_0x9dfda7[_0x5aff('0x58')],{})[_0x5aff('0x22')](function(_0x3808fb){_0x15140f=_0x3808fb;return db[_0x5aff('0x85')][_0x5aff('0x86')]({'where':{'id':_0x15140f[_0x5aff('0x6f')]}});})[_0x5aff('0x22')](function(_0x4a1b68){if(_['isNil'](_0x4a1b68)){return;}else{_0x15140f[_0x5aff('0x5d')]=_0x4a1b68[_0x5aff('0x5d')];return db[_0x5aff('0x87')]['findOne']({'where':{'id':_0x15140f[_0x5aff('0x88')]}});}})['then'](function(_0x454989){return respondWithRpcPromise('SendFax',_0x5aff('0x89'),{'FaxAccountId':_['isNil'](_0x9dfda7['body'])?undefined:_0x9dfda7['body']['FaxAccountId'],'path':_[_0x5aff('0x8a')](_0x454989)?undefined:util['format']('/var/opt/motion2/server/files/attachments/%s',_0x454989['basename']),'fax':_['isNil'](_0x15140f['fax'])?undefined:_0x15140f[_0x5aff('0x5d')],'AttachmentId':_0x15140f[_0x5aff('0x88')]},client9002);})[_0x5aff('0x22')](respondWithResult(_0x32f947,0xc9))[_0x5aff('0x2c')](handleError(_0x32f947,null));};exports[_0x5aff('0x8b')]=function(_0x5606db,_0x412fd9){var _0x116ae2=path[_0x5aff('0x8c')](config[_0x5aff('0x8d')],_0x5aff('0x8e'),_0x5aff('0x8f'),_0x5aff('0x90'));return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0x5606db['params']['id']},'include':[{'model':db[_0x5aff('0x87')],'as':'Attachment'}]})['then'](handleEntityNotFound(_0x412fd9,null))[_0x5aff('0x22')](function(_0x341947){if(_0x341947){return _0x412fd9[_0x5aff('0x8b')](path[_0x5aff('0x8c')](_0x116ae2,_0x341947[_0x5aff('0x87')][_0x5aff('0x91')]));}})['catch'](handleError(_0x412fd9,null));};
\ No newline at end of file
+var _0x2b71=['describe','fax-interactions','accept','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','internal','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','../../config/logger','fax','get','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','event','reject','rejectmessage','create','findOne','Attachment','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','basename','join','root','files','attachments','download','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','redis','defaults','localhost','./faxMessage.socket','register','jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','apply','save','update','destroy','stack','name','index','map','FaxMessage','rawAttributes','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','include','findAll','rows','show','includeAll','find','body','params'];(function(_0x233cb1,_0x8ca9a2){var _0x29ee7e=function(_0x20e277){while(--_0x20e277){_0x233cb1['push'](_0x233cb1['shift']());}};_0x29ee7e(++_0x8ca9a2);}(_0x2b71,0x155));var _0x12b7=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x2b71[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0x12b7('0x0'));var rimraf=require(_0x12b7('0x1'));var zipdir=require(_0x12b7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x12b7('0x3'));var moment=require(_0x12b7('0x4'));var BPromise=require(_0x12b7('0x5'));var Mustache=require(_0x12b7('0x6'));var util=require(_0x12b7('0x7'));var path=require(_0x12b7('0x8'));var sox=require(_0x12b7('0x9'));var csv=require('to-csv');var ejs=require(_0x12b7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x12b7('0xb'));var squel=require(_0x12b7('0xc'));var crypto=require(_0x12b7('0xd'));var jsforce=require(_0x12b7('0xe'));var deskjs=require(_0x12b7('0xf'));var toCsv=require(_0x12b7('0x10'));var querystring=require(_0x12b7('0x11'));var Papa=require(_0x12b7('0x12'));var Redis=require(_0x12b7('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x12b7('0x14'));var hardwareService=require(_0x12b7('0x15'));var logger=require('../../config/logger')(_0x12b7('0x16'));var utils=require('../../config/utils');var config=require(_0x12b7('0x17'));var licenseUtil=require(_0x12b7('0x18'));var db=require('../../mysqldb')['db'];config[_0x12b7('0x19')]=_[_0x12b7('0x1a')](config['redis'],{'host':_0x12b7('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x12b7('0x1c'))[_0x12b7('0x1d')](socket);var jayson=require(_0x12b7('0x1e'));var client=jayson[_0x12b7('0x1f')][_0x12b7('0x20')]({'port':0x232c});var client9002=jayson[_0x12b7('0x1f')][_0x12b7('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x34ac01,_0x50d9be,_0x4f0594,_0x895005){return new BPromise(function(_0x2c8b76,_0x1cfd04){var _0x11c1bf=_0x895005||client;return _0x11c1bf[_0x12b7('0x21')](_0x34ac01,_0x4f0594)[_0x12b7('0x22')](function(_0x3a3944){logger[_0x12b7('0x23')](_0x12b7('0x24'),_0x50d9be,'request\x20sent');logger['debug'](_0x12b7('0x25'),_0x50d9be,_0x12b7('0x26'),JSON[_0x12b7('0x27')](_0x3a3944));if(_0x3a3944[_0x12b7('0x28')]){if(_0x3a3944[_0x12b7('0x28')][_0x12b7('0x29')]===0x1f4){logger['error'](_0x12b7('0x24'),_0x50d9be,_0x3a3944[_0x12b7('0x28')][_0x12b7('0x2a')]);return _0x1cfd04(_0x3a3944[_0x12b7('0x28')]['message']);}logger['error'](_0x12b7('0x24'),_0x50d9be,_0x3a3944['error']['message']);return _0x2c8b76(_0x3a3944[_0x12b7('0x28')][_0x12b7('0x2a')]);}else{logger[_0x12b7('0x23')](_0x12b7('0x24'),_0x50d9be,_0x12b7('0x26'));_0x2c8b76(_0x3a3944[_0x12b7('0x2b')][_0x12b7('0x2a')]);}})[_0x12b7('0x2c')](function(_0x14226f){logger[_0x12b7('0x28')](_0x12b7('0x24'),_0x50d9be,_0x14226f);_0x1cfd04(_0x14226f);});});}function respondWithStatusCode(_0x19dd72,_0x5b6a06){_0x5b6a06=_0x5b6a06||0xcc;return function(_0x2f2409){if(_0x2f2409){return _0x19dd72[_0x12b7('0x2d')](_0x5b6a06);}return _0x19dd72[_0x12b7('0x2e')](_0x5b6a06)[_0x12b7('0x2f')]();};}function respondWithResult(_0x1b71fc,_0x164a8e){_0x164a8e=_0x164a8e||0xc8;return function(_0x363f22){if(_0x363f22){return _0x1b71fc['status'](_0x164a8e)[_0x12b7('0x30')](_0x363f22);}};}function respondWithFilteredResult(_0x57f972,_0x1fa8f6){return function(_0x2b266c){if(_0x2b266c){var _0x5603de=typeof _0x1fa8f6[_0x12b7('0x31')]===_0x12b7('0x32')&&typeof _0x1fa8f6[_0x12b7('0x33')]===_0x12b7('0x32');var _0x54fd9f=_0x2b266c[_0x12b7('0x34')];var _0x237e1a=_0x5603de?0x0:_0x1fa8f6[_0x12b7('0x31')];var _0x49e822=_0x5603de?_0x2b266c[_0x12b7('0x34')]:_0x1fa8f6[_0x12b7('0x31')]+_0x1fa8f6[_0x12b7('0x33')];var _0x42df34;if(_0x49e822>=_0x54fd9f){_0x49e822=_0x54fd9f;_0x42df34=0xc8;}else{_0x42df34=0xce;}_0x57f972['status'](_0x42df34);return _0x57f972['set']('Content-Range',_0x237e1a+'-'+_0x49e822+'/'+_0x54fd9f)[_0x12b7('0x30')](_0x2b266c);}return null;};}function patchUpdates(_0x3222ed){return function(_0x17fd07){try{jsonpatch[_0x12b7('0x35')](_0x17fd07,_0x3222ed,!![]);}catch(_0x33eee6){return BPromise['reject'](_0x33eee6);}return _0x17fd07[_0x12b7('0x36')]();};}function saveUpdates(_0x1bf6fb,_0x22c287){return function(_0x12a090){if(_0x12a090){return _0x12a090[_0x12b7('0x37')](_0x1bf6fb)['then'](function(_0xa1ddf1){return _0xa1ddf1;});}return null;};}function removeEntity(_0x39eefe,_0x4f6451){return function(_0x403d32){if(_0x403d32){return _0x403d32[_0x12b7('0x38')]()[_0x12b7('0x22')](function(){_0x39eefe[_0x12b7('0x2e')](0xcc)[_0x12b7('0x2f')]();});}};}function handleEntityNotFound(_0x256bba,_0x5365d0){return function(_0x3bedcf){if(!_0x3bedcf){_0x256bba[_0x12b7('0x2d')](0x194);}return _0x3bedcf;};}function handleError(_0x738060,_0x54c28f){_0x54c28f=_0x54c28f||0x1f4;return function(_0x2a1b51){logger[_0x12b7('0x28')](_0x2a1b51[_0x12b7('0x39')]);if(_0x2a1b51[_0x12b7('0x3a')]){delete _0x2a1b51[_0x12b7('0x3a')];}_0x738060['status'](_0x54c28f)['send'](_0x2a1b51);};}exports[_0x12b7('0x3b')]=function(_0x4987da,_0x227294){var _0x1e07b7={},_0x23db0f={},_0xc84631={'count':0x0,'rows':[]};var _0x4af550=_[_0x12b7('0x3c')](db[_0x12b7('0x3d')][_0x12b7('0x3e')],function(_0x435723){return{'name':_0x435723['fieldName'],'type':_0x435723[_0x12b7('0x3f')][_0x12b7('0x40')]};});_0x23db0f['model']=_[_0x12b7('0x3c')](_0x4af550,_0x12b7('0x3a'));_0x23db0f[_0x12b7('0x41')]=_[_0x12b7('0x42')](_0x4987da[_0x12b7('0x41')]);_0x23db0f[_0x12b7('0x43')]=_['intersection'](_0x23db0f[_0x12b7('0x44')],_0x23db0f[_0x12b7('0x41')]);_0x1e07b7[_0x12b7('0x45')]=_[_0x12b7('0x46')](_0x23db0f[_0x12b7('0x44')],qs[_0x12b7('0x47')](_0x4987da['query'][_0x12b7('0x47')]));_0x1e07b7[_0x12b7('0x45')]=_0x1e07b7[_0x12b7('0x45')][_0x12b7('0x48')]?_0x1e07b7['attributes']:_0x23db0f[_0x12b7('0x44')];if(!_0x4987da[_0x12b7('0x41')][_0x12b7('0x49')]('nolimit')){_0x1e07b7[_0x12b7('0x33')]=qs[_0x12b7('0x33')](_0x4987da[_0x12b7('0x41')][_0x12b7('0x33')]);_0x1e07b7['offset']=qs['offset'](_0x4987da[_0x12b7('0x41')][_0x12b7('0x31')]);}_0x1e07b7[_0x12b7('0x4a')]=qs['sort'](_0x4987da['query'][_0x12b7('0x4b')]);_0x1e07b7[_0x12b7('0x4c')]=qs[_0x12b7('0x43')](_['pick'](_0x4987da['query'],_0x23db0f[_0x12b7('0x43')]),_0x4af550);if(_0x4987da[_0x12b7('0x41')][_0x12b7('0x4d')]){_0x1e07b7[_0x12b7('0x4c')]=_[_0x12b7('0x4e')](_0x1e07b7['where'],{'$or':_[_0x12b7('0x3c')](_0x4af550,function(_0x5b65b7){if(_0x5b65b7['type']!=='VIRTUAL'){var _0x821a6c={};_0x821a6c[_0x5b65b7[_0x12b7('0x3a')]]={'$like':'%'+_0x4987da[_0x12b7('0x41')][_0x12b7('0x4d')]+'%'};return _0x821a6c;}})});}_0x1e07b7=_[_0x12b7('0x4e')]({},_0x1e07b7,_0x4987da[_0x12b7('0x4f')]);var _0x3b2aab={'where':_0x1e07b7[_0x12b7('0x4c')]};return db[_0x12b7('0x3d')][_0x12b7('0x34')](_0x3b2aab)['then'](function(_0x5f198e){_0xc84631[_0x12b7('0x34')]=_0x5f198e;if(_0x4987da[_0x12b7('0x41')]['includeAll']){_0x1e07b7[_0x12b7('0x50')]=[{'all':!![]}];}return db[_0x12b7('0x3d')][_0x12b7('0x51')](_0x1e07b7);})[_0x12b7('0x22')](function(_0x25affb){_0xc84631[_0x12b7('0x52')]=_0x25affb;return _0xc84631;})[_0x12b7('0x22')](respondWithFilteredResult(_0x227294,_0x1e07b7))['catch'](handleError(_0x227294,null));};exports[_0x12b7('0x53')]=function(_0x2182f5,_0x52948f){var _0x44eb51={'raw':!![],'where':{'id':_0x2182f5['params']['id']}},_0x2d7f87={};_0x2d7f87[_0x12b7('0x44')]=_['keys'](db['FaxMessage'][_0x12b7('0x3e')]);_0x2d7f87['query']=_[_0x12b7('0x42')](_0x2182f5[_0x12b7('0x41')]);_0x2d7f87[_0x12b7('0x43')]=_[_0x12b7('0x46')](_0x2d7f87['model'],_0x2d7f87['query']);_0x44eb51[_0x12b7('0x45')]=_[_0x12b7('0x46')](_0x2d7f87[_0x12b7('0x44')],qs[_0x12b7('0x47')](_0x2182f5['query']['fields']));_0x44eb51[_0x12b7('0x45')]=_0x44eb51[_0x12b7('0x45')]['length']?_0x44eb51[_0x12b7('0x45')]:_0x2d7f87[_0x12b7('0x44')];if(_0x2182f5['query'][_0x12b7('0x54')]){_0x44eb51[_0x12b7('0x50')]=[{'all':!![]}];}_0x44eb51=_[_0x12b7('0x4e')]({},_0x44eb51,_0x2182f5['options']);return db['FaxMessage'][_0x12b7('0x55')](_0x44eb51)[_0x12b7('0x22')](handleEntityNotFound(_0x52948f,null))[_0x12b7('0x22')](respondWithResult(_0x52948f,null))[_0x12b7('0x2c')](handleError(_0x52948f,null));};exports[_0x12b7('0x37')]=function(_0x323fe0,_0x58e294){if(_0x323fe0['body']['id']){delete _0x323fe0[_0x12b7('0x56')]['id'];}return db[_0x12b7('0x3d')][_0x12b7('0x55')]({'where':{'id':_0x323fe0[_0x12b7('0x57')]['id']}})['then'](handleEntityNotFound(_0x58e294,null))[_0x12b7('0x22')](saveUpdates(_0x323fe0[_0x12b7('0x56')],null))[_0x12b7('0x22')](respondWithResult(_0x58e294,null))[_0x12b7('0x2c')](handleError(_0x58e294,null));};exports[_0x12b7('0x38')]=function(_0x3ae2b1,_0x664ffb){return db[_0x12b7('0x3d')]['find']({'where':{'id':_0x3ae2b1[_0x12b7('0x57')]['id']}})[_0x12b7('0x22')](handleEntityNotFound(_0x664ffb,null))[_0x12b7('0x22')](removeEntity(_0x664ffb,null))[_0x12b7('0x2c')](handleError(_0x664ffb,null));};exports['describe']=function(_0x334f28,_0x22e24d){return db[_0x12b7('0x3d')][_0x12b7('0x58')]()[_0x12b7('0x22')](respondWithResult(_0x22e24d,null))[_0x12b7('0x2c')](handleError(_0x22e24d,null));};var interaction_log=require('../../config/logger')(_0x12b7('0x59'));exports[_0x12b7('0x5a')]=function(_0x48fcc4,_0x415d92,_0x47a905){var _0x5b211d={'agent':{},'channel':'fax'};if(_0x48fcc4[_0x12b7('0x56')]['id']){delete _0x48fcc4['body']['id'];}_0x48fcc4['body']['read']=!![];_0x48fcc4[_0x12b7('0x56')]['readAt']=moment()[_0x12b7('0x5b')](_0x12b7('0x5c'));_0x48fcc4[_0x12b7('0x56')]['UserId']=_0x48fcc4[_0x12b7('0x56')][_0x12b7('0x5d')]||_0x48fcc4[_0x12b7('0x5e')]['id'];_0x5b211d['agent']['id']=_0x48fcc4[_0x12b7('0x56')][_0x12b7('0x5d')];return db[_0x12b7('0x3d')][_0x12b7('0x55')]({'where':{'id':_0x48fcc4[_0x12b7('0x57')]['id'],'UserId':null}})[_0x12b7('0x22')](handleEntityNotFound(_0x415d92,null))[_0x12b7('0x22')](saveUpdates(_0x48fcc4['body'],null))[_0x12b7('0x22')](function(_0x1a3a77){if(_0x1a3a77){_0x5b211d[_0x12b7('0x2a')]=_0x1a3a77['get']({'plain':!![]});return db['FaxInteraction'][_0x12b7('0x55')]({'where':{'id':_0x1a3a77[_0x12b7('0x5f')]}});}return null;})[_0x12b7('0x22')](handleEntityNotFound(_0x415d92,null))[_0x12b7('0x22')](function(_0xa71dc1){if(_0xa71dc1){return _0xa71dc1[_0x12b7('0x37')]({'UserId':_0x48fcc4[_0x12b7('0x56')]['UserId'],'read1stAt':_[_0x12b7('0x60')](_0xa71dc1[_0x12b7('0x61')])?moment()['format'](_0x12b7('0x5c')):undefined});}return null;})[_0x12b7('0x22')](function(_0x294e90){if(_0x294e90){_0x5b211d[_0x12b7('0x62')]=_0x294e90['get']({'plain':!![]});interaction_log[_0x12b7('0x23')](_0x12b7('0x63'),_0x48fcc4[_0x12b7('0x5e')]['id'],_0x48fcc4[_0x12b7('0x5e')][_0x12b7('0x3a')],_0x48fcc4['user'][_0x12b7('0x64')],_0x5b211d[_0x12b7('0x62')]['id'],_0x48fcc4['body']?JSON['stringify'](_0x48fcc4[_0x12b7('0x56')]):_0x12b7('0x65'));return respondWithRpcPromise(_0x12b7('0x66'),_0x12b7('0x67'),_0x5b211d);}return null;})[_0x12b7('0x22')](function(_0x713e38){var _0x82f067=_0x12b7('0x68')+_0x713e38[_0x12b7('0x2a')][_0x12b7('0x69')];return db[_0x12b7('0x6a')][_0x12b7('0x41')](_0x82f067,{'type':db[_0x12b7('0x6b')][_0x12b7('0x6c')][_0x12b7('0x6d')],'raw':!![]})[_0x12b7('0x22')](function(_0x45a403){return _0x45a403;});})[_0x12b7('0x22')](function(_0x138344){if(_0x138344){_0x5b211d['message'][_0x12b7('0x6e')]=_0x138344[0x0];if(!_0x48fcc4[_0x12b7('0x56')][_0x12b7('0x5d')])return;return db[_0x12b7('0x6f')][_0x12b7('0x55')]({'where':{'id':_0x48fcc4['body'][_0x12b7('0x5d')],'role':_0x12b7('0x70')},'attributes':['id',_0x12b7('0x3a'),_0x12b7('0x71'),_0x12b7('0x72'),_0x12b7('0x73')],'raw':!![]});}return null;})['then'](function(_0x576fa2){if(!_0x576fa2)return null;_0x5b211d['message'][_0x12b7('0x70')]=_0x576fa2;return _0x5b211d;})[_0x12b7('0x22')](function(_0x4f05b7){if(_0x4f05b7){if(_0x48fcc4[_0x12b7('0x56')]['manual']){_0x5b211d[_0x12b7('0x2a')][_0x12b7('0x74')]=util[_0x12b7('0x5b')](_0x12b7('0x75'),_0x48fcc4[_0x12b7('0x5e')][_0x12b7('0x3a')]);_0x5b211d['message'][_0x12b7('0x76')]=_0x5b211d[_0x12b7('0x76')];_0x5b211d[_0x12b7('0x2a')][_0x12b7('0x77')]=_0x5b211d[_0x12b7('0x76')];_0x5b211d[_0x12b7('0x2a')]['event']=_0x12b7('0x5a');return respondWithRpcPromise(_0x12b7('0x78'),_0x12b7('0x78'),{'event':_0x12b7('0x79'),'message':_0x5b211d[_0x12b7('0x2a')]},client9002)[_0x12b7('0x22')](function(){return _0x5b211d;});}return _0x5b211d;}return null;})['then'](respondWithResult(_0x415d92,null))['catch'](handleError(_0x415d92,null));};var interaction_log=require(_0x12b7('0x7a'))(_0x12b7('0x59'));exports['reject']=function(_0x4a251b,_0xcb5e3b,_0x3f008e){var _0x24e389={'agent':{},'channel':_0x12b7('0x7b')};if(_0x4a251b[_0x12b7('0x56')]['id']){delete _0x4a251b['body']['id'];}_0x4a251b[_0x12b7('0x56')]['UserId']=_0x4a251b['body'][_0x12b7('0x5d')]||_0x4a251b[_0x12b7('0x5e')]['id'];_0x24e389[_0x12b7('0x70')]['id']=_0x4a251b[_0x12b7('0x56')]['UserId'];return db[_0x12b7('0x3d')]['find']({'where':{'id':_0x4a251b[_0x12b7('0x57')]['id'],'UserId':null}})[_0x12b7('0x22')](handleEntityNotFound(_0xcb5e3b,null))[_0x12b7('0x22')](function(_0x5084ff){if(_0x5084ff){_0x24e389[_0x12b7('0x2a')]=_0x5084ff[_0x12b7('0x7c')]({'plain':!![]});return db[_0x12b7('0x7d')]['find']({'where':{'id':_0x5084ff[_0x12b7('0x5f')]}});}return null;})[_0x12b7('0x22')](handleEntityNotFound(_0xcb5e3b,null))['then'](function(_0x3579c9){if(_0x3579c9){_0x24e389[_0x12b7('0x62')]=_0x3579c9[_0x12b7('0x7c')]({'plain':!![]});interaction_log['info'](_0x12b7('0x7e'),_0x4a251b[_0x12b7('0x5e')]['id'],_0x4a251b[_0x12b7('0x5e')][_0x12b7('0x3a')],_0x4a251b['user'][_0x12b7('0x64')],_0x24e389['interaction']['id'],_0x4a251b[_0x12b7('0x56')]?JSON[_0x12b7('0x27')](_0x4a251b['body']):_0x12b7('0x65'));return respondWithRpcPromise(_0x12b7('0x7f'),'rejectMessage',_0x24e389);}return null;})[_0x12b7('0x22')](function(_0x74cdcc){var _0x3d93ce='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x74cdcc[_0x12b7('0x2a')]['ContactId'];return db[_0x12b7('0x6a')][_0x12b7('0x41')](_0x3d93ce,{'type':db[_0x12b7('0x6b')][_0x12b7('0x6c')][_0x12b7('0x6d')],'raw':!![]})[_0x12b7('0x22')](function(_0xe773db){return _0xe773db;});})[_0x12b7('0x22')](function(_0x392f74){if(_0x392f74){_0x24e389[_0x12b7('0x2a')][_0x12b7('0x6e')]=_0x392f74[0x0];if(!_0x4a251b['body'][_0x12b7('0x5d')])return;return db[_0x12b7('0x6f')][_0x12b7('0x55')]({'where':{'id':_0x4a251b[_0x12b7('0x56')]['UserId'],'role':'agent'},'attributes':['id',_0x12b7('0x3a'),_0x12b7('0x71'),'email',_0x12b7('0x73')],'raw':!![]});}return null;})['then'](function(_0x997929){if(!_0x997929)return null;_0x24e389['message'][_0x12b7('0x70')]=_0x997929;return _0x24e389;})[_0x12b7('0x22')](function(_0x18f0db){if(_0x18f0db){_0x18f0db['message'][_0x12b7('0x74')]=util[_0x12b7('0x5b')](_0x12b7('0x75'),_0x4a251b[_0x12b7('0x5e')][_0x12b7('0x3a')]);_0x18f0db[_0x12b7('0x2a')][_0x12b7('0x76')]=_0x24e389[_0x12b7('0x76')];_0x18f0db[_0x12b7('0x2a')]['motionChannel']=_0x24e389['channel'];_0x18f0db[_0x12b7('0x2a')][_0x12b7('0x80')]=_0x12b7('0x81');respondWithRpcPromise(_0x12b7('0x78'),_0x12b7('0x78'),{'event':_0x12b7('0x82'),'message':_0x18f0db[_0x12b7('0x2a')]},client9002);return _0x24e389;}return null;})['then'](respondWithResult(_0xcb5e3b,null))[_0x12b7('0x2c')](handleError(_0xcb5e3b,null));};exports[_0x12b7('0x83')]=function(_0x2b401e,_0x3914bb){var _0x52d92b;return db['FaxMessage'][_0x12b7('0x83')](_0x2b401e[_0x12b7('0x56')],{})[_0x12b7('0x22')](function(_0x2bda1c){_0x52d92b=_0x2bda1c;return db['CmContact'][_0x12b7('0x84')]({'where':{'id':_0x52d92b[_0x12b7('0x69')]}});})['then'](function(_0x479601){if(_[_0x12b7('0x60')](_0x479601)){return;}else{_0x52d92b[_0x12b7('0x7b')]=_0x479601[_0x12b7('0x7b')];return db[_0x12b7('0x85')][_0x12b7('0x84')]({'where':{'id':_0x52d92b[_0x12b7('0x86')]}});}})['then'](function(_0x48301f){return respondWithRpcPromise(_0x12b7('0x87'),_0x12b7('0x87'),{'FaxAccountId':_[_0x12b7('0x60')](_0x2b401e[_0x12b7('0x56')])?undefined:_0x2b401e[_0x12b7('0x56')]['FaxAccountId'],'path':_[_0x12b7('0x60')](_0x48301f)?undefined:util[_0x12b7('0x5b')](_0x12b7('0x88'),_0x48301f[_0x12b7('0x89')]),'fax':_[_0x12b7('0x60')](_0x52d92b['fax'])?undefined:_0x52d92b[_0x12b7('0x7b')],'AttachmentId':_0x52d92b[_0x12b7('0x86')]},client9002);})[_0x12b7('0x22')](respondWithResult(_0x3914bb,0xc9))[_0x12b7('0x2c')](handleError(_0x3914bb,null));};exports['download']=function(_0x4eb034,_0x8fe6b6){var _0x319865=path[_0x12b7('0x8a')](config[_0x12b7('0x8b')],'server',_0x12b7('0x8c'),_0x12b7('0x8d'));return db['FaxMessage'][_0x12b7('0x55')]({'where':{'id':_0x4eb034[_0x12b7('0x57')]['id']},'include':[{'model':db['Attachment'],'as':_0x12b7('0x85')}]})[_0x12b7('0x22')](handleEntityNotFound(_0x8fe6b6,null))[_0x12b7('0x22')](function(_0x296aeb){if(_0x296aeb){return _0x8fe6b6[_0x12b7('0x8e')](path[_0x12b7('0x8a')](_0x319865,_0x296aeb['Attachment']['basename']));}})[_0x12b7('0x2c')](handleError(_0x8fe6b6,null));};
\ No newline at end of file
index fa7284b..819b34d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e6=['update','remove','emit','hasOwnProperty','hook','exports','events','FaxMessage'];(function(_0x4b9d59,_0xb7c319){var _0x28adad=function(_0xeb248a){while(--_0xeb248a){_0x4b9d59['push'](_0x4b9d59['shift']());}};_0x28adad(++_0xb7c319);}(_0x39e6,0x9e));var _0x639e=function(_0x2b2758,_0x2296b3){_0x2b2758=_0x2b2758-0x0;var _0x4353ba=_0x39e6[_0x2b2758];return _0x4353ba;};'use strict';var EventEmitter=require(_0x639e('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x639e('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x639e('0x2'),'afterDestroy':_0x639e('0x3')};function emitEvent(_0x529394){return function(_0x467229,_0x207d6a,_0x199e72){FaxMessageEvents[_0x639e('0x4')](_0x529394+':'+_0x467229['id'],_0x467229);FaxMessageEvents[_0x639e('0x4')](_0x529394,_0x467229);_0x199e72(null);};}for(var e in events){if(events[_0x639e('0x5')](e)){var event=events[e];FaxMessage[_0x639e('0x6')](e,emitEvent(event));}}module[_0x639e('0x7')]=FaxMessageEvents;
\ No newline at end of file
+var _0x9536=['../../mysqldb','FaxMessage','setMaxListeners','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9536,0x179));var _0x6953=function(_0x274dd7,_0x2e6051){_0x274dd7=_0x274dd7-0x0;var _0x148829=_0x9536[_0x274dd7];return _0x148829;};'use strict';var EventEmitter=require(_0x6953('0x0'));var FaxMessage=require(_0x6953('0x1'))['db'][_0x6953('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x6953('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6953('0x4'),'afterDestroy':'remove'};function emitEvent(_0x42fb54){return function(_0x3c32c7,_0x1dee7c,_0x3ba964){FaxMessageEvents[_0x6953('0x5')](_0x42fb54+':'+_0x3c32c7['id'],_0x3c32c7);FaxMessageEvents['emit'](_0x42fb54,_0x3c32c7);_0x3ba964(null);};}for(var e in events){if(events[_0x6953('0x6')](e)){var event=events[e];FaxMessage[_0x6953('0x7')](e,emitEvent(event));}}module[_0x6953('0x8')]=FaxMessageEvents;
\ No newline at end of file
index a9b25ef..a040a25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8af4=['get','direction','toLowerCase','secret','isNil','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','path','rimraf','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','body','FULLTEXT','models'];(function(_0x4ce239,_0x2a0d64){var _0x52d4e5=function(_0x1d8817){while(--_0x1d8817){_0x4ce239['push'](_0x4ce239['shift']());}};_0x52d4e5(++_0x2a0d64);}(_0x8af4,0x111));var _0x48af=function(_0x3fb05b,_0x473ea3){_0x3fb05b=_0x3fb05b-0x0;var _0x36c70b=_0x8af4[_0x3fb05b];return _0x36c70b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x48af('0x0'))('api');var moment=require(_0x48af('0x1'));var BPromise=require(_0x48af('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x48af('0x3'));var rimraf=require(_0x48af('0x4'));var config=require('../../config/environment');var attributes=require(_0x48af('0x5'));module[_0x48af('0x6')]=function(_0x3a3cff,_0x3e9619){return _0x3a3cff[_0x48af('0x7')](_0x48af('0x8'),attributes,{'tableName':_0x48af('0x9'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x48af('0xa')],'type':_0x48af('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x12b9ea,_0x318f58,_0x4eaa39){var _0x31301f=_0x3a3cff[_0x48af('0xc')];var _0x428786=_0x12b9ea[_0x48af('0xd')]({'plain':!![]});if(_0x428786[_0x48af('0xe')]['toLowerCase']()==='in'||_0x428786['direction'][_0x48af('0xf')]()==='out'&&!_0x428786[_0x48af('0x10')]&&!_[_0x48af('0x11')](_0x428786['UserId'])){_0x31301f['FaxInteraction'][_0x48af('0x12')]({'where':{'id':_0x428786[_0x48af('0x13')]}})[_0x48af('0x14')](function(_0x42524a){if(_0x42524a){_0x42524a[_0x48af('0x15')]({'lastMsgAt':_0x428786[_0x48af('0x16')],'lastMsgDirection':_0x428786[_0x48af('0xe')]['toLowerCase']()});}})[_0x48af('0x17')](function(_0x51d17f){console[_0x48af('0x18')](_0x51d17f);});}_0x4eaa39();}},'charset':'utf8mb4','collate':_0x48af('0x19')});};
\ No newline at end of file
+var _0x727b=['FaxMessage','fti_fax_messages','body','FULLTEXT','get','toLowerCase','direction','out','secret','isNil','UserId','FaxInteraction','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports'];(function(_0x27c754,_0xc88e75){var _0x4239d9=function(_0x145120){while(--_0x145120){_0x27c754['push'](_0x27c754['shift']());}};_0x4239d9(++_0xc88e75);}(_0x727b,0x18b));var _0xb727=function(_0x2cb477,_0x132ebb){_0x2cb477=_0x2cb477-0x0;var _0x5f209d=_0x727b[_0x2cb477];return _0x5f209d;};'use strict';var _=require(_0xb727('0x0'));var util=require(_0xb727('0x1'));var logger=require(_0xb727('0x2'))('api');var moment=require(_0xb727('0x3'));var BPromise=require('bluebird');var rp=require(_0xb727('0x4'));var fs=require('fs');var path=require(_0xb727('0x5'));var rimraf=require(_0xb727('0x6'));var config=require(_0xb727('0x7'));var attributes=require(_0xb727('0x8'));module[_0xb727('0x9')]=function(_0x39b2cc,_0x7dd4e4){return _0x39b2cc['define'](_0xb727('0xa'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0xb727('0xb'),'fields':[_0xb727('0xc')],'type':_0xb727('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3da12a,_0x5b67d0,_0x55b6cb){var _0x656cfb=_0x39b2cc['models'];var _0x50dfaa=_0x3da12a[_0xb727('0xe')]({'plain':!![]});if(_0x50dfaa['direction'][_0xb727('0xf')]()==='in'||_0x50dfaa[_0xb727('0x10')][_0xb727('0xf')]()===_0xb727('0x11')&&!_0x50dfaa[_0xb727('0x12')]&&!_[_0xb727('0x13')](_0x50dfaa[_0xb727('0x14')])){_0x656cfb[_0xb727('0x15')]['findOne']({'where':{'id':_0x50dfaa['FaxInteractionId']}})['then'](function(_0x5d0e3f){if(_0x5d0e3f){_0x5d0e3f[_0xb727('0x16')]({'lastMsgAt':_0x50dfaa[_0xb727('0x17')],'lastMsgDirection':_0x50dfaa[_0xb727('0x10')]['toLowerCase']()});}})[_0xb727('0x18')](function(_0x48e5fd){console[_0xb727('0x19')](_0x48e5fd);});}_0x55b6cb();}},'charset':_0xb727('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 7db306d..68c7fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','./faxMessage.socket','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','then','UpdateFaxMessage','update','where','attributes','limit','lodash','util'];(function(_0x76364b,_0xc07164){var _0x2589cf=function(_0x132869){while(--_0x132869){_0x76364b['push'](_0x76364b['shift']());}};_0x2589cf(++_0xc07164);}(_0x55e0,0xdc));var _0x055e=function(_0x28f228,_0x182029){_0x28f228=_0x28f228-0x0;var _0x2ea11a=_0x55e0[_0x28f228];return _0x2ea11a;};'use strict';var _=require(_0x055e('0x0'));var util=require(_0x055e('0x1'));var moment=require(_0x055e('0x2'));var BPromise=require(_0x055e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x055e('0x4'))['db'];var utils=require(_0x055e('0x5'));var logger=require(_0x055e('0x6'))(_0x055e('0x7'));var config=require(_0x055e('0x8'));var jayson=require(_0x055e('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x055e('0xa')]=_['defaults'](config[_0x055e('0xa')],{'host':_0x055e('0xb'),'port':0x18eb});var socket=require(_0x055e('0xc'))(new Redis(config[_0x055e('0xa')]));require(_0x055e('0xd'))['register'](socket);function respondWithRpcPromise(_0x40779c,_0xd67814,_0xb816c){return new BPromise(function(_0xa0d384,_0x238068){return client['request'](_0x40779c,_0xb816c)['then'](function(_0x187cce){logger['info'](_0x055e('0xe'),_0xd67814,_0x055e('0xf'));logger[_0x055e('0x10')](_0x055e('0x11'),_0xd67814,_0x055e('0xf'),JSON[_0x055e('0x12')](_0x187cce));if(_0x187cce[_0x055e('0x13')]){if(_0x187cce['error'][_0x055e('0x14')]===0x1f4){logger[_0x055e('0x13')](_0x055e('0xe'),_0xd67814,_0x187cce[_0x055e('0x13')][_0x055e('0x15')]);return _0x238068(_0x187cce['error'][_0x055e('0x15')]);}logger[_0x055e('0x13')](_0x055e('0xe'),_0xd67814,_0x187cce['error'][_0x055e('0x15')]);return _0xa0d384(_0x187cce[_0x055e('0x13')][_0x055e('0x15')]);}else{logger[_0x055e('0x16')](_0x055e('0xe'),_0xd67814,'request\x20sent');_0xa0d384(_0x187cce[_0x055e('0x17')][_0x055e('0x15')]);}})[_0x055e('0x18')](function(_0x2ed6fb){logger['error'](_0x055e('0xe'),_0xd67814,_0x2ed6fb);_0x238068(_0x2ed6fb);});});}exports[_0x055e('0x19')]=function(_0x58e44a){var _0xe2b7b5=this;return new Promise(function(_0x4412f9,_0x10258f){return db[_0x055e('0x1a')][_0x055e('0x1b')](_0x58e44a[_0x055e('0x1c')],{'raw':_0x58e44a['options']?_0x58e44a[_0x055e('0x1d')][_0x055e('0x1e')]===undefined?!![]:![]:!![]})[_0x055e('0x1f')](function(_0x5930ff){logger[_0x055e('0x16')](_0x055e('0x19'),_0x58e44a);logger[_0x055e('0x10')](_0x055e('0x19'),_0x58e44a,JSON['stringify'](_0x5930ff));_0x4412f9(_0x5930ff);})[_0x055e('0x18')](function(_0x56c372){logger[_0x055e('0x13')](_0x055e('0x19'),_0x56c372[_0x055e('0x15')],_0x58e44a);_0x10258f(_0xe2b7b5[_0x055e('0x13')](0x1f4,_0x56c372[_0x055e('0x15')]));});});};exports[_0x055e('0x20')]=function(_0x58caf9){var _0x2fb49b=this;return new Promise(function(_0x1f90a9,_0x2a82f8){return db['FaxMessage'][_0x055e('0x21')](_0x58caf9[_0x055e('0x1c')],{'raw':_0x58caf9[_0x055e('0x1d')]?_0x58caf9[_0x055e('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x58caf9[_0x055e('0x1d')]?_0x58caf9['options'][_0x055e('0x22')]||null:null,'attributes':_0x58caf9[_0x055e('0x1d')]?_0x58caf9[_0x055e('0x1d')][_0x055e('0x23')]||null:null,'limit':_0x58caf9[_0x055e('0x1d')]?_0x58caf9['options'][_0x055e('0x24')]||null:null})[_0x055e('0x1f')](function(_0x293062){logger[_0x055e('0x16')](_0x055e('0x20'),_0x58caf9);logger[_0x055e('0x10')](_0x055e('0x20'),_0x58caf9,JSON[_0x055e('0x12')](_0x293062));_0x1f90a9(_0x293062);})['catch'](function(_0x26d1c2){logger[_0x055e('0x13')]('UpdateFaxMessage',_0x26d1c2[_0x055e('0x15')],_0x58caf9);_0x2a82f8(_0x2fb49b[_0x055e('0x13')](0x1f4,_0x26d1c2[_0x055e('0x15')]));});});};
\ No newline at end of file
+var _0x70e0=['FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','CreateFaxMessage','FaxMessage','create','body','options','stringify','catch','update','raw','where','limit','UpdateFaxMessage','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info'];(function(_0x4cce3d,_0x1e84ea){var _0x39b6df=function(_0x2ca86b){while(--_0x2ca86b){_0x4cce3d['push'](_0x4cce3d['shift']());}};_0x39b6df(++_0x1e84ea);}(_0x70e0,0x17b));var _0x070e=function(_0x310321,_0x52c494){_0x310321=_0x310321-0x0;var _0x279c51=_0x70e0[_0x310321];return _0x279c51;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x070e('0x9')],{'host':_0x070e('0xa'),'port':0x18eb});var socket=require(_0x070e('0xb'))(new Redis(config[_0x070e('0x9')]));require(_0x070e('0xc'))[_0x070e('0xd')](socket);function respondWithRpcPromise(_0x11ffa8,_0x4e99e6,_0x49b2fb){return new BPromise(function(_0x50f4eb,_0x2e3e5e){return client[_0x070e('0xe')](_0x11ffa8,_0x49b2fb)[_0x070e('0xf')](function(_0xa927a2){logger[_0x070e('0x10')](_0x070e('0x11'),_0x4e99e6,_0x070e('0x12'));logger[_0x070e('0x13')](_0x070e('0x14'),_0x4e99e6,_0x070e('0x12'),JSON['stringify'](_0xa927a2));if(_0xa927a2['error']){if(_0xa927a2[_0x070e('0x15')]['code']===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x4e99e6,_0xa927a2[_0x070e('0x15')][_0x070e('0x16')]);return _0x2e3e5e(_0xa927a2['error']['message']);}logger[_0x070e('0x15')](_0x070e('0x11'),_0x4e99e6,_0xa927a2[_0x070e('0x15')][_0x070e('0x16')]);return _0x50f4eb(_0xa927a2['error']['message']);}else{logger[_0x070e('0x10')](_0x070e('0x11'),_0x4e99e6,_0x070e('0x12'));_0x50f4eb(_0xa927a2[_0x070e('0x17')][_0x070e('0x16')]);}})['catch'](function(_0x3938b5){logger[_0x070e('0x15')](_0x070e('0x11'),_0x4e99e6,_0x3938b5);_0x2e3e5e(_0x3938b5);});});}exports[_0x070e('0x18')]=function(_0x259893){var _0x5c16fd=this;return new Promise(function(_0x5b2f48,_0x4e958f){return db[_0x070e('0x19')][_0x070e('0x1a')](_0x259893[_0x070e('0x1b')],{'raw':_0x259893['options']?_0x259893[_0x070e('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x070e('0xf')](function(_0x3f6985){logger[_0x070e('0x10')](_0x070e('0x18'),_0x259893);logger[_0x070e('0x13')](_0x070e('0x18'),_0x259893,JSON[_0x070e('0x1d')](_0x3f6985));_0x5b2f48(_0x3f6985);})[_0x070e('0x1e')](function(_0x595c7e){logger[_0x070e('0x15')](_0x070e('0x18'),_0x595c7e[_0x070e('0x16')],_0x259893);_0x4e958f(_0x5c16fd['error'](0x1f4,_0x595c7e[_0x070e('0x16')]));});});};exports['UpdateFaxMessage']=function(_0x4a2dbd){var _0x2ccbd7=this;return new Promise(function(_0x25f6e,_0x41deb1){return db[_0x070e('0x19')][_0x070e('0x1f')](_0x4a2dbd['body'],{'raw':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x21')]||null:null,'attributes':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')]['attributes']||null:null,'limit':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x22')]||null:null})['then'](function(_0x5c5f0d){logger[_0x070e('0x10')](_0x070e('0x23'),_0x4a2dbd);logger[_0x070e('0x13')]('UpdateFaxMessage',_0x4a2dbd,JSON[_0x070e('0x1d')](_0x5c5f0d));_0x25f6e(_0x5c5f0d);})[_0x070e('0x1e')](function(_0x3a9425){logger[_0x070e('0x15')]('UpdateFaxMessage',_0x3a9425['message'],_0x4a2dbd);_0x41deb1(_0x2ccbd7['error'](0x1f4,_0x3a9425['message']));});});};
\ No newline at end of file
index ca688d0..ca73c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d63=['update','removeListener','register','length','save','remove'];(function(_0x284e50,_0xb0e470){var _0x76ba8f=function(_0x48dcea){while(--_0x48dcea){_0x284e50['push'](_0x284e50['shift']());}};_0x76ba8f(++_0xb0e470);}(_0x1d63,0xbe));var _0x31d6=function(_0x2a6173,_0x1eaed5){_0x2a6173=_0x2a6173-0x0;var _0x3747ea=_0x1d63[_0x2a6173];return _0x3747ea;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x31d6('0x0'),_0x31d6('0x1'),_0x31d6('0x2')];function createListener(_0xeebbd1,_0x551a57){return function(_0x6b4539){_0x551a57['emit'](_0xeebbd1,_0x6b4539);};}function removeListener(_0x3c024a,_0x238188){return function(){FaxMessageEvents[_0x31d6('0x3')](_0x3c024a,_0x238188);};}exports[_0x31d6('0x4')]=function(_0x5eaab5){for(var _0x3fe210=0x0,_0x4cc975=events[_0x31d6('0x5')];_0x3fe210<_0x4cc975;_0x3fe210++){var _0x598e49=events[_0x3fe210];var _0x3f17f0=createListener('faxMessage:'+_0x598e49,_0x5eaab5);FaxMessageEvents['on'](_0x598e49,_0x3f17f0);}};
\ No newline at end of file
+var _0x2dfd=['remove','update','emit','removeListener','register','length','faxMessage:','./faxMessage.events','save'];(function(_0x49da4b,_0x499d0f){var _0xb28919=function(_0x8453a5){while(--_0x8453a5){_0x49da4b['push'](_0x49da4b['shift']());}};_0xb28919(++_0x499d0f);}(_0x2dfd,0x1ed));var _0xd2df=function(_0x2ae446,_0x48554f){_0x2ae446=_0x2ae446-0x0;var _0x3d8b90=_0x2dfd[_0x2ae446];return _0x3d8b90;};'use strict';var FaxMessageEvents=require(_0xd2df('0x0'));var events=[_0xd2df('0x1'),_0xd2df('0x2'),_0xd2df('0x3')];function createListener(_0x4cbefb,_0x37bc4e){return function(_0x5f188e){_0x37bc4e[_0xd2df('0x4')](_0x4cbefb,_0x5f188e);};}function removeListener(_0x5abc32,_0x88087b){return function(){FaxMessageEvents[_0xd2df('0x5')](_0x5abc32,_0x88087b);};}exports[_0xd2df('0x6')]=function(_0x1c972f){for(var _0x450f13=0x0,_0x12f873=events[_0xd2df('0x7')];_0x450f13<_0x12f873;_0x450f13++){var _0x52f993=events[_0x450f13];var _0x24e644=createListener(_0xd2df('0x8')+_0x52f993,_0x1c972f);FaxMessageEvents['on'](_0x52f993,_0x24e644);}};
\ No newline at end of file
index 1b40cca..da1c4b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593e=['../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','show','download','post','fax','faxmessage:create','create','put','/:id','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x1fe8be,_0x5e7860){var _0x1449bb=function(_0x17b23e){while(--_0x17b23e){_0x1fe8be['push'](_0x1fe8be['shift']());}};_0x1449bb(++_0x5e7860);}(_0x593e,0xcb));var _0xe593=function(_0x83dbda,_0x3eae21){_0x83dbda=_0x83dbda-0x0;var _0x223395=_0x593e[_0x83dbda];return _0x223395;};'use strict';var multer=require(_0xe593('0x0'));var util=require(_0xe593('0x1'));var path=require(_0xe593('0x2'));var timeout=require(_0xe593('0x3'));var express=require(_0xe593('0x4'));var router=express[_0xe593('0x5')]();var fs_extra=require(_0xe593('0x6'));var auth=require(_0xe593('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xe593('0x8'));var controller=require(_0xe593('0x9'));router[_0xe593('0xa')]('/',auth[_0xe593('0xb')](),controller[_0xe593('0xc')]);router[_0xe593('0xa')](_0xe593('0xd'),auth[_0xe593('0xb')](),controller[_0xe593('0xe')]);router[_0xe593('0xa')]('/:id',auth[_0xe593('0xb')](),controller[_0xe593('0xf')]);router[_0xe593('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0xe593('0x10')]);router[_0xe593('0x11')]('/',auth[_0xe593('0xb')](),interaction['tracked'](_0xe593('0x12'),_0xe593('0x13')),controller[_0xe593('0x14')]);router[_0xe593('0x15')](_0xe593('0x16'),auth[_0xe593('0xb')](),controller[_0xe593('0x17')]);router[_0xe593('0x15')](_0xe593('0x18'),auth[_0xe593('0xb')](),controller['accept']);router[_0xe593('0x15')](_0xe593('0x19'),auth['isAuthenticated'](),controller[_0xe593('0x1a')]);router[_0xe593('0x1b')]('/:id',auth[_0xe593('0xb')](),controller[_0xe593('0x1c')]);module[_0xe593('0x1d')]=router;
\ No newline at end of file
+var _0xec56=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','tracked','fax','create','put','update','/:id/accept','reject','delete','exports','multer','connect-timeout','express'];(function(_0x3afbe2,_0x3d9554){var _0x4fae52=function(_0x167c84){while(--_0x167c84){_0x3afbe2['push'](_0x3afbe2['shift']());}};_0x4fae52(++_0x3d9554);}(_0xec56,0x1bd));var _0x6ec5=function(_0x4b87bd,_0x497d23){_0x4b87bd=_0x4b87bd-0x0;var _0x14fd8b=_0xec56[_0x4b87bd];return _0x14fd8b;};'use strict';var multer=require(_0x6ec5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6ec5('0x1'));var express=require(_0x6ec5('0x2'));var router=express[_0x6ec5('0x3')]();var fs_extra=require(_0x6ec5('0x4'));var auth=require(_0x6ec5('0x5'));var interaction=require(_0x6ec5('0x6'));var config=require(_0x6ec5('0x7'));var controller=require(_0x6ec5('0x8'));router[_0x6ec5('0x9')]('/',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xb')]);router[_0x6ec5('0x9')](_0x6ec5('0xc'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xd')]);router[_0x6ec5('0x9')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xf')]);router['get'](_0x6ec5('0x10'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x11')]);router[_0x6ec5('0x12')]('/',auth[_0x6ec5('0xa')](),interaction[_0x6ec5('0x13')](_0x6ec5('0x14'),'faxmessage:create'),controller[_0x6ec5('0x15')]);router[_0x6ec5('0x16')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x17')]);router[_0x6ec5('0x16')](_0x6ec5('0x18'),auth[_0x6ec5('0xa')](),controller['accept']);router[_0x6ec5('0x16')]('/:id/reject',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x19')]);router[_0x6ec5('0x1a')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller['destroy']);module[_0x6ec5('0x1b')]=router;
\ No newline at end of file
index 06cbf47..ddebf1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb35e=['ENUM','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb35e,0x96));var _0xeb35=function(_0x2b6bad,_0x520ad2){_0x2b6bad=_0x2b6bad-0x0;var _0x4efc2b=_0xb35e[_0x2b6bad];return _0x4efc2b;};'use strict';var Sequelize=require('sequelize');module[_0xeb35('0x0')]={'name':{'type':Sequelize[_0xeb35('0x1')],'unique':_0xeb35('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xeb35('0x1')]},'timeout':{'type':Sequelize[_0xeb35('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xeb35('0x4')]('rrmemory',_0xeb35('0x5'),_0xeb35('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xeb35('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0127=['STRING','name','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x253f0e,_0x3d2fe7){var _0x5d231a=function(_0x1f7f33){while(--_0x1f7f33){_0x253f0e['push'](_0x253f0e['shift']());}};_0x5d231a(++_0x3d2fe7);}(_0x0127,0xa0));var _0x7012=function(_0xb874ba,_0x53a033){_0xb874ba=_0xb874ba-0x0;var _0x46c56f=_0x0127[_0xb874ba];return _0x46c56f;};'use strict';var Sequelize=require(_0x7012('0x0'));module['exports']={'name':{'type':Sequelize[_0x7012('0x1')],'unique':_0x7012('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x7012('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7012('0x4')]('rrmemory',_0x7012('0x5'),_0x7012('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x7012('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 3ab73f2..824c21b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3477=['params','describe','getMembers','UserFaxQueue','length','order','FaxQueueId','findAll','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','findOne','getTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','removeTeams','select','field','from','join','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','all','compact','value','isEmpty','removeAgents','addAgents','omit','spread','emit','userFaxQueue:save','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','./faxQueue.socket','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','FaxQueues','error','stack','name','map','FaxQueue','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','rows','catch','show','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x3477,0x156));var _0x7347=function(_0x27399d,_0x53323c){_0x27399d=_0x27399d-0x0;var _0x3295cb=_0x3477[_0x27399d];return _0x3295cb;};'use strict';var emlformat=require(_0x7347('0x0'));var rimraf=require(_0x7347('0x1'));var zipdir=require(_0x7347('0x2'));var jsonpatch=require(_0x7347('0x3'));var rp=require(_0x7347('0x4'));var moment=require(_0x7347('0x5'));var BPromise=require(_0x7347('0x6'));var Mustache=require(_0x7347('0x7'));var util=require(_0x7347('0x8'));var path=require('path');var sox=require(_0x7347('0x9'));var csv=require('to-csv');var ejs=require(_0x7347('0xa'));var fs=require('fs');var fs_extra=require(_0x7347('0xb'));var _=require(_0x7347('0xc'));var squel=require(_0x7347('0xd'));var crypto=require('crypto');var jsforce=require(_0x7347('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7347('0xf'));var querystring=require(_0x7347('0x10'));var Papa=require(_0x7347('0x11'));var Redis=require(_0x7347('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7347('0x13'));var as=require(_0x7347('0x14'));var hardwareService=require(_0x7347('0x15'));var logger=require(_0x7347('0x16'))(_0x7347('0x17'));var utils=require('../../config/utils');var config=require(_0x7347('0x18'));var licenseUtil=require(_0x7347('0x19'));var db=require('../../mysqldb')['db'];config[_0x7347('0x1a')]=_[_0x7347('0x1b')](config[_0x7347('0x1a')],{'host':_0x7347('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7347('0x1a')]));require(_0x7347('0x1d'))['register'](socket);function respondWithStatusCode(_0x277323,_0x4981fb){_0x4981fb=_0x4981fb||0xcc;return function(_0x211d83){if(_0x211d83){return _0x277323[_0x7347('0x1e')](_0x4981fb);}return _0x277323[_0x7347('0x1f')](_0x4981fb)[_0x7347('0x20')]();};}function respondWithResult(_0x35b455,_0x570dcd){_0x570dcd=_0x570dcd||0xc8;return function(_0x2c2765){if(_0x2c2765){return _0x35b455[_0x7347('0x1f')](_0x570dcd)[_0x7347('0x21')](_0x2c2765);}};}function respondWithFilteredResult(_0x4389bc,_0x3947df){return function(_0x2b8abb){if(_0x2b8abb){var _0x2703f9=typeof _0x3947df[_0x7347('0x22')]==='undefined'&&typeof _0x3947df[_0x7347('0x23')]===_0x7347('0x24');var _0x2d610c=_0x2b8abb[_0x7347('0x25')];var _0x587fd8=_0x2703f9?0x0:_0x3947df[_0x7347('0x22')];var _0x2306f6=_0x2703f9?_0x2b8abb[_0x7347('0x25')]:_0x3947df[_0x7347('0x22')]+_0x3947df['limit'];var _0x396d36;if(_0x2306f6>=_0x2d610c){_0x2306f6=_0x2d610c;_0x396d36=0xc8;}else{_0x396d36=0xce;}_0x4389bc[_0x7347('0x1f')](_0x396d36);return _0x4389bc[_0x7347('0x26')](_0x7347('0x27'),_0x587fd8+'-'+_0x2306f6+'/'+_0x2d610c)['json'](_0x2b8abb);}return null;};}function patchUpdates(_0x9e1df1){return function(_0x2a3769){try{jsonpatch[_0x7347('0x28')](_0x2a3769,_0x9e1df1,!![]);}catch(_0x323fd8){return BPromise[_0x7347('0x29')](_0x323fd8);}return _0x2a3769['save']();};}function saveUpdates(_0x401add,_0x89b9e2){return function(_0x2572f7){if(_0x2572f7){return _0x2572f7[_0x7347('0x2a')](_0x401add)[_0x7347('0x2b')](function(_0x419d48){return _0x419d48;});}return null;};}function removeEntity(_0x29ecc0,_0x10a2f5){return function(_0x47afb2){if(_0x47afb2){return _0x47afb2[_0x7347('0x2c')]()[_0x7347('0x2b')](function(){var _0x1af4b5=_0x47afb2[_0x7347('0x2d')]({'plain':!![]});var _0x4d538f=_0x7347('0x2e');return db['UserProfileResource']['destroy']({'where':{'type':_0x4d538f,'resourceId':_0x1af4b5['id']}})[_0x7347('0x2b')](function(){return _0x47afb2;});})[_0x7347('0x2b')](function(){_0x29ecc0[_0x7347('0x1f')](0xcc)[_0x7347('0x20')]();});}};}function handleEntityNotFound(_0x294d7e,_0x3f5beb){return function(_0x49f551){if(!_0x49f551){_0x294d7e[_0x7347('0x1e')](0x194);}return _0x49f551;};}function handleError(_0x5bd763,_0xefbdc5){_0xefbdc5=_0xefbdc5||0x1f4;return function(_0xe89472){logger[_0x7347('0x2f')](_0xe89472[_0x7347('0x30')]);if(_0xe89472[_0x7347('0x31')]){delete _0xe89472[_0x7347('0x31')];}_0x5bd763[_0x7347('0x1f')](_0xefbdc5)['send'](_0xe89472);};}exports['index']=function(_0x3c4ab9,_0x516782){var _0x31380d={},_0x55fc66={},_0x53dd31={'count':0x0,'rows':[]};var _0x5861fc=_[_0x7347('0x32')](db[_0x7347('0x33')][_0x7347('0x34')],function(_0x2cb0f0){return{'name':_0x2cb0f0[_0x7347('0x35')],'type':_0x2cb0f0['type']['key']};});_0x55fc66['model']=_[_0x7347('0x32')](_0x5861fc,_0x7347('0x31'));_0x55fc66[_0x7347('0x36')]=_[_0x7347('0x37')](_0x3c4ab9[_0x7347('0x36')]);_0x55fc66[_0x7347('0x38')]=_[_0x7347('0x39')](_0x55fc66[_0x7347('0x3a')],_0x55fc66['query']);_0x31380d[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x55fc66[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x3c4ab9[_0x7347('0x36')]['fields']));_0x31380d[_0x7347('0x3b')]=_0x31380d[_0x7347('0x3b')]['length']?_0x31380d[_0x7347('0x3b')]:_0x55fc66[_0x7347('0x3a')];if(!_0x3c4ab9[_0x7347('0x36')][_0x7347('0x3d')](_0x7347('0x3e'))){_0x31380d[_0x7347('0x23')]=qs[_0x7347('0x23')](_0x3c4ab9[_0x7347('0x36')]['limit']);_0x31380d[_0x7347('0x22')]=qs[_0x7347('0x22')](_0x3c4ab9[_0x7347('0x36')][_0x7347('0x22')]);}_0x31380d['order']=qs[_0x7347('0x3f')](_0x3c4ab9['query'][_0x7347('0x3f')]);_0x31380d[_0x7347('0x40')]=qs['filters'](_[_0x7347('0x41')](_0x3c4ab9['query'],_0x55fc66[_0x7347('0x38')]),_0x5861fc);if(_0x3c4ab9[_0x7347('0x36')][_0x7347('0x42')]){_0x31380d[_0x7347('0x40')]=_[_0x7347('0x43')](_0x31380d['where'],{'$or':_[_0x7347('0x32')](_0x5861fc,function(_0x59646c){if(_0x59646c[_0x7347('0x44')]!=='VIRTUAL'){var _0x528925={};_0x528925[_0x59646c[_0x7347('0x31')]]={'$like':'%'+_0x3c4ab9['query'][_0x7347('0x42')]+'%'};return _0x528925;}})});}_0x31380d=_['merge']({},_0x31380d,_0x3c4ab9[_0x7347('0x45')]);var _0x1082bc={'where':_0x31380d[_0x7347('0x40')]};return db[_0x7347('0x33')]['count'](_0x1082bc)[_0x7347('0x2b')](function(_0x4271d1){_0x53dd31[_0x7347('0x25')]=_0x4271d1;if(_0x3c4ab9[_0x7347('0x36')][_0x7347('0x46')]){_0x31380d[_0x7347('0x47')]=[{'all':!![]}];}return db[_0x7347('0x33')]['findAll'](_0x31380d);})[_0x7347('0x2b')](function(_0x809944){_0x53dd31[_0x7347('0x48')]=_0x809944;return _0x53dd31;})[_0x7347('0x2b')](respondWithFilteredResult(_0x516782,_0x31380d))[_0x7347('0x49')](handleError(_0x516782,null));};exports[_0x7347('0x4a')]=function(_0x58f353,_0x8227dd){var _0x2c5dc5={'raw':!![],'where':{'id':_0x58f353['params']['id']}},_0x24b9db={};_0x24b9db[_0x7347('0x3a')]=_[_0x7347('0x37')](db[_0x7347('0x33')][_0x7347('0x34')]);_0x24b9db[_0x7347('0x36')]=_[_0x7347('0x37')](_0x58f353[_0x7347('0x36')]);_0x24b9db[_0x7347('0x38')]=_['intersection'](_0x24b9db[_0x7347('0x3a')],_0x24b9db[_0x7347('0x36')]);_0x2c5dc5[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x24b9db[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x58f353['query'][_0x7347('0x3c')]));_0x2c5dc5[_0x7347('0x3b')]=_0x2c5dc5[_0x7347('0x3b')]['length']?_0x2c5dc5[_0x7347('0x3b')]:_0x24b9db['model'];if(_0x58f353[_0x7347('0x36')]['includeAll']){_0x2c5dc5[_0x7347('0x47')]=[{'all':!![]}];}_0x2c5dc5=_[_0x7347('0x43')]({},_0x2c5dc5,_0x58f353[_0x7347('0x45')]);return db[_0x7347('0x33')][_0x7347('0x4b')](_0x2c5dc5)[_0x7347('0x2b')](handleEntityNotFound(_0x8227dd,null))[_0x7347('0x2b')](respondWithResult(_0x8227dd,null))['catch'](handleError(_0x8227dd,null));};exports[_0x7347('0x4c')]=function(_0x4ff59b,_0x299843){return db[_0x7347('0x33')][_0x7347('0x4c')](_0x4ff59b[_0x7347('0x4d')],{})[_0x7347('0x2b')](function(_0x12577c){var _0x41c72a=_0x4ff59b['user'][_0x7347('0x2d')]({'plain':!![]});if(!_0x41c72a)throw new Error(_0x7347('0x4e'));if(_0x41c72a[_0x7347('0x4f')]===_0x7347('0x50')){var _0x25cb50=_0x12577c['get']({'plain':!![]});var _0x13d48d='FaxQueues';return db[_0x7347('0x51')]['find']({'where':{'name':_0x13d48d,'userProfileId':_0x41c72a[_0x7347('0x52')]},'raw':!![]})[_0x7347('0x2b')](function(_0xfc2c1f){if(_0xfc2c1f&&_0xfc2c1f['autoAssociation']===0x0){return db['UserProfileResource'][_0x7347('0x4c')]({'name':_0x25cb50[_0x7347('0x31')],'resourceId':_0x25cb50['id'],'type':_0xfc2c1f[_0x7347('0x31')],'sectionId':_0xfc2c1f['id']},{})[_0x7347('0x2b')](function(){return _0x12577c;});}else{return _0x12577c;}})[_0x7347('0x49')](function(_0x47c790){logger[_0x7347('0x2f')](_0x7347('0x53'),_0x47c790);throw _0x47c790;});}return _0x12577c;})[_0x7347('0x2b')](respondWithResult(_0x299843,0xc9))[_0x7347('0x49')](handleError(_0x299843,null));};exports[_0x7347('0x2a')]=function(_0x40d7d0,_0x209b9f){if(_0x40d7d0[_0x7347('0x4d')]['id']){delete _0x40d7d0['body']['id'];}return db[_0x7347('0x33')][_0x7347('0x4b')]({'where':{'id':_0x40d7d0[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x209b9f,null))[_0x7347('0x2b')](saveUpdates(_0x40d7d0[_0x7347('0x4d')],null))[_0x7347('0x2b')](respondWithResult(_0x209b9f,null))[_0x7347('0x49')](handleError(_0x209b9f,null));};exports[_0x7347('0x2c')]=function(_0x2b6d22,_0x33b11f){return db['FaxQueue'][_0x7347('0x4b')]({'where':{'id':_0x2b6d22[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x33b11f,null))[_0x7347('0x2b')](removeEntity(_0x33b11f,null))['catch'](handleError(_0x33b11f,null));};exports[_0x7347('0x55')]=function(_0xb371bf,_0x199ac6){return db['FaxQueue']['describe']()['then'](respondWithResult(_0x199ac6,null))[_0x7347('0x49')](handleError(_0x199ac6,null));};exports[_0x7347('0x56')]=function(_0x1322ab,_0x1f54d9,_0x411a03){var _0x8c9eae={'raw':!![],'where':{}},_0x1e8e87={},_0x3da131;return db[_0x7347('0x33')]['findOne']({'where':{'id':_0x1322ab[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x1f54d9,null))[_0x7347('0x2b')](function(_0x4e4151){if(_0x4e4151){_0x3da131=_0x4e4151[_0x7347('0x2d')]({'plain':!![]});_0x1e8e87['model']=_[_0x7347('0x37')](db[_0x7347('0x57')][_0x7347('0x34')]);_0x1e8e87['query']=_['keys'](_0x1322ab[_0x7347('0x36')]);_0x1e8e87[_0x7347('0x38')]=_[_0x7347('0x39')](_0x1e8e87[_0x7347('0x3a')],_0x1e8e87[_0x7347('0x36')]);_0x8c9eae[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x1e8e87[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x1322ab[_0x7347('0x36')][_0x7347('0x3c')]));_0x8c9eae[_0x7347('0x3b')]=_0x8c9eae[_0x7347('0x3b')][_0x7347('0x58')]?_0x8c9eae['attributes']:_0x1e8e87[_0x7347('0x3a')];if(!_0x1322ab['query'][_0x7347('0x3d')](_0x7347('0x3e'))){_0x8c9eae[_0x7347('0x23')]=qs[_0x7347('0x23')](_0x1322ab['query']['limit']);_0x8c9eae['offset']=qs['offset'](_0x1322ab[_0x7347('0x36')][_0x7347('0x22')]);}_0x8c9eae[_0x7347('0x59')]=qs['sort'](_0x1322ab['query'][_0x7347('0x3f')]);_0x8c9eae['where']=qs[_0x7347('0x38')](_[_0x7347('0x41')](_0x1322ab[_0x7347('0x36')],_0x1e8e87[_0x7347('0x38')]));_0x8c9eae[_0x7347('0x40')][_0x7347('0x5a')]=_0x4e4151['id'];if(_0x1322ab[_0x7347('0x36')][_0x7347('0x42')]){_0x8c9eae[_0x7347('0x40')]=_[_0x7347('0x43')](_0x8c9eae['where'],{'$or':_[_0x7347('0x32')](_0x8c9eae['attributes'],function(_0x4326cc){var _0x418005={};_0x418005[_0x4326cc]={'$like':'%'+_0x1322ab[_0x7347('0x36')]['filter']+'%'};return _0x418005;})});}_0x8c9eae=_[_0x7347('0x43')]({},_0x8c9eae,_0x1322ab[_0x7347('0x45')]);return db[_0x7347('0x57')][_0x7347('0x5b')](_0x8c9eae);}})[_0x7347('0x2b')](function(_0x28079a){if(_0x28079a){return db[_0x7347('0x5c')][_0x7347('0x5d')]({'where':{'id':_[_0x7347('0x32')](_0x28079a,_0x7347('0x5e')),'role':_0x7347('0x5f')},'attributes':['id','name',_0x7347('0x60'),_0x7347('0x61'),_0x7347('0x62')]});}})[_0x7347('0x2b')](function(_0x3a4185){if(_0x3a4185){return{'count':_0x3a4185[_0x7347('0x25')],'rows':_[_0x7347('0x32')](_0x3a4185[_0x7347('0x48')],function(_0x3d38ae){return{'membername':_0x3d38ae[_0x7347('0x31')],'UserId':_0x3d38ae['id'],'queue_name':_0x3da131['name'],'FaxQueueId':_0x3da131['id'],'interface':util[_0x7347('0x63')](_0x7347('0x64'),_0x7347('0x65'),_0x3d38ae[_0x7347('0x31')]),'penalty':0x0,'paused':_0x3d38ae[_0x7347('0x60')],'createdAt':_0x3d38ae[_0x7347('0x62')],'updatedAt':_0x3d38ae['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x7347('0x2b')](respondWithFilteredResult(_0x1f54d9,_0x8c9eae))[_0x7347('0x49')](handleError(_0x1f54d9,null));};exports['getTeams']=function(_0x4fec2b,_0x31e784,_0x158a70){var _0x2416c2={};var _0x32e91f={};var _0x180407;var _0x577bb6;return db['FaxQueue'][_0x7347('0x66')]({'where':{'id':_0x4fec2b['params']['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x31e784,null))[_0x7347('0x2b')](function(_0x54698c){if(_0x54698c){_0x180407=_0x54698c;_0x32e91f[_0x7347('0x3a')]=_[_0x7347('0x37')](db['Team'][_0x7347('0x34')]);_0x32e91f[_0x7347('0x36')]=_[_0x7347('0x37')](_0x4fec2b[_0x7347('0x36')]);_0x32e91f[_0x7347('0x38')]=_['intersection'](_0x32e91f['model'],_0x32e91f['query']);_0x2416c2[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x32e91f[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x4fec2b['query'][_0x7347('0x3c')]));_0x2416c2[_0x7347('0x3b')]=_0x2416c2[_0x7347('0x3b')][_0x7347('0x58')]?_0x2416c2[_0x7347('0x3b')]:_0x32e91f[_0x7347('0x3a')];_0x2416c2[_0x7347('0x59')]=qs[_0x7347('0x3f')](_0x4fec2b['query'][_0x7347('0x3f')]);_0x2416c2[_0x7347('0x40')]=qs[_0x7347('0x38')](_[_0x7347('0x41')](_0x4fec2b[_0x7347('0x36')],_0x32e91f['filters']));if(_0x4fec2b[_0x7347('0x36')][_0x7347('0x42')]){_0x2416c2[_0x7347('0x40')]=_['merge'](_0x2416c2[_0x7347('0x40')],{'$or':_['map'](_0x2416c2[_0x7347('0x3b')],function(_0x308552){var _0x1d5bd5={};_0x1d5bd5[_0x308552]={'$like':'%'+_0x4fec2b[_0x7347('0x36')][_0x7347('0x42')]+'%'};return _0x1d5bd5;})});}_0x2416c2=_[_0x7347('0x43')]({},_0x2416c2,_0x4fec2b[_0x7347('0x45')]);return _0x180407[_0x7347('0x67')](_0x2416c2);}})['then'](function(_0x34d6f9){if(_0x34d6f9){_0x577bb6=_0x34d6f9[_0x7347('0x58')];if(!_0x4fec2b['query']['hasOwnProperty'](_0x7347('0x3e'))){_0x2416c2[_0x7347('0x23')]=qs['limit'](_0x4fec2b['query'][_0x7347('0x23')]);_0x2416c2['offset']=qs[_0x7347('0x22')](_0x4fec2b[_0x7347('0x36')]['offset']);}return _0x180407[_0x7347('0x67')](_0x2416c2);}})[_0x7347('0x2b')](function(_0x149646){if(_0x149646){return _0x149646?{'count':_0x577bb6,'rows':_0x149646}:null;}})[_0x7347('0x2b')](respondWithResult(_0x31e784,null))[_0x7347('0x49')](handleError(_0x31e784,null));};exports['addTeams']=function(_0x527db7,_0x2821b9,_0x97b5be){var _0x3c4b2e=_0x527db7['body'][_0x7347('0x68')];return db[_0x7347('0x69')]['findAll']({'where':{'id':_0x3c4b2e},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7347('0x6a'),'attributes':['id','name',_0x7347('0x6b'),_0x7347('0x6c'),_0x7347('0x6d')],'raw':!![]}]})[_0x7347('0x2b')](function(_0x3579de){if(_0x3579de){var _0x3c9207=_[_0x7347('0x6e')](_0x3579de,function(_0x283e6b){var _0x25cac6=_0x283e6b['get']({'plain':!![]});return _0x25cac6[_0x7347('0x6a')];});return db[_0x7347('0x33')][_0x7347('0x4b')]({'where':{'id':_0x527db7[_0x7347('0x54')]['id']}})['then'](function(_0x5a827f){return db[_0x7347('0x6f')][_0x7347('0x70')](function(_0x481d67){return _0x5a827f['addTeams'](_0x3c4b2e,{'transaction':_0x481d67})[_0x7347('0x2b')](function(){return BPromise[_0x7347('0x71')](_0x3c9207,function(_0x25c40b){return db['UserFaxQueue'][_0x7347('0x72')]({'where':{'UserId':_0x25c40b['id'],'FaxQueueId':_0x527db7[_0x7347('0x54')]['id']},'transaction':_0x481d67});});})['then'](function(){_0x3c9207[_0x7347('0x73')](function(_0x2f270d){socket['emit']('userFaxQueue:save',{'UserId':_0x2f270d['id'],'FaxQueueId':_0x5a827f['id']});});});});});}})[_0x7347('0x2b')](respondWithStatusCode(_0x2821b9,null))[_0x7347('0x49')](handleError(_0x2821b9,null));};exports[_0x7347('0x74')]=function(_0xac206,_0x133b66,_0x2e698a){return db[_0x7347('0x69')][_0x7347('0x5b')]({'where':{'id':_0xac206[_0x7347('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x7347('0x5c')],'as':_0x7347('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x133b66,null))['then'](function(_0x2e386e){var _0x24b9ba=_['map'](_0x2e386e,'id');var _0x488bad=[];var _0x26a1b8=[];var _0x1db6f0=squel[_0x7347('0x75')]();_0x1db6f0[_0x7347('0x76')]('tq.TeamId')[_0x7347('0x77')]('team_has_fax_queues','tq')[_0x7347('0x78')](_0x7347('0x79'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x7347('0x40')](_0x7347('0x7a'),_0xac206[_0x7347('0x54')]['id']);for(var _0x2b27e1=0x0;_0x2b27e1<_0x2e386e[_0x7347('0x58')];_0x2b27e1+=0x1){let _0xc0c41c=_0x2e386e[_0x2b27e1];for(var _0x28928=0x0;_0x28928<_0xc0c41c[_0x7347('0x6a')][_0x7347('0x58')];_0x28928+=0x1){let _0x4cfe3c=_0xc0c41c[_0x7347('0x6a')][_0x28928];var _0x35e100=_0x1db6f0[_0x7347('0x7b')]();_0x35e100[_0x7347('0x40')](_0x7347('0x7c'),_0x4cfe3c['id']);_0x26a1b8['push'](db[_0x7347('0x6f')][_0x7347('0x36')](_0x35e100[_0x7347('0x7d')](),{'type':db[_0x7347('0x6f')]['QueryTypes'][_0x7347('0x7e')]})[_0x7347('0x2b')](function(_0x3d5898){if(_0x3d5898[_0x7347('0x58')]===0x1){return _0x4cfe3c['id'];}else{var _0x532b62=_[_0x7347('0x7f')](_['map'](_0x3d5898,_0x7347('0x80')),function(_0x3f4459){return _['includes'](_0x24b9ba,_0x3f4459);});if(_0x532b62){return _0x4cfe3c['id'];}}}));}}return BPromise[_0x7347('0x81')](_0x26a1b8)[_0x7347('0x2b')](function(_0xfbd419){_0x488bad=_(_0x488bad)['union'](_0xfbd419)[_0x7347('0x82')]()[_0x7347('0x83')]();return db[_0x7347('0x33')]['find']({'where':{'id':_0xac206[_0x7347('0x54')]['id']}})['then'](function(_0x2257b5){return db[_0x7347('0x6f')][_0x7347('0x70')](function(_0x535a34){return _0x2257b5[_0x7347('0x74')](_0xac206['query'][_0x7347('0x68')],{'transaction':_0x535a34})[_0x7347('0x2b')](function(){if(!_[_0x7347('0x84')](_0x488bad)){return _0x2257b5[_0x7347('0x85')](_0x488bad,{'transaction':_0x535a34});}})[_0x7347('0x2b')](function(){_0x488bad['forEach'](function(_0x11c974){socket['emit']('userFaxQueue:remove',{'UserId':_0x11c974,'FaxQueueId':_0x2257b5['id']});});});});});});})[_0x7347('0x2b')](respondWithStatusCode(_0x133b66,null))[_0x7347('0x49')](handleError(_0x133b66,null));};exports[_0x7347('0x86')]=function(_0x494274,_0x547dda,_0x411b16){return db[_0x7347('0x33')]['find']({'where':{'id':_0x494274[_0x7347('0x54')]['id']}})['then'](handleEntityNotFound(_0x547dda,null))[_0x7347('0x2b')](function(_0x19464d){if(_0x19464d){return _0x19464d[_0x7347('0x86')](_0x494274[_0x7347('0x4d')][_0x7347('0x68')],_[_0x7347('0x87')](_0x494274['body'],[_0x7347('0x68'),'id'])||{})[_0x7347('0x88')](function(_0x3677a3){for(var _0x3db7a2=0x0;_0x3db7a2<_0x494274[_0x7347('0x4d')][_0x7347('0x68')][_0x7347('0x58')];_0x3db7a2+=0x1){socket[_0x7347('0x89')](_0x7347('0x8a'),{'UserId':Number(_0x494274['body'][_0x7347('0x68')][_0x3db7a2]),'FaxQueueId':Number(_0x494274['params']['id'])});}return _0x3677a3;});}})[_0x7347('0x2b')](respondWithResult(_0x547dda,null))['catch'](handleError(_0x547dda,null));};exports[_0x7347('0x85')]=function(_0x53ff37,_0x53d2dc,_0x14405a){return db['FaxQueue'][_0x7347('0x4b')]({'where':{'id':_0x53ff37[_0x7347('0x54')]['id']}})['then'](handleEntityNotFound(_0x53d2dc,null))[_0x7347('0x2b')](function(_0x3d0588){if(_0x3d0588){return _0x3d0588[_0x7347('0x85')](_0x53ff37[_0x7347('0x36')][_0x7347('0x68')])[_0x7347('0x2b')](function(){if(_[_0x7347('0x8b')](_0x53ff37[_0x7347('0x36')][_0x7347('0x68')])){for(var _0x429ab6=0x0;_0x429ab6<_0x53ff37['query'][_0x7347('0x68')][_0x7347('0x58')];_0x429ab6+=0x1){socket[_0x7347('0x89')](_0x7347('0x8c'),{'UserId':Number(_0x53ff37[_0x7347('0x36')]['ids'][_0x429ab6]),'FaxQueueId':Number(_0x53ff37[_0x7347('0x54')]['id'])});}}else{socket[_0x7347('0x89')]('userFaxQueue:remove',{'UserId':Number(_0x53ff37[_0x7347('0x36')][_0x7347('0x68')]),'FaxQueueId':Number(_0x53ff37[_0x7347('0x54')]['id'])});}});}})[_0x7347('0x2b')](respondWithStatusCode(_0x53d2dc,null))[_0x7347('0x49')](handleError(_0x53d2dc,null));};exports[_0x7347('0x8d')]=function(_0x3f676b,_0x49a908,_0x351a84){var _0x3ea2aa={};var _0x120de6={};var _0x414092;var _0x902290;return db['FaxQueue'][_0x7347('0x66')]({'where':{'id':_0x3f676b[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x49a908,null))[_0x7347('0x2b')](function(_0x524ac7){if(_0x524ac7){_0x414092=_0x524ac7;_0x120de6[_0x7347('0x3a')]=_[_0x7347('0x37')](db[_0x7347('0x5c')][_0x7347('0x34')]);_0x120de6[_0x7347('0x36')]=_[_0x7347('0x37')](_0x3f676b[_0x7347('0x36')]);_0x120de6['filters']=_[_0x7347('0x39')](_0x120de6[_0x7347('0x3a')],_0x120de6[_0x7347('0x36')]);_0x3ea2aa['attributes']=_[_0x7347('0x39')](_0x120de6[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x3f676b[_0x7347('0x36')][_0x7347('0x3c')]));_0x3ea2aa[_0x7347('0x3b')]=_0x3ea2aa[_0x7347('0x3b')]['length']?_0x3ea2aa[_0x7347('0x3b')]:_0x120de6['model'];_0x3ea2aa['order']=qs[_0x7347('0x3f')](_0x3f676b[_0x7347('0x36')][_0x7347('0x3f')]);_0x3ea2aa[_0x7347('0x40')]=qs[_0x7347('0x38')](_[_0x7347('0x41')](_0x3f676b[_0x7347('0x36')],_0x120de6[_0x7347('0x38')]));if(_0x3f676b[_0x7347('0x36')][_0x7347('0x42')]){_0x3ea2aa['where']=_[_0x7347('0x43')](_0x3ea2aa[_0x7347('0x40')],{'$or':_[_0x7347('0x32')](_0x3ea2aa[_0x7347('0x3b')],function(_0x4e70a0){var _0x143b58={};_0x143b58[_0x4e70a0]={'$like':'%'+_0x3f676b[_0x7347('0x36')][_0x7347('0x42')]+'%'};return _0x143b58;})});}_0x3ea2aa=_[_0x7347('0x43')]({},_0x3ea2aa,_0x3f676b['options']);return _0x414092[_0x7347('0x8d')](_0x3ea2aa);}})[_0x7347('0x2b')](function(_0x24559b){if(_0x24559b){_0x902290=_0x24559b[_0x7347('0x58')];if(!_0x3f676b[_0x7347('0x36')]['hasOwnProperty'](_0x7347('0x3e'))){_0x3ea2aa[_0x7347('0x23')]=qs[_0x7347('0x23')](_0x3f676b[_0x7347('0x36')][_0x7347('0x23')]);_0x3ea2aa[_0x7347('0x22')]=qs[_0x7347('0x22')](_0x3f676b['query'][_0x7347('0x22')]);}return _0x414092[_0x7347('0x8d')](_0x3ea2aa);}})[_0x7347('0x2b')](function(_0x2015b7){if(_0x2015b7){return _0x2015b7?{'count':_0x902290,'rows':_0x2015b7}:null;}})[_0x7347('0x2b')](respondWithResult(_0x49a908,null))[_0x7347('0x49')](handleError(_0x49a908,null));};
\ No newline at end of file
+var _0x8969=['compact','value','isEmpty','addAgents','omit','spread','removeAgents','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','FaxQueues','UserProfileResource','stack','name','send','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','options','FaxQueue','rows','catch','show','params','keys','include','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','error','body','describe','getMembers','findOne','UserFaxQueue','FaxQueueId','filter','User','findAndCountAll','UserId','agent','createdAt','format','%s/%s','SIP','faxPause','Team','getTeams','addTeams','ids','findAll','interface','flatMap','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','Agents','select','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','union'];(function(_0x102881,_0x58d723){var _0x5c63d0=function(_0x955c59){while(--_0x955c59){_0x102881['push'](_0x102881['shift']());}};_0x5c63d0(++_0x58d723);}(_0x8969,0x9f));var _0x9896=function(_0x56b90e,_0x1a71c8){_0x56b90e=_0x56b90e-0x0;var _0x1b42d6=_0x8969[_0x56b90e];return _0x1b42d6;};'use strict';var emlformat=require(_0x9896('0x0'));var rimraf=require(_0x9896('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9896('0x2'));var moment=require(_0x9896('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9896('0x4'));var util=require(_0x9896('0x5'));var path=require(_0x9896('0x6'));var sox=require(_0x9896('0x7'));var csv=require('to-csv');var ejs=require(_0x9896('0x8'));var fs=require('fs');var fs_extra=require(_0x9896('0x9'));var _=require(_0x9896('0xa'));var squel=require(_0x9896('0xb'));var crypto=require(_0x9896('0xc'));var jsforce=require(_0x9896('0xd'));var deskjs=require(_0x9896('0xe'));var toCsv=require(_0x9896('0xf'));var querystring=require(_0x9896('0x10'));var Papa=require(_0x9896('0x11'));var Redis=require('ioredis');var authService=require(_0x9896('0x12'));var qs=require(_0x9896('0x13'));var as=require(_0x9896('0x14'));var hardwareService=require(_0x9896('0x15'));var logger=require(_0x9896('0x16'))(_0x9896('0x17'));var utils=require(_0x9896('0x18'));var config=require(_0x9896('0x19'));var licenseUtil=require(_0x9896('0x1a'));var db=require(_0x9896('0x1b'))['db'];config[_0x9896('0x1c')]=_[_0x9896('0x1d')](config[_0x9896('0x1c')],{'host':_0x9896('0x1e'),'port':0x18eb});var socket=require(_0x9896('0x1f'))(new Redis(config[_0x9896('0x1c')]));require(_0x9896('0x20'))['register'](socket);function respondWithStatusCode(_0x3f5125,_0x447f36){_0x447f36=_0x447f36||0xcc;return function(_0x20bbf6){if(_0x20bbf6){return _0x3f5125[_0x9896('0x21')](_0x447f36);}return _0x3f5125[_0x9896('0x22')](_0x447f36)[_0x9896('0x23')]();};}function respondWithResult(_0x1a3279,_0x318008){_0x318008=_0x318008||0xc8;return function(_0x2f2ea2){if(_0x2f2ea2){return _0x1a3279['status'](_0x318008)[_0x9896('0x24')](_0x2f2ea2);}};}function respondWithFilteredResult(_0x24d6aa,_0x23d846){return function(_0x10a127){if(_0x10a127){var _0x1bbc1f=typeof _0x23d846[_0x9896('0x25')]==='undefined'&&typeof _0x23d846[_0x9896('0x26')]===_0x9896('0x27');var _0x917b47=_0x10a127['count'];var _0x419b3b=_0x1bbc1f?0x0:_0x23d846[_0x9896('0x25')];var _0x105487=_0x1bbc1f?_0x10a127[_0x9896('0x28')]:_0x23d846[_0x9896('0x25')]+_0x23d846['limit'];var _0x23e607;if(_0x105487>=_0x917b47){_0x105487=_0x917b47;_0x23e607=0xc8;}else{_0x23e607=0xce;}_0x24d6aa[_0x9896('0x22')](_0x23e607);return _0x24d6aa[_0x9896('0x29')](_0x9896('0x2a'),_0x419b3b+'-'+_0x105487+'/'+_0x917b47)[_0x9896('0x24')](_0x10a127);}return null;};}function patchUpdates(_0x3f722c){return function(_0x2d1008){try{jsonpatch[_0x9896('0x2b')](_0x2d1008,_0x3f722c,!![]);}catch(_0x318583){return BPromise[_0x9896('0x2c')](_0x318583);}return _0x2d1008[_0x9896('0x2d')]();};}function saveUpdates(_0x28d223,_0x1bd085){return function(_0x2cfcfc){if(_0x2cfcfc){return _0x2cfcfc[_0x9896('0x2e')](_0x28d223)['then'](function(_0x4aee77){return _0x4aee77;});}return null;};}function removeEntity(_0x4d4a58,_0x1a9976){return function(_0x62e0db){if(_0x62e0db){return _0x62e0db[_0x9896('0x2f')]()[_0x9896('0x30')](function(){var _0x66ba9c=_0x62e0db[_0x9896('0x31')]({'plain':!![]});var _0x530255=_0x9896('0x32');return db[_0x9896('0x33')][_0x9896('0x2f')]({'where':{'type':_0x530255,'resourceId':_0x66ba9c['id']}})['then'](function(){return _0x62e0db;});})[_0x9896('0x30')](function(){_0x4d4a58[_0x9896('0x22')](0xcc)[_0x9896('0x23')]();});}};}function handleEntityNotFound(_0xb939a6,_0x159e61){return function(_0x501dcb){if(!_0x501dcb){_0xb939a6[_0x9896('0x21')](0x194);}return _0x501dcb;};}function handleError(_0x1f0a8b,_0x565fae){_0x565fae=_0x565fae||0x1f4;return function(_0x236ddb){logger['error'](_0x236ddb[_0x9896('0x34')]);if(_0x236ddb[_0x9896('0x35')]){delete _0x236ddb[_0x9896('0x35')];}_0x1f0a8b['status'](_0x565fae)[_0x9896('0x36')](_0x236ddb);};}exports['index']=function(_0x2dff57,_0x58a0c2){var _0x4e0965={},_0x1cfccf={},_0x1e7cc4={'count':0x0,'rows':[]};var _0x1576f6=_['map'](db['FaxQueue'][_0x9896('0x37')],function(_0x346018){return{'name':_0x346018[_0x9896('0x38')],'type':_0x346018[_0x9896('0x39')][_0x9896('0x3a')]};});_0x1cfccf[_0x9896('0x3b')]=_['map'](_0x1576f6,_0x9896('0x35'));_0x1cfccf[_0x9896('0x3c')]=_['keys'](_0x2dff57['query']);_0x1cfccf[_0x9896('0x3d')]=_[_0x9896('0x3e')](_0x1cfccf['model'],_0x1cfccf[_0x9896('0x3c')]);_0x4e0965[_0x9896('0x3f')]=_['intersection'](_0x1cfccf[_0x9896('0x3b')],qs['fields'](_0x2dff57['query'][_0x9896('0x40')]));_0x4e0965[_0x9896('0x3f')]=_0x4e0965[_0x9896('0x3f')][_0x9896('0x41')]?_0x4e0965[_0x9896('0x3f')]:_0x1cfccf[_0x9896('0x3b')];if(!_0x2dff57[_0x9896('0x3c')][_0x9896('0x42')](_0x9896('0x43'))){_0x4e0965[_0x9896('0x26')]=qs[_0x9896('0x26')](_0x2dff57[_0x9896('0x3c')][_0x9896('0x26')]);_0x4e0965[_0x9896('0x25')]=qs[_0x9896('0x25')](_0x2dff57[_0x9896('0x3c')]['offset']);}_0x4e0965[_0x9896('0x44')]=qs[_0x9896('0x45')](_0x2dff57[_0x9896('0x3c')]['sort']);_0x4e0965[_0x9896('0x46')]=qs[_0x9896('0x3d')](_[_0x9896('0x47')](_0x2dff57['query'],_0x1cfccf['filters']),_0x1576f6);if(_0x2dff57[_0x9896('0x3c')]['filter']){_0x4e0965[_0x9896('0x46')]=_[_0x9896('0x48')](_0x4e0965['where'],{'$or':_[_0x9896('0x49')](_0x1576f6,function(_0x3f178e){if(_0x3f178e['type']!==_0x9896('0x4a')){var _0x22b238={};_0x22b238[_0x3f178e[_0x9896('0x35')]]={'$like':'%'+_0x2dff57['query']['filter']+'%'};return _0x22b238;}})});}_0x4e0965=_['merge']({},_0x4e0965,_0x2dff57[_0x9896('0x4b')]);var _0x371d64={'where':_0x4e0965[_0x9896('0x46')]};return db[_0x9896('0x4c')][_0x9896('0x28')](_0x371d64)['then'](function(_0x5ec0f9){_0x1e7cc4[_0x9896('0x28')]=_0x5ec0f9;if(_0x2dff57[_0x9896('0x3c')]['includeAll']){_0x4e0965['include']=[{'all':!![]}];}return db[_0x9896('0x4c')]['findAll'](_0x4e0965);})[_0x9896('0x30')](function(_0x94ef4a){_0x1e7cc4[_0x9896('0x4d')]=_0x94ef4a;return _0x1e7cc4;})[_0x9896('0x30')](respondWithFilteredResult(_0x58a0c2,_0x4e0965))[_0x9896('0x4e')](handleError(_0x58a0c2,null));};exports[_0x9896('0x4f')]=function(_0xb47ee4,_0x2839c3){var _0x30dac0={'raw':!![],'where':{'id':_0xb47ee4[_0x9896('0x50')]['id']}},_0x1b32d0={};_0x1b32d0[_0x9896('0x3b')]=_[_0x9896('0x51')](db[_0x9896('0x4c')][_0x9896('0x37')]);_0x1b32d0[_0x9896('0x3c')]=_[_0x9896('0x51')](_0xb47ee4[_0x9896('0x3c')]);_0x1b32d0['filters']=_[_0x9896('0x3e')](_0x1b32d0[_0x9896('0x3b')],_0x1b32d0[_0x9896('0x3c')]);_0x30dac0[_0x9896('0x3f')]=_[_0x9896('0x3e')](_0x1b32d0[_0x9896('0x3b')],qs[_0x9896('0x40')](_0xb47ee4[_0x9896('0x3c')][_0x9896('0x40')]));_0x30dac0['attributes']=_0x30dac0['attributes'][_0x9896('0x41')]?_0x30dac0['attributes']:_0x1b32d0[_0x9896('0x3b')];if(_0xb47ee4[_0x9896('0x3c')]['includeAll']){_0x30dac0[_0x9896('0x52')]=[{'all':!![]}];}_0x30dac0=_[_0x9896('0x48')]({},_0x30dac0,_0xb47ee4['options']);return db['FaxQueue'][_0x9896('0x53')](_0x30dac0)['then'](handleEntityNotFound(_0x2839c3,null))[_0x9896('0x30')](respondWithResult(_0x2839c3,null))[_0x9896('0x4e')](handleError(_0x2839c3,null));};exports[_0x9896('0x54')]=function(_0x449de5,_0x22b899){return db['FaxQueue'][_0x9896('0x54')](_0x449de5['body'],{})[_0x9896('0x30')](function(_0x500dc8){var _0x312fa8=_0x449de5[_0x9896('0x55')][_0x9896('0x31')]({'plain':!![]});if(!_0x312fa8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x312fa8[_0x9896('0x56')]===_0x9896('0x55')){var _0x1ed86a=_0x500dc8['get']({'plain':!![]});var _0x27921e=_0x9896('0x32');return db[_0x9896('0x57')]['find']({'where':{'name':_0x27921e,'userProfileId':_0x312fa8[_0x9896('0x58')]},'raw':!![]})[_0x9896('0x30')](function(_0x1baac6){if(_0x1baac6&&_0x1baac6[_0x9896('0x59')]===0x0){return db[_0x9896('0x33')][_0x9896('0x54')]({'name':_0x1ed86a[_0x9896('0x35')],'resourceId':_0x1ed86a['id'],'type':_0x1baac6[_0x9896('0x35')],'sectionId':_0x1baac6['id']},{})[_0x9896('0x30')](function(){return _0x500dc8;});}else{return _0x500dc8;}})['catch'](function(_0x263542){logger[_0x9896('0x5a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x263542);throw _0x263542;});}return _0x500dc8;})[_0x9896('0x30')](respondWithResult(_0x22b899,0xc9))[_0x9896('0x4e')](handleError(_0x22b899,null));};exports['update']=function(_0x125bb1,_0x40b4f1){if(_0x125bb1[_0x9896('0x5b')]['id']){delete _0x125bb1['body']['id'];}return db[_0x9896('0x4c')][_0x9896('0x53')]({'where':{'id':_0x125bb1['params']['id']}})[_0x9896('0x30')](handleEntityNotFound(_0x40b4f1,null))[_0x9896('0x30')](saveUpdates(_0x125bb1[_0x9896('0x5b')],null))[_0x9896('0x30')](respondWithResult(_0x40b4f1,null))['catch'](handleError(_0x40b4f1,null));};exports[_0x9896('0x2f')]=function(_0x5d8d5b,_0x1b15a6){return db[_0x9896('0x4c')]['find']({'where':{'id':_0x5d8d5b[_0x9896('0x50')]['id']}})[_0x9896('0x30')](handleEntityNotFound(_0x1b15a6,null))[_0x9896('0x30')](removeEntity(_0x1b15a6,null))[_0x9896('0x4e')](handleError(_0x1b15a6,null));};exports[_0x9896('0x5c')]=function(_0x59bbb4,_0x1ea6c1){return db['FaxQueue'][_0x9896('0x5c')]()[_0x9896('0x30')](respondWithResult(_0x1ea6c1,null))[_0x9896('0x4e')](handleError(_0x1ea6c1,null));};exports[_0x9896('0x5d')]=function(_0x5e1a34,_0x4059df,_0x4739d9){var _0x4eb8f3={'raw':!![],'where':{}},_0x6ba26b={},_0x2ad420;return db[_0x9896('0x4c')][_0x9896('0x5e')]({'where':{'id':_0x5e1a34[_0x9896('0x50')]['id']}})[_0x9896('0x30')](handleEntityNotFound(_0x4059df,null))['then'](function(_0x16d204){if(_0x16d204){_0x2ad420=_0x16d204['get']({'plain':!![]});_0x6ba26b['model']=_[_0x9896('0x51')](db[_0x9896('0x5f')][_0x9896('0x37')]);_0x6ba26b['query']=_[_0x9896('0x51')](_0x5e1a34['query']);_0x6ba26b[_0x9896('0x3d')]=_[_0x9896('0x3e')](_0x6ba26b[_0x9896('0x3b')],_0x6ba26b[_0x9896('0x3c')]);_0x4eb8f3['attributes']=_['intersection'](_0x6ba26b[_0x9896('0x3b')],qs[_0x9896('0x40')](_0x5e1a34[_0x9896('0x3c')][_0x9896('0x40')]));_0x4eb8f3['attributes']=_0x4eb8f3[_0x9896('0x3f')][_0x9896('0x41')]?_0x4eb8f3[_0x9896('0x3f')]:_0x6ba26b[_0x9896('0x3b')];if(!_0x5e1a34['query']['hasOwnProperty']('nolimit')){_0x4eb8f3[_0x9896('0x26')]=qs['limit'](_0x5e1a34[_0x9896('0x3c')][_0x9896('0x26')]);_0x4eb8f3[_0x9896('0x25')]=qs[_0x9896('0x25')](_0x5e1a34['query'][_0x9896('0x25')]);}_0x4eb8f3[_0x9896('0x44')]=qs[_0x9896('0x45')](_0x5e1a34[_0x9896('0x3c')][_0x9896('0x45')]);_0x4eb8f3['where']=qs[_0x9896('0x3d')](_[_0x9896('0x47')](_0x5e1a34[_0x9896('0x3c')],_0x6ba26b[_0x9896('0x3d')]));_0x4eb8f3[_0x9896('0x46')][_0x9896('0x60')]=_0x16d204['id'];if(_0x5e1a34['query'][_0x9896('0x61')]){_0x4eb8f3[_0x9896('0x46')]=_[_0x9896('0x48')](_0x4eb8f3[_0x9896('0x46')],{'$or':_[_0x9896('0x49')](_0x4eb8f3[_0x9896('0x3f')],function(_0x4c87f9){var _0x3ff0cd={};_0x3ff0cd[_0x4c87f9]={'$like':'%'+_0x5e1a34[_0x9896('0x3c')][_0x9896('0x61')]+'%'};return _0x3ff0cd;})});}_0x4eb8f3=_[_0x9896('0x48')]({},_0x4eb8f3,_0x5e1a34[_0x9896('0x4b')]);return db['UserFaxQueue']['findAll'](_0x4eb8f3);}})[_0x9896('0x30')](function(_0x2f457d){if(_0x2f457d){return db[_0x9896('0x62')][_0x9896('0x63')]({'where':{'id':_[_0x9896('0x49')](_0x2f457d,_0x9896('0x64')),'role':_0x9896('0x65')},'attributes':['id',_0x9896('0x35'),'faxPause','updatedAt',_0x9896('0x66')]});}})[_0x9896('0x30')](function(_0x3400f0){if(_0x3400f0){return{'count':_0x3400f0[_0x9896('0x28')],'rows':_[_0x9896('0x49')](_0x3400f0[_0x9896('0x4d')],function(_0x5b42b9){return{'membername':_0x5b42b9['name'],'UserId':_0x5b42b9['id'],'queue_name':_0x2ad420[_0x9896('0x35')],'FaxQueueId':_0x2ad420['id'],'interface':util[_0x9896('0x67')](_0x9896('0x68'),_0x9896('0x69'),_0x5b42b9['name']),'penalty':0x0,'paused':_0x5b42b9[_0x9896('0x6a')],'createdAt':_0x5b42b9[_0x9896('0x66')],'updatedAt':_0x5b42b9['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4059df,_0x4eb8f3))[_0x9896('0x4e')](handleError(_0x4059df,null));};exports['getTeams']=function(_0x470b0e,_0x5bf2ae,_0x27d46f){var _0x4e9ec6={};var _0x32e039={};var _0xaebbe;var _0x5580d5;return db['FaxQueue'][_0x9896('0x5e')]({'where':{'id':_0x470b0e[_0x9896('0x50')]['id']}})[_0x9896('0x30')](handleEntityNotFound(_0x5bf2ae,null))[_0x9896('0x30')](function(_0x256d5f){if(_0x256d5f){_0xaebbe=_0x256d5f;_0x32e039[_0x9896('0x3b')]=_[_0x9896('0x51')](db[_0x9896('0x6b')]['rawAttributes']);_0x32e039['query']=_['keys'](_0x470b0e[_0x9896('0x3c')]);_0x32e039['filters']=_['intersection'](_0x32e039['model'],_0x32e039['query']);_0x4e9ec6[_0x9896('0x3f')]=_['intersection'](_0x32e039[_0x9896('0x3b')],qs[_0x9896('0x40')](_0x470b0e[_0x9896('0x3c')]['fields']));_0x4e9ec6['attributes']=_0x4e9ec6[_0x9896('0x3f')][_0x9896('0x41')]?_0x4e9ec6['attributes']:_0x32e039[_0x9896('0x3b')];_0x4e9ec6[_0x9896('0x44')]=qs['sort'](_0x470b0e[_0x9896('0x3c')][_0x9896('0x45')]);_0x4e9ec6[_0x9896('0x46')]=qs[_0x9896('0x3d')](_[_0x9896('0x47')](_0x470b0e[_0x9896('0x3c')],_0x32e039['filters']));if(_0x470b0e[_0x9896('0x3c')][_0x9896('0x61')]){_0x4e9ec6[_0x9896('0x46')]=_[_0x9896('0x48')](_0x4e9ec6['where'],{'$or':_[_0x9896('0x49')](_0x4e9ec6[_0x9896('0x3f')],function(_0x4fe2e3){var _0x21fce3={};_0x21fce3[_0x4fe2e3]={'$like':'%'+_0x470b0e[_0x9896('0x3c')][_0x9896('0x61')]+'%'};return _0x21fce3;})});}_0x4e9ec6=_[_0x9896('0x48')]({},_0x4e9ec6,_0x470b0e[_0x9896('0x4b')]);return _0xaebbe[_0x9896('0x6c')](_0x4e9ec6);}})[_0x9896('0x30')](function(_0x506b5b){if(_0x506b5b){_0x5580d5=_0x506b5b['length'];if(!_0x470b0e[_0x9896('0x3c')][_0x9896('0x42')](_0x9896('0x43'))){_0x4e9ec6[_0x9896('0x26')]=qs[_0x9896('0x26')](_0x470b0e[_0x9896('0x3c')][_0x9896('0x26')]);_0x4e9ec6['offset']=qs[_0x9896('0x25')](_0x470b0e[_0x9896('0x3c')][_0x9896('0x25')]);}return _0xaebbe[_0x9896('0x6c')](_0x4e9ec6);}})['then'](function(_0x59d5b2){if(_0x59d5b2){return _0x59d5b2?{'count':_0x5580d5,'rows':_0x59d5b2}:null;}})[_0x9896('0x30')](respondWithResult(_0x5bf2ae,null))[_0x9896('0x4e')](handleError(_0x5bf2ae,null));};exports[_0x9896('0x6d')]=function(_0x183a84,_0x26e085,_0x39c586){var _0x33d81a=_0x183a84[_0x9896('0x5b')][_0x9896('0x6e')];return db['Team'][_0x9896('0x6f')]({'where':{'id':_0x33d81a},'attributes':['id'],'include':[{'model':db[_0x9896('0x62')],'as':'Agents','attributes':['id','name','online','voicePause',_0x9896('0x70')],'raw':!![]}]})[_0x9896('0x30')](function(_0x3de354){if(_0x3de354){var _0x1e8e8c=_[_0x9896('0x71')](_0x3de354,function(_0x476a6d){var _0x19d18e=_0x476a6d[_0x9896('0x31')]({'plain':!![]});return _0x19d18e['Agents'];});return db[_0x9896('0x4c')]['find']({'where':{'id':_0x183a84[_0x9896('0x50')]['id']}})[_0x9896('0x30')](function(_0x24f9a6){return db['sequelize'][_0x9896('0x72')](function(_0x383814){return _0x24f9a6[_0x9896('0x6d')](_0x33d81a,{'transaction':_0x383814})[_0x9896('0x30')](function(){return BPromise[_0x9896('0x73')](_0x1e8e8c,function(_0x16295e){return db[_0x9896('0x5f')][_0x9896('0x74')]({'where':{'UserId':_0x16295e['id'],'FaxQueueId':_0x183a84[_0x9896('0x50')]['id']},'transaction':_0x383814});});})[_0x9896('0x30')](function(){_0x1e8e8c[_0x9896('0x75')](function(_0x23a5fd){socket[_0x9896('0x76')](_0x9896('0x77'),{'UserId':_0x23a5fd['id'],'FaxQueueId':_0x24f9a6['id']});});});});});}})[_0x9896('0x30')](respondWithStatusCode(_0x26e085,null))[_0x9896('0x4e')](handleError(_0x26e085,null));};exports[_0x9896('0x78')]=function(_0x48236e,_0x454454,_0x508b4c){return db[_0x9896('0x6b')][_0x9896('0x6f')]({'where':{'id':_0x48236e[_0x9896('0x3c')][_0x9896('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x9896('0x62')],'as':_0x9896('0x79'),'attributes':['id'],'raw':!![]}]})[_0x9896('0x30')](handleEntityNotFound(_0x454454,null))[_0x9896('0x30')](function(_0x1ec424){var _0xb19823=_[_0x9896('0x49')](_0x1ec424,'id');var _0xe7688f=[];var _0x846560=[];var _0x36b3e1=squel[_0x9896('0x7a')]();_0x36b3e1[_0x9896('0x7b')](_0x9896('0x7c'))[_0x9896('0x7d')](_0x9896('0x7e'),'tq')['join'](_0x9896('0x7f'),'ut',_0x9896('0x80'))[_0x9896('0x46')]('FaxQueueId\x20=\x20?',_0x48236e[_0x9896('0x50')]['id']);for(var _0xd71027=0x0;_0xd71027<_0x1ec424[_0x9896('0x41')];_0xd71027+=0x1){let _0x34616a=_0x1ec424[_0xd71027];for(var _0x4d4f2e=0x0;_0x4d4f2e<_0x34616a[_0x9896('0x79')][_0x9896('0x41')];_0x4d4f2e+=0x1){let _0x549bf7=_0x34616a[_0x9896('0x79')][_0x4d4f2e];var _0x181355=_0x36b3e1[_0x9896('0x81')]();_0x181355[_0x9896('0x46')](_0x9896('0x82'),_0x549bf7['id']);_0x846560[_0x9896('0x83')](db[_0x9896('0x84')][_0x9896('0x3c')](_0x181355[_0x9896('0x85')](),{'type':db['sequelize'][_0x9896('0x86')][_0x9896('0x87')]})[_0x9896('0x30')](function(_0x58b09a){if(_0x58b09a[_0x9896('0x41')]===0x1){return _0x549bf7['id'];}else{var _0x544deb=_[_0x9896('0x88')](_[_0x9896('0x49')](_0x58b09a,_0x9896('0x89')),function(_0xd7cc79){return _['includes'](_0xb19823,_0xd7cc79);});if(_0x544deb){return _0x549bf7['id'];}}}));}}return BPromise['all'](_0x846560)['then'](function(_0x48a0cd){_0xe7688f=_(_0xe7688f)[_0x9896('0x8a')](_0x48a0cd)[_0x9896('0x8b')]()[_0x9896('0x8c')]();return db[_0x9896('0x4c')]['find']({'where':{'id':_0x48236e[_0x9896('0x50')]['id']}})[_0x9896('0x30')](function(_0x376d20){return db[_0x9896('0x84')][_0x9896('0x72')](function(_0x276cd2){return _0x376d20['removeTeams'](_0x48236e[_0x9896('0x3c')][_0x9896('0x6e')],{'transaction':_0x276cd2})[_0x9896('0x30')](function(){if(!_[_0x9896('0x8d')](_0xe7688f)){return _0x376d20['removeAgents'](_0xe7688f,{'transaction':_0x276cd2});}})['then'](function(){_0xe7688f[_0x9896('0x75')](function(_0x457003){socket[_0x9896('0x76')]('userFaxQueue:remove',{'UserId':_0x457003,'FaxQueueId':_0x376d20['id']});});});});});});})['then'](respondWithStatusCode(_0x454454,null))[_0x9896('0x4e')](handleError(_0x454454,null));};exports[_0x9896('0x8e')]=function(_0x5a009f,_0x25d684,_0x1edf8b){return db[_0x9896('0x4c')][_0x9896('0x53')]({'where':{'id':_0x5a009f[_0x9896('0x50')]['id']}})[_0x9896('0x30')](handleEntityNotFound(_0x25d684,null))[_0x9896('0x30')](function(_0xf6cbec){if(_0xf6cbec){return _0xf6cbec[_0x9896('0x8e')](_0x5a009f['body'][_0x9896('0x6e')],_[_0x9896('0x8f')](_0x5a009f[_0x9896('0x5b')],[_0x9896('0x6e'),'id'])||{})[_0x9896('0x90')](function(_0x397849){for(var _0x5c65d3=0x0;_0x5c65d3<_0x5a009f[_0x9896('0x5b')][_0x9896('0x6e')][_0x9896('0x41')];_0x5c65d3+=0x1){socket[_0x9896('0x76')](_0x9896('0x77'),{'UserId':Number(_0x5a009f[_0x9896('0x5b')]['ids'][_0x5c65d3]),'FaxQueueId':Number(_0x5a009f['params']['id'])});}return _0x397849;});}})[_0x9896('0x30')](respondWithResult(_0x25d684,null))[_0x9896('0x4e')](handleError(_0x25d684,null));};exports[_0x9896('0x91')]=function(_0x386a6f,_0x468a07,_0x5895ce){return db[_0x9896('0x4c')]['find']({'where':{'id':_0x386a6f['params']['id']}})[_0x9896('0x30')](handleEntityNotFound(_0x468a07,null))[_0x9896('0x30')](function(_0x827c94){if(_0x827c94){return _0x827c94[_0x9896('0x91')](_0x386a6f[_0x9896('0x3c')]['ids'])['then'](function(){if(_[_0x9896('0x92')](_0x386a6f['query'][_0x9896('0x6e')])){for(var _0x50328d=0x0;_0x50328d<_0x386a6f[_0x9896('0x3c')]['ids'][_0x9896('0x41')];_0x50328d+=0x1){socket[_0x9896('0x76')](_0x9896('0x93'),{'UserId':Number(_0x386a6f[_0x9896('0x3c')][_0x9896('0x6e')][_0x50328d]),'FaxQueueId':Number(_0x386a6f['params']['id'])});}}else{socket[_0x9896('0x76')](_0x9896('0x93'),{'UserId':Number(_0x386a6f[_0x9896('0x3c')][_0x9896('0x6e')]),'FaxQueueId':Number(_0x386a6f['params']['id'])});}});}})[_0x9896('0x30')](respondWithStatusCode(_0x468a07,null))[_0x9896('0x4e')](handleError(_0x468a07,null));};exports[_0x9896('0x94')]=function(_0x34f4b1,_0x160057,_0x79e45d){var _0xf183b3={};var _0x226bcb={};var _0x27bdbe;var _0x8d4e5e;return db[_0x9896('0x4c')][_0x9896('0x5e')]({'where':{'id':_0x34f4b1[_0x9896('0x50')]['id']}})['then'](handleEntityNotFound(_0x160057,null))['then'](function(_0x109823){if(_0x109823){_0x27bdbe=_0x109823;_0x226bcb[_0x9896('0x3b')]=_['keys'](db['User'][_0x9896('0x37')]);_0x226bcb[_0x9896('0x3c')]=_[_0x9896('0x51')](_0x34f4b1[_0x9896('0x3c')]);_0x226bcb[_0x9896('0x3d')]=_[_0x9896('0x3e')](_0x226bcb[_0x9896('0x3b')],_0x226bcb[_0x9896('0x3c')]);_0xf183b3['attributes']=_['intersection'](_0x226bcb[_0x9896('0x3b')],qs['fields'](_0x34f4b1[_0x9896('0x3c')][_0x9896('0x40')]));_0xf183b3[_0x9896('0x3f')]=_0xf183b3[_0x9896('0x3f')][_0x9896('0x41')]?_0xf183b3[_0x9896('0x3f')]:_0x226bcb[_0x9896('0x3b')];_0xf183b3['order']=qs[_0x9896('0x45')](_0x34f4b1[_0x9896('0x3c')][_0x9896('0x45')]);_0xf183b3[_0x9896('0x46')]=qs[_0x9896('0x3d')](_[_0x9896('0x47')](_0x34f4b1[_0x9896('0x3c')],_0x226bcb[_0x9896('0x3d')]));if(_0x34f4b1[_0x9896('0x3c')][_0x9896('0x61')]){_0xf183b3[_0x9896('0x46')]=_[_0x9896('0x48')](_0xf183b3[_0x9896('0x46')],{'$or':_[_0x9896('0x49')](_0xf183b3['attributes'],function(_0x4c81b0){var _0x4a2797={};_0x4a2797[_0x4c81b0]={'$like':'%'+_0x34f4b1['query'][_0x9896('0x61')]+'%'};return _0x4a2797;})});}_0xf183b3=_[_0x9896('0x48')]({},_0xf183b3,_0x34f4b1[_0x9896('0x4b')]);return _0x27bdbe[_0x9896('0x94')](_0xf183b3);}})[_0x9896('0x30')](function(_0x4b32fd){if(_0x4b32fd){_0x8d4e5e=_0x4b32fd[_0x9896('0x41')];if(!_0x34f4b1[_0x9896('0x3c')][_0x9896('0x42')]('nolimit')){_0xf183b3['limit']=qs[_0x9896('0x26')](_0x34f4b1[_0x9896('0x3c')][_0x9896('0x26')]);_0xf183b3[_0x9896('0x25')]=qs[_0x9896('0x25')](_0x34f4b1[_0x9896('0x3c')][_0x9896('0x25')]);}return _0x27bdbe['getAgents'](_0xf183b3);}})['then'](function(_0x37cdf3){if(_0x37cdf3){return _0x37cdf3?{'count':_0x8d4e5e,'rows':_0x37cdf3}:null;}})[_0x9896('0x30')](respondWithResult(_0x160057,null))[_0x9896('0x4e')](handleError(_0x160057,null));};
\ No newline at end of file
index bf850cb..453e6c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6685=['remove','emit','hook','exports','../../mysqldb','FaxQueue','save'];(function(_0x5e386f,_0xbbf83c){var _0xc92e39=function(_0x32223d){while(--_0x32223d){_0x5e386f['push'](_0x5e386f['shift']());}};_0xc92e39(++_0xbbf83c);}(_0x6685,0x97));var _0x5668=function(_0x180f9a,_0x74b711){_0x180f9a=_0x180f9a-0x0;var _0x4344e3=_0x6685[_0x180f9a];return _0x4344e3;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x5668('0x0'))['db'][_0x5668('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5668('0x2'),'afterUpdate':'update','afterDestroy':_0x5668('0x3')};function emitEvent(_0x274e37){return function(_0x234d22,_0xc0f018,_0x4d7b40){FaxQueueEvents[_0x5668('0x4')](_0x274e37+':'+_0x234d22['id'],_0x234d22);FaxQueueEvents['emit'](_0x274e37,_0x234d22);_0x4d7b40(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0x5668('0x5')](e,emitEvent(event));}}module[_0x5668('0x6')]=FaxQueueEvents;
\ No newline at end of file
+var _0xfc60=['save','update','remove','emit','exports','events','setMaxListeners'];(function(_0x4bf1f5,_0x14025e){var _0xcd975=function(_0x25aad3){while(--_0x25aad3){_0x4bf1f5['push'](_0x4bf1f5['shift']());}};_0xcd975(++_0x14025e);}(_0xfc60,0xec));var _0x0fc6=function(_0x3ce4a2,_0xdc404){_0x3ce4a2=_0x3ce4a2-0x0;var _0x54ef49=_0xfc60[_0x3ce4a2];return _0x54ef49;};'use strict';var EventEmitter=require(_0x0fc6('0x0'));var FaxQueue=require('../../mysqldb')['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x0fc6('0x1')](0x0);var events={'afterCreate':_0x0fc6('0x2'),'afterUpdate':_0x0fc6('0x3'),'afterDestroy':_0x0fc6('0x4')};function emitEvent(_0x18c4f0){return function(_0x2bf21c,_0x427cce,_0x48a57e){FaxQueueEvents['emit'](_0x18c4f0+':'+_0x2bf21c['id'],_0x2bf21c);FaxQueueEvents[_0x0fc6('0x5')](_0x18c4f0,_0x2bf21c);_0x48a57e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x0fc6('0x6')]=FaxQueueEvents;
\ No newline at end of file
index 89c10ff..b07263e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1518=['define','FaxQueue','fax_queues','lodash','util','path','rimraf','../../config/environment','./faxQueue.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1518,0x143));var _0x8151=function(_0x6cd057,_0x445806){_0x6cd057=_0x6cd057-0x0;var _0x914b63=_0x1518[_0x6cd057];return _0x914b63;};'use strict';var _=require(_0x8151('0x0'));var util=require(_0x8151('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(_0x8151('0x2'));var rimraf=require(_0x8151('0x3'));var config=require(_0x8151('0x4'));var attributes=require(_0x8151('0x5'));module[_0x8151('0x6')]=function(_0x1187bd,_0x12b90d){return _0x1187bd[_0x8151('0x7')](_0x8151('0x8'),attributes,{'tableName':_0x8151('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf139=['fax_queues','util','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxQueue'];(function(_0x9745bb,_0x2f1992){var _0x51088b=function(_0x5b1e79){while(--_0x5b1e79){_0x9745bb['push'](_0x9745bb['shift']());}};_0x51088b(++_0x2f1992);}(_0xf139,0x64));var _0x9f13=function(_0xf0a32,_0x5184ec){_0xf0a32=_0xf0a32-0x0;var _0x36ecf8=_0xf139[_0xf0a32];return _0x36ecf8;};'use strict';var _=require('lodash');var util=require(_0x9f13('0x0'));var logger=require('../../config/logger')(_0x9f13('0x1'));var moment=require('moment');var BPromise=require(_0x9f13('0x2'));var rp=require(_0x9f13('0x3'));var fs=require('fs');var path=require(_0x9f13('0x4'));var rimraf=require(_0x9f13('0x5'));var config=require(_0x9f13('0x6'));var attributes=require('./faxQueue.attributes');module[_0x9f13('0x7')]=function(_0x37c69e,_0x16b288){return _0x37c69e[_0x9f13('0x8')](_0x9f13('0x9'),attributes,{'tableName':_0x9f13('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8721649..3124a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc010=['then','stringify','ShowFaxQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','socket.io-emitter','register','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetFaxQueue','FaxQueue','options','raw','where','attributes','limit','include','map','model'];(function(_0x538543,_0x22103f){var _0x5030a3=function(_0x4e855e){while(--_0x4e855e){_0x538543['push'](_0x538543['shift']());}};_0x5030a3(++_0x22103f);}(_0xc010,0x16b));var _0x0c01=function(_0x15f0eb,_0x190944){_0x15f0eb=_0x15f0eb-0x0;var _0x3e60a3=_0xc010[_0x15f0eb];return _0x3e60a3;};'use strict';var _=require(_0x0c01('0x0'));var util=require(_0x0c01('0x1'));var moment=require(_0x0c01('0x2'));var BPromise=require(_0x0c01('0x3'));var rs=require(_0x0c01('0x4'));var fs=require('fs');var Redis=require(_0x0c01('0x5'));var db=require(_0x0c01('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x0c01('0x7'))(_0x0c01('0x8'));var config=require(_0x0c01('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0c01('0xa')]['http']({'port':0x232a});config[_0x0c01('0xb')]=_['defaults'](config[_0x0c01('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x0c01('0xc'))(new Redis(config[_0x0c01('0xb')]));require('./faxQueue.socket')[_0x0c01('0xd')](socket);function respondWithRpcPromise(_0x2f16ca,_0x1c0e15,_0x3f5b9e){return new BPromise(function(_0x57b8d0,_0x562c1e){return client['request'](_0x2f16ca,_0x3f5b9e)['then'](function(_0x4678cb){logger[_0x0c01('0xe')](_0x0c01('0xf'),_0x1c0e15,_0x0c01('0x10'));logger[_0x0c01('0x11')](_0x0c01('0x12'),_0x1c0e15,_0x0c01('0x10'),JSON['stringify'](_0x4678cb));if(_0x4678cb['error']){if(_0x4678cb[_0x0c01('0x13')]['code']===0x1f4){logger[_0x0c01('0x13')](_0x0c01('0xf'),_0x1c0e15,_0x4678cb[_0x0c01('0x13')][_0x0c01('0x14')]);return _0x562c1e(_0x4678cb[_0x0c01('0x13')][_0x0c01('0x14')]);}logger[_0x0c01('0x13')](_0x0c01('0xf'),_0x1c0e15,_0x4678cb[_0x0c01('0x13')]['message']);return _0x57b8d0(_0x4678cb[_0x0c01('0x13')][_0x0c01('0x14')]);}else{logger[_0x0c01('0xe')](_0x0c01('0xf'),_0x1c0e15,_0x0c01('0x10'));_0x57b8d0(_0x4678cb[_0x0c01('0x15')][_0x0c01('0x14')]);}})[_0x0c01('0x16')](function(_0x266430){logger[_0x0c01('0x13')](_0x0c01('0xf'),_0x1c0e15,_0x266430);_0x562c1e(_0x266430);});});}exports[_0x0c01('0x17')]=function(_0x226674){var _0x3efa3a=this;return new Promise(function(_0x322e09,_0x5abb24){return db[_0x0c01('0x18')]['findAll']({'raw':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1a')]===undefined?!![]:![]:!![],'where':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1b')]||null:null,'attributes':_0x226674['options']?_0x226674['options'][_0x0c01('0x1c')]||null:null,'limit':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1d')]||null:null,'include':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1e')]?_[_0x0c01('0x1f')](_0x226674[_0x0c01('0x19')][_0x0c01('0x1e')],function(_0x122272){return{'model':db[_0x122272[_0x0c01('0x20')]],'as':_0x122272['as'],'attributes':_0x122272[_0x0c01('0x1c')],'include':_0x122272['include']?_[_0x0c01('0x1f')](_0x122272['include'],function(_0x5eafc5){return{'model':db[_0x5eafc5['model']],'as':_0x5eafc5['as'],'attributes':_0x5eafc5[_0x0c01('0x1c')],'include':_0x5eafc5[_0x0c01('0x1e')]?_[_0x0c01('0x1f')](_0x5eafc5['include'],function(_0x1c3184){return{'model':db[_0x1c3184[_0x0c01('0x20')]],'as':_0x1c3184['as'],'attributes':_0x1c3184[_0x0c01('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x0c01('0x21')](function(_0x3f4edc){logger[_0x0c01('0xe')]('GetFaxQueue',_0x226674);logger['debug'](_0x0c01('0x17'),_0x226674,JSON[_0x0c01('0x22')](_0x3f4edc));_0x322e09(_0x3f4edc);})[_0x0c01('0x16')](function(_0x599621){logger[_0x0c01('0x13')](_0x0c01('0x17'),_0x599621[_0x0c01('0x14')],_0x226674);_0x5abb24(_0x3efa3a[_0x0c01('0x13')](0x1f4,_0x599621['message']));});});};exports['ShowFaxQueue']=function(_0x6a71c6){var _0x103a3d=this;return new Promise(function(_0x4ad442,_0x26f0e7){return db[_0x0c01('0x18')]['find']({'raw':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1a')]===undefined?!![]:![]:!![],'where':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1b')]||null:null,'attributes':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1c')]||null:null,'include':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1e')]?_['map'](_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1e')],function(_0x26de26){return{'model':db[_0x26de26[_0x0c01('0x20')]],'as':_0x26de26['as'],'attributes':_0x26de26[_0x0c01('0x1c')],'include':_0x26de26['include']?_[_0x0c01('0x1f')](_0x26de26[_0x0c01('0x1e')],function(_0x8880c2){return{'model':db[_0x8880c2['model']],'as':_0x8880c2['as'],'attributes':_0x8880c2[_0x0c01('0x1c')],'include':_0x8880c2[_0x0c01('0x1e')]?_[_0x0c01('0x1f')](_0x8880c2[_0x0c01('0x1e')],function(_0x2eb02a){return{'model':db[_0x2eb02a[_0x0c01('0x20')]],'as':_0x2eb02a['as'],'attributes':_0x2eb02a['attributes']};}):[]};}):[]};}):[]:[]})[_0x0c01('0x21')](function(_0xe74c4e){logger[_0x0c01('0xe')](_0x0c01('0x23'),_0x6a71c6);logger[_0x0c01('0x11')]('ShowFaxQueue',_0x6a71c6,JSON['stringify'](_0xe74c4e));_0x4ad442(_0xe74c4e);})[_0x0c01('0x16')](function(_0x5a8c2a){logger['error'](_0x0c01('0x23'),_0x5a8c2a[_0x0c01('0x14')],_0x6a71c6);_0x26f0e7(_0x103a3d[_0x0c01('0x13')](0x1f4,_0x5a8c2a[_0x0c01('0x14')]));});});};
\ No newline at end of file
+var _0xcb99=['defaults','localhost','socket.io-emitter','./faxQueue.socket','register','info','request\x20sent','debug','error','code','FaxQueue,\x20%s,\x20%s','message','result','GetFaxQueue','FaxQueue','options','raw','where','attributes','map','model','include','then','catch','ShowFaxQueue','find','stringify','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcb99,0x14b));var _0x9cb9=function(_0x48b122,_0x2e66d2){_0x48b122=_0x48b122-0x0;var _0x5f573a=_0xcb99[_0x48b122];return _0x5f573a;};'use strict';var _=require('lodash');var util=require(_0x9cb9('0x0'));var moment=require('moment');var BPromise=require(_0x9cb9('0x1'));var rs=require(_0x9cb9('0x2'));var fs=require('fs');var Redis=require(_0x9cb9('0x3'));var db=require(_0x9cb9('0x4'))['db'];var utils=require(_0x9cb9('0x5'));var logger=require(_0x9cb9('0x6'))('rpc');var config=require(_0x9cb9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9cb9('0x8')][_0x9cb9('0x9')]({'port':0x232a});config[_0x9cb9('0xa')]=_[_0x9cb9('0xb')](config['redis'],{'host':_0x9cb9('0xc'),'port':0x18eb});var socket=require(_0x9cb9('0xd'))(new Redis(config[_0x9cb9('0xa')]));require(_0x9cb9('0xe'))[_0x9cb9('0xf')](socket);function respondWithRpcPromise(_0x5a0d20,_0x19fd81,_0x54a1b1){return new BPromise(function(_0x5a18e6,_0x32811f){return client['request'](_0x5a0d20,_0x54a1b1)['then'](function(_0x390c40){logger[_0x9cb9('0x10')]('FaxQueue,\x20%s,\x20%s',_0x19fd81,_0x9cb9('0x11'));logger[_0x9cb9('0x12')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x19fd81,_0x9cb9('0x11'),JSON['stringify'](_0x390c40));if(_0x390c40[_0x9cb9('0x13')]){if(_0x390c40[_0x9cb9('0x13')][_0x9cb9('0x14')]===0x1f4){logger[_0x9cb9('0x13')](_0x9cb9('0x15'),_0x19fd81,_0x390c40[_0x9cb9('0x13')]['message']);return _0x32811f(_0x390c40['error'][_0x9cb9('0x16')]);}logger[_0x9cb9('0x13')](_0x9cb9('0x15'),_0x19fd81,_0x390c40['error'][_0x9cb9('0x16')]);return _0x5a18e6(_0x390c40[_0x9cb9('0x13')][_0x9cb9('0x16')]);}else{logger[_0x9cb9('0x10')](_0x9cb9('0x15'),_0x19fd81,'request\x20sent');_0x5a18e6(_0x390c40[_0x9cb9('0x17')][_0x9cb9('0x16')]);}})['catch'](function(_0x306ff2){logger[_0x9cb9('0x13')](_0x9cb9('0x15'),_0x19fd81,_0x306ff2);_0x32811f(_0x306ff2);});});}exports[_0x9cb9('0x18')]=function(_0x17863c){var _0x4fb8cd=this;return new Promise(function(_0x20d50f,_0x34693f){return db[_0x9cb9('0x19')]['findAll']({'raw':_0x17863c[_0x9cb9('0x1a')]?_0x17863c[_0x9cb9('0x1a')][_0x9cb9('0x1b')]===undefined?!![]:![]:!![],'where':_0x17863c[_0x9cb9('0x1a')]?_0x17863c['options'][_0x9cb9('0x1c')]||null:null,'attributes':_0x17863c[_0x9cb9('0x1a')]?_0x17863c[_0x9cb9('0x1a')][_0x9cb9('0x1d')]||null:null,'limit':_0x17863c['options']?_0x17863c['options']['limit']||null:null,'include':_0x17863c[_0x9cb9('0x1a')]?_0x17863c[_0x9cb9('0x1a')]['include']?_[_0x9cb9('0x1e')](_0x17863c[_0x9cb9('0x1a')]['include'],function(_0x2672a7){return{'model':db[_0x2672a7[_0x9cb9('0x1f')]],'as':_0x2672a7['as'],'attributes':_0x2672a7[_0x9cb9('0x1d')],'include':_0x2672a7[_0x9cb9('0x20')]?_['map'](_0x2672a7[_0x9cb9('0x20')],function(_0x1424c0){return{'model':db[_0x1424c0['model']],'as':_0x1424c0['as'],'attributes':_0x1424c0[_0x9cb9('0x1d')],'include':_0x1424c0[_0x9cb9('0x20')]?_['map'](_0x1424c0['include'],function(_0x384b9e){return{'model':db[_0x384b9e[_0x9cb9('0x1f')]],'as':_0x384b9e['as'],'attributes':_0x384b9e[_0x9cb9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9cb9('0x21')](function(_0x2cb8e6){logger[_0x9cb9('0x10')](_0x9cb9('0x18'),_0x17863c);logger['debug']('GetFaxQueue',_0x17863c,JSON['stringify'](_0x2cb8e6));_0x20d50f(_0x2cb8e6);})[_0x9cb9('0x22')](function(_0x124a5d){logger[_0x9cb9('0x13')]('GetFaxQueue',_0x124a5d[_0x9cb9('0x16')],_0x17863c);_0x34693f(_0x4fb8cd[_0x9cb9('0x13')](0x1f4,_0x124a5d['message']));});});};exports[_0x9cb9('0x23')]=function(_0x2c234c){var _0x57fc09=this;return new Promise(function(_0x2a0c81,_0x4e4397){return db[_0x9cb9('0x19')][_0x9cb9('0x24')]({'raw':_0x2c234c[_0x9cb9('0x1a')]?_0x2c234c[_0x9cb9('0x1a')][_0x9cb9('0x1b')]===undefined?!![]:![]:!![],'where':_0x2c234c[_0x9cb9('0x1a')]?_0x2c234c['options'][_0x9cb9('0x1c')]||null:null,'attributes':_0x2c234c[_0x9cb9('0x1a')]?_0x2c234c[_0x9cb9('0x1a')][_0x9cb9('0x1d')]||null:null,'include':_0x2c234c[_0x9cb9('0x1a')]?_0x2c234c[_0x9cb9('0x1a')][_0x9cb9('0x20')]?_['map'](_0x2c234c[_0x9cb9('0x1a')][_0x9cb9('0x20')],function(_0x12e586){return{'model':db[_0x12e586[_0x9cb9('0x1f')]],'as':_0x12e586['as'],'attributes':_0x12e586[_0x9cb9('0x1d')],'include':_0x12e586[_0x9cb9('0x20')]?_[_0x9cb9('0x1e')](_0x12e586[_0x9cb9('0x20')],function(_0x569c25){return{'model':db[_0x569c25[_0x9cb9('0x1f')]],'as':_0x569c25['as'],'attributes':_0x569c25['attributes'],'include':_0x569c25['include']?_[_0x9cb9('0x1e')](_0x569c25[_0x9cb9('0x20')],function(_0x2fd772){return{'model':db[_0x2fd772[_0x9cb9('0x1f')]],'as':_0x2fd772['as'],'attributes':_0x2fd772[_0x9cb9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9cb9('0x21')](function(_0x2288c7){logger[_0x9cb9('0x10')]('ShowFaxQueue',_0x2c234c);logger['debug']('ShowFaxQueue',_0x2c234c,JSON[_0x9cb9('0x25')](_0x2288c7));_0x2a0c81(_0x2288c7);})[_0x9cb9('0x22')](function(_0x7ee262){logger['error'](_0x9cb9('0x23'),_0x7ee262[_0x9cb9('0x16')],_0x2c234c);_0x4e4397(_0x57fc09[_0x9cb9('0x13')](0x1f4,_0x7ee262[_0x9cb9('0x16')]));});});};
\ No newline at end of file
index 7785c49..f4fa5eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f9=['emit','removeListener','length','faxQueue:','remove','update'];(function(_0x19f2a8,_0x1bc840){var _0x596237=function(_0x4afbad){while(--_0x4afbad){_0x19f2a8['push'](_0x19f2a8['shift']());}};_0x596237(++_0x1bc840);}(_0xd1f9,0x88));var _0x9d1f=function(_0x302d0b,_0x2c7dbb){_0x302d0b=_0x302d0b-0x0;var _0x3b9e1d=_0xd1f9[_0x302d0b];return _0x3b9e1d;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=['save',_0x9d1f('0x0'),_0x9d1f('0x1')];function createListener(_0x3ebd6f,_0x1b7dcf){return function(_0x2814e4){_0x1b7dcf[_0x9d1f('0x2')](_0x3ebd6f,_0x2814e4);};}function removeListener(_0x283b14,_0xf56850){return function(){FaxQueueEvents[_0x9d1f('0x3')](_0x283b14,_0xf56850);};}exports['register']=function(_0x3c4bad){for(var _0x1a72d8=0x0,_0x2c146b=events[_0x9d1f('0x4')];_0x1a72d8<_0x2c146b;_0x1a72d8++){var _0x10ce17=events[_0x1a72d8];var _0x270b08=createListener(_0x9d1f('0x5')+_0x10ce17,_0x3c4bad);FaxQueueEvents['on'](_0x10ce17,_0x270b08);}};
\ No newline at end of file
+var _0x4605=['length','faxQueue:','./faxQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x4cdba5,_0x5373a7){var _0x3be43d=function(_0x5e007c){while(--_0x5e007c){_0x4cdba5['push'](_0x4cdba5['shift']());}};_0x3be43d(++_0x5373a7);}(_0x4605,0x1d6));var _0x5460=function(_0xe73228,_0x226565){_0xe73228=_0xe73228-0x0;var _0x3288ea=_0x4605[_0xe73228];return _0x3288ea;};'use strict';var FaxQueueEvents=require(_0x5460('0x0'));var events=[_0x5460('0x1'),_0x5460('0x2'),_0x5460('0x3')];function createListener(_0x4eb351,_0x2ec187){return function(_0x445244){_0x2ec187[_0x5460('0x4')](_0x4eb351,_0x445244);};}function removeListener(_0x1e1f39,_0x550c5c){return function(){FaxQueueEvents[_0x5460('0x5')](_0x1e1f39,_0x550c5c);};}exports[_0x5460('0x6')]=function(_0xca3553){for(var _0x39cad0=0x0,_0x5ae55d=events[_0x5460('0x7')];_0x39cad0<_0x5ae55d;_0x39cad0++){var _0x2b86a6=events[_0x39cad0];var _0x568083=createListener(_0x5460('0x8')+_0x2b86a6,_0xca3553);FaxQueueEvents['on'](_0x2b86a6,_0x568083);}};
\ No newline at end of file
index 1051816..743e054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee1=['destroy','removeTeams','removeAgents','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','index','isAuthenticated','/:id','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','update','delete'];(function(_0x117473,_0x485375){var _0x38711a=function(_0x33e119){while(--_0x33e119){_0x117473['push'](_0x117473['shift']());}};_0x38711a(++_0x485375);}(_0x7ee1,0x8d));var _0x17ee=function(_0x5c1058,_0x3779c3){_0x5c1058=_0x5c1058-0x0;var _0x265798=_0x7ee1[_0x5c1058];return _0x265798;};'use strict';var multer=require(_0x17ee('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x17ee('0x1'));var router=express[_0x17ee('0x2')]();var fs_extra=require(_0x17ee('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x17ee('0x4'));var config=require(_0x17ee('0x5'));var controller=require(_0x17ee('0x6'));router[_0x17ee('0x7')]('/',auth['isAuthenticated'](),controller[_0x17ee('0x8')]);router[_0x17ee('0x7')]('/describe',auth[_0x17ee('0x9')](),controller['describe']);router[_0x17ee('0x7')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller['show']);router['get']('/:id/members',auth[_0x17ee('0x9')](),controller['getMembers']);router[_0x17ee('0x7')](_0x17ee('0xb'),auth[_0x17ee('0x9')](),controller[_0x17ee('0xc')]);router['get'](_0x17ee('0xd'),auth['isAuthenticated'](),controller[_0x17ee('0xe')]);router[_0x17ee('0xf')]('/',auth[_0x17ee('0x9')](),controller[_0x17ee('0x10')]);router[_0x17ee('0xf')](_0x17ee('0xb'),auth[_0x17ee('0x9')](),controller[_0x17ee('0x11')]);router[_0x17ee('0xf')](_0x17ee('0xd'),auth[_0x17ee('0x9')](),controller['addAgents']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x17ee('0x12')]);router[_0x17ee('0x13')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller[_0x17ee('0x14')]);router[_0x17ee('0x13')](_0x17ee('0xb'),auth['isAuthenticated'](),controller[_0x17ee('0x15')]);router[_0x17ee('0x13')](_0x17ee('0xd'),auth[_0x17ee('0x9')](),controller[_0x17ee('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x11e5=['update','destroy','removeTeams','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x11e5,0x8b));var _0x511e=function(_0x3fe6df,_0x5a04d4){_0x3fe6df=_0x3fe6df-0x0;var _0x372a0e=_0x11e5[_0x3fe6df];return _0x372a0e;};'use strict';var multer=require(_0x511e('0x0'));var util=require('util');var path=require(_0x511e('0x1'));var timeout=require(_0x511e('0x2'));var express=require('express');var router=express[_0x511e('0x3')]();var fs_extra=require(_0x511e('0x4'));var auth=require(_0x511e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x511e('0x6'));var controller=require('./faxQueue.controller');router['get']('/',auth[_0x511e('0x7')](),controller[_0x511e('0x8')]);router[_0x511e('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x511e('0xa')]);router[_0x511e('0x9')](_0x511e('0xb'),auth[_0x511e('0x7')](),controller[_0x511e('0xc')]);router[_0x511e('0x9')](_0x511e('0xd'),auth[_0x511e('0x7')](),controller[_0x511e('0xe')]);router[_0x511e('0x9')](_0x511e('0xf'),auth['isAuthenticated'](),controller[_0x511e('0x10')]);router['get']('/:id/users',auth[_0x511e('0x7')](),controller[_0x511e('0x11')]);router[_0x511e('0x12')]('/',auth[_0x511e('0x7')](),controller[_0x511e('0x13')]);router[_0x511e('0x12')]('/:id/teams',auth[_0x511e('0x7')](),controller[_0x511e('0x14')]);router['post'](_0x511e('0x15'),auth[_0x511e('0x7')](),controller['addAgents']);router[_0x511e('0x16')](_0x511e('0xb'),auth[_0x511e('0x7')](),controller[_0x511e('0x17')]);router['delete'](_0x511e('0xb'),auth[_0x511e('0x7')](),controller[_0x511e('0x18')]);router['delete'](_0x511e('0xf'),auth['isAuthenticated'](),controller[_0x511e('0x19')]);router['delete']('/:id/users',auth[_0x511e('0x7')](),controller['removeAgents']);module[_0x511e('0x1a')]=router;
\ No newline at end of file
index 392a9cc..5a11fa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1923=['DATE','sequelize','exports','STRING'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0x1923,0x71));var _0x3192=function(_0xb751c2,_0x1f61a9){_0xb751c2=_0xb751c2-0x0;var _0x2a03b4=_0x1923[_0xb751c2];return _0x2a03b4;};'use strict';var moment=require('moment');var Sequelize=require(_0x3192('0x0'));module[_0x3192('0x1')]={'uniqueid':{'type':Sequelize[_0x3192('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3192('0x2')]},'joinAt':{'type':Sequelize[_0x3192('0x3')]},'leaveAt':{'type':Sequelize[_0x3192('0x3')]},'acceptAt':{'type':Sequelize[_0x3192('0x3')]},'exitAt':{'type':Sequelize[_0x3192('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6d53=['STRING','DATE','moment','sequelize'];(function(_0x5c9307,_0x5b97e4){var _0x373e29=function(_0xefebbd){while(--_0xefebbd){_0x5c9307['push'](_0x5c9307['shift']());}};_0x373e29(++_0x5b97e4);}(_0x6d53,0x17a));var _0x36d5=function(_0x3fb989,_0x4b69c6){_0x3fb989=_0x3fb989-0x0;var _0x4df03e=_0x6d53[_0x3fb989];return _0x4df03e;};'use strict';var moment=require(_0x36d5('0x0'));var Sequelize=require(_0x36d5('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x36d5('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x36d5('0x2')]},'joinAt':{'type':Sequelize[_0x36d5('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x36d5('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x36d5('0x2')]}};
\ No newline at end of file
index 14e9644..e8146d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6822=['pick','filter','VIRTUAL','options','include','rows','catch','show','params','keys','includeAll','merge','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where'];(function(_0x2595a6,_0x48fc45){var _0x460197=function(_0x18f9db){while(--_0x18f9db){_0x2595a6['push'](_0x2595a6['shift']());}};_0x460197(++_0x48fc45);}(_0x6822,0x18c));var _0x2682=function(_0xe14bee,_0x2233a8){_0xe14bee=_0xe14bee-0x0;var _0x4280ba=_0x6822[_0xe14bee];return _0x4280ba;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2682('0x0'));var zipdir=require(_0x2682('0x1'));var jsonpatch=require(_0x2682('0x2'));var rp=require(_0x2682('0x3'));var moment=require('moment');var BPromise=require(_0x2682('0x4'));var Mustache=require(_0x2682('0x5'));var util=require(_0x2682('0x6'));var path=require(_0x2682('0x7'));var sox=require(_0x2682('0x8'));var csv=require(_0x2682('0x9'));var ejs=require(_0x2682('0xa'));var fs=require('fs');var fs_extra=require(_0x2682('0xb'));var _=require(_0x2682('0xc'));var squel=require(_0x2682('0xd'));var crypto=require(_0x2682('0xe'));var jsforce=require(_0x2682('0xf'));var deskjs=require(_0x2682('0x10'));var toCsv=require(_0x2682('0x9'));var querystring=require('querystring');var Papa=require(_0x2682('0x11'));var Redis=require(_0x2682('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2682('0x13'));var logger=require(_0x2682('0x14'))('api');var utils=require(_0x2682('0x15'));var config=require(_0x2682('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2682('0x17'))['db'];function respondWithStatusCode(_0x2b29eb,_0x1feca6){_0x1feca6=_0x1feca6||0xcc;return function(_0x2cd01f){if(_0x2cd01f){return _0x2b29eb[_0x2682('0x18')](_0x1feca6);}return _0x2b29eb[_0x2682('0x19')](_0x1feca6)[_0x2682('0x1a')]();};}function respondWithResult(_0x41ec1c,_0xfb9e0c){_0xfb9e0c=_0xfb9e0c||0xc8;return function(_0x18dab9){if(_0x18dab9){return _0x41ec1c[_0x2682('0x19')](_0xfb9e0c)[_0x2682('0x1b')](_0x18dab9);}};}function respondWithFilteredResult(_0x412a0c,_0x1ac17b){return function(_0x212aaf){if(_0x212aaf){var _0x545ba8=typeof _0x1ac17b['offset']===_0x2682('0x1c')&&typeof _0x1ac17b[_0x2682('0x1d')]===_0x2682('0x1c');var _0x4df201=_0x212aaf[_0x2682('0x1e')];var _0x494946=_0x545ba8?0x0:_0x1ac17b[_0x2682('0x1f')];var _0x19391e=_0x545ba8?_0x212aaf[_0x2682('0x1e')]:_0x1ac17b[_0x2682('0x1f')]+_0x1ac17b[_0x2682('0x1d')];var _0x34cf1d;if(_0x19391e>=_0x4df201){_0x19391e=_0x4df201;_0x34cf1d=0xc8;}else{_0x34cf1d=0xce;}_0x412a0c['status'](_0x34cf1d);return _0x412a0c[_0x2682('0x20')]('Content-Range',_0x494946+'-'+_0x19391e+'/'+_0x4df201)[_0x2682('0x1b')](_0x212aaf);}return null;};}function patchUpdates(_0x2e03e6){return function(_0x348924){try{jsonpatch[_0x2682('0x21')](_0x348924,_0x2e03e6,!![]);}catch(_0x23641e){return BPromise[_0x2682('0x22')](_0x23641e);}return _0x348924[_0x2682('0x23')]();};}function saveUpdates(_0x49c98a,_0x57ae26){return function(_0x599726){if(_0x599726){return _0x599726[_0x2682('0x24')](_0x49c98a)[_0x2682('0x25')](function(_0x518c65){return _0x518c65;});}return null;};}function removeEntity(_0xa27b38,_0x35aa4c){return function(_0x2b2d81){if(_0x2b2d81){return _0x2b2d81[_0x2682('0x26')]()['then'](function(){_0xa27b38[_0x2682('0x19')](0xcc)[_0x2682('0x1a')]();});}};}function handleEntityNotFound(_0x361791,_0x1d541e){return function(_0x431fbd){if(!_0x431fbd){_0x361791[_0x2682('0x18')](0x194);}return _0x431fbd;};}function handleError(_0x5d325b,_0x4afd1d){_0x4afd1d=_0x4afd1d||0x1f4;return function(_0x48eee6){logger['error'](_0x48eee6[_0x2682('0x27')]);if(_0x48eee6[_0x2682('0x28')]){delete _0x48eee6[_0x2682('0x28')];}_0x5d325b[_0x2682('0x19')](_0x4afd1d)[_0x2682('0x29')](_0x48eee6);};}exports[_0x2682('0x2a')]=function(_0x893e02,_0x90f2ec){var _0x591660={},_0x9384b5={},_0x8b809b={'count':0x0,'rows':[]};var _0x545543=_[_0x2682('0x2b')](db[_0x2682('0x2c')][_0x2682('0x2d')],function(_0x226b98){return{'name':_0x226b98[_0x2682('0x2e')],'type':_0x226b98[_0x2682('0x2f')][_0x2682('0x30')]};});_0x9384b5[_0x2682('0x31')]=_[_0x2682('0x2b')](_0x545543,_0x2682('0x28'));_0x9384b5[_0x2682('0x32')]=_['keys'](_0x893e02[_0x2682('0x32')]);_0x9384b5[_0x2682('0x33')]=_[_0x2682('0x34')](_0x9384b5[_0x2682('0x31')],_0x9384b5[_0x2682('0x32')]);_0x591660['attributes']=_['intersection'](_0x9384b5[_0x2682('0x31')],qs[_0x2682('0x35')](_0x893e02[_0x2682('0x32')]['fields']));_0x591660[_0x2682('0x36')]=_0x591660[_0x2682('0x36')][_0x2682('0x37')]?_0x591660[_0x2682('0x36')]:_0x9384b5['model'];if(!_0x893e02['query'][_0x2682('0x38')]('nolimit')){_0x591660[_0x2682('0x1d')]=qs[_0x2682('0x1d')](_0x893e02[_0x2682('0x32')][_0x2682('0x1d')]);_0x591660[_0x2682('0x1f')]=qs[_0x2682('0x1f')](_0x893e02['query']['offset']);}_0x591660[_0x2682('0x39')]=qs['sort'](_0x893e02[_0x2682('0x32')][_0x2682('0x3a')]);_0x591660[_0x2682('0x3b')]=qs[_0x2682('0x33')](_[_0x2682('0x3c')](_0x893e02[_0x2682('0x32')],_0x9384b5[_0x2682('0x33')]),_0x545543);if(_0x893e02[_0x2682('0x32')][_0x2682('0x3d')]){_0x591660[_0x2682('0x3b')]=_['merge'](_0x591660[_0x2682('0x3b')],{'$or':_['map'](_0x545543,function(_0x5a812d){if(_0x5a812d[_0x2682('0x2f')]!==_0x2682('0x3e')){var _0x3ea618={};_0x3ea618[_0x5a812d[_0x2682('0x28')]]={'$like':'%'+_0x893e02[_0x2682('0x32')][_0x2682('0x3d')]+'%'};return _0x3ea618;}})});}_0x591660=_['merge']({},_0x591660,_0x893e02[_0x2682('0x3f')]);var _0x19099d={'where':_0x591660[_0x2682('0x3b')]};return db[_0x2682('0x2c')][_0x2682('0x1e')](_0x19099d)['then'](function(_0x1f46cf){_0x8b809b['count']=_0x1f46cf;if(_0x893e02[_0x2682('0x32')]['includeAll']){_0x591660[_0x2682('0x40')]=[{'all':!![]}];}return db[_0x2682('0x2c')]['findAll'](_0x591660);})[_0x2682('0x25')](function(_0x392c4b){_0x8b809b[_0x2682('0x41')]=_0x392c4b;return _0x8b809b;})[_0x2682('0x25')](respondWithFilteredResult(_0x90f2ec,_0x591660))[_0x2682('0x42')](handleError(_0x90f2ec,null));};exports[_0x2682('0x43')]=function(_0x34a6c3,_0x209da8){var _0x34adb0={'raw':!![],'where':{'id':_0x34a6c3[_0x2682('0x44')]['id']}},_0x16ba45={};_0x16ba45[_0x2682('0x31')]=_['keys'](db['FaxQueueReport'][_0x2682('0x2d')]);_0x16ba45[_0x2682('0x32')]=_[_0x2682('0x45')](_0x34a6c3[_0x2682('0x32')]);_0x16ba45[_0x2682('0x33')]=_[_0x2682('0x34')](_0x16ba45[_0x2682('0x31')],_0x16ba45['query']);_0x34adb0['attributes']=_[_0x2682('0x34')](_0x16ba45[_0x2682('0x31')],qs[_0x2682('0x35')](_0x34a6c3[_0x2682('0x32')][_0x2682('0x35')]));_0x34adb0['attributes']=_0x34adb0['attributes'][_0x2682('0x37')]?_0x34adb0[_0x2682('0x36')]:_0x16ba45[_0x2682('0x31')];if(_0x34a6c3[_0x2682('0x32')][_0x2682('0x46')]){_0x34adb0[_0x2682('0x40')]=[{'all':!![]}];}_0x34adb0=_[_0x2682('0x47')]({},_0x34adb0,_0x34a6c3[_0x2682('0x3f')]);return db[_0x2682('0x2c')]['find'](_0x34adb0)[_0x2682('0x25')](handleEntityNotFound(_0x209da8,null))['then'](respondWithResult(_0x209da8,null))['catch'](handleError(_0x209da8,null));};exports[_0x2682('0x48')]=function(_0x29243c,_0x487779){return db['FaxQueueReport'][_0x2682('0x48')](_0x29243c[_0x2682('0x49')],{})[_0x2682('0x25')](respondWithResult(_0x487779,0xc9))[_0x2682('0x42')](handleError(_0x487779,null));};exports[_0x2682('0x24')]=function(_0xf3cd03,_0x28805b){if(_0xf3cd03[_0x2682('0x49')]['id']){delete _0xf3cd03[_0x2682('0x49')]['id'];}return db[_0x2682('0x2c')]['find']({'where':{'id':_0xf3cd03[_0x2682('0x44')]['id']}})[_0x2682('0x25')](handleEntityNotFound(_0x28805b,null))['then'](saveUpdates(_0xf3cd03[_0x2682('0x49')],null))[_0x2682('0x25')](respondWithResult(_0x28805b,null))['catch'](handleError(_0x28805b,null));};exports['destroy']=function(_0x1d9c4e,_0x2379c3){return db[_0x2682('0x2c')][_0x2682('0x4a')]({'where':{'id':_0x1d9c4e[_0x2682('0x44')]['id']}})['then'](handleEntityNotFound(_0x2379c3,null))['then'](removeEntity(_0x2379c3,null))[_0x2682('0x42')](handleError(_0x2379c3,null));};exports[_0x2682('0x4b')]=function(_0x416cab,_0x58c9cd){return db[_0x2682('0x2c')]['describe']()[_0x2682('0x25')](respondWithResult(_0x58c9cd,null))[_0x2682('0x42')](handleError(_0x58c9cd,null));};
\ No newline at end of file
+var _0x9c2c=['catch','show','params','keys','length','include','find','create','body','describe','eml-format','rimraf','moment','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack','name','send','map','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','FaxQueueReport','findAll','rows'];(function(_0x30dbb6,_0x44b94d){var _0x1d0135=function(_0x14ed7a){while(--_0x14ed7a){_0x30dbb6['push'](_0x30dbb6['shift']());}};_0x1d0135(++_0x44b94d);}(_0x9c2c,0x1c0));var _0xc9c2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c2c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc9c2('0x0'));var rimraf=require(_0xc9c2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc9c2('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc9c2('0x3'));var util=require(_0xc9c2('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0xc9c2('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc9c2('0x6'));var _=require(_0xc9c2('0x7'));var squel=require(_0xc9c2('0x8'));var crypto=require(_0xc9c2('0x9'));var jsforce=require(_0xc9c2('0xa'));var deskjs=require(_0xc9c2('0xb'));var toCsv=require(_0xc9c2('0x5'));var querystring=require(_0xc9c2('0xc'));var Papa=require(_0xc9c2('0xd'));var Redis=require('ioredis');var authService=require(_0xc9c2('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc9c2('0xf'));var hardwareService=require(_0xc9c2('0x10'));var logger=require(_0xc9c2('0x11'))(_0xc9c2('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc9c2('0x13'));var db=require(_0xc9c2('0x14'))['db'];function respondWithStatusCode(_0x568f69,_0x7ec780){_0x7ec780=_0x7ec780||0xcc;return function(_0x1f08a7){if(_0x1f08a7){return _0x568f69[_0xc9c2('0x15')](_0x7ec780);}return _0x568f69[_0xc9c2('0x16')](_0x7ec780)[_0xc9c2('0x17')]();};}function respondWithResult(_0x3b0058,_0x33b288){_0x33b288=_0x33b288||0xc8;return function(_0x132702){if(_0x132702){return _0x3b0058[_0xc9c2('0x16')](_0x33b288)[_0xc9c2('0x18')](_0x132702);}};}function respondWithFilteredResult(_0xf94209,_0x383667){return function(_0x480d7c){if(_0x480d7c){var _0x27840d=typeof _0x383667[_0xc9c2('0x19')]===_0xc9c2('0x1a')&&typeof _0x383667[_0xc9c2('0x1b')]===_0xc9c2('0x1a');var _0x49413b=_0x480d7c[_0xc9c2('0x1c')];var _0x37c027=_0x27840d?0x0:_0x383667[_0xc9c2('0x19')];var _0x4e4ded=_0x27840d?_0x480d7c[_0xc9c2('0x1c')]:_0x383667[_0xc9c2('0x19')]+_0x383667[_0xc9c2('0x1b')];var _0x484ca3;if(_0x4e4ded>=_0x49413b){_0x4e4ded=_0x49413b;_0x484ca3=0xc8;}else{_0x484ca3=0xce;}_0xf94209[_0xc9c2('0x16')](_0x484ca3);return _0xf94209[_0xc9c2('0x1d')]('Content-Range',_0x37c027+'-'+_0x4e4ded+'/'+_0x49413b)['json'](_0x480d7c);}return null;};}function patchUpdates(_0x37e3){return function(_0x50f280){try{jsonpatch[_0xc9c2('0x1e')](_0x50f280,_0x37e3,!![]);}catch(_0x140c8a){return BPromise[_0xc9c2('0x1f')](_0x140c8a);}return _0x50f280[_0xc9c2('0x20')]();};}function saveUpdates(_0x3e1774,_0x53c460){return function(_0x1fbac4){if(_0x1fbac4){return _0x1fbac4[_0xc9c2('0x21')](_0x3e1774)[_0xc9c2('0x22')](function(_0x11cc07){return _0x11cc07;});}return null;};}function removeEntity(_0x32c372,_0x385030){return function(_0x56e515){if(_0x56e515){return _0x56e515[_0xc9c2('0x23')]()[_0xc9c2('0x22')](function(){_0x32c372['status'](0xcc)[_0xc9c2('0x17')]();});}};}function handleEntityNotFound(_0x4b3b97,_0xa18b32){return function(_0xd803e9){if(!_0xd803e9){_0x4b3b97[_0xc9c2('0x15')](0x194);}return _0xd803e9;};}function handleError(_0x2222e4,_0x484d55){_0x484d55=_0x484d55||0x1f4;return function(_0x2073ef){logger['error'](_0x2073ef[_0xc9c2('0x24')]);if(_0x2073ef[_0xc9c2('0x25')]){delete _0x2073ef[_0xc9c2('0x25')];}_0x2222e4[_0xc9c2('0x16')](_0x484d55)[_0xc9c2('0x26')](_0x2073ef);};}exports['index']=function(_0x3cedb5,_0xe2f93b){var _0x40033a={},_0x1554ae={},_0xa89cb8={'count':0x0,'rows':[]};var _0x460832=_[_0xc9c2('0x27')](db['FaxQueueReport'][_0xc9c2('0x28')],function(_0x4a9fca){return{'name':_0x4a9fca[_0xc9c2('0x29')],'type':_0x4a9fca[_0xc9c2('0x2a')]['key']};});_0x1554ae[_0xc9c2('0x2b')]=_[_0xc9c2('0x27')](_0x460832,_0xc9c2('0x25'));_0x1554ae[_0xc9c2('0x2c')]=_['keys'](_0x3cedb5[_0xc9c2('0x2c')]);_0x1554ae[_0xc9c2('0x2d')]=_['intersection'](_0x1554ae['model'],_0x1554ae[_0xc9c2('0x2c')]);_0x40033a[_0xc9c2('0x2e')]=_[_0xc9c2('0x2f')](_0x1554ae['model'],qs['fields'](_0x3cedb5[_0xc9c2('0x2c')][_0xc9c2('0x30')]));_0x40033a['attributes']=_0x40033a[_0xc9c2('0x2e')]['length']?_0x40033a[_0xc9c2('0x2e')]:_0x1554ae[_0xc9c2('0x2b')];if(!_0x3cedb5[_0xc9c2('0x2c')][_0xc9c2('0x31')](_0xc9c2('0x32'))){_0x40033a[_0xc9c2('0x1b')]=qs[_0xc9c2('0x1b')](_0x3cedb5[_0xc9c2('0x2c')][_0xc9c2('0x1b')]);_0x40033a['offset']=qs[_0xc9c2('0x19')](_0x3cedb5['query'][_0xc9c2('0x19')]);}_0x40033a[_0xc9c2('0x33')]=qs['sort'](_0x3cedb5[_0xc9c2('0x2c')][_0xc9c2('0x34')]);_0x40033a['where']=qs[_0xc9c2('0x2d')](_[_0xc9c2('0x35')](_0x3cedb5[_0xc9c2('0x2c')],_0x1554ae['filters']),_0x460832);if(_0x3cedb5[_0xc9c2('0x2c')]['filter']){_0x40033a[_0xc9c2('0x36')]=_[_0xc9c2('0x37')](_0x40033a['where'],{'$or':_[_0xc9c2('0x27')](_0x460832,function(_0x3f718a){if(_0x3f718a[_0xc9c2('0x2a')]!==_0xc9c2('0x38')){var _0x3f9248={};_0x3f9248[_0x3f718a[_0xc9c2('0x25')]]={'$like':'%'+_0x3cedb5[_0xc9c2('0x2c')][_0xc9c2('0x39')]+'%'};return _0x3f9248;}})});}_0x40033a=_[_0xc9c2('0x37')]({},_0x40033a,_0x3cedb5[_0xc9c2('0x3a')]);var _0x8d6710={'where':_0x40033a['where']};return db['FaxQueueReport'][_0xc9c2('0x1c')](_0x8d6710)[_0xc9c2('0x22')](function(_0x4507c9){_0xa89cb8[_0xc9c2('0x1c')]=_0x4507c9;if(_0x3cedb5[_0xc9c2('0x2c')][_0xc9c2('0x3b')]){_0x40033a['include']=[{'all':!![]}];}return db[_0xc9c2('0x3c')][_0xc9c2('0x3d')](_0x40033a);})[_0xc9c2('0x22')](function(_0x46c740){_0xa89cb8[_0xc9c2('0x3e')]=_0x46c740;return _0xa89cb8;})['then'](respondWithFilteredResult(_0xe2f93b,_0x40033a))[_0xc9c2('0x3f')](handleError(_0xe2f93b,null));};exports[_0xc9c2('0x40')]=function(_0x2126f8,_0x4f6bc9){var _0x3a05f8={'raw':!![],'where':{'id':_0x2126f8[_0xc9c2('0x41')]['id']}},_0xd3d946={};_0xd3d946[_0xc9c2('0x2b')]=_[_0xc9c2('0x42')](db['FaxQueueReport']['rawAttributes']);_0xd3d946[_0xc9c2('0x2c')]=_[_0xc9c2('0x42')](_0x2126f8['query']);_0xd3d946[_0xc9c2('0x2d')]=_[_0xc9c2('0x2f')](_0xd3d946[_0xc9c2('0x2b')],_0xd3d946[_0xc9c2('0x2c')]);_0x3a05f8[_0xc9c2('0x2e')]=_[_0xc9c2('0x2f')](_0xd3d946[_0xc9c2('0x2b')],qs['fields'](_0x2126f8[_0xc9c2('0x2c')]['fields']));_0x3a05f8[_0xc9c2('0x2e')]=_0x3a05f8['attributes'][_0xc9c2('0x43')]?_0x3a05f8['attributes']:_0xd3d946[_0xc9c2('0x2b')];if(_0x2126f8['query'][_0xc9c2('0x3b')]){_0x3a05f8[_0xc9c2('0x44')]=[{'all':!![]}];}_0x3a05f8=_[_0xc9c2('0x37')]({},_0x3a05f8,_0x2126f8[_0xc9c2('0x3a')]);return db[_0xc9c2('0x3c')][_0xc9c2('0x45')](_0x3a05f8)[_0xc9c2('0x22')](handleEntityNotFound(_0x4f6bc9,null))['then'](respondWithResult(_0x4f6bc9,null))[_0xc9c2('0x3f')](handleError(_0x4f6bc9,null));};exports[_0xc9c2('0x46')]=function(_0x412df0,_0xad73d4){return db[_0xc9c2('0x3c')][_0xc9c2('0x46')](_0x412df0['body'],{})[_0xc9c2('0x22')](respondWithResult(_0xad73d4,0xc9))[_0xc9c2('0x3f')](handleError(_0xad73d4,null));};exports[_0xc9c2('0x21')]=function(_0x88fa84,_0x2e9925){if(_0x88fa84[_0xc9c2('0x47')]['id']){delete _0x88fa84[_0xc9c2('0x47')]['id'];}return db[_0xc9c2('0x3c')]['find']({'where':{'id':_0x88fa84[_0xc9c2('0x41')]['id']}})[_0xc9c2('0x22')](handleEntityNotFound(_0x2e9925,null))[_0xc9c2('0x22')](saveUpdates(_0x88fa84[_0xc9c2('0x47')],null))[_0xc9c2('0x22')](respondWithResult(_0x2e9925,null))['catch'](handleError(_0x2e9925,null));};exports[_0xc9c2('0x23')]=function(_0x4e2589,_0xdedc7c){return db['FaxQueueReport'][_0xc9c2('0x45')]({'where':{'id':_0x4e2589['params']['id']}})[_0xc9c2('0x22')](handleEntityNotFound(_0xdedc7c,null))['then'](removeEntity(_0xdedc7c,null))['catch'](handleError(_0xdedc7c,null));};exports[_0xc9c2('0x48')]=function(_0x45f11e,_0x355d57){return db[_0xc9c2('0x3c')][_0xc9c2('0x48')]()[_0xc9c2('0x22')](respondWithResult(_0x355d57,null))[_0xc9c2('0x3f')](handleError(_0x355d57,null));};
\ No newline at end of file
index 1c3ef03..962adc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport','report_fax_queue','uniqueid','lodash','util','api'];(function(_0x5ef1bf,_0xb595c){var _0x5b1cc5=function(_0x4fc65b){while(--_0x4fc65b){_0x5ef1bf['push'](_0x5ef1bf['shift']());}};_0x5b1cc5(++_0xb595c);}(_0x5fab,0x177));var _0xb5fa=function(_0x5cfdd8,_0x27555c){_0x5cfdd8=_0x5cfdd8-0x0;var _0x4fd729=_0x5fab[_0x5cfdd8];return _0x4fd729;};'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':[{'name':_0xb5fa('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['report_fax_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport'];(function(_0x5554b9,_0x825fd9){var _0x115445=function(_0x50759a){while(--_0x50759a){_0x5554b9['push'](_0x5554b9['shift']());}};_0x115445(++_0x825fd9);}(_0x7a54,0x106));var _0x47a5=function(_0x6317c6,_0x4f84ef){_0x6317c6=_0x6317c6-0x0;var _0x21e73f=_0x7a54[_0x6317c6];return _0x21e73f;};'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':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f7cddf8..705e44f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfabe=['error','message','FaxQueueReport,\x20%s,\x20%s','result','catch','CreateFaxQueueReport','create','body','options','raw','FaxQueueReport','update','where','attributes','limit','UpdateFaxQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1d1b15,_0x5ef518){var _0x1801d3=function(_0x50d56e){while(--_0x50d56e){_0x1d1b15['push'](_0x1d1b15['shift']());}};_0x1801d3(++_0x5ef518);}(_0xfabe,0x1b4));var _0xefab=function(_0x4c5e41,_0x768ce7){_0x4c5e41=_0x4c5e41-0x0;var _0x2f28bb=_0xfabe[_0x4c5e41];return _0x2f28bb;};'use strict';var _=require(_0xefab('0x0'));var util=require(_0xefab('0x1'));var moment=require(_0xefab('0x2'));var BPromise=require(_0xefab('0x3'));var rs=require(_0xefab('0x4'));var fs=require('fs');var Redis=require(_0xefab('0x5'));var db=require(_0xefab('0x6'))['db'];var utils=require(_0xefab('0x7'));var logger=require(_0xefab('0x8'))(_0xefab('0x9'));var config=require('../../config/environment');var jayson=require(_0xefab('0xa'));var client=jayson[_0xefab('0xb')][_0xefab('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34889d,_0x3e6916,_0x94e456){return new BPromise(function(_0x3b1a10,_0x5a16a2){return client['request'](_0x34889d,_0x94e456)[_0xefab('0xd')](function(_0x1eee6d){logger[_0xefab('0xe')]('FaxQueueReport,\x20%s,\x20%s',_0x3e6916,_0xefab('0xf'));logger[_0xefab('0x10')](_0xefab('0x11'),_0x3e6916,_0xefab('0xf'),JSON[_0xefab('0x12')](_0x1eee6d));if(_0x1eee6d['error']){if(_0x1eee6d[_0xefab('0x13')]['code']===0x1f4){logger[_0xefab('0x13')]('FaxQueueReport,\x20%s,\x20%s',_0x3e6916,_0x1eee6d['error'][_0xefab('0x14')]);return _0x5a16a2(_0x1eee6d[_0xefab('0x13')][_0xefab('0x14')]);}logger[_0xefab('0x13')](_0xefab('0x15'),_0x3e6916,_0x1eee6d[_0xefab('0x13')][_0xefab('0x14')]);return _0x3b1a10(_0x1eee6d['error']['message']);}else{logger[_0xefab('0xe')](_0xefab('0x15'),_0x3e6916,'request\x20sent');_0x3b1a10(_0x1eee6d[_0xefab('0x16')][_0xefab('0x14')]);}})[_0xefab('0x17')](function(_0x767121){logger['error'](_0xefab('0x15'),_0x3e6916,_0x767121);_0x5a16a2(_0x767121);});});}exports[_0xefab('0x18')]=function(_0x4d23d8){var _0x1f5d52=this;return new Promise(function(_0x1a4553,_0x380ac8){return db['FaxQueueReport'][_0xefab('0x19')](_0x4d23d8[_0xefab('0x1a')],{'raw':_0x4d23d8[_0xefab('0x1b')]?_0x4d23d8['options'][_0xefab('0x1c')]===undefined?!![]:![]:!![]})[_0xefab('0xd')](function(_0x4f5094){logger['info'](_0xefab('0x18'),_0x4d23d8);logger[_0xefab('0x10')]('CreateFaxQueueReport',_0x4d23d8,JSON[_0xefab('0x12')](_0x4f5094));_0x1a4553(_0x4f5094);})['catch'](function(_0xaa2aee){logger[_0xefab('0x13')](_0xefab('0x18'),_0xaa2aee['message'],_0x4d23d8);_0x380ac8(_0x1f5d52[_0xefab('0x13')](0x1f4,_0xaa2aee[_0xefab('0x14')]));});});};exports['UpdateFaxQueueReport']=function(_0x5bf61f){var _0x545970=this;return new Promise(function(_0x13263a,_0x217865){return db[_0xefab('0x1d')][_0xefab('0x1e')](_0x5bf61f['body'],{'raw':_0x5bf61f['options']?_0x5bf61f[_0xefab('0x1b')][_0xefab('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bf61f[_0xefab('0x1b')]?_0x5bf61f[_0xefab('0x1b')][_0xefab('0x1f')]||null:null,'attributes':_0x5bf61f[_0xefab('0x1b')]?_0x5bf61f[_0xefab('0x1b')][_0xefab('0x20')]||null:null,'limit':_0x5bf61f[_0xefab('0x1b')]?_0x5bf61f['options'][_0xefab('0x21')]||null:null})['then'](function(_0x48481e){logger[_0xefab('0xe')](_0xefab('0x22'),_0x5bf61f);logger[_0xefab('0x10')](_0xefab('0x22'),_0x5bf61f,JSON[_0xefab('0x12')](_0x48481e));_0x13263a(_0x48481e);})['catch'](function(_0x4b8621){logger[_0xefab('0x13')]('UpdateFaxQueueReport',_0x4b8621[_0xefab('0x14')],_0x5bf61f);_0x217865(_0x545970[_0xefab('0x13')](0x1f4,_0x4b8621[_0xefab('0x14')]));});});};
\ No newline at end of file
+var _0xf064=['update','where','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0xf064,0x176));var _0x4f06=function(_0x3da612,_0x332456){_0x3da612=_0x3da612-0x0;var _0x1a9d1d=_0xf064[_0x3da612];return _0x1a9d1d;};'use strict';var _=require(_0x4f06('0x0'));var util=require(_0x4f06('0x1'));var moment=require('moment');var BPromise=require(_0x4f06('0x2'));var rs=require(_0x4f06('0x3'));var fs=require('fs');var Redis=require(_0x4f06('0x4'));var db=require(_0x4f06('0x5'))['db'];var utils=require(_0x4f06('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x4f06('0x7'));var jayson=require(_0x4f06('0x8'));var client=jayson['client'][_0x4f06('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2fe38d,_0x2079fd,_0xf2458f){return new BPromise(function(_0x3a0eb1,_0x32c521){return client[_0x4f06('0xa')](_0x2fe38d,_0xf2458f)[_0x4f06('0xb')](function(_0x3e152d){logger[_0x4f06('0xc')](_0x4f06('0xd'),_0x2079fd,_0x4f06('0xe'));logger[_0x4f06('0xf')](_0x4f06('0x10'),_0x2079fd,_0x4f06('0xe'),JSON[_0x4f06('0x11')](_0x3e152d));if(_0x3e152d['error']){if(_0x3e152d[_0x4f06('0x12')][_0x4f06('0x13')]===0x1f4){logger[_0x4f06('0x12')](_0x4f06('0xd'),_0x2079fd,_0x3e152d[_0x4f06('0x12')][_0x4f06('0x14')]);return _0x32c521(_0x3e152d[_0x4f06('0x12')][_0x4f06('0x14')]);}logger['error'](_0x4f06('0xd'),_0x2079fd,_0x3e152d['error'][_0x4f06('0x14')]);return _0x3a0eb1(_0x3e152d[_0x4f06('0x12')][_0x4f06('0x14')]);}else{logger[_0x4f06('0xc')]('FaxQueueReport,\x20%s,\x20%s',_0x2079fd,_0x4f06('0xe'));_0x3a0eb1(_0x3e152d['result']['message']);}})[_0x4f06('0x15')](function(_0x17fc90){logger['error'](_0x4f06('0xd'),_0x2079fd,_0x17fc90);_0x32c521(_0x17fc90);});});}exports[_0x4f06('0x16')]=function(_0x2bc419){var _0x220c8f=this;return new Promise(function(_0x3db923,_0x4f3e2e){return db[_0x4f06('0x17')][_0x4f06('0x18')](_0x2bc419[_0x4f06('0x19')],{'raw':_0x2bc419['options']?_0x2bc419[_0x4f06('0x1a')][_0x4f06('0x1b')]===undefined?!![]:![]:!![]})[_0x4f06('0xb')](function(_0x4c4d8e){logger[_0x4f06('0xc')]('CreateFaxQueueReport',_0x2bc419);logger[_0x4f06('0xf')](_0x4f06('0x16'),_0x2bc419,JSON[_0x4f06('0x11')](_0x4c4d8e));_0x3db923(_0x4c4d8e);})[_0x4f06('0x15')](function(_0x305610){logger[_0x4f06('0x12')](_0x4f06('0x16'),_0x305610['message'],_0x2bc419);_0x4f3e2e(_0x220c8f[_0x4f06('0x12')](0x1f4,_0x305610['message']));});});};exports[_0x4f06('0x1c')]=function(_0x29df65){var _0x391fd4=this;return new Promise(function(_0x2fb160,_0x3ae20d){return db[_0x4f06('0x17')][_0x4f06('0x1d')](_0x29df65['body'],{'raw':_0x29df65[_0x4f06('0x1a')]?_0x29df65[_0x4f06('0x1a')][_0x4f06('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29df65[_0x4f06('0x1a')]?_0x29df65['options'][_0x4f06('0x1e')]||null:null,'attributes':_0x29df65['options']?_0x29df65[_0x4f06('0x1a')]['attributes']||null:null,'limit':_0x29df65['options']?_0x29df65[_0x4f06('0x1a')]['limit']||null:null})['then'](function(_0x4a4e91){logger['info'](_0x4f06('0x1c'),_0x29df65);logger[_0x4f06('0xf')](_0x4f06('0x1c'),_0x29df65,JSON['stringify'](_0x4a4e91));_0x2fb160(_0x4a4e91);})[_0x4f06('0x15')](function(_0x48fa50){logger[_0x4f06('0x12')](_0x4f06('0x1c'),_0x48fa50[_0x4f06('0x14')],_0x29df65);_0x3ae20d(_0x391fd4[_0x4f06('0x12')](0x1f4,_0x48fa50['message']));});});};
\ No newline at end of file
index ed83115..2a6f530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5127=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x5127,0x190));var _0x7512=function(_0x17882c,_0x4b964b){_0x17882c=_0x17882c-0x0;var _0x355a59=_0x5127[_0x17882c];return _0x355a59;};'use strict';var multer=require(_0x7512('0x0'));var util=require(_0x7512('0x1'));var path=require(_0x7512('0x2'));var timeout=require(_0x7512('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7512('0x4'));var auth=require(_0x7512('0x5'));var interaction=require(_0x7512('0x6'));var config=require('../../config/environment');var controller=require(_0x7512('0x7'));router[_0x7512('0x8')]('/',auth[_0x7512('0x9')](),controller[_0x7512('0xa')]);router['get'](_0x7512('0xb'),auth['isAuthenticated'](),controller[_0x7512('0xc')]);router[_0x7512('0x8')](_0x7512('0xd'),auth[_0x7512('0x9')](),controller[_0x7512('0xe')]);router[_0x7512('0xf')]('/',auth['isAuthenticated'](),controller[_0x7512('0x10')]);router[_0x7512('0x11')](_0x7512('0xd'),auth[_0x7512('0x9')](),controller['update']);router[_0x7512('0x12')](_0x7512('0xd'),auth[_0x7512('0x9')](),controller[_0x7512('0x13')]);module[_0x7512('0x14')]=router;
\ No newline at end of file
+var _0x72cd=['destroy','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','create'];(function(_0x10a0ce,_0x54168d){var _0x3cc655=function(_0x3a734b){while(--_0x3a734b){_0x10a0ce['push'](_0x10a0ce['shift']());}};_0x3cc655(++_0x54168d);}(_0x72cd,0x10f));var _0xd72c=function(_0x293b7d,_0xd02601){_0x293b7d=_0x293b7d-0x0;var _0x32c4b7=_0x72cd[_0x293b7d];return _0x32c4b7;};'use strict';var multer=require('multer');var util=require(_0xd72c('0x0'));var path=require(_0xd72c('0x1'));var timeout=require('connect-timeout');var express=require(_0xd72c('0x2'));var router=express['Router']();var fs_extra=require(_0xd72c('0x3'));var auth=require(_0xd72c('0x4'));var interaction=require(_0xd72c('0x5'));var config=require(_0xd72c('0x6'));var controller=require(_0xd72c('0x7'));router[_0xd72c('0x8')]('/',auth['isAuthenticated'](),controller[_0xd72c('0x9')]);router[_0xd72c('0x8')](_0xd72c('0xa'),auth['isAuthenticated'](),controller[_0xd72c('0xb')]);router[_0xd72c('0x8')](_0xd72c('0xc'),auth[_0xd72c('0xd')](),controller[_0xd72c('0xe')]);router[_0xd72c('0xf')]('/',auth['isAuthenticated'](),controller[_0xd72c('0x10')]);router['put']('/:id',auth[_0xd72c('0xd')](),controller['update']);router['delete'](_0xd72c('0xc'),auth[_0xd72c('0xd')](),controller[_0xd72c('0x11')]);module['exports']=router;
\ No newline at end of file
index 81051e2..b7b8754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x1d2cf2,_0x4f6aad){var _0xe5f313=function(_0xd42d92){while(--_0xd42d92){_0x1d2cf2['push'](_0x1d2cf2['shift']());}};_0xe5f313(++_0x4f6aad);}(_0x34e8,0x12c));var _0x834e=function(_0x510410,_0xa5ea64){_0x510410=_0x510410-0x0;var _0x4b0500=_0x34e8[_0x510410];return _0x4b0500;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
+var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x293691,_0x177c0b){var _0x3d163d=function(_0x3f91b2){while(--_0x3f91b2){_0x293691['push'](_0x293691['shift']());}};_0x3d163d(++_0x177c0b);}(_0x70e0,0x17b));var _0x070e=function(_0x460c35,_0x46a003){_0x460c35=_0x460c35-0x0;var _0x166ba5=_0x70e0[_0x460c35];return _0x166ba5;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
index 3fd2ed6..0a5633c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5972=['sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','includeAll','find','create','catch','update','body','params','describe','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','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','limit','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','FaxTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0x5972,0x13e));var _0x2597=function(_0x3da832,_0x2133f1){_0x3da832=_0x3da832-0x0;var _0xe602f2=_0x5972[_0x3da832];return _0xe602f2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2597('0x0'));var jsonpatch=require(_0x2597('0x1'));var rp=require('request-promise');var moment=require(_0x2597('0x2'));var BPromise=require(_0x2597('0x3'));var Mustache=require(_0x2597('0x4'));var util=require(_0x2597('0x5'));var path=require(_0x2597('0x6'));var sox=require(_0x2597('0x7'));var csv=require(_0x2597('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2597('0x9'));var _=require('lodash');var squel=require(_0x2597('0xa'));var crypto=require(_0x2597('0xb'));var jsforce=require(_0x2597('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2597('0xd'));var Papa=require(_0x2597('0xe'));var Redis=require(_0x2597('0xf'));var authService=require(_0x2597('0x10'));var qs=require(_0x2597('0x11'));var as=require(_0x2597('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2597('0x13'))(_0x2597('0x14'));var utils=require(_0x2597('0x15'));var config=require(_0x2597('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2597('0x17'))['db'];function respondWithStatusCode(_0x534ed6,_0x36f3df){_0x36f3df=_0x36f3df||0xcc;return function(_0x3dc4d2){if(_0x3dc4d2){return _0x534ed6[_0x2597('0x18')](_0x36f3df);}return _0x534ed6[_0x2597('0x19')](_0x36f3df)[_0x2597('0x1a')]();};}function respondWithResult(_0x20a8d9,_0x396a66){_0x396a66=_0x396a66||0xc8;return function(_0x288a5d){if(_0x288a5d){return _0x20a8d9[_0x2597('0x19')](_0x396a66)[_0x2597('0x1b')](_0x288a5d);}};}function respondWithFilteredResult(_0x464de9,_0x50ad42){return function(_0x3b6b24){if(_0x3b6b24){var _0x11acb5=typeof _0x50ad42[_0x2597('0x1c')]==='undefined'&&typeof _0x50ad42[_0x2597('0x1d')]==='undefined';var _0x294693=_0x3b6b24[_0x2597('0x1e')];var _0x291ea7=_0x11acb5?0x0:_0x50ad42[_0x2597('0x1c')];var _0x2d12df=_0x11acb5?_0x3b6b24[_0x2597('0x1e')]:_0x50ad42[_0x2597('0x1c')]+_0x50ad42[_0x2597('0x1d')];var _0x58b1f0;if(_0x2d12df>=_0x294693){_0x2d12df=_0x294693;_0x58b1f0=0xc8;}else{_0x58b1f0=0xce;}_0x464de9[_0x2597('0x19')](_0x58b1f0);return _0x464de9['set'](_0x2597('0x1f'),_0x291ea7+'-'+_0x2d12df+'/'+_0x294693)['json'](_0x3b6b24);}return null;};}function patchUpdates(_0x7fbbb8){return function(_0x5cb060){try{jsonpatch[_0x2597('0x20')](_0x5cb060,_0x7fbbb8,!![]);}catch(_0x26ab1){return BPromise[_0x2597('0x21')](_0x26ab1);}return _0x5cb060[_0x2597('0x22')]();};}function saveUpdates(_0x1f547d,_0x339886){return function(_0x2b92f4){if(_0x2b92f4){return _0x2b92f4['update'](_0x1f547d)[_0x2597('0x23')](function(_0x15356b){return _0x15356b;});}return null;};}function removeEntity(_0x2c98f4,_0x4746f1){return function(_0x5ca6d4){if(_0x5ca6d4){return _0x5ca6d4[_0x2597('0x24')]()[_0x2597('0x23')](function(){_0x2c98f4[_0x2597('0x19')](0xcc)[_0x2597('0x1a')]();});}};}function handleEntityNotFound(_0x3da9c3,_0x4d5c9f){return function(_0x319761){if(!_0x319761){_0x3da9c3[_0x2597('0x18')](0x194);}return _0x319761;};}function handleError(_0x102705,_0x5cf3a3){_0x5cf3a3=_0x5cf3a3||0x1f4;return function(_0x235dc3){logger[_0x2597('0x25')](_0x235dc3[_0x2597('0x26')]);if(_0x235dc3['name']){delete _0x235dc3[_0x2597('0x27')];}_0x102705[_0x2597('0x19')](_0x5cf3a3)[_0x2597('0x28')](_0x235dc3);};}exports['index']=function(_0x525646,_0x18b313){var _0x4ae530={},_0x38caf9={},_0x540264={'count':0x0,'rows':[]};var _0x52299f=_[_0x2597('0x29')](db[_0x2597('0x2a')][_0x2597('0x2b')],function(_0x9a67c4){return{'name':_0x9a67c4['fieldName'],'type':_0x9a67c4[_0x2597('0x2c')][_0x2597('0x2d')]};});_0x38caf9[_0x2597('0x2e')]=_['map'](_0x52299f,_0x2597('0x27'));_0x38caf9[_0x2597('0x2f')]=_[_0x2597('0x30')](_0x525646['query']);_0x38caf9[_0x2597('0x31')]=_[_0x2597('0x32')](_0x38caf9[_0x2597('0x2e')],_0x38caf9[_0x2597('0x2f')]);_0x4ae530[_0x2597('0x33')]=_[_0x2597('0x32')](_0x38caf9['model'],qs[_0x2597('0x34')](_0x525646[_0x2597('0x2f')][_0x2597('0x34')]));_0x4ae530[_0x2597('0x33')]=_0x4ae530[_0x2597('0x33')][_0x2597('0x35')]?_0x4ae530['attributes']:_0x38caf9[_0x2597('0x2e')];if(!_0x525646[_0x2597('0x2f')][_0x2597('0x36')](_0x2597('0x37'))){_0x4ae530[_0x2597('0x1d')]=qs[_0x2597('0x1d')](_0x525646['query'][_0x2597('0x1d')]);_0x4ae530['offset']=qs[_0x2597('0x1c')](_0x525646[_0x2597('0x2f')][_0x2597('0x1c')]);}_0x4ae530[_0x2597('0x38')]=qs[_0x2597('0x39')](_0x525646['query'][_0x2597('0x39')]);_0x4ae530[_0x2597('0x3a')]=qs[_0x2597('0x31')](_[_0x2597('0x3b')](_0x525646[_0x2597('0x2f')],_0x38caf9[_0x2597('0x31')]),_0x52299f);if(_0x525646[_0x2597('0x2f')][_0x2597('0x3c')]){_0x4ae530['where']=_[_0x2597('0x3d')](_0x4ae530[_0x2597('0x3a')],{'$or':_[_0x2597('0x29')](_0x52299f,function(_0x32806a){if(_0x32806a[_0x2597('0x2c')]!==_0x2597('0x3e')){var _0x472244={};_0x472244[_0x32806a[_0x2597('0x27')]]={'$like':'%'+_0x525646[_0x2597('0x2f')][_0x2597('0x3c')]+'%'};return _0x472244;}})});}_0x4ae530=_[_0x2597('0x3d')]({},_0x4ae530,_0x525646[_0x2597('0x3f')]);var _0x241c3d={'where':_0x4ae530['where']};return db['FaxTransferReport']['count'](_0x241c3d)[_0x2597('0x23')](function(_0xc5e316){_0x540264[_0x2597('0x1e')]=_0xc5e316;if(_0x525646[_0x2597('0x2f')]['includeAll']){_0x4ae530[_0x2597('0x40')]=[{'all':!![]}];}return db['FaxTransferReport']['findAll'](_0x4ae530);})[_0x2597('0x23')](function(_0x17946d){_0x540264[_0x2597('0x41')]=_0x17946d;return _0x540264;})[_0x2597('0x23')](respondWithFilteredResult(_0x18b313,_0x4ae530))['catch'](handleError(_0x18b313,null));};exports[_0x2597('0x42')]=function(_0x555a4f,_0x5a96f9){var _0x3c185c={'raw':!![],'where':{'id':_0x555a4f['params']['id']}},_0x3c2aa8={};_0x3c2aa8[_0x2597('0x2e')]=_['keys'](db[_0x2597('0x2a')][_0x2597('0x2b')]);_0x3c2aa8[_0x2597('0x2f')]=_[_0x2597('0x30')](_0x555a4f[_0x2597('0x2f')]);_0x3c2aa8['filters']=_[_0x2597('0x32')](_0x3c2aa8[_0x2597('0x2e')],_0x3c2aa8[_0x2597('0x2f')]);_0x3c185c[_0x2597('0x33')]=_[_0x2597('0x32')](_0x3c2aa8[_0x2597('0x2e')],qs['fields'](_0x555a4f[_0x2597('0x2f')]['fields']));_0x3c185c[_0x2597('0x33')]=_0x3c185c[_0x2597('0x33')][_0x2597('0x35')]?_0x3c185c[_0x2597('0x33')]:_0x3c2aa8[_0x2597('0x2e')];if(_0x555a4f[_0x2597('0x2f')][_0x2597('0x43')]){_0x3c185c[_0x2597('0x40')]=[{'all':!![]}];}_0x3c185c=_['merge']({},_0x3c185c,_0x555a4f[_0x2597('0x3f')]);return db['FaxTransferReport'][_0x2597('0x44')](_0x3c185c)[_0x2597('0x23')](handleEntityNotFound(_0x5a96f9,null))[_0x2597('0x23')](respondWithResult(_0x5a96f9,null))['catch'](handleError(_0x5a96f9,null));};exports['create']=function(_0x26147d,_0x3606b5){return db[_0x2597('0x2a')][_0x2597('0x45')](_0x26147d['body'],{})[_0x2597('0x23')](respondWithResult(_0x3606b5,0xc9))[_0x2597('0x46')](handleError(_0x3606b5,null));};exports[_0x2597('0x47')]=function(_0x5c8d4d,_0x1b4e25){if(_0x5c8d4d[_0x2597('0x48')]['id']){delete _0x5c8d4d[_0x2597('0x48')]['id'];}return db[_0x2597('0x2a')][_0x2597('0x44')]({'where':{'id':_0x5c8d4d[_0x2597('0x49')]['id']}})[_0x2597('0x23')](handleEntityNotFound(_0x1b4e25,null))[_0x2597('0x23')](saveUpdates(_0x5c8d4d[_0x2597('0x48')],null))['then'](respondWithResult(_0x1b4e25,null))[_0x2597('0x46')](handleError(_0x1b4e25,null));};exports['destroy']=function(_0x51de48,_0x5d828a){return db[_0x2597('0x2a')]['find']({'where':{'id':_0x51de48[_0x2597('0x49')]['id']}})['then'](handleEntityNotFound(_0x5d828a,null))[_0x2597('0x23')](removeEntity(_0x5d828a,null))[_0x2597('0x46')](handleError(_0x5d828a,null));};exports[_0x2597('0x4a')]=function(_0x4f5345,_0x4c0a9d){return db[_0x2597('0x2a')][_0x2597('0x4a')]()[_0x2597('0x23')](respondWithResult(_0x4c0a9d,null))[_0x2597('0x46')](handleError(_0x4c0a9d,null));};
\ No newline at end of file
+var _0x0edd=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','catch','show','params','keys','include','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x0edd,0x11a));var _0xd0ed=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x0edd[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0xd0ed('0x0'));var rimraf=require(_0xd0ed('0x1'));var zipdir=require(_0xd0ed('0x2'));var jsonpatch=require(_0xd0ed('0x3'));var rp=require(_0xd0ed('0x4'));var moment=require(_0xd0ed('0x5'));var BPromise=require(_0xd0ed('0x6'));var Mustache=require(_0xd0ed('0x7'));var util=require(_0xd0ed('0x8'));var path=require(_0xd0ed('0x9'));var sox=require(_0xd0ed('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd0ed('0xb'));var _=require(_0xd0ed('0xc'));var squel=require(_0xd0ed('0xd'));var crypto=require(_0xd0ed('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd0ed('0xf'));var toCsv=require(_0xd0ed('0x10'));var querystring=require(_0xd0ed('0x11'));var Papa=require(_0xd0ed('0x12'));var Redis=require(_0xd0ed('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xd0ed('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd0ed('0x15'));var logger=require(_0xd0ed('0x16'))(_0xd0ed('0x17'));var utils=require(_0xd0ed('0x18'));var config=require(_0xd0ed('0x19'));var licenseUtil=require(_0xd0ed('0x1a'));var db=require(_0xd0ed('0x1b'))['db'];function respondWithStatusCode(_0x2e5671,_0x8a499d){_0x8a499d=_0x8a499d||0xcc;return function(_0x49b501){if(_0x49b501){return _0x2e5671[_0xd0ed('0x1c')](_0x8a499d);}return _0x2e5671[_0xd0ed('0x1d')](_0x8a499d)[_0xd0ed('0x1e')]();};}function respondWithResult(_0x138f32,_0x4ad205){_0x4ad205=_0x4ad205||0xc8;return function(_0x1ceae7){if(_0x1ceae7){return _0x138f32[_0xd0ed('0x1d')](_0x4ad205)[_0xd0ed('0x1f')](_0x1ceae7);}};}function respondWithFilteredResult(_0x1811de,_0x222275){return function(_0x1269d9){if(_0x1269d9){var _0x5df97f=typeof _0x222275[_0xd0ed('0x20')]===_0xd0ed('0x21')&&typeof _0x222275[_0xd0ed('0x22')]==='undefined';var _0x390f5a=_0x1269d9[_0xd0ed('0x23')];var _0x330cdb=_0x5df97f?0x0:_0x222275[_0xd0ed('0x20')];var _0x5bd582=_0x5df97f?_0x1269d9[_0xd0ed('0x23')]:_0x222275[_0xd0ed('0x20')]+_0x222275[_0xd0ed('0x22')];var _0x3ccd77;if(_0x5bd582>=_0x390f5a){_0x5bd582=_0x390f5a;_0x3ccd77=0xc8;}else{_0x3ccd77=0xce;}_0x1811de[_0xd0ed('0x1d')](_0x3ccd77);return _0x1811de[_0xd0ed('0x24')](_0xd0ed('0x25'),_0x330cdb+'-'+_0x5bd582+'/'+_0x390f5a)[_0xd0ed('0x1f')](_0x1269d9);}return null;};}function patchUpdates(_0x526be8){return function(_0x11d282){try{jsonpatch[_0xd0ed('0x26')](_0x11d282,_0x526be8,!![]);}catch(_0x2b2314){return BPromise[_0xd0ed('0x27')](_0x2b2314);}return _0x11d282[_0xd0ed('0x28')]();};}function saveUpdates(_0x40dab6,_0x573aff){return function(_0x47955c){if(_0x47955c){return _0x47955c[_0xd0ed('0x29')](_0x40dab6)[_0xd0ed('0x2a')](function(_0x3339f4){return _0x3339f4;});}return null;};}function removeEntity(_0xe71c5a,_0x321738){return function(_0x459462){if(_0x459462){return _0x459462['destroy']()[_0xd0ed('0x2a')](function(){_0xe71c5a['status'](0xcc)[_0xd0ed('0x1e')]();});}};}function handleEntityNotFound(_0xd0f1f3,_0x3fb8b2){return function(_0x40b388){if(!_0x40b388){_0xd0f1f3[_0xd0ed('0x1c')](0x194);}return _0x40b388;};}function handleError(_0x316ae4,_0x208918){_0x208918=_0x208918||0x1f4;return function(_0x2b96f0){logger[_0xd0ed('0x2b')](_0x2b96f0[_0xd0ed('0x2c')]);if(_0x2b96f0['name']){delete _0x2b96f0[_0xd0ed('0x2d')];}_0x316ae4[_0xd0ed('0x1d')](_0x208918)[_0xd0ed('0x2e')](_0x2b96f0);};}exports['index']=function(_0x26fc62,_0x58bb24){var _0x4ec8f3={},_0x1c79dd={},_0x4d1dd7={'count':0x0,'rows':[]};var _0x5b8485=_[_0xd0ed('0x2f')](db[_0xd0ed('0x30')][_0xd0ed('0x31')],function(_0x41678e){return{'name':_0x41678e[_0xd0ed('0x32')],'type':_0x41678e[_0xd0ed('0x33')][_0xd0ed('0x34')]};});_0x1c79dd[_0xd0ed('0x35')]=_[_0xd0ed('0x2f')](_0x5b8485,_0xd0ed('0x2d'));_0x1c79dd[_0xd0ed('0x36')]=_['keys'](_0x26fc62['query']);_0x1c79dd[_0xd0ed('0x37')]=_['intersection'](_0x1c79dd['model'],_0x1c79dd['query']);_0x4ec8f3[_0xd0ed('0x38')]=_[_0xd0ed('0x39')](_0x1c79dd[_0xd0ed('0x35')],qs[_0xd0ed('0x3a')](_0x26fc62[_0xd0ed('0x36')][_0xd0ed('0x3a')]));_0x4ec8f3[_0xd0ed('0x38')]=_0x4ec8f3[_0xd0ed('0x38')][_0xd0ed('0x3b')]?_0x4ec8f3[_0xd0ed('0x38')]:_0x1c79dd[_0xd0ed('0x35')];if(!_0x26fc62[_0xd0ed('0x36')][_0xd0ed('0x3c')](_0xd0ed('0x3d'))){_0x4ec8f3[_0xd0ed('0x22')]=qs[_0xd0ed('0x22')](_0x26fc62[_0xd0ed('0x36')][_0xd0ed('0x22')]);_0x4ec8f3['offset']=qs[_0xd0ed('0x20')](_0x26fc62[_0xd0ed('0x36')][_0xd0ed('0x20')]);}_0x4ec8f3['order']=qs[_0xd0ed('0x3e')](_0x26fc62[_0xd0ed('0x36')]['sort']);_0x4ec8f3[_0xd0ed('0x3f')]=qs[_0xd0ed('0x37')](_['pick'](_0x26fc62['query'],_0x1c79dd[_0xd0ed('0x37')]),_0x5b8485);if(_0x26fc62[_0xd0ed('0x36')][_0xd0ed('0x40')]){_0x4ec8f3[_0xd0ed('0x3f')]=_[_0xd0ed('0x41')](_0x4ec8f3[_0xd0ed('0x3f')],{'$or':_[_0xd0ed('0x2f')](_0x5b8485,function(_0x1319c4){if(_0x1319c4['type']!=='VIRTUAL'){var _0x334bce={};_0x334bce[_0x1319c4[_0xd0ed('0x2d')]]={'$like':'%'+_0x26fc62[_0xd0ed('0x36')][_0xd0ed('0x40')]+'%'};return _0x334bce;}})});}_0x4ec8f3=_[_0xd0ed('0x41')]({},_0x4ec8f3,_0x26fc62[_0xd0ed('0x42')]);var _0xcc7912={'where':_0x4ec8f3[_0xd0ed('0x3f')]};return db[_0xd0ed('0x30')]['count'](_0xcc7912)[_0xd0ed('0x2a')](function(_0x4e3ea9){_0x4d1dd7[_0xd0ed('0x23')]=_0x4e3ea9;if(_0x26fc62['query'][_0xd0ed('0x43')]){_0x4ec8f3['include']=[{'all':!![]}];}return db[_0xd0ed('0x30')]['findAll'](_0x4ec8f3);})[_0xd0ed('0x2a')](function(_0x41b0fd){_0x4d1dd7['rows']=_0x41b0fd;return _0x4d1dd7;})[_0xd0ed('0x2a')](respondWithFilteredResult(_0x58bb24,_0x4ec8f3))[_0xd0ed('0x44')](handleError(_0x58bb24,null));};exports[_0xd0ed('0x45')]=function(_0x30a900,_0x17612d){var _0x1c9efe={'raw':!![],'where':{'id':_0x30a900[_0xd0ed('0x46')]['id']}},_0x253335={};_0x253335[_0xd0ed('0x35')]=_[_0xd0ed('0x47')](db['FaxTransferReport'][_0xd0ed('0x31')]);_0x253335[_0xd0ed('0x36')]=_['keys'](_0x30a900['query']);_0x253335[_0xd0ed('0x37')]=_[_0xd0ed('0x39')](_0x253335[_0xd0ed('0x35')],_0x253335[_0xd0ed('0x36')]);_0x1c9efe['attributes']=_[_0xd0ed('0x39')](_0x253335[_0xd0ed('0x35')],qs['fields'](_0x30a900[_0xd0ed('0x36')][_0xd0ed('0x3a')]));_0x1c9efe[_0xd0ed('0x38')]=_0x1c9efe[_0xd0ed('0x38')][_0xd0ed('0x3b')]?_0x1c9efe[_0xd0ed('0x38')]:_0x253335[_0xd0ed('0x35')];if(_0x30a900[_0xd0ed('0x36')][_0xd0ed('0x43')]){_0x1c9efe[_0xd0ed('0x48')]=[{'all':!![]}];}_0x1c9efe=_[_0xd0ed('0x41')]({},_0x1c9efe,_0x30a900[_0xd0ed('0x42')]);return db['FaxTransferReport'][_0xd0ed('0x49')](_0x1c9efe)['then'](handleEntityNotFound(_0x17612d,null))[_0xd0ed('0x2a')](respondWithResult(_0x17612d,null))[_0xd0ed('0x44')](handleError(_0x17612d,null));};exports[_0xd0ed('0x4a')]=function(_0x470c3d,_0x2413bb){return db[_0xd0ed('0x30')][_0xd0ed('0x4a')](_0x470c3d['body'],{})[_0xd0ed('0x2a')](respondWithResult(_0x2413bb,0xc9))[_0xd0ed('0x44')](handleError(_0x2413bb,null));};exports['update']=function(_0x3153e4,_0x1d0518){if(_0x3153e4[_0xd0ed('0x4b')]['id']){delete _0x3153e4['body']['id'];}return db[_0xd0ed('0x30')][_0xd0ed('0x49')]({'where':{'id':_0x3153e4[_0xd0ed('0x46')]['id']}})[_0xd0ed('0x2a')](handleEntityNotFound(_0x1d0518,null))['then'](saveUpdates(_0x3153e4[_0xd0ed('0x4b')],null))[_0xd0ed('0x2a')](respondWithResult(_0x1d0518,null))['catch'](handleError(_0x1d0518,null));};exports[_0xd0ed('0x4c')]=function(_0x2cf874,_0x32b3d4){return db[_0xd0ed('0x30')][_0xd0ed('0x49')]({'where':{'id':_0x2cf874['params']['id']}})[_0xd0ed('0x2a')](handleEntityNotFound(_0x32b3d4,null))[_0xd0ed('0x2a')](removeEntity(_0x32b3d4,null))[_0xd0ed('0x44')](handleError(_0x32b3d4,null));};exports[_0xd0ed('0x4d')]=function(_0x41e153,_0x41ef50){return db[_0xd0ed('0x30')][_0xd0ed('0x4d')]()[_0xd0ed('0x2a')](respondWithResult(_0x41ef50,null))['catch'](handleError(_0x41ef50,null));};
\ No newline at end of file
index 3033f7c..7d3543f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9158=['./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger','moment','request-promise','../../config/environment'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0x9158,0x16e));var _0x8915=function(_0x4c9f48,_0x1dcee8){_0x4c9f48=_0x4c9f48-0x0;var _0x39f33a=_0x9158[_0x4c9f48];return _0x39f33a;};'use strict';var _=require(_0x8915('0x0'));var util=require(_0x8915('0x1'));var logger=require(_0x8915('0x2'))('api');var moment=require(_0x8915('0x3'));var BPromise=require('bluebird');var rp=require(_0x8915('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8915('0x5'));var attributes=require(_0x8915('0x6'));module[_0x8915('0x7')]=function(_0x2cad3f,_0x455248){return _0x2cad3f[_0x8915('0x8')](_0x8915('0x9'),attributes,{'tableName':_0x8915('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x8915('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeeb9=['uniqueid','lodash','util','../../config/logger','api','moment','request-promise','rimraf','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xeeb9,0xde));var _0x9eeb=function(_0x684d05,_0x2ca605){_0x684d05=_0x684d05-0x0;var _0xf8f8a0=_0xeeb9[_0x684d05];return _0xf8f8a0;};'use strict';var _=require(_0x9eeb('0x0'));var util=require(_0x9eeb('0x1'));var logger=require(_0x9eeb('0x2'))(_0x9eeb('0x3'));var moment=require(_0x9eeb('0x4'));var BPromise=require('bluebird');var rp=require(_0x9eeb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9eeb('0x6'));var config=require('../../config/environment');var attributes=require(_0x9eeb('0x7'));module[_0x9eeb('0x8')]=function(_0x5871c2,_0x30a1fd){return _0x5871c2[_0x9eeb('0x9')](_0x9eeb('0xa'),attributes,{'tableName':_0x9eeb('0xb'),'paranoid':![],'indexes':[{'name':_0x9eeb('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 4075321..daa4803 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ccc=['request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','FaxTransferReport,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info'];(function(_0x487eda,_0x7129b){var _0x21593f=function(_0x371469){while(--_0x371469){_0x487eda['push'](_0x487eda['shift']());}};_0x21593f(++_0x7129b);}(_0x3ccc,0xce));var _0xc3cc=function(_0x5ce781,_0x736b15){_0x5ce781=_0x5ce781-0x0;var _0xa70499=_0x3ccc[_0x5ce781];return _0xa70499;};'use strict';var _=require(_0xc3cc('0x0'));var util=require(_0xc3cc('0x1'));var moment=require(_0xc3cc('0x2'));var BPromise=require(_0xc3cc('0x3'));var rs=require(_0xc3cc('0x4'));var fs=require('fs');var Redis=require(_0xc3cc('0x5'));var db=require(_0xc3cc('0x6'))['db'];var utils=require(_0xc3cc('0x7'));var logger=require('../../config/logger')(_0xc3cc('0x8'));var config=require(_0xc3cc('0x9'));var jayson=require(_0xc3cc('0xa'));var client=jayson[_0xc3cc('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50e7c9,_0x59a630,_0x1804b5){return new BPromise(function(_0x2b5c43,_0x3f1dab){return client['request'](_0x50e7c9,_0x1804b5)[_0xc3cc('0xc')](function(_0x35341e){logger[_0xc3cc('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x59a630,_0xc3cc('0xe'));logger['debug'](_0xc3cc('0xf'),_0x59a630,_0xc3cc('0xe'),JSON['stringify'](_0x35341e));if(_0x35341e['error']){if(_0x35341e[_0xc3cc('0x10')][_0xc3cc('0x11')]===0x1f4){logger['error'](_0xc3cc('0x12'),_0x59a630,_0x35341e['error'][_0xc3cc('0x13')]);return _0x3f1dab(_0x35341e[_0xc3cc('0x10')]['message']);}logger['error'](_0xc3cc('0x12'),_0x59a630,_0x35341e[_0xc3cc('0x10')][_0xc3cc('0x13')]);return _0x2b5c43(_0x35341e[_0xc3cc('0x10')][_0xc3cc('0x13')]);}else{logger['info'](_0xc3cc('0x12'),_0x59a630,_0xc3cc('0xe'));_0x2b5c43(_0x35341e['result'][_0xc3cc('0x13')]);}})['catch'](function(_0xa56fc6){logger[_0xc3cc('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x59a630,_0xa56fc6);_0x3f1dab(_0xa56fc6);});});}
\ No newline at end of file
+var _0x536b=['debug','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x536b,0x143));var _0xb536=function(_0x44232b,_0x13fc1b){_0x44232b=_0x44232b-0x0;var _0x3fe401=_0x536b[_0x44232b];return _0x3fe401;};'use strict';var _=require(_0xb536('0x0'));var util=require(_0xb536('0x1'));var moment=require('moment');var BPromise=require(_0xb536('0x2'));var rs=require(_0xb536('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb536('0x4'))['db'];var utils=require(_0xb536('0x5'));var logger=require(_0xb536('0x6'))(_0xb536('0x7'));var config=require('../../config/environment');var jayson=require(_0xb536('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5a50a7,_0x1298c4,_0x16d843){return new BPromise(function(_0x5cfd88,_0x4eaa3d){return client[_0xb536('0x9')](_0x5a50a7,_0x16d843)[_0xb536('0xa')](function(_0x5ebc3b){logger['info'](_0xb536('0xb'),_0x1298c4,_0xb536('0xc'));logger[_0xb536('0xd')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x1298c4,_0xb536('0xc'),JSON[_0xb536('0xe')](_0x5ebc3b));if(_0x5ebc3b[_0xb536('0xf')]){if(_0x5ebc3b['error'][_0xb536('0x10')]===0x1f4){logger[_0xb536('0xf')](_0xb536('0xb'),_0x1298c4,_0x5ebc3b[_0xb536('0xf')][_0xb536('0x11')]);return _0x4eaa3d(_0x5ebc3b[_0xb536('0xf')]['message']);}logger[_0xb536('0xf')](_0xb536('0xb'),_0x1298c4,_0x5ebc3b['error'][_0xb536('0x11')]);return _0x5cfd88(_0x5ebc3b[_0xb536('0xf')][_0xb536('0x11')]);}else{logger[_0xb536('0x12')](_0xb536('0xb'),_0x1298c4,_0xb536('0xc'));_0x5cfd88(_0x5ebc3b[_0xb536('0x13')][_0xb536('0x11')]);}})[_0xb536('0x14')](function(_0xbbe5aa){logger[_0xb536('0xf')](_0xb536('0xb'),_0x1298c4,_0xbbe5aa);_0x4eaa3d(_0xbbe5aa);});});}
\ No newline at end of file
index 964f5e8..c1dcfaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcacf=['show','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x1d572d,_0x5b7f4c){var _0x34cc05=function(_0xa82e60){while(--_0xa82e60){_0x1d572d['push'](_0x1d572d['shift']());}};_0x34cc05(++_0x5b7f4c);}(_0xcacf,0x139));var _0xfcac=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xcacf[_0x3054be];return _0x3df150;};'use strict';var multer=require(_0xfcac('0x0'));var util=require(_0xfcac('0x1'));var path=require(_0xfcac('0x2'));var timeout=require(_0xfcac('0x3'));var express=require(_0xfcac('0x4'));var router=express[_0xfcac('0x5')]();var fs_extra=require(_0xfcac('0x6'));var auth=require(_0xfcac('0x7'));var interaction=require(_0xfcac('0x8'));var config=require(_0xfcac('0x9'));var controller=require(_0xfcac('0xa'));router[_0xfcac('0xb')]('/',auth[_0xfcac('0xc')](),controller[_0xfcac('0xd')]);router[_0xfcac('0xb')](_0xfcac('0xe'),auth[_0xfcac('0xc')](),controller[_0xfcac('0xf')]);router[_0xfcac('0xb')](_0xfcac('0x10'),auth[_0xfcac('0xc')](),controller[_0xfcac('0x11')]);router['post']('/',auth[_0xfcac('0xc')](),controller['create']);router['put']('/:id',auth[_0xfcac('0xc')](),controller[_0xfcac('0x12')]);router[_0xfcac('0x13')]('/:id',auth[_0xfcac('0xc')](),controller[_0xfcac('0x14')]);module[_0xfcac('0x15')]=router;
\ No newline at end of file
+var _0xe6bb=['express','Router','./faxTransferReport.controller','get','index','/describe','/:id','isAuthenticated','create','put','delete','destroy','multer','path','connect-timeout'];(function(_0x166742,_0x55520c){var _0xb7814a=function(_0x18feaf){while(--_0x18feaf){_0x166742['push'](_0x166742['shift']());}};_0xb7814a(++_0x55520c);}(_0xe6bb,0x183));var _0xbe6b=function(_0x471012,_0x59d270){_0x471012=_0x471012-0x0;var _0xa8ca71=_0xe6bb[_0x471012];return _0xa8ca71;};'use strict';var multer=require(_0xbe6b('0x0'));var util=require('util');var path=require(_0xbe6b('0x1'));var timeout=require(_0xbe6b('0x2'));var express=require(_0xbe6b('0x3'));var router=express[_0xbe6b('0x4')]();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(_0xbe6b('0x5'));router[_0xbe6b('0x6')]('/',auth['isAuthenticated'](),controller[_0xbe6b('0x7')]);router[_0xbe6b('0x6')](_0xbe6b('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0xbe6b('0x6')](_0xbe6b('0x9'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xbe6b('0xa')](),controller[_0xbe6b('0xb')]);router[_0xbe6b('0xc')](_0xbe6b('0x9'),auth[_0xbe6b('0xa')](),controller['update']);router[_0xbe6b('0xd')](_0xbe6b('0x9'),auth['isAuthenticated'](),controller[_0xbe6b('0xe')]);module['exports']=router;
\ No newline at end of file
index 098d8c7..b5a35d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9425=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','update','delete','destroy','exports','multer','path'];(function(_0x2b70f8,_0x361789){var _0x2f741e=function(_0x50d901){while(--_0x50d901){_0x2b70f8['push'](_0x2b70f8['shift']());}};_0x2f741e(++_0x361789);}(_0x9425,0x6c));var _0x5942=function(_0xe7c85,_0x17109a){_0xe7c85=_0xe7c85-0x0;var _0x2beef9=_0x9425[_0xe7c85];return _0x2beef9;};'use strict';var multer=require(_0x5942('0x0'));var util=require('util');var path=require(_0x5942('0x1'));var timeout=require(_0x5942('0x2'));var express=require(_0x5942('0x3'));var router=express[_0x5942('0x4')]();var fs_extra=require(_0x5942('0x5'));var auth=require(_0x5942('0x6'));var interaction=require(_0x5942('0x7'));var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router[_0x5942('0x8')]('/',auth[_0x5942('0x9')](),controller[_0x5942('0xa')]);router[_0x5942('0x8')](_0x5942('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x5942('0x8')](_0x5942('0xc'),auth[_0x5942('0x9')](),controller[_0x5942('0xd')]);router['get'](_0x5942('0xe'),auth[_0x5942('0x9')](),controller['getFields']);router[_0x5942('0xf')]('/',auth[_0x5942('0x9')](),controller[_0x5942('0x10')]);router['post'](_0x5942('0xc'),auth[_0x5942('0x9')](),controller[_0x5942('0x11')]);router['put'](_0x5942('0xb'),auth[_0x5942('0x9')](),controller[_0x5942('0x12')]);router[_0x5942('0x13')](_0x5942('0xb'),auth['isAuthenticated'](),controller[_0x5942('0x14')]);module[_0x5942('0x15')]=router;
\ No newline at end of file
+var _0xed69=['addConfiguration','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x5618f8,_0x2f69f3){var _0x3b2b04=function(_0x749ae4){while(--_0x749ae4){_0x5618f8['push'](_0x5618f8['shift']());}};_0x3b2b04(++_0x2f69f3);}(_0xed69,0x1df));var _0x9ed6=function(_0x32f9ca,_0x2fa8bc){_0x32f9ca=_0x32f9ca-0x0;var _0x52e083=_0xed69[_0x32f9ca];return _0x52e083;};'use strict';var multer=require(_0x9ed6('0x0'));var util=require(_0x9ed6('0x1'));var path=require(_0x9ed6('0x2'));var timeout=require(_0x9ed6('0x3'));var express=require(_0x9ed6('0x4'));var router=express[_0x9ed6('0x5')]();var fs_extra=require(_0x9ed6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9ed6('0x7'));var config=require(_0x9ed6('0x8'));var controller=require(_0x9ed6('0x9'));router[_0x9ed6('0xa')]('/',auth[_0x9ed6('0xb')](),controller[_0x9ed6('0xc')]);router[_0x9ed6('0xa')](_0x9ed6('0xd'),auth['isAuthenticated'](),controller[_0x9ed6('0xe')]);router[_0x9ed6('0xa')](_0x9ed6('0xf'),auth[_0x9ed6('0xb')](),controller[_0x9ed6('0x10')]);router[_0x9ed6('0xa')](_0x9ed6('0x11'),auth[_0x9ed6('0xb')](),controller[_0x9ed6('0x12')]);router[_0x9ed6('0x13')]('/',auth[_0x9ed6('0xb')](),controller[_0x9ed6('0x14')]);router[_0x9ed6('0x13')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x9ed6('0x15')]);router[_0x9ed6('0x16')](_0x9ed6('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x9ed6('0xd'),auth[_0x9ed6('0xb')](),controller[_0x9ed6('0x17')]);module[_0x9ed6('0x18')]=router;
\ No newline at end of file
index 722ef48..aa5aaa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e98=['STRING','ENUM','basic','newTab','integrationTab','sequelize','exports'];(function(_0x1b3755,_0xff5eef){var _0x4ed465=function(_0x16c900){while(--_0x16c900){_0x1b3755['push'](_0x1b3755['shift']());}};_0x4ed465(++_0xff5eef);}(_0x0e98,0x1cc));var _0x80e9=function(_0x641a1a,_0xa363e){_0x641a1a=_0x641a1a-0x0;var _0x2f34cc=_0x0e98[_0x641a1a];return _0x2f34cc;};'use strict';var Sequelize=require(_0x80e9('0x0'));module[_0x80e9('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x80e9('0x2')]},'username':{'type':Sequelize[_0x80e9('0x2')]},'remoteUri':{'type':Sequelize[_0x80e9('0x2')]},'authType':{'type':Sequelize[_0x80e9('0x3')]('basic'),'defaultValue':_0x80e9('0x4')},'password':{'type':Sequelize[_0x80e9('0x2')]},'consumerKey':{'type':Sequelize[_0x80e9('0x2')]},'consumerSecret':{'type':Sequelize[_0x80e9('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0x80e9('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x80e9('0x5')),'defaultValue':_0x80e9('0x6')}};
\ No newline at end of file
+var _0x62ec=['integrationTab','newTab','STRING','ENUM','basic'];(function(_0x34fc85,_0x200630){var _0x54686d=function(_0x529372){while(--_0x529372){_0x34fc85['push'](_0x34fc85['shift']());}};_0x54686d(++_0x200630);}(_0x62ec,0x1b5));var _0xc62e=function(_0x261bbf,_0x1f67a9){_0x261bbf=_0x261bbf-0x0;var _0x1b5c66=_0x62ec[_0x261bbf];return _0x1b5c66;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc62e('0x0')]},'description':{'type':Sequelize[_0xc62e('0x0')]},'username':{'type':Sequelize[_0xc62e('0x0')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0xc62e('0x1')]('basic'),'defaultValue':_0xc62e('0x2')},'password':{'type':Sequelize[_0xc62e('0x0')]},'consumerKey':{'type':Sequelize[_0xc62e('0x0')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xc62e('0x0')]},'tokenSecret':{'type':Sequelize[_0xc62e('0x0')]},'serverUrl':{'type':Sequelize[_0xc62e('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0xc62e('0x1')](_0xc62e('0x3'),_0xc62e('0x4')),'defaultValue':_0xc62e('0x3')}};
\ No newline at end of file
index e215830..a970ef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00af=['jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','Content-Range','reject','save','update','then','destroy','end','stack','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','filters','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','findOne','DeskConfiguration','pick','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','DeskField','Descriptions','getFields','remoteUri','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','substring','%s/custom_fields','application/json','basic','Authorization','Basic\x20%s','format','%s:%s','toString','base64','concat','_embedded','entries','active','label','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','zip-dir','request-promise','moment','bluebird','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x2daef6,_0xcac228){var _0x62d030=function(_0x26a7d6){while(--_0x26a7d6){_0x2daef6['push'](_0x2daef6['shift']());}};_0x62d030(++_0xcac228);}(_0x00af,0xd3));var _0xf00a=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x00af[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require(_0xf00a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf00a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf00a('0x2'));var moment=require(_0xf00a('0x3'));var BPromise=require(_0xf00a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xf00a('0x5'));var ejs=require(_0xf00a('0x6'));var fs=require('fs');var fs_extra=require(_0xf00a('0x7'));var _=require(_0xf00a('0x8'));var squel=require(_0xf00a('0x9'));var crypto=require(_0xf00a('0xa'));var jsforce=require(_0xf00a('0xb'));var deskjs=require(_0xf00a('0xc'));var toCsv=require(_0xf00a('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf00a('0xd'));var authService=require(_0xf00a('0xe'));var qs=require(_0xf00a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf00a('0x10'));var logger=require(_0xf00a('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xf00a('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xf00a('0x13'))['db'];var integrations=require(_0xf00a('0x14'));function respondWithStatusCode(_0x5a841b,_0x49d806){_0x49d806=_0x49d806||0xcc;return function(_0x403391){if(_0x403391){return _0x5a841b[_0xf00a('0x15')](_0x49d806);}return _0x5a841b['status'](_0x49d806)['end']();};}function respondWithResult(_0x49b1c6,_0x1cbc78){_0x1cbc78=_0x1cbc78||0xc8;return function(_0x436356){if(_0x436356){return _0x49b1c6[_0xf00a('0x16')](_0x1cbc78)[_0xf00a('0x17')](_0x436356);}};}function respondWithFilteredResult(_0x579d9e,_0x2adf55){return function(_0x1786d4){if(_0x1786d4){var _0x1157ea=typeof _0x2adf55[_0xf00a('0x18')]==='undefined'&&typeof _0x2adf55['limit']===_0xf00a('0x19');var _0x4ae0b9=_0x1786d4[_0xf00a('0x1a')];var _0x2b4a0f=_0x1157ea?0x0:_0x2adf55[_0xf00a('0x18')];var _0x3bf85d=_0x1157ea?_0x1786d4[_0xf00a('0x1a')]:_0x2adf55[_0xf00a('0x18')]+_0x2adf55['limit'];var _0x2a1c86;if(_0x3bf85d>=_0x4ae0b9){_0x3bf85d=_0x4ae0b9;_0x2a1c86=0xc8;}else{_0x2a1c86=0xce;}_0x579d9e['status'](_0x2a1c86);return _0x579d9e['set'](_0xf00a('0x1b'),_0x2b4a0f+'-'+_0x3bf85d+'/'+_0x4ae0b9)[_0xf00a('0x17')](_0x1786d4);}return null;};}function patchUpdates(_0x36f969){return function(_0x2c383f){try{jsonpatch['apply'](_0x2c383f,_0x36f969,!![]);}catch(_0x3ef229){return BPromise[_0xf00a('0x1c')](_0x3ef229);}return _0x2c383f[_0xf00a('0x1d')]();};}function saveUpdates(_0xd13174,_0x4e5efd){return function(_0xc71da8){if(_0xc71da8){return _0xc71da8[_0xf00a('0x1e')](_0xd13174)[_0xf00a('0x1f')](function(_0x502754){return _0x502754;});}return null;};}function removeEntity(_0x59b210,_0x38f431){return function(_0x40e322){if(_0x40e322){return _0x40e322[_0xf00a('0x20')]()[_0xf00a('0x1f')](function(){_0x59b210[_0xf00a('0x16')](0xcc)[_0xf00a('0x21')]();});}};}function handleEntityNotFound(_0x4012ce,_0x13cdcf){return function(_0x236e43){if(!_0x236e43){_0x4012ce['sendStatus'](0x194);}return _0x236e43;};}function handleError(_0x47b1ce,_0x2cfe09){_0x2cfe09=_0x2cfe09||0x1f4;return function(_0x41047f){logger['error'](_0x41047f[_0xf00a('0x22')]);if(_0x41047f['name']){delete _0x41047f['name'];}_0x47b1ce[_0xf00a('0x16')](_0x2cfe09)['send'](_0x41047f);};}exports[_0xf00a('0x23')]=function(_0x235614,_0x2fbdc7){var _0x4f7804={},_0x17b2d9={},_0x1fba47={'count':0x0,'rows':[]};var _0x35a515=_[_0xf00a('0x24')](db[_0xf00a('0x25')][_0xf00a('0x26')],function(_0x3c08ed){return{'name':_0x3c08ed[_0xf00a('0x27')],'type':_0x3c08ed[_0xf00a('0x28')][_0xf00a('0x29')]};});_0x17b2d9[_0xf00a('0x2a')]=_[_0xf00a('0x24')](_0x35a515,_0xf00a('0x2b'));_0x17b2d9[_0xf00a('0x2c')]=_[_0xf00a('0x2d')](_0x235614[_0xf00a('0x2c')]);_0x17b2d9['filters']=_[_0xf00a('0x2e')](_0x17b2d9[_0xf00a('0x2a')],_0x17b2d9['query']);_0x4f7804['attributes']=_[_0xf00a('0x2e')](_0x17b2d9[_0xf00a('0x2a')],qs['fields'](_0x235614['query'][_0xf00a('0x2f')]));_0x4f7804[_0xf00a('0x30')]=_0x4f7804['attributes'][_0xf00a('0x31')]?_0x4f7804[_0xf00a('0x30')]:_0x17b2d9[_0xf00a('0x2a')];if(!_0x235614[_0xf00a('0x2c')]['hasOwnProperty'](_0xf00a('0x32'))){_0x4f7804[_0xf00a('0x33')]=qs[_0xf00a('0x33')](_0x235614[_0xf00a('0x2c')][_0xf00a('0x33')]);_0x4f7804[_0xf00a('0x18')]=qs[_0xf00a('0x18')](_0x235614[_0xf00a('0x2c')][_0xf00a('0x18')]);}_0x4f7804[_0xf00a('0x34')]=qs[_0xf00a('0x35')](_0x235614[_0xf00a('0x2c')][_0xf00a('0x35')]);_0x4f7804['where']=qs[_0xf00a('0x36')](_['pick'](_0x235614[_0xf00a('0x2c')],_0x17b2d9[_0xf00a('0x36')]),_0x35a515);if(_0x235614[_0xf00a('0x2c')][_0xf00a('0x37')]){_0x4f7804[_0xf00a('0x38')]=_[_0xf00a('0x39')](_0x4f7804[_0xf00a('0x38')],{'$or':_['map'](_0x35a515,function(_0x50a3b9){if(_0x50a3b9[_0xf00a('0x28')]!==_0xf00a('0x3a')){var _0x456f8d={};_0x456f8d[_0x50a3b9[_0xf00a('0x2b')]]={'$like':'%'+_0x235614[_0xf00a('0x2c')][_0xf00a('0x37')]+'%'};return _0x456f8d;}})});}_0x4f7804=_[_0xf00a('0x39')]({},_0x4f7804,_0x235614[_0xf00a('0x3b')]);var _0x3a9405={'where':_0x4f7804[_0xf00a('0x38')]};return db[_0xf00a('0x25')][_0xf00a('0x1a')](_0x3a9405)[_0xf00a('0x1f')](function(_0x16caa6){_0x1fba47[_0xf00a('0x1a')]=_0x16caa6;if(_0x235614[_0xf00a('0x2c')]['includeAll']){_0x4f7804[_0xf00a('0x3c')]=[{'all':!![]}];}return db[_0xf00a('0x25')][_0xf00a('0x3d')](_0x4f7804);})[_0xf00a('0x1f')](function(_0x191b19){_0x1fba47[_0xf00a('0x3e')]=_0x191b19;return _0x1fba47;})[_0xf00a('0x1f')](respondWithFilteredResult(_0x2fbdc7,_0x4f7804))[_0xf00a('0x3f')](handleError(_0x2fbdc7,null));};exports[_0xf00a('0x40')]=function(_0x33e12f,_0x1f3b8c){var _0x345098={'raw':![],'where':{'id':_0x33e12f['params']['id']}},_0x43ccea={};_0x43ccea[_0xf00a('0x2a')]=_[_0xf00a('0x2d')](db['DeskAccount'][_0xf00a('0x26')]);_0x43ccea[_0xf00a('0x2c')]=_['keys'](_0x33e12f['query']);_0x43ccea['filters']=_[_0xf00a('0x2e')](_0x43ccea[_0xf00a('0x2a')],_0x43ccea['query']);_0x345098['attributes']=_[_0xf00a('0x2e')](_0x43ccea[_0xf00a('0x2a')],qs[_0xf00a('0x2f')](_0x33e12f[_0xf00a('0x2c')][_0xf00a('0x2f')]));_0x345098['attributes']=_0x345098[_0xf00a('0x30')][_0xf00a('0x31')]?_0x345098[_0xf00a('0x30')]:_0x43ccea[_0xf00a('0x2a')];if(_0x33e12f[_0xf00a('0x2c')][_0xf00a('0x41')]){_0x345098[_0xf00a('0x3c')]=[{'all':!![]}];}_0x345098=_[_0xf00a('0x39')]({},_0x345098,_0x33e12f[_0xf00a('0x3b')]);return db['DeskAccount'][_0xf00a('0x42')](_0x345098)['then'](handleEntityNotFound(_0x1f3b8c,null))[_0xf00a('0x1f')](respondWithResult(_0x1f3b8c,null))[_0xf00a('0x3f')](handleError(_0x1f3b8c,null));};exports[_0xf00a('0x43')]=function(_0x2b74bf,_0xc1098c){return db[_0xf00a('0x25')][_0xf00a('0x43')](_0x2b74bf[_0xf00a('0x44')],{})[_0xf00a('0x1f')](respondWithResult(_0xc1098c,0xc9))[_0xf00a('0x3f')](handleError(_0xc1098c,null));};exports[_0xf00a('0x1e')]=function(_0x309098,_0x485936){if(_0x309098[_0xf00a('0x44')]['id']){delete _0x309098[_0xf00a('0x44')]['id'];}return db[_0xf00a('0x25')]['find']({'where':{'id':_0x309098[_0xf00a('0x45')]['id']}})['then'](handleEntityNotFound(_0x485936,null))[_0xf00a('0x1f')](saveUpdates(_0x309098['body'],null))[_0xf00a('0x1f')](respondWithResult(_0x485936,null))[_0xf00a('0x3f')](handleError(_0x485936,null));};exports[_0xf00a('0x20')]=function(_0x5df6d4,_0x5a9926){return db[_0xf00a('0x25')][_0xf00a('0x42')]({'where':{'id':_0x5df6d4[_0xf00a('0x45')]['id']}})[_0xf00a('0x1f')](handleEntityNotFound(_0x5a9926,null))[_0xf00a('0x1f')](removeEntity(_0x5a9926,null))[_0xf00a('0x3f')](handleError(_0x5a9926,null));};exports['getConfigurations']=function(_0x3d5dd6,_0x27d6cb,_0x10d536){var _0x4ec6be={};var _0x5d312a={};var _0x57f17b;var _0x556ee3;return db[_0xf00a('0x25')][_0xf00a('0x46')]({'where':{'id':_0x3d5dd6[_0xf00a('0x45')]['id']}})[_0xf00a('0x1f')](handleEntityNotFound(_0x27d6cb,null))['then'](function(_0x442f81){if(_0x442f81){_0x57f17b=_0x442f81;_0x5d312a[_0xf00a('0x2a')]=_['keys'](db[_0xf00a('0x47')][_0xf00a('0x26')]);_0x5d312a[_0xf00a('0x2c')]=_['keys'](_0x3d5dd6[_0xf00a('0x2c')]);_0x5d312a[_0xf00a('0x36')]=_['intersection'](_0x5d312a[_0xf00a('0x2a')],_0x5d312a[_0xf00a('0x2c')]);_0x4ec6be['attributes']=_[_0xf00a('0x2e')](_0x5d312a['model'],qs[_0xf00a('0x2f')](_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x2f')]));_0x4ec6be[_0xf00a('0x30')]=_0x4ec6be[_0xf00a('0x30')][_0xf00a('0x31')]?_0x4ec6be[_0xf00a('0x30')]:_0x5d312a[_0xf00a('0x2a')];_0x4ec6be[_0xf00a('0x34')]=qs[_0xf00a('0x35')](_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x35')]);_0x4ec6be[_0xf00a('0x38')]=qs[_0xf00a('0x36')](_[_0xf00a('0x48')](_0x3d5dd6[_0xf00a('0x2c')],_0x5d312a[_0xf00a('0x36')]));if(_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x37')]){_0x4ec6be[_0xf00a('0x38')]=_[_0xf00a('0x39')](_0x4ec6be[_0xf00a('0x38')],{'$or':_[_0xf00a('0x24')](_0x4ec6be[_0xf00a('0x30')],function(_0x4699a7){var _0x52072c={};_0x52072c[_0x4699a7]={'$like':'%'+_0x3d5dd6['query'][_0xf00a('0x37')]+'%'};return _0x52072c;})});}_0x4ec6be=_[_0xf00a('0x39')]({},_0x4ec6be,_0x3d5dd6[_0xf00a('0x3b')]);return _0x57f17b[_0xf00a('0x49')](_0x4ec6be);}})['then'](function(_0x3dae1a){if(_0x3dae1a){_0x556ee3=_0x3dae1a[_0xf00a('0x31')];if(!_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x4a')](_0xf00a('0x32'))){_0x4ec6be['limit']=qs[_0xf00a('0x33')](_0x3d5dd6[_0xf00a('0x2c')]['limit']);_0x4ec6be['offset']=qs[_0xf00a('0x18')](_0x3d5dd6['query'][_0xf00a('0x18')]);}return _0x57f17b['getConfigurations'](_0x4ec6be);}})[_0xf00a('0x1f')](function(_0x453147){if(_0x453147){return _0x453147?{'count':_0x556ee3,'rows':_0x453147}:null;}})[_0xf00a('0x1f')](respondWithResult(_0x27d6cb,null))[_0xf00a('0x3f')](handleError(_0x27d6cb,null));};exports[_0xf00a('0x4b')]=function(_0x27c2d7,_0x3a8204,_0x1f9c5c){if(_0x27c2d7['body']['id']){delete _0x27c2d7['body']['id'];}return db[_0xf00a('0x25')][_0xf00a('0x46')]({'where':{'id':_0x27c2d7[_0xf00a('0x45')]['id']}})[_0xf00a('0x1f')](handleEntityNotFound(_0x3a8204,null))['then'](function(_0x227fe5){if(_0x227fe5){_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x4c')]=_0x227fe5['id'];_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x4d')]=integrations[_0xf00a('0x4e')](_0x27c2d7['body']['channel'],_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x28')]);_0x27c2d7['body']['Descriptions']=integrations['getDescriptions'](_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x4f')],_0x27c2d7['body'][_0xf00a('0x28')]);return db[_0xf00a('0x47')][_0xf00a('0x43')](_0x27c2d7['body'],{'include':[{'model':db[_0xf00a('0x50')],'as':_0xf00a('0x4d')},{'model':db[_0xf00a('0x50')],'as':_0xf00a('0x51')}]});}return null;})[_0xf00a('0x1f')](respondWithResult(_0x3a8204,null))[_0xf00a('0x3f')](handleError(_0x3a8204,null));};exports[_0xf00a('0x52')]=function(_0x3e9673,_0x4a0816,_0x105ebd){var _0xbb6fda=[{'name':'priority','label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x3ae58c='';return db[_0xf00a('0x25')]['findOne']({'where':{'id':_0x3e9673[_0xf00a('0x45')]['id']},'attributes':['id',_0xf00a('0x53'),_0xf00a('0x54'),_0xf00a('0x55'),_0xf00a('0x56'),_0xf00a('0x57'),_0xf00a('0x58'),_0xf00a('0x59'),_0xf00a('0x5a')]})[_0xf00a('0x1f')](handleEntityNotFound(_0x4a0816,null))[_0xf00a('0x1f')](function(_0x7a937c){if(_0x7a937c){_0x3ae58c=_0x7a937c['remoteUri'];var _0x3abe41=_0x3ae58c['slice'](-0x1);if(_0x3abe41==='/'){_0x3ae58c=_0x3ae58c[_0xf00a('0x5b')](0x0,_0x3ae58c['lastIndexOf'](_0x3abe41));}var _0x5b4a90={'method':'GET','uri':util['format'](_0xf00a('0x5c'),_0x3ae58c),'headers':{'Content-Type':_0xf00a('0x5d'),'Accept':_0xf00a('0x5d')},'json':!![]};if(_0x7a937c[_0xf00a('0x54')]===_0xf00a('0x5e')){_0x5b4a90['headers'][_0xf00a('0x5f')]=util['format'](_0xf00a('0x60'),new Buffer(util[_0xf00a('0x61')](_0xf00a('0x62'),_0x7a937c[_0xf00a('0x55')],_0x7a937c[_0xf00a('0x56')]))[_0xf00a('0x63')](_0xf00a('0x64')));}return rp(_0x5b4a90)[_0xf00a('0x1f')](function(_0x4652ea){return _0xbb6fda[_0xf00a('0x65')](_[_0xf00a('0x24')](_0x4652ea[_0xf00a('0x66')][_0xf00a('0x67')],function(_0x1f1a66){return{'id':_0x1f1a66[_0xf00a('0x2b')],'name':_0x1f1a66['name'],'type':_0x1f1a66[_0xf00a('0x28')],'active':_0x1f1a66[_0xf00a('0x68')],'label':_0x1f1a66[_0xf00a('0x69')],'custom':!![]};}));});}})['then'](function(_0x21ee5e){return{'count':_0x21ee5e[_0xf00a('0x31')],'rows':_0x21ee5e};})[_0xf00a('0x1f')](respondWithResult(_0x4a0816,null))[_0xf00a('0x3f')](function(_0x474e9d){var _0x42b2fc=_0x3e9673[_0xf00a('0x2c')][_0xf00a('0x6a')]?0x1f4:_0x474e9d['statusCode']||0x1f4;logger['error'](_0xf00a('0x6b'),_0xf00a('0x52'),_0x42b2fc,JSON[_0xf00a('0x6c')](_0x474e9d));delete _0x474e9d[_0xf00a('0x2b')];if(_0x42b2fc===0x191){_0x42b2fc=0x190;}_0x4a0816[_0xf00a('0x16')](_0x42b2fc)['send'](_0x3e9673['query']['test']?{'message':_0xf00a('0x6d'),'statusCode':_0x474e9d[_0xf00a('0x6e')]}:_0x474e9d);});};
\ No newline at end of file
+var _0x801f=['includeAll','rows','catch','show','params','include','find','create','body','getConfigurations','findOne','DeskConfiguration','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','password','consumerSecret','token','remoteUri','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','authType','basic','headers','username','base64','concat','_embedded','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','mustache','util','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','reject','destroy','then','error','stack','name','map','DeskAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options'];(function(_0x5ac84c,_0x287781){var _0x3c53d2=function(_0x40cde0){while(--_0x40cde0){_0x5ac84c['push'](_0x5ac84c['shift']());}};_0x3c53d2(++_0x287781);}(_0x801f,0x1e0));var _0xf801=function(_0x42d903,_0xbc931d){_0x42d903=_0x42d903-0x0;var _0x7406c=_0x801f[_0x42d903];return _0x7406c;};'use strict';var emlformat=require(_0xf801('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf801('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf801('0x2'));var moment=require(_0xf801('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xf801('0x4'));var util=require(_0xf801('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf801('0x6'));var fs=require('fs');var fs_extra=require(_0xf801('0x7'));var _=require(_0xf801('0x8'));var squel=require(_0xf801('0x9'));var crypto=require(_0xf801('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf801('0xb'));var querystring=require(_0xf801('0xc'));var Papa=require(_0xf801('0xd'));var Redis=require('ioredis');var authService=require(_0xf801('0xe'));var qs=require(_0xf801('0xf'));var as=require(_0xf801('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf801('0x11'))(_0xf801('0x12'));var utils=require(_0xf801('0x13'));var config=require(_0xf801('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf801('0x15'))['db'];var integrations=require(_0xf801('0x16'));function respondWithStatusCode(_0x186f59,_0x165053){_0x165053=_0x165053||0xcc;return function(_0x3d3a1f){if(_0x3d3a1f){return _0x186f59[_0xf801('0x17')](_0x165053);}return _0x186f59[_0xf801('0x18')](_0x165053)[_0xf801('0x19')]();};}function respondWithResult(_0x3fb0f7,_0x5c97ff){_0x5c97ff=_0x5c97ff||0xc8;return function(_0x37e322){if(_0x37e322){return _0x3fb0f7['status'](_0x5c97ff)['json'](_0x37e322);}};}function respondWithFilteredResult(_0x683e64,_0x278da2){return function(_0x2b8d89){if(_0x2b8d89){var _0x14cc47=typeof _0x278da2[_0xf801('0x1a')]==='undefined'&&typeof _0x278da2['limit']===_0xf801('0x1b');var _0x4f224a=_0x2b8d89[_0xf801('0x1c')];var _0x1486dc=_0x14cc47?0x0:_0x278da2[_0xf801('0x1a')];var _0x521742=_0x14cc47?_0x2b8d89[_0xf801('0x1c')]:_0x278da2[_0xf801('0x1a')]+_0x278da2[_0xf801('0x1d')];var _0x3bb840;if(_0x521742>=_0x4f224a){_0x521742=_0x4f224a;_0x3bb840=0xc8;}else{_0x3bb840=0xce;}_0x683e64[_0xf801('0x18')](_0x3bb840);return _0x683e64[_0xf801('0x1e')](_0xf801('0x1f'),_0x1486dc+'-'+_0x521742+'/'+_0x4f224a)['json'](_0x2b8d89);}return null;};}function patchUpdates(_0x5ccfa2){return function(_0xfaf21b){try{jsonpatch['apply'](_0xfaf21b,_0x5ccfa2,!![]);}catch(_0x2dcb20){return BPromise[_0xf801('0x20')](_0x2dcb20);}return _0xfaf21b['save']();};}function saveUpdates(_0x34eb45,_0x2ea5f6){return function(_0x26e72e){if(_0x26e72e){return _0x26e72e['update'](_0x34eb45)['then'](function(_0x9b3b13){return _0x9b3b13;});}return null;};}function removeEntity(_0x4bf0ba,_0x2ad2ee){return function(_0x5b1d02){if(_0x5b1d02){return _0x5b1d02[_0xf801('0x21')]()[_0xf801('0x22')](function(){_0x4bf0ba[_0xf801('0x18')](0xcc)[_0xf801('0x19')]();});}};}function handleEntityNotFound(_0x1e1f87,_0x48ae2e){return function(_0x56dfb8){if(!_0x56dfb8){_0x1e1f87[_0xf801('0x17')](0x194);}return _0x56dfb8;};}function handleError(_0x42c054,_0xc53278){_0xc53278=_0xc53278||0x1f4;return function(_0x535a18){logger[_0xf801('0x23')](_0x535a18[_0xf801('0x24')]);if(_0x535a18[_0xf801('0x25')]){delete _0x535a18[_0xf801('0x25')];}_0x42c054[_0xf801('0x18')](_0xc53278)['send'](_0x535a18);};}exports['index']=function(_0x4da586,_0x2afd99){var _0x358054={},_0x4e4d0a={},_0x4ea5ae={'count':0x0,'rows':[]};var _0x4849fd=_[_0xf801('0x26')](db[_0xf801('0x27')][_0xf801('0x28')],function(_0x1c9c96){return{'name':_0x1c9c96[_0xf801('0x29')],'type':_0x1c9c96[_0xf801('0x2a')]['key']};});_0x4e4d0a[_0xf801('0x2b')]=_[_0xf801('0x26')](_0x4849fd,_0xf801('0x25'));_0x4e4d0a[_0xf801('0x2c')]=_[_0xf801('0x2d')](_0x4da586[_0xf801('0x2c')]);_0x4e4d0a[_0xf801('0x2e')]=_[_0xf801('0x2f')](_0x4e4d0a[_0xf801('0x2b')],_0x4e4d0a[_0xf801('0x2c')]);_0x358054[_0xf801('0x30')]=_['intersection'](_0x4e4d0a[_0xf801('0x2b')],qs[_0xf801('0x31')](_0x4da586[_0xf801('0x2c')][_0xf801('0x31')]));_0x358054[_0xf801('0x30')]=_0x358054[_0xf801('0x30')][_0xf801('0x32')]?_0x358054[_0xf801('0x30')]:_0x4e4d0a['model'];if(!_0x4da586[_0xf801('0x2c')][_0xf801('0x33')]('nolimit')){_0x358054[_0xf801('0x1d')]=qs[_0xf801('0x1d')](_0x4da586['query'][_0xf801('0x1d')]);_0x358054[_0xf801('0x1a')]=qs['offset'](_0x4da586[_0xf801('0x2c')][_0xf801('0x1a')]);}_0x358054[_0xf801('0x34')]=qs[_0xf801('0x35')](_0x4da586[_0xf801('0x2c')][_0xf801('0x35')]);_0x358054[_0xf801('0x36')]=qs['filters'](_[_0xf801('0x37')](_0x4da586['query'],_0x4e4d0a[_0xf801('0x2e')]),_0x4849fd);if(_0x4da586[_0xf801('0x2c')][_0xf801('0x38')]){_0x358054[_0xf801('0x36')]=_['merge'](_0x358054[_0xf801('0x36')],{'$or':_[_0xf801('0x26')](_0x4849fd,function(_0x4bacda){if(_0x4bacda['type']!==_0xf801('0x39')){var _0x1b749c={};_0x1b749c[_0x4bacda[_0xf801('0x25')]]={'$like':'%'+_0x4da586[_0xf801('0x2c')][_0xf801('0x38')]+'%'};return _0x1b749c;}})});}_0x358054=_[_0xf801('0x3a')]({},_0x358054,_0x4da586[_0xf801('0x3b')]);var _0x21e2f7={'where':_0x358054[_0xf801('0x36')]};return db[_0xf801('0x27')][_0xf801('0x1c')](_0x21e2f7)[_0xf801('0x22')](function(_0x16af81){_0x4ea5ae[_0xf801('0x1c')]=_0x16af81;if(_0x4da586[_0xf801('0x2c')][_0xf801('0x3c')]){_0x358054['include']=[{'all':!![]}];}return db['DeskAccount']['findAll'](_0x358054);})['then'](function(_0x7c8302){_0x4ea5ae[_0xf801('0x3d')]=_0x7c8302;return _0x4ea5ae;})['then'](respondWithFilteredResult(_0x2afd99,_0x358054))[_0xf801('0x3e')](handleError(_0x2afd99,null));};exports[_0xf801('0x3f')]=function(_0x50731e,_0x4abb8c){var _0x39757e={'raw':![],'where':{'id':_0x50731e[_0xf801('0x40')]['id']}},_0x417649={};_0x417649[_0xf801('0x2b')]=_[_0xf801('0x2d')](db[_0xf801('0x27')][_0xf801('0x28')]);_0x417649[_0xf801('0x2c')]=_[_0xf801('0x2d')](_0x50731e[_0xf801('0x2c')]);_0x417649[_0xf801('0x2e')]=_[_0xf801('0x2f')](_0x417649[_0xf801('0x2b')],_0x417649[_0xf801('0x2c')]);_0x39757e['attributes']=_[_0xf801('0x2f')](_0x417649[_0xf801('0x2b')],qs[_0xf801('0x31')](_0x50731e[_0xf801('0x2c')][_0xf801('0x31')]));_0x39757e[_0xf801('0x30')]=_0x39757e[_0xf801('0x30')][_0xf801('0x32')]?_0x39757e[_0xf801('0x30')]:_0x417649[_0xf801('0x2b')];if(_0x50731e[_0xf801('0x2c')][_0xf801('0x3c')]){_0x39757e[_0xf801('0x41')]=[{'all':!![]}];}_0x39757e=_[_0xf801('0x3a')]({},_0x39757e,_0x50731e[_0xf801('0x3b')]);return db[_0xf801('0x27')][_0xf801('0x42')](_0x39757e)[_0xf801('0x22')](handleEntityNotFound(_0x4abb8c,null))[_0xf801('0x22')](respondWithResult(_0x4abb8c,null))[_0xf801('0x3e')](handleError(_0x4abb8c,null));};exports[_0xf801('0x43')]=function(_0x14b0b,_0x7fe0cc){return db[_0xf801('0x27')][_0xf801('0x43')](_0x14b0b[_0xf801('0x44')],{})[_0xf801('0x22')](respondWithResult(_0x7fe0cc,0xc9))[_0xf801('0x3e')](handleError(_0x7fe0cc,null));};exports['update']=function(_0x407c5c,_0x449352){if(_0x407c5c['body']['id']){delete _0x407c5c['body']['id'];}return db[_0xf801('0x27')][_0xf801('0x42')]({'where':{'id':_0x407c5c[_0xf801('0x40')]['id']}})[_0xf801('0x22')](handleEntityNotFound(_0x449352,null))['then'](saveUpdates(_0x407c5c['body'],null))[_0xf801('0x22')](respondWithResult(_0x449352,null))[_0xf801('0x3e')](handleError(_0x449352,null));};exports[_0xf801('0x21')]=function(_0x39f285,_0x361cec){return db['DeskAccount'][_0xf801('0x42')]({'where':{'id':_0x39f285['params']['id']}})[_0xf801('0x22')](handleEntityNotFound(_0x361cec,null))['then'](removeEntity(_0x361cec,null))[_0xf801('0x3e')](handleError(_0x361cec,null));};exports[_0xf801('0x45')]=function(_0x567cb4,_0x33da0a,_0x51afb5){var _0x5d9ec3={};var _0xe9179f={};var _0x56207;var _0x3605b7;return db[_0xf801('0x27')][_0xf801('0x46')]({'where':{'id':_0x567cb4[_0xf801('0x40')]['id']}})[_0xf801('0x22')](handleEntityNotFound(_0x33da0a,null))[_0xf801('0x22')](function(_0x3ef08a){if(_0x3ef08a){_0x56207=_0x3ef08a;_0xe9179f[_0xf801('0x2b')]=_['keys'](db[_0xf801('0x47')]['rawAttributes']);_0xe9179f['query']=_[_0xf801('0x2d')](_0x567cb4[_0xf801('0x2c')]);_0xe9179f[_0xf801('0x2e')]=_['intersection'](_0xe9179f[_0xf801('0x2b')],_0xe9179f[_0xf801('0x2c')]);_0x5d9ec3['attributes']=_['intersection'](_0xe9179f[_0xf801('0x2b')],qs[_0xf801('0x31')](_0x567cb4[_0xf801('0x2c')][_0xf801('0x31')]));_0x5d9ec3['attributes']=_0x5d9ec3['attributes'][_0xf801('0x32')]?_0x5d9ec3['attributes']:_0xe9179f[_0xf801('0x2b')];_0x5d9ec3[_0xf801('0x34')]=qs[_0xf801('0x35')](_0x567cb4[_0xf801('0x2c')]['sort']);_0x5d9ec3[_0xf801('0x36')]=qs[_0xf801('0x2e')](_[_0xf801('0x37')](_0x567cb4['query'],_0xe9179f[_0xf801('0x2e')]));if(_0x567cb4[_0xf801('0x2c')]['filter']){_0x5d9ec3['where']=_['merge'](_0x5d9ec3[_0xf801('0x36')],{'$or':_[_0xf801('0x26')](_0x5d9ec3[_0xf801('0x30')],function(_0x5250f6){var _0x8a0b3d={};_0x8a0b3d[_0x5250f6]={'$like':'%'+_0x567cb4[_0xf801('0x2c')][_0xf801('0x38')]+'%'};return _0x8a0b3d;})});}_0x5d9ec3=_[_0xf801('0x3a')]({},_0x5d9ec3,_0x567cb4[_0xf801('0x3b')]);return _0x56207[_0xf801('0x45')](_0x5d9ec3);}})['then'](function(_0x323b73){if(_0x323b73){_0x3605b7=_0x323b73[_0xf801('0x32')];if(!_0x567cb4[_0xf801('0x2c')][_0xf801('0x33')](_0xf801('0x48'))){_0x5d9ec3[_0xf801('0x1d')]=qs[_0xf801('0x1d')](_0x567cb4[_0xf801('0x2c')][_0xf801('0x1d')]);_0x5d9ec3[_0xf801('0x1a')]=qs[_0xf801('0x1a')](_0x567cb4[_0xf801('0x2c')][_0xf801('0x1a')]);}return _0x56207[_0xf801('0x45')](_0x5d9ec3);}})[_0xf801('0x22')](function(_0x1bf1fa){if(_0x1bf1fa){return _0x1bf1fa?{'count':_0x3605b7,'rows':_0x1bf1fa}:null;}})[_0xf801('0x22')](respondWithResult(_0x33da0a,null))['catch'](handleError(_0x33da0a,null));};exports[_0xf801('0x49')]=function(_0x38f7c3,_0x33f8fc,_0x2c1483){if(_0x38f7c3[_0xf801('0x44')]['id']){delete _0x38f7c3[_0xf801('0x44')]['id'];}return db[_0xf801('0x27')][_0xf801('0x46')]({'where':{'id':_0x38f7c3[_0xf801('0x40')]['id']}})[_0xf801('0x22')](handleEntityNotFound(_0x33f8fc,null))[_0xf801('0x22')](function(_0x1a214c){if(_0x1a214c){_0x38f7c3[_0xf801('0x44')][_0xf801('0x4a')]=_0x1a214c['id'];_0x38f7c3[_0xf801('0x44')]['Subjects']=integrations[_0xf801('0x4b')](_0x38f7c3[_0xf801('0x44')][_0xf801('0x4c')],_0x38f7c3[_0xf801('0x44')][_0xf801('0x2a')]);_0x38f7c3[_0xf801('0x44')][_0xf801('0x4d')]=integrations[_0xf801('0x4e')](_0x38f7c3[_0xf801('0x44')][_0xf801('0x4c')],_0x38f7c3[_0xf801('0x44')][_0xf801('0x2a')]);return db['DeskConfiguration'][_0xf801('0x43')](_0x38f7c3[_0xf801('0x44')],{'include':[{'model':db[_0xf801('0x4f')],'as':'Subjects'},{'model':db[_0xf801('0x4f')],'as':_0xf801('0x4d')}]});}return null;})[_0xf801('0x22')](respondWithResult(_0x33f8fc,null))[_0xf801('0x3e')](handleError(_0x33f8fc,null));};exports[_0xf801('0x50')]=function(_0x35ec4d,_0x549e9a,_0x15c08d){var _0x35103d=[{'name':_0xf801('0x51'),'label':_0xf801('0x51'),'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 _0xc270d2='';return db[_0xf801('0x27')][_0xf801('0x46')]({'where':{'id':_0x35ec4d[_0xf801('0x40')]['id']},'attributes':['id','remoteUri','authType','username',_0xf801('0x52'),'consumerKey',_0xf801('0x53'),_0xf801('0x54'),'tokenSecret']})[_0xf801('0x22')](handleEntityNotFound(_0x549e9a,null))[_0xf801('0x22')](function(_0x1e7a85){if(_0x1e7a85){_0xc270d2=_0x1e7a85[_0xf801('0x55')];var _0x1d3ec4=_0xc270d2[_0xf801('0x56')](-0x1);if(_0x1d3ec4==='/'){_0xc270d2=_0xc270d2[_0xf801('0x57')](0x0,_0xc270d2[_0xf801('0x58')](_0x1d3ec4));}var _0xe547f3={'method':'GET','uri':util[_0xf801('0x59')](_0xf801('0x5a'),_0xc270d2),'headers':{'Content-Type':_0xf801('0x5b'),'Accept':_0xf801('0x5b')},'json':!![]};if(_0x1e7a85[_0xf801('0x5c')]===_0xf801('0x5d')){_0xe547f3[_0xf801('0x5e')]['Authorization']=util[_0xf801('0x59')]('Basic\x20%s',new Buffer(util[_0xf801('0x59')]('%s:%s',_0x1e7a85[_0xf801('0x5f')],_0x1e7a85[_0xf801('0x52')]))['toString'](_0xf801('0x60')));}return rp(_0xe547f3)['then'](function(_0x237d87){return _0x35103d[_0xf801('0x61')](_[_0xf801('0x26')](_0x237d87[_0xf801('0x62')][_0xf801('0x63')],function(_0x7a73ae){return{'id':_0x7a73ae[_0xf801('0x25')],'name':_0x7a73ae[_0xf801('0x25')],'type':_0x7a73ae['type'],'active':_0x7a73ae[_0xf801('0x64')],'label':_0x7a73ae[_0xf801('0x65')],'custom':!![]};}));});}})[_0xf801('0x22')](function(_0x2d3901){return{'count':_0x2d3901[_0xf801('0x32')],'rows':_0x2d3901};})[_0xf801('0x22')](respondWithResult(_0x549e9a,null))[_0xf801('0x3e')](function(_0x31092b){var _0x2b2562=_0x35ec4d[_0xf801('0x2c')][_0xf801('0x66')]?0x1f4:_0x31092b[_0xf801('0x67')]||0x1f4;logger[_0xf801('0x23')](_0xf801('0x68'),_0xf801('0x50'),_0x2b2562,JSON[_0xf801('0x69')](_0x31092b));delete _0x31092b[_0xf801('0x25')];if(_0x2b2562===0x191){_0x2b2562=0x190;}_0x549e9a[_0xf801('0x18')](_0x2b2562)[_0xf801('0x6a')](_0x35ec4d[_0xf801('0x2c')]['test']?{'message':_0xf801('0x6b'),'statusCode':_0x31092b[_0xf801('0x67')]}:_0x31092b);});};
\ No newline at end of file
index 65cfa2d..fa1a447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7c5=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','int_desk_accounts'];(function(_0x3051e,_0xaa2fb1){var _0x480159=function(_0x5a3ef8){while(--_0x5a3ef8){_0x3051e['push'](_0x3051e['shift']());}};_0x480159(++_0xaa2fb1);}(_0xe7c5,0xc0));var _0x5e7c=function(_0x1804ae,_0x33570b){_0x1804ae=_0x1804ae-0x0;var _0x5e5161=_0xe7c5[_0x1804ae];return _0x5e5161;};'use strict';var _=require(_0x5e7c('0x0'));var util=require(_0x5e7c('0x1'));var logger=require(_0x5e7c('0x2'))('api');var moment=require(_0x5e7c('0x3'));var BPromise=require(_0x5e7c('0x4'));var rp=require(_0x5e7c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5e7c('0x6'));var config=require(_0x5e7c('0x7'));var attributes=require(_0x5e7c('0x8'));var integrations=require(_0x5e7c('0x9'));module['exports']=function(_0x3956b9,_0x4f3808){return _0x3956b9[_0x5e7c('0xa')]('DeskAccount',attributes,{'tableName':_0x5e7c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ab8=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','DeskAccount','lodash'];(function(_0x273d18,_0x505e74){var _0x578550=function(_0x5515fd){while(--_0x5515fd){_0x273d18['push'](_0x273d18['shift']());}};_0x578550(++_0x505e74);}(_0x3ab8,0x1c7));var _0x83ab=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x3ab8[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x83ab('0x0'));var util=require(_0x83ab('0x1'));var logger=require('../../config/logger')(_0x83ab('0x2'));var moment=require(_0x83ab('0x3'));var BPromise=require(_0x83ab('0x4'));var rp=require(_0x83ab('0x5'));var fs=require('fs');var path=require(_0x83ab('0x6'));var rimraf=require(_0x83ab('0x7'));var config=require(_0x83ab('0x8'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0x83ab('0x9'));module[_0x83ab('0xa')]=function(_0x480fc3,_0x570fde){return _0x480fc3['define'](_0x83ab('0xb'),attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 34e2ee2..5849caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c2=['where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','include','map','model','attributes','GetDeskAccount','ShowDeskAccount','raw'];(function(_0x296860,_0x5ac07c){var _0x23e273=function(_0x509e97){while(--_0x509e97){_0x296860['push'](_0x296860['shift']());}};_0x23e273(++_0x5ac07c);}(_0xc2c2,0x67));var _0x2c2c=function(_0x414d48,_0x45ec69){_0x414d48=_0x414d48-0x0;var _0x1996ac=_0xc2c2[_0x414d48];return _0x1996ac;};'use strict';var _=require(_0x2c2c('0x0'));var util=require(_0x2c2c('0x1'));var moment=require(_0x2c2c('0x2'));var BPromise=require('bluebird');var rs=require(_0x2c2c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2c2c('0x4'))['db'];var utils=require(_0x2c2c('0x5'));var logger=require(_0x2c2c('0x6'))(_0x2c2c('0x7'));var config=require(_0x2c2c('0x8'));var jayson=require(_0x2c2c('0x9'));var client=jayson[_0x2c2c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x420ccd,_0x198864,_0x1f9312){return new BPromise(function(_0x453a6b,_0x58a10d){return client[_0x2c2c('0xb')](_0x420ccd,_0x1f9312)[_0x2c2c('0xc')](function(_0x5b1939){logger[_0x2c2c('0xd')](_0x2c2c('0xe'),_0x198864,_0x2c2c('0xf'));logger[_0x2c2c('0x10')](_0x2c2c('0x11'),_0x198864,_0x2c2c('0xf'),JSON[_0x2c2c('0x12')](_0x5b1939));if(_0x5b1939['error']){if(_0x5b1939[_0x2c2c('0x13')][_0x2c2c('0x14')]===0x1f4){logger[_0x2c2c('0x13')]('DeskAccount,\x20%s,\x20%s',_0x198864,_0x5b1939['error'][_0x2c2c('0x15')]);return _0x58a10d(_0x5b1939[_0x2c2c('0x13')]['message']);}logger[_0x2c2c('0x13')](_0x2c2c('0xe'),_0x198864,_0x5b1939[_0x2c2c('0x13')][_0x2c2c('0x15')]);return _0x453a6b(_0x5b1939[_0x2c2c('0x13')]['message']);}else{logger[_0x2c2c('0xd')]('DeskAccount,\x20%s,\x20%s',_0x198864,_0x2c2c('0xf'));_0x453a6b(_0x5b1939[_0x2c2c('0x16')]['message']);}})[_0x2c2c('0x17')](function(_0x9bdaf6){logger['error'](_0x2c2c('0xe'),_0x198864,_0x9bdaf6);_0x58a10d(_0x9bdaf6);});});}exports['GetDeskAccount']=function(_0x538a45){var _0x3e6c5a=this;return new Promise(function(_0x3bed1e,_0x58c06d){return db['DeskAccount'][_0x2c2c('0x18')]({'raw':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x538a45['options']?_0x538a45[_0x2c2c('0x19')]['where']||null:null,'attributes':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')]['attributes']||null:null,'limit':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')]['limit']||null:null,'include':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')][_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0x538a45[_0x2c2c('0x19')]['include'],function(_0x22cd7f){return{'model':db[_0x22cd7f[_0x2c2c('0x1c')]],'as':_0x22cd7f['as'],'attributes':_0x22cd7f[_0x2c2c('0x1d')],'include':_0x22cd7f[_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0x22cd7f[_0x2c2c('0x1a')],function(_0x599e7c){return{'model':db[_0x599e7c['model']],'as':_0x599e7c['as'],'attributes':_0x599e7c['attributes'],'include':_0x599e7c['include']?_[_0x2c2c('0x1b')](_0x599e7c[_0x2c2c('0x1a')],function(_0x115c4f){return{'model':db[_0x115c4f[_0x2c2c('0x1c')]],'as':_0x115c4f['as'],'attributes':_0x115c4f[_0x2c2c('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1780f4){logger[_0x2c2c('0xd')]('GetDeskAccount',_0x538a45);logger[_0x2c2c('0x10')]('GetDeskAccount',_0x538a45,JSON[_0x2c2c('0x12')](_0x1780f4));_0x3bed1e(_0x1780f4);})[_0x2c2c('0x17')](function(_0x229be5){logger[_0x2c2c('0x13')](_0x2c2c('0x1e'),_0x229be5['message'],_0x538a45);_0x58c06d(_0x3e6c5a['error'](0x1f4,_0x229be5[_0x2c2c('0x15')]));});});};exports[_0x2c2c('0x1f')]=function(_0x214f42){var _0x2d1ed0=this;return new Promise(function(_0xefb00f,_0x390d00){return db['DeskAccount']['find']({'raw':_0x214f42[_0x2c2c('0x19')]?_0x214f42['options'][_0x2c2c('0x20')]===undefined?!![]:![]:!![],'where':_0x214f42[_0x2c2c('0x19')]?_0x214f42['options'][_0x2c2c('0x21')]||null:null,'attributes':_0x214f42[_0x2c2c('0x19')]?_0x214f42[_0x2c2c('0x19')]['attributes']||null:null,'include':_0x214f42['options']?_0x214f42[_0x2c2c('0x19')]['include']?_[_0x2c2c('0x1b')](_0x214f42[_0x2c2c('0x19')][_0x2c2c('0x1a')],function(_0xd9e4ec){return{'model':db[_0xd9e4ec[_0x2c2c('0x1c')]],'as':_0xd9e4ec['as'],'attributes':_0xd9e4ec[_0x2c2c('0x1d')],'include':_0xd9e4ec[_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0xd9e4ec[_0x2c2c('0x1a')],function(_0x48b3b8){return{'model':db[_0x48b3b8[_0x2c2c('0x1c')]],'as':_0x48b3b8['as'],'attributes':_0x48b3b8[_0x2c2c('0x1d')],'include':_0x48b3b8[_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0x48b3b8['include'],function(_0x45561d){return{'model':db[_0x45561d[_0x2c2c('0x1c')]],'as':_0x45561d['as'],'attributes':_0x45561d['attributes']};}):[]};}):[]};}):[]:[]})[_0x2c2c('0xc')](function(_0x11feed){logger[_0x2c2c('0xd')]('ShowDeskAccount',_0x214f42);logger[_0x2c2c('0x10')](_0x2c2c('0x1f'),_0x214f42,JSON['stringify'](_0x11feed));_0xefb00f(_0x11feed);})[_0x2c2c('0x17')](function(_0x15c646){logger[_0x2c2c('0x13')](_0x2c2c('0x1f'),_0x15c646[_0x2c2c('0x15')],_0x214f42);_0x390d00(_0x2d1ed0[_0x2c2c('0x13')](0x1f4,_0x15c646['message']));});});};
\ No newline at end of file
+var _0xbfa1=['bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','DeskAccount,\x20%s,\x20%s','info','result','catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','include','model','map','debug','find','ShowDeskAccount','lodash','util','moment'];(function(_0x29417d,_0x2c180c){var _0x1a2b35=function(_0x2b644c){while(--_0x2b644c){_0x29417d['push'](_0x29417d['shift']());}};_0x1a2b35(++_0x2c180c);}(_0xbfa1,0x189));var _0x1bfa=function(_0xed2b66,_0x13c18a){_0xed2b66=_0xed2b66-0x0;var _0x5c2fc4=_0xbfa1[_0xed2b66];return _0x5c2fc4;};'use strict';var _=require(_0x1bfa('0x0'));var util=require(_0x1bfa('0x1'));var moment=require(_0x1bfa('0x2'));var BPromise=require(_0x1bfa('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1bfa('0x4'));var db=require(_0x1bfa('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1bfa('0x6'))(_0x1bfa('0x7'));var config=require('../../config/environment');var jayson=require(_0x1bfa('0x8'));var client=jayson[_0x1bfa('0x9')][_0x1bfa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x36b632,_0x3fefce,_0x5bd36c){return new BPromise(function(_0x12298e,_0x121f5f){return client[_0x1bfa('0xb')](_0x36b632,_0x5bd36c)[_0x1bfa('0xc')](function(_0x4919e0){logger['info']('DeskAccount,\x20%s,\x20%s',_0x3fefce,_0x1bfa('0xd'));logger['debug'](_0x1bfa('0xe'),_0x3fefce,_0x1bfa('0xd'),JSON[_0x1bfa('0xf')](_0x4919e0));if(_0x4919e0['error']){if(_0x4919e0[_0x1bfa('0x10')][_0x1bfa('0x11')]===0x1f4){logger[_0x1bfa('0x10')]('DeskAccount,\x20%s,\x20%s',_0x3fefce,_0x4919e0[_0x1bfa('0x10')][_0x1bfa('0x12')]);return _0x121f5f(_0x4919e0[_0x1bfa('0x10')][_0x1bfa('0x12')]);}logger['error'](_0x1bfa('0x13'),_0x3fefce,_0x4919e0[_0x1bfa('0x10')]['message']);return _0x12298e(_0x4919e0['error']['message']);}else{logger[_0x1bfa('0x14')](_0x1bfa('0x13'),_0x3fefce,_0x1bfa('0xd'));_0x12298e(_0x4919e0[_0x1bfa('0x15')][_0x1bfa('0x12')]);}})[_0x1bfa('0x16')](function(_0x257689){logger[_0x1bfa('0x10')]('DeskAccount,\x20%s,\x20%s',_0x3fefce,_0x257689);_0x121f5f(_0x257689);});});}exports[_0x1bfa('0x17')]=function(_0x52d7ae){var _0x4f1767=this;return new Promise(function(_0x470df3,_0x13c528){return db[_0x1bfa('0x18')][_0x1bfa('0x19')]({'raw':_0x52d7ae['options']?_0x52d7ae[_0x1bfa('0x1a')][_0x1bfa('0x1b')]===undefined?!![]:![]:!![],'where':_0x52d7ae[_0x1bfa('0x1a')]?_0x52d7ae[_0x1bfa('0x1a')][_0x1bfa('0x1c')]||null:null,'attributes':_0x52d7ae['options']?_0x52d7ae['options'][_0x1bfa('0x1d')]||null:null,'limit':_0x52d7ae[_0x1bfa('0x1a')]?_0x52d7ae['options']['limit']||null:null,'include':_0x52d7ae[_0x1bfa('0x1a')]?_0x52d7ae[_0x1bfa('0x1a')][_0x1bfa('0x1e')]?_['map'](_0x52d7ae[_0x1bfa('0x1a')]['include'],function(_0x4ab6cc){return{'model':db[_0x4ab6cc[_0x1bfa('0x1f')]],'as':_0x4ab6cc['as'],'attributes':_0x4ab6cc[_0x1bfa('0x1d')],'include':_0x4ab6cc['include']?_[_0x1bfa('0x20')](_0x4ab6cc[_0x1bfa('0x1e')],function(_0x24a679){return{'model':db[_0x24a679[_0x1bfa('0x1f')]],'as':_0x24a679['as'],'attributes':_0x24a679[_0x1bfa('0x1d')],'include':_0x24a679[_0x1bfa('0x1e')]?_[_0x1bfa('0x20')](_0x24a679[_0x1bfa('0x1e')],function(_0x3e6c55){return{'model':db[_0x3e6c55[_0x1bfa('0x1f')]],'as':_0x3e6c55['as'],'attributes':_0x3e6c55[_0x1bfa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1bfa('0xc')](function(_0x4317c3){logger[_0x1bfa('0x14')](_0x1bfa('0x17'),_0x52d7ae);logger[_0x1bfa('0x21')]('GetDeskAccount',_0x52d7ae,JSON['stringify'](_0x4317c3));_0x470df3(_0x4317c3);})[_0x1bfa('0x16')](function(_0x2883a3){logger[_0x1bfa('0x10')](_0x1bfa('0x17'),_0x2883a3['message'],_0x52d7ae);_0x13c528(_0x4f1767[_0x1bfa('0x10')](0x1f4,_0x2883a3[_0x1bfa('0x12')]));});});};exports['ShowDeskAccount']=function(_0x112e1d){var _0x549a9e=this;return new Promise(function(_0x55acf0,_0x11ab20){return db[_0x1bfa('0x18')][_0x1bfa('0x22')]({'raw':_0x112e1d[_0x1bfa('0x1a')]?_0x112e1d[_0x1bfa('0x1a')][_0x1bfa('0x1b')]===undefined?!![]:![]:!![],'where':_0x112e1d[_0x1bfa('0x1a')]?_0x112e1d[_0x1bfa('0x1a')][_0x1bfa('0x1c')]||null:null,'attributes':_0x112e1d[_0x1bfa('0x1a')]?_0x112e1d[_0x1bfa('0x1a')][_0x1bfa('0x1d')]||null:null,'include':_0x112e1d[_0x1bfa('0x1a')]?_0x112e1d['options'][_0x1bfa('0x1e')]?_[_0x1bfa('0x20')](_0x112e1d['options'][_0x1bfa('0x1e')],function(_0x3fb09c){return{'model':db[_0x3fb09c[_0x1bfa('0x1f')]],'as':_0x3fb09c['as'],'attributes':_0x3fb09c[_0x1bfa('0x1d')],'include':_0x3fb09c[_0x1bfa('0x1e')]?_['map'](_0x3fb09c[_0x1bfa('0x1e')],function(_0x3a9632){return{'model':db[_0x3a9632[_0x1bfa('0x1f')]],'as':_0x3a9632['as'],'attributes':_0x3a9632[_0x1bfa('0x1d')],'include':_0x3a9632[_0x1bfa('0x1e')]?_[_0x1bfa('0x20')](_0x3a9632[_0x1bfa('0x1e')],function(_0xc2f687){return{'model':db[_0xc2f687[_0x1bfa('0x1f')]],'as':_0xc2f687['as'],'attributes':_0xc2f687[_0x1bfa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1bfa('0xc')](function(_0x3b8e09){logger['info'](_0x1bfa('0x23'),_0x112e1d);logger['debug'](_0x1bfa('0x23'),_0x112e1d,JSON[_0x1bfa('0xf')](_0x3b8e09));_0x55acf0(_0x3b8e09);})[_0x1bfa('0x16')](function(_0x3614d3){logger[_0x1bfa('0x10')](_0x1bfa('0x23'),_0x3614d3[_0x1bfa('0x12')],_0x112e1d);_0x11ab20(_0x549a9e[_0x1bfa('0x10')](0x1f4,_0x3614d3[_0x1bfa('0x12')]));});});};
\ No newline at end of file
index 2ed7848..cb8e392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x55ca,0x126));var _0xa55c=function(_0x50e593,_0x3ae998){_0x50e593=_0x50e593-0x0;var _0x3821d0=_0x55ca[_0x50e593];return _0x3821d0;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
+var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x1d930e,_0x20d8b8){var _0x5bbd66=function(_0x3c7488){while(--_0x3c7488){_0x1d930e['push'](_0x1d930e['shift']());}};_0x5bbd66(++_0x20d8b8);}(_0x55ca,0x126));var _0xa55c=function(_0x2b0267,_0x59cab1){_0x2b0267=_0x2b0267-0x0;var _0x289a4a=_0x55ca[_0x2b0267];return _0x289a4a;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
index 10f4d90..c318e17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531c=['exports','STRING','sequelize'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x531c,0x119));var _0xc531=function(_0x478349,_0x4e11b2){_0x478349=_0x478349-0x0;var _0x564ad3=_0x531c[_0x478349];return _0x564ad3;};'use strict';var Sequelize=require(_0xc531('0x0'));module[_0xc531('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc531('0x2')]}};
\ No newline at end of file
+var _0x1ce6=['STRING','sequelize','exports'];(function(_0x2d8f05,_0x3cfe31){var _0x25254c=function(_0x4994b4){while(--_0x4994b4){_0x2d8f05['push'](_0x2d8f05['shift']());}};_0x25254c(++_0x3cfe31);}(_0x1ce6,0xe8));var _0x61ce=function(_0x2ade26,_0x23a8e9){_0x2ade26=_0x2ade26-0x0;var _0x13ba40=_0x1ce6[_0x2ade26];return _0x13ba40;};'use strict';var Sequelize=require(_0x61ce('0x0'));module[_0x61ce('0x1')]={'name':{'type':Sequelize[_0x61ce('0x2')]},'description':{'type':Sequelize[_0x61ce('0x2')]}};
\ No newline at end of file
index 0af8f5c..b19896a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x363c=['getFields','getSubjects','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','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','error','stack','name','send','map','DeskConfiguration','rawAttributes','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','filters','options','find','create','body','findOne','DeskField','length','order','filter'];(function(_0x22e9fe,_0x3d019f){var _0x47cd19=function(_0x8fd5fc){while(--_0x8fd5fc){_0x22e9fe['push'](_0x22e9fe['shift']());}};_0x47cd19(++_0x3d019f);}(_0x363c,0xb5));var _0xc363=function(_0x4167f9,_0x510705){_0x4167f9=_0x4167f9-0x0;var _0x47be4d=_0x363c[_0x4167f9];return _0x47be4d;};'use strict';var emlformat=require(_0xc363('0x0'));var rimraf=require(_0xc363('0x1'));var zipdir=require(_0xc363('0x2'));var jsonpatch=require(_0xc363('0x3'));var rp=require(_0xc363('0x4'));var moment=require(_0xc363('0x5'));var BPromise=require(_0xc363('0x6'));var Mustache=require('mustache');var util=require(_0xc363('0x7'));var path=require('path');var sox=require(_0xc363('0x8'));var csv=require(_0xc363('0x9'));var ejs=require(_0xc363('0xa'));var fs=require('fs');var fs_extra=require(_0xc363('0xb'));var _=require(_0xc363('0xc'));var squel=require(_0xc363('0xd'));var crypto=require(_0xc363('0xe'));var jsforce=require(_0xc363('0xf'));var deskjs=require(_0xc363('0x10'));var toCsv=require(_0xc363('0x9'));var querystring=require(_0xc363('0x11'));var Papa=require(_0xc363('0x12'));var Redis=require(_0xc363('0x13'));var authService=require(_0xc363('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc363('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc363('0x16'))(_0xc363('0x17'));var utils=require(_0xc363('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc363('0x19'));var db=require(_0xc363('0x1a'))['db'];function respondWithStatusCode(_0x357ebc,_0x3c7ad3){_0x3c7ad3=_0x3c7ad3||0xcc;return function(_0x4051bd){if(_0x4051bd){return _0x357ebc[_0xc363('0x1b')](_0x3c7ad3);}return _0x357ebc[_0xc363('0x1c')](_0x3c7ad3)[_0xc363('0x1d')]();};}function respondWithResult(_0x3ebf58,_0x9bbf04){_0x9bbf04=_0x9bbf04||0xc8;return function(_0x419bdf){if(_0x419bdf){return _0x3ebf58['status'](_0x9bbf04)[_0xc363('0x1e')](_0x419bdf);}};}function respondWithFilteredResult(_0x1d96f9,_0x2522ca){return function(_0x3a23e2){if(_0x3a23e2){var _0x42e4c9=typeof _0x2522ca[_0xc363('0x1f')]===_0xc363('0x20')&&typeof _0x2522ca[_0xc363('0x21')]===_0xc363('0x20');var _0x246638=_0x3a23e2['count'];var _0x30ed19=_0x42e4c9?0x0:_0x2522ca['offset'];var _0x580c66=_0x42e4c9?_0x3a23e2[_0xc363('0x22')]:_0x2522ca[_0xc363('0x1f')]+_0x2522ca[_0xc363('0x21')];var _0xd106d7;if(_0x580c66>=_0x246638){_0x580c66=_0x246638;_0xd106d7=0xc8;}else{_0xd106d7=0xce;}_0x1d96f9[_0xc363('0x1c')](_0xd106d7);return _0x1d96f9[_0xc363('0x23')](_0xc363('0x24'),_0x30ed19+'-'+_0x580c66+'/'+_0x246638)[_0xc363('0x1e')](_0x3a23e2);}return null;};}function patchUpdates(_0x47d005){return function(_0x25e0b6){try{jsonpatch['apply'](_0x25e0b6,_0x47d005,!![]);}catch(_0x42e2f2){return BPromise[_0xc363('0x25')](_0x42e2f2);}return _0x25e0b6['save']();};}function saveUpdates(_0x11062a,_0x12afae){return function(_0x346310){if(_0x346310){return _0x346310[_0xc363('0x26')](_0x11062a)['then'](function(_0x1244c1){return _0x1244c1;});}return null;};}function removeEntity(_0x58efab,_0x11886a){return function(_0x95804c){if(_0x95804c){return _0x95804c[_0xc363('0x27')]()[_0xc363('0x28')](function(){_0x58efab[_0xc363('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ca6af,_0x25e0db){return function(_0x92d35c){if(!_0x92d35c){_0x1ca6af[_0xc363('0x1b')](0x194);}return _0x92d35c;};}function handleError(_0x399912,_0x5ab052){_0x5ab052=_0x5ab052||0x1f4;return function(_0x447cc0){logger[_0xc363('0x29')](_0x447cc0[_0xc363('0x2a')]);if(_0x447cc0[_0xc363('0x2b')]){delete _0x447cc0['name'];}_0x399912[_0xc363('0x1c')](_0x5ab052)[_0xc363('0x2c')](_0x447cc0);};}exports['index']=function(_0x365b3c,_0x21e278){var _0x514842={},_0x41e935={},_0x246dc1={'count':0x0,'rows':[]};var _0x4fd64e=_[_0xc363('0x2d')](db[_0xc363('0x2e')][_0xc363('0x2f')],function(_0x481f08){return{'name':_0x481f08['fieldName'],'type':_0x481f08['type'][_0xc363('0x30')]};});_0x41e935[_0xc363('0x31')]=_[_0xc363('0x2d')](_0x4fd64e,_0xc363('0x2b'));_0x41e935[_0xc363('0x32')]=_[_0xc363('0x33')](_0x365b3c['query']);_0x41e935['filters']=_[_0xc363('0x34')](_0x41e935[_0xc363('0x31')],_0x41e935[_0xc363('0x32')]);_0x514842['attributes']=_[_0xc363('0x34')](_0x41e935[_0xc363('0x31')],qs[_0xc363('0x35')](_0x365b3c[_0xc363('0x32')][_0xc363('0x35')]));_0x514842['attributes']=_0x514842[_0xc363('0x36')]['length']?_0x514842[_0xc363('0x36')]:_0x41e935[_0xc363('0x31')];if(!_0x365b3c['query'][_0xc363('0x37')](_0xc363('0x38'))){_0x514842[_0xc363('0x21')]=qs[_0xc363('0x21')](_0x365b3c[_0xc363('0x32')][_0xc363('0x21')]);_0x514842['offset']=qs[_0xc363('0x1f')](_0x365b3c[_0xc363('0x32')][_0xc363('0x1f')]);}_0x514842['order']=qs[_0xc363('0x39')](_0x365b3c[_0xc363('0x32')]['sort']);_0x514842[_0xc363('0x3a')]=qs['filters'](_[_0xc363('0x3b')](_0x365b3c[_0xc363('0x32')],_0x41e935['filters']),_0x4fd64e);if(_0x365b3c['query']['filter']){_0x514842[_0xc363('0x3a')]=_['merge'](_0x514842[_0xc363('0x3a')],{'$or':_[_0xc363('0x2d')](_0x4fd64e,function(_0x3a8826){if(_0x3a8826[_0xc363('0x3c')]!==_0xc363('0x3d')){var _0x4c2ecc={};_0x4c2ecc[_0x3a8826[_0xc363('0x2b')]]={'$like':'%'+_0x365b3c[_0xc363('0x32')]['filter']+'%'};return _0x4c2ecc;}})});}_0x514842=_[_0xc363('0x3e')]({},_0x514842,_0x365b3c['options']);var _0x2a3c6d={'where':_0x514842[_0xc363('0x3a')]};return db[_0xc363('0x2e')]['count'](_0x2a3c6d)[_0xc363('0x28')](function(_0x2a876f){_0x246dc1[_0xc363('0x22')]=_0x2a876f;if(_0x365b3c[_0xc363('0x32')][_0xc363('0x3f')]){_0x514842[_0xc363('0x40')]=[{'all':!![]}];}return db[_0xc363('0x2e')][_0xc363('0x41')](_0x514842);})['then'](function(_0x412fb5){_0x246dc1[_0xc363('0x42')]=_0x412fb5;return _0x246dc1;})[_0xc363('0x28')](respondWithFilteredResult(_0x21e278,_0x514842))[_0xc363('0x43')](handleError(_0x21e278,null));};exports[_0xc363('0x44')]=function(_0x12d40e,_0x35a6d3){var _0x226fd7={'raw':![],'where':{'id':_0x12d40e[_0xc363('0x45')]['id']}},_0x1ba527={};_0x1ba527[_0xc363('0x31')]=_[_0xc363('0x33')](db['DeskConfiguration'][_0xc363('0x2f')]);_0x1ba527[_0xc363('0x32')]=_[_0xc363('0x33')](_0x12d40e[_0xc363('0x32')]);_0x1ba527[_0xc363('0x46')]=_['intersection'](_0x1ba527[_0xc363('0x31')],_0x1ba527[_0xc363('0x32')]);_0x226fd7[_0xc363('0x36')]=_[_0xc363('0x34')](_0x1ba527[_0xc363('0x31')],qs[_0xc363('0x35')](_0x12d40e[_0xc363('0x32')][_0xc363('0x35')]));_0x226fd7[_0xc363('0x36')]=_0x226fd7[_0xc363('0x36')]['length']?_0x226fd7[_0xc363('0x36')]:_0x1ba527[_0xc363('0x31')];if(_0x12d40e['query'][_0xc363('0x3f')]){_0x226fd7[_0xc363('0x40')]=[{'all':!![]}];}_0x226fd7=_[_0xc363('0x3e')]({},_0x226fd7,_0x12d40e[_0xc363('0x47')]);return db['DeskConfiguration'][_0xc363('0x48')](_0x226fd7)[_0xc363('0x28')](handleEntityNotFound(_0x35a6d3,null))[_0xc363('0x28')](respondWithResult(_0x35a6d3,null))['catch'](handleError(_0x35a6d3,null));};exports[_0xc363('0x49')]=function(_0x59e44e,_0x42a92b){return db[_0xc363('0x2e')][_0xc363('0x49')](_0x59e44e[_0xc363('0x4a')],{})[_0xc363('0x28')](respondWithResult(_0x42a92b,0xc9))['catch'](handleError(_0x42a92b,null));};exports['update']=function(_0x49f9c1,_0x135701){if(_0x49f9c1[_0xc363('0x4a')]['id']){delete _0x49f9c1[_0xc363('0x4a')]['id'];}return db[_0xc363('0x2e')]['find']({'where':{'id':_0x49f9c1['params']['id']}})['then'](handleEntityNotFound(_0x135701,null))['then'](saveUpdates(_0x49f9c1[_0xc363('0x4a')],null))[_0xc363('0x28')](respondWithResult(_0x135701,null))[_0xc363('0x43')](handleError(_0x135701,null));};exports[_0xc363('0x27')]=function(_0x572c05,_0x182e7f){return db[_0xc363('0x2e')][_0xc363('0x48')]({'where':{'id':_0x572c05[_0xc363('0x45')]['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x182e7f,null))[_0xc363('0x28')](removeEntity(_0x182e7f,null))['catch'](handleError(_0x182e7f,null));};exports['getFields']=function(_0x28dab4,_0x18e114,_0x507ba6){var _0x2fc401={};var _0x1fa1a3={};var _0x530951;var _0x30e4b5;return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x28dab4[_0xc363('0x45')]['id']}})['then'](handleEntityNotFound(_0x18e114,null))[_0xc363('0x28')](function(_0x40a07f){if(_0x40a07f){_0x530951=_0x40a07f;_0x1fa1a3['model']=_[_0xc363('0x33')](db[_0xc363('0x4c')][_0xc363('0x2f')]);_0x1fa1a3[_0xc363('0x32')]=_[_0xc363('0x33')](_0x28dab4['query']);_0x1fa1a3[_0xc363('0x46')]=_['intersection'](_0x1fa1a3[_0xc363('0x31')],_0x1fa1a3[_0xc363('0x32')]);_0x2fc401[_0xc363('0x36')]=_[_0xc363('0x34')](_0x1fa1a3[_0xc363('0x31')],qs[_0xc363('0x35')](_0x28dab4[_0xc363('0x32')]['fields']));_0x2fc401['attributes']=_0x2fc401[_0xc363('0x36')][_0xc363('0x4d')]?_0x2fc401['attributes']:_0x1fa1a3['model'];_0x2fc401[_0xc363('0x4e')]=qs[_0xc363('0x39')](_0x28dab4[_0xc363('0x32')][_0xc363('0x39')]);_0x2fc401[_0xc363('0x3a')]=qs[_0xc363('0x46')](_['pick'](_0x28dab4[_0xc363('0x32')],_0x1fa1a3['filters']));if(_0x28dab4['query'][_0xc363('0x4f')]){_0x2fc401['where']=_[_0xc363('0x3e')](_0x2fc401[_0xc363('0x3a')],{'$or':_[_0xc363('0x2d')](_0x2fc401['attributes'],function(_0x27959f){var _0x712230={};_0x712230[_0x27959f]={'$like':'%'+_0x28dab4[_0xc363('0x32')]['filter']+'%'};return _0x712230;})});}_0x2fc401=_['merge']({},_0x2fc401,_0x28dab4[_0xc363('0x47')]);return _0x530951[_0xc363('0x50')](_0x2fc401);}})['then'](function(_0x3003ff){if(_0x3003ff){_0x30e4b5=_0x3003ff['length'];if(!_0x28dab4[_0xc363('0x32')]['hasOwnProperty']('nolimit')){_0x2fc401[_0xc363('0x21')]=qs['limit'](_0x28dab4[_0xc363('0x32')][_0xc363('0x21')]);_0x2fc401[_0xc363('0x1f')]=qs['offset'](_0x28dab4[_0xc363('0x32')][_0xc363('0x1f')]);}return _0x530951[_0xc363('0x50')](_0x2fc401);}})[_0xc363('0x28')](function(_0x527c7d){if(_0x527c7d){return _0x527c7d?{'count':_0x30e4b5,'rows':_0x527c7d}:null;}})[_0xc363('0x28')](respondWithResult(_0x18e114,null))[_0xc363('0x43')](handleError(_0x18e114,null));};exports[_0xc363('0x51')]=function(_0x1d2384,_0x4ac194,_0x17593d){var _0x1119fe={};var _0x323292={};var _0x4a9621;var _0x52eda4;return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x1d2384[_0xc363('0x45')]['id']}})['then'](handleEntityNotFound(_0x4ac194,null))[_0xc363('0x28')](function(_0x5eed7d){if(_0x5eed7d){_0x4a9621=_0x5eed7d;_0x323292['model']=_['keys'](db[_0xc363('0x4c')][_0xc363('0x2f')]);_0x323292[_0xc363('0x32')]=_['keys'](_0x1d2384['query']);_0x323292[_0xc363('0x46')]=_['intersection'](_0x323292[_0xc363('0x31')],_0x323292[_0xc363('0x32')]);_0x1119fe[_0xc363('0x36')]=_[_0xc363('0x34')](_0x323292[_0xc363('0x31')],qs[_0xc363('0x35')](_0x1d2384['query'][_0xc363('0x35')]));_0x1119fe[_0xc363('0x36')]=_0x1119fe[_0xc363('0x36')][_0xc363('0x4d')]?_0x1119fe['attributes']:_0x323292[_0xc363('0x31')];_0x1119fe[_0xc363('0x4e')]=qs['sort'](_0x1d2384[_0xc363('0x32')][_0xc363('0x39')]);_0x1119fe[_0xc363('0x3a')]=qs['filters'](_[_0xc363('0x3b')](_0x1d2384[_0xc363('0x32')],_0x323292[_0xc363('0x46')]));if(_0x1d2384['query']['filter']){_0x1119fe[_0xc363('0x3a')]=_[_0xc363('0x3e')](_0x1119fe[_0xc363('0x3a')],{'$or':_['map'](_0x1119fe[_0xc363('0x36')],function(_0x3a4121){var _0x12e0fa={};_0x12e0fa[_0x3a4121]={'$like':'%'+_0x1d2384[_0xc363('0x32')][_0xc363('0x4f')]+'%'};return _0x12e0fa;})});}_0x1119fe=_[_0xc363('0x3e')]({},_0x1119fe,_0x1d2384['options']);return _0x4a9621['getSubjects'](_0x1119fe);}})['then'](function(_0x32d266){if(_0x32d266){_0x52eda4=_0x32d266[_0xc363('0x4d')];if(!_0x1d2384['query'][_0xc363('0x37')](_0xc363('0x38'))){_0x1119fe[_0xc363('0x21')]=qs['limit'](_0x1d2384[_0xc363('0x32')]['limit']);_0x1119fe[_0xc363('0x1f')]=qs['offset'](_0x1d2384[_0xc363('0x32')][_0xc363('0x1f')]);}return _0x4a9621[_0xc363('0x51')](_0x1119fe);}})[_0xc363('0x28')](function(_0x4719f9){if(_0x4719f9){return _0x4719f9?{'count':_0x52eda4,'rows':_0x4719f9}:null;}})['then'](respondWithResult(_0x4ac194,null))[_0xc363('0x43')](handleError(_0x4ac194,null));};exports['getDescriptions']=function(_0x3feb66,_0x169a0e,_0x32085a){var _0x3dc8ca={};var _0x382bf1={};var _0x4eca50;var _0x488c3c;return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x3feb66['params']['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x169a0e,null))[_0xc363('0x28')](function(_0x553ac7){if(_0x553ac7){_0x4eca50=_0x553ac7;_0x382bf1[_0xc363('0x31')]=_['keys'](db[_0xc363('0x4c')][_0xc363('0x2f')]);_0x382bf1['query']=_[_0xc363('0x33')](_0x3feb66['query']);_0x382bf1['filters']=_['intersection'](_0x382bf1[_0xc363('0x31')],_0x382bf1[_0xc363('0x32')]);_0x3dc8ca[_0xc363('0x36')]=_[_0xc363('0x34')](_0x382bf1['model'],qs[_0xc363('0x35')](_0x3feb66[_0xc363('0x32')][_0xc363('0x35')]));_0x3dc8ca[_0xc363('0x36')]=_0x3dc8ca[_0xc363('0x36')][_0xc363('0x4d')]?_0x3dc8ca['attributes']:_0x382bf1[_0xc363('0x31')];_0x3dc8ca[_0xc363('0x4e')]=qs[_0xc363('0x39')](_0x3feb66[_0xc363('0x32')][_0xc363('0x39')]);_0x3dc8ca[_0xc363('0x3a')]=qs[_0xc363('0x46')](_[_0xc363('0x3b')](_0x3feb66[_0xc363('0x32')],_0x382bf1[_0xc363('0x46')]));if(_0x3feb66['query'][_0xc363('0x4f')]){_0x3dc8ca[_0xc363('0x3a')]=_[_0xc363('0x3e')](_0x3dc8ca[_0xc363('0x3a')],{'$or':_['map'](_0x3dc8ca['attributes'],function(_0x584577){var _0x5b4a83={};_0x5b4a83[_0x584577]={'$like':'%'+_0x3feb66[_0xc363('0x32')][_0xc363('0x4f')]+'%'};return _0x5b4a83;})});}_0x3dc8ca=_['merge']({},_0x3dc8ca,_0x3feb66[_0xc363('0x47')]);return _0x4eca50[_0xc363('0x52')](_0x3dc8ca);}})[_0xc363('0x28')](function(_0x40a099){if(_0x40a099){_0x488c3c=_0x40a099['length'];if(!_0x3feb66[_0xc363('0x32')]['hasOwnProperty'](_0xc363('0x38'))){_0x3dc8ca[_0xc363('0x21')]=qs[_0xc363('0x21')](_0x3feb66['query'][_0xc363('0x21')]);_0x3dc8ca[_0xc363('0x1f')]=qs[_0xc363('0x1f')](_0x3feb66[_0xc363('0x32')]['offset']);}return _0x4eca50[_0xc363('0x52')](_0x3dc8ca);}})['then'](function(_0x154609){if(_0x154609){return _0x154609?{'count':_0x488c3c,'rows':_0x154609}:null;}})['then'](respondWithResult(_0x169a0e,null))[_0xc363('0x43')](handleError(_0x169a0e,null));};exports[_0xc363('0x53')]=function(_0x4992ef,_0x15b8ae,_0x52afa0){var _0x11a984={};var _0xcb1654={};var _0xf0cf;var _0x41030b;return db['DeskConfiguration']['findOne']({'where':{'id':_0x4992ef[_0xc363('0x45')]['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x15b8ae,null))[_0xc363('0x28')](function(_0x4dbae4){if(_0x4dbae4){_0xf0cf=_0x4dbae4;_0xcb1654[_0xc363('0x31')]=_[_0xc363('0x33')](db[_0xc363('0x54')]['rawAttributes']);_0xcb1654[_0xc363('0x32')]=_[_0xc363('0x33')](_0x4992ef[_0xc363('0x32')]);_0xcb1654['filters']=_[_0xc363('0x34')](_0xcb1654[_0xc363('0x31')],_0xcb1654[_0xc363('0x32')]);_0x11a984['attributes']=_[_0xc363('0x34')](_0xcb1654[_0xc363('0x31')],qs['fields'](_0x4992ef[_0xc363('0x32')][_0xc363('0x35')]));_0x11a984[_0xc363('0x36')]=_0x11a984[_0xc363('0x36')]['length']?_0x11a984['attributes']:_0xcb1654[_0xc363('0x31')];_0x11a984['order']=qs[_0xc363('0x39')](_0x4992ef[_0xc363('0x32')][_0xc363('0x39')]);_0x11a984[_0xc363('0x3a')]=qs[_0xc363('0x46')](_['pick'](_0x4992ef['query'],_0xcb1654[_0xc363('0x46')]));if(_0x4992ef[_0xc363('0x32')][_0xc363('0x4f')]){_0x11a984[_0xc363('0x3a')]=_[_0xc363('0x3e')](_0x11a984['where'],{'$or':_[_0xc363('0x2d')](_0x11a984[_0xc363('0x36')],function(_0x2bade7){var _0x4afb49={};_0x4afb49[_0x2bade7]={'$like':'%'+_0x4992ef[_0xc363('0x32')]['filter']+'%'};return _0x4afb49;})});}_0x11a984=_[_0xc363('0x3e')]({},_0x11a984,_0x4992ef['options']);return _0xf0cf['getTags'](_0x11a984);}})[_0xc363('0x28')](function(_0x55c604){if(_0x55c604){_0x41030b=_0x55c604['length'];if(!_0x4992ef[_0xc363('0x32')][_0xc363('0x37')]('nolimit')){_0x11a984['limit']=qs[_0xc363('0x21')](_0x4992ef[_0xc363('0x32')]['limit']);_0x11a984[_0xc363('0x1f')]=qs[_0xc363('0x1f')](_0x4992ef[_0xc363('0x32')][_0xc363('0x1f')]);}return _0xf0cf[_0xc363('0x53')](_0x11a984);}})['then'](function(_0x1c818e){if(_0x1c818e){return _0x1c818e?{'count':_0x41030b,'rows':_0x1c818e}:null;}})['then'](respondWithResult(_0x15b8ae,null))[_0xc363('0x43')](handleError(_0x15b8ae,null));};exports[_0xc363('0x55')]=function(_0x6161dd,_0x45d80a,_0x5dd91c){if(_0x6161dd['body']['id']){delete _0x6161dd[_0xc363('0x4a')]['id'];}return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x6161dd[_0xc363('0x45')]['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x45d80a,null))[_0xc363('0x28')](function(_0x5db954){if(_0x5db954){return _0x5db954['setTags'](_0x6161dd['body'][_0xc363('0x56')]||[]);}return null;})[_0xc363('0x28')](respondWithResult(_0x45d80a,null))[_0xc363('0x43')](handleError(_0x45d80a,null));};
\ No newline at end of file
+var _0xd73e=['nolimit','getSubjects','getDescriptions','DeskField','getTags','Tag','hasOwnProperty','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','order','sort','filter','where','merge','VIRTUAL','includeAll','include','DeskConfiguration','findAll','catch','show','options','find','create','update','body','params','getFields','findOne','pick'];(function(_0x305c01,_0x3cff44){var _0x1b7ff1=function(_0x4dbdaf){while(--_0x4dbdaf){_0x305c01['push'](_0x305c01['shift']());}};_0x1b7ff1(++_0x3cff44);}(_0xd73e,0x165));var _0xed73=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd73e[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xed73('0x0'));var rimraf=require(_0xed73('0x1'));var zipdir=require(_0xed73('0x2'));var jsonpatch=require(_0xed73('0x3'));var rp=require(_0xed73('0x4'));var moment=require('moment');var BPromise=require(_0xed73('0x5'));var Mustache=require(_0xed73('0x6'));var util=require(_0xed73('0x7'));var path=require(_0xed73('0x8'));var sox=require(_0xed73('0x9'));var csv=require(_0xed73('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xed73('0xb'));var _=require(_0xed73('0xc'));var squel=require(_0xed73('0xd'));var crypto=require(_0xed73('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xed73('0xf'));var toCsv=require(_0xed73('0xa'));var querystring=require(_0xed73('0x10'));var Papa=require(_0xed73('0x11'));var Redis=require(_0xed73('0x12'));var authService=require(_0xed73('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xed73('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xed73('0x15'));var utils=require(_0xed73('0x16'));var config=require(_0xed73('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xed73('0x18'))['db'];function respondWithStatusCode(_0x525210,_0x2b7be8){_0x2b7be8=_0x2b7be8||0xcc;return function(_0x53e371){if(_0x53e371){return _0x525210[_0xed73('0x19')](_0x2b7be8);}return _0x525210[_0xed73('0x1a')](_0x2b7be8)[_0xed73('0x1b')]();};}function respondWithResult(_0x2b4814,_0x5c65e7){_0x5c65e7=_0x5c65e7||0xc8;return function(_0x595e9f){if(_0x595e9f){return _0x2b4814['status'](_0x5c65e7)['json'](_0x595e9f);}};}function respondWithFilteredResult(_0x252a66,_0x28aef8){return function(_0x103bd4){if(_0x103bd4){var _0x1adada=typeof _0x28aef8[_0xed73('0x1c')]===_0xed73('0x1d')&&typeof _0x28aef8[_0xed73('0x1e')]==='undefined';var _0x29ed8c=_0x103bd4['count'];var _0x186d16=_0x1adada?0x0:_0x28aef8[_0xed73('0x1c')];var _0x56617b=_0x1adada?_0x103bd4[_0xed73('0x1f')]:_0x28aef8[_0xed73('0x1c')]+_0x28aef8[_0xed73('0x1e')];var _0x4a87ca;if(_0x56617b>=_0x29ed8c){_0x56617b=_0x29ed8c;_0x4a87ca=0xc8;}else{_0x4a87ca=0xce;}_0x252a66[_0xed73('0x1a')](_0x4a87ca);return _0x252a66[_0xed73('0x20')](_0xed73('0x21'),_0x186d16+'-'+_0x56617b+'/'+_0x29ed8c)[_0xed73('0x22')](_0x103bd4);}return null;};}function patchUpdates(_0x333959){return function(_0xfe6638){try{jsonpatch[_0xed73('0x23')](_0xfe6638,_0x333959,!![]);}catch(_0x3a2c7f){return BPromise[_0xed73('0x24')](_0x3a2c7f);}return _0xfe6638[_0xed73('0x25')]();};}function saveUpdates(_0x2b4aca,_0xad0922){return function(_0x1e97f8){if(_0x1e97f8){return _0x1e97f8['update'](_0x2b4aca)[_0xed73('0x26')](function(_0x2ca0ed){return _0x2ca0ed;});}return null;};}function removeEntity(_0x13b649,_0x2c4871){return function(_0x50c058){if(_0x50c058){return _0x50c058[_0xed73('0x27')]()['then'](function(){_0x13b649['status'](0xcc)[_0xed73('0x1b')]();});}};}function handleEntityNotFound(_0x3f5dae,_0x1779c7){return function(_0x45b039){if(!_0x45b039){_0x3f5dae[_0xed73('0x19')](0x194);}return _0x45b039;};}function handleError(_0x58e018,_0x2a1b1e){_0x2a1b1e=_0x2a1b1e||0x1f4;return function(_0x24b267){logger[_0xed73('0x28')](_0x24b267['stack']);if(_0x24b267['name']){delete _0x24b267[_0xed73('0x29')];}_0x58e018[_0xed73('0x1a')](_0x2a1b1e)[_0xed73('0x2a')](_0x24b267);};}exports[_0xed73('0x2b')]=function(_0x455d89,_0x299c9e){var _0x331ce5={},_0x370b45={},_0x64b337={'count':0x0,'rows':[]};var _0x4e8b89=_[_0xed73('0x2c')](db['DeskConfiguration'][_0xed73('0x2d')],function(_0x3b55a0){return{'name':_0x3b55a0[_0xed73('0x2e')],'type':_0x3b55a0[_0xed73('0x2f')][_0xed73('0x30')]};});_0x370b45[_0xed73('0x31')]=_['map'](_0x4e8b89,_0xed73('0x29'));_0x370b45['query']=_[_0xed73('0x32')](_0x455d89['query']);_0x370b45[_0xed73('0x33')]=_[_0xed73('0x34')](_0x370b45[_0xed73('0x31')],_0x370b45[_0xed73('0x35')]);_0x331ce5[_0xed73('0x36')]=_[_0xed73('0x34')](_0x370b45['model'],qs[_0xed73('0x37')](_0x455d89['query'][_0xed73('0x37')]));_0x331ce5['attributes']=_0x331ce5[_0xed73('0x36')][_0xed73('0x38')]?_0x331ce5['attributes']:_0x370b45[_0xed73('0x31')];if(!_0x455d89[_0xed73('0x35')]['hasOwnProperty']('nolimit')){_0x331ce5[_0xed73('0x1e')]=qs[_0xed73('0x1e')](_0x455d89['query'][_0xed73('0x1e')]);_0x331ce5['offset']=qs[_0xed73('0x1c')](_0x455d89[_0xed73('0x35')]['offset']);}_0x331ce5[_0xed73('0x39')]=qs[_0xed73('0x3a')](_0x455d89['query'][_0xed73('0x3a')]);_0x331ce5['where']=qs[_0xed73('0x33')](_['pick'](_0x455d89[_0xed73('0x35')],_0x370b45[_0xed73('0x33')]),_0x4e8b89);if(_0x455d89[_0xed73('0x35')][_0xed73('0x3b')]){_0x331ce5[_0xed73('0x3c')]=_[_0xed73('0x3d')](_0x331ce5[_0xed73('0x3c')],{'$or':_['map'](_0x4e8b89,function(_0x286842){if(_0x286842[_0xed73('0x2f')]!==_0xed73('0x3e')){var _0x55b383={};_0x55b383[_0x286842[_0xed73('0x29')]]={'$like':'%'+_0x455d89['query']['filter']+'%'};return _0x55b383;}})});}_0x331ce5=_[_0xed73('0x3d')]({},_0x331ce5,_0x455d89['options']);var _0x3ca6b8={'where':_0x331ce5[_0xed73('0x3c')]};return db['DeskConfiguration'][_0xed73('0x1f')](_0x3ca6b8)[_0xed73('0x26')](function(_0x235fcb){_0x64b337[_0xed73('0x1f')]=_0x235fcb;if(_0x455d89[_0xed73('0x35')][_0xed73('0x3f')]){_0x331ce5[_0xed73('0x40')]=[{'all':!![]}];}return db[_0xed73('0x41')][_0xed73('0x42')](_0x331ce5);})['then'](function(_0xdc0883){_0x64b337['rows']=_0xdc0883;return _0x64b337;})['then'](respondWithFilteredResult(_0x299c9e,_0x331ce5))[_0xed73('0x43')](handleError(_0x299c9e,null));};exports[_0xed73('0x44')]=function(_0x448349,_0x10ab30){var _0x2797f7={'raw':![],'where':{'id':_0x448349['params']['id']}},_0x28069b={};_0x28069b[_0xed73('0x31')]=_['keys'](db['DeskConfiguration']['rawAttributes']);_0x28069b[_0xed73('0x35')]=_[_0xed73('0x32')](_0x448349[_0xed73('0x35')]);_0x28069b[_0xed73('0x33')]=_['intersection'](_0x28069b['model'],_0x28069b[_0xed73('0x35')]);_0x2797f7['attributes']=_[_0xed73('0x34')](_0x28069b[_0xed73('0x31')],qs[_0xed73('0x37')](_0x448349[_0xed73('0x35')][_0xed73('0x37')]));_0x2797f7['attributes']=_0x2797f7['attributes'][_0xed73('0x38')]?_0x2797f7['attributes']:_0x28069b[_0xed73('0x31')];if(_0x448349[_0xed73('0x35')][_0xed73('0x3f')]){_0x2797f7[_0xed73('0x40')]=[{'all':!![]}];}_0x2797f7=_[_0xed73('0x3d')]({},_0x2797f7,_0x448349[_0xed73('0x45')]);return db['DeskConfiguration'][_0xed73('0x46')](_0x2797f7)[_0xed73('0x26')](handleEntityNotFound(_0x10ab30,null))[_0xed73('0x26')](respondWithResult(_0x10ab30,null))[_0xed73('0x43')](handleError(_0x10ab30,null));};exports[_0xed73('0x47')]=function(_0x233b0f,_0x19fb32){return db['DeskConfiguration'][_0xed73('0x47')](_0x233b0f['body'],{})[_0xed73('0x26')](respondWithResult(_0x19fb32,0xc9))['catch'](handleError(_0x19fb32,null));};exports[_0xed73('0x48')]=function(_0x7c7ad2,_0x4d8d12){if(_0x7c7ad2[_0xed73('0x49')]['id']){delete _0x7c7ad2['body']['id'];}return db[_0xed73('0x41')][_0xed73('0x46')]({'where':{'id':_0x7c7ad2[_0xed73('0x4a')]['id']}})[_0xed73('0x26')](handleEntityNotFound(_0x4d8d12,null))[_0xed73('0x26')](saveUpdates(_0x7c7ad2[_0xed73('0x49')],null))[_0xed73('0x26')](respondWithResult(_0x4d8d12,null))[_0xed73('0x43')](handleError(_0x4d8d12,null));};exports['destroy']=function(_0x4101a6,_0x1cfacf){return db[_0xed73('0x41')][_0xed73('0x46')]({'where':{'id':_0x4101a6[_0xed73('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1cfacf,null))[_0xed73('0x26')](removeEntity(_0x1cfacf,null))[_0xed73('0x43')](handleError(_0x1cfacf,null));};exports[_0xed73('0x4b')]=function(_0x26b1d3,_0x30bb76,_0x105caa){var _0x2d8929={};var _0x1e56b7={};var _0x326038;var _0x51231d;return db[_0xed73('0x41')][_0xed73('0x4c')]({'where':{'id':_0x26b1d3[_0xed73('0x4a')]['id']}})['then'](handleEntityNotFound(_0x30bb76,null))['then'](function(_0xa1a8a){if(_0xa1a8a){_0x326038=_0xa1a8a;_0x1e56b7['model']=_[_0xed73('0x32')](db['DeskField'][_0xed73('0x2d')]);_0x1e56b7[_0xed73('0x35')]=_[_0xed73('0x32')](_0x26b1d3['query']);_0x1e56b7[_0xed73('0x33')]=_['intersection'](_0x1e56b7[_0xed73('0x31')],_0x1e56b7['query']);_0x2d8929[_0xed73('0x36')]=_['intersection'](_0x1e56b7[_0xed73('0x31')],qs[_0xed73('0x37')](_0x26b1d3[_0xed73('0x35')]['fields']));_0x2d8929['attributes']=_0x2d8929[_0xed73('0x36')][_0xed73('0x38')]?_0x2d8929[_0xed73('0x36')]:_0x1e56b7['model'];_0x2d8929['order']=qs['sort'](_0x26b1d3['query'][_0xed73('0x3a')]);_0x2d8929[_0xed73('0x3c')]=qs['filters'](_[_0xed73('0x4d')](_0x26b1d3[_0xed73('0x35')],_0x1e56b7[_0xed73('0x33')]));if(_0x26b1d3[_0xed73('0x35')][_0xed73('0x3b')]){_0x2d8929['where']=_[_0xed73('0x3d')](_0x2d8929[_0xed73('0x3c')],{'$or':_['map'](_0x2d8929[_0xed73('0x36')],function(_0x18c7ca){var _0x3669b1={};_0x3669b1[_0x18c7ca]={'$like':'%'+_0x26b1d3['query'][_0xed73('0x3b')]+'%'};return _0x3669b1;})});}_0x2d8929=_[_0xed73('0x3d')]({},_0x2d8929,_0x26b1d3[_0xed73('0x45')]);return _0x326038[_0xed73('0x4b')](_0x2d8929);}})[_0xed73('0x26')](function(_0x4b4ce7){if(_0x4b4ce7){_0x51231d=_0x4b4ce7[_0xed73('0x38')];if(!_0x26b1d3['query']['hasOwnProperty'](_0xed73('0x4e'))){_0x2d8929['limit']=qs['limit'](_0x26b1d3[_0xed73('0x35')]['limit']);_0x2d8929[_0xed73('0x1c')]=qs[_0xed73('0x1c')](_0x26b1d3[_0xed73('0x35')]['offset']);}return _0x326038[_0xed73('0x4b')](_0x2d8929);}})['then'](function(_0x4d7fc9){if(_0x4d7fc9){return _0x4d7fc9?{'count':_0x51231d,'rows':_0x4d7fc9}:null;}})['then'](respondWithResult(_0x30bb76,null))['catch'](handleError(_0x30bb76,null));};exports[_0xed73('0x4f')]=function(_0x2d917a,_0x3e8182,_0x3f4dd6){var _0x1bd72c={};var _0x49a75b={};var _0x4fd29f;var _0x49a188;return db['DeskConfiguration'][_0xed73('0x4c')]({'where':{'id':_0x2d917a[_0xed73('0x4a')]['id']}})[_0xed73('0x26')](handleEntityNotFound(_0x3e8182,null))[_0xed73('0x26')](function(_0x5c36a0){if(_0x5c36a0){_0x4fd29f=_0x5c36a0;_0x49a75b[_0xed73('0x31')]=_[_0xed73('0x32')](db['DeskField'][_0xed73('0x2d')]);_0x49a75b['query']=_['keys'](_0x2d917a[_0xed73('0x35')]);_0x49a75b[_0xed73('0x33')]=_['intersection'](_0x49a75b[_0xed73('0x31')],_0x49a75b[_0xed73('0x35')]);_0x1bd72c[_0xed73('0x36')]=_['intersection'](_0x49a75b['model'],qs['fields'](_0x2d917a[_0xed73('0x35')][_0xed73('0x37')]));_0x1bd72c[_0xed73('0x36')]=_0x1bd72c[_0xed73('0x36')]['length']?_0x1bd72c[_0xed73('0x36')]:_0x49a75b[_0xed73('0x31')];_0x1bd72c['order']=qs[_0xed73('0x3a')](_0x2d917a['query'][_0xed73('0x3a')]);_0x1bd72c[_0xed73('0x3c')]=qs[_0xed73('0x33')](_[_0xed73('0x4d')](_0x2d917a['query'],_0x49a75b['filters']));if(_0x2d917a['query']['filter']){_0x1bd72c[_0xed73('0x3c')]=_[_0xed73('0x3d')](_0x1bd72c[_0xed73('0x3c')],{'$or':_['map'](_0x1bd72c['attributes'],function(_0x4809f3){var _0x3c3829={};_0x3c3829[_0x4809f3]={'$like':'%'+_0x2d917a['query'][_0xed73('0x3b')]+'%'};return _0x3c3829;})});}_0x1bd72c=_[_0xed73('0x3d')]({},_0x1bd72c,_0x2d917a[_0xed73('0x45')]);return _0x4fd29f[_0xed73('0x4f')](_0x1bd72c);}})[_0xed73('0x26')](function(_0x3c28cb){if(_0x3c28cb){_0x49a188=_0x3c28cb['length'];if(!_0x2d917a['query']['hasOwnProperty'](_0xed73('0x4e'))){_0x1bd72c[_0xed73('0x1e')]=qs[_0xed73('0x1e')](_0x2d917a[_0xed73('0x35')][_0xed73('0x1e')]);_0x1bd72c['offset']=qs[_0xed73('0x1c')](_0x2d917a['query']['offset']);}return _0x4fd29f['getSubjects'](_0x1bd72c);}})[_0xed73('0x26')](function(_0x4067e2){if(_0x4067e2){return _0x4067e2?{'count':_0x49a188,'rows':_0x4067e2}:null;}})[_0xed73('0x26')](respondWithResult(_0x3e8182,null))[_0xed73('0x43')](handleError(_0x3e8182,null));};exports[_0xed73('0x50')]=function(_0x11ef2c,_0x27aa04,_0x28ab33){var _0x3b794d={};var _0x57abfb={};var _0x502ab7;var _0x4ffeb4;return db['DeskConfiguration'][_0xed73('0x4c')]({'where':{'id':_0x11ef2c['params']['id']}})[_0xed73('0x26')](handleEntityNotFound(_0x27aa04,null))[_0xed73('0x26')](function(_0x5effe8){if(_0x5effe8){_0x502ab7=_0x5effe8;_0x57abfb[_0xed73('0x31')]=_[_0xed73('0x32')](db[_0xed73('0x51')][_0xed73('0x2d')]);_0x57abfb[_0xed73('0x35')]=_['keys'](_0x11ef2c[_0xed73('0x35')]);_0x57abfb[_0xed73('0x33')]=_['intersection'](_0x57abfb[_0xed73('0x31')],_0x57abfb['query']);_0x3b794d[_0xed73('0x36')]=_[_0xed73('0x34')](_0x57abfb[_0xed73('0x31')],qs[_0xed73('0x37')](_0x11ef2c[_0xed73('0x35')][_0xed73('0x37')]));_0x3b794d[_0xed73('0x36')]=_0x3b794d[_0xed73('0x36')]['length']?_0x3b794d[_0xed73('0x36')]:_0x57abfb['model'];_0x3b794d['order']=qs['sort'](_0x11ef2c[_0xed73('0x35')][_0xed73('0x3a')]);_0x3b794d['where']=qs['filters'](_[_0xed73('0x4d')](_0x11ef2c[_0xed73('0x35')],_0x57abfb[_0xed73('0x33')]));if(_0x11ef2c['query'][_0xed73('0x3b')]){_0x3b794d[_0xed73('0x3c')]=_['merge'](_0x3b794d[_0xed73('0x3c')],{'$or':_[_0xed73('0x2c')](_0x3b794d[_0xed73('0x36')],function(_0x54e71a){var _0x39708c={};_0x39708c[_0x54e71a]={'$like':'%'+_0x11ef2c[_0xed73('0x35')][_0xed73('0x3b')]+'%'};return _0x39708c;})});}_0x3b794d=_[_0xed73('0x3d')]({},_0x3b794d,_0x11ef2c['options']);return _0x502ab7[_0xed73('0x50')](_0x3b794d);}})[_0xed73('0x26')](function(_0x34e3bc){if(_0x34e3bc){_0x4ffeb4=_0x34e3bc[_0xed73('0x38')];if(!_0x11ef2c['query']['hasOwnProperty'](_0xed73('0x4e'))){_0x3b794d['limit']=qs[_0xed73('0x1e')](_0x11ef2c[_0xed73('0x35')][_0xed73('0x1e')]);_0x3b794d[_0xed73('0x1c')]=qs['offset'](_0x11ef2c[_0xed73('0x35')][_0xed73('0x1c')]);}return _0x502ab7['getDescriptions'](_0x3b794d);}})[_0xed73('0x26')](function(_0x5e2d3a){if(_0x5e2d3a){return _0x5e2d3a?{'count':_0x4ffeb4,'rows':_0x5e2d3a}:null;}})[_0xed73('0x26')](respondWithResult(_0x27aa04,null))['catch'](handleError(_0x27aa04,null));};exports[_0xed73('0x52')]=function(_0x18ae25,_0x1990ea,_0x1b2e84){var _0x49ecf4={};var _0x148756={};var _0x406e7f;var _0x248f75;return db[_0xed73('0x41')][_0xed73('0x4c')]({'where':{'id':_0x18ae25['params']['id']}})[_0xed73('0x26')](handleEntityNotFound(_0x1990ea,null))[_0xed73('0x26')](function(_0x2aaa75){if(_0x2aaa75){_0x406e7f=_0x2aaa75;_0x148756[_0xed73('0x31')]=_[_0xed73('0x32')](db[_0xed73('0x53')][_0xed73('0x2d')]);_0x148756['query']=_[_0xed73('0x32')](_0x18ae25[_0xed73('0x35')]);_0x148756['filters']=_[_0xed73('0x34')](_0x148756[_0xed73('0x31')],_0x148756[_0xed73('0x35')]);_0x49ecf4['attributes']=_['intersection'](_0x148756[_0xed73('0x31')],qs[_0xed73('0x37')](_0x18ae25[_0xed73('0x35')][_0xed73('0x37')]));_0x49ecf4[_0xed73('0x36')]=_0x49ecf4[_0xed73('0x36')][_0xed73('0x38')]?_0x49ecf4[_0xed73('0x36')]:_0x148756['model'];_0x49ecf4[_0xed73('0x39')]=qs[_0xed73('0x3a')](_0x18ae25[_0xed73('0x35')][_0xed73('0x3a')]);_0x49ecf4[_0xed73('0x3c')]=qs[_0xed73('0x33')](_['pick'](_0x18ae25[_0xed73('0x35')],_0x148756[_0xed73('0x33')]));if(_0x18ae25[_0xed73('0x35')]['filter']){_0x49ecf4[_0xed73('0x3c')]=_[_0xed73('0x3d')](_0x49ecf4[_0xed73('0x3c')],{'$or':_[_0xed73('0x2c')](_0x49ecf4[_0xed73('0x36')],function(_0x437404){var _0x5e1790={};_0x5e1790[_0x437404]={'$like':'%'+_0x18ae25[_0xed73('0x35')][_0xed73('0x3b')]+'%'};return _0x5e1790;})});}_0x49ecf4=_[_0xed73('0x3d')]({},_0x49ecf4,_0x18ae25['options']);return _0x406e7f[_0xed73('0x52')](_0x49ecf4);}})[_0xed73('0x26')](function(_0x1a225d){if(_0x1a225d){_0x248f75=_0x1a225d[_0xed73('0x38')];if(!_0x18ae25['query'][_0xed73('0x54')](_0xed73('0x4e'))){_0x49ecf4[_0xed73('0x1e')]=qs[_0xed73('0x1e')](_0x18ae25[_0xed73('0x35')][_0xed73('0x1e')]);_0x49ecf4[_0xed73('0x1c')]=qs['offset'](_0x18ae25[_0xed73('0x35')]['offset']);}return _0x406e7f[_0xed73('0x52')](_0x49ecf4);}})[_0xed73('0x26')](function(_0x274e2f){if(_0x274e2f){return _0x274e2f?{'count':_0x248f75,'rows':_0x274e2f}:null;}})[_0xed73('0x26')](respondWithResult(_0x1990ea,null))[_0xed73('0x43')](handleError(_0x1990ea,null));};exports[_0xed73('0x55')]=function(_0xa6fde2,_0x10085c,_0x5d5c1d){if(_0xa6fde2[_0xed73('0x49')]['id']){delete _0xa6fde2[_0xed73('0x49')]['id'];}return db[_0xed73('0x41')][_0xed73('0x4c')]({'where':{'id':_0xa6fde2['params']['id']}})[_0xed73('0x26')](handleEntityNotFound(_0x10085c,null))[_0xed73('0x26')](function(_0x23edb8){if(_0x23edb8){return _0x23edb8['setTags'](_0xa6fde2[_0xed73('0x49')][_0xed73('0x56')]||[]);}return null;})[_0xed73('0x26')](respondWithResult(_0x10085c,null))[_0xed73('0x43')](handleError(_0x10085c,null));};
\ No newline at end of file
index 6d635f4..6f7df7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8386=['exports','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5738a3,_0x2876c7){var _0x3e9bc0=function(_0x5c6e6e){while(--_0x5c6e6e){_0x5738a3['push'](_0x5738a3['shift']());}};_0x3e9bc0(++_0x2876c7);}(_0x8386,0xfb));var _0x6838=function(_0x133d84,_0x2941a9){_0x133d84=_0x133d84-0x0;var _0x113559=_0x8386[_0x133d84];return _0x113559;};'use strict';var _=require(_0x6838('0x0'));var util=require(_0x6838('0x1'));var logger=require(_0x6838('0x2'))(_0x6838('0x3'));var moment=require('moment');var BPromise=require(_0x6838('0x4'));var rp=require(_0x6838('0x5'));var fs=require('fs');var path=require(_0x6838('0x6'));var rimraf=require(_0x6838('0x7'));var config=require(_0x6838('0x8'));var attributes=require('./intDeskConfiguration.attributes');module[_0x6838('0x9')]=function(_0x2a394a,_0x2bd9f0){return _0x2a394a[_0x6838('0xa')](_0x6838('0xb'),attributes,{'tableName':_0x6838('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f68=['path','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','lodash','util','api','moment','bluebird'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x2f68,0x1a9));var _0x82f6=function(_0x48e894,_0x5165db){_0x48e894=_0x48e894-0x0;var _0x3f2997=_0x2f68[_0x48e894];return _0x3f2997;};'use strict';var _=require(_0x82f6('0x0'));var util=require(_0x82f6('0x1'));var logger=require('../../config/logger')(_0x82f6('0x2'));var moment=require(_0x82f6('0x3'));var BPromise=require(_0x82f6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x82f6('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x82f6('0x6'));module[_0x82f6('0x7')]=function(_0x18525f,_0x2048e){return _0x18525f[_0x82f6('0x8')](_0x82f6('0x9'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7101d97..bf202e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d8b=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3e6729,_0x16d4af){var _0x535bcd=function(_0x5e6c5f){while(--_0x5e6c5f){_0x3e6729['push'](_0x3e6729['shift']());}};_0x535bcd(++_0x16d4af);}(_0x0d8b,0x1e6));var _0xb0d8=function(_0x81f000,_0x15df85){_0x81f000=_0x81f000-0x0;var _0x337aa2=_0x0d8b[_0x81f000];return _0x337aa2;};'use strict';var _=require('lodash');var util=require(_0xb0d8('0x0'));var moment=require(_0xb0d8('0x1'));var BPromise=require(_0xb0d8('0x2'));var rs=require(_0xb0d8('0x3'));var fs=require('fs');var Redis=require(_0xb0d8('0x4'));var db=require(_0xb0d8('0x5'))['db'];var utils=require(_0xb0d8('0x6'));var logger=require('../../config/logger')(_0xb0d8('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb0d8('0x8')][_0xb0d8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c13be,_0x243b42,_0x326bad){return new BPromise(function(_0x24b91d,_0x2281e7){return client[_0xb0d8('0xa')](_0x2c13be,_0x326bad)[_0xb0d8('0xb')](function(_0x481a66){logger[_0xb0d8('0xc')](_0xb0d8('0xd'),_0x243b42,_0xb0d8('0xe'));logger[_0xb0d8('0xf')](_0xb0d8('0x10'),_0x243b42,'request\x20sent',JSON[_0xb0d8('0x11')](_0x481a66));if(_0x481a66[_0xb0d8('0x12')]){if(_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x13')]===0x1f4){logger[_0xb0d8('0x12')](_0xb0d8('0xd'),_0x243b42,_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x14')]);return _0x2281e7(_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x14')]);}logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x243b42,_0x481a66['error'][_0xb0d8('0x14')]);return _0x24b91d(_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x14')]);}else{logger[_0xb0d8('0xc')](_0xb0d8('0xd'),_0x243b42,_0xb0d8('0xe'));_0x24b91d(_0x481a66[_0xb0d8('0x15')][_0xb0d8('0x14')]);}})[_0xb0d8('0x16')](function(_0x326f42){logger['error'](_0xb0d8('0xd'),_0x243b42,_0x326f42);_0x2281e7(_0x326f42);});});}
\ No newline at end of file
+var _0xafa7=['error','code','message','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x13137e,_0x29c0f3){var _0x346261=function(_0x8c7d4f){while(--_0x8c7d4f){_0x13137e['push'](_0x13137e['shift']());}};_0x346261(++_0x29c0f3);}(_0xafa7,0x122));var _0x7afa=function(_0x5f0501,_0x19196e){_0x5f0501=_0x5f0501-0x0;var _0x3c2c45=_0xafa7[_0x5f0501];return _0x3c2c45;};'use strict';var _=require(_0x7afa('0x0'));var util=require(_0x7afa('0x1'));var moment=require('moment');var BPromise=require(_0x7afa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7afa('0x3'));var db=require(_0x7afa('0x4'))['db'];var utils=require(_0x7afa('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x7afa('0x6'));var jayson=require(_0x7afa('0x7'));var client=jayson[_0x7afa('0x8')][_0x7afa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2243f6,_0x2b826f,_0x59c1f0){return new BPromise(function(_0xde102c,_0x225de7){return client[_0x7afa('0xa')](_0x2243f6,_0x59c1f0)[_0x7afa('0xb')](function(_0x40bff1){logger[_0x7afa('0xc')](_0x7afa('0xd'),_0x2b826f,'request\x20sent');logger[_0x7afa('0xe')](_0x7afa('0xf'),_0x2b826f,_0x7afa('0x10'),JSON[_0x7afa('0x11')](_0x40bff1));if(_0x40bff1[_0x7afa('0x12')]){if(_0x40bff1[_0x7afa('0x12')][_0x7afa('0x13')]===0x1f4){logger[_0x7afa('0x12')]('DeskConfiguration,\x20%s,\x20%s',_0x2b826f,_0x40bff1['error']['message']);return _0x225de7(_0x40bff1[_0x7afa('0x12')][_0x7afa('0x14')]);}logger[_0x7afa('0x12')]('DeskConfiguration,\x20%s,\x20%s',_0x2b826f,_0x40bff1[_0x7afa('0x12')][_0x7afa('0x14')]);return _0xde102c(_0x40bff1[_0x7afa('0x12')]['message']);}else{logger['info'](_0x7afa('0xd'),_0x2b826f,'request\x20sent');_0xde102c(_0x40bff1[_0x7afa('0x15')]['message']);}})['catch'](function(_0xc6fd10){logger[_0x7afa('0x12')](_0x7afa('0xd'),_0x2b826f,_0xc6fd10);_0x225de7(_0xc6fd10);});});}
\ No newline at end of file
index 3662860..f4c993c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d64=['create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post'];(function(_0x393cc5,_0x1722b1){var _0x46756d=function(_0x25f7d5){while(--_0x25f7d5){_0x393cc5['push'](_0x393cc5['shift']());}};_0x46756d(++_0x1722b1);}(_0x0d64,0x17f));var _0x40d6=function(_0x19c67c,_0x253239){_0x19c67c=_0x19c67c-0x0;var _0x4b304b=_0x0d64[_0x19c67c];return _0x4b304b;};'use strict';var multer=require(_0x40d6('0x0'));var util=require(_0x40d6('0x1'));var path=require(_0x40d6('0x2'));var timeout=require(_0x40d6('0x3'));var express=require(_0x40d6('0x4'));var router=express[_0x40d6('0x5')]();var fs_extra=require(_0x40d6('0x6'));var auth=require(_0x40d6('0x7'));var interaction=require(_0x40d6('0x8'));var config=require(_0x40d6('0x9'));var controller=require('./intDeskField.controller');router[_0x40d6('0xa')]('/',auth[_0x40d6('0xb')](),controller[_0x40d6('0xc')]);router[_0x40d6('0xa')](_0x40d6('0xd'),auth[_0x40d6('0xb')](),controller[_0x40d6('0xe')]);router[_0x40d6('0xf')]('/',auth['isAuthenticated'](),controller[_0x40d6('0x10')]);router[_0x40d6('0x11')](_0x40d6('0xd'),auth['isAuthenticated'](),controller[_0x40d6('0x12')]);router[_0x40d6('0x13')](_0x40d6('0xd'),auth[_0x40d6('0xb')](),controller['destroy']);module[_0x40d6('0x14')]=router;
\ No newline at end of file
+var _0x75ab=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','show'];(function(_0x55bf61,_0x3d3b88){var _0xd2e3d=function(_0x39119c){while(--_0x39119c){_0x55bf61['push'](_0x55bf61['shift']());}};_0xd2e3d(++_0x3d3b88);}(_0x75ab,0x1eb));var _0xb75a=function(_0x53e97a,_0x3c4973){_0x53e97a=_0x53e97a-0x0;var _0x537951=_0x75ab[_0x53e97a];return _0x537951;};'use strict';var multer=require(_0xb75a('0x0'));var util=require(_0xb75a('0x1'));var path=require(_0xb75a('0x2'));var timeout=require(_0xb75a('0x3'));var express=require(_0xb75a('0x4'));var router=express['Router']();var fs_extra=require(_0xb75a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb75a('0x6'));var config=require(_0xb75a('0x7'));var controller=require(_0xb75a('0x8'));router[_0xb75a('0x9')]('/',auth[_0xb75a('0xa')](),controller[_0xb75a('0xb')]);router[_0xb75a('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xb75a('0xc')]);router['post']('/',auth[_0xb75a('0xa')](),controller['create']);router['put'](_0xb75a('0xd'),auth[_0xb75a('0xa')](),controller[_0xb75a('0xe')]);router[_0xb75a('0xf')](_0xb75a('0xd'),auth[_0xb75a('0xa')](),controller[_0xb75a('0x10')]);module[_0xb75a('0x11')]=router;
\ No newline at end of file
index 1edd791..afc9620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb182=['string','variable','customVariable','keyValue','STRING','sequelize','exports','ENUM'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0xb182,0xdd));var _0x2b18=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xb182[_0x68c979];return _0x4f0001;};'use strict';var Sequelize=require(_0x2b18('0x0'));module[_0x2b18('0x1')]={'type':{'type':Sequelize[_0x2b18('0x2')](_0x2b18('0x3'),_0x2b18('0x4'),_0x2b18('0x5'),_0x2b18('0x6'),'picklist'),'defaultValue':_0x2b18('0x3')},'content':{'type':Sequelize[_0x2b18('0x7')]},'key':{'type':Sequelize[_0x2b18('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x2b18('0x3'),'variable',_0x2b18('0x5'))},'keyContent':{'type':Sequelize[_0x2b18('0x7')]},'idField':{'type':Sequelize[_0x2b18('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1539=['STRING','BOOLEAN','ENUM','variable','customVariable','keyValue','picklist','string'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x1539,0x102));var _0x9153=function(_0x5da0cc,_0x56fa96){_0x5da0cc=_0x5da0cc-0x0;var _0x5e68fe=_0x1539[_0x5da0cc];return _0x5e68fe;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x9153('0x0')]('string',_0x9153('0x1'),_0x9153('0x2'),_0x9153('0x3'),_0x9153('0x4')),'defaultValue':_0x9153('0x5')},'content':{'type':Sequelize[_0x9153('0x6')]},'key':{'type':Sequelize[_0x9153('0x6')]},'keyType':{'type':Sequelize[_0x9153('0x0')]('string',_0x9153('0x1'),_0x9153('0x2'))},'keyContent':{'type':Sequelize[_0x9153('0x6')]},'idField':{'type':Sequelize[_0x9153('0x6')]},'nameField':{'type':Sequelize[_0x9153('0x6')]},'customField':{'type':Sequelize[_0x9153('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9153('0x6')]}};
\ No newline at end of file
index feab09c..bce3fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2c8=['catch','show','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','stack','name','send','index','DeskField','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include'];(function(_0x337748,_0x402b05){var _0x3bb03f=function(_0x2fcdf4){while(--_0x2fcdf4){_0x337748['push'](_0x337748['shift']());}};_0x3bb03f(++_0x402b05);}(_0xa2c8,0x99));var _0x8a2c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa2c8[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x8a2c('0x0'));var rimraf=require(_0x8a2c('0x1'));var zipdir=require(_0x8a2c('0x2'));var jsonpatch=require(_0x8a2c('0x3'));var rp=require(_0x8a2c('0x4'));var moment=require(_0x8a2c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8a2c('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x8a2c('0x7'));var ejs=require(_0x8a2c('0x8'));var fs=require('fs');var fs_extra=require(_0x8a2c('0x9'));var _=require(_0x8a2c('0xa'));var squel=require('squel');var crypto=require(_0x8a2c('0xb'));var jsforce=require(_0x8a2c('0xc'));var deskjs=require(_0x8a2c('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8a2c('0xe'));var authService=require(_0x8a2c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8a2c('0x10'));var hardwareService=require(_0x8a2c('0x11'));var logger=require(_0x8a2c('0x12'))(_0x8a2c('0x13'));var utils=require(_0x8a2c('0x14'));var config=require(_0x8a2c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x8a2c('0x16'))['db'];function respondWithStatusCode(_0x27f040,_0x4b18eb){_0x4b18eb=_0x4b18eb||0xcc;return function(_0xec4883){if(_0xec4883){return _0x27f040[_0x8a2c('0x17')](_0x4b18eb);}return _0x27f040['status'](_0x4b18eb)['end']();};}function respondWithResult(_0x545fb0,_0x4c7eac){_0x4c7eac=_0x4c7eac||0xc8;return function(_0x16bff7){if(_0x16bff7){return _0x545fb0[_0x8a2c('0x18')](_0x4c7eac)[_0x8a2c('0x19')](_0x16bff7);}};}function respondWithFilteredResult(_0x4f02e1,_0x4e8d08){return function(_0xc9d4c7){if(_0xc9d4c7){var _0x8594b4=typeof _0x4e8d08[_0x8a2c('0x1a')]===_0x8a2c('0x1b')&&typeof _0x4e8d08[_0x8a2c('0x1c')]===_0x8a2c('0x1b');var _0x3d82a5=_0xc9d4c7[_0x8a2c('0x1d')];var _0x48d922=_0x8594b4?0x0:_0x4e8d08['offset'];var _0x41226b=_0x8594b4?_0xc9d4c7[_0x8a2c('0x1d')]:_0x4e8d08[_0x8a2c('0x1a')]+_0x4e8d08[_0x8a2c('0x1c')];var _0x2e7e0b;if(_0x41226b>=_0x3d82a5){_0x41226b=_0x3d82a5;_0x2e7e0b=0xc8;}else{_0x2e7e0b=0xce;}_0x4f02e1[_0x8a2c('0x18')](_0x2e7e0b);return _0x4f02e1[_0x8a2c('0x1e')]('Content-Range',_0x48d922+'-'+_0x41226b+'/'+_0x3d82a5)[_0x8a2c('0x19')](_0xc9d4c7);}return null;};}function patchUpdates(_0x4a8d1e){return function(_0x29efe9){try{jsonpatch[_0x8a2c('0x1f')](_0x29efe9,_0x4a8d1e,!![]);}catch(_0x17a645){return BPromise[_0x8a2c('0x20')](_0x17a645);}return _0x29efe9[_0x8a2c('0x21')]();};}function saveUpdates(_0x292c02,_0xa77550){return function(_0x10c951){if(_0x10c951){return _0x10c951[_0x8a2c('0x22')](_0x292c02)[_0x8a2c('0x23')](function(_0x49454f){return _0x49454f;});}return null;};}function removeEntity(_0x2d89cb,_0x5acc49){return function(_0x26c80c){if(_0x26c80c){return _0x26c80c[_0x8a2c('0x24')]()[_0x8a2c('0x23')](function(){_0x2d89cb[_0x8a2c('0x18')](0xcc)[_0x8a2c('0x25')]();});}};}function handleEntityNotFound(_0x305949,_0x53fdb3){return function(_0x4be02e){if(!_0x4be02e){_0x305949[_0x8a2c('0x17')](0x194);}return _0x4be02e;};}function handleError(_0x2a2758,_0x1a2ea6){_0x1a2ea6=_0x1a2ea6||0x1f4;return function(_0x292103){logger['error'](_0x292103[_0x8a2c('0x26')]);if(_0x292103[_0x8a2c('0x27')]){delete _0x292103[_0x8a2c('0x27')];}_0x2a2758[_0x8a2c('0x18')](_0x1a2ea6)[_0x8a2c('0x28')](_0x292103);};}exports[_0x8a2c('0x29')]=function(_0x57c59e,_0x326da5){var _0x28ad48={},_0xbe6057={},_0x4ee754={'count':0x0,'rows':[]};var _0x2414c5=_['map'](db[_0x8a2c('0x2a')]['rawAttributes'],function(_0x56d753){return{'name':_0x56d753[_0x8a2c('0x2b')],'type':_0x56d753[_0x8a2c('0x2c')]['key']};});_0xbe6057[_0x8a2c('0x2d')]=_[_0x8a2c('0x2e')](_0x2414c5,_0x8a2c('0x27'));_0xbe6057['query']=_[_0x8a2c('0x2f')](_0x57c59e[_0x8a2c('0x30')]);_0xbe6057[_0x8a2c('0x31')]=_[_0x8a2c('0x32')](_0xbe6057[_0x8a2c('0x2d')],_0xbe6057['query']);_0x28ad48[_0x8a2c('0x33')]=_[_0x8a2c('0x32')](_0xbe6057[_0x8a2c('0x2d')],qs[_0x8a2c('0x34')](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x34')]));_0x28ad48['attributes']=_0x28ad48[_0x8a2c('0x33')][_0x8a2c('0x35')]?_0x28ad48['attributes']:_0xbe6057[_0x8a2c('0x2d')];if(!_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x36')](_0x8a2c('0x37'))){_0x28ad48[_0x8a2c('0x1c')]=qs[_0x8a2c('0x1c')](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x1c')]);_0x28ad48[_0x8a2c('0x1a')]=qs['offset'](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x1a')]);}_0x28ad48[_0x8a2c('0x38')]=qs[_0x8a2c('0x39')](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x39')]);_0x28ad48['where']=qs[_0x8a2c('0x31')](_[_0x8a2c('0x3a')](_0x57c59e[_0x8a2c('0x30')],_0xbe6057['filters']),_0x2414c5);if(_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x3b')]){_0x28ad48[_0x8a2c('0x3c')]=_[_0x8a2c('0x3d')](_0x28ad48[_0x8a2c('0x3c')],{'$or':_['map'](_0x2414c5,function(_0x4f254a){if(_0x4f254a[_0x8a2c('0x2c')]!==_0x8a2c('0x3e')){var _0x5da273={};_0x5da273[_0x4f254a[_0x8a2c('0x27')]]={'$like':'%'+_0x57c59e[_0x8a2c('0x30')]['filter']+'%'};return _0x5da273;}})});}_0x28ad48=_['merge']({},_0x28ad48,_0x57c59e[_0x8a2c('0x3f')]);var _0xe2a338={'where':_0x28ad48['where']};return db[_0x8a2c('0x2a')][_0x8a2c('0x1d')](_0xe2a338)[_0x8a2c('0x23')](function(_0x1f844f){_0x4ee754[_0x8a2c('0x1d')]=_0x1f844f;if(_0x57c59e['query'][_0x8a2c('0x40')]){_0x28ad48[_0x8a2c('0x41')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x28ad48);})[_0x8a2c('0x23')](function(_0x19b741){_0x4ee754['rows']=_0x19b741;return _0x4ee754;})[_0x8a2c('0x23')](respondWithFilteredResult(_0x326da5,_0x28ad48))[_0x8a2c('0x42')](handleError(_0x326da5,null));};exports[_0x8a2c('0x43')]=function(_0x1fd19c,_0x28dcc7){var _0x5a7c17={'raw':!![],'where':{'id':_0x1fd19c[_0x8a2c('0x44')]['id']}},_0x9a67f2={};_0x9a67f2[_0x8a2c('0x2d')]=_['keys'](db[_0x8a2c('0x2a')][_0x8a2c('0x45')]);_0x9a67f2[_0x8a2c('0x30')]=_[_0x8a2c('0x2f')](_0x1fd19c['query']);_0x9a67f2[_0x8a2c('0x31')]=_[_0x8a2c('0x32')](_0x9a67f2[_0x8a2c('0x2d')],_0x9a67f2[_0x8a2c('0x30')]);_0x5a7c17[_0x8a2c('0x33')]=_[_0x8a2c('0x32')](_0x9a67f2[_0x8a2c('0x2d')],qs[_0x8a2c('0x34')](_0x1fd19c[_0x8a2c('0x30')][_0x8a2c('0x34')]));_0x5a7c17[_0x8a2c('0x33')]=_0x5a7c17[_0x8a2c('0x33')][_0x8a2c('0x35')]?_0x5a7c17['attributes']:_0x9a67f2[_0x8a2c('0x2d')];if(_0x1fd19c['query']['includeAll']){_0x5a7c17[_0x8a2c('0x41')]=[{'all':!![]}];}_0x5a7c17=_[_0x8a2c('0x3d')]({},_0x5a7c17,_0x1fd19c[_0x8a2c('0x3f')]);return db['DeskField'][_0x8a2c('0x46')](_0x5a7c17)[_0x8a2c('0x23')](handleEntityNotFound(_0x28dcc7,null))[_0x8a2c('0x23')](respondWithResult(_0x28dcc7,null))[_0x8a2c('0x42')](handleError(_0x28dcc7,null));};exports[_0x8a2c('0x47')]=function(_0x5e4f63,_0xf71ed4){return db[_0x8a2c('0x2a')][_0x8a2c('0x47')](_0x5e4f63[_0x8a2c('0x48')],{})['then'](respondWithResult(_0xf71ed4,0xc9))[_0x8a2c('0x42')](handleError(_0xf71ed4,null));};exports['update']=function(_0x3d1a49,_0x31af59){if(_0x3d1a49[_0x8a2c('0x48')]['id']){delete _0x3d1a49[_0x8a2c('0x48')]['id'];}return db[_0x8a2c('0x2a')][_0x8a2c('0x46')]({'where':{'id':_0x3d1a49[_0x8a2c('0x44')]['id']}})['then'](handleEntityNotFound(_0x31af59,null))[_0x8a2c('0x23')](saveUpdates(_0x3d1a49[_0x8a2c('0x48')],null))[_0x8a2c('0x23')](respondWithResult(_0x31af59,null))[_0x8a2c('0x42')](handleError(_0x31af59,null));};exports['destroy']=function(_0x220a9e,_0x5df377){return db[_0x8a2c('0x2a')][_0x8a2c('0x46')]({'where':{'id':_0x220a9e[_0x8a2c('0x44')]['id']}})[_0x8a2c('0x23')](handleEntityNotFound(_0x5df377,null))[_0x8a2c('0x23')](removeEntity(_0x5df377,null))['catch'](handleError(_0x5df377,null));};
\ No newline at end of file
+var _0x0b78=['DeskField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','include','rows','catch','show','params','keys','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index'];(function(_0x3b6112,_0x31a6f3){var _0x263088=function(_0x447239){while(--_0x447239){_0x3b6112['push'](_0x3b6112['shift']());}};_0x263088(++_0x31a6f3);}(_0x0b78,0x1d6));var _0x80b7=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x0b78[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x80b7('0x0'));var zipdir=require(_0x80b7('0x1'));var jsonpatch=require(_0x80b7('0x2'));var rp=require('request-promise');var moment=require(_0x80b7('0x3'));var BPromise=require(_0x80b7('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x80b7('0x5'));var csv=require(_0x80b7('0x6'));var ejs=require(_0x80b7('0x7'));var fs=require('fs');var fs_extra=require(_0x80b7('0x8'));var _=require(_0x80b7('0x9'));var squel=require(_0x80b7('0xa'));var crypto=require('crypto');var jsforce=require(_0x80b7('0xb'));var deskjs=require(_0x80b7('0xc'));var toCsv=require(_0x80b7('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x80b7('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x80b7('0xe'));var as=require(_0x80b7('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x80b7('0x10'))(_0x80b7('0x11'));var utils=require(_0x80b7('0x12'));var config=require(_0x80b7('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ac007,_0x1bbe9f){_0x1bbe9f=_0x1bbe9f||0xcc;return function(_0x16976c){if(_0x16976c){return _0x3ac007[_0x80b7('0x14')](_0x1bbe9f);}return _0x3ac007[_0x80b7('0x15')](_0x1bbe9f)[_0x80b7('0x16')]();};}function respondWithResult(_0x3d71a0,_0x32cecc){_0x32cecc=_0x32cecc||0xc8;return function(_0x416d32){if(_0x416d32){return _0x3d71a0['status'](_0x32cecc)['json'](_0x416d32);}};}function respondWithFilteredResult(_0x5c64df,_0x57e428){return function(_0x2c6bff){if(_0x2c6bff){var _0x459f67=typeof _0x57e428[_0x80b7('0x17')]===_0x80b7('0x18')&&typeof _0x57e428[_0x80b7('0x19')]===_0x80b7('0x18');var _0x262cd5=_0x2c6bff[_0x80b7('0x1a')];var _0x22abaa=_0x459f67?0x0:_0x57e428[_0x80b7('0x17')];var _0x25b5e9=_0x459f67?_0x2c6bff[_0x80b7('0x1a')]:_0x57e428[_0x80b7('0x17')]+_0x57e428['limit'];var _0x2165df;if(_0x25b5e9>=_0x262cd5){_0x25b5e9=_0x262cd5;_0x2165df=0xc8;}else{_0x2165df=0xce;}_0x5c64df[_0x80b7('0x15')](_0x2165df);return _0x5c64df[_0x80b7('0x1b')](_0x80b7('0x1c'),_0x22abaa+'-'+_0x25b5e9+'/'+_0x262cd5)[_0x80b7('0x1d')](_0x2c6bff);}return null;};}function patchUpdates(_0x3ebdd6){return function(_0x220133){try{jsonpatch[_0x80b7('0x1e')](_0x220133,_0x3ebdd6,!![]);}catch(_0x3da240){return BPromise[_0x80b7('0x1f')](_0x3da240);}return _0x220133[_0x80b7('0x20')]();};}function saveUpdates(_0x1ef249,_0x53046f){return function(_0x55bf6e){if(_0x55bf6e){return _0x55bf6e[_0x80b7('0x21')](_0x1ef249)[_0x80b7('0x22')](function(_0x158b65){return _0x158b65;});}return null;};}function removeEntity(_0x5e8093,_0x9fccdc){return function(_0x390d8a){if(_0x390d8a){return _0x390d8a[_0x80b7('0x23')]()[_0x80b7('0x22')](function(){_0x5e8093[_0x80b7('0x15')](0xcc)[_0x80b7('0x16')]();});}};}function handleEntityNotFound(_0x44ab49,_0xea1ea0){return function(_0x23a876){if(!_0x23a876){_0x44ab49[_0x80b7('0x14')](0x194);}return _0x23a876;};}function handleError(_0x1221c7,_0x4cb8c9){_0x4cb8c9=_0x4cb8c9||0x1f4;return function(_0x328c15){logger[_0x80b7('0x24')](_0x328c15[_0x80b7('0x25')]);if(_0x328c15[_0x80b7('0x26')]){delete _0x328c15[_0x80b7('0x26')];}_0x1221c7[_0x80b7('0x15')](_0x4cb8c9)[_0x80b7('0x27')](_0x328c15);};}exports[_0x80b7('0x28')]=function(_0x479335,_0x42e7a6){var _0x23958b={},_0x1dc2df={},_0x396144={'count':0x0,'rows':[]};var _0x46b76b=_['map'](db[_0x80b7('0x29')][_0x80b7('0x2a')],function(_0x2cc6f7){return{'name':_0x2cc6f7[_0x80b7('0x2b')],'type':_0x2cc6f7[_0x80b7('0x2c')][_0x80b7('0x2d')]};});_0x1dc2df[_0x80b7('0x2e')]=_['map'](_0x46b76b,_0x80b7('0x26'));_0x1dc2df[_0x80b7('0x2f')]=_['keys'](_0x479335[_0x80b7('0x2f')]);_0x1dc2df[_0x80b7('0x30')]=_[_0x80b7('0x31')](_0x1dc2df[_0x80b7('0x2e')],_0x1dc2df[_0x80b7('0x2f')]);_0x23958b[_0x80b7('0x32')]=_['intersection'](_0x1dc2df[_0x80b7('0x2e')],qs[_0x80b7('0x33')](_0x479335[_0x80b7('0x2f')]['fields']));_0x23958b[_0x80b7('0x32')]=_0x23958b[_0x80b7('0x32')][_0x80b7('0x34')]?_0x23958b['attributes']:_0x1dc2df[_0x80b7('0x2e')];if(!_0x479335[_0x80b7('0x2f')][_0x80b7('0x35')](_0x80b7('0x36'))){_0x23958b[_0x80b7('0x19')]=qs[_0x80b7('0x19')](_0x479335[_0x80b7('0x2f')][_0x80b7('0x19')]);_0x23958b['offset']=qs['offset'](_0x479335[_0x80b7('0x2f')][_0x80b7('0x17')]);}_0x23958b[_0x80b7('0x37')]=qs[_0x80b7('0x38')](_0x479335['query']['sort']);_0x23958b[_0x80b7('0x39')]=qs[_0x80b7('0x30')](_[_0x80b7('0x3a')](_0x479335[_0x80b7('0x2f')],_0x1dc2df['filters']),_0x46b76b);if(_0x479335[_0x80b7('0x2f')][_0x80b7('0x3b')]){_0x23958b['where']=_[_0x80b7('0x3c')](_0x23958b['where'],{'$or':_[_0x80b7('0x3d')](_0x46b76b,function(_0x490b91){if(_0x490b91['type']!==_0x80b7('0x3e')){var _0x76ffba={};_0x76ffba[_0x490b91[_0x80b7('0x26')]]={'$like':'%'+_0x479335[_0x80b7('0x2f')]['filter']+'%'};return _0x76ffba;}})});}_0x23958b=_['merge']({},_0x23958b,_0x479335[_0x80b7('0x3f')]);var _0x4f50ca={'where':_0x23958b[_0x80b7('0x39')]};return db[_0x80b7('0x29')]['count'](_0x4f50ca)['then'](function(_0x15fe0d){_0x396144[_0x80b7('0x1a')]=_0x15fe0d;if(_0x479335[_0x80b7('0x2f')]['includeAll']){_0x23958b[_0x80b7('0x40')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x23958b);})[_0x80b7('0x22')](function(_0x1b2fda){_0x396144[_0x80b7('0x41')]=_0x1b2fda;return _0x396144;})[_0x80b7('0x22')](respondWithFilteredResult(_0x42e7a6,_0x23958b))[_0x80b7('0x42')](handleError(_0x42e7a6,null));};exports[_0x80b7('0x43')]=function(_0xa12f05,_0x2070fc){var _0xa5d1bf={'raw':!![],'where':{'id':_0xa12f05[_0x80b7('0x44')]['id']}},_0x190d41={};_0x190d41[_0x80b7('0x2e')]=_['keys'](db[_0x80b7('0x29')][_0x80b7('0x2a')]);_0x190d41[_0x80b7('0x2f')]=_[_0x80b7('0x45')](_0xa12f05[_0x80b7('0x2f')]);_0x190d41[_0x80b7('0x30')]=_[_0x80b7('0x31')](_0x190d41[_0x80b7('0x2e')],_0x190d41[_0x80b7('0x2f')]);_0xa5d1bf[_0x80b7('0x32')]=_[_0x80b7('0x31')](_0x190d41['model'],qs[_0x80b7('0x33')](_0xa12f05['query'][_0x80b7('0x33')]));_0xa5d1bf[_0x80b7('0x32')]=_0xa5d1bf[_0x80b7('0x32')][_0x80b7('0x34')]?_0xa5d1bf['attributes']:_0x190d41[_0x80b7('0x2e')];if(_0xa12f05[_0x80b7('0x2f')]['includeAll']){_0xa5d1bf[_0x80b7('0x40')]=[{'all':!![]}];}_0xa5d1bf=_[_0x80b7('0x3c')]({},_0xa5d1bf,_0xa12f05['options']);return db[_0x80b7('0x29')][_0x80b7('0x46')](_0xa5d1bf)['then'](handleEntityNotFound(_0x2070fc,null))['then'](respondWithResult(_0x2070fc,null))[_0x80b7('0x42')](handleError(_0x2070fc,null));};exports[_0x80b7('0x47')]=function(_0xb75a61,_0x29bee7){return db[_0x80b7('0x29')][_0x80b7('0x47')](_0xb75a61[_0x80b7('0x48')],{})['then'](respondWithResult(_0x29bee7,0xc9))['catch'](handleError(_0x29bee7,null));};exports['update']=function(_0x599205,_0x52fd0b){if(_0x599205['body']['id']){delete _0x599205[_0x80b7('0x48')]['id'];}return db[_0x80b7('0x29')][_0x80b7('0x46')]({'where':{'id':_0x599205['params']['id']}})[_0x80b7('0x22')](handleEntityNotFound(_0x52fd0b,null))[_0x80b7('0x22')](saveUpdates(_0x599205[_0x80b7('0x48')],null))['then'](respondWithResult(_0x52fd0b,null))[_0x80b7('0x42')](handleError(_0x52fd0b,null));};exports['destroy']=function(_0x1e7536,_0x2a642e){return db[_0x80b7('0x29')]['find']({'where':{'id':_0x1e7536[_0x80b7('0x44')]['id']}})['then'](handleEntityNotFound(_0x2a642e,null))['then'](removeEntity(_0x2a642e,null))[_0x80b7('0x42')](handleError(_0x2a642e,null));};
\ No newline at end of file
index 002aa31..89d9939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf465=['request-promise','path','../../config/environment','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xf465,0xba));var _0x5f46=function(_0x4020c2,_0x3e1095){_0x4020c2=_0x4020c2-0x0;var _0xe585f4=_0xf465[_0x4020c2];return _0xe585f4;};'use strict';var _=require(_0x5f46('0x0'));var util=require(_0x5f46('0x1'));var logger=require(_0x5f46('0x2'))(_0x5f46('0x3'));var moment=require(_0x5f46('0x4'));var BPromise=require(_0x5f46('0x5'));var rp=require(_0x5f46('0x6'));var fs=require('fs');var path=require(_0x5f46('0x7'));var rimraf=require('rimraf');var config=require(_0x5f46('0x8'));var attributes=require(_0x5f46('0x9'));module[_0x5f46('0xa')]=function(_0x3b52af,_0x33526a){return _0x3b52af[_0x5f46('0xb')]('DeskField',attributes,{'tableName':_0x5f46('0xc'),'paranoid':![],'indexes':[{'name':_0x5f46('0xd'),'fields':[_0x5f46('0xe'),_0x5f46('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa631=['lodash','../../config/logger','api','moment','bluebird','path','rimraf','./intDeskField.attributes','exports','DeskField','int_desk_fields','desk_unique_index','idField','FieldId'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa631,0x1dc));var _0x1a63=function(_0x3d54b4,_0x2dc304){_0x3d54b4=_0x3d54b4-0x0;var _0x5b2649=_0xa631[_0x3d54b4];return _0x5b2649;};'use strict';var _=require(_0x1a63('0x0'));var util=require('util');var logger=require(_0x1a63('0x1'))(_0x1a63('0x2'));var moment=require(_0x1a63('0x3'));var BPromise=require(_0x1a63('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1a63('0x5'));var rimraf=require(_0x1a63('0x6'));var config=require('../../config/environment');var attributes=require(_0x1a63('0x7'));module[_0x1a63('0x8')]=function(_0x111e40,_0x5d078a){return _0x111e40['define'](_0x1a63('0x9'),attributes,{'tableName':_0x1a63('0xa'),'paranoid':![],'indexes':[{'name':_0x1a63('0xb'),'fields':[_0x1a63('0xc'),_0x1a63('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1150c80..fda946a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e3=['randomstring','../../mysqldb','../../config/logger','client','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','bluebird'];(function(_0x51d144,_0x46251e){var _0x310821=function(_0x2d9b18){while(--_0x2d9b18){_0x51d144['push'](_0x51d144['shift']());}};_0x310821(++_0x46251e);}(_0x79e3,0xb2));var _0x379e=function(_0xec2973,_0x58deff){_0xec2973=_0xec2973-0x0;var _0x59576c=_0x79e3[_0xec2973];return _0x59576c;};'use strict';var _=require('lodash');var util=require(_0x379e('0x0'));var moment=require('moment');var BPromise=require(_0x379e('0x1'));var rs=require(_0x379e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x379e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x379e('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x379e('0x5')][_0x379e('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2c9637,_0x5f41ed,_0x45c918){return new BPromise(function(_0x3f0aa6,_0x2bd97a){return client[_0x379e('0x7')](_0x2c9637,_0x45c918)['then'](function(_0x3ff691){logger[_0x379e('0x8')](_0x379e('0x9'),_0x5f41ed,_0x379e('0xa'));logger[_0x379e('0xb')](_0x379e('0xc'),_0x5f41ed,_0x379e('0xa'),JSON[_0x379e('0xd')](_0x3ff691));if(_0x3ff691[_0x379e('0xe')]){if(_0x3ff691[_0x379e('0xe')]['code']===0x1f4){logger[_0x379e('0xe')]('DeskField,\x20%s,\x20%s',_0x5f41ed,_0x3ff691[_0x379e('0xe')]['message']);return _0x2bd97a(_0x3ff691[_0x379e('0xe')][_0x379e('0xf')]);}logger[_0x379e('0xe')](_0x379e('0x9'),_0x5f41ed,_0x3ff691['error']['message']);return _0x3f0aa6(_0x3ff691[_0x379e('0xe')][_0x379e('0xf')]);}else{logger[_0x379e('0x8')](_0x379e('0x9'),_0x5f41ed,_0x379e('0xa'));_0x3f0aa6(_0x3ff691[_0x379e('0x10')][_0x379e('0xf')]);}})[_0x379e('0x11')](function(_0x2ea30a){logger[_0x379e('0xe')](_0x379e('0x9'),_0x5f41ed,_0x2ea30a);_0x2bd97a(_0x2ea30a);});});}
\ No newline at end of file
+var _0xddf8=['jayson/promise','client','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x5cb720,_0x312f0d){var _0x930222=function(_0xc638ee){while(--_0xc638ee){_0x5cb720['push'](_0x5cb720['shift']());}};_0x930222(++_0x312f0d);}(_0xddf8,0x10a));var _0x8ddf=function(_0x3c6d83,_0x35e1ad){_0x3c6d83=_0x3c6d83-0x0;var _0x3b5cf4=_0xddf8[_0x3c6d83];return _0x3b5cf4;};'use strict';var _=require('lodash');var util=require(_0x8ddf('0x0'));var moment=require(_0x8ddf('0x1'));var BPromise=require('bluebird');var rs=require(_0x8ddf('0x2'));var fs=require('fs');var Redis=require(_0x8ddf('0x3'));var db=require(_0x8ddf('0x4'))['db'];var utils=require(_0x8ddf('0x5'));var logger=require(_0x8ddf('0x6'))(_0x8ddf('0x7'));var config=require(_0x8ddf('0x8'));var jayson=require(_0x8ddf('0x9'));var client=jayson[_0x8ddf('0xa')][_0x8ddf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x74aac,_0x59783e,_0xe0fe0f){return new BPromise(function(_0x489243,_0x6732c9){return client[_0x8ddf('0xc')](_0x74aac,_0xe0fe0f)[_0x8ddf('0xd')](function(_0x43e977){logger['info'](_0x8ddf('0xe'),_0x59783e,_0x8ddf('0xf'));logger[_0x8ddf('0x10')](_0x8ddf('0x11'),_0x59783e,_0x8ddf('0xf'),JSON[_0x8ddf('0x12')](_0x43e977));if(_0x43e977[_0x8ddf('0x13')]){if(_0x43e977[_0x8ddf('0x13')][_0x8ddf('0x14')]===0x1f4){logger['error'](_0x8ddf('0xe'),_0x59783e,_0x43e977['error'][_0x8ddf('0x15')]);return _0x6732c9(_0x43e977[_0x8ddf('0x13')][_0x8ddf('0x15')]);}logger[_0x8ddf('0x13')](_0x8ddf('0xe'),_0x59783e,_0x43e977['error'][_0x8ddf('0x15')]);return _0x489243(_0x43e977['error'][_0x8ddf('0x15')]);}else{logger[_0x8ddf('0x16')](_0x8ddf('0xe'),_0x59783e,'request\x20sent');_0x489243(_0x43e977[_0x8ddf('0x17')][_0x8ddf('0x15')]);}})[_0x8ddf('0x18')](function(_0x2af50e){logger[_0x8ddf('0x13')](_0x8ddf('0xe'),_0x59783e,_0x2af50e);_0x6732c9(_0x2af50e);});});}
\ No newline at end of file
index 633752d..4739432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x130b=['post','addConfiguration','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','create'];(function(_0x1a00d2,_0x2747ca){var _0x30dcb0=function(_0x422afb){while(--_0x422afb){_0x1a00d2['push'](_0x1a00d2['shift']());}};_0x30dcb0(++_0x2747ca);}(_0x130b,0x90));var _0xb130=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x130b[_0x122096];return _0x3d1966;};'use strict';var multer=require(_0xb130('0x0'));var util=require(_0xb130('0x1'));var path=require(_0xb130('0x2'));var timeout=require('connect-timeout');var express=require(_0xb130('0x3'));var router=express[_0xb130('0x4')]();var fs_extra=require(_0xb130('0x5'));var auth=require(_0xb130('0x6'));var interaction=require(_0xb130('0x7'));var config=require(_0xb130('0x8'));var controller=require(_0xb130('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb130('0xa'),auth[_0xb130('0xb')](),controller[_0xb130('0xc')]);router['get']('/:id/configurations',auth[_0xb130('0xb')](),controller[_0xb130('0xd')]);router['get'](_0xb130('0xe'),auth['isAuthenticated'](),controller[_0xb130('0xf')]);router['post']('/',auth[_0xb130('0xb')](),controller[_0xb130('0x10')]);router[_0xb130('0x11')]('/:id/configurations',auth[_0xb130('0xb')](),controller[_0xb130('0x12')]);router[_0xb130('0x13')](_0xb130('0xa'),auth[_0xb130('0xb')](),controller[_0xb130('0x14')]);router[_0xb130('0x15')](_0xb130('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xb130('0x16')]=router;
\ No newline at end of file
+var _0x0fe8=['get','isAuthenticated','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','destroy','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller'];(function(_0x3136b5,_0x4b5712){var _0x365804=function(_0x3f8f51){while(--_0x3f8f51){_0x3136b5['push'](_0x3136b5['shift']());}};_0x365804(++_0x4b5712);}(_0x0fe8,0x12b));var _0x80fe=function(_0x57754d,_0x522d88){_0x57754d=_0x57754d-0x0;var _0x6f83d8=_0x0fe8[_0x57754d];return _0x6f83d8;};'use strict';var multer=require(_0x80fe('0x0'));var util=require(_0x80fe('0x1'));var path=require('path');var timeout=require(_0x80fe('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x80fe('0x3'));var auth=require(_0x80fe('0x4'));var interaction=require(_0x80fe('0x5'));var config=require('../../config/environment');var controller=require(_0x80fe('0x6'));router[_0x80fe('0x7')]('/',auth[_0x80fe('0x8')](),controller['index']);router['get'](_0x80fe('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x80fe('0x7')](_0x80fe('0xa'),auth['isAuthenticated'](),controller[_0x80fe('0xb')]);router['get']('/:id/fields',auth[_0x80fe('0x8')](),controller[_0x80fe('0xc')]);router[_0x80fe('0xd')]('/',auth[_0x80fe('0x8')](),controller[_0x80fe('0xe')]);router['post'](_0x80fe('0xa'),auth[_0x80fe('0x8')](),controller[_0x80fe('0xf')]);router['put'](_0x80fe('0x9'),auth[_0x80fe('0x8')](),controller['update']);router['delete']('/:id',auth[_0x80fe('0x8')](),controller[_0x80fe('0x10')]);module['exports']=router;
\ No newline at end of file
index fadfd52..20968cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4986=['STRING','BOOLEAN','sequelize','exports'];(function(_0x11c06e,_0x1cb9c7){var _0x20a7dc=function(_0xd192db){while(--_0xd192db){_0x11c06e['push'](_0x11c06e['shift']());}};_0x20a7dc(++_0x1cb9c7);}(_0x4986,0x6e));var _0x6498=function(_0x27fcda,_0xffe100){_0x27fcda=_0x27fcda-0x0;var _0x3cc539=_0x4986[_0x27fcda];return _0x3cc539;};'use strict';var Sequelize=require(_0x6498('0x0'));module[_0x6498('0x1')]={'name':{'type':Sequelize[_0x6498('0x2')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x6498('0x2')]},'tenantId':{'type':Sequelize[_0x6498('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x6498('0x2')]},'serverUrl':{'type':Sequelize[_0x6498('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x6498('0x2')]},'modernAuthentication':{'type':Sequelize[_0x6498('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x374c=['STRING','exports'];(function(_0x2a1f4b,_0x32b4bd){var _0x3d6633=function(_0x46da72){while(--_0x46da72){_0x2a1f4b['push'](_0x2a1f4b['shift']());}};_0x3d6633(++_0x32b4bd);}(_0x374c,0x1e3));var _0xc374=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0x374c[_0x47a349];return _0x18ab75;};'use strict';var Sequelize=require('sequelize');module[_0xc374('0x0')]={'name':{'type':Sequelize[_0xc374('0x1')]},'username':{'type':Sequelize[_0xc374('0x1')]},'password':{'type':Sequelize[_0xc374('0x1')]},'remoteUri':{'type':Sequelize[_0xc374('0x1')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xc374('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xc374('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc374('0x1')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 51a753c..354e3e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8830=['@odata.type','push','all','forEach','isNil','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','Wrong\x20credentials','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','api','../../components/integrations/configuration','json','offset','undefined','limit','count','status','set','update','destroy','then','end','sendStatus','error','stack','name','send','Dynamics365Account','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','Dynamics365Configuration','Dynamics365Field','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','incident','title','description','customerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyname','createdon','createdonbehalfbyyominame','customeridname','customeridyominame','entitlementidname','entityimage_timestamp','entityimage_url','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slainvokedidname','socialprofileidname','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','versionnumber','username','password','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','POST','/oauth2/token','GET','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','includes','LogicalName'];(function(_0x3242f8,_0x452998){var _0x47e17f=function(_0x4caf30){while(--_0x4caf30){_0x3242f8['push'](_0x3242f8['shift']());}};_0x47e17f(++_0x452998);}(_0x8830,0x181));var _0x0883=function(_0xd13a68,_0x11eb15){_0xd13a68=_0xd13a68-0x0;var _0x376631=_0x8830[_0xd13a68];return _0x376631;};'use strict';var rp=require(_0x0883('0x0'));var util=require(_0x0883('0x1'));var _=require(_0x0883('0x2'));var qs=require(_0x0883('0x3'));var logger=require('../../config/logger')(_0x0883('0x4'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0883('0x5'));function respondWithResult(_0x711297,_0x433f26){_0x433f26=_0x433f26||0xc8;return function(_0x3e597b){if(_0x3e597b){return _0x711297['status'](_0x433f26)[_0x0883('0x6')](_0x3e597b);}};}function respondWithFilteredResult(_0x45b832,_0x2e9384){return function(_0x503b86){if(_0x503b86){var _0x3da72f=typeof _0x2e9384[_0x0883('0x7')]===_0x0883('0x8')&&typeof _0x2e9384[_0x0883('0x9')]===_0x0883('0x8');var _0x2d6500=_0x503b86[_0x0883('0xa')];var _0x108984=_0x3da72f?0x0:_0x2e9384[_0x0883('0x7')];var _0x1ca124=_0x3da72f?_0x503b86[_0x0883('0xa')]:_0x2e9384[_0x0883('0x7')]+_0x2e9384['limit'];var _0x21c1d3;if(_0x1ca124>=_0x2d6500){_0x1ca124=_0x2d6500;_0x21c1d3=0xc8;}else{_0x21c1d3=0xce;}_0x45b832[_0x0883('0xb')](_0x21c1d3);return _0x45b832[_0x0883('0xc')]('Content-Range',_0x108984+'-'+_0x1ca124+'/'+_0x2d6500)[_0x0883('0x6')](_0x503b86);}return null;};}function saveUpdates(_0x559942){return function(_0x49b1e8){if(_0x49b1e8){return _0x49b1e8[_0x0883('0xd')](_0x559942)['then'](function(_0x1f26c0){return _0x1f26c0;});}return null;};}function removeEntity(_0x431d93){return function(_0x56bcf8){if(_0x56bcf8){return _0x56bcf8[_0x0883('0xe')]()[_0x0883('0xf')](function(){_0x431d93[_0x0883('0xb')](0xcc)[_0x0883('0x10')]();});}};}function handleEntityNotFound(_0x3d4d7a){return function(_0x399f22){if(!_0x399f22){_0x3d4d7a[_0x0883('0x11')](0x194);}return _0x399f22;};}function handleError(_0x1fb81d,_0x5165e7){_0x5165e7=_0x5165e7||0x1f4;return function(_0x4dc614){logger[_0x0883('0x12')](_0x4dc614[_0x0883('0x13')]);if(_0x4dc614[_0x0883('0x14')]){delete _0x4dc614['name'];}_0x1fb81d['status'](_0x5165e7)[_0x0883('0x15')](_0x4dc614);};}exports['index']=function(_0x146794,_0x473341){var _0x205435={},_0x35da48={},_0x468c79={'count':0x0,'rows':[]};var _0xa8c242=_['map'](db[_0x0883('0x16')][_0x0883('0x17')],function(_0x15836e){return{'name':_0x15836e[_0x0883('0x18')],'type':_0x15836e[_0x0883('0x19')][_0x0883('0x1a')]};});_0x35da48[_0x0883('0x1b')]=_[_0x0883('0x1c')](_0xa8c242,_0x0883('0x14'));_0x35da48[_0x0883('0x1d')]=_[_0x0883('0x1e')](_0x146794[_0x0883('0x1d')]);_0x35da48[_0x0883('0x1f')]=_[_0x0883('0x20')](_0x35da48[_0x0883('0x1b')],_0x35da48['query']);_0x205435[_0x0883('0x21')]=_[_0x0883('0x20')](_0x35da48[_0x0883('0x1b')],qs[_0x0883('0x22')](_0x146794[_0x0883('0x1d')][_0x0883('0x22')]));_0x205435[_0x0883('0x21')]=_0x205435[_0x0883('0x21')]['length']?_0x205435[_0x0883('0x21')]:_0x35da48[_0x0883('0x1b')];if(!_0x146794['query'][_0x0883('0x23')](_0x0883('0x24'))){_0x205435[_0x0883('0x9')]=qs['limit'](_0x146794[_0x0883('0x1d')]['limit']);_0x205435['offset']=qs[_0x0883('0x7')](_0x146794['query'][_0x0883('0x7')]);}_0x205435[_0x0883('0x25')]=qs['sort'](_0x146794[_0x0883('0x1d')][_0x0883('0x26')]);_0x205435[_0x0883('0x27')]=qs[_0x0883('0x1f')](_[_0x0883('0x28')](_0x146794[_0x0883('0x1d')],_0x35da48[_0x0883('0x1f')]),_0xa8c242);if(_0x146794['query'][_0x0883('0x29')]){_0x205435[_0x0883('0x27')]=_[_0x0883('0x2a')](_0x205435[_0x0883('0x27')],{'$or':_[_0x0883('0x1c')](_0xa8c242,function(_0x4e0009){if(_0x4e0009['type']!==_0x0883('0x2b')){var _0x4e9900={};_0x4e9900[_0x4e0009[_0x0883('0x14')]]={'$like':'%'+_0x146794[_0x0883('0x1d')][_0x0883('0x29')]+'%'};return _0x4e9900;}})});}_0x205435=_[_0x0883('0x2a')]({},_0x205435,_0x146794[_0x0883('0x2c')]);var _0x35de32={'where':_0x205435[_0x0883('0x27')]};return db[_0x0883('0x16')][_0x0883('0xa')](_0x35de32)[_0x0883('0xf')](function(_0x43c7b3){_0x468c79[_0x0883('0xa')]=_0x43c7b3;if(_0x146794[_0x0883('0x1d')][_0x0883('0x2d')]){_0x205435[_0x0883('0x2e')]=[{'all':!![]}];}return db[_0x0883('0x16')][_0x0883('0x2f')](_0x205435);})[_0x0883('0xf')](function(_0x486740){_0x468c79[_0x0883('0x30')]=_0x486740;return _0x468c79;})['then'](respondWithFilteredResult(_0x473341,_0x205435))[_0x0883('0x31')](handleError(_0x473341,null));};exports[_0x0883('0x32')]=function(_0x1b6a91,_0x204b49){var _0x1f15cc={'raw':![],'where':{'id':_0x1b6a91[_0x0883('0x33')]['id']}},_0x41d2e0={};_0x41d2e0['model']=_[_0x0883('0x1e')](db[_0x0883('0x16')][_0x0883('0x17')]);_0x41d2e0['query']=_[_0x0883('0x1e')](_0x1b6a91['query']);_0x41d2e0[_0x0883('0x1f')]=_[_0x0883('0x20')](_0x41d2e0['model'],_0x41d2e0[_0x0883('0x1d')]);_0x1f15cc[_0x0883('0x21')]=_[_0x0883('0x20')](_0x41d2e0['model'],qs['fields'](_0x1b6a91[_0x0883('0x1d')][_0x0883('0x22')]));_0x1f15cc[_0x0883('0x21')]=_0x1f15cc[_0x0883('0x21')][_0x0883('0x34')]?_0x1f15cc[_0x0883('0x21')]:_0x41d2e0[_0x0883('0x1b')];if(_0x1b6a91[_0x0883('0x1d')]['includeAll']){_0x1f15cc[_0x0883('0x2e')]=[{'all':!![]}];}_0x1f15cc=_[_0x0883('0x2a')]({},_0x1f15cc,_0x1b6a91['options']);return db[_0x0883('0x16')][_0x0883('0x35')](_0x1f15cc)['then'](handleEntityNotFound(_0x204b49,null))['then'](respondWithResult(_0x204b49,null))['catch'](handleError(_0x204b49,null));};exports[_0x0883('0x36')]=function(_0x34bc19,_0x39d29d){return db[_0x0883('0x16')]['create'](_0x34bc19[_0x0883('0x37')],{})[_0x0883('0xf')](respondWithResult(_0x39d29d,0xc9))[_0x0883('0x31')](handleError(_0x39d29d,null));};exports['update']=function(_0x5160a5,_0x3cc1f3){if(_0x5160a5['body']['id']){delete _0x5160a5[_0x0883('0x37')]['id'];}return db[_0x0883('0x16')]['find']({'where':{'id':_0x5160a5[_0x0883('0x33')]['id']}})[_0x0883('0xf')](handleEntityNotFound(_0x3cc1f3,null))[_0x0883('0xf')](saveUpdates(_0x5160a5['body'],null))[_0x0883('0xf')](respondWithResult(_0x3cc1f3,null))[_0x0883('0x31')](handleError(_0x3cc1f3,null));};exports[_0x0883('0xe')]=function(_0x6b5ddc,_0x405ba7){return db['Dynamics365Account']['find']({'where':{'id':_0x6b5ddc[_0x0883('0x33')]['id']}})['then'](handleEntityNotFound(_0x405ba7,null))[_0x0883('0xf')](removeEntity(_0x405ba7,null))[_0x0883('0x31')](handleError(_0x405ba7,null));};exports[_0x0883('0x38')]=function(_0x23cd0e,_0x2baef3){var _0xf551f3={};var _0x5f0200={};var _0x5d646d;var _0x339841;return db[_0x0883('0x16')][_0x0883('0x39')]({'where':{'id':_0x23cd0e[_0x0883('0x33')]['id']}})[_0x0883('0xf')](handleEntityNotFound(_0x2baef3,null))[_0x0883('0xf')](function(_0x5e7cd9){if(_0x5e7cd9){_0x5d646d=_0x5e7cd9;_0x5f0200[_0x0883('0x1b')]=_[_0x0883('0x1e')](db['Dynamics365Configuration'][_0x0883('0x17')]);_0x5f0200['query']=_['keys'](_0x23cd0e[_0x0883('0x1d')]);_0x5f0200['filters']=_['intersection'](_0x5f0200[_0x0883('0x1b')],_0x5f0200['query']);_0xf551f3[_0x0883('0x21')]=_[_0x0883('0x20')](_0x5f0200[_0x0883('0x1b')],qs[_0x0883('0x22')](_0x23cd0e[_0x0883('0x1d')][_0x0883('0x22')]));_0xf551f3['attributes']=_0xf551f3[_0x0883('0x21')]['length']?_0xf551f3['attributes']:_0x5f0200[_0x0883('0x1b')];_0xf551f3[_0x0883('0x25')]=qs[_0x0883('0x26')](_0x23cd0e['query'][_0x0883('0x26')]);_0xf551f3[_0x0883('0x27')]=qs['filters'](_[_0x0883('0x28')](_0x23cd0e[_0x0883('0x1d')],_0x5f0200[_0x0883('0x1f')]));if(_0x23cd0e[_0x0883('0x1d')][_0x0883('0x29')]){_0xf551f3[_0x0883('0x27')]=_[_0x0883('0x2a')](_0xf551f3[_0x0883('0x27')],{'$or':_['map'](_0xf551f3[_0x0883('0x21')],function(_0x13e096){var _0x425f83={};_0x425f83[_0x13e096]={'$like':'%'+_0x23cd0e['query']['filter']+'%'};return _0x425f83;})});}_0xf551f3=_[_0x0883('0x2a')]({},_0xf551f3,_0x23cd0e[_0x0883('0x2c')]);return _0x5d646d[_0x0883('0x38')](_0xf551f3);}})[_0x0883('0xf')](function(_0x510a39){if(_0x510a39){_0x339841=_0x510a39[_0x0883('0x34')];if(!_0x23cd0e[_0x0883('0x1d')][_0x0883('0x23')](_0x0883('0x24'))){_0xf551f3[_0x0883('0x9')]=qs['limit'](_0x23cd0e[_0x0883('0x1d')][_0x0883('0x9')]);_0xf551f3['offset']=qs[_0x0883('0x7')](_0x23cd0e[_0x0883('0x1d')][_0x0883('0x7')]);}return _0x5d646d['getConfigurations'](_0xf551f3);}})[_0x0883('0xf')](function(_0x4bc02c){if(_0x4bc02c){return _0x4bc02c?{'count':_0x339841,'rows':_0x4bc02c}:null;}})[_0x0883('0xf')](respondWithResult(_0x2baef3,null))['catch'](handleError(_0x2baef3,null));};exports[_0x0883('0x3a')]=function(_0x18bba7,_0x1d3468){if(_0x18bba7[_0x0883('0x37')]['id']){delete _0x18bba7[_0x0883('0x37')]['id'];}return db[_0x0883('0x16')][_0x0883('0x39')]({'where':{'id':_0x18bba7[_0x0883('0x33')]['id']}})[_0x0883('0xf')](handleEntityNotFound(_0x1d3468,null))[_0x0883('0xf')](function(_0x352956){if(_0x352956){_0x18bba7['body'][_0x0883('0x3b')]=_0x352956['id'];_0x18bba7[_0x0883('0x37')][_0x0883('0x3c')]=integrations[_0x0883('0x3d')](_0x18bba7['body'][_0x0883('0x3e')],_0x18bba7[_0x0883('0x37')][_0x0883('0x19')]);_0x18bba7['body'][_0x0883('0x3f')]=integrations['getDescriptions'](_0x18bba7[_0x0883('0x37')][_0x0883('0x3e')],_0x18bba7[_0x0883('0x37')][_0x0883('0x19')]);return db[_0x0883('0x40')][_0x0883('0x36')](_0x18bba7[_0x0883('0x37')],{'include':[{'model':db[_0x0883('0x41')],'as':_0x0883('0x3c')},{'model':db[_0x0883('0x41')],'as':_0x0883('0x3f')}]});}return null;})[_0x0883('0xf')](respondWithResult(_0x1d3468,null))['catch'](handleError(_0x1d3468,null));};function sanitizeRemoteUri(_0x3e0acd){var _0x577f10=_0x3e0acd[_0x0883('0x42')](-0x1);if(_0x577f10==='/')return _0x3e0acd[_0x0883('0x43')](0x0,_0x3e0acd[_0x0883('0x44')](_0x577f10));return _0x3e0acd;}function getWebApiUrl(_0xd31eb1){return util[_0x0883('0x45')](_0x0883('0x46'),_0xd31eb1);}exports['getFields']=function(_0x4f0b25,_0x2f3b79){var _0x2d2fa8=_0x4f0b25[_0x0883('0x1d')]['ticketType'];var _0x1f3aae=_0x2d2fa8===_0x0883('0x47')?'Incident':'PhoneCall';var _0x304ebd='';var _0x12b35a='';var _0x48f617='';var _0xce7ffb='';var _0x266fe1='';var _0x369cff='';var _0x212f69='';var _0x215dfc='';var _0x3f7176=[_0x0883('0x48'),_0x0883('0x49'),_0x0883('0x4a'),'ownerid',_0x0883('0x4b'),_0x0883('0x4c'),'phonenumber',_0x0883('0x4d'),_0x0883('0x4e'),_0x0883('0x4f')];var _0x5b84c7=[_0x0883('0x50'),_0x0883('0x51'),_0x0883('0x52'),'billedserviceunits','contactidname',_0x0883('0x53'),_0x0883('0x54'),_0x0883('0x55'),'createdbyexternalpartyname','createdbyexternalpartyyominame',_0x0883('0x56'),'createdbyyominame',_0x0883('0x57'),'createdonbehalfbyname',_0x0883('0x58'),_0x0883('0x59'),'customeridtype',_0x0883('0x5a'),'emailaddress',_0x0883('0x5b'),_0x0883('0x5c'),_0x0883('0x5d'),'escalatedon','exchangerate','firstresponsebykpiidname',_0x0883('0x5e'),_0x0883('0x5f'),_0x0883('0x60'),_0x0883('0x61'),_0x0883('0x62'),'masteridname',_0x0883('0x63'),_0x0883('0x64'),_0x0883('0x65'),'modifiedbyyominame',_0x0883('0x66'),'modifiedonbehalfbyname',_0x0883('0x67'),_0x0883('0x68'),_0x0883('0x69'),_0x0883('0x6a'),_0x0883('0x6b'),'overriddencreatedon',_0x0883('0x6c'),'owneridtype',_0x0883('0x6d'),_0x0883('0x6e'),_0x0883('0x6f'),_0x0883('0x70'),_0x0883('0x71'),'productidname','productserialnumber',_0x0883('0x72'),_0x0883('0x73'),_0x0883('0x74'),'responsiblecontactidname',_0x0883('0x75'),_0x0883('0x76'),_0x0883('0x77'),'slaname',_0x0883('0x78'),'statecode',_0x0883('0x79'),_0x0883('0x7a'),_0x0883('0x7b'),_0x0883('0x7c'),'transactioncurrencyidname',_0x0883('0x7d'),_0x0883('0x7e'),_0x0883('0x7f')];var _0x3e4ed6=_0x3f7176['concat'](_0x5b84c7);return db['Dynamics365Account'][_0x0883('0x39')]({'where':{'id':_0x4f0b25[_0x0883('0x33')]['id']},'attributes':['id',_0x0883('0x80'),_0x0883('0x81'),'remoteUri',_0x0883('0x82'),_0x0883('0x83'),_0x0883('0x84'),_0x0883('0x85')],'include':[{'model':db[_0x0883('0x86')],'as':_0x0883('0x86'),'attributes':['id',_0x0883('0x87'),_0x0883('0x88')]}]})['then'](handleEntityNotFound(_0x2f3b79,null))[_0x0883('0xf')](function(_0x2d475a){if(_0x2d475a){if(_0x2d475a[_0x0883('0x85')]){_0x2d475a['access_token']=_0x2d475a[_0x0883('0x86')][_0x0883('0x87')];_0x215dfc=sanitizeRemoteUri(_0x2d475a['CloudProvider'][_0x0883('0x88')]);_0x212f69=getWebApiUrl(_0x215dfc);return _0x2d475a;}_0x215dfc=sanitizeRemoteUri(_0x2d475a['remoteUri']);_0x212f69=getWebApiUrl(_0x215dfc);var _0x1f83c1={'method':_0x0883('0x89'),'uri':'https://login.microsoftonline.com/'+_0x2d475a[_0x0883('0x82')]+_0x0883('0x8a'),'form':{'client_id':_0x2d475a[_0x0883('0x83')],'resource':_0x215dfc,'username':_0x2d475a[_0x0883('0x80')],'password':_0x2d475a[_0x0883('0x81')],'grant_type':'password','client_secret':_0x2d475a[_0x0883('0x84')]},'json':!![]};return rp(_0x1f83c1);}})['then'](function(_0x403eac){_0x369cff=_0x403eac['access_token'];var _0x43f8b6={'method':_0x0883('0x8b'),'uri':encodeURI(_0x212f69+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x1f3aae+'\x27'),'headers':{'Authorization':_0x0883('0x8c')+_0x369cff,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x43f8b6);})['then'](function(_0x51a9d4){var _0x211b1c=_0x51a9d4[_0x0883('0x8e')][0x0];var _0x5f4326=_0x211b1c[_0x0883('0x8f')];var _0x101f45={'method':_0x0883('0x8b'),'uri':_0x212f69+_0x0883('0x90')+_0x5f4326+_0x0883('0x91'),'headers':{'Authorization':_0x0883('0x8c')+_0x369cff,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x101f45);})[_0x0883('0xf')](function(_0x9c2894){_0x304ebd=_0x9c2894;_0x12b35a=_0x304ebd[_0x0883('0x92')];_0x12b35a=_['remove'](_0x12b35a,function(_0x18c04c){return!_0x3e4ed6[_0x0883('0x93')](_0x18c04c[_0x0883('0x94')]);});var _0x2998fa=[];var _0x518f75=[];_0x12b35a['forEach'](function(_0x513af3){if(_0x513af3[_0x0883('0x95')]){var _0x2d72ae=_0x513af3[_0x0883('0x95')][_0x0883('0x43')](_0x513af3[_0x0883('0x95')][_0x0883('0x44')]('.')+0x1);if(_0x2d72ae==='PicklistAttributeMetadata'){_0x2998fa[_0x0883('0x96')](getSelectList(_0x212f69,_0x2d2fa8,_0x518f75,_0x304ebd[_0x0883('0x8f')],_0x513af3[_0x0883('0x8f')],_0x369cff));}}});return Promise[_0x0883('0x97')](_0x2998fa);})[_0x0883('0xf')](function(_0x21b361){_0x48f617=_0x21b361[0x0];var _0x311bc4=[];var _0x3d7df0=[];_0x12b35a[_0x0883('0x98')](function(_0x9efcfb){if(!_[_0x0883('0x99')](_0x9efcfb[_0x0883('0x95')])){var _0x2c14f2=_0x9efcfb['@odata.type'][_0x0883('0x43')](_0x9efcfb[_0x0883('0x95')][_0x0883('0x44')]('.')+0x1);if(_0x2c14f2==='BooleanAttributeMetadata'){_0x311bc4[_0x0883('0x96')](getBooleanList(_0x212f69,_0x2d2fa8,_0x3d7df0,_0x304ebd[_0x0883('0x8f')],_0x9efcfb[_0x0883('0x8f')],_0x369cff));}}});return Promise['all'](_0x311bc4);})['then'](function(_0x44c405){_0xce7ffb=_0x44c405[0x0];var _0x5302a0=[];var _0xf07fac=[];_0x12b35a[_0x0883('0x98')](function(_0x56fd1e){if(_0x56fd1e[_0x0883('0x95')]){var _0x190a1f=_0x56fd1e['@odata.type'][_0x0883('0x43')](_0x56fd1e[_0x0883('0x95')]['lastIndexOf']('.')+0x1);if(_0x190a1f==='StringAttributeMetadata'||_0x190a1f==='DoubleAttributeMetadata'||_0x190a1f===_0x0883('0x9a')||_0x190a1f===_0x0883('0x9b')||_0x190a1f===_0x0883('0x9c')||_0x190a1f==='DateTimeAttributeMetadata'||_0x190a1f==='StatusAttributeMetadata'||_0x190a1f===_0x0883('0x9d')||_0x190a1f===_0x0883('0x9e')||_0x190a1f===_0x0883('0x9f')){_0x5302a0['push'](getInputList(_0x212f69,_0x2d2fa8,_0x190a1f,_0xf07fac,_0x304ebd[_0x0883('0x8f')],_0x56fd1e[_0x0883('0x8f')],_0x369cff));}}});return Promise[_0x0883('0x97')](_0x5302a0);})[_0x0883('0xf')](function(_0x5e7b6b){_0x266fe1=_0x5e7b6b[0x0];var _0x69a2ef=_0x48f617[_0x0883('0xa0')](_0xce7ffb)[_0x0883('0xa0')](_0x266fe1);var _0x155ac6={'count':_0x69a2ef[_0x0883('0x34')],'rows':_0x69a2ef};return _0x155ac6;})[_0x0883('0xf')](respondWithResult(_0x2f3b79,null))[_0x0883('0x31')](function(_0x2b9637){var _0x46a4a5=_0x4f0b25[_0x0883('0x1d')][_0x0883('0xa1')]?0x1f4:_0x2b9637['statusCode']||0x1f4;logger[_0x0883('0x12')](_0x2b9637[_0x0883('0x13')]);delete _0x2b9637[_0x0883('0x14')];if(_0x46a4a5===0x191){_0x46a4a5=0x190;}_0x2f3b79[_0x0883('0xb')](_0x46a4a5)['send'](_0x4f0b25['query']['test']?{'message':_0x0883('0xa2'),'statusCode':_0x2b9637[_0x0883('0xa3')]}:_0x2b9637);});};function getSelectList(_0x4e226a,_0x5c71f4,_0x4d6162,_0x1f9e80,_0x4756ed,_0x3dce8b){var _0x1ac76e={'method':_0x0883('0x8b'),'uri':_0x4e226a+_0x0883('0x90')+_0x1f9e80+_0x0883('0xa4')+_0x4756ed+_0x0883('0xa5')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x0883('0x8c')+_0x3dce8b,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x1ac76e)[_0x0883('0xf')](function(_0x526e4b){var _0x2112fe=[];var _0x1d455f=_0x526e4b['OptionSet'][_0x0883('0xa6')];_0x1d455f[_0x0883('0x98')](function(_0x264404){_0x2112fe[_0x0883('0x96')]({'name':_0x264404[_0x0883('0xa7')][_0x0883('0xa8')]['Label'],'value':String(_0x264404['Value'])});});var _0x242147={'id':_0x5c71f4+'_'+_0x526e4b[_0x0883('0x94')],'name':_0x526e4b[_0x0883('0xa9')][_0x0883('0xa8')][_0x0883('0xa7')],'custom':![],'options':_0x2112fe};_0x4d6162[_0x0883('0x96')](_0x242147);return _0x4d6162;});}function getBooleanList(_0x384aab,_0x40be35,_0x141202,_0x146bcf,_0x4d8a93,_0x5b04fc){var _0x576cba={'method':'GET','uri':_0x384aab+_0x0883('0x90')+_0x146bcf+_0x0883('0xa4')+_0x4d8a93+_0x0883('0xaa'),'headers':{'Authorization':_0x0883('0x8c')+_0x5b04fc,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x576cba)[_0x0883('0xf')](function(_0x275004){var _0x1f7bf0=[];_0x1f7bf0['push']({'name':_0x275004[_0x0883('0xab')][_0x0883('0xac')][_0x0883('0xa7')][_0x0883('0xa8')][_0x0883('0xa7')],'value':_0x0883('0xad')},{'name':_0x275004['OptionSet'][_0x0883('0xae')][_0x0883('0xa7')][_0x0883('0xa8')][_0x0883('0xa7')],'value':_0x0883('0xaf')});var _0x47e6ce={'id':_0x40be35+'_'+_0x275004[_0x0883('0x94')],'name':_0x275004[_0x0883('0xa9')][_0x0883('0xa8')][_0x0883('0xa7')],'custom':![],'options':_0x1f7bf0};_0x141202[_0x0883('0x96')](_0x47e6ce);return _0x141202;});}function getInputList(_0xd69705,_0x21b396,_0x30a068,_0x176277,_0x3a960d,_0x5d3a84,_0x759803){var _0x4f22ec={'method':'GET','uri':_0xd69705+_0x0883('0x90')+_0x3a960d+')/Attributes('+_0x5d3a84+_0x0883('0xb0')+_0x30a068+_0x0883('0xb1'),'headers':{'Authorization':_0x0883('0x8c')+_0x759803,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x4f22ec)['then'](function(_0x35b7a1){var _0x47c9dd={'id':_0x21b396+'_'+_0x35b7a1['LogicalName'],'name':_0x35b7a1[_0x0883('0xa9')][_0x0883('0xa8')]?_0x35b7a1[_0x0883('0xa9')]['UserLocalizedLabel']['Label']:_0x35b7a1['LogicalName'],'custom':![],'options':[]};_0x176277['push'](_0x47c9dd);return _0x176277;});}
\ No newline at end of file
+var _0xa2a1=['owneridtype','owneridyominame','primarycontactidname','primarycontactidyominame','prioritycodename','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','password','remoteUri','tenantId','clientId','clientSecret','CloudProvider','data5','modernAuthentication','access_token','data7','POST','https://login.microsoftonline.com/','/oauth2/token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','EntityDefinitions(','includes','LogicalName','forEach','@odata.type','substring','lastIndexOf','push','MetadataId','all','isNil','StringAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','Value','OptionSet','TrueOption','true','FalseOption','false','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','util','../../components/parsers/qs','../../config/logger','api','status','offset','undefined','count','json','update','then','destroy','end','sendStatus','error','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','limit','order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','options','find','create','body','findOne','Dynamics365Configuration','sort','getConfigurations','addConfiguration','AccountId','getSubjects','channel','getDescriptions','Dynamics365Field','Subjects','slice','format','getFields','ticketType','incident','title','ownerid','caseorigincode','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','followupby','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','msdyn_incidenttypename','numberofchildincidents','onholdtime','overriddencreatedon','owneridname'];(function(_0x353fac,_0x3d443c){var _0x512e32=function(_0x1757e1){while(--_0x1757e1){_0x353fac['push'](_0x353fac['shift']());}};_0x512e32(++_0x3d443c);}(_0xa2a1,0x1b5));var _0x1a2a=function(_0x28b494,_0x347342){_0x28b494=_0x28b494-0x0;var _0xf49ae4=_0xa2a1[_0x28b494];return _0xf49ae4;};'use strict';var rp=require('request-promise');var util=require(_0x1a2a('0x0'));var _=require('lodash');var qs=require(_0x1a2a('0x1'));var logger=require(_0x1a2a('0x2'))(_0x1a2a('0x3'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0x504278,_0xcd1533){_0xcd1533=_0xcd1533||0xc8;return function(_0x5d2acb){if(_0x5d2acb){return _0x504278[_0x1a2a('0x4')](_0xcd1533)['json'](_0x5d2acb);}};}function respondWithFilteredResult(_0x82d075,_0xb8794a){return function(_0x413ebd){if(_0x413ebd){var _0x400750=typeof _0xb8794a[_0x1a2a('0x5')]===_0x1a2a('0x6')&&typeof _0xb8794a['limit']===_0x1a2a('0x6');var _0xe6925a=_0x413ebd[_0x1a2a('0x7')];var _0x5a8646=_0x400750?0x0:_0xb8794a[_0x1a2a('0x5')];var _0x5f2859=_0x400750?_0x413ebd[_0x1a2a('0x7')]:_0xb8794a['offset']+_0xb8794a['limit'];var _0x191581;if(_0x5f2859>=_0xe6925a){_0x5f2859=_0xe6925a;_0x191581=0xc8;}else{_0x191581=0xce;}_0x82d075[_0x1a2a('0x4')](_0x191581);return _0x82d075['set']('Content-Range',_0x5a8646+'-'+_0x5f2859+'/'+_0xe6925a)[_0x1a2a('0x8')](_0x413ebd);}return null;};}function saveUpdates(_0xd28cde){return function(_0x2af453){if(_0x2af453){return _0x2af453[_0x1a2a('0x9')](_0xd28cde)[_0x1a2a('0xa')](function(_0x491ae4){return _0x491ae4;});}return null;};}function removeEntity(_0xad9f36){return function(_0x26a933){if(_0x26a933){return _0x26a933[_0x1a2a('0xb')]()[_0x1a2a('0xa')](function(){_0xad9f36[_0x1a2a('0x4')](0xcc)[_0x1a2a('0xc')]();});}};}function handleEntityNotFound(_0x3323e1){return function(_0x28f2ea){if(!_0x28f2ea){_0x3323e1[_0x1a2a('0xd')](0x194);}return _0x28f2ea;};}function handleError(_0x514ca7,_0x795441){_0x795441=_0x795441||0x1f4;return function(_0x54f6be){logger[_0x1a2a('0xe')](_0x54f6be['stack']);if(_0x54f6be['name']){delete _0x54f6be[_0x1a2a('0xf')];}_0x514ca7['status'](_0x795441)[_0x1a2a('0x10')](_0x54f6be);};}exports[_0x1a2a('0x11')]=function(_0x57b3dc,_0xa06b75){var _0x54bb0c={},_0x39c121={},_0x5a9bfb={'count':0x0,'rows':[]};var _0x416ddf=_[_0x1a2a('0x12')](db[_0x1a2a('0x13')][_0x1a2a('0x14')],function(_0x126984){return{'name':_0x126984[_0x1a2a('0x15')],'type':_0x126984[_0x1a2a('0x16')][_0x1a2a('0x17')]};});_0x39c121[_0x1a2a('0x18')]=_[_0x1a2a('0x12')](_0x416ddf,'name');_0x39c121['query']=_['keys'](_0x57b3dc[_0x1a2a('0x19')]);_0x39c121[_0x1a2a('0x1a')]=_[_0x1a2a('0x1b')](_0x39c121['model'],_0x39c121[_0x1a2a('0x19')]);_0x54bb0c['attributes']=_[_0x1a2a('0x1b')](_0x39c121[_0x1a2a('0x18')],qs[_0x1a2a('0x1c')](_0x57b3dc[_0x1a2a('0x19')][_0x1a2a('0x1c')]));_0x54bb0c[_0x1a2a('0x1d')]=_0x54bb0c[_0x1a2a('0x1d')][_0x1a2a('0x1e')]?_0x54bb0c[_0x1a2a('0x1d')]:_0x39c121[_0x1a2a('0x18')];if(!_0x57b3dc[_0x1a2a('0x19')][_0x1a2a('0x1f')]('nolimit')){_0x54bb0c[_0x1a2a('0x20')]=qs['limit'](_0x57b3dc[_0x1a2a('0x19')][_0x1a2a('0x20')]);_0x54bb0c[_0x1a2a('0x5')]=qs['offset'](_0x57b3dc[_0x1a2a('0x19')][_0x1a2a('0x5')]);}_0x54bb0c[_0x1a2a('0x21')]=qs['sort'](_0x57b3dc[_0x1a2a('0x19')]['sort']);_0x54bb0c[_0x1a2a('0x22')]=qs['filters'](_[_0x1a2a('0x23')](_0x57b3dc[_0x1a2a('0x19')],_0x39c121[_0x1a2a('0x1a')]),_0x416ddf);if(_0x57b3dc[_0x1a2a('0x19')][_0x1a2a('0x24')]){_0x54bb0c[_0x1a2a('0x22')]=_[_0x1a2a('0x25')](_0x54bb0c['where'],{'$or':_[_0x1a2a('0x12')](_0x416ddf,function(_0x16ff45){if(_0x16ff45[_0x1a2a('0x16')]!==_0x1a2a('0x26')){var _0x349fb7={};_0x349fb7[_0x16ff45[_0x1a2a('0xf')]]={'$like':'%'+_0x57b3dc[_0x1a2a('0x19')][_0x1a2a('0x24')]+'%'};return _0x349fb7;}})});}_0x54bb0c=_[_0x1a2a('0x25')]({},_0x54bb0c,_0x57b3dc['options']);var _0x573019={'where':_0x54bb0c[_0x1a2a('0x22')]};return db[_0x1a2a('0x13')][_0x1a2a('0x7')](_0x573019)[_0x1a2a('0xa')](function(_0x27d0d6){_0x5a9bfb['count']=_0x27d0d6;if(_0x57b3dc[_0x1a2a('0x19')][_0x1a2a('0x27')]){_0x54bb0c[_0x1a2a('0x28')]=[{'all':!![]}];}return db[_0x1a2a('0x13')][_0x1a2a('0x29')](_0x54bb0c);})[_0x1a2a('0xa')](function(_0xe06528){_0x5a9bfb['rows']=_0xe06528;return _0x5a9bfb;})[_0x1a2a('0xa')](respondWithFilteredResult(_0xa06b75,_0x54bb0c))[_0x1a2a('0x2a')](handleError(_0xa06b75,null));};exports[_0x1a2a('0x2b')]=function(_0xee0423,_0x1c106f){var _0x418b52={'raw':![],'where':{'id':_0xee0423[_0x1a2a('0x2c')]['id']}},_0x23db5b={};_0x23db5b[_0x1a2a('0x18')]=_[_0x1a2a('0x2d')](db['Dynamics365Account'][_0x1a2a('0x14')]);_0x23db5b[_0x1a2a('0x19')]=_[_0x1a2a('0x2d')](_0xee0423[_0x1a2a('0x19')]);_0x23db5b['filters']=_[_0x1a2a('0x1b')](_0x23db5b[_0x1a2a('0x18')],_0x23db5b[_0x1a2a('0x19')]);_0x418b52[_0x1a2a('0x1d')]=_[_0x1a2a('0x1b')](_0x23db5b[_0x1a2a('0x18')],qs[_0x1a2a('0x1c')](_0xee0423[_0x1a2a('0x19')][_0x1a2a('0x1c')]));_0x418b52['attributes']=_0x418b52[_0x1a2a('0x1d')][_0x1a2a('0x1e')]?_0x418b52[_0x1a2a('0x1d')]:_0x23db5b['model'];if(_0xee0423[_0x1a2a('0x19')]['includeAll']){_0x418b52[_0x1a2a('0x28')]=[{'all':!![]}];}_0x418b52=_[_0x1a2a('0x25')]({},_0x418b52,_0xee0423[_0x1a2a('0x2e')]);return db[_0x1a2a('0x13')][_0x1a2a('0x2f')](_0x418b52)[_0x1a2a('0xa')](handleEntityNotFound(_0x1c106f,null))[_0x1a2a('0xa')](respondWithResult(_0x1c106f,null))['catch'](handleError(_0x1c106f,null));};exports[_0x1a2a('0x30')]=function(_0xc6e7d6,_0x53a8ec){return db['Dynamics365Account']['create'](_0xc6e7d6[_0x1a2a('0x31')],{})[_0x1a2a('0xa')](respondWithResult(_0x53a8ec,0xc9))[_0x1a2a('0x2a')](handleError(_0x53a8ec,null));};exports[_0x1a2a('0x9')]=function(_0x5c2948,_0x3cc9b2){if(_0x5c2948[_0x1a2a('0x31')]['id']){delete _0x5c2948[_0x1a2a('0x31')]['id'];}return db['Dynamics365Account'][_0x1a2a('0x2f')]({'where':{'id':_0x5c2948[_0x1a2a('0x2c')]['id']}})[_0x1a2a('0xa')](handleEntityNotFound(_0x3cc9b2,null))[_0x1a2a('0xa')](saveUpdates(_0x5c2948[_0x1a2a('0x31')],null))['then'](respondWithResult(_0x3cc9b2,null))[_0x1a2a('0x2a')](handleError(_0x3cc9b2,null));};exports['destroy']=function(_0x1e3503,_0x8645b1){return db[_0x1a2a('0x13')][_0x1a2a('0x2f')]({'where':{'id':_0x1e3503[_0x1a2a('0x2c')]['id']}})['then'](handleEntityNotFound(_0x8645b1,null))['then'](removeEntity(_0x8645b1,null))[_0x1a2a('0x2a')](handleError(_0x8645b1,null));};exports['getConfigurations']=function(_0xdf752d,_0x1e0b31){var _0x48896b={};var _0x4e92b6={};var _0x5a72fd;var _0x17c122;return db['Dynamics365Account'][_0x1a2a('0x32')]({'where':{'id':_0xdf752d[_0x1a2a('0x2c')]['id']}})['then'](handleEntityNotFound(_0x1e0b31,null))[_0x1a2a('0xa')](function(_0x5dfbc3){if(_0x5dfbc3){_0x5a72fd=_0x5dfbc3;_0x4e92b6[_0x1a2a('0x18')]=_['keys'](db[_0x1a2a('0x33')][_0x1a2a('0x14')]);_0x4e92b6[_0x1a2a('0x19')]=_['keys'](_0xdf752d[_0x1a2a('0x19')]);_0x4e92b6['filters']=_[_0x1a2a('0x1b')](_0x4e92b6[_0x1a2a('0x18')],_0x4e92b6['query']);_0x48896b['attributes']=_[_0x1a2a('0x1b')](_0x4e92b6[_0x1a2a('0x18')],qs['fields'](_0xdf752d[_0x1a2a('0x19')][_0x1a2a('0x1c')]));_0x48896b[_0x1a2a('0x1d')]=_0x48896b[_0x1a2a('0x1d')][_0x1a2a('0x1e')]?_0x48896b[_0x1a2a('0x1d')]:_0x4e92b6[_0x1a2a('0x18')];_0x48896b['order']=qs[_0x1a2a('0x34')](_0xdf752d[_0x1a2a('0x19')]['sort']);_0x48896b[_0x1a2a('0x22')]=qs['filters'](_[_0x1a2a('0x23')](_0xdf752d[_0x1a2a('0x19')],_0x4e92b6[_0x1a2a('0x1a')]));if(_0xdf752d[_0x1a2a('0x19')][_0x1a2a('0x24')]){_0x48896b[_0x1a2a('0x22')]=_['merge'](_0x48896b[_0x1a2a('0x22')],{'$or':_['map'](_0x48896b[_0x1a2a('0x1d')],function(_0x514639){var _0x11542e={};_0x11542e[_0x514639]={'$like':'%'+_0xdf752d['query'][_0x1a2a('0x24')]+'%'};return _0x11542e;})});}_0x48896b=_[_0x1a2a('0x25')]({},_0x48896b,_0xdf752d['options']);return _0x5a72fd['getConfigurations'](_0x48896b);}})['then'](function(_0x25585a){if(_0x25585a){_0x17c122=_0x25585a[_0x1a2a('0x1e')];if(!_0xdf752d['query']['hasOwnProperty']('nolimit')){_0x48896b[_0x1a2a('0x20')]=qs[_0x1a2a('0x20')](_0xdf752d[_0x1a2a('0x19')]['limit']);_0x48896b[_0x1a2a('0x5')]=qs['offset'](_0xdf752d['query'][_0x1a2a('0x5')]);}return _0x5a72fd[_0x1a2a('0x35')](_0x48896b);}})[_0x1a2a('0xa')](function(_0x12c770){if(_0x12c770){return _0x12c770?{'count':_0x17c122,'rows':_0x12c770}:null;}})[_0x1a2a('0xa')](respondWithResult(_0x1e0b31,null))[_0x1a2a('0x2a')](handleError(_0x1e0b31,null));};exports[_0x1a2a('0x36')]=function(_0x307b73,_0x326137){if(_0x307b73['body']['id']){delete _0x307b73['body']['id'];}return db[_0x1a2a('0x13')][_0x1a2a('0x32')]({'where':{'id':_0x307b73[_0x1a2a('0x2c')]['id']}})[_0x1a2a('0xa')](handleEntityNotFound(_0x326137,null))[_0x1a2a('0xa')](function(_0x13ad77){if(_0x13ad77){_0x307b73['body'][_0x1a2a('0x37')]=_0x13ad77['id'];_0x307b73['body']['Subjects']=integrations[_0x1a2a('0x38')](_0x307b73[_0x1a2a('0x31')][_0x1a2a('0x39')],_0x307b73[_0x1a2a('0x31')]['type']);_0x307b73['body']['Descriptions']=integrations[_0x1a2a('0x3a')](_0x307b73[_0x1a2a('0x31')]['channel'],_0x307b73[_0x1a2a('0x31')][_0x1a2a('0x16')]);return db[_0x1a2a('0x33')]['create'](_0x307b73[_0x1a2a('0x31')],{'include':[{'model':db[_0x1a2a('0x3b')],'as':_0x1a2a('0x3c')},{'model':db[_0x1a2a('0x3b')],'as':'Descriptions'}]});}return null;})[_0x1a2a('0xa')](respondWithResult(_0x326137,null))['catch'](handleError(_0x326137,null));};function sanitizeRemoteUri(_0x5a7d3d){var _0x55a1bb=_0x5a7d3d[_0x1a2a('0x3d')](-0x1);if(_0x55a1bb==='/')return _0x5a7d3d['substring'](0x0,_0x5a7d3d['lastIndexOf'](_0x55a1bb));return _0x5a7d3d;}function getWebApiUrl(_0x1d0a18){return util[_0x1a2a('0x3e')]('%s/api/data/v9.0/',_0x1d0a18);}exports[_0x1a2a('0x3f')]=function(_0x5ce87b,_0x15a3b4){var _0xdd9d52=_0x5ce87b[_0x1a2a('0x19')][_0x1a2a('0x40')];var _0x2af71a=_0xdd9d52===_0x1a2a('0x41')?'Incident':'PhoneCall';var _0x3b1abb='';var _0x22b637='';var _0x33e616='';var _0x26c2a5='';var _0x4b7fef='';var _0x3cb05b='';var _0x4e4f4b='';var _0xda05a1='';var _0x444d63=[_0x1a2a('0x42'),'description','customerid',_0x1a2a('0x43'),_0x1a2a('0x44'),'subject',_0x1a2a('0x45'),_0x1a2a('0x46'),_0x1a2a('0x47'),_0x1a2a('0x48')];var _0x4bfb33=[_0x1a2a('0x49'),_0x1a2a('0x4a'),_0x1a2a('0x4b'),_0x1a2a('0x4c'),_0x1a2a('0x4d'),_0x1a2a('0x4e'),_0x1a2a('0x4f'),'contractidname',_0x1a2a('0x50'),_0x1a2a('0x51'),'createdbyname',_0x1a2a('0x52'),_0x1a2a('0x53'),_0x1a2a('0x54'),_0x1a2a('0x55'),_0x1a2a('0x56'),_0x1a2a('0x57'),_0x1a2a('0x58'),_0x1a2a('0x59'),'entitlementidname',_0x1a2a('0x5a'),_0x1a2a('0x5b'),_0x1a2a('0x5c'),_0x1a2a('0x5d'),'firstresponsebykpiidname',_0x1a2a('0x5e'),'importsequencenumber','influencescore',_0x1a2a('0x5f'),_0x1a2a('0x60'),_0x1a2a('0x61'),'modifiedbyexternalpartyname',_0x1a2a('0x62'),_0x1a2a('0x63'),_0x1a2a('0x64'),'modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0x1a2a('0x65'),'msdyn_iotalertname',_0x1a2a('0x66'),_0x1a2a('0x67'),_0x1a2a('0x68'),_0x1a2a('0x69'),_0x1a2a('0x6a'),_0x1a2a('0x6b'),'parentcaseidname',_0x1a2a('0x6c'),_0x1a2a('0x6d'),_0x1a2a('0x6e'),'productidname',_0x1a2a('0x6f'),_0x1a2a('0x70'),_0x1a2a('0x71'),_0x1a2a('0x72'),_0x1a2a('0x73'),_0x1a2a('0x74'),_0x1a2a('0x75'),_0x1a2a('0x76'),_0x1a2a('0x77'),_0x1a2a('0x78'),'statecode',_0x1a2a('0x79'),'subjectidname',_0x1a2a('0x7a'),_0x1a2a('0x7b'),_0x1a2a('0x7c'),_0x1a2a('0x7d'),_0x1a2a('0x7e'),_0x1a2a('0x7f')];var _0x180272=_0x444d63[_0x1a2a('0x80')](_0x4bfb33);return db[_0x1a2a('0x13')]['findOne']({'where':{'id':_0x5ce87b[_0x1a2a('0x2c')]['id']},'attributes':['id','username',_0x1a2a('0x81'),_0x1a2a('0x82'),_0x1a2a('0x83'),_0x1a2a('0x84'),_0x1a2a('0x85'),'modernAuthentication'],'include':[{'model':db['CloudProvider'],'as':_0x1a2a('0x86'),'attributes':['id',_0x1a2a('0x87'),'data7']}]})[_0x1a2a('0xa')](handleEntityNotFound(_0x15a3b4,null))[_0x1a2a('0xa')](function(_0x4eaa1e){if(_0x4eaa1e){if(_0x4eaa1e[_0x1a2a('0x88')]){_0x4eaa1e[_0x1a2a('0x89')]=_0x4eaa1e[_0x1a2a('0x86')][_0x1a2a('0x87')];_0xda05a1=sanitizeRemoteUri(_0x4eaa1e[_0x1a2a('0x86')][_0x1a2a('0x8a')]);_0x4e4f4b=getWebApiUrl(_0xda05a1);return _0x4eaa1e;}_0xda05a1=sanitizeRemoteUri(_0x4eaa1e['remoteUri']);_0x4e4f4b=getWebApiUrl(_0xda05a1);var _0x1dee44={'method':_0x1a2a('0x8b'),'uri':_0x1a2a('0x8c')+_0x4eaa1e[_0x1a2a('0x83')]+_0x1a2a('0x8d'),'form':{'client_id':_0x4eaa1e['clientId'],'resource':_0xda05a1,'username':_0x4eaa1e['username'],'password':_0x4eaa1e[_0x1a2a('0x81')],'grant_type':_0x1a2a('0x81'),'client_secret':_0x4eaa1e[_0x1a2a('0x85')]},'json':!![]};return rp(_0x1dee44);}})[_0x1a2a('0xa')](function(_0x39713f){_0x3cb05b=_0x39713f[_0x1a2a('0x89')];var _0x3ba2fc={'method':_0x1a2a('0x8e'),'uri':encodeURI(_0x4e4f4b+_0x1a2a('0x8f')+_0x2af71a+'\x27'),'headers':{'Authorization':_0x1a2a('0x90')+_0x3cb05b,'If-None-Match':null,'OData-Version':_0x1a2a('0x91')},'json':!![]};return rp(_0x3ba2fc);})[_0x1a2a('0xa')](function(_0x526ece){var _0x58c355=_0x526ece['value'][0x0];var _0x74e129=_0x58c355['MetadataId'];var _0x4b3414={'method':_0x1a2a('0x8e'),'uri':_0x4e4f4b+_0x1a2a('0x92')+_0x74e129+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x1a2a('0x90')+_0x3cb05b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4b3414);})[_0x1a2a('0xa')](function(_0x4879e6){_0x3b1abb=_0x4879e6;_0x22b637=_0x3b1abb['Attributes'];_0x22b637=_['remove'](_0x22b637,function(_0x37d6f1){return!_0x180272[_0x1a2a('0x93')](_0x37d6f1[_0x1a2a('0x94')]);});var _0x13f057=[];var _0x33c243=[];_0x22b637[_0x1a2a('0x95')](function(_0x3c101b){if(_0x3c101b[_0x1a2a('0x96')]){var _0x4e5091=_0x3c101b['@odata.type'][_0x1a2a('0x97')](_0x3c101b['@odata.type'][_0x1a2a('0x98')]('.')+0x1);if(_0x4e5091==='PicklistAttributeMetadata'){_0x13f057[_0x1a2a('0x99')](getSelectList(_0x4e4f4b,_0xdd9d52,_0x33c243,_0x3b1abb[_0x1a2a('0x9a')],_0x3c101b[_0x1a2a('0x9a')],_0x3cb05b));}}});return Promise[_0x1a2a('0x9b')](_0x13f057);})[_0x1a2a('0xa')](function(_0x2b7bb6){_0x33e616=_0x2b7bb6[0x0];var _0x40b95d=[];var _0x22d49d=[];_0x22b637[_0x1a2a('0x95')](function(_0x2c4eda){if(!_[_0x1a2a('0x9c')](_0x2c4eda[_0x1a2a('0x96')])){var _0x92ee91=_0x2c4eda[_0x1a2a('0x96')]['substring'](_0x2c4eda[_0x1a2a('0x96')][_0x1a2a('0x98')]('.')+0x1);if(_0x92ee91==='BooleanAttributeMetadata'){_0x40b95d['push'](getBooleanList(_0x4e4f4b,_0xdd9d52,_0x22d49d,_0x3b1abb[_0x1a2a('0x9a')],_0x2c4eda[_0x1a2a('0x9a')],_0x3cb05b));}}});return Promise[_0x1a2a('0x9b')](_0x40b95d);})[_0x1a2a('0xa')](function(_0x3e5da4){_0x26c2a5=_0x3e5da4[0x0];var _0x3c01cc=[];var _0x213a73=[];_0x22b637[_0x1a2a('0x95')](function(_0x48cb03){if(_0x48cb03['@odata.type']){var _0xa60f9b=_0x48cb03[_0x1a2a('0x96')]['substring'](_0x48cb03[_0x1a2a('0x96')][_0x1a2a('0x98')]('.')+0x1);if(_0xa60f9b===_0x1a2a('0x9d')||_0xa60f9b==='DoubleAttributeMetadata'||_0xa60f9b==='BigIntAttributeMetadata'||_0xa60f9b==='IntegerAttributeMetadata'||_0xa60f9b===_0x1a2a('0x9e')||_0xa60f9b===_0x1a2a('0x9f')||_0xa60f9b===_0x1a2a('0xa0')||_0xa60f9b===_0x1a2a('0xa1')||_0xa60f9b===_0x1a2a('0xa2')||_0xa60f9b===_0x1a2a('0xa3')){_0x3c01cc[_0x1a2a('0x99')](getInputList(_0x4e4f4b,_0xdd9d52,_0xa60f9b,_0x213a73,_0x3b1abb['MetadataId'],_0x48cb03[_0x1a2a('0x9a')],_0x3cb05b));}}});return Promise['all'](_0x3c01cc);})[_0x1a2a('0xa')](function(_0x1d7e88){_0x4b7fef=_0x1d7e88[0x0];var _0x1bfc58=_0x33e616[_0x1a2a('0x80')](_0x26c2a5)[_0x1a2a('0x80')](_0x4b7fef);var _0x54a6b4={'count':_0x1bfc58[_0x1a2a('0x1e')],'rows':_0x1bfc58};return _0x54a6b4;})[_0x1a2a('0xa')](respondWithResult(_0x15a3b4,null))['catch'](function(_0x55787d){var _0x1ab145=_0x5ce87b[_0x1a2a('0x19')][_0x1a2a('0xa4')]?0x1f4:_0x55787d[_0x1a2a('0xa5')]||0x1f4;logger[_0x1a2a('0xe')](_0x55787d['stack']);delete _0x55787d[_0x1a2a('0xf')];if(_0x1ab145===0x191){_0x1ab145=0x190;}_0x15a3b4[_0x1a2a('0x4')](_0x1ab145)[_0x1a2a('0x10')](_0x5ce87b[_0x1a2a('0x19')][_0x1a2a('0xa4')]?{'message':'Wrong\x20credentials','statusCode':_0x55787d[_0x1a2a('0xa5')]}:_0x55787d);});};function getSelectList(_0xef1b6,_0x3338c0,_0x4bcadb,_0x3b282e,_0x336d53,_0x4bcedf){var _0x545cc8={'method':_0x1a2a('0x8e'),'uri':_0xef1b6+_0x1a2a('0x92')+_0x3b282e+_0x1a2a('0xa6')+_0x336d53+_0x1a2a('0xa7')+_0x1a2a('0xa8'),'headers':{'Authorization':'Bearer\x20'+_0x4bcedf,'If-None-Match':null,'OData-Version':_0x1a2a('0x91')},'json':!![]};return rp(_0x545cc8)['then'](function(_0x21daa1){var _0x4f450f=[];var _0x19eac4=_0x21daa1['OptionSet'][_0x1a2a('0xa9')];_0x19eac4[_0x1a2a('0x95')](function(_0x1664d5){_0x4f450f[_0x1a2a('0x99')]({'name':_0x1664d5[_0x1a2a('0xaa')][_0x1a2a('0xab')][_0x1a2a('0xaa')],'value':String(_0x1664d5[_0x1a2a('0xac')])});});var _0x423969={'id':_0x3338c0+'_'+_0x21daa1[_0x1a2a('0x94')],'name':_0x21daa1['DisplayName'][_0x1a2a('0xab')][_0x1a2a('0xaa')],'custom':![],'options':_0x4f450f};_0x4bcadb['push'](_0x423969);return _0x4bcadb;});}function getBooleanList(_0x1faeba,_0x3d918c,_0xb2bae8,_0x21b658,_0x219454,_0x13b5f1){var _0x58a1e2={'method':_0x1a2a('0x8e'),'uri':_0x1faeba+_0x1a2a('0x92')+_0x21b658+_0x1a2a('0xa6')+_0x219454+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x1a2a('0x90')+_0x13b5f1,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x58a1e2)[_0x1a2a('0xa')](function(_0x4e6314){var _0x18249a=[];_0x18249a[_0x1a2a('0x99')]({'name':_0x4e6314[_0x1a2a('0xad')][_0x1a2a('0xae')]['Label']['UserLocalizedLabel'][_0x1a2a('0xaa')],'value':_0x1a2a('0xaf')},{'name':_0x4e6314['OptionSet'][_0x1a2a('0xb0')]['Label'][_0x1a2a('0xab')][_0x1a2a('0xaa')],'value':_0x1a2a('0xb1')});var _0x425fb8={'id':_0x3d918c+'_'+_0x4e6314['LogicalName'],'name':_0x4e6314[_0x1a2a('0xb2')][_0x1a2a('0xab')][_0x1a2a('0xaa')],'custom':![],'options':_0x18249a};_0xb2bae8['push'](_0x425fb8);return _0xb2bae8;});}function getInputList(_0x4581da,_0x1d5519,_0x42ee64,_0x64b6c9,_0x26b88a,_0x1f6ff2,_0x18cebd){var _0xa9c496={'method':_0x1a2a('0x8e'),'uri':_0x4581da+_0x1a2a('0x92')+_0x26b88a+')/Attributes('+_0x1f6ff2+_0x1a2a('0xb3')+_0x42ee64+_0x1a2a('0xb4'),'headers':{'Authorization':'Bearer\x20'+_0x18cebd,'If-None-Match':null,'OData-Version':_0x1a2a('0x91')},'json':!![]};return rp(_0xa9c496)[_0x1a2a('0xa')](function(_0x37e92e){var _0x412849={'id':_0x1d5519+'_'+_0x37e92e[_0x1a2a('0x94')],'name':_0x37e92e[_0x1a2a('0xb2')]['UserLocalizedLabel']?_0x37e92e[_0x1a2a('0xb2')][_0x1a2a('0xab')][_0x1a2a('0xaa')]:_0x37e92e[_0x1a2a('0x94')],'custom':![],'options':[]};_0x64b6c9[_0x1a2a('0x99')](_0x412849);return _0x64b6c9;});}
\ No newline at end of file
index ba5476f..aec5007 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(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_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(_0x96f67e,_0x407f26){var _0x1fb6c2=function(_0x1a70a3){while(--_0x1a70a3){_0x96f67e['push'](_0x96f67e['shift']());}};_0x1fb6c2(++_0x407f26);}(_0x757a,0xde));var _0xa757=function(_0x103752,_0x327965){_0x103752=_0x103752-0x0;var _0x174586=_0x757a[_0x103752];return _0x174586;};'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 7e488e2..bbfef72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5168=['ShowDynamics365Account','raw','where','catch','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','result','GetDynamics365Account','Dynamics365Account','findAll','options','attributes','limit','map','include','model','stringify'];(function(_0x157e72,_0x970f93){var _0x39afff=function(_0x133a9b){while(--_0x133a9b){_0x157e72['push'](_0x157e72['shift']());}};_0x39afff(++_0x970f93);}(_0x5168,0x1c4));var _0x8516=function(_0x4edf43,_0x44cbc0){_0x4edf43=_0x4edf43-0x0;var _0x2e9f98=_0x5168[_0x4edf43];return _0x2e9f98;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8516('0x0'));var BPromise=require('bluebird');var rs=require(_0x8516('0x1'));var fs=require('fs');var Redis=require(_0x8516('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8516('0x3'));var logger=require('../../config/logger')(_0x8516('0x4'));var config=require('../../config/environment');var jayson=require(_0x8516('0x5'));var client=jayson[_0x8516('0x6')][_0x8516('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x14e403,_0x5a4f76,_0x2e12a4){return new BPromise(function(_0x5160f3,_0x6ea2c1){return client['request'](_0x14e403,_0x2e12a4)[_0x8516('0x8')](function(_0x41ca69){logger[_0x8516('0x9')](_0x8516('0xa'),_0x5a4f76,_0x8516('0xb'));logger[_0x8516('0xc')](_0x8516('0xd'),_0x5a4f76,_0x8516('0xb'),JSON['stringify'](_0x41ca69));if(_0x41ca69[_0x8516('0xe')]){if(_0x41ca69[_0x8516('0xe')][_0x8516('0xf')]===0x1f4){logger[_0x8516('0xe')](_0x8516('0xa'),_0x5a4f76,_0x41ca69[_0x8516('0xe')][_0x8516('0x10')]);return _0x6ea2c1(_0x41ca69[_0x8516('0xe')][_0x8516('0x10')]);}logger['error'](_0x8516('0xa'),_0x5a4f76,_0x41ca69['error'][_0x8516('0x10')]);return _0x5160f3(_0x41ca69[_0x8516('0xe')][_0x8516('0x10')]);}else{logger['info'](_0x8516('0xa'),_0x5a4f76,'request\x20sent');_0x5160f3(_0x41ca69[_0x8516('0x11')][_0x8516('0x10')]);}})['catch'](function(_0x4227b9){logger[_0x8516('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x5a4f76,_0x4227b9);_0x6ea2c1(_0x4227b9);});});}exports[_0x8516('0x12')]=function(_0x51f138){var _0x128d8e=this;return new Promise(function(_0x3b8c24,_0x9a649d){return db[_0x8516('0x13')][_0x8516('0x14')]({'raw':_0x51f138[_0x8516('0x15')]?_0x51f138['options']['raw']===undefined?!![]:![]:!![],'where':_0x51f138['options']?_0x51f138[_0x8516('0x15')]['where']||null:null,'attributes':_0x51f138[_0x8516('0x15')]?_0x51f138[_0x8516('0x15')][_0x8516('0x16')]||null:null,'limit':_0x51f138[_0x8516('0x15')]?_0x51f138[_0x8516('0x15')][_0x8516('0x17')]||null:null,'include':_0x51f138['options']?_0x51f138[_0x8516('0x15')]['include']?_[_0x8516('0x18')](_0x51f138[_0x8516('0x15')][_0x8516('0x19')],function(_0x1f0df4){return{'model':db[_0x1f0df4[_0x8516('0x1a')]],'as':_0x1f0df4['as'],'attributes':_0x1f0df4[_0x8516('0x16')],'include':_0x1f0df4[_0x8516('0x19')]?_['map'](_0x1f0df4[_0x8516('0x19')],function(_0x144e65){return{'model':db[_0x144e65[_0x8516('0x1a')]],'as':_0x144e65['as'],'attributes':_0x144e65[_0x8516('0x16')],'include':_0x144e65[_0x8516('0x19')]?_[_0x8516('0x18')](_0x144e65[_0x8516('0x19')],function(_0x58a8cc){return{'model':db[_0x58a8cc[_0x8516('0x1a')]],'as':_0x58a8cc['as'],'attributes':_0x58a8cc['attributes']};}):[]};}):[]};}):[]:[]})[_0x8516('0x8')](function(_0x52c966){logger[_0x8516('0x9')](_0x8516('0x12'),_0x51f138);logger[_0x8516('0xc')](_0x8516('0x12'),_0x51f138,JSON[_0x8516('0x1b')](_0x52c966));_0x3b8c24(_0x52c966);})['catch'](function(_0x193bba){logger[_0x8516('0xe')](_0x8516('0x12'),_0x193bba[_0x8516('0x10')],_0x51f138);_0x9a649d(_0x128d8e['error'](0x1f4,_0x193bba[_0x8516('0x10')]));});});};exports[_0x8516('0x1c')]=function(_0x30207b){var _0x2c71da=this;return new Promise(function(_0x387825,_0x5392b6){return db['Dynamics365Account']['find']({'raw':_0x30207b[_0x8516('0x15')]?_0x30207b[_0x8516('0x15')][_0x8516('0x1d')]===undefined?!![]:![]:!![],'where':_0x30207b[_0x8516('0x15')]?_0x30207b[_0x8516('0x15')][_0x8516('0x1e')]||null:null,'attributes':_0x30207b['options']?_0x30207b[_0x8516('0x15')][_0x8516('0x16')]||null:null,'include':_0x30207b['options']?_0x30207b['options'][_0x8516('0x19')]?_[_0x8516('0x18')](_0x30207b[_0x8516('0x15')][_0x8516('0x19')],function(_0x5ad945){return{'model':db[_0x5ad945[_0x8516('0x1a')]],'as':_0x5ad945['as'],'attributes':_0x5ad945[_0x8516('0x16')],'include':_0x5ad945['include']?_[_0x8516('0x18')](_0x5ad945['include'],function(_0x4b9a0c){return{'model':db[_0x4b9a0c[_0x8516('0x1a')]],'as':_0x4b9a0c['as'],'attributes':_0x4b9a0c[_0x8516('0x16')],'include':_0x4b9a0c[_0x8516('0x19')]?_['map'](_0x4b9a0c[_0x8516('0x19')],function(_0x336af9){return{'model':db[_0x336af9['model']],'as':_0x336af9['as'],'attributes':_0x336af9[_0x8516('0x16')]};}):[]};}):[]};}):[]:[]})[_0x8516('0x8')](function(_0x1262f9){logger[_0x8516('0x9')]('ShowDynamics365Account',_0x30207b);logger['debug']('ShowDynamics365Account',_0x30207b,JSON[_0x8516('0x1b')](_0x1262f9));_0x387825(_0x1262f9);})[_0x8516('0x1f')](function(_0x41062a){logger[_0x8516('0xe')](_0x8516('0x1c'),_0x41062a[_0x8516('0x10')],_0x30207b);_0x5392b6(_0x2c71da[_0x8516('0xe')](0x1f4,_0x41062a[_0x8516('0x10')]));});});};
\ No newline at end of file
+var _0xe854=['Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','GetDynamics365Account','Dynamics365Account','options','attributes','limit','include','map','model','then','ShowDynamics365Account','find','raw','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','info'];(function(_0x401507,_0x185ff0){var _0x424a34=function(_0x20f1c1){while(--_0x20f1c1){_0x401507['push'](_0x401507['shift']());}};_0x424a34(++_0x185ff0);}(_0xe854,0xf5));var _0x4e85=function(_0x3296c3,_0xc96c4a){_0x3296c3=_0x3296c3-0x0;var _0x1fb66a=_0xe854[_0x3296c3];return _0x1fb66a;};'use strict';var _=require(_0x4e85('0x0'));var util=require(_0x4e85('0x1'));var moment=require('moment');var BPromise=require(_0x4e85('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4e85('0x3'));var db=require(_0x4e85('0x4'))['db'];var utils=require(_0x4e85('0x5'));var logger=require(_0x4e85('0x6'))('rpc');var config=require(_0x4e85('0x7'));var jayson=require(_0x4e85('0x8'));var client=jayson['client'][_0x4e85('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f1592,_0x296425,_0x363e66){return new BPromise(function(_0x20ce31,_0x7e4e2c){return client['request'](_0x2f1592,_0x363e66)['then'](function(_0x41a6d4){logger[_0x4e85('0xa')](_0x4e85('0xb'),_0x296425,'request\x20sent');logger[_0x4e85('0xc')](_0x4e85('0xd'),_0x296425,_0x4e85('0xe'),JSON[_0x4e85('0xf')](_0x41a6d4));if(_0x41a6d4[_0x4e85('0x10')]){if(_0x41a6d4['error'][_0x4e85('0x11')]===0x1f4){logger['error'](_0x4e85('0xb'),_0x296425,_0x41a6d4[_0x4e85('0x10')][_0x4e85('0x12')]);return _0x7e4e2c(_0x41a6d4[_0x4e85('0x10')][_0x4e85('0x12')]);}logger[_0x4e85('0x10')](_0x4e85('0xb'),_0x296425,_0x41a6d4[_0x4e85('0x10')][_0x4e85('0x12')]);return _0x20ce31(_0x41a6d4[_0x4e85('0x10')]['message']);}else{logger['info'](_0x4e85('0xb'),_0x296425,_0x4e85('0xe'));_0x20ce31(_0x41a6d4['result'][_0x4e85('0x12')]);}})['catch'](function(_0x357f66){logger[_0x4e85('0x10')]('Dynamics365Account,\x20%s,\x20%s',_0x296425,_0x357f66);_0x7e4e2c(_0x357f66);});});}exports[_0x4e85('0x13')]=function(_0x2f69dd){var _0x392475=this;return new Promise(function(_0x35ef18,_0x3d6759){return db[_0x4e85('0x14')]['findAll']({'raw':_0x2f69dd['options']?_0x2f69dd[_0x4e85('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x2f69dd[_0x4e85('0x15')]?_0x2f69dd[_0x4e85('0x15')]['where']||null:null,'attributes':_0x2f69dd[_0x4e85('0x15')]?_0x2f69dd[_0x4e85('0x15')][_0x4e85('0x16')]||null:null,'limit':_0x2f69dd[_0x4e85('0x15')]?_0x2f69dd[_0x4e85('0x15')][_0x4e85('0x17')]||null:null,'include':_0x2f69dd[_0x4e85('0x15')]?_0x2f69dd['options'][_0x4e85('0x18')]?_[_0x4e85('0x19')](_0x2f69dd[_0x4e85('0x15')]['include'],function(_0x5a18c7){return{'model':db[_0x5a18c7[_0x4e85('0x1a')]],'as':_0x5a18c7['as'],'attributes':_0x5a18c7[_0x4e85('0x16')],'include':_0x5a18c7[_0x4e85('0x18')]?_[_0x4e85('0x19')](_0x5a18c7[_0x4e85('0x18')],function(_0x519c91){return{'model':db[_0x519c91[_0x4e85('0x1a')]],'as':_0x519c91['as'],'attributes':_0x519c91[_0x4e85('0x16')],'include':_0x519c91['include']?_[_0x4e85('0x19')](_0x519c91[_0x4e85('0x18')],function(_0x17248b){return{'model':db[_0x17248b[_0x4e85('0x1a')]],'as':_0x17248b['as'],'attributes':_0x17248b['attributes']};}):[]};}):[]};}):[]:[]})[_0x4e85('0x1b')](function(_0x32b5f7){logger[_0x4e85('0xa')](_0x4e85('0x13'),_0x2f69dd);logger[_0x4e85('0xc')](_0x4e85('0x13'),_0x2f69dd,JSON[_0x4e85('0xf')](_0x32b5f7));_0x35ef18(_0x32b5f7);})['catch'](function(_0x59374b){logger[_0x4e85('0x10')](_0x4e85('0x13'),_0x59374b[_0x4e85('0x12')],_0x2f69dd);_0x3d6759(_0x392475[_0x4e85('0x10')](0x1f4,_0x59374b['message']));});});};exports[_0x4e85('0x1c')]=function(_0x5af61b){var _0x4c23ce=this;return new Promise(function(_0xf0a1f8,_0x4396d1){return db[_0x4e85('0x14')][_0x4e85('0x1d')]({'raw':_0x5af61b[_0x4e85('0x15')]?_0x5af61b['options'][_0x4e85('0x1e')]===undefined?!![]:![]:!![],'where':_0x5af61b[_0x4e85('0x15')]?_0x5af61b[_0x4e85('0x15')]['where']||null:null,'attributes':_0x5af61b[_0x4e85('0x15')]?_0x5af61b[_0x4e85('0x15')]['attributes']||null:null,'include':_0x5af61b['options']?_0x5af61b[_0x4e85('0x15')][_0x4e85('0x18')]?_[_0x4e85('0x19')](_0x5af61b[_0x4e85('0x15')][_0x4e85('0x18')],function(_0x5ef60c){return{'model':db[_0x5ef60c[_0x4e85('0x1a')]],'as':_0x5ef60c['as'],'attributes':_0x5ef60c[_0x4e85('0x16')],'include':_0x5ef60c[_0x4e85('0x18')]?_[_0x4e85('0x19')](_0x5ef60c[_0x4e85('0x18')],function(_0x457fe3){return{'model':db[_0x457fe3[_0x4e85('0x1a')]],'as':_0x457fe3['as'],'attributes':_0x457fe3[_0x4e85('0x16')],'include':_0x457fe3[_0x4e85('0x18')]?_[_0x4e85('0x19')](_0x457fe3['include'],function(_0x2569a6){return{'model':db[_0x2569a6[_0x4e85('0x1a')]],'as':_0x2569a6['as'],'attributes':_0x2569a6[_0x4e85('0x16')]};}):[]};}):[]};}):[]:[]})[_0x4e85('0x1b')](function(_0x4dfdf4){logger[_0x4e85('0xa')]('ShowDynamics365Account',_0x5af61b);logger[_0x4e85('0xc')](_0x4e85('0x1c'),_0x5af61b,JSON[_0x4e85('0xf')](_0x4dfdf4));_0xf0a1f8(_0x4dfdf4);})[_0x4e85('0x1f')](function(_0x55e9fe){logger[_0x4e85('0x10')]('ShowDynamics365Account',_0x55e9fe[_0x4e85('0x12')],_0x5af61b);_0x4396d1(_0x4c23ce[_0x4e85('0x10')](0x1f4,_0x55e9fe[_0x4e85('0x12')]));});});};
\ No newline at end of file
index 4f3c76c..55030a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fda=['destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','put','/:id','update'];(function(_0x2692fd,_0x42a642){var _0x3d01e2=function(_0x522c67){while(--_0x522c67){_0x2692fd['push'](_0x2692fd['shift']());}};_0x3d01e2(++_0x42a642);}(_0x1fda,0x74));var _0xa1fd=function(_0x40646e,_0x2b7664){_0x40646e=_0x40646e-0x0;var _0x5911a0=_0x1fda[_0x40646e];return _0x5911a0;};'use strict';var multer=require(_0xa1fd('0x0'));var util=require(_0xa1fd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa1fd('0x2'));var router=express['Router']();var fs_extra=require(_0xa1fd('0x3'));var auth=require(_0xa1fd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa1fd('0x5'));var controller=require(_0xa1fd('0x6'));router[_0xa1fd('0x7')]('/',auth[_0xa1fd('0x8')](),controller['index']);router[_0xa1fd('0x7')]('/:id',auth[_0xa1fd('0x8')](),controller[_0xa1fd('0x9')]);router[_0xa1fd('0x7')](_0xa1fd('0xa'),auth['isAuthenticated'](),controller['getFields']);router['get']('/:id/subjects',auth[_0xa1fd('0x8')](),controller[_0xa1fd('0xb')]);router['get'](_0xa1fd('0xc'),auth[_0xa1fd('0x8')](),controller[_0xa1fd('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa1fd('0xe')](_0xa1fd('0xf'),auth['isAuthenticated'](),controller[_0xa1fd('0x10')]);router['delete']('/:id',auth[_0xa1fd('0x8')](),controller[_0xa1fd('0x11')]);module[_0xa1fd('0x12')]=router;
\ No newline at end of file
+var _0x1177=['exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects','getDescriptions','post','put','/:id','update','destroy'];(function(_0xc121f9,_0x21de36){var _0x4fa515=function(_0x4c1e5f){while(--_0x4c1e5f){_0xc121f9['push'](_0xc121f9['shift']());}};_0x4fa515(++_0x21de36);}(_0x1177,0x143));var _0x7117=function(_0x27855,_0x10e1aa){_0x27855=_0x27855-0x0;var _0xfb560=_0x1177[_0x27855];return _0xfb560;};'use strict';var multer=require(_0x7117('0x0'));var util=require('util');var path=require(_0x7117('0x1'));var timeout=require(_0x7117('0x2'));var express=require(_0x7117('0x3'));var router=express['Router']();var fs_extra=require(_0x7117('0x4'));var auth=require(_0x7117('0x5'));var interaction=require(_0x7117('0x6'));var config=require(_0x7117('0x7'));var controller=require(_0x7117('0x8'));router[_0x7117('0x9')]('/',auth[_0x7117('0xa')](),controller[_0x7117('0xb')]);router[_0x7117('0x9')]('/:id',auth[_0x7117('0xa')](),controller[_0x7117('0xc')]);router[_0x7117('0x9')]('/:id/fields',auth[_0x7117('0xa')](),controller[_0x7117('0xd')]);router[_0x7117('0x9')](_0x7117('0xe'),auth['isAuthenticated'](),controller[_0x7117('0xf')]);router[_0x7117('0x9')]('/:id/descriptions',auth[_0x7117('0xa')](),controller[_0x7117('0x10')]);router[_0x7117('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7117('0x12')](_0x7117('0x13'),auth['isAuthenticated'](),controller[_0x7117('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x7117('0x15')]);module[_0x7117('0x16')]=router;
\ No newline at end of file
index 7e6be88..29d79a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a3a=['sequelize','STRING','ENUM','incident','contact','nothing'];(function(_0x1b2ec9,_0x4c215e){var _0x5d5771=function(_0x379683){while(--_0x379683){_0x1b2ec9['push'](_0x1b2ec9['shift']());}};_0x5d5771(++_0x4c215e);}(_0x9a3a,0x19e));var _0xa9a3=function(_0x362f3b,_0x922e47){_0x362f3b=_0x362f3b-0x0;var _0xb27236=_0x9a3a[_0x362f3b];return _0xb27236;};'use strict';var Sequelize=require(_0xa9a3('0x0'));module['exports']={'name':{'type':Sequelize[_0xa9a3('0x1')]},'description':{'type':Sequelize[_0xa9a3('0x1')]},'ticketType':{'type':Sequelize[_0xa9a3('0x2')](_0xa9a3('0x3'),'phonecall'),'defaultValue':_0xa9a3('0x3')},'moduleCreate':{'type':Sequelize[_0xa9a3('0x2')](_0xa9a3('0x4'),_0xa9a3('0x5')),'defaultValue':'contact','allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x83dd=['incident','phonecall','nothing','contact','BOOLEAN','sequelize','exports','STRING','ENUM'];(function(_0x3cec8c,_0x3f6c1d){var _0x38032e=function(_0x4ef75b){while(--_0x4ef75b){_0x3cec8c['push'](_0x3cec8c['shift']());}};_0x38032e(++_0x3f6c1d);}(_0x83dd,0x188));var _0xd83d=function(_0x41564a,_0x3178fe){_0x41564a=_0x41564a-0x0;var _0x756bbb=_0x83dd[_0x41564a];return _0x756bbb;};'use strict';var Sequelize=require(_0xd83d('0x0'));module[_0xd83d('0x1')]={'name':{'type':Sequelize[_0xd83d('0x2')]},'description':{'type':Sequelize[_0xd83d('0x2')]},'ticketType':{'type':Sequelize[_0xd83d('0x3')](_0xd83d('0x4'),_0xd83d('0x5')),'defaultValue':_0xd83d('0x4')},'moduleCreate':{'type':Sequelize[_0xd83d('0x3')]('contact',_0xd83d('0x6')),'defaultValue':_0xd83d('0x7'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xd83d('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xd83d('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 4dcec80..d5ff887 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc30d=['limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','Dynamics365Configuration','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','params','keys','find','catch','create','body','getFields','findOne','Dynamics365Field','hasOwnProperty','getSubjects','map','getDescriptions','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset'];(function(_0x35f15b,_0x387db3){var _0x262619=function(_0x4467b9){while(--_0x4467b9){_0x35f15b['push'](_0x35f15b['shift']());}};_0x262619(++_0x387db3);}(_0xc30d,0x170));var _0xdc30=function(_0x1966f3,_0x210ea3){_0x1966f3=_0x1966f3-0x0;var _0x17575f=_0xc30d[_0x1966f3];return _0x17575f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdc30('0x0'));var rp=require('request-promise');var moment=require(_0xdc30('0x1'));var BPromise=require(_0xdc30('0x2'));var Mustache=require(_0xdc30('0x3'));var util=require(_0xdc30('0x4'));var path=require('path');var sox=require(_0xdc30('0x5'));var csv=require(_0xdc30('0x6'));var ejs=require(_0xdc30('0x7'));var fs=require('fs');var fs_extra=require(_0xdc30('0x8'));var _=require('lodash');var squel=require(_0xdc30('0x9'));var crypto=require(_0xdc30('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xdc30('0xb'));var toCsv=require('to-csv');var querystring=require(_0xdc30('0xc'));var Papa=require('papaparse');var Redis=require(_0xdc30('0xd'));var authService=require(_0xdc30('0xe'));var qs=require(_0xdc30('0xf'));var as=require(_0xdc30('0x10'));var hardwareService=require(_0xdc30('0x11'));var logger=require(_0xdc30('0x12'))(_0xdc30('0x13'));var utils=require(_0xdc30('0x14'));var config=require(_0xdc30('0x15'));var licenseUtil=require(_0xdc30('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x212291,_0xb9fba2){_0xb9fba2=_0xb9fba2||0xcc;return function(_0xc4fd3e){if(_0xc4fd3e){return _0x212291[_0xdc30('0x17')](_0xb9fba2);}return _0x212291[_0xdc30('0x18')](_0xb9fba2)['end']();};}function respondWithResult(_0x1b068e,_0x1fbc24){_0x1fbc24=_0x1fbc24||0xc8;return function(_0x202965){if(_0x202965){return _0x1b068e[_0xdc30('0x18')](_0x1fbc24)[_0xdc30('0x19')](_0x202965);}};}function respondWithFilteredResult(_0x24bf87,_0x1a1697){return function(_0x239f01){if(_0x239f01){var _0x22a4a3=typeof _0x1a1697[_0xdc30('0x1a')]==='undefined'&&typeof _0x1a1697[_0xdc30('0x1b')]===_0xdc30('0x1c');var _0x24e1cd=_0x239f01['count'];var _0x280b96=_0x22a4a3?0x0:_0x1a1697[_0xdc30('0x1a')];var _0x32da12=_0x22a4a3?_0x239f01[_0xdc30('0x1d')]:_0x1a1697[_0xdc30('0x1a')]+_0x1a1697[_0xdc30('0x1b')];var _0x54bc1d;if(_0x32da12>=_0x24e1cd){_0x32da12=_0x24e1cd;_0x54bc1d=0xc8;}else{_0x54bc1d=0xce;}_0x24bf87[_0xdc30('0x18')](_0x54bc1d);return _0x24bf87[_0xdc30('0x1e')](_0xdc30('0x1f'),_0x280b96+'-'+_0x32da12+'/'+_0x24e1cd)[_0xdc30('0x19')](_0x239f01);}return null;};}function patchUpdates(_0x4d2aac){return function(_0x1cd864){try{jsonpatch[_0xdc30('0x20')](_0x1cd864,_0x4d2aac,!![]);}catch(_0x385556){return BPromise[_0xdc30('0x21')](_0x385556);}return _0x1cd864[_0xdc30('0x22')]();};}function saveUpdates(_0x591b85,_0x381733){return function(_0x4c2344){if(_0x4c2344){return _0x4c2344[_0xdc30('0x23')](_0x591b85)[_0xdc30('0x24')](function(_0x45497f){return _0x45497f;});}return null;};}function removeEntity(_0x38548c,_0x5b77e9){return function(_0x36c226){if(_0x36c226){return _0x36c226[_0xdc30('0x25')]()['then'](function(){_0x38548c['status'](0xcc)[_0xdc30('0x26')]();});}};}function handleEntityNotFound(_0x559698,_0x29d65a){return function(_0x125ee9){if(!_0x125ee9){_0x559698['sendStatus'](0x194);}return _0x125ee9;};}function handleError(_0x3da193,_0x1de1f2){_0x1de1f2=_0x1de1f2||0x1f4;return function(_0x174ad0){logger[_0xdc30('0x27')](_0x174ad0[_0xdc30('0x28')]);if(_0x174ad0[_0xdc30('0x29')]){delete _0x174ad0[_0xdc30('0x29')];}_0x3da193['status'](_0x1de1f2)[_0xdc30('0x2a')](_0x174ad0);};}exports[_0xdc30('0x2b')]=function(_0x4549f0,_0x4956b3){var _0x55181b={},_0x979708={},_0x8efbe2={'count':0x0,'rows':[]};var _0x4612fc=_['map'](db[_0xdc30('0x2c')][_0xdc30('0x2d')],function(_0x287ebe){return{'name':_0x287ebe['fieldName'],'type':_0x287ebe[_0xdc30('0x2e')][_0xdc30('0x2f')]};});_0x979708[_0xdc30('0x30')]=_['map'](_0x4612fc,_0xdc30('0x29'));_0x979708[_0xdc30('0x31')]=_['keys'](_0x4549f0[_0xdc30('0x31')]);_0x979708[_0xdc30('0x32')]=_['intersection'](_0x979708[_0xdc30('0x30')],_0x979708[_0xdc30('0x31')]);_0x55181b[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0x979708[_0xdc30('0x30')],qs[_0xdc30('0x35')](_0x4549f0[_0xdc30('0x31')][_0xdc30('0x35')]));_0x55181b['attributes']=_0x55181b['attributes'][_0xdc30('0x36')]?_0x55181b['attributes']:_0x979708[_0xdc30('0x30')];if(!_0x4549f0['query']['hasOwnProperty'](_0xdc30('0x37'))){_0x55181b[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x4549f0['query'][_0xdc30('0x1b')]);_0x55181b[_0xdc30('0x1a')]=qs[_0xdc30('0x1a')](_0x4549f0[_0xdc30('0x31')][_0xdc30('0x1a')]);}_0x55181b[_0xdc30('0x38')]=qs[_0xdc30('0x39')](_0x4549f0[_0xdc30('0x31')][_0xdc30('0x39')]);_0x55181b[_0xdc30('0x3a')]=qs['filters'](_[_0xdc30('0x3b')](_0x4549f0['query'],_0x979708[_0xdc30('0x32')]),_0x4612fc);if(_0x4549f0['query'][_0xdc30('0x3c')]){_0x55181b[_0xdc30('0x3a')]=_[_0xdc30('0x3d')](_0x55181b[_0xdc30('0x3a')],{'$or':_['map'](_0x4612fc,function(_0x466fc8){if(_0x466fc8[_0xdc30('0x2e')]!==_0xdc30('0x3e')){var _0x279a97={};_0x279a97[_0x466fc8[_0xdc30('0x29')]]={'$like':'%'+_0x4549f0['query'][_0xdc30('0x3c')]+'%'};return _0x279a97;}})});}_0x55181b=_['merge']({},_0x55181b,_0x4549f0[_0xdc30('0x3f')]);var _0x49f56f={'where':_0x55181b[_0xdc30('0x3a')]};return db[_0xdc30('0x2c')][_0xdc30('0x1d')](_0x49f56f)[_0xdc30('0x24')](function(_0xf534af){_0x8efbe2[_0xdc30('0x1d')]=_0xf534af;if(_0x4549f0[_0xdc30('0x31')]['includeAll']){_0x55181b[_0xdc30('0x40')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0xdc30('0x41')](_0x55181b);})[_0xdc30('0x24')](function(_0x238518){_0x8efbe2['rows']=_0x238518;return _0x8efbe2;})[_0xdc30('0x24')](respondWithFilteredResult(_0x4956b3,_0x55181b))['catch'](handleError(_0x4956b3,null));};exports['show']=function(_0x2b8615,_0x284847){var _0x570665={'raw':![],'where':{'id':_0x2b8615[_0xdc30('0x42')]['id']}},_0xdb2410={};_0xdb2410[_0xdc30('0x30')]=_[_0xdc30('0x43')](db[_0xdc30('0x2c')][_0xdc30('0x2d')]);_0xdb2410[_0xdc30('0x31')]=_[_0xdc30('0x43')](_0x2b8615[_0xdc30('0x31')]);_0xdb2410['filters']=_['intersection'](_0xdb2410['model'],_0xdb2410['query']);_0x570665[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0xdb2410['model'],qs[_0xdc30('0x35')](_0x2b8615[_0xdc30('0x31')]['fields']));_0x570665[_0xdc30('0x33')]=_0x570665[_0xdc30('0x33')][_0xdc30('0x36')]?_0x570665[_0xdc30('0x33')]:_0xdb2410[_0xdc30('0x30')];if(_0x2b8615['query']['includeAll']){_0x570665['include']=[{'all':!![]}];}_0x570665=_[_0xdc30('0x3d')]({},_0x570665,_0x2b8615[_0xdc30('0x3f')]);return db[_0xdc30('0x2c')][_0xdc30('0x44')](_0x570665)['then'](handleEntityNotFound(_0x284847,null))[_0xdc30('0x24')](respondWithResult(_0x284847,null))[_0xdc30('0x45')](handleError(_0x284847,null));};exports['create']=function(_0x2e09bc,_0x47ebad){return db[_0xdc30('0x2c')][_0xdc30('0x46')](_0x2e09bc['body'],{})[_0xdc30('0x24')](respondWithResult(_0x47ebad,0xc9))['catch'](handleError(_0x47ebad,null));};exports[_0xdc30('0x23')]=function(_0xad21e0,_0x2bd220){if(_0xad21e0[_0xdc30('0x47')]['id']){delete _0xad21e0[_0xdc30('0x47')]['id'];}return db[_0xdc30('0x2c')][_0xdc30('0x44')]({'where':{'id':_0xad21e0[_0xdc30('0x42')]['id']}})[_0xdc30('0x24')](handleEntityNotFound(_0x2bd220,null))[_0xdc30('0x24')](saveUpdates(_0xad21e0[_0xdc30('0x47')],null))[_0xdc30('0x24')](respondWithResult(_0x2bd220,null))[_0xdc30('0x45')](handleError(_0x2bd220,null));};exports[_0xdc30('0x25')]=function(_0xa559a7,_0xbba9ed){return db['Dynamics365Configuration']['find']({'where':{'id':_0xa559a7[_0xdc30('0x42')]['id']}})['then'](handleEntityNotFound(_0xbba9ed,null))['then'](removeEntity(_0xbba9ed,null))[_0xdc30('0x45')](handleError(_0xbba9ed,null));};exports[_0xdc30('0x48')]=function(_0x5d14ff,_0x382ab1,_0x25553e){var _0x288a64={};var _0x327086={};var _0x1a53c6;var _0x453eac;return db[_0xdc30('0x2c')][_0xdc30('0x49')]({'where':{'id':_0x5d14ff[_0xdc30('0x42')]['id']}})[_0xdc30('0x24')](handleEntityNotFound(_0x382ab1,null))['then'](function(_0x6779c9){if(_0x6779c9){_0x1a53c6=_0x6779c9;_0x327086['model']=_[_0xdc30('0x43')](db[_0xdc30('0x4a')][_0xdc30('0x2d')]);_0x327086[_0xdc30('0x31')]=_['keys'](_0x5d14ff[_0xdc30('0x31')]);_0x327086[_0xdc30('0x32')]=_[_0xdc30('0x34')](_0x327086[_0xdc30('0x30')],_0x327086[_0xdc30('0x31')]);_0x288a64['attributes']=_['intersection'](_0x327086[_0xdc30('0x30')],qs[_0xdc30('0x35')](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x35')]));_0x288a64[_0xdc30('0x33')]=_0x288a64[_0xdc30('0x33')][_0xdc30('0x36')]?_0x288a64[_0xdc30('0x33')]:_0x327086[_0xdc30('0x30')];_0x288a64['order']=qs[_0xdc30('0x39')](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x39')]);_0x288a64['where']=qs['filters'](_[_0xdc30('0x3b')](_0x5d14ff[_0xdc30('0x31')],_0x327086[_0xdc30('0x32')]));if(_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x3c')]){_0x288a64['where']=_[_0xdc30('0x3d')](_0x288a64[_0xdc30('0x3a')],{'$or':_['map'](_0x288a64['attributes'],function(_0x54606c){var _0x371819={};_0x371819[_0x54606c]={'$like':'%'+_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x3c')]+'%'};return _0x371819;})});}_0x288a64=_[_0xdc30('0x3d')]({},_0x288a64,_0x5d14ff['options']);return _0x1a53c6[_0xdc30('0x48')](_0x288a64);}})['then'](function(_0x439e21){if(_0x439e21){_0x453eac=_0x439e21[_0xdc30('0x36')];if(!_0x5d14ff['query'][_0xdc30('0x4b')]('nolimit')){_0x288a64[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x1b')]);_0x288a64[_0xdc30('0x1a')]=qs['offset'](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x1a')]);}return _0x1a53c6[_0xdc30('0x48')](_0x288a64);}})[_0xdc30('0x24')](function(_0x31a1c7){if(_0x31a1c7){return _0x31a1c7?{'count':_0x453eac,'rows':_0x31a1c7}:null;}})[_0xdc30('0x24')](respondWithResult(_0x382ab1,null))[_0xdc30('0x45')](handleError(_0x382ab1,null));};exports[_0xdc30('0x4c')]=function(_0x162d1f,_0x5c780c,_0x53e4fe){var _0x47d0d6={};var _0xb5d4b2={};var _0x3832be;var _0x3c941e;return db[_0xdc30('0x2c')]['findOne']({'where':{'id':_0x162d1f[_0xdc30('0x42')]['id']}})[_0xdc30('0x24')](handleEntityNotFound(_0x5c780c,null))[_0xdc30('0x24')](function(_0x293ea6){if(_0x293ea6){_0x3832be=_0x293ea6;_0xb5d4b2['model']=_[_0xdc30('0x43')](db['Dynamics365Field'][_0xdc30('0x2d')]);_0xb5d4b2[_0xdc30('0x31')]=_[_0xdc30('0x43')](_0x162d1f[_0xdc30('0x31')]);_0xb5d4b2[_0xdc30('0x32')]=_[_0xdc30('0x34')](_0xb5d4b2['model'],_0xb5d4b2[_0xdc30('0x31')]);_0x47d0d6[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0xb5d4b2[_0xdc30('0x30')],qs['fields'](_0x162d1f['query'][_0xdc30('0x35')]));_0x47d0d6[_0xdc30('0x33')]=_0x47d0d6[_0xdc30('0x33')][_0xdc30('0x36')]?_0x47d0d6[_0xdc30('0x33')]:_0xb5d4b2['model'];_0x47d0d6['order']=qs['sort'](_0x162d1f[_0xdc30('0x31')]['sort']);_0x47d0d6['where']=qs['filters'](_[_0xdc30('0x3b')](_0x162d1f[_0xdc30('0x31')],_0xb5d4b2[_0xdc30('0x32')]));if(_0x162d1f[_0xdc30('0x31')][_0xdc30('0x3c')]){_0x47d0d6[_0xdc30('0x3a')]=_[_0xdc30('0x3d')](_0x47d0d6[_0xdc30('0x3a')],{'$or':_[_0xdc30('0x4d')](_0x47d0d6[_0xdc30('0x33')],function(_0x1329ee){var _0x4d7276={};_0x4d7276[_0x1329ee]={'$like':'%'+_0x162d1f[_0xdc30('0x31')][_0xdc30('0x3c')]+'%'};return _0x4d7276;})});}_0x47d0d6=_['merge']({},_0x47d0d6,_0x162d1f[_0xdc30('0x3f')]);return _0x3832be[_0xdc30('0x4c')](_0x47d0d6);}})[_0xdc30('0x24')](function(_0x31a45a){if(_0x31a45a){_0x3c941e=_0x31a45a[_0xdc30('0x36')];if(!_0x162d1f[_0xdc30('0x31')][_0xdc30('0x4b')]('nolimit')){_0x47d0d6[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x162d1f[_0xdc30('0x31')][_0xdc30('0x1b')]);_0x47d0d6[_0xdc30('0x1a')]=qs[_0xdc30('0x1a')](_0x162d1f[_0xdc30('0x31')][_0xdc30('0x1a')]);}return _0x3832be['getSubjects'](_0x47d0d6);}})[_0xdc30('0x24')](function(_0x29e3d0){if(_0x29e3d0){return _0x29e3d0?{'count':_0x3c941e,'rows':_0x29e3d0}:null;}})['then'](respondWithResult(_0x5c780c,null))[_0xdc30('0x45')](handleError(_0x5c780c,null));};exports[_0xdc30('0x4e')]=function(_0x53b532,_0x4ea2f6,_0x1415fe){var _0x644dcf={};var _0x1e62eb={};var _0x25debe;var _0x2dbd45;return db[_0xdc30('0x2c')][_0xdc30('0x49')]({'where':{'id':_0x53b532[_0xdc30('0x42')]['id']}})['then'](handleEntityNotFound(_0x4ea2f6,null))[_0xdc30('0x24')](function(_0x5ed010){if(_0x5ed010){_0x25debe=_0x5ed010;_0x1e62eb['model']=_[_0xdc30('0x43')](db[_0xdc30('0x4a')][_0xdc30('0x2d')]);_0x1e62eb[_0xdc30('0x31')]=_[_0xdc30('0x43')](_0x53b532[_0xdc30('0x31')]);_0x1e62eb[_0xdc30('0x32')]=_[_0xdc30('0x34')](_0x1e62eb[_0xdc30('0x30')],_0x1e62eb[_0xdc30('0x31')]);_0x644dcf[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0x1e62eb['model'],qs[_0xdc30('0x35')](_0x53b532['query'][_0xdc30('0x35')]));_0x644dcf[_0xdc30('0x33')]=_0x644dcf[_0xdc30('0x33')]['length']?_0x644dcf['attributes']:_0x1e62eb[_0xdc30('0x30')];_0x644dcf[_0xdc30('0x38')]=qs[_0xdc30('0x39')](_0x53b532[_0xdc30('0x31')][_0xdc30('0x39')]);_0x644dcf['where']=qs[_0xdc30('0x32')](_[_0xdc30('0x3b')](_0x53b532[_0xdc30('0x31')],_0x1e62eb['filters']));if(_0x53b532[_0xdc30('0x31')][_0xdc30('0x3c')]){_0x644dcf[_0xdc30('0x3a')]=_['merge'](_0x644dcf[_0xdc30('0x3a')],{'$or':_['map'](_0x644dcf[_0xdc30('0x33')],function(_0x58db88){var _0x5ed919={};_0x5ed919[_0x58db88]={'$like':'%'+_0x53b532[_0xdc30('0x31')][_0xdc30('0x3c')]+'%'};return _0x5ed919;})});}_0x644dcf=_[_0xdc30('0x3d')]({},_0x644dcf,_0x53b532[_0xdc30('0x3f')]);return _0x25debe[_0xdc30('0x4e')](_0x644dcf);}})['then'](function(_0xa4f81b){if(_0xa4f81b){_0x2dbd45=_0xa4f81b[_0xdc30('0x36')];if(!_0x53b532['query'][_0xdc30('0x4b')](_0xdc30('0x37'))){_0x644dcf[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x53b532[_0xdc30('0x31')]['limit']);_0x644dcf[_0xdc30('0x1a')]=qs[_0xdc30('0x1a')](_0x53b532['query'][_0xdc30('0x1a')]);}return _0x25debe[_0xdc30('0x4e')](_0x644dcf);}})['then'](function(_0x80d1df){if(_0x80d1df){return _0x80d1df?{'count':_0x2dbd45,'rows':_0x80d1df}:null;}})[_0xdc30('0x24')](respondWithResult(_0x4ea2f6,null))[_0xdc30('0x45')](handleError(_0x4ea2f6,null));};
\ No newline at end of file
+var _0x55a4=['where','pick','filter','merge','type','VIRTUAL','options','Dynamics365Configuration','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','update','body','getFields','findOne','Dynamics365Field','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','error','name','send','index','fieldName','model','map','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort'];(function(_0x187718,_0x427383){var _0x29ddf4=function(_0x2ec62a){while(--_0x2ec62a){_0x187718['push'](_0x187718['shift']());}};_0x29ddf4(++_0x427383);}(_0x55a4,0x68));var _0x455a=function(_0x5505de,_0x12977f){_0x5505de=_0x5505de-0x0;var _0xe6093b=_0x55a4[_0x5505de];return _0xe6093b;};'use strict';var emlformat=require(_0x455a('0x0'));var rimraf=require(_0x455a('0x1'));var zipdir=require(_0x455a('0x2'));var jsonpatch=require(_0x455a('0x3'));var rp=require(_0x455a('0x4'));var moment=require(_0x455a('0x5'));var BPromise=require(_0x455a('0x6'));var Mustache=require(_0x455a('0x7'));var util=require(_0x455a('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x455a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x455a('0xa'));var squel=require(_0x455a('0xb'));var crypto=require(_0x455a('0xc'));var jsforce=require(_0x455a('0xd'));var deskjs=require(_0x455a('0xe'));var toCsv=require(_0x455a('0x9'));var querystring=require(_0x455a('0xf'));var Papa=require(_0x455a('0x10'));var Redis=require('ioredis');var authService=require(_0x455a('0x11'));var qs=require(_0x455a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x455a('0x13'));var logger=require(_0x455a('0x14'))(_0x455a('0x15'));var utils=require(_0x455a('0x16'));var config=require(_0x455a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x455a('0x18'))['db'];function respondWithStatusCode(_0x333633,_0x27d779){_0x27d779=_0x27d779||0xcc;return function(_0x2e23a9){if(_0x2e23a9){return _0x333633['sendStatus'](_0x27d779);}return _0x333633[_0x455a('0x19')](_0x27d779)[_0x455a('0x1a')]();};}function respondWithResult(_0x35b6ff,_0x2e3cf0){_0x2e3cf0=_0x2e3cf0||0xc8;return function(_0x345af4){if(_0x345af4){return _0x35b6ff[_0x455a('0x19')](_0x2e3cf0)['json'](_0x345af4);}};}function respondWithFilteredResult(_0x1d6229,_0xf49e83){return function(_0x3f380d){if(_0x3f380d){var _0x3e0320=typeof _0xf49e83[_0x455a('0x1b')]===_0x455a('0x1c')&&typeof _0xf49e83[_0x455a('0x1d')]==='undefined';var _0x1c3552=_0x3f380d[_0x455a('0x1e')];var _0x4a8b70=_0x3e0320?0x0:_0xf49e83[_0x455a('0x1b')];var _0x4a7a47=_0x3e0320?_0x3f380d[_0x455a('0x1e')]:_0xf49e83[_0x455a('0x1b')]+_0xf49e83['limit'];var _0x26a675;if(_0x4a7a47>=_0x1c3552){_0x4a7a47=_0x1c3552;_0x26a675=0xc8;}else{_0x26a675=0xce;}_0x1d6229['status'](_0x26a675);return _0x1d6229[_0x455a('0x1f')](_0x455a('0x20'),_0x4a8b70+'-'+_0x4a7a47+'/'+_0x1c3552)['json'](_0x3f380d);}return null;};}function patchUpdates(_0x3b4ff8){return function(_0x1dffd5){try{jsonpatch[_0x455a('0x21')](_0x1dffd5,_0x3b4ff8,!![]);}catch(_0x5a863b){return BPromise[_0x455a('0x22')](_0x5a863b);}return _0x1dffd5['save']();};}function saveUpdates(_0x5998ee,_0x4a9bd1){return function(_0x1ffb08){if(_0x1ffb08){return _0x1ffb08['update'](_0x5998ee)[_0x455a('0x23')](function(_0x275836){return _0x275836;});}return null;};}function removeEntity(_0x85b11c,_0x12f293){return function(_0x3f641a){if(_0x3f641a){return _0x3f641a[_0x455a('0x24')]()['then'](function(){_0x85b11c[_0x455a('0x19')](0xcc)[_0x455a('0x1a')]();});}};}function handleEntityNotFound(_0x1543eb,_0x19345f){return function(_0x3a8f85){if(!_0x3a8f85){_0x1543eb['sendStatus'](0x194);}return _0x3a8f85;};}function handleError(_0x36b37d,_0x4f715d){_0x4f715d=_0x4f715d||0x1f4;return function(_0x2c428a){logger[_0x455a('0x25')](_0x2c428a['stack']);if(_0x2c428a[_0x455a('0x26')]){delete _0x2c428a[_0x455a('0x26')];}_0x36b37d[_0x455a('0x19')](_0x4f715d)[_0x455a('0x27')](_0x2c428a);};}exports[_0x455a('0x28')]=function(_0x4ff3c4,_0xeabf65){var _0x457a77={},_0x44a49f={},_0x3f9130={'count':0x0,'rows':[]};var _0x58ca4b=_['map'](db['Dynamics365Configuration']['rawAttributes'],function(_0x21d91a){return{'name':_0x21d91a[_0x455a('0x29')],'type':_0x21d91a['type']['key']};});_0x44a49f[_0x455a('0x2a')]=_[_0x455a('0x2b')](_0x58ca4b,_0x455a('0x26'));_0x44a49f[_0x455a('0x2c')]=_[_0x455a('0x2d')](_0x4ff3c4[_0x455a('0x2c')]);_0x44a49f[_0x455a('0x2e')]=_['intersection'](_0x44a49f['model'],_0x44a49f[_0x455a('0x2c')]);_0x457a77[_0x455a('0x2f')]=_[_0x455a('0x30')](_0x44a49f[_0x455a('0x2a')],qs['fields'](_0x4ff3c4[_0x455a('0x2c')][_0x455a('0x31')]));_0x457a77[_0x455a('0x2f')]=_0x457a77[_0x455a('0x2f')][_0x455a('0x32')]?_0x457a77[_0x455a('0x2f')]:_0x44a49f[_0x455a('0x2a')];if(!_0x4ff3c4[_0x455a('0x2c')]['hasOwnProperty'](_0x455a('0x33'))){_0x457a77[_0x455a('0x1d')]=qs[_0x455a('0x1d')](_0x4ff3c4[_0x455a('0x2c')][_0x455a('0x1d')]);_0x457a77[_0x455a('0x1b')]=qs['offset'](_0x4ff3c4[_0x455a('0x2c')][_0x455a('0x1b')]);}_0x457a77[_0x455a('0x34')]=qs['sort'](_0x4ff3c4[_0x455a('0x2c')][_0x455a('0x35')]);_0x457a77[_0x455a('0x36')]=qs[_0x455a('0x2e')](_[_0x455a('0x37')](_0x4ff3c4[_0x455a('0x2c')],_0x44a49f[_0x455a('0x2e')]),_0x58ca4b);if(_0x4ff3c4[_0x455a('0x2c')][_0x455a('0x38')]){_0x457a77[_0x455a('0x36')]=_[_0x455a('0x39')](_0x457a77[_0x455a('0x36')],{'$or':_[_0x455a('0x2b')](_0x58ca4b,function(_0x1e99b0){if(_0x1e99b0[_0x455a('0x3a')]!==_0x455a('0x3b')){var _0x2008fd={};_0x2008fd[_0x1e99b0['name']]={'$like':'%'+_0x4ff3c4[_0x455a('0x2c')][_0x455a('0x38')]+'%'};return _0x2008fd;}})});}_0x457a77=_['merge']({},_0x457a77,_0x4ff3c4[_0x455a('0x3c')]);var _0x2220fa={'where':_0x457a77['where']};return db[_0x455a('0x3d')][_0x455a('0x1e')](_0x2220fa)['then'](function(_0x4ccc62){_0x3f9130['count']=_0x4ccc62;if(_0x4ff3c4[_0x455a('0x2c')][_0x455a('0x3e')]){_0x457a77[_0x455a('0x3f')]=[{'all':!![]}];}return db[_0x455a('0x3d')][_0x455a('0x40')](_0x457a77);})['then'](function(_0x2436c5){_0x3f9130[_0x455a('0x41')]=_0x2436c5;return _0x3f9130;})[_0x455a('0x23')](respondWithFilteredResult(_0xeabf65,_0x457a77))[_0x455a('0x42')](handleError(_0xeabf65,null));};exports['show']=function(_0x213600,_0x44a71a){var _0x21197d={'raw':![],'where':{'id':_0x213600[_0x455a('0x43')]['id']}},_0x1eeb60={};_0x1eeb60[_0x455a('0x2a')]=_['keys'](db[_0x455a('0x3d')][_0x455a('0x44')]);_0x1eeb60[_0x455a('0x2c')]=_[_0x455a('0x2d')](_0x213600['query']);_0x1eeb60[_0x455a('0x2e')]=_[_0x455a('0x30')](_0x1eeb60[_0x455a('0x2a')],_0x1eeb60['query']);_0x21197d['attributes']=_[_0x455a('0x30')](_0x1eeb60[_0x455a('0x2a')],qs[_0x455a('0x31')](_0x213600[_0x455a('0x2c')]['fields']));_0x21197d[_0x455a('0x2f')]=_0x21197d['attributes'][_0x455a('0x32')]?_0x21197d[_0x455a('0x2f')]:_0x1eeb60[_0x455a('0x2a')];if(_0x213600[_0x455a('0x2c')]['includeAll']){_0x21197d[_0x455a('0x3f')]=[{'all':!![]}];}_0x21197d=_[_0x455a('0x39')]({},_0x21197d,_0x213600[_0x455a('0x3c')]);return db[_0x455a('0x3d')][_0x455a('0x45')](_0x21197d)[_0x455a('0x23')](handleEntityNotFound(_0x44a71a,null))['then'](respondWithResult(_0x44a71a,null))[_0x455a('0x42')](handleError(_0x44a71a,null));};exports[_0x455a('0x46')]=function(_0x3f1621,_0x103aa5){return db['Dynamics365Configuration'][_0x455a('0x46')](_0x3f1621['body'],{})[_0x455a('0x23')](respondWithResult(_0x103aa5,0xc9))[_0x455a('0x42')](handleError(_0x103aa5,null));};exports[_0x455a('0x47')]=function(_0x1f856a,_0x50a241){if(_0x1f856a[_0x455a('0x48')]['id']){delete _0x1f856a[_0x455a('0x48')]['id'];}return db[_0x455a('0x3d')][_0x455a('0x45')]({'where':{'id':_0x1f856a[_0x455a('0x43')]['id']}})[_0x455a('0x23')](handleEntityNotFound(_0x50a241,null))[_0x455a('0x23')](saveUpdates(_0x1f856a[_0x455a('0x48')],null))[_0x455a('0x23')](respondWithResult(_0x50a241,null))[_0x455a('0x42')](handleError(_0x50a241,null));};exports[_0x455a('0x24')]=function(_0x31e958,_0x39217f){return db[_0x455a('0x3d')][_0x455a('0x45')]({'where':{'id':_0x31e958['params']['id']}})[_0x455a('0x23')](handleEntityNotFound(_0x39217f,null))[_0x455a('0x23')](removeEntity(_0x39217f,null))[_0x455a('0x42')](handleError(_0x39217f,null));};exports[_0x455a('0x49')]=function(_0x186879,_0x4b3229,_0x2c78b7){var _0x3e0178={};var _0x518008={};var _0x506ed6;var _0xe16e69;return db[_0x455a('0x3d')][_0x455a('0x4a')]({'where':{'id':_0x186879['params']['id']}})[_0x455a('0x23')](handleEntityNotFound(_0x4b3229,null))[_0x455a('0x23')](function(_0x2d43a4){if(_0x2d43a4){_0x506ed6=_0x2d43a4;_0x518008[_0x455a('0x2a')]=_[_0x455a('0x2d')](db[_0x455a('0x4b')][_0x455a('0x44')]);_0x518008['query']=_[_0x455a('0x2d')](_0x186879[_0x455a('0x2c')]);_0x518008[_0x455a('0x2e')]=_[_0x455a('0x30')](_0x518008[_0x455a('0x2a')],_0x518008[_0x455a('0x2c')]);_0x3e0178['attributes']=_[_0x455a('0x30')](_0x518008['model'],qs[_0x455a('0x31')](_0x186879[_0x455a('0x2c')][_0x455a('0x31')]));_0x3e0178['attributes']=_0x3e0178[_0x455a('0x2f')][_0x455a('0x32')]?_0x3e0178[_0x455a('0x2f')]:_0x518008['model'];_0x3e0178[_0x455a('0x34')]=qs[_0x455a('0x35')](_0x186879[_0x455a('0x2c')]['sort']);_0x3e0178['where']=qs['filters'](_[_0x455a('0x37')](_0x186879[_0x455a('0x2c')],_0x518008[_0x455a('0x2e')]));if(_0x186879[_0x455a('0x2c')][_0x455a('0x38')]){_0x3e0178['where']=_['merge'](_0x3e0178[_0x455a('0x36')],{'$or':_['map'](_0x3e0178['attributes'],function(_0x17456d){var _0x107b4b={};_0x107b4b[_0x17456d]={'$like':'%'+_0x186879[_0x455a('0x2c')][_0x455a('0x38')]+'%'};return _0x107b4b;})});}_0x3e0178=_[_0x455a('0x39')]({},_0x3e0178,_0x186879[_0x455a('0x3c')]);return _0x506ed6['getFields'](_0x3e0178);}})[_0x455a('0x23')](function(_0x5a6979){if(_0x5a6979){_0xe16e69=_0x5a6979['length'];if(!_0x186879[_0x455a('0x2c')][_0x455a('0x4c')](_0x455a('0x33'))){_0x3e0178[_0x455a('0x1d')]=qs[_0x455a('0x1d')](_0x186879[_0x455a('0x2c')]['limit']);_0x3e0178[_0x455a('0x1b')]=qs[_0x455a('0x1b')](_0x186879['query']['offset']);}return _0x506ed6[_0x455a('0x49')](_0x3e0178);}})[_0x455a('0x23')](function(_0x13e753){if(_0x13e753){return _0x13e753?{'count':_0xe16e69,'rows':_0x13e753}:null;}})[_0x455a('0x23')](respondWithResult(_0x4b3229,null))[_0x455a('0x42')](handleError(_0x4b3229,null));};exports[_0x455a('0x4d')]=function(_0x5ebce1,_0x2bc756,_0x175dc2){var _0x224e3f={};var _0x138622={};var _0x26f9d9;var _0x9693ce;return db[_0x455a('0x3d')][_0x455a('0x4a')]({'where':{'id':_0x5ebce1['params']['id']}})[_0x455a('0x23')](handleEntityNotFound(_0x2bc756,null))[_0x455a('0x23')](function(_0x2b4690){if(_0x2b4690){_0x26f9d9=_0x2b4690;_0x138622[_0x455a('0x2a')]=_[_0x455a('0x2d')](db['Dynamics365Field'][_0x455a('0x44')]);_0x138622[_0x455a('0x2c')]=_[_0x455a('0x2d')](_0x5ebce1[_0x455a('0x2c')]);_0x138622[_0x455a('0x2e')]=_[_0x455a('0x30')](_0x138622[_0x455a('0x2a')],_0x138622[_0x455a('0x2c')]);_0x224e3f[_0x455a('0x2f')]=_[_0x455a('0x30')](_0x138622['model'],qs[_0x455a('0x31')](_0x5ebce1[_0x455a('0x2c')]['fields']));_0x224e3f[_0x455a('0x2f')]=_0x224e3f[_0x455a('0x2f')][_0x455a('0x32')]?_0x224e3f['attributes']:_0x138622[_0x455a('0x2a')];_0x224e3f[_0x455a('0x34')]=qs[_0x455a('0x35')](_0x5ebce1[_0x455a('0x2c')][_0x455a('0x35')]);_0x224e3f[_0x455a('0x36')]=qs[_0x455a('0x2e')](_[_0x455a('0x37')](_0x5ebce1[_0x455a('0x2c')],_0x138622['filters']));if(_0x5ebce1['query'][_0x455a('0x38')]){_0x224e3f[_0x455a('0x36')]=_[_0x455a('0x39')](_0x224e3f[_0x455a('0x36')],{'$or':_[_0x455a('0x2b')](_0x224e3f['attributes'],function(_0x2314b4){var _0x43798d={};_0x43798d[_0x2314b4]={'$like':'%'+_0x5ebce1[_0x455a('0x2c')]['filter']+'%'};return _0x43798d;})});}_0x224e3f=_[_0x455a('0x39')]({},_0x224e3f,_0x5ebce1[_0x455a('0x3c')]);return _0x26f9d9[_0x455a('0x4d')](_0x224e3f);}})[_0x455a('0x23')](function(_0x403442){if(_0x403442){_0x9693ce=_0x403442[_0x455a('0x32')];if(!_0x5ebce1[_0x455a('0x2c')][_0x455a('0x4c')]('nolimit')){_0x224e3f[_0x455a('0x1d')]=qs['limit'](_0x5ebce1['query'][_0x455a('0x1d')]);_0x224e3f[_0x455a('0x1b')]=qs[_0x455a('0x1b')](_0x5ebce1[_0x455a('0x2c')][_0x455a('0x1b')]);}return _0x26f9d9[_0x455a('0x4d')](_0x224e3f);}})[_0x455a('0x23')](function(_0x6f85db){if(_0x6f85db){return _0x6f85db?{'count':_0x9693ce,'rows':_0x6f85db}:null;}})[_0x455a('0x23')](respondWithResult(_0x2bc756,null))[_0x455a('0x42')](handleError(_0x2bc756,null));};exports[_0x455a('0x4e')]=function(_0x6fa670,_0x1e009b,_0x1edd29){var _0x44c1ae={};var _0x3d73a7={};var _0x27d3d0;var _0x246a2a;return db['Dynamics365Configuration'][_0x455a('0x4a')]({'where':{'id':_0x6fa670[_0x455a('0x43')]['id']}})[_0x455a('0x23')](handleEntityNotFound(_0x1e009b,null))[_0x455a('0x23')](function(_0x408864){if(_0x408864){_0x27d3d0=_0x408864;_0x3d73a7[_0x455a('0x2a')]=_[_0x455a('0x2d')](db['Dynamics365Field'][_0x455a('0x44')]);_0x3d73a7[_0x455a('0x2c')]=_[_0x455a('0x2d')](_0x6fa670[_0x455a('0x2c')]);_0x3d73a7[_0x455a('0x2e')]=_[_0x455a('0x30')](_0x3d73a7['model'],_0x3d73a7['query']);_0x44c1ae[_0x455a('0x2f')]=_[_0x455a('0x30')](_0x3d73a7[_0x455a('0x2a')],qs['fields'](_0x6fa670['query'][_0x455a('0x31')]));_0x44c1ae['attributes']=_0x44c1ae[_0x455a('0x2f')][_0x455a('0x32')]?_0x44c1ae[_0x455a('0x2f')]:_0x3d73a7[_0x455a('0x2a')];_0x44c1ae[_0x455a('0x34')]=qs['sort'](_0x6fa670[_0x455a('0x2c')][_0x455a('0x35')]);_0x44c1ae[_0x455a('0x36')]=qs['filters'](_[_0x455a('0x37')](_0x6fa670[_0x455a('0x2c')],_0x3d73a7[_0x455a('0x2e')]));if(_0x6fa670[_0x455a('0x2c')][_0x455a('0x38')]){_0x44c1ae['where']=_['merge'](_0x44c1ae[_0x455a('0x36')],{'$or':_['map'](_0x44c1ae[_0x455a('0x2f')],function(_0x5960f0){var _0x3f2e5b={};_0x3f2e5b[_0x5960f0]={'$like':'%'+_0x6fa670[_0x455a('0x2c')]['filter']+'%'};return _0x3f2e5b;})});}_0x44c1ae=_[_0x455a('0x39')]({},_0x44c1ae,_0x6fa670[_0x455a('0x3c')]);return _0x27d3d0[_0x455a('0x4e')](_0x44c1ae);}})['then'](function(_0x5dd127){if(_0x5dd127){_0x246a2a=_0x5dd127[_0x455a('0x32')];if(!_0x6fa670['query']['hasOwnProperty']('nolimit')){_0x44c1ae[_0x455a('0x1d')]=qs['limit'](_0x6fa670[_0x455a('0x2c')][_0x455a('0x1d')]);_0x44c1ae[_0x455a('0x1b')]=qs[_0x455a('0x1b')](_0x6fa670[_0x455a('0x2c')][_0x455a('0x1b')]);}return _0x27d3d0[_0x455a('0x4e')](_0x44c1ae);}})['then'](function(_0x4844ea){if(_0x4844ea){return _0x4844ea?{'count':_0x246a2a,'rows':_0x4844ea}:null;}})[_0x455a('0x23')](respondWithResult(_0x1e009b,null))[_0x455a('0x42')](handleError(_0x1e009b,null));};
\ No newline at end of file
index cf70a6e..95fc5e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['./intDynamics365Configuration.attributes','exports','define','int_dynamics365_configurations','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x368e09,_0x2c1517){var _0x14b7df=function(_0x5002af){while(--_0x5002af){_0x368e09['push'](_0x368e09['shift']());}};_0x14b7df(++_0x2c1517);}(_0x55ca,0x126));var _0xa55c=function(_0x5ad0d7,_0x2645f8){_0x5ad0d7=_0x5ad0d7-0x0;var _0xd83bd=_0x55ca[_0x5ad0d7];return _0xd83bd;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Dynamics365Configuration',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f62=['api','moment','bluebird','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util'];(function(_0x503c75,_0x10835c){var _0x578b3e=function(_0x902af9){while(--_0x902af9){_0x503c75['push'](_0x503c75['shift']());}};_0x578b3e(++_0x10835c);}(_0x9f62,0x154));var _0x29f6=function(_0x476eb3,_0x5d0502){_0x476eb3=_0x476eb3-0x0;var _0x17e46d=_0x9f62[_0x476eb3];return _0x17e46d;};'use strict';var _=require('lodash');var util=require(_0x29f6('0x0'));var logger=require('../../config/logger')(_0x29f6('0x1'));var moment=require(_0x29f6('0x2'));var BPromise=require(_0x29f6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x29f6('0x4'));var config=require(_0x29f6('0x5'));var attributes=require(_0x29f6('0x6'));module[_0x29f6('0x7')]=function(_0x595034,_0xf66137){return _0x595034[_0x29f6('0x8')](_0x29f6('0x9'),attributes,{'tableName':_0x29f6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd35ae2..9f1c962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7edf=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x3aa53a,_0x3fefc9){var _0x25acfd=function(_0x66f54){while(--_0x66f54){_0x3aa53a['push'](_0x3aa53a['shift']());}};_0x25acfd(++_0x3fefc9);}(_0x7edf,0xe7));var _0xf7ed=function(_0x267c52,_0x3c0df3){_0x267c52=_0x267c52-0x0;var _0x46c47b=_0x7edf[_0x267c52];return _0x46c47b;};'use strict';var _=require(_0xf7ed('0x0'));var util=require(_0xf7ed('0x1'));var moment=require(_0xf7ed('0x2'));var BPromise=require(_0xf7ed('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf7ed('0x4'));var db=require(_0xf7ed('0x5'))['db'];var utils=require(_0xf7ed('0x6'));var logger=require(_0xf7ed('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf7ed('0x8'));var client=jayson[_0xf7ed('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37d46c,_0x19d1f5,_0x2d9ed6){return new BPromise(function(_0x432e09,_0x44f821){return client['request'](_0x37d46c,_0x2d9ed6)['then'](function(_0x1b7aa2){logger['info'](_0xf7ed('0xa'),_0x19d1f5,_0xf7ed('0xb'));logger[_0xf7ed('0xc')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x19d1f5,_0xf7ed('0xb'),JSON[_0xf7ed('0xd')](_0x1b7aa2));if(_0x1b7aa2[_0xf7ed('0xe')]){if(_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0xf')]===0x1f4){logger['error'](_0xf7ed('0xa'),_0x19d1f5,_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);return _0x44f821(_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);}logger[_0xf7ed('0xe')](_0xf7ed('0xa'),_0x19d1f5,_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);return _0x432e09(_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);}else{logger['info'](_0xf7ed('0xa'),_0x19d1f5,_0xf7ed('0xb'));_0x432e09(_0x1b7aa2[_0xf7ed('0x11')]['message']);}})[_0xf7ed('0x12')](function(_0x17be58){logger[_0xf7ed('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x19d1f5,_0x17be58);_0x44f821(_0x17be58);});});}
\ No newline at end of file
+var _0xf714=['catch','lodash','util','moment','bluebird','../../mysqldb','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error','Dynamics365Configuration,\x20%s,\x20%s','message'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf714,0xb5));var _0x4f71=function(_0x29a7a9,_0x46c742){_0x29a7a9=_0x29a7a9-0x0;var _0x53713b=_0xf714[_0x29a7a9];return _0x53713b;};'use strict';var _=require(_0x4f71('0x0'));var util=require(_0x4f71('0x1'));var moment=require(_0x4f71('0x2'));var BPromise=require(_0x4f71('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4f71('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x4f71('0x5'));var jayson=require(_0x4f71('0x6'));var client=jayson[_0x4f71('0x7')][_0x4f71('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4803ce,_0x4d797a,_0x1a4fc5){return new BPromise(function(_0x4c8d11,_0x18e190){return client['request'](_0x4803ce,_0x1a4fc5)[_0x4f71('0x9')](function(_0x2597e9){logger[_0x4f71('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x4d797a,_0x4f71('0xb'));logger[_0x4f71('0xc')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x4d797a,'request\x20sent',JSON[_0x4f71('0xd')](_0x2597e9));if(_0x2597e9[_0x4f71('0xe')]){if(_0x2597e9['error']['code']===0x1f4){logger[_0x4f71('0xe')](_0x4f71('0xf'),_0x4d797a,_0x2597e9[_0x4f71('0xe')][_0x4f71('0x10')]);return _0x18e190(_0x2597e9[_0x4f71('0xe')][_0x4f71('0x10')]);}logger[_0x4f71('0xe')](_0x4f71('0xf'),_0x4d797a,_0x2597e9[_0x4f71('0xe')][_0x4f71('0x10')]);return _0x4c8d11(_0x2597e9['error']['message']);}else{logger['info'](_0x4f71('0xf'),_0x4d797a,_0x4f71('0xb'));_0x4c8d11(_0x2597e9['result'][_0x4f71('0x10')]);}})[_0x4f71('0x11')](function(_0x232bfa){logger[_0x4f71('0xe')](_0x4f71('0xf'),_0x4d797a,_0x232bfa);_0x18e190(_0x232bfa);});});}
\ No newline at end of file
index dc19f0b..e5aa481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9558=['../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','show','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x4a047b,_0x2ef8e9){var _0x203e9c=function(_0x12390e){while(--_0x12390e){_0x4a047b['push'](_0x4a047b['shift']());}};_0x203e9c(++_0x2ef8e9);}(_0x9558,0x119));var _0x8955=function(_0x31850b,_0x4584c1){_0x31850b=_0x31850b-0x0;var _0x292dfc=_0x9558[_0x31850b];return _0x292dfc;};'use strict';var multer=require(_0x8955('0x0'));var util=require(_0x8955('0x1'));var path=require(_0x8955('0x2'));var timeout=require(_0x8955('0x3'));var express=require(_0x8955('0x4'));var router=express[_0x8955('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8955('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8955('0x7'));var controller=require(_0x8955('0x8'));router[_0x8955('0x9')]('/',auth[_0x8955('0xa')](),controller['index']);router[_0x8955('0x9')]('/:id',auth[_0x8955('0xa')](),controller[_0x8955('0xb')]);router['post']('/',auth[_0x8955('0xa')](),controller[_0x8955('0xc')]);router[_0x8955('0xd')](_0x8955('0xe'),auth[_0x8955('0xa')](),controller[_0x8955('0xf')]);router[_0x8955('0x10')]('/:id',auth[_0x8955('0xa')](),controller['destroy']);module[_0x8955('0x11')]=router;
\ No newline at end of file
+var _0x0f8b=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','/:id','post','create','put','update'];(function(_0x455127,_0x205384){var _0x20930c=function(_0x1685a2){while(--_0x1685a2){_0x455127['push'](_0x455127['shift']());}};_0x20930c(++_0x205384);}(_0x0f8b,0x168));var _0xb0f8=function(_0x4142c6,_0x30b59e){_0x4142c6=_0x4142c6-0x0;var _0x510824=_0x0f8b[_0x4142c6];return _0x510824;};'use strict';var multer=require(_0xb0f8('0x0'));var util=require(_0xb0f8('0x1'));var path=require(_0xb0f8('0x2'));var timeout=require(_0xb0f8('0x3'));var express=require(_0xb0f8('0x4'));var router=express[_0xb0f8('0x5')]();var fs_extra=require(_0xb0f8('0x6'));var auth=require(_0xb0f8('0x7'));var interaction=require(_0xb0f8('0x8'));var config=require(_0xb0f8('0x9'));var controller=require(_0xb0f8('0xa'));router[_0xb0f8('0xb')]('/',auth[_0xb0f8('0xc')](),controller['index']);router[_0xb0f8('0xb')](_0xb0f8('0xd'),auth[_0xb0f8('0xc')](),controller['show']);router[_0xb0f8('0xe')]('/',auth[_0xb0f8('0xc')](),controller[_0xb0f8('0xf')]);router[_0xb0f8('0x10')](_0xb0f8('0xd'),auth[_0xb0f8('0xc')](),controller[_0xb0f8('0x11')]);router[_0xb0f8('0x12')](_0xb0f8('0xd'),auth[_0xb0f8('0xc')](),controller[_0xb0f8('0x13')]);module[_0xb0f8('0x14')]=router;
\ No newline at end of file
index f907ed3..121e0b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe36a=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','picklist','STRING'];(function(_0x5cc8b9,_0x20e3c3){var _0x58892e=function(_0x87457a){while(--_0x87457a){_0x5cc8b9['push'](_0x5cc8b9['shift']());}};_0x58892e(++_0x20e3c3);}(_0xe36a,0x1ba));var _0xae36=function(_0x687ddc,_0x2092fa){_0x687ddc=_0x687ddc-0x0;var _0x441991=_0xe36a[_0x687ddc];return _0x441991;};'use strict';var Sequelize=require(_0xae36('0x0'));module[_0xae36('0x1')]={'type':{'type':Sequelize[_0xae36('0x2')](_0xae36('0x3'),_0xae36('0x4'),_0xae36('0x5'),'keyValue',_0xae36('0x6')),'defaultValue':_0xae36('0x3')},'content':{'type':Sequelize[_0xae36('0x7')]},'key':{'type':Sequelize[_0xae36('0x7')]},'keyType':{'type':Sequelize[_0xae36('0x2')](_0xae36('0x3'),_0xae36('0x4'),_0xae36('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xae36('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xae36('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa8b5=['picklist','string','STRING','BOOLEAN','sequelize','ENUM','customVariable'];(function(_0x471948,_0xe88457){var _0x214cf5=function(_0x4bba74){while(--_0x4bba74){_0x471948['push'](_0x471948['shift']());}};_0x214cf5(++_0xe88457);}(_0xa8b5,0x115));var _0x5a8b=function(_0x1796d7,_0x2f2ed3){_0x1796d7=_0x1796d7-0x0;var _0x25fe90=_0xa8b5[_0x1796d7];return _0x25fe90;};'use strict';var Sequelize=require(_0x5a8b('0x0'));module['exports']={'type':{'type':Sequelize[_0x5a8b('0x1')]('string','variable',_0x5a8b('0x2'),'keyValue',_0x5a8b('0x3')),'defaultValue':_0x5a8b('0x4')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x5a8b('0x1')](_0x5a8b('0x4'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x5a8b('0x5')]},'idField':{'type':Sequelize[_0x5a8b('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x5a8b('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5a8b('0x5')]}};
\ No newline at end of file
index 1e0463c..9baea2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5e=['bluebird','util','ejs','fs-extra','lodash','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','sort','pick','where','merge','VIRTUAL','options','Dynamics365Field','include','show','params','keys','fields','find','catch','create','body','rimraf','fast-json-patch','request-promise','moment'];(function(_0x314c89,_0x3c50a1){var _0x29926b=function(_0x1eb3cf){while(--_0x1eb3cf){_0x314c89['push'](_0x314c89['shift']());}};_0x29926b(++_0x3c50a1);}(_0xad5e,0x18e));var _0xead5=function(_0x3d3379,_0x4c9bc1){_0x3d3379=_0x3d3379-0x0;var _0x358633=_0xad5e[_0x3d3379];return _0x358633;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xead5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xead5('0x1'));var rp=require(_0xead5('0x2'));var moment=require(_0xead5('0x3'));var BPromise=require(_0xead5('0x4'));var Mustache=require('mustache');var util=require(_0xead5('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xead5('0x6'));var fs=require('fs');var fs_extra=require(_0xead5('0x7'));var _=require(_0xead5('0x8'));var squel=require(_0xead5('0x9'));var crypto=require('crypto');var jsforce=require(_0xead5('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xead5('0xb'));var querystring=require('querystring');var Papa=require(_0xead5('0xc'));var Redis=require(_0xead5('0xd'));var authService=require(_0xead5('0xe'));var qs=require(_0xead5('0xf'));var as=require(_0xead5('0x10'));var hardwareService=require(_0xead5('0x11'));var logger=require(_0xead5('0x12'))(_0xead5('0x13'));var utils=require(_0xead5('0x14'));var config=require(_0xead5('0x15'));var licenseUtil=require(_0xead5('0x16'));var db=require(_0xead5('0x17'))['db'];function respondWithStatusCode(_0x360ba7,_0x4d6cc7){_0x4d6cc7=_0x4d6cc7||0xcc;return function(_0x25e355){if(_0x25e355){return _0x360ba7[_0xead5('0x18')](_0x4d6cc7);}return _0x360ba7[_0xead5('0x19')](_0x4d6cc7)[_0xead5('0x1a')]();};}function respondWithResult(_0x5e4c7c,_0x3401c0){_0x3401c0=_0x3401c0||0xc8;return function(_0x51caa2){if(_0x51caa2){return _0x5e4c7c[_0xead5('0x19')](_0x3401c0)['json'](_0x51caa2);}};}function respondWithFilteredResult(_0x19316b,_0x556275){return function(_0x4620cc){if(_0x4620cc){var _0x2b57c2=typeof _0x556275[_0xead5('0x1b')]==='undefined'&&typeof _0x556275[_0xead5('0x1c')]==='undefined';var _0x754202=_0x4620cc['count'];var _0x6194ad=_0x2b57c2?0x0:_0x556275[_0xead5('0x1b')];var _0x3b60f8=_0x2b57c2?_0x4620cc[_0xead5('0x1d')]:_0x556275[_0xead5('0x1b')]+_0x556275[_0xead5('0x1c')];var _0x5dac56;if(_0x3b60f8>=_0x754202){_0x3b60f8=_0x754202;_0x5dac56=0xc8;}else{_0x5dac56=0xce;}_0x19316b[_0xead5('0x19')](_0x5dac56);return _0x19316b[_0xead5('0x1e')](_0xead5('0x1f'),_0x6194ad+'-'+_0x3b60f8+'/'+_0x754202)[_0xead5('0x20')](_0x4620cc);}return null;};}function patchUpdates(_0x4915c3){return function(_0x44576e){try{jsonpatch['apply'](_0x44576e,_0x4915c3,!![]);}catch(_0x57c69d){return BPromise['reject'](_0x57c69d);}return _0x44576e['save']();};}function saveUpdates(_0x2eaf9f,_0x166697){return function(_0x4421d6){if(_0x4421d6){return _0x4421d6[_0xead5('0x21')](_0x2eaf9f)[_0xead5('0x22')](function(_0x8ee372){return _0x8ee372;});}return null;};}function removeEntity(_0x442ef8,_0x4095dd){return function(_0x9e0ec0){if(_0x9e0ec0){return _0x9e0ec0[_0xead5('0x23')]()[_0xead5('0x22')](function(){_0x442ef8[_0xead5('0x19')](0xcc)[_0xead5('0x1a')]();});}};}function handleEntityNotFound(_0x32985d,_0x4c8580){return function(_0x1c7fd3){if(!_0x1c7fd3){_0x32985d[_0xead5('0x18')](0x194);}return _0x1c7fd3;};}function handleError(_0x48f50a,_0x170209){_0x170209=_0x170209||0x1f4;return function(_0x23ed79){logger[_0xead5('0x24')](_0x23ed79[_0xead5('0x25')]);if(_0x23ed79[_0xead5('0x26')]){delete _0x23ed79[_0xead5('0x26')];}_0x48f50a[_0xead5('0x19')](_0x170209)[_0xead5('0x27')](_0x23ed79);};}exports['index']=function(_0x234569,_0xa0d922){var _0x2e1c93={},_0x271b90={},_0x3ce2a2={'count':0x0,'rows':[]};var _0x2f2ec6=_[_0xead5('0x28')](db['Dynamics365Field'][_0xead5('0x29')],function(_0x598666){return{'name':_0x598666[_0xead5('0x2a')],'type':_0x598666[_0xead5('0x2b')][_0xead5('0x2c')]};});_0x271b90[_0xead5('0x2d')]=_[_0xead5('0x28')](_0x2f2ec6,'name');_0x271b90['query']=_['keys'](_0x234569[_0xead5('0x2e')]);_0x271b90[_0xead5('0x2f')]=_[_0xead5('0x30')](_0x271b90[_0xead5('0x2d')],_0x271b90['query']);_0x2e1c93[_0xead5('0x31')]=_['intersection'](_0x271b90[_0xead5('0x2d')],qs['fields'](_0x234569[_0xead5('0x2e')]['fields']));_0x2e1c93[_0xead5('0x31')]=_0x2e1c93[_0xead5('0x31')]['length']?_0x2e1c93[_0xead5('0x31')]:_0x271b90[_0xead5('0x2d')];if(!_0x234569[_0xead5('0x2e')][_0xead5('0x32')]('nolimit')){_0x2e1c93['limit']=qs[_0xead5('0x1c')](_0x234569['query']['limit']);_0x2e1c93[_0xead5('0x1b')]=qs[_0xead5('0x1b')](_0x234569[_0xead5('0x2e')][_0xead5('0x1b')]);}_0x2e1c93['order']=qs[_0xead5('0x33')](_0x234569['query'][_0xead5('0x33')]);_0x2e1c93['where']=qs[_0xead5('0x2f')](_[_0xead5('0x34')](_0x234569[_0xead5('0x2e')],_0x271b90[_0xead5('0x2f')]),_0x2f2ec6);if(_0x234569[_0xead5('0x2e')]['filter']){_0x2e1c93[_0xead5('0x35')]=_[_0xead5('0x36')](_0x2e1c93[_0xead5('0x35')],{'$or':_[_0xead5('0x28')](_0x2f2ec6,function(_0x3c0753){if(_0x3c0753[_0xead5('0x2b')]!==_0xead5('0x37')){var _0x569589={};_0x569589[_0x3c0753[_0xead5('0x26')]]={'$like':'%'+_0x234569[_0xead5('0x2e')]['filter']+'%'};return _0x569589;}})});}_0x2e1c93=_[_0xead5('0x36')]({},_0x2e1c93,_0x234569[_0xead5('0x38')]);var _0x322676={'where':_0x2e1c93['where']};return db[_0xead5('0x39')]['count'](_0x322676)['then'](function(_0x24d7fe){_0x3ce2a2[_0xead5('0x1d')]=_0x24d7fe;if(_0x234569[_0xead5('0x2e')]['includeAll']){_0x2e1c93[_0xead5('0x3a')]=[{'all':!![]}];}return db['Dynamics365Field']['findAll'](_0x2e1c93);})[_0xead5('0x22')](function(_0x58fddf){_0x3ce2a2['rows']=_0x58fddf;return _0x3ce2a2;})['then'](respondWithFilteredResult(_0xa0d922,_0x2e1c93))['catch'](handleError(_0xa0d922,null));};exports[_0xead5('0x3b')]=function(_0xad8a16,_0x5f174b){var _0x4667ea={'raw':!![],'where':{'id':_0xad8a16[_0xead5('0x3c')]['id']}},_0x5f1e52={};_0x5f1e52['model']=_[_0xead5('0x3d')](db[_0xead5('0x39')][_0xead5('0x29')]);_0x5f1e52['query']=_[_0xead5('0x3d')](_0xad8a16['query']);_0x5f1e52[_0xead5('0x2f')]=_[_0xead5('0x30')](_0x5f1e52[_0xead5('0x2d')],_0x5f1e52[_0xead5('0x2e')]);_0x4667ea[_0xead5('0x31')]=_['intersection'](_0x5f1e52['model'],qs[_0xead5('0x3e')](_0xad8a16['query'][_0xead5('0x3e')]));_0x4667ea[_0xead5('0x31')]=_0x4667ea[_0xead5('0x31')]['length']?_0x4667ea[_0xead5('0x31')]:_0x5f1e52[_0xead5('0x2d')];if(_0xad8a16[_0xead5('0x2e')]['includeAll']){_0x4667ea[_0xead5('0x3a')]=[{'all':!![]}];}_0x4667ea=_[_0xead5('0x36')]({},_0x4667ea,_0xad8a16[_0xead5('0x38')]);return db[_0xead5('0x39')][_0xead5('0x3f')](_0x4667ea)[_0xead5('0x22')](handleEntityNotFound(_0x5f174b,null))[_0xead5('0x22')](respondWithResult(_0x5f174b,null))[_0xead5('0x40')](handleError(_0x5f174b,null));};exports[_0xead5('0x41')]=function(_0x5201b5,_0x729b8){return db[_0xead5('0x39')][_0xead5('0x41')](_0x5201b5['body'],{})[_0xead5('0x22')](respondWithResult(_0x729b8,0xc9))[_0xead5('0x40')](handleError(_0x729b8,null));};exports['update']=function(_0xa24f8d,_0xc4041a){if(_0xa24f8d[_0xead5('0x42')]['id']){delete _0xa24f8d[_0xead5('0x42')]['id'];}return db['Dynamics365Field'][_0xead5('0x3f')]({'where':{'id':_0xa24f8d[_0xead5('0x3c')]['id']}})[_0xead5('0x22')](handleEntityNotFound(_0xc4041a,null))[_0xead5('0x22')](saveUpdates(_0xa24f8d[_0xead5('0x42')],null))[_0xead5('0x22')](respondWithResult(_0xc4041a,null))[_0xead5('0x40')](handleError(_0xc4041a,null));};exports[_0xead5('0x23')]=function(_0x1fae77,_0x141950){return db[_0xead5('0x39')][_0xead5('0x3f')]({'where':{'id':_0x1fae77[_0xead5('0x3c')]['id']}})[_0xead5('0x22')](handleEntityNotFound(_0x141950,null))['then'](removeEntity(_0x141950,null))[_0xead5('0x40')](handleError(_0x141950,null));};
\ No newline at end of file
+var _0x23da=['rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','limit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','create','body','catch','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','Dynamics365Field'];(function(_0x2e8ea8,_0x15a943){var _0x123d3c=function(_0x5d4468){while(--_0x5d4468){_0x2e8ea8['push'](_0x2e8ea8['shift']());}};_0x123d3c(++_0x15a943);}(_0x23da,0x195));var _0xa23d=function(_0xffd6f2,_0xf89337){_0xffd6f2=_0xffd6f2-0x0;var _0x3411a4=_0x23da[_0xffd6f2];return _0x3411a4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa23d('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa23d('0x1'));var moment=require(_0xa23d('0x2'));var BPromise=require(_0xa23d('0x3'));var Mustache=require('mustache');var util=require(_0xa23d('0x4'));var path=require(_0xa23d('0x5'));var sox=require(_0xa23d('0x6'));var csv=require('to-csv');var ejs=require(_0xa23d('0x7'));var fs=require('fs');var fs_extra=require(_0xa23d('0x8'));var _=require(_0xa23d('0x9'));var squel=require(_0xa23d('0xa'));var crypto=require(_0xa23d('0xb'));var jsforce=require(_0xa23d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa23d('0xd'));var querystring=require('querystring');var Papa=require(_0xa23d('0xe'));var Redis=require(_0xa23d('0xf'));var authService=require(_0xa23d('0x10'));var qs=require(_0xa23d('0x11'));var as=require(_0xa23d('0x12'));var hardwareService=require(_0xa23d('0x13'));var logger=require(_0xa23d('0x14'))(_0xa23d('0x15'));var utils=require(_0xa23d('0x16'));var config=require(_0xa23d('0x17'));var licenseUtil=require(_0xa23d('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x28d771,_0x3efaa0){_0x3efaa0=_0x3efaa0||0xcc;return function(_0x2546ce){if(_0x2546ce){return _0x28d771['sendStatus'](_0x3efaa0);}return _0x28d771[_0xa23d('0x19')](_0x3efaa0)[_0xa23d('0x1a')]();};}function respondWithResult(_0x13b69a,_0x182239){_0x182239=_0x182239||0xc8;return function(_0x206f65){if(_0x206f65){return _0x13b69a[_0xa23d('0x19')](_0x182239)[_0xa23d('0x1b')](_0x206f65);}};}function respondWithFilteredResult(_0x32463b,_0x1bf586){return function(_0x35b49f){if(_0x35b49f){var _0x17b9f1=typeof _0x1bf586[_0xa23d('0x1c')]===_0xa23d('0x1d')&&typeof _0x1bf586['limit']==='undefined';var _0x15534f=_0x35b49f['count'];var _0x9f4997=_0x17b9f1?0x0:_0x1bf586['offset'];var _0x127e1b=_0x17b9f1?_0x35b49f[_0xa23d('0x1e')]:_0x1bf586[_0xa23d('0x1c')]+_0x1bf586['limit'];var _0x566b83;if(_0x127e1b>=_0x15534f){_0x127e1b=_0x15534f;_0x566b83=0xc8;}else{_0x566b83=0xce;}_0x32463b[_0xa23d('0x19')](_0x566b83);return _0x32463b['set'](_0xa23d('0x1f'),_0x9f4997+'-'+_0x127e1b+'/'+_0x15534f)[_0xa23d('0x1b')](_0x35b49f);}return null;};}function patchUpdates(_0x490cde){return function(_0x407482){try{jsonpatch[_0xa23d('0x20')](_0x407482,_0x490cde,!![]);}catch(_0x1dfbfb){return BPromise[_0xa23d('0x21')](_0x1dfbfb);}return _0x407482['save']();};}function saveUpdates(_0x29f2a6,_0x1ce5e8){return function(_0x5bfc5a){if(_0x5bfc5a){return _0x5bfc5a[_0xa23d('0x22')](_0x29f2a6)[_0xa23d('0x23')](function(_0x199051){return _0x199051;});}return null;};}function removeEntity(_0x2811f4,_0x1ba75d){return function(_0x4a1de4){if(_0x4a1de4){return _0x4a1de4[_0xa23d('0x24')]()[_0xa23d('0x23')](function(){_0x2811f4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1eecf3,_0x4c1336){return function(_0x4b486f){if(!_0x4b486f){_0x1eecf3[_0xa23d('0x25')](0x194);}return _0x4b486f;};}function handleError(_0x43fec0,_0x136718){_0x136718=_0x136718||0x1f4;return function(_0x50cc52){logger[_0xa23d('0x26')](_0x50cc52[_0xa23d('0x27')]);if(_0x50cc52[_0xa23d('0x28')]){delete _0x50cc52['name'];}_0x43fec0['status'](_0x136718)[_0xa23d('0x29')](_0x50cc52);};}exports[_0xa23d('0x2a')]=function(_0x157c85,_0x5efa42){var _0x2a9035={},_0x20e636={},_0x4450f3={'count':0x0,'rows':[]};var _0x58c2fd=_[_0xa23d('0x2b')](db[_0xa23d('0x2c')][_0xa23d('0x2d')],function(_0x4a91ef){return{'name':_0x4a91ef[_0xa23d('0x2e')],'type':_0x4a91ef[_0xa23d('0x2f')][_0xa23d('0x30')]};});_0x20e636[_0xa23d('0x31')]=_['map'](_0x58c2fd,_0xa23d('0x28'));_0x20e636[_0xa23d('0x32')]=_[_0xa23d('0x33')](_0x157c85[_0xa23d('0x32')]);_0x20e636[_0xa23d('0x34')]=_[_0xa23d('0x35')](_0x20e636['model'],_0x20e636[_0xa23d('0x32')]);_0x2a9035[_0xa23d('0x36')]=_[_0xa23d('0x35')](_0x20e636['model'],qs[_0xa23d('0x37')](_0x157c85['query'][_0xa23d('0x37')]));_0x2a9035[_0xa23d('0x36')]=_0x2a9035[_0xa23d('0x36')][_0xa23d('0x38')]?_0x2a9035['attributes']:_0x20e636['model'];if(!_0x157c85[_0xa23d('0x32')]['hasOwnProperty']('nolimit')){_0x2a9035['limit']=qs[_0xa23d('0x39')](_0x157c85[_0xa23d('0x32')][_0xa23d('0x39')]);_0x2a9035[_0xa23d('0x1c')]=qs[_0xa23d('0x1c')](_0x157c85[_0xa23d('0x32')][_0xa23d('0x1c')]);}_0x2a9035[_0xa23d('0x3a')]=qs[_0xa23d('0x3b')](_0x157c85[_0xa23d('0x32')][_0xa23d('0x3b')]);_0x2a9035['where']=qs[_0xa23d('0x34')](_[_0xa23d('0x3c')](_0x157c85[_0xa23d('0x32')],_0x20e636[_0xa23d('0x34')]),_0x58c2fd);if(_0x157c85['query'][_0xa23d('0x3d')]){_0x2a9035[_0xa23d('0x3e')]=_[_0xa23d('0x3f')](_0x2a9035[_0xa23d('0x3e')],{'$or':_[_0xa23d('0x2b')](_0x58c2fd,function(_0x45a185){if(_0x45a185[_0xa23d('0x2f')]!==_0xa23d('0x40')){var _0xa40750={};_0xa40750[_0x45a185['name']]={'$like':'%'+_0x157c85[_0xa23d('0x32')][_0xa23d('0x3d')]+'%'};return _0xa40750;}})});}_0x2a9035=_[_0xa23d('0x3f')]({},_0x2a9035,_0x157c85[_0xa23d('0x41')]);var _0x47a34a={'where':_0x2a9035[_0xa23d('0x3e')]};return db[_0xa23d('0x2c')][_0xa23d('0x1e')](_0x47a34a)[_0xa23d('0x23')](function(_0x38e7e9){_0x4450f3[_0xa23d('0x1e')]=_0x38e7e9;if(_0x157c85[_0xa23d('0x32')][_0xa23d('0x42')]){_0x2a9035[_0xa23d('0x43')]=[{'all':!![]}];}return db['Dynamics365Field'][_0xa23d('0x44')](_0x2a9035);})['then'](function(_0x30ba38){_0x4450f3[_0xa23d('0x45')]=_0x30ba38;return _0x4450f3;})[_0xa23d('0x23')](respondWithFilteredResult(_0x5efa42,_0x2a9035))['catch'](handleError(_0x5efa42,null));};exports['show']=function(_0x3998bc,_0x36419f){var _0x6aee9e={'raw':!![],'where':{'id':_0x3998bc[_0xa23d('0x46')]['id']}},_0x459327={};_0x459327[_0xa23d('0x31')]=_[_0xa23d('0x33')](db[_0xa23d('0x2c')][_0xa23d('0x2d')]);_0x459327[_0xa23d('0x32')]=_[_0xa23d('0x33')](_0x3998bc['query']);_0x459327['filters']=_[_0xa23d('0x35')](_0x459327[_0xa23d('0x31')],_0x459327[_0xa23d('0x32')]);_0x6aee9e[_0xa23d('0x36')]=_[_0xa23d('0x35')](_0x459327['model'],qs[_0xa23d('0x37')](_0x3998bc[_0xa23d('0x32')][_0xa23d('0x37')]));_0x6aee9e['attributes']=_0x6aee9e[_0xa23d('0x36')]['length']?_0x6aee9e[_0xa23d('0x36')]:_0x459327[_0xa23d('0x31')];if(_0x3998bc[_0xa23d('0x32')][_0xa23d('0x42')]){_0x6aee9e[_0xa23d('0x43')]=[{'all':!![]}];}_0x6aee9e=_['merge']({},_0x6aee9e,_0x3998bc[_0xa23d('0x41')]);return db['Dynamics365Field'][_0xa23d('0x47')](_0x6aee9e)[_0xa23d('0x23')](handleEntityNotFound(_0x36419f,null))[_0xa23d('0x23')](respondWithResult(_0x36419f,null))['catch'](handleError(_0x36419f,null));};exports[_0xa23d('0x48')]=function(_0x33be4d,_0x321243){return db[_0xa23d('0x2c')][_0xa23d('0x48')](_0x33be4d[_0xa23d('0x49')],{})['then'](respondWithResult(_0x321243,0xc9))[_0xa23d('0x4a')](handleError(_0x321243,null));};exports['update']=function(_0xe86176,_0x8edf7d){if(_0xe86176[_0xa23d('0x49')]['id']){delete _0xe86176[_0xa23d('0x49')]['id'];}return db[_0xa23d('0x2c')][_0xa23d('0x47')]({'where':{'id':_0xe86176[_0xa23d('0x46')]['id']}})[_0xa23d('0x23')](handleEntityNotFound(_0x8edf7d,null))['then'](saveUpdates(_0xe86176[_0xa23d('0x49')],null))[_0xa23d('0x23')](respondWithResult(_0x8edf7d,null))['catch'](handleError(_0x8edf7d,null));};exports[_0xa23d('0x24')]=function(_0x1f6997,_0x2e0042){return db['Dynamics365Field'][_0xa23d('0x47')]({'where':{'id':_0x1f6997[_0xa23d('0x46')]['id']}})[_0xa23d('0x23')](handleEntityNotFound(_0x2e0042,null))[_0xa23d('0x23')](removeEntity(_0x2e0042,null))['catch'](handleError(_0x2e0042,null));};
\ No newline at end of file
index 8055a79..ff139b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf005=['bluebird','request-promise','path','rimraf','exports','define','int_dynamics365_fields','dynamics365_unique_index','FieldId','../../config/logger','api','moment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf005,0x11d));var _0x5f00=function(_0x43cbb0,_0x2d1fa8){_0x43cbb0=_0x43cbb0-0x0;var _0x5ce87e=_0xf005[_0x43cbb0];return _0x5ce87e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5f00('0x0'))(_0x5f00('0x1'));var moment=require(_0x5f00('0x2'));var BPromise=require(_0x5f00('0x3'));var rp=require(_0x5f00('0x4'));var fs=require('fs');var path=require(_0x5f00('0x5'));var rimraf=require(_0x5f00('0x6'));var config=require('../../config/environment');var attributes=require('./intDynamics365Field.attributes');module[_0x5f00('0x7')]=function(_0x5e7a48,_0x5508d6){return _0x5e7a48[_0x5f00('0x8')]('Dynamics365Field',attributes,{'tableName':_0x5f00('0x9'),'paranoid':![],'indexes':[{'name':_0x5f00('0xa'),'fields':['idField',_0x5f00('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ab4=['moment','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','lodash','util','../../config/logger'];(function(_0x43297c,_0x40e4da){var _0x57e5f2=function(_0xb4d1de){while(--_0xb4d1de){_0x43297c['push'](_0x43297c['shift']());}};_0x57e5f2(++_0x40e4da);}(_0x6ab4,0x135));var _0x46ab=function(_0x4d1140,_0x47b4ee){_0x4d1140=_0x4d1140-0x0;var _0x1bd5d2=_0x6ab4[_0x4d1140];return _0x1bd5d2;};'use strict';var _=require(_0x46ab('0x0'));var util=require(_0x46ab('0x1'));var logger=require(_0x46ab('0x2'))('api');var moment=require(_0x46ab('0x3'));var BPromise=require('bluebird');var rp=require(_0x46ab('0x4'));var fs=require('fs');var path=require(_0x46ab('0x5'));var rimraf=require(_0x46ab('0x6'));var config=require(_0x46ab('0x7'));var attributes=require(_0x46ab('0x8'));module[_0x46ab('0x9')]=function(_0xf7c7c9,_0x149750){return _0xf7c7c9['define'](_0x46ab('0xa'),attributes,{'tableName':_0x46ab('0xb'),'paranoid':![],'indexes':[{'name':_0x46ab('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7b41579..d1becdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1137=['Dynamics365Field,\x20%s,\x20%s','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x3330e4,_0x24dad5){var _0xd68da8=function(_0x412163){while(--_0x412163){_0x3330e4['push'](_0x3330e4['shift']());}};_0xd68da8(++_0x24dad5);}(_0x1137,0x1ec));var _0x7113=function(_0x120376,_0x571898){_0x120376=_0x120376-0x0;var _0x28c529=_0x1137[_0x120376];return _0x28c529;};'use strict';var _=require('lodash');var util=require(_0x7113('0x0'));var moment=require(_0x7113('0x1'));var BPromise=require(_0x7113('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7113('0x3'));var db=require(_0x7113('0x4'))['db'];var utils=require(_0x7113('0x5'));var logger=require(_0x7113('0x6'))(_0x7113('0x7'));var config=require(_0x7113('0x8'));var jayson=require(_0x7113('0x9'));var client=jayson[_0x7113('0xa')][_0x7113('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d46c4,_0x845199,_0x513609){return new BPromise(function(_0x5c82ad,_0x5e8f4b){return client['request'](_0x4d46c4,_0x513609)[_0x7113('0xc')](function(_0x86f68b){logger[_0x7113('0xd')](_0x7113('0xe'),_0x845199,'request\x20sent');logger[_0x7113('0xf')](_0x7113('0x10'),_0x845199,'request\x20sent',JSON['stringify'](_0x86f68b));if(_0x86f68b['error']){if(_0x86f68b['error'][_0x7113('0x11')]===0x1f4){logger['error'](_0x7113('0xe'),_0x845199,_0x86f68b[_0x7113('0x12')][_0x7113('0x13')]);return _0x5e8f4b(_0x86f68b[_0x7113('0x12')][_0x7113('0x13')]);}logger[_0x7113('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x845199,_0x86f68b[_0x7113('0x12')]['message']);return _0x5c82ad(_0x86f68b[_0x7113('0x12')][_0x7113('0x13')]);}else{logger[_0x7113('0xd')](_0x7113('0xe'),_0x845199,_0x7113('0x14'));_0x5c82ad(_0x86f68b[_0x7113('0x15')][_0x7113('0x13')]);}})[_0x7113('0x16')](function(_0x5dd6a6){logger[_0x7113('0x12')](_0x7113('0xe'),_0x845199,_0x5dd6a6);_0x5e8f4b(_0x5dd6a6);});});}
\ No newline at end of file
+var _0xd47b=['request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','lodash','moment','bluebird','randomstring','../../config/utils','rpc','client','http','then','Dynamics365Field,\x20%s,\x20%s'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xd47b,0x1e3));var _0xbd47=function(_0x549652,_0x28a9f8){_0x549652=_0x549652-0x0;var _0x58cff0=_0xd47b[_0x549652];return _0x58cff0;};'use strict';var _=require(_0xbd47('0x0'));var util=require('util');var moment=require(_0xbd47('0x1'));var BPromise=require(_0xbd47('0x2'));var rs=require(_0xbd47('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbd47('0x4'));var logger=require('../../config/logger')(_0xbd47('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbd47('0x6')][_0xbd47('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5e14a2,_0x52a477,_0x4ead66){return new BPromise(function(_0x2ae488,_0x2687b6){return client['request'](_0x5e14a2,_0x4ead66)[_0xbd47('0x8')](function(_0x7990b3){logger['info'](_0xbd47('0x9'),_0x52a477,_0xbd47('0xa'));logger['debug'](_0xbd47('0xb'),_0x52a477,'request\x20sent',JSON['stringify'](_0x7990b3));if(_0x7990b3[_0xbd47('0xc')]){if(_0x7990b3[_0xbd47('0xc')][_0xbd47('0xd')]===0x1f4){logger[_0xbd47('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x52a477,_0x7990b3[_0xbd47('0xc')][_0xbd47('0xe')]);return _0x2687b6(_0x7990b3['error'][_0xbd47('0xe')]);}logger[_0xbd47('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x52a477,_0x7990b3['error']['message']);return _0x2ae488(_0x7990b3['error'][_0xbd47('0xe')]);}else{logger[_0xbd47('0xf')](_0xbd47('0x9'),_0x52a477,'request\x20sent');_0x2ae488(_0x7990b3['result'][_0xbd47('0xe')]);}})[_0xbd47('0x10')](function(_0x21a49a){logger[_0xbd47('0xc')](_0xbd47('0x9'),_0x52a477,_0x21a49a);_0x2687b6(_0x21a49a);});});}
\ No newline at end of file
index 8107284..5587d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07a=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','/:id','delete'];(function(_0x378f75,_0x13a8ed){var _0x90addc=function(_0x3f4849){while(--_0x3f4849){_0x378f75['push'](_0x378f75['shift']());}};_0x90addc(++_0x13a8ed);}(_0xa07a,0xb2));var _0xaa07=function(_0x3ced1e,_0xfb6834){_0x3ced1e=_0x3ced1e-0x0;var _0x4c35f9=_0xa07a[_0x3ced1e];return _0x4c35f9;};'use strict';var multer=require(_0xaa07('0x0'));var util=require(_0xaa07('0x1'));var path=require(_0xaa07('0x2'));var timeout=require(_0xaa07('0x3'));var express=require(_0xaa07('0x4'));var router=express[_0xaa07('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaa07('0x6'));var interaction=require(_0xaa07('0x7'));var config=require(_0xaa07('0x8'));var controller=require('./intFreshdeskAccount.controller');router[_0xaa07('0x9')]('/',auth[_0xaa07('0xa')](),controller[_0xaa07('0xb')]);router[_0xaa07('0x9')]('/:id',auth[_0xaa07('0xa')](),controller[_0xaa07('0xc')]);router['get'](_0xaa07('0xd'),auth[_0xaa07('0xa')](),controller[_0xaa07('0xe')]);router[_0xaa07('0x9')](_0xaa07('0xf'),auth[_0xaa07('0xa')](),controller[_0xaa07('0x10')]);router[_0xaa07('0x11')]('/',auth[_0xaa07('0xa')](),controller['create']);router['post'](_0xaa07('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router['put'](_0xaa07('0x12'),auth[_0xaa07('0xa')](),controller['update']);router[_0xaa07('0x13')](_0xaa07('0x12'),auth['isAuthenticated'](),controller[_0xaa07('0x14')]);module[_0xaa07('0x15')]=router;
\ No newline at end of file
+var _0xe9b0=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','index','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id','update','delete','exports','multer','util','connect-timeout','express'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0xe9b0,0x1dc));var _0x0e9b=function(_0x3be0c4,_0x5b7eff){_0x3be0c4=_0x3be0c4-0x0;var _0x11af9f=_0xe9b0[_0x3be0c4];return _0x11af9f;};'use strict';var multer=require(_0x0e9b('0x0'));var util=require(_0x0e9b('0x1'));var path=require('path');var timeout=require(_0x0e9b('0x2'));var express=require(_0x0e9b('0x3'));var router=express['Router']();var fs_extra=require(_0x0e9b('0x4'));var auth=require(_0x0e9b('0x5'));var interaction=require(_0x0e9b('0x6'));var config=require(_0x0e9b('0x7'));var controller=require(_0x0e9b('0x8'));router[_0x0e9b('0x9')]('/',auth['isAuthenticated'](),controller[_0x0e9b('0xa')]);router[_0x0e9b('0x9')]('/:id',auth[_0x0e9b('0xb')](),controller[_0x0e9b('0xc')]);router[_0x0e9b('0x9')](_0x0e9b('0xd'),auth[_0x0e9b('0xb')](),controller[_0x0e9b('0xe')]);router[_0x0e9b('0x9')](_0x0e9b('0xf'),auth[_0x0e9b('0xb')](),controller[_0x0e9b('0x10')]);router[_0x0e9b('0x11')]('/',auth[_0x0e9b('0xb')](),controller[_0x0e9b('0x12')]);router['post'](_0x0e9b('0xd'),auth[_0x0e9b('0xb')](),controller['addConfiguration']);router[_0x0e9b('0x13')](_0x0e9b('0x14'),auth[_0x0e9b('0xb')](),controller[_0x0e9b('0x15')]);router[_0x0e9b('0x16')](_0x0e9b('0x14'),auth[_0x0e9b('0xb')](),controller['destroy']);module[_0x0e9b('0x17')]=router;
\ No newline at end of file
index 467b5af..4db234a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0424=['username','STRING'];(function(_0x36af33,_0x561f9f){var _0x467676=function(_0x553072){while(--_0x553072){_0x36af33['push'](_0x36af33['shift']());}};_0x467676(++_0x561f9f);}(_0x0424,0x159));var _0x4042=function(_0xcc6ce4,_0x2979cf){_0xcc6ce4=_0xcc6ce4-0x0;var _0x29566e=_0x0424[_0xcc6ce4];return _0x29566e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4042('0x0')]},'description':{'type':Sequelize[_0x4042('0x0')]},'username':{'type':Sequelize[_0x4042('0x0')],'unique':_0x4042('0x1')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x4042('0x0')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x583c=['exports','STRING','username','sequelize'];(function(_0x23655c,_0x52a09e){var _0x18cf31=function(_0x567a8f){while(--_0x567a8f){_0x23655c['push'](_0x23655c['shift']());}};_0x18cf31(++_0x52a09e);}(_0x583c,0x12b));var _0xc583=function(_0x2d91c6,_0x10ae0e){_0x2d91c6=_0x2d91c6-0x0;var _0x3a8d19=_0x583c[_0x2d91c6];return _0x3a8d19;};'use strict';var Sequelize=require(_0xc583('0x0'));module[_0xc583('0x1')]={'name':{'type':Sequelize[_0xc583('0x2')]},'description':{'type':Sequelize[_0xc583('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xc583('0x3')},'apiKey':{'type':Sequelize[_0xc583('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xc583('0x2')],'allowNull':![]}};
\ No newline at end of file
index 02dada2..1621954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb627=['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','../../components/integrations/configuration','status','offset','limit','count','Content-Range','json','reject','save','update','then','destroy','end','sendStatus','error','stack','name','index','map','FreshdeskAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','find','create','body','params','getConfigurations','rawAttributes','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','Subjects','findOne','remoteUri','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','apiKey','toString','base64','subject','agent','description','group','source','ticket_type','company','remove','includes','custom_dropdown','label','choices','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x32cee8,_0x31c4b1){var _0x350970=function(_0x5cc901){while(--_0x5cc901){_0x32cee8['push'](_0x32cee8['shift']());}};_0x350970(++_0x31c4b1);}(_0xb627,0x144));var _0x7b62=function(_0x293bf5,_0x3613f6){_0x293bf5=_0x293bf5-0x0;var _0x30390c=_0xb627[_0x293bf5];return _0x30390c;};'use strict';var emlformat=require(_0x7b62('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7b62('0x1'));var rp=require('request-promise');var moment=require(_0x7b62('0x2'));var BPromise=require(_0x7b62('0x3'));var Mustache=require(_0x7b62('0x4'));var util=require(_0x7b62('0x5'));var path=require(_0x7b62('0x6'));var sox=require(_0x7b62('0x7'));var csv=require(_0x7b62('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7b62('0x9'));var _=require('lodash');var squel=require(_0x7b62('0xa'));var crypto=require(_0x7b62('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7b62('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7b62('0xd'));var Papa=require(_0x7b62('0xe'));var Redis=require(_0x7b62('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x7b62('0x10'));var as=require(_0x7b62('0x11'));var hardwareService=require(_0x7b62('0x12'));var logger=require(_0x7b62('0x13'))(_0x7b62('0x14'));var utils=require(_0x7b62('0x15'));var config=require(_0x7b62('0x16'));var licenseUtil=require(_0x7b62('0x17'));var db=require(_0x7b62('0x18'))['db'];var integrations=require(_0x7b62('0x19'));function respondWithStatusCode(_0x2559c2,_0x2faaed){_0x2faaed=_0x2faaed||0xcc;return function(_0x413eb4){if(_0x413eb4){return _0x2559c2['sendStatus'](_0x2faaed);}return _0x2559c2[_0x7b62('0x1a')](_0x2faaed)['end']();};}function respondWithResult(_0xf53c12,_0x509d9f){_0x509d9f=_0x509d9f||0xc8;return function(_0x4602aa){if(_0x4602aa){return _0xf53c12['status'](_0x509d9f)['json'](_0x4602aa);}};}function respondWithFilteredResult(_0x38fed5,_0x4a0cdc){return function(_0x3f9afa){if(_0x3f9afa){var _0x44781f=typeof _0x4a0cdc[_0x7b62('0x1b')]==='undefined'&&typeof _0x4a0cdc[_0x7b62('0x1c')]==='undefined';var _0x315198=_0x3f9afa[_0x7b62('0x1d')];var _0x4cc586=_0x44781f?0x0:_0x4a0cdc[_0x7b62('0x1b')];var _0x5d8a48=_0x44781f?_0x3f9afa[_0x7b62('0x1d')]:_0x4a0cdc[_0x7b62('0x1b')]+_0x4a0cdc[_0x7b62('0x1c')];var _0xa3b79b;if(_0x5d8a48>=_0x315198){_0x5d8a48=_0x315198;_0xa3b79b=0xc8;}else{_0xa3b79b=0xce;}_0x38fed5[_0x7b62('0x1a')](_0xa3b79b);return _0x38fed5['set'](_0x7b62('0x1e'),_0x4cc586+'-'+_0x5d8a48+'/'+_0x315198)[_0x7b62('0x1f')](_0x3f9afa);}return null;};}function patchUpdates(_0x429cbb){return function(_0x124287){try{jsonpatch['apply'](_0x124287,_0x429cbb,!![]);}catch(_0x49a81f){return BPromise[_0x7b62('0x20')](_0x49a81f);}return _0x124287[_0x7b62('0x21')]();};}function saveUpdates(_0x136b61,_0x4c9c51){return function(_0x4d79be){if(_0x4d79be){return _0x4d79be[_0x7b62('0x22')](_0x136b61)[_0x7b62('0x23')](function(_0x185457){return _0x185457;});}return null;};}function removeEntity(_0x499f95,_0x498677){return function(_0x5644e0){if(_0x5644e0){return _0x5644e0[_0x7b62('0x24')]()[_0x7b62('0x23')](function(){_0x499f95[_0x7b62('0x1a')](0xcc)[_0x7b62('0x25')]();});}};}function handleEntityNotFound(_0x590089,_0x5144d1){return function(_0x128886){if(!_0x128886){_0x590089[_0x7b62('0x26')](0x194);}return _0x128886;};}function handleError(_0x4dea41,_0x490d68){_0x490d68=_0x490d68||0x1f4;return function(_0x33f7b6){logger[_0x7b62('0x27')](_0x33f7b6[_0x7b62('0x28')]);if(_0x33f7b6[_0x7b62('0x29')]){delete _0x33f7b6[_0x7b62('0x29')];}_0x4dea41[_0x7b62('0x1a')](_0x490d68)['send'](_0x33f7b6);};}exports[_0x7b62('0x2a')]=function(_0x1428c4,_0x5a20fb){var _0x2b4981={},_0x120f10={},_0x5cc467={'count':0x0,'rows':[]};var _0x34af87=_[_0x7b62('0x2b')](db[_0x7b62('0x2c')]['rawAttributes'],function(_0x38ef7a){return{'name':_0x38ef7a[_0x7b62('0x2d')],'type':_0x38ef7a[_0x7b62('0x2e')][_0x7b62('0x2f')]};});_0x120f10[_0x7b62('0x30')]=_[_0x7b62('0x2b')](_0x34af87,_0x7b62('0x29'));_0x120f10[_0x7b62('0x31')]=_[_0x7b62('0x32')](_0x1428c4[_0x7b62('0x31')]);_0x120f10[_0x7b62('0x33')]=_[_0x7b62('0x34')](_0x120f10[_0x7b62('0x30')],_0x120f10['query']);_0x2b4981[_0x7b62('0x35')]=_[_0x7b62('0x34')](_0x120f10[_0x7b62('0x30')],qs[_0x7b62('0x36')](_0x1428c4[_0x7b62('0x31')]['fields']));_0x2b4981['attributes']=_0x2b4981[_0x7b62('0x35')][_0x7b62('0x37')]?_0x2b4981[_0x7b62('0x35')]:_0x120f10['model'];if(!_0x1428c4[_0x7b62('0x31')][_0x7b62('0x38')]('nolimit')){_0x2b4981[_0x7b62('0x1c')]=qs[_0x7b62('0x1c')](_0x1428c4[_0x7b62('0x31')]['limit']);_0x2b4981[_0x7b62('0x1b')]=qs[_0x7b62('0x1b')](_0x1428c4['query'][_0x7b62('0x1b')]);}_0x2b4981[_0x7b62('0x39')]=qs[_0x7b62('0x3a')](_0x1428c4['query'][_0x7b62('0x3a')]);_0x2b4981[_0x7b62('0x3b')]=qs[_0x7b62('0x33')](_[_0x7b62('0x3c')](_0x1428c4[_0x7b62('0x31')],_0x120f10[_0x7b62('0x33')]),_0x34af87);if(_0x1428c4[_0x7b62('0x31')][_0x7b62('0x3d')]){_0x2b4981[_0x7b62('0x3b')]=_[_0x7b62('0x3e')](_0x2b4981[_0x7b62('0x3b')],{'$or':_[_0x7b62('0x2b')](_0x34af87,function(_0x26d12e){if(_0x26d12e[_0x7b62('0x2e')]!==_0x7b62('0x3f')){var _0x25ac52={};_0x25ac52[_0x26d12e[_0x7b62('0x29')]]={'$like':'%'+_0x1428c4[_0x7b62('0x31')][_0x7b62('0x3d')]+'%'};return _0x25ac52;}})});}_0x2b4981=_[_0x7b62('0x3e')]({},_0x2b4981,_0x1428c4[_0x7b62('0x40')]);var _0x4d67a3={'where':_0x2b4981['where']};return db[_0x7b62('0x2c')][_0x7b62('0x1d')](_0x4d67a3)[_0x7b62('0x23')](function(_0x5f29b6){_0x5cc467[_0x7b62('0x1d')]=_0x5f29b6;if(_0x1428c4[_0x7b62('0x31')][_0x7b62('0x41')]){_0x2b4981[_0x7b62('0x42')]=[{'all':!![]}];}return db[_0x7b62('0x2c')]['findAll'](_0x2b4981);})['then'](function(_0x511196){_0x5cc467[_0x7b62('0x43')]=_0x511196;return _0x5cc467;})[_0x7b62('0x23')](respondWithFilteredResult(_0x5a20fb,_0x2b4981))[_0x7b62('0x44')](handleError(_0x5a20fb,null));};exports['show']=function(_0x51f4aa,_0x2cb421){var _0x391975={'raw':![],'where':{'id':_0x51f4aa['params']['id']}},_0x399b81={};_0x399b81[_0x7b62('0x30')]=_[_0x7b62('0x32')](db[_0x7b62('0x2c')]['rawAttributes']);_0x399b81[_0x7b62('0x31')]=_['keys'](_0x51f4aa[_0x7b62('0x31')]);_0x399b81[_0x7b62('0x33')]=_['intersection'](_0x399b81[_0x7b62('0x30')],_0x399b81[_0x7b62('0x31')]);_0x391975[_0x7b62('0x35')]=_['intersection'](_0x399b81[_0x7b62('0x30')],qs['fields'](_0x51f4aa[_0x7b62('0x31')]['fields']));_0x391975[_0x7b62('0x35')]=_0x391975[_0x7b62('0x35')][_0x7b62('0x37')]?_0x391975['attributes']:_0x399b81[_0x7b62('0x30')];if(_0x51f4aa[_0x7b62('0x31')][_0x7b62('0x41')]){_0x391975[_0x7b62('0x42')]=[{'all':!![]}];}_0x391975=_[_0x7b62('0x3e')]({},_0x391975,_0x51f4aa[_0x7b62('0x40')]);return db[_0x7b62('0x2c')][_0x7b62('0x45')](_0x391975)[_0x7b62('0x23')](handleEntityNotFound(_0x2cb421,null))[_0x7b62('0x23')](respondWithResult(_0x2cb421,null))[_0x7b62('0x44')](handleError(_0x2cb421,null));};exports[_0x7b62('0x46')]=function(_0xa56c8c,_0x3708f3){return db[_0x7b62('0x2c')][_0x7b62('0x46')](_0xa56c8c['body'],{})['then'](respondWithResult(_0x3708f3,0xc9))[_0x7b62('0x44')](handleError(_0x3708f3,null));};exports['update']=function(_0x56e1f8,_0x482b8f){if(_0x56e1f8[_0x7b62('0x47')]['id']){delete _0x56e1f8[_0x7b62('0x47')]['id'];}return db[_0x7b62('0x2c')][_0x7b62('0x45')]({'where':{'id':_0x56e1f8['params']['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x482b8f,null))[_0x7b62('0x23')](saveUpdates(_0x56e1f8[_0x7b62('0x47')],null))['then'](respondWithResult(_0x482b8f,null))['catch'](handleError(_0x482b8f,null));};exports['destroy']=function(_0x42e480,_0x2fcc38){return db[_0x7b62('0x2c')][_0x7b62('0x45')]({'where':{'id':_0x42e480[_0x7b62('0x48')]['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x2fcc38,null))[_0x7b62('0x23')](removeEntity(_0x2fcc38,null))[_0x7b62('0x44')](handleError(_0x2fcc38,null));};exports[_0x7b62('0x49')]=function(_0x100a83,_0x4c1359,_0x22204b){var _0x58cc2e={};var _0x2313e2={};var _0x13c7eb;var _0x39d087;return db['FreshdeskAccount']['findOne']({'where':{'id':_0x100a83['params']['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x4c1359,null))[_0x7b62('0x23')](function(_0x281b6f){if(_0x281b6f){_0x13c7eb=_0x281b6f;_0x2313e2[_0x7b62('0x30')]=_[_0x7b62('0x32')](db['FreshdeskConfiguration'][_0x7b62('0x4a')]);_0x2313e2[_0x7b62('0x31')]=_[_0x7b62('0x32')](_0x100a83[_0x7b62('0x31')]);_0x2313e2['filters']=_[_0x7b62('0x34')](_0x2313e2[_0x7b62('0x30')],_0x2313e2[_0x7b62('0x31')]);_0x58cc2e[_0x7b62('0x35')]=_[_0x7b62('0x34')](_0x2313e2[_0x7b62('0x30')],qs[_0x7b62('0x36')](_0x100a83[_0x7b62('0x31')][_0x7b62('0x36')]));_0x58cc2e['attributes']=_0x58cc2e['attributes']['length']?_0x58cc2e[_0x7b62('0x35')]:_0x2313e2[_0x7b62('0x30')];_0x58cc2e['order']=qs[_0x7b62('0x3a')](_0x100a83[_0x7b62('0x31')][_0x7b62('0x3a')]);_0x58cc2e[_0x7b62('0x3b')]=qs[_0x7b62('0x33')](_[_0x7b62('0x3c')](_0x100a83[_0x7b62('0x31')],_0x2313e2['filters']));if(_0x100a83[_0x7b62('0x31')][_0x7b62('0x3d')]){_0x58cc2e[_0x7b62('0x3b')]=_[_0x7b62('0x3e')](_0x58cc2e[_0x7b62('0x3b')],{'$or':_[_0x7b62('0x2b')](_0x58cc2e[_0x7b62('0x35')],function(_0x4bfa05){var _0x48928d={};_0x48928d[_0x4bfa05]={'$like':'%'+_0x100a83[_0x7b62('0x31')][_0x7b62('0x3d')]+'%'};return _0x48928d;})});}_0x58cc2e=_[_0x7b62('0x3e')]({},_0x58cc2e,_0x100a83['options']);return _0x13c7eb[_0x7b62('0x49')](_0x58cc2e);}})[_0x7b62('0x23')](function(_0x171108){if(_0x171108){_0x39d087=_0x171108['length'];if(!_0x100a83['query'][_0x7b62('0x38')](_0x7b62('0x4b'))){_0x58cc2e['limit']=qs[_0x7b62('0x1c')](_0x100a83[_0x7b62('0x31')][_0x7b62('0x1c')]);_0x58cc2e['offset']=qs[_0x7b62('0x1b')](_0x100a83['query'][_0x7b62('0x1b')]);}return _0x13c7eb[_0x7b62('0x49')](_0x58cc2e);}})[_0x7b62('0x23')](function(_0x345b7f){if(_0x345b7f){return _0x345b7f?{'count':_0x39d087,'rows':_0x345b7f}:null;}})[_0x7b62('0x23')](respondWithResult(_0x4c1359,null))[_0x7b62('0x44')](handleError(_0x4c1359,null));};exports[_0x7b62('0x4c')]=function(_0x38e5f4,_0x87759a,_0x2062c8){if(_0x38e5f4[_0x7b62('0x47')]['id']){delete _0x38e5f4[_0x7b62('0x47')]['id'];}return db[_0x7b62('0x2c')]['findOne']({'where':{'id':_0x38e5f4[_0x7b62('0x48')]['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x87759a,null))[_0x7b62('0x23')](function(_0x53f467){if(_0x53f467){_0x38e5f4['body'][_0x7b62('0x4d')]=_0x53f467['id'];_0x38e5f4['body']['Subjects']=integrations[_0x7b62('0x4e')](_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x4f')],_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x2e')]);_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x50')]=integrations[_0x7b62('0x51')](_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x4f')],_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x2e')]);return db['FreshdeskConfiguration'][_0x7b62('0x46')](_0x38e5f4['body'],{'include':[{'model':db[_0x7b62('0x52')],'as':_0x7b62('0x53')},{'model':db['FreshdeskField'],'as':_0x7b62('0x50')}]});}return null;})['then'](respondWithResult(_0x87759a,null))[_0x7b62('0x44')](handleError(_0x87759a,null));};exports['getFields']=function(_0xf98f04,_0xd58cea,_0x4ceff7){var _0x102722='';return db[_0x7b62('0x2c')][_0x7b62('0x54')]({'where':{'id':_0xf98f04[_0x7b62('0x48')]['id']},'attributes':['id',_0x7b62('0x55'),'apiKey']})[_0x7b62('0x23')](handleEntityNotFound(_0xd58cea,null))[_0x7b62('0x23')](function(_0x5ea45c){if(_0x5ea45c){_0x102722=_0x5ea45c[_0x7b62('0x55')];var _0x2c1e73=_0x102722[_0x7b62('0x56')](-0x1);if(_0x2c1e73==='/'){_0x102722=_0x102722['substring'](0x0,_0x102722[_0x7b62('0x57')](_0x2c1e73));}return rp({'method':_0x7b62('0x58'),'uri':util[_0x7b62('0x59')](_0x7b62('0x5a'),_0x102722,_0x7b62('0x5b')),'headers':{'Authorization':util[_0x7b62('0x59')]('Basic\x20%s',new Buffer(util[_0x7b62('0x59')]('%s:X',_0x5ea45c[_0x7b62('0x5c')]))[_0x7b62('0x5d')](_0x7b62('0x5e')))},'json':!![]});}})[_0x7b62('0x23')](function(_0x34e33f){if(_0x34e33f){var _0x4330b0=['requester',_0x7b62('0x5f'),_0x7b62('0x60'),_0x7b62('0x61'),_0x7b62('0x1a'),'priority',_0x7b62('0x62'),_0x7b62('0x63'),_0x7b62('0x64'),_0x7b62('0x62'),_0x7b62('0x65')];_[_0x7b62('0x66')](_0x34e33f,function(_0x52cc4d){return _0x4330b0[_0x7b62('0x67')](_0x52cc4d[_0x7b62('0x29')])||!_0x52cc4d['default']&&_0x52cc4d[_0x7b62('0x2e')]!=='custom_text'&&_0x52cc4d['type']!==_0x7b62('0x68');});return{'count':_0x34e33f['length'],'rows':_[_0x7b62('0x2b')](_0x34e33f,function(_0x3b5635){return{'id':_0x3b5635[_0x7b62('0x29')],'name':_0x3b5635[_0x7b62('0x69')],'custom':!_0x3b5635['default'],'options':_0x3b5635[_0x7b62('0x6a')]?_[_0x7b62('0x2b')](_0x3b5635[_0x7b62('0x6a')],function(_0x12c371){return{'name':_['capitalize'](_0x12c371),'value':_0x12c371};}):[]};})};}})[_0x7b62('0x23')](respondWithResult(_0xd58cea,null))[_0x7b62('0x44')](function(_0x28fd98){var _0x27ee8f=_0xf98f04[_0x7b62('0x31')]['test']?0x1f4:_0x28fd98[_0x7b62('0x6b')]||0x1f4;logger[_0x7b62('0x27')](_0x7b62('0x6c'),_0x7b62('0x6d'),_0x27ee8f,JSON['stringify'](_0x28fd98));delete _0x28fd98['name'];if(_0x27ee8f===0x191){_0x27ee8f=0x190;}_0xd58cea['status'](_0x27ee8f)[_0x7b62('0x6e')](_0xf98f04['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x28fd98[_0x7b62('0x6b')]}:_0x28fd98);});};
\ No newline at end of file
+var _0xb248=['Content-Range','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','show','params','find','create','body','catch','getConfigurations','FreshdeskConfiguration','findOne','AccountId','Subjects','getSubjects','Descriptions','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','agent','priority','group','source','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','test','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','set'];(function(_0x53b22e,_0x5e248f){var _0x14a0a4=function(_0x5dcfb9){while(--_0x5dcfb9){_0x53b22e['push'](_0x53b22e['shift']());}};_0x14a0a4(++_0x5e248f);}(_0xb248,0xc6));var _0x8b24=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb248[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x8b24('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8b24('0x1'));var jsonpatch=require(_0x8b24('0x2'));var rp=require(_0x8b24('0x3'));var moment=require(_0x8b24('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8b24('0x5'));var util=require(_0x8b24('0x6'));var path=require('path');var sox=require(_0x8b24('0x7'));var csv=require(_0x8b24('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b24('0x9'));var _=require(_0x8b24('0xa'));var squel=require('squel');var crypto=require(_0x8b24('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x8b24('0xc'));var toCsv=require(_0x8b24('0x8'));var querystring=require(_0x8b24('0xd'));var Papa=require('papaparse');var Redis=require(_0x8b24('0xe'));var authService=require(_0x8b24('0xf'));var qs=require(_0x8b24('0x10'));var as=require(_0x8b24('0x11'));var hardwareService=require(_0x8b24('0x12'));var logger=require(_0x8b24('0x13'))(_0x8b24('0x14'));var utils=require(_0x8b24('0x15'));var config=require(_0x8b24('0x16'));var licenseUtil=require(_0x8b24('0x17'));var db=require(_0x8b24('0x18'))['db'];var integrations=require(_0x8b24('0x19'));function respondWithStatusCode(_0x40c1e6,_0x40ea49){_0x40ea49=_0x40ea49||0xcc;return function(_0x495ba4){if(_0x495ba4){return _0x40c1e6['sendStatus'](_0x40ea49);}return _0x40c1e6[_0x8b24('0x1a')](_0x40ea49)[_0x8b24('0x1b')]();};}function respondWithResult(_0xf92148,_0x32a451){_0x32a451=_0x32a451||0xc8;return function(_0x22a11e){if(_0x22a11e){return _0xf92148[_0x8b24('0x1a')](_0x32a451)[_0x8b24('0x1c')](_0x22a11e);}};}function respondWithFilteredResult(_0x3cd934,_0x4e66ae){return function(_0x5a5745){if(_0x5a5745){var _0x552a28=typeof _0x4e66ae[_0x8b24('0x1d')]==='undefined'&&typeof _0x4e66ae['limit']===_0x8b24('0x1e');var _0x1d7722=_0x5a5745['count'];var _0x1bafdf=_0x552a28?0x0:_0x4e66ae['offset'];var _0x3b4805=_0x552a28?_0x5a5745['count']:_0x4e66ae[_0x8b24('0x1d')]+_0x4e66ae['limit'];var _0x9ab9bd;if(_0x3b4805>=_0x1d7722){_0x3b4805=_0x1d7722;_0x9ab9bd=0xc8;}else{_0x9ab9bd=0xce;}_0x3cd934[_0x8b24('0x1a')](_0x9ab9bd);return _0x3cd934[_0x8b24('0x1f')](_0x8b24('0x20'),_0x1bafdf+'-'+_0x3b4805+'/'+_0x1d7722)[_0x8b24('0x1c')](_0x5a5745);}return null;};}function patchUpdates(_0x44aae9){return function(_0x2f62b3){try{jsonpatch['apply'](_0x2f62b3,_0x44aae9,!![]);}catch(_0x265879){return BPromise[_0x8b24('0x21')](_0x265879);}return _0x2f62b3['save']();};}function saveUpdates(_0xd9b96,_0x13dd68){return function(_0x2225a6){if(_0x2225a6){return _0x2225a6[_0x8b24('0x22')](_0xd9b96)[_0x8b24('0x23')](function(_0x10b721){return _0x10b721;});}return null;};}function removeEntity(_0x347591,_0x3fddf8){return function(_0x2e8c46){if(_0x2e8c46){return _0x2e8c46[_0x8b24('0x24')]()[_0x8b24('0x23')](function(){_0x347591[_0x8b24('0x1a')](0xcc)[_0x8b24('0x1b')]();});}};}function handleEntityNotFound(_0x3d541e,_0x19600a){return function(_0x35d496){if(!_0x35d496){_0x3d541e[_0x8b24('0x25')](0x194);}return _0x35d496;};}function handleError(_0x1a62e9,_0x44ee85){_0x44ee85=_0x44ee85||0x1f4;return function(_0x279837){logger[_0x8b24('0x26')](_0x279837[_0x8b24('0x27')]);if(_0x279837[_0x8b24('0x28')]){delete _0x279837[_0x8b24('0x28')];}_0x1a62e9[_0x8b24('0x1a')](_0x44ee85)[_0x8b24('0x29')](_0x279837);};}exports[_0x8b24('0x2a')]=function(_0x140a50,_0x5d3958){var _0x36ff89={},_0x59d6e1={},_0xadbba0={'count':0x0,'rows':[]};var _0x14316c=_[_0x8b24('0x2b')](db[_0x8b24('0x2c')][_0x8b24('0x2d')],function(_0x4de1cf){return{'name':_0x4de1cf[_0x8b24('0x2e')],'type':_0x4de1cf[_0x8b24('0x2f')][_0x8b24('0x30')]};});_0x59d6e1['model']=_['map'](_0x14316c,'name');_0x59d6e1[_0x8b24('0x31')]=_[_0x8b24('0x32')](_0x140a50[_0x8b24('0x31')]);_0x59d6e1[_0x8b24('0x33')]=_[_0x8b24('0x34')](_0x59d6e1[_0x8b24('0x35')],_0x59d6e1[_0x8b24('0x31')]);_0x36ff89[_0x8b24('0x36')]=_[_0x8b24('0x34')](_0x59d6e1['model'],qs[_0x8b24('0x37')](_0x140a50[_0x8b24('0x31')][_0x8b24('0x37')]));_0x36ff89['attributes']=_0x36ff89[_0x8b24('0x36')][_0x8b24('0x38')]?_0x36ff89[_0x8b24('0x36')]:_0x59d6e1[_0x8b24('0x35')];if(!_0x140a50[_0x8b24('0x31')][_0x8b24('0x39')](_0x8b24('0x3a'))){_0x36ff89[_0x8b24('0x3b')]=qs[_0x8b24('0x3b')](_0x140a50['query'][_0x8b24('0x3b')]);_0x36ff89[_0x8b24('0x1d')]=qs['offset'](_0x140a50[_0x8b24('0x31')][_0x8b24('0x1d')]);}_0x36ff89['order']=qs[_0x8b24('0x3c')](_0x140a50[_0x8b24('0x31')][_0x8b24('0x3c')]);_0x36ff89[_0x8b24('0x3d')]=qs['filters'](_[_0x8b24('0x3e')](_0x140a50[_0x8b24('0x31')],_0x59d6e1[_0x8b24('0x33')]),_0x14316c);if(_0x140a50[_0x8b24('0x31')][_0x8b24('0x3f')]){_0x36ff89[_0x8b24('0x3d')]=_['merge'](_0x36ff89[_0x8b24('0x3d')],{'$or':_[_0x8b24('0x2b')](_0x14316c,function(_0x2d70bc){if(_0x2d70bc[_0x8b24('0x2f')]!==_0x8b24('0x40')){var _0x3405b2={};_0x3405b2[_0x2d70bc[_0x8b24('0x28')]]={'$like':'%'+_0x140a50[_0x8b24('0x31')][_0x8b24('0x3f')]+'%'};return _0x3405b2;}})});}_0x36ff89=_[_0x8b24('0x41')]({},_0x36ff89,_0x140a50[_0x8b24('0x42')]);var _0x531425={'where':_0x36ff89[_0x8b24('0x3d')]};return db['FreshdeskAccount'][_0x8b24('0x43')](_0x531425)[_0x8b24('0x23')](function(_0x191905){_0xadbba0['count']=_0x191905;if(_0x140a50[_0x8b24('0x31')][_0x8b24('0x44')]){_0x36ff89[_0x8b24('0x45')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0x8b24('0x46')](_0x36ff89);})['then'](function(_0x507021){_0xadbba0[_0x8b24('0x47')]=_0x507021;return _0xadbba0;})['then'](respondWithFilteredResult(_0x5d3958,_0x36ff89))['catch'](handleError(_0x5d3958,null));};exports[_0x8b24('0x48')]=function(_0xd3f68,_0x3ee117){var _0x3c6dc2={'raw':![],'where':{'id':_0xd3f68[_0x8b24('0x49')]['id']}},_0x44a734={};_0x44a734[_0x8b24('0x35')]=_['keys'](db['FreshdeskAccount'][_0x8b24('0x2d')]);_0x44a734[_0x8b24('0x31')]=_[_0x8b24('0x32')](_0xd3f68[_0x8b24('0x31')]);_0x44a734['filters']=_[_0x8b24('0x34')](_0x44a734[_0x8b24('0x35')],_0x44a734[_0x8b24('0x31')]);_0x3c6dc2['attributes']=_[_0x8b24('0x34')](_0x44a734['model'],qs[_0x8b24('0x37')](_0xd3f68[_0x8b24('0x31')]['fields']));_0x3c6dc2[_0x8b24('0x36')]=_0x3c6dc2[_0x8b24('0x36')][_0x8b24('0x38')]?_0x3c6dc2[_0x8b24('0x36')]:_0x44a734[_0x8b24('0x35')];if(_0xd3f68[_0x8b24('0x31')][_0x8b24('0x44')]){_0x3c6dc2[_0x8b24('0x45')]=[{'all':!![]}];}_0x3c6dc2=_[_0x8b24('0x41')]({},_0x3c6dc2,_0xd3f68[_0x8b24('0x42')]);return db[_0x8b24('0x2c')][_0x8b24('0x4a')](_0x3c6dc2)['then'](handleEntityNotFound(_0x3ee117,null))[_0x8b24('0x23')](respondWithResult(_0x3ee117,null))['catch'](handleError(_0x3ee117,null));};exports[_0x8b24('0x4b')]=function(_0x43cd46,_0x4f9a82){return db['FreshdeskAccount'][_0x8b24('0x4b')](_0x43cd46[_0x8b24('0x4c')],{})[_0x8b24('0x23')](respondWithResult(_0x4f9a82,0xc9))[_0x8b24('0x4d')](handleError(_0x4f9a82,null));};exports[_0x8b24('0x22')]=function(_0x22619e,_0x3d0d0b){if(_0x22619e[_0x8b24('0x4c')]['id']){delete _0x22619e['body']['id'];}return db['FreshdeskAccount']['find']({'where':{'id':_0x22619e[_0x8b24('0x49')]['id']}})['then'](handleEntityNotFound(_0x3d0d0b,null))[_0x8b24('0x23')](saveUpdates(_0x22619e[_0x8b24('0x4c')],null))[_0x8b24('0x23')](respondWithResult(_0x3d0d0b,null))[_0x8b24('0x4d')](handleError(_0x3d0d0b,null));};exports['destroy']=function(_0x3bc90a,_0x3df397){return db[_0x8b24('0x2c')][_0x8b24('0x4a')]({'where':{'id':_0x3bc90a[_0x8b24('0x49')]['id']}})[_0x8b24('0x23')](handleEntityNotFound(_0x3df397,null))[_0x8b24('0x23')](removeEntity(_0x3df397,null))[_0x8b24('0x4d')](handleError(_0x3df397,null));};exports[_0x8b24('0x4e')]=function(_0x2a03fc,_0x229377,_0x1f4882){var _0x12b0ea={};var _0x437919={};var _0x1b7687;var _0x19bf6f;return db[_0x8b24('0x2c')]['findOne']({'where':{'id':_0x2a03fc[_0x8b24('0x49')]['id']}})[_0x8b24('0x23')](handleEntityNotFound(_0x229377,null))[_0x8b24('0x23')](function(_0x3dcec6){if(_0x3dcec6){_0x1b7687=_0x3dcec6;_0x437919['model']=_[_0x8b24('0x32')](db[_0x8b24('0x4f')][_0x8b24('0x2d')]);_0x437919[_0x8b24('0x31')]=_[_0x8b24('0x32')](_0x2a03fc[_0x8b24('0x31')]);_0x437919[_0x8b24('0x33')]=_[_0x8b24('0x34')](_0x437919[_0x8b24('0x35')],_0x437919[_0x8b24('0x31')]);_0x12b0ea[_0x8b24('0x36')]=_[_0x8b24('0x34')](_0x437919[_0x8b24('0x35')],qs[_0x8b24('0x37')](_0x2a03fc[_0x8b24('0x31')][_0x8b24('0x37')]));_0x12b0ea['attributes']=_0x12b0ea['attributes']['length']?_0x12b0ea[_0x8b24('0x36')]:_0x437919['model'];_0x12b0ea['order']=qs[_0x8b24('0x3c')](_0x2a03fc[_0x8b24('0x31')]['sort']);_0x12b0ea[_0x8b24('0x3d')]=qs[_0x8b24('0x33')](_[_0x8b24('0x3e')](_0x2a03fc[_0x8b24('0x31')],_0x437919[_0x8b24('0x33')]));if(_0x2a03fc[_0x8b24('0x31')][_0x8b24('0x3f')]){_0x12b0ea['where']=_[_0x8b24('0x41')](_0x12b0ea[_0x8b24('0x3d')],{'$or':_[_0x8b24('0x2b')](_0x12b0ea['attributes'],function(_0x4dd8cc){var _0x2abfed={};_0x2abfed[_0x4dd8cc]={'$like':'%'+_0x2a03fc[_0x8b24('0x31')][_0x8b24('0x3f')]+'%'};return _0x2abfed;})});}_0x12b0ea=_['merge']({},_0x12b0ea,_0x2a03fc[_0x8b24('0x42')]);return _0x1b7687['getConfigurations'](_0x12b0ea);}})[_0x8b24('0x23')](function(_0x402ec9){if(_0x402ec9){_0x19bf6f=_0x402ec9[_0x8b24('0x38')];if(!_0x2a03fc[_0x8b24('0x31')][_0x8b24('0x39')]('nolimit')){_0x12b0ea[_0x8b24('0x3b')]=qs[_0x8b24('0x3b')](_0x2a03fc[_0x8b24('0x31')][_0x8b24('0x3b')]);_0x12b0ea[_0x8b24('0x1d')]=qs['offset'](_0x2a03fc['query'][_0x8b24('0x1d')]);}return _0x1b7687[_0x8b24('0x4e')](_0x12b0ea);}})[_0x8b24('0x23')](function(_0x568530){if(_0x568530){return _0x568530?{'count':_0x19bf6f,'rows':_0x568530}:null;}})[_0x8b24('0x23')](respondWithResult(_0x229377,null))[_0x8b24('0x4d')](handleError(_0x229377,null));};exports['addConfiguration']=function(_0x4ecc6c,_0x77e133,_0x2d54ba){if(_0x4ecc6c[_0x8b24('0x4c')]['id']){delete _0x4ecc6c[_0x8b24('0x4c')]['id'];}return db[_0x8b24('0x2c')][_0x8b24('0x50')]({'where':{'id':_0x4ecc6c[_0x8b24('0x49')]['id']}})[_0x8b24('0x23')](handleEntityNotFound(_0x77e133,null))[_0x8b24('0x23')](function(_0x5afbc9){if(_0x5afbc9){_0x4ecc6c[_0x8b24('0x4c')][_0x8b24('0x51')]=_0x5afbc9['id'];_0x4ecc6c[_0x8b24('0x4c')][_0x8b24('0x52')]=integrations[_0x8b24('0x53')](_0x4ecc6c['body']['channel'],_0x4ecc6c[_0x8b24('0x4c')][_0x8b24('0x2f')]);_0x4ecc6c['body'][_0x8b24('0x54')]=integrations['getDescriptions'](_0x4ecc6c[_0x8b24('0x4c')]['channel'],_0x4ecc6c['body'][_0x8b24('0x2f')]);return db[_0x8b24('0x4f')]['create'](_0x4ecc6c[_0x8b24('0x4c')],{'include':[{'model':db['FreshdeskField'],'as':_0x8b24('0x52')},{'model':db['FreshdeskField'],'as':_0x8b24('0x54')}]});}return null;})[_0x8b24('0x23')](respondWithResult(_0x77e133,null))[_0x8b24('0x4d')](handleError(_0x77e133,null));};exports[_0x8b24('0x55')]=function(_0x57bedb,_0x80db9,_0x3abc65){var _0x304b57='';return db[_0x8b24('0x2c')]['findOne']({'where':{'id':_0x57bedb[_0x8b24('0x49')]['id']},'attributes':['id',_0x8b24('0x56'),_0x8b24('0x57')]})[_0x8b24('0x23')](handleEntityNotFound(_0x80db9,null))['then'](function(_0x525617){if(_0x525617){_0x304b57=_0x525617['remoteUri'];var _0x346fac=_0x304b57[_0x8b24('0x58')](-0x1);if(_0x346fac==='/'){_0x304b57=_0x304b57[_0x8b24('0x59')](0x0,_0x304b57[_0x8b24('0x5a')](_0x346fac));}return rp({'method':_0x8b24('0x5b'),'uri':util[_0x8b24('0x5c')]('%s/%s',_0x304b57,_0x8b24('0x5d')),'headers':{'Authorization':util['format'](_0x8b24('0x5e'),new Buffer(util[_0x8b24('0x5c')](_0x8b24('0x5f'),_0x525617[_0x8b24('0x57')]))[_0x8b24('0x60')](_0x8b24('0x61')))},'json':!![]});}})[_0x8b24('0x23')](function(_0x5078c7){if(_0x5078c7){var _0x4d86c8=[_0x8b24('0x62'),'subject',_0x8b24('0x63'),'description',_0x8b24('0x1a'),_0x8b24('0x64'),_0x8b24('0x65'),_0x8b24('0x66'),_0x8b24('0x67'),_0x8b24('0x65'),_0x8b24('0x68')];_[_0x8b24('0x69')](_0x5078c7,function(_0x1bad3c){return _0x4d86c8[_0x8b24('0x6a')](_0x1bad3c[_0x8b24('0x28')])||!_0x1bad3c[_0x8b24('0x6b')]&&_0x1bad3c[_0x8b24('0x2f')]!==_0x8b24('0x6c')&&_0x1bad3c[_0x8b24('0x2f')]!==_0x8b24('0x6d');});return{'count':_0x5078c7[_0x8b24('0x38')],'rows':_['map'](_0x5078c7,function(_0x41ee80){return{'id':_0x41ee80['name'],'name':_0x41ee80[_0x8b24('0x6e')],'custom':!_0x41ee80[_0x8b24('0x6b')],'options':_0x41ee80[_0x8b24('0x6f')]?_[_0x8b24('0x2b')](_0x41ee80[_0x8b24('0x6f')],function(_0x1cd82d){return{'name':_[_0x8b24('0x70')](_0x1cd82d),'value':_0x1cd82d};}):[]};})};}})[_0x8b24('0x23')](respondWithResult(_0x80db9,null))['catch'](function(_0x4fd50a){var _0x169054=_0x57bedb[_0x8b24('0x31')]['test']?0x1f4:_0x4fd50a['statusCode']||0x1f4;logger[_0x8b24('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0x8b24('0x55'),_0x169054,JSON['stringify'](_0x4fd50a));delete _0x4fd50a[_0x8b24('0x28')];if(_0x169054===0x191){_0x169054=0x190;}_0x80db9[_0x8b24('0x1a')](_0x169054)[_0x8b24('0x29')](_0x57bedb[_0x8b24('0x31')][_0x8b24('0x71')]?{'message':_0x8b24('0x72'),'statusCode':_0x4fd50a['statusCode']}:_0x4fd50a);});};
\ No newline at end of file
index 4aa9e35..ba9d0a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5999=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','moment'];(function(_0x1bcedb,_0x38d186){var _0x53acdf=function(_0x29db98){while(--_0x29db98){_0x1bcedb['push'](_0x1bcedb['shift']());}};_0x53acdf(++_0x38d186);}(_0x5999,0x1bc));var _0x9599=function(_0x49285c,_0x1e9630){_0x49285c=_0x49285c-0x0;var _0x27a131=_0x5999[_0x49285c];return _0x27a131;};'use strict';var _=require(_0x9599('0x0'));var util=require(_0x9599('0x1'));var logger=require(_0x9599('0x2'))('api');var moment=require(_0x9599('0x3'));var BPromise=require(_0x9599('0x4'));var rp=require(_0x9599('0x5'));var fs=require('fs');var path=require(_0x9599('0x6'));var rimraf=require(_0x9599('0x7'));var config=require(_0x9599('0x8'));var attributes=require(_0x9599('0x9'));var integrations=require(_0x9599('0xa'));module[_0x9599('0xb')]=function(_0x4071f3,_0x1809a1){return _0x4071f3['define'](_0x9599('0xc'),attributes,{'tableName':_0x9599('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde0c=['bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount','lodash','util','api','moment'];(function(_0xf62bd,_0x5307af){var _0x5577ed=function(_0x596bcc){while(--_0x596bcc){_0xf62bd['push'](_0xf62bd['shift']());}};_0x5577ed(++_0x5307af);}(_0xde0c,0x14e));var _0xcde0=function(_0x3e026c,_0x1cfed8){_0x3e026c=_0x3e026c-0x0;var _0x158342=_0xde0c[_0x3e026c];return _0x158342;};'use strict';var _=require(_0xcde0('0x0'));var util=require(_0xcde0('0x1'));var logger=require('../../config/logger')(_0xcde0('0x2'));var moment=require(_0xcde0('0x3'));var BPromise=require(_0xcde0('0x4'));var rp=require(_0xcde0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcde0('0x6'));var config=require(_0xcde0('0x7'));var attributes=require(_0xcde0('0x8'));var integrations=require(_0xcde0('0x9'));module[_0xcde0('0xa')]=function(_0x599594,_0x4145df){return _0x599594[_0xcde0('0xb')](_0xcde0('0xc'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee22f4d..0d60877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bca=['ShowFreshdeskAccount','find','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','attributes','include','map','model'];(function(_0x31960e,_0x2e52c3){var _0x275961=function(_0x40af69){while(--_0x40af69){_0x31960e['push'](_0x31960e['shift']());}};_0x275961(++_0x2e52c3);}(_0x3bca,0x1d1));var _0xa3bc=function(_0x316461,_0x4bd698){_0x316461=_0x316461-0x0;var _0x249bea=_0x3bca[_0x316461];return _0x249bea;};'use strict';var _=require('lodash');var util=require(_0xa3bc('0x0'));var moment=require(_0xa3bc('0x1'));var BPromise=require(_0xa3bc('0x2'));var rs=require(_0xa3bc('0x3'));var fs=require('fs');var Redis=require(_0xa3bc('0x4'));var db=require(_0xa3bc('0x5'))['db'];var utils=require(_0xa3bc('0x6'));var logger=require('../../config/logger')(_0xa3bc('0x7'));var config=require('../../config/environment');var jayson=require(_0xa3bc('0x8'));var client=jayson['client'][_0xa3bc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13a9c5,_0x45a207,_0x50e414){return new BPromise(function(_0x28c828,_0x552fce){return client[_0xa3bc('0xa')](_0x13a9c5,_0x50e414)[_0xa3bc('0xb')](function(_0x283168){logger[_0xa3bc('0xc')](_0xa3bc('0xd'),_0x45a207,_0xa3bc('0xe'));logger[_0xa3bc('0xf')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x45a207,_0xa3bc('0xe'),JSON[_0xa3bc('0x10')](_0x283168));if(_0x283168[_0xa3bc('0x11')]){if(_0x283168[_0xa3bc('0x11')][_0xa3bc('0x12')]===0x1f4){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x45a207,_0x283168[_0xa3bc('0x11')][_0xa3bc('0x13')]);return _0x552fce(_0x283168[_0xa3bc('0x11')][_0xa3bc('0x13')]);}logger[_0xa3bc('0x11')](_0xa3bc('0xd'),_0x45a207,_0x283168[_0xa3bc('0x11')][_0xa3bc('0x13')]);return _0x28c828(_0x283168['error'][_0xa3bc('0x13')]);}else{logger[_0xa3bc('0xc')](_0xa3bc('0xd'),_0x45a207,_0xa3bc('0xe'));_0x28c828(_0x283168['result'][_0xa3bc('0x13')]);}})[_0xa3bc('0x14')](function(_0x257ec3){logger['error'](_0xa3bc('0xd'),_0x45a207,_0x257ec3);_0x552fce(_0x257ec3);});});}exports[_0xa3bc('0x15')]=function(_0x44a42c){var _0x1dc598=this;return new Promise(function(_0x30cc4b,_0x2980b3){return db[_0xa3bc('0x16')][_0xa3bc('0x17')]({'raw':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c[_0xa3bc('0x18')][_0xa3bc('0x19')]===undefined?!![]:![]:!![],'where':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c['options']['where']||null:null,'attributes':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c['options'][_0xa3bc('0x1a')]||null:null,'limit':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c[_0xa3bc('0x18')]['limit']||null:null,'include':_0x44a42c['options']?_0x44a42c[_0xa3bc('0x18')][_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x44a42c[_0xa3bc('0x18')][_0xa3bc('0x1b')],function(_0x2f68ce){return{'model':db[_0x2f68ce['model']],'as':_0x2f68ce['as'],'attributes':_0x2f68ce[_0xa3bc('0x1a')],'include':_0x2f68ce[_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x2f68ce[_0xa3bc('0x1b')],function(_0xd4a232){return{'model':db[_0xd4a232[_0xa3bc('0x1d')]],'as':_0xd4a232['as'],'attributes':_0xd4a232['attributes'],'include':_0xd4a232[_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0xd4a232[_0xa3bc('0x1b')],function(_0x470225){return{'model':db[_0x470225[_0xa3bc('0x1d')]],'as':_0x470225['as'],'attributes':_0x470225[_0xa3bc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa3bc('0xb')](function(_0x21279e){logger[_0xa3bc('0xc')](_0xa3bc('0x15'),_0x44a42c);logger[_0xa3bc('0xf')](_0xa3bc('0x15'),_0x44a42c,JSON['stringify'](_0x21279e));_0x30cc4b(_0x21279e);})[_0xa3bc('0x14')](function(_0x1c90ff){logger['error'](_0xa3bc('0x15'),_0x1c90ff[_0xa3bc('0x13')],_0x44a42c);_0x2980b3(_0x1dc598[_0xa3bc('0x11')](0x1f4,_0x1c90ff['message']));});});};exports[_0xa3bc('0x1e')]=function(_0x3c1b4c){var _0x1b0b37=this;return new Promise(function(_0x395600,_0x54a41d){return db[_0xa3bc('0x16')][_0xa3bc('0x1f')]({'raw':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c[_0xa3bc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c[_0xa3bc('0x18')][_0xa3bc('0x20')]||null:null,'attributes':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c['options']['attributes']||null:null,'include':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c[_0xa3bc('0x18')][_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x3c1b4c['options'][_0xa3bc('0x1b')],function(_0x262929){return{'model':db[_0x262929[_0xa3bc('0x1d')]],'as':_0x262929['as'],'attributes':_0x262929[_0xa3bc('0x1a')],'include':_0x262929[_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x262929[_0xa3bc('0x1b')],function(_0x16d0c7){return{'model':db[_0x16d0c7['model']],'as':_0x16d0c7['as'],'attributes':_0x16d0c7[_0xa3bc('0x1a')],'include':_0x16d0c7[_0xa3bc('0x1b')]?_['map'](_0x16d0c7[_0xa3bc('0x1b')],function(_0x22a09c){return{'model':db[_0x22a09c[_0xa3bc('0x1d')]],'as':_0x22a09c['as'],'attributes':_0x22a09c[_0xa3bc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa3bc('0xb')](function(_0x593931){logger[_0xa3bc('0xc')](_0xa3bc('0x1e'),_0x3c1b4c);logger[_0xa3bc('0xf')]('ShowFreshdeskAccount',_0x3c1b4c,JSON[_0xa3bc('0x10')](_0x593931));_0x395600(_0x593931);})['catch'](function(_0x7ce75a){logger[_0xa3bc('0x11')]('ShowFreshdeskAccount',_0x7ce75a[_0xa3bc('0x13')],_0x3c1b4c);_0x54a41d(_0x1b0b37[_0xa3bc('0x11')](0x1f4,_0x7ce75a[_0xa3bc('0x13')]));});});};
\ No newline at end of file
+var _0x4d39=['catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where','attributes','limit','include','model','map','stringify','find','ShowFreshdeskAccount','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message'];(function(_0xb03f9,_0x588391){var _0x3ec30a=function(_0x3ef5e7){while(--_0x3ef5e7){_0xb03f9['push'](_0xb03f9['shift']());}};_0x3ec30a(++_0x588391);}(_0x4d39,0x18f));var _0x94d3=function(_0x350855,_0x33a744){_0x350855=_0x350855-0x0;var _0x50c972=_0x4d39[_0x350855];return _0x50c972;};'use strict';var _=require('lodash');var util=require(_0x94d3('0x0'));var moment=require('moment');var BPromise=require(_0x94d3('0x1'));var rs=require(_0x94d3('0x2'));var fs=require('fs');var Redis=require(_0x94d3('0x3'));var db=require(_0x94d3('0x4'))['db'];var utils=require(_0x94d3('0x5'));var logger=require(_0x94d3('0x6'))(_0x94d3('0x7'));var config=require(_0x94d3('0x8'));var jayson=require(_0x94d3('0x9'));var client=jayson[_0x94d3('0xa')][_0x94d3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5768bd,_0x3510fc,_0x1f4dff){return new BPromise(function(_0x847975,_0x28e4c1){return client['request'](_0x5768bd,_0x1f4dff)[_0x94d3('0xc')](function(_0x5ae8eb){logger[_0x94d3('0xd')](_0x94d3('0xe'),_0x3510fc,'request\x20sent');logger[_0x94d3('0xf')](_0x94d3('0x10'),_0x3510fc,_0x94d3('0x11'),JSON['stringify'](_0x5ae8eb));if(_0x5ae8eb['error']){if(_0x5ae8eb[_0x94d3('0x12')][_0x94d3('0x13')]===0x1f4){logger[_0x94d3('0x12')](_0x94d3('0xe'),_0x3510fc,_0x5ae8eb[_0x94d3('0x12')][_0x94d3('0x14')]);return _0x28e4c1(_0x5ae8eb[_0x94d3('0x12')][_0x94d3('0x14')]);}logger[_0x94d3('0x12')]('FreshdeskAccount,\x20%s,\x20%s',_0x3510fc,_0x5ae8eb[_0x94d3('0x12')][_0x94d3('0x14')]);return _0x847975(_0x5ae8eb[_0x94d3('0x12')][_0x94d3('0x14')]);}else{logger['info'](_0x94d3('0xe'),_0x3510fc,_0x94d3('0x11'));_0x847975(_0x5ae8eb['result'][_0x94d3('0x14')]);}})[_0x94d3('0x15')](function(_0x534d4e){logger['error'](_0x94d3('0xe'),_0x3510fc,_0x534d4e);_0x28e4c1(_0x534d4e);});});}exports[_0x94d3('0x16')]=function(_0x4978ad){var _0x5b9431=this;return new Promise(function(_0x2d1633,_0x2ffd21){return db[_0x94d3('0x17')][_0x94d3('0x18')]({'raw':_0x4978ad['options']?_0x4978ad[_0x94d3('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4978ad[_0x94d3('0x19')]?_0x4978ad['options'][_0x94d3('0x1a')]||null:null,'attributes':_0x4978ad[_0x94d3('0x19')]?_0x4978ad['options'][_0x94d3('0x1b')]||null:null,'limit':_0x4978ad[_0x94d3('0x19')]?_0x4978ad[_0x94d3('0x19')][_0x94d3('0x1c')]||null:null,'include':_0x4978ad['options']?_0x4978ad[_0x94d3('0x19')][_0x94d3('0x1d')]?_['map'](_0x4978ad[_0x94d3('0x19')]['include'],function(_0x42f355){return{'model':db[_0x42f355[_0x94d3('0x1e')]],'as':_0x42f355['as'],'attributes':_0x42f355[_0x94d3('0x1b')],'include':_0x42f355[_0x94d3('0x1d')]?_[_0x94d3('0x1f')](_0x42f355['include'],function(_0x32d2b2){return{'model':db[_0x32d2b2[_0x94d3('0x1e')]],'as':_0x32d2b2['as'],'attributes':_0x32d2b2['attributes'],'include':_0x32d2b2[_0x94d3('0x1d')]?_['map'](_0x32d2b2[_0x94d3('0x1d')],function(_0x30b57b){return{'model':db[_0x30b57b['model']],'as':_0x30b57b['as'],'attributes':_0x30b57b[_0x94d3('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x94d3('0xc')](function(_0x483b95){logger['info'](_0x94d3('0x16'),_0x4978ad);logger[_0x94d3('0xf')](_0x94d3('0x16'),_0x4978ad,JSON[_0x94d3('0x20')](_0x483b95));_0x2d1633(_0x483b95);})[_0x94d3('0x15')](function(_0x46c488){logger[_0x94d3('0x12')](_0x94d3('0x16'),_0x46c488[_0x94d3('0x14')],_0x4978ad);_0x2ffd21(_0x5b9431['error'](0x1f4,_0x46c488[_0x94d3('0x14')]));});});};exports['ShowFreshdeskAccount']=function(_0xf29638){var _0x2ded5f=this;return new Promise(function(_0x3f04e4,_0x40a452){return db[_0x94d3('0x17')][_0x94d3('0x21')]({'raw':_0xf29638[_0x94d3('0x19')]?_0xf29638[_0x94d3('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xf29638['options']?_0xf29638[_0x94d3('0x19')][_0x94d3('0x1a')]||null:null,'attributes':_0xf29638[_0x94d3('0x19')]?_0xf29638['options']['attributes']||null:null,'include':_0xf29638[_0x94d3('0x19')]?_0xf29638['options']['include']?_[_0x94d3('0x1f')](_0xf29638[_0x94d3('0x19')][_0x94d3('0x1d')],function(_0x17b8f6){return{'model':db[_0x17b8f6[_0x94d3('0x1e')]],'as':_0x17b8f6['as'],'attributes':_0x17b8f6[_0x94d3('0x1b')],'include':_0x17b8f6[_0x94d3('0x1d')]?_[_0x94d3('0x1f')](_0x17b8f6['include'],function(_0x52dff1){return{'model':db[_0x52dff1[_0x94d3('0x1e')]],'as':_0x52dff1['as'],'attributes':_0x52dff1[_0x94d3('0x1b')],'include':_0x52dff1['include']?_[_0x94d3('0x1f')](_0x52dff1[_0x94d3('0x1d')],function(_0x1992b9){return{'model':db[_0x1992b9[_0x94d3('0x1e')]],'as':_0x1992b9['as'],'attributes':_0x1992b9[_0x94d3('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf44acf){logger['info']('ShowFreshdeskAccount',_0xf29638);logger['debug']('ShowFreshdeskAccount',_0xf29638,JSON[_0x94d3('0x20')](_0xf44acf));_0x3f04e4(_0xf44acf);})[_0x94d3('0x15')](function(_0x499928){logger[_0x94d3('0x12')](_0x94d3('0x22'),_0x499928[_0x94d3('0x14')],_0xf29638);_0x40a452(_0x2ded5f[_0x94d3('0x12')](0x1f4,_0x499928['message']));});});};
\ No newline at end of file
index f5a6ca9..27f6b5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe189=['getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','/:id','show','isAuthenticated'];(function(_0x4dd0a7,_0xb4399f){var _0x487e9b=function(_0x355738){while(--_0x355738){_0x4dd0a7['push'](_0x4dd0a7['shift']());}};_0x487e9b(++_0xb4399f);}(_0xe189,0x174));var _0x9e18=function(_0x39054f,_0x133a62){_0x39054f=_0x39054f-0x0;var _0x20e17f=_0xe189[_0x39054f];return _0x20e17f;};'use strict';var multer=require(_0x9e18('0x0'));var util=require('util');var path=require(_0x9e18('0x1'));var timeout=require(_0x9e18('0x2'));var express=require(_0x9e18('0x3'));var router=express[_0x9e18('0x4')]();var fs_extra=require(_0x9e18('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9e18('0x6'));var config=require('../../config/environment');var controller=require(_0x9e18('0x7'));router[_0x9e18('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x9e18('0x9'),auth['isAuthenticated'](),controller[_0x9e18('0xa')]);router[_0x9e18('0x8')]('/:id/fields',auth[_0x9e18('0xb')](),controller[_0x9e18('0xc')]);router[_0x9e18('0x8')](_0x9e18('0xd'),auth[_0x9e18('0xb')](),controller[_0x9e18('0xe')]);router[_0x9e18('0x8')](_0x9e18('0xf'),auth[_0x9e18('0xb')](),controller['getDescriptions']);router[_0x9e18('0x8')](_0x9e18('0x10'),auth['isAuthenticated'](),controller[_0x9e18('0x11')]);router['post']('/',auth[_0x9e18('0xb')](),controller[_0x9e18('0x12')]);router['post']('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0x9e18('0x13')]('/:id',auth[_0x9e18('0xb')](),controller[_0x9e18('0x14')]);router[_0x9e18('0x15')](_0x9e18('0x9'),auth[_0x9e18('0xb')](),controller[_0x9e18('0x16')]);module[_0x9e18('0x17')]=router;
\ No newline at end of file
+var _0x452f=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','setTags','/:id','update','delete','destroy','exports','multer'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0x452f,0x144));var _0xf452=function(_0x448f8,_0x2aa1d7){_0x448f8=_0x448f8-0x0;var _0xa73126=_0x452f[_0x448f8];return _0xa73126;};'use strict';var multer=require(_0xf452('0x0'));var util=require(_0xf452('0x1'));var path=require(_0xf452('0x2'));var timeout=require(_0xf452('0x3'));var express=require(_0xf452('0x4'));var router=express[_0xf452('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf452('0x6'));var interaction=require(_0xf452('0x7'));var config=require('../../config/environment');var controller=require('./intFreshdeskConfiguration.controller');router[_0xf452('0x8')]('/',auth[_0xf452('0x9')](),controller[_0xf452('0xa')]);router[_0xf452('0x8')]('/:id',auth[_0xf452('0x9')](),controller['show']);router[_0xf452('0x8')](_0xf452('0xb'),auth[_0xf452('0x9')](),controller[_0xf452('0xc')]);router[_0xf452('0x8')](_0xf452('0xd'),auth['isAuthenticated'](),controller[_0xf452('0xe')]);router[_0xf452('0x8')](_0xf452('0xf'),auth[_0xf452('0x9')](),controller[_0xf452('0x10')]);router[_0xf452('0x8')](_0xf452('0x11'),auth[_0xf452('0x9')](),controller['getTags']);router[_0xf452('0x12')]('/',auth[_0xf452('0x9')](),controller['create']);router[_0xf452('0x12')]('/:id/tags',auth[_0xf452('0x9')](),controller[_0xf452('0x13')]);router['put'](_0xf452('0x14'),auth[_0xf452('0x9')](),controller[_0xf452('0x15')]);router[_0xf452('0x16')](_0xf452('0x14'),auth['isAuthenticated'](),controller[_0xf452('0x17')]);module[_0xf452('0x18')]=router;
\ No newline at end of file
index d4d6a99..a688135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3463=['sequelize','exports','STRING'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x3463,0xd5));var _0x3346=function(_0x43a6cd,_0x503d1a){_0x43a6cd=_0x43a6cd-0x0;var _0x5acb36=_0x3463[_0x43a6cd];return _0x5acb36;};'use strict';var Sequelize=require(_0x3346('0x0'));module[_0x3346('0x1')]={'name':{'type':Sequelize[_0x3346('0x2')]},'description':{'type':Sequelize[_0x3346('0x2')]}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7f34a75..38655f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4954=['to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','destroy','getFields','findOne','FreshdeskField','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox'];(function(_0x7dda55,_0x3ea1c9){var _0x515db5=function(_0x111c5e){while(--_0x111c5e){_0x7dda55['push'](_0x7dda55['shift']());}};_0x515db5(++_0x3ea1c9);}(_0x4954,0x1a1));var _0x4495=function(_0x28dced,_0x55cacf){_0x28dced=_0x28dced-0x0;var _0x339e8a=_0x4954[_0x28dced];return _0x339e8a;};'use strict';var emlformat=require(_0x4495('0x0'));var rimraf=require(_0x4495('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4495('0x2'));var rp=require(_0x4495('0x3'));var moment=require('moment');var BPromise=require(_0x4495('0x4'));var Mustache=require('mustache');var util=require(_0x4495('0x5'));var path=require(_0x4495('0x6'));var sox=require(_0x4495('0x7'));var csv=require(_0x4495('0x8'));var ejs=require(_0x4495('0x9'));var fs=require('fs');var fs_extra=require(_0x4495('0xa'));var _=require(_0x4495('0xb'));var squel=require('squel');var crypto=require(_0x4495('0xc'));var jsforce=require(_0x4495('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4495('0x8'));var querystring=require(_0x4495('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4495('0xf'));var qs=require(_0x4495('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4495('0x11'));var logger=require('../../config/logger')(_0x4495('0x12'));var utils=require(_0x4495('0x13'));var config=require(_0x4495('0x14'));var licenseUtil=require(_0x4495('0x15'));var db=require(_0x4495('0x16'))['db'];function respondWithStatusCode(_0x3a4d00,_0xe238e0){_0xe238e0=_0xe238e0||0xcc;return function(_0x267104){if(_0x267104){return _0x3a4d00['sendStatus'](_0xe238e0);}return _0x3a4d00['status'](_0xe238e0)[_0x4495('0x17')]();};}function respondWithResult(_0xb97245,_0x2f9daf){_0x2f9daf=_0x2f9daf||0xc8;return function(_0xe9f881){if(_0xe9f881){return _0xb97245['status'](_0x2f9daf)[_0x4495('0x18')](_0xe9f881);}};}function respondWithFilteredResult(_0x30c237,_0x19d091){return function(_0x2bf158){if(_0x2bf158){var _0xd47f27=typeof _0x19d091['offset']===_0x4495('0x19')&&typeof _0x19d091[_0x4495('0x1a')]===_0x4495('0x19');var _0xcc4d14=_0x2bf158[_0x4495('0x1b')];var _0x5f4df7=_0xd47f27?0x0:_0x19d091['offset'];var _0x4d36bc=_0xd47f27?_0x2bf158[_0x4495('0x1b')]:_0x19d091[_0x4495('0x1c')]+_0x19d091[_0x4495('0x1a')];var _0x29587a;if(_0x4d36bc>=_0xcc4d14){_0x4d36bc=_0xcc4d14;_0x29587a=0xc8;}else{_0x29587a=0xce;}_0x30c237[_0x4495('0x1d')](_0x29587a);return _0x30c237[_0x4495('0x1e')](_0x4495('0x1f'),_0x5f4df7+'-'+_0x4d36bc+'/'+_0xcc4d14)['json'](_0x2bf158);}return null;};}function patchUpdates(_0x339e5b){return function(_0x52397b){try{jsonpatch[_0x4495('0x20')](_0x52397b,_0x339e5b,!![]);}catch(_0x1b5c7f){return BPromise[_0x4495('0x21')](_0x1b5c7f);}return _0x52397b[_0x4495('0x22')]();};}function saveUpdates(_0x45cad3,_0x12dff8){return function(_0x37051e){if(_0x37051e){return _0x37051e[_0x4495('0x23')](_0x45cad3)[_0x4495('0x24')](function(_0x56e914){return _0x56e914;});}return null;};}function removeEntity(_0x3ae912,_0x583da2){return function(_0x394b3a){if(_0x394b3a){return _0x394b3a['destroy']()['then'](function(){_0x3ae912[_0x4495('0x1d')](0xcc)[_0x4495('0x17')]();});}};}function handleEntityNotFound(_0x1d65ac,_0x37e472){return function(_0x25e5c6){if(!_0x25e5c6){_0x1d65ac[_0x4495('0x25')](0x194);}return _0x25e5c6;};}function handleError(_0x3cac3e,_0x270135){_0x270135=_0x270135||0x1f4;return function(_0x408acd){logger['error'](_0x408acd[_0x4495('0x26')]);if(_0x408acd[_0x4495('0x27')]){delete _0x408acd[_0x4495('0x27')];}_0x3cac3e['status'](_0x270135)[_0x4495('0x28')](_0x408acd);};}exports[_0x4495('0x29')]=function(_0x8c90f1,_0x2a74cc){var _0x5f3631={},_0x3cc2c0={},_0x563198={'count':0x0,'rows':[]};var _0x19af19=_['map'](db[_0x4495('0x2a')][_0x4495('0x2b')],function(_0x5edc3f){return{'name':_0x5edc3f[_0x4495('0x2c')],'type':_0x5edc3f[_0x4495('0x2d')][_0x4495('0x2e')]};});_0x3cc2c0[_0x4495('0x2f')]=_[_0x4495('0x30')](_0x19af19,_0x4495('0x27'));_0x3cc2c0['query']=_['keys'](_0x8c90f1[_0x4495('0x31')]);_0x3cc2c0[_0x4495('0x32')]=_['intersection'](_0x3cc2c0[_0x4495('0x2f')],_0x3cc2c0['query']);_0x5f3631[_0x4495('0x33')]=_[_0x4495('0x34')](_0x3cc2c0[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x8c90f1['query'][_0x4495('0x35')]));_0x5f3631[_0x4495('0x33')]=_0x5f3631[_0x4495('0x33')][_0x4495('0x36')]?_0x5f3631['attributes']:_0x3cc2c0[_0x4495('0x2f')];if(!_0x8c90f1['query'][_0x4495('0x37')]('nolimit')){_0x5f3631[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x8c90f1[_0x4495('0x31')][_0x4495('0x1a')]);_0x5f3631[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x8c90f1[_0x4495('0x31')][_0x4495('0x1c')]);}_0x5f3631[_0x4495('0x38')]=qs[_0x4495('0x39')](_0x8c90f1[_0x4495('0x31')][_0x4495('0x39')]);_0x5f3631[_0x4495('0x3a')]=qs[_0x4495('0x32')](_[_0x4495('0x3b')](_0x8c90f1[_0x4495('0x31')],_0x3cc2c0[_0x4495('0x32')]),_0x19af19);if(_0x8c90f1[_0x4495('0x31')]['filter']){_0x5f3631[_0x4495('0x3a')]=_['merge'](_0x5f3631[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x19af19,function(_0x166d4c){if(_0x166d4c[_0x4495('0x2d')]!==_0x4495('0x3c')){var _0x53d880={};_0x53d880[_0x166d4c[_0x4495('0x27')]]={'$like':'%'+_0x8c90f1[_0x4495('0x31')][_0x4495('0x3d')]+'%'};return _0x53d880;}})});}_0x5f3631=_[_0x4495('0x3e')]({},_0x5f3631,_0x8c90f1[_0x4495('0x3f')]);var _0x2fe2a6={'where':_0x5f3631[_0x4495('0x3a')]};return db[_0x4495('0x2a')][_0x4495('0x1b')](_0x2fe2a6)[_0x4495('0x24')](function(_0x430d05){_0x563198[_0x4495('0x1b')]=_0x430d05;if(_0x8c90f1[_0x4495('0x31')]['includeAll']){_0x5f3631['include']=[{'all':!![]}];}return db[_0x4495('0x2a')][_0x4495('0x40')](_0x5f3631);})[_0x4495('0x24')](function(_0x109d5e){_0x563198[_0x4495('0x41')]=_0x109d5e;return _0x563198;})[_0x4495('0x24')](respondWithFilteredResult(_0x2a74cc,_0x5f3631))[_0x4495('0x42')](handleError(_0x2a74cc,null));};exports[_0x4495('0x43')]=function(_0x5171be,_0x6ec786){var _0x2e1f89={'raw':![],'where':{'id':_0x5171be[_0x4495('0x44')]['id']}},_0x21ad56={};_0x21ad56[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x2a')][_0x4495('0x2b')]);_0x21ad56[_0x4495('0x31')]=_['keys'](_0x5171be['query']);_0x21ad56['filters']=_[_0x4495('0x34')](_0x21ad56[_0x4495('0x2f')],_0x21ad56[_0x4495('0x31')]);_0x2e1f89[_0x4495('0x33')]=_[_0x4495('0x34')](_0x21ad56[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x5171be[_0x4495('0x31')][_0x4495('0x35')]));_0x2e1f89[_0x4495('0x33')]=_0x2e1f89['attributes']['length']?_0x2e1f89[_0x4495('0x33')]:_0x21ad56[_0x4495('0x2f')];if(_0x5171be[_0x4495('0x31')][_0x4495('0x46')]){_0x2e1f89[_0x4495('0x47')]=[{'all':!![]}];}_0x2e1f89=_[_0x4495('0x3e')]({},_0x2e1f89,_0x5171be[_0x4495('0x3f')]);return db[_0x4495('0x2a')][_0x4495('0x48')](_0x2e1f89)[_0x4495('0x24')](handleEntityNotFound(_0x6ec786,null))['then'](respondWithResult(_0x6ec786,null))[_0x4495('0x42')](handleError(_0x6ec786,null));};exports[_0x4495('0x49')]=function(_0x4be075,_0x5b81ca){return db[_0x4495('0x2a')][_0x4495('0x49')](_0x4be075['body'],{})[_0x4495('0x24')](respondWithResult(_0x5b81ca,0xc9))['catch'](handleError(_0x5b81ca,null));};exports[_0x4495('0x23')]=function(_0x1521c6,_0x32d4d0){if(_0x1521c6[_0x4495('0x4a')]['id']){delete _0x1521c6['body']['id'];}return db[_0x4495('0x2a')][_0x4495('0x48')]({'where':{'id':_0x1521c6[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x32d4d0,null))[_0x4495('0x24')](saveUpdates(_0x1521c6[_0x4495('0x4a')],null))[_0x4495('0x24')](respondWithResult(_0x32d4d0,null))[_0x4495('0x42')](handleError(_0x32d4d0,null));};exports[_0x4495('0x4b')]=function(_0x580099,_0x25e590){return db[_0x4495('0x2a')]['find']({'where':{'id':_0x580099['params']['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x25e590,null))[_0x4495('0x24')](removeEntity(_0x25e590,null))[_0x4495('0x42')](handleError(_0x25e590,null));};exports[_0x4495('0x4c')]=function(_0x256c3b,_0x430b26,_0x4ea55a){var _0x2c6cab={};var _0x3e3f87={};var _0x291c2e;var _0x5cf556;return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x256c3b[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x430b26,null))[_0x4495('0x24')](function(_0x5d3ea1){if(_0x5d3ea1){_0x291c2e=_0x5d3ea1;_0x3e3f87[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x4e')][_0x4495('0x2b')]);_0x3e3f87['query']=_[_0x4495('0x45')](_0x256c3b[_0x4495('0x31')]);_0x3e3f87[_0x4495('0x32')]=_[_0x4495('0x34')](_0x3e3f87[_0x4495('0x2f')],_0x3e3f87[_0x4495('0x31')]);_0x2c6cab['attributes']=_['intersection'](_0x3e3f87[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x256c3b['query'][_0x4495('0x35')]));_0x2c6cab['attributes']=_0x2c6cab['attributes'][_0x4495('0x36')]?_0x2c6cab[_0x4495('0x33')]:_0x3e3f87[_0x4495('0x2f')];_0x2c6cab[_0x4495('0x38')]=qs['sort'](_0x256c3b[_0x4495('0x31')][_0x4495('0x39')]);_0x2c6cab[_0x4495('0x3a')]=qs[_0x4495('0x32')](_['pick'](_0x256c3b[_0x4495('0x31')],_0x3e3f87[_0x4495('0x32')]));if(_0x256c3b[_0x4495('0x31')][_0x4495('0x3d')]){_0x2c6cab[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x2c6cab[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x2c6cab['attributes'],function(_0x57e20b){var _0x44817e={};_0x44817e[_0x57e20b]={'$like':'%'+_0x256c3b[_0x4495('0x31')][_0x4495('0x3d')]+'%'};return _0x44817e;})});}_0x2c6cab=_['merge']({},_0x2c6cab,_0x256c3b[_0x4495('0x3f')]);return _0x291c2e[_0x4495('0x4c')](_0x2c6cab);}})[_0x4495('0x24')](function(_0x19846a){if(_0x19846a){_0x5cf556=_0x19846a[_0x4495('0x36')];if(!_0x256c3b['query'][_0x4495('0x37')](_0x4495('0x4f'))){_0x2c6cab[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x256c3b[_0x4495('0x31')][_0x4495('0x1a')]);_0x2c6cab[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x256c3b[_0x4495('0x31')][_0x4495('0x1c')]);}return _0x291c2e['getFields'](_0x2c6cab);}})[_0x4495('0x24')](function(_0x2b01b2){if(_0x2b01b2){return _0x2b01b2?{'count':_0x5cf556,'rows':_0x2b01b2}:null;}})[_0x4495('0x24')](respondWithResult(_0x430b26,null))[_0x4495('0x42')](handleError(_0x430b26,null));};exports[_0x4495('0x50')]=function(_0x461602,_0x13545a,_0x2009f0){var _0x4373d7={};var _0x15c4d9={};var _0x3fb5c4;var _0x4e5a35;return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x461602[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x13545a,null))[_0x4495('0x24')](function(_0x3dc68b){if(_0x3dc68b){_0x3fb5c4=_0x3dc68b;_0x15c4d9[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x4e')][_0x4495('0x2b')]);_0x15c4d9[_0x4495('0x31')]=_[_0x4495('0x45')](_0x461602[_0x4495('0x31')]);_0x15c4d9[_0x4495('0x32')]=_[_0x4495('0x34')](_0x15c4d9[_0x4495('0x2f')],_0x15c4d9['query']);_0x4373d7['attributes']=_['intersection'](_0x15c4d9[_0x4495('0x2f')],qs['fields'](_0x461602['query'][_0x4495('0x35')]));_0x4373d7[_0x4495('0x33')]=_0x4373d7['attributes'][_0x4495('0x36')]?_0x4373d7['attributes']:_0x15c4d9[_0x4495('0x2f')];_0x4373d7[_0x4495('0x38')]=qs[_0x4495('0x39')](_0x461602[_0x4495('0x31')][_0x4495('0x39')]);_0x4373d7[_0x4495('0x3a')]=qs[_0x4495('0x32')](_[_0x4495('0x3b')](_0x461602['query'],_0x15c4d9['filters']));if(_0x461602['query'][_0x4495('0x3d')]){_0x4373d7[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x4373d7[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x4373d7[_0x4495('0x33')],function(_0x1c6dd9){var _0x343dcd={};_0x343dcd[_0x1c6dd9]={'$like':'%'+_0x461602[_0x4495('0x31')]['filter']+'%'};return _0x343dcd;})});}_0x4373d7=_[_0x4495('0x3e')]({},_0x4373d7,_0x461602[_0x4495('0x3f')]);return _0x3fb5c4['getSubjects'](_0x4373d7);}})[_0x4495('0x24')](function(_0x2b6b3b){if(_0x2b6b3b){_0x4e5a35=_0x2b6b3b['length'];if(!_0x461602['query'][_0x4495('0x37')]('nolimit')){_0x4373d7[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x461602[_0x4495('0x31')][_0x4495('0x1a')]);_0x4373d7['offset']=qs['offset'](_0x461602[_0x4495('0x31')][_0x4495('0x1c')]);}return _0x3fb5c4[_0x4495('0x50')](_0x4373d7);}})[_0x4495('0x24')](function(_0x4abd71){if(_0x4abd71){return _0x4abd71?{'count':_0x4e5a35,'rows':_0x4abd71}:null;}})[_0x4495('0x24')](respondWithResult(_0x13545a,null))[_0x4495('0x42')](handleError(_0x13545a,null));};exports[_0x4495('0x51')]=function(_0x474c45,_0x32260f,_0x504a30){var _0x16d45d={};var _0x1c66bb={};var _0x438cd1;var _0x2bf921;return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x474c45[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x32260f,null))['then'](function(_0xf4956c){if(_0xf4956c){_0x438cd1=_0xf4956c;_0x1c66bb[_0x4495('0x2f')]=_['keys'](db[_0x4495('0x4e')][_0x4495('0x2b')]);_0x1c66bb[_0x4495('0x31')]=_[_0x4495('0x45')](_0x474c45[_0x4495('0x31')]);_0x1c66bb[_0x4495('0x32')]=_[_0x4495('0x34')](_0x1c66bb[_0x4495('0x2f')],_0x1c66bb[_0x4495('0x31')]);_0x16d45d['attributes']=_[_0x4495('0x34')](_0x1c66bb[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x474c45['query'][_0x4495('0x35')]));_0x16d45d[_0x4495('0x33')]=_0x16d45d['attributes'][_0x4495('0x36')]?_0x16d45d[_0x4495('0x33')]:_0x1c66bb['model'];_0x16d45d[_0x4495('0x38')]=qs[_0x4495('0x39')](_0x474c45[_0x4495('0x31')]['sort']);_0x16d45d[_0x4495('0x3a')]=qs[_0x4495('0x32')](_[_0x4495('0x3b')](_0x474c45['query'],_0x1c66bb[_0x4495('0x32')]));if(_0x474c45[_0x4495('0x31')][_0x4495('0x3d')]){_0x16d45d[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x16d45d['where'],{'$or':_[_0x4495('0x30')](_0x16d45d[_0x4495('0x33')],function(_0x23707d){var _0x48edca={};_0x48edca[_0x23707d]={'$like':'%'+_0x474c45[_0x4495('0x31')][_0x4495('0x3d')]+'%'};return _0x48edca;})});}_0x16d45d=_['merge']({},_0x16d45d,_0x474c45['options']);return _0x438cd1[_0x4495('0x51')](_0x16d45d);}})[_0x4495('0x24')](function(_0xc8a595){if(_0xc8a595){_0x2bf921=_0xc8a595[_0x4495('0x36')];if(!_0x474c45[_0x4495('0x31')][_0x4495('0x37')]('nolimit')){_0x16d45d[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x474c45[_0x4495('0x31')][_0x4495('0x1a')]);_0x16d45d[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x474c45['query']['offset']);}return _0x438cd1[_0x4495('0x51')](_0x16d45d);}})['then'](function(_0x44d34a){if(_0x44d34a){return _0x44d34a?{'count':_0x2bf921,'rows':_0x44d34a}:null;}})[_0x4495('0x24')](respondWithResult(_0x32260f,null))[_0x4495('0x42')](handleError(_0x32260f,null));};exports[_0x4495('0x52')]=function(_0x29eb37,_0x40b41a,_0xa13235){var _0x40669f={};var _0x49a625={};var _0x2b7487;var _0x23c743;return db[_0x4495('0x2a')]['findOne']({'where':{'id':_0x29eb37[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x40b41a,null))['then'](function(_0x53abe9){if(_0x53abe9){_0x2b7487=_0x53abe9;_0x49a625[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x53')][_0x4495('0x2b')]);_0x49a625[_0x4495('0x31')]=_[_0x4495('0x45')](_0x29eb37[_0x4495('0x31')]);_0x49a625['filters']=_[_0x4495('0x34')](_0x49a625[_0x4495('0x2f')],_0x49a625[_0x4495('0x31')]);_0x40669f[_0x4495('0x33')]=_['intersection'](_0x49a625[_0x4495('0x2f')],qs['fields'](_0x29eb37['query'][_0x4495('0x35')]));_0x40669f[_0x4495('0x33')]=_0x40669f['attributes'][_0x4495('0x36')]?_0x40669f[_0x4495('0x33')]:_0x49a625[_0x4495('0x2f')];_0x40669f['order']=qs[_0x4495('0x39')](_0x29eb37[_0x4495('0x31')][_0x4495('0x39')]);_0x40669f[_0x4495('0x3a')]=qs['filters'](_[_0x4495('0x3b')](_0x29eb37['query'],_0x49a625[_0x4495('0x32')]));if(_0x29eb37[_0x4495('0x31')][_0x4495('0x3d')]){_0x40669f[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x40669f[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x40669f[_0x4495('0x33')],function(_0x444ffa){var _0x37d129={};_0x37d129[_0x444ffa]={'$like':'%'+_0x29eb37['query'][_0x4495('0x3d')]+'%'};return _0x37d129;})});}_0x40669f=_[_0x4495('0x3e')]({},_0x40669f,_0x29eb37[_0x4495('0x3f')]);return _0x2b7487[_0x4495('0x52')](_0x40669f);}})[_0x4495('0x24')](function(_0x1fedd5){if(_0x1fedd5){_0x23c743=_0x1fedd5['length'];if(!_0x29eb37[_0x4495('0x31')][_0x4495('0x37')](_0x4495('0x4f'))){_0x40669f[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x29eb37[_0x4495('0x31')][_0x4495('0x1a')]);_0x40669f[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x29eb37[_0x4495('0x31')][_0x4495('0x1c')]);}return _0x2b7487[_0x4495('0x52')](_0x40669f);}})[_0x4495('0x24')](function(_0x651944){if(_0x651944){return _0x651944?{'count':_0x23c743,'rows':_0x651944}:null;}})[_0x4495('0x24')](respondWithResult(_0x40b41a,null))[_0x4495('0x42')](handleError(_0x40b41a,null));};exports[_0x4495('0x54')]=function(_0x3b24b1,_0x3d649d,_0x562b6b){if(_0x3b24b1[_0x4495('0x4a')]['id']){delete _0x3b24b1[_0x4495('0x4a')]['id'];}return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x3b24b1[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x3d649d,null))['then'](function(_0x1240ab){if(_0x1240ab){return _0x1240ab['setTags'](_0x3b24b1['body']['ids']||[]);}return null;})['then'](respondWithResult(_0x3d649d,null))[_0x4495('0x42')](handleError(_0x3d649d,null));};
\ No newline at end of file
+var _0x1877=['count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','create','find','body','getFields','FreshdeskField','sort','pick','getSubjects','getDescriptions','Tag','getTags','setTags','ids','rimraf','fast-json-patch','mustache','util','path','sox','fs-extra','lodash','squel','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit'];(function(_0x3030ab,_0x37169a){var _0x24c606=function(_0x3c84fd){while(--_0x3c84fd){_0x3030ab['push'](_0x3030ab['shift']());}};_0x24c606(++_0x37169a);}(_0x1877,0x87));var _0x7187=function(_0xc7f23c,_0x2be758){_0xc7f23c=_0xc7f23c-0x0;var _0x4b4def=_0x1877[_0xc7f23c];return _0x4b4def;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7187('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7187('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7187('0x2'));var util=require(_0x7187('0x3'));var path=require(_0x7187('0x4'));var sox=require(_0x7187('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7187('0x6'));var _=require(_0x7187('0x7'));var squel=require(_0x7187('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7187('0x9'));var toCsv=require(_0x7187('0xa'));var querystring=require('querystring');var Papa=require(_0x7187('0xb'));var Redis=require(_0x7187('0xc'));var authService=require(_0x7187('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x7187('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7187('0xf'))(_0x7187('0x10'));var utils=require(_0x7187('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x7187('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x132898,_0x147b38){_0x147b38=_0x147b38||0xcc;return function(_0x230626){if(_0x230626){return _0x132898[_0x7187('0x13')](_0x147b38);}return _0x132898[_0x7187('0x14')](_0x147b38)[_0x7187('0x15')]();};}function respondWithResult(_0x1848c4,_0x4d2d6b){_0x4d2d6b=_0x4d2d6b||0xc8;return function(_0x4a3c50){if(_0x4a3c50){return _0x1848c4[_0x7187('0x14')](_0x4d2d6b)[_0x7187('0x16')](_0x4a3c50);}};}function respondWithFilteredResult(_0x834daa,_0x3bbe40){return function(_0x367cbe){if(_0x367cbe){var _0x54e552=typeof _0x3bbe40['offset']===_0x7187('0x17')&&typeof _0x3bbe40[_0x7187('0x18')]==='undefined';var _0xb38104=_0x367cbe[_0x7187('0x19')];var _0x28889f=_0x54e552?0x0:_0x3bbe40[_0x7187('0x1a')];var _0x3798a3=_0x54e552?_0x367cbe[_0x7187('0x19')]:_0x3bbe40[_0x7187('0x1a')]+_0x3bbe40[_0x7187('0x18')];var _0x5085df;if(_0x3798a3>=_0xb38104){_0x3798a3=_0xb38104;_0x5085df=0xc8;}else{_0x5085df=0xce;}_0x834daa[_0x7187('0x14')](_0x5085df);return _0x834daa[_0x7187('0x1b')](_0x7187('0x1c'),_0x28889f+'-'+_0x3798a3+'/'+_0xb38104)[_0x7187('0x16')](_0x367cbe);}return null;};}function patchUpdates(_0x5546c2){return function(_0x1b0f2a){try{jsonpatch[_0x7187('0x1d')](_0x1b0f2a,_0x5546c2,!![]);}catch(_0xbe2553){return BPromise[_0x7187('0x1e')](_0xbe2553);}return _0x1b0f2a[_0x7187('0x1f')]();};}function saveUpdates(_0x470576,_0x25bae7){return function(_0x3c11eb){if(_0x3c11eb){return _0x3c11eb[_0x7187('0x20')](_0x470576)[_0x7187('0x21')](function(_0x59f963){return _0x59f963;});}return null;};}function removeEntity(_0x37fa38,_0x39c00d){return function(_0x21deb4){if(_0x21deb4){return _0x21deb4[_0x7187('0x22')]()['then'](function(){_0x37fa38[_0x7187('0x14')](0xcc)[_0x7187('0x15')]();});}};}function handleEntityNotFound(_0x5c95d1,_0x1c721b){return function(_0x5db79f){if(!_0x5db79f){_0x5c95d1[_0x7187('0x13')](0x194);}return _0x5db79f;};}function handleError(_0x4362b2,_0x38ddb0){_0x38ddb0=_0x38ddb0||0x1f4;return function(_0x29311b){logger[_0x7187('0x23')](_0x29311b[_0x7187('0x24')]);if(_0x29311b[_0x7187('0x25')]){delete _0x29311b[_0x7187('0x25')];}_0x4362b2[_0x7187('0x14')](_0x38ddb0)[_0x7187('0x26')](_0x29311b);};}exports[_0x7187('0x27')]=function(_0x5dbc75,_0x4194c5){var _0x1608e4={},_0x3f11d3={},_0x746bb1={'count':0x0,'rows':[]};var _0x2bc0cc=_[_0x7187('0x28')](db[_0x7187('0x29')][_0x7187('0x2a')],function(_0x1724f9){return{'name':_0x1724f9[_0x7187('0x2b')],'type':_0x1724f9[_0x7187('0x2c')]['key']};});_0x3f11d3[_0x7187('0x2d')]=_[_0x7187('0x28')](_0x2bc0cc,_0x7187('0x25'));_0x3f11d3[_0x7187('0x2e')]=_[_0x7187('0x2f')](_0x5dbc75[_0x7187('0x2e')]);_0x3f11d3[_0x7187('0x30')]=_[_0x7187('0x31')](_0x3f11d3['model'],_0x3f11d3['query']);_0x1608e4[_0x7187('0x32')]=_[_0x7187('0x31')](_0x3f11d3[_0x7187('0x2d')],qs[_0x7187('0x33')](_0x5dbc75['query']['fields']));_0x1608e4[_0x7187('0x32')]=_0x1608e4[_0x7187('0x32')][_0x7187('0x34')]?_0x1608e4[_0x7187('0x32')]:_0x3f11d3[_0x7187('0x2d')];if(!_0x5dbc75[_0x7187('0x2e')][_0x7187('0x35')](_0x7187('0x36'))){_0x1608e4[_0x7187('0x18')]=qs[_0x7187('0x18')](_0x5dbc75[_0x7187('0x2e')][_0x7187('0x18')]);_0x1608e4[_0x7187('0x1a')]=qs['offset'](_0x5dbc75[_0x7187('0x2e')][_0x7187('0x1a')]);}_0x1608e4[_0x7187('0x37')]=qs['sort'](_0x5dbc75['query']['sort']);_0x1608e4[_0x7187('0x38')]=qs['filters'](_['pick'](_0x5dbc75[_0x7187('0x2e')],_0x3f11d3[_0x7187('0x30')]),_0x2bc0cc);if(_0x5dbc75[_0x7187('0x2e')][_0x7187('0x39')]){_0x1608e4['where']=_[_0x7187('0x3a')](_0x1608e4[_0x7187('0x38')],{'$or':_[_0x7187('0x28')](_0x2bc0cc,function(_0x1bc793){if(_0x1bc793[_0x7187('0x2c')]!==_0x7187('0x3b')){var _0x3c1ac5={};_0x3c1ac5[_0x1bc793['name']]={'$like':'%'+_0x5dbc75[_0x7187('0x2e')][_0x7187('0x39')]+'%'};return _0x3c1ac5;}})});}_0x1608e4=_[_0x7187('0x3a')]({},_0x1608e4,_0x5dbc75[_0x7187('0x3c')]);var _0x61d9e8={'where':_0x1608e4[_0x7187('0x38')]};return db['FreshdeskConfiguration']['count'](_0x61d9e8)[_0x7187('0x21')](function(_0x11034d){_0x746bb1['count']=_0x11034d;if(_0x5dbc75['query'][_0x7187('0x3d')]){_0x1608e4['include']=[{'all':!![]}];}return db[_0x7187('0x29')][_0x7187('0x3e')](_0x1608e4);})[_0x7187('0x21')](function(_0x2b1f54){_0x746bb1['rows']=_0x2b1f54;return _0x746bb1;})['then'](respondWithFilteredResult(_0x4194c5,_0x1608e4))[_0x7187('0x3f')](handleError(_0x4194c5,null));};exports[_0x7187('0x40')]=function(_0x17b720,_0x5ae191){var _0x3f82e4={'raw':![],'where':{'id':_0x17b720[_0x7187('0x41')]['id']}},_0x3900f1={};_0x3900f1[_0x7187('0x2d')]=_[_0x7187('0x2f')](db[_0x7187('0x29')][_0x7187('0x2a')]);_0x3900f1[_0x7187('0x2e')]=_['keys'](_0x17b720[_0x7187('0x2e')]);_0x3900f1[_0x7187('0x30')]=_[_0x7187('0x31')](_0x3900f1[_0x7187('0x2d')],_0x3900f1[_0x7187('0x2e')]);_0x3f82e4[_0x7187('0x32')]=_[_0x7187('0x31')](_0x3900f1[_0x7187('0x2d')],qs[_0x7187('0x33')](_0x17b720[_0x7187('0x2e')][_0x7187('0x33')]));_0x3f82e4[_0x7187('0x32')]=_0x3f82e4[_0x7187('0x32')][_0x7187('0x34')]?_0x3f82e4['attributes']:_0x3900f1[_0x7187('0x2d')];if(_0x17b720[_0x7187('0x2e')][_0x7187('0x3d')]){_0x3f82e4[_0x7187('0x42')]=[{'all':!![]}];}_0x3f82e4=_[_0x7187('0x3a')]({},_0x3f82e4,_0x17b720['options']);return db[_0x7187('0x29')]['find'](_0x3f82e4)[_0x7187('0x21')](handleEntityNotFound(_0x5ae191,null))[_0x7187('0x21')](respondWithResult(_0x5ae191,null))[_0x7187('0x3f')](handleError(_0x5ae191,null));};exports[_0x7187('0x43')]=function(_0x5c4c14,_0x1217e8){return db['FreshdeskConfiguration']['create'](_0x5c4c14['body'],{})['then'](respondWithResult(_0x1217e8,0xc9))[_0x7187('0x3f')](handleError(_0x1217e8,null));};exports['update']=function(_0x1445d2,_0x4dc7d2){if(_0x1445d2['body']['id']){delete _0x1445d2['body']['id'];}return db[_0x7187('0x29')][_0x7187('0x44')]({'where':{'id':_0x1445d2[_0x7187('0x41')]['id']}})['then'](handleEntityNotFound(_0x4dc7d2,null))[_0x7187('0x21')](saveUpdates(_0x1445d2[_0x7187('0x45')],null))[_0x7187('0x21')](respondWithResult(_0x4dc7d2,null))[_0x7187('0x3f')](handleError(_0x4dc7d2,null));};exports[_0x7187('0x22')]=function(_0x206ca3,_0x11f617){return db['FreshdeskConfiguration'][_0x7187('0x44')]({'where':{'id':_0x206ca3[_0x7187('0x41')]['id']}})['then'](handleEntityNotFound(_0x11f617,null))[_0x7187('0x21')](removeEntity(_0x11f617,null))[_0x7187('0x3f')](handleError(_0x11f617,null));};exports[_0x7187('0x46')]=function(_0x4cbe5a,_0x1d790b,_0x5f12d0){var _0x451d8a={};var _0x1f08ee={};var _0x1893fe;var _0x23d450;return db[_0x7187('0x29')]['findOne']({'where':{'id':_0x4cbe5a[_0x7187('0x41')]['id']}})[_0x7187('0x21')](handleEntityNotFound(_0x1d790b,null))[_0x7187('0x21')](function(_0x2c937d){if(_0x2c937d){_0x1893fe=_0x2c937d;_0x1f08ee[_0x7187('0x2d')]=_['keys'](db[_0x7187('0x47')][_0x7187('0x2a')]);_0x1f08ee['query']=_[_0x7187('0x2f')](_0x4cbe5a[_0x7187('0x2e')]);_0x1f08ee[_0x7187('0x30')]=_[_0x7187('0x31')](_0x1f08ee[_0x7187('0x2d')],_0x1f08ee[_0x7187('0x2e')]);_0x451d8a[_0x7187('0x32')]=_['intersection'](_0x1f08ee[_0x7187('0x2d')],qs[_0x7187('0x33')](_0x4cbe5a[_0x7187('0x2e')][_0x7187('0x33')]));_0x451d8a['attributes']=_0x451d8a['attributes']['length']?_0x451d8a[_0x7187('0x32')]:_0x1f08ee[_0x7187('0x2d')];_0x451d8a['order']=qs[_0x7187('0x48')](_0x4cbe5a[_0x7187('0x2e')][_0x7187('0x48')]);_0x451d8a[_0x7187('0x38')]=qs[_0x7187('0x30')](_[_0x7187('0x49')](_0x4cbe5a[_0x7187('0x2e')],_0x1f08ee[_0x7187('0x30')]));if(_0x4cbe5a['query']['filter']){_0x451d8a[_0x7187('0x38')]=_['merge'](_0x451d8a['where'],{'$or':_[_0x7187('0x28')](_0x451d8a['attributes'],function(_0x2e61bd){var _0x55dc53={};_0x55dc53[_0x2e61bd]={'$like':'%'+_0x4cbe5a['query'][_0x7187('0x39')]+'%'};return _0x55dc53;})});}_0x451d8a=_[_0x7187('0x3a')]({},_0x451d8a,_0x4cbe5a[_0x7187('0x3c')]);return _0x1893fe[_0x7187('0x46')](_0x451d8a);}})[_0x7187('0x21')](function(_0x4233c7){if(_0x4233c7){_0x23d450=_0x4233c7[_0x7187('0x34')];if(!_0x4cbe5a[_0x7187('0x2e')][_0x7187('0x35')](_0x7187('0x36'))){_0x451d8a[_0x7187('0x18')]=qs[_0x7187('0x18')](_0x4cbe5a['query'][_0x7187('0x18')]);_0x451d8a[_0x7187('0x1a')]=qs[_0x7187('0x1a')](_0x4cbe5a['query'][_0x7187('0x1a')]);}return _0x1893fe[_0x7187('0x46')](_0x451d8a);}})[_0x7187('0x21')](function(_0x49aa22){if(_0x49aa22){return _0x49aa22?{'count':_0x23d450,'rows':_0x49aa22}:null;}})[_0x7187('0x21')](respondWithResult(_0x1d790b,null))[_0x7187('0x3f')](handleError(_0x1d790b,null));};exports[_0x7187('0x4a')]=function(_0x2b0d8f,_0x3c0dce,_0x30d73c){var _0x4efff2={};var _0x2c21a9={};var _0x467f9f;var _0x1300b5;return db[_0x7187('0x29')]['findOne']({'where':{'id':_0x2b0d8f[_0x7187('0x41')]['id']}})['then'](handleEntityNotFound(_0x3c0dce,null))['then'](function(_0x13ec43){if(_0x13ec43){_0x467f9f=_0x13ec43;_0x2c21a9[_0x7187('0x2d')]=_['keys'](db['FreshdeskField'][_0x7187('0x2a')]);_0x2c21a9['query']=_[_0x7187('0x2f')](_0x2b0d8f[_0x7187('0x2e')]);_0x2c21a9[_0x7187('0x30')]=_[_0x7187('0x31')](_0x2c21a9[_0x7187('0x2d')],_0x2c21a9[_0x7187('0x2e')]);_0x4efff2[_0x7187('0x32')]=_[_0x7187('0x31')](_0x2c21a9[_0x7187('0x2d')],qs[_0x7187('0x33')](_0x2b0d8f['query'][_0x7187('0x33')]));_0x4efff2[_0x7187('0x32')]=_0x4efff2['attributes'][_0x7187('0x34')]?_0x4efff2[_0x7187('0x32')]:_0x2c21a9['model'];_0x4efff2[_0x7187('0x37')]=qs[_0x7187('0x48')](_0x2b0d8f[_0x7187('0x2e')][_0x7187('0x48')]);_0x4efff2[_0x7187('0x38')]=qs[_0x7187('0x30')](_[_0x7187('0x49')](_0x2b0d8f[_0x7187('0x2e')],_0x2c21a9[_0x7187('0x30')]));if(_0x2b0d8f[_0x7187('0x2e')]['filter']){_0x4efff2[_0x7187('0x38')]=_[_0x7187('0x3a')](_0x4efff2[_0x7187('0x38')],{'$or':_['map'](_0x4efff2[_0x7187('0x32')],function(_0x3fefb0){var _0x7bd43b={};_0x7bd43b[_0x3fefb0]={'$like':'%'+_0x2b0d8f[_0x7187('0x2e')][_0x7187('0x39')]+'%'};return _0x7bd43b;})});}_0x4efff2=_[_0x7187('0x3a')]({},_0x4efff2,_0x2b0d8f[_0x7187('0x3c')]);return _0x467f9f[_0x7187('0x4a')](_0x4efff2);}})[_0x7187('0x21')](function(_0x4d4b45){if(_0x4d4b45){_0x1300b5=_0x4d4b45[_0x7187('0x34')];if(!_0x2b0d8f[_0x7187('0x2e')][_0x7187('0x35')](_0x7187('0x36'))){_0x4efff2['limit']=qs[_0x7187('0x18')](_0x2b0d8f[_0x7187('0x2e')][_0x7187('0x18')]);_0x4efff2[_0x7187('0x1a')]=qs[_0x7187('0x1a')](_0x2b0d8f[_0x7187('0x2e')][_0x7187('0x1a')]);}return _0x467f9f['getSubjects'](_0x4efff2);}})[_0x7187('0x21')](function(_0x3b98af){if(_0x3b98af){return _0x3b98af?{'count':_0x1300b5,'rows':_0x3b98af}:null;}})[_0x7187('0x21')](respondWithResult(_0x3c0dce,null))[_0x7187('0x3f')](handleError(_0x3c0dce,null));};exports[_0x7187('0x4b')]=function(_0x27e1d0,_0xe87e66,_0x347bfe){var _0x1e077e={};var _0x32521c={};var _0xe135ec;var _0x31aac5;return db[_0x7187('0x29')]['findOne']({'where':{'id':_0x27e1d0[_0x7187('0x41')]['id']}})[_0x7187('0x21')](handleEntityNotFound(_0xe87e66,null))[_0x7187('0x21')](function(_0x595036){if(_0x595036){_0xe135ec=_0x595036;_0x32521c[_0x7187('0x2d')]=_[_0x7187('0x2f')](db[_0x7187('0x47')]['rawAttributes']);_0x32521c[_0x7187('0x2e')]=_[_0x7187('0x2f')](_0x27e1d0['query']);_0x32521c[_0x7187('0x30')]=_[_0x7187('0x31')](_0x32521c['model'],_0x32521c['query']);_0x1e077e['attributes']=_[_0x7187('0x31')](_0x32521c[_0x7187('0x2d')],qs['fields'](_0x27e1d0[_0x7187('0x2e')][_0x7187('0x33')]));_0x1e077e['attributes']=_0x1e077e[_0x7187('0x32')]['length']?_0x1e077e[_0x7187('0x32')]:_0x32521c[_0x7187('0x2d')];_0x1e077e[_0x7187('0x37')]=qs[_0x7187('0x48')](_0x27e1d0[_0x7187('0x2e')][_0x7187('0x48')]);_0x1e077e[_0x7187('0x38')]=qs['filters'](_['pick'](_0x27e1d0[_0x7187('0x2e')],_0x32521c[_0x7187('0x30')]));if(_0x27e1d0[_0x7187('0x2e')][_0x7187('0x39')]){_0x1e077e[_0x7187('0x38')]=_[_0x7187('0x3a')](_0x1e077e[_0x7187('0x38')],{'$or':_['map'](_0x1e077e[_0x7187('0x32')],function(_0xf55e34){var _0x2ef7ed={};_0x2ef7ed[_0xf55e34]={'$like':'%'+_0x27e1d0[_0x7187('0x2e')]['filter']+'%'};return _0x2ef7ed;})});}_0x1e077e=_['merge']({},_0x1e077e,_0x27e1d0[_0x7187('0x3c')]);return _0xe135ec[_0x7187('0x4b')](_0x1e077e);}})[_0x7187('0x21')](function(_0x57d0d8){if(_0x57d0d8){_0x31aac5=_0x57d0d8['length'];if(!_0x27e1d0[_0x7187('0x2e')][_0x7187('0x35')](_0x7187('0x36'))){_0x1e077e[_0x7187('0x18')]=qs[_0x7187('0x18')](_0x27e1d0['query']['limit']);_0x1e077e['offset']=qs[_0x7187('0x1a')](_0x27e1d0[_0x7187('0x2e')][_0x7187('0x1a')]);}return _0xe135ec[_0x7187('0x4b')](_0x1e077e);}})[_0x7187('0x21')](function(_0x519e38){if(_0x519e38){return _0x519e38?{'count':_0x31aac5,'rows':_0x519e38}:null;}})['then'](respondWithResult(_0xe87e66,null))[_0x7187('0x3f')](handleError(_0xe87e66,null));};exports['getTags']=function(_0x478a51,_0x37d0e1,_0x439edc){var _0x223ca1={};var _0x3c17da={};var _0x233d5c;var _0x3f457f;return db[_0x7187('0x29')]['findOne']({'where':{'id':_0x478a51['params']['id']}})[_0x7187('0x21')](handleEntityNotFound(_0x37d0e1,null))[_0x7187('0x21')](function(_0x5e8925){if(_0x5e8925){_0x233d5c=_0x5e8925;_0x3c17da['model']=_['keys'](db[_0x7187('0x4c')]['rawAttributes']);_0x3c17da['query']=_['keys'](_0x478a51[_0x7187('0x2e')]);_0x3c17da[_0x7187('0x30')]=_[_0x7187('0x31')](_0x3c17da[_0x7187('0x2d')],_0x3c17da[_0x7187('0x2e')]);_0x223ca1['attributes']=_['intersection'](_0x3c17da[_0x7187('0x2d')],qs[_0x7187('0x33')](_0x478a51['query'][_0x7187('0x33')]));_0x223ca1[_0x7187('0x32')]=_0x223ca1[_0x7187('0x32')]['length']?_0x223ca1[_0x7187('0x32')]:_0x3c17da[_0x7187('0x2d')];_0x223ca1[_0x7187('0x37')]=qs[_0x7187('0x48')](_0x478a51[_0x7187('0x2e')][_0x7187('0x48')]);_0x223ca1[_0x7187('0x38')]=qs['filters'](_['pick'](_0x478a51[_0x7187('0x2e')],_0x3c17da[_0x7187('0x30')]));if(_0x478a51['query']['filter']){_0x223ca1[_0x7187('0x38')]=_['merge'](_0x223ca1[_0x7187('0x38')],{'$or':_[_0x7187('0x28')](_0x223ca1[_0x7187('0x32')],function(_0xfad6ac){var _0x4e5462={};_0x4e5462[_0xfad6ac]={'$like':'%'+_0x478a51[_0x7187('0x2e')][_0x7187('0x39')]+'%'};return _0x4e5462;})});}_0x223ca1=_['merge']({},_0x223ca1,_0x478a51[_0x7187('0x3c')]);return _0x233d5c[_0x7187('0x4d')](_0x223ca1);}})[_0x7187('0x21')](function(_0x536619){if(_0x536619){_0x3f457f=_0x536619[_0x7187('0x34')];if(!_0x478a51[_0x7187('0x2e')][_0x7187('0x35')]('nolimit')){_0x223ca1['limit']=qs[_0x7187('0x18')](_0x478a51[_0x7187('0x2e')][_0x7187('0x18')]);_0x223ca1[_0x7187('0x1a')]=qs[_0x7187('0x1a')](_0x478a51['query'][_0x7187('0x1a')]);}return _0x233d5c['getTags'](_0x223ca1);}})['then'](function(_0x1684b3){if(_0x1684b3){return _0x1684b3?{'count':_0x3f457f,'rows':_0x1684b3}:null;}})[_0x7187('0x21')](respondWithResult(_0x37d0e1,null))[_0x7187('0x3f')](handleError(_0x37d0e1,null));};exports[_0x7187('0x4e')]=function(_0x244d29,_0x4a62cd,_0x51345d){if(_0x244d29['body']['id']){delete _0x244d29[_0x7187('0x45')]['id'];}return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x244d29[_0x7187('0x41')]['id']}})[_0x7187('0x21')](handleEntityNotFound(_0x4a62cd,null))[_0x7187('0x21')](function(_0x279a4a){if(_0x279a4a){return _0x279a4a['setTags'](_0x244d29[_0x7187('0x45')][_0x7187('0x4f')]||[]);}return null;})['then'](respondWithResult(_0x4a62cd,null))['catch'](handleError(_0x4a62cd,null));};
\ No newline at end of file
index 0adad5a..9d860a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f48=['int_freshdesk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration'];(function(_0x422b1c,_0x401cd1){var _0x4ae0ec=function(_0x3a34de){while(--_0x3a34de){_0x422b1c['push'](_0x422b1c['shift']());}};_0x4ae0ec(++_0x401cd1);}(_0x8f48,0x12c));var _0x88f4=function(_0x3ab0ac,_0x1ea9cf){_0x3ab0ac=_0x3ab0ac-0x0;var _0x1f743d=_0x8f48[_0x3ab0ac];return _0x1f743d;};'use strict';var _=require(_0x88f4('0x0'));var util=require(_0x88f4('0x1'));var logger=require(_0x88f4('0x2'))(_0x88f4('0x3'));var moment=require(_0x88f4('0x4'));var BPromise=require(_0x88f4('0x5'));var rp=require(_0x88f4('0x6'));var fs=require('fs');var path=require(_0x88f4('0x7'));var rimraf=require('rimraf');var config=require(_0x88f4('0x8'));var attributes=require(_0x88f4('0x9'));module['exports']=function(_0x32ccbe,_0x54d208){return _0x32ccbe[_0x88f4('0xa')](_0x88f4('0xb'),attributes,{'tableName':_0x88f4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x51ba=['api','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','int_freshdesk_configurations','util','../../config/logger'];(function(_0x135411,_0x3c6a8f){var _0x1bbc84=function(_0xdc002c){while(--_0xdc002c){_0x135411['push'](_0x135411['shift']());}};_0x1bbc84(++_0x3c6a8f);}(_0x51ba,0x6c));var _0xa51b=function(_0x51c77d,_0x1964fe){_0x51c77d=_0x51c77d-0x0;var _0x1256e6=_0x51ba[_0x51c77d];return _0x1256e6;};'use strict';var _=require('lodash');var util=require(_0xa51b('0x0'));var logger=require(_0xa51b('0x1'))(_0xa51b('0x2'));var moment=require('moment');var BPromise=require(_0xa51b('0x3'));var rp=require(_0xa51b('0x4'));var fs=require('fs');var path=require(_0xa51b('0x5'));var rimraf=require(_0xa51b('0x6'));var config=require(_0xa51b('0x7'));var attributes=require(_0xa51b('0x8'));module['exports']=function(_0xf9d50c,_0xa47049){return _0xf9d50c['define']('FreshdeskConfiguration',attributes,{'tableName':_0xa51b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8876c17..1ebad33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4288=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','bluebird'];(function(_0x307d8d,_0x23e7a6){var _0x6b3e12=function(_0x48d02a){while(--_0x48d02a){_0x307d8d['push'](_0x307d8d['shift']());}};_0x6b3e12(++_0x23e7a6);}(_0x4288,0x12b));var _0x8428=function(_0x2f1ef8,_0x104ddb){_0x2f1ef8=_0x2f1ef8-0x0;var _0x597a82=_0x4288[_0x2f1ef8];return _0x597a82;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x8428('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8428('0x1'));var db=require(_0x8428('0x2'))['db'];var utils=require(_0x8428('0x3'));var logger=require(_0x8428('0x4'))('rpc');var config=require(_0x8428('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8428('0x6')][_0x8428('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xd7aaf8,_0x360df7,_0x2f83c2){return new BPromise(function(_0x55cce8,_0x296bf2){return client[_0x8428('0x8')](_0xd7aaf8,_0x2f83c2)[_0x8428('0x9')](function(_0x3c8b18){logger['info'](_0x8428('0xa'),_0x360df7,_0x8428('0xb'));logger[_0x8428('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x360df7,_0x8428('0xb'),JSON[_0x8428('0xd')](_0x3c8b18));if(_0x3c8b18['error']){if(_0x3c8b18[_0x8428('0xe')][_0x8428('0xf')]===0x1f4){logger[_0x8428('0xe')](_0x8428('0xa'),_0x360df7,_0x3c8b18[_0x8428('0xe')][_0x8428('0x10')]);return _0x296bf2(_0x3c8b18['error'][_0x8428('0x10')]);}logger[_0x8428('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x360df7,_0x3c8b18[_0x8428('0xe')][_0x8428('0x10')]);return _0x55cce8(_0x3c8b18[_0x8428('0xe')][_0x8428('0x10')]);}else{logger[_0x8428('0x11')](_0x8428('0xa'),_0x360df7,'request\x20sent');_0x55cce8(_0x3c8b18[_0x8428('0x12')]['message']);}})[_0x8428('0x13')](function(_0x8b05d3){logger[_0x8428('0xe')](_0x8428('0xa'),_0x360df7,_0x8b05d3);_0x296bf2(_0x8b05d3);});});}
\ No newline at end of file
+var _0x700f=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','bluebird'];(function(_0x273dc5,_0x268a81){var _0x46dae7=function(_0x263d62){while(--_0x263d62){_0x273dc5['push'](_0x273dc5['shift']());}};_0x46dae7(++_0x268a81);}(_0x700f,0x101));var _0xf700=function(_0x567403,_0x29eb04){_0x567403=_0x567403-0x0;var _0x27cef5=_0x700f[_0x567403];return _0x27cef5;};'use strict';var _=require(_0xf700('0x0'));var util=require('util');var moment=require(_0xf700('0x1'));var BPromise=require(_0xf700('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf700('0x3'));var db=require(_0xf700('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf700('0x5'))(_0xf700('0x6'));var config=require(_0xf700('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf700('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47493b,_0x44fe55,_0xf4b028){return new BPromise(function(_0x2fa64,_0x24bcbc){return client[_0xf700('0x9')](_0x47493b,_0xf4b028)[_0xf700('0xa')](function(_0x498a79){logger[_0xf700('0xb')](_0xf700('0xc'),_0x44fe55,_0xf700('0xd'));logger[_0xf700('0xe')](_0xf700('0xf'),_0x44fe55,_0xf700('0xd'),JSON[_0xf700('0x10')](_0x498a79));if(_0x498a79[_0xf700('0x11')]){if(_0x498a79[_0xf700('0x11')][_0xf700('0x12')]===0x1f4){logger[_0xf700('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x44fe55,_0x498a79[_0xf700('0x11')][_0xf700('0x13')]);return _0x24bcbc(_0x498a79[_0xf700('0x11')][_0xf700('0x13')]);}logger[_0xf700('0x11')](_0xf700('0xc'),_0x44fe55,_0x498a79['error'][_0xf700('0x13')]);return _0x2fa64(_0x498a79[_0xf700('0x11')][_0xf700('0x13')]);}else{logger[_0xf700('0xb')](_0xf700('0xc'),_0x44fe55,_0xf700('0xd'));_0x2fa64(_0x498a79['result'][_0xf700('0x13')]);}})['catch'](function(_0x3b9f58){logger[_0xf700('0x11')](_0xf700('0xc'),_0x44fe55,_0x3b9f58);_0x24bcbc(_0x3b9f58);});});}
\ No newline at end of file
index ca07ded..7be8696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e38=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','exports','multer'];(function(_0x227166,_0x168fb9){var _0x1b9fb3=function(_0xb91a4a){while(--_0xb91a4a){_0x227166['push'](_0x227166['shift']());}};_0x1b9fb3(++_0x168fb9);}(_0x6e38,0xef));var _0x86e3=function(_0x144039,_0x270430){_0x144039=_0x144039-0x0;var _0x38ab69=_0x6e38[_0x144039];return _0x38ab69;};'use strict';var multer=require(_0x86e3('0x0'));var util=require(_0x86e3('0x1'));var path=require(_0x86e3('0x2'));var timeout=require('connect-timeout');var express=require(_0x86e3('0x3'));var router=express[_0x86e3('0x4')]();var fs_extra=require(_0x86e3('0x5'));var auth=require(_0x86e3('0x6'));var interaction=require(_0x86e3('0x7'));var config=require(_0x86e3('0x8'));var controller=require(_0x86e3('0x9'));router[_0x86e3('0xa')]('/',auth[_0x86e3('0xb')](),controller[_0x86e3('0xc')]);router['get'](_0x86e3('0xd'),auth[_0x86e3('0xb')](),controller[_0x86e3('0xe')]);router[_0x86e3('0xf')]('/',auth[_0x86e3('0xb')](),controller[_0x86e3('0x10')]);router[_0x86e3('0x11')](_0x86e3('0xd'),auth[_0x86e3('0xb')](),controller['update']);router[_0x86e3('0x12')](_0x86e3('0xd'),auth[_0x86e3('0xb')](),controller['destroy']);module[_0x86e3('0x13')]=router;
\ No newline at end of file
+var _0x1aa2=['post','create','put','/:id','delete','multer','util','path','connect-timeout','Router','../../components/interaction/service','index','get','isAuthenticated','show'];(function(_0x1eb3b0,_0x84bc40){var _0xbecd61=function(_0x442e68){while(--_0x442e68){_0x1eb3b0['push'](_0x1eb3b0['shift']());}};_0xbecd61(++_0x84bc40);}(_0x1aa2,0xd7));var _0x21aa=function(_0x4b4f24,_0x5654a8){_0x4b4f24=_0x4b4f24-0x0;var _0x1c13d4=_0x1aa2[_0x4b4f24];return _0x1c13d4;};'use strict';var multer=require(_0x21aa('0x0'));var util=require(_0x21aa('0x1'));var path=require(_0x21aa('0x2'));var timeout=require(_0x21aa('0x3'));var express=require('express');var router=express[_0x21aa('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x21aa('0x5'));var config=require('../../config/environment');var controller=require('./intFreshdeskField.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x21aa('0x6')]);router[_0x21aa('0x7')]('/:id',auth[_0x21aa('0x8')](),controller[_0x21aa('0x9')]);router[_0x21aa('0xa')]('/',auth[_0x21aa('0x8')](),controller[_0x21aa('0xb')]);router[_0x21aa('0xc')](_0x21aa('0xd'),auth[_0x21aa('0x8')](),controller['update']);router[_0x21aa('0xe')](_0x21aa('0xd'),auth[_0x21aa('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8bb84bb..a402148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f35=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x35411a,_0x3b87aa){var _0x4ac652=function(_0x12d6b5){while(--_0x12d6b5){_0x35411a['push'](_0x35411a['shift']());}};_0x4ac652(++_0x3b87aa);}(_0x9f35,0xdb));var _0x59f3=function(_0x153c5e,_0x589a66){_0x153c5e=_0x153c5e-0x0;var _0x3c592f=_0x9f35[_0x153c5e];return _0x3c592f;};'use strict';var Sequelize=require(_0x59f3('0x0'));module[_0x59f3('0x1')]={'type':{'type':Sequelize[_0x59f3('0x2')](_0x59f3('0x3'),_0x59f3('0x4'),_0x59f3('0x5'),'keyValue',_0x59f3('0x6')),'defaultValue':_0x59f3('0x3')},'content':{'type':Sequelize[_0x59f3('0x7')]},'key':{'type':Sequelize[_0x59f3('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x59f3('0x3'),_0x59f3('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x59f3('0x7')]},'idField':{'type':Sequelize[_0x59f3('0x7')]},'nameField':{'type':Sequelize[_0x59f3('0x7')]},'customField':{'type':Sequelize[_0x59f3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x59f3('0x7')]}};
\ No newline at end of file
+var _0x9c24=['keyValue','picklist','STRING','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x480370,_0x101481){var _0x52025a=function(_0x3a0b33){while(--_0x3a0b33){_0x480370['push'](_0x480370['shift']());}};_0x52025a(++_0x101481);}(_0x9c24,0x1aa));var _0x49c2=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x9c24[_0x1b6186];return _0x186121;};'use strict';var Sequelize=require(_0x49c2('0x0'));module[_0x49c2('0x1')]={'type':{'type':Sequelize[_0x49c2('0x2')](_0x49c2('0x3'),_0x49c2('0x4'),_0x49c2('0x5'),_0x49c2('0x6'),_0x49c2('0x7')),'defaultValue':_0x49c2('0x3')},'content':{'type':Sequelize[_0x49c2('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x49c2('0x2')]('string','variable',_0x49c2('0x5'))},'keyContent':{'type':Sequelize[_0x49c2('0x8')]},'idField':{'type':Sequelize[_0x49c2('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x49c2('0x8')]}};
\ No newline at end of file
index 2c27233..819e909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','FreshdeskField','includeAll','include','findAll','rows','catch','show','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x260ac1,_0x4eed3b){var _0x3fcad8=function(_0x28987a){while(--_0x28987a){_0x260ac1['push'](_0x260ac1['shift']());}};_0x3fcad8(++_0x4eed3b);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x28d225,_0x43be18){_0x28d225=_0x28d225-0x0;var _0x1f79e1=_0xe5b5[_0x28d225];return _0x1f79e1;};'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(_0x5e5b('0x8'));var path=require(_0x5e5b('0x9'));var sox=require(_0x5e5b('0xa'));var csv=require(_0x5e5b('0xb'));var ejs=require(_0x5e5b('0xc'));var fs=require('fs');var fs_extra=require(_0x5e5b('0xd'));var _=require(_0x5e5b('0xe'));var squel=require(_0x5e5b('0xf'));var crypto=require(_0x5e5b('0x10'));var jsforce=require(_0x5e5b('0x11'));var deskjs=require(_0x5e5b('0x12'));var toCsv=require(_0x5e5b('0xb'));var querystring=require(_0x5e5b('0x13'));var Papa=require(_0x5e5b('0x14'));var Redis=require(_0x5e5b('0x15'));var authService=require('../../components/auth/service');var qs=require(_0x5e5b('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e5b('0x17'));var logger=require(_0x5e5b('0x18'))(_0x5e5b('0x19'));var utils=require(_0x5e5b('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x310f71,_0x18434e){_0x18434e=_0x18434e||0xcc;return function(_0x4559a0){if(_0x4559a0){return _0x310f71[_0x5e5b('0x1b')](_0x18434e);}return _0x310f71[_0x5e5b('0x1c')](_0x18434e)[_0x5e5b('0x1d')]();};}function respondWithResult(_0x2e331d,_0x49edd0){_0x49edd0=_0x49edd0||0xc8;return function(_0x2b37fa){if(_0x2b37fa){return _0x2e331d[_0x5e5b('0x1c')](_0x49edd0)['json'](_0x2b37fa);}};}function respondWithFilteredResult(_0x227417,_0x578c14){return function(_0x4e9509){if(_0x4e9509){var _0x13a1cb=typeof _0x578c14[_0x5e5b('0x1e')]===_0x5e5b('0x1f')&&typeof _0x578c14['limit']===_0x5e5b('0x1f');var _0x4d490c=_0x4e9509[_0x5e5b('0x20')];var _0x45a091=_0x13a1cb?0x0:_0x578c14['offset'];var _0xe5aa6b=_0x13a1cb?_0x4e9509[_0x5e5b('0x20')]:_0x578c14[_0x5e5b('0x1e')]+_0x578c14['limit'];var _0x2bf0b7;if(_0xe5aa6b>=_0x4d490c){_0xe5aa6b=_0x4d490c;_0x2bf0b7=0xc8;}else{_0x2bf0b7=0xce;}_0x227417[_0x5e5b('0x1c')](_0x2bf0b7);return _0x227417['set'](_0x5e5b('0x21'),_0x45a091+'-'+_0xe5aa6b+'/'+_0x4d490c)[_0x5e5b('0x22')](_0x4e9509);}return null;};}function patchUpdates(_0x3c488e){return function(_0x2d8252){try{jsonpatch[_0x5e5b('0x23')](_0x2d8252,_0x3c488e,!![]);}catch(_0x33d61b){return BPromise[_0x5e5b('0x24')](_0x33d61b);}return _0x2d8252[_0x5e5b('0x25')]();};}function saveUpdates(_0x4a78e3,_0x512e46){return function(_0x256a00){if(_0x256a00){return _0x256a00[_0x5e5b('0x26')](_0x4a78e3)[_0x5e5b('0x27')](function(_0xe1c268){return _0xe1c268;});}return null;};}function removeEntity(_0x2e38ed,_0x28cd95){return function(_0x135c6c){if(_0x135c6c){return _0x135c6c[_0x5e5b('0x28')]()[_0x5e5b('0x27')](function(){_0x2e38ed[_0x5e5b('0x1c')](0xcc)[_0x5e5b('0x1d')]();});}};}function handleEntityNotFound(_0x4da321,_0x1ebb11){return function(_0x75800d){if(!_0x75800d){_0x4da321[_0x5e5b('0x1b')](0x194);}return _0x75800d;};}function handleError(_0x5a2ba8,_0x988e5d){_0x988e5d=_0x988e5d||0x1f4;return function(_0xdb2863){logger['error'](_0xdb2863[_0x5e5b('0x29')]);if(_0xdb2863[_0x5e5b('0x2a')]){delete _0xdb2863[_0x5e5b('0x2a')];}_0x5a2ba8[_0x5e5b('0x1c')](_0x988e5d)[_0x5e5b('0x2b')](_0xdb2863);};}exports[_0x5e5b('0x2c')]=function(_0x2cb695,_0x2b4351){var _0x3f6b25={},_0x42da3b={},_0xcb272c={'count':0x0,'rows':[]};var _0x28157a=_['map'](db['FreshdeskField'][_0x5e5b('0x2d')],function(_0x289f54){return{'name':_0x289f54[_0x5e5b('0x2e')],'type':_0x289f54[_0x5e5b('0x2f')][_0x5e5b('0x30')]};});_0x42da3b['model']=_[_0x5e5b('0x31')](_0x28157a,'name');_0x42da3b[_0x5e5b('0x32')]=_[_0x5e5b('0x33')](_0x2cb695[_0x5e5b('0x32')]);_0x42da3b[_0x5e5b('0x34')]=_['intersection'](_0x42da3b[_0x5e5b('0x35')],_0x42da3b[_0x5e5b('0x32')]);_0x3f6b25['attributes']=_[_0x5e5b('0x36')](_0x42da3b[_0x5e5b('0x35')],qs[_0x5e5b('0x37')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x3f6b25[_0x5e5b('0x38')]=_0x3f6b25[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x3f6b25['attributes']:_0x42da3b[_0x5e5b('0x35')];if(!_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3a')](_0x5e5b('0x3b'))){_0x3f6b25[_0x5e5b('0x3c')]=qs[_0x5e5b('0x3c')](_0x2cb695['query']['limit']);_0x3f6b25[_0x5e5b('0x1e')]=qs[_0x5e5b('0x1e')](_0x2cb695[_0x5e5b('0x32')]['offset']);}_0x3f6b25[_0x5e5b('0x3d')]=qs[_0x5e5b('0x3e')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3e')]);_0x3f6b25['where']=qs[_0x5e5b('0x34')](_[_0x5e5b('0x3f')](_0x2cb695['query'],_0x42da3b['filters']),_0x28157a);if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]){_0x3f6b25[_0x5e5b('0x41')]=_['merge'](_0x3f6b25[_0x5e5b('0x41')],{'$or':_['map'](_0x28157a,function(_0x5cb741){if(_0x5cb741[_0x5e5b('0x2f')]!==_0x5e5b('0x42')){var _0xef0295={};_0xef0295[_0x5cb741[_0x5e5b('0x2a')]]={'$like':'%'+_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]+'%'};return _0xef0295;}})});}_0x3f6b25=_[_0x5e5b('0x43')]({},_0x3f6b25,_0x2cb695[_0x5e5b('0x44')]);var _0x1034fa={'where':_0x3f6b25['where']};return db[_0x5e5b('0x45')][_0x5e5b('0x20')](_0x1034fa)['then'](function(_0x204487){_0xcb272c['count']=_0x204487;if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x46')]){_0x3f6b25[_0x5e5b('0x47')]=[{'all':!![]}];}return db[_0x5e5b('0x45')][_0x5e5b('0x48')](_0x3f6b25);})[_0x5e5b('0x27')](function(_0x371550){_0xcb272c[_0x5e5b('0x49')]=_0x371550;return _0xcb272c;})[_0x5e5b('0x27')](respondWithFilteredResult(_0x2b4351,_0x3f6b25))[_0x5e5b('0x4a')](handleError(_0x2b4351,null));};exports[_0x5e5b('0x4b')]=function(_0x4e6fe2,_0x2b81dd){var _0x40e8ce={'raw':!![],'where':{'id':_0x4e6fe2['params']['id']}},_0x46fec9={};_0x46fec9[_0x5e5b('0x35')]=_[_0x5e5b('0x33')](db['FreshdeskField'][_0x5e5b('0x2d')]);_0x46fec9[_0x5e5b('0x32')]=_['keys'](_0x4e6fe2[_0x5e5b('0x32')]);_0x46fec9['filters']=_['intersection'](_0x46fec9['model'],_0x46fec9[_0x5e5b('0x32')]);_0x40e8ce['attributes']=_[_0x5e5b('0x36')](_0x46fec9['model'],qs[_0x5e5b('0x37')](_0x4e6fe2[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x40e8ce[_0x5e5b('0x38')]=_0x40e8ce[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x40e8ce[_0x5e5b('0x38')]:_0x46fec9['model'];if(_0x4e6fe2['query'][_0x5e5b('0x46')]){_0x40e8ce['include']=[{'all':!![]}];}_0x40e8ce=_['merge']({},_0x40e8ce,_0x4e6fe2['options']);return db[_0x5e5b('0x45')]['find'](_0x40e8ce)[_0x5e5b('0x27')](handleEntityNotFound(_0x2b81dd,null))[_0x5e5b('0x27')](respondWithResult(_0x2b81dd,null))[_0x5e5b('0x4a')](handleError(_0x2b81dd,null));};exports[_0x5e5b('0x4c')]=function(_0x2982e7,_0x192445){return db['FreshdeskField'][_0x5e5b('0x4c')](_0x2982e7[_0x5e5b('0x4d')],{})['then'](respondWithResult(_0x192445,0xc9))[_0x5e5b('0x4a')](handleError(_0x192445,null));};exports['update']=function(_0x41e4b3,_0x36d8fa){if(_0x41e4b3[_0x5e5b('0x4d')]['id']){delete _0x41e4b3[_0x5e5b('0x4d')]['id'];}return db['FreshdeskField'][_0x5e5b('0x4e')]({'where':{'id':_0x41e4b3[_0x5e5b('0x4f')]['id']}})['then'](handleEntityNotFound(_0x36d8fa,null))[_0x5e5b('0x27')](saveUpdates(_0x41e4b3[_0x5e5b('0x4d')],null))[_0x5e5b('0x27')](respondWithResult(_0x36d8fa,null))[_0x5e5b('0x4a')](handleError(_0x36d8fa,null));};exports[_0x5e5b('0x28')]=function(_0x5ae8d0,_0x50fc9c){return db[_0x5e5b('0x45')][_0x5e5b('0x4e')]({'where':{'id':_0x5ae8d0['params']['id']}})[_0x5e5b('0x27')](handleEntityNotFound(_0x50fc9c,null))[_0x5e5b('0x27')](removeEntity(_0x50fc9c,null))[_0x5e5b('0x4a')](handleError(_0x50fc9c,null));};
\ No newline at end of file
+var _0x6e6c=['set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','FreshdeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count'];(function(_0x4ce1b9,_0x397a4b){var _0x2bb15d=function(_0x3790ad){while(--_0x3790ad){_0x4ce1b9['push'](_0x4ce1b9['shift']());}};_0x2bb15d(++_0x397a4b);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6e6c[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xc6e6('0x0'));var rimraf=require(_0xc6e6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc6e6('0x2'));var rp=require(_0xc6e6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc6e6('0x4'));var util=require('util');var path=require(_0xc6e6('0x5'));var sox=require('sox');var csv=require(_0xc6e6('0x6'));var ejs=require(_0xc6e6('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc6e6('0x8'));var squel=require(_0xc6e6('0x9'));var crypto=require('crypto');var jsforce=require(_0xc6e6('0xa'));var deskjs=require(_0xc6e6('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc6e6('0xc'));var Papa=require('papaparse');var Redis=require(_0xc6e6('0xd'));var authService=require(_0xc6e6('0xe'));var qs=require(_0xc6e6('0xf'));var as=require(_0xc6e6('0x10'));var hardwareService=require(_0xc6e6('0x11'));var logger=require(_0xc6e6('0x12'))(_0xc6e6('0x13'));var utils=require(_0xc6e6('0x14'));var config=require(_0xc6e6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc6e6('0x16'))['db'];function respondWithStatusCode(_0x525d60,_0x3a30ce){_0x3a30ce=_0x3a30ce||0xcc;return function(_0x314d0f){if(_0x314d0f){return _0x525d60[_0xc6e6('0x17')](_0x3a30ce);}return _0x525d60[_0xc6e6('0x18')](_0x3a30ce)['end']();};}function respondWithResult(_0x149ac6,_0x2bfe7d){_0x2bfe7d=_0x2bfe7d||0xc8;return function(_0x13be73){if(_0x13be73){return _0x149ac6[_0xc6e6('0x18')](_0x2bfe7d)[_0xc6e6('0x19')](_0x13be73);}};}function respondWithFilteredResult(_0x4cdf15,_0x413cf8){return function(_0x178b34){if(_0x178b34){var _0x569474=typeof _0x413cf8[_0xc6e6('0x1a')]===_0xc6e6('0x1b')&&typeof _0x413cf8[_0xc6e6('0x1c')]==='undefined';var _0x51fd7c=_0x178b34['count'];var _0x3a1ccc=_0x569474?0x0:_0x413cf8['offset'];var _0x46e58f=_0x569474?_0x178b34[_0xc6e6('0x1d')]:_0x413cf8[_0xc6e6('0x1a')]+_0x413cf8[_0xc6e6('0x1c')];var _0x19e1e4;if(_0x46e58f>=_0x51fd7c){_0x46e58f=_0x51fd7c;_0x19e1e4=0xc8;}else{_0x19e1e4=0xce;}_0x4cdf15[_0xc6e6('0x18')](_0x19e1e4);return _0x4cdf15[_0xc6e6('0x1e')](_0xc6e6('0x1f'),_0x3a1ccc+'-'+_0x46e58f+'/'+_0x51fd7c)[_0xc6e6('0x19')](_0x178b34);}return null;};}function patchUpdates(_0x3d734d){return function(_0x4a36b6){try{jsonpatch[_0xc6e6('0x20')](_0x4a36b6,_0x3d734d,!![]);}catch(_0x4ad70e){return BPromise[_0xc6e6('0x21')](_0x4ad70e);}return _0x4a36b6[_0xc6e6('0x22')]();};}function saveUpdates(_0x2be6fc,_0x2f69f1){return function(_0x4f1d68){if(_0x4f1d68){return _0x4f1d68[_0xc6e6('0x23')](_0x2be6fc)[_0xc6e6('0x24')](function(_0x3a96df){return _0x3a96df;});}return null;};}function removeEntity(_0x36ebfa,_0x107561){return function(_0x4c35ae){if(_0x4c35ae){return _0x4c35ae[_0xc6e6('0x25')]()['then'](function(){_0x36ebfa[_0xc6e6('0x18')](0xcc)[_0xc6e6('0x26')]();});}};}function handleEntityNotFound(_0x2e5e0e,_0x64e1dc){return function(_0x53a1bf){if(!_0x53a1bf){_0x2e5e0e[_0xc6e6('0x17')](0x194);}return _0x53a1bf;};}function handleError(_0x5a5e47,_0x28577b){_0x28577b=_0x28577b||0x1f4;return function(_0x534745){logger[_0xc6e6('0x27')](_0x534745[_0xc6e6('0x28')]);if(_0x534745[_0xc6e6('0x29')]){delete _0x534745[_0xc6e6('0x29')];}_0x5a5e47[_0xc6e6('0x18')](_0x28577b)['send'](_0x534745);};}exports[_0xc6e6('0x2a')]=function(_0x1501bd,_0x166313){var _0x1af05c={},_0x4d1284={},_0x34ae96={'count':0x0,'rows':[]};var _0x50b735=_[_0xc6e6('0x2b')](db[_0xc6e6('0x2c')][_0xc6e6('0x2d')],function(_0xc578b3){return{'name':_0xc578b3[_0xc6e6('0x2e')],'type':_0xc578b3[_0xc6e6('0x2f')][_0xc6e6('0x30')]};});_0x4d1284[_0xc6e6('0x31')]=_[_0xc6e6('0x2b')](_0x50b735,_0xc6e6('0x29'));_0x4d1284[_0xc6e6('0x32')]=_[_0xc6e6('0x33')](_0x1501bd[_0xc6e6('0x32')]);_0x4d1284[_0xc6e6('0x34')]=_[_0xc6e6('0x35')](_0x4d1284[_0xc6e6('0x31')],_0x4d1284[_0xc6e6('0x32')]);_0x1af05c['attributes']=_[_0xc6e6('0x35')](_0x4d1284[_0xc6e6('0x31')],qs['fields'](_0x1501bd['query'][_0xc6e6('0x36')]));_0x1af05c[_0xc6e6('0x37')]=_0x1af05c[_0xc6e6('0x37')][_0xc6e6('0x38')]?_0x1af05c[_0xc6e6('0x37')]:_0x4d1284[_0xc6e6('0x31')];if(!_0x1501bd['query'][_0xc6e6('0x39')](_0xc6e6('0x3a'))){_0x1af05c[_0xc6e6('0x1c')]=qs['limit'](_0x1501bd['query'][_0xc6e6('0x1c')]);_0x1af05c[_0xc6e6('0x1a')]=qs[_0xc6e6('0x1a')](_0x1501bd[_0xc6e6('0x32')]['offset']);}_0x1af05c['order']=qs[_0xc6e6('0x3b')](_0x1501bd['query'][_0xc6e6('0x3b')]);_0x1af05c['where']=qs[_0xc6e6('0x34')](_[_0xc6e6('0x3c')](_0x1501bd[_0xc6e6('0x32')],_0x4d1284[_0xc6e6('0x34')]),_0x50b735);if(_0x1501bd['query']['filter']){_0x1af05c[_0xc6e6('0x3d')]=_[_0xc6e6('0x3e')](_0x1af05c[_0xc6e6('0x3d')],{'$or':_[_0xc6e6('0x2b')](_0x50b735,function(_0x4bb732){if(_0x4bb732['type']!==_0xc6e6('0x3f')){var _0x1326c7={};_0x1326c7[_0x4bb732[_0xc6e6('0x29')]]={'$like':'%'+_0x1501bd[_0xc6e6('0x32')]['filter']+'%'};return _0x1326c7;}})});}_0x1af05c=_[_0xc6e6('0x3e')]({},_0x1af05c,_0x1501bd[_0xc6e6('0x40')]);var _0x5ddab4={'where':_0x1af05c['where']};return db[_0xc6e6('0x2c')]['count'](_0x5ddab4)[_0xc6e6('0x24')](function(_0x3817fc){_0x34ae96['count']=_0x3817fc;if(_0x1501bd[_0xc6e6('0x32')]['includeAll']){_0x1af05c[_0xc6e6('0x41')]=[{'all':!![]}];}return db['FreshdeskField'][_0xc6e6('0x42')](_0x1af05c);})[_0xc6e6('0x24')](function(_0x247076){_0x34ae96[_0xc6e6('0x43')]=_0x247076;return _0x34ae96;})[_0xc6e6('0x24')](respondWithFilteredResult(_0x166313,_0x1af05c))[_0xc6e6('0x44')](handleError(_0x166313,null));};exports[_0xc6e6('0x45')]=function(_0x69766,_0x5ecf6c){var _0x5722db={'raw':!![],'where':{'id':_0x69766[_0xc6e6('0x46')]['id']}},_0x3e3da6={};_0x3e3da6[_0xc6e6('0x31')]=_[_0xc6e6('0x33')](db['FreshdeskField'][_0xc6e6('0x2d')]);_0x3e3da6[_0xc6e6('0x32')]=_[_0xc6e6('0x33')](_0x69766[_0xc6e6('0x32')]);_0x3e3da6['filters']=_[_0xc6e6('0x35')](_0x3e3da6[_0xc6e6('0x31')],_0x3e3da6[_0xc6e6('0x32')]);_0x5722db[_0xc6e6('0x37')]=_[_0xc6e6('0x35')](_0x3e3da6['model'],qs[_0xc6e6('0x36')](_0x69766['query'][_0xc6e6('0x36')]));_0x5722db['attributes']=_0x5722db[_0xc6e6('0x37')][_0xc6e6('0x38')]?_0x5722db[_0xc6e6('0x37')]:_0x3e3da6[_0xc6e6('0x31')];if(_0x69766[_0xc6e6('0x32')][_0xc6e6('0x47')]){_0x5722db[_0xc6e6('0x41')]=[{'all':!![]}];}_0x5722db=_[_0xc6e6('0x3e')]({},_0x5722db,_0x69766['options']);return db[_0xc6e6('0x2c')][_0xc6e6('0x48')](_0x5722db)[_0xc6e6('0x24')](handleEntityNotFound(_0x5ecf6c,null))['then'](respondWithResult(_0x5ecf6c,null))[_0xc6e6('0x44')](handleError(_0x5ecf6c,null));};exports[_0xc6e6('0x49')]=function(_0x38ecc3,_0x42ed90){return db[_0xc6e6('0x2c')][_0xc6e6('0x49')](_0x38ecc3[_0xc6e6('0x4a')],{})[_0xc6e6('0x24')](respondWithResult(_0x42ed90,0xc9))[_0xc6e6('0x44')](handleError(_0x42ed90,null));};exports[_0xc6e6('0x23')]=function(_0x3bfe85,_0x470167){if(_0x3bfe85[_0xc6e6('0x4a')]['id']){delete _0x3bfe85[_0xc6e6('0x4a')]['id'];}return db['FreshdeskField'][_0xc6e6('0x48')]({'where':{'id':_0x3bfe85['params']['id']}})[_0xc6e6('0x24')](handleEntityNotFound(_0x470167,null))[_0xc6e6('0x24')](saveUpdates(_0x3bfe85['body'],null))['then'](respondWithResult(_0x470167,null))['catch'](handleError(_0x470167,null));};exports['destroy']=function(_0x531dca,_0x3edc16){return db[_0xc6e6('0x2c')][_0xc6e6('0x48')]({'where':{'id':_0x531dca[_0xc6e6('0x46')]['id']}})[_0xc6e6('0x24')](handleEntityNotFound(_0x3edc16,null))['then'](removeEntity(_0x3edc16,null))['catch'](handleError(_0x3edc16,null));};
\ No newline at end of file
index 574fb25..f3f56a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0694=['./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','lodash','util','../../config/logger','api','path','../../config/environment'];(function(_0x234ae1,_0x42bdd6){var _0x227ba0=function(_0x1f6531){while(--_0x1f6531){_0x234ae1['push'](_0x234ae1['shift']());}};_0x227ba0(++_0x42bdd6);}(_0x0694,0x180));var _0x4069=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x0694[_0x45e98e];return _0x374dba;};'use strict';var _=require(_0x4069('0x0'));var util=require(_0x4069('0x1'));var logger=require(_0x4069('0x2'))(_0x4069('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4069('0x4'));var rimraf=require('rimraf');var config=require(_0x4069('0x5'));var attributes=require(_0x4069('0x6'));module[_0x4069('0x7')]=function(_0x485cd5,_0x44458d){return _0x485cd5[_0x4069('0x8')](_0x4069('0x9'),attributes,{'tableName':_0x4069('0xa'),'paranoid':![],'indexes':[{'name':_0x4069('0xb'),'fields':[_0x4069('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xefbb=['rimraf','idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x16065b,_0x5e000b){var _0x484f0e=function(_0x1a681a){while(--_0x1a681a){_0x16065b['push'](_0x16065b['shift']());}};_0x484f0e(++_0x5e000b);}(_0xefbb,0x11b));var _0xbefb=function(_0x538a2c,_0x142df){_0x538a2c=_0x538a2c-0x0;var _0x4d3269=_0xefbb[_0x538a2c];return _0x4d3269;};'use strict';var _=require(_0xbefb('0x0'));var util=require(_0xbefb('0x1'));var logger=require(_0xbefb('0x2'))(_0xbefb('0x3'));var moment=require(_0xbefb('0x4'));var BPromise=require('bluebird');var rp=require(_0xbefb('0x5'));var fs=require('fs');var path=require(_0xbefb('0x6'));var rimraf=require(_0xbefb('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshdeskField.attributes');module['exports']=function(_0x48e358,_0x292420){return _0x48e358['define']('FreshdeskField',attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0xbefb('0x8'),_0xbefb('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e58a30e..2a43fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef6=['request\x20sent','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0xdef6,0x11b));var _0x6def=function(_0x678ed,_0x339833){_0x678ed=_0x678ed-0x0;var _0x2c709c=_0xdef6[_0x678ed];return _0x2c709c;};'use strict';var _=require(_0x6def('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6def('0x1'));var rs=require(_0x6def('0x2'));var fs=require('fs');var Redis=require(_0x6def('0x3'));var db=require(_0x6def('0x4'))['db'];var utils=require(_0x6def('0x5'));var logger=require(_0x6def('0x6'))(_0x6def('0x7'));var config=require('../../config/environment');var jayson=require(_0x6def('0x8'));var client=jayson[_0x6def('0x9')][_0x6def('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47e764,_0x49d238,_0x50a9a5){return new BPromise(function(_0x38f505,_0x28cdf0){return client[_0x6def('0xb')](_0x47e764,_0x50a9a5)[_0x6def('0xc')](function(_0x297cc0){logger['info'](_0x6def('0xd'),_0x49d238,'request\x20sent');logger[_0x6def('0xe')](_0x6def('0xf'),_0x49d238,_0x6def('0x10'),JSON[_0x6def('0x11')](_0x297cc0));if(_0x297cc0['error']){if(_0x297cc0[_0x6def('0x12')][_0x6def('0x13')]===0x1f4){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x49d238,_0x297cc0[_0x6def('0x12')]['message']);return _0x28cdf0(_0x297cc0['error'][_0x6def('0x14')]);}logger[_0x6def('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x49d238,_0x297cc0['error'][_0x6def('0x14')]);return _0x38f505(_0x297cc0[_0x6def('0x12')][_0x6def('0x14')]);}else{logger['info'](_0x6def('0xd'),_0x49d238,'request\x20sent');_0x38f505(_0x297cc0[_0x6def('0x15')]['message']);}})[_0x6def('0x16')](function(_0x4be12c){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x49d238,_0x4be12c);_0x28cdf0(_0x4be12c);});});}
\ No newline at end of file
+var _0x912f=['request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','then','info','FreshdeskField,\x20%s,\x20%s'];(function(_0x4c233e,_0xb01a03){var _0x1dcd1e=function(_0x3d522f){while(--_0x3d522f){_0x4c233e['push'](_0x4c233e['shift']());}};_0x1dcd1e(++_0xb01a03);}(_0x912f,0x126));var _0xf912=function(_0x4d3f44,_0x3dad12){_0x4d3f44=_0x4d3f44-0x0;var _0x199f6f=_0x912f[_0x4d3f44];return _0x199f6f;};'use strict';var _=require('lodash');var util=require(_0xf912('0x0'));var moment=require('moment');var BPromise=require(_0xf912('0x1'));var rs=require(_0xf912('0x2'));var fs=require('fs');var Redis=require(_0xf912('0x3'));var db=require(_0xf912('0x4'))['db'];var utils=require(_0xf912('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xf912('0x6'));var jayson=require(_0xf912('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x506dad,_0x28345c,_0x131a43){return new BPromise(function(_0x23582c,_0x43a0aa){return client[_0xf912('0x8')](_0x506dad,_0x131a43)[_0xf912('0x9')](function(_0x2bf0c8){logger[_0xf912('0xa')](_0xf912('0xb'),_0x28345c,_0xf912('0xc'));logger['debug'](_0xf912('0xd'),_0x28345c,_0xf912('0xc'),JSON[_0xf912('0xe')](_0x2bf0c8));if(_0x2bf0c8[_0xf912('0xf')]){if(_0x2bf0c8[_0xf912('0xf')]['code']===0x1f4){logger[_0xf912('0xf')](_0xf912('0xb'),_0x28345c,_0x2bf0c8['error'][_0xf912('0x10')]);return _0x43a0aa(_0x2bf0c8['error'][_0xf912('0x10')]);}logger[_0xf912('0xf')](_0xf912('0xb'),_0x28345c,_0x2bf0c8[_0xf912('0xf')][_0xf912('0x10')]);return _0x23582c(_0x2bf0c8[_0xf912('0xf')][_0xf912('0x10')]);}else{logger[_0xf912('0xa')](_0xf912('0xb'),_0x28345c,'request\x20sent');_0x23582c(_0x2bf0c8[_0xf912('0x11')][_0xf912('0x10')]);}})['catch'](function(_0x393be2){logger[_0xf912('0xf')](_0xf912('0xb'),_0x28345c,_0x393be2);_0x43a0aa(_0x393be2);});});}
\ No newline at end of file
index 7b2a27d..b1cac11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['../../components/interaction/service','get','isAuthenticated','index','show','getConfigurations','post','create','/:id/configurations','addConfiguration','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x4ab301,_0x3d5bee){var _0x42da46=function(_0x440204){while(--_0x440204){_0x4ab301['push'](_0x4ab301['shift']());}};_0x42da46(++_0x3d5bee);}(_0x76dc,0x1f2));var _0xc76d=function(_0xac85f9,_0x4a82bc){_0xac85f9=_0xac85f9-0x0;var _0x41f516=_0x76dc[_0xac85f9];return _0x41f516;};'use strict';var multer=require(_0xc76d('0x0'));var util=require(_0xc76d('0x1'));var path=require(_0xc76d('0x2'));var timeout=require(_0xc76d('0x3'));var express=require('express');var router=express[_0xc76d('0x4')]();var fs_extra=require(_0xc76d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc76d('0x6'));var config=require('../../config/environment');var controller=require('./intFreshsalesAccount.controller');router[_0xc76d('0x7')]('/',auth[_0xc76d('0x8')](),controller[_0xc76d('0x9')]);router['get']('/:id',auth[_0xc76d('0x8')](),controller[_0xc76d('0xa')]);router[_0xc76d('0x7')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xc76d('0xb')]);router[_0xc76d('0x7')]('/:id/fields',auth[_0xc76d('0x8')](),controller['getFields']);router[_0xc76d('0xc')]('/',auth[_0xc76d('0x8')](),controller[_0xc76d('0xd')]);router[_0xc76d('0xc')](_0xc76d('0xe'),auth[_0xc76d('0x8')](),controller[_0xc76d('0xf')]);router[_0xc76d('0x10')](_0xc76d('0x11'),auth[_0xc76d('0x8')](),controller[_0xc76d('0x12')]);router[_0xc76d('0x13')](_0xc76d('0x11'),auth[_0xc76d('0x8')](),controller['destroy']);module[_0xc76d('0x14')]=router;
\ No newline at end of file
+var _0xa5fa=['connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','create','addConfiguration','put','update','destroy','exports','util','path'];(function(_0xfd9618,_0x4ab482){var _0x55142b=function(_0x4c7711){while(--_0x4c7711){_0xfd9618['push'](_0xfd9618['shift']());}};_0x55142b(++_0x4ab482);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x526c62,_0x1848af){_0x526c62=_0x526c62-0x0;var _0x23e196=_0xa5fa[_0x526c62];return _0x23e196;};'use strict';var multer=require('multer');var util=require(_0xaa5f('0x0'));var path=require(_0xaa5f('0x1'));var timeout=require(_0xaa5f('0x2'));var express=require(_0xaa5f('0x3'));var router=express['Router']();var fs_extra=require(_0xaa5f('0x4'));var auth=require(_0xaa5f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xaa5f('0x6'));var controller=require(_0xaa5f('0x7'));router[_0xaa5f('0x8')]('/',auth[_0xaa5f('0x9')](),controller[_0xaa5f('0xa')]);router[_0xaa5f('0x8')](_0xaa5f('0xb'),auth[_0xaa5f('0x9')](),controller[_0xaa5f('0xc')]);router[_0xaa5f('0x8')](_0xaa5f('0xd'),auth['isAuthenticated'](),controller[_0xaa5f('0xe')]);router[_0xaa5f('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0xaa5f('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xaa5f('0x10')]);router['post'](_0xaa5f('0xd'),auth[_0xaa5f('0x9')](),controller[_0xaa5f('0x11')]);router[_0xaa5f('0x12')](_0xaa5f('0xb'),auth['isAuthenticated'](),controller[_0xaa5f('0x13')]);router['delete'](_0xaa5f('0xb'),auth[_0xaa5f('0x9')](),controller[_0xaa5f('0x14')]);module[_0xaa5f('0x15')]=router;
\ No newline at end of file
index 7b8d673..df89658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['STRING','username','remoteUri','exports'];(function(_0x5e499c,_0x33cd82){var _0x116cd1=function(_0x253209){while(--_0x253209){_0x5e499c['push'](_0x5e499c['shift']());}};_0x116cd1(++_0x33cd82);}(_0x1775,0x1db));var _0x5177=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1775[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');module[_0x5177('0x0')]={'name':{'type':Sequelize[_0x5177('0x1')]},'description':{'type':Sequelize[_0x5177('0x1')]},'username':{'type':Sequelize[_0x5177('0x1')],'unique':_0x5177('0x2')},'apiKey':{'type':Sequelize[_0x5177('0x1')]},'remoteUri':{'type':Sequelize[_0x5177('0x1')],'unique':_0x5177('0x3')},'serverUrl':{'type':Sequelize[_0x5177('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x0b0e=['STRING','username','remoteUri','sequelize'];(function(_0x195a26,_0x5a830a){var _0x2e4d4d=function(_0x4dd229){while(--_0x4dd229){_0x195a26['push'](_0x195a26['shift']());}};_0x2e4d4d(++_0x5a830a);}(_0x0b0e,0x187));var _0xe0b0=function(_0x25ccbe,_0xc935c0){_0x25ccbe=_0x25ccbe-0x0;var _0x289529=_0x0b0e[_0x25ccbe];return _0x289529;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'name':{'type':Sequelize[_0xe0b0('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe0b0('0x1')],'unique':_0xe0b0('0x2')},'apiKey':{'type':Sequelize[_0xe0b0('0x1')]},'remoteUri':{'type':Sequelize[_0xe0b0('0x1')],'unique':_0xe0b0('0x3')},'serverUrl':{'type':Sequelize[_0xe0b0('0x1')],'allowNull':![]}};
\ No newline at end of file
index 6a44c3d..5bf7b91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f6b=['query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','includeAll','include','FreshsalesAccount','findAll','rows','show','keys','options','find','create','body','catch','params','destroy','getConfigurations','findOne','FreshsalesConfiguration','merge','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshsalesField','Descriptions','getFields','username','remoteUri','slice','substring','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','apiKey','users','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','count','set','apply','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x4f6b,0x9b));var _0xb4f6=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4f6b[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0xb4f6('0x0'));var rimraf=require(_0xb4f6('0x1'));var zipdir=require(_0xb4f6('0x2'));var jsonpatch=require(_0xb4f6('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb4f6('0x4'));var Mustache=require(_0xb4f6('0x5'));var util=require('util');var path=require(_0xb4f6('0x6'));var sox=require(_0xb4f6('0x7'));var csv=require(_0xb4f6('0x8'));var ejs=require(_0xb4f6('0x9'));var fs=require('fs');var fs_extra=require(_0xb4f6('0xa'));var _=require(_0xb4f6('0xb'));var squel=require(_0xb4f6('0xc'));var crypto=require(_0xb4f6('0xd'));var jsforce=require(_0xb4f6('0xe'));var deskjs=require(_0xb4f6('0xf'));var toCsv=require(_0xb4f6('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb4f6('0x10'));var authService=require(_0xb4f6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb4f6('0x12'));var hardwareService=require(_0xb4f6('0x13'));var logger=require(_0xb4f6('0x14'))('api');var utils=require(_0xb4f6('0x15'));var config=require(_0xb4f6('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xadf8af,_0x530547){_0x530547=_0x530547||0xcc;return function(_0x51ef3b){if(_0x51ef3b){return _0xadf8af[_0xb4f6('0x17')](_0x530547);}return _0xadf8af[_0xb4f6('0x18')](_0x530547)[_0xb4f6('0x19')]();};}function respondWithResult(_0x38e051,_0x388d86){_0x388d86=_0x388d86||0xc8;return function(_0x44cd01){if(_0x44cd01){return _0x38e051[_0xb4f6('0x18')](_0x388d86)[_0xb4f6('0x1a')](_0x44cd01);}};}function respondWithFilteredResult(_0x2b9d55,_0x1f27ef){return function(_0x2cecd8){if(_0x2cecd8){var _0x1e33d9=typeof _0x1f27ef[_0xb4f6('0x1b')]==='undefined'&&typeof _0x1f27ef[_0xb4f6('0x1c')]==='undefined';var _0x5c3e6b=_0x2cecd8[_0xb4f6('0x1d')];var _0x4ae3f8=_0x1e33d9?0x0:_0x1f27ef[_0xb4f6('0x1b')];var _0x25d0f6=_0x1e33d9?_0x2cecd8['count']:_0x1f27ef['offset']+_0x1f27ef[_0xb4f6('0x1c')];var _0x39b1ac;if(_0x25d0f6>=_0x5c3e6b){_0x25d0f6=_0x5c3e6b;_0x39b1ac=0xc8;}else{_0x39b1ac=0xce;}_0x2b9d55[_0xb4f6('0x18')](_0x39b1ac);return _0x2b9d55[_0xb4f6('0x1e')]('Content-Range',_0x4ae3f8+'-'+_0x25d0f6+'/'+_0x5c3e6b)[_0xb4f6('0x1a')](_0x2cecd8);}return null;};}function patchUpdates(_0x5d0e59){return function(_0x85150f){try{jsonpatch[_0xb4f6('0x1f')](_0x85150f,_0x5d0e59,!![]);}catch(_0x28ec82){return BPromise['reject'](_0x28ec82);}return _0x85150f[_0xb4f6('0x20')]();};}function saveUpdates(_0x1f1bf2,_0x4f5dbb){return function(_0x100e98){if(_0x100e98){return _0x100e98[_0xb4f6('0x21')](_0x1f1bf2)[_0xb4f6('0x22')](function(_0xb91a02){return _0xb91a02;});}return null;};}function removeEntity(_0x19fbba,_0x356936){return function(_0x404b06){if(_0x404b06){return _0x404b06['destroy']()[_0xb4f6('0x22')](function(){_0x19fbba['status'](0xcc)[_0xb4f6('0x19')]();});}};}function handleEntityNotFound(_0x13ff1c,_0x184865){return function(_0x3347e6){if(!_0x3347e6){_0x13ff1c[_0xb4f6('0x17')](0x194);}return _0x3347e6;};}function handleError(_0x1190c9,_0x266236){_0x266236=_0x266236||0x1f4;return function(_0x1ac888){logger[_0xb4f6('0x23')](_0x1ac888[_0xb4f6('0x24')]);if(_0x1ac888[_0xb4f6('0x25')]){delete _0x1ac888[_0xb4f6('0x25')];}_0x1190c9[_0xb4f6('0x18')](_0x266236)[_0xb4f6('0x26')](_0x1ac888);};}exports[_0xb4f6('0x27')]=function(_0x55f061,_0x55590a){var _0x210290={},_0x159807={},_0x2972a6={'count':0x0,'rows':[]};var _0x3cc362=_[_0xb4f6('0x28')](db['FreshsalesAccount'][_0xb4f6('0x29')],function(_0x9f31ff){return{'name':_0x9f31ff[_0xb4f6('0x2a')],'type':_0x9f31ff['type'][_0xb4f6('0x2b')]};});_0x159807[_0xb4f6('0x2c')]=_[_0xb4f6('0x28')](_0x3cc362,_0xb4f6('0x25'));_0x159807['query']=_['keys'](_0x55f061[_0xb4f6('0x2d')]);_0x159807[_0xb4f6('0x2e')]=_[_0xb4f6('0x2f')](_0x159807[_0xb4f6('0x2c')],_0x159807['query']);_0x210290['attributes']=_['intersection'](_0x159807[_0xb4f6('0x2c')],qs[_0xb4f6('0x30')](_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x30')]));_0x210290[_0xb4f6('0x31')]=_0x210290[_0xb4f6('0x31')][_0xb4f6('0x32')]?_0x210290['attributes']:_0x159807['model'];if(!_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x33')](_0xb4f6('0x34'))){_0x210290[_0xb4f6('0x1c')]=qs[_0xb4f6('0x1c')](_0x55f061[_0xb4f6('0x2d')]['limit']);_0x210290[_0xb4f6('0x1b')]=qs[_0xb4f6('0x1b')](_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x1b')]);}_0x210290[_0xb4f6('0x35')]=qs[_0xb4f6('0x36')](_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x36')]);_0x210290[_0xb4f6('0x37')]=qs['filters'](_[_0xb4f6('0x38')](_0x55f061['query'],_0x159807[_0xb4f6('0x2e')]),_0x3cc362);if(_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x39')]){_0x210290['where']=_['merge'](_0x210290[_0xb4f6('0x37')],{'$or':_[_0xb4f6('0x28')](_0x3cc362,function(_0x15603d){if(_0x15603d[_0xb4f6('0x3a')]!==_0xb4f6('0x3b')){var _0x3be583={};_0x3be583[_0x15603d[_0xb4f6('0x25')]]={'$like':'%'+_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x39')]+'%'};return _0x3be583;}})});}_0x210290=_['merge']({},_0x210290,_0x55f061['options']);var _0x38ad35={'where':_0x210290['where']};return db['FreshsalesAccount'][_0xb4f6('0x1d')](_0x38ad35)[_0xb4f6('0x22')](function(_0x41e46a){_0x2972a6[_0xb4f6('0x1d')]=_0x41e46a;if(_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x3c')]){_0x210290[_0xb4f6('0x3d')]=[{'all':!![]}];}return db[_0xb4f6('0x3e')][_0xb4f6('0x3f')](_0x210290);})[_0xb4f6('0x22')](function(_0x1c5a96){_0x2972a6[_0xb4f6('0x40')]=_0x1c5a96;return _0x2972a6;})['then'](respondWithFilteredResult(_0x55590a,_0x210290))['catch'](handleError(_0x55590a,null));};exports[_0xb4f6('0x41')]=function(_0x43700d,_0x1b2b8d){var _0x515a5e={'raw':![],'where':{'id':_0x43700d['params']['id']}},_0x47b8c3={};_0x47b8c3[_0xb4f6('0x2c')]=_[_0xb4f6('0x42')](db['FreshsalesAccount'][_0xb4f6('0x29')]);_0x47b8c3['query']=_[_0xb4f6('0x42')](_0x43700d['query']);_0x47b8c3[_0xb4f6('0x2e')]=_[_0xb4f6('0x2f')](_0x47b8c3[_0xb4f6('0x2c')],_0x47b8c3[_0xb4f6('0x2d')]);_0x515a5e[_0xb4f6('0x31')]=_[_0xb4f6('0x2f')](_0x47b8c3[_0xb4f6('0x2c')],qs['fields'](_0x43700d[_0xb4f6('0x2d')][_0xb4f6('0x30')]));_0x515a5e[_0xb4f6('0x31')]=_0x515a5e[_0xb4f6('0x31')]['length']?_0x515a5e[_0xb4f6('0x31')]:_0x47b8c3['model'];if(_0x43700d['query'][_0xb4f6('0x3c')]){_0x515a5e['include']=[{'all':!![]}];}_0x515a5e=_['merge']({},_0x515a5e,_0x43700d[_0xb4f6('0x43')]);return db[_0xb4f6('0x3e')][_0xb4f6('0x44')](_0x515a5e)[_0xb4f6('0x22')](handleEntityNotFound(_0x1b2b8d,null))['then'](respondWithResult(_0x1b2b8d,null))['catch'](handleError(_0x1b2b8d,null));};exports[_0xb4f6('0x45')]=function(_0x1218f2,_0x3a3be5){return db['FreshsalesAccount'][_0xb4f6('0x45')](_0x1218f2[_0xb4f6('0x46')],{})[_0xb4f6('0x22')](respondWithResult(_0x3a3be5,0xc9))[_0xb4f6('0x47')](handleError(_0x3a3be5,null));};exports['update']=function(_0x45207d,_0x570722){if(_0x45207d[_0xb4f6('0x46')]['id']){delete _0x45207d['body']['id'];}return db['FreshsalesAccount'][_0xb4f6('0x44')]({'where':{'id':_0x45207d[_0xb4f6('0x48')]['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x570722,null))[_0xb4f6('0x22')](saveUpdates(_0x45207d[_0xb4f6('0x46')],null))['then'](respondWithResult(_0x570722,null))['catch'](handleError(_0x570722,null));};exports[_0xb4f6('0x49')]=function(_0x1a244a,_0x4c6f1a){return db[_0xb4f6('0x3e')][_0xb4f6('0x44')]({'where':{'id':_0x1a244a[_0xb4f6('0x48')]['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x4c6f1a,null))['then'](removeEntity(_0x4c6f1a,null))['catch'](handleError(_0x4c6f1a,null));};exports[_0xb4f6('0x4a')]=function(_0x206c7c,_0x200405,_0x1518e8){var _0x57d312={};var _0x38b0eb={};var _0x551861;var _0x51bbeb;return db[_0xb4f6('0x3e')][_0xb4f6('0x4b')]({'where':{'id':_0x206c7c['params']['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x200405,null))[_0xb4f6('0x22')](function(_0x3e1768){if(_0x3e1768){_0x551861=_0x3e1768;_0x38b0eb[_0xb4f6('0x2c')]=_[_0xb4f6('0x42')](db[_0xb4f6('0x4c')][_0xb4f6('0x29')]);_0x38b0eb['query']=_['keys'](_0x206c7c[_0xb4f6('0x2d')]);_0x38b0eb[_0xb4f6('0x2e')]=_['intersection'](_0x38b0eb[_0xb4f6('0x2c')],_0x38b0eb[_0xb4f6('0x2d')]);_0x57d312[_0xb4f6('0x31')]=_[_0xb4f6('0x2f')](_0x38b0eb[_0xb4f6('0x2c')],qs['fields'](_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x30')]));_0x57d312[_0xb4f6('0x31')]=_0x57d312['attributes']['length']?_0x57d312[_0xb4f6('0x31')]:_0x38b0eb[_0xb4f6('0x2c')];_0x57d312['order']=qs[_0xb4f6('0x36')](_0x206c7c['query'][_0xb4f6('0x36')]);_0x57d312[_0xb4f6('0x37')]=qs['filters'](_['pick'](_0x206c7c[_0xb4f6('0x2d')],_0x38b0eb['filters']));if(_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x39')]){_0x57d312[_0xb4f6('0x37')]=_[_0xb4f6('0x4d')](_0x57d312[_0xb4f6('0x37')],{'$or':_[_0xb4f6('0x28')](_0x57d312[_0xb4f6('0x31')],function(_0x483af5){var _0x3d1e4f={};_0x3d1e4f[_0x483af5]={'$like':'%'+_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x39')]+'%'};return _0x3d1e4f;})});}_0x57d312=_[_0xb4f6('0x4d')]({},_0x57d312,_0x206c7c['options']);return _0x551861[_0xb4f6('0x4a')](_0x57d312);}})[_0xb4f6('0x22')](function(_0x1b4358){if(_0x1b4358){_0x51bbeb=_0x1b4358[_0xb4f6('0x32')];if(!_0x206c7c[_0xb4f6('0x2d')]['hasOwnProperty'](_0xb4f6('0x34'))){_0x57d312[_0xb4f6('0x1c')]=qs[_0xb4f6('0x1c')](_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x1c')]);_0x57d312[_0xb4f6('0x1b')]=qs[_0xb4f6('0x1b')](_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x1b')]);}return _0x551861['getConfigurations'](_0x57d312);}})[_0xb4f6('0x22')](function(_0x2b0e02){if(_0x2b0e02){return _0x2b0e02?{'count':_0x51bbeb,'rows':_0x2b0e02}:null;}})[_0xb4f6('0x22')](respondWithResult(_0x200405,null))[_0xb4f6('0x47')](handleError(_0x200405,null));};exports['addConfiguration']=function(_0x29e0ab,_0x5bb4c1,_0x34f7d7){if(_0x29e0ab[_0xb4f6('0x46')]['id']){delete _0x29e0ab[_0xb4f6('0x46')]['id'];}return db[_0xb4f6('0x3e')][_0xb4f6('0x4b')]({'where':{'id':_0x29e0ab[_0xb4f6('0x48')]['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x5bb4c1,null))[_0xb4f6('0x22')](function(_0x1e2bef){if(_0x1e2bef){_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x4e')]=_0x1e2bef['id'];_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x4f')]=integrations[_0xb4f6('0x50')](_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x51')],_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x3a')]);_0x29e0ab['body']['Descriptions']=integrations[_0xb4f6('0x52')](_0x29e0ab['body']['channel'],_0x29e0ab['body']['type']);return db['FreshsalesConfiguration'][_0xb4f6('0x45')](_0x29e0ab['body'],{'include':[{'model':db[_0xb4f6('0x53')],'as':'Subjects'},{'model':db[_0xb4f6('0x53')],'as':_0xb4f6('0x54')}]});}return null;})[_0xb4f6('0x22')](respondWithResult(_0x5bb4c1,null))[_0xb4f6('0x47')](handleError(_0x5bb4c1,null));};exports[_0xb4f6('0x55')]=function(_0xe4fccf,_0x566ac8,_0x579324){var _0x5e854a='';var _0x81bfa7='';return db[_0xb4f6('0x3e')]['findOne']({'where':{'id':_0xe4fccf[_0xb4f6('0x48')]['id']},'attributes':['id',_0xb4f6('0x56'),_0xb4f6('0x57'),'apiKey']})[_0xb4f6('0x22')](handleEntityNotFound(_0x566ac8,null))[_0xb4f6('0x22')](function(_0x457d0a){if(_0x457d0a){_0x81bfa7=_0x457d0a['username'];_0x5e854a=_0x457d0a[_0xb4f6('0x57')];var _0x11fe39=_0x457d0a[_0xb4f6('0x57')][_0xb4f6('0x58')](-0x1);if(_0x11fe39==='/'){_0x5e854a=_0x5e854a[_0xb4f6('0x59')](0x0,_0x5e854a[_0xb4f6('0x5a')](_0x11fe39));}return rp({'method':'GET','uri':util[_0xb4f6('0x5b')](_0xb4f6('0x5c'),_0x5e854a,_0xb4f6('0x5d')),'headers':{'Authorization':_0xb4f6('0x5e')+_0x457d0a[_0xb4f6('0x5f')]},'json':!![]});}})[_0xb4f6('0x22')](function(_0x1fb23d){if(_0x1fb23d){var _0x5d54c5=_0x1fb23d[_0xb4f6('0x60')];var _0x5188be=![];var _0x3397cc=null;for(_0x3397cc=0x0;_0x3397cc<_0x5d54c5[_0xb4f6('0x32')];_0x3397cc++){if(_0x5d54c5[_0x3397cc]['email']===_0x81bfa7){_0x5188be=!![];}}if(_0x5188be){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0xb4f6('0x22')](respondWithResult(_0x566ac8,null))[_0xb4f6('0x47')](function(_0x267e14){var _0x2368ce=_0xe4fccf[_0xb4f6('0x2d')][_0xb4f6('0x61')]?0x1f4:_0x267e14[_0xb4f6('0x62')]||0x1f4;logger[_0xb4f6('0x23')]('getFields,\x20%s,\x20%s,\x20%s',_0xb4f6('0x55'),_0x2368ce,JSON['stringify'](_0x267e14));delete _0x267e14[_0xb4f6('0x25')];if(_0x2368ce===0x191){_0x2368ce=0x190;}_0x566ac8[_0xb4f6('0x18')](_0x2368ce)[_0xb4f6('0x26')](_0xe4fccf['query'][_0xb4f6('0x61')]?{'message':_0xb4f6('0x63'),'statusCode':_0x267e14[_0xb4f6('0x62')]}:_0x267e14);});};
\ No newline at end of file
+var _0x80d1=['FreshsalesField','username','apiKey','remoteUri','slice','substring','GET','format','%s%s','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','update','then','error','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','keys','filters','intersection','model','attributes','fields','query','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','create','body','find','params','destroy','FreshsalesConfiguration','filter','getConfigurations','nolimit','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions'];(function(_0x168585,_0x2239e1){var _0x55c137=function(_0x1e8e9b){while(--_0x1e8e9b){_0x168585['push'](_0x168585['shift']());}};_0x55c137(++_0x2239e1);}(_0x80d1,0x1aa));var _0x180d=function(_0xcff500,_0x5a4796){_0xcff500=_0xcff500-0x0;var _0x5df3d0=_0x80d1[_0xcff500];return _0x5df3d0;};'use strict';var emlformat=require(_0x180d('0x0'));var rimraf=require(_0x180d('0x1'));var zipdir=require(_0x180d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x180d('0x3'));var moment=require(_0x180d('0x4'));var BPromise=require(_0x180d('0x5'));var Mustache=require('mustache');var util=require(_0x180d('0x6'));var path=require(_0x180d('0x7'));var sox=require(_0x180d('0x8'));var csv=require(_0x180d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x180d('0xa'));var squel=require('squel');var crypto=require(_0x180d('0xb'));var jsforce=require(_0x180d('0xc'));var deskjs=require(_0x180d('0xd'));var toCsv=require(_0x180d('0x9'));var querystring=require(_0x180d('0xe'));var Papa=require(_0x180d('0xf'));var Redis=require(_0x180d('0x10'));var authService=require(_0x180d('0x11'));var qs=require(_0x180d('0x12'));var as=require(_0x180d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x180d('0x14'))(_0x180d('0x15'));var utils=require(_0x180d('0x16'));var config=require(_0x180d('0x17'));var licenseUtil=require(_0x180d('0x18'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x401f0f,_0x16c106){_0x16c106=_0x16c106||0xcc;return function(_0x28e019){if(_0x28e019){return _0x401f0f[_0x180d('0x19')](_0x16c106);}return _0x401f0f[_0x180d('0x1a')](_0x16c106)[_0x180d('0x1b')]();};}function respondWithResult(_0x5202a9,_0x34521f){_0x34521f=_0x34521f||0xc8;return function(_0x567bcf){if(_0x567bcf){return _0x5202a9['status'](_0x34521f)[_0x180d('0x1c')](_0x567bcf);}};}function respondWithFilteredResult(_0x142a9b,_0x4ece0a){return function(_0x36f0f4){if(_0x36f0f4){var _0x33181a=typeof _0x4ece0a[_0x180d('0x1d')]===_0x180d('0x1e')&&typeof _0x4ece0a['limit']==='undefined';var _0x41722a=_0x36f0f4[_0x180d('0x1f')];var _0x5d72ad=_0x33181a?0x0:_0x4ece0a[_0x180d('0x1d')];var _0x14ad09=_0x33181a?_0x36f0f4[_0x180d('0x1f')]:_0x4ece0a[_0x180d('0x1d')]+_0x4ece0a[_0x180d('0x20')];var _0x292e47;if(_0x14ad09>=_0x41722a){_0x14ad09=_0x41722a;_0x292e47=0xc8;}else{_0x292e47=0xce;}_0x142a9b[_0x180d('0x1a')](_0x292e47);return _0x142a9b[_0x180d('0x21')]('Content-Range',_0x5d72ad+'-'+_0x14ad09+'/'+_0x41722a)[_0x180d('0x1c')](_0x36f0f4);}return null;};}function patchUpdates(_0x3ca742){return function(_0x30414f){try{jsonpatch[_0x180d('0x22')](_0x30414f,_0x3ca742,!![]);}catch(_0x2494d3){return BPromise['reject'](_0x2494d3);}return _0x30414f['save']();};}function saveUpdates(_0x2cbc74,_0x1c2cbd){return function(_0x4fe874){if(_0x4fe874){return _0x4fe874[_0x180d('0x23')](_0x2cbc74)[_0x180d('0x24')](function(_0x4eb89f){return _0x4eb89f;});}return null;};}function removeEntity(_0x226345,_0x20ede8){return function(_0x30608f){if(_0x30608f){return _0x30608f['destroy']()[_0x180d('0x24')](function(){_0x226345[_0x180d('0x1a')](0xcc)[_0x180d('0x1b')]();});}};}function handleEntityNotFound(_0x9df707,_0x4550a5){return function(_0x17d5bc){if(!_0x17d5bc){_0x9df707[_0x180d('0x19')](0x194);}return _0x17d5bc;};}function handleError(_0x4a98b2,_0x17f3e5){_0x17f3e5=_0x17f3e5||0x1f4;return function(_0x3a6214){logger[_0x180d('0x25')](_0x3a6214[_0x180d('0x26')]);if(_0x3a6214['name']){delete _0x3a6214[_0x180d('0x27')];}_0x4a98b2['status'](_0x17f3e5)[_0x180d('0x28')](_0x3a6214);};}exports[_0x180d('0x29')]=function(_0x349da3,_0x31fed1){var _0x1f810f={},_0x355ef8={},_0x487533={'count':0x0,'rows':[]};var _0x5c966c=_[_0x180d('0x2a')](db[_0x180d('0x2b')][_0x180d('0x2c')],function(_0x43c450){return{'name':_0x43c450[_0x180d('0x2d')],'type':_0x43c450[_0x180d('0x2e')]['key']};});_0x355ef8['model']=_['map'](_0x5c966c,'name');_0x355ef8['query']=_[_0x180d('0x2f')](_0x349da3['query']);_0x355ef8[_0x180d('0x30')]=_[_0x180d('0x31')](_0x355ef8[_0x180d('0x32')],_0x355ef8['query']);_0x1f810f[_0x180d('0x33')]=_[_0x180d('0x31')](_0x355ef8[_0x180d('0x32')],qs[_0x180d('0x34')](_0x349da3[_0x180d('0x35')][_0x180d('0x34')]));_0x1f810f[_0x180d('0x33')]=_0x1f810f[_0x180d('0x33')]['length']?_0x1f810f[_0x180d('0x33')]:_0x355ef8['model'];if(!_0x349da3['query']['hasOwnProperty']('nolimit')){_0x1f810f[_0x180d('0x20')]=qs[_0x180d('0x20')](_0x349da3[_0x180d('0x35')][_0x180d('0x20')]);_0x1f810f[_0x180d('0x1d')]=qs['offset'](_0x349da3['query'][_0x180d('0x1d')]);}_0x1f810f[_0x180d('0x36')]=qs[_0x180d('0x37')](_0x349da3[_0x180d('0x35')][_0x180d('0x37')]);_0x1f810f[_0x180d('0x38')]=qs[_0x180d('0x30')](_[_0x180d('0x39')](_0x349da3['query'],_0x355ef8['filters']),_0x5c966c);if(_0x349da3['query']['filter']){_0x1f810f[_0x180d('0x38')]=_[_0x180d('0x3a')](_0x1f810f[_0x180d('0x38')],{'$or':_[_0x180d('0x2a')](_0x5c966c,function(_0x34a8ee){if(_0x34a8ee[_0x180d('0x2e')]!==_0x180d('0x3b')){var _0x5e0cb2={};_0x5e0cb2[_0x34a8ee[_0x180d('0x27')]]={'$like':'%'+_0x349da3[_0x180d('0x35')]['filter']+'%'};return _0x5e0cb2;}})});}_0x1f810f=_[_0x180d('0x3a')]({},_0x1f810f,_0x349da3[_0x180d('0x3c')]);var _0xbd235c={'where':_0x1f810f[_0x180d('0x38')]};return db[_0x180d('0x2b')][_0x180d('0x1f')](_0xbd235c)[_0x180d('0x24')](function(_0x102e77){_0x487533[_0x180d('0x1f')]=_0x102e77;if(_0x349da3[_0x180d('0x35')][_0x180d('0x3d')]){_0x1f810f[_0x180d('0x3e')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x180d('0x3f')](_0x1f810f);})[_0x180d('0x24')](function(_0x2fd43e){_0x487533[_0x180d('0x40')]=_0x2fd43e;return _0x487533;})[_0x180d('0x24')](respondWithFilteredResult(_0x31fed1,_0x1f810f))[_0x180d('0x41')](handleError(_0x31fed1,null));};exports[_0x180d('0x42')]=function(_0x3d3a00,_0x39ca7c){var _0x14ee5b={'raw':![],'where':{'id':_0x3d3a00['params']['id']}},_0x569e23={};_0x569e23[_0x180d('0x32')]=_['keys'](db[_0x180d('0x2b')][_0x180d('0x2c')]);_0x569e23[_0x180d('0x35')]=_[_0x180d('0x2f')](_0x3d3a00[_0x180d('0x35')]);_0x569e23[_0x180d('0x30')]=_[_0x180d('0x31')](_0x569e23[_0x180d('0x32')],_0x569e23[_0x180d('0x35')]);_0x14ee5b[_0x180d('0x33')]=_['intersection'](_0x569e23[_0x180d('0x32')],qs[_0x180d('0x34')](_0x3d3a00['query']['fields']));_0x14ee5b['attributes']=_0x14ee5b['attributes'][_0x180d('0x43')]?_0x14ee5b[_0x180d('0x33')]:_0x569e23['model'];if(_0x3d3a00['query'][_0x180d('0x3d')]){_0x14ee5b[_0x180d('0x3e')]=[{'all':!![]}];}_0x14ee5b=_[_0x180d('0x3a')]({},_0x14ee5b,_0x3d3a00['options']);return db[_0x180d('0x2b')]['find'](_0x14ee5b)[_0x180d('0x24')](handleEntityNotFound(_0x39ca7c,null))[_0x180d('0x24')](respondWithResult(_0x39ca7c,null))[_0x180d('0x41')](handleError(_0x39ca7c,null));};exports[_0x180d('0x44')]=function(_0x2befc4,_0x4bd042){return db[_0x180d('0x2b')][_0x180d('0x44')](_0x2befc4[_0x180d('0x45')],{})[_0x180d('0x24')](respondWithResult(_0x4bd042,0xc9))[_0x180d('0x41')](handleError(_0x4bd042,null));};exports[_0x180d('0x23')]=function(_0x3e2e2c,_0x36de63){if(_0x3e2e2c['body']['id']){delete _0x3e2e2c[_0x180d('0x45')]['id'];}return db['FreshsalesAccount'][_0x180d('0x46')]({'where':{'id':_0x3e2e2c[_0x180d('0x47')]['id']}})['then'](handleEntityNotFound(_0x36de63,null))[_0x180d('0x24')](saveUpdates(_0x3e2e2c[_0x180d('0x45')],null))[_0x180d('0x24')](respondWithResult(_0x36de63,null))[_0x180d('0x41')](handleError(_0x36de63,null));};exports[_0x180d('0x48')]=function(_0x1a2a40,_0x1727ce){return db['FreshsalesAccount'][_0x180d('0x46')]({'where':{'id':_0x1a2a40[_0x180d('0x47')]['id']}})[_0x180d('0x24')](handleEntityNotFound(_0x1727ce,null))[_0x180d('0x24')](removeEntity(_0x1727ce,null))[_0x180d('0x41')](handleError(_0x1727ce,null));};exports['getConfigurations']=function(_0x431a76,_0x706ff0,_0x41a8cd){var _0x10d360={};var _0x4b5ea9={};var _0x17a832;var _0x203e6a;return db[_0x180d('0x2b')]['findOne']({'where':{'id':_0x431a76[_0x180d('0x47')]['id']}})[_0x180d('0x24')](handleEntityNotFound(_0x706ff0,null))[_0x180d('0x24')](function(_0x1325f6){if(_0x1325f6){_0x17a832=_0x1325f6;_0x4b5ea9[_0x180d('0x32')]=_['keys'](db[_0x180d('0x49')]['rawAttributes']);_0x4b5ea9[_0x180d('0x35')]=_[_0x180d('0x2f')](_0x431a76[_0x180d('0x35')]);_0x4b5ea9[_0x180d('0x30')]=_[_0x180d('0x31')](_0x4b5ea9[_0x180d('0x32')],_0x4b5ea9[_0x180d('0x35')]);_0x10d360['attributes']=_['intersection'](_0x4b5ea9[_0x180d('0x32')],qs['fields'](_0x431a76[_0x180d('0x35')]['fields']));_0x10d360[_0x180d('0x33')]=_0x10d360['attributes'][_0x180d('0x43')]?_0x10d360[_0x180d('0x33')]:_0x4b5ea9['model'];_0x10d360[_0x180d('0x36')]=qs[_0x180d('0x37')](_0x431a76['query'][_0x180d('0x37')]);_0x10d360[_0x180d('0x38')]=qs[_0x180d('0x30')](_[_0x180d('0x39')](_0x431a76[_0x180d('0x35')],_0x4b5ea9[_0x180d('0x30')]));if(_0x431a76[_0x180d('0x35')][_0x180d('0x4a')]){_0x10d360[_0x180d('0x38')]=_[_0x180d('0x3a')](_0x10d360['where'],{'$or':_[_0x180d('0x2a')](_0x10d360[_0x180d('0x33')],function(_0x5f4c22){var _0x54fd3d={};_0x54fd3d[_0x5f4c22]={'$like':'%'+_0x431a76[_0x180d('0x35')][_0x180d('0x4a')]+'%'};return _0x54fd3d;})});}_0x10d360=_['merge']({},_0x10d360,_0x431a76[_0x180d('0x3c')]);return _0x17a832[_0x180d('0x4b')](_0x10d360);}})[_0x180d('0x24')](function(_0x300ed8){if(_0x300ed8){_0x203e6a=_0x300ed8['length'];if(!_0x431a76['query']['hasOwnProperty'](_0x180d('0x4c'))){_0x10d360[_0x180d('0x20')]=qs['limit'](_0x431a76[_0x180d('0x35')]['limit']);_0x10d360[_0x180d('0x1d')]=qs[_0x180d('0x1d')](_0x431a76[_0x180d('0x35')]['offset']);}return _0x17a832['getConfigurations'](_0x10d360);}})[_0x180d('0x24')](function(_0x1a5a62){if(_0x1a5a62){return _0x1a5a62?{'count':_0x203e6a,'rows':_0x1a5a62}:null;}})[_0x180d('0x24')](respondWithResult(_0x706ff0,null))[_0x180d('0x41')](handleError(_0x706ff0,null));};exports['addConfiguration']=function(_0x3a5fdb,_0x3a258c,_0x2514b0){if(_0x3a5fdb[_0x180d('0x45')]['id']){delete _0x3a5fdb['body']['id'];}return db['FreshsalesAccount'][_0x180d('0x4d')]({'where':{'id':_0x3a5fdb[_0x180d('0x47')]['id']}})['then'](handleEntityNotFound(_0x3a258c,null))['then'](function(_0x6d342f){if(_0x6d342f){_0x3a5fdb[_0x180d('0x45')][_0x180d('0x4e')]=_0x6d342f['id'];_0x3a5fdb[_0x180d('0x45')][_0x180d('0x4f')]=integrations[_0x180d('0x50')](_0x3a5fdb[_0x180d('0x45')][_0x180d('0x51')],_0x3a5fdb[_0x180d('0x45')]['type']);_0x3a5fdb[_0x180d('0x45')][_0x180d('0x52')]=integrations[_0x180d('0x53')](_0x3a5fdb[_0x180d('0x45')][_0x180d('0x51')],_0x3a5fdb['body'][_0x180d('0x2e')]);return db[_0x180d('0x49')]['create'](_0x3a5fdb['body'],{'include':[{'model':db['FreshsalesField'],'as':_0x180d('0x4f')},{'model':db[_0x180d('0x54')],'as':_0x180d('0x52')}]});}return null;})[_0x180d('0x24')](respondWithResult(_0x3a258c,null))['catch'](handleError(_0x3a258c,null));};exports['getFields']=function(_0x4aa8a7,_0x4ccb30,_0x5801ea){var _0x4fa6a9='';var _0x1feb1f='';return db[_0x180d('0x2b')][_0x180d('0x4d')]({'where':{'id':_0x4aa8a7['params']['id']},'attributes':['id',_0x180d('0x55'),'remoteUri',_0x180d('0x56')]})['then'](handleEntityNotFound(_0x4ccb30,null))[_0x180d('0x24')](function(_0x4c8455){if(_0x4c8455){_0x1feb1f=_0x4c8455[_0x180d('0x55')];_0x4fa6a9=_0x4c8455[_0x180d('0x57')];var _0x1fea38=_0x4c8455['remoteUri'][_0x180d('0x58')](-0x1);if(_0x1fea38==='/'){_0x4fa6a9=_0x4fa6a9[_0x180d('0x59')](0x0,_0x4fa6a9['lastIndexOf'](_0x1fea38));}return rp({'method':_0x180d('0x5a'),'uri':util[_0x180d('0x5b')](_0x180d('0x5c'),_0x4fa6a9,'/api/selector/owners'),'headers':{'Authorization':_0x180d('0x5d')+_0x4c8455['apiKey']},'json':!![]});}})['then'](function(_0x25309e){if(_0x25309e){var _0x4e18a5=_0x25309e[_0x180d('0x5e')];var _0x2c2094=![];var _0x489112=null;for(_0x489112=0x0;_0x489112<_0x4e18a5[_0x180d('0x43')];_0x489112++){if(_0x4e18a5[_0x489112]['email']===_0x1feb1f){_0x2c2094=!![];}}if(_0x2c2094){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x180d('0x5f')});}}})['then'](respondWithResult(_0x4ccb30,null))['catch'](function(_0x5f1654){var _0x25cda7=_0x4aa8a7[_0x180d('0x35')]['test']?0x1f4:_0x5f1654[_0x180d('0x60')]||0x1f4;logger[_0x180d('0x25')](_0x180d('0x61'),_0x180d('0x62'),_0x25cda7,JSON[_0x180d('0x63')](_0x5f1654));delete _0x5f1654[_0x180d('0x27')];if(_0x25cda7===0x191){_0x25cda7=0x190;}_0x4ccb30[_0x180d('0x1a')](_0x25cda7)[_0x180d('0x28')](_0x4aa8a7[_0x180d('0x35')][_0x180d('0x64')]?{'message':_0x180d('0x65'),'statusCode':_0x5f1654[_0x180d('0x60')]}:_0x5f1654);});};
\ No newline at end of file
index ff5fc60..006778a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','util','api','bluebird','request-promise','path'];(function(_0x22a492,_0x537d8a){var _0x50a30e=function(_0x351200){while(--_0x351200){_0x22a492['push'](_0x22a492['shift']());}};_0x50a30e(++_0x537d8a);}(_0x7096,0x10c));var _0x6709=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x7096[_0x55f8b4];return _0x2475f9;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var logger=require('../../config/logger')(_0x6709('0x1'));var moment=require('moment');var BPromise=require(_0x6709('0x2'));var rp=require(_0x6709('0x3'));var fs=require('fs');var path=require(_0x6709('0x4'));var rimraf=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var attributes=require(_0x6709('0x7'));var integrations=require(_0x6709('0x8'));module[_0x6709('0x9')]=function(_0xa35832,_0x3e2223){return _0xa35832[_0x6709('0xa')](_0x6709('0xb'),attributes,{'tableName':_0x6709('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b84=['../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x7b84,0x17c));var _0x47b8=function(_0x14a387,_0x3304a5){_0x14a387=_0x14a387-0x0;var _0x166393=_0x7b84[_0x14a387];return _0x166393;};'use strict';var _=require(_0x47b8('0x0'));var util=require(_0x47b8('0x1'));var logger=require(_0x47b8('0x2'))(_0x47b8('0x3'));var moment=require(_0x47b8('0x4'));var BPromise=require(_0x47b8('0x5'));var rp=require(_0x47b8('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x47b8('0x7'));var config=require(_0x47b8('0x8'));var attributes=require(_0x47b8('0x9'));var integrations=require(_0x47b8('0xa'));module[_0x47b8('0xb')]=function(_0xafe88a,_0x53e656){return _0xafe88a[_0x47b8('0xc')](_0x47b8('0xd'),attributes,{'tableName':_0x47b8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1221cd9..881b272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['result','catch','FreshsalesAccount','findAll','options','where','attributes','limit','include','model','map','GetFreshsalesAccount','ShowFreshsalesAccount','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesAccount,\x20%s,\x20%s','message'];(function(_0x5a7547,_0x5e3f7a){var _0x3c8a86=function(_0x3a68b3){while(--_0x3a68b3){_0x5a7547['push'](_0x5a7547['shift']());}};_0x3c8a86(++_0x5e3f7a);}(_0x77e6,0x1a6));var _0x677e=function(_0x28aaf2,_0xfa515){_0x28aaf2=_0x28aaf2-0x0;var _0x2962ad=_0x77e6[_0x28aaf2];return _0x2962ad;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var moment=require(_0x677e('0x2'));var BPromise=require(_0x677e('0x3'));var rs=require(_0x677e('0x4'));var fs=require('fs');var Redis=require(_0x677e('0x5'));var db=require(_0x677e('0x6'))['db'];var utils=require(_0x677e('0x7'));var logger=require('../../config/logger')(_0x677e('0x8'));var config=require(_0x677e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x677e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40d314,_0x4d1a57,_0x5a5dd3){return new BPromise(function(_0x2eb40c,_0x4c519f){return client[_0x677e('0xb')](_0x40d314,_0x5a5dd3)[_0x677e('0xc')](function(_0x552931){logger[_0x677e('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0x4d1a57,_0x677e('0xe'));logger[_0x677e('0xf')](_0x677e('0x10'),_0x4d1a57,_0x677e('0xe'),JSON[_0x677e('0x11')](_0x552931));if(_0x552931[_0x677e('0x12')]){if(_0x552931[_0x677e('0x12')][_0x677e('0x13')]===0x1f4){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x552931[_0x677e('0x12')][_0x677e('0x15')]);return _0x4c519f(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x4d1a57,_0x552931['error'][_0x677e('0x15')]);return _0x2eb40c(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}else{logger[_0x677e('0xd')](_0x677e('0x14'),_0x4d1a57,_0x677e('0xe'));_0x2eb40c(_0x552931[_0x677e('0x16')][_0x677e('0x15')]);}})[_0x677e('0x17')](function(_0x32d306){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x32d306);_0x4c519f(_0x32d306);});});}exports['GetFreshsalesAccount']=function(_0x1c5124){var _0x2ef2bf=this;return new Promise(function(_0x385b06,_0x221b6d){return db[_0x677e('0x18')][_0x677e('0x19')]({'raw':_0x1c5124['options']?_0x1c5124[_0x677e('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1b')]||null:null,'attributes':_0x1c5124['options']?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1c')]||null:null,'limit':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1d')]||null:null,'include':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')]['include']?_['map'](_0x1c5124['options'][_0x677e('0x1e')],function(_0x154fce){return{'model':db[_0x154fce[_0x677e('0x1f')]],'as':_0x154fce['as'],'attributes':_0x154fce[_0x677e('0x1c')],'include':_0x154fce[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x154fce[_0x677e('0x1e')],function(_0x42f2b8){return{'model':db[_0x42f2b8[_0x677e('0x1f')]],'as':_0x42f2b8['as'],'attributes':_0x42f2b8[_0x677e('0x1c')],'include':_0x42f2b8['include']?_['map'](_0x42f2b8[_0x677e('0x1e')],function(_0x184f68){return{'model':db[_0x184f68['model']],'as':_0x184f68['as'],'attributes':_0x184f68[_0x677e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x677e('0xc')](function(_0xf6b3ad){logger[_0x677e('0xd')](_0x677e('0x21'),_0x1c5124);logger[_0x677e('0xf')]('GetFreshsalesAccount',_0x1c5124,JSON[_0x677e('0x11')](_0xf6b3ad));_0x385b06(_0xf6b3ad);})[_0x677e('0x17')](function(_0xeca8e2){logger[_0x677e('0x12')](_0x677e('0x21'),_0xeca8e2[_0x677e('0x15')],_0x1c5124);_0x221b6d(_0x2ef2bf[_0x677e('0x12')](0x1f4,_0xeca8e2[_0x677e('0x15')]));});});};exports[_0x677e('0x22')]=function(_0x4c5113){var _0x22ccfb=this;return new Promise(function(_0x3cac19,_0x2fb815){return db[_0x677e('0x18')][_0x677e('0x23')]({'raw':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x24')]===undefined?!![]:![]:!![],'where':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')]['where']||null:null,'attributes':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x1c')]||null:null,'include':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x1e')]?_['map'](_0x4c5113[_0x677e('0x1a')][_0x677e('0x1e')],function(_0x2d0bc0){return{'model':db[_0x2d0bc0['model']],'as':_0x2d0bc0['as'],'attributes':_0x2d0bc0[_0x677e('0x1c')],'include':_0x2d0bc0[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x2d0bc0[_0x677e('0x1e')],function(_0x35c945){return{'model':db[_0x35c945['model']],'as':_0x35c945['as'],'attributes':_0x35c945[_0x677e('0x1c')],'include':_0x35c945[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x35c945[_0x677e('0x1e')],function(_0x548b22){return{'model':db[_0x548b22[_0x677e('0x1f')]],'as':_0x548b22['as'],'attributes':_0x548b22[_0x677e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x677e('0xc')](function(_0x576443){logger['info'](_0x677e('0x22'),_0x4c5113);logger[_0x677e('0xf')]('ShowFreshsalesAccount',_0x4c5113,JSON[_0x677e('0x11')](_0x576443));_0x3cac19(_0x576443);})[_0x677e('0x17')](function(_0x497dca){logger['error'](_0x677e('0x22'),_0x497dca[_0x677e('0x15')],_0x4c5113);_0x2fb815(_0x22ccfb['error'](0x1f4,_0x497dca['message']));});});};
\ No newline at end of file
+var _0x6343=['attributes','map','GetFreshsalesAccount','stringify','ShowFreshsalesAccount','find','where','debug','moment','bluebird','../../config/logger','rpc','jayson/promise','client','request','then','info','FreshsalesAccount,\x20%s,\x20%s','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','FreshsalesAccount','findAll','options','raw','limit','include','model'];(function(_0x5c3a26,_0x366605){var _0xdb283e=function(_0x3702df){while(--_0x3702df){_0x5c3a26['push'](_0x5c3a26['shift']());}};_0xdb283e(++_0x366605);}(_0x6343,0x168));var _0x3634=function(_0xace6e,_0x31e9fc){_0xace6e=_0xace6e-0x0;var _0x449103=_0x6343[_0xace6e];return _0x449103;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3634('0x0'));var BPromise=require(_0x3634('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3634('0x2'))(_0x3634('0x3'));var config=require('../../config/environment');var jayson=require(_0x3634('0x4'));var client=jayson[_0x3634('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x302828,_0xd40513,_0x4e6d71){return new BPromise(function(_0x5affba,_0x19170a){return client[_0x3634('0x6')](_0x302828,_0x4e6d71)[_0x3634('0x7')](function(_0x3c813b){logger[_0x3634('0x8')](_0x3634('0x9'),_0xd40513,'request\x20sent');logger['debug'](_0x3634('0xa'),_0xd40513,_0x3634('0xb'),JSON['stringify'](_0x3c813b));if(_0x3c813b[_0x3634('0xc')]){if(_0x3c813b[_0x3634('0xc')][_0x3634('0xd')]===0x1f4){logger[_0x3634('0xc')](_0x3634('0x9'),_0xd40513,_0x3c813b[_0x3634('0xc')][_0x3634('0xe')]);return _0x19170a(_0x3c813b[_0x3634('0xc')][_0x3634('0xe')]);}logger[_0x3634('0xc')](_0x3634('0x9'),_0xd40513,_0x3c813b[_0x3634('0xc')][_0x3634('0xe')]);return _0x5affba(_0x3c813b[_0x3634('0xc')]['message']);}else{logger[_0x3634('0x8')]('FreshsalesAccount,\x20%s,\x20%s',_0xd40513,_0x3634('0xb'));_0x5affba(_0x3c813b[_0x3634('0xf')][_0x3634('0xe')]);}})[_0x3634('0x10')](function(_0x91061e){logger['error'](_0x3634('0x9'),_0xd40513,_0x91061e);_0x19170a(_0x91061e);});});}exports['GetFreshsalesAccount']=function(_0x50350d){var _0x2aaac7=this;return new Promise(function(_0x4b2115,_0x2fac8b){return db[_0x3634('0x11')][_0x3634('0x12')]({'raw':_0x50350d['options']?_0x50350d[_0x3634('0x13')][_0x3634('0x14')]===undefined?!![]:![]:!![],'where':_0x50350d['options']?_0x50350d[_0x3634('0x13')]['where']||null:null,'attributes':_0x50350d[_0x3634('0x13')]?_0x50350d[_0x3634('0x13')]['attributes']||null:null,'limit':_0x50350d[_0x3634('0x13')]?_0x50350d[_0x3634('0x13')][_0x3634('0x15')]||null:null,'include':_0x50350d['options']?_0x50350d[_0x3634('0x13')][_0x3634('0x16')]?_['map'](_0x50350d[_0x3634('0x13')]['include'],function(_0x5e9188){return{'model':db[_0x5e9188[_0x3634('0x17')]],'as':_0x5e9188['as'],'attributes':_0x5e9188[_0x3634('0x18')],'include':_0x5e9188['include']?_[_0x3634('0x19')](_0x5e9188[_0x3634('0x16')],function(_0x17db44){return{'model':db[_0x17db44[_0x3634('0x17')]],'as':_0x17db44['as'],'attributes':_0x17db44[_0x3634('0x18')],'include':_0x17db44[_0x3634('0x16')]?_[_0x3634('0x19')](_0x17db44[_0x3634('0x16')],function(_0x22f1f1){return{'model':db[_0x22f1f1['model']],'as':_0x22f1f1['as'],'attributes':_0x22f1f1[_0x3634('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x58841d){logger['info'](_0x3634('0x1a'),_0x50350d);logger['debug'](_0x3634('0x1a'),_0x50350d,JSON[_0x3634('0x1b')](_0x58841d));_0x4b2115(_0x58841d);})['catch'](function(_0x55a77f){logger[_0x3634('0xc')]('GetFreshsalesAccount',_0x55a77f[_0x3634('0xe')],_0x50350d);_0x2fac8b(_0x2aaac7['error'](0x1f4,_0x55a77f[_0x3634('0xe')]));});});};exports[_0x3634('0x1c')]=function(_0x1d88f7){var _0x17a0fd=this;return new Promise(function(_0x1f46d9,_0x20b062){return db[_0x3634('0x11')][_0x3634('0x1d')]({'raw':_0x1d88f7['options']?_0x1d88f7['options']['raw']===undefined?!![]:![]:!![],'where':_0x1d88f7[_0x3634('0x13')]?_0x1d88f7['options'][_0x3634('0x1e')]||null:null,'attributes':_0x1d88f7[_0x3634('0x13')]?_0x1d88f7[_0x3634('0x13')][_0x3634('0x18')]||null:null,'include':_0x1d88f7[_0x3634('0x13')]?_0x1d88f7[_0x3634('0x13')]['include']?_[_0x3634('0x19')](_0x1d88f7[_0x3634('0x13')][_0x3634('0x16')],function(_0x1b686c){return{'model':db[_0x1b686c[_0x3634('0x17')]],'as':_0x1b686c['as'],'attributes':_0x1b686c[_0x3634('0x18')],'include':_0x1b686c[_0x3634('0x16')]?_[_0x3634('0x19')](_0x1b686c[_0x3634('0x16')],function(_0x598c7e){return{'model':db[_0x598c7e[_0x3634('0x17')]],'as':_0x598c7e['as'],'attributes':_0x598c7e[_0x3634('0x18')],'include':_0x598c7e[_0x3634('0x16')]?_[_0x3634('0x19')](_0x598c7e['include'],function(_0x149840){return{'model':db[_0x149840[_0x3634('0x17')]],'as':_0x149840['as'],'attributes':_0x149840[_0x3634('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5efd00){logger['info'](_0x3634('0x1c'),_0x1d88f7);logger[_0x3634('0x1f')]('ShowFreshsalesAccount',_0x1d88f7,JSON[_0x3634('0x1b')](_0x5efd00));_0x1f46d9(_0x5efd00);})[_0x3634('0x10')](function(_0x105507){logger[_0x3634('0xc')](_0x3634('0x1c'),_0x105507[_0x3634('0xe')],_0x1d88f7);_0x20b062(_0x17a0fd[_0x3634('0xc')](0x1f4,_0x105507['message']));});});};
\ No newline at end of file
index 6d41e3d..d9f1f9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ae=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','index','get','/:id','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','post','update','delete'];(function(_0x15dea7,_0x59f6b9){var _0x21aa62=function(_0xbe03b6){while(--_0xbe03b6){_0x15dea7['push'](_0x15dea7['shift']());}};_0x21aa62(++_0x59f6b9);}(_0x27ae,0xaa));var _0xe27a=function(_0x33b08,_0x1bf73d){_0x33b08=_0x33b08-0x0;var _0x214fce=_0x27ae[_0x33b08];return _0x214fce;};'use strict';var multer=require(_0xe27a('0x0'));var util=require(_0xe27a('0x1'));var path=require(_0xe27a('0x2'));var timeout=require(_0xe27a('0x3'));var express=require(_0xe27a('0x4'));var router=express['Router']();var fs_extra=require(_0xe27a('0x5'));var auth=require(_0xe27a('0x6'));var interaction=require(_0xe27a('0x7'));var config=require(_0xe27a('0x8'));var controller=require(_0xe27a('0x9'));router['get']('/',auth[_0xe27a('0xa')](),controller[_0xe27a('0xb')]);router[_0xe27a('0xc')](_0xe27a('0xd'),auth[_0xe27a('0xa')](),controller['show']);router[_0xe27a('0xc')](_0xe27a('0xe'),auth['isAuthenticated'](),controller[_0xe27a('0xf')]);router[_0xe27a('0xc')]('/:id/descriptions',auth[_0xe27a('0xa')](),controller[_0xe27a('0x10')]);router[_0xe27a('0xc')](_0xe27a('0x11'),auth[_0xe27a('0xa')](),controller[_0xe27a('0x12')]);router[_0xe27a('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xe27a('0xd'),auth[_0xe27a('0xa')](),controller[_0xe27a('0x14')]);router[_0xe27a('0x15')](_0xe27a('0xd'),auth[_0xe27a('0xa')](),controller[_0xe27a('0x16')]);module[_0xe27a('0x17')]=router;
\ No newline at end of file
+var _0x3cf0=['show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getFields','put','update','destroy','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x57546c,_0x53c1ed){var _0x3452da=function(_0x1c59f4){while(--_0x1c59f4){_0x57546c['push'](_0x57546c['shift']());}};_0x3452da(++_0x53c1ed);}(_0x3cf0,0x73));var _0x03cf=function(_0x42abe3,_0x1c71d9){_0x42abe3=_0x42abe3-0x0;var _0x583b50=_0x3cf0[_0x42abe3];return _0x583b50;};'use strict';var multer=require(_0x03cf('0x0'));var util=require(_0x03cf('0x1'));var path=require(_0x03cf('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x03cf('0x3')]();var fs_extra=require(_0x03cf('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x03cf('0x5'));var config=require('../../config/environment');var controller=require(_0x03cf('0x6'));router[_0x03cf('0x7')]('/',auth[_0x03cf('0x8')](),controller[_0x03cf('0x9')]);router['get'](_0x03cf('0xa'),auth[_0x03cf('0x8')](),controller[_0x03cf('0xb')]);router[_0x03cf('0x7')](_0x03cf('0xc'),auth[_0x03cf('0x8')](),controller[_0x03cf('0xd')]);router['get'](_0x03cf('0xe'),auth[_0x03cf('0x8')](),controller[_0x03cf('0xf')]);router[_0x03cf('0x7')]('/:id/fields',auth[_0x03cf('0x8')](),controller[_0x03cf('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x03cf('0x11')](_0x03cf('0xa'),auth[_0x03cf('0x8')](),controller[_0x03cf('0x12')]);router['delete'](_0x03cf('0xa'),auth[_0x03cf('0x8')](),controller[_0x03cf('0x13')]);module[_0x03cf('0x14')]=router;
\ No newline at end of file
index d0ff1a9..41c5a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca61=['STRING','sequelize','exports'];(function(_0x4393ed,_0x2f5a6a){var _0x4105cf=function(_0x2ed57d){while(--_0x2ed57d){_0x4393ed['push'](_0x4393ed['shift']());}};_0x4105cf(++_0x2f5a6a);}(_0xca61,0xbb));var _0x1ca6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xca61[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x1ca6('0x0'));module[_0x1ca6('0x1')]={'name':{'type':Sequelize[_0x1ca6('0x2')]},'description':{'type':Sequelize[_0x1ca6('0x2')]}};
\ No newline at end of file
+var _0x4ca3=['STRING','exports'];(function(_0x220947,_0x398aa){var _0x99e702=function(_0x80c579){while(--_0x80c579){_0x220947['push'](_0x220947['shift']());}};_0x99e702(++_0x398aa);}(_0x4ca3,0x77));var _0x34ca=function(_0x3c4fac,_0x1ad496){_0x3c4fac=_0x3c4fac-0x0;var _0x5704d0=_0x4ca3[_0x3c4fac];return _0x5704d0;};'use strict';var Sequelize=require('sequelize');module[_0x34ca('0x0')]={'name':{'type':Sequelize[_0x34ca('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 634b081..297a4ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23c8=['offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','catch','FreshsalesField','nolimit','getSubjects','getDescriptions','findOne','order','getFields','eml-format','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','undefined','limit'];(function(_0x1f8057,_0x29937c){var _0x530ae5=function(_0x1870ea){while(--_0x1870ea){_0x1f8057['push'](_0x1f8057['shift']());}};_0x530ae5(++_0x29937c);}(_0x23c8,0x1d0));var _0x823c=function(_0x4b7d3a,_0x649715){_0x4b7d3a=_0x4b7d3a-0x0;var _0x5de19b=_0x23c8[_0x4b7d3a];return _0x5de19b;};'use strict';var emlformat=require(_0x823c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x823c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x823c('0x2'));var BPromise=require(_0x823c('0x3'));var Mustache=require(_0x823c('0x4'));var util=require(_0x823c('0x5'));var path=require(_0x823c('0x6'));var sox=require('sox');var csv=require(_0x823c('0x7'));var ejs=require(_0x823c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x823c('0x9'));var squel=require('squel');var crypto=require(_0x823c('0xa'));var jsforce=require(_0x823c('0xb'));var deskjs=require(_0x823c('0xc'));var toCsv=require(_0x823c('0x7'));var querystring=require('querystring');var Papa=require(_0x823c('0xd'));var Redis=require(_0x823c('0xe'));var authService=require(_0x823c('0xf'));var qs=require(_0x823c('0x10'));var as=require(_0x823c('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x823c('0x12'))(_0x823c('0x13'));var utils=require(_0x823c('0x14'));var config=require(_0x823c('0x15'));var licenseUtil=require(_0x823c('0x16'));var db=require(_0x823c('0x17'))['db'];function respondWithStatusCode(_0xb23067,_0x33b13f){_0x33b13f=_0x33b13f||0xcc;return function(_0x196422){if(_0x196422){return _0xb23067['sendStatus'](_0x33b13f);}return _0xb23067['status'](_0x33b13f)[_0x823c('0x18')]();};}function respondWithResult(_0xfde604,_0x2b5cf5){_0x2b5cf5=_0x2b5cf5||0xc8;return function(_0x9a3b35){if(_0x9a3b35){return _0xfde604[_0x823c('0x19')](_0x2b5cf5)['json'](_0x9a3b35);}};}function respondWithFilteredResult(_0x2712e7,_0x43c6c3){return function(_0x548408){if(_0x548408){var _0x131988=typeof _0x43c6c3['offset']===_0x823c('0x1a')&&typeof _0x43c6c3[_0x823c('0x1b')]==='undefined';var _0x41bb2e=_0x548408['count'];var _0x17f9d8=_0x131988?0x0:_0x43c6c3[_0x823c('0x1c')];var _0x2653cd=_0x131988?_0x548408[_0x823c('0x1d')]:_0x43c6c3[_0x823c('0x1c')]+_0x43c6c3[_0x823c('0x1b')];var _0x37da51;if(_0x2653cd>=_0x41bb2e){_0x2653cd=_0x41bb2e;_0x37da51=0xc8;}else{_0x37da51=0xce;}_0x2712e7[_0x823c('0x19')](_0x37da51);return _0x2712e7[_0x823c('0x1e')](_0x823c('0x1f'),_0x17f9d8+'-'+_0x2653cd+'/'+_0x41bb2e)[_0x823c('0x20')](_0x548408);}return null;};}function patchUpdates(_0x1ee4ba){return function(_0x374080){try{jsonpatch[_0x823c('0x21')](_0x374080,_0x1ee4ba,!![]);}catch(_0xce85b1){return BPromise[_0x823c('0x22')](_0xce85b1);}return _0x374080[_0x823c('0x23')]();};}function saveUpdates(_0x33f276,_0x3ca43a){return function(_0x2fdabf){if(_0x2fdabf){return _0x2fdabf[_0x823c('0x24')](_0x33f276)[_0x823c('0x25')](function(_0x2697b5){return _0x2697b5;});}return null;};}function removeEntity(_0x4bf15c,_0x477afc){return function(_0x6a76ef){if(_0x6a76ef){return _0x6a76ef[_0x823c('0x26')]()[_0x823c('0x25')](function(){_0x4bf15c['status'](0xcc)[_0x823c('0x18')]();});}};}function handleEntityNotFound(_0x1cee63,_0x24c9b3){return function(_0xcb3cca){if(!_0xcb3cca){_0x1cee63['sendStatus'](0x194);}return _0xcb3cca;};}function handleError(_0x32f8f6,_0x116560){_0x116560=_0x116560||0x1f4;return function(_0x351aa7){logger[_0x823c('0x27')](_0x351aa7[_0x823c('0x28')]);if(_0x351aa7['name']){delete _0x351aa7[_0x823c('0x29')];}_0x32f8f6[_0x823c('0x19')](_0x116560)[_0x823c('0x2a')](_0x351aa7);};}exports['index']=function(_0x2e7ceb,_0x37a554){var _0x365895={},_0x4e721d={},_0x37ecd3={'count':0x0,'rows':[]};var _0x2ba14d=_[_0x823c('0x2b')](db[_0x823c('0x2c')][_0x823c('0x2d')],function(_0x444502){return{'name':_0x444502[_0x823c('0x2e')],'type':_0x444502[_0x823c('0x2f')][_0x823c('0x30')]};});_0x4e721d['model']=_[_0x823c('0x2b')](_0x2ba14d,'name');_0x4e721d[_0x823c('0x31')]=_[_0x823c('0x32')](_0x2e7ceb[_0x823c('0x31')]);_0x4e721d[_0x823c('0x33')]=_[_0x823c('0x34')](_0x4e721d[_0x823c('0x35')],_0x4e721d[_0x823c('0x31')]);_0x365895[_0x823c('0x36')]=_['intersection'](_0x4e721d['model'],qs['fields'](_0x2e7ceb['query'][_0x823c('0x37')]));_0x365895[_0x823c('0x36')]=_0x365895[_0x823c('0x36')][_0x823c('0x38')]?_0x365895[_0x823c('0x36')]:_0x4e721d[_0x823c('0x35')];if(!_0x2e7ceb['query'][_0x823c('0x39')]('nolimit')){_0x365895['limit']=qs[_0x823c('0x1b')](_0x2e7ceb[_0x823c('0x31')][_0x823c('0x1b')]);_0x365895[_0x823c('0x1c')]=qs['offset'](_0x2e7ceb[_0x823c('0x31')][_0x823c('0x1c')]);}_0x365895['order']=qs[_0x823c('0x3a')](_0x2e7ceb[_0x823c('0x31')][_0x823c('0x3a')]);_0x365895['where']=qs['filters'](_[_0x823c('0x3b')](_0x2e7ceb['query'],_0x4e721d[_0x823c('0x33')]),_0x2ba14d);if(_0x2e7ceb[_0x823c('0x31')]['filter']){_0x365895[_0x823c('0x3c')]=_[_0x823c('0x3d')](_0x365895['where'],{'$or':_['map'](_0x2ba14d,function(_0x42e068){if(_0x42e068[_0x823c('0x2f')]!==_0x823c('0x3e')){var _0x1e805b={};_0x1e805b[_0x42e068[_0x823c('0x29')]]={'$like':'%'+_0x2e7ceb['query'][_0x823c('0x3f')]+'%'};return _0x1e805b;}})});}_0x365895=_[_0x823c('0x3d')]({},_0x365895,_0x2e7ceb[_0x823c('0x40')]);var _0x37e5cb={'where':_0x365895[_0x823c('0x3c')]};return db['FreshsalesConfiguration']['count'](_0x37e5cb)['then'](function(_0x11e1de){_0x37ecd3[_0x823c('0x1d')]=_0x11e1de;if(_0x2e7ceb[_0x823c('0x31')][_0x823c('0x41')]){_0x365895[_0x823c('0x42')]=[{'all':!![]}];}return db[_0x823c('0x2c')][_0x823c('0x43')](_0x365895);})['then'](function(_0x4fd867){_0x37ecd3[_0x823c('0x44')]=_0x4fd867;return _0x37ecd3;})[_0x823c('0x25')](respondWithFilteredResult(_0x37a554,_0x365895))['catch'](handleError(_0x37a554,null));};exports[_0x823c('0x45')]=function(_0x1b51df,_0x3a864e){var _0x485ff6={'raw':![],'where':{'id':_0x1b51df[_0x823c('0x46')]['id']}},_0x2c01bd={};_0x2c01bd[_0x823c('0x35')]=_[_0x823c('0x32')](db['FreshsalesConfiguration'][_0x823c('0x2d')]);_0x2c01bd[_0x823c('0x31')]=_[_0x823c('0x32')](_0x1b51df['query']);_0x2c01bd[_0x823c('0x33')]=_[_0x823c('0x34')](_0x2c01bd[_0x823c('0x35')],_0x2c01bd[_0x823c('0x31')]);_0x485ff6[_0x823c('0x36')]=_['intersection'](_0x2c01bd[_0x823c('0x35')],qs[_0x823c('0x37')](_0x1b51df[_0x823c('0x31')][_0x823c('0x37')]));_0x485ff6[_0x823c('0x36')]=_0x485ff6[_0x823c('0x36')][_0x823c('0x38')]?_0x485ff6[_0x823c('0x36')]:_0x2c01bd[_0x823c('0x35')];if(_0x1b51df['query']['includeAll']){_0x485ff6[_0x823c('0x42')]=[{'all':!![]}];}_0x485ff6=_[_0x823c('0x3d')]({},_0x485ff6,_0x1b51df[_0x823c('0x40')]);return db['FreshsalesConfiguration'][_0x823c('0x47')](_0x485ff6)[_0x823c('0x25')](handleEntityNotFound(_0x3a864e,null))[_0x823c('0x25')](respondWithResult(_0x3a864e,null))['catch'](handleError(_0x3a864e,null));};exports[_0x823c('0x48')]=function(_0x5953f9,_0x4d8c3a){return db[_0x823c('0x2c')]['create'](_0x5953f9[_0x823c('0x49')],{})[_0x823c('0x25')](respondWithResult(_0x4d8c3a,0xc9))[_0x823c('0x4a')](handleError(_0x4d8c3a,null));};exports[_0x823c('0x24')]=function(_0x1c715a,_0x101362){if(_0x1c715a[_0x823c('0x49')]['id']){delete _0x1c715a[_0x823c('0x49')]['id'];}return db['FreshsalesConfiguration'][_0x823c('0x47')]({'where':{'id':_0x1c715a[_0x823c('0x46')]['id']}})[_0x823c('0x25')](handleEntityNotFound(_0x101362,null))['then'](saveUpdates(_0x1c715a['body'],null))[_0x823c('0x25')](respondWithResult(_0x101362,null))[_0x823c('0x4a')](handleError(_0x101362,null));};exports[_0x823c('0x26')]=function(_0x235394,_0x509d6e){return db['FreshsalesConfiguration'][_0x823c('0x47')]({'where':{'id':_0x235394[_0x823c('0x46')]['id']}})['then'](handleEntityNotFound(_0x509d6e,null))[_0x823c('0x25')](removeEntity(_0x509d6e,null))[_0x823c('0x4a')](handleError(_0x509d6e,null));};exports['getSubjects']=function(_0x149f73,_0x35433f,_0x1c1275){var _0x3d0b36={};var _0x40b17e={};var _0xfb850b;var _0x1ea73b;return db[_0x823c('0x2c')]['findOne']({'where':{'id':_0x149f73[_0x823c('0x46')]['id']}})[_0x823c('0x25')](handleEntityNotFound(_0x35433f,null))[_0x823c('0x25')](function(_0x2fa464){if(_0x2fa464){_0xfb850b=_0x2fa464;_0x40b17e[_0x823c('0x35')]=_[_0x823c('0x32')](db[_0x823c('0x4b')]['rawAttributes']);_0x40b17e[_0x823c('0x31')]=_['keys'](_0x149f73[_0x823c('0x31')]);_0x40b17e[_0x823c('0x33')]=_[_0x823c('0x34')](_0x40b17e[_0x823c('0x35')],_0x40b17e[_0x823c('0x31')]);_0x3d0b36[_0x823c('0x36')]=_[_0x823c('0x34')](_0x40b17e[_0x823c('0x35')],qs['fields'](_0x149f73['query']['fields']));_0x3d0b36['attributes']=_0x3d0b36[_0x823c('0x36')][_0x823c('0x38')]?_0x3d0b36[_0x823c('0x36')]:_0x40b17e[_0x823c('0x35')];_0x3d0b36['order']=qs['sort'](_0x149f73[_0x823c('0x31')][_0x823c('0x3a')]);_0x3d0b36[_0x823c('0x3c')]=qs['filters'](_[_0x823c('0x3b')](_0x149f73[_0x823c('0x31')],_0x40b17e[_0x823c('0x33')]));if(_0x149f73[_0x823c('0x31')][_0x823c('0x3f')]){_0x3d0b36[_0x823c('0x3c')]=_[_0x823c('0x3d')](_0x3d0b36['where'],{'$or':_[_0x823c('0x2b')](_0x3d0b36[_0x823c('0x36')],function(_0x1a678b){var _0x1cbfd={};_0x1cbfd[_0x1a678b]={'$like':'%'+_0x149f73[_0x823c('0x31')][_0x823c('0x3f')]+'%'};return _0x1cbfd;})});}_0x3d0b36=_[_0x823c('0x3d')]({},_0x3d0b36,_0x149f73[_0x823c('0x40')]);return _0xfb850b['getSubjects'](_0x3d0b36);}})['then'](function(_0x439375){if(_0x439375){_0x1ea73b=_0x439375[_0x823c('0x38')];if(!_0x149f73[_0x823c('0x31')]['hasOwnProperty'](_0x823c('0x4c'))){_0x3d0b36['limit']=qs[_0x823c('0x1b')](_0x149f73[_0x823c('0x31')][_0x823c('0x1b')]);_0x3d0b36[_0x823c('0x1c')]=qs[_0x823c('0x1c')](_0x149f73[_0x823c('0x31')][_0x823c('0x1c')]);}return _0xfb850b[_0x823c('0x4d')](_0x3d0b36);}})[_0x823c('0x25')](function(_0x3357f9){if(_0x3357f9){return _0x3357f9?{'count':_0x1ea73b,'rows':_0x3357f9}:null;}})[_0x823c('0x25')](respondWithResult(_0x35433f,null))[_0x823c('0x4a')](handleError(_0x35433f,null));};exports[_0x823c('0x4e')]=function(_0x4dfa59,_0x3aba09,_0x559921){var _0x28f4f6={};var _0x143bef={};var _0x3c5956;var _0x4dd885;return db[_0x823c('0x2c')][_0x823c('0x4f')]({'where':{'id':_0x4dfa59[_0x823c('0x46')]['id']}})[_0x823c('0x25')](handleEntityNotFound(_0x3aba09,null))[_0x823c('0x25')](function(_0x2d761e){if(_0x2d761e){_0x3c5956=_0x2d761e;_0x143bef[_0x823c('0x35')]=_[_0x823c('0x32')](db['FreshsalesField']['rawAttributes']);_0x143bef[_0x823c('0x31')]=_['keys'](_0x4dfa59['query']);_0x143bef['filters']=_[_0x823c('0x34')](_0x143bef[_0x823c('0x35')],_0x143bef[_0x823c('0x31')]);_0x28f4f6[_0x823c('0x36')]=_['intersection'](_0x143bef[_0x823c('0x35')],qs['fields'](_0x4dfa59[_0x823c('0x31')]['fields']));_0x28f4f6[_0x823c('0x36')]=_0x28f4f6['attributes'][_0x823c('0x38')]?_0x28f4f6[_0x823c('0x36')]:_0x143bef[_0x823c('0x35')];_0x28f4f6[_0x823c('0x50')]=qs['sort'](_0x4dfa59['query']['sort']);_0x28f4f6['where']=qs[_0x823c('0x33')](_['pick'](_0x4dfa59[_0x823c('0x31')],_0x143bef[_0x823c('0x33')]));if(_0x4dfa59[_0x823c('0x31')][_0x823c('0x3f')]){_0x28f4f6[_0x823c('0x3c')]=_[_0x823c('0x3d')](_0x28f4f6['where'],{'$or':_[_0x823c('0x2b')](_0x28f4f6[_0x823c('0x36')],function(_0xc95bc4){var _0x2270e1={};_0x2270e1[_0xc95bc4]={'$like':'%'+_0x4dfa59[_0x823c('0x31')][_0x823c('0x3f')]+'%'};return _0x2270e1;})});}_0x28f4f6=_[_0x823c('0x3d')]({},_0x28f4f6,_0x4dfa59[_0x823c('0x40')]);return _0x3c5956[_0x823c('0x4e')](_0x28f4f6);}})['then'](function(_0x45d138){if(_0x45d138){_0x4dd885=_0x45d138[_0x823c('0x38')];if(!_0x4dfa59['query'][_0x823c('0x39')](_0x823c('0x4c'))){_0x28f4f6[_0x823c('0x1b')]=qs[_0x823c('0x1b')](_0x4dfa59[_0x823c('0x31')]['limit']);_0x28f4f6[_0x823c('0x1c')]=qs['offset'](_0x4dfa59[_0x823c('0x31')][_0x823c('0x1c')]);}return _0x3c5956['getDescriptions'](_0x28f4f6);}})['then'](function(_0x2db3c4){if(_0x2db3c4){return _0x2db3c4?{'count':_0x4dd885,'rows':_0x2db3c4}:null;}})[_0x823c('0x25')](respondWithResult(_0x3aba09,null))[_0x823c('0x4a')](handleError(_0x3aba09,null));};exports[_0x823c('0x51')]=function(_0xd8e51a,_0x560abd,_0x50ca94){var _0x59c688={};var _0x2ff5f4={};var _0x5027fa;var _0x42d0e2;return db[_0x823c('0x2c')][_0x823c('0x4f')]({'where':{'id':_0xd8e51a['params']['id']}})['then'](handleEntityNotFound(_0x560abd,null))[_0x823c('0x25')](function(_0x5a7522){if(_0x5a7522){_0x5027fa=_0x5a7522;_0x2ff5f4[_0x823c('0x35')]=_['keys'](db[_0x823c('0x4b')]['rawAttributes']);_0x2ff5f4[_0x823c('0x31')]=_[_0x823c('0x32')](_0xd8e51a['query']);_0x2ff5f4[_0x823c('0x33')]=_[_0x823c('0x34')](_0x2ff5f4[_0x823c('0x35')],_0x2ff5f4[_0x823c('0x31')]);_0x59c688[_0x823c('0x36')]=_[_0x823c('0x34')](_0x2ff5f4['model'],qs[_0x823c('0x37')](_0xd8e51a[_0x823c('0x31')][_0x823c('0x37')]));_0x59c688[_0x823c('0x36')]=_0x59c688[_0x823c('0x36')]['length']?_0x59c688[_0x823c('0x36')]:_0x2ff5f4[_0x823c('0x35')];_0x59c688['order']=qs[_0x823c('0x3a')](_0xd8e51a['query'][_0x823c('0x3a')]);_0x59c688['where']=qs[_0x823c('0x33')](_['pick'](_0xd8e51a[_0x823c('0x31')],_0x2ff5f4['filters']));if(_0xd8e51a[_0x823c('0x31')][_0x823c('0x3f')]){_0x59c688['where']=_[_0x823c('0x3d')](_0x59c688[_0x823c('0x3c')],{'$or':_[_0x823c('0x2b')](_0x59c688[_0x823c('0x36')],function(_0x58f132){var _0x3338b7={};_0x3338b7[_0x58f132]={'$like':'%'+_0xd8e51a['query']['filter']+'%'};return _0x3338b7;})});}_0x59c688=_[_0x823c('0x3d')]({},_0x59c688,_0xd8e51a['options']);return _0x5027fa[_0x823c('0x51')](_0x59c688);}})[_0x823c('0x25')](function(_0x5e43f7){if(_0x5e43f7){_0x42d0e2=_0x5e43f7[_0x823c('0x38')];if(!_0xd8e51a[_0x823c('0x31')]['hasOwnProperty'](_0x823c('0x4c'))){_0x59c688[_0x823c('0x1b')]=qs[_0x823c('0x1b')](_0xd8e51a[_0x823c('0x31')][_0x823c('0x1b')]);_0x59c688[_0x823c('0x1c')]=qs[_0x823c('0x1c')](_0xd8e51a['query'][_0x823c('0x1c')]);}return _0x5027fa[_0x823c('0x51')](_0x59c688);}})[_0x823c('0x25')](function(_0x428fd9){if(_0x428fd9){return _0x428fd9?{'count':_0x42d0e2,'rows':_0x428fd9}:null;}})[_0x823c('0x25')](respondWithResult(_0x560abd,null))[_0x823c('0x4a')](handleError(_0x560abd,null));};
\ No newline at end of file
+var _0x42d6=['includeAll','include','findAll','rows','catch','show','length','find','create','body','destroy','params','findOne','FreshsalesField','getSubjects','hasOwnProperty','getDescriptions','getFields','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','apply','save','update','then','end','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x42d6,0x102));var _0x642d=function(_0x36fd0e,_0x15a6ca){_0x36fd0e=_0x36fd0e-0x0;var _0xcf0ad8=_0x42d6[_0x36fd0e];return _0xcf0ad8;};'use strict';var emlformat=require(_0x642d('0x0'));var rimraf=require(_0x642d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x642d('0x2'));var rp=require(_0x642d('0x3'));var moment=require('moment');var BPromise=require(_0x642d('0x4'));var Mustache=require('mustache');var util=require(_0x642d('0x5'));var path=require('path');var sox=require(_0x642d('0x6'));var csv=require(_0x642d('0x7'));var ejs=require(_0x642d('0x8'));var fs=require('fs');var fs_extra=require(_0x642d('0x9'));var _=require(_0x642d('0xa'));var squel=require('squel');var crypto=require(_0x642d('0xb'));var jsforce=require(_0x642d('0xc'));var deskjs=require(_0x642d('0xd'));var toCsv=require(_0x642d('0x7'));var querystring=require(_0x642d('0xe'));var Papa=require(_0x642d('0xf'));var Redis=require('ioredis');var authService=require(_0x642d('0x10'));var qs=require(_0x642d('0x11'));var as=require(_0x642d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x642d('0x13'))(_0x642d('0x14'));var utils=require('../../config/utils');var config=require(_0x642d('0x15'));var licenseUtil=require(_0x642d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3972f6,_0x2994ea){_0x2994ea=_0x2994ea||0xcc;return function(_0x403aad){if(_0x403aad){return _0x3972f6[_0x642d('0x17')](_0x2994ea);}return _0x3972f6[_0x642d('0x18')](_0x2994ea)['end']();};}function respondWithResult(_0x35804b,_0x1a95d0){_0x1a95d0=_0x1a95d0||0xc8;return function(_0x421b9c){if(_0x421b9c){return _0x35804b['status'](_0x1a95d0)[_0x642d('0x19')](_0x421b9c);}};}function respondWithFilteredResult(_0x270b2c,_0x591472){return function(_0x47e50b){if(_0x47e50b){var _0x2f246b=typeof _0x591472[_0x642d('0x1a')]===_0x642d('0x1b')&&typeof _0x591472['limit']===_0x642d('0x1b');var _0x218c99=_0x47e50b[_0x642d('0x1c')];var _0x205eab=_0x2f246b?0x0:_0x591472['offset'];var _0x9e734a=_0x2f246b?_0x47e50b[_0x642d('0x1c')]:_0x591472[_0x642d('0x1a')]+_0x591472[_0x642d('0x1d')];var _0x370375;if(_0x9e734a>=_0x218c99){_0x9e734a=_0x218c99;_0x370375=0xc8;}else{_0x370375=0xce;}_0x270b2c[_0x642d('0x18')](_0x370375);return _0x270b2c[_0x642d('0x1e')]('Content-Range',_0x205eab+'-'+_0x9e734a+'/'+_0x218c99)[_0x642d('0x19')](_0x47e50b);}return null;};}function patchUpdates(_0x12bfbf){return function(_0x39eaf9){try{jsonpatch[_0x642d('0x1f')](_0x39eaf9,_0x12bfbf,!![]);}catch(_0x2ab61a){return BPromise['reject'](_0x2ab61a);}return _0x39eaf9[_0x642d('0x20')]();};}function saveUpdates(_0x1158e1,_0x5c817e){return function(_0x4843e9){if(_0x4843e9){return _0x4843e9[_0x642d('0x21')](_0x1158e1)[_0x642d('0x22')](function(_0x37e799){return _0x37e799;});}return null;};}function removeEntity(_0x4714bb,_0x11a813){return function(_0x15be4e){if(_0x15be4e){return _0x15be4e['destroy']()['then'](function(){_0x4714bb[_0x642d('0x18')](0xcc)[_0x642d('0x23')]();});}};}function handleEntityNotFound(_0xf5f868,_0x8945f){return function(_0x30ba0b){if(!_0x30ba0b){_0xf5f868[_0x642d('0x17')](0x194);}return _0x30ba0b;};}function handleError(_0x3d30a4,_0x2e01f1){_0x2e01f1=_0x2e01f1||0x1f4;return function(_0x22a4ec){logger[_0x642d('0x24')](_0x22a4ec[_0x642d('0x25')]);if(_0x22a4ec[_0x642d('0x26')]){delete _0x22a4ec['name'];}_0x3d30a4[_0x642d('0x18')](_0x2e01f1)[_0x642d('0x27')](_0x22a4ec);};}exports[_0x642d('0x28')]=function(_0x2d33f3,_0x547e24){var _0x5cad43={},_0xbf48f5={},_0xba0b1b={'count':0x0,'rows':[]};var _0x2f4572=_[_0x642d('0x29')](db[_0x642d('0x2a')][_0x642d('0x2b')],function(_0x370c2f){return{'name':_0x370c2f['fieldName'],'type':_0x370c2f[_0x642d('0x2c')][_0x642d('0x2d')]};});_0xbf48f5[_0x642d('0x2e')]=_['map'](_0x2f4572,_0x642d('0x26'));_0xbf48f5[_0x642d('0x2f')]=_[_0x642d('0x30')](_0x2d33f3[_0x642d('0x2f')]);_0xbf48f5[_0x642d('0x31')]=_[_0x642d('0x32')](_0xbf48f5['model'],_0xbf48f5[_0x642d('0x2f')]);_0x5cad43[_0x642d('0x33')]=_[_0x642d('0x32')](_0xbf48f5[_0x642d('0x2e')],qs[_0x642d('0x34')](_0x2d33f3[_0x642d('0x2f')][_0x642d('0x34')]));_0x5cad43[_0x642d('0x33')]=_0x5cad43[_0x642d('0x33')]['length']?_0x5cad43['attributes']:_0xbf48f5['model'];if(!_0x2d33f3['query']['hasOwnProperty'](_0x642d('0x35'))){_0x5cad43[_0x642d('0x1d')]=qs[_0x642d('0x1d')](_0x2d33f3[_0x642d('0x2f')][_0x642d('0x1d')]);_0x5cad43[_0x642d('0x1a')]=qs['offset'](_0x2d33f3[_0x642d('0x2f')][_0x642d('0x1a')]);}_0x5cad43[_0x642d('0x36')]=qs['sort'](_0x2d33f3[_0x642d('0x2f')][_0x642d('0x37')]);_0x5cad43['where']=qs['filters'](_[_0x642d('0x38')](_0x2d33f3[_0x642d('0x2f')],_0xbf48f5[_0x642d('0x31')]),_0x2f4572);if(_0x2d33f3[_0x642d('0x2f')][_0x642d('0x39')]){_0x5cad43[_0x642d('0x3a')]=_[_0x642d('0x3b')](_0x5cad43['where'],{'$or':_[_0x642d('0x29')](_0x2f4572,function(_0x5638ee){if(_0x5638ee[_0x642d('0x2c')]!==_0x642d('0x3c')){var _0x54328a={};_0x54328a[_0x5638ee[_0x642d('0x26')]]={'$like':'%'+_0x2d33f3[_0x642d('0x2f')]['filter']+'%'};return _0x54328a;}})});}_0x5cad43=_['merge']({},_0x5cad43,_0x2d33f3[_0x642d('0x3d')]);var _0x4ff075={'where':_0x5cad43[_0x642d('0x3a')]};return db[_0x642d('0x2a')][_0x642d('0x1c')](_0x4ff075)[_0x642d('0x22')](function(_0x47f155){_0xba0b1b['count']=_0x47f155;if(_0x2d33f3[_0x642d('0x2f')][_0x642d('0x3e')]){_0x5cad43[_0x642d('0x3f')]=[{'all':!![]}];}return db[_0x642d('0x2a')][_0x642d('0x40')](_0x5cad43);})[_0x642d('0x22')](function(_0x5900a4){_0xba0b1b[_0x642d('0x41')]=_0x5900a4;return _0xba0b1b;})['then'](respondWithFilteredResult(_0x547e24,_0x5cad43))[_0x642d('0x42')](handleError(_0x547e24,null));};exports[_0x642d('0x43')]=function(_0x346744,_0x3d84e2){var _0x2cadb4={'raw':![],'where':{'id':_0x346744['params']['id']}},_0x549839={};_0x549839['model']=_[_0x642d('0x30')](db[_0x642d('0x2a')]['rawAttributes']);_0x549839[_0x642d('0x2f')]=_[_0x642d('0x30')](_0x346744['query']);_0x549839[_0x642d('0x31')]=_[_0x642d('0x32')](_0x549839[_0x642d('0x2e')],_0x549839[_0x642d('0x2f')]);_0x2cadb4[_0x642d('0x33')]=_[_0x642d('0x32')](_0x549839[_0x642d('0x2e')],qs[_0x642d('0x34')](_0x346744['query'][_0x642d('0x34')]));_0x2cadb4[_0x642d('0x33')]=_0x2cadb4[_0x642d('0x33')][_0x642d('0x44')]?_0x2cadb4[_0x642d('0x33')]:_0x549839[_0x642d('0x2e')];if(_0x346744[_0x642d('0x2f')][_0x642d('0x3e')]){_0x2cadb4[_0x642d('0x3f')]=[{'all':!![]}];}_0x2cadb4=_[_0x642d('0x3b')]({},_0x2cadb4,_0x346744[_0x642d('0x3d')]);return db[_0x642d('0x2a')][_0x642d('0x45')](_0x2cadb4)[_0x642d('0x22')](handleEntityNotFound(_0x3d84e2,null))[_0x642d('0x22')](respondWithResult(_0x3d84e2,null))[_0x642d('0x42')](handleError(_0x3d84e2,null));};exports[_0x642d('0x46')]=function(_0x24e733,_0x3bb5b0){return db['FreshsalesConfiguration'][_0x642d('0x46')](_0x24e733[_0x642d('0x47')],{})[_0x642d('0x22')](respondWithResult(_0x3bb5b0,0xc9))[_0x642d('0x42')](handleError(_0x3bb5b0,null));};exports[_0x642d('0x21')]=function(_0x49a2f3,_0xd5f499){if(_0x49a2f3[_0x642d('0x47')]['id']){delete _0x49a2f3[_0x642d('0x47')]['id'];}return db[_0x642d('0x2a')][_0x642d('0x45')]({'where':{'id':_0x49a2f3['params']['id']}})[_0x642d('0x22')](handleEntityNotFound(_0xd5f499,null))[_0x642d('0x22')](saveUpdates(_0x49a2f3[_0x642d('0x47')],null))[_0x642d('0x22')](respondWithResult(_0xd5f499,null))[_0x642d('0x42')](handleError(_0xd5f499,null));};exports[_0x642d('0x48')]=function(_0x594f46,_0x149600){return db[_0x642d('0x2a')]['find']({'where':{'id':_0x594f46[_0x642d('0x49')]['id']}})[_0x642d('0x22')](handleEntityNotFound(_0x149600,null))[_0x642d('0x22')](removeEntity(_0x149600,null))[_0x642d('0x42')](handleError(_0x149600,null));};exports['getSubjects']=function(_0x5e1234,_0x4bdb4d,_0x4ccb94){var _0xe339a1={};var _0x4d08af={};var _0x307916;var _0x405333;return db[_0x642d('0x2a')][_0x642d('0x4a')]({'where':{'id':_0x5e1234[_0x642d('0x49')]['id']}})[_0x642d('0x22')](handleEntityNotFound(_0x4bdb4d,null))[_0x642d('0x22')](function(_0x46c985){if(_0x46c985){_0x307916=_0x46c985;_0x4d08af[_0x642d('0x2e')]=_[_0x642d('0x30')](db[_0x642d('0x4b')]['rawAttributes']);_0x4d08af[_0x642d('0x2f')]=_[_0x642d('0x30')](_0x5e1234[_0x642d('0x2f')]);_0x4d08af[_0x642d('0x31')]=_[_0x642d('0x32')](_0x4d08af[_0x642d('0x2e')],_0x4d08af[_0x642d('0x2f')]);_0xe339a1[_0x642d('0x33')]=_[_0x642d('0x32')](_0x4d08af[_0x642d('0x2e')],qs['fields'](_0x5e1234[_0x642d('0x2f')][_0x642d('0x34')]));_0xe339a1[_0x642d('0x33')]=_0xe339a1[_0x642d('0x33')][_0x642d('0x44')]?_0xe339a1['attributes']:_0x4d08af['model'];_0xe339a1[_0x642d('0x36')]=qs[_0x642d('0x37')](_0x5e1234[_0x642d('0x2f')][_0x642d('0x37')]);_0xe339a1[_0x642d('0x3a')]=qs['filters'](_[_0x642d('0x38')](_0x5e1234[_0x642d('0x2f')],_0x4d08af['filters']));if(_0x5e1234['query'][_0x642d('0x39')]){_0xe339a1[_0x642d('0x3a')]=_[_0x642d('0x3b')](_0xe339a1['where'],{'$or':_['map'](_0xe339a1[_0x642d('0x33')],function(_0x106918){var _0x2d32e6={};_0x2d32e6[_0x106918]={'$like':'%'+_0x5e1234['query'][_0x642d('0x39')]+'%'};return _0x2d32e6;})});}_0xe339a1=_[_0x642d('0x3b')]({},_0xe339a1,_0x5e1234[_0x642d('0x3d')]);return _0x307916[_0x642d('0x4c')](_0xe339a1);}})['then'](function(_0x306e9f){if(_0x306e9f){_0x405333=_0x306e9f[_0x642d('0x44')];if(!_0x5e1234[_0x642d('0x2f')][_0x642d('0x4d')](_0x642d('0x35'))){_0xe339a1[_0x642d('0x1d')]=qs['limit'](_0x5e1234[_0x642d('0x2f')][_0x642d('0x1d')]);_0xe339a1[_0x642d('0x1a')]=qs['offset'](_0x5e1234[_0x642d('0x2f')][_0x642d('0x1a')]);}return _0x307916[_0x642d('0x4c')](_0xe339a1);}})[_0x642d('0x22')](function(_0x2c747a){if(_0x2c747a){return _0x2c747a?{'count':_0x405333,'rows':_0x2c747a}:null;}})['then'](respondWithResult(_0x4bdb4d,null))[_0x642d('0x42')](handleError(_0x4bdb4d,null));};exports[_0x642d('0x4e')]=function(_0x1f0f0b,_0x275c45,_0x5ba5bf){var _0x37234e={};var _0x2186ee={};var _0x5c2a65;var _0xb154f8;return db[_0x642d('0x2a')][_0x642d('0x4a')]({'where':{'id':_0x1f0f0b[_0x642d('0x49')]['id']}})['then'](handleEntityNotFound(_0x275c45,null))[_0x642d('0x22')](function(_0x3e9821){if(_0x3e9821){_0x5c2a65=_0x3e9821;_0x2186ee[_0x642d('0x2e')]=_[_0x642d('0x30')](db['FreshsalesField'][_0x642d('0x2b')]);_0x2186ee[_0x642d('0x2f')]=_[_0x642d('0x30')](_0x1f0f0b[_0x642d('0x2f')]);_0x2186ee[_0x642d('0x31')]=_['intersection'](_0x2186ee['model'],_0x2186ee[_0x642d('0x2f')]);_0x37234e[_0x642d('0x33')]=_['intersection'](_0x2186ee[_0x642d('0x2e')],qs['fields'](_0x1f0f0b[_0x642d('0x2f')][_0x642d('0x34')]));_0x37234e['attributes']=_0x37234e[_0x642d('0x33')][_0x642d('0x44')]?_0x37234e[_0x642d('0x33')]:_0x2186ee[_0x642d('0x2e')];_0x37234e[_0x642d('0x36')]=qs[_0x642d('0x37')](_0x1f0f0b[_0x642d('0x2f')]['sort']);_0x37234e[_0x642d('0x3a')]=qs[_0x642d('0x31')](_['pick'](_0x1f0f0b[_0x642d('0x2f')],_0x2186ee[_0x642d('0x31')]));if(_0x1f0f0b[_0x642d('0x2f')][_0x642d('0x39')]){_0x37234e[_0x642d('0x3a')]=_['merge'](_0x37234e[_0x642d('0x3a')],{'$or':_[_0x642d('0x29')](_0x37234e[_0x642d('0x33')],function(_0x1de563){var _0x342ce9={};_0x342ce9[_0x1de563]={'$like':'%'+_0x1f0f0b['query'][_0x642d('0x39')]+'%'};return _0x342ce9;})});}_0x37234e=_[_0x642d('0x3b')]({},_0x37234e,_0x1f0f0b[_0x642d('0x3d')]);return _0x5c2a65[_0x642d('0x4e')](_0x37234e);}})[_0x642d('0x22')](function(_0xe8e61d){if(_0xe8e61d){_0xb154f8=_0xe8e61d[_0x642d('0x44')];if(!_0x1f0f0b[_0x642d('0x2f')][_0x642d('0x4d')]('nolimit')){_0x37234e[_0x642d('0x1d')]=qs['limit'](_0x1f0f0b[_0x642d('0x2f')]['limit']);_0x37234e[_0x642d('0x1a')]=qs['offset'](_0x1f0f0b[_0x642d('0x2f')][_0x642d('0x1a')]);}return _0x5c2a65[_0x642d('0x4e')](_0x37234e);}})[_0x642d('0x22')](function(_0xa09983){if(_0xa09983){return _0xa09983?{'count':_0xb154f8,'rows':_0xa09983}:null;}})['then'](respondWithResult(_0x275c45,null))[_0x642d('0x42')](handleError(_0x275c45,null));};exports[_0x642d('0x4f')]=function(_0x989248,_0x298772,_0xe2c4e7){var _0x5086c6={};var _0x1d2f00={};var _0x1bd138;var _0x34124f;return db[_0x642d('0x2a')][_0x642d('0x4a')]({'where':{'id':_0x989248['params']['id']}})['then'](handleEntityNotFound(_0x298772,null))['then'](function(_0x442c2e){if(_0x442c2e){_0x1bd138=_0x442c2e;_0x1d2f00['model']=_['keys'](db[_0x642d('0x4b')][_0x642d('0x2b')]);_0x1d2f00['query']=_['keys'](_0x989248[_0x642d('0x2f')]);_0x1d2f00[_0x642d('0x31')]=_[_0x642d('0x32')](_0x1d2f00['model'],_0x1d2f00[_0x642d('0x2f')]);_0x5086c6[_0x642d('0x33')]=_[_0x642d('0x32')](_0x1d2f00['model'],qs[_0x642d('0x34')](_0x989248[_0x642d('0x2f')][_0x642d('0x34')]));_0x5086c6[_0x642d('0x33')]=_0x5086c6[_0x642d('0x33')][_0x642d('0x44')]?_0x5086c6['attributes']:_0x1d2f00['model'];_0x5086c6[_0x642d('0x36')]=qs['sort'](_0x989248['query']['sort']);_0x5086c6['where']=qs[_0x642d('0x31')](_[_0x642d('0x38')](_0x989248[_0x642d('0x2f')],_0x1d2f00[_0x642d('0x31')]));if(_0x989248[_0x642d('0x2f')][_0x642d('0x39')]){_0x5086c6['where']=_[_0x642d('0x3b')](_0x5086c6['where'],{'$or':_[_0x642d('0x29')](_0x5086c6[_0x642d('0x33')],function(_0x16d8c3){var _0x56597f={};_0x56597f[_0x16d8c3]={'$like':'%'+_0x989248[_0x642d('0x2f')][_0x642d('0x39')]+'%'};return _0x56597f;})});}_0x5086c6=_[_0x642d('0x3b')]({},_0x5086c6,_0x989248[_0x642d('0x3d')]);return _0x1bd138[_0x642d('0x4f')](_0x5086c6);}})['then'](function(_0x4c6a5e){if(_0x4c6a5e){_0x34124f=_0x4c6a5e['length'];if(!_0x989248['query'][_0x642d('0x4d')](_0x642d('0x35'))){_0x5086c6[_0x642d('0x1d')]=qs['limit'](_0x989248[_0x642d('0x2f')][_0x642d('0x1d')]);_0x5086c6[_0x642d('0x1a')]=qs[_0x642d('0x1a')](_0x989248[_0x642d('0x2f')]['offset']);}return _0x1bd138[_0x642d('0x4f')](_0x5086c6);}})['then'](function(_0x1be13f){if(_0x1be13f){return _0x1be13f?{'count':_0x34124f,'rows':_0x1be13f}:null;}})[_0x642d('0x22')](respondWithResult(_0x298772,null))['catch'](handleError(_0x298772,null));};
\ No newline at end of file
index 9b9daa6..1d76131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa87d=['moment','bluebird','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration','lodash','util','../../config/logger'];(function(_0x3ba5cb,_0x496e4a){var _0x4d31a6=function(_0x19ac0b){while(--_0x19ac0b){_0x3ba5cb['push'](_0x3ba5cb['shift']());}};_0x4d31a6(++_0x496e4a);}(_0xa87d,0x197));var _0xda87=function(_0x28a83c,_0x180fc5){_0x28a83c=_0x28a83c-0x0;var _0x53c01c=_0xa87d[_0x28a83c];return _0x53c01c;};'use strict';var _=require(_0xda87('0x0'));var util=require(_0xda87('0x1'));var logger=require(_0xda87('0x2'))('api');var moment=require(_0xda87('0x3'));var BPromise=require(_0xda87('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xda87('0x5'));var config=require(_0xda87('0x6'));var attributes=require(_0xda87('0x7'));module['exports']=function(_0x16d8b6,_0x31b5e8){return _0x16d8b6[_0xda87('0x8')](_0xda87('0x9'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xafb5=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration'];(function(_0x4ab676,_0x136999){var _0x51f607=function(_0xe10db5){while(--_0xe10db5){_0x4ab676['push'](_0x4ab676['shift']());}};_0x51f607(++_0x136999);}(_0xafb5,0x1a0));var _0x5afb=function(_0x495d2c,_0x317ee1){_0x495d2c=_0x495d2c-0x0;var _0x1c25a6=_0xafb5[_0x495d2c];return _0x1c25a6;};'use strict';var _=require(_0x5afb('0x0'));var util=require(_0x5afb('0x1'));var logger=require(_0x5afb('0x2'))(_0x5afb('0x3'));var moment=require('moment');var BPromise=require(_0x5afb('0x4'));var rp=require(_0x5afb('0x5'));var fs=require('fs');var path=require(_0x5afb('0x6'));var rimraf=require(_0x5afb('0x7'));var config=require(_0x5afb('0x8'));var attributes=require(_0x5afb('0x9'));module[_0x5afb('0xa')]=function(_0x3ffad1,_0x4755c2){return _0x3ffad1[_0x5afb('0xb')](_0x5afb('0xc'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 54b138c..fa6a662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3f2=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x500462,_0x476ff3){var _0x56f775=function(_0x58988a){while(--_0x58988a){_0x500462['push'](_0x500462['shift']());}};_0x56f775(++_0x476ff3);}(_0xd3f2,0x182));var _0x2d3f=function(_0x3cac8c,_0x33413e){_0x3cac8c=_0x3cac8c-0x0;var _0x2dd9a8=_0xd3f2[_0x3cac8c];return _0x2dd9a8;};'use strict';var _=require('lodash');var util=require(_0x2d3f('0x0'));var moment=require(_0x2d3f('0x1'));var BPromise=require(_0x2d3f('0x2'));var rs=require(_0x2d3f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d3f('0x4'))['db'];var utils=require(_0x2d3f('0x5'));var logger=require(_0x2d3f('0x6'))(_0x2d3f('0x7'));var config=require(_0x2d3f('0x8'));var jayson=require(_0x2d3f('0x9'));var client=jayson[_0x2d3f('0xa')][_0x2d3f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48c549,_0x1cfa7e,_0x155670){return new BPromise(function(_0x590665,_0x4c9295){return client['request'](_0x48c549,_0x155670)['then'](function(_0x4e2a58){logger[_0x2d3f('0xc')](_0x2d3f('0xd'),_0x1cfa7e,_0x2d3f('0xe'));logger[_0x2d3f('0xf')](_0x2d3f('0x10'),_0x1cfa7e,_0x2d3f('0xe'),JSON[_0x2d3f('0x11')](_0x4e2a58));if(_0x4e2a58[_0x2d3f('0x12')]){if(_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x13')]===0x1f4){logger['error'](_0x2d3f('0xd'),_0x1cfa7e,_0x4e2a58['error'][_0x2d3f('0x14')]);return _0x4c9295(_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x14')]);}logger[_0x2d3f('0x12')](_0x2d3f('0xd'),_0x1cfa7e,_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x14')]);return _0x590665(_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x14')]);}else{logger[_0x2d3f('0xc')](_0x2d3f('0xd'),_0x1cfa7e,_0x2d3f('0xe'));_0x590665(_0x4e2a58[_0x2d3f('0x15')][_0x2d3f('0x14')]);}})[_0x2d3f('0x16')](function(_0x5e9ab3){logger[_0x2d3f('0x12')](_0x2d3f('0xd'),_0x1cfa7e,_0x5e9ab3);_0x4c9295(_0x5e9ab3);});});}
\ No newline at end of file
+var _0x0a99=['FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4b4567,_0xf57538){var _0x3be3a4=function(_0x5a05c4){while(--_0x5a05c4){_0x4b4567['push'](_0x4b4567['shift']());}};_0x3be3a4(++_0xf57538);}(_0x0a99,0x182));var _0x90a9=function(_0x4cf577,_0x3488aa){_0x4cf577=_0x4cf577-0x0;var _0x13bd29=_0x0a99[_0x4cf577];return _0x13bd29;};'use strict';var _=require('lodash');var util=require(_0x90a9('0x0'));var moment=require(_0x90a9('0x1'));var BPromise=require(_0x90a9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x90a9('0x3'))['db'];var utils=require(_0x90a9('0x4'));var logger=require(_0x90a9('0x5'))(_0x90a9('0x6'));var config=require('../../config/environment');var jayson=require(_0x90a9('0x7'));var client=jayson['client'][_0x90a9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5be5a6,_0x300f11,_0x44e426){return new BPromise(function(_0x1535e8,_0x392033){return client[_0x90a9('0x9')](_0x5be5a6,_0x44e426)['then'](function(_0x93e489){logger[_0x90a9('0xa')](_0x90a9('0xb'),_0x300f11,_0x90a9('0xc'));logger[_0x90a9('0xd')](_0x90a9('0xe'),_0x300f11,'request\x20sent',JSON[_0x90a9('0xf')](_0x93e489));if(_0x93e489[_0x90a9('0x10')]){if(_0x93e489[_0x90a9('0x10')]['code']===0x1f4){logger[_0x90a9('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x300f11,_0x93e489['error'][_0x90a9('0x11')]);return _0x392033(_0x93e489['error'][_0x90a9('0x11')]);}logger['error'](_0x90a9('0xb'),_0x300f11,_0x93e489[_0x90a9('0x10')]['message']);return _0x1535e8(_0x93e489['error'][_0x90a9('0x11')]);}else{logger[_0x90a9('0xa')](_0x90a9('0xb'),_0x300f11,_0x90a9('0xc'));_0x1535e8(_0x93e489[_0x90a9('0x12')][_0x90a9('0x11')]);}})[_0x90a9('0x13')](function(_0x2249eb){logger[_0x90a9('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x300f11,_0x2249eb);_0x392033(_0x2249eb);});});}
\ No newline at end of file
index d1391a2..6e8ee1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2621=['/:id','show','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index'];(function(_0x3d55a4,_0x57d61b){var _0x38c5c4=function(_0x1e0daa){while(--_0x1e0daa){_0x3d55a4['push'](_0x3d55a4['shift']());}};_0x38c5c4(++_0x57d61b);}(_0x2621,0x1d2));var _0x1262=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2621[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x1262('0x0'));var util=require(_0x1262('0x1'));var path=require(_0x1262('0x2'));var timeout=require(_0x1262('0x3'));var express=require(_0x1262('0x4'));var router=express[_0x1262('0x5')]();var fs_extra=require(_0x1262('0x6'));var auth=require(_0x1262('0x7'));var interaction=require(_0x1262('0x8'));var config=require(_0x1262('0x9'));var controller=require(_0x1262('0xa'));router[_0x1262('0xb')]('/',auth[_0x1262('0xc')](),controller[_0x1262('0xd')]);router['get'](_0x1262('0xe'),auth['isAuthenticated'](),controller[_0x1262('0xf')]);router['post']('/',auth[_0x1262('0xc')](),controller[_0x1262('0x10')]);router[_0x1262('0x11')]('/:id',auth[_0x1262('0xc')](),controller['update']);router[_0x1262('0x12')](_0x1262('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x1262('0x13')]=router;
\ No newline at end of file
+var _0xfa7c=['create','put','update','delete','/:id','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post'];(function(_0x54d164,_0x3be5ba){var _0xf58243=function(_0x58faf5){while(--_0x58faf5){_0x54d164['push'](_0x54d164['shift']());}};_0xf58243(++_0x3be5ba);}(_0xfa7c,0x15b));var _0xcfa7=function(_0x499ff4,_0x56a20f){_0x499ff4=_0x499ff4-0x0;var _0x8ec104=_0xfa7c[_0x499ff4];return _0x8ec104;};'use strict';var multer=require(_0xcfa7('0x0'));var util=require('util');var path=require(_0xcfa7('0x1'));var timeout=require(_0xcfa7('0x2'));var express=require(_0xcfa7('0x3'));var router=express[_0xcfa7('0x4')]();var fs_extra=require(_0xcfa7('0x5'));var auth=require(_0xcfa7('0x6'));var interaction=require(_0xcfa7('0x7'));var config=require(_0xcfa7('0x8'));var controller=require('./intFreshsalesField.controller');router[_0xcfa7('0x9')]('/',auth[_0xcfa7('0xa')](),controller[_0xcfa7('0xb')]);router[_0xcfa7('0x9')]('/:id',auth[_0xcfa7('0xa')](),controller[_0xcfa7('0xc')]);router[_0xcfa7('0xd')]('/',auth[_0xcfa7('0xa')](),controller[_0xcfa7('0xe')]);router[_0xcfa7('0xf')]('/:id',auth[_0xcfa7('0xa')](),controller[_0xcfa7('0x10')]);router[_0xcfa7('0x11')](_0xcfa7('0x12'),auth[_0xcfa7('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 32a338a..08e6a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cf7=['customVariable','STRING','BOOLEAN','sequelize','exports','string','variable'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x8cf7,0x137));var _0x78cf=function(_0x473ba9,_0x50dd88){_0x473ba9=_0x473ba9-0x0;var _0x3d3255=_0x8cf7[_0x473ba9];return _0x3d3255;};'use strict';var Sequelize=require(_0x78cf('0x0'));module[_0x78cf('0x1')]={'type':{'type':Sequelize['ENUM'](_0x78cf('0x2'),_0x78cf('0x3'),_0x78cf('0x4'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x78cf('0x5')]},'key':{'type':Sequelize[_0x78cf('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x78cf('0x2'),_0x78cf('0x3'),_0x78cf('0x4'))},'keyContent':{'type':Sequelize[_0x78cf('0x5')]},'idField':{'type':Sequelize[_0x78cf('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x78cf('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x78cf('0x5')]}};
\ No newline at end of file
+var _0xb99e=['ENUM','sequelize','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0xf544f3,_0x5d7650){var _0x480b97=function(_0x33316f){while(--_0x33316f){_0xf544f3['push'](_0xf544f3['shift']());}};_0x480b97(++_0x5d7650);}(_0xb99e,0x119));var _0xeb99=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xb99e[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0xeb99('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xeb99('0x1'),_0xeb99('0x2'),_0xeb99('0x3'),_0xeb99('0x4'),_0xeb99('0x5')),'defaultValue':_0xeb99('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xeb99('0x6')]},'keyType':{'type':Sequelize[_0xeb99('0x7')](_0xeb99('0x1'),_0xeb99('0x2'),_0xeb99('0x3'))},'keyContent':{'type':Sequelize[_0xeb99('0x6')]},'idField':{'type':Sequelize[_0xeb99('0x6')]},'nameField':{'type':Sequelize[_0xeb99('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 85ceb25..6ca4d53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cdb=['../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','name','FreshsalesField','rawAttributes','fieldName','type','model','map','query','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','findAll','show','keys','includeAll','include','find','catch','create','body','params','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1cdb,0x1cf));var _0xb1cd=function(_0x277dd3,_0x402364){_0x277dd3=_0x277dd3-0x0;var _0xea7c73=_0x1cdb[_0x277dd3];return _0xea7c73;};'use strict';var emlformat=require(_0xb1cd('0x0'));var rimraf=require(_0xb1cd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb1cd('0x2'));var moment=require(_0xb1cd('0x3'));var BPromise=require(_0xb1cd('0x4'));var Mustache=require(_0xb1cd('0x5'));var util=require('util');var path=require(_0xb1cd('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb1cd('0x7'));var fs=require('fs');var fs_extra=require(_0xb1cd('0x8'));var _=require(_0xb1cd('0x9'));var squel=require(_0xb1cd('0xa'));var crypto=require('crypto');var jsforce=require(_0xb1cd('0xb'));var deskjs=require(_0xb1cd('0xc'));var toCsv=require(_0xb1cd('0xd'));var querystring=require(_0xb1cd('0xe'));var Papa=require(_0xb1cd('0xf'));var Redis=require('ioredis');var authService=require(_0xb1cd('0x10'));var qs=require(_0xb1cd('0x11'));var as=require(_0xb1cd('0x12'));var hardwareService=require(_0xb1cd('0x13'));var logger=require(_0xb1cd('0x14'))(_0xb1cd('0x15'));var utils=require('../../config/utils');var config=require(_0xb1cd('0x16'));var licenseUtil=require(_0xb1cd('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x106984,_0x5a768c){_0x5a768c=_0x5a768c||0xcc;return function(_0x27725f){if(_0x27725f){return _0x106984[_0xb1cd('0x18')](_0x5a768c);}return _0x106984[_0xb1cd('0x19')](_0x5a768c)[_0xb1cd('0x1a')]();};}function respondWithResult(_0x394ece,_0x473754){_0x473754=_0x473754||0xc8;return function(_0x1d5f57){if(_0x1d5f57){return _0x394ece['status'](_0x473754)[_0xb1cd('0x1b')](_0x1d5f57);}};}function respondWithFilteredResult(_0x2be995,_0x38a663){return function(_0x213194){if(_0x213194){var _0xd79a09=typeof _0x38a663[_0xb1cd('0x1c')]==='undefined'&&typeof _0x38a663[_0xb1cd('0x1d')]==='undefined';var _0x59bfc3=_0x213194[_0xb1cd('0x1e')];var _0x4a1805=_0xd79a09?0x0:_0x38a663[_0xb1cd('0x1c')];var _0x81c5c4=_0xd79a09?_0x213194[_0xb1cd('0x1e')]:_0x38a663[_0xb1cd('0x1c')]+_0x38a663[_0xb1cd('0x1d')];var _0xd9ad21;if(_0x81c5c4>=_0x59bfc3){_0x81c5c4=_0x59bfc3;_0xd9ad21=0xc8;}else{_0xd9ad21=0xce;}_0x2be995['status'](_0xd9ad21);return _0x2be995[_0xb1cd('0x1f')](_0xb1cd('0x20'),_0x4a1805+'-'+_0x81c5c4+'/'+_0x59bfc3)[_0xb1cd('0x1b')](_0x213194);}return null;};}function patchUpdates(_0x2c73f1){return function(_0x15998e){try{jsonpatch['apply'](_0x15998e,_0x2c73f1,!![]);}catch(_0x51cc6a){return BPromise[_0xb1cd('0x21')](_0x51cc6a);}return _0x15998e[_0xb1cd('0x22')]();};}function saveUpdates(_0x19ed06,_0x3b7185){return function(_0x56361c){if(_0x56361c){return _0x56361c[_0xb1cd('0x23')](_0x19ed06)[_0xb1cd('0x24')](function(_0xd9362f){return _0xd9362f;});}return null;};}function removeEntity(_0x15ab11,_0x3f0905){return function(_0x3d052e){if(_0x3d052e){return _0x3d052e[_0xb1cd('0x25')]()[_0xb1cd('0x24')](function(){_0x15ab11[_0xb1cd('0x19')](0xcc)[_0xb1cd('0x1a')]();});}};}function handleEntityNotFound(_0x4139d8,_0x2e79f3){return function(_0x3f7bfb){if(!_0x3f7bfb){_0x4139d8[_0xb1cd('0x18')](0x194);}return _0x3f7bfb;};}function handleError(_0xb65449,_0x55cd4a){_0x55cd4a=_0x55cd4a||0x1f4;return function(_0x30674d){logger['error'](_0x30674d['stack']);if(_0x30674d[_0xb1cd('0x26')]){delete _0x30674d[_0xb1cd('0x26')];}_0xb65449[_0xb1cd('0x19')](_0x55cd4a)['send'](_0x30674d);};}exports['index']=function(_0x1f21e8,_0x2871ca){var _0x56ca52={},_0x273953={},_0x30aaf2={'count':0x0,'rows':[]};var _0x31d802=_['map'](db[_0xb1cd('0x27')][_0xb1cd('0x28')],function(_0x152d83){return{'name':_0x152d83[_0xb1cd('0x29')],'type':_0x152d83[_0xb1cd('0x2a')]['key']};});_0x273953[_0xb1cd('0x2b')]=_[_0xb1cd('0x2c')](_0x31d802,'name');_0x273953[_0xb1cd('0x2d')]=_['keys'](_0x1f21e8[_0xb1cd('0x2d')]);_0x273953[_0xb1cd('0x2e')]=_[_0xb1cd('0x2f')](_0x273953['model'],_0x273953[_0xb1cd('0x2d')]);_0x56ca52['attributes']=_['intersection'](_0x273953['model'],qs[_0xb1cd('0x30')](_0x1f21e8[_0xb1cd('0x2d')]['fields']));_0x56ca52[_0xb1cd('0x31')]=_0x56ca52[_0xb1cd('0x31')]['length']?_0x56ca52[_0xb1cd('0x31')]:_0x273953[_0xb1cd('0x2b')];if(!_0x1f21e8[_0xb1cd('0x2d')]['hasOwnProperty'](_0xb1cd('0x32'))){_0x56ca52['limit']=qs[_0xb1cd('0x1d')](_0x1f21e8[_0xb1cd('0x2d')][_0xb1cd('0x1d')]);_0x56ca52[_0xb1cd('0x1c')]=qs['offset'](_0x1f21e8[_0xb1cd('0x2d')][_0xb1cd('0x1c')]);}_0x56ca52[_0xb1cd('0x33')]=qs['sort'](_0x1f21e8[_0xb1cd('0x2d')][_0xb1cd('0x34')]);_0x56ca52['where']=qs[_0xb1cd('0x2e')](_[_0xb1cd('0x35')](_0x1f21e8[_0xb1cd('0x2d')],_0x273953['filters']),_0x31d802);if(_0x1f21e8['query'][_0xb1cd('0x36')]){_0x56ca52['where']=_['merge'](_0x56ca52[_0xb1cd('0x37')],{'$or':_['map'](_0x31d802,function(_0x3bef6d){if(_0x3bef6d[_0xb1cd('0x2a')]!==_0xb1cd('0x38')){var _0x97f0f1={};_0x97f0f1[_0x3bef6d[_0xb1cd('0x26')]]={'$like':'%'+_0x1f21e8['query'][_0xb1cd('0x36')]+'%'};return _0x97f0f1;}})});}_0x56ca52=_[_0xb1cd('0x39')]({},_0x56ca52,_0x1f21e8[_0xb1cd('0x3a')]);var _0x3a2cdb={'where':_0x56ca52['where']};return db[_0xb1cd('0x27')][_0xb1cd('0x1e')](_0x3a2cdb)[_0xb1cd('0x24')](function(_0x2156e9){_0x30aaf2[_0xb1cd('0x1e')]=_0x2156e9;if(_0x1f21e8['query']['includeAll']){_0x56ca52['include']=[{'all':!![]}];}return db['FreshsalesField'][_0xb1cd('0x3b')](_0x56ca52);})[_0xb1cd('0x24')](function(_0x167d26){_0x30aaf2['rows']=_0x167d26;return _0x30aaf2;})[_0xb1cd('0x24')](respondWithFilteredResult(_0x2871ca,_0x56ca52))['catch'](handleError(_0x2871ca,null));};exports[_0xb1cd('0x3c')]=function(_0x3003bc,_0x1f8b80){var _0x488cd7={'raw':!![],'where':{'id':_0x3003bc['params']['id']}},_0x51c598={};_0x51c598['model']=_[_0xb1cd('0x3d')](db[_0xb1cd('0x27')][_0xb1cd('0x28')]);_0x51c598['query']=_[_0xb1cd('0x3d')](_0x3003bc['query']);_0x51c598[_0xb1cd('0x2e')]=_[_0xb1cd('0x2f')](_0x51c598['model'],_0x51c598[_0xb1cd('0x2d')]);_0x488cd7[_0xb1cd('0x31')]=_[_0xb1cd('0x2f')](_0x51c598['model'],qs['fields'](_0x3003bc['query']['fields']));_0x488cd7[_0xb1cd('0x31')]=_0x488cd7[_0xb1cd('0x31')]['length']?_0x488cd7[_0xb1cd('0x31')]:_0x51c598[_0xb1cd('0x2b')];if(_0x3003bc[_0xb1cd('0x2d')][_0xb1cd('0x3e')]){_0x488cd7[_0xb1cd('0x3f')]=[{'all':!![]}];}_0x488cd7=_[_0xb1cd('0x39')]({},_0x488cd7,_0x3003bc[_0xb1cd('0x3a')]);return db[_0xb1cd('0x27')][_0xb1cd('0x40')](_0x488cd7)[_0xb1cd('0x24')](handleEntityNotFound(_0x1f8b80,null))[_0xb1cd('0x24')](respondWithResult(_0x1f8b80,null))[_0xb1cd('0x41')](handleError(_0x1f8b80,null));};exports[_0xb1cd('0x42')]=function(_0x200800,_0x560c34){return db[_0xb1cd('0x27')][_0xb1cd('0x42')](_0x200800['body'],{})['then'](respondWithResult(_0x560c34,0xc9))['catch'](handleError(_0x560c34,null));};exports[_0xb1cd('0x23')]=function(_0x3d8408,_0x25c2f2){if(_0x3d8408[_0xb1cd('0x43')]['id']){delete _0x3d8408[_0xb1cd('0x43')]['id'];}return db[_0xb1cd('0x27')]['find']({'where':{'id':_0x3d8408[_0xb1cd('0x44')]['id']}})[_0xb1cd('0x24')](handleEntityNotFound(_0x25c2f2,null))[_0xb1cd('0x24')](saveUpdates(_0x3d8408[_0xb1cd('0x43')],null))[_0xb1cd('0x24')](respondWithResult(_0x25c2f2,null))[_0xb1cd('0x41')](handleError(_0x25c2f2,null));};exports['destroy']=function(_0x393ef9,_0x3a70b3){return db[_0xb1cd('0x27')][_0xb1cd('0x40')]({'where':{'id':_0x393ef9[_0xb1cd('0x44')]['id']}})[_0xb1cd('0x24')](handleEntityNotFound(_0x3a70b3,null))[_0xb1cd('0x24')](removeEntity(_0x3a70b3,null))[_0xb1cd('0x41')](handleError(_0x3a70b3,null));};
\ No newline at end of file
+var _0xae98=['status','end','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','FreshsalesField','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','count','include','findAll','rows','catch','show','includeAll','find','create','body','params','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x34b6f2,_0xd9b4e4){var _0x3eb885=function(_0x4657a0){while(--_0x4657a0){_0x34b6f2['push'](_0x34b6f2['shift']());}};_0x3eb885(++_0xd9b4e4);}(_0xae98,0xc4));var _0x8ae9=function(_0x45aaae,_0xaecc5){_0x45aaae=_0x45aaae-0x0;var _0x57434c=_0xae98[_0x45aaae];return _0x57434c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8ae9('0x0'));var jsonpatch=require(_0x8ae9('0x1'));var rp=require(_0x8ae9('0x2'));var moment=require(_0x8ae9('0x3'));var BPromise=require(_0x8ae9('0x4'));var Mustache=require(_0x8ae9('0x5'));var util=require(_0x8ae9('0x6'));var path=require(_0x8ae9('0x7'));var sox=require('sox');var csv=require(_0x8ae9('0x8'));var ejs=require(_0x8ae9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ae9('0xa'));var squel=require(_0x8ae9('0xb'));var crypto=require(_0x8ae9('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8ae9('0x8'));var querystring=require(_0x8ae9('0xd'));var Papa=require(_0x8ae9('0xe'));var Redis=require(_0x8ae9('0xf'));var authService=require(_0x8ae9('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8ae9('0x11'));var hardwareService=require(_0x8ae9('0x12'));var logger=require(_0x8ae9('0x13'))(_0x8ae9('0x14'));var utils=require(_0x8ae9('0x15'));var config=require(_0x8ae9('0x16'));var licenseUtil=require(_0x8ae9('0x17'));var db=require(_0x8ae9('0x18'))['db'];function respondWithStatusCode(_0x1a85ae,_0x3c885f){_0x3c885f=_0x3c885f||0xcc;return function(_0x1b0e52){if(_0x1b0e52){return _0x1a85ae[_0x8ae9('0x19')](_0x3c885f);}return _0x1a85ae[_0x8ae9('0x1a')](_0x3c885f)[_0x8ae9('0x1b')]();};}function respondWithResult(_0x277172,_0x5f1a77){_0x5f1a77=_0x5f1a77||0xc8;return function(_0x486627){if(_0x486627){return _0x277172['status'](_0x5f1a77)['json'](_0x486627);}};}function respondWithFilteredResult(_0x2983c2,_0x125bda){return function(_0x33051c){if(_0x33051c){var _0x3a2c44=typeof _0x125bda[_0x8ae9('0x1c')]===_0x8ae9('0x1d')&&typeof _0x125bda['limit']===_0x8ae9('0x1d');var _0x3d31f3=_0x33051c['count'];var _0x37832b=_0x3a2c44?0x0:_0x125bda[_0x8ae9('0x1c')];var _0x43765e=_0x3a2c44?_0x33051c['count']:_0x125bda[_0x8ae9('0x1c')]+_0x125bda[_0x8ae9('0x1e')];var _0x800330;if(_0x43765e>=_0x3d31f3){_0x43765e=_0x3d31f3;_0x800330=0xc8;}else{_0x800330=0xce;}_0x2983c2[_0x8ae9('0x1a')](_0x800330);return _0x2983c2[_0x8ae9('0x1f')](_0x8ae9('0x20'),_0x37832b+'-'+_0x43765e+'/'+_0x3d31f3)['json'](_0x33051c);}return null;};}function patchUpdates(_0x164cab){return function(_0x25df91){try{jsonpatch[_0x8ae9('0x21')](_0x25df91,_0x164cab,!![]);}catch(_0x4cd4e1){return BPromise[_0x8ae9('0x22')](_0x4cd4e1);}return _0x25df91[_0x8ae9('0x23')]();};}function saveUpdates(_0x3b82c5,_0x1dd4f9){return function(_0x2f493a){if(_0x2f493a){return _0x2f493a[_0x8ae9('0x24')](_0x3b82c5)[_0x8ae9('0x25')](function(_0xe4817c){return _0xe4817c;});}return null;};}function removeEntity(_0x459bcd,_0x6ce8e){return function(_0x4d7c96){if(_0x4d7c96){return _0x4d7c96[_0x8ae9('0x26')]()[_0x8ae9('0x25')](function(){_0x459bcd[_0x8ae9('0x1a')](0xcc)[_0x8ae9('0x1b')]();});}};}function handleEntityNotFound(_0x5a3b08,_0x48a43d){return function(_0x17273a){if(!_0x17273a){_0x5a3b08[_0x8ae9('0x19')](0x194);}return _0x17273a;};}function handleError(_0x3579f3,_0x2b1a54){_0x2b1a54=_0x2b1a54||0x1f4;return function(_0x24ffc3){logger[_0x8ae9('0x27')](_0x24ffc3[_0x8ae9('0x28')]);if(_0x24ffc3[_0x8ae9('0x29')]){delete _0x24ffc3[_0x8ae9('0x29')];}_0x3579f3[_0x8ae9('0x1a')](_0x2b1a54)['send'](_0x24ffc3);};}exports[_0x8ae9('0x2a')]=function(_0x107ea6,_0x4f6ab0){var _0x37890c={},_0x13efd6={},_0x25a11b={'count':0x0,'rows':[]};var _0xb4b9b3=_[_0x8ae9('0x2b')](db[_0x8ae9('0x2c')][_0x8ae9('0x2d')],function(_0x3fe0dd){return{'name':_0x3fe0dd['fieldName'],'type':_0x3fe0dd[_0x8ae9('0x2e')]['key']};});_0x13efd6[_0x8ae9('0x2f')]=_[_0x8ae9('0x2b')](_0xb4b9b3,_0x8ae9('0x29'));_0x13efd6[_0x8ae9('0x30')]=_[_0x8ae9('0x31')](_0x107ea6[_0x8ae9('0x30')]);_0x13efd6[_0x8ae9('0x32')]=_[_0x8ae9('0x33')](_0x13efd6[_0x8ae9('0x2f')],_0x13efd6['query']);_0x37890c[_0x8ae9('0x34')]=_[_0x8ae9('0x33')](_0x13efd6['model'],qs[_0x8ae9('0x35')](_0x107ea6[_0x8ae9('0x30')]['fields']));_0x37890c[_0x8ae9('0x34')]=_0x37890c[_0x8ae9('0x34')][_0x8ae9('0x36')]?_0x37890c[_0x8ae9('0x34')]:_0x13efd6[_0x8ae9('0x2f')];if(!_0x107ea6[_0x8ae9('0x30')]['hasOwnProperty'](_0x8ae9('0x37'))){_0x37890c[_0x8ae9('0x1e')]=qs[_0x8ae9('0x1e')](_0x107ea6[_0x8ae9('0x30')][_0x8ae9('0x1e')]);_0x37890c[_0x8ae9('0x1c')]=qs[_0x8ae9('0x1c')](_0x107ea6[_0x8ae9('0x30')][_0x8ae9('0x1c')]);}_0x37890c['order']=qs[_0x8ae9('0x38')](_0x107ea6['query'][_0x8ae9('0x38')]);_0x37890c[_0x8ae9('0x39')]=qs[_0x8ae9('0x32')](_[_0x8ae9('0x3a')](_0x107ea6[_0x8ae9('0x30')],_0x13efd6[_0x8ae9('0x32')]),_0xb4b9b3);if(_0x107ea6['query'][_0x8ae9('0x3b')]){_0x37890c[_0x8ae9('0x39')]=_[_0x8ae9('0x3c')](_0x37890c[_0x8ae9('0x39')],{'$or':_[_0x8ae9('0x2b')](_0xb4b9b3,function(_0x4b20e){if(_0x4b20e['type']!==_0x8ae9('0x3d')){var _0x5daedf={};_0x5daedf[_0x4b20e[_0x8ae9('0x29')]]={'$like':'%'+_0x107ea6[_0x8ae9('0x30')][_0x8ae9('0x3b')]+'%'};return _0x5daedf;}})});}_0x37890c=_[_0x8ae9('0x3c')]({},_0x37890c,_0x107ea6[_0x8ae9('0x3e')]);var _0x4367c4={'where':_0x37890c[_0x8ae9('0x39')]};return db['FreshsalesField'][_0x8ae9('0x3f')](_0x4367c4)[_0x8ae9('0x25')](function(_0x59007c){_0x25a11b[_0x8ae9('0x3f')]=_0x59007c;if(_0x107ea6[_0x8ae9('0x30')]['includeAll']){_0x37890c[_0x8ae9('0x40')]=[{'all':!![]}];}return db[_0x8ae9('0x2c')][_0x8ae9('0x41')](_0x37890c);})['then'](function(_0x7b9f1f){_0x25a11b[_0x8ae9('0x42')]=_0x7b9f1f;return _0x25a11b;})[_0x8ae9('0x25')](respondWithFilteredResult(_0x4f6ab0,_0x37890c))[_0x8ae9('0x43')](handleError(_0x4f6ab0,null));};exports[_0x8ae9('0x44')]=function(_0x5ce68b,_0x2fb3ff){var _0x3a4324={'raw':!![],'where':{'id':_0x5ce68b['params']['id']}},_0x296e6e={};_0x296e6e[_0x8ae9('0x2f')]=_[_0x8ae9('0x31')](db['FreshsalesField'][_0x8ae9('0x2d')]);_0x296e6e[_0x8ae9('0x30')]=_[_0x8ae9('0x31')](_0x5ce68b[_0x8ae9('0x30')]);_0x296e6e['filters']=_[_0x8ae9('0x33')](_0x296e6e[_0x8ae9('0x2f')],_0x296e6e['query']);_0x3a4324[_0x8ae9('0x34')]=_[_0x8ae9('0x33')](_0x296e6e[_0x8ae9('0x2f')],qs[_0x8ae9('0x35')](_0x5ce68b[_0x8ae9('0x30')][_0x8ae9('0x35')]));_0x3a4324[_0x8ae9('0x34')]=_0x3a4324[_0x8ae9('0x34')][_0x8ae9('0x36')]?_0x3a4324[_0x8ae9('0x34')]:_0x296e6e[_0x8ae9('0x2f')];if(_0x5ce68b[_0x8ae9('0x30')][_0x8ae9('0x45')]){_0x3a4324['include']=[{'all':!![]}];}_0x3a4324=_['merge']({},_0x3a4324,_0x5ce68b[_0x8ae9('0x3e')]);return db[_0x8ae9('0x2c')][_0x8ae9('0x46')](_0x3a4324)['then'](handleEntityNotFound(_0x2fb3ff,null))['then'](respondWithResult(_0x2fb3ff,null))[_0x8ae9('0x43')](handleError(_0x2fb3ff,null));};exports['create']=function(_0x48f2b6,_0xfba381){return db['FreshsalesField'][_0x8ae9('0x47')](_0x48f2b6[_0x8ae9('0x48')],{})[_0x8ae9('0x25')](respondWithResult(_0xfba381,0xc9))[_0x8ae9('0x43')](handleError(_0xfba381,null));};exports[_0x8ae9('0x24')]=function(_0x425efb,_0x13fcf0){if(_0x425efb[_0x8ae9('0x48')]['id']){delete _0x425efb['body']['id'];}return db[_0x8ae9('0x2c')][_0x8ae9('0x46')]({'where':{'id':_0x425efb[_0x8ae9('0x49')]['id']}})[_0x8ae9('0x25')](handleEntityNotFound(_0x13fcf0,null))[_0x8ae9('0x25')](saveUpdates(_0x425efb[_0x8ae9('0x48')],null))['then'](respondWithResult(_0x13fcf0,null))[_0x8ae9('0x43')](handleError(_0x13fcf0,null));};exports[_0x8ae9('0x26')]=function(_0x542a54,_0x1ebf02){return db[_0x8ae9('0x2c')][_0x8ae9('0x46')]({'where':{'id':_0x542a54[_0x8ae9('0x49')]['id']}})[_0x8ae9('0x25')](handleEntityNotFound(_0x1ebf02,null))[_0x8ae9('0x25')](removeEntity(_0x1ebf02,null))[_0x8ae9('0x43')](handleError(_0x1ebf02,null));};
\ No newline at end of file
index d126b6f..7213b39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x078f=['freshsales_unique_index','idField','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields'];(function(_0x396e8c,_0x40b46f){var _0x1415c2=function(_0x4e93ee){while(--_0x4e93ee){_0x396e8c['push'](_0x396e8c['shift']());}};_0x1415c2(++_0x40b46f);}(_0x078f,0x1b4));var _0xf078=function(_0x2fd910,_0x3dc7d1){_0x2fd910=_0x2fd910-0x0;var _0xd313d4=_0x078f[_0x2fd910];return _0xd313d4;};'use strict';var _=require('lodash');var util=require(_0xf078('0x0'));var logger=require(_0xf078('0x1'))('api');var moment=require(_0xf078('0x2'));var BPromise=require(_0xf078('0x3'));var rp=require(_0xf078('0x4'));var fs=require('fs');var path=require(_0xf078('0x5'));var rimraf=require('rimraf');var config=require(_0xf078('0x6'));var attributes=require(_0xf078('0x7'));module[_0xf078('0x8')]=function(_0x44b961,_0x1fb253){return _0x44b961[_0xf078('0x9')](_0xf078('0xa'),attributes,{'tableName':_0xf078('0xb'),'paranoid':![],'indexes':[{'name':_0xf078('0xc'),'fields':[_0xf078('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c01=['exports','define','int_freshsales_fields','idField','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./intFreshsalesField.attributes'];(function(_0x4ff9ac,_0xfb171c){var _0x41643e=function(_0x3f804c){while(--_0x3f804c){_0x4ff9ac['push'](_0x4ff9ac['shift']());}};_0x41643e(++_0xfb171c);}(_0x1c01,0x190));var _0x11c0=function(_0x32f830,_0x2dfa0a){_0x32f830=_0x32f830-0x0;var _0x126fa7=_0x1c01[_0x32f830];return _0x126fa7;};'use strict';var _=require(_0x11c0('0x0'));var util=require(_0x11c0('0x1'));var logger=require(_0x11c0('0x2'))(_0x11c0('0x3'));var moment=require('moment');var BPromise=require(_0x11c0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x11c0('0x5'));var config=require(_0x11c0('0x6'));var attributes=require(_0x11c0('0x7'));module[_0x11c0('0x8')]=function(_0x38c591,_0x5190a4){return _0x38c591[_0x11c0('0x9')]('FreshsalesField',attributes,{'tableName':_0x11c0('0xa'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x11c0('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 01f3740..fca8913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x8b271e,_0x592546){var _0x4be140=function(_0x3f4c36){while(--_0x3f4c36){_0x8b271e['push'](_0x8b271e['shift']());}};_0x4be140(++_0x592546);}(_0x1261,0x144));var _0x1126=function(_0x3ed091,_0x3491d4){_0x3ed091=_0x3ed091-0x0;var _0x49f07c=_0x1261[_0x3ed091];return _0x49f07c;};'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')]('FreshsalesField,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _0xd117=['request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FreshsalesField,\x20%s,\x20%s','debug','stringify','code','error','message'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xd117,0x182));var _0x7d11=function(_0x43e4b3,_0x1444de){_0x43e4b3=_0x43e4b3-0x0;var _0x10c655=_0xd117[_0x43e4b3];return _0x10c655;};'use strict';var _=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var moment=require(_0x7d11('0x2'));var BPromise=require(_0x7d11('0x3'));var rs=require(_0x7d11('0x4'));var fs=require('fs');var Redis=require(_0x7d11('0x5'));var db=require(_0x7d11('0x6'))['db'];var utils=require(_0x7d11('0x7'));var logger=require(_0x7d11('0x8'))(_0x7d11('0x9'));var config=require(_0x7d11('0xa'));var jayson=require(_0x7d11('0xb'));var client=jayson[_0x7d11('0xc')][_0x7d11('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x345602,_0x3c8d66,_0x47b5e6){return new BPromise(function(_0x3803b5,_0xffd020){return client[_0x7d11('0xe')](_0x345602,_0x47b5e6)['then'](function(_0x305eef){logger[_0x7d11('0xf')](_0x7d11('0x10'),_0x3c8d66,'request\x20sent');logger[_0x7d11('0x11')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x3c8d66,'request\x20sent',JSON[_0x7d11('0x12')](_0x305eef));if(_0x305eef['error']){if(_0x305eef['error'][_0x7d11('0x13')]===0x1f4){logger['error'](_0x7d11('0x10'),_0x3c8d66,_0x305eef[_0x7d11('0x14')]['message']);return _0xffd020(_0x305eef[_0x7d11('0x14')][_0x7d11('0x15')]);}logger['error'](_0x7d11('0x10'),_0x3c8d66,_0x305eef[_0x7d11('0x14')][_0x7d11('0x15')]);return _0x3803b5(_0x305eef[_0x7d11('0x14')][_0x7d11('0x15')]);}else{logger[_0x7d11('0xf')](_0x7d11('0x10'),_0x3c8d66,_0x7d11('0x16'));_0x3803b5(_0x305eef['result'][_0x7d11('0x15')]);}})[_0x7d11('0x17')](function(_0x169733){logger[_0x7d11('0x14')](_0x7d11('0x10'),_0x3c8d66,_0x169733);_0xffd020(_0x169733);});});}
\ No newline at end of file
index db999c5..7fc2d55 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(_0x2adee3,_0x35300d){var _0x29c021=function(_0x47accb){while(--_0x47accb){_0x2adee3['push'](_0x2adee3['shift']());}};_0x29c021(++_0x35300d);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x183d41,_0x1aebd7){var _0x4f0939=function(_0x3e7578){while(--_0x3e7578){_0x183d41['push'](_0x183d41['shift']());}};_0x4f0939(++_0x1aebd7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index c649e93..c0adff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51f=['newTab','sequelize','exports','STRING','ENUM','integrationTab'];(function(_0x290612,_0x264e17){var _0x44aade=function(_0x3358d9){while(--_0x3358d9){_0x290612['push'](_0x290612['shift']());}};_0x44aade(++_0x264e17);}(_0xf51f,0x19f));var _0xff51=function(_0x437d7f,_0x1feb46){_0x437d7f=_0x437d7f-0x0;var _0x31058c=_0xf51f[_0x437d7f];return _0x31058c;};'use strict';var Sequelize=require(_0xff51('0x0'));module[_0xff51('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xff51('0x2')]},'username':{'type':Sequelize[_0xff51('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0xff51('0x2')]},'password':{'type':Sequelize[_0xff51('0x2')]},'clientId':{'type':Sequelize[_0xff51('0x2')]},'clientSecret':{'type':Sequelize[_0xff51('0x2')]},'securityToken':{'type':Sequelize[_0xff51('0x2')]},'serverUrl':{'type':Sequelize[_0xff51('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xff51('0x3')](_0xff51('0x4'),_0xff51('0x5')),'defaultValue':_0xff51('0x4')}};
\ No newline at end of file
+var _0x2899=['sequelize','exports','STRING','username','ENUM','integrationTab','newTab'];(function(_0xcc9b67,_0x5ccf11){var _0x23387c=function(_0x3ce3d3){while(--_0x3ce3d3){_0xcc9b67['push'](_0xcc9b67['shift']());}};_0x23387c(++_0x5ccf11);}(_0x2899,0x15e));var _0x9289=function(_0x114d61,_0x44af26){_0x114d61=_0x114d61-0x0;var _0x307a05=_0x2899[_0x114d61];return _0x307a05;};'use strict';var Sequelize=require(_0x9289('0x0'));module[_0x9289('0x1')]={'name':{'type':Sequelize[_0x9289('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x9289('0x2')],'unique':_0x9289('0x3')},'remoteUri':{'type':Sequelize[_0x9289('0x2')]},'password':{'type':Sequelize[_0x9289('0x2')]},'clientId':{'type':Sequelize[_0x9289('0x2')]},'clientSecret':{'type':Sequelize[_0x9289('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x9289('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9289('0x4')](_0x9289('0x5'),_0x9289('0x6')),'defaultValue':_0x9289('0x5')}};
\ No newline at end of file
index 362fcba..8627ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x001b=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','undefined','count','offset','set','json','reject','update','then','destroy','sendStatus','stack','name','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','keys','find','create','body','catch','getConfigurations','findOne','SalesforceConfiguration','sort','pick','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','clientId','clientSecret','password','securityToken','remoteUri','slice','lastIndexOf','username','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','textarea','phone','remove','includes','label','custom','picklistValues','value','false','test','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash','squel','crypto','to-csv','papaparse'];(function(_0x1ced8b,_0x53442e){var _0x5717ac=function(_0x56fba9){while(--_0x56fba9){_0x1ced8b['push'](_0x1ced8b['shift']());}};_0x5717ac(++_0x53442e);}(_0x001b,0x160));var _0xb001=function(_0x434ab2,_0x4dac1e){_0x434ab2=_0x434ab2-0x0;var _0x206b10=_0x001b[_0x434ab2];return _0x206b10;};'use strict';var emlformat=require(_0xb001('0x0'));var rimraf=require(_0xb001('0x1'));var zipdir=require(_0xb001('0x2'));var jsonpatch=require(_0xb001('0x3'));var rp=require(_0xb001('0x4'));var moment=require(_0xb001('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb001('0x6'));var util=require('util');var path=require('path');var sox=require(_0xb001('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb001('0x8'));var _=require(_0xb001('0x9'));var squel=require(_0xb001('0xa'));var crypto=require(_0xb001('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb001('0xc'));var querystring=require('querystring');var Papa=require(_0xb001('0xd'));var Redis=require(_0xb001('0xe'));var authService=require(_0xb001('0xf'));var qs=require(_0xb001('0x10'));var as=require(_0xb001('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb001('0x12'))(_0xb001('0x13'));var utils=require(_0xb001('0x14'));var config=require(_0xb001('0x15'));var licenseUtil=require(_0xb001('0x16'));var db=require(_0xb001('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1b8a5c,_0x421065){_0x421065=_0x421065||0xcc;return function(_0x3be03f){if(_0x3be03f){return _0x1b8a5c['sendStatus'](_0x421065);}return _0x1b8a5c['status'](_0x421065)[_0xb001('0x18')]();};}function respondWithResult(_0x5c2cec,_0x2f8e18){_0x2f8e18=_0x2f8e18||0xc8;return function(_0x42805b){if(_0x42805b){return _0x5c2cec[_0xb001('0x19')](_0x2f8e18)['json'](_0x42805b);}};}function respondWithFilteredResult(_0x57e024,_0x360294){return function(_0xe3a808){if(_0xe3a808){var _0x128d89=typeof _0x360294['offset']==='undefined'&&typeof _0x360294['limit']===_0xb001('0x1a');var _0x24eb4b=_0xe3a808[_0xb001('0x1b')];var _0x27c24=_0x128d89?0x0:_0x360294['offset'];var _0x1d1b8e=_0x128d89?_0xe3a808[_0xb001('0x1b')]:_0x360294[_0xb001('0x1c')]+_0x360294['limit'];var _0x1198ae;if(_0x1d1b8e>=_0x24eb4b){_0x1d1b8e=_0x24eb4b;_0x1198ae=0xc8;}else{_0x1198ae=0xce;}_0x57e024['status'](_0x1198ae);return _0x57e024[_0xb001('0x1d')]('Content-Range',_0x27c24+'-'+_0x1d1b8e+'/'+_0x24eb4b)[_0xb001('0x1e')](_0xe3a808);}return null;};}function patchUpdates(_0x1ee3fb){return function(_0x573696){try{jsonpatch['apply'](_0x573696,_0x1ee3fb,!![]);}catch(_0x524fff){return BPromise[_0xb001('0x1f')](_0x524fff);}return _0x573696['save']();};}function saveUpdates(_0x23b289,_0x27899c){return function(_0x58b813){if(_0x58b813){return _0x58b813[_0xb001('0x20')](_0x23b289)[_0xb001('0x21')](function(_0x4b6f65){return _0x4b6f65;});}return null;};}function removeEntity(_0x284f93,_0x1e7b17){return function(_0x2fcfb9){if(_0x2fcfb9){return _0x2fcfb9[_0xb001('0x22')]()[_0xb001('0x21')](function(){_0x284f93[_0xb001('0x19')](0xcc)[_0xb001('0x18')]();});}};}function handleEntityNotFound(_0x104309,_0x305c43){return function(_0x173543){if(!_0x173543){_0x104309[_0xb001('0x23')](0x194);}return _0x173543;};}function handleError(_0x81bfe,_0x55ec4f){_0x55ec4f=_0x55ec4f||0x1f4;return function(_0x8bba06){logger['error'](_0x8bba06[_0xb001('0x24')]);if(_0x8bba06[_0xb001('0x25')]){delete _0x8bba06[_0xb001('0x25')];}_0x81bfe[_0xb001('0x19')](_0x55ec4f)['send'](_0x8bba06);};}exports[_0xb001('0x26')]=function(_0x277536,_0x6cba11){var _0x510646={},_0xc6fded={},_0x2cc575={'count':0x0,'rows':[]};var _0x57f589=_[_0xb001('0x27')](db[_0xb001('0x28')][_0xb001('0x29')],function(_0x34a863){return{'name':_0x34a863[_0xb001('0x2a')],'type':_0x34a863[_0xb001('0x2b')][_0xb001('0x2c')]};});_0xc6fded[_0xb001('0x2d')]=_[_0xb001('0x27')](_0x57f589,_0xb001('0x25'));_0xc6fded['query']=_['keys'](_0x277536[_0xb001('0x2e')]);_0xc6fded[_0xb001('0x2f')]=_[_0xb001('0x30')](_0xc6fded['model'],_0xc6fded[_0xb001('0x2e')]);_0x510646[_0xb001('0x31')]=_[_0xb001('0x30')](_0xc6fded[_0xb001('0x2d')],qs[_0xb001('0x32')](_0x277536['query']['fields']));_0x510646['attributes']=_0x510646[_0xb001('0x31')][_0xb001('0x33')]?_0x510646[_0xb001('0x31')]:_0xc6fded['model'];if(!_0x277536[_0xb001('0x2e')][_0xb001('0x34')](_0xb001('0x35'))){_0x510646['limit']=qs['limit'](_0x277536[_0xb001('0x2e')][_0xb001('0x36')]);_0x510646['offset']=qs['offset'](_0x277536[_0xb001('0x2e')][_0xb001('0x1c')]);}_0x510646[_0xb001('0x37')]=qs['sort'](_0x277536[_0xb001('0x2e')]['sort']);_0x510646[_0xb001('0x38')]=qs['filters'](_['pick'](_0x277536['query'],_0xc6fded[_0xb001('0x2f')]),_0x57f589);if(_0x277536[_0xb001('0x2e')][_0xb001('0x39')]){_0x510646[_0xb001('0x38')]=_[_0xb001('0x3a')](_0x510646['where'],{'$or':_['map'](_0x57f589,function(_0x1673d8){if(_0x1673d8[_0xb001('0x2b')]!==_0xb001('0x3b')){var _0x5f3535={};_0x5f3535[_0x1673d8[_0xb001('0x25')]]={'$like':'%'+_0x277536[_0xb001('0x2e')][_0xb001('0x39')]+'%'};return _0x5f3535;}})});}_0x510646=_['merge']({},_0x510646,_0x277536[_0xb001('0x3c')]);var _0x1104ab={'where':_0x510646['where']};return db[_0xb001('0x28')][_0xb001('0x1b')](_0x1104ab)[_0xb001('0x21')](function(_0x447bc6){_0x2cc575[_0xb001('0x1b')]=_0x447bc6;if(_0x277536[_0xb001('0x2e')][_0xb001('0x3d')]){_0x510646[_0xb001('0x3e')]=[{'all':!![]}];}return db['SalesforceAccount'][_0xb001('0x3f')](_0x510646);})['then'](function(_0x4c6df2){_0x2cc575['rows']=_0x4c6df2;return _0x2cc575;})[_0xb001('0x21')](respondWithFilteredResult(_0x6cba11,_0x510646))['catch'](handleError(_0x6cba11,null));};exports[_0xb001('0x40')]=function(_0x6cf457,_0x1cbf52){var _0x278722={'raw':![],'where':{'id':_0x6cf457[_0xb001('0x41')]['id']}},_0x430c0e={};_0x430c0e[_0xb001('0x2d')]=_[_0xb001('0x42')](db[_0xb001('0x28')]['rawAttributes']);_0x430c0e[_0xb001('0x2e')]=_[_0xb001('0x42')](_0x6cf457[_0xb001('0x2e')]);_0x430c0e[_0xb001('0x2f')]=_[_0xb001('0x30')](_0x430c0e['model'],_0x430c0e['query']);_0x278722[_0xb001('0x31')]=_[_0xb001('0x30')](_0x430c0e[_0xb001('0x2d')],qs[_0xb001('0x32')](_0x6cf457[_0xb001('0x2e')]['fields']));_0x278722[_0xb001('0x31')]=_0x278722['attributes'][_0xb001('0x33')]?_0x278722[_0xb001('0x31')]:_0x430c0e[_0xb001('0x2d')];if(_0x6cf457[_0xb001('0x2e')][_0xb001('0x3d')]){_0x278722[_0xb001('0x3e')]=[{'all':!![]}];}_0x278722=_[_0xb001('0x3a')]({},_0x278722,_0x6cf457[_0xb001('0x3c')]);return db[_0xb001('0x28')][_0xb001('0x43')](_0x278722)[_0xb001('0x21')](handleEntityNotFound(_0x1cbf52,null))['then'](respondWithResult(_0x1cbf52,null))['catch'](handleError(_0x1cbf52,null));};exports[_0xb001('0x44')]=function(_0xfe9c83,_0x102ac0){return db[_0xb001('0x28')][_0xb001('0x44')](_0xfe9c83[_0xb001('0x45')],{})['then'](respondWithResult(_0x102ac0,0xc9))[_0xb001('0x46')](handleError(_0x102ac0,null));};exports[_0xb001('0x20')]=function(_0x255b3a,_0x36c057){if(_0x255b3a[_0xb001('0x45')]['id']){delete _0x255b3a[_0xb001('0x45')]['id'];}return db[_0xb001('0x28')]['find']({'where':{'id':_0x255b3a[_0xb001('0x41')]['id']}})['then'](handleEntityNotFound(_0x36c057,null))[_0xb001('0x21')](saveUpdates(_0x255b3a['body'],null))[_0xb001('0x21')](respondWithResult(_0x36c057,null))['catch'](handleError(_0x36c057,null));};exports[_0xb001('0x22')]=function(_0x5b0b8d,_0x49af94){return db[_0xb001('0x28')]['find']({'where':{'id':_0x5b0b8d[_0xb001('0x41')]['id']}})[_0xb001('0x21')](handleEntityNotFound(_0x49af94,null))[_0xb001('0x21')](removeEntity(_0x49af94,null))['catch'](handleError(_0x49af94,null));};exports[_0xb001('0x47')]=function(_0xe8eaff,_0x4fe6d9,_0x3d8421){var _0x3459eb={};var _0x25290e={};var _0x5cba4c;var _0x4fdfae;return db[_0xb001('0x28')][_0xb001('0x48')]({'where':{'id':_0xe8eaff[_0xb001('0x41')]['id']}})[_0xb001('0x21')](handleEntityNotFound(_0x4fe6d9,null))[_0xb001('0x21')](function(_0x4691ba){if(_0x4691ba){_0x5cba4c=_0x4691ba;_0x25290e['model']=_[_0xb001('0x42')](db[_0xb001('0x49')][_0xb001('0x29')]);_0x25290e[_0xb001('0x2e')]=_[_0xb001('0x42')](_0xe8eaff[_0xb001('0x2e')]);_0x25290e['filters']=_['intersection'](_0x25290e[_0xb001('0x2d')],_0x25290e[_0xb001('0x2e')]);_0x3459eb[_0xb001('0x31')]=_[_0xb001('0x30')](_0x25290e[_0xb001('0x2d')],qs['fields'](_0xe8eaff[_0xb001('0x2e')][_0xb001('0x32')]));_0x3459eb[_0xb001('0x31')]=_0x3459eb[_0xb001('0x31')]['length']?_0x3459eb[_0xb001('0x31')]:_0x25290e['model'];_0x3459eb[_0xb001('0x37')]=qs['sort'](_0xe8eaff[_0xb001('0x2e')][_0xb001('0x4a')]);_0x3459eb[_0xb001('0x38')]=qs[_0xb001('0x2f')](_[_0xb001('0x4b')](_0xe8eaff[_0xb001('0x2e')],_0x25290e[_0xb001('0x2f')]));if(_0xe8eaff[_0xb001('0x2e')][_0xb001('0x39')]){_0x3459eb[_0xb001('0x38')]=_['merge'](_0x3459eb[_0xb001('0x38')],{'$or':_['map'](_0x3459eb[_0xb001('0x31')],function(_0x1037e0){var _0x216daf={};_0x216daf[_0x1037e0]={'$like':'%'+_0xe8eaff['query'][_0xb001('0x39')]+'%'};return _0x216daf;})});}_0x3459eb=_[_0xb001('0x3a')]({},_0x3459eb,_0xe8eaff[_0xb001('0x3c')]);return _0x5cba4c[_0xb001('0x47')](_0x3459eb);}})['then'](function(_0x4914ff){if(_0x4914ff){_0x4fdfae=_0x4914ff[_0xb001('0x33')];if(!_0xe8eaff[_0xb001('0x2e')][_0xb001('0x34')](_0xb001('0x35'))){_0x3459eb[_0xb001('0x36')]=qs['limit'](_0xe8eaff['query'][_0xb001('0x36')]);_0x3459eb['offset']=qs['offset'](_0xe8eaff[_0xb001('0x2e')][_0xb001('0x1c')]);}return _0x5cba4c[_0xb001('0x47')](_0x3459eb);}})[_0xb001('0x21')](function(_0x4e985f){if(_0x4e985f){return _0x4e985f?{'count':_0x4fdfae,'rows':_0x4e985f}:null;}})['then'](respondWithResult(_0x4fe6d9,null))[_0xb001('0x46')](handleError(_0x4fe6d9,null));};exports['addConfiguration']=function(_0xa9b928,_0x2c6651,_0x1c17ba){if(_0xa9b928[_0xb001('0x45')]['id']){delete _0xa9b928[_0xb001('0x45')]['id'];}return db[_0xb001('0x28')][_0xb001('0x48')]({'where':{'id':_0xa9b928[_0xb001('0x41')]['id']}})[_0xb001('0x21')](handleEntityNotFound(_0x2c6651,null))[_0xb001('0x21')](function(_0x29a774){if(_0x29a774){_0xa9b928[_0xb001('0x45')][_0xb001('0x4c')]=_0x29a774['id'];_0xa9b928[_0xb001('0x45')][_0xb001('0x4d')]=integrations[_0xb001('0x4e')](_0xa9b928['body'][_0xb001('0x4f')],_0xa9b928[_0xb001('0x45')][_0xb001('0x2b')]);_0xa9b928[_0xb001('0x45')][_0xb001('0x50')]=integrations[_0xb001('0x51')](_0xa9b928[_0xb001('0x45')][_0xb001('0x4f')],_0xa9b928[_0xb001('0x45')][_0xb001('0x2b')]);return db[_0xb001('0x49')]['create'](_0xa9b928[_0xb001('0x45')],{'include':[{'model':db[_0xb001('0x52')],'as':_0xb001('0x4d')},{'model':db[_0xb001('0x52')],'as':_0xb001('0x50')}]});}return null;})[_0xb001('0x21')](respondWithResult(_0x2c6651,null))['catch'](handleError(_0x2c6651,null));};exports[_0xb001('0x53')]=function(_0x116705,_0x49e7eb,_0x2be5cc){var _0x1558ce;var _0x4b36e4='';var _0x228663=_0xb001('0x54');return db[_0xb001('0x28')][_0xb001('0x48')]({'where':{'id':_0x116705[_0xb001('0x41')]['id']},'attributes':['id','remoteUri',_0xb001('0x55'),_0xb001('0x56'),'username',_0xb001('0x57'),_0xb001('0x58')]})['then'](handleEntityNotFound(_0x49e7eb,null))['then'](function(_0x1e6aea){if(_0x1e6aea){_0x4b36e4=_0x1e6aea[_0xb001('0x59')];var _0x18a841=_0x4b36e4[_0xb001('0x5a')](-0x1);if(_0x18a841==='/'){_0x4b36e4=_0x4b36e4['substring'](0x0,_0x4b36e4[_0xb001('0x5b')](_0x18a841));}_0x1558ce=new jsforce['Connection']({'oauth2':{'loginUrl':_0x4b36e4,'clientId':_0x1e6aea[_0xb001('0x55')],'clientSecret':_0x1e6aea[_0xb001('0x56')]}});return _0x1558ce['login'](_0x1e6aea[_0xb001('0x5c')],_0x1e6aea[_0xb001('0x57')][_0xb001('0x5d')](_0x1e6aea[_0xb001('0x58')]));}})[_0xb001('0x21')](function(_0x2d95d4){if(_0x2d95d4){if(!_[_0xb001('0x5e')](_0x116705[_0xb001('0x2e')]['ticketType'])){_0x228663=_0x116705['query'][_0xb001('0x5f')];}return _0x1558ce[_0xb001('0x60')](_0x228663)[_0xb001('0x61')]();}})['then'](function(_0xea5a40){var _0x1eb551=[_0xb001('0x62'),_0xb001('0x63'),_0xb001('0x64'),_0xb001('0x65'),_0xb001('0x66'),_0xb001('0x67')];var _0x159e7c=[_0xb001('0x68'),_0xb001('0x69'),_0xb001('0x6a'),_0xb001('0x6b'),'email',_0xb001('0x6c'),_0xb001('0x6d')];if(_0xea5a40){_[_0xb001('0x6e')](_0xea5a40[_0xb001('0x32')],function(_0x14b051){return _0x1eb551[_0xb001('0x6f')](_0x14b051[_0xb001('0x25')])||!_0x159e7c[_0xb001('0x6f')](_0x14b051[_0xb001('0x2b')]);});return{'count':_0xea5a40[_0xb001('0x32')][_0xb001('0x33')],'rows':_['map'](_0xea5a40['fields'],function(_0x54ad1f){return{'id':_0x54ad1f['name'],'name':_0x54ad1f[_0xb001('0x70')],'custom':_0x54ad1f[_0xb001('0x71')],'options':_0x54ad1f[_0xb001('0x72')][_0xb001('0x33')]>0x0?_[_0xb001('0x27')](_0x54ad1f[_0xb001('0x72')],function(_0x136ae3){return{'name':_0x136ae3['label'],'value':_0x136ae3[_0xb001('0x73')]};}):_0x54ad1f[_0xb001('0x2b')]=='boolean'?[{'name':'True','value':'true'},{'name':'False','value':_0xb001('0x74')}]:[]};})};}})[_0xb001('0x21')](respondWithResult(_0x49e7eb,null))[_0xb001('0x46')](function(_0x10f9f6){var _0x2f1623=_0x116705[_0xb001('0x2e')][_0xb001('0x75')]?0x1f4:_0x10f9f6['statusCode']||0x1f4;logger['error'](_0xb001('0x76'),_0xb001('0x53'),_0x2f1623,JSON['stringify'](_0x10f9f6));delete _0x10f9f6[_0xb001('0x25')];if(_0x2f1623===0x191){_0x2f1623=0x190;}_0x49e7eb[_0xb001('0x19')](_0x2f1623)[_0xb001('0x77')](_0x116705[_0xb001('0x2e')][_0xb001('0x75')]?{'message':_0xb001('0x78'),'statusCode':_0x10f9f6[_0xb001('0x79')]}:_0x10f9f6);});};
\ No newline at end of file
+var _0x740c=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','end','status','offset','undefined','limit','count','set','json','apply','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','type','filter','options','includeAll','include','SalesforceAccount','rows','show','params','find','catch','create','body','getConfigurations','findOne','SalesforceConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','SalesforceField','getFields','Task','remoteUri','clientId','password','securityToken','substring','lastIndexOf','Connection','login','concat','isNil','ticketType','sobject','OwnerId','Subject','Description','string','int','picklist','boolean','textarea','remove','label','picklistValues','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x43857d,_0x4550e6){var _0x4b605=function(_0x41e2f1){while(--_0x41e2f1){_0x43857d['push'](_0x43857d['shift']());}};_0x4b605(++_0x4550e6);}(_0x740c,0xda));var _0xc740=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x740c[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xc740('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc740('0x1'));var jsonpatch=require(_0xc740('0x2'));var rp=require(_0xc740('0x3'));var moment=require(_0xc740('0x4'));var BPromise=require(_0xc740('0x5'));var Mustache=require('mustache');var util=require(_0xc740('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc740('0x7'));var fs=require('fs');var fs_extra=require(_0xc740('0x8'));var _=require(_0xc740('0x9'));var squel=require(_0xc740('0xa'));var crypto=require('crypto');var jsforce=require(_0xc740('0xb'));var deskjs=require(_0xc740('0xc'));var toCsv=require(_0xc740('0xd'));var querystring=require('querystring');var Papa=require(_0xc740('0xe'));var Redis=require(_0xc740('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc740('0x10'));var as=require(_0xc740('0x11'));var hardwareService=require(_0xc740('0x12'));var logger=require(_0xc740('0x13'))(_0xc740('0x14'));var utils=require(_0xc740('0x15'));var config=require(_0xc740('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xc740('0x17'));function respondWithStatusCode(_0x4a5904,_0x580bd8){_0x580bd8=_0x580bd8||0xcc;return function(_0x2c4dda){if(_0x2c4dda){return _0x4a5904[_0xc740('0x18')](_0x580bd8);}return _0x4a5904['status'](_0x580bd8)[_0xc740('0x19')]();};}function respondWithResult(_0x1b6e4a,_0x3f88c7){_0x3f88c7=_0x3f88c7||0xc8;return function(_0xa43f88){if(_0xa43f88){return _0x1b6e4a[_0xc740('0x1a')](_0x3f88c7)['json'](_0xa43f88);}};}function respondWithFilteredResult(_0x556f67,_0x1e996a){return function(_0x32f1d4){if(_0x32f1d4){var _0x35834d=typeof _0x1e996a[_0xc740('0x1b')]===_0xc740('0x1c')&&typeof _0x1e996a[_0xc740('0x1d')]===_0xc740('0x1c');var _0x26af89=_0x32f1d4[_0xc740('0x1e')];var _0x29da56=_0x35834d?0x0:_0x1e996a[_0xc740('0x1b')];var _0x16b51c=_0x35834d?_0x32f1d4[_0xc740('0x1e')]:_0x1e996a[_0xc740('0x1b')]+_0x1e996a[_0xc740('0x1d')];var _0x1268ff;if(_0x16b51c>=_0x26af89){_0x16b51c=_0x26af89;_0x1268ff=0xc8;}else{_0x1268ff=0xce;}_0x556f67[_0xc740('0x1a')](_0x1268ff);return _0x556f67[_0xc740('0x1f')]('Content-Range',_0x29da56+'-'+_0x16b51c+'/'+_0x26af89)[_0xc740('0x20')](_0x32f1d4);}return null;};}function patchUpdates(_0x2a2e24){return function(_0x112ca0){try{jsonpatch[_0xc740('0x21')](_0x112ca0,_0x2a2e24,!![]);}catch(_0xbe6582){return BPromise['reject'](_0xbe6582);}return _0x112ca0[_0xc740('0x22')]();};}function saveUpdates(_0xb895b8,_0x3ea284){return function(_0x57fecd){if(_0x57fecd){return _0x57fecd[_0xc740('0x23')](_0xb895b8)[_0xc740('0x24')](function(_0x1b6f55){return _0x1b6f55;});}return null;};}function removeEntity(_0x3236a7,_0x5a8a6c){return function(_0x1d19cf){if(_0x1d19cf){return _0x1d19cf[_0xc740('0x25')]()[_0xc740('0x24')](function(){_0x3236a7[_0xc740('0x1a')](0xcc)[_0xc740('0x19')]();});}};}function handleEntityNotFound(_0x159116,_0x25194e){return function(_0x5ceff0){if(!_0x5ceff0){_0x159116['sendStatus'](0x194);}return _0x5ceff0;};}function handleError(_0x2a8d04,_0x22ffbc){_0x22ffbc=_0x22ffbc||0x1f4;return function(_0x528735){logger[_0xc740('0x26')](_0x528735[_0xc740('0x27')]);if(_0x528735[_0xc740('0x28')]){delete _0x528735[_0xc740('0x28')];}_0x2a8d04[_0xc740('0x1a')](_0x22ffbc)[_0xc740('0x29')](_0x528735);};}exports['index']=function(_0xc72b35,_0x197932){var _0x1ecfa0={},_0x3de6d5={},_0x5818a4={'count':0x0,'rows':[]};var _0x32d5df=_[_0xc740('0x2a')](db['SalesforceAccount'][_0xc740('0x2b')],function(_0x11dc2f){return{'name':_0x11dc2f[_0xc740('0x2c')],'type':_0x11dc2f['type'][_0xc740('0x2d')]};});_0x3de6d5[_0xc740('0x2e')]=_['map'](_0x32d5df,_0xc740('0x28'));_0x3de6d5[_0xc740('0x2f')]=_[_0xc740('0x30')](_0xc72b35[_0xc740('0x2f')]);_0x3de6d5['filters']=_[_0xc740('0x31')](_0x3de6d5[_0xc740('0x2e')],_0x3de6d5['query']);_0x1ecfa0[_0xc740('0x32')]=_[_0xc740('0x31')](_0x3de6d5['model'],qs[_0xc740('0x33')](_0xc72b35[_0xc740('0x2f')]['fields']));_0x1ecfa0[_0xc740('0x32')]=_0x1ecfa0['attributes'][_0xc740('0x34')]?_0x1ecfa0['attributes']:_0x3de6d5[_0xc740('0x2e')];if(!_0xc72b35[_0xc740('0x2f')][_0xc740('0x35')](_0xc740('0x36'))){_0x1ecfa0[_0xc740('0x1d')]=qs[_0xc740('0x1d')](_0xc72b35[_0xc740('0x2f')][_0xc740('0x1d')]);_0x1ecfa0[_0xc740('0x1b')]=qs[_0xc740('0x1b')](_0xc72b35['query'][_0xc740('0x1b')]);}_0x1ecfa0[_0xc740('0x37')]=qs[_0xc740('0x38')](_0xc72b35[_0xc740('0x2f')][_0xc740('0x38')]);_0x1ecfa0[_0xc740('0x39')]=qs['filters'](_['pick'](_0xc72b35[_0xc740('0x2f')],_0x3de6d5[_0xc740('0x3a')]),_0x32d5df);if(_0xc72b35[_0xc740('0x2f')]['filter']){_0x1ecfa0[_0xc740('0x39')]=_[_0xc740('0x3b')](_0x1ecfa0[_0xc740('0x39')],{'$or':_['map'](_0x32d5df,function(_0x5be811){if(_0x5be811[_0xc740('0x3c')]!=='VIRTUAL'){var _0x1e1450={};_0x1e1450[_0x5be811['name']]={'$like':'%'+_0xc72b35[_0xc740('0x2f')][_0xc740('0x3d')]+'%'};return _0x1e1450;}})});}_0x1ecfa0=_[_0xc740('0x3b')]({},_0x1ecfa0,_0xc72b35[_0xc740('0x3e')]);var _0x85205a={'where':_0x1ecfa0[_0xc740('0x39')]};return db['SalesforceAccount'][_0xc740('0x1e')](_0x85205a)[_0xc740('0x24')](function(_0x542983){_0x5818a4['count']=_0x542983;if(_0xc72b35[_0xc740('0x2f')][_0xc740('0x3f')]){_0x1ecfa0[_0xc740('0x40')]=[{'all':!![]}];}return db[_0xc740('0x41')]['findAll'](_0x1ecfa0);})[_0xc740('0x24')](function(_0x283bec){_0x5818a4[_0xc740('0x42')]=_0x283bec;return _0x5818a4;})[_0xc740('0x24')](respondWithFilteredResult(_0x197932,_0x1ecfa0))['catch'](handleError(_0x197932,null));};exports[_0xc740('0x43')]=function(_0x4144dc,_0x16b331){var _0x304ca7={'raw':![],'where':{'id':_0x4144dc[_0xc740('0x44')]['id']}},_0x162432={};_0x162432[_0xc740('0x2e')]=_[_0xc740('0x30')](db[_0xc740('0x41')][_0xc740('0x2b')]);_0x162432[_0xc740('0x2f')]=_[_0xc740('0x30')](_0x4144dc[_0xc740('0x2f')]);_0x162432[_0xc740('0x3a')]=_[_0xc740('0x31')](_0x162432[_0xc740('0x2e')],_0x162432[_0xc740('0x2f')]);_0x304ca7['attributes']=_[_0xc740('0x31')](_0x162432['model'],qs[_0xc740('0x33')](_0x4144dc[_0xc740('0x2f')][_0xc740('0x33')]));_0x304ca7[_0xc740('0x32')]=_0x304ca7[_0xc740('0x32')][_0xc740('0x34')]?_0x304ca7[_0xc740('0x32')]:_0x162432['model'];if(_0x4144dc[_0xc740('0x2f')][_0xc740('0x3f')]){_0x304ca7[_0xc740('0x40')]=[{'all':!![]}];}_0x304ca7=_['merge']({},_0x304ca7,_0x4144dc['options']);return db[_0xc740('0x41')][_0xc740('0x45')](_0x304ca7)['then'](handleEntityNotFound(_0x16b331,null))[_0xc740('0x24')](respondWithResult(_0x16b331,null))[_0xc740('0x46')](handleError(_0x16b331,null));};exports[_0xc740('0x47')]=function(_0x502b38,_0x411e82){return db[_0xc740('0x41')][_0xc740('0x47')](_0x502b38['body'],{})[_0xc740('0x24')](respondWithResult(_0x411e82,0xc9))[_0xc740('0x46')](handleError(_0x411e82,null));};exports['update']=function(_0x133726,_0x5060c1){if(_0x133726['body']['id']){delete _0x133726['body']['id'];}return db[_0xc740('0x41')]['find']({'where':{'id':_0x133726[_0xc740('0x44')]['id']}})[_0xc740('0x24')](handleEntityNotFound(_0x5060c1,null))['then'](saveUpdates(_0x133726[_0xc740('0x48')],null))[_0xc740('0x24')](respondWithResult(_0x5060c1,null))[_0xc740('0x46')](handleError(_0x5060c1,null));};exports[_0xc740('0x25')]=function(_0x283185,_0x49249b){return db[_0xc740('0x41')][_0xc740('0x45')]({'where':{'id':_0x283185[_0xc740('0x44')]['id']}})[_0xc740('0x24')](handleEntityNotFound(_0x49249b,null))['then'](removeEntity(_0x49249b,null))[_0xc740('0x46')](handleError(_0x49249b,null));};exports[_0xc740('0x49')]=function(_0x288a98,_0x37f21c,_0x5a4b54){var _0x489746={};var _0xa95104={};var _0x273409;var _0x3fc46c;return db[_0xc740('0x41')][_0xc740('0x4a')]({'where':{'id':_0x288a98[_0xc740('0x44')]['id']}})[_0xc740('0x24')](handleEntityNotFound(_0x37f21c,null))[_0xc740('0x24')](function(_0x77ec58){if(_0x77ec58){_0x273409=_0x77ec58;_0xa95104[_0xc740('0x2e')]=_[_0xc740('0x30')](db[_0xc740('0x4b')]['rawAttributes']);_0xa95104[_0xc740('0x2f')]=_[_0xc740('0x30')](_0x288a98['query']);_0xa95104[_0xc740('0x3a')]=_[_0xc740('0x31')](_0xa95104['model'],_0xa95104[_0xc740('0x2f')]);_0x489746[_0xc740('0x32')]=_['intersection'](_0xa95104[_0xc740('0x2e')],qs[_0xc740('0x33')](_0x288a98['query'][_0xc740('0x33')]));_0x489746['attributes']=_0x489746[_0xc740('0x32')][_0xc740('0x34')]?_0x489746[_0xc740('0x32')]:_0xa95104[_0xc740('0x2e')];_0x489746[_0xc740('0x37')]=qs[_0xc740('0x38')](_0x288a98[_0xc740('0x2f')]['sort']);_0x489746[_0xc740('0x39')]=qs[_0xc740('0x3a')](_[_0xc740('0x4c')](_0x288a98[_0xc740('0x2f')],_0xa95104[_0xc740('0x3a')]));if(_0x288a98[_0xc740('0x2f')][_0xc740('0x3d')]){_0x489746['where']=_[_0xc740('0x3b')](_0x489746[_0xc740('0x39')],{'$or':_['map'](_0x489746[_0xc740('0x32')],function(_0x4dc9b3){var _0x17dfe2={};_0x17dfe2[_0x4dc9b3]={'$like':'%'+_0x288a98[_0xc740('0x2f')][_0xc740('0x3d')]+'%'};return _0x17dfe2;})});}_0x489746=_[_0xc740('0x3b')]({},_0x489746,_0x288a98[_0xc740('0x3e')]);return _0x273409[_0xc740('0x49')](_0x489746);}})[_0xc740('0x24')](function(_0x906bff){if(_0x906bff){_0x3fc46c=_0x906bff[_0xc740('0x34')];if(!_0x288a98[_0xc740('0x2f')]['hasOwnProperty'](_0xc740('0x36'))){_0x489746[_0xc740('0x1d')]=qs[_0xc740('0x1d')](_0x288a98[_0xc740('0x2f')][_0xc740('0x1d')]);_0x489746['offset']=qs[_0xc740('0x1b')](_0x288a98[_0xc740('0x2f')][_0xc740('0x1b')]);}return _0x273409[_0xc740('0x49')](_0x489746);}})[_0xc740('0x24')](function(_0x419da7){if(_0x419da7){return _0x419da7?{'count':_0x3fc46c,'rows':_0x419da7}:null;}})['then'](respondWithResult(_0x37f21c,null))['catch'](handleError(_0x37f21c,null));};exports[_0xc740('0x4d')]=function(_0x12dbc3,_0x2bd4da,_0x5bbe4){if(_0x12dbc3[_0xc740('0x48')]['id']){delete _0x12dbc3[_0xc740('0x48')]['id'];}return db[_0xc740('0x41')][_0xc740('0x4a')]({'where':{'id':_0x12dbc3[_0xc740('0x44')]['id']}})[_0xc740('0x24')](handleEntityNotFound(_0x2bd4da,null))['then'](function(_0x1e30f5){if(_0x1e30f5){_0x12dbc3['body'][_0xc740('0x4e')]=_0x1e30f5['id'];_0x12dbc3[_0xc740('0x48')][_0xc740('0x4f')]=integrations[_0xc740('0x50')](_0x12dbc3[_0xc740('0x48')]['channel'],_0x12dbc3[_0xc740('0x48')][_0xc740('0x3c')]);_0x12dbc3['body'][_0xc740('0x51')]=integrations['getDescriptions'](_0x12dbc3[_0xc740('0x48')][_0xc740('0x52')],_0x12dbc3[_0xc740('0x48')][_0xc740('0x3c')]);return db[_0xc740('0x4b')][_0xc740('0x47')](_0x12dbc3['body'],{'include':[{'model':db[_0xc740('0x53')],'as':_0xc740('0x4f')},{'model':db['SalesforceField'],'as':_0xc740('0x51')}]});}return null;})['then'](respondWithResult(_0x2bd4da,null))[_0xc740('0x46')](handleError(_0x2bd4da,null));};exports[_0xc740('0x54')]=function(_0x3cd496,_0x5d0672,_0x14fe74){var _0x4a77f6;var _0x11d365='';var _0x19dbe2=_0xc740('0x55');return db[_0xc740('0x41')][_0xc740('0x4a')]({'where':{'id':_0x3cd496[_0xc740('0x44')]['id']},'attributes':['id',_0xc740('0x56'),_0xc740('0x57'),'clientSecret','username',_0xc740('0x58'),_0xc740('0x59')]})['then'](handleEntityNotFound(_0x5d0672,null))['then'](function(_0xe200eb){if(_0xe200eb){_0x11d365=_0xe200eb['remoteUri'];var _0x381d29=_0x11d365['slice'](-0x1);if(_0x381d29==='/'){_0x11d365=_0x11d365[_0xc740('0x5a')](0x0,_0x11d365[_0xc740('0x5b')](_0x381d29));}_0x4a77f6=new jsforce[(_0xc740('0x5c'))]({'oauth2':{'loginUrl':_0x11d365,'clientId':_0xe200eb['clientId'],'clientSecret':_0xe200eb['clientSecret']}});return _0x4a77f6[_0xc740('0x5d')](_0xe200eb['username'],_0xe200eb[_0xc740('0x58')][_0xc740('0x5e')](_0xe200eb[_0xc740('0x59')]));}})['then'](function(_0x27993b){if(_0x27993b){if(!_[_0xc740('0x5f')](_0x3cd496[_0xc740('0x2f')]['ticketType'])){_0x19dbe2=_0x3cd496['query'][_0xc740('0x60')];}return _0x4a77f6[_0xc740('0x61')](_0x19dbe2)['describe']();}})[_0xc740('0x24')](function(_0x1363ce){var _0x54039a=[_0xc740('0x62'),'ActivityDate','IsReminderSet','IsRecurrence',_0xc740('0x63'),_0xc740('0x64')];var _0x4f45c3=[_0xc740('0x65'),_0xc740('0x66'),_0xc740('0x67'),_0xc740('0x68'),'email',_0xc740('0x69'),'phone'];if(_0x1363ce){_[_0xc740('0x6a')](_0x1363ce[_0xc740('0x33')],function(_0x5009b4){return _0x54039a['includes'](_0x5009b4[_0xc740('0x28')])||!_0x4f45c3['includes'](_0x5009b4[_0xc740('0x3c')]);});return{'count':_0x1363ce[_0xc740('0x33')]['length'],'rows':_['map'](_0x1363ce[_0xc740('0x33')],function(_0x11480c){return{'id':_0x11480c[_0xc740('0x28')],'name':_0x11480c[_0xc740('0x6b')],'custom':_0x11480c['custom'],'options':_0x11480c[_0xc740('0x6c')]['length']>0x0?_[_0xc740('0x2a')](_0x11480c[_0xc740('0x6c')],function(_0x45b0cf){return{'name':_0x45b0cf[_0xc740('0x6b')],'value':_0x45b0cf['value']};}):_0x11480c[_0xc740('0x3c')]==_0xc740('0x68')?[{'name':_0xc740('0x6d'),'value':_0xc740('0x6e')},{'name':_0xc740('0x6f'),'value':_0xc740('0x70')}]:[]};})};}})['then'](respondWithResult(_0x5d0672,null))['catch'](function(_0x14256f){var _0x3a33dd=_0x3cd496['query'][_0xc740('0x71')]?0x1f4:_0x14256f[_0xc740('0x72')]||0x1f4;logger[_0xc740('0x26')](_0xc740('0x73'),'getFields',_0x3a33dd,JSON[_0xc740('0x74')](_0x14256f));delete _0x14256f[_0xc740('0x28')];if(_0x3a33dd===0x191){_0x3a33dd=0x190;}_0x5d0672['status'](_0x3a33dd)[_0xc740('0x29')](_0x3cd496[_0xc740('0x2f')][_0xc740('0x71')]?{'message':_0xc740('0x75'),'statusCode':_0x14256f[_0xc740('0x72')]}:_0x14256f);});};
\ No newline at end of file
index 9576ba6..0920755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5568=['int_salesforce_accounts','util','api','bluebird','request-promise','path','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x431fec,_0x2545ee){var _0x4febac=function(_0x5443ee){while(--_0x5443ee){_0x431fec['push'](_0x431fec['shift']());}};_0x4febac(++_0x2545ee);}(_0x5568,0x6f));var _0x8556=function(_0x29e710,_0x362b44){_0x29e710=_0x29e710-0x0;var _0x122e67=_0x5568[_0x29e710];return _0x122e67;};'use strict';var _=require('lodash');var util=require(_0x8556('0x0'));var logger=require('../../config/logger')(_0x8556('0x1'));var moment=require('moment');var BPromise=require(_0x8556('0x2'));var rp=require(_0x8556('0x3'));var fs=require('fs');var path=require(_0x8556('0x4'));var rimraf=require('rimraf');var config=require(_0x8556('0x5'));var attributes=require(_0x8556('0x6'));var integrations=require(_0x8556('0x7'));module[_0x8556('0x8')]=function(_0x48d377,_0x3dfe0a){return _0x48d377[_0x8556('0x9')]('SalesforceAccount',attributes,{'tableName':_0x8556('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ed7=['rimraf','./intSalesforceAccount.attributes','exports','define','int_salesforce_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x47b15f,_0x103e93){var _0x55bf25=function(_0x51fe7f){while(--_0x51fe7f){_0x47b15f['push'](_0x47b15f['shift']());}};_0x55bf25(++_0x103e93);}(_0x5ed7,0x119));var _0x75ed=function(_0x4733c0,_0x21388c){_0x4733c0=_0x4733c0-0x0;var _0xd73421=_0x5ed7[_0x4733c0];return _0xd73421;};'use strict';var _=require(_0x75ed('0x0'));var util=require(_0x75ed('0x1'));var logger=require(_0x75ed('0x2'))('api');var moment=require(_0x75ed('0x3'));var BPromise=require(_0x75ed('0x4'));var rp=require(_0x75ed('0x5'));var fs=require('fs');var path=require(_0x75ed('0x6'));var rimraf=require(_0x75ed('0x7'));var config=require('../../config/environment');var attributes=require(_0x75ed('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x75ed('0x9')]=function(_0x38c4e9,_0x1eb5f7){return _0x38c4e9[_0x75ed('0xa')]('SalesforceAccount',attributes,{'tableName':_0x75ed('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 027ca1b..adda42c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1015=['attributes','limit','map','include','model','then','GetSalesforceAccount','ShowSalesforceAccount','SalesforceAccount','find','raw','where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SalesforceAccount,\x20%s,\x20%s','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','findAll','options'];(function(_0x48cb10,_0x3e4b72){var _0x577890=function(_0x5797af){while(--_0x5797af){_0x48cb10['push'](_0x48cb10['shift']());}};_0x577890(++_0x3e4b72);}(_0x1015,0xca));var _0x5101=function(_0x373b40,_0x419ad1){_0x373b40=_0x373b40-0x0;var _0x1e7e2b=_0x1015[_0x373b40];return _0x1e7e2b;};'use strict';var _=require(_0x5101('0x0'));var util=require(_0x5101('0x1'));var moment=require(_0x5101('0x2'));var BPromise=require('bluebird');var rs=require(_0x5101('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5101('0x4'))['db'];var utils=require(_0x5101('0x5'));var logger=require(_0x5101('0x6'))(_0x5101('0x7'));var config=require(_0x5101('0x8'));var jayson=require(_0x5101('0x9'));var client=jayson[_0x5101('0xa')][_0x5101('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c28a1,_0x30084d,_0x5b77d1){return new BPromise(function(_0x8f77ae,_0x532bfd){return client[_0x5101('0xc')](_0x5c28a1,_0x5b77d1)['then'](function(_0x19698e){logger['info'](_0x5101('0xd'),_0x30084d,'request\x20sent');logger[_0x5101('0xe')](_0x5101('0xf'),_0x30084d,_0x5101('0x10'),JSON[_0x5101('0x11')](_0x19698e));if(_0x19698e[_0x5101('0x12')]){if(_0x19698e[_0x5101('0x12')][_0x5101('0x13')]===0x1f4){logger[_0x5101('0x12')](_0x5101('0xd'),_0x30084d,_0x19698e[_0x5101('0x12')]['message']);return _0x532bfd(_0x19698e[_0x5101('0x12')][_0x5101('0x14')]);}logger[_0x5101('0x12')]('SalesforceAccount,\x20%s,\x20%s',_0x30084d,_0x19698e[_0x5101('0x12')][_0x5101('0x14')]);return _0x8f77ae(_0x19698e[_0x5101('0x12')][_0x5101('0x14')]);}else{logger[_0x5101('0x15')](_0x5101('0xd'),_0x30084d,'request\x20sent');_0x8f77ae(_0x19698e[_0x5101('0x16')][_0x5101('0x14')]);}})[_0x5101('0x17')](function(_0x1a3037){logger[_0x5101('0x12')](_0x5101('0xd'),_0x30084d,_0x1a3037);_0x532bfd(_0x1a3037);});});}exports['GetSalesforceAccount']=function(_0x41619a){var _0x183ada=this;return new Promise(function(_0x318f6f,_0x28e0e5){return db['SalesforceAccount'][_0x5101('0x18')]({'raw':_0x41619a[_0x5101('0x19')]?_0x41619a[_0x5101('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x41619a[_0x5101('0x19')]?_0x41619a['options']['where']||null:null,'attributes':_0x41619a['options']?_0x41619a[_0x5101('0x19')][_0x5101('0x1a')]||null:null,'limit':_0x41619a[_0x5101('0x19')]?_0x41619a[_0x5101('0x19')][_0x5101('0x1b')]||null:null,'include':_0x41619a[_0x5101('0x19')]?_0x41619a[_0x5101('0x19')]['include']?_[_0x5101('0x1c')](_0x41619a[_0x5101('0x19')][_0x5101('0x1d')],function(_0x27b5fb){return{'model':db[_0x27b5fb['model']],'as':_0x27b5fb['as'],'attributes':_0x27b5fb['attributes'],'include':_0x27b5fb[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x27b5fb[_0x5101('0x1d')],function(_0x3f6ee6){return{'model':db[_0x3f6ee6['model']],'as':_0x3f6ee6['as'],'attributes':_0x3f6ee6[_0x5101('0x1a')],'include':_0x3f6ee6[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x3f6ee6[_0x5101('0x1d')],function(_0x35d68a){return{'model':db[_0x35d68a[_0x5101('0x1e')]],'as':_0x35d68a['as'],'attributes':_0x35d68a[_0x5101('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5101('0x1f')](function(_0x2d7332){logger[_0x5101('0x15')](_0x5101('0x20'),_0x41619a);logger[_0x5101('0xe')]('GetSalesforceAccount',_0x41619a,JSON[_0x5101('0x11')](_0x2d7332));_0x318f6f(_0x2d7332);})[_0x5101('0x17')](function(_0x31f5b2){logger[_0x5101('0x12')]('GetSalesforceAccount',_0x31f5b2[_0x5101('0x14')],_0x41619a);_0x28e0e5(_0x183ada[_0x5101('0x12')](0x1f4,_0x31f5b2['message']));});});};exports[_0x5101('0x21')]=function(_0x2aa6c1){var _0x3d1888=this;return new Promise(function(_0x15da5f,_0x3afdad){return db[_0x5101('0x22')][_0x5101('0x23')]({'raw':_0x2aa6c1[_0x5101('0x19')]?_0x2aa6c1[_0x5101('0x19')][_0x5101('0x24')]===undefined?!![]:![]:!![],'where':_0x2aa6c1['options']?_0x2aa6c1['options'][_0x5101('0x25')]||null:null,'attributes':_0x2aa6c1['options']?_0x2aa6c1['options'][_0x5101('0x1a')]||null:null,'include':_0x2aa6c1[_0x5101('0x19')]?_0x2aa6c1[_0x5101('0x19')][_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x2aa6c1['options'][_0x5101('0x1d')],function(_0x298859){return{'model':db[_0x298859[_0x5101('0x1e')]],'as':_0x298859['as'],'attributes':_0x298859[_0x5101('0x1a')],'include':_0x298859[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x298859[_0x5101('0x1d')],function(_0x347f97){return{'model':db[_0x347f97[_0x5101('0x1e')]],'as':_0x347f97['as'],'attributes':_0x347f97[_0x5101('0x1a')],'include':_0x347f97[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x347f97['include'],function(_0x2dcc3f){return{'model':db[_0x2dcc3f[_0x5101('0x1e')]],'as':_0x2dcc3f['as'],'attributes':_0x2dcc3f[_0x5101('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5101('0x1f')](function(_0x3d91d4){logger[_0x5101('0x15')](_0x5101('0x21'),_0x2aa6c1);logger[_0x5101('0xe')](_0x5101('0x21'),_0x2aa6c1,JSON['stringify'](_0x3d91d4));_0x15da5f(_0x3d91d4);})[_0x5101('0x17')](function(_0x2c1f38){logger[_0x5101('0x12')](_0x5101('0x21'),_0x2c1f38[_0x5101('0x14')],_0x2aa6c1);_0x3afdad(_0x3d1888['error'](0x1f4,_0x2c1f38['message']));});});};
\ No newline at end of file
+var _0x5d5c=['limit','map','include','model','info','SalesforceAccount','find','ShowSalesforceAccount','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','then','SalesforceAccount,\x20%s,\x20%s','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetSalesforceAccount','findAll','options','raw','where','attributes'];(function(_0x79324e,_0x4af67e){var _0x555666=function(_0x15d9c2){while(--_0x15d9c2){_0x79324e['push'](_0x79324e['shift']());}};_0x555666(++_0x4af67e);}(_0x5d5c,0xe8));var _0xc5d5=function(_0x1a959a,_0x5ac87e){_0x1a959a=_0x1a959a-0x0;var _0x171656=_0x5d5c[_0x1a959a];return _0x171656;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xc5d5('0x0'));var rs=require(_0xc5d5('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc5d5('0x2'))['db'];var utils=require(_0xc5d5('0x3'));var logger=require(_0xc5d5('0x4'))(_0xc5d5('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc5d5('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2379ca,_0x3a72ba,_0x45873e){return new BPromise(function(_0x5cdd09,_0x9f4aa0){return client['request'](_0x2379ca,_0x45873e)[_0xc5d5('0x7')](function(_0x24a83b){logger['info'](_0xc5d5('0x8'),_0x3a72ba,'request\x20sent');logger[_0xc5d5('0x9')](_0xc5d5('0xa'),_0x3a72ba,_0xc5d5('0xb'),JSON[_0xc5d5('0xc')](_0x24a83b));if(_0x24a83b[_0xc5d5('0xd')]){if(_0x24a83b[_0xc5d5('0xd')][_0xc5d5('0xe')]===0x1f4){logger['error'](_0xc5d5('0x8'),_0x3a72ba,_0x24a83b[_0xc5d5('0xd')][_0xc5d5('0xf')]);return _0x9f4aa0(_0x24a83b[_0xc5d5('0xd')]['message']);}logger[_0xc5d5('0xd')]('SalesforceAccount,\x20%s,\x20%s',_0x3a72ba,_0x24a83b['error']['message']);return _0x5cdd09(_0x24a83b[_0xc5d5('0xd')]['message']);}else{logger['info'](_0xc5d5('0x8'),_0x3a72ba,'request\x20sent');_0x5cdd09(_0x24a83b[_0xc5d5('0x10')][_0xc5d5('0xf')]);}})[_0xc5d5('0x11')](function(_0x2cd58a){logger[_0xc5d5('0xd')](_0xc5d5('0x8'),_0x3a72ba,_0x2cd58a);_0x9f4aa0(_0x2cd58a);});});}exports[_0xc5d5('0x12')]=function(_0x448e4d){var _0x5f2e80=this;return new Promise(function(_0x19197f,_0x17535a){return db['SalesforceAccount'][_0xc5d5('0x13')]({'raw':_0x448e4d['options']?_0x448e4d[_0xc5d5('0x14')][_0xc5d5('0x15')]===undefined?!![]:![]:!![],'where':_0x448e4d[_0xc5d5('0x14')]?_0x448e4d[_0xc5d5('0x14')][_0xc5d5('0x16')]||null:null,'attributes':_0x448e4d['options']?_0x448e4d[_0xc5d5('0x14')][_0xc5d5('0x17')]||null:null,'limit':_0x448e4d[_0xc5d5('0x14')]?_0x448e4d[_0xc5d5('0x14')][_0xc5d5('0x18')]||null:null,'include':_0x448e4d['options']?_0x448e4d[_0xc5d5('0x14')]['include']?_[_0xc5d5('0x19')](_0x448e4d[_0xc5d5('0x14')][_0xc5d5('0x1a')],function(_0x1a0a4b){return{'model':db[_0x1a0a4b[_0xc5d5('0x1b')]],'as':_0x1a0a4b['as'],'attributes':_0x1a0a4b['attributes'],'include':_0x1a0a4b[_0xc5d5('0x1a')]?_['map'](_0x1a0a4b[_0xc5d5('0x1a')],function(_0x1cbcef){return{'model':db[_0x1cbcef[_0xc5d5('0x1b')]],'as':_0x1cbcef['as'],'attributes':_0x1cbcef['attributes'],'include':_0x1cbcef[_0xc5d5('0x1a')]?_['map'](_0x1cbcef[_0xc5d5('0x1a')],function(_0x2dba7b){return{'model':db[_0x2dba7b[_0xc5d5('0x1b')]],'as':_0x2dba7b['as'],'attributes':_0x2dba7b[_0xc5d5('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc5d5('0x7')](function(_0x4f3b5a){logger[_0xc5d5('0x1c')](_0xc5d5('0x12'),_0x448e4d);logger[_0xc5d5('0x9')](_0xc5d5('0x12'),_0x448e4d,JSON[_0xc5d5('0xc')](_0x4f3b5a));_0x19197f(_0x4f3b5a);})[_0xc5d5('0x11')](function(_0x5c39ec){logger[_0xc5d5('0xd')](_0xc5d5('0x12'),_0x5c39ec['message'],_0x448e4d);_0x17535a(_0x5f2e80['error'](0x1f4,_0x5c39ec[_0xc5d5('0xf')]));});});};exports['ShowSalesforceAccount']=function(_0x45e607){var _0x2b32bb=this;return new Promise(function(_0x276876,_0x501374){return db[_0xc5d5('0x1d')][_0xc5d5('0x1e')]({'raw':_0x45e607[_0xc5d5('0x14')]?_0x45e607[_0xc5d5('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x45e607[_0xc5d5('0x14')]?_0x45e607[_0xc5d5('0x14')][_0xc5d5('0x16')]||null:null,'attributes':_0x45e607[_0xc5d5('0x14')]?_0x45e607[_0xc5d5('0x14')][_0xc5d5('0x17')]||null:null,'include':_0x45e607[_0xc5d5('0x14')]?_0x45e607['options'][_0xc5d5('0x1a')]?_[_0xc5d5('0x19')](_0x45e607[_0xc5d5('0x14')]['include'],function(_0x4eb6f1){return{'model':db[_0x4eb6f1[_0xc5d5('0x1b')]],'as':_0x4eb6f1['as'],'attributes':_0x4eb6f1[_0xc5d5('0x17')],'include':_0x4eb6f1[_0xc5d5('0x1a')]?_[_0xc5d5('0x19')](_0x4eb6f1[_0xc5d5('0x1a')],function(_0x4c2b8d){return{'model':db[_0x4c2b8d[_0xc5d5('0x1b')]],'as':_0x4c2b8d['as'],'attributes':_0x4c2b8d[_0xc5d5('0x17')],'include':_0x4c2b8d['include']?_[_0xc5d5('0x19')](_0x4c2b8d[_0xc5d5('0x1a')],function(_0x49e4a6){return{'model':db[_0x49e4a6[_0xc5d5('0x1b')]],'as':_0x49e4a6['as'],'attributes':_0x49e4a6[_0xc5d5('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc5d5('0x7')](function(_0x1b054c){logger[_0xc5d5('0x1c')](_0xc5d5('0x1f'),_0x45e607);logger['debug'](_0xc5d5('0x1f'),_0x45e607,JSON[_0xc5d5('0xc')](_0x1b054c));_0x276876(_0x1b054c);})[_0xc5d5('0x11')](function(_0x239695){logger[_0xc5d5('0xd')](_0xc5d5('0x1f'),_0x239695[_0xc5d5('0xf')],_0x45e607);_0x501374(_0x2b32bb[_0xc5d5('0xd')](0x1f4,_0x239695[_0xc5d5('0xf')]));});});};
\ No newline at end of file
index a550382..5044220 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(_0x5a42c5,_0x3d8961){var _0x512425=function(_0x2a86e4){while(--_0x2a86e4){_0x5a42c5['push'](_0x5a42c5['shift']());}};_0x512425(++_0x3d8961);}(_0x7a54,0x106));var _0x47a5=function(_0x5a552e,_0x330f53){_0x5a552e=_0x5a552e-0x0;var _0x4d41c8=_0x7a54[_0x5a552e];return _0x4d41c8;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0xdb28,0x106));var _0x8db2=function(_0x980b05,_0x3519c7){_0x980b05=_0x980b05-0x0;var _0x59ca8b=_0xdb28[_0x980b05];return _0x59ca8b;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
index 6446cbb..45d84fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd353=['Task','contact_lead','contact','lead','account_contact_lead','account','sequelize','exports','STRING','ENUM'];(function(_0x54c355,_0x31674d){var _0x40af27=function(_0x43e00f){while(--_0x43e00f){_0x54c355['push'](_0x54c355['shift']());}};_0x40af27(++_0x31674d);}(_0xd353,0x7e));var _0x3d35=function(_0x5509d4,_0x5c0b29){_0x5509d4=_0x5509d4-0x0;var _0x31f764=_0xd353[_0x5509d4];return _0x31f764;};'use strict';var Sequelize=require(_0x3d35('0x0'));module[_0x3d35('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3d35('0x2')]},'ticketType':{'type':Sequelize[_0x3d35('0x3')]('Task','Case'),'defaultValue':_0x3d35('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0x3d35('0x5'),_0x3d35('0x6'),_0x3d35('0x7'),_0x3d35('0x8'),_0x3d35('0x9')),'defaultValue':_0x3d35('0x5')},'moduleCreate':{'type':Sequelize[_0x3d35('0x3')]('nothing',_0x3d35('0x6'),_0x3d35('0x7'),_0x3d35('0x9')),'defaultValue':_0x3d35('0x7')},'leadId':{'type':Sequelize[_0x3d35('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x3d35('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x3d35('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x3d35('0x2')]}};
\ No newline at end of file
+var _0xfd2d=['lead','exports','STRING','ENUM','Task','contact_lead','contact','account_contact_lead','account','nothing'];(function(_0x20868d,_0x36ddb3){var _0x25d839=function(_0x48dc08){while(--_0x48dc08){_0x20868d['push'](_0x20868d['shift']());}};_0x25d839(++_0x36ddb3);}(_0xfd2d,0x17d));var _0xdfd2=function(_0x4073e2,_0x4ca44a){_0x4073e2=_0x4073e2-0x0;var _0x2b08f8=_0xfd2d[_0x4073e2];return _0x2b08f8;};'use strict';var Sequelize=require('sequelize');module[_0xdfd2('0x0')]={'name':{'type':Sequelize[_0xdfd2('0x1')]},'description':{'type':Sequelize[_0xdfd2('0x1')]},'ticketType':{'type':Sequelize[_0xdfd2('0x2')](_0xdfd2('0x3'),'Case'),'defaultValue':_0xdfd2('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0xdfd2('0x4'),_0xdfd2('0x5'),'lead',_0xdfd2('0x6'),_0xdfd2('0x7')),'defaultValue':_0xdfd2('0x4')},'moduleCreate':{'type':Sequelize[_0xdfd2('0x2')](_0xdfd2('0x8'),_0xdfd2('0x5'),_0xdfd2('0x9'),_0xdfd2('0x7')),'defaultValue':_0xdfd2('0x9')},'leadId':{'type':Sequelize[_0xdfd2('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xdfd2('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0xdfd2('0x1')]}};
\ No newline at end of file
index 477b78d..8afb428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','save','update','then','error','stack','name','send','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','getFields','findOne','SalesforceField','getSubjects','getDescriptions','eml-format','rimraf','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra'];(function(_0x57ec13,_0x510a1c){var _0x527de3=function(_0x1a77b6){while(--_0x1a77b6){_0x57ec13['push'](_0x57ec13['shift']());}};_0x527de3(++_0x510a1c);}(_0xe14b,0x93));var _0xbe14=function(_0x24f799,_0x1223f1){_0x24f799=_0x24f799-0x0;var _0x3979bf=_0xe14b[_0x24f799];return _0x3979bf;};'use strict';var emlformat=require(_0xbe14('0x0'));var rimraf=require(_0xbe14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbe14('0x2'));var moment=require(_0xbe14('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbe14('0x4'));var util=require('util');var path=require('path');var sox=require(_0xbe14('0x5'));var csv=require(_0xbe14('0x6'));var ejs=require(_0xbe14('0x7'));var fs=require('fs');var fs_extra=require(_0xbe14('0x8'));var _=require(_0xbe14('0x9'));var squel=require(_0xbe14('0xa'));var crypto=require(_0xbe14('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbe14('0xc'));var Papa=require(_0xbe14('0xd'));var Redis=require(_0xbe14('0xe'));var authService=require(_0xbe14('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe14('0x10'));var logger=require(_0xbe14('0x11'))('api');var utils=require(_0xbe14('0x12'));var config=require(_0xbe14('0x13'));var licenseUtil=require(_0xbe14('0x14'));var db=require(_0xbe14('0x15'))['db'];function respondWithStatusCode(_0x27792f,_0x3b898d){_0x3b898d=_0x3b898d||0xcc;return function(_0x23a730){if(_0x23a730){return _0x27792f[_0xbe14('0x16')](_0x3b898d);}return _0x27792f[_0xbe14('0x17')](_0x3b898d)[_0xbe14('0x18')]();};}function respondWithResult(_0x1e4826,_0x33fd54){_0x33fd54=_0x33fd54||0xc8;return function(_0x813399){if(_0x813399){return _0x1e4826['status'](_0x33fd54)['json'](_0x813399);}};}function respondWithFilteredResult(_0x3f58f5,_0x3dc4a9){return function(_0xf4ac9){if(_0xf4ac9){var _0x37ce4e=typeof _0x3dc4a9['offset']===_0xbe14('0x19')&&typeof _0x3dc4a9[_0xbe14('0x1a')]===_0xbe14('0x19');var _0x123ede=_0xf4ac9[_0xbe14('0x1b')];var _0x29ab73=_0x37ce4e?0x0:_0x3dc4a9[_0xbe14('0x1c')];var _0x5ea1f8=_0x37ce4e?_0xf4ac9[_0xbe14('0x1b')]:_0x3dc4a9[_0xbe14('0x1c')]+_0x3dc4a9[_0xbe14('0x1a')];var _0x433459;if(_0x5ea1f8>=_0x123ede){_0x5ea1f8=_0x123ede;_0x433459=0xc8;}else{_0x433459=0xce;}_0x3f58f5[_0xbe14('0x17')](_0x433459);return _0x3f58f5[_0xbe14('0x1d')]('Content-Range',_0x29ab73+'-'+_0x5ea1f8+'/'+_0x123ede)[_0xbe14('0x1e')](_0xf4ac9);}return null;};}function patchUpdates(_0x4a1bbd){return function(_0x417c8d){try{jsonpatch[_0xbe14('0x1f')](_0x417c8d,_0x4a1bbd,!![]);}catch(_0x188ec4){return BPromise['reject'](_0x188ec4);}return _0x417c8d[_0xbe14('0x20')]();};}function saveUpdates(_0x56d845,_0x3c1c85){return function(_0x56e80c){if(_0x56e80c){return _0x56e80c[_0xbe14('0x21')](_0x56d845)['then'](function(_0x274018){return _0x274018;});}return null;};}function removeEntity(_0x3d3608,_0x505dbd){return function(_0x2da350){if(_0x2da350){return _0x2da350['destroy']()[_0xbe14('0x22')](function(){_0x3d3608['status'](0xcc)[_0xbe14('0x18')]();});}};}function handleEntityNotFound(_0x5fa043,_0x1ee9c1){return function(_0x39cc81){if(!_0x39cc81){_0x5fa043[_0xbe14('0x16')](0x194);}return _0x39cc81;};}function handleError(_0x2703f5,_0x55d001){_0x55d001=_0x55d001||0x1f4;return function(_0x1822e0){logger[_0xbe14('0x23')](_0x1822e0[_0xbe14('0x24')]);if(_0x1822e0[_0xbe14('0x25')]){delete _0x1822e0['name'];}_0x2703f5[_0xbe14('0x17')](_0x55d001)[_0xbe14('0x26')](_0x1822e0);};}exports['index']=function(_0x3c3613,_0x3b3e84){var _0x1c7cc7={},_0x19252f={},_0x34d648={'count':0x0,'rows':[]};var _0x36d4b2=_[_0xbe14('0x27')](db[_0xbe14('0x28')][_0xbe14('0x29')],function(_0x16a159){return{'name':_0x16a159[_0xbe14('0x2a')],'type':_0x16a159[_0xbe14('0x2b')][_0xbe14('0x2c')]};});_0x19252f[_0xbe14('0x2d')]=_[_0xbe14('0x27')](_0x36d4b2,_0xbe14('0x25'));_0x19252f[_0xbe14('0x2e')]=_[_0xbe14('0x2f')](_0x3c3613[_0xbe14('0x2e')]);_0x19252f[_0xbe14('0x30')]=_['intersection'](_0x19252f[_0xbe14('0x2d')],_0x19252f['query']);_0x1c7cc7['attributes']=_[_0xbe14('0x31')](_0x19252f['model'],qs[_0xbe14('0x32')](_0x3c3613[_0xbe14('0x2e')]['fields']));_0x1c7cc7['attributes']=_0x1c7cc7['attributes'][_0xbe14('0x33')]?_0x1c7cc7[_0xbe14('0x34')]:_0x19252f['model'];if(!_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x35')](_0xbe14('0x36'))){_0x1c7cc7[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x3c3613['query']['limit']);_0x1c7cc7[_0xbe14('0x1c')]=qs['offset'](_0x3c3613['query']['offset']);}_0x1c7cc7[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x1c7cc7[_0xbe14('0x39')]=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x3c3613[_0xbe14('0x2e')],_0x19252f[_0xbe14('0x30')]),_0x36d4b2);if(_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x1c7cc7[_0xbe14('0x39')]=_['merge'](_0x1c7cc7['where'],{'$or':_[_0xbe14('0x27')](_0x36d4b2,function(_0x2951e1){if(_0x2951e1[_0xbe14('0x2b')]!=='VIRTUAL'){var _0x326329={};_0x326329[_0x2951e1[_0xbe14('0x25')]]={'$like':'%'+_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x326329;}})});}_0x1c7cc7=_[_0xbe14('0x3c')]({},_0x1c7cc7,_0x3c3613[_0xbe14('0x3d')]);var _0x19fa30={'where':_0x1c7cc7[_0xbe14('0x39')]};return db[_0xbe14('0x28')]['count'](_0x19fa30)[_0xbe14('0x22')](function(_0x841b71){_0x34d648[_0xbe14('0x1b')]=_0x841b71;if(_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x3e')]){_0x1c7cc7[_0xbe14('0x3f')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xbe14('0x40')](_0x1c7cc7);})[_0xbe14('0x22')](function(_0x1220c9){_0x34d648[_0xbe14('0x41')]=_0x1220c9;return _0x34d648;})['then'](respondWithFilteredResult(_0x3b3e84,_0x1c7cc7))['catch'](handleError(_0x3b3e84,null));};exports[_0xbe14('0x42')]=function(_0xe417b,_0x3272ae){var _0x51c859={'raw':![],'where':{'id':_0xe417b[_0xbe14('0x43')]['id']}},_0x5d5318={};_0x5d5318['model']=_['keys'](db[_0xbe14('0x28')][_0xbe14('0x29')]);_0x5d5318[_0xbe14('0x2e')]=_['keys'](_0xe417b['query']);_0x5d5318['filters']=_[_0xbe14('0x31')](_0x5d5318[_0xbe14('0x2d')],_0x5d5318[_0xbe14('0x2e')]);_0x51c859['attributes']=_[_0xbe14('0x31')](_0x5d5318[_0xbe14('0x2d')],qs[_0xbe14('0x32')](_0xe417b[_0xbe14('0x2e')]['fields']));_0x51c859['attributes']=_0x51c859[_0xbe14('0x34')][_0xbe14('0x33')]?_0x51c859[_0xbe14('0x34')]:_0x5d5318[_0xbe14('0x2d')];if(_0xe417b[_0xbe14('0x2e')]['includeAll']){_0x51c859['include']=[{'all':!![]}];}_0x51c859=_[_0xbe14('0x3c')]({},_0x51c859,_0xe417b[_0xbe14('0x3d')]);return db[_0xbe14('0x28')][_0xbe14('0x44')](_0x51c859)['then'](handleEntityNotFound(_0x3272ae,null))[_0xbe14('0x22')](respondWithResult(_0x3272ae,null))[_0xbe14('0x45')](handleError(_0x3272ae,null));};exports['create']=function(_0x396e40,_0x2a35e5){return db[_0xbe14('0x28')][_0xbe14('0x46')](_0x396e40['body'],{})['then'](respondWithResult(_0x2a35e5,0xc9))[_0xbe14('0x45')](handleError(_0x2a35e5,null));};exports[_0xbe14('0x21')]=function(_0x4a1a37,_0x5acf90){if(_0x4a1a37[_0xbe14('0x47')]['id']){delete _0x4a1a37[_0xbe14('0x47')]['id'];}return db[_0xbe14('0x28')][_0xbe14('0x44')]({'where':{'id':_0x4a1a37[_0xbe14('0x43')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x5acf90,null))[_0xbe14('0x22')](saveUpdates(_0x4a1a37['body'],null))[_0xbe14('0x22')](respondWithResult(_0x5acf90,null))[_0xbe14('0x45')](handleError(_0x5acf90,null));};exports[_0xbe14('0x48')]=function(_0x22b1f8,_0x2fc073){return db['SalesforceConfiguration'][_0xbe14('0x44')]({'where':{'id':_0x22b1f8[_0xbe14('0x43')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x2fc073,null))[_0xbe14('0x22')](removeEntity(_0x2fc073,null))[_0xbe14('0x45')](handleError(_0x2fc073,null));};exports[_0xbe14('0x49')]=function(_0x505829,_0x5aeea9,_0x3a49f7){var _0x2bde72={};var _0x1c078d={};var _0x48554a;var _0x497b00;return db[_0xbe14('0x28')][_0xbe14('0x4a')]({'where':{'id':_0x505829['params']['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x5aeea9,null))[_0xbe14('0x22')](function(_0x50c2a0){if(_0x50c2a0){_0x48554a=_0x50c2a0;_0x1c078d[_0xbe14('0x2d')]=_['keys'](db[_0xbe14('0x4b')][_0xbe14('0x29')]);_0x1c078d[_0xbe14('0x2e')]=_['keys'](_0x505829[_0xbe14('0x2e')]);_0x1c078d[_0xbe14('0x30')]=_['intersection'](_0x1c078d[_0xbe14('0x2d')],_0x1c078d[_0xbe14('0x2e')]);_0x2bde72[_0xbe14('0x34')]=_[_0xbe14('0x31')](_0x1c078d[_0xbe14('0x2d')],qs['fields'](_0x505829[_0xbe14('0x2e')][_0xbe14('0x32')]));_0x2bde72[_0xbe14('0x34')]=_0x2bde72[_0xbe14('0x34')][_0xbe14('0x33')]?_0x2bde72[_0xbe14('0x34')]:_0x1c078d[_0xbe14('0x2d')];_0x2bde72['order']=qs[_0xbe14('0x38')](_0x505829[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x2bde72[_0xbe14('0x39')]=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x505829[_0xbe14('0x2e')],_0x1c078d[_0xbe14('0x30')]));if(_0x505829[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x2bde72[_0xbe14('0x39')]=_['merge'](_0x2bde72['where'],{'$or':_['map'](_0x2bde72[_0xbe14('0x34')],function(_0x1bfcbf){var _0x2f4e52={};_0x2f4e52[_0x1bfcbf]={'$like':'%'+_0x505829[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x2f4e52;})});}_0x2bde72=_[_0xbe14('0x3c')]({},_0x2bde72,_0x505829[_0xbe14('0x3d')]);return _0x48554a[_0xbe14('0x49')](_0x2bde72);}})[_0xbe14('0x22')](function(_0x451b0b){if(_0x451b0b){_0x497b00=_0x451b0b[_0xbe14('0x33')];if(!_0x505829[_0xbe14('0x2e')][_0xbe14('0x35')](_0xbe14('0x36'))){_0x2bde72[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x505829[_0xbe14('0x2e')][_0xbe14('0x1a')]);_0x2bde72[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x505829['query'][_0xbe14('0x1c')]);}return _0x48554a[_0xbe14('0x49')](_0x2bde72);}})[_0xbe14('0x22')](function(_0x46b49c){if(_0x46b49c){return _0x46b49c?{'count':_0x497b00,'rows':_0x46b49c}:null;}})[_0xbe14('0x22')](respondWithResult(_0x5aeea9,null))[_0xbe14('0x45')](handleError(_0x5aeea9,null));};exports[_0xbe14('0x4c')]=function(_0x310311,_0x23cb36,_0x100d43){var _0x5917d5={};var _0x18be56={};var _0x442ec4;var _0x2d4dd4;return db[_0xbe14('0x28')][_0xbe14('0x4a')]({'where':{'id':_0x310311['params']['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x23cb36,null))[_0xbe14('0x22')](function(_0x3d186b){if(_0x3d186b){_0x442ec4=_0x3d186b;_0x18be56[_0xbe14('0x2d')]=_[_0xbe14('0x2f')](db['SalesforceField'][_0xbe14('0x29')]);_0x18be56[_0xbe14('0x2e')]=_[_0xbe14('0x2f')](_0x310311[_0xbe14('0x2e')]);_0x18be56[_0xbe14('0x30')]=_[_0xbe14('0x31')](_0x18be56[_0xbe14('0x2d')],_0x18be56[_0xbe14('0x2e')]);_0x5917d5['attributes']=_[_0xbe14('0x31')](_0x18be56[_0xbe14('0x2d')],qs[_0xbe14('0x32')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x32')]));_0x5917d5[_0xbe14('0x34')]=_0x5917d5[_0xbe14('0x34')]['length']?_0x5917d5['attributes']:_0x18be56[_0xbe14('0x2d')];_0x5917d5[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x5917d5[_0xbe14('0x39')]=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x310311['query'],_0x18be56['filters']));if(_0x310311[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x5917d5[_0xbe14('0x39')]=_['merge'](_0x5917d5[_0xbe14('0x39')],{'$or':_[_0xbe14('0x27')](_0x5917d5[_0xbe14('0x34')],function(_0x1797dd){var _0x468e9f={};_0x468e9f[_0x1797dd]={'$like':'%'+_0x310311[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x468e9f;})});}_0x5917d5=_['merge']({},_0x5917d5,_0x310311[_0xbe14('0x3d')]);return _0x442ec4[_0xbe14('0x4c')](_0x5917d5);}})[_0xbe14('0x22')](function(_0x3afc5a){if(_0x3afc5a){_0x2d4dd4=_0x3afc5a[_0xbe14('0x33')];if(!_0x310311[_0xbe14('0x2e')][_0xbe14('0x35')]('nolimit')){_0x5917d5[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x1a')]);_0x5917d5[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x1c')]);}return _0x442ec4['getSubjects'](_0x5917d5);}})[_0xbe14('0x22')](function(_0x401968){if(_0x401968){return _0x401968?{'count':_0x2d4dd4,'rows':_0x401968}:null;}})[_0xbe14('0x22')](respondWithResult(_0x23cb36,null))[_0xbe14('0x45')](handleError(_0x23cb36,null));};exports[_0xbe14('0x4d')]=function(_0x17576b,_0x4d59ce,_0x176099){var _0x175213={};var _0x1edc66={};var _0x1b23a1;var _0x508455;return db[_0xbe14('0x28')][_0xbe14('0x4a')]({'where':{'id':_0x17576b[_0xbe14('0x43')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4d59ce,null))[_0xbe14('0x22')](function(_0x3d54e4){if(_0x3d54e4){_0x1b23a1=_0x3d54e4;_0x1edc66[_0xbe14('0x2d')]=_['keys'](db[_0xbe14('0x4b')]['rawAttributes']);_0x1edc66[_0xbe14('0x2e')]=_['keys'](_0x17576b[_0xbe14('0x2e')]);_0x1edc66[_0xbe14('0x30')]=_[_0xbe14('0x31')](_0x1edc66['model'],_0x1edc66[_0xbe14('0x2e')]);_0x175213[_0xbe14('0x34')]=_[_0xbe14('0x31')](_0x1edc66['model'],qs[_0xbe14('0x32')](_0x17576b[_0xbe14('0x2e')][_0xbe14('0x32')]));_0x175213[_0xbe14('0x34')]=_0x175213['attributes'][_0xbe14('0x33')]?_0x175213[_0xbe14('0x34')]:_0x1edc66[_0xbe14('0x2d')];_0x175213[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x17576b[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x175213['where']=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x17576b[_0xbe14('0x2e')],_0x1edc66['filters']));if(_0x17576b[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x175213[_0xbe14('0x39')]=_['merge'](_0x175213[_0xbe14('0x39')],{'$or':_[_0xbe14('0x27')](_0x175213['attributes'],function(_0x2be969){var _0x49990b={};_0x49990b[_0x2be969]={'$like':'%'+_0x17576b[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x49990b;})});}_0x175213=_['merge']({},_0x175213,_0x17576b['options']);return _0x1b23a1[_0xbe14('0x4d')](_0x175213);}})[_0xbe14('0x22')](function(_0x29287a){if(_0x29287a){_0x508455=_0x29287a['length'];if(!_0x17576b[_0xbe14('0x2e')][_0xbe14('0x35')](_0xbe14('0x36'))){_0x175213[_0xbe14('0x1a')]=qs['limit'](_0x17576b['query'][_0xbe14('0x1a')]);_0x175213[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x17576b[_0xbe14('0x2e')][_0xbe14('0x1c')]);}return _0x1b23a1[_0xbe14('0x4d')](_0x175213);}})[_0xbe14('0x22')](function(_0x4e5a63){if(_0x4e5a63){return _0x4e5a63?{'count':_0x508455,'rows':_0x4e5a63}:null;}})[_0xbe14('0x22')](respondWithResult(_0x4d59ce,null))['catch'](handleError(_0x4d59ce,null));};
\ No newline at end of file
+var _0xd5ec=['fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','include','find','catch','create','body','destroy','getFields','order','getSubjects','findOne','SalesforceField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','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/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','undefined','count','offset','Content-Range','json','reject','save','update','then','sendStatus','error','stack','name','map','SalesforceConfiguration','rawAttributes','key','model','keys','query','filters','attributes','intersection'];(function(_0xd0a847,_0x72562b){var _0x2536ec=function(_0x20e4db){while(--_0x20e4db){_0xd0a847['push'](_0xd0a847['shift']());}};_0x2536ec(++_0x72562b);}(_0xd5ec,0xb8));var _0xcd5e=function(_0x261b8a,_0x553ec4){_0x261b8a=_0x261b8a-0x0;var _0x3455e8=_0xd5ec[_0x261b8a];return _0x3455e8;};'use strict';var emlformat=require(_0xcd5e('0x0'));var rimraf=require(_0xcd5e('0x1'));var zipdir=require(_0xcd5e('0x2'));var jsonpatch=require(_0xcd5e('0x3'));var rp=require('request-promise');var moment=require(_0xcd5e('0x4'));var BPromise=require(_0xcd5e('0x5'));var Mustache=require(_0xcd5e('0x6'));var util=require(_0xcd5e('0x7'));var path=require(_0xcd5e('0x8'));var sox=require(_0xcd5e('0x9'));var csv=require(_0xcd5e('0xa'));var ejs=require(_0xcd5e('0xb'));var fs=require('fs');var fs_extra=require(_0xcd5e('0xc'));var _=require(_0xcd5e('0xd'));var squel=require(_0xcd5e('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcd5e('0xf'));var toCsv=require(_0xcd5e('0xa'));var querystring=require(_0xcd5e('0x10'));var Papa=require('papaparse');var Redis=require(_0xcd5e('0x11'));var authService=require(_0xcd5e('0x12'));var qs=require(_0xcd5e('0x13'));var as=require(_0xcd5e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcd5e('0x15'))('api');var utils=require(_0xcd5e('0x16'));var config=require(_0xcd5e('0x17'));var licenseUtil=require(_0xcd5e('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x139fd5,_0x270376){_0x270376=_0x270376||0xcc;return function(_0x3656f2){if(_0x3656f2){return _0x139fd5['sendStatus'](_0x270376);}return _0x139fd5[_0xcd5e('0x19')](_0x270376)[_0xcd5e('0x1a')]();};}function respondWithResult(_0x25f0b8,_0x32f947){_0x32f947=_0x32f947||0xc8;return function(_0x4203a9){if(_0x4203a9){return _0x25f0b8[_0xcd5e('0x19')](_0x32f947)['json'](_0x4203a9);}};}function respondWithFilteredResult(_0x44749c,_0x40a6de){return function(_0x35205c){if(_0x35205c){var _0x4fdb02=typeof _0x40a6de['offset']===_0xcd5e('0x1b')&&typeof _0x40a6de['limit']===_0xcd5e('0x1b');var _0x341716=_0x35205c[_0xcd5e('0x1c')];var _0xea7a65=_0x4fdb02?0x0:_0x40a6de[_0xcd5e('0x1d')];var _0x341417=_0x4fdb02?_0x35205c[_0xcd5e('0x1c')]:_0x40a6de[_0xcd5e('0x1d')]+_0x40a6de['limit'];var _0x296b89;if(_0x341417>=_0x341716){_0x341417=_0x341716;_0x296b89=0xc8;}else{_0x296b89=0xce;}_0x44749c[_0xcd5e('0x19')](_0x296b89);return _0x44749c['set'](_0xcd5e('0x1e'),_0xea7a65+'-'+_0x341417+'/'+_0x341716)[_0xcd5e('0x1f')](_0x35205c);}return null;};}function patchUpdates(_0x4148c0){return function(_0x390ee9){try{jsonpatch['apply'](_0x390ee9,_0x4148c0,!![]);}catch(_0x38b9b4){return BPromise[_0xcd5e('0x20')](_0x38b9b4);}return _0x390ee9[_0xcd5e('0x21')]();};}function saveUpdates(_0x49305e,_0x5da31f){return function(_0x9fb738){if(_0x9fb738){return _0x9fb738[_0xcd5e('0x22')](_0x49305e)[_0xcd5e('0x23')](function(_0x1b6ae8){return _0x1b6ae8;});}return null;};}function removeEntity(_0x88e21d,_0x3f2f15){return function(_0x109209){if(_0x109209){return _0x109209['destroy']()[_0xcd5e('0x23')](function(){_0x88e21d[_0xcd5e('0x19')](0xcc)[_0xcd5e('0x1a')]();});}};}function handleEntityNotFound(_0x1b5a89,_0x57e339){return function(_0x3053cf){if(!_0x3053cf){_0x1b5a89[_0xcd5e('0x24')](0x194);}return _0x3053cf;};}function handleError(_0x2371b8,_0x4d4125){_0x4d4125=_0x4d4125||0x1f4;return function(_0x8930c7){logger[_0xcd5e('0x25')](_0x8930c7[_0xcd5e('0x26')]);if(_0x8930c7[_0xcd5e('0x27')]){delete _0x8930c7[_0xcd5e('0x27')];}_0x2371b8[_0xcd5e('0x19')](_0x4d4125)['send'](_0x8930c7);};}exports['index']=function(_0x44ac50,_0x297f7b){var _0x1d3752={},_0x37ee24={},_0x2d365f={'count':0x0,'rows':[]};var _0x242a6b=_[_0xcd5e('0x28')](db[_0xcd5e('0x29')][_0xcd5e('0x2a')],function(_0x5a16a1){return{'name':_0x5a16a1['fieldName'],'type':_0x5a16a1['type'][_0xcd5e('0x2b')]};});_0x37ee24[_0xcd5e('0x2c')]=_['map'](_0x242a6b,_0xcd5e('0x27'));_0x37ee24['query']=_[_0xcd5e('0x2d')](_0x44ac50[_0xcd5e('0x2e')]);_0x37ee24[_0xcd5e('0x2f')]=_['intersection'](_0x37ee24[_0xcd5e('0x2c')],_0x37ee24[_0xcd5e('0x2e')]);_0x1d3752[_0xcd5e('0x30')]=_[_0xcd5e('0x31')](_0x37ee24[_0xcd5e('0x2c')],qs['fields'](_0x44ac50[_0xcd5e('0x2e')][_0xcd5e('0x32')]));_0x1d3752[_0xcd5e('0x30')]=_0x1d3752[_0xcd5e('0x30')][_0xcd5e('0x33')]?_0x1d3752['attributes']:_0x37ee24[_0xcd5e('0x2c')];if(!_0x44ac50[_0xcd5e('0x2e')][_0xcd5e('0x34')](_0xcd5e('0x35'))){_0x1d3752[_0xcd5e('0x36')]=qs[_0xcd5e('0x36')](_0x44ac50[_0xcd5e('0x2e')][_0xcd5e('0x36')]);_0x1d3752[_0xcd5e('0x1d')]=qs[_0xcd5e('0x1d')](_0x44ac50[_0xcd5e('0x2e')][_0xcd5e('0x1d')]);}_0x1d3752['order']=qs[_0xcd5e('0x37')](_0x44ac50[_0xcd5e('0x2e')][_0xcd5e('0x37')]);_0x1d3752[_0xcd5e('0x38')]=qs[_0xcd5e('0x2f')](_[_0xcd5e('0x39')](_0x44ac50[_0xcd5e('0x2e')],_0x37ee24[_0xcd5e('0x2f')]),_0x242a6b);if(_0x44ac50[_0xcd5e('0x2e')][_0xcd5e('0x3a')]){_0x1d3752[_0xcd5e('0x38')]=_[_0xcd5e('0x3b')](_0x1d3752[_0xcd5e('0x38')],{'$or':_[_0xcd5e('0x28')](_0x242a6b,function(_0x48a1c9){if(_0x48a1c9['type']!==_0xcd5e('0x3c')){var _0xc40d69={};_0xc40d69[_0x48a1c9[_0xcd5e('0x27')]]={'$like':'%'+_0x44ac50[_0xcd5e('0x2e')][_0xcd5e('0x3a')]+'%'};return _0xc40d69;}})});}_0x1d3752=_[_0xcd5e('0x3b')]({},_0x1d3752,_0x44ac50[_0xcd5e('0x3d')]);var _0x461717={'where':_0x1d3752[_0xcd5e('0x38')]};return db[_0xcd5e('0x29')][_0xcd5e('0x1c')](_0x461717)[_0xcd5e('0x23')](function(_0x279344){_0x2d365f[_0xcd5e('0x1c')]=_0x279344;if(_0x44ac50[_0xcd5e('0x2e')]['includeAll']){_0x1d3752['include']=[{'all':!![]}];}return db[_0xcd5e('0x29')][_0xcd5e('0x3e')](_0x1d3752);})['then'](function(_0x139538){_0x2d365f[_0xcd5e('0x3f')]=_0x139538;return _0x2d365f;})['then'](respondWithFilteredResult(_0x297f7b,_0x1d3752))['catch'](handleError(_0x297f7b,null));};exports[_0xcd5e('0x40')]=function(_0x4356e5,_0x3327ee){var _0x3efd50={'raw':![],'where':{'id':_0x4356e5[_0xcd5e('0x41')]['id']}},_0x50c2e7={};_0x50c2e7[_0xcd5e('0x2c')]=_[_0xcd5e('0x2d')](db[_0xcd5e('0x29')][_0xcd5e('0x2a')]);_0x50c2e7[_0xcd5e('0x2e')]=_['keys'](_0x4356e5[_0xcd5e('0x2e')]);_0x50c2e7[_0xcd5e('0x2f')]=_[_0xcd5e('0x31')](_0x50c2e7[_0xcd5e('0x2c')],_0x50c2e7[_0xcd5e('0x2e')]);_0x3efd50['attributes']=_[_0xcd5e('0x31')](_0x50c2e7[_0xcd5e('0x2c')],qs['fields'](_0x4356e5[_0xcd5e('0x2e')][_0xcd5e('0x32')]));_0x3efd50[_0xcd5e('0x30')]=_0x3efd50[_0xcd5e('0x30')][_0xcd5e('0x33')]?_0x3efd50[_0xcd5e('0x30')]:_0x50c2e7[_0xcd5e('0x2c')];if(_0x4356e5['query']['includeAll']){_0x3efd50[_0xcd5e('0x42')]=[{'all':!![]}];}_0x3efd50=_[_0xcd5e('0x3b')]({},_0x3efd50,_0x4356e5['options']);return db[_0xcd5e('0x29')][_0xcd5e('0x43')](_0x3efd50)['then'](handleEntityNotFound(_0x3327ee,null))[_0xcd5e('0x23')](respondWithResult(_0x3327ee,null))[_0xcd5e('0x44')](handleError(_0x3327ee,null));};exports[_0xcd5e('0x45')]=function(_0x78e82a,_0x598503){return db['SalesforceConfiguration'][_0xcd5e('0x45')](_0x78e82a[_0xcd5e('0x46')],{})[_0xcd5e('0x23')](respondWithResult(_0x598503,0xc9))[_0xcd5e('0x44')](handleError(_0x598503,null));};exports[_0xcd5e('0x22')]=function(_0x18f89a,_0x1326a2){if(_0x18f89a['body']['id']){delete _0x18f89a[_0xcd5e('0x46')]['id'];}return db[_0xcd5e('0x29')][_0xcd5e('0x43')]({'where':{'id':_0x18f89a[_0xcd5e('0x41')]['id']}})[_0xcd5e('0x23')](handleEntityNotFound(_0x1326a2,null))[_0xcd5e('0x23')](saveUpdates(_0x18f89a[_0xcd5e('0x46')],null))['then'](respondWithResult(_0x1326a2,null))[_0xcd5e('0x44')](handleError(_0x1326a2,null));};exports[_0xcd5e('0x47')]=function(_0x57802f,_0x4c6453){return db[_0xcd5e('0x29')][_0xcd5e('0x43')]({'where':{'id':_0x57802f[_0xcd5e('0x41')]['id']}})[_0xcd5e('0x23')](handleEntityNotFound(_0x4c6453,null))[_0xcd5e('0x23')](removeEntity(_0x4c6453,null))[_0xcd5e('0x44')](handleError(_0x4c6453,null));};exports[_0xcd5e('0x48')]=function(_0x2b6746,_0x2c24a7,_0x424f8c){var _0x58a1cb={};var _0x1dfb1d={};var _0x1c0de6;var _0x5979b6;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x2b6746[_0xcd5e('0x41')]['id']}})[_0xcd5e('0x23')](handleEntityNotFound(_0x2c24a7,null))['then'](function(_0x2ea05a){if(_0x2ea05a){_0x1c0de6=_0x2ea05a;_0x1dfb1d[_0xcd5e('0x2c')]=_['keys'](db['SalesforceField'][_0xcd5e('0x2a')]);_0x1dfb1d['query']=_[_0xcd5e('0x2d')](_0x2b6746['query']);_0x1dfb1d[_0xcd5e('0x2f')]=_[_0xcd5e('0x31')](_0x1dfb1d[_0xcd5e('0x2c')],_0x1dfb1d['query']);_0x58a1cb[_0xcd5e('0x30')]=_['intersection'](_0x1dfb1d[_0xcd5e('0x2c')],qs['fields'](_0x2b6746[_0xcd5e('0x2e')][_0xcd5e('0x32')]));_0x58a1cb[_0xcd5e('0x30')]=_0x58a1cb['attributes'][_0xcd5e('0x33')]?_0x58a1cb[_0xcd5e('0x30')]:_0x1dfb1d[_0xcd5e('0x2c')];_0x58a1cb[_0xcd5e('0x49')]=qs[_0xcd5e('0x37')](_0x2b6746[_0xcd5e('0x2e')][_0xcd5e('0x37')]);_0x58a1cb[_0xcd5e('0x38')]=qs[_0xcd5e('0x2f')](_[_0xcd5e('0x39')](_0x2b6746[_0xcd5e('0x2e')],_0x1dfb1d[_0xcd5e('0x2f')]));if(_0x2b6746[_0xcd5e('0x2e')][_0xcd5e('0x3a')]){_0x58a1cb[_0xcd5e('0x38')]=_[_0xcd5e('0x3b')](_0x58a1cb[_0xcd5e('0x38')],{'$or':_[_0xcd5e('0x28')](_0x58a1cb['attributes'],function(_0x1bed6f){var _0x489aba={};_0x489aba[_0x1bed6f]={'$like':'%'+_0x2b6746[_0xcd5e('0x2e')][_0xcd5e('0x3a')]+'%'};return _0x489aba;})});}_0x58a1cb=_[_0xcd5e('0x3b')]({},_0x58a1cb,_0x2b6746['options']);return _0x1c0de6['getFields'](_0x58a1cb);}})[_0xcd5e('0x23')](function(_0x28ea2e){if(_0x28ea2e){_0x5979b6=_0x28ea2e[_0xcd5e('0x33')];if(!_0x2b6746[_0xcd5e('0x2e')]['hasOwnProperty']('nolimit')){_0x58a1cb[_0xcd5e('0x36')]=qs[_0xcd5e('0x36')](_0x2b6746[_0xcd5e('0x2e')][_0xcd5e('0x36')]);_0x58a1cb['offset']=qs['offset'](_0x2b6746['query'][_0xcd5e('0x1d')]);}return _0x1c0de6[_0xcd5e('0x48')](_0x58a1cb);}})['then'](function(_0x53fbd3){if(_0x53fbd3){return _0x53fbd3?{'count':_0x5979b6,'rows':_0x53fbd3}:null;}})[_0xcd5e('0x23')](respondWithResult(_0x2c24a7,null))[_0xcd5e('0x44')](handleError(_0x2c24a7,null));};exports[_0xcd5e('0x4a')]=function(_0x3e6482,_0xbde534,_0x57a4a6){var _0x3c1f7f={};var _0x225db5={};var _0x3d9e7a;var _0x4d05d6;return db[_0xcd5e('0x29')][_0xcd5e('0x4b')]({'where':{'id':_0x3e6482[_0xcd5e('0x41')]['id']}})[_0xcd5e('0x23')](handleEntityNotFound(_0xbde534,null))['then'](function(_0x29e04e){if(_0x29e04e){_0x3d9e7a=_0x29e04e;_0x225db5['model']=_[_0xcd5e('0x2d')](db[_0xcd5e('0x4c')][_0xcd5e('0x2a')]);_0x225db5[_0xcd5e('0x2e')]=_[_0xcd5e('0x2d')](_0x3e6482[_0xcd5e('0x2e')]);_0x225db5['filters']=_[_0xcd5e('0x31')](_0x225db5[_0xcd5e('0x2c')],_0x225db5[_0xcd5e('0x2e')]);_0x3c1f7f[_0xcd5e('0x30')]=_[_0xcd5e('0x31')](_0x225db5['model'],qs['fields'](_0x3e6482[_0xcd5e('0x2e')][_0xcd5e('0x32')]));_0x3c1f7f[_0xcd5e('0x30')]=_0x3c1f7f[_0xcd5e('0x30')][_0xcd5e('0x33')]?_0x3c1f7f[_0xcd5e('0x30')]:_0x225db5['model'];_0x3c1f7f[_0xcd5e('0x49')]=qs[_0xcd5e('0x37')](_0x3e6482[_0xcd5e('0x2e')][_0xcd5e('0x37')]);_0x3c1f7f['where']=qs[_0xcd5e('0x2f')](_[_0xcd5e('0x39')](_0x3e6482[_0xcd5e('0x2e')],_0x225db5['filters']));if(_0x3e6482[_0xcd5e('0x2e')][_0xcd5e('0x3a')]){_0x3c1f7f[_0xcd5e('0x38')]=_['merge'](_0x3c1f7f[_0xcd5e('0x38')],{'$or':_['map'](_0x3c1f7f[_0xcd5e('0x30')],function(_0x3fc81c){var _0xcbd97f={};_0xcbd97f[_0x3fc81c]={'$like':'%'+_0x3e6482[_0xcd5e('0x2e')][_0xcd5e('0x3a')]+'%'};return _0xcbd97f;})});}_0x3c1f7f=_[_0xcd5e('0x3b')]({},_0x3c1f7f,_0x3e6482[_0xcd5e('0x3d')]);return _0x3d9e7a['getSubjects'](_0x3c1f7f);}})[_0xcd5e('0x23')](function(_0x4a4212){if(_0x4a4212){_0x4d05d6=_0x4a4212[_0xcd5e('0x33')];if(!_0x3e6482[_0xcd5e('0x2e')]['hasOwnProperty'](_0xcd5e('0x35'))){_0x3c1f7f[_0xcd5e('0x36')]=qs[_0xcd5e('0x36')](_0x3e6482[_0xcd5e('0x2e')]['limit']);_0x3c1f7f[_0xcd5e('0x1d')]=qs[_0xcd5e('0x1d')](_0x3e6482[_0xcd5e('0x2e')][_0xcd5e('0x1d')]);}return _0x3d9e7a[_0xcd5e('0x4a')](_0x3c1f7f);}})[_0xcd5e('0x23')](function(_0x541e19){if(_0x541e19){return _0x541e19?{'count':_0x4d05d6,'rows':_0x541e19}:null;}})[_0xcd5e('0x23')](respondWithResult(_0xbde534,null))[_0xcd5e('0x44')](handleError(_0xbde534,null));};exports[_0xcd5e('0x4d')]=function(_0x1a941a,_0x3cc57b,_0x3702ca){var _0x3324c7={};var _0x180f65={};var _0x9825aa;var _0x232ea5;return db[_0xcd5e('0x29')][_0xcd5e('0x4b')]({'where':{'id':_0x1a941a['params']['id']}})[_0xcd5e('0x23')](handleEntityNotFound(_0x3cc57b,null))[_0xcd5e('0x23')](function(_0x51bcc7){if(_0x51bcc7){_0x9825aa=_0x51bcc7;_0x180f65[_0xcd5e('0x2c')]=_[_0xcd5e('0x2d')](db[_0xcd5e('0x4c')]['rawAttributes']);_0x180f65[_0xcd5e('0x2e')]=_[_0xcd5e('0x2d')](_0x1a941a[_0xcd5e('0x2e')]);_0x180f65[_0xcd5e('0x2f')]=_[_0xcd5e('0x31')](_0x180f65['model'],_0x180f65[_0xcd5e('0x2e')]);_0x3324c7['attributes']=_[_0xcd5e('0x31')](_0x180f65['model'],qs[_0xcd5e('0x32')](_0x1a941a['query'][_0xcd5e('0x32')]));_0x3324c7['attributes']=_0x3324c7['attributes'][_0xcd5e('0x33')]?_0x3324c7['attributes']:_0x180f65[_0xcd5e('0x2c')];_0x3324c7[_0xcd5e('0x49')]=qs[_0xcd5e('0x37')](_0x1a941a['query'][_0xcd5e('0x37')]);_0x3324c7[_0xcd5e('0x38')]=qs['filters'](_[_0xcd5e('0x39')](_0x1a941a['query'],_0x180f65[_0xcd5e('0x2f')]));if(_0x1a941a[_0xcd5e('0x2e')][_0xcd5e('0x3a')]){_0x3324c7[_0xcd5e('0x38')]=_[_0xcd5e('0x3b')](_0x3324c7[_0xcd5e('0x38')],{'$or':_['map'](_0x3324c7['attributes'],function(_0xc973fd){var _0x1c9f3e={};_0x1c9f3e[_0xc973fd]={'$like':'%'+_0x1a941a[_0xcd5e('0x2e')][_0xcd5e('0x3a')]+'%'};return _0x1c9f3e;})});}_0x3324c7=_[_0xcd5e('0x3b')]({},_0x3324c7,_0x1a941a['options']);return _0x9825aa[_0xcd5e('0x4d')](_0x3324c7);}})[_0xcd5e('0x23')](function(_0x8ae7c7){if(_0x8ae7c7){_0x232ea5=_0x8ae7c7[_0xcd5e('0x33')];if(!_0x1a941a['query']['hasOwnProperty'](_0xcd5e('0x35'))){_0x3324c7[_0xcd5e('0x36')]=qs['limit'](_0x1a941a['query'][_0xcd5e('0x36')]);_0x3324c7[_0xcd5e('0x1d')]=qs[_0xcd5e('0x1d')](_0x1a941a[_0xcd5e('0x2e')]['offset']);}return _0x9825aa[_0xcd5e('0x4d')](_0x3324c7);}})[_0xcd5e('0x23')](function(_0x5bda13){if(_0x5bda13){return _0x5bda13?{'count':_0x232ea5,'rows':_0x5bda13}:null;}})['then'](respondWithResult(_0x3cc57b,null))[_0xcd5e('0x44')](handleError(_0x3cc57b,null));};
\ No newline at end of file
index 9e8c0cd..644fa13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79aa=['int_salesforce_configurations','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SalesforceConfiguration'];(function(_0x3818f0,_0x328080){var _0x5466cb=function(_0x50932c){while(--_0x50932c){_0x3818f0['push'](_0x3818f0['shift']());}};_0x5466cb(++_0x328080);}(_0x79aa,0x177));var _0xa79a=function(_0x290907,_0x1e8855){_0x290907=_0x290907-0x0;var _0x4d5e48=_0x79aa[_0x290907];return _0x4d5e48;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa79a('0x0'))(_0xa79a('0x1'));var moment=require(_0xa79a('0x2'));var BPromise=require(_0xa79a('0x3'));var rp=require(_0xa79a('0x4'));var fs=require('fs');var path=require(_0xa79a('0x5'));var rimraf=require(_0xa79a('0x6'));var config=require(_0xa79a('0x7'));var attributes=require('./intSalesforceConfiguration.attributes');module['exports']=function(_0x184682,_0x5b8d4d){return _0x184682[_0xa79a('0x8')](_0xa79a('0x9'),attributes,{'tableName':_0xa79a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9cd7=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','int_salesforce_configurations','lodash'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x9cd7,0x1b9));var _0x79cd=function(_0x4f2039,_0x528e8e){_0x4f2039=_0x4f2039-0x0;var _0x9643db=_0x9cd7[_0x4f2039];return _0x9643db;};'use strict';var _=require(_0x79cd('0x0'));var util=require(_0x79cd('0x1'));var logger=require(_0x79cd('0x2'))(_0x79cd('0x3'));var moment=require(_0x79cd('0x4'));var BPromise=require(_0x79cd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x79cd('0x6'));var rimraf=require(_0x79cd('0x7'));var config=require(_0x79cd('0x8'));var attributes=require(_0x79cd('0x9'));module['exports']=function(_0xbf9065,_0x21bf75){return _0xbf9065[_0x79cd('0xa')](_0x79cd('0xb'),attributes,{'tableName':_0x79cd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce43f15..5c21799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bab=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','info','SalesforceConfiguration,\x20%s,\x20%s','debug','stringify','error','message','request\x20sent','result','catch','lodash'];(function(_0x3e061d,_0x59fa63){var _0xbb3fa2=function(_0x1b1c9a){while(--_0x1b1c9a){_0x3e061d['push'](_0x3e061d['shift']());}};_0xbb3fa2(++_0x59fa63);}(_0x9bab,0x1cb));var _0xb9ba=function(_0x4d6740,_0x55b1c3){_0x4d6740=_0x4d6740-0x0;var _0x418154=_0x9bab[_0x4d6740];return _0x418154;};'use strict';var _=require(_0xb9ba('0x0'));var util=require(_0xb9ba('0x1'));var moment=require(_0xb9ba('0x2'));var BPromise=require(_0xb9ba('0x3'));var rs=require(_0xb9ba('0x4'));var fs=require('fs');var Redis=require(_0xb9ba('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb9ba('0x6'));var logger=require(_0xb9ba('0x7'))(_0xb9ba('0x8'));var config=require(_0xb9ba('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb9ba('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b78c2,_0x3e41ea,_0xdbf524){return new BPromise(function(_0x4371d8,_0x4dbaba){return client['request'](_0x2b78c2,_0xdbf524)['then'](function(_0x6999){logger[_0xb9ba('0xb')](_0xb9ba('0xc'),_0x3e41ea,'request\x20sent');logger[_0xb9ba('0xd')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x3e41ea,'request\x20sent',JSON[_0xb9ba('0xe')](_0x6999));if(_0x6999[_0xb9ba('0xf')]){if(_0x6999[_0xb9ba('0xf')]['code']===0x1f4){logger[_0xb9ba('0xf')](_0xb9ba('0xc'),_0x3e41ea,_0x6999['error']['message']);return _0x4dbaba(_0x6999[_0xb9ba('0xf')][_0xb9ba('0x10')]);}logger[_0xb9ba('0xf')](_0xb9ba('0xc'),_0x3e41ea,_0x6999['error'][_0xb9ba('0x10')]);return _0x4371d8(_0x6999[_0xb9ba('0xf')][_0xb9ba('0x10')]);}else{logger[_0xb9ba('0xb')](_0xb9ba('0xc'),_0x3e41ea,_0xb9ba('0x11'));_0x4371d8(_0x6999[_0xb9ba('0x12')][_0xb9ba('0x10')]);}})[_0xb9ba('0x13')](function(_0x508461){logger[_0xb9ba('0xf')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3e41ea,_0x508461);_0x4dbaba(_0x508461);});});}
\ No newline at end of file
+var _0x5f84=['../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceConfiguration,\x20%s,\x20%s','message','catch','moment','bluebird','randomstring'];(function(_0x13bf54,_0xadc752){var _0x268d8b=function(_0xbd7826){while(--_0xbd7826){_0x13bf54['push'](_0x13bf54['shift']());}};_0x268d8b(++_0xadc752);}(_0x5f84,0x165));var _0x45f8=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x5f84[_0x5d6456];return _0x4d66c1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x45f8('0x0'));var BPromise=require(_0x45f8('0x1'));var rs=require(_0x45f8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x45f8('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x45f8('0x4'));var jayson=require(_0x45f8('0x5'));var client=jayson[_0x45f8('0x6')][_0x45f8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5e2a97,_0xd16cb9,_0x15c5d4){return new BPromise(function(_0x200f2a,_0x2d0a76){return client[_0x45f8('0x8')](_0x5e2a97,_0x15c5d4)[_0x45f8('0x9')](function(_0x3be86a){logger[_0x45f8('0xa')]('SalesforceConfiguration,\x20%s,\x20%s',_0xd16cb9,_0x45f8('0xb'));logger[_0x45f8('0xc')](_0x45f8('0xd'),_0xd16cb9,_0x45f8('0xb'),JSON[_0x45f8('0xe')](_0x3be86a));if(_0x3be86a[_0x45f8('0xf')]){if(_0x3be86a[_0x45f8('0xf')][_0x45f8('0x10')]===0x1f4){logger[_0x45f8('0xf')](_0x45f8('0x11'),_0xd16cb9,_0x3be86a['error'][_0x45f8('0x12')]);return _0x2d0a76(_0x3be86a['error'][_0x45f8('0x12')]);}logger[_0x45f8('0xf')](_0x45f8('0x11'),_0xd16cb9,_0x3be86a[_0x45f8('0xf')][_0x45f8('0x12')]);return _0x200f2a(_0x3be86a[_0x45f8('0xf')][_0x45f8('0x12')]);}else{logger[_0x45f8('0xa')](_0x45f8('0x11'),_0xd16cb9,_0x45f8('0xb'));_0x200f2a(_0x3be86a['result']['message']);}})[_0x45f8('0x13')](function(_0x525043){logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0xd16cb9,_0x525043);_0x2d0a76(_0x525043);});});}
\ No newline at end of file
index dd16bd8..684c65a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e5e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','get','/:id','show','create','put','delete','destroy','exports','connect-timeout','Router','fs-extra'];(function(_0x2a5245,_0x164c03){var _0x144461=function(_0x5b2fb2){while(--_0x5b2fb2){_0x2a5245['push'](_0x2a5245['shift']());}};_0x144461(++_0x164c03);}(_0x4e5e,0x10d));var _0xe4e5=function(_0x12db83,_0x1cb1ae){_0x12db83=_0x12db83-0x0;var _0x5a1863=_0x4e5e[_0x12db83];return _0x5a1863;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xe4e5('0x0'));var express=require('express');var router=express[_0xe4e5('0x1')]();var fs_extra=require(_0xe4e5('0x2'));var auth=require(_0xe4e5('0x3'));var interaction=require(_0xe4e5('0x4'));var config=require(_0xe4e5('0x5'));var controller=require(_0xe4e5('0x6'));router['get']('/',auth[_0xe4e5('0x7')](),controller['index']);router[_0xe4e5('0x8')](_0xe4e5('0x9'),auth[_0xe4e5('0x7')](),controller[_0xe4e5('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe4e5('0xb')]);router[_0xe4e5('0xc')](_0xe4e5('0x9'),auth[_0xe4e5('0x7')](),controller['update']);router[_0xe4e5('0xd')]('/:id',auth[_0xe4e5('0x7')](),controller[_0xe4e5('0xe')]);module[_0xe4e5('0xf')]=router;
\ No newline at end of file
+var _0xa58d=['connect-timeout','express','Router','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','/:id','show','post','create','put','destroy','multer','util','path'];(function(_0x33b520,_0x51bc9b){var _0x5598f3=function(_0x18ecc7){while(--_0x18ecc7){_0x33b520['push'](_0x33b520['shift']());}};_0x5598f3(++_0x51bc9b);}(_0xa58d,0xcd));var _0xda58=function(_0x31a718,_0x1a6668){_0x31a718=_0x31a718-0x0;var _0x357082=_0xa58d[_0x31a718];return _0x357082;};'use strict';var multer=require(_0xda58('0x0'));var util=require(_0xda58('0x1'));var path=require(_0xda58('0x2'));var timeout=require(_0xda58('0x3'));var express=require(_0xda58('0x4'));var router=express[_0xda58('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xda58('0x6'));var controller=require(_0xda58('0x7'));router[_0xda58('0x8')]('/',auth[_0xda58('0x9')](),controller['index']);router[_0xda58('0x8')](_0xda58('0xa'),auth['isAuthenticated'](),controller[_0xda58('0xb')]);router[_0xda58('0xc')]('/',auth[_0xda58('0x9')](),controller[_0xda58('0xd')]);router[_0xda58('0xe')](_0xda58('0xa'),auth[_0xda58('0x9')](),controller['update']);router['delete']('/:id',auth[_0xda58('0x9')](),controller[_0xda58('0xf')]);module['exports']=router;
\ No newline at end of file
index ae2c2b6..790cdbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11f9=['variable','keyValue','picklist','string','STRING','customVariable','sequelize','ENUM'];(function(_0x293a7b,_0x33ae9b){var _0x3fabb=function(_0xb0c88f){while(--_0xb0c88f){_0x293a7b['push'](_0x293a7b['shift']());}};_0x3fabb(++_0x33ae9b);}(_0x11f9,0xa6));var _0x911f=function(_0x25d020,_0x1ea8ef){_0x25d020=_0x25d020-0x0;var _0x1d2d88=_0x11f9[_0x25d020];return _0x1d2d88;};'use strict';var Sequelize=require(_0x911f('0x0'));module['exports']={'type':{'type':Sequelize[_0x911f('0x1')]('string',_0x911f('0x2'),'customVariable',_0x911f('0x3'),_0x911f('0x4')),'defaultValue':_0x911f('0x5')},'content':{'type':Sequelize[_0x911f('0x6')]},'key':{'type':Sequelize[_0x911f('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x911f('0x2'),_0x911f('0x7'))},'keyContent':{'type':Sequelize[_0x911f('0x6')]},'idField':{'type':Sequelize[_0x911f('0x6')]},'variableName':{'type':Sequelize[_0x911f('0x6')]}};
\ No newline at end of file
+var _0x9c8c=['STRING','sequelize','exports','ENUM','string','customVariable','keyValue','picklist'];(function(_0xc4dbc9,_0x1aa6b6){var _0x531773=function(_0x5941d1){while(--_0x5941d1){_0xc4dbc9['push'](_0xc4dbc9['shift']());}};_0x531773(++_0x1aa6b6);}(_0x9c8c,0x1a1));var _0xc9c8=function(_0x29ec6f,_0x3d5304){_0x29ec6f=_0x29ec6f-0x0;var _0x44438c=_0x9c8c[_0x29ec6f];return _0x44438c;};'use strict';var Sequelize=require(_0xc9c8('0x0'));module[_0xc9c8('0x1')]={'type':{'type':Sequelize[_0xc9c8('0x2')](_0xc9c8('0x3'),'variable',_0xc9c8('0x4'),_0xc9c8('0x5'),_0xc9c8('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xc9c8('0x7')]},'key':{'type':Sequelize[_0xc9c8('0x7')]},'keyType':{'type':Sequelize[_0xc9c8('0x2')](_0xc9c8('0x3'),'variable',_0xc9c8('0x4'))},'keyContent':{'type':Sequelize[_0xc9c8('0x7')]},'idField':{'type':Sequelize[_0xc9c8('0x7')]},'variableName':{'type':Sequelize[_0xc9c8('0x7')]}};
\ No newline at end of file
index b68d9a1..c2a1235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbedf=['apply','reject','update','then','end','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','nolimit','order','sort','where','filters','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','merge','create','body','find','destroy','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','count','limit','set','Content-Range'];(function(_0x17ddcf,_0xf29e0c){var _0xaf20d9=function(_0x139001){while(--_0x139001){_0x17ddcf['push'](_0x17ddcf['shift']());}};_0xaf20d9(++_0xf29e0c);}(_0xbedf,0x15e));var _0xfbed=function(_0x1f1cc7,_0x26f365){_0x1f1cc7=_0x1f1cc7-0x0;var _0x5f49e9=_0xbedf[_0x1f1cc7];return _0x5f49e9;};'use strict';var emlformat=require(_0xfbed('0x0'));var rimraf=require(_0xfbed('0x1'));var zipdir=require(_0xfbed('0x2'));var jsonpatch=require(_0xfbed('0x3'));var rp=require('request-promise');var moment=require(_0xfbed('0x4'));var BPromise=require(_0xfbed('0x5'));var Mustache=require(_0xfbed('0x6'));var util=require('util');var path=require(_0xfbed('0x7'));var sox=require(_0xfbed('0x8'));var csv=require(_0xfbed('0x9'));var ejs=require(_0xfbed('0xa'));var fs=require('fs');var fs_extra=require(_0xfbed('0xb'));var _=require(_0xfbed('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfbed('0xd'));var deskjs=require(_0xfbed('0xe'));var toCsv=require(_0xfbed('0x9'));var querystring=require(_0xfbed('0xf'));var Papa=require(_0xfbed('0x10'));var Redis=require(_0xfbed('0x11'));var authService=require(_0xfbed('0x12'));var qs=require(_0xfbed('0x13'));var as=require(_0xfbed('0x14'));var hardwareService=require(_0xfbed('0x15'));var logger=require(_0xfbed('0x16'))(_0xfbed('0x17'));var utils=require(_0xfbed('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xfbed('0x19'));var db=require(_0xfbed('0x1a'))['db'];function respondWithStatusCode(_0xe16fa,_0x3bb958){_0x3bb958=_0x3bb958||0xcc;return function(_0x28f342){if(_0x28f342){return _0xe16fa[_0xfbed('0x1b')](_0x3bb958);}return _0xe16fa['status'](_0x3bb958)['end']();};}function respondWithResult(_0x41223f,_0x59cd1f){_0x59cd1f=_0x59cd1f||0xc8;return function(_0x54c824){if(_0x54c824){return _0x41223f[_0xfbed('0x1c')](_0x59cd1f)[_0xfbed('0x1d')](_0x54c824);}};}function respondWithFilteredResult(_0x1fc7eb,_0x34480c){return function(_0xb61e6d){if(_0xb61e6d){var _0x20536b=typeof _0x34480c[_0xfbed('0x1e')]==='undefined'&&typeof _0x34480c['limit']==='undefined';var _0x10ccbf=_0xb61e6d[_0xfbed('0x1f')];var _0x4d5b0c=_0x20536b?0x0:_0x34480c[_0xfbed('0x1e')];var _0x6c0c2=_0x20536b?_0xb61e6d[_0xfbed('0x1f')]:_0x34480c[_0xfbed('0x1e')]+_0x34480c[_0xfbed('0x20')];var _0x1ba0a4;if(_0x6c0c2>=_0x10ccbf){_0x6c0c2=_0x10ccbf;_0x1ba0a4=0xc8;}else{_0x1ba0a4=0xce;}_0x1fc7eb[_0xfbed('0x1c')](_0x1ba0a4);return _0x1fc7eb[_0xfbed('0x21')](_0xfbed('0x22'),_0x4d5b0c+'-'+_0x6c0c2+'/'+_0x10ccbf)['json'](_0xb61e6d);}return null;};}function patchUpdates(_0x51742b){return function(_0x3749f4){try{jsonpatch[_0xfbed('0x23')](_0x3749f4,_0x51742b,!![]);}catch(_0x4f9ce2){return BPromise[_0xfbed('0x24')](_0x4f9ce2);}return _0x3749f4['save']();};}function saveUpdates(_0x533ca3,_0xeee0a6){return function(_0x84582a){if(_0x84582a){return _0x84582a[_0xfbed('0x25')](_0x533ca3)[_0xfbed('0x26')](function(_0x3d7185){return _0x3d7185;});}return null;};}function removeEntity(_0x32096c,_0x25667){return function(_0x3038d1){if(_0x3038d1){return _0x3038d1['destroy']()[_0xfbed('0x26')](function(){_0x32096c[_0xfbed('0x1c')](0xcc)[_0xfbed('0x27')]();});}};}function handleEntityNotFound(_0x135d8d,_0x57af8a){return function(_0x29807d){if(!_0x29807d){_0x135d8d[_0xfbed('0x1b')](0x194);}return _0x29807d;};}function handleError(_0x5a6e54,_0x19b1e2){_0x19b1e2=_0x19b1e2||0x1f4;return function(_0x1ea4a9){logger['error'](_0x1ea4a9[_0xfbed('0x28')]);if(_0x1ea4a9[_0xfbed('0x29')]){delete _0x1ea4a9['name'];}_0x5a6e54[_0xfbed('0x1c')](_0x19b1e2)[_0xfbed('0x2a')](_0x1ea4a9);};}exports[_0xfbed('0x2b')]=function(_0x41db9a,_0x380959){var _0x1431b1={},_0x2e7f91={},_0x3a9ec8={'count':0x0,'rows':[]};var _0xd84f38=_[_0xfbed('0x2c')](db[_0xfbed('0x2d')][_0xfbed('0x2e')],function(_0x1fd61c){return{'name':_0x1fd61c[_0xfbed('0x2f')],'type':_0x1fd61c[_0xfbed('0x30')][_0xfbed('0x31')]};});_0x2e7f91[_0xfbed('0x32')]=_[_0xfbed('0x2c')](_0xd84f38,_0xfbed('0x29'));_0x2e7f91['query']=_[_0xfbed('0x33')](_0x41db9a[_0xfbed('0x34')]);_0x2e7f91['filters']=_[_0xfbed('0x35')](_0x2e7f91['model'],_0x2e7f91[_0xfbed('0x34')]);_0x1431b1[_0xfbed('0x36')]=_[_0xfbed('0x35')](_0x2e7f91[_0xfbed('0x32')],qs['fields'](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x37')]));_0x1431b1['attributes']=_0x1431b1['attributes']['length']?_0x1431b1[_0xfbed('0x36')]:_0x2e7f91[_0xfbed('0x32')];if(!_0x41db9a[_0xfbed('0x34')]['hasOwnProperty'](_0xfbed('0x38'))){_0x1431b1[_0xfbed('0x20')]=qs[_0xfbed('0x20')](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x20')]);_0x1431b1['offset']=qs[_0xfbed('0x1e')](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x1e')]);}_0x1431b1[_0xfbed('0x39')]=qs['sort'](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x3a')]);_0x1431b1[_0xfbed('0x3b')]=qs[_0xfbed('0x3c')](_['pick'](_0x41db9a[_0xfbed('0x34')],_0x2e7f91['filters']),_0xd84f38);if(_0x41db9a[_0xfbed('0x34')][_0xfbed('0x3d')]){_0x1431b1[_0xfbed('0x3b')]=_['merge'](_0x1431b1[_0xfbed('0x3b')],{'$or':_[_0xfbed('0x2c')](_0xd84f38,function(_0x36dc4c){if(_0x36dc4c['type']!==_0xfbed('0x3e')){var _0x49adb3={};_0x49adb3[_0x36dc4c['name']]={'$like':'%'+_0x41db9a[_0xfbed('0x34')][_0xfbed('0x3d')]+'%'};return _0x49adb3;}})});}_0x1431b1=_['merge']({},_0x1431b1,_0x41db9a[_0xfbed('0x3f')]);var _0x70ba1={'where':_0x1431b1[_0xfbed('0x3b')]};return db[_0xfbed('0x2d')][_0xfbed('0x1f')](_0x70ba1)[_0xfbed('0x26')](function(_0x17aab3){_0x3a9ec8[_0xfbed('0x1f')]=_0x17aab3;if(_0x41db9a[_0xfbed('0x34')][_0xfbed('0x40')]){_0x1431b1[_0xfbed('0x41')]=[{'all':!![]}];}return db[_0xfbed('0x2d')][_0xfbed('0x42')](_0x1431b1);})[_0xfbed('0x26')](function(_0x4fb286){_0x3a9ec8[_0xfbed('0x43')]=_0x4fb286;return _0x3a9ec8;})[_0xfbed('0x26')](respondWithFilteredResult(_0x380959,_0x1431b1))[_0xfbed('0x44')](handleError(_0x380959,null));};exports[_0xfbed('0x45')]=function(_0x5ef7d2,_0x3672ae){var _0x2e1875={'raw':!![],'where':{'id':_0x5ef7d2['params']['id']}},_0x7d2190={};_0x7d2190[_0xfbed('0x32')]=_[_0xfbed('0x33')](db['SalesforceField']['rawAttributes']);_0x7d2190[_0xfbed('0x34')]=_['keys'](_0x5ef7d2[_0xfbed('0x34')]);_0x7d2190['filters']=_[_0xfbed('0x35')](_0x7d2190[_0xfbed('0x32')],_0x7d2190[_0xfbed('0x34')]);_0x2e1875['attributes']=_[_0xfbed('0x35')](_0x7d2190[_0xfbed('0x32')],qs[_0xfbed('0x37')](_0x5ef7d2[_0xfbed('0x34')][_0xfbed('0x37')]));_0x2e1875[_0xfbed('0x36')]=_0x2e1875['attributes'][_0xfbed('0x46')]?_0x2e1875[_0xfbed('0x36')]:_0x7d2190[_0xfbed('0x32')];if(_0x5ef7d2[_0xfbed('0x34')][_0xfbed('0x40')]){_0x2e1875['include']=[{'all':!![]}];}_0x2e1875=_[_0xfbed('0x47')]({},_0x2e1875,_0x5ef7d2[_0xfbed('0x3f')]);return db[_0xfbed('0x2d')]['find'](_0x2e1875)[_0xfbed('0x26')](handleEntityNotFound(_0x3672ae,null))['then'](respondWithResult(_0x3672ae,null))[_0xfbed('0x44')](handleError(_0x3672ae,null));};exports[_0xfbed('0x48')]=function(_0x4e0d79,_0x2875a8){return db[_0xfbed('0x2d')]['create'](_0x4e0d79['body'],{})[_0xfbed('0x26')](respondWithResult(_0x2875a8,0xc9))[_0xfbed('0x44')](handleError(_0x2875a8,null));};exports[_0xfbed('0x25')]=function(_0x5db0b8,_0x70dace){if(_0x5db0b8[_0xfbed('0x49')]['id']){delete _0x5db0b8[_0xfbed('0x49')]['id'];}return db[_0xfbed('0x2d')][_0xfbed('0x4a')]({'where':{'id':_0x5db0b8['params']['id']}})['then'](handleEntityNotFound(_0x70dace,null))[_0xfbed('0x26')](saveUpdates(_0x5db0b8['body'],null))[_0xfbed('0x26')](respondWithResult(_0x70dace,null))[_0xfbed('0x44')](handleError(_0x70dace,null));};exports[_0xfbed('0x4b')]=function(_0x4e48bb,_0x1a4ba1){return db[_0xfbed('0x2d')][_0xfbed('0x4a')]({'where':{'id':_0x4e48bb[_0xfbed('0x4c')]['id']}})[_0xfbed('0x26')](handleEntityNotFound(_0x1a4ba1,null))[_0xfbed('0x26')](removeEntity(_0x1a4ba1,null))[_0xfbed('0x44')](handleError(_0x1a4ba1,null));};
\ No newline at end of file
+var _0x2ae9=['util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','SalesforceField','rows','catch','show','keys','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0xb2628b,_0x2ddea2){var _0x2a353a=function(_0x2fba28){while(--_0x2fba28){_0xb2628b['push'](_0xb2628b['shift']());}};_0x2a353a(++_0x2ddea2);}(_0x2ae9,0x90));var _0x92ae=function(_0x421791,_0x3625d8){_0x421791=_0x421791-0x0;var _0x495838=_0x2ae9[_0x421791];return _0x495838;};'use strict';var emlformat=require(_0x92ae('0x0'));var rimraf=require(_0x92ae('0x1'));var zipdir=require(_0x92ae('0x2'));var jsonpatch=require(_0x92ae('0x3'));var rp=require('request-promise');var moment=require(_0x92ae('0x4'));var BPromise=require(_0x92ae('0x5'));var Mustache=require('mustache');var util=require(_0x92ae('0x6'));var path=require(_0x92ae('0x7'));var sox=require(_0x92ae('0x8'));var csv=require(_0x92ae('0x9'));var ejs=require(_0x92ae('0xa'));var fs=require('fs');var fs_extra=require(_0x92ae('0xb'));var _=require('lodash');var squel=require(_0x92ae('0xc'));var crypto=require(_0x92ae('0xd'));var jsforce=require(_0x92ae('0xe'));var deskjs=require(_0x92ae('0xf'));var toCsv=require(_0x92ae('0x9'));var querystring=require(_0x92ae('0x10'));var Papa=require(_0x92ae('0x11'));var Redis=require(_0x92ae('0x12'));var authService=require(_0x92ae('0x13'));var qs=require(_0x92ae('0x14'));var as=require(_0x92ae('0x15'));var hardwareService=require(_0x92ae('0x16'));var logger=require(_0x92ae('0x17'))(_0x92ae('0x18'));var utils=require(_0x92ae('0x19'));var config=require(_0x92ae('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x92ae('0x1b'))['db'];function respondWithStatusCode(_0x50787e,_0x279555){_0x279555=_0x279555||0xcc;return function(_0x2a2190){if(_0x2a2190){return _0x50787e[_0x92ae('0x1c')](_0x279555);}return _0x50787e[_0x92ae('0x1d')](_0x279555)[_0x92ae('0x1e')]();};}function respondWithResult(_0x3ab08d,_0x2325c4){_0x2325c4=_0x2325c4||0xc8;return function(_0xf222c8){if(_0xf222c8){return _0x3ab08d[_0x92ae('0x1d')](_0x2325c4)[_0x92ae('0x1f')](_0xf222c8);}};}function respondWithFilteredResult(_0x8ca101,_0x2d98d2){return function(_0x233fcf){if(_0x233fcf){var _0x51c0fa=typeof _0x2d98d2[_0x92ae('0x20')]===_0x92ae('0x21')&&typeof _0x2d98d2[_0x92ae('0x22')]===_0x92ae('0x21');var _0x2f2f1c=_0x233fcf[_0x92ae('0x23')];var _0x394e6d=_0x51c0fa?0x0:_0x2d98d2[_0x92ae('0x20')];var _0x1a935f=_0x51c0fa?_0x233fcf['count']:_0x2d98d2[_0x92ae('0x20')]+_0x2d98d2['limit'];var _0x5a7816;if(_0x1a935f>=_0x2f2f1c){_0x1a935f=_0x2f2f1c;_0x5a7816=0xc8;}else{_0x5a7816=0xce;}_0x8ca101[_0x92ae('0x1d')](_0x5a7816);return _0x8ca101[_0x92ae('0x24')](_0x92ae('0x25'),_0x394e6d+'-'+_0x1a935f+'/'+_0x2f2f1c)[_0x92ae('0x1f')](_0x233fcf);}return null;};}function patchUpdates(_0x1a4320){return function(_0x36c734){try{jsonpatch[_0x92ae('0x26')](_0x36c734,_0x1a4320,!![]);}catch(_0x3f95a6){return BPromise[_0x92ae('0x27')](_0x3f95a6);}return _0x36c734['save']();};}function saveUpdates(_0x5c895f,_0x182d50){return function(_0x588f4f){if(_0x588f4f){return _0x588f4f[_0x92ae('0x28')](_0x5c895f)[_0x92ae('0x29')](function(_0x8a193){return _0x8a193;});}return null;};}function removeEntity(_0x10b214,_0x18cb41){return function(_0x383131){if(_0x383131){return _0x383131['destroy']()[_0x92ae('0x29')](function(){_0x10b214[_0x92ae('0x1d')](0xcc)[_0x92ae('0x1e')]();});}};}function handleEntityNotFound(_0x41b8b9,_0x4825){return function(_0x57ea4e){if(!_0x57ea4e){_0x41b8b9[_0x92ae('0x1c')](0x194);}return _0x57ea4e;};}function handleError(_0x339e00,_0x47e74b){_0x47e74b=_0x47e74b||0x1f4;return function(_0x3f15c2){logger['error'](_0x3f15c2[_0x92ae('0x2a')]);if(_0x3f15c2[_0x92ae('0x2b')]){delete _0x3f15c2[_0x92ae('0x2b')];}_0x339e00['status'](_0x47e74b)[_0x92ae('0x2c')](_0x3f15c2);};}exports['index']=function(_0x40e5f3,_0x264c6b){var _0x42bc46={},_0x37b047={},_0x4cc856={'count':0x0,'rows':[]};var _0x3fd781=_[_0x92ae('0x2d')](db['SalesforceField'][_0x92ae('0x2e')],function(_0x3280ad){return{'name':_0x3280ad[_0x92ae('0x2f')],'type':_0x3280ad[_0x92ae('0x30')][_0x92ae('0x31')]};});_0x37b047[_0x92ae('0x32')]=_[_0x92ae('0x2d')](_0x3fd781,_0x92ae('0x2b'));_0x37b047[_0x92ae('0x33')]=_['keys'](_0x40e5f3[_0x92ae('0x33')]);_0x37b047[_0x92ae('0x34')]=_[_0x92ae('0x35')](_0x37b047[_0x92ae('0x32')],_0x37b047[_0x92ae('0x33')]);_0x42bc46[_0x92ae('0x36')]=_['intersection'](_0x37b047[_0x92ae('0x32')],qs[_0x92ae('0x37')](_0x40e5f3[_0x92ae('0x33')][_0x92ae('0x37')]));_0x42bc46['attributes']=_0x42bc46[_0x92ae('0x36')][_0x92ae('0x38')]?_0x42bc46['attributes']:_0x37b047['model'];if(!_0x40e5f3[_0x92ae('0x33')]['hasOwnProperty']('nolimit')){_0x42bc46['limit']=qs[_0x92ae('0x22')](_0x40e5f3['query'][_0x92ae('0x22')]);_0x42bc46[_0x92ae('0x20')]=qs[_0x92ae('0x20')](_0x40e5f3['query']['offset']);}_0x42bc46[_0x92ae('0x39')]=qs[_0x92ae('0x3a')](_0x40e5f3[_0x92ae('0x33')][_0x92ae('0x3a')]);_0x42bc46[_0x92ae('0x3b')]=qs[_0x92ae('0x34')](_['pick'](_0x40e5f3['query'],_0x37b047[_0x92ae('0x34')]),_0x3fd781);if(_0x40e5f3['query']['filter']){_0x42bc46[_0x92ae('0x3b')]=_[_0x92ae('0x3c')](_0x42bc46[_0x92ae('0x3b')],{'$or':_[_0x92ae('0x2d')](_0x3fd781,function(_0xe7991a){if(_0xe7991a[_0x92ae('0x30')]!==_0x92ae('0x3d')){var _0x5a219b={};_0x5a219b[_0xe7991a[_0x92ae('0x2b')]]={'$like':'%'+_0x40e5f3[_0x92ae('0x33')][_0x92ae('0x3e')]+'%'};return _0x5a219b;}})});}_0x42bc46=_['merge']({},_0x42bc46,_0x40e5f3[_0x92ae('0x3f')]);var _0x37a0f9={'where':_0x42bc46[_0x92ae('0x3b')]};return db['SalesforceField'][_0x92ae('0x23')](_0x37a0f9)[_0x92ae('0x29')](function(_0x40c7e9){_0x4cc856['count']=_0x40c7e9;if(_0x40e5f3[_0x92ae('0x33')][_0x92ae('0x40')]){_0x42bc46[_0x92ae('0x41')]=[{'all':!![]}];}return db[_0x92ae('0x42')]['findAll'](_0x42bc46);})['then'](function(_0x4bb926){_0x4cc856[_0x92ae('0x43')]=_0x4bb926;return _0x4cc856;})[_0x92ae('0x29')](respondWithFilteredResult(_0x264c6b,_0x42bc46))[_0x92ae('0x44')](handleError(_0x264c6b,null));};exports[_0x92ae('0x45')]=function(_0x310c8b,_0x3f1843){var _0x216911={'raw':!![],'where':{'id':_0x310c8b['params']['id']}},_0x3093a6={};_0x3093a6[_0x92ae('0x32')]=_[_0x92ae('0x46')](db['SalesforceField'][_0x92ae('0x2e')]);_0x3093a6[_0x92ae('0x33')]=_[_0x92ae('0x46')](_0x310c8b[_0x92ae('0x33')]);_0x3093a6[_0x92ae('0x34')]=_[_0x92ae('0x35')](_0x3093a6[_0x92ae('0x32')],_0x3093a6[_0x92ae('0x33')]);_0x216911['attributes']=_[_0x92ae('0x35')](_0x3093a6[_0x92ae('0x32')],qs[_0x92ae('0x37')](_0x310c8b[_0x92ae('0x33')]['fields']));_0x216911[_0x92ae('0x36')]=_0x216911['attributes']['length']?_0x216911['attributes']:_0x3093a6[_0x92ae('0x32')];if(_0x310c8b[_0x92ae('0x33')][_0x92ae('0x40')]){_0x216911['include']=[{'all':!![]}];}_0x216911=_[_0x92ae('0x3c')]({},_0x216911,_0x310c8b[_0x92ae('0x3f')]);return db[_0x92ae('0x42')]['find'](_0x216911)['then'](handleEntityNotFound(_0x3f1843,null))[_0x92ae('0x29')](respondWithResult(_0x3f1843,null))[_0x92ae('0x44')](handleError(_0x3f1843,null));};exports[_0x92ae('0x47')]=function(_0x7114c5,_0x244e6d){return db[_0x92ae('0x42')]['create'](_0x7114c5[_0x92ae('0x48')],{})[_0x92ae('0x29')](respondWithResult(_0x244e6d,0xc9))['catch'](handleError(_0x244e6d,null));};exports[_0x92ae('0x28')]=function(_0x4d8c8c,_0x458778){if(_0x4d8c8c[_0x92ae('0x48')]['id']){delete _0x4d8c8c[_0x92ae('0x48')]['id'];}return db[_0x92ae('0x42')][_0x92ae('0x49')]({'where':{'id':_0x4d8c8c['params']['id']}})[_0x92ae('0x29')](handleEntityNotFound(_0x458778,null))[_0x92ae('0x29')](saveUpdates(_0x4d8c8c['body'],null))[_0x92ae('0x29')](respondWithResult(_0x458778,null))[_0x92ae('0x44')](handleError(_0x458778,null));};exports[_0x92ae('0x4a')]=function(_0xfec8f4,_0x5bd439){return db[_0x92ae('0x42')]['find']({'where':{'id':_0xfec8f4['params']['id']}})[_0x92ae('0x29')](handleEntityNotFound(_0x5bd439,null))[_0x92ae('0x29')](removeEntity(_0x5bd439,null))['catch'](handleError(_0x5bd439,null));};
\ No newline at end of file
index 2c4c202..7df2976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8279=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash'];(function(_0x38229d,_0x4e00d8){var _0x159435=function(_0x40cf4a){while(--_0x40cf4a){_0x38229d['push'](_0x38229d['shift']());}};_0x159435(++_0x4e00d8);}(_0x8279,0x1bf));var _0x9827=function(_0x33a596,_0x3e085d){_0x33a596=_0x33a596-0x0;var _0x22586c=_0x8279[_0x33a596];return _0x22586c;};'use strict';var _=require(_0x9827('0x0'));var util=require(_0x9827('0x1'));var logger=require('../../config/logger')(_0x9827('0x2'));var moment=require(_0x9827('0x3'));var BPromise=require(_0x9827('0x4'));var rp=require(_0x9827('0x5'));var fs=require('fs');var path=require(_0x9827('0x6'));var rimraf=require(_0x9827('0x7'));var config=require(_0x9827('0x8'));var attributes=require(_0x9827('0x9'));module[_0x9827('0xa')]=function(_0x480a27,_0x4f3fd5){return _0x480a27[_0x9827('0xb')]('SalesforceField',attributes,{'tableName':_0x9827('0xc'),'paranoid':![],'indexes':[{'name':_0x9827('0xd'),'fields':[_0x9827('0xe'),_0x9827('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9065=['../../config/logger','api','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','FieldId','lodash'];(function(_0x56dcf5,_0x432938){var _0x15685d=function(_0x5155b5){while(--_0x5155b5){_0x56dcf5['push'](_0x56dcf5['shift']());}};_0x15685d(++_0x432938);}(_0x9065,0x9b));var _0x5906=function(_0x5369dd,_0x18e71a){_0x5369dd=_0x5369dd-0x0;var _0x262287=_0x9065[_0x5369dd];return _0x262287;};'use strict';var _=require(_0x5906('0x0'));var util=require('util');var logger=require(_0x5906('0x1'))(_0x5906('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5906('0x3'));var rimraf=require(_0x5906('0x4'));var config=require(_0x5906('0x5'));var attributes=require(_0x5906('0x6'));module[_0x5906('0x7')]=function(_0x59c104,_0x3919e1){return _0x59c104[_0x5906('0x8')](_0x5906('0x9'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x5906('0xa'),'fields':['idField',_0x5906('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9b5ee85..9605e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ea1=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util'];(function(_0xd50047,_0x5463a3){var _0x1ad381=function(_0x304c3d){while(--_0x304c3d){_0xd50047['push'](_0xd50047['shift']());}};_0x1ad381(++_0x5463a3);}(_0x5ea1,0x1b8));var _0x15ea=function(_0x54bf70,_0x82f211){_0x54bf70=_0x54bf70-0x0;var _0x2a3037=_0x5ea1[_0x54bf70];return _0x2a3037;};'use strict';var _=require('lodash');var util=require(_0x15ea('0x0'));var moment=require(_0x15ea('0x1'));var BPromise=require(_0x15ea('0x2'));var rs=require(_0x15ea('0x3'));var fs=require('fs');var Redis=require(_0x15ea('0x4'));var db=require(_0x15ea('0x5'))['db'];var utils=require(_0x15ea('0x6'));var logger=require(_0x15ea('0x7'))(_0x15ea('0x8'));var config=require(_0x15ea('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x15ea('0xa')][_0x15ea('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x182b00,_0x5e67ea,_0x2ed927){return new BPromise(function(_0x31ae5d,_0x1499ec){return client[_0x15ea('0xc')](_0x182b00,_0x2ed927)['then'](function(_0x19cf60){logger[_0x15ea('0xd')](_0x15ea('0xe'),_0x5e67ea,_0x15ea('0xf'));logger['debug'](_0x15ea('0x10'),_0x5e67ea,'request\x20sent',JSON[_0x15ea('0x11')](_0x19cf60));if(_0x19cf60[_0x15ea('0x12')]){if(_0x19cf60[_0x15ea('0x12')][_0x15ea('0x13')]===0x1f4){logger['error'](_0x15ea('0xe'),_0x5e67ea,_0x19cf60[_0x15ea('0x12')][_0x15ea('0x14')]);return _0x1499ec(_0x19cf60[_0x15ea('0x12')]['message']);}logger[_0x15ea('0x12')]('SalesforceField,\x20%s,\x20%s',_0x5e67ea,_0x19cf60[_0x15ea('0x12')][_0x15ea('0x14')]);return _0x31ae5d(_0x19cf60['error'][_0x15ea('0x14')]);}else{logger['info'](_0x15ea('0xe'),_0x5e67ea,_0x15ea('0xf'));_0x31ae5d(_0x19cf60['result'][_0x15ea('0x14')]);}})['catch'](function(_0x3382dd){logger[_0x15ea('0x12')](_0x15ea('0xe'),_0x5e67ea,_0x3382dd);_0x1499ec(_0x3382dd);});});}
\ No newline at end of file
+var _0xa536=['info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then'];(function(_0x1d309d,_0x52081e){var _0x4bd62d=function(_0x4bba5e){while(--_0x4bba5e){_0x1d309d['push'](_0x1d309d['shift']());}};_0x4bd62d(++_0x52081e);}(_0xa536,0x1a3));var _0x6a53=function(_0x4f5ac2,_0x21cda9){_0x4f5ac2=_0x4f5ac2-0x0;var _0x168591=_0xa536[_0x4f5ac2];return _0x168591;};'use strict';var _=require(_0x6a53('0x0'));var util=require(_0x6a53('0x1'));var moment=require(_0x6a53('0x2'));var BPromise=require(_0x6a53('0x3'));var rs=require(_0x6a53('0x4'));var fs=require('fs');var Redis=require(_0x6a53('0x5'));var db=require(_0x6a53('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a53('0x7'))(_0x6a53('0x8'));var config=require('../../config/environment');var jayson=require(_0x6a53('0x9'));var client=jayson['client'][_0x6a53('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b39bd,_0x50f2a3,_0x110157){return new BPromise(function(_0x2863cd,_0x39a2f2){return client[_0x6a53('0xb')](_0x3b39bd,_0x110157)[_0x6a53('0xc')](function(_0x4037fb){logger[_0x6a53('0xd')](_0x6a53('0xe'),_0x50f2a3,_0x6a53('0xf'));logger[_0x6a53('0x10')](_0x6a53('0x11'),_0x50f2a3,'request\x20sent',JSON[_0x6a53('0x12')](_0x4037fb));if(_0x4037fb['error']){if(_0x4037fb[_0x6a53('0x13')][_0x6a53('0x14')]===0x1f4){logger[_0x6a53('0x13')]('SalesforceField,\x20%s,\x20%s',_0x50f2a3,_0x4037fb['error']['message']);return _0x39a2f2(_0x4037fb['error'][_0x6a53('0x15')]);}logger[_0x6a53('0x13')](_0x6a53('0xe'),_0x50f2a3,_0x4037fb[_0x6a53('0x13')][_0x6a53('0x15')]);return _0x2863cd(_0x4037fb[_0x6a53('0x13')][_0x6a53('0x15')]);}else{logger['info'](_0x6a53('0xe'),_0x50f2a3,_0x6a53('0xf'));_0x2863cd(_0x4037fb[_0x6a53('0x16')][_0x6a53('0x15')]);}})[_0x6a53('0x17')](function(_0x493606){logger[_0x6a53('0x13')](_0x6a53('0xe'),_0x50f2a3,_0x493606);_0x39a2f2(_0x493606);});});}
\ No newline at end of file
index 95cdd5d..6df09ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9fb=['delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','index','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update'];(function(_0x108905,_0x3b4002){var _0x3dc0c1=function(_0x508676){while(--_0x508676){_0x108905['push'](_0x108905['shift']());}};_0x3dc0c1(++_0x3b4002);}(_0xc9fb,0x148));var _0xbc9f=function(_0x10b3b3,_0x1f776d){_0x10b3b3=_0x10b3b3-0x0;var _0x298f49=_0xc9fb[_0x10b3b3];return _0x298f49;};'use strict';var multer=require(_0xbc9f('0x0'));var util=require(_0xbc9f('0x1'));var path=require(_0xbc9f('0x2'));var timeout=require('connect-timeout');var express=require(_0xbc9f('0x3'));var router=express['Router']();var fs_extra=require(_0xbc9f('0x4'));var auth=require(_0xbc9f('0x5'));var interaction=require(_0xbc9f('0x6'));var config=require(_0xbc9f('0x7'));var controller=require(_0xbc9f('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xbc9f('0x9')]);router[_0xbc9f('0xa')](_0xbc9f('0xb'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0xd')]);router[_0xbc9f('0xa')](_0xbc9f('0xe'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0xf')]);router['get'](_0xbc9f('0x10'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x11')]);router[_0xbc9f('0x12')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xbc9f('0xe'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x13')]);router[_0xbc9f('0x14')](_0xbc9f('0xb'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x15')]);router[_0xbc9f('0x16')]('/:id',auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x17')]);module[_0xbc9f('0x18')]=router;
\ No newline at end of file
+var _0x8ec1=['path','connect-timeout','express','Router','fs-extra','../../config/environment','./intServicenowAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','destroy','exports','util'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0x8ec1,0x1e3));var _0x18ec=function(_0x98459f,_0x4dfb55){_0x98459f=_0x98459f-0x0;var _0x128f94=_0x8ec1[_0x98459f];return _0x128f94;};'use strict';var multer=require('multer');var util=require(_0x18ec('0x0'));var path=require(_0x18ec('0x1'));var timeout=require(_0x18ec('0x2'));var express=require(_0x18ec('0x3'));var router=express[_0x18ec('0x4')]();var fs_extra=require(_0x18ec('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x18ec('0x6'));var controller=require(_0x18ec('0x7'));router[_0x18ec('0x8')]('/',auth['isAuthenticated'](),controller[_0x18ec('0x9')]);router[_0x18ec('0x8')](_0x18ec('0xa'),auth[_0x18ec('0xb')](),controller[_0x18ec('0xc')]);router[_0x18ec('0x8')](_0x18ec('0xd'),auth['isAuthenticated'](),controller[_0x18ec('0xe')]);router[_0x18ec('0x8')](_0x18ec('0xf'),auth[_0x18ec('0xb')](),controller[_0x18ec('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x18ec('0x11')]);router[_0x18ec('0x12')](_0x18ec('0xd'),auth['isAuthenticated'](),controller[_0x18ec('0x13')]);router['put'](_0x18ec('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x18ec('0xa'),auth[_0x18ec('0xb')](),controller[_0x18ec('0x14')]);module[_0x18ec('0x15')]=router;
\ No newline at end of file
index 9315598..30d4e28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb5a=['remoteUri','sequelize','exports','STRING','username'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xdb5a,0xb5));var _0xadb5=function(_0x4979dd,_0x3519ab){_0x4979dd=_0x4979dd-0x0;var _0x11d624=_0xdb5a[_0x4979dd];return _0x11d624;};'use strict';var Sequelize=require(_0xadb5('0x0'));module[_0xadb5('0x1')]={'name':{'type':Sequelize[_0xadb5('0x2')]},'description':{'type':Sequelize[_0xadb5('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xadb5('0x3')},'password':{'type':Sequelize[_0xadb5('0x2')]},'email':{'type':Sequelize[_0xadb5('0x2')]},'remoteUri':{'type':Sequelize[_0xadb5('0x2')],'unique':_0xadb5('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xb610=['STRING','remoteUri'];(function(_0x131656,_0x254283){var _0x4afbe1=function(_0x19f247){while(--_0x19f247){_0x131656['push'](_0x131656['shift']());}};_0x4afbe1(++_0x254283);}(_0xb610,0x1e2));var _0x0b61=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xb610[_0x13e741];return _0x3f8bb3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x0b61('0x0')]},'description':{'type':Sequelize[_0x0b61('0x0')]},'username':{'type':Sequelize[_0x0b61('0x0')],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x0b61('0x0')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x0b61('0x1')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index e3dc85e..dbd4ad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa8=['eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','update','then','error','name','send','index','ServicenowAccount','rawAttributes','fieldName','map','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','destroy','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','type','ServicenowConfiguration','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','severity','category','parent','caused_by','watch_list','upon_reject','child_incidents','approval_history','resolved_by','opened_by','user_input','state','sys_created_by','calendar_stc','cmdb_ci','impact','work_notes_list','business_service','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','work_notes','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','close_notes','closed_by','follow_up','contact_type','urgency','problem_id','company','activity_due','assigned_to','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','correlation_id','location','username','email','remoteUri','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','password','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','label','all','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','test','statusCode','stack','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value'];(function(_0x1ce0c8,_0x1bf13a){var _0x194f0d=function(_0x275093){while(--_0x275093){_0x1ce0c8['push'](_0x1ce0c8['shift']());}};_0x194f0d(++_0x1bf13a);}(_0x7aa8,0x166));var _0x87aa=function(_0x5d6370,_0x5deb7d){_0x5d6370=_0x5d6370-0x0;var _0x53e4bd=_0x7aa8[_0x5d6370];return _0x53e4bd;};'use strict';var emlformat=require(_0x87aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x87aa('0x1'));var jsonpatch=require(_0x87aa('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x87aa('0x3'));var Mustache=require(_0x87aa('0x4'));var util=require(_0x87aa('0x5'));var path=require(_0x87aa('0x6'));var sox=require(_0x87aa('0x7'));var csv=require(_0x87aa('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x87aa('0x9'));var _=require(_0x87aa('0xa'));var squel=require(_0x87aa('0xb'));var crypto=require('crypto');var jsforce=require(_0x87aa('0xc'));var deskjs=require(_0x87aa('0xd'));var toCsv=require(_0x87aa('0x8'));var querystring=require(_0x87aa('0xe'));var Papa=require(_0x87aa('0xf'));var Redis=require('ioredis');var authService=require(_0x87aa('0x10'));var qs=require(_0x87aa('0x11'));var as=require(_0x87aa('0x12'));var hardwareService=require(_0x87aa('0x13'));var logger=require(_0x87aa('0x14'))(_0x87aa('0x15'));var utils=require(_0x87aa('0x16'));var config=require(_0x87aa('0x17'));var licenseUtil=require(_0x87aa('0x18'));var db=require(_0x87aa('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x376f42,_0x1e3842){_0x1e3842=_0x1e3842||0xcc;return function(_0x22d811){if(_0x22d811){return _0x376f42[_0x87aa('0x1a')](_0x1e3842);}return _0x376f42[_0x87aa('0x1b')](_0x1e3842)[_0x87aa('0x1c')]();};}function respondWithResult(_0x450e6f,_0x15dae0){_0x15dae0=_0x15dae0||0xc8;return function(_0x2630d0){if(_0x2630d0){return _0x450e6f['status'](_0x15dae0)['json'](_0x2630d0);}};}function respondWithFilteredResult(_0x4bbc8a,_0x22e571){return function(_0x35a19e){if(_0x35a19e){var _0x118774=typeof _0x22e571[_0x87aa('0x1d')]===_0x87aa('0x1e')&&typeof _0x22e571[_0x87aa('0x1f')]===_0x87aa('0x1e');var _0x3c5c63=_0x35a19e[_0x87aa('0x20')];var _0x4de6ec=_0x118774?0x0:_0x22e571[_0x87aa('0x1d')];var _0x574e2b=_0x118774?_0x35a19e[_0x87aa('0x20')]:_0x22e571['offset']+_0x22e571[_0x87aa('0x1f')];var _0x41c7cf;if(_0x574e2b>=_0x3c5c63){_0x574e2b=_0x3c5c63;_0x41c7cf=0xc8;}else{_0x41c7cf=0xce;}_0x4bbc8a['status'](_0x41c7cf);return _0x4bbc8a['set']('Content-Range',_0x4de6ec+'-'+_0x574e2b+'/'+_0x3c5c63)[_0x87aa('0x21')](_0x35a19e);}return null;};}function patchUpdates(_0x34ab0f){return function(_0x44c0a9){try{jsonpatch[_0x87aa('0x22')](_0x44c0a9,_0x34ab0f,!![]);}catch(_0x3c644d){return BPromise[_0x87aa('0x23')](_0x3c644d);}return _0x44c0a9['save']();};}function saveUpdates(_0x243e5d,_0x310881){return function(_0x19a7e1){if(_0x19a7e1){return _0x19a7e1[_0x87aa('0x24')](_0x243e5d)[_0x87aa('0x25')](function(_0x1aa4aa){return _0x1aa4aa;});}return null;};}function removeEntity(_0x6407c6,_0x4fa84b){return function(_0x308124){if(_0x308124){return _0x308124['destroy']()[_0x87aa('0x25')](function(){_0x6407c6[_0x87aa('0x1b')](0xcc)[_0x87aa('0x1c')]();});}};}function handleEntityNotFound(_0x19037a,_0x5b606d){return function(_0x1dcaaa){if(!_0x1dcaaa){_0x19037a[_0x87aa('0x1a')](0x194);}return _0x1dcaaa;};}function handleError(_0x2d2d1c,_0x3feef5){_0x3feef5=_0x3feef5||0x1f4;return function(_0x407dda){logger[_0x87aa('0x26')](_0x407dda['stack']);if(_0x407dda[_0x87aa('0x27')]){delete _0x407dda[_0x87aa('0x27')];}_0x2d2d1c[_0x87aa('0x1b')](_0x3feef5)[_0x87aa('0x28')](_0x407dda);};}exports[_0x87aa('0x29')]=function(_0x1b24a6,_0x389f4c){var _0x45734e={},_0x3397d2={},_0x3e9cdf={'count':0x0,'rows':[]};var _0xfa7f73=_['map'](db[_0x87aa('0x2a')][_0x87aa('0x2b')],function(_0xf9fe87){return{'name':_0xf9fe87[_0x87aa('0x2c')],'type':_0xf9fe87['type']['key']};});_0x3397d2['model']=_[_0x87aa('0x2d')](_0xfa7f73,_0x87aa('0x27'));_0x3397d2[_0x87aa('0x2e')]=_[_0x87aa('0x2f')](_0x1b24a6[_0x87aa('0x2e')]);_0x3397d2['filters']=_[_0x87aa('0x30')](_0x3397d2[_0x87aa('0x31')],_0x3397d2['query']);_0x45734e[_0x87aa('0x32')]=_['intersection'](_0x3397d2['model'],qs['fields'](_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x33')]));_0x45734e['attributes']=_0x45734e[_0x87aa('0x32')]['length']?_0x45734e[_0x87aa('0x32')]:_0x3397d2[_0x87aa('0x31')];if(!_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x34')](_0x87aa('0x35'))){_0x45734e[_0x87aa('0x1f')]=qs[_0x87aa('0x1f')](_0x1b24a6['query'][_0x87aa('0x1f')]);_0x45734e[_0x87aa('0x1d')]=qs[_0x87aa('0x1d')](_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x1d')]);}_0x45734e[_0x87aa('0x36')]=qs[_0x87aa('0x37')](_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x37')]);_0x45734e[_0x87aa('0x38')]=qs['filters'](_[_0x87aa('0x39')](_0x1b24a6[_0x87aa('0x2e')],_0x3397d2[_0x87aa('0x3a')]),_0xfa7f73);if(_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x3b')]){_0x45734e[_0x87aa('0x38')]=_[_0x87aa('0x3c')](_0x45734e[_0x87aa('0x38')],{'$or':_['map'](_0xfa7f73,function(_0x4c5793){if(_0x4c5793['type']!=='VIRTUAL'){var _0x50dfa0={};_0x50dfa0[_0x4c5793[_0x87aa('0x27')]]={'$like':'%'+_0x1b24a6['query'][_0x87aa('0x3b')]+'%'};return _0x50dfa0;}})});}_0x45734e=_[_0x87aa('0x3c')]({},_0x45734e,_0x1b24a6[_0x87aa('0x3d')]);var _0x4ef56e={'where':_0x45734e[_0x87aa('0x38')]};return db[_0x87aa('0x2a')][_0x87aa('0x20')](_0x4ef56e)['then'](function(_0x1bd061){_0x3e9cdf[_0x87aa('0x20')]=_0x1bd061;if(_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x3e')]){_0x45734e[_0x87aa('0x3f')]=[{'all':!![]}];}return db[_0x87aa('0x2a')][_0x87aa('0x40')](_0x45734e);})[_0x87aa('0x25')](function(_0x1e1e0e){_0x3e9cdf[_0x87aa('0x41')]=_0x1e1e0e;return _0x3e9cdf;})['then'](respondWithFilteredResult(_0x389f4c,_0x45734e))[_0x87aa('0x42')](handleError(_0x389f4c,null));};exports[_0x87aa('0x43')]=function(_0x309dbe,_0x53df59){var _0x759cab={'raw':![],'where':{'id':_0x309dbe[_0x87aa('0x44')]['id']}},_0x7fc2b5={};_0x7fc2b5['model']=_[_0x87aa('0x2f')](db[_0x87aa('0x2a')][_0x87aa('0x2b')]);_0x7fc2b5[_0x87aa('0x2e')]=_[_0x87aa('0x2f')](_0x309dbe[_0x87aa('0x2e')]);_0x7fc2b5[_0x87aa('0x3a')]=_[_0x87aa('0x30')](_0x7fc2b5[_0x87aa('0x31')],_0x7fc2b5['query']);_0x759cab[_0x87aa('0x32')]=_[_0x87aa('0x30')](_0x7fc2b5[_0x87aa('0x31')],qs['fields'](_0x309dbe[_0x87aa('0x2e')][_0x87aa('0x33')]));_0x759cab[_0x87aa('0x32')]=_0x759cab['attributes'][_0x87aa('0x45')]?_0x759cab[_0x87aa('0x32')]:_0x7fc2b5[_0x87aa('0x31')];if(_0x309dbe['query'][_0x87aa('0x3e')]){_0x759cab[_0x87aa('0x3f')]=[{'all':!![]}];}_0x759cab=_[_0x87aa('0x3c')]({},_0x759cab,_0x309dbe[_0x87aa('0x3d')]);return db[_0x87aa('0x2a')][_0x87aa('0x46')](_0x759cab)[_0x87aa('0x25')](handleEntityNotFound(_0x53df59,null))['then'](respondWithResult(_0x53df59,null))[_0x87aa('0x42')](handleError(_0x53df59,null));};exports[_0x87aa('0x47')]=function(_0x34ec3a,_0x2195ca){return db[_0x87aa('0x2a')][_0x87aa('0x47')](_0x34ec3a[_0x87aa('0x48')],{})[_0x87aa('0x25')](respondWithResult(_0x2195ca,0xc9))[_0x87aa('0x42')](handleError(_0x2195ca,null));};exports[_0x87aa('0x24')]=function(_0x1c2e15,_0x2e59d2){if(_0x1c2e15[_0x87aa('0x48')]['id']){delete _0x1c2e15[_0x87aa('0x48')]['id'];}return db[_0x87aa('0x2a')]['find']({'where':{'id':_0x1c2e15[_0x87aa('0x44')]['id']}})[_0x87aa('0x25')](handleEntityNotFound(_0x2e59d2,null))[_0x87aa('0x25')](saveUpdates(_0x1c2e15['body'],null))[_0x87aa('0x25')](respondWithResult(_0x2e59d2,null))[_0x87aa('0x42')](handleError(_0x2e59d2,null));};exports[_0x87aa('0x49')]=function(_0x5b2795,_0x581002){return db['ServicenowAccount'][_0x87aa('0x46')]({'where':{'id':_0x5b2795[_0x87aa('0x44')]['id']}})[_0x87aa('0x25')](handleEntityNotFound(_0x581002,null))[_0x87aa('0x25')](removeEntity(_0x581002,null))['catch'](handleError(_0x581002,null));};exports[_0x87aa('0x4a')]=function(_0x44b362,_0x35cf56,_0x70ead5){var _0x4cd384={};var _0x391e1c={};var _0x5affbe;var _0x272b9a;return db[_0x87aa('0x2a')][_0x87aa('0x4b')]({'where':{'id':_0x44b362[_0x87aa('0x44')]['id']}})['then'](handleEntityNotFound(_0x35cf56,null))[_0x87aa('0x25')](function(_0xe2b04){if(_0xe2b04){_0x5affbe=_0xe2b04;_0x391e1c[_0x87aa('0x31')]=_[_0x87aa('0x2f')](db['ServicenowConfiguration'][_0x87aa('0x2b')]);_0x391e1c[_0x87aa('0x2e')]=_[_0x87aa('0x2f')](_0x44b362[_0x87aa('0x2e')]);_0x391e1c['filters']=_[_0x87aa('0x30')](_0x391e1c[_0x87aa('0x31')],_0x391e1c[_0x87aa('0x2e')]);_0x4cd384['attributes']=_['intersection'](_0x391e1c['model'],qs['fields'](_0x44b362['query'][_0x87aa('0x33')]));_0x4cd384[_0x87aa('0x32')]=_0x4cd384['attributes'][_0x87aa('0x45')]?_0x4cd384[_0x87aa('0x32')]:_0x391e1c['model'];_0x4cd384[_0x87aa('0x36')]=qs['sort'](_0x44b362[_0x87aa('0x2e')][_0x87aa('0x37')]);_0x4cd384[_0x87aa('0x38')]=qs[_0x87aa('0x3a')](_[_0x87aa('0x39')](_0x44b362[_0x87aa('0x2e')],_0x391e1c[_0x87aa('0x3a')]));if(_0x44b362[_0x87aa('0x2e')][_0x87aa('0x3b')]){_0x4cd384[_0x87aa('0x38')]=_['merge'](_0x4cd384['where'],{'$or':_[_0x87aa('0x2d')](_0x4cd384['attributes'],function(_0x821aaf){var _0x4c3905={};_0x4c3905[_0x821aaf]={'$like':'%'+_0x44b362[_0x87aa('0x2e')][_0x87aa('0x3b')]+'%'};return _0x4c3905;})});}_0x4cd384=_[_0x87aa('0x3c')]({},_0x4cd384,_0x44b362['options']);return _0x5affbe[_0x87aa('0x4a')](_0x4cd384);}})[_0x87aa('0x25')](function(_0x424c02){if(_0x424c02){_0x272b9a=_0x424c02[_0x87aa('0x45')];if(!_0x44b362[_0x87aa('0x2e')][_0x87aa('0x34')](_0x87aa('0x35'))){_0x4cd384[_0x87aa('0x1f')]=qs['limit'](_0x44b362[_0x87aa('0x2e')][_0x87aa('0x1f')]);_0x4cd384[_0x87aa('0x1d')]=qs[_0x87aa('0x1d')](_0x44b362['query']['offset']);}return _0x5affbe['getConfigurations'](_0x4cd384);}})[_0x87aa('0x25')](function(_0xe91b7a){if(_0xe91b7a){return _0xe91b7a?{'count':_0x272b9a,'rows':_0xe91b7a}:null;}})[_0x87aa('0x25')](respondWithResult(_0x35cf56,null))[_0x87aa('0x42')](handleError(_0x35cf56,null));};exports[_0x87aa('0x4c')]=function(_0x3a64c4,_0x3d3c0d,_0x5449f6){if(_0x3a64c4[_0x87aa('0x48')]['id']){delete _0x3a64c4[_0x87aa('0x48')]['id'];}return db[_0x87aa('0x2a')][_0x87aa('0x4b')]({'where':{'id':_0x3a64c4[_0x87aa('0x44')]['id']}})[_0x87aa('0x25')](handleEntityNotFound(_0x3d3c0d,null))[_0x87aa('0x25')](function(_0x1e75fe){if(_0x1e75fe){_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x4d')]=_0x1e75fe['id'];_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x4e')]=integrations[_0x87aa('0x4f')](_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x50')],_0x3a64c4[_0x87aa('0x48')]['type']);_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x51')]=integrations['getDescriptions'](_0x3a64c4['body'][_0x87aa('0x50')],_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x52')]);return db[_0x87aa('0x53')][_0x87aa('0x47')](_0x3a64c4[_0x87aa('0x48')],{'include':[{'model':db['ServicenowField'],'as':_0x87aa('0x4e')},{'model':db[_0x87aa('0x54')],'as':_0x87aa('0x51')}]});}return null;})['then'](respondWithResult(_0x3d3c0d,null))[_0x87aa('0x42')](handleError(_0x3d3c0d,null));};exports[_0x87aa('0x55')]=function(_0x725be5,_0x41d319,_0x158f9d){var _0x133637=[_0x87aa('0x56'),_0x87aa('0x57'),_0x87aa('0x58'),_0x87aa('0x59'),_0x87aa('0x5a'),_0x87aa('0x5b'),'incident_state',_0x87aa('0x5c'),_0x87aa('0x5d')];var _0x4f7228=[_0x87aa('0x5e'),_0x87aa('0x56'),_0x87aa('0x5f'),_0x87aa('0x60'),_0x87aa('0x61'),'sys_updated_on',_0x87aa('0x62'),'hold_reason',_0x87aa('0x63'),'number',_0x87aa('0x64'),'sys_updated_by',_0x87aa('0x65'),_0x87aa('0x66'),'sys_created_on','sys_domain',_0x87aa('0x67'),_0x87aa('0x68'),'knowledge',_0x87aa('0x36'),_0x87aa('0x69'),'closed_at',_0x87aa('0x6a'),'delivery_plan',_0x87aa('0x6b'),'active',_0x87aa('0x6c'),_0x87aa('0x6d'),'priority','sys_domain_path','rfc',_0x87aa('0x6e'),_0x87aa('0x6f'),_0x87aa('0x70'),_0x87aa('0x71'),_0x87aa('0x72'),_0x87aa('0x73'),_0x87aa('0x74'),_0x87aa('0x75'),_0x87aa('0x76'),'approval_set',_0x87aa('0x59'),_0x87aa('0x77'),'short_description',_0x87aa('0x5a'),_0x87aa('0x78'),_0x87aa('0x79'),_0x87aa('0x7a'),_0x87aa('0x7b'),'business_stc',_0x87aa('0x7c'),_0x87aa('0x7d'),_0x87aa('0x7e'),'notify','sys_class_name',_0x87aa('0x7f'),_0x87aa('0x80'),_0x87aa('0x81'),'parent_incident','sys_id',_0x87aa('0x82'),'reopened_by','incident_state',_0x87aa('0x83'),_0x87aa('0x84'),_0x87aa('0x85'),'reassignment_count',_0x87aa('0x86'),_0x87aa('0x87'),'severity','comments','sla_due',_0x87aa('0x88'),_0x87aa('0x89'),_0x87aa('0x8a'),_0x87aa('0x8b'),_0x87aa('0x8c'),_0x87aa('0x8d'),'escalation','upon_approval',_0x87aa('0x8e'),_0x87aa('0x8f'),_0x87aa('0x5d')];var _0x29aca0='';var _0x3ee5cf='';var _0xf8019b=[];var _0x4aa641='';var _0x9bb5c5='';var _0x2abb4e=[];var _0xb947b='';var _0x4190ba='';var _0x13ff21={};var _0x1983a5='';return db[_0x87aa('0x2a')][_0x87aa('0x4b')]({'where':{'id':_0x725be5[_0x87aa('0x44')]['id']},'attributes':['id',_0x87aa('0x90'),'password',_0x87aa('0x91'),_0x87aa('0x92'),'serverUrl']})[_0x87aa('0x25')](handleEntityNotFound(_0x41d319,null))[_0x87aa('0x25')](function(_0x1a41ba){if(_0x1a41ba){_0x1983a5=_0x1a41ba[_0x87aa('0x92')];var _0x14e9a4=_0x1983a5['slice'](-0x1);if(_0x14e9a4==='/'){_0x1983a5=_0x1983a5[_0x87aa('0x93')](0x0,_0x1983a5[_0x87aa('0x94')](_0x14e9a4));}_0x4190ba=util[_0x87aa('0x95')](_0x87aa('0x96'),_0x1983a5);_0xb947b=util[_0x87aa('0x95')](_0x87aa('0x97'),_0x1983a5);_0x13ff21={'user':_0x1a41ba[_0x87aa('0x90')],'pass':_0x1a41ba[_0x87aa('0x98')]};var _0x2da6d2={'method':_0x87aa('0x99'),'uri':_0x4190ba+_0x87aa('0x9a'),'auth':_0x13ff21,'json':!![]};return rp(_0x2da6d2);}})[_0x87aa('0x25')](function(_0x3664b9){if(_0x3664b9['result'][_0x87aa('0x45')]>0x0){_0x29aca0=_0x3664b9[_0x87aa('0x9b')];}console[_0x87aa('0x9c')](_0x87aa('0x9d'),_0x29aca0);_0x2abb4e=[];_0x3ee5cf=Object[_0x87aa('0x9e')]([],_0x29aca0);_[_0x87aa('0x9f')](_0x3ee5cf,function(_0x2f3ebb){return!_0x133637['includes'](_0x2f3ebb[_0x87aa('0x27')]);});_0x3ee5cf[_0x87aa('0xa0')](function(_0x5a5041){var _0x34443d=createFieldObject(_0xb947b,_0x13ff21,_0x5a5041[_0x87aa('0xa1')],_0x5a5041[_0x87aa('0x27')],_0x5a5041[_0x87aa('0xa2')],![]);_0x2abb4e['push'](_0x34443d);});return Promise[_0x87aa('0xa3')](_0x2abb4e);})['then'](function(_0x2739c4){_0xf8019b=_0x2739c4;_0x4aa641=Object[_0x87aa('0x9e')]([],_0x29aca0);console[_0x87aa('0x9c')]('TCL:\x20_object',_0x29aca0);_[_0x87aa('0x9f')](_0x4aa641,function(_0x2f72a4){return _0x4f7228[_0x87aa('0xa4')](_0x2f72a4['name']);});console[_0x87aa('0x9c')](_0x87aa('0xa5'),_0x4aa641);_0x2abb4e=[];_0x4aa641[_0x87aa('0xa0')](function(_0x8d5ea8){var _0x580795=createFieldObject(_0xb947b,_0x13ff21,_0x8d5ea8[_0x87aa('0xa1')],_0x8d5ea8[_0x87aa('0x27')],_0x8d5ea8['label'],!![]);_0x2abb4e[_0x87aa('0xa6')](_0x580795);});return Promise[_0x87aa('0xa3')](_0x2abb4e);})[_0x87aa('0x25')](function(_0x5e06ea){_0x9bb5c5=_0x5e06ea;var _0x27147a=_0xf8019b[_0x87aa('0xa7')](_0x9bb5c5);return{'count':_0x27147a[_0x87aa('0x45')],'rows':_0x27147a};})[_0x87aa('0x25')](respondWithResult(_0x41d319,null))[_0x87aa('0x42')](function(_0x1d2633){console[_0x87aa('0x9c')]('ServiceNow\x20error:\x20'+_0x1d2633);var _0x365a43=_0x725be5['query'][_0x87aa('0xa8')]?0x1f4:_0x1d2633[_0x87aa('0xa9')]||0x1f4;logger[_0x87aa('0x26')](_0x1d2633[_0x87aa('0xaa')]);delete _0x1d2633[_0x87aa('0x27')];if(_0x365a43===0x191){_0x365a43=0x190;}_0x41d319[_0x87aa('0x1b')](_0x365a43)['send'](_0x725be5[_0x87aa('0x2e')][_0x87aa('0xa8')]?{'message':'Wrong\x20credentials','statusCode':_0x1d2633[_0x87aa('0xa9')]}:_0x1d2633);});};function createFieldObject(_0x45121d,_0x38b0e7,_0x1460eb,_0xde635d,_0x2d1eae,_0x37fa29){return new Promise(function(_0x4d352a,_0x17eb83){var _0x5625c7={'id':_0xde635d,'name':_0x2d1eae,'custom':_0x37fa29};if(_0x1460eb===_0x87aa('0xab')){_0x5625c7[_0x87aa('0x3d')]=[{'name':_0x87aa('0xac'),'value':_0x87aa('0xad')},{'name':_0x87aa('0xae'),'value':_0x87aa('0xaf')}];_0x4d352a(_0x5625c7);}else{var _0xe02613={'method':_0x87aa('0x99'),'uri':_0x45121d+_0x87aa('0xb0')+_0xde635d,'auth':_0x38b0e7,'json':!![]};return rp(_0xe02613)[_0x87aa('0x25')](function(_0xc008cd){var _0x1f667b=[];if(_0xc008cd[_0x87aa('0x9b')][_0x87aa('0x45')]>0x0){_0xc008cd[_0x87aa('0x9b')][_0x87aa('0xa0')](function(_0x3ebde8){if(_0x3ebde8[_0x87aa('0xb1')]===_0x87aa('0xaf')){var _0x360c20={'name':_0x3ebde8['label'],'value':_0x3ebde8[_0x87aa('0xb2')]};_0x1f667b[_0x87aa('0xa6')](_0x360c20);}});}_0x5625c7[_0x87aa('0x3d')]=_0x1f667b;if(_0x5625c7[_0x87aa('0x3d')]['length']>0x0){_0x4d352a(_0x5625c7);}else{if(_0x37fa29==![]){_0x4d352a();}else{_0x4d352a(_0x5625c7);}}});}});}
\ No newline at end of file
+var _0xfd77=['sys_domain','state','sys_created_by','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','approval_set','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','calendar_duration','closed_by','parent_incident','sys_id','contact_type','incident_state','problem_id','company','reassignment_count','activity_due','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','correlation_id','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','incident?sysparm_display_value=all','result','includes','forEach','internalType','label','push','all','assign','log','remove','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','True','sys_choice?sysparm_query=name=incident^element=','false','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','name','send','index','map','ServicenowAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','findAll','rows','catch','params','filters','fields','includeAll','include','find','create','body','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','channel','getDescriptions','ServicenowField','Subjects','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','severity','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','approval_history','resolved_by','sys_updated_by','opened_by','user_input'];(function(_0x575f8f,_0x562fb7){var _0x15d9ba=function(_0x1614f3){while(--_0x1614f3){_0x575f8f['push'](_0x575f8f['shift']());}};_0x15d9ba(++_0x562fb7);}(_0xfd77,0x1b6));var _0x7fd7=function(_0x1ad290,_0x578ec4){_0x1ad290=_0x1ad290-0x0;var _0x39668f=_0xfd77[_0x1ad290];return _0x39668f;};'use strict';var emlformat=require(_0x7fd7('0x0'));var rimraf=require(_0x7fd7('0x1'));var zipdir=require(_0x7fd7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7fd7('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7fd7('0x4'));var util=require(_0x7fd7('0x5'));var path=require(_0x7fd7('0x6'));var sox=require(_0x7fd7('0x7'));var csv=require(_0x7fd7('0x8'));var ejs=require(_0x7fd7('0x9'));var fs=require('fs');var fs_extra=require(_0x7fd7('0xa'));var _=require(_0x7fd7('0xb'));var squel=require(_0x7fd7('0xc'));var crypto=require(_0x7fd7('0xd'));var jsforce=require(_0x7fd7('0xe'));var deskjs=require(_0x7fd7('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7fd7('0x10'));var Papa=require(_0x7fd7('0x11'));var Redis=require(_0x7fd7('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7fd7('0x13'));var as=require(_0x7fd7('0x14'));var hardwareService=require(_0x7fd7('0x15'));var logger=require(_0x7fd7('0x16'))('api');var utils=require(_0x7fd7('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x7fd7('0x18'));var db=require(_0x7fd7('0x19'))['db'];var integrations=require(_0x7fd7('0x1a'));function respondWithStatusCode(_0x4cdcf4,_0x27f40a){_0x27f40a=_0x27f40a||0xcc;return function(_0x318013){if(_0x318013){return _0x4cdcf4[_0x7fd7('0x1b')](_0x27f40a);}return _0x4cdcf4[_0x7fd7('0x1c')](_0x27f40a)[_0x7fd7('0x1d')]();};}function respondWithResult(_0x1858e9,_0x120756){_0x120756=_0x120756||0xc8;return function(_0x114061){if(_0x114061){return _0x1858e9['status'](_0x120756)[_0x7fd7('0x1e')](_0x114061);}};}function respondWithFilteredResult(_0x3f387a,_0x5818b9){return function(_0x6f723){if(_0x6f723){var _0x48894b=typeof _0x5818b9[_0x7fd7('0x1f')]===_0x7fd7('0x20')&&typeof _0x5818b9[_0x7fd7('0x21')]==='undefined';var _0x2f8b21=_0x6f723[_0x7fd7('0x22')];var _0x198b16=_0x48894b?0x0:_0x5818b9['offset'];var _0x1b7425=_0x48894b?_0x6f723[_0x7fd7('0x22')]:_0x5818b9[_0x7fd7('0x1f')]+_0x5818b9[_0x7fd7('0x21')];var _0x1b053a;if(_0x1b7425>=_0x2f8b21){_0x1b7425=_0x2f8b21;_0x1b053a=0xc8;}else{_0x1b053a=0xce;}_0x3f387a[_0x7fd7('0x1c')](_0x1b053a);return _0x3f387a[_0x7fd7('0x23')](_0x7fd7('0x24'),_0x198b16+'-'+_0x1b7425+'/'+_0x2f8b21)[_0x7fd7('0x1e')](_0x6f723);}return null;};}function patchUpdates(_0x2db414){return function(_0x4dde54){try{jsonpatch['apply'](_0x4dde54,_0x2db414,!![]);}catch(_0x5d449e){return BPromise['reject'](_0x5d449e);}return _0x4dde54[_0x7fd7('0x25')]();};}function saveUpdates(_0x4c2822,_0x535603){return function(_0x5ede79){if(_0x5ede79){return _0x5ede79[_0x7fd7('0x26')](_0x4c2822)[_0x7fd7('0x27')](function(_0x11b6fc){return _0x11b6fc;});}return null;};}function removeEntity(_0x27e11b,_0x432461){return function(_0x1ef3dc){if(_0x1ef3dc){return _0x1ef3dc[_0x7fd7('0x28')]()['then'](function(){_0x27e11b[_0x7fd7('0x1c')](0xcc)[_0x7fd7('0x1d')]();});}};}function handleEntityNotFound(_0x3a7b45,_0x107398){return function(_0x4b9ae7){if(!_0x4b9ae7){_0x3a7b45['sendStatus'](0x194);}return _0x4b9ae7;};}function handleError(_0x438c1a,_0xa6d2e3){_0xa6d2e3=_0xa6d2e3||0x1f4;return function(_0xf280dc){logger[_0x7fd7('0x29')](_0xf280dc['stack']);if(_0xf280dc[_0x7fd7('0x2a')]){delete _0xf280dc[_0x7fd7('0x2a')];}_0x438c1a[_0x7fd7('0x1c')](_0xa6d2e3)[_0x7fd7('0x2b')](_0xf280dc);};}exports[_0x7fd7('0x2c')]=function(_0x2bc549,_0x1dcab4){var _0x299156={},_0x2e8a27={},_0xae0bda={'count':0x0,'rows':[]};var _0x5c1aab=_[_0x7fd7('0x2d')](db[_0x7fd7('0x2e')][_0x7fd7('0x2f')],function(_0x4e4674){return{'name':_0x4e4674[_0x7fd7('0x30')],'type':_0x4e4674[_0x7fd7('0x31')][_0x7fd7('0x32')]};});_0x2e8a27[_0x7fd7('0x33')]=_[_0x7fd7('0x2d')](_0x5c1aab,_0x7fd7('0x2a'));_0x2e8a27[_0x7fd7('0x34')]=_[_0x7fd7('0x35')](_0x2bc549['query']);_0x2e8a27['filters']=_[_0x7fd7('0x36')](_0x2e8a27['model'],_0x2e8a27[_0x7fd7('0x34')]);_0x299156[_0x7fd7('0x37')]=_[_0x7fd7('0x36')](_0x2e8a27[_0x7fd7('0x33')],qs['fields'](_0x2bc549['query']['fields']));_0x299156[_0x7fd7('0x37')]=_0x299156['attributes'][_0x7fd7('0x38')]?_0x299156[_0x7fd7('0x37')]:_0x2e8a27[_0x7fd7('0x33')];if(!_0x2bc549['query'][_0x7fd7('0x39')](_0x7fd7('0x3a'))){_0x299156[_0x7fd7('0x21')]=qs[_0x7fd7('0x21')](_0x2bc549[_0x7fd7('0x34')]['limit']);_0x299156[_0x7fd7('0x1f')]=qs['offset'](_0x2bc549[_0x7fd7('0x34')][_0x7fd7('0x1f')]);}_0x299156[_0x7fd7('0x3b')]=qs['sort'](_0x2bc549[_0x7fd7('0x34')][_0x7fd7('0x3c')]);_0x299156[_0x7fd7('0x3d')]=qs['filters'](_['pick'](_0x2bc549['query'],_0x2e8a27['filters']),_0x5c1aab);if(_0x2bc549['query'][_0x7fd7('0x3e')]){_0x299156[_0x7fd7('0x3d')]=_[_0x7fd7('0x3f')](_0x299156[_0x7fd7('0x3d')],{'$or':_[_0x7fd7('0x2d')](_0x5c1aab,function(_0x229e1e){if(_0x229e1e[_0x7fd7('0x31')]!==_0x7fd7('0x40')){var _0x40b009={};_0x40b009[_0x229e1e[_0x7fd7('0x2a')]]={'$like':'%'+_0x2bc549[_0x7fd7('0x34')][_0x7fd7('0x3e')]+'%'};return _0x40b009;}})});}_0x299156=_[_0x7fd7('0x3f')]({},_0x299156,_0x2bc549[_0x7fd7('0x41')]);var _0x5c6721={'where':_0x299156[_0x7fd7('0x3d')]};return db[_0x7fd7('0x2e')][_0x7fd7('0x22')](_0x5c6721)[_0x7fd7('0x27')](function(_0x5313b4){_0xae0bda[_0x7fd7('0x22')]=_0x5313b4;if(_0x2bc549[_0x7fd7('0x34')]['includeAll']){_0x299156['include']=[{'all':!![]}];}return db[_0x7fd7('0x2e')][_0x7fd7('0x42')](_0x299156);})[_0x7fd7('0x27')](function(_0x1ac86c){_0xae0bda[_0x7fd7('0x43')]=_0x1ac86c;return _0xae0bda;})[_0x7fd7('0x27')](respondWithFilteredResult(_0x1dcab4,_0x299156))[_0x7fd7('0x44')](handleError(_0x1dcab4,null));};exports['show']=function(_0x9fde7,_0x57a59a){var _0xacd8e2={'raw':![],'where':{'id':_0x9fde7[_0x7fd7('0x45')]['id']}},_0x50ec04={};_0x50ec04[_0x7fd7('0x33')]=_[_0x7fd7('0x35')](db[_0x7fd7('0x2e')]['rawAttributes']);_0x50ec04[_0x7fd7('0x34')]=_[_0x7fd7('0x35')](_0x9fde7[_0x7fd7('0x34')]);_0x50ec04[_0x7fd7('0x46')]=_[_0x7fd7('0x36')](_0x50ec04[_0x7fd7('0x33')],_0x50ec04[_0x7fd7('0x34')]);_0xacd8e2[_0x7fd7('0x37')]=_[_0x7fd7('0x36')](_0x50ec04[_0x7fd7('0x33')],qs[_0x7fd7('0x47')](_0x9fde7[_0x7fd7('0x34')][_0x7fd7('0x47')]));_0xacd8e2['attributes']=_0xacd8e2[_0x7fd7('0x37')][_0x7fd7('0x38')]?_0xacd8e2['attributes']:_0x50ec04[_0x7fd7('0x33')];if(_0x9fde7[_0x7fd7('0x34')][_0x7fd7('0x48')]){_0xacd8e2[_0x7fd7('0x49')]=[{'all':!![]}];}_0xacd8e2=_['merge']({},_0xacd8e2,_0x9fde7[_0x7fd7('0x41')]);return db[_0x7fd7('0x2e')][_0x7fd7('0x4a')](_0xacd8e2)[_0x7fd7('0x27')](handleEntityNotFound(_0x57a59a,null))[_0x7fd7('0x27')](respondWithResult(_0x57a59a,null))[_0x7fd7('0x44')](handleError(_0x57a59a,null));};exports[_0x7fd7('0x4b')]=function(_0x3a36fb,_0x463cd5){return db[_0x7fd7('0x2e')][_0x7fd7('0x4b')](_0x3a36fb['body'],{})[_0x7fd7('0x27')](respondWithResult(_0x463cd5,0xc9))[_0x7fd7('0x44')](handleError(_0x463cd5,null));};exports[_0x7fd7('0x26')]=function(_0x4a2ad,_0x2dfc01){if(_0x4a2ad['body']['id']){delete _0x4a2ad[_0x7fd7('0x4c')]['id'];}return db['ServicenowAccount'][_0x7fd7('0x4a')]({'where':{'id':_0x4a2ad[_0x7fd7('0x45')]['id']}})[_0x7fd7('0x27')](handleEntityNotFound(_0x2dfc01,null))[_0x7fd7('0x27')](saveUpdates(_0x4a2ad[_0x7fd7('0x4c')],null))[_0x7fd7('0x27')](respondWithResult(_0x2dfc01,null))[_0x7fd7('0x44')](handleError(_0x2dfc01,null));};exports[_0x7fd7('0x28')]=function(_0x2cbbc4,_0x448238){return db['ServicenowAccount'][_0x7fd7('0x4a')]({'where':{'id':_0x2cbbc4['params']['id']}})['then'](handleEntityNotFound(_0x448238,null))[_0x7fd7('0x27')](removeEntity(_0x448238,null))[_0x7fd7('0x44')](handleError(_0x448238,null));};exports[_0x7fd7('0x4d')]=function(_0x48f6ab,_0x3451b9,_0x3a0f3a){var _0x16f31b={};var _0x2a670f={};var _0x9c22e5;var _0x4d0e1e;return db[_0x7fd7('0x2e')][_0x7fd7('0x4e')]({'where':{'id':_0x48f6ab['params']['id']}})[_0x7fd7('0x27')](handleEntityNotFound(_0x3451b9,null))['then'](function(_0x598006){if(_0x598006){_0x9c22e5=_0x598006;_0x2a670f['model']=_[_0x7fd7('0x35')](db[_0x7fd7('0x4f')][_0x7fd7('0x2f')]);_0x2a670f[_0x7fd7('0x34')]=_[_0x7fd7('0x35')](_0x48f6ab[_0x7fd7('0x34')]);_0x2a670f[_0x7fd7('0x46')]=_[_0x7fd7('0x36')](_0x2a670f['model'],_0x2a670f[_0x7fd7('0x34')]);_0x16f31b[_0x7fd7('0x37')]=_[_0x7fd7('0x36')](_0x2a670f[_0x7fd7('0x33')],qs[_0x7fd7('0x47')](_0x48f6ab['query'][_0x7fd7('0x47')]));_0x16f31b['attributes']=_0x16f31b[_0x7fd7('0x37')]['length']?_0x16f31b[_0x7fd7('0x37')]:_0x2a670f['model'];_0x16f31b['order']=qs['sort'](_0x48f6ab['query'][_0x7fd7('0x3c')]);_0x16f31b[_0x7fd7('0x3d')]=qs[_0x7fd7('0x46')](_['pick'](_0x48f6ab[_0x7fd7('0x34')],_0x2a670f[_0x7fd7('0x46')]));if(_0x48f6ab[_0x7fd7('0x34')][_0x7fd7('0x3e')]){_0x16f31b[_0x7fd7('0x3d')]=_[_0x7fd7('0x3f')](_0x16f31b[_0x7fd7('0x3d')],{'$or':_[_0x7fd7('0x2d')](_0x16f31b[_0x7fd7('0x37')],function(_0x561c95){var _0xb75628={};_0xb75628[_0x561c95]={'$like':'%'+_0x48f6ab['query'][_0x7fd7('0x3e')]+'%'};return _0xb75628;})});}_0x16f31b=_[_0x7fd7('0x3f')]({},_0x16f31b,_0x48f6ab[_0x7fd7('0x41')]);return _0x9c22e5['getConfigurations'](_0x16f31b);}})['then'](function(_0x5d5d2c){if(_0x5d5d2c){_0x4d0e1e=_0x5d5d2c['length'];if(!_0x48f6ab['query'][_0x7fd7('0x39')](_0x7fd7('0x3a'))){_0x16f31b[_0x7fd7('0x21')]=qs[_0x7fd7('0x21')](_0x48f6ab[_0x7fd7('0x34')][_0x7fd7('0x21')]);_0x16f31b['offset']=qs[_0x7fd7('0x1f')](_0x48f6ab[_0x7fd7('0x34')][_0x7fd7('0x1f')]);}return _0x9c22e5[_0x7fd7('0x4d')](_0x16f31b);}})['then'](function(_0x52317d){if(_0x52317d){return _0x52317d?{'count':_0x4d0e1e,'rows':_0x52317d}:null;}})['then'](respondWithResult(_0x3451b9,null))[_0x7fd7('0x44')](handleError(_0x3451b9,null));};exports[_0x7fd7('0x50')]=function(_0xa9be92,_0x11e00c,_0x108b0c){if(_0xa9be92[_0x7fd7('0x4c')]['id']){delete _0xa9be92[_0x7fd7('0x4c')]['id'];}return db[_0x7fd7('0x2e')][_0x7fd7('0x4e')]({'where':{'id':_0xa9be92[_0x7fd7('0x45')]['id']}})[_0x7fd7('0x27')](handleEntityNotFound(_0x11e00c,null))['then'](function(_0x3be094){if(_0x3be094){_0xa9be92[_0x7fd7('0x4c')]['AccountId']=_0x3be094['id'];_0xa9be92[_0x7fd7('0x4c')]['Subjects']=integrations['getSubjects'](_0xa9be92[_0x7fd7('0x4c')][_0x7fd7('0x51')],_0xa9be92[_0x7fd7('0x4c')]['type']);_0xa9be92[_0x7fd7('0x4c')]['Descriptions']=integrations[_0x7fd7('0x52')](_0xa9be92[_0x7fd7('0x4c')][_0x7fd7('0x51')],_0xa9be92[_0x7fd7('0x4c')][_0x7fd7('0x31')]);return db[_0x7fd7('0x4f')][_0x7fd7('0x4b')](_0xa9be92['body'],{'include':[{'model':db[_0x7fd7('0x53')],'as':_0x7fd7('0x54')},{'model':db[_0x7fd7('0x53')],'as':_0x7fd7('0x55')}]});}return null;})[_0x7fd7('0x27')](respondWithResult(_0x11e00c,null))['catch'](handleError(_0x11e00c,null));};exports[_0x7fd7('0x56')]=function(_0x4a6970,_0x927316,_0x439baa){var _0x655df4=[_0x7fd7('0x57'),_0x7fd7('0x58'),_0x7fd7('0x59'),_0x7fd7('0x5a'),_0x7fd7('0x5b'),_0x7fd7('0x5c'),'incident_state',_0x7fd7('0x5d'),_0x7fd7('0x5e')];var _0x1a867e=[_0x7fd7('0x5f'),'made_sla',_0x7fd7('0x60'),_0x7fd7('0x61'),_0x7fd7('0x62'),_0x7fd7('0x63'),'child_incidents',_0x7fd7('0x58'),_0x7fd7('0x64'),'number',_0x7fd7('0x65'),_0x7fd7('0x66'),_0x7fd7('0x67'),_0x7fd7('0x68'),'sys_created_on',_0x7fd7('0x69'),_0x7fd7('0x6a'),_0x7fd7('0x6b'),_0x7fd7('0x59'),_0x7fd7('0x3b'),'calendar_stc',_0x7fd7('0x6c'),_0x7fd7('0x6d'),_0x7fd7('0x6e'),_0x7fd7('0x6f'),_0x7fd7('0x70'),_0x7fd7('0x71'),'business_service',_0x7fd7('0x72'),_0x7fd7('0x73'),_0x7fd7('0x74'),_0x7fd7('0x75'),_0x7fd7('0x76'),_0x7fd7('0x77'),_0x7fd7('0x78'),_0x7fd7('0x79'),'work_end',_0x7fd7('0x7a'),_0x7fd7('0x7b'),_0x7fd7('0x7c'),_0x7fd7('0x7d'),'subcategory','work_notes','short_description',_0x7fd7('0x5b'),_0x7fd7('0x7e'),_0x7fd7('0x7f'),_0x7fd7('0x80'),_0x7fd7('0x81'),_0x7fd7('0x82'),_0x7fd7('0x83'),'description',_0x7fd7('0x84'),'notify','sys_class_name','close_notes',_0x7fd7('0x85'),'follow_up',_0x7fd7('0x86'),_0x7fd7('0x87'),_0x7fd7('0x88'),'reopened_by',_0x7fd7('0x89'),'urgency',_0x7fd7('0x8a'),_0x7fd7('0x8b'),_0x7fd7('0x8c'),_0x7fd7('0x8d'),'assigned_to',_0x7fd7('0x5d'),'comments',_0x7fd7('0x8e'),_0x7fd7('0x8f'),_0x7fd7('0x90'),_0x7fd7('0x91'),_0x7fd7('0x92'),_0x7fd7('0x93'),_0x7fd7('0x94'),'escalation','upon_approval',_0x7fd7('0x95'),'location',_0x7fd7('0x5e')];var _0x46e111='';var _0x3b04cb='';var _0x280e8a=[];var _0xcde161='';var _0x2d9339='';var _0xe007a8=[];var _0x634fe2='';var _0xd476f9='';var _0x2d747b={};var _0x460b15='';return db[_0x7fd7('0x2e')][_0x7fd7('0x4e')]({'where':{'id':_0x4a6970[_0x7fd7('0x45')]['id']},'attributes':['id',_0x7fd7('0x96'),_0x7fd7('0x97'),_0x7fd7('0x98'),_0x7fd7('0x99'),_0x7fd7('0x9a')]})[_0x7fd7('0x27')](handleEntityNotFound(_0x927316,null))[_0x7fd7('0x27')](function(_0x2705c7){if(_0x2705c7){_0x460b15=_0x2705c7[_0x7fd7('0x99')];var _0x4d1b2c=_0x460b15[_0x7fd7('0x9b')](-0x1);if(_0x4d1b2c==='/'){_0x460b15=_0x460b15[_0x7fd7('0x9c')](0x0,_0x460b15[_0x7fd7('0x9d')](_0x4d1b2c));}_0xd476f9=util['format'](_0x7fd7('0x9e'),_0x460b15);_0x634fe2=util[_0x7fd7('0x9f')](_0x7fd7('0xa0'),_0x460b15);_0x2d747b={'user':_0x2705c7[_0x7fd7('0x96')],'pass':_0x2705c7[_0x7fd7('0x97')]};var _0x4e01b2={'method':'GET','uri':_0xd476f9+_0x7fd7('0xa1'),'auth':_0x2d747b,'json':!![]};return rp(_0x4e01b2);}})[_0x7fd7('0x27')](function(_0x5ccfe6){if(_0x5ccfe6[_0x7fd7('0xa2')]['length']>0x0){_0x46e111=_0x5ccfe6[_0x7fd7('0xa2')];}console['log']('incident\x20table\x20objects',_0x46e111);_0xe007a8=[];_0x3b04cb=Object['assign']([],_0x46e111);_['remove'](_0x3b04cb,function(_0x586502){return!_0x655df4[_0x7fd7('0xa3')](_0x586502[_0x7fd7('0x2a')]);});_0x3b04cb[_0x7fd7('0xa4')](function(_0xe5f156){var _0x50d4b7=createFieldObject(_0x634fe2,_0x2d747b,_0xe5f156[_0x7fd7('0xa5')],_0xe5f156['name'],_0xe5f156[_0x7fd7('0xa6')],![]);_0xe007a8[_0x7fd7('0xa7')](_0x50d4b7);});return Promise[_0x7fd7('0xa8')](_0xe007a8);})[_0x7fd7('0x27')](function(_0x49bd2f){_0x280e8a=_0x49bd2f;_0xcde161=Object[_0x7fd7('0xa9')]([],_0x46e111);console[_0x7fd7('0xaa')]('TCL:\x20_object',_0x46e111);_[_0x7fd7('0xab')](_0xcde161,function(_0x23277c){return _0x1a867e[_0x7fd7('0xa3')](_0x23277c[_0x7fd7('0x2a')]);});console[_0x7fd7('0xaa')](_0x7fd7('0xac'),_0xcde161);_0xe007a8=[];_0xcde161[_0x7fd7('0xa4')](function(_0x400758){var _0x360f32=createFieldObject(_0x634fe2,_0x2d747b,_0x400758[_0x7fd7('0xa5')],_0x400758['name'],_0x400758['label'],!![]);_0xe007a8[_0x7fd7('0xa7')](_0x360f32);});return Promise['all'](_0xe007a8);})[_0x7fd7('0x27')](function(_0x5f17ec){_0x2d9339=_0x5f17ec;var _0x32da2a=_0x280e8a[_0x7fd7('0xad')](_0x2d9339);return{'count':_0x32da2a[_0x7fd7('0x38')],'rows':_0x32da2a};})[_0x7fd7('0x27')](respondWithResult(_0x927316,null))['catch'](function(_0x25fc21){console['log'](_0x7fd7('0xae')+_0x25fc21);var _0x2951ee=_0x4a6970[_0x7fd7('0x34')][_0x7fd7('0xaf')]?0x1f4:_0x25fc21[_0x7fd7('0xb0')]||0x1f4;logger['error'](_0x25fc21['stack']);delete _0x25fc21['name'];if(_0x2951ee===0x191){_0x2951ee=0x190;}_0x927316[_0x7fd7('0x1c')](_0x2951ee)[_0x7fd7('0x2b')](_0x4a6970[_0x7fd7('0x34')][_0x7fd7('0xaf')]?{'message':_0x7fd7('0xb1'),'statusCode':_0x25fc21[_0x7fd7('0xb0')]}:_0x25fc21);});};function createFieldObject(_0xe91fe1,_0x53155d,_0xc19dc5,_0x3cba87,_0x326670,_0x2c338b){return new Promise(function(_0x1f4898,_0x5382ce){var _0x19ebf4={'id':_0x3cba87,'name':_0x326670,'custom':_0x2c338b};if(_0xc19dc5==='boolean'){_0x19ebf4[_0x7fd7('0x41')]=[{'name':_0x7fd7('0xb2'),'value':'true'},{'name':'False','value':'false'}];_0x1f4898(_0x19ebf4);}else{var _0xbaed4d={'method':'GET','uri':_0xe91fe1+_0x7fd7('0xb3')+_0x3cba87,'auth':_0x53155d,'json':!![]};return rp(_0xbaed4d)[_0x7fd7('0x27')](function(_0x44fb15){var _0x1573d3=[];if(_0x44fb15[_0x7fd7('0xa2')][_0x7fd7('0x38')]>0x0){_0x44fb15[_0x7fd7('0xa2')]['forEach'](function(_0x5237c1){if(_0x5237c1['inactive']===_0x7fd7('0xb4')){var _0x583dae={'name':_0x5237c1['label'],'value':_0x5237c1['value']};_0x1573d3['push'](_0x583dae);}});}_0x19ebf4['options']=_0x1573d3;if(_0x19ebf4[_0x7fd7('0x41')][_0x7fd7('0x38')]>0x0){_0x1f4898(_0x19ebf4);}else{if(_0x2c338b==![]){_0x1f4898();}else{_0x1f4898(_0x19ebf4);}}});}});}
\ No newline at end of file
index d7b4d5f..8c491a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['moment','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api'];(function(_0x1d41a2,_0x33011b){var _0x241d1c=function(_0x1c8b0a){while(--_0x1c8b0a){_0x1d41a2['push'](_0x1d41a2['shift']());}};_0x241d1c(++_0x33011b);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x2d70c,_0x284b4b){_0x2d70c=_0x2d70c-0x0;var _0x2a1337=_0xb4c7[_0x2d70c];return _0x2a1337;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7b4c('0xa')]=function(_0x10e197,_0x2dd5c7){return _0x10e197['define'](_0x7b4c('0xb'),attributes,{'tableName':_0x7b4c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2eb2=['request-promise','rimraf','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','util','../../config/logger','api','moment','bluebird'];(function(_0x116047,_0xa440e2){var _0xeb9ddc=function(_0x419d23){while(--_0x419d23){_0x116047['push'](_0x116047['shift']());}};_0xeb9ddc(++_0xa440e2);}(_0x2eb2,0x19f));var _0x22eb=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0x2eb2[_0x4bfac3];return _0x15f0f2;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var logger=require(_0x22eb('0x1'))(_0x22eb('0x2'));var moment=require(_0x22eb('0x3'));var BPromise=require(_0x22eb('0x4'));var rp=require(_0x22eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22eb('0x6'));var config=require('../../config/environment');var attributes=require('./intServicenowAccount.attributes');var integrations=require(_0x22eb('0x7'));module[_0x22eb('0x8')]=function(_0x35dd5b,_0x2a9850){return _0x35dd5b[_0x22eb('0x9')](_0x22eb('0xa'),attributes,{'tableName':_0x22eb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42775c2..e4b8096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x313b=['ServicenowAccount','findAll','options','where','attributes','limit','include','map','model','debug','ShowServicenowAccount','find','raw','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code','ServicenowAccount,\x20%s,\x20%s','message','result','catch','GetServicenowAccount'];(function(_0x1cc511,_0x524379){var _0x32dbc3=function(_0x57b4e9){while(--_0x57b4e9){_0x1cc511['push'](_0x1cc511['shift']());}};_0x32dbc3(++_0x524379);}(_0x313b,0x199));var _0xb313=function(_0x58977e,_0x24b117){_0x58977e=_0x58977e-0x0;var _0x2b7d4e=_0x313b[_0x58977e];return _0x2b7d4e;};'use strict';var _=require(_0xb313('0x0'));var util=require(_0xb313('0x1'));var moment=require(_0xb313('0x2'));var BPromise=require(_0xb313('0x3'));var rs=require(_0xb313('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb313('0x5'));var logger=require(_0xb313('0x6'))(_0xb313('0x7'));var config=require(_0xb313('0x8'));var jayson=require(_0xb313('0x9'));var client=jayson[_0xb313('0xa')][_0xb313('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51241e,_0x1b59b9,_0x5405f2){return new BPromise(function(_0x591224,_0x58e32e){return client['request'](_0x51241e,_0x5405f2)[_0xb313('0xc')](function(_0x1c1715){logger[_0xb313('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0x1b59b9,_0xb313('0xe'));logger['debug']('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x1b59b9,_0xb313('0xe'),JSON[_0xb313('0xf')](_0x1c1715));if(_0x1c1715[_0xb313('0x10')]){if(_0x1c1715[_0xb313('0x10')][_0xb313('0x11')]===0x1f4){logger['error'](_0xb313('0x12'),_0x1b59b9,_0x1c1715[_0xb313('0x10')][_0xb313('0x13')]);return _0x58e32e(_0x1c1715['error'][_0xb313('0x13')]);}logger[_0xb313('0x10')](_0xb313('0x12'),_0x1b59b9,_0x1c1715[_0xb313('0x10')][_0xb313('0x13')]);return _0x591224(_0x1c1715[_0xb313('0x10')][_0xb313('0x13')]);}else{logger[_0xb313('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0x1b59b9,'request\x20sent');_0x591224(_0x1c1715[_0xb313('0x14')][_0xb313('0x13')]);}})[_0xb313('0x15')](function(_0x426fa9){logger[_0xb313('0x10')](_0xb313('0x12'),_0x1b59b9,_0x426fa9);_0x58e32e(_0x426fa9);});});}exports[_0xb313('0x16')]=function(_0x579410){var _0x24408d=this;return new Promise(function(_0xccaa1f,_0x29e600){return db[_0xb313('0x17')][_0xb313('0x18')]({'raw':_0x579410[_0xb313('0x19')]?_0x579410[_0xb313('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x579410[_0xb313('0x19')]?_0x579410[_0xb313('0x19')][_0xb313('0x1a')]||null:null,'attributes':_0x579410[_0xb313('0x19')]?_0x579410['options'][_0xb313('0x1b')]||null:null,'limit':_0x579410[_0xb313('0x19')]?_0x579410[_0xb313('0x19')][_0xb313('0x1c')]||null:null,'include':_0x579410['options']?_0x579410[_0xb313('0x19')]['include']?_['map'](_0x579410[_0xb313('0x19')][_0xb313('0x1d')],function(_0x4c9913){return{'model':db[_0x4c9913['model']],'as':_0x4c9913['as'],'attributes':_0x4c9913[_0xb313('0x1b')],'include':_0x4c9913[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0x4c9913['include'],function(_0xb8d6b1){return{'model':db[_0xb8d6b1[_0xb313('0x1f')]],'as':_0xb8d6b1['as'],'attributes':_0xb8d6b1[_0xb313('0x1b')],'include':_0xb8d6b1[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0xb8d6b1[_0xb313('0x1d')],function(_0x2189bb){return{'model':db[_0x2189bb[_0xb313('0x1f')]],'as':_0x2189bb['as'],'attributes':_0x2189bb[_0xb313('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb313('0xc')](function(_0x595212){logger['info'](_0xb313('0x16'),_0x579410);logger[_0xb313('0x20')](_0xb313('0x16'),_0x579410,JSON['stringify'](_0x595212));_0xccaa1f(_0x595212);})[_0xb313('0x15')](function(_0x1d5683){logger['error'](_0xb313('0x16'),_0x1d5683['message'],_0x579410);_0x29e600(_0x24408d[_0xb313('0x10')](0x1f4,_0x1d5683[_0xb313('0x13')]));});});};exports[_0xb313('0x21')]=function(_0x3d356e){var _0x356eea=this;return new Promise(function(_0x424f24,_0x3cb921){return db['ServicenowAccount'][_0xb313('0x22')]({'raw':_0x3d356e['options']?_0x3d356e[_0xb313('0x19')][_0xb313('0x23')]===undefined?!![]:![]:!![],'where':_0x3d356e[_0xb313('0x19')]?_0x3d356e[_0xb313('0x19')]['where']||null:null,'attributes':_0x3d356e[_0xb313('0x19')]?_0x3d356e[_0xb313('0x19')]['attributes']||null:null,'include':_0x3d356e[_0xb313('0x19')]?_0x3d356e[_0xb313('0x19')]['include']?_[_0xb313('0x1e')](_0x3d356e[_0xb313('0x19')][_0xb313('0x1d')],function(_0xd4e9cc){return{'model':db[_0xd4e9cc[_0xb313('0x1f')]],'as':_0xd4e9cc['as'],'attributes':_0xd4e9cc[_0xb313('0x1b')],'include':_0xd4e9cc[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0xd4e9cc['include'],function(_0x30023d){return{'model':db[_0x30023d[_0xb313('0x1f')]],'as':_0x30023d['as'],'attributes':_0x30023d['attributes'],'include':_0x30023d[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0x30023d[_0xb313('0x1d')],function(_0x582f33){return{'model':db[_0x582f33['model']],'as':_0x582f33['as'],'attributes':_0x582f33[_0xb313('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb313('0xc')](function(_0xfeabea){logger['info'](_0xb313('0x21'),_0x3d356e);logger[_0xb313('0x20')](_0xb313('0x21'),_0x3d356e,JSON[_0xb313('0xf')](_0xfeabea));_0x424f24(_0xfeabea);})[_0xb313('0x15')](function(_0x4594f5){logger['error'](_0xb313('0x21'),_0x4594f5[_0xb313('0x13')],_0x3d356e);_0x3cb921(_0x356eea[_0xb313('0x10')](0x1f4,_0x4594f5[_0xb313('0x13')]));});});};
\ No newline at end of file
+var _0x63f4=['error','code','message','result','catch','GetServicenowAccount','ServicenowAccount','options','where','attributes','limit','include','map','model','debug','ShowServicenowAccount','find','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x30faec,_0x18940b){var _0x29484f=function(_0x169ae8){while(--_0x169ae8){_0x30faec['push'](_0x30faec['shift']());}};_0x29484f(++_0x18940b);}(_0x63f4,0xf0));var _0x463f=function(_0x1de900,_0x3f0834){_0x1de900=_0x1de900-0x0;var _0x2d1d47=_0x63f4[_0x1de900];return _0x2d1d47;};'use strict';var _=require(_0x463f('0x0'));var util=require(_0x463f('0x1'));var moment=require('moment');var BPromise=require(_0x463f('0x2'));var rs=require(_0x463f('0x3'));var fs=require('fs');var Redis=require(_0x463f('0x4'));var db=require(_0x463f('0x5'))['db'];var utils=require(_0x463f('0x6'));var logger=require(_0x463f('0x7'))(_0x463f('0x8'));var config=require(_0x463f('0x9'));var jayson=require(_0x463f('0xa'));var client=jayson[_0x463f('0xb')][_0x463f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1265dc,_0x575613,_0x3520e5){return new BPromise(function(_0x36a0a8,_0x5d1e31){return client['request'](_0x1265dc,_0x3520e5)[_0x463f('0xd')](function(_0x200776){logger[_0x463f('0xe')](_0x463f('0xf'),_0x575613,_0x463f('0x10'));logger['debug'](_0x463f('0x11'),_0x575613,_0x463f('0x10'),JSON[_0x463f('0x12')](_0x200776));if(_0x200776[_0x463f('0x13')]){if(_0x200776[_0x463f('0x13')][_0x463f('0x14')]===0x1f4){logger[_0x463f('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x575613,_0x200776['error'][_0x463f('0x15')]);return _0x5d1e31(_0x200776['error']['message']);}logger[_0x463f('0x13')](_0x463f('0xf'),_0x575613,_0x200776[_0x463f('0x13')]['message']);return _0x36a0a8(_0x200776[_0x463f('0x13')][_0x463f('0x15')]);}else{logger[_0x463f('0xe')](_0x463f('0xf'),_0x575613,'request\x20sent');_0x36a0a8(_0x200776[_0x463f('0x16')][_0x463f('0x15')]);}})[_0x463f('0x17')](function(_0x4143b0){logger['error'](_0x463f('0xf'),_0x575613,_0x4143b0);_0x5d1e31(_0x4143b0);});});}exports[_0x463f('0x18')]=function(_0x461d8e){var _0x96e5a6=this;return new Promise(function(_0x1ed9e5,_0x23e08c){return db[_0x463f('0x19')]['findAll']({'raw':_0x461d8e[_0x463f('0x1a')]?_0x461d8e[_0x463f('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x461d8e[_0x463f('0x1a')]?_0x461d8e[_0x463f('0x1a')][_0x463f('0x1b')]||null:null,'attributes':_0x461d8e[_0x463f('0x1a')]?_0x461d8e[_0x463f('0x1a')][_0x463f('0x1c')]||null:null,'limit':_0x461d8e[_0x463f('0x1a')]?_0x461d8e[_0x463f('0x1a')][_0x463f('0x1d')]||null:null,'include':_0x461d8e[_0x463f('0x1a')]?_0x461d8e[_0x463f('0x1a')][_0x463f('0x1e')]?_['map'](_0x461d8e[_0x463f('0x1a')][_0x463f('0x1e')],function(_0x1699c1){return{'model':db[_0x1699c1['model']],'as':_0x1699c1['as'],'attributes':_0x1699c1['attributes'],'include':_0x1699c1[_0x463f('0x1e')]?_[_0x463f('0x1f')](_0x1699c1[_0x463f('0x1e')],function(_0x8c0379){return{'model':db[_0x8c0379[_0x463f('0x20')]],'as':_0x8c0379['as'],'attributes':_0x8c0379[_0x463f('0x1c')],'include':_0x8c0379[_0x463f('0x1e')]?_[_0x463f('0x1f')](_0x8c0379[_0x463f('0x1e')],function(_0x1012e5){return{'model':db[_0x1012e5['model']],'as':_0x1012e5['as'],'attributes':_0x1012e5[_0x463f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x463f('0xd')](function(_0x47df13){logger['info'](_0x463f('0x18'),_0x461d8e);logger[_0x463f('0x21')]('GetServicenowAccount',_0x461d8e,JSON['stringify'](_0x47df13));_0x1ed9e5(_0x47df13);})[_0x463f('0x17')](function(_0x46eeb2){logger[_0x463f('0x13')]('GetServicenowAccount',_0x46eeb2[_0x463f('0x15')],_0x461d8e);_0x23e08c(_0x96e5a6[_0x463f('0x13')](0x1f4,_0x46eeb2[_0x463f('0x15')]));});});};exports[_0x463f('0x22')]=function(_0x4721e8){var _0x2386cc=this;return new Promise(function(_0x5c3dda,_0x572389){return db[_0x463f('0x19')][_0x463f('0x23')]({'raw':_0x4721e8[_0x463f('0x1a')]?_0x4721e8['options'][_0x463f('0x24')]===undefined?!![]:![]:!![],'where':_0x4721e8[_0x463f('0x1a')]?_0x4721e8[_0x463f('0x1a')]['where']||null:null,'attributes':_0x4721e8[_0x463f('0x1a')]?_0x4721e8['options'][_0x463f('0x1c')]||null:null,'include':_0x4721e8[_0x463f('0x1a')]?_0x4721e8['options'][_0x463f('0x1e')]?_['map'](_0x4721e8[_0x463f('0x1a')][_0x463f('0x1e')],function(_0x5a545b){return{'model':db[_0x5a545b[_0x463f('0x20')]],'as':_0x5a545b['as'],'attributes':_0x5a545b[_0x463f('0x1c')],'include':_0x5a545b[_0x463f('0x1e')]?_[_0x463f('0x1f')](_0x5a545b[_0x463f('0x1e')],function(_0xc7c0f6){return{'model':db[_0xc7c0f6['model']],'as':_0xc7c0f6['as'],'attributes':_0xc7c0f6[_0x463f('0x1c')],'include':_0xc7c0f6[_0x463f('0x1e')]?_[_0x463f('0x1f')](_0xc7c0f6['include'],function(_0x3ac34b){return{'model':db[_0x3ac34b['model']],'as':_0x3ac34b['as'],'attributes':_0x3ac34b[_0x463f('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b9e8c){logger[_0x463f('0xe')](_0x463f('0x22'),_0x4721e8);logger[_0x463f('0x21')]('ShowServicenowAccount',_0x4721e8,JSON[_0x463f('0x12')](_0x4b9e8c));_0x5c3dda(_0x4b9e8c);})[_0x463f('0x17')](function(_0x53fd3d){logger[_0x463f('0x13')](_0x463f('0x22'),_0x53fd3d['message'],_0x4721e8);_0x572389(_0x2386cc[_0x463f('0x13')](0x1f4,_0x53fd3d[_0x463f('0x15')]));});});};
\ No newline at end of file
index 8314549..7bcb562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x644d=['create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x2a6293,_0x29d312){var _0x1fcba2=function(_0x352193){while(--_0x352193){_0x2a6293['push'](_0x2a6293['shift']());}};_0x1fcba2(++_0x29d312);}(_0x644d,0xed));var _0xd644=function(_0x264b9b,_0xa1181e){_0x264b9b=_0x264b9b-0x0;var _0x4c7a0e=_0x644d[_0x264b9b];return _0x4c7a0e;};'use strict';var multer=require(_0xd644('0x0'));var util=require('util');var path=require(_0xd644('0x1'));var timeout=require('connect-timeout');var express=require(_0xd644('0x2'));var router=express[_0xd644('0x3')]();var fs_extra=require(_0xd644('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd644('0x5'));router[_0xd644('0x6')]('/',auth['isAuthenticated'](),controller[_0xd644('0x7')]);router[_0xd644('0x6')](_0xd644('0x8'),auth[_0xd644('0x9')](),controller[_0xd644('0xa')]);router[_0xd644('0x6')]('/:id/fields',auth['isAuthenticated'](),controller[_0xd644('0xb')]);router[_0xd644('0x6')](_0xd644('0xc'),auth[_0xd644('0x9')](),controller[_0xd644('0xd')]);router[_0xd644('0x6')](_0xd644('0xe'),auth[_0xd644('0x9')](),controller['getDescriptions']);router['post']('/',auth[_0xd644('0x9')](),controller[_0xd644('0xf')]);router[_0xd644('0x10')](_0xd644('0x8'),auth[_0xd644('0x9')](),controller[_0xd644('0x11')]);router[_0xd644('0x12')](_0xd644('0x8'),auth['isAuthenticated'](),controller[_0xd644('0x13')]);module[_0xd644('0x14')]=router;
\ No newline at end of file
+var _0x7755=['isAuthenticated','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','destroy','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','index','get','/:id'];(function(_0x5671bb,_0x1f247e){var _0x40a5ec=function(_0x2def96){while(--_0x2def96){_0x5671bb['push'](_0x5671bb['shift']());}};_0x40a5ec(++_0x1f247e);}(_0x7755,0x109));var _0x5775=function(_0x16ca8e,_0x60f267){_0x16ca8e=_0x16ca8e-0x0;var _0x4c560e=_0x7755[_0x16ca8e];return _0x4c560e;};'use strict';var multer=require(_0x5775('0x0'));var util=require('util');var path=require(_0x5775('0x1'));var timeout=require('connect-timeout');var express=require(_0x5775('0x2'));var router=express['Router']();var fs_extra=require(_0x5775('0x3'));var auth=require(_0x5775('0x4'));var interaction=require(_0x5775('0x5'));var config=require(_0x5775('0x6'));var controller=require(_0x5775('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x5775('0x8')]);router[_0x5775('0x9')](_0x5775('0xa'),auth[_0x5775('0xb')](),controller['show']);router['get'](_0x5775('0xc'),auth[_0x5775('0xb')](),controller[_0x5775('0xd')]);router[_0x5775('0x9')](_0x5775('0xe'),auth[_0x5775('0xb')](),controller[_0x5775('0xf')]);router[_0x5775('0x9')](_0x5775('0x10'),auth[_0x5775('0xb')](),controller[_0x5775('0x11')]);router[_0x5775('0x12')]('/',auth[_0x5775('0xb')](),controller[_0x5775('0x13')]);router[_0x5775('0x14')](_0x5775('0xa'),auth[_0x5775('0xb')](),controller[_0x5775('0x15')]);router['delete'](_0x5775('0xa'),auth['isAuthenticated'](),controller[_0x5775('0x16')]);module['exports']=router;
\ No newline at end of file
index ef9f966..dde57fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f8=['sequelize','exports','STRING'];(function(_0x28c0ac,_0x4b016f){var _0x4906fa=function(_0x44501c){while(--_0x44501c){_0x28c0ac['push'](_0x28c0ac['shift']());}};_0x4906fa(++_0x4b016f);}(_0x32f8,0x8d));var _0x832f=function(_0x501951,_0x388f47){_0x501951=_0x501951-0x0;var _0x3afd49=_0x32f8[_0x501951];return _0x3afd49;};'use strict';var Sequelize=require(_0x832f('0x0'));module[_0x832f('0x1')]={'name':{'type':Sequelize[_0x832f('0x2')]},'description':{'type':Sequelize[_0x832f('0x2')]}};
\ No newline at end of file
+var _0xce6b=['sequelize','exports','STRING'];(function(_0x50cc54,_0x54c15f){var _0x28ecca=function(_0x4eff92){while(--_0x4eff92){_0x50cc54['push'](_0x50cc54['shift']());}};_0x28ecca(++_0x54c15f);}(_0xce6b,0xc9));var _0xbce6=function(_0x34ce22,_0x36dd88){_0x34ce22=_0x34ce22-0x0;var _0x1874ff=_0xce6b[_0x34ce22];return _0x1874ff;};'use strict';var Sequelize=require(_0xbce6('0x0'));module[_0xbce6('0x1')]={'name':{'type':Sequelize[_0xbce6('0x2')]},'description':{'type':Sequelize[_0xbce6('0x2')]}};
\ No newline at end of file
index 80cbaf1..cad0371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30a=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','then','end','error','stack','name','map','ServicenowConfiguration','type','key','model','query','keys','fields','attributes','length','hasOwnProperty','nolimit','order','where','filters','filter','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','intersection','merge','options','create','update','body','find','getFields','findOne','ServicenowField','rawAttributes','sort','pick','getSubjects','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis'];(function(_0x31e1c1,_0x5b01f8){var _0x555aa9=function(_0x20fbd1){while(--_0x20fbd1){_0x31e1c1['push'](_0x31e1c1['shift']());}};_0x555aa9(++_0x5b01f8);}(_0xd30a,0x1bd));var _0xad30=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0xd30a[_0x1e7b16];return _0x37fadc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xad30('0x0'));var jsonpatch=require(_0xad30('0x1'));var rp=require(_0xad30('0x2'));var moment=require(_0xad30('0x3'));var BPromise=require(_0xad30('0x4'));var Mustache=require(_0xad30('0x5'));var util=require(_0xad30('0x6'));var path=require(_0xad30('0x7'));var sox=require(_0xad30('0x8'));var csv=require(_0xad30('0x9'));var ejs=require(_0xad30('0xa'));var fs=require('fs');var fs_extra=require(_0xad30('0xb'));var _=require(_0xad30('0xc'));var squel=require(_0xad30('0xd'));var crypto=require('crypto');var jsforce=require(_0xad30('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xad30('0x9'));var querystring=require('querystring');var Papa=require(_0xad30('0xf'));var Redis=require(_0xad30('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xad30('0x11'));var as=require(_0xad30('0x12'));var hardwareService=require(_0xad30('0x13'));var logger=require('../../config/logger')(_0xad30('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xad30('0x15'));var db=require(_0xad30('0x16'))['db'];function respondWithStatusCode(_0x36169e,_0x1972d1){_0x1972d1=_0x1972d1||0xcc;return function(_0x2c569c){if(_0x2c569c){return _0x36169e[_0xad30('0x17')](_0x1972d1);}return _0x36169e[_0xad30('0x18')](_0x1972d1)['end']();};}function respondWithResult(_0x958676,_0xd07097){_0xd07097=_0xd07097||0xc8;return function(_0x4dc75a){if(_0x4dc75a){return _0x958676[_0xad30('0x18')](_0xd07097)[_0xad30('0x19')](_0x4dc75a);}};}function respondWithFilteredResult(_0x521a5b,_0x59d7de){return function(_0x3d4baf){if(_0x3d4baf){var _0x187593=typeof _0x59d7de[_0xad30('0x1a')]==='undefined'&&typeof _0x59d7de[_0xad30('0x1b')]===_0xad30('0x1c');var _0x58d9f2=_0x3d4baf['count'];var _0x35b1bb=_0x187593?0x0:_0x59d7de[_0xad30('0x1a')];var _0x2ee82c=_0x187593?_0x3d4baf[_0xad30('0x1d')]:_0x59d7de['offset']+_0x59d7de['limit'];var _0x1f378b;if(_0x2ee82c>=_0x58d9f2){_0x2ee82c=_0x58d9f2;_0x1f378b=0xc8;}else{_0x1f378b=0xce;}_0x521a5b[_0xad30('0x18')](_0x1f378b);return _0x521a5b['set'](_0xad30('0x1e'),_0x35b1bb+'-'+_0x2ee82c+'/'+_0x58d9f2)[_0xad30('0x19')](_0x3d4baf);}return null;};}function patchUpdates(_0x54321d){return function(_0xd89bd3){try{jsonpatch[_0xad30('0x1f')](_0xd89bd3,_0x54321d,!![]);}catch(_0x2cc60e){return BPromise[_0xad30('0x20')](_0x2cc60e);}return _0xd89bd3['save']();};}function saveUpdates(_0x270b5,_0x54a0e7){return function(_0x599983){if(_0x599983){return _0x599983['update'](_0x270b5)[_0xad30('0x21')](function(_0x15521c){return _0x15521c;});}return null;};}function removeEntity(_0x5adb56,_0x16086d){return function(_0x4fde27){if(_0x4fde27){return _0x4fde27['destroy']()['then'](function(){_0x5adb56[_0xad30('0x18')](0xcc)[_0xad30('0x22')]();});}};}function handleEntityNotFound(_0x4fb909,_0x566908){return function(_0x2ef697){if(!_0x2ef697){_0x4fb909[_0xad30('0x17')](0x194);}return _0x2ef697;};}function handleError(_0x26e0bd,_0x1eca7a){_0x1eca7a=_0x1eca7a||0x1f4;return function(_0x251800){logger[_0xad30('0x23')](_0x251800[_0xad30('0x24')]);if(_0x251800[_0xad30('0x25')]){delete _0x251800[_0xad30('0x25')];}_0x26e0bd['status'](_0x1eca7a)['send'](_0x251800);};}exports['index']=function(_0x14fb6e,_0x1d4581){var _0x29c67b={},_0x3b6ecf={},_0x353714={'count':0x0,'rows':[]};var _0x372f09=_[_0xad30('0x26')](db[_0xad30('0x27')]['rawAttributes'],function(_0x22f2ba){return{'name':_0x22f2ba['fieldName'],'type':_0x22f2ba[_0xad30('0x28')][_0xad30('0x29')]};});_0x3b6ecf[_0xad30('0x2a')]=_[_0xad30('0x26')](_0x372f09,_0xad30('0x25'));_0x3b6ecf[_0xad30('0x2b')]=_[_0xad30('0x2c')](_0x14fb6e[_0xad30('0x2b')]);_0x3b6ecf['filters']=_['intersection'](_0x3b6ecf[_0xad30('0x2a')],_0x3b6ecf[_0xad30('0x2b')]);_0x29c67b['attributes']=_['intersection'](_0x3b6ecf[_0xad30('0x2a')],qs[_0xad30('0x2d')](_0x14fb6e[_0xad30('0x2b')][_0xad30('0x2d')]));_0x29c67b[_0xad30('0x2e')]=_0x29c67b['attributes'][_0xad30('0x2f')]?_0x29c67b[_0xad30('0x2e')]:_0x3b6ecf[_0xad30('0x2a')];if(!_0x14fb6e[_0xad30('0x2b')][_0xad30('0x30')](_0xad30('0x31'))){_0x29c67b[_0xad30('0x1b')]=qs[_0xad30('0x1b')](_0x14fb6e['query'][_0xad30('0x1b')]);_0x29c67b[_0xad30('0x1a')]=qs['offset'](_0x14fb6e[_0xad30('0x2b')]['offset']);}_0x29c67b[_0xad30('0x32')]=qs['sort'](_0x14fb6e[_0xad30('0x2b')]['sort']);_0x29c67b[_0xad30('0x33')]=qs[_0xad30('0x34')](_['pick'](_0x14fb6e[_0xad30('0x2b')],_0x3b6ecf['filters']),_0x372f09);if(_0x14fb6e['query'][_0xad30('0x35')]){_0x29c67b[_0xad30('0x33')]=_['merge'](_0x29c67b[_0xad30('0x33')],{'$or':_[_0xad30('0x26')](_0x372f09,function(_0x235217){if(_0x235217[_0xad30('0x28')]!==_0xad30('0x36')){var _0xed77bd={};_0xed77bd[_0x235217['name']]={'$like':'%'+_0x14fb6e[_0xad30('0x2b')][_0xad30('0x35')]+'%'};return _0xed77bd;}})});}_0x29c67b=_['merge']({},_0x29c67b,_0x14fb6e['options']);var _0x29ef83={'where':_0x29c67b['where']};return db[_0xad30('0x27')][_0xad30('0x1d')](_0x29ef83)['then'](function(_0xed3786){_0x353714[_0xad30('0x1d')]=_0xed3786;if(_0x14fb6e[_0xad30('0x2b')][_0xad30('0x37')]){_0x29c67b[_0xad30('0x38')]=[{'all':!![]}];}return db[_0xad30('0x27')][_0xad30('0x39')](_0x29c67b);})[_0xad30('0x21')](function(_0x5b6f8c){_0x353714[_0xad30('0x3a')]=_0x5b6f8c;return _0x353714;})[_0xad30('0x21')](respondWithFilteredResult(_0x1d4581,_0x29c67b))[_0xad30('0x3b')](handleError(_0x1d4581,null));};exports[_0xad30('0x3c')]=function(_0x328e5b,_0x3f6d8e){var _0x2c3f84={'raw':![],'where':{'id':_0x328e5b[_0xad30('0x3d')]['id']}},_0x385507={};_0x385507[_0xad30('0x2a')]=_['keys'](db['ServicenowConfiguration']['rawAttributes']);_0x385507['query']=_[_0xad30('0x2c')](_0x328e5b[_0xad30('0x2b')]);_0x385507['filters']=_['intersection'](_0x385507[_0xad30('0x2a')],_0x385507['query']);_0x2c3f84[_0xad30('0x2e')]=_[_0xad30('0x3e')](_0x385507[_0xad30('0x2a')],qs['fields'](_0x328e5b[_0xad30('0x2b')]['fields']));_0x2c3f84[_0xad30('0x2e')]=_0x2c3f84[_0xad30('0x2e')][_0xad30('0x2f')]?_0x2c3f84[_0xad30('0x2e')]:_0x385507[_0xad30('0x2a')];if(_0x328e5b[_0xad30('0x2b')][_0xad30('0x37')]){_0x2c3f84[_0xad30('0x38')]=[{'all':!![]}];}_0x2c3f84=_[_0xad30('0x3f')]({},_0x2c3f84,_0x328e5b[_0xad30('0x40')]);return db['ServicenowConfiguration']['find'](_0x2c3f84)[_0xad30('0x21')](handleEntityNotFound(_0x3f6d8e,null))[_0xad30('0x21')](respondWithResult(_0x3f6d8e,null))[_0xad30('0x3b')](handleError(_0x3f6d8e,null));};exports[_0xad30('0x41')]=function(_0x34f621,_0x2b7550){return db[_0xad30('0x27')][_0xad30('0x41')](_0x34f621['body'],{})[_0xad30('0x21')](respondWithResult(_0x2b7550,0xc9))[_0xad30('0x3b')](handleError(_0x2b7550,null));};exports[_0xad30('0x42')]=function(_0x310fa5,_0x2d221c){if(_0x310fa5[_0xad30('0x43')]['id']){delete _0x310fa5[_0xad30('0x43')]['id'];}return db[_0xad30('0x27')]['find']({'where':{'id':_0x310fa5[_0xad30('0x3d')]['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x2d221c,null))[_0xad30('0x21')](saveUpdates(_0x310fa5[_0xad30('0x43')],null))[_0xad30('0x21')](respondWithResult(_0x2d221c,null))[_0xad30('0x3b')](handleError(_0x2d221c,null));};exports['destroy']=function(_0x2d95e4,_0x375dd6){return db['ServicenowConfiguration'][_0xad30('0x44')]({'where':{'id':_0x2d95e4[_0xad30('0x3d')]['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x375dd6,null))['then'](removeEntity(_0x375dd6,null))[_0xad30('0x3b')](handleError(_0x375dd6,null));};exports[_0xad30('0x45')]=function(_0x4ef002,_0x5a5099,_0x4e65b9){var _0x558112={};var _0x1adedd={};var _0x4b0bd3;var _0x4d5d5;return db[_0xad30('0x27')][_0xad30('0x46')]({'where':{'id':_0x4ef002['params']['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x5a5099,null))[_0xad30('0x21')](function(_0x59e8eb){if(_0x59e8eb){_0x4b0bd3=_0x59e8eb;_0x1adedd['model']=_[_0xad30('0x2c')](db[_0xad30('0x47')][_0xad30('0x48')]);_0x1adedd[_0xad30('0x2b')]=_[_0xad30('0x2c')](_0x4ef002['query']);_0x1adedd[_0xad30('0x34')]=_[_0xad30('0x3e')](_0x1adedd[_0xad30('0x2a')],_0x1adedd[_0xad30('0x2b')]);_0x558112['attributes']=_['intersection'](_0x1adedd[_0xad30('0x2a')],qs[_0xad30('0x2d')](_0x4ef002[_0xad30('0x2b')][_0xad30('0x2d')]));_0x558112[_0xad30('0x2e')]=_0x558112[_0xad30('0x2e')][_0xad30('0x2f')]?_0x558112[_0xad30('0x2e')]:_0x1adedd[_0xad30('0x2a')];_0x558112[_0xad30('0x32')]=qs[_0xad30('0x49')](_0x4ef002['query']['sort']);_0x558112['where']=qs[_0xad30('0x34')](_[_0xad30('0x4a')](_0x4ef002[_0xad30('0x2b')],_0x1adedd['filters']));if(_0x4ef002['query'][_0xad30('0x35')]){_0x558112['where']=_[_0xad30('0x3f')](_0x558112[_0xad30('0x33')],{'$or':_['map'](_0x558112['attributes'],function(_0x47e17a){var _0x31fb9d={};_0x31fb9d[_0x47e17a]={'$like':'%'+_0x4ef002[_0xad30('0x2b')][_0xad30('0x35')]+'%'};return _0x31fb9d;})});}_0x558112=_[_0xad30('0x3f')]({},_0x558112,_0x4ef002[_0xad30('0x40')]);return _0x4b0bd3[_0xad30('0x45')](_0x558112);}})[_0xad30('0x21')](function(_0x3c5d63){if(_0x3c5d63){_0x4d5d5=_0x3c5d63[_0xad30('0x2f')];if(!_0x4ef002[_0xad30('0x2b')][_0xad30('0x30')]('nolimit')){_0x558112[_0xad30('0x1b')]=qs['limit'](_0x4ef002[_0xad30('0x2b')]['limit']);_0x558112[_0xad30('0x1a')]=qs[_0xad30('0x1a')](_0x4ef002[_0xad30('0x2b')][_0xad30('0x1a')]);}return _0x4b0bd3['getFields'](_0x558112);}})[_0xad30('0x21')](function(_0x5b197f){if(_0x5b197f){return _0x5b197f?{'count':_0x4d5d5,'rows':_0x5b197f}:null;}})[_0xad30('0x21')](respondWithResult(_0x5a5099,null))[_0xad30('0x3b')](handleError(_0x5a5099,null));};exports[_0xad30('0x4b')]=function(_0x3386b4,_0x3b830b,_0x14ffd1){var _0x29ddcc={};var _0x5aafec={};var _0x20361c;var _0xc3d251;return db['ServicenowConfiguration'][_0xad30('0x46')]({'where':{'id':_0x3386b4['params']['id']}})['then'](handleEntityNotFound(_0x3b830b,null))['then'](function(_0x33c9b9){if(_0x33c9b9){_0x20361c=_0x33c9b9;_0x5aafec[_0xad30('0x2a')]=_[_0xad30('0x2c')](db[_0xad30('0x47')][_0xad30('0x48')]);_0x5aafec[_0xad30('0x2b')]=_['keys'](_0x3386b4[_0xad30('0x2b')]);_0x5aafec[_0xad30('0x34')]=_['intersection'](_0x5aafec[_0xad30('0x2a')],_0x5aafec[_0xad30('0x2b')]);_0x29ddcc['attributes']=_['intersection'](_0x5aafec['model'],qs[_0xad30('0x2d')](_0x3386b4[_0xad30('0x2b')]['fields']));_0x29ddcc[_0xad30('0x2e')]=_0x29ddcc[_0xad30('0x2e')][_0xad30('0x2f')]?_0x29ddcc[_0xad30('0x2e')]:_0x5aafec['model'];_0x29ddcc['order']=qs[_0xad30('0x49')](_0x3386b4['query'][_0xad30('0x49')]);_0x29ddcc[_0xad30('0x33')]=qs[_0xad30('0x34')](_['pick'](_0x3386b4[_0xad30('0x2b')],_0x5aafec['filters']));if(_0x3386b4[_0xad30('0x2b')][_0xad30('0x35')]){_0x29ddcc['where']=_[_0xad30('0x3f')](_0x29ddcc[_0xad30('0x33')],{'$or':_[_0xad30('0x26')](_0x29ddcc[_0xad30('0x2e')],function(_0x5caa25){var _0x384a6b={};_0x384a6b[_0x5caa25]={'$like':'%'+_0x3386b4[_0xad30('0x2b')]['filter']+'%'};return _0x384a6b;})});}_0x29ddcc=_['merge']({},_0x29ddcc,_0x3386b4[_0xad30('0x40')]);return _0x20361c[_0xad30('0x4b')](_0x29ddcc);}})[_0xad30('0x21')](function(_0x191dd6){if(_0x191dd6){_0xc3d251=_0x191dd6[_0xad30('0x2f')];if(!_0x3386b4['query'][_0xad30('0x30')](_0xad30('0x31'))){_0x29ddcc[_0xad30('0x1b')]=qs[_0xad30('0x1b')](_0x3386b4[_0xad30('0x2b')][_0xad30('0x1b')]);_0x29ddcc[_0xad30('0x1a')]=qs[_0xad30('0x1a')](_0x3386b4[_0xad30('0x2b')]['offset']);}return _0x20361c[_0xad30('0x4b')](_0x29ddcc);}})[_0xad30('0x21')](function(_0x523875){if(_0x523875){return _0x523875?{'count':_0xc3d251,'rows':_0x523875}:null;}})[_0xad30('0x21')](respondWithResult(_0x3b830b,null))[_0xad30('0x3b')](handleError(_0x3b830b,null));};exports[_0xad30('0x4c')]=function(_0x458692,_0x4eccf4,_0x3b9493){var _0x2a05af={};var _0x41599d={};var _0x5d5f4f;var _0x33347b;return db[_0xad30('0x27')][_0xad30('0x46')]({'where':{'id':_0x458692[_0xad30('0x3d')]['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x4eccf4,null))[_0xad30('0x21')](function(_0x2fb8b3){if(_0x2fb8b3){_0x5d5f4f=_0x2fb8b3;_0x41599d[_0xad30('0x2a')]=_['keys'](db[_0xad30('0x47')][_0xad30('0x48')]);_0x41599d[_0xad30('0x2b')]=_[_0xad30('0x2c')](_0x458692[_0xad30('0x2b')]);_0x41599d['filters']=_[_0xad30('0x3e')](_0x41599d['model'],_0x41599d['query']);_0x2a05af['attributes']=_['intersection'](_0x41599d['model'],qs[_0xad30('0x2d')](_0x458692[_0xad30('0x2b')]['fields']));_0x2a05af[_0xad30('0x2e')]=_0x2a05af[_0xad30('0x2e')][_0xad30('0x2f')]?_0x2a05af[_0xad30('0x2e')]:_0x41599d['model'];_0x2a05af[_0xad30('0x32')]=qs[_0xad30('0x49')](_0x458692[_0xad30('0x2b')]['sort']);_0x2a05af[_0xad30('0x33')]=qs[_0xad30('0x34')](_['pick'](_0x458692[_0xad30('0x2b')],_0x41599d[_0xad30('0x34')]));if(_0x458692[_0xad30('0x2b')][_0xad30('0x35')]){_0x2a05af[_0xad30('0x33')]=_[_0xad30('0x3f')](_0x2a05af['where'],{'$or':_[_0xad30('0x26')](_0x2a05af[_0xad30('0x2e')],function(_0x559c2d){var _0x165f1c={};_0x165f1c[_0x559c2d]={'$like':'%'+_0x458692[_0xad30('0x2b')][_0xad30('0x35')]+'%'};return _0x165f1c;})});}_0x2a05af=_['merge']({},_0x2a05af,_0x458692[_0xad30('0x40')]);return _0x5d5f4f['getDescriptions'](_0x2a05af);}})[_0xad30('0x21')](function(_0x30f843){if(_0x30f843){_0x33347b=_0x30f843['length'];if(!_0x458692['query']['hasOwnProperty'](_0xad30('0x31'))){_0x2a05af[_0xad30('0x1b')]=qs['limit'](_0x458692['query']['limit']);_0x2a05af[_0xad30('0x1a')]=qs[_0xad30('0x1a')](_0x458692[_0xad30('0x2b')][_0xad30('0x1a')]);}return _0x5d5f4f['getDescriptions'](_0x2a05af);}})[_0xad30('0x21')](function(_0x13c520){if(_0x13c520){return _0x13c520?{'count':_0x33347b,'rows':_0x13c520}:null;}})['then'](respondWithResult(_0x4eccf4,null))[_0xad30('0x3b')](handleError(_0x4eccf4,null));};
\ No newline at end of file
+var _0xf737=['Content-Range','apply','reject','save','then','error','stack','name','send','index','ServicenowConfiguration','fieldName','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','map','type','options','includeAll','findAll','rows','show','params','keys','rawAttributes','length','include','find','catch','create','update','body','destroy','getFields','findOne','ServicenowField','order','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0xf737,0x1c1));var _0x7f73=function(_0xeeb1bc,_0x2eb039){_0xeeb1bc=_0xeeb1bc-0x0;var _0x53320d=_0xf737[_0xeeb1bc];return _0x53320d;};'use strict';var emlformat=require(_0x7f73('0x0'));var rimraf=require(_0x7f73('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7f73('0x2'));var rp=require(_0x7f73('0x3'));var moment=require(_0x7f73('0x4'));var BPromise=require(_0x7f73('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7f73('0x6'));var sox=require(_0x7f73('0x7'));var csv=require(_0x7f73('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f73('0x9'));var _=require('lodash');var squel=require(_0x7f73('0xa'));var crypto=require(_0x7f73('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7f73('0xc'));var toCsv=require(_0x7f73('0x8'));var querystring=require(_0x7f73('0xd'));var Papa=require('papaparse');var Redis=require(_0x7f73('0xe'));var authService=require(_0x7f73('0xf'));var qs=require(_0x7f73('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7f73('0x11'));var logger=require(_0x7f73('0x12'))(_0x7f73('0x13'));var utils=require(_0x7f73('0x14'));var config=require(_0x7f73('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x7f73('0x16'))['db'];function respondWithStatusCode(_0x3d0e39,_0x2551c4){_0x2551c4=_0x2551c4||0xcc;return function(_0x1c4ce6){if(_0x1c4ce6){return _0x3d0e39['sendStatus'](_0x2551c4);}return _0x3d0e39[_0x7f73('0x17')](_0x2551c4)[_0x7f73('0x18')]();};}function respondWithResult(_0x46d2c5,_0x20ae24){_0x20ae24=_0x20ae24||0xc8;return function(_0x2fb6b7){if(_0x2fb6b7){return _0x46d2c5[_0x7f73('0x17')](_0x20ae24)[_0x7f73('0x19')](_0x2fb6b7);}};}function respondWithFilteredResult(_0x82ff6a,_0x44534a){return function(_0x4f2430){if(_0x4f2430){var _0x5d4c29=typeof _0x44534a[_0x7f73('0x1a')]===_0x7f73('0x1b')&&typeof _0x44534a[_0x7f73('0x1c')]==='undefined';var _0xd46c32=_0x4f2430[_0x7f73('0x1d')];var _0x3233e3=_0x5d4c29?0x0:_0x44534a[_0x7f73('0x1a')];var _0xd21817=_0x5d4c29?_0x4f2430[_0x7f73('0x1d')]:_0x44534a[_0x7f73('0x1a')]+_0x44534a[_0x7f73('0x1c')];var _0xbf44c5;if(_0xd21817>=_0xd46c32){_0xd21817=_0xd46c32;_0xbf44c5=0xc8;}else{_0xbf44c5=0xce;}_0x82ff6a[_0x7f73('0x17')](_0xbf44c5);return _0x82ff6a[_0x7f73('0x1e')](_0x7f73('0x1f'),_0x3233e3+'-'+_0xd21817+'/'+_0xd46c32)[_0x7f73('0x19')](_0x4f2430);}return null;};}function patchUpdates(_0x21cf6d){return function(_0x55a915){try{jsonpatch[_0x7f73('0x20')](_0x55a915,_0x21cf6d,!![]);}catch(_0x2a2032){return BPromise[_0x7f73('0x21')](_0x2a2032);}return _0x55a915[_0x7f73('0x22')]();};}function saveUpdates(_0x40eb21,_0x4b0107){return function(_0x578545){if(_0x578545){return _0x578545['update'](_0x40eb21)[_0x7f73('0x23')](function(_0x281840){return _0x281840;});}return null;};}function removeEntity(_0x3a1a38,_0x3d847d){return function(_0x1b60f0){if(_0x1b60f0){return _0x1b60f0['destroy']()[_0x7f73('0x23')](function(){_0x3a1a38[_0x7f73('0x17')](0xcc)[_0x7f73('0x18')]();});}};}function handleEntityNotFound(_0x45271a,_0x562010){return function(_0x47a4e3){if(!_0x47a4e3){_0x45271a['sendStatus'](0x194);}return _0x47a4e3;};}function handleError(_0x4903f2,_0x5bea29){_0x5bea29=_0x5bea29||0x1f4;return function(_0x5a21fc){logger[_0x7f73('0x24')](_0x5a21fc[_0x7f73('0x25')]);if(_0x5a21fc[_0x7f73('0x26')]){delete _0x5a21fc[_0x7f73('0x26')];}_0x4903f2[_0x7f73('0x17')](_0x5bea29)[_0x7f73('0x27')](_0x5a21fc);};}exports[_0x7f73('0x28')]=function(_0x197f46,_0x189e6b){var _0x2052e8={},_0x37b8fa={},_0x510f45={'count':0x0,'rows':[]};var _0x43c418=_['map'](db[_0x7f73('0x29')]['rawAttributes'],function(_0x2c490a){return{'name':_0x2c490a[_0x7f73('0x2a')],'type':_0x2c490a['type']['key']};});_0x37b8fa[_0x7f73('0x2b')]=_['map'](_0x43c418,_0x7f73('0x26'));_0x37b8fa[_0x7f73('0x2c')]=_['keys'](_0x197f46[_0x7f73('0x2c')]);_0x37b8fa[_0x7f73('0x2d')]=_[_0x7f73('0x2e')](_0x37b8fa[_0x7f73('0x2b')],_0x37b8fa[_0x7f73('0x2c')]);_0x2052e8[_0x7f73('0x2f')]=_['intersection'](_0x37b8fa[_0x7f73('0x2b')],qs[_0x7f73('0x30')](_0x197f46[_0x7f73('0x2c')][_0x7f73('0x30')]));_0x2052e8[_0x7f73('0x2f')]=_0x2052e8[_0x7f73('0x2f')]['length']?_0x2052e8[_0x7f73('0x2f')]:_0x37b8fa['model'];if(!_0x197f46[_0x7f73('0x2c')][_0x7f73('0x31')](_0x7f73('0x32'))){_0x2052e8['limit']=qs['limit'](_0x197f46[_0x7f73('0x2c')][_0x7f73('0x1c')]);_0x2052e8[_0x7f73('0x1a')]=qs[_0x7f73('0x1a')](_0x197f46['query'][_0x7f73('0x1a')]);}_0x2052e8['order']=qs[_0x7f73('0x33')](_0x197f46['query'][_0x7f73('0x33')]);_0x2052e8['where']=qs[_0x7f73('0x2d')](_[_0x7f73('0x34')](_0x197f46['query'],_0x37b8fa[_0x7f73('0x2d')]),_0x43c418);if(_0x197f46[_0x7f73('0x2c')][_0x7f73('0x35')]){_0x2052e8[_0x7f73('0x36')]=_[_0x7f73('0x37')](_0x2052e8[_0x7f73('0x36')],{'$or':_[_0x7f73('0x38')](_0x43c418,function(_0x17efd3){if(_0x17efd3[_0x7f73('0x39')]!=='VIRTUAL'){var _0x2df2a7={};_0x2df2a7[_0x17efd3[_0x7f73('0x26')]]={'$like':'%'+_0x197f46[_0x7f73('0x2c')][_0x7f73('0x35')]+'%'};return _0x2df2a7;}})});}_0x2052e8=_[_0x7f73('0x37')]({},_0x2052e8,_0x197f46[_0x7f73('0x3a')]);var _0x1c5f5b={'where':_0x2052e8[_0x7f73('0x36')]};return db[_0x7f73('0x29')][_0x7f73('0x1d')](_0x1c5f5b)[_0x7f73('0x23')](function(_0xb97bc4){_0x510f45['count']=_0xb97bc4;if(_0x197f46['query'][_0x7f73('0x3b')]){_0x2052e8['include']=[{'all':!![]}];}return db[_0x7f73('0x29')][_0x7f73('0x3c')](_0x2052e8);})[_0x7f73('0x23')](function(_0x3f1840){_0x510f45[_0x7f73('0x3d')]=_0x3f1840;return _0x510f45;})[_0x7f73('0x23')](respondWithFilteredResult(_0x189e6b,_0x2052e8))['catch'](handleError(_0x189e6b,null));};exports[_0x7f73('0x3e')]=function(_0x3892fa,_0x5d25f5){var _0x1f66a4={'raw':![],'where':{'id':_0x3892fa[_0x7f73('0x3f')]['id']}},_0x112728={};_0x112728[_0x7f73('0x2b')]=_[_0x7f73('0x40')](db[_0x7f73('0x29')][_0x7f73('0x41')]);_0x112728[_0x7f73('0x2c')]=_[_0x7f73('0x40')](_0x3892fa[_0x7f73('0x2c')]);_0x112728[_0x7f73('0x2d')]=_[_0x7f73('0x2e')](_0x112728['model'],_0x112728[_0x7f73('0x2c')]);_0x1f66a4[_0x7f73('0x2f')]=_['intersection'](_0x112728['model'],qs[_0x7f73('0x30')](_0x3892fa['query'][_0x7f73('0x30')]));_0x1f66a4[_0x7f73('0x2f')]=_0x1f66a4[_0x7f73('0x2f')][_0x7f73('0x42')]?_0x1f66a4['attributes']:_0x112728[_0x7f73('0x2b')];if(_0x3892fa[_0x7f73('0x2c')][_0x7f73('0x3b')]){_0x1f66a4[_0x7f73('0x43')]=[{'all':!![]}];}_0x1f66a4=_[_0x7f73('0x37')]({},_0x1f66a4,_0x3892fa[_0x7f73('0x3a')]);return db[_0x7f73('0x29')][_0x7f73('0x44')](_0x1f66a4)[_0x7f73('0x23')](handleEntityNotFound(_0x5d25f5,null))['then'](respondWithResult(_0x5d25f5,null))[_0x7f73('0x45')](handleError(_0x5d25f5,null));};exports[_0x7f73('0x46')]=function(_0x24bcd5,_0x486747){return db[_0x7f73('0x29')]['create'](_0x24bcd5['body'],{})[_0x7f73('0x23')](respondWithResult(_0x486747,0xc9))[_0x7f73('0x45')](handleError(_0x486747,null));};exports[_0x7f73('0x47')]=function(_0x3af659,_0x8ad04c){if(_0x3af659[_0x7f73('0x48')]['id']){delete _0x3af659[_0x7f73('0x48')]['id'];}return db[_0x7f73('0x29')][_0x7f73('0x44')]({'where':{'id':_0x3af659['params']['id']}})[_0x7f73('0x23')](handleEntityNotFound(_0x8ad04c,null))[_0x7f73('0x23')](saveUpdates(_0x3af659[_0x7f73('0x48')],null))[_0x7f73('0x23')](respondWithResult(_0x8ad04c,null))[_0x7f73('0x45')](handleError(_0x8ad04c,null));};exports[_0x7f73('0x49')]=function(_0x4b9026,_0x295805){return db[_0x7f73('0x29')][_0x7f73('0x44')]({'where':{'id':_0x4b9026[_0x7f73('0x3f')]['id']}})[_0x7f73('0x23')](handleEntityNotFound(_0x295805,null))[_0x7f73('0x23')](removeEntity(_0x295805,null))[_0x7f73('0x45')](handleError(_0x295805,null));};exports[_0x7f73('0x4a')]=function(_0x4e0592,_0x551847,_0x4a6b3a){var _0xac19c={};var _0x81daa9={};var _0x45075f;var _0x519519;return db['ServicenowConfiguration'][_0x7f73('0x4b')]({'where':{'id':_0x4e0592[_0x7f73('0x3f')]['id']}})[_0x7f73('0x23')](handleEntityNotFound(_0x551847,null))[_0x7f73('0x23')](function(_0x4d542d){if(_0x4d542d){_0x45075f=_0x4d542d;_0x81daa9[_0x7f73('0x2b')]=_[_0x7f73('0x40')](db[_0x7f73('0x4c')][_0x7f73('0x41')]);_0x81daa9[_0x7f73('0x2c')]=_[_0x7f73('0x40')](_0x4e0592[_0x7f73('0x2c')]);_0x81daa9['filters']=_[_0x7f73('0x2e')](_0x81daa9[_0x7f73('0x2b')],_0x81daa9[_0x7f73('0x2c')]);_0xac19c[_0x7f73('0x2f')]=_[_0x7f73('0x2e')](_0x81daa9[_0x7f73('0x2b')],qs[_0x7f73('0x30')](_0x4e0592[_0x7f73('0x2c')]['fields']));_0xac19c[_0x7f73('0x2f')]=_0xac19c[_0x7f73('0x2f')]['length']?_0xac19c['attributes']:_0x81daa9[_0x7f73('0x2b')];_0xac19c[_0x7f73('0x4d')]=qs[_0x7f73('0x33')](_0x4e0592[_0x7f73('0x2c')][_0x7f73('0x33')]);_0xac19c[_0x7f73('0x36')]=qs['filters'](_['pick'](_0x4e0592[_0x7f73('0x2c')],_0x81daa9[_0x7f73('0x2d')]));if(_0x4e0592[_0x7f73('0x2c')]['filter']){_0xac19c[_0x7f73('0x36')]=_[_0x7f73('0x37')](_0xac19c[_0x7f73('0x36')],{'$or':_[_0x7f73('0x38')](_0xac19c[_0x7f73('0x2f')],function(_0x5ed547){var _0x48ac36={};_0x48ac36[_0x5ed547]={'$like':'%'+_0x4e0592[_0x7f73('0x2c')][_0x7f73('0x35')]+'%'};return _0x48ac36;})});}_0xac19c=_['merge']({},_0xac19c,_0x4e0592[_0x7f73('0x3a')]);return _0x45075f['getFields'](_0xac19c);}})[_0x7f73('0x23')](function(_0x1289e7){if(_0x1289e7){_0x519519=_0x1289e7[_0x7f73('0x42')];if(!_0x4e0592['query'][_0x7f73('0x31')](_0x7f73('0x32'))){_0xac19c['limit']=qs[_0x7f73('0x1c')](_0x4e0592[_0x7f73('0x2c')][_0x7f73('0x1c')]);_0xac19c[_0x7f73('0x1a')]=qs[_0x7f73('0x1a')](_0x4e0592[_0x7f73('0x2c')][_0x7f73('0x1a')]);}return _0x45075f[_0x7f73('0x4a')](_0xac19c);}})[_0x7f73('0x23')](function(_0x36f4b8){if(_0x36f4b8){return _0x36f4b8?{'count':_0x519519,'rows':_0x36f4b8}:null;}})['then'](respondWithResult(_0x551847,null))['catch'](handleError(_0x551847,null));};exports[_0x7f73('0x4e')]=function(_0x158691,_0x283974,_0x5ad51b){var _0xdb1578={};var _0x456313={};var _0x15930b;var _0x3e83ab;return db[_0x7f73('0x29')]['findOne']({'where':{'id':_0x158691[_0x7f73('0x3f')]['id']}})[_0x7f73('0x23')](handleEntityNotFound(_0x283974,null))[_0x7f73('0x23')](function(_0x2f29fe){if(_0x2f29fe){_0x15930b=_0x2f29fe;_0x456313[_0x7f73('0x2b')]=_[_0x7f73('0x40')](db['ServicenowField']['rawAttributes']);_0x456313[_0x7f73('0x2c')]=_[_0x7f73('0x40')](_0x158691[_0x7f73('0x2c')]);_0x456313[_0x7f73('0x2d')]=_[_0x7f73('0x2e')](_0x456313[_0x7f73('0x2b')],_0x456313['query']);_0xdb1578[_0x7f73('0x2f')]=_[_0x7f73('0x2e')](_0x456313[_0x7f73('0x2b')],qs[_0x7f73('0x30')](_0x158691['query'][_0x7f73('0x30')]));_0xdb1578[_0x7f73('0x2f')]=_0xdb1578[_0x7f73('0x2f')][_0x7f73('0x42')]?_0xdb1578['attributes']:_0x456313[_0x7f73('0x2b')];_0xdb1578['order']=qs[_0x7f73('0x33')](_0x158691['query'][_0x7f73('0x33')]);_0xdb1578[_0x7f73('0x36')]=qs['filters'](_[_0x7f73('0x34')](_0x158691['query'],_0x456313[_0x7f73('0x2d')]));if(_0x158691['query'][_0x7f73('0x35')]){_0xdb1578[_0x7f73('0x36')]=_[_0x7f73('0x37')](_0xdb1578[_0x7f73('0x36')],{'$or':_[_0x7f73('0x38')](_0xdb1578[_0x7f73('0x2f')],function(_0x136dda){var _0x2dc6c0={};_0x2dc6c0[_0x136dda]={'$like':'%'+_0x158691[_0x7f73('0x2c')]['filter']+'%'};return _0x2dc6c0;})});}_0xdb1578=_[_0x7f73('0x37')]({},_0xdb1578,_0x158691[_0x7f73('0x3a')]);return _0x15930b[_0x7f73('0x4e')](_0xdb1578);}})[_0x7f73('0x23')](function(_0x2c0a51){if(_0x2c0a51){_0x3e83ab=_0x2c0a51[_0x7f73('0x42')];if(!_0x158691[_0x7f73('0x2c')][_0x7f73('0x31')](_0x7f73('0x32'))){_0xdb1578[_0x7f73('0x1c')]=qs['limit'](_0x158691[_0x7f73('0x2c')][_0x7f73('0x1c')]);_0xdb1578['offset']=qs[_0x7f73('0x1a')](_0x158691[_0x7f73('0x2c')][_0x7f73('0x1a')]);}return _0x15930b[_0x7f73('0x4e')](_0xdb1578);}})[_0x7f73('0x23')](function(_0xb8d17c){if(_0xb8d17c){return _0xb8d17c?{'count':_0x3e83ab,'rows':_0xb8d17c}:null;}})[_0x7f73('0x23')](respondWithResult(_0x283974,null))[_0x7f73('0x45')](handleError(_0x283974,null));};exports[_0x7f73('0x4f')]=function(_0xfd493d,_0x117ced,_0x314e07){var _0x166693={};var _0x49e912={};var _0x34aaab;var _0x154870;return db[_0x7f73('0x29')][_0x7f73('0x4b')]({'where':{'id':_0xfd493d[_0x7f73('0x3f')]['id']}})[_0x7f73('0x23')](handleEntityNotFound(_0x117ced,null))[_0x7f73('0x23')](function(_0x2f7b4b){if(_0x2f7b4b){_0x34aaab=_0x2f7b4b;_0x49e912[_0x7f73('0x2b')]=_['keys'](db[_0x7f73('0x4c')][_0x7f73('0x41')]);_0x49e912[_0x7f73('0x2c')]=_[_0x7f73('0x40')](_0xfd493d[_0x7f73('0x2c')]);_0x49e912[_0x7f73('0x2d')]=_['intersection'](_0x49e912[_0x7f73('0x2b')],_0x49e912[_0x7f73('0x2c')]);_0x166693[_0x7f73('0x2f')]=_[_0x7f73('0x2e')](_0x49e912[_0x7f73('0x2b')],qs['fields'](_0xfd493d[_0x7f73('0x2c')][_0x7f73('0x30')]));_0x166693[_0x7f73('0x2f')]=_0x166693['attributes'][_0x7f73('0x42')]?_0x166693['attributes']:_0x49e912[_0x7f73('0x2b')];_0x166693[_0x7f73('0x4d')]=qs['sort'](_0xfd493d[_0x7f73('0x2c')][_0x7f73('0x33')]);_0x166693[_0x7f73('0x36')]=qs[_0x7f73('0x2d')](_['pick'](_0xfd493d[_0x7f73('0x2c')],_0x49e912[_0x7f73('0x2d')]));if(_0xfd493d['query'][_0x7f73('0x35')]){_0x166693[_0x7f73('0x36')]=_[_0x7f73('0x37')](_0x166693[_0x7f73('0x36')],{'$or':_[_0x7f73('0x38')](_0x166693[_0x7f73('0x2f')],function(_0x142d55){var _0xf6664b={};_0xf6664b[_0x142d55]={'$like':'%'+_0xfd493d['query'][_0x7f73('0x35')]+'%'};return _0xf6664b;})});}_0x166693=_[_0x7f73('0x37')]({},_0x166693,_0xfd493d[_0x7f73('0x3a')]);return _0x34aaab['getDescriptions'](_0x166693);}})[_0x7f73('0x23')](function(_0x2499c1){if(_0x2499c1){_0x154870=_0x2499c1[_0x7f73('0x42')];if(!_0xfd493d['query'][_0x7f73('0x31')](_0x7f73('0x32'))){_0x166693[_0x7f73('0x1c')]=qs[_0x7f73('0x1c')](_0xfd493d[_0x7f73('0x2c')][_0x7f73('0x1c')]);_0x166693['offset']=qs[_0x7f73('0x1a')](_0xfd493d[_0x7f73('0x2c')][_0x7f73('0x1a')]);}return _0x34aaab[_0x7f73('0x4f')](_0x166693);}})[_0x7f73('0x23')](function(_0x50fc78){if(_0x50fc78){return _0x50fc78?{'count':_0x154870,'rows':_0x50fc78}:null;}})[_0x7f73('0x23')](respondWithResult(_0x117ced,null))['catch'](handleError(_0x117ced,null));};
\ No newline at end of file
index 271465d..462c415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bd1=['int_servicenow_configurations','lodash','util','../../config/logger','moment','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration'];(function(_0xb0c5ad,_0x460e60){var _0x23ae7a=function(_0x3e8e65){while(--_0x3e8e65){_0xb0c5ad['push'](_0xb0c5ad['shift']());}};_0x23ae7a(++_0x460e60);}(_0x1bd1,0x123));var _0x11bd=function(_0x245217,_0x2083a1){_0x245217=_0x245217-0x0;var _0x3e53fe=_0x1bd1[_0x245217];return _0x3e53fe;};'use strict';var _=require(_0x11bd('0x0'));var util=require(_0x11bd('0x1'));var logger=require(_0x11bd('0x2'))('api');var moment=require(_0x11bd('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x11bd('0x4'));var attributes=require(_0x11bd('0x5'));module[_0x11bd('0x6')]=function(_0x612ff3,_0x57c032){return _0x612ff3[_0x11bd('0x7')](_0x11bd('0x8'),attributes,{'tableName':_0x11bd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4e1=['lodash','util','../../config/logger','api','bluebird','path','../../config/environment','exports','define','ServicenowConfiguration'];(function(_0x6e6963,_0x3498e7){var _0x4638e4=function(_0x2e3bbd){while(--_0x2e3bbd){_0x6e6963['push'](_0x6e6963['shift']());}};_0x4638e4(++_0x3498e7);}(_0xc4e1,0x172));var _0x1c4e=function(_0x4e83c6,_0x145e83){_0x4e83c6=_0x4e83c6-0x0;var _0x35d1a9=_0xc4e1[_0x4e83c6];return _0x35d1a9;};'use strict';var _=require(_0x1c4e('0x0'));var util=require(_0x1c4e('0x1'));var logger=require(_0x1c4e('0x2'))(_0x1c4e('0x3'));var moment=require('moment');var BPromise=require(_0x1c4e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1c4e('0x5'));var rimraf=require('rimraf');var config=require(_0x1c4e('0x6'));var attributes=require('./intServicenowConfiguration.attributes');module[_0x1c4e('0x7')]=function(_0x350c79,_0x47f7f1){return _0x350c79[_0x1c4e('0x8')](_0x1c4e('0x9'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b641001..7ddebf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x621f=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird'];(function(_0x47e18d,_0x4f7d82){var _0x27f907=function(_0xb53e5d){while(--_0xb53e5d){_0x47e18d['push'](_0x47e18d['shift']());}};_0x27f907(++_0x4f7d82);}(_0x621f,0x128));var _0xf621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x621f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf621('0x0'));var util=require(_0xf621('0x1'));var moment=require('moment');var BPromise=require(_0xf621('0x2'));var rs=require(_0xf621('0x3'));var fs=require('fs');var Redis=require(_0xf621('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf621('0x5'));var logger=require(_0xf621('0x6'))(_0xf621('0x7'));var config=require(_0xf621('0x8'));var jayson=require(_0xf621('0x9'));var client=jayson[_0xf621('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34acae,_0x545f38,_0x38fe85){return new BPromise(function(_0x88e735,_0x13012c){return client['request'](_0x34acae,_0x38fe85)[_0xf621('0xb')](function(_0x3b7d1c){logger[_0xf621('0xc')](_0xf621('0xd'),_0x545f38,'request\x20sent');logger[_0xf621('0xe')](_0xf621('0xf'),_0x545f38,_0xf621('0x10'),JSON[_0xf621('0x11')](_0x3b7d1c));if(_0x3b7d1c['error']){if(_0x3b7d1c[_0xf621('0x12')][_0xf621('0x13')]===0x1f4){logger[_0xf621('0x12')](_0xf621('0xd'),_0x545f38,_0x3b7d1c['error']['message']);return _0x13012c(_0x3b7d1c[_0xf621('0x12')][_0xf621('0x14')]);}logger[_0xf621('0x12')](_0xf621('0xd'),_0x545f38,_0x3b7d1c[_0xf621('0x12')]['message']);return _0x88e735(_0x3b7d1c[_0xf621('0x12')]['message']);}else{logger[_0xf621('0xc')]('ServicenowConfiguration,\x20%s,\x20%s',_0x545f38,'request\x20sent');_0x88e735(_0x3b7d1c[_0xf621('0x15')][_0xf621('0x14')]);}})[_0xf621('0x16')](function(_0xd5f0ef){logger[_0xf621('0x12')](_0xf621('0xd'),_0x545f38,_0xd5f0ef);_0x13012c(_0xd5f0ef);});});}
\ No newline at end of file
+var _0x41d9=['client','http','request','then','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','ServicenowConfiguration,\x20%s,\x20%s','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x41d9,0x85));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x941d('0x0'));var util=require(_0x941d('0x1'));var moment=require(_0x941d('0x2'));var BPromise=require(_0x941d('0x3'));var rs=require(_0x941d('0x4'));var fs=require('fs');var Redis=require(_0x941d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x941d('0x6'));var logger=require(_0x941d('0x7'))(_0x941d('0x8'));var config=require(_0x941d('0x9'));var jayson=require(_0x941d('0xa'));var client=jayson[_0x941d('0xb')][_0x941d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1c844e,_0xcf6226,_0x287bf0){return new BPromise(function(_0x5a5fdc,_0xf114d1){return client[_0x941d('0xd')](_0x1c844e,_0x287bf0)[_0x941d('0xe')](function(_0x501aa1){logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0xcf6226,_0x941d('0xf'));logger[_0x941d('0x10')](_0x941d('0x11'),_0xcf6226,_0x941d('0xf'),JSON[_0x941d('0x12')](_0x501aa1));if(_0x501aa1[_0x941d('0x13')]){if(_0x501aa1[_0x941d('0x13')]['code']===0x1f4){logger['error'](_0x941d('0x14'),_0xcf6226,_0x501aa1[_0x941d('0x13')]['message']);return _0xf114d1(_0x501aa1[_0x941d('0x13')][_0x941d('0x15')]);}logger[_0x941d('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0xcf6226,_0x501aa1['error'][_0x941d('0x15')]);return _0x5a5fdc(_0x501aa1[_0x941d('0x13')][_0x941d('0x15')]);}else{logger[_0x941d('0x16')](_0x941d('0x14'),_0xcf6226,_0x941d('0xf'));_0x5a5fdc(_0x501aa1['result'][_0x941d('0x15')]);}})[_0x941d('0x17')](function(_0x171415){logger[_0x941d('0x13')](_0x941d('0x14'),_0xcf6226,_0x171415);_0xf114d1(_0x171415);});});}
\ No newline at end of file
index 49c90ae..8a6b71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf41c=['./intServicenowField.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x5c3068,_0x22bd33){var _0x116971=function(_0x398c40){while(--_0x398c40){_0x5c3068['push'](_0x5c3068['shift']());}};_0x116971(++_0x22bd33);}(_0xf41c,0xae));var _0xcf41=function(_0x2d0721,_0x404500){_0x2d0721=_0x2d0721-0x0;var _0x1b8b98=_0xf41c[_0x2d0721];return _0x1b8b98;};'use strict';var multer=require('multer');var util=require(_0xcf41('0x0'));var path=require('path');var timeout=require(_0xcf41('0x1'));var express=require(_0xcf41('0x2'));var router=express[_0xcf41('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcf41('0x4'));var config=require(_0xcf41('0x5'));var controller=require(_0xcf41('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xcf41('0x7')](_0xcf41('0x8'),auth[_0xcf41('0x9')](),controller[_0xcf41('0xa')]);router[_0xcf41('0xb')]('/',auth['isAuthenticated'](),controller[_0xcf41('0xc')]);router[_0xcf41('0xd')](_0xcf41('0x8'),auth['isAuthenticated'](),controller[_0xcf41('0xe')]);router[_0xcf41('0xf')](_0xcf41('0x8'),auth[_0xcf41('0x9')](),controller[_0xcf41('0x10')]);module[_0xcf41('0x11')]=router;
\ No newline at end of file
+var _0xc58b=['./intServicenowField.controller','get','index','show','post','isAuthenticated','put','delete','/:id','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xeecb9e,_0x3acc52){var _0x463b1f=function(_0x818dae){while(--_0x818dae){_0xeecb9e['push'](_0xeecb9e['shift']());}};_0x463b1f(++_0x3acc52);}(_0xc58b,0x102));var _0xbc58=function(_0x40c905,_0x5a2e77){_0x40c905=_0x40c905-0x0;var _0x46e588=_0xc58b[_0x40c905];return _0x46e588;};'use strict';var multer=require(_0xbc58('0x0'));var util=require(_0xbc58('0x1'));var path=require(_0xbc58('0x2'));var timeout=require('connect-timeout');var express=require(_0xbc58('0x3'));var router=express[_0xbc58('0x4')]();var fs_extra=require(_0xbc58('0x5'));var auth=require(_0xbc58('0x6'));var interaction=require(_0xbc58('0x7'));var config=require('../../config/environment');var controller=require(_0xbc58('0x8'));router[_0xbc58('0x9')]('/',auth['isAuthenticated'](),controller[_0xbc58('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xbc58('0xb')]);router[_0xbc58('0xc')]('/',auth[_0xbc58('0xd')](),controller['create']);router[_0xbc58('0xe')]('/:id',auth[_0xbc58('0xd')](),controller['update']);router[_0xbc58('0xf')](_0xbc58('0x10'),auth['isAuthenticated'](),controller[_0xbc58('0x11')]);module[_0xbc58('0x12')]=router;
\ No newline at end of file
index 0661c10..4e1b18c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b19=['string','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x437da2,_0x45053a){var _0x345cef=function(_0x137efd){while(--_0x137efd){_0x437da2['push'](_0x437da2['shift']());}};_0x345cef(++_0x45053a);}(_0x7b19,0xdf));var _0x97b1=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7b19[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x97b1('0x0'));module['exports']={'type':{'type':Sequelize[_0x97b1('0x1')](_0x97b1('0x2'),'variable','customVariable','keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x97b1('0x3')]},'key':{'type':Sequelize[_0x97b1('0x3')]},'keyType':{'type':Sequelize[_0x97b1('0x1')](_0x97b1('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x97b1('0x3')]},'idField':{'type':Sequelize[_0x97b1('0x3')]},'nameField':{'type':Sequelize[_0x97b1('0x3')]},'customField':{'type':Sequelize[_0x97b1('0x4')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x97b1('0x3')]}};
\ No newline at end of file
+var _0x63af=['exports','ENUM','variable','customVariable','keyValue','string','STRING','BOOLEAN','sequelize'];(function(_0x246b8d,_0x2ae345){var _0x5d4ad5=function(_0xbec604){while(--_0xbec604){_0x246b8d['push'](_0x246b8d['shift']());}};_0x5d4ad5(++_0x2ae345);}(_0x63af,0xaa));var _0xf63a=function(_0x12f7aa,_0x4930eb){_0x12f7aa=_0x12f7aa-0x0;var _0x1d844f=_0x63af[_0x12f7aa];return _0x1d844f;};'use strict';var Sequelize=require(_0xf63a('0x0'));module[_0xf63a('0x1')]={'type':{'type':Sequelize[_0xf63a('0x2')]('string',_0xf63a('0x3'),_0xf63a('0x4'),_0xf63a('0x5'),'picklist'),'defaultValue':_0xf63a('0x6')},'content':{'type':Sequelize[_0xf63a('0x7')]},'key':{'type':Sequelize[_0xf63a('0x7')]},'keyType':{'type':Sequelize[_0xf63a('0x2')](_0xf63a('0x6'),_0xf63a('0x3'),_0xf63a('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf63a('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xf63a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf63a('0x7')]}};
\ No newline at end of file
index a05c6a2..dab5ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdefc=['apply','save','update','destroy','then','error','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','find','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','count','set','Content-Range'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdefc,0x78));var _0xcdef=function(_0x2ea9fd,_0x45d80b){_0x2ea9fd=_0x2ea9fd-0x0;var _0x27d18e=_0xdefc[_0x2ea9fd];return _0x27d18e;};'use strict';var emlformat=require(_0xcdef('0x0'));var rimraf=require(_0xcdef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcdef('0x2'));var rp=require(_0xcdef('0x3'));var moment=require(_0xcdef('0x4'));var BPromise=require(_0xcdef('0x5'));var Mustache=require(_0xcdef('0x6'));var util=require(_0xcdef('0x7'));var path=require(_0xcdef('0x8'));var sox=require(_0xcdef('0x9'));var csv=require(_0xcdef('0xa'));var ejs=require(_0xcdef('0xb'));var fs=require('fs');var fs_extra=require(_0xcdef('0xc'));var _=require(_0xcdef('0xd'));var squel=require(_0xcdef('0xe'));var crypto=require(_0xcdef('0xf'));var jsforce=require(_0xcdef('0x10'));var deskjs=require(_0xcdef('0x11'));var toCsv=require(_0xcdef('0xa'));var querystring=require(_0xcdef('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcdef('0x13'));var qs=require(_0xcdef('0x14'));var as=require(_0xcdef('0x15'));var hardwareService=require(_0xcdef('0x16'));var logger=require(_0xcdef('0x17'))(_0xcdef('0x18'));var utils=require(_0xcdef('0x19'));var config=require(_0xcdef('0x1a'));var licenseUtil=require(_0xcdef('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a530e,_0xa7fde1){_0xa7fde1=_0xa7fde1||0xcc;return function(_0x113177){if(_0x113177){return _0x1a530e['sendStatus'](_0xa7fde1);}return _0x1a530e['status'](_0xa7fde1)[_0xcdef('0x1c')]();};}function respondWithResult(_0x50c50e,_0x28e7d4){_0x28e7d4=_0x28e7d4||0xc8;return function(_0x509bc6){if(_0x509bc6){return _0x50c50e[_0xcdef('0x1d')](_0x28e7d4)[_0xcdef('0x1e')](_0x509bc6);}};}function respondWithFilteredResult(_0x116498,_0x53c4aa){return function(_0x40c9b0){if(_0x40c9b0){var _0x23ecd5=typeof _0x53c4aa[_0xcdef('0x1f')]===_0xcdef('0x20')&&typeof _0x53c4aa['limit']===_0xcdef('0x20');var _0x59e2cc=_0x40c9b0[_0xcdef('0x21')];var _0x441fd9=_0x23ecd5?0x0:_0x53c4aa[_0xcdef('0x1f')];var _0x94aa06=_0x23ecd5?_0x40c9b0[_0xcdef('0x21')]:_0x53c4aa[_0xcdef('0x1f')]+_0x53c4aa['limit'];var _0xcb984a;if(_0x94aa06>=_0x59e2cc){_0x94aa06=_0x59e2cc;_0xcb984a=0xc8;}else{_0xcb984a=0xce;}_0x116498[_0xcdef('0x1d')](_0xcb984a);return _0x116498[_0xcdef('0x22')](_0xcdef('0x23'),_0x441fd9+'-'+_0x94aa06+'/'+_0x59e2cc)[_0xcdef('0x1e')](_0x40c9b0);}return null;};}function patchUpdates(_0x221282){return function(_0x55e810){try{jsonpatch[_0xcdef('0x24')](_0x55e810,_0x221282,!![]);}catch(_0x176cdb){return BPromise['reject'](_0x176cdb);}return _0x55e810[_0xcdef('0x25')]();};}function saveUpdates(_0x50aa96,_0x494600){return function(_0x1a77db){if(_0x1a77db){return _0x1a77db[_0xcdef('0x26')](_0x50aa96)['then'](function(_0x564433){return _0x564433;});}return null;};}function removeEntity(_0x3fda98,_0x263d58){return function(_0x3e05a7){if(_0x3e05a7){return _0x3e05a7[_0xcdef('0x27')]()[_0xcdef('0x28')](function(){_0x3fda98[_0xcdef('0x1d')](0xcc)[_0xcdef('0x1c')]();});}};}function handleEntityNotFound(_0x1f9db7,_0x389fad){return function(_0x4d9f06){if(!_0x4d9f06){_0x1f9db7['sendStatus'](0x194);}return _0x4d9f06;};}function handleError(_0x417e5f,_0x20eb7c){_0x20eb7c=_0x20eb7c||0x1f4;return function(_0x2ab1a5){logger[_0xcdef('0x29')](_0x2ab1a5[_0xcdef('0x2a')]);if(_0x2ab1a5[_0xcdef('0x2b')]){delete _0x2ab1a5[_0xcdef('0x2b')];}_0x417e5f['status'](_0x20eb7c)[_0xcdef('0x2c')](_0x2ab1a5);};}exports[_0xcdef('0x2d')]=function(_0x50374b,_0x18d195){var _0x3c0201={},_0x14470b={},_0x38af7b={'count':0x0,'rows':[]};var _0x111995=_[_0xcdef('0x2e')](db[_0xcdef('0x2f')][_0xcdef('0x30')],function(_0x388c98){return{'name':_0x388c98[_0xcdef('0x31')],'type':_0x388c98[_0xcdef('0x32')][_0xcdef('0x33')]};});_0x14470b[_0xcdef('0x34')]=_[_0xcdef('0x2e')](_0x111995,_0xcdef('0x2b'));_0x14470b[_0xcdef('0x35')]=_['keys'](_0x50374b['query']);_0x14470b[_0xcdef('0x36')]=_[_0xcdef('0x37')](_0x14470b[_0xcdef('0x34')],_0x14470b[_0xcdef('0x35')]);_0x3c0201['attributes']=_[_0xcdef('0x37')](_0x14470b[_0xcdef('0x34')],qs[_0xcdef('0x38')](_0x50374b[_0xcdef('0x35')]['fields']));_0x3c0201[_0xcdef('0x39')]=_0x3c0201[_0xcdef('0x39')][_0xcdef('0x3a')]?_0x3c0201[_0xcdef('0x39')]:_0x14470b['model'];if(!_0x50374b[_0xcdef('0x35')]['hasOwnProperty']('nolimit')){_0x3c0201['limit']=qs[_0xcdef('0x3b')](_0x50374b[_0xcdef('0x35')][_0xcdef('0x3b')]);_0x3c0201[_0xcdef('0x1f')]=qs['offset'](_0x50374b[_0xcdef('0x35')][_0xcdef('0x1f')]);}_0x3c0201[_0xcdef('0x3c')]=qs[_0xcdef('0x3d')](_0x50374b['query'][_0xcdef('0x3d')]);_0x3c0201[_0xcdef('0x3e')]=qs[_0xcdef('0x36')](_[_0xcdef('0x3f')](_0x50374b[_0xcdef('0x35')],_0x14470b[_0xcdef('0x36')]),_0x111995);if(_0x50374b[_0xcdef('0x35')][_0xcdef('0x40')]){_0x3c0201[_0xcdef('0x3e')]=_[_0xcdef('0x41')](_0x3c0201[_0xcdef('0x3e')],{'$or':_['map'](_0x111995,function(_0x1f0d96){if(_0x1f0d96[_0xcdef('0x32')]!==_0xcdef('0x42')){var _0x422fd0={};_0x422fd0[_0x1f0d96[_0xcdef('0x2b')]]={'$like':'%'+_0x50374b[_0xcdef('0x35')][_0xcdef('0x40')]+'%'};return _0x422fd0;}})});}_0x3c0201=_['merge']({},_0x3c0201,_0x50374b[_0xcdef('0x43')]);var _0x4abe17={'where':_0x3c0201[_0xcdef('0x3e')]};return db[_0xcdef('0x2f')][_0xcdef('0x21')](_0x4abe17)[_0xcdef('0x28')](function(_0x232e15){_0x38af7b[_0xcdef('0x21')]=_0x232e15;if(_0x50374b[_0xcdef('0x35')][_0xcdef('0x44')]){_0x3c0201['include']=[{'all':!![]}];}return db[_0xcdef('0x2f')][_0xcdef('0x45')](_0x3c0201);})[_0xcdef('0x28')](function(_0x34c86c){_0x38af7b[_0xcdef('0x46')]=_0x34c86c;return _0x38af7b;})[_0xcdef('0x28')](respondWithFilteredResult(_0x18d195,_0x3c0201))[_0xcdef('0x47')](handleError(_0x18d195,null));};exports[_0xcdef('0x48')]=function(_0x2fcb35,_0x2c7dec){var _0x2fd29d={'raw':!![],'where':{'id':_0x2fcb35[_0xcdef('0x49')]['id']}},_0x477d2e={};_0x477d2e[_0xcdef('0x34')]=_[_0xcdef('0x4a')](db['ServicenowField'][_0xcdef('0x30')]);_0x477d2e['query']=_['keys'](_0x2fcb35[_0xcdef('0x35')]);_0x477d2e[_0xcdef('0x36')]=_[_0xcdef('0x37')](_0x477d2e[_0xcdef('0x34')],_0x477d2e[_0xcdef('0x35')]);_0x2fd29d[_0xcdef('0x39')]=_[_0xcdef('0x37')](_0x477d2e[_0xcdef('0x34')],qs[_0xcdef('0x38')](_0x2fcb35[_0xcdef('0x35')][_0xcdef('0x38')]));_0x2fd29d[_0xcdef('0x39')]=_0x2fd29d[_0xcdef('0x39')][_0xcdef('0x3a')]?_0x2fd29d[_0xcdef('0x39')]:_0x477d2e[_0xcdef('0x34')];if(_0x2fcb35[_0xcdef('0x35')][_0xcdef('0x44')]){_0x2fd29d[_0xcdef('0x4b')]=[{'all':!![]}];}_0x2fd29d=_[_0xcdef('0x41')]({},_0x2fd29d,_0x2fcb35[_0xcdef('0x43')]);return db[_0xcdef('0x2f')][_0xcdef('0x4c')](_0x2fd29d)[_0xcdef('0x28')](handleEntityNotFound(_0x2c7dec,null))[_0xcdef('0x28')](respondWithResult(_0x2c7dec,null))[_0xcdef('0x47')](handleError(_0x2c7dec,null));};exports['create']=function(_0x57f538,_0x56abb2){return db[_0xcdef('0x2f')]['create'](_0x57f538['body'],{})[_0xcdef('0x28')](respondWithResult(_0x56abb2,0xc9))['catch'](handleError(_0x56abb2,null));};exports[_0xcdef('0x26')]=function(_0x1d78ce,_0x5a6c8e){if(_0x1d78ce[_0xcdef('0x4d')]['id']){delete _0x1d78ce['body']['id'];}return db['ServicenowField']['find']({'where':{'id':_0x1d78ce[_0xcdef('0x49')]['id']}})['then'](handleEntityNotFound(_0x5a6c8e,null))['then'](saveUpdates(_0x1d78ce[_0xcdef('0x4d')],null))[_0xcdef('0x28')](respondWithResult(_0x5a6c8e,null))[_0xcdef('0x47')](handleError(_0x5a6c8e,null));};exports[_0xcdef('0x27')]=function(_0x340b56,_0x2d0621){return db[_0xcdef('0x2f')]['find']({'where':{'id':_0x340b56[_0xcdef('0x49')]['id']}})[_0xcdef('0x28')](handleEntityNotFound(_0x2d0621,null))[_0xcdef('0x28')](removeEntity(_0x2d0621,null))['catch'](handleError(_0x2d0621,null));};
\ No newline at end of file
+var _0x5b9a=['rows','catch','params','length','find','create','body','update','eml-format','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','keys','filters','intersection','model','query','fields','attributes','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll'];(function(_0x42e4d7,_0x4bd202){var _0x346cd8=function(_0x36c0f6){while(--_0x36c0f6){_0x42e4d7['push'](_0x42e4d7['shift']());}};_0x346cd8(++_0x4bd202);}(_0x5b9a,0x9c));var _0xa5b9=function(_0x4ccd0b,_0x2867bf){_0x4ccd0b=_0x4ccd0b-0x0;var _0x32bad4=_0x5b9a[_0x4ccd0b];return _0x32bad4;};'use strict';var emlformat=require(_0xa5b9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa5b9('0x1'));var jsonpatch=require(_0xa5b9('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa5b9('0x3'));var util=require(_0xa5b9('0x4'));var path=require(_0xa5b9('0x5'));var sox=require(_0xa5b9('0x6'));var csv=require(_0xa5b9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa5b9('0x8'));var _=require(_0xa5b9('0x9'));var squel=require(_0xa5b9('0xa'));var crypto=require(_0xa5b9('0xb'));var jsforce=require(_0xa5b9('0xc'));var deskjs=require(_0xa5b9('0xd'));var toCsv=require(_0xa5b9('0x7'));var querystring=require(_0xa5b9('0xe'));var Papa=require(_0xa5b9('0xf'));var Redis=require(_0xa5b9('0x10'));var authService=require(_0xa5b9('0x11'));var qs=require(_0xa5b9('0x12'));var as=require(_0xa5b9('0x13'));var hardwareService=require(_0xa5b9('0x14'));var logger=require('../../config/logger')(_0xa5b9('0x15'));var utils=require('../../config/utils');var config=require(_0xa5b9('0x16'));var licenseUtil=require(_0xa5b9('0x17'));var db=require(_0xa5b9('0x18'))['db'];function respondWithStatusCode(_0x4f1a90,_0x16fedb){_0x16fedb=_0x16fedb||0xcc;return function(_0x5ef8f9){if(_0x5ef8f9){return _0x4f1a90[_0xa5b9('0x19')](_0x16fedb);}return _0x4f1a90[_0xa5b9('0x1a')](_0x16fedb)[_0xa5b9('0x1b')]();};}function respondWithResult(_0x1c1acc,_0x13664d){_0x13664d=_0x13664d||0xc8;return function(_0x158c4c){if(_0x158c4c){return _0x1c1acc[_0xa5b9('0x1a')](_0x13664d)[_0xa5b9('0x1c')](_0x158c4c);}};}function respondWithFilteredResult(_0x31f1a7,_0x41e244){return function(_0x3de071){if(_0x3de071){var _0x4d9413=typeof _0x41e244[_0xa5b9('0x1d')]===_0xa5b9('0x1e')&&typeof _0x41e244[_0xa5b9('0x1f')]===_0xa5b9('0x1e');var _0x546fcd=_0x3de071[_0xa5b9('0x20')];var _0x1e752b=_0x4d9413?0x0:_0x41e244[_0xa5b9('0x1d')];var _0x218567=_0x4d9413?_0x3de071[_0xa5b9('0x20')]:_0x41e244[_0xa5b9('0x1d')]+_0x41e244[_0xa5b9('0x1f')];var _0x4cab17;if(_0x218567>=_0x546fcd){_0x218567=_0x546fcd;_0x4cab17=0xc8;}else{_0x4cab17=0xce;}_0x31f1a7[_0xa5b9('0x1a')](_0x4cab17);return _0x31f1a7['set'](_0xa5b9('0x21'),_0x1e752b+'-'+_0x218567+'/'+_0x546fcd)['json'](_0x3de071);}return null;};}function patchUpdates(_0x2e1b1c){return function(_0x3b7750){try{jsonpatch[_0xa5b9('0x22')](_0x3b7750,_0x2e1b1c,!![]);}catch(_0x182ac6){return BPromise[_0xa5b9('0x23')](_0x182ac6);}return _0x3b7750[_0xa5b9('0x24')]();};}function saveUpdates(_0x1395a2,_0x369821){return function(_0x2e002a){if(_0x2e002a){return _0x2e002a['update'](_0x1395a2)[_0xa5b9('0x25')](function(_0x546f13){return _0x546f13;});}return null;};}function removeEntity(_0x6bc7fb,_0x8ea7cc){return function(_0x539465){if(_0x539465){return _0x539465[_0xa5b9('0x26')]()[_0xa5b9('0x25')](function(){_0x6bc7fb[_0xa5b9('0x1a')](0xcc)[_0xa5b9('0x1b')]();});}};}function handleEntityNotFound(_0x4fa48f,_0x1b31b7){return function(_0x1154ed){if(!_0x1154ed){_0x4fa48f['sendStatus'](0x194);}return _0x1154ed;};}function handleError(_0x2d77e0,_0x1c3749){_0x1c3749=_0x1c3749||0x1f4;return function(_0x5093ec){logger['error'](_0x5093ec[_0xa5b9('0x27')]);if(_0x5093ec['name']){delete _0x5093ec[_0xa5b9('0x28')];}_0x2d77e0[_0xa5b9('0x1a')](_0x1c3749)[_0xa5b9('0x29')](_0x5093ec);};}exports[_0xa5b9('0x2a')]=function(_0x5df7e9,_0x471afa){var _0x3b6a37={},_0x3c5ed0={},_0x47c229={'count':0x0,'rows':[]};var _0x1d8630=_[_0xa5b9('0x2b')](db[_0xa5b9('0x2c')][_0xa5b9('0x2d')],function(_0x36f863){return{'name':_0x36f863[_0xa5b9('0x2e')],'type':_0x36f863[_0xa5b9('0x2f')][_0xa5b9('0x30')]};});_0x3c5ed0['model']=_['map'](_0x1d8630,_0xa5b9('0x28'));_0x3c5ed0['query']=_[_0xa5b9('0x31')](_0x5df7e9['query']);_0x3c5ed0[_0xa5b9('0x32')]=_[_0xa5b9('0x33')](_0x3c5ed0[_0xa5b9('0x34')],_0x3c5ed0[_0xa5b9('0x35')]);_0x3b6a37['attributes']=_[_0xa5b9('0x33')](_0x3c5ed0[_0xa5b9('0x34')],qs[_0xa5b9('0x36')](_0x5df7e9[_0xa5b9('0x35')][_0xa5b9('0x36')]));_0x3b6a37[_0xa5b9('0x37')]=_0x3b6a37['attributes']['length']?_0x3b6a37['attributes']:_0x3c5ed0[_0xa5b9('0x34')];if(!_0x5df7e9['query'][_0xa5b9('0x38')]('nolimit')){_0x3b6a37[_0xa5b9('0x1f')]=qs['limit'](_0x5df7e9[_0xa5b9('0x35')]['limit']);_0x3b6a37[_0xa5b9('0x1d')]=qs[_0xa5b9('0x1d')](_0x5df7e9['query'][_0xa5b9('0x1d')]);}_0x3b6a37['order']=qs[_0xa5b9('0x39')](_0x5df7e9[_0xa5b9('0x35')][_0xa5b9('0x39')]);_0x3b6a37[_0xa5b9('0x3a')]=qs['filters'](_[_0xa5b9('0x3b')](_0x5df7e9[_0xa5b9('0x35')],_0x3c5ed0[_0xa5b9('0x32')]),_0x1d8630);if(_0x5df7e9[_0xa5b9('0x35')][_0xa5b9('0x3c')]){_0x3b6a37[_0xa5b9('0x3a')]=_[_0xa5b9('0x3d')](_0x3b6a37[_0xa5b9('0x3a')],{'$or':_[_0xa5b9('0x2b')](_0x1d8630,function(_0xd30624){if(_0xd30624[_0xa5b9('0x2f')]!==_0xa5b9('0x3e')){var _0x59841c={};_0x59841c[_0xd30624[_0xa5b9('0x28')]]={'$like':'%'+_0x5df7e9['query'][_0xa5b9('0x3c')]+'%'};return _0x59841c;}})});}_0x3b6a37=_[_0xa5b9('0x3d')]({},_0x3b6a37,_0x5df7e9[_0xa5b9('0x3f')]);var _0x90d083={'where':_0x3b6a37[_0xa5b9('0x3a')]};return db['ServicenowField'][_0xa5b9('0x20')](_0x90d083)[_0xa5b9('0x25')](function(_0x1ea11d){_0x47c229[_0xa5b9('0x20')]=_0x1ea11d;if(_0x5df7e9['query']['includeAll']){_0x3b6a37[_0xa5b9('0x40')]=[{'all':!![]}];}return db[_0xa5b9('0x2c')][_0xa5b9('0x41')](_0x3b6a37);})[_0xa5b9('0x25')](function(_0x54f5d1){_0x47c229[_0xa5b9('0x42')]=_0x54f5d1;return _0x47c229;})[_0xa5b9('0x25')](respondWithFilteredResult(_0x471afa,_0x3b6a37))[_0xa5b9('0x43')](handleError(_0x471afa,null));};exports['show']=function(_0x1b5d08,_0x18a537){var _0x18b874={'raw':!![],'where':{'id':_0x1b5d08[_0xa5b9('0x44')]['id']}},_0x19c4fa={};_0x19c4fa['model']=_['keys'](db[_0xa5b9('0x2c')][_0xa5b9('0x2d')]);_0x19c4fa[_0xa5b9('0x35')]=_[_0xa5b9('0x31')](_0x1b5d08['query']);_0x19c4fa['filters']=_[_0xa5b9('0x33')](_0x19c4fa['model'],_0x19c4fa[_0xa5b9('0x35')]);_0x18b874['attributes']=_[_0xa5b9('0x33')](_0x19c4fa['model'],qs['fields'](_0x1b5d08[_0xa5b9('0x35')][_0xa5b9('0x36')]));_0x18b874[_0xa5b9('0x37')]=_0x18b874['attributes'][_0xa5b9('0x45')]?_0x18b874['attributes']:_0x19c4fa[_0xa5b9('0x34')];if(_0x1b5d08[_0xa5b9('0x35')]['includeAll']){_0x18b874[_0xa5b9('0x40')]=[{'all':!![]}];}_0x18b874=_[_0xa5b9('0x3d')]({},_0x18b874,_0x1b5d08[_0xa5b9('0x3f')]);return db['ServicenowField'][_0xa5b9('0x46')](_0x18b874)['then'](handleEntityNotFound(_0x18a537,null))['then'](respondWithResult(_0x18a537,null))[_0xa5b9('0x43')](handleError(_0x18a537,null));};exports[_0xa5b9('0x47')]=function(_0x25efd4,_0x473000){return db[_0xa5b9('0x2c')]['create'](_0x25efd4[_0xa5b9('0x48')],{})[_0xa5b9('0x25')](respondWithResult(_0x473000,0xc9))[_0xa5b9('0x43')](handleError(_0x473000,null));};exports[_0xa5b9('0x49')]=function(_0x476bf5,_0x837c84){if(_0x476bf5[_0xa5b9('0x48')]['id']){delete _0x476bf5[_0xa5b9('0x48')]['id'];}return db['ServicenowField'][_0xa5b9('0x46')]({'where':{'id':_0x476bf5[_0xa5b9('0x44')]['id']}})[_0xa5b9('0x25')](handleEntityNotFound(_0x837c84,null))[_0xa5b9('0x25')](saveUpdates(_0x476bf5[_0xa5b9('0x48')],null))['then'](respondWithResult(_0x837c84,null))[_0xa5b9('0x43')](handleError(_0x837c84,null));};exports[_0xa5b9('0x26')]=function(_0x15d0c5,_0x28a81f){return db[_0xa5b9('0x2c')][_0xa5b9('0x46')]({'where':{'id':_0x15d0c5[_0xa5b9('0x44')]['id']}})[_0xa5b9('0x25')](handleEntityNotFound(_0x28a81f,null))[_0xa5b9('0x25')](removeEntity(_0x28a81f,null))[_0xa5b9('0x43')](handleError(_0x28a81f,null));};
\ No newline at end of file
index 5abb605..2cae7e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d98=['request-promise','path','../../config/environment','./intServicenowField.attributes','exports','int_servicenow_fields','servicenow_unique_index','idField','util','../../config/logger','api','moment','bluebird'];(function(_0x24d22a,_0x4a578e){var _0xddc66c=function(_0x3a26e2){while(--_0x3a26e2){_0x24d22a['push'](_0x24d22a['shift']());}};_0xddc66c(++_0x4a578e);}(_0x6d98,0x1dc));var _0x86d9=function(_0x1c5532,_0x51f490){_0x1c5532=_0x1c5532-0x0;var _0x2adf79=_0x6d98[_0x1c5532];return _0x2adf79;};'use strict';var _=require('lodash');var util=require(_0x86d9('0x0'));var logger=require(_0x86d9('0x1'))(_0x86d9('0x2'));var moment=require(_0x86d9('0x3'));var BPromise=require(_0x86d9('0x4'));var rp=require(_0x86d9('0x5'));var fs=require('fs');var path=require(_0x86d9('0x6'));var rimraf=require('rimraf');var config=require(_0x86d9('0x7'));var attributes=require(_0x86d9('0x8'));module[_0x86d9('0x9')]=function(_0x15c148,_0x316e46){return _0x15c148['define']('ServicenowField',attributes,{'tableName':_0x86d9('0xa'),'paranoid':![],'indexes':[{'name':_0x86d9('0xb'),'fields':[_0x86d9('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x48f8=['int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x2577e5,_0x56188c){var _0x229cbd=function(_0x444019){while(--_0x444019){_0x2577e5['push'](_0x2577e5['shift']());}};_0x229cbd(++_0x56188c);}(_0x48f8,0x149));var _0x848f=function(_0xa7984c,_0x3b130c){_0xa7984c=_0xa7984c-0x0;var _0x3c6957=_0x48f8[_0xa7984c];return _0x3c6957;};'use strict';var _=require(_0x848f('0x0'));var util=require('util');var logger=require(_0x848f('0x1'))('api');var moment=require(_0x848f('0x2'));var BPromise=require(_0x848f('0x3'));var rp=require(_0x848f('0x4'));var fs=require('fs');var path=require(_0x848f('0x5'));var rimraf=require(_0x848f('0x6'));var config=require('../../config/environment');var attributes=require('./intServicenowField.attributes');module[_0x848f('0x7')]=function(_0x745205,_0x466941){return _0x745205[_0x848f('0x8')]('ServicenowField',attributes,{'tableName':_0x848f('0x9'),'paranoid':![],'indexes':[{'name':_0x848f('0xa'),'fields':[_0x848f('0xb'),_0x848f('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 83943e6..a49d63b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xac4a,0x13f));var _0xaac4=function(_0x35793d,_0x192258){_0x35793d=_0x35793d-0x0;var _0xdd6781=_0xac4a[_0x35793d];return _0xdd6781;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
+var _0xac4a=['ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xac4a,0x13f));var _0xaac4=function(_0x1474f1,_0x10ae1a){_0x1474f1=_0x1474f1-0x0;var _0x598e4a=_0xac4a[_0x1474f1];return _0x598e4a;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index 7b34c77..f12e367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x186f5f,_0xd1072f){var _0x44c212=function(_0x16bb07){while(--_0x16bb07){_0x186f5f['push'](_0x186f5f['shift']());}};_0x44c212(++_0xd1072f);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _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(_0x33e5eb,_0x182544){var _0x12437b=function(_0x5eb430){while(--_0x5eb430){_0x33e5eb['push'](_0x33e5eb['shift']());}};_0x12437b(++_0x182544);}(_0xa9e0,0x123));var _0x0a9e=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa9e0[_0x55f8b4];return _0x2475f9;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 43f6535..87a9623 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3852f7,_0x25a058){var _0x4aef18=function(_0x57fae5){while(--_0x57fae5){_0x3852f7['push'](_0x3852f7['shift']());}};_0x4aef18(++_0x25a058);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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(_0x5ed34f,_0x395f9b){var _0x1be1a4=function(_0x597300){while(--_0x597300){_0x5ed34f['push'](_0x5ed34f['shift']());}};_0x1be1a4(++_0x395f9b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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 2820b49..2574c7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x951c=['count','limit','set','save','update','then','end','sendStatus','error','stack','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','catch','show','params','fields','length','find','create','body','getConfigurations','SugarcrmConfiguration','addConfiguration','findOne','AccountId','getSubjects','Descriptions','getDescriptions','channel','SugarcrmField','Subjects','getFields','assigned_user_id','description','duration_hours','duration_minutes','parent_type','parent_name','username','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','login','JSON','stringify','Invalid\x20Login','format','get_module_fields','Calls','values','module_fields','remove','includes','label','endsWith','value','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined'];(function(_0x26b0c0,_0x47892d){var _0x1bb9e5=function(_0x1a7c18){while(--_0x1a7c18){_0x26b0c0['push'](_0x26b0c0['shift']());}};_0x1bb9e5(++_0x47892d);}(_0x951c,0xcd));var _0xc951=function(_0x37661a,_0x1522f7){_0x37661a=_0x37661a-0x0;var _0x12b09a=_0x951c[_0x37661a];return _0x12b09a;};'use strict';var emlformat=require(_0xc951('0x0'));var rimraf=require(_0xc951('0x1'));var zipdir=require(_0xc951('0x2'));var jsonpatch=require(_0xc951('0x3'));var rp=require(_0xc951('0x4'));var moment=require(_0xc951('0x5'));var BPromise=require(_0xc951('0x6'));var Mustache=require(_0xc951('0x7'));var util=require('util');var path=require(_0xc951('0x8'));var sox=require(_0xc951('0x9'));var csv=require(_0xc951('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc951('0xb'));var _=require(_0xc951('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc951('0xd'));var toCsv=require(_0xc951('0xa'));var querystring=require(_0xc951('0xe'));var Papa=require('papaparse');var Redis=require(_0xc951('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc951('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc951('0x11'));var logger=require(_0xc951('0x12'))(_0xc951('0x13'));var utils=require(_0xc951('0x14'));var config=require(_0xc951('0x15'));var licenseUtil=require(_0xc951('0x16'));var db=require(_0xc951('0x17'))['db'];var integrations=require(_0xc951('0x18'));function respondWithStatusCode(_0x1b7c1e,_0xd57b63){_0xd57b63=_0xd57b63||0xcc;return function(_0x28dc51){if(_0x28dc51){return _0x1b7c1e['sendStatus'](_0xd57b63);}return _0x1b7c1e[_0xc951('0x19')](_0xd57b63)['end']();};}function respondWithResult(_0x394bbb,_0x1c32d2){_0x1c32d2=_0x1c32d2||0xc8;return function(_0xf5b33){if(_0xf5b33){return _0x394bbb[_0xc951('0x19')](_0x1c32d2)[_0xc951('0x1a')](_0xf5b33);}};}function respondWithFilteredResult(_0x22f405,_0x5462dc){return function(_0x3f9b3f){if(_0x3f9b3f){var _0x3d1cfc=typeof _0x5462dc[_0xc951('0x1b')]===_0xc951('0x1c')&&typeof _0x5462dc['limit']===_0xc951('0x1c');var _0xb225b5=_0x3f9b3f[_0xc951('0x1d')];var _0x453dbb=_0x3d1cfc?0x0:_0x5462dc[_0xc951('0x1b')];var _0x157fa5=_0x3d1cfc?_0x3f9b3f['count']:_0x5462dc[_0xc951('0x1b')]+_0x5462dc[_0xc951('0x1e')];var _0x1fc70b;if(_0x157fa5>=_0xb225b5){_0x157fa5=_0xb225b5;_0x1fc70b=0xc8;}else{_0x1fc70b=0xce;}_0x22f405[_0xc951('0x19')](_0x1fc70b);return _0x22f405[_0xc951('0x1f')]('Content-Range',_0x453dbb+'-'+_0x157fa5+'/'+_0xb225b5)['json'](_0x3f9b3f);}return null;};}function patchUpdates(_0x1b4a40){return function(_0xf219d8){try{jsonpatch['apply'](_0xf219d8,_0x1b4a40,!![]);}catch(_0x5a86ad){return BPromise['reject'](_0x5a86ad);}return _0xf219d8[_0xc951('0x20')]();};}function saveUpdates(_0x1abed2,_0x5a58f2){return function(_0x2a02e2){if(_0x2a02e2){return _0x2a02e2[_0xc951('0x21')](_0x1abed2)[_0xc951('0x22')](function(_0x39f2a6){return _0x39f2a6;});}return null;};}function removeEntity(_0x2ca2f7,_0x4ac53d){return function(_0x57f157){if(_0x57f157){return _0x57f157['destroy']()[_0xc951('0x22')](function(){_0x2ca2f7[_0xc951('0x19')](0xcc)[_0xc951('0x23')]();});}};}function handleEntityNotFound(_0x1b8837,_0x454968){return function(_0x3a19bd){if(!_0x3a19bd){_0x1b8837[_0xc951('0x24')](0x194);}return _0x3a19bd;};}function handleError(_0x4ffffc,_0x21cded){_0x21cded=_0x21cded||0x1f4;return function(_0x87a9e7){logger[_0xc951('0x25')](_0x87a9e7[_0xc951('0x26')]);if(_0x87a9e7[_0xc951('0x27')]){delete _0x87a9e7[_0xc951('0x27')];}_0x4ffffc['status'](_0x21cded)[_0xc951('0x28')](_0x87a9e7);};}exports[_0xc951('0x29')]=function(_0x5bca8d,_0x126264){var _0x16cfcd={},_0x4ac45a={},_0xf679dc={'count':0x0,'rows':[]};var _0x38efa6=_[_0xc951('0x2a')](db[_0xc951('0x2b')][_0xc951('0x2c')],function(_0x11a399){return{'name':_0x11a399[_0xc951('0x2d')],'type':_0x11a399[_0xc951('0x2e')][_0xc951('0x2f')]};});_0x4ac45a[_0xc951('0x30')]=_['map'](_0x38efa6,_0xc951('0x27'));_0x4ac45a['query']=_[_0xc951('0x31')](_0x5bca8d[_0xc951('0x32')]);_0x4ac45a[_0xc951('0x33')]=_[_0xc951('0x34')](_0x4ac45a[_0xc951('0x30')],_0x4ac45a[_0xc951('0x32')]);_0x16cfcd[_0xc951('0x35')]=_[_0xc951('0x34')](_0x4ac45a[_0xc951('0x30')],qs['fields'](_0x5bca8d[_0xc951('0x32')]['fields']));_0x16cfcd[_0xc951('0x35')]=_0x16cfcd[_0xc951('0x35')]['length']?_0x16cfcd[_0xc951('0x35')]:_0x4ac45a[_0xc951('0x30')];if(!_0x5bca8d[_0xc951('0x32')][_0xc951('0x36')]('nolimit')){_0x16cfcd[_0xc951('0x1e')]=qs['limit'](_0x5bca8d[_0xc951('0x32')][_0xc951('0x1e')]);_0x16cfcd['offset']=qs[_0xc951('0x1b')](_0x5bca8d[_0xc951('0x32')][_0xc951('0x1b')]);}_0x16cfcd[_0xc951('0x37')]=qs[_0xc951('0x38')](_0x5bca8d[_0xc951('0x32')]['sort']);_0x16cfcd[_0xc951('0x39')]=qs['filters'](_[_0xc951('0x3a')](_0x5bca8d[_0xc951('0x32')],_0x4ac45a[_0xc951('0x33')]),_0x38efa6);if(_0x5bca8d[_0xc951('0x32')][_0xc951('0x3b')]){_0x16cfcd['where']=_['merge'](_0x16cfcd[_0xc951('0x39')],{'$or':_[_0xc951('0x2a')](_0x38efa6,function(_0x4085cd){if(_0x4085cd[_0xc951('0x2e')]!==_0xc951('0x3c')){var _0x5cf99a={};_0x5cf99a[_0x4085cd[_0xc951('0x27')]]={'$like':'%'+_0x5bca8d[_0xc951('0x32')]['filter']+'%'};return _0x5cf99a;}})});}_0x16cfcd=_[_0xc951('0x3d')]({},_0x16cfcd,_0x5bca8d[_0xc951('0x3e')]);var _0x2fbd13={'where':_0x16cfcd[_0xc951('0x39')]};return db[_0xc951('0x2b')]['count'](_0x2fbd13)[_0xc951('0x22')](function(_0x48d41b){_0xf679dc[_0xc951('0x1d')]=_0x48d41b;if(_0x5bca8d[_0xc951('0x32')][_0xc951('0x3f')]){_0x16cfcd[_0xc951('0x40')]=[{'all':!![]}];}return db[_0xc951('0x2b')]['findAll'](_0x16cfcd);})[_0xc951('0x22')](function(_0x1a575c){_0xf679dc['rows']=_0x1a575c;return _0xf679dc;})[_0xc951('0x22')](respondWithFilteredResult(_0x126264,_0x16cfcd))[_0xc951('0x41')](handleError(_0x126264,null));};exports[_0xc951('0x42')]=function(_0xd8c9aa,_0xe2e263){var _0xebdb22={'raw':![],'where':{'id':_0xd8c9aa[_0xc951('0x43')]['id']}},_0x6a663b={};_0x6a663b[_0xc951('0x30')]=_[_0xc951('0x31')](db['SugarcrmAccount'][_0xc951('0x2c')]);_0x6a663b[_0xc951('0x32')]=_['keys'](_0xd8c9aa['query']);_0x6a663b[_0xc951('0x33')]=_['intersection'](_0x6a663b[_0xc951('0x30')],_0x6a663b[_0xc951('0x32')]);_0xebdb22[_0xc951('0x35')]=_[_0xc951('0x34')](_0x6a663b[_0xc951('0x30')],qs[_0xc951('0x44')](_0xd8c9aa[_0xc951('0x32')]['fields']));_0xebdb22['attributes']=_0xebdb22[_0xc951('0x35')][_0xc951('0x45')]?_0xebdb22['attributes']:_0x6a663b[_0xc951('0x30')];if(_0xd8c9aa['query'][_0xc951('0x3f')]){_0xebdb22[_0xc951('0x40')]=[{'all':!![]}];}_0xebdb22=_[_0xc951('0x3d')]({},_0xebdb22,_0xd8c9aa[_0xc951('0x3e')]);return db[_0xc951('0x2b')][_0xc951('0x46')](_0xebdb22)[_0xc951('0x22')](handleEntityNotFound(_0xe2e263,null))[_0xc951('0x22')](respondWithResult(_0xe2e263,null))['catch'](handleError(_0xe2e263,null));};exports[_0xc951('0x47')]=function(_0x1f114c,_0x59c5b7){return db['SugarcrmAccount']['create'](_0x1f114c['body'],{})[_0xc951('0x22')](respondWithResult(_0x59c5b7,0xc9))[_0xc951('0x41')](handleError(_0x59c5b7,null));};exports[_0xc951('0x21')]=function(_0x2f290b,_0x2fe0f9){if(_0x2f290b[_0xc951('0x48')]['id']){delete _0x2f290b[_0xc951('0x48')]['id'];}return db[_0xc951('0x2b')][_0xc951('0x46')]({'where':{'id':_0x2f290b['params']['id']}})[_0xc951('0x22')](handleEntityNotFound(_0x2fe0f9,null))[_0xc951('0x22')](saveUpdates(_0x2f290b[_0xc951('0x48')],null))[_0xc951('0x22')](respondWithResult(_0x2fe0f9,null))[_0xc951('0x41')](handleError(_0x2fe0f9,null));};exports['destroy']=function(_0x3edbc1,_0xda15){return db[_0xc951('0x2b')][_0xc951('0x46')]({'where':{'id':_0x3edbc1['params']['id']}})[_0xc951('0x22')](handleEntityNotFound(_0xda15,null))[_0xc951('0x22')](removeEntity(_0xda15,null))[_0xc951('0x41')](handleError(_0xda15,null));};exports[_0xc951('0x49')]=function(_0x3da5d0,_0x3faa79,_0xe881cf){var _0x55774e={};var _0x27f5db={};var _0x2feed3;var _0x1dd71a;return db[_0xc951('0x2b')]['findOne']({'where':{'id':_0x3da5d0[_0xc951('0x43')]['id']}})[_0xc951('0x22')](handleEntityNotFound(_0x3faa79,null))[_0xc951('0x22')](function(_0x1f02a0){if(_0x1f02a0){_0x2feed3=_0x1f02a0;_0x27f5db[_0xc951('0x30')]=_[_0xc951('0x31')](db[_0xc951('0x4a')][_0xc951('0x2c')]);_0x27f5db[_0xc951('0x32')]=_[_0xc951('0x31')](_0x3da5d0[_0xc951('0x32')]);_0x27f5db[_0xc951('0x33')]=_[_0xc951('0x34')](_0x27f5db[_0xc951('0x30')],_0x27f5db['query']);_0x55774e[_0xc951('0x35')]=_[_0xc951('0x34')](_0x27f5db[_0xc951('0x30')],qs['fields'](_0x3da5d0[_0xc951('0x32')]['fields']));_0x55774e[_0xc951('0x35')]=_0x55774e[_0xc951('0x35')]['length']?_0x55774e[_0xc951('0x35')]:_0x27f5db[_0xc951('0x30')];_0x55774e[_0xc951('0x37')]=qs[_0xc951('0x38')](_0x3da5d0[_0xc951('0x32')][_0xc951('0x38')]);_0x55774e[_0xc951('0x39')]=qs['filters'](_[_0xc951('0x3a')](_0x3da5d0[_0xc951('0x32')],_0x27f5db['filters']));if(_0x3da5d0[_0xc951('0x32')][_0xc951('0x3b')]){_0x55774e['where']=_[_0xc951('0x3d')](_0x55774e['where'],{'$or':_[_0xc951('0x2a')](_0x55774e[_0xc951('0x35')],function(_0x504514){var _0x36b3ff={};_0x36b3ff[_0x504514]={'$like':'%'+_0x3da5d0[_0xc951('0x32')][_0xc951('0x3b')]+'%'};return _0x36b3ff;})});}_0x55774e=_[_0xc951('0x3d')]({},_0x55774e,_0x3da5d0[_0xc951('0x3e')]);return _0x2feed3['getConfigurations'](_0x55774e);}})[_0xc951('0x22')](function(_0xf8e108){if(_0xf8e108){_0x1dd71a=_0xf8e108['length'];if(!_0x3da5d0['query'][_0xc951('0x36')]('nolimit')){_0x55774e[_0xc951('0x1e')]=qs[_0xc951('0x1e')](_0x3da5d0[_0xc951('0x32')][_0xc951('0x1e')]);_0x55774e['offset']=qs[_0xc951('0x1b')](_0x3da5d0[_0xc951('0x32')]['offset']);}return _0x2feed3[_0xc951('0x49')](_0x55774e);}})[_0xc951('0x22')](function(_0x421b15){if(_0x421b15){return _0x421b15?{'count':_0x1dd71a,'rows':_0x421b15}:null;}})[_0xc951('0x22')](respondWithResult(_0x3faa79,null))[_0xc951('0x41')](handleError(_0x3faa79,null));};exports[_0xc951('0x4b')]=function(_0x148cbf,_0x1e44ce,_0x42c752){if(_0x148cbf[_0xc951('0x48')]['id']){delete _0x148cbf[_0xc951('0x48')]['id'];}return db['SugarcrmAccount'][_0xc951('0x4c')]({'where':{'id':_0x148cbf['params']['id']}})[_0xc951('0x22')](handleEntityNotFound(_0x1e44ce,null))['then'](function(_0x1cad17){if(_0x1cad17){_0x148cbf[_0xc951('0x48')][_0xc951('0x4d')]=_0x1cad17['id'];_0x148cbf[_0xc951('0x48')]['Subjects']=integrations[_0xc951('0x4e')](_0x148cbf[_0xc951('0x48')]['channel'],_0x148cbf[_0xc951('0x48')][_0xc951('0x2e')]);_0x148cbf[_0xc951('0x48')][_0xc951('0x4f')]=integrations[_0xc951('0x50')](_0x148cbf[_0xc951('0x48')][_0xc951('0x51')],_0x148cbf[_0xc951('0x48')][_0xc951('0x2e')]);return db[_0xc951('0x4a')][_0xc951('0x47')](_0x148cbf[_0xc951('0x48')],{'include':[{'model':db[_0xc951('0x52')],'as':_0xc951('0x53')},{'model':db[_0xc951('0x52')],'as':_0xc951('0x4f')}]});}return null;})['then'](respondWithResult(_0x1e44ce,null))[_0xc951('0x41')](handleError(_0x1e44ce,null));};exports[_0xc951('0x54')]=function(_0x4e1c23,_0x478668,_0xa457ee){var _0x2d6e79='';var _0x223928=['id','name',_0xc951('0x55'),'created_by',_0xc951('0x56'),'date_start',_0xc951('0x57'),_0xc951('0x58'),'parent_id',_0xc951('0x59'),_0xc951('0x5a'),'direction'];return db[_0xc951('0x2b')][_0xc951('0x4c')]({'where':{'id':_0x4e1c23[_0xc951('0x43')]['id']},'attributes':['id',_0xc951('0x5b'),_0xc951('0x5c'),_0xc951('0x5d')]})[_0xc951('0x22')](handleEntityNotFound(_0x478668,null))[_0xc951('0x22')](function(_0x4ef3ea){if(_0x4ef3ea){_0x2d6e79=_0x4ef3ea[_0xc951('0x5d')];var _0x5bdac9=_0x2d6e79[_0xc951('0x5e')](-0x1);if(_0x5bdac9==='/'){_0x2d6e79=_0x2d6e79[_0xc951('0x5f')](0x0,_0x2d6e79[_0xc951('0x60')](_0x5bdac9));}return rp({'method':_0xc951('0x61'),'uri':util['format'](_0xc951('0x62'),_0x2d6e79,_0xc951('0x63')),'json':!![],'form':{'method':_0xc951('0x64'),'input_type':'JSON','response_type':_0xc951('0x65'),'rest_data':JSON[_0xc951('0x66')]({'user_auth':{'user_name':_0x4ef3ea[_0xc951('0x5b')],'password':_0x4ef3ea[_0xc951('0x5c')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xc951('0x22')](function(_0x1d7e6d){if(_0x1d7e6d&&_0x1d7e6d[_0xc951('0x27')]!==_0xc951('0x67')&&_0x1d7e6d['name']!=='Password\x20Expired'){return rp({'method':_0xc951('0x61'),'uri':util[_0xc951('0x68')](_0xc951('0x62'),_0x2d6e79,_0xc951('0x63')),'json':!![],'form':{'method':_0xc951('0x69'),'input_type':_0xc951('0x65'),'response_type':_0xc951('0x65'),'rest_data':JSON[_0xc951('0x66')]({'session':_0x1d7e6d['id'],'module_name':_0xc951('0x6a')})}})[_0xc951('0x22')](function(_0x4633e3){if(_0x4633e3){var _0x4b7ac6=_[_0xc951('0x6b')](_0x4633e3[_0xc951('0x6c')]);_[_0xc951('0x6d')](_0x4b7ac6,function(_0x3cd8c9){return _0x223928[_0xc951('0x6e')](_0x3cd8c9['name']);});return{'count':_0x4b7ac6[_0xc951('0x45')],'rows':_[_0xc951('0x2a')](_0x4b7ac6,function(_0x38700c){return{'id':_0x38700c[_0xc951('0x27')],'name':_0x38700c[_0xc951('0x6f')],'custom':_[_0xc951('0x70')](_0x38700c[_0xc951('0x27')],'_c')?!![]:![],'options':_0x38700c[_0xc951('0x3e')]?_[_0xc951('0x2a')](_[_0xc951('0x6b')](_0x38700c[_0xc951('0x3e')]),function(_0x3d3c8e){return{'name':_0x3d3c8e[_0xc951('0x71')],'value':_0x3d3c8e[_0xc951('0x27')]};}):[]};})};}})['then'](respondWithResult(_0x478668,null))[_0xc951('0x41')](function(_0x444d89){var _0x116dfc=_0x4e1c23[_0xc951('0x32')][_0xc951('0x72')]?0x1f4:_0x444d89[_0xc951('0x73')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x116dfc,JSON[_0xc951('0x66')](_0x444d89));delete _0x444d89[_0xc951('0x27')];if(_0x116dfc===0x191){_0x116dfc=0x190;}_0x478668[_0xc951('0x19')](_0x116dfc)[_0xc951('0x28')](_0x4e1c23[_0xc951('0x32')][_0xc951('0x72')]?{'message':_0xc951('0x74'),'statusCode':_0x444d89[_0xc951('0x73')]}:_0x444d89);});}else{var _0x35ce96=0x1f4;_0x478668[_0xc951('0x19')](_0x35ce96)[_0xc951('0x28')]({'message':_0xc951('0x74'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x293b=['count','set','apply','save','update','then','destroy','error','name','index','map','SugarcrmAccount','rawAttributes','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','options','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','SugarcrmConfiguration','hasOwnProperty','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','username','password','remoteUri','slice','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','get_module_fields','Calls','values','module_fields','remove','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','offset'];(function(_0x5bf305,_0x3460a0){var _0x356014=function(_0x25d2ca){while(--_0x25d2ca){_0x5bf305['push'](_0x5bf305['shift']());}};_0x356014(++_0x3460a0);}(_0x293b,0x1c4));var _0xb293=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x293b[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xb293('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb293('0x1'));var jsonpatch=require(_0xb293('0x2'));var rp=require(_0xb293('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb293('0x4'));var path=require(_0xb293('0x5'));var sox=require(_0xb293('0x6'));var csv=require(_0xb293('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb293('0x8'));var _=require(_0xb293('0x9'));var squel=require('squel');var crypto=require(_0xb293('0xa'));var jsforce=require(_0xb293('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb293('0x7'));var querystring=require(_0xb293('0xc'));var Papa=require('papaparse');var Redis=require(_0xb293('0xd'));var authService=require(_0xb293('0xe'));var qs=require(_0xb293('0xf'));var as=require(_0xb293('0x10'));var hardwareService=require(_0xb293('0x11'));var logger=require(_0xb293('0x12'))(_0xb293('0x13'));var utils=require(_0xb293('0x14'));var config=require(_0xb293('0x15'));var licenseUtil=require(_0xb293('0x16'));var db=require(_0xb293('0x17'))['db'];var integrations=require(_0xb293('0x18'));function respondWithStatusCode(_0x4e6acf,_0x1e8e07){_0x1e8e07=_0x1e8e07||0xcc;return function(_0x5adb37){if(_0x5adb37){return _0x4e6acf[_0xb293('0x19')](_0x1e8e07);}return _0x4e6acf[_0xb293('0x1a')](_0x1e8e07)[_0xb293('0x1b')]();};}function respondWithResult(_0x12eb75,_0xa7c77f){_0xa7c77f=_0xa7c77f||0xc8;return function(_0x5e0b9c){if(_0x5e0b9c){return _0x12eb75['status'](_0xa7c77f)[_0xb293('0x1c')](_0x5e0b9c);}};}function respondWithFilteredResult(_0x4b2ea8,_0x585088){return function(_0x45748a){if(_0x45748a){var _0x579666=typeof _0x585088['offset']==='undefined'&&typeof _0x585088[_0xb293('0x1d')]===_0xb293('0x1e');var _0x4f764d=_0x45748a['count'];var _0x1d49f3=_0x579666?0x0:_0x585088[_0xb293('0x1f')];var _0x23407d=_0x579666?_0x45748a[_0xb293('0x20')]:_0x585088['offset']+_0x585088[_0xb293('0x1d')];var _0x103838;if(_0x23407d>=_0x4f764d){_0x23407d=_0x4f764d;_0x103838=0xc8;}else{_0x103838=0xce;}_0x4b2ea8[_0xb293('0x1a')](_0x103838);return _0x4b2ea8[_0xb293('0x21')]('Content-Range',_0x1d49f3+'-'+_0x23407d+'/'+_0x4f764d)['json'](_0x45748a);}return null;};}function patchUpdates(_0x25a783){return function(_0x4a9ecb){try{jsonpatch[_0xb293('0x22')](_0x4a9ecb,_0x25a783,!![]);}catch(_0x51a620){return BPromise['reject'](_0x51a620);}return _0x4a9ecb[_0xb293('0x23')]();};}function saveUpdates(_0x434460,_0x499048){return function(_0x2c992b){if(_0x2c992b){return _0x2c992b[_0xb293('0x24')](_0x434460)[_0xb293('0x25')](function(_0x5c300a){return _0x5c300a;});}return null;};}function removeEntity(_0xa95934,_0x4cff10){return function(_0x59a17b){if(_0x59a17b){return _0x59a17b[_0xb293('0x26')]()[_0xb293('0x25')](function(){_0xa95934['status'](0xcc)[_0xb293('0x1b')]();});}};}function handleEntityNotFound(_0x4f443c,_0x437e2c){return function(_0x366c6f){if(!_0x366c6f){_0x4f443c['sendStatus'](0x194);}return _0x366c6f;};}function handleError(_0x2f4db8,_0x194f21){_0x194f21=_0x194f21||0x1f4;return function(_0x2afc40){logger[_0xb293('0x27')](_0x2afc40['stack']);if(_0x2afc40[_0xb293('0x28')]){delete _0x2afc40['name'];}_0x2f4db8['status'](_0x194f21)['send'](_0x2afc40);};}exports[_0xb293('0x29')]=function(_0x535bb1,_0x7c6f21){var _0x4147ee={},_0x29e4e1={},_0x1ecd83={'count':0x0,'rows':[]};var _0x345c52=_[_0xb293('0x2a')](db[_0xb293('0x2b')][_0xb293('0x2c')],function(_0x1fe320){return{'name':_0x1fe320['fieldName'],'type':_0x1fe320[_0xb293('0x2d')][_0xb293('0x2e')]};});_0x29e4e1['model']=_[_0xb293('0x2a')](_0x345c52,_0xb293('0x28'));_0x29e4e1[_0xb293('0x2f')]=_[_0xb293('0x30')](_0x535bb1[_0xb293('0x2f')]);_0x29e4e1['filters']=_[_0xb293('0x31')](_0x29e4e1[_0xb293('0x32')],_0x29e4e1[_0xb293('0x2f')]);_0x4147ee[_0xb293('0x33')]=_[_0xb293('0x31')](_0x29e4e1[_0xb293('0x32')],qs[_0xb293('0x34')](_0x535bb1[_0xb293('0x2f')][_0xb293('0x34')]));_0x4147ee['attributes']=_0x4147ee[_0xb293('0x33')][_0xb293('0x35')]?_0x4147ee['attributes']:_0x29e4e1[_0xb293('0x32')];if(!_0x535bb1['query']['hasOwnProperty'](_0xb293('0x36'))){_0x4147ee[_0xb293('0x1d')]=qs[_0xb293('0x1d')](_0x535bb1[_0xb293('0x2f')]['limit']);_0x4147ee[_0xb293('0x1f')]=qs[_0xb293('0x1f')](_0x535bb1[_0xb293('0x2f')]['offset']);}_0x4147ee[_0xb293('0x37')]=qs[_0xb293('0x38')](_0x535bb1[_0xb293('0x2f')][_0xb293('0x38')]);_0x4147ee['where']=qs[_0xb293('0x39')](_[_0xb293('0x3a')](_0x535bb1[_0xb293('0x2f')],_0x29e4e1[_0xb293('0x39')]),_0x345c52);if(_0x535bb1[_0xb293('0x2f')][_0xb293('0x3b')]){_0x4147ee[_0xb293('0x3c')]=_['merge'](_0x4147ee[_0xb293('0x3c')],{'$or':_[_0xb293('0x2a')](_0x345c52,function(_0x4929a8){if(_0x4929a8['type']!=='VIRTUAL'){var _0x592f70={};_0x592f70[_0x4929a8[_0xb293('0x28')]]={'$like':'%'+_0x535bb1['query']['filter']+'%'};return _0x592f70;}})});}_0x4147ee=_[_0xb293('0x3d')]({},_0x4147ee,_0x535bb1[_0xb293('0x3e')]);var _0x56b110={'where':_0x4147ee[_0xb293('0x3c')]};return db['SugarcrmAccount'][_0xb293('0x20')](_0x56b110)[_0xb293('0x25')](function(_0x486bcf){_0x1ecd83[_0xb293('0x20')]=_0x486bcf;if(_0x535bb1[_0xb293('0x2f')]['includeAll']){_0x4147ee[_0xb293('0x3f')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xb293('0x40')](_0x4147ee);})['then'](function(_0x129527){_0x1ecd83[_0xb293('0x41')]=_0x129527;return _0x1ecd83;})[_0xb293('0x25')](respondWithFilteredResult(_0x7c6f21,_0x4147ee))[_0xb293('0x42')](handleError(_0x7c6f21,null));};exports[_0xb293('0x43')]=function(_0xa3bfb7,_0x871080){var _0x58a762={'raw':![],'where':{'id':_0xa3bfb7[_0xb293('0x44')]['id']}},_0x553750={};_0x553750[_0xb293('0x32')]=_[_0xb293('0x30')](db[_0xb293('0x2b')][_0xb293('0x2c')]);_0x553750[_0xb293('0x2f')]=_[_0xb293('0x30')](_0xa3bfb7[_0xb293('0x2f')]);_0x553750[_0xb293('0x39')]=_[_0xb293('0x31')](_0x553750[_0xb293('0x32')],_0x553750[_0xb293('0x2f')]);_0x58a762[_0xb293('0x33')]=_[_0xb293('0x31')](_0x553750['model'],qs[_0xb293('0x34')](_0xa3bfb7['query'][_0xb293('0x34')]));_0x58a762[_0xb293('0x33')]=_0x58a762[_0xb293('0x33')][_0xb293('0x35')]?_0x58a762[_0xb293('0x33')]:_0x553750[_0xb293('0x32')];if(_0xa3bfb7['query']['includeAll']){_0x58a762[_0xb293('0x3f')]=[{'all':!![]}];}_0x58a762=_[_0xb293('0x3d')]({},_0x58a762,_0xa3bfb7[_0xb293('0x3e')]);return db['SugarcrmAccount'][_0xb293('0x45')](_0x58a762)['then'](handleEntityNotFound(_0x871080,null))[_0xb293('0x25')](respondWithResult(_0x871080,null))[_0xb293('0x42')](handleError(_0x871080,null));};exports[_0xb293('0x46')]=function(_0x578ce2,_0x3fa6a1){return db[_0xb293('0x2b')]['create'](_0x578ce2[_0xb293('0x47')],{})[_0xb293('0x25')](respondWithResult(_0x3fa6a1,0xc9))[_0xb293('0x42')](handleError(_0x3fa6a1,null));};exports[_0xb293('0x24')]=function(_0x1e3f7b,_0x16796b){if(_0x1e3f7b[_0xb293('0x47')]['id']){delete _0x1e3f7b['body']['id'];}return db[_0xb293('0x2b')]['find']({'where':{'id':_0x1e3f7b[_0xb293('0x44')]['id']}})[_0xb293('0x25')](handleEntityNotFound(_0x16796b,null))['then'](saveUpdates(_0x1e3f7b[_0xb293('0x47')],null))[_0xb293('0x25')](respondWithResult(_0x16796b,null))[_0xb293('0x42')](handleError(_0x16796b,null));};exports[_0xb293('0x26')]=function(_0x55d66e,_0x540031){return db[_0xb293('0x2b')][_0xb293('0x45')]({'where':{'id':_0x55d66e[_0xb293('0x44')]['id']}})[_0xb293('0x25')](handleEntityNotFound(_0x540031,null))[_0xb293('0x25')](removeEntity(_0x540031,null))[_0xb293('0x42')](handleError(_0x540031,null));};exports[_0xb293('0x48')]=function(_0x29c300,_0x32cbda,_0x1860b8){var _0x4aa06e={};var _0x557a11={};var _0x3d1ba8;var _0x483004;return db[_0xb293('0x2b')]['findOne']({'where':{'id':_0x29c300['params']['id']}})[_0xb293('0x25')](handleEntityNotFound(_0x32cbda,null))[_0xb293('0x25')](function(_0x2f4aca){if(_0x2f4aca){_0x3d1ba8=_0x2f4aca;_0x557a11[_0xb293('0x32')]=_[_0xb293('0x30')](db[_0xb293('0x49')][_0xb293('0x2c')]);_0x557a11[_0xb293('0x2f')]=_[_0xb293('0x30')](_0x29c300[_0xb293('0x2f')]);_0x557a11[_0xb293('0x39')]=_[_0xb293('0x31')](_0x557a11[_0xb293('0x32')],_0x557a11['query']);_0x4aa06e['attributes']=_[_0xb293('0x31')](_0x557a11[_0xb293('0x32')],qs[_0xb293('0x34')](_0x29c300[_0xb293('0x2f')][_0xb293('0x34')]));_0x4aa06e[_0xb293('0x33')]=_0x4aa06e[_0xb293('0x33')][_0xb293('0x35')]?_0x4aa06e[_0xb293('0x33')]:_0x557a11['model'];_0x4aa06e[_0xb293('0x37')]=qs['sort'](_0x29c300[_0xb293('0x2f')][_0xb293('0x38')]);_0x4aa06e[_0xb293('0x3c')]=qs['filters'](_[_0xb293('0x3a')](_0x29c300[_0xb293('0x2f')],_0x557a11[_0xb293('0x39')]));if(_0x29c300['query'][_0xb293('0x3b')]){_0x4aa06e[_0xb293('0x3c')]=_[_0xb293('0x3d')](_0x4aa06e[_0xb293('0x3c')],{'$or':_['map'](_0x4aa06e[_0xb293('0x33')],function(_0xaa0908){var _0x488822={};_0x488822[_0xaa0908]={'$like':'%'+_0x29c300[_0xb293('0x2f')][_0xb293('0x3b')]+'%'};return _0x488822;})});}_0x4aa06e=_[_0xb293('0x3d')]({},_0x4aa06e,_0x29c300[_0xb293('0x3e')]);return _0x3d1ba8['getConfigurations'](_0x4aa06e);}})['then'](function(_0x4fd94e){if(_0x4fd94e){_0x483004=_0x4fd94e[_0xb293('0x35')];if(!_0x29c300[_0xb293('0x2f')][_0xb293('0x4a')]('nolimit')){_0x4aa06e[_0xb293('0x1d')]=qs['limit'](_0x29c300['query'][_0xb293('0x1d')]);_0x4aa06e[_0xb293('0x1f')]=qs[_0xb293('0x1f')](_0x29c300[_0xb293('0x2f')][_0xb293('0x1f')]);}return _0x3d1ba8[_0xb293('0x48')](_0x4aa06e);}})[_0xb293('0x25')](function(_0x597da4){if(_0x597da4){return _0x597da4?{'count':_0x483004,'rows':_0x597da4}:null;}})[_0xb293('0x25')](respondWithResult(_0x32cbda,null))[_0xb293('0x42')](handleError(_0x32cbda,null));};exports[_0xb293('0x4b')]=function(_0x3967af,_0x6b7f86,_0x8046af){if(_0x3967af['body']['id']){delete _0x3967af[_0xb293('0x47')]['id'];}return db[_0xb293('0x2b')][_0xb293('0x4c')]({'where':{'id':_0x3967af[_0xb293('0x44')]['id']}})['then'](handleEntityNotFound(_0x6b7f86,null))[_0xb293('0x25')](function(_0x53c694){if(_0x53c694){_0x3967af[_0xb293('0x47')][_0xb293('0x4d')]=_0x53c694['id'];_0x3967af[_0xb293('0x47')][_0xb293('0x4e')]=integrations[_0xb293('0x4f')](_0x3967af['body'][_0xb293('0x50')],_0x3967af[_0xb293('0x47')][_0xb293('0x2d')]);_0x3967af[_0xb293('0x47')][_0xb293('0x51')]=integrations[_0xb293('0x52')](_0x3967af[_0xb293('0x47')][_0xb293('0x50')],_0x3967af[_0xb293('0x47')][_0xb293('0x2d')]);return db['SugarcrmConfiguration']['create'](_0x3967af['body'],{'include':[{'model':db[_0xb293('0x53')],'as':_0xb293('0x4e')},{'model':db[_0xb293('0x53')],'as':'Descriptions'}]});}return null;})[_0xb293('0x25')](respondWithResult(_0x6b7f86,null))['catch'](handleError(_0x6b7f86,null));};exports[_0xb293('0x54')]=function(_0x11b753,_0x30669c,_0x4283aa){var _0xc8d5d0='';var _0x15500b=['id','name',_0xb293('0x55'),_0xb293('0x56'),_0xb293('0x57'),_0xb293('0x58'),_0xb293('0x59'),_0xb293('0x5a'),_0xb293('0x5b'),_0xb293('0x5c'),_0xb293('0x5d'),'direction'];return db[_0xb293('0x2b')][_0xb293('0x4c')]({'where':{'id':_0x11b753['params']['id']},'attributes':['id',_0xb293('0x5e'),_0xb293('0x5f'),_0xb293('0x60')]})[_0xb293('0x25')](handleEntityNotFound(_0x30669c,null))[_0xb293('0x25')](function(_0x4e7697){if(_0x4e7697){_0xc8d5d0=_0x4e7697[_0xb293('0x60')];var _0x2935ac=_0xc8d5d0[_0xb293('0x61')](-0x1);if(_0x2935ac==='/'){_0xc8d5d0=_0xc8d5d0['substring'](0x0,_0xc8d5d0['lastIndexOf'](_0x2935ac));}return rp({'method':_0xb293('0x62'),'uri':util[_0xb293('0x63')](_0xb293('0x64'),_0xc8d5d0,_0xb293('0x65')),'json':!![],'form':{'method':_0xb293('0x66'),'input_type':'JSON','response_type':_0xb293('0x67'),'rest_data':JSON[_0xb293('0x68')]({'user_auth':{'user_name':_0x4e7697[_0xb293('0x5e')],'password':_0x4e7697[_0xb293('0x5f')],'encryption':_0xb293('0x69')},'application':_0xb293('0x6a')})}});}})[_0xb293('0x25')](function(_0x55ee0c){if(_0x55ee0c&&_0x55ee0c[_0xb293('0x28')]!==_0xb293('0x6b')&&_0x55ee0c[_0xb293('0x28')]!=='Password\x20Expired'){return rp({'method':_0xb293('0x62'),'uri':util[_0xb293('0x63')]('%s%s',_0xc8d5d0,_0xb293('0x65')),'json':!![],'form':{'method':_0xb293('0x6c'),'input_type':_0xb293('0x67'),'response_type':'JSON','rest_data':JSON[_0xb293('0x68')]({'session':_0x55ee0c['id'],'module_name':_0xb293('0x6d')})}})[_0xb293('0x25')](function(_0x53ad31){if(_0x53ad31){var _0x53fd45=_[_0xb293('0x6e')](_0x53ad31[_0xb293('0x6f')]);_[_0xb293('0x70')](_0x53fd45,function(_0x366ac6){return _0x15500b['includes'](_0x366ac6[_0xb293('0x28')]);});return{'count':_0x53fd45[_0xb293('0x35')],'rows':_[_0xb293('0x2a')](_0x53fd45,function(_0x27bbe2){return{'id':_0x27bbe2[_0xb293('0x28')],'name':_0x27bbe2[_0xb293('0x71')],'custom':_[_0xb293('0x72')](_0x27bbe2[_0xb293('0x28')],'_c')?!![]:![],'options':_0x27bbe2[_0xb293('0x3e')]?_[_0xb293('0x2a')](_[_0xb293('0x6e')](_0x27bbe2[_0xb293('0x3e')]),function(_0x33551a){return{'name':_0x33551a[_0xb293('0x73')],'value':_0x33551a[_0xb293('0x28')]};}):[]};})};}})[_0xb293('0x25')](respondWithResult(_0x30669c,null))[_0xb293('0x42')](function(_0x2dba9b){var _0x2a3cb0=_0x11b753[_0xb293('0x2f')][_0xb293('0x74')]?0x1f4:_0x2dba9b[_0xb293('0x75')]||0x1f4;logger[_0xb293('0x27')](_0xb293('0x76'),_0xb293('0x54'),_0x2a3cb0,JSON['stringify'](_0x2dba9b));delete _0x2dba9b['name'];if(_0x2a3cb0===0x191){_0x2a3cb0=0x190;}_0x30669c[_0xb293('0x1a')](_0x2a3cb0)[_0xb293('0x77')](_0x11b753[_0xb293('0x2f')]['test']?{'message':_0xb293('0x78'),'statusCode':_0x2dba9b[_0xb293('0x75')]}:_0x2dba9b);});}else{var _0x2a8891=0x1f4;_0x30669c['status'](_0x2a8891)[_0xb293('0x77')]({'message':_0xb293('0x78'),'statusCode':0x190});}});};
\ No newline at end of file
index 7645e03..73d40f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f93=['SugarcrmAccount','int_sugarcrm_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x5108e3,_0x52b591){var _0x1aa9b6=function(_0x35040c){while(--_0x35040c){_0x5108e3['push'](_0x5108e3['shift']());}};_0x1aa9b6(++_0x52b591);}(_0x7f93,0x1a6));var _0x37f9=function(_0xbccf41,_0x3bfba4){_0xbccf41=_0xbccf41-0x0;var _0x2101d6=_0x7f93[_0xbccf41];return _0x2101d6;};'use strict';var _=require(_0x37f9('0x0'));var util=require(_0x37f9('0x1'));var logger=require('../../config/logger')(_0x37f9('0x2'));var moment=require(_0x37f9('0x3'));var BPromise=require(_0x37f9('0x4'));var rp=require(_0x37f9('0x5'));var fs=require('fs');var path=require(_0x37f9('0x6'));var rimraf=require(_0x37f9('0x7'));var config=require(_0x37f9('0x8'));var attributes=require(_0x37f9('0x9'));var integrations=require(_0x37f9('0xa'));module[_0x37f9('0xb')]=function(_0x2b272f,_0x5e1cbe){return _0x2b272f[_0x37f9('0xc')](_0x37f9('0xd'),attributes,{'tableName':_0x37f9('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe127=['moment','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','int_sugarcrm_accounts','util','../../config/logger'];(function(_0x31a16a,_0x1d60e3){var _0x21c892=function(_0x5b25f6){while(--_0x5b25f6){_0x31a16a['push'](_0x31a16a['shift']());}};_0x21c892(++_0x1d60e3);}(_0xe127,0x1e2));var _0x7e12=function(_0x34facb,_0x2ee3c7){_0x34facb=_0x34facb-0x0;var _0x11c9f7=_0xe127[_0x34facb];return _0x11c9f7;};'use strict';var _=require('lodash');var util=require(_0x7e12('0x0'));var logger=require(_0x7e12('0x1'))('api');var moment=require(_0x7e12('0x2'));var BPromise=require(_0x7e12('0x3'));var rp=require(_0x7e12('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7e12('0x5'));var config=require(_0x7e12('0x6'));var attributes=require(_0x7e12('0x7'));var integrations=require(_0x7e12('0x8'));module['exports']=function(_0x4ca85b,_0x42c26f){return _0x4ca85b[_0x7e12('0x9')]('SugarcrmAccount',attributes,{'tableName':_0x7e12('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index edddf78..e38ba8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ffd=['SugarcrmAccount','options','raw','where','limit','include','map','model','attributes','ShowSugarcrmAccount','find','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SugarcrmAccount,\x20%s,\x20%s','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetSugarcrmAccount'];(function(_0x4d04e9,_0x110efd){var _0x5665fb=function(_0x4bc9f0){while(--_0x4bc9f0){_0x4d04e9['push'](_0x4d04e9['shift']());}};_0x5665fb(++_0x110efd);}(_0x2ffd,0x113));var _0xd2ff=function(_0x4cf579,_0x4aa150){_0x4cf579=_0x4cf579-0x0;var _0x89676e=_0x2ffd[_0x4cf579];return _0x89676e;};'use strict';var _=require('lodash');var util=require(_0xd2ff('0x0'));var moment=require('moment');var BPromise=require(_0xd2ff('0x1'));var rs=require(_0xd2ff('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd2ff('0x3'))['db'];var utils=require(_0xd2ff('0x4'));var logger=require(_0xd2ff('0x5'))(_0xd2ff('0x6'));var config=require(_0xd2ff('0x7'));var jayson=require(_0xd2ff('0x8'));var client=jayson[_0xd2ff('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x388164,_0x36c8c8,_0x5a51c4){return new BPromise(function(_0x1b7b94,_0x18054b){return client[_0xd2ff('0xa')](_0x388164,_0x5a51c4)[_0xd2ff('0xb')](function(_0x24fb6b){logger[_0xd2ff('0xc')](_0xd2ff('0xd'),_0x36c8c8,'request\x20sent');logger['debug'](_0xd2ff('0xe'),_0x36c8c8,_0xd2ff('0xf'),JSON[_0xd2ff('0x10')](_0x24fb6b));if(_0x24fb6b[_0xd2ff('0x11')]){if(_0x24fb6b['error'][_0xd2ff('0x12')]===0x1f4){logger[_0xd2ff('0x11')](_0xd2ff('0xd'),_0x36c8c8,_0x24fb6b[_0xd2ff('0x11')][_0xd2ff('0x13')]);return _0x18054b(_0x24fb6b[_0xd2ff('0x11')][_0xd2ff('0x13')]);}logger[_0xd2ff('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x36c8c8,_0x24fb6b[_0xd2ff('0x11')][_0xd2ff('0x13')]);return _0x1b7b94(_0x24fb6b[_0xd2ff('0x11')]['message']);}else{logger[_0xd2ff('0xc')](_0xd2ff('0xd'),_0x36c8c8,_0xd2ff('0xf'));_0x1b7b94(_0x24fb6b['result'][_0xd2ff('0x13')]);}})[_0xd2ff('0x14')](function(_0x27f6ed){logger[_0xd2ff('0x11')](_0xd2ff('0xd'),_0x36c8c8,_0x27f6ed);_0x18054b(_0x27f6ed);});});}exports[_0xd2ff('0x15')]=function(_0x3b115a){var _0x1eb0dc=this;return new Promise(function(_0x4a4dca,_0x593d67){return db[_0xd2ff('0x16')]['findAll']({'raw':_0x3b115a[_0xd2ff('0x17')]?_0x3b115a[_0xd2ff('0x17')][_0xd2ff('0x18')]===undefined?!![]:![]:!![],'where':_0x3b115a[_0xd2ff('0x17')]?_0x3b115a[_0xd2ff('0x17')][_0xd2ff('0x19')]||null:null,'attributes':_0x3b115a['options']?_0x3b115a[_0xd2ff('0x17')]['attributes']||null:null,'limit':_0x3b115a['options']?_0x3b115a[_0xd2ff('0x17')][_0xd2ff('0x1a')]||null:null,'include':_0x3b115a[_0xd2ff('0x17')]?_0x3b115a['options'][_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x3b115a[_0xd2ff('0x17')]['include'],function(_0x5a8491){return{'model':db[_0x5a8491[_0xd2ff('0x1d')]],'as':_0x5a8491['as'],'attributes':_0x5a8491['attributes'],'include':_0x5a8491[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x5a8491[_0xd2ff('0x1b')],function(_0xda2b94){return{'model':db[_0xda2b94[_0xd2ff('0x1d')]],'as':_0xda2b94['as'],'attributes':_0xda2b94[_0xd2ff('0x1e')],'include':_0xda2b94[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0xda2b94[_0xd2ff('0x1b')],function(_0x40c206){return{'model':db[_0x40c206['model']],'as':_0x40c206['as'],'attributes':_0x40c206[_0xd2ff('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xd2ff('0xb')](function(_0x399428){logger[_0xd2ff('0xc')]('GetSugarcrmAccount',_0x3b115a);logger['debug'](_0xd2ff('0x15'),_0x3b115a,JSON[_0xd2ff('0x10')](_0x399428));_0x4a4dca(_0x399428);})[_0xd2ff('0x14')](function(_0x3af6da){logger[_0xd2ff('0x11')](_0xd2ff('0x15'),_0x3af6da['message'],_0x3b115a);_0x593d67(_0x1eb0dc[_0xd2ff('0x11')](0x1f4,_0x3af6da[_0xd2ff('0x13')]));});});};exports[_0xd2ff('0x1f')]=function(_0xc98ea3){var _0x226510=this;return new Promise(function(_0x535c14,_0x2cb2d5){return db[_0xd2ff('0x16')][_0xd2ff('0x20')]({'raw':_0xc98ea3[_0xd2ff('0x17')]?_0xc98ea3[_0xd2ff('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0xc98ea3['options']?_0xc98ea3[_0xd2ff('0x17')][_0xd2ff('0x19')]||null:null,'attributes':_0xc98ea3[_0xd2ff('0x17')]?_0xc98ea3[_0xd2ff('0x17')][_0xd2ff('0x1e')]||null:null,'include':_0xc98ea3[_0xd2ff('0x17')]?_0xc98ea3[_0xd2ff('0x17')][_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0xc98ea3['options'][_0xd2ff('0x1b')],function(_0x1345f1){return{'model':db[_0x1345f1['model']],'as':_0x1345f1['as'],'attributes':_0x1345f1[_0xd2ff('0x1e')],'include':_0x1345f1[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x1345f1[_0xd2ff('0x1b')],function(_0x570357){return{'model':db[_0x570357['model']],'as':_0x570357['as'],'attributes':_0x570357[_0xd2ff('0x1e')],'include':_0x570357[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x570357['include'],function(_0x12fa2a){return{'model':db[_0x12fa2a[_0xd2ff('0x1d')]],'as':_0x12fa2a['as'],'attributes':_0x12fa2a[_0xd2ff('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xd2ff('0xb')](function(_0x1f4af1){logger['info'](_0xd2ff('0x1f'),_0xc98ea3);logger['debug'](_0xd2ff('0x1f'),_0xc98ea3,JSON[_0xd2ff('0x10')](_0x1f4af1));_0x535c14(_0x1f4af1);})['catch'](function(_0x577a74){logger[_0xd2ff('0x11')](_0xd2ff('0x1f'),_0x577a74[_0xd2ff('0x13')],_0xc98ea3);_0x2cb2d5(_0x226510[_0xd2ff('0x11')](0x1f4,_0x577a74[_0xd2ff('0x13')]));});});};
\ No newline at end of file
+var _0x7bf9=['jayson/promise','request','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','attributes','limit','include','model','map','ShowSugarcrmAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x25fa5c,_0x421141){var _0x1bade2=function(_0x3faf20){while(--_0x3faf20){_0x25fa5c['push'](_0x25fa5c['shift']());}};_0x1bade2(++_0x421141);}(_0x7bf9,0x198));var _0x97bf=function(_0x54bace,_0x38bf3e){_0x54bace=_0x54bace-0x0;var _0x15f6ad=_0x7bf9[_0x54bace];return _0x15f6ad;};'use strict';var _=require(_0x97bf('0x0'));var util=require(_0x97bf('0x1'));var moment=require(_0x97bf('0x2'));var BPromise=require(_0x97bf('0x3'));var rs=require(_0x97bf('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x97bf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x97bf('0x6'))('rpc');var config=require(_0x97bf('0x7'));var jayson=require(_0x97bf('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5a8d4f,_0x2e1adc,_0x423507){return new BPromise(function(_0x53fd50,_0x35410f){return client[_0x97bf('0x9')](_0x5a8d4f,_0x423507)[_0x97bf('0xa')](function(_0x561427){logger['info'](_0x97bf('0xb'),_0x2e1adc,_0x97bf('0xc'));logger[_0x97bf('0xd')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x2e1adc,_0x97bf('0xc'),JSON[_0x97bf('0xe')](_0x561427));if(_0x561427['error']){if(_0x561427['error']['code']===0x1f4){logger[_0x97bf('0xf')](_0x97bf('0xb'),_0x2e1adc,_0x561427[_0x97bf('0xf')][_0x97bf('0x10')]);return _0x35410f(_0x561427[_0x97bf('0xf')][_0x97bf('0x10')]);}logger[_0x97bf('0xf')](_0x97bf('0xb'),_0x2e1adc,_0x561427['error'][_0x97bf('0x10')]);return _0x53fd50(_0x561427[_0x97bf('0xf')][_0x97bf('0x10')]);}else{logger[_0x97bf('0x11')](_0x97bf('0xb'),_0x2e1adc,_0x97bf('0xc'));_0x53fd50(_0x561427[_0x97bf('0x12')][_0x97bf('0x10')]);}})[_0x97bf('0x13')](function(_0x1261a5){logger[_0x97bf('0xf')](_0x97bf('0xb'),_0x2e1adc,_0x1261a5);_0x35410f(_0x1261a5);});});}exports[_0x97bf('0x14')]=function(_0x23f4ca){var _0x84bf81=this;return new Promise(function(_0x3819d7,_0x1e38e3){return db[_0x97bf('0x15')][_0x97bf('0x16')]({'raw':_0x23f4ca[_0x97bf('0x17')]?_0x23f4ca[_0x97bf('0x17')][_0x97bf('0x18')]===undefined?!![]:![]:!![],'where':_0x23f4ca[_0x97bf('0x17')]?_0x23f4ca['options']['where']||null:null,'attributes':_0x23f4ca[_0x97bf('0x17')]?_0x23f4ca[_0x97bf('0x17')][_0x97bf('0x19')]||null:null,'limit':_0x23f4ca['options']?_0x23f4ca[_0x97bf('0x17')][_0x97bf('0x1a')]||null:null,'include':_0x23f4ca[_0x97bf('0x17')]?_0x23f4ca['options']['include']?_['map'](_0x23f4ca['options'][_0x97bf('0x1b')],function(_0x4650fb){return{'model':db[_0x4650fb[_0x97bf('0x1c')]],'as':_0x4650fb['as'],'attributes':_0x4650fb[_0x97bf('0x19')],'include':_0x4650fb[_0x97bf('0x1b')]?_[_0x97bf('0x1d')](_0x4650fb[_0x97bf('0x1b')],function(_0x2f424e){return{'model':db[_0x2f424e['model']],'as':_0x2f424e['as'],'attributes':_0x2f424e['attributes'],'include':_0x2f424e[_0x97bf('0x1b')]?_['map'](_0x2f424e[_0x97bf('0x1b')],function(_0x23de6a){return{'model':db[_0x23de6a[_0x97bf('0x1c')]],'as':_0x23de6a['as'],'attributes':_0x23de6a[_0x97bf('0x19')]};}):[]};}):[]};}):[]:[]})[_0x97bf('0xa')](function(_0x316b90){logger[_0x97bf('0x11')](_0x97bf('0x14'),_0x23f4ca);logger[_0x97bf('0xd')](_0x97bf('0x14'),_0x23f4ca,JSON[_0x97bf('0xe')](_0x316b90));_0x3819d7(_0x316b90);})[_0x97bf('0x13')](function(_0x15f51f){logger[_0x97bf('0xf')](_0x97bf('0x14'),_0x15f51f[_0x97bf('0x10')],_0x23f4ca);_0x1e38e3(_0x84bf81[_0x97bf('0xf')](0x1f4,_0x15f51f[_0x97bf('0x10')]));});});};exports[_0x97bf('0x1e')]=function(_0x431447){var _0x15a0d9=this;return new Promise(function(_0x149451,_0x5bfbf1){return db[_0x97bf('0x15')][_0x97bf('0x1f')]({'raw':_0x431447[_0x97bf('0x17')]?_0x431447[_0x97bf('0x17')][_0x97bf('0x18')]===undefined?!![]:![]:!![],'where':_0x431447[_0x97bf('0x17')]?_0x431447[_0x97bf('0x17')]['where']||null:null,'attributes':_0x431447[_0x97bf('0x17')]?_0x431447[_0x97bf('0x17')][_0x97bf('0x19')]||null:null,'include':_0x431447[_0x97bf('0x17')]?_0x431447[_0x97bf('0x17')]['include']?_[_0x97bf('0x1d')](_0x431447[_0x97bf('0x17')][_0x97bf('0x1b')],function(_0x58dba8){return{'model':db[_0x58dba8[_0x97bf('0x1c')]],'as':_0x58dba8['as'],'attributes':_0x58dba8['attributes'],'include':_0x58dba8[_0x97bf('0x1b')]?_['map'](_0x58dba8[_0x97bf('0x1b')],function(_0x41856e){return{'model':db[_0x41856e[_0x97bf('0x1c')]],'as':_0x41856e['as'],'attributes':_0x41856e[_0x97bf('0x19')],'include':_0x41856e[_0x97bf('0x1b')]?_[_0x97bf('0x1d')](_0x41856e[_0x97bf('0x1b')],function(_0x5b103b){return{'model':db[_0x5b103b[_0x97bf('0x1c')]],'as':_0x5b103b['as'],'attributes':_0x5b103b['attributes']};}):[]};}):[]};}):[]:[]})[_0x97bf('0xa')](function(_0x36ddc7){logger[_0x97bf('0x11')](_0x97bf('0x1e'),_0x431447);logger['debug'](_0x97bf('0x1e'),_0x431447,JSON[_0x97bf('0xe')](_0x36ddc7));_0x149451(_0x36ddc7);})[_0x97bf('0x13')](function(_0x588120){logger[_0x97bf('0xf')](_0x97bf('0x1e'),_0x588120[_0x97bf('0x10')],_0x431447);_0x5bfbf1(_0x15a0d9[_0x97bf('0xf')](0x1f4,_0x588120['message']));});});};
\ No newline at end of file
index aa99f3f..e5fc896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b2f=['delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update'];(function(_0x20db93,_0x3226d1){var _0x3602e4=function(_0x4f83cd){while(--_0x4f83cd){_0x20db93['push'](_0x20db93['shift']());}};_0x3602e4(++_0x3226d1);}(_0x5b2f,0x16e));var _0xf5b2=function(_0x4b13ce,_0x339cb0){_0x4b13ce=_0x4b13ce-0x0;var _0x427d4b=_0x5b2f[_0x4b13ce];return _0x427d4b;};'use strict';var multer=require(_0xf5b2('0x0'));var util=require(_0xf5b2('0x1'));var path=require(_0xf5b2('0x2'));var timeout=require(_0xf5b2('0x3'));var express=require('express');var router=express[_0xf5b2('0x4')]();var fs_extra=require(_0xf5b2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf5b2('0x6'));var config=require(_0xf5b2('0x7'));var controller=require(_0xf5b2('0x8'));router[_0xf5b2('0x9')]('/',auth[_0xf5b2('0xa')](),controller[_0xf5b2('0xb')]);router['get'](_0xf5b2('0xc'),auth[_0xf5b2('0xa')](),controller[_0xf5b2('0xd')]);router['get'](_0xf5b2('0xe'),auth[_0xf5b2('0xa')](),controller[_0xf5b2('0xf')]);router[_0xf5b2('0x9')](_0xf5b2('0x10'),auth['isAuthenticated'](),controller[_0xf5b2('0x11')]);router[_0xf5b2('0x9')](_0xf5b2('0x12'),auth['isAuthenticated'](),controller[_0xf5b2('0x13')]);router[_0xf5b2('0x14')]('/',auth[_0xf5b2('0xa')](),controller[_0xf5b2('0x15')]);router[_0xf5b2('0x16')]('/:id',auth[_0xf5b2('0xa')](),controller[_0xf5b2('0x17')]);router[_0xf5b2('0x18')](_0xf5b2('0xc'),auth[_0xf5b2('0xa')](),controller[_0xf5b2('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xf952=['get','/:id/fields','getFields','/:id/subjects','getSubjects','post','create','/:id','update','delete','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','index','isAuthenticated'];(function(_0x41c728,_0x45d573){var _0x5a18dc=function(_0x296154){while(--_0x296154){_0x41c728['push'](_0x41c728['shift']());}};_0x5a18dc(++_0x45d573);}(_0xf952,0x9a));var _0x2f95=function(_0x1a2b5b,_0x427e0e){_0x1a2b5b=_0x1a2b5b-0x0;var _0x4ab8a8=_0xf952[_0x1a2b5b];return _0x4ab8a8;};'use strict';var multer=require('multer');var util=require(_0x2f95('0x0'));var path=require('path');var timeout=require(_0x2f95('0x1'));var express=require('express');var router=express[_0x2f95('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2f95('0x3'));var interaction=require(_0x2f95('0x4'));var config=require('../../config/environment');var controller=require(_0x2f95('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x2f95('0x6')]);router['get']('/:id',auth[_0x2f95('0x7')](),controller['show']);router[_0x2f95('0x8')](_0x2f95('0x9'),auth['isAuthenticated'](),controller[_0x2f95('0xa')]);router[_0x2f95('0x8')](_0x2f95('0xb'),auth[_0x2f95('0x7')](),controller[_0x2f95('0xc')]);router[_0x2f95('0x8')]('/:id/descriptions',auth[_0x2f95('0x7')](),controller['getDescriptions']);router[_0x2f95('0xd')]('/',auth[_0x2f95('0x7')](),controller[_0x2f95('0xe')]);router['put'](_0x2f95('0xf'),auth[_0x2f95('0x7')](),controller[_0x2f95('0x10')]);router[_0x2f95('0x11')]('/:id',auth[_0x2f95('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7937aed..e81ddaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff3=['sequelize','exports','STRING'];(function(_0x409bfb,_0x582aab){var _0x217d7f=function(_0x18154d){while(--_0x18154d){_0x409bfb['push'](_0x409bfb['shift']());}};_0x217d7f(++_0x582aab);}(_0xfff3,0x6c));var _0x3fff=function(_0x49436b,_0x5a61ef){_0x49436b=_0x49436b-0x0;var _0x5e77c9=_0xfff3[_0x49436b];return _0x5e77c9;};'use strict';var Sequelize=require(_0x3fff('0x0'));module[_0x3fff('0x1')]={'name':{'type':Sequelize[_0x3fff('0x2')]},'description':{'type':Sequelize[_0x3fff('0x2')]}};
\ No newline at end of file
+var _0x96e4=['sequelize','exports'];(function(_0x3051e5,_0x159597){var _0x2afeab=function(_0x2e9632){while(--_0x2e9632){_0x3051e5['push'](_0x3051e5['shift']());}};_0x2afeab(++_0x159597);}(_0x96e4,0x1e4));var _0x496e=function(_0xd21fe7,_0x225a39){_0xd21fe7=_0xd21fe7-0x0;var _0x14d570=_0x96e4[_0xd21fe7];return _0x14d570;};'use strict';var Sequelize=require(_0x496e('0x0'));module[_0x496e('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6867c43..21928d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6853=['json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','SugarcrmConfiguration','key','query','keys','filters','intersection','model','attributes','fields','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','length','catch','create','body','find','params','getFields','findOne','SugarcrmField','rawAttributes','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x4c9e3a,_0x1ea80e){var _0x2e10b7=function(_0x5f32e7){while(--_0x5f32e7){_0x4c9e3a['push'](_0x4c9e3a['shift']());}};_0x2e10b7(++_0x1ea80e);}(_0x6853,0x11b));var _0x3685=function(_0x256207,_0x494d43){_0x256207=_0x256207-0x0;var _0x888a8c=_0x6853[_0x256207];return _0x888a8c;};'use strict';var emlformat=require(_0x3685('0x0'));var rimraf=require(_0x3685('0x1'));var zipdir=require(_0x3685('0x2'));var jsonpatch=require(_0x3685('0x3'));var rp=require('request-promise');var moment=require(_0x3685('0x4'));var BPromise=require(_0x3685('0x5'));var Mustache=require('mustache');var util=require(_0x3685('0x6'));var path=require('path');var sox=require(_0x3685('0x7'));var csv=require(_0x3685('0x8'));var ejs=require(_0x3685('0x9'));var fs=require('fs');var fs_extra=require(_0x3685('0xa'));var _=require(_0x3685('0xb'));var squel=require(_0x3685('0xc'));var crypto=require(_0x3685('0xd'));var jsforce=require(_0x3685('0xe'));var deskjs=require(_0x3685('0xf'));var toCsv=require(_0x3685('0x8'));var querystring=require('querystring');var Papa=require(_0x3685('0x10'));var Redis=require(_0x3685('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3685('0x12'));var as=require(_0x3685('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3685('0x14'));var db=require(_0x3685('0x15'))['db'];function respondWithStatusCode(_0x55bbf7,_0x29deb0){_0x29deb0=_0x29deb0||0xcc;return function(_0x3b4ffe){if(_0x3b4ffe){return _0x55bbf7[_0x3685('0x16')](_0x29deb0);}return _0x55bbf7[_0x3685('0x17')](_0x29deb0)[_0x3685('0x18')]();};}function respondWithResult(_0x5a07aa,_0x4864d5){_0x4864d5=_0x4864d5||0xc8;return function(_0x1a5a2c){if(_0x1a5a2c){return _0x5a07aa['status'](_0x4864d5)[_0x3685('0x19')](_0x1a5a2c);}};}function respondWithFilteredResult(_0x121d4a,_0x12333e){return function(_0xdd2226){if(_0xdd2226){var _0x34f8f1=typeof _0x12333e[_0x3685('0x1a')]===_0x3685('0x1b')&&typeof _0x12333e[_0x3685('0x1c')]===_0x3685('0x1b');var _0x59ff01=_0xdd2226[_0x3685('0x1d')];var _0x41e830=_0x34f8f1?0x0:_0x12333e[_0x3685('0x1a')];var _0x50dc99=_0x34f8f1?_0xdd2226[_0x3685('0x1d')]:_0x12333e['offset']+_0x12333e[_0x3685('0x1c')];var _0x4184bb;if(_0x50dc99>=_0x59ff01){_0x50dc99=_0x59ff01;_0x4184bb=0xc8;}else{_0x4184bb=0xce;}_0x121d4a[_0x3685('0x17')](_0x4184bb);return _0x121d4a[_0x3685('0x1e')]('Content-Range',_0x41e830+'-'+_0x50dc99+'/'+_0x59ff01)[_0x3685('0x19')](_0xdd2226);}return null;};}function patchUpdates(_0x5b092c){return function(_0x4c525a){try{jsonpatch[_0x3685('0x1f')](_0x4c525a,_0x5b092c,!![]);}catch(_0x23c5fa){return BPromise[_0x3685('0x20')](_0x23c5fa);}return _0x4c525a[_0x3685('0x21')]();};}function saveUpdates(_0x2748af,_0x34adaf){return function(_0x55dd59){if(_0x55dd59){return _0x55dd59[_0x3685('0x22')](_0x2748af)[_0x3685('0x23')](function(_0x5e3c54){return _0x5e3c54;});}return null;};}function removeEntity(_0x1c7091,_0xa5a74a){return function(_0x20317d){if(_0x20317d){return _0x20317d[_0x3685('0x24')]()[_0x3685('0x23')](function(){_0x1c7091[_0x3685('0x17')](0xcc)[_0x3685('0x18')]();});}};}function handleEntityNotFound(_0x240b3a,_0x204591){return function(_0x128ff6){if(!_0x128ff6){_0x240b3a[_0x3685('0x16')](0x194);}return _0x128ff6;};}function handleError(_0x266576,_0x3f8250){_0x3f8250=_0x3f8250||0x1f4;return function(_0x1da878){logger[_0x3685('0x25')](_0x1da878['stack']);if(_0x1da878[_0x3685('0x26')]){delete _0x1da878['name'];}_0x266576[_0x3685('0x17')](_0x3f8250)[_0x3685('0x27')](_0x1da878);};}exports[_0x3685('0x28')]=function(_0x55f877,_0x5d2a51){var _0x12eedb={},_0x400c15={},_0x7001d={'count':0x0,'rows':[]};var _0x556d88=_[_0x3685('0x29')](db[_0x3685('0x2a')]['rawAttributes'],function(_0x48977a){return{'name':_0x48977a['fieldName'],'type':_0x48977a['type'][_0x3685('0x2b')]};});_0x400c15['model']=_[_0x3685('0x29')](_0x556d88,'name');_0x400c15[_0x3685('0x2c')]=_[_0x3685('0x2d')](_0x55f877['query']);_0x400c15[_0x3685('0x2e')]=_[_0x3685('0x2f')](_0x400c15[_0x3685('0x30')],_0x400c15[_0x3685('0x2c')]);_0x12eedb[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x400c15[_0x3685('0x30')],qs[_0x3685('0x32')](_0x55f877[_0x3685('0x2c')][_0x3685('0x32')]));_0x12eedb[_0x3685('0x31')]=_0x12eedb[_0x3685('0x31')]['length']?_0x12eedb['attributes']:_0x400c15[_0x3685('0x30')];if(!_0x55f877[_0x3685('0x2c')]['hasOwnProperty']('nolimit')){_0x12eedb[_0x3685('0x1c')]=qs[_0x3685('0x1c')](_0x55f877[_0x3685('0x2c')]['limit']);_0x12eedb['offset']=qs[_0x3685('0x1a')](_0x55f877[_0x3685('0x2c')][_0x3685('0x1a')]);}_0x12eedb[_0x3685('0x33')]=qs[_0x3685('0x34')](_0x55f877[_0x3685('0x2c')]['sort']);_0x12eedb[_0x3685('0x35')]=qs['filters'](_[_0x3685('0x36')](_0x55f877[_0x3685('0x2c')],_0x400c15[_0x3685('0x2e')]),_0x556d88);if(_0x55f877[_0x3685('0x2c')][_0x3685('0x37')]){_0x12eedb[_0x3685('0x35')]=_[_0x3685('0x38')](_0x12eedb['where'],{'$or':_[_0x3685('0x29')](_0x556d88,function(_0x2dbcd0){if(_0x2dbcd0[_0x3685('0x39')]!==_0x3685('0x3a')){var _0x5943cc={};_0x5943cc[_0x2dbcd0['name']]={'$like':'%'+_0x55f877['query'][_0x3685('0x37')]+'%'};return _0x5943cc;}})});}_0x12eedb=_[_0x3685('0x38')]({},_0x12eedb,_0x55f877[_0x3685('0x3b')]);var _0x1ef888={'where':_0x12eedb[_0x3685('0x35')]};return db[_0x3685('0x2a')]['count'](_0x1ef888)[_0x3685('0x23')](function(_0x3beeb2){_0x7001d[_0x3685('0x1d')]=_0x3beeb2;if(_0x55f877['query'][_0x3685('0x3c')]){_0x12eedb[_0x3685('0x3d')]=[{'all':!![]}];}return db[_0x3685('0x2a')]['findAll'](_0x12eedb);})['then'](function(_0x196d70){_0x7001d[_0x3685('0x3e')]=_0x196d70;return _0x7001d;})[_0x3685('0x23')](respondWithFilteredResult(_0x5d2a51,_0x12eedb))['catch'](handleError(_0x5d2a51,null));};exports['show']=function(_0x2ca947,_0x36804a){var _0x2d30f0={'raw':![],'where':{'id':_0x2ca947['params']['id']}},_0x523ade={};_0x523ade[_0x3685('0x30')]=_['keys'](db[_0x3685('0x2a')]['rawAttributes']);_0x523ade['query']=_[_0x3685('0x2d')](_0x2ca947[_0x3685('0x2c')]);_0x523ade[_0x3685('0x2e')]=_[_0x3685('0x2f')](_0x523ade[_0x3685('0x30')],_0x523ade[_0x3685('0x2c')]);_0x2d30f0[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x523ade['model'],qs['fields'](_0x2ca947[_0x3685('0x2c')][_0x3685('0x32')]));_0x2d30f0[_0x3685('0x31')]=_0x2d30f0['attributes'][_0x3685('0x3f')]?_0x2d30f0[_0x3685('0x31')]:_0x523ade[_0x3685('0x30')];if(_0x2ca947[_0x3685('0x2c')][_0x3685('0x3c')]){_0x2d30f0['include']=[{'all':!![]}];}_0x2d30f0=_[_0x3685('0x38')]({},_0x2d30f0,_0x2ca947['options']);return db['SugarcrmConfiguration']['find'](_0x2d30f0)['then'](handleEntityNotFound(_0x36804a,null))[_0x3685('0x23')](respondWithResult(_0x36804a,null))[_0x3685('0x40')](handleError(_0x36804a,null));};exports[_0x3685('0x41')]=function(_0x1779aa,_0x341dce){return db[_0x3685('0x2a')][_0x3685('0x41')](_0x1779aa['body'],{})[_0x3685('0x23')](respondWithResult(_0x341dce,0xc9))['catch'](handleError(_0x341dce,null));};exports['update']=function(_0x3715b0,_0x202f5a){if(_0x3715b0[_0x3685('0x42')]['id']){delete _0x3715b0[_0x3685('0x42')]['id'];}return db[_0x3685('0x2a')]['find']({'where':{'id':_0x3715b0['params']['id']}})[_0x3685('0x23')](handleEntityNotFound(_0x202f5a,null))[_0x3685('0x23')](saveUpdates(_0x3715b0['body'],null))[_0x3685('0x23')](respondWithResult(_0x202f5a,null))[_0x3685('0x40')](handleError(_0x202f5a,null));};exports[_0x3685('0x24')]=function(_0x5d7d13,_0x32feb1){return db['SugarcrmConfiguration'][_0x3685('0x43')]({'where':{'id':_0x5d7d13[_0x3685('0x44')]['id']}})[_0x3685('0x23')](handleEntityNotFound(_0x32feb1,null))[_0x3685('0x23')](removeEntity(_0x32feb1,null))['catch'](handleError(_0x32feb1,null));};exports[_0x3685('0x45')]=function(_0x8ed443,_0x1ab0aa,_0x124437){var _0x5b1cd7={};var _0x439da0={};var _0x57d556;var _0x326b0d;return db['SugarcrmConfiguration'][_0x3685('0x46')]({'where':{'id':_0x8ed443['params']['id']}})['then'](handleEntityNotFound(_0x1ab0aa,null))[_0x3685('0x23')](function(_0x1b8d83){if(_0x1b8d83){_0x57d556=_0x1b8d83;_0x439da0['model']=_[_0x3685('0x2d')](db[_0x3685('0x47')][_0x3685('0x48')]);_0x439da0[_0x3685('0x2c')]=_[_0x3685('0x2d')](_0x8ed443[_0x3685('0x2c')]);_0x439da0['filters']=_[_0x3685('0x2f')](_0x439da0['model'],_0x439da0[_0x3685('0x2c')]);_0x5b1cd7[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x439da0[_0x3685('0x30')],qs[_0x3685('0x32')](_0x8ed443['query'][_0x3685('0x32')]));_0x5b1cd7[_0x3685('0x31')]=_0x5b1cd7[_0x3685('0x31')][_0x3685('0x3f')]?_0x5b1cd7[_0x3685('0x31')]:_0x439da0[_0x3685('0x30')];_0x5b1cd7[_0x3685('0x33')]=qs['sort'](_0x8ed443['query']['sort']);_0x5b1cd7[_0x3685('0x35')]=qs['filters'](_[_0x3685('0x36')](_0x8ed443[_0x3685('0x2c')],_0x439da0['filters']));if(_0x8ed443[_0x3685('0x2c')]['filter']){_0x5b1cd7[_0x3685('0x35')]=_['merge'](_0x5b1cd7[_0x3685('0x35')],{'$or':_[_0x3685('0x29')](_0x5b1cd7[_0x3685('0x31')],function(_0xa300fc){var _0x4fded4={};_0x4fded4[_0xa300fc]={'$like':'%'+_0x8ed443[_0x3685('0x2c')][_0x3685('0x37')]+'%'};return _0x4fded4;})});}_0x5b1cd7=_[_0x3685('0x38')]({},_0x5b1cd7,_0x8ed443[_0x3685('0x3b')]);return _0x57d556[_0x3685('0x45')](_0x5b1cd7);}})[_0x3685('0x23')](function(_0x5f5a6e){if(_0x5f5a6e){_0x326b0d=_0x5f5a6e[_0x3685('0x3f')];if(!_0x8ed443[_0x3685('0x2c')][_0x3685('0x49')](_0x3685('0x4a'))){_0x5b1cd7[_0x3685('0x1c')]=qs[_0x3685('0x1c')](_0x8ed443[_0x3685('0x2c')][_0x3685('0x1c')]);_0x5b1cd7[_0x3685('0x1a')]=qs[_0x3685('0x1a')](_0x8ed443[_0x3685('0x2c')][_0x3685('0x1a')]);}return _0x57d556['getFields'](_0x5b1cd7);}})[_0x3685('0x23')](function(_0x3ceb04){if(_0x3ceb04){return _0x3ceb04?{'count':_0x326b0d,'rows':_0x3ceb04}:null;}})[_0x3685('0x23')](respondWithResult(_0x1ab0aa,null))[_0x3685('0x40')](handleError(_0x1ab0aa,null));};exports[_0x3685('0x4b')]=function(_0x2e7a20,_0x33a620,_0x5cc845){var _0x1011c8={};var _0x188d0f={};var _0x13fae3;var _0x5bb4d2;return db['SugarcrmConfiguration'][_0x3685('0x46')]({'where':{'id':_0x2e7a20[_0x3685('0x44')]['id']}})[_0x3685('0x23')](handleEntityNotFound(_0x33a620,null))['then'](function(_0x5a6f7c){if(_0x5a6f7c){_0x13fae3=_0x5a6f7c;_0x188d0f['model']=_[_0x3685('0x2d')](db[_0x3685('0x47')]['rawAttributes']);_0x188d0f[_0x3685('0x2c')]=_['keys'](_0x2e7a20[_0x3685('0x2c')]);_0x188d0f[_0x3685('0x2e')]=_['intersection'](_0x188d0f[_0x3685('0x30')],_0x188d0f[_0x3685('0x2c')]);_0x1011c8[_0x3685('0x31')]=_['intersection'](_0x188d0f[_0x3685('0x30')],qs[_0x3685('0x32')](_0x2e7a20[_0x3685('0x2c')]['fields']));_0x1011c8[_0x3685('0x31')]=_0x1011c8[_0x3685('0x31')]['length']?_0x1011c8['attributes']:_0x188d0f[_0x3685('0x30')];_0x1011c8[_0x3685('0x33')]=qs[_0x3685('0x34')](_0x2e7a20[_0x3685('0x2c')]['sort']);_0x1011c8[_0x3685('0x35')]=qs[_0x3685('0x2e')](_[_0x3685('0x36')](_0x2e7a20[_0x3685('0x2c')],_0x188d0f[_0x3685('0x2e')]));if(_0x2e7a20['query'][_0x3685('0x37')]){_0x1011c8[_0x3685('0x35')]=_['merge'](_0x1011c8[_0x3685('0x35')],{'$or':_[_0x3685('0x29')](_0x1011c8[_0x3685('0x31')],function(_0x2a23f4){var _0x5db012={};_0x5db012[_0x2a23f4]={'$like':'%'+_0x2e7a20[_0x3685('0x2c')][_0x3685('0x37')]+'%'};return _0x5db012;})});}_0x1011c8=_[_0x3685('0x38')]({},_0x1011c8,_0x2e7a20[_0x3685('0x3b')]);return _0x13fae3['getSubjects'](_0x1011c8);}})[_0x3685('0x23')](function(_0x95a09){if(_0x95a09){_0x5bb4d2=_0x95a09[_0x3685('0x3f')];if(!_0x2e7a20[_0x3685('0x2c')][_0x3685('0x49')](_0x3685('0x4a'))){_0x1011c8[_0x3685('0x1c')]=qs[_0x3685('0x1c')](_0x2e7a20[_0x3685('0x2c')][_0x3685('0x1c')]);_0x1011c8['offset']=qs[_0x3685('0x1a')](_0x2e7a20['query'][_0x3685('0x1a')]);}return _0x13fae3[_0x3685('0x4b')](_0x1011c8);}})[_0x3685('0x23')](function(_0x452eb2){if(_0x452eb2){return _0x452eb2?{'count':_0x5bb4d2,'rows':_0x452eb2}:null;}})[_0x3685('0x23')](respondWithResult(_0x33a620,null))[_0x3685('0x40')](handleError(_0x33a620,null));};exports[_0x3685('0x4c')]=function(_0x158dd1,_0xda8eb8,_0x205eaf){var _0x37bf0a={};var _0x40b2f2={};var _0x4be16c;var _0x386a36;return db[_0x3685('0x2a')][_0x3685('0x46')]({'where':{'id':_0x158dd1[_0x3685('0x44')]['id']}})[_0x3685('0x23')](handleEntityNotFound(_0xda8eb8,null))['then'](function(_0x36fef8){if(_0x36fef8){_0x4be16c=_0x36fef8;_0x40b2f2[_0x3685('0x30')]=_[_0x3685('0x2d')](db[_0x3685('0x47')]['rawAttributes']);_0x40b2f2[_0x3685('0x2c')]=_[_0x3685('0x2d')](_0x158dd1[_0x3685('0x2c')]);_0x40b2f2[_0x3685('0x2e')]=_[_0x3685('0x2f')](_0x40b2f2[_0x3685('0x30')],_0x40b2f2[_0x3685('0x2c')]);_0x37bf0a[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x40b2f2[_0x3685('0x30')],qs[_0x3685('0x32')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x32')]));_0x37bf0a[_0x3685('0x31')]=_0x37bf0a[_0x3685('0x31')]['length']?_0x37bf0a[_0x3685('0x31')]:_0x40b2f2[_0x3685('0x30')];_0x37bf0a[_0x3685('0x33')]=qs[_0x3685('0x34')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x34')]);_0x37bf0a['where']=qs[_0x3685('0x2e')](_['pick'](_0x158dd1[_0x3685('0x2c')],_0x40b2f2[_0x3685('0x2e')]));if(_0x158dd1[_0x3685('0x2c')]['filter']){_0x37bf0a[_0x3685('0x35')]=_['merge'](_0x37bf0a[_0x3685('0x35')],{'$or':_[_0x3685('0x29')](_0x37bf0a[_0x3685('0x31')],function(_0x4e743c){var _0x4b0311={};_0x4b0311[_0x4e743c]={'$like':'%'+_0x158dd1['query'][_0x3685('0x37')]+'%'};return _0x4b0311;})});}_0x37bf0a=_[_0x3685('0x38')]({},_0x37bf0a,_0x158dd1[_0x3685('0x3b')]);return _0x4be16c[_0x3685('0x4c')](_0x37bf0a);}})['then'](function(_0x145985){if(_0x145985){_0x386a36=_0x145985[_0x3685('0x3f')];if(!_0x158dd1[_0x3685('0x2c')][_0x3685('0x49')](_0x3685('0x4a'))){_0x37bf0a['limit']=qs[_0x3685('0x1c')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x1c')]);_0x37bf0a[_0x3685('0x1a')]=qs[_0x3685('0x1a')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x1a')]);}return _0x4be16c[_0x3685('0x4c')](_0x37bf0a);}})[_0x3685('0x23')](function(_0x12d8fd){if(_0x12d8fd){return _0x12d8fd?{'count':_0x386a36,'rows':_0x12d8fd}:null;}})[_0x3685('0x23')](respondWithResult(_0xda8eb8,null))[_0x3685('0x40')](handleError(_0xda8eb8,null));};
\ No newline at end of file
+var _0x8aa3=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','index','map','SugarcrmConfiguration','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','type','merge','options','includeAll','include','findAll','rows','show','params','find','catch','body','destroy','getFields','findOne','SugarcrmField','order','getSubjects','pick','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0xd0ccdc,_0x32d8e3){var _0x3ed2f3=function(_0x30ef7f){while(--_0x30ef7f){_0xd0ccdc['push'](_0xd0ccdc['shift']());}};_0x3ed2f3(++_0x32d8e3);}(_0x8aa3,0x177));var _0x38aa=function(_0x587c92,_0xf793e4){_0x587c92=_0x587c92-0x0;var _0x19bd28=_0x8aa3[_0x587c92];return _0x19bd28;};'use strict';var emlformat=require(_0x38aa('0x0'));var rimraf=require(_0x38aa('0x1'));var zipdir=require(_0x38aa('0x2'));var jsonpatch=require(_0x38aa('0x3'));var rp=require('request-promise');var moment=require(_0x38aa('0x4'));var BPromise=require(_0x38aa('0x5'));var Mustache=require(_0x38aa('0x6'));var util=require('util');var path=require(_0x38aa('0x7'));var sox=require(_0x38aa('0x8'));var csv=require(_0x38aa('0x9'));var ejs=require(_0x38aa('0xa'));var fs=require('fs');var fs_extra=require(_0x38aa('0xb'));var _=require(_0x38aa('0xc'));var squel=require(_0x38aa('0xd'));var crypto=require(_0x38aa('0xe'));var jsforce=require(_0x38aa('0xf'));var deskjs=require(_0x38aa('0x10'));var toCsv=require('to-csv');var querystring=require(_0x38aa('0x11'));var Papa=require(_0x38aa('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x38aa('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x38aa('0x14'))(_0x38aa('0x15'));var utils=require(_0x38aa('0x16'));var config=require(_0x38aa('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x38aa('0x18'))['db'];function respondWithStatusCode(_0x14997b,_0x377ef0){_0x377ef0=_0x377ef0||0xcc;return function(_0x4649c6){if(_0x4649c6){return _0x14997b[_0x38aa('0x19')](_0x377ef0);}return _0x14997b[_0x38aa('0x1a')](_0x377ef0)[_0x38aa('0x1b')]();};}function respondWithResult(_0x159dda,_0x2113a3){_0x2113a3=_0x2113a3||0xc8;return function(_0x188964){if(_0x188964){return _0x159dda[_0x38aa('0x1a')](_0x2113a3)[_0x38aa('0x1c')](_0x188964);}};}function respondWithFilteredResult(_0x3df34a,_0x1a1522){return function(_0x1ea324){if(_0x1ea324){var _0x491e7d=typeof _0x1a1522[_0x38aa('0x1d')]===_0x38aa('0x1e')&&typeof _0x1a1522[_0x38aa('0x1f')]===_0x38aa('0x1e');var _0x42e3e7=_0x1ea324[_0x38aa('0x20')];var _0x3e3232=_0x491e7d?0x0:_0x1a1522[_0x38aa('0x1d')];var _0x4c4ae9=_0x491e7d?_0x1ea324['count']:_0x1a1522[_0x38aa('0x1d')]+_0x1a1522[_0x38aa('0x1f')];var _0x55e88d;if(_0x4c4ae9>=_0x42e3e7){_0x4c4ae9=_0x42e3e7;_0x55e88d=0xc8;}else{_0x55e88d=0xce;}_0x3df34a[_0x38aa('0x1a')](_0x55e88d);return _0x3df34a[_0x38aa('0x21')](_0x38aa('0x22'),_0x3e3232+'-'+_0x4c4ae9+'/'+_0x42e3e7)['json'](_0x1ea324);}return null;};}function patchUpdates(_0x47aa37){return function(_0x4f032f){try{jsonpatch[_0x38aa('0x23')](_0x4f032f,_0x47aa37,!![]);}catch(_0xb2fe57){return BPromise[_0x38aa('0x24')](_0xb2fe57);}return _0x4f032f[_0x38aa('0x25')]();};}function saveUpdates(_0x322dd4,_0x171a5c){return function(_0x530b56){if(_0x530b56){return _0x530b56[_0x38aa('0x26')](_0x322dd4)['then'](function(_0x18ba92){return _0x18ba92;});}return null;};}function removeEntity(_0xd73653,_0x11ca75){return function(_0x2f8fec){if(_0x2f8fec){return _0x2f8fec['destroy']()[_0x38aa('0x27')](function(){_0xd73653['status'](0xcc)[_0x38aa('0x1b')]();});}};}function handleEntityNotFound(_0x4d2625,_0x5b0fe3){return function(_0x48d2ba){if(!_0x48d2ba){_0x4d2625[_0x38aa('0x19')](0x194);}return _0x48d2ba;};}function handleError(_0x210e59,_0x25b09d){_0x25b09d=_0x25b09d||0x1f4;return function(_0x600b74){logger[_0x38aa('0x28')](_0x600b74['stack']);if(_0x600b74[_0x38aa('0x29')]){delete _0x600b74[_0x38aa('0x29')];}_0x210e59[_0x38aa('0x1a')](_0x25b09d)['send'](_0x600b74);};}exports[_0x38aa('0x2a')]=function(_0x425300,_0x2b9d50){var _0x352388={},_0x320b79={},_0x2a47d6={'count':0x0,'rows':[]};var _0x768771=_[_0x38aa('0x2b')](db[_0x38aa('0x2c')][_0x38aa('0x2d')],function(_0x363244){return{'name':_0x363244[_0x38aa('0x2e')],'type':_0x363244['type']['key']};});_0x320b79[_0x38aa('0x2f')]=_['map'](_0x768771,_0x38aa('0x29'));_0x320b79['query']=_[_0x38aa('0x30')](_0x425300[_0x38aa('0x31')]);_0x320b79[_0x38aa('0x32')]=_[_0x38aa('0x33')](_0x320b79[_0x38aa('0x2f')],_0x320b79[_0x38aa('0x31')]);_0x352388['attributes']=_[_0x38aa('0x33')](_0x320b79[_0x38aa('0x2f')],qs[_0x38aa('0x34')](_0x425300[_0x38aa('0x31')][_0x38aa('0x34')]));_0x352388[_0x38aa('0x35')]=_0x352388[_0x38aa('0x35')][_0x38aa('0x36')]?_0x352388['attributes']:_0x320b79[_0x38aa('0x2f')];if(!_0x425300[_0x38aa('0x31')][_0x38aa('0x37')](_0x38aa('0x38'))){_0x352388['limit']=qs[_0x38aa('0x1f')](_0x425300[_0x38aa('0x31')][_0x38aa('0x1f')]);_0x352388[_0x38aa('0x1d')]=qs['offset'](_0x425300[_0x38aa('0x31')][_0x38aa('0x1d')]);}_0x352388['order']=qs[_0x38aa('0x39')](_0x425300['query']['sort']);_0x352388[_0x38aa('0x3a')]=qs[_0x38aa('0x32')](_['pick'](_0x425300[_0x38aa('0x31')],_0x320b79[_0x38aa('0x32')]),_0x768771);if(_0x425300['query'][_0x38aa('0x3b')]){_0x352388['where']=_['merge'](_0x352388[_0x38aa('0x3a')],{'$or':_['map'](_0x768771,function(_0x1ebe1a){if(_0x1ebe1a[_0x38aa('0x3c')]!=='VIRTUAL'){var _0x2d6b33={};_0x2d6b33[_0x1ebe1a[_0x38aa('0x29')]]={'$like':'%'+_0x425300[_0x38aa('0x31')][_0x38aa('0x3b')]+'%'};return _0x2d6b33;}})});}_0x352388=_[_0x38aa('0x3d')]({},_0x352388,_0x425300[_0x38aa('0x3e')]);var _0x45a6be={'where':_0x352388[_0x38aa('0x3a')]};return db['SugarcrmConfiguration'][_0x38aa('0x20')](_0x45a6be)[_0x38aa('0x27')](function(_0x3391ac){_0x2a47d6[_0x38aa('0x20')]=_0x3391ac;if(_0x425300['query'][_0x38aa('0x3f')]){_0x352388[_0x38aa('0x40')]=[{'all':!![]}];}return db[_0x38aa('0x2c')][_0x38aa('0x41')](_0x352388);})[_0x38aa('0x27')](function(_0x2d7ccf){_0x2a47d6[_0x38aa('0x42')]=_0x2d7ccf;return _0x2a47d6;})['then'](respondWithFilteredResult(_0x2b9d50,_0x352388))['catch'](handleError(_0x2b9d50,null));};exports[_0x38aa('0x43')]=function(_0x11db18,_0x5cec64){var _0x33f4a6={'raw':![],'where':{'id':_0x11db18[_0x38aa('0x44')]['id']}},_0x30bf5d={};_0x30bf5d['model']=_['keys'](db[_0x38aa('0x2c')]['rawAttributes']);_0x30bf5d[_0x38aa('0x31')]=_[_0x38aa('0x30')](_0x11db18['query']);_0x30bf5d['filters']=_[_0x38aa('0x33')](_0x30bf5d[_0x38aa('0x2f')],_0x30bf5d['query']);_0x33f4a6[_0x38aa('0x35')]=_[_0x38aa('0x33')](_0x30bf5d[_0x38aa('0x2f')],qs[_0x38aa('0x34')](_0x11db18[_0x38aa('0x31')][_0x38aa('0x34')]));_0x33f4a6[_0x38aa('0x35')]=_0x33f4a6[_0x38aa('0x35')]['length']?_0x33f4a6[_0x38aa('0x35')]:_0x30bf5d[_0x38aa('0x2f')];if(_0x11db18[_0x38aa('0x31')][_0x38aa('0x3f')]){_0x33f4a6[_0x38aa('0x40')]=[{'all':!![]}];}_0x33f4a6=_[_0x38aa('0x3d')]({},_0x33f4a6,_0x11db18[_0x38aa('0x3e')]);return db['SugarcrmConfiguration'][_0x38aa('0x45')](_0x33f4a6)[_0x38aa('0x27')](handleEntityNotFound(_0x5cec64,null))[_0x38aa('0x27')](respondWithResult(_0x5cec64,null))[_0x38aa('0x46')](handleError(_0x5cec64,null));};exports['create']=function(_0xbb4293,_0x83a98f){return db[_0x38aa('0x2c')]['create'](_0xbb4293[_0x38aa('0x47')],{})[_0x38aa('0x27')](respondWithResult(_0x83a98f,0xc9))[_0x38aa('0x46')](handleError(_0x83a98f,null));};exports['update']=function(_0x2e2cbd,_0x5213a9){if(_0x2e2cbd[_0x38aa('0x47')]['id']){delete _0x2e2cbd[_0x38aa('0x47')]['id'];}return db[_0x38aa('0x2c')][_0x38aa('0x45')]({'where':{'id':_0x2e2cbd[_0x38aa('0x44')]['id']}})[_0x38aa('0x27')](handleEntityNotFound(_0x5213a9,null))[_0x38aa('0x27')](saveUpdates(_0x2e2cbd[_0x38aa('0x47')],null))['then'](respondWithResult(_0x5213a9,null))[_0x38aa('0x46')](handleError(_0x5213a9,null));};exports[_0x38aa('0x48')]=function(_0x552e5c,_0x5eb691){return db[_0x38aa('0x2c')][_0x38aa('0x45')]({'where':{'id':_0x552e5c[_0x38aa('0x44')]['id']}})['then'](handleEntityNotFound(_0x5eb691,null))[_0x38aa('0x27')](removeEntity(_0x5eb691,null))[_0x38aa('0x46')](handleError(_0x5eb691,null));};exports[_0x38aa('0x49')]=function(_0x134cec,_0x499858,_0x5aa9d3){var _0x3b42ff={};var _0x3c4760={};var _0xb8ebfe;var _0x11b15d;return db[_0x38aa('0x2c')][_0x38aa('0x4a')]({'where':{'id':_0x134cec['params']['id']}})[_0x38aa('0x27')](handleEntityNotFound(_0x499858,null))['then'](function(_0xf555e5){if(_0xf555e5){_0xb8ebfe=_0xf555e5;_0x3c4760[_0x38aa('0x2f')]=_[_0x38aa('0x30')](db[_0x38aa('0x4b')][_0x38aa('0x2d')]);_0x3c4760[_0x38aa('0x31')]=_[_0x38aa('0x30')](_0x134cec[_0x38aa('0x31')]);_0x3c4760[_0x38aa('0x32')]=_['intersection'](_0x3c4760['model'],_0x3c4760[_0x38aa('0x31')]);_0x3b42ff[_0x38aa('0x35')]=_[_0x38aa('0x33')](_0x3c4760[_0x38aa('0x2f')],qs['fields'](_0x134cec['query']['fields']));_0x3b42ff[_0x38aa('0x35')]=_0x3b42ff['attributes'][_0x38aa('0x36')]?_0x3b42ff[_0x38aa('0x35')]:_0x3c4760[_0x38aa('0x2f')];_0x3b42ff[_0x38aa('0x4c')]=qs[_0x38aa('0x39')](_0x134cec[_0x38aa('0x31')]['sort']);_0x3b42ff[_0x38aa('0x3a')]=qs[_0x38aa('0x32')](_['pick'](_0x134cec['query'],_0x3c4760['filters']));if(_0x134cec['query']['filter']){_0x3b42ff['where']=_[_0x38aa('0x3d')](_0x3b42ff[_0x38aa('0x3a')],{'$or':_['map'](_0x3b42ff[_0x38aa('0x35')],function(_0x1235ae){var _0x10cb90={};_0x10cb90[_0x1235ae]={'$like':'%'+_0x134cec[_0x38aa('0x31')]['filter']+'%'};return _0x10cb90;})});}_0x3b42ff=_[_0x38aa('0x3d')]({},_0x3b42ff,_0x134cec[_0x38aa('0x3e')]);return _0xb8ebfe[_0x38aa('0x49')](_0x3b42ff);}})[_0x38aa('0x27')](function(_0x4f8916){if(_0x4f8916){_0x11b15d=_0x4f8916[_0x38aa('0x36')];if(!_0x134cec[_0x38aa('0x31')][_0x38aa('0x37')](_0x38aa('0x38'))){_0x3b42ff['limit']=qs['limit'](_0x134cec['query'][_0x38aa('0x1f')]);_0x3b42ff[_0x38aa('0x1d')]=qs['offset'](_0x134cec['query'][_0x38aa('0x1d')]);}return _0xb8ebfe[_0x38aa('0x49')](_0x3b42ff);}})[_0x38aa('0x27')](function(_0x2efd45){if(_0x2efd45){return _0x2efd45?{'count':_0x11b15d,'rows':_0x2efd45}:null;}})['then'](respondWithResult(_0x499858,null))[_0x38aa('0x46')](handleError(_0x499858,null));};exports[_0x38aa('0x4d')]=function(_0x5ab31d,_0x23e48f,_0x557c17){var _0x40e6a7={};var _0x35df70={};var _0x1fad48;var _0x376151;return db[_0x38aa('0x2c')]['findOne']({'where':{'id':_0x5ab31d[_0x38aa('0x44')]['id']}})[_0x38aa('0x27')](handleEntityNotFound(_0x23e48f,null))['then'](function(_0x4b65a0){if(_0x4b65a0){_0x1fad48=_0x4b65a0;_0x35df70[_0x38aa('0x2f')]=_['keys'](db[_0x38aa('0x4b')][_0x38aa('0x2d')]);_0x35df70[_0x38aa('0x31')]=_['keys'](_0x5ab31d[_0x38aa('0x31')]);_0x35df70['filters']=_[_0x38aa('0x33')](_0x35df70[_0x38aa('0x2f')],_0x35df70[_0x38aa('0x31')]);_0x40e6a7[_0x38aa('0x35')]=_['intersection'](_0x35df70[_0x38aa('0x2f')],qs[_0x38aa('0x34')](_0x5ab31d[_0x38aa('0x31')]['fields']));_0x40e6a7[_0x38aa('0x35')]=_0x40e6a7[_0x38aa('0x35')][_0x38aa('0x36')]?_0x40e6a7[_0x38aa('0x35')]:_0x35df70[_0x38aa('0x2f')];_0x40e6a7[_0x38aa('0x4c')]=qs[_0x38aa('0x39')](_0x5ab31d['query'][_0x38aa('0x39')]);_0x40e6a7[_0x38aa('0x3a')]=qs['filters'](_[_0x38aa('0x4e')](_0x5ab31d[_0x38aa('0x31')],_0x35df70[_0x38aa('0x32')]));if(_0x5ab31d[_0x38aa('0x31')][_0x38aa('0x3b')]){_0x40e6a7[_0x38aa('0x3a')]=_['merge'](_0x40e6a7['where'],{'$or':_[_0x38aa('0x2b')](_0x40e6a7[_0x38aa('0x35')],function(_0x2d2b8b){var _0x488cec={};_0x488cec[_0x2d2b8b]={'$like':'%'+_0x5ab31d[_0x38aa('0x31')]['filter']+'%'};return _0x488cec;})});}_0x40e6a7=_[_0x38aa('0x3d')]({},_0x40e6a7,_0x5ab31d['options']);return _0x1fad48['getSubjects'](_0x40e6a7);}})[_0x38aa('0x27')](function(_0x3574f7){if(_0x3574f7){_0x376151=_0x3574f7[_0x38aa('0x36')];if(!_0x5ab31d[_0x38aa('0x31')][_0x38aa('0x37')](_0x38aa('0x38'))){_0x40e6a7[_0x38aa('0x1f')]=qs[_0x38aa('0x1f')](_0x5ab31d[_0x38aa('0x31')][_0x38aa('0x1f')]);_0x40e6a7[_0x38aa('0x1d')]=qs[_0x38aa('0x1d')](_0x5ab31d[_0x38aa('0x31')][_0x38aa('0x1d')]);}return _0x1fad48[_0x38aa('0x4d')](_0x40e6a7);}})['then'](function(_0x15202e){if(_0x15202e){return _0x15202e?{'count':_0x376151,'rows':_0x15202e}:null;}})[_0x38aa('0x27')](respondWithResult(_0x23e48f,null))[_0x38aa('0x46')](handleError(_0x23e48f,null));};exports[_0x38aa('0x4f')]=function(_0x50d65d,_0x42cecc,_0x442e47){var _0x2d0a82={};var _0x54ab2a={};var _0x4c053e;var _0x19ea20;return db[_0x38aa('0x2c')][_0x38aa('0x4a')]({'where':{'id':_0x50d65d['params']['id']}})[_0x38aa('0x27')](handleEntityNotFound(_0x42cecc,null))['then'](function(_0x3028fb){if(_0x3028fb){_0x4c053e=_0x3028fb;_0x54ab2a[_0x38aa('0x2f')]=_[_0x38aa('0x30')](db[_0x38aa('0x4b')][_0x38aa('0x2d')]);_0x54ab2a[_0x38aa('0x31')]=_[_0x38aa('0x30')](_0x50d65d[_0x38aa('0x31')]);_0x54ab2a[_0x38aa('0x32')]=_[_0x38aa('0x33')](_0x54ab2a[_0x38aa('0x2f')],_0x54ab2a['query']);_0x2d0a82['attributes']=_[_0x38aa('0x33')](_0x54ab2a['model'],qs[_0x38aa('0x34')](_0x50d65d[_0x38aa('0x31')][_0x38aa('0x34')]));_0x2d0a82[_0x38aa('0x35')]=_0x2d0a82[_0x38aa('0x35')][_0x38aa('0x36')]?_0x2d0a82[_0x38aa('0x35')]:_0x54ab2a[_0x38aa('0x2f')];_0x2d0a82[_0x38aa('0x4c')]=qs[_0x38aa('0x39')](_0x50d65d[_0x38aa('0x31')]['sort']);_0x2d0a82[_0x38aa('0x3a')]=qs['filters'](_[_0x38aa('0x4e')](_0x50d65d[_0x38aa('0x31')],_0x54ab2a['filters']));if(_0x50d65d['query'][_0x38aa('0x3b')]){_0x2d0a82[_0x38aa('0x3a')]=_[_0x38aa('0x3d')](_0x2d0a82[_0x38aa('0x3a')],{'$or':_[_0x38aa('0x2b')](_0x2d0a82['attributes'],function(_0x463c5a){var _0x382ac6={};_0x382ac6[_0x463c5a]={'$like':'%'+_0x50d65d['query'][_0x38aa('0x3b')]+'%'};return _0x382ac6;})});}_0x2d0a82=_[_0x38aa('0x3d')]({},_0x2d0a82,_0x50d65d[_0x38aa('0x3e')]);return _0x4c053e[_0x38aa('0x4f')](_0x2d0a82);}})[_0x38aa('0x27')](function(_0x78205d){if(_0x78205d){_0x19ea20=_0x78205d['length'];if(!_0x50d65d[_0x38aa('0x31')]['hasOwnProperty']('nolimit')){_0x2d0a82[_0x38aa('0x1f')]=qs[_0x38aa('0x1f')](_0x50d65d[_0x38aa('0x31')]['limit']);_0x2d0a82[_0x38aa('0x1d')]=qs['offset'](_0x50d65d[_0x38aa('0x31')]['offset']);}return _0x4c053e[_0x38aa('0x4f')](_0x2d0a82);}})['then'](function(_0x230a07){if(_0x230a07){return _0x230a07?{'count':_0x19ea20,'rows':_0x230a07}:null;}})['then'](respondWithResult(_0x42cecc,null))[_0x38aa('0x46')](handleError(_0x42cecc,null));};
\ No newline at end of file
index 67e69ee..418a22d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3718=['path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','moment','bluebird','request-promise'];(function(_0xf20acc,_0x3503e4){var _0x32fe32=function(_0x40c86d){while(--_0x40c86d){_0xf20acc['push'](_0xf20acc['shift']());}};_0x32fe32(++_0x3503e4);}(_0x3718,0x14d));var _0x8371=function(_0x53eeaf,_0x1aadae){_0x53eeaf=_0x53eeaf-0x0;var _0x201b44=_0x3718[_0x53eeaf];return _0x201b44;};'use strict';var _=require(_0x8371('0x0'));var util=require(_0x8371('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8371('0x2'));var BPromise=require(_0x8371('0x3'));var rp=require(_0x8371('0x4'));var fs=require('fs');var path=require(_0x8371('0x5'));var rimraf=require(_0x8371('0x6'));var config=require(_0x8371('0x7'));var attributes=require(_0x8371('0x8'));module[_0x8371('0x9')]=function(_0x57f9c5,_0x285be6){return _0x57f9c5[_0x8371('0xa')](_0x8371('0xb'),attributes,{'tableName':_0x8371('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x393f=['rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','util','../../config/logger','api','moment','request-promise'];(function(_0x43de22,_0x1eced6){var _0x4b15ee=function(_0x6e36da){while(--_0x6e36da){_0x43de22['push'](_0x43de22['shift']());}};_0x4b15ee(++_0x1eced6);}(_0x393f,0x73));var _0xf393=function(_0x534c66,_0x40871c){_0x534c66=_0x534c66-0x0;var _0x32525d=_0x393f[_0x534c66];return _0x32525d;};'use strict';var _=require('lodash');var util=require(_0xf393('0x0'));var logger=require(_0xf393('0x1'))(_0xf393('0x2'));var moment=require(_0xf393('0x3'));var BPromise=require('bluebird');var rp=require(_0xf393('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf393('0x5'));var config=require(_0xf393('0x6'));var attributes=require(_0xf393('0x7'));module[_0xf393('0x8')]=function(_0xbef97c,_0x22b1b8){return _0xbef97c[_0xf393('0x9')](_0xf393('0xa'),attributes,{'tableName':_0xf393('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c1c65c1..387a055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c5=['rpc','jayson/promise','client','http','request','then','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0xd8132d,_0x391385){var _0x13a720=function(_0x2f887b){while(--_0x2f887b){_0xd8132d['push'](_0xd8132d['shift']());}};_0x13a720(++_0x391385);}(_0xb0c5,0x10d));var _0x5b0c=function(_0x5db2f4,_0x2157d7){_0x5db2f4=_0x5db2f4-0x0;var _0x529d9c=_0xb0c5[_0x5db2f4];return _0x529d9c;};'use strict';var _=require(_0x5b0c('0x0'));var util=require(_0x5b0c('0x1'));var moment=require(_0x5b0c('0x2'));var BPromise=require(_0x5b0c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5b0c('0x4'));var db=require(_0x5b0c('0x5'))['db'];var utils=require(_0x5b0c('0x6'));var logger=require('../../config/logger')(_0x5b0c('0x7'));var config=require('../../config/environment');var jayson=require(_0x5b0c('0x8'));var client=jayson[_0x5b0c('0x9')][_0x5b0c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x479f32,_0x182193,_0xc1f234){return new BPromise(function(_0x5b01d5,_0x27b159){return client[_0x5b0c('0xb')](_0x479f32,_0xc1f234)[_0x5b0c('0xc')](function(_0x255741){logger['info'](_0x5b0c('0xd'),_0x182193,'request\x20sent');logger[_0x5b0c('0xe')](_0x5b0c('0xf'),_0x182193,_0x5b0c('0x10'),JSON[_0x5b0c('0x11')](_0x255741));if(_0x255741[_0x5b0c('0x12')]){if(_0x255741[_0x5b0c('0x12')][_0x5b0c('0x13')]===0x1f4){logger[_0x5b0c('0x12')](_0x5b0c('0xd'),_0x182193,_0x255741[_0x5b0c('0x12')][_0x5b0c('0x14')]);return _0x27b159(_0x255741['error'][_0x5b0c('0x14')]);}logger[_0x5b0c('0x12')](_0x5b0c('0xd'),_0x182193,_0x255741['error'][_0x5b0c('0x14')]);return _0x5b01d5(_0x255741[_0x5b0c('0x12')][_0x5b0c('0x14')]);}else{logger[_0x5b0c('0x15')](_0x5b0c('0xd'),_0x182193,_0x5b0c('0x10'));_0x5b01d5(_0x255741[_0x5b0c('0x16')]['message']);}})['catch'](function(_0x3b4263){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x182193,_0x3b4263);_0x27b159(_0x3b4263);});});}
\ No newline at end of file
+var _0xa801=['request\x20sent','stringify','error','code','message','SugarcrmConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x3c600d,_0x4b5c85){var _0xd195e3=function(_0x2a2f5f){while(--_0x2a2f5f){_0x3c600d['push'](_0x3c600d['shift']());}};_0xd195e3(++_0x4b5c85);}(_0xa801,0x110));var _0x1a80=function(_0x2bd03c,_0x2e74a6){_0x2bd03c=_0x2bd03c-0x0;var _0x33e812=_0xa801[_0x2bd03c];return _0x33e812;};'use strict';var _=require(_0x1a80('0x0'));var util=require(_0x1a80('0x1'));var moment=require(_0x1a80('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a80('0x3'));var db=require(_0x1a80('0x4'))['db'];var utils=require(_0x1a80('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x1a80('0x6'));var jayson=require(_0x1a80('0x7'));var client=jayson[_0x1a80('0x8')][_0x1a80('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c09f1,_0x4f88cb,_0x16f395){return new BPromise(function(_0x28ebf8,_0x2fc0c8){return client[_0x1a80('0xa')](_0x1c09f1,_0x16f395)[_0x1a80('0xb')](function(_0xcf8317){logger[_0x1a80('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x4f88cb,'request\x20sent');logger['debug'](_0x1a80('0xd'),_0x4f88cb,_0x1a80('0xe'),JSON[_0x1a80('0xf')](_0xcf8317));if(_0xcf8317[_0x1a80('0x10')]){if(_0xcf8317[_0x1a80('0x10')][_0x1a80('0x11')]===0x1f4){logger[_0x1a80('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x4f88cb,_0xcf8317['error'][_0x1a80('0x12')]);return _0x2fc0c8(_0xcf8317[_0x1a80('0x10')][_0x1a80('0x12')]);}logger[_0x1a80('0x10')](_0x1a80('0x13'),_0x4f88cb,_0xcf8317[_0x1a80('0x10')][_0x1a80('0x12')]);return _0x28ebf8(_0xcf8317['error']['message']);}else{logger[_0x1a80('0xc')](_0x1a80('0x13'),_0x4f88cb,_0x1a80('0xe'));_0x28ebf8(_0xcf8317[_0x1a80('0x14')]['message']);}})[_0x1a80('0x15')](function(_0x190e1a){logger[_0x1a80('0x10')](_0x1a80('0x13'),_0x4f88cb,_0x190e1a);_0x2fc0c8(_0x190e1a);});});}
\ No newline at end of file
index 5efa079..4ef2f92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe78=['util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','create','put','exports'];(function(_0x29dcbe,_0x425602){var _0x2aed65=function(_0x518ac0){while(--_0x518ac0){_0x29dcbe['push'](_0x29dcbe['shift']());}};_0x2aed65(++_0x425602);}(_0xbe78,0x168));var _0x8be7=function(_0x29c37f,_0x32bb1d){_0x29c37f=_0x29c37f-0x0;var _0x3c2495=_0xbe78[_0x29c37f];return _0x3c2495;};'use strict';var multer=require('multer');var util=require(_0x8be7('0x0'));var path=require(_0x8be7('0x1'));var timeout=require(_0x8be7('0x2'));var express=require('express');var router=express[_0x8be7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8be7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8be7('0x5'));var controller=require('./intSugarcrmField.controller');router[_0x8be7('0x6')]('/',auth['isAuthenticated'](),controller[_0x8be7('0x7')]);router[_0x8be7('0x6')](_0x8be7('0x8'),auth[_0x8be7('0x9')](),controller[_0x8be7('0xa')]);router[_0x8be7('0xb')]('/',auth[_0x8be7('0x9')](),controller[_0x8be7('0xc')]);router[_0x8be7('0xd')](_0x8be7('0x8'),auth[_0x8be7('0x9')](),controller['update']);router['delete'](_0x8be7('0x8'),auth['isAuthenticated'](),controller['destroy']);module[_0x8be7('0xe')]=router;
\ No newline at end of file
+var _0x52dd=['update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','put'];(function(_0x12dd11,_0x52b882){var _0x3a502b=function(_0x1a660d){while(--_0x1a660d){_0x12dd11['push'](_0x12dd11['shift']());}};_0x3a502b(++_0x52b882);}(_0x52dd,0x136));var _0xd52d=function(_0x26b4b6,_0x29b33b){_0x26b4b6=_0x26b4b6-0x0;var _0x16e838=_0x52dd[_0x26b4b6];return _0x16e838;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd52d('0x0'));var timeout=require(_0xd52d('0x1'));var express=require(_0xd52d('0x2'));var router=express[_0xd52d('0x3')]();var fs_extra=require(_0xd52d('0x4'));var auth=require(_0xd52d('0x5'));var interaction=require(_0xd52d('0x6'));var config=require('../../config/environment');var controller=require('./intSugarcrmField.controller');router[_0xd52d('0x7')]('/',auth[_0xd52d('0x8')](),controller[_0xd52d('0x9')]);router['get'](_0xd52d('0xa'),auth['isAuthenticated'](),controller[_0xd52d('0xb')]);router[_0xd52d('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xd52d('0xd')]('/:id',auth[_0xd52d('0x8')](),controller[_0xd52d('0xe')]);router[_0xd52d('0xf')](_0xd52d('0xa'),auth['isAuthenticated'](),controller[_0xd52d('0x10')]);module[_0xd52d('0x11')]=router;
\ No newline at end of file
index 75d0b89..1a07439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9012=['STRING','BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x8d913d,_0x1f5c31){var _0x22359d=function(_0x5b1c4d){while(--_0x5b1c4d){_0x8d913d['push'](_0x8d913d['shift']());}};_0x22359d(++_0x1f5c31);}(_0x9012,0x1b2));var _0x2901=function(_0x4fa0ea,_0x2cd534){_0x4fa0ea=_0x4fa0ea-0x0;var _0x51d027=_0x9012[_0x4fa0ea];return _0x51d027;};'use strict';var Sequelize=require('sequelize');module[_0x2901('0x0')]={'type':{'type':Sequelize[_0x2901('0x1')](_0x2901('0x2'),_0x2901('0x3'),_0x2901('0x4'),_0x2901('0x5'),_0x2901('0x6')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x2901('0x7')]},'keyType':{'type':Sequelize[_0x2901('0x1')](_0x2901('0x2'),_0x2901('0x3'),_0x2901('0x4'))},'keyContent':{'type':Sequelize[_0x2901('0x7')]},'idField':{'type':Sequelize[_0x2901('0x7')]},'nameField':{'type':Sequelize[_0x2901('0x7')]},'customField':{'type':Sequelize[_0x2901('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2901('0x7')]}};
\ No newline at end of file
+var _0xe1fe=['variable','BOOLEAN','sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING'];(function(_0x43be32,_0x1a01ed){var _0x13fe61=function(_0x252e34){while(--_0x252e34){_0x43be32['push'](_0x43be32['shift']());}};_0x13fe61(++_0x1a01ed);}(_0xe1fe,0xd4));var _0xee1f=function(_0x34f02e,_0x6cde07){_0x34f02e=_0x34f02e-0x0;var _0x60e0e4=_0xe1fe[_0x34f02e];return _0x60e0e4;};'use strict';var Sequelize=require(_0xee1f('0x0'));module[_0xee1f('0x1')]={'type':{'type':Sequelize[_0xee1f('0x2')](_0xee1f('0x3'),'variable',_0xee1f('0x4'),_0xee1f('0x5'),_0xee1f('0x6')),'defaultValue':_0xee1f('0x3')},'content':{'type':Sequelize[_0xee1f('0x7')]},'key':{'type':Sequelize[_0xee1f('0x7')]},'keyType':{'type':Sequelize[_0xee1f('0x2')]('string',_0xee1f('0x8'),_0xee1f('0x4'))},'keyContent':{'type':Sequelize[_0xee1f('0x7')]},'idField':{'type':Sequelize[_0xee1f('0x7')]},'nameField':{'type':Sequelize[_0xee1f('0x7')]},'customField':{'type':Sequelize[_0xee1f('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index bafc542..6da4185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fd7=['fast-json-patch','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','name','send','index','SugarcrmField','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','keys','length','find','create','body','update','params','eml-format','zip-dir'];(function(_0x3880ad,_0x141fda){var _0xed4f7=function(_0x5a71fb){while(--_0x5a71fb){_0x3880ad['push'](_0x3880ad['shift']());}};_0xed4f7(++_0x141fda);}(_0x2fd7,0x11a));var _0x72fd=function(_0x3c8e3e,_0x1734ec){_0x3c8e3e=_0x3c8e3e-0x0;var _0x574b4e=_0x2fd7[_0x3c8e3e];return _0x574b4e;};'use strict';var emlformat=require(_0x72fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x72fd('0x1'));var jsonpatch=require(_0x72fd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x72fd('0x3'));var sox=require(_0x72fd('0x4'));var csv=require(_0x72fd('0x5'));var ejs=require(_0x72fd('0x6'));var fs=require('fs');var fs_extra=require(_0x72fd('0x7'));var _=require(_0x72fd('0x8'));var squel=require(_0x72fd('0x9'));var crypto=require(_0x72fd('0xa'));var jsforce=require(_0x72fd('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x72fd('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x72fd('0xd'));var qs=require(_0x72fd('0xe'));var as=require(_0x72fd('0xf'));var hardwareService=require(_0x72fd('0x10'));var logger=require(_0x72fd('0x11'))('api');var utils=require(_0x72fd('0x12'));var config=require(_0x72fd('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x72fd('0x14'))['db'];function respondWithStatusCode(_0x4d6e5e,_0x5170a9){_0x5170a9=_0x5170a9||0xcc;return function(_0x3f717e){if(_0x3f717e){return _0x4d6e5e[_0x72fd('0x15')](_0x5170a9);}return _0x4d6e5e[_0x72fd('0x16')](_0x5170a9)[_0x72fd('0x17')]();};}function respondWithResult(_0x4706d6,_0x492a85){_0x492a85=_0x492a85||0xc8;return function(_0x307d2e){if(_0x307d2e){return _0x4706d6[_0x72fd('0x16')](_0x492a85)[_0x72fd('0x18')](_0x307d2e);}};}function respondWithFilteredResult(_0x40357f,_0x149b7c){return function(_0x25b8fc){if(_0x25b8fc){var _0x2f3505=typeof _0x149b7c[_0x72fd('0x19')]===_0x72fd('0x1a')&&typeof _0x149b7c[_0x72fd('0x1b')]===_0x72fd('0x1a');var _0x4fe8ee=_0x25b8fc[_0x72fd('0x1c')];var _0x4a9661=_0x2f3505?0x0:_0x149b7c[_0x72fd('0x19')];var _0x4b7c52=_0x2f3505?_0x25b8fc[_0x72fd('0x1c')]:_0x149b7c[_0x72fd('0x19')]+_0x149b7c[_0x72fd('0x1b')];var _0x2c9ea8;if(_0x4b7c52>=_0x4fe8ee){_0x4b7c52=_0x4fe8ee;_0x2c9ea8=0xc8;}else{_0x2c9ea8=0xce;}_0x40357f[_0x72fd('0x16')](_0x2c9ea8);return _0x40357f[_0x72fd('0x1d')]('Content-Range',_0x4a9661+'-'+_0x4b7c52+'/'+_0x4fe8ee)[_0x72fd('0x18')](_0x25b8fc);}return null;};}function patchUpdates(_0x37b562){return function(_0x3a72db){try{jsonpatch[_0x72fd('0x1e')](_0x3a72db,_0x37b562,!![]);}catch(_0x35a23c){return BPromise[_0x72fd('0x1f')](_0x35a23c);}return _0x3a72db[_0x72fd('0x20')]();};}function saveUpdates(_0x3b8e15,_0x2f76d1){return function(_0x11c4fd){if(_0x11c4fd){return _0x11c4fd['update'](_0x3b8e15)[_0x72fd('0x21')](function(_0x2098ee){return _0x2098ee;});}return null;};}function removeEntity(_0x44c386,_0x22a134){return function(_0x627241){if(_0x627241){return _0x627241[_0x72fd('0x22')]()[_0x72fd('0x21')](function(){_0x44c386[_0x72fd('0x16')](0xcc)[_0x72fd('0x17')]();});}};}function handleEntityNotFound(_0x15f914,_0x1c8274){return function(_0x2094eb){if(!_0x2094eb){_0x15f914[_0x72fd('0x15')](0x194);}return _0x2094eb;};}function handleError(_0x471db9,_0x3ed002){_0x3ed002=_0x3ed002||0x1f4;return function(_0x34106b){logger[_0x72fd('0x23')](_0x34106b['stack']);if(_0x34106b[_0x72fd('0x24')]){delete _0x34106b[_0x72fd('0x24')];}_0x471db9['status'](_0x3ed002)[_0x72fd('0x25')](_0x34106b);};}exports[_0x72fd('0x26')]=function(_0x37d512,_0x37b1ba){var _0x5ebd22={},_0x3d8206={},_0x2401b2={'count':0x0,'rows':[]};var _0x95588a=_['map'](db[_0x72fd('0x27')][_0x72fd('0x28')],function(_0x46a2dc){return{'name':_0x46a2dc[_0x72fd('0x29')],'type':_0x46a2dc[_0x72fd('0x2a')]['key']};});_0x3d8206['model']=_[_0x72fd('0x2b')](_0x95588a,_0x72fd('0x24'));_0x3d8206[_0x72fd('0x2c')]=_['keys'](_0x37d512[_0x72fd('0x2c')]);_0x3d8206[_0x72fd('0x2d')]=_[_0x72fd('0x2e')](_0x3d8206[_0x72fd('0x2f')],_0x3d8206[_0x72fd('0x2c')]);_0x5ebd22[_0x72fd('0x30')]=_[_0x72fd('0x2e')](_0x3d8206[_0x72fd('0x2f')],qs[_0x72fd('0x31')](_0x37d512[_0x72fd('0x2c')]['fields']));_0x5ebd22[_0x72fd('0x30')]=_0x5ebd22[_0x72fd('0x30')]['length']?_0x5ebd22[_0x72fd('0x30')]:_0x3d8206[_0x72fd('0x2f')];if(!_0x37d512[_0x72fd('0x2c')][_0x72fd('0x32')](_0x72fd('0x33'))){_0x5ebd22['limit']=qs[_0x72fd('0x1b')](_0x37d512[_0x72fd('0x2c')]['limit']);_0x5ebd22[_0x72fd('0x19')]=qs['offset'](_0x37d512[_0x72fd('0x2c')]['offset']);}_0x5ebd22[_0x72fd('0x34')]=qs[_0x72fd('0x35')](_0x37d512[_0x72fd('0x2c')]['sort']);_0x5ebd22[_0x72fd('0x36')]=qs['filters'](_['pick'](_0x37d512['query'],_0x3d8206['filters']),_0x95588a);if(_0x37d512[_0x72fd('0x2c')][_0x72fd('0x37')]){_0x5ebd22[_0x72fd('0x36')]=_[_0x72fd('0x38')](_0x5ebd22[_0x72fd('0x36')],{'$or':_[_0x72fd('0x2b')](_0x95588a,function(_0x409bf8){if(_0x409bf8[_0x72fd('0x2a')]!==_0x72fd('0x39')){var _0x1a5bf8={};_0x1a5bf8[_0x409bf8['name']]={'$like':'%'+_0x37d512[_0x72fd('0x2c')][_0x72fd('0x37')]+'%'};return _0x1a5bf8;}})});}_0x5ebd22=_['merge']({},_0x5ebd22,_0x37d512[_0x72fd('0x3a')]);var _0x4441d9={'where':_0x5ebd22[_0x72fd('0x36')]};return db['SugarcrmField'][_0x72fd('0x1c')](_0x4441d9)[_0x72fd('0x21')](function(_0xd62f1e){_0x2401b2[_0x72fd('0x1c')]=_0xd62f1e;if(_0x37d512['query'][_0x72fd('0x3b')]){_0x5ebd22[_0x72fd('0x3c')]=[{'all':!![]}];}return db['SugarcrmField']['findAll'](_0x5ebd22);})[_0x72fd('0x21')](function(_0x1a7ad8){_0x2401b2[_0x72fd('0x3d')]=_0x1a7ad8;return _0x2401b2;})['then'](respondWithFilteredResult(_0x37b1ba,_0x5ebd22))[_0x72fd('0x3e')](handleError(_0x37b1ba,null));};exports[_0x72fd('0x3f')]=function(_0x52e4b7,_0x1fd708){var _0x31c830={'raw':!![],'where':{'id':_0x52e4b7['params']['id']}},_0x335347={};_0x335347['model']=_[_0x72fd('0x40')](db[_0x72fd('0x27')][_0x72fd('0x28')]);_0x335347[_0x72fd('0x2c')]=_['keys'](_0x52e4b7[_0x72fd('0x2c')]);_0x335347[_0x72fd('0x2d')]=_[_0x72fd('0x2e')](_0x335347[_0x72fd('0x2f')],_0x335347[_0x72fd('0x2c')]);_0x31c830[_0x72fd('0x30')]=_[_0x72fd('0x2e')](_0x335347['model'],qs[_0x72fd('0x31')](_0x52e4b7[_0x72fd('0x2c')][_0x72fd('0x31')]));_0x31c830[_0x72fd('0x30')]=_0x31c830[_0x72fd('0x30')][_0x72fd('0x41')]?_0x31c830[_0x72fd('0x30')]:_0x335347[_0x72fd('0x2f')];if(_0x52e4b7[_0x72fd('0x2c')][_0x72fd('0x3b')]){_0x31c830[_0x72fd('0x3c')]=[{'all':!![]}];}_0x31c830=_['merge']({},_0x31c830,_0x52e4b7[_0x72fd('0x3a')]);return db['SugarcrmField'][_0x72fd('0x42')](_0x31c830)[_0x72fd('0x21')](handleEntityNotFound(_0x1fd708,null))[_0x72fd('0x21')](respondWithResult(_0x1fd708,null))[_0x72fd('0x3e')](handleError(_0x1fd708,null));};exports[_0x72fd('0x43')]=function(_0x158b6c,_0x493ffa){return db['SugarcrmField']['create'](_0x158b6c[_0x72fd('0x44')],{})[_0x72fd('0x21')](respondWithResult(_0x493ffa,0xc9))[_0x72fd('0x3e')](handleError(_0x493ffa,null));};exports[_0x72fd('0x45')]=function(_0x248589,_0x48c644){if(_0x248589[_0x72fd('0x44')]['id']){delete _0x248589[_0x72fd('0x44')]['id'];}return db[_0x72fd('0x27')][_0x72fd('0x42')]({'where':{'id':_0x248589[_0x72fd('0x46')]['id']}})[_0x72fd('0x21')](handleEntityNotFound(_0x48c644,null))[_0x72fd('0x21')](saveUpdates(_0x248589[_0x72fd('0x44')],null))[_0x72fd('0x21')](respondWithResult(_0x48c644,null))[_0x72fd('0x3e')](handleError(_0x48c644,null));};exports[_0x72fd('0x22')]=function(_0x406ff8,_0x260d37){return db[_0x72fd('0x27')][_0x72fd('0x42')]({'where':{'id':_0x406ff8[_0x72fd('0x46')]['id']}})['then'](handleEntityNotFound(_0x260d37,null))[_0x72fd('0x21')](removeEntity(_0x260d37,null))[_0x72fd('0x3e')](handleError(_0x260d37,null));};
\ No newline at end of file
+var _0x59b3=['map','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','rows','params','find','catch','create','body','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','then','destroy','error','name','send','SugarcrmField','rawAttributes','fieldName','type','key'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0x59b3,0x168));var _0x359b=function(_0x38325,_0x262d3c){_0x38325=_0x38325-0x0;var _0x2994d6=_0x59b3[_0x38325];return _0x2994d6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x359b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x359b('0x1'));var rp=require('request-promise');var moment=require(_0x359b('0x2'));var BPromise=require(_0x359b('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x359b('0x4'));var sox=require(_0x359b('0x5'));var csv=require(_0x359b('0x6'));var ejs=require(_0x359b('0x7'));var fs=require('fs');var fs_extra=require(_0x359b('0x8'));var _=require(_0x359b('0x9'));var squel=require(_0x359b('0xa'));var crypto=require('crypto');var jsforce=require(_0x359b('0xb'));var deskjs=require(_0x359b('0xc'));var toCsv=require(_0x359b('0x6'));var querystring=require('querystring');var Papa=require(_0x359b('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x359b('0xe'));var as=require(_0x359b('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x359b('0x10'))(_0x359b('0x11'));var utils=require(_0x359b('0x12'));var config=require(_0x359b('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x359b('0x14'))['db'];function respondWithStatusCode(_0x405de1,_0x192110){_0x192110=_0x192110||0xcc;return function(_0x5b85f3){if(_0x5b85f3){return _0x405de1[_0x359b('0x15')](_0x192110);}return _0x405de1[_0x359b('0x16')](_0x192110)[_0x359b('0x17')]();};}function respondWithResult(_0x258586,_0x3bb5ac){_0x3bb5ac=_0x3bb5ac||0xc8;return function(_0x4a1e81){if(_0x4a1e81){return _0x258586[_0x359b('0x16')](_0x3bb5ac)[_0x359b('0x18')](_0x4a1e81);}};}function respondWithFilteredResult(_0x51a1b3,_0x5b3fd2){return function(_0x359f1c){if(_0x359f1c){var _0x2dfb4f=typeof _0x5b3fd2[_0x359b('0x19')]===_0x359b('0x1a')&&typeof _0x5b3fd2['limit']==='undefined';var _0x759d09=_0x359f1c['count'];var _0x46f59c=_0x2dfb4f?0x0:_0x5b3fd2[_0x359b('0x19')];var _0x33c89b=_0x2dfb4f?_0x359f1c[_0x359b('0x1b')]:_0x5b3fd2[_0x359b('0x19')]+_0x5b3fd2[_0x359b('0x1c')];var _0x2bce80;if(_0x33c89b>=_0x759d09){_0x33c89b=_0x759d09;_0x2bce80=0xc8;}else{_0x2bce80=0xce;}_0x51a1b3['status'](_0x2bce80);return _0x51a1b3['set'](_0x359b('0x1d'),_0x46f59c+'-'+_0x33c89b+'/'+_0x759d09)[_0x359b('0x18')](_0x359f1c);}return null;};}function patchUpdates(_0x4527cf){return function(_0x365996){try{jsonpatch['apply'](_0x365996,_0x4527cf,!![]);}catch(_0x3c7152){return BPromise[_0x359b('0x1e')](_0x3c7152);}return _0x365996[_0x359b('0x1f')]();};}function saveUpdates(_0x34d6df,_0x517a0f){return function(_0x4235b9){if(_0x4235b9){return _0x4235b9['update'](_0x34d6df)[_0x359b('0x20')](function(_0x2af434){return _0x2af434;});}return null;};}function removeEntity(_0x50debc,_0x26a32e){return function(_0x47bc2a){if(_0x47bc2a){return _0x47bc2a[_0x359b('0x21')]()[_0x359b('0x20')](function(){_0x50debc[_0x359b('0x16')](0xcc)[_0x359b('0x17')]();});}};}function handleEntityNotFound(_0x3773dc,_0x2db645){return function(_0x54eaf9){if(!_0x54eaf9){_0x3773dc['sendStatus'](0x194);}return _0x54eaf9;};}function handleError(_0x1c3abc,_0x178812){_0x178812=_0x178812||0x1f4;return function(_0x4c6a3e){logger[_0x359b('0x22')](_0x4c6a3e['stack']);if(_0x4c6a3e[_0x359b('0x23')]){delete _0x4c6a3e[_0x359b('0x23')];}_0x1c3abc[_0x359b('0x16')](_0x178812)[_0x359b('0x24')](_0x4c6a3e);};}exports['index']=function(_0x55c20a,_0x32dbe1){var _0xe98126={},_0x596095={},_0x11e90f={'count':0x0,'rows':[]};var _0x288097=_['map'](db[_0x359b('0x25')][_0x359b('0x26')],function(_0x511191){return{'name':_0x511191[_0x359b('0x27')],'type':_0x511191[_0x359b('0x28')][_0x359b('0x29')]};});_0x596095['model']=_[_0x359b('0x2a')](_0x288097,_0x359b('0x23'));_0x596095[_0x359b('0x2b')]=_[_0x359b('0x2c')](_0x55c20a[_0x359b('0x2b')]);_0x596095['filters']=_[_0x359b('0x2d')](_0x596095['model'],_0x596095['query']);_0xe98126[_0x359b('0x2e')]=_[_0x359b('0x2d')](_0x596095[_0x359b('0x2f')],qs[_0x359b('0x30')](_0x55c20a['query']['fields']));_0xe98126[_0x359b('0x2e')]=_0xe98126[_0x359b('0x2e')][_0x359b('0x31')]?_0xe98126[_0x359b('0x2e')]:_0x596095[_0x359b('0x2f')];if(!_0x55c20a['query'][_0x359b('0x32')]('nolimit')){_0xe98126[_0x359b('0x1c')]=qs[_0x359b('0x1c')](_0x55c20a['query'][_0x359b('0x1c')]);_0xe98126[_0x359b('0x19')]=qs[_0x359b('0x19')](_0x55c20a[_0x359b('0x2b')][_0x359b('0x19')]);}_0xe98126[_0x359b('0x33')]=qs[_0x359b('0x34')](_0x55c20a[_0x359b('0x2b')][_0x359b('0x34')]);_0xe98126[_0x359b('0x35')]=qs[_0x359b('0x36')](_[_0x359b('0x37')](_0x55c20a[_0x359b('0x2b')],_0x596095[_0x359b('0x36')]),_0x288097);if(_0x55c20a[_0x359b('0x2b')][_0x359b('0x38')]){_0xe98126['where']=_[_0x359b('0x39')](_0xe98126[_0x359b('0x35')],{'$or':_[_0x359b('0x2a')](_0x288097,function(_0x48304d){if(_0x48304d[_0x359b('0x28')]!==_0x359b('0x3a')){var _0x16e6b4={};_0x16e6b4[_0x48304d['name']]={'$like':'%'+_0x55c20a[_0x359b('0x2b')][_0x359b('0x38')]+'%'};return _0x16e6b4;}})});}_0xe98126=_[_0x359b('0x39')]({},_0xe98126,_0x55c20a[_0x359b('0x3b')]);var _0x18b4af={'where':_0xe98126[_0x359b('0x35')]};return db[_0x359b('0x25')][_0x359b('0x1b')](_0x18b4af)[_0x359b('0x20')](function(_0x13bba1){_0x11e90f[_0x359b('0x1b')]=_0x13bba1;if(_0x55c20a[_0x359b('0x2b')]['includeAll']){_0xe98126[_0x359b('0x3c')]=[{'all':!![]}];}return db[_0x359b('0x25')]['findAll'](_0xe98126);})['then'](function(_0x5479ce){_0x11e90f[_0x359b('0x3d')]=_0x5479ce;return _0x11e90f;})[_0x359b('0x20')](respondWithFilteredResult(_0x32dbe1,_0xe98126))['catch'](handleError(_0x32dbe1,null));};exports['show']=function(_0x1e4bc2,_0x229347){var _0x4da5c4={'raw':!![],'where':{'id':_0x1e4bc2[_0x359b('0x3e')]['id']}},_0x51c2ae={};_0x51c2ae[_0x359b('0x2f')]=_[_0x359b('0x2c')](db[_0x359b('0x25')][_0x359b('0x26')]);_0x51c2ae[_0x359b('0x2b')]=_[_0x359b('0x2c')](_0x1e4bc2['query']);_0x51c2ae['filters']=_[_0x359b('0x2d')](_0x51c2ae[_0x359b('0x2f')],_0x51c2ae[_0x359b('0x2b')]);_0x4da5c4['attributes']=_[_0x359b('0x2d')](_0x51c2ae['model'],qs[_0x359b('0x30')](_0x1e4bc2[_0x359b('0x2b')]['fields']));_0x4da5c4[_0x359b('0x2e')]=_0x4da5c4[_0x359b('0x2e')]['length']?_0x4da5c4[_0x359b('0x2e')]:_0x51c2ae[_0x359b('0x2f')];if(_0x1e4bc2[_0x359b('0x2b')]['includeAll']){_0x4da5c4[_0x359b('0x3c')]=[{'all':!![]}];}_0x4da5c4=_[_0x359b('0x39')]({},_0x4da5c4,_0x1e4bc2[_0x359b('0x3b')]);return db['SugarcrmField'][_0x359b('0x3f')](_0x4da5c4)[_0x359b('0x20')](handleEntityNotFound(_0x229347,null))['then'](respondWithResult(_0x229347,null))[_0x359b('0x40')](handleError(_0x229347,null));};exports[_0x359b('0x41')]=function(_0x6ce751,_0x5e9510){return db[_0x359b('0x25')][_0x359b('0x41')](_0x6ce751[_0x359b('0x42')],{})[_0x359b('0x20')](respondWithResult(_0x5e9510,0xc9))[_0x359b('0x40')](handleError(_0x5e9510,null));};exports['update']=function(_0x1406c2,_0x2aae12){if(_0x1406c2[_0x359b('0x42')]['id']){delete _0x1406c2[_0x359b('0x42')]['id'];}return db['SugarcrmField']['find']({'where':{'id':_0x1406c2[_0x359b('0x3e')]['id']}})[_0x359b('0x20')](handleEntityNotFound(_0x2aae12,null))[_0x359b('0x20')](saveUpdates(_0x1406c2[_0x359b('0x42')],null))['then'](respondWithResult(_0x2aae12,null))[_0x359b('0x40')](handleError(_0x2aae12,null));};exports[_0x359b('0x21')]=function(_0x51dabf,_0x267371){return db['SugarcrmField']['find']({'where':{'id':_0x51dabf['params']['id']}})[_0x359b('0x20')](handleEntityNotFound(_0x267371,null))[_0x359b('0x20')](removeEntity(_0x267371,null))[_0x359b('0x40')](handleError(_0x267371,null));};
\ No newline at end of file
index 714df10..ac3132d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x239d=['SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define'];(function(_0x122fee,_0x42134b){var _0x2a6c58=function(_0x2b511a){while(--_0x2b511a){_0x122fee['push'](_0x122fee['shift']());}};_0x2a6c58(++_0x42134b);}(_0x239d,0x1e5));var _0xd239=function(_0x2fa81f,_0x497703){_0x2fa81f=_0x2fa81f-0x0;var _0x58c755=_0x239d[_0x2fa81f];return _0x58c755;};'use strict';var _=require(_0xd239('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd239('0x1'));var moment=require(_0xd239('0x2'));var BPromise=require(_0xd239('0x3'));var rp=require(_0xd239('0x4'));var fs=require('fs');var path=require(_0xd239('0x5'));var rimraf=require(_0xd239('0x6'));var config=require(_0xd239('0x7'));var attributes=require(_0xd239('0x8'));module[_0xd239('0x9')]=function(_0x3d846f,_0x46704c){return _0x3d846f[_0xd239('0xa')](_0xd239('0xb'),attributes,{'tableName':_0xd239('0xc'),'paranoid':![],'indexes':[{'name':_0xd239('0xd'),'fields':[_0xd239('0xe'),_0xd239('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2845=['request-promise','path','rimraf','./intSugarcrmField.attributes','exports','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','util','api','moment'];(function(_0x4fe894,_0xa84087){var _0x23d5c6=function(_0x32c714){while(--_0x32c714){_0x4fe894['push'](_0x4fe894['shift']());}};_0x23d5c6(++_0xa84087);}(_0x2845,0x101));var _0x5284=function(_0x2138fa,_0x499c32){_0x2138fa=_0x2138fa-0x0;var _0x49a18b=_0x2845[_0x2138fa];return _0x49a18b;};'use strict';var _=require('lodash');var util=require(_0x5284('0x0'));var logger=require('../../config/logger')(_0x5284('0x1'));var moment=require(_0x5284('0x2'));var BPromise=require('bluebird');var rp=require(_0x5284('0x3'));var fs=require('fs');var path=require(_0x5284('0x4'));var rimraf=require(_0x5284('0x5'));var config=require('../../config/environment');var attributes=require(_0x5284('0x6'));module[_0x5284('0x7')]=function(_0x117580,_0x3f8cd0){return _0x117580['define'](_0x5284('0x8'),attributes,{'tableName':_0x5284('0x9'),'paranoid':![],'indexes':[{'name':_0x5284('0xa'),'fields':[_0x5284('0xb'),_0x5284('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1ae1b1a..a3fbf73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8054=['debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SugarcrmField,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8054,0x1c0));var _0x4805=function(_0x40e2d4,_0x55b5a8){_0x40e2d4=_0x40e2d4-0x0;var _0x204346=_0x8054[_0x40e2d4];return _0x204346;};'use strict';var _=require(_0x4805('0x0'));var util=require(_0x4805('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4805('0x2'));var fs=require('fs');var Redis=require(_0x4805('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4805('0x4'));var logger=require(_0x4805('0x5'))(_0x4805('0x6'));var config=require(_0x4805('0x7'));var jayson=require(_0x4805('0x8'));var client=jayson[_0x4805('0x9')][_0x4805('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55b8db,_0x1f0a1b,_0x357235){return new BPromise(function(_0x508ea3,_0x3d2cfa){return client['request'](_0x55b8db,_0x357235)[_0x4805('0xb')](function(_0x38a0ae){logger[_0x4805('0xc')](_0x4805('0xd'),_0x1f0a1b,'request\x20sent');logger[_0x4805('0xe')](_0x4805('0xf'),_0x1f0a1b,'request\x20sent',JSON[_0x4805('0x10')](_0x38a0ae));if(_0x38a0ae[_0x4805('0x11')]){if(_0x38a0ae['error'][_0x4805('0x12')]===0x1f4){logger[_0x4805('0x11')](_0x4805('0xd'),_0x1f0a1b,_0x38a0ae[_0x4805('0x11')][_0x4805('0x13')]);return _0x3d2cfa(_0x38a0ae['error'][_0x4805('0x13')]);}logger[_0x4805('0x11')](_0x4805('0xd'),_0x1f0a1b,_0x38a0ae[_0x4805('0x11')][_0x4805('0x13')]);return _0x508ea3(_0x38a0ae[_0x4805('0x11')][_0x4805('0x13')]);}else{logger[_0x4805('0xc')](_0x4805('0xd'),_0x1f0a1b,'request\x20sent');_0x508ea3(_0x38a0ae[_0x4805('0x14')][_0x4805('0x13')]);}})[_0x4805('0x15')](function(_0x2921cb){logger[_0x4805('0x11')](_0x4805('0xd'),_0x1f0a1b,_0x2921cb);_0x3d2cfa(_0x2921cb);});});}
\ No newline at end of file
+var _0xa2f3=['request\x20sent','stringify','error','code','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','request','then','info','SugarcrmField,\x20%s,\x20%s'];(function(_0xdaa1ec,_0x764af2){var _0x45498d=function(_0x5e1b11){while(--_0x5e1b11){_0xdaa1ec['push'](_0xdaa1ec['shift']());}};_0x45498d(++_0x764af2);}(_0xa2f3,0x1af));var _0x3a2f=function(_0x44b0a1,_0x2b99ca){_0x44b0a1=_0x44b0a1-0x0;var _0x2ba53e=_0xa2f3[_0x44b0a1];return _0x2ba53e;};'use strict';var _=require(_0x3a2f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3a2f('0x1'));var rs=require(_0x3a2f('0x2'));var fs=require('fs');var Redis=require(_0x3a2f('0x3'));var db=require(_0x3a2f('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x3a2f('0x5'));var client=jayson[_0x3a2f('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x185acc,_0x3cfae6,_0x32a15f){return new BPromise(function(_0x5476e4,_0x4489e8){return client[_0x3a2f('0x7')](_0x185acc,_0x32a15f)[_0x3a2f('0x8')](function(_0x1fd4dd){logger[_0x3a2f('0x9')](_0x3a2f('0xa'),_0x3cfae6,_0x3a2f('0xb'));logger['debug']('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x3cfae6,_0x3a2f('0xb'),JSON[_0x3a2f('0xc')](_0x1fd4dd));if(_0x1fd4dd[_0x3a2f('0xd')]){if(_0x1fd4dd[_0x3a2f('0xd')][_0x3a2f('0xe')]===0x1f4){logger[_0x3a2f('0xd')](_0x3a2f('0xa'),_0x3cfae6,_0x1fd4dd[_0x3a2f('0xd')][_0x3a2f('0xf')]);return _0x4489e8(_0x1fd4dd['error']['message']);}logger[_0x3a2f('0xd')](_0x3a2f('0xa'),_0x3cfae6,_0x1fd4dd[_0x3a2f('0xd')]['message']);return _0x5476e4(_0x1fd4dd['error']['message']);}else{logger[_0x3a2f('0x9')]('SugarcrmField,\x20%s,\x20%s',_0x3cfae6,_0x3a2f('0xb'));_0x5476e4(_0x1fd4dd[_0x3a2f('0x10')][_0x3a2f('0xf')]);}})['catch'](function(_0x59e463){logger[_0x3a2f('0xd')](_0x3a2f('0xa'),_0x3cfae6,_0x59e463);_0x4489e8(_0x59e463);});});}
\ No newline at end of file
index f0cbbbd..8c3f5cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d3e=['show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','/:id','isAuthenticated'];(function(_0x2e9f25,_0x297e94){var _0x262d37=function(_0x2d6eff){while(--_0x2d6eff){_0x2e9f25['push'](_0x2e9f25['shift']());}};_0x262d37(++_0x297e94);}(_0x9d3e,0xd5));var _0xe9d3=function(_0x39118c,_0x1a03ed){_0x39118c=_0x39118c-0x0;var _0x2be2b0=_0x9d3e[_0x39118c];return _0x2be2b0;};'use strict';var multer=require(_0xe9d3('0x0'));var util=require('util');var path=require(_0xe9d3('0x1'));var timeout=require('connect-timeout');var express=require(_0xe9d3('0x2'));var router=express[_0xe9d3('0x3')]();var fs_extra=require(_0xe9d3('0x4'));var auth=require(_0xe9d3('0x5'));var interaction=require(_0xe9d3('0x6'));var config=require(_0xe9d3('0x7'));var controller=require(_0xe9d3('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xe9d3('0x9')](_0xe9d3('0xa'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0xc')]);router[_0xe9d3('0x9')](_0xe9d3('0xd'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0xe')]);router[_0xe9d3('0x9')](_0xe9d3('0xf'),auth['isAuthenticated'](),controller[_0xe9d3('0x10')]);router['post']('/',auth[_0xe9d3('0xb')](),controller[_0xe9d3('0x11')]);router[_0xe9d3('0x12')](_0xe9d3('0xd'),auth['isAuthenticated'](),controller[_0xe9d3('0x13')]);router[_0xe9d3('0x14')](_0xe9d3('0xa'),auth['isAuthenticated'](),controller[_0xe9d3('0x15')]);router[_0xe9d3('0x16')](_0xe9d3('0xa'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0x17')]);module[_0xe9d3('0x18')]=router;
\ No newline at end of file
+var _0xda65=['update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields','post','/:id/configurations','addConfiguration','put'];(function(_0x596085,_0x4b8c8b){var _0x1ea990=function(_0x3e285c){while(--_0x3e285c){_0x596085['push'](_0x596085['shift']());}};_0x1ea990(++_0x4b8c8b);}(_0xda65,0x1d0));var _0x5da6=function(_0x3316a9,_0x4977d4){_0x3316a9=_0x3316a9-0x0;var _0x10f42d=_0xda65[_0x3316a9];return _0x10f42d;};'use strict';var multer=require(_0x5da6('0x0'));var util=require(_0x5da6('0x1'));var path=require(_0x5da6('0x2'));var timeout=require('connect-timeout');var express=require(_0x5da6('0x3'));var router=express[_0x5da6('0x4')]();var fs_extra=require(_0x5da6('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5da6('0x6'));var controller=require(_0x5da6('0x7'));router[_0x5da6('0x8')]('/',auth[_0x5da6('0x9')](),controller[_0x5da6('0xa')]);router['get'](_0x5da6('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x5da6('0x8')]('/:id/configurations',auth[_0x5da6('0x9')](),controller[_0x5da6('0xc')]);router[_0x5da6('0x8')](_0x5da6('0xd'),auth[_0x5da6('0x9')](),controller[_0x5da6('0xe')]);router[_0x5da6('0xf')]('/',auth[_0x5da6('0x9')](),controller['create']);router[_0x5da6('0xf')](_0x5da6('0x10'),auth[_0x5da6('0x9')](),controller[_0x5da6('0x11')]);router[_0x5da6('0x12')](_0x5da6('0xb'),auth[_0x5da6('0x9')](),controller[_0x5da6('0x13')]);router[_0x5da6('0x14')]('/:id',auth[_0x5da6('0x9')](),controller[_0x5da6('0x15')]);module[_0x5da6('0x16')]=router;
\ No newline at end of file
index 647bb86..c91d0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x091f=['exports','STRING','HelpDesk','sequelize'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x091f,0x14f));var _0xf091=function(_0x254761,_0x550307){_0x254761=_0x254761-0x0;var _0x4236de=_0x091f[_0x254761];return _0x4236de;};'use strict';var Sequelize=require(_0xf091('0x0'));module[_0xf091('0x1')]={'name':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf091('0x2')]},'username':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xf091('0x2')],'allowNull':![],'defaultValue':_0xf091('0x3')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x6243=['HelpDesk','exports','STRING'];(function(_0x37b0ba,_0xe3601e){var _0x20586f=function(_0x44a43e){while(--_0x44a43e){_0x37b0ba['push'](_0x37b0ba['shift']());}};_0x20586f(++_0xe3601e);}(_0x6243,0x166));var _0x3624=function(_0x43814d,_0x27113e){_0x43814d=_0x43814d-0x0;var _0x161979=_0x6243[_0x43814d];return _0x161979;};'use strict';var Sequelize=require('sequelize');module[_0x3624('0x0')]={'name':{'type':Sequelize[_0x3624('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x3624('0x1')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x3624('0x1')],'allowNull':![],'defaultValue':_0x3624('0x2')},'remoteUri':{'type':Sequelize[_0x3624('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x3624('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 2772f49..db6178e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cf2=['cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','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','offset','limit','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','VtigerAccount','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','include','findAll','rows','catch','show','params','keys','create','body','find','getConfigurations','findOne','VtigerConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','autogenerated','remove','includes','editable','false','label','startsWith'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x6cf2,0x87));var _0x26cf=function(_0x5a0f41,_0x3f931d){_0x5a0f41=_0x5a0f41-0x0;var _0x1cb1fb=_0x6cf2[_0x5a0f41];return _0x1cb1fb;};'use strict';var emlformat=require(_0x26cf('0x0'));var rimraf=require(_0x26cf('0x1'));var zipdir=require(_0x26cf('0x2'));var jsonpatch=require(_0x26cf('0x3'));var rp=require('request-promise');var moment=require(_0x26cf('0x4'));var BPromise=require(_0x26cf('0x5'));var Mustache=require(_0x26cf('0x6'));var util=require(_0x26cf('0x7'));var path=require(_0x26cf('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x26cf('0x9'));var fs=require('fs');var fs_extra=require(_0x26cf('0xa'));var _=require(_0x26cf('0xb'));var squel=require(_0x26cf('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x26cf('0xd'));var querystring=require('querystring');var Papa=require(_0x26cf('0xe'));var Redis=require(_0x26cf('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x26cf('0x10'));var as=require(_0x26cf('0x11'));var hardwareService=require(_0x26cf('0x12'));var logger=require(_0x26cf('0x13'))(_0x26cf('0x14'));var utils=require(_0x26cf('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x26cf('0x16'));var db=require(_0x26cf('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3a5e19,_0x92d0af){_0x92d0af=_0x92d0af||0xcc;return function(_0x32d833){if(_0x32d833){return _0x3a5e19[_0x26cf('0x18')](_0x92d0af);}return _0x3a5e19[_0x26cf('0x19')](_0x92d0af)[_0x26cf('0x1a')]();};}function respondWithResult(_0x53a05d,_0x5b0aa9){_0x5b0aa9=_0x5b0aa9||0xc8;return function(_0x2af5fa){if(_0x2af5fa){return _0x53a05d[_0x26cf('0x19')](_0x5b0aa9)[_0x26cf('0x1b')](_0x2af5fa);}};}function respondWithFilteredResult(_0x1b0013,_0x17abfb){return function(_0x58cb46){if(_0x58cb46){var _0x5e4cd5=typeof _0x17abfb[_0x26cf('0x1c')]==='undefined'&&typeof _0x17abfb['limit']==='undefined';var _0x43b696=_0x58cb46['count'];var _0xe85efe=_0x5e4cd5?0x0:_0x17abfb[_0x26cf('0x1c')];var _0x15e7de=_0x5e4cd5?_0x58cb46['count']:_0x17abfb[_0x26cf('0x1c')]+_0x17abfb[_0x26cf('0x1d')];var _0x22261e;if(_0x15e7de>=_0x43b696){_0x15e7de=_0x43b696;_0x22261e=0xc8;}else{_0x22261e=0xce;}_0x1b0013[_0x26cf('0x19')](_0x22261e);return _0x1b0013[_0x26cf('0x1e')](_0x26cf('0x1f'),_0xe85efe+'-'+_0x15e7de+'/'+_0x43b696)[_0x26cf('0x1b')](_0x58cb46);}return null;};}function patchUpdates(_0x1fef7b){return function(_0x1eec11){try{jsonpatch[_0x26cf('0x20')](_0x1eec11,_0x1fef7b,!![]);}catch(_0x2b7361){return BPromise[_0x26cf('0x21')](_0x2b7361);}return _0x1eec11['save']();};}function saveUpdates(_0x383907,_0xa339d2){return function(_0x390014){if(_0x390014){return _0x390014[_0x26cf('0x22')](_0x383907)['then'](function(_0x415c72){return _0x415c72;});}return null;};}function removeEntity(_0x3d436d,_0x1f80df){return function(_0xfb93d0){if(_0xfb93d0){return _0xfb93d0[_0x26cf('0x23')]()[_0x26cf('0x24')](function(){_0x3d436d[_0x26cf('0x19')](0xcc)[_0x26cf('0x1a')]();});}};}function handleEntityNotFound(_0x3ceb11,_0x173038){return function(_0x331822){if(!_0x331822){_0x3ceb11[_0x26cf('0x18')](0x194);}return _0x331822;};}function handleError(_0x33bbfa,_0x3ec263){_0x3ec263=_0x3ec263||0x1f4;return function(_0x1f7cd7){logger[_0x26cf('0x25')](_0x1f7cd7[_0x26cf('0x26')]);if(_0x1f7cd7['name']){delete _0x1f7cd7[_0x26cf('0x27')];}_0x33bbfa[_0x26cf('0x19')](_0x3ec263)[_0x26cf('0x28')](_0x1f7cd7);};}exports[_0x26cf('0x29')]=function(_0x3fc316,_0x2ee506){var _0x5b3725={},_0x3931b6={},_0x51ad93={'count':0x0,'rows':[]};var _0x5aae29=_[_0x26cf('0x2a')](db[_0x26cf('0x2b')][_0x26cf('0x2c')],function(_0x389a6f){return{'name':_0x389a6f['fieldName'],'type':_0x389a6f[_0x26cf('0x2d')][_0x26cf('0x2e')]};});_0x3931b6['model']=_[_0x26cf('0x2a')](_0x5aae29,_0x26cf('0x27'));_0x3931b6[_0x26cf('0x2f')]=_['keys'](_0x3fc316[_0x26cf('0x2f')]);_0x3931b6[_0x26cf('0x30')]=_[_0x26cf('0x31')](_0x3931b6[_0x26cf('0x32')],_0x3931b6[_0x26cf('0x2f')]);_0x5b3725[_0x26cf('0x33')]=_['intersection'](_0x3931b6[_0x26cf('0x32')],qs[_0x26cf('0x34')](_0x3fc316['query'][_0x26cf('0x34')]));_0x5b3725[_0x26cf('0x33')]=_0x5b3725[_0x26cf('0x33')][_0x26cf('0x35')]?_0x5b3725[_0x26cf('0x33')]:_0x3931b6[_0x26cf('0x32')];if(!_0x3fc316[_0x26cf('0x2f')][_0x26cf('0x36')](_0x26cf('0x37'))){_0x5b3725['limit']=qs[_0x26cf('0x1d')](_0x3fc316['query'][_0x26cf('0x1d')]);_0x5b3725['offset']=qs[_0x26cf('0x1c')](_0x3fc316[_0x26cf('0x2f')]['offset']);}_0x5b3725[_0x26cf('0x38')]=qs[_0x26cf('0x39')](_0x3fc316[_0x26cf('0x2f')][_0x26cf('0x39')]);_0x5b3725[_0x26cf('0x3a')]=qs[_0x26cf('0x30')](_['pick'](_0x3fc316[_0x26cf('0x2f')],_0x3931b6['filters']),_0x5aae29);if(_0x3fc316[_0x26cf('0x2f')][_0x26cf('0x3b')]){_0x5b3725[_0x26cf('0x3a')]=_[_0x26cf('0x3c')](_0x5b3725[_0x26cf('0x3a')],{'$or':_[_0x26cf('0x2a')](_0x5aae29,function(_0xce529){if(_0xce529[_0x26cf('0x2d')]!==_0x26cf('0x3d')){var _0x29eac8={};_0x29eac8[_0xce529['name']]={'$like':'%'+_0x3fc316[_0x26cf('0x2f')]['filter']+'%'};return _0x29eac8;}})});}_0x5b3725=_[_0x26cf('0x3c')]({},_0x5b3725,_0x3fc316[_0x26cf('0x3e')]);var _0x4fbdc5={'where':_0x5b3725['where']};return db[_0x26cf('0x2b')][_0x26cf('0x3f')](_0x4fbdc5)[_0x26cf('0x24')](function(_0x41ef41){_0x51ad93['count']=_0x41ef41;if(_0x3fc316[_0x26cf('0x2f')]['includeAll']){_0x5b3725[_0x26cf('0x40')]=[{'all':!![]}];}return db[_0x26cf('0x2b')][_0x26cf('0x41')](_0x5b3725);})[_0x26cf('0x24')](function(_0x173bd5){_0x51ad93[_0x26cf('0x42')]=_0x173bd5;return _0x51ad93;})[_0x26cf('0x24')](respondWithFilteredResult(_0x2ee506,_0x5b3725))[_0x26cf('0x43')](handleError(_0x2ee506,null));};exports[_0x26cf('0x44')]=function(_0x46298e,_0x1d4d77){var _0x101623={'raw':![],'where':{'id':_0x46298e[_0x26cf('0x45')]['id']}},_0x558863={};_0x558863['model']=_['keys'](db[_0x26cf('0x2b')][_0x26cf('0x2c')]);_0x558863[_0x26cf('0x2f')]=_[_0x26cf('0x46')](_0x46298e[_0x26cf('0x2f')]);_0x558863[_0x26cf('0x30')]=_[_0x26cf('0x31')](_0x558863[_0x26cf('0x32')],_0x558863['query']);_0x101623[_0x26cf('0x33')]=_[_0x26cf('0x31')](_0x558863[_0x26cf('0x32')],qs[_0x26cf('0x34')](_0x46298e[_0x26cf('0x2f')][_0x26cf('0x34')]));_0x101623[_0x26cf('0x33')]=_0x101623['attributes'][_0x26cf('0x35')]?_0x101623[_0x26cf('0x33')]:_0x558863['model'];if(_0x46298e[_0x26cf('0x2f')]['includeAll']){_0x101623[_0x26cf('0x40')]=[{'all':!![]}];}_0x101623=_[_0x26cf('0x3c')]({},_0x101623,_0x46298e[_0x26cf('0x3e')]);return db[_0x26cf('0x2b')]['find'](_0x101623)[_0x26cf('0x24')](handleEntityNotFound(_0x1d4d77,null))[_0x26cf('0x24')](respondWithResult(_0x1d4d77,null))[_0x26cf('0x43')](handleError(_0x1d4d77,null));};exports[_0x26cf('0x47')]=function(_0x352731,_0x467ec0){return db[_0x26cf('0x2b')][_0x26cf('0x47')](_0x352731[_0x26cf('0x48')],{})[_0x26cf('0x24')](respondWithResult(_0x467ec0,0xc9))['catch'](handleError(_0x467ec0,null));};exports[_0x26cf('0x22')]=function(_0x5da6e8,_0x50ee63){if(_0x5da6e8[_0x26cf('0x48')]['id']){delete _0x5da6e8['body']['id'];}return db['VtigerAccount']['find']({'where':{'id':_0x5da6e8[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x50ee63,null))[_0x26cf('0x24')](saveUpdates(_0x5da6e8[_0x26cf('0x48')],null))[_0x26cf('0x24')](respondWithResult(_0x50ee63,null))[_0x26cf('0x43')](handleError(_0x50ee63,null));};exports[_0x26cf('0x23')]=function(_0x29c1ce,_0x149c85){return db['VtigerAccount'][_0x26cf('0x49')]({'where':{'id':_0x29c1ce[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x149c85,null))['then'](removeEntity(_0x149c85,null))[_0x26cf('0x43')](handleError(_0x149c85,null));};exports[_0x26cf('0x4a')]=function(_0xf31abf,_0x3082b9,_0x54b0e3){var _0x12c272={};var _0x407dce={};var _0x55bfcd;var _0x215dfc;return db[_0x26cf('0x2b')][_0x26cf('0x4b')]({'where':{'id':_0xf31abf[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x3082b9,null))[_0x26cf('0x24')](function(_0x19db9c){if(_0x19db9c){_0x55bfcd=_0x19db9c;_0x407dce[_0x26cf('0x32')]=_['keys'](db[_0x26cf('0x4c')][_0x26cf('0x2c')]);_0x407dce[_0x26cf('0x2f')]=_[_0x26cf('0x46')](_0xf31abf[_0x26cf('0x2f')]);_0x407dce[_0x26cf('0x30')]=_['intersection'](_0x407dce[_0x26cf('0x32')],_0x407dce[_0x26cf('0x2f')]);_0x12c272[_0x26cf('0x33')]=_[_0x26cf('0x31')](_0x407dce[_0x26cf('0x32')],qs[_0x26cf('0x34')](_0xf31abf[_0x26cf('0x2f')][_0x26cf('0x34')]));_0x12c272[_0x26cf('0x33')]=_0x12c272[_0x26cf('0x33')][_0x26cf('0x35')]?_0x12c272[_0x26cf('0x33')]:_0x407dce['model'];_0x12c272[_0x26cf('0x38')]=qs[_0x26cf('0x39')](_0xf31abf['query'][_0x26cf('0x39')]);_0x12c272[_0x26cf('0x3a')]=qs[_0x26cf('0x30')](_[_0x26cf('0x4d')](_0xf31abf['query'],_0x407dce[_0x26cf('0x30')]));if(_0xf31abf[_0x26cf('0x2f')]['filter']){_0x12c272[_0x26cf('0x3a')]=_[_0x26cf('0x3c')](_0x12c272[_0x26cf('0x3a')],{'$or':_[_0x26cf('0x2a')](_0x12c272[_0x26cf('0x33')],function(_0x4a6c4f){var _0x25ec12={};_0x25ec12[_0x4a6c4f]={'$like':'%'+_0xf31abf[_0x26cf('0x2f')][_0x26cf('0x3b')]+'%'};return _0x25ec12;})});}_0x12c272=_[_0x26cf('0x3c')]({},_0x12c272,_0xf31abf[_0x26cf('0x3e')]);return _0x55bfcd['getConfigurations'](_0x12c272);}})[_0x26cf('0x24')](function(_0x3140f1){if(_0x3140f1){_0x215dfc=_0x3140f1[_0x26cf('0x35')];if(!_0xf31abf['query']['hasOwnProperty'](_0x26cf('0x37'))){_0x12c272['limit']=qs[_0x26cf('0x1d')](_0xf31abf['query'][_0x26cf('0x1d')]);_0x12c272[_0x26cf('0x1c')]=qs[_0x26cf('0x1c')](_0xf31abf[_0x26cf('0x2f')][_0x26cf('0x1c')]);}return _0x55bfcd[_0x26cf('0x4a')](_0x12c272);}})[_0x26cf('0x24')](function(_0x7804d9){if(_0x7804d9){return _0x7804d9?{'count':_0x215dfc,'rows':_0x7804d9}:null;}})[_0x26cf('0x24')](respondWithResult(_0x3082b9,null))['catch'](handleError(_0x3082b9,null));};exports[_0x26cf('0x4e')]=function(_0x496cd6,_0x5ed0a1,_0x52f1e4){if(_0x496cd6[_0x26cf('0x48')]['id']){delete _0x496cd6[_0x26cf('0x48')]['id'];}return db[_0x26cf('0x2b')][_0x26cf('0x4b')]({'where':{'id':_0x496cd6[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x5ed0a1,null))[_0x26cf('0x24')](function(_0x5e2e9e){if(_0x5e2e9e){_0x496cd6[_0x26cf('0x48')][_0x26cf('0x4f')]=_0x5e2e9e['id'];_0x496cd6['body'][_0x26cf('0x50')]=integrations[_0x26cf('0x51')](_0x496cd6[_0x26cf('0x48')][_0x26cf('0x52')],_0x496cd6[_0x26cf('0x48')]['type']);_0x496cd6[_0x26cf('0x48')][_0x26cf('0x53')]=integrations['getDescriptions'](_0x496cd6[_0x26cf('0x48')]['channel'],_0x496cd6[_0x26cf('0x48')][_0x26cf('0x2d')]);return db[_0x26cf('0x4c')][_0x26cf('0x47')](_0x496cd6['body'],{'include':[{'model':db['VtigerField'],'as':'Subjects'},{'model':db[_0x26cf('0x54')],'as':_0x26cf('0x53')}]});}return null;})[_0x26cf('0x24')](respondWithResult(_0x5ed0a1,null))[_0x26cf('0x43')](handleError(_0x5ed0a1,null));};var md5=require(_0x26cf('0x55'));exports[_0x26cf('0x56')]=function(_0x4ba75b,_0x181c76,_0x536ff8){var _0x2f6117=null;var _0x3dab2c=null;var _0x568e2d=null;var _0x162ef9=null;var _0x53a30e='';return db[_0x26cf('0x2b')][_0x26cf('0x4b')]({'where':{'id':_0x4ba75b[_0x26cf('0x45')]['id']},'attributes':['id',_0x26cf('0x27'),_0x26cf('0x57'),_0x26cf('0x58'),_0x26cf('0x59'),_0x26cf('0x5a'),_0x26cf('0x5b'),_0x26cf('0x5c')]})[_0x26cf('0x24')](handleEntityNotFound(_0x181c76,null))[_0x26cf('0x24')](function(_0x17685e){if(_0x17685e){_0x2f6117=_0x17685e[_0x26cf('0x57')];_0x3dab2c=_0x17685e[_0x26cf('0x5c')];_0x568e2d=_0x17685e[_0x26cf('0x59')];_0x53a30e=_0x17685e[_0x26cf('0x5a')];var _0x3f4ef3=_0x53a30e[_0x26cf('0x5d')](-0x1);if(_0x3f4ef3==='/'){_0x53a30e=_0x53a30e['substring'](0x0,_0x53a30e[_0x26cf('0x5e')](_0x3f4ef3));}_0x162ef9=util[_0x26cf('0x5f')](_0x26cf('0x60'),_0x53a30e);var _0x2e5695={'method':_0x26cf('0x61'),'uri':_0x162ef9,'qs':{'operation':_0x26cf('0x62'),'username':_0x17685e['username']},'json':!![]};return rp(_0x2e5695);}})[_0x26cf('0x24')](function(_0xeccb30){if(_0xeccb30[_0x26cf('0x63')]){var _0x7b834={'method':_0x26cf('0x64'),'uri':_0x162ef9,'form':{'operation':_0x26cf('0x65'),'username':_0x2f6117,'accessKey':md5(_0xeccb30[_0x26cf('0x66')][_0x26cf('0x67')]+_0x3dab2c)},'json':!![]};return rp(_0x7b834);}})[_0x26cf('0x24')](function(_0x1a1a1c){if(_0x1a1a1c[_0x26cf('0x63')]){var _0x2861a3={'method':_0x26cf('0x61'),'uri':_0x162ef9,'qs':{'operation':_0x26cf('0x68'),'username':_0x2f6117,'sessionName':_0x1a1a1c[_0x26cf('0x66')][_0x26cf('0x69')],'elementType':_0x568e2d},'json':!![]};return rp(_0x2861a3);}})[_0x26cf('0x24')](function(_0x6328c9){if(_0x6328c9[_0x26cf('0x63')]){var _0x1f7198=[_0x26cf('0x6a'),'reference','owner'];_[_0x26cf('0x6b')](_0x6328c9[_0x26cf('0x66')][_0x26cf('0x34')],function(_0x388456){return _0x1f7198[_0x26cf('0x6c')](_0x388456[_0x26cf('0x2d')]['name']);});_['remove'](_0x6328c9[_0x26cf('0x66')][_0x26cf('0x34')],function(_0x3e109d){return _0x3e109d[_0x26cf('0x6d')]===_0x26cf('0x6e');});return{'count':_0x6328c9['result'][_0x26cf('0x34')][_0x26cf('0x35')],'rows':_[_0x26cf('0x2a')](_0x6328c9[_0x26cf('0x66')][_0x26cf('0x34')],function(_0x5d337d){return{'id':_0x5d337d[_0x26cf('0x27')],'name':_0x5d337d[_0x26cf('0x6f')],'custom':_[_0x26cf('0x70')](_0x5d337d['name'],_0x26cf('0x71'))?!![]:![],'options':_0x5d337d[_0x26cf('0x2d')]['name']===_0x26cf('0x72')&&_0x5d337d[_0x26cf('0x2d')]['picklistValues']['length']>0x0?_[_0x26cf('0x2a')](_0x5d337d[_0x26cf('0x2d')][_0x26cf('0x73')],function(_0x2adaf1){return{'name':_0x2adaf1['label'],'value':_0x2adaf1[_0x26cf('0x74')]};}):[]};})};}})[_0x26cf('0x24')](respondWithResult(_0x181c76,null))[_0x26cf('0x43')](function(_0x389edd){console[_0x26cf('0x75')](_0x26cf('0x76')+_0x389edd);var _0x24abbf=_0x4ba75b[_0x26cf('0x2f')][_0x26cf('0x77')]?0x1f4:_0x389edd[_0x26cf('0x78')]||0x1f4;logger[_0x26cf('0x25')](_0x26cf('0x79'),_0x26cf('0x56'),_0x24abbf,JSON[_0x26cf('0x7a')](_0x389edd));delete _0x389edd[_0x26cf('0x27')];if(_0x24abbf===0x191){_0x24abbf=0x190;}_0x181c76[_0x26cf('0x19')](_0x24abbf)['send'](_0x4ba75b['query'][_0x26cf('0x77')]?{'message':_0x26cf('0x7b'),'statusCode':_0x389edd[_0x26cf('0x78')]}:_0x389edd);});};
\ No newline at end of file
+var _0xc021=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','VtigerAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','description','remoteUri','username','accessKey','slice','substring','lastIndexOf','%s/webservice.php','getchallenge','success','login','result','token','describe','autogenerated','owner','remove','editable','false','label','startsWith','cf_','value','log','vTiger\x20error:\x20','test','getFields','send','Wrong\x20credentials','eml-format','rimraf','moment','util','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','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc021,0xc0));var _0x1c02=function(_0x5c3601,_0x5a5225){_0x5c3601=_0x5c3601-0x0;var _0x528fd8=_0xc021[_0x5c3601];return _0x528fd8;};'use strict';var emlformat=require(_0x1c02('0x0'));var rimraf=require(_0x1c02('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1c02('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1c02('0x3'));var path=require('path');var sox=require(_0x1c02('0x4'));var csv=require(_0x1c02('0x5'));var ejs=require(_0x1c02('0x6'));var fs=require('fs');var fs_extra=require(_0x1c02('0x7'));var _=require(_0x1c02('0x8'));var squel=require(_0x1c02('0x9'));var crypto=require('crypto');var jsforce=require(_0x1c02('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x1c02('0x5'));var querystring=require(_0x1c02('0xb'));var Papa=require(_0x1c02('0xc'));var Redis=require(_0x1c02('0xd'));var authService=require(_0x1c02('0xe'));var qs=require(_0x1c02('0xf'));var as=require(_0x1c02('0x10'));var hardwareService=require(_0x1c02('0x11'));var logger=require(_0x1c02('0x12'))(_0x1c02('0x13'));var utils=require(_0x1c02('0x14'));var config=require(_0x1c02('0x15'));var licenseUtil=require(_0x1c02('0x16'));var db=require(_0x1c02('0x17'))['db'];var integrations=require(_0x1c02('0x18'));function respondWithStatusCode(_0x36290f,_0x3f099c){_0x3f099c=_0x3f099c||0xcc;return function(_0x151fbc){if(_0x151fbc){return _0x36290f[_0x1c02('0x19')](_0x3f099c);}return _0x36290f['status'](_0x3f099c)[_0x1c02('0x1a')]();};}function respondWithResult(_0x45506a,_0x2b4ff3){_0x2b4ff3=_0x2b4ff3||0xc8;return function(_0x522121){if(_0x522121){return _0x45506a[_0x1c02('0x1b')](_0x2b4ff3)[_0x1c02('0x1c')](_0x522121);}};}function respondWithFilteredResult(_0x2385a3,_0x5dc948){return function(_0x34074f){if(_0x34074f){var _0x35e592=typeof _0x5dc948[_0x1c02('0x1d')]===_0x1c02('0x1e')&&typeof _0x5dc948[_0x1c02('0x1f')]===_0x1c02('0x1e');var _0x1ca1aa=_0x34074f['count'];var _0x4d9dac=_0x35e592?0x0:_0x5dc948[_0x1c02('0x1d')];var _0x4087e7=_0x35e592?_0x34074f[_0x1c02('0x20')]:_0x5dc948[_0x1c02('0x1d')]+_0x5dc948[_0x1c02('0x1f')];var _0x1e724b;if(_0x4087e7>=_0x1ca1aa){_0x4087e7=_0x1ca1aa;_0x1e724b=0xc8;}else{_0x1e724b=0xce;}_0x2385a3[_0x1c02('0x1b')](_0x1e724b);return _0x2385a3[_0x1c02('0x21')](_0x1c02('0x22'),_0x4d9dac+'-'+_0x4087e7+'/'+_0x1ca1aa)[_0x1c02('0x1c')](_0x34074f);}return null;};}function patchUpdates(_0x337d60){return function(_0x163c0d){try{jsonpatch[_0x1c02('0x23')](_0x163c0d,_0x337d60,!![]);}catch(_0x2b8421){return BPromise[_0x1c02('0x24')](_0x2b8421);}return _0x163c0d[_0x1c02('0x25')]();};}function saveUpdates(_0x362c14,_0x10e328){return function(_0x2a2114){if(_0x2a2114){return _0x2a2114[_0x1c02('0x26')](_0x362c14)[_0x1c02('0x27')](function(_0x4c4b2c){return _0x4c4b2c;});}return null;};}function removeEntity(_0x179aa8,_0x2032fd){return function(_0x2351ec){if(_0x2351ec){return _0x2351ec[_0x1c02('0x28')]()[_0x1c02('0x27')](function(){_0x179aa8['status'](0xcc)[_0x1c02('0x1a')]();});}};}function handleEntityNotFound(_0x265b7b,_0x1a9ce7){return function(_0x3d7444){if(!_0x3d7444){_0x265b7b[_0x1c02('0x19')](0x194);}return _0x3d7444;};}function handleError(_0x1f7e57,_0x416ee0){_0x416ee0=_0x416ee0||0x1f4;return function(_0x52392d){logger[_0x1c02('0x29')](_0x52392d[_0x1c02('0x2a')]);if(_0x52392d[_0x1c02('0x2b')]){delete _0x52392d[_0x1c02('0x2b')];}_0x1f7e57[_0x1c02('0x1b')](_0x416ee0)['send'](_0x52392d);};}exports['index']=function(_0x343b02,_0xff9979){var _0x17f8df={},_0x4dade7={},_0x128bb2={'count':0x0,'rows':[]};var _0x2d51a2=_['map'](db[_0x1c02('0x2c')][_0x1c02('0x2d')],function(_0x5dfc21){return{'name':_0x5dfc21[_0x1c02('0x2e')],'type':_0x5dfc21[_0x1c02('0x2f')]['key']};});_0x4dade7[_0x1c02('0x30')]=_['map'](_0x2d51a2,_0x1c02('0x2b'));_0x4dade7[_0x1c02('0x31')]=_[_0x1c02('0x32')](_0x343b02[_0x1c02('0x31')]);_0x4dade7[_0x1c02('0x33')]=_[_0x1c02('0x34')](_0x4dade7[_0x1c02('0x30')],_0x4dade7[_0x1c02('0x31')]);_0x17f8df[_0x1c02('0x35')]=_[_0x1c02('0x34')](_0x4dade7['model'],qs[_0x1c02('0x36')](_0x343b02['query']['fields']));_0x17f8df[_0x1c02('0x35')]=_0x17f8df['attributes'][_0x1c02('0x37')]?_0x17f8df['attributes']:_0x4dade7[_0x1c02('0x30')];if(!_0x343b02[_0x1c02('0x31')][_0x1c02('0x38')](_0x1c02('0x39'))){_0x17f8df[_0x1c02('0x1f')]=qs[_0x1c02('0x1f')](_0x343b02[_0x1c02('0x31')]['limit']);_0x17f8df[_0x1c02('0x1d')]=qs['offset'](_0x343b02[_0x1c02('0x31')][_0x1c02('0x1d')]);}_0x17f8df[_0x1c02('0x3a')]=qs[_0x1c02('0x3b')](_0x343b02['query'][_0x1c02('0x3b')]);_0x17f8df[_0x1c02('0x3c')]=qs[_0x1c02('0x33')](_[_0x1c02('0x3d')](_0x343b02[_0x1c02('0x31')],_0x4dade7['filters']),_0x2d51a2);if(_0x343b02[_0x1c02('0x31')][_0x1c02('0x3e')]){_0x17f8df[_0x1c02('0x3c')]=_[_0x1c02('0x3f')](_0x17f8df[_0x1c02('0x3c')],{'$or':_[_0x1c02('0x40')](_0x2d51a2,function(_0x462b9e){if(_0x462b9e[_0x1c02('0x2f')]!=='VIRTUAL'){var _0x3dec56={};_0x3dec56[_0x462b9e['name']]={'$like':'%'+_0x343b02[_0x1c02('0x31')][_0x1c02('0x3e')]+'%'};return _0x3dec56;}})});}_0x17f8df=_[_0x1c02('0x3f')]({},_0x17f8df,_0x343b02[_0x1c02('0x41')]);var _0x15574a={'where':_0x17f8df[_0x1c02('0x3c')]};return db[_0x1c02('0x2c')][_0x1c02('0x20')](_0x15574a)['then'](function(_0x4f26de){_0x128bb2[_0x1c02('0x20')]=_0x4f26de;if(_0x343b02[_0x1c02('0x31')][_0x1c02('0x42')]){_0x17f8df['include']=[{'all':!![]}];}return db['VtigerAccount'][_0x1c02('0x43')](_0x17f8df);})[_0x1c02('0x27')](function(_0x13d38b){_0x128bb2[_0x1c02('0x44')]=_0x13d38b;return _0x128bb2;})[_0x1c02('0x27')](respondWithFilteredResult(_0xff9979,_0x17f8df))[_0x1c02('0x45')](handleError(_0xff9979,null));};exports[_0x1c02('0x46')]=function(_0x167d6a,_0x3f35c1){var _0x2075d3={'raw':![],'where':{'id':_0x167d6a[_0x1c02('0x47')]['id']}},_0x56492b={};_0x56492b[_0x1c02('0x30')]=_['keys'](db['VtigerAccount'][_0x1c02('0x2d')]);_0x56492b['query']=_[_0x1c02('0x32')](_0x167d6a[_0x1c02('0x31')]);_0x56492b[_0x1c02('0x33')]=_[_0x1c02('0x34')](_0x56492b[_0x1c02('0x30')],_0x56492b[_0x1c02('0x31')]);_0x2075d3[_0x1c02('0x35')]=_['intersection'](_0x56492b[_0x1c02('0x30')],qs['fields'](_0x167d6a['query'][_0x1c02('0x36')]));_0x2075d3['attributes']=_0x2075d3[_0x1c02('0x35')][_0x1c02('0x37')]?_0x2075d3[_0x1c02('0x35')]:_0x56492b[_0x1c02('0x30')];if(_0x167d6a[_0x1c02('0x31')][_0x1c02('0x42')]){_0x2075d3[_0x1c02('0x48')]=[{'all':!![]}];}_0x2075d3=_[_0x1c02('0x3f')]({},_0x2075d3,_0x167d6a[_0x1c02('0x41')]);return db[_0x1c02('0x2c')][_0x1c02('0x49')](_0x2075d3)[_0x1c02('0x27')](handleEntityNotFound(_0x3f35c1,null))[_0x1c02('0x27')](respondWithResult(_0x3f35c1,null))[_0x1c02('0x45')](handleError(_0x3f35c1,null));};exports[_0x1c02('0x4a')]=function(_0x1a1999,_0x553dc9){return db['VtigerAccount'][_0x1c02('0x4a')](_0x1a1999[_0x1c02('0x4b')],{})[_0x1c02('0x27')](respondWithResult(_0x553dc9,0xc9))[_0x1c02('0x45')](handleError(_0x553dc9,null));};exports[_0x1c02('0x26')]=function(_0x3686bb,_0x3b783d){if(_0x3686bb['body']['id']){delete _0x3686bb['body']['id'];}return db[_0x1c02('0x2c')][_0x1c02('0x49')]({'where':{'id':_0x3686bb['params']['id']}})[_0x1c02('0x27')](handleEntityNotFound(_0x3b783d,null))[_0x1c02('0x27')](saveUpdates(_0x3686bb['body'],null))[_0x1c02('0x27')](respondWithResult(_0x3b783d,null))[_0x1c02('0x45')](handleError(_0x3b783d,null));};exports[_0x1c02('0x28')]=function(_0x231e09,_0x2bb961){return db['VtigerAccount'][_0x1c02('0x49')]({'where':{'id':_0x231e09[_0x1c02('0x47')]['id']}})[_0x1c02('0x27')](handleEntityNotFound(_0x2bb961,null))['then'](removeEntity(_0x2bb961,null))[_0x1c02('0x45')](handleError(_0x2bb961,null));};exports[_0x1c02('0x4c')]=function(_0xb65ec1,_0x56eea7,_0x4e7dc7){var _0x487b40={};var _0x1ae858={};var _0x54bdac;var _0x3b8b9b;return db['VtigerAccount'][_0x1c02('0x4d')]({'where':{'id':_0xb65ec1[_0x1c02('0x47')]['id']}})[_0x1c02('0x27')](handleEntityNotFound(_0x56eea7,null))['then'](function(_0x17f609){if(_0x17f609){_0x54bdac=_0x17f609;_0x1ae858[_0x1c02('0x30')]=_[_0x1c02('0x32')](db[_0x1c02('0x4e')][_0x1c02('0x2d')]);_0x1ae858[_0x1c02('0x31')]=_[_0x1c02('0x32')](_0xb65ec1[_0x1c02('0x31')]);_0x1ae858[_0x1c02('0x33')]=_[_0x1c02('0x34')](_0x1ae858[_0x1c02('0x30')],_0x1ae858['query']);_0x487b40[_0x1c02('0x35')]=_[_0x1c02('0x34')](_0x1ae858[_0x1c02('0x30')],qs[_0x1c02('0x36')](_0xb65ec1[_0x1c02('0x31')][_0x1c02('0x36')]));_0x487b40[_0x1c02('0x35')]=_0x487b40[_0x1c02('0x35')][_0x1c02('0x37')]?_0x487b40['attributes']:_0x1ae858[_0x1c02('0x30')];_0x487b40[_0x1c02('0x3a')]=qs[_0x1c02('0x3b')](_0xb65ec1['query'][_0x1c02('0x3b')]);_0x487b40[_0x1c02('0x3c')]=qs[_0x1c02('0x33')](_['pick'](_0xb65ec1[_0x1c02('0x31')],_0x1ae858[_0x1c02('0x33')]));if(_0xb65ec1['query'][_0x1c02('0x3e')]){_0x487b40[_0x1c02('0x3c')]=_[_0x1c02('0x3f')](_0x487b40[_0x1c02('0x3c')],{'$or':_[_0x1c02('0x40')](_0x487b40[_0x1c02('0x35')],function(_0x3fe9b6){var _0x5779ba={};_0x5779ba[_0x3fe9b6]={'$like':'%'+_0xb65ec1[_0x1c02('0x31')][_0x1c02('0x3e')]+'%'};return _0x5779ba;})});}_0x487b40=_['merge']({},_0x487b40,_0xb65ec1[_0x1c02('0x41')]);return _0x54bdac[_0x1c02('0x4c')](_0x487b40);}})[_0x1c02('0x27')](function(_0x3b8de2){if(_0x3b8de2){_0x3b8b9b=_0x3b8de2[_0x1c02('0x37')];if(!_0xb65ec1[_0x1c02('0x31')]['hasOwnProperty'](_0x1c02('0x39'))){_0x487b40[_0x1c02('0x1f')]=qs[_0x1c02('0x1f')](_0xb65ec1[_0x1c02('0x31')][_0x1c02('0x1f')]);_0x487b40[_0x1c02('0x1d')]=qs[_0x1c02('0x1d')](_0xb65ec1[_0x1c02('0x31')][_0x1c02('0x1d')]);}return _0x54bdac[_0x1c02('0x4c')](_0x487b40);}})[_0x1c02('0x27')](function(_0x547252){if(_0x547252){return _0x547252?{'count':_0x3b8b9b,'rows':_0x547252}:null;}})['then'](respondWithResult(_0x56eea7,null))['catch'](handleError(_0x56eea7,null));};exports[_0x1c02('0x4f')]=function(_0x1e569f,_0x3ba7d2,_0x324ae5){if(_0x1e569f[_0x1c02('0x4b')]['id']){delete _0x1e569f[_0x1c02('0x4b')]['id'];}return db[_0x1c02('0x2c')][_0x1c02('0x4d')]({'where':{'id':_0x1e569f[_0x1c02('0x47')]['id']}})[_0x1c02('0x27')](handleEntityNotFound(_0x3ba7d2,null))['then'](function(_0x2ccad9){if(_0x2ccad9){_0x1e569f['body'][_0x1c02('0x50')]=_0x2ccad9['id'];_0x1e569f[_0x1c02('0x4b')][_0x1c02('0x51')]=integrations['getSubjects'](_0x1e569f[_0x1c02('0x4b')][_0x1c02('0x52')],_0x1e569f[_0x1c02('0x4b')][_0x1c02('0x2f')]);_0x1e569f[_0x1c02('0x4b')][_0x1c02('0x53')]=integrations['getDescriptions'](_0x1e569f[_0x1c02('0x4b')][_0x1c02('0x52')],_0x1e569f[_0x1c02('0x4b')]['type']);return db[_0x1c02('0x4e')][_0x1c02('0x4a')](_0x1e569f[_0x1c02('0x4b')],{'include':[{'model':db['VtigerField'],'as':_0x1c02('0x51')},{'model':db['VtigerField'],'as':_0x1c02('0x53')}]});}return null;})[_0x1c02('0x27')](respondWithResult(_0x3ba7d2,null))[_0x1c02('0x45')](handleError(_0x3ba7d2,null));};var md5=require('md5');exports['getFields']=function(_0x328980,_0xb3671e,_0x5dc032){var _0x50cd37=null;var _0x3dc630=null;var _0x34f4e4=null;var _0x121ccd=null;var _0x18db28='';return db[_0x1c02('0x2c')][_0x1c02('0x4d')]({'where':{'id':_0x328980[_0x1c02('0x47')]['id']},'attributes':['id','name','username',_0x1c02('0x54'),'moduleName',_0x1c02('0x55'),'serverUrl','accessKey']})[_0x1c02('0x27')](handleEntityNotFound(_0xb3671e,null))[_0x1c02('0x27')](function(_0x183787){if(_0x183787){_0x50cd37=_0x183787[_0x1c02('0x56')];_0x3dc630=_0x183787[_0x1c02('0x57')];_0x34f4e4=_0x183787['moduleName'];_0x18db28=_0x183787[_0x1c02('0x55')];var _0x5e5afd=_0x18db28[_0x1c02('0x58')](-0x1);if(_0x5e5afd==='/'){_0x18db28=_0x18db28[_0x1c02('0x59')](0x0,_0x18db28[_0x1c02('0x5a')](_0x5e5afd));}_0x121ccd=util['format'](_0x1c02('0x5b'),_0x18db28);var _0x1a6483={'method':'GET','uri':_0x121ccd,'qs':{'operation':_0x1c02('0x5c'),'username':_0x183787['username']},'json':!![]};return rp(_0x1a6483);}})['then'](function(_0x7708a4){if(_0x7708a4[_0x1c02('0x5d')]){var _0x5113e8={'method':'POST','uri':_0x121ccd,'form':{'operation':_0x1c02('0x5e'),'username':_0x50cd37,'accessKey':md5(_0x7708a4[_0x1c02('0x5f')][_0x1c02('0x60')]+_0x3dc630)},'json':!![]};return rp(_0x5113e8);}})['then'](function(_0x1bf0b6){if(_0x1bf0b6[_0x1c02('0x5d')]){var _0x3bb0e6={'method':'GET','uri':_0x121ccd,'qs':{'operation':_0x1c02('0x61'),'username':_0x50cd37,'sessionName':_0x1bf0b6[_0x1c02('0x5f')]['sessionName'],'elementType':_0x34f4e4},'json':!![]};return rp(_0x3bb0e6);}})[_0x1c02('0x27')](function(_0x4d4f6a){if(_0x4d4f6a['success']){var _0x57fbf6=[_0x1c02('0x62'),'reference',_0x1c02('0x63')];_[_0x1c02('0x64')](_0x4d4f6a[_0x1c02('0x5f')][_0x1c02('0x36')],function(_0x5117e0){return _0x57fbf6['includes'](_0x5117e0[_0x1c02('0x2f')][_0x1c02('0x2b')]);});_['remove'](_0x4d4f6a['result'][_0x1c02('0x36')],function(_0x2f67fa){return _0x2f67fa[_0x1c02('0x65')]===_0x1c02('0x66');});return{'count':_0x4d4f6a[_0x1c02('0x5f')][_0x1c02('0x36')][_0x1c02('0x37')],'rows':_[_0x1c02('0x40')](_0x4d4f6a[_0x1c02('0x5f')][_0x1c02('0x36')],function(_0x29f3ed){return{'id':_0x29f3ed[_0x1c02('0x2b')],'name':_0x29f3ed[_0x1c02('0x67')],'custom':_[_0x1c02('0x68')](_0x29f3ed[_0x1c02('0x2b')],_0x1c02('0x69'))?!![]:![],'options':_0x29f3ed[_0x1c02('0x2f')][_0x1c02('0x2b')]==='picklist'&&_0x29f3ed[_0x1c02('0x2f')]['picklistValues'][_0x1c02('0x37')]>0x0?_[_0x1c02('0x40')](_0x29f3ed[_0x1c02('0x2f')]['picklistValues'],function(_0x1c48ae){return{'name':_0x1c48ae[_0x1c02('0x67')],'value':_0x1c48ae[_0x1c02('0x6a')]};}):[]};})};}})[_0x1c02('0x27')](respondWithResult(_0xb3671e,null))[_0x1c02('0x45')](function(_0x498c01){console[_0x1c02('0x6b')](_0x1c02('0x6c')+_0x498c01);var _0x2d373b=_0x328980[_0x1c02('0x31')][_0x1c02('0x6d')]?0x1f4:_0x498c01['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x1c02('0x6e'),_0x2d373b,JSON['stringify'](_0x498c01));delete _0x498c01[_0x1c02('0x2b')];if(_0x2d373b===0x191){_0x2d373b=0x190;}_0xb3671e['status'](_0x2d373b)[_0x1c02('0x6f')](_0x328980[_0x1c02('0x31')][_0x1c02('0x6d')]?{'message':_0x1c02('0x70'),'statusCode':_0x498c01['statusCode']}:_0x498c01);});};
\ No newline at end of file
index bbef185..afccf1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f22=['path','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','api','moment','request-promise'];(function(_0x50ef24,_0x25f200){var _0x40a0a7=function(_0xb9838c){while(--_0xb9838c){_0x50ef24['push'](_0x50ef24['shift']());}};_0x40a0a7(++_0x25f200);}(_0x8f22,0x1b8));var _0x28f2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8f22[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x28f2('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x28f2('0x1'));var moment=require(_0x28f2('0x2'));var BPromise=require('bluebird');var rp=require(_0x28f2('0x3'));var fs=require('fs');var path=require(_0x28f2('0x4'));var rimraf=require(_0x28f2('0x5'));var config=require('../../config/environment');var attributes=require(_0x28f2('0x6'));var integrations=require(_0x28f2('0x7'));module[_0x28f2('0x8')]=function(_0x8463d,_0x49e25e){return _0x8463d[_0x28f2('0x9')](_0x28f2('0xa'),attributes,{'tableName':_0x28f2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae2c=['../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','util','../../config/logger','api','moment','request-promise'];(function(_0x235964,_0x7e3a0d){var _0x139d9d=function(_0x3edc55){while(--_0x3edc55){_0x235964['push'](_0x235964['shift']());}};_0x139d9d(++_0x7e3a0d);}(_0xae2c,0x7f));var _0xcae2=function(_0x263499,_0x364d7e){_0x263499=_0x263499-0x0;var _0x4229c6=_0xae2c[_0x263499];return _0x4229c6;};'use strict';var _=require('lodash');var util=require(_0xcae2('0x0'));var logger=require(_0xcae2('0x1'))(_0xcae2('0x2'));var moment=require(_0xcae2('0x3'));var BPromise=require('bluebird');var rp=require(_0xcae2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcae2('0x5'));var attributes=require(_0xcae2('0x6'));var integrations=require(_0xcae2('0x7'));module[_0xcae2('0x8')]=function(_0x50b535,_0x511d48){return _0x50b535[_0xcae2('0x9')](_0xcae2('0xa'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 20005cb..a97d85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['model','map','debug','catch','ShowVtigerAccount','find','where','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include'];(function(_0x4e783c,_0x51a362){var _0x2fbd6d=function(_0x513e00){while(--_0x513e00){_0x4e783c['push'](_0x4e783c['shift']());}};_0x2fbd6d(++_0x51a362);}(_0xb58b,0x1f1));var _0xbb58=function(_0x544d3e,_0x123c10){_0x544d3e=_0x544d3e-0x0;var _0x9dfbfa=_0xb58b[_0x544d3e];return _0x9dfbfa;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var moment=require(_0xbb58('0x1'));var BPromise=require(_0xbb58('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb58('0x3'));var db=require(_0xbb58('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb58('0x5'))('rpc');var config=require(_0xbb58('0x6'));var jayson=require(_0xbb58('0x7'));var client=jayson[_0xbb58('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27cbda,_0x323066,_0xe874f2){return new BPromise(function(_0x5d7fe8,_0xd94f1){return client[_0xbb58('0x9')](_0x27cbda,_0xe874f2)[_0xbb58('0xa')](function(_0x36ca50){logger[_0xbb58('0xb')](_0xbb58('0xc'),_0x323066,_0xbb58('0xd'));logger['debug'](_0xbb58('0xe'),_0x323066,'request\x20sent',JSON[_0xbb58('0xf')](_0x36ca50));if(_0x36ca50[_0xbb58('0x10')]){if(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x11')]===0x1f4){logger['error'](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0xd94f1(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}logger[_0xbb58('0x10')](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0x5d7fe8(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}else{logger['info']('VtigerAccount,\x20%s,\x20%s',_0x323066,_0xbb58('0xd'));_0x5d7fe8(_0x36ca50[_0xbb58('0x13')][_0xbb58('0x12')]);}})['catch'](function(_0x5edc97){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x323066,_0x5edc97);_0xd94f1(_0x5edc97);});});}exports[_0xbb58('0x14')]=function(_0x3134ea){var _0x48f3e0=this;return new Promise(function(_0xbee66,_0x497653){return db[_0xbb58('0x15')][_0xbb58('0x16')]({'raw':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x18')]===undefined?!![]:![]:!![],'where':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')]['where']||null:null,'attributes':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x19')]||null:null,'limit':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x1a')]||null:null,'include':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x1b')]?_['map'](_0x3134ea[_0xbb58('0x17')]['include'],function(_0x21964d){return{'model':db[_0x21964d[_0xbb58('0x1c')]],'as':_0x21964d['as'],'attributes':_0x21964d[_0xbb58('0x19')],'include':_0x21964d[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x21964d[_0xbb58('0x1b')],function(_0x2d556a){return{'model':db[_0x2d556a[_0xbb58('0x1c')]],'as':_0x2d556a['as'],'attributes':_0x2d556a['attributes'],'include':_0x2d556a[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x2d556a[_0xbb58('0x1b')],function(_0x129094){return{'model':db[_0x129094[_0xbb58('0x1c')]],'as':_0x129094['as'],'attributes':_0x129094[_0xbb58('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbb58('0xa')](function(_0x2ce7c3){logger[_0xbb58('0xb')](_0xbb58('0x14'),_0x3134ea);logger[_0xbb58('0x1e')](_0xbb58('0x14'),_0x3134ea,JSON[_0xbb58('0xf')](_0x2ce7c3));_0xbee66(_0x2ce7c3);})[_0xbb58('0x1f')](function(_0x3559b6){logger['error'](_0xbb58('0x14'),_0x3559b6[_0xbb58('0x12')],_0x3134ea);_0x497653(_0x48f3e0[_0xbb58('0x10')](0x1f4,_0x3559b6[_0xbb58('0x12')]));});});};exports[_0xbb58('0x20')]=function(_0x9d379f){var _0x1ba526=this;return new Promise(function(_0x643e0e,_0x3f8db3){return db['VtigerAccount'][_0xbb58('0x21')]({'raw':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x18')]===undefined?!![]:![]:!![],'where':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x22')]||null:null,'attributes':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x19')]||null:null,'include':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x1b')]?_['map'](_0x9d379f['options']['include'],function(_0x1def9f){return{'model':db[_0x1def9f[_0xbb58('0x1c')]],'as':_0x1def9f['as'],'attributes':_0x1def9f[_0xbb58('0x19')],'include':_0x1def9f[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x1def9f[_0xbb58('0x1b')],function(_0x3093bf){return{'model':db[_0x3093bf[_0xbb58('0x1c')]],'as':_0x3093bf['as'],'attributes':_0x3093bf['attributes'],'include':_0x3093bf[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x3093bf['include'],function(_0x33ec68){return{'model':db[_0x33ec68['model']],'as':_0x33ec68['as'],'attributes':_0x33ec68[_0xbb58('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x86372e){logger[_0xbb58('0xb')]('ShowVtigerAccount',_0x9d379f);logger[_0xbb58('0x1e')](_0xbb58('0x20'),_0x9d379f,JSON[_0xbb58('0xf')](_0x86372e));_0x643e0e(_0x86372e);})[_0xbb58('0x1f')](function(_0x1b86a6){logger[_0xbb58('0x10')](_0xbb58('0x20'),_0x1b86a6[_0xbb58('0x12')],_0x9d379f);_0x3f8db3(_0x1ba526['error'](0x1f4,_0x1b86a6[_0xbb58('0x12')]));});});};
\ No newline at end of file
+var _0x6b20=['../../config/environment','jayson/promise','client','http','request','VtigerAccount,\x20%s,\x20%s','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','limit','map','attributes','include','model','then','debug','stringify','catch','ShowVtigerAccount','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x6b20,0xd1));var _0x06b2=function(_0x31ef9f,_0x4a6c1e){_0x31ef9f=_0x31ef9f-0x0;var _0x39c86a=_0x6b20[_0x31ef9f];return _0x39c86a;};'use strict';var _=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var moment=require('moment');var BPromise=require(_0x06b2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x06b2('0x3'));var db=require(_0x06b2('0x4'))['db'];var utils=require(_0x06b2('0x5'));var logger=require('../../config/logger')(_0x06b2('0x6'));var config=require(_0x06b2('0x7'));var jayson=require(_0x06b2('0x8'));var client=jayson[_0x06b2('0x9')][_0x06b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37b825,_0x26a325,_0x4e6d3b){return new BPromise(function(_0x21cd31,_0x1828e4){return client[_0x06b2('0xb')](_0x37b825,_0x4e6d3b)['then'](function(_0x37ace0){logger['info'](_0x06b2('0xc'),_0x26a325,'request\x20sent');logger['debug'](_0x06b2('0xd'),_0x26a325,_0x06b2('0xe'),JSON['stringify'](_0x37ace0));if(_0x37ace0[_0x06b2('0xf')]){if(_0x37ace0[_0x06b2('0xf')][_0x06b2('0x10')]===0x1f4){logger[_0x06b2('0xf')](_0x06b2('0xc'),_0x26a325,_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);return _0x1828e4(_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);}logger[_0x06b2('0xf')](_0x06b2('0xc'),_0x26a325,_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);return _0x21cd31(_0x37ace0['error'][_0x06b2('0x11')]);}else{logger[_0x06b2('0x12')](_0x06b2('0xc'),_0x26a325,_0x06b2('0xe'));_0x21cd31(_0x37ace0[_0x06b2('0x13')][_0x06b2('0x11')]);}})['catch'](function(_0x17e69b){logger[_0x06b2('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x26a325,_0x17e69b);_0x1828e4(_0x17e69b);});});}exports[_0x06b2('0x14')]=function(_0x594b48){var _0x4c9cae=this;return new Promise(function(_0x192270,_0x1b4ab0){return db[_0x06b2('0x15')][_0x06b2('0x16')]({'raw':_0x594b48['options']?_0x594b48[_0x06b2('0x17')][_0x06b2('0x18')]===undefined?!![]:![]:!![],'where':_0x594b48[_0x06b2('0x17')]?_0x594b48[_0x06b2('0x17')][_0x06b2('0x19')]||null:null,'attributes':_0x594b48[_0x06b2('0x17')]?_0x594b48[_0x06b2('0x17')]['attributes']||null:null,'limit':_0x594b48[_0x06b2('0x17')]?_0x594b48[_0x06b2('0x17')][_0x06b2('0x1a')]||null:null,'include':_0x594b48[_0x06b2('0x17')]?_0x594b48['options']['include']?_[_0x06b2('0x1b')](_0x594b48[_0x06b2('0x17')]['include'],function(_0x39659f){return{'model':db[_0x39659f['model']],'as':_0x39659f['as'],'attributes':_0x39659f[_0x06b2('0x1c')],'include':_0x39659f[_0x06b2('0x1d')]?_[_0x06b2('0x1b')](_0x39659f['include'],function(_0x4382ce){return{'model':db[_0x4382ce[_0x06b2('0x1e')]],'as':_0x4382ce['as'],'attributes':_0x4382ce[_0x06b2('0x1c')],'include':_0x4382ce[_0x06b2('0x1d')]?_[_0x06b2('0x1b')](_0x4382ce['include'],function(_0xbb00ea){return{'model':db[_0xbb00ea[_0x06b2('0x1e')]],'as':_0xbb00ea['as'],'attributes':_0xbb00ea[_0x06b2('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x06b2('0x1f')](function(_0x1976ac){logger[_0x06b2('0x12')]('GetVtigerAccount',_0x594b48);logger[_0x06b2('0x20')](_0x06b2('0x14'),_0x594b48,JSON[_0x06b2('0x21')](_0x1976ac));_0x192270(_0x1976ac);})[_0x06b2('0x22')](function(_0x1f02d8){logger[_0x06b2('0xf')](_0x06b2('0x14'),_0x1f02d8['message'],_0x594b48);_0x1b4ab0(_0x4c9cae[_0x06b2('0xf')](0x1f4,_0x1f02d8[_0x06b2('0x11')]));});});};exports[_0x06b2('0x23')]=function(_0x15a78b){var _0x1cc725=this;return new Promise(function(_0x37d391,_0x401551){return db[_0x06b2('0x15')]['find']({'raw':_0x15a78b[_0x06b2('0x17')]?_0x15a78b[_0x06b2('0x17')][_0x06b2('0x18')]===undefined?!![]:![]:!![],'where':_0x15a78b[_0x06b2('0x17')]?_0x15a78b[_0x06b2('0x17')][_0x06b2('0x19')]||null:null,'attributes':_0x15a78b[_0x06b2('0x17')]?_0x15a78b['options']['attributes']||null:null,'include':_0x15a78b[_0x06b2('0x17')]?_0x15a78b[_0x06b2('0x17')][_0x06b2('0x1d')]?_['map'](_0x15a78b[_0x06b2('0x17')][_0x06b2('0x1d')],function(_0x37bfb5){return{'model':db[_0x37bfb5[_0x06b2('0x1e')]],'as':_0x37bfb5['as'],'attributes':_0x37bfb5[_0x06b2('0x1c')],'include':_0x37bfb5[_0x06b2('0x1d')]?_['map'](_0x37bfb5[_0x06b2('0x1d')],function(_0x1e66f1){return{'model':db[_0x1e66f1[_0x06b2('0x1e')]],'as':_0x1e66f1['as'],'attributes':_0x1e66f1['attributes'],'include':_0x1e66f1[_0x06b2('0x1d')]?_[_0x06b2('0x1b')](_0x1e66f1['include'],function(_0x45ea67){return{'model':db[_0x45ea67[_0x06b2('0x1e')]],'as':_0x45ea67['as'],'attributes':_0x45ea67[_0x06b2('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x06b2('0x1f')](function(_0x2e49df){logger[_0x06b2('0x12')](_0x06b2('0x23'),_0x15a78b);logger[_0x06b2('0x20')](_0x06b2('0x23'),_0x15a78b,JSON[_0x06b2('0x21')](_0x2e49df));_0x37d391(_0x2e49df);})[_0x06b2('0x22')](function(_0x1cc7b6){logger['error'](_0x06b2('0x23'),_0x1cc7b6['message'],_0x15a78b);_0x401551(_0x1cc725['error'](0x1f4,_0x1cc7b6[_0x06b2('0x11')]));});});};
\ No newline at end of file
index b6f328c..425de72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa58c=['create','put','delete','destroy','path','express','fs-extra','../../components/interaction/service','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','post'];(function(_0x2fd1e5,_0x1932f3){var _0x1d1d22=function(_0x7448a4){while(--_0x7448a4){_0x2fd1e5['push'](_0x2fd1e5['shift']());}};_0x1d1d22(++_0x1932f3);}(_0xa58c,0x1a6));var _0xca58=function(_0x5288bf,_0x2b21ee){_0x5288bf=_0x5288bf-0x0;var _0x52adf4=_0xa58c[_0x5288bf];return _0x52adf4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xca58('0x0'));var timeout=require('connect-timeout');var express=require(_0xca58('0x1'));var router=express['Router']();var fs_extra=require(_0xca58('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xca58('0x3'));var config=require('../../config/environment');var controller=require(_0xca58('0x4'));router[_0xca58('0x5')]('/',auth[_0xca58('0x6')](),controller[_0xca58('0x7')]);router[_0xca58('0x5')](_0xca58('0x8'),auth[_0xca58('0x6')](),controller[_0xca58('0x9')]);router[_0xca58('0x5')](_0xca58('0xa'),auth[_0xca58('0x6')](),controller[_0xca58('0xb')]);router[_0xca58('0x5')](_0xca58('0xc'),auth[_0xca58('0x6')](),controller['getSubjects']);router[_0xca58('0x5')](_0xca58('0xd'),auth[_0xca58('0x6')](),controller['getDescriptions']);router[_0xca58('0xe')]('/',auth[_0xca58('0x6')](),controller[_0xca58('0xf')]);router[_0xca58('0x10')]('/:id',auth[_0xca58('0x6')](),controller['update']);router[_0xca58('0x11')]('/:id',auth[_0xca58('0x6')](),controller[_0xca58('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xae3a=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id'];(function(_0x1719a2,_0x357eda){var _0x4295a0=function(_0x4e53dd){while(--_0x4e53dd){_0x1719a2['push'](_0x1719a2['shift']());}};_0x4295a0(++_0x357eda);}(_0xae3a,0x120));var _0xaae3=function(_0x5d9c37,_0x518b93){_0x5d9c37=_0x5d9c37-0x0;var _0x1ba9eb=_0xae3a[_0x5d9c37];return _0x1ba9eb;};'use strict';var multer=require(_0xaae3('0x0'));var util=require('util');var path=require(_0xaae3('0x1'));var timeout=require(_0xaae3('0x2'));var express=require(_0xaae3('0x3'));var router=express[_0xaae3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xaae3('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xaae3('0x6'));var controller=require('./intVtigerConfiguration.controller');router['get']('/',auth[_0xaae3('0x7')](),controller[_0xaae3('0x8')]);router[_0xaae3('0x9')](_0xaae3('0xa'),auth[_0xaae3('0x7')](),controller[_0xaae3('0xb')]);router[_0xaae3('0x9')](_0xaae3('0xc'),auth[_0xaae3('0x7')](),controller[_0xaae3('0xd')]);router[_0xaae3('0x9')]('/:id/subjects',auth[_0xaae3('0x7')](),controller[_0xaae3('0xe')]);router[_0xaae3('0x9')](_0xaae3('0xf'),auth[_0xaae3('0x7')](),controller[_0xaae3('0x10')]);router[_0xaae3('0x11')]('/',auth[_0xaae3('0x7')](),controller['create']);router[_0xaae3('0x12')](_0xaae3('0xa'),auth[_0xaae3('0x7')](),controller[_0xaae3('0x13')]);router[_0xaae3('0x14')](_0xaae3('0xa'),auth['isAuthenticated'](),controller[_0xaae3('0x15')]);module[_0xaae3('0x16')]=router;
\ No newline at end of file
index abadd56..4866671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa884=['sequelize','STRING'];(function(_0x41dfac,_0x278319){var _0x12900b=function(_0x3324cd){while(--_0x3324cd){_0x41dfac['push'](_0x41dfac['shift']());}};_0x12900b(++_0x278319);}(_0xa884,0xb2));var _0x4a88=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa884[_0xa1e3e3];return _0xc980e9;};'use strict';var Sequelize=require(_0x4a88('0x0'));module['exports']={'name':{'type':Sequelize[_0x4a88('0x1')]},'description':{'type':Sequelize[_0x4a88('0x1')]}};
\ No newline at end of file
+var _0x8e98=['STRING','exports'];(function(_0x2cb0fd,_0x55132c){var _0x4e1062=function(_0x48e064){while(--_0x48e064){_0x2cb0fd['push'](_0x2cb0fd['shift']());}};_0x4e1062(++_0x55132c);}(_0x8e98,0x10b));var _0x88e9=function(_0x2873e4,_0x5a16be){_0x2873e4=_0x2873e4-0x0;var _0x42f070=_0x8e98[_0x2873e4];return _0x42f070;};'use strict';var Sequelize=require('sequelize');module[_0x88e9('0x0')]={'name':{'type':Sequelize[_0x88e9('0x1')]},'description':{'type':Sequelize[_0x88e9('0x1')]}};
\ No newline at end of file
index c3443dd..144dedb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fc=['mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','nolimit','sort','filter','VIRTUAL','merge','where','count','include','VtigerConfiguration','findAll','catch','show','keys','includeAll','find','create','body','params','findOne','VtigerField','order','pick','options','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x68fc,0x9d));var _0xc68f=function(_0x24fff0,_0x3f887e){_0x24fff0=_0x24fff0-0x0;var _0x1dfa55=_0x68fc[_0x24fff0];return _0x1dfa55;};'use strict';var emlformat=require(_0xc68f('0x0'));var rimraf=require(_0xc68f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc68f('0x2'));var rp=require(_0xc68f('0x3'));var moment=require(_0xc68f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc68f('0x5'));var util=require(_0xc68f('0x6'));var path=require(_0xc68f('0x7'));var sox=require(_0xc68f('0x8'));var csv=require(_0xc68f('0x9'));var ejs=require(_0xc68f('0xa'));var fs=require('fs');var fs_extra=require(_0xc68f('0xb'));var _=require(_0xc68f('0xc'));var squel=require(_0xc68f('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc68f('0xe'));var toCsv=require(_0xc68f('0x9'));var querystring=require(_0xc68f('0xf'));var Papa=require(_0xc68f('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc68f('0x11'));var as=require(_0xc68f('0x12'));var hardwareService=require(_0xc68f('0x13'));var logger=require(_0xc68f('0x14'))(_0xc68f('0x15'));var utils=require(_0xc68f('0x16'));var config=require(_0xc68f('0x17'));var licenseUtil=require(_0xc68f('0x18'));var db=require(_0xc68f('0x19'))['db'];function respondWithStatusCode(_0x592e15,_0x52e445){_0x52e445=_0x52e445||0xcc;return function(_0xf02fdc){if(_0xf02fdc){return _0x592e15[_0xc68f('0x1a')](_0x52e445);}return _0x592e15[_0xc68f('0x1b')](_0x52e445)[_0xc68f('0x1c')]();};}function respondWithResult(_0x1a1872,_0x372d7e){_0x372d7e=_0x372d7e||0xc8;return function(_0x190755){if(_0x190755){return _0x1a1872[_0xc68f('0x1b')](_0x372d7e)['json'](_0x190755);}};}function respondWithFilteredResult(_0x471a9a,_0x6b62ed){return function(_0x5ac49e){if(_0x5ac49e){var _0x3210f2=typeof _0x6b62ed[_0xc68f('0x1d')]===_0xc68f('0x1e')&&typeof _0x6b62ed[_0xc68f('0x1f')]===_0xc68f('0x1e');var _0x3b564=_0x5ac49e['count'];var _0x1bf828=_0x3210f2?0x0:_0x6b62ed[_0xc68f('0x1d')];var _0x2945e2=_0x3210f2?_0x5ac49e['count']:_0x6b62ed[_0xc68f('0x1d')]+_0x6b62ed[_0xc68f('0x1f')];var _0x1cc78e;if(_0x2945e2>=_0x3b564){_0x2945e2=_0x3b564;_0x1cc78e=0xc8;}else{_0x1cc78e=0xce;}_0x471a9a[_0xc68f('0x1b')](_0x1cc78e);return _0x471a9a[_0xc68f('0x20')](_0xc68f('0x21'),_0x1bf828+'-'+_0x2945e2+'/'+_0x3b564)[_0xc68f('0x22')](_0x5ac49e);}return null;};}function patchUpdates(_0x441867){return function(_0x23e3de){try{jsonpatch[_0xc68f('0x23')](_0x23e3de,_0x441867,!![]);}catch(_0x2af3f7){return BPromise[_0xc68f('0x24')](_0x2af3f7);}return _0x23e3de[_0xc68f('0x25')]();};}function saveUpdates(_0x151747,_0x3f0123){return function(_0x415e96){if(_0x415e96){return _0x415e96[_0xc68f('0x26')](_0x151747)[_0xc68f('0x27')](function(_0x54938a){return _0x54938a;});}return null;};}function removeEntity(_0x4b2770,_0x374859){return function(_0x39d2bd){if(_0x39d2bd){return _0x39d2bd[_0xc68f('0x28')]()[_0xc68f('0x27')](function(){_0x4b2770['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c8623,_0x44b013){return function(_0x116d56){if(!_0x116d56){_0x1c8623['sendStatus'](0x194);}return _0x116d56;};}function handleError(_0x9a996b,_0x208bd0){_0x208bd0=_0x208bd0||0x1f4;return function(_0x2fd04d){logger[_0xc68f('0x29')](_0x2fd04d['stack']);if(_0x2fd04d[_0xc68f('0x2a')]){delete _0x2fd04d[_0xc68f('0x2a')];}_0x9a996b[_0xc68f('0x1b')](_0x208bd0)['send'](_0x2fd04d);};}exports['index']=function(_0x191436,_0x1bba22){var _0x47de0b={},_0x2731db={},_0xfbe7c0={'count':0x0,'rows':[]};var _0x5a5b25=_['map'](db['VtigerConfiguration'][_0xc68f('0x2b')],function(_0x3fce4a){return{'name':_0x3fce4a[_0xc68f('0x2c')],'type':_0x3fce4a[_0xc68f('0x2d')][_0xc68f('0x2e')]};});_0x2731db[_0xc68f('0x2f')]=_[_0xc68f('0x30')](_0x5a5b25,_0xc68f('0x2a'));_0x2731db[_0xc68f('0x31')]=_['keys'](_0x191436[_0xc68f('0x31')]);_0x2731db[_0xc68f('0x32')]=_[_0xc68f('0x33')](_0x2731db[_0xc68f('0x2f')],_0x2731db[_0xc68f('0x31')]);_0x47de0b[_0xc68f('0x34')]=_['intersection'](_0x2731db[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x191436[_0xc68f('0x31')]['fields']));_0x47de0b[_0xc68f('0x34')]=_0x47de0b[_0xc68f('0x34')][_0xc68f('0x36')]?_0x47de0b[_0xc68f('0x34')]:_0x2731db['model'];if(!_0x191436[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x47de0b['limit']=qs['limit'](_0x191436[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x47de0b[_0xc68f('0x1d')]=qs['offset'](_0x191436['query'][_0xc68f('0x1d')]);}_0x47de0b['order']=qs[_0xc68f('0x38')](_0x191436['query'][_0xc68f('0x38')]);_0x47de0b['where']=qs['filters'](_['pick'](_0x191436[_0xc68f('0x31')],_0x2731db['filters']),_0x5a5b25);if(_0x191436[_0xc68f('0x31')][_0xc68f('0x39')]){_0x47de0b['where']=_['merge'](_0x47de0b['where'],{'$or':_[_0xc68f('0x30')](_0x5a5b25,function(_0x4056d2){if(_0x4056d2[_0xc68f('0x2d')]!==_0xc68f('0x3a')){var _0x396cad={};_0x396cad[_0x4056d2[_0xc68f('0x2a')]]={'$like':'%'+_0x191436[_0xc68f('0x31')][_0xc68f('0x39')]+'%'};return _0x396cad;}})});}_0x47de0b=_[_0xc68f('0x3b')]({},_0x47de0b,_0x191436['options']);var _0x270fe6={'where':_0x47de0b[_0xc68f('0x3c')]};return db['VtigerConfiguration']['count'](_0x270fe6)[_0xc68f('0x27')](function(_0xb0f3e2){_0xfbe7c0[_0xc68f('0x3d')]=_0xb0f3e2;if(_0x191436[_0xc68f('0x31')]['includeAll']){_0x47de0b[_0xc68f('0x3e')]=[{'all':!![]}];}return db[_0xc68f('0x3f')][_0xc68f('0x40')](_0x47de0b);})[_0xc68f('0x27')](function(_0x21f3ed){_0xfbe7c0['rows']=_0x21f3ed;return _0xfbe7c0;})[_0xc68f('0x27')](respondWithFilteredResult(_0x1bba22,_0x47de0b))[_0xc68f('0x41')](handleError(_0x1bba22,null));};exports[_0xc68f('0x42')]=function(_0x5c9255,_0x3df415){var _0x303f39={'raw':![],'where':{'id':_0x5c9255['params']['id']}},_0x52fd06={};_0x52fd06['model']=_[_0xc68f('0x43')](db[_0xc68f('0x3f')][_0xc68f('0x2b')]);_0x52fd06[_0xc68f('0x31')]=_[_0xc68f('0x43')](_0x5c9255[_0xc68f('0x31')]);_0x52fd06['filters']=_[_0xc68f('0x33')](_0x52fd06['model'],_0x52fd06['query']);_0x303f39[_0xc68f('0x34')]=_['intersection'](_0x52fd06[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x5c9255[_0xc68f('0x31')][_0xc68f('0x35')]));_0x303f39[_0xc68f('0x34')]=_0x303f39[_0xc68f('0x34')][_0xc68f('0x36')]?_0x303f39[_0xc68f('0x34')]:_0x52fd06['model'];if(_0x5c9255['query'][_0xc68f('0x44')]){_0x303f39[_0xc68f('0x3e')]=[{'all':!![]}];}_0x303f39=_[_0xc68f('0x3b')]({},_0x303f39,_0x5c9255['options']);return db['VtigerConfiguration'][_0xc68f('0x45')](_0x303f39)['then'](handleEntityNotFound(_0x3df415,null))['then'](respondWithResult(_0x3df415,null))['catch'](handleError(_0x3df415,null));};exports['create']=function(_0x4c6fd8,_0x544b69){return db[_0xc68f('0x3f')][_0xc68f('0x46')](_0x4c6fd8[_0xc68f('0x47')],{})['then'](respondWithResult(_0x544b69,0xc9))['catch'](handleError(_0x544b69,null));};exports[_0xc68f('0x26')]=function(_0x41c7b6,_0x27e0e6){if(_0x41c7b6[_0xc68f('0x47')]['id']){delete _0x41c7b6[_0xc68f('0x47')]['id'];}return db[_0xc68f('0x3f')][_0xc68f('0x45')]({'where':{'id':_0x41c7b6[_0xc68f('0x48')]['id']}})['then'](handleEntityNotFound(_0x27e0e6,null))[_0xc68f('0x27')](saveUpdates(_0x41c7b6[_0xc68f('0x47')],null))[_0xc68f('0x27')](respondWithResult(_0x27e0e6,null))[_0xc68f('0x41')](handleError(_0x27e0e6,null));};exports[_0xc68f('0x28')]=function(_0x2db56f,_0x1fa8cd){return db[_0xc68f('0x3f')][_0xc68f('0x45')]({'where':{'id':_0x2db56f[_0xc68f('0x48')]['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x1fa8cd,null))[_0xc68f('0x27')](removeEntity(_0x1fa8cd,null))[_0xc68f('0x41')](handleError(_0x1fa8cd,null));};exports['getFields']=function(_0x13e573,_0x88200e,_0x58a419){var _0x544dc7={};var _0x2b952={};var _0x3ee99f;var _0x47e150;return db['VtigerConfiguration'][_0xc68f('0x49')]({'where':{'id':_0x13e573['params']['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x88200e,null))[_0xc68f('0x27')](function(_0x26779f){if(_0x26779f){_0x3ee99f=_0x26779f;_0x2b952[_0xc68f('0x2f')]=_[_0xc68f('0x43')](db[_0xc68f('0x4a')][_0xc68f('0x2b')]);_0x2b952['query']=_[_0xc68f('0x43')](_0x13e573[_0xc68f('0x31')]);_0x2b952['filters']=_[_0xc68f('0x33')](_0x2b952['model'],_0x2b952['query']);_0x544dc7[_0xc68f('0x34')]=_[_0xc68f('0x33')](_0x2b952[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x13e573[_0xc68f('0x31')][_0xc68f('0x35')]));_0x544dc7['attributes']=_0x544dc7[_0xc68f('0x34')][_0xc68f('0x36')]?_0x544dc7[_0xc68f('0x34')]:_0x2b952['model'];_0x544dc7[_0xc68f('0x4b')]=qs[_0xc68f('0x38')](_0x13e573['query'][_0xc68f('0x38')]);_0x544dc7[_0xc68f('0x3c')]=qs[_0xc68f('0x32')](_[_0xc68f('0x4c')](_0x13e573['query'],_0x2b952['filters']));if(_0x13e573[_0xc68f('0x31')][_0xc68f('0x39')]){_0x544dc7[_0xc68f('0x3c')]=_[_0xc68f('0x3b')](_0x544dc7[_0xc68f('0x3c')],{'$or':_[_0xc68f('0x30')](_0x544dc7['attributes'],function(_0x446123){var _0x3db8ac={};_0x3db8ac[_0x446123]={'$like':'%'+_0x13e573[_0xc68f('0x31')][_0xc68f('0x39')]+'%'};return _0x3db8ac;})});}_0x544dc7=_[_0xc68f('0x3b')]({},_0x544dc7,_0x13e573[_0xc68f('0x4d')]);return _0x3ee99f[_0xc68f('0x4e')](_0x544dc7);}})[_0xc68f('0x27')](function(_0x1ede44){if(_0x1ede44){_0x47e150=_0x1ede44[_0xc68f('0x36')];if(!_0x13e573[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x544dc7['limit']=qs[_0xc68f('0x1f')](_0x13e573[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x544dc7[_0xc68f('0x1d')]=qs['offset'](_0x13e573[_0xc68f('0x31')]['offset']);}return _0x3ee99f[_0xc68f('0x4e')](_0x544dc7);}})[_0xc68f('0x27')](function(_0x1e8da0){if(_0x1e8da0){return _0x1e8da0?{'count':_0x47e150,'rows':_0x1e8da0}:null;}})['then'](respondWithResult(_0x88200e,null))['catch'](handleError(_0x88200e,null));};exports[_0xc68f('0x4f')]=function(_0x22ed18,_0x40b249,_0x4c4a19){var _0x432a78={};var _0x39d4b7={};var _0x3c909e;var _0x5402b3;return db[_0xc68f('0x3f')]['findOne']({'where':{'id':_0x22ed18[_0xc68f('0x48')]['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x40b249,null))[_0xc68f('0x27')](function(_0x2ef4ef){if(_0x2ef4ef){_0x3c909e=_0x2ef4ef;_0x39d4b7[_0xc68f('0x2f')]=_[_0xc68f('0x43')](db[_0xc68f('0x4a')][_0xc68f('0x2b')]);_0x39d4b7['query']=_[_0xc68f('0x43')](_0x22ed18['query']);_0x39d4b7[_0xc68f('0x32')]=_[_0xc68f('0x33')](_0x39d4b7[_0xc68f('0x2f')],_0x39d4b7[_0xc68f('0x31')]);_0x432a78[_0xc68f('0x34')]=_[_0xc68f('0x33')](_0x39d4b7[_0xc68f('0x2f')],qs['fields'](_0x22ed18['query']['fields']));_0x432a78[_0xc68f('0x34')]=_0x432a78[_0xc68f('0x34')][_0xc68f('0x36')]?_0x432a78[_0xc68f('0x34')]:_0x39d4b7[_0xc68f('0x2f')];_0x432a78[_0xc68f('0x4b')]=qs[_0xc68f('0x38')](_0x22ed18['query'][_0xc68f('0x38')]);_0x432a78[_0xc68f('0x3c')]=qs[_0xc68f('0x32')](_[_0xc68f('0x4c')](_0x22ed18['query'],_0x39d4b7['filters']));if(_0x22ed18[_0xc68f('0x31')][_0xc68f('0x39')]){_0x432a78[_0xc68f('0x3c')]=_[_0xc68f('0x3b')](_0x432a78[_0xc68f('0x3c')],{'$or':_[_0xc68f('0x30')](_0x432a78[_0xc68f('0x34')],function(_0x38b1e0){var _0x48d0d7={};_0x48d0d7[_0x38b1e0]={'$like':'%'+_0x22ed18['query'][_0xc68f('0x39')]+'%'};return _0x48d0d7;})});}_0x432a78=_[_0xc68f('0x3b')]({},_0x432a78,_0x22ed18['options']);return _0x3c909e[_0xc68f('0x4f')](_0x432a78);}})[_0xc68f('0x27')](function(_0x1c464d){if(_0x1c464d){_0x5402b3=_0x1c464d[_0xc68f('0x36')];if(!_0x22ed18[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x432a78[_0xc68f('0x1f')]=qs[_0xc68f('0x1f')](_0x22ed18[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x432a78[_0xc68f('0x1d')]=qs[_0xc68f('0x1d')](_0x22ed18[_0xc68f('0x31')]['offset']);}return _0x3c909e[_0xc68f('0x4f')](_0x432a78);}})[_0xc68f('0x27')](function(_0xd2ba9e){if(_0xd2ba9e){return _0xd2ba9e?{'count':_0x5402b3,'rows':_0xd2ba9e}:null;}})['then'](respondWithResult(_0x40b249,null))[_0xc68f('0x41')](handleError(_0x40b249,null));};exports[_0xc68f('0x50')]=function(_0x254eb2,_0x5d9c2b,_0x482c18){var _0x979bfe={};var _0x4a7f32={};var _0x2e3a01;var _0xcd8323;return db[_0xc68f('0x3f')][_0xc68f('0x49')]({'where':{'id':_0x254eb2[_0xc68f('0x48')]['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x5d9c2b,null))[_0xc68f('0x27')](function(_0x46511b){if(_0x46511b){_0x2e3a01=_0x46511b;_0x4a7f32[_0xc68f('0x2f')]=_[_0xc68f('0x43')](db['VtigerField'][_0xc68f('0x2b')]);_0x4a7f32['query']=_[_0xc68f('0x43')](_0x254eb2['query']);_0x4a7f32[_0xc68f('0x32')]=_[_0xc68f('0x33')](_0x4a7f32[_0xc68f('0x2f')],_0x4a7f32[_0xc68f('0x31')]);_0x979bfe[_0xc68f('0x34')]=_[_0xc68f('0x33')](_0x4a7f32[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x254eb2['query'][_0xc68f('0x35')]));_0x979bfe[_0xc68f('0x34')]=_0x979bfe[_0xc68f('0x34')]['length']?_0x979bfe[_0xc68f('0x34')]:_0x4a7f32['model'];_0x979bfe[_0xc68f('0x4b')]=qs['sort'](_0x254eb2[_0xc68f('0x31')][_0xc68f('0x38')]);_0x979bfe['where']=qs['filters'](_['pick'](_0x254eb2['query'],_0x4a7f32['filters']));if(_0x254eb2[_0xc68f('0x31')][_0xc68f('0x39')]){_0x979bfe[_0xc68f('0x3c')]=_[_0xc68f('0x3b')](_0x979bfe[_0xc68f('0x3c')],{'$or':_[_0xc68f('0x30')](_0x979bfe['attributes'],function(_0x3a1c85){var _0x1dd4b6={};_0x1dd4b6[_0x3a1c85]={'$like':'%'+_0x254eb2['query'][_0xc68f('0x39')]+'%'};return _0x1dd4b6;})});}_0x979bfe=_[_0xc68f('0x3b')]({},_0x979bfe,_0x254eb2[_0xc68f('0x4d')]);return _0x2e3a01[_0xc68f('0x50')](_0x979bfe);}})[_0xc68f('0x27')](function(_0x2338a0){if(_0x2338a0){_0xcd8323=_0x2338a0[_0xc68f('0x36')];if(!_0x254eb2[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x979bfe[_0xc68f('0x1f')]=qs[_0xc68f('0x1f')](_0x254eb2[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x979bfe[_0xc68f('0x1d')]=qs[_0xc68f('0x1d')](_0x254eb2[_0xc68f('0x31')][_0xc68f('0x1d')]);}return _0x2e3a01[_0xc68f('0x50')](_0x979bfe);}})[_0xc68f('0x27')](function(_0x238dfb){if(_0x238dfb){return _0x238dfb?{'count':_0xcd8323,'rows':_0x238dfb}:null;}})[_0xc68f('0x27')](respondWithResult(_0x5d9c2b,null))['catch'](handleError(_0x5d9c2b,null));};
\ No newline at end of file
+var _0xb63f=['getFields','findOne','sort','getSubjects','VtigerField','nolimit','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','sendStatus','stack','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','catch','create','body'];(function(_0xd75b98,_0x15ad99){var _0xdd720e=function(_0x326b38){while(--_0x326b38){_0xd75b98['push'](_0xd75b98['shift']());}};_0xdd720e(++_0x15ad99);}(_0xb63f,0xa3));var _0xfb63=function(_0x21cb7f,_0x48cd16){_0x21cb7f=_0x21cb7f-0x0;var _0x5a079a=_0xb63f[_0x21cb7f];return _0x5a079a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfb63('0x0'));var jsonpatch=require(_0xfb63('0x1'));var rp=require(_0xfb63('0x2'));var moment=require(_0xfb63('0x3'));var BPromise=require(_0xfb63('0x4'));var Mustache=require(_0xfb63('0x5'));var util=require(_0xfb63('0x6'));var path=require(_0xfb63('0x7'));var sox=require(_0xfb63('0x8'));var csv=require('to-csv');var ejs=require(_0xfb63('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfb63('0xa'));var squel=require(_0xfb63('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfb63('0xc'));var querystring=require(_0xfb63('0xd'));var Papa=require(_0xfb63('0xe'));var Redis=require('ioredis');var authService=require(_0xfb63('0xf'));var qs=require(_0xfb63('0x10'));var as=require(_0xfb63('0x11'));var hardwareService=require(_0xfb63('0x12'));var logger=require(_0xfb63('0x13'))(_0xfb63('0x14'));var utils=require(_0xfb63('0x15'));var config=require(_0xfb63('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xee69d,_0x233ec3){_0x233ec3=_0x233ec3||0xcc;return function(_0xa2f034){if(_0xa2f034){return _0xee69d['sendStatus'](_0x233ec3);}return _0xee69d[_0xfb63('0x17')](_0x233ec3)[_0xfb63('0x18')]();};}function respondWithResult(_0x48a22c,_0x4575b6){_0x4575b6=_0x4575b6||0xc8;return function(_0x377d1e){if(_0x377d1e){return _0x48a22c[_0xfb63('0x17')](_0x4575b6)[_0xfb63('0x19')](_0x377d1e);}};}function respondWithFilteredResult(_0x51e7ef,_0x44619e){return function(_0x48e2c0){if(_0x48e2c0){var _0x19f196=typeof _0x44619e[_0xfb63('0x1a')]===_0xfb63('0x1b')&&typeof _0x44619e[_0xfb63('0x1c')]===_0xfb63('0x1b');var _0x49081d=_0x48e2c0[_0xfb63('0x1d')];var _0x5dfd32=_0x19f196?0x0:_0x44619e[_0xfb63('0x1a')];var _0x4f7508=_0x19f196?_0x48e2c0[_0xfb63('0x1d')]:_0x44619e[_0xfb63('0x1a')]+_0x44619e[_0xfb63('0x1c')];var _0x452f1e;if(_0x4f7508>=_0x49081d){_0x4f7508=_0x49081d;_0x452f1e=0xc8;}else{_0x452f1e=0xce;}_0x51e7ef['status'](_0x452f1e);return _0x51e7ef[_0xfb63('0x1e')]('Content-Range',_0x5dfd32+'-'+_0x4f7508+'/'+_0x49081d)[_0xfb63('0x19')](_0x48e2c0);}return null;};}function patchUpdates(_0x3ef0cf){return function(_0x564052){try{jsonpatch[_0xfb63('0x1f')](_0x564052,_0x3ef0cf,!![]);}catch(_0x23c4fb){return BPromise['reject'](_0x23c4fb);}return _0x564052[_0xfb63('0x20')]();};}function saveUpdates(_0x43bf68,_0x267953){return function(_0x34e22c){if(_0x34e22c){return _0x34e22c[_0xfb63('0x21')](_0x43bf68)[_0xfb63('0x22')](function(_0x17f81e){return _0x17f81e;});}return null;};}function removeEntity(_0x1bbedc,_0x43c245){return function(_0xa7612f){if(_0xa7612f){return _0xa7612f[_0xfb63('0x23')]()[_0xfb63('0x22')](function(){_0x1bbedc[_0xfb63('0x17')](0xcc)[_0xfb63('0x18')]();});}};}function handleEntityNotFound(_0x26036d,_0x19ea95){return function(_0x1b8f0a){if(!_0x1b8f0a){_0x26036d[_0xfb63('0x24')](0x194);}return _0x1b8f0a;};}function handleError(_0x49482f,_0x2bbe9a){_0x2bbe9a=_0x2bbe9a||0x1f4;return function(_0x4c80c1){logger['error'](_0x4c80c1[_0xfb63('0x25')]);if(_0x4c80c1[_0xfb63('0x26')]){delete _0x4c80c1[_0xfb63('0x26')];}_0x49482f[_0xfb63('0x17')](_0x2bbe9a)[_0xfb63('0x27')](_0x4c80c1);};}exports[_0xfb63('0x28')]=function(_0x594962,_0x45e231){var _0x2a008e={},_0x441dd7={},_0x188501={'count':0x0,'rows':[]};var _0x3c910b=_[_0xfb63('0x29')](db[_0xfb63('0x2a')][_0xfb63('0x2b')],function(_0x293909){return{'name':_0x293909[_0xfb63('0x2c')],'type':_0x293909[_0xfb63('0x2d')]['key']};});_0x441dd7[_0xfb63('0x2e')]=_['map'](_0x3c910b,_0xfb63('0x26'));_0x441dd7[_0xfb63('0x2f')]=_[_0xfb63('0x30')](_0x594962['query']);_0x441dd7['filters']=_[_0xfb63('0x31')](_0x441dd7['model'],_0x441dd7['query']);_0x2a008e[_0xfb63('0x32')]=_['intersection'](_0x441dd7[_0xfb63('0x2e')],qs[_0xfb63('0x33')](_0x594962[_0xfb63('0x2f')][_0xfb63('0x33')]));_0x2a008e[_0xfb63('0x32')]=_0x2a008e[_0xfb63('0x32')][_0xfb63('0x34')]?_0x2a008e[_0xfb63('0x32')]:_0x441dd7['model'];if(!_0x594962['query'][_0xfb63('0x35')]('nolimit')){_0x2a008e[_0xfb63('0x1c')]=qs[_0xfb63('0x1c')](_0x594962[_0xfb63('0x2f')][_0xfb63('0x1c')]);_0x2a008e[_0xfb63('0x1a')]=qs['offset'](_0x594962['query'][_0xfb63('0x1a')]);}_0x2a008e[_0xfb63('0x36')]=qs['sort'](_0x594962['query']['sort']);_0x2a008e[_0xfb63('0x37')]=qs[_0xfb63('0x38')](_[_0xfb63('0x39')](_0x594962['query'],_0x441dd7[_0xfb63('0x38')]),_0x3c910b);if(_0x594962[_0xfb63('0x2f')][_0xfb63('0x3a')]){_0x2a008e[_0xfb63('0x37')]=_[_0xfb63('0x3b')](_0x2a008e[_0xfb63('0x37')],{'$or':_[_0xfb63('0x29')](_0x3c910b,function(_0x579ca5){if(_0x579ca5['type']!==_0xfb63('0x3c')){var _0x4fb080={};_0x4fb080[_0x579ca5[_0xfb63('0x26')]]={'$like':'%'+_0x594962[_0xfb63('0x2f')][_0xfb63('0x3a')]+'%'};return _0x4fb080;}})});}_0x2a008e=_[_0xfb63('0x3b')]({},_0x2a008e,_0x594962[_0xfb63('0x3d')]);var _0x38ecc3={'where':_0x2a008e[_0xfb63('0x37')]};return db[_0xfb63('0x2a')][_0xfb63('0x1d')](_0x38ecc3)[_0xfb63('0x22')](function(_0x3d745a){_0x188501[_0xfb63('0x1d')]=_0x3d745a;if(_0x594962[_0xfb63('0x2f')][_0xfb63('0x3e')]){_0x2a008e[_0xfb63('0x3f')]=[{'all':!![]}];}return db[_0xfb63('0x2a')][_0xfb63('0x40')](_0x2a008e);})[_0xfb63('0x22')](function(_0x3f0d52){_0x188501[_0xfb63('0x41')]=_0x3f0d52;return _0x188501;})[_0xfb63('0x22')](respondWithFilteredResult(_0x45e231,_0x2a008e))['catch'](handleError(_0x45e231,null));};exports['show']=function(_0x29786a,_0x54346d){var _0x3bdc62={'raw':![],'where':{'id':_0x29786a[_0xfb63('0x42')]['id']}},_0x1fc68b={};_0x1fc68b[_0xfb63('0x2e')]=_[_0xfb63('0x30')](db[_0xfb63('0x2a')][_0xfb63('0x2b')]);_0x1fc68b[_0xfb63('0x2f')]=_[_0xfb63('0x30')](_0x29786a[_0xfb63('0x2f')]);_0x1fc68b[_0xfb63('0x38')]=_[_0xfb63('0x31')](_0x1fc68b['model'],_0x1fc68b[_0xfb63('0x2f')]);_0x3bdc62[_0xfb63('0x32')]=_[_0xfb63('0x31')](_0x1fc68b[_0xfb63('0x2e')],qs[_0xfb63('0x33')](_0x29786a[_0xfb63('0x2f')][_0xfb63('0x33')]));_0x3bdc62[_0xfb63('0x32')]=_0x3bdc62[_0xfb63('0x32')]['length']?_0x3bdc62[_0xfb63('0x32')]:_0x1fc68b[_0xfb63('0x2e')];if(_0x29786a[_0xfb63('0x2f')][_0xfb63('0x3e')]){_0x3bdc62[_0xfb63('0x3f')]=[{'all':!![]}];}_0x3bdc62=_[_0xfb63('0x3b')]({},_0x3bdc62,_0x29786a['options']);return db[_0xfb63('0x2a')][_0xfb63('0x43')](_0x3bdc62)[_0xfb63('0x22')](handleEntityNotFound(_0x54346d,null))[_0xfb63('0x22')](respondWithResult(_0x54346d,null))[_0xfb63('0x44')](handleError(_0x54346d,null));};exports[_0xfb63('0x45')]=function(_0x2cf398,_0x13030c){return db[_0xfb63('0x2a')]['create'](_0x2cf398[_0xfb63('0x46')],{})[_0xfb63('0x22')](respondWithResult(_0x13030c,0xc9))[_0xfb63('0x44')](handleError(_0x13030c,null));};exports[_0xfb63('0x21')]=function(_0x27a179,_0x1f0478){if(_0x27a179[_0xfb63('0x46')]['id']){delete _0x27a179[_0xfb63('0x46')]['id'];}return db[_0xfb63('0x2a')]['find']({'where':{'id':_0x27a179[_0xfb63('0x42')]['id']}})[_0xfb63('0x22')](handleEntityNotFound(_0x1f0478,null))[_0xfb63('0x22')](saveUpdates(_0x27a179[_0xfb63('0x46')],null))[_0xfb63('0x22')](respondWithResult(_0x1f0478,null))[_0xfb63('0x44')](handleError(_0x1f0478,null));};exports['destroy']=function(_0x39d921,_0x24aa62){return db['VtigerConfiguration'][_0xfb63('0x43')]({'where':{'id':_0x39d921[_0xfb63('0x42')]['id']}})[_0xfb63('0x22')](handleEntityNotFound(_0x24aa62,null))[_0xfb63('0x22')](removeEntity(_0x24aa62,null))[_0xfb63('0x44')](handleError(_0x24aa62,null));};exports[_0xfb63('0x47')]=function(_0xf95110,_0x43c1a8,_0x10aa68){var _0x1ccb6a={};var _0x69a7eb={};var _0x577412;var _0x17aad5;return db[_0xfb63('0x2a')][_0xfb63('0x48')]({'where':{'id':_0xf95110['params']['id']}})['then'](handleEntityNotFound(_0x43c1a8,null))[_0xfb63('0x22')](function(_0x284773){if(_0x284773){_0x577412=_0x284773;_0x69a7eb[_0xfb63('0x2e')]=_[_0xfb63('0x30')](db['VtigerField'][_0xfb63('0x2b')]);_0x69a7eb[_0xfb63('0x2f')]=_[_0xfb63('0x30')](_0xf95110[_0xfb63('0x2f')]);_0x69a7eb[_0xfb63('0x38')]=_[_0xfb63('0x31')](_0x69a7eb[_0xfb63('0x2e')],_0x69a7eb[_0xfb63('0x2f')]);_0x1ccb6a['attributes']=_[_0xfb63('0x31')](_0x69a7eb[_0xfb63('0x2e')],qs[_0xfb63('0x33')](_0xf95110[_0xfb63('0x2f')]['fields']));_0x1ccb6a[_0xfb63('0x32')]=_0x1ccb6a[_0xfb63('0x32')][_0xfb63('0x34')]?_0x1ccb6a[_0xfb63('0x32')]:_0x69a7eb[_0xfb63('0x2e')];_0x1ccb6a['order']=qs['sort'](_0xf95110[_0xfb63('0x2f')][_0xfb63('0x49')]);_0x1ccb6a[_0xfb63('0x37')]=qs[_0xfb63('0x38')](_[_0xfb63('0x39')](_0xf95110['query'],_0x69a7eb[_0xfb63('0x38')]));if(_0xf95110['query'][_0xfb63('0x3a')]){_0x1ccb6a[_0xfb63('0x37')]=_[_0xfb63('0x3b')](_0x1ccb6a[_0xfb63('0x37')],{'$or':_[_0xfb63('0x29')](_0x1ccb6a[_0xfb63('0x32')],function(_0x396094){var _0x4c5267={};_0x4c5267[_0x396094]={'$like':'%'+_0xf95110[_0xfb63('0x2f')][_0xfb63('0x3a')]+'%'};return _0x4c5267;})});}_0x1ccb6a=_[_0xfb63('0x3b')]({},_0x1ccb6a,_0xf95110['options']);return _0x577412[_0xfb63('0x47')](_0x1ccb6a);}})[_0xfb63('0x22')](function(_0x17ab6d){if(_0x17ab6d){_0x17aad5=_0x17ab6d[_0xfb63('0x34')];if(!_0xf95110['query']['hasOwnProperty']('nolimit')){_0x1ccb6a['limit']=qs[_0xfb63('0x1c')](_0xf95110['query'][_0xfb63('0x1c')]);_0x1ccb6a[_0xfb63('0x1a')]=qs[_0xfb63('0x1a')](_0xf95110['query'][_0xfb63('0x1a')]);}return _0x577412[_0xfb63('0x47')](_0x1ccb6a);}})[_0xfb63('0x22')](function(_0x2b1c8f){if(_0x2b1c8f){return _0x2b1c8f?{'count':_0x17aad5,'rows':_0x2b1c8f}:null;}})[_0xfb63('0x22')](respondWithResult(_0x43c1a8,null))['catch'](handleError(_0x43c1a8,null));};exports[_0xfb63('0x4a')]=function(_0x2d7d7c,_0x4accab,_0x593e1e){var _0x2efe73={};var _0x3e4505={};var _0x31357b;var _0x4838ef;return db[_0xfb63('0x2a')][_0xfb63('0x48')]({'where':{'id':_0x2d7d7c[_0xfb63('0x42')]['id']}})[_0xfb63('0x22')](handleEntityNotFound(_0x4accab,null))[_0xfb63('0x22')](function(_0x530ede){if(_0x530ede){_0x31357b=_0x530ede;_0x3e4505['model']=_[_0xfb63('0x30')](db[_0xfb63('0x4b')][_0xfb63('0x2b')]);_0x3e4505[_0xfb63('0x2f')]=_[_0xfb63('0x30')](_0x2d7d7c[_0xfb63('0x2f')]);_0x3e4505['filters']=_[_0xfb63('0x31')](_0x3e4505[_0xfb63('0x2e')],_0x3e4505[_0xfb63('0x2f')]);_0x2efe73[_0xfb63('0x32')]=_[_0xfb63('0x31')](_0x3e4505[_0xfb63('0x2e')],qs[_0xfb63('0x33')](_0x2d7d7c[_0xfb63('0x2f')]['fields']));_0x2efe73['attributes']=_0x2efe73['attributes'][_0xfb63('0x34')]?_0x2efe73[_0xfb63('0x32')]:_0x3e4505[_0xfb63('0x2e')];_0x2efe73[_0xfb63('0x36')]=qs[_0xfb63('0x49')](_0x2d7d7c[_0xfb63('0x2f')]['sort']);_0x2efe73['where']=qs[_0xfb63('0x38')](_[_0xfb63('0x39')](_0x2d7d7c['query'],_0x3e4505['filters']));if(_0x2d7d7c[_0xfb63('0x2f')]['filter']){_0x2efe73[_0xfb63('0x37')]=_[_0xfb63('0x3b')](_0x2efe73[_0xfb63('0x37')],{'$or':_['map'](_0x2efe73[_0xfb63('0x32')],function(_0x351788){var _0x35b732={};_0x35b732[_0x351788]={'$like':'%'+_0x2d7d7c[_0xfb63('0x2f')][_0xfb63('0x3a')]+'%'};return _0x35b732;})});}_0x2efe73=_[_0xfb63('0x3b')]({},_0x2efe73,_0x2d7d7c['options']);return _0x31357b[_0xfb63('0x4a')](_0x2efe73);}})[_0xfb63('0x22')](function(_0x3f3c75){if(_0x3f3c75){_0x4838ef=_0x3f3c75['length'];if(!_0x2d7d7c['query'][_0xfb63('0x35')](_0xfb63('0x4c'))){_0x2efe73[_0xfb63('0x1c')]=qs[_0xfb63('0x1c')](_0x2d7d7c[_0xfb63('0x2f')][_0xfb63('0x1c')]);_0x2efe73[_0xfb63('0x1a')]=qs['offset'](_0x2d7d7c['query'][_0xfb63('0x1a')]);}return _0x31357b[_0xfb63('0x4a')](_0x2efe73);}})[_0xfb63('0x22')](function(_0x27f15d){if(_0x27f15d){return _0x27f15d?{'count':_0x4838ef,'rows':_0x27f15d}:null;}})[_0xfb63('0x22')](respondWithResult(_0x4accab,null))['catch'](handleError(_0x4accab,null));};exports[_0xfb63('0x4d')]=function(_0x2637c9,_0x113d26,_0x488cd2){var _0x18aac4={};var _0x17c766={};var _0x274cf2;var _0x492bfa;return db[_0xfb63('0x2a')]['findOne']({'where':{'id':_0x2637c9[_0xfb63('0x42')]['id']}})[_0xfb63('0x22')](handleEntityNotFound(_0x113d26,null))[_0xfb63('0x22')](function(_0x10e4ad){if(_0x10e4ad){_0x274cf2=_0x10e4ad;_0x17c766[_0xfb63('0x2e')]=_['keys'](db[_0xfb63('0x4b')][_0xfb63('0x2b')]);_0x17c766['query']=_[_0xfb63('0x30')](_0x2637c9[_0xfb63('0x2f')]);_0x17c766[_0xfb63('0x38')]=_[_0xfb63('0x31')](_0x17c766[_0xfb63('0x2e')],_0x17c766[_0xfb63('0x2f')]);_0x18aac4[_0xfb63('0x32')]=_[_0xfb63('0x31')](_0x17c766['model'],qs[_0xfb63('0x33')](_0x2637c9[_0xfb63('0x2f')][_0xfb63('0x33')]));_0x18aac4[_0xfb63('0x32')]=_0x18aac4[_0xfb63('0x32')]['length']?_0x18aac4[_0xfb63('0x32')]:_0x17c766[_0xfb63('0x2e')];_0x18aac4[_0xfb63('0x36')]=qs[_0xfb63('0x49')](_0x2637c9['query'][_0xfb63('0x49')]);_0x18aac4[_0xfb63('0x37')]=qs[_0xfb63('0x38')](_['pick'](_0x2637c9[_0xfb63('0x2f')],_0x17c766[_0xfb63('0x38')]));if(_0x2637c9['query'][_0xfb63('0x3a')]){_0x18aac4[_0xfb63('0x37')]=_[_0xfb63('0x3b')](_0x18aac4[_0xfb63('0x37')],{'$or':_['map'](_0x18aac4[_0xfb63('0x32')],function(_0x29b7fb){var _0x371eda={};_0x371eda[_0x29b7fb]={'$like':'%'+_0x2637c9[_0xfb63('0x2f')][_0xfb63('0x3a')]+'%'};return _0x371eda;})});}_0x18aac4=_['merge']({},_0x18aac4,_0x2637c9[_0xfb63('0x3d')]);return _0x274cf2[_0xfb63('0x4d')](_0x18aac4);}})[_0xfb63('0x22')](function(_0x313a2f){if(_0x313a2f){_0x492bfa=_0x313a2f[_0xfb63('0x34')];if(!_0x2637c9[_0xfb63('0x2f')][_0xfb63('0x35')]('nolimit')){_0x18aac4['limit']=qs['limit'](_0x2637c9[_0xfb63('0x2f')][_0xfb63('0x1c')]);_0x18aac4[_0xfb63('0x1a')]=qs[_0xfb63('0x1a')](_0x2637c9[_0xfb63('0x2f')][_0xfb63('0x1a')]);}return _0x274cf2[_0xfb63('0x4d')](_0x18aac4);}})['then'](function(_0x35d033){if(_0x35d033){return _0x35d033?{'count':_0x492bfa,'rows':_0x35d033}:null;}})[_0xfb63('0x22')](respondWithResult(_0x113d26,null))[_0xfb63('0x44')](handleError(_0x113d26,null));};
\ No newline at end of file
index 66ae46f..e75c444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb529=['int_vtiger_configurations','lodash','util','api','moment','bluebird','request-promise','path','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration'];(function(_0x143bf5,_0x457a1f){var _0x479db1=function(_0x10c79e){while(--_0x10c79e){_0x143bf5['push'](_0x143bf5['shift']());}};_0x479db1(++_0x457a1f);}(_0xb529,0xa9));var _0x9b52=function(_0x299aed,_0x284438){_0x299aed=_0x299aed-0x0;var _0x24292a=_0xb529[_0x299aed];return _0x24292a;};'use strict';var _=require(_0x9b52('0x0'));var util=require(_0x9b52('0x1'));var logger=require('../../config/logger')(_0x9b52('0x2'));var moment=require(_0x9b52('0x3'));var BPromise=require(_0x9b52('0x4'));var rp=require(_0x9b52('0x5'));var fs=require('fs');var path=require(_0x9b52('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9b52('0x7'));module[_0x9b52('0x8')]=function(_0x4c9d99,_0x44e262){return _0x4c9d99[_0x9b52('0x9')](_0x9b52('0xa'),attributes,{'tableName':_0x9b52('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d7a=['lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','define','VtigerConfiguration','int_vtiger_configurations'];(function(_0x12b2fb,_0x192fcc){var _0x5cca5f=function(_0x455b1a){while(--_0x455b1a){_0x12b2fb['push'](_0x12b2fb['shift']());}};_0x5cca5f(++_0x192fcc);}(_0x6d7a,0x1e0));var _0xa6d7=function(_0x107d8a,_0x2dc961){_0x107d8a=_0x107d8a-0x0;var _0x330bf0=_0x6d7a[_0x107d8a];return _0x330bf0;};'use strict';var _=require(_0xa6d7('0x0'));var util=require(_0xa6d7('0x1'));var logger=require(_0xa6d7('0x2'))(_0xa6d7('0x3'));var moment=require('moment');var BPromise=require(_0xa6d7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa6d7('0x5'));var rimraf=require(_0xa6d7('0x6'));var config=require(_0xa6d7('0x7'));var attributes=require(_0xa6d7('0x8'));module['exports']=function(_0x524265,_0x37fbea){return _0x524265[_0xa6d7('0x9')](_0xa6d7('0xa'),attributes,{'tableName':_0xa6d7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d44931d..367826e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4290=['ioredis','../../config/logger','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','randomstring'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4290,0x74));var _0x0429=function(_0x51aea3,_0x5af6dd){_0x51aea3=_0x51aea3-0x0;var _0xe3311e=_0x4290[_0x51aea3];return _0xe3311e;};'use strict';var _=require(_0x0429('0x0'));var util=require(_0x0429('0x1'));var moment=require(_0x0429('0x2'));var BPromise=require('bluebird');var rs=require(_0x0429('0x3'));var fs=require('fs');var Redis=require(_0x0429('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0429('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0429('0x6'));var client=jayson[_0x0429('0x7')][_0x0429('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x86bbe,_0x2564be,_0x514e26){return new BPromise(function(_0x45cf96,_0x4067fb){return client[_0x0429('0x9')](_0x86bbe,_0x514e26)[_0x0429('0xa')](function(_0x4d3c11){logger[_0x0429('0xb')](_0x0429('0xc'),_0x2564be,_0x0429('0xd'));logger[_0x0429('0xe')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x2564be,_0x0429('0xd'),JSON[_0x0429('0xf')](_0x4d3c11));if(_0x4d3c11[_0x0429('0x10')]){if(_0x4d3c11['error']['code']===0x1f4){logger[_0x0429('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x2564be,_0x4d3c11[_0x0429('0x10')][_0x0429('0x11')]);return _0x4067fb(_0x4d3c11[_0x0429('0x10')]['message']);}logger[_0x0429('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x2564be,_0x4d3c11[_0x0429('0x10')][_0x0429('0x11')]);return _0x45cf96(_0x4d3c11[_0x0429('0x10')][_0x0429('0x11')]);}else{logger[_0x0429('0xb')](_0x0429('0xc'),_0x2564be,_0x0429('0xd'));_0x45cf96(_0x4d3c11[_0x0429('0x12')][_0x0429('0x11')]);}})[_0x0429('0x13')](function(_0x44b806){logger[_0x0429('0x10')](_0x0429('0xc'),_0x2564be,_0x44b806);_0x4067fb(_0x44b806);});});}
\ No newline at end of file
+var _0xd49f=['then','info','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xd49f,0xcc));var _0xfd49=function(_0x2d8f6c,_0x44db4c){_0x2d8f6c=_0x2d8f6c-0x0;var _0x3a00f6=_0xd49f[_0x2d8f6c];return _0x3a00f6;};'use strict';var _=require(_0xfd49('0x0'));var util=require(_0xfd49('0x1'));var moment=require(_0xfd49('0x2'));var BPromise=require(_0xfd49('0x3'));var rs=require(_0xfd49('0x4'));var fs=require('fs');var Redis=require(_0xfd49('0x5'));var db=require(_0xfd49('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xfd49('0x7'))(_0xfd49('0x8'));var config=require(_0xfd49('0x9'));var jayson=require(_0xfd49('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x14dbdd,_0x36f54b,_0x5771e7){return new BPromise(function(_0x4cbea1,_0x3581d5){return client[_0xfd49('0xb')](_0x14dbdd,_0x5771e7)[_0xfd49('0xc')](function(_0x59354b){logger[_0xfd49('0xd')](_0xfd49('0xe'),_0x36f54b,'request\x20sent');logger[_0xfd49('0xf')](_0xfd49('0x10'),_0x36f54b,_0xfd49('0x11'),JSON[_0xfd49('0x12')](_0x59354b));if(_0x59354b['error']){if(_0x59354b[_0xfd49('0x13')][_0xfd49('0x14')]===0x1f4){logger[_0xfd49('0x13')]('VtigerConfiguration,\x20%s,\x20%s',_0x36f54b,_0x59354b[_0xfd49('0x13')]['message']);return _0x3581d5(_0x59354b[_0xfd49('0x13')]['message']);}logger[_0xfd49('0x13')](_0xfd49('0xe'),_0x36f54b,_0x59354b[_0xfd49('0x13')][_0xfd49('0x15')]);return _0x4cbea1(_0x59354b[_0xfd49('0x13')][_0xfd49('0x15')]);}else{logger['info']('VtigerConfiguration,\x20%s,\x20%s',_0x36f54b,_0xfd49('0x11'));_0x4cbea1(_0x59354b[_0xfd49('0x16')][_0xfd49('0x15')]);}})[_0xfd49('0x17')](function(_0x3f7908){logger[_0xfd49('0x13')](_0xfd49('0xe'),_0x36f54b,_0x3f7908);_0x3581d5(_0x3f7908);});});}
\ No newline at end of file
index 7f88acf..63f3704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfa=['create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','./intVtigerField.controller','post','isAuthenticated'];(function(_0x132558,_0x521d93){var _0x34f138=function(_0x3e3541){while(--_0x3e3541){_0x132558['push'](_0x132558['shift']());}};_0x34f138(++_0x521d93);}(_0xdbfa,0x1b9));var _0xadbf=function(_0xc99edb,_0x47e80c){_0xc99edb=_0xc99edb-0x0;var _0x3920bf=_0xdbfa[_0xc99edb];return _0x3920bf;};'use strict';var multer=require(_0xadbf('0x0'));var util=require(_0xadbf('0x1'));var path=require(_0xadbf('0x2'));var timeout=require(_0xadbf('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xadbf('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xadbf('0x5'));var config=require('../../config/environment');var controller=require(_0xadbf('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0xadbf('0x7')]('/',auth[_0xadbf('0x8')](),controller[_0xadbf('0x9')]);router[_0xadbf('0xa')](_0xadbf('0xb'),auth[_0xadbf('0x8')](),controller[_0xadbf('0xc')]);router['delete']('/:id',auth[_0xadbf('0x8')](),controller[_0xadbf('0xd')]);module[_0xadbf('0xe')]=router;
\ No newline at end of file
+var _0x0d35=['post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intVtigerField.controller','isAuthenticated','index','get','/:id'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x0d35,0xfd));var _0x50d3=function(_0x21b1d1,_0x3a8680){_0x21b1d1=_0x21b1d1-0x0;var _0x3e6228=_0x0d35[_0x21b1d1];return _0x3e6228;};'use strict';var multer=require(_0x50d3('0x0'));var util=require(_0x50d3('0x1'));var path=require(_0x50d3('0x2'));var timeout=require(_0x50d3('0x3'));var express=require(_0x50d3('0x4'));var router=express[_0x50d3('0x5')]();var fs_extra=require(_0x50d3('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x50d3('0x7'));var config=require('../../config/environment');var controller=require(_0x50d3('0x8'));router['get']('/',auth[_0x50d3('0x9')](),controller[_0x50d3('0xa')]);router[_0x50d3('0xb')](_0x50d3('0xc'),auth[_0x50d3('0x9')](),controller['show']);router[_0x50d3('0xd')]('/',auth[_0x50d3('0x9')](),controller[_0x50d3('0xe')]);router[_0x50d3('0xf')](_0x50d3('0xc'),auth[_0x50d3('0x9')](),controller[_0x50d3('0x10')]);router[_0x50d3('0x11')](_0x50d3('0xc'),auth[_0x50d3('0x9')](),controller[_0x50d3('0x12')]);module['exports']=router;
\ No newline at end of file
index 91bca21..034b8f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb454=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x4ffd20,_0x1e83b6){var _0x49b5e2=function(_0xfdd1a6){while(--_0xfdd1a6){_0x4ffd20['push'](_0x4ffd20['shift']());}};_0x49b5e2(++_0x1e83b6);}(_0xb454,0x165));var _0x4b45=function(_0x3b150c,_0x2f93f8){_0x3b150c=_0x3b150c-0x0;var _0x5cd414=_0xb454[_0x3b150c];return _0x5cd414;};'use strict';var Sequelize=require(_0x4b45('0x0'));module[_0x4b45('0x1')]={'type':{'type':Sequelize[_0x4b45('0x2')](_0x4b45('0x3'),_0x4b45('0x4'),_0x4b45('0x5'),_0x4b45('0x6'),_0x4b45('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4b45('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x4b45('0x2')](_0x4b45('0x3'),_0x4b45('0x4'),_0x4b45('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4b45('0x8')]},'nameField':{'type':Sequelize[_0x4b45('0x8')]},'customField':{'type':Sequelize[_0x4b45('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4b45('0x8')]}};
\ No newline at end of file
+var _0xef93=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x48cc17,_0x5fcd9b){var _0x1dbada=function(_0x44c33b){while(--_0x44c33b){_0x48cc17['push'](_0x48cc17['shift']());}};_0x1dbada(++_0x5fcd9b);}(_0xef93,0x78));var _0x3ef9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xef93[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x3ef9('0x0'));module[_0x3ef9('0x1')]={'type':{'type':Sequelize[_0x3ef9('0x2')](_0x3ef9('0x3'),_0x3ef9('0x4'),_0x3ef9('0x5'),_0x3ef9('0x6'),_0x3ef9('0x7')),'defaultValue':_0x3ef9('0x3')},'content':{'type':Sequelize[_0x3ef9('0x8')]},'key':{'type':Sequelize[_0x3ef9('0x8')]},'keyType':{'type':Sequelize[_0x3ef9('0x2')]('string',_0x3ef9('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x3ef9('0x8')]},'idField':{'type':Sequelize[_0x3ef9('0x8')]},'nameField':{'type':Sequelize[_0x3ef9('0x8')]},'customField':{'type':Sequelize[_0x3ef9('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3ef9('0x8')]}};
\ No newline at end of file
index 96a790a..2cf895f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78e6=['squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra'];(function(_0x3e4c5c,_0x59b4a3){var _0x22d6de=function(_0x3679f4){while(--_0x3679f4){_0x3e4c5c['push'](_0x3e4c5c['shift']());}};_0x22d6de(++_0x59b4a3);}(_0x78e6,0xcc));var _0x678e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x78e6[_0x3e5086];return _0xfeb102;};'use strict';var emlformat=require(_0x678e('0x0'));var rimraf=require(_0x678e('0x1'));var zipdir=require(_0x678e('0x2'));var jsonpatch=require(_0x678e('0x3'));var rp=require(_0x678e('0x4'));var moment=require(_0x678e('0x5'));var BPromise=require(_0x678e('0x6'));var Mustache=require(_0x678e('0x7'));var util=require('util');var path=require(_0x678e('0x8'));var sox=require(_0x678e('0x9'));var csv=require(_0x678e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x678e('0xb'));var _=require('lodash');var squel=require(_0x678e('0xc'));var crypto=require('crypto');var jsforce=require(_0x678e('0xd'));var deskjs=require(_0x678e('0xe'));var toCsv=require('to-csv');var querystring=require(_0x678e('0xf'));var Papa=require(_0x678e('0x10'));var Redis=require(_0x678e('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x678e('0x12'));var hardwareService=require(_0x678e('0x13'));var logger=require(_0x678e('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x678e('0x15'));var licenseUtil=require(_0x678e('0x16'));var db=require(_0x678e('0x17'))['db'];function respondWithStatusCode(_0x13bf8b,_0x292ba6){_0x292ba6=_0x292ba6||0xcc;return function(_0x2810d6){if(_0x2810d6){return _0x13bf8b[_0x678e('0x18')](_0x292ba6);}return _0x13bf8b['status'](_0x292ba6)[_0x678e('0x19')]();};}function respondWithResult(_0x53a14a,_0x5b5191){_0x5b5191=_0x5b5191||0xc8;return function(_0x45d040){if(_0x45d040){return _0x53a14a[_0x678e('0x1a')](_0x5b5191)['json'](_0x45d040);}};}function respondWithFilteredResult(_0x42a5c3,_0x1f4d63){return function(_0x506493){if(_0x506493){var _0x12aca7=typeof _0x1f4d63['offset']===_0x678e('0x1b')&&typeof _0x1f4d63[_0x678e('0x1c')]==='undefined';var _0x4bb161=_0x506493[_0x678e('0x1d')];var _0x31bf2a=_0x12aca7?0x0:_0x1f4d63[_0x678e('0x1e')];var _0x46c896=_0x12aca7?_0x506493[_0x678e('0x1d')]:_0x1f4d63[_0x678e('0x1e')]+_0x1f4d63[_0x678e('0x1c')];var _0x3eb500;if(_0x46c896>=_0x4bb161){_0x46c896=_0x4bb161;_0x3eb500=0xc8;}else{_0x3eb500=0xce;}_0x42a5c3['status'](_0x3eb500);return _0x42a5c3[_0x678e('0x1f')](_0x678e('0x20'),_0x31bf2a+'-'+_0x46c896+'/'+_0x4bb161)['json'](_0x506493);}return null;};}function patchUpdates(_0x2cc569){return function(_0x598179){try{jsonpatch[_0x678e('0x21')](_0x598179,_0x2cc569,!![]);}catch(_0x976daa){return BPromise[_0x678e('0x22')](_0x976daa);}return _0x598179[_0x678e('0x23')]();};}function saveUpdates(_0x569547,_0x115a47){return function(_0x12208a){if(_0x12208a){return _0x12208a[_0x678e('0x24')](_0x569547)[_0x678e('0x25')](function(_0x2535a8){return _0x2535a8;});}return null;};}function removeEntity(_0x57d7a4,_0x3d9190){return function(_0x993602){if(_0x993602){return _0x993602['destroy']()[_0x678e('0x25')](function(){_0x57d7a4[_0x678e('0x1a')](0xcc)[_0x678e('0x19')]();});}};}function handleEntityNotFound(_0x9752b0,_0x43c342){return function(_0x34e904){if(!_0x34e904){_0x9752b0[_0x678e('0x18')](0x194);}return _0x34e904;};}function handleError(_0x243567,_0x353278){_0x353278=_0x353278||0x1f4;return function(_0x21e040){logger[_0x678e('0x26')](_0x21e040['stack']);if(_0x21e040[_0x678e('0x27')]){delete _0x21e040[_0x678e('0x27')];}_0x243567[_0x678e('0x1a')](_0x353278)[_0x678e('0x28')](_0x21e040);};}exports[_0x678e('0x29')]=function(_0xa03e62,_0x28ecca){var _0x22afe7={},_0x2d7826={},_0x59cf24={'count':0x0,'rows':[]};var _0x4a401c=_[_0x678e('0x2a')](db[_0x678e('0x2b')][_0x678e('0x2c')],function(_0x4085){return{'name':_0x4085[_0x678e('0x2d')],'type':_0x4085[_0x678e('0x2e')][_0x678e('0x2f')]};});_0x2d7826[_0x678e('0x30')]=_[_0x678e('0x2a')](_0x4a401c,_0x678e('0x27'));_0x2d7826[_0x678e('0x31')]=_[_0x678e('0x32')](_0xa03e62[_0x678e('0x31')]);_0x2d7826[_0x678e('0x33')]=_['intersection'](_0x2d7826[_0x678e('0x30')],_0x2d7826[_0x678e('0x31')]);_0x22afe7['attributes']=_[_0x678e('0x34')](_0x2d7826['model'],qs[_0x678e('0x35')](_0xa03e62[_0x678e('0x31')][_0x678e('0x35')]));_0x22afe7['attributes']=_0x22afe7[_0x678e('0x36')][_0x678e('0x37')]?_0x22afe7[_0x678e('0x36')]:_0x2d7826[_0x678e('0x30')];if(!_0xa03e62[_0x678e('0x31')][_0x678e('0x38')](_0x678e('0x39'))){_0x22afe7['limit']=qs[_0x678e('0x1c')](_0xa03e62[_0x678e('0x31')][_0x678e('0x1c')]);_0x22afe7[_0x678e('0x1e')]=qs[_0x678e('0x1e')](_0xa03e62['query'][_0x678e('0x1e')]);}_0x22afe7['order']=qs[_0x678e('0x3a')](_0xa03e62['query'][_0x678e('0x3a')]);_0x22afe7[_0x678e('0x3b')]=qs[_0x678e('0x33')](_['pick'](_0xa03e62[_0x678e('0x31')],_0x2d7826['filters']),_0x4a401c);if(_0xa03e62[_0x678e('0x31')]['filter']){_0x22afe7['where']=_[_0x678e('0x3c')](_0x22afe7[_0x678e('0x3b')],{'$or':_[_0x678e('0x2a')](_0x4a401c,function(_0x221755){if(_0x221755['type']!==_0x678e('0x3d')){var _0x537ff4={};_0x537ff4[_0x221755[_0x678e('0x27')]]={'$like':'%'+_0xa03e62[_0x678e('0x31')]['filter']+'%'};return _0x537ff4;}})});}_0x22afe7=_[_0x678e('0x3c')]({},_0x22afe7,_0xa03e62[_0x678e('0x3e')]);var _0x523dcd={'where':_0x22afe7['where']};return db[_0x678e('0x2b')]['count'](_0x523dcd)[_0x678e('0x25')](function(_0x241c5b){_0x59cf24[_0x678e('0x1d')]=_0x241c5b;if(_0xa03e62['query'][_0x678e('0x3f')]){_0x22afe7[_0x678e('0x40')]=[{'all':!![]}];}return db[_0x678e('0x2b')][_0x678e('0x41')](_0x22afe7);})[_0x678e('0x25')](function(_0x3bb032){_0x59cf24['rows']=_0x3bb032;return _0x59cf24;})[_0x678e('0x25')](respondWithFilteredResult(_0x28ecca,_0x22afe7))[_0x678e('0x42')](handleError(_0x28ecca,null));};exports[_0x678e('0x43')]=function(_0x833d49,_0x40f296){var _0x371410={'raw':!![],'where':{'id':_0x833d49[_0x678e('0x44')]['id']}},_0x22118d={};_0x22118d['model']=_[_0x678e('0x32')](db[_0x678e('0x2b')][_0x678e('0x2c')]);_0x22118d['query']=_[_0x678e('0x32')](_0x833d49[_0x678e('0x31')]);_0x22118d[_0x678e('0x33')]=_[_0x678e('0x34')](_0x22118d[_0x678e('0x30')],_0x22118d[_0x678e('0x31')]);_0x371410[_0x678e('0x36')]=_[_0x678e('0x34')](_0x22118d['model'],qs[_0x678e('0x35')](_0x833d49[_0x678e('0x31')][_0x678e('0x35')]));_0x371410[_0x678e('0x36')]=_0x371410[_0x678e('0x36')][_0x678e('0x37')]?_0x371410[_0x678e('0x36')]:_0x22118d[_0x678e('0x30')];if(_0x833d49['query'][_0x678e('0x3f')]){_0x371410[_0x678e('0x40')]=[{'all':!![]}];}_0x371410=_[_0x678e('0x3c')]({},_0x371410,_0x833d49['options']);return db[_0x678e('0x2b')][_0x678e('0x45')](_0x371410)[_0x678e('0x25')](handleEntityNotFound(_0x40f296,null))[_0x678e('0x25')](respondWithResult(_0x40f296,null))[_0x678e('0x42')](handleError(_0x40f296,null));};exports[_0x678e('0x46')]=function(_0x19e51f,_0x4e2c97){return db[_0x678e('0x2b')]['create'](_0x19e51f['body'],{})[_0x678e('0x25')](respondWithResult(_0x4e2c97,0xc9))['catch'](handleError(_0x4e2c97,null));};exports[_0x678e('0x24')]=function(_0x1dfe61,_0x2856d2){if(_0x1dfe61['body']['id']){delete _0x1dfe61['body']['id'];}return db[_0x678e('0x2b')][_0x678e('0x45')]({'where':{'id':_0x1dfe61[_0x678e('0x44')]['id']}})[_0x678e('0x25')](handleEntityNotFound(_0x2856d2,null))['then'](saveUpdates(_0x1dfe61['body'],null))['then'](respondWithResult(_0x2856d2,null))[_0x678e('0x42')](handleError(_0x2856d2,null));};exports[_0x678e('0x47')]=function(_0x54411e,_0x13007a){return db[_0x678e('0x2b')][_0x678e('0x45')]({'where':{'id':_0x54411e[_0x678e('0x44')]['id']}})[_0x678e('0x25')](handleEntityNotFound(_0x13007a,null))['then'](removeEntity(_0x13007a,null))[_0x678e('0x42')](handleError(_0x13007a,null));};
\ No newline at end of file
+var _0x2e33=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','end','error','name','send','map','VtigerField','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','where','merge','filter','includeAll','findAll','rows','catch','show','params','rawAttributes','create','body','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x27d2bf,_0x27ec74){var _0x5498a=function(_0x128d58){while(--_0x128d58){_0x27d2bf['push'](_0x27d2bf['shift']());}};_0x5498a(++_0x27ec74);}(_0x2e33,0x75));var _0x32e3=function(_0x561c70,_0x6fdf5a){_0x561c70=_0x561c70-0x0;var _0x63fa05=_0x2e33[_0x561c70];return _0x63fa05;};'use strict';var emlformat=require(_0x32e3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x32e3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x32e3('0x2'));var moment=require(_0x32e3('0x3'));var BPromise=require(_0x32e3('0x4'));var Mustache=require(_0x32e3('0x5'));var util=require(_0x32e3('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x32e3('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x32e3('0x8'));var crypto=require('crypto');var jsforce=require(_0x32e3('0x9'));var deskjs=require(_0x32e3('0xa'));var toCsv=require(_0x32e3('0x7'));var querystring=require(_0x32e3('0xb'));var Papa=require(_0x32e3('0xc'));var Redis=require(_0x32e3('0xd'));var authService=require(_0x32e3('0xe'));var qs=require(_0x32e3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32e3('0x10'));var logger=require(_0x32e3('0x11'))(_0x32e3('0x12'));var utils=require(_0x32e3('0x13'));var config=require(_0x32e3('0x14'));var licenseUtil=require(_0x32e3('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ee030,_0x45f2d4){_0x45f2d4=_0x45f2d4||0xcc;return function(_0xdd4c50){if(_0xdd4c50){return _0x5ee030[_0x32e3('0x16')](_0x45f2d4);}return _0x5ee030['status'](_0x45f2d4)['end']();};}function respondWithResult(_0x522dd7,_0xd4465d){_0xd4465d=_0xd4465d||0xc8;return function(_0x31dfa1){if(_0x31dfa1){return _0x522dd7[_0x32e3('0x17')](_0xd4465d)[_0x32e3('0x18')](_0x31dfa1);}};}function respondWithFilteredResult(_0x4f4271,_0x4dd24f){return function(_0x10e38f){if(_0x10e38f){var _0x4b6831=typeof _0x4dd24f[_0x32e3('0x19')]===_0x32e3('0x1a')&&typeof _0x4dd24f[_0x32e3('0x1b')]===_0x32e3('0x1a');var _0x5e731e=_0x10e38f[_0x32e3('0x1c')];var _0x26db41=_0x4b6831?0x0:_0x4dd24f['offset'];var _0x430ef7=_0x4b6831?_0x10e38f[_0x32e3('0x1c')]:_0x4dd24f[_0x32e3('0x19')]+_0x4dd24f[_0x32e3('0x1b')];var _0xa55c03;if(_0x430ef7>=_0x5e731e){_0x430ef7=_0x5e731e;_0xa55c03=0xc8;}else{_0xa55c03=0xce;}_0x4f4271[_0x32e3('0x17')](_0xa55c03);return _0x4f4271['set'](_0x32e3('0x1d'),_0x26db41+'-'+_0x430ef7+'/'+_0x5e731e)[_0x32e3('0x18')](_0x10e38f);}return null;};}function patchUpdates(_0x5f5b58){return function(_0x1672a2){try{jsonpatch[_0x32e3('0x1e')](_0x1672a2,_0x5f5b58,!![]);}catch(_0xf68a7f){return BPromise['reject'](_0xf68a7f);}return _0x1672a2[_0x32e3('0x1f')]();};}function saveUpdates(_0x16859e,_0x240323){return function(_0x383fa8){if(_0x383fa8){return _0x383fa8[_0x32e3('0x20')](_0x16859e)[_0x32e3('0x21')](function(_0xd929a7){return _0xd929a7;});}return null;};}function removeEntity(_0x4caa64,_0x340551){return function(_0x536888){if(_0x536888){return _0x536888['destroy']()['then'](function(){_0x4caa64['status'](0xcc)[_0x32e3('0x22')]();});}};}function handleEntityNotFound(_0x52477f,_0x383e63){return function(_0x352c28){if(!_0x352c28){_0x52477f['sendStatus'](0x194);}return _0x352c28;};}function handleError(_0x4f4810,_0x441a38){_0x441a38=_0x441a38||0x1f4;return function(_0x3213a2){logger[_0x32e3('0x23')](_0x3213a2['stack']);if(_0x3213a2[_0x32e3('0x24')]){delete _0x3213a2['name'];}_0x4f4810['status'](_0x441a38)[_0x32e3('0x25')](_0x3213a2);};}exports['index']=function(_0x5a808d,_0xaf4f44){var _0x4caf80={},_0x146b4b={},_0x26cffe={'count':0x0,'rows':[]};var _0x3d457a=_[_0x32e3('0x26')](db[_0x32e3('0x27')]['rawAttributes'],function(_0x33af21){return{'name':_0x33af21[_0x32e3('0x28')],'type':_0x33af21['type'][_0x32e3('0x29')]};});_0x146b4b[_0x32e3('0x2a')]=_[_0x32e3('0x26')](_0x3d457a,_0x32e3('0x24'));_0x146b4b[_0x32e3('0x2b')]=_[_0x32e3('0x2c')](_0x5a808d[_0x32e3('0x2b')]);_0x146b4b['filters']=_['intersection'](_0x146b4b[_0x32e3('0x2a')],_0x146b4b['query']);_0x4caf80['attributes']=_[_0x32e3('0x2d')](_0x146b4b[_0x32e3('0x2a')],qs[_0x32e3('0x2e')](_0x5a808d[_0x32e3('0x2b')][_0x32e3('0x2e')]));_0x4caf80['attributes']=_0x4caf80[_0x32e3('0x2f')][_0x32e3('0x30')]?_0x4caf80[_0x32e3('0x2f')]:_0x146b4b[_0x32e3('0x2a')];if(!_0x5a808d[_0x32e3('0x2b')][_0x32e3('0x31')](_0x32e3('0x32'))){_0x4caf80[_0x32e3('0x1b')]=qs[_0x32e3('0x1b')](_0x5a808d[_0x32e3('0x2b')][_0x32e3('0x1b')]);_0x4caf80[_0x32e3('0x19')]=qs[_0x32e3('0x19')](_0x5a808d[_0x32e3('0x2b')][_0x32e3('0x19')]);}_0x4caf80['order']=qs[_0x32e3('0x33')](_0x5a808d[_0x32e3('0x2b')][_0x32e3('0x33')]);_0x4caf80['where']=qs[_0x32e3('0x34')](_[_0x32e3('0x35')](_0x5a808d[_0x32e3('0x2b')],_0x146b4b['filters']),_0x3d457a);if(_0x5a808d['query']['filter']){_0x4caf80[_0x32e3('0x36')]=_[_0x32e3('0x37')](_0x4caf80['where'],{'$or':_[_0x32e3('0x26')](_0x3d457a,function(_0x51a68f){if(_0x51a68f['type']!=='VIRTUAL'){var _0x286442={};_0x286442[_0x51a68f[_0x32e3('0x24')]]={'$like':'%'+_0x5a808d[_0x32e3('0x2b')][_0x32e3('0x38')]+'%'};return _0x286442;}})});}_0x4caf80=_['merge']({},_0x4caf80,_0x5a808d['options']);var _0x1419c6={'where':_0x4caf80['where']};return db['VtigerField']['count'](_0x1419c6)[_0x32e3('0x21')](function(_0x27b5ba){_0x26cffe[_0x32e3('0x1c')]=_0x27b5ba;if(_0x5a808d[_0x32e3('0x2b')][_0x32e3('0x39')]){_0x4caf80['include']=[{'all':!![]}];}return db[_0x32e3('0x27')][_0x32e3('0x3a')](_0x4caf80);})[_0x32e3('0x21')](function(_0x45320c){_0x26cffe[_0x32e3('0x3b')]=_0x45320c;return _0x26cffe;})['then'](respondWithFilteredResult(_0xaf4f44,_0x4caf80))[_0x32e3('0x3c')](handleError(_0xaf4f44,null));};exports[_0x32e3('0x3d')]=function(_0x7577b9,_0x39a7d2){var _0x2e6b53={'raw':!![],'where':{'id':_0x7577b9[_0x32e3('0x3e')]['id']}},_0xc77262={};_0xc77262[_0x32e3('0x2a')]=_[_0x32e3('0x2c')](db[_0x32e3('0x27')][_0x32e3('0x3f')]);_0xc77262[_0x32e3('0x2b')]=_[_0x32e3('0x2c')](_0x7577b9[_0x32e3('0x2b')]);_0xc77262[_0x32e3('0x34')]=_[_0x32e3('0x2d')](_0xc77262[_0x32e3('0x2a')],_0xc77262[_0x32e3('0x2b')]);_0x2e6b53[_0x32e3('0x2f')]=_[_0x32e3('0x2d')](_0xc77262[_0x32e3('0x2a')],qs[_0x32e3('0x2e')](_0x7577b9[_0x32e3('0x2b')]['fields']));_0x2e6b53[_0x32e3('0x2f')]=_0x2e6b53['attributes'][_0x32e3('0x30')]?_0x2e6b53[_0x32e3('0x2f')]:_0xc77262[_0x32e3('0x2a')];if(_0x7577b9[_0x32e3('0x2b')][_0x32e3('0x39')]){_0x2e6b53['include']=[{'all':!![]}];}_0x2e6b53=_[_0x32e3('0x37')]({},_0x2e6b53,_0x7577b9['options']);return db[_0x32e3('0x27')]['find'](_0x2e6b53)[_0x32e3('0x21')](handleEntityNotFound(_0x39a7d2,null))[_0x32e3('0x21')](respondWithResult(_0x39a7d2,null))[_0x32e3('0x3c')](handleError(_0x39a7d2,null));};exports['create']=function(_0x53bee6,_0x47114d){return db[_0x32e3('0x27')][_0x32e3('0x40')](_0x53bee6[_0x32e3('0x41')],{})[_0x32e3('0x21')](respondWithResult(_0x47114d,0xc9))[_0x32e3('0x3c')](handleError(_0x47114d,null));};exports[_0x32e3('0x20')]=function(_0x4b5bbb,_0x430468){if(_0x4b5bbb[_0x32e3('0x41')]['id']){delete _0x4b5bbb[_0x32e3('0x41')]['id'];}return db[_0x32e3('0x27')]['find']({'where':{'id':_0x4b5bbb['params']['id']}})[_0x32e3('0x21')](handleEntityNotFound(_0x430468,null))[_0x32e3('0x21')](saveUpdates(_0x4b5bbb[_0x32e3('0x41')],null))[_0x32e3('0x21')](respondWithResult(_0x430468,null))[_0x32e3('0x3c')](handleError(_0x430468,null));};exports[_0x32e3('0x42')]=function(_0x339811,_0x2d11d1){return db[_0x32e3('0x27')]['find']({'where':{'id':_0x339811[_0x32e3('0x3e')]['id']}})[_0x32e3('0x21')](handleEntityNotFound(_0x2d11d1,null))[_0x32e3('0x21')](removeEntity(_0x2d11d1,null))[_0x32e3('0x3c')](handleError(_0x2d11d1,null));};
\ No newline at end of file
index 6ca40db..3da37d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x689e=['VtigerField','vtiger_unique_index','idField','lodash','../../config/logger','api','bluebird','request-promise','../../config/environment','./intVtigerField.attributes','exports','define'];(function(_0x52a6e6,_0x2d1243){var _0x10a5af=function(_0x407f3a){while(--_0x407f3a){_0x52a6e6['push'](_0x52a6e6['shift']());}};_0x10a5af(++_0x2d1243);}(_0x689e,0xff));var _0xe689=function(_0x2e8a34,_0x224b5c){_0x2e8a34=_0x2e8a34-0x0;var _0x1d853d=_0x689e[_0x2e8a34];return _0x1d853d;};'use strict';var _=require(_0xe689('0x0'));var util=require('util');var logger=require(_0xe689('0x1'))(_0xe689('0x2'));var moment=require('moment');var BPromise=require(_0xe689('0x3'));var rp=require(_0xe689('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe689('0x5'));var attributes=require(_0xe689('0x6'));module[_0xe689('0x7')]=function(_0x229c08,_0x4de4aa){return _0x229c08[_0xe689('0x8')](_0xe689('0x9'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0xe689('0xa'),'fields':[_0xe689('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8d1=['moment','request-promise','rimraf','../../config/environment','./intVtigerField.attributes','exports','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api'];(function(_0x336a7e,_0x4af2ca){var _0x587ba1=function(_0x1a17db){while(--_0x1a17db){_0x336a7e['push'](_0x336a7e['shift']());}};_0x587ba1(++_0x4af2ca);}(_0xa8d1,0x173));var _0x1a8d=function(_0x56c2d5,_0x3908fe){_0x56c2d5=_0x56c2d5-0x0;var _0x2e2133=_0xa8d1[_0x56c2d5];return _0x2e2133;};'use strict';var _=require(_0x1a8d('0x0'));var util=require(_0x1a8d('0x1'));var logger=require(_0x1a8d('0x2'))(_0x1a8d('0x3'));var moment=require(_0x1a8d('0x4'));var BPromise=require('bluebird');var rp=require(_0x1a8d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1a8d('0x6'));var config=require(_0x1a8d('0x7'));var attributes=require(_0x1a8d('0x8'));module[_0x1a8d('0x9')]=function(_0x16fa43,_0x57130b){return _0x16fa43['define'](_0x1a8d('0xa'),attributes,{'tableName':_0x1a8d('0xb'),'paranoid':![],'indexes':[{'name':_0x1a8d('0xc'),'fields':[_0x1a8d('0xd'),_0x1a8d('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 81d45ba..545819f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfcc=['VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','client','http','then','info'];(function(_0x8f6830,_0x7c8a1e){var _0x4ce2e5=function(_0x5b25ec){while(--_0x5b25ec){_0x8f6830['push'](_0x8f6830['shift']());}};_0x4ce2e5(++_0x7c8a1e);}(_0xdfcc,0x8d));var _0xcdfc=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xdfcc[_0xea8947];return _0x2455e9;};'use strict';var _=require(_0xcdfc('0x0'));var util=require(_0xcdfc('0x1'));var moment=require(_0xcdfc('0x2'));var BPromise=require('bluebird');var rs=require(_0xcdfc('0x3'));var fs=require('fs');var Redis=require(_0xcdfc('0x4'));var db=require(_0xcdfc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcdfc('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xcdfc('0x7')][_0xcdfc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4f942c,_0xcbb5a,_0x35a524){return new BPromise(function(_0x462f04,_0x2b8b7b){return client['request'](_0x4f942c,_0x35a524)[_0xcdfc('0x9')](function(_0x4b91d1){logger[_0xcdfc('0xa')](_0xcdfc('0xb'),_0xcbb5a,_0xcdfc('0xc'));logger[_0xcdfc('0xd')](_0xcdfc('0xe'),_0xcbb5a,_0xcdfc('0xc'),JSON['stringify'](_0x4b91d1));if(_0x4b91d1['error']){if(_0x4b91d1[_0xcdfc('0xf')][_0xcdfc('0x10')]===0x1f4){logger['error'](_0xcdfc('0xb'),_0xcbb5a,_0x4b91d1[_0xcdfc('0xf')]['message']);return _0x2b8b7b(_0x4b91d1[_0xcdfc('0xf')][_0xcdfc('0x11')]);}logger[_0xcdfc('0xf')]('VtigerField,\x20%s,\x20%s',_0xcbb5a,_0x4b91d1[_0xcdfc('0xf')][_0xcdfc('0x11')]);return _0x462f04(_0x4b91d1['error'][_0xcdfc('0x11')]);}else{logger[_0xcdfc('0xa')](_0xcdfc('0xb'),_0xcbb5a,'request\x20sent');_0x462f04(_0x4b91d1[_0xcdfc('0x12')][_0xcdfc('0x11')]);}})['catch'](function(_0x375ae5){logger[_0xcdfc('0xf')]('VtigerField,\x20%s,\x20%s',_0xcbb5a,_0x375ae5);_0x2b8b7b(_0x375ae5);});});}
\ No newline at end of file
+var _0xf8a3=['http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf8a3,0x1b1));var _0x3f8a=function(_0x5733cf,_0x38689b){_0x5733cf=_0x5733cf-0x0;var _0x3c7cdd=_0xf8a3[_0x5733cf];return _0x3c7cdd;};'use strict';var _=require('lodash');var util=require(_0x3f8a('0x0'));var moment=require('moment');var BPromise=require(_0x3f8a('0x1'));var rs=require(_0x3f8a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3f8a('0x3'));var logger=require('../../config/logger')(_0x3f8a('0x4'));var config=require(_0x3f8a('0x5'));var jayson=require(_0x3f8a('0x6'));var client=jayson[_0x3f8a('0x7')][_0x3f8a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e180a,_0x536cf2,_0x1e6169){return new BPromise(function(_0x1ed961,_0xb15578){return client[_0x3f8a('0x9')](_0x3e180a,_0x1e6169)[_0x3f8a('0xa')](function(_0x41f1da){logger[_0x3f8a('0xb')](_0x3f8a('0xc'),_0x536cf2,_0x3f8a('0xd'));logger[_0x3f8a('0xe')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x536cf2,_0x3f8a('0xd'),JSON[_0x3f8a('0xf')](_0x41f1da));if(_0x41f1da[_0x3f8a('0x10')]){if(_0x41f1da[_0x3f8a('0x10')][_0x3f8a('0x11')]===0x1f4){logger[_0x3f8a('0x10')](_0x3f8a('0xc'),_0x536cf2,_0x41f1da[_0x3f8a('0x10')][_0x3f8a('0x12')]);return _0xb15578(_0x41f1da['error'][_0x3f8a('0x12')]);}logger[_0x3f8a('0x10')](_0x3f8a('0xc'),_0x536cf2,_0x41f1da['error'][_0x3f8a('0x12')]);return _0x1ed961(_0x41f1da['error'][_0x3f8a('0x12')]);}else{logger['info'](_0x3f8a('0xc'),_0x536cf2,_0x3f8a('0xd'));_0x1ed961(_0x41f1da[_0x3f8a('0x13')][_0x3f8a('0x12')]);}})[_0x3f8a('0x14')](function(_0x2cebfd){logger[_0x3f8a('0x10')](_0x3f8a('0xc'),_0x536cf2,_0x2cebfd);_0xb15578(_0x2cebfd);});});}
\ No newline at end of file
index 0958433..894e8fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9295=['isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','create','update','delete','destroy','exports','multer','connect-timeout','express','../../config/environment','./intZendeskAccount.controller','get','/:id'];(function(_0x409c91,_0x47533c){var _0x844b39=function(_0x36b8f3){while(--_0x36b8f3){_0x409c91['push'](_0x409c91['shift']());}};_0x844b39(++_0x47533c);}(_0x9295,0x9b));var _0x5929=function(_0x26c6c5,_0x179634){_0x26c6c5=_0x26c6c5-0x0;var _0x1f0010=_0x9295[_0x26c6c5];return _0x1f0010;};'use strict';var multer=require(_0x5929('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5929('0x1'));var express=require(_0x5929('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5929('0x3'));var controller=require(_0x5929('0x4'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5929('0x5')](_0x5929('0x6'),auth[_0x5929('0x7')](),controller[_0x5929('0x8')]);router[_0x5929('0x5')](_0x5929('0x9'),auth[_0x5929('0x7')](),controller[_0x5929('0xa')]);router[_0x5929('0x5')]('/:id/fields',auth['isAuthenticated'](),controller[_0x5929('0xb')]);router[_0x5929('0xc')]('/',auth[_0x5929('0x7')](),controller[_0x5929('0xd')]);router[_0x5929('0xc')]('/:id/configurations',auth[_0x5929('0x7')](),controller['addConfiguration']);router['put'](_0x5929('0x6'),auth['isAuthenticated'](),controller[_0x5929('0xe')]);router[_0x5929('0xf')]('/:id',auth[_0x5929('0x7')](),controller[_0x5929('0x10')]);module[_0x5929('0x11')]=router;
\ No newline at end of file
+var _0xb7b3=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','post','create','update','delete','exports','multer'];(function(_0xc35e79,_0x37df8f){var _0x2f2750=function(_0x33ab91){while(--_0x33ab91){_0xc35e79['push'](_0xc35e79['shift']());}};_0x2f2750(++_0x37df8f);}(_0xb7b3,0xa1));var _0x3b7b=function(_0x5466ab,_0x227b13){_0x5466ab=_0x5466ab-0x0;var _0x40751a=_0xb7b3[_0x5466ab];return _0x40751a;};'use strict';var multer=require(_0x3b7b('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3b7b('0x1'));var router=express[_0x3b7b('0x2')]();var fs_extra=require(_0x3b7b('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x3b7b('0x4'));var config=require(_0x3b7b('0x5'));var controller=require(_0x3b7b('0x6'));router[_0x3b7b('0x7')]('/',auth['isAuthenticated'](),controller[_0x3b7b('0x8')]);router[_0x3b7b('0x7')](_0x3b7b('0x9'),auth[_0x3b7b('0xa')](),controller[_0x3b7b('0xb')]);router['get'](_0x3b7b('0xc'),auth[_0x3b7b('0xa')](),controller['getConfigurations']);router[_0x3b7b('0x7')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x3b7b('0xd')]('/',auth[_0x3b7b('0xa')](),controller[_0x3b7b('0xe')]);router['post'](_0x3b7b('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router['put'](_0x3b7b('0x9'),auth['isAuthenticated'](),controller[_0x3b7b('0xf')]);router[_0x3b7b('0x10')]('/:id',auth[_0x3b7b('0xa')](),controller['destroy']);module[_0x3b7b('0x11')]=router;
\ No newline at end of file
index e21fe95..28083c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb4=['password','token','newTab','integrationTab','exports','STRING','username','remoteUri','ENUM'];(function(_0x2ceba7,_0x451ce4){var _0x5348eb=function(_0x3596fc){while(--_0x3596fc){_0x2ceba7['push'](_0x2ceba7['shift']());}};_0x5348eb(++_0x451ce4);}(_0x4fb4,0x190));var _0x44fb=function(_0x10f5f7,_0x11a6d2){_0x10f5f7=_0x10f5f7-0x0;var _0x497109=_0x4fb4[_0x10f5f7];return _0x497109;};'use strict';var Sequelize=require('sequelize');module[_0x44fb('0x0')]={'name':{'type':Sequelize[_0x44fb('0x1')]},'description':{'type':Sequelize[_0x44fb('0x1')]},'username':{'type':Sequelize[_0x44fb('0x1')],'unique':_0x44fb('0x2')},'password':{'type':Sequelize[_0x44fb('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x44fb('0x1')],'unique':_0x44fb('0x3')},'authType':{'type':Sequelize[_0x44fb('0x4')](_0x44fb('0x5'),_0x44fb('0x6')),'defaultValue':_0x44fb('0x5')},'serverUrl':{'type':Sequelize[_0x44fb('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x44fb('0x4')]('integrationTab',_0x44fb('0x7')),'defaultValue':_0x44fb('0x8')}};
\ No newline at end of file
+var _0xa423=['password','token','integrationTab','newTab','sequelize','exports','STRING','remoteUri','ENUM'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xa423,0x16c));var _0x3a42=function(_0x2398d6,_0x2e04a9){_0x2398d6=_0x2398d6-0x0;var _0x32b942=_0xa423[_0x2398d6];return _0x32b942;};'use strict';var Sequelize=require(_0x3a42('0x0'));module[_0x3a42('0x1')]={'name':{'type':Sequelize[_0x3a42('0x2')]},'description':{'type':Sequelize[_0x3a42('0x2')]},'username':{'type':Sequelize[_0x3a42('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x3a42('0x2')]},'token':{'type':Sequelize[_0x3a42('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x3a42('0x3')},'authType':{'type':Sequelize[_0x3a42('0x4')](_0x3a42('0x5'),_0x3a42('0x6')),'defaultValue':_0x3a42('0x5')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x3a42('0x4')](_0x3a42('0x7'),_0x3a42('0x8')),'defaultValue':_0x3a42('0x7')}};
\ No newline at end of file
index 43fa201..3c9b8f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7072=['model','query','keys','filters','intersection','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZendeskAccount','count','includeAll','findAll','catch','show','fields','length','include','find','create','body','params','getConfigurations','findOne','ZendeskConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','getFields','password','token','authType','remoteUri','slice','substring','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','username','toString','base64','%s/token:%s','Unknown\x20authentication\x20type','subject','description','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type'];(function(_0x598fa0,_0x183280){var _0x29a6ab=function(_0x2f82f9){while(--_0x2f82f9){_0x598fa0['push'](_0x598fa0['shift']());}};_0x29a6ab(++_0x183280);}(_0x7072,0x138));var _0x2707=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x7072[_0xa8883];return _0x479426;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2707('0x0'));var zipdir=require(_0x2707('0x1'));var jsonpatch=require(_0x2707('0x2'));var rp=require(_0x2707('0x3'));var moment=require(_0x2707('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2707('0x5'));var path=require('path');var sox=require(_0x2707('0x6'));var csv=require(_0x2707('0x7'));var ejs=require(_0x2707('0x8'));var fs=require('fs');var fs_extra=require(_0x2707('0x9'));var _=require(_0x2707('0xa'));var squel=require(_0x2707('0xb'));var crypto=require(_0x2707('0xc'));var jsforce=require(_0x2707('0xd'));var deskjs=require(_0x2707('0xe'));var toCsv=require(_0x2707('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2707('0xf'));var authService=require(_0x2707('0x10'));var qs=require(_0x2707('0x11'));var as=require(_0x2707('0x12'));var hardwareService=require(_0x2707('0x13'));var logger=require(_0x2707('0x14'))(_0x2707('0x15'));var utils=require(_0x2707('0x16'));var config=require(_0x2707('0x17'));var licenseUtil=require(_0x2707('0x18'));var db=require(_0x2707('0x19'))['db'];var integrations=require(_0x2707('0x1a'));function respondWithStatusCode(_0x40d370,_0x5bf16e){_0x5bf16e=_0x5bf16e||0xcc;return function(_0x44c1d7){if(_0x44c1d7){return _0x40d370['sendStatus'](_0x5bf16e);}return _0x40d370[_0x2707('0x1b')](_0x5bf16e)[_0x2707('0x1c')]();};}function respondWithResult(_0xfe975c,_0x3a67f2){_0x3a67f2=_0x3a67f2||0xc8;return function(_0x13d9ac){if(_0x13d9ac){return _0xfe975c['status'](_0x3a67f2)[_0x2707('0x1d')](_0x13d9ac);}};}function respondWithFilteredResult(_0x1a687a,_0x2f6381){return function(_0x5d523f){if(_0x5d523f){var _0x1153d7=typeof _0x2f6381[_0x2707('0x1e')]===_0x2707('0x1f')&&typeof _0x2f6381[_0x2707('0x20')]===_0x2707('0x1f');var _0x27a3ea=_0x5d523f['count'];var _0x119ac4=_0x1153d7?0x0:_0x2f6381[_0x2707('0x1e')];var _0x4009f3=_0x1153d7?_0x5d523f['count']:_0x2f6381['offset']+_0x2f6381['limit'];var _0x1da4a6;if(_0x4009f3>=_0x27a3ea){_0x4009f3=_0x27a3ea;_0x1da4a6=0xc8;}else{_0x1da4a6=0xce;}_0x1a687a[_0x2707('0x1b')](_0x1da4a6);return _0x1a687a[_0x2707('0x21')](_0x2707('0x22'),_0x119ac4+'-'+_0x4009f3+'/'+_0x27a3ea)[_0x2707('0x1d')](_0x5d523f);}return null;};}function patchUpdates(_0x3c2935){return function(_0xab87f1){try{jsonpatch[_0x2707('0x23')](_0xab87f1,_0x3c2935,!![]);}catch(_0x1e50ea){return BPromise[_0x2707('0x24')](_0x1e50ea);}return _0xab87f1[_0x2707('0x25')]();};}function saveUpdates(_0x119df4,_0x454fde){return function(_0x1c0ffe){if(_0x1c0ffe){return _0x1c0ffe['update'](_0x119df4)[_0x2707('0x26')](function(_0x3b030a){return _0x3b030a;});}return null;};}function removeEntity(_0x46259e,_0x369e3a){return function(_0x378ca4){if(_0x378ca4){return _0x378ca4[_0x2707('0x27')]()['then'](function(){_0x46259e[_0x2707('0x1b')](0xcc)[_0x2707('0x1c')]();});}};}function handleEntityNotFound(_0x171add,_0x2ad386){return function(_0x5b763f){if(!_0x5b763f){_0x171add['sendStatus'](0x194);}return _0x5b763f;};}function handleError(_0x2dce16,_0x4ca05d){_0x4ca05d=_0x4ca05d||0x1f4;return function(_0x29dad2){logger[_0x2707('0x28')](_0x29dad2[_0x2707('0x29')]);if(_0x29dad2['name']){delete _0x29dad2[_0x2707('0x2a')];}_0x2dce16[_0x2707('0x1b')](_0x4ca05d)[_0x2707('0x2b')](_0x29dad2);};}exports['index']=function(_0x31e990,_0x42adf8){var _0x4a99ce={},_0xd63d3f={},_0x497c92={'count':0x0,'rows':[]};var _0x5aaffb=_[_0x2707('0x2c')](db['ZendeskAccount'][_0x2707('0x2d')],function(_0x3f153d){return{'name':_0x3f153d[_0x2707('0x2e')],'type':_0x3f153d[_0x2707('0x2f')]['key']};});_0xd63d3f[_0x2707('0x30')]=_[_0x2707('0x2c')](_0x5aaffb,_0x2707('0x2a'));_0xd63d3f[_0x2707('0x31')]=_[_0x2707('0x32')](_0x31e990[_0x2707('0x31')]);_0xd63d3f[_0x2707('0x33')]=_[_0x2707('0x34')](_0xd63d3f[_0x2707('0x30')],_0xd63d3f['query']);_0x4a99ce[_0x2707('0x35')]=_[_0x2707('0x34')](_0xd63d3f['model'],qs['fields'](_0x31e990['query']['fields']));_0x4a99ce['attributes']=_0x4a99ce[_0x2707('0x35')]['length']?_0x4a99ce['attributes']:_0xd63d3f[_0x2707('0x30')];if(!_0x31e990[_0x2707('0x31')]['hasOwnProperty'](_0x2707('0x36'))){_0x4a99ce[_0x2707('0x20')]=qs['limit'](_0x31e990['query'][_0x2707('0x20')]);_0x4a99ce[_0x2707('0x1e')]=qs['offset'](_0x31e990['query'][_0x2707('0x1e')]);}_0x4a99ce[_0x2707('0x37')]=qs['sort'](_0x31e990[_0x2707('0x31')][_0x2707('0x38')]);_0x4a99ce[_0x2707('0x39')]=qs[_0x2707('0x33')](_[_0x2707('0x3a')](_0x31e990[_0x2707('0x31')],_0xd63d3f['filters']),_0x5aaffb);if(_0x31e990[_0x2707('0x31')][_0x2707('0x3b')]){_0x4a99ce[_0x2707('0x39')]=_[_0x2707('0x3c')](_0x4a99ce[_0x2707('0x39')],{'$or':_[_0x2707('0x2c')](_0x5aaffb,function(_0x2700bf){if(_0x2700bf['type']!==_0x2707('0x3d')){var _0x2473e3={};_0x2473e3[_0x2700bf[_0x2707('0x2a')]]={'$like':'%'+_0x31e990[_0x2707('0x31')][_0x2707('0x3b')]+'%'};return _0x2473e3;}})});}_0x4a99ce=_[_0x2707('0x3c')]({},_0x4a99ce,_0x31e990[_0x2707('0x3e')]);var _0x39d9f6={'where':_0x4a99ce[_0x2707('0x39')]};return db[_0x2707('0x3f')][_0x2707('0x40')](_0x39d9f6)[_0x2707('0x26')](function(_0x2a221c){_0x497c92[_0x2707('0x40')]=_0x2a221c;if(_0x31e990[_0x2707('0x31')][_0x2707('0x41')]){_0x4a99ce['include']=[{'all':!![]}];}return db[_0x2707('0x3f')][_0x2707('0x42')](_0x4a99ce);})['then'](function(_0x358aa8){_0x497c92['rows']=_0x358aa8;return _0x497c92;})[_0x2707('0x26')](respondWithFilteredResult(_0x42adf8,_0x4a99ce))[_0x2707('0x43')](handleError(_0x42adf8,null));};exports[_0x2707('0x44')]=function(_0x1d69d3,_0x13e1c0){var _0xdeec24={'raw':![],'where':{'id':_0x1d69d3['params']['id']}},_0x26b464={};_0x26b464[_0x2707('0x30')]=_[_0x2707('0x32')](db['ZendeskAccount'][_0x2707('0x2d')]);_0x26b464[_0x2707('0x31')]=_[_0x2707('0x32')](_0x1d69d3['query']);_0x26b464['filters']=_[_0x2707('0x34')](_0x26b464[_0x2707('0x30')],_0x26b464['query']);_0xdeec24[_0x2707('0x35')]=_['intersection'](_0x26b464[_0x2707('0x30')],qs[_0x2707('0x45')](_0x1d69d3[_0x2707('0x31')][_0x2707('0x45')]));_0xdeec24['attributes']=_0xdeec24[_0x2707('0x35')][_0x2707('0x46')]?_0xdeec24[_0x2707('0x35')]:_0x26b464[_0x2707('0x30')];if(_0x1d69d3[_0x2707('0x31')][_0x2707('0x41')]){_0xdeec24[_0x2707('0x47')]=[{'all':!![]}];}_0xdeec24=_['merge']({},_0xdeec24,_0x1d69d3[_0x2707('0x3e')]);return db[_0x2707('0x3f')][_0x2707('0x48')](_0xdeec24)[_0x2707('0x26')](handleEntityNotFound(_0x13e1c0,null))[_0x2707('0x26')](respondWithResult(_0x13e1c0,null))['catch'](handleError(_0x13e1c0,null));};exports[_0x2707('0x49')]=function(_0x4a6eea,_0xf96f41){return db[_0x2707('0x3f')]['create'](_0x4a6eea[_0x2707('0x4a')],{})[_0x2707('0x26')](respondWithResult(_0xf96f41,0xc9))[_0x2707('0x43')](handleError(_0xf96f41,null));};exports['update']=function(_0x1a8034,_0x59c60f){if(_0x1a8034[_0x2707('0x4a')]['id']){delete _0x1a8034[_0x2707('0x4a')]['id'];}return db['ZendeskAccount'][_0x2707('0x48')]({'where':{'id':_0x1a8034[_0x2707('0x4b')]['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x59c60f,null))['then'](saveUpdates(_0x1a8034['body'],null))[_0x2707('0x26')](respondWithResult(_0x59c60f,null))[_0x2707('0x43')](handleError(_0x59c60f,null));};exports[_0x2707('0x27')]=function(_0x2515dc,_0x463bf){return db['ZendeskAccount']['find']({'where':{'id':_0x2515dc['params']['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x463bf,null))[_0x2707('0x26')](removeEntity(_0x463bf,null))[_0x2707('0x43')](handleError(_0x463bf,null));};exports[_0x2707('0x4c')]=function(_0x1ffcce,_0x5b622c,_0xa2c4c0){var _0x2df682={};var _0x5c99fd={};var _0x482ed1;var _0x3b41b2;return db[_0x2707('0x3f')][_0x2707('0x4d')]({'where':{'id':_0x1ffcce['params']['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x5b622c,null))[_0x2707('0x26')](function(_0x2a2a71){if(_0x2a2a71){_0x482ed1=_0x2a2a71;_0x5c99fd[_0x2707('0x30')]=_['keys'](db[_0x2707('0x4e')][_0x2707('0x2d')]);_0x5c99fd[_0x2707('0x31')]=_[_0x2707('0x32')](_0x1ffcce[_0x2707('0x31')]);_0x5c99fd[_0x2707('0x33')]=_[_0x2707('0x34')](_0x5c99fd[_0x2707('0x30')],_0x5c99fd[_0x2707('0x31')]);_0x2df682[_0x2707('0x35')]=_['intersection'](_0x5c99fd[_0x2707('0x30')],qs['fields'](_0x1ffcce['query'][_0x2707('0x45')]));_0x2df682['attributes']=_0x2df682['attributes'][_0x2707('0x46')]?_0x2df682[_0x2707('0x35')]:_0x5c99fd[_0x2707('0x30')];_0x2df682[_0x2707('0x37')]=qs[_0x2707('0x38')](_0x1ffcce[_0x2707('0x31')][_0x2707('0x38')]);_0x2df682[_0x2707('0x39')]=qs[_0x2707('0x33')](_[_0x2707('0x3a')](_0x1ffcce[_0x2707('0x31')],_0x5c99fd['filters']));if(_0x1ffcce['query']['filter']){_0x2df682[_0x2707('0x39')]=_[_0x2707('0x3c')](_0x2df682[_0x2707('0x39')],{'$or':_['map'](_0x2df682['attributes'],function(_0x33ce37){var _0x39c9b4={};_0x39c9b4[_0x33ce37]={'$like':'%'+_0x1ffcce[_0x2707('0x31')][_0x2707('0x3b')]+'%'};return _0x39c9b4;})});}_0x2df682=_[_0x2707('0x3c')]({},_0x2df682,_0x1ffcce['options']);return _0x482ed1['getConfigurations'](_0x2df682);}})[_0x2707('0x26')](function(_0x6a3e8d){if(_0x6a3e8d){_0x3b41b2=_0x6a3e8d[_0x2707('0x46')];if(!_0x1ffcce[_0x2707('0x31')][_0x2707('0x4f')](_0x2707('0x36'))){_0x2df682[_0x2707('0x20')]=qs[_0x2707('0x20')](_0x1ffcce[_0x2707('0x31')]['limit']);_0x2df682[_0x2707('0x1e')]=qs[_0x2707('0x1e')](_0x1ffcce[_0x2707('0x31')][_0x2707('0x1e')]);}return _0x482ed1[_0x2707('0x4c')](_0x2df682);}})[_0x2707('0x26')](function(_0x519042){if(_0x519042){return _0x519042?{'count':_0x3b41b2,'rows':_0x519042}:null;}})['then'](respondWithResult(_0x5b622c,null))[_0x2707('0x43')](handleError(_0x5b622c,null));};exports[_0x2707('0x50')]=function(_0x4eb8eb,_0x58fefc,_0x4f14e0){if(_0x4eb8eb['body']['id']){delete _0x4eb8eb[_0x2707('0x4a')]['id'];}return db[_0x2707('0x3f')]['findOne']({'where':{'id':_0x4eb8eb[_0x2707('0x4b')]['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x58fefc,null))[_0x2707('0x26')](function(_0x5bad5a){if(_0x5bad5a){_0x4eb8eb['body'][_0x2707('0x51')]=_0x5bad5a['id'];_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x52')]=integrations[_0x2707('0x53')](_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x54')],_0x4eb8eb[_0x2707('0x4a')]['type']);_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x55')]=integrations[_0x2707('0x56')](_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x54')],_0x4eb8eb[_0x2707('0x4a')]['type']);return db[_0x2707('0x4e')][_0x2707('0x49')](_0x4eb8eb[_0x2707('0x4a')],{'include':[{'model':db[_0x2707('0x57')],'as':_0x2707('0x52')},{'model':db[_0x2707('0x57')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x58fefc,null))[_0x2707('0x43')](handleError(_0x58fefc,null));};exports[_0x2707('0x58')]=function(_0x354322,_0x42da4e,_0x3ae5c6){var _0x2af149='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x354322[_0x2707('0x4b')]['id']},'attributes':['id','username',_0x2707('0x59'),_0x2707('0x5a'),_0x2707('0x5b'),_0x2707('0x5c')]})[_0x2707('0x26')](handleEntityNotFound(_0x42da4e,null))[_0x2707('0x26')](function(_0x5bb260){if(_0x5bb260){_0x2af149=_0x5bb260[_0x2707('0x5c')];var _0x4787d7=_0x2af149[_0x2707('0x5d')](-0x1);if(_0x4787d7==='/'){_0x2af149=_0x2af149[_0x2707('0x5e')](0x0,_0x2af149['lastIndexOf'](_0x4787d7));}var _0x155c4f={'method':_0x2707('0x5f'),'uri':util[_0x2707('0x60')](_0x2707('0x61'),_0x2af149,_0x2707('0x62')),'json':!![]};switch(_0x5bb260['authType']){case _0x2707('0x59'):_0x155c4f[_0x2707('0x63')]={'Authorization':util[_0x2707('0x60')](_0x2707('0x64'),new Buffer(util[_0x2707('0x60')](_0x2707('0x65'),_0x5bb260[_0x2707('0x66')],_0x5bb260[_0x2707('0x59')]))[_0x2707('0x67')](_0x2707('0x68')))};break;case _0x2707('0x5a'):_0x155c4f[_0x2707('0x63')]={'Authorization':util[_0x2707('0x60')](_0x2707('0x64'),new Buffer(util[_0x2707('0x60')](_0x2707('0x69'),_0x5bb260[_0x2707('0x66')],_0x5bb260[_0x2707('0x5a')]))['toString'](_0x2707('0x68')))};break;default:throw new db['Sequelize']['ValidationError'](_0x2707('0x6a'));}return rp(_0x155c4f);}})[_0x2707('0x26')](function(_0x35a62c){if(_0x35a62c){var _0x11ac13=[_0x2707('0x6b'),_0x2707('0x6c'),'group',_0x2707('0x6d')];_[_0x2707('0x6e')](_0x35a62c[_0x2707('0x62')],function(_0x54009a){return _0x11ac13[_0x2707('0x6f')](_0x54009a[_0x2707('0x2f')]);});return{'count':_0x35a62c[_0x2707('0x62')][_0x2707('0x46')],'rows':_['map'](_0x35a62c[_0x2707('0x62')],function(_0x5c68d6){return{'id':_0x5c68d6['id'],'name':_0x5c68d6[_0x2707('0x70')]>0x7?_0x5c68d6[_0x2707('0x71')]:_0x5c68d6[_0x2707('0x2f')],'custom':_0x5c68d6[_0x2707('0x70')]>0x7?!![]:![],'options':_0x5c68d6[_0x2707('0x72')]?_0x5c68d6[_0x2707('0x72')]:_0x5c68d6[_0x2707('0x73')]?_0x5c68d6[_0x2707('0x73')]:[]};})};}})[_0x2707('0x26')](respondWithResult(_0x42da4e,null))['catch'](function(_0x4530bc){var _0x5a1a24=_0x354322[_0x2707('0x31')][_0x2707('0x74')]?0x1f4:_0x4530bc[_0x2707('0x75')]||0x1f4;logger[_0x2707('0x28')](_0x2707('0x76'),_0x2707('0x58'),_0x5a1a24,JSON['stringify'](_0x4530bc));delete _0x4530bc['name'];if(_0x5a1a24===0x191){_0x5a1a24=0x190;}_0x42da4e[_0x2707('0x1b')](_0x5a1a24)['send'](_0x354322[_0x2707('0x31')][_0x2707('0x74')]?{'message':_0x2707('0x77'),'statusCode':_0x4530bc[_0x2707('0x75')]}:_0x4530bc);});};
\ No newline at end of file
+var _0xa478=['ZendeskAccount','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','catch','show','params','rawAttributes','includeAll','find','create','body','destroy','ZendeskConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','channel','type','Descriptions','getDescriptions','ZendeskField','password','token','authType','remoteUri','slice','lastIndexOf','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','username','toString','base64','%s/token:%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','error','getFields','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','sendStatus','stack','name','index','map'];(function(_0x406425,_0x54f8d5){var _0x1005d6=function(_0x3fafd2){while(--_0x3fafd2){_0x406425['push'](_0x406425['shift']());}};_0x1005d6(++_0x54f8d5);}(_0xa478,0x136));var _0x8a47=function(_0x3d5f84,_0x569548){_0x3d5f84=_0x3d5f84-0x0;var _0x1981b8=_0xa478[_0x3d5f84];return _0x1981b8;};'use strict';var emlformat=require(_0x8a47('0x0'));var rimraf=require(_0x8a47('0x1'));var zipdir=require(_0x8a47('0x2'));var jsonpatch=require(_0x8a47('0x3'));var rp=require(_0x8a47('0x4'));var moment=require(_0x8a47('0x5'));var BPromise=require(_0x8a47('0x6'));var Mustache=require(_0x8a47('0x7'));var util=require(_0x8a47('0x8'));var path=require(_0x8a47('0x9'));var sox=require(_0x8a47('0xa'));var csv=require(_0x8a47('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8a47('0xc'));var _=require(_0x8a47('0xd'));var squel=require(_0x8a47('0xe'));var crypto=require(_0x8a47('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x8a47('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8a47('0x11'));var Papa=require(_0x8a47('0x12'));var Redis=require(_0x8a47('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x8a47('0x14'));var as=require(_0x8a47('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8a47('0x16'))('api');var utils=require(_0x8a47('0x17'));var config=require(_0x8a47('0x18'));var licenseUtil=require(_0x8a47('0x19'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x59efc7,_0x36941a){_0x36941a=_0x36941a||0xcc;return function(_0x12539c){if(_0x12539c){return _0x59efc7['sendStatus'](_0x36941a);}return _0x59efc7[_0x8a47('0x1a')](_0x36941a)[_0x8a47('0x1b')]();};}function respondWithResult(_0x1a9a6f,_0x55985c){_0x55985c=_0x55985c||0xc8;return function(_0x1c23e3){if(_0x1c23e3){return _0x1a9a6f[_0x8a47('0x1a')](_0x55985c)[_0x8a47('0x1c')](_0x1c23e3);}};}function respondWithFilteredResult(_0x1c8488,_0x41bdaf){return function(_0x18f2be){if(_0x18f2be){var _0x26fd48=typeof _0x41bdaf[_0x8a47('0x1d')]===_0x8a47('0x1e')&&typeof _0x41bdaf['limit']===_0x8a47('0x1e');var _0x1d0b04=_0x18f2be[_0x8a47('0x1f')];var _0x5f5884=_0x26fd48?0x0:_0x41bdaf[_0x8a47('0x1d')];var _0x5c62eb=_0x26fd48?_0x18f2be['count']:_0x41bdaf[_0x8a47('0x1d')]+_0x41bdaf[_0x8a47('0x20')];var _0x158e0c;if(_0x5c62eb>=_0x1d0b04){_0x5c62eb=_0x1d0b04;_0x158e0c=0xc8;}else{_0x158e0c=0xce;}_0x1c8488[_0x8a47('0x1a')](_0x158e0c);return _0x1c8488[_0x8a47('0x21')](_0x8a47('0x22'),_0x5f5884+'-'+_0x5c62eb+'/'+_0x1d0b04)[_0x8a47('0x1c')](_0x18f2be);}return null;};}function patchUpdates(_0x1bbed6){return function(_0x2b88a7){try{jsonpatch[_0x8a47('0x23')](_0x2b88a7,_0x1bbed6,!![]);}catch(_0x54ce6a){return BPromise[_0x8a47('0x24')](_0x54ce6a);}return _0x2b88a7['save']();};}function saveUpdates(_0x289f28,_0x3d7993){return function(_0x36908d){if(_0x36908d){return _0x36908d[_0x8a47('0x25')](_0x289f28)['then'](function(_0x116b5e){return _0x116b5e;});}return null;};}function removeEntity(_0x5ae186,_0x50f6ba){return function(_0x4d71f4){if(_0x4d71f4){return _0x4d71f4['destroy']()[_0x8a47('0x26')](function(){_0x5ae186[_0x8a47('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bb0d4,_0xb4590d){return function(_0x42dae1){if(!_0x42dae1){_0x2bb0d4[_0x8a47('0x27')](0x194);}return _0x42dae1;};}function handleError(_0x44cf20,_0xd06be6){_0xd06be6=_0xd06be6||0x1f4;return function(_0x24a20b){logger['error'](_0x24a20b[_0x8a47('0x28')]);if(_0x24a20b['name']){delete _0x24a20b[_0x8a47('0x29')];}_0x44cf20[_0x8a47('0x1a')](_0xd06be6)['send'](_0x24a20b);};}exports[_0x8a47('0x2a')]=function(_0x526571,_0x4d5d32){var _0x12470a={},_0x9b51b8={},_0x1ddbcf={'count':0x0,'rows':[]};var _0x12f0b7=_[_0x8a47('0x2b')](db[_0x8a47('0x2c')]['rawAttributes'],function(_0x353576){return{'name':_0x353576['fieldName'],'type':_0x353576['type'][_0x8a47('0x2d')]};});_0x9b51b8[_0x8a47('0x2e')]=_[_0x8a47('0x2b')](_0x12f0b7,_0x8a47('0x29'));_0x9b51b8[_0x8a47('0x2f')]=_[_0x8a47('0x30')](_0x526571[_0x8a47('0x2f')]);_0x9b51b8[_0x8a47('0x31')]=_[_0x8a47('0x32')](_0x9b51b8[_0x8a47('0x2e')],_0x9b51b8['query']);_0x12470a[_0x8a47('0x33')]=_[_0x8a47('0x32')](_0x9b51b8[_0x8a47('0x2e')],qs['fields'](_0x526571[_0x8a47('0x2f')][_0x8a47('0x34')]));_0x12470a['attributes']=_0x12470a[_0x8a47('0x33')][_0x8a47('0x35')]?_0x12470a[_0x8a47('0x33')]:_0x9b51b8[_0x8a47('0x2e')];if(!_0x526571['query']['hasOwnProperty'](_0x8a47('0x36'))){_0x12470a[_0x8a47('0x20')]=qs[_0x8a47('0x20')](_0x526571[_0x8a47('0x2f')][_0x8a47('0x20')]);_0x12470a[_0x8a47('0x1d')]=qs[_0x8a47('0x1d')](_0x526571['query']['offset']);}_0x12470a[_0x8a47('0x37')]=qs[_0x8a47('0x38')](_0x526571[_0x8a47('0x2f')][_0x8a47('0x38')]);_0x12470a[_0x8a47('0x39')]=qs[_0x8a47('0x31')](_[_0x8a47('0x3a')](_0x526571[_0x8a47('0x2f')],_0x9b51b8[_0x8a47('0x31')]),_0x12f0b7);if(_0x526571[_0x8a47('0x2f')][_0x8a47('0x3b')]){_0x12470a['where']=_[_0x8a47('0x3c')](_0x12470a['where'],{'$or':_['map'](_0x12f0b7,function(_0x544fe2){if(_0x544fe2['type']!=='VIRTUAL'){var _0x3edb2e={};_0x3edb2e[_0x544fe2[_0x8a47('0x29')]]={'$like':'%'+_0x526571[_0x8a47('0x2f')][_0x8a47('0x3b')]+'%'};return _0x3edb2e;}})});}_0x12470a=_[_0x8a47('0x3c')]({},_0x12470a,_0x526571[_0x8a47('0x3d')]);var _0x25c45b={'where':_0x12470a[_0x8a47('0x39')]};return db['ZendeskAccount']['count'](_0x25c45b)[_0x8a47('0x26')](function(_0x437b86){_0x1ddbcf[_0x8a47('0x1f')]=_0x437b86;if(_0x526571[_0x8a47('0x2f')]['includeAll']){_0x12470a[_0x8a47('0x3e')]=[{'all':!![]}];}return db[_0x8a47('0x2c')][_0x8a47('0x3f')](_0x12470a);})[_0x8a47('0x26')](function(_0x1ef057){_0x1ddbcf['rows']=_0x1ef057;return _0x1ddbcf;})[_0x8a47('0x26')](respondWithFilteredResult(_0x4d5d32,_0x12470a))[_0x8a47('0x40')](handleError(_0x4d5d32,null));};exports[_0x8a47('0x41')]=function(_0x5d23ed,_0x2b3874){var _0x2c70ea={'raw':![],'where':{'id':_0x5d23ed[_0x8a47('0x42')]['id']}},_0xf313ec={};_0xf313ec['model']=_[_0x8a47('0x30')](db[_0x8a47('0x2c')][_0x8a47('0x43')]);_0xf313ec[_0x8a47('0x2f')]=_[_0x8a47('0x30')](_0x5d23ed[_0x8a47('0x2f')]);_0xf313ec['filters']=_['intersection'](_0xf313ec[_0x8a47('0x2e')],_0xf313ec[_0x8a47('0x2f')]);_0x2c70ea[_0x8a47('0x33')]=_['intersection'](_0xf313ec[_0x8a47('0x2e')],qs[_0x8a47('0x34')](_0x5d23ed['query']['fields']));_0x2c70ea[_0x8a47('0x33')]=_0x2c70ea['attributes'][_0x8a47('0x35')]?_0x2c70ea[_0x8a47('0x33')]:_0xf313ec[_0x8a47('0x2e')];if(_0x5d23ed[_0x8a47('0x2f')][_0x8a47('0x44')]){_0x2c70ea[_0x8a47('0x3e')]=[{'all':!![]}];}_0x2c70ea=_['merge']({},_0x2c70ea,_0x5d23ed['options']);return db[_0x8a47('0x2c')][_0x8a47('0x45')](_0x2c70ea)[_0x8a47('0x26')](handleEntityNotFound(_0x2b3874,null))[_0x8a47('0x26')](respondWithResult(_0x2b3874,null))[_0x8a47('0x40')](handleError(_0x2b3874,null));};exports['create']=function(_0x4898d0,_0x17a755){return db['ZendeskAccount'][_0x8a47('0x46')](_0x4898d0[_0x8a47('0x47')],{})['then'](respondWithResult(_0x17a755,0xc9))[_0x8a47('0x40')](handleError(_0x17a755,null));};exports[_0x8a47('0x25')]=function(_0x14e22c,_0x108c7f){if(_0x14e22c[_0x8a47('0x47')]['id']){delete _0x14e22c[_0x8a47('0x47')]['id'];}return db[_0x8a47('0x2c')][_0x8a47('0x45')]({'where':{'id':_0x14e22c['params']['id']}})[_0x8a47('0x26')](handleEntityNotFound(_0x108c7f,null))[_0x8a47('0x26')](saveUpdates(_0x14e22c[_0x8a47('0x47')],null))[_0x8a47('0x26')](respondWithResult(_0x108c7f,null))['catch'](handleError(_0x108c7f,null));};exports[_0x8a47('0x48')]=function(_0xa428dd,_0x24e123){return db[_0x8a47('0x2c')][_0x8a47('0x45')]({'where':{'id':_0xa428dd[_0x8a47('0x42')]['id']}})['then'](handleEntityNotFound(_0x24e123,null))['then'](removeEntity(_0x24e123,null))[_0x8a47('0x40')](handleError(_0x24e123,null));};exports['getConfigurations']=function(_0x1da8b7,_0x175023,_0x5a1b29){var _0xb05ed1={};var _0x4bf9a8={};var _0x315111;var _0x5c5577;return db[_0x8a47('0x2c')]['findOne']({'where':{'id':_0x1da8b7[_0x8a47('0x42')]['id']}})[_0x8a47('0x26')](handleEntityNotFound(_0x175023,null))[_0x8a47('0x26')](function(_0x144ce6){if(_0x144ce6){_0x315111=_0x144ce6;_0x4bf9a8[_0x8a47('0x2e')]=_[_0x8a47('0x30')](db[_0x8a47('0x49')][_0x8a47('0x43')]);_0x4bf9a8[_0x8a47('0x2f')]=_[_0x8a47('0x30')](_0x1da8b7[_0x8a47('0x2f')]);_0x4bf9a8['filters']=_[_0x8a47('0x32')](_0x4bf9a8[_0x8a47('0x2e')],_0x4bf9a8['query']);_0xb05ed1[_0x8a47('0x33')]=_[_0x8a47('0x32')](_0x4bf9a8[_0x8a47('0x2e')],qs[_0x8a47('0x34')](_0x1da8b7[_0x8a47('0x2f')][_0x8a47('0x34')]));_0xb05ed1[_0x8a47('0x33')]=_0xb05ed1[_0x8a47('0x33')][_0x8a47('0x35')]?_0xb05ed1[_0x8a47('0x33')]:_0x4bf9a8[_0x8a47('0x2e')];_0xb05ed1[_0x8a47('0x37')]=qs['sort'](_0x1da8b7[_0x8a47('0x2f')][_0x8a47('0x38')]);_0xb05ed1[_0x8a47('0x39')]=qs[_0x8a47('0x31')](_[_0x8a47('0x3a')](_0x1da8b7[_0x8a47('0x2f')],_0x4bf9a8[_0x8a47('0x31')]));if(_0x1da8b7[_0x8a47('0x2f')][_0x8a47('0x3b')]){_0xb05ed1[_0x8a47('0x39')]=_[_0x8a47('0x3c')](_0xb05ed1[_0x8a47('0x39')],{'$or':_[_0x8a47('0x2b')](_0xb05ed1[_0x8a47('0x33')],function(_0x2edcaf){var _0x7664a8={};_0x7664a8[_0x2edcaf]={'$like':'%'+_0x1da8b7['query'][_0x8a47('0x3b')]+'%'};return _0x7664a8;})});}_0xb05ed1=_['merge']({},_0xb05ed1,_0x1da8b7[_0x8a47('0x3d')]);return _0x315111[_0x8a47('0x4a')](_0xb05ed1);}})[_0x8a47('0x26')](function(_0x21fdb5){if(_0x21fdb5){_0x5c5577=_0x21fdb5[_0x8a47('0x35')];if(!_0x1da8b7[_0x8a47('0x2f')]['hasOwnProperty'](_0x8a47('0x36'))){_0xb05ed1[_0x8a47('0x20')]=qs[_0x8a47('0x20')](_0x1da8b7['query']['limit']);_0xb05ed1[_0x8a47('0x1d')]=qs[_0x8a47('0x1d')](_0x1da8b7['query'][_0x8a47('0x1d')]);}return _0x315111[_0x8a47('0x4a')](_0xb05ed1);}})[_0x8a47('0x26')](function(_0x17f20f){if(_0x17f20f){return _0x17f20f?{'count':_0x5c5577,'rows':_0x17f20f}:null;}})[_0x8a47('0x26')](respondWithResult(_0x175023,null))[_0x8a47('0x40')](handleError(_0x175023,null));};exports[_0x8a47('0x4b')]=function(_0x2932f1,_0x99848c,_0x1b834a){if(_0x2932f1[_0x8a47('0x47')]['id']){delete _0x2932f1[_0x8a47('0x47')]['id'];}return db[_0x8a47('0x2c')]['findOne']({'where':{'id':_0x2932f1[_0x8a47('0x42')]['id']}})[_0x8a47('0x26')](handleEntityNotFound(_0x99848c,null))[_0x8a47('0x26')](function(_0x13a002){if(_0x13a002){_0x2932f1[_0x8a47('0x47')][_0x8a47('0x4c')]=_0x13a002['id'];_0x2932f1['body'][_0x8a47('0x4d')]=integrations['getSubjects'](_0x2932f1['body'][_0x8a47('0x4e')],_0x2932f1[_0x8a47('0x47')][_0x8a47('0x4f')]);_0x2932f1[_0x8a47('0x47')][_0x8a47('0x50')]=integrations[_0x8a47('0x51')](_0x2932f1['body']['channel'],_0x2932f1[_0x8a47('0x47')]['type']);return db[_0x8a47('0x49')][_0x8a47('0x46')](_0x2932f1[_0x8a47('0x47')],{'include':[{'model':db[_0x8a47('0x52')],'as':_0x8a47('0x4d')},{'model':db[_0x8a47('0x52')],'as':_0x8a47('0x50')}]});}return null;})[_0x8a47('0x26')](respondWithResult(_0x99848c,null))['catch'](handleError(_0x99848c,null));};exports['getFields']=function(_0x435039,_0x131176,_0x2761bf){var _0x5d6ebc='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x435039[_0x8a47('0x42')]['id']},'attributes':['id','username',_0x8a47('0x53'),_0x8a47('0x54'),_0x8a47('0x55'),_0x8a47('0x56')]})['then'](handleEntityNotFound(_0x131176,null))[_0x8a47('0x26')](function(_0x55c590){if(_0x55c590){_0x5d6ebc=_0x55c590[_0x8a47('0x56')];var _0x430ee2=_0x5d6ebc[_0x8a47('0x57')](-0x1);if(_0x430ee2==='/'){_0x5d6ebc=_0x5d6ebc['substring'](0x0,_0x5d6ebc[_0x8a47('0x58')](_0x430ee2));}var _0x3f53ba={'method':'GET','uri':util[_0x8a47('0x59')](_0x8a47('0x5a'),_0x5d6ebc,_0x8a47('0x5b')),'json':!![]};switch(_0x55c590[_0x8a47('0x55')]){case _0x8a47('0x53'):_0x3f53ba[_0x8a47('0x5c')]={'Authorization':util[_0x8a47('0x59')](_0x8a47('0x5d'),new Buffer(util['format'](_0x8a47('0x5e'),_0x55c590[_0x8a47('0x5f')],_0x55c590['password']))[_0x8a47('0x60')](_0x8a47('0x61')))};break;case'token':_0x3f53ba[_0x8a47('0x5c')]={'Authorization':util[_0x8a47('0x59')](_0x8a47('0x5d'),new Buffer(util[_0x8a47('0x59')](_0x8a47('0x62'),_0x55c590['username'],_0x55c590['token']))[_0x8a47('0x60')](_0x8a47('0x61')))};break;default:throw new db[(_0x8a47('0x63'))][(_0x8a47('0x64'))](_0x8a47('0x65'));}return rp(_0x3f53ba);}})[_0x8a47('0x26')](function(_0x34bb61){if(_0x34bb61){var _0x4845fa=[_0x8a47('0x66'),_0x8a47('0x67'),_0x8a47('0x68'),'assignee'];_[_0x8a47('0x69')](_0x34bb61[_0x8a47('0x5b')],function(_0xa2ea5c){return _0x4845fa[_0x8a47('0x6a')](_0xa2ea5c[_0x8a47('0x4f')]);});return{'count':_0x34bb61[_0x8a47('0x5b')][_0x8a47('0x35')],'rows':_[_0x8a47('0x2b')](_0x34bb61['ticket_fields'],function(_0x509e91){return{'id':_0x509e91['id'],'name':_0x509e91[_0x8a47('0x6b')]>0x7?_0x509e91[_0x8a47('0x6c')]:_0x509e91[_0x8a47('0x4f')],'custom':_0x509e91['position']>0x7?!![]:![],'options':_0x509e91[_0x8a47('0x6d')]?_0x509e91[_0x8a47('0x6d')]:_0x509e91[_0x8a47('0x6e')]?_0x509e91[_0x8a47('0x6e')]:[]};})};}})[_0x8a47('0x26')](respondWithResult(_0x131176,null))[_0x8a47('0x40')](function(_0x18def4){var _0x2a2379=_0x435039[_0x8a47('0x2f')][_0x8a47('0x6f')]?0x1f4:_0x18def4[_0x8a47('0x70')]||0x1f4;logger[_0x8a47('0x71')]('getFields,\x20%s,\x20%s,\x20%s',_0x8a47('0x72'),_0x2a2379,JSON[_0x8a47('0x73')](_0x18def4));delete _0x18def4[_0x8a47('0x29')];if(_0x2a2379===0x191){_0x2a2379=0x190;}_0x131176[_0x8a47('0x1a')](_0x2a2379)[_0x8a47('0x74')](_0x435039[_0x8a47('0x2f')][_0x8a47('0x6f')]?{'message':_0x8a47('0x75'),'statusCode':_0x18def4[_0x8a47('0x70')]}:_0x18def4);});};
\ No newline at end of file
index fbd479f..b03186c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d84=['rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','define','ZendeskAccount','lodash','util','bluebird','request-promise','path'];(function(_0x4acf9a,_0x517ad1){var _0xd1bfd9=function(_0x40d56e){while(--_0x40d56e){_0x4acf9a['push'](_0x4acf9a['shift']());}};_0xd1bfd9(++_0x517ad1);}(_0x0d84,0x1ea));var _0x40d8=function(_0x34df9a,_0x14e0db){_0x34df9a=_0x34df9a-0x0;var _0x33b4e7=_0x0d84[_0x34df9a];return _0x33b4e7;};'use strict';var _=require(_0x40d8('0x0'));var util=require(_0x40d8('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x40d8('0x2'));var rp=require(_0x40d8('0x3'));var fs=require('fs');var path=require(_0x40d8('0x4'));var rimraf=require(_0x40d8('0x5'));var config=require(_0x40d8('0x6'));var attributes=require(_0x40d8('0x7'));var integrations=require(_0x40d8('0x8'));module['exports']=function(_0x2180d4,_0xd92361){return _0x2180d4[_0x40d8('0x9')](_0x40d8('0xa'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2096=['lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','define','ZendeskAccount','int_zendesk_accounts'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x2096,0x144));var _0x6209=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x2096[_0x1deb03];return _0x189fe7;};'use strict';var _=require(_0x6209('0x0'));var util=require(_0x6209('0x1'));var logger=require(_0x6209('0x2'))(_0x6209('0x3'));var moment=require(_0x6209('0x4'));var BPromise=require('bluebird');var rp=require(_0x6209('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6209('0x6'));var attributes=require(_0x6209('0x7'));var integrations=require(_0x6209('0x8'));module['exports']=function(_0x140258,_0x5bcf33){return _0x140258[_0x6209('0x9')](_0x6209('0xa'),attributes,{'tableName':_0x6209('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 193172f..85eb1e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ad=['attributes','limit','include','map','model','then','ShowZendeskAccount','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','http','request','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0x71ad,0xee));var _0xd71a=function(_0x1a926b,_0x155165){_0x1a926b=_0x1a926b-0x0;var _0x3a12e5=_0x71ad[_0x1a926b];return _0x3a12e5;};'use strict';var _=require(_0xd71a('0x0'));var util=require(_0xd71a('0x1'));var moment=require('moment');var BPromise=require(_0xd71a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd71a('0x3'));var db=require(_0xd71a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd71a('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd71a('0x6'));var client=jayson['client'][_0xd71a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x371653,_0x1f603d,_0x9a3955){return new BPromise(function(_0x953723,_0x1591a7){return client[_0xd71a('0x8')](_0x371653,_0x9a3955)['then'](function(_0x26102d){logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x1f603d,_0xd71a('0x9'));logger[_0xd71a('0xa')](_0xd71a('0xb'),_0x1f603d,_0xd71a('0x9'),JSON[_0xd71a('0xc')](_0x26102d));if(_0x26102d[_0xd71a('0xd')]){if(_0x26102d[_0xd71a('0xd')][_0xd71a('0xe')]===0x1f4){logger[_0xd71a('0xd')](_0xd71a('0xf'),_0x1f603d,_0x26102d['error'][_0xd71a('0x10')]);return _0x1591a7(_0x26102d[_0xd71a('0xd')][_0xd71a('0x10')]);}logger[_0xd71a('0xd')](_0xd71a('0xf'),_0x1f603d,_0x26102d[_0xd71a('0xd')][_0xd71a('0x10')]);return _0x953723(_0x26102d[_0xd71a('0xd')][_0xd71a('0x10')]);}else{logger[_0xd71a('0x11')](_0xd71a('0xf'),_0x1f603d,_0xd71a('0x9'));_0x953723(_0x26102d[_0xd71a('0x12')][_0xd71a('0x10')]);}})[_0xd71a('0x13')](function(_0x53904e){logger[_0xd71a('0xd')](_0xd71a('0xf'),_0x1f603d,_0x53904e);_0x1591a7(_0x53904e);});});}exports[_0xd71a('0x14')]=function(_0x5389fd){var _0x50cceb=this;return new Promise(function(_0x4e3832,_0x1188b6){return db[_0xd71a('0x15')][_0xd71a('0x16')]({'raw':_0x5389fd[_0xd71a('0x17')]?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x18')]===undefined?!![]:![]:!![],'where':_0x5389fd['options']?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x19')]||null:null,'attributes':_0x5389fd['options']?_0x5389fd['options'][_0xd71a('0x1a')]||null:null,'limit':_0x5389fd[_0xd71a('0x17')]?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x1b')]||null:null,'include':_0x5389fd['options']?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x1c')]?_[_0xd71a('0x1d')](_0x5389fd[_0xd71a('0x17')][_0xd71a('0x1c')],function(_0xd5c0a0){return{'model':db[_0xd5c0a0[_0xd71a('0x1e')]],'as':_0xd5c0a0['as'],'attributes':_0xd5c0a0[_0xd71a('0x1a')],'include':_0xd5c0a0[_0xd71a('0x1c')]?_['map'](_0xd5c0a0[_0xd71a('0x1c')],function(_0x525ce9){return{'model':db[_0x525ce9[_0xd71a('0x1e')]],'as':_0x525ce9['as'],'attributes':_0x525ce9['attributes'],'include':_0x525ce9['include']?_[_0xd71a('0x1d')](_0x525ce9['include'],function(_0xef8f8c){return{'model':db[_0xef8f8c[_0xd71a('0x1e')]],'as':_0xef8f8c['as'],'attributes':_0xef8f8c[_0xd71a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd71a('0x1f')](function(_0x174209){logger[_0xd71a('0x11')]('GetZendeskAccount',_0x5389fd);logger[_0xd71a('0xa')](_0xd71a('0x14'),_0x5389fd,JSON[_0xd71a('0xc')](_0x174209));_0x4e3832(_0x174209);})[_0xd71a('0x13')](function(_0x953740){logger[_0xd71a('0xd')](_0xd71a('0x14'),_0x953740['message'],_0x5389fd);_0x1188b6(_0x50cceb[_0xd71a('0xd')](0x1f4,_0x953740['message']));});});};exports[_0xd71a('0x20')]=function(_0x4c5054){var _0x93a1fe=this;return new Promise(function(_0x191c4b,_0x5f55c5){return db[_0xd71a('0x15')]['find']({'raw':_0x4c5054[_0xd71a('0x17')]?_0x4c5054['options']['raw']===undefined?!![]:![]:!![],'where':_0x4c5054[_0xd71a('0x17')]?_0x4c5054['options'][_0xd71a('0x19')]||null:null,'attributes':_0x4c5054[_0xd71a('0x17')]?_0x4c5054[_0xd71a('0x17')]['attributes']||null:null,'include':_0x4c5054['options']?_0x4c5054[_0xd71a('0x17')][_0xd71a('0x1c')]?_['map'](_0x4c5054[_0xd71a('0x17')][_0xd71a('0x1c')],function(_0x17b5e1){return{'model':db[_0x17b5e1[_0xd71a('0x1e')]],'as':_0x17b5e1['as'],'attributes':_0x17b5e1[_0xd71a('0x1a')],'include':_0x17b5e1[_0xd71a('0x1c')]?_[_0xd71a('0x1d')](_0x17b5e1[_0xd71a('0x1c')],function(_0x40a921){return{'model':db[_0x40a921[_0xd71a('0x1e')]],'as':_0x40a921['as'],'attributes':_0x40a921[_0xd71a('0x1a')],'include':_0x40a921[_0xd71a('0x1c')]?_[_0xd71a('0x1d')](_0x40a921[_0xd71a('0x1c')],function(_0x5b0215){return{'model':db[_0x5b0215[_0xd71a('0x1e')]],'as':_0x5b0215['as'],'attributes':_0x5b0215['attributes']};}):[]};}):[]};}):[]:[]})[_0xd71a('0x1f')](function(_0x2fd90b){logger['info'](_0xd71a('0x20'),_0x4c5054);logger[_0xd71a('0xa')](_0xd71a('0x20'),_0x4c5054,JSON['stringify'](_0x2fd90b));_0x191c4b(_0x2fd90b);})[_0xd71a('0x13')](function(_0x3b5dee){logger['error']('ShowZendeskAccount',_0x3b5dee[_0xd71a('0x10')],_0x4c5054);_0x5f55c5(_0x93a1fe[_0xd71a('0xd')](0x1f4,_0x3b5dee[_0xd71a('0x10')]));});});};
\ No newline at end of file
+var _0x41d9=['map','model','ShowZendeskAccount','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZendeskAccount,\x20%s,\x20%s','info','result','catch','GetZendeskAccount','ZendeskAccount','options','raw','where','attributes','include'];(function(_0x1f9288,_0x96f5ad){var _0x25a400=function(_0x3b3ae4){while(--_0x3b3ae4){_0x1f9288['push'](_0x1f9288['shift']());}};_0x25a400(++_0x96f5ad);}(_0x41d9,0xf2));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x941d('0x0'));var util=require(_0x941d('0x1'));var moment=require(_0x941d('0x2'));var BPromise=require('bluebird');var rs=require(_0x941d('0x3'));var fs=require('fs');var Redis=require(_0x941d('0x4'));var db=require(_0x941d('0x5'))['db'];var utils=require(_0x941d('0x6'));var logger=require(_0x941d('0x7'))('rpc');var config=require(_0x941d('0x8'));var jayson=require(_0x941d('0x9'));var client=jayson[_0x941d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1ba1b3,_0x32c72f,_0x164468){return new BPromise(function(_0x43f866,_0xa09aa){return client['request'](_0x1ba1b3,_0x164468)[_0x941d('0xb')](function(_0x3972a3){logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x32c72f,_0x941d('0xc'));logger[_0x941d('0xd')](_0x941d('0xe'),_0x32c72f,_0x941d('0xc'),JSON[_0x941d('0xf')](_0x3972a3));if(_0x3972a3[_0x941d('0x10')]){if(_0x3972a3['error'][_0x941d('0x11')]===0x1f4){logger[_0x941d('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x32c72f,_0x3972a3[_0x941d('0x10')][_0x941d('0x12')]);return _0xa09aa(_0x3972a3[_0x941d('0x10')][_0x941d('0x12')]);}logger[_0x941d('0x10')](_0x941d('0x13'),_0x32c72f,_0x3972a3[_0x941d('0x10')][_0x941d('0x12')]);return _0x43f866(_0x3972a3['error'][_0x941d('0x12')]);}else{logger[_0x941d('0x14')](_0x941d('0x13'),_0x32c72f,_0x941d('0xc'));_0x43f866(_0x3972a3[_0x941d('0x15')][_0x941d('0x12')]);}})[_0x941d('0x16')](function(_0x181721){logger[_0x941d('0x10')](_0x941d('0x13'),_0x32c72f,_0x181721);_0xa09aa(_0x181721);});});}exports[_0x941d('0x17')]=function(_0x1da839){var _0x42b84e=this;return new Promise(function(_0x1cf3f1,_0x48cd07){return db[_0x941d('0x18')]['findAll']({'raw':_0x1da839[_0x941d('0x19')]?_0x1da839[_0x941d('0x19')][_0x941d('0x1a')]===undefined?!![]:![]:!![],'where':_0x1da839[_0x941d('0x19')]?_0x1da839[_0x941d('0x19')][_0x941d('0x1b')]||null:null,'attributes':_0x1da839['options']?_0x1da839[_0x941d('0x19')][_0x941d('0x1c')]||null:null,'limit':_0x1da839['options']?_0x1da839[_0x941d('0x19')]['limit']||null:null,'include':_0x1da839[_0x941d('0x19')]?_0x1da839[_0x941d('0x19')][_0x941d('0x1d')]?_[_0x941d('0x1e')](_0x1da839[_0x941d('0x19')][_0x941d('0x1d')],function(_0x5dee89){return{'model':db[_0x5dee89[_0x941d('0x1f')]],'as':_0x5dee89['as'],'attributes':_0x5dee89[_0x941d('0x1c')],'include':_0x5dee89[_0x941d('0x1d')]?_['map'](_0x5dee89['include'],function(_0x3459f0){return{'model':db[_0x3459f0[_0x941d('0x1f')]],'as':_0x3459f0['as'],'attributes':_0x3459f0[_0x941d('0x1c')],'include':_0x3459f0[_0x941d('0x1d')]?_[_0x941d('0x1e')](_0x3459f0[_0x941d('0x1d')],function(_0x76ec04){return{'model':db[_0x76ec04[_0x941d('0x1f')]],'as':_0x76ec04['as'],'attributes':_0x76ec04[_0x941d('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x941d('0xb')](function(_0x271b66){logger[_0x941d('0x14')](_0x941d('0x17'),_0x1da839);logger[_0x941d('0xd')](_0x941d('0x17'),_0x1da839,JSON[_0x941d('0xf')](_0x271b66));_0x1cf3f1(_0x271b66);})['catch'](function(_0x589804){logger[_0x941d('0x10')](_0x941d('0x17'),_0x589804[_0x941d('0x12')],_0x1da839);_0x48cd07(_0x42b84e[_0x941d('0x10')](0x1f4,_0x589804[_0x941d('0x12')]));});});};exports[_0x941d('0x20')]=function(_0x2801d6){var _0x1aeb92=this;return new Promise(function(_0x5be0f7,_0x1d1b1d){return db['ZendeskAccount'][_0x941d('0x21')]({'raw':_0x2801d6['options']?_0x2801d6['options'][_0x941d('0x1a')]===undefined?!![]:![]:!![],'where':_0x2801d6['options']?_0x2801d6[_0x941d('0x19')][_0x941d('0x1b')]||null:null,'attributes':_0x2801d6[_0x941d('0x19')]?_0x2801d6[_0x941d('0x19')]['attributes']||null:null,'include':_0x2801d6[_0x941d('0x19')]?_0x2801d6['options'][_0x941d('0x1d')]?_[_0x941d('0x1e')](_0x2801d6[_0x941d('0x19')][_0x941d('0x1d')],function(_0x2cc861){return{'model':db[_0x2cc861[_0x941d('0x1f')]],'as':_0x2cc861['as'],'attributes':_0x2cc861[_0x941d('0x1c')],'include':_0x2cc861[_0x941d('0x1d')]?_[_0x941d('0x1e')](_0x2cc861[_0x941d('0x1d')],function(_0x168cb6){return{'model':db[_0x168cb6[_0x941d('0x1f')]],'as':_0x168cb6['as'],'attributes':_0x168cb6[_0x941d('0x1c')],'include':_0x168cb6['include']?_[_0x941d('0x1e')](_0x168cb6[_0x941d('0x1d')],function(_0x1ee44a){return{'model':db[_0x1ee44a[_0x941d('0x1f')]],'as':_0x1ee44a['as'],'attributes':_0x1ee44a[_0x941d('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x941d('0xb')](function(_0x238a20){logger[_0x941d('0x14')](_0x941d('0x20'),_0x2801d6);logger[_0x941d('0xd')]('ShowZendeskAccount',_0x2801d6,JSON['stringify'](_0x238a20));_0x5be0f7(_0x238a20);})[_0x941d('0x16')](function(_0x271cdc){logger[_0x941d('0x10')](_0x941d('0x20'),_0x271cdc[_0x941d('0x12')],_0x2801d6);_0x1d1b1d(_0x1aeb92[_0x941d('0x10')](0x1f4,_0x271cdc[_0x941d('0x12')]));});});};
\ No newline at end of file
index 2139469..a75651a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['util','path','connect-timeout','Router','../../components/auth/service','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','create','put','update','destroy','exports'];(function(_0x737266,_0x4703df){var _0x337420=function(_0x1c739d){while(--_0x1c739d){_0x737266['push'](_0x737266['shift']());}};_0x337420(++_0x4703df);}(_0x91a7,0xe7));var _0x791a=function(_0x23bcd4,_0xd3deb0){_0x23bcd4=_0x23bcd4-0x0;var _0x4cb792=_0x91a7[_0x23bcd4];return _0x4cb792;};'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['show']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0x6')]('/:id/subjects',auth[_0x791a('0x9')](),controller[_0x791a('0xc')]);router['get'](_0x791a('0xd'),auth[_0x791a('0x9')](),controller[_0x791a('0xe')]);router[_0x791a('0x6')](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['getTags']);router['post']('/',auth[_0x791a('0x9')](),controller[_0x791a('0x10')]);router['post'](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['setTags']);router[_0x791a('0x11')](_0x791a('0x8'),auth[_0x791a('0x9')](),controller[_0x791a('0x12')]);router['delete'](_0x791a('0x8'),auth['isAuthenticated'](),controller[_0x791a('0x13')]);module[_0x791a('0x14')]=router;
\ No newline at end of file
+var _0x750a=['getTags','post','setTags','put','update','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','getSubjects','/:id/tags'];(function(_0x27f6e9,_0x122d0d){var _0x3e6914=function(_0xfdba77){while(--_0xfdba77){_0x27f6e9['push'](_0x27f6e9['shift']());}};_0x3e6914(++_0x122d0d);}(_0x750a,0x140));var _0xa750=function(_0x4082b3,_0x3c0799){_0x4082b3=_0x4082b3-0x0;var _0x21de29=_0x750a[_0x4082b3];return _0x21de29;};'use strict';var multer=require('multer');var util=require(_0xa750('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa750('0x1'));var router=express[_0xa750('0x2')]();var fs_extra=require(_0xa750('0x3'));var auth=require(_0xa750('0x4'));var interaction=require(_0xa750('0x5'));var config=require(_0xa750('0x6'));var controller=require(_0xa750('0x7'));router[_0xa750('0x8')]('/',auth[_0xa750('0x9')](),controller[_0xa750('0xa')]);router[_0xa750('0x8')](_0xa750('0xb'),auth[_0xa750('0x9')](),controller['show']);router['get'](_0xa750('0xc'),auth['isAuthenticated'](),controller[_0xa750('0xd')]);router[_0xa750('0x8')]('/:id/subjects',auth[_0xa750('0x9')](),controller[_0xa750('0xe')]);router['get']('/:id/descriptions',auth[_0xa750('0x9')](),controller['getDescriptions']);router[_0xa750('0x8')](_0xa750('0xf'),auth['isAuthenticated'](),controller[_0xa750('0x10')]);router[_0xa750('0x11')]('/',auth[_0xa750('0x9')](),controller['create']);router[_0xa750('0x11')](_0xa750('0xf'),auth[_0xa750('0x9')](),controller[_0xa750('0x12')]);router[_0xa750('0x13')](_0xa750('0xb'),auth['isAuthenticated'](),controller[_0xa750('0x14')]);router[_0xa750('0x15')](_0xa750('0xb'),auth['isAuthenticated'](),controller[_0xa750('0x16')]);module[_0xa750('0x17')]=router;
\ No newline at end of file
index 2b6daa2..45bf522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d36=['STRING','sequelize'];(function(_0x49bdbc,_0xf6921d){var _0x353f74=function(_0x2d165d){while(--_0x2d165d){_0x49bdbc['push'](_0x49bdbc['shift']());}};_0x353f74(++_0xf6921d);}(_0x3d36,0x11f));var _0x63d3=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0x3d36[_0x30bd4d];return _0x306915;};'use strict';var Sequelize=require(_0x63d3('0x0'));module['exports']={'name':{'type':Sequelize[_0x63d3('0x1')]},'description':{'type':Sequelize[_0x63d3('0x1')]}};
\ No newline at end of file
+var _0xb8bb=['exports','STRING','sequelize'];(function(_0x597a73,_0x2bc496){var _0x233ea6=function(_0x5e8384){while(--_0x5e8384){_0x597a73['push'](_0x597a73['shift']());}};_0x233ea6(++_0x2bc496);}(_0xb8bb,0xec));var _0xbb8b=function(_0x55a0e6,_0x391e9d){_0x55a0e6=_0x55a0e6-0x0;var _0x36e35b=_0xb8bb[_0x55a0e6];return _0x36e35b;};'use strict';var Sequelize=require(_0xbb8b('0x0'));module[_0xbb8b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbb8b('0x2')]}};
\ No newline at end of file
index d84a6aa..cae7ed4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x020a=['include','rows','show','params','find','catch','create','body','getFields','findOne','ZendeskField','nolimit','getSubjects','getTags','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/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','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','ZendeskConfiguration','includeAll'];(function(_0x371a1d,_0x3591f3){var _0x4ba340=function(_0x57cfbc){while(--_0x57cfbc){_0x371a1d['push'](_0x371a1d['shift']());}};_0x4ba340(++_0x3591f3);}(_0x020a,0xb8));var _0xa020=function(_0xe7d07d,_0x52e4e3){_0xe7d07d=_0xe7d07d-0x0;var _0x229e46=_0x020a[_0xe7d07d];return _0x229e46;};'use strict';var emlformat=require(_0xa020('0x0'));var rimraf=require(_0xa020('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa020('0x2'));var rp=require(_0xa020('0x3'));var moment=require(_0xa020('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa020('0x5'));var util=require('util');var path=require('path');var sox=require(_0xa020('0x6'));var csv=require(_0xa020('0x7'));var ejs=require(_0xa020('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa020('0x9'));var squel=require(_0xa020('0xa'));var crypto=require(_0xa020('0xb'));var jsforce=require(_0xa020('0xc'));var deskjs=require(_0xa020('0xd'));var toCsv=require(_0xa020('0x7'));var querystring=require(_0xa020('0xe'));var Papa=require('papaparse');var Redis=require(_0xa020('0xf'));var authService=require(_0xa020('0x10'));var qs=require(_0xa020('0x11'));var as=require(_0xa020('0x12'));var hardwareService=require(_0xa020('0x13'));var logger=require(_0xa020('0x14'))(_0xa020('0x15'));var utils=require('../../config/utils');var config=require(_0xa020('0x16'));var licenseUtil=require(_0xa020('0x17'));var db=require(_0xa020('0x18'))['db'];function respondWithStatusCode(_0x45c3ee,_0x1a2003){_0x1a2003=_0x1a2003||0xcc;return function(_0x45e357){if(_0x45e357){return _0x45c3ee[_0xa020('0x19')](_0x1a2003);}return _0x45c3ee[_0xa020('0x1a')](_0x1a2003)[_0xa020('0x1b')]();};}function respondWithResult(_0x926b35,_0x290d47){_0x290d47=_0x290d47||0xc8;return function(_0x20d239){if(_0x20d239){return _0x926b35['status'](_0x290d47)[_0xa020('0x1c')](_0x20d239);}};}function respondWithFilteredResult(_0x507fe4,_0x34950b){return function(_0xa9379b){if(_0xa9379b){var _0x29a61f=typeof _0x34950b[_0xa020('0x1d')]===_0xa020('0x1e')&&typeof _0x34950b['limit']===_0xa020('0x1e');var _0x532c6a=_0xa9379b['count'];var _0x324023=_0x29a61f?0x0:_0x34950b['offset'];var _0x3ad328=_0x29a61f?_0xa9379b[_0xa020('0x1f')]:_0x34950b[_0xa020('0x1d')]+_0x34950b[_0xa020('0x20')];var _0xa2387b;if(_0x3ad328>=_0x532c6a){_0x3ad328=_0x532c6a;_0xa2387b=0xc8;}else{_0xa2387b=0xce;}_0x507fe4[_0xa020('0x1a')](_0xa2387b);return _0x507fe4[_0xa020('0x21')](_0xa020('0x22'),_0x324023+'-'+_0x3ad328+'/'+_0x532c6a)[_0xa020('0x1c')](_0xa9379b);}return null;};}function patchUpdates(_0x56688b){return function(_0x3bc198){try{jsonpatch['apply'](_0x3bc198,_0x56688b,!![]);}catch(_0x5247f4){return BPromise[_0xa020('0x23')](_0x5247f4);}return _0x3bc198[_0xa020('0x24')]();};}function saveUpdates(_0x5ecc12,_0x51bbac){return function(_0x505490){if(_0x505490){return _0x505490[_0xa020('0x25')](_0x5ecc12)[_0xa020('0x26')](function(_0x5e8944){return _0x5e8944;});}return null;};}function removeEntity(_0x37be39,_0x110769){return function(_0x704297){if(_0x704297){return _0x704297[_0xa020('0x27')]()[_0xa020('0x26')](function(){_0x37be39[_0xa020('0x1a')](0xcc)[_0xa020('0x1b')]();});}};}function handleEntityNotFound(_0x3b85ea,_0x3ece45){return function(_0x4a2ece){if(!_0x4a2ece){_0x3b85ea['sendStatus'](0x194);}return _0x4a2ece;};}function handleError(_0x301a47,_0x21211c){_0x21211c=_0x21211c||0x1f4;return function(_0x277e0f){logger[_0xa020('0x28')](_0x277e0f[_0xa020('0x29')]);if(_0x277e0f[_0xa020('0x2a')]){delete _0x277e0f[_0xa020('0x2a')];}_0x301a47['status'](_0x21211c)[_0xa020('0x2b')](_0x277e0f);};}exports[_0xa020('0x2c')]=function(_0x4d5735,_0x48f919){var _0x5e8dcf={},_0x4750c0={},_0x1c44cd={'count':0x0,'rows':[]};var _0x336aa9=_[_0xa020('0x2d')](db['ZendeskConfiguration'][_0xa020('0x2e')],function(_0x44a18b){return{'name':_0x44a18b[_0xa020('0x2f')],'type':_0x44a18b[_0xa020('0x30')][_0xa020('0x31')]};});_0x4750c0[_0xa020('0x32')]=_[_0xa020('0x2d')](_0x336aa9,'name');_0x4750c0[_0xa020('0x33')]=_[_0xa020('0x34')](_0x4d5735['query']);_0x4750c0['filters']=_[_0xa020('0x35')](_0x4750c0[_0xa020('0x32')],_0x4750c0[_0xa020('0x33')]);_0x5e8dcf[_0xa020('0x36')]=_['intersection'](_0x4750c0['model'],qs['fields'](_0x4d5735[_0xa020('0x33')][_0xa020('0x37')]));_0x5e8dcf[_0xa020('0x36')]=_0x5e8dcf[_0xa020('0x36')][_0xa020('0x38')]?_0x5e8dcf[_0xa020('0x36')]:_0x4750c0['model'];if(!_0x4d5735['query'][_0xa020('0x39')]('nolimit')){_0x5e8dcf[_0xa020('0x20')]=qs[_0xa020('0x20')](_0x4d5735[_0xa020('0x33')][_0xa020('0x20')]);_0x5e8dcf['offset']=qs[_0xa020('0x1d')](_0x4d5735['query']['offset']);}_0x5e8dcf[_0xa020('0x3a')]=qs[_0xa020('0x3b')](_0x4d5735[_0xa020('0x33')]['sort']);_0x5e8dcf[_0xa020('0x3c')]=qs[_0xa020('0x3d')](_[_0xa020('0x3e')](_0x4d5735['query'],_0x4750c0[_0xa020('0x3d')]),_0x336aa9);if(_0x4d5735[_0xa020('0x33')][_0xa020('0x3f')]){_0x5e8dcf[_0xa020('0x3c')]=_[_0xa020('0x40')](_0x5e8dcf['where'],{'$or':_[_0xa020('0x2d')](_0x336aa9,function(_0x33705b){if(_0x33705b[_0xa020('0x30')]!=='VIRTUAL'){var _0x1a6db4={};_0x1a6db4[_0x33705b[_0xa020('0x2a')]]={'$like':'%'+_0x4d5735['query'][_0xa020('0x3f')]+'%'};return _0x1a6db4;}})});}_0x5e8dcf=_['merge']({},_0x5e8dcf,_0x4d5735[_0xa020('0x41')]);var _0x21bdc3={'where':_0x5e8dcf['where']};return db[_0xa020('0x42')][_0xa020('0x1f')](_0x21bdc3)[_0xa020('0x26')](function(_0xb75a8c){_0x1c44cd['count']=_0xb75a8c;if(_0x4d5735[_0xa020('0x33')][_0xa020('0x43')]){_0x5e8dcf[_0xa020('0x44')]=[{'all':!![]}];}return db[_0xa020('0x42')]['findAll'](_0x5e8dcf);})[_0xa020('0x26')](function(_0x164e49){_0x1c44cd[_0xa020('0x45')]=_0x164e49;return _0x1c44cd;})[_0xa020('0x26')](respondWithFilteredResult(_0x48f919,_0x5e8dcf))['catch'](handleError(_0x48f919,null));};exports[_0xa020('0x46')]=function(_0x53757b,_0x42a61b){var _0x3b9fb7={'raw':![],'where':{'id':_0x53757b[_0xa020('0x47')]['id']}},_0x5ba8ce={};_0x5ba8ce['model']=_[_0xa020('0x34')](db['ZendeskConfiguration'][_0xa020('0x2e')]);_0x5ba8ce['query']=_['keys'](_0x53757b[_0xa020('0x33')]);_0x5ba8ce[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x5ba8ce['model'],_0x5ba8ce['query']);_0x3b9fb7['attributes']=_[_0xa020('0x35')](_0x5ba8ce[_0xa020('0x32')],qs[_0xa020('0x37')](_0x53757b[_0xa020('0x33')][_0xa020('0x37')]));_0x3b9fb7[_0xa020('0x36')]=_0x3b9fb7[_0xa020('0x36')][_0xa020('0x38')]?_0x3b9fb7[_0xa020('0x36')]:_0x5ba8ce['model'];if(_0x53757b[_0xa020('0x33')][_0xa020('0x43')]){_0x3b9fb7[_0xa020('0x44')]=[{'all':!![]}];}_0x3b9fb7=_[_0xa020('0x40')]({},_0x3b9fb7,_0x53757b[_0xa020('0x41')]);return db[_0xa020('0x42')][_0xa020('0x48')](_0x3b9fb7)['then'](handleEntityNotFound(_0x42a61b,null))[_0xa020('0x26')](respondWithResult(_0x42a61b,null))[_0xa020('0x49')](handleError(_0x42a61b,null));};exports['create']=function(_0x5003a4,_0x534122){return db[_0xa020('0x42')][_0xa020('0x4a')](_0x5003a4[_0xa020('0x4b')],{})['then'](respondWithResult(_0x534122,0xc9))['catch'](handleError(_0x534122,null));};exports['update']=function(_0x29d053,_0x5c674a){if(_0x29d053[_0xa020('0x4b')]['id']){delete _0x29d053[_0xa020('0x4b')]['id'];}return db[_0xa020('0x42')][_0xa020('0x48')]({'where':{'id':_0x29d053[_0xa020('0x47')]['id']}})['then'](handleEntityNotFound(_0x5c674a,null))[_0xa020('0x26')](saveUpdates(_0x29d053[_0xa020('0x4b')],null))[_0xa020('0x26')](respondWithResult(_0x5c674a,null))[_0xa020('0x49')](handleError(_0x5c674a,null));};exports[_0xa020('0x27')]=function(_0x1af5ea,_0x414f57){return db[_0xa020('0x42')][_0xa020('0x48')]({'where':{'id':_0x1af5ea[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x414f57,null))[_0xa020('0x26')](removeEntity(_0x414f57,null))[_0xa020('0x49')](handleError(_0x414f57,null));};exports[_0xa020('0x4c')]=function(_0x37766b,_0x1bf67a,_0x4e1c5c){var _0xc2af8={};var _0x3f6c66={};var _0x5316be;var _0x50f963;return db[_0xa020('0x42')][_0xa020('0x4d')]({'where':{'id':_0x37766b[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x1bf67a,null))[_0xa020('0x26')](function(_0x177287){if(_0x177287){_0x5316be=_0x177287;_0x3f6c66[_0xa020('0x32')]=_[_0xa020('0x34')](db[_0xa020('0x4e')][_0xa020('0x2e')]);_0x3f6c66[_0xa020('0x33')]=_[_0xa020('0x34')](_0x37766b[_0xa020('0x33')]);_0x3f6c66[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x3f6c66[_0xa020('0x32')],_0x3f6c66[_0xa020('0x33')]);_0xc2af8['attributes']=_[_0xa020('0x35')](_0x3f6c66[_0xa020('0x32')],qs[_0xa020('0x37')](_0x37766b[_0xa020('0x33')][_0xa020('0x37')]));_0xc2af8['attributes']=_0xc2af8[_0xa020('0x36')][_0xa020('0x38')]?_0xc2af8[_0xa020('0x36')]:_0x3f6c66[_0xa020('0x32')];_0xc2af8[_0xa020('0x3a')]=qs['sort'](_0x37766b[_0xa020('0x33')][_0xa020('0x3b')]);_0xc2af8['where']=qs[_0xa020('0x3d')](_[_0xa020('0x3e')](_0x37766b[_0xa020('0x33')],_0x3f6c66[_0xa020('0x3d')]));if(_0x37766b[_0xa020('0x33')][_0xa020('0x3f')]){_0xc2af8[_0xa020('0x3c')]=_['merge'](_0xc2af8['where'],{'$or':_[_0xa020('0x2d')](_0xc2af8[_0xa020('0x36')],function(_0x23a49e){var _0x5c9651={};_0x5c9651[_0x23a49e]={'$like':'%'+_0x37766b[_0xa020('0x33')][_0xa020('0x3f')]+'%'};return _0x5c9651;})});}_0xc2af8=_[_0xa020('0x40')]({},_0xc2af8,_0x37766b['options']);return _0x5316be[_0xa020('0x4c')](_0xc2af8);}})[_0xa020('0x26')](function(_0x3062b3){if(_0x3062b3){_0x50f963=_0x3062b3[_0xa020('0x38')];if(!_0x37766b[_0xa020('0x33')][_0xa020('0x39')](_0xa020('0x4f'))){_0xc2af8[_0xa020('0x20')]=qs['limit'](_0x37766b[_0xa020('0x33')][_0xa020('0x20')]);_0xc2af8[_0xa020('0x1d')]=qs[_0xa020('0x1d')](_0x37766b[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x5316be[_0xa020('0x4c')](_0xc2af8);}})[_0xa020('0x26')](function(_0x59d76d){if(_0x59d76d){return _0x59d76d?{'count':_0x50f963,'rows':_0x59d76d}:null;}})['then'](respondWithResult(_0x1bf67a,null))['catch'](handleError(_0x1bf67a,null));};exports[_0xa020('0x50')]=function(_0x2c7fd5,_0x678cd7,_0x4e8fdc){var _0xd10f35={};var _0x5d4daa={};var _0x337f07;var _0x9eb07a;return db[_0xa020('0x42')][_0xa020('0x4d')]({'where':{'id':_0x2c7fd5[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x678cd7,null))['then'](function(_0x589506){if(_0x589506){_0x337f07=_0x589506;_0x5d4daa[_0xa020('0x32')]=_['keys'](db['ZendeskField'][_0xa020('0x2e')]);_0x5d4daa[_0xa020('0x33')]=_[_0xa020('0x34')](_0x2c7fd5[_0xa020('0x33')]);_0x5d4daa[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x5d4daa[_0xa020('0x32')],_0x5d4daa['query']);_0xd10f35[_0xa020('0x36')]=_[_0xa020('0x35')](_0x5d4daa[_0xa020('0x32')],qs['fields'](_0x2c7fd5[_0xa020('0x33')][_0xa020('0x37')]));_0xd10f35['attributes']=_0xd10f35[_0xa020('0x36')]['length']?_0xd10f35['attributes']:_0x5d4daa[_0xa020('0x32')];_0xd10f35['order']=qs[_0xa020('0x3b')](_0x2c7fd5['query']['sort']);_0xd10f35[_0xa020('0x3c')]=qs['filters'](_['pick'](_0x2c7fd5[_0xa020('0x33')],_0x5d4daa[_0xa020('0x3d')]));if(_0x2c7fd5[_0xa020('0x33')][_0xa020('0x3f')]){_0xd10f35[_0xa020('0x3c')]=_['merge'](_0xd10f35['where'],{'$or':_['map'](_0xd10f35[_0xa020('0x36')],function(_0xeed603){var _0x296fa2={};_0x296fa2[_0xeed603]={'$like':'%'+_0x2c7fd5[_0xa020('0x33')]['filter']+'%'};return _0x296fa2;})});}_0xd10f35=_[_0xa020('0x40')]({},_0xd10f35,_0x2c7fd5[_0xa020('0x41')]);return _0x337f07[_0xa020('0x50')](_0xd10f35);}})[_0xa020('0x26')](function(_0x250467){if(_0x250467){_0x9eb07a=_0x250467[_0xa020('0x38')];if(!_0x2c7fd5['query'][_0xa020('0x39')](_0xa020('0x4f'))){_0xd10f35[_0xa020('0x20')]=qs[_0xa020('0x20')](_0x2c7fd5[_0xa020('0x33')][_0xa020('0x20')]);_0xd10f35[_0xa020('0x1d')]=qs[_0xa020('0x1d')](_0x2c7fd5[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x337f07['getSubjects'](_0xd10f35);}})[_0xa020('0x26')](function(_0x40a619){if(_0x40a619){return _0x40a619?{'count':_0x9eb07a,'rows':_0x40a619}:null;}})[_0xa020('0x26')](respondWithResult(_0x678cd7,null))['catch'](handleError(_0x678cd7,null));};exports['getDescriptions']=function(_0x47a695,_0x4bffe1,_0x3a180b){var _0x517708={};var _0x3ebf9d={};var _0x24d43f;var _0x36c1cd;return db['ZendeskConfiguration'][_0xa020('0x4d')]({'where':{'id':_0x47a695[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x4bffe1,null))['then'](function(_0x3a1214){if(_0x3a1214){_0x24d43f=_0x3a1214;_0x3ebf9d[_0xa020('0x32')]=_['keys'](db['ZendeskField'][_0xa020('0x2e')]);_0x3ebf9d[_0xa020('0x33')]=_[_0xa020('0x34')](_0x47a695[_0xa020('0x33')]);_0x3ebf9d[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x3ebf9d[_0xa020('0x32')],_0x3ebf9d[_0xa020('0x33')]);_0x517708[_0xa020('0x36')]=_[_0xa020('0x35')](_0x3ebf9d[_0xa020('0x32')],qs[_0xa020('0x37')](_0x47a695[_0xa020('0x33')][_0xa020('0x37')]));_0x517708['attributes']=_0x517708[_0xa020('0x36')][_0xa020('0x38')]?_0x517708[_0xa020('0x36')]:_0x3ebf9d[_0xa020('0x32')];_0x517708[_0xa020('0x3a')]=qs[_0xa020('0x3b')](_0x47a695[_0xa020('0x33')][_0xa020('0x3b')]);_0x517708[_0xa020('0x3c')]=qs[_0xa020('0x3d')](_['pick'](_0x47a695['query'],_0x3ebf9d[_0xa020('0x3d')]));if(_0x47a695[_0xa020('0x33')][_0xa020('0x3f')]){_0x517708[_0xa020('0x3c')]=_[_0xa020('0x40')](_0x517708[_0xa020('0x3c')],{'$or':_[_0xa020('0x2d')](_0x517708[_0xa020('0x36')],function(_0x1c29f6){var _0x51a67a={};_0x51a67a[_0x1c29f6]={'$like':'%'+_0x47a695[_0xa020('0x33')][_0xa020('0x3f')]+'%'};return _0x51a67a;})});}_0x517708=_[_0xa020('0x40')]({},_0x517708,_0x47a695[_0xa020('0x41')]);return _0x24d43f['getDescriptions'](_0x517708);}})[_0xa020('0x26')](function(_0x37bce8){if(_0x37bce8){_0x36c1cd=_0x37bce8['length'];if(!_0x47a695[_0xa020('0x33')][_0xa020('0x39')](_0xa020('0x4f'))){_0x517708[_0xa020('0x20')]=qs['limit'](_0x47a695[_0xa020('0x33')][_0xa020('0x20')]);_0x517708[_0xa020('0x1d')]=qs['offset'](_0x47a695[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x24d43f['getDescriptions'](_0x517708);}})[_0xa020('0x26')](function(_0x1224fe){if(_0x1224fe){return _0x1224fe?{'count':_0x36c1cd,'rows':_0x1224fe}:null;}})[_0xa020('0x26')](respondWithResult(_0x4bffe1,null))['catch'](handleError(_0x4bffe1,null));};exports['getTags']=function(_0x1da499,_0x28bf0b,_0x745c64){var _0x1e6ccf={};var _0x42c216={};var _0x364a55;var _0x5eb3bd;return db[_0xa020('0x42')][_0xa020('0x4d')]({'where':{'id':_0x1da499[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x28bf0b,null))[_0xa020('0x26')](function(_0x41d0d7){if(_0x41d0d7){_0x364a55=_0x41d0d7;_0x42c216[_0xa020('0x32')]=_[_0xa020('0x34')](db['Tag'][_0xa020('0x2e')]);_0x42c216['query']=_[_0xa020('0x34')](_0x1da499[_0xa020('0x33')]);_0x42c216[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x42c216[_0xa020('0x32')],_0x42c216[_0xa020('0x33')]);_0x1e6ccf[_0xa020('0x36')]=_[_0xa020('0x35')](_0x42c216['model'],qs[_0xa020('0x37')](_0x1da499[_0xa020('0x33')][_0xa020('0x37')]));_0x1e6ccf[_0xa020('0x36')]=_0x1e6ccf[_0xa020('0x36')][_0xa020('0x38')]?_0x1e6ccf[_0xa020('0x36')]:_0x42c216[_0xa020('0x32')];_0x1e6ccf[_0xa020('0x3a')]=qs['sort'](_0x1da499[_0xa020('0x33')][_0xa020('0x3b')]);_0x1e6ccf['where']=qs[_0xa020('0x3d')](_[_0xa020('0x3e')](_0x1da499[_0xa020('0x33')],_0x42c216[_0xa020('0x3d')]));if(_0x1da499[_0xa020('0x33')][_0xa020('0x3f')]){_0x1e6ccf[_0xa020('0x3c')]=_[_0xa020('0x40')](_0x1e6ccf['where'],{'$or':_[_0xa020('0x2d')](_0x1e6ccf[_0xa020('0x36')],function(_0x594231){var _0x41f6ed={};_0x41f6ed[_0x594231]={'$like':'%'+_0x1da499[_0xa020('0x33')][_0xa020('0x3f')]+'%'};return _0x41f6ed;})});}_0x1e6ccf=_[_0xa020('0x40')]({},_0x1e6ccf,_0x1da499['options']);return _0x364a55[_0xa020('0x51')](_0x1e6ccf);}})[_0xa020('0x26')](function(_0x2109ab){if(_0x2109ab){_0x5eb3bd=_0x2109ab[_0xa020('0x38')];if(!_0x1da499[_0xa020('0x33')][_0xa020('0x39')](_0xa020('0x4f'))){_0x1e6ccf['limit']=qs[_0xa020('0x20')](_0x1da499['query'][_0xa020('0x20')]);_0x1e6ccf['offset']=qs[_0xa020('0x1d')](_0x1da499[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x364a55[_0xa020('0x51')](_0x1e6ccf);}})[_0xa020('0x26')](function(_0x226d40){if(_0x226d40){return _0x226d40?{'count':_0x5eb3bd,'rows':_0x226d40}:null;}})[_0xa020('0x26')](respondWithResult(_0x28bf0b,null))[_0xa020('0x49')](handleError(_0x28bf0b,null));};exports[_0xa020('0x52')]=function(_0x5c0660,_0x4c9bca,_0x3064b8){if(_0x5c0660[_0xa020('0x4b')]['id']){delete _0x5c0660[_0xa020('0x4b')]['id'];}return db[_0xa020('0x42')]['findOne']({'where':{'id':_0x5c0660['params']['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x4c9bca,null))[_0xa020('0x26')](function(_0x9aa451){if(_0x9aa451){return _0x9aa451[_0xa020('0x52')](_0x5c0660[_0xa020('0x4b')][_0xa020('0x53')]||[]);}return null;})[_0xa020('0x26')](respondWithResult(_0x4c9bca,null))[_0xa020('0x49')](handleError(_0x4c9bca,null));};
\ No newline at end of file
+var _0xfb5e=['then','include','rows','show','keys','includeAll','find','catch','create','body','update','params','getFields','findOne','ZendeskField','order','hasOwnProperty','getSubjects','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','save','destroy','end','sendStatus','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','filter','merge','options'];(function(_0x635589,_0x54ea94){var _0x14d71e=function(_0x145302){while(--_0x145302){_0x635589['push'](_0x635589['shift']());}};_0x14d71e(++_0x54ea94);}(_0xfb5e,0x1bb));var _0xefb5=function(_0x329421,_0xd2822d){_0x329421=_0x329421-0x0;var _0x499643=_0xfb5e[_0x329421];return _0x499643;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xefb5('0x0'));var zipdir=require(_0xefb5('0x1'));var jsonpatch=require(_0xefb5('0x2'));var rp=require(_0xefb5('0x3'));var moment=require(_0xefb5('0x4'));var BPromise=require(_0xefb5('0x5'));var Mustache=require(_0xefb5('0x6'));var util=require(_0xefb5('0x7'));var path=require(_0xefb5('0x8'));var sox=require('sox');var csv=require(_0xefb5('0x9'));var ejs=require(_0xefb5('0xa'));var fs=require('fs');var fs_extra=require(_0xefb5('0xb'));var _=require(_0xefb5('0xc'));var squel=require(_0xefb5('0xd'));var crypto=require('crypto');var jsforce=require(_0xefb5('0xe'));var deskjs=require(_0xefb5('0xf'));var toCsv=require(_0xefb5('0x9'));var querystring=require(_0xefb5('0x10'));var Papa=require(_0xefb5('0x11'));var Redis=require(_0xefb5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xefb5('0x13'));var as=require(_0xefb5('0x14'));var hardwareService=require(_0xefb5('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xefb5('0x16'));var licenseUtil=require(_0xefb5('0x17'));var db=require(_0xefb5('0x18'))['db'];function respondWithStatusCode(_0x480dc8,_0x564893){_0x564893=_0x564893||0xcc;return function(_0xea5924){if(_0xea5924){return _0x480dc8['sendStatus'](_0x564893);}return _0x480dc8['status'](_0x564893)['end']();};}function respondWithResult(_0x318279,_0x470128){_0x470128=_0x470128||0xc8;return function(_0x3ca32d){if(_0x3ca32d){return _0x318279[_0xefb5('0x19')](_0x470128)[_0xefb5('0x1a')](_0x3ca32d);}};}function respondWithFilteredResult(_0x8d11b3,_0x4e09fc){return function(_0x5306de){if(_0x5306de){var _0x5ae195=typeof _0x4e09fc[_0xefb5('0x1b')]===_0xefb5('0x1c')&&typeof _0x4e09fc[_0xefb5('0x1d')]===_0xefb5('0x1c');var _0x28b80a=_0x5306de[_0xefb5('0x1e')];var _0x10202a=_0x5ae195?0x0:_0x4e09fc[_0xefb5('0x1b')];var _0x4faa44=_0x5ae195?_0x5306de[_0xefb5('0x1e')]:_0x4e09fc[_0xefb5('0x1b')]+_0x4e09fc[_0xefb5('0x1d')];var _0x3f943d;if(_0x4faa44>=_0x28b80a){_0x4faa44=_0x28b80a;_0x3f943d=0xc8;}else{_0x3f943d=0xce;}_0x8d11b3['status'](_0x3f943d);return _0x8d11b3['set'](_0xefb5('0x1f'),_0x10202a+'-'+_0x4faa44+'/'+_0x28b80a)[_0xefb5('0x1a')](_0x5306de);}return null;};}function patchUpdates(_0x1880da){return function(_0x13fe60){try{jsonpatch['apply'](_0x13fe60,_0x1880da,!![]);}catch(_0x3dcbca){return BPromise['reject'](_0x3dcbca);}return _0x13fe60[_0xefb5('0x20')]();};}function saveUpdates(_0x318f26,_0x52b955){return function(_0x5b8627){if(_0x5b8627){return _0x5b8627['update'](_0x318f26)['then'](function(_0x251531){return _0x251531;});}return null;};}function removeEntity(_0x5b0da8,_0x54c4d6){return function(_0x2c6db9){if(_0x2c6db9){return _0x2c6db9[_0xefb5('0x21')]()['then'](function(){_0x5b0da8[_0xefb5('0x19')](0xcc)[_0xefb5('0x22')]();});}};}function handleEntityNotFound(_0x5ccea7,_0x1b15c9){return function(_0x3f94ba){if(!_0x3f94ba){_0x5ccea7[_0xefb5('0x23')](0x194);}return _0x3f94ba;};}function handleError(_0xb52ce3,_0x31d6b6){_0x31d6b6=_0x31d6b6||0x1f4;return function(_0x5dcbf6){logger[_0xefb5('0x24')](_0x5dcbf6[_0xefb5('0x25')]);if(_0x5dcbf6[_0xefb5('0x26')]){delete _0x5dcbf6[_0xefb5('0x26')];}_0xb52ce3[_0xefb5('0x19')](_0x31d6b6)[_0xefb5('0x27')](_0x5dcbf6);};}exports[_0xefb5('0x28')]=function(_0x5c294c,_0x2ff9c7){var _0x4075dc={},_0x293a33={},_0x307d34={'count':0x0,'rows':[]};var _0x231419=_[_0xefb5('0x29')](db[_0xefb5('0x2a')][_0xefb5('0x2b')],function(_0x43d73a){return{'name':_0x43d73a[_0xefb5('0x2c')],'type':_0x43d73a[_0xefb5('0x2d')][_0xefb5('0x2e')]};});_0x293a33['model']=_[_0xefb5('0x29')](_0x231419,_0xefb5('0x26'));_0x293a33[_0xefb5('0x2f')]=_['keys'](_0x5c294c[_0xefb5('0x2f')]);_0x293a33[_0xefb5('0x30')]=_[_0xefb5('0x31')](_0x293a33[_0xefb5('0x32')],_0x293a33[_0xefb5('0x2f')]);_0x4075dc[_0xefb5('0x33')]=_['intersection'](_0x293a33[_0xefb5('0x32')],qs[_0xefb5('0x34')](_0x5c294c['query']['fields']));_0x4075dc[_0xefb5('0x33')]=_0x4075dc[_0xefb5('0x33')][_0xefb5('0x35')]?_0x4075dc[_0xefb5('0x33')]:_0x293a33[_0xefb5('0x32')];if(!_0x5c294c['query']['hasOwnProperty'](_0xefb5('0x36'))){_0x4075dc[_0xefb5('0x1d')]=qs['limit'](_0x5c294c['query'][_0xefb5('0x1d')]);_0x4075dc[_0xefb5('0x1b')]=qs[_0xefb5('0x1b')](_0x5c294c[_0xefb5('0x2f')][_0xefb5('0x1b')]);}_0x4075dc['order']=qs[_0xefb5('0x37')](_0x5c294c[_0xefb5('0x2f')][_0xefb5('0x37')]);_0x4075dc[_0xefb5('0x38')]=qs[_0xefb5('0x30')](_[_0xefb5('0x39')](_0x5c294c['query'],_0x293a33[_0xefb5('0x30')]),_0x231419);if(_0x5c294c[_0xefb5('0x2f')][_0xefb5('0x3a')]){_0x4075dc[_0xefb5('0x38')]=_['merge'](_0x4075dc[_0xefb5('0x38')],{'$or':_[_0xefb5('0x29')](_0x231419,function(_0x7cabd9){if(_0x7cabd9[_0xefb5('0x2d')]!=='VIRTUAL'){var _0x5e2394={};_0x5e2394[_0x7cabd9[_0xefb5('0x26')]]={'$like':'%'+_0x5c294c[_0xefb5('0x2f')][_0xefb5('0x3a')]+'%'};return _0x5e2394;}})});}_0x4075dc=_[_0xefb5('0x3b')]({},_0x4075dc,_0x5c294c[_0xefb5('0x3c')]);var _0x1b11be={'where':_0x4075dc[_0xefb5('0x38')]};return db[_0xefb5('0x2a')][_0xefb5('0x1e')](_0x1b11be)[_0xefb5('0x3d')](function(_0x33dbd1){_0x307d34[_0xefb5('0x1e')]=_0x33dbd1;if(_0x5c294c['query']['includeAll']){_0x4075dc[_0xefb5('0x3e')]=[{'all':!![]}];}return db[_0xefb5('0x2a')]['findAll'](_0x4075dc);})[_0xefb5('0x3d')](function(_0x5a18ce){_0x307d34[_0xefb5('0x3f')]=_0x5a18ce;return _0x307d34;})[_0xefb5('0x3d')](respondWithFilteredResult(_0x2ff9c7,_0x4075dc))['catch'](handleError(_0x2ff9c7,null));};exports[_0xefb5('0x40')]=function(_0x2cb7bc,_0x3fdcd7){var _0x1f5f95={'raw':![],'where':{'id':_0x2cb7bc['params']['id']}},_0x221ae1={};_0x221ae1[_0xefb5('0x32')]=_[_0xefb5('0x41')](db[_0xefb5('0x2a')]['rawAttributes']);_0x221ae1[_0xefb5('0x2f')]=_['keys'](_0x2cb7bc['query']);_0x221ae1['filters']=_['intersection'](_0x221ae1[_0xefb5('0x32')],_0x221ae1['query']);_0x1f5f95[_0xefb5('0x33')]=_[_0xefb5('0x31')](_0x221ae1[_0xefb5('0x32')],qs[_0xefb5('0x34')](_0x2cb7bc[_0xefb5('0x2f')][_0xefb5('0x34')]));_0x1f5f95['attributes']=_0x1f5f95[_0xefb5('0x33')][_0xefb5('0x35')]?_0x1f5f95[_0xefb5('0x33')]:_0x221ae1[_0xefb5('0x32')];if(_0x2cb7bc['query'][_0xefb5('0x42')]){_0x1f5f95[_0xefb5('0x3e')]=[{'all':!![]}];}_0x1f5f95=_[_0xefb5('0x3b')]({},_0x1f5f95,_0x2cb7bc[_0xefb5('0x3c')]);return db[_0xefb5('0x2a')][_0xefb5('0x43')](_0x1f5f95)['then'](handleEntityNotFound(_0x3fdcd7,null))[_0xefb5('0x3d')](respondWithResult(_0x3fdcd7,null))[_0xefb5('0x44')](handleError(_0x3fdcd7,null));};exports[_0xefb5('0x45')]=function(_0x1f743f,_0x496317){return db[_0xefb5('0x2a')][_0xefb5('0x45')](_0x1f743f[_0xefb5('0x46')],{})['then'](respondWithResult(_0x496317,0xc9))[_0xefb5('0x44')](handleError(_0x496317,null));};exports[_0xefb5('0x47')]=function(_0x52303f,_0x3bd43b){if(_0x52303f[_0xefb5('0x46')]['id']){delete _0x52303f[_0xefb5('0x46')]['id'];}return db[_0xefb5('0x2a')]['find']({'where':{'id':_0x52303f[_0xefb5('0x48')]['id']}})[_0xefb5('0x3d')](handleEntityNotFound(_0x3bd43b,null))[_0xefb5('0x3d')](saveUpdates(_0x52303f[_0xefb5('0x46')],null))[_0xefb5('0x3d')](respondWithResult(_0x3bd43b,null))[_0xefb5('0x44')](handleError(_0x3bd43b,null));};exports['destroy']=function(_0x66d9d8,_0x4debeb){return db[_0xefb5('0x2a')][_0xefb5('0x43')]({'where':{'id':_0x66d9d8[_0xefb5('0x48')]['id']}})[_0xefb5('0x3d')](handleEntityNotFound(_0x4debeb,null))[_0xefb5('0x3d')](removeEntity(_0x4debeb,null))['catch'](handleError(_0x4debeb,null));};exports[_0xefb5('0x49')]=function(_0x3137ea,_0x3e5ac3,_0x10b98c){var _0x34e0bd={};var _0x1652b4={};var _0x1e3315;var _0x3c7764;return db[_0xefb5('0x2a')][_0xefb5('0x4a')]({'where':{'id':_0x3137ea[_0xefb5('0x48')]['id']}})[_0xefb5('0x3d')](handleEntityNotFound(_0x3e5ac3,null))[_0xefb5('0x3d')](function(_0x3c9125){if(_0x3c9125){_0x1e3315=_0x3c9125;_0x1652b4[_0xefb5('0x32')]=_[_0xefb5('0x41')](db[_0xefb5('0x4b')][_0xefb5('0x2b')]);_0x1652b4['query']=_['keys'](_0x3137ea[_0xefb5('0x2f')]);_0x1652b4[_0xefb5('0x30')]=_[_0xefb5('0x31')](_0x1652b4[_0xefb5('0x32')],_0x1652b4['query']);_0x34e0bd[_0xefb5('0x33')]=_['intersection'](_0x1652b4[_0xefb5('0x32')],qs[_0xefb5('0x34')](_0x3137ea['query'][_0xefb5('0x34')]));_0x34e0bd[_0xefb5('0x33')]=_0x34e0bd[_0xefb5('0x33')][_0xefb5('0x35')]?_0x34e0bd[_0xefb5('0x33')]:_0x1652b4['model'];_0x34e0bd[_0xefb5('0x4c')]=qs[_0xefb5('0x37')](_0x3137ea[_0xefb5('0x2f')]['sort']);_0x34e0bd[_0xefb5('0x38')]=qs[_0xefb5('0x30')](_['pick'](_0x3137ea[_0xefb5('0x2f')],_0x1652b4[_0xefb5('0x30')]));if(_0x3137ea['query'][_0xefb5('0x3a')]){_0x34e0bd[_0xefb5('0x38')]=_[_0xefb5('0x3b')](_0x34e0bd[_0xefb5('0x38')],{'$or':_[_0xefb5('0x29')](_0x34e0bd[_0xefb5('0x33')],function(_0x129960){var _0x3bdfd2={};_0x3bdfd2[_0x129960]={'$like':'%'+_0x3137ea['query'][_0xefb5('0x3a')]+'%'};return _0x3bdfd2;})});}_0x34e0bd=_[_0xefb5('0x3b')]({},_0x34e0bd,_0x3137ea[_0xefb5('0x3c')]);return _0x1e3315[_0xefb5('0x49')](_0x34e0bd);}})['then'](function(_0x2fcdb0){if(_0x2fcdb0){_0x3c7764=_0x2fcdb0['length'];if(!_0x3137ea[_0xefb5('0x2f')][_0xefb5('0x4d')]('nolimit')){_0x34e0bd[_0xefb5('0x1d')]=qs[_0xefb5('0x1d')](_0x3137ea['query']['limit']);_0x34e0bd['offset']=qs[_0xefb5('0x1b')](_0x3137ea[_0xefb5('0x2f')][_0xefb5('0x1b')]);}return _0x1e3315[_0xefb5('0x49')](_0x34e0bd);}})[_0xefb5('0x3d')](function(_0x3c3b88){if(_0x3c3b88){return _0x3c3b88?{'count':_0x3c7764,'rows':_0x3c3b88}:null;}})['then'](respondWithResult(_0x3e5ac3,null))[_0xefb5('0x44')](handleError(_0x3e5ac3,null));};exports[_0xefb5('0x4e')]=function(_0x478f01,_0x40e0a4,_0x7f40b6){var _0x33cc07={};var _0x2a3f44={};var _0xb0abe6;var _0x1dcdca;return db[_0xefb5('0x2a')][_0xefb5('0x4a')]({'where':{'id':_0x478f01[_0xefb5('0x48')]['id']}})[_0xefb5('0x3d')](handleEntityNotFound(_0x40e0a4,null))[_0xefb5('0x3d')](function(_0x21666f){if(_0x21666f){_0xb0abe6=_0x21666f;_0x2a3f44[_0xefb5('0x32')]=_['keys'](db[_0xefb5('0x4b')]['rawAttributes']);_0x2a3f44[_0xefb5('0x2f')]=_[_0xefb5('0x41')](_0x478f01['query']);_0x2a3f44[_0xefb5('0x30')]=_[_0xefb5('0x31')](_0x2a3f44['model'],_0x2a3f44[_0xefb5('0x2f')]);_0x33cc07['attributes']=_['intersection'](_0x2a3f44[_0xefb5('0x32')],qs['fields'](_0x478f01['query'][_0xefb5('0x34')]));_0x33cc07[_0xefb5('0x33')]=_0x33cc07[_0xefb5('0x33')][_0xefb5('0x35')]?_0x33cc07['attributes']:_0x2a3f44[_0xefb5('0x32')];_0x33cc07[_0xefb5('0x4c')]=qs[_0xefb5('0x37')](_0x478f01[_0xefb5('0x2f')][_0xefb5('0x37')]);_0x33cc07[_0xefb5('0x38')]=qs[_0xefb5('0x30')](_[_0xefb5('0x39')](_0x478f01[_0xefb5('0x2f')],_0x2a3f44['filters']));if(_0x478f01[_0xefb5('0x2f')]['filter']){_0x33cc07[_0xefb5('0x38')]=_['merge'](_0x33cc07[_0xefb5('0x38')],{'$or':_[_0xefb5('0x29')](_0x33cc07[_0xefb5('0x33')],function(_0x328148){var _0x15b2c0={};_0x15b2c0[_0x328148]={'$like':'%'+_0x478f01[_0xefb5('0x2f')][_0xefb5('0x3a')]+'%'};return _0x15b2c0;})});}_0x33cc07=_[_0xefb5('0x3b')]({},_0x33cc07,_0x478f01[_0xefb5('0x3c')]);return _0xb0abe6[_0xefb5('0x4e')](_0x33cc07);}})[_0xefb5('0x3d')](function(_0x3119cb){if(_0x3119cb){_0x1dcdca=_0x3119cb['length'];if(!_0x478f01[_0xefb5('0x2f')][_0xefb5('0x4d')](_0xefb5('0x36'))){_0x33cc07['limit']=qs[_0xefb5('0x1d')](_0x478f01[_0xefb5('0x2f')]['limit']);_0x33cc07['offset']=qs[_0xefb5('0x1b')](_0x478f01[_0xefb5('0x2f')][_0xefb5('0x1b')]);}return _0xb0abe6[_0xefb5('0x4e')](_0x33cc07);}})['then'](function(_0x810974){if(_0x810974){return _0x810974?{'count':_0x1dcdca,'rows':_0x810974}:null;}})[_0xefb5('0x3d')](respondWithResult(_0x40e0a4,null))[_0xefb5('0x44')](handleError(_0x40e0a4,null));};exports[_0xefb5('0x4f')]=function(_0x13a6da,_0x5bef47,_0xf72714){var _0x305dcf={};var _0x39b30a={};var _0x4af038;var _0x1ef319;return db[_0xefb5('0x2a')][_0xefb5('0x4a')]({'where':{'id':_0x13a6da[_0xefb5('0x48')]['id']}})['then'](handleEntityNotFound(_0x5bef47,null))[_0xefb5('0x3d')](function(_0x46cda9){if(_0x46cda9){_0x4af038=_0x46cda9;_0x39b30a[_0xefb5('0x32')]=_[_0xefb5('0x41')](db[_0xefb5('0x4b')]['rawAttributes']);_0x39b30a[_0xefb5('0x2f')]=_[_0xefb5('0x41')](_0x13a6da['query']);_0x39b30a[_0xefb5('0x30')]=_[_0xefb5('0x31')](_0x39b30a[_0xefb5('0x32')],_0x39b30a[_0xefb5('0x2f')]);_0x305dcf[_0xefb5('0x33')]=_[_0xefb5('0x31')](_0x39b30a[_0xefb5('0x32')],qs[_0xefb5('0x34')](_0x13a6da['query'][_0xefb5('0x34')]));_0x305dcf[_0xefb5('0x33')]=_0x305dcf['attributes'][_0xefb5('0x35')]?_0x305dcf[_0xefb5('0x33')]:_0x39b30a[_0xefb5('0x32')];_0x305dcf[_0xefb5('0x4c')]=qs['sort'](_0x13a6da[_0xefb5('0x2f')][_0xefb5('0x37')]);_0x305dcf[_0xefb5('0x38')]=qs[_0xefb5('0x30')](_['pick'](_0x13a6da[_0xefb5('0x2f')],_0x39b30a[_0xefb5('0x30')]));if(_0x13a6da['query'][_0xefb5('0x3a')]){_0x305dcf['where']=_['merge'](_0x305dcf[_0xefb5('0x38')],{'$or':_['map'](_0x305dcf[_0xefb5('0x33')],function(_0xf11f81){var _0x54fcb5={};_0x54fcb5[_0xf11f81]={'$like':'%'+_0x13a6da[_0xefb5('0x2f')]['filter']+'%'};return _0x54fcb5;})});}_0x305dcf=_[_0xefb5('0x3b')]({},_0x305dcf,_0x13a6da['options']);return _0x4af038[_0xefb5('0x4f')](_0x305dcf);}})['then'](function(_0x57bb72){if(_0x57bb72){_0x1ef319=_0x57bb72['length'];if(!_0x13a6da['query'][_0xefb5('0x4d')](_0xefb5('0x36'))){_0x305dcf['limit']=qs[_0xefb5('0x1d')](_0x13a6da[_0xefb5('0x2f')][_0xefb5('0x1d')]);_0x305dcf['offset']=qs[_0xefb5('0x1b')](_0x13a6da['query'][_0xefb5('0x1b')]);}return _0x4af038[_0xefb5('0x4f')](_0x305dcf);}})[_0xefb5('0x3d')](function(_0x251a55){if(_0x251a55){return _0x251a55?{'count':_0x1ef319,'rows':_0x251a55}:null;}})[_0xefb5('0x3d')](respondWithResult(_0x5bef47,null))[_0xefb5('0x44')](handleError(_0x5bef47,null));};exports[_0xefb5('0x50')]=function(_0x58c206,_0x3e43c5,_0x476aea){var _0x136262={};var _0x5e1ca1={};var _0x3cc214;var _0x20dbd8;return db[_0xefb5('0x2a')][_0xefb5('0x4a')]({'where':{'id':_0x58c206[_0xefb5('0x48')]['id']}})['then'](handleEntityNotFound(_0x3e43c5,null))[_0xefb5('0x3d')](function(_0x51e726){if(_0x51e726){_0x3cc214=_0x51e726;_0x5e1ca1[_0xefb5('0x32')]=_[_0xefb5('0x41')](db[_0xefb5('0x51')][_0xefb5('0x2b')]);_0x5e1ca1['query']=_[_0xefb5('0x41')](_0x58c206['query']);_0x5e1ca1[_0xefb5('0x30')]=_[_0xefb5('0x31')](_0x5e1ca1[_0xefb5('0x32')],_0x5e1ca1[_0xefb5('0x2f')]);_0x136262['attributes']=_[_0xefb5('0x31')](_0x5e1ca1[_0xefb5('0x32')],qs[_0xefb5('0x34')](_0x58c206['query'][_0xefb5('0x34')]));_0x136262[_0xefb5('0x33')]=_0x136262[_0xefb5('0x33')][_0xefb5('0x35')]?_0x136262[_0xefb5('0x33')]:_0x5e1ca1[_0xefb5('0x32')];_0x136262[_0xefb5('0x4c')]=qs[_0xefb5('0x37')](_0x58c206[_0xefb5('0x2f')][_0xefb5('0x37')]);_0x136262['where']=qs['filters'](_[_0xefb5('0x39')](_0x58c206['query'],_0x5e1ca1[_0xefb5('0x30')]));if(_0x58c206['query']['filter']){_0x136262['where']=_[_0xefb5('0x3b')](_0x136262[_0xefb5('0x38')],{'$or':_[_0xefb5('0x29')](_0x136262[_0xefb5('0x33')],function(_0x324792){var _0x274ff3={};_0x274ff3[_0x324792]={'$like':'%'+_0x58c206[_0xefb5('0x2f')][_0xefb5('0x3a')]+'%'};return _0x274ff3;})});}_0x136262=_[_0xefb5('0x3b')]({},_0x136262,_0x58c206[_0xefb5('0x3c')]);return _0x3cc214['getTags'](_0x136262);}})[_0xefb5('0x3d')](function(_0x43d7d1){if(_0x43d7d1){_0x20dbd8=_0x43d7d1[_0xefb5('0x35')];if(!_0x58c206[_0xefb5('0x2f')]['hasOwnProperty'](_0xefb5('0x36'))){_0x136262[_0xefb5('0x1d')]=qs[_0xefb5('0x1d')](_0x58c206[_0xefb5('0x2f')][_0xefb5('0x1d')]);_0x136262[_0xefb5('0x1b')]=qs[_0xefb5('0x1b')](_0x58c206[_0xefb5('0x2f')][_0xefb5('0x1b')]);}return _0x3cc214[_0xefb5('0x50')](_0x136262);}})[_0xefb5('0x3d')](function(_0x4662b3){if(_0x4662b3){return _0x4662b3?{'count':_0x20dbd8,'rows':_0x4662b3}:null;}})['then'](respondWithResult(_0x3e43c5,null))[_0xefb5('0x44')](handleError(_0x3e43c5,null));};exports[_0xefb5('0x52')]=function(_0x2cdc0e,_0x31de31,_0xeedaf5){if(_0x2cdc0e[_0xefb5('0x46')]['id']){delete _0x2cdc0e[_0xefb5('0x46')]['id'];}return db[_0xefb5('0x2a')][_0xefb5('0x4a')]({'where':{'id':_0x2cdc0e[_0xefb5('0x48')]['id']}})[_0xefb5('0x3d')](handleEntityNotFound(_0x31de31,null))[_0xefb5('0x3d')](function(_0x4bc786){if(_0x4bc786){return _0x4bc786[_0xefb5('0x52')](_0x2cdc0e[_0xefb5('0x46')][_0xefb5('0x53')]||[]);}return null;})['then'](respondWithResult(_0x31de31,null))[_0xefb5('0x44')](handleError(_0x31de31,null));};
\ No newline at end of file
index 2046db8..e54e3b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087b=['../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','moment','request-promise','path','rimraf'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x087b,0x11a));var _0xb087=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x087b[_0x2e4e19];return _0x9ba20b;};'use strict';var _=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xb087('0x2'));var BPromise=require('bluebird');var rp=require(_0xb087('0x3'));var fs=require('fs');var path=require(_0xb087('0x4'));var rimraf=require(_0xb087('0x5'));var config=require(_0xb087('0x6'));var attributes=require(_0xb087('0x7'));module[_0xb087('0x8')]=function(_0x40156d,_0x17d6e8){return _0x40156d[_0xb087('0x9')](_0xb087('0xa'),attributes,{'tableName':_0xb087('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5423=['request-promise','path','rimraf','../../config/environment','exports','define','ZendeskConfiguration','lodash','util','api','moment'];(function(_0x1640d7,_0x18e0fb){var _0x22db1a=function(_0x495bfb){while(--_0x495bfb){_0x1640d7['push'](_0x1640d7['shift']());}};_0x22db1a(++_0x18e0fb);}(_0x5423,0xe3));var _0x3542=function(_0x2754c3,_0xc1da22){_0x2754c3=_0x2754c3-0x0;var _0x394a0c=_0x5423[_0x2754c3];return _0x394a0c;};'use strict';var _=require(_0x3542('0x0'));var util=require(_0x3542('0x1'));var logger=require('../../config/logger')(_0x3542('0x2'));var moment=require(_0x3542('0x3'));var BPromise=require('bluebird');var rp=require(_0x3542('0x4'));var fs=require('fs');var path=require(_0x3542('0x5'));var rimraf=require(_0x3542('0x6'));var config=require(_0x3542('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module[_0x3542('0x8')]=function(_0x2d2ae9,_0x15ee3b){return _0x2d2ae9[_0x3542('0x9')](_0x3542('0xa'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d71e5e2..5053cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc059=['error','message','request\x20sent','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4add92,_0x247228){var _0x169ac4=function(_0x22140a){while(--_0x22140a){_0x4add92['push'](_0x4add92['shift']());}};_0x169ac4(++_0x247228);}(_0xc059,0x1b9));var _0x9c05=function(_0x395e5e,_0x445976){_0x395e5e=_0x395e5e-0x0;var _0x518e1d=_0xc059[_0x395e5e];return _0x518e1d;};'use strict';var _=require(_0x9c05('0x0'));var util=require(_0x9c05('0x1'));var moment=require(_0x9c05('0x2'));var BPromise=require(_0x9c05('0x3'));var rs=require(_0x9c05('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9c05('0x5'))['db'];var utils=require(_0x9c05('0x6'));var logger=require(_0x9c05('0x7'))(_0x9c05('0x8'));var config=require(_0x9c05('0x9'));var jayson=require(_0x9c05('0xa'));var client=jayson[_0x9c05('0xb')][_0x9c05('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x76abb,_0x3b4519,_0x2fe7f1){return new BPromise(function(_0x4ccd1a,_0xb86ab7){return client[_0x9c05('0xd')](_0x76abb,_0x2fe7f1)[_0x9c05('0xe')](function(_0x24b1dc){logger['info'](_0x9c05('0xf'),_0x3b4519,'request\x20sent');logger[_0x9c05('0x10')](_0x9c05('0x11'),_0x3b4519,'request\x20sent',JSON[_0x9c05('0x12')](_0x24b1dc));if(_0x24b1dc[_0x9c05('0x13')]){if(_0x24b1dc[_0x9c05('0x13')]['code']===0x1f4){logger[_0x9c05('0x13')](_0x9c05('0xf'),_0x3b4519,_0x24b1dc[_0x9c05('0x13')][_0x9c05('0x14')]);return _0xb86ab7(_0x24b1dc[_0x9c05('0x13')][_0x9c05('0x14')]);}logger[_0x9c05('0x13')](_0x9c05('0xf'),_0x3b4519,_0x24b1dc['error'][_0x9c05('0x14')]);return _0x4ccd1a(_0x24b1dc[_0x9c05('0x13')][_0x9c05('0x14')]);}else{logger['info'](_0x9c05('0xf'),_0x3b4519,_0x9c05('0x15'));_0x4ccd1a(_0x24b1dc[_0x9c05('0x16')][_0x9c05('0x14')]);}})['catch'](function(_0x59d81f){logger[_0x9c05('0x13')](_0x9c05('0xf'),_0x3b4519,_0x59d81f);_0xb86ab7(_0x59d81f);});});}
\ No newline at end of file
+var _0x9d73=['stringify','code','ZendeskConfiguration,\x20%s,\x20%s','message','error','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4fc9dd,_0x2187a7){var _0x4661e2=function(_0x19a855){while(--_0x19a855){_0x4fc9dd['push'](_0x4fc9dd['shift']());}};_0x4661e2(++_0x2187a7);}(_0x9d73,0x1d3));var _0x39d7=function(_0x46daf2,_0x55da55){_0x46daf2=_0x46daf2-0x0;var _0x4e0632=_0x9d73[_0x46daf2];return _0x4e0632;};'use strict';var _=require(_0x39d7('0x0'));var util=require(_0x39d7('0x1'));var moment=require(_0x39d7('0x2'));var BPromise=require(_0x39d7('0x3'));var rs=require(_0x39d7('0x4'));var fs=require('fs');var Redis=require(_0x39d7('0x5'));var db=require(_0x39d7('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x39d7('0x7'));var jayson=require(_0x39d7('0x8'));var client=jayson[_0x39d7('0x9')][_0x39d7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x165803,_0x4d3e20,_0xa63d){return new BPromise(function(_0x2659b5,_0x29c480){return client[_0x39d7('0xb')](_0x165803,_0xa63d)[_0x39d7('0xc')](function(_0x48d7dc){logger[_0x39d7('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x4d3e20,'request\x20sent');logger['debug'](_0x39d7('0xe'),_0x4d3e20,_0x39d7('0xf'),JSON[_0x39d7('0x10')](_0x48d7dc));if(_0x48d7dc['error']){if(_0x48d7dc['error'][_0x39d7('0x11')]===0x1f4){logger['error'](_0x39d7('0x12'),_0x4d3e20,_0x48d7dc['error'][_0x39d7('0x13')]);return _0x29c480(_0x48d7dc[_0x39d7('0x14')][_0x39d7('0x13')]);}logger[_0x39d7('0x14')](_0x39d7('0x12'),_0x4d3e20,_0x48d7dc[_0x39d7('0x14')][_0x39d7('0x13')]);return _0x2659b5(_0x48d7dc[_0x39d7('0x14')][_0x39d7('0x13')]);}else{logger['info'](_0x39d7('0x12'),_0x4d3e20,'request\x20sent');_0x2659b5(_0x48d7dc[_0x39d7('0x15')]['message']);}})[_0x39d7('0x16')](function(_0xcb203e){logger[_0x39d7('0x14')](_0x39d7('0x12'),_0x4d3e20,_0xcb203e);_0x29c480(_0xcb203e);});});}
\ No newline at end of file
index 3ccd4d7..2e67c07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf12a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','post','put','/:id','update','delete','destroy','exports','path','express','Router'];(function(_0x4525c9,_0x506c2a){var _0x11f844=function(_0x7f28d4){while(--_0x7f28d4){_0x4525c9['push'](_0x4525c9['shift']());}};_0x11f844(++_0x506c2a);}(_0xf12a,0x66));var _0xaf12=function(_0xa16ef8,_0x40cc48){_0xa16ef8=_0xa16ef8-0x0;var _0x40ab63=_0xf12a[_0xa16ef8];return _0x40ab63;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaf12('0x0'));var timeout=require('connect-timeout');var express=require(_0xaf12('0x1'));var router=express[_0xaf12('0x2')]();var fs_extra=require(_0xaf12('0x3'));var auth=require(_0xaf12('0x4'));var interaction=require(_0xaf12('0x5'));var config=require(_0xaf12('0x6'));var controller=require('./intZendeskField.controller');router['get']('/',auth[_0xaf12('0x7')](),controller['index']);router['get']('/:id',auth[_0xaf12('0x7')](),controller['show']);router[_0xaf12('0x8')]('/',auth[_0xaf12('0x7')](),controller['create']);router[_0xaf12('0x9')](_0xaf12('0xa'),auth['isAuthenticated'](),controller[_0xaf12('0xb')]);router[_0xaf12('0xc')](_0xaf12('0xa'),auth['isAuthenticated'](),controller[_0xaf12('0xd')]);module[_0xaf12('0xe')]=router;
\ No newline at end of file
+var _0xa8e9=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','post','create','put'];(function(_0x22b1d5,_0x9efc67){var _0x5b3003=function(_0x1f77ab){while(--_0x1f77ab){_0x22b1d5['push'](_0x22b1d5['shift']());}};_0x5b3003(++_0x9efc67);}(_0xa8e9,0xce));var _0x9a8e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa8e9[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x9a8e('0x0'));var util=require(_0x9a8e('0x1'));var path=require(_0x9a8e('0x2'));var timeout=require(_0x9a8e('0x3'));var express=require(_0x9a8e('0x4'));var router=express[_0x9a8e('0x5')]();var fs_extra=require(_0x9a8e('0x6'));var auth=require(_0x9a8e('0x7'));var interaction=require(_0x9a8e('0x8'));var config=require('../../config/environment');var controller=require('./intZendeskField.controller');router[_0x9a8e('0x9')]('/',auth[_0x9a8e('0xa')](),controller['index']);router[_0x9a8e('0x9')](_0x9a8e('0xb'),auth[_0x9a8e('0xa')](),controller['show']);router[_0x9a8e('0xc')]('/',auth[_0x9a8e('0xa')](),controller[_0x9a8e('0xd')]);router[_0x9a8e('0xe')](_0x9a8e('0xb'),auth[_0x9a8e('0xa')](),controller['update']);router['delete'](_0x9a8e('0xb'),auth['isAuthenticated'](),controller[_0x9a8e('0xf')]);module[_0x9a8e('0x10')]=router;
\ No newline at end of file
index e9a6abb..0df4db2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x860d=['string','variable','customVariable','keyValue','picklist','STRING','ENUM'];(function(_0x590275,_0x9451d){var _0x4fc880=function(_0x200291){while(--_0x200291){_0x590275['push'](_0x590275['shift']());}};_0x4fc880(++_0x9451d);}(_0x860d,0x181));var _0xd860=function(_0x2f1a51,_0x3c1f80){_0x2f1a51=_0x2f1a51-0x0;var _0x581809=_0x860d[_0x2f1a51];return _0x581809;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0xd860('0x0'),_0xd860('0x1'),_0xd860('0x2'),_0xd860('0x3'),_0xd860('0x4')),'defaultValue':_0xd860('0x0')},'content':{'type':Sequelize[_0xd860('0x5')]},'key':{'type':Sequelize[_0xd860('0x5')]},'keyType':{'type':Sequelize[_0xd860('0x6')](_0xd860('0x0'),'variable',_0xd860('0x2'))},'keyContent':{'type':Sequelize[_0xd860('0x5')]},'idField':{'type':Sequelize[_0xd860('0x5')]},'nameField':{'type':Sequelize[_0xd860('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd860('0x5')]}};
\ No newline at end of file
+var _0x175f=['customVariable','keyValue','string','STRING','ENUM','variable','sequelize','exports'];(function(_0x1e7274,_0x276150){var _0x4f03cc=function(_0x125bc4){while(--_0x125bc4){_0x1e7274['push'](_0x1e7274['shift']());}};_0x4f03cc(++_0x276150);}(_0x175f,0x7e));var _0xf175=function(_0x17b83c,_0x3e3186){_0x17b83c=_0x17b83c-0x0;var _0x5202ab=_0x175f[_0x17b83c];return _0x5202ab;};'use strict';var Sequelize=require(_0xf175('0x0'));module[_0xf175('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0xf175('0x2'),_0xf175('0x3'),'picklist'),'defaultValue':_0xf175('0x4')},'content':{'type':Sequelize[_0xf175('0x5')]},'key':{'type':Sequelize[_0xf175('0x5')]},'keyType':{'type':Sequelize[_0xf175('0x6')](_0xf175('0x4'),_0xf175('0x7'),_0xf175('0x2'))},'keyContent':{'type':Sequelize[_0xf175('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xf175('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf175('0x5')]}};
\ No newline at end of file
index c9c84c2..073f8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf7=['catch','rawAttributes','includeAll','include','find','create','body','update','params','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','name','send','index','map','ZendeskField','fieldName','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','rows'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8bf7,0x139));var _0x78bf=function(_0x2cfbd4,_0x2f413e){_0x2cfbd4=_0x2cfbd4-0x0;var _0x358c71=_0x8bf7[_0x2cfbd4];return _0x358c71;};'use strict';var emlformat=require(_0x78bf('0x0'));var rimraf=require(_0x78bf('0x1'));var zipdir=require(_0x78bf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x78bf('0x3'));var moment=require(_0x78bf('0x4'));var BPromise=require(_0x78bf('0x5'));var Mustache=require(_0x78bf('0x6'));var util=require(_0x78bf('0x7'));var path=require(_0x78bf('0x8'));var sox=require(_0x78bf('0x9'));var csv=require(_0x78bf('0xa'));var ejs=require(_0x78bf('0xb'));var fs=require('fs');var fs_extra=require(_0x78bf('0xc'));var _=require(_0x78bf('0xd'));var squel=require(_0x78bf('0xe'));var crypto=require(_0x78bf('0xf'));var jsforce=require(_0x78bf('0x10'));var deskjs=require(_0x78bf('0x11'));var toCsv=require(_0x78bf('0xa'));var querystring=require(_0x78bf('0x12'));var Papa=require(_0x78bf('0x13'));var Redis=require(_0x78bf('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x78bf('0x15'));var logger=require(_0x78bf('0x16'))(_0x78bf('0x17'));var utils=require(_0x78bf('0x18'));var config=require(_0x78bf('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x78bf('0x1a'))['db'];function respondWithStatusCode(_0x53dd39,_0x412ad3){_0x412ad3=_0x412ad3||0xcc;return function(_0x791084){if(_0x791084){return _0x53dd39[_0x78bf('0x1b')](_0x412ad3);}return _0x53dd39[_0x78bf('0x1c')](_0x412ad3)[_0x78bf('0x1d')]();};}function respondWithResult(_0x113fe9,_0x8f9562){_0x8f9562=_0x8f9562||0xc8;return function(_0x31a639){if(_0x31a639){return _0x113fe9[_0x78bf('0x1c')](_0x8f9562)[_0x78bf('0x1e')](_0x31a639);}};}function respondWithFilteredResult(_0x481265,_0x13239e){return function(_0x423ab8){if(_0x423ab8){var _0x2ad79a=typeof _0x13239e[_0x78bf('0x1f')]===_0x78bf('0x20')&&typeof _0x13239e['limit']===_0x78bf('0x20');var _0x2bf908=_0x423ab8[_0x78bf('0x21')];var _0x364acb=_0x2ad79a?0x0:_0x13239e[_0x78bf('0x1f')];var _0x355db1=_0x2ad79a?_0x423ab8[_0x78bf('0x21')]:_0x13239e[_0x78bf('0x1f')]+_0x13239e[_0x78bf('0x22')];var _0x3eb676;if(_0x355db1>=_0x2bf908){_0x355db1=_0x2bf908;_0x3eb676=0xc8;}else{_0x3eb676=0xce;}_0x481265[_0x78bf('0x1c')](_0x3eb676);return _0x481265[_0x78bf('0x23')](_0x78bf('0x24'),_0x364acb+'-'+_0x355db1+'/'+_0x2bf908)['json'](_0x423ab8);}return null;};}function patchUpdates(_0x1b02a0){return function(_0x461c96){try{jsonpatch[_0x78bf('0x25')](_0x461c96,_0x1b02a0,!![]);}catch(_0x4e50c2){return BPromise[_0x78bf('0x26')](_0x4e50c2);}return _0x461c96[_0x78bf('0x27')]();};}function saveUpdates(_0x5d81e2,_0x32fd43){return function(_0x2e283d){if(_0x2e283d){return _0x2e283d['update'](_0x5d81e2)[_0x78bf('0x28')](function(_0x11f914){return _0x11f914;});}return null;};}function removeEntity(_0xe1700c,_0x42e9a3){return function(_0x2f4b9a){if(_0x2f4b9a){return _0x2f4b9a[_0x78bf('0x29')]()['then'](function(){_0xe1700c[_0x78bf('0x1c')](0xcc)[_0x78bf('0x1d')]();});}};}function handleEntityNotFound(_0x1b8986,_0x359b99){return function(_0x39ef9b){if(!_0x39ef9b){_0x1b8986[_0x78bf('0x1b')](0x194);}return _0x39ef9b;};}function handleError(_0x5af5cf,_0x5d3b15){_0x5d3b15=_0x5d3b15||0x1f4;return function(_0x56ed32){logger['error'](_0x56ed32['stack']);if(_0x56ed32[_0x78bf('0x2a')]){delete _0x56ed32[_0x78bf('0x2a')];}_0x5af5cf['status'](_0x5d3b15)[_0x78bf('0x2b')](_0x56ed32);};}exports[_0x78bf('0x2c')]=function(_0x2a92f4,_0x17fe58){var _0x22ef9e={},_0x30abb5={},_0x2b4fb9={'count':0x0,'rows':[]};var _0xb4eec0=_[_0x78bf('0x2d')](db[_0x78bf('0x2e')]['rawAttributes'],function(_0x50c3c7){return{'name':_0x50c3c7[_0x78bf('0x2f')],'type':_0x50c3c7[_0x78bf('0x30')][_0x78bf('0x31')]};});_0x30abb5['model']=_[_0x78bf('0x2d')](_0xb4eec0,_0x78bf('0x2a'));_0x30abb5['query']=_[_0x78bf('0x32')](_0x2a92f4[_0x78bf('0x33')]);_0x30abb5[_0x78bf('0x34')]=_[_0x78bf('0x35')](_0x30abb5[_0x78bf('0x36')],_0x30abb5[_0x78bf('0x33')]);_0x22ef9e['attributes']=_[_0x78bf('0x35')](_0x30abb5[_0x78bf('0x36')],qs[_0x78bf('0x37')](_0x2a92f4['query'][_0x78bf('0x37')]));_0x22ef9e[_0x78bf('0x38')]=_0x22ef9e[_0x78bf('0x38')][_0x78bf('0x39')]?_0x22ef9e[_0x78bf('0x38')]:_0x30abb5['model'];if(!_0x2a92f4[_0x78bf('0x33')][_0x78bf('0x3a')]('nolimit')){_0x22ef9e[_0x78bf('0x22')]=qs['limit'](_0x2a92f4[_0x78bf('0x33')][_0x78bf('0x22')]);_0x22ef9e[_0x78bf('0x1f')]=qs[_0x78bf('0x1f')](_0x2a92f4[_0x78bf('0x33')]['offset']);}_0x22ef9e[_0x78bf('0x3b')]=qs[_0x78bf('0x3c')](_0x2a92f4[_0x78bf('0x33')][_0x78bf('0x3c')]);_0x22ef9e[_0x78bf('0x3d')]=qs[_0x78bf('0x34')](_[_0x78bf('0x3e')](_0x2a92f4[_0x78bf('0x33')],_0x30abb5['filters']),_0xb4eec0);if(_0x2a92f4[_0x78bf('0x33')]['filter']){_0x22ef9e['where']=_[_0x78bf('0x3f')](_0x22ef9e[_0x78bf('0x3d')],{'$or':_[_0x78bf('0x2d')](_0xb4eec0,function(_0x52675c){if(_0x52675c[_0x78bf('0x30')]!==_0x78bf('0x40')){var _0x291896={};_0x291896[_0x52675c[_0x78bf('0x2a')]]={'$like':'%'+_0x2a92f4['query']['filter']+'%'};return _0x291896;}})});}_0x22ef9e=_['merge']({},_0x22ef9e,_0x2a92f4[_0x78bf('0x41')]);var _0x201cb8={'where':_0x22ef9e['where']};return db[_0x78bf('0x2e')][_0x78bf('0x21')](_0x201cb8)['then'](function(_0x346639){_0x2b4fb9[_0x78bf('0x21')]=_0x346639;if(_0x2a92f4[_0x78bf('0x33')]['includeAll']){_0x22ef9e['include']=[{'all':!![]}];}return db[_0x78bf('0x2e')]['findAll'](_0x22ef9e);})[_0x78bf('0x28')](function(_0x3b4bbc){_0x2b4fb9[_0x78bf('0x42')]=_0x3b4bbc;return _0x2b4fb9;})[_0x78bf('0x28')](respondWithFilteredResult(_0x17fe58,_0x22ef9e))[_0x78bf('0x43')](handleError(_0x17fe58,null));};exports['show']=function(_0x151ccd,_0xb0f1d0){var _0x5dd459={'raw':!![],'where':{'id':_0x151ccd['params']['id']}},_0x23f809={};_0x23f809['model']=_[_0x78bf('0x32')](db[_0x78bf('0x2e')][_0x78bf('0x44')]);_0x23f809[_0x78bf('0x33')]=_[_0x78bf('0x32')](_0x151ccd[_0x78bf('0x33')]);_0x23f809[_0x78bf('0x34')]=_['intersection'](_0x23f809[_0x78bf('0x36')],_0x23f809['query']);_0x5dd459[_0x78bf('0x38')]=_[_0x78bf('0x35')](_0x23f809[_0x78bf('0x36')],qs[_0x78bf('0x37')](_0x151ccd['query'][_0x78bf('0x37')]));_0x5dd459[_0x78bf('0x38')]=_0x5dd459[_0x78bf('0x38')][_0x78bf('0x39')]?_0x5dd459[_0x78bf('0x38')]:_0x23f809['model'];if(_0x151ccd['query'][_0x78bf('0x45')]){_0x5dd459[_0x78bf('0x46')]=[{'all':!![]}];}_0x5dd459=_[_0x78bf('0x3f')]({},_0x5dd459,_0x151ccd[_0x78bf('0x41')]);return db[_0x78bf('0x2e')][_0x78bf('0x47')](_0x5dd459)[_0x78bf('0x28')](handleEntityNotFound(_0xb0f1d0,null))[_0x78bf('0x28')](respondWithResult(_0xb0f1d0,null))[_0x78bf('0x43')](handleError(_0xb0f1d0,null));};exports['create']=function(_0x5a2fb3,_0x18b5f0){return db[_0x78bf('0x2e')][_0x78bf('0x48')](_0x5a2fb3[_0x78bf('0x49')],{})['then'](respondWithResult(_0x18b5f0,0xc9))[_0x78bf('0x43')](handleError(_0x18b5f0,null));};exports[_0x78bf('0x4a')]=function(_0x5b2f0d,_0x9524dd){if(_0x5b2f0d[_0x78bf('0x49')]['id']){delete _0x5b2f0d[_0x78bf('0x49')]['id'];}return db[_0x78bf('0x2e')]['find']({'where':{'id':_0x5b2f0d[_0x78bf('0x4b')]['id']}})[_0x78bf('0x28')](handleEntityNotFound(_0x9524dd,null))[_0x78bf('0x28')](saveUpdates(_0x5b2f0d[_0x78bf('0x49')],null))['then'](respondWithResult(_0x9524dd,null))['catch'](handleError(_0x9524dd,null));};exports[_0x78bf('0x29')]=function(_0x1e9527,_0x2f0e32){return db['ZendeskField'][_0x78bf('0x47')]({'where':{'id':_0x1e9527['params']['id']}})[_0x78bf('0x28')](handleEntityNotFound(_0x2f0e32,null))[_0x78bf('0x28')](removeEntity(_0x2f0e32,null))['catch'](handleError(_0x2f0e32,null));};
\ No newline at end of file
+var _0xc9b7=['../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','offset','count','limit','Content-Range','json','reject','save','update','then','destroy','stack','index','map','ZendeskField','fieldName','type','key','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','findAll','rows','show','keys','rawAttributes','include','find','create','body','catch','params','eml-format','rimraf','zip-dir','fast-json-patch','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'];(function(_0x470651,_0x2774a5){var _0x4c3597=function(_0x4b9914){while(--_0x4b9914){_0x470651['push'](_0x470651['shift']());}};_0x4c3597(++_0x2774a5);}(_0xc9b7,0x1ab));var _0x7c9b=function(_0x3e04c4,_0x48101b){_0x3e04c4=_0x3e04c4-0x0;var _0x543e0f=_0xc9b7[_0x3e04c4];return _0x543e0f;};'use strict';var emlformat=require(_0x7c9b('0x0'));var rimraf=require(_0x7c9b('0x1'));var zipdir=require(_0x7c9b('0x2'));var jsonpatch=require(_0x7c9b('0x3'));var rp=require('request-promise');var moment=require(_0x7c9b('0x4'));var BPromise=require(_0x7c9b('0x5'));var Mustache=require('mustache');var util=require(_0x7c9b('0x6'));var path=require(_0x7c9b('0x7'));var sox=require(_0x7c9b('0x8'));var csv=require(_0x7c9b('0x9'));var ejs=require(_0x7c9b('0xa'));var fs=require('fs');var fs_extra=require(_0x7c9b('0xb'));var _=require(_0x7c9b('0xc'));var squel=require(_0x7c9b('0xd'));var crypto=require(_0x7c9b('0xe'));var jsforce=require(_0x7c9b('0xf'));var deskjs=require(_0x7c9b('0x10'));var toCsv=require(_0x7c9b('0x9'));var querystring=require(_0x7c9b('0x11'));var Papa=require(_0x7c9b('0x12'));var Redis=require(_0x7c9b('0x13'));var authService=require(_0x7c9b('0x14'));var qs=require(_0x7c9b('0x15'));var as=require(_0x7c9b('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7c9b('0x17'))(_0x7c9b('0x18'));var utils=require(_0x7c9b('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x7c9b('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e6b13,_0x42362a){_0x42362a=_0x42362a||0xcc;return function(_0x4cdc09){if(_0x4cdc09){return _0x1e6b13[_0x7c9b('0x1b')](_0x42362a);}return _0x1e6b13[_0x7c9b('0x1c')](_0x42362a)[_0x7c9b('0x1d')]();};}function respondWithResult(_0x2e8001,_0x56f49d){_0x56f49d=_0x56f49d||0xc8;return function(_0x1ec7dd){if(_0x1ec7dd){return _0x2e8001[_0x7c9b('0x1c')](_0x56f49d)['json'](_0x1ec7dd);}};}function respondWithFilteredResult(_0x2f1ecb,_0x482e81){return function(_0x86a9ca){if(_0x86a9ca){var _0x2f1967=typeof _0x482e81[_0x7c9b('0x1e')]==='undefined'&&typeof _0x482e81['limit']==='undefined';var _0x3206b7=_0x86a9ca[_0x7c9b('0x1f')];var _0x2bb448=_0x2f1967?0x0:_0x482e81[_0x7c9b('0x1e')];var _0x18d6d5=_0x2f1967?_0x86a9ca[_0x7c9b('0x1f')]:_0x482e81['offset']+_0x482e81[_0x7c9b('0x20')];var _0x132dbe;if(_0x18d6d5>=_0x3206b7){_0x18d6d5=_0x3206b7;_0x132dbe=0xc8;}else{_0x132dbe=0xce;}_0x2f1ecb[_0x7c9b('0x1c')](_0x132dbe);return _0x2f1ecb['set'](_0x7c9b('0x21'),_0x2bb448+'-'+_0x18d6d5+'/'+_0x3206b7)[_0x7c9b('0x22')](_0x86a9ca);}return null;};}function patchUpdates(_0xb7c53e){return function(_0x456f81){try{jsonpatch['apply'](_0x456f81,_0xb7c53e,!![]);}catch(_0x4321c3){return BPromise[_0x7c9b('0x23')](_0x4321c3);}return _0x456f81[_0x7c9b('0x24')]();};}function saveUpdates(_0x4ca682,_0x1583ab){return function(_0x4d68be){if(_0x4d68be){return _0x4d68be[_0x7c9b('0x25')](_0x4ca682)[_0x7c9b('0x26')](function(_0x1f8b22){return _0x1f8b22;});}return null;};}function removeEntity(_0x3e4282,_0x1be41b){return function(_0x4c080c){if(_0x4c080c){return _0x4c080c[_0x7c9b('0x27')]()[_0x7c9b('0x26')](function(){_0x3e4282[_0x7c9b('0x1c')](0xcc)[_0x7c9b('0x1d')]();});}};}function handleEntityNotFound(_0x23be90,_0x17b63c){return function(_0x816979){if(!_0x816979){_0x23be90[_0x7c9b('0x1b')](0x194);}return _0x816979;};}function handleError(_0x269b60,_0x3750ce){_0x3750ce=_0x3750ce||0x1f4;return function(_0x47d843){logger['error'](_0x47d843[_0x7c9b('0x28')]);if(_0x47d843['name']){delete _0x47d843['name'];}_0x269b60[_0x7c9b('0x1c')](_0x3750ce)['send'](_0x47d843);};}exports[_0x7c9b('0x29')]=function(_0x17b477,_0x722b0d){var _0x17cf3c={},_0x2a7afe={},_0x2cbe6f={'count':0x0,'rows':[]};var _0x1bd094=_[_0x7c9b('0x2a')](db[_0x7c9b('0x2b')]['rawAttributes'],function(_0x405709){return{'name':_0x405709[_0x7c9b('0x2c')],'type':_0x405709[_0x7c9b('0x2d')][_0x7c9b('0x2e')]};});_0x2a7afe[_0x7c9b('0x2f')]=_[_0x7c9b('0x2a')](_0x1bd094,_0x7c9b('0x30'));_0x2a7afe[_0x7c9b('0x31')]=_['keys'](_0x17b477['query']);_0x2a7afe[_0x7c9b('0x32')]=_[_0x7c9b('0x33')](_0x2a7afe[_0x7c9b('0x2f')],_0x2a7afe[_0x7c9b('0x31')]);_0x17cf3c[_0x7c9b('0x34')]=_[_0x7c9b('0x33')](_0x2a7afe[_0x7c9b('0x2f')],qs[_0x7c9b('0x35')](_0x17b477[_0x7c9b('0x31')][_0x7c9b('0x35')]));_0x17cf3c[_0x7c9b('0x34')]=_0x17cf3c[_0x7c9b('0x34')]['length']?_0x17cf3c[_0x7c9b('0x34')]:_0x2a7afe[_0x7c9b('0x2f')];if(!_0x17b477['query'][_0x7c9b('0x36')](_0x7c9b('0x37'))){_0x17cf3c[_0x7c9b('0x20')]=qs[_0x7c9b('0x20')](_0x17b477['query'][_0x7c9b('0x20')]);_0x17cf3c[_0x7c9b('0x1e')]=qs[_0x7c9b('0x1e')](_0x17b477[_0x7c9b('0x31')][_0x7c9b('0x1e')]);}_0x17cf3c[_0x7c9b('0x38')]=qs[_0x7c9b('0x39')](_0x17b477['query'][_0x7c9b('0x39')]);_0x17cf3c['where']=qs['filters'](_[_0x7c9b('0x3a')](_0x17b477[_0x7c9b('0x31')],_0x2a7afe[_0x7c9b('0x32')]),_0x1bd094);if(_0x17b477[_0x7c9b('0x31')][_0x7c9b('0x3b')]){_0x17cf3c[_0x7c9b('0x3c')]=_[_0x7c9b('0x3d')](_0x17cf3c[_0x7c9b('0x3c')],{'$or':_['map'](_0x1bd094,function(_0x559d99){if(_0x559d99[_0x7c9b('0x2d')]!==_0x7c9b('0x3e')){var _0x2a5fc4={};_0x2a5fc4[_0x559d99[_0x7c9b('0x30')]]={'$like':'%'+_0x17b477[_0x7c9b('0x31')][_0x7c9b('0x3b')]+'%'};return _0x2a5fc4;}})});}_0x17cf3c=_[_0x7c9b('0x3d')]({},_0x17cf3c,_0x17b477[_0x7c9b('0x3f')]);var _0x1a21e2={'where':_0x17cf3c[_0x7c9b('0x3c')]};return db[_0x7c9b('0x2b')][_0x7c9b('0x1f')](_0x1a21e2)['then'](function(_0x21c04c){_0x2cbe6f[_0x7c9b('0x1f')]=_0x21c04c;if(_0x17b477[_0x7c9b('0x31')]['includeAll']){_0x17cf3c['include']=[{'all':!![]}];}return db[_0x7c9b('0x2b')][_0x7c9b('0x40')](_0x17cf3c);})[_0x7c9b('0x26')](function(_0x560bc3){_0x2cbe6f[_0x7c9b('0x41')]=_0x560bc3;return _0x2cbe6f;})['then'](respondWithFilteredResult(_0x722b0d,_0x17cf3c))['catch'](handleError(_0x722b0d,null));};exports[_0x7c9b('0x42')]=function(_0x4d070e,_0x36a4c8){var _0x1a4817={'raw':!![],'where':{'id':_0x4d070e['params']['id']}},_0xc2cae5={};_0xc2cae5[_0x7c9b('0x2f')]=_[_0x7c9b('0x43')](db[_0x7c9b('0x2b')][_0x7c9b('0x44')]);_0xc2cae5['query']=_[_0x7c9b('0x43')](_0x4d070e[_0x7c9b('0x31')]);_0xc2cae5[_0x7c9b('0x32')]=_[_0x7c9b('0x33')](_0xc2cae5[_0x7c9b('0x2f')],_0xc2cae5[_0x7c9b('0x31')]);_0x1a4817[_0x7c9b('0x34')]=_[_0x7c9b('0x33')](_0xc2cae5[_0x7c9b('0x2f')],qs[_0x7c9b('0x35')](_0x4d070e['query'][_0x7c9b('0x35')]));_0x1a4817['attributes']=_0x1a4817[_0x7c9b('0x34')]['length']?_0x1a4817[_0x7c9b('0x34')]:_0xc2cae5[_0x7c9b('0x2f')];if(_0x4d070e[_0x7c9b('0x31')]['includeAll']){_0x1a4817[_0x7c9b('0x45')]=[{'all':!![]}];}_0x1a4817=_['merge']({},_0x1a4817,_0x4d070e[_0x7c9b('0x3f')]);return db[_0x7c9b('0x2b')][_0x7c9b('0x46')](_0x1a4817)[_0x7c9b('0x26')](handleEntityNotFound(_0x36a4c8,null))[_0x7c9b('0x26')](respondWithResult(_0x36a4c8,null))['catch'](handleError(_0x36a4c8,null));};exports[_0x7c9b('0x47')]=function(_0x162537,_0x2ce1ce){return db[_0x7c9b('0x2b')][_0x7c9b('0x47')](_0x162537[_0x7c9b('0x48')],{})[_0x7c9b('0x26')](respondWithResult(_0x2ce1ce,0xc9))[_0x7c9b('0x49')](handleError(_0x2ce1ce,null));};exports['update']=function(_0x37428b,_0x4ab845){if(_0x37428b[_0x7c9b('0x48')]['id']){delete _0x37428b[_0x7c9b('0x48')]['id'];}return db['ZendeskField']['find']({'where':{'id':_0x37428b[_0x7c9b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4ab845,null))['then'](saveUpdates(_0x37428b[_0x7c9b('0x48')],null))[_0x7c9b('0x26')](respondWithResult(_0x4ab845,null))[_0x7c9b('0x49')](handleError(_0x4ab845,null));};exports[_0x7c9b('0x27')]=function(_0x36131c,_0x2bfca0){return db[_0x7c9b('0x2b')]['find']({'where':{'id':_0x36131c[_0x7c9b('0x4a')]['id']}})[_0x7c9b('0x26')](handleEntityNotFound(_0x2bfca0,null))[_0x7c9b('0x26')](removeEntity(_0x2bfca0,null))[_0x7c9b('0x49')](handleError(_0x2bfca0,null));};
\ No newline at end of file
index 38e0cc7..1149893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0266=['idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intZendeskField.attributes','exports'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x0266,0x1c9));var _0x6026=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x0266[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0x6026('0x0'));var util=require(_0x6026('0x1'));var logger=require(_0x6026('0x2'))(_0x6026('0x3'));var moment=require(_0x6026('0x4'));var BPromise=require(_0x6026('0x5'));var rp=require(_0x6026('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6026('0x7'));var config=require(_0x6026('0x8'));var attributes=require(_0x6026('0x9'));module[_0x6026('0xa')]=function(_0x119277,_0xb0d5de){return _0x119277['define']('ZendeskField',attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0x6026('0xb'),_0x6026('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b86=['../../config/environment','./intZendeskField.attributes','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x154bdc,_0x1b2ee7){var _0x485d2d=function(_0x3555f8){while(--_0x3555f8){_0x154bdc['push'](_0x154bdc['shift']());}};_0x485d2d(++_0x1b2ee7);}(_0x9b86,0x107));var _0x69b8=function(_0x51882a,_0x586e5e){_0x51882a=_0x51882a-0x0;var _0x5a0209=_0x9b86[_0x51882a];return _0x5a0209;};'use strict';var _=require(_0x69b8('0x0'));var util=require(_0x69b8('0x1'));var logger=require(_0x69b8('0x2'))(_0x69b8('0x3'));var moment=require(_0x69b8('0x4'));var BPromise=require(_0x69b8('0x5'));var rp=require(_0x69b8('0x6'));var fs=require('fs');var path=require(_0x69b8('0x7'));var rimraf=require(_0x69b8('0x8'));var config=require(_0x69b8('0x9'));var attributes=require(_0x69b8('0xa'));module['exports']=function(_0x530683,_0x4a01f4){return _0x530683[_0x69b8('0xb')](_0x69b8('0xc'),attributes,{'tableName':_0x69b8('0xd'),'paranoid':![],'indexes':[{'name':_0x69b8('0xe'),'fields':[_0x69b8('0xf'),_0x69b8('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index abce8ad..14e6236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc195=['debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskField,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent'];(function(_0x5541ea,_0x261fe4){var _0x4ff5ba=function(_0x288da4){while(--_0x288da4){_0x5541ea['push'](_0x5541ea['shift']());}};_0x4ff5ba(++_0x261fe4);}(_0xc195,0x151));var _0x5c19=function(_0x36b400,_0x277ec5){_0x36b400=_0x36b400-0x0;var _0x4d47bf=_0xc195[_0x36b400];return _0x4d47bf;};'use strict';var _=require(_0x5c19('0x0'));var util=require(_0x5c19('0x1'));var moment=require(_0x5c19('0x2'));var BPromise=require(_0x5c19('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5c19('0x4'));var db=require(_0x5c19('0x5'))['db'];var utils=require(_0x5c19('0x6'));var logger=require('../../config/logger')(_0x5c19('0x7'));var config=require(_0x5c19('0x8'));var jayson=require(_0x5c19('0x9'));var client=jayson[_0x5c19('0xa')][_0x5c19('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2aef19,_0x2bce2a,_0x395dc9){return new BPromise(function(_0x58cf69,_0x312b93){return client[_0x5c19('0xc')](_0x2aef19,_0x395dc9)[_0x5c19('0xd')](function(_0x4822c6){logger['info']('ZendeskField,\x20%s,\x20%s',_0x2bce2a,_0x5c19('0xe'));logger[_0x5c19('0xf')](_0x5c19('0x10'),_0x2bce2a,'request\x20sent',JSON[_0x5c19('0x11')](_0x4822c6));if(_0x4822c6[_0x5c19('0x12')]){if(_0x4822c6[_0x5c19('0x12')]['code']===0x1f4){logger[_0x5c19('0x12')](_0x5c19('0x13'),_0x2bce2a,_0x4822c6[_0x5c19('0x12')][_0x5c19('0x14')]);return _0x312b93(_0x4822c6[_0x5c19('0x12')][_0x5c19('0x14')]);}logger['error'](_0x5c19('0x13'),_0x2bce2a,_0x4822c6[_0x5c19('0x12')][_0x5c19('0x14')]);return _0x58cf69(_0x4822c6['error']['message']);}else{logger['info'](_0x5c19('0x13'),_0x2bce2a,'request\x20sent');_0x58cf69(_0x4822c6[_0x5c19('0x15')]['message']);}})['catch'](function(_0x5dca0d){logger['error'](_0x5c19('0x13'),_0x2bce2a,_0x5dca0d);_0x312b93(_0x5dca0d);});});}
\ No newline at end of file
+var _0x7e28=['jayson/promise','http','request','info','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x51aef5,_0x1e9134){var _0x3f6385=function(_0x5e8503){while(--_0x5e8503){_0x51aef5['push'](_0x51aef5['shift']());}};_0x3f6385(++_0x1e9134);}(_0x7e28,0x109));var _0x87e2=function(_0x4d1716,_0x50b0e8){_0x4d1716=_0x4d1716-0x0;var _0x25ae73=_0x7e28[_0x4d1716];return _0x25ae73;};'use strict';var _=require(_0x87e2('0x0'));var util=require(_0x87e2('0x1'));var moment=require(_0x87e2('0x2'));var BPromise=require(_0x87e2('0x3'));var rs=require(_0x87e2('0x4'));var fs=require('fs');var Redis=require(_0x87e2('0x5'));var db=require(_0x87e2('0x6'))['db'];var utils=require(_0x87e2('0x7'));var logger=require(_0x87e2('0x8'))(_0x87e2('0x9'));var config=require(_0x87e2('0xa'));var jayson=require(_0x87e2('0xb'));var client=jayson['client'][_0x87e2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d6ef8,_0x2362ce,_0x4291d5){return new BPromise(function(_0x38059f,_0x4d6f7c){return client[_0x87e2('0xd')](_0x2d6ef8,_0x4291d5)['then'](function(_0x3f3fc8){logger[_0x87e2('0xe')](_0x87e2('0xf'),_0x2362ce,_0x87e2('0x10'));logger['debug'](_0x87e2('0x11'),_0x2362ce,_0x87e2('0x10'),JSON['stringify'](_0x3f3fc8));if(_0x3f3fc8[_0x87e2('0x12')]){if(_0x3f3fc8[_0x87e2('0x12')][_0x87e2('0x13')]===0x1f4){logger['error'](_0x87e2('0xf'),_0x2362ce,_0x3f3fc8[_0x87e2('0x12')][_0x87e2('0x14')]);return _0x4d6f7c(_0x3f3fc8['error'][_0x87e2('0x14')]);}logger[_0x87e2('0x12')](_0x87e2('0xf'),_0x2362ce,_0x3f3fc8['error']['message']);return _0x38059f(_0x3f3fc8['error'][_0x87e2('0x14')]);}else{logger['info'](_0x87e2('0xf'),_0x2362ce,'request\x20sent');_0x38059f(_0x3f3fc8[_0x87e2('0x15')][_0x87e2('0x14')]);}})[_0x87e2('0x16')](function(_0x57c959){logger['error'](_0x87e2('0xf'),_0x2362ce,_0x57c959);_0x4d6f7c(_0x57c959);});});}
\ No newline at end of file
index d7c07d0..599f18e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6b0=['../../config/environment','./intZohoAccount.controller','index','get','/:id','isAuthenticated','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x458ed6,_0x504646){var _0xa5dfd9=function(_0x504e7b){while(--_0x504e7b){_0x458ed6['push'](_0x458ed6['shift']());}};_0xa5dfd9(++_0x504646);}(_0xe6b0,0x188));var _0x0e6b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe6b0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x0e6b('0x0'));var util=require(_0x0e6b('0x1'));var path=require('path');var timeout=require(_0x0e6b('0x2'));var express=require(_0x0e6b('0x3'));var router=express[_0x0e6b('0x4')]();var fs_extra=require(_0x0e6b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0e6b('0x6'));var config=require(_0x0e6b('0x7'));var controller=require(_0x0e6b('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x0e6b('0x9')]);router[_0x0e6b('0xa')](_0x0e6b('0xb'),auth[_0x0e6b('0xc')](),controller['show']);router[_0x0e6b('0xa')](_0x0e6b('0xd'),auth[_0x0e6b('0xc')](),controller[_0x0e6b('0xe')]);router['get']('/:id/fields',auth[_0x0e6b('0xc')](),controller[_0x0e6b('0xf')]);router[_0x0e6b('0x10')]('/',auth[_0x0e6b('0xc')](),controller[_0x0e6b('0x11')]);router[_0x0e6b('0x10')](_0x0e6b('0xd'),auth['isAuthenticated'](),controller[_0x0e6b('0x12')]);router['put'](_0x0e6b('0xb'),auth['isAuthenticated'](),controller[_0x0e6b('0x13')]);router[_0x0e6b('0x14')](_0x0e6b('0xb'),auth[_0x0e6b('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2124=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','isAuthenticated','get','/:id/configurations','/:id/fields','post','create','addConfiguration','put','/:id','update','destroy','exports','multer','connect-timeout','express'];(function(_0x2d259a,_0x31068e){var _0x16f9d5=function(_0xfdf4af){while(--_0xfdf4af){_0x2d259a['push'](_0x2d259a['shift']());}};_0x16f9d5(++_0x31068e);}(_0x2124,0x151));var _0x4212=function(_0x528339,_0x3dfa45){_0x528339=_0x528339-0x0;var _0x12b270=_0x2124[_0x528339];return _0x12b270;};'use strict';var multer=require(_0x4212('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4212('0x1'));var express=require(_0x4212('0x2'));var router=express['Router']();var fs_extra=require(_0x4212('0x3'));var auth=require(_0x4212('0x4'));var interaction=require(_0x4212('0x5'));var config=require(_0x4212('0x6'));var controller=require(_0x4212('0x7'));router['get']('/',auth[_0x4212('0x8')](),controller['index']);router['get']('/:id',auth[_0x4212('0x8')](),controller['show']);router[_0x4212('0x9')](_0x4212('0xa'),auth[_0x4212('0x8')](),controller['getConfigurations']);router[_0x4212('0x9')](_0x4212('0xb'),auth[_0x4212('0x8')](),controller['getFields']);router[_0x4212('0xc')]('/',auth[_0x4212('0x8')](),controller[_0x4212('0xd')]);router[_0x4212('0xc')](_0x4212('0xa'),auth[_0x4212('0x8')](),controller[_0x4212('0xe')]);router[_0x4212('0xf')](_0x4212('0x10'),auth[_0x4212('0x8')](),controller[_0x4212('0x11')]);router['delete'](_0x4212('0x10'),auth['isAuthenticated'](),controller[_0x4212('0x12')]);module[_0x4212('0x13')]=router;
\ No newline at end of file
index 7c80634..1de0b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['STRING','sequelize','exports'];(function(_0x35e94d,_0x6e5e4){var _0xb91537=function(_0x12a7ed){while(--_0x12a7ed){_0x35e94d['push'](_0x35e94d['shift']());}};_0xb91537(++_0x6e5e4);}(_0x6c76,0x184));var _0x66c7=function(_0x1a80ef,_0x4d9b47){_0x1a80ef=_0x1a80ef-0x0;var _0x1df274=_0x6c76[_0x1a80ef];return _0x1df274;};'use strict';var Sequelize=require(_0x66c7('0x0'));module[_0x66c7('0x1')]={'name':{'type':Sequelize[_0x66c7('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x66c7('0x2')]},'zone':{'type':Sequelize[_0x66c7('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x66c7('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x66c7('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x70e0=['STRING','sequelize','exports'];(function(_0x128955,_0x3c556d){var _0xc8f4fb=function(_0x47f8f5){while(--_0x47f8f5){_0x128955['push'](_0x128955['shift']());}};_0xc8f4fb(++_0x3c556d);}(_0x70e0,0x17b));var _0x070e=function(_0x51c85a,_0x2e8fec){_0x51c85a=_0x51c85a-0x0;var _0x2e6d1d=_0x70e0[_0x51c85a];return _0x2e6d1d;};'use strict';var Sequelize=require(_0x070e('0x0'));module[_0x070e('0x1')]={'name':{'type':Sequelize[_0x070e('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x070e('0x2')]},'clientId':{'type':Sequelize[_0x070e('0x2')]},'clientSecret':{'type':Sequelize[_0x070e('0x2')]},'serverUrl':{'type':Sequelize[_0x070e('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x070e('0x2')]}};
\ No newline at end of file
index c673d0d..325639f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ee=['error','stack','name','map','ZohoAccount','rawAttributes','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','options','count','includeAll','include','findAll','catch','show','keys','merge','find','create','body','getConfigurations','params','nolimit','addConfiguration','AccountId','getSubjects','getDescriptions','ZohoField','Subjects','Descriptions','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','serverUrl','zoho.eu','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','Call_Duration','Call_Result','Call_Type','remove','includes','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','stringify','send','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','end'];(function(_0x1ce720,_0x4f4abd){var _0x1c736e=function(_0x568116){while(--_0x568116){_0x1ce720['push'](_0x1ce720['shift']());}};_0x1c736e(++_0x4f4abd);}(_0xf5ee,0xd5));var _0xef5e=function(_0x407654,_0x275ae3){_0x407654=_0x407654-0x0;var _0x521dbd=_0xf5ee[_0x407654];return _0x521dbd;};'use strict';var emlformat=require(_0xef5e('0x0'));var rimraf=require(_0xef5e('0x1'));var zipdir=require(_0xef5e('0x2'));var jsonpatch=require(_0xef5e('0x3'));var rp=require('request-promise');var moment=require(_0xef5e('0x4'));var BPromise=require(_0xef5e('0x5'));var Mustache=require(_0xef5e('0x6'));var util=require(_0xef5e('0x7'));var path=require('path');var sox=require(_0xef5e('0x8'));var csv=require(_0xef5e('0x9'));var ejs=require(_0xef5e('0xa'));var fs=require('fs');var fs_extra=require(_0xef5e('0xb'));var _=require(_0xef5e('0xc'));var squel=require('squel');var crypto=require(_0xef5e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xef5e('0xe'));var toCsv=require(_0xef5e('0x9'));var querystring=require(_0xef5e('0xf'));var Papa=require(_0xef5e('0x10'));var Redis=require('ioredis');var authService=require(_0xef5e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xef5e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef5e('0x13'))(_0xef5e('0x14'));var utils=require(_0xef5e('0x15'));var config=require(_0xef5e('0x16'));var licenseUtil=require(_0xef5e('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x23da8d,_0x1c741e){_0x1c741e=_0x1c741e||0xcc;return function(_0x312fca){if(_0x312fca){return _0x23da8d['sendStatus'](_0x1c741e);}return _0x23da8d[_0xef5e('0x18')](_0x1c741e)['end']();};}function respondWithResult(_0x104de7,_0x44b974){_0x44b974=_0x44b974||0xc8;return function(_0x4b1088){if(_0x4b1088){return _0x104de7[_0xef5e('0x18')](_0x44b974)[_0xef5e('0x19')](_0x4b1088);}};}function respondWithFilteredResult(_0x17e509,_0x4413fa){return function(_0x15a0a1){if(_0x15a0a1){var _0x2a7b7b=typeof _0x4413fa[_0xef5e('0x1a')]==='undefined'&&typeof _0x4413fa[_0xef5e('0x1b')]==='undefined';var _0x3e49ff=_0x15a0a1['count'];var _0x4a4540=_0x2a7b7b?0x0:_0x4413fa[_0xef5e('0x1a')];var _0x29eb0a=_0x2a7b7b?_0x15a0a1['count']:_0x4413fa[_0xef5e('0x1a')]+_0x4413fa[_0xef5e('0x1b')];var _0x56edce;if(_0x29eb0a>=_0x3e49ff){_0x29eb0a=_0x3e49ff;_0x56edce=0xc8;}else{_0x56edce=0xce;}_0x17e509[_0xef5e('0x18')](_0x56edce);return _0x17e509[_0xef5e('0x1c')](_0xef5e('0x1d'),_0x4a4540+'-'+_0x29eb0a+'/'+_0x3e49ff)['json'](_0x15a0a1);}return null;};}function patchUpdates(_0x4ba079){return function(_0x5c1c54){try{jsonpatch[_0xef5e('0x1e')](_0x5c1c54,_0x4ba079,!![]);}catch(_0x3a3d0e){return BPromise[_0xef5e('0x1f')](_0x3a3d0e);}return _0x5c1c54[_0xef5e('0x20')]();};}function saveUpdates(_0x4463cd,_0x251dc7){return function(_0x5de7ec){if(_0x5de7ec){return _0x5de7ec[_0xef5e('0x21')](_0x4463cd)[_0xef5e('0x22')](function(_0x163523){return _0x163523;});}return null;};}function removeEntity(_0x4d79f1,_0x5d1125){return function(_0x4f015f){if(_0x4f015f){return _0x4f015f[_0xef5e('0x23')]()[_0xef5e('0x22')](function(){_0x4d79f1[_0xef5e('0x18')](0xcc)[_0xef5e('0x24')]();});}};}function handleEntityNotFound(_0x4e961f,_0x534b72){return function(_0x2c32bd){if(!_0x2c32bd){_0x4e961f['sendStatus'](0x194);}return _0x2c32bd;};}function handleError(_0x506124,_0x26c490){_0x26c490=_0x26c490||0x1f4;return function(_0x4c7df7){logger[_0xef5e('0x25')](_0x4c7df7[_0xef5e('0x26')]);if(_0x4c7df7['name']){delete _0x4c7df7[_0xef5e('0x27')];}_0x506124['status'](_0x26c490)['send'](_0x4c7df7);};}exports['index']=function(_0xda1b76,_0xa0e83e){var _0x11df4a={},_0x53fc5b={},_0x231080={'count':0x0,'rows':[]};var _0x5c75af=_[_0xef5e('0x28')](db[_0xef5e('0x29')][_0xef5e('0x2a')],function(_0x5e79e6){return{'name':_0x5e79e6['fieldName'],'type':_0x5e79e6[_0xef5e('0x2b')][_0xef5e('0x2c')]};});_0x53fc5b['model']=_[_0xef5e('0x28')](_0x5c75af,_0xef5e('0x27'));_0x53fc5b['query']=_['keys'](_0xda1b76[_0xef5e('0x2d')]);_0x53fc5b[_0xef5e('0x2e')]=_['intersection'](_0x53fc5b['model'],_0x53fc5b['query']);_0x11df4a['attributes']=_[_0xef5e('0x2f')](_0x53fc5b[_0xef5e('0x30')],qs[_0xef5e('0x31')](_0xda1b76[_0xef5e('0x2d')][_0xef5e('0x31')]));_0x11df4a['attributes']=_0x11df4a[_0xef5e('0x32')][_0xef5e('0x33')]?_0x11df4a['attributes']:_0x53fc5b[_0xef5e('0x30')];if(!_0xda1b76['query'][_0xef5e('0x34')]('nolimit')){_0x11df4a[_0xef5e('0x1b')]=qs['limit'](_0xda1b76[_0xef5e('0x2d')]['limit']);_0x11df4a['offset']=qs[_0xef5e('0x1a')](_0xda1b76[_0xef5e('0x2d')]['offset']);}_0x11df4a[_0xef5e('0x35')]=qs[_0xef5e('0x36')](_0xda1b76['query'][_0xef5e('0x36')]);_0x11df4a[_0xef5e('0x37')]=qs[_0xef5e('0x2e')](_[_0xef5e('0x38')](_0xda1b76['query'],_0x53fc5b[_0xef5e('0x2e')]),_0x5c75af);if(_0xda1b76['query'][_0xef5e('0x39')]){_0x11df4a[_0xef5e('0x37')]=_['merge'](_0x11df4a['where'],{'$or':_[_0xef5e('0x28')](_0x5c75af,function(_0x2b75c9){if(_0x2b75c9[_0xef5e('0x2b')]!=='VIRTUAL'){var _0x55e22a={};_0x55e22a[_0x2b75c9[_0xef5e('0x27')]]={'$like':'%'+_0xda1b76['query']['filter']+'%'};return _0x55e22a;}})});}_0x11df4a=_['merge']({},_0x11df4a,_0xda1b76[_0xef5e('0x3a')]);var _0x25a62c={'where':_0x11df4a['where']};return db[_0xef5e('0x29')][_0xef5e('0x3b')](_0x25a62c)['then'](function(_0x3a55a4){_0x231080[_0xef5e('0x3b')]=_0x3a55a4;if(_0xda1b76[_0xef5e('0x2d')][_0xef5e('0x3c')]){_0x11df4a[_0xef5e('0x3d')]=[{'all':!![]}];}return db[_0xef5e('0x29')][_0xef5e('0x3e')](_0x11df4a);})[_0xef5e('0x22')](function(_0x4dfdc1){_0x231080['rows']=_0x4dfdc1;return _0x231080;})[_0xef5e('0x22')](respondWithFilteredResult(_0xa0e83e,_0x11df4a))[_0xef5e('0x3f')](handleError(_0xa0e83e,null));};exports[_0xef5e('0x40')]=function(_0xbd504c,_0x3142bd){var _0x4bafb9={'raw':![],'where':{'id':_0xbd504c['params']['id']}},_0x3247e7={};_0x3247e7[_0xef5e('0x30')]=_['keys'](db[_0xef5e('0x29')][_0xef5e('0x2a')]);_0x3247e7['query']=_[_0xef5e('0x41')](_0xbd504c[_0xef5e('0x2d')]);_0x3247e7[_0xef5e('0x2e')]=_[_0xef5e('0x2f')](_0x3247e7[_0xef5e('0x30')],_0x3247e7['query']);_0x4bafb9[_0xef5e('0x32')]=_[_0xef5e('0x2f')](_0x3247e7[_0xef5e('0x30')],qs[_0xef5e('0x31')](_0xbd504c[_0xef5e('0x2d')][_0xef5e('0x31')]));_0x4bafb9[_0xef5e('0x32')]=_0x4bafb9[_0xef5e('0x32')][_0xef5e('0x33')]?_0x4bafb9[_0xef5e('0x32')]:_0x3247e7[_0xef5e('0x30')];if(_0xbd504c[_0xef5e('0x2d')][_0xef5e('0x3c')]){_0x4bafb9[_0xef5e('0x3d')]=[{'all':!![]}];}_0x4bafb9=_[_0xef5e('0x42')]({},_0x4bafb9,_0xbd504c[_0xef5e('0x3a')]);return db[_0xef5e('0x29')][_0xef5e('0x43')](_0x4bafb9)['then'](handleEntityNotFound(_0x3142bd,null))['then'](respondWithResult(_0x3142bd,null))[_0xef5e('0x3f')](handleError(_0x3142bd,null));};exports[_0xef5e('0x44')]=function(_0x57cdb2,_0x1bddc2){return db[_0xef5e('0x29')][_0xef5e('0x44')](_0x57cdb2[_0xef5e('0x45')],{})[_0xef5e('0x22')](respondWithResult(_0x1bddc2,0xc9))[_0xef5e('0x3f')](handleError(_0x1bddc2,null));};exports[_0xef5e('0x21')]=function(_0x7ae640,_0x5e0c87){if(_0x7ae640['body']['id']){delete _0x7ae640[_0xef5e('0x45')]['id'];}return db[_0xef5e('0x29')]['find']({'where':{'id':_0x7ae640['params']['id']}})[_0xef5e('0x22')](handleEntityNotFound(_0x5e0c87,null))['then'](saveUpdates(_0x7ae640['body'],null))[_0xef5e('0x22')](respondWithResult(_0x5e0c87,null))[_0xef5e('0x3f')](handleError(_0x5e0c87,null));};exports['destroy']=function(_0x2c0b6c,_0xf9df01){return db[_0xef5e('0x29')][_0xef5e('0x43')]({'where':{'id':_0x2c0b6c['params']['id']}})['then'](handleEntityNotFound(_0xf9df01,null))[_0xef5e('0x22')](removeEntity(_0xf9df01,null))['catch'](handleError(_0xf9df01,null));};exports[_0xef5e('0x46')]=function(_0x5aca9c,_0x10f31e,_0x48e4c3){var _0x17a907={};var _0xf11cfc={};var _0x145375;var _0x37496a;return db['ZohoAccount']['findOne']({'where':{'id':_0x5aca9c[_0xef5e('0x47')]['id']}})[_0xef5e('0x22')](handleEntityNotFound(_0x10f31e,null))[_0xef5e('0x22')](function(_0x42210d){if(_0x42210d){_0x145375=_0x42210d;_0xf11cfc[_0xef5e('0x30')]=_[_0xef5e('0x41')](db['ZohoConfiguration']['rawAttributes']);_0xf11cfc[_0xef5e('0x2d')]=_[_0xef5e('0x41')](_0x5aca9c[_0xef5e('0x2d')]);_0xf11cfc[_0xef5e('0x2e')]=_[_0xef5e('0x2f')](_0xf11cfc[_0xef5e('0x30')],_0xf11cfc[_0xef5e('0x2d')]);_0x17a907[_0xef5e('0x32')]=_[_0xef5e('0x2f')](_0xf11cfc[_0xef5e('0x30')],qs[_0xef5e('0x31')](_0x5aca9c[_0xef5e('0x2d')]['fields']));_0x17a907[_0xef5e('0x32')]=_0x17a907['attributes'][_0xef5e('0x33')]?_0x17a907[_0xef5e('0x32')]:_0xf11cfc['model'];_0x17a907[_0xef5e('0x35')]=qs['sort'](_0x5aca9c['query']['sort']);_0x17a907['where']=qs[_0xef5e('0x2e')](_['pick'](_0x5aca9c[_0xef5e('0x2d')],_0xf11cfc[_0xef5e('0x2e')]));if(_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x39')]){_0x17a907[_0xef5e('0x37')]=_['merge'](_0x17a907[_0xef5e('0x37')],{'$or':_['map'](_0x17a907[_0xef5e('0x32')],function(_0x4d65c9){var _0x26120e={};_0x26120e[_0x4d65c9]={'$like':'%'+_0x5aca9c[_0xef5e('0x2d')]['filter']+'%'};return _0x26120e;})});}_0x17a907=_[_0xef5e('0x42')]({},_0x17a907,_0x5aca9c[_0xef5e('0x3a')]);return _0x145375[_0xef5e('0x46')](_0x17a907);}})[_0xef5e('0x22')](function(_0x268458){if(_0x268458){_0x37496a=_0x268458[_0xef5e('0x33')];if(!_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x34')](_0xef5e('0x48'))){_0x17a907[_0xef5e('0x1b')]=qs[_0xef5e('0x1b')](_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x1b')]);_0x17a907[_0xef5e('0x1a')]=qs[_0xef5e('0x1a')](_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x1a')]);}return _0x145375['getConfigurations'](_0x17a907);}})[_0xef5e('0x22')](function(_0x26aa21){if(_0x26aa21){return _0x26aa21?{'count':_0x37496a,'rows':_0x26aa21}:null;}})[_0xef5e('0x22')](respondWithResult(_0x10f31e,null))[_0xef5e('0x3f')](handleError(_0x10f31e,null));};exports[_0xef5e('0x49')]=function(_0x4eaf51,_0xe8c73a,_0xd4ba07){if(_0x4eaf51[_0xef5e('0x45')]['id']){delete _0x4eaf51[_0xef5e('0x45')]['id'];}return db[_0xef5e('0x29')]['findOne']({'where':{'id':_0x4eaf51[_0xef5e('0x47')]['id']}})[_0xef5e('0x22')](handleEntityNotFound(_0xe8c73a,null))['then'](function(_0x5c09e9){if(_0x5c09e9){_0x4eaf51[_0xef5e('0x45')][_0xef5e('0x4a')]=_0x5c09e9['id'];_0x4eaf51[_0xef5e('0x45')]['Subjects']=integrations[_0xef5e('0x4b')](_0x4eaf51[_0xef5e('0x45')]['channel'],_0x4eaf51[_0xef5e('0x45')]['type']);_0x4eaf51['body']['Descriptions']=integrations[_0xef5e('0x4c')](_0x4eaf51[_0xef5e('0x45')]['channel'],_0x4eaf51[_0xef5e('0x45')]['type']);return db['ZohoConfiguration'][_0xef5e('0x44')](_0x4eaf51[_0xef5e('0x45')],{'include':[{'model':db[_0xef5e('0x4d')],'as':_0xef5e('0x4e')},{'model':db[_0xef5e('0x4d')],'as':_0xef5e('0x4f')}]});}return null;})[_0xef5e('0x22')](respondWithResult(_0xe8c73a,null))[_0xef5e('0x3f')](handleError(_0xe8c73a,null));};function getAccessToken(_0x386eed){return new Promise(function(_0x2479a7,_0x841a49){var _0x3f89a2;switch(_0x386eed[_0xef5e('0x50')]){case'US':_0x3f89a2='https://accounts.zoho.com';break;case'AU':_0x3f89a2=_0xef5e('0x51');break;case'EU':_0x3f89a2=_0xef5e('0x52');break;case'IN':_0x3f89a2=_0xef5e('0x53');break;case'CN':_0x3f89a2=_0xef5e('0x54');break;default:_0x3f89a2=_0xef5e('0x52');break;}var _0x32172c={'method':_0xef5e('0x55'),'uri':_0x3f89a2+_0xef5e('0x56'),'qs':{'refresh_token':_0x386eed[_0xef5e('0x57')],'client_id':_0x386eed['clientId'],'client_secret':_0x386eed[_0xef5e('0x58')],'grant_type':_0xef5e('0x59')},'json':!![]};return rp(_0x32172c)[_0xef5e('0x22')](function(_0x26e7f1){if(_0x26e7f1[_0xef5e('0x5a')]){_0x2479a7(_0x26e7f1['access_token']);}else{_0x841a49(_0xef5e('0x5b'));}})[_0xef5e('0x3f')](function(_0x472b30){_0x841a49(_0x472b30);});});}exports[_0xef5e('0x5c')]=function(_0x20df65,_0x4bf513,_0x5d6297){var _0x1e6a97,_0x4ef6d1,_0x2e5460,_0x17adea,_0xddc7bd;return db[_0xef5e('0x29')]['findOne']({'where':{'id':_0x20df65['params']['id']},'attributes':['id',_0xef5e('0x5d'),_0xef5e('0x50'),_0xef5e('0x5e'),_0xef5e('0x58'),_0xef5e('0x5f'),'code','refreshToken']})['then'](handleEntityNotFound(_0x4bf513,null))[_0xef5e('0x22')](function(_0xf4fa4c){_0xddc7bd=_0xf4fa4c;_0x1e6a97=_0xddc7bd[_0xef5e('0x5d')];_0x4ef6d1=_0x1e6a97===_0xef5e('0x60')?'eu':_0xef5e('0x61');_0x2e5460=_0xddc7bd[_0xef5e('0x5f')];var _0x5b6f30=_0x2e5460[_0xef5e('0x62')](-0x1);if(_0x5b6f30==='/'||_0x5b6f30==='\x5c'||_0x5b6f30===':'){_0x2e5460=_0x2e5460[_0xef5e('0x63')](0x0,_0x2e5460[_0xef5e('0x64')](_0x5b6f30));}if(!_0xddc7bd[_0xef5e('0x57')]){throw new Error(_0xef5e('0x65'));}return getAccessToken(_0xddc7bd);})[_0xef5e('0x22')](function(_0x19a088){if(_0x19a088){return rp({'method':'GET','uri':util[_0xef5e('0x66')](_0xef5e('0x67'),_0x4ef6d1),'qs':{'module':_0xef5e('0x68')},'headers':{'Authorization':_0xef5e('0x69')+_0x19a088},'json':!![]});}})[_0xef5e('0x22')](function(_0x4b2e7c){if(_0x4b2e7c){if(_0x4b2e7c[_0xef5e('0x6a')]&&_0x4b2e7c[_0xef5e('0x6a')]['error']){throw new Error(_0x4b2e7c[_0xef5e('0x6a')][_0xef5e('0x25')][_0xef5e('0x6b')]);}var _0x177949=[];var _0x5598de=[];var _0x5840cb=[_0xef5e('0x6c'),_0xef5e('0x6d'),_0xef5e('0x6e'),'WhoId',_0xef5e('0x6f'),_0xef5e('0x70'),'Call_Start_Time',_0xef5e('0x71')];_0x5598de=_[_0xef5e('0x72')](_0x4b2e7c[_0xef5e('0x31')],function(_0x1cf068){return _0x5840cb[_0xef5e('0x73')](_0x1cf068['api_name']);});for(var _0x2deb07=0x0;_0x2deb07<_0x5598de[_0xef5e('0x33')];_0x2deb07++){if(_0x5598de[_0x2deb07]['system_mandatory']===![]){_0x177949[_0xef5e('0x74')]({'id':_0x5598de[_0x2deb07]['id'],'name':_0x5598de[_0x2deb07][_0xef5e('0x75')],'custom':_0x5598de[_0x2deb07][_0xef5e('0x76')],'options':_0x5598de[_0x2deb07]['data_type']===_0xef5e('0x77')&&_0x5598de[_0x2deb07][_0xef5e('0x78')][_0xef5e('0x33')]>-0x1?_[_0xef5e('0x28')](_0x5598de[_0x2deb07][_0xef5e('0x78')],function(_0x1b6835){return{'name':_0x1b6835,'value':_0x1b6835};}):[]});}}return{'count':_0x177949[_0xef5e('0x33')],'rows':_0x177949};}else{return{'count':0x0,'rows':[]};}})[_0xef5e('0x22')](respondWithResult(_0x4bf513,null))[_0xef5e('0x3f')](function(_0xdb7519){var _0x311213=_0x20df65[_0xef5e('0x2d')][_0xef5e('0x79')]?0x1f4:_0xdb7519[_0xef5e('0x7a')]||0x1f4;logger[_0xef5e('0x25')]('getFields,\x20%s,\x20%s,\x20%s',_0xef5e('0x5c'),_0x311213,JSON[_0xef5e('0x7b')](_0xdb7519));delete _0xdb7519['name'];if(_0x311213===0x191){_0x311213=0x190;}_0x4bf513[_0xef5e('0x18')](_0x311213)[_0xef5e('0x7c')](_0x20df65[_0xef5e('0x2d')][_0xef5e('0x79')]?{'message':'Wrong\x20credentials','statusCode':_0xdb7519[_0xef5e('0x7a')]}:_0xdb7519);});};
\ No newline at end of file
+var _0xd1dd=['statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','name','send','index','fieldName','key','map','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','ZohoAccount','rows','show','find','create','catch','body','params','getConfigurations','ZohoConfiguration','order','addConfiguration','findOne','AccountId','Subjects','channel','type','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','POST','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','com','slice','substring','lastIndexOf','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','error','message','Subject','Description','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','system_mandatory','push','custom_field','picklist','pick_list_values','test'];(function(_0x255c48,_0x2a4449){var _0xaebda3=function(_0x12a04e){while(--_0x12a04e){_0x255c48['push'](_0x255c48['shift']());}};_0xaebda3(++_0x2a4449);}(_0xd1dd,0x86));var _0xdd1d=function(_0x1c3c34,_0xabe69a){_0x1c3c34=_0x1c3c34-0x0;var _0x5aea77=_0xd1dd[_0x1c3c34];return _0x5aea77;};'use strict';var emlformat=require(_0xdd1d('0x0'));var rimraf=require(_0xdd1d('0x1'));var zipdir=require(_0xdd1d('0x2'));var jsonpatch=require(_0xdd1d('0x3'));var rp=require(_0xdd1d('0x4'));var moment=require('moment');var BPromise=require(_0xdd1d('0x5'));var Mustache=require(_0xdd1d('0x6'));var util=require(_0xdd1d('0x7'));var path=require(_0xdd1d('0x8'));var sox=require(_0xdd1d('0x9'));var csv=require(_0xdd1d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdd1d('0xb'));var _=require(_0xdd1d('0xc'));var squel=require(_0xdd1d('0xd'));var crypto=require(_0xdd1d('0xe'));var jsforce=require(_0xdd1d('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xdd1d('0xa'));var querystring=require(_0xdd1d('0x10'));var Papa=require(_0xdd1d('0x11'));var Redis=require(_0xdd1d('0x12'));var authService=require(_0xdd1d('0x13'));var qs=require(_0xdd1d('0x14'));var as=require(_0xdd1d('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdd1d('0x16'))(_0xdd1d('0x17'));var utils=require('../../config/utils');var config=require(_0xdd1d('0x18'));var licenseUtil=require(_0xdd1d('0x19'));var db=require(_0xdd1d('0x1a'))['db'];var integrations=require(_0xdd1d('0x1b'));function respondWithStatusCode(_0x364813,_0x1a464b){_0x1a464b=_0x1a464b||0xcc;return function(_0x7b3a88){if(_0x7b3a88){return _0x364813[_0xdd1d('0x1c')](_0x1a464b);}return _0x364813[_0xdd1d('0x1d')](_0x1a464b)['end']();};}function respondWithResult(_0x58aac7,_0x2ce857){_0x2ce857=_0x2ce857||0xc8;return function(_0x4e56d4){if(_0x4e56d4){return _0x58aac7[_0xdd1d('0x1d')](_0x2ce857)[_0xdd1d('0x1e')](_0x4e56d4);}};}function respondWithFilteredResult(_0x21bcb6,_0x2ee3ad){return function(_0x44c7f3){if(_0x44c7f3){var _0x4fc7fd=typeof _0x2ee3ad['offset']==='undefined'&&typeof _0x2ee3ad[_0xdd1d('0x1f')]===_0xdd1d('0x20');var _0xcd967c=_0x44c7f3[_0xdd1d('0x21')];var _0x201040=_0x4fc7fd?0x0:_0x2ee3ad['offset'];var _0x3754bb=_0x4fc7fd?_0x44c7f3[_0xdd1d('0x21')]:_0x2ee3ad[_0xdd1d('0x22')]+_0x2ee3ad[_0xdd1d('0x1f')];var _0x18f1fd;if(_0x3754bb>=_0xcd967c){_0x3754bb=_0xcd967c;_0x18f1fd=0xc8;}else{_0x18f1fd=0xce;}_0x21bcb6[_0xdd1d('0x1d')](_0x18f1fd);return _0x21bcb6[_0xdd1d('0x23')](_0xdd1d('0x24'),_0x201040+'-'+_0x3754bb+'/'+_0xcd967c)[_0xdd1d('0x1e')](_0x44c7f3);}return null;};}function patchUpdates(_0x409f75){return function(_0x359a85){try{jsonpatch[_0xdd1d('0x25')](_0x359a85,_0x409f75,!![]);}catch(_0x19186d){return BPromise[_0xdd1d('0x26')](_0x19186d);}return _0x359a85[_0xdd1d('0x27')]();};}function saveUpdates(_0xf26915,_0x197862){return function(_0x212f86){if(_0x212f86){return _0x212f86[_0xdd1d('0x28')](_0xf26915)[_0xdd1d('0x29')](function(_0x442142){return _0x442142;});}return null;};}function removeEntity(_0xc7725f,_0x18e4c9){return function(_0x5746bb){if(_0x5746bb){return _0x5746bb[_0xdd1d('0x2a')]()[_0xdd1d('0x29')](function(){_0xc7725f[_0xdd1d('0x1d')](0xcc)[_0xdd1d('0x2b')]();});}};}function handleEntityNotFound(_0x11a8e1,_0x1788fd){return function(_0x120d34){if(!_0x120d34){_0x11a8e1['sendStatus'](0x194);}return _0x120d34;};}function handleError(_0x336ab6,_0x36e066){_0x36e066=_0x36e066||0x1f4;return function(_0xc9b317){logger['error'](_0xc9b317['stack']);if(_0xc9b317[_0xdd1d('0x2c')]){delete _0xc9b317[_0xdd1d('0x2c')];}_0x336ab6[_0xdd1d('0x1d')](_0x36e066)[_0xdd1d('0x2d')](_0xc9b317);};}exports[_0xdd1d('0x2e')]=function(_0x15c7cc,_0x5306aa){var _0x5ef343={},_0x598aab={},_0x4dea53={'count':0x0,'rows':[]};var _0x4e5e81=_['map'](db['ZohoAccount']['rawAttributes'],function(_0x9df4f0){return{'name':_0x9df4f0[_0xdd1d('0x2f')],'type':_0x9df4f0['type'][_0xdd1d('0x30')]};});_0x598aab['model']=_[_0xdd1d('0x31')](_0x4e5e81,_0xdd1d('0x2c'));_0x598aab['query']=_[_0xdd1d('0x32')](_0x15c7cc[_0xdd1d('0x33')]);_0x598aab[_0xdd1d('0x34')]=_['intersection'](_0x598aab[_0xdd1d('0x35')],_0x598aab['query']);_0x5ef343[_0xdd1d('0x36')]=_[_0xdd1d('0x37')](_0x598aab[_0xdd1d('0x35')],qs['fields'](_0x15c7cc[_0xdd1d('0x33')][_0xdd1d('0x38')]));_0x5ef343[_0xdd1d('0x36')]=_0x5ef343[_0xdd1d('0x36')][_0xdd1d('0x39')]?_0x5ef343[_0xdd1d('0x36')]:_0x598aab['model'];if(!_0x15c7cc[_0xdd1d('0x33')][_0xdd1d('0x3a')](_0xdd1d('0x3b'))){_0x5ef343['limit']=qs[_0xdd1d('0x1f')](_0x15c7cc['query']['limit']);_0x5ef343['offset']=qs[_0xdd1d('0x22')](_0x15c7cc[_0xdd1d('0x33')][_0xdd1d('0x22')]);}_0x5ef343['order']=qs[_0xdd1d('0x3c')](_0x15c7cc['query'][_0xdd1d('0x3c')]);_0x5ef343[_0xdd1d('0x3d')]=qs[_0xdd1d('0x34')](_[_0xdd1d('0x3e')](_0x15c7cc[_0xdd1d('0x33')],_0x598aab['filters']),_0x4e5e81);if(_0x15c7cc[_0xdd1d('0x33')][_0xdd1d('0x3f')]){_0x5ef343[_0xdd1d('0x3d')]=_[_0xdd1d('0x40')](_0x5ef343[_0xdd1d('0x3d')],{'$or':_[_0xdd1d('0x31')](_0x4e5e81,function(_0x1e1e41){if(_0x1e1e41['type']!==_0xdd1d('0x41')){var _0x521032={};_0x521032[_0x1e1e41[_0xdd1d('0x2c')]]={'$like':'%'+_0x15c7cc[_0xdd1d('0x33')][_0xdd1d('0x3f')]+'%'};return _0x521032;}})});}_0x5ef343=_[_0xdd1d('0x40')]({},_0x5ef343,_0x15c7cc[_0xdd1d('0x42')]);var _0x3e4edc={'where':_0x5ef343[_0xdd1d('0x3d')]};return db['ZohoAccount'][_0xdd1d('0x21')](_0x3e4edc)[_0xdd1d('0x29')](function(_0x45fef4){_0x4dea53[_0xdd1d('0x21')]=_0x45fef4;if(_0x15c7cc[_0xdd1d('0x33')][_0xdd1d('0x43')]){_0x5ef343[_0xdd1d('0x44')]=[{'all':!![]}];}return db[_0xdd1d('0x45')]['findAll'](_0x5ef343);})['then'](function(_0x125638){_0x4dea53[_0xdd1d('0x46')]=_0x125638;return _0x4dea53;})[_0xdd1d('0x29')](respondWithFilteredResult(_0x5306aa,_0x5ef343))['catch'](handleError(_0x5306aa,null));};exports[_0xdd1d('0x47')]=function(_0x4f26b3,_0x3c4de1){var _0xbe8c9f={'raw':![],'where':{'id':_0x4f26b3['params']['id']}},_0xa728c1={};_0xa728c1['model']=_[_0xdd1d('0x32')](db['ZohoAccount']['rawAttributes']);_0xa728c1[_0xdd1d('0x33')]=_[_0xdd1d('0x32')](_0x4f26b3[_0xdd1d('0x33')]);_0xa728c1[_0xdd1d('0x34')]=_[_0xdd1d('0x37')](_0xa728c1[_0xdd1d('0x35')],_0xa728c1['query']);_0xbe8c9f[_0xdd1d('0x36')]=_['intersection'](_0xa728c1[_0xdd1d('0x35')],qs[_0xdd1d('0x38')](_0x4f26b3[_0xdd1d('0x33')][_0xdd1d('0x38')]));_0xbe8c9f[_0xdd1d('0x36')]=_0xbe8c9f[_0xdd1d('0x36')]['length']?_0xbe8c9f[_0xdd1d('0x36')]:_0xa728c1[_0xdd1d('0x35')];if(_0x4f26b3[_0xdd1d('0x33')]['includeAll']){_0xbe8c9f[_0xdd1d('0x44')]=[{'all':!![]}];}_0xbe8c9f=_[_0xdd1d('0x40')]({},_0xbe8c9f,_0x4f26b3[_0xdd1d('0x42')]);return db['ZohoAccount'][_0xdd1d('0x48')](_0xbe8c9f)[_0xdd1d('0x29')](handleEntityNotFound(_0x3c4de1,null))['then'](respondWithResult(_0x3c4de1,null))['catch'](handleError(_0x3c4de1,null));};exports[_0xdd1d('0x49')]=function(_0x5c97f2,_0x338e6c){return db[_0xdd1d('0x45')][_0xdd1d('0x49')](_0x5c97f2['body'],{})[_0xdd1d('0x29')](respondWithResult(_0x338e6c,0xc9))[_0xdd1d('0x4a')](handleError(_0x338e6c,null));};exports[_0xdd1d('0x28')]=function(_0x2ca057,_0x3ba205){if(_0x2ca057['body']['id']){delete _0x2ca057[_0xdd1d('0x4b')]['id'];}return db['ZohoAccount'][_0xdd1d('0x48')]({'where':{'id':_0x2ca057[_0xdd1d('0x4c')]['id']}})[_0xdd1d('0x29')](handleEntityNotFound(_0x3ba205,null))['then'](saveUpdates(_0x2ca057[_0xdd1d('0x4b')],null))[_0xdd1d('0x29')](respondWithResult(_0x3ba205,null))[_0xdd1d('0x4a')](handleError(_0x3ba205,null));};exports[_0xdd1d('0x2a')]=function(_0x3e1e2b,_0x28eaa3){return db[_0xdd1d('0x45')]['find']({'where':{'id':_0x3e1e2b[_0xdd1d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x28eaa3,null))[_0xdd1d('0x29')](removeEntity(_0x28eaa3,null))[_0xdd1d('0x4a')](handleError(_0x28eaa3,null));};exports[_0xdd1d('0x4d')]=function(_0x1cfc7e,_0x214990,_0x26f333){var _0x549ac5={};var _0x250b5a={};var _0x27e8ba;var _0x200666;return db[_0xdd1d('0x45')]['findOne']({'where':{'id':_0x1cfc7e[_0xdd1d('0x4c')]['id']}})[_0xdd1d('0x29')](handleEntityNotFound(_0x214990,null))['then'](function(_0x247642){if(_0x247642){_0x27e8ba=_0x247642;_0x250b5a[_0xdd1d('0x35')]=_[_0xdd1d('0x32')](db[_0xdd1d('0x4e')]['rawAttributes']);_0x250b5a[_0xdd1d('0x33')]=_[_0xdd1d('0x32')](_0x1cfc7e[_0xdd1d('0x33')]);_0x250b5a[_0xdd1d('0x34')]=_[_0xdd1d('0x37')](_0x250b5a[_0xdd1d('0x35')],_0x250b5a[_0xdd1d('0x33')]);_0x549ac5['attributes']=_[_0xdd1d('0x37')](_0x250b5a[_0xdd1d('0x35')],qs[_0xdd1d('0x38')](_0x1cfc7e[_0xdd1d('0x33')][_0xdd1d('0x38')]));_0x549ac5[_0xdd1d('0x36')]=_0x549ac5['attributes']['length']?_0x549ac5[_0xdd1d('0x36')]:_0x250b5a['model'];_0x549ac5[_0xdd1d('0x4f')]=qs['sort'](_0x1cfc7e['query']['sort']);_0x549ac5[_0xdd1d('0x3d')]=qs[_0xdd1d('0x34')](_['pick'](_0x1cfc7e[_0xdd1d('0x33')],_0x250b5a[_0xdd1d('0x34')]));if(_0x1cfc7e['query'][_0xdd1d('0x3f')]){_0x549ac5[_0xdd1d('0x3d')]=_['merge'](_0x549ac5['where'],{'$or':_[_0xdd1d('0x31')](_0x549ac5[_0xdd1d('0x36')],function(_0x32c180){var _0x35482f={};_0x35482f[_0x32c180]={'$like':'%'+_0x1cfc7e['query'][_0xdd1d('0x3f')]+'%'};return _0x35482f;})});}_0x549ac5=_[_0xdd1d('0x40')]({},_0x549ac5,_0x1cfc7e['options']);return _0x27e8ba['getConfigurations'](_0x549ac5);}})[_0xdd1d('0x29')](function(_0x4b6892){if(_0x4b6892){_0x200666=_0x4b6892[_0xdd1d('0x39')];if(!_0x1cfc7e[_0xdd1d('0x33')][_0xdd1d('0x3a')]('nolimit')){_0x549ac5[_0xdd1d('0x1f')]=qs[_0xdd1d('0x1f')](_0x1cfc7e[_0xdd1d('0x33')][_0xdd1d('0x1f')]);_0x549ac5['offset']=qs['offset'](_0x1cfc7e['query']['offset']);}return _0x27e8ba['getConfigurations'](_0x549ac5);}})[_0xdd1d('0x29')](function(_0xcc4c26){if(_0xcc4c26){return _0xcc4c26?{'count':_0x200666,'rows':_0xcc4c26}:null;}})[_0xdd1d('0x29')](respondWithResult(_0x214990,null))[_0xdd1d('0x4a')](handleError(_0x214990,null));};exports[_0xdd1d('0x50')]=function(_0x2b126d,_0x283ab7,_0xd32463){if(_0x2b126d['body']['id']){delete _0x2b126d['body']['id'];}return db['ZohoAccount'][_0xdd1d('0x51')]({'where':{'id':_0x2b126d['params']['id']}})[_0xdd1d('0x29')](handleEntityNotFound(_0x283ab7,null))[_0xdd1d('0x29')](function(_0xa53cdc){if(_0xa53cdc){_0x2b126d[_0xdd1d('0x4b')][_0xdd1d('0x52')]=_0xa53cdc['id'];_0x2b126d[_0xdd1d('0x4b')][_0xdd1d('0x53')]=integrations['getSubjects'](_0x2b126d[_0xdd1d('0x4b')][_0xdd1d('0x54')],_0x2b126d[_0xdd1d('0x4b')][_0xdd1d('0x55')]);_0x2b126d[_0xdd1d('0x4b')][_0xdd1d('0x56')]=integrations[_0xdd1d('0x57')](_0x2b126d['body'][_0xdd1d('0x54')],_0x2b126d[_0xdd1d('0x4b')][_0xdd1d('0x55')]);return db[_0xdd1d('0x4e')][_0xdd1d('0x49')](_0x2b126d[_0xdd1d('0x4b')],{'include':[{'model':db[_0xdd1d('0x58')],'as':'Subjects'},{'model':db[_0xdd1d('0x58')],'as':_0xdd1d('0x56')}]});}return null;})[_0xdd1d('0x29')](respondWithResult(_0x283ab7,null))[_0xdd1d('0x4a')](handleError(_0x283ab7,null));};function getAccessToken(_0x26c754){return new Promise(function(_0x3b3c55,_0x14a8fc){var _0x2b7167;switch(_0x26c754[_0xdd1d('0x59')]){case'US':_0x2b7167=_0xdd1d('0x5a');break;case'AU':_0x2b7167='https://accounts.zoho.com.au';break;case'EU':_0x2b7167=_0xdd1d('0x5b');break;case'IN':_0x2b7167=_0xdd1d('0x5c');break;case'CN':_0x2b7167='https://accounts.zoho.com.cn';break;default:_0x2b7167=_0xdd1d('0x5b');break;}var _0x4c2900={'method':_0xdd1d('0x5d'),'uri':_0x2b7167+'/oauth/v2/token','qs':{'refresh_token':_0x26c754[_0xdd1d('0x5e')],'client_id':_0x26c754[_0xdd1d('0x5f')],'client_secret':_0x26c754[_0xdd1d('0x60')],'grant_type':_0xdd1d('0x61')},'json':!![]};return rp(_0x4c2900)[_0xdd1d('0x29')](function(_0x489ed4){if(_0x489ed4[_0xdd1d('0x62')]){_0x3b3c55(_0x489ed4['access_token']);}else{_0x14a8fc(_0xdd1d('0x63'));}})[_0xdd1d('0x4a')](function(_0x2a4786){_0x14a8fc(_0x2a4786);});});}exports['getFields']=function(_0x50e924,_0x588e7f,_0x547eff){var _0x4f19b1,_0x40772b,_0x3bd9c3,_0xa5e525,_0x43a403;return db[_0xdd1d('0x45')][_0xdd1d('0x51')]({'where':{'id':_0x50e924['params']['id']},'attributes':['id',_0xdd1d('0x64'),_0xdd1d('0x59'),_0xdd1d('0x5f'),'clientSecret',_0xdd1d('0x65'),'code',_0xdd1d('0x5e')]})[_0xdd1d('0x29')](handleEntityNotFound(_0x588e7f,null))['then'](function(_0x275a1b){_0x43a403=_0x275a1b;_0x4f19b1=_0x43a403[_0xdd1d('0x64')];_0x40772b=_0x4f19b1==='zoho.eu'?'eu':_0xdd1d('0x66');_0x3bd9c3=_0x43a403[_0xdd1d('0x65')];var _0x3b2155=_0x3bd9c3[_0xdd1d('0x67')](-0x1);if(_0x3b2155==='/'||_0x3b2155==='\x5c'||_0x3b2155===':'){_0x3bd9c3=_0x3bd9c3[_0xdd1d('0x68')](0x0,_0x3bd9c3[_0xdd1d('0x69')](_0x3b2155));}if(!_0x43a403[_0xdd1d('0x5e')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x43a403);})[_0xdd1d('0x29')](function(_0x1840ed){if(_0x1840ed){return rp({'method':'GET','uri':util[_0xdd1d('0x6a')](_0xdd1d('0x6b'),_0x40772b),'qs':{'module':'Calls'},'headers':{'Authorization':_0xdd1d('0x6c')+_0x1840ed},'json':!![]});}})[_0xdd1d('0x29')](function(_0x3e8726){if(_0x3e8726){if(_0x3e8726['response']&&_0x3e8726[_0xdd1d('0x6d')]['error']){throw new Error(_0x3e8726[_0xdd1d('0x6d')][_0xdd1d('0x6e')][_0xdd1d('0x6f')]);}var _0x120df3=[];var _0x1630c5=[];var _0x4a96f4=['Owner',_0xdd1d('0x70'),_0xdd1d('0x71'),'WhoId',_0xdd1d('0x72'),_0xdd1d('0x73'),_0xdd1d('0x74'),_0xdd1d('0x75')];_0x1630c5=_[_0xdd1d('0x76')](_0x3e8726[_0xdd1d('0x38')],function(_0xb87ff){return _0x4a96f4[_0xdd1d('0x77')](_0xb87ff['api_name']);});for(var _0x35a1aa=0x0;_0x35a1aa<_0x1630c5[_0xdd1d('0x39')];_0x35a1aa++){if(_0x1630c5[_0x35a1aa][_0xdd1d('0x78')]===![]){_0x120df3[_0xdd1d('0x79')]({'id':_0x1630c5[_0x35a1aa]['id'],'name':_0x1630c5[_0x35a1aa]['display_label'],'custom':_0x1630c5[_0x35a1aa][_0xdd1d('0x7a')],'options':_0x1630c5[_0x35a1aa]['data_type']===_0xdd1d('0x7b')&&_0x1630c5[_0x35a1aa][_0xdd1d('0x7c')][_0xdd1d('0x39')]>-0x1?_[_0xdd1d('0x31')](_0x1630c5[_0x35a1aa]['pick_list_values'],function(_0x3f6012){return{'name':_0x3f6012,'value':_0x3f6012};}):[]});}}return{'count':_0x120df3[_0xdd1d('0x39')],'rows':_0x120df3};}else{return{'count':0x0,'rows':[]};}})[_0xdd1d('0x29')](respondWithResult(_0x588e7f,null))['catch'](function(_0x3bf72b){var _0x12d8b8=_0x50e924[_0xdd1d('0x33')][_0xdd1d('0x7d')]?0x1f4:_0x3bf72b[_0xdd1d('0x7e')]||0x1f4;logger[_0xdd1d('0x6e')](_0xdd1d('0x7f'),_0xdd1d('0x80'),_0x12d8b8,JSON[_0xdd1d('0x81')](_0x3bf72b));delete _0x3bf72b[_0xdd1d('0x2c')];if(_0x12d8b8===0x191){_0x12d8b8=0x190;}_0x588e7f[_0xdd1d('0x1d')](_0x12d8b8)[_0xdd1d('0x2d')](_0x50e924[_0xdd1d('0x33')][_0xdd1d('0x7d')]?{'message':'Wrong\x20credentials','statusCode':_0x3bf72b[_0xdd1d('0x7e')]}:_0x3bf72b);});};
\ No newline at end of file
index c07f185..dbf316c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ba0=['ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','substring','https://accounts.zoho.com.au','info','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch','util','../../config/logger','bluebird','path','rimraf','./intZohoAccount.attributes','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','clientId','code','host','slice','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientSecret','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','format'];(function(_0x311351,_0x28badd){var _0x48be8b=function(_0x1f16d5){while(--_0x1f16d5){_0x311351['push'](_0x311351['shift']());}};_0x48be8b(++_0x28badd);}(_0x2ba0,0x1dd));var _0x02ba=function(_0x18002a,_0x2280ab){_0x18002a=_0x18002a-0x0;var _0x402533=_0x2ba0[_0x18002a];return _0x402533;};'use strict';var _=require('lodash');var util=require(_0x02ba('0x0'));var logger=require(_0x02ba('0x1'))('api');var moment=require('moment');var BPromise=require(_0x02ba('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x02ba('0x3'));var rimraf=require(_0x02ba('0x4'));var config=require('../../config/environment');var attributes=require(_0x02ba('0x5'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x3a924d,_0x4e1bfc){return _0x3a924d[_0x02ba('0x6')](_0x02ba('0x7'),attributes,{'tableName':_0x02ba('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5817f9,_0x392ea0,_0x221a9a){if(_0x5817f9[_0x02ba('0x9')]('zone')||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xa'))||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xb'))||_0x5817f9[_0x02ba('0x9')]('clientSecret')||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xc'))||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xd'))){var _0xc12449,_0x42318c;_0xc12449=_0x5817f9[_0x02ba('0xa')];var _0x476266=_0xc12449[_0x02ba('0xe')](-0x1);if(_0x476266==='/'||_0x476266==='\x5c'||_0x476266===':'){_0xc12449=_0xc12449['substring'](0x0,_0xc12449[_0x02ba('0xf')](_0x476266));}switch(_0x5817f9[_0x02ba('0x10')]){case'US':_0x42318c=_0x02ba('0x11');break;case'AU':_0x42318c='https://accounts.zoho.com.au';break;case'IN':_0x42318c='https://accounts.zoho.in';break;case'CN':_0x42318c=_0x02ba('0x12');break;default:_0x42318c=_0x02ba('0x13');break;}var _0x94abab={'method':_0x02ba('0x14'),'uri':_0x42318c+_0x02ba('0x15'),'form':{'grant_type':_0x02ba('0x16'),'client_id':_0x5817f9[_0x02ba('0xb')],'client_secret':_0x5817f9[_0x02ba('0x17')],'redirect_uri':_0x5817f9[_0x02ba('0xa')],'code':_0x5817f9[_0x02ba('0xc')]},'headers':{'Content-Type':_0x02ba('0x18')}};return rp(_0x94abab)[_0x02ba('0x19')](function(_0x2a9557){var _0x3e1562=JSON[_0x02ba('0x1a')](_0x2a9557);if(_0x3e1562[_0x02ba('0x1b')]){_0x5817f9[_0x02ba('0x1c')]=_0x3e1562[_0x02ba('0x1b')];logger['info'](util[_0x02ba('0x1d')](_0x02ba('0x1e'),_0x5817f9[_0x02ba('0x1f')],_0x5817f9['id']));}else{logger['error'](util[_0x02ba('0x1d')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5817f9['name'],_0x5817f9['id']),util[_0x02ba('0x20')](_0x3e1562,{'showHidden':![],'depth':null}));}return _0x221a9a(null,_0x392ea0);})['catch'](function(_0x4643e6){logger['error'](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5817f9['name'],_0x5817f9['id']),util[_0x02ba('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x221a9a(_0x4643e6);});}else{return _0x221a9a(null,_0x392ea0);}},'beforeUpdate':function(_0x3145f2,_0x29f1b6,_0x33b50e){if(_0x3145f2[_0x02ba('0x9')]('zone')||_0x3145f2[_0x02ba('0x9')](_0x02ba('0xa'))||_0x3145f2['changed']('clientId')||_0x3145f2[_0x02ba('0x9')](_0x02ba('0x17'))||_0x3145f2[_0x02ba('0x9')](_0x02ba('0xc'))||_0x3145f2['changed'](_0x02ba('0xd'))){var _0x437ac5,_0x5362bd;_0x437ac5=_0x3145f2['serverUrl'];var _0x15cece=_0x437ac5[_0x02ba('0xe')](-0x1);if(_0x15cece==='/'||_0x15cece==='\x5c'||_0x15cece===':'){_0x437ac5=_0x437ac5[_0x02ba('0x21')](0x0,_0x437ac5[_0x02ba('0xf')](_0x15cece));}switch(_0x3145f2[_0x02ba('0x10')]){case'US':_0x5362bd=_0x02ba('0x11');break;case'AU':_0x5362bd=_0x02ba('0x22');break;case'IN':_0x5362bd='https://accounts.zoho.in';break;case'CN':_0x5362bd=_0x02ba('0x12');break;default:_0x5362bd=_0x02ba('0x13');break;}var _0x440d62={'method':_0x02ba('0x14'),'uri':_0x5362bd+_0x02ba('0x15'),'form':{'grant_type':_0x02ba('0x16'),'client_id':_0x3145f2[_0x02ba('0xb')],'client_secret':_0x3145f2[_0x02ba('0x17')],'redirect_uri':_0x3145f2['serverUrl'],'code':_0x3145f2[_0x02ba('0xc')]},'headers':{'Content-Type':_0x02ba('0x18')}};return rp(_0x440d62)[_0x02ba('0x19')](function(_0x373e15){var _0x2e0427=JSON[_0x02ba('0x1a')](_0x373e15);if(_0x2e0427[_0x02ba('0x1b')]){_0x3145f2['refreshToken']=_0x2e0427[_0x02ba('0x1b')];logger[_0x02ba('0x23')](util[_0x02ba('0x1d')](_0x02ba('0x1e'),_0x3145f2['name'],_0x3145f2['id']));}else{logger[_0x02ba('0x24')](util[_0x02ba('0x1d')](_0x02ba('0x25'),_0x3145f2[_0x02ba('0x1f')],_0x3145f2['id']),util[_0x02ba('0x20')](_0x2e0427,{'showHidden':![],'depth':null}));}return _0x33b50e(null,_0x29f1b6);})[_0x02ba('0x26')](function(_0x98b3b8){logger['error'](util[_0x02ba('0x1d')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3145f2[_0x02ba('0x1f')],_0x3145f2['id']),util[_0x02ba('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x33b50e(_0x98b3b8);});}else{return _0x33b50e(null,_0x29f1b6);}}}});};
\ No newline at end of file
+var _0x052e=['application/x-www-form-urlencoded','then','parse','refresh_token','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intZohoAccount.attributes','exports','define','ZohoAccount','changed','serverUrl','clientId','clientSecret','code','host','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','error','lastIndexOf','zone','https://accounts.zoho.in','POST'];(function(_0x343b09,_0x2c8aac){var _0x1215d9=function(_0x189201){while(--_0x189201){_0x343b09['push'](_0x343b09['shift']());}};_0x1215d9(++_0x2c8aac);}(_0x052e,0x14c));var _0xe052=function(_0x5cb9fb,_0x2d5c2d){_0x5cb9fb=_0x5cb9fb-0x0;var _0x414c1f=_0x052e[_0x5cb9fb];return _0x414c1f;};'use strict';var _=require('lodash');var util=require(_0xe052('0x0'));var logger=require(_0xe052('0x1'))(_0xe052('0x2'));var moment=require('moment');var BPromise=require(_0xe052('0x3'));var rp=require(_0xe052('0x4'));var fs=require('fs');var path=require(_0xe052('0x5'));var rimraf=require(_0xe052('0x6'));var config=require('../../config/environment');var attributes=require(_0xe052('0x7'));var integrations=require('../../components/integrations/configuration');module[_0xe052('0x8')]=function(_0x4e0f08,_0x379550){return _0x4e0f08[_0xe052('0x9')](_0xe052('0xa'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5325f4,_0x4e1392,_0x2e0ba6){if(_0x5325f4[_0xe052('0xb')]('zone')||_0x5325f4[_0xe052('0xb')](_0xe052('0xc'))||_0x5325f4[_0xe052('0xb')](_0xe052('0xd'))||_0x5325f4[_0xe052('0xb')](_0xe052('0xe'))||_0x5325f4[_0xe052('0xb')](_0xe052('0xf'))||_0x5325f4[_0xe052('0xb')](_0xe052('0x10'))){var _0xbd5b56,_0x2f2fff;_0xbd5b56=_0x5325f4['serverUrl'];var _0x38b800=_0xbd5b56[_0xe052('0x11')](-0x1);if(_0x38b800==='/'||_0x38b800==='\x5c'||_0x38b800===':'){_0xbd5b56=_0xbd5b56[_0xe052('0x12')](0x0,_0xbd5b56['lastIndexOf'](_0x38b800));}switch(_0x5325f4['zone']){case'US':_0x2f2fff=_0xe052('0x13');break;case'AU':_0x2f2fff=_0xe052('0x14');break;case'IN':_0x2f2fff='https://accounts.zoho.in';break;case'CN':_0x2f2fff=_0xe052('0x15');break;default:_0x2f2fff=_0xe052('0x16');break;}var _0x4abde4={'method':'POST','uri':_0x2f2fff+_0xe052('0x17'),'form':{'grant_type':_0xe052('0x18'),'client_id':_0x5325f4[_0xe052('0xd')],'client_secret':_0x5325f4[_0xe052('0xe')],'redirect_uri':_0x5325f4['serverUrl'],'code':_0x5325f4[_0xe052('0xf')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x4abde4)['then'](function(_0x3b62c2){var _0x167ac3=JSON['parse'](_0x3b62c2);if(_0x167ac3['refresh_token']){_0x5325f4[_0xe052('0x19')]=_0x167ac3['refresh_token'];logger[_0xe052('0x1a')](util[_0xe052('0x1b')](_0xe052('0x1c'),_0x5325f4[_0xe052('0x1d')],_0x5325f4['id']));}else{logger['error'](util['format'](_0xe052('0x1e'),_0x5325f4[_0xe052('0x1d')],_0x5325f4['id']),util[_0xe052('0x1f')](_0x167ac3,{'showHidden':![],'depth':null}));}return _0x2e0ba6(null,_0x4e1392);})['catch'](function(_0x5c903b){logger[_0xe052('0x20')](util[_0xe052('0x1b')](_0xe052('0x1e'),_0x5325f4['name'],_0x5325f4['id']),util[_0xe052('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0x2e0ba6(_0x5c903b);});}else{return _0x2e0ba6(null,_0x4e1392);}},'beforeUpdate':function(_0x340f84,_0x122c78,_0x39e015){if(_0x340f84['changed']('zone')||_0x340f84[_0xe052('0xb')](_0xe052('0xc'))||_0x340f84[_0xe052('0xb')](_0xe052('0xd'))||_0x340f84[_0xe052('0xb')](_0xe052('0xe'))||_0x340f84[_0xe052('0xb')]('code')||_0x340f84[_0xe052('0xb')](_0xe052('0x10'))){var _0x2d1b7a,_0x80e723;_0x2d1b7a=_0x340f84[_0xe052('0xc')];var _0x23ddc3=_0x2d1b7a['slice'](-0x1);if(_0x23ddc3==='/'||_0x23ddc3==='\x5c'||_0x23ddc3===':'){_0x2d1b7a=_0x2d1b7a[_0xe052('0x12')](0x0,_0x2d1b7a[_0xe052('0x21')](_0x23ddc3));}switch(_0x340f84[_0xe052('0x22')]){case'US':_0x80e723=_0xe052('0x13');break;case'AU':_0x80e723=_0xe052('0x14');break;case'IN':_0x80e723=_0xe052('0x23');break;case'CN':_0x80e723='https://accounts.zoho.com.cn';break;default:_0x80e723=_0xe052('0x16');break;}var _0x8151f8={'method':_0xe052('0x24'),'uri':_0x80e723+_0xe052('0x17'),'form':{'grant_type':_0xe052('0x18'),'client_id':_0x340f84[_0xe052('0xd')],'client_secret':_0x340f84[_0xe052('0xe')],'redirect_uri':_0x340f84['serverUrl'],'code':_0x340f84[_0xe052('0xf')]},'headers':{'Content-Type':_0xe052('0x25')}};return rp(_0x8151f8)[_0xe052('0x26')](function(_0x1a6cde){var _0x22d761=JSON[_0xe052('0x27')](_0x1a6cde);if(_0x22d761[_0xe052('0x28')]){_0x340f84['refreshToken']=_0x22d761[_0xe052('0x28')];logger[_0xe052('0x1a')](util[_0xe052('0x1b')](_0xe052('0x1c'),_0x340f84['name'],_0x340f84['id']));}else{logger[_0xe052('0x20')](util[_0xe052('0x1b')](_0xe052('0x1e'),_0x340f84[_0xe052('0x1d')],_0x340f84['id']),util[_0xe052('0x1f')](_0x22d761,{'showHidden':![],'depth':null}));}return _0x39e015(null,_0x122c78);})['catch'](function(_0x10f170){logger['error'](util['format'](_0xe052('0x1e'),_0x340f84[_0xe052('0x1d')],_0x340f84['id']),util[_0xe052('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0x39e015(_0x10f170);});}else{return _0x39e015(null,_0x122c78);}}}});};
\ No newline at end of file
index abf0eca..8979172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c91=['raw','where','attributes','limit','include','map','model','GetZohoAccount','debug','ShowZohoAccount','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','ZohoAccount','options'];(function(_0xce5b7d,_0x55fbfa){var _0x32df71=function(_0xcf68ab){while(--_0xcf68ab){_0xce5b7d['push'](_0xce5b7d['shift']());}};_0x32df71(++_0x55fbfa);}(_0x3c91,0x1af));var _0x13c9=function(_0x1c746c,_0x42800b){_0x1c746c=_0x1c746c-0x0;var _0x246d19=_0x3c91[_0x1c746c];return _0x246d19;};'use strict';var _=require(_0x13c9('0x0'));var util=require(_0x13c9('0x1'));var moment=require(_0x13c9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c9('0x3'));var db=require(_0x13c9('0x4'))['db'];var utils=require(_0x13c9('0x5'));var logger=require('../../config/logger')(_0x13c9('0x6'));var config=require(_0x13c9('0x7'));var jayson=require(_0x13c9('0x8'));var client=jayson[_0x13c9('0x9')][_0x13c9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c4332,_0x58b610,_0x44243f){return new BPromise(function(_0x196c2a,_0x5fd23){return client[_0x13c9('0xb')](_0x4c4332,_0x44243f)[_0x13c9('0xc')](function(_0x5370dd){logger['info'](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));logger['debug']('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x58b610,_0x13c9('0xe'),JSON[_0x13c9('0xf')](_0x5370dd));if(_0x5370dd[_0x13c9('0x10')]){if(_0x5370dd[_0x13c9('0x10')][_0x13c9('0x11')]===0x1f4){logger[_0x13c9('0x10')](_0x13c9('0xd'),_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x5fd23(_0x5370dd['error']['message']);}logger['error']('ZohoAccount,\x20%s,\x20%s',_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x196c2a(_0x5370dd[_0x13c9('0x10')]['message']);}else{logger[_0x13c9('0x13')](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));_0x196c2a(_0x5370dd[_0x13c9('0x14')][_0x13c9('0x12')]);}})[_0x13c9('0x15')](function(_0x238952){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x58b610,_0x238952);_0x5fd23(_0x238952);});});}exports['GetZohoAccount']=function(_0xd08fc0){var _0x1a6c06=this;return new Promise(function(_0x1dcaf7,_0x339e7f){return db[_0x13c9('0x16')]['findAll']({'raw':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x18')]===undefined?!![]:![]:!![],'where':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x19')]||null:null,'attributes':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0['options'][_0x13c9('0x1a')]||null:null,'limit':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x1b')]||null:null,'include':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x1c')],function(_0x5dfd9d){return{'model':db[_0x5dfd9d[_0x13c9('0x1e')]],'as':_0x5dfd9d['as'],'attributes':_0x5dfd9d[_0x13c9('0x1a')],'include':_0x5dfd9d[_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x5dfd9d[_0x13c9('0x1c')],function(_0x55b3d9){return{'model':db[_0x55b3d9[_0x13c9('0x1e')]],'as':_0x55b3d9['as'],'attributes':_0x55b3d9['attributes'],'include':_0x55b3d9['include']?_[_0x13c9('0x1d')](_0x55b3d9[_0x13c9('0x1c')],function(_0x3ca92a){return{'model':db[_0x3ca92a[_0x13c9('0x1e')]],'as':_0x3ca92a['as'],'attributes':_0x3ca92a[_0x13c9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x13c9('0xc')](function(_0x3fcf1c){logger[_0x13c9('0x13')](_0x13c9('0x1f'),_0xd08fc0);logger[_0x13c9('0x20')]('GetZohoAccount',_0xd08fc0,JSON[_0x13c9('0xf')](_0x3fcf1c));_0x1dcaf7(_0x3fcf1c);})[_0x13c9('0x15')](function(_0x5d8997){logger[_0x13c9('0x10')](_0x13c9('0x1f'),_0x5d8997[_0x13c9('0x12')],_0xd08fc0);_0x339e7f(_0x1a6c06['error'](0x1f4,_0x5d8997['message']));});});};exports[_0x13c9('0x21')]=function(_0x35249b){var _0x1a1710=this;return new Promise(function(_0x4cb64a,_0x309606){return db[_0x13c9('0x16')][_0x13c9('0x22')]({'raw':_0x35249b[_0x13c9('0x17')]?_0x35249b[_0x13c9('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x35249b[_0x13c9('0x17')]?_0x35249b[_0x13c9('0x17')][_0x13c9('0x19')]||null:null,'attributes':_0x35249b[_0x13c9('0x17')]?_0x35249b[_0x13c9('0x17')][_0x13c9('0x1a')]||null:null,'include':_0x35249b[_0x13c9('0x17')]?_0x35249b['options'][_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x35249b['options'][_0x13c9('0x1c')],function(_0x119b60){return{'model':db[_0x119b60[_0x13c9('0x1e')]],'as':_0x119b60['as'],'attributes':_0x119b60[_0x13c9('0x1a')],'include':_0x119b60[_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x119b60['include'],function(_0x4db35f){return{'model':db[_0x4db35f[_0x13c9('0x1e')]],'as':_0x4db35f['as'],'attributes':_0x4db35f[_0x13c9('0x1a')],'include':_0x4db35f[_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x4db35f['include'],function(_0x38d479){return{'model':db[_0x38d479[_0x13c9('0x1e')]],'as':_0x38d479['as'],'attributes':_0x38d479['attributes']};}):[]};}):[]};}):[]:[]})[_0x13c9('0xc')](function(_0x1cfdfc){logger[_0x13c9('0x13')]('ShowZohoAccount',_0x35249b);logger[_0x13c9('0x20')](_0x13c9('0x21'),_0x35249b,JSON[_0x13c9('0xf')](_0x1cfdfc));_0x4cb64a(_0x1cfdfc);})[_0x13c9('0x15')](function(_0x4e6cc3){logger['error'](_0x13c9('0x21'),_0x4e6cc3[_0x13c9('0x12')],_0x35249b);_0x309606(_0x1a1710['error'](0x1f4,_0x4e6cc3[_0x13c9('0x12')]));});});};
\ No newline at end of file
+var _0xe2ab=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','info','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount','options','attributes','limit','include','map','model','then','ShowZohoAccount','find','raw','lodash','util'];(function(_0x49bdc4,_0x1e2507){var _0x1f7437=function(_0x25a9f9){while(--_0x25a9f9){_0x49bdc4['push'](_0x49bdc4['shift']());}};_0x1f7437(++_0x1e2507);}(_0xe2ab,0xc4));var _0xbe2a=function(_0x2cfeff,_0x49afb3){_0x2cfeff=_0x2cfeff-0x0;var _0x325d72=_0xe2ab[_0x2cfeff];return _0x325d72;};'use strict';var _=require(_0xbe2a('0x0'));var util=require(_0xbe2a('0x1'));var moment=require(_0xbe2a('0x2'));var BPromise=require(_0xbe2a('0x3'));var rs=require(_0xbe2a('0x4'));var fs=require('fs');var Redis=require(_0xbe2a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe2a('0x6'));var logger=require(_0xbe2a('0x7'))(_0xbe2a('0x8'));var config=require(_0xbe2a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xbe2a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f504b,_0x58b8f1,_0x5a8a5d){return new BPromise(function(_0xfccbff,_0x232194){return client['request'](_0x2f504b,_0x5a8a5d)['then'](function(_0x83d775){logger[_0xbe2a('0xb')]('ZohoAccount,\x20%s,\x20%s',_0x58b8f1,_0xbe2a('0xc'));logger[_0xbe2a('0xd')](_0xbe2a('0xe'),_0x58b8f1,_0xbe2a('0xc'),JSON[_0xbe2a('0xf')](_0x83d775));if(_0x83d775['error']){if(_0x83d775['error']['code']===0x1f4){logger[_0xbe2a('0x10')](_0xbe2a('0x11'),_0x58b8f1,_0x83d775[_0xbe2a('0x10')][_0xbe2a('0x12')]);return _0x232194(_0x83d775[_0xbe2a('0x10')]['message']);}logger[_0xbe2a('0x10')](_0xbe2a('0x11'),_0x58b8f1,_0x83d775[_0xbe2a('0x10')]['message']);return _0xfccbff(_0x83d775[_0xbe2a('0x10')][_0xbe2a('0x12')]);}else{logger[_0xbe2a('0xb')](_0xbe2a('0x11'),_0x58b8f1,_0xbe2a('0xc'));_0xfccbff(_0x83d775[_0xbe2a('0x13')][_0xbe2a('0x12')]);}})[_0xbe2a('0x14')](function(_0x4395fe){logger['error'](_0xbe2a('0x11'),_0x58b8f1,_0x4395fe);_0x232194(_0x4395fe);});});}exports[_0xbe2a('0x15')]=function(_0x39117c){var _0x330274=this;return new Promise(function(_0x54e6fb,_0xea5332){return db[_0xbe2a('0x16')]['findAll']({'raw':_0x39117c['options']?_0x39117c[_0xbe2a('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x39117c[_0xbe2a('0x17')]?_0x39117c[_0xbe2a('0x17')]['where']||null:null,'attributes':_0x39117c[_0xbe2a('0x17')]?_0x39117c['options'][_0xbe2a('0x18')]||null:null,'limit':_0x39117c[_0xbe2a('0x17')]?_0x39117c[_0xbe2a('0x17')][_0xbe2a('0x19')]||null:null,'include':_0x39117c['options']?_0x39117c[_0xbe2a('0x17')][_0xbe2a('0x1a')]?_[_0xbe2a('0x1b')](_0x39117c['options'][_0xbe2a('0x1a')],function(_0x2c63c9){return{'model':db[_0x2c63c9[_0xbe2a('0x1c')]],'as':_0x2c63c9['as'],'attributes':_0x2c63c9[_0xbe2a('0x18')],'include':_0x2c63c9[_0xbe2a('0x1a')]?_['map'](_0x2c63c9['include'],function(_0x330d65){return{'model':db[_0x330d65[_0xbe2a('0x1c')]],'as':_0x330d65['as'],'attributes':_0x330d65[_0xbe2a('0x18')],'include':_0x330d65[_0xbe2a('0x1a')]?_['map'](_0x330d65[_0xbe2a('0x1a')],function(_0x5a6442){return{'model':db[_0x5a6442[_0xbe2a('0x1c')]],'as':_0x5a6442['as'],'attributes':_0x5a6442['attributes']};}):[]};}):[]};}):[]:[]})[_0xbe2a('0x1d')](function(_0x488baa){logger[_0xbe2a('0xb')](_0xbe2a('0x15'),_0x39117c);logger[_0xbe2a('0xd')](_0xbe2a('0x15'),_0x39117c,JSON[_0xbe2a('0xf')](_0x488baa));_0x54e6fb(_0x488baa);})[_0xbe2a('0x14')](function(_0x34b7df){logger[_0xbe2a('0x10')](_0xbe2a('0x15'),_0x34b7df['message'],_0x39117c);_0xea5332(_0x330274[_0xbe2a('0x10')](0x1f4,_0x34b7df['message']));});});};exports[_0xbe2a('0x1e')]=function(_0xc15a2a){var _0x309bfc=this;return new Promise(function(_0x1b38bf,_0x5838a4){return db[_0xbe2a('0x16')][_0xbe2a('0x1f')]({'raw':_0xc15a2a[_0xbe2a('0x17')]?_0xc15a2a[_0xbe2a('0x17')][_0xbe2a('0x20')]===undefined?!![]:![]:!![],'where':_0xc15a2a[_0xbe2a('0x17')]?_0xc15a2a['options']['where']||null:null,'attributes':_0xc15a2a['options']?_0xc15a2a['options'][_0xbe2a('0x18')]||null:null,'include':_0xc15a2a[_0xbe2a('0x17')]?_0xc15a2a[_0xbe2a('0x17')][_0xbe2a('0x1a')]?_['map'](_0xc15a2a['options']['include'],function(_0x37fb15){return{'model':db[_0x37fb15[_0xbe2a('0x1c')]],'as':_0x37fb15['as'],'attributes':_0x37fb15[_0xbe2a('0x18')],'include':_0x37fb15['include']?_[_0xbe2a('0x1b')](_0x37fb15[_0xbe2a('0x1a')],function(_0x41b302){return{'model':db[_0x41b302[_0xbe2a('0x1c')]],'as':_0x41b302['as'],'attributes':_0x41b302[_0xbe2a('0x18')],'include':_0x41b302[_0xbe2a('0x1a')]?_[_0xbe2a('0x1b')](_0x41b302[_0xbe2a('0x1a')],function(_0x494bd1){return{'model':db[_0x494bd1[_0xbe2a('0x1c')]],'as':_0x494bd1['as'],'attributes':_0x494bd1[_0xbe2a('0x18')]};}):[]};}):[]};}):[]:[]})[_0xbe2a('0x1d')](function(_0x4836c6){logger[_0xbe2a('0xb')]('ShowZohoAccount',_0xc15a2a);logger[_0xbe2a('0xd')](_0xbe2a('0x1e'),_0xc15a2a,JSON[_0xbe2a('0xf')](_0x4836c6));_0x1b38bf(_0x4836c6);})[_0xbe2a('0x14')](function(_0x284131){logger[_0xbe2a('0x10')](_0xbe2a('0x1e'),_0x284131[_0xbe2a('0x12')],_0xc15a2a);_0x5838a4(_0x309bfc['error'](0x1f4,_0x284131[_0xbe2a('0x12')]));});});};
\ No newline at end of file
index 17b3f15..63a683b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8769=['multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','show','/:id/fields','getSubjects','/:id/descriptions','post','create','put','/:id','update','delete','exports'];(function(_0x16f31f,_0x155c78){var _0x141a2a=function(_0xaed35c){while(--_0xaed35c){_0x16f31f['push'](_0x16f31f['shift']());}};_0x141a2a(++_0x155c78);}(_0x8769,0x1ce));var _0x9876=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x8769[_0x819464];return _0x49dcc0;};'use strict';var multer=require(_0x9876('0x0'));var util=require(_0x9876('0x1'));var path=require(_0x9876('0x2'));var timeout=require(_0x9876('0x3'));var express=require(_0x9876('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9876('0x5'));var interaction=require(_0x9876('0x6'));var config=require(_0x9876('0x7'));var controller=require(_0x9876('0x8'));router[_0x9876('0x9')]('/',auth[_0x9876('0xa')](),controller['index']);router['get']('/:id',auth[_0x9876('0xa')](),controller[_0x9876('0xb')]);router['get'](_0x9876('0xc'),auth[_0x9876('0xa')](),controller['getFields']);router[_0x9876('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x9876('0xd')]);router[_0x9876('0x9')](_0x9876('0xe'),auth[_0x9876('0xa')](),controller['getDescriptions']);router[_0x9876('0xf')]('/',auth['isAuthenticated'](),controller[_0x9876('0x10')]);router[_0x9876('0x11')](_0x9876('0x12'),auth[_0x9876('0xa')](),controller[_0x9876('0x13')]);router[_0x9876('0x14')]('/:id',auth[_0x9876('0xa')](),controller['destroy']);module[_0x9876('0x15')]=router;
\ No newline at end of file
+var _0xaccf=['fs-extra','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','getSubjects','/:id/descriptions','post','create','put','update','delete','destroy','exports','multer','util','express'];(function(_0x433ae0,_0x209a59){var _0x7b57dc=function(_0x10ad47){while(--_0x10ad47){_0x433ae0['push'](_0x433ae0['shift']());}};_0x7b57dc(++_0x209a59);}(_0xaccf,0xb1));var _0xfacc=function(_0x1c7860,_0x3af082){_0x1c7860=_0x1c7860-0x0;var _0xf230b4=_0xaccf[_0x1c7860];return _0xf230b4;};'use strict';var multer=require(_0xfacc('0x0'));var util=require(_0xfacc('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfacc('0x2'));var router=express['Router']();var fs_extra=require(_0xfacc('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfacc('0x4'));router[_0xfacc('0x5')]('/',auth[_0xfacc('0x6')](),controller[_0xfacc('0x7')]);router[_0xfacc('0x5')](_0xfacc('0x8'),auth[_0xfacc('0x6')](),controller[_0xfacc('0x9')]);router[_0xfacc('0x5')]('/:id/fields',auth[_0xfacc('0x6')](),controller[_0xfacc('0xa')]);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0xfacc('0xb')]);router['get'](_0xfacc('0xc'),auth[_0xfacc('0x6')](),controller['getDescriptions']);router[_0xfacc('0xd')]('/',auth[_0xfacc('0x6')](),controller[_0xfacc('0xe')]);router[_0xfacc('0xf')](_0xfacc('0x8'),auth[_0xfacc('0x6')](),controller[_0xfacc('0x10')]);router[_0xfacc('0x11')](_0xfacc('0x8'),auth['isAuthenticated'](),controller[_0xfacc('0x12')]);module[_0xfacc('0x13')]=router;
\ No newline at end of file
index 146dc15..5564a23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43bf=['contact','lead','contact_lead','exports','STRING','ENUM'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x43bf,0x81));var _0xf43b=function(_0x1ac094,_0x2e2490){_0x1ac094=_0x1ac094-0x0;var _0x5d3d0e=_0x43bf[_0x1ac094];return _0x5d3d0e;};'use strict';var Sequelize=require('sequelize');module[_0xf43b('0x0')]={'name':{'type':Sequelize[_0xf43b('0x1')]},'moduleCreate':{'type':Sequelize[_0xf43b('0x2')]('lead',_0xf43b('0x3'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xf43b('0x2')]('contact_lead','contact',_0xf43b('0x4')),'defaultValue':_0xf43b('0x5')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf30a=['contact','contact_lead','sequelize','exports','STRING','lead','nothing','ENUM'];(function(_0xbf4919,_0x5d652e){var _0x1b074a=function(_0x4c95da){while(--_0x4c95da){_0xbf4919['push'](_0xbf4919['shift']());}};_0x1b074a(++_0x5d652e);}(_0xf30a,0xca));var _0xaf30=function(_0x357209,_0x1d14af){_0x357209=_0x357209-0x0;var _0x5a5f83=_0xf30a[_0x357209];return _0x5a5f83;};'use strict';var Sequelize=require(_0xaf30('0x0'));module[_0xaf30('0x1')]={'name':{'type':Sequelize[_0xaf30('0x2')]},'moduleCreate':{'type':Sequelize['ENUM'](_0xaf30('0x3'),'contact',_0xaf30('0x4')),'defaultValue':_0xaf30('0x3')},'moduleSearch':{'type':Sequelize[_0xaf30('0x5')]('contact_lead',_0xaf30('0x6'),_0xaf30('0x3')),'defaultValue':_0xaf30('0x7')},'description':{'type':Sequelize[_0xaf30('0x2')]}};
\ No newline at end of file
index 5c921a2..3bd796c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9d4=['bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','merge','VIRTUAL','filter','options','where','ZohoConfiguration','includeAll','include','findAll','rows','catch','show','params','find','create','body','findOne','pick','getFields','order','getSubjects','hasOwnProperty','getDescriptions','ZohoField','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xe9d4,0x190));var _0x4e9d=function(_0x13bea0,_0x210a0c){_0x13bea0=_0x13bea0-0x0;var _0x3f12df=_0xe9d4[_0x13bea0];return _0x3f12df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4e9d('0x0'));var zipdir=require(_0x4e9d('0x1'));var jsonpatch=require(_0x4e9d('0x2'));var rp=require(_0x4e9d('0x3'));var moment=require(_0x4e9d('0x4'));var BPromise=require(_0x4e9d('0x5'));var Mustache=require(_0x4e9d('0x6'));var util=require('util');var path=require(_0x4e9d('0x7'));var sox=require('sox');var csv=require(_0x4e9d('0x8'));var ejs=require(_0x4e9d('0x9'));var fs=require('fs');var fs_extra=require(_0x4e9d('0xa'));var _=require(_0x4e9d('0xb'));var squel=require(_0x4e9d('0xc'));var crypto=require('crypto');var jsforce=require(_0x4e9d('0xd'));var deskjs=require(_0x4e9d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4e9d('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4e9d('0x10'));var qs=require(_0x4e9d('0x11'));var as=require(_0x4e9d('0x12'));var hardwareService=require(_0x4e9d('0x13'));var logger=require(_0x4e9d('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x4e9d('0x15'));var licenseUtil=require(_0x4e9d('0x16'));var db=require(_0x4e9d('0x17'))['db'];function respondWithStatusCode(_0x549748,_0x3df41b){_0x3df41b=_0x3df41b||0xcc;return function(_0x388c3d){if(_0x388c3d){return _0x549748[_0x4e9d('0x18')](_0x3df41b);}return _0x549748[_0x4e9d('0x19')](_0x3df41b)[_0x4e9d('0x1a')]();};}function respondWithResult(_0x357b47,_0x189a30){_0x189a30=_0x189a30||0xc8;return function(_0x374d32){if(_0x374d32){return _0x357b47[_0x4e9d('0x19')](_0x189a30)['json'](_0x374d32);}};}function respondWithFilteredResult(_0x57e2e3,_0x58fc6d){return function(_0x5728fb){if(_0x5728fb){var _0xee1ea=typeof _0x58fc6d[_0x4e9d('0x1b')]==='undefined'&&typeof _0x58fc6d[_0x4e9d('0x1c')]===_0x4e9d('0x1d');var _0x2639c0=_0x5728fb[_0x4e9d('0x1e')];var _0x260756=_0xee1ea?0x0:_0x58fc6d[_0x4e9d('0x1b')];var _0x2bf321=_0xee1ea?_0x5728fb['count']:_0x58fc6d[_0x4e9d('0x1b')]+_0x58fc6d[_0x4e9d('0x1c')];var _0x3f5253;if(_0x2bf321>=_0x2639c0){_0x2bf321=_0x2639c0;_0x3f5253=0xc8;}else{_0x3f5253=0xce;}_0x57e2e3[_0x4e9d('0x19')](_0x3f5253);return _0x57e2e3['set'](_0x4e9d('0x1f'),_0x260756+'-'+_0x2bf321+'/'+_0x2639c0)[_0x4e9d('0x20')](_0x5728fb);}return null;};}function patchUpdates(_0x47e243){return function(_0xb84926){try{jsonpatch[_0x4e9d('0x21')](_0xb84926,_0x47e243,!![]);}catch(_0x3e9084){return BPromise['reject'](_0x3e9084);}return _0xb84926[_0x4e9d('0x22')]();};}function saveUpdates(_0x27f7d3,_0x60a348){return function(_0x4675dd){if(_0x4675dd){return _0x4675dd[_0x4e9d('0x23')](_0x27f7d3)[_0x4e9d('0x24')](function(_0x204bbb){return _0x204bbb;});}return null;};}function removeEntity(_0x5e9b95,_0x2f8cf4){return function(_0x155982){if(_0x155982){return _0x155982['destroy']()[_0x4e9d('0x24')](function(){_0x5e9b95[_0x4e9d('0x19')](0xcc)[_0x4e9d('0x1a')]();});}};}function handleEntityNotFound(_0x203362,_0xdf163a){return function(_0x5a566f){if(!_0x5a566f){_0x203362[_0x4e9d('0x18')](0x194);}return _0x5a566f;};}function handleError(_0x5a5be4,_0x59927e){_0x59927e=_0x59927e||0x1f4;return function(_0x1e31e7){logger[_0x4e9d('0x25')](_0x1e31e7[_0x4e9d('0x26')]);if(_0x1e31e7[_0x4e9d('0x27')]){delete _0x1e31e7[_0x4e9d('0x27')];}_0x5a5be4[_0x4e9d('0x19')](_0x59927e)[_0x4e9d('0x28')](_0x1e31e7);};}exports[_0x4e9d('0x29')]=function(_0x4e8ecb,_0x20a7b7){var _0x317997={},_0x525607={},_0x381cbc={'count':0x0,'rows':[]};var _0x1787d3=_[_0x4e9d('0x2a')](db['ZohoConfiguration'][_0x4e9d('0x2b')],function(_0x599da0){return{'name':_0x599da0[_0x4e9d('0x2c')],'type':_0x599da0[_0x4e9d('0x2d')][_0x4e9d('0x2e')]};});_0x525607[_0x4e9d('0x2f')]=_[_0x4e9d('0x2a')](_0x1787d3,_0x4e9d('0x27'));_0x525607[_0x4e9d('0x30')]=_[_0x4e9d('0x31')](_0x4e8ecb[_0x4e9d('0x30')]);_0x525607[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x525607[_0x4e9d('0x2f')],_0x525607['query']);_0x317997[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x525607['model'],qs[_0x4e9d('0x35')](_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0x317997[_0x4e9d('0x34')]=_0x317997['attributes'][_0x4e9d('0x36')]?_0x317997[_0x4e9d('0x34')]:_0x525607[_0x4e9d('0x2f')];if(!_0x4e8ecb[_0x4e9d('0x30')]['hasOwnProperty'](_0x4e9d('0x37'))){_0x317997['limit']=qs['limit'](_0x4e8ecb[_0x4e9d('0x30')]['limit']);_0x317997[_0x4e9d('0x1b')]=qs[_0x4e9d('0x1b')](_0x4e8ecb['query'][_0x4e9d('0x1b')]);}_0x317997['order']=qs[_0x4e9d('0x38')](_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0x317997['where']=qs['filters'](_['pick'](_0x4e8ecb[_0x4e9d('0x30')],_0x525607[_0x4e9d('0x32')]),_0x1787d3);if(_0x4e8ecb['query']['filter']){_0x317997['where']=_[_0x4e9d('0x39')](_0x317997['where'],{'$or':_['map'](_0x1787d3,function(_0xc5b0c6){if(_0xc5b0c6[_0x4e9d('0x2d')]!==_0x4e9d('0x3a')){var _0x52873f={};_0x52873f[_0xc5b0c6['name']]={'$like':'%'+_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x3b')]+'%'};return _0x52873f;}})});}_0x317997=_['merge']({},_0x317997,_0x4e8ecb[_0x4e9d('0x3c')]);var _0x41bcbf={'where':_0x317997[_0x4e9d('0x3d')]};return db[_0x4e9d('0x3e')][_0x4e9d('0x1e')](_0x41bcbf)[_0x4e9d('0x24')](function(_0x566cc1){_0x381cbc['count']=_0x566cc1;if(_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x3f')]){_0x317997[_0x4e9d('0x40')]=[{'all':!![]}];}return db[_0x4e9d('0x3e')][_0x4e9d('0x41')](_0x317997);})['then'](function(_0x4270e8){_0x381cbc[_0x4e9d('0x42')]=_0x4270e8;return _0x381cbc;})[_0x4e9d('0x24')](respondWithFilteredResult(_0x20a7b7,_0x317997))[_0x4e9d('0x43')](handleError(_0x20a7b7,null));};exports[_0x4e9d('0x44')]=function(_0x7b89e1,_0x212880){var _0xf3c37c={'raw':![],'where':{'id':_0x7b89e1[_0x4e9d('0x45')]['id']}},_0x57658e={};_0x57658e['model']=_[_0x4e9d('0x31')](db[_0x4e9d('0x3e')][_0x4e9d('0x2b')]);_0x57658e[_0x4e9d('0x30')]=_[_0x4e9d('0x31')](_0x7b89e1[_0x4e9d('0x30')]);_0x57658e[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x57658e[_0x4e9d('0x2f')],_0x57658e['query']);_0xf3c37c[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x57658e[_0x4e9d('0x2f')],qs[_0x4e9d('0x35')](_0x7b89e1[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0xf3c37c[_0x4e9d('0x34')]=_0xf3c37c[_0x4e9d('0x34')][_0x4e9d('0x36')]?_0xf3c37c[_0x4e9d('0x34')]:_0x57658e[_0x4e9d('0x2f')];if(_0x7b89e1['query'][_0x4e9d('0x3f')]){_0xf3c37c[_0x4e9d('0x40')]=[{'all':!![]}];}_0xf3c37c=_['merge']({},_0xf3c37c,_0x7b89e1[_0x4e9d('0x3c')]);return db[_0x4e9d('0x3e')][_0x4e9d('0x46')](_0xf3c37c)[_0x4e9d('0x24')](handleEntityNotFound(_0x212880,null))[_0x4e9d('0x24')](respondWithResult(_0x212880,null))['catch'](handleError(_0x212880,null));};exports[_0x4e9d('0x47')]=function(_0x5d2257,_0x303cfc){return db['ZohoConfiguration'][_0x4e9d('0x47')](_0x5d2257['body'],{})[_0x4e9d('0x24')](respondWithResult(_0x303cfc,0xc9))['catch'](handleError(_0x303cfc,null));};exports[_0x4e9d('0x23')]=function(_0x51d10f,_0x4b440f){if(_0x51d10f[_0x4e9d('0x48')]['id']){delete _0x51d10f[_0x4e9d('0x48')]['id'];}return db[_0x4e9d('0x3e')]['find']({'where':{'id':_0x51d10f['params']['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x4b440f,null))['then'](saveUpdates(_0x51d10f['body'],null))[_0x4e9d('0x24')](respondWithResult(_0x4b440f,null))[_0x4e9d('0x43')](handleError(_0x4b440f,null));};exports['destroy']=function(_0x51b633,_0x21310f){return db[_0x4e9d('0x3e')][_0x4e9d('0x46')]({'where':{'id':_0x51b633['params']['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x21310f,null))[_0x4e9d('0x24')](removeEntity(_0x21310f,null))[_0x4e9d('0x43')](handleError(_0x21310f,null));};exports['getFields']=function(_0x52f01c,_0x445932,_0x2247ec){var _0x4c847c={};var _0x5706e4={};var _0x3077f6;var _0x432918;return db[_0x4e9d('0x3e')][_0x4e9d('0x49')]({'where':{'id':_0x52f01c['params']['id']}})['then'](handleEntityNotFound(_0x445932,null))[_0x4e9d('0x24')](function(_0x5991b7){if(_0x5991b7){_0x3077f6=_0x5991b7;_0x5706e4[_0x4e9d('0x2f')]=_[_0x4e9d('0x31')](db['ZohoField']['rawAttributes']);_0x5706e4['query']=_[_0x4e9d('0x31')](_0x52f01c[_0x4e9d('0x30')]);_0x5706e4[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x5706e4[_0x4e9d('0x2f')],_0x5706e4[_0x4e9d('0x30')]);_0x4c847c[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x5706e4[_0x4e9d('0x2f')],qs['fields'](_0x52f01c[_0x4e9d('0x30')]['fields']));_0x4c847c[_0x4e9d('0x34')]=_0x4c847c[_0x4e9d('0x34')]['length']?_0x4c847c[_0x4e9d('0x34')]:_0x5706e4[_0x4e9d('0x2f')];_0x4c847c['order']=qs['sort'](_0x52f01c[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0x4c847c[_0x4e9d('0x3d')]=qs[_0x4e9d('0x32')](_[_0x4e9d('0x4a')](_0x52f01c['query'],_0x5706e4[_0x4e9d('0x32')]));if(_0x52f01c['query'][_0x4e9d('0x3b')]){_0x4c847c[_0x4e9d('0x3d')]=_[_0x4e9d('0x39')](_0x4c847c['where'],{'$or':_[_0x4e9d('0x2a')](_0x4c847c['attributes'],function(_0x512559){var _0x3225b3={};_0x3225b3[_0x512559]={'$like':'%'+_0x52f01c[_0x4e9d('0x30')]['filter']+'%'};return _0x3225b3;})});}_0x4c847c=_[_0x4e9d('0x39')]({},_0x4c847c,_0x52f01c['options']);return _0x3077f6[_0x4e9d('0x4b')](_0x4c847c);}})[_0x4e9d('0x24')](function(_0x17df9b){if(_0x17df9b){_0x432918=_0x17df9b[_0x4e9d('0x36')];if(!_0x52f01c[_0x4e9d('0x30')]['hasOwnProperty'](_0x4e9d('0x37'))){_0x4c847c[_0x4e9d('0x1c')]=qs['limit'](_0x52f01c[_0x4e9d('0x30')][_0x4e9d('0x1c')]);_0x4c847c[_0x4e9d('0x1b')]=qs['offset'](_0x52f01c['query'][_0x4e9d('0x1b')]);}return _0x3077f6[_0x4e9d('0x4b')](_0x4c847c);}})[_0x4e9d('0x24')](function(_0x3260bb){if(_0x3260bb){return _0x3260bb?{'count':_0x432918,'rows':_0x3260bb}:null;}})['then'](respondWithResult(_0x445932,null))[_0x4e9d('0x43')](handleError(_0x445932,null));};exports['getSubjects']=function(_0x91338,_0x46c240,_0xba60c0){var _0xee6773={};var _0x9de856={};var _0x175d98;var _0x588ada;return db[_0x4e9d('0x3e')]['findOne']({'where':{'id':_0x91338[_0x4e9d('0x45')]['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x46c240,null))[_0x4e9d('0x24')](function(_0x3bfa74){if(_0x3bfa74){_0x175d98=_0x3bfa74;_0x9de856['model']=_[_0x4e9d('0x31')](db['ZohoField'][_0x4e9d('0x2b')]);_0x9de856[_0x4e9d('0x30')]=_['keys'](_0x91338[_0x4e9d('0x30')]);_0x9de856['filters']=_['intersection'](_0x9de856['model'],_0x9de856[_0x4e9d('0x30')]);_0xee6773[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x9de856[_0x4e9d('0x2f')],qs['fields'](_0x91338[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0xee6773[_0x4e9d('0x34')]=_0xee6773['attributes']['length']?_0xee6773['attributes']:_0x9de856[_0x4e9d('0x2f')];_0xee6773[_0x4e9d('0x4c')]=qs[_0x4e9d('0x38')](_0x91338[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0xee6773[_0x4e9d('0x3d')]=qs[_0x4e9d('0x32')](_[_0x4e9d('0x4a')](_0x91338[_0x4e9d('0x30')],_0x9de856[_0x4e9d('0x32')]));if(_0x91338[_0x4e9d('0x30')][_0x4e9d('0x3b')]){_0xee6773['where']=_[_0x4e9d('0x39')](_0xee6773['where'],{'$or':_[_0x4e9d('0x2a')](_0xee6773[_0x4e9d('0x34')],function(_0x53e5b6){var _0x10a8e3={};_0x10a8e3[_0x53e5b6]={'$like':'%'+_0x91338[_0x4e9d('0x30')][_0x4e9d('0x3b')]+'%'};return _0x10a8e3;})});}_0xee6773=_[_0x4e9d('0x39')]({},_0xee6773,_0x91338[_0x4e9d('0x3c')]);return _0x175d98[_0x4e9d('0x4d')](_0xee6773);}})[_0x4e9d('0x24')](function(_0x12f05a){if(_0x12f05a){_0x588ada=_0x12f05a[_0x4e9d('0x36')];if(!_0x91338[_0x4e9d('0x30')][_0x4e9d('0x4e')](_0x4e9d('0x37'))){_0xee6773[_0x4e9d('0x1c')]=qs[_0x4e9d('0x1c')](_0x91338['query'][_0x4e9d('0x1c')]);_0xee6773[_0x4e9d('0x1b')]=qs[_0x4e9d('0x1b')](_0x91338['query']['offset']);}return _0x175d98[_0x4e9d('0x4d')](_0xee6773);}})['then'](function(_0x3063f8){if(_0x3063f8){return _0x3063f8?{'count':_0x588ada,'rows':_0x3063f8}:null;}})[_0x4e9d('0x24')](respondWithResult(_0x46c240,null))['catch'](handleError(_0x46c240,null));};exports[_0x4e9d('0x4f')]=function(_0x2de804,_0x349c73,_0x13fb12){var _0x3a7756={};var _0x208154={};var _0x4fe558;var _0x5cfb2d;return db[_0x4e9d('0x3e')]['findOne']({'where':{'id':_0x2de804['params']['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x349c73,null))[_0x4e9d('0x24')](function(_0x4a4f9d){if(_0x4a4f9d){_0x4fe558=_0x4a4f9d;_0x208154[_0x4e9d('0x2f')]=_[_0x4e9d('0x31')](db[_0x4e9d('0x50')][_0x4e9d('0x2b')]);_0x208154[_0x4e9d('0x30')]=_[_0x4e9d('0x31')](_0x2de804['query']);_0x208154[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x208154['model'],_0x208154[_0x4e9d('0x30')]);_0x3a7756[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x208154[_0x4e9d('0x2f')],qs[_0x4e9d('0x35')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0x3a7756[_0x4e9d('0x34')]=_0x3a7756[_0x4e9d('0x34')][_0x4e9d('0x36')]?_0x3a7756['attributes']:_0x208154['model'];_0x3a7756[_0x4e9d('0x4c')]=qs[_0x4e9d('0x38')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0x3a7756[_0x4e9d('0x3d')]=qs[_0x4e9d('0x32')](_[_0x4e9d('0x4a')](_0x2de804[_0x4e9d('0x30')],_0x208154[_0x4e9d('0x32')]));if(_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x3b')]){_0x3a7756[_0x4e9d('0x3d')]=_[_0x4e9d('0x39')](_0x3a7756[_0x4e9d('0x3d')],{'$or':_[_0x4e9d('0x2a')](_0x3a7756[_0x4e9d('0x34')],function(_0x3d8b51){var _0x7ff736={};_0x7ff736[_0x3d8b51]={'$like':'%'+_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x3b')]+'%'};return _0x7ff736;})});}_0x3a7756=_[_0x4e9d('0x39')]({},_0x3a7756,_0x2de804['options']);return _0x4fe558[_0x4e9d('0x4f')](_0x3a7756);}})[_0x4e9d('0x24')](function(_0x3af63e){if(_0x3af63e){_0x5cfb2d=_0x3af63e[_0x4e9d('0x36')];if(!_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x4e')](_0x4e9d('0x37'))){_0x3a7756[_0x4e9d('0x1c')]=qs[_0x4e9d('0x1c')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x1c')]);_0x3a7756[_0x4e9d('0x1b')]=qs[_0x4e9d('0x1b')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x1b')]);}return _0x4fe558[_0x4e9d('0x4f')](_0x3a7756);}})[_0x4e9d('0x24')](function(_0x1b887b){if(_0x1b887b){return _0x1b887b?{'count':_0x5cfb2d,'rows':_0x1b887b}:null;}})[_0x4e9d('0x24')](respondWithResult(_0x349c73,null))['catch'](handleError(_0x349c73,null));};
\ No newline at end of file
+var _0x0ebf=['order','getDescriptions','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','ZohoConfiguration','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','filter','where','merge','VIRTUAL','options','includeAll','include','catch','params','find','create','body','findOne','ZohoField','pick','getFields','getSubjects','rawAttributes'];(function(_0x53fded,_0x14c554){var _0x53a143=function(_0x559e59){while(--_0x559e59){_0x53fded['push'](_0x53fded['shift']());}};_0x53a143(++_0x14c554);}(_0x0ebf,0xe6));var _0xf0eb=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0x0ebf[_0x46a671];return _0x526d75;};'use strict';var emlformat=require(_0xf0eb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0eb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf0eb('0x2'));var BPromise=require(_0xf0eb('0x3'));var Mustache=require(_0xf0eb('0x4'));var util=require(_0xf0eb('0x5'));var path=require(_0xf0eb('0x6'));var sox=require(_0xf0eb('0x7'));var csv=require(_0xf0eb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf0eb('0x9'));var _=require(_0xf0eb('0xa'));var squel=require(_0xf0eb('0xb'));var crypto=require(_0xf0eb('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf0eb('0xd'));var toCsv=require(_0xf0eb('0x8'));var querystring=require(_0xf0eb('0xe'));var Papa=require(_0xf0eb('0xf'));var Redis=require(_0xf0eb('0x10'));var authService=require(_0xf0eb('0x11'));var qs=require(_0xf0eb('0x12'));var as=require(_0xf0eb('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xf0eb('0x14'));var config=require(_0xf0eb('0x15'));var licenseUtil=require(_0xf0eb('0x16'));var db=require(_0xf0eb('0x17'))['db'];function respondWithStatusCode(_0x1380b0,_0x193585){_0x193585=_0x193585||0xcc;return function(_0x95b093){if(_0x95b093){return _0x1380b0['sendStatus'](_0x193585);}return _0x1380b0[_0xf0eb('0x18')](_0x193585)[_0xf0eb('0x19')]();};}function respondWithResult(_0x25ee6d,_0x957bcf){_0x957bcf=_0x957bcf||0xc8;return function(_0x519657){if(_0x519657){return _0x25ee6d[_0xf0eb('0x18')](_0x957bcf)[_0xf0eb('0x1a')](_0x519657);}};}function respondWithFilteredResult(_0x2f40be,_0x3b957c){return function(_0x341099){if(_0x341099){var _0x3aab0a=typeof _0x3b957c[_0xf0eb('0x1b')]==='undefined'&&typeof _0x3b957c['limit']===_0xf0eb('0x1c');var _0x101f1b=_0x341099[_0xf0eb('0x1d')];var _0x18c01c=_0x3aab0a?0x0:_0x3b957c['offset'];var _0x62a6e2=_0x3aab0a?_0x341099[_0xf0eb('0x1d')]:_0x3b957c[_0xf0eb('0x1b')]+_0x3b957c['limit'];var _0x34b9bf;if(_0x62a6e2>=_0x101f1b){_0x62a6e2=_0x101f1b;_0x34b9bf=0xc8;}else{_0x34b9bf=0xce;}_0x2f40be[_0xf0eb('0x18')](_0x34b9bf);return _0x2f40be['set']('Content-Range',_0x18c01c+'-'+_0x62a6e2+'/'+_0x101f1b)[_0xf0eb('0x1a')](_0x341099);}return null;};}function patchUpdates(_0xd8d838){return function(_0x34b002){try{jsonpatch[_0xf0eb('0x1e')](_0x34b002,_0xd8d838,!![]);}catch(_0x1b4f7c){return BPromise[_0xf0eb('0x1f')](_0x1b4f7c);}return _0x34b002[_0xf0eb('0x20')]();};}function saveUpdates(_0xa3f22a,_0x258db7){return function(_0x42364b){if(_0x42364b){return _0x42364b[_0xf0eb('0x21')](_0xa3f22a)['then'](function(_0x3d2063){return _0x3d2063;});}return null;};}function removeEntity(_0xf42ab4,_0x1310c1){return function(_0x49fa79){if(_0x49fa79){return _0x49fa79[_0xf0eb('0x22')]()[_0xf0eb('0x23')](function(){_0xf42ab4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cdc8e,_0x1ccf61){return function(_0x1e9886){if(!_0x1e9886){_0x5cdc8e['sendStatus'](0x194);}return _0x1e9886;};}function handleError(_0x128b3c,_0x259e0a){_0x259e0a=_0x259e0a||0x1f4;return function(_0x11f932){logger[_0xf0eb('0x24')](_0x11f932[_0xf0eb('0x25')]);if(_0x11f932[_0xf0eb('0x26')]){delete _0x11f932['name'];}_0x128b3c[_0xf0eb('0x18')](_0x259e0a)[_0xf0eb('0x27')](_0x11f932);};}exports[_0xf0eb('0x28')]=function(_0x58c299,_0x2f7b57){var _0x1bc6f5={},_0x508dfd={},_0x40f03f={'count':0x0,'rows':[]};var _0x3516fe=_[_0xf0eb('0x29')](db[_0xf0eb('0x2a')]['rawAttributes'],function(_0x220630){return{'name':_0x220630['fieldName'],'type':_0x220630[_0xf0eb('0x2b')]['key']};});_0x508dfd[_0xf0eb('0x2c')]=_[_0xf0eb('0x29')](_0x3516fe,_0xf0eb('0x26'));_0x508dfd['query']=_[_0xf0eb('0x2d')](_0x58c299[_0xf0eb('0x2e')]);_0x508dfd[_0xf0eb('0x2f')]=_[_0xf0eb('0x30')](_0x508dfd[_0xf0eb('0x2c')],_0x508dfd['query']);_0x1bc6f5[_0xf0eb('0x31')]=_[_0xf0eb('0x30')](_0x508dfd[_0xf0eb('0x2c')],qs[_0xf0eb('0x32')](_0x58c299['query'][_0xf0eb('0x32')]));_0x1bc6f5[_0xf0eb('0x31')]=_0x1bc6f5[_0xf0eb('0x31')][_0xf0eb('0x33')]?_0x1bc6f5['attributes']:_0x508dfd['model'];if(!_0x58c299[_0xf0eb('0x2e')][_0xf0eb('0x34')](_0xf0eb('0x35'))){_0x1bc6f5[_0xf0eb('0x36')]=qs[_0xf0eb('0x36')](_0x58c299[_0xf0eb('0x2e')][_0xf0eb('0x36')]);_0x1bc6f5[_0xf0eb('0x1b')]=qs[_0xf0eb('0x1b')](_0x58c299[_0xf0eb('0x2e')][_0xf0eb('0x1b')]);}_0x1bc6f5['order']=qs[_0xf0eb('0x37')](_0x58c299['query']['sort']);_0x1bc6f5['where']=qs['filters'](_['pick'](_0x58c299['query'],_0x508dfd[_0xf0eb('0x2f')]),_0x3516fe);if(_0x58c299[_0xf0eb('0x2e')][_0xf0eb('0x38')]){_0x1bc6f5[_0xf0eb('0x39')]=_[_0xf0eb('0x3a')](_0x1bc6f5['where'],{'$or':_['map'](_0x3516fe,function(_0x51a91b){if(_0x51a91b[_0xf0eb('0x2b')]!==_0xf0eb('0x3b')){var _0x54abc8={};_0x54abc8[_0x51a91b[_0xf0eb('0x26')]]={'$like':'%'+_0x58c299['query'][_0xf0eb('0x38')]+'%'};return _0x54abc8;}})});}_0x1bc6f5=_[_0xf0eb('0x3a')]({},_0x1bc6f5,_0x58c299[_0xf0eb('0x3c')]);var _0x1ab3a9={'where':_0x1bc6f5[_0xf0eb('0x39')]};return db[_0xf0eb('0x2a')][_0xf0eb('0x1d')](_0x1ab3a9)[_0xf0eb('0x23')](function(_0x3919f1){_0x40f03f['count']=_0x3919f1;if(_0x58c299[_0xf0eb('0x2e')][_0xf0eb('0x3d')]){_0x1bc6f5[_0xf0eb('0x3e')]=[{'all':!![]}];}return db[_0xf0eb('0x2a')]['findAll'](_0x1bc6f5);})[_0xf0eb('0x23')](function(_0x4fce0f){_0x40f03f['rows']=_0x4fce0f;return _0x40f03f;})['then'](respondWithFilteredResult(_0x2f7b57,_0x1bc6f5))[_0xf0eb('0x3f')](handleError(_0x2f7b57,null));};exports['show']=function(_0x2f6982,_0x56b113){var _0x778d01={'raw':![],'where':{'id':_0x2f6982[_0xf0eb('0x40')]['id']}},_0x3b7a30={};_0x3b7a30[_0xf0eb('0x2c')]=_[_0xf0eb('0x2d')](db[_0xf0eb('0x2a')]['rawAttributes']);_0x3b7a30[_0xf0eb('0x2e')]=_[_0xf0eb('0x2d')](_0x2f6982[_0xf0eb('0x2e')]);_0x3b7a30[_0xf0eb('0x2f')]=_[_0xf0eb('0x30')](_0x3b7a30[_0xf0eb('0x2c')],_0x3b7a30['query']);_0x778d01[_0xf0eb('0x31')]=_[_0xf0eb('0x30')](_0x3b7a30[_0xf0eb('0x2c')],qs[_0xf0eb('0x32')](_0x2f6982['query'][_0xf0eb('0x32')]));_0x778d01['attributes']=_0x778d01[_0xf0eb('0x31')][_0xf0eb('0x33')]?_0x778d01[_0xf0eb('0x31')]:_0x3b7a30[_0xf0eb('0x2c')];if(_0x2f6982[_0xf0eb('0x2e')][_0xf0eb('0x3d')]){_0x778d01[_0xf0eb('0x3e')]=[{'all':!![]}];}_0x778d01=_['merge']({},_0x778d01,_0x2f6982[_0xf0eb('0x3c')]);return db['ZohoConfiguration'][_0xf0eb('0x41')](_0x778d01)[_0xf0eb('0x23')](handleEntityNotFound(_0x56b113,null))[_0xf0eb('0x23')](respondWithResult(_0x56b113,null))[_0xf0eb('0x3f')](handleError(_0x56b113,null));};exports[_0xf0eb('0x42')]=function(_0x3d0068,_0x15abe6){return db['ZohoConfiguration'][_0xf0eb('0x42')](_0x3d0068[_0xf0eb('0x43')],{})['then'](respondWithResult(_0x15abe6,0xc9))[_0xf0eb('0x3f')](handleError(_0x15abe6,null));};exports[_0xf0eb('0x21')]=function(_0x47c9ae,_0x749fdc){if(_0x47c9ae[_0xf0eb('0x43')]['id']){delete _0x47c9ae[_0xf0eb('0x43')]['id'];}return db[_0xf0eb('0x2a')][_0xf0eb('0x41')]({'where':{'id':_0x47c9ae[_0xf0eb('0x40')]['id']}})[_0xf0eb('0x23')](handleEntityNotFound(_0x749fdc,null))[_0xf0eb('0x23')](saveUpdates(_0x47c9ae[_0xf0eb('0x43')],null))[_0xf0eb('0x23')](respondWithResult(_0x749fdc,null))[_0xf0eb('0x3f')](handleError(_0x749fdc,null));};exports['destroy']=function(_0x2b80e1,_0x2d3baf){return db[_0xf0eb('0x2a')][_0xf0eb('0x41')]({'where':{'id':_0x2b80e1[_0xf0eb('0x40')]['id']}})[_0xf0eb('0x23')](handleEntityNotFound(_0x2d3baf,null))[_0xf0eb('0x23')](removeEntity(_0x2d3baf,null))['catch'](handleError(_0x2d3baf,null));};exports['getFields']=function(_0x2ab5f8,_0x4afebb,_0x305ed5){var _0x87d8b0={};var _0x451891={};var _0x587300;var _0x2506e0;return db[_0xf0eb('0x2a')][_0xf0eb('0x44')]({'where':{'id':_0x2ab5f8[_0xf0eb('0x40')]['id']}})[_0xf0eb('0x23')](handleEntityNotFound(_0x4afebb,null))[_0xf0eb('0x23')](function(_0xb506ab){if(_0xb506ab){_0x587300=_0xb506ab;_0x451891[_0xf0eb('0x2c')]=_[_0xf0eb('0x2d')](db[_0xf0eb('0x45')]['rawAttributes']);_0x451891[_0xf0eb('0x2e')]=_[_0xf0eb('0x2d')](_0x2ab5f8[_0xf0eb('0x2e')]);_0x451891[_0xf0eb('0x2f')]=_['intersection'](_0x451891[_0xf0eb('0x2c')],_0x451891[_0xf0eb('0x2e')]);_0x87d8b0[_0xf0eb('0x31')]=_[_0xf0eb('0x30')](_0x451891['model'],qs['fields'](_0x2ab5f8['query'][_0xf0eb('0x32')]));_0x87d8b0[_0xf0eb('0x31')]=_0x87d8b0[_0xf0eb('0x31')][_0xf0eb('0x33')]?_0x87d8b0[_0xf0eb('0x31')]:_0x451891[_0xf0eb('0x2c')];_0x87d8b0['order']=qs[_0xf0eb('0x37')](_0x2ab5f8['query'][_0xf0eb('0x37')]);_0x87d8b0['where']=qs[_0xf0eb('0x2f')](_[_0xf0eb('0x46')](_0x2ab5f8[_0xf0eb('0x2e')],_0x451891[_0xf0eb('0x2f')]));if(_0x2ab5f8[_0xf0eb('0x2e')][_0xf0eb('0x38')]){_0x87d8b0[_0xf0eb('0x39')]=_['merge'](_0x87d8b0['where'],{'$or':_[_0xf0eb('0x29')](_0x87d8b0[_0xf0eb('0x31')],function(_0x3eb571){var _0x4428f6={};_0x4428f6[_0x3eb571]={'$like':'%'+_0x2ab5f8['query'][_0xf0eb('0x38')]+'%'};return _0x4428f6;})});}_0x87d8b0=_['merge']({},_0x87d8b0,_0x2ab5f8[_0xf0eb('0x3c')]);return _0x587300[_0xf0eb('0x47')](_0x87d8b0);}})[_0xf0eb('0x23')](function(_0x41c91c){if(_0x41c91c){_0x2506e0=_0x41c91c[_0xf0eb('0x33')];if(!_0x2ab5f8[_0xf0eb('0x2e')][_0xf0eb('0x34')](_0xf0eb('0x35'))){_0x87d8b0[_0xf0eb('0x36')]=qs[_0xf0eb('0x36')](_0x2ab5f8[_0xf0eb('0x2e')][_0xf0eb('0x36')]);_0x87d8b0[_0xf0eb('0x1b')]=qs[_0xf0eb('0x1b')](_0x2ab5f8[_0xf0eb('0x2e')][_0xf0eb('0x1b')]);}return _0x587300[_0xf0eb('0x47')](_0x87d8b0);}})[_0xf0eb('0x23')](function(_0x4db6c3){if(_0x4db6c3){return _0x4db6c3?{'count':_0x2506e0,'rows':_0x4db6c3}:null;}})[_0xf0eb('0x23')](respondWithResult(_0x4afebb,null))['catch'](handleError(_0x4afebb,null));};exports[_0xf0eb('0x48')]=function(_0x3bc6c8,_0x22864f,_0x50b116){var _0x414fac={};var _0x3ec95a={};var _0x4cb71f;var _0x1757bb;return db[_0xf0eb('0x2a')][_0xf0eb('0x44')]({'where':{'id':_0x3bc6c8[_0xf0eb('0x40')]['id']}})[_0xf0eb('0x23')](handleEntityNotFound(_0x22864f,null))[_0xf0eb('0x23')](function(_0x3138e3){if(_0x3138e3){_0x4cb71f=_0x3138e3;_0x3ec95a[_0xf0eb('0x2c')]=_[_0xf0eb('0x2d')](db[_0xf0eb('0x45')][_0xf0eb('0x49')]);_0x3ec95a[_0xf0eb('0x2e')]=_[_0xf0eb('0x2d')](_0x3bc6c8['query']);_0x3ec95a['filters']=_[_0xf0eb('0x30')](_0x3ec95a['model'],_0x3ec95a[_0xf0eb('0x2e')]);_0x414fac[_0xf0eb('0x31')]=_['intersection'](_0x3ec95a[_0xf0eb('0x2c')],qs['fields'](_0x3bc6c8[_0xf0eb('0x2e')][_0xf0eb('0x32')]));_0x414fac[_0xf0eb('0x31')]=_0x414fac[_0xf0eb('0x31')][_0xf0eb('0x33')]?_0x414fac[_0xf0eb('0x31')]:_0x3ec95a[_0xf0eb('0x2c')];_0x414fac[_0xf0eb('0x4a')]=qs[_0xf0eb('0x37')](_0x3bc6c8[_0xf0eb('0x2e')][_0xf0eb('0x37')]);_0x414fac[_0xf0eb('0x39')]=qs[_0xf0eb('0x2f')](_['pick'](_0x3bc6c8[_0xf0eb('0x2e')],_0x3ec95a['filters']));if(_0x3bc6c8[_0xf0eb('0x2e')]['filter']){_0x414fac['where']=_[_0xf0eb('0x3a')](_0x414fac[_0xf0eb('0x39')],{'$or':_['map'](_0x414fac['attributes'],function(_0x4e37cd){var _0x34804b={};_0x34804b[_0x4e37cd]={'$like':'%'+_0x3bc6c8[_0xf0eb('0x2e')][_0xf0eb('0x38')]+'%'};return _0x34804b;})});}_0x414fac=_[_0xf0eb('0x3a')]({},_0x414fac,_0x3bc6c8['options']);return _0x4cb71f['getSubjects'](_0x414fac);}})[_0xf0eb('0x23')](function(_0x4f6df2){if(_0x4f6df2){_0x1757bb=_0x4f6df2[_0xf0eb('0x33')];if(!_0x3bc6c8[_0xf0eb('0x2e')]['hasOwnProperty'](_0xf0eb('0x35'))){_0x414fac[_0xf0eb('0x36')]=qs['limit'](_0x3bc6c8[_0xf0eb('0x2e')]['limit']);_0x414fac['offset']=qs[_0xf0eb('0x1b')](_0x3bc6c8['query'][_0xf0eb('0x1b')]);}return _0x4cb71f[_0xf0eb('0x48')](_0x414fac);}})[_0xf0eb('0x23')](function(_0x31c7f1){if(_0x31c7f1){return _0x31c7f1?{'count':_0x1757bb,'rows':_0x31c7f1}:null;}})[_0xf0eb('0x23')](respondWithResult(_0x22864f,null))[_0xf0eb('0x3f')](handleError(_0x22864f,null));};exports['getDescriptions']=function(_0x1db5d1,_0x20eb15,_0x391e5e){var _0xd5007b={};var _0x478aae={};var _0x499ec5;var _0x53e245;return db[_0xf0eb('0x2a')]['findOne']({'where':{'id':_0x1db5d1[_0xf0eb('0x40')]['id']}})[_0xf0eb('0x23')](handleEntityNotFound(_0x20eb15,null))['then'](function(_0x375630){if(_0x375630){_0x499ec5=_0x375630;_0x478aae[_0xf0eb('0x2c')]=_['keys'](db['ZohoField']['rawAttributes']);_0x478aae[_0xf0eb('0x2e')]=_[_0xf0eb('0x2d')](_0x1db5d1[_0xf0eb('0x2e')]);_0x478aae[_0xf0eb('0x2f')]=_[_0xf0eb('0x30')](_0x478aae[_0xf0eb('0x2c')],_0x478aae['query']);_0xd5007b[_0xf0eb('0x31')]=_['intersection'](_0x478aae[_0xf0eb('0x2c')],qs['fields'](_0x1db5d1['query'][_0xf0eb('0x32')]));_0xd5007b[_0xf0eb('0x31')]=_0xd5007b[_0xf0eb('0x31')][_0xf0eb('0x33')]?_0xd5007b['attributes']:_0x478aae[_0xf0eb('0x2c')];_0xd5007b['order']=qs[_0xf0eb('0x37')](_0x1db5d1[_0xf0eb('0x2e')][_0xf0eb('0x37')]);_0xd5007b[_0xf0eb('0x39')]=qs[_0xf0eb('0x2f')](_[_0xf0eb('0x46')](_0x1db5d1['query'],_0x478aae[_0xf0eb('0x2f')]));if(_0x1db5d1[_0xf0eb('0x2e')][_0xf0eb('0x38')]){_0xd5007b[_0xf0eb('0x39')]=_['merge'](_0xd5007b[_0xf0eb('0x39')],{'$or':_[_0xf0eb('0x29')](_0xd5007b[_0xf0eb('0x31')],function(_0x44ce2d){var _0x3748b3={};_0x3748b3[_0x44ce2d]={'$like':'%'+_0x1db5d1[_0xf0eb('0x2e')]['filter']+'%'};return _0x3748b3;})});}_0xd5007b=_[_0xf0eb('0x3a')]({},_0xd5007b,_0x1db5d1[_0xf0eb('0x3c')]);return _0x499ec5['getDescriptions'](_0xd5007b);}})[_0xf0eb('0x23')](function(_0x48ad90){if(_0x48ad90){_0x53e245=_0x48ad90['length'];if(!_0x1db5d1[_0xf0eb('0x2e')][_0xf0eb('0x34')](_0xf0eb('0x35'))){_0xd5007b['limit']=qs[_0xf0eb('0x36')](_0x1db5d1[_0xf0eb('0x2e')][_0xf0eb('0x36')]);_0xd5007b[_0xf0eb('0x1b')]=qs['offset'](_0x1db5d1[_0xf0eb('0x2e')][_0xf0eb('0x1b')]);}return _0x499ec5[_0xf0eb('0x4b')](_0xd5007b);}})[_0xf0eb('0x23')](function(_0xd443a2){if(_0xd443a2){return _0xd443a2?{'count':_0x53e245,'rows':_0xd443a2}:null;}})[_0xf0eb('0x23')](respondWithResult(_0x20eb15,null))[_0xf0eb('0x3f')](handleError(_0x20eb15,null));};
\ No newline at end of file
index 9ffbd80..0394215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9f2=['rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger','api','moment','bluebird'];(function(_0x5377b3,_0x436e62){var _0x361eca=function(_0x5cf575){while(--_0x5cf575){_0x5377b3['push'](_0x5377b3['shift']());}};_0x361eca(++_0x436e62);}(_0xd9f2,0x12f));var _0x2d9f=function(_0x5ae8d6,_0x4c42a7){_0x5ae8d6=_0x5ae8d6-0x0;var _0x1ebaa8=_0xd9f2[_0x5ae8d6];return _0x1ebaa8;};'use strict';var _=require(_0x2d9f('0x0'));var util=require('util');var logger=require(_0x2d9f('0x1'))(_0x2d9f('0x2'));var moment=require(_0x2d9f('0x3'));var BPromise=require(_0x2d9f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2d9f('0x5'));var config=require(_0x2d9f('0x6'));var attributes=require(_0x2d9f('0x7'));module[_0x2d9f('0x8')]=function(_0x2a1fba,_0x806c97){return _0x2a1fba['define'](_0x2d9f('0x9'),attributes,{'tableName':_0x2d9f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6860=['exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./intZohoConfiguration.attributes'];(function(_0x2af22f,_0x2f8bd7){var _0xadc129=function(_0x3342f3){while(--_0x3342f3){_0x2af22f['push'](_0x2af22f['shift']());}};_0xadc129(++_0x2f8bd7);}(_0x6860,0x1f2));var _0x0686=function(_0x54a6be,_0x5b45fd){_0x54a6be=_0x54a6be-0x0;var _0xcafdf=_0x6860[_0x54a6be];return _0xcafdf;};'use strict';var _=require(_0x0686('0x0'));var util=require(_0x0686('0x1'));var logger=require('../../config/logger')(_0x0686('0x2'));var moment=require(_0x0686('0x3'));var BPromise=require(_0x0686('0x4'));var rp=require(_0x0686('0x5'));var fs=require('fs');var path=require(_0x0686('0x6'));var rimraf=require('rimraf');var config=require(_0x0686('0x7'));var attributes=require(_0x0686('0x8'));module[_0x0686('0x9')]=function(_0x36657a,_0x3d19d9){return _0x36657a[_0x0686('0xa')](_0x0686('0xb'),attributes,{'tableName':_0x0686('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c391e0d..cb11d39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf478=['../../config/environment','jayson/promise','client','http','request','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2e69a6,_0x80d37f){var _0x16afb3=function(_0x46e0e4){while(--_0x46e0e4){_0x2e69a6['push'](_0x2e69a6['shift']());}};_0x16afb3(++_0x80d37f);}(_0xf478,0x118));var _0x8f47=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xf478[_0x102e37];return _0x35a07c;};'use strict';var _=require(_0x8f47('0x0'));var util=require('util');var moment=require(_0x8f47('0x1'));var BPromise=require(_0x8f47('0x2'));var rs=require(_0x8f47('0x3'));var fs=require('fs');var Redis=require(_0x8f47('0x4'));var db=require(_0x8f47('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x8f47('0x6'));var jayson=require(_0x8f47('0x7'));var client=jayson[_0x8f47('0x8')][_0x8f47('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f6c17,_0x1d8c49,_0x1e2aaa){return new BPromise(function(_0x454cf1,_0x3a5586){return client[_0x8f47('0xa')](_0x2f6c17,_0x1e2aaa)['then'](function(_0x182088){logger['info'](_0x8f47('0xb'),_0x1d8c49,_0x8f47('0xc'));logger[_0x8f47('0xd')](_0x8f47('0xe'),_0x1d8c49,_0x8f47('0xc'),JSON[_0x8f47('0xf')](_0x182088));if(_0x182088['error']){if(_0x182088[_0x8f47('0x10')][_0x8f47('0x11')]===0x1f4){logger[_0x8f47('0x10')](_0x8f47('0xb'),_0x1d8c49,_0x182088[_0x8f47('0x10')]['message']);return _0x3a5586(_0x182088[_0x8f47('0x10')][_0x8f47('0x12')]);}logger[_0x8f47('0x10')](_0x8f47('0xb'),_0x1d8c49,_0x182088[_0x8f47('0x10')][_0x8f47('0x12')]);return _0x454cf1(_0x182088[_0x8f47('0x10')]['message']);}else{logger[_0x8f47('0x13')](_0x8f47('0xb'),_0x1d8c49,_0x8f47('0xc'));_0x454cf1(_0x182088[_0x8f47('0x14')][_0x8f47('0x12')]);}})[_0x8f47('0x15')](function(_0x1b9849){logger['error'](_0x8f47('0xb'),_0x1d8c49,_0x1b9849);_0x3a5586(_0x1b9849);});});}
\ No newline at end of file
+var _0xed3d=['client','http','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0xb1465,_0x3ef240){var _0x5a3777=function(_0x522f63){while(--_0x522f63){_0xb1465['push'](_0xb1465['shift']());}};_0x5a3777(++_0x3ef240);}(_0xed3d,0x19a));var _0xded3=function(_0xab7545,_0x4bfa41){_0xab7545=_0xab7545-0x0;var _0x346f75=_0xed3d[_0xab7545];return _0x346f75;};'use strict';var _=require(_0xded3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xded3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xded3('0x2'));var db=require(_0xded3('0x3'))['db'];var utils=require(_0xded3('0x4'));var logger=require('../../config/logger')(_0xded3('0x5'));var config=require(_0xded3('0x6'));var jayson=require(_0xded3('0x7'));var client=jayson[_0xded3('0x8')][_0xded3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d04d4,_0x126948,_0x1af4db){return new BPromise(function(_0x3481a4,_0x292a8d){return client['request'](_0x4d04d4,_0x1af4db)['then'](function(_0x3d62f7){logger[_0xded3('0xa')](_0xded3('0xb'),_0x126948,_0xded3('0xc'));logger['debug']('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x126948,_0xded3('0xc'),JSON[_0xded3('0xd')](_0x3d62f7));if(_0x3d62f7['error']){if(_0x3d62f7['error'][_0xded3('0xe')]===0x1f4){logger[_0xded3('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x126948,_0x3d62f7[_0xded3('0xf')][_0xded3('0x10')]);return _0x292a8d(_0x3d62f7['error']['message']);}logger[_0xded3('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x126948,_0x3d62f7['error']['message']);return _0x3481a4(_0x3d62f7[_0xded3('0xf')][_0xded3('0x10')]);}else{logger[_0xded3('0xa')]('ZohoConfiguration,\x20%s,\x20%s',_0x126948,'request\x20sent');_0x3481a4(_0x3d62f7[_0xded3('0x11')]['message']);}})[_0xded3('0x12')](function(_0x2234ea){logger[_0xded3('0xf')](_0xded3('0xb'),_0x126948,_0x2234ea);_0x292a8d(_0x2234ea);});});}
\ No newline at end of file
index ac34eb8..763e09a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0085=['isAuthenticated','index','get','show','update','/:id','destroy','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intZohoField.controller'];(function(_0x1e76dc,_0x448187){var _0x435b9e=function(_0x327196){while(--_0x327196){_0x1e76dc['push'](_0x1e76dc['shift']());}};_0x435b9e(++_0x448187);}(_0x0085,0x1b8));var _0x5008=function(_0x368eb1,_0x11343a){_0x368eb1=_0x368eb1-0x0;var _0xbf8b62=_0x0085[_0x368eb1];return _0xbf8b62;};'use strict';var multer=require('multer');var util=require(_0x5008('0x0'));var path=require(_0x5008('0x1'));var timeout=require(_0x5008('0x2'));var express=require(_0x5008('0x3'));var router=express[_0x5008('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5008('0x5'));var config=require(_0x5008('0x6'));var controller=require(_0x5008('0x7'));router['get']('/',auth[_0x5008('0x8')](),controller[_0x5008('0x9')]);router[_0x5008('0xa')]('/:id',auth[_0x5008('0x8')](),controller[_0x5008('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x5008('0xc')]);router['delete'](_0x5008('0xd'),auth[_0x5008('0x8')](),controller[_0x5008('0xe')]);module[_0x5008('0xf')]=router;
\ No newline at end of file
+var _0x7223=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','index','isAuthenticated','put','update','delete','/:id','exports'];(function(_0x439e8b,_0x2084ff){var _0x393b1b=function(_0x9c9348){while(--_0x9c9348){_0x439e8b['push'](_0x439e8b['shift']());}};_0x393b1b(++_0x2084ff);}(_0x7223,0x1e6));var _0x3722=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x7223[_0x40220a];return _0x3903cc;};'use strict';var multer=require(_0x3722('0x0'));var util=require(_0x3722('0x1'));var path=require(_0x3722('0x2'));var timeout=require(_0x3722('0x3'));var express=require(_0x3722('0x4'));var router=express[_0x3722('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3722('0x6'));var interaction=require(_0x3722('0x7'));var config=require(_0x3722('0x8'));var controller=require(_0x3722('0x9'));router[_0x3722('0xa')]('/',auth['isAuthenticated'](),controller[_0x3722('0xb')]);router['get']('/:id',auth[_0x3722('0xc')](),controller['show']);router['post']('/',auth[_0x3722('0xc')](),controller['create']);router[_0x3722('0xd')]('/:id',auth[_0x3722('0xc')](),controller[_0x3722('0xe')]);router[_0x3722('0xf')](_0x3722('0x10'),auth[_0x3722('0xc')](),controller['destroy']);module[_0x3722('0x11')]=router;
\ No newline at end of file
index cf643d0..5abd37a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7de7=['BOOLEAN','exports','string','variable','keyValue','picklist','ENUM','customVariable','STRING'];(function(_0x281f29,_0x5885fe){var _0x371333=function(_0x538445){while(--_0x538445){_0x281f29['push'](_0x281f29['shift']());}};_0x371333(++_0x5885fe);}(_0x7de7,0x106));var _0x77de=function(_0x33975c,_0x50d085){_0x33975c=_0x33975c-0x0;var _0x1c15ab=_0x7de7[_0x33975c];return _0x1c15ab;};'use strict';var Sequelize=require('sequelize');module[_0x77de('0x0')]={'type':{'type':Sequelize['ENUM'](_0x77de('0x1'),_0x77de('0x2'),'customVariable',_0x77de('0x3'),_0x77de('0x4')),'defaultValue':_0x77de('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x77de('0x5')](_0x77de('0x1'),_0x77de('0x2'),_0x77de('0x6'))},'keyContent':{'type':Sequelize[_0x77de('0x7')]},'idField':{'type':Sequelize[_0x77de('0x7')]},'nameField':{'type':Sequelize[_0x77de('0x7')]},'customField':{'type':Sequelize[_0x77de('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x77de('0x7')]}};
\ No newline at end of file
+var _0x5e64=['sequelize','exports','ENUM','string','variable','customVariable','STRING','BOOLEAN'];(function(_0x14c032,_0x47198a){var _0x2baf92=function(_0x19cc48){while(--_0x19cc48){_0x14c032['push'](_0x14c032['shift']());}};_0x2baf92(++_0x47198a);}(_0x5e64,0x108));var _0x45e6=function(_0x2c74fd,_0x44f249){_0x2c74fd=_0x2c74fd-0x0;var _0x4c3033=_0x5e64[_0x2c74fd];return _0x4c3033;};'use strict';var Sequelize=require(_0x45e6('0x0'));module[_0x45e6('0x1')]={'type':{'type':Sequelize[_0x45e6('0x2')](_0x45e6('0x3'),_0x45e6('0x4'),_0x45e6('0x5'),'keyValue','picklist'),'defaultValue':_0x45e6('0x3')},'content':{'type':Sequelize[_0x45e6('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string',_0x45e6('0x4'),_0x45e6('0x5'))},'keyContent':{'type':Sequelize[_0x45e6('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x45e6('0x6')]},'customField':{'type':Sequelize[_0x45e6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x45e6('0x6')]}};
\ No newline at end of file
index 4b485e0..a20e837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f64=['mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','ZohoField','include','findAll','rows','catch','params','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x3a4078,_0x56ceac){var _0x59f16d=function(_0xe91068){while(--_0xe91068){_0x3a4078['push'](_0x3a4078['shift']());}};_0x59f16d(++_0x56ceac);}(_0x6f64,0x126));var _0x46f6=function(_0x4a8ce2,_0x4cd94e){_0x4a8ce2=_0x4a8ce2-0x0;var _0x38c265=_0x6f64[_0x4a8ce2];return _0x38c265;};'use strict';var emlformat=require(_0x46f6('0x0'));var rimraf=require(_0x46f6('0x1'));var zipdir=require(_0x46f6('0x2'));var jsonpatch=require(_0x46f6('0x3'));var rp=require(_0x46f6('0x4'));var moment=require(_0x46f6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x46f6('0x6'));var util=require('util');var path=require(_0x46f6('0x7'));var sox=require(_0x46f6('0x8'));var csv=require('to-csv');var ejs=require(_0x46f6('0x9'));var fs=require('fs');var fs_extra=require(_0x46f6('0xa'));var _=require(_0x46f6('0xb'));var squel=require(_0x46f6('0xc'));var crypto=require(_0x46f6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x46f6('0xe'));var toCsv=require(_0x46f6('0xf'));var querystring=require(_0x46f6('0x10'));var Papa=require(_0x46f6('0x11'));var Redis=require(_0x46f6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x46f6('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x46f6('0x14'));var logger=require(_0x46f6('0x15'))(_0x46f6('0x16'));var utils=require('../../config/utils');var config=require(_0x46f6('0x17'));var licenseUtil=require(_0x46f6('0x18'));var db=require(_0x46f6('0x19'))['db'];function respondWithStatusCode(_0x174d0c,_0x4ed4df){_0x4ed4df=_0x4ed4df||0xcc;return function(_0x129113){if(_0x129113){return _0x174d0c['sendStatus'](_0x4ed4df);}return _0x174d0c[_0x46f6('0x1a')](_0x4ed4df)[_0x46f6('0x1b')]();};}function respondWithResult(_0x29835a,_0x29b44d){_0x29b44d=_0x29b44d||0xc8;return function(_0x322483){if(_0x322483){return _0x29835a[_0x46f6('0x1a')](_0x29b44d)['json'](_0x322483);}};}function respondWithFilteredResult(_0x42e348,_0x23ee23){return function(_0x3cb09c){if(_0x3cb09c){var _0x12fbce=typeof _0x23ee23[_0x46f6('0x1c')]===_0x46f6('0x1d')&&typeof _0x23ee23[_0x46f6('0x1e')]===_0x46f6('0x1d');var _0x35e04d=_0x3cb09c[_0x46f6('0x1f')];var _0x2bf103=_0x12fbce?0x0:_0x23ee23[_0x46f6('0x1c')];var _0x2e3560=_0x12fbce?_0x3cb09c[_0x46f6('0x1f')]:_0x23ee23['offset']+_0x23ee23['limit'];var _0x4b3a48;if(_0x2e3560>=_0x35e04d){_0x2e3560=_0x35e04d;_0x4b3a48=0xc8;}else{_0x4b3a48=0xce;}_0x42e348[_0x46f6('0x1a')](_0x4b3a48);return _0x42e348[_0x46f6('0x20')](_0x46f6('0x21'),_0x2bf103+'-'+_0x2e3560+'/'+_0x35e04d)['json'](_0x3cb09c);}return null;};}function patchUpdates(_0x5a1992){return function(_0x335a87){try{jsonpatch[_0x46f6('0x22')](_0x335a87,_0x5a1992,!![]);}catch(_0x4c81e6){return BPromise[_0x46f6('0x23')](_0x4c81e6);}return _0x335a87[_0x46f6('0x24')]();};}function saveUpdates(_0x334fb4,_0x14c931){return function(_0x31f5ab){if(_0x31f5ab){return _0x31f5ab[_0x46f6('0x25')](_0x334fb4)[_0x46f6('0x26')](function(_0x564798){return _0x564798;});}return null;};}function removeEntity(_0x24e5a2,_0x59697d){return function(_0x14f5db){if(_0x14f5db){return _0x14f5db[_0x46f6('0x27')]()[_0x46f6('0x26')](function(){_0x24e5a2['status'](0xcc)[_0x46f6('0x1b')]();});}};}function handleEntityNotFound(_0x268286,_0x4cab2a){return function(_0xa18f2c){if(!_0xa18f2c){_0x268286[_0x46f6('0x28')](0x194);}return _0xa18f2c;};}function handleError(_0x5b0d12,_0xdbb0ed){_0xdbb0ed=_0xdbb0ed||0x1f4;return function(_0x154085){logger[_0x46f6('0x29')](_0x154085[_0x46f6('0x2a')]);if(_0x154085['name']){delete _0x154085[_0x46f6('0x2b')];}_0x5b0d12[_0x46f6('0x1a')](_0xdbb0ed)[_0x46f6('0x2c')](_0x154085);};}exports[_0x46f6('0x2d')]=function(_0x4a037f,_0x40816b){var _0x3c05de={},_0x59708b={},_0x45d8d3={'count':0x0,'rows':[]};var _0x5476d5=_[_0x46f6('0x2e')](db['ZohoField'][_0x46f6('0x2f')],function(_0x3f2435){return{'name':_0x3f2435[_0x46f6('0x30')],'type':_0x3f2435['type']['key']};});_0x59708b[_0x46f6('0x31')]=_[_0x46f6('0x2e')](_0x5476d5,_0x46f6('0x2b'));_0x59708b['query']=_[_0x46f6('0x32')](_0x4a037f['query']);_0x59708b[_0x46f6('0x33')]=_[_0x46f6('0x34')](_0x59708b[_0x46f6('0x31')],_0x59708b['query']);_0x3c05de[_0x46f6('0x35')]=_[_0x46f6('0x34')](_0x59708b[_0x46f6('0x31')],qs[_0x46f6('0x36')](_0x4a037f[_0x46f6('0x37')]['fields']));_0x3c05de[_0x46f6('0x35')]=_0x3c05de[_0x46f6('0x35')][_0x46f6('0x38')]?_0x3c05de[_0x46f6('0x35')]:_0x59708b[_0x46f6('0x31')];if(!_0x4a037f['query'][_0x46f6('0x39')]('nolimit')){_0x3c05de[_0x46f6('0x1e')]=qs[_0x46f6('0x1e')](_0x4a037f['query'][_0x46f6('0x1e')]);_0x3c05de[_0x46f6('0x1c')]=qs[_0x46f6('0x1c')](_0x4a037f[_0x46f6('0x37')]['offset']);}_0x3c05de[_0x46f6('0x3a')]=qs[_0x46f6('0x3b')](_0x4a037f[_0x46f6('0x37')][_0x46f6('0x3b')]);_0x3c05de[_0x46f6('0x3c')]=qs[_0x46f6('0x33')](_[_0x46f6('0x3d')](_0x4a037f[_0x46f6('0x37')],_0x59708b[_0x46f6('0x33')]),_0x5476d5);if(_0x4a037f['query'][_0x46f6('0x3e')]){_0x3c05de['where']=_[_0x46f6('0x3f')](_0x3c05de[_0x46f6('0x3c')],{'$or':_[_0x46f6('0x2e')](_0x5476d5,function(_0x1c3c3c){if(_0x1c3c3c['type']!==_0x46f6('0x40')){var _0xf3012f={};_0xf3012f[_0x1c3c3c[_0x46f6('0x2b')]]={'$like':'%'+_0x4a037f[_0x46f6('0x37')][_0x46f6('0x3e')]+'%'};return _0xf3012f;}})});}_0x3c05de=_[_0x46f6('0x3f')]({},_0x3c05de,_0x4a037f['options']);var _0x2f6df9={'where':_0x3c05de[_0x46f6('0x3c')]};return db[_0x46f6('0x41')][_0x46f6('0x1f')](_0x2f6df9)[_0x46f6('0x26')](function(_0x459c08){_0x45d8d3[_0x46f6('0x1f')]=_0x459c08;if(_0x4a037f['query']['includeAll']){_0x3c05de[_0x46f6('0x42')]=[{'all':!![]}];}return db[_0x46f6('0x41')][_0x46f6('0x43')](_0x3c05de);})['then'](function(_0x2217a8){_0x45d8d3[_0x46f6('0x44')]=_0x2217a8;return _0x45d8d3;})[_0x46f6('0x26')](respondWithFilteredResult(_0x40816b,_0x3c05de))[_0x46f6('0x45')](handleError(_0x40816b,null));};exports['show']=function(_0x1e4e23,_0x345686){var _0x5591eb={'raw':!![],'where':{'id':_0x1e4e23[_0x46f6('0x46')]['id']}},_0x14b7ca={};_0x14b7ca['model']=_[_0x46f6('0x32')](db['ZohoField'][_0x46f6('0x2f')]);_0x14b7ca[_0x46f6('0x37')]=_[_0x46f6('0x32')](_0x1e4e23['query']);_0x14b7ca[_0x46f6('0x33')]=_[_0x46f6('0x34')](_0x14b7ca[_0x46f6('0x31')],_0x14b7ca[_0x46f6('0x37')]);_0x5591eb['attributes']=_[_0x46f6('0x34')](_0x14b7ca['model'],qs['fields'](_0x1e4e23[_0x46f6('0x37')]['fields']));_0x5591eb[_0x46f6('0x35')]=_0x5591eb[_0x46f6('0x35')][_0x46f6('0x38')]?_0x5591eb['attributes']:_0x14b7ca['model'];if(_0x1e4e23[_0x46f6('0x37')]['includeAll']){_0x5591eb[_0x46f6('0x42')]=[{'all':!![]}];}_0x5591eb=_[_0x46f6('0x3f')]({},_0x5591eb,_0x1e4e23[_0x46f6('0x47')]);return db['ZohoField'][_0x46f6('0x48')](_0x5591eb)[_0x46f6('0x26')](handleEntityNotFound(_0x345686,null))[_0x46f6('0x26')](respondWithResult(_0x345686,null))[_0x46f6('0x45')](handleError(_0x345686,null));};exports['create']=function(_0x505f11,_0x6c443b){return db[_0x46f6('0x41')][_0x46f6('0x49')](_0x505f11[_0x46f6('0x4a')],{})['then'](respondWithResult(_0x6c443b,0xc9))[_0x46f6('0x45')](handleError(_0x6c443b,null));};exports[_0x46f6('0x25')]=function(_0x4286b5,_0x4ce3b8){if(_0x4286b5['body']['id']){delete _0x4286b5[_0x46f6('0x4a')]['id'];}return db[_0x46f6('0x41')][_0x46f6('0x48')]({'where':{'id':_0x4286b5[_0x46f6('0x46')]['id']}})[_0x46f6('0x26')](handleEntityNotFound(_0x4ce3b8,null))[_0x46f6('0x26')](saveUpdates(_0x4286b5[_0x46f6('0x4a')],null))[_0x46f6('0x26')](respondWithResult(_0x4ce3b8,null))[_0x46f6('0x45')](handleError(_0x4ce3b8,null));};exports[_0x46f6('0x27')]=function(_0x1f6fe0,_0xd28c03){return db['ZohoField'][_0x46f6('0x48')]({'where':{'id':_0x1f6fe0[_0x46f6('0x46')]['id']}})[_0x46f6('0x26')](handleEntityNotFound(_0xd28c03,null))['then'](removeEntity(_0xd28c03,null))[_0x46f6('0x45')](handleError(_0xd28c03,null));};
\ No newline at end of file
+var _0x6bd5=['destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','ZohoField','includeAll','findAll','rows','catch','show','keys','include','create','body','update','params','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','save','then'];(function(_0x3eb5ec,_0x1dd98a){var _0x6527e5=function(_0x2e8924){while(--_0x2e8924){_0x3eb5ec['push'](_0x3eb5ec['shift']());}};_0x6527e5(++_0x1dd98a);}(_0x6bd5,0x114));var _0x56bd=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0x6bd5[_0x40a825];return _0x273a54;};'use strict';var emlformat=require(_0x56bd('0x0'));var rimraf=require(_0x56bd('0x1'));var zipdir=require(_0x56bd('0x2'));var jsonpatch=require(_0x56bd('0x3'));var rp=require('request-promise');var moment=require(_0x56bd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x56bd('0x5'));var util=require(_0x56bd('0x6'));var path=require(_0x56bd('0x7'));var sox=require(_0x56bd('0x8'));var csv=require('to-csv');var ejs=require(_0x56bd('0x9'));var fs=require('fs');var fs_extra=require(_0x56bd('0xa'));var _=require(_0x56bd('0xb'));var squel=require(_0x56bd('0xc'));var crypto=require(_0x56bd('0xd'));var jsforce=require(_0x56bd('0xe'));var deskjs=require(_0x56bd('0xf'));var toCsv=require(_0x56bd('0x10'));var querystring=require(_0x56bd('0x11'));var Papa=require(_0x56bd('0x12'));var Redis=require('ioredis');var authService=require(_0x56bd('0x13'));var qs=require(_0x56bd('0x14'));var as=require(_0x56bd('0x15'));var hardwareService=require(_0x56bd('0x16'));var logger=require(_0x56bd('0x17'))(_0x56bd('0x18'));var utils=require(_0x56bd('0x19'));var config=require(_0x56bd('0x1a'));var licenseUtil=require(_0x56bd('0x1b'));var db=require(_0x56bd('0x1c'))['db'];function respondWithStatusCode(_0x22902f,_0x22c3c7){_0x22c3c7=_0x22c3c7||0xcc;return function(_0x4fe88f){if(_0x4fe88f){return _0x22902f[_0x56bd('0x1d')](_0x22c3c7);}return _0x22902f[_0x56bd('0x1e')](_0x22c3c7)[_0x56bd('0x1f')]();};}function respondWithResult(_0x5dd74b,_0x2635ed){_0x2635ed=_0x2635ed||0xc8;return function(_0x27a629){if(_0x27a629){return _0x5dd74b[_0x56bd('0x1e')](_0x2635ed)['json'](_0x27a629);}};}function respondWithFilteredResult(_0x3f82c0,_0x56a295){return function(_0x4f8d18){if(_0x4f8d18){var _0x3e2e89=typeof _0x56a295['offset']===_0x56bd('0x20')&&typeof _0x56a295['limit']===_0x56bd('0x20');var _0x35105d=_0x4f8d18[_0x56bd('0x21')];var _0x5abac4=_0x3e2e89?0x0:_0x56a295[_0x56bd('0x22')];var _0x4c1e56=_0x3e2e89?_0x4f8d18[_0x56bd('0x21')]:_0x56a295[_0x56bd('0x22')]+_0x56a295[_0x56bd('0x23')];var _0x4c9686;if(_0x4c1e56>=_0x35105d){_0x4c1e56=_0x35105d;_0x4c9686=0xc8;}else{_0x4c9686=0xce;}_0x3f82c0[_0x56bd('0x1e')](_0x4c9686);return _0x3f82c0[_0x56bd('0x24')](_0x56bd('0x25'),_0x5abac4+'-'+_0x4c1e56+'/'+_0x35105d)['json'](_0x4f8d18);}return null;};}function patchUpdates(_0x45980f){return function(_0x255ae8){try{jsonpatch['apply'](_0x255ae8,_0x45980f,!![]);}catch(_0x56d94d){return BPromise['reject'](_0x56d94d);}return _0x255ae8[_0x56bd('0x26')]();};}function saveUpdates(_0x9b705e,_0x5a5065){return function(_0x1912d5){if(_0x1912d5){return _0x1912d5['update'](_0x9b705e)[_0x56bd('0x27')](function(_0x33155a){return _0x33155a;});}return null;};}function removeEntity(_0x2ef992,_0x359572){return function(_0x3dbdb5){if(_0x3dbdb5){return _0x3dbdb5[_0x56bd('0x28')]()[_0x56bd('0x27')](function(){_0x2ef992[_0x56bd('0x1e')](0xcc)[_0x56bd('0x1f')]();});}};}function handleEntityNotFound(_0x3c3e13,_0x18b579){return function(_0x1b7f9f){if(!_0x1b7f9f){_0x3c3e13[_0x56bd('0x1d')](0x194);}return _0x1b7f9f;};}function handleError(_0x14bbdb,_0x4c98b3){_0x4c98b3=_0x4c98b3||0x1f4;return function(_0x508d74){logger[_0x56bd('0x29')](_0x508d74[_0x56bd('0x2a')]);if(_0x508d74[_0x56bd('0x2b')]){delete _0x508d74[_0x56bd('0x2b')];}_0x14bbdb[_0x56bd('0x1e')](_0x4c98b3)[_0x56bd('0x2c')](_0x508d74);};}exports[_0x56bd('0x2d')]=function(_0x3443e3,_0x3b8864){var _0x4c382f={},_0x46d91a={},_0xa14704={'count':0x0,'rows':[]};var _0x2459ed=_[_0x56bd('0x2e')](db['ZohoField'][_0x56bd('0x2f')],function(_0x5d7e0a){return{'name':_0x5d7e0a[_0x56bd('0x30')],'type':_0x5d7e0a[_0x56bd('0x31')][_0x56bd('0x32')]};});_0x46d91a[_0x56bd('0x33')]=_[_0x56bd('0x2e')](_0x2459ed,_0x56bd('0x2b'));_0x46d91a[_0x56bd('0x34')]=_['keys'](_0x3443e3[_0x56bd('0x34')]);_0x46d91a[_0x56bd('0x35')]=_[_0x56bd('0x36')](_0x46d91a['model'],_0x46d91a[_0x56bd('0x34')]);_0x4c382f[_0x56bd('0x37')]=_[_0x56bd('0x36')](_0x46d91a['model'],qs['fields'](_0x3443e3[_0x56bd('0x34')][_0x56bd('0x38')]));_0x4c382f[_0x56bd('0x37')]=_0x4c382f[_0x56bd('0x37')][_0x56bd('0x39')]?_0x4c382f[_0x56bd('0x37')]:_0x46d91a['model'];if(!_0x3443e3[_0x56bd('0x34')][_0x56bd('0x3a')](_0x56bd('0x3b'))){_0x4c382f[_0x56bd('0x23')]=qs[_0x56bd('0x23')](_0x3443e3[_0x56bd('0x34')][_0x56bd('0x23')]);_0x4c382f['offset']=qs[_0x56bd('0x22')](_0x3443e3['query'][_0x56bd('0x22')]);}_0x4c382f[_0x56bd('0x3c')]=qs[_0x56bd('0x3d')](_0x3443e3[_0x56bd('0x34')][_0x56bd('0x3d')]);_0x4c382f[_0x56bd('0x3e')]=qs[_0x56bd('0x35')](_['pick'](_0x3443e3[_0x56bd('0x34')],_0x46d91a[_0x56bd('0x35')]),_0x2459ed);if(_0x3443e3[_0x56bd('0x34')][_0x56bd('0x3f')]){_0x4c382f['where']=_[_0x56bd('0x40')](_0x4c382f['where'],{'$or':_[_0x56bd('0x2e')](_0x2459ed,function(_0x5c330c){if(_0x5c330c['type']!=='VIRTUAL'){var _0x4d375e={};_0x4d375e[_0x5c330c[_0x56bd('0x2b')]]={'$like':'%'+_0x3443e3['query'][_0x56bd('0x3f')]+'%'};return _0x4d375e;}})});}_0x4c382f=_[_0x56bd('0x40')]({},_0x4c382f,_0x3443e3[_0x56bd('0x41')]);var _0x3f4d47={'where':_0x4c382f[_0x56bd('0x3e')]};return db[_0x56bd('0x42')][_0x56bd('0x21')](_0x3f4d47)['then'](function(_0x32f78a){_0xa14704[_0x56bd('0x21')]=_0x32f78a;if(_0x3443e3[_0x56bd('0x34')][_0x56bd('0x43')]){_0x4c382f['include']=[{'all':!![]}];}return db[_0x56bd('0x42')][_0x56bd('0x44')](_0x4c382f);})['then'](function(_0x44ceec){_0xa14704[_0x56bd('0x45')]=_0x44ceec;return _0xa14704;})[_0x56bd('0x27')](respondWithFilteredResult(_0x3b8864,_0x4c382f))[_0x56bd('0x46')](handleError(_0x3b8864,null));};exports[_0x56bd('0x47')]=function(_0xb97a63,_0x311488){var _0x490ccf={'raw':!![],'where':{'id':_0xb97a63['params']['id']}},_0x28b055={};_0x28b055['model']=_[_0x56bd('0x48')](db[_0x56bd('0x42')][_0x56bd('0x2f')]);_0x28b055[_0x56bd('0x34')]=_[_0x56bd('0x48')](_0xb97a63['query']);_0x28b055['filters']=_['intersection'](_0x28b055[_0x56bd('0x33')],_0x28b055[_0x56bd('0x34')]);_0x490ccf['attributes']=_[_0x56bd('0x36')](_0x28b055[_0x56bd('0x33')],qs[_0x56bd('0x38')](_0xb97a63[_0x56bd('0x34')][_0x56bd('0x38')]));_0x490ccf[_0x56bd('0x37')]=_0x490ccf[_0x56bd('0x37')][_0x56bd('0x39')]?_0x490ccf[_0x56bd('0x37')]:_0x28b055[_0x56bd('0x33')];if(_0xb97a63[_0x56bd('0x34')]['includeAll']){_0x490ccf[_0x56bd('0x49')]=[{'all':!![]}];}_0x490ccf=_[_0x56bd('0x40')]({},_0x490ccf,_0xb97a63['options']);return db[_0x56bd('0x42')]['find'](_0x490ccf)[_0x56bd('0x27')](handleEntityNotFound(_0x311488,null))[_0x56bd('0x27')](respondWithResult(_0x311488,null))[_0x56bd('0x46')](handleError(_0x311488,null));};exports[_0x56bd('0x4a')]=function(_0x4d8538,_0xbc133a){return db[_0x56bd('0x42')][_0x56bd('0x4a')](_0x4d8538[_0x56bd('0x4b')],{})['then'](respondWithResult(_0xbc133a,0xc9))[_0x56bd('0x46')](handleError(_0xbc133a,null));};exports[_0x56bd('0x4c')]=function(_0x46b276,_0x3b6588){if(_0x46b276[_0x56bd('0x4b')]['id']){delete _0x46b276[_0x56bd('0x4b')]['id'];}return db['ZohoField']['find']({'where':{'id':_0x46b276[_0x56bd('0x4d')]['id']}})[_0x56bd('0x27')](handleEntityNotFound(_0x3b6588,null))[_0x56bd('0x27')](saveUpdates(_0x46b276[_0x56bd('0x4b')],null))[_0x56bd('0x27')](respondWithResult(_0x3b6588,null))[_0x56bd('0x46')](handleError(_0x3b6588,null));};exports[_0x56bd('0x28')]=function(_0x899ae1,_0x4d56b8){return db['ZohoField'][_0x56bd('0x4e')]({'where':{'id':_0x899ae1['params']['id']}})[_0x56bd('0x27')](handleEntityNotFound(_0x4d56b8,null))['then'](removeEntity(_0x4d56b8,null))[_0x56bd('0x46')](handleError(_0x4d56b8,null));};
\ No newline at end of file
index 2e0902a..9817132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['zoho_unique_index','idField','FieldId','lodash','api','moment','bluebird','request-promise','path','./intZohoField.attributes','ZohoField','int_zoho_fields'];(function(_0x433e2f,_0x3897bc){var _0x3d6270=function(_0x274a25){while(--_0x274a25){_0x433e2f['push'](_0x433e2f['shift']());}};_0x3d6270(++_0x3897bc);}(_0x1623,0xab));var _0x3162=function(_0x390fca,_0x585c05){_0x390fca=_0x390fca-0x0;var _0x32734f=_0x1623[_0x390fca];return _0x32734f;};'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':[{'name':_0x3162('0x9'),'fields':[_0x3162('0xa'),_0x3162('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x958a=['moment','bluebird','request-promise','path','../../config/environment','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','lodash','util','api'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x958a,0x128));var _0xa958=function(_0x564fd0,_0x4a4921){_0x564fd0=_0x564fd0-0x0;var _0x2e60ee=_0x958a[_0x564fd0];return _0x2e60ee;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var logger=require('../../config/logger')(_0xa958('0x2'));var moment=require(_0xa958('0x3'));var BPromise=require(_0xa958('0x4'));var rp=require(_0xa958('0x5'));var fs=require('fs');var path=require(_0xa958('0x6'));var rimraf=require('rimraf');var config=require(_0xa958('0x7'));var attributes=require('./intZohoField.attributes');module[_0xa958('0x8')]=function(_0x9b7d9e,_0x2692d6){return _0x9b7d9e[_0xa958('0x9')](_0xa958('0xa'),attributes,{'tableName':_0xa958('0xb'),'paranoid':![],'indexes':[{'name':_0xa958('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 584e1b6..d1c321e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5be1=['../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x53f477,_0x53fe1e){var _0x1d0195=function(_0x599cb3){while(--_0x599cb3){_0x53f477['push'](_0x53f477['shift']());}};_0x1d0195(++_0x53fe1e);}(_0x5be1,0x1f2));var _0x15be=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0x5be1[_0x365be9];return _0x185c12;};'use strict';var _=require(_0x15be('0x0'));var util=require('util');var moment=require(_0x15be('0x1'));var BPromise=require(_0x15be('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x15be('0x3'));var db=require(_0x15be('0x4'))['db'];var utils=require(_0x15be('0x5'));var logger=require(_0x15be('0x6'))(_0x15be('0x7'));var config=require(_0x15be('0x8'));var jayson=require(_0x15be('0x9'));var client=jayson[_0x15be('0xa')][_0x15be('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b5c56,_0x8f439e,_0xf4767d){return new BPromise(function(_0x329dc6,_0x4e5848){return client['request'](_0x2b5c56,_0xf4767d)[_0x15be('0xc')](function(_0x23adb3){logger[_0x15be('0xd')](_0x15be('0xe'),_0x8f439e,'request\x20sent');logger[_0x15be('0xf')](_0x15be('0x10'),_0x8f439e,_0x15be('0x11'),JSON['stringify'](_0x23adb3));if(_0x23adb3['error']){if(_0x23adb3[_0x15be('0x12')][_0x15be('0x13')]===0x1f4){logger[_0x15be('0x12')](_0x15be('0xe'),_0x8f439e,_0x23adb3['error'][_0x15be('0x14')]);return _0x4e5848(_0x23adb3['error']['message']);}logger['error'](_0x15be('0xe'),_0x8f439e,_0x23adb3[_0x15be('0x12')][_0x15be('0x14')]);return _0x329dc6(_0x23adb3[_0x15be('0x12')][_0x15be('0x14')]);}else{logger[_0x15be('0xd')](_0x15be('0xe'),_0x8f439e,_0x15be('0x11'));_0x329dc6(_0x23adb3[_0x15be('0x15')][_0x15be('0x14')]);}})[_0x15be('0x16')](function(_0x422a57){logger[_0x15be('0x12')](_0x15be('0xe'),_0x8f439e,_0x422a57);_0x4e5848(_0x422a57);});});}
\ No newline at end of file
+var _0x1b41=['stringify','error','code','message','info','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4c1eb9,_0x3ff461){var _0x58d541=function(_0x4d0215){while(--_0x4d0215){_0x4c1eb9['push'](_0x4c1eb9['shift']());}};_0x58d541(++_0x3ff461);}(_0x1b41,0xf8));var _0x11b4=function(_0x4e8e68,_0x52a7b8){_0x4e8e68=_0x4e8e68-0x0;var _0x3c1398=_0x1b41[_0x4e8e68];return _0x3c1398;};'use strict';var _=require(_0x11b4('0x0'));var util=require(_0x11b4('0x1'));var moment=require(_0x11b4('0x2'));var BPromise=require('bluebird');var rs=require(_0x11b4('0x3'));var fs=require('fs');var Redis=require(_0x11b4('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x11b4('0x5'))(_0x11b4('0x6'));var config=require(_0x11b4('0x7'));var jayson=require(_0x11b4('0x8'));var client=jayson['client'][_0x11b4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5cf61c,_0xaf7f64,_0x5755cc){return new BPromise(function(_0x26e7b2,_0x2f781f){return client[_0x11b4('0xa')](_0x5cf61c,_0x5755cc)[_0x11b4('0xb')](function(_0x2a4727){logger['info'](_0x11b4('0xc'),_0xaf7f64,'request\x20sent');logger[_0x11b4('0xd')](_0x11b4('0xe'),_0xaf7f64,_0x11b4('0xf'),JSON[_0x11b4('0x10')](_0x2a4727));if(_0x2a4727[_0x11b4('0x11')]){if(_0x2a4727[_0x11b4('0x11')][_0x11b4('0x12')]===0x1f4){logger[_0x11b4('0x11')](_0x11b4('0xc'),_0xaf7f64,_0x2a4727[_0x11b4('0x11')][_0x11b4('0x13')]);return _0x2f781f(_0x2a4727[_0x11b4('0x11')][_0x11b4('0x13')]);}logger[_0x11b4('0x11')](_0x11b4('0xc'),_0xaf7f64,_0x2a4727[_0x11b4('0x11')][_0x11b4('0x13')]);return _0x26e7b2(_0x2a4727[_0x11b4('0x11')][_0x11b4('0x13')]);}else{logger[_0x11b4('0x14')](_0x11b4('0xc'),_0xaf7f64,'request\x20sent');_0x26e7b2(_0x2a4727['result']['message']);}})[_0x11b4('0x15')](function(_0xd57b7){logger['error'](_0x11b4('0xc'),_0xaf7f64,_0xd57b7);_0x2f781f(_0xd57b7);});});}
\ No newline at end of file
index 40201f9..3eba246 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(_0x29ba30,_0x26ae2b){var _0x1a3ad4=function(_0x2d0d0b){while(--_0x2d0d0b){_0x29ba30['push'](_0x29ba30['shift']());}};_0x1a3ad4(++_0x26ae2b);}(_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(_0x5af1c8,_0x1b359f){var _0x5163d6=function(_0xf411ec){while(--_0xf411ec){_0x5af1c8['push'](_0x5af1c8['shift']());}};_0x5163d6(++_0x1b359f);}(_0x70e0,0x17b));var _0x070e=function(_0x483c06,_0x3d51e1){_0x483c06=_0x483c06-0x0;var _0x26dc79=_0x70e0[_0x483c06];return _0x26dc79;};'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 34ce120..b012ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3587=['BOOLEAN','exports','STRING','unique_name_and_version'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x3587,0x1e1));var _0x7358=function(_0x32dcd8,_0x3a37be){_0x32dcd8=_0x32dcd8-0x0;var _0x3b3ed7=_0x3587[_0x32dcd8];return _0x3b3ed7;};'use strict';var Sequelize=require('sequelize');module[_0x7358('0x0')]={'name':{'type':Sequelize[_0x7358('0x1')],'allowNull':![],'unique':_0x7358('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x7358('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x7358('0x1')]},'type':{'type':Sequelize[_0x7358('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x7358('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0x7358('0x1')]},'logo':{'type':Sequelize[_0x7358('0x1')]},'state':{'type':Sequelize[_0x7358('0x1')],'unique':'state'},'description':{'type':Sequelize[_0x7358('0x1')]},'title':{'type':Sequelize[_0x7358('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0x34ec=['app.js','BOOLEAN','state','sequelize','exports','STRING'];(function(_0x34d509,_0x315f64){var _0x20a5bb=function(_0x55b1c7){while(--_0x55b1c7){_0x34d509['push'](_0x34d509['shift']());}};_0x20a5bb(++_0x315f64);}(_0x34ec,0x129));var _0xc34e=function(_0x2ea98d,_0x2db302){_0x2ea98d=_0x2ea98d-0x0;var _0x3d4c08=_0x34ec[_0x2ea98d];return _0x3d4c08;};'use strict';var Sequelize=require(_0xc34e('0x0'));module[_0xc34e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0xc34e('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0xc34e('0x2')],'defaultValue':_0xc34e('0x3')},'filename':{'type':Sequelize[_0xc34e('0x2')]},'path':{'type':Sequelize[_0xc34e('0x2')]},'type':{'type':Sequelize[_0xc34e('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0xc34e('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0xc34e('0x2')]},'logo':{'type':Sequelize[_0xc34e('0x2')]},'state':{'type':Sequelize[_0xc34e('0x2')],'unique':_0xc34e('0x5')},'description':{'type':Sequelize[_0xc34e('0x2')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc34e('0x2')]},'link':{'type':Sequelize[_0xc34e('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index 963c841..89c3bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x426cd6,_0x5892fa){var _0x1d305f=function(_0x378c39){while(--_0x378c39){_0x426cd6['push'](_0x426cd6['shift']());}};_0x1d305f(++_0x5892fa);}(_0xe3da,0x1cd));var _0xae3d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xe3da[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0xae3d('0x0'));var rimraf=require(_0xae3d('0x1'));var zipdir=require(_0xae3d('0x2'));var jsonpatch=require(_0xae3d('0x3'));var rp=require(_0xae3d('0x4'));var moment=require(_0xae3d('0x5'));var BPromise=require(_0xae3d('0x6'));var Mustache=require(_0xae3d('0x7'));var util=require(_0xae3d('0x8'));var path=require(_0xae3d('0x9'));var sox=require(_0xae3d('0xa'));var csv=require(_0xae3d('0xb'));var ejs=require(_0xae3d('0xc'));var fs=require('fs');var fs_extra=require(_0xae3d('0xd'));var _=require(_0xae3d('0xe'));var squel=require(_0xae3d('0xf'));var crypto=require('crypto');var jsforce=require(_0xae3d('0x10'));var deskjs=require(_0xae3d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xae3d('0x12'));var Redis=require(_0xae3d('0x13'));var authService=require(_0xae3d('0x14'));var qs=require(_0xae3d('0x15'));var as=require(_0xae3d('0x16'));var hardwareService=require(_0xae3d('0x17'));var logger=require('../../config/logger')(_0xae3d('0x18'));var utils=require('../../config/utils');var config=require(_0xae3d('0x19'));var licenseUtil=require(_0xae3d('0x1a'));var db=require(_0xae3d('0x1b'))['db'];function respondWithStatusCode(_0x172f7a,_0x48aa74){_0x48aa74=_0x48aa74||0xcc;return function(_0xfb7869){if(_0xfb7869){return _0x172f7a[_0xae3d('0x1c')](_0x48aa74);}return _0x172f7a[_0xae3d('0x1d')](_0x48aa74)[_0xae3d('0x1e')]();};}function respondWithResult(_0x2afdd3,_0x430659){_0x430659=_0x430659||0xc8;return function(_0x31498d){if(_0x31498d){return _0x2afdd3['status'](_0x430659)[_0xae3d('0x1f')](_0x31498d);}};}function respondWithFilteredResult(_0x42f4b4,_0x46295b){return function(_0x230afb){if(_0x230afb){var _0x192c13=typeof _0x46295b[_0xae3d('0x20')]==='undefined'&&typeof _0x46295b[_0xae3d('0x21')]===_0xae3d('0x22');var _0x2e31f1=_0x230afb['count'];var _0x3f8cf9=_0x192c13?0x0:_0x46295b[_0xae3d('0x20')];var _0x558e42=_0x192c13?_0x230afb['count']:_0x46295b[_0xae3d('0x20')]+_0x46295b[_0xae3d('0x21')];var _0x19c44d;if(_0x558e42>=_0x2e31f1){_0x558e42=_0x2e31f1;_0x19c44d=0xc8;}else{_0x19c44d=0xce;}_0x42f4b4[_0xae3d('0x1d')](_0x19c44d);return _0x42f4b4[_0xae3d('0x23')]('Content-Range',_0x3f8cf9+'-'+_0x558e42+'/'+_0x2e31f1)[_0xae3d('0x1f')](_0x230afb);}return null;};}function patchUpdates(_0x48f00e){return function(_0x4a09c2){try{jsonpatch[_0xae3d('0x24')](_0x4a09c2,_0x48f00e,!![]);}catch(_0x1415e8){return BPromise[_0xae3d('0x25')](_0x1415e8);}return _0x4a09c2[_0xae3d('0x26')]();};}function saveUpdates(_0x3e7afc,_0x26c419){return function(_0x155099){if(_0x155099){return _0x155099[_0xae3d('0x27')](_0x3e7afc)[_0xae3d('0x28')](function(_0x300be8){return _0x300be8;});}return null;};}function removeEntity(_0x9bf34a,_0x37f5ff){return function(_0x1b2acb){if(_0x1b2acb){return _0x1b2acb[_0xae3d('0x29')]()[_0xae3d('0x28')](function(){_0x9bf34a[_0xae3d('0x1d')](0xcc)[_0xae3d('0x1e')]();});}};}function handleEntityNotFound(_0x2131e9,_0x1b1217){return function(_0x5d45db){if(!_0x5d45db){_0x2131e9[_0xae3d('0x1c')](0x194);}return _0x5d45db;};}function handleError(_0x185e71,_0xb5940){_0xb5940=_0xb5940||0x1f4;return function(_0x52df0f){logger[_0xae3d('0x2a')](_0x52df0f[_0xae3d('0x2b')]);if(_0x52df0f[_0xae3d('0x2c')]){delete _0x52df0f['name'];}_0x185e71['status'](_0xb5940)[_0xae3d('0x2d')](_0x52df0f);};}exports[_0xae3d('0x2e')]=function(_0x3a5840,_0x3114f9){var _0xb69ec9={},_0x561371={},_0x1d1483={'count':0x0,'rows':[]};var _0x3a2434=_['map'](db[_0xae3d('0x2f')][_0xae3d('0x30')],function(_0x2cf750){return{'name':_0x2cf750[_0xae3d('0x31')],'type':_0x2cf750[_0xae3d('0x32')][_0xae3d('0x33')]};});_0x561371['model']=_['map'](_0x3a2434,'name');_0x561371[_0xae3d('0x34')]=_[_0xae3d('0x35')](_0x3a5840[_0xae3d('0x34')]);_0x561371[_0xae3d('0x36')]=_['intersection'](_0x561371[_0xae3d('0x37')],_0x561371[_0xae3d('0x34')]);_0xb69ec9[_0xae3d('0x38')]=_[_0xae3d('0x39')](_0x561371[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0x3a5840[_0xae3d('0x34')]['fields']));_0xb69ec9[_0xae3d('0x38')]=_0xb69ec9['attributes']['length']?_0xb69ec9[_0xae3d('0x38')]:_0x561371['model'];if(!_0x3a5840[_0xae3d('0x34')]['hasOwnProperty']('nolimit')){_0xb69ec9[_0xae3d('0x21')]=qs[_0xae3d('0x21')](_0x3a5840[_0xae3d('0x34')]['limit']);_0xb69ec9[_0xae3d('0x20')]=qs['offset'](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x20')]);}_0xb69ec9[_0xae3d('0x3b')]=qs[_0xae3d('0x3c')](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x3c')]);_0xb69ec9[_0xae3d('0x3d')]=qs[_0xae3d('0x36')](_[_0xae3d('0x3e')](_0x3a5840[_0xae3d('0x34')],_0x561371[_0xae3d('0x36')]),_0x3a2434);if(_0x3a5840['query']['filter']){_0xb69ec9[_0xae3d('0x3d')]=_['merge'](_0xb69ec9[_0xae3d('0x3d')],{'$or':_[_0xae3d('0x3f')](_0x3a2434,function(_0x1db3c1){if(_0x1db3c1[_0xae3d('0x32')]!==_0xae3d('0x40')){var _0x35db44={};_0x35db44[_0x1db3c1[_0xae3d('0x2c')]]={'$like':'%'+_0x3a5840[_0xae3d('0x34')][_0xae3d('0x41')]+'%'};return _0x35db44;}})});}_0xb69ec9=_[_0xae3d('0x42')]({},_0xb69ec9,_0x3a5840[_0xae3d('0x43')]);var _0x549db8={'where':_0xb69ec9[_0xae3d('0x3d')]};return db[_0xae3d('0x2f')][_0xae3d('0x44')](_0x549db8)['then'](function(_0x4df102){_0x1d1483[_0xae3d('0x44')]=_0x4df102;if(_0x3a5840[_0xae3d('0x34')]['includeAll']){_0xb69ec9[_0xae3d('0x45')]=[{'all':!![]}];}return db[_0xae3d('0x2f')][_0xae3d('0x46')](_0xb69ec9);})[_0xae3d('0x28')](function(_0x436a04){_0x1d1483[_0xae3d('0x47')]=_0x436a04;return _0x1d1483;})['then'](respondWithFilteredResult(_0x3114f9,_0xb69ec9))[_0xae3d('0x48')](handleError(_0x3114f9,null));};exports[_0xae3d('0x49')]=function(_0xce7f34,_0x938811){var _0x1fef90={'raw':![],'where':{'id':_0xce7f34[_0xae3d('0x4a')]['id']}},_0x515220={};_0x515220['model']=_[_0xae3d('0x35')](db[_0xae3d('0x2f')][_0xae3d('0x30')]);_0x515220[_0xae3d('0x34')]=_['keys'](_0xce7f34['query']);_0x515220['filters']=_[_0xae3d('0x39')](_0x515220[_0xae3d('0x37')],_0x515220['query']);_0x1fef90['attributes']=_['intersection'](_0x515220[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0xce7f34[_0xae3d('0x34')][_0xae3d('0x3a')]));_0x1fef90[_0xae3d('0x38')]=_0x1fef90[_0xae3d('0x38')][_0xae3d('0x4b')]?_0x1fef90['attributes']:_0x515220['model'];if(_0xce7f34['query'][_0xae3d('0x4c')]){_0x1fef90['include']=[{'all':!![]}];}_0x1fef90=_[_0xae3d('0x42')]({},_0x1fef90,_0xce7f34[_0xae3d('0x43')]);return db[_0xae3d('0x2f')][_0xae3d('0x4d')](_0x1fef90)[_0xae3d('0x28')](handleEntityNotFound(_0x938811,null))[_0xae3d('0x28')](respondWithResult(_0x938811,null))[_0xae3d('0x48')](handleError(_0x938811,null));};exports[_0xae3d('0x4e')]=function(_0x38f92d,_0x4ed0f9){return db[_0xae3d('0x2f')]['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
+var _0x5496=['../../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','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','Integration','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','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x4dbaad,_0x730318){var _0x226c72=function(_0x501972){while(--_0x501972){_0x4dbaad['push'](_0x4dbaad['shift']());}};_0x226c72(++_0x730318);}(_0x5496,0x175));var _0x6549=function(_0x2a875a,_0xafea39){_0x2a875a=_0x2a875a-0x0;var _0xf33685=_0x5496[_0x2a875a];return _0xf33685;};'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')]['create'](_0x41d675[_0x6549('0x4c')],{})[_0x6549('0x26')](respondWithResult(_0x1712f3,0xc9))[_0x6549('0x43')](handleError(_0x1712f3,null));};exports[_0x6549('0x25')]=function(_0xa4c650,_0x25a6ee){if(_0xa4c650[_0x6549('0x4c')]['id']){delete _0xa4c650[_0x6549('0x4c')]['id'];}return db['Integration'][_0x6549('0x4a')]({'where':{'id':_0xa4c650['params']['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x25a6ee,null))[_0x6549('0x26')](saveUpdates(_0xa4c650[_0x6549('0x4c')],null))['then'](respondWithResult(_0x25a6ee,null))[_0x6549('0x43')](handleError(_0x25a6ee,null));};exports[_0x6549('0x4d')]=function(_0x2ef4d2,_0x5300c8){return db[_0x6549('0x2b')][_0x6549('0x4a')]({'where':{'id':_0x2ef4d2[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x5300c8,null))[_0x6549('0x26')](removeEntity(_0x5300c8,null))[_0x6549('0x43')](handleError(_0x5300c8,null));};
\ No newline at end of file
index 8301ae8..6ecdc90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30a=['exports','define','Integration','integrations','lodash','util','../../config/logger','moment','path','rimraf','./integration.attributes'];(function(_0x386525,_0xefae6){var _0x14d015=function(_0x4a45c1){while(--_0x4a45c1){_0x386525['push'](_0x386525['shift']());}};_0x14d015(++_0xefae6);}(_0xd30a,0x1b1));var _0xad30=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0xd30a[_0x4ae625];return _0x31accf;};'use strict';var _=require(_0xad30('0x0'));var util=require(_0xad30('0x1'));var logger=require(_0xad30('0x2'))('api');var moment=require(_0xad30('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xad30('0x4'));var rimraf=require(_0xad30('0x5'));var config=require('../../config/environment');var attributes=require(_0xad30('0x6'));module[_0xad30('0x7')]=function(_0x1f5604,_0x5467fd){return _0x1f5604[_0xad30('0x8')](_0xad30('0x9'),attributes,{'tableName':_0xad30('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63fb=['Integration','integrations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0xc1bdf3,_0x2b7fb3){var _0x182ae8=function(_0x1fdcd){while(--_0x1fdcd){_0xc1bdf3['push'](_0xc1bdf3['shift']());}};_0x182ae8(++_0x2b7fb3);}(_0x63fb,0x16e));var _0xb63f=function(_0x8b2cc7,_0x3f492b){_0x8b2cc7=_0x8b2cc7-0x0;var _0x2a4a45=_0x63fb[_0x8b2cc7];return _0x2a4a45;};'use strict';var _=require(_0xb63f('0x0'));var util=require('util');var logger=require(_0xb63f('0x1'))(_0xb63f('0x2'));var moment=require(_0xb63f('0x3'));var BPromise=require(_0xb63f('0x4'));var rp=require(_0xb63f('0x5'));var fs=require('fs');var path=require(_0xb63f('0x6'));var rimraf=require(_0xb63f('0x7'));var config=require(_0xb63f('0x8'));var attributes=require('./integration.attributes');module[_0xb63f('0x9')]=function(_0x1336af,_0x4b6be1){return _0x1336af[_0xb63f('0xa')](_0xb63f('0xb'),attributes,{'tableName':_0xb63f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb1cb6e..2de249e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x54d4b9,_0xfd4c7f){var _0x39683e=function(_0x244d16){while(--_0x244d16){_0x54d4b9['push'](_0x54d4b9['shift']());}};_0x39683e(++_0xfd4c7f);}(_0xef0f,0x168));var _0xfef0=function(_0x5a49d1,_0x182f0d){_0x5a49d1=_0x5a49d1-0x0;var _0x263816=_0xef0f[_0x5a49d1];return _0x263816;};'use strict';var _=require(_0xfef0('0x0'));var util=require('util');var moment=require(_0xfef0('0x1'));var BPromise=require(_0xfef0('0x2'));var rs=require(_0xfef0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfef0('0x4'))['db'];var utils=require(_0xfef0('0x5'));var logger=require(_0xfef0('0x6'))('rpc');var config=require(_0xfef0('0x7'));var jayson=require(_0xfef0('0x8'));var client=jayson[_0xfef0('0x9')][_0xfef0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xad43e,_0x11dfd7,_0x5130bd){return new BPromise(function(_0x41ec94,_0x58cf6d){return client[_0xfef0('0xb')](_0xad43e,_0x5130bd)[_0xfef0('0xc')](function(_0x3a81cc){logger[_0xfef0('0xd')](_0xfef0('0xe'),_0x11dfd7,_0xfef0('0xf'));logger[_0xfef0('0x10')](_0xfef0('0x11'),_0x11dfd7,_0xfef0('0xf'),JSON[_0xfef0('0x12')](_0x3a81cc));if(_0x3a81cc[_0xfef0('0x13')]){if(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x14')]===0x1f4){logger[_0xfef0('0x13')]('Integration,\x20%s,\x20%s',_0x11dfd7,_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);return _0x58cf6d(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);}logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x3a81cc[_0xfef0('0x13')]['message']);return _0x41ec94(_0x3a81cc[_0xfef0('0x13')]['message']);}else{logger['info']('Integration,\x20%s,\x20%s',_0x11dfd7,_0xfef0('0xf'));_0x41ec94(_0x3a81cc[_0xfef0('0x16')][_0xfef0('0x15')]);}})[_0xfef0('0x17')](function(_0x2a96d9){logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x2a96d9);_0x58cf6d(_0x2a96d9);});});}
\ No newline at end of file
+var _0x0b0e=['Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','debug'];(function(_0x1cc961,_0x2c42ee){var _0x471d86=function(_0x44e422){while(--_0x44e422){_0x1cc961['push'](_0x1cc961['shift']());}};_0x471d86(++_0x2c42ee);}(_0x0b0e,0x187));var _0xe0b0=function(_0xcdac34,_0x43f665){_0xcdac34=_0xcdac34-0x0;var _0x269d23=_0x0b0e[_0xcdac34];return _0x269d23;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x219b1c,_0x5cf9cc,_0x50be7f){return new BPromise(function(_0x11effc,_0x435060){return client[_0xe0b0('0xc')](_0x219b1c,_0x50be7f)[_0xe0b0('0xd')](function(_0x4c24f9){logger[_0xe0b0('0xe')](_0xe0b0('0xf'),_0x5cf9cc,'request\x20sent');logger[_0xe0b0('0x10')](_0xe0b0('0x11'),_0x5cf9cc,'request\x20sent',JSON[_0xe0b0('0x12')](_0x4c24f9));if(_0x4c24f9[_0xe0b0('0x13')]){if(_0x4c24f9[_0xe0b0('0x13')]['code']===0x1f4){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x435060(_0x4c24f9[_0xe0b0('0x13')]['message']);}logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x11effc(_0x4c24f9[_0xe0b0('0x13')]['message']);}else{logger[_0xe0b0('0xe')]('Integration,\x20%s,\x20%s',_0x5cf9cc,_0xe0b0('0x15'));_0x11effc(_0x4c24f9[_0xe0b0('0x16')]['message']);}})[_0xe0b0('0x17')](function(_0x4a4cc0){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4a4cc0);_0x435060(_0x4a4cc0);});});}
\ No newline at end of file
index 36a0884..0b84987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x5180c3,_0x4b35f7){var _0x55c975=function(_0x4746cb){while(--_0x4746cb){_0x5180c3['push'](_0x5180c3['shift']());}};_0x55c975(++_0x4b35f7);}(_0x1967,0x173));var _0x7196=function(_0x3442df,_0x34245c){_0x3442df=_0x3442df-0x0;var _0x59d524=_0x1967[_0x3442df];return _0x59d524;};'use strict';var multer=require('multer');var util=require(_0x7196('0x0'));var path=require(_0x7196('0x1'));var timeout=require(_0x7196('0x2'));var express=require(_0x7196('0x3'));var router=express[_0x7196('0x4')]();var fs_extra=require(_0x7196('0x5'));var auth=require(_0x7196('0x6'));var interaction=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var controller=require(_0x7196('0x9'));router['get']('/',auth[_0x7196('0xa')](),controller[_0x7196('0xb')]);router[_0x7196('0xc')](_0x7196('0xd'),auth[_0x7196('0xa')](),controller[_0x7196('0xe')]);router['get'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x10')]);router[_0x7196('0x11')]('/',auth[_0x7196('0xa')](),controller['create']);router['put'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x12')]);router[_0x7196('0x13')](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x14')]);module[_0x7196('0x15')]=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(_0x218681,_0x16971b){var _0x56c5de=function(_0x34b75a){while(--_0x34b75a){_0x218681['push'](_0x218681['shift']());}};_0x56c5de(++_0x16971b);}(_0x66fa,0x117));var _0xa66f=function(_0x43904c,_0x45b1d8){_0x43904c=_0x43904c-0x0;var _0x56dc2e=_0x66fa[_0x43904c];return _0x56dc2e;};'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 8132197..11c79bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8451=['INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','RECEIVED','FAILED','sequelize','exports','STRING'];(function(_0x79551b,_0x157f49){var _0x5309b5=function(_0x3ab05d){while(--_0x3ab05d){_0x79551b['push'](_0x79551b['shift']());}};_0x5309b5(++_0x157f49);}(_0x8451,0xef));var _0x1845=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x8451[_0x36ed48];return _0x51c63a;};'use strict';var Sequelize=require(_0x1845('0x0'));module[_0x1845('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x1845('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x1845('0x2')]},'integrationId':{'type':Sequelize[_0x1845('0x3')]},'contacts':{'type':Sequelize[_0x1845('0x2')]},'uniqueid':{'type':Sequelize[_0x1845('0x2')]},'calleridnum':{'type':Sequelize[_0x1845('0x2')]},'calleridname':{'type':Sequelize[_0x1845('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x1845('0x2')]},'membername':{'type':Sequelize[_0x1845('0x2')]},'agentcalledAt':{'type':Sequelize[_0x1845('0x4')]},'agentconnectAt':{'type':Sequelize[_0x1845('0x4')]},'holdtime':{'type':Sequelize[_0x1845('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x1845('0x4')]},'talktime':{'type':Sequelize[_0x1845('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x1845('0x3')]},'reason':{'type':Sequelize[_0x1845('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x1845('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x1845('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x1845('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x1845('0x2')]},'connectedlinenum':{'type':Sequelize[_0x1845('0x2')]},'connectedlinename':{'type':Sequelize[_0x1845('0x2')]},'language':{'type':Sequelize[_0x1845('0x2')]},'accountcode':{'type':Sequelize[_0x1845('0x2')]},'context':{'type':Sequelize[_0x1845('0x2')]},'exten':{'type':Sequelize[_0x1845('0x2')]},'priority':{'type':Sequelize[_0x1845('0x2')]},'destchannel':{'type':Sequelize[_0x1845('0x2')]},'destchannelstate':{'type':Sequelize[_0x1845('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x1845('0x2')]},'destcalleridnum':{'type':Sequelize[_0x1845('0x2')]},'destcalleridname':{'type':Sequelize[_0x1845('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x1845('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x1845('0x2')]},'destaccountcode':{'type':Sequelize[_0x1845('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x1845('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x1845('0x2')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x1845('0x2')]},'subject':{'type':Sequelize[_0x1845('0x2')]},'from':{'type':Sequelize[_0x1845('0x2')]},'to':{'type':Sequelize[_0x1845('0x2')]},'cc':{'type':Sequelize[_0x1845('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0x1845('0x6')]},'text':{'type':Sequelize[_0x1845('0x6')]},'status':{'type':Sequelize[_0x1845('0x7')](_0x1845('0x8'),'SENDING',_0x1845('0x9'),_0x1845('0xa'))},'url':{'type':Sequelize[_0x1845('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x1845('0x3')]}};
\ No newline at end of file
+var _0xdf22=['BOOLEAN','TEXT','SENT','SENDING','RECEIVED','FAILED','exports','STRING','DATE','INTEGER'];(function(_0x821e2e,_0x3e0be9){var _0x43b098=function(_0x20f76e){while(--_0x20f76e){_0x821e2e['push'](_0x821e2e['shift']());}};_0x43b098(++_0x3e0be9);}(_0xdf22,0x74));var _0x2df2=function(_0x55060d,_0x481134){_0x55060d=_0x55060d-0x0;var _0x40996c=_0xdf22[_0x55060d];return _0x40996c;};'use strict';var Sequelize=require('sequelize');module[_0x2df2('0x0')]={'integration':{'type':Sequelize[_0x2df2('0x1')]},'eventChannel':{'type':Sequelize[_0x2df2('0x1')]},'exitStatus':{'type':Sequelize[_0x2df2('0x1')]},'ticketId':{'type':Sequelize[_0x2df2('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x2df2('0x1')]},'uniqueid':{'type':Sequelize[_0x2df2('0x1')]},'calleridnum':{'type':Sequelize[_0x2df2('0x1')]},'calleridname':{'type':Sequelize[_0x2df2('0x1')]},'queue':{'type':Sequelize[_0x2df2('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x2df2('0x1')]},'agentcalledAt':{'type':Sequelize[_0x2df2('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x2df2('0x3')]},'agentcomplete':{'type':Sequelize[_0x2df2('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x2df2('0x2')]},'talktime':{'type':Sequelize[_0x2df2('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2df2('0x3')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x2df2('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x2df2('0x2')]},'lastevent':{'type':Sequelize[_0x2df2('0x1')]},'channel':{'type':Sequelize[_0x2df2('0x1')]},'channelstate':{'type':Sequelize[_0x2df2('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x2df2('0x1')]},'connectedlinename':{'type':Sequelize[_0x2df2('0x1')]},'language':{'type':Sequelize[_0x2df2('0x1')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x2df2('0x1')]},'exten':{'type':Sequelize[_0x2df2('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x2df2('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x2df2('0x1')]},'destcalleridnum':{'type':Sequelize[_0x2df2('0x1')]},'destcalleridname':{'type':Sequelize[_0x2df2('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x2df2('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x2df2('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x2df2('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x2df2('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x2df2('0x1')]},'inReplyTo':{'type':Sequelize[_0x2df2('0x1')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x2df2('0x1')]},'to':{'type':Sequelize[_0x2df2('0x1')]},'cc':{'type':Sequelize[_0x2df2('0x1')]},'attachment':{'type':Sequelize[_0x2df2('0x5')]},'html':{'type':Sequelize[_0x2df2('0x5')]},'text':{'type':Sequelize[_0x2df2('0x5')]},'status':{'type':Sequelize['ENUM'](_0x2df2('0x6'),_0x2df2('0x7'),_0x2df2('0x8'),_0x2df2('0x9'))},'url':{'type':Sequelize[_0x2df2('0x1')]},'app':{'type':Sequelize[_0x2df2('0x1')]},'appdata':{'type':Sequelize[_0x2df2('0x1')]},'projectId':{'type':Sequelize[_0x2df2('0x3')]}};
\ No newline at end of file
index 008cfcc..08ef370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc266=['create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','IntegrationReport','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','length','find'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc266,0xa7));var _0x6c26=function(_0x5efc9a,_0x1022b4){_0x5efc9a=_0x5efc9a-0x0;var _0x5b4f11=_0xc266[_0x5efc9a];return _0x5b4f11;};'use strict';var emlformat=require(_0x6c26('0x0'));var rimraf=require(_0x6c26('0x1'));var zipdir=require(_0x6c26('0x2'));var jsonpatch=require(_0x6c26('0x3'));var rp=require(_0x6c26('0x4'));var moment=require(_0x6c26('0x5'));var BPromise=require(_0x6c26('0x6'));var Mustache=require(_0x6c26('0x7'));var util=require(_0x6c26('0x8'));var path=require(_0x6c26('0x9'));var sox=require('sox');var csv=require(_0x6c26('0xa'));var ejs=require(_0x6c26('0xb'));var fs=require('fs');var fs_extra=require(_0x6c26('0xc'));var _=require(_0x6c26('0xd'));var squel=require(_0x6c26('0xe'));var crypto=require(_0x6c26('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x6c26('0x10'));var toCsv=require(_0x6c26('0xa'));var querystring=require(_0x6c26('0x11'));var Papa=require(_0x6c26('0x12'));var Redis=require(_0x6c26('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x6c26('0x14'));var as=require(_0x6c26('0x15'));var hardwareService=require(_0x6c26('0x16'));var logger=require(_0x6c26('0x17'))(_0x6c26('0x18'));var utils=require(_0x6c26('0x19'));var config=require(_0x6c26('0x1a'));var licenseUtil=require(_0x6c26('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46ae1f,_0x676b2a){_0x676b2a=_0x676b2a||0xcc;return function(_0x53f59f){if(_0x53f59f){return _0x46ae1f[_0x6c26('0x1c')](_0x676b2a);}return _0x46ae1f[_0x6c26('0x1d')](_0x676b2a)[_0x6c26('0x1e')]();};}function respondWithResult(_0x1a7ef6,_0x4d26ab){_0x4d26ab=_0x4d26ab||0xc8;return function(_0x4b1b82){if(_0x4b1b82){return _0x1a7ef6[_0x6c26('0x1d')](_0x4d26ab)['json'](_0x4b1b82);}};}function respondWithFilteredResult(_0x12831d,_0x22780e){return function(_0x2488c5){if(_0x2488c5){var _0x477bd9=typeof _0x22780e[_0x6c26('0x1f')]===_0x6c26('0x20')&&typeof _0x22780e['limit']===_0x6c26('0x20');var _0x43617c=_0x2488c5[_0x6c26('0x21')];var _0x58f3e0=_0x477bd9?0x0:_0x22780e[_0x6c26('0x1f')];var _0x3f2f50=_0x477bd9?_0x2488c5[_0x6c26('0x21')]:_0x22780e[_0x6c26('0x1f')]+_0x22780e[_0x6c26('0x22')];var _0x281d8c;if(_0x3f2f50>=_0x43617c){_0x3f2f50=_0x43617c;_0x281d8c=0xc8;}else{_0x281d8c=0xce;}_0x12831d[_0x6c26('0x1d')](_0x281d8c);return _0x12831d[_0x6c26('0x23')](_0x6c26('0x24'),_0x58f3e0+'-'+_0x3f2f50+'/'+_0x43617c)[_0x6c26('0x25')](_0x2488c5);}return null;};}function patchUpdates(_0x717172){return function(_0x3a5723){try{jsonpatch[_0x6c26('0x26')](_0x3a5723,_0x717172,!![]);}catch(_0x47676b){return BPromise[_0x6c26('0x27')](_0x47676b);}return _0x3a5723[_0x6c26('0x28')]();};}function saveUpdates(_0xa71ccb,_0x1b45b1){return function(_0x3308ef){if(_0x3308ef){return _0x3308ef[_0x6c26('0x29')](_0xa71ccb)[_0x6c26('0x2a')](function(_0x119522){return _0x119522;});}return null;};}function removeEntity(_0xffca76,_0x1dc083){return function(_0x3b9235){if(_0x3b9235){return _0x3b9235[_0x6c26('0x2b')]()[_0x6c26('0x2a')](function(){_0xffca76['status'](0xcc)[_0x6c26('0x1e')]();});}};}function handleEntityNotFound(_0x2c4a85,_0x5bac8d){return function(_0x2f1052){if(!_0x2f1052){_0x2c4a85['sendStatus'](0x194);}return _0x2f1052;};}function handleError(_0x5bb419,_0x498948){_0x498948=_0x498948||0x1f4;return function(_0x2e22fe){logger[_0x6c26('0x2c')](_0x2e22fe[_0x6c26('0x2d')]);if(_0x2e22fe[_0x6c26('0x2e')]){delete _0x2e22fe[_0x6c26('0x2e')];}_0x5bb419[_0x6c26('0x1d')](_0x498948)[_0x6c26('0x2f')](_0x2e22fe);};}exports[_0x6c26('0x30')]=function(_0x41d532,_0x1a3fd7){var _0x2e444d={},_0x3fda68={},_0x4734ae={'count':0x0,'rows':[]};var _0x39b61d=_['map'](db[_0x6c26('0x31')][_0x6c26('0x32')],function(_0x1779ba){return{'name':_0x1779ba[_0x6c26('0x33')],'type':_0x1779ba[_0x6c26('0x34')][_0x6c26('0x35')]};});_0x3fda68[_0x6c26('0x36')]=_[_0x6c26('0x37')](_0x39b61d,_0x6c26('0x2e'));_0x3fda68['query']=_[_0x6c26('0x38')](_0x41d532[_0x6c26('0x39')]);_0x3fda68[_0x6c26('0x3a')]=_[_0x6c26('0x3b')](_0x3fda68['model'],_0x3fda68[_0x6c26('0x39')]);_0x2e444d[_0x6c26('0x3c')]=_[_0x6c26('0x3b')](_0x3fda68[_0x6c26('0x36')],qs[_0x6c26('0x3d')](_0x41d532[_0x6c26('0x39')][_0x6c26('0x3d')]));_0x2e444d[_0x6c26('0x3c')]=_0x2e444d[_0x6c26('0x3c')]['length']?_0x2e444d[_0x6c26('0x3c')]:_0x3fda68['model'];if(!_0x41d532[_0x6c26('0x39')]['hasOwnProperty'](_0x6c26('0x3e'))){_0x2e444d[_0x6c26('0x22')]=qs[_0x6c26('0x22')](_0x41d532['query'][_0x6c26('0x22')]);_0x2e444d['offset']=qs['offset'](_0x41d532[_0x6c26('0x39')][_0x6c26('0x1f')]);}_0x2e444d[_0x6c26('0x3f')]=qs[_0x6c26('0x40')](_0x41d532[_0x6c26('0x39')][_0x6c26('0x40')]);_0x2e444d[_0x6c26('0x41')]=qs[_0x6c26('0x3a')](_[_0x6c26('0x42')](_0x41d532[_0x6c26('0x39')],_0x3fda68['filters']),_0x39b61d);if(_0x41d532[_0x6c26('0x39')][_0x6c26('0x43')]){_0x2e444d[_0x6c26('0x41')]=_['merge'](_0x2e444d[_0x6c26('0x41')],{'$or':_[_0x6c26('0x37')](_0x39b61d,function(_0xbb3fc1){if(_0xbb3fc1['type']!==_0x6c26('0x44')){var _0x3ac789={};_0x3ac789[_0xbb3fc1[_0x6c26('0x2e')]]={'$like':'%'+_0x41d532[_0x6c26('0x39')][_0x6c26('0x43')]+'%'};return _0x3ac789;}})});}_0x2e444d=_[_0x6c26('0x45')]({},_0x2e444d,_0x41d532[_0x6c26('0x46')]);var _0x19f21d={'where':_0x2e444d[_0x6c26('0x41')]};return db['IntegrationReport'][_0x6c26('0x21')](_0x19f21d)['then'](function(_0x42fb00){_0x4734ae[_0x6c26('0x21')]=_0x42fb00;if(_0x41d532[_0x6c26('0x39')][_0x6c26('0x47')]){_0x2e444d[_0x6c26('0x48')]=[{'all':!![]}];}return db[_0x6c26('0x31')]['findAll'](_0x2e444d);})[_0x6c26('0x2a')](function(_0x5c2525){_0x4734ae[_0x6c26('0x49')]=_0x5c2525;return _0x4734ae;})[_0x6c26('0x2a')](respondWithFilteredResult(_0x1a3fd7,_0x2e444d))[_0x6c26('0x4a')](handleError(_0x1a3fd7,null));};exports[_0x6c26('0x4b')]=function(_0x4cb4ff,_0x24d1a4){var _0x1b735e={'raw':![],'where':{'id':_0x4cb4ff[_0x6c26('0x4c')]['id']}},_0x5beda2={};_0x5beda2[_0x6c26('0x36')]=_[_0x6c26('0x38')](db[_0x6c26('0x31')][_0x6c26('0x32')]);_0x5beda2[_0x6c26('0x39')]=_[_0x6c26('0x38')](_0x4cb4ff['query']);_0x5beda2[_0x6c26('0x3a')]=_['intersection'](_0x5beda2[_0x6c26('0x36')],_0x5beda2[_0x6c26('0x39')]);_0x1b735e[_0x6c26('0x3c')]=_['intersection'](_0x5beda2['model'],qs[_0x6c26('0x3d')](_0x4cb4ff['query'][_0x6c26('0x3d')]));_0x1b735e[_0x6c26('0x3c')]=_0x1b735e[_0x6c26('0x3c')][_0x6c26('0x4d')]?_0x1b735e[_0x6c26('0x3c')]:_0x5beda2[_0x6c26('0x36')];if(_0x4cb4ff[_0x6c26('0x39')][_0x6c26('0x47')]){_0x1b735e[_0x6c26('0x48')]=[{'all':!![]}];}_0x1b735e=_[_0x6c26('0x45')]({},_0x1b735e,_0x4cb4ff[_0x6c26('0x46')]);return db[_0x6c26('0x31')][_0x6c26('0x4e')](_0x1b735e)['then'](handleEntityNotFound(_0x24d1a4,null))['then'](respondWithResult(_0x24d1a4,null))[_0x6c26('0x4a')](handleError(_0x24d1a4,null));};exports[_0x6c26('0x4f')]=function(_0xe9ab1a,_0x401ed3){return db[_0x6c26('0x31')]['create'](_0xe9ab1a[_0x6c26('0x50')],{})[_0x6c26('0x2a')](respondWithResult(_0x401ed3,0xc9))[_0x6c26('0x4a')](handleError(_0x401ed3,null));};exports[_0x6c26('0x29')]=function(_0x313384,_0x40f220){if(_0x313384[_0x6c26('0x50')]['id']){delete _0x313384['body']['id'];}return db[_0x6c26('0x31')]['find']({'where':{'id':_0x313384[_0x6c26('0x4c')]['id']}})[_0x6c26('0x2a')](handleEntityNotFound(_0x40f220,null))[_0x6c26('0x2a')](saveUpdates(_0x313384[_0x6c26('0x50')],null))[_0x6c26('0x2a')](respondWithResult(_0x40f220,null))[_0x6c26('0x4a')](handleError(_0x40f220,null));};exports[_0x6c26('0x2b')]=function(_0x31bb7d,_0x13ed14){return db[_0x6c26('0x31')][_0x6c26('0x4e')]({'where':{'id':_0x31bb7d[_0x6c26('0x4c')]['id']}})[_0x6c26('0x2a')](handleEntityNotFound(_0x13ed14,null))['then'](removeEntity(_0x13ed14,null))[_0x6c26('0x4a')](handleError(_0x13ed14,null));};exports['describe']=function(_0x3f19be,_0x1a0469){return db[_0x6c26('0x31')][_0x6c26('0x51')]()['then'](respondWithResult(_0x1a0469,null))['catch'](handleError(_0x1a0469,null));};
\ No newline at end of file
+var _0x31fd=['destroy','error','stack','name','send','index','map','IntegrationReport','rawAttributes','fieldName','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','then','findAll','rows','params','keys','include','options','find','catch','create','body','describe','rimraf','zip-dir','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x31fd,0x71));var _0xd31f=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x31fd[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd31f('0x0'));var zipdir=require(_0xd31f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd31f('0x2'));var Mustache=require('mustache');var util=require(_0xd31f('0x3'));var path=require(_0xd31f('0x4'));var sox=require(_0xd31f('0x5'));var csv=require(_0xd31f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd31f('0x7'));var _=require(_0xd31f('0x8'));var squel=require(_0xd31f('0x9'));var crypto=require(_0xd31f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd31f('0xb'));var toCsv=require(_0xd31f('0x6'));var querystring=require(_0xd31f('0xc'));var Papa=require(_0xd31f('0xd'));var Redis=require(_0xd31f('0xe'));var authService=require(_0xd31f('0xf'));var qs=require(_0xd31f('0x10'));var as=require(_0xd31f('0x11'));var hardwareService=require(_0xd31f('0x12'));var logger=require(_0xd31f('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xd31f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd31f('0x15'))['db'];function respondWithStatusCode(_0x3cb453,_0x4a9c45){_0x4a9c45=_0x4a9c45||0xcc;return function(_0x54c9ef){if(_0x54c9ef){return _0x3cb453[_0xd31f('0x16')](_0x4a9c45);}return _0x3cb453[_0xd31f('0x17')](_0x4a9c45)['end']();};}function respondWithResult(_0x5cfedc,_0xa5f41a){_0xa5f41a=_0xa5f41a||0xc8;return function(_0x1c8411){if(_0x1c8411){return _0x5cfedc[_0xd31f('0x17')](_0xa5f41a)['json'](_0x1c8411);}};}function respondWithFilteredResult(_0x5e4d6b,_0x2ac858){return function(_0x2232e9){if(_0x2232e9){var _0x5bfda6=typeof _0x2ac858[_0xd31f('0x18')]===_0xd31f('0x19')&&typeof _0x2ac858[_0xd31f('0x1a')]===_0xd31f('0x19');var _0xfb7e0b=_0x2232e9[_0xd31f('0x1b')];var _0x4f833f=_0x5bfda6?0x0:_0x2ac858['offset'];var _0x5f9c74=_0x5bfda6?_0x2232e9[_0xd31f('0x1b')]:_0x2ac858[_0xd31f('0x18')]+_0x2ac858[_0xd31f('0x1a')];var _0x8d9db3;if(_0x5f9c74>=_0xfb7e0b){_0x5f9c74=_0xfb7e0b;_0x8d9db3=0xc8;}else{_0x8d9db3=0xce;}_0x5e4d6b[_0xd31f('0x17')](_0x8d9db3);return _0x5e4d6b['set'](_0xd31f('0x1c'),_0x4f833f+'-'+_0x5f9c74+'/'+_0xfb7e0b)[_0xd31f('0x1d')](_0x2232e9);}return null;};}function patchUpdates(_0xc05bfb){return function(_0x3d5911){try{jsonpatch[_0xd31f('0x1e')](_0x3d5911,_0xc05bfb,!![]);}catch(_0x289fcc){return BPromise[_0xd31f('0x1f')](_0x289fcc);}return _0x3d5911['save']();};}function saveUpdates(_0x5685c2,_0x5df67b){return function(_0x16679e){if(_0x16679e){return _0x16679e[_0xd31f('0x20')](_0x5685c2)['then'](function(_0x327a52){return _0x327a52;});}return null;};}function removeEntity(_0xc9ea84,_0x41749a){return function(_0x2a5253){if(_0x2a5253){return _0x2a5253[_0xd31f('0x21')]()['then'](function(){_0xc9ea84[_0xd31f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b88db,_0x59b61f){return function(_0xf3ad11){if(!_0xf3ad11){_0x5b88db['sendStatus'](0x194);}return _0xf3ad11;};}function handleError(_0xeca09a,_0x209d89){_0x209d89=_0x209d89||0x1f4;return function(_0x589be6){logger[_0xd31f('0x22')](_0x589be6[_0xd31f('0x23')]);if(_0x589be6[_0xd31f('0x24')]){delete _0x589be6['name'];}_0xeca09a[_0xd31f('0x17')](_0x209d89)[_0xd31f('0x25')](_0x589be6);};}exports[_0xd31f('0x26')]=function(_0x4cbe1d,_0x16ccb8){var _0x37d82b={},_0x15c04a={},_0x1b0e5a={'count':0x0,'rows':[]};var _0x3ac69=_[_0xd31f('0x27')](db[_0xd31f('0x28')][_0xd31f('0x29')],function(_0x566aaf){return{'name':_0x566aaf[_0xd31f('0x2a')],'type':_0x566aaf['type'][_0xd31f('0x2b')]};});_0x15c04a[_0xd31f('0x2c')]=_[_0xd31f('0x27')](_0x3ac69,_0xd31f('0x24'));_0x15c04a[_0xd31f('0x2d')]=_['keys'](_0x4cbe1d[_0xd31f('0x2d')]);_0x15c04a['filters']=_['intersection'](_0x15c04a['model'],_0x15c04a['query']);_0x37d82b[_0xd31f('0x2e')]=_[_0xd31f('0x2f')](_0x15c04a[_0xd31f('0x2c')],qs[_0xd31f('0x30')](_0x4cbe1d['query'][_0xd31f('0x30')]));_0x37d82b['attributes']=_0x37d82b[_0xd31f('0x2e')][_0xd31f('0x31')]?_0x37d82b[_0xd31f('0x2e')]:_0x15c04a[_0xd31f('0x2c')];if(!_0x4cbe1d[_0xd31f('0x2d')][_0xd31f('0x32')](_0xd31f('0x33'))){_0x37d82b[_0xd31f('0x1a')]=qs[_0xd31f('0x1a')](_0x4cbe1d[_0xd31f('0x2d')]['limit']);_0x37d82b[_0xd31f('0x18')]=qs[_0xd31f('0x18')](_0x4cbe1d['query'][_0xd31f('0x18')]);}_0x37d82b[_0xd31f('0x34')]=qs['sort'](_0x4cbe1d[_0xd31f('0x2d')][_0xd31f('0x35')]);_0x37d82b[_0xd31f('0x36')]=qs[_0xd31f('0x37')](_[_0xd31f('0x38')](_0x4cbe1d[_0xd31f('0x2d')],_0x15c04a[_0xd31f('0x37')]),_0x3ac69);if(_0x4cbe1d[_0xd31f('0x2d')][_0xd31f('0x39')]){_0x37d82b[_0xd31f('0x36')]=_['merge'](_0x37d82b[_0xd31f('0x36')],{'$or':_[_0xd31f('0x27')](_0x3ac69,function(_0x580031){if(_0x580031[_0xd31f('0x3a')]!==_0xd31f('0x3b')){var _0x208f07={};_0x208f07[_0x580031[_0xd31f('0x24')]]={'$like':'%'+_0x4cbe1d[_0xd31f('0x2d')][_0xd31f('0x39')]+'%'};return _0x208f07;}})});}_0x37d82b=_[_0xd31f('0x3c')]({},_0x37d82b,_0x4cbe1d['options']);var _0x2d4628={'where':_0x37d82b['where']};return db[_0xd31f('0x28')][_0xd31f('0x1b')](_0x2d4628)[_0xd31f('0x3d')](function(_0xf29e8b){_0x1b0e5a[_0xd31f('0x1b')]=_0xf29e8b;if(_0x4cbe1d[_0xd31f('0x2d')]['includeAll']){_0x37d82b['include']=[{'all':!![]}];}return db[_0xd31f('0x28')][_0xd31f('0x3e')](_0x37d82b);})[_0xd31f('0x3d')](function(_0x5b5a1f){_0x1b0e5a[_0xd31f('0x3f')]=_0x5b5a1f;return _0x1b0e5a;})[_0xd31f('0x3d')](respondWithFilteredResult(_0x16ccb8,_0x37d82b))['catch'](handleError(_0x16ccb8,null));};exports['show']=function(_0x341764,_0x3e5aa1){var _0x54cfd4={'raw':![],'where':{'id':_0x341764[_0xd31f('0x40')]['id']}},_0x18948f={};_0x18948f[_0xd31f('0x2c')]=_[_0xd31f('0x41')](db[_0xd31f('0x28')]['rawAttributes']);_0x18948f[_0xd31f('0x2d')]=_[_0xd31f('0x41')](_0x341764[_0xd31f('0x2d')]);_0x18948f[_0xd31f('0x37')]=_[_0xd31f('0x2f')](_0x18948f[_0xd31f('0x2c')],_0x18948f['query']);_0x54cfd4[_0xd31f('0x2e')]=_[_0xd31f('0x2f')](_0x18948f['model'],qs[_0xd31f('0x30')](_0x341764[_0xd31f('0x2d')]['fields']));_0x54cfd4['attributes']=_0x54cfd4[_0xd31f('0x2e')][_0xd31f('0x31')]?_0x54cfd4[_0xd31f('0x2e')]:_0x18948f[_0xd31f('0x2c')];if(_0x341764[_0xd31f('0x2d')]['includeAll']){_0x54cfd4[_0xd31f('0x42')]=[{'all':!![]}];}_0x54cfd4=_[_0xd31f('0x3c')]({},_0x54cfd4,_0x341764[_0xd31f('0x43')]);return db[_0xd31f('0x28')][_0xd31f('0x44')](_0x54cfd4)['then'](handleEntityNotFound(_0x3e5aa1,null))[_0xd31f('0x3d')](respondWithResult(_0x3e5aa1,null))[_0xd31f('0x45')](handleError(_0x3e5aa1,null));};exports[_0xd31f('0x46')]=function(_0x4f2c59,_0x29caa0){return db[_0xd31f('0x28')][_0xd31f('0x46')](_0x4f2c59[_0xd31f('0x47')],{})[_0xd31f('0x3d')](respondWithResult(_0x29caa0,0xc9))[_0xd31f('0x45')](handleError(_0x29caa0,null));};exports[_0xd31f('0x20')]=function(_0x5e561b,_0x3817ab){if(_0x5e561b[_0xd31f('0x47')]['id']){delete _0x5e561b[_0xd31f('0x47')]['id'];}return db[_0xd31f('0x28')][_0xd31f('0x44')]({'where':{'id':_0x5e561b[_0xd31f('0x40')]['id']}})['then'](handleEntityNotFound(_0x3817ab,null))[_0xd31f('0x3d')](saveUpdates(_0x5e561b[_0xd31f('0x47')],null))[_0xd31f('0x3d')](respondWithResult(_0x3817ab,null))['catch'](handleError(_0x3817ab,null));};exports[_0xd31f('0x21')]=function(_0x4c52b7,_0x1c457b){return db[_0xd31f('0x28')][_0xd31f('0x44')]({'where':{'id':_0x4c52b7[_0xd31f('0x40')]['id']}})['then'](handleEntityNotFound(_0x1c457b,null))['then'](removeEntity(_0x1c457b,null))['catch'](handleError(_0x1c457b,null));};exports['describe']=function(_0x399ee2,_0x5808b6){return db['IntegrationReport'][_0xd31f('0x48')]()['then'](respondWithResult(_0x5808b6,null))['catch'](handleError(_0x5808b6,null));};
\ No newline at end of file
index 78c0cbb..f0812c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3981=['../../config/logger','bluebird','request-promise','../../config/environment','IntegrationReport','report_integration','lodash'];(function(_0x1a3723,_0x48dfbd){var _0xab01e6=function(_0x46f749){while(--_0x46f749){_0x1a3723['push'](_0x1a3723['shift']());}};_0xab01e6(++_0x48dfbd);}(_0x3981,0x18e));var _0x1398=function(_0x4152d2,_0x58aea5){_0x4152d2=_0x4152d2-0x0;var _0x2bba3e=_0x3981[_0x4152d2];return _0x2bba3e;};'use strict';var _=require(_0x1398('0x0'));var util=require('util');var logger=require(_0x1398('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1398('0x2'));var rp=require(_0x1398('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1398('0x4'));var attributes=require('./integrationReport.attributes');module['exports']=function(_0x2e23f3,_0x11e589){return _0x2e23f3['define'](_0x1398('0x5'),attributes,{'tableName':_0x1398('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a50=['IntegrationReport','report_integration','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3a50,0x138));var _0x03a5=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x3a50[_0x46e363];return _0x3fb059;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x03a5('0x0'))('api');var moment=require('moment');var BPromise=require(_0x03a5('0x1'));var rp=require(_0x03a5('0x2'));var fs=require('fs');var path=require(_0x03a5('0x3'));var rimraf=require(_0x03a5('0x4'));var config=require(_0x03a5('0x5'));var attributes=require(_0x03a5('0x6'));module[_0x03a5('0x7')]=function(_0x2425f4,_0x7e9672){return _0x2425f4['define'](_0x03a5('0x8'),attributes,{'tableName':_0x03a5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ddcc208..73446e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0x53ec,0x192));var _0xc53e=function(_0x13211b,_0x3050c2){_0x13211b=_0x13211b-0x0;var _0x4adb44=_0x53ec[_0x13211b];return _0x4adb44;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
+var _0xc2c7=['../../config/logger','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xc2c7,0x134));var _0x7c2c=function(_0x2bd354,_0x4ade9c){_0x2bd354=_0x2bd354-0x0;var _0x2b0385=_0xc2c7[_0x2bd354];return _0x2b0385;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var moment=require(_0x7c2c('0x1'));var BPromise=require(_0x7c2c('0x2'));var rs=require(_0x7c2c('0x3'));var fs=require('fs');var Redis=require(_0x7c2c('0x4'));var db=require(_0x7c2c('0x5'))['db'];var utils=require(_0x7c2c('0x6'));var logger=require(_0x7c2c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c2c('0x8'));var client=jayson[_0x7c2c('0x9')][_0x7c2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54f027,_0x4abe93,_0x5a1027){return new BPromise(function(_0x2274cd,_0x29638d){return client[_0x7c2c('0xb')](_0x54f027,_0x5a1027)[_0x7c2c('0xc')](function(_0x279cff){logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x4abe93,_0x7c2c('0xe'),JSON[_0x7c2c('0x11')](_0x279cff));if(_0x279cff[_0x7c2c('0x12')]){if(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x13')]===0x1f4){logger[_0x7c2c('0x12')](_0x7c2c('0xd'),_0x4abe93,_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);return _0x29638d(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}logger[_0x7c2c('0x12')]('IntegrationReport,\x20%s,\x20%s',_0x4abe93,_0x279cff['error'][_0x7c2c('0x14')]);return _0x2274cd(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}else{logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));_0x2274cd(_0x279cff['result'][_0x7c2c('0x14')]);}})['catch'](function(_0x1aa355){logger['error'](_0x7c2c('0xd'),_0x4abe93,_0x1aa355);_0x29638d(_0x1aa355);});});}
\ No newline at end of file
index 96f9f90..dff09e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4989=['post','create','addInterval','/:id/sub_intervals/create_many','update','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','/:id','show','/:id/sub_intervals','getIntervals'];(function(_0x3b4c58,_0x2a728b){var _0x103298=function(_0x12ba1d){while(--_0x12ba1d){_0x3b4c58['push'](_0x3b4c58['shift']());}};_0x103298(++_0x2a728b);}(_0x4989,0x79));var _0x9498=function(_0x33925b,_0x95cfc6){_0x33925b=_0x33925b-0x0;var _0x375e21=_0x4989[_0x33925b];return _0x375e21;};'use strict';var multer=require(_0x9498('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9498('0x1'));var express=require(_0x9498('0x2'));var router=express[_0x9498('0x3')]();var fs_extra=require(_0x9498('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9498('0x5'));var controller=require('./interval.controller');router[_0x9498('0x6')]('/',auth[_0x9498('0x7')](),controller['index']);router[_0x9498('0x6')](_0x9498('0x8'),auth[_0x9498('0x7')](),controller[_0x9498('0x9')]);router[_0x9498('0x6')](_0x9498('0xa'),auth[_0x9498('0x7')](),controller[_0x9498('0xb')]);router[_0x9498('0xc')]('/',auth[_0x9498('0x7')](),controller[_0x9498('0xd')]);router['post'](_0x9498('0xa'),auth[_0x9498('0x7')](),controller[_0x9498('0xe')]);router['post'](_0x9498('0xf'),auth[_0x9498('0x7')](),controller['addIntervals']);router['put']('/:id',auth[_0x9498('0x7')](),controller[_0x9498('0x10')]);router[_0x9498('0x11')](_0x9498('0x8'),auth[_0x9498('0x7')](),controller[_0x9498('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x44ff=['getIntervals','post','create','/:id/sub_intervals','addInterval','addIntervals','put','/:id','update','delete','destroy','util','path','connect-timeout','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show'];(function(_0x2f1c42,_0x482ce3){var _0x2f5f64=function(_0x37fd99){while(--_0x37fd99){_0x2f1c42['push'](_0x2f1c42['shift']());}};_0x2f5f64(++_0x482ce3);}(_0x44ff,0x1c3));var _0xf44f=function(_0x1cab4d,_0x5824c9){_0x1cab4d=_0x1cab4d-0x0;var _0x368a67=_0x44ff[_0x1cab4d];return _0x368a67;};'use strict';var multer=require('multer');var util=require(_0xf44f('0x0'));var path=require(_0xf44f('0x1'));var timeout=require(_0xf44f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf44f('0x3'));var config=require(_0xf44f('0x4'));var controller=require('./interval.controller');router['get']('/',auth[_0xf44f('0x5')](),controller[_0xf44f('0x6')]);router[_0xf44f('0x7')]('/:id',auth[_0xf44f('0x5')](),controller[_0xf44f('0x8')]);router[_0xf44f('0x7')]('/:id/sub_intervals',auth[_0xf44f('0x5')](),controller[_0xf44f('0x9')]);router[_0xf44f('0xa')]('/',auth[_0xf44f('0x5')](),controller[_0xf44f('0xb')]);router[_0xf44f('0xa')](_0xf44f('0xc'),auth[_0xf44f('0x5')](),controller[_0xf44f('0xd')]);router[_0xf44f('0xa')]('/:id/sub_intervals/create_many',auth[_0xf44f('0x5')](),controller[_0xf44f('0xe')]);router[_0xf44f('0xf')](_0xf44f('0x10'),auth[_0xf44f('0x5')](),controller[_0xf44f('0x11')]);router[_0xf44f('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xf44f('0x13')]);module['exports']=router;
\ No newline at end of file
index 349cfad..adc25bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc141=['exports','STRING','sequelize'];(function(_0x586730,_0x1c95d9){var _0x4d67e5=function(_0x81180c){while(--_0x81180c){_0x586730['push'](_0x586730['shift']());}};_0x4d67e5(++_0x1c95d9);}(_0xc141,0xe3));var _0x1c14=function(_0x1a647a,_0x3c940c){_0x1a647a=_0x1a647a-0x0;var _0x205d87=_0xc141[_0x1a647a];return _0x205d87;};'use strict';var Sequelize=require(_0x1c14('0x0'));module[_0x1c14('0x1')]={'name':{'type':Sequelize[_0x1c14('0x2')]},'description':{'type':Sequelize[_0x1c14('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x620e=['sequelize','exports','STRING'];(function(_0x23a2c3,_0x2f2b57){var _0x5f48b7=function(_0x4ad893){while(--_0x4ad893){_0x23a2c3['push'](_0x23a2c3['shift']());}};_0x5f48b7(++_0x2f2b57);}(_0x620e,0xf9));var _0xe620=function(_0x19267f,_0x116d2f){_0x19267f=_0x19267f-0x0;var _0xb29df4=_0x620e[_0x19267f];return _0xb29df4;};'use strict';var Sequelize=require(_0xe620('0x0'));module[_0xe620('0x1')]={'name':{'type':Sequelize[_0xe620('0x2')]},'description':{'type':Sequelize[_0xe620('0x2')]},'interval':{'type':Sequelize[_0xe620('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 7224bc1..7ce2d3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf9a=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','update','then','destroy','get','Intervals','UserProfileResource','error','name','index','map','Interval','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','IntervalId','getIntervals','findOne','addIntervals','bulkCreate','eml-format'];(function(_0x32ab21,_0x26ca1b){var _0x3c9408=function(_0x57d1db){while(--_0x57d1db){_0x32ab21['push'](_0x32ab21['shift']());}};_0x3c9408(++_0x26ca1b);}(_0xdf9a,0x1c6));var _0xadf9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdf9a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xadf9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xadf9('0x1'));var jsonpatch=require(_0xadf9('0x2'));var rp=require(_0xadf9('0x3'));var moment=require(_0xadf9('0x4'));var BPromise=require(_0xadf9('0x5'));var Mustache=require(_0xadf9('0x6'));var util=require(_0xadf9('0x7'));var path=require(_0xadf9('0x8'));var sox=require(_0xadf9('0x9'));var csv=require(_0xadf9('0xa'));var ejs=require(_0xadf9('0xb'));var fs=require('fs');var fs_extra=require(_0xadf9('0xc'));var _=require(_0xadf9('0xd'));var squel=require(_0xadf9('0xe'));var crypto=require(_0xadf9('0xf'));var jsforce=require(_0xadf9('0x10'));var deskjs=require(_0xadf9('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xadf9('0x12'));var authService=require(_0xadf9('0x13'));var qs=require(_0xadf9('0x14'));var as=require(_0xadf9('0x15'));var hardwareService=require(_0xadf9('0x16'));var logger=require(_0xadf9('0x17'))(_0xadf9('0x18'));var utils=require(_0xadf9('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xadf9('0x1a'));var db=require(_0xadf9('0x1b'))['db'];var extensions=require(_0xadf9('0x1c'));function respondWithStatusCode(_0x852f9d,_0x2de285){_0x2de285=_0x2de285||0xcc;return function(_0x403e6b){if(_0x403e6b){return _0x852f9d[_0xadf9('0x1d')](_0x2de285);}return _0x852f9d[_0xadf9('0x1e')](_0x2de285)[_0xadf9('0x1f')]();};}function respondWithResult(_0x229655,_0x551fbf){_0x551fbf=_0x551fbf||0xc8;return function(_0x5a2bc4){if(_0x5a2bc4){return _0x229655[_0xadf9('0x1e')](_0x551fbf)[_0xadf9('0x20')](_0x5a2bc4);}};}function respondWithFilteredResult(_0x26c8e1,_0x529ab3){return function(_0x4cdd95){if(_0x4cdd95){var _0x4eba0e=typeof _0x529ab3[_0xadf9('0x21')]===_0xadf9('0x22')&&typeof _0x529ab3[_0xadf9('0x23')]==='undefined';var _0x2bafb7=_0x4cdd95['count'];var _0x4e503c=_0x4eba0e?0x0:_0x529ab3['offset'];var _0x592e73=_0x4eba0e?_0x4cdd95['count']:_0x529ab3['offset']+_0x529ab3[_0xadf9('0x23')];var _0x5e08bd;if(_0x592e73>=_0x2bafb7){_0x592e73=_0x2bafb7;_0x5e08bd=0xc8;}else{_0x5e08bd=0xce;}_0x26c8e1[_0xadf9('0x1e')](_0x5e08bd);return _0x26c8e1['set'](_0xadf9('0x24'),_0x4e503c+'-'+_0x592e73+'/'+_0x2bafb7)['json'](_0x4cdd95);}return null;};}function patchUpdates(_0x28d271){return function(_0x2af085){try{jsonpatch[_0xadf9('0x25')](_0x2af085,_0x28d271,!![]);}catch(_0x55f73a){return BPromise['reject'](_0x55f73a);}return _0x2af085['save']();};}function saveUpdates(_0x18afe2,_0x137ecc){return function(_0x40da2a){if(_0x40da2a){return _0x40da2a[_0xadf9('0x26')](_0x18afe2)[_0xadf9('0x27')](function(_0x453611){return _0x453611;});}return null;};}function removeEntity(_0x9534de,_0x3be5a9){return function(_0x41f50b){if(_0x41f50b){return _0x41f50b[_0xadf9('0x28')]()['then'](function(){var _0x7ad9e1=_0x41f50b[_0xadf9('0x29')]({'plain':!![]});var _0x191659=_0xadf9('0x2a');return db[_0xadf9('0x2b')][_0xadf9('0x28')]({'where':{'type':_0x191659,'resourceId':_0x7ad9e1['id']}})[_0xadf9('0x27')](function(){return _0x41f50b;});})[_0xadf9('0x27')](function(){_0x9534de[_0xadf9('0x1e')](0xcc)[_0xadf9('0x1f')]();});}};}function handleEntityNotFound(_0x1bf2d3,_0x263b52){return function(_0x1d8c41){if(!_0x1d8c41){_0x1bf2d3[_0xadf9('0x1d')](0x194);}return _0x1d8c41;};}function handleError(_0x240b51,_0x56f4ca){_0x56f4ca=_0x56f4ca||0x1f4;return function(_0x5d3a38){logger[_0xadf9('0x2c')](_0x5d3a38['stack']);if(_0x5d3a38[_0xadf9('0x2d')]){delete _0x5d3a38['name'];}_0x240b51[_0xadf9('0x1e')](_0x56f4ca)['send'](_0x5d3a38);};}exports[_0xadf9('0x2e')]=function(_0x39b17c,_0x3eeda9){var _0xf73635={},_0x40b9c3={},_0x19885a={'count':0x0,'rows':[]};var _0x42c8bf=_[_0xadf9('0x2f')](db[_0xadf9('0x30')][_0xadf9('0x31')],function(_0x3bfa2d){return{'name':_0x3bfa2d['fieldName'],'type':_0x3bfa2d[_0xadf9('0x32')]['key']};});_0x40b9c3[_0xadf9('0x33')]=_['map'](_0x42c8bf,'name');_0x40b9c3['query']=_['keys'](_0x39b17c[_0xadf9('0x34')]);_0x40b9c3[_0xadf9('0x35')]=_[_0xadf9('0x36')](_0x40b9c3[_0xadf9('0x33')],_0x40b9c3[_0xadf9('0x34')]);_0xf73635['attributes']=_['intersection'](_0x40b9c3['model'],qs[_0xadf9('0x37')](_0x39b17c['query'][_0xadf9('0x37')]));_0xf73635[_0xadf9('0x38')]=_0xf73635[_0xadf9('0x38')][_0xadf9('0x39')]?_0xf73635['attributes']:_0x40b9c3['model'];if(!_0x39b17c[_0xadf9('0x34')][_0xadf9('0x3a')](_0xadf9('0x3b'))){_0xf73635[_0xadf9('0x23')]=qs[_0xadf9('0x23')](_0x39b17c[_0xadf9('0x34')][_0xadf9('0x23')]);_0xf73635[_0xadf9('0x21')]=qs[_0xadf9('0x21')](_0x39b17c[_0xadf9('0x34')][_0xadf9('0x21')]);}_0xf73635[_0xadf9('0x3c')]=qs[_0xadf9('0x3d')](_0x39b17c[_0xadf9('0x34')][_0xadf9('0x3d')]);_0xf73635[_0xadf9('0x3e')]=qs[_0xadf9('0x35')](_[_0xadf9('0x3f')](_0x39b17c[_0xadf9('0x34')],_0x40b9c3['filters']),_0x42c8bf);if(_0x39b17c[_0xadf9('0x34')][_0xadf9('0x40')]){_0xf73635[_0xadf9('0x3e')]=_[_0xadf9('0x41')](_0xf73635[_0xadf9('0x3e')],{'$or':_[_0xadf9('0x2f')](_0x42c8bf,function(_0x2c7975){if(_0x2c7975[_0xadf9('0x32')]!==_0xadf9('0x42')){var _0x593700={};_0x593700[_0x2c7975['name']]={'$like':'%'+_0x39b17c[_0xadf9('0x34')][_0xadf9('0x40')]+'%'};return _0x593700;}})});}_0xf73635=_[_0xadf9('0x41')]({},_0xf73635,_0x39b17c['options']);var _0x2f9684={'where':_0xf73635[_0xadf9('0x3e')]};return db['Interval'][_0xadf9('0x43')](_0x2f9684)[_0xadf9('0x27')](function(_0xefe100){_0x19885a[_0xadf9('0x43')]=_0xefe100;if(_0x39b17c[_0xadf9('0x34')][_0xadf9('0x44')]){_0xf73635[_0xadf9('0x45')]=[{'all':!![]}];}return db[_0xadf9('0x30')][_0xadf9('0x46')](_0xf73635);})['then'](function(_0x555091){_0x19885a[_0xadf9('0x47')]=_0x555091;return _0x19885a;})[_0xadf9('0x27')](respondWithFilteredResult(_0x3eeda9,_0xf73635))[_0xadf9('0x48')](handleError(_0x3eeda9,null));};exports[_0xadf9('0x49')]=function(_0x246343,_0x5e03b5){var _0x67a82f={'raw':!![],'where':{'id':_0x246343[_0xadf9('0x4a')]['id']}},_0x2e8af7={};_0x2e8af7[_0xadf9('0x33')]=_['keys'](db[_0xadf9('0x30')][_0xadf9('0x31')]);_0x2e8af7[_0xadf9('0x34')]=_[_0xadf9('0x4b')](_0x246343[_0xadf9('0x34')]);_0x2e8af7[_0xadf9('0x35')]=_[_0xadf9('0x36')](_0x2e8af7[_0xadf9('0x33')],_0x2e8af7[_0xadf9('0x34')]);_0x67a82f['attributes']=_[_0xadf9('0x36')](_0x2e8af7[_0xadf9('0x33')],qs[_0xadf9('0x37')](_0x246343[_0xadf9('0x34')][_0xadf9('0x37')]));_0x67a82f[_0xadf9('0x38')]=_0x67a82f[_0xadf9('0x38')]['length']?_0x67a82f[_0xadf9('0x38')]:_0x2e8af7[_0xadf9('0x33')];if(_0x246343[_0xadf9('0x34')][_0xadf9('0x44')]){_0x67a82f[_0xadf9('0x45')]=[{'all':!![]}];}_0x67a82f=_[_0xadf9('0x41')]({},_0x67a82f,_0x246343[_0xadf9('0x4c')]);return db[_0xadf9('0x30')][_0xadf9('0x4d')](_0x67a82f)[_0xadf9('0x27')](handleEntityNotFound(_0x5e03b5,null))[_0xadf9('0x27')](respondWithResult(_0x5e03b5,null))[_0xadf9('0x48')](handleError(_0x5e03b5,null));};exports[_0xadf9('0x4e')]=function(_0x4ff978,_0x213f4c){return db['Interval']['create'](_0x4ff978[_0xadf9('0x4f')],{})[_0xadf9('0x27')](function(_0x1594e2){var _0x131678=_0x4ff978[_0xadf9('0x50')][_0xadf9('0x29')]({'plain':!![]});if(!_0x131678)throw new Error(_0xadf9('0x51'));if(_0x131678[_0xadf9('0x52')]==='user'){var _0x1f76c4=_0x1594e2['get']({'plain':!![]});var _0x33b992=_0xadf9('0x2a');return db[_0xadf9('0x53')]['find']({'where':{'name':_0x33b992,'userProfileId':_0x131678['userProfileId']},'raw':!![]})['then'](function(_0x473c8d){if(_0x473c8d&&_0x473c8d[_0xadf9('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x1f76c4[_0xadf9('0x2d')],'resourceId':_0x1f76c4['id'],'type':_0x473c8d['name'],'sectionId':_0x473c8d['id']},{})[_0xadf9('0x27')](function(){return _0x1594e2;});}else{return _0x1594e2;}})[_0xadf9('0x48')](function(_0x59e289){logger['error'](_0xadf9('0x55'),_0x59e289);throw _0x59e289;});}return _0x1594e2;})[_0xadf9('0x27')](respondWithResult(_0x213f4c,0xc9))[_0xadf9('0x48')](handleError(_0x213f4c,null));};exports[_0xadf9('0x26')]=function(_0x5da68b,_0x590788){if(_0x5da68b[_0xadf9('0x4f')]['id']){delete _0x5da68b[_0xadf9('0x4f')]['id'];}return db[_0xadf9('0x30')][_0xadf9('0x4d')]({'where':{'id':_0x5da68b[_0xadf9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x590788,null))['then'](saveUpdates(_0x5da68b[_0xadf9('0x4f')],null))[_0xadf9('0x27')](respondWithResult(_0x590788,null))[_0xadf9('0x48')](handleError(_0x590788,null));};exports['destroy']=function(_0x330be4,_0x21212c){return db[_0xadf9('0x30')][_0xadf9('0x4d')]({'where':{'id':_0x330be4[_0xadf9('0x4a')]['id']}})[_0xadf9('0x27')](handleEntityNotFound(_0x21212c,null))['then'](removeEntity(_0x21212c,null))[_0xadf9('0x48')](handleError(_0x21212c,null));};exports['addInterval']=function(_0x5ccb37,_0x1d103a,_0x4e51a9){if(_0x5ccb37[_0xadf9('0x4f')]['id']){delete _0x5ccb37[_0xadf9('0x4f')]['id'];}return db[_0xadf9('0x30')][_0xadf9('0x4d')]({'where':{'id':_0x5ccb37[_0xadf9('0x4a')]['id']}})[_0xadf9('0x27')](handleEntityNotFound(_0x1d103a,null))['then'](function(_0x3b5cfc){if(_0x3b5cfc){_0x5ccb37[_0xadf9('0x4f')][_0xadf9('0x56')]=_0x3b5cfc['id'];return db['Interval'][_0xadf9('0x4e')](_0x5ccb37[_0xadf9('0x4f')]);}})[_0xadf9('0x27')](respondWithResult(_0x1d103a,null))[_0xadf9('0x48')](handleError(_0x1d103a,null));};exports[_0xadf9('0x57')]=function(_0x1fb770,_0x19a7b5,_0x1d2638){var _0x1a4c24={};var _0x577367={};var _0x1fc5a5;var _0x5510ae;return db[_0xadf9('0x30')][_0xadf9('0x58')]({'where':{'id':_0x1fb770['params']['id']}})[_0xadf9('0x27')](handleEntityNotFound(_0x19a7b5,null))['then'](function(_0x5cc615){if(_0x5cc615){_0x1fc5a5=_0x5cc615;_0x577367[_0xadf9('0x33')]=_[_0xadf9('0x4b')](db[_0xadf9('0x30')][_0xadf9('0x31')]);_0x577367[_0xadf9('0x34')]=_[_0xadf9('0x4b')](_0x1fb770['query']);_0x577367[_0xadf9('0x35')]=_['intersection'](_0x577367[_0xadf9('0x33')],_0x577367[_0xadf9('0x34')]);_0x1a4c24['attributes']=_['intersection'](_0x577367[_0xadf9('0x33')],qs[_0xadf9('0x37')](_0x1fb770[_0xadf9('0x34')]['fields']));_0x1a4c24['attributes']=_0x1a4c24[_0xadf9('0x38')][_0xadf9('0x39')]?_0x1a4c24['attributes']:_0x577367[_0xadf9('0x33')];_0x1a4c24['order']=qs[_0xadf9('0x3d')](_0x1fb770[_0xadf9('0x34')][_0xadf9('0x3d')]);_0x1a4c24[_0xadf9('0x3e')]=qs['filters'](_['pick'](_0x1fb770[_0xadf9('0x34')],_0x577367[_0xadf9('0x35')]));if(_0x1fb770[_0xadf9('0x34')][_0xadf9('0x40')]){_0x1a4c24[_0xadf9('0x3e')]=_[_0xadf9('0x41')](_0x1a4c24[_0xadf9('0x3e')],{'$or':_[_0xadf9('0x2f')](_0x1a4c24[_0xadf9('0x38')],function(_0xc5a72){var _0x12344a={};_0x12344a[_0xc5a72]={'$like':'%'+_0x1fb770[_0xadf9('0x34')]['filter']+'%'};return _0x12344a;})});}_0x1a4c24=_[_0xadf9('0x41')]({},_0x1a4c24,_0x1fb770['options']);return _0x1fc5a5[_0xadf9('0x57')](_0x1a4c24);}})[_0xadf9('0x27')](function(_0x44e4c0){if(_0x44e4c0){_0x5510ae=_0x44e4c0[_0xadf9('0x39')];if(!_0x1fb770[_0xadf9('0x34')][_0xadf9('0x3a')](_0xadf9('0x3b'))){_0x1a4c24[_0xadf9('0x23')]=qs[_0xadf9('0x23')](_0x1fb770[_0xadf9('0x34')][_0xadf9('0x23')]);_0x1a4c24[_0xadf9('0x21')]=qs[_0xadf9('0x21')](_0x1fb770['query'][_0xadf9('0x21')]);}return _0x1fc5a5[_0xadf9('0x57')](_0x1a4c24);}})[_0xadf9('0x27')](function(_0x19b644){if(_0x19b644){return _0x19b644?{'count':_0x5510ae,'rows':_0x19b644}:null;}})['then'](respondWithResult(_0x19a7b5,null))[_0xadf9('0x48')](handleError(_0x19a7b5,null));};exports[_0xadf9('0x59')]=function(_0x2ee10a,_0x185124,_0x514161){return db[_0xadf9('0x30')][_0xadf9('0x58')]({'where':{'id':_0x2ee10a['params']['id']}})['then'](handleEntityNotFound(_0x185124,null))['then'](function(_0x431318){if(_0x431318){return db['sequelize']['transaction'](function(_0x487f4f){return db['Interval'][_0xadf9('0x28')]({'where':{'IntervalId':_0x2ee10a['params']['id']},'transaction':_0x487f4f})[_0xadf9('0x27')](function(_0x319206){var _0x5217c6=_[_0xadf9('0x2f')](_0x2ee10a[_0xadf9('0x4f')],function(_0x267048){delete _0x267048['id'];_0x267048[_0xadf9('0x56')]=_0x2ee10a[_0xadf9('0x4a')]['id'];return _0x267048;});return db['Interval'][_0xadf9('0x5a')](_0x5217c6,{'transaction':_0x487f4f});});})['then'](function(){return db['Interval']['findAll']({'where':{'IntervalId':_0x2ee10a[_0xadf9('0x4a')]['id']}});});}})[_0xadf9('0x27')](respondWithResult(_0x185124,null))['catch'](handleError(_0x185124,null));};
\ No newline at end of file
+var _0xb2dc=['send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','merge','where','Interval','includeAll','include','findAll','rows','catch','show','keys','filters','options','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Intervals','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addInterval','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','end','offset','undefined','count','status','set','Content-Range','json','apply','reject','save','update','then','UserProfileResource','destroy','error','stack','name'];(function(_0x430203,_0x4d5d11){var _0x1808c2=function(_0x301587){while(--_0x301587){_0x430203['push'](_0x430203['shift']());}};_0x1808c2(++_0x4d5d11);}(_0xb2dc,0x1b3));var _0xcb2d=function(_0x574082,_0x3e3329){_0x574082=_0x574082-0x0;var _0x280234=_0xb2dc[_0x574082];return _0x280234;};'use strict';var emlformat=require(_0xcb2d('0x0'));var rimraf=require(_0xcb2d('0x1'));var zipdir=require(_0xcb2d('0x2'));var jsonpatch=require(_0xcb2d('0x3'));var rp=require(_0xcb2d('0x4'));var moment=require(_0xcb2d('0x5'));var BPromise=require(_0xcb2d('0x6'));var Mustache=require(_0xcb2d('0x7'));var util=require(_0xcb2d('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xcb2d('0x9'));var ejs=require(_0xcb2d('0xa'));var fs=require('fs');var fs_extra=require(_0xcb2d('0xb'));var _=require(_0xcb2d('0xc'));var squel=require(_0xcb2d('0xd'));var crypto=require('crypto');var jsforce=require(_0xcb2d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xcb2d('0x9'));var querystring=require(_0xcb2d('0xf'));var Papa=require(_0xcb2d('0x10'));var Redis=require('ioredis');var authService=require(_0xcb2d('0x11'));var qs=require(_0xcb2d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcb2d('0x13'));var logger=require(_0xcb2d('0x14'))(_0xcb2d('0x15'));var utils=require(_0xcb2d('0x16'));var config=require(_0xcb2d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xcb2d('0x18'))['db'];var extensions=require(_0xcb2d('0x19'));function respondWithStatusCode(_0x3e5de2,_0x153f46){_0x153f46=_0x153f46||0xcc;return function(_0x1f0781){if(_0x1f0781){return _0x3e5de2[_0xcb2d('0x1a')](_0x153f46);}return _0x3e5de2['status'](_0x153f46)[_0xcb2d('0x1b')]();};}function respondWithResult(_0x86d912,_0x287167){_0x287167=_0x287167||0xc8;return function(_0x49e1e8){if(_0x49e1e8){return _0x86d912['status'](_0x287167)['json'](_0x49e1e8);}};}function respondWithFilteredResult(_0x2b2251,_0x19412b){return function(_0x17fa3f){if(_0x17fa3f){var _0x4a5229=typeof _0x19412b[_0xcb2d('0x1c')]===_0xcb2d('0x1d')&&typeof _0x19412b['limit']==='undefined';var _0x3e609d=_0x17fa3f[_0xcb2d('0x1e')];var _0x2a317d=_0x4a5229?0x0:_0x19412b['offset'];var _0x34e3d5=_0x4a5229?_0x17fa3f[_0xcb2d('0x1e')]:_0x19412b[_0xcb2d('0x1c')]+_0x19412b['limit'];var _0x3f7f66;if(_0x34e3d5>=_0x3e609d){_0x34e3d5=_0x3e609d;_0x3f7f66=0xc8;}else{_0x3f7f66=0xce;}_0x2b2251[_0xcb2d('0x1f')](_0x3f7f66);return _0x2b2251[_0xcb2d('0x20')](_0xcb2d('0x21'),_0x2a317d+'-'+_0x34e3d5+'/'+_0x3e609d)[_0xcb2d('0x22')](_0x17fa3f);}return null;};}function patchUpdates(_0x5ef25b){return function(_0x2681a3){try{jsonpatch[_0xcb2d('0x23')](_0x2681a3,_0x5ef25b,!![]);}catch(_0x46334f){return BPromise[_0xcb2d('0x24')](_0x46334f);}return _0x2681a3[_0xcb2d('0x25')]();};}function saveUpdates(_0x216c55,_0x512ce7){return function(_0x1c2c73){if(_0x1c2c73){return _0x1c2c73[_0xcb2d('0x26')](_0x216c55)['then'](function(_0x384163){return _0x384163;});}return null;};}function removeEntity(_0x2199a0,_0x58d176){return function(_0x55fb97){if(_0x55fb97){return _0x55fb97['destroy']()[_0xcb2d('0x27')](function(){var _0x141028=_0x55fb97['get']({'plain':!![]});var _0x147dbe='Intervals';return db[_0xcb2d('0x28')][_0xcb2d('0x29')]({'where':{'type':_0x147dbe,'resourceId':_0x141028['id']}})[_0xcb2d('0x27')](function(){return _0x55fb97;});})[_0xcb2d('0x27')](function(){_0x2199a0[_0xcb2d('0x1f')](0xcc)[_0xcb2d('0x1b')]();});}};}function handleEntityNotFound(_0x40b546,_0x5be64e){return function(_0x16ef30){if(!_0x16ef30){_0x40b546[_0xcb2d('0x1a')](0x194);}return _0x16ef30;};}function handleError(_0x627c52,_0x526bda){_0x526bda=_0x526bda||0x1f4;return function(_0x31c114){logger[_0xcb2d('0x2a')](_0x31c114[_0xcb2d('0x2b')]);if(_0x31c114[_0xcb2d('0x2c')]){delete _0x31c114[_0xcb2d('0x2c')];}_0x627c52[_0xcb2d('0x1f')](_0x526bda)[_0xcb2d('0x2d')](_0x31c114);};}exports[_0xcb2d('0x2e')]=function(_0x496575,_0x3f96cd){var _0x14b4f3={},_0x3b93e9={},_0xdb3393={'count':0x0,'rows':[]};var _0x47044d=_[_0xcb2d('0x2f')](db['Interval'][_0xcb2d('0x30')],function(_0x561087){return{'name':_0x561087[_0xcb2d('0x31')],'type':_0x561087[_0xcb2d('0x32')][_0xcb2d('0x33')]};});_0x3b93e9[_0xcb2d('0x34')]=_[_0xcb2d('0x2f')](_0x47044d,'name');_0x3b93e9[_0xcb2d('0x35')]=_['keys'](_0x496575['query']);_0x3b93e9['filters']=_['intersection'](_0x3b93e9[_0xcb2d('0x34')],_0x3b93e9['query']);_0x14b4f3['attributes']=_[_0xcb2d('0x36')](_0x3b93e9['model'],qs[_0xcb2d('0x37')](_0x496575['query']['fields']));_0x14b4f3[_0xcb2d('0x38')]=_0x14b4f3[_0xcb2d('0x38')][_0xcb2d('0x39')]?_0x14b4f3['attributes']:_0x3b93e9[_0xcb2d('0x34')];if(!_0x496575[_0xcb2d('0x35')][_0xcb2d('0x3a')](_0xcb2d('0x3b'))){_0x14b4f3['limit']=qs['limit'](_0x496575[_0xcb2d('0x35')][_0xcb2d('0x3c')]);_0x14b4f3[_0xcb2d('0x1c')]=qs[_0xcb2d('0x1c')](_0x496575['query'][_0xcb2d('0x1c')]);}_0x14b4f3[_0xcb2d('0x3d')]=qs[_0xcb2d('0x3e')](_0x496575['query'][_0xcb2d('0x3e')]);_0x14b4f3['where']=qs['filters'](_[_0xcb2d('0x3f')](_0x496575[_0xcb2d('0x35')],_0x3b93e9['filters']),_0x47044d);if(_0x496575[_0xcb2d('0x35')][_0xcb2d('0x40')]){_0x14b4f3['where']=_[_0xcb2d('0x41')](_0x14b4f3[_0xcb2d('0x42')],{'$or':_[_0xcb2d('0x2f')](_0x47044d,function(_0x5e07fb){if(_0x5e07fb[_0xcb2d('0x32')]!=='VIRTUAL'){var _0x59d2b0={};_0x59d2b0[_0x5e07fb[_0xcb2d('0x2c')]]={'$like':'%'+_0x496575[_0xcb2d('0x35')][_0xcb2d('0x40')]+'%'};return _0x59d2b0;}})});}_0x14b4f3=_['merge']({},_0x14b4f3,_0x496575['options']);var _0x2a27e8={'where':_0x14b4f3[_0xcb2d('0x42')]};return db[_0xcb2d('0x43')]['count'](_0x2a27e8)[_0xcb2d('0x27')](function(_0xde406c){_0xdb3393['count']=_0xde406c;if(_0x496575[_0xcb2d('0x35')][_0xcb2d('0x44')]){_0x14b4f3[_0xcb2d('0x45')]=[{'all':!![]}];}return db[_0xcb2d('0x43')][_0xcb2d('0x46')](_0x14b4f3);})[_0xcb2d('0x27')](function(_0x59f243){_0xdb3393[_0xcb2d('0x47')]=_0x59f243;return _0xdb3393;})[_0xcb2d('0x27')](respondWithFilteredResult(_0x3f96cd,_0x14b4f3))[_0xcb2d('0x48')](handleError(_0x3f96cd,null));};exports[_0xcb2d('0x49')]=function(_0x24ac02,_0xe3a807){var _0x5133bd={'raw':!![],'where':{'id':_0x24ac02['params']['id']}},_0x3ed596={};_0x3ed596[_0xcb2d('0x34')]=_[_0xcb2d('0x4a')](db[_0xcb2d('0x43')][_0xcb2d('0x30')]);_0x3ed596[_0xcb2d('0x35')]=_[_0xcb2d('0x4a')](_0x24ac02['query']);_0x3ed596[_0xcb2d('0x4b')]=_[_0xcb2d('0x36')](_0x3ed596[_0xcb2d('0x34')],_0x3ed596['query']);_0x5133bd['attributes']=_[_0xcb2d('0x36')](_0x3ed596['model'],qs[_0xcb2d('0x37')](_0x24ac02[_0xcb2d('0x35')][_0xcb2d('0x37')]));_0x5133bd['attributes']=_0x5133bd[_0xcb2d('0x38')][_0xcb2d('0x39')]?_0x5133bd[_0xcb2d('0x38')]:_0x3ed596[_0xcb2d('0x34')];if(_0x24ac02['query'][_0xcb2d('0x44')]){_0x5133bd['include']=[{'all':!![]}];}_0x5133bd=_['merge']({},_0x5133bd,_0x24ac02[_0xcb2d('0x4c')]);return db[_0xcb2d('0x43')][_0xcb2d('0x4d')](_0x5133bd)[_0xcb2d('0x27')](handleEntityNotFound(_0xe3a807,null))[_0xcb2d('0x27')](respondWithResult(_0xe3a807,null))[_0xcb2d('0x48')](handleError(_0xe3a807,null));};exports[_0xcb2d('0x4e')]=function(_0x51bb78,_0x16ad3f){return db['Interval']['create'](_0x51bb78[_0xcb2d('0x4f')],{})[_0xcb2d('0x27')](function(_0x466527){var _0x4fb4fb=_0x51bb78['user'][_0xcb2d('0x50')]({'plain':!![]});if(!_0x4fb4fb)throw new Error(_0xcb2d('0x51'));if(_0x4fb4fb[_0xcb2d('0x52')]===_0xcb2d('0x53')){var _0x277be1=_0x466527[_0xcb2d('0x50')]({'plain':!![]});var _0x3e15d7=_0xcb2d('0x54');return db[_0xcb2d('0x55')][_0xcb2d('0x4d')]({'where':{'name':_0x3e15d7,'userProfileId':_0x4fb4fb['userProfileId']},'raw':!![]})[_0xcb2d('0x27')](function(_0x238431){if(_0x238431&&_0x238431[_0xcb2d('0x56')]===0x0){return db[_0xcb2d('0x28')][_0xcb2d('0x4e')]({'name':_0x277be1[_0xcb2d('0x2c')],'resourceId':_0x277be1['id'],'type':_0x238431[_0xcb2d('0x2c')],'sectionId':_0x238431['id']},{})[_0xcb2d('0x27')](function(){return _0x466527;});}else{return _0x466527;}})[_0xcb2d('0x48')](function(_0x2af284){logger[_0xcb2d('0x2a')](_0xcb2d('0x57'),_0x2af284);throw _0x2af284;});}return _0x466527;})[_0xcb2d('0x27')](respondWithResult(_0x16ad3f,0xc9))['catch'](handleError(_0x16ad3f,null));};exports[_0xcb2d('0x26')]=function(_0x267f26,_0x44fafd){if(_0x267f26[_0xcb2d('0x4f')]['id']){delete _0x267f26[_0xcb2d('0x4f')]['id'];}return db[_0xcb2d('0x43')][_0xcb2d('0x4d')]({'where':{'id':_0x267f26[_0xcb2d('0x58')]['id']}})[_0xcb2d('0x27')](handleEntityNotFound(_0x44fafd,null))[_0xcb2d('0x27')](saveUpdates(_0x267f26[_0xcb2d('0x4f')],null))[_0xcb2d('0x27')](respondWithResult(_0x44fafd,null))['catch'](handleError(_0x44fafd,null));};exports[_0xcb2d('0x29')]=function(_0x3bddf4,_0x279e19){return db[_0xcb2d('0x43')]['find']({'where':{'id':_0x3bddf4[_0xcb2d('0x58')]['id']}})[_0xcb2d('0x27')](handleEntityNotFound(_0x279e19,null))[_0xcb2d('0x27')](removeEntity(_0x279e19,null))[_0xcb2d('0x48')](handleError(_0x279e19,null));};exports[_0xcb2d('0x59')]=function(_0x4c393c,_0x1b18af,_0x35c1fa){if(_0x4c393c[_0xcb2d('0x4f')]['id']){delete _0x4c393c[_0xcb2d('0x4f')]['id'];}return db['Interval']['find']({'where':{'id':_0x4c393c[_0xcb2d('0x58')]['id']}})['then'](handleEntityNotFound(_0x1b18af,null))[_0xcb2d('0x27')](function(_0x48b69f){if(_0x48b69f){_0x4c393c[_0xcb2d('0x4f')][_0xcb2d('0x5a')]=_0x48b69f['id'];return db[_0xcb2d('0x43')][_0xcb2d('0x4e')](_0x4c393c[_0xcb2d('0x4f')]);}})[_0xcb2d('0x27')](respondWithResult(_0x1b18af,null))['catch'](handleError(_0x1b18af,null));};exports[_0xcb2d('0x5b')]=function(_0x3baeaf,_0x209524,_0x49878f){var _0x48160a={};var _0x1f908e={};var _0x3400fc;var _0x119710;return db[_0xcb2d('0x43')][_0xcb2d('0x5c')]({'where':{'id':_0x3baeaf[_0xcb2d('0x58')]['id']}})['then'](handleEntityNotFound(_0x209524,null))[_0xcb2d('0x27')](function(_0x47169f){if(_0x47169f){_0x3400fc=_0x47169f;_0x1f908e[_0xcb2d('0x34')]=_[_0xcb2d('0x4a')](db[_0xcb2d('0x43')][_0xcb2d('0x30')]);_0x1f908e[_0xcb2d('0x35')]=_[_0xcb2d('0x4a')](_0x3baeaf['query']);_0x1f908e[_0xcb2d('0x4b')]=_[_0xcb2d('0x36')](_0x1f908e['model'],_0x1f908e[_0xcb2d('0x35')]);_0x48160a[_0xcb2d('0x38')]=_[_0xcb2d('0x36')](_0x1f908e[_0xcb2d('0x34')],qs[_0xcb2d('0x37')](_0x3baeaf['query'][_0xcb2d('0x37')]));_0x48160a[_0xcb2d('0x38')]=_0x48160a['attributes'][_0xcb2d('0x39')]?_0x48160a['attributes']:_0x1f908e['model'];_0x48160a[_0xcb2d('0x3d')]=qs['sort'](_0x3baeaf[_0xcb2d('0x35')][_0xcb2d('0x3e')]);_0x48160a[_0xcb2d('0x42')]=qs['filters'](_[_0xcb2d('0x3f')](_0x3baeaf['query'],_0x1f908e[_0xcb2d('0x4b')]));if(_0x3baeaf['query'][_0xcb2d('0x40')]){_0x48160a[_0xcb2d('0x42')]=_[_0xcb2d('0x41')](_0x48160a[_0xcb2d('0x42')],{'$or':_['map'](_0x48160a[_0xcb2d('0x38')],function(_0x4f4d8c){var _0x1dbb34={};_0x1dbb34[_0x4f4d8c]={'$like':'%'+_0x3baeaf[_0xcb2d('0x35')]['filter']+'%'};return _0x1dbb34;})});}_0x48160a=_[_0xcb2d('0x41')]({},_0x48160a,_0x3baeaf[_0xcb2d('0x4c')]);return _0x3400fc[_0xcb2d('0x5b')](_0x48160a);}})[_0xcb2d('0x27')](function(_0x52d5d8){if(_0x52d5d8){_0x119710=_0x52d5d8[_0xcb2d('0x39')];if(!_0x3baeaf[_0xcb2d('0x35')]['hasOwnProperty'](_0xcb2d('0x3b'))){_0x48160a[_0xcb2d('0x3c')]=qs[_0xcb2d('0x3c')](_0x3baeaf['query'][_0xcb2d('0x3c')]);_0x48160a['offset']=qs[_0xcb2d('0x1c')](_0x3baeaf[_0xcb2d('0x35')][_0xcb2d('0x1c')]);}return _0x3400fc[_0xcb2d('0x5b')](_0x48160a);}})[_0xcb2d('0x27')](function(_0x310465){if(_0x310465){return _0x310465?{'count':_0x119710,'rows':_0x310465}:null;}})[_0xcb2d('0x27')](respondWithResult(_0x209524,null))[_0xcb2d('0x48')](handleError(_0x209524,null));};exports[_0xcb2d('0x5d')]=function(_0x1745b2,_0x513451,_0x207844){return db[_0xcb2d('0x43')][_0xcb2d('0x5c')]({'where':{'id':_0x1745b2['params']['id']}})[_0xcb2d('0x27')](handleEntityNotFound(_0x513451,null))[_0xcb2d('0x27')](function(_0x2e5e63){if(_0x2e5e63){return db[_0xcb2d('0x5e')][_0xcb2d('0x5f')](function(_0x251904){return db[_0xcb2d('0x43')]['destroy']({'where':{'IntervalId':_0x1745b2[_0xcb2d('0x58')]['id']},'transaction':_0x251904})[_0xcb2d('0x27')](function(_0x1a404f){var _0x3b48b2=_[_0xcb2d('0x2f')](_0x1745b2[_0xcb2d('0x4f')],function(_0x2c29f0){delete _0x2c29f0['id'];_0x2c29f0['IntervalId']=_0x1745b2[_0xcb2d('0x58')]['id'];return _0x2c29f0;});return db[_0xcb2d('0x43')]['bulkCreate'](_0x3b48b2,{'transaction':_0x251904});});})['then'](function(){return db[_0xcb2d('0x43')][_0xcb2d('0x46')]({'where':{'IntervalId':_0x1745b2['params']['id']}});});}})[_0xcb2d('0x27')](respondWithResult(_0x513451,null))[_0xcb2d('0x48')](handleError(_0x513451,null));};
\ No newline at end of file
index 3d61f2b..cf82876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f8=['rewrite','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','../../components/extensions/rewrite','exports','define','Interval'];(function(_0x301785,_0x24110c){var _0x56cee7=function(_0x516fc7){while(--_0x516fc7){_0x301785['push'](_0x301785['shift']());}};_0x56cee7(++_0x24110c);}(_0xf0f8,0x1e1));var _0x8f0f=function(_0x3013b7,_0x4045e7){_0x3013b7=_0x3013b7-0x0;var _0x8adcd0=_0xf0f8[_0x3013b7];return _0x8adcd0;};'use strict';var _=require(_0x8f0f('0x0'));var util=require(_0x8f0f('0x1'));var logger=require(_0x8f0f('0x2'))('api');var moment=require(_0x8f0f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8f0f('0x4'));var rimraf=require(_0x8f0f('0x5'));var config=require(_0x8f0f('0x6'));var attributes=require('./interval.attributes');var extensions=require(_0x8f0f('0x7'));module[_0x8f0f('0x8')]=function(_0x354037,_0x471750){return _0x354037[_0x8f0f('0x9')](_0x8f0f('0xa'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2618c8,_0x345c9c){extensions[_0x8f0f('0xb')](_0x354037,_0x2618c8);},'afterBulkCreate':function(_0x20ba88,_0x5ad78c,_0xc7472){_0xc7472();extensions[_0x8f0f('0xb')](_0x354037,_0x20ba88[0x0]);},'afterUpdate':function(_0x5f249a,_0x317cf9){extensions[_0x8f0f('0xb')](_0x354037,_0x5f249a);},'afterDestroy':function(_0x241b6a,_0x41bb51){extensions['rewrite'](_0x354037,_0x241b6a);}}});};
\ No newline at end of file
+var _0x40a0=['request-promise','path','rimraf','./interval.attributes','../../components/extensions/rewrite','define','Interval','rewrite','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xc28fb5,_0x5d30f2){var _0x2fb026=function(_0x3f0118){while(--_0x3f0118){_0xc28fb5['push'](_0xc28fb5['shift']());}};_0x2fb026(++_0x5d30f2);}(_0x40a0,0x1ba));var _0x040a=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0x40a0[_0x456fb1];return _0x4083d6;};'use strict';var _=require(_0x040a('0x0'));var util=require(_0x040a('0x1'));var logger=require(_0x040a('0x2'))(_0x040a('0x3'));var moment=require(_0x040a('0x4'));var BPromise=require(_0x040a('0x5'));var rp=require(_0x040a('0x6'));var fs=require('fs');var path=require(_0x040a('0x7'));var rimraf=require(_0x040a('0x8'));var config=require('../../config/environment');var attributes=require(_0x040a('0x9'));var extensions=require(_0x040a('0xa'));module['exports']=function(_0x31c66e,_0x23a682){return _0x31c66e[_0x040a('0xb')](_0x040a('0xc'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x48d659,_0x38ae86){extensions[_0x040a('0xd')](_0x31c66e,_0x48d659);},'afterBulkCreate':function(_0x147161,_0x4ce53a,_0x467ca7){_0x467ca7();extensions['rewrite'](_0x31c66e,_0x147161[0x0]);},'afterUpdate':function(_0x582d72,_0x3d596c){extensions['rewrite'](_0x31c66e,_0x582d72);},'afterDestroy':function(_0x2a6aa6,_0x1246f2){extensions[_0x040a('0xd')](_0x31c66e,_0x2a6aa6);}}});};
\ No newline at end of file
index 0ce2c3a..fa267fa 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(_0x1c289a,_0x277fe7){var _0x28d68e=function(_0x2f8e98){while(--_0x2f8e98){_0x1c289a['push'](_0x1c289a['shift']());}};_0x28d68e(++_0x277fe7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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(_0x47df54,_0x1aeb61){var _0x261b87=function(_0x54bc77){while(--_0x54bc77){_0x47df54['push'](_0x47df54['shift']());}};_0x261b87(++_0x1aeb61);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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 c1a3fdc..aa2e039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x17d4de,_0x46c04f){var _0x4f6bf7=function(_0x1f8ce1){while(--_0x1f8ce1){_0x17d4de['push'](_0x17d4de['shift']());}};_0x4f6bf7(++_0x46c04f);}(_0x2ef3,0xba));var _0x32ef=function(_0x47c73f,_0x54108c){_0x47c73f=_0x47c73f-0x0;var _0x950404=_0x2ef3[_0x47c73f];return _0x950404;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
+var _0xb10b=['./jira.controller','post','send','exports','express','../../components/auth/service'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xb10b,0x12a));var _0xbb10=function(_0x4a397d,_0x5bab1f){_0x4a397d=_0x4a397d-0x0;var _0x316571=_0xb10b[_0x4a397d];return _0x316571;};'use strict';var express=require(_0xbb10('0x0'));var router=express['Router']();var auth=require(_0xbb10('0x1'));var controller=require(_0xbb10('0x2'));router[_0xbb10('0x3')]('/',auth['isAuthenticated'](),controller[_0xbb10('0x4')]);module[_0xbb10('0x5')]=router;
\ No newline at end of file
index ebe243b..1d50e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9521=['description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','request','setEncoding','utf8','data','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20'];(function(_0xb862d5,_0x2270b0){var _0x28d11b=function(_0x4c964e){while(--_0x4c964e){_0xb862d5['push'](_0xb862d5['shift']());}};_0x28d11b(++_0x2270b0);}(_0x9521,0xf5));var _0x1952=function(_0x1c208e,_0x2a0a5b){_0x1c208e=_0x1c208e-0x0;var _0x5104ff=_0x9521[_0x1c208e];return _0x5104ff;};'use strict';var BPromise=require(_0x1952('0x0'));var https=require(_0x1952('0x1'));var logger=require(_0x1952('0x2'))(_0x1952('0x3'));var USERNAME=_0x1952('0x4');var PASSWORD=_0x1952('0x5');function openIssue(_0x2d424,_0x10dd32){var _0x2ee655={'fields':{'project':{'key':_0x2d424[_0x1952('0x6')]||'MOTGUI'},'summary':(_0x2d424[_0x1952('0x7')]||_0x1952('0x8'))+_0x1952('0x9')+_0x2d424['ip'],'description':_0x2d424[_0x1952('0xa')]||JSON[_0x1952('0xb')](_0x2d424),'issuetype':{'name':_0x2d424[_0x1952('0xc')]||'Bug'}}};_0x2ee655[_0x1952('0xd')][_0x1952('0xe')]=_0x2d424[_0x1952('0xf')];_0x2ee655[_0x1952('0xd')][_0x1952('0x10')]=_0x2d424[_0x1952('0x11')];_0x2ee655['fields'][_0x1952('0x12')]=_0x2d424[_0x1952('0x13')];_0x2ee655[_0x1952('0xd')][_0x1952('0x14')]=_0x2d424[_0x1952('0x15')];_0x2ee655[_0x1952('0xd')][_0x1952('0x16')]=_0x2d424[_0x1952('0x17')];_0x2ee655[_0x1952('0xd')][_0x1952('0x18')]=_0x2d424['ip'];var _0x4d0587={'host':_0x1952('0x19'),'port':0x1bb,'path':_0x1952('0x1a'),'method':_0x1952('0x1b'),'timeout':0x4e20,'headers':{'Content-Type':_0x1952('0x1c'),'Authorization':_0x1952('0x1d')+new Buffer(USERNAME+':'+PASSWORD)[_0x1952('0x1e')]('base64')}};var _0x43ef56=JSON[_0x1952('0xb')](_0x2ee655);var _0x247d32=https[_0x1952('0x1f')](_0x4d0587,function(_0xb49746){_0xb49746[_0x1952('0x20')](_0x1952('0x21'));var _0x39b14d='';_0xb49746['on'](_0x1952('0x22'),function(_0x4d794f){_0x39b14d+=_0x4d794f;});_0xb49746['on'](_0x1952('0x23'),function(){if(_0x10dd32){return _0x10dd32[_0x1952('0x24')](_0xb49746[_0x1952('0x25')])[_0x1952('0x26')](JSON[_0x1952('0x27')](_0x39b14d));}});});_0x247d32['on'](_0x1952('0x28'),function(_0x2ea143){if(_0x10dd32){return _0x10dd32[_0x1952('0x24')](0x1f4)[_0x1952('0x26')]({'errors':[{'message':_0x1952('0x29'),'type':_0x1952('0x2a')}]});}});_0x247d32[_0x1952('0x2b')](_0x43ef56);_0x247d32[_0x1952('0x23')]();}exports[_0x1952('0x2c')]=openIssue;exports[_0x1952('0x2d')]=function(_0x63244b,_0x433dc4){_0x63244b[_0x1952('0x2e')]['ip']=_0x63244b[_0x1952('0x2f')]['x-forwarded-for']||_0x63244b[_0x1952('0x30')][_0x1952('0x31')]||_0x63244b['socket'][_0x1952('0x31')]||_0x63244b['connection'][_0x1952('0x32')][_0x1952('0x31')];return openIssue(_0x63244b[_0x1952('0x2e')],_0x433dc4);};
\ No newline at end of file
+var _0x5eee=['summary','Report','\x20from\x20','description','stringify','Bug','customfield_11500','customfield_11501','oldToken','fields','customfield_11502','newToken','customfield_11503','name','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','base64','request','setEncoding','end','status','statusCode','json','parse','error','api.jira','openIssue','send','body','x-forwarded-for','remoteAddress','socket','bluebird','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI'];(function(_0x13dcf8,_0x162ca6){var _0x445a14=function(_0x3fffe6){while(--_0x3fffe6){_0x13dcf8['push'](_0x13dcf8['shift']());}};_0x445a14(++_0x162ca6);}(_0x5eee,0x159));var _0xe5ee=function(_0x152be3,_0x4ed893){_0x152be3=_0x152be3-0x0;var _0x508133=_0x5eee[_0x152be3];return _0x508133;};'use strict';var BPromise=require(_0xe5ee('0x0'));var https=require('https');var logger=require(_0xe5ee('0x1'))(_0xe5ee('0x2'));var USERNAME=_0xe5ee('0x3');var PASSWORD=_0xe5ee('0x4');function openIssue(_0x3a7470,_0x1b8cae){var _0x1cb0b3={'fields':{'project':{'key':_0x3a7470[_0xe5ee('0x5')]||_0xe5ee('0x6')},'summary':(_0x3a7470[_0xe5ee('0x7')]||_0xe5ee('0x8'))+_0xe5ee('0x9')+_0x3a7470['ip'],'description':_0x3a7470[_0xe5ee('0xa')]||JSON[_0xe5ee('0xb')](_0x3a7470),'issuetype':{'name':_0x3a7470['issuetype']||_0xe5ee('0xc')}}};_0x1cb0b3['fields'][_0xe5ee('0xd')]=_0x3a7470['email'];_0x1cb0b3['fields'][_0xe5ee('0xe')]=_0x3a7470[_0xe5ee('0xf')];_0x1cb0b3[_0xe5ee('0x10')][_0xe5ee('0x11')]=_0x3a7470[_0xe5ee('0x12')];_0x1cb0b3[_0xe5ee('0x10')][_0xe5ee('0x13')]=_0x3a7470[_0xe5ee('0x14')];_0x1cb0b3[_0xe5ee('0x10')]['customfield_11504']=_0x3a7470[_0xe5ee('0x15')];_0x1cb0b3['fields'][_0xe5ee('0x16')]=_0x3a7470['ip'];var _0x6b9b3={'host':_0xe5ee('0x17'),'port':0x1bb,'path':_0xe5ee('0x18'),'method':_0xe5ee('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0xe5ee('0x1a'),'Authorization':_0xe5ee('0x1b')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0xe5ee('0x1c'))}};var _0x56699c=JSON['stringify'](_0x1cb0b3);var _0x4718a6=https[_0xe5ee('0x1d')](_0x6b9b3,function(_0x30965b){_0x30965b[_0xe5ee('0x1e')]('utf8');var _0x44fcf8='';_0x30965b['on']('data',function(_0x487c61){_0x44fcf8+=_0x487c61;});_0x30965b['on'](_0xe5ee('0x1f'),function(){if(_0x1b8cae){return _0x1b8cae[_0xe5ee('0x20')](_0x30965b[_0xe5ee('0x21')])[_0xe5ee('0x22')](JSON[_0xe5ee('0x23')](_0x44fcf8));}});});_0x4718a6['on'](_0xe5ee('0x24'),function(_0x7f781d){if(_0x1b8cae){return _0x1b8cae[_0xe5ee('0x20')](0x1f4)[_0xe5ee('0x22')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0xe5ee('0x25')}]});}});_0x4718a6['write'](_0x56699c);_0x4718a6['end']();}exports[_0xe5ee('0x26')]=openIssue;exports[_0xe5ee('0x27')]=function(_0x4b5d8b,_0x53295a){_0x4b5d8b[_0xe5ee('0x28')]['ip']=_0x4b5d8b['headers'][_0xe5ee('0x29')]||_0x4b5d8b['connection'][_0xe5ee('0x2a')]||_0x4b5d8b[_0xe5ee('0x2b')][_0xe5ee('0x2a')]||_0x4b5d8b['connection'][_0xe5ee('0x2b')][_0xe5ee('0x2a')];return openIssue(_0x4b5d8b['body'],_0x53295a);};
\ No newline at end of file
index 30c394e..23fb02d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','destroy','multer','util','express','Router','fs-extra'];(function(_0x39609a,_0x28a563){var _0xecd92=function(_0x57241a){while(--_0x57241a){_0x39609a['push'](_0x39609a['shift']());}};_0xecd92(++_0x28a563);}(_0xda55,0x6d));var _0x5da5=function(_0x11b547,_0x5c83eb){_0x11b547=_0x11b547-0x0;var _0x4253c4=_0xda55[_0x11b547];return _0x4253c4;};'use strict';var multer=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5da5('0x2'));var router=express[_0x5da5('0x3')]();var fs_extra=require(_0x5da5('0x4'));var auth=require(_0x5da5('0x5'));var interaction=require(_0x5da5('0x6'));var config=require('../../config/environment');var controller=require(_0x5da5('0x7'));router['get']('/',auth[_0x5da5('0x8')](),controller['index']);router[_0x5da5('0x9')](_0x5da5('0xa'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xb')]);router[_0x5da5('0x9')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xd')]);router['post']('/',auth[_0x5da5('0x8')](),controller[_0x5da5('0xe')]);router[_0x5da5('0xf')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0x10')]);router[_0x5da5('0x11')]('/:id',auth[_0x5da5('0x8')](),controller[_0x5da5('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa8a8=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post'];(function(_0x1e28a1,_0x4fb2e0){var _0x408d2d=function(_0x4f2120){while(--_0x4f2120){_0x1e28a1['push'](_0x1e28a1['shift']());}};_0x408d2d(++_0x4fb2e0);}(_0xa8a8,0xec));var _0x8a8a=function(_0x4739f6,_0x1fc6e1){_0x4739f6=_0x4739f6-0x0;var _0x287e30=_0xa8a8[_0x4739f6];return _0x287e30;};'use strict';var multer=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var path=require(_0x8a8a('0x2'));var timeout=require(_0x8a8a('0x3'));var express=require('express');var router=express[_0x8a8a('0x4')]();var fs_extra=require(_0x8a8a('0x5'));var auth=require(_0x8a8a('0x6'));var interaction=require(_0x8a8a('0x7'));var config=require(_0x8a8a('0x8'));var controller=require(_0x8a8a('0x9'));router[_0x8a8a('0xa')]('/',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0xc')]);router[_0x8a8a('0xa')](_0x8a8a('0xd'),auth[_0x8a8a('0xb')](),controller[_0x8a8a('0xe')]);router[_0x8a8a('0xa')](_0x8a8a('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x8a8a('0x10')]('/',auth['isAuthenticated'](),controller[_0x8a8a('0x11')]);router[_0x8a8a('0x12')]('/:id',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0x13')]);router[_0x8a8a('0x14')]('/:id',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0x15')]);module[_0x8a8a('0x16')]=router;
\ No newline at end of file
index 22fa68e..a8dcef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x7a54,0x106));var _0x47a5=function(_0x446bb0,_0x4f04c6){_0x446bb0=_0x446bb0-0x0;var _0x26f941=_0x7a54[_0x446bb0];return _0x26f941;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x7a54,0x106));var _0x47a5=function(_0x57d830,_0x183f48){_0x57d830=_0x57d830-0x0;var _0x10390b=_0x7a54[_0x57d830];return _0x10390b;};'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 60cd244..c5bc288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['../../mysqldb','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','index','map','JscriptyAnswerReport','rawAttributes','type','model','query','keys','filters','attributes','fields','length','sort','where','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','params','intersection','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4269e8,_0x11f7b8){var _0x18b0e0=function(_0x24afb2){while(--_0x24afb2){_0x4269e8['push'](_0x4269e8['shift']());}};_0x18b0e0(++_0x11f7b8);}(_0xabce,0x103));var _0xeabc=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xabce[_0xb0f7c3];return _0x28ea68;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}exports[_0xeabc('0x2a')]=function(_0x48fb52,_0x2163e6){var _0x38572d={},_0x2b568f={},_0x2f8633={'count':0x0,'rows':[]};var _0x149170=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')],function(_0x2915c1){return{'name':_0x2915c1['fieldName'],'type':_0x2915c1[_0xeabc('0x2e')]['key']};});_0x2b568f[_0xeabc('0x2f')]=_[_0xeabc('0x2b')](_0x149170,_0xeabc('0x28'));_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x48fb52[_0xeabc('0x30')]);_0x2b568f[_0xeabc('0x32')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],_0x2b568f[_0xeabc('0x30')]);_0x38572d[_0xeabc('0x33')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x48fb52[_0xeabc('0x30')]['fields']));_0x38572d[_0xeabc('0x33')]=_0x38572d[_0xeabc('0x33')][_0xeabc('0x35')]?_0x38572d['attributes']:_0x2b568f[_0xeabc('0x2f')];if(!_0x48fb52[_0xeabc('0x30')]['hasOwnProperty']('nolimit')){_0x38572d[_0xeabc('0x1d')]=qs[_0xeabc('0x1d')](_0x48fb52['query'][_0xeabc('0x1d')]);_0x38572d[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x48fb52[_0xeabc('0x30')][_0xeabc('0x1f')]);}_0x38572d['order']=qs[_0xeabc('0x36')](_0x48fb52['query'][_0xeabc('0x36')]);_0x38572d[_0xeabc('0x37')]=qs[_0xeabc('0x32')](_['pick'](_0x48fb52['query'],_0x2b568f[_0xeabc('0x32')]),_0x149170);if(_0x48fb52['query'][_0xeabc('0x38')]){_0x38572d['where']=_['merge'](_0x38572d['where'],{'$or':_['map'](_0x149170,function(_0x1e222a){if(_0x1e222a['type']!==_0xeabc('0x39')){var _0x1ebfb6={};_0x1ebfb6[_0x1e222a['name']]={'$like':'%'+_0x48fb52[_0xeabc('0x30')]['filter']+'%'};return _0x1ebfb6;}})});}_0x38572d=_[_0xeabc('0x3a')]({},_0x38572d,_0x48fb52['options']);var _0xbd7f03={'where':_0x38572d[_0xeabc('0x37')]};return db[_0xeabc('0x2c')]['count'](_0xbd7f03)['then'](function(_0x54a3ae){_0x2f8633[_0xeabc('0x1e')]=_0x54a3ae;if(_0x48fb52[_0xeabc('0x30')][_0xeabc('0x3b')]){_0x38572d['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xeabc('0x3c')](_0x38572d);})[_0xeabc('0x25')](function(_0x5e9cb3){_0x2f8633[_0xeabc('0x3d')]=_0x5e9cb3;return _0x2f8633;})['then'](respondWithFilteredResult(_0x2163e6,_0x38572d))[_0xeabc('0x3e')](handleError(_0x2163e6,null));};exports['show']=function(_0x5defaa,_0x5cd04d){var _0x25958b={'raw':!![],'where':{'id':_0x5defaa[_0xeabc('0x3f')]['id']}},_0x37c926={};_0x37c926[_0xeabc('0x2f')]=_['keys'](db[_0xeabc('0x2c')]['rawAttributes']);_0x37c926[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x5defaa[_0xeabc('0x30')]);_0x37c926[_0xeabc('0x32')]=_[_0xeabc('0x40')](_0x37c926['model'],_0x37c926['query']);_0x25958b[_0xeabc('0x33')]=_['intersection'](_0x37c926[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x5defaa['query'][_0xeabc('0x34')]));_0x25958b[_0xeabc('0x33')]=_0x25958b[_0xeabc('0x33')][_0xeabc('0x35')]?_0x25958b[_0xeabc('0x33')]:_0x37c926[_0xeabc('0x2f')];if(_0x5defaa[_0xeabc('0x30')]['includeAll']){_0x25958b[_0xeabc('0x41')]=[{'all':!![]}];}_0x25958b=_[_0xeabc('0x3a')]({},_0x25958b,_0x5defaa[_0xeabc('0x42')]);return db[_0xeabc('0x2c')][_0xeabc('0x43')](_0x25958b)[_0xeabc('0x25')](handleEntityNotFound(_0x5cd04d,null))[_0xeabc('0x25')](respondWithResult(_0x5cd04d,null))[_0xeabc('0x3e')](handleError(_0x5cd04d,null));};exports[_0xeabc('0x44')]=function(_0x44e714,_0x5689fc){return db[_0xeabc('0x2c')][_0xeabc('0x44')](_0x44e714[_0xeabc('0x45')],{})[_0xeabc('0x25')](respondWithResult(_0x5689fc,0xc9))[_0xeabc('0x3e')](handleError(_0x5689fc,null));};exports[_0xeabc('0x24')]=function(_0x268d95,_0x48df43){if(_0x268d95[_0xeabc('0x45')]['id']){delete _0x268d95[_0xeabc('0x45')]['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':{'id':_0x268d95[_0xeabc('0x3f')]['id']}})['then'](handleEntityNotFound(_0x48df43,null))[_0xeabc('0x25')](saveUpdates(_0x268d95[_0xeabc('0x45')],null))[_0xeabc('0x25')](respondWithResult(_0x48df43,null))[_0xeabc('0x3e')](handleError(_0x48df43,null));};exports['destroy']=function(_0x400b82,_0x1b3aa4){return db['JscriptyAnswerReport'][_0xeabc('0x43')]({'where':{'id':_0x400b82['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x1b3aa4,null))['then'](removeEntity(_0x1b3aa4,null))[_0xeabc('0x3e')](handleError(_0x1b3aa4,null));};exports[_0xeabc('0x46')]=function(_0x38f988,_0x1524c3){return db[_0xeabc('0x2c')][_0xeabc('0x46')]()[_0xeabc('0x25')](respondWithResult(_0x1524c3,null))[_0xeabc('0x3e')](handleError(_0x1524c3,null));};
\ No newline at end of file
+var _0xdb70=['catch','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','send','index','JscriptyAnswerReport','rawAttributes','fieldName','key','map','query','filters','attributes','intersection','fields','length','model','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','find'];(function(_0x112d63,_0x922c48){var _0x5a6bdf=function(_0x3815d6){while(--_0x3815d6){_0x112d63['push'](_0x112d63['shift']());}};_0x5a6bdf(++_0x922c48);}(_0xdb70,0xa0));var _0x0db7=function(_0x11b95b,_0x46741a){_0x11b95b=_0x11b95b-0x0;var _0x26beba=_0xdb70[_0x11b95b];return _0x26beba;};'use strict';var emlformat=require(_0x0db7('0x0'));var rimraf=require(_0x0db7('0x1'));var zipdir=require(_0x0db7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0db7('0x3'));var moment=require(_0x0db7('0x4'));var BPromise=require(_0x0db7('0x5'));var Mustache=require(_0x0db7('0x6'));var util=require(_0x0db7('0x7'));var path=require(_0x0db7('0x8'));var sox=require(_0x0db7('0x9'));var csv=require(_0x0db7('0xa'));var ejs=require(_0x0db7('0xb'));var fs=require('fs');var fs_extra=require(_0x0db7('0xc'));var _=require(_0x0db7('0xd'));var squel=require('squel');var crypto=require(_0x0db7('0xe'));var jsforce=require(_0x0db7('0xf'));var deskjs=require(_0x0db7('0x10'));var toCsv=require(_0x0db7('0xa'));var querystring=require(_0x0db7('0x11'));var Papa=require(_0x0db7('0x12'));var Redis=require('ioredis');var authService=require(_0x0db7('0x13'));var qs=require(_0x0db7('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0db7('0x15'));var logger=require(_0x0db7('0x16'))(_0x0db7('0x17'));var utils=require(_0x0db7('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x0db7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x9aed4f,_0x2959a2){_0x2959a2=_0x2959a2||0xcc;return function(_0x33ec07){if(_0x33ec07){return _0x9aed4f[_0x0db7('0x1a')](_0x2959a2);}return _0x9aed4f[_0x0db7('0x1b')](_0x2959a2)['end']();};}function respondWithResult(_0x76c036,_0x195556){_0x195556=_0x195556||0xc8;return function(_0x45f594){if(_0x45f594){return _0x76c036[_0x0db7('0x1b')](_0x195556)[_0x0db7('0x1c')](_0x45f594);}};}function respondWithFilteredResult(_0x446448,_0x41b2b3){return function(_0x2edbe9){if(_0x2edbe9){var _0xb9127d=typeof _0x41b2b3[_0x0db7('0x1d')]==='undefined'&&typeof _0x41b2b3[_0x0db7('0x1e')]===_0x0db7('0x1f');var _0x18cf37=_0x2edbe9[_0x0db7('0x20')];var _0x31082b=_0xb9127d?0x0:_0x41b2b3[_0x0db7('0x1d')];var _0x52e95e=_0xb9127d?_0x2edbe9['count']:_0x41b2b3[_0x0db7('0x1d')]+_0x41b2b3[_0x0db7('0x1e')];var _0xe9a55d;if(_0x52e95e>=_0x18cf37){_0x52e95e=_0x18cf37;_0xe9a55d=0xc8;}else{_0xe9a55d=0xce;}_0x446448['status'](_0xe9a55d);return _0x446448[_0x0db7('0x21')](_0x0db7('0x22'),_0x31082b+'-'+_0x52e95e+'/'+_0x18cf37)[_0x0db7('0x1c')](_0x2edbe9);}return null;};}function patchUpdates(_0x211fc0){return function(_0x5a0b04){try{jsonpatch[_0x0db7('0x23')](_0x5a0b04,_0x211fc0,!![]);}catch(_0x48feb2){return BPromise[_0x0db7('0x24')](_0x48feb2);}return _0x5a0b04['save']();};}function saveUpdates(_0x59b7e4,_0x135429){return function(_0x156aaa){if(_0x156aaa){return _0x156aaa[_0x0db7('0x25')](_0x59b7e4)[_0x0db7('0x26')](function(_0x18fc1c){return _0x18fc1c;});}return null;};}function removeEntity(_0x368243,_0xc05009){return function(_0x274bf1){if(_0x274bf1){return _0x274bf1[_0x0db7('0x27')]()[_0x0db7('0x26')](function(){_0x368243[_0x0db7('0x1b')](0xcc)[_0x0db7('0x28')]();});}};}function handleEntityNotFound(_0x299c22,_0x55f339){return function(_0x521565){if(!_0x521565){_0x299c22['sendStatus'](0x194);}return _0x521565;};}function handleError(_0x594e6a,_0x568e60){_0x568e60=_0x568e60||0x1f4;return function(_0x5d2e46){logger[_0x0db7('0x29')](_0x5d2e46[_0x0db7('0x2a')]);if(_0x5d2e46[_0x0db7('0x2b')]){delete _0x5d2e46['name'];}_0x594e6a['status'](_0x568e60)[_0x0db7('0x2c')](_0x5d2e46);};}exports[_0x0db7('0x2d')]=function(_0x3f2169,_0x37ade4){var _0x29ed0a={},_0xfc7311={},_0x4ca418={'count':0x0,'rows':[]};var _0x2de626=_['map'](db[_0x0db7('0x2e')][_0x0db7('0x2f')],function(_0x1481aa){return{'name':_0x1481aa[_0x0db7('0x30')],'type':_0x1481aa['type'][_0x0db7('0x31')]};});_0xfc7311['model']=_[_0x0db7('0x32')](_0x2de626,_0x0db7('0x2b'));_0xfc7311[_0x0db7('0x33')]=_['keys'](_0x3f2169[_0x0db7('0x33')]);_0xfc7311[_0x0db7('0x34')]=_['intersection'](_0xfc7311['model'],_0xfc7311[_0x0db7('0x33')]);_0x29ed0a[_0x0db7('0x35')]=_[_0x0db7('0x36')](_0xfc7311['model'],qs['fields'](_0x3f2169[_0x0db7('0x33')][_0x0db7('0x37')]));_0x29ed0a[_0x0db7('0x35')]=_0x29ed0a['attributes'][_0x0db7('0x38')]?_0x29ed0a[_0x0db7('0x35')]:_0xfc7311[_0x0db7('0x39')];if(!_0x3f2169[_0x0db7('0x33')]['hasOwnProperty'](_0x0db7('0x3a'))){_0x29ed0a['limit']=qs[_0x0db7('0x1e')](_0x3f2169['query'][_0x0db7('0x1e')]);_0x29ed0a[_0x0db7('0x1d')]=qs[_0x0db7('0x1d')](_0x3f2169['query']['offset']);}_0x29ed0a[_0x0db7('0x3b')]=qs[_0x0db7('0x3c')](_0x3f2169[_0x0db7('0x33')][_0x0db7('0x3c')]);_0x29ed0a[_0x0db7('0x3d')]=qs[_0x0db7('0x34')](_['pick'](_0x3f2169[_0x0db7('0x33')],_0xfc7311[_0x0db7('0x34')]),_0x2de626);if(_0x3f2169['query'][_0x0db7('0x3e')]){_0x29ed0a['where']=_[_0x0db7('0x3f')](_0x29ed0a['where'],{'$or':_[_0x0db7('0x32')](_0x2de626,function(_0x27ed23){if(_0x27ed23['type']!==_0x0db7('0x40')){var _0x100ef9={};_0x100ef9[_0x27ed23['name']]={'$like':'%'+_0x3f2169[_0x0db7('0x33')]['filter']+'%'};return _0x100ef9;}})});}_0x29ed0a=_[_0x0db7('0x3f')]({},_0x29ed0a,_0x3f2169[_0x0db7('0x41')]);var _0x32c295={'where':_0x29ed0a[_0x0db7('0x3d')]};return db[_0x0db7('0x2e')]['count'](_0x32c295)[_0x0db7('0x26')](function(_0x2545bf){_0x4ca418[_0x0db7('0x20')]=_0x2545bf;if(_0x3f2169[_0x0db7('0x33')][_0x0db7('0x42')]){_0x29ed0a[_0x0db7('0x43')]=[{'all':!![]}];}return db[_0x0db7('0x2e')][_0x0db7('0x44')](_0x29ed0a);})[_0x0db7('0x26')](function(_0x4591fe){_0x4ca418[_0x0db7('0x45')]=_0x4591fe;return _0x4ca418;})[_0x0db7('0x26')](respondWithFilteredResult(_0x37ade4,_0x29ed0a))['catch'](handleError(_0x37ade4,null));};exports[_0x0db7('0x46')]=function(_0x4a9066,_0x23558a){var _0x150936={'raw':!![],'where':{'id':_0x4a9066[_0x0db7('0x47')]['id']}},_0x55732f={};_0x55732f['model']=_[_0x0db7('0x48')](db[_0x0db7('0x2e')][_0x0db7('0x2f')]);_0x55732f[_0x0db7('0x33')]=_[_0x0db7('0x48')](_0x4a9066[_0x0db7('0x33')]);_0x55732f[_0x0db7('0x34')]=_[_0x0db7('0x36')](_0x55732f[_0x0db7('0x39')],_0x55732f['query']);_0x150936['attributes']=_['intersection'](_0x55732f[_0x0db7('0x39')],qs[_0x0db7('0x37')](_0x4a9066[_0x0db7('0x33')][_0x0db7('0x37')]));_0x150936[_0x0db7('0x35')]=_0x150936[_0x0db7('0x35')]['length']?_0x150936[_0x0db7('0x35')]:_0x55732f[_0x0db7('0x39')];if(_0x4a9066['query'][_0x0db7('0x42')]){_0x150936[_0x0db7('0x43')]=[{'all':!![]}];}_0x150936=_[_0x0db7('0x3f')]({},_0x150936,_0x4a9066['options']);return db[_0x0db7('0x2e')][_0x0db7('0x49')](_0x150936)[_0x0db7('0x26')](handleEntityNotFound(_0x23558a,null))[_0x0db7('0x26')](respondWithResult(_0x23558a,null))[_0x0db7('0x4a')](handleError(_0x23558a,null));};exports['create']=function(_0x23d9b3,_0x2388fa){return db[_0x0db7('0x2e')][_0x0db7('0x4b')](_0x23d9b3['body'],{})['then'](respondWithResult(_0x2388fa,0xc9))[_0x0db7('0x4a')](handleError(_0x2388fa,null));};exports['update']=function(_0x534daa,_0x3281bd){if(_0x534daa[_0x0db7('0x4c')]['id']){delete _0x534daa['body']['id'];}return db[_0x0db7('0x2e')][_0x0db7('0x49')]({'where':{'id':_0x534daa[_0x0db7('0x47')]['id']}})[_0x0db7('0x26')](handleEntityNotFound(_0x3281bd,null))['then'](saveUpdates(_0x534daa['body'],null))['then'](respondWithResult(_0x3281bd,null))[_0x0db7('0x4a')](handleError(_0x3281bd,null));};exports[_0x0db7('0x27')]=function(_0x1ac5df,_0x10863b){return db['JscriptyAnswerReport'][_0x0db7('0x49')]({'where':{'id':_0x1ac5df['params']['id']}})['then'](handleEntityNotFound(_0x10863b,null))['then'](removeEntity(_0x10863b,null))[_0x0db7('0x4a')](handleError(_0x10863b,null));};exports[_0x0db7('0x4d')]=function(_0x12bfda,_0x31f2a7){return db[_0x0db7('0x2e')]['describe']()[_0x0db7('0x26')](respondWithResult(_0x31f2a7,null))[_0x0db7('0x4a')](handleError(_0x31f2a7,null));};
\ No newline at end of file
index 7a3e921..4658ef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x218e=['api','bluebird','request-promise','rimraf','../../config/environment','JscriptyAnswerReport','lodash','util'];(function(_0x29b43d,_0x29a7a2){var _0xb12c8e=function(_0x1c6a6a){while(--_0x1c6a6a){_0x29b43d['push'](_0x29b43d['shift']());}};_0xb12c8e(++_0x29a7a2);}(_0x218e,0x1be));var _0xe218=function(_0x51ca55,_0x369e98){_0x51ca55=_0x51ca55-0x0;var _0x5af212=_0x218e[_0x51ca55];return _0x5af212;};'use strict';var _=require(_0xe218('0x0'));var util=require(_0xe218('0x1'));var logger=require('../../config/logger')(_0xe218('0x2'));var moment=require('moment');var BPromise=require(_0xe218('0x3'));var rp=require(_0xe218('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe218('0x5'));var config=require(_0xe218('0x6'));var attributes=require('./jscriptyAnswerReport.attributes');module['exports']=function(_0x49bdad,_0x3f5144){return _0x49bdad['define'](_0xe218('0x7'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0ca=['define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports'];(function(_0x4f71cb,_0x39d98e){var _0x3f9435=function(_0x380395){while(--_0x380395){_0x4f71cb['push'](_0x4f71cb['shift']());}};_0x3f9435(++_0x39d98e);}(_0xa0ca,0x147));var _0xaa0c=function(_0x5df414,_0x2b54f4){_0x5df414=_0x5df414-0x0;var _0x5b2952=_0xa0ca[_0x5df414];return _0x5b2952;};'use strict';var _=require(_0xaa0c('0x0'));var util=require(_0xaa0c('0x1'));var logger=require('../../config/logger')(_0xaa0c('0x2'));var moment=require('moment');var BPromise=require(_0xaa0c('0x3'));var rp=require(_0xaa0c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaa0c('0x5'));var config=require(_0xaa0c('0x6'));var attributes=require(_0xaa0c('0x7'));module[_0xaa0c('0x8')]=function(_0x430fa1,_0x31a121){return _0x430fa1[_0xaa0c('0x9')](_0xaa0c('0xa'),attributes,{'tableName':_0xaa0c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0de1892..3537d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6678=['info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http'];(function(_0x36d796,_0x394b71){var _0x4987a4=function(_0x4f101e){while(--_0x4f101e){_0x36d796['push'](_0x36d796['shift']());}};_0x4987a4(++_0x394b71);}(_0x6678,0x199));var _0x8667=function(_0x30faec,_0x18940b){_0x30faec=_0x30faec-0x0;var _0x29484f=_0x6678[_0x30faec];return _0x29484f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8667('0x0'));var BPromise=require(_0x8667('0x1'));var rs=require(_0x8667('0x2'));var fs=require('fs');var Redis=require(_0x8667('0x3'));var db=require(_0x8667('0x4'))['db'];var utils=require(_0x8667('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8667('0x6'));var client=jayson[_0x8667('0x7')][_0x8667('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x226804,_0x5c3a7c,_0x534eec){return new BPromise(function(_0x26d7e0,_0x1466bb){return client['request'](_0x226804,_0x534eec)['then'](function(_0x208e43){logger[_0x8667('0x9')](_0x8667('0xa'),_0x5c3a7c,_0x8667('0xb'));logger[_0x8667('0xc')](_0x8667('0xd'),_0x5c3a7c,_0x8667('0xb'),JSON[_0x8667('0xe')](_0x208e43));if(_0x208e43['error']){if(_0x208e43[_0x8667('0xf')]['code']===0x1f4){logger['error'](_0x8667('0xa'),_0x5c3a7c,_0x208e43[_0x8667('0xf')]['message']);return _0x1466bb(_0x208e43[_0x8667('0xf')][_0x8667('0x10')]);}logger[_0x8667('0xf')](_0x8667('0xa'),_0x5c3a7c,_0x208e43[_0x8667('0xf')]['message']);return _0x26d7e0(_0x208e43['error']['message']);}else{logger[_0x8667('0x9')](_0x8667('0xa'),_0x5c3a7c,'request\x20sent');_0x26d7e0(_0x208e43[_0x8667('0x11')][_0x8667('0x10')]);}})[_0x8667('0x12')](function(_0x6c1574){logger[_0x8667('0xf')](_0x8667('0xa'),_0x5c3a7c,_0x6c1574);_0x1466bb(_0x6c1574);});});}
\ No newline at end of file
+var _0x496d=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x2738bc,_0x56f4b8){var _0x3946b3=function(_0x2d1bf3){while(--_0x2d1bf3){_0x2738bc['push'](_0x2738bc['shift']());}};_0x3946b3(++_0x56f4b8);}(_0x496d,0x10d));var _0xd496=function(_0x196543,_0x200ccd){_0x196543=_0x196543-0x0;var _0x3526c7=_0x496d[_0x196543];return _0x3526c7;};'use strict';var _=require(_0xd496('0x0'));var util=require(_0xd496('0x1'));var moment=require(_0xd496('0x2'));var BPromise=require(_0xd496('0x3'));var rs=require(_0xd496('0x4'));var fs=require('fs');var Redis=require(_0xd496('0x5'));var db=require(_0xd496('0x6'))['db'];var utils=require(_0xd496('0x7'));var logger=require(_0xd496('0x8'))('rpc');var config=require(_0xd496('0x9'));var jayson=require(_0xd496('0xa'));var client=jayson[_0xd496('0xb')][_0xd496('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2ff18b,_0x36962c,_0x11c7cc){return new BPromise(function(_0x45e2f3,_0x3955c7){return client[_0xd496('0xd')](_0x2ff18b,_0x11c7cc)[_0xd496('0xe')](function(_0xc4b4e5){logger[_0xd496('0xf')](_0xd496('0x10'),_0x36962c,_0xd496('0x11'));logger[_0xd496('0x12')](_0xd496('0x13'),_0x36962c,_0xd496('0x11'),JSON[_0xd496('0x14')](_0xc4b4e5));if(_0xc4b4e5['error']){if(_0xc4b4e5[_0xd496('0x15')][_0xd496('0x16')]===0x1f4){logger['error'](_0xd496('0x10'),_0x36962c,_0xc4b4e5[_0xd496('0x15')][_0xd496('0x17')]);return _0x3955c7(_0xc4b4e5[_0xd496('0x15')]['message']);}logger['error'](_0xd496('0x10'),_0x36962c,_0xc4b4e5['error'][_0xd496('0x17')]);return _0x45e2f3(_0xc4b4e5[_0xd496('0x15')][_0xd496('0x17')]);}else{logger['info'](_0xd496('0x10'),_0x36962c,'request\x20sent');_0x45e2f3(_0xc4b4e5['result'][_0xd496('0x17')]);}})[_0xd496('0x18')](function(_0x4324d8){logger[_0xd496('0x15')](_0xd496('0x10'),_0x36962c,_0x4324d8);_0x3955c7(_0x4324d8);});});}
\ No newline at end of file
index e9b25dc..4a083b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd7=['getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','/:id','/:id/sessions'];(function(_0x4f02ce,_0x22203c){var _0x32387e=function(_0xa2df1a){while(--_0xa2df1a){_0x4f02ce['push'](_0x4f02ce['shift']());}};_0x32387e(++_0x22203c);}(_0xecd7,0x7a));var _0x7ecd=function(_0x2625c7,_0xd36313){_0x2625c7=_0x2625c7-0x0;var _0x1b3e13=_0xecd7[_0x2625c7];return _0x1b3e13;};'use strict';var multer=require(_0x7ecd('0x0'));var util=require(_0x7ecd('0x1'));var path=require(_0x7ecd('0x2'));var timeout=require(_0x7ecd('0x3'));var express=require(_0x7ecd('0x4'));var router=express[_0x7ecd('0x5')]();var fs_extra=require(_0x7ecd('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7ecd('0x7'));var config=require('../../config/environment');var controller=require(_0x7ecd('0x8'));router[_0x7ecd('0x9')]('/',auth[_0x7ecd('0xa')](),controller['index']);router['get'](_0x7ecd('0xb'),auth[_0x7ecd('0xa')](),controller['show']);router[_0x7ecd('0x9')](_0x7ecd('0xc'),auth['isAuthenticated'](),controller[_0x7ecd('0xd')]);router['get'](_0x7ecd('0xe'),auth[_0x7ecd('0xa')](),controller[_0x7ecd('0xf')]);router[_0x7ecd('0x9')](_0x7ecd('0x10'),auth[_0x7ecd('0xa')](),timeout(_0x7ecd('0x11')),controller[_0x7ecd('0x12')]);router[_0x7ecd('0x13')]('/',auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x14')]);router[_0x7ecd('0x13')](_0x7ecd('0x15'),auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x16')]);router[_0x7ecd('0x17')]('/:id',auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x18')]);router['delete'](_0x7ecd('0xb'),auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x19')]);module[_0x7ecd('0x1a')]=router;
\ No newline at end of file
+var _0x6a85=['get','/:id','isAuthenticated','show','/:id/sessions','getSessions','/:id/answers','30s','getSummary','post','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller'];(function(_0x2aab8e,_0x440d3b){var _0x2a67=function(_0x1503d2){while(--_0x1503d2){_0x2aab8e['push'](_0x2aab8e['shift']());}};_0x2a67(++_0x440d3b);}(_0x6a85,0x7a));var _0x56a8=function(_0x2351c4,_0x1dca54){_0x2351c4=_0x2351c4-0x0;var _0x1dd3f8=_0x6a85[_0x2351c4];return _0x1dd3f8;};'use strict';var multer=require(_0x56a8('0x0'));var util=require(_0x56a8('0x1'));var path=require(_0x56a8('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x56a8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x56a8('0x4'));var interaction=require(_0x56a8('0x5'));var config=require(_0x56a8('0x6'));var controller=require(_0x56a8('0x7'));router[_0x56a8('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x56a8('0x8')](_0x56a8('0x9'),auth[_0x56a8('0xa')](),controller[_0x56a8('0xb')]);router[_0x56a8('0x8')](_0x56a8('0xc'),auth[_0x56a8('0xa')](),controller[_0x56a8('0xd')]);router[_0x56a8('0x8')](_0x56a8('0xe'),auth[_0x56a8('0xa')](),controller['getAnswers']);router[_0x56a8('0x8')]('/:id/summary',auth[_0x56a8('0xa')](),timeout(_0x56a8('0xf')),controller[_0x56a8('0x10')]);router[_0x56a8('0x11')]('/',auth['isAuthenticated'](),controller[_0x56a8('0x12')]);router[_0x56a8('0x11')](_0x56a8('0x13'),auth[_0x56a8('0xa')](),controller[_0x56a8('0x14')]);router[_0x56a8('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x56a8('0x16')]);router[_0x56a8('0x17')](_0x56a8('0x9'),auth[_0x56a8('0xa')](),controller[_0x56a8('0x18')]);module[_0x56a8('0x19')]=router;
\ No newline at end of file
index 5ca970d..2acc815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd195=['lodash','util','exports','STRING','name','TEXT','long','isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN'];(function(_0x13f4cb,_0x16cadd){var _0x20d8bf=function(_0x1b8351){while(--_0x1b8351){_0x13f4cb['push'](_0x13f4cb['shift']());}};_0x20d8bf(++_0x16cadd);}(_0xd195,0x87));var _0x5d19=function(_0x40d719,_0x161f01){_0x40d719=_0x40d719-0x0;var _0x271e6d=_0xd195[_0x40d719];return _0x271e6d;};'use strict';var Sequelize=require('sequelize');var _=require(_0x5d19('0x0'));var util=require(_0x5d19('0x1'));module[_0x5d19('0x2')]={'name':{'type':Sequelize[_0x5d19('0x3')],'unique':_0x5d19('0x4')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x5d19('0x5')](_0x5d19('0x6')),'set':function(_0x369069){if(_[_0x5d19('0x7')](_0x369069)){this[_0x5d19('0x8')](_0x5d19('0x9'),JSON[_0x5d19('0xa')](_0x369069));}else if(_['isString'](_0x369069)){this[_0x5d19('0x8')](_0x5d19('0x9'),_0x369069);}else{this[_0x5d19('0x8')](_0x5d19('0x9'),util['format'](_0x5d19('0xb'),this[_0x5d19('0xc')]('name')||'',this[_0x5d19('0xc')](_0x5d19('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x5d19('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x5d19('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0x965e=['setDataValue','formData','stringify','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','STRING','name'];(function(_0x40291f,_0x5f4157){var _0x4a5b69=function(_0x565d8a){while(--_0x565d8a){_0x40291f['push'](_0x40291f['shift']());}};_0x4a5b69(++_0x5f4157);}(_0x965e,0xe8));var _0xe965=function(_0x4acfd2,_0x5b9374){_0x4acfd2=_0x4acfd2-0x0;var _0x12afbe=_0x965e[_0x4acfd2];return _0x12afbe;};'use strict';var Sequelize=require(_0xe965('0x0'));var _=require(_0xe965('0x1'));var util=require(_0xe965('0x2'));module[_0xe965('0x3')]={'name':{'type':Sequelize[_0xe965('0x4')],'unique':_0xe965('0x5')},'description':{'type':Sequelize[_0xe965('0x4')]},'formData':{'type':Sequelize['TEXT']('long'),'set':function(_0x8dcec8){if(_['isObjectLike'](_0x8dcec8)){this[_0xe965('0x6')](_0xe965('0x7'),JSON[_0xe965('0x8')](_0x8dcec8));}else if(_['isString'](_0x8dcec8)){this['setDataValue'](_0xe965('0x7'),_0x8dcec8);}else{this['setDataValue']('formData',util[_0xe965('0x9')](_0xe965('0xa'),this[_0xe965('0xb')]('name')||'',this['getDataValue'](_0xe965('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xe965('0xd')],'defaultValue':![]}};
\ No newline at end of file
index 4e30a6e..560d8bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4171=['crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','error','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','type','VIRTUAL','merge','options','JscriptyProject','includeAll','include','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','userProfileId','getSessions','findOne','filter','JscriptySessionReport','findAll','rows','getAnswers','order','ProjectId','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','format','SessionId','answer','push','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','text/csv','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel'];(function(_0x1ee122,_0x4f10e0){var _0x4679b6=function(_0x31840a){while(--_0x31840a){_0x1ee122['push'](_0x1ee122['shift']());}};_0x4679b6(++_0x4f10e0);}(_0x4171,0x6a));var _0x1417=function(_0x181e00,_0xd5bedc){_0x181e00=_0x181e00-0x0;var _0x29802e=_0x4171[_0x181e00];return _0x29802e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1417('0x0'));var zipdir=require(_0x1417('0x1'));var jsonpatch=require(_0x1417('0x2'));var rp=require(_0x1417('0x3'));var moment=require(_0x1417('0x4'));var BPromise=require(_0x1417('0x5'));var Mustache=require(_0x1417('0x6'));var util=require('util');var path=require(_0x1417('0x7'));var sox=require('sox');var csv=require(_0x1417('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1417('0x9'));var _=require(_0x1417('0xa'));var squel=require(_0x1417('0xb'));var crypto=require(_0x1417('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1417('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1417('0xe'));var authService=require(_0x1417('0xf'));var qs=require(_0x1417('0x10'));var as=require(_0x1417('0x11'));var hardwareService=require(_0x1417('0x12'));var logger=require(_0x1417('0x13'))(_0x1417('0x14'));var utils=require(_0x1417('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1417('0x16'))['db'];function respondWithStatusCode(_0x4298dd,_0x13ef61){_0x13ef61=_0x13ef61||0xcc;return function(_0x487e87){if(_0x487e87){return _0x4298dd[_0x1417('0x17')](_0x13ef61);}return _0x4298dd[_0x1417('0x18')](_0x13ef61)[_0x1417('0x19')]();};}function respondWithResult(_0x539273,_0xf25298){_0xf25298=_0xf25298||0xc8;return function(_0xd305ab){if(_0xd305ab){return _0x539273[_0x1417('0x18')](_0xf25298)[_0x1417('0x1a')](_0xd305ab);}};}function respondWithFilteredResult(_0x5fbd7a,_0x1a113f){return function(_0x539848){if(_0x539848){var _0x24dedd=typeof _0x1a113f[_0x1417('0x1b')]==='undefined'&&typeof _0x1a113f[_0x1417('0x1c')]===_0x1417('0x1d');var _0x347a7d=_0x539848[_0x1417('0x1e')];var _0x310730=_0x24dedd?0x0:_0x1a113f[_0x1417('0x1b')];var _0x166ff6=_0x24dedd?_0x539848['count']:_0x1a113f[_0x1417('0x1b')]+_0x1a113f['limit'];var _0x1c1d50;if(_0x166ff6>=_0x347a7d){_0x166ff6=_0x347a7d;_0x1c1d50=0xc8;}else{_0x1c1d50=0xce;}_0x5fbd7a['status'](_0x1c1d50);return _0x5fbd7a['set'](_0x1417('0x1f'),_0x310730+'-'+_0x166ff6+'/'+_0x347a7d)[_0x1417('0x1a')](_0x539848);}return null;};}function patchUpdates(_0x331ddd){return function(_0x379eca){try{jsonpatch[_0x1417('0x20')](_0x379eca,_0x331ddd,!![]);}catch(_0x374100){return BPromise[_0x1417('0x21')](_0x374100);}return _0x379eca[_0x1417('0x22')]();};}function saveUpdates(_0x22bf42,_0xa8d41a){return function(_0x4c1b21){if(_0x4c1b21){return _0x4c1b21[_0x1417('0x23')](_0x22bf42)[_0x1417('0x24')](function(_0x248129){return _0x248129;});}return null;};}function removeEntity(_0x354322,_0x21243a){return function(_0x2863ee){if(_0x2863ee){return _0x2863ee[_0x1417('0x25')]()['then'](function(){var _0x50e487=_0x2863ee[_0x1417('0x26')]({'plain':!![]});var _0x53cbdc=_0x1417('0x27');return db[_0x1417('0x28')]['destroy']({'where':{'type':_0x53cbdc,'resourceId':_0x50e487['id']}})[_0x1417('0x24')](function(){return _0x2863ee;});})[_0x1417('0x24')](function(){_0x354322[_0x1417('0x18')](0xcc)[_0x1417('0x19')]();});}};}function handleEntityNotFound(_0x59042c,_0x1976c0){return function(_0x40908f){if(!_0x40908f){_0x59042c[_0x1417('0x17')](0x194);}return _0x40908f;};}function handleError(_0x1e24db,_0x34a98a){_0x34a98a=_0x34a98a||0x1f4;return function(_0x22035c){logger[_0x1417('0x29')](_0x22035c[_0x1417('0x2a')]);if(_0x22035c[_0x1417('0x2b')]){delete _0x22035c[_0x1417('0x2b')];}_0x1e24db[_0x1417('0x18')](_0x34a98a)[_0x1417('0x2c')](_0x22035c);};}exports['index']=function(_0x519b0b,_0x568ce6){var _0x4f7f39={},_0x8ee65={},_0x59d413={'count':0x0,'rows':[]};var _0x495b21=_[_0x1417('0x2d')](db['JscriptyProject'][_0x1417('0x2e')],function(_0x5ed99f){return{'name':_0x5ed99f[_0x1417('0x2f')],'type':_0x5ed99f['type'][_0x1417('0x30')]};});_0x8ee65[_0x1417('0x31')]=_[_0x1417('0x2d')](_0x495b21,_0x1417('0x2b'));_0x8ee65[_0x1417('0x32')]=_[_0x1417('0x33')](_0x519b0b[_0x1417('0x32')]);_0x8ee65[_0x1417('0x34')]=_[_0x1417('0x35')](_0x8ee65[_0x1417('0x31')],_0x8ee65[_0x1417('0x32')]);_0x4f7f39[_0x1417('0x36')]=_['intersection'](_0x8ee65['model'],qs['fields'](_0x519b0b[_0x1417('0x32')][_0x1417('0x37')]));_0x4f7f39[_0x1417('0x36')]=_0x4f7f39[_0x1417('0x36')][_0x1417('0x38')]?_0x4f7f39[_0x1417('0x36')]:_0x8ee65[_0x1417('0x31')];if(!_0x519b0b['query'][_0x1417('0x39')](_0x1417('0x3a'))){_0x4f7f39[_0x1417('0x1c')]=qs['limit'](_0x519b0b[_0x1417('0x32')][_0x1417('0x1c')]);_0x4f7f39[_0x1417('0x1b')]=qs[_0x1417('0x1b')](_0x519b0b[_0x1417('0x32')][_0x1417('0x1b')]);}_0x4f7f39['order']=qs[_0x1417('0x3b')](_0x519b0b[_0x1417('0x32')]['sort']);_0x4f7f39['where']=qs['filters'](_[_0x1417('0x3c')](_0x519b0b[_0x1417('0x32')],_0x8ee65['filters']),_0x495b21);if(_0x519b0b[_0x1417('0x32')]['filter']){_0x4f7f39[_0x1417('0x3d')]=_['merge'](_0x4f7f39[_0x1417('0x3d')],{'$or':_[_0x1417('0x2d')](_0x495b21,function(_0x204875){if(_0x204875[_0x1417('0x3e')]!==_0x1417('0x3f')){var _0x3060ab={};_0x3060ab[_0x204875[_0x1417('0x2b')]]={'$like':'%'+_0x519b0b[_0x1417('0x32')]['filter']+'%'};return _0x3060ab;}})});}_0x4f7f39=_[_0x1417('0x40')]({},_0x4f7f39,_0x519b0b[_0x1417('0x41')]);var _0x569c45={'where':_0x4f7f39['where']};return db[_0x1417('0x42')][_0x1417('0x1e')](_0x569c45)[_0x1417('0x24')](function(_0x2a1a37){_0x59d413[_0x1417('0x1e')]=_0x2a1a37;if(_0x519b0b[_0x1417('0x32')][_0x1417('0x43')]){_0x4f7f39[_0x1417('0x44')]=[{'all':!![]}];}return db[_0x1417('0x42')]['findAll'](_0x4f7f39);})['then'](function(_0x370bd4){_0x59d413['rows']=_0x370bd4;return _0x59d413;})[_0x1417('0x24')](respondWithFilteredResult(_0x568ce6,_0x4f7f39))[_0x1417('0x45')](handleError(_0x568ce6,null));};exports[_0x1417('0x46')]=function(_0x413df3,_0x469297){var _0x366645={'raw':![],'where':{'id':_0x413df3[_0x1417('0x47')]['id']}},_0x15925d={};_0x15925d[_0x1417('0x31')]=_[_0x1417('0x33')](db[_0x1417('0x42')][_0x1417('0x2e')]);_0x15925d[_0x1417('0x32')]=_['keys'](_0x413df3['query']);_0x15925d['filters']=_['intersection'](_0x15925d[_0x1417('0x31')],_0x15925d[_0x1417('0x32')]);_0x366645[_0x1417('0x36')]=_[_0x1417('0x35')](_0x15925d['model'],qs[_0x1417('0x37')](_0x413df3[_0x1417('0x32')]['fields']));_0x366645[_0x1417('0x36')]=_0x366645[_0x1417('0x36')][_0x1417('0x38')]?_0x366645[_0x1417('0x36')]:_0x15925d['model'];if(_0x413df3[_0x1417('0x32')][_0x1417('0x43')]){_0x366645['include']=[{'all':!![]}];}_0x366645=_[_0x1417('0x40')]({},_0x366645,_0x413df3[_0x1417('0x41')]);return db[_0x1417('0x42')][_0x1417('0x48')](_0x366645)[_0x1417('0x24')](handleEntityNotFound(_0x469297,null))[_0x1417('0x24')](respondWithResult(_0x469297,null))[_0x1417('0x45')](handleError(_0x469297,null));};exports['create']=function(_0xa4d75d,_0x47e457){return db[_0x1417('0x42')][_0x1417('0x49')](_0xa4d75d[_0x1417('0x4a')],{})[_0x1417('0x24')](function(_0x58e958){var _0x5920b0=_0xa4d75d[_0x1417('0x4b')][_0x1417('0x26')]({'plain':!![]});if(!_0x5920b0)throw new Error(_0x1417('0x4c'));if(_0x5920b0[_0x1417('0x4d')]==='user'){var _0x5b14db=_0x58e958[_0x1417('0x26')]({'plain':!![]});var _0x2cf610=_0x1417('0x27');return db[_0x1417('0x4e')][_0x1417('0x48')]({'where':{'name':_0x2cf610,'userProfileId':_0x5920b0['userProfileId']},'raw':!![]})[_0x1417('0x24')](function(_0x205a11){if(_0x205a11&&_0x205a11[_0x1417('0x4f')]===0x0){return db[_0x1417('0x28')][_0x1417('0x49')]({'name':_0x5b14db[_0x1417('0x2b')],'resourceId':_0x5b14db['id'],'type':_0x205a11[_0x1417('0x2b')],'sectionId':_0x205a11['id']},{})[_0x1417('0x24')](function(){return _0x58e958;});}else{return _0x58e958;}})[_0x1417('0x45')](function(_0xe9ef42){logger[_0x1417('0x29')](_0x1417('0x50'),_0xe9ef42);throw _0xe9ef42;});}return _0x58e958;})[_0x1417('0x24')](respondWithResult(_0x47e457,0xc9))[_0x1417('0x45')](handleError(_0x47e457,null));};exports['clone']=function(_0x30597a,_0x56f1f6){var _0x55428d={'where':{'id':_0x30597a[_0x1417('0x47')]['id']}},_0xefa7f4={};_0xefa7f4[_0x1417('0x31')]=_['keys'](db[_0x1417('0x42')]['rawAttributes']);_0x55428d[_0x1417('0x36')]=_['intersection'](_0xefa7f4[_0x1417('0x31')],qs[_0x1417('0x37')](_0x30597a[_0x1417('0x32')][_0x1417('0x37')]));_0x55428d[_0x1417('0x36')]=_0x55428d[_0x1417('0x36')][_0x1417('0x38')]?_0x55428d[_0x1417('0x36')]:_0xefa7f4['model'];if(_0x30597a[_0x1417('0x32')][_0x1417('0x43')]){_0x55428d[_0x1417('0x44')]=[{'all':!![]}];}_0x55428d=_[_0x1417('0x40')]({},_0x55428d,_0x30597a['options']);return db[_0x1417('0x42')][_0x1417('0x48')](_0x55428d)[_0x1417('0x24')](handleEntityNotFound(_0x56f1f6,null))[_0x1417('0x24')](function(_0x4813c5){if(_0x4813c5){var _0x581bba=_0x4813c5['get']({'plain':!![]});_0x581bba=qs[_0x1417('0x51')](_0x581bba,['id',_0x1417('0x52'),_0x1417('0x53')]);_0x30597a[_0x1417('0x4a')]=_[_0x1417('0x51')](_0x30597a[_0x1417('0x4a')],['id',_0x1417('0x52'),_0x1417('0x53')]);return db[_0x1417('0x42')][_0x1417('0x49')](_[_0x1417('0x40')](_0x581bba,_0x30597a[_0x1417('0x4a')]),{'include':_0x30597a[_0x1417('0x32')][_0x1417('0x43')]?[{'all':!![]}]:undefined})[_0x1417('0x24')](function(_0x389d52){var _0x10776a=_0x30597a[_0x1417('0x4b')][_0x1417('0x26')]({'plain':!![]});if(!_0x10776a)throw new Error(_0x1417('0x4c'));if(_0x10776a[_0x1417('0x4d')]===_0x1417('0x4b')){var _0xa8e58b=_0x389d52[_0x1417('0x26')]({'plain':!![]});var _0x216a76=_0x1417('0x27');return db[_0x1417('0x4e')]['find']({'where':{'name':_0x216a76,'userProfileId':_0x10776a[_0x1417('0x54')]},'raw':!![]})[_0x1417('0x24')](function(_0xa3c700){if(_0xa3c700&&_0xa3c700[_0x1417('0x4f')]===0x0){return db[_0x1417('0x28')][_0x1417('0x49')]({'name':_0xa8e58b['name'],'resourceId':_0xa8e58b['id'],'type':_0xa3c700[_0x1417('0x2b')],'sectionId':_0xa3c700['id']},{})[_0x1417('0x24')](function(){return _0x389d52;});}else{return _0x389d52;}})[_0x1417('0x45')](function(_0x168a84){logger[_0x1417('0x29')](_0x1417('0x50'),_0x168a84);throw _0x168a84;});}return _0x389d52;});}})[_0x1417('0x24')](respondWithResult(_0x56f1f6,0xc9))[_0x1417('0x45')](handleError(_0x56f1f6,null));};exports['update']=function(_0x5c39da,_0x5a80ba){if(_0x5c39da['body']['id']){delete _0x5c39da[_0x1417('0x4a')]['id'];}return db[_0x1417('0x42')][_0x1417('0x48')]({'where':{'id':_0x5c39da[_0x1417('0x47')]['id']}})[_0x1417('0x24')](handleEntityNotFound(_0x5a80ba,null))[_0x1417('0x24')](saveUpdates(_0x5c39da[_0x1417('0x4a')],null))[_0x1417('0x24')](respondWithResult(_0x5a80ba,null))[_0x1417('0x45')](handleError(_0x5a80ba,null));};exports[_0x1417('0x25')]=function(_0x182db0,_0x14d550){return db[_0x1417('0x42')][_0x1417('0x48')]({'where':{'id':_0x182db0[_0x1417('0x47')]['id']}})[_0x1417('0x24')](handleEntityNotFound(_0x14d550,null))['then'](removeEntity(_0x14d550,null))[_0x1417('0x45')](handleError(_0x14d550,null));};exports[_0x1417('0x55')]=function(_0x44a07a,_0x5c6572,_0x1b2145){var _0x5e310c={'raw':!![],'where':{}};var _0x10cf4e={};var _0x1fd22f={'count':0x0,'rows':[]};return db[_0x1417('0x42')][_0x1417('0x56')]({'where':{'id':_0x44a07a[_0x1417('0x47')]['id']}})['then'](handleEntityNotFound(_0x5c6572,null))[_0x1417('0x24')](function(_0x4eaacf){if(_0x4eaacf){_0x10cf4e['model']=_['keys'](db['JscriptySessionReport'][_0x1417('0x2e')]);_0x10cf4e[_0x1417('0x32')]=_[_0x1417('0x33')](_0x44a07a['query']);_0x10cf4e[_0x1417('0x34')]=_['intersection'](_0x10cf4e[_0x1417('0x31')],_0x10cf4e[_0x1417('0x32')]);_0x5e310c['attributes']=_[_0x1417('0x35')](_0x10cf4e['model'],qs[_0x1417('0x37')](_0x44a07a[_0x1417('0x32')][_0x1417('0x37')]));_0x5e310c[_0x1417('0x36')]=_0x5e310c[_0x1417('0x36')][_0x1417('0x38')]?_0x5e310c[_0x1417('0x36')]:_0x10cf4e[_0x1417('0x31')];if(!_0x44a07a[_0x1417('0x32')][_0x1417('0x39')](_0x1417('0x3a'))){_0x5e310c[_0x1417('0x1c')]=qs['limit'](_0x44a07a[_0x1417('0x32')][_0x1417('0x1c')]);_0x5e310c['offset']=qs[_0x1417('0x1b')](_0x44a07a[_0x1417('0x32')][_0x1417('0x1b')]);}_0x5e310c['order']=qs['sort'](_0x44a07a[_0x1417('0x32')][_0x1417('0x3b')]);_0x5e310c['where']=qs['filters'](_['pick'](_0x44a07a[_0x1417('0x32')],_0x10cf4e['filters']));_0x5e310c[_0x1417('0x3d')]['ProjectId']=_0x4eaacf['id'];if(_0x44a07a['query'][_0x1417('0x57')]){_0x5e310c[_0x1417('0x3d')]=_[_0x1417('0x40')](_0x5e310c[_0x1417('0x3d')],{'$or':_[_0x1417('0x2d')](_0x5e310c['attributes'],function(_0x435705){var _0x2b8844={};_0x2b8844[_0x435705]={'$like':'%'+_0x44a07a['query']['filter']+'%'};return _0x2b8844;})});}_0x5e310c=_[_0x1417('0x40')]({},_0x5e310c,_0x44a07a[_0x1417('0x41')]);return db[_0x1417('0x58')][_0x1417('0x1e')]({'where':_0x5e310c[_0x1417('0x3d')]})[_0x1417('0x24')](function(_0x1e05d4){_0x1fd22f[_0x1417('0x1e')]=_0x1e05d4;if(_0x44a07a[_0x1417('0x32')]['includeAll']){_0x5e310c[_0x1417('0x44')]=[{'all':!![]}];}return db[_0x1417('0x58')][_0x1417('0x59')](_0x5e310c);})['then'](function(_0x5eb3fe){_0x1fd22f[_0x1417('0x5a')]=_0x5eb3fe;return _0x1fd22f;});}})[_0x1417('0x24')](respondWithFilteredResult(_0x5c6572,_0x5e310c))['catch'](handleError(_0x5c6572,null));};exports[_0x1417('0x5b')]=function(_0x13c99f,_0x3bb75b,_0x28e71a){var _0x5f32ea={'raw':!![],'where':{}};var _0x288c84={};var _0xc86d64={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x1417('0x56')]({'where':{'id':_0x13c99f[_0x1417('0x47')]['id']}})['then'](handleEntityNotFound(_0x3bb75b,null))['then'](function(_0x129d5b){if(_0x129d5b){_0x288c84['model']=_['keys'](db['JscriptyAnswerReport'][_0x1417('0x2e')]);_0x288c84[_0x1417('0x32')]=_[_0x1417('0x33')](_0x13c99f[_0x1417('0x32')]);_0x288c84[_0x1417('0x34')]=_[_0x1417('0x35')](_0x288c84[_0x1417('0x31')],_0x288c84[_0x1417('0x32')]);_0x5f32ea[_0x1417('0x36')]=_[_0x1417('0x35')](_0x288c84[_0x1417('0x31')],qs[_0x1417('0x37')](_0x13c99f[_0x1417('0x32')][_0x1417('0x37')]));_0x5f32ea[_0x1417('0x36')]=_0x5f32ea['attributes'][_0x1417('0x38')]?_0x5f32ea[_0x1417('0x36')]:_0x288c84[_0x1417('0x31')];if(!_0x13c99f[_0x1417('0x32')][_0x1417('0x39')](_0x1417('0x3a'))){_0x5f32ea['limit']=qs[_0x1417('0x1c')](_0x13c99f['query'][_0x1417('0x1c')]);_0x5f32ea[_0x1417('0x1b')]=qs[_0x1417('0x1b')](_0x13c99f[_0x1417('0x32')][_0x1417('0x1b')]);}_0x5f32ea[_0x1417('0x5c')]=qs[_0x1417('0x3b')](_0x13c99f[_0x1417('0x32')][_0x1417('0x3b')]);_0x5f32ea['where']=qs['filters'](_['pick'](_0x13c99f[_0x1417('0x32')],_0x288c84['filters']));_0x5f32ea[_0x1417('0x3d')][_0x1417('0x5d')]=_0x129d5b['id'];if(_0x13c99f['query'][_0x1417('0x57')]){_0x5f32ea[_0x1417('0x3d')]=_[_0x1417('0x40')](_0x5f32ea[_0x1417('0x3d')],{'$or':_[_0x1417('0x2d')](_0x5f32ea[_0x1417('0x36')],function(_0x45d35d){var _0x31b9ba={};_0x31b9ba[_0x45d35d]={'$like':'%'+_0x13c99f[_0x1417('0x32')]['filter']+'%'};return _0x31b9ba;})});}_0x5f32ea=_[_0x1417('0x40')]({},_0x5f32ea,_0x13c99f[_0x1417('0x41')]);return db[_0x1417('0x5e')][_0x1417('0x1e')]({'where':_0x5f32ea[_0x1417('0x3d')]})[_0x1417('0x24')](function(_0x3f6d42){_0xc86d64[_0x1417('0x1e')]=_0x3f6d42;if(_0x13c99f[_0x1417('0x32')][_0x1417('0x43')]){_0x5f32ea[_0x1417('0x44')]=[{'all':!![]}];}return db[_0x1417('0x5e')][_0x1417('0x59')](_0x5f32ea);})[_0x1417('0x24')](function(_0x401f85){_0xc86d64[_0x1417('0x5a')]=_0x401f85;return _0xc86d64;});}})[_0x1417('0x24')](respondWithFilteredResult(_0x3bb75b,_0x5f32ea))['catch'](handleError(_0x3bb75b,null));};function char(_0x2b5506){return _0x1417('0x5f')===typeof _0x2b5506?String[_0x1417('0x60')][_0x1417('0x20')](null,arguments):_0x2b5506;}function needsEncapsulation(_0x1379dd){return!!_0x1379dd&&(_0x1379dd[_0x1417('0x61')]()[_0x1417('0x62')](char(0xd))>=0x0||_0x1379dd[_0x1417('0x61')]()[_0x1417('0x62')](char(0xa))>=0x0||_0x1379dd['toString']()[_0x1417('0x62')](char(0x2c))>=0x0||_0x1379dd[_0x1417('0x61')]()[_0x1417('0x62')](char(0x22))>=0x0);}function encapsulate(_0x12b422){var _0x218f29=char(0x22),_0x152ef6='\x5c'+char(0x22),_0x4e550c=_0x12b422[_0x1417('0x61')]()[_0x1417('0x63')](new RegExp(_0x218f29,'g'),_0x152ef6);return _0x218f29+_0x4e550c+_0x218f29;}exports[_0x1417('0x64')]=function(_0x4d8063,_0x844174,_0x16ead9){var _0x4a7dcd,_0x45a077;var _0x12ce5b={'where':{'ProjectId':_0x4d8063[_0x1417('0x47')]['id']}};if(_0x4d8063['query']['startTime']){_0x12ce5b[_0x1417('0x3d')][_0x1417('0x65')]=JSON[_0x1417('0x66')](_0x4d8063[_0x1417('0x32')][_0x1417('0x67')]);}return db[_0x1417('0x58')][_0x1417('0x59')](_0x12ce5b)[_0x1417('0x24')](handleEntityNotFound(_0x844174,null))[_0x1417('0x24')](function(_0x559c92){if(_0x559c92){_0x4a7dcd=_0x559c92;return db[_0x1417('0x68')][_0x1417('0x59')]({'where':{'SessionId':{'$in':_[_0x1417('0x2d')](_0x4a7dcd,'id')},'ProjectId':_0x4d8063[_0x1417('0x47')]['id']},'order':_0x1417('0x69')});}})[_0x1417('0x24')](handleEntityNotFound(_0x844174,null))[_0x1417('0x24')](function(_0x5b31c5){if(_0x5b31c5){_0x45a077=_0x5b31c5;var _0x1ae8d8={};for(var _0xd68cb9=0x0,_0xc63848=_0x45a077['length'];_0xd68cb9<_0xc63848;_0xd68cb9++){if(!_0x1ae8d8[_0x1417('0x39')](_0x45a077[_0xd68cb9][_0x1417('0x6a')])){_0x1ae8d8[_0x45a077[_0xd68cb9][_0x1417('0x6a')]]=needsEncapsulation(_0x45a077[_0xd68cb9][_0x1417('0x6b')])?encapsulate(_0x45a077[_0xd68cb9][_0x1417('0x6b')]):_0x45a077[_0xd68cb9]['question'];}}var _0x4c2894=[],_0xafafd8={};for(var _0x58f524=0x0,_0xe7fa21=_0x4a7dcd[_0x1417('0x38')];_0x58f524<_0xe7fa21;_0x58f524++){_0xafafd8={'ProjectId':_0x4d8063[_0x1417('0x47')]['id'],'SessionId':_0x4a7dcd[_0x58f524]['id'],'StartTime':moment(_0x4a7dcd[_0x58f524][_0x1417('0x65')])[_0x1417('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x48bb63=0x0,_0x4ef43b=_0x45a077['length'];_0x48bb63<_0x4ef43b;_0x48bb63++){if(_0x45a077[_0x48bb63][_0x1417('0x6d')]==_0x4a7dcd[_0x58f524]['id']&&_0x1ae8d8[_0x1417('0x39')](_0x45a077[_0x48bb63][_0x1417('0x6a')])){_0xafafd8[_0x1ae8d8[_0x45a077[_0x48bb63][_0x1417('0x6a')]]]=_0x45a077[_0x48bb63][_0x1417('0x6e')];}}for(var _0x2ab1c9 in _0x1ae8d8){if(!_0xafafd8[_0x1417('0x39')](_0x1ae8d8[_0x2ab1c9])){_0xafafd8[_0x1ae8d8[_0x2ab1c9]]=null;}}_0x4c2894[_0x1417('0x6f')](_0xafafd8);}return _0x4c2894;}})[_0x1417('0x24')](function(_0x122128){if(!_['isEmpty'](_0x122128)){var _0x1aed6b=toCsv(_0x122128);var _0x177404=Date[_0x1417('0x70')]();fs['writeFileSync'](util[_0x1417('0x6c')](_0x1417('0x71'),_0x4d8063[_0x1417('0x47')]['id'],_0x177404),_0x1aed6b);_0x844174[_0x1417('0x72')]('Content-disposition','attachment;\x20filename='+util['format']('Jscripty_Project_%d_Summary_%s.csv',_0x4d8063[_0x1417('0x47')]['id'],_0x177404));_0x844174[_0x1417('0x72')](_0x1417('0x73'),_0x1417('0x74'));return _0x844174[_0x1417('0x75')](util[_0x1417('0x6c')](_0x1417('0x71'),_0x4d8063[_0x1417('0x47')]['id'],_0x177404));}else{return _0x844174[_0x1417('0x17')](0xcc);}})[_0x1417('0x45')](handleError(_0x844174,null));};
\ No newline at end of file
+var _0xbd8e=['Content-Range','json','apply','save','update','then','destroy','UserProfileResource','name','index','map','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','JscriptyProject','includeAll','include','findAll','show','rawAttributes','length','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Projects','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','createdAt','updatedAt','omit','autoAssociation','findOne','ProjectId','JscriptySessionReport','rows','getAnswers','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','replace','startTime','JscriptyQuestionReport','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set'];(function(_0x4bbf9e,_0x1bd993){var _0x3bf450=function(_0x4f765b){while(--_0x4f765b){_0x4bbf9e['push'](_0x4bbf9e['shift']());}};_0x3bf450(++_0x1bd993);}(_0xbd8e,0x1b5));var _0xebd8=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbd8e[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xebd8('0x0'));var rimraf=require(_0xebd8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xebd8('0x2'));var moment=require('moment');var BPromise=require(_0xebd8('0x3'));var Mustache=require(_0xebd8('0x4'));var util=require(_0xebd8('0x5'));var path=require(_0xebd8('0x6'));var sox=require(_0xebd8('0x7'));var csv=require('to-csv');var ejs=require(_0xebd8('0x8'));var fs=require('fs');var fs_extra=require(_0xebd8('0x9'));var _=require(_0xebd8('0xa'));var squel=require(_0xebd8('0xb'));var crypto=require(_0xebd8('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xebd8('0xd'));var toCsv=require(_0xebd8('0xe'));var querystring=require(_0xebd8('0xf'));var Papa=require(_0xebd8('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xebd8('0x11'));var hardwareService=require(_0xebd8('0x12'));var logger=require(_0xebd8('0x13'))(_0xebd8('0x14'));var utils=require(_0xebd8('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xebd8('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x247d34,_0x1d13c8){_0x1d13c8=_0x1d13c8||0xcc;return function(_0x4c3293){if(_0x4c3293){return _0x247d34[_0xebd8('0x17')](_0x1d13c8);}return _0x247d34[_0xebd8('0x18')](_0x1d13c8)[_0xebd8('0x19')]();};}function respondWithResult(_0x5cc357,_0x12b5cd){_0x12b5cd=_0x12b5cd||0xc8;return function(_0x5ca45c){if(_0x5ca45c){return _0x5cc357[_0xebd8('0x18')](_0x12b5cd)['json'](_0x5ca45c);}};}function respondWithFilteredResult(_0x598f71,_0x3e50e0){return function(_0x10d4eb){if(_0x10d4eb){var _0x2162ad=typeof _0x3e50e0[_0xebd8('0x1a')]===_0xebd8('0x1b')&&typeof _0x3e50e0[_0xebd8('0x1c')]===_0xebd8('0x1b');var _0x33ceac=_0x10d4eb[_0xebd8('0x1d')];var _0x3e0293=_0x2162ad?0x0:_0x3e50e0[_0xebd8('0x1a')];var _0x46a956=_0x2162ad?_0x10d4eb[_0xebd8('0x1d')]:_0x3e50e0[_0xebd8('0x1a')]+_0x3e50e0['limit'];var _0x158940;if(_0x46a956>=_0x33ceac){_0x46a956=_0x33ceac;_0x158940=0xc8;}else{_0x158940=0xce;}_0x598f71[_0xebd8('0x18')](_0x158940);return _0x598f71[_0xebd8('0x1e')](_0xebd8('0x1f'),_0x3e0293+'-'+_0x46a956+'/'+_0x33ceac)[_0xebd8('0x20')](_0x10d4eb);}return null;};}function patchUpdates(_0x24be02){return function(_0x1c8e6a){try{jsonpatch[_0xebd8('0x21')](_0x1c8e6a,_0x24be02,!![]);}catch(_0x56f1f6){return BPromise['reject'](_0x56f1f6);}return _0x1c8e6a[_0xebd8('0x22')]();};}function saveUpdates(_0x9b52cf,_0x26aff8){return function(_0x2a27a6){if(_0x2a27a6){return _0x2a27a6[_0xebd8('0x23')](_0x9b52cf)[_0xebd8('0x24')](function(_0x12c460){return _0x12c460;});}return null;};}function removeEntity(_0x44493c,_0x43903b){return function(_0x228411){if(_0x228411){return _0x228411[_0xebd8('0x25')]()[_0xebd8('0x24')](function(){var _0xa64ff5=_0x228411['get']({'plain':!![]});var _0x3e1654='Projects';return db[_0xebd8('0x26')][_0xebd8('0x25')]({'where':{'type':_0x3e1654,'resourceId':_0xa64ff5['id']}})[_0xebd8('0x24')](function(){return _0x228411;});})[_0xebd8('0x24')](function(){_0x44493c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x842923,_0xe177c3){return function(_0x1fd2b3){if(!_0x1fd2b3){_0x842923[_0xebd8('0x17')](0x194);}return _0x1fd2b3;};}function handleError(_0x29bb48,_0xcd698e){_0xcd698e=_0xcd698e||0x1f4;return function(_0x427709){logger['error'](_0x427709['stack']);if(_0x427709[_0xebd8('0x27')]){delete _0x427709['name'];}_0x29bb48[_0xebd8('0x18')](_0xcd698e)['send'](_0x427709);};}exports[_0xebd8('0x28')]=function(_0x2830fe,_0x51e28e){var _0x197a05={},_0x51200a={},_0x1dc147={'count':0x0,'rows':[]};var _0x30d364=_[_0xebd8('0x29')](db['JscriptyProject']['rawAttributes'],function(_0x136bde){return{'name':_0x136bde[_0xebd8('0x2a')],'type':_0x136bde[_0xebd8('0x2b')]['key']};});_0x51200a[_0xebd8('0x2c')]=_[_0xebd8('0x29')](_0x30d364,_0xebd8('0x27'));_0x51200a[_0xebd8('0x2d')]=_[_0xebd8('0x2e')](_0x2830fe[_0xebd8('0x2d')]);_0x51200a[_0xebd8('0x2f')]=_[_0xebd8('0x30')](_0x51200a[_0xebd8('0x2c')],_0x51200a[_0xebd8('0x2d')]);_0x197a05[_0xebd8('0x31')]=_[_0xebd8('0x30')](_0x51200a[_0xebd8('0x2c')],qs[_0xebd8('0x32')](_0x2830fe[_0xebd8('0x2d')][_0xebd8('0x32')]));_0x197a05[_0xebd8('0x31')]=_0x197a05[_0xebd8('0x31')]['length']?_0x197a05[_0xebd8('0x31')]:_0x51200a[_0xebd8('0x2c')];if(!_0x2830fe['query'][_0xebd8('0x33')](_0xebd8('0x34'))){_0x197a05[_0xebd8('0x1c')]=qs[_0xebd8('0x1c')](_0x2830fe[_0xebd8('0x2d')]['limit']);_0x197a05[_0xebd8('0x1a')]=qs[_0xebd8('0x1a')](_0x2830fe[_0xebd8('0x2d')][_0xebd8('0x1a')]);}_0x197a05[_0xebd8('0x35')]=qs[_0xebd8('0x36')](_0x2830fe[_0xebd8('0x2d')][_0xebd8('0x36')]);_0x197a05['where']=qs[_0xebd8('0x2f')](_[_0xebd8('0x37')](_0x2830fe['query'],_0x51200a[_0xebd8('0x2f')]),_0x30d364);if(_0x2830fe['query'][_0xebd8('0x38')]){_0x197a05[_0xebd8('0x39')]=_[_0xebd8('0x3a')](_0x197a05[_0xebd8('0x39')],{'$or':_['map'](_0x30d364,function(_0x46f826){if(_0x46f826[_0xebd8('0x2b')]!==_0xebd8('0x3b')){var _0x57718b={};_0x57718b[_0x46f826[_0xebd8('0x27')]]={'$like':'%'+_0x2830fe[_0xebd8('0x2d')][_0xebd8('0x38')]+'%'};return _0x57718b;}})});}_0x197a05=_[_0xebd8('0x3a')]({},_0x197a05,_0x2830fe[_0xebd8('0x3c')]);var _0x38091a={'where':_0x197a05[_0xebd8('0x39')]};return db[_0xebd8('0x3d')][_0xebd8('0x1d')](_0x38091a)[_0xebd8('0x24')](function(_0x36d021){_0x1dc147[_0xebd8('0x1d')]=_0x36d021;if(_0x2830fe['query'][_0xebd8('0x3e')]){_0x197a05[_0xebd8('0x3f')]=[{'all':!![]}];}return db['JscriptyProject'][_0xebd8('0x40')](_0x197a05);})[_0xebd8('0x24')](function(_0x354283){_0x1dc147['rows']=_0x354283;return _0x1dc147;})['then'](respondWithFilteredResult(_0x51e28e,_0x197a05))['catch'](handleError(_0x51e28e,null));};exports[_0xebd8('0x41')]=function(_0x2d0e9b,_0x3b205a){var _0x2c6f08={'raw':![],'where':{'id':_0x2d0e9b['params']['id']}},_0x53dfe2={};_0x53dfe2[_0xebd8('0x2c')]=_['keys'](db['JscriptyProject'][_0xebd8('0x42')]);_0x53dfe2[_0xebd8('0x2d')]=_[_0xebd8('0x2e')](_0x2d0e9b['query']);_0x53dfe2[_0xebd8('0x2f')]=_[_0xebd8('0x30')](_0x53dfe2[_0xebd8('0x2c')],_0x53dfe2[_0xebd8('0x2d')]);_0x2c6f08[_0xebd8('0x31')]=_['intersection'](_0x53dfe2['model'],qs['fields'](_0x2d0e9b[_0xebd8('0x2d')][_0xebd8('0x32')]));_0x2c6f08['attributes']=_0x2c6f08[_0xebd8('0x31')][_0xebd8('0x43')]?_0x2c6f08[_0xebd8('0x31')]:_0x53dfe2[_0xebd8('0x2c')];if(_0x2d0e9b['query'][_0xebd8('0x3e')]){_0x2c6f08['include']=[{'all':!![]}];}_0x2c6f08=_[_0xebd8('0x3a')]({},_0x2c6f08,_0x2d0e9b[_0xebd8('0x3c')]);return db[_0xebd8('0x3d')][_0xebd8('0x44')](_0x2c6f08)[_0xebd8('0x24')](handleEntityNotFound(_0x3b205a,null))[_0xebd8('0x24')](respondWithResult(_0x3b205a,null))[_0xebd8('0x45')](handleError(_0x3b205a,null));};exports['create']=function(_0x2d57e7,_0x479140){return db[_0xebd8('0x3d')][_0xebd8('0x46')](_0x2d57e7[_0xebd8('0x47')],{})['then'](function(_0x38a6ef){var _0x2adca7=_0x2d57e7[_0xebd8('0x48')][_0xebd8('0x49')]({'plain':!![]});if(!_0x2adca7)throw new Error(_0xebd8('0x4a'));if(_0x2adca7['role']===_0xebd8('0x48')){var _0x16d43a=_0x38a6ef[_0xebd8('0x49')]({'plain':!![]});var _0xdaeea7=_0xebd8('0x4b');return db[_0xebd8('0x4c')][_0xebd8('0x44')]({'where':{'name':_0xdaeea7,'userProfileId':_0x2adca7[_0xebd8('0x4d')]},'raw':!![]})[_0xebd8('0x24')](function(_0x52b481){if(_0x52b481&&_0x52b481['autoAssociation']===0x0){return db[_0xebd8('0x26')][_0xebd8('0x46')]({'name':_0x16d43a[_0xebd8('0x27')],'resourceId':_0x16d43a['id'],'type':_0x52b481[_0xebd8('0x27')],'sectionId':_0x52b481['id']},{})['then'](function(){return _0x38a6ef;});}else{return _0x38a6ef;}})['catch'](function(_0x17b9b2){logger[_0xebd8('0x4e')](_0xebd8('0x4f'),_0x17b9b2);throw _0x17b9b2;});}return _0x38a6ef;})['then'](respondWithResult(_0x479140,0xc9))['catch'](handleError(_0x479140,null));};exports[_0xebd8('0x50')]=function(_0x28a1ad,_0x485033){var _0x3f491d={'where':{'id':_0x28a1ad[_0xebd8('0x51')]['id']}},_0x4a3d67={};_0x4a3d67[_0xebd8('0x2c')]=_[_0xebd8('0x2e')](db[_0xebd8('0x3d')][_0xebd8('0x42')]);_0x3f491d['attributes']=_[_0xebd8('0x30')](_0x4a3d67[_0xebd8('0x2c')],qs[_0xebd8('0x32')](_0x28a1ad[_0xebd8('0x2d')][_0xebd8('0x32')]));_0x3f491d['attributes']=_0x3f491d[_0xebd8('0x31')]['length']?_0x3f491d[_0xebd8('0x31')]:_0x4a3d67[_0xebd8('0x2c')];if(_0x28a1ad['query'][_0xebd8('0x3e')]){_0x3f491d[_0xebd8('0x3f')]=[{'all':!![]}];}_0x3f491d=_[_0xebd8('0x3a')]({},_0x3f491d,_0x28a1ad['options']);return db[_0xebd8('0x3d')][_0xebd8('0x44')](_0x3f491d)[_0xebd8('0x24')](handleEntityNotFound(_0x485033,null))[_0xebd8('0x24')](function(_0x2fbc4d){if(_0x2fbc4d){var _0x92cb7f=_0x2fbc4d[_0xebd8('0x49')]({'plain':!![]});_0x92cb7f=qs['omit'](_0x92cb7f,['id',_0xebd8('0x52'),_0xebd8('0x53')]);_0x28a1ad['body']=_[_0xebd8('0x54')](_0x28a1ad[_0xebd8('0x47')],['id',_0xebd8('0x52'),_0xebd8('0x53')]);return db[_0xebd8('0x3d')][_0xebd8('0x46')](_[_0xebd8('0x3a')](_0x92cb7f,_0x28a1ad[_0xebd8('0x47')]),{'include':_0x28a1ad[_0xebd8('0x2d')][_0xebd8('0x3e')]?[{'all':!![]}]:undefined})['then'](function(_0x35c706){var _0x13c4e3=_0x28a1ad[_0xebd8('0x48')][_0xebd8('0x49')]({'plain':!![]});if(!_0x13c4e3)throw new Error(_0xebd8('0x4a'));if(_0x13c4e3['role']===_0xebd8('0x48')){var _0x4ac20c=_0x35c706[_0xebd8('0x49')]({'plain':!![]});var _0x3d4759='Projects';return db[_0xebd8('0x4c')][_0xebd8('0x44')]({'where':{'name':_0x3d4759,'userProfileId':_0x13c4e3[_0xebd8('0x4d')]},'raw':!![]})[_0xebd8('0x24')](function(_0x35ced3){if(_0x35ced3&&_0x35ced3[_0xebd8('0x55')]===0x0){return db[_0xebd8('0x26')][_0xebd8('0x46')]({'name':_0x4ac20c[_0xebd8('0x27')],'resourceId':_0x4ac20c['id'],'type':_0x35ced3[_0xebd8('0x27')],'sectionId':_0x35ced3['id']},{})[_0xebd8('0x24')](function(){return _0x35c706;});}else{return _0x35c706;}})[_0xebd8('0x45')](function(_0x17ec1c){logger['error'](_0xebd8('0x4f'),_0x17ec1c);throw _0x17ec1c;});}return _0x35c706;});}})['then'](respondWithResult(_0x485033,0xc9))[_0xebd8('0x45')](handleError(_0x485033,null));};exports[_0xebd8('0x23')]=function(_0x4a1a38,_0x50b64f){if(_0x4a1a38[_0xebd8('0x47')]['id']){delete _0x4a1a38['body']['id'];}return db['JscriptyProject'][_0xebd8('0x44')]({'where':{'id':_0x4a1a38[_0xebd8('0x51')]['id']}})[_0xebd8('0x24')](handleEntityNotFound(_0x50b64f,null))[_0xebd8('0x24')](saveUpdates(_0x4a1a38[_0xebd8('0x47')],null))[_0xebd8('0x24')](respondWithResult(_0x50b64f,null))[_0xebd8('0x45')](handleError(_0x50b64f,null));};exports[_0xebd8('0x25')]=function(_0x3b7ee4,_0x4f20be){return db[_0xebd8('0x3d')][_0xebd8('0x44')]({'where':{'id':_0x3b7ee4['params']['id']}})[_0xebd8('0x24')](handleEntityNotFound(_0x4f20be,null))[_0xebd8('0x24')](removeEntity(_0x4f20be,null))[_0xebd8('0x45')](handleError(_0x4f20be,null));};exports['getSessions']=function(_0x16b3bc,_0x5e2db8,_0x27ba25){var _0x5fb38f={'raw':!![],'where':{}};var _0x5f042a={};var _0x459e90={'count':0x0,'rows':[]};return db[_0xebd8('0x3d')][_0xebd8('0x56')]({'where':{'id':_0x16b3bc['params']['id']}})[_0xebd8('0x24')](handleEntityNotFound(_0x5e2db8,null))[_0xebd8('0x24')](function(_0x9608a4){if(_0x9608a4){_0x5f042a[_0xebd8('0x2c')]=_['keys'](db['JscriptySessionReport'][_0xebd8('0x42')]);_0x5f042a['query']=_[_0xebd8('0x2e')](_0x16b3bc[_0xebd8('0x2d')]);_0x5f042a['filters']=_[_0xebd8('0x30')](_0x5f042a['model'],_0x5f042a['query']);_0x5fb38f[_0xebd8('0x31')]=_['intersection'](_0x5f042a[_0xebd8('0x2c')],qs[_0xebd8('0x32')](_0x16b3bc['query'][_0xebd8('0x32')]));_0x5fb38f[_0xebd8('0x31')]=_0x5fb38f[_0xebd8('0x31')][_0xebd8('0x43')]?_0x5fb38f[_0xebd8('0x31')]:_0x5f042a['model'];if(!_0x16b3bc['query'][_0xebd8('0x33')](_0xebd8('0x34'))){_0x5fb38f[_0xebd8('0x1c')]=qs['limit'](_0x16b3bc['query'][_0xebd8('0x1c')]);_0x5fb38f[_0xebd8('0x1a')]=qs['offset'](_0x16b3bc[_0xebd8('0x2d')][_0xebd8('0x1a')]);}_0x5fb38f[_0xebd8('0x35')]=qs[_0xebd8('0x36')](_0x16b3bc[_0xebd8('0x2d')][_0xebd8('0x36')]);_0x5fb38f[_0xebd8('0x39')]=qs[_0xebd8('0x2f')](_[_0xebd8('0x37')](_0x16b3bc[_0xebd8('0x2d')],_0x5f042a[_0xebd8('0x2f')]));_0x5fb38f[_0xebd8('0x39')][_0xebd8('0x57')]=_0x9608a4['id'];if(_0x16b3bc[_0xebd8('0x2d')][_0xebd8('0x38')]){_0x5fb38f[_0xebd8('0x39')]=_[_0xebd8('0x3a')](_0x5fb38f['where'],{'$or':_['map'](_0x5fb38f[_0xebd8('0x31')],function(_0x17ddd8){var _0x5b58d8={};_0x5b58d8[_0x17ddd8]={'$like':'%'+_0x16b3bc['query'][_0xebd8('0x38')]+'%'};return _0x5b58d8;})});}_0x5fb38f=_[_0xebd8('0x3a')]({},_0x5fb38f,_0x16b3bc[_0xebd8('0x3c')]);return db[_0xebd8('0x58')]['count']({'where':_0x5fb38f[_0xebd8('0x39')]})[_0xebd8('0x24')](function(_0x583b1b){_0x459e90[_0xebd8('0x1d')]=_0x583b1b;if(_0x16b3bc[_0xebd8('0x2d')][_0xebd8('0x3e')]){_0x5fb38f[_0xebd8('0x3f')]=[{'all':!![]}];}return db[_0xebd8('0x58')]['findAll'](_0x5fb38f);})[_0xebd8('0x24')](function(_0x4924c1){_0x459e90[_0xebd8('0x59')]=_0x4924c1;return _0x459e90;});}})[_0xebd8('0x24')](respondWithFilteredResult(_0x5e2db8,_0x5fb38f))[_0xebd8('0x45')](handleError(_0x5e2db8,null));};exports[_0xebd8('0x5a')]=function(_0x3d38c9,_0x48be29,_0x3e1f14){var _0x10df77={'raw':!![],'where':{}};var _0x1cc9cb={};var _0x339d67={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xebd8('0x56')]({'where':{'id':_0x3d38c9['params']['id']}})[_0xebd8('0x24')](handleEntityNotFound(_0x48be29,null))[_0xebd8('0x24')](function(_0x151a01){if(_0x151a01){_0x1cc9cb[_0xebd8('0x2c')]=_[_0xebd8('0x2e')](db[_0xebd8('0x5b')][_0xebd8('0x42')]);_0x1cc9cb['query']=_[_0xebd8('0x2e')](_0x3d38c9['query']);_0x1cc9cb[_0xebd8('0x2f')]=_[_0xebd8('0x30')](_0x1cc9cb[_0xebd8('0x2c')],_0x1cc9cb[_0xebd8('0x2d')]);_0x10df77['attributes']=_[_0xebd8('0x30')](_0x1cc9cb[_0xebd8('0x2c')],qs[_0xebd8('0x32')](_0x3d38c9[_0xebd8('0x2d')][_0xebd8('0x32')]));_0x10df77[_0xebd8('0x31')]=_0x10df77[_0xebd8('0x31')][_0xebd8('0x43')]?_0x10df77[_0xebd8('0x31')]:_0x1cc9cb['model'];if(!_0x3d38c9[_0xebd8('0x2d')]['hasOwnProperty'](_0xebd8('0x34'))){_0x10df77[_0xebd8('0x1c')]=qs[_0xebd8('0x1c')](_0x3d38c9['query'][_0xebd8('0x1c')]);_0x10df77[_0xebd8('0x1a')]=qs['offset'](_0x3d38c9[_0xebd8('0x2d')][_0xebd8('0x1a')]);}_0x10df77['order']=qs['sort'](_0x3d38c9['query'][_0xebd8('0x36')]);_0x10df77['where']=qs[_0xebd8('0x2f')](_['pick'](_0x3d38c9[_0xebd8('0x2d')],_0x1cc9cb[_0xebd8('0x2f')]));_0x10df77[_0xebd8('0x39')]['ProjectId']=_0x151a01['id'];if(_0x3d38c9[_0xebd8('0x2d')]['filter']){_0x10df77[_0xebd8('0x39')]=_[_0xebd8('0x3a')](_0x10df77[_0xebd8('0x39')],{'$or':_[_0xebd8('0x29')](_0x10df77[_0xebd8('0x31')],function(_0x331045){var _0x3f88fd={};_0x3f88fd[_0x331045]={'$like':'%'+_0x3d38c9[_0xebd8('0x2d')][_0xebd8('0x38')]+'%'};return _0x3f88fd;})});}_0x10df77=_[_0xebd8('0x3a')]({},_0x10df77,_0x3d38c9[_0xebd8('0x3c')]);return db[_0xebd8('0x5b')][_0xebd8('0x1d')]({'where':_0x10df77[_0xebd8('0x39')]})[_0xebd8('0x24')](function(_0x6bd1ba){_0x339d67[_0xebd8('0x1d')]=_0x6bd1ba;if(_0x3d38c9[_0xebd8('0x2d')][_0xebd8('0x3e')]){_0x10df77[_0xebd8('0x3f')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xebd8('0x40')](_0x10df77);})[_0xebd8('0x24')](function(_0x3ea149){_0x339d67[_0xebd8('0x59')]=_0x3ea149;return _0x339d67;});}})['then'](respondWithFilteredResult(_0x48be29,_0x10df77))['catch'](handleError(_0x48be29,null));};function char(_0x7a4651){return _0xebd8('0x5c')===typeof _0x7a4651?String[_0xebd8('0x5d')]['apply'](null,arguments):_0x7a4651;}function needsEncapsulation(_0x2b5838){return!!_0x2b5838&&(_0x2b5838['toString']()[_0xebd8('0x5e')](char(0xd))>=0x0||_0x2b5838[_0xebd8('0x5f')]()[_0xebd8('0x5e')](char(0xa))>=0x0||_0x2b5838[_0xebd8('0x5f')]()[_0xebd8('0x5e')](char(0x2c))>=0x0||_0x2b5838[_0xebd8('0x5f')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x51af30){var _0x5da0e7=char(0x22),_0x557e8e='\x5c'+char(0x22),_0x338307=_0x51af30[_0xebd8('0x5f')]()[_0xebd8('0x60')](new RegExp(_0x5da0e7,'g'),_0x557e8e);return _0x5da0e7+_0x338307+_0x5da0e7;}exports['getSummary']=function(_0x9817f0,_0x5c7011,_0x518887){var _0xc27363,_0x3f9eda;var _0xbc809f={'where':{'ProjectId':_0x9817f0[_0xebd8('0x51')]['id']}};if(_0x9817f0[_0xebd8('0x2d')][_0xebd8('0x61')]){_0xbc809f[_0xebd8('0x39')]['starttime']=JSON['parse'](_0x9817f0[_0xebd8('0x2d')]['startTime']);}return db[_0xebd8('0x58')][_0xebd8('0x40')](_0xbc809f)[_0xebd8('0x24')](handleEntityNotFound(_0x5c7011,null))[_0xebd8('0x24')](function(_0x4779c4){if(_0x4779c4){_0xc27363=_0x4779c4;return db[_0xebd8('0x62')][_0xebd8('0x40')]({'where':{'SessionId':{'$in':_['map'](_0xc27363,'id')},'ProjectId':_0x9817f0[_0xebd8('0x51')]['id']},'order':'-createdAt'});}})[_0xebd8('0x24')](handleEntityNotFound(_0x5c7011,null))['then'](function(_0x20c15e){if(_0x20c15e){_0x3f9eda=_0x20c15e;var _0x410e22={};for(var _0x3c4f05=0x0,_0x13d2d1=_0x3f9eda[_0xebd8('0x43')];_0x3c4f05<_0x13d2d1;_0x3c4f05++){if(!_0x410e22[_0xebd8('0x33')](_0x3f9eda[_0x3c4f05]['questionId'])){_0x410e22[_0x3f9eda[_0x3c4f05][_0xebd8('0x63')]]=needsEncapsulation(_0x3f9eda[_0x3c4f05]['question'])?encapsulate(_0x3f9eda[_0x3c4f05][_0xebd8('0x64')]):_0x3f9eda[_0x3c4f05][_0xebd8('0x64')];}}var _0x5335ef=[],_0x5a4166={};for(var _0x2398bd=0x0,_0x16c1f1=_0xc27363['length'];_0x2398bd<_0x16c1f1;_0x2398bd++){_0x5a4166={'ProjectId':_0x9817f0['params']['id'],'SessionId':_0xc27363[_0x2398bd]['id'],'StartTime':moment(_0xc27363[_0x2398bd][_0xebd8('0x65')])[_0xebd8('0x66')](_0xebd8('0x67'))};for(var _0x2cbbaa=0x0,_0x4b0612=_0x3f9eda[_0xebd8('0x43')];_0x2cbbaa<_0x4b0612;_0x2cbbaa++){if(_0x3f9eda[_0x2cbbaa][_0xebd8('0x68')]==_0xc27363[_0x2398bd]['id']&&_0x410e22[_0xebd8('0x33')](_0x3f9eda[_0x2cbbaa]['questionId'])){_0x5a4166[_0x410e22[_0x3f9eda[_0x2cbbaa]['questionId']]]=_0x3f9eda[_0x2cbbaa]['answer'];}}for(var _0x44d6a9 in _0x410e22){if(!_0x5a4166[_0xebd8('0x33')](_0x410e22[_0x44d6a9])){_0x5a4166[_0x410e22[_0x44d6a9]]=null;}}_0x5335ef[_0xebd8('0x69')](_0x5a4166);}return _0x5335ef;}})[_0xebd8('0x24')](function(_0x1e05a0){if(!_[_0xebd8('0x6a')](_0x1e05a0)){var _0xa2eb72=toCsv(_0x1e05a0);var _0x50b6a9=Date[_0xebd8('0x6b')]();fs[_0xebd8('0x6c')](util['format'](_0xebd8('0x6d'),_0x9817f0[_0xebd8('0x51')]['id'],_0x50b6a9),_0xa2eb72);_0x5c7011[_0xebd8('0x6e')](_0xebd8('0x6f'),_0xebd8('0x70')+util[_0xebd8('0x66')](_0xebd8('0x71'),_0x9817f0[_0xebd8('0x51')]['id'],_0x50b6a9));_0x5c7011[_0xebd8('0x6e')](_0xebd8('0x72'),_0xebd8('0x73'));return _0x5c7011[_0xebd8('0x74')](util[_0xebd8('0x66')](_0xebd8('0x6d'),_0x9817f0[_0xebd8('0x51')]['id'],_0x50b6a9));}else{return _0x5c7011['sendStatus'](0xcc);}})[_0xebd8('0x45')](handleError(_0x5c7011,null));};
\ No newline at end of file
index fcecd24..06b56c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b1f=['api','moment','bluebird','path','rimraf','../../config/environment','define','JscriptyProject','jscripty_projects','lodash','util'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4b1f,0x195));var _0xf4b1=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0x4b1f[_0x344a3f];return _0x264712;};'use strict';var _=require(_0xf4b1('0x0'));var util=require(_0xf4b1('0x1'));var logger=require('../../config/logger')(_0xf4b1('0x2'));var moment=require(_0xf4b1('0x3'));var BPromise=require(_0xf4b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf4b1('0x5'));var rimraf=require(_0xf4b1('0x6'));var config=require(_0xf4b1('0x7'));var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0x1ab96b,_0x4b676){return _0x1ab96b[_0xf4b1('0x8')](_0xf4b1('0x9'),attributes,{'tableName':_0xf4b1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd846=['../../config/environment','exports','define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','bluebird','rimraf'];(function(_0x1472ff,_0x5aef21){var _0x2dde9f=function(_0xc53176){while(--_0xc53176){_0x1472ff['push'](_0x1472ff['shift']());}};_0x2dde9f(++_0x5aef21);}(_0xd846,0x195));var _0x6d84=function(_0x126d55,_0x1c8636){_0x126d55=_0x126d55-0x0;var _0x1dfc85=_0xd846[_0x126d55];return _0x1dfc85;};'use strict';var _=require(_0x6d84('0x0'));var util=require(_0x6d84('0x1'));var logger=require(_0x6d84('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6d84('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6d84('0x4'));var config=require(_0x6d84('0x5'));var attributes=require('./jscriptyProject.attributes');module[_0x6d84('0x6')]=function(_0x4a909d,_0x4a7c2d){return _0x4a909d[_0x6d84('0x7')](_0x6d84('0x8'),attributes,{'tableName':_0x6d84('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dfb92de..d3de3d1 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x125703,_0x46989c){_0x125703=_0x125703-0x0;var _0x1a954b=_0xbdb7[_0x125703];return _0x1a954b;};'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 _0xa9e0=['http','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x9f994d,_0x19e27e){var _0x452b87=function(_0x551c7e){while(--_0x551c7e){_0x9f994d['push'](_0x9f994d['shift']());}};_0x452b87(++_0x19e27e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 d8c583a..921d1cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d5a=['/:id','show','post','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x5c9ed5,_0x565641){var _0x4c0bb6=function(_0x2abf03){while(--_0x2abf03){_0x5c9ed5['push'](_0x5c9ed5['shift']());}};_0x4c0bb6(++_0x565641);}(_0x1d5a,0x194));var _0xa1d5=function(_0x1b1f24,_0x5624c5){_0x1b1f24=_0x1b1f24-0x0;var _0x186f93=_0x1d5a[_0x1b1f24];return _0x186f93;};'use strict';var multer=require(_0xa1d5('0x0'));var util=require(_0xa1d5('0x1'));var path=require(_0xa1d5('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa1d5('0x3')]();var fs_extra=require(_0xa1d5('0x4'));var auth=require(_0xa1d5('0x5'));var interaction=require(_0xa1d5('0x6'));var config=require(_0xa1d5('0x7'));var controller=require(_0xa1d5('0x8'));router['get']('/',auth[_0xa1d5('0x9')](),controller[_0xa1d5('0xa')]);router[_0xa1d5('0xb')](_0xa1d5('0xc'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0xd')]);router['get'](_0xa1d5('0xe'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0xf')]);router[_0xa1d5('0x10')]('/',auth[_0xa1d5('0x9')](),controller['create']);router[_0xa1d5('0x11')](_0xa1d5('0xe'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0x12')]);router[_0xa1d5('0x13')](_0xa1d5('0xe'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0x14')]);module[_0xa1d5('0x15')]=router;
\ No newline at end of file
+var _0xd31a=['express','fs-extra','../../components/interaction/service','./jscriptyQuestionReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','multer','util','path'];(function(_0x8fb1c0,_0x2e47a9){var _0x5742eb=function(_0x3167b1){while(--_0x3167b1){_0x8fb1c0['push'](_0x8fb1c0['shift']());}};_0x5742eb(++_0x2e47a9);}(_0xd31a,0x177));var _0xad31=function(_0xa90f56,_0x8343e2){_0xa90f56=_0xa90f56-0x0;var _0x1a1d02=_0xd31a[_0xa90f56];return _0x1a1d02;};'use strict';var multer=require(_0xad31('0x0'));var util=require(_0xad31('0x1'));var path=require(_0xad31('0x2'));var timeout=require('connect-timeout');var express=require(_0xad31('0x3'));var router=express['Router']();var fs_extra=require(_0xad31('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xad31('0x5'));var config=require('../../config/environment');var controller=require(_0xad31('0x6'));router[_0xad31('0x7')]('/',auth['isAuthenticated'](),controller[_0xad31('0x8')]);router[_0xad31('0x7')](_0xad31('0x9'),auth[_0xad31('0xa')](),controller[_0xad31('0xb')]);router['get'](_0xad31('0xc'),auth[_0xad31('0xa')](),controller[_0xad31('0xd')]);router[_0xad31('0xe')]('/',auth[_0xad31('0xa')](),controller[_0xad31('0xf')]);router[_0xad31('0x10')]('/:id',auth[_0xad31('0xa')](),controller[_0xad31('0x11')]);router['delete'](_0xad31('0xc'),auth[_0xad31('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 002dacf..390f708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x7a54,0x106));var _0x47a5=function(_0x3dfea7,_0x2dc69b){_0x3dfea7=_0x3dfea7-0x0;var _0x38ba07=_0x7a54[_0x3dfea7];return _0x38ba07;};'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(_0x31ce08,_0x3d4407){_0x31ce08=_0x31ce08-0x0;var _0x529f79=_0x7a54[_0x31ce08];return _0x529f79;};'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 1383118..c5b9aea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c54=['name','send','JscriptyQuestionReport','rawAttributes','type','key','map','keys','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','catch','show','params','includeAll','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','end','stack'];(function(_0x59a482,_0x283736){var _0x535530=function(_0x9d9a47){while(--_0x9d9a47){_0x59a482['push'](_0x59a482['shift']());}};_0x535530(++_0x283736);}(_0x6c54,0x6c));var _0x46c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6c54[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x46c5('0x0'));var rimraf=require(_0x46c5('0x1'));var zipdir=require(_0x46c5('0x2'));var jsonpatch=require(_0x46c5('0x3'));var rp=require(_0x46c5('0x4'));var moment=require('moment');var BPromise=require(_0x46c5('0x5'));var Mustache=require(_0x46c5('0x6'));var util=require(_0x46c5('0x7'));var path=require('path');var sox=require(_0x46c5('0x8'));var csv=require('to-csv');var ejs=require(_0x46c5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46c5('0xa'));var squel=require(_0x46c5('0xb'));var crypto=require('crypto');var jsforce=require(_0x46c5('0xc'));var deskjs=require(_0x46c5('0xd'));var toCsv=require(_0x46c5('0xe'));var querystring=require(_0x46c5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x46c5('0x10'));var qs=require(_0x46c5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x46c5('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x46c5('0x13'));var db=require(_0x46c5('0x14'))['db'];function respondWithStatusCode(_0x1d36ae,_0xc03ae2){_0xc03ae2=_0xc03ae2||0xcc;return function(_0x449dcc){if(_0x449dcc){return _0x1d36ae[_0x46c5('0x15')](_0xc03ae2);}return _0x1d36ae[_0x46c5('0x16')](_0xc03ae2)['end']();};}function respondWithResult(_0x8aa6fc,_0x42197d){_0x42197d=_0x42197d||0xc8;return function(_0x1718f5){if(_0x1718f5){return _0x8aa6fc[_0x46c5('0x16')](_0x42197d)[_0x46c5('0x17')](_0x1718f5);}};}function respondWithFilteredResult(_0x512218,_0xf73f75){return function(_0x519ad8){if(_0x519ad8){var _0x25faaa=typeof _0xf73f75['offset']===_0x46c5('0x18')&&typeof _0xf73f75[_0x46c5('0x19')]===_0x46c5('0x18');var _0x50ac47=_0x519ad8[_0x46c5('0x1a')];var _0x5cc735=_0x25faaa?0x0:_0xf73f75['offset'];var _0x507f90=_0x25faaa?_0x519ad8[_0x46c5('0x1a')]:_0xf73f75[_0x46c5('0x1b')]+_0xf73f75[_0x46c5('0x19')];var _0x28fc9a;if(_0x507f90>=_0x50ac47){_0x507f90=_0x50ac47;_0x28fc9a=0xc8;}else{_0x28fc9a=0xce;}_0x512218[_0x46c5('0x16')](_0x28fc9a);return _0x512218[_0x46c5('0x1c')](_0x46c5('0x1d'),_0x5cc735+'-'+_0x507f90+'/'+_0x50ac47)['json'](_0x519ad8);}return null;};}function patchUpdates(_0x47e5bd){return function(_0x4a34d9){try{jsonpatch['apply'](_0x4a34d9,_0x47e5bd,!![]);}catch(_0x11d2d6){return BPromise[_0x46c5('0x1e')](_0x11d2d6);}return _0x4a34d9[_0x46c5('0x1f')]();};}function saveUpdates(_0x472d35,_0xd6bdfc){return function(_0x5c578e){if(_0x5c578e){return _0x5c578e[_0x46c5('0x20')](_0x472d35)[_0x46c5('0x21')](function(_0x12daaa){return _0x12daaa;});}return null;};}function removeEntity(_0x16966d,_0x395a39){return function(_0x2efb24){if(_0x2efb24){return _0x2efb24['destroy']()['then'](function(){_0x16966d[_0x46c5('0x16')](0xcc)[_0x46c5('0x22')]();});}};}function handleEntityNotFound(_0x399372,_0x1e65c1){return function(_0x5bb763){if(!_0x5bb763){_0x399372[_0x46c5('0x15')](0x194);}return _0x5bb763;};}function handleError(_0x3d7a9b,_0x407b7b){_0x407b7b=_0x407b7b||0x1f4;return function(_0x588bf2){logger['error'](_0x588bf2[_0x46c5('0x23')]);if(_0x588bf2['name']){delete _0x588bf2[_0x46c5('0x24')];}_0x3d7a9b[_0x46c5('0x16')](_0x407b7b)[_0x46c5('0x25')](_0x588bf2);};}exports['index']=function(_0x2812a7,_0x1d65da){var _0x4e58e2={},_0x23d418={},_0x27e1c3={'count':0x0,'rows':[]};var _0x2e9264=_['map'](db[_0x46c5('0x26')][_0x46c5('0x27')],function(_0x243c9f){return{'name':_0x243c9f['fieldName'],'type':_0x243c9f[_0x46c5('0x28')][_0x46c5('0x29')]};});_0x23d418['model']=_[_0x46c5('0x2a')](_0x2e9264,_0x46c5('0x24'));_0x23d418['query']=_[_0x46c5('0x2b')](_0x2812a7[_0x46c5('0x2c')]);_0x23d418[_0x46c5('0x2d')]=_['intersection'](_0x23d418['model'],_0x23d418[_0x46c5('0x2c')]);_0x4e58e2[_0x46c5('0x2e')]=_[_0x46c5('0x2f')](_0x23d418[_0x46c5('0x30')],qs[_0x46c5('0x31')](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x31')]));_0x4e58e2[_0x46c5('0x2e')]=_0x4e58e2[_0x46c5('0x2e')][_0x46c5('0x32')]?_0x4e58e2[_0x46c5('0x2e')]:_0x23d418[_0x46c5('0x30')];if(!_0x2812a7['query'][_0x46c5('0x33')](_0x46c5('0x34'))){_0x4e58e2['limit']=qs['limit'](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x19')]);_0x4e58e2[_0x46c5('0x1b')]=qs[_0x46c5('0x1b')](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x1b')]);}_0x4e58e2[_0x46c5('0x35')]=qs[_0x46c5('0x36')](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x36')]);_0x4e58e2[_0x46c5('0x37')]=qs[_0x46c5('0x2d')](_[_0x46c5('0x38')](_0x2812a7[_0x46c5('0x2c')],_0x23d418['filters']),_0x2e9264);if(_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x39')]){_0x4e58e2[_0x46c5('0x37')]=_['merge'](_0x4e58e2[_0x46c5('0x37')],{'$or':_[_0x46c5('0x2a')](_0x2e9264,function(_0x1443a2){if(_0x1443a2['type']!==_0x46c5('0x3a')){var _0x54e121={};_0x54e121[_0x1443a2['name']]={'$like':'%'+_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x39')]+'%'};return _0x54e121;}})});}_0x4e58e2=_[_0x46c5('0x3b')]({},_0x4e58e2,_0x2812a7[_0x46c5('0x3c')]);var _0x183baa={'where':_0x4e58e2[_0x46c5('0x37')]};return db[_0x46c5('0x26')][_0x46c5('0x1a')](_0x183baa)['then'](function(_0x1814e2){_0x27e1c3['count']=_0x1814e2;if(_0x2812a7[_0x46c5('0x2c')]['includeAll']){_0x4e58e2[_0x46c5('0x3d')]=[{'all':!![]}];}return db[_0x46c5('0x26')][_0x46c5('0x3e')](_0x4e58e2);})[_0x46c5('0x21')](function(_0x535db0){_0x27e1c3['rows']=_0x535db0;return _0x27e1c3;})['then'](respondWithFilteredResult(_0x1d65da,_0x4e58e2))[_0x46c5('0x3f')](handleError(_0x1d65da,null));};exports[_0x46c5('0x40')]=function(_0x5e9679,_0x4f3128){var _0x2224be={'raw':!![],'where':{'id':_0x5e9679[_0x46c5('0x41')]['id']}},_0x3bdd17={};_0x3bdd17[_0x46c5('0x30')]=_[_0x46c5('0x2b')](db[_0x46c5('0x26')]['rawAttributes']);_0x3bdd17['query']=_[_0x46c5('0x2b')](_0x5e9679[_0x46c5('0x2c')]);_0x3bdd17[_0x46c5('0x2d')]=_[_0x46c5('0x2f')](_0x3bdd17['model'],_0x3bdd17['query']);_0x2224be[_0x46c5('0x2e')]=_[_0x46c5('0x2f')](_0x3bdd17[_0x46c5('0x30')],qs[_0x46c5('0x31')](_0x5e9679[_0x46c5('0x2c')][_0x46c5('0x31')]));_0x2224be[_0x46c5('0x2e')]=_0x2224be[_0x46c5('0x2e')][_0x46c5('0x32')]?_0x2224be[_0x46c5('0x2e')]:_0x3bdd17['model'];if(_0x5e9679[_0x46c5('0x2c')][_0x46c5('0x42')]){_0x2224be['include']=[{'all':!![]}];}_0x2224be=_['merge']({},_0x2224be,_0x5e9679['options']);return db['JscriptyQuestionReport'][_0x46c5('0x43')](_0x2224be)[_0x46c5('0x21')](handleEntityNotFound(_0x4f3128,null))[_0x46c5('0x21')](respondWithResult(_0x4f3128,null))[_0x46c5('0x3f')](handleError(_0x4f3128,null));};exports[_0x46c5('0x44')]=function(_0x3b413b,_0x277de9){return db[_0x46c5('0x26')][_0x46c5('0x44')](_0x3b413b['body'],{})[_0x46c5('0x21')](respondWithResult(_0x277de9,0xc9))['catch'](handleError(_0x277de9,null));};exports['update']=function(_0x5d4294,_0x592bb1){if(_0x5d4294[_0x46c5('0x45')]['id']){delete _0x5d4294[_0x46c5('0x45')]['id'];}return db[_0x46c5('0x26')][_0x46c5('0x43')]({'where':{'id':_0x5d4294[_0x46c5('0x41')]['id']}})[_0x46c5('0x21')](handleEntityNotFound(_0x592bb1,null))[_0x46c5('0x21')](saveUpdates(_0x5d4294[_0x46c5('0x45')],null))[_0x46c5('0x21')](respondWithResult(_0x592bb1,null))[_0x46c5('0x3f')](handleError(_0x592bb1,null));};exports[_0x46c5('0x46')]=function(_0x519deb,_0x277e16){return db[_0x46c5('0x26')]['find']({'where':{'id':_0x519deb[_0x46c5('0x41')]['id']}})[_0x46c5('0x21')](handleEntityNotFound(_0x277e16,null))['then'](removeEntity(_0x277e16,null))['catch'](handleError(_0x277e16,null));};exports[_0x46c5('0x47')]=function(_0x505ade,_0xee12fe){return db[_0x46c5('0x26')][_0x46c5('0x47')]()[_0x46c5('0x21')](respondWithResult(_0xee12fe,null))[_0x46c5('0x3f')](handleError(_0xee12fe,null));};
\ No newline at end of file
+var _0x4155=['params','length','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','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','end','json','undefined','limit','count','offset','set','apply','update','then','error','stack','name','send','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','rows','catch'];(function(_0x4f4769,_0x1920d0){var _0x359bd5=function(_0x31bb6c){while(--_0x31bb6c){_0x4f4769['push'](_0x4f4769['shift']());}};_0x359bd5(++_0x1920d0);}(_0x4155,0xa5));var _0x5415=function(_0x43b9fe,_0x22f9fc){_0x43b9fe=_0x43b9fe-0x0;var _0x35ee8f=_0x4155[_0x43b9fe];return _0x35ee8f;};'use strict';var emlformat=require(_0x5415('0x0'));var rimraf=require(_0x5415('0x1'));var zipdir=require(_0x5415('0x2'));var jsonpatch=require(_0x5415('0x3'));var rp=require('request-promise');var moment=require(_0x5415('0x4'));var BPromise=require(_0x5415('0x5'));var Mustache=require(_0x5415('0x6'));var util=require(_0x5415('0x7'));var path=require(_0x5415('0x8'));var sox=require(_0x5415('0x9'));var csv=require(_0x5415('0xa'));var ejs=require(_0x5415('0xb'));var fs=require('fs');var fs_extra=require(_0x5415('0xc'));var _=require(_0x5415('0xd'));var squel=require(_0x5415('0xe'));var crypto=require(_0x5415('0xf'));var jsforce=require(_0x5415('0x10'));var deskjs=require(_0x5415('0x11'));var toCsv=require('to-csv');var querystring=require(_0x5415('0x12'));var Papa=require(_0x5415('0x13'));var Redis=require(_0x5415('0x14'));var authService=require(_0x5415('0x15'));var qs=require(_0x5415('0x16'));var as=require(_0x5415('0x17'));var hardwareService=require(_0x5415('0x18'));var logger=require(_0x5415('0x19'))('api');var utils=require(_0x5415('0x1a'));var config=require(_0x5415('0x1b'));var licenseUtil=require(_0x5415('0x1c'));var db=require(_0x5415('0x1d'))['db'];function respondWithStatusCode(_0x25d375,_0x16de1b){_0x16de1b=_0x16de1b||0xcc;return function(_0x4303db){if(_0x4303db){return _0x25d375[_0x5415('0x1e')](_0x16de1b);}return _0x25d375[_0x5415('0x1f')](_0x16de1b)[_0x5415('0x20')]();};}function respondWithResult(_0x4e1593,_0xcb21e5){_0xcb21e5=_0xcb21e5||0xc8;return function(_0x173112){if(_0x173112){return _0x4e1593[_0x5415('0x1f')](_0xcb21e5)[_0x5415('0x21')](_0x173112);}};}function respondWithFilteredResult(_0x4d5dc7,_0x40ba42){return function(_0x437171){if(_0x437171){var _0x2555c8=typeof _0x40ba42['offset']===_0x5415('0x22')&&typeof _0x40ba42[_0x5415('0x23')]===_0x5415('0x22');var _0x9a786f=_0x437171[_0x5415('0x24')];var _0x54b236=_0x2555c8?0x0:_0x40ba42[_0x5415('0x25')];var _0x21cce3=_0x2555c8?_0x437171[_0x5415('0x24')]:_0x40ba42[_0x5415('0x25')]+_0x40ba42[_0x5415('0x23')];var _0x3944e7;if(_0x21cce3>=_0x9a786f){_0x21cce3=_0x9a786f;_0x3944e7=0xc8;}else{_0x3944e7=0xce;}_0x4d5dc7[_0x5415('0x1f')](_0x3944e7);return _0x4d5dc7[_0x5415('0x26')]('Content-Range',_0x54b236+'-'+_0x21cce3+'/'+_0x9a786f)[_0x5415('0x21')](_0x437171);}return null;};}function patchUpdates(_0x5b045c){return function(_0x428d52){try{jsonpatch[_0x5415('0x27')](_0x428d52,_0x5b045c,!![]);}catch(_0x413819){return BPromise['reject'](_0x413819);}return _0x428d52['save']();};}function saveUpdates(_0x1ac2f3,_0x1c414a){return function(_0x12be97){if(_0x12be97){return _0x12be97[_0x5415('0x28')](_0x1ac2f3)[_0x5415('0x29')](function(_0x43a919){return _0x43a919;});}return null;};}function removeEntity(_0x9ffbd6,_0x2e638b){return function(_0x424ed4){if(_0x424ed4){return _0x424ed4['destroy']()[_0x5415('0x29')](function(){_0x9ffbd6[_0x5415('0x1f')](0xcc)[_0x5415('0x20')]();});}};}function handleEntityNotFound(_0x2285c8,_0x29bc3f){return function(_0x384509){if(!_0x384509){_0x2285c8['sendStatus'](0x194);}return _0x384509;};}function handleError(_0x2ebad8,_0x54fe4b){_0x54fe4b=_0x54fe4b||0x1f4;return function(_0x57ba0d){logger[_0x5415('0x2a')](_0x57ba0d[_0x5415('0x2b')]);if(_0x57ba0d[_0x5415('0x2c')]){delete _0x57ba0d[_0x5415('0x2c')];}_0x2ebad8[_0x5415('0x1f')](_0x54fe4b)[_0x5415('0x2d')](_0x57ba0d);};}exports['index']=function(_0x622876,_0x2dd894){var _0x487944={},_0x25b202={},_0x16b72f={'count':0x0,'rows':[]};var _0x38dcd3=_[_0x5415('0x2e')](db[_0x5415('0x2f')][_0x5415('0x30')],function(_0x456ada){return{'name':_0x456ada[_0x5415('0x31')],'type':_0x456ada[_0x5415('0x32')][_0x5415('0x33')]};});_0x25b202[_0x5415('0x34')]=_[_0x5415('0x2e')](_0x38dcd3,'name');_0x25b202[_0x5415('0x35')]=_[_0x5415('0x36')](_0x622876[_0x5415('0x35')]);_0x25b202[_0x5415('0x37')]=_[_0x5415('0x38')](_0x25b202['model'],_0x25b202[_0x5415('0x35')]);_0x487944[_0x5415('0x39')]=_[_0x5415('0x38')](_0x25b202[_0x5415('0x34')],qs[_0x5415('0x3a')](_0x622876[_0x5415('0x35')][_0x5415('0x3a')]));_0x487944[_0x5415('0x39')]=_0x487944[_0x5415('0x39')]['length']?_0x487944['attributes']:_0x25b202['model'];if(!_0x622876[_0x5415('0x35')][_0x5415('0x3b')](_0x5415('0x3c'))){_0x487944['limit']=qs[_0x5415('0x23')](_0x622876['query']['limit']);_0x487944[_0x5415('0x25')]=qs['offset'](_0x622876[_0x5415('0x35')][_0x5415('0x25')]);}_0x487944[_0x5415('0x3d')]=qs['sort'](_0x622876[_0x5415('0x35')][_0x5415('0x3e')]);_0x487944[_0x5415('0x3f')]=qs[_0x5415('0x37')](_[_0x5415('0x40')](_0x622876[_0x5415('0x35')],_0x25b202[_0x5415('0x37')]),_0x38dcd3);if(_0x622876[_0x5415('0x35')]['filter']){_0x487944[_0x5415('0x3f')]=_[_0x5415('0x41')](_0x487944[_0x5415('0x3f')],{'$or':_[_0x5415('0x2e')](_0x38dcd3,function(_0x531545){if(_0x531545['type']!==_0x5415('0x42')){var _0x3cac09={};_0x3cac09[_0x531545[_0x5415('0x2c')]]={'$like':'%'+_0x622876[_0x5415('0x35')][_0x5415('0x43')]+'%'};return _0x3cac09;}})});}_0x487944=_[_0x5415('0x41')]({},_0x487944,_0x622876['options']);var _0x33636a={'where':_0x487944[_0x5415('0x3f')]};return db[_0x5415('0x2f')][_0x5415('0x24')](_0x33636a)[_0x5415('0x29')](function(_0x58b68c){_0x16b72f[_0x5415('0x24')]=_0x58b68c;if(_0x622876[_0x5415('0x35')][_0x5415('0x44')]){_0x487944[_0x5415('0x45')]=[{'all':!![]}];}return db[_0x5415('0x2f')]['findAll'](_0x487944);})[_0x5415('0x29')](function(_0x16c08c){_0x16b72f[_0x5415('0x46')]=_0x16c08c;return _0x16b72f;})[_0x5415('0x29')](respondWithFilteredResult(_0x2dd894,_0x487944))[_0x5415('0x47')](handleError(_0x2dd894,null));};exports['show']=function(_0x294966,_0x37626b){var _0x510176={'raw':!![],'where':{'id':_0x294966[_0x5415('0x48')]['id']}},_0x542338={};_0x542338['model']=_[_0x5415('0x36')](db[_0x5415('0x2f')][_0x5415('0x30')]);_0x542338[_0x5415('0x35')]=_[_0x5415('0x36')](_0x294966[_0x5415('0x35')]);_0x542338[_0x5415('0x37')]=_['intersection'](_0x542338[_0x5415('0x34')],_0x542338[_0x5415('0x35')]);_0x510176['attributes']=_['intersection'](_0x542338[_0x5415('0x34')],qs[_0x5415('0x3a')](_0x294966[_0x5415('0x35')][_0x5415('0x3a')]));_0x510176[_0x5415('0x39')]=_0x510176[_0x5415('0x39')][_0x5415('0x49')]?_0x510176[_0x5415('0x39')]:_0x542338[_0x5415('0x34')];if(_0x294966[_0x5415('0x35')]['includeAll']){_0x510176[_0x5415('0x45')]=[{'all':!![]}];}_0x510176=_[_0x5415('0x41')]({},_0x510176,_0x294966[_0x5415('0x4a')]);return db[_0x5415('0x2f')][_0x5415('0x4b')](_0x510176)[_0x5415('0x29')](handleEntityNotFound(_0x37626b,null))[_0x5415('0x29')](respondWithResult(_0x37626b,null))[_0x5415('0x47')](handleError(_0x37626b,null));};exports[_0x5415('0x4c')]=function(_0x44fae8,_0x5d1d9e){return db[_0x5415('0x2f')][_0x5415('0x4c')](_0x44fae8[_0x5415('0x4d')],{})[_0x5415('0x29')](respondWithResult(_0x5d1d9e,0xc9))[_0x5415('0x47')](handleError(_0x5d1d9e,null));};exports['update']=function(_0x4ab517,_0x15a8e1){if(_0x4ab517[_0x5415('0x4d')]['id']){delete _0x4ab517['body']['id'];}return db[_0x5415('0x2f')]['find']({'where':{'id':_0x4ab517[_0x5415('0x48')]['id']}})['then'](handleEntityNotFound(_0x15a8e1,null))[_0x5415('0x29')](saveUpdates(_0x4ab517[_0x5415('0x4d')],null))['then'](respondWithResult(_0x15a8e1,null))[_0x5415('0x47')](handleError(_0x15a8e1,null));};exports['destroy']=function(_0x55bb63,_0x4af57f){return db[_0x5415('0x2f')][_0x5415('0x4b')]({'where':{'id':_0x55bb63['params']['id']}})[_0x5415('0x29')](handleEntityNotFound(_0x4af57f,null))[_0x5415('0x29')](removeEntity(_0x4af57f,null))[_0x5415('0x47')](handleError(_0x4af57f,null));};exports[_0x5415('0x4e')]=function(_0xbca962,_0x443e93){return db[_0x5415('0x2f')][_0x5415('0x4e')]()[_0x5415('0x29')](respondWithResult(_0x443e93,null))[_0x5415('0x47')](handleError(_0x443e93,null));};
\ No newline at end of file
index c0d6521..7d5cfcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf19=['moment','bluebird','request-promise','path','../../config/environment','define','JscriptyQuestionReport','report_jscripty_questions','lodash','../../config/logger','api'];(function(_0x1488cd,_0x25a893){var _0x63fa13=function(_0x57dd1c){while(--_0x57dd1c){_0x1488cd['push'](_0x1488cd['shift']());}};_0x63fa13(++_0x25a893);}(_0xaf19,0x1e1));var _0x9af1=function(_0x447205,_0x405a03){_0x447205=_0x447205-0x0;var _0xe28099=_0xaf19[_0x447205];return _0xe28099;};'use strict';var _=require(_0x9af1('0x0'));var util=require('util');var logger=require(_0x9af1('0x1'))(_0x9af1('0x2'));var moment=require(_0x9af1('0x3'));var BPromise=require(_0x9af1('0x4'));var rp=require(_0x9af1('0x5'));var fs=require('fs');var path=require(_0x9af1('0x6'));var rimraf=require('rimraf');var config=require(_0x9af1('0x7'));var attributes=require('./jscriptyQuestionReport.attributes');module['exports']=function(_0x2e33f0,_0x32aad4){return _0x2e33f0[_0x9af1('0x8')](_0x9af1('0x9'),attributes,{'tableName':_0x9af1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x958f=['report_jscripty_questions','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','define','JscriptyQuestionReport'];(function(_0x1c7d39,_0x5d362b){var _0x467063=function(_0x951cd6){while(--_0x951cd6){_0x1c7d39['push'](_0x1c7d39['shift']());}};_0x467063(++_0x5d362b);}(_0x958f,0x115));var _0xf958=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x958f[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0xf958('0x0'));var util=require(_0xf958('0x1'));var logger=require('../../config/logger')(_0xf958('0x2'));var moment=require('moment');var BPromise=require(_0xf958('0x3'));var rp=require(_0xf958('0x4'));var fs=require('fs');var path=require(_0xf958('0x5'));var rimraf=require(_0xf958('0x6'));var config=require(_0xf958('0x7'));var attributes=require(_0xf958('0x8'));module['exports']=function(_0x290a7b,_0x216760){return _0x290a7b[_0xf958('0x9')](_0xf958('0xa'),attributes,{'tableName':_0xf958('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f2f80c7..d837f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0947=['request','then','info','request\x20sent','error','JscriptyQuestionReport,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x30a26d,_0x74c61){var _0x355120=function(_0x4dbae7){while(--_0x4dbae7){_0x30a26d['push'](_0x30a26d['shift']());}};_0x355120(++_0x74c61);}(_0x0947,0x94));var _0x7094=function(_0x5d84a2,_0x26486c){_0x5d84a2=_0x5d84a2-0x0;var _0x387e37=_0x0947[_0x5d84a2];return _0x387e37;};'use strict';var _=require(_0x7094('0x0'));var util=require(_0x7094('0x1'));var moment=require(_0x7094('0x2'));var BPromise=require('bluebird');var rs=require(_0x7094('0x3'));var fs=require('fs');var Redis=require(_0x7094('0x4'));var db=require(_0x7094('0x5'))['db'];var utils=require(_0x7094('0x6'));var logger=require(_0x7094('0x7'))('rpc');var config=require(_0x7094('0x8'));var jayson=require(_0x7094('0x9'));var client=jayson[_0x7094('0xa')][_0x7094('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x197a8a,_0x4858f5,_0x4d2e68){return new BPromise(function(_0x270fae,_0x47209d){return client[_0x7094('0xc')](_0x197a8a,_0x4d2e68)[_0x7094('0xd')](function(_0x1da65f){logger[_0x7094('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x4858f5,_0x7094('0xf'));logger['debug']('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x4858f5,_0x7094('0xf'),JSON['stringify'](_0x1da65f));if(_0x1da65f['error']){if(_0x1da65f[_0x7094('0x10')]['code']===0x1f4){logger['error'](_0x7094('0x11'),_0x4858f5,_0x1da65f[_0x7094('0x10')][_0x7094('0x12')]);return _0x47209d(_0x1da65f['error']['message']);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x4858f5,_0x1da65f[_0x7094('0x10')]['message']);return _0x270fae(_0x1da65f[_0x7094('0x10')][_0x7094('0x12')]);}else{logger['info'](_0x7094('0x11'),_0x4858f5,'request\x20sent');_0x270fae(_0x1da65f[_0x7094('0x13')][_0x7094('0x12')]);}})['catch'](function(_0x30e8b1){logger[_0x7094('0x10')](_0x7094('0x11'),_0x4858f5,_0x30e8b1);_0x47209d(_0x30e8b1);});});}
\ No newline at end of file
+var _0xfc60=['catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result'];(function(_0x4b820f,_0x34646a){var _0xeba73e=function(_0xd557a){while(--_0xd557a){_0x4b820f['push'](_0x4b820f['shift']());}};_0xeba73e(++_0x34646a);}(_0xfc60,0x177));var _0x0fc6=function(_0x15c618,_0x5c5af3){_0x15c618=_0x15c618-0x0;var _0x25f38d=_0xfc60[_0x15c618];return _0x25f38d;};'use strict';var _=require('lodash');var util=require(_0x0fc6('0x0'));var moment=require('moment');var BPromise=require(_0x0fc6('0x1'));var rs=require(_0x0fc6('0x2'));var fs=require('fs');var Redis=require(_0x0fc6('0x3'));var db=require(_0x0fc6('0x4'))['db'];var utils=require(_0x0fc6('0x5'));var logger=require('../../config/logger')(_0x0fc6('0x6'));var config=require(_0x0fc6('0x7'));var jayson=require(_0x0fc6('0x8'));var client=jayson[_0x0fc6('0x9')][_0x0fc6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a77e1,_0x266d13,_0x51bfe4){return new BPromise(function(_0x1bcae1,_0x3c5d48){return client['request'](_0x1a77e1,_0x51bfe4)[_0x0fc6('0xb')](function(_0x49fb32){logger['info'](_0x0fc6('0xc'),_0x266d13,_0x0fc6('0xd'));logger[_0x0fc6('0xe')](_0x0fc6('0xf'),_0x266d13,_0x0fc6('0xd'),JSON[_0x0fc6('0x10')](_0x49fb32));if(_0x49fb32['error']){if(_0x49fb32[_0x0fc6('0x11')]['code']===0x1f4){logger[_0x0fc6('0x11')](_0x0fc6('0xc'),_0x266d13,_0x49fb32['error'][_0x0fc6('0x12')]);return _0x3c5d48(_0x49fb32[_0x0fc6('0x11')][_0x0fc6('0x12')]);}logger[_0x0fc6('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x266d13,_0x49fb32[_0x0fc6('0x11')][_0x0fc6('0x12')]);return _0x1bcae1(_0x49fb32[_0x0fc6('0x11')]['message']);}else{logger[_0x0fc6('0x13')](_0x0fc6('0xc'),_0x266d13,_0x0fc6('0xd'));_0x1bcae1(_0x49fb32[_0x0fc6('0x14')][_0x0fc6('0x12')]);}})[_0x0fc6('0x15')](function(_0xd4b370){logger['error'](_0x0fc6('0xc'),_0x266d13,_0xd4b370);_0x3c5d48(_0xd4b370);});});}
\ No newline at end of file
index ac66fee..69809c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x365c=['./jscriptySessionReport.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/questions','getQuestions','create','destroy','exports','multer','Router','../../components/auth/service','../../config/environment'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x365c,0x1cc));var _0xc365=function(_0x23bad1,_0x207d90){_0x23bad1=_0x23bad1-0x0;var _0x34a55c=_0x365c[_0x23bad1];return _0x34a55c;};'use strict';var multer=require(_0xc365('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc365('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xc365('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xc365('0x3'));var controller=require(_0xc365('0x4'));router[_0xc365('0x5')]('/',auth[_0xc365('0x6')](),controller['index']);router[_0xc365('0x5')](_0xc365('0x7'),auth[_0xc365('0x6')](),controller[_0xc365('0x8')]);router[_0xc365('0x5')](_0xc365('0x9'),auth[_0xc365('0x6')](),controller[_0xc365('0xa')]);router['get'](_0xc365('0xb'),auth[_0xc365('0x6')](),controller[_0xc365('0xc')]);router['post']('/',auth[_0xc365('0x6')](),controller[_0xc365('0xd')]);router['put'](_0xc365('0x9'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xc365('0x6')](),controller[_0xc365('0xe')]);module[_0xc365('0xf')]=router;
\ No newline at end of file
+var _0xe5d5=['../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','/describe','isAuthenticated','/:id/questions','getQuestions','post','create','put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router'];(function(_0x5e7514,_0x30c2e1){var _0x12f472=function(_0x33ddb6){while(--_0x33ddb6){_0x5e7514['push'](_0x5e7514['shift']());}};_0x12f472(++_0x30c2e1);}(_0xe5d5,0x1f0));var _0x5e5d=function(_0x1761a9,_0x38b400){_0x1761a9=_0x1761a9-0x0;var _0x1c36d8=_0xe5d5[_0x1761a9];return _0x1c36d8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5e5d('0x0'));var timeout=require(_0x5e5d('0x1'));var express=require(_0x5e5d('0x2'));var router=express[_0x5e5d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5e5d('0x4'));var interaction=require(_0x5e5d('0x5'));var config=require('../../config/environment');var controller=require(_0x5e5d('0x6'));router[_0x5e5d('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5e5d('0x7')](_0x5e5d('0x8'),auth[_0x5e5d('0x9')](),controller['describe']);router[_0x5e5d('0x7')]('/:id',auth[_0x5e5d('0x9')](),controller['show']);router[_0x5e5d('0x7')](_0x5e5d('0xa'),auth[_0x5e5d('0x9')](),controller[_0x5e5d('0xb')]);router[_0x5e5d('0xc')]('/',auth[_0x5e5d('0x9')](),controller[_0x5e5d('0xd')]);router[_0x5e5d('0xe')](_0x5e5d('0xf'),auth[_0x5e5d('0x9')](),controller[_0x5e5d('0x10')]);router[_0x5e5d('0x11')](_0x5e5d('0xf'),auth[_0x5e5d('0x9')](),controller[_0x5e5d('0x12')]);module[_0x5e5d('0x13')]=router;
\ No newline at end of file
index e246f1b..28e5e1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74b=['STRING','BOOLEAN','sequelize','DATE','setDataValue','starttime','endtime','format'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xe74b,0x112));var _0xbe74=function(_0x4505ed,_0x19ec7a){_0x4505ed=_0x4505ed-0x0;var _0x1ed39f=_0xe74b[_0x4505ed];return _0x1ed39f;};'use strict';var moment=require('moment');var Sequelize=require(_0xbe74('0x0'));module['exports']={'starttime':{'type':Sequelize[_0xbe74('0x1')],'set':function(_0x59293e){this[_0xbe74('0x2')](_0xbe74('0x3'),_0x59293e);this[_0xbe74('0x2')](_0xbe74('0x4'),moment()[_0xbe74('0x5')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0xbe74('0x1')]},'membername':{'type':Sequelize[_0xbe74('0x6')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xbe74('0x6')]},'uniqueid':{'type':Sequelize[_0xbe74('0x6')]},'calleridname':{'type':Sequelize[_0xbe74('0x6')]},'calleridnum':{'type':Sequelize[_0xbe74('0x6')]},'completed':{'type':Sequelize[_0xbe74('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xee81=['STRING','BOOLEAN','moment','sequelize','exports','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xee81,0x17c));var _0x1ee8=function(_0x5349ca,_0x10b5ac){_0x5349ca=_0x5349ca-0x0;var _0x8dedd5=_0xee81[_0x5349ca];return _0x8dedd5;};'use strict';var moment=require(_0x1ee8('0x0'));var Sequelize=require(_0x1ee8('0x1'));module[_0x1ee8('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x3ded67){this['setDataValue'](_0x1ee8('0x3'),_0x3ded67);this['setDataValue'](_0x1ee8('0x4'),moment()[_0x1ee8('0x5')](_0x1ee8('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x1ee8('0x7')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x1ee8('0x7')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x1ee8('0x7')]},'completed':{'type':Sequelize[_0x1ee8('0x8')],'defaultValue':![]}};
\ No newline at end of file
index bead475..160c535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3ee=['limit','order','sort','where','pick','filter','merge','VIRTUAL','options','JscriptySessionReport','includeAll','findAll','rows','catch','show','params','keys','create','body','find','describe','findOne','JscriptyQuestionReport','SessionId','include','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','status','end','json','offset','undefined','count','Content-Range','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x33edd3,_0x2404c0){var _0x2cc549=function(_0x26b633){while(--_0x26b633){_0x33edd3['push'](_0x33edd3['shift']());}};_0x2cc549(++_0x2404c0);}(_0xa3ee,0x19f));var _0xea3e=function(_0x38f003,_0x403eac){_0x38f003=_0x38f003-0x0;var _0x3f8dbe=_0xa3ee[_0x38f003];return _0x3f8dbe;};'use strict';var emlformat=require(_0xea3e('0x0'));var rimraf=require(_0xea3e('0x1'));var zipdir=require(_0xea3e('0x2'));var jsonpatch=require(_0xea3e('0x3'));var rp=require(_0xea3e('0x4'));var moment=require(_0xea3e('0x5'));var BPromise=require(_0xea3e('0x6'));var Mustache=require(_0xea3e('0x7'));var util=require(_0xea3e('0x8'));var path=require(_0xea3e('0x9'));var sox=require(_0xea3e('0xa'));var csv=require(_0xea3e('0xb'));var ejs=require(_0xea3e('0xc'));var fs=require('fs');var fs_extra=require(_0xea3e('0xd'));var _=require('lodash');var squel=require(_0xea3e('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xea3e('0xf'));var toCsv=require(_0xea3e('0xb'));var querystring=require(_0xea3e('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xea3e('0x11'));var qs=require(_0xea3e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xea3e('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xea3e('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xea3e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40f139,_0xbd23ba){_0xbd23ba=_0xbd23ba||0xcc;return function(_0x49fc61){if(_0x49fc61){return _0x40f139['sendStatus'](_0xbd23ba);}return _0x40f139[_0xea3e('0x16')](_0xbd23ba)[_0xea3e('0x17')]();};}function respondWithResult(_0x4249b0,_0x377d4a){_0x377d4a=_0x377d4a||0xc8;return function(_0x480ec9){if(_0x480ec9){return _0x4249b0[_0xea3e('0x16')](_0x377d4a)[_0xea3e('0x18')](_0x480ec9);}};}function respondWithFilteredResult(_0x2fe5a2,_0x1319f0){return function(_0x5443ca){if(_0x5443ca){var _0x42d8a4=typeof _0x1319f0[_0xea3e('0x19')]==='undefined'&&typeof _0x1319f0['limit']===_0xea3e('0x1a');var _0x30774f=_0x5443ca[_0xea3e('0x1b')];var _0x1210cc=_0x42d8a4?0x0:_0x1319f0[_0xea3e('0x19')];var _0x2be1f4=_0x42d8a4?_0x5443ca[_0xea3e('0x1b')]:_0x1319f0['offset']+_0x1319f0['limit'];var _0x785948;if(_0x2be1f4>=_0x30774f){_0x2be1f4=_0x30774f;_0x785948=0xc8;}else{_0x785948=0xce;}_0x2fe5a2[_0xea3e('0x16')](_0x785948);return _0x2fe5a2['set'](_0xea3e('0x1c'),_0x1210cc+'-'+_0x2be1f4+'/'+_0x30774f)[_0xea3e('0x18')](_0x5443ca);}return null;};}function patchUpdates(_0x588707){return function(_0x4e595c){try{jsonpatch[_0xea3e('0x1d')](_0x4e595c,_0x588707,!![]);}catch(_0x1d54ca){return BPromise['reject'](_0x1d54ca);}return _0x4e595c[_0xea3e('0x1e')]();};}function saveUpdates(_0x769001,_0x360cfb){return function(_0x25989d){if(_0x25989d){return _0x25989d[_0xea3e('0x1f')](_0x769001)[_0xea3e('0x20')](function(_0x32fb64){return _0x32fb64;});}return null;};}function removeEntity(_0x5b9a59,_0x4b741d){return function(_0x2585b2){if(_0x2585b2){return _0x2585b2[_0xea3e('0x21')]()[_0xea3e('0x20')](function(){_0x5b9a59[_0xea3e('0x16')](0xcc)[_0xea3e('0x17')]();});}};}function handleEntityNotFound(_0x571e9a,_0x51696a){return function(_0x4af7f5){if(!_0x4af7f5){_0x571e9a[_0xea3e('0x22')](0x194);}return _0x4af7f5;};}function handleError(_0x41e658,_0x1d6a13){_0x1d6a13=_0x1d6a13||0x1f4;return function(_0x572c05){logger[_0xea3e('0x23')](_0x572c05['stack']);if(_0x572c05[_0xea3e('0x24')]){delete _0x572c05[_0xea3e('0x24')];}_0x41e658[_0xea3e('0x16')](_0x1d6a13)[_0xea3e('0x25')](_0x572c05);};}exports[_0xea3e('0x26')]=function(_0x157abc,_0x3d6fe3){var _0x19a2b3={},_0x3d3db3={},_0x167a8b={'count':0x0,'rows':[]};var _0x6bfb66=_[_0xea3e('0x27')](db['JscriptySessionReport'][_0xea3e('0x28')],function(_0x459346){return{'name':_0x459346[_0xea3e('0x29')],'type':_0x459346[_0xea3e('0x2a')][_0xea3e('0x2b')]};});_0x3d3db3[_0xea3e('0x2c')]=_['map'](_0x6bfb66,_0xea3e('0x24'));_0x3d3db3[_0xea3e('0x2d')]=_['keys'](_0x157abc[_0xea3e('0x2d')]);_0x3d3db3[_0xea3e('0x2e')]=_[_0xea3e('0x2f')](_0x3d3db3[_0xea3e('0x2c')],_0x3d3db3[_0xea3e('0x2d')]);_0x19a2b3[_0xea3e('0x30')]=_[_0xea3e('0x2f')](_0x3d3db3[_0xea3e('0x2c')],qs[_0xea3e('0x31')](_0x157abc[_0xea3e('0x2d')]['fields']));_0x19a2b3['attributes']=_0x19a2b3[_0xea3e('0x30')][_0xea3e('0x32')]?_0x19a2b3[_0xea3e('0x30')]:_0x3d3db3[_0xea3e('0x2c')];if(!_0x157abc[_0xea3e('0x2d')][_0xea3e('0x33')](_0xea3e('0x34'))){_0x19a2b3[_0xea3e('0x35')]=qs[_0xea3e('0x35')](_0x157abc[_0xea3e('0x2d')]['limit']);_0x19a2b3[_0xea3e('0x19')]=qs['offset'](_0x157abc[_0xea3e('0x2d')][_0xea3e('0x19')]);}_0x19a2b3[_0xea3e('0x36')]=qs[_0xea3e('0x37')](_0x157abc[_0xea3e('0x2d')]['sort']);_0x19a2b3[_0xea3e('0x38')]=qs['filters'](_[_0xea3e('0x39')](_0x157abc[_0xea3e('0x2d')],_0x3d3db3['filters']),_0x6bfb66);if(_0x157abc[_0xea3e('0x2d')][_0xea3e('0x3a')]){_0x19a2b3[_0xea3e('0x38')]=_[_0xea3e('0x3b')](_0x19a2b3[_0xea3e('0x38')],{'$or':_['map'](_0x6bfb66,function(_0xec59f1){if(_0xec59f1['type']!==_0xea3e('0x3c')){var _0x45e648={};_0x45e648[_0xec59f1[_0xea3e('0x24')]]={'$like':'%'+_0x157abc[_0xea3e('0x2d')]['filter']+'%'};return _0x45e648;}})});}_0x19a2b3=_[_0xea3e('0x3b')]({},_0x19a2b3,_0x157abc[_0xea3e('0x3d')]);var _0x1c01a8={'where':_0x19a2b3['where']};return db[_0xea3e('0x3e')][_0xea3e('0x1b')](_0x1c01a8)['then'](function(_0x2a4333){_0x167a8b[_0xea3e('0x1b')]=_0x2a4333;if(_0x157abc[_0xea3e('0x2d')][_0xea3e('0x3f')]){_0x19a2b3['include']=[{'all':!![]}];}return db[_0xea3e('0x3e')][_0xea3e('0x40')](_0x19a2b3);})[_0xea3e('0x20')](function(_0x1462cf){_0x167a8b[_0xea3e('0x41')]=_0x1462cf;return _0x167a8b;})[_0xea3e('0x20')](respondWithFilteredResult(_0x3d6fe3,_0x19a2b3))[_0xea3e('0x42')](handleError(_0x3d6fe3,null));};exports[_0xea3e('0x43')]=function(_0x5bcf62,_0x32e103){var _0x5b2b8b={'raw':!![],'where':{'id':_0x5bcf62[_0xea3e('0x44')]['id']}},_0x518af7={};_0x518af7[_0xea3e('0x2c')]=_[_0xea3e('0x45')](db[_0xea3e('0x3e')][_0xea3e('0x28')]);_0x518af7[_0xea3e('0x2d')]=_[_0xea3e('0x45')](_0x5bcf62[_0xea3e('0x2d')]);_0x518af7[_0xea3e('0x2e')]=_[_0xea3e('0x2f')](_0x518af7[_0xea3e('0x2c')],_0x518af7['query']);_0x5b2b8b[_0xea3e('0x30')]=_[_0xea3e('0x2f')](_0x518af7[_0xea3e('0x2c')],qs[_0xea3e('0x31')](_0x5bcf62[_0xea3e('0x2d')][_0xea3e('0x31')]));_0x5b2b8b[_0xea3e('0x30')]=_0x5b2b8b['attributes'][_0xea3e('0x32')]?_0x5b2b8b['attributes']:_0x518af7[_0xea3e('0x2c')];if(_0x5bcf62[_0xea3e('0x2d')][_0xea3e('0x3f')]){_0x5b2b8b['include']=[{'all':!![]}];}_0x5b2b8b=_[_0xea3e('0x3b')]({},_0x5b2b8b,_0x5bcf62['options']);return db['JscriptySessionReport']['find'](_0x5b2b8b)[_0xea3e('0x20')](handleEntityNotFound(_0x32e103,null))[_0xea3e('0x20')](respondWithResult(_0x32e103,null))[_0xea3e('0x42')](handleError(_0x32e103,null));};exports[_0xea3e('0x46')]=function(_0x1e047e,_0x5ba848){return db['JscriptySessionReport'][_0xea3e('0x46')](_0x1e047e[_0xea3e('0x47')],{})[_0xea3e('0x20')](respondWithResult(_0x5ba848,0xc9))[_0xea3e('0x42')](handleError(_0x5ba848,null));};exports[_0xea3e('0x1f')]=function(_0x20c43a,_0x296ac5){if(_0x20c43a['body']['id']){delete _0x20c43a['body']['id'];}return db[_0xea3e('0x3e')][_0xea3e('0x48')]({'where':{'id':_0x20c43a[_0xea3e('0x44')]['id']}})['then'](handleEntityNotFound(_0x296ac5,null))['then'](saveUpdates(_0x20c43a[_0xea3e('0x47')],null))['then'](respondWithResult(_0x296ac5,null))[_0xea3e('0x42')](handleError(_0x296ac5,null));};exports[_0xea3e('0x21')]=function(_0x41e110,_0x55f6e0){return db[_0xea3e('0x3e')]['find']({'where':{'id':_0x41e110[_0xea3e('0x44')]['id']}})[_0xea3e('0x20')](handleEntityNotFound(_0x55f6e0,null))[_0xea3e('0x20')](removeEntity(_0x55f6e0,null))[_0xea3e('0x42')](handleError(_0x55f6e0,null));};exports[_0xea3e('0x49')]=function(_0x21b2ad,_0xc03219){return db[_0xea3e('0x3e')][_0xea3e('0x49')]()[_0xea3e('0x20')](respondWithResult(_0xc03219,null))[_0xea3e('0x42')](handleError(_0xc03219,null));};exports['getQuestions']=function(_0x4fc935,_0x3e358a,_0x5a4ac6){var _0x45def8={'raw':!![],'where':{}};var _0x405a1f={};var _0x35d32a={'count':0x0,'rows':[]};return db[_0xea3e('0x3e')][_0xea3e('0x4a')]({'where':{'id':_0x4fc935['params']['id']}})[_0xea3e('0x20')](handleEntityNotFound(_0x3e358a,null))[_0xea3e('0x20')](function(_0x2d5b89){if(_0x2d5b89){_0x405a1f['model']=_[_0xea3e('0x45')](db[_0xea3e('0x4b')][_0xea3e('0x28')]);_0x405a1f[_0xea3e('0x2d')]=_['keys'](_0x4fc935[_0xea3e('0x2d')]);_0x405a1f['filters']=_[_0xea3e('0x2f')](_0x405a1f[_0xea3e('0x2c')],_0x405a1f['query']);_0x45def8[_0xea3e('0x30')]=_[_0xea3e('0x2f')](_0x405a1f[_0xea3e('0x2c')],qs['fields'](_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x31')]));_0x45def8[_0xea3e('0x30')]=_0x45def8[_0xea3e('0x30')]['length']?_0x45def8[_0xea3e('0x30')]:_0x405a1f[_0xea3e('0x2c')];if(!_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x33')](_0xea3e('0x34'))){_0x45def8[_0xea3e('0x35')]=qs[_0xea3e('0x35')](_0x4fc935[_0xea3e('0x2d')]['limit']);_0x45def8[_0xea3e('0x19')]=qs['offset'](_0x4fc935['query'][_0xea3e('0x19')]);}_0x45def8[_0xea3e('0x36')]=qs[_0xea3e('0x37')](_0x4fc935['query'][_0xea3e('0x37')]);_0x45def8[_0xea3e('0x38')]=qs[_0xea3e('0x2e')](_[_0xea3e('0x39')](_0x4fc935['query'],_0x405a1f[_0xea3e('0x2e')]));_0x45def8[_0xea3e('0x38')][_0xea3e('0x4c')]=_0x2d5b89['id'];if(_0x4fc935['query'][_0xea3e('0x3a')]){_0x45def8[_0xea3e('0x38')]=_[_0xea3e('0x3b')](_0x45def8[_0xea3e('0x38')],{'$or':_[_0xea3e('0x27')](_0x45def8[_0xea3e('0x30')],function(_0x50bd86){var _0x576e1e={};_0x576e1e[_0x50bd86]={'$like':'%'+_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x3a')]+'%'};return _0x576e1e;})});}_0x45def8=_[_0xea3e('0x3b')]({},_0x45def8,_0x4fc935[_0xea3e('0x3d')]);return db[_0xea3e('0x4b')]['count']({'where':_0x45def8['where']})[_0xea3e('0x20')](function(_0x111e30){_0x35d32a[_0xea3e('0x1b')]=_0x111e30;if(_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x3f')]){_0x45def8[_0xea3e('0x4d')]=[{'all':!![]}];}return db[_0xea3e('0x4b')]['findAll'](_0x45def8);})[_0xea3e('0x20')](function(_0x26aa33){_0x35d32a[_0xea3e('0x41')]=_0x26aa33;return _0x35d32a;});}})[_0xea3e('0x20')](respondWithFilteredResult(_0x3e358a,_0x45def8))[_0xea3e('0x42')](handleError(_0x3e358a,null));};
\ No newline at end of file
+var _0xb9be=['apply','update','then','destroy','error','stack','name','send','index','JscriptySessionReport','rawAttributes','fieldName','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','map','type','VIRTUAL','merge','options','include','rows','catch','params','length','includeAll','create','body','find','describe','getQuestions','findOne','JscriptyQuestionReport','findAll','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range'];(function(_0x56e2a0,_0x13b891){var _0x1b3b78=function(_0x79e8b1){while(--_0x79e8b1){_0x56e2a0['push'](_0x56e2a0['shift']());}};_0x1b3b78(++_0x13b891);}(_0xb9be,0x171));var _0xeb9b=function(_0x2132a3,_0x4639e9){_0x2132a3=_0x2132a3-0x0;var _0x21890c=_0xb9be[_0x2132a3];return _0x21890c;};'use strict';var emlformat=require(_0xeb9b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeb9b('0x1'));var jsonpatch=require(_0xeb9b('0x2'));var rp=require(_0xeb9b('0x3'));var moment=require(_0xeb9b('0x4'));var BPromise=require(_0xeb9b('0x5'));var Mustache=require(_0xeb9b('0x6'));var util=require(_0xeb9b('0x7'));var path=require(_0xeb9b('0x8'));var sox=require(_0xeb9b('0x9'));var csv=require(_0xeb9b('0xa'));var ejs=require(_0xeb9b('0xb'));var fs=require('fs');var fs_extra=require(_0xeb9b('0xc'));var _=require(_0xeb9b('0xd'));var squel=require(_0xeb9b('0xe'));var crypto=require('crypto');var jsforce=require(_0xeb9b('0xf'));var deskjs=require(_0xeb9b('0x10'));var toCsv=require(_0xeb9b('0xa'));var querystring=require(_0xeb9b('0x11'));var Papa=require(_0xeb9b('0x12'));var Redis=require(_0xeb9b('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xeb9b('0x14'));var as=require(_0xeb9b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xeb9b('0x16'))(_0xeb9b('0x17'));var utils=require('../../config/utils');var config=require(_0xeb9b('0x18'));var licenseUtil=require(_0xeb9b('0x19'));var db=require(_0xeb9b('0x1a'))['db'];function respondWithStatusCode(_0x549739,_0x1f8d70){_0x1f8d70=_0x1f8d70||0xcc;return function(_0x37e23e){if(_0x37e23e){return _0x549739[_0xeb9b('0x1b')](_0x1f8d70);}return _0x549739[_0xeb9b('0x1c')](_0x1f8d70)[_0xeb9b('0x1d')]();};}function respondWithResult(_0x2ff435,_0x4d095e){_0x4d095e=_0x4d095e||0xc8;return function(_0x290b84){if(_0x290b84){return _0x2ff435[_0xeb9b('0x1c')](_0x4d095e)[_0xeb9b('0x1e')](_0x290b84);}};}function respondWithFilteredResult(_0x505315,_0x197987){return function(_0x1b713c){if(_0x1b713c){var _0x347184=typeof _0x197987[_0xeb9b('0x1f')]==='undefined'&&typeof _0x197987[_0xeb9b('0x20')]==='undefined';var _0x709d61=_0x1b713c[_0xeb9b('0x21')];var _0x5557b0=_0x347184?0x0:_0x197987[_0xeb9b('0x1f')];var _0x375b3c=_0x347184?_0x1b713c[_0xeb9b('0x21')]:_0x197987[_0xeb9b('0x1f')]+_0x197987[_0xeb9b('0x20')];var _0x40d6e9;if(_0x375b3c>=_0x709d61){_0x375b3c=_0x709d61;_0x40d6e9=0xc8;}else{_0x40d6e9=0xce;}_0x505315[_0xeb9b('0x1c')](_0x40d6e9);return _0x505315[_0xeb9b('0x22')](_0xeb9b('0x23'),_0x5557b0+'-'+_0x375b3c+'/'+_0x709d61)[_0xeb9b('0x1e')](_0x1b713c);}return null;};}function patchUpdates(_0x27a198){return function(_0x1ecafe){try{jsonpatch[_0xeb9b('0x24')](_0x1ecafe,_0x27a198,!![]);}catch(_0x24cde1){return BPromise['reject'](_0x24cde1);}return _0x1ecafe['save']();};}function saveUpdates(_0x5d8295,_0x4e3257){return function(_0x1c149b){if(_0x1c149b){return _0x1c149b[_0xeb9b('0x25')](_0x5d8295)[_0xeb9b('0x26')](function(_0x303ce9){return _0x303ce9;});}return null;};}function removeEntity(_0xe5dba8,_0x474968){return function(_0x2c8ff4){if(_0x2c8ff4){return _0x2c8ff4[_0xeb9b('0x27')]()[_0xeb9b('0x26')](function(){_0xe5dba8[_0xeb9b('0x1c')](0xcc)[_0xeb9b('0x1d')]();});}};}function handleEntityNotFound(_0xe96745,_0x30587e){return function(_0x19ee5b){if(!_0x19ee5b){_0xe96745[_0xeb9b('0x1b')](0x194);}return _0x19ee5b;};}function handleError(_0xfad3c1,_0x5546b1){_0x5546b1=_0x5546b1||0x1f4;return function(_0x43a022){logger[_0xeb9b('0x28')](_0x43a022[_0xeb9b('0x29')]);if(_0x43a022[_0xeb9b('0x2a')]){delete _0x43a022[_0xeb9b('0x2a')];}_0xfad3c1[_0xeb9b('0x1c')](_0x5546b1)[_0xeb9b('0x2b')](_0x43a022);};}exports[_0xeb9b('0x2c')]=function(_0x3b097b,_0xc6595c){var _0x3d78f5={},_0x484ff5={},_0x5a0966={'count':0x0,'rows':[]};var _0x233c5a=_['map'](db[_0xeb9b('0x2d')][_0xeb9b('0x2e')],function(_0xa12c63){return{'name':_0xa12c63[_0xeb9b('0x2f')],'type':_0xa12c63['type']['key']};});_0x484ff5[_0xeb9b('0x30')]=_['map'](_0x233c5a,'name');_0x484ff5[_0xeb9b('0x31')]=_[_0xeb9b('0x32')](_0x3b097b['query']);_0x484ff5['filters']=_[_0xeb9b('0x33')](_0x484ff5['model'],_0x484ff5['query']);_0x3d78f5['attributes']=_['intersection'](_0x484ff5[_0xeb9b('0x30')],qs[_0xeb9b('0x34')](_0x3b097b['query'][_0xeb9b('0x34')]));_0x3d78f5[_0xeb9b('0x35')]=_0x3d78f5['attributes']['length']?_0x3d78f5[_0xeb9b('0x35')]:_0x484ff5[_0xeb9b('0x30')];if(!_0x3b097b[_0xeb9b('0x31')][_0xeb9b('0x36')](_0xeb9b('0x37'))){_0x3d78f5[_0xeb9b('0x20')]=qs['limit'](_0x3b097b['query'][_0xeb9b('0x20')]);_0x3d78f5[_0xeb9b('0x1f')]=qs[_0xeb9b('0x1f')](_0x3b097b[_0xeb9b('0x31')][_0xeb9b('0x1f')]);}_0x3d78f5[_0xeb9b('0x38')]=qs[_0xeb9b('0x39')](_0x3b097b[_0xeb9b('0x31')][_0xeb9b('0x39')]);_0x3d78f5['where']=qs[_0xeb9b('0x3a')](_[_0xeb9b('0x3b')](_0x3b097b[_0xeb9b('0x31')],_0x484ff5[_0xeb9b('0x3a')]),_0x233c5a);if(_0x3b097b[_0xeb9b('0x31')][_0xeb9b('0x3c')]){_0x3d78f5['where']=_['merge'](_0x3d78f5[_0xeb9b('0x3d')],{'$or':_[_0xeb9b('0x3e')](_0x233c5a,function(_0x382a73){if(_0x382a73[_0xeb9b('0x3f')]!==_0xeb9b('0x40')){var _0x41cb82={};_0x41cb82[_0x382a73[_0xeb9b('0x2a')]]={'$like':'%'+_0x3b097b[_0xeb9b('0x31')][_0xeb9b('0x3c')]+'%'};return _0x41cb82;}})});}_0x3d78f5=_[_0xeb9b('0x41')]({},_0x3d78f5,_0x3b097b[_0xeb9b('0x42')]);var _0x562c19={'where':_0x3d78f5[_0xeb9b('0x3d')]};return db[_0xeb9b('0x2d')][_0xeb9b('0x21')](_0x562c19)[_0xeb9b('0x26')](function(_0x276821){_0x5a0966[_0xeb9b('0x21')]=_0x276821;if(_0x3b097b[_0xeb9b('0x31')]['includeAll']){_0x3d78f5[_0xeb9b('0x43')]=[{'all':!![]}];}return db[_0xeb9b('0x2d')]['findAll'](_0x3d78f5);})[_0xeb9b('0x26')](function(_0x5a1508){_0x5a0966[_0xeb9b('0x44')]=_0x5a1508;return _0x5a0966;})[_0xeb9b('0x26')](respondWithFilteredResult(_0xc6595c,_0x3d78f5))[_0xeb9b('0x45')](handleError(_0xc6595c,null));};exports['show']=function(_0x388fe6,_0x11821b){var _0x554b6d={'raw':!![],'where':{'id':_0x388fe6[_0xeb9b('0x46')]['id']}},_0x6be9dd={};_0x6be9dd[_0xeb9b('0x30')]=_[_0xeb9b('0x32')](db[_0xeb9b('0x2d')][_0xeb9b('0x2e')]);_0x6be9dd['query']=_['keys'](_0x388fe6[_0xeb9b('0x31')]);_0x6be9dd['filters']=_['intersection'](_0x6be9dd[_0xeb9b('0x30')],_0x6be9dd['query']);_0x554b6d['attributes']=_[_0xeb9b('0x33')](_0x6be9dd['model'],qs['fields'](_0x388fe6[_0xeb9b('0x31')][_0xeb9b('0x34')]));_0x554b6d[_0xeb9b('0x35')]=_0x554b6d[_0xeb9b('0x35')][_0xeb9b('0x47')]?_0x554b6d['attributes']:_0x6be9dd[_0xeb9b('0x30')];if(_0x388fe6[_0xeb9b('0x31')][_0xeb9b('0x48')]){_0x554b6d['include']=[{'all':!![]}];}_0x554b6d=_[_0xeb9b('0x41')]({},_0x554b6d,_0x388fe6[_0xeb9b('0x42')]);return db[_0xeb9b('0x2d')]['find'](_0x554b6d)[_0xeb9b('0x26')](handleEntityNotFound(_0x11821b,null))['then'](respondWithResult(_0x11821b,null))['catch'](handleError(_0x11821b,null));};exports['create']=function(_0x14343a,_0x4e8c81){return db[_0xeb9b('0x2d')][_0xeb9b('0x49')](_0x14343a[_0xeb9b('0x4a')],{})[_0xeb9b('0x26')](respondWithResult(_0x4e8c81,0xc9))[_0xeb9b('0x45')](handleError(_0x4e8c81,null));};exports[_0xeb9b('0x25')]=function(_0x592f93,_0x1087b3){if(_0x592f93[_0xeb9b('0x4a')]['id']){delete _0x592f93[_0xeb9b('0x4a')]['id'];}return db[_0xeb9b('0x2d')][_0xeb9b('0x4b')]({'where':{'id':_0x592f93[_0xeb9b('0x46')]['id']}})[_0xeb9b('0x26')](handleEntityNotFound(_0x1087b3,null))['then'](saveUpdates(_0x592f93['body'],null))['then'](respondWithResult(_0x1087b3,null))[_0xeb9b('0x45')](handleError(_0x1087b3,null));};exports[_0xeb9b('0x27')]=function(_0x57f6ab,_0x366e70){return db[_0xeb9b('0x2d')][_0xeb9b('0x4b')]({'where':{'id':_0x57f6ab[_0xeb9b('0x46')]['id']}})[_0xeb9b('0x26')](handleEntityNotFound(_0x366e70,null))[_0xeb9b('0x26')](removeEntity(_0x366e70,null))[_0xeb9b('0x45')](handleError(_0x366e70,null));};exports[_0xeb9b('0x4c')]=function(_0x10d566,_0x13ea7e){return db['JscriptySessionReport'][_0xeb9b('0x4c')]()[_0xeb9b('0x26')](respondWithResult(_0x13ea7e,null))[_0xeb9b('0x45')](handleError(_0x13ea7e,null));};exports[_0xeb9b('0x4d')]=function(_0x454e55,_0x4b1528,_0xc47606){var _0x4799f9={'raw':!![],'where':{}};var _0x495100={};var _0x14a3a7={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xeb9b('0x4e')]({'where':{'id':_0x454e55[_0xeb9b('0x46')]['id']}})[_0xeb9b('0x26')](handleEntityNotFound(_0x4b1528,null))[_0xeb9b('0x26')](function(_0xcfc2c){if(_0xcfc2c){_0x495100[_0xeb9b('0x30')]=_[_0xeb9b('0x32')](db[_0xeb9b('0x4f')]['rawAttributes']);_0x495100[_0xeb9b('0x31')]=_[_0xeb9b('0x32')](_0x454e55[_0xeb9b('0x31')]);_0x495100[_0xeb9b('0x3a')]=_[_0xeb9b('0x33')](_0x495100[_0xeb9b('0x30')],_0x495100[_0xeb9b('0x31')]);_0x4799f9['attributes']=_[_0xeb9b('0x33')](_0x495100[_0xeb9b('0x30')],qs['fields'](_0x454e55[_0xeb9b('0x31')][_0xeb9b('0x34')]));_0x4799f9[_0xeb9b('0x35')]=_0x4799f9[_0xeb9b('0x35')][_0xeb9b('0x47')]?_0x4799f9[_0xeb9b('0x35')]:_0x495100[_0xeb9b('0x30')];if(!_0x454e55['query']['hasOwnProperty'](_0xeb9b('0x37'))){_0x4799f9[_0xeb9b('0x20')]=qs[_0xeb9b('0x20')](_0x454e55[_0xeb9b('0x31')][_0xeb9b('0x20')]);_0x4799f9[_0xeb9b('0x1f')]=qs['offset'](_0x454e55['query'][_0xeb9b('0x1f')]);}_0x4799f9['order']=qs[_0xeb9b('0x39')](_0x454e55['query'][_0xeb9b('0x39')]);_0x4799f9[_0xeb9b('0x3d')]=qs['filters'](_[_0xeb9b('0x3b')](_0x454e55[_0xeb9b('0x31')],_0x495100[_0xeb9b('0x3a')]));_0x4799f9[_0xeb9b('0x3d')]['SessionId']=_0xcfc2c['id'];if(_0x454e55[_0xeb9b('0x31')][_0xeb9b('0x3c')]){_0x4799f9['where']=_[_0xeb9b('0x41')](_0x4799f9[_0xeb9b('0x3d')],{'$or':_['map'](_0x4799f9['attributes'],function(_0x35d2e0){var _0x570d54={};_0x570d54[_0x35d2e0]={'$like':'%'+_0x454e55[_0xeb9b('0x31')]['filter']+'%'};return _0x570d54;})});}_0x4799f9=_[_0xeb9b('0x41')]({},_0x4799f9,_0x454e55[_0xeb9b('0x42')]);return db['JscriptyQuestionReport'][_0xeb9b('0x21')]({'where':_0x4799f9['where']})[_0xeb9b('0x26')](function(_0x5a8c03){_0x14a3a7['count']=_0x5a8c03;if(_0x454e55['query']['includeAll']){_0x4799f9[_0xeb9b('0x43')]=[{'all':!![]}];}return db[_0xeb9b('0x4f')][_0xeb9b('0x50')](_0x4799f9);})[_0xeb9b('0x26')](function(_0x27e3e1){_0x14a3a7[_0xeb9b('0x44')]=_0x27e3e1;return _0x14a3a7;});}})[_0xeb9b('0x26')](respondWithFilteredResult(_0x4b1528,_0x4799f9))['catch'](handleError(_0x4b1528,null));};
\ No newline at end of file
index 8361a3f..05c2c20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6c=['rimraf','../../config/environment','exports','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0x3c6c,0x7b));var _0xc3c6=function(_0x558cc0,_0x3fd80c){_0x558cc0=_0x558cc0-0x0;var _0x5c6b94=_0x3c6c[_0x558cc0];return _0x5c6b94;};'use strict';var _=require(_0xc3c6('0x0'));var util=require('util');var logger=require(_0xc3c6('0x1'))(_0xc3c6('0x2'));var moment=require(_0xc3c6('0x3'));var BPromise=require(_0xc3c6('0x4'));var rp=require(_0xc3c6('0x5'));var fs=require('fs');var path=require(_0xc3c6('0x6'));var rimraf=require(_0xc3c6('0x7'));var config=require(_0xc3c6('0x8'));var attributes=require('./jscriptySessionReport.attributes');module[_0xc3c6('0x9')]=function(_0x4a2ca1,_0xe7731e){return _0x4a2ca1['define']('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xafc4=['path','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0xafc4,0x69));var _0x4afc=function(_0x450dcb,_0x4554e9){_0x450dcb=_0x450dcb-0x0;var _0x319cea=_0xafc4[_0x450dcb];return _0x319cea;};'use strict';var _=require(_0x4afc('0x0'));var util=require('util');var logger=require(_0x4afc('0x1'))('api');var moment=require(_0x4afc('0x2'));var BPromise=require(_0x4afc('0x3'));var rp=require(_0x4afc('0x4'));var fs=require('fs');var path=require(_0x4afc('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0x4afc('0x6')]=function(_0x471d45,_0x16953b){return _0x471d45[_0x4afc('0x7')](_0x4afc('0x8'),attributes,{'tableName':_0x4afc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9cbad97..bee85d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['request','info','JscriptySessionReport,\x20%s,\x20%s','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http'];(function(_0x4e67b9,_0x43cec7){var _0xa500ae=function(_0x2ef395){while(--_0x2ef395){_0x4e67b9['push'](_0x4e67b9['shift']());}};_0xa500ae(++_0x43cec7);}(_0x627e,0x14a));var _0xe627=function(_0x31a5ff,_0x2789da){_0x31a5ff=_0x31a5ff-0x0;var _0x7584bb=_0x627e[_0x31a5ff];return _0x7584bb;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var moment=require(_0xe627('0x2'));var BPromise=require(_0xe627('0x3'));var rs=require(_0xe627('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe627('0x5'))['db'];var utils=require(_0xe627('0x6'));var logger=require(_0xe627('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe627('0x8')][_0xe627('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45e49a,_0x2d4f63,_0xd5016e){return new BPromise(function(_0xe065b,_0x4bae52){return client[_0xe627('0xa')](_0x45e49a,_0xd5016e)['then'](function(_0x56549e){logger[_0xe627('0xb')](_0xe627('0xc'),_0x2d4f63,'request\x20sent');logger['debug'](_0xe627('0xd'),_0x2d4f63,_0xe627('0xe'),JSON[_0xe627('0xf')](_0x56549e));if(_0x56549e[_0xe627('0x10')]){if(_0x56549e[_0xe627('0x10')][_0xe627('0x11')]===0x1f4){logger[_0xe627('0x10')](_0xe627('0xc'),_0x2d4f63,_0x56549e[_0xe627('0x10')]['message']);return _0x4bae52(_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);}logger[_0xe627('0x10')]('JscriptySessionReport,\x20%s,\x20%s',_0x2d4f63,_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);return _0xe065b(_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);}else{logger[_0xe627('0xb')](_0xe627('0xc'),_0x2d4f63,_0xe627('0xe'));_0xe065b(_0x56549e['result'][_0xe627('0x12')]);}})[_0xe627('0x13')](function(_0x16c2d7){logger[_0xe627('0x10')](_0xe627('0xc'),_0x2d4f63,_0x16c2d7);_0x4bae52(_0x16c2d7);});});}
\ No newline at end of file
+var _0x9582=['error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','JscriptySessionReport,\x20%s,\x20%s','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x25f357,_0x39b78e){var _0x225c2e=function(_0x2038c1){while(--_0x2038c1){_0x25f357['push'](_0x25f357['shift']());}};_0x225c2e(++_0x39b78e);}(_0x9582,0x95));var _0x2958=function(_0x145a01,_0x328a06){_0x145a01=_0x145a01-0x0;var _0x5157f7=_0x9582[_0x145a01];return _0x5157f7;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));var BPromise=require(_0x2958('0x3'));var rs=require(_0x2958('0x4'));var fs=require('fs');var Redis=require(_0x2958('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2958('0x6'));var logger=require(_0x2958('0x7'))(_0x2958('0x8'));var config=require(_0x2958('0x9'));var jayson=require(_0x2958('0xa'));var client=jayson[_0x2958('0xb')][_0x2958('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x309525,_0xa385ec,_0x2e571b){return new BPromise(function(_0x56ca85,_0x5ec1b3){return client[_0x2958('0xd')](_0x309525,_0x2e571b)['then'](function(_0x10db1e){logger['info'](_0x2958('0xe'),_0xa385ec,'request\x20sent');logger[_0x2958('0xf')](_0x2958('0x10'),_0xa385ec,_0x2958('0x11'),JSON[_0x2958('0x12')](_0x10db1e));if(_0x10db1e[_0x2958('0x13')]){if(_0x10db1e['error'][_0x2958('0x14')]===0x1f4){logger[_0x2958('0x13')](_0x2958('0xe'),_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x5ec1b3(_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);}logger[_0x2958('0x13')]('JscriptySessionReport,\x20%s,\x20%s',_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x56ca85(_0x10db1e['error']['message']);}else{logger[_0x2958('0x16')](_0x2958('0xe'),_0xa385ec,'request\x20sent');_0x56ca85(_0x10db1e[_0x2958('0x17')]['message']);}})['catch'](function(_0x429d42){logger[_0x2958('0x13')]('JscriptySessionReport,\x20%s,\x20%s',_0xa385ec,_0x429d42);_0x5ec1b3(_0x429d42);});});}
\ No newline at end of file
index f0acc54..9343361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f0=['isAuthenticated','exports','multer','util','path','express','Router','../../config/environment','./license.controller','put','update','get'];(function(_0x4d2697,_0x5d956b){var _0x578800=function(_0x59f0f8){while(--_0x59f0f8){_0x4d2697['push'](_0x4d2697['shift']());}};_0x578800(++_0x5d956b);}(_0xb5f0,0x18e));var _0x0b5f=function(_0xff01f6,_0x14b5b9){_0xff01f6=_0xff01f6-0x0;var _0x65e73f=_0xb5f0[_0xff01f6];return _0x65e73f;};'use strict';var multer=require(_0x0b5f('0x0'));var util=require(_0x0b5f('0x1'));var path=require(_0x0b5f('0x2'));var timeout=require('connect-timeout');var express=require(_0x0b5f('0x3'));var router=express[_0x0b5f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0b5f('0x5'));var controller=require(_0x0b5f('0x6'));router['get']('/',controller['index']);router[_0x0b5f('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x0b5f('0x8')]);router[_0x0b5f('0x9')]('/download_log_file',auth[_0x0b5f('0xa')](),controller['downloadLogFile']);module[_0x0b5f('0xb')]=router;
\ No newline at end of file
+var _0x3067=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','index','/:id','/download_log_file','isAuthenticated','downloadLogFile','exports','multer','util','path'];(function(_0x2609ad,_0x23f9ef){var _0x58275f=function(_0x54d850){while(--_0x54d850){_0x2609ad['push'](_0x2609ad['shift']());}};_0x58275f(++_0x23f9ef);}(_0x3067,0xb8));var _0x7306=function(_0x1bc9fb,_0x48ab27){_0x1bc9fb=_0x1bc9fb-0x0;var _0x20aedc=_0x3067[_0x1bc9fb];return _0x20aedc;};'use strict';var multer=require(_0x7306('0x0'));var util=require(_0x7306('0x1'));var path=require(_0x7306('0x2'));var timeout=require('connect-timeout');var express=require(_0x7306('0x3'));var router=express[_0x7306('0x4')]();var fs_extra=require(_0x7306('0x5'));var auth=require(_0x7306('0x6'));var interaction=require(_0x7306('0x7'));var config=require(_0x7306('0x8'));var controller=require(_0x7306('0x9'));router[_0x7306('0xa')]('/',controller[_0x7306('0xb')]);router['put'](_0x7306('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x7306('0xa')](_0x7306('0xd'),auth[_0x7306('0xe')](),controller[_0x7306('0xf')]);module[_0x7306('0x10')]=router;
\ No newline at end of file
index 2563f95..e845625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d2d=['STRING','INTEGER','sequelize','exports','TEXT'];(function(_0x191c33,_0x137eb7){var _0x15b58a=function(_0x28f03b){while(--_0x28f03b){_0x191c33['push'](_0x191c33['shift']());}};_0x15b58a(++_0x137eb7);}(_0x3d2d,0xa7));var _0xd3d2=function(_0x47bc5e,_0x6fc500){_0x47bc5e=_0x47bc5e-0x0;var _0x323a59=_0x3d2d[_0x47bc5e];return _0x323a59;};'use strict';var Sequelize=require(_0xd3d2('0x0'));module[_0xd3d2('0x1')]={'license':{'type':Sequelize[_0xd3d2('0x2')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xd3d2('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xd3d2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfdcb=['sequelize','exports','STRING'];(function(_0x4753c5,_0x5ade3c){var _0x38c364=function(_0x5f468e){while(--_0x5f468e){_0x4753c5['push'](_0x4753c5['shift']());}};_0x38c364(++_0x5ade3c);}(_0xfdcb,0x1b9));var _0xbfdc=function(_0x217372,_0x1822ce){_0x217372=_0x217372-0x0;var _0x2715a1=_0xfdcb[_0x217372];return _0x2715a1;};'use strict';var Sequelize=require(_0xbfdc('0x0'));module[_0xbfdc('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xbfdc('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index f7cb3d6..89dca8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5202=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','end','status','json','undefined','limit','offset','set','apply','reject','save','update','then','name','../../config/license/util','index','keys','rawAttributes','query','filters','intersection','model','fields','attributes','length','options','catch','body','License','find','params','get','checkLicense','key','downloadLogFile','license-info.log','join','/var','log','xcally','setHeader','Content-disposition','attachment;\x20filename=','Content-Type','download','eml-format','rimraf','bluebird','mustache','sox','to-csv','ejs','lodash','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x4bb22c,_0x37f185){var _0x2d6313=function(_0x4c8c5b){while(--_0x4c8c5b){_0x4bb22c['push'](_0x4bb22c['shift']());}};_0x2d6313(++_0x37f185);}(_0x5202,0xe8));var _0x2520=function(_0x5cd55f,_0x1ec275){_0x5cd55f=_0x5cd55f-0x0;var _0x55d04d=_0x5202[_0x5cd55f];return _0x55d04d;};'use strict';var emlformat=require(_0x2520('0x0'));var rimraf=require(_0x2520('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2520('0x2'));var Mustache=require(_0x2520('0x3'));var util=require('util');var path=require('path');var sox=require(_0x2520('0x4'));var csv=require(_0x2520('0x5'));var ejs=require(_0x2520('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2520('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2520('0x5'));var querystring=require('querystring');var Papa=require(_0x2520('0x8'));var Redis=require(_0x2520('0x9'));var authService=require(_0x2520('0xa'));var qs=require(_0x2520('0xb'));var as=require(_0x2520('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2520('0xd'))(_0x2520('0xe'));var utils=require(_0x2520('0xf'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2251e5,_0x548e14){_0x548e14=_0x548e14||0xcc;return function(_0x319a91){if(_0x319a91){return _0x2251e5[_0x2520('0x10')](_0x548e14);}return _0x2251e5['status'](_0x548e14)[_0x2520('0x11')]();};}function respondWithResult(_0x4bfeb3,_0x543d35){_0x543d35=_0x543d35||0xc8;return function(_0x370aef){if(_0x370aef){return _0x4bfeb3[_0x2520('0x12')](_0x543d35)[_0x2520('0x13')](_0x370aef);}};}function respondWithFilteredResult(_0x428c46,_0x8e6c69){return function(_0x1892fb){if(_0x1892fb){var _0x4ae3b8=typeof _0x8e6c69['offset']===_0x2520('0x14')&&typeof _0x8e6c69[_0x2520('0x15')]===_0x2520('0x14');var _0x4f074b=_0x1892fb['count'];var _0x5c00d7=_0x4ae3b8?0x0:_0x8e6c69['offset'];var _0x1af09d=_0x4ae3b8?_0x1892fb['count']:_0x8e6c69[_0x2520('0x16')]+_0x8e6c69[_0x2520('0x15')];var _0x16ad1d;if(_0x1af09d>=_0x4f074b){_0x1af09d=_0x4f074b;_0x16ad1d=0xc8;}else{_0x16ad1d=0xce;}_0x428c46[_0x2520('0x12')](_0x16ad1d);return _0x428c46[_0x2520('0x17')]('Content-Range',_0x5c00d7+'-'+_0x1af09d+'/'+_0x4f074b)['json'](_0x1892fb);}return null;};}function patchUpdates(_0x114f24){return function(_0xec1f7b){try{jsonpatch[_0x2520('0x18')](_0xec1f7b,_0x114f24,!![]);}catch(_0x433ddb){return BPromise[_0x2520('0x19')](_0x433ddb);}return _0xec1f7b[_0x2520('0x1a')]();};}function saveUpdates(_0x4a5ffe,_0x2ddf8c){return function(_0x51c895){if(_0x51c895){return _0x51c895[_0x2520('0x1b')](_0x4a5ffe)[_0x2520('0x1c')](function(_0x6a9847){return _0x6a9847;});}return null;};}function removeEntity(_0x244b89,_0x50c916){return function(_0x39bccb){if(_0x39bccb){return _0x39bccb['destroy']()[_0x2520('0x1c')](function(){_0x244b89[_0x2520('0x12')](0xcc)[_0x2520('0x11')]();});}};}function handleEntityNotFound(_0x15e5c3,_0x4c7859){return function(_0x5d6846){if(!_0x5d6846){_0x15e5c3[_0x2520('0x10')](0x194);}return _0x5d6846;};}function handleError(_0x1cb02c,_0x52b400){_0x52b400=_0x52b400||0x1f4;return function(_0x5999cf){logger['error'](_0x5999cf['stack']);if(_0x5999cf[_0x2520('0x1d')]){delete _0x5999cf[_0x2520('0x1d')];}_0x1cb02c[_0x2520('0x12')](_0x52b400)['send'](_0x5999cf);};}var utilLicense=require(_0x2520('0x1e'));exports[_0x2520('0x1f')]=function(_0x5cef32,_0x514e29){var _0xd874fe={'raw':!![],'where':{'id':0x1}},_0x4276c5={};_0x4276c5['model']=_[_0x2520('0x20')](db['License'][_0x2520('0x21')]);_0x4276c5[_0x2520('0x22')]=_[_0x2520('0x20')](_0x5cef32[_0x2520('0x22')]);_0x4276c5[_0x2520('0x23')]=_[_0x2520('0x24')](_0x4276c5[_0x2520('0x25')],_0x4276c5[_0x2520('0x22')]);_0xd874fe['attributes']=_[_0x2520('0x24')](_0x4276c5[_0x2520('0x25')],qs['fields'](_0x5cef32['query'][_0x2520('0x26')]));_0xd874fe[_0x2520('0x27')]=_0xd874fe[_0x2520('0x27')][_0x2520('0x28')]?_0xd874fe[_0x2520('0x27')]:_0x4276c5[_0x2520('0x25')];_0xd874fe=_['merge']({},_0xd874fe,_0x5cef32[_0x2520('0x29')]);return utilLicense['getLicense'](_0xd874fe)[_0x2520('0x1c')](respondWithResult(_0x514e29,null))[_0x2520('0x2a')](handleError(_0x514e29,null));};exports['update']=function(_0x49fc3f,_0x32e121){if(_0x49fc3f[_0x2520('0x2b')]['id']){delete _0x49fc3f[_0x2520('0x2b')]['id'];}return db[_0x2520('0x2c')][_0x2520('0x2d')]({'where':{'id':_0x49fc3f[_0x2520('0x2e')]['id']}})['then'](handleEntityNotFound(_0x32e121,null))[_0x2520('0x1c')](function(_0x12c17e){var _0x4b4608=_0x12c17e[_0x2520('0x2f')]({'plain':!![]});return utilLicense[_0x2520('0x30')](_0x4b4608,_0x49fc3f[_0x2520('0x2b')][_0x2520('0x31')]);})[_0x2520('0x1c')](function(_0x11e4cb){if(!_0x11e4cb['demo']){return saveUpdates(_0x49fc3f[_0x2520('0x2b')],null);}return _0x11e4cb;})[_0x2520('0x1c')](respondWithResult(_0x32e121,null))[_0x2520('0x2a')](handleError(_0x32e121,null));};exports[_0x2520('0x32')]=function(_0x4b22bb,_0x1e2d87){var _0x3c2fd3=_0x2520('0x33');var _0x127a30=path[_0x2520('0x34')](_0x2520('0x35'),_0x2520('0x36'),_0x2520('0x37'),_0x3c2fd3);_0x1e2d87[_0x2520('0x38')](_0x2520('0x39'),_0x2520('0x3a')+_0x3c2fd3);_0x1e2d87[_0x2520('0x17')](_0x2520('0x3b'),'text/plain');_0x1e2d87[_0x2520('0x3c')](_0x127a30);};
\ No newline at end of file
+var _0xacdb=['util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','model','keys','License','rawAttributes','query','attributes','intersection','fields','length','merge','options','getLicense','catch','body','find','params','get','key','demo','downloadLogFile','join','/var','log','setHeader','Content-disposition','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache'];(function(_0x324b04,_0x1bdc6e){var _0x123b5e=function(_0x6ec089){while(--_0x6ec089){_0x324b04['push'](_0x324b04['shift']());}};_0x123b5e(++_0x1bdc6e);}(_0xacdb,0x11a));var _0xbacd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacdb[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbacd('0x0'));var zipdir=require(_0xbacd('0x1'));var jsonpatch=require(_0xbacd('0x2'));var rp=require(_0xbacd('0x3'));var moment=require(_0xbacd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbacd('0x5'));var util=require(_0xbacd('0x6'));var path=require('path');var sox=require(_0xbacd('0x7'));var csv=require('to-csv');var ejs=require(_0xbacd('0x8'));var fs=require('fs');var fs_extra=require(_0xbacd('0x9'));var _=require(_0xbacd('0xa'));var squel=require(_0xbacd('0xb'));var crypto=require('crypto');var jsforce=require(_0xbacd('0xc'));var deskjs=require(_0xbacd('0xd'));var toCsv=require(_0xbacd('0xe'));var querystring=require(_0xbacd('0xf'));var Papa=require(_0xbacd('0x10'));var Redis=require(_0xbacd('0x11'));var authService=require(_0xbacd('0x12'));var qs=require(_0xbacd('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbacd('0x14'));var logger=require(_0xbacd('0x15'))(_0xbacd('0x16'));var utils=require(_0xbacd('0x17'));var config=require(_0xbacd('0x18'));var licenseUtil=require(_0xbacd('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42a6df,_0x2d40ca){_0x2d40ca=_0x2d40ca||0xcc;return function(_0x57820d){if(_0x57820d){return _0x42a6df[_0xbacd('0x1a')](_0x2d40ca);}return _0x42a6df[_0xbacd('0x1b')](_0x2d40ca)[_0xbacd('0x1c')]();};}function respondWithResult(_0x4b38a8,_0x47b50d){_0x47b50d=_0x47b50d||0xc8;return function(_0x28ce22){if(_0x28ce22){return _0x4b38a8[_0xbacd('0x1b')](_0x47b50d)[_0xbacd('0x1d')](_0x28ce22);}};}function respondWithFilteredResult(_0x4f3d72,_0x53d235){return function(_0x34122a){if(_0x34122a){var _0x40b101=typeof _0x53d235[_0xbacd('0x1e')]===_0xbacd('0x1f')&&typeof _0x53d235[_0xbacd('0x20')]===_0xbacd('0x1f');var _0x517313=_0x34122a[_0xbacd('0x21')];var _0x2340d9=_0x40b101?0x0:_0x53d235[_0xbacd('0x1e')];var _0x2e0e47=_0x40b101?_0x34122a[_0xbacd('0x21')]:_0x53d235['offset']+_0x53d235[_0xbacd('0x20')];var _0x390d65;if(_0x2e0e47>=_0x517313){_0x2e0e47=_0x517313;_0x390d65=0xc8;}else{_0x390d65=0xce;}_0x4f3d72[_0xbacd('0x1b')](_0x390d65);return _0x4f3d72[_0xbacd('0x22')](_0xbacd('0x23'),_0x2340d9+'-'+_0x2e0e47+'/'+_0x517313)[_0xbacd('0x1d')](_0x34122a);}return null;};}function patchUpdates(_0x148034){return function(_0x4c7269){try{jsonpatch['apply'](_0x4c7269,_0x148034,!![]);}catch(_0x59d530){return BPromise[_0xbacd('0x24')](_0x59d530);}return _0x4c7269[_0xbacd('0x25')]();};}function saveUpdates(_0x4e5e27,_0xd117d1){return function(_0x2c17b5){if(_0x2c17b5){return _0x2c17b5[_0xbacd('0x26')](_0x4e5e27)['then'](function(_0x5dfbf5){return _0x5dfbf5;});}return null;};}function removeEntity(_0x4d7af6,_0x44c256){return function(_0x38c20f){if(_0x38c20f){return _0x38c20f[_0xbacd('0x27')]()[_0xbacd('0x28')](function(){_0x4d7af6['status'](0xcc)[_0xbacd('0x1c')]();});}};}function handleEntityNotFound(_0x5b1431,_0x169555){return function(_0x4073f5){if(!_0x4073f5){_0x5b1431['sendStatus'](0x194);}return _0x4073f5;};}function handleError(_0x3bc3a0,_0x2e9524){_0x2e9524=_0x2e9524||0x1f4;return function(_0x3a341f){logger[_0xbacd('0x29')](_0x3a341f[_0xbacd('0x2a')]);if(_0x3a341f['name']){delete _0x3a341f[_0xbacd('0x2b')];}_0x3bc3a0[_0xbacd('0x1b')](_0x2e9524)[_0xbacd('0x2c')](_0x3a341f);};}var utilLicense=require(_0xbacd('0x19'));exports[_0xbacd('0x2d')]=function(_0xdc5e2e,_0x1f6ef3){var _0x1f3713={'raw':!![],'where':{'id':0x1}},_0x140730={};_0x140730[_0xbacd('0x2e')]=_[_0xbacd('0x2f')](db[_0xbacd('0x30')][_0xbacd('0x31')]);_0x140730[_0xbacd('0x32')]=_['keys'](_0xdc5e2e[_0xbacd('0x32')]);_0x140730['filters']=_['intersection'](_0x140730[_0xbacd('0x2e')],_0x140730[_0xbacd('0x32')]);_0x1f3713[_0xbacd('0x33')]=_[_0xbacd('0x34')](_0x140730[_0xbacd('0x2e')],qs[_0xbacd('0x35')](_0xdc5e2e['query'][_0xbacd('0x35')]));_0x1f3713['attributes']=_0x1f3713[_0xbacd('0x33')][_0xbacd('0x36')]?_0x1f3713['attributes']:_0x140730[_0xbacd('0x2e')];_0x1f3713=_[_0xbacd('0x37')]({},_0x1f3713,_0xdc5e2e[_0xbacd('0x38')]);return utilLicense[_0xbacd('0x39')](_0x1f3713)[_0xbacd('0x28')](respondWithResult(_0x1f6ef3,null))[_0xbacd('0x3a')](handleError(_0x1f6ef3,null));};exports['update']=function(_0x1f7979,_0x135bad){if(_0x1f7979['body']['id']){delete _0x1f7979[_0xbacd('0x3b')]['id'];}return db[_0xbacd('0x30')][_0xbacd('0x3c')]({'where':{'id':_0x1f7979[_0xbacd('0x3d')]['id']}})[_0xbacd('0x28')](handleEntityNotFound(_0x135bad,null))[_0xbacd('0x28')](function(_0x1780b1){var _0x81b708=_0x1780b1[_0xbacd('0x3e')]({'plain':!![]});return utilLicense['checkLicense'](_0x81b708,_0x1f7979[_0xbacd('0x3b')][_0xbacd('0x3f')]);})[_0xbacd('0x28')](function(_0x5a8f52){if(!_0x5a8f52[_0xbacd('0x40')]){return saveUpdates(_0x1f7979[_0xbacd('0x3b')],null);}return _0x5a8f52;})[_0xbacd('0x28')](respondWithResult(_0x135bad,null))[_0xbacd('0x3a')](handleError(_0x135bad,null));};exports[_0xbacd('0x41')]=function(_0x33353d,_0x37a7f5){var _0x5d4093='license-info.log';var _0x1060ad=path[_0xbacd('0x42')](_0xbacd('0x43'),_0xbacd('0x44'),'xcally',_0x5d4093);_0x37a7f5[_0xbacd('0x45')](_0xbacd('0x46'),'attachment;\x20filename='+_0x5d4093);_0x37a7f5['set']('Content-Type','text/plain');_0x37a7f5[_0xbacd('0x47')](_0x1060ad);};
\ No newline at end of file
index 74fe936..7fe4d39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x516f=['bluebird','request-promise','../../config/environment','./license.attributes','define','License','lodash','util','../../config/logger','api','moment'];(function(_0x1402ff,_0x59ea38){var _0x5ccccf=function(_0x480be4){while(--_0x480be4){_0x1402ff['push'](_0x1402ff['shift']());}};_0x5ccccf(++_0x59ea38);}(_0x516f,0x7f));var _0xf516=function(_0x4f7fd5,_0x320e0b){_0x4f7fd5=_0x4f7fd5-0x0;var _0x3f6112=_0x516f[_0x4f7fd5];return _0x3f6112;};'use strict';var _=require(_0xf516('0x0'));var util=require(_0xf516('0x1'));var logger=require(_0xf516('0x2'))(_0xf516('0x3'));var moment=require(_0xf516('0x4'));var BPromise=require(_0xf516('0x5'));var rp=require(_0xf516('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf516('0x7'));var attributes=require(_0xf516('0x8'));module['exports']=function(_0x38b7f3,_0x99d86f){return _0x38b7f3[_0xf516('0x9')](_0xf516('0xa'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd1e=['path','rimraf','../../config/environment','./license.attributes','exports','define','License','license','lodash','api','moment'];(function(_0xca5e02,_0x4ae9dd){var _0xdcd2be=function(_0x172400){while(--_0x172400){_0xca5e02['push'](_0xca5e02['shift']());}};_0xdcd2be(++_0x4ae9dd);}(_0xbd1e,0x105));var _0xebd1=function(_0x119ded,_0x497e72){_0x119ded=_0x119ded-0x0;var _0x22108b=_0xbd1e[_0x119ded];return _0x22108b;};'use strict';var _=require(_0xebd1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xebd1('0x1'));var moment=require(_0xebd1('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xebd1('0x3'));var rimraf=require(_0xebd1('0x4'));var config=require(_0xebd1('0x5'));var attributes=require(_0xebd1('0x6'));module[_0xebd1('0x7')]=function(_0x156b68,_0x37718c){return _0x156b68[_0xebd1('0x8')](_0xebd1('0x9'),attributes,{'tableName':_0xebd1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78b1d01..2141b32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1274=['lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x33ad91,_0x524cba){var _0xce88cb=function(_0x3f8fb1){while(--_0x3f8fb1){_0x33ad91['push'](_0x33ad91['shift']());}};_0xce88cb(++_0x524cba);}(_0x1274,0x1ce));var _0x4127=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1274[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4127('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4127('0x1'));var rs=require(_0x4127('0x2'));var fs=require('fs');var Redis=require(_0x4127('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4127('0x4'));var logger=require('../../config/logger')(_0x4127('0x5'));var config=require(_0x4127('0x6'));var jayson=require(_0x4127('0x7'));var client=jayson[_0x4127('0x8')][_0x4127('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x478b89,_0x4de5a0,_0x7a8e54){return new BPromise(function(_0x3c6ae5,_0x28f055){return client[_0x4127('0xa')](_0x478b89,_0x7a8e54)[_0x4127('0xb')](function(_0x592e98){logger[_0x4127('0xc')](_0x4127('0xd'),_0x4de5a0,_0x4127('0xe'));logger[_0x4127('0xf')](_0x4127('0x10'),_0x4de5a0,_0x4127('0xe'),JSON['stringify'](_0x592e98));if(_0x592e98['error']){if(_0x592e98[_0x4127('0x11')]['code']===0x1f4){logger[_0x4127('0x11')](_0x4127('0xd'),_0x4de5a0,_0x592e98['error']['message']);return _0x28f055(_0x592e98['error'][_0x4127('0x12')]);}logger[_0x4127('0x11')](_0x4127('0xd'),_0x4de5a0,_0x592e98['error'][_0x4127('0x12')]);return _0x3c6ae5(_0x592e98[_0x4127('0x11')][_0x4127('0x12')]);}else{logger[_0x4127('0xc')](_0x4127('0xd'),_0x4de5a0,_0x4127('0xe'));_0x3c6ae5(_0x592e98[_0x4127('0x13')][_0x4127('0x12')]);}})[_0x4127('0x14')](function(_0x210563){logger[_0x4127('0x11')](_0x4127('0xd'),_0x4de5a0,_0x210563);_0x28f055(_0x210563);});});}
\ No newline at end of file
+var _0x9240=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','code','error','License,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x1b3240,_0x5fe7eb){var _0x3872c6=function(_0x30d395){while(--_0x30d395){_0x1b3240['push'](_0x1b3240['shift']());}};_0x3872c6(++_0x5fe7eb);}(_0x9240,0x1e9));var _0x0924=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x9240[_0x2dadb9];return _0x2f0097;};'use strict';var _=require('lodash');var util=require(_0x0924('0x0'));var moment=require(_0x0924('0x1'));var BPromise=require(_0x0924('0x2'));var rs=require(_0x0924('0x3'));var fs=require('fs');var Redis=require(_0x0924('0x4'));var db=require(_0x0924('0x5'))['db'];var utils=require(_0x0924('0x6'));var logger=require(_0x0924('0x7'))(_0x0924('0x8'));var config=require(_0x0924('0x9'));var jayson=require(_0x0924('0xa'));var client=jayson[_0x0924('0xb')][_0x0924('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1b8825,_0x111c7b,_0x1013f5){return new BPromise(function(_0x2c060d,_0x16f1ad){return client[_0x0924('0xd')](_0x1b8825,_0x1013f5)[_0x0924('0xe')](function(_0x1249a9){logger[_0x0924('0xf')]('License,\x20%s,\x20%s',_0x111c7b,_0x0924('0x10'));logger[_0x0924('0x11')](_0x0924('0x12'),_0x111c7b,_0x0924('0x10'),JSON[_0x0924('0x13')](_0x1249a9));if(_0x1249a9['error']){if(_0x1249a9['error'][_0x0924('0x14')]===0x1f4){logger[_0x0924('0x15')](_0x0924('0x16'),_0x111c7b,_0x1249a9[_0x0924('0x15')][_0x0924('0x17')]);return _0x16f1ad(_0x1249a9[_0x0924('0x15')][_0x0924('0x17')]);}logger[_0x0924('0x15')](_0x0924('0x16'),_0x111c7b,_0x1249a9['error'][_0x0924('0x17')]);return _0x2c060d(_0x1249a9[_0x0924('0x15')][_0x0924('0x17')]);}else{logger[_0x0924('0xf')](_0x0924('0x16'),_0x111c7b,_0x0924('0x10'));_0x2c060d(_0x1249a9[_0x0924('0x18')][_0x0924('0x17')]);}})[_0x0924('0x19')](function(_0x4610a8){logger[_0x0924('0x15')](_0x0924('0x16'),_0x111c7b,_0x4610a8);_0x16f1ad(_0x4610a8);});});}
\ No newline at end of file
index 59fa9f5..e30a78e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4149=['getAgents','post','create','/:id/in_servers','addImap','/:id/out_servers','addSmtp','addInteraction','addApplications','send','/:id/users','addAgents','update','removeDispositions','delete','removeAnswers','removeImap','removeSmtp','destroy','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify'];(function(_0x4b3d13,_0x1993d5){var _0xf64dd8=function(_0x2304ed){while(--_0x2304ed){_0x4b3d13['push'](_0x4b3d13['shift']());}};_0xf64dd8(++_0x1993d5);}(_0x4149,0x141));var _0x9414=function(_0x4605fe,_0x43db3f){_0x4605fe=_0x4605fe-0x0;var _0x20dfd7=_0x4149[_0x4605fe];return _0x20dfd7;};'use strict';var multer=require(_0x9414('0x0'));var util=require('util');var path=require(_0x9414('0x1'));var timeout=require(_0x9414('0x2'));var express=require(_0x9414('0x3'));var router=express[_0x9414('0x4')]();var fs_extra=require(_0x9414('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9414('0x6'));var config=require(_0x9414('0x7'));var controller=require(_0x9414('0x8'));router[_0x9414('0x9')]('/',auth['isAuthenticated'](),controller[_0x9414('0xa')]);router[_0x9414('0x9')](_0x9414('0xb'),auth[_0x9414('0xc')](),controller[_0x9414('0xd')]);router[_0x9414('0x9')](_0x9414('0xe'),auth[_0x9414('0xc')](),controller[_0x9414('0xf')]);router[_0x9414('0x9')](_0x9414('0x10'),auth['isAuthenticated'](),controller[_0x9414('0x11')]);router[_0x9414('0x9')](_0x9414('0x12'),auth[_0x9414('0xc')](),controller[_0x9414('0x13')]);router[_0x9414('0x9')]('/:id/in_servers',auth[_0x9414('0xc')](),controller[_0x9414('0x14')]);router[_0x9414('0x9')]('/:id/out_servers',auth[_0x9414('0xc')](),controller[_0x9414('0x15')]);router[_0x9414('0x9')](_0x9414('0x16'),auth[_0x9414('0xc')](),controller[_0x9414('0x17')]);router[_0x9414('0x9')](_0x9414('0x18'),auth[_0x9414('0xc')](),controller[_0x9414('0x19')]);router[_0x9414('0x9')](_0x9414('0x1a'),auth[_0x9414('0xc')](),controller[_0x9414('0x1b')]);router['get'](_0x9414('0x1c'),auth[_0x9414('0xc')](),controller['verifySmtp']);router[_0x9414('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0x9414('0x1d')]);router[_0x9414('0x1e')](_0x9414('0x10'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x9414('0x1e')]('/:id/canned_answers',auth[_0x9414('0xc')](),controller['addAnswer']);router[_0x9414('0x1e')]('/',auth[_0x9414('0xc')](),controller[_0x9414('0x1f')]);router['post'](_0x9414('0x20'),auth[_0x9414('0xc')](),controller[_0x9414('0x21')]);router[_0x9414('0x1e')](_0x9414('0x22'),auth[_0x9414('0xc')](),controller[_0x9414('0x23')]);router[_0x9414('0x1e')](_0x9414('0x16'),auth[_0x9414('0xc')](),controller[_0x9414('0x24')]);router['post'](_0x9414('0x18'),auth['isAuthenticated'](),controller[_0x9414('0x25')]);router['post']('/:id/send',auth[_0x9414('0xc')](),controller[_0x9414('0x26')]);router[_0x9414('0x1e')](_0x9414('0x27'),auth['isAuthenticated'](),controller[_0x9414('0x28')]);router['put'](_0x9414('0xe'),auth[_0x9414('0xc')](),controller[_0x9414('0x29')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x9414('0x2a')]);router[_0x9414('0x2b')](_0x9414('0x12'),auth[_0x9414('0xc')](),controller[_0x9414('0x2c')]);router[_0x9414('0x2b')](_0x9414('0x20'),auth['isAuthenticated'](),controller[_0x9414('0x2d')]);router['delete']('/:id/out_servers',auth[_0x9414('0xc')](),controller[_0x9414('0x2e')]);router[_0x9414('0x2b')]('/:id',auth[_0x9414('0xc')](),controller[_0x9414('0x2f')]);router[_0x9414('0x2b')]('/:id/users',auth[_0x9414('0xc')](),controller[_0x9414('0x30')]);module[_0x9414('0x31')]=router;
\ No newline at end of file
+var _0xbae5=['update','delete','removeDispositions','removeImap','removeSmtp','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../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','getImap','/:id/out_servers','/:id/interactions','/:id/applications','getApplications','/:id/messages','/:id/verify','/:id/users','getAgents','post','addDisposition','addAnswer','create','addSmtp','addInteraction','addApplications','/:id/send','addAgents'];(function(_0x281d47,_0x3aef47){var _0x396c51=function(_0x4b70ce){while(--_0x4b70ce){_0x281d47['push'](_0x281d47['shift']());}};_0x396c51(++_0x3aef47);}(_0xbae5,0x188));var _0x5bae=function(_0xe52d37,_0x407061){_0xe52d37=_0xe52d37-0x0;var _0x53e2cc=_0xbae5[_0xe52d37];return _0x53e2cc;};'use strict';var multer=require(_0x5bae('0x0'));var util=require(_0x5bae('0x1'));var path=require(_0x5bae('0x2'));var timeout=require(_0x5bae('0x3'));var express=require(_0x5bae('0x4'));var router=express[_0x5bae('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5bae('0x6'));var interaction=require(_0x5bae('0x7'));var config=require(_0x5bae('0x8'));var controller=require(_0x5bae('0x9'));router[_0x5bae('0xa')]('/',auth[_0x5bae('0xb')](),controller[_0x5bae('0xc')]);router['get'](_0x5bae('0xd'),auth[_0x5bae('0xb')](),controller[_0x5bae('0xe')]);router[_0x5bae('0xa')](_0x5bae('0xf'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x10')]);router['get'](_0x5bae('0x11'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x12')]);router['get'](_0x5bae('0x13'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x14')]);router['get'](_0x5bae('0x15'),auth['isAuthenticated'](),controller[_0x5bae('0x16')]);router[_0x5bae('0xa')](_0x5bae('0x17'),auth[_0x5bae('0xb')](),controller['getSmtp']);router['get'](_0x5bae('0x18'),auth[_0x5bae('0xb')](),controller['getInteractions']);router[_0x5bae('0xa')](_0x5bae('0x19'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x1a')]);router[_0x5bae('0xa')](_0x5bae('0x1b'),auth[_0x5bae('0xb')](),controller['getMessages']);router[_0x5bae('0xa')](_0x5bae('0x1c'),auth[_0x5bae('0xb')](),controller['verifySmtp']);router[_0x5bae('0xa')](_0x5bae('0x1d'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x1e')]);router[_0x5bae('0x1f')](_0x5bae('0x11'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x20')]);router[_0x5bae('0x1f')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x5bae('0x21')]);router[_0x5bae('0x1f')]('/',auth[_0x5bae('0xb')](),controller[_0x5bae('0x22')]);router[_0x5bae('0x1f')]('/:id/in_servers',auth['isAuthenticated'](),controller['addImap']);router[_0x5bae('0x1f')](_0x5bae('0x17'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x23')]);router[_0x5bae('0x1f')](_0x5bae('0x18'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x24')]);router['post'](_0x5bae('0x19'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x25')]);router['post'](_0x5bae('0x26'),auth[_0x5bae('0xb')](),controller['send']);router[_0x5bae('0x1f')](_0x5bae('0x1d'),auth['isAuthenticated'](),controller[_0x5bae('0x27')]);router['put']('/:id',auth[_0x5bae('0xb')](),controller[_0x5bae('0x28')]);router[_0x5bae('0x29')]('/:id/dispositions',auth[_0x5bae('0xb')](),controller[_0x5bae('0x2a')]);router[_0x5bae('0x29')](_0x5bae('0x13'),auth[_0x5bae('0xb')](),controller['removeAnswers']);router[_0x5bae('0x29')](_0x5bae('0x15'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x2b')]);router[_0x5bae('0x29')]('/:id/out_servers',auth[_0x5bae('0xb')](),controller[_0x5bae('0x2c')]);router[_0x5bae('0x29')](_0x5bae('0xf'),auth[_0x5bae('0xb')](),controller[_0x5bae('0x2d')]);router[_0x5bae('0x29')](_0x5bae('0x1d'),auth['isAuthenticated'](),controller[_0x5bae('0x2e')]);module[_0x5bae('0x2f')]=router;
\ No newline at end of file
index da48058..cee565c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c33=['custom','sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','ENUM','gmail','hotmail','yahoo','outlook365','getDataValue','provider'];(function(_0x45b29d,_0x44ce43){var _0x32d74=function(_0x559eff){while(--_0x559eff){_0x45b29d['push'](_0x45b29d['shift']());}};_0x32d74(++_0x44ce43);}(_0x0c33,0xf1));var _0x30c3=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x0c33[_0x673722];return _0x21249c;};'use strict';var Sequelize=require(_0x30c3('0x0'));module[_0x30c3('0x1')]={'description':{'type':Sequelize[_0x30c3('0x2')]},'name':{'type':Sequelize[_0x30c3('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x30c3('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x30c3('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x30c3('0x4')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x30c3('0x5')},'fontSize':{'type':Sequelize[_0x30c3('0x6')](0x2)[_0x30c3('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x30c3('0x4')],'defaultValue':function(){return _0x30c3('0x8');}},'notificationSound':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x30c3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x30c3('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x30c3('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![],'comment':_0x30c3('0xa'),'set':function(_0x1a8618){if(!_0x1a8618)this[_0x30c3('0xb')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0x1a8618);}},'provider':{'type':Sequelize[_0x30c3('0xc')](_0x30c3('0xd'),_0x30c3('0xe'),_0x30c3('0xf'),_0x30c3('0x10')),'defaultValue':null,'get':function(){if(!this[_0x30c3('0x11')](_0x30c3('0x12')))return _0x30c3('0x13');return this['getDataValue'](_0x30c3('0x12'));},'set':function(_0x5eb410){if(_0x5eb410===_0x30c3('0x13'))_0x5eb410=null;return this['setDataValue'](_0x30c3('0x12'),_0x5eb410);}}};
\ No newline at end of file
+var _0x9b70=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','ENUM','gmail','hotmail','yahoo','custom','provider','sequelize','exports','STRING','TEXT','BOOLEAN','INTEGER','UNSIGNED'];(function(_0x21d3c4,_0x48d915){var _0x341584=function(_0x35aaa7){while(--_0x35aaa7){_0x21d3c4['push'](_0x21d3c4['shift']());}};_0x341584(++_0x48d915);}(_0x9b70,0xe7));var _0x09b7=function(_0x51160c,_0x374b59){_0x51160c=_0x51160c-0x0;var _0x15a3fb=_0x9b70[_0x51160c];return _0x15a3fb;};'use strict';var Sequelize=require(_0x09b7('0x0'));module[_0x09b7('0x1')]={'description':{'type':Sequelize[_0x09b7('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x09b7('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x09b7('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x09b7('0x3')]},'markAsUnread':{'type':Sequelize[_0x09b7('0x4')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x09b7('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x09b7('0x5')](0x2)[_0x09b7('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x09b7('0x3')],'defaultValue':function(){return _0x09b7('0x7');}},'notificationSound':{'type':Sequelize[_0x09b7('0x4')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x09b7('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x09b7('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x09b7('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x09b7('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x09b7('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x09b7('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x09b7('0x4')],'defaultValue':![],'comment':_0x09b7('0x9'),'set':function(_0x2162ec){if(!_0x2162ec)this[_0x09b7('0xa')]('mandatoryDispositionPauseId',null);this[_0x09b7('0xa')]('mandatoryDisposition',_0x2162ec);}},'provider':{'type':Sequelize[_0x09b7('0xb')](_0x09b7('0xc'),_0x09b7('0xd'),_0x09b7('0xe'),'outlook365'),'defaultValue':null,'get':function(){if(!this['getDataValue']('provider'))return _0x09b7('0xf');return this['getDataValue']('provider');},'set':function(_0x3b1574){if(_0x3b1574===_0x09b7('0xf'))_0x3b1574=null;return this[_0x09b7('0xa')](_0x09b7('0x10'),_0x3b1574);}}};
\ No newline at end of file
index 56d6477..5d04f7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd05a=['modernAuthentication','CloudProviderId','host','port','secure','authentication','Imap','Smtp','MailServerIn','MailServerOut','Pause','MailAccount','rawAttributes','type','key','map','query','keys','filters','intersection','attributes','length','model','hasOwnProperty','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','mandatoryDispositionPause','fields','find','body','provider','custom','Mail\x20Account\x20not\x20found','service','describe','params','Disposition','create','getDispositions','MailAccountId','removeDispositions','ids','CannedAnswer','getAnswers','findOne','nolimit','removeAnswers','email','ListId','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','addInteraction','MailInteraction','omit','CmContact','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','ISOLATION_LEVELS','MailApplication','priority','finally','getApplications','getMessages','MailMessage','$gte','split','format','inlineCss','List','Contacts','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','isNil','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','messageId','from','subject','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','userMailAccount:save','removeAgents','isArray','emit','userMailAccount:remove','getAgents','util','path','juice','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','info','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailAccount,\x20%s,\x20%s','request\x20sent','result','sendStatus','status','undefined','count','offset','set','json','update','destroy','then','get','MailAccounts','UserProfileResource','end','stack','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','user','username','password','pass'];(function(_0x47a24a,_0x3a36b4){var _0x25bbf2=function(_0x13e7a2){while(--_0x13e7a2){_0x47a24a['push'](_0x47a24a['shift']());}};_0x25bbf2(++_0x3a36b4);}(_0xd05a,0x84));var _0xad05=function(_0x5ac9f4,_0x310b91){_0x5ac9f4=_0x5ac9f4-0x0;var _0x3f84b8=_0xd05a[_0x5ac9f4];return _0x3f84b8;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xad05('0x0'));var path=require(_0xad05('0x1'));var _=require('lodash');var juice=require(_0xad05('0x2'));var Redis=require('ioredis');var qs=require(_0xad05('0x3'));var logger=require(_0xad05('0x4'))(_0xad05('0x5'));var config=require(_0xad05('0x6'));var db=require(_0xad05('0x7'))['db'];config[_0xad05('0x8')]=_[_0xad05('0x9')](config[_0xad05('0x8')],{'host':_0xad05('0xa'),'port':0x18eb});var socket=require(_0xad05('0xb'))(new Redis(config['redis']));require('./mailAccount.socket')[_0xad05('0xc')](socket);var jayson=require(_0xad05('0xd'));var client=jayson[_0xad05('0xe')][_0xad05('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x316e2c,_0x349e22,_0x527891,_0x32824e){return new BPromise(function(_0x173049,_0x4f462b){var _0x98f611=_0x32824e||client;return _0x98f611['request'](_0x316e2c,_0x527891)['then'](function(_0xd7a053){logger[_0xad05('0x10')]('MailAccount,\x20%s,\x20%s',_0x349e22,'request\x20sent');logger[_0xad05('0x11')](_0xad05('0x12'),_0x349e22,'request\x20sent',JSON[_0xad05('0x13')](_0xd7a053));if(_0xd7a053[_0xad05('0x14')]){if(_0xd7a053['error'][_0xad05('0x15')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x349e22,_0xd7a053[_0xad05('0x14')]['message']);return _0x4f462b(_0xd7a053[_0xad05('0x14')][_0xad05('0x16')]);}logger[_0xad05('0x14')](_0xad05('0x17'),_0x349e22,_0xd7a053[_0xad05('0x14')][_0xad05('0x16')]);return _0x173049(_0xd7a053[_0xad05('0x14')][_0xad05('0x16')]);}else{logger[_0xad05('0x10')](_0xad05('0x17'),_0x349e22,_0xad05('0x18'));_0x173049(_0xd7a053[_0xad05('0x19')][_0xad05('0x16')]);}})['catch'](function(_0x19eec7){logger[_0xad05('0x14')](_0xad05('0x17'),_0x349e22,_0x19eec7);_0x4f462b(_0x19eec7);});});}function respondWithStatusCode(_0x430b84,_0x2e11ad){_0x2e11ad=_0x2e11ad||0xcc;return function(_0x4df616){if(_0x4df616){return _0x430b84[_0xad05('0x1a')](_0x2e11ad);}return _0x430b84['status'](_0x2e11ad)['end']();};}function respondWithResult(_0x4af119,_0x16ea06){_0x16ea06=_0x16ea06||0xc8;return function(_0x60eca8){if(_0x60eca8){return _0x4af119[_0xad05('0x1b')](_0x16ea06)['json'](_0x60eca8);}};}function respondWithFilteredResult(_0x3a7329,_0x36ee4c){return function(_0x1e7807){if(_0x1e7807){var _0x1134cf=typeof _0x36ee4c['offset']===_0xad05('0x1c')&&typeof _0x36ee4c['limit']===_0xad05('0x1c');var _0x3c2ccb=_0x1e7807[_0xad05('0x1d')];var _0x5d4c1a=_0x1134cf?0x0:_0x36ee4c[_0xad05('0x1e')];var _0x79cc00=_0x1134cf?_0x1e7807[_0xad05('0x1d')]:_0x36ee4c['offset']+_0x36ee4c['limit'];var _0x150245;if(_0x79cc00>=_0x3c2ccb){_0x79cc00=_0x3c2ccb;_0x150245=0xc8;}else{_0x150245=0xce;}_0x3a7329[_0xad05('0x1b')](_0x150245);return _0x3a7329[_0xad05('0x1f')]('Content-Range',_0x5d4c1a+'-'+_0x79cc00+'/'+_0x3c2ccb)[_0xad05('0x20')](_0x1e7807);}return null;};}function saveUpdates(_0x4617fb){return function(_0x185556){if(_0x185556){return _0x185556[_0xad05('0x21')](_0x4617fb)['then'](function(_0x342244){return _0x342244;});}return null;};}function removeEntity(_0x285d2b){return function(_0x37a700){if(_0x37a700){return _0x37a700[_0xad05('0x22')]()[_0xad05('0x23')](function(){var _0x1150de=_0x37a700[_0xad05('0x24')]({'plain':!![]});var _0x36bc3b=_0xad05('0x25');return db[_0xad05('0x26')][_0xad05('0x22')]({'where':{'type':_0x36bc3b,'resourceId':_0x1150de['id']}})[_0xad05('0x23')](function(){return _0x37a700;});})['then'](function(){_0x285d2b[_0xad05('0x1b')](0xcc)[_0xad05('0x27')]();});}};}function handleEntityNotFound(_0x30da32){return function(_0x2c592f){if(!_0x2c592f){_0x30da32[_0xad05('0x1a')](0x194);}return _0x2c592f;};}function handleError(_0x12935e,_0x122148){_0x122148=_0x122148||0x1f4;return function(_0x312e82){logger[_0xad05('0x14')](_0x312e82[_0xad05('0x28')]);if(_0x312e82[_0xad05('0x29')]){delete _0x312e82[_0xad05('0x29')];}_0x12935e['status'](_0x122148)[_0xad05('0x2a')](_0x312e82);};}function getImapHost(_0x17f780){switch(_0x17f780){case _0xad05('0x2b'):return _0xad05('0x2c');case _0xad05('0x2d'):return _0xad05('0x2e');case _0xad05('0x2f'):return _0xad05('0x30');case _0xad05('0x31'):return _0xad05('0x32');}throw new Error('Unknown\x20email\x20service\x20provider',_0x17f780);}function getSmtpHost(_0x1ea4ee){switch(_0x1ea4ee){case _0xad05('0x2b'):return _0xad05('0x33');case'yahoo':return _0xad05('0x34');case'hotmail':return _0xad05('0x35');case _0xad05('0x31'):return _0xad05('0x36');}throw new Error('Unknown\x20email\x20service\x20provider',_0x1ea4ee);}function getAuthenticationOptions(_0x458ca4,_0x4ddbc5){var _0x5b2c29={};var _0x516839={};if(_0x458ca4){_0x5b2c29[_0xad05('0x37')]=_0x516839['user']=_0x4ddbc5[_0xad05('0x38')];_0x5b2c29[_0xad05('0x39')]=_0x516839[_0xad05('0x3a')]=_0x4ddbc5[_0xad05('0x39')];if(_0x4ddbc5[_0xad05('0x3b')]){_0x5b2c29[_0xad05('0x3b')]=_0x516839[_0xad05('0x3b')]=!![];_0x5b2c29[_0xad05('0x3c')]=_0x516839[_0xad05('0x3c')]=_0x4ddbc5[_0xad05('0x3c')];_0x5b2c29['password']=_0x516839[_0xad05('0x3a')]=null;}else{_0x5b2c29[_0xad05('0x3c')]=_0x516839[_0xad05('0x3c')]=null;}_0x5b2c29[_0xad05('0x3d')]=getImapHost(_0x458ca4);_0x5b2c29[_0xad05('0x3e')]=0x3e1;_0x516839[_0xad05('0x3d')]=getSmtpHost(_0x458ca4);_0x516839[_0xad05('0x3e')]=0x24b;_0x516839[_0xad05('0x3f')]=![];_0x5b2c29['service']=_0x516839['service']=null;}else{if(_0x4ddbc5[_0xad05('0x40')]){_0x5b2c29[_0xad05('0x37')]=_0x516839[_0xad05('0x37')]=_0x4ddbc5[_0xad05('0x38')];_0x5b2c29[_0xad05('0x39')]=_0x516839[_0xad05('0x3a')]=_0x4ddbc5[_0xad05('0x39')];}else{_0x5b2c29[_0xad05('0x40')]=_0x516839[_0xad05('0x40')]=![];_0x5b2c29['user']=_0x516839[_0xad05('0x37')]=null;_0x5b2c29[_0xad05('0x39')]=_0x516839[_0xad05('0x3a')]=null;}_0x5b2c29['host']=_0x4ddbc5['Imap'][_0xad05('0x3d')];_0x5b2c29[_0xad05('0x3e')]=_0x4ddbc5[_0xad05('0x41')][_0xad05('0x3e')];_0x516839['host']=_0x4ddbc5[_0xad05('0x42')][_0xad05('0x3d')];_0x516839[_0xad05('0x3e')]=_0x4ddbc5[_0xad05('0x42')][_0xad05('0x3e')];}return{'Imap':_0x5b2c29,'Smtp':_0x516839};}exports['index']=function(_0x1c70a2,_0x167977){var _0xbf46e={'include':[{'model':db[_0xad05('0x43')],'as':_0xad05('0x41')},{'model':db[_0xad05('0x44')],'as':_0xad05('0x42')},{'model':db[_0xad05('0x45')],'as':'mandatoryDispositionPause'}]},_0x4da9de={},_0x388bb2={'count':0x0,'rows':[]};var _0x7e6fb6=_['map'](db[_0xad05('0x46')][_0xad05('0x47')],function(_0x30252c){return{'name':_0x30252c['fieldName'],'type':_0x30252c[_0xad05('0x48')][_0xad05('0x49')]};});_0x4da9de['model']=_[_0xad05('0x4a')](_0x7e6fb6,_0xad05('0x29'));_0x4da9de[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x1c70a2[_0xad05('0x4b')]);_0x4da9de[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x4da9de['model'],_0x4da9de[_0xad05('0x4b')]);_0xbf46e[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x4da9de['model'],qs['fields'](_0x1c70a2[_0xad05('0x4b')]['fields']));_0xbf46e[_0xad05('0x4f')]=_0xbf46e[_0xad05('0x4f')][_0xad05('0x50')]?_0xbf46e[_0xad05('0x4f')]:_0x4da9de[_0xad05('0x51')];if(!_0x1c70a2[_0xad05('0x4b')][_0xad05('0x52')]('nolimit')){_0xbf46e[_0xad05('0x53')]=qs[_0xad05('0x53')](_0x1c70a2[_0xad05('0x4b')][_0xad05('0x53')]);_0xbf46e[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x1c70a2[_0xad05('0x4b')][_0xad05('0x1e')]);}_0xbf46e[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x1c70a2[_0xad05('0x4b')][_0xad05('0x55')]);_0xbf46e['where']=qs['filters'](_[_0xad05('0x56')](_0x1c70a2[_0xad05('0x4b')],_0x4da9de['filters']),_0x7e6fb6);if(_0x1c70a2[_0xad05('0x4b')][_0xad05('0x57')]){_0xbf46e[_0xad05('0x58')]=_['merge'](_0xbf46e[_0xad05('0x58')],{'$or':_['map'](_0x7e6fb6,function(_0x708015){if(_0x708015[_0xad05('0x48')]!==_0xad05('0x59')){var _0x5d7bd1={};_0x5d7bd1[_0x708015['name']]={'$like':'%'+_0x1c70a2[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x5d7bd1;}})});}_0xbf46e=_[_0xad05('0x5a')]({},_0xbf46e,_0x1c70a2[_0xad05('0x5b')]);var _0x6d044b={'where':_0xbf46e[_0xad05('0x58')]};return db[_0xad05('0x46')][_0xad05('0x1d')](_0x6d044b)['then'](function(_0x48d232){_0x388bb2[_0xad05('0x1d')]=_0x48d232;if(_0x1c70a2[_0xad05('0x4b')][_0xad05('0x5c')]){_0xbf46e[_0xad05('0x5d')]=[{'all':!![]}];}return db[_0xad05('0x46')][_0xad05('0x5e')](_0xbf46e);})['then'](function(_0x3b19b9){_0x388bb2[_0xad05('0x5f')]=_0x3b19b9;return _0x388bb2;})['then'](respondWithFilteredResult(_0x167977,_0xbf46e))[_0xad05('0x60')](handleError(_0x167977,null));};exports[_0xad05('0x61')]=function(_0x321a03,_0x5270eb){var _0x674a1a={'raw':![],'where':{'id':_0x321a03['params']['id']},'include':[{'model':db['MailServerIn'],'as':_0xad05('0x41')},{'model':db[_0xad05('0x44')],'as':_0xad05('0x42')},{'model':db[_0xad05('0x45')],'as':_0xad05('0x62')}]},_0x179708={};_0x179708['model']=_[_0xad05('0x4c')](db[_0xad05('0x46')]['rawAttributes']);_0x179708[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x321a03[_0xad05('0x4b')]);_0x179708[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x179708[_0xad05('0x51')],_0x179708[_0xad05('0x4b')]);_0x674a1a[_0xad05('0x4f')]=_['intersection'](_0x179708['model'],qs[_0xad05('0x63')](_0x321a03[_0xad05('0x4b')][_0xad05('0x63')]));_0x674a1a[_0xad05('0x4f')]=_0x674a1a[_0xad05('0x4f')][_0xad05('0x50')]?_0x674a1a[_0xad05('0x4f')]:_0x179708['model'];if(_0x321a03[_0xad05('0x4b')][_0xad05('0x5c')]){_0x674a1a[_0xad05('0x5d')]=[{'all':!![]}];}_0x674a1a=_['merge']({},_0x674a1a,_0x321a03['options']);return db[_0xad05('0x46')][_0xad05('0x64')](_0x674a1a)['then'](handleEntityNotFound(_0x5270eb,null))['then'](respondWithResult(_0x5270eb,null))[_0xad05('0x60')](handleError(_0x5270eb,null));};exports[_0xad05('0x21')]=function(_0x304697,_0x2e324d){if(_0x304697[_0xad05('0x65')]['id']){delete _0x304697['body']['id'];}var _0xfc3c1f=_0x304697['body'][_0xad05('0x66')]===_0xad05('0x67')?null:_0x304697[_0xad05('0x65')][_0xad05('0x66')];var _0x2f084f=_0x304697[_0xad05('0x65')]['Imap']||{};var _0x243650=_0x304697[_0xad05('0x65')]['Smtp']||{};if(_0xfc3c1f){_0x2f084f[_0xad05('0x3d')]=getImapHost(_0xfc3c1f);_0x2f084f[_0xad05('0x3e')]=0x3e1;_0x243650[_0xad05('0x3d')]=getSmtpHost(_0xfc3c1f);_0x243650[_0xad05('0x3e')]=0x24b;_0x243650[_0xad05('0x3f')]=![];}if(_0x243650[_0xad05('0x3b')]){_0x243650[_0xad05('0x3f')]=![];}else{_0x243650[_0xad05('0x3c')]=null;}if(!_0x2f084f[_0xad05('0x3b')])_0x2f084f[_0xad05('0x3c')]=null;_0x304697['body'][_0xad05('0x41')]=_0x2f084f;_0x304697[_0xad05('0x65')][_0xad05('0x42')]=_0x243650;return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x304697['params']['id']},'include':[{'model':db[_0xad05('0x43')],'as':_0xad05('0x41')},{'model':db[_0xad05('0x44')],'as':'Smtp'},{'model':db[_0xad05('0x45')],'as':_0xad05('0x62')}]})[_0xad05('0x23')](handleEntityNotFound(_0x2e324d,null))[_0xad05('0x23')](function(_0x5e4aa4){if(!_0x5e4aa4)throw new Error(_0xad05('0x68'));if(_0x5e4aa4[_0xad05('0x69')])delete _0x304697[_0xad05('0x65')][_0xad05('0x41')];return _0x5e4aa4;})['then'](saveUpdates(_0x304697[_0xad05('0x65')],null))[_0xad05('0x23')](function(_0x170de3){if(!_0x304697['body'][_0xad05('0x41')])return _0x170de3;return db[_0xad05('0x43')][_0xad05('0x21')](_0x304697[_0xad05('0x65')][_0xad05('0x41')],{'where':{'MailAccountId':_0x170de3['id']}})['then'](function(){return _0x170de3;});})['then'](function(_0x2ccbfc){if(!_0x304697[_0xad05('0x65')][_0xad05('0x42')])return _0x2ccbfc;return db[_0xad05('0x44')][_0xad05('0x21')](_0x304697[_0xad05('0x65')][_0xad05('0x42')],{'where':{'MailAccountId':_0x2ccbfc['id']}})[_0xad05('0x23')](function(){return _0x2ccbfc;});})[_0xad05('0x23')](respondWithResult(_0x2e324d,null))['catch'](handleError(_0x2e324d,null));};exports[_0xad05('0x6a')]=function(_0x2b306f,_0x17eb07){return db['MailAccount'][_0xad05('0x6a')]()[_0xad05('0x23')](respondWithResult(_0x17eb07,null))['catch'](handleError(_0x17eb07,null));};exports['addDisposition']=function(_0x523c65,_0x9a9809){if(_0x523c65['body']['id']){delete _0x523c65[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x523c65[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x9a9809,null))['then'](function(_0x1ea931){if(_0x1ea931){_0x523c65['body']['MailAccountId']=_0x1ea931['id'];return db[_0xad05('0x6c')][_0xad05('0x6d')](_0x523c65[_0xad05('0x65')]);}})['then'](respondWithResult(_0x9a9809,null))[_0xad05('0x60')](handleError(_0x9a9809,null));};exports[_0xad05('0x6e')]=function(_0x2ea120,_0xbfb93f){var _0xdc9248={'raw':![],'where':{}};var _0x30ea83={};var _0x3b52a0={'count':0x0,'rows':[]};return db[_0xad05('0x46')]['findOne']({'where':{'id':_0x2ea120[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0xbfb93f,null))[_0xad05('0x23')](function(_0xd683e8){if(_0xd683e8){_0x30ea83[_0xad05('0x51')]=_['keys'](db['Disposition']['rawAttributes']);_0x30ea83[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x2ea120[_0xad05('0x4b')]);_0x30ea83['filters']=_[_0xad05('0x4e')](_0x30ea83[_0xad05('0x51')],_0x30ea83['query']);_0xdc9248[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x30ea83[_0xad05('0x51')],qs['fields'](_0x2ea120[_0xad05('0x4b')][_0xad05('0x63')]));_0xdc9248['attributes']=_0xdc9248['attributes'][_0xad05('0x50')]?_0xdc9248[_0xad05('0x4f')]:_0x30ea83[_0xad05('0x51')];if(!_0x2ea120['query'][_0xad05('0x52')]('nolimit')){_0xdc9248[_0xad05('0x53')]=qs['limit'](_0x2ea120[_0xad05('0x4b')][_0xad05('0x53')]);_0xdc9248[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x2ea120[_0xad05('0x4b')][_0xad05('0x1e')]);}_0xdc9248[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x2ea120[_0xad05('0x4b')][_0xad05('0x55')]);_0xdc9248[_0xad05('0x58')]=qs[_0xad05('0x4d')](_['pick'](_0x2ea120[_0xad05('0x4b')],_0x30ea83[_0xad05('0x4d')]));_0xdc9248[_0xad05('0x58')][_0xad05('0x6f')]=_0xd683e8['id'];if(_0x2ea120[_0xad05('0x4b')][_0xad05('0x57')]){_0xdc9248[_0xad05('0x58')]=_[_0xad05('0x5a')](_0xdc9248[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0xdc9248[_0xad05('0x4f')],function(_0xd30fd7){var _0x275d06={};_0x275d06[_0xd30fd7]={'$like':'%'+_0x2ea120[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x275d06;})});}_0xdc9248=_['merge']({},_0xdc9248,_0x2ea120[_0xad05('0x5b')]);return db[_0xad05('0x6c')][_0xad05('0x1d')]({'where':_0xdc9248[_0xad05('0x58')]})['then'](function(_0x1aea00){_0x3b52a0['count']=_0x1aea00;if(_0x2ea120[_0xad05('0x4b')]['includeAll']){_0xdc9248[_0xad05('0x5d')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0xdc9248);})[_0xad05('0x23')](function(_0x43bba9){_0x3b52a0[_0xad05('0x5f')]=_0x43bba9;return _0x3b52a0;});}})[_0xad05('0x23')](respondWithFilteredResult(_0xbfb93f,_0xdc9248))[_0xad05('0x60')](handleError(_0xbfb93f,null));};exports[_0xad05('0x70')]=function(_0x116a4a,_0x42732d){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x116a4a[_0xad05('0x6b')]['id']}})['then'](handleEntityNotFound(_0x42732d,null))[_0xad05('0x23')](function(_0x54e54e){if(_0x54e54e){return _0x54e54e['removeDispositions'](_0x116a4a[_0xad05('0x4b')][_0xad05('0x71')]);}})[_0xad05('0x23')](respondWithStatusCode(_0x42732d,null))[_0xad05('0x60')](handleError(_0x42732d,null));};exports['addAnswer']=function(_0xc733a5,_0x1d57c6){if(_0xc733a5[_0xad05('0x65')]['id']){delete _0xc733a5[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')]['find']({'where':{'id':_0xc733a5[_0xad05('0x6b')]['id']}})['then'](handleEntityNotFound(_0x1d57c6,null))[_0xad05('0x23')](function(_0x4cfd49){if(_0x4cfd49){_0xc733a5[_0xad05('0x65')][_0xad05('0x6f')]=_0x4cfd49['id'];return db[_0xad05('0x72')]['create'](_0xc733a5[_0xad05('0x65')]);}})[_0xad05('0x23')](respondWithResult(_0x1d57c6,null))['catch'](handleError(_0x1d57c6,null));};exports[_0xad05('0x73')]=function(_0x560281,_0x222799){var _0x426fe8={'raw':![],'where':{}};var _0x31c725={};var _0x2860e4={'count':0x0,'rows':[]};return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x560281[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x222799,null))[_0xad05('0x23')](function(_0xca97c9){if(_0xca97c9){_0x31c725['model']=_['keys'](db[_0xad05('0x72')][_0xad05('0x47')]);_0x31c725[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x560281['query']);_0x31c725[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x31c725['model'],_0x31c725[_0xad05('0x4b')]);_0x426fe8[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x31c725[_0xad05('0x51')],qs[_0xad05('0x63')](_0x560281['query'][_0xad05('0x63')]));_0x426fe8[_0xad05('0x4f')]=_0x426fe8[_0xad05('0x4f')][_0xad05('0x50')]?_0x426fe8[_0xad05('0x4f')]:_0x31c725['model'];if(!_0x560281[_0xad05('0x4b')][_0xad05('0x52')](_0xad05('0x75'))){_0x426fe8[_0xad05('0x53')]=qs['limit'](_0x560281[_0xad05('0x4b')][_0xad05('0x53')]);_0x426fe8[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x560281[_0xad05('0x4b')]['offset']);}_0x426fe8[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x560281[_0xad05('0x4b')][_0xad05('0x55')]);_0x426fe8[_0xad05('0x58')]=qs[_0xad05('0x4d')](_[_0xad05('0x56')](_0x560281[_0xad05('0x4b')],_0x31c725['filters']));_0x426fe8[_0xad05('0x58')][_0xad05('0x6f')]=_0xca97c9['id'];if(_0x560281['query'][_0xad05('0x57')]){_0x426fe8[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x426fe8[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x426fe8[_0xad05('0x4f')],function(_0x406dd5){var _0x2098b3={};_0x2098b3[_0x406dd5]={'$like':'%'+_0x560281['query'][_0xad05('0x57')]+'%'};return _0x2098b3;})});}_0x426fe8=_[_0xad05('0x5a')]({},_0x426fe8,_0x560281[_0xad05('0x5b')]);return db[_0xad05('0x72')][_0xad05('0x1d')]({'where':_0x426fe8[_0xad05('0x58')]})['then'](function(_0x43fbc2){_0x2860e4['count']=_0x43fbc2;if(_0x560281['query'][_0xad05('0x5c')]){_0x426fe8[_0xad05('0x5d')]=[{'all':!![]}];}return db[_0xad05('0x72')][_0xad05('0x5e')](_0x426fe8);})[_0xad05('0x23')](function(_0x3207d6){_0x2860e4[_0xad05('0x5f')]=_0x3207d6;return _0x2860e4;});}})[_0xad05('0x23')](respondWithFilteredResult(_0x222799,_0x426fe8))[_0xad05('0x60')](handleError(_0x222799,null));};exports['removeAnswers']=function(_0xd84042,_0x45aee0){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0xd84042[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x45aee0,null))[_0xad05('0x23')](function(_0x342d6d){if(_0x342d6d){return _0x342d6d[_0xad05('0x76')](_0xd84042[_0xad05('0x4b')][_0xad05('0x71')]);}})[_0xad05('0x23')](respondWithStatusCode(_0x45aee0,null))[_0xad05('0x60')](handleError(_0x45aee0,null));};exports[_0xad05('0x6d')]=function(_0x109d1a,_0x5bb416){var _0x57aa01={'name':_0x109d1a['body'][_0xad05('0x29')],'key':_0x109d1a[_0xad05('0x65')][_0xad05('0x49')],'provider':_0x109d1a[_0xad05('0x65')]['provider']===_0xad05('0x67')?null:_0x109d1a[_0xad05('0x65')][_0xad05('0x66')],'email':_0x109d1a[_0xad05('0x65')][_0xad05('0x77')],'ListId':_0x109d1a[_0xad05('0x65')][_0xad05('0x78')],'active':!_['isNil'](_0x109d1a[_0xad05('0x65')][_0xad05('0x79')])?_0x109d1a['body'][_0xad05('0x79')]:!![],'description':_0x109d1a[_0xad05('0x65')][_0xad05('0x7a')]||null};var _0x5782e9=getAuthenticationOptions(_0x57aa01[_0xad05('0x66')],_0x109d1a[_0xad05('0x65')]);_0x57aa01[_0xad05('0x41')]=_0x5782e9[_0xad05('0x41')];_0x57aa01[_0xad05('0x42')]=_0x5782e9[_0xad05('0x42')];return db['MailAccount'][_0xad05('0x6d')](_0x57aa01,{'include':[{'model':db[_0xad05('0x44')],'as':_0xad05('0x42')},{'model':db['MailServerIn'],'as':_0xad05('0x41')}]})[_0xad05('0x23')](function(_0x3ae28e){var _0x45f32a=_0x109d1a[_0xad05('0x37')][_0xad05('0x24')]({'plain':!![]});if(!_0x45f32a)throw new Error(_0xad05('0x7b'));if(_0x45f32a[_0xad05('0x7c')]===_0xad05('0x37')){var _0x39c33f=_0x3ae28e['get']({'plain':!![]});return db[_0xad05('0x7d')][_0xad05('0x64')]({'where':{'name':_0xad05('0x25'),'userProfileId':_0x45f32a[_0xad05('0x7e')]},'raw':!![]})['then'](function(_0xec4754){if(_0xec4754&&_0xec4754['autoAssociation']===0x0){return db[_0xad05('0x26')][_0xad05('0x6d')]({'name':_0x39c33f['name'],'resourceId':_0x39c33f['id'],'type':_0xec4754[_0xad05('0x29')],'sectionId':_0xec4754['id']},{})[_0xad05('0x23')](function(){return _0x3ae28e;});}else{return _0x3ae28e;}})[_0xad05('0x60')](function(_0x17da81){logger[_0xad05('0x14')](_0xad05('0x7f'),_0x17da81);throw _0x17da81;});}return _0x3ae28e;})['then'](respondWithResult(_0x5bb416,0xc9))[_0xad05('0x60')](handleError(_0x5bb416,null));};exports[_0xad05('0x80')]=function(_0x778bae,_0x5898a9){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x778bae[_0xad05('0x6b')]['id']}})['then'](handleEntityNotFound(_0x5898a9,null))['then'](function(_0x56fe3c){if(_0x56fe3c){return _0x56fe3c[_0xad05('0x80')]();}return null;})[_0xad05('0x23')](respondWithResult(_0x5898a9,null))[_0xad05('0x60')](handleError(_0x5898a9,null));};exports[_0xad05('0x81')]=function(_0x4aa5a5,_0x4c15b6){if(_0x4aa5a5['body']['id']){delete _0x4aa5a5[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x4aa5a5['params']['id']}})['then'](handleEntityNotFound(_0x4c15b6,null))[_0xad05('0x23')](function(_0x53efee){if(_0x53efee){_0x4aa5a5[_0xad05('0x65')][_0xad05('0x6f')]=_0x53efee['id'];return db[_0xad05('0x43')][_0xad05('0x6d')](_0x4aa5a5[_0xad05('0x65')]);}})[_0xad05('0x23')](respondWithResult(_0x4c15b6,null))[_0xad05('0x60')](handleError(_0x4c15b6,null));};exports[_0xad05('0x82')]=function(_0x2261d3,_0x4d9696){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x2261d3[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x4d9696,null))[_0xad05('0x23')](function(_0x37653d){if(_0x37653d){return _0x37653d[_0xad05('0x83')](null);}return null;})[_0xad05('0x23')](respondWithStatusCode(_0x4d9696,null))[_0xad05('0x60')](handleError(_0x4d9696,null));};exports[_0xad05('0x84')]=function(_0x4a6643,_0x1a6c4a){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x4a6643['params']['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x1a6c4a,null))[_0xad05('0x23')](function(_0x2ba3d2){if(_0x2ba3d2){return _0x2ba3d2[_0xad05('0x84')]();}return null;})[_0xad05('0x23')](respondWithResult(_0x1a6c4a,null))[_0xad05('0x60')](handleError(_0x1a6c4a,null));};exports[_0xad05('0x85')]=function(_0x39beea,_0x3ffd7c){if(_0x39beea[_0xad05('0x65')]['id']){delete _0x39beea[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')]['find']({'where':{'id':_0x39beea[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x3ffd7c,null))['then'](function(_0x49011b){if(_0x49011b){_0x39beea[_0xad05('0x65')][_0xad05('0x6f')]=_0x49011b['id'];return db[_0xad05('0x44')]['create'](_0x39beea[_0xad05('0x65')]);}})['then'](respondWithResult(_0x3ffd7c,null))['catch'](handleError(_0x3ffd7c,null));};exports[_0xad05('0x86')]=function(_0x401115,_0x341949){return db['MailAccount'][_0xad05('0x74')]({'where':{'id':_0x401115[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x341949,null))[_0xad05('0x23')](function(_0x44764f){if(_0x44764f){return _0x44764f['setSmtp'](null);}return null;})[_0xad05('0x23')](respondWithStatusCode(_0x341949,null))[_0xad05('0x60')](handleError(_0x341949,null));};exports[_0xad05('0x87')]=function(_0x384f08,_0x5fd106){return db[_0xad05('0x88')][_0xad05('0x64')]({'where':{'id':_0x384f08['params']['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x5fd106,null))[_0xad05('0x23')](function(_0xce7a95){if(_0xce7a95){return _0xce7a95[_0xad05('0x87')](_0x384f08['body'][_0xad05('0x71')],_[_0xad05('0x89')](_0x384f08[_0xad05('0x65')],[_0xad05('0x71'),'id'])||{});}})[_0xad05('0x23')](respondWithResult(_0x5fd106,null))['catch'](handleError(_0x5fd106,null));};exports['getInteractions']=function(_0x41967a,_0x248f5a){var _0x32813c={'raw':![],'where':{}};var _0xfc2fdc={};var _0x8272c4={'count':0x0,'rows':[]};return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x41967a['params']['id']}})['then'](handleEntityNotFound(_0x248f5a,null))['then'](function(_0x280094){if(_0x280094){_0xfc2fdc[_0xad05('0x51')]=_[_0xad05('0x4c')](db[_0xad05('0x88')][_0xad05('0x47')]);_0xfc2fdc[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x41967a[_0xad05('0x4b')]);_0xfc2fdc[_0xad05('0x4d')]=_['intersection'](_0xfc2fdc[_0xad05('0x51')],_0xfc2fdc[_0xad05('0x4b')]);_0x32813c[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0xfc2fdc[_0xad05('0x51')],qs[_0xad05('0x63')](_0x41967a[_0xad05('0x4b')]['fields']));_0x32813c['attributes']=_0x32813c[_0xad05('0x4f')]['length']?_0x32813c[_0xad05('0x4f')]:_0xfc2fdc[_0xad05('0x51')];if(!_0x41967a['query']['hasOwnProperty'](_0xad05('0x75'))){_0x32813c[_0xad05('0x53')]=qs['limit'](_0x41967a[_0xad05('0x4b')][_0xad05('0x53')]);_0x32813c[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x41967a[_0xad05('0x4b')][_0xad05('0x1e')]);}_0x32813c[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x41967a['query'][_0xad05('0x55')]);_0x32813c[_0xad05('0x58')]=qs[_0xad05('0x4d')](_[_0xad05('0x56')](_0x41967a[_0xad05('0x4b')],_0xfc2fdc['filters']));_0x32813c[_0xad05('0x58')][_0xad05('0x6f')]=_0x280094['id'];if(_0x41967a['query'][_0xad05('0x57')]){_0x32813c[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x32813c[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x32813c[_0xad05('0x4f')],function(_0x1682d6){var _0x5b4959={};_0x5b4959[_0x1682d6]={'$like':'%'+_0x41967a[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x5b4959;})});}_0x32813c=_[_0xad05('0x5a')]({},_0x32813c,_0x41967a[_0xad05('0x5b')]);return db[_0xad05('0x88')][_0xad05('0x1d')]({'where':_0x32813c[_0xad05('0x58')]})[_0xad05('0x23')](function(_0x4f1192){_0x8272c4[_0xad05('0x1d')]=_0x4f1192;if(_0x41967a['query'][_0xad05('0x5c')]){_0x32813c[_0xad05('0x5d')]=[{'model':db[_0xad05('0x8a')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xad05('0x8b'),'attributes':['name','fullname',_0xad05('0x8c')],'required':![]},{'model':db[_0xad05('0x8d')],'as':_0xad05('0x8e'),'attributes':['id','name',_0xad05('0x8f')],'where':_0x41967a['query'][_0xad05('0x90')]?{'id':_0x41967a['query'][_0xad05('0x90')]}:undefined,'required':_0x41967a['query'][_0xad05('0x90')]?!![]:![]}];}return db[_0xad05('0x88')][_0xad05('0x5e')](_0x32813c);})[_0xad05('0x23')](function(_0x594263){_0x8272c4[_0xad05('0x5f')]=_0x594263;return _0x8272c4;});}})[_0xad05('0x23')](respondWithFilteredResult(_0x248f5a,_0x32813c))[_0xad05('0x60')](handleError(_0x248f5a,null));};exports[_0xad05('0x91')]=function addApplications(_0xb5c06,_0x2c8fb9){var _0x1e9e0f=_0xb5c06[_0xad05('0x6b')]['id'];var _0x22b8a8=_0xb5c06[_0xad05('0x65')];var _0xd88e98=0xc8;var _0x29351d=null;return db[_0xad05('0x92')]['transaction']({'isolationLevel':db[_0xad05('0x92')]['Transaction'][_0xad05('0x93')]['READ_COMMITTED']},function(_0x4831f2){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x1e9e0f},'transaction':_0x4831f2})['then'](function(_0x517acb){if(_0x517acb){return db[_0xad05('0x94')][_0xad05('0x22')]({'where':{'MailAccountId':_0x1e9e0f},'transaction':_0x4831f2})['then'](function(){var _0x6ee337=_[_0xad05('0x4a')](_0x22b8a8,function(_0x3b3f95){_0x3b3f95[_0xad05('0x6f')]=_0x1e9e0f;return _0x3b3f95;});return db['MailApplication']['bulkCreate'](_0x6ee337,{'transaction':_0x4831f2});});}else{_0xd88e98=0x194;_0x29351d=[];}});})[_0xad05('0x23')](function(){if(_0xd88e98!==0x194){return db[_0xad05('0x94')]['findAndCountAll']({'where':{'MailAccountId':_0x1e9e0f},'order':_0xad05('0x95')})['then'](function(_0x520ebc){_0x29351d=_0x520ebc;});}})[_0xad05('0x60')](function(_0x2c0d96){_0xd88e98=0x1f4;logger[_0xad05('0x14')](_0x2c0d96['stack']);if(_0x2c0d96[_0xad05('0x29')]){delete _0x2c0d96[_0xad05('0x29')];}_0x29351d=_0x2c0d96;})[_0xad05('0x96')](function(){if(_0x29351d===null){_0x2c8fb9[_0xad05('0x1a')](_0xd88e98);}else{if(_0xd88e98===0x1f4){_0x2c8fb9[_0xad05('0x1b')](_0xd88e98)[_0xad05('0x2a')](_0x29351d);}else{_0x2c8fb9[_0xad05('0x1b')](_0xd88e98)[_0xad05('0x20')](_0x29351d);}}});};exports[_0xad05('0x97')]=function(_0x13dbc9,_0x49ac87){var _0x27fe31={};var _0x585718={};var _0x490a90;var _0x3207dc;return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x13dbc9[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x49ac87,null))['then'](function(_0x1bc8d5){if(_0x1bc8d5){_0x490a90=_0x1bc8d5;_0x585718[_0xad05('0x51')]=_[_0xad05('0x4c')](db[_0xad05('0x94')][_0xad05('0x47')]);_0x585718[_0xad05('0x4b')]=_['keys'](_0x13dbc9['query']);_0x585718[_0xad05('0x4d')]=_['intersection'](_0x585718['model'],_0x585718[_0xad05('0x4b')]);_0x27fe31[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x585718[_0xad05('0x51')],qs[_0xad05('0x63')](_0x13dbc9[_0xad05('0x4b')][_0xad05('0x63')]));_0x27fe31[_0xad05('0x4f')]=_0x27fe31['attributes']['length']?_0x27fe31['attributes']:_0x585718[_0xad05('0x51')];_0x27fe31['order']=qs[_0xad05('0x55')](_0x13dbc9['query'][_0xad05('0x55')]);_0x27fe31[_0xad05('0x58')]=qs[_0xad05('0x4d')](_['pick'](_0x13dbc9[_0xad05('0x4b')],_0x585718[_0xad05('0x4d')]));if(_0x13dbc9[_0xad05('0x4b')][_0xad05('0x57')]){_0x27fe31['where']=_[_0xad05('0x5a')](_0x27fe31[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x27fe31[_0xad05('0x4f')],function(_0x37a384){var _0x28a25b={};_0x28a25b[_0x37a384]={'$like':'%'+_0x13dbc9[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x28a25b;})});}_0x27fe31=_[_0xad05('0x5a')]({},_0x27fe31,_0x13dbc9['options']);return _0x490a90[_0xad05('0x97')](_0x27fe31);}})[_0xad05('0x23')](function(_0x116f51){if(_0x116f51){_0x3207dc=_0x116f51[_0xad05('0x50')];if(!_0x13dbc9[_0xad05('0x4b')][_0xad05('0x52')]('nolimit')){_0x27fe31['limit']=qs[_0xad05('0x53')](_0x13dbc9[_0xad05('0x4b')][_0xad05('0x53')]);_0x27fe31['offset']=qs[_0xad05('0x1e')](_0x13dbc9['query'][_0xad05('0x1e')]);}return _0x490a90[_0xad05('0x97')](_0x27fe31);}})[_0xad05('0x23')](function(_0x15e395){if(_0x15e395){return _0x15e395?{'count':_0x3207dc,'rows':_0x15e395}:null;}})['then'](respondWithResult(_0x49ac87,null))[_0xad05('0x60')](handleError(_0x49ac87,null));};exports[_0xad05('0x98')]=function(_0x45cba2,_0x4993b2){var _0x46e6a8={'raw':!![],'where':{}};var _0x1b4fc9={};var _0x329e99={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x45cba2[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x4993b2,null))[_0xad05('0x23')](function(_0x18dc5e){if(_0x18dc5e){_0x1b4fc9[_0xad05('0x51')]=_['keys'](db[_0xad05('0x99')][_0xad05('0x47')]);_0x1b4fc9['query']=_[_0xad05('0x4c')](_0x45cba2[_0xad05('0x4b')]);_0x1b4fc9[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x1b4fc9[_0xad05('0x51')],_0x1b4fc9[_0xad05('0x4b')]);_0x46e6a8['attributes']=_[_0xad05('0x4e')](_0x1b4fc9[_0xad05('0x51')],qs[_0xad05('0x63')](_0x45cba2[_0xad05('0x4b')][_0xad05('0x63')]));_0x46e6a8[_0xad05('0x4f')]=_0x46e6a8[_0xad05('0x4f')][_0xad05('0x50')]?_0x46e6a8[_0xad05('0x4f')]:_0x1b4fc9[_0xad05('0x51')];if(!_0x45cba2[_0xad05('0x4b')][_0xad05('0x52')](_0xad05('0x75'))){_0x46e6a8[_0xad05('0x53')]=qs[_0xad05('0x53')](_0x45cba2[_0xad05('0x4b')][_0xad05('0x53')]);_0x46e6a8[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x45cba2[_0xad05('0x4b')][_0xad05('0x1e')]);}_0x46e6a8['order']=qs['sort'](_0x45cba2['query'][_0xad05('0x55')]);_0x46e6a8['where']=qs[_0xad05('0x4d')](_[_0xad05('0x56')](_0x45cba2[_0xad05('0x4b')],_0x1b4fc9[_0xad05('0x4d')]));_0x46e6a8['where'][_0xad05('0x6f')]=_0x18dc5e['id'];if(_0x45cba2[_0xad05('0x4b')][_0xad05('0x57')]){_0x46e6a8[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x46e6a8[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x46e6a8[_0xad05('0x4f')],function(_0x6c4da7){var _0x2e96a2={};_0x2e96a2[_0x6c4da7]={'$like':'%'+_0x45cba2[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x2e96a2;})});}if(_0x45cba2[_0xad05('0x4b')][_0xad05('0x9a')]){var _0x173d48=_0x45cba2['query']['$gte'][_0xad05('0x9b')](',');var _0x1af9fb={};_0x1af9fb[_0x173d48[0x0]]={'$gte':moment(_0x173d48[0x1])[_0xad05('0x9c')]('YYYY-MM-DD\x20HH:mm:ss')};_0x46e6a8['where']=_['merge'](_0x46e6a8['where'],_0x1af9fb);}_0x46e6a8=_['merge']({},_0x46e6a8,_0x45cba2[_0xad05('0x5b')]);return db[_0xad05('0x99')][_0xad05('0x1d')]({'where':_0x46e6a8['where']})[_0xad05('0x23')](function(_0x321546){_0x329e99[_0xad05('0x1d')]=_0x321546;if(_0x45cba2[_0xad05('0x4b')]['includeAll']){_0x46e6a8[_0xad05('0x5d')]=[{'all':!![]}];}return db[_0xad05('0x99')][_0xad05('0x5e')](_0x46e6a8);})[_0xad05('0x23')](function(_0x561b01){if(_0x45cba2[_0xad05('0x4b')][_0xad05('0x9d')]==='true'){for(var _0x122fcc=0x0;_0x122fcc<_0x561b01[_0xad05('0x50')];_0x122fcc++){_0x561b01[_0x122fcc][_0xad05('0x65')]=juice(_0x561b01[_0x122fcc][_0xad05('0x65')]);}}_0x329e99[_0xad05('0x5f')]=_0x561b01;return _0x329e99;});}})['then'](respondWithFilteredResult(_0x4993b2,_0x46e6a8))[_0xad05('0x60')](handleError(_0x4993b2,null));};exports['send']=function(_0x4e55ea,_0x326612){var _0xebe1c6,_0x27b4cf={},_0x55e54a;if(_0x4e55ea[_0xad05('0x65')]['to']){_0x55e54a=_0x4e55ea['body']['to']['split'](',')[0x0];}return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x4e55ea[_0xad05('0x6b')]['id']},'include':[{'model':db['CmList'],'as':_0xad05('0x9e'),'include':[{'model':db[_0xad05('0x8a')],'as':_0xad05('0x9f'),'where':{'email':_0x55e54a},'limit':0x1,'order':[['updatedAt',_0xad05('0xa0')]]}]},{'model':db[_0xad05('0x44')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xad05('0xa1')],'as':_0xad05('0xa1'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x326612,null))['then'](function(_0x433f29){if(!_0x433f29)return;_0xebe1c6=_0x433f29;if(!_0x433f29['Smtp'])throw new Error(_0xad05('0xa2'));if(_[_0xad05('0xa3')](_0x4e55ea['body']['from'])){_0x4e55ea['body']['from']=util[_0xad05('0x9c')]('%s\x20<%s>',_0x433f29['name'],_0x433f29[_0xad05('0x77')]||_0x433f29['Smtp'][_0xad05('0x37')]);}if(_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')]&&_0x4e55ea['body']['attachments'][_0xad05('0x50')]){for(var _0xf9fadb=0x0;_0xf9fadb<_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')][_0xad05('0x50')];_0xf9fadb+=0x1){_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')][_0xf9fadb]={'filename':_0x4e55ea['body']['attachments'][_0xf9fadb][_0xad05('0x29')],'path':path[_0xad05('0xa5')](config[_0xad05('0xa6')],_0xad05('0xa7'),_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')][_0xf9fadb][_0xad05('0xa8')])};}}var _0x3bd7fb=_0x433f29[_0xad05('0xa9')]();return respondWithRpcPromise(_0xad05('0xaa'),'sendMail',{'account':_0x3bd7fb,'message':_0x4e55ea[_0xad05('0x65')]});})[_0xad05('0x23')](function(_0x15b2fa){if(!_0x15b2fa)return;_0x27b4cf=_0x15b2fa;if(!_0xebe1c6[_0xad05('0x9e')])throw new Error('List\x20not\x20found');if(_0xebe1c6['List'][_0xad05('0x9f')][_0xad05('0x50')])return _0xebe1c6[_0xad05('0x9e')][_0xad05('0x9f')][0x0];return db['CmContact'][_0xad05('0x6d')](_[_0xad05('0x9')](_0x4e55ea[_0xad05('0x65')],{'firstName':_0x4e55ea[_0xad05('0x65')]['to'],'email':_0x4e55ea[_0xad05('0x65')]['to'],'phone':_0x4e55ea[_0xad05('0x65')]['to'],'ListId':_0xebe1c6[_0xad05('0x78')]}));})[_0xad05('0x23')](function(_0x22eeb2){if(!_0x22eeb2)return;var _0x4d3e2c={'UserId':_0x4e55ea[_0xad05('0x37')]['id'],'ContactId':_0x22eeb2['id'],'MailAccountId':_0xebe1c6['id'],'inReplyTo':_0x27b4cf[_0xad05('0xab')],'to':_0x4e55ea['body'][_0xad05('0xac')],'cc':_0x4e55ea[_0xad05('0x65')]['cc'],'subject':_0x4e55ea[_0xad05('0x65')][_0xad05('0xad')],'attach':_0x4e55ea[_0xad05('0x65')]['attach'],'firstMsgDirection':_0xad05('0xae'),'lastMsgAt':moment()[_0xad05('0x9c')](_0xad05('0xaf')),'lastMsgDirection':_0xad05('0xae'),'Messages':[_[_0xad05('0x5a')](_0x4e55ea['body'],{'messageId':_0x27b4cf['messageId'],'sentAt':moment()[_0xad05('0x9c')](_0xad05('0xaf')),'read':!![],'MailAccountId':_0xebe1c6['id'],'UserId':_0x4e55ea[_0xad05('0x37')]['id'],'ContactId':_0x22eeb2['id']})]};if(_0x4e55ea[_0xad05('0x65')][_0xad05('0xb0')]){_0x4d3e2c=_['merge'](_0x4d3e2c,_0x4e55ea[_0xad05('0x65')][_0xad05('0xb0')]);}return db[_0xad05('0x88')]['create'](_0x4d3e2c,{'include':[{'model':db['MailMessage'],'as':_0xad05('0xb1')}]});})[_0xad05('0x23')](respondWithResult(_0x326612,null))[_0xad05('0x60')](handleError(_0x326612,null));};exports[_0xad05('0xb2')]=function(_0x50a99b,_0x41cf0e){return db[_0xad05('0x46')]['find']({'where':{'id':_0x50a99b['params']['id']},'include':[{'model':db[_0xad05('0x44')],'as':_0xad05('0x42'),'raw':!![],'include':[{'model':db[_0xad05('0xa1')],'as':'CloudProvider','raw':!![]}]}]})[_0xad05('0x23')](handleEntityNotFound(_0x41cf0e,null))[_0xad05('0x23')](function(_0x19fe23){if(!_0x19fe23[_0xad05('0x42')])return;var _0x44da13=_0x19fe23[_0xad05('0xa9')]();return respondWithRpcPromise(_0xad05('0xb3'),'verifySmtp',{'account':_0x44da13});})[_0xad05('0x23')](respondWithResult(_0x41cf0e,null))[_0xad05('0x60')](handleError(_0x41cf0e,null));};exports[_0xad05('0x22')]=function(_0x5c53ca,_0x157b9a){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x5c53ca[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x157b9a,null))[_0xad05('0x23')](function(_0x491931){if(_0x491931&&_0x491931[_0xad05('0x69')]){throw new db[(_0xad05('0xb4'))][(_0xad05('0xb5'))](_0xad05('0xb6'));}return _0x491931;})[_0xad05('0x23')](removeEntity(_0x157b9a,null))[_0xad05('0x60')](handleError(_0x157b9a,null));};exports['addAgents']=function(_0x527532,_0x31b4de){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x527532[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x31b4de,null))[_0xad05('0x23')](function(_0x1fe68c){if(_0x1fe68c){return _0x1fe68c[_0xad05('0xb7')](_0x527532[_0xad05('0x65')]['ids'],_[_0xad05('0x89')](_0x527532['body'],[_0xad05('0x71'),'id'])||{})[_0xad05('0xb8')](function(_0x270a5e){for(var _0x24639b=0x0;_0x24639b<_0x527532['body'][_0xad05('0x71')][_0xad05('0x50')];_0x24639b+=0x1){socket['emit'](_0xad05('0xb9'),{'UserId':Number(_0x527532['body']['ids'][_0x24639b]),'MailAccountId':Number(_0x527532[_0xad05('0x6b')]['id'])});}return _0x270a5e;});}})[_0xad05('0x23')](respondWithResult(_0x31b4de,null))['catch'](handleError(_0x31b4de,null));};exports['removeAgents']=function(_0x27604d,_0x4d824f){return db['MailAccount'][_0xad05('0x64')]({'where':{'id':_0x27604d[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x4d824f,null))[_0xad05('0x23')](function(_0x4c9150){if(_0x4c9150){return _0x4c9150[_0xad05('0xba')](_0x27604d[_0xad05('0x4b')][_0xad05('0x71')])['then'](function(){if(_[_0xad05('0xbb')](_0x27604d[_0xad05('0x4b')][_0xad05('0x71')])){for(var _0x20504d=0x0;_0x20504d<_0x27604d[_0xad05('0x4b')]['ids']['length'];_0x20504d+=0x1){socket[_0xad05('0xbc')]('userMailAccount:remove',{'UserId':Number(_0x27604d[_0xad05('0x4b')][_0xad05('0x71')][_0x20504d]),'MailAccountId':Number(_0x27604d[_0xad05('0x6b')]['id'])});}}else{socket[_0xad05('0xbc')](_0xad05('0xbd'),{'UserId':Number(_0x27604d['query'][_0xad05('0x71')]),'MailAccountId':Number(_0x27604d[_0xad05('0x6b')]['id'])});}});}})[_0xad05('0x23')](respondWithStatusCode(_0x4d824f,null))[_0xad05('0x60')](handleError(_0x4d824f,null));};exports[_0xad05('0xbe')]=function(_0xa0ee4a,_0x411d69){var _0x2105ca={};var _0x1e4c46={};var _0x36308f;var _0x1071ab;return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0xa0ee4a[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x411d69,null))[_0xad05('0x23')](function(_0x1b091b){if(_0x1b091b){_0x36308f=_0x1b091b;_0x1e4c46['model']=_[_0xad05('0x4c')](db['User'][_0xad05('0x47')]);_0x1e4c46[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0xa0ee4a[_0xad05('0x4b')]);_0x1e4c46[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x1e4c46['model'],_0x1e4c46[_0xad05('0x4b')]);_0x2105ca['attributes']=_[_0xad05('0x4e')](_0x1e4c46[_0xad05('0x51')],qs['fields'](_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x63')]));_0x2105ca['attributes']=_0x2105ca[_0xad05('0x4f')][_0xad05('0x50')]?_0x2105ca[_0xad05('0x4f')]:_0x1e4c46[_0xad05('0x51')];_0x2105ca[_0xad05('0x54')]=qs['sort'](_0xa0ee4a[_0xad05('0x4b')]['sort']);_0x2105ca[_0xad05('0x58')]=qs['filters'](_[_0xad05('0x56')](_0xa0ee4a[_0xad05('0x4b')],_0x1e4c46[_0xad05('0x4d')]));if(_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x57')]){_0x2105ca[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x2105ca[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x2105ca[_0xad05('0x4f')],function(_0x2c3dd5){var _0x2d77f3={};_0x2d77f3[_0x2c3dd5]={'$like':'%'+_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x2d77f3;})});}_0x2105ca=_[_0xad05('0x5a')]({},_0x2105ca,_0xa0ee4a['options']);return _0x36308f[_0xad05('0xbe')](_0x2105ca);}})[_0xad05('0x23')](function(_0x9c1813){if(_0x9c1813){_0x1071ab=_0x9c1813[_0xad05('0x50')];if(!_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x52')](_0xad05('0x75'))){_0x2105ca[_0xad05('0x53')]=qs[_0xad05('0x53')](_0xa0ee4a[_0xad05('0x4b')]['limit']);_0x2105ca['offset']=qs[_0xad05('0x1e')](_0xa0ee4a[_0xad05('0x4b')]['offset']);}return _0x36308f[_0xad05('0xbe')](_0x2105ca);}})[_0xad05('0x23')](function(_0x86fb0c){if(_0x86fb0c){return _0x86fb0c?{'count':_0x1071ab,'rows':_0x86fb0c}:null;}})[_0xad05('0x23')](respondWithResult(_0x411d69,null))[_0xad05('0x60')](handleError(_0x411d69,null));};
\ No newline at end of file
+var _0x79a3=['request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','limit','Content-Range','json','update','get','MailAccounts','UserProfileResource','destroy','stack','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','Unknown\x20email\x20service\x20provider','user','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','index','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','count','include','rows','show','MailServerIn','includeAll','options','body','provider','custom','params','describe','addDisposition','find','MailAccountId','Disposition','create','getDispositions','findOne','nolimit','findAll','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','email','ListId','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','setImap','addSmtp','addInteraction','MailInteraction','omit','CmContact','User','Tag','addApplications','sequelize','Transaction','READ_COMMITTED','MailApplication','findAndCountAll','priority','finally','getApplications','getMessages','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','split','CmList','List','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','attachments','join','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','messageId','out','Interaction','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','userMailAccount:save','removeAgents','isArray','emit','userMailAccount:remove','getAgents','util','path','lodash','juice','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','register','http'];(function(_0x4e7056,_0x52891c){var _0x147b00=function(_0x2f93a4){while(--_0x2f93a4){_0x4e7056['push'](_0x4e7056['shift']());}};_0x147b00(++_0x52891c);}(_0x79a3,0xa9));var _0x379a=function(_0xfb61f0,_0x69e563){_0xfb61f0=_0xfb61f0-0x0;var _0x482683=_0x79a3[_0xfb61f0];return _0x482683;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x379a('0x0'));var path=require(_0x379a('0x1'));var _=require(_0x379a('0x2'));var juice=require(_0x379a('0x3'));var Redis=require(_0x379a('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0x379a('0x5'))(_0x379a('0x6'));var config=require(_0x379a('0x7'));var db=require(_0x379a('0x8'))['db'];config[_0x379a('0x9')]=_[_0x379a('0xa')](config['redis'],{'host':_0x379a('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x379a('0x9')]));require('./mailAccount.socket')[_0x379a('0xc')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x379a('0xd')]({'port':0x232b});function respondWithRpcPromise(_0x58f073,_0x40a3a1,_0x3b5c3e,_0x5c8ed9){return new BPromise(function(_0x44f56c,_0xbf9270){var _0x53782c=_0x5c8ed9||client;return _0x53782c[_0x379a('0xe')](_0x58f073,_0x3b5c3e)[_0x379a('0xf')](function(_0x492fec){logger[_0x379a('0x10')](_0x379a('0x11'),_0x40a3a1,_0x379a('0x12'));logger[_0x379a('0x13')](_0x379a('0x14'),_0x40a3a1,_0x379a('0x12'),JSON[_0x379a('0x15')](_0x492fec));if(_0x492fec[_0x379a('0x16')]){if(_0x492fec[_0x379a('0x16')][_0x379a('0x17')]===0x1f4){logger[_0x379a('0x16')]('MailAccount,\x20%s,\x20%s',_0x40a3a1,_0x492fec[_0x379a('0x16')][_0x379a('0x18')]);return _0xbf9270(_0x492fec['error']['message']);}logger[_0x379a('0x16')]('MailAccount,\x20%s,\x20%s',_0x40a3a1,_0x492fec[_0x379a('0x16')][_0x379a('0x18')]);return _0x44f56c(_0x492fec[_0x379a('0x16')][_0x379a('0x18')]);}else{logger[_0x379a('0x10')](_0x379a('0x11'),_0x40a3a1,_0x379a('0x12'));_0x44f56c(_0x492fec[_0x379a('0x19')][_0x379a('0x18')]);}})[_0x379a('0x1a')](function(_0x4f7f5e){logger[_0x379a('0x16')](_0x379a('0x11'),_0x40a3a1,_0x4f7f5e);_0xbf9270(_0x4f7f5e);});});}function respondWithStatusCode(_0x4f359f,_0x3c383d){_0x3c383d=_0x3c383d||0xcc;return function(_0x2cbe38){if(_0x2cbe38){return _0x4f359f[_0x379a('0x1b')](_0x3c383d);}return _0x4f359f[_0x379a('0x1c')](_0x3c383d)[_0x379a('0x1d')]();};}function respondWithResult(_0x405d6e,_0x3fac54){_0x3fac54=_0x3fac54||0xc8;return function(_0x42dadb){if(_0x42dadb){return _0x405d6e['status'](_0x3fac54)['json'](_0x42dadb);}};}function respondWithFilteredResult(_0x2fe9ca,_0x5408b1){return function(_0x89db32){if(_0x89db32){var _0xa3ed5d=typeof _0x5408b1[_0x379a('0x1e')]==='undefined'&&typeof _0x5408b1[_0x379a('0x1f')]==='undefined';var _0x35e0c9=_0x89db32['count'];var _0x3935b7=_0xa3ed5d?0x0:_0x5408b1[_0x379a('0x1e')];var _0x58862c=_0xa3ed5d?_0x89db32['count']:_0x5408b1['offset']+_0x5408b1['limit'];var _0x28df1d;if(_0x58862c>=_0x35e0c9){_0x58862c=_0x35e0c9;_0x28df1d=0xc8;}else{_0x28df1d=0xce;}_0x2fe9ca['status'](_0x28df1d);return _0x2fe9ca['set'](_0x379a('0x20'),_0x3935b7+'-'+_0x58862c+'/'+_0x35e0c9)[_0x379a('0x21')](_0x89db32);}return null;};}function saveUpdates(_0x55162c){return function(_0x3e10b5){if(_0x3e10b5){return _0x3e10b5[_0x379a('0x22')](_0x55162c)[_0x379a('0xf')](function(_0x5f0985){return _0x5f0985;});}return null;};}function removeEntity(_0x40713c){return function(_0x359b10){if(_0x359b10){return _0x359b10['destroy']()[_0x379a('0xf')](function(){var _0x2d435d=_0x359b10[_0x379a('0x23')]({'plain':!![]});var _0x80c25=_0x379a('0x24');return db[_0x379a('0x25')][_0x379a('0x26')]({'where':{'type':_0x80c25,'resourceId':_0x2d435d['id']}})[_0x379a('0xf')](function(){return _0x359b10;});})['then'](function(){_0x40713c[_0x379a('0x1c')](0xcc)[_0x379a('0x1d')]();});}};}function handleEntityNotFound(_0x169d54){return function(_0x3d8ec8){if(!_0x3d8ec8){_0x169d54[_0x379a('0x1b')](0x194);}return _0x3d8ec8;};}function handleError(_0x58d2c3,_0x43bd41){_0x43bd41=_0x43bd41||0x1f4;return function(_0x5f1f75){logger[_0x379a('0x16')](_0x5f1f75[_0x379a('0x27')]);if(_0x5f1f75[_0x379a('0x28')]){delete _0x5f1f75[_0x379a('0x28')];}_0x58d2c3['status'](_0x43bd41)[_0x379a('0x29')](_0x5f1f75);};}function getImapHost(_0x5e2251){switch(_0x5e2251){case _0x379a('0x2a'):return _0x379a('0x2b');case _0x379a('0x2c'):return _0x379a('0x2d');case _0x379a('0x2e'):return _0x379a('0x2f');case _0x379a('0x30'):return'outlook.office365.com';}throw new Error('Unknown\x20email\x20service\x20provider',_0x5e2251);}function getSmtpHost(_0x56d829){switch(_0x56d829){case'gmail':return _0x379a('0x31');case _0x379a('0x2c'):return _0x379a('0x32');case _0x379a('0x2e'):return _0x379a('0x33');case _0x379a('0x30'):return _0x379a('0x34');}throw new Error(_0x379a('0x35'),_0x56d829);}function getAuthenticationOptions(_0x4e99c4,_0x19e119){var _0x539fcf={};var _0x5803eb={};if(_0x4e99c4){_0x539fcf[_0x379a('0x36')]=_0x5803eb[_0x379a('0x36')]=_0x19e119['username'];_0x539fcf[_0x379a('0x37')]=_0x5803eb[_0x379a('0x38')]=_0x19e119[_0x379a('0x37')];if(_0x19e119[_0x379a('0x39')]){_0x539fcf['modernAuthentication']=_0x5803eb[_0x379a('0x39')]=!![];_0x539fcf[_0x379a('0x3a')]=_0x5803eb[_0x379a('0x3a')]=_0x19e119[_0x379a('0x3a')];_0x539fcf[_0x379a('0x37')]=_0x5803eb[_0x379a('0x38')]=null;}else{_0x539fcf[_0x379a('0x3a')]=_0x5803eb[_0x379a('0x3a')]=null;}_0x539fcf[_0x379a('0x3b')]=getImapHost(_0x4e99c4);_0x539fcf[_0x379a('0x3c')]=0x3e1;_0x5803eb['host']=getSmtpHost(_0x4e99c4);_0x5803eb[_0x379a('0x3c')]=0x24b;_0x5803eb[_0x379a('0x3d')]=![];_0x539fcf[_0x379a('0x3e')]=_0x5803eb[_0x379a('0x3e')]=null;}else{if(_0x19e119[_0x379a('0x3f')]){_0x539fcf[_0x379a('0x36')]=_0x5803eb[_0x379a('0x36')]=_0x19e119['username'];_0x539fcf[_0x379a('0x37')]=_0x5803eb[_0x379a('0x38')]=_0x19e119[_0x379a('0x37')];}else{_0x539fcf[_0x379a('0x3f')]=_0x5803eb[_0x379a('0x3f')]=![];_0x539fcf[_0x379a('0x36')]=_0x5803eb[_0x379a('0x36')]=null;_0x539fcf[_0x379a('0x37')]=_0x5803eb[_0x379a('0x38')]=null;}_0x539fcf[_0x379a('0x3b')]=_0x19e119[_0x379a('0x40')]['host'];_0x539fcf[_0x379a('0x3c')]=_0x19e119[_0x379a('0x40')][_0x379a('0x3c')];_0x5803eb[_0x379a('0x3b')]=_0x19e119[_0x379a('0x41')][_0x379a('0x3b')];_0x5803eb[_0x379a('0x3c')]=_0x19e119[_0x379a('0x41')][_0x379a('0x3c')];}return{'Imap':_0x539fcf,'Smtp':_0x5803eb};}exports[_0x379a('0x42')]=function(_0x561d09,_0x2a6af5){var _0x1a221f={'include':[{'model':db['MailServerIn'],'as':_0x379a('0x40')},{'model':db[_0x379a('0x43')],'as':_0x379a('0x41')},{'model':db[_0x379a('0x44')],'as':_0x379a('0x45')}]},_0x572a09={},_0x2022ee={'count':0x0,'rows':[]};var _0xdd6200=_[_0x379a('0x46')](db[_0x379a('0x47')][_0x379a('0x48')],function(_0x43761f){return{'name':_0x43761f[_0x379a('0x49')],'type':_0x43761f[_0x379a('0x4a')][_0x379a('0x4b')]};});_0x572a09[_0x379a('0x4c')]=_[_0x379a('0x46')](_0xdd6200,_0x379a('0x28'));_0x572a09[_0x379a('0x4d')]=_[_0x379a('0x4e')](_0x561d09[_0x379a('0x4d')]);_0x572a09[_0x379a('0x4f')]=_[_0x379a('0x50')](_0x572a09[_0x379a('0x4c')],_0x572a09['query']);_0x1a221f['attributes']=_[_0x379a('0x50')](_0x572a09[_0x379a('0x4c')],qs[_0x379a('0x51')](_0x561d09['query'][_0x379a('0x51')]));_0x1a221f[_0x379a('0x52')]=_0x1a221f[_0x379a('0x52')][_0x379a('0x53')]?_0x1a221f[_0x379a('0x52')]:_0x572a09[_0x379a('0x4c')];if(!_0x561d09[_0x379a('0x4d')][_0x379a('0x54')]('nolimit')){_0x1a221f[_0x379a('0x1f')]=qs['limit'](_0x561d09[_0x379a('0x4d')][_0x379a('0x1f')]);_0x1a221f[_0x379a('0x1e')]=qs[_0x379a('0x1e')](_0x561d09[_0x379a('0x4d')][_0x379a('0x1e')]);}_0x1a221f[_0x379a('0x55')]=qs[_0x379a('0x56')](_0x561d09[_0x379a('0x4d')]['sort']);_0x1a221f['where']=qs[_0x379a('0x4f')](_[_0x379a('0x57')](_0x561d09['query'],_0x572a09[_0x379a('0x4f')]),_0xdd6200);if(_0x561d09[_0x379a('0x4d')][_0x379a('0x58')]){_0x1a221f[_0x379a('0x59')]=_[_0x379a('0x5a')](_0x1a221f[_0x379a('0x59')],{'$or':_[_0x379a('0x46')](_0xdd6200,function(_0xcd3822){if(_0xcd3822[_0x379a('0x4a')]!==_0x379a('0x5b')){var _0x33d52f={};_0x33d52f[_0xcd3822['name']]={'$like':'%'+_0x561d09['query'][_0x379a('0x58')]+'%'};return _0x33d52f;}})});}_0x1a221f=_['merge']({},_0x1a221f,_0x561d09['options']);var _0xeba3b0={'where':_0x1a221f[_0x379a('0x59')]};return db['MailAccount'][_0x379a('0x5c')](_0xeba3b0)[_0x379a('0xf')](function(_0x1f0e89){_0x2022ee[_0x379a('0x5c')]=_0x1f0e89;if(_0x561d09[_0x379a('0x4d')]['includeAll']){_0x1a221f[_0x379a('0x5d')]=[{'all':!![]}];}return db[_0x379a('0x47')]['findAll'](_0x1a221f);})[_0x379a('0xf')](function(_0x29fcf5){_0x2022ee[_0x379a('0x5e')]=_0x29fcf5;return _0x2022ee;})[_0x379a('0xf')](respondWithFilteredResult(_0x2a6af5,_0x1a221f))['catch'](handleError(_0x2a6af5,null));};exports[_0x379a('0x5f')]=function(_0x3eae5d,_0x2127ad){var _0x363ee5={'raw':![],'where':{'id':_0x3eae5d['params']['id']},'include':[{'model':db[_0x379a('0x60')],'as':_0x379a('0x40')},{'model':db['MailServerOut'],'as':_0x379a('0x41')},{'model':db[_0x379a('0x44')],'as':_0x379a('0x45')}]},_0x406487={};_0x406487[_0x379a('0x4c')]=_[_0x379a('0x4e')](db[_0x379a('0x47')][_0x379a('0x48')]);_0x406487[_0x379a('0x4d')]=_[_0x379a('0x4e')](_0x3eae5d[_0x379a('0x4d')]);_0x406487[_0x379a('0x4f')]=_[_0x379a('0x50')](_0x406487['model'],_0x406487[_0x379a('0x4d')]);_0x363ee5[_0x379a('0x52')]=_[_0x379a('0x50')](_0x406487[_0x379a('0x4c')],qs[_0x379a('0x51')](_0x3eae5d['query']['fields']));_0x363ee5[_0x379a('0x52')]=_0x363ee5['attributes'][_0x379a('0x53')]?_0x363ee5[_0x379a('0x52')]:_0x406487[_0x379a('0x4c')];if(_0x3eae5d[_0x379a('0x4d')][_0x379a('0x61')]){_0x363ee5['include']=[{'all':!![]}];}_0x363ee5=_[_0x379a('0x5a')]({},_0x363ee5,_0x3eae5d[_0x379a('0x62')]);return db[_0x379a('0x47')]['find'](_0x363ee5)[_0x379a('0xf')](handleEntityNotFound(_0x2127ad,null))['then'](respondWithResult(_0x2127ad,null))[_0x379a('0x1a')](handleError(_0x2127ad,null));};exports[_0x379a('0x22')]=function(_0x319d39,_0x37e2c3){if(_0x319d39['body']['id']){delete _0x319d39[_0x379a('0x63')]['id'];}var _0x9cd4b4=_0x319d39[_0x379a('0x63')][_0x379a('0x64')]===_0x379a('0x65')?null:_0x319d39[_0x379a('0x63')][_0x379a('0x64')];var _0x405a9d=_0x319d39[_0x379a('0x63')][_0x379a('0x40')]||{};var _0x3f9105=_0x319d39['body'][_0x379a('0x41')]||{};if(_0x9cd4b4){_0x405a9d[_0x379a('0x3b')]=getImapHost(_0x9cd4b4);_0x405a9d['port']=0x3e1;_0x3f9105['host']=getSmtpHost(_0x9cd4b4);_0x3f9105[_0x379a('0x3c')]=0x24b;_0x3f9105['secure']=![];}if(_0x3f9105['modernAuthentication']){_0x3f9105['secure']=![];}else{_0x3f9105[_0x379a('0x3a')]=null;}if(!_0x405a9d[_0x379a('0x39')])_0x405a9d[_0x379a('0x3a')]=null;_0x319d39['body'][_0x379a('0x40')]=_0x405a9d;_0x319d39[_0x379a('0x63')][_0x379a('0x41')]=_0x3f9105;return db['MailAccount']['find']({'where':{'id':_0x319d39[_0x379a('0x66')]['id']},'include':[{'model':db[_0x379a('0x60')],'as':_0x379a('0x40')},{'model':db[_0x379a('0x43')],'as':_0x379a('0x41')},{'model':db[_0x379a('0x44')],'as':_0x379a('0x45')}]})[_0x379a('0xf')](handleEntityNotFound(_0x37e2c3,null))[_0x379a('0xf')](function(_0x3039ab){if(!_0x3039ab)throw new Error('Mail\x20Account\x20not\x20found');if(_0x3039ab['service'])delete _0x319d39[_0x379a('0x63')][_0x379a('0x40')];return _0x3039ab;})[_0x379a('0xf')](saveUpdates(_0x319d39['body'],null))[_0x379a('0xf')](function(_0x307df4){if(!_0x319d39['body'][_0x379a('0x40')])return _0x307df4;return db['MailServerIn'][_0x379a('0x22')](_0x319d39[_0x379a('0x63')]['Imap'],{'where':{'MailAccountId':_0x307df4['id']}})[_0x379a('0xf')](function(){return _0x307df4;});})[_0x379a('0xf')](function(_0x4c34de){if(!_0x319d39[_0x379a('0x63')][_0x379a('0x41')])return _0x4c34de;return db['MailServerOut']['update'](_0x319d39[_0x379a('0x63')]['Smtp'],{'where':{'MailAccountId':_0x4c34de['id']}})['then'](function(){return _0x4c34de;});})['then'](respondWithResult(_0x37e2c3,null))[_0x379a('0x1a')](handleError(_0x37e2c3,null));};exports[_0x379a('0x67')]=function(_0x1b0e8e,_0x3d66a3){return db[_0x379a('0x47')][_0x379a('0x67')]()[_0x379a('0xf')](respondWithResult(_0x3d66a3,null))['catch'](handleError(_0x3d66a3,null));};exports[_0x379a('0x68')]=function(_0x74dbf1,_0x247f92){if(_0x74dbf1[_0x379a('0x63')]['id']){delete _0x74dbf1[_0x379a('0x63')]['id'];}return db['MailAccount'][_0x379a('0x69')]({'where':{'id':_0x74dbf1[_0x379a('0x66')]['id']}})['then'](handleEntityNotFound(_0x247f92,null))['then'](function(_0x43ce94){if(_0x43ce94){_0x74dbf1['body'][_0x379a('0x6a')]=_0x43ce94['id'];return db[_0x379a('0x6b')][_0x379a('0x6c')](_0x74dbf1[_0x379a('0x63')]);}})[_0x379a('0xf')](respondWithResult(_0x247f92,null))[_0x379a('0x1a')](handleError(_0x247f92,null));};exports[_0x379a('0x6d')]=function(_0x178f56,_0x14f845){var _0x2ab51f={'raw':![],'where':{}};var _0x1570ce={};var _0x24f5ae={'count':0x0,'rows':[]};return db['MailAccount'][_0x379a('0x6e')]({'where':{'id':_0x178f56[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x14f845,null))[_0x379a('0xf')](function(_0x592b81){if(_0x592b81){_0x1570ce[_0x379a('0x4c')]=_[_0x379a('0x4e')](db[_0x379a('0x6b')][_0x379a('0x48')]);_0x1570ce[_0x379a('0x4d')]=_[_0x379a('0x4e')](_0x178f56['query']);_0x1570ce['filters']=_['intersection'](_0x1570ce[_0x379a('0x4c')],_0x1570ce['query']);_0x2ab51f[_0x379a('0x52')]=_[_0x379a('0x50')](_0x1570ce['model'],qs['fields'](_0x178f56[_0x379a('0x4d')][_0x379a('0x51')]));_0x2ab51f['attributes']=_0x2ab51f[_0x379a('0x52')][_0x379a('0x53')]?_0x2ab51f[_0x379a('0x52')]:_0x1570ce[_0x379a('0x4c')];if(!_0x178f56['query'][_0x379a('0x54')](_0x379a('0x6f'))){_0x2ab51f[_0x379a('0x1f')]=qs[_0x379a('0x1f')](_0x178f56[_0x379a('0x4d')]['limit']);_0x2ab51f[_0x379a('0x1e')]=qs[_0x379a('0x1e')](_0x178f56[_0x379a('0x4d')][_0x379a('0x1e')]);}_0x2ab51f[_0x379a('0x55')]=qs[_0x379a('0x56')](_0x178f56['query'][_0x379a('0x56')]);_0x2ab51f[_0x379a('0x59')]=qs[_0x379a('0x4f')](_['pick'](_0x178f56[_0x379a('0x4d')],_0x1570ce[_0x379a('0x4f')]));_0x2ab51f[_0x379a('0x59')][_0x379a('0x6a')]=_0x592b81['id'];if(_0x178f56[_0x379a('0x4d')][_0x379a('0x58')]){_0x2ab51f['where']=_[_0x379a('0x5a')](_0x2ab51f[_0x379a('0x59')],{'$or':_[_0x379a('0x46')](_0x2ab51f[_0x379a('0x52')],function(_0x400c9d){var _0x3a414a={};_0x3a414a[_0x400c9d]={'$like':'%'+_0x178f56[_0x379a('0x4d')][_0x379a('0x58')]+'%'};return _0x3a414a;})});}_0x2ab51f=_[_0x379a('0x5a')]({},_0x2ab51f,_0x178f56[_0x379a('0x62')]);return db[_0x379a('0x6b')]['count']({'where':_0x2ab51f['where']})[_0x379a('0xf')](function(_0x6c083){_0x24f5ae[_0x379a('0x5c')]=_0x6c083;if(_0x178f56['query']['includeAll']){_0x2ab51f[_0x379a('0x5d')]=[{'all':!![]}];}return db[_0x379a('0x6b')][_0x379a('0x70')](_0x2ab51f);})[_0x379a('0xf')](function(_0x4e0f7f){_0x24f5ae[_0x379a('0x5e')]=_0x4e0f7f;return _0x24f5ae;});}})[_0x379a('0xf')](respondWithFilteredResult(_0x14f845,_0x2ab51f))[_0x379a('0x1a')](handleError(_0x14f845,null));};exports[_0x379a('0x71')]=function(_0x5cfb57,_0x184180){return db[_0x379a('0x47')][_0x379a('0x69')]({'where':{'id':_0x5cfb57[_0x379a('0x66')]['id']}})['then'](handleEntityNotFound(_0x184180,null))[_0x379a('0xf')](function(_0xf360f1){if(_0xf360f1){return _0xf360f1['removeDispositions'](_0x5cfb57[_0x379a('0x4d')][_0x379a('0x72')]);}})['then'](respondWithStatusCode(_0x184180,null))[_0x379a('0x1a')](handleError(_0x184180,null));};exports['addAnswer']=function(_0x36b914,_0x4375cd){if(_0x36b914[_0x379a('0x63')]['id']){delete _0x36b914['body']['id'];}return db['MailAccount'][_0x379a('0x69')]({'where':{'id':_0x36b914[_0x379a('0x66')]['id']}})['then'](handleEntityNotFound(_0x4375cd,null))[_0x379a('0xf')](function(_0xae14a9){if(_0xae14a9){_0x36b914['body'][_0x379a('0x6a')]=_0xae14a9['id'];return db[_0x379a('0x73')][_0x379a('0x6c')](_0x36b914['body']);}})[_0x379a('0xf')](respondWithResult(_0x4375cd,null))[_0x379a('0x1a')](handleError(_0x4375cd,null));};exports[_0x379a('0x74')]=function(_0x24c90a,_0x228173){var _0x2223d2={'raw':![],'where':{}};var _0x2e6dfc={};var _0x34304b={'count':0x0,'rows':[]};return db[_0x379a('0x47')][_0x379a('0x6e')]({'where':{'id':_0x24c90a['params']['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x228173,null))['then'](function(_0x6d999d){if(_0x6d999d){_0x2e6dfc[_0x379a('0x4c')]=_['keys'](db[_0x379a('0x73')]['rawAttributes']);_0x2e6dfc[_0x379a('0x4d')]=_[_0x379a('0x4e')](_0x24c90a[_0x379a('0x4d')]);_0x2e6dfc[_0x379a('0x4f')]=_[_0x379a('0x50')](_0x2e6dfc[_0x379a('0x4c')],_0x2e6dfc['query']);_0x2223d2[_0x379a('0x52')]=_[_0x379a('0x50')](_0x2e6dfc['model'],qs[_0x379a('0x51')](_0x24c90a[_0x379a('0x4d')][_0x379a('0x51')]));_0x2223d2[_0x379a('0x52')]=_0x2223d2[_0x379a('0x52')][_0x379a('0x53')]?_0x2223d2[_0x379a('0x52')]:_0x2e6dfc[_0x379a('0x4c')];if(!_0x24c90a[_0x379a('0x4d')][_0x379a('0x54')](_0x379a('0x6f'))){_0x2223d2['limit']=qs[_0x379a('0x1f')](_0x24c90a[_0x379a('0x4d')][_0x379a('0x1f')]);_0x2223d2[_0x379a('0x1e')]=qs['offset'](_0x24c90a[_0x379a('0x4d')][_0x379a('0x1e')]);}_0x2223d2[_0x379a('0x55')]=qs[_0x379a('0x56')](_0x24c90a['query'][_0x379a('0x56')]);_0x2223d2[_0x379a('0x59')]=qs['filters'](_['pick'](_0x24c90a[_0x379a('0x4d')],_0x2e6dfc[_0x379a('0x4f')]));_0x2223d2[_0x379a('0x59')][_0x379a('0x6a')]=_0x6d999d['id'];if(_0x24c90a['query'][_0x379a('0x58')]){_0x2223d2['where']=_[_0x379a('0x5a')](_0x2223d2[_0x379a('0x59')],{'$or':_['map'](_0x2223d2['attributes'],function(_0x3231b2){var _0x481f97={};_0x481f97[_0x3231b2]={'$like':'%'+_0x24c90a['query'][_0x379a('0x58')]+'%'};return _0x481f97;})});}_0x2223d2=_[_0x379a('0x5a')]({},_0x2223d2,_0x24c90a[_0x379a('0x62')]);return db[_0x379a('0x73')][_0x379a('0x5c')]({'where':_0x2223d2[_0x379a('0x59')]})[_0x379a('0xf')](function(_0x13bc9d){_0x34304b[_0x379a('0x5c')]=_0x13bc9d;if(_0x24c90a[_0x379a('0x4d')][_0x379a('0x61')]){_0x2223d2['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x2223d2);})[_0x379a('0xf')](function(_0x4a57c6){_0x34304b[_0x379a('0x5e')]=_0x4a57c6;return _0x34304b;});}})[_0x379a('0xf')](respondWithFilteredResult(_0x228173,_0x2223d2))[_0x379a('0x1a')](handleError(_0x228173,null));};exports[_0x379a('0x75')]=function(_0x1f0901,_0x1400b1){return db[_0x379a('0x47')]['find']({'where':{'id':_0x1f0901[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x1400b1,null))[_0x379a('0xf')](function(_0x51cc67){if(_0x51cc67){return _0x51cc67[_0x379a('0x75')](_0x1f0901[_0x379a('0x4d')][_0x379a('0x72')]);}})[_0x379a('0xf')](respondWithStatusCode(_0x1400b1,null))[_0x379a('0x1a')](handleError(_0x1400b1,null));};exports[_0x379a('0x6c')]=function(_0x105e37,_0x52d32e){var _0xb3e89a={'name':_0x105e37[_0x379a('0x63')]['name'],'key':_0x105e37[_0x379a('0x63')][_0x379a('0x4b')],'provider':_0x105e37[_0x379a('0x63')][_0x379a('0x64')]===_0x379a('0x65')?null:_0x105e37['body']['provider'],'email':_0x105e37[_0x379a('0x63')][_0x379a('0x76')],'ListId':_0x105e37[_0x379a('0x63')][_0x379a('0x77')],'active':!_[_0x379a('0x78')](_0x105e37[_0x379a('0x63')][_0x379a('0x79')])?_0x105e37['body']['active']:!![],'description':_0x105e37[_0x379a('0x63')][_0x379a('0x7a')]||null};var _0x143efb=getAuthenticationOptions(_0xb3e89a[_0x379a('0x64')],_0x105e37[_0x379a('0x63')]);_0xb3e89a['Imap']=_0x143efb['Imap'];_0xb3e89a[_0x379a('0x41')]=_0x143efb[_0x379a('0x41')];return db[_0x379a('0x47')][_0x379a('0x6c')](_0xb3e89a,{'include':[{'model':db[_0x379a('0x43')],'as':_0x379a('0x41')},{'model':db['MailServerIn'],'as':_0x379a('0x40')}]})[_0x379a('0xf')](function(_0x35c7fb){var _0x3e003d=_0x105e37[_0x379a('0x36')][_0x379a('0x23')]({'plain':!![]});if(!_0x3e003d)throw new Error(_0x379a('0x7b'));if(_0x3e003d[_0x379a('0x7c')]===_0x379a('0x36')){var _0x5abd12=_0x35c7fb[_0x379a('0x23')]({'plain':!![]});return db[_0x379a('0x7d')][_0x379a('0x69')]({'where':{'name':_0x379a('0x24'),'userProfileId':_0x3e003d['userProfileId']},'raw':!![]})['then'](function(_0xbc7511){if(_0xbc7511&&_0xbc7511['autoAssociation']===0x0){return db['UserProfileResource'][_0x379a('0x6c')]({'name':_0x5abd12[_0x379a('0x28')],'resourceId':_0x5abd12['id'],'type':_0xbc7511['name'],'sectionId':_0xbc7511['id']},{})[_0x379a('0xf')](function(){return _0x35c7fb;});}else{return _0x35c7fb;}})[_0x379a('0x1a')](function(_0x5f08a1){logger['error'](_0x379a('0x7e'),_0x5f08a1);throw _0x5f08a1;});}return _0x35c7fb;})[_0x379a('0xf')](respondWithResult(_0x52d32e,0xc9))[_0x379a('0x1a')](handleError(_0x52d32e,null));};exports[_0x379a('0x7f')]=function(_0x5b1ce6,_0x1a3b4b){return db[_0x379a('0x47')][_0x379a('0x6e')]({'where':{'id':_0x5b1ce6[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x1a3b4b,null))['then'](function(_0x5a9b68){if(_0x5a9b68){return _0x5a9b68[_0x379a('0x7f')]();}return null;})['then'](respondWithResult(_0x1a3b4b,null))['catch'](handleError(_0x1a3b4b,null));};exports['addImap']=function(_0x4e812e,_0x1ae3d4){if(_0x4e812e[_0x379a('0x63')]['id']){delete _0x4e812e[_0x379a('0x63')]['id'];}return db[_0x379a('0x47')][_0x379a('0x69')]({'where':{'id':_0x4e812e['params']['id']}})['then'](handleEntityNotFound(_0x1ae3d4,null))[_0x379a('0xf')](function(_0x5e1fdd){if(_0x5e1fdd){_0x4e812e[_0x379a('0x63')][_0x379a('0x6a')]=_0x5e1fdd['id'];return db[_0x379a('0x60')][_0x379a('0x6c')](_0x4e812e['body']);}})[_0x379a('0xf')](respondWithResult(_0x1ae3d4,null))[_0x379a('0x1a')](handleError(_0x1ae3d4,null));};exports['removeImap']=function(_0x3503c4,_0x4d0e7d){return db[_0x379a('0x47')][_0x379a('0x6e')]({'where':{'id':_0x3503c4[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x4d0e7d,null))[_0x379a('0xf')](function(_0x33282c){if(_0x33282c){return _0x33282c[_0x379a('0x80')](null);}return null;})[_0x379a('0xf')](respondWithStatusCode(_0x4d0e7d,null))['catch'](handleError(_0x4d0e7d,null));};exports['getSmtp']=function(_0x385805,_0x5c77b2){return db[_0x379a('0x47')][_0x379a('0x6e')]({'where':{'id':_0x385805[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x5c77b2,null))[_0x379a('0xf')](function(_0x564bfc){if(_0x564bfc){return _0x564bfc['getSmtp']();}return null;})[_0x379a('0xf')](respondWithResult(_0x5c77b2,null))['catch'](handleError(_0x5c77b2,null));};exports[_0x379a('0x81')]=function(_0x2e55ac,_0x178338){if(_0x2e55ac['body']['id']){delete _0x2e55ac[_0x379a('0x63')]['id'];}return db[_0x379a('0x47')][_0x379a('0x69')]({'where':{'id':_0x2e55ac[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x178338,null))[_0x379a('0xf')](function(_0x48589d){if(_0x48589d){_0x2e55ac[_0x379a('0x63')]['MailAccountId']=_0x48589d['id'];return db[_0x379a('0x43')][_0x379a('0x6c')](_0x2e55ac[_0x379a('0x63')]);}})['then'](respondWithResult(_0x178338,null))[_0x379a('0x1a')](handleError(_0x178338,null));};exports['removeSmtp']=function(_0x10d94b,_0xc27d31){return db[_0x379a('0x47')][_0x379a('0x6e')]({'where':{'id':_0x10d94b[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0xc27d31,null))[_0x379a('0xf')](function(_0x12ff82){if(_0x12ff82){return _0x12ff82['setSmtp'](null);}return null;})[_0x379a('0xf')](respondWithStatusCode(_0xc27d31,null))[_0x379a('0x1a')](handleError(_0xc27d31,null));};exports[_0x379a('0x82')]=function(_0x7a0751,_0x11993a){return db[_0x379a('0x83')][_0x379a('0x69')]({'where':{'id':_0x7a0751[_0x379a('0x66')]['id']}})['then'](handleEntityNotFound(_0x11993a,null))[_0x379a('0xf')](function(_0x371149){if(_0x371149){return _0x371149['addInteraction'](_0x7a0751[_0x379a('0x63')][_0x379a('0x72')],_[_0x379a('0x84')](_0x7a0751[_0x379a('0x63')],[_0x379a('0x72'),'id'])||{});}})[_0x379a('0xf')](respondWithResult(_0x11993a,null))[_0x379a('0x1a')](handleError(_0x11993a,null));};exports['getInteractions']=function(_0x580e7b,_0x1494f3){var _0x57b604={'raw':![],'where':{}};var _0xed7b8d={};var _0x17b767={'count':0x0,'rows':[]};return db[_0x379a('0x47')][_0x379a('0x6e')]({'where':{'id':_0x580e7b[_0x379a('0x66')]['id']}})['then'](handleEntityNotFound(_0x1494f3,null))[_0x379a('0xf')](function(_0xaaa416){if(_0xaaa416){_0xed7b8d[_0x379a('0x4c')]=_[_0x379a('0x4e')](db['MailInteraction']['rawAttributes']);_0xed7b8d[_0x379a('0x4d')]=_['keys'](_0x580e7b[_0x379a('0x4d')]);_0xed7b8d[_0x379a('0x4f')]=_[_0x379a('0x50')](_0xed7b8d[_0x379a('0x4c')],_0xed7b8d['query']);_0x57b604[_0x379a('0x52')]=_[_0x379a('0x50')](_0xed7b8d[_0x379a('0x4c')],qs['fields'](_0x580e7b[_0x379a('0x4d')][_0x379a('0x51')]));_0x57b604[_0x379a('0x52')]=_0x57b604[_0x379a('0x52')][_0x379a('0x53')]?_0x57b604['attributes']:_0xed7b8d['model'];if(!_0x580e7b[_0x379a('0x4d')][_0x379a('0x54')](_0x379a('0x6f'))){_0x57b604['limit']=qs[_0x379a('0x1f')](_0x580e7b[_0x379a('0x4d')]['limit']);_0x57b604['offset']=qs[_0x379a('0x1e')](_0x580e7b[_0x379a('0x4d')][_0x379a('0x1e')]);}_0x57b604[_0x379a('0x55')]=qs['sort'](_0x580e7b['query'][_0x379a('0x56')]);_0x57b604[_0x379a('0x59')]=qs[_0x379a('0x4f')](_['pick'](_0x580e7b[_0x379a('0x4d')],_0xed7b8d['filters']));_0x57b604[_0x379a('0x59')][_0x379a('0x6a')]=_0xaaa416['id'];if(_0x580e7b['query']['filter']){_0x57b604[_0x379a('0x59')]=_[_0x379a('0x5a')](_0x57b604['where'],{'$or':_['map'](_0x57b604[_0x379a('0x52')],function(_0x46bd62){var _0x12cfa7={};_0x12cfa7[_0x46bd62]={'$like':'%'+_0x580e7b[_0x379a('0x4d')]['filter']+'%'};return _0x12cfa7;})});}_0x57b604=_[_0x379a('0x5a')]({},_0x57b604,_0x580e7b['options']);return db['MailInteraction'][_0x379a('0x5c')]({'where':_0x57b604[_0x379a('0x59')]})[_0x379a('0xf')](function(_0x501182){_0x17b767[_0x379a('0x5c')]=_0x501182;if(_0x580e7b['query'][_0x379a('0x61')]){_0x57b604[_0x379a('0x5d')]=[{'model':db[_0x379a('0x85')],'as':'Contact','required':![]},{'model':db[_0x379a('0x86')],'as':'Owner','attributes':[_0x379a('0x28'),'fullname','internal'],'required':![]},{'model':db[_0x379a('0x87')],'as':'Tags','attributes':['id','name','color'],'where':_0x580e7b[_0x379a('0x4d')]['tag']?{'id':_0x580e7b['query']['tag']}:undefined,'required':_0x580e7b[_0x379a('0x4d')]['tag']?!![]:![]}];}return db['MailInteraction'][_0x379a('0x70')](_0x57b604);})[_0x379a('0xf')](function(_0xa75fdf){_0x17b767[_0x379a('0x5e')]=_0xa75fdf;return _0x17b767;});}})[_0x379a('0xf')](respondWithFilteredResult(_0x1494f3,_0x57b604))['catch'](handleError(_0x1494f3,null));};exports[_0x379a('0x88')]=function addApplications(_0x5eb1d7,_0x4d251e){var _0x4e5f77=_0x5eb1d7[_0x379a('0x66')]['id'];var _0x47e313=_0x5eb1d7[_0x379a('0x63')];var _0x390ce2=0xc8;var _0x16e4fb=null;return db[_0x379a('0x89')]['transaction']({'isolationLevel':db[_0x379a('0x89')][_0x379a('0x8a')]['ISOLATION_LEVELS'][_0x379a('0x8b')]},function(_0x1a0871){return db[_0x379a('0x47')]['findOne']({'where':{'id':_0x4e5f77},'transaction':_0x1a0871})[_0x379a('0xf')](function(_0x2a1423){if(_0x2a1423){return db[_0x379a('0x8c')][_0x379a('0x26')]({'where':{'MailAccountId':_0x4e5f77},'transaction':_0x1a0871})[_0x379a('0xf')](function(){var _0x2139bc=_[_0x379a('0x46')](_0x47e313,function(_0x24dabf){_0x24dabf[_0x379a('0x6a')]=_0x4e5f77;return _0x24dabf;});return db[_0x379a('0x8c')]['bulkCreate'](_0x2139bc,{'transaction':_0x1a0871});});}else{_0x390ce2=0x194;_0x16e4fb=[];}});})[_0x379a('0xf')](function(){if(_0x390ce2!==0x194){return db[_0x379a('0x8c')][_0x379a('0x8d')]({'where':{'MailAccountId':_0x4e5f77},'order':_0x379a('0x8e')})[_0x379a('0xf')](function(_0x2e49dc){_0x16e4fb=_0x2e49dc;});}})[_0x379a('0x1a')](function(_0x30d346){_0x390ce2=0x1f4;logger['error'](_0x30d346['stack']);if(_0x30d346['name']){delete _0x30d346['name'];}_0x16e4fb=_0x30d346;})[_0x379a('0x8f')](function(){if(_0x16e4fb===null){_0x4d251e[_0x379a('0x1b')](_0x390ce2);}else{if(_0x390ce2===0x1f4){_0x4d251e[_0x379a('0x1c')](_0x390ce2)['send'](_0x16e4fb);}else{_0x4d251e[_0x379a('0x1c')](_0x390ce2)[_0x379a('0x21')](_0x16e4fb);}}});};exports[_0x379a('0x90')]=function(_0x5e6e07,_0x52898d){var _0x49616c={};var _0x363ad6={};var _0x57e429;var _0x3c46d0;return db[_0x379a('0x47')][_0x379a('0x6e')]({'where':{'id':_0x5e6e07[_0x379a('0x66')]['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x52898d,null))[_0x379a('0xf')](function(_0x14caaa){if(_0x14caaa){_0x57e429=_0x14caaa;_0x363ad6[_0x379a('0x4c')]=_[_0x379a('0x4e')](db[_0x379a('0x8c')]['rawAttributes']);_0x363ad6['query']=_[_0x379a('0x4e')](_0x5e6e07[_0x379a('0x4d')]);_0x363ad6[_0x379a('0x4f')]=_[_0x379a('0x50')](_0x363ad6['model'],_0x363ad6[_0x379a('0x4d')]);_0x49616c['attributes']=_[_0x379a('0x50')](_0x363ad6[_0x379a('0x4c')],qs[_0x379a('0x51')](_0x5e6e07[_0x379a('0x4d')][_0x379a('0x51')]));_0x49616c[_0x379a('0x52')]=_0x49616c['attributes'][_0x379a('0x53')]?_0x49616c[_0x379a('0x52')]:_0x363ad6[_0x379a('0x4c')];_0x49616c[_0x379a('0x55')]=qs[_0x379a('0x56')](_0x5e6e07[_0x379a('0x4d')][_0x379a('0x56')]);_0x49616c['where']=qs[_0x379a('0x4f')](_[_0x379a('0x57')](_0x5e6e07[_0x379a('0x4d')],_0x363ad6[_0x379a('0x4f')]));if(_0x5e6e07[_0x379a('0x4d')][_0x379a('0x58')]){_0x49616c['where']=_[_0x379a('0x5a')](_0x49616c[_0x379a('0x59')],{'$or':_[_0x379a('0x46')](_0x49616c[_0x379a('0x52')],function(_0x25a7c7){var _0xfa58d2={};_0xfa58d2[_0x25a7c7]={'$like':'%'+_0x5e6e07['query'][_0x379a('0x58')]+'%'};return _0xfa58d2;})});}_0x49616c=_[_0x379a('0x5a')]({},_0x49616c,_0x5e6e07['options']);return _0x57e429[_0x379a('0x90')](_0x49616c);}})[_0x379a('0xf')](function(_0x279213){if(_0x279213){_0x3c46d0=_0x279213[_0x379a('0x53')];if(!_0x5e6e07[_0x379a('0x4d')][_0x379a('0x54')]('nolimit')){_0x49616c[_0x379a('0x1f')]=qs['limit'](_0x5e6e07[_0x379a('0x4d')][_0x379a('0x1f')]);_0x49616c[_0x379a('0x1e')]=qs[_0x379a('0x1e')](_0x5e6e07['query'][_0x379a('0x1e')]);}return _0x57e429[_0x379a('0x90')](_0x49616c);}})[_0x379a('0xf')](function(_0x2f76c3){if(_0x2f76c3){return _0x2f76c3?{'count':_0x3c46d0,'rows':_0x2f76c3}:null;}})['then'](respondWithResult(_0x52898d,null))['catch'](handleError(_0x52898d,null));};exports[_0x379a('0x91')]=function(_0x576e69,_0x41cb58){var _0x3b48e8={'raw':!![],'where':{}};var _0x44c81a={};var _0x4c98eb={'count':0x0,'rows':[]};return db[_0x379a('0x47')]['findOne']({'where':{'id':_0x576e69['params']['id']}})['then'](handleEntityNotFound(_0x41cb58,null))[_0x379a('0xf')](function(_0x3b1850){if(_0x3b1850){_0x44c81a[_0x379a('0x4c')]=_[_0x379a('0x4e')](db[_0x379a('0x92')][_0x379a('0x48')]);_0x44c81a[_0x379a('0x4d')]=_[_0x379a('0x4e')](_0x576e69[_0x379a('0x4d')]);_0x44c81a[_0x379a('0x4f')]=_[_0x379a('0x50')](_0x44c81a['model'],_0x44c81a[_0x379a('0x4d')]);_0x3b48e8[_0x379a('0x52')]=_[_0x379a('0x50')](_0x44c81a['model'],qs[_0x379a('0x51')](_0x576e69['query'][_0x379a('0x51')]));_0x3b48e8[_0x379a('0x52')]=_0x3b48e8[_0x379a('0x52')][_0x379a('0x53')]?_0x3b48e8[_0x379a('0x52')]:_0x44c81a[_0x379a('0x4c')];if(!_0x576e69[_0x379a('0x4d')][_0x379a('0x54')](_0x379a('0x6f'))){_0x3b48e8[_0x379a('0x1f')]=qs[_0x379a('0x1f')](_0x576e69[_0x379a('0x4d')]['limit']);_0x3b48e8[_0x379a('0x1e')]=qs['offset'](_0x576e69[_0x379a('0x4d')][_0x379a('0x1e')]);}_0x3b48e8[_0x379a('0x55')]=qs[_0x379a('0x56')](_0x576e69[_0x379a('0x4d')]['sort']);_0x3b48e8[_0x379a('0x59')]=qs['filters'](_['pick'](_0x576e69[_0x379a('0x4d')],_0x44c81a[_0x379a('0x4f')]));_0x3b48e8[_0x379a('0x59')][_0x379a('0x6a')]=_0x3b1850['id'];if(_0x576e69[_0x379a('0x4d')]['filter']){_0x3b48e8[_0x379a('0x59')]=_[_0x379a('0x5a')](_0x3b48e8['where'],{'$or':_[_0x379a('0x46')](_0x3b48e8['attributes'],function(_0x329b9f){var _0x1eac7c={};_0x1eac7c[_0x329b9f]={'$like':'%'+_0x576e69[_0x379a('0x4d')][_0x379a('0x58')]+'%'};return _0x1eac7c;})});}if(_0x576e69['query'][_0x379a('0x93')]){var _0x17ca31=_0x576e69[_0x379a('0x4d')][_0x379a('0x93')]['split'](',');var _0x47fdbe={};_0x47fdbe[_0x17ca31[0x0]]={'$gte':moment(_0x17ca31[0x1])[_0x379a('0x94')](_0x379a('0x95'))};_0x3b48e8[_0x379a('0x59')]=_[_0x379a('0x5a')](_0x3b48e8[_0x379a('0x59')],_0x47fdbe);}_0x3b48e8=_[_0x379a('0x5a')]({},_0x3b48e8,_0x576e69[_0x379a('0x62')]);return db['MailMessage']['count']({'where':_0x3b48e8['where']})[_0x379a('0xf')](function(_0x5664c0){_0x4c98eb[_0x379a('0x5c')]=_0x5664c0;if(_0x576e69[_0x379a('0x4d')][_0x379a('0x61')]){_0x3b48e8[_0x379a('0x5d')]=[{'all':!![]}];}return db[_0x379a('0x92')][_0x379a('0x70')](_0x3b48e8);})[_0x379a('0xf')](function(_0x1953b0){if(_0x576e69[_0x379a('0x4d')][_0x379a('0x96')]===_0x379a('0x97')){for(var _0x56179e=0x0;_0x56179e<_0x1953b0['length'];_0x56179e++){_0x1953b0[_0x56179e][_0x379a('0x63')]=juice(_0x1953b0[_0x56179e][_0x379a('0x63')]);}}_0x4c98eb[_0x379a('0x5e')]=_0x1953b0;return _0x4c98eb;});}})[_0x379a('0xf')](respondWithFilteredResult(_0x41cb58,_0x3b48e8))[_0x379a('0x1a')](handleError(_0x41cb58,null));};exports['send']=function(_0x52f6ab,_0x512143){var _0x182d91,_0x10a098={},_0x507961;if(_0x52f6ab[_0x379a('0x63')]['to']){_0x507961=_0x52f6ab[_0x379a('0x63')]['to'][_0x379a('0x98')](',')[0x0];}return db[_0x379a('0x47')][_0x379a('0x69')]({'where':{'id':_0x52f6ab['params']['id']},'include':[{'model':db[_0x379a('0x99')],'as':_0x379a('0x9a'),'include':[{'model':db['CmContact'],'as':_0x379a('0x9b'),'where':{'email':_0x507961},'limit':0x1,'order':[[_0x379a('0x9c'),_0x379a('0x9d')]]}]},{'model':db[_0x379a('0x43')],'as':_0x379a('0x41'),'raw':!![],'include':[{'model':db[_0x379a('0x9e')],'as':_0x379a('0x9e'),'raw':!![]}]}]})[_0x379a('0xf')](handleEntityNotFound(_0x512143,null))['then'](function(_0x12877e){if(!_0x12877e)return;_0x182d91=_0x12877e;if(!_0x12877e['Smtp'])throw new Error(_0x379a('0x9f'));if(_[_0x379a('0x78')](_0x52f6ab[_0x379a('0x63')][_0x379a('0xa0')])){_0x52f6ab['body'][_0x379a('0xa0')]=util[_0x379a('0x94')]('%s\x20<%s>',_0x12877e[_0x379a('0x28')],_0x12877e[_0x379a('0x76')]||_0x12877e[_0x379a('0x41')][_0x379a('0x36')]);}if(_0x52f6ab[_0x379a('0x63')][_0x379a('0xa1')]&&_0x52f6ab[_0x379a('0x63')][_0x379a('0xa1')][_0x379a('0x53')]){for(var _0x1c2140=0x0;_0x1c2140<_0x52f6ab[_0x379a('0x63')][_0x379a('0xa1')][_0x379a('0x53')];_0x1c2140+=0x1){_0x52f6ab[_0x379a('0x63')][_0x379a('0xa1')][_0x1c2140]={'filename':_0x52f6ab['body'][_0x379a('0xa1')][_0x1c2140][_0x379a('0x28')],'path':path[_0x379a('0xa2')](config['root'],'server/files/attachments',_0x52f6ab['body']['attachments'][_0x1c2140][_0x379a('0xa3')])};}}var _0x1874ea=_0x12877e[_0x379a('0xa4')]();return respondWithRpcPromise(_0x379a('0xa5'),_0x379a('0xa6'),{'account':_0x1874ea,'message':_0x52f6ab[_0x379a('0x63')]});})[_0x379a('0xf')](function(_0x2c2cc1){if(!_0x2c2cc1)return;_0x10a098=_0x2c2cc1;if(!_0x182d91[_0x379a('0x9a')])throw new Error(_0x379a('0xa7'));if(_0x182d91[_0x379a('0x9a')][_0x379a('0x9b')][_0x379a('0x53')])return _0x182d91['List'][_0x379a('0x9b')][0x0];return db[_0x379a('0x85')][_0x379a('0x6c')](_[_0x379a('0xa')](_0x52f6ab[_0x379a('0x63')],{'firstName':_0x52f6ab[_0x379a('0x63')]['to'],'email':_0x52f6ab[_0x379a('0x63')]['to'],'phone':_0x52f6ab[_0x379a('0x63')]['to'],'ListId':_0x182d91[_0x379a('0x77')]}));})[_0x379a('0xf')](function(_0x1ad230){if(!_0x1ad230)return;var _0x4f432d={'UserId':_0x52f6ab[_0x379a('0x36')]['id'],'ContactId':_0x1ad230['id'],'MailAccountId':_0x182d91['id'],'inReplyTo':_0x10a098[_0x379a('0xa8')],'to':_0x52f6ab['body'][_0x379a('0xa0')],'cc':_0x52f6ab[_0x379a('0x63')]['cc'],'subject':_0x52f6ab[_0x379a('0x63')]['subject'],'attach':_0x52f6ab[_0x379a('0x63')]['attach'],'firstMsgDirection':_0x379a('0xa9'),'lastMsgAt':moment()[_0x379a('0x94')](_0x379a('0x95')),'lastMsgDirection':_0x379a('0xa9'),'Messages':[_[_0x379a('0x5a')](_0x52f6ab['body'],{'messageId':_0x10a098[_0x379a('0xa8')],'sentAt':moment()[_0x379a('0x94')](_0x379a('0x95')),'read':!![],'MailAccountId':_0x182d91['id'],'UserId':_0x52f6ab['user']['id'],'ContactId':_0x1ad230['id']})]};if(_0x52f6ab[_0x379a('0x63')][_0x379a('0xaa')]){_0x4f432d=_['merge'](_0x4f432d,_0x52f6ab[_0x379a('0x63')]['Interaction']);}return db[_0x379a('0x83')][_0x379a('0x6c')](_0x4f432d,{'include':[{'model':db[_0x379a('0x92')],'as':'Messages'}]});})[_0x379a('0xf')](respondWithResult(_0x512143,null))[_0x379a('0x1a')](handleError(_0x512143,null));};exports[_0x379a('0xab')]=function(_0x231a4b,_0x23dfbd){return db[_0x379a('0x47')]['find']({'where':{'id':_0x231a4b[_0x379a('0x66')]['id']},'include':[{'model':db[_0x379a('0x43')],'as':_0x379a('0x41'),'raw':!![],'include':[{'model':db[_0x379a('0x9e')],'as':'CloudProvider','raw':!![]}]}]})[_0x379a('0xf')](handleEntityNotFound(_0x23dfbd,null))[_0x379a('0xf')](function(_0x1d3f36){if(!_0x1d3f36[_0x379a('0x41')])return;var _0x3150ea=_0x1d3f36[_0x379a('0xa4')]();return respondWithRpcPromise('VerifySmtp',_0x379a('0xab'),{'account':_0x3150ea});})[_0x379a('0xf')](respondWithResult(_0x23dfbd,null))[_0x379a('0x1a')](handleError(_0x23dfbd,null));};exports[_0x379a('0x26')]=function(_0x46ee64,_0x456260){return db[_0x379a('0x47')][_0x379a('0x69')]({'where':{'id':_0x46ee64['params']['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x456260,null))['then'](function(_0x2ee5c3){if(_0x2ee5c3&&_0x2ee5c3[_0x379a('0x3e')]){throw new db[(_0x379a('0xac'))][(_0x379a('0xad'))](_0x379a('0xae'));}return _0x2ee5c3;})[_0x379a('0xf')](removeEntity(_0x456260,null))['catch'](handleError(_0x456260,null));};exports[_0x379a('0xaf')]=function(_0x5cc82c,_0x2044ee){return db[_0x379a('0x47')][_0x379a('0x69')]({'where':{'id':_0x5cc82c['params']['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x2044ee,null))[_0x379a('0xf')](function(_0x211d8f){if(_0x211d8f){return _0x211d8f['addAgents'](_0x5cc82c[_0x379a('0x63')][_0x379a('0x72')],_[_0x379a('0x84')](_0x5cc82c['body'],[_0x379a('0x72'),'id'])||{})[_0x379a('0xb0')](function(_0x445f11){for(var _0x4befc5=0x0;_0x4befc5<_0x5cc82c[_0x379a('0x63')][_0x379a('0x72')][_0x379a('0x53')];_0x4befc5+=0x1){socket['emit'](_0x379a('0xb1'),{'UserId':Number(_0x5cc82c[_0x379a('0x63')][_0x379a('0x72')][_0x4befc5]),'MailAccountId':Number(_0x5cc82c['params']['id'])});}return _0x445f11;});}})[_0x379a('0xf')](respondWithResult(_0x2044ee,null))[_0x379a('0x1a')](handleError(_0x2044ee,null));};exports[_0x379a('0xb2')]=function(_0x4df729,_0x10c709){return db[_0x379a('0x47')][_0x379a('0x69')]({'where':{'id':_0x4df729[_0x379a('0x66')]['id']}})['then'](handleEntityNotFound(_0x10c709,null))[_0x379a('0xf')](function(_0x44f4f6){if(_0x44f4f6){return _0x44f4f6[_0x379a('0xb2')](_0x4df729[_0x379a('0x4d')]['ids'])['then'](function(){if(_[_0x379a('0xb3')](_0x4df729['query'][_0x379a('0x72')])){for(var _0x303b90=0x0;_0x303b90<_0x4df729[_0x379a('0x4d')]['ids'][_0x379a('0x53')];_0x303b90+=0x1){socket[_0x379a('0xb4')](_0x379a('0xb5'),{'UserId':Number(_0x4df729[_0x379a('0x4d')][_0x379a('0x72')][_0x303b90]),'MailAccountId':Number(_0x4df729[_0x379a('0x66')]['id'])});}}else{socket[_0x379a('0xb4')]('userMailAccount:remove',{'UserId':Number(_0x4df729[_0x379a('0x4d')][_0x379a('0x72')]),'MailAccountId':Number(_0x4df729[_0x379a('0x66')]['id'])});}});}})[_0x379a('0xf')](respondWithStatusCode(_0x10c709,null))['catch'](handleError(_0x10c709,null));};exports[_0x379a('0xb6')]=function(_0x1adde2,_0x34ff55){var _0x7c92d6={};var _0x24cb0e={};var _0x58418d;var _0x59ecee;return db['MailAccount'][_0x379a('0x6e')]({'where':{'id':_0x1adde2['params']['id']}})[_0x379a('0xf')](handleEntityNotFound(_0x34ff55,null))[_0x379a('0xf')](function(_0x2070ed){if(_0x2070ed){_0x58418d=_0x2070ed;_0x24cb0e[_0x379a('0x4c')]=_[_0x379a('0x4e')](db['User'][_0x379a('0x48')]);_0x24cb0e[_0x379a('0x4d')]=_[_0x379a('0x4e')](_0x1adde2[_0x379a('0x4d')]);_0x24cb0e['filters']=_[_0x379a('0x50')](_0x24cb0e['model'],_0x24cb0e[_0x379a('0x4d')]);_0x7c92d6['attributes']=_[_0x379a('0x50')](_0x24cb0e[_0x379a('0x4c')],qs[_0x379a('0x51')](_0x1adde2[_0x379a('0x4d')][_0x379a('0x51')]));_0x7c92d6[_0x379a('0x52')]=_0x7c92d6[_0x379a('0x52')]['length']?_0x7c92d6['attributes']:_0x24cb0e[_0x379a('0x4c')];_0x7c92d6[_0x379a('0x55')]=qs[_0x379a('0x56')](_0x1adde2[_0x379a('0x4d')][_0x379a('0x56')]);_0x7c92d6[_0x379a('0x59')]=qs['filters'](_[_0x379a('0x57')](_0x1adde2[_0x379a('0x4d')],_0x24cb0e[_0x379a('0x4f')]));if(_0x1adde2[_0x379a('0x4d')][_0x379a('0x58')]){_0x7c92d6[_0x379a('0x59')]=_[_0x379a('0x5a')](_0x7c92d6[_0x379a('0x59')],{'$or':_[_0x379a('0x46')](_0x7c92d6[_0x379a('0x52')],function(_0x10b23e){var _0x39b93e={};_0x39b93e[_0x10b23e]={'$like':'%'+_0x1adde2[_0x379a('0x4d')][_0x379a('0x58')]+'%'};return _0x39b93e;})});}_0x7c92d6=_[_0x379a('0x5a')]({},_0x7c92d6,_0x1adde2[_0x379a('0x62')]);return _0x58418d[_0x379a('0xb6')](_0x7c92d6);}})[_0x379a('0xf')](function(_0x70bf17){if(_0x70bf17){_0x59ecee=_0x70bf17[_0x379a('0x53')];if(!_0x1adde2[_0x379a('0x4d')][_0x379a('0x54')](_0x379a('0x6f'))){_0x7c92d6[_0x379a('0x1f')]=qs[_0x379a('0x1f')](_0x1adde2['query'][_0x379a('0x1f')]);_0x7c92d6[_0x379a('0x1e')]=qs['offset'](_0x1adde2[_0x379a('0x4d')]['offset']);}return _0x58418d[_0x379a('0xb6')](_0x7c92d6);}})[_0x379a('0xf')](function(_0x424b3d){if(_0x424b3d){return _0x424b3d?{'count':_0x59ecee,'rows':_0x424b3d}:null;}})['then'](respondWithResult(_0x34ff55,null))['catch'](handleError(_0x34ff55,null));};
\ No newline at end of file
index 6b4124d..465affd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd70e=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xd70e,0x157));var _0xed70=function(_0x42d91a,_0x11cf2b){_0x42d91a=_0x42d91a-0x0;var _0x5dab1d=_0xd70e[_0x42d91a];return _0x5dab1d;};'use strict';var EventEmitter=require(_0xed70('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xed70('0x1')](0x0);var events={'afterCreate':_0xed70('0x2'),'afterUpdate':_0xed70('0x3'),'afterDestroy':_0xed70('0x4')};function emitEvent(_0x269875){return function(_0x411dcd,_0x289ce9,_0x54f657){MailAccountEvents[_0xed70('0x5')](_0x269875+':'+_0x411dcd['id'],_0x411dcd);MailAccountEvents[_0xed70('0x5')](_0x269875,_0x411dcd);_0x54f657(null);};}for(var e in events){if(events[_0xed70('0x6')](e)){var event=events[e];MailAccount[_0xed70('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0x5324=['update','emit','hasOwnProperty','hook','events','../../mysqldb','MailAccount','setMaxListeners'];(function(_0x170c68,_0xed27db){var _0x299b81=function(_0x339602){while(--_0x339602){_0x170c68['push'](_0x170c68['shift']());}};_0x299b81(++_0xed27db);}(_0x5324,0x154));var _0x4532=function(_0x504b15,_0x140137){_0x504b15=_0x504b15-0x0;var _0x67817d=_0x5324[_0x504b15];return _0x67817d;};'use strict';var EventEmitter=require(_0x4532('0x0'));var MailAccount=require(_0x4532('0x1'))['db'][_0x4532('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x4532('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4532('0x4'),'afterDestroy':'remove'};function emitEvent(_0x41b813){return function(_0x2752ef,_0x22f0cc,_0x16b937){MailAccountEvents[_0x4532('0x5')](_0x41b813+':'+_0x2752ef['id'],_0x2752ef);MailAccountEvents[_0x4532('0x5')](_0x41b813,_0x2752ef);_0x16b937(null);};}for(var e in events){if(events[_0x4532('0x6')](e)){var event=events[e];MailAccount[_0x4532('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 83e61ab..78b8afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3858=['custom','host','port','Smtp','secure','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','OAuth2','data5','auth','user','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x3858,0x12c));var _0x8385=function(_0x17a24b,_0x3b5681){_0x17a24b=_0x17a24b-0x0;var _0x13e323=_0x3858[_0x17a24b];return _0x13e323;};'use strict';var attributes=require(_0x8385('0x0'));module[_0x8385('0x1')]=function(_0x467c8d){return _0x467c8d[_0x8385('0x2')](_0x8385('0x3'),attributes,{'tableName':_0x8385('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x1f0382=this;var _0x1d4a89={'id':_0x1f0382['id'],'tls':{'rejectUnauthorized':![]}};if(_0x1f0382[_0x8385('0x5')]!==_0x8385('0x6')){_0x1d4a89['service']=_0x1f0382['provider'];}else{_0x1d4a89[_0x8385('0x7')]=_0x1f0382['Smtp'][_0x8385('0x7')];_0x1d4a89[_0x8385('0x8')]=_0x1f0382[_0x8385('0x9')][_0x8385('0x8')];_0x1d4a89[_0x8385('0xa')]=_0x1f0382['Smtp']['secure'];}if(_0x1f0382['Smtp']['authentication']){if(_0x1f0382['Smtp'][_0x8385('0xb')]){if(!_0x1f0382[_0x8385('0x9')][_0x8385('0xc')])throw new Error(_0x8385('0xd'));_0x1d4a89['auth']={'type':_0x8385('0xe'),'user':_0x1f0382['Smtp']['user'],'accessToken':_0x1f0382['Smtp'][_0x8385('0xc')][_0x8385('0xf')]};}else{_0x1d4a89[_0x8385('0x10')]={'user':_0x1f0382['Smtp'][_0x8385('0x11')],'pass':_0x1f0382[_0x8385('0x9')]['pass']};}}return _0x1d4a89;}}});};
\ No newline at end of file
+var _0xa511=['host','secure','Smtp','authentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2','data5','user','MailAccount','mail_accounts','provider','custom','service'];(function(_0x225896,_0x2375e6){var _0xc9e16b=function(_0x4b9071){while(--_0x4b9071){_0x225896['push'](_0x225896['shift']());}};_0xc9e16b(++_0x2375e6);}(_0xa511,0x1ae));var _0x1a51=function(_0x51669d,_0x120c0a){_0x51669d=_0x51669d-0x0;var _0x5aac23=_0xa511[_0x51669d];return _0x5aac23;};'use strict';var attributes=require('./mailAccount.attributes');module['exports']=function(_0x3d9ee4){return _0x3d9ee4['define'](_0x1a51('0x0'),attributes,{'tableName':_0x1a51('0x1'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x3beb13=this;var _0x57adb6={'id':_0x3beb13['id'],'tls':{'rejectUnauthorized':![]}};if(_0x3beb13[_0x1a51('0x2')]!==_0x1a51('0x3')){_0x57adb6[_0x1a51('0x4')]=_0x3beb13[_0x1a51('0x2')];}else{_0x57adb6[_0x1a51('0x5')]=_0x3beb13['Smtp'][_0x1a51('0x5')];_0x57adb6['port']=_0x3beb13['Smtp']['port'];_0x57adb6[_0x1a51('0x6')]=_0x3beb13[_0x1a51('0x7')][_0x1a51('0x6')];}if(_0x3beb13[_0x1a51('0x7')][_0x1a51('0x8')]){if(_0x3beb13[_0x1a51('0x7')]['modernAuthentication']){if(!_0x3beb13[_0x1a51('0x7')][_0x1a51('0x9')])throw new Error(_0x1a51('0xa'));_0x57adb6[_0x1a51('0xb')]={'type':_0x1a51('0xc'),'user':_0x3beb13[_0x1a51('0x7')]['user'],'accessToken':_0x3beb13[_0x1a51('0x7')][_0x1a51('0x9')][_0x1a51('0xd')]};}else{_0x57adb6[_0x1a51('0xb')]={'user':_0x3beb13[_0x1a51('0x7')][_0x1a51('0xe')],'pass':_0x3beb13[_0x1a51('0x7')]['pass']};}}return _0x57adb6;}}});};
\ No newline at end of file
index a264f16..a5e727b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['Applications','MailServerOut','CloudProvider','get','omit','smtpOptions','list','applications','orderBy','priority','asc','autoclose','push','*,*,*,*','length','create','List\x20not\x20found','contact','messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','subject','interaction','created','originTo','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','name','waitForTheAssignedAgent','Start','startRouting','lodash','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','findAll','options','attributes','limit','include','map','model','find','where','setDataValue','getSmtpOptions','ShowMailAccount','body','mail','difference','keys','rawAttributes','createdAt','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','account','CmList','List','Contacts','MailApplication'];(function(_0x5f4b06,_0x1e2b0b){var _0x470874=function(_0x27836e){while(--_0x27836e){_0x5f4b06['push'](_0x5f4b06['shift']());}};_0x470874(++_0x1e2b0b);}(_0xef0f,0x168));var _0xfef0=function(_0x91d6b9,_0x10064a){_0x91d6b9=_0x91d6b9-0x0;var _0x4da36a=_0xef0f[_0x91d6b9];return _0x4da36a;};'use strict';var _=require(_0xfef0('0x0'));var moment=require('moment');var BPromise=require(_0xfef0('0x1'));var rs=require(_0xfef0('0x2'));var Redis=require(_0xfef0('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xfef0('0x4'))(_0xfef0('0x5'));var config=require(_0xfef0('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xfef0('0x7')][_0xfef0('0x8')]({'port':0x232c});config[_0xfef0('0x9')]=_[_0xfef0('0xa')](config[_0xfef0('0x9')],{'host':_0xfef0('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfef0('0x9')]));require('./mailAccount.socket')[_0xfef0('0xc')](socket);function respondWithRpcPromise(_0x100e3a,_0x3a81cc,_0x2d42dc){return new BPromise(function(_0x334e74,_0x402dff){return client[_0xfef0('0xd')](_0x100e3a,_0x2d42dc)[_0xfef0('0xe')](function(_0x11bbca){logger[_0xfef0('0xf')](_0xfef0('0x10'),_0x3a81cc,_0xfef0('0x11'));logger[_0xfef0('0x12')](_0xfef0('0x13'),_0x3a81cc,'request\x20sent',JSON[_0xfef0('0x14')](_0x11bbca));if(_0x11bbca[_0xfef0('0x15')]){if(_0x11bbca[_0xfef0('0x15')][_0xfef0('0x16')]===0x1f4){logger[_0xfef0('0x15')](_0xfef0('0x10'),_0x3a81cc,_0x11bbca[_0xfef0('0x15')]['message']);return _0x402dff(_0x11bbca[_0xfef0('0x15')]['message']);}logger['error']('MailAccount,\x20%s,\x20%s',_0x3a81cc,_0x11bbca[_0xfef0('0x15')][_0xfef0('0x17')]);return _0x334e74(_0x11bbca[_0xfef0('0x15')][_0xfef0('0x17')]);}else{logger[_0xfef0('0xf')](_0xfef0('0x10'),_0x3a81cc,_0xfef0('0x11'));_0x334e74(_0x11bbca[_0xfef0('0x18')]['message']);}})[_0xfef0('0x19')](function(_0x1642cd){logger[_0xfef0('0x15')](_0xfef0('0x10'),_0x3a81cc,_0x1642cd);_0x402dff(_0x1642cd);});});}exports[_0xfef0('0x1a')]=function(_0x55912f){var _0x5283e1=this;return new Promise(function(_0x4e24de,_0x20826b){return db[_0xfef0('0x1b')][_0xfef0('0x1c')]({'raw':_0x55912f['options']?_0x55912f[_0xfef0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x55912f[_0xfef0('0x1d')]?_0x55912f[_0xfef0('0x1d')]['where']||null:null,'attributes':_0x55912f['options']?_0x55912f['options'][_0xfef0('0x1e')]||null:null,'limit':_0x55912f['options']?_0x55912f[_0xfef0('0x1d')][_0xfef0('0x1f')]||null:null,'include':_0x55912f[_0xfef0('0x1d')]?_0x55912f[_0xfef0('0x1d')][_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x55912f['options']['include'],function(_0x316e20){return{'model':db[_0x316e20[_0xfef0('0x22')]],'as':_0x316e20['as'],'attributes':_0x316e20[_0xfef0('0x1e')],'include':_0x316e20[_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x316e20[_0xfef0('0x20')],function(_0x5df04f){return{'model':db[_0x5df04f[_0xfef0('0x22')]],'as':_0x5df04f['as'],'attributes':_0x5df04f[_0xfef0('0x1e')],'include':_0x5df04f['include']?_[_0xfef0('0x21')](_0x5df04f[_0xfef0('0x20')],function(_0xca0cce){return{'model':db[_0xca0cce[_0xfef0('0x22')]],'as':_0xca0cce['as'],'attributes':_0xca0cce[_0xfef0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfef0('0xe')](function(_0x3e3c4c){logger[_0xfef0('0xf')](_0xfef0('0x1a'),_0x55912f);logger[_0xfef0('0x12')](_0xfef0('0x1a'),_0x55912f,JSON[_0xfef0('0x14')](_0x3e3c4c));_0x4e24de(_0x3e3c4c);})['catch'](function(_0x445625){logger['error']('GetMailAccount',_0x445625[_0xfef0('0x17')],_0x55912f);_0x20826b(_0x5283e1[_0xfef0('0x15')](0x1f4,_0x445625['message']));});});};exports['ShowMailAccount']=function(_0x5cf518){var _0x4f65cd=this;return new Promise(function(_0x4cce8a,_0x417535){return db[_0xfef0('0x1b')][_0xfef0('0x23')]({'raw':_0x5cf518['options']?_0x5cf518['options']['raw']===undefined?!![]:![]:!![],'where':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518['options'][_0xfef0('0x24')]||null:null,'attributes':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518[_0xfef0('0x1d')]['attributes']||null:null,'include':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518['options'][_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x5cf518[_0xfef0('0x1d')][_0xfef0('0x20')],function(_0x3e1a64){return{'model':db[_0x3e1a64[_0xfef0('0x22')]],'as':_0x3e1a64['as'],'attributes':_0x3e1a64[_0xfef0('0x1e')],'include':_0x3e1a64[_0xfef0('0x20')]?_['map'](_0x3e1a64[_0xfef0('0x20')],function(_0xea09ec){return{'model':db[_0xea09ec[_0xfef0('0x22')]],'as':_0xea09ec['as'],'attributes':_0xea09ec[_0xfef0('0x1e')],'include':_0xea09ec[_0xfef0('0x20')]?_[_0xfef0('0x21')](_0xea09ec[_0xfef0('0x20')],function(_0xeb75e2){return{'model':db[_0xeb75e2[_0xfef0('0x22')]],'as':_0xeb75e2['as'],'attributes':_0xeb75e2[_0xfef0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfef0('0xe')](function(_0x22acf9){if(_0x5cf518[_0xfef0('0x1d')]['smtp']===!![])_0x22acf9[_0xfef0('0x25')]('smtpOptions',_0x22acf9[_0xfef0('0x26')]());logger[_0xfef0('0xf')](_0xfef0('0x27'),_0x5cf518);logger['debug'](_0xfef0('0x27'),_0x5cf518,JSON[_0xfef0('0x14')](_0x22acf9));_0x4cce8a(_0x22acf9);})[_0xfef0('0x19')](function(_0x5537c8){logger[_0xfef0('0x15')](_0xfef0('0x27'),_0x5537c8[_0xfef0('0x17')],_0x5cf518);_0x417535(_0x4f65cd['error'](0x1f4,_0x5537c8[_0xfef0('0x17')]));});});};exports['NotifyMailAccount']=function(_0x49ed48){var _0xf30aff=this;return new Promise(function(_0x547a5d,_0x5c3305){var _0xbf6ddd={'body':_0x49ed48[_0xfef0('0x28')],'channel':_0xfef0('0x29')};var _0x1a6593=_[_0xfef0('0x2a')](_[_0xfef0('0x2b')](db['CmContact'][_0xfef0('0x2c')]),[_0xfef0('0x2d'),'updatedAt','CompanyId',_0xfef0('0x2e')]);var _0x5dc824=![];if(_0x49ed48[_0xfef0('0x28')]['id']){delete _0x49ed48[_0xfef0('0x28')]['id'];}if(_[_0xfef0('0x2f')](_0x49ed48[_0xfef0('0x28')][_0xfef0('0x30')])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x31')));}if(_[_0xfef0('0x2f')](_0x49ed48['body'][_0xfef0('0x28')])||_0x49ed48['body']['body']===''){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x32')));}if(_['isNil'](_0x49ed48[_0xfef0('0x28')]['mapKey'])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x33')+_0x1a6593));}if(!_[_0xfef0('0x34')](_0x1a6593,_0x49ed48[_0xfef0('0x28')]['mapKey'])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x35')+_0x1a6593));}var _0x504967={};_0x504967[_0x49ed48['body'][_0xfef0('0x36')]]=_0x49ed48['body'][_0xfef0('0x30')];return db[_0xfef0('0x1b')][_0xfef0('0x23')]({'where':{'id':_0x49ed48[_0xfef0('0x37')]['id']},'include':[{'model':db[_0xfef0('0x38')],'as':_0xfef0('0x39'),'include':[{'model':db['CmContact'],'as':_0xfef0('0x3a'),'where':_0x504967,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xfef0('0x3b')],'as':_0xfef0('0x3c')},{'model':db[_0xfef0('0x3d')],'as':'Smtp','include':[{'model':db[_0xfef0('0x3e')],'as':'CloudProvider'}]}]})['then'](function(_0x51f207){if(_0x51f207&&_0x51f207[_0xfef0('0x39')]){var _0x3d471c=_0x51f207[_0xfef0('0x3f')]({'plain':!![]});_0xbf6ddd[_0xfef0('0x37')]=_[_0xfef0('0x40')](_0x3d471c,[_0xfef0('0x3c'),_0xfef0('0x39')]);_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x41')]=_0x51f207['getSmtpOptions']();_0xbf6ddd['applications']=_0x3d471c[_0xfef0('0x3c')];_0xbf6ddd[_0xfef0('0x42')]=_0x3d471c[_0xfef0('0x39')];_0xbf6ddd[_0xfef0('0x43')]=_[_0xfef0('0x44')](_0xbf6ddd[_0xfef0('0x43')],[_0xfef0('0x45')],[_0xfef0('0x46')]);if(_0xbf6ddd['account']&&_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x47')]){_0xbf6ddd[_0xfef0('0x43')][_0xfef0('0x48')]({'id':0x0,'priority':_0xbf6ddd[_0xfef0('0x43')]['length']+0x1,'app':'close','appdata':'autoclose','interval':_0xfef0('0x49')});}if(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x3c')]){delete _0xbf6ddd[_0xfef0('0x37')]['Applications'];}if(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x39')]){delete _0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x39')];}if(_0x3d471c[_0xfef0('0x39')][_0xfef0('0x3a')][_0xfef0('0x4a')]){return _0x3d471c['List'][_0xfef0('0x3a')][0x0];}var _0x163255=_['defaults'](_0x49ed48[_0xfef0('0x28')],{'firstName':_0x49ed48['body'][_0xfef0('0x30')],'ListId':_0x3d471c[_0xfef0('0x2e')]});_0x163255[_0x49ed48['body'][_0xfef0('0x36')]]=_0x49ed48['body']['from'];return db['CmContact'][_0xfef0('0x4b')](_0x163255);}else{throw new Error(_0xfef0('0x4c'));}})[_0xfef0('0xe')](function(_0x34fda3){_0xbf6ddd[_0xfef0('0x4d')]=_0x34fda3;if(_0x34fda3){if(!_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x4e')]){_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')]=rs[_0xfef0('0x4f')]()+'\x20'+_0x49ed48['body'][_0xfef0('0x17')]['from'];}var _0x135653={'ContactId':_0x34fda3['id'],'MailAccountId':_0x49ed48['account']['id'],'inReplyTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')],'to':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['from'],'cc':_0x49ed48[_0xfef0('0x28')]['message']['cc'],'subject':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['subject'],'attach':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x50')],'lastMsgAt':moment()[_0xfef0('0x51')](_0xfef0('0x52')),'lastMsgDirection':'in'};return db[_0xfef0('0x53')][_0xfef0('0x23')]({'where':{'closed':![],'MailAccountId':_0x49ed48[_0xfef0('0x37')]['id']},'include':[{'model':db[_0xfef0('0x54')],'as':_0xfef0('0x55'),'attributes':[_0xfef0('0x4e')],'where':{'messageId':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x56')]}}]})[_0xfef0('0xe')](function(_0x28cab7){if(_0x28cab7){return[_0x28cab7,![]];}return db[_0xfef0('0x53')][_0xfef0('0x4b')](_0x135653)['then'](function(_0x12e383){return[_0x12e383,!![]];});});}else{throw new Error(_0xfef0('0x57'));}})[_0xfef0('0x58')](function(_0x3c6bb8,_0x176fc7){if(_0x3c6bb8){_0x5dc824=_0x176fc7;if(!_0x176fc7){return _0x3c6bb8[_0xfef0('0x59')]({'inReplyTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')],'to':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x30')],'cc':_0x49ed48['body'][_0xfef0('0x17')]['cc'],'subject':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x5a')],'attach':_0x3c6bb8[_0xfef0('0x50')]?_0x3c6bb8[_0xfef0('0x50')]:_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['attach'],'substatus':null,'substatusAt':moment()[_0xfef0('0x51')](_0xfef0('0x52')),'lastMsgAt':moment()[_0xfef0('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x3c6bb8;}}})[_0xfef0('0xe')](function(_0x2ab666){_0xbf6ddd[_0xfef0('0x5b')]=_0x2ab666[_0xfef0('0x3f')]({'plain':!![]});_0xbf6ddd[_0xfef0('0x5b')][_0xfef0('0x5c')]=_0x5dc824;return db[_0xfef0('0x54')]['create']({'body':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x28')],'MailAccountId':_0x49ed48[_0xfef0('0x37')]['id'],'MailInteractionId':_0x2ab666['id'],'direction':'in','ContactId':_0xbf6ddd[_0xfef0('0x4d')]['id'],'messageId':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['messageId'],'from':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x30')],'to':_0x49ed48[_0xfef0('0x28')]['message']['to'],'cc':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['cc'],'subject':_0x49ed48['body'][_0xfef0('0x17')][_0xfef0('0x5a')],'attach':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x50')],'Attachments':_0x49ed48['body']['message']['attachments'],'originTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x5d')],'originCc':_0x49ed48['body'][_0xfef0('0x17')]['originCc'],'bcc':_0x49ed48['body']['message'][_0xfef0('0x5e')],'ChatWebsiteId':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x5f')]||null,'originChannel':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['originChannel']||_0xfef0('0x60'),'ChatOfflineMessageId':_0x49ed48['body']['message'][_0xfef0('0x61')]||null},{'include':[{'model':db[_0xfef0('0x62')],'as':_0xfef0('0x63')}]});})[_0xfef0('0xe')](function(_0x4df63b){_0xbf6ddd['message']=_0x4df63b;if(_0xbf6ddd['interaction'][_0xfef0('0x64')]){return db['User'][_0xfef0('0x23')]({'attributes':['id',_0xfef0('0x65')],'where':{'id':_0xbf6ddd[_0xfef0('0x5b')][_0xfef0('0x64')]}})[_0xfef0('0xe')](function(_0x4be622){if(_0x4be622){_0xbf6ddd[_0xfef0('0x43')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4be622[_0xfef0('0x65')]+','+(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x66')]||0xa),'interval':_0xfef0('0x49')});}return respondWithRpcPromise('Start','startRouting',_0xbf6ddd);});}return respondWithRpcPromise(_0xfef0('0x67'),_0xfef0('0x68'),_0xbf6ddd);})['then'](function(_0x872f99){_0x547a5d(_0x872f99);})[_0xfef0('0x19')](function(_0x4690c0){_0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0x4690c0[_0xfef0('0x17')]));});});};
\ No newline at end of file
+var _0x5fab=['DESC','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','omit','smtpOptions','getSmtpOptions','applications','orderBy','priority','push','length','close','autoclose','*,*,*,*','defaults','ListId','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','spread','interaction','get','created','create','attachments','originTo','originCc','bcc','originChannel','Email','Attachment','Attachments','UserId','name','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','findAll','options','attributes','limit','include','model','map','ShowMailAccount','find','where','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','account','CmList','List','Contacts','updatedAt'];(function(_0x2d9535,_0x4bc592){var _0xb4e710=function(_0x50b9a9){while(--_0x50b9a9){_0x2d9535['push'](_0x2d9535['shift']());}};_0xb4e710(++_0x4bc592);}(_0x5fab,0x177));var _0xb5fa=function(_0x103ff9,_0x576a4d){_0x103ff9=_0x103ff9-0x0;var _0x40693e=_0x5fab[_0x103ff9];return _0x40693e;};'use strict';var _=require(_0xb5fa('0x0'));var moment=require(_0xb5fa('0x1'));var BPromise=require('bluebird');var rs=require(_0xb5fa('0x2'));var Redis=require(_0xb5fa('0x3'));var db=require(_0xb5fa('0x4'))['db'];var logger=require(_0xb5fa('0x5'))(_0xb5fa('0x6'));var config=require(_0xb5fa('0x7'));var jayson=require(_0xb5fa('0x8'));var client=jayson[_0xb5fa('0x9')][_0xb5fa('0xa')]({'port':0x232c});config[_0xb5fa('0xb')]=_['defaults'](config['redis'],{'host':_0xb5fa('0xc'),'port':0x18eb});var socket=require(_0xb5fa('0xd'))(new Redis(config[_0xb5fa('0xb')]));require('./mailAccount.socket')[_0xb5fa('0xe')](socket);function respondWithRpcPromise(_0x38d9a3,_0x2cf4a5,_0x54c7eb){return new BPromise(function(_0x5b5ea8,_0x3a8e1b){return client[_0xb5fa('0xf')](_0x38d9a3,_0x54c7eb)[_0xb5fa('0x10')](function(_0x44e6c8){logger[_0xb5fa('0x11')](_0xb5fa('0x12'),_0x2cf4a5,_0xb5fa('0x13'));logger[_0xb5fa('0x14')](_0xb5fa('0x15'),_0x2cf4a5,'request\x20sent',JSON[_0xb5fa('0x16')](_0x44e6c8));if(_0x44e6c8[_0xb5fa('0x17')]){if(_0x44e6c8['error'][_0xb5fa('0x18')]===0x1f4){logger['error'](_0xb5fa('0x12'),_0x2cf4a5,_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);return _0x3a8e1b(_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);}logger['error']('MailAccount,\x20%s,\x20%s',_0x2cf4a5,_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);return _0x5b5ea8(_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x2cf4a5,_0xb5fa('0x13'));_0x5b5ea8(_0x44e6c8[_0xb5fa('0x1a')][_0xb5fa('0x19')]);}})[_0xb5fa('0x1b')](function(_0x324ba5){logger[_0xb5fa('0x17')](_0xb5fa('0x12'),_0x2cf4a5,_0x324ba5);_0x3a8e1b(_0x324ba5);});});}exports[_0xb5fa('0x1c')]=function(_0xc14dc4){var _0x368cb1=this;return new Promise(function(_0x3c8d53,_0x1f5064){return db['MailAccount'][_0xb5fa('0x1d')]({'raw':_0xc14dc4['options']?_0xc14dc4[_0xb5fa('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0xc14dc4[_0xb5fa('0x1e')]?_0xc14dc4[_0xb5fa('0x1e')]['where']||null:null,'attributes':_0xc14dc4[_0xb5fa('0x1e')]?_0xc14dc4[_0xb5fa('0x1e')][_0xb5fa('0x1f')]||null:null,'limit':_0xc14dc4['options']?_0xc14dc4[_0xb5fa('0x1e')][_0xb5fa('0x20')]||null:null,'include':_0xc14dc4[_0xb5fa('0x1e')]?_0xc14dc4['options'][_0xb5fa('0x21')]?_['map'](_0xc14dc4[_0xb5fa('0x1e')][_0xb5fa('0x21')],function(_0x11053a){return{'model':db[_0x11053a[_0xb5fa('0x22')]],'as':_0x11053a['as'],'attributes':_0x11053a[_0xb5fa('0x1f')],'include':_0x11053a[_0xb5fa('0x21')]?_[_0xb5fa('0x23')](_0x11053a[_0xb5fa('0x21')],function(_0x568870){return{'model':db[_0x568870['model']],'as':_0x568870['as'],'attributes':_0x568870['attributes'],'include':_0x568870['include']?_[_0xb5fa('0x23')](_0x568870[_0xb5fa('0x21')],function(_0x12c0d4){return{'model':db[_0x12c0d4[_0xb5fa('0x22')]],'as':_0x12c0d4['as'],'attributes':_0x12c0d4[_0xb5fa('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb5fa('0x10')](function(_0x358549){logger[_0xb5fa('0x11')](_0xb5fa('0x1c'),_0xc14dc4);logger[_0xb5fa('0x14')](_0xb5fa('0x1c'),_0xc14dc4,JSON[_0xb5fa('0x16')](_0x358549));_0x3c8d53(_0x358549);})[_0xb5fa('0x1b')](function(_0x1f4380){logger[_0xb5fa('0x17')](_0xb5fa('0x1c'),_0x1f4380[_0xb5fa('0x19')],_0xc14dc4);_0x1f5064(_0x368cb1[_0xb5fa('0x17')](0x1f4,_0x1f4380[_0xb5fa('0x19')]));});});};exports[_0xb5fa('0x24')]=function(_0x291938){var _0x370d95=this;return new Promise(function(_0x10fb43,_0x25fc7c){return db['MailAccount'][_0xb5fa('0x25')]({'raw':_0x291938['options']?_0x291938['options']['raw']===undefined?!![]:![]:!![],'where':_0x291938[_0xb5fa('0x1e')]?_0x291938['options'][_0xb5fa('0x26')]||null:null,'attributes':_0x291938['options']?_0x291938['options'][_0xb5fa('0x1f')]||null:null,'include':_0x291938[_0xb5fa('0x1e')]?_0x291938['options']['include']?_[_0xb5fa('0x23')](_0x291938[_0xb5fa('0x1e')][_0xb5fa('0x21')],function(_0x560b53){return{'model':db[_0x560b53[_0xb5fa('0x22')]],'as':_0x560b53['as'],'attributes':_0x560b53[_0xb5fa('0x1f')],'include':_0x560b53['include']?_[_0xb5fa('0x23')](_0x560b53[_0xb5fa('0x21')],function(_0x204d6b){return{'model':db[_0x204d6b['model']],'as':_0x204d6b['as'],'attributes':_0x204d6b[_0xb5fa('0x1f')],'include':_0x204d6b[_0xb5fa('0x21')]?_[_0xb5fa('0x23')](_0x204d6b['include'],function(_0x117694){return{'model':db[_0x117694[_0xb5fa('0x22')]],'as':_0x117694['as'],'attributes':_0x117694[_0xb5fa('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb5fa('0x10')](function(_0x5e7770){if(_0x291938['options']['smtp']===!![])_0x5e7770['setDataValue']('smtpOptions',_0x5e7770['getSmtpOptions']());logger[_0xb5fa('0x11')]('ShowMailAccount',_0x291938);logger[_0xb5fa('0x14')](_0xb5fa('0x24'),_0x291938,JSON[_0xb5fa('0x16')](_0x5e7770));_0x10fb43(_0x5e7770);})[_0xb5fa('0x1b')](function(_0x40c1c0){logger[_0xb5fa('0x17')]('ShowMailAccount',_0x40c1c0['message'],_0x291938);_0x25fc7c(_0x370d95['error'](0x1f4,_0x40c1c0[_0xb5fa('0x19')]));});});};exports['NotifyMailAccount']=function(_0x73d425){var _0x5addd5=this;return new Promise(function(_0x58aa97,_0x3cdf63){var _0x42d331={'body':_0x73d425[_0xb5fa('0x27')],'channel':_0xb5fa('0x28')};var _0x5bc93f=_[_0xb5fa('0x29')](_[_0xb5fa('0x2a')](db[_0xb5fa('0x2b')][_0xb5fa('0x2c')]),[_0xb5fa('0x2d'),'updatedAt',_0xb5fa('0x2e'),'ListId']);var _0x233f90=![];if(_0x73d425[_0xb5fa('0x27')]['id']){delete _0x73d425[_0xb5fa('0x27')]['id'];}if(_[_0xb5fa('0x2f')](_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x30')])){return _0x3cdf63(_0x5addd5[_0xb5fa('0x17')](0x1f4,_0xb5fa('0x31')));}if(_['isNil'](_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x27')])||_0x73d425['body'][_0xb5fa('0x27')]===''){return _0x3cdf63(_0x5addd5['error'](0x1f4,_0xb5fa('0x32')));}if(_[_0xb5fa('0x2f')](_0x73d425['body']['mapKey'])){return _0x3cdf63(_0x5addd5[_0xb5fa('0x17')](0x1f4,_0xb5fa('0x33')+_0x5bc93f));}if(!_[_0xb5fa('0x34')](_0x5bc93f,_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x35')])){return _0x3cdf63(_0x5addd5[_0xb5fa('0x17')](0x1f4,_0xb5fa('0x36')+_0x5bc93f));}var _0x125a5c={};_0x125a5c[_0x73d425['body'][_0xb5fa('0x35')]]=_0x73d425[_0xb5fa('0x27')]['from'];return db[_0xb5fa('0x37')][_0xb5fa('0x25')]({'where':{'id':_0x73d425[_0xb5fa('0x38')]['id']},'include':[{'model':db[_0xb5fa('0x39')],'as':_0xb5fa('0x3a'),'include':[{'model':db[_0xb5fa('0x2b')],'as':_0xb5fa('0x3b'),'where':_0x125a5c,'limit':0x1,'order':[[_0xb5fa('0x3c'),_0xb5fa('0x3d')]]}]},{'model':db[_0xb5fa('0x3e')],'as':_0xb5fa('0x3f')},{'model':db[_0xb5fa('0x40')],'as':_0xb5fa('0x41'),'include':[{'model':db[_0xb5fa('0x42')],'as':_0xb5fa('0x42')}]}]})[_0xb5fa('0x10')](function(_0x52f5d8){if(_0x52f5d8&&_0x52f5d8['List']){var _0x46194d=_0x52f5d8['get']({'plain':!![]});_0x42d331[_0xb5fa('0x38')]=_[_0xb5fa('0x43')](_0x46194d,['Applications',_0xb5fa('0x3a')]);_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x44')]=_0x52f5d8[_0xb5fa('0x45')]();_0x42d331[_0xb5fa('0x46')]=_0x46194d[_0xb5fa('0x3f')];_0x42d331['list']=_0x46194d[_0xb5fa('0x3a')];_0x42d331['applications']=_[_0xb5fa('0x47')](_0x42d331[_0xb5fa('0x46')],[_0xb5fa('0x48')],['asc']);if(_0x42d331[_0xb5fa('0x38')]&&_0x42d331[_0xb5fa('0x38')]['autoclose']){_0x42d331['applications'][_0xb5fa('0x49')]({'id':0x0,'priority':_0x42d331[_0xb5fa('0x46')][_0xb5fa('0x4a')]+0x1,'app':_0xb5fa('0x4b'),'appdata':_0xb5fa('0x4c'),'interval':_0xb5fa('0x4d')});}if(_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3f')]){delete _0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3f')];}if(_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3a')]){delete _0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3a')];}if(_0x46194d[_0xb5fa('0x3a')][_0xb5fa('0x3b')][_0xb5fa('0x4a')]){return _0x46194d[_0xb5fa('0x3a')]['Contacts'][0x0];}var _0x1900a5=_[_0xb5fa('0x4e')](_0x73d425[_0xb5fa('0x27')],{'firstName':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x30')],'ListId':_0x46194d[_0xb5fa('0x4f')]});_0x1900a5[_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x35')]]=_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x30')];return db['CmContact']['create'](_0x1900a5);}else{throw new Error(_0xb5fa('0x50'));}})[_0xb5fa('0x10')](function(_0x1e78cb){_0x42d331['contact']=_0x1e78cb;if(_0x1e78cb){if(!_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x51')]){_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x51')]=rs[_0xb5fa('0x52')]()+'\x20'+_0x73d425['body'][_0xb5fa('0x19')][_0xb5fa('0x30')];}var _0x4afc02={'ContactId':_0x1e78cb['id'],'MailAccountId':_0x73d425[_0xb5fa('0x38')]['id'],'inReplyTo':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x51')],'to':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x30')],'cc':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['cc'],'subject':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x53')],'attach':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x54')],'lastMsgAt':moment()[_0xb5fa('0x55')](_0xb5fa('0x56')),'lastMsgDirection':'in'};return db[_0xb5fa('0x57')][_0xb5fa('0x25')]({'where':{'closed':![],'MailAccountId':_0x73d425[_0xb5fa('0x38')]['id']},'include':[{'model':db[_0xb5fa('0x58')],'as':_0xb5fa('0x59'),'attributes':[_0xb5fa('0x51')],'where':{'messageId':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['inReplyTo']}}]})[_0xb5fa('0x10')](function(_0x34ebd0){if(_0x34ebd0){return[_0x34ebd0,![]];}return db[_0xb5fa('0x57')]['create'](_0x4afc02)[_0xb5fa('0x10')](function(_0x2d786e){return[_0x2d786e,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xb5fa('0x5a')](function(_0xb535c3,_0x5c25f6){if(_0xb535c3){_0x233f90=_0x5c25f6;if(!_0x5c25f6){return _0xb535c3['update']({'inReplyTo':_0x73d425['body'][_0xb5fa('0x19')][_0xb5fa('0x51')],'to':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x30')],'cc':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['cc'],'subject':_0x73d425[_0xb5fa('0x27')]['message']['subject'],'attach':_0xb535c3['attach']?_0xb535c3[_0xb5fa('0x54')]:_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['attach'],'substatus':null,'substatusAt':moment()[_0xb5fa('0x55')](_0xb5fa('0x56')),'lastMsgAt':moment()[_0xb5fa('0x55')](_0xb5fa('0x56')),'lastMsgDirection':'in'});}else{return _0xb535c3;}}})[_0xb5fa('0x10')](function(_0x36b709){_0x42d331[_0xb5fa('0x5b')]=_0x36b709[_0xb5fa('0x5c')]({'plain':!![]});_0x42d331[_0xb5fa('0x5b')][_0xb5fa('0x5d')]=_0x233f90;return db[_0xb5fa('0x58')][_0xb5fa('0x5e')]({'body':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x27')],'MailAccountId':_0x73d425[_0xb5fa('0x38')]['id'],'MailInteractionId':_0x36b709['id'],'direction':'in','ContactId':_0x42d331['contact']['id'],'messageId':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x51')],'from':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x30')],'to':_0x73d425[_0xb5fa('0x27')]['message']['to'],'cc':_0x73d425[_0xb5fa('0x27')]['message']['cc'],'subject':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x53')],'attach':_0x73d425[_0xb5fa('0x27')]['message']['attach'],'Attachments':_0x73d425['body'][_0xb5fa('0x19')][_0xb5fa('0x5f')],'originTo':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x60')],'originCc':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x61')],'bcc':_0x73d425['body']['message'][_0xb5fa('0x62')],'ChatWebsiteId':_0x73d425['body']['message']['ChatWebsiteId']||null,'originChannel':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x63')]||_0xb5fa('0x64'),'ChatOfflineMessageId':_0x73d425[_0xb5fa('0x27')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xb5fa('0x65')],'as':_0xb5fa('0x66')}]});})['then'](function(_0x2d0c95){_0x42d331[_0xb5fa('0x19')]=_0x2d0c95;if(_0x42d331[_0xb5fa('0x5b')][_0xb5fa('0x67')]){return db['User'][_0xb5fa('0x25')]({'attributes':['id',_0xb5fa('0x68')],'where':{'id':_0x42d331[_0xb5fa('0x5b')][_0xb5fa('0x67')]}})[_0xb5fa('0x10')](function(_0x3348f7){if(_0x3348f7){_0x42d331[_0xb5fa('0x46')]['unshift']({'id':0x0,'priority':0x0,'app':_0xb5fa('0x69'),'appdata':_0x3348f7['name']+','+(_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x6a')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xb5fa('0x6b'),_0xb5fa('0x6c'),_0x42d331);});}return respondWithRpcPromise(_0xb5fa('0x6b'),_0xb5fa('0x6c'),_0x42d331);})[_0xb5fa('0x10')](function(_0x8ce5b8){_0x58aa97(_0x8ce5b8);})[_0xb5fa('0x1b')](function(_0x1bac54){_0x3cdf63(_0x5addd5['error'](0x1f4,_0x1bac54[_0xb5fa('0x19')]));});});};
\ No newline at end of file
index cf27ca7..a6ed56f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf891=['removeListener','register','mailAccount:','./mailAccount.events','save','emit'];(function(_0x1aed07,_0x254f3b){var _0x72f2df=function(_0x25a81f){while(--_0x25a81f){_0x1aed07['push'](_0x1aed07['shift']());}};_0x72f2df(++_0x254f3b);}(_0xf891,0x93));var _0x1f89=function(_0x15b964,_0x2883db){_0x15b964=_0x15b964-0x0;var _0x4ff6f8=_0xf891[_0x15b964];return _0x4ff6f8;};'use strict';var MailAccountEvents=require(_0x1f89('0x0'));var events=[_0x1f89('0x1'),'remove','update'];function createListener(_0x4fa87c,_0x586eb0){return function(_0x4c15de){_0x586eb0[_0x1f89('0x2')](_0x4fa87c,_0x4c15de);};}function removeListener(_0x532281,_0x20df27){return function(){MailAccountEvents[_0x1f89('0x3')](_0x532281,_0x20df27);};}exports[_0x1f89('0x4')]=function(_0x52c493){for(var _0x1acdc4=0x0,_0x3857bb=events['length'];_0x1acdc4<_0x3857bb;_0x1acdc4++){var _0x14ba98=events[_0x1acdc4];var _0x42d055=createListener(_0x1f89('0x5')+_0x14ba98,_0x52c493);MailAccountEvents['on'](_0x14ba98,_0x42d055);}};
\ No newline at end of file
+var _0x9551=['remove','update','emit','register','length','mailAccount:','./mailAccount.events'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x9551,0x11e));var _0x1955=function(_0x75267d,_0x5d286c){_0x75267d=_0x75267d-0x0;var _0x21ccec=_0x9551[_0x75267d];return _0x21ccec;};'use strict';var MailAccountEvents=require(_0x1955('0x0'));var events=['save',_0x1955('0x1'),_0x1955('0x2')];function createListener(_0x4ef1e0,_0x270907){return function(_0xbb23f6){_0x270907[_0x1955('0x3')](_0x4ef1e0,_0xbb23f6);};}function removeListener(_0x274762,_0x14b974){return function(){MailAccountEvents['removeListener'](_0x274762,_0x14b974);};}exports[_0x1955('0x4')]=function(_0x20bb95){for(var _0x5e3f9e=0x0,_0xd58a63=events[_0x1955('0x5')];_0x5e3f9e<_0xd58a63;_0x5e3f9e++){var _0x24c4a2=events[_0x5e3f9e];var _0x193f3e=createListener(_0x1955('0x6')+_0x24c4a2,_0x20bb95);MailAccountEvents['on'](_0x24c4a2,_0x193f3e);}};
\ No newline at end of file
index 1de9dc1..3177fef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacaf=['delete','destroy','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put'];(function(_0x33ab41,_0xa2d039){var _0x12403d=function(_0x41f3a9){while(--_0x41f3a9){_0x33ab41['push'](_0x33ab41['shift']());}};_0x12403d(++_0xa2d039);}(_0xacaf,0x6a));var _0xfaca=function(_0x571c1d,_0x3b0586){_0x571c1d=_0x571c1d-0x0;var _0x33c609=_0xacaf[_0x571c1d];return _0x33c609;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfaca('0x0'));var router=express[_0xfaca('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xfaca('0x2'));var interaction=require(_0xfaca('0x3'));var config=require(_0xfaca('0x4'));var controller=require(_0xfaca('0x5'));router[_0xfaca('0x6')](_0xfaca('0x7'),auth[_0xfaca('0x8')](),controller[_0xfaca('0x9')]);router[_0xfaca('0xa')]('/:id',auth[_0xfaca('0x8')](),controller['update']);router[_0xfaca('0xb')](_0xfaca('0x7'),auth[_0xfaca('0x8')](),controller[_0xfaca('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x5d9e=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','isAuthenticated','show','put','update','delete','exports','multer','util','path'];(function(_0x5a393b,_0x12d776){var _0x229c98=function(_0x30d8e6){while(--_0x30d8e6){_0x5a393b['push'](_0x5a393b['shift']());}};_0x229c98(++_0x12d776);}(_0x5d9e,0x1ea));var _0xe5d9=function(_0x2ec577,_0x563c1c){_0x2ec577=_0x2ec577-0x0;var _0x45caa2=_0x5d9e[_0x2ec577];return _0x45caa2;};'use strict';var multer=require(_0xe5d9('0x0'));var util=require(_0xe5d9('0x1'));var path=require(_0xe5d9('0x2'));var timeout=require(_0xe5d9('0x3'));var express=require(_0xe5d9('0x4'));var router=express['Router']();var fs_extra=require(_0xe5d9('0x5'));var auth=require(_0xe5d9('0x6'));var interaction=require(_0xe5d9('0x7'));var config=require(_0xe5d9('0x8'));var controller=require(_0xe5d9('0x9'));router[_0xe5d9('0xa')]('/:id',auth[_0xe5d9('0xb')](),controller[_0xe5d9('0xc')]);router[_0xe5d9('0xd')]('/:id',auth[_0xe5d9('0xb')](),controller[_0xe5d9('0xe')]);router[_0xe5d9('0xf')]('/:id',auth[_0xe5d9('0xb')](),controller['destroy']);module[_0xe5d9('0x10')]=router;
\ No newline at end of file
index 278a56e..9713faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb05c=['exports','INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x150cc8,_0x185cbb){var _0x26a9e5=function(_0x57c144){while(--_0x57c144){_0x150cc8['push'](_0x150cc8['shift']());}};_0x26a9e5(++_0x185cbb);}(_0xb05c,0x173));var _0xcb05=function(_0x43c8de,_0x4ac946){_0x43c8de=_0x43c8de-0x0;var _0x17430a=_0xb05c[_0x43c8de];return _0x17430a;};'use strict';var Sequelize=require(_0xcb05('0x0'));module[_0xcb05('0x1')]={'priority':{'type':Sequelize[_0xcb05('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xcb05('0x3')],'allowNull':![],'defaultValue':_0xcb05('0x4')},'appdata':{'type':Sequelize[_0xcb05('0x5')]()},'description':{'type':Sequelize[_0xcb05('0x3')]},'interval':{'type':Sequelize[_0xcb05('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x87f8=['TEXT','exports','INTEGER','STRING','noop'];(function(_0x38b2d9,_0x19fd42){var _0x23a3e1=function(_0xd8192f){while(--_0xd8192f){_0x38b2d9['push'](_0x38b2d9['shift']());}};_0x23a3e1(++_0x19fd42);}(_0x87f8,0x1c3));var _0x887f=function(_0x2a3e0a,_0x2b41b0){_0x2a3e0a=_0x2a3e0a-0x0;var _0x25ad63=_0x87f8[_0x2a3e0a];return _0x25ad63;};'use strict';var Sequelize=require('sequelize');module[_0x887f('0x0')]={'priority':{'type':Sequelize[_0x887f('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x887f('0x2')],'allowNull':![],'defaultValue':_0x887f('0x3')},'appdata':{'type':Sequelize[_0x887f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x887f('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index a735e9b..10fa220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','show','params','model','keys','MailApplication','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','then','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x5670cb,_0xe6e20d){var _0x11dc29=function(_0x42305b){while(--_0x42305b){_0x5670cb['push'](_0x5670cb['shift']());}};_0x11dc29(++_0xe6e20d);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={'raw':!![],'where':{'id':_0x5987ae[_0x49c4('0x29')]['id']}},_0x46e04d={};_0x46e04d[_0x49c4('0x2a')]=_[_0x49c4('0x2b')](db[_0x49c4('0x2c')][_0x49c4('0x2d')]);_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2b')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d['filters']=_['intersection'](_0x46e04d['model'],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x2f')]=_[_0x49c4('0x30')](_0x46e04d[_0x49c4('0x2a')],qs[_0x49c4('0x31')](_0x5987ae['query'][_0x49c4('0x31')]));_0x2b2793[_0x49c4('0x2f')]=_0x2b2793[_0x49c4('0x2f')][_0x49c4('0x32')]?_0x2b2793['attributes']:_0x46e04d['model'];if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x33')]){_0x2b2793[_0x49c4('0x34')]=[{'all':!![]}];}_0x2b2793=_[_0x49c4('0x35')]({},_0x2b2793,_0x5987ae[_0x49c4('0x36')]);return db['MailApplication'][_0x49c4('0x37')](_0x2b2793)[_0x49c4('0x38')](handleEntityNotFound(_0x889909,null))[_0x49c4('0x38')](respondWithResult(_0x889909,null))['catch'](handleError(_0x889909,null));};exports['update']=function(_0x85dce2,_0x1991e9){if(_0x85dce2[_0x49c4('0x39')]['id']){delete _0x85dce2[_0x49c4('0x39')]['id'];}return db[_0x49c4('0x2c')][_0x49c4('0x37')]({'where':{'id':_0x85dce2[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x1991e9,null))[_0x49c4('0x38')](saveUpdates(_0x85dce2['body'],null))[_0x49c4('0x38')](respondWithResult(_0x1991e9,null))['catch'](handleError(_0x1991e9,null));};exports[_0x49c4('0x23')]=function(_0x349791,_0x2625a6){return db[_0x49c4('0x2c')]['find']({'where':{'id':_0x349791[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x2625a6,null))[_0x49c4('0x38')](removeEntity(_0x2625a6,null))['catch'](handleError(_0x2625a6,null));};
\ No newline at end of file
+var _0xaa88=['limit','count','set','apply','reject','then','stack','name','send','params','model','keys','MailApplication','query','filters','intersection','attributes','fields','length','include','merge','options','find','update','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa88,0x137));var _0x8aa8=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xaa88[_0x13b8f3];return _0x1a6d06;};'use strict';var emlformat=require(_0x8aa8('0x0'));var rimraf=require(_0x8aa8('0x1'));var zipdir=require(_0x8aa8('0x2'));var jsonpatch=require(_0x8aa8('0x3'));var rp=require('request-promise');var moment=require(_0x8aa8('0x4'));var BPromise=require(_0x8aa8('0x5'));var Mustache=require(_0x8aa8('0x6'));var util=require(_0x8aa8('0x7'));var path=require(_0x8aa8('0x8'));var sox=require(_0x8aa8('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8aa8('0xa'));var _=require('lodash');var squel=require(_0x8aa8('0xb'));var crypto=require(_0x8aa8('0xc'));var jsforce=require(_0x8aa8('0xd'));var deskjs=require(_0x8aa8('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8aa8('0xf'));var Papa=require(_0x8aa8('0x10'));var Redis=require(_0x8aa8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8aa8('0x12'));var as=require(_0x8aa8('0x13'));var hardwareService=require(_0x8aa8('0x14'));var logger=require(_0x8aa8('0x15'))('api');var utils=require(_0x8aa8('0x16'));var config=require(_0x8aa8('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8aa8('0x18'))['db'];function respondWithStatusCode(_0xa691d6,_0x28132f){_0x28132f=_0x28132f||0xcc;return function(_0x535aa0){if(_0x535aa0){return _0xa691d6[_0x8aa8('0x19')](_0x28132f);}return _0xa691d6[_0x8aa8('0x1a')](_0x28132f)[_0x8aa8('0x1b')]();};}function respondWithResult(_0x4b686e,_0x391642){_0x391642=_0x391642||0xc8;return function(_0x4af534){if(_0x4af534){return _0x4b686e['status'](_0x391642)[_0x8aa8('0x1c')](_0x4af534);}};}function respondWithFilteredResult(_0x200662,_0xae81a0){return function(_0xa6c2af){if(_0xa6c2af){var _0x42a6a4=typeof _0xae81a0[_0x8aa8('0x1d')]===_0x8aa8('0x1e')&&typeof _0xae81a0[_0x8aa8('0x1f')]===_0x8aa8('0x1e');var _0x4e8ce3=_0xa6c2af['count'];var _0x2c1b9a=_0x42a6a4?0x0:_0xae81a0['offset'];var _0x557adc=_0x42a6a4?_0xa6c2af[_0x8aa8('0x20')]:_0xae81a0['offset']+_0xae81a0[_0x8aa8('0x1f')];var _0x41092b;if(_0x557adc>=_0x4e8ce3){_0x557adc=_0x4e8ce3;_0x41092b=0xc8;}else{_0x41092b=0xce;}_0x200662[_0x8aa8('0x1a')](_0x41092b);return _0x200662[_0x8aa8('0x21')]('Content-Range',_0x2c1b9a+'-'+_0x557adc+'/'+_0x4e8ce3)[_0x8aa8('0x1c')](_0xa6c2af);}return null;};}function patchUpdates(_0x36c445){return function(_0x2825fd){try{jsonpatch[_0x8aa8('0x22')](_0x2825fd,_0x36c445,!![]);}catch(_0x4c754e){return BPromise[_0x8aa8('0x23')](_0x4c754e);}return _0x2825fd['save']();};}function saveUpdates(_0x26cf63,_0x4cc455){return function(_0x1fdadd){if(_0x1fdadd){return _0x1fdadd['update'](_0x26cf63)[_0x8aa8('0x24')](function(_0x557e4e){return _0x557e4e;});}return null;};}function removeEntity(_0x65945b,_0x40adb5){return function(_0x3ca7dc){if(_0x3ca7dc){return _0x3ca7dc['destroy']()[_0x8aa8('0x24')](function(){_0x65945b[_0x8aa8('0x1a')](0xcc)[_0x8aa8('0x1b')]();});}};}function handleEntityNotFound(_0x547a7b,_0x57acd2){return function(_0x2d1508){if(!_0x2d1508){_0x547a7b[_0x8aa8('0x19')](0x194);}return _0x2d1508;};}function handleError(_0x2f91f3,_0x3a3c7a){_0x3a3c7a=_0x3a3c7a||0x1f4;return function(_0x24143e){logger['error'](_0x24143e[_0x8aa8('0x25')]);if(_0x24143e['name']){delete _0x24143e[_0x8aa8('0x26')];}_0x2f91f3[_0x8aa8('0x1a')](_0x3a3c7a)[_0x8aa8('0x27')](_0x24143e);};}exports['show']=function(_0x4c5c5c,_0x10810d){var _0x5e96c9={'raw':!![],'where':{'id':_0x4c5c5c[_0x8aa8('0x28')]['id']}},_0x385208={};_0x385208[_0x8aa8('0x29')]=_[_0x8aa8('0x2a')](db[_0x8aa8('0x2b')]['rawAttributes']);_0x385208[_0x8aa8('0x2c')]=_[_0x8aa8('0x2a')](_0x4c5c5c['query']);_0x385208[_0x8aa8('0x2d')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],_0x385208['query']);_0x5e96c9[_0x8aa8('0x2f')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],qs[_0x8aa8('0x30')](_0x4c5c5c[_0x8aa8('0x2c')][_0x8aa8('0x30')]));_0x5e96c9[_0x8aa8('0x2f')]=_0x5e96c9[_0x8aa8('0x2f')][_0x8aa8('0x31')]?_0x5e96c9[_0x8aa8('0x2f')]:_0x385208[_0x8aa8('0x29')];if(_0x4c5c5c['query']['includeAll']){_0x5e96c9[_0x8aa8('0x32')]=[{'all':!![]}];}_0x5e96c9=_[_0x8aa8('0x33')]({},_0x5e96c9,_0x4c5c5c[_0x8aa8('0x34')]);return db[_0x8aa8('0x2b')][_0x8aa8('0x35')](_0x5e96c9)[_0x8aa8('0x24')](handleEntityNotFound(_0x10810d,null))['then'](respondWithResult(_0x10810d,null))['catch'](handleError(_0x10810d,null));};exports[_0x8aa8('0x36')]=function(_0x5755b5,_0x24997c){if(_0x5755b5[_0x8aa8('0x37')]['id']){delete _0x5755b5[_0x8aa8('0x37')]['id'];}return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x5755b5[_0x8aa8('0x28')]['id']}})[_0x8aa8('0x24')](handleEntityNotFound(_0x24997c,null))['then'](saveUpdates(_0x5755b5['body'],null))[_0x8aa8('0x24')](respondWithResult(_0x24997c,null))[_0x8aa8('0x38')](handleError(_0x24997c,null));};exports['destroy']=function(_0x24eb18,_0x2e1f52){return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x24eb18['params']['id']}})['then'](handleEntityNotFound(_0x2e1f52,null))[_0x8aa8('0x24')](removeEntity(_0x2e1f52,null))['catch'](handleError(_0x2e1f52,null));};
\ No newline at end of file
index 47d9071..bce75da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6094=['request-promise','path','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','utf8mb4','../../config/logger','api','moment','bluebird'];(function(_0xd4ef0c,_0xa9bae4){var _0x59dc29=function(_0xd99b04){while(--_0xd99b04){_0xd4ef0c['push'](_0xd4ef0c['shift']());}};_0x59dc29(++_0xa9bae4);}(_0x6094,0x1d0));var _0x4609=function(_0x14a2e5,_0x30cdb9){_0x14a2e5=_0x14a2e5-0x0;var _0x56593c=_0x6094[_0x14a2e5];return _0x56593c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4609('0x0'))(_0x4609('0x1'));var moment=require(_0x4609('0x2'));var BPromise=require(_0x4609('0x3'));var rp=require(_0x4609('0x4'));var fs=require('fs');var path=require(_0x4609('0x5'));var rimraf=require('rimraf');var config=require(_0x4609('0x6'));var attributes=require(_0x4609('0x7'));module[_0x4609('0x8')]=function(_0x217da4,_0x37591b){return _0x217da4[_0x4609('0x9')](_0x4609('0xa'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4609('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x9788=['../../config/environment','./mailApplication.attributes','exports','MailApplication','mail_applications','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x456fb1,_0x859a1d){var _0x4083d6=function(_0xe1d0f2){while(--_0xe1d0f2){_0x456fb1['push'](_0x456fb1['shift']());}};_0x4083d6(++_0x859a1d);}(_0x9788,0xf4));var _0x8978=function(_0x11ca62,_0x4afa06){_0x11ca62=_0x11ca62-0x0;var _0x1e580f=_0x9788[_0x11ca62];return _0x1e580f;};'use strict';var _=require(_0x8978('0x0'));var util=require(_0x8978('0x1'));var logger=require('../../config/logger')(_0x8978('0x2'));var moment=require(_0x8978('0x3'));var BPromise=require(_0x8978('0x4'));var rp=require(_0x8978('0x5'));var fs=require('fs');var path=require(_0x8978('0x6'));var rimraf=require(_0x8978('0x7'));var config=require(_0x8978('0x8'));var attributes=require(_0x8978('0x9'));module[_0x8978('0xa')]=function(_0x41bf4b,_0x34a900){return _0x41bf4b['define'](_0x8978('0xb'),attributes,{'tableName':_0x8978('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8978('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index e33c7b5..51272ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa76=['bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','then','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateMailApplication','MailApplication','update','body','options','raw','limit','info','debug','lodash','moment'];(function(_0x5b311b,_0x3e0280){var _0x4fa0de=function(_0x5363ed){while(--_0x5363ed){_0x5b311b['push'](_0x5b311b['shift']());}};_0x4fa0de(++_0x3e0280);}(_0xfa76,0x116));var _0x6fa7=function(_0x466010,_0x26e68f){_0x466010=_0x466010-0x0;var _0x437da2=_0xfa76[_0x466010];return _0x437da2;};'use strict';var _=require(_0x6fa7('0x0'));var util=require('util');var moment=require(_0x6fa7('0x1'));var BPromise=require(_0x6fa7('0x2'));var rs=require(_0x6fa7('0x3'));var fs=require('fs');var Redis=require(_0x6fa7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6fa7('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x6fa7('0x6'));var jayson=require(_0x6fa7('0x7'));var client=jayson[_0x6fa7('0x8')][_0x6fa7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x550bea,_0x5b9d02,_0x404b1a){return new BPromise(function(_0x5267d2,_0xfca322){return client['request'](_0x550bea,_0x404b1a)[_0x6fa7('0xa')](function(_0x33b147){logger['info'](_0x6fa7('0xb'),_0x5b9d02,'request\x20sent');logger['debug'](_0x6fa7('0xc'),_0x5b9d02,_0x6fa7('0xd'),JSON[_0x6fa7('0xe')](_0x33b147));if(_0x33b147[_0x6fa7('0xf')]){if(_0x33b147[_0x6fa7('0xf')]['code']===0x1f4){logger[_0x6fa7('0xf')]('MailApplication,\x20%s,\x20%s',_0x5b9d02,_0x33b147['error'][_0x6fa7('0x10')]);return _0xfca322(_0x33b147[_0x6fa7('0xf')][_0x6fa7('0x10')]);}logger[_0x6fa7('0xf')](_0x6fa7('0xb'),_0x5b9d02,_0x33b147['error'][_0x6fa7('0x10')]);return _0x5267d2(_0x33b147[_0x6fa7('0xf')][_0x6fa7('0x10')]);}else{logger['info']('MailApplication,\x20%s,\x20%s',_0x5b9d02,_0x6fa7('0xd'));_0x5267d2(_0x33b147[_0x6fa7('0x11')][_0x6fa7('0x10')]);}})[_0x6fa7('0x12')](function(_0x39e2a9){logger['error']('MailApplication,\x20%s,\x20%s',_0x5b9d02,_0x39e2a9);_0xfca322(_0x39e2a9);});});}exports[_0x6fa7('0x13')]=function(_0x54def2){var _0x4b281c=this;return new Promise(function(_0x36a555,_0x19e3f1){return db[_0x6fa7('0x14')][_0x6fa7('0x15')](_0x54def2[_0x6fa7('0x16')],{'raw':_0x54def2['options']?_0x54def2[_0x6fa7('0x17')][_0x6fa7('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54def2[_0x6fa7('0x17')]?_0x54def2[_0x6fa7('0x17')]['where']||null:null,'attributes':_0x54def2[_0x6fa7('0x17')]?_0x54def2[_0x6fa7('0x17')]['attributes']||null:null,'limit':_0x54def2['options']?_0x54def2['options'][_0x6fa7('0x19')]||null:null})[_0x6fa7('0xa')](function(_0x377b4b){logger[_0x6fa7('0x1a')](_0x6fa7('0x13'),_0x54def2);logger[_0x6fa7('0x1b')]('UpdateMailApplication',_0x54def2,JSON['stringify'](_0x377b4b));_0x36a555(_0x377b4b);})[_0x6fa7('0x12')](function(_0x313e6a){logger[_0x6fa7('0xf')](_0x6fa7('0x13'),_0x313e6a[_0x6fa7('0x10')],_0x54def2);_0x19e3f1(_0x4b281c['error'](0x1f4,_0x313e6a[_0x6fa7('0x10')]));});});};
\ No newline at end of file
+var _0x85e9=['bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','MailApplication,\x20%s,\x20%s','message','catch','UpdateMailApplication','MailApplication','update','body','options','raw','where','attributes','limit','moment'];(function(_0x25fa5c,_0x421141){var _0x1bade2=function(_0x3faf20){while(--_0x3faf20){_0x25fa5c['push'](_0x25fa5c['shift']());}};_0x1bade2(++_0x421141);}(_0x85e9,0x121));var _0x985e=function(_0x187f87,_0x4e3be5){_0x187f87=_0x187f87-0x0;var _0x279f2a=_0x85e9[_0x187f87];return _0x279f2a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x985e('0x0'));var BPromise=require(_0x985e('0x1'));var rs=require(_0x985e('0x2'));var fs=require('fs');var Redis=require(_0x985e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x985e('0x4'));var logger=require('../../config/logger')(_0x985e('0x5'));var config=require(_0x985e('0x6'));var jayson=require(_0x985e('0x7'));var client=jayson[_0x985e('0x8')][_0x985e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x200f8f,_0x3bc661,_0x35cf7a){return new BPromise(function(_0x99d085,_0x176eb1){return client[_0x985e('0xa')](_0x200f8f,_0x35cf7a)[_0x985e('0xb')](function(_0x2e3d5c){logger[_0x985e('0xc')]('MailApplication,\x20%s,\x20%s',_0x3bc661,_0x985e('0xd'));logger[_0x985e('0xe')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x3bc661,'request\x20sent',JSON[_0x985e('0xf')](_0x2e3d5c));if(_0x2e3d5c[_0x985e('0x10')]){if(_0x2e3d5c[_0x985e('0x10')]['code']===0x1f4){logger[_0x985e('0x10')](_0x985e('0x11'),_0x3bc661,_0x2e3d5c[_0x985e('0x10')]['message']);return _0x176eb1(_0x2e3d5c['error'][_0x985e('0x12')]);}logger[_0x985e('0x10')](_0x985e('0x11'),_0x3bc661,_0x2e3d5c['error'][_0x985e('0x12')]);return _0x99d085(_0x2e3d5c[_0x985e('0x10')][_0x985e('0x12')]);}else{logger[_0x985e('0xc')](_0x985e('0x11'),_0x3bc661,'request\x20sent');_0x99d085(_0x2e3d5c['result'][_0x985e('0x12')]);}})[_0x985e('0x13')](function(_0x35b3ed){logger[_0x985e('0x10')](_0x985e('0x11'),_0x3bc661,_0x35b3ed);_0x176eb1(_0x35b3ed);});});}exports[_0x985e('0x14')]=function(_0x21d9b3){var _0x55d5c6=this;return new Promise(function(_0x4b3811,_0x20d09e){return db[_0x985e('0x15')][_0x985e('0x16')](_0x21d9b3[_0x985e('0x17')],{'raw':_0x21d9b3[_0x985e('0x18')]?_0x21d9b3[_0x985e('0x18')][_0x985e('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21d9b3['options']?_0x21d9b3['options'][_0x985e('0x1a')]||null:null,'attributes':_0x21d9b3[_0x985e('0x18')]?_0x21d9b3[_0x985e('0x18')][_0x985e('0x1b')]||null:null,'limit':_0x21d9b3[_0x985e('0x18')]?_0x21d9b3[_0x985e('0x18')][_0x985e('0x1c')]||null:null})[_0x985e('0xb')](function(_0x234ea1){logger[_0x985e('0xc')](_0x985e('0x14'),_0x21d9b3);logger[_0x985e('0xe')](_0x985e('0x14'),_0x21d9b3,JSON[_0x985e('0xf')](_0x234ea1));_0x4b3811(_0x234ea1);})[_0x985e('0x13')](function(_0x33c9d5){logger['error']('UpdateMailApplication',_0x33c9d5['message'],_0x21d9b3);_0x20d09e(_0x55d5c6[_0x985e('0x10')](0x1f4,_0x33c9d5[_0x985e('0x12')]));});});};
\ No newline at end of file
index 0d8d327..a058b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab32=['mailinteraction:update','delete','/:id/tags','removeTags','express','Router','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','getMessages','/:id/download','download','addMessage','tracked','mail','addTags','put'];(function(_0x1dff6b,_0x1e2ef4){var _0x104102=function(_0x2db782){while(--_0x2db782){_0x1dff6b['push'](_0x1dff6b['shift']());}};_0x104102(++_0x1e2ef4);}(_0xab32,0x164));var _0x2ab3=function(_0xcf581b,_0x4359dd){_0xcf581b=_0xcf581b-0x0;var _0x4f454d=_0xab32[_0xcf581b];return _0x4f454d;};'use strict';var express=require(_0x2ab3('0x0'));var router=express[_0x2ab3('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0x2ab3('0x2'));var controller=require(_0x2ab3('0x3'));router[_0x2ab3('0x4')]('/',auth[_0x2ab3('0x5')](),controller[_0x2ab3('0x6')]);router['get']('/describe',auth[_0x2ab3('0x5')](),controller[_0x2ab3('0x7')]);router[_0x2ab3('0x4')](_0x2ab3('0x8'),auth[_0x2ab3('0x5')](),controller['show']);router[_0x2ab3('0x4')](_0x2ab3('0x9'),auth[_0x2ab3('0x5')](),controller[_0x2ab3('0xa')]);router[_0x2ab3('0x4')](_0x2ab3('0xb'),auth[_0x2ab3('0x5')](),controller[_0x2ab3('0xc')]);router['post']('/',auth[_0x2ab3('0x5')](),controller['create']);router['post']('/:id/messages',auth['isAuthenticated'](),controller[_0x2ab3('0xd')]);router['post']('/:id/tags',auth[_0x2ab3('0x5')](),interaction[_0x2ab3('0xe')](_0x2ab3('0xf'),'mailinteraction:addtags'),controller[_0x2ab3('0x10')]);router[_0x2ab3('0x11')](_0x2ab3('0x8'),auth[_0x2ab3('0x5')](),interaction[_0x2ab3('0xe')]('mail',_0x2ab3('0x12')),controller['update']);router['delete'](_0x2ab3('0x8'),auth[_0x2ab3('0x5')](),interaction['tracked'](_0x2ab3('0xf'),'mailinteraction:destroy'),controller['destroy']);router[_0x2ab3('0x13')](_0x2ab3('0x14'),auth[_0x2ab3('0x5')](),controller[_0x2ab3('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xa98c=['/:id/tags','tracked','mail','mailinteraction:addtags','update','delete','/:id','mailinteraction:destroy','destroy','removeTags','express','Router','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','/:id/messages','getMessages','/:id/download','post','create','addMessage'];(function(_0x8fd359,_0x4d0665){var _0x2b0be1=function(_0x587877){while(--_0x587877){_0x8fd359['push'](_0x8fd359['shift']());}};_0x2b0be1(++_0x4d0665);}(_0xa98c,0x14f));var _0xca98=function(_0x5f3905,_0x43a651){_0x5f3905=_0x5f3905-0x0;var _0x2923b1=_0xa98c[_0x5f3905];return _0x2923b1;};'use strict';var express=require(_0xca98('0x0'));var router=express[_0xca98('0x1')]();var auth=require(_0xca98('0x2'));var interaction=require(_0xca98('0x3'));var controller=require('./mailInteraction.controller');router[_0xca98('0x4')]('/',auth['isAuthenticated'](),controller[_0xca98('0x5')]);router[_0xca98('0x4')](_0xca98('0x6'),auth[_0xca98('0x7')](),controller[_0xca98('0x8')]);router[_0xca98('0x4')]('/:id',auth[_0xca98('0x7')](),controller['show']);router[_0xca98('0x4')](_0xca98('0x9'),auth[_0xca98('0x7')](),controller[_0xca98('0xa')]);router[_0xca98('0x4')](_0xca98('0xb'),auth['isAuthenticated'](),controller['download']);router[_0xca98('0xc')]('/',auth['isAuthenticated'](),controller[_0xca98('0xd')]);router[_0xca98('0xc')](_0xca98('0x9'),auth[_0xca98('0x7')](),controller[_0xca98('0xe')]);router[_0xca98('0xc')](_0xca98('0xf'),auth['isAuthenticated'](),interaction[_0xca98('0x10')](_0xca98('0x11'),_0xca98('0x12')),controller['addTags']);router['put']('/:id',auth[_0xca98('0x7')](),interaction[_0xca98('0x10')]('mail','mailinteraction:update'),controller[_0xca98('0x13')]);router[_0xca98('0x14')](_0xca98('0x15'),auth[_0xca98('0x7')](),interaction[_0xca98('0x10')](_0xca98('0x11'),_0xca98('0x16')),controller[_0xca98('0x17')]);router['delete'](_0xca98('0xf'),auth[_0xca98('0x7')](),controller[_0xca98('0x18')]);module['exports']=router;
\ No newline at end of file
index 52b89b5..9a69260 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07b5=['ENUM','sequelize','iconv','exports','STRING','TEXT','long','BOOLEAN','out','DATE'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x07b5,0x10f));var _0x507b=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0x07b5[_0x14fad0];return _0x5c665f;};'use strict';var Sequelize=require(_0x507b('0x0'));var iconv=require(_0x507b('0x1'));module[_0x507b('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x507b('0x3')]},'secondDisposition':{'type':Sequelize[_0x507b('0x3')]},'thirdDisposition':{'type':Sequelize[_0x507b('0x3')]},'note':{'type':Sequelize[_0x507b('0x3')]},'inReplyTo':{'type':Sequelize[_0x507b('0x3')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x507b('0x4')](_0x507b('0x5'))},'subject':{'type':Sequelize[_0x507b('0x4')]()},'attach':{'type':Sequelize[_0x507b('0x6')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x507b('0x3')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x507b('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x507b('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x507b('0x9')]('in',_0x507b('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x01f7=['STRING','long','TEXT','out','sequelize','exports','BOOLEAN','DATE'];(function(_0x5551f3,_0x29c8b0){var _0x1bf9d6=function(_0x50ea0a){while(--_0x50ea0a){_0x5551f3['push'](_0x5551f3['shift']());}};_0x1bf9d6(++_0x29c8b0);}(_0x01f7,0x194));var _0x701f=function(_0x597484,_0x199340){_0x597484=_0x597484-0x0;var _0x218e64=_0x01f7[_0x597484];return _0x218e64;};'use strict';var Sequelize=require(_0x701f('0x0'));var iconv=require('iconv');module[_0x701f('0x1')]={'closed':{'type':Sequelize[_0x701f('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x701f('0x3')]},'disposition':{'type':Sequelize[_0x701f('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x701f('0x4')]},'inReplyTo':{'type':Sequelize[_0x701f('0x4')](0x1fe)},'to':{'type':Sequelize[_0x701f('0x4')]},'cc':{'type':Sequelize['TEXT'](_0x701f('0x5'))},'subject':{'type':Sequelize[_0x701f('0x6')]()},'attach':{'type':Sequelize[_0x701f('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x701f('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x701f('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x701f('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x701f('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x701f('0x2')],'defaultValue':![]}};
\ No newline at end of file
index c8f11da..086c20b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04de=['addTags','setTags','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','Attachment','Messages','from','createdAt','sort','get','mkdirSync','each','missing.recipient@your.company.com','subject','decode','bcc','Bcc','Attachments','basename','existsSync','push','type','build','message%d.eml','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','socket.io-emitter','./mailInteraction.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','update','then','stack','name','index','rawAttributes','fieldName','key','getOptions','findAll','mail','user','catch','show','keys','MailInteraction','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','find','body','params','destroy','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','pick','MailInteractionId','filter','where','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','inlineCss','true','rows'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0x04de,0x18d));var _0xe04d=function(_0x447d21,_0x57c5e9){_0x447d21=_0x447d21-0x0;var _0x12df28=_0x04de[_0x447d21];return _0x12df28;};'use strict';var emlformat=require(_0xe04d('0x0'));var rimraf=require(_0xe04d('0x1'));var zipdir=require(_0xe04d('0x2'));var moment=require(_0xe04d('0x3'));var BPromise=require(_0xe04d('0x4'));var util=require(_0xe04d('0x5'));var path=require(_0xe04d('0x6'));var fs=require('fs');var _=require(_0xe04d('0x7'));var juice=require(_0xe04d('0x8'));var Redis=require('ioredis');var interaction=require(_0xe04d('0x9'));var qs=require(_0xe04d('0xa'));var logger=require(_0xe04d('0xb'))(_0xe04d('0xc'));var config=require(_0xe04d('0xd'));var db=require(_0xe04d('0xe'))['db'];var htmlEntities=require(_0xe04d('0xf'));config[_0xe04d('0x10')]=_[_0xe04d('0x11')](config[_0xe04d('0x10')],{'host':'localhost','port':0x18eb});var socket=require(_0xe04d('0x12'))(new Redis(config[_0xe04d('0x10')]));require(_0xe04d('0x13'))[_0xe04d('0x14')](socket);function respondWithStatusCode(_0x176abf,_0x465be1){_0x465be1=_0x465be1||0xcc;return function(_0x38317d){if(_0x38317d){return _0x176abf['sendStatus'](_0x465be1);}return _0x176abf[_0xe04d('0x15')](_0x465be1)[_0xe04d('0x16')]();};}function respondWithResult(_0x1fbc64,_0x461edd){_0x461edd=_0x461edd||0xc8;return function(_0x3ed352){if(_0x3ed352){return _0x1fbc64[_0xe04d('0x15')](_0x461edd)[_0xe04d('0x17')](_0x3ed352);}};}function respondWithFilteredResult(_0x254b10,_0x486b63){return function(_0x326710){if(_0x326710){var _0x206bfe=typeof _0x486b63['offset']===_0xe04d('0x18')&&typeof _0x486b63[_0xe04d('0x19')]===_0xe04d('0x18');var _0x55535=_0x326710[_0xe04d('0x1a')];var _0x3f518f=_0x206bfe?0x0:_0x486b63['offset'];var _0x58f96e=_0x206bfe?_0x326710['count']:_0x486b63[_0xe04d('0x1b')]+_0x486b63[_0xe04d('0x19')];var _0x1446d8;if(_0x58f96e>=_0x55535){_0x58f96e=_0x55535;_0x1446d8=0xc8;}else{_0x1446d8=0xce;}_0x254b10[_0xe04d('0x15')](_0x1446d8);return _0x254b10[_0xe04d('0x1c')](_0xe04d('0x1d'),_0x3f518f+'-'+_0x58f96e+'/'+_0x55535)['json'](_0x326710);}return null;};}function saveUpdates(_0x280b34){return function(_0x58c6b4){if(_0x58c6b4){return _0x58c6b4[_0xe04d('0x1e')](_0x280b34)[_0xe04d('0x1f')](function(_0x2d76ca){return _0x2d76ca;});}return null;};}function removeEntity(_0x379856){return function(_0x845f98){if(_0x845f98){return _0x845f98['destroy']()[_0xe04d('0x1f')](function(){_0x379856[_0xe04d('0x15')](0xcc)[_0xe04d('0x16')]();});}};}function handleEntityNotFound(_0x1e8c0c){return function(_0x2f1566){if(!_0x2f1566){_0x1e8c0c['sendStatus'](0x194);}return _0x2f1566;};}function handleError(_0x57be97,_0x28bc79){_0x28bc79=_0x28bc79||0x1f4;return function(_0x3fc044){logger['error'](_0x3fc044[_0xe04d('0x20')]);if(_0x3fc044[_0xe04d('0x21')]){delete _0x3fc044[_0xe04d('0x21')];}_0x57be97[_0xe04d('0x15')](_0x28bc79)['send'](_0x3fc044);};}exports[_0xe04d('0x22')]=function(_0x3313d2,_0x968846){var _0x2e406a={};var _0x13731e=_['map'](db['MailInteraction'][_0xe04d('0x23')],function(_0x4ec839){return{'name':_0x4ec839[_0xe04d('0x24')],'type':_0x4ec839['type'][_0xe04d('0x25')]};});_0x2e406a=qs[_0xe04d('0x26')](_0x13731e,_0x3313d2);return interaction[_0xe04d('0x27')](_0xe04d('0x28'),_0x3313d2['query'],_0x3313d2[_0xe04d('0x29')],_0x2e406a,_0x13731e)[_0xe04d('0x1f')](respondWithFilteredResult(_0x968846,_0x2e406a))[_0xe04d('0x2a')](handleError(_0x968846,null));};exports[_0xe04d('0x2b')]=function(_0x269e74,_0x16c62b){var _0x3cb061={'raw':![],'where':{'id':_0x269e74['params']['id']}},_0x1d48c8={};_0x1d48c8['model']=_[_0xe04d('0x2c')](db[_0xe04d('0x2d')]['rawAttributes']);_0x1d48c8[_0xe04d('0x2e')]=_['keys'](_0x269e74[_0xe04d('0x2e')]);_0x1d48c8[_0xe04d('0x2f')]=_[_0xe04d('0x30')](_0x1d48c8[_0xe04d('0x31')],_0x1d48c8[_0xe04d('0x2e')]);_0x3cb061[_0xe04d('0x32')]=_[_0xe04d('0x30')](_0x1d48c8[_0xe04d('0x31')],qs[_0xe04d('0x33')](_0x269e74[_0xe04d('0x2e')][_0xe04d('0x33')]));_0x3cb061[_0xe04d('0x32')]=_0x3cb061[_0xe04d('0x32')][_0xe04d('0x34')]?_0x3cb061['attributes']:_0x1d48c8[_0xe04d('0x31')];if(_0x269e74['query'][_0xe04d('0x35')]){_0x3cb061[_0xe04d('0x36')]=[{'all':!![]}];}_0x3cb061=_[_0xe04d('0x37')]({},_0x3cb061,_0x269e74['options']);return db['MailInteraction'][_0xe04d('0x38')](_0x3cb061)[_0xe04d('0x1f')](handleEntityNotFound(_0x16c62b,null))[_0xe04d('0x1f')](respondWithResult(_0x16c62b,null))[_0xe04d('0x2a')](handleError(_0x16c62b,null));};exports['create']=function(_0xebf1d7,_0x4fc331){return db['MailInteraction']['create'](_0xebf1d7[_0xe04d('0x39')],{})[_0xe04d('0x1f')](respondWithResult(_0x4fc331,0xc9))[_0xe04d('0x2a')](handleError(_0x4fc331,null));};exports[_0xe04d('0x1e')]=function(_0x512a3d,_0x1d0fc0){if(_0x512a3d[_0xe04d('0x39')]['id']){delete _0x512a3d[_0xe04d('0x39')]['id'];}return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x512a3d[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x1d0fc0,null))['then'](saveUpdates(_0x512a3d[_0xe04d('0x39')],null))[_0xe04d('0x1f')](respondWithResult(_0x1d0fc0,null))['catch'](handleError(_0x1d0fc0,null));};exports[_0xe04d('0x3b')]=function(_0x1c1093,_0x2f247c){return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x1c1093['params']['id']}})['then'](handleEntityNotFound(_0x2f247c,null))[_0xe04d('0x1f')](removeEntity(_0x2f247c,null))[_0xe04d('0x2a')](handleError(_0x2f247c,null));};exports[_0xe04d('0x3c')]=function(_0x1058a2,_0x24407e){return db['MailInteraction'][_0xe04d('0x3c')]()[_0xe04d('0x1f')](respondWithResult(_0x24407e,null))[_0xe04d('0x2a')](handleError(_0x24407e,null));};exports[_0xe04d('0x3d')]=function(_0x1c8ae6,_0x813b83){return db[_0xe04d('0x3e')][_0xe04d('0x38')]({'where':{'id':_0x1c8ae6[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x813b83,null))[_0xe04d('0x1f')](function(_0x34b935){if(_0x34b935){return _0x34b935[_0xe04d('0x3d')](_0x1c8ae6['body'][_0xe04d('0x3f')],_[_0xe04d('0x40')](_0x1c8ae6['body'],[_0xe04d('0x3f'),'id'])||{});}})[_0xe04d('0x1f')](respondWithResult(_0x813b83,null))[_0xe04d('0x2a')](handleError(_0x813b83,null));};exports[_0xe04d('0x41')]=function(_0x17c2ac,_0x5862a5){var _0x4de99b={'raw':![],'where':{}};var _0x3210ce={};var _0x15d10b={'count':0x0,'rows':[]};return db[_0xe04d('0x2d')][_0xe04d('0x42')]({'where':{'id':_0x17c2ac[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x5862a5,null))[_0xe04d('0x1f')](function(_0x4ff98d){if(_0x4ff98d){_0x3210ce[_0xe04d('0x31')]=_['keys'](db[_0xe04d('0x3e')][_0xe04d('0x23')]);_0x3210ce['query']=_[_0xe04d('0x2c')](_0x17c2ac['query']);_0x3210ce[_0xe04d('0x2f')]=_[_0xe04d('0x30')](_0x3210ce[_0xe04d('0x31')],_0x3210ce[_0xe04d('0x2e')]);_0x4de99b['attributes']=_[_0xe04d('0x30')](_0x3210ce[_0xe04d('0x31')],qs[_0xe04d('0x33')](_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x33')]));_0x4de99b[_0xe04d('0x32')]=_0x4de99b[_0xe04d('0x32')]['length']?_0x4de99b['attributes']:_0x3210ce['model'];if(!_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x43')](_0xe04d('0x44'))){_0x4de99b['limit']=qs[_0xe04d('0x19')](_0x17c2ac[_0xe04d('0x2e')]['limit']);_0x4de99b['offset']=qs['offset'](_0x17c2ac['query']['offset']);}_0x4de99b[_0xe04d('0x45')]=qs['sort'](_0x17c2ac[_0xe04d('0x2e')]['sort']);_0x4de99b['where']=qs[_0xe04d('0x2f')](_[_0xe04d('0x46')](_0x17c2ac[_0xe04d('0x2e')],_0x3210ce[_0xe04d('0x2f')]));_0x4de99b['where'][_0xe04d('0x47')]=_0x4ff98d['id'];if(_0x17c2ac['query'][_0xe04d('0x48')]){_0x4de99b[_0xe04d('0x49')]=_[_0xe04d('0x37')](_0x4de99b[_0xe04d('0x49')],{'$or':_[_0xe04d('0x4a')](_0x4de99b[_0xe04d('0x32')],function(_0x246228){var _0x5be8a2={};_0x5be8a2[_0x246228]={'$like':'%'+_0x17c2ac['query'][_0xe04d('0x48')]+'%'};return _0x5be8a2;})});}if(_0x17c2ac['query'][_0xe04d('0x4b')]){var _0x48f9b0=_0x17c2ac['query'][_0xe04d('0x4b')][_0xe04d('0x4c')](',');var _0xce554e={};_0xce554e[_0x48f9b0[0x0]]={'$gte':moment(_0x48f9b0[0x1])[_0xe04d('0x4d')](_0xe04d('0x4e'))};_0x4de99b[_0xe04d('0x49')]=_[_0xe04d('0x37')](_0x4de99b[_0xe04d('0x49')],_0xce554e);}_0x4de99b=_[_0xe04d('0x37')]({},_0x4de99b,_0x17c2ac[_0xe04d('0x4f')]);return db['MailMessage'][_0xe04d('0x1a')]({'where':_0x4de99b[_0xe04d('0x49')]})[_0xe04d('0x1f')](function(_0x4e3e79){_0x15d10b[_0xe04d('0x1a')]=_0x4e3e79;if(_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x35')]){_0x4de99b[_0xe04d('0x36')]=[{'all':!![]}];}return db[_0xe04d('0x3e')]['findAll'](_0x4de99b);})[_0xe04d('0x1f')](function(_0x28ec68){if(_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x50')]===_0xe04d('0x51')){for(var _0x1172b5=0x0;_0x1172b5<_0x28ec68[_0xe04d('0x34')];_0x1172b5++){_0x28ec68[_0x1172b5]['body']=juice(_0x28ec68[_0x1172b5][_0xe04d('0x39')]);}}_0x15d10b[_0xe04d('0x52')]=_0x28ec68;return _0x15d10b;});}})[_0xe04d('0x1f')](respondWithFilteredResult(_0x5862a5,_0x4de99b))[_0xe04d('0x2a')](handleError(_0x5862a5,null));};exports[_0xe04d('0x53')]=function(_0x4276c9,_0x230a65){return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x4276c9[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x230a65,null))[_0xe04d('0x1f')](function(_0x14fe41){if(_0x14fe41){return _0x14fe41[_0xe04d('0x54')](_0x4276c9[_0xe04d('0x39')][_0xe04d('0x3f')],_['omit'](_0x4276c9[_0xe04d('0x39')],['ids','id'])||{})['spread'](function(){return db['Tag'][_0xe04d('0x27')]({'attributes':['id',_0xe04d('0x21'),_0xe04d('0x55')],'where':{'id':_0x4276c9[_0xe04d('0x39')]['ids']}});})[_0xe04d('0x1f')](function(_0x430e39){socket[_0xe04d('0x56')](_0xe04d('0x57'),{'id':Number(_0x4276c9[_0xe04d('0x3a')]['id']),'tags':_0x430e39||[]});return{'id':Number(_0x4276c9['params']['id']),'tags':_0x430e39||[]};});}})['then'](respondWithResult(_0x230a65,null))[_0xe04d('0x2a')](handleError(_0x230a65,null));};exports[_0xe04d('0x58')]=function(_0x3a297a,_0x41618b){return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x3a297a[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x41618b,null))[_0xe04d('0x1f')](function(_0x89b0d){if(_0x89b0d){return _0x89b0d[_0xe04d('0x58')](_0x3a297a[_0xe04d('0x2e')][_0xe04d('0x3f')]);}})['then'](respondWithStatusCode(_0x41618b,null))[_0xe04d('0x2a')](handleError(_0x41618b,null));};exports[_0xe04d('0x59')]=function(_0x49760a,_0x31c3a8){var _0x58e105=moment()[_0xe04d('0x5a')]()[_0xe04d('0x5b')]();var _0x3bdb81=path[_0xe04d('0x5c')](config[_0xe04d('0x5d')],_0xe04d('0x5e'),_0xe04d('0x5f'),'tmp');var _0x1c0771=path['join'](config['root'],_0xe04d('0x5e'),_0xe04d('0x5f'),_0xe04d('0x60'));var _0x26a560=path['join'](_0x3bdb81,_0x58e105);var _0x20a5c2=util[_0xe04d('0x4d')](_0xe04d('0x61'),_0x49760a[_0xe04d('0x3a')]['id'],_0x58e105);var _0x42c3a4=path['join'](_0x3bdb81,_0x20a5c2);var _0x38912e=[];if(_0x49760a[_0xe04d('0x2e')][_0xe04d('0x60')]){_0x38912e['push']({'model':db[_0xe04d('0x62')],'as':'Attachments','raw':!![]});}var _0x5f289c=[{'model':db[_0xe04d('0x3e')],'as':_0xe04d('0x63'),'attributes':['id','body',_0xe04d('0x64'),'to','cc','bcc','subject',_0xe04d('0x65')],'where':{'secret':![]},'order':qs[_0xe04d('0x66')]('id'),'include':_0x38912e}];return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x49760a[_0xe04d('0x3a')]['id']},'include':_0x5f289c})[_0xe04d('0x1f')](handleEntityNotFound(_0x31c3a8,null))['then'](function(_0x44ce94){if(_0x44ce94&&_0x44ce94[_0xe04d('0x63')]){var _0x3b5fd8=_0x44ce94[_0xe04d('0x67')]({'plain':!![]});fs[_0xe04d('0x68')](_0x26a560);return BPromise[_0xe04d('0x69')](_0x3b5fd8[_0xe04d('0x63')],function(_0x26b765,_0x176ff8){var _0x2e3431={'from':_0x26b765[_0xe04d('0x64')],'to':_0x26b765['to']||_0xe04d('0x6a'),'subject':_0x26b765[_0xe04d('0x6b')],'html':htmlEntities[_0xe04d('0x6c')](_0x26b765[_0xe04d('0x39')]),'headers':{'Date':moment(_0x26b765[_0xe04d('0x65')])[_0xe04d('0x4d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x26b765['cc']){_0x2e3431['headers']['Cc']=_0x26b765['cc'];}if(_0x26b765[_0xe04d('0x6d')]){_0x2e3431['headers'][_0xe04d('0x6e')]=_0x26b765[_0xe04d('0x6d')];}return new BPromise(function(_0x215c5e,_0x580127){if(_0x26b765[_0xe04d('0x6f')]){for(var _0x2977de=0x0;_0x2977de<_0x26b765[_0xe04d('0x6f')][_0xe04d('0x34')];_0x2977de++){var _0x146f3a=_0x26b765[_0xe04d('0x6f')][_0x2977de];var _0x4edc22=path[_0xe04d('0x5c')](_0x1c0771,_0x146f3a[_0xe04d('0x70')]);if(fs[_0xe04d('0x71')](_0x4edc22)){_0x2e3431[_0xe04d('0x60')][_0xe04d('0x72')]({'name':_0x146f3a['name'],'contentType':_0x146f3a[_0xe04d('0x73')],'data':fs['readFileSync'](_0x4edc22)});}}}emlformat[_0xe04d('0x74')](_0x2e3431,function(_0x6cf444,_0x3ff1c2){if(_0x6cf444)return _0x580127(_0x6cf444);fs['writeFileSync'](path[_0xe04d('0x5c')](_0x26a560,util['format'](_0xe04d('0x75'),_0x176ff8)),_0x3ff1c2);return _0x215c5e(_0x3ff1c2);});});})['then'](function(){return new BPromise(function(_0x404830,_0x1b14c5){zipdir(_0x26a560,{'saveTo':_0x42c3a4},function(_0x488cbb,_0x46e8f9){if(_0x488cbb)return _0x1b14c5(_0x488cbb);return _0x404830(_0x46e8f9);});})['then'](function(){return new BPromise(function(_0x497670,_0x3f8490){rimraf(_0x26a560,function(_0x24cd32){if(_0x24cd32)_0x3f8490(_0x24cd32);return _0x497670();});});})['then'](function(){return _0x31c3a8[_0xe04d('0x59')](_0x42c3a4,_0x20a5c2,function(_0x455ce3){if(!_0x455ce3)fs[_0xe04d('0x76')](_0x42c3a4);});});});}else{return _0x31c3a8[_0xe04d('0x77')](0xc8);}})[_0xe04d('0x2a')](handleError(_0x31c3a8,null));};
\ No newline at end of file
+var _0x3050=['createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','existsSync','readFileSync','build','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','util','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','sendStatus','stack','name','send','index','map','fieldName','type','key','getOptions','mail','user','catch','show','params','model','keys','MailInteraction','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','find','create','body','describe','addMessage','MailMessage','ids','omit','findOne','hasOwnProperty','nolimit','order','sort','where','MailInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','join','root','files','server','format','attachments','Attachment','Attachments','Messages','from','bcc','subject','mkdirSync','each','missing.recipient@your.company.com','decode'];(function(_0x4516ea,_0x306b91){var _0x18befd=function(_0x3ef0d1){while(--_0x3ef0d1){_0x4516ea['push'](_0x4516ea['shift']());}};_0x18befd(++_0x306b91);}(_0x3050,0x1d0));var _0x0305=function(_0x3614a1,_0xb3d34c){_0x3614a1=_0x3614a1-0x0;var _0x324954=_0x3050[_0x3614a1];return _0x324954;};'use strict';var emlformat=require(_0x0305('0x0'));var rimraf=require(_0x0305('0x1'));var zipdir=require(_0x0305('0x2'));var moment=require(_0x0305('0x3'));var BPromise=require('bluebird');var util=require(_0x0305('0x4'));var path=require('path');var fs=require('fs');var _=require(_0x0305('0x5'));var juice=require('juice');var Redis=require(_0x0305('0x6'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0x0305('0x7'))(_0x0305('0x8'));var config=require(_0x0305('0x9'));var db=require(_0x0305('0xa'))['db'];var htmlEntities=require(_0x0305('0xb'));config[_0x0305('0xc')]=_[_0x0305('0xd')](config[_0x0305('0xc')],{'host':_0x0305('0xe'),'port':0x18eb});var socket=require(_0x0305('0xf'))(new Redis(config[_0x0305('0xc')]));require('./mailInteraction.socket')[_0x0305('0x10')](socket);function respondWithStatusCode(_0x54373e,_0x417f72){_0x417f72=_0x417f72||0xcc;return function(_0x3a7ce2){if(_0x3a7ce2){return _0x54373e['sendStatus'](_0x417f72);}return _0x54373e[_0x0305('0x11')](_0x417f72)[_0x0305('0x12')]();};}function respondWithResult(_0x474fb1,_0x59df09){_0x59df09=_0x59df09||0xc8;return function(_0x5cdde6){if(_0x5cdde6){return _0x474fb1[_0x0305('0x11')](_0x59df09)[_0x0305('0x13')](_0x5cdde6);}};}function respondWithFilteredResult(_0x490808,_0x4dfa8a){return function(_0x350d04){if(_0x350d04){var _0x326a4a=typeof _0x4dfa8a[_0x0305('0x14')]===_0x0305('0x15')&&typeof _0x4dfa8a[_0x0305('0x16')]===_0x0305('0x15');var _0x539766=_0x350d04['count'];var _0x16f497=_0x326a4a?0x0:_0x4dfa8a[_0x0305('0x14')];var _0x38e834=_0x326a4a?_0x350d04[_0x0305('0x17')]:_0x4dfa8a[_0x0305('0x14')]+_0x4dfa8a[_0x0305('0x16')];var _0x5d3d8d;if(_0x38e834>=_0x539766){_0x38e834=_0x539766;_0x5d3d8d=0xc8;}else{_0x5d3d8d=0xce;}_0x490808[_0x0305('0x11')](_0x5d3d8d);return _0x490808[_0x0305('0x18')](_0x0305('0x19'),_0x16f497+'-'+_0x38e834+'/'+_0x539766)[_0x0305('0x13')](_0x350d04);}return null;};}function saveUpdates(_0x18ae6a){return function(_0x15013b){if(_0x15013b){return _0x15013b[_0x0305('0x1a')](_0x18ae6a)[_0x0305('0x1b')](function(_0x34bb0e){return _0x34bb0e;});}return null;};}function removeEntity(_0x3b9705){return function(_0x89db3d){if(_0x89db3d){return _0x89db3d[_0x0305('0x1c')]()['then'](function(){_0x3b9705[_0x0305('0x11')](0xcc)[_0x0305('0x12')]();});}};}function handleEntityNotFound(_0x2d5e1f){return function(_0x3e89e5){if(!_0x3e89e5){_0x2d5e1f[_0x0305('0x1d')](0x194);}return _0x3e89e5;};}function handleError(_0x21cb71,_0x4694d8){_0x4694d8=_0x4694d8||0x1f4;return function(_0x56a600){logger['error'](_0x56a600[_0x0305('0x1e')]);if(_0x56a600[_0x0305('0x1f')]){delete _0x56a600[_0x0305('0x1f')];}_0x21cb71[_0x0305('0x11')](_0x4694d8)[_0x0305('0x20')](_0x56a600);};}exports[_0x0305('0x21')]=function(_0x58cf4b,_0x4d2ae6){var _0x4ce7c0={};var _0xbb5236=_[_0x0305('0x22')](db['MailInteraction']['rawAttributes'],function(_0x2f9ab2){return{'name':_0x2f9ab2[_0x0305('0x23')],'type':_0x2f9ab2[_0x0305('0x24')][_0x0305('0x25')]};});_0x4ce7c0=qs[_0x0305('0x26')](_0xbb5236,_0x58cf4b);return interaction['findAll'](_0x0305('0x27'),_0x58cf4b['query'],_0x58cf4b[_0x0305('0x28')],_0x4ce7c0,_0xbb5236)[_0x0305('0x1b')](respondWithFilteredResult(_0x4d2ae6,_0x4ce7c0))[_0x0305('0x29')](handleError(_0x4d2ae6,null));};exports[_0x0305('0x2a')]=function(_0x2019db,_0x3c1c27){var _0x3a05e7={'raw':![],'where':{'id':_0x2019db[_0x0305('0x2b')]['id']}},_0x508c18={};_0x508c18[_0x0305('0x2c')]=_[_0x0305('0x2d')](db[_0x0305('0x2e')][_0x0305('0x2f')]);_0x508c18[_0x0305('0x30')]=_[_0x0305('0x2d')](_0x2019db[_0x0305('0x30')]);_0x508c18[_0x0305('0x31')]=_[_0x0305('0x32')](_0x508c18['model'],_0x508c18['query']);_0x3a05e7['attributes']=_['intersection'](_0x508c18['model'],qs[_0x0305('0x33')](_0x2019db['query']['fields']));_0x3a05e7[_0x0305('0x34')]=_0x3a05e7[_0x0305('0x34')][_0x0305('0x35')]?_0x3a05e7[_0x0305('0x34')]:_0x508c18[_0x0305('0x2c')];if(_0x2019db[_0x0305('0x30')][_0x0305('0x36')]){_0x3a05e7[_0x0305('0x37')]=[{'all':!![]}];}_0x3a05e7=_[_0x0305('0x38')]({},_0x3a05e7,_0x2019db[_0x0305('0x39')]);return db[_0x0305('0x2e')][_0x0305('0x3a')](_0x3a05e7)[_0x0305('0x1b')](handleEntityNotFound(_0x3c1c27,null))[_0x0305('0x1b')](respondWithResult(_0x3c1c27,null))['catch'](handleError(_0x3c1c27,null));};exports[_0x0305('0x3b')]=function(_0x1427cb,_0x4cf3bd){return db['MailInteraction'][_0x0305('0x3b')](_0x1427cb['body'],{})['then'](respondWithResult(_0x4cf3bd,0xc9))[_0x0305('0x29')](handleError(_0x4cf3bd,null));};exports[_0x0305('0x1a')]=function(_0x51869b,_0xcd41ff){if(_0x51869b[_0x0305('0x3c')]['id']){delete _0x51869b[_0x0305('0x3c')]['id'];}return db[_0x0305('0x2e')][_0x0305('0x3a')]({'where':{'id':_0x51869b['params']['id']}})[_0x0305('0x1b')](handleEntityNotFound(_0xcd41ff,null))[_0x0305('0x1b')](saveUpdates(_0x51869b[_0x0305('0x3c')],null))[_0x0305('0x1b')](respondWithResult(_0xcd41ff,null))[_0x0305('0x29')](handleError(_0xcd41ff,null));};exports[_0x0305('0x1c')]=function(_0x51b435,_0x2b69cd){return db[_0x0305('0x2e')][_0x0305('0x3a')]({'where':{'id':_0x51b435[_0x0305('0x2b')]['id']}})[_0x0305('0x1b')](handleEntityNotFound(_0x2b69cd,null))[_0x0305('0x1b')](removeEntity(_0x2b69cd,null))['catch'](handleError(_0x2b69cd,null));};exports['describe']=function(_0x72e0a5,_0x40c6c6){return db[_0x0305('0x2e')][_0x0305('0x3d')]()[_0x0305('0x1b')](respondWithResult(_0x40c6c6,null))[_0x0305('0x29')](handleError(_0x40c6c6,null));};exports[_0x0305('0x3e')]=function(_0x374a9c,_0x124c82){return db[_0x0305('0x3f')][_0x0305('0x3a')]({'where':{'id':_0x374a9c[_0x0305('0x2b')]['id']}})[_0x0305('0x1b')](handleEntityNotFound(_0x124c82,null))[_0x0305('0x1b')](function(_0x5d642e){if(_0x5d642e){return _0x5d642e['addMessage'](_0x374a9c[_0x0305('0x3c')][_0x0305('0x40')],_[_0x0305('0x41')](_0x374a9c['body'],[_0x0305('0x40'),'id'])||{});}})[_0x0305('0x1b')](respondWithResult(_0x124c82,null))[_0x0305('0x29')](handleError(_0x124c82,null));};exports['getMessages']=function(_0x3f44e8,_0x106e69){var _0x387116={'raw':![],'where':{}};var _0x2ac0d1={};var _0x493610={'count':0x0,'rows':[]};return db[_0x0305('0x2e')][_0x0305('0x42')]({'where':{'id':_0x3f44e8[_0x0305('0x2b')]['id']}})['then'](handleEntityNotFound(_0x106e69,null))['then'](function(_0x470aec){if(_0x470aec){_0x2ac0d1[_0x0305('0x2c')]=_[_0x0305('0x2d')](db[_0x0305('0x3f')]['rawAttributes']);_0x2ac0d1[_0x0305('0x30')]=_[_0x0305('0x2d')](_0x3f44e8['query']);_0x2ac0d1[_0x0305('0x31')]=_[_0x0305('0x32')](_0x2ac0d1['model'],_0x2ac0d1[_0x0305('0x30')]);_0x387116[_0x0305('0x34')]=_[_0x0305('0x32')](_0x2ac0d1['model'],qs['fields'](_0x3f44e8[_0x0305('0x30')][_0x0305('0x33')]));_0x387116[_0x0305('0x34')]=_0x387116[_0x0305('0x34')][_0x0305('0x35')]?_0x387116[_0x0305('0x34')]:_0x2ac0d1[_0x0305('0x2c')];if(!_0x3f44e8['query'][_0x0305('0x43')](_0x0305('0x44'))){_0x387116['limit']=qs[_0x0305('0x16')](_0x3f44e8[_0x0305('0x30')][_0x0305('0x16')]);_0x387116[_0x0305('0x14')]=qs['offset'](_0x3f44e8['query'][_0x0305('0x14')]);}_0x387116[_0x0305('0x45')]=qs[_0x0305('0x46')](_0x3f44e8['query'][_0x0305('0x46')]);_0x387116[_0x0305('0x47')]=qs['filters'](_['pick'](_0x3f44e8[_0x0305('0x30')],_0x2ac0d1[_0x0305('0x31')]));_0x387116[_0x0305('0x47')][_0x0305('0x48')]=_0x470aec['id'];if(_0x3f44e8[_0x0305('0x30')][_0x0305('0x49')]){_0x387116[_0x0305('0x47')]=_[_0x0305('0x38')](_0x387116[_0x0305('0x47')],{'$or':_[_0x0305('0x22')](_0x387116[_0x0305('0x34')],function(_0x269c6d){var _0x26be1e={};_0x26be1e[_0x269c6d]={'$like':'%'+_0x3f44e8[_0x0305('0x30')]['filter']+'%'};return _0x26be1e;})});}if(_0x3f44e8[_0x0305('0x30')][_0x0305('0x4a')]){var _0x2b8155=_0x3f44e8[_0x0305('0x30')][_0x0305('0x4a')][_0x0305('0x4b')](',');var _0x43d705={};_0x43d705[_0x2b8155[0x0]]={'$gte':moment(_0x2b8155[0x1])['format'](_0x0305('0x4c'))};_0x387116[_0x0305('0x47')]=_[_0x0305('0x38')](_0x387116['where'],_0x43d705);}_0x387116=_[_0x0305('0x38')]({},_0x387116,_0x3f44e8[_0x0305('0x39')]);return db[_0x0305('0x3f')][_0x0305('0x17')]({'where':_0x387116['where']})[_0x0305('0x1b')](function(_0x5f21ec){_0x493610[_0x0305('0x17')]=_0x5f21ec;if(_0x3f44e8[_0x0305('0x30')]['includeAll']){_0x387116[_0x0305('0x37')]=[{'all':!![]}];}return db[_0x0305('0x3f')][_0x0305('0x4d')](_0x387116);})['then'](function(_0x1411aa){if(_0x3f44e8[_0x0305('0x30')][_0x0305('0x4e')]===_0x0305('0x4f')){for(var _0x41782a=0x0;_0x41782a<_0x1411aa[_0x0305('0x35')];_0x41782a++){_0x1411aa[_0x41782a][_0x0305('0x3c')]=juice(_0x1411aa[_0x41782a][_0x0305('0x3c')]);}}_0x493610['rows']=_0x1411aa;return _0x493610;});}})[_0x0305('0x1b')](respondWithFilteredResult(_0x106e69,_0x387116))[_0x0305('0x29')](handleError(_0x106e69,null));};exports[_0x0305('0x50')]=function(_0x4701f8,_0x55b10f){return db['MailInteraction'][_0x0305('0x3a')]({'where':{'id':_0x4701f8['params']['id']}})[_0x0305('0x1b')](handleEntityNotFound(_0x55b10f,null))['then'](function(_0x4dd8f5){if(_0x4dd8f5){return _0x4dd8f5[_0x0305('0x51')](_0x4701f8['body'][_0x0305('0x40')],_[_0x0305('0x41')](_0x4701f8['body'],['ids','id'])||{})[_0x0305('0x52')](function(){return db[_0x0305('0x53')]['findAll']({'attributes':['id',_0x0305('0x1f'),_0x0305('0x54')],'where':{'id':_0x4701f8['body'][_0x0305('0x40')]}});})[_0x0305('0x1b')](function(_0x1f6c6c){socket[_0x0305('0x55')](_0x0305('0x56'),{'id':Number(_0x4701f8[_0x0305('0x2b')]['id']),'tags':_0x1f6c6c||[]});return{'id':Number(_0x4701f8['params']['id']),'tags':_0x1f6c6c||[]};});}})[_0x0305('0x1b')](respondWithResult(_0x55b10f,null))['catch'](handleError(_0x55b10f,null));};exports[_0x0305('0x57')]=function(_0x268ecf,_0x54d98e){return db[_0x0305('0x2e')][_0x0305('0x3a')]({'where':{'id':_0x268ecf[_0x0305('0x2b')]['id']}})[_0x0305('0x1b')](handleEntityNotFound(_0x54d98e,null))['then'](function(_0x3fe358){if(_0x3fe358){return _0x3fe358[_0x0305('0x57')](_0x268ecf[_0x0305('0x30')][_0x0305('0x40')]);}})[_0x0305('0x1b')](respondWithStatusCode(_0x54d98e,null))['catch'](handleError(_0x54d98e,null));};exports[_0x0305('0x58')]=function(_0x15eae2,_0x3e3aaf){var _0x5902d5=moment()[_0x0305('0x59')]()['toString']();var _0x5ef274=path[_0x0305('0x5a')](config[_0x0305('0x5b')],'server',_0x0305('0x5c'),'tmp');var _0x4b9fd9=path[_0x0305('0x5a')](config[_0x0305('0x5b')],_0x0305('0x5d'),_0x0305('0x5c'),'attachments');var _0x46d5d8=path['join'](_0x5ef274,_0x5902d5);var _0x1fdb59=util[_0x0305('0x5e')]('transcript-%d-%s.zip',_0x15eae2[_0x0305('0x2b')]['id'],_0x5902d5);var _0x36736a=path['join'](_0x5ef274,_0x1fdb59);var _0x1e4066=[];if(_0x15eae2[_0x0305('0x30')][_0x0305('0x5f')]){_0x1e4066['push']({'model':db[_0x0305('0x60')],'as':_0x0305('0x61'),'raw':!![]});}var _0x990e3b=[{'model':db[_0x0305('0x3f')],'as':_0x0305('0x62'),'attributes':['id',_0x0305('0x3c'),_0x0305('0x63'),'to','cc',_0x0305('0x64'),_0x0305('0x65'),'createdAt'],'where':{'secret':![]},'order':qs[_0x0305('0x46')]('id'),'include':_0x1e4066}];return db[_0x0305('0x2e')][_0x0305('0x3a')]({'where':{'id':_0x15eae2[_0x0305('0x2b')]['id']},'include':_0x990e3b})[_0x0305('0x1b')](handleEntityNotFound(_0x3e3aaf,null))[_0x0305('0x1b')](function(_0x35347b){if(_0x35347b&&_0x35347b[_0x0305('0x62')]){var _0x3093f5=_0x35347b['get']({'plain':!![]});fs[_0x0305('0x66')](_0x46d5d8);return BPromise[_0x0305('0x67')](_0x3093f5['Messages'],function(_0x7a71db,_0x237016){var _0x16e7ee={'from':_0x7a71db[_0x0305('0x63')],'to':_0x7a71db['to']||_0x0305('0x68'),'subject':_0x7a71db[_0x0305('0x65')],'html':htmlEntities[_0x0305('0x69')](_0x7a71db[_0x0305('0x3c')]),'headers':{'Date':moment(_0x7a71db[_0x0305('0x6a')])['format'](_0x0305('0x6b'))},'attachments':[]};if(_0x7a71db['cc']){_0x16e7ee[_0x0305('0x6c')]['Cc']=_0x7a71db['cc'];}if(_0x7a71db[_0x0305('0x64')]){_0x16e7ee[_0x0305('0x6c')]['Bcc']=_0x7a71db['bcc'];}return new BPromise(function(_0x2fdccd,_0x1a2200){if(_0x7a71db['Attachments']){for(var _0xdbf03b=0x0;_0xdbf03b<_0x7a71db[_0x0305('0x61')][_0x0305('0x35')];_0xdbf03b++){var _0x4424f6=_0x7a71db[_0x0305('0x61')][_0xdbf03b];var _0x45d4f8=path[_0x0305('0x5a')](_0x4b9fd9,_0x4424f6['basename']);if(fs[_0x0305('0x6d')](_0x45d4f8)){_0x16e7ee[_0x0305('0x5f')]['push']({'name':_0x4424f6['name'],'contentType':_0x4424f6[_0x0305('0x24')],'data':fs[_0x0305('0x6e')](_0x45d4f8)});}}}emlformat[_0x0305('0x6f')](_0x16e7ee,function(_0x5f5c53,_0x334050){if(_0x5f5c53)return _0x1a2200(_0x5f5c53);fs['writeFileSync'](path[_0x0305('0x5a')](_0x46d5d8,util[_0x0305('0x5e')](_0x0305('0x70'),_0x237016)),_0x334050);return _0x2fdccd(_0x334050);});});})[_0x0305('0x1b')](function(){return new BPromise(function(_0x258daf,_0x25ebb5){zipdir(_0x46d5d8,{'saveTo':_0x36736a},function(_0x128e86,_0x5a5336){if(_0x128e86)return _0x25ebb5(_0x128e86);return _0x258daf(_0x5a5336);});})[_0x0305('0x1b')](function(){return new BPromise(function(_0x4f20e4,_0x4553a2){rimraf(_0x46d5d8,function(_0x48b867){if(_0x48b867)_0x4553a2(_0x48b867);return _0x4f20e4();});});})[_0x0305('0x1b')](function(){return _0x3e3aaf[_0x0305('0x58')](_0x36736a,_0x1fdb59,function(_0x42f43b){if(!_0x42f43b)fs[_0x0305('0x71')](_0x36736a);});});});}else{return _0x3e3aaf['sendStatus'](0xc8);}})[_0x0305('0x29')](handleError(_0x3e3aaf,null));};
\ No newline at end of file
index 2801129..a1dd0c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x242e=['length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','getUsers','then','Users','map','findAll','setDataValue'];(function(_0xb691c5,_0x56bd81){var _0x51b938=function(_0x25ea5a){while(--_0x25ea5a){_0xb691c5['push'](_0xb691c5['shift']());}};_0x51b938(++_0x56bd81);}(_0x242e,0x138));var _0xe242=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x242e[_0x413feb];return _0x40ee88;};'use strict';var EventEmitter=require(_0xe242('0x0'));var MailInteraction=require(_0xe242('0x1'))['db']['MailInteraction'];var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xe242('0x2')](0x0);var events={'afterCreate':_0xe242('0x3'),'afterUpdate':_0xe242('0x4'),'afterDestroy':_0xe242('0x5')};function emitEvent(_0x5db6e4){return function(_0x2245b5,_0x149e3c,_0x211b8e){_0x2245b5[_0xe242('0x6')]({'attributes':['id'],'raw':!![]})[_0xe242('0x7')](function(_0x3e15c9){_0x2245b5['setDataValue'](_0xe242('0x8'),_0x3e15c9[_0xe242('0x9')](function(_0x52c7fa){return{'id':_0x52c7fa['id']};}));return MailMessage[_0xe242('0xa')]({'where':{'MailInteractionId':_0x2245b5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe242('0x7')](function(_0x16fdfb){_0x2245b5[_0xe242('0xb')]('unreadMessages',_0x16fdfb[_0xe242('0xc')]);MailInteractionEvents['emit'](_0x5db6e4+':'+_0x2245b5['id'],_0x2245b5);MailInteractionEvents[_0xe242('0xd')](_0x5db6e4,_0x2245b5);_0x211b8e(null);})[_0xe242('0xe')](_0x211b8e(null));};}for(var e in events){if(events[_0xe242('0xf')](e)){var event=events[e];MailInteraction[_0xe242('0x10')](e,emitEvent(event));}}module[_0xe242('0x11')]=MailInteractionEvents;
\ No newline at end of file
+var _0xf2c5=['remove','getUsers','setDataValue','Users','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb','MailInteraction','MailMessage','save','update'];(function(_0x2e97bf,_0x569e2b){var _0x3b2110=function(_0x558783){while(--_0x558783){_0x2e97bf['push'](_0x2e97bf['shift']());}};_0x3b2110(++_0x569e2b);}(_0xf2c5,0x1aa));var _0x5f2c=function(_0x3ee245,_0x23230b){_0x3ee245=_0x3ee245-0x0;var _0x445bf0=_0xf2c5[_0x3ee245];return _0x445bf0;};'use strict';var EventEmitter=require(_0x5f2c('0x0'));var MailInteraction=require(_0x5f2c('0x1'))['db'][_0x5f2c('0x2')];var MailMessage=require(_0x5f2c('0x1'))['db'][_0x5f2c('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5f2c('0x4'),'afterUpdate':_0x5f2c('0x5'),'afterDestroy':_0x5f2c('0x6')};function emitEvent(_0x2ac01b){return function(_0x47cf8a,_0x4a45e4,_0x2d415f){_0x47cf8a[_0x5f2c('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x7c2e18){_0x47cf8a[_0x5f2c('0x8')](_0x5f2c('0x9'),_0x7c2e18['map'](function(_0x4e239f){return{'id':_0x4e239f['id']};}));return MailMessage[_0x5f2c('0xa')]({'where':{'MailInteractionId':_0x47cf8a['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5f2c('0xb')](function(_0x308dea){_0x47cf8a[_0x5f2c('0x8')](_0x5f2c('0xc'),_0x308dea[_0x5f2c('0xd')]);MailInteractionEvents[_0x5f2c('0xe')](_0x2ac01b+':'+_0x47cf8a['id'],_0x47cf8a);MailInteractionEvents[_0x5f2c('0xe')](_0x2ac01b,_0x47cf8a);_0x2d415f(null);})[_0x5f2c('0xf')](_0x2d415f(null));};}for(var e in events){if(events[_0x5f2c('0x10')](e)){var event=events[e];MailInteraction[_0x5f2c('0x11')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index ad0c678..7cbbfa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc428=['substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','models','get','update','then','catch','utf8mb4','lodash','../../config/logger','api','path','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT'];(function(_0x227244,_0x4f6d98){var _0xb00dd=function(_0x398edb){while(--_0x398edb){_0x227244['push'](_0x227244['shift']());}};_0xb00dd(++_0x4f6d98);}(_0xc428,0x6d));var _0x8c42=function(_0x1225d8,_0x209f3e){_0x1225d8=_0x1225d8-0x0;var _0x422bcb=_0xc428[_0x1225d8];return _0x422bcb;};'use strict';var _=require(_0x8c42('0x0'));var util=require('util');var logger=require(_0x8c42('0x1'))(_0x8c42('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8c42('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8c42('0x4'));module[_0x8c42('0x5')]=function(_0x39c0fb,_0x278613){return _0x39c0fb[_0x8c42('0x6')]('MailInteraction',attributes,{'tableName':_0x8c42('0x7'),'paranoid':![],'indexes':[{'name':_0x8c42('0x8'),'fields':[_0x8c42('0x9'),'to'],'type':_0x8c42('0xa')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x43ed86,_0x220719,_0x5694db){if(_0x43ed86[_0x8c42('0xb')]){_0x43ed86[_0x8c42('0xc')]=moment()['format'](_0x8c42('0xd'));}if(_0x43ed86[_0x8c42('0xe')]){_0x43ed86[_0x8c42('0xf')]=moment()[_0x8c42('0x10')](_0x8c42('0xd'));}_0x5694db(null,_0x220719);},'beforeUpdate':function(_0x2e8585,_0x19d5dc,_0x1a87bf){if(_0x2e8585[_0x8c42('0x11')](_0x8c42('0xb'))){_0x2e8585[_0x8c42('0xc')]=_0x2e8585[_0x8c42('0xb')]?moment()['format'](_0x8c42('0xd')):null;}if(_0x2e8585[_0x8c42('0x11')](_0x8c42('0xe'))){_0x2e8585[_0x8c42('0xf')]=moment()[_0x8c42('0x10')](_0x8c42('0xd'));_0x2e8585[_0x8c42('0xb')]=null;_0x2e8585[_0x8c42('0xc')]=null;}_0x1a87bf(null,_0x2e8585);},'afterUpdate':function(_0x3b6985,_0x258f72,_0x47bc38){var _0x558bd0=_0x39c0fb[_0x8c42('0x12')];var _0x3bb231=_0x3b6985[_0x8c42('0x13')]({'plain':!![]});if(_0x3bb231[_0x8c42('0xe')]){return _0x558bd0['MailMessage'][_0x8c42('0x14')]({'read':!![]},{'where':{'MailInteractionId':_0x3bb231['id']}})[_0x8c42('0x15')](function(){_0x47bc38();})[_0x8c42('0x16')](function(_0x5c4db0){_0x47bc38(_0x5c4db0);});}else{_0x47bc38();}}},'charset':_0x8c42('0x17'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5fbf=['get','MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','./mailInteraction.attributes','exports','define','mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','models'];(function(_0x13524d,_0x505b49){var _0x9918b4=function(_0xef1f0a){while(--_0xef1f0a){_0x13524d['push'](_0x13524d['shift']());}};_0x9918b4(++_0x505b49);}(_0x5fbf,0xa9));var _0xf5fb=function(_0x45e0c5,_0x4b99e6){_0x45e0c5=_0x45e0c5-0x0;var _0x55a6ac=_0x5fbf[_0x45e0c5];return _0x55a6ac;};'use strict';var _=require(_0xf5fb('0x0'));var util=require(_0xf5fb('0x1'));var logger=require(_0xf5fb('0x2'))(_0xf5fb('0x3'));var moment=require('moment');var BPromise=require(_0xf5fb('0x4'));var rp=require(_0xf5fb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf5fb('0x6'));var config=require('../../config/environment');var attributes=require(_0xf5fb('0x7'));module[_0xf5fb('0x8')]=function(_0xb829c2,_0x2d6fc2){return _0xb829c2[_0xf5fb('0x9')]('MailInteraction',attributes,{'tableName':_0xf5fb('0xa'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0xf5fb('0xb'),'to'],'type':_0xf5fb('0xc')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2c62f2,_0x52d9f1,_0x429802){if(_0x2c62f2[_0xf5fb('0xd')]){_0x2c62f2[_0xf5fb('0xe')]=moment()['format'](_0xf5fb('0xf'));}if(_0x2c62f2[_0xf5fb('0x10')]){_0x2c62f2[_0xf5fb('0x11')]=moment()[_0xf5fb('0x12')]('YYYY-MM-DD\x20HH:mm:ss');}_0x429802(null,_0x52d9f1);},'beforeUpdate':function(_0x4d8c23,_0x504a44,_0x4d111d){if(_0x4d8c23['changed'](_0xf5fb('0xd'))){_0x4d8c23[_0xf5fb('0xe')]=_0x4d8c23[_0xf5fb('0xd')]?moment()[_0xf5fb('0x12')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x4d8c23['changed']('closed')){_0x4d8c23[_0xf5fb('0x11')]=moment()[_0xf5fb('0x12')](_0xf5fb('0xf'));_0x4d8c23[_0xf5fb('0xd')]=null;_0x4d8c23[_0xf5fb('0xe')]=null;}_0x4d111d(null,_0x4d8c23);},'afterUpdate':function(_0x1da857,_0x39a263,_0x25680e){var _0x505f4a=_0xb829c2[_0xf5fb('0x13')];var _0x5bb05f=_0x1da857[_0xf5fb('0x14')]({'plain':!![]});if(_0x5bb05f[_0xf5fb('0x10')]){return _0x505f4a[_0xf5fb('0x15')][_0xf5fb('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x5bb05f['id']}})[_0xf5fb('0x17')](function(){_0x25680e();})[_0xf5fb('0x18')](function(_0x5b2c21){_0x25680e(_0x5b2c21);});}else{_0x25680e();}}},'charset':_0xf5fb('0x19'),'collate':_0xf5fb('0x1a')});};
\ No newline at end of file
index 9e9fa73..4ce3e00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e97=['error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','where','attributes','AddTagsToMailInteraction','find','ids','omit','spread','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./mailInteraction.socket','register','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x1e97,0x90));var _0x71e9=function(_0x59c142,_0x201d07){_0x59c142=_0x59c142-0x0;var _0x28f76d=_0x1e97[_0x59c142];return _0x28f76d;};'use strict';var _=require(_0x71e9('0x0'));var util=require(_0x71e9('0x1'));var moment=require(_0x71e9('0x2'));var BPromise=require('bluebird');var rs=require(_0x71e9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x71e9('0x4'))['db'];var utils=require(_0x71e9('0x5'));var logger=require(_0x71e9('0x6'))(_0x71e9('0x7'));var config=require(_0x71e9('0x8'));var jayson=require(_0x71e9('0x9'));var client=jayson[_0x71e9('0xa')][_0x71e9('0xb')]({'port':0x232a});config[_0x71e9('0xc')]=_[_0x71e9('0xd')](config[_0x71e9('0xc')],{'host':_0x71e9('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x71e9('0xf'))[_0x71e9('0x10')](socket);function respondWithRpcPromise(_0x2a92e1,_0x2cea75,_0x23a609){return new BPromise(function(_0x1c40af,_0xd91252){return client['request'](_0x2a92e1,_0x23a609)[_0x71e9('0x11')](function(_0x561761){logger[_0x71e9('0x12')](_0x71e9('0x13'),_0x2cea75,_0x71e9('0x14'));logger[_0x71e9('0x15')](_0x71e9('0x16'),_0x2cea75,'request\x20sent',JSON[_0x71e9('0x17')](_0x561761));if(_0x561761[_0x71e9('0x18')]){if(_0x561761[_0x71e9('0x18')][_0x71e9('0x19')]===0x1f4){logger[_0x71e9('0x18')](_0x71e9('0x13'),_0x2cea75,_0x561761['error'][_0x71e9('0x1a')]);return _0xd91252(_0x561761[_0x71e9('0x18')][_0x71e9('0x1a')]);}logger[_0x71e9('0x18')](_0x71e9('0x13'),_0x2cea75,_0x561761[_0x71e9('0x18')][_0x71e9('0x1a')]);return _0x1c40af(_0x561761[_0x71e9('0x18')]['message']);}else{logger[_0x71e9('0x12')]('MailInteraction,\x20%s,\x20%s',_0x2cea75,_0x71e9('0x14'));_0x1c40af(_0x561761[_0x71e9('0x1b')]['message']);}})[_0x71e9('0x1c')](function(_0x52b44d){logger[_0x71e9('0x18')](_0x71e9('0x13'),_0x2cea75,_0x52b44d);_0xd91252(_0x52b44d);});});}exports[_0x71e9('0x1d')]=function(_0x40e483){var _0x3fdafa=this;return new Promise(function(_0x39ed99,_0x52603d){return db[_0x71e9('0x1e')][_0x71e9('0x1f')](_0x40e483[_0x71e9('0x20')],{'raw':_0x40e483[_0x71e9('0x21')]?_0x40e483['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40e483[_0x71e9('0x21')]?_0x40e483[_0x71e9('0x21')][_0x71e9('0x22')]||null:null,'attributes':_0x40e483['options']?_0x40e483['options'][_0x71e9('0x23')]||null:null,'limit':_0x40e483['options']?_0x40e483[_0x71e9('0x21')]['limit']||null:null})[_0x71e9('0x11')](function(_0x3f70dd){logger[_0x71e9('0x12')](_0x71e9('0x1d'),_0x40e483);logger[_0x71e9('0x15')](_0x71e9('0x1d'),_0x40e483,JSON['stringify'](_0x3f70dd));_0x39ed99(_0x3f70dd);})[_0x71e9('0x1c')](function(_0x42ae4a){logger[_0x71e9('0x18')]('UpdateMailInteraction',_0x42ae4a['message'],_0x40e483);_0x52603d(_0x3fdafa['error'](0x1f4,_0x42ae4a['message']));});});};exports[_0x71e9('0x24')]=function(_0x40e107){return new Promise(function(_0x1c0bae,_0xb2934e){return db['MailInteraction'][_0x71e9('0x25')]({'where':_0x40e107['options']?_0x40e107[_0x71e9('0x21')][_0x71e9('0x22')]||null:null})[_0x71e9('0x11')](function(_0x4e8bdb){if(_0x4e8bdb){return _0x4e8bdb['addTags'](_0x40e107['body'][_0x71e9('0x26')],_[_0x71e9('0x27')](_0x40e107['body'],[_0x71e9('0x26'),'id'])||{});}})[_0x71e9('0x28')](function(_0x32075d){logger[_0x71e9('0x12')]('AddTags',_0x40e107);logger['debug']('AddTags',_0x40e107,JSON[_0x71e9('0x17')](_0x32075d));_0x1c0bae(_0x32075d);})[_0x71e9('0x1c')](function(_0xb90623){logger[_0x71e9('0x18')](_0x71e9('0x29'),_0xb90623[_0x71e9('0x1a')],_0x40e107);_0xb2934e(_this[_0x71e9('0x18')](0x1f4,_0xb90623[_0x71e9('0x1a')]));});});};
\ No newline at end of file
+var _0x8b43=['ids','spread','AddTags','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','then','info','MailInteraction,\x20%s,\x20%s','debug','MailInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','UpdateMailInteraction','update','body','options','raw','where','attributes','AddTagsToMailInteraction','MailInteraction','find'];(function(_0x56653b,_0x50e97f){var _0x5944d8=function(_0x12dd99){while(--_0x12dd99){_0x56653b['push'](_0x56653b['shift']());}};_0x5944d8(++_0x50e97f);}(_0x8b43,0x7e));var _0x38b4=function(_0x38e17f,_0x1d343e){_0x38e17f=_0x38e17f-0x0;var _0x40ba46=_0x8b43[_0x38e17f];return _0x40ba46;};'use strict';var _=require(_0x38b4('0x0'));var util=require(_0x38b4('0x1'));var moment=require(_0x38b4('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38b4('0x3'));var db=require(_0x38b4('0x4'))['db'];var utils=require(_0x38b4('0x5'));var logger=require('../../config/logger')(_0x38b4('0x6'));var config=require(_0x38b4('0x7'));var jayson=require(_0x38b4('0x8'));var client=jayson[_0x38b4('0x9')][_0x38b4('0xa')]({'port':0x232a});config[_0x38b4('0xb')]=_[_0x38b4('0xc')](config['redis'],{'host':_0x38b4('0xd'),'port':0x18eb});var socket=require(_0x38b4('0xe'))(new Redis(config[_0x38b4('0xb')]));require(_0x38b4('0xf'))[_0x38b4('0x10')](socket);function respondWithRpcPromise(_0x13e304,_0x5827dd,_0x3f16dd){return new BPromise(function(_0x2d3fe4,_0x27bb11){return client['request'](_0x13e304,_0x3f16dd)[_0x38b4('0x11')](function(_0x256969){logger[_0x38b4('0x12')](_0x38b4('0x13'),_0x5827dd,'request\x20sent');logger[_0x38b4('0x14')](_0x38b4('0x15'),_0x5827dd,_0x38b4('0x16'),JSON[_0x38b4('0x17')](_0x256969));if(_0x256969[_0x38b4('0x18')]){if(_0x256969[_0x38b4('0x18')][_0x38b4('0x19')]===0x1f4){logger[_0x38b4('0x18')](_0x38b4('0x13'),_0x5827dd,_0x256969[_0x38b4('0x18')][_0x38b4('0x1a')]);return _0x27bb11(_0x256969['error'][_0x38b4('0x1a')]);}logger[_0x38b4('0x18')](_0x38b4('0x13'),_0x5827dd,_0x256969['error']['message']);return _0x2d3fe4(_0x256969[_0x38b4('0x18')][_0x38b4('0x1a')]);}else{logger['info'](_0x38b4('0x13'),_0x5827dd,_0x38b4('0x16'));_0x2d3fe4(_0x256969['result']['message']);}})[_0x38b4('0x1b')](function(_0x355362){logger[_0x38b4('0x18')](_0x38b4('0x13'),_0x5827dd,_0x355362);_0x27bb11(_0x355362);});});}exports[_0x38b4('0x1c')]=function(_0x2aa103){var _0x5e5514=this;return new Promise(function(_0x73a686,_0x59a99f){return db['MailInteraction'][_0x38b4('0x1d')](_0x2aa103[_0x38b4('0x1e')],{'raw':_0x2aa103[_0x38b4('0x1f')]?_0x2aa103[_0x38b4('0x1f')][_0x38b4('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2aa103[_0x38b4('0x1f')]?_0x2aa103[_0x38b4('0x1f')][_0x38b4('0x21')]||null:null,'attributes':_0x2aa103[_0x38b4('0x1f')]?_0x2aa103[_0x38b4('0x1f')][_0x38b4('0x22')]||null:null,'limit':_0x2aa103[_0x38b4('0x1f')]?_0x2aa103[_0x38b4('0x1f')]['limit']||null:null})[_0x38b4('0x11')](function(_0x236f24){logger[_0x38b4('0x12')](_0x38b4('0x1c'),_0x2aa103);logger['debug']('UpdateMailInteraction',_0x2aa103,JSON[_0x38b4('0x17')](_0x236f24));_0x73a686(_0x236f24);})['catch'](function(_0x2006c4){logger[_0x38b4('0x18')](_0x38b4('0x1c'),_0x2006c4[_0x38b4('0x1a')],_0x2aa103);_0x59a99f(_0x5e5514['error'](0x1f4,_0x2006c4[_0x38b4('0x1a')]));});});};exports[_0x38b4('0x23')]=function(_0x35b9c1){return new Promise(function(_0x5c77ae,_0x360e60){return db[_0x38b4('0x24')][_0x38b4('0x25')]({'where':_0x35b9c1[_0x38b4('0x1f')]?_0x35b9c1[_0x38b4('0x1f')]['where']||null:null})[_0x38b4('0x11')](function(_0x444840){if(_0x444840){return _0x444840['addTags'](_0x35b9c1[_0x38b4('0x1e')][_0x38b4('0x26')],_['omit'](_0x35b9c1['body'],[_0x38b4('0x26'),'id'])||{});}})[_0x38b4('0x27')](function(_0x3bb787){logger[_0x38b4('0x12')]('AddTags',_0x35b9c1);logger[_0x38b4('0x14')](_0x38b4('0x28'),_0x35b9c1,JSON[_0x38b4('0x17')](_0x3bb787));_0x5c77ae(_0x3bb787);})['catch'](function(_0x429b03){logger['error'](_0x38b4('0x28'),_0x429b03['message'],_0x35b9c1);_0x360e60(_this[_0x38b4('0x18')](0x1f4,_0x429b03['message']));});});};
\ No newline at end of file
index 1920a3e..205fc6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4825=['emit','removeListener','register','length','./mailInteraction.events','save','update'];(function(_0x45ae56,_0x205f0c){var _0x371809=function(_0x41a9a6){while(--_0x41a9a6){_0x45ae56['push'](_0x45ae56['shift']());}};_0x371809(++_0x205f0c);}(_0x4825,0x9e));var _0x5482=function(_0x56a7b6,_0x463c77){_0x56a7b6=_0x56a7b6-0x0;var _0x162d02=_0x4825[_0x56a7b6];return _0x162d02;};'use strict';var MailInteractionEvents=require(_0x5482('0x0'));var events=[_0x5482('0x1'),'remove',_0x5482('0x2')];function createListener(_0x34f4c1,_0x5eadf1){return function(_0x46b1d9){_0x5eadf1[_0x5482('0x3')](_0x34f4c1,_0x46b1d9);};}function removeListener(_0x79ee31,_0x324318){return function(){MailInteractionEvents[_0x5482('0x4')](_0x79ee31,_0x324318);};}exports[_0x5482('0x5')]=function(_0x34a5df){for(var _0x318e33=0x0,_0x36519a=events[_0x5482('0x6')];_0x318e33<_0x36519a;_0x318e33++){var _0x32bbb3=events[_0x318e33];var _0x509c80=createListener('mailInteraction:'+_0x32bbb3,_0x34a5df);MailInteractionEvents['on'](_0x32bbb3,_0x509c80);}};
\ No newline at end of file
+var _0x211f=['removeListener','length','mailInteraction:','save','remove','update'];(function(_0x464994,_0xbaffbd){var _0x25c167=function(_0x3012c2){while(--_0x3012c2){_0x464994['push'](_0x464994['shift']());}};_0x25c167(++_0xbaffbd);}(_0x211f,0x1c5));var _0xf211=function(_0x16a14c,_0x2dbe5c){_0x16a14c=_0x16a14c-0x0;var _0x12d727=_0x211f[_0x16a14c];return _0x12d727;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xf211('0x0'),_0xf211('0x1'),_0xf211('0x2')];function createListener(_0x13ee08,_0x422789){return function(_0x437c35){_0x422789['emit'](_0x13ee08,_0x437c35);};}function removeListener(_0x43d9d5,_0x467791){return function(){MailInteractionEvents[_0xf211('0x3')](_0x43d9d5,_0x467791);};}exports['register']=function(_0x783feb){for(var _0x1fdfc2=0x0,_0x17ef29=events[_0xf211('0x4')];_0x1fdfc2<_0x17ef29;_0x1fdfc2++){var _0x44dd0d=events[_0x1fdfc2];var _0x220cc5=createListener(_0xf211('0x5')+_0x44dd0d,_0x783feb);MailInteractionEvents['on'](_0x44dd0d,_0x220cc5);}};
\ No newline at end of file
index 8f70f90..ee4911b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x063e=['post','tracked','mail','mailmessage:create','create','put','update','/:id/accept','accept','reject','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','/describe','isAuthenticated','describe','/:id','download'];(function(_0x475856,_0x397b5d){var _0x7086ee=function(_0x153c2e){while(--_0x153c2e){_0x475856['push'](_0x475856['shift']());}};_0x7086ee(++_0x397b5d);}(_0x063e,0x111));var _0xe063=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x063e[_0x1694f5];return _0x5b4321;};'use strict';var multer=require(_0xe063('0x0'));var util=require(_0xe063('0x1'));var path=require(_0xe063('0x2'));var timeout=require(_0xe063('0x3'));var express=require(_0xe063('0x4'));var router=express[_0xe063('0x5')]();var fs_extra=require(_0xe063('0x6'));var auth=require(_0xe063('0x7'));var interaction=require(_0xe063('0x8'));var config=require(_0xe063('0x9'));var controller=require(_0xe063('0xa'));router[_0xe063('0xb')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe063('0xc'),auth[_0xe063('0xd')](),controller[_0xe063('0xe')]);router['get'](_0xe063('0xf'),auth[_0xe063('0xd')](),controller['show']);router['get']('/:id/download',auth[_0xe063('0xd')](),controller[_0xe063('0x10')]);router[_0xe063('0x11')]('/',auth['isAuthenticated'](),interaction[_0xe063('0x12')](_0xe063('0x13'),_0xe063('0x14')),controller[_0xe063('0x15')]);router[_0xe063('0x16')](_0xe063('0xf'),auth[_0xe063('0xd')](),controller[_0xe063('0x17')]);router[_0xe063('0x16')](_0xe063('0x18'),auth[_0xe063('0xd')](),controller[_0xe063('0x19')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xe063('0x1a')]);router['delete'](_0xe063('0xf'),auth[_0xe063('0xd')](),controller[_0xe063('0x1b')]);module[_0xe063('0x1c')]=router;
\ No newline at end of file
+var _0x7af2=['/:id/reject','reject','delete','/:id','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','describe','show','mailmessage:create','put','update','/:id/accept','accept'];(function(_0x4156b0,_0x223852){var _0x2a7ca9=function(_0x388757){while(--_0x388757){_0x4156b0['push'](_0x4156b0['shift']());}};_0x2a7ca9(++_0x223852);}(_0x7af2,0x119));var _0x27af=function(_0x3e8c15,_0x506214){_0x3e8c15=_0x3e8c15-0x0;var _0x55129d=_0x7af2[_0x3e8c15];return _0x55129d;};'use strict';var multer=require('multer');var util=require(_0x27af('0x0'));var path=require(_0x27af('0x1'));var timeout=require(_0x27af('0x2'));var express=require(_0x27af('0x3'));var router=express['Router']();var fs_extra=require(_0x27af('0x4'));var auth=require(_0x27af('0x5'));var interaction=require(_0x27af('0x6'));var config=require(_0x27af('0x7'));var controller=require(_0x27af('0x8'));router[_0x27af('0x9')]('/',auth[_0x27af('0xa')](),controller[_0x27af('0xb')]);router[_0x27af('0x9')]('/describe',auth[_0x27af('0xa')](),controller[_0x27af('0xc')]);router[_0x27af('0x9')]('/:id',auth[_0x27af('0xa')](),controller[_0x27af('0xd')]);router[_0x27af('0x9')]('/:id/download',auth[_0x27af('0xa')](),controller['download']);router['post']('/',auth[_0x27af('0xa')](),interaction['tracked']('mail',_0x27af('0xe')),controller['create']);router[_0x27af('0xf')]('/:id',auth[_0x27af('0xa')](),controller[_0x27af('0x10')]);router[_0x27af('0xf')](_0x27af('0x11'),auth[_0x27af('0xa')](),controller[_0x27af('0x12')]);router[_0x27af('0xf')](_0x27af('0x13'),auth[_0x27af('0xa')](),controller[_0x27af('0x14')]);router[_0x27af('0x15')](_0x27af('0x16'),auth[_0x27af('0xa')](),controller[_0x27af('0x17')]);module[_0x27af('0x18')]=router;
\ No newline at end of file
index c46ff44..038aef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7476=['lodash','exports','TEXT','medium','BOOLEAN','out','STRING','long','DATE','ENUM','Chat','Email'];(function(_0x2b5ca3,_0x2fc5a8){var _0x4ae8f5=function(_0x3b4fc3){while(--_0x3b4fc3){_0x2b5ca3['push'](_0x2b5ca3['shift']());}};_0x4ae8f5(++_0x2fc5a8);}(_0x7476,0x1ec));var _0x6747=function(_0x332a78,_0x4d38b3){_0x332a78=_0x332a78-0x0;var _0x537ac5=_0x7476[_0x332a78];return _0x537ac5;};'use strict';var Sequelize=require('sequelize');var _=require(_0x6747('0x0'));module[_0x6747('0x1')]={'body':{'type':Sequelize[_0x6747('0x2')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x3'))},'read':{'type':Sequelize[_0x6747('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x6747('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x6747('0x6')](0x1fe)},'from':{'type':Sequelize[_0x6747('0x6')]},'to':{'type':Sequelize['TEXT'](_0x6747('0x7'))},'cc':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'bcc':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0x6747('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x6747('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x6747('0x8')]},'originTo':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'originCc':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'originChannel':{'type':Sequelize[_0x6747('0x9')]('Email',_0x6747('0xa')),'defaultValue':_0x6747('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x18a1=['Email','Chat','exports','TEXT','long','medium','BOOLEAN','out','STRING','INTEGER','DATE','ENUM'];(function(_0x698020,_0x1babec){var _0x3d7cdb=function(_0x17f6f0){while(--_0x17f6f0){_0x698020['push'](_0x698020['shift']());}};_0x3d7cdb(++_0x1babec);}(_0x18a1,0x15e));var _0x118a=function(_0x3c797d,_0x313fd2){_0x3c797d=_0x3c797d-0x0;var _0x3bfa85=_0x18a1[_0x3c797d];return _0x3bfa85;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module[_0x118a('0x0')]={'body':{'type':Sequelize[_0x118a('0x1')](_0x118a('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x118a('0x1')](_0x118a('0x3'))},'read':{'type':Sequelize[_0x118a('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x118a('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x118a('0x6')](0x1fe)},'from':{'type':Sequelize[_0x118a('0x6')]},'to':{'type':Sequelize[_0x118a('0x1')](_0x118a('0x2'))},'cc':{'type':Sequelize[_0x118a('0x1')](_0x118a('0x2'))},'bcc':{'type':Sequelize[_0x118a('0x1')](_0x118a('0x2'))},'subject':{'type':Sequelize[_0x118a('0x1')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x118a('0x7')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0x118a('0x8')]},'originTo':{'type':Sequelize[_0x118a('0x1')](_0x118a('0x2'))},'originCc':{'type':Sequelize[_0x118a('0x1')](_0x118a('0x2'))},'originChannel':{'type':Sequelize[_0x118a('0x9')](_0x118a('0xa'),_0x118a('0xb')),'defaultValue':_0x118a('0xa'),'allowNull':![]}};
\ No newline at end of file
index 99dcf48..26d3f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb879=['error','code','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','stack','name','MailMessage','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','show','params','body','find','describe','create','direction','secret','MailAccount','findOne','MailAccountId','CmList','List','Contacts','DESC','MailServerOut','CloudProvider','Smtp','getSmtpOptions','attachments','join','server/files/attachments','basename','SendMail','messageId','format','accept','mail','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','interaction','[MAILMESSAGE: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','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','RejectMessage','rejectMessage','fromString','rejectmessage','download','unix','root','tmp','server','files','message-%s.eml','from','subject','createdAt','Attachment','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','Attachments','existsSync','readFileSync','unlinkSync','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../config/logger','api','../../mysqldb','defaults','localhost','socket.io-emitter','redis','html-entities','./mailMessage.socket','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xdd3ca1,_0xbb94c2){var _0x2c7f73=function(_0x1e567e){while(--_0x1e567e){_0xdd3ca1['push'](_0xdd3ca1['shift']());}};_0x2c7f73(++_0xbb94c2);}(_0xb879,0x1b3));var _0x9b87=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xb879[_0x13e741];return _0x3f8bb3;};'use strict';var emlformat=require('eml-format');var moment=require(_0x9b87('0x0'));var BPromise=require(_0x9b87('0x1'));var util=require(_0x9b87('0x2'));var path=require(_0x9b87('0x3'));var fs=require('fs');var _=require(_0x9b87('0x4'));var Redis=require(_0x9b87('0x5'));var htmlToText=require(_0x9b87('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x9b87('0x7'))(_0x9b87('0x8'));var interaction_log=require(_0x9b87('0x7'))('mail-interactions');var config=require('../../config/environment');var db=require(_0x9b87('0x9'))['db'];config['redis']=_[_0x9b87('0xa')](config['redis'],{'host':_0x9b87('0xb'),'port':0x18eb});var socket=require(_0x9b87('0xc'))(new Redis(config[_0x9b87('0xd')]));var htmlEntities=require(_0x9b87('0xe'));require(_0x9b87('0xf'))['register'](socket);var jayson=require(_0x9b87('0x10'));var client=jayson[_0x9b87('0x11')]['http']({'port':0x232c});var client9003=jayson[_0x9b87('0x11')][_0x9b87('0x12')]({'port':0x232b});var client9002=jayson['client'][_0x9b87('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x3740fe,_0x579701,_0x1ca098,_0x2561f4){return new BPromise(function(_0x36ddcf,_0x1ea281){var _0x5a7246=_0x2561f4||client;return _0x5a7246[_0x9b87('0x13')](_0x3740fe,_0x1ca098)[_0x9b87('0x14')](function(_0x4321b2){logger[_0x9b87('0x15')](_0x9b87('0x16'),_0x579701,_0x9b87('0x17'));logger[_0x9b87('0x18')](_0x9b87('0x19'),_0x579701,_0x9b87('0x17'),JSON[_0x9b87('0x1a')](_0x4321b2));if(_0x4321b2[_0x9b87('0x1b')]){if(_0x4321b2[_0x9b87('0x1b')][_0x9b87('0x1c')]===0x1f4){logger[_0x9b87('0x1b')]('MailMessage,\x20%s,\x20%s',_0x579701,_0x4321b2[_0x9b87('0x1b')][_0x9b87('0x1d')]);return _0x1ea281(_0x4321b2['error'][_0x9b87('0x1d')]);}logger['error'](_0x9b87('0x16'),_0x579701,_0x4321b2[_0x9b87('0x1b')]['message']);return _0x36ddcf(_0x4321b2[_0x9b87('0x1b')][_0x9b87('0x1d')]);}else{logger[_0x9b87('0x15')](_0x9b87('0x16'),_0x579701,_0x9b87('0x17'));_0x36ddcf(_0x4321b2[_0x9b87('0x1e')][_0x9b87('0x1d')]);}})[_0x9b87('0x1f')](function(_0x150e28){logger[_0x9b87('0x1b')]('MailMessage,\x20%s,\x20%s',_0x579701,_0x150e28);_0x1ea281(_0x150e28);});});}function respondWithResult(_0x50ef6a,_0xe4fbbe){_0xe4fbbe=_0xe4fbbe||0xc8;return function(_0x8b9e5f){if(_0x8b9e5f){return _0x50ef6a[_0x9b87('0x20')](_0xe4fbbe)[_0x9b87('0x21')](_0x8b9e5f);}};}function respondWithFilteredResult(_0x15d9d9,_0x52cf63){return function(_0x2844b8){if(_0x2844b8){var _0x28b3c8=typeof _0x52cf63[_0x9b87('0x22')]===_0x9b87('0x23')&&typeof _0x52cf63[_0x9b87('0x24')]===_0x9b87('0x23');var _0x2c9d18=_0x2844b8['count'];var _0x41770a=_0x28b3c8?0x0:_0x52cf63['offset'];var _0x54e1b3=_0x28b3c8?_0x2844b8[_0x9b87('0x25')]:_0x52cf63[_0x9b87('0x22')]+_0x52cf63[_0x9b87('0x24')];var _0x3ac213;if(_0x54e1b3>=_0x2c9d18){_0x54e1b3=_0x2c9d18;_0x3ac213=0xc8;}else{_0x3ac213=0xce;}_0x15d9d9[_0x9b87('0x20')](_0x3ac213);return _0x15d9d9[_0x9b87('0x26')](_0x9b87('0x27'),_0x41770a+'-'+_0x54e1b3+'/'+_0x2c9d18)[_0x9b87('0x21')](_0x2844b8);}return null;};}function saveUpdates(_0xcb7b92){return function(_0x547e7f){if(_0x547e7f){return _0x547e7f[_0x9b87('0x28')](_0xcb7b92)[_0x9b87('0x14')](function(_0xab35f7){return _0xab35f7;});}return null;};}function removeEntity(_0x21a4d1){return function(_0xcbf5a4){if(_0xcbf5a4){return _0xcbf5a4[_0x9b87('0x29')]()['then'](function(){_0x21a4d1[_0x9b87('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cffc1){return function(_0x478baf){if(!_0x478baf){_0x2cffc1['sendStatus'](0x194);}return _0x478baf;};}function handleError(_0x2e0a18,_0x361725){_0x361725=_0x361725||0x1f4;return function(_0xdcf3cd){logger[_0x9b87('0x1b')](_0xdcf3cd[_0x9b87('0x2a')]);if(_0xdcf3cd['name']){delete _0xdcf3cd[_0x9b87('0x2b')];}_0x2e0a18[_0x9b87('0x20')](_0x361725)['send'](_0xdcf3cd);};}exports['index']=function(_0x2d4318,_0x747795){var _0x21456f={},_0x30bf0e={},_0xaf9085={'count':0x0,'rows':[]};var _0x5828bc=_['map'](db[_0x9b87('0x2c')][_0x9b87('0x2d')],function(_0x181b09){return{'name':_0x181b09[_0x9b87('0x2e')],'type':_0x181b09[_0x9b87('0x2f')]['key']};});_0x30bf0e[_0x9b87('0x30')]=_['map'](_0x5828bc,_0x9b87('0x2b'));_0x30bf0e[_0x9b87('0x31')]=_[_0x9b87('0x32')](_0x2d4318['query']);_0x30bf0e['filters']=_[_0x9b87('0x33')](_0x30bf0e[_0x9b87('0x30')],_0x30bf0e['query']);_0x21456f['attributes']=_[_0x9b87('0x33')](_0x30bf0e[_0x9b87('0x30')],qs[_0x9b87('0x34')](_0x2d4318[_0x9b87('0x31')]['fields']));_0x21456f[_0x9b87('0x35')]=_0x21456f[_0x9b87('0x35')][_0x9b87('0x36')]?_0x21456f['attributes']:_0x30bf0e[_0x9b87('0x30')];if(!_0x2d4318[_0x9b87('0x31')][_0x9b87('0x37')](_0x9b87('0x38'))){_0x21456f['limit']=qs[_0x9b87('0x24')](_0x2d4318['query']['limit']);_0x21456f[_0x9b87('0x22')]=qs[_0x9b87('0x22')](_0x2d4318['query'][_0x9b87('0x22')]);}_0x21456f['order']=qs['sort'](_0x2d4318[_0x9b87('0x31')][_0x9b87('0x39')]);_0x21456f[_0x9b87('0x3a')]=qs[_0x9b87('0x3b')](_[_0x9b87('0x3c')](_0x2d4318[_0x9b87('0x31')],_0x30bf0e['filters']),_0x5828bc);if(_0x2d4318['query'][_0x9b87('0x3d')]){_0x21456f[_0x9b87('0x3a')]=_[_0x9b87('0x3e')](_0x21456f[_0x9b87('0x3a')],{'$or':_[_0x9b87('0x3f')](_0x5828bc,function(_0x5c46bb){if(_0x5c46bb['type']!==_0x9b87('0x40')){var _0x4b5057={};_0x4b5057[_0x5c46bb[_0x9b87('0x2b')]]={'$like':'%'+_0x2d4318[_0x9b87('0x31')][_0x9b87('0x3d')]+'%'};return _0x4b5057;}})});}_0x21456f=_[_0x9b87('0x3e')]({},_0x21456f,_0x2d4318[_0x9b87('0x41')]);var _0x5a0edb={'where':_0x21456f[_0x9b87('0x3a')]};return db['MailMessage'][_0x9b87('0x25')](_0x5a0edb)['then'](function(_0x3e64e7){_0xaf9085[_0x9b87('0x25')]=_0x3e64e7;if(_0x2d4318[_0x9b87('0x31')][_0x9b87('0x42')]){_0x21456f[_0x9b87('0x43')]=[{'all':!![]}];}return db[_0x9b87('0x2c')][_0x9b87('0x44')](_0x21456f);})['then'](function(_0x14d54c){_0xaf9085['rows']=_0x14d54c;return _0xaf9085;})[_0x9b87('0x14')](respondWithFilteredResult(_0x747795,_0x21456f))[_0x9b87('0x1f')](handleError(_0x747795,null));};exports[_0x9b87('0x45')]=function(_0x5e8701,_0x5177d2){var _0x599a0f={'raw':!![],'where':{'id':_0x5e8701[_0x9b87('0x46')]['id']}},_0x451640={};_0x451640['model']=_[_0x9b87('0x32')](db['MailMessage'][_0x9b87('0x2d')]);_0x451640['query']=_[_0x9b87('0x32')](_0x5e8701['query']);_0x451640[_0x9b87('0x3b')]=_[_0x9b87('0x33')](_0x451640[_0x9b87('0x30')],_0x451640['query']);_0x599a0f[_0x9b87('0x35')]=_[_0x9b87('0x33')](_0x451640[_0x9b87('0x30')],qs[_0x9b87('0x34')](_0x5e8701['query'][_0x9b87('0x34')]));_0x599a0f[_0x9b87('0x35')]=_0x599a0f[_0x9b87('0x35')]['length']?_0x599a0f[_0x9b87('0x35')]:_0x451640['model'];if(_0x5e8701['query'][_0x9b87('0x42')]){_0x599a0f['include']=[{'all':!![]}];}_0x599a0f=_[_0x9b87('0x3e')]({},_0x599a0f,_0x5e8701['options']);return db[_0x9b87('0x2c')]['find'](_0x599a0f)[_0x9b87('0x14')](handleEntityNotFound(_0x5177d2,null))[_0x9b87('0x14')](respondWithResult(_0x5177d2,null))[_0x9b87('0x1f')](handleError(_0x5177d2,null));};exports[_0x9b87('0x28')]=function(_0x3d2a14,_0xc4e0df){if(_0x3d2a14[_0x9b87('0x47')]['id']){delete _0x3d2a14[_0x9b87('0x47')]['id'];}return db[_0x9b87('0x2c')][_0x9b87('0x48')]({'where':{'id':_0x3d2a14[_0x9b87('0x46')]['id']}})[_0x9b87('0x14')](handleEntityNotFound(_0xc4e0df,null))['then'](saveUpdates(_0x3d2a14[_0x9b87('0x47')],null))[_0x9b87('0x14')](respondWithResult(_0xc4e0df,null))['catch'](handleError(_0xc4e0df,null));};exports['destroy']=function(_0x3b6eb8,_0x26547e){return db['MailMessage'][_0x9b87('0x48')]({'where':{'id':_0x3b6eb8['params']['id']}})[_0x9b87('0x14')](handleEntityNotFound(_0x26547e,null))[_0x9b87('0x14')](removeEntity(_0x26547e,null))['catch'](handleError(_0x26547e,null));};exports[_0x9b87('0x49')]=function(_0xf5640,_0x52ce78){return db[_0x9b87('0x2c')][_0x9b87('0x49')]()['then'](respondWithResult(_0x52ce78,null))[_0x9b87('0x1f')](handleError(_0x52ce78,null));};exports[_0x9b87('0x4a')]=function(_0x7ef3e7,_0x4f919f){return db[_0x9b87('0x2c')][_0x9b87('0x4a')](_0x7ef3e7[_0x9b87('0x47')])[_0x9b87('0x14')](function(_0x4782d5){if(_0x4782d5){if(_0x4782d5[_0x9b87('0x4b')]==='out'&&!_0x4782d5[_0x9b87('0x4c')]){var _0x3f8b58,_0x989310,_0x542fee;if(_0x7ef3e7['body']['to']){_0x989310=_0x7ef3e7[_0x9b87('0x47')]['to']['split'](',')[0x0];}return db[_0x9b87('0x4d')][_0x9b87('0x4e')]({'where':{'id':_0x4782d5[_0x9b87('0x4f')]},'include':[{'model':db[_0x9b87('0x50')],'as':_0x9b87('0x51'),'include':[{'model':db['CmContact'],'as':_0x9b87('0x52'),'where':{'email':_0x989310},'limit':0x1,'order':[['updatedAt',_0x9b87('0x53')]]}]},{'model':db[_0x9b87('0x54')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x9b87('0x55')],'as':_0x9b87('0x55'),'raw':!![]}]}]})['then'](function(_0x3c95a6){_0x3f8b58=_0x3c95a6;if(!_0x3f8b58||!_0x3f8b58[_0x9b87('0x56')])return;var _0x38633b=_0x3f8b58[_0x9b87('0x57')]();if(_0x7ef3e7[_0x9b87('0x47')]['attachments']&&_0x7ef3e7[_0x9b87('0x47')][_0x9b87('0x58')][_0x9b87('0x36')]){for(var _0x1b3705=0x0;_0x1b3705<_0x7ef3e7['body'][_0x9b87('0x58')][_0x9b87('0x36')];_0x1b3705+=0x1){_0x7ef3e7['body']['attachments'][_0x1b3705]={'filename':_0x7ef3e7[_0x9b87('0x47')]['attachments'][_0x1b3705][_0x9b87('0x2b')],'path':path[_0x9b87('0x59')](config['root'],_0x9b87('0x5a'),_0x7ef3e7[_0x9b87('0x47')][_0x9b87('0x58')][_0x1b3705][_0x9b87('0x5b')])};}}_0x542fee={'account':_0x38633b,'message':_0x7ef3e7[_0x9b87('0x47')]};return;})[_0x9b87('0x14')](function(){if(_0x3f8b58[_0x9b87('0x51')]){if(_0x3f8b58['List'][_0x9b87('0x52')][_0x9b87('0x36')]){return _0x3f8b58[_0x9b87('0x51')][_0x9b87('0x52')][0x0];}else{return db['CmContact'][_0x9b87('0x4a')](_[_0x9b87('0xa')](_0x7ef3e7['body'],{'firstName':_0x7ef3e7[_0x9b87('0x47')]['to'],'email':_0x7ef3e7[_0x9b87('0x47')]['to'],'phone':_0x7ef3e7[_0x9b87('0x47')]['to'],'ListId':_0x3f8b58['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0x9b87('0x14')](function(){if(_0x542fee){return respondWithRpcPromise(_0x9b87('0x5c'),'sendMail',_0x542fee,client9003)[_0x9b87('0x14')](function(_0x2cb1a6){return _0x4782d5['update']({'read':!![],'messageId':_0x2cb1a6[_0x9b87('0x5d')],'sentAt':moment()[_0x9b87('0x5e')]('YYYY-MM-DD\x20HH:mm:ss')});})['catch'](function(_0x12ef6c){logger[_0x9b87('0x1b')]('%s',JSON[_0x9b87('0x1a')](_0x12ef6c));return _0x4782d5;});}return _0x4782d5;});}return _0x4782d5;}})[_0x9b87('0x14')](respondWithResult(_0x4f919f,0xc9))[_0x9b87('0x1f')](handleError(_0x4f919f,null));};exports[_0x9b87('0x5f')]=function(_0x5b6967,_0xb0f2d0){var _0x294b38={'agent':{},'channel':_0x9b87('0x60')};if(_0x5b6967[_0x9b87('0x47')]['id']){delete _0x5b6967[_0x9b87('0x47')]['id'];}_0x5b6967[_0x9b87('0x47')]['read']=!![];_0x5b6967['body'][_0x9b87('0x61')]=moment()['format'](_0x9b87('0x62'));_0x5b6967[_0x9b87('0x47')]['UserId']=_0x5b6967[_0x9b87('0x47')][_0x9b87('0x63')]||_0x5b6967[_0x9b87('0x64')]['id'];_0x294b38[_0x9b87('0x65')]['id']=_0x5b6967['body'][_0x9b87('0x63')];return db[_0x9b87('0x2c')]['find']({'where':{'id':_0x5b6967[_0x9b87('0x46')]['id'],'UserId':null}})[_0x9b87('0x14')](handleEntityNotFound(_0xb0f2d0,null))[_0x9b87('0x14')](saveUpdates(_0x5b6967[_0x9b87('0x47')],null))[_0x9b87('0x14')](function(_0x47f18b){if(_0x47f18b){_0x294b38[_0x9b87('0x1d')]=_0x47f18b[_0x9b87('0x66')]({'plain':!![]});return db[_0x9b87('0x67')][_0x9b87('0x48')]({'where':{'id':_0x47f18b[_0x9b87('0x68')]}});}return null;})['then'](handleEntityNotFound(_0xb0f2d0,null))[_0x9b87('0x14')](function(_0x67b293){if(_0x67b293){return _0x67b293[_0x9b87('0x28')]({'UserId':_0x5b6967[_0x9b87('0x47')]['UserId'],'read1stAt':_[_0x9b87('0x69')](_0x67b293[_0x9b87('0x6a')])?moment()[_0x9b87('0x5e')](_0x9b87('0x62')):undefined});}return null;})['then'](function(_0x5673e4){if(_0x5673e4){_0x294b38[_0x9b87('0x6b')]=_0x5673e4[_0x9b87('0x66')]({'plain':!![]});interaction_log[_0x9b87('0x15')](_0x9b87('0x6c'),_0x5b6967[_0x9b87('0x64')]['id'],_0x5b6967[_0x9b87('0x64')][_0x9b87('0x2b')],_0x5b6967[_0x9b87('0x64')][_0x9b87('0x6d')],_0x294b38[_0x9b87('0x6b')]['id'],_0x5b6967[_0x9b87('0x47')]?JSON['stringify'](_0x5b6967[_0x9b87('0x47')]):_0x9b87('0x6e'));return respondWithRpcPromise(_0x9b87('0x6f'),'acceptMessage',_0x294b38);}return null;})[_0x9b87('0x14')](function(_0x306f6e){var _0x589fb6=_0x9b87('0x70')+_0x306f6e[_0x9b87('0x1d')][_0x9b87('0x71')];return db[_0x9b87('0x72')][_0x9b87('0x31')](_0x589fb6,{'type':db[_0x9b87('0x73')][_0x9b87('0x74')][_0x9b87('0x75')],'raw':!![]})[_0x9b87('0x14')](function(_0x517963){return _0x517963;});})['then'](function(_0x39847b){if(_0x39847b){_0x294b38['message']['contact']=_0x39847b[0x0];if(!_0x5b6967['body'][_0x9b87('0x63')])return;return db[_0x9b87('0x76')][_0x9b87('0x48')]({'where':{'id':_0x5b6967[_0x9b87('0x47')][_0x9b87('0x63')],'role':_0x9b87('0x65')},'attributes':['id',_0x9b87('0x2b'),_0x9b87('0x77'),_0x9b87('0x78'),_0x9b87('0x79')],'raw':!![]});}return null;})['then'](function(_0x46a66e){if(!_0x46a66e)return null;_0x294b38[_0x9b87('0x1d')][_0x9b87('0x65')]=_0x46a66e;return _0x294b38;})[_0x9b87('0x14')](function(_0x1b45e5){if(_0x1b45e5){if(_0x5b6967[_0x9b87('0x47')][_0x9b87('0x7a')]){_0x294b38['message'][_0x9b87('0x7b')]=util['format'](_0x9b87('0x7c'),_0x5b6967[_0x9b87('0x64')][_0x9b87('0x2b')]);_0x294b38[_0x9b87('0x1d')]['channel']=_0x294b38[_0x9b87('0x7d')];_0x294b38[_0x9b87('0x1d')][_0x9b87('0x7e')]=_0x294b38[_0x9b87('0x7d')];_0x294b38[_0x9b87('0x1d')][_0x9b87('0x7f')]=_0x9b87('0x5f');_0x294b38[_0x9b87('0x1d')][_0x9b87('0x47')]=htmlToText['fromString'](_0x294b38[_0x9b87('0x1d')][_0x9b87('0x47')]);return respondWithRpcPromise(_0x9b87('0x80'),'EventManager',{'event':_0x9b87('0x81'),'message':_0x294b38['message']},client9002)[_0x9b87('0x14')](function(){return _0x294b38;});}return _0x294b38;}return null;})[_0x9b87('0x14')](respondWithResult(_0xb0f2d0,null))[_0x9b87('0x1f')](handleError(_0xb0f2d0,null));};exports[_0x9b87('0x82')]=function(_0x5978fe,_0x469604){var _0x36079f={'agent':{},'channel':_0x9b87('0x60')};if(_0x5978fe[_0x9b87('0x47')]['id']){delete _0x5978fe[_0x9b87('0x47')]['id'];}_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')]=_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')]||_0x5978fe['user']['id'];_0x36079f[_0x9b87('0x65')]['id']=_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')];return db[_0x9b87('0x2c')]['find']({'where':{'id':_0x5978fe[_0x9b87('0x46')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x469604,null))[_0x9b87('0x14')](function(_0x135154){if(_0x135154){_0x36079f[_0x9b87('0x1d')]=_0x135154[_0x9b87('0x66')]({'plain':!![]});return db['MailInteraction'][_0x9b87('0x48')]({'where':{'id':_0x135154[_0x9b87('0x68')]}});}return null;})[_0x9b87('0x14')](handleEntityNotFound(_0x469604,null))[_0x9b87('0x14')](function(_0x47d0ea){if(_0x47d0ea){_0x36079f[_0x9b87('0x6b')]=_0x47d0ea[_0x9b87('0x66')]({'plain':!![]});interaction_log[_0x9b87('0x15')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5978fe[_0x9b87('0x64')]['id'],_0x5978fe[_0x9b87('0x64')][_0x9b87('0x2b')],_0x5978fe[_0x9b87('0x64')][_0x9b87('0x6d')],_0x36079f['interaction']['id'],_0x5978fe['body']?JSON[_0x9b87('0x1a')](_0x5978fe['body']):_0x9b87('0x6e'));return respondWithRpcPromise(_0x9b87('0x83'),_0x9b87('0x84'),_0x36079f);}return null;})['then'](function(_0x2f5008){var _0x447600=_0x9b87('0x70')+_0x2f5008[_0x9b87('0x1d')][_0x9b87('0x71')];return db[_0x9b87('0x72')][_0x9b87('0x31')](_0x447600,{'type':db[_0x9b87('0x73')][_0x9b87('0x74')][_0x9b87('0x75')],'raw':!![]})[_0x9b87('0x14')](function(_0x40fc69){return _0x40fc69;});})[_0x9b87('0x14')](function(_0x4c3ff3){if(_0x4c3ff3){_0x36079f['message']['contact']=_0x4c3ff3[0x0];if(!_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')])return;return db[_0x9b87('0x76')][_0x9b87('0x48')]({'where':{'id':_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')],'role':_0x9b87('0x65')},'attributes':['id',_0x9b87('0x2b'),_0x9b87('0x77'),'email',_0x9b87('0x79')],'raw':!![]});}return null;})['then'](function(_0x3f931a){if(!_0x3f931a)return null;_0x36079f[_0x9b87('0x1d')][_0x9b87('0x65')]=_0x3f931a;return _0x36079f;})['then'](function(_0x471971){if(_0x471971){_0x471971[_0x9b87('0x1d')]['interface']=util['format'](_0x9b87('0x7c'),_0x5978fe[_0x9b87('0x64')]['name']);_0x471971[_0x9b87('0x1d')][_0x9b87('0x7d')]=_0x36079f['channel'];_0x471971[_0x9b87('0x1d')][_0x9b87('0x7e')]=_0x36079f[_0x9b87('0x7d')];_0x471971['message']['event']=_0x9b87('0x82');_0x471971['message']['body']=htmlToText[_0x9b87('0x85')](_0x36079f[_0x9b87('0x1d')][_0x9b87('0x47')]);respondWithRpcPromise(_0x9b87('0x80'),'EventManager',{'event':_0x9b87('0x86'),'message':_0x471971[_0x9b87('0x1d')]},client9002);return _0x36079f;}return null;})['then'](respondWithResult(_0x469604,null))[_0x9b87('0x1f')](handleError(_0x469604,null));};exports[_0x9b87('0x87')]=function(_0x1be605,_0x139d14){var _0x2428b7=moment()[_0x9b87('0x88')]()['toString']();var _0xe90d2f=path[_0x9b87('0x59')](config[_0x9b87('0x89')],'server','files',_0x9b87('0x8a'));var _0x1a7b48=path[_0x9b87('0x59')](config[_0x9b87('0x89')],_0x9b87('0x8b'),_0x9b87('0x8c'),_0x9b87('0x58'));var _0x206eb6=util['format'](_0x9b87('0x8d'),_0x2428b7);return db[_0x9b87('0x2c')][_0x9b87('0x48')]({'where':{'id':_0x1be605[_0x9b87('0x46')]['id']},'attributes':['id',_0x9b87('0x47'),_0x9b87('0x8e'),'to','cc','bcc',_0x9b87('0x8f'),_0x9b87('0x90')],'include':_0x1be605['query'][_0x9b87('0x58')]?[{'model':db[_0x9b87('0x91')],'as':'Attachments'}]:undefined})[_0x9b87('0x14')](handleEntityNotFound(_0x139d14,null))[_0x9b87('0x14')](function(_0x1ac632){if(_0x1ac632){var _0x3765cd=_0x1ac632;var _0x28c400={'from':_0x3765cd[_0x9b87('0x8e')],'to':_0x3765cd['to'],'subject':_0x3765cd[_0x9b87('0x8f')],'html':htmlEntities['decode'](_0x3765cd[_0x9b87('0x47')]),'headers':{'Date':moment(_0x3765cd[_0x9b87('0x90')])[_0x9b87('0x5e')](_0x9b87('0x92'))},'attachments':[]};if(_0x1ac632['cc']){_0x28c400[_0x9b87('0x93')]['Cc']=_0x1ac632['cc'];}if(_0x1ac632[_0x9b87('0x94')]){_0x28c400['headers'][_0x9b87('0x95')]=_0x1ac632[_0x9b87('0x94')];}return new BPromise(function(_0x47da5a,_0x55f42b){if(_0x1ac632[_0x9b87('0x96')]){for(var _0xa4c0ca=0x0;_0xa4c0ca<_0x1ac632[_0x9b87('0x96')][_0x9b87('0x36')];_0xa4c0ca++){var _0x5480e4=_0x1ac632['Attachments'][_0xa4c0ca];var _0x42d15e=path[_0x9b87('0x59')](_0x1a7b48,_0x5480e4[_0x9b87('0x5b')]);if(fs[_0x9b87('0x97')](_0x42d15e)){_0x28c400[_0x9b87('0x58')]['push']({'name':_0x5480e4[_0x9b87('0x2b')],'contentType':_0x5480e4[_0x9b87('0x2f')],'data':fs[_0x9b87('0x98')](_0x42d15e)});}}}emlformat['build'](_0x28c400,function(_0xa32bca,_0xcade49){if(_0xa32bca)return _0x55f42b(_0xa32bca);fs['writeFileSync'](path[_0x9b87('0x59')](_0xe90d2f,_0x206eb6),_0xcade49);return _0x47da5a(_0xcade49);});});}})[_0x9b87('0x14')](function(_0x5f125c){if(_0x5f125c){return _0x139d14[_0x9b87('0x87')](path[_0x9b87('0x59')](_0xe90d2f,_0x206eb6),_0x206eb6,function(_0x2b8828){if(!_0x2b8828)fs[_0x9b87('0x99')](path[_0x9b87('0x59')](_0xe90d2f,_0x206eb6));});}})[_0x9b87('0x1f')](handleError(_0x139d14,null));};
\ No newline at end of file
+var _0x4e1f=['fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','accept','fromString','EventManager','reject','MailInteraction','role','rejectMessage','Sequelize','SELECT','User','rejectmessage','download','unix','toString','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','headers','basename','existsSync','push','readFileSync','build','writeFileSync','eml-format','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','json','limit','undefined','count','offset','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','MailMessage','rawAttributes','fieldName','type','model','map','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filters','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','body','describe','create','direction','secret','split','MailAccount','findOne','MailAccountId','CmList','List','CmContact','updatedAt','DESC','MailServerOut','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','Contacts','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','mail','UserId','user','agent','get','MailInteractionId','isNil','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact'];(function(_0x584b7b,_0x5bd8fb){var _0x2e4b0e=function(_0x586613){while(--_0x586613){_0x584b7b['push'](_0x584b7b['shift']());}};_0x2e4b0e(++_0x5bd8fb);}(_0x4e1f,0xcb));var _0xf4e1=function(_0x27d4cc,_0x16df4c){_0x27d4cc=_0x27d4cc-0x0;var _0x309d8a=_0x4e1f[_0x27d4cc];return _0x309d8a;};'use strict';var emlformat=require(_0xf4e1('0x0'));var moment=require(_0xf4e1('0x1'));var BPromise=require(_0xf4e1('0x2'));var util=require(_0xf4e1('0x3'));var path=require(_0xf4e1('0x4'));var fs=require('fs');var _=require(_0xf4e1('0x5'));var Redis=require(_0xf4e1('0x6'));var htmlToText=require(_0xf4e1('0x7'));var qs=require(_0xf4e1('0x8'));var logger=require(_0xf4e1('0x9'))('api');var interaction_log=require('../../config/logger')(_0xf4e1('0xa'));var config=require(_0xf4e1('0xb'));var db=require(_0xf4e1('0xc'))['db'];config[_0xf4e1('0xd')]=_[_0xf4e1('0xe')](config[_0xf4e1('0xd')],{'host':_0xf4e1('0xf'),'port':0x18eb});var socket=require(_0xf4e1('0x10'))(new Redis(config['redis']));var htmlEntities=require(_0xf4e1('0x11'));require(_0xf4e1('0x12'))[_0xf4e1('0x13')](socket);var jayson=require('jayson/promise');var client=jayson[_0xf4e1('0x14')][_0xf4e1('0x15')]({'port':0x232c});var client9003=jayson[_0xf4e1('0x14')][_0xf4e1('0x15')]({'port':0x232b});var client9002=jayson['client'][_0xf4e1('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x3df46f,_0x44d875,_0x12ffcc,_0x51c341){return new BPromise(function(_0x3a82f6,_0x3eaee1){var _0x3f747e=_0x51c341||client;return _0x3f747e[_0xf4e1('0x16')](_0x3df46f,_0x12ffcc)[_0xf4e1('0x17')](function(_0x2684b4){logger[_0xf4e1('0x18')](_0xf4e1('0x19'),_0x44d875,_0xf4e1('0x1a'));logger['debug'](_0xf4e1('0x1b'),_0x44d875,_0xf4e1('0x1a'),JSON[_0xf4e1('0x1c')](_0x2684b4));if(_0x2684b4[_0xf4e1('0x1d')]){if(_0x2684b4[_0xf4e1('0x1d')][_0xf4e1('0x1e')]===0x1f4){logger[_0xf4e1('0x1d')](_0xf4e1('0x19'),_0x44d875,_0x2684b4[_0xf4e1('0x1d')][_0xf4e1('0x1f')]);return _0x3eaee1(_0x2684b4[_0xf4e1('0x1d')][_0xf4e1('0x1f')]);}logger[_0xf4e1('0x1d')](_0xf4e1('0x19'),_0x44d875,_0x2684b4[_0xf4e1('0x1d')]['message']);return _0x3a82f6(_0x2684b4[_0xf4e1('0x1d')][_0xf4e1('0x1f')]);}else{logger[_0xf4e1('0x18')](_0xf4e1('0x19'),_0x44d875,_0xf4e1('0x1a'));_0x3a82f6(_0x2684b4['result'][_0xf4e1('0x1f')]);}})[_0xf4e1('0x20')](function(_0x40aea7){logger['error'](_0xf4e1('0x19'),_0x44d875,_0x40aea7);_0x3eaee1(_0x40aea7);});});}function respondWithResult(_0x5dd24e,_0x56e714){_0x56e714=_0x56e714||0xc8;return function(_0x404462){if(_0x404462){return _0x5dd24e[_0xf4e1('0x21')](_0x56e714)[_0xf4e1('0x22')](_0x404462);}};}function respondWithFilteredResult(_0x10a5c7,_0x4884d2){return function(_0x378c91){if(_0x378c91){var _0xfe602a=typeof _0x4884d2['offset']==='undefined'&&typeof _0x4884d2[_0xf4e1('0x23')]===_0xf4e1('0x24');var _0x2b6de0=_0x378c91[_0xf4e1('0x25')];var _0x1d601c=_0xfe602a?0x0:_0x4884d2[_0xf4e1('0x26')];var _0x24ad62=_0xfe602a?_0x378c91[_0xf4e1('0x25')]:_0x4884d2[_0xf4e1('0x26')]+_0x4884d2[_0xf4e1('0x23')];var _0x383293;if(_0x24ad62>=_0x2b6de0){_0x24ad62=_0x2b6de0;_0x383293=0xc8;}else{_0x383293=0xce;}_0x10a5c7[_0xf4e1('0x21')](_0x383293);return _0x10a5c7[_0xf4e1('0x27')](_0xf4e1('0x28'),_0x1d601c+'-'+_0x24ad62+'/'+_0x2b6de0)[_0xf4e1('0x22')](_0x378c91);}return null;};}function saveUpdates(_0x1ec7af){return function(_0x48cd52){if(_0x48cd52){return _0x48cd52[_0xf4e1('0x29')](_0x1ec7af)['then'](function(_0x35bbff){return _0x35bbff;});}return null;};}function removeEntity(_0x5572f5){return function(_0x4aa34e){if(_0x4aa34e){return _0x4aa34e[_0xf4e1('0x2a')]()[_0xf4e1('0x17')](function(){_0x5572f5[_0xf4e1('0x21')](0xcc)[_0xf4e1('0x2b')]();});}};}function handleEntityNotFound(_0x49c86a){return function(_0x4106fe){if(!_0x4106fe){_0x49c86a[_0xf4e1('0x2c')](0x194);}return _0x4106fe;};}function handleError(_0xd15989,_0x97e991){_0x97e991=_0x97e991||0x1f4;return function(_0x5d77b1){logger[_0xf4e1('0x1d')](_0x5d77b1[_0xf4e1('0x2d')]);if(_0x5d77b1['name']){delete _0x5d77b1[_0xf4e1('0x2e')];}_0xd15989[_0xf4e1('0x21')](_0x97e991)[_0xf4e1('0x2f')](_0x5d77b1);};}exports[_0xf4e1('0x30')]=function(_0x456540,_0x50b3de){var _0x1dbc96={},_0x58a8df={},_0x3e75e1={'count':0x0,'rows':[]};var _0x45fd50=_['map'](db[_0xf4e1('0x31')][_0xf4e1('0x32')],function(_0x1241b8){return{'name':_0x1241b8[_0xf4e1('0x33')],'type':_0x1241b8[_0xf4e1('0x34')]['key']};});_0x58a8df[_0xf4e1('0x35')]=_[_0xf4e1('0x36')](_0x45fd50,'name');_0x58a8df['query']=_[_0xf4e1('0x37')](_0x456540[_0xf4e1('0x38')]);_0x58a8df['filters']=_['intersection'](_0x58a8df[_0xf4e1('0x35')],_0x58a8df[_0xf4e1('0x38')]);_0x1dbc96[_0xf4e1('0x39')]=_[_0xf4e1('0x3a')](_0x58a8df[_0xf4e1('0x35')],qs['fields'](_0x456540['query'][_0xf4e1('0x3b')]));_0x1dbc96['attributes']=_0x1dbc96[_0xf4e1('0x39')][_0xf4e1('0x3c')]?_0x1dbc96[_0xf4e1('0x39')]:_0x58a8df[_0xf4e1('0x35')];if(!_0x456540[_0xf4e1('0x38')][_0xf4e1('0x3d')]('nolimit')){_0x1dbc96[_0xf4e1('0x23')]=qs[_0xf4e1('0x23')](_0x456540[_0xf4e1('0x38')][_0xf4e1('0x23')]);_0x1dbc96[_0xf4e1('0x26')]=qs[_0xf4e1('0x26')](_0x456540[_0xf4e1('0x38')][_0xf4e1('0x26')]);}_0x1dbc96[_0xf4e1('0x3e')]=qs[_0xf4e1('0x3f')](_0x456540['query'][_0xf4e1('0x3f')]);_0x1dbc96['where']=qs['filters'](_[_0xf4e1('0x40')](_0x456540[_0xf4e1('0x38')],_0x58a8df[_0xf4e1('0x41')]),_0x45fd50);if(_0x456540[_0xf4e1('0x38')][_0xf4e1('0x42')]){_0x1dbc96[_0xf4e1('0x43')]=_[_0xf4e1('0x44')](_0x1dbc96[_0xf4e1('0x43')],{'$or':_[_0xf4e1('0x36')](_0x45fd50,function(_0x35956e){if(_0x35956e[_0xf4e1('0x34')]!==_0xf4e1('0x45')){var _0x12003d={};_0x12003d[_0x35956e[_0xf4e1('0x2e')]]={'$like':'%'+_0x456540[_0xf4e1('0x38')][_0xf4e1('0x42')]+'%'};return _0x12003d;}})});}_0x1dbc96=_[_0xf4e1('0x44')]({},_0x1dbc96,_0x456540['options']);var _0x4d9c34={'where':_0x1dbc96[_0xf4e1('0x43')]};return db[_0xf4e1('0x31')][_0xf4e1('0x25')](_0x4d9c34)[_0xf4e1('0x17')](function(_0x19a09d){_0x3e75e1[_0xf4e1('0x25')]=_0x19a09d;if(_0x456540[_0xf4e1('0x38')][_0xf4e1('0x46')]){_0x1dbc96[_0xf4e1('0x47')]=[{'all':!![]}];}return db[_0xf4e1('0x31')][_0xf4e1('0x48')](_0x1dbc96);})[_0xf4e1('0x17')](function(_0x373eea){_0x3e75e1[_0xf4e1('0x49')]=_0x373eea;return _0x3e75e1;})[_0xf4e1('0x17')](respondWithFilteredResult(_0x50b3de,_0x1dbc96))[_0xf4e1('0x20')](handleError(_0x50b3de,null));};exports[_0xf4e1('0x4a')]=function(_0x4cee46,_0x54017f){var _0x577ccc={'raw':!![],'where':{'id':_0x4cee46[_0xf4e1('0x4b')]['id']}},_0x55242e={};_0x55242e[_0xf4e1('0x35')]=_['keys'](db[_0xf4e1('0x31')][_0xf4e1('0x32')]);_0x55242e[_0xf4e1('0x38')]=_['keys'](_0x4cee46['query']);_0x55242e[_0xf4e1('0x41')]=_['intersection'](_0x55242e['model'],_0x55242e[_0xf4e1('0x38')]);_0x577ccc[_0xf4e1('0x39')]=_[_0xf4e1('0x3a')](_0x55242e[_0xf4e1('0x35')],qs[_0xf4e1('0x3b')](_0x4cee46[_0xf4e1('0x38')][_0xf4e1('0x3b')]));_0x577ccc[_0xf4e1('0x39')]=_0x577ccc[_0xf4e1('0x39')][_0xf4e1('0x3c')]?_0x577ccc[_0xf4e1('0x39')]:_0x55242e[_0xf4e1('0x35')];if(_0x4cee46[_0xf4e1('0x38')][_0xf4e1('0x46')]){_0x577ccc[_0xf4e1('0x47')]=[{'all':!![]}];}_0x577ccc=_['merge']({},_0x577ccc,_0x4cee46[_0xf4e1('0x4c')]);return db[_0xf4e1('0x31')][_0xf4e1('0x4d')](_0x577ccc)['then'](handleEntityNotFound(_0x54017f,null))['then'](respondWithResult(_0x54017f,null))[_0xf4e1('0x20')](handleError(_0x54017f,null));};exports[_0xf4e1('0x29')]=function(_0x597d4e,_0x92d457){if(_0x597d4e['body']['id']){delete _0x597d4e[_0xf4e1('0x4e')]['id'];}return db['MailMessage'][_0xf4e1('0x4d')]({'where':{'id':_0x597d4e['params']['id']}})['then'](handleEntityNotFound(_0x92d457,null))[_0xf4e1('0x17')](saveUpdates(_0x597d4e[_0xf4e1('0x4e')],null))[_0xf4e1('0x17')](respondWithResult(_0x92d457,null))[_0xf4e1('0x20')](handleError(_0x92d457,null));};exports[_0xf4e1('0x2a')]=function(_0x23a953,_0x58e020){return db[_0xf4e1('0x31')][_0xf4e1('0x4d')]({'where':{'id':_0x23a953[_0xf4e1('0x4b')]['id']}})['then'](handleEntityNotFound(_0x58e020,null))[_0xf4e1('0x17')](removeEntity(_0x58e020,null))['catch'](handleError(_0x58e020,null));};exports['describe']=function(_0x2d9e50,_0x4d0d85){return db['MailMessage'][_0xf4e1('0x4f')]()[_0xf4e1('0x17')](respondWithResult(_0x4d0d85,null))['catch'](handleError(_0x4d0d85,null));};exports[_0xf4e1('0x50')]=function(_0x2187b7,_0x314c7d){return db['MailMessage'][_0xf4e1('0x50')](_0x2187b7['body'])[_0xf4e1('0x17')](function(_0x464989){if(_0x464989){if(_0x464989[_0xf4e1('0x51')]==='out'&&!_0x464989[_0xf4e1('0x52')]){var _0x386980,_0x30fa8f,_0x29b950;if(_0x2187b7[_0xf4e1('0x4e')]['to']){_0x30fa8f=_0x2187b7[_0xf4e1('0x4e')]['to'][_0xf4e1('0x53')](',')[0x0];}return db[_0xf4e1('0x54')][_0xf4e1('0x55')]({'where':{'id':_0x464989[_0xf4e1('0x56')]},'include':[{'model':db[_0xf4e1('0x57')],'as':_0xf4e1('0x58'),'include':[{'model':db[_0xf4e1('0x59')],'as':'Contacts','where':{'email':_0x30fa8f},'limit':0x1,'order':[[_0xf4e1('0x5a'),_0xf4e1('0x5b')]]}]},{'model':db[_0xf4e1('0x5c')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xf4e1('0x5d'),'raw':!![]}]}]})[_0xf4e1('0x17')](function(_0x54ff2a){_0x386980=_0x54ff2a;if(!_0x386980||!_0x386980['Smtp'])return;var _0x541210=_0x386980[_0xf4e1('0x5e')]();if(_0x2187b7[_0xf4e1('0x4e')][_0xf4e1('0x5f')]&&_0x2187b7['body'][_0xf4e1('0x5f')]['length']){for(var _0x48790f=0x0;_0x48790f<_0x2187b7[_0xf4e1('0x4e')][_0xf4e1('0x5f')]['length'];_0x48790f+=0x1){_0x2187b7[_0xf4e1('0x4e')]['attachments'][_0x48790f]={'filename':_0x2187b7[_0xf4e1('0x4e')][_0xf4e1('0x5f')][_0x48790f][_0xf4e1('0x2e')],'path':path[_0xf4e1('0x60')](config[_0xf4e1('0x61')],_0xf4e1('0x62'),_0x2187b7[_0xf4e1('0x4e')][_0xf4e1('0x5f')][_0x48790f]['basename'])};}}_0x29b950={'account':_0x541210,'message':_0x2187b7['body']};return;})[_0xf4e1('0x17')](function(){if(_0x386980[_0xf4e1('0x58')]){if(_0x386980[_0xf4e1('0x58')][_0xf4e1('0x63')][_0xf4e1('0x3c')]){return _0x386980['List']['Contacts'][0x0];}else{return db[_0xf4e1('0x59')][_0xf4e1('0x50')](_[_0xf4e1('0xe')](_0x2187b7[_0xf4e1('0x4e')],{'firstName':_0x2187b7[_0xf4e1('0x4e')]['to'],'email':_0x2187b7[_0xf4e1('0x4e')]['to'],'phone':_0x2187b7['body']['to'],'ListId':_0x386980[_0xf4e1('0x64')]}));}}else{throw new Error(_0xf4e1('0x65'));}})[_0xf4e1('0x17')](function(){if(_0x29b950){return respondWithRpcPromise('SendMail',_0xf4e1('0x66'),_0x29b950,client9003)[_0xf4e1('0x17')](function(_0x1c3ce9){return _0x464989[_0xf4e1('0x29')]({'read':!![],'messageId':_0x1c3ce9[_0xf4e1('0x67')],'sentAt':moment()[_0xf4e1('0x68')](_0xf4e1('0x69'))});})['catch'](function(_0x1b5fae){logger[_0xf4e1('0x1d')]('%s',JSON[_0xf4e1('0x1c')](_0x1b5fae));return _0x464989;});}return _0x464989;});}return _0x464989;}})['then'](respondWithResult(_0x314c7d,0xc9))['catch'](handleError(_0x314c7d,null));};exports['accept']=function(_0x3dffed,_0x2bc107){var _0x31b514={'agent':{},'channel':_0xf4e1('0x6a')};if(_0x3dffed['body']['id']){delete _0x3dffed[_0xf4e1('0x4e')]['id'];}_0x3dffed[_0xf4e1('0x4e')]['read']=!![];_0x3dffed[_0xf4e1('0x4e')]['readAt']=moment()[_0xf4e1('0x68')](_0xf4e1('0x69'));_0x3dffed[_0xf4e1('0x4e')][_0xf4e1('0x6b')]=_0x3dffed[_0xf4e1('0x4e')][_0xf4e1('0x6b')]||_0x3dffed[_0xf4e1('0x6c')]['id'];_0x31b514[_0xf4e1('0x6d')]['id']=_0x3dffed[_0xf4e1('0x4e')][_0xf4e1('0x6b')];return db['MailMessage']['find']({'where':{'id':_0x3dffed[_0xf4e1('0x4b')]['id'],'UserId':null}})[_0xf4e1('0x17')](handleEntityNotFound(_0x2bc107,null))[_0xf4e1('0x17')](saveUpdates(_0x3dffed[_0xf4e1('0x4e')],null))[_0xf4e1('0x17')](function(_0x47db05){if(_0x47db05){_0x31b514['message']=_0x47db05[_0xf4e1('0x6e')]({'plain':!![]});return db['MailInteraction'][_0xf4e1('0x4d')]({'where':{'id':_0x47db05[_0xf4e1('0x6f')]}});}return null;})[_0xf4e1('0x17')](handleEntityNotFound(_0x2bc107,null))['then'](function(_0x2da5d8){if(_0x2da5d8){return _0x2da5d8[_0xf4e1('0x29')]({'UserId':_0x3dffed[_0xf4e1('0x4e')][_0xf4e1('0x6b')],'read1stAt':_[_0xf4e1('0x70')](_0x2da5d8[_0xf4e1('0x71')])?moment()[_0xf4e1('0x68')](_0xf4e1('0x69')):undefined});}return null;})[_0xf4e1('0x17')](function(_0x1ca825){if(_0x1ca825){_0x31b514['interaction']=_0x1ca825[_0xf4e1('0x6e')]({'plain':!![]});interaction_log[_0xf4e1('0x18')](_0xf4e1('0x72'),_0x3dffed[_0xf4e1('0x6c')]['id'],_0x3dffed['user'][_0xf4e1('0x2e')],_0x3dffed[_0xf4e1('0x6c')]['role'],_0x31b514[_0xf4e1('0x73')]['id'],_0x3dffed[_0xf4e1('0x4e')]?JSON[_0xf4e1('0x1c')](_0x3dffed[_0xf4e1('0x4e')]):_0xf4e1('0x74'));return respondWithRpcPromise(_0xf4e1('0x75'),'acceptMessage',_0x31b514);}return null;})['then'](function(_0x31dd73){var _0x50960b=_0xf4e1('0x76')+_0x31dd73[_0xf4e1('0x1f')][_0xf4e1('0x77')];return db[_0xf4e1('0x78')][_0xf4e1('0x38')](_0x50960b,{'type':db['Sequelize'][_0xf4e1('0x79')]['SELECT'],'raw':!![]})['then'](function(_0x1f3407){return _0x1f3407;});})[_0xf4e1('0x17')](function(_0x5dea3a){if(_0x5dea3a){_0x31b514[_0xf4e1('0x1f')][_0xf4e1('0x7a')]=_0x5dea3a[0x0];if(!_0x3dffed[_0xf4e1('0x4e')][_0xf4e1('0x6b')])return;return db['User'][_0xf4e1('0x4d')]({'where':{'id':_0x3dffed['body'][_0xf4e1('0x6b')],'role':_0xf4e1('0x6d')},'attributes':['id','name',_0xf4e1('0x7b'),_0xf4e1('0x7c'),_0xf4e1('0x7d')],'raw':!![]});}return null;})[_0xf4e1('0x17')](function(_0x34c095){if(!_0x34c095)return null;_0x31b514[_0xf4e1('0x1f')][_0xf4e1('0x6d')]=_0x34c095;return _0x31b514;})[_0xf4e1('0x17')](function(_0x2c5188){if(_0x2c5188){if(_0x3dffed['body']['manual']){_0x31b514['message'][_0xf4e1('0x7e')]=util[_0xf4e1('0x68')](_0xf4e1('0x7f'),_0x3dffed['user'][_0xf4e1('0x2e')]);_0x31b514['message'][_0xf4e1('0x80')]=_0x31b514['channel'];_0x31b514[_0xf4e1('0x1f')][_0xf4e1('0x81')]=_0x31b514['channel'];_0x31b514[_0xf4e1('0x1f')][_0xf4e1('0x82')]=_0xf4e1('0x83');_0x31b514[_0xf4e1('0x1f')][_0xf4e1('0x4e')]=htmlToText[_0xf4e1('0x84')](_0x31b514[_0xf4e1('0x1f')][_0xf4e1('0x4e')]);return respondWithRpcPromise(_0xf4e1('0x85'),_0xf4e1('0x85'),{'event':'acceptmessage','message':_0x31b514['message']},client9002)['then'](function(){return _0x31b514;});}return _0x31b514;}return null;})[_0xf4e1('0x17')](respondWithResult(_0x2bc107,null))[_0xf4e1('0x20')](handleError(_0x2bc107,null));};exports[_0xf4e1('0x86')]=function(_0x48162c,_0x92e53b){var _0xdf6287={'agent':{},'channel':_0xf4e1('0x6a')};if(_0x48162c[_0xf4e1('0x4e')]['id']){delete _0x48162c[_0xf4e1('0x4e')]['id'];}_0x48162c[_0xf4e1('0x4e')][_0xf4e1('0x6b')]=_0x48162c[_0xf4e1('0x4e')][_0xf4e1('0x6b')]||_0x48162c[_0xf4e1('0x6c')]['id'];_0xdf6287[_0xf4e1('0x6d')]['id']=_0x48162c[_0xf4e1('0x4e')][_0xf4e1('0x6b')];return db[_0xf4e1('0x31')]['find']({'where':{'id':_0x48162c[_0xf4e1('0x4b')]['id'],'UserId':null}})[_0xf4e1('0x17')](handleEntityNotFound(_0x92e53b,null))[_0xf4e1('0x17')](function(_0x11e162){if(_0x11e162){_0xdf6287[_0xf4e1('0x1f')]=_0x11e162[_0xf4e1('0x6e')]({'plain':!![]});return db[_0xf4e1('0x87')]['find']({'where':{'id':_0x11e162['MailInteractionId']}});}return null;})[_0xf4e1('0x17')](handleEntityNotFound(_0x92e53b,null))[_0xf4e1('0x17')](function(_0x3ac5f8){if(_0x3ac5f8){_0xdf6287['interaction']=_0x3ac5f8['get']({'plain':!![]});interaction_log[_0xf4e1('0x18')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x48162c[_0xf4e1('0x6c')]['id'],_0x48162c['user'][_0xf4e1('0x2e')],_0x48162c['user'][_0xf4e1('0x88')],_0xdf6287[_0xf4e1('0x73')]['id'],_0x48162c[_0xf4e1('0x4e')]?JSON[_0xf4e1('0x1c')](_0x48162c[_0xf4e1('0x4e')]):'null');return respondWithRpcPromise('RejectMessage',_0xf4e1('0x89'),_0xdf6287);}return null;})['then'](function(_0x28e799){var _0x40fe71='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x28e799[_0xf4e1('0x1f')][_0xf4e1('0x77')];return db[_0xf4e1('0x78')][_0xf4e1('0x38')](_0x40fe71,{'type':db[_0xf4e1('0x8a')][_0xf4e1('0x79')][_0xf4e1('0x8b')],'raw':!![]})[_0xf4e1('0x17')](function(_0x7ab7c0){return _0x7ab7c0;});})[_0xf4e1('0x17')](function(_0x551050){if(_0x551050){_0xdf6287['message'][_0xf4e1('0x7a')]=_0x551050[0x0];if(!_0x48162c[_0xf4e1('0x4e')][_0xf4e1('0x6b')])return;return db[_0xf4e1('0x8c')][_0xf4e1('0x4d')]({'where':{'id':_0x48162c[_0xf4e1('0x4e')][_0xf4e1('0x6b')],'role':_0xf4e1('0x6d')},'attributes':['id',_0xf4e1('0x2e'),_0xf4e1('0x7b'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x3cb7c1){if(!_0x3cb7c1)return null;_0xdf6287['message'][_0xf4e1('0x6d')]=_0x3cb7c1;return _0xdf6287;})[_0xf4e1('0x17')](function(_0x18725d){if(_0x18725d){_0x18725d[_0xf4e1('0x1f')][_0xf4e1('0x7e')]=util['format'](_0xf4e1('0x7f'),_0x48162c[_0xf4e1('0x6c')][_0xf4e1('0x2e')]);_0x18725d[_0xf4e1('0x1f')][_0xf4e1('0x80')]=_0xdf6287[_0xf4e1('0x80')];_0x18725d[_0xf4e1('0x1f')]['motionChannel']=_0xdf6287[_0xf4e1('0x80')];_0x18725d[_0xf4e1('0x1f')][_0xf4e1('0x82')]='reject';_0x18725d[_0xf4e1('0x1f')]['body']=htmlToText[_0xf4e1('0x84')](_0xdf6287[_0xf4e1('0x1f')]['body']);respondWithRpcPromise(_0xf4e1('0x85'),_0xf4e1('0x85'),{'event':_0xf4e1('0x8d'),'message':_0x18725d[_0xf4e1('0x1f')]},client9002);return _0xdf6287;}return null;})[_0xf4e1('0x17')](respondWithResult(_0x92e53b,null))[_0xf4e1('0x20')](handleError(_0x92e53b,null));};exports[_0xf4e1('0x8e')]=function(_0x215159,_0x4a07f5){var _0x4018e8=moment()[_0xf4e1('0x8f')]()[_0xf4e1('0x90')]();var _0x24163b=path['join'](config['root'],_0xf4e1('0x91'),_0xf4e1('0x92'),_0xf4e1('0x93'));var _0x5a0651=path[_0xf4e1('0x60')](config[_0xf4e1('0x61')],_0xf4e1('0x91'),_0xf4e1('0x92'),_0xf4e1('0x5f'));var _0x50cec0=util[_0xf4e1('0x68')](_0xf4e1('0x94'),_0x4018e8);return db[_0xf4e1('0x31')]['find']({'where':{'id':_0x215159[_0xf4e1('0x4b')]['id']},'attributes':['id',_0xf4e1('0x4e'),_0xf4e1('0x95'),'to','cc',_0xf4e1('0x96'),_0xf4e1('0x97'),_0xf4e1('0x98')],'include':_0x215159['query']['attachments']?[{'model':db[_0xf4e1('0x99')],'as':_0xf4e1('0x9a')}]:undefined})[_0xf4e1('0x17')](handleEntityNotFound(_0x4a07f5,null))[_0xf4e1('0x17')](function(_0x11d0e2){if(_0x11d0e2){var _0x2b688e=_0x11d0e2;var _0xbc8980={'from':_0x2b688e[_0xf4e1('0x95')],'to':_0x2b688e['to'],'subject':_0x2b688e[_0xf4e1('0x97')],'html':htmlEntities[_0xf4e1('0x9b')](_0x2b688e[_0xf4e1('0x4e')]),'headers':{'Date':moment(_0x2b688e[_0xf4e1('0x98')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x11d0e2['cc']){_0xbc8980[_0xf4e1('0x9c')]['Cc']=_0x11d0e2['cc'];}if(_0x11d0e2[_0xf4e1('0x96')]){_0xbc8980[_0xf4e1('0x9c')]['Bcc']=_0x11d0e2[_0xf4e1('0x96')];}return new BPromise(function(_0x329809,_0x56ace5){if(_0x11d0e2[_0xf4e1('0x9a')]){for(var _0x5d4ca6=0x0;_0x5d4ca6<_0x11d0e2['Attachments'][_0xf4e1('0x3c')];_0x5d4ca6++){var _0x5c2d08=_0x11d0e2['Attachments'][_0x5d4ca6];var _0x2d0e28=path[_0xf4e1('0x60')](_0x5a0651,_0x5c2d08[_0xf4e1('0x9d')]);if(fs[_0xf4e1('0x9e')](_0x2d0e28)){_0xbc8980[_0xf4e1('0x5f')][_0xf4e1('0x9f')]({'name':_0x5c2d08[_0xf4e1('0x2e')],'contentType':_0x5c2d08[_0xf4e1('0x34')],'data':fs[_0xf4e1('0xa0')](_0x2d0e28)});}}}emlformat[_0xf4e1('0xa1')](_0xbc8980,function(_0x210218,_0x46d246){if(_0x210218)return _0x56ace5(_0x210218);fs[_0xf4e1('0xa2')](path['join'](_0x24163b,_0x50cec0),_0x46d246);return _0x329809(_0x46d246);});});}})[_0xf4e1('0x17')](function(_0x2caf37){if(_0x2caf37){return _0x4a07f5[_0xf4e1('0x8e')](path[_0xf4e1('0x60')](_0x24163b,_0x50cec0),_0x50cec0,function(_0x3936d3){if(!_0x3936d3)fs['unlinkSync'](path[_0xf4e1('0x60')](_0x24163b,_0x50cec0));});}})[_0xf4e1('0x20')](handleError(_0x4a07f5,null));};
\ No newline at end of file
index 5430f51..b3a3661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb5c=['events','MailMessage','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3213ec,_0x35a893){var _0x567f49=function(_0x2dab8e){while(--_0x2dab8e){_0x3213ec['push'](_0x3213ec['shift']());}};_0x567f49(++_0x35a893);}(_0xbb5c,0x15f));var _0xcbb5=function(_0x60857c,_0x20d7b3){_0x60857c=_0x60857c-0x0;var _0x56719d=_0xbb5c[_0x60857c];return _0x56719d;};'use strict';var EventEmitter=require(_0xcbb5('0x0'));var MailMessage=require('../../mysqldb')['db'][_0xcbb5('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcbb5('0x2'),'afterUpdate':_0xcbb5('0x3'),'afterDestroy':_0xcbb5('0x4')};function emitEvent(_0xb02470){return function(_0x2f1f2a,_0x33eb9b,_0x444fc6){MailMessageEvents['emit'](_0xb02470+':'+_0x2f1f2a['id'],_0x2f1f2a);MailMessageEvents[_0xcbb5('0x5')](_0xb02470,_0x2f1f2a);_0x444fc6(null);};}for(var e in events){if(events[_0xcbb5('0x6')](e)){var event=events[e];MailMessage[_0xcbb5('0x7')](e,emitEvent(event));}}module[_0xcbb5('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0x8721=['emit','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x291674,_0x5654aa){var _0x250b6f=function(_0x48be8e){while(--_0x48be8e){_0x291674['push'](_0x291674['shift']());}};_0x250b6f(++_0x5654aa);}(_0x8721,0x95));var _0x1872=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x8721[_0x513aa5];return _0x1a1a7c;};'use strict';var EventEmitter=require(_0x1872('0x0'));var MailMessage=require(_0x1872('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x1872('0x2')](0x0);var events={'afterCreate':_0x1872('0x3'),'afterUpdate':_0x1872('0x4'),'afterDestroy':'remove'};function emitEvent(_0x47dada){return function(_0x5c0bd5,_0x5f4fa5,_0x472870){MailMessageEvents[_0x1872('0x5')](_0x47dada+':'+_0x5c0bd5['id'],_0x5c0bd5);MailMessageEvents['emit'](_0x47dada,_0x5c0bd5);_0x472870(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x1872('0x6')]=MailMessageEvents;
\ No newline at end of file
index 9243a68..edb2eec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4f4=['fromString','models','get','direction','out','secret','findOne','then','update','toLowerCase','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','html-to-text','path','rimraf','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT'];(function(_0xcb0d78,_0x1f19b1){var _0x324089=function(_0x4072e8){while(--_0x4072e8){_0xcb0d78['push'](_0xcb0d78['shift']());}};_0x324089(++_0x1f19b1);}(_0xc4f4,0x6e));var _0x4c4f=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xc4f4[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x4c4f('0x0'));var util=require(_0x4c4f('0x1'));var logger=require(_0x4c4f('0x2'))('api');var moment=require(_0x4c4f('0x3'));var BPromise=require(_0x4c4f('0x4'));var rp=require('request-promise');var htmlToText=require(_0x4c4f('0x5'));var fs=require('fs');var path=require(_0x4c4f('0x6'));var rimraf=require(_0x4c4f('0x7'));var config=require('../../config/environment');var attributes=require(_0x4c4f('0x8'));module[_0x4c4f('0x9')]=function(_0x28b497,_0xd789c6){return _0x28b497[_0x4c4f('0xa')](_0x4c4f('0xb'),attributes,{'tableName':_0x4c4f('0xc'),'paranoid':![],'indexes':[{'name':_0x4c4f('0xd'),'fields':[_0x4c4f('0xd')]},{'name':_0x4c4f('0xe'),'fields':[_0x4c4f('0xf'),_0x4c4f('0x10')],'type':_0x4c4f('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3a5e98,_0x1af928,_0x41300c){if(_0x3a5e98['body']){_0x3a5e98['plainBody']=htmlToText[_0x4c4f('0x12')](_0x3a5e98['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x41300c(null,_0x1af928);},'afterCreate':function(_0x3de05d,_0x2683e1,_0x4d37e3){var _0x179eff=_0x28b497[_0x4c4f('0x13')];var _0x360c83=_0x3de05d[_0x4c4f('0x14')]({'plain':!![]});if(_0x360c83[_0x4c4f('0x15')]['toLowerCase']()==='in'||_0x360c83[_0x4c4f('0x15')]['toLowerCase']()===_0x4c4f('0x16')&&!_0x360c83[_0x4c4f('0x17')]&&!_['isNil'](_0x360c83['UserId'])){_0x179eff['MailInteraction'][_0x4c4f('0x18')]({'where':{'id':_0x360c83['MailInteractionId']}})[_0x4c4f('0x19')](function(_0x1f7396){if(_0x1f7396){_0x1f7396[_0x4c4f('0x1a')]({'lastMsgAt':_0x360c83['createdAt'],'lastMsgDirection':_0x360c83['direction'][_0x4c4f('0x1b')]()});}})[_0x4c4f('0x1c')](function(_0x1cf570){console[_0x4c4f('0x1d')](_0x1cf570);});}_0x4d37e3();}},'charset':_0x4c4f('0x1e'),'collate':_0x4c4f('0x1f')});};
\ No newline at end of file
+var _0xa42c=['../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','FULLTEXT','body','fromString','get','direction','toLowerCase','out','secret','UserId','MailInteraction','findOne','MailInteractionId','then','update','createdAt','catch','utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','html-to-text','path','rimraf'];(function(_0x7bc177,_0x7869fe){var _0x2e3702=function(_0x2c05c9){while(--_0x2c05c9){_0x7bc177['push'](_0x7bc177['shift']());}};_0x2e3702(++_0x7869fe);}(_0xa42c,0x12a));var _0xca42=function(_0x4f9e31,_0x19881c){_0x4f9e31=_0x4f9e31-0x0;var _0x2f9fc7=_0xa42c[_0x4f9e31];return _0x2f9fc7;};'use strict';var _=require(_0xca42('0x0'));var util=require(_0xca42('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xca42('0x2'));var BPromise=require(_0xca42('0x3'));var rp=require(_0xca42('0x4'));var htmlToText=require(_0xca42('0x5'));var fs=require('fs');var path=require(_0xca42('0x6'));var rimraf=require(_0xca42('0x7'));var config=require(_0xca42('0x8'));var attributes=require(_0xca42('0x9'));module[_0xca42('0xa')]=function(_0x1f6656,_0x3cac85){return _0x1f6656[_0xca42('0xb')](_0xca42('0xc'),attributes,{'tableName':_0xca42('0xd'),'paranoid':![],'indexes':[{'name':_0xca42('0xe'),'fields':[_0xca42('0xe')]},{'name':_0xca42('0xf'),'fields':[_0xca42('0x10'),'subject'],'type':_0xca42('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2f494a,_0x510997,_0xcea1b2){if(_0x2f494a[_0xca42('0x12')]){_0x2f494a[_0xca42('0x10')]=htmlToText[_0xca42('0x13')](_0x2f494a['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0xcea1b2(null,_0x510997);},'afterCreate':function(_0x4078ad,_0x30ea22,_0x6a38d){var _0x361450=_0x1f6656['models'];var _0x10067c=_0x4078ad[_0xca42('0x14')]({'plain':!![]});if(_0x10067c[_0xca42('0x15')]['toLowerCase']()==='in'||_0x10067c['direction'][_0xca42('0x16')]()===_0xca42('0x17')&&!_0x10067c[_0xca42('0x18')]&&!_['isNil'](_0x10067c[_0xca42('0x19')])){_0x361450[_0xca42('0x1a')][_0xca42('0x1b')]({'where':{'id':_0x10067c[_0xca42('0x1c')]}})[_0xca42('0x1d')](function(_0x2b3b7f){if(_0x2b3b7f){_0x2b3b7f[_0xca42('0x1e')]({'lastMsgAt':_0x10067c[_0xca42('0x1f')],'lastMsgDirection':_0x10067c[_0xca42('0x15')][_0xca42('0x16')]()});}})[_0xca42('0x20')](function(_0xf5a9fd){console['error'](_0xf5a9fd);});}_0x6a38d();}},'charset':'utf8mb4','collate':_0xca42('0x21')});};
\ No newline at end of file
index e6c736c..5a6d51b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','defaults','localhost','socket.io-emitter','redis','./mailMessage.socket','register','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateMailMessage','MailMessage','create'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x8f4c,0x113));var _0xc8f4=function(_0x523a3a,_0x40bb6c){_0x523a3a=_0x523a3a-0x0;var _0x136cab=_0x8f4c[_0x523a3a];return _0x136cab;};'use strict';var _=require(_0xc8f4('0x0'));var util=require(_0xc8f4('0x1'));var moment=require(_0xc8f4('0x2'));var BPromise=require(_0xc8f4('0x3'));var rs=require(_0xc8f4('0x4'));var fs=require('fs');var Redis=require(_0xc8f4('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc8f4('0x6'));var logger=require(_0xc8f4('0x7'))(_0xc8f4('0x8'));var config=require('../../config/environment');var jayson=require(_0xc8f4('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xc8f4('0xa')](config['redis'],{'host':_0xc8f4('0xb'),'port':0x18eb});var socket=require(_0xc8f4('0xc'))(new Redis(config[_0xc8f4('0xd')]));require(_0xc8f4('0xe'))[_0xc8f4('0xf')](socket);function respondWithRpcPromise(_0x599de3,_0x38c41b,_0x191b92){return new BPromise(function(_0x2fba62,_0x3a2f8a){return client['request'](_0x599de3,_0x191b92)[_0xc8f4('0x10')](function(_0x52c699){logger[_0xc8f4('0x11')](_0xc8f4('0x12'),_0x38c41b,_0xc8f4('0x13'));logger[_0xc8f4('0x14')](_0xc8f4('0x15'),_0x38c41b,'request\x20sent',JSON[_0xc8f4('0x16')](_0x52c699));if(_0x52c699[_0xc8f4('0x17')]){if(_0x52c699[_0xc8f4('0x17')][_0xc8f4('0x18')]===0x1f4){logger[_0xc8f4('0x17')](_0xc8f4('0x12'),_0x38c41b,_0x52c699['error'][_0xc8f4('0x19')]);return _0x3a2f8a(_0x52c699[_0xc8f4('0x17')][_0xc8f4('0x19')]);}logger[_0xc8f4('0x17')](_0xc8f4('0x12'),_0x38c41b,_0x52c699['error'][_0xc8f4('0x19')]);return _0x2fba62(_0x52c699['error']['message']);}else{logger[_0xc8f4('0x11')](_0xc8f4('0x12'),_0x38c41b,_0xc8f4('0x13'));_0x2fba62(_0x52c699[_0xc8f4('0x1a')][_0xc8f4('0x19')]);}})[_0xc8f4('0x1b')](function(_0x2459ac){logger[_0xc8f4('0x17')](_0xc8f4('0x12'),_0x38c41b,_0x2459ac);_0x3a2f8a(_0x2459ac);});});}exports[_0xc8f4('0x1c')]=function(_0x3cd90c){var _0x3126e5=this;return new Promise(function(_0x22236c,_0x5f3264){return db[_0xc8f4('0x1d')][_0xc8f4('0x1e')](_0x3cd90c[_0xc8f4('0x1f')],{'raw':_0x3cd90c[_0xc8f4('0x20')]?_0x3cd90c[_0xc8f4('0x20')][_0xc8f4('0x21')]===undefined?!![]:![]:!![]})[_0xc8f4('0x10')](function(_0x43eb57){logger['info'](_0xc8f4('0x1c'),_0x3cd90c);logger[_0xc8f4('0x14')](_0xc8f4('0x1c'),_0x3cd90c,JSON[_0xc8f4('0x16')](_0x43eb57));_0x22236c(_0x43eb57);})['catch'](function(_0x39174f){logger['error'](_0xc8f4('0x1c'),_0x39174f['message'],_0x3cd90c);_0x5f3264(_0x3126e5[_0xc8f4('0x17')](0x1f4,_0x39174f[_0xc8f4('0x19')]));});});};
\ No newline at end of file
+var _0xdd4f=['request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateMailMessage','MailMessage','create','body','options','raw','lodash','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s'];(function(_0x43b487,_0x21893a){var _0x2f707a=function(_0x477ee0){while(--_0x477ee0){_0x43b487['push'](_0x43b487['shift']());}};_0x2f707a(++_0x21893a);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x55084b,_0x27a605){_0x55084b=_0x55084b-0x0;var _0x5b67bd=_0xdd4f[_0x55084b];return _0x5b67bd;};'use strict';var _=require(_0xfdd4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfdd4('0x1'));var fs=require('fs');var Redis=require(_0xfdd4('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xfdd4('0x3'));var logger=require(_0xfdd4('0x4'))(_0xfdd4('0x5'));var config=require('../../config/environment');var jayson=require(_0xfdd4('0x6'));var client=jayson[_0xfdd4('0x7')][_0xfdd4('0x8')]({'port':0x232a});config[_0xfdd4('0x9')]=_[_0xfdd4('0xa')](config['redis'],{'host':_0xfdd4('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfdd4('0x9')]));require(_0xfdd4('0xc'))[_0xfdd4('0xd')](socket);function respondWithRpcPromise(_0x4ee02f,_0x3d06c9,_0x4b4f1d){return new BPromise(function(_0x27a9f3,_0x3ce77a){return client[_0xfdd4('0xe')](_0x4ee02f,_0x4b4f1d)[_0xfdd4('0xf')](function(_0x35e22d){logger[_0xfdd4('0x10')](_0xfdd4('0x11'),_0x3d06c9,_0xfdd4('0x12'));logger[_0xfdd4('0x13')](_0xfdd4('0x14'),_0x3d06c9,_0xfdd4('0x12'),JSON['stringify'](_0x35e22d));if(_0x35e22d[_0xfdd4('0x15')]){if(_0x35e22d[_0xfdd4('0x15')][_0xfdd4('0x16')]===0x1f4){logger['error'](_0xfdd4('0x11'),_0x3d06c9,_0x35e22d['error'][_0xfdd4('0x17')]);return _0x3ce77a(_0x35e22d[_0xfdd4('0x15')][_0xfdd4('0x17')]);}logger[_0xfdd4('0x15')](_0xfdd4('0x11'),_0x3d06c9,_0x35e22d['error']['message']);return _0x27a9f3(_0x35e22d['error'][_0xfdd4('0x17')]);}else{logger[_0xfdd4('0x10')](_0xfdd4('0x11'),_0x3d06c9,_0xfdd4('0x12'));_0x27a9f3(_0x35e22d[_0xfdd4('0x18')][_0xfdd4('0x17')]);}})[_0xfdd4('0x19')](function(_0x2ffd5f){logger[_0xfdd4('0x15')]('MailMessage,\x20%s,\x20%s',_0x3d06c9,_0x2ffd5f);_0x3ce77a(_0x2ffd5f);});});}exports[_0xfdd4('0x1a')]=function(_0x3e8eac){var _0x2dc51c=this;return new Promise(function(_0x36e611,_0x1454f1){return db[_0xfdd4('0x1b')][_0xfdd4('0x1c')](_0x3e8eac[_0xfdd4('0x1d')],{'raw':_0x3e8eac['options']?_0x3e8eac[_0xfdd4('0x1e')][_0xfdd4('0x1f')]===undefined?!![]:![]:!![]})[_0xfdd4('0xf')](function(_0x16e81b){logger[_0xfdd4('0x10')](_0xfdd4('0x1a'),_0x3e8eac);logger[_0xfdd4('0x13')](_0xfdd4('0x1a'),_0x3e8eac,JSON['stringify'](_0x16e81b));_0x36e611(_0x16e81b);})[_0xfdd4('0x19')](function(_0x1112e8){logger[_0xfdd4('0x15')]('CreateMailMessage',_0x1112e8[_0xfdd4('0x17')],_0x3e8eac);_0x1454f1(_0x2dc51c[_0xfdd4('0x15')](0x1f4,_0x1112e8[_0xfdd4('0x17')]));});});};
\ No newline at end of file
index cc08531..ee67e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf511=['update','emit','mailMessage:','./mailMessage.events','save','remove'];(function(_0x1a97a7,_0xadc033){var _0x51f5f3=function(_0x5a48c1){while(--_0x5a48c1){_0x1a97a7['push'](_0x1a97a7['shift']());}};_0x51f5f3(++_0xadc033);}(_0xf511,0x19b));var _0x1f51=function(_0x37a9d7,_0x2b6fde){_0x37a9d7=_0x37a9d7-0x0;var _0x1343d3=_0xf511[_0x37a9d7];return _0x1343d3;};'use strict';var MailMessageEvents=require(_0x1f51('0x0'));var events=[_0x1f51('0x1'),_0x1f51('0x2'),_0x1f51('0x3')];function createListener(_0x381200,_0x266730){return function(_0x136514){_0x266730[_0x1f51('0x4')](_0x381200,_0x136514);};}function removeListener(_0x3c3552,_0x163506){return function(){MailMessageEvents['removeListener'](_0x3c3552,_0x163506);};}exports['register']=function(_0x2893d7){for(var _0x5af5d0=0x0,_0x5845da=events['length'];_0x5af5d0<_0x5845da;_0x5af5d0++){var _0x363fa5=events[_0x5af5d0];var _0x36819a=createListener(_0x1f51('0x5')+_0x363fa5,_0x2893d7);MailMessageEvents['on'](_0x363fa5,_0x36819a);}};
\ No newline at end of file
+var _0xee6e=['./mailMessage.events','remove','update','emit','removeListener','register','length','mailMessage:'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xee6e,0x128));var _0xeee6=function(_0x27936c,_0x10b06c){_0x27936c=_0x27936c-0x0;var _0x58685d=_0xee6e[_0x27936c];return _0x58685d;};'use strict';var MailMessageEvents=require(_0xeee6('0x0'));var events=['save',_0xeee6('0x1'),_0xeee6('0x2')];function createListener(_0x328257,_0x700e0f){return function(_0x5583e7){_0x700e0f[_0xeee6('0x3')](_0x328257,_0x5583e7);};}function removeListener(_0x472978,_0x4705dc){return function(){MailMessageEvents[_0xeee6('0x4')](_0x472978,_0x4705dc);};}exports[_0xeee6('0x5')]=function(_0x484868){for(var _0x459573=0x0,_0x121049=events[_0xeee6('0x6')];_0x459573<_0x121049;_0x459573++){var _0x118a66=events[_0x459573];var _0x2a8227=createListener(_0xeee6('0x7')+_0x118a66,_0x484868);MailMessageEvents['on'](_0x118a66,_0x2a8227);}};
\ No newline at end of file
index 2184ffd..8aa8184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f4a=['index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','getAgents','create','post','/:id/teams','/:id/users','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueue.controller','get','isAuthenticated'];(function(_0x3d66db,_0x82511){var _0x5b6644=function(_0x520d0b){while(--_0x520d0b){_0x3d66db['push'](_0x3d66db['shift']());}};_0x5b6644(++_0x82511);}(_0x2f4a,0x1b8));var _0xa2f4=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x2f4a[_0x4154a6];return _0x3b2786;};'use strict';var multer=require('multer');var util=require(_0xa2f4('0x0'));var path=require('path');var timeout=require(_0xa2f4('0x1'));var express=require(_0xa2f4('0x2'));var router=express[_0xa2f4('0x3')]();var fs_extra=require(_0xa2f4('0x4'));var auth=require(_0xa2f4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa2f4('0x6'));var controller=require(_0xa2f4('0x7'));router[_0xa2f4('0x8')]('/',auth[_0xa2f4('0x9')](),controller[_0xa2f4('0xa')]);router[_0xa2f4('0x8')](_0xa2f4('0xb'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0xc')]);router[_0xa2f4('0x8')](_0xa2f4('0xd'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0xe')]);router['get'](_0xa2f4('0xf'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x10')]);router[_0xa2f4('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0xa2f4('0x11')]);router['get']('/:id/users',auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x12')]);router['post']('/',auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x13')]);router[_0xa2f4('0x14')](_0xa2f4('0x15'),auth[_0xa2f4('0x9')](),controller['addTeams']);router[_0xa2f4('0x14')](_0xa2f4('0x16'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x17')]);router[_0xa2f4('0x18')](_0xa2f4('0xd'),auth[_0xa2f4('0x9')](),controller['update']);router[_0xa2f4('0x19')]('/:id',auth['isAuthenticated'](),controller[_0xa2f4('0x1a')]);router[_0xa2f4('0x19')](_0xa2f4('0x15'),auth['isAuthenticated'](),controller[_0xa2f4('0x1b')]);router[_0xa2f4('0x19')](_0xa2f4('0x16'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x1c')]);module[_0xa2f4('0x1d')]=router;
\ No newline at end of file
+var _0x7bd4=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','create','post','/:id/teams','addTeams','/:id/users','addAgents','update','delete','destroy'];(function(_0x3aea4e,_0x3da357){var _0x2e9db0=function(_0x577203){while(--_0x577203){_0x3aea4e['push'](_0x3aea4e['shift']());}};_0x2e9db0(++_0x3da357);}(_0x7bd4,0x75));var _0x47bd=function(_0x32cd43,_0x2f1a7a){_0x32cd43=_0x32cd43-0x0;var _0x624f11=_0x7bd4[_0x32cd43];return _0x624f11;};'use strict';var multer=require(_0x47bd('0x0'));var util=require(_0x47bd('0x1'));var path=require(_0x47bd('0x2'));var timeout=require(_0x47bd('0x3'));var express=require(_0x47bd('0x4'));var router=express[_0x47bd('0x5')]();var fs_extra=require(_0x47bd('0x6'));var auth=require(_0x47bd('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x47bd('0x8'));var controller=require('./mailQueue.controller');router[_0x47bd('0x9')]('/',auth[_0x47bd('0xa')](),controller[_0x47bd('0xb')]);router[_0x47bd('0x9')](_0x47bd('0xc'),auth[_0x47bd('0xa')](),controller[_0x47bd('0xd')]);router[_0x47bd('0x9')](_0x47bd('0xe'),auth['isAuthenticated'](),controller[_0x47bd('0xf')]);router[_0x47bd('0x9')](_0x47bd('0x10'),auth['isAuthenticated'](),controller[_0x47bd('0x11')]);router[_0x47bd('0x9')]('/:id/teams',auth[_0x47bd('0xa')](),controller[_0x47bd('0x12')]);router[_0x47bd('0x9')]('/:id/users',auth[_0x47bd('0xa')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x47bd('0x13')]);router[_0x47bd('0x14')](_0x47bd('0x15'),auth[_0x47bd('0xa')](),controller[_0x47bd('0x16')]);router[_0x47bd('0x14')](_0x47bd('0x17'),auth[_0x47bd('0xa')](),controller[_0x47bd('0x18')]);router['put'](_0x47bd('0xe'),auth['isAuthenticated'](),controller[_0x47bd('0x19')]);router[_0x47bd('0x1a')](_0x47bd('0xe'),auth[_0x47bd('0xa')](),controller[_0x47bd('0x1b')]);router[_0x47bd('0x1a')]('/:id/teams',auth['isAuthenticated'](),controller['removeTeams']);router['delete']('/:id/users',auth[_0x47bd('0xa')](),controller['removeAgents']);module[_0x47bd('0x1c')]=router;
\ No newline at end of file
index f7d0f1a..8cd870b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a0e=['INTEGER','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x4fedac,_0x4b1ff7){var _0x306bb6=function(_0x28584a){while(--_0x28584a){_0x4fedac['push'](_0x4fedac['shift']());}};_0x306bb6(++_0x4b1ff7);}(_0x3a0e,0x1cc));var _0xe3a0=function(_0x597aca,_0x41a682){_0x597aca=_0x597aca-0x0;var _0x3306b5=_0x3a0e[_0x597aca];return _0x3306b5;};'use strict';var Sequelize=require(_0xe3a0('0x0'));module[_0xe3a0('0x1')]={'name':{'type':Sequelize[_0xe3a0('0x2')],'unique':_0xe3a0('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xe3a0('0x2')]},'timeout':{'type':Sequelize[_0xe3a0('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xe3a0('0x5'),_0xe3a0('0x6'),_0xe3a0('0x7'))}};
\ No newline at end of file
+var _0x0bd8=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x0bd8,0x1b6));var _0x80bd=function(_0x447ef1,_0x374cd2){_0x447ef1=_0x447ef1-0x0;var _0x3d72ec=_0x0bd8[_0x447ef1];return _0x3d72ec;};'use strict';var Sequelize=require(_0x80bd('0x0'));module[_0x80bd('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x80bd('0x2')]},'timeout':{'type':Sequelize[_0x80bd('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x80bd('0x4')](_0x80bd('0x5'),_0x80bd('0x6'),_0x80bd('0x7'))}};
\ No newline at end of file
index 3b8a662..95c1529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95e6=['name','index','map','MailQueue','rawAttributes','fieldName','type','key','model','intersection','query','attributes','fields','hasOwnProperty','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','keys','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','nolimit','MailQueueId','UserMailQueue','User','findAndCountAll','agent','mailPause','updatedAt','format','%s/%s','createdAt','getTeams','findOne','Team','order','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','emit','userMailQueue:save','removeTeams','select','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','SELECT','every','TeamId','all','union','compact','userMailQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','zip-dir','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./mailQueue.socket','register','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','sendStatus','error','stack'];(function(_0x233f80,_0x2e2a1b){var _0x5ce3ad=function(_0x34d4d8){while(--_0x34d4d8){_0x233f80['push'](_0x233f80['shift']());}};_0x5ce3ad(++_0x2e2a1b);}(_0x95e6,0x171));var _0x695e=function(_0x30ad5e,_0xfa9c26){_0x30ad5e=_0x30ad5e-0x0;var _0x1cc10d=_0x95e6[_0x30ad5e];return _0x1cc10d;};'use strict';var emlformat=require(_0x695e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x695e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x695e('0x2'));var Mustache=require(_0x695e('0x3'));var util=require(_0x695e('0x4'));var path=require(_0x695e('0x5'));var sox=require('sox');var csv=require(_0x695e('0x6'));var ejs=require(_0x695e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x695e('0x8'));var squel=require(_0x695e('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x695e('0xa'));var toCsv=require(_0x695e('0x6'));var querystring=require('querystring');var Papa=require(_0x695e('0xb'));var Redis=require('ioredis');var authService=require(_0x695e('0xc'));var qs=require(_0x695e('0xd'));var as=require(_0x695e('0xe'));var hardwareService=require(_0x695e('0xf'));var logger=require('../../config/logger')(_0x695e('0x10'));var utils=require('../../config/utils');var config=require(_0x695e('0x11'));var licenseUtil=require(_0x695e('0x12'));var db=require(_0x695e('0x13'))['db'];config['redis']=_[_0x695e('0x14')](config[_0x695e('0x15')],{'host':_0x695e('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x695e('0x15')]));require(_0x695e('0x17'))[_0x695e('0x18')](socket);function respondWithStatusCode(_0x3be691,_0x2b731b){_0x2b731b=_0x2b731b||0xcc;return function(_0x3d1eb7){if(_0x3d1eb7){return _0x3be691['sendStatus'](_0x2b731b);}return _0x3be691['status'](_0x2b731b)[_0x695e('0x19')]();};}function respondWithResult(_0x490608,_0x3a582e){_0x3a582e=_0x3a582e||0xc8;return function(_0x2c3553){if(_0x2c3553){return _0x490608[_0x695e('0x1a')](_0x3a582e)[_0x695e('0x1b')](_0x2c3553);}};}function respondWithFilteredResult(_0x343513,_0x485790){return function(_0x4d6e1e){if(_0x4d6e1e){var _0x51f8cc=typeof _0x485790[_0x695e('0x1c')]===_0x695e('0x1d')&&typeof _0x485790['limit']===_0x695e('0x1d');var _0x301606=_0x4d6e1e[_0x695e('0x1e')];var _0x4e5b88=_0x51f8cc?0x0:_0x485790[_0x695e('0x1c')];var _0x3b1259=_0x51f8cc?_0x4d6e1e['count']:_0x485790['offset']+_0x485790[_0x695e('0x1f')];var _0x1ad511;if(_0x3b1259>=_0x301606){_0x3b1259=_0x301606;_0x1ad511=0xc8;}else{_0x1ad511=0xce;}_0x343513[_0x695e('0x1a')](_0x1ad511);return _0x343513[_0x695e('0x20')](_0x695e('0x21'),_0x4e5b88+'-'+_0x3b1259+'/'+_0x301606)[_0x695e('0x1b')](_0x4d6e1e);}return null;};}function patchUpdates(_0x206101){return function(_0x41ab02){try{jsonpatch['apply'](_0x41ab02,_0x206101,!![]);}catch(_0xc85da8){return BPromise[_0x695e('0x22')](_0xc85da8);}return _0x41ab02[_0x695e('0x23')]();};}function saveUpdates(_0x521c9d,_0x5682d5){return function(_0x318cf5){if(_0x318cf5){return _0x318cf5[_0x695e('0x24')](_0x521c9d)[_0x695e('0x25')](function(_0x7a4ddb){return _0x7a4ddb;});}return null;};}function removeEntity(_0x321715,_0x2dea7a){return function(_0x48764c){if(_0x48764c){return _0x48764c[_0x695e('0x26')]()[_0x695e('0x25')](function(){var _0x230500=_0x48764c[_0x695e('0x27')]({'plain':!![]});var _0x34c4d4=_0x695e('0x28');return db[_0x695e('0x29')][_0x695e('0x26')]({'where':{'type':_0x34c4d4,'resourceId':_0x230500['id']}})[_0x695e('0x25')](function(){return _0x48764c;});})['then'](function(){_0x321715[_0x695e('0x1a')](0xcc)[_0x695e('0x19')]();});}};}function handleEntityNotFound(_0x216a63,_0x2be5f3){return function(_0x5c1245){if(!_0x5c1245){_0x216a63[_0x695e('0x2a')](0x194);}return _0x5c1245;};}function handleError(_0xc09482,_0x5ee30f){_0x5ee30f=_0x5ee30f||0x1f4;return function(_0x20c1fd){logger[_0x695e('0x2b')](_0x20c1fd[_0x695e('0x2c')]);if(_0x20c1fd[_0x695e('0x2d')]){delete _0x20c1fd['name'];}_0xc09482['status'](_0x5ee30f)['send'](_0x20c1fd);};}exports[_0x695e('0x2e')]=function(_0x3440e8,_0x4cb04f){var _0x436ae5={},_0x343d9f={},_0x3b84e7={'count':0x0,'rows':[]};var _0xc268cf=_[_0x695e('0x2f')](db[_0x695e('0x30')][_0x695e('0x31')],function(_0x3b3566){return{'name':_0x3b3566[_0x695e('0x32')],'type':_0x3b3566[_0x695e('0x33')][_0x695e('0x34')]};});_0x343d9f[_0x695e('0x35')]=_[_0x695e('0x2f')](_0xc268cf,_0x695e('0x2d'));_0x343d9f['query']=_['keys'](_0x3440e8['query']);_0x343d9f['filters']=_[_0x695e('0x36')](_0x343d9f[_0x695e('0x35')],_0x343d9f[_0x695e('0x37')]);_0x436ae5[_0x695e('0x38')]=_[_0x695e('0x36')](_0x343d9f[_0x695e('0x35')],qs['fields'](_0x3440e8['query'][_0x695e('0x39')]));_0x436ae5[_0x695e('0x38')]=_0x436ae5[_0x695e('0x38')]['length']?_0x436ae5[_0x695e('0x38')]:_0x343d9f[_0x695e('0x35')];if(!_0x3440e8[_0x695e('0x37')][_0x695e('0x3a')]('nolimit')){_0x436ae5['limit']=qs[_0x695e('0x1f')](_0x3440e8[_0x695e('0x37')]['limit']);_0x436ae5['offset']=qs[_0x695e('0x1c')](_0x3440e8['query'][_0x695e('0x1c')]);}_0x436ae5['order']=qs[_0x695e('0x3b')](_0x3440e8[_0x695e('0x37')][_0x695e('0x3b')]);_0x436ae5[_0x695e('0x3c')]=qs['filters'](_[_0x695e('0x3d')](_0x3440e8[_0x695e('0x37')],_0x343d9f[_0x695e('0x3e')]),_0xc268cf);if(_0x3440e8[_0x695e('0x37')][_0x695e('0x3f')]){_0x436ae5[_0x695e('0x3c')]=_[_0x695e('0x40')](_0x436ae5['where'],{'$or':_[_0x695e('0x2f')](_0xc268cf,function(_0xf1b192){if(_0xf1b192[_0x695e('0x33')]!==_0x695e('0x41')){var _0x51e816={};_0x51e816[_0xf1b192[_0x695e('0x2d')]]={'$like':'%'+_0x3440e8['query'][_0x695e('0x3f')]+'%'};return _0x51e816;}})});}_0x436ae5=_[_0x695e('0x40')]({},_0x436ae5,_0x3440e8[_0x695e('0x42')]);var _0x371221={'where':_0x436ae5[_0x695e('0x3c')]};return db[_0x695e('0x30')]['count'](_0x371221)[_0x695e('0x25')](function(_0x2a1cc4){_0x3b84e7[_0x695e('0x1e')]=_0x2a1cc4;if(_0x3440e8[_0x695e('0x37')]['includeAll']){_0x436ae5[_0x695e('0x43')]=[{'all':!![]}];}return db[_0x695e('0x30')][_0x695e('0x44')](_0x436ae5);})[_0x695e('0x25')](function(_0x41c168){_0x3b84e7[_0x695e('0x45')]=_0x41c168;return _0x3b84e7;})[_0x695e('0x25')](respondWithFilteredResult(_0x4cb04f,_0x436ae5))[_0x695e('0x46')](handleError(_0x4cb04f,null));};exports[_0x695e('0x47')]=function(_0x893e82,_0x3296ee){var _0x2fccb2={'raw':!![],'where':{'id':_0x893e82['params']['id']}},_0x12d48a={};_0x12d48a[_0x695e('0x35')]=_['keys'](db[_0x695e('0x30')]['rawAttributes']);_0x12d48a['query']=_[_0x695e('0x48')](_0x893e82[_0x695e('0x37')]);_0x12d48a[_0x695e('0x3e')]=_['intersection'](_0x12d48a[_0x695e('0x35')],_0x12d48a['query']);_0x2fccb2[_0x695e('0x38')]=_[_0x695e('0x36')](_0x12d48a[_0x695e('0x35')],qs[_0x695e('0x39')](_0x893e82[_0x695e('0x37')][_0x695e('0x39')]));_0x2fccb2[_0x695e('0x38')]=_0x2fccb2[_0x695e('0x38')][_0x695e('0x49')]?_0x2fccb2['attributes']:_0x12d48a[_0x695e('0x35')];if(_0x893e82[_0x695e('0x37')][_0x695e('0x4a')]){_0x2fccb2['include']=[{'all':!![]}];}_0x2fccb2=_[_0x695e('0x40')]({},_0x2fccb2,_0x893e82[_0x695e('0x42')]);return db[_0x695e('0x30')][_0x695e('0x4b')](_0x2fccb2)[_0x695e('0x25')](handleEntityNotFound(_0x3296ee,null))[_0x695e('0x25')](respondWithResult(_0x3296ee,null))[_0x695e('0x46')](handleError(_0x3296ee,null));};exports[_0x695e('0x4c')]=function(_0x39f72c,_0x5467f2){return db['MailQueue'][_0x695e('0x4c')](_0x39f72c[_0x695e('0x4d')],{})['then'](function(_0x43ce90){var _0x9be77c=_0x39f72c[_0x695e('0x4e')]['get']({'plain':!![]});if(!_0x9be77c)throw new Error(_0x695e('0x4f'));if(_0x9be77c['role']===_0x695e('0x4e')){var _0x359820=_0x43ce90[_0x695e('0x27')]({'plain':!![]});var _0xafdb4=_0x695e('0x28');return db[_0x695e('0x50')][_0x695e('0x4b')]({'where':{'name':_0xafdb4,'userProfileId':_0x9be77c[_0x695e('0x51')]},'raw':!![]})[_0x695e('0x25')](function(_0x34926f){if(_0x34926f&&_0x34926f[_0x695e('0x52')]===0x0){return db['UserProfileResource'][_0x695e('0x4c')]({'name':_0x359820[_0x695e('0x2d')],'resourceId':_0x359820['id'],'type':_0x34926f['name'],'sectionId':_0x34926f['id']},{})['then'](function(){return _0x43ce90;});}else{return _0x43ce90;}})[_0x695e('0x46')](function(_0x547230){logger[_0x695e('0x2b')](_0x695e('0x53'),_0x547230);throw _0x547230;});}return _0x43ce90;})['then'](respondWithResult(_0x5467f2,0xc9))[_0x695e('0x46')](handleError(_0x5467f2,null));};exports['update']=function(_0x1b61ee,_0x7d3605){if(_0x1b61ee[_0x695e('0x4d')]['id']){delete _0x1b61ee['body']['id'];}return db['MailQueue'][_0x695e('0x4b')]({'where':{'id':_0x1b61ee[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0x7d3605,null))[_0x695e('0x25')](saveUpdates(_0x1b61ee[_0x695e('0x4d')],null))['then'](respondWithResult(_0x7d3605,null))[_0x695e('0x46')](handleError(_0x7d3605,null));};exports['destroy']=function(_0x12c2e3,_0x29d817){return db['MailQueue']['find']({'where':{'id':_0x12c2e3[_0x695e('0x54')]['id']}})['then'](handleEntityNotFound(_0x29d817,null))[_0x695e('0x25')](removeEntity(_0x29d817,null))['catch'](handleError(_0x29d817,null));};exports[_0x695e('0x55')]=function(_0x4ee8d6,_0x3ea845){return db[_0x695e('0x30')][_0x695e('0x55')]()[_0x695e('0x25')](respondWithResult(_0x3ea845,null))[_0x695e('0x46')](handleError(_0x3ea845,null));};exports[_0x695e('0x56')]=function(_0x3138cb,_0xdd35ec,_0x1d41a4){var _0x5ab33={'raw':!![],'where':{}},_0x230b84={},_0x459195;return db['MailQueue']['findOne']({'where':{'id':_0x3138cb[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0xdd35ec,null))[_0x695e('0x25')](function(_0x5ccf80){if(_0x5ccf80){_0x459195=_0x5ccf80[_0x695e('0x27')]({'plain':!![]});_0x230b84['model']=_[_0x695e('0x48')](db['UserMailQueue'][_0x695e('0x31')]);_0x230b84['query']=_['keys'](_0x3138cb[_0x695e('0x37')]);_0x230b84['filters']=_[_0x695e('0x36')](_0x230b84[_0x695e('0x35')],_0x230b84[_0x695e('0x37')]);_0x5ab33[_0x695e('0x38')]=_[_0x695e('0x36')](_0x230b84[_0x695e('0x35')],qs[_0x695e('0x39')](_0x3138cb[_0x695e('0x37')]['fields']));_0x5ab33[_0x695e('0x38')]=_0x5ab33[_0x695e('0x38')][_0x695e('0x49')]?_0x5ab33[_0x695e('0x38')]:_0x230b84[_0x695e('0x35')];if(!_0x3138cb[_0x695e('0x37')][_0x695e('0x3a')](_0x695e('0x57'))){_0x5ab33['limit']=qs[_0x695e('0x1f')](_0x3138cb[_0x695e('0x37')][_0x695e('0x1f')]);_0x5ab33[_0x695e('0x1c')]=qs[_0x695e('0x1c')](_0x3138cb[_0x695e('0x37')][_0x695e('0x1c')]);}_0x5ab33['order']=qs['sort'](_0x3138cb[_0x695e('0x37')][_0x695e('0x3b')]);_0x5ab33[_0x695e('0x3c')]=qs['filters'](_[_0x695e('0x3d')](_0x3138cb[_0x695e('0x37')],_0x230b84['filters']));_0x5ab33[_0x695e('0x3c')][_0x695e('0x58')]=_0x5ccf80['id'];if(_0x3138cb['query'][_0x695e('0x3f')]){_0x5ab33[_0x695e('0x3c')]=_[_0x695e('0x40')](_0x5ab33[_0x695e('0x3c')],{'$or':_['map'](_0x5ab33[_0x695e('0x38')],function(_0x3c7621){var _0x3502f1={};_0x3502f1[_0x3c7621]={'$like':'%'+_0x3138cb['query'][_0x695e('0x3f')]+'%'};return _0x3502f1;})});}_0x5ab33=_['merge']({},_0x5ab33,_0x3138cb['options']);return db[_0x695e('0x59')][_0x695e('0x44')](_0x5ab33);}})[_0x695e('0x25')](function(_0x2e145f){if(_0x2e145f){return db[_0x695e('0x5a')][_0x695e('0x5b')]({'where':{'id':_['map'](_0x2e145f,'UserId'),'role':_0x695e('0x5c')},'attributes':['id',_0x695e('0x2d'),_0x695e('0x5d'),_0x695e('0x5e'),'createdAt']});}})[_0x695e('0x25')](function(_0xcb186d){if(_0xcb186d){return{'count':_0xcb186d[_0x695e('0x1e')],'rows':_[_0x695e('0x2f')](_0xcb186d[_0x695e('0x45')],function(_0x772697){return{'membername':_0x772697['name'],'UserId':_0x772697['id'],'queue_name':_0x459195['name'],'MailQueueId':_0x459195['id'],'interface':util[_0x695e('0x5f')](_0x695e('0x60'),'SIP',_0x772697[_0x695e('0x2d')]),'penalty':0x0,'paused':_0x772697[_0x695e('0x5d')],'createdAt':_0x772697[_0x695e('0x61')],'updatedAt':_0x772697[_0x695e('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x695e('0x25')](respondWithFilteredResult(_0xdd35ec,_0x5ab33))[_0x695e('0x46')](handleError(_0xdd35ec,null));};exports[_0x695e('0x62')]=function(_0xf6a1b4,_0x296561,_0x347003){var _0x473079={};var _0x1bcc3d={};var _0xb4b6f6;var _0x532c1d;return db[_0x695e('0x30')][_0x695e('0x63')]({'where':{'id':_0xf6a1b4[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0x296561,null))['then'](function(_0x1d4ee8){if(_0x1d4ee8){_0xb4b6f6=_0x1d4ee8;_0x1bcc3d[_0x695e('0x35')]=_[_0x695e('0x48')](db[_0x695e('0x64')][_0x695e('0x31')]);_0x1bcc3d[_0x695e('0x37')]=_[_0x695e('0x48')](_0xf6a1b4[_0x695e('0x37')]);_0x1bcc3d[_0x695e('0x3e')]=_[_0x695e('0x36')](_0x1bcc3d[_0x695e('0x35')],_0x1bcc3d['query']);_0x473079[_0x695e('0x38')]=_[_0x695e('0x36')](_0x1bcc3d['model'],qs[_0x695e('0x39')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x39')]));_0x473079[_0x695e('0x38')]=_0x473079['attributes'][_0x695e('0x49')]?_0x473079['attributes']:_0x1bcc3d[_0x695e('0x35')];_0x473079[_0x695e('0x65')]=qs[_0x695e('0x3b')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x3b')]);_0x473079['where']=qs[_0x695e('0x3e')](_['pick'](_0xf6a1b4[_0x695e('0x37')],_0x1bcc3d['filters']));if(_0xf6a1b4['query'][_0x695e('0x3f')]){_0x473079[_0x695e('0x3c')]=_['merge'](_0x473079[_0x695e('0x3c')],{'$or':_['map'](_0x473079['attributes'],function(_0x3660c8){var _0xc592f4={};_0xc592f4[_0x3660c8]={'$like':'%'+_0xf6a1b4[_0x695e('0x37')]['filter']+'%'};return _0xc592f4;})});}_0x473079=_[_0x695e('0x40')]({},_0x473079,_0xf6a1b4['options']);return _0xb4b6f6[_0x695e('0x62')](_0x473079);}})[_0x695e('0x25')](function(_0x526a3c){if(_0x526a3c){_0x532c1d=_0x526a3c[_0x695e('0x49')];if(!_0xf6a1b4[_0x695e('0x37')][_0x695e('0x3a')](_0x695e('0x57'))){_0x473079[_0x695e('0x1f')]=qs[_0x695e('0x1f')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x1f')]);_0x473079[_0x695e('0x1c')]=qs[_0x695e('0x1c')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x1c')]);}return _0xb4b6f6[_0x695e('0x62')](_0x473079);}})[_0x695e('0x25')](function(_0x174abe){if(_0x174abe){return _0x174abe?{'count':_0x532c1d,'rows':_0x174abe}:null;}})['then'](respondWithResult(_0x296561,null))[_0x695e('0x46')](handleError(_0x296561,null));};exports[_0x695e('0x66')]=function(_0x465c3c,_0xc67549,_0x50b18c){var _0x391d03=_0x465c3c[_0x695e('0x4d')][_0x695e('0x67')];return db[_0x695e('0x64')][_0x695e('0x44')]({'where':{'id':_0x391d03},'attributes':['id'],'include':[{'model':db[_0x695e('0x5a')],'as':_0x695e('0x68'),'attributes':['id',_0x695e('0x2d'),_0x695e('0x69'),_0x695e('0x6a'),_0x695e('0x6b')],'raw':!![]}]})['then'](function(_0x4fe588){if(_0x4fe588){var _0x400bd4=_[_0x695e('0x6c')](_0x4fe588,function(_0x98ff55){var _0x1c22cf=_0x98ff55[_0x695e('0x27')]({'plain':!![]});return _0x1c22cf[_0x695e('0x68')];});return db[_0x695e('0x30')]['find']({'where':{'id':_0x465c3c[_0x695e('0x54')]['id']}})[_0x695e('0x25')](function(_0x12b7b7){return db[_0x695e('0x6d')][_0x695e('0x6e')](function(_0x5aa85c){return _0x12b7b7[_0x695e('0x66')](_0x391d03,{'transaction':_0x5aa85c})[_0x695e('0x25')](function(){return BPromise[_0x695e('0x6f')](_0x400bd4,function(_0x274fdb){return db[_0x695e('0x59')]['findOrCreate']({'where':{'UserId':_0x274fdb['id'],'MailQueueId':_0x465c3c[_0x695e('0x54')]['id']},'transaction':_0x5aa85c});});})[_0x695e('0x25')](function(){_0x400bd4[_0x695e('0x70')](function(_0x786350){socket[_0x695e('0x71')](_0x695e('0x72'),{'UserId':_0x786350['id'],'MailQueueId':_0x12b7b7['id']});});});});});}})[_0x695e('0x25')](respondWithStatusCode(_0xc67549,null))[_0x695e('0x46')](handleError(_0xc67549,null));};exports[_0x695e('0x73')]=function(_0x1e5342,_0x59a47c,_0xc9fd4b){return db[_0x695e('0x64')][_0x695e('0x44')]({'where':{'id':_0x1e5342['query'][_0x695e('0x67')]},'attributes':['id'],'include':[{'model':db[_0x695e('0x5a')],'as':_0x695e('0x68'),'attributes':['id'],'raw':!![]}]})[_0x695e('0x25')](handleEntityNotFound(_0x59a47c,null))['then'](function(_0x21d23f){var _0x2bb061=_[_0x695e('0x2f')](_0x21d23f,'id');var _0x41e977=[];var _0x1c37c0=[];var _0x35ea22=squel[_0x695e('0x74')]();_0x35ea22['field'](_0x695e('0x75'))[_0x695e('0x76')](_0x695e('0x77'),'tq')[_0x695e('0x78')](_0x695e('0x79'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x695e('0x3c')](_0x695e('0x7a'),_0x1e5342[_0x695e('0x54')]['id']);for(var _0x303270=0x0;_0x303270<_0x21d23f[_0x695e('0x49')];_0x303270+=0x1){let _0x2934f3=_0x21d23f[_0x303270];for(var _0x3fa404=0x0;_0x3fa404<_0x2934f3[_0x695e('0x68')][_0x695e('0x49')];_0x3fa404+=0x1){let _0xfd8084=_0x2934f3[_0x695e('0x68')][_0x3fa404];var _0xb1764e=_0x35ea22[_0x695e('0x7b')]();_0xb1764e[_0x695e('0x3c')](_0x695e('0x7c'),_0xfd8084['id']);_0x1c37c0['push'](db['sequelize'][_0x695e('0x37')](_0xb1764e['toString'](),{'type':db[_0x695e('0x6d')]['QueryTypes'][_0x695e('0x7d')]})['then'](function(_0x1e5c72){if(_0x1e5c72['length']===0x1){return _0xfd8084['id'];}else{var _0x374a46=_[_0x695e('0x7e')](_[_0x695e('0x2f')](_0x1e5c72,_0x695e('0x7f')),function(_0x5ead3b){return _['includes'](_0x2bb061,_0x5ead3b);});if(_0x374a46){return _0xfd8084['id'];}}}));}}return BPromise[_0x695e('0x80')](_0x1c37c0)[_0x695e('0x25')](function(_0x15266b){_0x41e977=_(_0x41e977)[_0x695e('0x81')](_0x15266b)[_0x695e('0x82')]()['value']();return db[_0x695e('0x30')][_0x695e('0x4b')]({'where':{'id':_0x1e5342[_0x695e('0x54')]['id']}})['then'](function(_0x135dbb){return db[_0x695e('0x6d')][_0x695e('0x6e')](function(_0x74c9d5){return _0x135dbb[_0x695e('0x73')](_0x1e5342[_0x695e('0x37')][_0x695e('0x67')],{'transaction':_0x74c9d5})[_0x695e('0x25')](function(){if(!_['isEmpty'](_0x41e977)){return _0x135dbb['removeAgents'](_0x41e977,{'transaction':_0x74c9d5});}})['then'](function(){_0x41e977[_0x695e('0x70')](function(_0x50d3e6){socket[_0x695e('0x71')](_0x695e('0x83'),{'UserId':_0x50d3e6,'MailQueueId':_0x135dbb['id']});});});});});});})['then'](respondWithStatusCode(_0x59a47c,null))[_0x695e('0x46')](handleError(_0x59a47c,null));};exports[_0x695e('0x84')]=function(_0x4affaf,_0x760fd,_0xfc6aed){return db[_0x695e('0x30')][_0x695e('0x4b')]({'where':{'id':_0x4affaf[_0x695e('0x54')]['id']}})['then'](handleEntityNotFound(_0x760fd,null))[_0x695e('0x25')](function(_0x31367b){if(_0x31367b){return _0x31367b[_0x695e('0x84')](_0x4affaf['body'][_0x695e('0x67')],_[_0x695e('0x85')](_0x4affaf['body'],[_0x695e('0x67'),'id'])||{})[_0x695e('0x86')](function(_0x2ec2a9){for(var _0x15c8d7=0x0;_0x15c8d7<_0x4affaf['body'][_0x695e('0x67')][_0x695e('0x49')];_0x15c8d7+=0x1){socket['emit']('userMailQueue:save',{'UserId':Number(_0x4affaf[_0x695e('0x4d')][_0x695e('0x67')][_0x15c8d7]),'MailQueueId':Number(_0x4affaf[_0x695e('0x54')]['id'])});}return _0x2ec2a9;});}})[_0x695e('0x25')](respondWithResult(_0x760fd,null))[_0x695e('0x46')](handleError(_0x760fd,null));};exports[_0x695e('0x87')]=function(_0x3e9167,_0x4da672,_0x5140e1){return db[_0x695e('0x30')][_0x695e('0x4b')]({'where':{'id':_0x3e9167[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0x4da672,null))[_0x695e('0x25')](function(_0x2baecf){if(_0x2baecf){return _0x2baecf[_0x695e('0x87')](_0x3e9167[_0x695e('0x37')]['ids'])[_0x695e('0x25')](function(){if(_[_0x695e('0x88')](_0x3e9167[_0x695e('0x37')][_0x695e('0x67')])){for(var _0x3a4151=0x0;_0x3a4151<_0x3e9167[_0x695e('0x37')][_0x695e('0x67')][_0x695e('0x49')];_0x3a4151+=0x1){socket[_0x695e('0x71')](_0x695e('0x83'),{'UserId':Number(_0x3e9167[_0x695e('0x37')]['ids'][_0x3a4151]),'MailQueueId':Number(_0x3e9167[_0x695e('0x54')]['id'])});}}else{socket['emit'](_0x695e('0x83'),{'UserId':Number(_0x3e9167[_0x695e('0x37')]['ids']),'MailQueueId':Number(_0x3e9167[_0x695e('0x54')]['id'])});}});}})[_0x695e('0x25')](respondWithStatusCode(_0x4da672,null))[_0x695e('0x46')](handleError(_0x4da672,null));};exports[_0x695e('0x89')]=function(_0x25e65d,_0xf79a3c,_0x29c7a2){var _0xa1890e={};var _0x54fcb9={};var _0x4d1496;var _0x440f55;return db[_0x695e('0x30')][_0x695e('0x63')]({'where':{'id':_0x25e65d[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0xf79a3c,null))[_0x695e('0x25')](function(_0x18b9b4){if(_0x18b9b4){_0x4d1496=_0x18b9b4;_0x54fcb9[_0x695e('0x35')]=_[_0x695e('0x48')](db[_0x695e('0x5a')]['rawAttributes']);_0x54fcb9['query']=_[_0x695e('0x48')](_0x25e65d['query']);_0x54fcb9[_0x695e('0x3e')]=_[_0x695e('0x36')](_0x54fcb9[_0x695e('0x35')],_0x54fcb9[_0x695e('0x37')]);_0xa1890e[_0x695e('0x38')]=_[_0x695e('0x36')](_0x54fcb9['model'],qs[_0x695e('0x39')](_0x25e65d[_0x695e('0x37')][_0x695e('0x39')]));_0xa1890e[_0x695e('0x38')]=_0xa1890e['attributes'][_0x695e('0x49')]?_0xa1890e[_0x695e('0x38')]:_0x54fcb9[_0x695e('0x35')];_0xa1890e[_0x695e('0x65')]=qs[_0x695e('0x3b')](_0x25e65d[_0x695e('0x37')][_0x695e('0x3b')]);_0xa1890e[_0x695e('0x3c')]=qs[_0x695e('0x3e')](_[_0x695e('0x3d')](_0x25e65d['query'],_0x54fcb9[_0x695e('0x3e')]));if(_0x25e65d[_0x695e('0x37')]['filter']){_0xa1890e[_0x695e('0x3c')]=_[_0x695e('0x40')](_0xa1890e['where'],{'$or':_[_0x695e('0x2f')](_0xa1890e[_0x695e('0x38')],function(_0x56db4b){var _0x14b7d5={};_0x14b7d5[_0x56db4b]={'$like':'%'+_0x25e65d['query'][_0x695e('0x3f')]+'%'};return _0x14b7d5;})});}_0xa1890e=_[_0x695e('0x40')]({},_0xa1890e,_0x25e65d['options']);return _0x4d1496[_0x695e('0x89')](_0xa1890e);}})[_0x695e('0x25')](function(_0x51f3f5){if(_0x51f3f5){_0x440f55=_0x51f3f5[_0x695e('0x49')];if(!_0x25e65d['query'][_0x695e('0x3a')]('nolimit')){_0xa1890e[_0x695e('0x1f')]=qs['limit'](_0x25e65d[_0x695e('0x37')]['limit']);_0xa1890e[_0x695e('0x1c')]=qs['offset'](_0x25e65d[_0x695e('0x37')][_0x695e('0x1c')]);}return _0x4d1496['getAgents'](_0xa1890e);}})[_0x695e('0x25')](function(_0x224c5d){if(_0x224c5d){return _0x224c5d?{'count':_0x440f55,'rows':_0x224c5d}:null;}})[_0x695e('0x25')](respondWithResult(_0xf79a3c,null))[_0x695e('0x46')](handleError(_0xf79a3c,null));};
\ No newline at end of file
+var _0x5694=['UserMailQueue','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','order','User','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','ids','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','value','isEmpty','removeAgents','addAgents','omit','spread','userMailQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','get','UserProfileResource','end','sendStatus','error','stack','name','index','MailQueue','rawAttributes','fieldName','key','map','query','keys','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','fields','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne'];(function(_0x529173,_0x2bc9ce){var _0x295bb4=function(_0x178ace){while(--_0x178ace){_0x529173['push'](_0x529173['shift']());}};_0x295bb4(++_0x2bc9ce);}(_0x5694,0x1ca));var _0x4569=function(_0x5a97c0,_0x3fff6c){_0x5a97c0=_0x5a97c0-0x0;var _0x173c00=_0x5694[_0x5a97c0];return _0x173c00;};'use strict';var emlformat=require(_0x4569('0x0'));var rimraf=require(_0x4569('0x1'));var zipdir=require(_0x4569('0x2'));var jsonpatch=require(_0x4569('0x3'));var rp=require('request-promise');var moment=require(_0x4569('0x4'));var BPromise=require(_0x4569('0x5'));var Mustache=require(_0x4569('0x6'));var util=require('util');var path=require(_0x4569('0x7'));var sox=require('sox');var csv=require(_0x4569('0x8'));var ejs=require(_0x4569('0x9'));var fs=require('fs');var fs_extra=require(_0x4569('0xa'));var _=require(_0x4569('0xb'));var squel=require(_0x4569('0xc'));var crypto=require(_0x4569('0xd'));var jsforce=require(_0x4569('0xe'));var deskjs=require(_0x4569('0xf'));var toCsv=require(_0x4569('0x8'));var querystring=require(_0x4569('0x10'));var Papa=require('papaparse');var Redis=require(_0x4569('0x11'));var authService=require(_0x4569('0x12'));var qs=require(_0x4569('0x13'));var as=require(_0x4569('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4569('0x15'));var utils=require(_0x4569('0x16'));var config=require(_0x4569('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4569('0x18'))['db'];config[_0x4569('0x19')]=_['defaults'](config[_0x4569('0x19')],{'host':_0x4569('0x1a'),'port':0x18eb});var socket=require(_0x4569('0x1b'))(new Redis(config[_0x4569('0x19')]));require('./mailQueue.socket')[_0x4569('0x1c')](socket);function respondWithStatusCode(_0x2aa86c,_0x12750a){_0x12750a=_0x12750a||0xcc;return function(_0xaf7037){if(_0xaf7037){return _0x2aa86c['sendStatus'](_0x12750a);}return _0x2aa86c[_0x4569('0x1d')](_0x12750a)['end']();};}function respondWithResult(_0xc94f95,_0x1c4766){_0x1c4766=_0x1c4766||0xc8;return function(_0x43843d){if(_0x43843d){return _0xc94f95['status'](_0x1c4766)[_0x4569('0x1e')](_0x43843d);}};}function respondWithFilteredResult(_0x7ce33e,_0x1e4107){return function(_0x5c8c6b){if(_0x5c8c6b){var _0x3b8cf8=typeof _0x1e4107[_0x4569('0x1f')]===_0x4569('0x20')&&typeof _0x1e4107['limit']===_0x4569('0x20');var _0x1e31a2=_0x5c8c6b[_0x4569('0x21')];var _0x128f67=_0x3b8cf8?0x0:_0x1e4107[_0x4569('0x1f')];var _0x5e649f=_0x3b8cf8?_0x5c8c6b[_0x4569('0x21')]:_0x1e4107[_0x4569('0x1f')]+_0x1e4107[_0x4569('0x22')];var _0x2df1f1;if(_0x5e649f>=_0x1e31a2){_0x5e649f=_0x1e31a2;_0x2df1f1=0xc8;}else{_0x2df1f1=0xce;}_0x7ce33e['status'](_0x2df1f1);return _0x7ce33e[_0x4569('0x23')]('Content-Range',_0x128f67+'-'+_0x5e649f+'/'+_0x1e31a2)[_0x4569('0x1e')](_0x5c8c6b);}return null;};}function patchUpdates(_0x33625d){return function(_0x1b181d){try{jsonpatch[_0x4569('0x24')](_0x1b181d,_0x33625d,!![]);}catch(_0x3100fd){return BPromise[_0x4569('0x25')](_0x3100fd);}return _0x1b181d[_0x4569('0x26')]();};}function saveUpdates(_0x69c082,_0x409e3e){return function(_0x6a139f){if(_0x6a139f){return _0x6a139f[_0x4569('0x27')](_0x69c082)[_0x4569('0x28')](function(_0x3663f3){return _0x3663f3;});}return null;};}function removeEntity(_0x527492,_0x3231d2){return function(_0xb92ce1){if(_0xb92ce1){return _0xb92ce1[_0x4569('0x29')]()['then'](function(){var _0x510df6=_0xb92ce1[_0x4569('0x2a')]({'plain':!![]});var _0x3b3af9='MailQueues';return db[_0x4569('0x2b')]['destroy']({'where':{'type':_0x3b3af9,'resourceId':_0x510df6['id']}})[_0x4569('0x28')](function(){return _0xb92ce1;});})['then'](function(){_0x527492[_0x4569('0x1d')](0xcc)[_0x4569('0x2c')]();});}};}function handleEntityNotFound(_0x3768c0,_0xb5a26c){return function(_0x75e04c){if(!_0x75e04c){_0x3768c0[_0x4569('0x2d')](0x194);}return _0x75e04c;};}function handleError(_0x16bd59,_0x4c5e0e){_0x4c5e0e=_0x4c5e0e||0x1f4;return function(_0x3661d8){logger[_0x4569('0x2e')](_0x3661d8[_0x4569('0x2f')]);if(_0x3661d8[_0x4569('0x30')]){delete _0x3661d8[_0x4569('0x30')];}_0x16bd59[_0x4569('0x1d')](_0x4c5e0e)['send'](_0x3661d8);};}exports[_0x4569('0x31')]=function(_0x5e8450,_0x566ca7){var _0x2c2d6b={},_0x4a2a8c={},_0xfd0e4b={'count':0x0,'rows':[]};var _0x1d2123=_['map'](db[_0x4569('0x32')][_0x4569('0x33')],function(_0x1d2c44){return{'name':_0x1d2c44[_0x4569('0x34')],'type':_0x1d2c44['type'][_0x4569('0x35')]};});_0x4a2a8c['model']=_[_0x4569('0x36')](_0x1d2123,_0x4569('0x30'));_0x4a2a8c[_0x4569('0x37')]=_[_0x4569('0x38')](_0x5e8450[_0x4569('0x37')]);_0x4a2a8c['filters']=_[_0x4569('0x39')](_0x4a2a8c['model'],_0x4a2a8c['query']);_0x2c2d6b['attributes']=_[_0x4569('0x39')](_0x4a2a8c[_0x4569('0x3a')],qs['fields'](_0x5e8450[_0x4569('0x37')]['fields']));_0x2c2d6b['attributes']=_0x2c2d6b[_0x4569('0x3b')][_0x4569('0x3c')]?_0x2c2d6b[_0x4569('0x3b')]:_0x4a2a8c['model'];if(!_0x5e8450[_0x4569('0x37')][_0x4569('0x3d')](_0x4569('0x3e'))){_0x2c2d6b[_0x4569('0x22')]=qs[_0x4569('0x22')](_0x5e8450[_0x4569('0x37')]['limit']);_0x2c2d6b[_0x4569('0x1f')]=qs[_0x4569('0x1f')](_0x5e8450[_0x4569('0x37')][_0x4569('0x1f')]);}_0x2c2d6b['order']=qs[_0x4569('0x3f')](_0x5e8450['query']['sort']);_0x2c2d6b['where']=qs[_0x4569('0x40')](_[_0x4569('0x41')](_0x5e8450[_0x4569('0x37')],_0x4a2a8c[_0x4569('0x40')]),_0x1d2123);if(_0x5e8450['query'][_0x4569('0x42')]){_0x2c2d6b[_0x4569('0x43')]=_[_0x4569('0x44')](_0x2c2d6b[_0x4569('0x43')],{'$or':_['map'](_0x1d2123,function(_0x43e9de){if(_0x43e9de['type']!==_0x4569('0x45')){var _0x76d5e7={};_0x76d5e7[_0x43e9de[_0x4569('0x30')]]={'$like':'%'+_0x5e8450[_0x4569('0x37')][_0x4569('0x42')]+'%'};return _0x76d5e7;}})});}_0x2c2d6b=_[_0x4569('0x44')]({},_0x2c2d6b,_0x5e8450[_0x4569('0x46')]);var _0x388387={'where':_0x2c2d6b[_0x4569('0x43')]};return db[_0x4569('0x32')]['count'](_0x388387)[_0x4569('0x28')](function(_0x477979){_0xfd0e4b[_0x4569('0x21')]=_0x477979;if(_0x5e8450[_0x4569('0x37')]['includeAll']){_0x2c2d6b[_0x4569('0x47')]=[{'all':!![]}];}return db[_0x4569('0x32')][_0x4569('0x48')](_0x2c2d6b);})['then'](function(_0x43625e){_0xfd0e4b[_0x4569('0x49')]=_0x43625e;return _0xfd0e4b;})[_0x4569('0x28')](respondWithFilteredResult(_0x566ca7,_0x2c2d6b))[_0x4569('0x4a')](handleError(_0x566ca7,null));};exports[_0x4569('0x4b')]=function(_0xea30af,_0x309067){var _0x315eb6={'raw':!![],'where':{'id':_0xea30af[_0x4569('0x4c')]['id']}},_0x3c32c2={};_0x3c32c2[_0x4569('0x3a')]=_['keys'](db[_0x4569('0x32')][_0x4569('0x33')]);_0x3c32c2[_0x4569('0x37')]=_[_0x4569('0x38')](_0xea30af[_0x4569('0x37')]);_0x3c32c2[_0x4569('0x40')]=_[_0x4569('0x39')](_0x3c32c2[_0x4569('0x3a')],_0x3c32c2['query']);_0x315eb6[_0x4569('0x3b')]=_[_0x4569('0x39')](_0x3c32c2[_0x4569('0x3a')],qs[_0x4569('0x4d')](_0xea30af[_0x4569('0x37')][_0x4569('0x4d')]));_0x315eb6['attributes']=_0x315eb6[_0x4569('0x3b')][_0x4569('0x3c')]?_0x315eb6[_0x4569('0x3b')]:_0x3c32c2[_0x4569('0x3a')];if(_0xea30af['query']['includeAll']){_0x315eb6[_0x4569('0x47')]=[{'all':!![]}];}_0x315eb6=_[_0x4569('0x44')]({},_0x315eb6,_0xea30af[_0x4569('0x46')]);return db[_0x4569('0x32')]['find'](_0x315eb6)[_0x4569('0x28')](handleEntityNotFound(_0x309067,null))[_0x4569('0x28')](respondWithResult(_0x309067,null))[_0x4569('0x4a')](handleError(_0x309067,null));};exports['create']=function(_0x17d89d,_0x28957d){return db[_0x4569('0x32')][_0x4569('0x4e')](_0x17d89d['body'],{})[_0x4569('0x28')](function(_0x57b2c9){var _0x1885c6=_0x17d89d[_0x4569('0x4f')][_0x4569('0x2a')]({'plain':!![]});if(!_0x1885c6)throw new Error(_0x4569('0x50'));if(_0x1885c6[_0x4569('0x51')]===_0x4569('0x4f')){var _0x303f6e=_0x57b2c9[_0x4569('0x2a')]({'plain':!![]});var _0xf6aa41=_0x4569('0x52');return db['UserProfileSection'][_0x4569('0x53')]({'where':{'name':_0xf6aa41,'userProfileId':_0x1885c6[_0x4569('0x54')]},'raw':!![]})[_0x4569('0x28')](function(_0x40ece5){if(_0x40ece5&&_0x40ece5['autoAssociation']===0x0){return db[_0x4569('0x2b')]['create']({'name':_0x303f6e[_0x4569('0x30')],'resourceId':_0x303f6e['id'],'type':_0x40ece5[_0x4569('0x30')],'sectionId':_0x40ece5['id']},{})['then'](function(){return _0x57b2c9;});}else{return _0x57b2c9;}})[_0x4569('0x4a')](function(_0x40a394){logger[_0x4569('0x2e')](_0x4569('0x55'),_0x40a394);throw _0x40a394;});}return _0x57b2c9;})[_0x4569('0x28')](respondWithResult(_0x28957d,0xc9))[_0x4569('0x4a')](handleError(_0x28957d,null));};exports[_0x4569('0x27')]=function(_0x2a3f9f,_0x36fad9){if(_0x2a3f9f[_0x4569('0x56')]['id']){delete _0x2a3f9f[_0x4569('0x56')]['id'];}return db[_0x4569('0x32')][_0x4569('0x53')]({'where':{'id':_0x2a3f9f[_0x4569('0x4c')]['id']}})['then'](handleEntityNotFound(_0x36fad9,null))[_0x4569('0x28')](saveUpdates(_0x2a3f9f[_0x4569('0x56')],null))[_0x4569('0x28')](respondWithResult(_0x36fad9,null))[_0x4569('0x4a')](handleError(_0x36fad9,null));};exports[_0x4569('0x29')]=function(_0x6237c9,_0x3423f6){return db['MailQueue'][_0x4569('0x53')]({'where':{'id':_0x6237c9[_0x4569('0x4c')]['id']}})[_0x4569('0x28')](handleEntityNotFound(_0x3423f6,null))[_0x4569('0x28')](removeEntity(_0x3423f6,null))[_0x4569('0x4a')](handleError(_0x3423f6,null));};exports['describe']=function(_0x147d15,_0x33b871){return db[_0x4569('0x32')][_0x4569('0x57')]()['then'](respondWithResult(_0x33b871,null))[_0x4569('0x4a')](handleError(_0x33b871,null));};exports[_0x4569('0x58')]=function(_0x55f1de,_0x8a790f,_0x5dd4d2){var _0x278ed2={'raw':!![],'where':{}},_0x188065={},_0x308247;return db[_0x4569('0x32')][_0x4569('0x59')]({'where':{'id':_0x55f1de[_0x4569('0x4c')]['id']}})[_0x4569('0x28')](handleEntityNotFound(_0x8a790f,null))[_0x4569('0x28')](function(_0x5998c6){if(_0x5998c6){_0x308247=_0x5998c6[_0x4569('0x2a')]({'plain':!![]});_0x188065['model']=_[_0x4569('0x38')](db[_0x4569('0x5a')][_0x4569('0x33')]);_0x188065[_0x4569('0x37')]=_[_0x4569('0x38')](_0x55f1de['query']);_0x188065[_0x4569('0x40')]=_[_0x4569('0x39')](_0x188065[_0x4569('0x3a')],_0x188065[_0x4569('0x37')]);_0x278ed2[_0x4569('0x3b')]=_[_0x4569('0x39')](_0x188065[_0x4569('0x3a')],qs[_0x4569('0x4d')](_0x55f1de[_0x4569('0x37')][_0x4569('0x4d')]));_0x278ed2[_0x4569('0x3b')]=_0x278ed2['attributes'][_0x4569('0x3c')]?_0x278ed2[_0x4569('0x3b')]:_0x188065[_0x4569('0x3a')];if(!_0x55f1de[_0x4569('0x37')][_0x4569('0x3d')](_0x4569('0x3e'))){_0x278ed2['limit']=qs['limit'](_0x55f1de[_0x4569('0x37')][_0x4569('0x22')]);_0x278ed2[_0x4569('0x1f')]=qs['offset'](_0x55f1de[_0x4569('0x37')][_0x4569('0x1f')]);}_0x278ed2['order']=qs[_0x4569('0x3f')](_0x55f1de[_0x4569('0x37')][_0x4569('0x3f')]);_0x278ed2['where']=qs[_0x4569('0x40')](_['pick'](_0x55f1de['query'],_0x188065[_0x4569('0x40')]));_0x278ed2['where']['MailQueueId']=_0x5998c6['id'];if(_0x55f1de['query']['filter']){_0x278ed2[_0x4569('0x43')]=_[_0x4569('0x44')](_0x278ed2[_0x4569('0x43')],{'$or':_['map'](_0x278ed2[_0x4569('0x3b')],function(_0x51d179){var _0x4571f3={};_0x4571f3[_0x51d179]={'$like':'%'+_0x55f1de[_0x4569('0x37')]['filter']+'%'};return _0x4571f3;})});}_0x278ed2=_[_0x4569('0x44')]({},_0x278ed2,_0x55f1de['options']);return db[_0x4569('0x5a')]['findAll'](_0x278ed2);}})['then'](function(_0x4d1256){if(_0x4d1256){return db['User'][_0x4569('0x5b')]({'where':{'id':_[_0x4569('0x36')](_0x4d1256,_0x4569('0x5c')),'role':_0x4569('0x5d')},'attributes':['id','name',_0x4569('0x5e'),_0x4569('0x5f'),_0x4569('0x60')]});}})[_0x4569('0x28')](function(_0x370d71){if(_0x370d71){return{'count':_0x370d71['count'],'rows':_['map'](_0x370d71[_0x4569('0x49')],function(_0x51df0c){return{'membername':_0x51df0c[_0x4569('0x30')],'UserId':_0x51df0c['id'],'queue_name':_0x308247[_0x4569('0x30')],'MailQueueId':_0x308247['id'],'interface':util[_0x4569('0x61')](_0x4569('0x62'),_0x4569('0x63'),_0x51df0c[_0x4569('0x30')]),'penalty':0x0,'paused':_0x51df0c[_0x4569('0x5e')],'createdAt':_0x51df0c[_0x4569('0x60')],'updatedAt':_0x51df0c[_0x4569('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4569('0x28')](respondWithFilteredResult(_0x8a790f,_0x278ed2))['catch'](handleError(_0x8a790f,null));};exports[_0x4569('0x64')]=function(_0xcdb000,_0xd89330,_0xd350d3){var _0x47d358={};var _0x12262f={};var _0x2186d0;var _0x35da80;return db[_0x4569('0x32')][_0x4569('0x59')]({'where':{'id':_0xcdb000['params']['id']}})[_0x4569('0x28')](handleEntityNotFound(_0xd89330,null))[_0x4569('0x28')](function(_0x47729f){if(_0x47729f){_0x2186d0=_0x47729f;_0x12262f[_0x4569('0x3a')]=_['keys'](db[_0x4569('0x65')][_0x4569('0x33')]);_0x12262f[_0x4569('0x37')]=_[_0x4569('0x38')](_0xcdb000[_0x4569('0x37')]);_0x12262f[_0x4569('0x40')]=_[_0x4569('0x39')](_0x12262f[_0x4569('0x3a')],_0x12262f[_0x4569('0x37')]);_0x47d358[_0x4569('0x3b')]=_[_0x4569('0x39')](_0x12262f[_0x4569('0x3a')],qs[_0x4569('0x4d')](_0xcdb000[_0x4569('0x37')][_0x4569('0x4d')]));_0x47d358['attributes']=_0x47d358[_0x4569('0x3b')][_0x4569('0x3c')]?_0x47d358[_0x4569('0x3b')]:_0x12262f['model'];_0x47d358[_0x4569('0x66')]=qs[_0x4569('0x3f')](_0xcdb000[_0x4569('0x37')][_0x4569('0x3f')]);_0x47d358[_0x4569('0x43')]=qs[_0x4569('0x40')](_[_0x4569('0x41')](_0xcdb000[_0x4569('0x37')],_0x12262f[_0x4569('0x40')]));if(_0xcdb000['query'][_0x4569('0x42')]){_0x47d358[_0x4569('0x43')]=_[_0x4569('0x44')](_0x47d358[_0x4569('0x43')],{'$or':_[_0x4569('0x36')](_0x47d358[_0x4569('0x3b')],function(_0x4707f6){var _0x956cf8={};_0x956cf8[_0x4707f6]={'$like':'%'+_0xcdb000['query']['filter']+'%'};return _0x956cf8;})});}_0x47d358=_[_0x4569('0x44')]({},_0x47d358,_0xcdb000[_0x4569('0x46')]);return _0x2186d0['getTeams'](_0x47d358);}})[_0x4569('0x28')](function(_0x11cb74){if(_0x11cb74){_0x35da80=_0x11cb74['length'];if(!_0xcdb000[_0x4569('0x37')]['hasOwnProperty'](_0x4569('0x3e'))){_0x47d358[_0x4569('0x22')]=qs[_0x4569('0x22')](_0xcdb000[_0x4569('0x37')][_0x4569('0x22')]);_0x47d358[_0x4569('0x1f')]=qs['offset'](_0xcdb000['query'][_0x4569('0x1f')]);}return _0x2186d0[_0x4569('0x64')](_0x47d358);}})[_0x4569('0x28')](function(_0x2c5fc9){if(_0x2c5fc9){return _0x2c5fc9?{'count':_0x35da80,'rows':_0x2c5fc9}:null;}})[_0x4569('0x28')](respondWithResult(_0xd89330,null))['catch'](handleError(_0xd89330,null));};exports['addTeams']=function(_0x5952da,_0x262f83,_0x4b14c2){var _0x58dd09=_0x5952da['body']['ids'];return db['Team'][_0x4569('0x48')]({'where':{'id':_0x58dd09},'attributes':['id'],'include':[{'model':db[_0x4569('0x67')],'as':_0x4569('0x68'),'attributes':['id',_0x4569('0x30'),_0x4569('0x69'),_0x4569('0x6a'),'interface'],'raw':!![]}]})[_0x4569('0x28')](function(_0x1b7b0b){if(_0x1b7b0b){var _0x2b5895=_[_0x4569('0x6b')](_0x1b7b0b,function(_0x5cf3e5){var _0x430791=_0x5cf3e5[_0x4569('0x2a')]({'plain':!![]});return _0x430791[_0x4569('0x68')];});return db[_0x4569('0x32')][_0x4569('0x53')]({'where':{'id':_0x5952da[_0x4569('0x4c')]['id']}})[_0x4569('0x28')](function(_0x5477b8){return db[_0x4569('0x6c')][_0x4569('0x6d')](function(_0x35a592){return _0x5477b8['addTeams'](_0x58dd09,{'transaction':_0x35a592})['then'](function(){return BPromise[_0x4569('0x6e')](_0x2b5895,function(_0x13d9a4){return db[_0x4569('0x5a')][_0x4569('0x6f')]({'where':{'UserId':_0x13d9a4['id'],'MailQueueId':_0x5952da[_0x4569('0x4c')]['id']},'transaction':_0x35a592});});})[_0x4569('0x28')](function(){_0x2b5895[_0x4569('0x70')](function(_0x641ebc){socket[_0x4569('0x71')]('userMailQueue:save',{'UserId':_0x641ebc['id'],'MailQueueId':_0x5477b8['id']});});});});});}})[_0x4569('0x28')](respondWithStatusCode(_0x262f83,null))[_0x4569('0x4a')](handleError(_0x262f83,null));};exports[_0x4569('0x72')]=function(_0x489213,_0x2f71f3,_0x8c8e8a){return db['Team'][_0x4569('0x48')]({'where':{'id':_0x489213[_0x4569('0x37')][_0x4569('0x73')]},'attributes':['id'],'include':[{'model':db[_0x4569('0x67')],'as':_0x4569('0x68'),'attributes':['id'],'raw':!![]}]})[_0x4569('0x28')](handleEntityNotFound(_0x2f71f3,null))['then'](function(_0x268de9){var _0x3dd4b3=_[_0x4569('0x36')](_0x268de9,'id');var _0x30dc67=[];var _0xf8988d=[];var _0x3403e7=squel['select']();_0x3403e7['field']('tq.TeamId')[_0x4569('0x74')](_0x4569('0x75'),'tq')[_0x4569('0x76')](_0x4569('0x77'),'ut',_0x4569('0x78'))['where'](_0x4569('0x79'),_0x489213[_0x4569('0x4c')]['id']);for(var _0x3cde01=0x0;_0x3cde01<_0x268de9['length'];_0x3cde01+=0x1){let _0x39eec1=_0x268de9[_0x3cde01];for(var _0x46121b=0x0;_0x46121b<_0x39eec1['Agents'][_0x4569('0x3c')];_0x46121b+=0x1){let _0x22d86f=_0x39eec1[_0x4569('0x68')][_0x46121b];var _0x139697=_0x3403e7['clone']();_0x139697[_0x4569('0x43')](_0x4569('0x7a'),_0x22d86f['id']);_0xf8988d[_0x4569('0x7b')](db[_0x4569('0x6c')][_0x4569('0x37')](_0x139697[_0x4569('0x7c')](),{'type':db['sequelize']['QueryTypes'][_0x4569('0x7d')]})['then'](function(_0x1b0629){if(_0x1b0629['length']===0x1){return _0x22d86f['id'];}else{var _0x45d712=_[_0x4569('0x7e')](_['map'](_0x1b0629,_0x4569('0x7f')),function(_0x3577bd){return _[_0x4569('0x80')](_0x3dd4b3,_0x3577bd);});if(_0x45d712){return _0x22d86f['id'];}}}));}}return BPromise['all'](_0xf8988d)[_0x4569('0x28')](function(_0x4e54d2){_0x30dc67=_(_0x30dc67)['union'](_0x4e54d2)['compact']()[_0x4569('0x81')]();return db['MailQueue'][_0x4569('0x53')]({'where':{'id':_0x489213[_0x4569('0x4c')]['id']}})[_0x4569('0x28')](function(_0x59213b){return db[_0x4569('0x6c')][_0x4569('0x6d')](function(_0x5cd112){return _0x59213b['removeTeams'](_0x489213[_0x4569('0x37')]['ids'],{'transaction':_0x5cd112})[_0x4569('0x28')](function(){if(!_[_0x4569('0x82')](_0x30dc67)){return _0x59213b[_0x4569('0x83')](_0x30dc67,{'transaction':_0x5cd112});}})['then'](function(){_0x30dc67[_0x4569('0x70')](function(_0x47d6bb){socket['emit']('userMailQueue:remove',{'UserId':_0x47d6bb,'MailQueueId':_0x59213b['id']});});});});});});})[_0x4569('0x28')](respondWithStatusCode(_0x2f71f3,null))[_0x4569('0x4a')](handleError(_0x2f71f3,null));};exports[_0x4569('0x84')]=function(_0x12c975,_0x32f7fa,_0x4dee34){return db[_0x4569('0x32')][_0x4569('0x53')]({'where':{'id':_0x12c975['params']['id']}})['then'](handleEntityNotFound(_0x32f7fa,null))[_0x4569('0x28')](function(_0x42ede4){if(_0x42ede4){return _0x42ede4[_0x4569('0x84')](_0x12c975[_0x4569('0x56')][_0x4569('0x73')],_[_0x4569('0x85')](_0x12c975[_0x4569('0x56')],[_0x4569('0x73'),'id'])||{})[_0x4569('0x86')](function(_0x33e4bc){for(var _0x42a6be=0x0;_0x42a6be<_0x12c975['body'][_0x4569('0x73')][_0x4569('0x3c')];_0x42a6be+=0x1){socket[_0x4569('0x71')]('userMailQueue:save',{'UserId':Number(_0x12c975[_0x4569('0x56')][_0x4569('0x73')][_0x42a6be]),'MailQueueId':Number(_0x12c975[_0x4569('0x4c')]['id'])});}return _0x33e4bc;});}})[_0x4569('0x28')](respondWithResult(_0x32f7fa,null))[_0x4569('0x4a')](handleError(_0x32f7fa,null));};exports['removeAgents']=function(_0x414f17,_0x29c9a3,_0x17f6b0){return db[_0x4569('0x32')][_0x4569('0x53')]({'where':{'id':_0x414f17[_0x4569('0x4c')]['id']}})[_0x4569('0x28')](handleEntityNotFound(_0x29c9a3,null))[_0x4569('0x28')](function(_0x1513d0){if(_0x1513d0){return _0x1513d0[_0x4569('0x83')](_0x414f17[_0x4569('0x37')][_0x4569('0x73')])[_0x4569('0x28')](function(){if(_['isArray'](_0x414f17[_0x4569('0x37')][_0x4569('0x73')])){for(var _0x4a8f2d=0x0;_0x4a8f2d<_0x414f17[_0x4569('0x37')][_0x4569('0x73')][_0x4569('0x3c')];_0x4a8f2d+=0x1){socket['emit'](_0x4569('0x87'),{'UserId':Number(_0x414f17['query'][_0x4569('0x73')][_0x4a8f2d]),'MailQueueId':Number(_0x414f17[_0x4569('0x4c')]['id'])});}}else{socket[_0x4569('0x71')](_0x4569('0x87'),{'UserId':Number(_0x414f17[_0x4569('0x37')][_0x4569('0x73')]),'MailQueueId':Number(_0x414f17[_0x4569('0x4c')]['id'])});}});}})[_0x4569('0x28')](respondWithStatusCode(_0x29c9a3,null))[_0x4569('0x4a')](handleError(_0x29c9a3,null));};exports['getAgents']=function(_0xf7c29b,_0x527e44,_0x4dafad){var _0x4b8b0a={};var _0x5f4839={};var _0x473b70;var _0x30c679;return db[_0x4569('0x32')][_0x4569('0x59')]({'where':{'id':_0xf7c29b[_0x4569('0x4c')]['id']}})[_0x4569('0x28')](handleEntityNotFound(_0x527e44,null))['then'](function(_0x1e750e){if(_0x1e750e){_0x473b70=_0x1e750e;_0x5f4839[_0x4569('0x3a')]=_[_0x4569('0x38')](db[_0x4569('0x67')][_0x4569('0x33')]);_0x5f4839[_0x4569('0x37')]=_[_0x4569('0x38')](_0xf7c29b[_0x4569('0x37')]);_0x5f4839[_0x4569('0x40')]=_['intersection'](_0x5f4839['model'],_0x5f4839[_0x4569('0x37')]);_0x4b8b0a['attributes']=_['intersection'](_0x5f4839['model'],qs[_0x4569('0x4d')](_0xf7c29b[_0x4569('0x37')][_0x4569('0x4d')]));_0x4b8b0a[_0x4569('0x3b')]=_0x4b8b0a[_0x4569('0x3b')][_0x4569('0x3c')]?_0x4b8b0a['attributes']:_0x5f4839[_0x4569('0x3a')];_0x4b8b0a[_0x4569('0x66')]=qs[_0x4569('0x3f')](_0xf7c29b[_0x4569('0x37')][_0x4569('0x3f')]);_0x4b8b0a[_0x4569('0x43')]=qs[_0x4569('0x40')](_['pick'](_0xf7c29b[_0x4569('0x37')],_0x5f4839['filters']));if(_0xf7c29b['query'][_0x4569('0x42')]){_0x4b8b0a[_0x4569('0x43')]=_[_0x4569('0x44')](_0x4b8b0a['where'],{'$or':_['map'](_0x4b8b0a[_0x4569('0x3b')],function(_0x2b2710){var _0x19894f={};_0x19894f[_0x2b2710]={'$like':'%'+_0xf7c29b[_0x4569('0x37')][_0x4569('0x42')]+'%'};return _0x19894f;})});}_0x4b8b0a=_[_0x4569('0x44')]({},_0x4b8b0a,_0xf7c29b['options']);return _0x473b70[_0x4569('0x88')](_0x4b8b0a);}})[_0x4569('0x28')](function(_0x331269){if(_0x331269){_0x30c679=_0x331269['length'];if(!_0xf7c29b[_0x4569('0x37')]['hasOwnProperty'](_0x4569('0x3e'))){_0x4b8b0a[_0x4569('0x22')]=qs['limit'](_0xf7c29b[_0x4569('0x37')][_0x4569('0x22')]);_0x4b8b0a[_0x4569('0x1f')]=qs['offset'](_0xf7c29b[_0x4569('0x37')][_0x4569('0x1f')]);}return _0x473b70[_0x4569('0x88')](_0x4b8b0a);}})[_0x4569('0x28')](function(_0x5e13f6){if(_0x5e13f6){return _0x5e13f6?{'count':_0x30c679,'rows':_0x5e13f6}:null;}})[_0x4569('0x28')](respondWithResult(_0x527e44,null))[_0x4569('0x4a')](handleError(_0x527e44,null));};
\ No newline at end of file
index 28367c5..08734b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4693=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue'];(function(_0x499483,_0x272797){var _0x22aa79=function(_0x1e596d){while(--_0x1e596d){_0x499483['push'](_0x499483['shift']());}};_0x22aa79(++_0x272797);}(_0x4693,0x126));var _0x3469=function(_0x119d66,_0x18ebe3){_0x119d66=_0x119d66-0x0;var _0x2c8831=_0x4693[_0x119d66];return _0x2c8831;};'use strict';var EventEmitter=require(_0x3469('0x0'));var MailQueue=require(_0x3469('0x1'))['db'][_0x3469('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x3469('0x3')](0x0);var events={'afterCreate':_0x3469('0x4'),'afterUpdate':_0x3469('0x5'),'afterDestroy':_0x3469('0x6')};function emitEvent(_0x119d9e){return function(_0x299108,_0x465214,_0xb5aa59){MailQueueEvents[_0x3469('0x7')](_0x119d9e+':'+_0x299108['id'],_0x299108);MailQueueEvents[_0x3469('0x7')](_0x119d9e,_0x299108);_0xb5aa59(null);};}for(var e in events){if(events[_0x3469('0x8')](e)){var event=events[e];MailQueue[_0x3469('0x9')](e,emitEvent(event));}}module[_0x3469('0xa')]=MailQueueEvents;
\ No newline at end of file
+var _0xc1f7=['MailQueue','setMaxListeners','save','update','remove','emit','exports','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc1f7,0x187));var _0x7c1f=function(_0x5a201b,_0x23582d){_0x5a201b=_0x5a201b-0x0;var _0x42f4e0=_0xc1f7[_0x5a201b];return _0x42f4e0;};'use strict';var EventEmitter=require(_0x7c1f('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x7c1f('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x7c1f('0x2')](0x0);var events={'afterCreate':_0x7c1f('0x3'),'afterUpdate':_0x7c1f('0x4'),'afterDestroy':_0x7c1f('0x5')};function emitEvent(_0x3a8108){return function(_0x5145d0,_0x5738b6,_0x57a01b){MailQueueEvents[_0x7c1f('0x6')](_0x3a8108+':'+_0x5145d0['id'],_0x5145d0);MailQueueEvents[_0x7c1f('0x6')](_0x3a8108,_0x5145d0);_0x57a01b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0x7c1f('0x7')]=MailQueueEvents;
\ No newline at end of file
index 095fe43..208ca47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e29=['bluebird','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','util','../../config/logger','moment'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x2e29,0x14c));var _0x92e2=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x2e29[_0x525c7b];return _0x27b33e;};'use strict';var _=require(_0x92e2('0x0'));var util=require(_0x92e2('0x1'));var logger=require(_0x92e2('0x2'))('api');var moment=require(_0x92e2('0x3'));var BPromise=require(_0x92e2('0x4'));var rp=require(_0x92e2('0x5'));var fs=require('fs');var path=require(_0x92e2('0x6'));var rimraf=require(_0x92e2('0x7'));var config=require(_0x92e2('0x8'));var attributes=require(_0x92e2('0x9'));module[_0x92e2('0xa')]=function(_0x48d7ec,_0x2917f3){return _0x48d7ec[_0x92e2('0xb')](_0x92e2('0xc'),attributes,{'tableName':_0x92e2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0c4=['moment','bluebird','request-promise','path','rimraf','./mailQueue.attributes','define','MailQueue','mail_queues','api'];(function(_0x413b4d,_0xa3459c){var _0x8b810a=function(_0x22d441){while(--_0x22d441){_0x413b4d['push'](_0x413b4d['shift']());}};_0x8b810a(++_0xa3459c);}(_0xe0c4,0x117));var _0x4e0c=function(_0x46de08,_0x350a03){_0x46de08=_0x46de08-0x0;var _0x11dcff=_0xe0c4[_0x46de08];return _0x11dcff;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x4e0c('0x0'));var moment=require(_0x4e0c('0x1'));var BPromise=require(_0x4e0c('0x2'));var rp=require(_0x4e0c('0x3'));var fs=require('fs');var path=require(_0x4e0c('0x4'));var rimraf=require(_0x4e0c('0x5'));var config=require('../../config/environment');var attributes=require(_0x4e0c('0x6'));module['exports']=function(_0x33c139,_0xf2e0cc){return _0x33c139[_0x4e0c('0x7')](_0x4e0c('0x8'),attributes,{'tableName':_0x4e0c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 892cba8..30ecc98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf60a=['register','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailQueue','MailQueue','findAll','options','raw','attributes','limit','include','map','model','ShowMailQueue','find','where','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xf60a,0x166));var _0xaf60=function(_0x52c618,_0x570691){_0x52c618=_0x52c618-0x0;var _0x33822d=_0xf60a[_0x52c618];return _0x33822d;};'use strict';var _=require('lodash');var util=require(_0xaf60('0x0'));var moment=require(_0xaf60('0x1'));var BPromise=require(_0xaf60('0x2'));var rs=require(_0xaf60('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaf60('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xaf60('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xaf60('0x6'));var client=jayson[_0xaf60('0x7')][_0xaf60('0x8')]({'port':0x232a});config[_0xaf60('0x9')]=_[_0xaf60('0xa')](config[_0xaf60('0x9')],{'host':_0xaf60('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaf60('0x9')]));require('./mailQueue.socket')[_0xaf60('0xc')](socket);function respondWithRpcPromise(_0x34d912,_0x57e139,_0xfc0f30){return new BPromise(function(_0x57ea41,_0x5d7929){return client['request'](_0x34d912,_0xfc0f30)[_0xaf60('0xd')](function(_0x8181ab){logger[_0xaf60('0xe')](_0xaf60('0xf'),_0x57e139,_0xaf60('0x10'));logger[_0xaf60('0x11')](_0xaf60('0x12'),_0x57e139,_0xaf60('0x10'),JSON[_0xaf60('0x13')](_0x8181ab));if(_0x8181ab[_0xaf60('0x14')]){if(_0x8181ab['error'][_0xaf60('0x15')]===0x1f4){logger[_0xaf60('0x14')](_0xaf60('0xf'),_0x57e139,_0x8181ab['error']['message']);return _0x5d7929(_0x8181ab[_0xaf60('0x14')][_0xaf60('0x16')]);}logger[_0xaf60('0x14')](_0xaf60('0xf'),_0x57e139,_0x8181ab[_0xaf60('0x14')][_0xaf60('0x16')]);return _0x57ea41(_0x8181ab[_0xaf60('0x14')][_0xaf60('0x16')]);}else{logger[_0xaf60('0xe')](_0xaf60('0xf'),_0x57e139,_0xaf60('0x10'));_0x57ea41(_0x8181ab['result'][_0xaf60('0x16')]);}})[_0xaf60('0x17')](function(_0x563761){logger[_0xaf60('0x14')](_0xaf60('0xf'),_0x57e139,_0x563761);_0x5d7929(_0x563761);});});}exports[_0xaf60('0x18')]=function(_0x25d8c4){var _0x1af8e0=this;return new Promise(function(_0x50f660,_0x2b61cb){return db[_0xaf60('0x19')][_0xaf60('0x1a')]({'raw':_0x25d8c4['options']?_0x25d8c4[_0xaf60('0x1b')][_0xaf60('0x1c')]===undefined?!![]:![]:!![],'where':_0x25d8c4['options']?_0x25d8c4['options']['where']||null:null,'attributes':_0x25d8c4['options']?_0x25d8c4['options'][_0xaf60('0x1d')]||null:null,'limit':_0x25d8c4['options']?_0x25d8c4[_0xaf60('0x1b')][_0xaf60('0x1e')]||null:null,'include':_0x25d8c4[_0xaf60('0x1b')]?_0x25d8c4[_0xaf60('0x1b')][_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x25d8c4[_0xaf60('0x1b')]['include'],function(_0x292469){return{'model':db[_0x292469[_0xaf60('0x21')]],'as':_0x292469['as'],'attributes':_0x292469[_0xaf60('0x1d')],'include':_0x292469['include']?_[_0xaf60('0x20')](_0x292469[_0xaf60('0x1f')],function(_0x2975a0){return{'model':db[_0x2975a0[_0xaf60('0x21')]],'as':_0x2975a0['as'],'attributes':_0x2975a0[_0xaf60('0x1d')],'include':_0x2975a0[_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x2975a0[_0xaf60('0x1f')],function(_0x2c0863){return{'model':db[_0x2c0863['model']],'as':_0x2c0863['as'],'attributes':_0x2c0863['attributes']};}):[]};}):[]};}):[]:[]})[_0xaf60('0xd')](function(_0x5a8db0){logger[_0xaf60('0xe')]('GetMailQueue',_0x25d8c4);logger[_0xaf60('0x11')](_0xaf60('0x18'),_0x25d8c4,JSON['stringify'](_0x5a8db0));_0x50f660(_0x5a8db0);})[_0xaf60('0x17')](function(_0x136340){logger[_0xaf60('0x14')](_0xaf60('0x18'),_0x136340[_0xaf60('0x16')],_0x25d8c4);_0x2b61cb(_0x1af8e0[_0xaf60('0x14')](0x1f4,_0x136340[_0xaf60('0x16')]));});});};exports[_0xaf60('0x22')]=function(_0x4d91a1){var _0x4aba0d=this;return new Promise(function(_0x4dea58,_0x464b6f){return db[_0xaf60('0x19')][_0xaf60('0x23')]({'raw':_0x4d91a1['options']?_0x4d91a1[_0xaf60('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4d91a1[_0xaf60('0x1b')]?_0x4d91a1['options'][_0xaf60('0x24')]||null:null,'attributes':_0x4d91a1[_0xaf60('0x1b')]?_0x4d91a1[_0xaf60('0x1b')][_0xaf60('0x1d')]||null:null,'include':_0x4d91a1[_0xaf60('0x1b')]?_0x4d91a1[_0xaf60('0x1b')]['include']?_[_0xaf60('0x20')](_0x4d91a1[_0xaf60('0x1b')][_0xaf60('0x1f')],function(_0x40d0a5){return{'model':db[_0x40d0a5[_0xaf60('0x21')]],'as':_0x40d0a5['as'],'attributes':_0x40d0a5[_0xaf60('0x1d')],'include':_0x40d0a5[_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x40d0a5[_0xaf60('0x1f')],function(_0x31e5ae){return{'model':db[_0x31e5ae[_0xaf60('0x21')]],'as':_0x31e5ae['as'],'attributes':_0x31e5ae[_0xaf60('0x1d')],'include':_0x31e5ae[_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x31e5ae[_0xaf60('0x1f')],function(_0x390c0a){return{'model':db[_0x390c0a['model']],'as':_0x390c0a['as'],'attributes':_0x390c0a['attributes']};}):[]};}):[]};}):[]:[]})[_0xaf60('0xd')](function(_0x3498eb){logger['info'](_0xaf60('0x22'),_0x4d91a1);logger[_0xaf60('0x11')](_0xaf60('0x22'),_0x4d91a1,JSON[_0xaf60('0x13')](_0x3498eb));_0x4dea58(_0x3498eb);})[_0xaf60('0x17')](function(_0x538ac7){logger[_0xaf60('0x14')](_0xaf60('0x22'),_0x538ac7[_0xaf60('0x16')],_0x4d91a1);_0x464b6f(_0x4aba0d[_0xaf60('0x14')](0x1f4,_0x538ac7['message']));});});};
\ No newline at end of file
+var _0xaa9c=['code','message','catch','GetMailQueue','MailQueue','options','limit','include','model','attributes','map','ShowMailQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','defaults','redis','localhost','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1c4d53,_0x40522d){var _0x377bc2=function(_0x5aecae){while(--_0x5aecae){_0x1c4d53['push'](_0x1c4d53['shift']());}};_0x377bc2(++_0x40522d);}(_0xaa9c,0x1e2));var _0xcaa9=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xaa9c[_0x25e7cb];return _0x375d92;};'use strict';var _=require(_0xcaa9('0x0'));var util=require(_0xcaa9('0x1'));var moment=require(_0xcaa9('0x2'));var BPromise=require(_0xcaa9('0x3'));var rs=require(_0xcaa9('0x4'));var fs=require('fs');var Redis=require(_0xcaa9('0x5'));var db=require(_0xcaa9('0x6'))['db'];var utils=require(_0xcaa9('0x7'));var logger=require(_0xcaa9('0x8'))(_0xcaa9('0x9'));var config=require(_0xcaa9('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xcaa9('0xb')](config[_0xcaa9('0xc')],{'host':_0xcaa9('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcaa9('0xc')]));require(_0xcaa9('0xe'))[_0xcaa9('0xf')](socket);function respondWithRpcPromise(_0x5a3e8a,_0x1e14f9,_0x35615a){return new BPromise(function(_0x4302a7,_0xe3017f){return client[_0xcaa9('0x10')](_0x5a3e8a,_0x35615a)[_0xcaa9('0x11')](function(_0x183d78){logger[_0xcaa9('0x12')](_0xcaa9('0x13'),_0x1e14f9,_0xcaa9('0x14'));logger[_0xcaa9('0x15')](_0xcaa9('0x16'),_0x1e14f9,_0xcaa9('0x14'),JSON[_0xcaa9('0x17')](_0x183d78));if(_0x183d78[_0xcaa9('0x18')]){if(_0x183d78[_0xcaa9('0x18')][_0xcaa9('0x19')]===0x1f4){logger[_0xcaa9('0x18')]('MailQueue,\x20%s,\x20%s',_0x1e14f9,_0x183d78['error'][_0xcaa9('0x1a')]);return _0xe3017f(_0x183d78[_0xcaa9('0x18')][_0xcaa9('0x1a')]);}logger[_0xcaa9('0x18')](_0xcaa9('0x13'),_0x1e14f9,_0x183d78[_0xcaa9('0x18')][_0xcaa9('0x1a')]);return _0x4302a7(_0x183d78[_0xcaa9('0x18')][_0xcaa9('0x1a')]);}else{logger[_0xcaa9('0x12')]('MailQueue,\x20%s,\x20%s',_0x1e14f9,_0xcaa9('0x14'));_0x4302a7(_0x183d78['result'][_0xcaa9('0x1a')]);}})[_0xcaa9('0x1b')](function(_0x5b1426){logger['error'](_0xcaa9('0x13'),_0x1e14f9,_0x5b1426);_0xe3017f(_0x5b1426);});});}exports[_0xcaa9('0x1c')]=function(_0x5e4c9a){var _0x33d892=this;return new Promise(function(_0x4eaaa3,_0x352ca2){return db[_0xcaa9('0x1d')]['findAll']({'raw':_0x5e4c9a[_0xcaa9('0x1e')]?_0x5e4c9a[_0xcaa9('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x5e4c9a[_0xcaa9('0x1e')]?_0x5e4c9a['options']['where']||null:null,'attributes':_0x5e4c9a[_0xcaa9('0x1e')]?_0x5e4c9a['options']['attributes']||null:null,'limit':_0x5e4c9a[_0xcaa9('0x1e')]?_0x5e4c9a[_0xcaa9('0x1e')][_0xcaa9('0x1f')]||null:null,'include':_0x5e4c9a[_0xcaa9('0x1e')]?_0x5e4c9a['options'][_0xcaa9('0x20')]?_['map'](_0x5e4c9a[_0xcaa9('0x1e')][_0xcaa9('0x20')],function(_0x15e6ed){return{'model':db[_0x15e6ed[_0xcaa9('0x21')]],'as':_0x15e6ed['as'],'attributes':_0x15e6ed[_0xcaa9('0x22')],'include':_0x15e6ed['include']?_['map'](_0x15e6ed['include'],function(_0x34c88e){return{'model':db[_0x34c88e[_0xcaa9('0x21')]],'as':_0x34c88e['as'],'attributes':_0x34c88e[_0xcaa9('0x22')],'include':_0x34c88e[_0xcaa9('0x20')]?_[_0xcaa9('0x23')](_0x34c88e[_0xcaa9('0x20')],function(_0x13be38){return{'model':db[_0x13be38[_0xcaa9('0x21')]],'as':_0x13be38['as'],'attributes':_0x13be38[_0xcaa9('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf817fe){logger['info'](_0xcaa9('0x1c'),_0x5e4c9a);logger[_0xcaa9('0x15')](_0xcaa9('0x1c'),_0x5e4c9a,JSON['stringify'](_0xf817fe));_0x4eaaa3(_0xf817fe);})[_0xcaa9('0x1b')](function(_0xdc5c04){logger['error'](_0xcaa9('0x1c'),_0xdc5c04['message'],_0x5e4c9a);_0x352ca2(_0x33d892[_0xcaa9('0x18')](0x1f4,_0xdc5c04[_0xcaa9('0x1a')]));});});};exports[_0xcaa9('0x24')]=function(_0x355601){var _0x1bb829=this;return new Promise(function(_0x540615,_0x571f0c){return db[_0xcaa9('0x1d')][_0xcaa9('0x25')]({'raw':_0x355601[_0xcaa9('0x1e')]?_0x355601[_0xcaa9('0x1e')][_0xcaa9('0x26')]===undefined?!![]:![]:!![],'where':_0x355601[_0xcaa9('0x1e')]?_0x355601[_0xcaa9('0x1e')]['where']||null:null,'attributes':_0x355601[_0xcaa9('0x1e')]?_0x355601[_0xcaa9('0x1e')][_0xcaa9('0x22')]||null:null,'include':_0x355601[_0xcaa9('0x1e')]?_0x355601[_0xcaa9('0x1e')][_0xcaa9('0x20')]?_[_0xcaa9('0x23')](_0x355601[_0xcaa9('0x1e')][_0xcaa9('0x20')],function(_0x29e7aa){return{'model':db[_0x29e7aa[_0xcaa9('0x21')]],'as':_0x29e7aa['as'],'attributes':_0x29e7aa['attributes'],'include':_0x29e7aa[_0xcaa9('0x20')]?_['map'](_0x29e7aa['include'],function(_0x2586e1){return{'model':db[_0x2586e1[_0xcaa9('0x21')]],'as':_0x2586e1['as'],'attributes':_0x2586e1[_0xcaa9('0x22')],'include':_0x2586e1['include']?_['map'](_0x2586e1[_0xcaa9('0x20')],function(_0x8aa5d3){return{'model':db[_0x8aa5d3[_0xcaa9('0x21')]],'as':_0x8aa5d3['as'],'attributes':_0x8aa5d3['attributes']};}):[]};}):[]};}):[]:[]})[_0xcaa9('0x11')](function(_0x460d4f){logger['info'](_0xcaa9('0x24'),_0x355601);logger[_0xcaa9('0x15')](_0xcaa9('0x24'),_0x355601,JSON[_0xcaa9('0x17')](_0x460d4f));_0x540615(_0x460d4f);})['catch'](function(_0x4ade8b){logger[_0xcaa9('0x18')](_0xcaa9('0x24'),_0x4ade8b[_0xcaa9('0x1a')],_0x355601);_0x571f0c(_0x1bb829['error'](0x1f4,_0x4ade8b[_0xcaa9('0x1a')]));});});};
\ No newline at end of file
index 8093929..80dea55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x672d=['mailQueue:','./mailQueue.events','save','remove','update','emit','register','length'];(function(_0x1ca9da,_0x41831d){var _0x3e1ec8=function(_0x413c4a){while(--_0x413c4a){_0x1ca9da['push'](_0x1ca9da['shift']());}};_0x3e1ec8(++_0x41831d);}(_0x672d,0x191));var _0xd672=function(_0x5969a8,_0x9d9c92){_0x5969a8=_0x5969a8-0x0;var _0x1c5c75=_0x672d[_0x5969a8];return _0x1c5c75;};'use strict';var MailQueueEvents=require(_0xd672('0x0'));var events=[_0xd672('0x1'),_0xd672('0x2'),_0xd672('0x3')];function createListener(_0x26373e,_0x4ed5a8){return function(_0x132bd8){_0x4ed5a8[_0xd672('0x4')](_0x26373e,_0x132bd8);};}function removeListener(_0x53490d,_0x3092da){return function(){MailQueueEvents['removeListener'](_0x53490d,_0x3092da);};}exports[_0xd672('0x5')]=function(_0x5a22ef){for(var _0xe1de7b=0x0,_0x5152eb=events[_0xd672('0x6')];_0xe1de7b<_0x5152eb;_0xe1de7b++){var _0x5307a8=events[_0xe1de7b];var _0x50545d=createListener(_0xd672('0x7')+_0x5307a8,_0x5a22ef);MailQueueEvents['on'](_0x5307a8,_0x50545d);}};
\ No newline at end of file
+var _0xcd6e=['update','removeListener','register','length','mailQueue:','./mailQueue.events','save'];(function(_0x56ad5b,_0x565ab9){var _0x3c0dbd=function(_0x2d4a6b){while(--_0x2d4a6b){_0x56ad5b['push'](_0x56ad5b['shift']());}};_0x3c0dbd(++_0x565ab9);}(_0xcd6e,0x11d));var _0xecd6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcd6e[_0x3dd15e];return _0x231fd0;};'use strict';var MailQueueEvents=require(_0xecd6('0x0'));var events=[_0xecd6('0x1'),'remove',_0xecd6('0x2')];function createListener(_0x4aeab0,_0x3883c4){return function(_0x5a9877){_0x3883c4['emit'](_0x4aeab0,_0x5a9877);};}function removeListener(_0x3382c0,_0xa99a73){return function(){MailQueueEvents[_0xecd6('0x3')](_0x3382c0,_0xa99a73);};}exports[_0xecd6('0x4')]=function(_0x1e7f1a){for(var _0x25463a=0x0,_0x2f0d84=events[_0xecd6('0x5')];_0x25463a<_0x2f0d84;_0x25463a++){var _0x1708b2=events[_0x25463a];var _0xbd63e5=createListener(_0xecd6('0x6')+_0x1708b2,_0x1e7f1a);MailQueueEvents['on'](_0x1708b2,_0xbd63e5);}};
\ No newline at end of file
index 72b0ff1..b606413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec5c=['show','post','create','put','delete','exports','multer','connect-timeout','express','fs-extra','../../components/interaction/service','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x1e6db3,_0x5643ac){var _0x1de886=function(_0x351318){while(--_0x351318){_0x1e6db3['push'](_0x1e6db3['shift']());}};_0x1de886(++_0x5643ac);}(_0xec5c,0x138));var _0xcec5=function(_0x479160,_0x3ab560){_0x479160=_0x479160-0x0;var _0x47ac6d=_0xec5c[_0x479160];return _0x47ac6d;};'use strict';var multer=require(_0xcec5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcec5('0x1'));var express=require(_0xcec5('0x2'));var router=express['Router']();var fs_extra=require(_0xcec5('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xcec5('0x4'));var config=require('../../config/environment');var controller=require(_0xcec5('0x5'));router[_0xcec5('0x6')]('/',auth[_0xcec5('0x7')](),controller[_0xcec5('0x8')]);router[_0xcec5('0x6')](_0xcec5('0x9'),auth[_0xcec5('0x7')](),controller[_0xcec5('0xa')]);router[_0xcec5('0x6')](_0xcec5('0xb'),auth['isAuthenticated'](),controller[_0xcec5('0xc')]);router[_0xcec5('0xd')]('/',auth[_0xcec5('0x7')](),controller[_0xcec5('0xe')]);router[_0xcec5('0xf')](_0xcec5('0xb'),auth[_0xcec5('0x7')](),controller['update']);router[_0xcec5('0x10')](_0xcec5('0xb'),auth[_0xcec5('0x7')](),controller['destroy']);module[_0xcec5('0x11')]=router;
\ No newline at end of file
+var _0xcebd=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','put','delete','exports','multer','util','connect-timeout'];(function(_0x3d2ca1,_0x39c06d){var _0x1127bb=function(_0x5ca739){while(--_0x5ca739){_0x3d2ca1['push'](_0x3d2ca1['shift']());}};_0x1127bb(++_0x39c06d);}(_0xcebd,0xf4));var _0xdceb=function(_0x2ab886,_0x3c65df){_0x2ab886=_0x2ab886-0x0;var _0x5ebec8=_0xcebd[_0x2ab886];return _0x5ebec8;};'use strict';var multer=require(_0xdceb('0x0'));var util=require(_0xdceb('0x1'));var path=require('path');var timeout=require(_0xdceb('0x2'));var express=require(_0xdceb('0x3'));var router=express[_0xdceb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xdceb('0x5'));var interaction=require(_0xdceb('0x6'));var config=require(_0xdceb('0x7'));var controller=require(_0xdceb('0x8'));router['get']('/',auth[_0xdceb('0x9')](),controller['index']);router[_0xdceb('0xa')](_0xdceb('0xb'),auth[_0xdceb('0x9')](),controller[_0xdceb('0xc')]);router[_0xdceb('0xa')](_0xdceb('0xd'),auth[_0xdceb('0x9')](),controller[_0xdceb('0xe')]);router[_0xdceb('0xf')]('/',auth[_0xdceb('0x9')](),controller['create']);router[_0xdceb('0x10')](_0xdceb('0xd'),auth[_0xdceb('0x9')](),controller['update']);router[_0xdceb('0x11')](_0xdceb('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xdceb('0x12')]=router;
\ No newline at end of file
index 0dbdee6..7dbc241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x571c=['exports','STRING','DATE'];(function(_0x34df16,_0x29537f){var _0x203bca=function(_0x5ad128){while(--_0x5ad128){_0x34df16['push'](_0x34df16['shift']());}};_0x203bca(++_0x29537f);}(_0x571c,0xb4));var _0xc571=function(_0x4d9484,_0x2a53c1){_0x4d9484=_0x4d9484-0x0;var _0x2ac453=_0x571c[_0x4d9484];return _0x2ac453;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xc571('0x0')]={'uniqueid':{'type':Sequelize[_0xc571('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xc571('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xc571('0x2')]},'exitAt':{'type':Sequelize[_0xc571('0x2')]},'reason':{'type':Sequelize[_0xc571('0x1')]}};
\ No newline at end of file
+var _0x0bec=['DATE','moment','sequelize','exports','STRING'];(function(_0x408cb6,_0x24ed7d){var _0x432758=function(_0x16e090){while(--_0x16e090){_0x408cb6['push'](_0x408cb6['shift']());}};_0x432758(++_0x24ed7d);}(_0x0bec,0x173));var _0xc0be=function(_0x355b66,_0x3b7cea){_0x355b66=_0x355b66-0x0;var _0x45246d=_0x0bec[_0x355b66];return _0x45246d;};'use strict';var moment=require(_0xc0be('0x0'));var Sequelize=require(_0xc0be('0x1'));module[_0xc0be('0x2')]={'uniqueid':{'type':Sequelize[_0xc0be('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xc0be('0x3')]},'joinAt':{'type':Sequelize[_0xc0be('0x4')]},'leaveAt':{'type':Sequelize[_0xc0be('0x4')]},'acceptAt':{'type':Sequelize[_0xc0be('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6bf08ca..c0ded64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b3=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','length','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x52d6c9,_0xd1f1f){var _0x3bb03d=function(_0x3cd4e8){while(--_0x3cd4e8){_0x52d6c9['push'](_0x52d6c9['shift']());}};_0x3bb03d(++_0xd1f1f);}(_0x68b3,0x1d8));var _0x368b=function(_0x2c4d7a,_0x483544){_0x2c4d7a=_0x2c4d7a-0x0;var _0xb113ba=_0x68b3[_0x2c4d7a];return _0xb113ba;};'use strict';var emlformat=require(_0x368b('0x0'));var rimraf=require(_0x368b('0x1'));var zipdir=require(_0x368b('0x2'));var jsonpatch=require(_0x368b('0x3'));var rp=require(_0x368b('0x4'));var moment=require('moment');var BPromise=require(_0x368b('0x5'));var Mustache=require(_0x368b('0x6'));var util=require(_0x368b('0x7'));var path=require(_0x368b('0x8'));var sox=require('sox');var csv=require(_0x368b('0x9'));var ejs=require(_0x368b('0xa'));var fs=require('fs');var fs_extra=require(_0x368b('0xb'));var _=require(_0x368b('0xc'));var squel=require(_0x368b('0xd'));var crypto=require(_0x368b('0xe'));var jsforce=require(_0x368b('0xf'));var deskjs=require(_0x368b('0x10'));var toCsv=require(_0x368b('0x9'));var querystring=require(_0x368b('0x11'));var Papa=require(_0x368b('0x12'));var Redis=require('ioredis');var authService=require(_0x368b('0x13'));var qs=require(_0x368b('0x14'));var as=require(_0x368b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x368b('0x16'))(_0x368b('0x17'));var utils=require(_0x368b('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x368b('0x19'));var db=require(_0x368b('0x1a'))['db'];function respondWithStatusCode(_0x514dc7,_0x109a90){_0x109a90=_0x109a90||0xcc;return function(_0x250697){if(_0x250697){return _0x514dc7[_0x368b('0x1b')](_0x109a90);}return _0x514dc7[_0x368b('0x1c')](_0x109a90)[_0x368b('0x1d')]();};}function respondWithResult(_0x4fffe5,_0x2b326c){_0x2b326c=_0x2b326c||0xc8;return function(_0x40faa0){if(_0x40faa0){return _0x4fffe5['status'](_0x2b326c)[_0x368b('0x1e')](_0x40faa0);}};}function respondWithFilteredResult(_0x2aabb9,_0x30c245){return function(_0x515350){if(_0x515350){var _0x220cd5=typeof _0x30c245[_0x368b('0x1f')]===_0x368b('0x20')&&typeof _0x30c245['limit']===_0x368b('0x20');var _0x1b9e65=_0x515350[_0x368b('0x21')];var _0x540f57=_0x220cd5?0x0:_0x30c245['offset'];var _0x3e2e9f=_0x220cd5?_0x515350[_0x368b('0x21')]:_0x30c245[_0x368b('0x1f')]+_0x30c245[_0x368b('0x22')];var _0x1a4f20;if(_0x3e2e9f>=_0x1b9e65){_0x3e2e9f=_0x1b9e65;_0x1a4f20=0xc8;}else{_0x1a4f20=0xce;}_0x2aabb9['status'](_0x1a4f20);return _0x2aabb9[_0x368b('0x23')](_0x368b('0x24'),_0x540f57+'-'+_0x3e2e9f+'/'+_0x1b9e65)[_0x368b('0x1e')](_0x515350);}return null;};}function patchUpdates(_0x1c927f){return function(_0x23da8f){try{jsonpatch[_0x368b('0x25')](_0x23da8f,_0x1c927f,!![]);}catch(_0x397185){return BPromise[_0x368b('0x26')](_0x397185);}return _0x23da8f['save']();};}function saveUpdates(_0x13e750,_0x2f08d9){return function(_0x18869a){if(_0x18869a){return _0x18869a[_0x368b('0x27')](_0x13e750)[_0x368b('0x28')](function(_0x4c2fca){return _0x4c2fca;});}return null;};}function removeEntity(_0x286641,_0x1ca429){return function(_0x3a22bd){if(_0x3a22bd){return _0x3a22bd[_0x368b('0x29')]()[_0x368b('0x28')](function(){_0x286641[_0x368b('0x1c')](0xcc)[_0x368b('0x1d')]();});}};}function handleEntityNotFound(_0x11ea2d,_0x3123c1){return function(_0x3f7f89){if(!_0x3f7f89){_0x11ea2d[_0x368b('0x1b')](0x194);}return _0x3f7f89;};}function handleError(_0x344d8a,_0xceec4b){_0xceec4b=_0xceec4b||0x1f4;return function(_0x376e61){logger[_0x368b('0x2a')](_0x376e61[_0x368b('0x2b')]);if(_0x376e61[_0x368b('0x2c')]){delete _0x376e61[_0x368b('0x2c')];}_0x344d8a[_0x368b('0x1c')](_0xceec4b)[_0x368b('0x2d')](_0x376e61);};}exports[_0x368b('0x2e')]=function(_0xc12627,_0x107d2f){var _0x3c80b5={},_0x5db0b4={},_0x4af77a={'count':0x0,'rows':[]};var _0x381324=_[_0x368b('0x2f')](db[_0x368b('0x30')][_0x368b('0x31')],function(_0x5d6ebf){return{'name':_0x5d6ebf[_0x368b('0x32')],'type':_0x5d6ebf[_0x368b('0x33')][_0x368b('0x34')]};});_0x5db0b4[_0x368b('0x35')]=_[_0x368b('0x2f')](_0x381324,'name');_0x5db0b4[_0x368b('0x36')]=_[_0x368b('0x37')](_0xc12627[_0x368b('0x36')]);_0x5db0b4[_0x368b('0x38')]=_['intersection'](_0x5db0b4['model'],_0x5db0b4['query']);_0x3c80b5[_0x368b('0x39')]=_[_0x368b('0x3a')](_0x5db0b4[_0x368b('0x35')],qs[_0x368b('0x3b')](_0xc12627[_0x368b('0x36')]['fields']));_0x3c80b5[_0x368b('0x39')]=_0x3c80b5[_0x368b('0x39')]['length']?_0x3c80b5[_0x368b('0x39')]:_0x5db0b4[_0x368b('0x35')];if(!_0xc12627['query'][_0x368b('0x3c')](_0x368b('0x3d'))){_0x3c80b5['limit']=qs[_0x368b('0x22')](_0xc12627['query']['limit']);_0x3c80b5['offset']=qs[_0x368b('0x1f')](_0xc12627[_0x368b('0x36')][_0x368b('0x1f')]);}_0x3c80b5[_0x368b('0x3e')]=qs[_0x368b('0x3f')](_0xc12627[_0x368b('0x36')][_0x368b('0x3f')]);_0x3c80b5[_0x368b('0x40')]=qs[_0x368b('0x38')](_[_0x368b('0x41')](_0xc12627['query'],_0x5db0b4[_0x368b('0x38')]),_0x381324);if(_0xc12627[_0x368b('0x36')]['filter']){_0x3c80b5[_0x368b('0x40')]=_[_0x368b('0x42')](_0x3c80b5[_0x368b('0x40')],{'$or':_[_0x368b('0x2f')](_0x381324,function(_0x248b2b){if(_0x248b2b['type']!==_0x368b('0x43')){var _0x4287c6={};_0x4287c6[_0x248b2b[_0x368b('0x2c')]]={'$like':'%'+_0xc12627[_0x368b('0x36')]['filter']+'%'};return _0x4287c6;}})});}_0x3c80b5=_['merge']({},_0x3c80b5,_0xc12627[_0x368b('0x44')]);var _0x3d00f9={'where':_0x3c80b5[_0x368b('0x40')]};return db[_0x368b('0x30')][_0x368b('0x21')](_0x3d00f9)[_0x368b('0x28')](function(_0x1d990c){_0x4af77a[_0x368b('0x21')]=_0x1d990c;if(_0xc12627[_0x368b('0x36')][_0x368b('0x45')]){_0x3c80b5['include']=[{'all':!![]}];}return db[_0x368b('0x30')][_0x368b('0x46')](_0x3c80b5);})['then'](function(_0x25e713){_0x4af77a[_0x368b('0x47')]=_0x25e713;return _0x4af77a;})[_0x368b('0x28')](respondWithFilteredResult(_0x107d2f,_0x3c80b5))[_0x368b('0x48')](handleError(_0x107d2f,null));};exports['show']=function(_0x490eb6,_0x151711){var _0x4a0275={'raw':!![],'where':{'id':_0x490eb6[_0x368b('0x49')]['id']}},_0x91bb0b={};_0x91bb0b[_0x368b('0x35')]=_['keys'](db[_0x368b('0x30')][_0x368b('0x31')]);_0x91bb0b[_0x368b('0x36')]=_['keys'](_0x490eb6['query']);_0x91bb0b[_0x368b('0x38')]=_[_0x368b('0x3a')](_0x91bb0b['model'],_0x91bb0b[_0x368b('0x36')]);_0x4a0275[_0x368b('0x39')]=_[_0x368b('0x3a')](_0x91bb0b[_0x368b('0x35')],qs[_0x368b('0x3b')](_0x490eb6[_0x368b('0x36')][_0x368b('0x3b')]));_0x4a0275[_0x368b('0x39')]=_0x4a0275[_0x368b('0x39')][_0x368b('0x4a')]?_0x4a0275[_0x368b('0x39')]:_0x91bb0b[_0x368b('0x35')];if(_0x490eb6[_0x368b('0x36')]['includeAll']){_0x4a0275[_0x368b('0x4b')]=[{'all':!![]}];}_0x4a0275=_[_0x368b('0x42')]({},_0x4a0275,_0x490eb6[_0x368b('0x44')]);return db[_0x368b('0x30')][_0x368b('0x4c')](_0x4a0275)['then'](handleEntityNotFound(_0x151711,null))['then'](respondWithResult(_0x151711,null))[_0x368b('0x48')](handleError(_0x151711,null));};exports[_0x368b('0x4d')]=function(_0x1c8755,_0x5a9d70){return db[_0x368b('0x30')][_0x368b('0x4d')](_0x1c8755[_0x368b('0x4e')],{})[_0x368b('0x28')](respondWithResult(_0x5a9d70,0xc9))[_0x368b('0x48')](handleError(_0x5a9d70,null));};exports[_0x368b('0x27')]=function(_0x8f35b,_0x1174fa){if(_0x8f35b[_0x368b('0x4e')]['id']){delete _0x8f35b[_0x368b('0x4e')]['id'];}return db['MailQueueReport'][_0x368b('0x4c')]({'where':{'id':_0x8f35b['params']['id']}})[_0x368b('0x28')](handleEntityNotFound(_0x1174fa,null))['then'](saveUpdates(_0x8f35b[_0x368b('0x4e')],null))['then'](respondWithResult(_0x1174fa,null))[_0x368b('0x48')](handleError(_0x1174fa,null));};exports[_0x368b('0x29')]=function(_0x3b8a12,_0x458d9a){return db['MailQueueReport'][_0x368b('0x4c')]({'where':{'id':_0x3b8a12[_0x368b('0x49')]['id']}})[_0x368b('0x28')](handleEntityNotFound(_0x458d9a,null))[_0x368b('0x28')](removeEntity(_0x458d9a,null))[_0x368b('0x48')](handleError(_0x458d9a,null));};exports[_0x368b('0x4f')]=function(_0x3898a8,_0x15078b){return db[_0x368b('0x30')]['describe']()[_0x368b('0x28')](respondWithResult(_0x15078b,null))[_0x368b('0x48')](handleError(_0x15078b,null));};
\ No newline at end of file
+var _0x6343=['VIRTUAL','options','MailQueueReport','then','rows','catch','show','params','keys','includeAll','include','create','body','find','describe','zip-dir','fast-json-patch','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','stack','send','map','rawAttributes','fieldName','type','key','model','name','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','filter','merge'];(function(_0xf2f332,_0x299fbf){var _0x56cce3=function(_0x5f37e0){while(--_0x5f37e0){_0xf2f332['push'](_0xf2f332['shift']());}};_0x56cce3(++_0x299fbf);}(_0x6343,0x168));var _0x3634=function(_0x403d35,_0x104503){_0x403d35=_0x403d35-0x0;var _0x3b408f=_0x6343[_0x403d35];return _0x3b408f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3634('0x0'));var jsonpatch=require(_0x3634('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3634('0x2'));var path=require(_0x3634('0x3'));var sox=require('sox');var csv=require(_0x3634('0x4'));var ejs=require(_0x3634('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3634('0x6'));var squel=require(_0x3634('0x7'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3634('0x8'));var toCsv=require(_0x3634('0x4'));var querystring=require(_0x3634('0x9'));var Papa=require(_0x3634('0xa'));var Redis=require(_0x3634('0xb'));var authService=require(_0x3634('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3634('0xd'));var logger=require(_0x3634('0xe'))('api');var utils=require(_0x3634('0xf'));var config=require(_0x3634('0x10'));var licenseUtil=require(_0x3634('0x11'));var db=require(_0x3634('0x12'))['db'];function respondWithStatusCode(_0x1e6a04,_0x151c8c){_0x151c8c=_0x151c8c||0xcc;return function(_0x35ae07){if(_0x35ae07){return _0x1e6a04[_0x3634('0x13')](_0x151c8c);}return _0x1e6a04[_0x3634('0x14')](_0x151c8c)[_0x3634('0x15')]();};}function respondWithResult(_0x299e53,_0x71d09b){_0x71d09b=_0x71d09b||0xc8;return function(_0x7e4801){if(_0x7e4801){return _0x299e53[_0x3634('0x14')](_0x71d09b)['json'](_0x7e4801);}};}function respondWithFilteredResult(_0x167247,_0x48787f){return function(_0x69609d){if(_0x69609d){var _0x18285c=typeof _0x48787f[_0x3634('0x16')]===_0x3634('0x17')&&typeof _0x48787f[_0x3634('0x18')]==='undefined';var _0x3121a3=_0x69609d['count'];var _0x50350d=_0x18285c?0x0:_0x48787f[_0x3634('0x16')];var _0x4b2115=_0x18285c?_0x69609d[_0x3634('0x19')]:_0x48787f[_0x3634('0x16')]+_0x48787f[_0x3634('0x18')];var _0x5603d2;if(_0x4b2115>=_0x3121a3){_0x4b2115=_0x3121a3;_0x5603d2=0xc8;}else{_0x5603d2=0xce;}_0x167247[_0x3634('0x14')](_0x5603d2);return _0x167247[_0x3634('0x1a')]('Content-Range',_0x50350d+'-'+_0x4b2115+'/'+_0x3121a3)[_0x3634('0x1b')](_0x69609d);}return null;};}function patchUpdates(_0x506281){return function(_0x742e56){try{jsonpatch[_0x3634('0x1c')](_0x742e56,_0x506281,!![]);}catch(_0x5b77a7){return BPromise[_0x3634('0x1d')](_0x5b77a7);}return _0x742e56[_0x3634('0x1e')]();};}function saveUpdates(_0x206c8e,_0x505026){return function(_0x22b7ef){if(_0x22b7ef){return _0x22b7ef[_0x3634('0x1f')](_0x206c8e)['then'](function(_0x3936ee){return _0x3936ee;});}return null;};}function removeEntity(_0x596acb,_0x5e9188){return function(_0x3a8c41){if(_0x3a8c41){return _0x3a8c41[_0x3634('0x20')]()['then'](function(){_0x596acb[_0x3634('0x14')](0xcc)[_0x3634('0x15')]();});}};}function handleEntityNotFound(_0x17db44,_0x225ddc){return function(_0x363ca2){if(!_0x363ca2){_0x17db44[_0x3634('0x13')](0x194);}return _0x363ca2;};}function handleError(_0x38e863,_0x4762b1){_0x4762b1=_0x4762b1||0x1f4;return function(_0x22f1f1){logger['error'](_0x22f1f1[_0x3634('0x21')]);if(_0x22f1f1['name']){delete _0x22f1f1['name'];}_0x38e863['status'](_0x4762b1)[_0x3634('0x22')](_0x22f1f1);};}exports['index']=function(_0x3bf28b,_0x12b80e){var _0x49804f={},_0x55a77f={},_0x282f73={'count':0x0,'rows':[]};var _0x5bd4e0=_[_0x3634('0x23')](db['MailQueueReport'][_0x3634('0x24')],function(_0x3d7322){return{'name':_0x3d7322[_0x3634('0x25')],'type':_0x3d7322[_0x3634('0x26')][_0x3634('0x27')]};});_0x55a77f[_0x3634('0x28')]=_[_0x3634('0x23')](_0x5bd4e0,_0x3634('0x29'));_0x55a77f['query']=_['keys'](_0x3bf28b['query']);_0x55a77f[_0x3634('0x2a')]=_['intersection'](_0x55a77f[_0x3634('0x28')],_0x55a77f[_0x3634('0x2b')]);_0x49804f[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x55a77f[_0x3634('0x28')],qs[_0x3634('0x2e')](_0x3bf28b['query'][_0x3634('0x2e')]));_0x49804f[_0x3634('0x2c')]=_0x49804f[_0x3634('0x2c')][_0x3634('0x2f')]?_0x49804f[_0x3634('0x2c')]:_0x55a77f[_0x3634('0x28')];if(!_0x3bf28b[_0x3634('0x2b')][_0x3634('0x30')](_0x3634('0x31'))){_0x49804f['limit']=qs[_0x3634('0x18')](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x18')]);_0x49804f[_0x3634('0x16')]=qs['offset'](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x16')]);}_0x49804f[_0x3634('0x32')]=qs['sort'](_0x3bf28b['query']['sort']);_0x49804f[_0x3634('0x33')]=qs[_0x3634('0x2a')](_['pick'](_0x3bf28b[_0x3634('0x2b')],_0x55a77f[_0x3634('0x2a')]),_0x5bd4e0);if(_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]){_0x49804f[_0x3634('0x33')]=_[_0x3634('0x35')](_0x49804f[_0x3634('0x33')],{'$or':_['map'](_0x5bd4e0,function(_0x416987){if(_0x416987['type']!==_0x3634('0x36')){var _0x3ae966={};_0x3ae966[_0x416987[_0x3634('0x29')]]={'$like':'%'+_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]+'%'};return _0x3ae966;}})});}_0x49804f=_['merge']({},_0x49804f,_0x3bf28b[_0x3634('0x37')]);var _0x33af29={'where':_0x49804f[_0x3634('0x33')]};return db[_0x3634('0x38')][_0x3634('0x19')](_0x33af29)[_0x3634('0x39')](function(_0x28c8d0){_0x282f73[_0x3634('0x19')]=_0x28c8d0;if(_0x3bf28b[_0x3634('0x2b')]['includeAll']){_0x49804f['include']=[{'all':!![]}];}return db[_0x3634('0x38')]['findAll'](_0x49804f);})['then'](function(_0x5948db){_0x282f73[_0x3634('0x3a')]=_0x5948db;return _0x282f73;})['then'](respondWithFilteredResult(_0x12b80e,_0x49804f))[_0x3634('0x3b')](handleError(_0x12b80e,null));};exports[_0x3634('0x3c')]=function(_0x53c1ea,_0x505be7){var _0x4896ab={'raw':!![],'where':{'id':_0x53c1ea[_0x3634('0x3d')]['id']}},_0x324970={};_0x324970['model']=_[_0x3634('0x3e')](db[_0x3634('0x38')][_0x3634('0x24')]);_0x324970[_0x3634('0x2b')]=_[_0x3634('0x3e')](_0x53c1ea['query']);_0x324970['filters']=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],_0x324970[_0x3634('0x2b')]);_0x4896ab[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],qs['fields'](_0x53c1ea[_0x3634('0x2b')][_0x3634('0x2e')]));_0x4896ab[_0x3634('0x2c')]=_0x4896ab['attributes']['length']?_0x4896ab[_0x3634('0x2c')]:_0x324970[_0x3634('0x28')];if(_0x53c1ea[_0x3634('0x2b')][_0x3634('0x3f')]){_0x4896ab[_0x3634('0x40')]=[{'all':!![]}];}_0x4896ab=_[_0x3634('0x35')]({},_0x4896ab,_0x53c1ea[_0x3634('0x37')]);return db[_0x3634('0x38')]['find'](_0x4896ab)[_0x3634('0x39')](handleEntityNotFound(_0x505be7,null))[_0x3634('0x39')](respondWithResult(_0x505be7,null))[_0x3634('0x3b')](handleError(_0x505be7,null));};exports[_0x3634('0x41')]=function(_0x615276,_0x151654){return db[_0x3634('0x38')][_0x3634('0x41')](_0x615276[_0x3634('0x42')],{})['then'](respondWithResult(_0x151654,0xc9))[_0x3634('0x3b')](handleError(_0x151654,null));};exports[_0x3634('0x1f')]=function(_0x4a4a94,_0x3c356b){if(_0x4a4a94[_0x3634('0x42')]['id']){delete _0x4a4a94[_0x3634('0x42')]['id'];}return db[_0x3634('0x38')][_0x3634('0x43')]({'where':{'id':_0x4a4a94[_0x3634('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3c356b,null))[_0x3634('0x39')](saveUpdates(_0x4a4a94[_0x3634('0x42')],null))[_0x3634('0x39')](respondWithResult(_0x3c356b,null))[_0x3634('0x3b')](handleError(_0x3c356b,null));};exports[_0x3634('0x20')]=function(_0x582475,_0x66f6a4){return db[_0x3634('0x38')]['find']({'where':{'id':_0x582475['params']['id']}})[_0x3634('0x39')](handleEntityNotFound(_0x66f6a4,null))['then'](removeEntity(_0x66f6a4,null))[_0x3634('0x3b')](handleError(_0x66f6a4,null));};exports[_0x3634('0x44')]=function(_0x1943a5,_0x1834a3){return db['MailQueueReport'][_0x3634('0x44')]()[_0x3634('0x39')](respondWithResult(_0x1834a3,null))[_0x3634('0x3b')](handleError(_0x1834a3,null));};
\ No newline at end of file
index 887eaa7..a71282c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4f=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','MailQueueReport','report_mail_queue','uniqueid','util'];(function(_0xb84bcd,_0xb6f295){var _0x1933d5=function(_0x5846bb){while(--_0x5846bb){_0xb84bcd['push'](_0xb84bcd['shift']());}};_0x1933d5(++_0xb6f295);}(_0x0f4f,0x16a));var _0xf0f4=function(_0x809324,_0x3e5e0e){_0x809324=_0x809324-0x0;var _0x5b9c19=_0x0f4f[_0x809324];return _0x5b9c19;};'use strict';var _=require('lodash');var util=require(_0xf0f4('0x0'));var logger=require(_0xf0f4('0x1'))(_0xf0f4('0x2'));var moment=require(_0xf0f4('0x3'));var BPromise=require(_0xf0f4('0x4'));var rp=require(_0xf0f4('0x5'));var fs=require('fs');var path=require(_0xf0f4('0x6'));var rimraf=require('rimraf');var config=require(_0xf0f4('0x7'));var attributes=require('./mailQueueReport.attributes');module['exports']=function(_0x250ae0,_0x2ce5e7){return _0x250ae0['define'](_0xf0f4('0x8'),attributes,{'tableName':_0xf0f4('0x9'),'paranoid':![],'indexes':[{'name':_0xf0f4('0xa'),'fields':[_0xf0f4('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb052=['define','report_mail_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2280ff,_0x45b5b2){var _0x657217=function(_0x13ed6f){while(--_0x13ed6f){_0x2280ff['push'](_0x2280ff['shift']());}};_0x657217(++_0x45b5b2);}(_0xb052,0x1bd));var _0x2b05=function(_0x3c6b7d,_0x5f0d90){_0x3c6b7d=_0x3c6b7d-0x0;var _0x1d3ed2=_0xb052[_0x3c6b7d];return _0x1d3ed2;};'use strict';var _=require(_0x2b05('0x0'));var util=require(_0x2b05('0x1'));var logger=require(_0x2b05('0x2'))(_0x2b05('0x3'));var moment=require(_0x2b05('0x4'));var BPromise=require(_0x2b05('0x5'));var rp=require(_0x2b05('0x6'));var fs=require('fs');var path=require(_0x2b05('0x7'));var rimraf=require(_0x2b05('0x8'));var config=require(_0x2b05('0x9'));var attributes=require('./mailQueueReport.attributes');module['exports']=function(_0x1322e0,_0x7e041a){return _0x1322e0[_0x2b05('0xa')]('MailQueueReport',attributes,{'tableName':_0x2b05('0xb'),'paranoid':![],'indexes':[{'name':_0x2b05('0xc'),'fields':[_0x2b05('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 3399145..78b8124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x3a80ff,_0x5c68c3){var _0x856aab=function(_0x3b6bc9){while(--_0x3b6bc9){_0x3a80ff['push'](_0x3a80ff['shift']());}};_0x856aab(++_0x5c68c3);}(_0x7a54,0x106));var _0x47a5=function(_0x5ecbaa,_0x211806){_0x5ecbaa=_0x5ecbaa-0x0;var _0x3575f0=_0x7a54[_0x5ecbaa];return _0x3575f0;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4ac015,_0xdf913a){var _0x2c0db6=function(_0x379d10){while(--_0x379d10){_0x4ac015['push'](_0x4ac015['shift']());}};_0x2c0db6(++_0xdf913a);}(_0x326f,0xd1));var _0xf326=function(_0x435ed4,_0x23c613){_0x435ed4=_0x435ed4-0x0;var _0x22c1b3=_0x326f[_0x435ed4];return _0x22c1b3;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
index ba09a9a..f376b37 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(_0x54eb31,_0x3225cc){var _0x444048=function(_0x4e8cd9){while(--_0x4e8cd9){_0x54eb31['push'](_0x54eb31['shift']());}};_0x444048(++_0x3225cc);}(_0x70e0,0x17b));var _0x070e=function(_0x417099,_0x43acb0){_0x417099=_0x417099-0x0;var _0x36f3e7=_0x70e0[_0x417099];return _0x36f3e7;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x52a7b6,_0x566eeb){var _0x40392c=function(_0x232684){while(--_0x232684){_0x52a7b6['push'](_0x52a7b6['shift']());}};_0x40392c(++_0x566eeb);}(_0x70e0,0x17b));var _0x070e=function(_0x26809f,_0x5439d3){_0x26809f=_0x26809f-0x0;var _0x12d057=_0x70e0[_0x26809f];return _0x12d057;};'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 44d6da0..38426b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f04=['STRING','BOOLEAN','INTEGER','INBOX','exports'];(function(_0x56e0e5,_0x2e3937){var _0x27bb15=function(_0x186336){while(--_0x186336){_0x56e0e5['push'](_0x56e0e5['shift']());}};_0x27bb15(++_0x2e3937);}(_0x4f04,0xb3));var _0x44f0=function(_0x5f3b51,_0x90d389){_0x5f3b51=_0x5f3b51-0x0;var _0x43f8ed=_0x4f04[_0x5f3b51];return _0x43f8ed;};'use strict';var Sequelize=require('sequelize');module[_0x44f0('0x0')]={'description':{'type':Sequelize[_0x44f0('0x1')]},'host':{'type':Sequelize[_0x44f0('0x1')]},'authentication':{'type':Sequelize[_0x44f0('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x44f0('0x1')]},'password':{'type':Sequelize[_0x44f0('0x1')]},'port':{'type':Sequelize[_0x44f0('0x3')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x44f0('0x1')],'defaultValue':_0x44f0('0x4')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x44f0('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x44f0('0x1')]},'modernAuthentication':{'type':Sequelize[_0x44f0('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xcdb3=['BOOLEAN','STRING','INBOX','INTEGER','sequelize'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xcdb3,0x153));var _0x3cdb=function(_0x3fed07,_0x39738b){_0x3fed07=_0x3fed07-0x0;var _0x220874=_0xcdb3[_0x3fed07];return _0x220874;};'use strict';var Sequelize=require(_0x3cdb('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x3cdb('0x1')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x3cdb('0x2')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3cdb('0x2')],'defaultValue':_0x3cdb('0x3')},'connTimeout':{'type':Sequelize[_0x3cdb('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x3cdb('0x2')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 58f481a..9a166b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc45c=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','mail_servers_in','lodash','util'];(function(_0x666640,_0x4d51f3){var _0x34f5d2=function(_0x3a008e){while(--_0x3a008e){_0x666640['push'](_0x666640['shift']());}};_0x34f5d2(++_0x4d51f3);}(_0xc45c,0xda));var _0xcc45=function(_0x5d409e,_0x410c18){_0x5d409e=_0x5d409e-0x0;var _0xd20f8b=_0xc45c[_0x5d409e];return _0xd20f8b;};'use strict';var _=require(_0xcc45('0x0'));var util=require(_0xcc45('0x1'));var logger=require(_0xcc45('0x2'))(_0xcc45('0x3'));var moment=require(_0xcc45('0x4'));var BPromise=require(_0xcc45('0x5'));var rp=require(_0xcc45('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcc45('0x7'));var attributes=require('./mailServerIn.attributes');module[_0xcc45('0x8')]=function(_0x2944a8,_0x435f55){return _0x2944a8[_0xcc45('0x9')]('MailServerIn',attributes,{'tableName':_0xcc45('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9fb7=['request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','lodash','util','../../config/logger','moment','bluebird'];(function(_0xc1fac2,_0x725358){var _0x1a31f8=function(_0x22e4f3){while(--_0x22e4f3){_0xc1fac2['push'](_0xc1fac2['shift']());}};_0x1a31f8(++_0x725358);}(_0x9fb7,0x1e9));var _0x79fb=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x9fb7[_0x20a558];return _0x53d3f7;};'use strict';var _=require(_0x79fb('0x0'));var util=require(_0x79fb('0x1'));var logger=require(_0x79fb('0x2'))('api');var moment=require(_0x79fb('0x3'));var BPromise=require(_0x79fb('0x4'));var rp=require(_0x79fb('0x5'));var fs=require('fs');var path=require(_0x79fb('0x6'));var rimraf=require(_0x79fb('0x7'));var config=require(_0x79fb('0x8'));var attributes=require(_0x79fb('0x9'));module[_0x79fb('0xa')]=function(_0x43df8f,_0x2bea4f){return _0x43df8f[_0x79fb('0xb')](_0x79fb('0xc'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dbf19e6..252ad1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc16b=['http','request','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetMailServerIn','MailServerIn','findAll','options','attributes','limit','include','model','map','then','catch','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client'];(function(_0x269704,_0x4dc549){var _0x3f2385=function(_0x29ae81){while(--_0x29ae81){_0x269704['push'](_0x269704['shift']());}};_0x3f2385(++_0x4dc549);}(_0xc16b,0x76));var _0xbc16=function(_0x366391,_0x984cc3){_0x366391=_0x366391-0x0;var _0x733029=_0xc16b[_0x366391];return _0x733029;};'use strict';var _=require(_0xbc16('0x0'));var util=require(_0xbc16('0x1'));var moment=require(_0xbc16('0x2'));var BPromise=require(_0xbc16('0x3'));var rs=require(_0xbc16('0x4'));var fs=require('fs');var Redis=require(_0xbc16('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbc16('0x6'));var config=require(_0xbc16('0x7'));var jayson=require(_0xbc16('0x8'));var client=jayson[_0xbc16('0x9')][_0xbc16('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1609fa,_0x5bae11,_0x29329f){return new BPromise(function(_0x40db0a,_0x3338d0){return client[_0xbc16('0xb')](_0x1609fa,_0x29329f)['then'](function(_0x138009){logger[_0xbc16('0xc')](_0xbc16('0xd'),_0x5bae11,'request\x20sent');logger[_0xbc16('0xe')](_0xbc16('0xf'),_0x5bae11,_0xbc16('0x10'),JSON[_0xbc16('0x11')](_0x138009));if(_0x138009[_0xbc16('0x12')]){if(_0x138009[_0xbc16('0x12')]['code']===0x1f4){logger[_0xbc16('0x12')](_0xbc16('0xd'),_0x5bae11,_0x138009['error']['message']);return _0x3338d0(_0x138009[_0xbc16('0x12')][_0xbc16('0x13')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x5bae11,_0x138009[_0xbc16('0x12')]['message']);return _0x40db0a(_0x138009[_0xbc16('0x12')][_0xbc16('0x13')]);}else{logger[_0xbc16('0xc')](_0xbc16('0xd'),_0x5bae11,_0xbc16('0x10'));_0x40db0a(_0x138009[_0xbc16('0x14')][_0xbc16('0x13')]);}})['catch'](function(_0x387c33){logger[_0xbc16('0x12')](_0xbc16('0xd'),_0x5bae11,_0x387c33);_0x3338d0(_0x387c33);});});}exports[_0xbc16('0x15')]=function(_0x1c92eb){var _0x3aae61=this;return new Promise(function(_0x4170f7,_0x18831e){return db[_0xbc16('0x16')][_0xbc16('0x17')]({'raw':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb[_0xbc16('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb['options']['where']||null:null,'attributes':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb[_0xbc16('0x18')][_0xbc16('0x19')]||null:null,'limit':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb[_0xbc16('0x18')][_0xbc16('0x1a')]||null:null,'include':_0x1c92eb['options']?_0x1c92eb[_0xbc16('0x18')][_0xbc16('0x1b')]?_['map'](_0x1c92eb[_0xbc16('0x18')]['include'],function(_0x1b7889){return{'model':db[_0x1b7889[_0xbc16('0x1c')]],'as':_0x1b7889['as'],'attributes':_0x1b7889[_0xbc16('0x19')],'include':_0x1b7889[_0xbc16('0x1b')]?_[_0xbc16('0x1d')](_0x1b7889['include'],function(_0x4b2a96){return{'model':db[_0x4b2a96['model']],'as':_0x4b2a96['as'],'attributes':_0x4b2a96[_0xbc16('0x19')],'include':_0x4b2a96[_0xbc16('0x1b')]?_['map'](_0x4b2a96[_0xbc16('0x1b')],function(_0x5b3201){return{'model':db[_0x5b3201[_0xbc16('0x1c')]],'as':_0x5b3201['as'],'attributes':_0x5b3201[_0xbc16('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbc16('0x1e')](function(_0x2f8db5){logger[_0xbc16('0xc')](_0xbc16('0x15'),_0x1c92eb);logger['debug'](_0xbc16('0x15'),_0x1c92eb,JSON['stringify'](_0x2f8db5));_0x4170f7(_0x2f8db5);})[_0xbc16('0x1f')](function(_0x429c26){logger[_0xbc16('0x12')](_0xbc16('0x15'),_0x429c26['message'],_0x1c92eb);_0x18831e(_0x3aae61['error'](0x1f4,_0x429c26[_0xbc16('0x13')]));});});};
\ No newline at end of file
+var _0x5bb7=['result','GetMailServerIn','MailServerIn','findAll','options','raw','attributes','include','map','model','debug','catch','lodash','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x24b043,_0x32b734){var _0x1e3cc8=function(_0x14c5d4){while(--_0x14c5d4){_0x24b043['push'](_0x24b043['shift']());}};_0x1e3cc8(++_0x32b734);}(_0x5bb7,0x104));var _0x75bb=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x5bb7[_0x1e3c16];return _0x47a0c9;};'use strict';var _=require(_0x75bb('0x0'));var util=require('util');var moment=require(_0x75bb('0x1'));var BPromise=require(_0x75bb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x75bb('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x75bb('0x4'))(_0x75bb('0x5'));var config=require(_0x75bb('0x6'));var jayson=require(_0x75bb('0x7'));var client=jayson[_0x75bb('0x8')][_0x75bb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4144d6,_0x4a1030,_0xa8897b){return new BPromise(function(_0x674de,_0x104bf0){return client[_0x75bb('0xa')](_0x4144d6,_0xa8897b)[_0x75bb('0xb')](function(_0x2887b2){logger[_0x75bb('0xc')](_0x75bb('0xd'),_0x4a1030,_0x75bb('0xe'));logger['debug'](_0x75bb('0xf'),_0x4a1030,_0x75bb('0xe'),JSON['stringify'](_0x2887b2));if(_0x2887b2[_0x75bb('0x10')]){if(_0x2887b2[_0x75bb('0x10')][_0x75bb('0x11')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x4a1030,_0x2887b2[_0x75bb('0x10')][_0x75bb('0x12')]);return _0x104bf0(_0x2887b2[_0x75bb('0x10')][_0x75bb('0x12')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x4a1030,_0x2887b2[_0x75bb('0x10')][_0x75bb('0x12')]);return _0x674de(_0x2887b2['error'][_0x75bb('0x12')]);}else{logger['info'](_0x75bb('0xd'),_0x4a1030,'request\x20sent');_0x674de(_0x2887b2[_0x75bb('0x13')][_0x75bb('0x12')]);}})['catch'](function(_0x1b56e1){logger[_0x75bb('0x10')](_0x75bb('0xd'),_0x4a1030,_0x1b56e1);_0x104bf0(_0x1b56e1);});});}exports[_0x75bb('0x14')]=function(_0x2f9499){var _0x2aa895=this;return new Promise(function(_0x1f9658,_0x3d5de5){return db[_0x75bb('0x15')][_0x75bb('0x16')]({'raw':_0x2f9499[_0x75bb('0x17')]?_0x2f9499[_0x75bb('0x17')][_0x75bb('0x18')]===undefined?!![]:![]:!![],'where':_0x2f9499['options']?_0x2f9499[_0x75bb('0x17')]['where']||null:null,'attributes':_0x2f9499['options']?_0x2f9499['options'][_0x75bb('0x19')]||null:null,'limit':_0x2f9499['options']?_0x2f9499[_0x75bb('0x17')]['limit']||null:null,'include':_0x2f9499[_0x75bb('0x17')]?_0x2f9499['options'][_0x75bb('0x1a')]?_[_0x75bb('0x1b')](_0x2f9499[_0x75bb('0x17')][_0x75bb('0x1a')],function(_0x36cb3a){return{'model':db[_0x36cb3a['model']],'as':_0x36cb3a['as'],'attributes':_0x36cb3a[_0x75bb('0x19')],'include':_0x36cb3a['include']?_[_0x75bb('0x1b')](_0x36cb3a[_0x75bb('0x1a')],function(_0x4b5fc7){return{'model':db[_0x4b5fc7[_0x75bb('0x1c')]],'as':_0x4b5fc7['as'],'attributes':_0x4b5fc7[_0x75bb('0x19')],'include':_0x4b5fc7[_0x75bb('0x1a')]?_[_0x75bb('0x1b')](_0x4b5fc7['include'],function(_0x18cf38){return{'model':db[_0x18cf38['model']],'as':_0x18cf38['as'],'attributes':_0x18cf38['attributes']};}):[]};}):[]};}):[]:[]})[_0x75bb('0xb')](function(_0x46edee){logger['info'](_0x75bb('0x14'),_0x2f9499);logger[_0x75bb('0x1d')]('GetMailServerIn',_0x2f9499,JSON['stringify'](_0x46edee));_0x1f9658(_0x46edee);})[_0x75bb('0x1e')](function(_0x4e21d8){logger['error'](_0x75bb('0x14'),_0x4e21d8[_0x75bb('0x12')],_0x2f9499);_0x3d5de5(_0x2aa895['error'](0x1f4,_0x4e21d8['message']));});});};
\ No newline at end of file
index 0ca5b6c..400b74f 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(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x7a54,0x106));var _0x47a5=function(_0x4669b7,_0x4f1b2d){_0x4669b7=_0x4669b7-0x0;var _0x44623c=_0x7a54[_0x4669b7];return _0x44623c;};'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 3064a7d..0ad07cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['exports','STRING','BOOLEAN','sequelize'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xac4a,0x13f));var _0xaac4=function(_0x17c285,_0x506e1b){_0x17c285=_0x17c285-0x0;var _0x49db7f=_0xac4a[_0x17c285];return _0x49db7f;};'use strict';var Sequelize=require(_0xaac4('0x0'));module[_0xaac4('0x1')]={'description':{'type':Sequelize[_0xaac4('0x2')]},'host':{'type':Sequelize[_0xaac4('0x2')]},'user':{'type':Sequelize[_0xaac4('0x2')]},'pass':{'type':Sequelize[_0xaac4('0x2')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xaac4('0x2')]},'authentication':{'type':Sequelize[_0xaac4('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xaac4('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x80ed=['sequelize','STRING','INTEGER','BOOLEAN'];(function(_0x3c57c7,_0x18e494){var _0x9c2cbb=function(_0x4195d0){while(--_0x4195d0){_0x3c57c7['push'](_0x3c57c7['shift']());}};_0x9c2cbb(++_0x18e494);}(_0x80ed,0x11c));var _0xd80e=function(_0x2c41e0,_0x35f461){_0x2c41e0=_0x2c41e0-0x0;var _0x3bccb6=_0x80ed[_0x2c41e0];return _0x3bccb6;};'use strict';var Sequelize=require(_0xd80e('0x0'));module['exports']={'description':{'type':Sequelize[_0xd80e('0x1')]},'host':{'type':Sequelize[_0xd80e('0x1')]},'user':{'type':Sequelize[_0xd80e('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xd80e('0x2')]},'secure':{'type':Sequelize[_0xd80e('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0xd80e('0x1')]},'authentication':{'type':Sequelize[_0xd80e('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index e99cabc..1f1f927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10fc=['show','params','keys','length','catch','create','body','find','destroy','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows'];(function(_0x3720d3,_0x3165d3){var _0xcb861b=function(_0x13f21c){while(--_0x13f21c){_0x3720d3['push'](_0x3720d3['shift']());}};_0xcb861b(++_0x3165d3);}(_0x10fc,0xe7));var _0xc10f=function(_0x3e6463,_0x22f2b6){_0x3e6463=_0x3e6463-0x0;var _0x301db3=_0x10fc[_0x3e6463];return _0x301db3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc10f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc10f('0x1'));var rp=require(_0xc10f('0x2'));var moment=require(_0xc10f('0x3'));var BPromise=require(_0xc10f('0x4'));var Mustache=require(_0xc10f('0x5'));var util=require(_0xc10f('0x6'));var path=require(_0xc10f('0x7'));var sox=require(_0xc10f('0x8'));var csv=require(_0xc10f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc10f('0xa'));var _=require('lodash');var squel=require(_0xc10f('0xb'));var crypto=require(_0xc10f('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc10f('0x9'));var querystring=require(_0xc10f('0xd'));var Papa=require(_0xc10f('0xe'));var Redis=require(_0xc10f('0xf'));var authService=require(_0xc10f('0x10'));var qs=require(_0xc10f('0x11'));var as=require(_0xc10f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc10f('0x13'))('api');var utils=require(_0xc10f('0x14'));var config=require(_0xc10f('0x15'));var licenseUtil=require(_0xc10f('0x16'));var db=require(_0xc10f('0x17'))['db'];function respondWithStatusCode(_0x1c1069,_0xe11147){_0xe11147=_0xe11147||0xcc;return function(_0x3c8613){if(_0x3c8613){return _0x1c1069['sendStatus'](_0xe11147);}return _0x1c1069[_0xc10f('0x18')](_0xe11147)['end']();};}function respondWithResult(_0x501f0d,_0x3cce96){_0x3cce96=_0x3cce96||0xc8;return function(_0x79ed12){if(_0x79ed12){return _0x501f0d[_0xc10f('0x18')](_0x3cce96)[_0xc10f('0x19')](_0x79ed12);}};}function respondWithFilteredResult(_0x428f28,_0x4d793b){return function(_0x2ac9fc){if(_0x2ac9fc){var _0x19990a=typeof _0x4d793b[_0xc10f('0x1a')]===_0xc10f('0x1b')&&typeof _0x4d793b['limit']===_0xc10f('0x1b');var _0x41f287=_0x2ac9fc['count'];var _0x3b2e9c=_0x19990a?0x0:_0x4d793b['offset'];var _0x4776af=_0x19990a?_0x2ac9fc[_0xc10f('0x1c')]:_0x4d793b[_0xc10f('0x1a')]+_0x4d793b[_0xc10f('0x1d')];var _0x1eb245;if(_0x4776af>=_0x41f287){_0x4776af=_0x41f287;_0x1eb245=0xc8;}else{_0x1eb245=0xce;}_0x428f28[_0xc10f('0x18')](_0x1eb245);return _0x428f28['set'](_0xc10f('0x1e'),_0x3b2e9c+'-'+_0x4776af+'/'+_0x41f287)[_0xc10f('0x19')](_0x2ac9fc);}return null;};}function patchUpdates(_0x3035d4){return function(_0x1fc799){try{jsonpatch[_0xc10f('0x1f')](_0x1fc799,_0x3035d4,!![]);}catch(_0x59514a){return BPromise[_0xc10f('0x20')](_0x59514a);}return _0x1fc799[_0xc10f('0x21')]();};}function saveUpdates(_0x43eb85,_0x4972a4){return function(_0x1112c7){if(_0x1112c7){return _0x1112c7['update'](_0x43eb85)[_0xc10f('0x22')](function(_0xb143cb){return _0xb143cb;});}return null;};}function removeEntity(_0x1559d6,_0xbddbb3){return function(_0x4b83d2){if(_0x4b83d2){return _0x4b83d2['destroy']()[_0xc10f('0x22')](function(){_0x1559d6[_0xc10f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x150cc3,_0xfe889c){return function(_0xbf5c12){if(!_0xbf5c12){_0x150cc3['sendStatus'](0x194);}return _0xbf5c12;};}function handleError(_0x92cc78,_0x36a8d5){_0x36a8d5=_0x36a8d5||0x1f4;return function(_0x2c1913){logger[_0xc10f('0x23')](_0x2c1913[_0xc10f('0x24')]);if(_0x2c1913[_0xc10f('0x25')]){delete _0x2c1913[_0xc10f('0x25')];}_0x92cc78['status'](_0x36a8d5)[_0xc10f('0x26')](_0x2c1913);};}exports[_0xc10f('0x27')]=function(_0x4bd06a,_0x49892f){var _0x15f837={},_0x34d1d7={},_0xdf4a7f={'count':0x0,'rows':[]};var _0x28a9d8=_[_0xc10f('0x28')](db[_0xc10f('0x29')][_0xc10f('0x2a')],function(_0x1f40b7){return{'name':_0x1f40b7[_0xc10f('0x2b')],'type':_0x1f40b7[_0xc10f('0x2c')][_0xc10f('0x2d')]};});_0x34d1d7[_0xc10f('0x2e')]=_[_0xc10f('0x28')](_0x28a9d8,_0xc10f('0x25'));_0x34d1d7[_0xc10f('0x2f')]=_['keys'](_0x4bd06a[_0xc10f('0x2f')]);_0x34d1d7['filters']=_['intersection'](_0x34d1d7[_0xc10f('0x2e')],_0x34d1d7[_0xc10f('0x2f')]);_0x15f837['attributes']=_[_0xc10f('0x30')](_0x34d1d7[_0xc10f('0x2e')],qs[_0xc10f('0x31')](_0x4bd06a[_0xc10f('0x2f')][_0xc10f('0x31')]));_0x15f837[_0xc10f('0x32')]=_0x15f837[_0xc10f('0x32')]['length']?_0x15f837[_0xc10f('0x32')]:_0x34d1d7[_0xc10f('0x2e')];if(!_0x4bd06a['query'][_0xc10f('0x33')](_0xc10f('0x34'))){_0x15f837['limit']=qs[_0xc10f('0x1d')](_0x4bd06a[_0xc10f('0x2f')][_0xc10f('0x1d')]);_0x15f837['offset']=qs[_0xc10f('0x1a')](_0x4bd06a['query']['offset']);}_0x15f837[_0xc10f('0x35')]=qs[_0xc10f('0x36')](_0x4bd06a['query'][_0xc10f('0x36')]);_0x15f837[_0xc10f('0x37')]=qs[_0xc10f('0x38')](_[_0xc10f('0x39')](_0x4bd06a['query'],_0x34d1d7[_0xc10f('0x38')]),_0x28a9d8);if(_0x4bd06a['query'][_0xc10f('0x3a')]){_0x15f837['where']=_['merge'](_0x15f837[_0xc10f('0x37')],{'$or':_[_0xc10f('0x28')](_0x28a9d8,function(_0x2fab2e){if(_0x2fab2e[_0xc10f('0x2c')]!==_0xc10f('0x3b')){var _0x206c84={};_0x206c84[_0x2fab2e['name']]={'$like':'%'+_0x4bd06a[_0xc10f('0x2f')][_0xc10f('0x3a')]+'%'};return _0x206c84;}})});}_0x15f837=_[_0xc10f('0x3c')]({},_0x15f837,_0x4bd06a[_0xc10f('0x3d')]);var _0x13a83a={'where':_0x15f837['where']};return db['MailServerOut'][_0xc10f('0x1c')](_0x13a83a)[_0xc10f('0x22')](function(_0x2bf029){_0xdf4a7f['count']=_0x2bf029;if(_0x4bd06a['query'][_0xc10f('0x3e')]){_0x15f837[_0xc10f('0x3f')]=[{'all':!![]}];}return db[_0xc10f('0x29')]['findAll'](_0x15f837);})[_0xc10f('0x22')](function(_0x2674b0){_0xdf4a7f[_0xc10f('0x40')]=_0x2674b0;return _0xdf4a7f;})[_0xc10f('0x22')](respondWithFilteredResult(_0x49892f,_0x15f837))['catch'](handleError(_0x49892f,null));};exports[_0xc10f('0x41')]=function(_0x5e2e64,_0x4e3042){var _0x497cd4={'raw':!![],'where':{'id':_0x5e2e64[_0xc10f('0x42')]['id']}},_0x220a49={};_0x220a49[_0xc10f('0x2e')]=_[_0xc10f('0x43')](db[_0xc10f('0x29')][_0xc10f('0x2a')]);_0x220a49['query']=_[_0xc10f('0x43')](_0x5e2e64[_0xc10f('0x2f')]);_0x220a49[_0xc10f('0x38')]=_[_0xc10f('0x30')](_0x220a49[_0xc10f('0x2e')],_0x220a49[_0xc10f('0x2f')]);_0x497cd4['attributes']=_[_0xc10f('0x30')](_0x220a49['model'],qs[_0xc10f('0x31')](_0x5e2e64[_0xc10f('0x2f')][_0xc10f('0x31')]));_0x497cd4['attributes']=_0x497cd4[_0xc10f('0x32')][_0xc10f('0x44')]?_0x497cd4[_0xc10f('0x32')]:_0x220a49['model'];if(_0x5e2e64[_0xc10f('0x2f')][_0xc10f('0x3e')]){_0x497cd4[_0xc10f('0x3f')]=[{'all':!![]}];}_0x497cd4=_['merge']({},_0x497cd4,_0x5e2e64[_0xc10f('0x3d')]);return db[_0xc10f('0x29')]['find'](_0x497cd4)['then'](handleEntityNotFound(_0x4e3042,null))['then'](respondWithResult(_0x4e3042,null))[_0xc10f('0x45')](handleError(_0x4e3042,null));};exports['create']=function(_0x4a6b2c,_0x362aaa){return db[_0xc10f('0x29')][_0xc10f('0x46')](_0x4a6b2c[_0xc10f('0x47')],{})['then'](respondWithResult(_0x362aaa,0xc9))['catch'](handleError(_0x362aaa,null));};exports['update']=function(_0x5d733c,_0x3985f6){if(_0x5d733c['body']['id']){delete _0x5d733c[_0xc10f('0x47')]['id'];}return db[_0xc10f('0x29')][_0xc10f('0x48')]({'where':{'id':_0x5d733c[_0xc10f('0x42')]['id']}})[_0xc10f('0x22')](handleEntityNotFound(_0x3985f6,null))[_0xc10f('0x22')](saveUpdates(_0x5d733c[_0xc10f('0x47')],null))[_0xc10f('0x22')](respondWithResult(_0x3985f6,null))['catch'](handleError(_0x3985f6,null));};exports[_0xc10f('0x49')]=function(_0x52312e,_0x3e8c61){return db[_0xc10f('0x29')][_0xc10f('0x48')]({'where':{'id':_0x52312e['params']['id']}})[_0xc10f('0x22')](handleEntityNotFound(_0x3e8c61,null))[_0xc10f('0x22')](removeEntity(_0x3e8c61,null))[_0xc10f('0x45')](handleError(_0x3e8c61,null));};
\ No newline at end of file
+var _0x1062=['rows','show','params','keys','rawAttributes','create','body','catch','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','MailServerOut','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include'];(function(_0x592809,_0x3fb2de){var _0x33128d=function(_0x3107c2){while(--_0x3107c2){_0x592809['push'](_0x592809['shift']());}};_0x33128d(++_0x3fb2de);}(_0x1062,0x185));var _0x2106=function(_0x13a67c,_0x25ec0f){_0x13a67c=_0x13a67c-0x0;var _0x329eaf=_0x1062[_0x13a67c];return _0x329eaf;};'use strict';var emlformat=require(_0x2106('0x0'));var rimraf=require(_0x2106('0x1'));var zipdir=require(_0x2106('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2106('0x3'));var moment=require(_0x2106('0x4'));var BPromise=require(_0x2106('0x5'));var Mustache=require(_0x2106('0x6'));var util=require(_0x2106('0x7'));var path=require(_0x2106('0x8'));var sox=require(_0x2106('0x9'));var csv=require(_0x2106('0xa'));var ejs=require(_0x2106('0xb'));var fs=require('fs');var fs_extra=require(_0x2106('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2106('0xd'));var jsforce=require(_0x2106('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x2106('0xa'));var querystring=require(_0x2106('0xf'));var Papa=require(_0x2106('0x10'));var Redis=require(_0x2106('0x11'));var authService=require(_0x2106('0x12'));var qs=require(_0x2106('0x13'));var as=require(_0x2106('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2106('0x15'));var utils=require('../../config/utils');var config=require(_0x2106('0x16'));var licenseUtil=require(_0x2106('0x17'));var db=require(_0x2106('0x18'))['db'];function respondWithStatusCode(_0x205406,_0x555a1a){_0x555a1a=_0x555a1a||0xcc;return function(_0x1e2278){if(_0x1e2278){return _0x205406[_0x2106('0x19')](_0x555a1a);}return _0x205406[_0x2106('0x1a')](_0x555a1a)['end']();};}function respondWithResult(_0x314ffe,_0x5b4940){_0x5b4940=_0x5b4940||0xc8;return function(_0x4935aa){if(_0x4935aa){return _0x314ffe[_0x2106('0x1a')](_0x5b4940)[_0x2106('0x1b')](_0x4935aa);}};}function respondWithFilteredResult(_0x1ea444,_0xd562f5){return function(_0x37ee4e){if(_0x37ee4e){var _0x501bc8=typeof _0xd562f5[_0x2106('0x1c')]==='undefined'&&typeof _0xd562f5[_0x2106('0x1d')]==='undefined';var _0x21de9c=_0x37ee4e[_0x2106('0x1e')];var _0x3fea63=_0x501bc8?0x0:_0xd562f5[_0x2106('0x1c')];var _0x9574ef=_0x501bc8?_0x37ee4e[_0x2106('0x1e')]:_0xd562f5['offset']+_0xd562f5[_0x2106('0x1d')];var _0x42646b;if(_0x9574ef>=_0x21de9c){_0x9574ef=_0x21de9c;_0x42646b=0xc8;}else{_0x42646b=0xce;}_0x1ea444[_0x2106('0x1a')](_0x42646b);return _0x1ea444[_0x2106('0x1f')](_0x2106('0x20'),_0x3fea63+'-'+_0x9574ef+'/'+_0x21de9c)['json'](_0x37ee4e);}return null;};}function patchUpdates(_0x1812c1){return function(_0x1c6160){try{jsonpatch[_0x2106('0x21')](_0x1c6160,_0x1812c1,!![]);}catch(_0x480467){return BPromise[_0x2106('0x22')](_0x480467);}return _0x1c6160[_0x2106('0x23')]();};}function saveUpdates(_0x5a0c27,_0xe5f785){return function(_0x12a634){if(_0x12a634){return _0x12a634[_0x2106('0x24')](_0x5a0c27)[_0x2106('0x25')](function(_0x5c8649){return _0x5c8649;});}return null;};}function removeEntity(_0x5a7009,_0x5c5291){return function(_0x295ee5){if(_0x295ee5){return _0x295ee5[_0x2106('0x26')]()[_0x2106('0x25')](function(){_0x5a7009[_0x2106('0x1a')](0xcc)[_0x2106('0x27')]();});}};}function handleEntityNotFound(_0x56189f,_0x1bf4d3){return function(_0x1e72dc){if(!_0x1e72dc){_0x56189f[_0x2106('0x19')](0x194);}return _0x1e72dc;};}function handleError(_0x3c996c,_0x19097f){_0x19097f=_0x19097f||0x1f4;return function(_0x35dbe6){logger[_0x2106('0x28')](_0x35dbe6[_0x2106('0x29')]);if(_0x35dbe6[_0x2106('0x2a')]){delete _0x35dbe6[_0x2106('0x2a')];}_0x3c996c[_0x2106('0x1a')](_0x19097f)['send'](_0x35dbe6);};}exports[_0x2106('0x2b')]=function(_0x3a0c2b,_0xdefc4c){var _0x2d1f80={},_0x5d424e={},_0x50bd7c={'count':0x0,'rows':[]};var _0xa13a9b=_[_0x2106('0x2c')](db[_0x2106('0x2d')]['rawAttributes'],function(_0xf582ba){return{'name':_0xf582ba[_0x2106('0x2e')],'type':_0xf582ba[_0x2106('0x2f')][_0x2106('0x30')]};});_0x5d424e[_0x2106('0x31')]=_[_0x2106('0x2c')](_0xa13a9b,_0x2106('0x2a'));_0x5d424e['query']=_['keys'](_0x3a0c2b[_0x2106('0x32')]);_0x5d424e['filters']=_[_0x2106('0x33')](_0x5d424e[_0x2106('0x31')],_0x5d424e[_0x2106('0x32')]);_0x2d1f80[_0x2106('0x34')]=_[_0x2106('0x33')](_0x5d424e[_0x2106('0x31')],qs[_0x2106('0x35')](_0x3a0c2b[_0x2106('0x32')][_0x2106('0x35')]));_0x2d1f80[_0x2106('0x34')]=_0x2d1f80[_0x2106('0x34')][_0x2106('0x36')]?_0x2d1f80['attributes']:_0x5d424e[_0x2106('0x31')];if(!_0x3a0c2b['query'][_0x2106('0x37')](_0x2106('0x38'))){_0x2d1f80[_0x2106('0x1d')]=qs[_0x2106('0x1d')](_0x3a0c2b['query'][_0x2106('0x1d')]);_0x2d1f80[_0x2106('0x1c')]=qs[_0x2106('0x1c')](_0x3a0c2b[_0x2106('0x32')]['offset']);}_0x2d1f80[_0x2106('0x39')]=qs['sort'](_0x3a0c2b['query'][_0x2106('0x3a')]);_0x2d1f80[_0x2106('0x3b')]=qs[_0x2106('0x3c')](_[_0x2106('0x3d')](_0x3a0c2b[_0x2106('0x32')],_0x5d424e['filters']),_0xa13a9b);if(_0x3a0c2b['query']['filter']){_0x2d1f80[_0x2106('0x3b')]=_[_0x2106('0x3e')](_0x2d1f80[_0x2106('0x3b')],{'$or':_['map'](_0xa13a9b,function(_0x5c4df8){if(_0x5c4df8['type']!=='VIRTUAL'){var _0x2f338e={};_0x2f338e[_0x5c4df8['name']]={'$like':'%'+_0x3a0c2b[_0x2106('0x32')][_0x2106('0x3f')]+'%'};return _0x2f338e;}})});}_0x2d1f80=_[_0x2106('0x3e')]({},_0x2d1f80,_0x3a0c2b[_0x2106('0x40')]);var _0x289bed={'where':_0x2d1f80[_0x2106('0x3b')]};return db['MailServerOut'][_0x2106('0x1e')](_0x289bed)[_0x2106('0x25')](function(_0x69bca3){_0x50bd7c[_0x2106('0x1e')]=_0x69bca3;if(_0x3a0c2b['query'][_0x2106('0x41')]){_0x2d1f80[_0x2106('0x42')]=[{'all':!![]}];}return db[_0x2106('0x2d')]['findAll'](_0x2d1f80);})[_0x2106('0x25')](function(_0x566976){_0x50bd7c[_0x2106('0x43')]=_0x566976;return _0x50bd7c;})[_0x2106('0x25')](respondWithFilteredResult(_0xdefc4c,_0x2d1f80))['catch'](handleError(_0xdefc4c,null));};exports[_0x2106('0x44')]=function(_0x46af16,_0x44240f){var _0x1abe51={'raw':!![],'where':{'id':_0x46af16[_0x2106('0x45')]['id']}},_0x9adbe6={};_0x9adbe6['model']=_[_0x2106('0x46')](db['MailServerOut'][_0x2106('0x47')]);_0x9adbe6[_0x2106('0x32')]=_[_0x2106('0x46')](_0x46af16[_0x2106('0x32')]);_0x9adbe6[_0x2106('0x3c')]=_[_0x2106('0x33')](_0x9adbe6[_0x2106('0x31')],_0x9adbe6['query']);_0x1abe51[_0x2106('0x34')]=_['intersection'](_0x9adbe6['model'],qs[_0x2106('0x35')](_0x46af16[_0x2106('0x32')]['fields']));_0x1abe51[_0x2106('0x34')]=_0x1abe51[_0x2106('0x34')]['length']?_0x1abe51[_0x2106('0x34')]:_0x9adbe6[_0x2106('0x31')];if(_0x46af16['query']['includeAll']){_0x1abe51['include']=[{'all':!![]}];}_0x1abe51=_['merge']({},_0x1abe51,_0x46af16[_0x2106('0x40')]);return db[_0x2106('0x2d')]['find'](_0x1abe51)['then'](handleEntityNotFound(_0x44240f,null))[_0x2106('0x25')](respondWithResult(_0x44240f,null))['catch'](handleError(_0x44240f,null));};exports[_0x2106('0x48')]=function(_0x26c351,_0x4f35f0){return db[_0x2106('0x2d')]['create'](_0x26c351[_0x2106('0x49')],{})[_0x2106('0x25')](respondWithResult(_0x4f35f0,0xc9))[_0x2106('0x4a')](handleError(_0x4f35f0,null));};exports[_0x2106('0x24')]=function(_0x43c09f,_0x4f083c){if(_0x43c09f[_0x2106('0x49')]['id']){delete _0x43c09f[_0x2106('0x49')]['id'];}return db['MailServerOut'][_0x2106('0x4b')]({'where':{'id':_0x43c09f[_0x2106('0x45')]['id']}})[_0x2106('0x25')](handleEntityNotFound(_0x4f083c,null))[_0x2106('0x25')](saveUpdates(_0x43c09f[_0x2106('0x49')],null))[_0x2106('0x25')](respondWithResult(_0x4f083c,null))[_0x2106('0x4a')](handleError(_0x4f083c,null));};exports['destroy']=function(_0x40f66f,_0x2dbfd6){return db[_0x2106('0x2d')][_0x2106('0x4b')]({'where':{'id':_0x40f66f['params']['id']}})[_0x2106('0x25')](handleEntityNotFound(_0x2dbfd6,null))['then'](removeEntity(_0x2dbfd6,null))[_0x2106('0x4a')](handleError(_0x2dbfd6,null));};
\ No newline at end of file
index 8254d05..fe6ebc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafae=['../../config/logger','moment','bluebird','rimraf','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash'];(function(_0x6c92f9,_0x2dcaf8){var _0x12c590=function(_0x4409dd){while(--_0x4409dd){_0x6c92f9['push'](_0x6c92f9['shift']());}};_0x12c590(++_0x2dcaf8);}(_0xafae,0xf9));var _0xeafa=function(_0x544b39,_0x48663f){_0x544b39=_0x544b39-0x0;var _0x3d6cf4=_0xafae[_0x544b39];return _0x3d6cf4;};'use strict';var _=require(_0xeafa('0x0'));var util=require('util');var logger=require(_0xeafa('0x1'))('api');var moment=require(_0xeafa('0x2'));var BPromise=require(_0xeafa('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xeafa('0x4'));var config=require('../../config/environment');var attributes=require(_0xeafa('0x5'));module[_0xeafa('0x6')]=function(_0x73bf5e,_0x4e2ba8){return _0x73bf5e[_0xeafa('0x7')](_0xeafa('0x8'),attributes,{'tableName':_0xeafa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf9a=['define','MailServerOut','lodash','util','api','moment','request-promise','path','../../config/environment','./mailServerOut.attributes'];(function(_0x23f1d2,_0x3b3334){var _0x5ca5a4=function(_0xec62fc){while(--_0xec62fc){_0x23f1d2['push'](_0x23f1d2['shift']());}};_0x5ca5a4(++_0x3b3334);}(_0xcf9a,0xde));var _0xacf9=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xcf9a[_0x46698a];return _0x356db0;};'use strict';var _=require(_0xacf9('0x0'));var util=require(_0xacf9('0x1'));var logger=require('../../config/logger')(_0xacf9('0x2'));var moment=require(_0xacf9('0x3'));var BPromise=require('bluebird');var rp=require(_0xacf9('0x4'));var fs=require('fs');var path=require(_0xacf9('0x5'));var rimraf=require('rimraf');var config=require(_0xacf9('0x6'));var attributes=require(_0xacf9('0x7'));module['exports']=function(_0x27e748,_0x242a77){return _0x27e748[_0xacf9('0x8')](_0xacf9('0x9'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6f6fd8..0d3c2b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x1b6527,_0x370f5c){_0x1b6527=_0x1b6527-0x0;var _0x12ad94=_0x7a54[_0x1b6527];return _0x12ad94;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x5ca50a,_0x43eae3){var _0x537308=function(_0x48048c){while(--_0x48048c){_0x5ca50a['push'](_0x5ca50a['shift']());}};_0x537308(++_0x43eae3);}(_0xdb28,0x106));var _0x8db2=function(_0x5a60b4,_0xe26600){_0x5a60b4=_0x5a60b4-0x0;var _0x1fb9a6=_0xdb28[_0x5a60b4];return _0x1fb9a6;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 648667d..da88c9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27f6=['path','express','Router','fs-extra','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','destroy','exports','util'];(function(_0x4327fe,_0x4f8040){var _0x138651=function(_0x418acc){while(--_0x418acc){_0x4327fe['push'](_0x4327fe['shift']());}};_0x138651(++_0x4f8040);}(_0x27f6,0x10d));var _0x627f=function(_0x1fb1dd,_0xb92e66){_0x1fb1dd=_0x1fb1dd-0x0;var _0xa20898=_0x27f6[_0x1fb1dd];return _0xa20898;};'use strict';var multer=require('multer');var util=require(_0x627f('0x0'));var path=require(_0x627f('0x1'));var timeout=require('connect-timeout');var express=require(_0x627f('0x2'));var router=express[_0x627f('0x3')]();var fs_extra=require(_0x627f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x627f('0x5'));router[_0x627f('0x6')]('/',auth[_0x627f('0x7')](),controller[_0x627f('0x8')]);router[_0x627f('0x6')](_0x627f('0x9'),auth[_0x627f('0x7')](),controller[_0x627f('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x627f('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x627f('0xc')]);router[_0x627f('0xd')](_0x627f('0xe'),auth[_0x627f('0x7')](),controller[_0x627f('0xf')]);router['delete'](_0x627f('0xe'),auth['isAuthenticated'](),controller[_0x627f('0x10')]);module[_0x627f('0x11')]=router;
\ No newline at end of file
+var _0x82af=['get','isAuthenticated','index','describe','show','create','put','/:id','delete','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller'];(function(_0x495976,_0x5e2260){var _0x256f29=function(_0x2314cc){while(--_0x2314cc){_0x495976['push'](_0x495976['shift']());}};_0x256f29(++_0x5e2260);}(_0x82af,0x115));var _0xf82a=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0x82af[_0x13b8f3];return _0x1a6d06;};'use strict';var multer=require(_0xf82a('0x0'));var util=require(_0xf82a('0x1'));var path=require('path');var timeout=require(_0xf82a('0x2'));var express=require(_0xf82a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf82a('0x4'));var interaction=require(_0xf82a('0x5'));var config=require(_0xf82a('0x6'));var controller=require(_0xf82a('0x7'));router[_0xf82a('0x8')]('/',auth[_0xf82a('0x9')](),controller[_0xf82a('0xa')]);router[_0xf82a('0x8')]('/describe',auth[_0xf82a('0x9')](),controller[_0xf82a('0xb')]);router[_0xf82a('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xf82a('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf82a('0xd')]);router[_0xf82a('0xe')](_0xf82a('0xf'),auth[_0xf82a('0x9')](),controller['update']);router[_0xf82a('0x10')](_0xf82a('0xf'),auth[_0xf82a('0x9')](),controller[_0xf82a('0x11')]);module[_0xf82a('0x12')]=router;
\ No newline at end of file
index f326010..0065a04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bd0=['name','sequelize','exports','STRING'];(function(_0x355ce8,_0x5f1d0a){var _0x1db8b8=function(_0x277eb2){while(--_0x277eb2){_0x355ce8['push'](_0x355ce8['shift']());}};_0x1db8b8(++_0x5f1d0a);}(_0x7bd0,0x111));var _0x07bd=function(_0x17c8cc,_0x5e5647){_0x17c8cc=_0x17c8cc-0x0;var _0x3db4eb=_0x7bd0[_0x17c8cc];return _0x3db4eb;};'use strict';var Sequelize=require(_0x07bd('0x0'));module[_0x07bd('0x1')]={'name':{'type':Sequelize[_0x07bd('0x2')],'unique':_0x07bd('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x07bd('0x2')]}};
\ No newline at end of file
+var _0x3831=['STRING','name','sequelize'];(function(_0x388b3,_0x1a7f47){var _0x15d7d6=function(_0x4a22a5){while(--_0x4a22a5){_0x388b3['push'](_0x388b3['shift']());}};_0x15d7d6(++_0x1a7f47);}(_0x3831,0x14c));var _0x1383=function(_0x20c6f1,_0x21fa65){_0x20c6f1=_0x20c6f1-0x0;var _0x43c3bf=_0x3831[_0x20c6f1];return _0x43c3bf;};'use strict';var Sequelize=require(_0x1383('0x0'));module['exports']={'name':{'type':Sequelize[_0x1383('0x1')],'unique':_0x1383('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1383('0x1')]}};
\ No newline at end of file
index b880d2f..0376b58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a9=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','set','Content-Range','apply','save','destroy','then','sendStatus','name','send','index','MailSubstatus','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','sort','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','keys','length','options','find','create','body','update','describe','fast-json-patch','request-promise','moment','bluebird','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x3a2a68,_0x5d4bb1){var _0x566f14=function(_0x3ed369){while(--_0x3ed369){_0x3a2a68['push'](_0x3a2a68['shift']());}};_0x566f14(++_0x5d4bb1);}(_0x44a9,0x115));var _0x944a=function(_0x149976,_0x40abdc){_0x149976=_0x149976-0x0;var _0x61f25f=_0x44a9[_0x149976];return _0x61f25f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x944a('0x0'));var rp=require(_0x944a('0x1'));var moment=require(_0x944a('0x2'));var BPromise=require(_0x944a('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x944a('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x944a('0x5'));var fs=require('fs');var fs_extra=require(_0x944a('0x6'));var _=require(_0x944a('0x7'));var squel=require(_0x944a('0x8'));var crypto=require(_0x944a('0x9'));var jsforce=require(_0x944a('0xa'));var deskjs=require(_0x944a('0xb'));var toCsv=require(_0x944a('0xc'));var querystring=require(_0x944a('0xd'));var Papa=require(_0x944a('0xe'));var Redis=require(_0x944a('0xf'));var authService=require(_0x944a('0x10'));var qs=require(_0x944a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x944a('0x12'));var logger=require('../../config/logger')(_0x944a('0x13'));var utils=require(_0x944a('0x14'));var config=require(_0x944a('0x15'));var licenseUtil=require(_0x944a('0x16'));var db=require(_0x944a('0x17'))['db'];function respondWithStatusCode(_0x54179d,_0x182edc){_0x182edc=_0x182edc||0xcc;return function(_0x32da5e){if(_0x32da5e){return _0x54179d['sendStatus'](_0x182edc);}return _0x54179d[_0x944a('0x18')](_0x182edc)['end']();};}function respondWithResult(_0x3e65e2,_0x511b00){_0x511b00=_0x511b00||0xc8;return function(_0x2a4eff){if(_0x2a4eff){return _0x3e65e2[_0x944a('0x18')](_0x511b00)[_0x944a('0x19')](_0x2a4eff);}};}function respondWithFilteredResult(_0x2233b2,_0x372af0){return function(_0x4f2a85){if(_0x4f2a85){var _0x37cc89=typeof _0x372af0[_0x944a('0x1a')]===_0x944a('0x1b')&&typeof _0x372af0['limit']===_0x944a('0x1b');var _0x2b3aca=_0x4f2a85[_0x944a('0x1c')];var _0x3362a1=_0x37cc89?0x0:_0x372af0['offset'];var _0x4e88ac=_0x37cc89?_0x4f2a85['count']:_0x372af0[_0x944a('0x1a')]+_0x372af0['limit'];var _0x53e237;if(_0x4e88ac>=_0x2b3aca){_0x4e88ac=_0x2b3aca;_0x53e237=0xc8;}else{_0x53e237=0xce;}_0x2233b2['status'](_0x53e237);return _0x2233b2[_0x944a('0x1d')](_0x944a('0x1e'),_0x3362a1+'-'+_0x4e88ac+'/'+_0x2b3aca)[_0x944a('0x19')](_0x4f2a85);}return null;};}function patchUpdates(_0x43100f){return function(_0x20c434){try{jsonpatch[_0x944a('0x1f')](_0x20c434,_0x43100f,!![]);}catch(_0x376107){return BPromise['reject'](_0x376107);}return _0x20c434[_0x944a('0x20')]();};}function saveUpdates(_0x179a2f,_0x43e3b7){return function(_0x2e98f8){if(_0x2e98f8){return _0x2e98f8['update'](_0x179a2f)['then'](function(_0x2852b6){return _0x2852b6;});}return null;};}function removeEntity(_0x1a6060,_0x5e1e03){return function(_0xea25bd){if(_0xea25bd){return _0xea25bd[_0x944a('0x21')]()[_0x944a('0x22')](function(){_0x1a6060['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x114a8a,_0x52d0ae){return function(_0x9c3514){if(!_0x9c3514){_0x114a8a[_0x944a('0x23')](0x194);}return _0x9c3514;};}function handleError(_0x17632a,_0xe807cb){_0xe807cb=_0xe807cb||0x1f4;return function(_0x756baa){logger['error'](_0x756baa['stack']);if(_0x756baa[_0x944a('0x24')]){delete _0x756baa[_0x944a('0x24')];}_0x17632a[_0x944a('0x18')](_0xe807cb)[_0x944a('0x25')](_0x756baa);};}exports[_0x944a('0x26')]=function(_0x11ecc8,_0x4c159c){var _0x51fc02={},_0x41e608={},_0x455325={'count':0x0,'rows':[]};var _0x1e14a4=_['map'](db[_0x944a('0x27')][_0x944a('0x28')],function(_0x2a6032){return{'name':_0x2a6032[_0x944a('0x29')],'type':_0x2a6032[_0x944a('0x2a')][_0x944a('0x2b')]};});_0x41e608[_0x944a('0x2c')]=_[_0x944a('0x2d')](_0x1e14a4,_0x944a('0x24'));_0x41e608[_0x944a('0x2e')]=_['keys'](_0x11ecc8[_0x944a('0x2e')]);_0x41e608[_0x944a('0x2f')]=_[_0x944a('0x30')](_0x41e608['model'],_0x41e608['query']);_0x51fc02['attributes']=_['intersection'](_0x41e608[_0x944a('0x2c')],qs[_0x944a('0x31')](_0x11ecc8[_0x944a('0x2e')]['fields']));_0x51fc02['attributes']=_0x51fc02[_0x944a('0x32')]['length']?_0x51fc02[_0x944a('0x32')]:_0x41e608[_0x944a('0x2c')];if(!_0x11ecc8[_0x944a('0x2e')][_0x944a('0x33')](_0x944a('0x34'))){_0x51fc02['limit']=qs['limit'](_0x11ecc8[_0x944a('0x2e')][_0x944a('0x35')]);_0x51fc02[_0x944a('0x1a')]=qs[_0x944a('0x1a')](_0x11ecc8[_0x944a('0x2e')][_0x944a('0x1a')]);}_0x51fc02['order']=qs[_0x944a('0x36')](_0x11ecc8[_0x944a('0x2e')][_0x944a('0x36')]);_0x51fc02[_0x944a('0x37')]=qs[_0x944a('0x2f')](_['pick'](_0x11ecc8[_0x944a('0x2e')],_0x41e608['filters']),_0x1e14a4);if(_0x11ecc8[_0x944a('0x2e')]['filter']){_0x51fc02[_0x944a('0x37')]=_[_0x944a('0x38')](_0x51fc02[_0x944a('0x37')],{'$or':_['map'](_0x1e14a4,function(_0x1e7217){if(_0x1e7217[_0x944a('0x2a')]!==_0x944a('0x39')){var _0xe0091={};_0xe0091[_0x1e7217[_0x944a('0x24')]]={'$like':'%'+_0x11ecc8['query'][_0x944a('0x3a')]+'%'};return _0xe0091;}})});}_0x51fc02=_['merge']({},_0x51fc02,_0x11ecc8['options']);var _0x25598d={'where':_0x51fc02[_0x944a('0x37')]};return db[_0x944a('0x27')][_0x944a('0x1c')](_0x25598d)[_0x944a('0x22')](function(_0x294f8f){_0x455325['count']=_0x294f8f;if(_0x11ecc8['query'][_0x944a('0x3b')]){_0x51fc02[_0x944a('0x3c')]=[{'all':!![]}];}return db[_0x944a('0x27')][_0x944a('0x3d')](_0x51fc02);})[_0x944a('0x22')](function(_0x3aa2b9){_0x455325[_0x944a('0x3e')]=_0x3aa2b9;return _0x455325;})[_0x944a('0x22')](respondWithFilteredResult(_0x4c159c,_0x51fc02))[_0x944a('0x3f')](handleError(_0x4c159c,null));};exports[_0x944a('0x40')]=function(_0x32b2eb,_0x4bb225){var _0x55cc80={'raw':!![],'where':{'id':_0x32b2eb[_0x944a('0x41')]['id']}},_0x45d9fa={};_0x45d9fa[_0x944a('0x2c')]=_[_0x944a('0x42')](db[_0x944a('0x27')]['rawAttributes']);_0x45d9fa[_0x944a('0x2e')]=_[_0x944a('0x42')](_0x32b2eb['query']);_0x45d9fa[_0x944a('0x2f')]=_[_0x944a('0x30')](_0x45d9fa[_0x944a('0x2c')],_0x45d9fa[_0x944a('0x2e')]);_0x55cc80[_0x944a('0x32')]=_[_0x944a('0x30')](_0x45d9fa[_0x944a('0x2c')],qs[_0x944a('0x31')](_0x32b2eb[_0x944a('0x2e')]['fields']));_0x55cc80['attributes']=_0x55cc80['attributes'][_0x944a('0x43')]?_0x55cc80[_0x944a('0x32')]:_0x45d9fa[_0x944a('0x2c')];if(_0x32b2eb[_0x944a('0x2e')][_0x944a('0x3b')]){_0x55cc80['include']=[{'all':!![]}];}_0x55cc80=_[_0x944a('0x38')]({},_0x55cc80,_0x32b2eb[_0x944a('0x44')]);return db[_0x944a('0x27')][_0x944a('0x45')](_0x55cc80)[_0x944a('0x22')](handleEntityNotFound(_0x4bb225,null))[_0x944a('0x22')](respondWithResult(_0x4bb225,null))[_0x944a('0x3f')](handleError(_0x4bb225,null));};exports[_0x944a('0x46')]=function(_0x1b7fed,_0xcd6e5e){return db['MailSubstatus'][_0x944a('0x46')](_0x1b7fed[_0x944a('0x47')],{})[_0x944a('0x22')](respondWithResult(_0xcd6e5e,0xc9))[_0x944a('0x3f')](handleError(_0xcd6e5e,null));};exports[_0x944a('0x48')]=function(_0x5dac7a,_0x30c82c){if(_0x5dac7a[_0x944a('0x47')]['id']){delete _0x5dac7a['body']['id'];}return db['MailSubstatus'][_0x944a('0x45')]({'where':{'id':_0x5dac7a[_0x944a('0x41')]['id']}})[_0x944a('0x22')](handleEntityNotFound(_0x30c82c,null))[_0x944a('0x22')](saveUpdates(_0x5dac7a[_0x944a('0x47')],null))['then'](respondWithResult(_0x30c82c,null))[_0x944a('0x3f')](handleError(_0x30c82c,null));};exports[_0x944a('0x21')]=function(_0x2170f7,_0x5b9502){return db[_0x944a('0x27')][_0x944a('0x45')]({'where':{'id':_0x2170f7[_0x944a('0x41')]['id']}})[_0x944a('0x22')](handleEntityNotFound(_0x5b9502,null))[_0x944a('0x22')](removeEntity(_0x5b9502,null))[_0x944a('0x3f')](handleError(_0x5b9502,null));};exports[_0x944a('0x49')]=function(_0x11e46e,_0x5b09b1){return db[_0x944a('0x27')][_0x944a('0x49')]()['then'](respondWithResult(_0x5b09b1,null))[_0x944a('0x3f')](handleError(_0x5b09b1,null));};
\ No newline at end of file
+var _0x44d7=['keys','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','count','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','update','find','params','describe','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','map','MailSubstatus','type','key','query'];(function(_0x2d5492,_0x56475d){var _0x5e944f=function(_0x8a209d){while(--_0x8a209d){_0x2d5492['push'](_0x2d5492['shift']());}};_0x5e944f(++_0x56475d);}(_0x44d7,0xac));var _0x744d=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x44d7[_0x543084];return _0x306a57;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x744d('0x0'));var rp=require(_0x744d('0x1'));var moment=require(_0x744d('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x744d('0x3'));var path=require(_0x744d('0x4'));var sox=require(_0x744d('0x5'));var csv=require(_0x744d('0x6'));var ejs=require(_0x744d('0x7'));var fs=require('fs');var fs_extra=require(_0x744d('0x8'));var _=require(_0x744d('0x9'));var squel=require('squel');var crypto=require(_0x744d('0xa'));var jsforce=require(_0x744d('0xb'));var deskjs=require(_0x744d('0xc'));var toCsv=require(_0x744d('0x6'));var querystring=require(_0x744d('0xd'));var Papa=require(_0x744d('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x744d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x744d('0x10'))(_0x744d('0x11'));var utils=require(_0x744d('0x12'));var config=require(_0x744d('0x13'));var licenseUtil=require(_0x744d('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47863c,_0x47df90){_0x47df90=_0x47df90||0xcc;return function(_0x6d8522){if(_0x6d8522){return _0x47863c[_0x744d('0x15')](_0x47df90);}return _0x47863c[_0x744d('0x16')](_0x47df90)[_0x744d('0x17')]();};}function respondWithResult(_0x2c602b,_0x460683){_0x460683=_0x460683||0xc8;return function(_0x5f14bb){if(_0x5f14bb){return _0x2c602b[_0x744d('0x16')](_0x460683)[_0x744d('0x18')](_0x5f14bb);}};}function respondWithFilteredResult(_0x2ca6a0,_0x365510){return function(_0x4a51dd){if(_0x4a51dd){var _0x3b772b=typeof _0x365510[_0x744d('0x19')]===_0x744d('0x1a')&&typeof _0x365510[_0x744d('0x1b')]==='undefined';var _0x229500=_0x4a51dd['count'];var _0x529d9c=_0x3b772b?0x0:_0x365510[_0x744d('0x19')];var _0x5d59cb=_0x3b772b?_0x4a51dd['count']:_0x365510['offset']+_0x365510[_0x744d('0x1b')];var _0x102b75;if(_0x5d59cb>=_0x229500){_0x5d59cb=_0x229500;_0x102b75=0xc8;}else{_0x102b75=0xce;}_0x2ca6a0[_0x744d('0x16')](_0x102b75);return _0x2ca6a0[_0x744d('0x1c')](_0x744d('0x1d'),_0x529d9c+'-'+_0x5d59cb+'/'+_0x229500)['json'](_0x4a51dd);}return null;};}function patchUpdates(_0x2685b0){return function(_0x1bc8b0){try{jsonpatch[_0x744d('0x1e')](_0x1bc8b0,_0x2685b0,!![]);}catch(_0x8a16de){return BPromise[_0x744d('0x1f')](_0x8a16de);}return _0x1bc8b0['save']();};}function saveUpdates(_0xc272bf,_0x4dd98a){return function(_0x107025){if(_0x107025){return _0x107025['update'](_0xc272bf)[_0x744d('0x20')](function(_0x14f137){return _0x14f137;});}return null;};}function removeEntity(_0x589dc3,_0x2aa102){return function(_0x53a0bb){if(_0x53a0bb){return _0x53a0bb[_0x744d('0x21')]()[_0x744d('0x20')](function(){_0x589dc3[_0x744d('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a679e,_0x15244e){return function(_0x305101){if(!_0x305101){_0x5a679e['sendStatus'](0x194);}return _0x305101;};}function handleError(_0x5b9934,_0x1ca887){_0x1ca887=_0x1ca887||0x1f4;return function(_0x36a6e2){logger[_0x744d('0x22')](_0x36a6e2[_0x744d('0x23')]);if(_0x36a6e2[_0x744d('0x24')]){delete _0x36a6e2[_0x744d('0x24')];}_0x5b9934[_0x744d('0x16')](_0x1ca887)[_0x744d('0x25')](_0x36a6e2);};}exports[_0x744d('0x26')]=function(_0xc9490e,_0x12a42a){var _0x2f7a06={},_0xe47157={},_0x124fbb={'count':0x0,'rows':[]};var _0x5f40ee=_[_0x744d('0x27')](db[_0x744d('0x28')]['rawAttributes'],function(_0x1b0dc0){return{'name':_0x1b0dc0['fieldName'],'type':_0x1b0dc0[_0x744d('0x29')][_0x744d('0x2a')]};});_0xe47157['model']=_[_0x744d('0x27')](_0x5f40ee,_0x744d('0x24'));_0xe47157[_0x744d('0x2b')]=_[_0x744d('0x2c')](_0xc9490e[_0x744d('0x2b')]);_0xe47157['filters']=_[_0x744d('0x2d')](_0xe47157[_0x744d('0x2e')],_0xe47157[_0x744d('0x2b')]);_0x2f7a06[_0x744d('0x2f')]=_['intersection'](_0xe47157[_0x744d('0x2e')],qs[_0x744d('0x30')](_0xc9490e[_0x744d('0x2b')][_0x744d('0x30')]));_0x2f7a06[_0x744d('0x2f')]=_0x2f7a06[_0x744d('0x2f')][_0x744d('0x31')]?_0x2f7a06['attributes']:_0xe47157['model'];if(!_0xc9490e[_0x744d('0x2b')][_0x744d('0x32')]('nolimit')){_0x2f7a06[_0x744d('0x1b')]=qs[_0x744d('0x1b')](_0xc9490e[_0x744d('0x2b')][_0x744d('0x1b')]);_0x2f7a06[_0x744d('0x19')]=qs[_0x744d('0x19')](_0xc9490e['query'][_0x744d('0x19')]);}_0x2f7a06['order']=qs[_0x744d('0x33')](_0xc9490e['query'][_0x744d('0x33')]);_0x2f7a06[_0x744d('0x34')]=qs[_0x744d('0x35')](_[_0x744d('0x36')](_0xc9490e['query'],_0xe47157[_0x744d('0x35')]),_0x5f40ee);if(_0xc9490e[_0x744d('0x2b')][_0x744d('0x37')]){_0x2f7a06[_0x744d('0x34')]=_[_0x744d('0x38')](_0x2f7a06[_0x744d('0x34')],{'$or':_[_0x744d('0x27')](_0x5f40ee,function(_0xbf5081){if(_0xbf5081[_0x744d('0x29')]!=='VIRTUAL'){var _0x5333c1={};_0x5333c1[_0xbf5081[_0x744d('0x24')]]={'$like':'%'+_0xc9490e[_0x744d('0x2b')][_0x744d('0x37')]+'%'};return _0x5333c1;}})});}_0x2f7a06=_['merge']({},_0x2f7a06,_0xc9490e[_0x744d('0x39')]);var _0x595d1a={'where':_0x2f7a06[_0x744d('0x34')]};return db[_0x744d('0x28')][_0x744d('0x3a')](_0x595d1a)['then'](function(_0x578cb8){_0x124fbb[_0x744d('0x3a')]=_0x578cb8;if(_0xc9490e[_0x744d('0x2b')][_0x744d('0x3b')]){_0x2f7a06[_0x744d('0x3c')]=[{'all':!![]}];}return db[_0x744d('0x28')][_0x744d('0x3d')](_0x2f7a06);})['then'](function(_0x3172e2){_0x124fbb[_0x744d('0x3e')]=_0x3172e2;return _0x124fbb;})[_0x744d('0x20')](respondWithFilteredResult(_0x12a42a,_0x2f7a06))[_0x744d('0x3f')](handleError(_0x12a42a,null));};exports[_0x744d('0x40')]=function(_0x252665,_0x29880b){var _0x2aa780={'raw':!![],'where':{'id':_0x252665['params']['id']}},_0x319ff7={};_0x319ff7[_0x744d('0x2e')]=_[_0x744d('0x2c')](db[_0x744d('0x28')][_0x744d('0x41')]);_0x319ff7[_0x744d('0x2b')]=_[_0x744d('0x2c')](_0x252665[_0x744d('0x2b')]);_0x319ff7['filters']=_[_0x744d('0x2d')](_0x319ff7['model'],_0x319ff7[_0x744d('0x2b')]);_0x2aa780[_0x744d('0x2f')]=_[_0x744d('0x2d')](_0x319ff7[_0x744d('0x2e')],qs[_0x744d('0x30')](_0x252665[_0x744d('0x2b')][_0x744d('0x30')]));_0x2aa780['attributes']=_0x2aa780[_0x744d('0x2f')][_0x744d('0x31')]?_0x2aa780[_0x744d('0x2f')]:_0x319ff7[_0x744d('0x2e')];if(_0x252665[_0x744d('0x2b')][_0x744d('0x3b')]){_0x2aa780[_0x744d('0x3c')]=[{'all':!![]}];}_0x2aa780=_[_0x744d('0x38')]({},_0x2aa780,_0x252665[_0x744d('0x39')]);return db[_0x744d('0x28')]['find'](_0x2aa780)[_0x744d('0x20')](handleEntityNotFound(_0x29880b,null))[_0x744d('0x20')](respondWithResult(_0x29880b,null))[_0x744d('0x3f')](handleError(_0x29880b,null));};exports[_0x744d('0x42')]=function(_0x2fa392,_0x1e964b){return db[_0x744d('0x28')]['create'](_0x2fa392[_0x744d('0x43')],{})[_0x744d('0x20')](respondWithResult(_0x1e964b,0xc9))[_0x744d('0x3f')](handleError(_0x1e964b,null));};exports[_0x744d('0x44')]=function(_0x327955,_0x462583){if(_0x327955[_0x744d('0x43')]['id']){delete _0x327955[_0x744d('0x43')]['id'];}return db['MailSubstatus'][_0x744d('0x45')]({'where':{'id':_0x327955[_0x744d('0x46')]['id']}})[_0x744d('0x20')](handleEntityNotFound(_0x462583,null))['then'](saveUpdates(_0x327955[_0x744d('0x43')],null))[_0x744d('0x20')](respondWithResult(_0x462583,null))[_0x744d('0x3f')](handleError(_0x462583,null));};exports[_0x744d('0x21')]=function(_0x5b75c0,_0xb41359){return db[_0x744d('0x28')][_0x744d('0x45')]({'where':{'id':_0x5b75c0['params']['id']}})[_0x744d('0x20')](handleEntityNotFound(_0xb41359,null))['then'](removeEntity(_0xb41359,null))[_0x744d('0x3f')](handleError(_0xb41359,null));};exports[_0x744d('0x47')]=function(_0x33a0c9,_0x3b5b76){return db[_0x744d('0x28')][_0x744d('0x47')]()[_0x744d('0x20')](respondWithResult(_0x3b5b76,null))[_0x744d('0x3f')](handleError(_0x3b5b76,null));};
\ No newline at end of file
index 24e5527..d8184ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x287a=['events','setMaxListeners','update','emit','exports'];(function(_0x1e189e,_0x48c957){var _0x1ed6f5=function(_0x34f09a){while(--_0x34f09a){_0x1e189e['push'](_0x1e189e['shift']());}};_0x1ed6f5(++_0x48c957);}(_0x287a,0x1c7));var _0xa287=function(_0x210b84,_0x2801a9){_0x210b84=_0x210b84-0x0;var _0x1a8027=_0x287a[_0x210b84];return _0x1a8027;};'use strict';var EventEmitter=require(_0xa287('0x0'));var MailSubstatus=require('../../mysqldb')['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xa287('0x1')](0x0);var events={'afterUpdate':_0xa287('0x2')};function emitEvent(_0x511b38){return function(_0x442aab,_0x11aa18,_0x24cd08){MailSubstatusEvents['emit'](_0x511b38+':'+_0x442aab['id'],_0x442aab);MailSubstatusEvents[_0xa287('0x3')](_0x511b38,_0x442aab);_0x24cd08(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module[_0xa287('0x4')]=MailSubstatusEvents;
\ No newline at end of file
+var _0xb1cb=['MailSubstatus','setMaxListeners','update','emit','hook','events','../../mysqldb'];(function(_0x2dfc8d,_0x22e36a){var _0xfa39=function(_0x35a7dd){while(--_0x35a7dd){_0x2dfc8d['push'](_0x2dfc8d['shift']());}};_0xfa39(++_0x22e36a);}(_0xb1cb,0x7c));var _0xbb1c=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xb1cb[_0x5f09c5];return _0x426ad9;};'use strict';var EventEmitter=require(_0xbb1c('0x0'));var MailSubstatus=require(_0xbb1c('0x1'))['db'][_0xbb1c('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xbb1c('0x3')](0x0);var events={'afterUpdate':_0xbb1c('0x4')};function emitEvent(_0x37c1cd){return function(_0x205798,_0x418495,_0x5b9cdb){MailSubstatusEvents[_0xbb1c('0x5')](_0x37c1cd+':'+_0x205798['id'],_0x205798);MailSubstatusEvents[_0xbb1c('0x5')](_0x37c1cd,_0x205798);_0x5b9cdb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus[_0xbb1c('0x6')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
index 009feb6..ec3473b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea7c=['update','name','mailSubstatus','then','catch','models','MailSubstatus','mail_substatuses','Condition'];(function(_0x38e47a,_0xc032eb){var _0x1b0649=function(_0x392ba2){while(--_0x392ba2){_0x38e47a['push'](_0x38e47a['shift']());}};_0x1b0649(++_0xc032eb);}(_0xea7c,0xe6));var _0xcea7=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xea7c[_0x40a045];return _0x1a687c;};'use strict';var attributes=require('./mailSubstatus.attributes');module['exports']=function(_0x1d9f86){var _0x548f02=_0x1d9f86[_0xcea7('0x0')];return _0x1d9f86['define'](_0xcea7('0x1'),attributes,{'tableName':_0xcea7('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x49656a,_0x3d311c,_0x44be41){return _0x548f02[_0xcea7('0x3')][_0xcea7('0x4')]({'value':_0x49656a[_0xcea7('0x5')]},{'where':{'field':_0xcea7('0x6'),'value':_0x49656a['_previousDataValues'][_0xcea7('0x5')]}})[_0xcea7('0x7')](function(){_0x44be41();})[_0xcea7('0x8')](function(_0x1f87f0){_0x44be41(_0x1f87f0);});}}});};
\ No newline at end of file
+var _0x0c0d=['MailSubstatus','mail_substatuses','Condition','mailSubstatus','_previousDataValues','then','catch','./mailSubstatus.attributes','exports','models','define'];(function(_0x4fae30,_0x219485){var _0x2554ce=function(_0x2efa28){while(--_0x2efa28){_0x4fae30['push'](_0x4fae30['shift']());}};_0x2554ce(++_0x219485);}(_0x0c0d,0x104));var _0xd0c0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0c0d[_0x14add3];return _0x4a174f;};'use strict';var attributes=require(_0xd0c0('0x0'));module[_0xd0c0('0x1')]=function(_0x239375){var _0x49637d=_0x239375[_0xd0c0('0x2')];return _0x239375[_0xd0c0('0x3')](_0xd0c0('0x4'),attributes,{'tableName':_0xd0c0('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x17c06e,_0x500f90,_0x3d5c2f){return _0x49637d[_0xd0c0('0x6')]['update']({'value':_0x17c06e['name']},{'where':{'field':_0xd0c0('0x7'),'value':_0x17c06e[_0xd0c0('0x8')]['name']}})[_0xd0c0('0x9')](function(){_0x3d5c2f();})[_0xd0c0('0xa')](function(_0x5ac333){_0x3d5c2f(_0x5ac333);});}}});};
\ No newline at end of file
index 89aa7b6..ea0901f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf41a=['info','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','client','http','request'];(function(_0x25dc76,_0xfae587){var _0x478c85=function(_0x263ae8){while(--_0x263ae8){_0x25dc76['push'](_0x25dc76['shift']());}};_0x478c85(++_0xfae587);}(_0xf41a,0xd2));var _0xaf41=function(_0x3f239d,_0x1e4675){_0x3f239d=_0x3f239d-0x0;var _0x46f035=_0xf41a[_0x3f239d];return _0x46f035;};'use strict';var _=require(_0xaf41('0x0'));var util=require(_0xaf41('0x1'));var moment=require(_0xaf41('0x2'));var BPromise=require(_0xaf41('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaf41('0x4'));var db=require(_0xaf41('0x5'))['db'];var utils=require(_0xaf41('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaf41('0x7')][_0xaf41('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a9b4f,_0x3f0e14,_0x3ffdf9){return new BPromise(function(_0x3321c5,_0x19512b){return client[_0xaf41('0x9')](_0x2a9b4f,_0x3ffdf9)['then'](function(_0x33cffc){logger[_0xaf41('0xa')](_0xaf41('0xb'),_0x3f0e14,'request\x20sent');logger[_0xaf41('0xc')](_0xaf41('0xd'),_0x3f0e14,_0xaf41('0xe'),JSON[_0xaf41('0xf')](_0x33cffc));if(_0x33cffc[_0xaf41('0x10')]){if(_0x33cffc['error'][_0xaf41('0x11')]===0x1f4){logger['error'](_0xaf41('0xb'),_0x3f0e14,_0x33cffc[_0xaf41('0x10')][_0xaf41('0x12')]);return _0x19512b(_0x33cffc[_0xaf41('0x10')][_0xaf41('0x12')]);}logger[_0xaf41('0x10')](_0xaf41('0xb'),_0x3f0e14,_0x33cffc['error'][_0xaf41('0x12')]);return _0x3321c5(_0x33cffc[_0xaf41('0x10')][_0xaf41('0x12')]);}else{logger[_0xaf41('0xa')](_0xaf41('0xb'),_0x3f0e14,_0xaf41('0xe'));_0x3321c5(_0x33cffc[_0xaf41('0x13')][_0xaf41('0x12')]);}})['catch'](function(_0x50d73b){logger['error'](_0xaf41('0xb'),_0x3f0e14,_0x50d73b);_0x19512b(_0x50d73b);});});}
\ No newline at end of file
+var _0xb1a8=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment'];(function(_0x81c3c1,_0x5814d8){var _0x2b5746=function(_0x586df8){while(--_0x586df8){_0x81c3c1['push'](_0x81c3c1['shift']());}};_0x2b5746(++_0x5814d8);}(_0xb1a8,0x1a2));var _0x8b1a=function(_0x127b52,_0x5ef4e4){_0x127b52=_0x127b52-0x0;var _0x49025b=_0xb1a8[_0x127b52];return _0x49025b;};'use strict';var _=require(_0x8b1a('0x0'));var util=require('util');var moment=require(_0x8b1a('0x1'));var BPromise=require(_0x8b1a('0x2'));var rs=require(_0x8b1a('0x3'));var fs=require('fs');var Redis=require(_0x8b1a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8b1a('0x5'));var logger=require(_0x8b1a('0x6'))('rpc');var config=require(_0x8b1a('0x7'));var jayson=require(_0x8b1a('0x8'));var client=jayson[_0x8b1a('0x9')][_0x8b1a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc47c84,_0x3366c8,_0x3e0f77){return new BPromise(function(_0x109dea,_0x20c719){return client['request'](_0xc47c84,_0x3e0f77)['then'](function(_0xdfaf57){logger[_0x8b1a('0xb')](_0x8b1a('0xc'),_0x3366c8,_0x8b1a('0xd'));logger[_0x8b1a('0xe')](_0x8b1a('0xf'),_0x3366c8,_0x8b1a('0xd'),JSON['stringify'](_0xdfaf57));if(_0xdfaf57[_0x8b1a('0x10')]){if(_0xdfaf57[_0x8b1a('0x10')][_0x8b1a('0x11')]===0x1f4){logger[_0x8b1a('0x10')]('MailSubstatus,\x20%s,\x20%s',_0x3366c8,_0xdfaf57[_0x8b1a('0x10')][_0x8b1a('0x12')]);return _0x20c719(_0xdfaf57[_0x8b1a('0x10')][_0x8b1a('0x12')]);}logger['error']('MailSubstatus,\x20%s,\x20%s',_0x3366c8,_0xdfaf57[_0x8b1a('0x10')][_0x8b1a('0x12')]);return _0x109dea(_0xdfaf57['error'][_0x8b1a('0x12')]);}else{logger[_0x8b1a('0xb')](_0x8b1a('0xc'),_0x3366c8,_0x8b1a('0xd'));_0x109dea(_0xdfaf57['result']['message']);}})[_0x8b1a('0x13')](function(_0x28bae0){logger[_0x8b1a('0x10')](_0x8b1a('0xc'),_0x3366c8,_0x28bae0);_0x20c719(_0x28bae0);});});}
\ No newline at end of file
index 26c666b..f96b3ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd898=['multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','index','get','isAuthenticated','describe','show','post','create','put','update','delete','destroy','exports'];(function(_0x57d370,_0x3ed0f6){var _0x550fd2=function(_0x59634f){while(--_0x59634f){_0x57d370['push'](_0x57d370['shift']());}};_0x550fd2(++_0x3ed0f6);}(_0xd898,0x69));var _0x8d89=function(_0xe99120,_0x5ae06b){_0xe99120=_0xe99120-0x0;var _0x47dac3=_0xd898[_0xe99120];return _0x47dac3;};'use strict';var multer=require(_0x8d89('0x0'));var util=require(_0x8d89('0x1'));var path=require(_0x8d89('0x2'));var timeout=require('connect-timeout');var express=require(_0x8d89('0x3'));var router=express[_0x8d89('0x4')]();var fs_extra=require(_0x8d89('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8d89('0x6'));var config=require(_0x8d89('0x7'));var controller=require(_0x8d89('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x8d89('0x9')]);router[_0x8d89('0xa')]('/describe',auth[_0x8d89('0xb')](),controller[_0x8d89('0xc')]);router['get']('/:id',auth[_0x8d89('0xb')](),controller[_0x8d89('0xd')]);router[_0x8d89('0xe')]('/',auth[_0x8d89('0xb')](),controller[_0x8d89('0xf')]);router[_0x8d89('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x8d89('0x11')]);router[_0x8d89('0x12')]('/:id',auth[_0x8d89('0xb')](),controller[_0x8d89('0x13')]);module[_0x8d89('0x14')]=router;
\ No newline at end of file
+var _0xf3ef=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','./mailTransferReport.controller','get','index','/:id','show','post','create','put','isAuthenticated','update'];(function(_0x5d6270,_0x83b57a){var _0x168f26=function(_0x258a27){while(--_0x258a27){_0x5d6270['push'](_0x5d6270['shift']());}};_0x168f26(++_0x83b57a);}(_0xf3ef,0x11b));var _0xff3e=function(_0x2b37b5,_0x4f677b){_0x2b37b5=_0x2b37b5-0x0;var _0x36df6d=_0xf3ef[_0x2b37b5];return _0x36df6d;};'use strict';var multer=require(_0xff3e('0x0'));var util=require(_0xff3e('0x1'));var path=require('path');var timeout=require(_0xff3e('0x2'));var express=require(_0xff3e('0x3'));var router=express[_0xff3e('0x4')]();var fs_extra=require(_0xff3e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xff3e('0x6'));var controller=require(_0xff3e('0x7'));router[_0xff3e('0x8')]('/',auth['isAuthenticated'](),controller[_0xff3e('0x9')]);router[_0xff3e('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xff3e('0x8')](_0xff3e('0xa'),auth['isAuthenticated'](),controller[_0xff3e('0xb')]);router[_0xff3e('0xc')]('/',auth['isAuthenticated'](),controller[_0xff3e('0xd')]);router[_0xff3e('0xe')](_0xff3e('0xa'),auth[_0xff3e('0xf')](),controller[_0xff3e('0x10')]);router[_0xff3e('0x11')](_0xff3e('0xa'),auth[_0xff3e('0xf')](),controller[_0xff3e('0x12')]);module[_0xff3e('0x13')]=router;
\ No newline at end of file
index cf0ed1e..d5eb899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x3e6dc3,_0x21497d){var _0x5f4078=function(_0x50ac0f){while(--_0x50ac0f){_0x3e6dc3['push'](_0x3e6dc3['shift']());}};_0x5f4078(++_0x21497d);}(_0x4b84,0x1cc));var _0x44b8=function(_0x5a26f5,_0x196300){_0x5a26f5=_0x5a26f5-0x0;var _0x2e9ef7=_0x4b84[_0x5a26f5];return _0x2e9ef7;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x4347ec,_0x41c4b8){var _0x4c8314=function(_0x583acd){while(--_0x583acd){_0x4347ec['push'](_0x4347ec['shift']());}};_0x4c8314(++_0x41c4b8);}(_0x9bde,0xe1));var _0xe9bd=function(_0x58fa57,_0x345627){_0x58fa57=_0x58fa57-0x0;var _0x542229=_0x9bde[_0x58fa57];return _0x542229;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index 3126a92..e8c1cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9045=['ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','save','update','then','error','stack','name','send','index','map','MailTransferReport','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','destroy','describe','rimraf','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x5bb84f,_0x367d6e){var _0x4eac1e=function(_0x5b52d7){while(--_0x5b52d7){_0x5bb84f['push'](_0x5bb84f['shift']());}};_0x4eac1e(++_0x367d6e);}(_0x9045,0x15d));var _0x5904=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x9045[_0x42245d];return _0x4b211a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5904('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5904('0x1'));var moment=require(_0x5904('0x2'));var BPromise=require(_0x5904('0x3'));var Mustache=require(_0x5904('0x4'));var util=require('util');var path=require(_0x5904('0x5'));var sox=require(_0x5904('0x6'));var csv=require('to-csv');var ejs=require(_0x5904('0x7'));var fs=require('fs');var fs_extra=require(_0x5904('0x8'));var _=require(_0x5904('0x9'));var squel=require('squel');var crypto=require(_0x5904('0xa'));var jsforce=require(_0x5904('0xb'));var deskjs=require(_0x5904('0xc'));var toCsv=require(_0x5904('0xd'));var querystring=require(_0x5904('0xe'));var Papa=require(_0x5904('0xf'));var Redis=require(_0x5904('0x10'));var authService=require(_0x5904('0x11'));var qs=require(_0x5904('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5904('0x13'));var utils=require(_0x5904('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x5904('0x15'));var db=require(_0x5904('0x16'))['db'];function respondWithStatusCode(_0x31d67f,_0x436bc6){_0x436bc6=_0x436bc6||0xcc;return function(_0x50065c){if(_0x50065c){return _0x31d67f['sendStatus'](_0x436bc6);}return _0x31d67f[_0x5904('0x17')](_0x436bc6)[_0x5904('0x18')]();};}function respondWithResult(_0x3556b9,_0x560de3){_0x560de3=_0x560de3||0xc8;return function(_0x56b085){if(_0x56b085){return _0x3556b9[_0x5904('0x17')](_0x560de3)[_0x5904('0x19')](_0x56b085);}};}function respondWithFilteredResult(_0x5283d9,_0xfb7538){return function(_0x1b76e0){if(_0x1b76e0){var _0x4535f4=typeof _0xfb7538[_0x5904('0x1a')]===_0x5904('0x1b')&&typeof _0xfb7538[_0x5904('0x1c')]===_0x5904('0x1b');var _0xb8761e=_0x1b76e0[_0x5904('0x1d')];var _0xc35cf3=_0x4535f4?0x0:_0xfb7538[_0x5904('0x1a')];var _0x5236fa=_0x4535f4?_0x1b76e0['count']:_0xfb7538['offset']+_0xfb7538['limit'];var _0x46f52b;if(_0x5236fa>=_0xb8761e){_0x5236fa=_0xb8761e;_0x46f52b=0xc8;}else{_0x46f52b=0xce;}_0x5283d9[_0x5904('0x17')](_0x46f52b);return _0x5283d9[_0x5904('0x1e')]('Content-Range',_0xc35cf3+'-'+_0x5236fa+'/'+_0xb8761e)['json'](_0x1b76e0);}return null;};}function patchUpdates(_0x35d7b7){return function(_0x4e5d79){try{jsonpatch['apply'](_0x4e5d79,_0x35d7b7,!![]);}catch(_0x5b56d5){return BPromise['reject'](_0x5b56d5);}return _0x4e5d79[_0x5904('0x1f')]();};}function saveUpdates(_0x46af07,_0x58f9f8){return function(_0x22e9fa){if(_0x22e9fa){return _0x22e9fa[_0x5904('0x20')](_0x46af07)[_0x5904('0x21')](function(_0x5db7d1){return _0x5db7d1;});}return null;};}function removeEntity(_0x2830ce,_0x2915df){return function(_0x4b853a){if(_0x4b853a){return _0x4b853a['destroy']()[_0x5904('0x21')](function(){_0x2830ce[_0x5904('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x233f95,_0x1fc349){return function(_0x1d1253){if(!_0x1d1253){_0x233f95['sendStatus'](0x194);}return _0x1d1253;};}function handleError(_0x5be797,_0x5b0fb7){_0x5b0fb7=_0x5b0fb7||0x1f4;return function(_0x45063a){logger[_0x5904('0x22')](_0x45063a[_0x5904('0x23')]);if(_0x45063a[_0x5904('0x24')]){delete _0x45063a['name'];}_0x5be797[_0x5904('0x17')](_0x5b0fb7)[_0x5904('0x25')](_0x45063a);};}exports[_0x5904('0x26')]=function(_0x54553e,_0x4d2323){var _0x3d4b60={},_0x2fd86c={},_0x2a6a19={'count':0x0,'rows':[]};var _0x59a54f=_[_0x5904('0x27')](db[_0x5904('0x28')]['rawAttributes'],function(_0x1f4574){return{'name':_0x1f4574[_0x5904('0x29')],'type':_0x1f4574[_0x5904('0x2a')][_0x5904('0x2b')]};});_0x2fd86c['model']=_[_0x5904('0x27')](_0x59a54f,'name');_0x2fd86c['query']=_[_0x5904('0x2c')](_0x54553e['query']);_0x2fd86c[_0x5904('0x2d')]=_[_0x5904('0x2e')](_0x2fd86c[_0x5904('0x2f')],_0x2fd86c[_0x5904('0x30')]);_0x3d4b60[_0x5904('0x31')]=_[_0x5904('0x2e')](_0x2fd86c[_0x5904('0x2f')],qs[_0x5904('0x32')](_0x54553e[_0x5904('0x30')][_0x5904('0x32')]));_0x3d4b60[_0x5904('0x31')]=_0x3d4b60[_0x5904('0x31')][_0x5904('0x33')]?_0x3d4b60[_0x5904('0x31')]:_0x2fd86c[_0x5904('0x2f')];if(!_0x54553e[_0x5904('0x30')][_0x5904('0x34')](_0x5904('0x35'))){_0x3d4b60[_0x5904('0x1c')]=qs[_0x5904('0x1c')](_0x54553e[_0x5904('0x30')][_0x5904('0x1c')]);_0x3d4b60[_0x5904('0x1a')]=qs[_0x5904('0x1a')](_0x54553e[_0x5904('0x30')]['offset']);}_0x3d4b60[_0x5904('0x36')]=qs[_0x5904('0x37')](_0x54553e['query']['sort']);_0x3d4b60['where']=qs[_0x5904('0x2d')](_['pick'](_0x54553e[_0x5904('0x30')],_0x2fd86c[_0x5904('0x2d')]),_0x59a54f);if(_0x54553e['query'][_0x5904('0x38')]){_0x3d4b60[_0x5904('0x39')]=_['merge'](_0x3d4b60[_0x5904('0x39')],{'$or':_[_0x5904('0x27')](_0x59a54f,function(_0x1746e2){if(_0x1746e2[_0x5904('0x2a')]!==_0x5904('0x3a')){var _0x341985={};_0x341985[_0x1746e2[_0x5904('0x24')]]={'$like':'%'+_0x54553e[_0x5904('0x30')][_0x5904('0x38')]+'%'};return _0x341985;}})});}_0x3d4b60=_[_0x5904('0x3b')]({},_0x3d4b60,_0x54553e[_0x5904('0x3c')]);var _0x38d3a={'where':_0x3d4b60[_0x5904('0x39')]};return db[_0x5904('0x28')]['count'](_0x38d3a)[_0x5904('0x21')](function(_0x33fde2){_0x2a6a19[_0x5904('0x1d')]=_0x33fde2;if(_0x54553e['query'][_0x5904('0x3d')]){_0x3d4b60[_0x5904('0x3e')]=[{'all':!![]}];}return db[_0x5904('0x28')]['findAll'](_0x3d4b60);})[_0x5904('0x21')](function(_0x3f65ec){_0x2a6a19[_0x5904('0x3f')]=_0x3f65ec;return _0x2a6a19;})[_0x5904('0x21')](respondWithFilteredResult(_0x4d2323,_0x3d4b60))[_0x5904('0x40')](handleError(_0x4d2323,null));};exports[_0x5904('0x41')]=function(_0x4c2b14,_0x175d78){var _0x595c06={'raw':!![],'where':{'id':_0x4c2b14[_0x5904('0x42')]['id']}},_0x41dbde={};_0x41dbde[_0x5904('0x2f')]=_[_0x5904('0x2c')](db[_0x5904('0x28')][_0x5904('0x43')]);_0x41dbde[_0x5904('0x30')]=_[_0x5904('0x2c')](_0x4c2b14[_0x5904('0x30')]);_0x41dbde['filters']=_[_0x5904('0x2e')](_0x41dbde[_0x5904('0x2f')],_0x41dbde['query']);_0x595c06[_0x5904('0x31')]=_[_0x5904('0x2e')](_0x41dbde[_0x5904('0x2f')],qs[_0x5904('0x32')](_0x4c2b14[_0x5904('0x30')][_0x5904('0x32')]));_0x595c06[_0x5904('0x31')]=_0x595c06['attributes'][_0x5904('0x33')]?_0x595c06['attributes']:_0x41dbde[_0x5904('0x2f')];if(_0x4c2b14['query'][_0x5904('0x3d')]){_0x595c06[_0x5904('0x3e')]=[{'all':!![]}];}_0x595c06=_[_0x5904('0x3b')]({},_0x595c06,_0x4c2b14[_0x5904('0x3c')]);return db['MailTransferReport'][_0x5904('0x44')](_0x595c06)[_0x5904('0x21')](handleEntityNotFound(_0x175d78,null))[_0x5904('0x21')](respondWithResult(_0x175d78,null))[_0x5904('0x40')](handleError(_0x175d78,null));};exports[_0x5904('0x45')]=function(_0x172038,_0x1eb77a){return db[_0x5904('0x28')][_0x5904('0x45')](_0x172038[_0x5904('0x46')],{})[_0x5904('0x21')](respondWithResult(_0x1eb77a,0xc9))[_0x5904('0x40')](handleError(_0x1eb77a,null));};exports[_0x5904('0x20')]=function(_0x3f7441,_0x30d8e0){if(_0x3f7441[_0x5904('0x46')]['id']){delete _0x3f7441['body']['id'];}return db[_0x5904('0x28')][_0x5904('0x44')]({'where':{'id':_0x3f7441['params']['id']}})[_0x5904('0x21')](handleEntityNotFound(_0x30d8e0,null))[_0x5904('0x21')](saveUpdates(_0x3f7441['body'],null))[_0x5904('0x21')](respondWithResult(_0x30d8e0,null))[_0x5904('0x40')](handleError(_0x30d8e0,null));};exports[_0x5904('0x47')]=function(_0x1cf03f,_0x18b102){return db[_0x5904('0x28')][_0x5904('0x44')]({'where':{'id':_0x1cf03f[_0x5904('0x42')]['id']}})[_0x5904('0x21')](handleEntityNotFound(_0x18b102,null))['then'](removeEntity(_0x18b102,null))[_0x5904('0x40')](handleError(_0x18b102,null));};exports[_0x5904('0x48')]=function(_0xcc835d,_0x102658){return db['MailTransferReport']['describe']()[_0x5904('0x21')](respondWithResult(_0x102658,null))['catch'](handleError(_0x102658,null));};
\ No newline at end of file
+var _0x0098=['key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','rows','catch','show','params','include','options','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../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','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type'];(function(_0x1596c1,_0x3463f2){var _0x293209=function(_0x57bdb9){while(--_0x57bdb9){_0x1596c1['push'](_0x1596c1['shift']());}};_0x293209(++_0x3463f2);}(_0x0098,0x6b));var _0x8009=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x0098[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0x8009('0x0'));var rimraf=require(_0x8009('0x1'));var zipdir=require(_0x8009('0x2'));var jsonpatch=require(_0x8009('0x3'));var rp=require(_0x8009('0x4'));var moment=require(_0x8009('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8009('0x6'));var util=require(_0x8009('0x7'));var path=require(_0x8009('0x8'));var sox=require(_0x8009('0x9'));var csv=require(_0x8009('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8009('0xb'));var _=require(_0x8009('0xc'));var squel=require(_0x8009('0xd'));var crypto=require('crypto');var jsforce=require(_0x8009('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8009('0xa'));var querystring=require(_0x8009('0xf'));var Papa=require('papaparse');var Redis=require(_0x8009('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8009('0x11'));var as=require(_0x8009('0x12'));var hardwareService=require(_0x8009('0x13'));var logger=require(_0x8009('0x14'))(_0x8009('0x15'));var utils=require(_0x8009('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x8009('0x17'));var db=require(_0x8009('0x18'))['db'];function respondWithStatusCode(_0x10c86f,_0x7ccb1){_0x7ccb1=_0x7ccb1||0xcc;return function(_0x5a028c){if(_0x5a028c){return _0x10c86f[_0x8009('0x19')](_0x7ccb1);}return _0x10c86f[_0x8009('0x1a')](_0x7ccb1)[_0x8009('0x1b')]();};}function respondWithResult(_0x20f812,_0x3271f3){_0x3271f3=_0x3271f3||0xc8;return function(_0x22a458){if(_0x22a458){return _0x20f812[_0x8009('0x1a')](_0x3271f3)[_0x8009('0x1c')](_0x22a458);}};}function respondWithFilteredResult(_0x4abc8b,_0x4292b6){return function(_0x437aaf){if(_0x437aaf){var _0x60ec80=typeof _0x4292b6[_0x8009('0x1d')]===_0x8009('0x1e')&&typeof _0x4292b6[_0x8009('0x1f')]===_0x8009('0x1e');var _0x1ccd34=_0x437aaf['count'];var _0x55f890=_0x60ec80?0x0:_0x4292b6[_0x8009('0x1d')];var _0x3ade69=_0x60ec80?_0x437aaf[_0x8009('0x20')]:_0x4292b6[_0x8009('0x1d')]+_0x4292b6['limit'];var _0xe045bb;if(_0x3ade69>=_0x1ccd34){_0x3ade69=_0x1ccd34;_0xe045bb=0xc8;}else{_0xe045bb=0xce;}_0x4abc8b['status'](_0xe045bb);return _0x4abc8b[_0x8009('0x21')](_0x8009('0x22'),_0x55f890+'-'+_0x3ade69+'/'+_0x1ccd34)[_0x8009('0x1c')](_0x437aaf);}return null;};}function patchUpdates(_0x38ee83){return function(_0x33d694){try{jsonpatch[_0x8009('0x23')](_0x33d694,_0x38ee83,!![]);}catch(_0x4f7322){return BPromise['reject'](_0x4f7322);}return _0x33d694[_0x8009('0x24')]();};}function saveUpdates(_0x715e83,_0x91771a){return function(_0x29491c){if(_0x29491c){return _0x29491c['update'](_0x715e83)[_0x8009('0x25')](function(_0x1690d5){return _0x1690d5;});}return null;};}function removeEntity(_0x3124d1,_0x5a579a){return function(_0x3546d4){if(_0x3546d4){return _0x3546d4[_0x8009('0x26')]()['then'](function(){_0x3124d1[_0x8009('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x6fce9f,_0x524287){return function(_0x2d0b72){if(!_0x2d0b72){_0x6fce9f[_0x8009('0x19')](0x194);}return _0x2d0b72;};}function handleError(_0x42f3df,_0x1f34eb){_0x1f34eb=_0x1f34eb||0x1f4;return function(_0x265b1e){logger[_0x8009('0x27')](_0x265b1e[_0x8009('0x28')]);if(_0x265b1e[_0x8009('0x29')]){delete _0x265b1e[_0x8009('0x29')];}_0x42f3df['status'](_0x1f34eb)[_0x8009('0x2a')](_0x265b1e);};}exports[_0x8009('0x2b')]=function(_0x2da6cc,_0x5eb513){var _0x4da926={},_0x37d50e={},_0x2d788c={'count':0x0,'rows':[]};var _0xbb74b3=_[_0x8009('0x2c')](db[_0x8009('0x2d')][_0x8009('0x2e')],function(_0x806ba6){return{'name':_0x806ba6[_0x8009('0x2f')],'type':_0x806ba6[_0x8009('0x30')][_0x8009('0x31')]};});_0x37d50e[_0x8009('0x32')]=_[_0x8009('0x2c')](_0xbb74b3,'name');_0x37d50e[_0x8009('0x33')]=_['keys'](_0x2da6cc[_0x8009('0x33')]);_0x37d50e[_0x8009('0x34')]=_[_0x8009('0x35')](_0x37d50e[_0x8009('0x32')],_0x37d50e[_0x8009('0x33')]);_0x4da926['attributes']=_['intersection'](_0x37d50e[_0x8009('0x32')],qs[_0x8009('0x36')](_0x2da6cc[_0x8009('0x33')][_0x8009('0x36')]));_0x4da926[_0x8009('0x37')]=_0x4da926[_0x8009('0x37')][_0x8009('0x38')]?_0x4da926['attributes']:_0x37d50e[_0x8009('0x32')];if(!_0x2da6cc['query'][_0x8009('0x39')](_0x8009('0x3a'))){_0x4da926[_0x8009('0x1f')]=qs[_0x8009('0x1f')](_0x2da6cc[_0x8009('0x33')][_0x8009('0x1f')]);_0x4da926['offset']=qs['offset'](_0x2da6cc[_0x8009('0x33')]['offset']);}_0x4da926[_0x8009('0x3b')]=qs[_0x8009('0x3c')](_0x2da6cc[_0x8009('0x33')][_0x8009('0x3c')]);_0x4da926[_0x8009('0x3d')]=qs['filters'](_[_0x8009('0x3e')](_0x2da6cc[_0x8009('0x33')],_0x37d50e[_0x8009('0x34')]),_0xbb74b3);if(_0x2da6cc[_0x8009('0x33')][_0x8009('0x3f')]){_0x4da926[_0x8009('0x3d')]=_[_0x8009('0x40')](_0x4da926['where'],{'$or':_[_0x8009('0x2c')](_0xbb74b3,function(_0x109da5){if(_0x109da5[_0x8009('0x30')]!==_0x8009('0x41')){var _0x2788a6={};_0x2788a6[_0x109da5[_0x8009('0x29')]]={'$like':'%'+_0x2da6cc[_0x8009('0x33')][_0x8009('0x3f')]+'%'};return _0x2788a6;}})});}_0x4da926=_['merge']({},_0x4da926,_0x2da6cc['options']);var _0x79ea0e={'where':_0x4da926[_0x8009('0x3d')]};return db[_0x8009('0x2d')][_0x8009('0x20')](_0x79ea0e)[_0x8009('0x25')](function(_0x5d0846){_0x2d788c['count']=_0x5d0846;if(_0x2da6cc[_0x8009('0x33')][_0x8009('0x42')]){_0x4da926['include']=[{'all':!![]}];}return db[_0x8009('0x2d')]['findAll'](_0x4da926);})['then'](function(_0x5c5759){_0x2d788c[_0x8009('0x43')]=_0x5c5759;return _0x2d788c;})['then'](respondWithFilteredResult(_0x5eb513,_0x4da926))[_0x8009('0x44')](handleError(_0x5eb513,null));};exports[_0x8009('0x45')]=function(_0x48298a,_0x57d598){var _0x3cb713={'raw':!![],'where':{'id':_0x48298a[_0x8009('0x46')]['id']}},_0x29eb9a={};_0x29eb9a['model']=_['keys'](db[_0x8009('0x2d')][_0x8009('0x2e')]);_0x29eb9a['query']=_['keys'](_0x48298a['query']);_0x29eb9a['filters']=_['intersection'](_0x29eb9a['model'],_0x29eb9a['query']);_0x3cb713[_0x8009('0x37')]=_[_0x8009('0x35')](_0x29eb9a['model'],qs['fields'](_0x48298a['query'][_0x8009('0x36')]));_0x3cb713['attributes']=_0x3cb713[_0x8009('0x37')][_0x8009('0x38')]?_0x3cb713[_0x8009('0x37')]:_0x29eb9a[_0x8009('0x32')];if(_0x48298a[_0x8009('0x33')][_0x8009('0x42')]){_0x3cb713[_0x8009('0x47')]=[{'all':!![]}];}_0x3cb713=_[_0x8009('0x40')]({},_0x3cb713,_0x48298a[_0x8009('0x48')]);return db['MailTransferReport'][_0x8009('0x49')](_0x3cb713)[_0x8009('0x25')](handleEntityNotFound(_0x57d598,null))[_0x8009('0x25')](respondWithResult(_0x57d598,null))[_0x8009('0x44')](handleError(_0x57d598,null));};exports[_0x8009('0x4a')]=function(_0x26ddcb,_0x559a6e){return db[_0x8009('0x2d')][_0x8009('0x4a')](_0x26ddcb[_0x8009('0x4b')],{})[_0x8009('0x25')](respondWithResult(_0x559a6e,0xc9))['catch'](handleError(_0x559a6e,null));};exports[_0x8009('0x4c')]=function(_0x1212f3,_0x553cf3){if(_0x1212f3[_0x8009('0x4b')]['id']){delete _0x1212f3[_0x8009('0x4b')]['id'];}return db['MailTransferReport'][_0x8009('0x49')]({'where':{'id':_0x1212f3['params']['id']}})[_0x8009('0x25')](handleEntityNotFound(_0x553cf3,null))[_0x8009('0x25')](saveUpdates(_0x1212f3[_0x8009('0x4b')],null))[_0x8009('0x25')](respondWithResult(_0x553cf3,null))[_0x8009('0x44')](handleError(_0x553cf3,null));};exports[_0x8009('0x26')]=function(_0x2e878e,_0x47922a){return db[_0x8009('0x2d')][_0x8009('0x49')]({'where':{'id':_0x2e878e[_0x8009('0x46')]['id']}})[_0x8009('0x25')](handleEntityNotFound(_0x47922a,null))[_0x8009('0x25')](removeEntity(_0x47922a,null))[_0x8009('0x44')](handleError(_0x47922a,null));};exports[_0x8009('0x4d')]=function(_0x29b486,_0x20a904){return db[_0x8009('0x2d')][_0x8009('0x4d')]()[_0x8009('0x25')](respondWithResult(_0x20a904,null))[_0x8009('0x44')](handleError(_0x20a904,null));};
\ No newline at end of file
index 46592b7..de0e348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf864=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailTransferReport','uniqueid','util','api'];(function(_0x514816,_0x57c091){var _0x5c3a43=function(_0xd4a413){while(--_0xd4a413){_0x514816['push'](_0x514816['shift']());}};_0x5c3a43(++_0x57c091);}(_0xf864,0x1de));var _0x4f86=function(_0x1416e2,_0xb666ce){_0x1416e2=_0x1416e2-0x0;var _0x1009b1=_0xf864[_0x1416e2];return _0x1009b1;};'use strict';var _=require('lodash');var util=require(_0x4f86('0x0'));var logger=require('../../config/logger')(_0x4f86('0x1'));var moment=require(_0x4f86('0x2'));var BPromise=require(_0x4f86('0x3'));var rp=require(_0x4f86('0x4'));var fs=require('fs');var path=require(_0x4f86('0x5'));var rimraf=require(_0x4f86('0x6'));var config=require(_0x4f86('0x7'));var attributes=require('./mailTransferReport.attributes');module[_0x4f86('0x8')]=function(_0x3facfb,_0x43207f){return _0x3facfb[_0x4f86('0x9')](_0x4f86('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x4f86('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x693d=['request-promise','path','rimraf','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x27bd2c,_0x24bd98){var _0x3784ea=function(_0x4ca802){while(--_0x4ca802){_0x27bd2c['push'](_0x27bd2c['shift']());}};_0x3784ea(++_0x24bd98);}(_0x693d,0x153));var _0xd693=function(_0x543628,_0x17a06){_0x543628=_0x543628-0x0;var _0x1475f9=_0x693d[_0x543628];return _0x1475f9;};'use strict';var _=require(_0xd693('0x0'));var util=require(_0xd693('0x1'));var logger=require(_0xd693('0x2'))(_0xd693('0x3'));var moment=require(_0xd693('0x4'));var BPromise=require(_0xd693('0x5'));var rp=require(_0xd693('0x6'));var fs=require('fs');var path=require(_0xd693('0x7'));var rimraf=require(_0xd693('0x8'));var config=require('../../config/environment');var attributes=require(_0xd693('0x9'));module[_0xd693('0xa')]=function(_0x49e710,_0x4cf777){return _0x49e710[_0xd693('0xb')](_0xd693('0xc'),attributes,{'tableName':_0xd693('0xd'),'paranoid':![],'indexes':[{'name':_0xd693('0xe'),'fields':[_0xd693('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 81d90d7..dcb60f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5528=['message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info','MailTransferReport,\x20%s,\x20%s','debug','request\x20sent','error'];(function(_0x24696b,_0x12de19){var _0x3f86b0=function(_0x11f2eb){while(--_0x11f2eb){_0x24696b['push'](_0x24696b['shift']());}};_0x3f86b0(++_0x12de19);}(_0x5528,0xad));var _0x8552=function(_0x548d7d,_0x2d41fc){_0x548d7d=_0x548d7d-0x0;var _0xb1c878=_0x5528[_0x548d7d];return _0xb1c878;};'use strict';var _=require(_0x8552('0x0'));var util=require(_0x8552('0x1'));var moment=require(_0x8552('0x2'));var BPromise=require(_0x8552('0x3'));var rs=require(_0x8552('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8552('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8552('0x6'))(_0x8552('0x7'));var config=require(_0x8552('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8552('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e3bd4,_0x129792,_0x47ba0a){return new BPromise(function(_0xfc0f05,_0x53ec85){return client[_0x8552('0xa')](_0x5e3bd4,_0x47ba0a)[_0x8552('0xb')](function(_0x3b8b20){logger[_0x8552('0xc')](_0x8552('0xd'),_0x129792,'request\x20sent');logger[_0x8552('0xe')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x129792,_0x8552('0xf'),JSON['stringify'](_0x3b8b20));if(_0x3b8b20[_0x8552('0x10')]){if(_0x3b8b20[_0x8552('0x10')]['code']===0x1f4){logger[_0x8552('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x129792,_0x3b8b20['error'][_0x8552('0x11')]);return _0x53ec85(_0x3b8b20[_0x8552('0x10')][_0x8552('0x11')]);}logger['error'](_0x8552('0xd'),_0x129792,_0x3b8b20[_0x8552('0x10')]['message']);return _0xfc0f05(_0x3b8b20[_0x8552('0x10')][_0x8552('0x11')]);}else{logger[_0x8552('0xc')](_0x8552('0xd'),_0x129792,_0x8552('0xf'));_0xfc0f05(_0x3b8b20[_0x8552('0x12')]['message']);}})['catch'](function(_0x2c80a2){logger[_0x8552('0x10')](_0x8552('0xd'),_0x129792,_0x2c80a2);_0x53ec85(_0x2c80a2);});});}
\ No newline at end of file
+var _0xe832=['jayson/promise','client','http','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','lodash','util','moment','bluebird','ioredis','rpc'];(function(_0x3e5147,_0x33eef9){var _0x18c779=function(_0x2a143c){while(--_0x2a143c){_0x3e5147['push'](_0x3e5147['shift']());}};_0x18c779(++_0x33eef9);}(_0xe832,0xb5));var _0x2e83=function(_0xc78d1e,_0x34b0ee){_0xc78d1e=_0xc78d1e-0x0;var _0x2b9af0=_0xe832[_0xc78d1e];return _0x2b9af0;};'use strict';var _=require(_0x2e83('0x0'));var util=require(_0x2e83('0x1'));var moment=require(_0x2e83('0x2'));var BPromise=require(_0x2e83('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2e83('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2e83('0x5'));var config=require('../../config/environment');var jayson=require(_0x2e83('0x6'));var client=jayson[_0x2e83('0x7')][_0x2e83('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x32072c,_0x322b69,_0x4e45e6){return new BPromise(function(_0x7af2eb,_0x523338){return client['request'](_0x32072c,_0x4e45e6)[_0x2e83('0x9')](function(_0x106468){logger[_0x2e83('0xa')](_0x2e83('0xb'),_0x322b69,_0x2e83('0xc'));logger[_0x2e83('0xd')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x322b69,'request\x20sent',JSON[_0x2e83('0xe')](_0x106468));if(_0x106468['error']){if(_0x106468[_0x2e83('0xf')]['code']===0x1f4){logger[_0x2e83('0xf')](_0x2e83('0xb'),_0x322b69,_0x106468[_0x2e83('0xf')][_0x2e83('0x10')]);return _0x523338(_0x106468[_0x2e83('0xf')][_0x2e83('0x10')]);}logger[_0x2e83('0xf')](_0x2e83('0xb'),_0x322b69,_0x106468[_0x2e83('0xf')]['message']);return _0x7af2eb(_0x106468[_0x2e83('0xf')][_0x2e83('0x10')]);}else{logger['info'](_0x2e83('0xb'),_0x322b69,_0x2e83('0xc'));_0x7af2eb(_0x106468['result'][_0x2e83('0x10')]);}})['catch'](function(_0x5d34bb){logger[_0x2e83('0xf')](_0x2e83('0xb'),_0x322b69,_0x5d34bb);_0x523338(_0x5d34bb);});});}
\ No newline at end of file
index af095d9..bd84646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa726=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','destroy','exports'];(function(_0x1a7846,_0x59723e){var _0x48049=function(_0x203ff6){while(--_0x203ff6){_0x1a7846['push'](_0x1a7846['shift']());}};_0x48049(++_0x59723e);}(_0xa726,0x6e));var _0x6a72=function(_0x5c4f6b,_0x2cdfce){_0x5c4f6b=_0x5c4f6b-0x0;var _0x104c4e=_0xa726[_0x5c4f6b];return _0x104c4e;};'use strict';var multer=require(_0x6a72('0x0'));var util=require('util');var path=require(_0x6a72('0x1'));var timeout=require(_0x6a72('0x2'));var express=require('express');var router=express[_0x6a72('0x3')]();var fs_extra=require(_0x6a72('0x4'));var auth=require(_0x6a72('0x5'));var interaction=require(_0x6a72('0x6'));var config=require(_0x6a72('0x7'));var controller=require(_0x6a72('0x8'));router[_0x6a72('0x9')]('/',auth[_0x6a72('0xa')](),controller[_0x6a72('0xb')]);router[_0x6a72('0x9')](_0x6a72('0xc'),auth[_0x6a72('0xa')](),controller[_0x6a72('0xd')]);router[_0x6a72('0x9')](_0x6a72('0xe'),auth[_0x6a72('0xa')](),controller[_0x6a72('0xf')]);router[_0x6a72('0x10')]('/',auth[_0x6a72('0xa')](),controller[_0x6a72('0x11')]);router['put'](_0x6a72('0xe'),auth[_0x6a72('0xa')](),controller[_0x6a72('0x12')]);router[_0x6a72('0x13')]('/:id',auth[_0x6a72('0xa')](),controller[_0x6a72('0x14')]);module[_0x6a72('0x15')]=router;
\ No newline at end of file
+var _0xcbd5=['/:id','show','create','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./memberReport.controller','get','/describe','isAuthenticated','describe'];(function(_0x496738,_0x3f1a9f){var _0xee1381=function(_0x4dc50c){while(--_0x4dc50c){_0x496738['push'](_0x496738['shift']());}};_0xee1381(++_0x3f1a9f);}(_0xcbd5,0xde));var _0x5cbd=function(_0x4ae829,_0x2c842c){_0x4ae829=_0x4ae829-0x0;var _0x256b31=_0xcbd5[_0x4ae829];return _0x256b31;};'use strict';var multer=require('multer');var util=require(_0x5cbd('0x0'));var path=require(_0x5cbd('0x1'));var timeout=require(_0x5cbd('0x2'));var express=require('express');var router=express[_0x5cbd('0x3')]();var fs_extra=require(_0x5cbd('0x4'));var auth=require(_0x5cbd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5cbd('0x6'));var controller=require(_0x5cbd('0x7'));router[_0x5cbd('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5cbd('0x8')](_0x5cbd('0x9'),auth[_0x5cbd('0xa')](),controller[_0x5cbd('0xb')]);router['get'](_0x5cbd('0xc'),auth['isAuthenticated'](),controller[_0x5cbd('0xd')]);router['post']('/',auth[_0x5cbd('0xa')](),controller[_0x5cbd('0xe')]);router['put'](_0x5cbd('0xc'),auth[_0x5cbd('0xa')](),controller[_0x5cbd('0xf')]);router[_0x5cbd('0x10')](_0x5cbd('0xc'),auth[_0x5cbd('0xa')](),controller['destroy']);module[_0x5cbd('0x11')]=router;
\ No newline at end of file
index 40977d3..a8e370a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05b9=['talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','getDataValue','enterAt','seconds','setDataValue','exitAt','talk:[start]'];(function(_0x1db351,_0x4e8f77){var _0x316ebe=function(_0x22b8f6){while(--_0x22b8f6){_0x1db351['push'](_0x1db351['shift']());}};_0x316ebe(++_0x4e8f77);}(_0x05b9,0x103));var _0x905b=function(_0x541260,_0x4c7f2e){_0x541260=_0x541260-0x0;var _0x1dd2b5=_0x05b9[_0x541260];return _0x1dd2b5;};'use strict';var Sequelize=require(_0x905b('0x0'));var moment=require(_0x905b('0x1'));module[_0x905b('0x2')]={'channel':{'type':Sequelize[_0x905b('0x3')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x905b('0x3')],'defaultValue':_0x905b('0x4'),'comment':_0x905b('0x5')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0x905b('0x6')]},'exitAt':{'type':Sequelize[_0x905b('0x6')],'set':function(_0x148bee){var _0x8571eb=moment(_0x148bee);var _0x539106=moment(this[_0x905b('0x7')](_0x905b('0x8')));var _0x40ae01=_0x8571eb['diff'](_0x539106,_0x905b('0x9'));this[_0x905b('0xa')](_0x905b('0xb'),_0x148bee);this[_0x905b('0xa')]('duration',_0x40ae01>=0x0?_0x40ae01:null);}},'data1':{'type':Sequelize[_0x905b('0x3')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xc')},'data3':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xd')},'data4':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xe')},'data5':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xf')},'role':{'type':Sequelize[_0x905b('0x3')]},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7963=['enterAt','diff','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]','INTEGER','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','DATE','getDataValue'];(function(_0x92713a,_0x68f8b0){var _0x1893e1=function(_0xe49768){while(--_0xe49768){_0x92713a['push'](_0x92713a['shift']());}};_0x1893e1(++_0x68f8b0);}(_0x7963,0x92));var _0x3796=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x7963[_0x580576];return _0x3f55a0;};'use strict';var Sequelize=require(_0x3796('0x0'));var moment=require(_0x3796('0x1'));module[_0x3796('0x2')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x3796('0x3')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0x3796('0x4'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0x3796('0x5')]},'exitAt':{'type':Sequelize[_0x3796('0x5')],'set':function(_0x19ed04){var _0x6a4358=moment(_0x19ed04);var _0x1b42cd=moment(this[_0x3796('0x6')](_0x3796('0x7')));var _0x209f52=_0x6a4358[_0x3796('0x8')](_0x1b42cd,_0x3796('0x9'));this[_0x3796('0xa')]('exitAt',_0x19ed04);this[_0x3796('0xa')](_0x3796('0xb'),_0x209f52>=0x0?_0x209f52:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x3796('0xc')},'data2':{'type':Sequelize[_0x3796('0x3')],'comment':_0x3796('0xd')},'data3':{'type':Sequelize['STRING'],'comment':_0x3796('0xe')},'data4':{'type':Sequelize[_0x3796('0x3')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0x3796('0x3')],'comment':_0x3796('0xf')},'role':{'type':Sequelize[_0x3796('0x3')]},'internal':{'type':Sequelize[_0x3796('0x10')]},'uniqueid':{'type':Sequelize[_0x3796('0x3')]}};
\ No newline at end of file
index 03076ee..b45fd50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['show','params','options','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count','status','set','Content-Range','apply','save','update','then','destroy','sendStatus','name','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x423f53,_0x49db05){var _0x1c473d=function(_0x1568d7){while(--_0x1568d7){_0x423f53['push'](_0x423f53['shift']());}};_0x1c473d(++_0x49db05);}(_0x3e74,0x175));var _0x43e7=function(_0x948e7a,_0x3f2005){_0x948e7a=_0x948e7a-0x0;var _0x9b54a5=_0x3e74[_0x948e7a];return _0x9b54a5;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){_0x454359['status'](0xcc)[_0x43e7('0x15')]();});}};}function handleEntityNotFound(_0x4ca5cf,_0x326dab){return function(_0x5c5e67){if(!_0x5c5e67){_0x4ca5cf[_0x43e7('0x23')](0x194);}return _0x5c5e67;};}function handleError(_0x1b5f50,_0x20888b){_0x20888b=_0x20888b||0x1f4;return function(_0x405f85){logger['error'](_0x405f85['stack']);if(_0x405f85[_0x43e7('0x24')]){delete _0x405f85['name'];}_0x1b5f50[_0x43e7('0x1b')](_0x20888b)[_0x43e7('0x25')](_0x405f85);};}exports[_0x43e7('0x26')]=function(_0xb1fc63,_0x5087d7){var _0x33a1a5={},_0x4690a6={},_0x45b675={'count':0x0,'rows':[]};var _0x50f9f5=_[_0x43e7('0x27')](db[_0x43e7('0x28')][_0x43e7('0x29')],function(_0x31b2a6){return{'name':_0x31b2a6[_0x43e7('0x2a')],'type':_0x31b2a6[_0x43e7('0x2b')][_0x43e7('0x2c')]};});_0x4690a6[_0x43e7('0x2d')]=_[_0x43e7('0x27')](_0x50f9f5,_0x43e7('0x24'));_0x4690a6['query']=_[_0x43e7('0x2e')](_0xb1fc63[_0x43e7('0x2f')]);_0x4690a6[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],_0x4690a6['query']);_0x33a1a5[_0x43e7('0x32')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],qs[_0x43e7('0x33')](_0xb1fc63['query']['fields']));_0x33a1a5['attributes']=_0x33a1a5[_0x43e7('0x32')][_0x43e7('0x34')]?_0x33a1a5[_0x43e7('0x32')]:_0x4690a6[_0x43e7('0x2d')];if(!_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x35')]('nolimit')){_0x33a1a5['limit']=qs['limit'](_0xb1fc63['query']['limit']);_0x33a1a5['offset']=qs['offset'](_0xb1fc63[_0x43e7('0x2f')]['offset']);}_0x33a1a5[_0x43e7('0x36')]=qs[_0x43e7('0x37')](_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x37')]);_0x33a1a5[_0x43e7('0x38')]=qs[_0x43e7('0x30')](_[_0x43e7('0x39')](_0xb1fc63['query'],_0x4690a6['filters']),_0x50f9f5);if(_0xb1fc63['query'][_0x43e7('0x3a')]){_0x33a1a5[_0x43e7('0x38')]=_[_0x43e7('0x3b')](_0x33a1a5[_0x43e7('0x38')],{'$or':_[_0x43e7('0x27')](_0x50f9f5,function(_0x1ed538){if(_0x1ed538[_0x43e7('0x2b')]!==_0x43e7('0x3c')){var _0x55c798={};_0x55c798[_0x1ed538[_0x43e7('0x24')]]={'$like':'%'+_0xb1fc63[_0x43e7('0x2f')]['filter']+'%'};return _0x55c798;}})});}_0x33a1a5=_[_0x43e7('0x3b')]({},_0x33a1a5,_0xb1fc63['options']);var _0x44d8e4={'where':_0x33a1a5[_0x43e7('0x38')]};return db[_0x43e7('0x28')][_0x43e7('0x1a')](_0x44d8e4)[_0x43e7('0x21')](function(_0x234d8f){_0x45b675['count']=_0x234d8f;if(_0xb1fc63['query'][_0x43e7('0x3d')]){_0x33a1a5[_0x43e7('0x3e')]=[{'all':!![]}];}return db[_0x43e7('0x28')][_0x43e7('0x3f')](_0x33a1a5);})[_0x43e7('0x21')](function(_0x4a4a85){_0x45b675[_0x43e7('0x40')]=_0x4a4a85;return _0x45b675;})[_0x43e7('0x21')](respondWithFilteredResult(_0x5087d7,_0x33a1a5))['catch'](handleError(_0x5087d7,null));};exports[_0x43e7('0x41')]=function(_0x51a69c,_0x2ad8ef){var _0x504101={'raw':!![],'where':{'id':_0x51a69c[_0x43e7('0x42')]['id']}},_0x3d81ae={};_0x3d81ae[_0x43e7('0x2d')]=_[_0x43e7('0x2e')](db['MemberReport']['rawAttributes']);_0x3d81ae[_0x43e7('0x2f')]=_[_0x43e7('0x2e')](_0x51a69c[_0x43e7('0x2f')]);_0x3d81ae[_0x43e7('0x30')]=_['intersection'](_0x3d81ae['model'],_0x3d81ae['query']);_0x504101[_0x43e7('0x32')]=_['intersection'](_0x3d81ae[_0x43e7('0x2d')],qs['fields'](_0x51a69c['query'][_0x43e7('0x33')]));_0x504101['attributes']=_0x504101[_0x43e7('0x32')][_0x43e7('0x34')]?_0x504101[_0x43e7('0x32')]:_0x3d81ae[_0x43e7('0x2d')];if(_0x51a69c['query'][_0x43e7('0x3d')]){_0x504101[_0x43e7('0x3e')]=[{'all':!![]}];}_0x504101=_[_0x43e7('0x3b')]({},_0x504101,_0x51a69c[_0x43e7('0x43')]);return db[_0x43e7('0x28')][_0x43e7('0x44')](_0x504101)['then'](handleEntityNotFound(_0x2ad8ef,null))['then'](respondWithResult(_0x2ad8ef,null))[_0x43e7('0x45')](handleError(_0x2ad8ef,null));};exports[_0x43e7('0x46')]=function(_0x212841,_0x4c00a8){return db['MemberReport']['create'](_0x212841[_0x43e7('0x47')],{})[_0x43e7('0x21')](respondWithResult(_0x4c00a8,0xc9))['catch'](handleError(_0x4c00a8,null));};exports[_0x43e7('0x20')]=function(_0x47686e,_0x3c96fe){if(_0x47686e['body']['id']){delete _0x47686e['body']['id'];}return db['MemberReport']['find']({'where':{'id':_0x47686e[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x3c96fe,null))['then'](saveUpdates(_0x47686e[_0x43e7('0x47')],null))[_0x43e7('0x21')](respondWithResult(_0x3c96fe,null))[_0x43e7('0x45')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x22')]=function(_0x4a0ce5,_0x2718d5){return db['MemberReport']['find']({'where':{'id':_0x4a0ce5[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x2718d5,null))[_0x43e7('0x21')](removeEntity(_0x2718d5,null))[_0x43e7('0x45')](handleError(_0x2718d5,null));};exports[_0x43e7('0x48')]=function(_0x2351cf,_0x1cd87c){return db[_0x43e7('0x28')][_0x43e7('0x48')]()[_0x43e7('0x21')](respondWithResult(_0x1cd87c,null))['catch'](handleError(_0x1cd87c,null));};
\ No newline at end of file
+var _0x7217=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','MemberReport','fieldName','type','model','name','keys'];(function(_0x5103cd,_0x53dbee){var _0x323afd=function(_0x2a3002){while(--_0x2a3002){_0x5103cd['push'](_0x5103cd['shift']());}};_0x323afd(++_0x53dbee);}(_0x7217,0x19e));var _0x7721=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x7217[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x2f')](_0x5c54f0,_0x7721('0x34'));_0xd7d703['query']=_[_0x7721('0x35')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x37')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],_0xd7d703['query']);_0x37b9f0[_0x7721('0x39')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],qs['fields'](_0x158d98[_0x7721('0x36')][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')]['length']?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3b')](_0x7721('0x3c'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0['order']=qs[_0x7721('0x3d')](_0x158d98[_0x7721('0x36')][_0x7721('0x3d')]);_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x37')](_[_0x7721('0x3f')](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98['query']['filter']){_0x37b9f0[_0x7721('0x3e')]=_[_0x7721('0x40')](_0x37b9f0[_0x7721('0x3e')],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4a90ce){if(_0x4a90ce[_0x7721('0x32')]!=='VIRTUAL'){var _0xfab37b={};_0xfab37b[_0x4a90ce[_0x7721('0x34')]]={'$like':'%'+_0x158d98['query'][_0x7721('0x41')]+'%'};return _0xfab37b;}})});}_0x37b9f0=_[_0x7721('0x40')]({},_0x37b9f0,_0x158d98['options']);var _0x4d0111={'where':_0x37b9f0[_0x7721('0x3e')]};return db[_0x7721('0x30')][_0x7721('0x22')](_0x4d0111)[_0x7721('0x29')](function(_0x577af9){_0x1da2d8[_0x7721('0x22')]=_0x577af9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x42')]){_0x37b9f0[_0x7721('0x43')]=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a2c28){_0x1da2d8[_0x7721('0x44')]=_0x4a2c28;return _0x1da2d8;})['then'](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x45')](handleError(_0x1ea4d,null));};exports[_0x7721('0x46')]=function(_0x231dad,_0x49e0c5){var _0x1453d4={'raw':!![],'where':{'id':_0x231dad[_0x7721('0x47')]['id']}},_0x11d853={};_0x11d853['model']=_[_0x7721('0x35')](db[_0x7721('0x30')][_0x7721('0x48')]);_0x11d853[_0x7721('0x36')]=_[_0x7721('0x35')](_0x231dad[_0x7721('0x36')]);_0x11d853[_0x7721('0x37')]=_['intersection'](_0x11d853['model'],_0x11d853[_0x7721('0x36')]);_0x1453d4[_0x7721('0x39')]=_[_0x7721('0x38')](_0x11d853[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x231dad[_0x7721('0x36')][_0x7721('0x3a')]));_0x1453d4[_0x7721('0x39')]=_0x1453d4[_0x7721('0x39')][_0x7721('0x49')]?_0x1453d4['attributes']:_0x11d853['model'];if(_0x231dad[_0x7721('0x36')][_0x7721('0x42')]){_0x1453d4[_0x7721('0x43')]=[{'all':!![]}];}_0x1453d4=_[_0x7721('0x40')]({},_0x1453d4,_0x231dad['options']);return db[_0x7721('0x30')][_0x7721('0x4a')](_0x1453d4)['then'](handleEntityNotFound(_0x49e0c5,null))[_0x7721('0x29')](respondWithResult(_0x49e0c5,null))['catch'](handleError(_0x49e0c5,null));};exports[_0x7721('0x4b')]=function(_0x5c6922,_0x334f23){return db[_0x7721('0x30')][_0x7721('0x4b')](_0x5c6922['body'],{})[_0x7721('0x29')](respondWithResult(_0x334f23,0xc9))[_0x7721('0x45')](handleError(_0x334f23,null));};exports['update']=function(_0x223d93,_0x1196c2){if(_0x223d93[_0x7721('0x4c')]['id']){delete _0x223d93['body']['id'];}return db[_0x7721('0x30')]['find']({'where':{'id':_0x223d93[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0x29')](saveUpdates(_0x223d93[_0x7721('0x4c')],null))[_0x7721('0x29')](respondWithResult(_0x1196c2,null))[_0x7721('0x45')](handleError(_0x1196c2,null));};exports[_0x7721('0x2a')]=function(_0x7fbb73,_0x694d2f){return db[_0x7721('0x30')][_0x7721('0x4a')]({'where':{'id':_0x7fbb73[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x694d2f,null))[_0x7721('0x29')](removeEntity(_0x694d2f,null))[_0x7721('0x45')](handleError(_0x694d2f,null));};exports['describe']=function(_0x474f32,_0x2f6f30){return db[_0x7721('0x30')][_0x7721('0x4d')]()[_0x7721('0x29')](respondWithResult(_0x2f6f30,null))[_0x7721('0x45')](handleError(_0x2f6f30,null));};
\ No newline at end of file
index bb232ba..c109b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe8=['api','moment','path','rimraf','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','util'];(function(_0x170772,_0x1f1ee7){var _0x3ef69c=function(_0x4cde12){while(--_0x4cde12){_0x170772['push'](_0x170772['shift']());}};_0x3ef69c(++_0x1f1ee7);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x190c3c,_0x2c70d1){_0x190c3c=_0x190c3c-0x0;var _0x2830a5=_0xbfe8[_0x190c3c];return _0x2830a5;};'use strict';var _=require('lodash');var util=require(_0x8bfe('0x0'));var logger=require('../../config/logger')(_0x8bfe('0x1'));var moment=require(_0x8bfe('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8bfe('0x3'));var rimraf=require(_0x8bfe('0x4'));var config=require('../../config/environment');var attributes=require(_0x8bfe('0x5'));module[_0x8bfe('0x6')]=function(_0x314a9a,_0x4933c9){return _0x314a9a[_0x8bfe('0x7')](_0x8bfe('0x8'),attributes,{'tableName':_0x8bfe('0x9'),'paranoid':![],'indexes':[{'name':_0x8bfe('0xa'),'fields':[_0x8bfe('0xb'),_0x8bfe('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe74c=['membername_interface','membername','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xe74c,0x1d3));var _0xce74=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xe74c[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xce74('0x0'));var util=require(_0xce74('0x1'));var logger=require(_0xce74('0x2'))(_0xce74('0x3'));var moment=require('moment');var BPromise=require(_0xce74('0x4'));var rp=require(_0xce74('0x5'));var fs=require('fs');var path=require(_0xce74('0x6'));var rimraf=require(_0xce74('0x7'));var config=require(_0xce74('0x8'));var attributes=require(_0xce74('0x9'));module[_0xce74('0xa')]=function(_0x2d2737,_0x5b0e6d){return _0x2d2737[_0xce74('0xb')](_0xce74('0xc'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0xce74('0xd'),'fields':[_0xce74('0xe'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
index e735e03..5602c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db2=['limit','include','map','model','attributes','then','CreateMemberReport','create','UpdateMemberReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMemberReport','MemberReport','findAll','options','raw','where'];(function(_0x38779c,_0x4708b7){var _0x2957ff=function(_0x140f39){while(--_0x140f39){_0x38779c['push'](_0x38779c['shift']());}};_0x2957ff(++_0x4708b7);}(_0x5db2,0xf3));var _0x25db=function(_0x327717,_0x2acede){_0x327717=_0x327717-0x0;var _0xc907ad=_0x5db2[_0x327717];return _0xc907ad;};'use strict';var _=require(_0x25db('0x0'));var util=require(_0x25db('0x1'));var moment=require(_0x25db('0x2'));var BPromise=require('bluebird');var rs=require(_0x25db('0x3'));var fs=require('fs');var Redis=require(_0x25db('0x4'));var db=require(_0x25db('0x5'))['db'];var utils=require(_0x25db('0x6'));var logger=require(_0x25db('0x7'))(_0x25db('0x8'));var config=require(_0x25db('0x9'));var jayson=require(_0x25db('0xa'));var client=jayson[_0x25db('0xb')][_0x25db('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x497759,_0x3573fa,_0x310762){return new BPromise(function(_0x40f7eb,_0x2ad688){return client['request'](_0x497759,_0x310762)['then'](function(_0x2e6018){logger[_0x25db('0xd')](_0x25db('0xe'),_0x3573fa,_0x25db('0xf'));logger[_0x25db('0x10')](_0x25db('0x11'),_0x3573fa,_0x25db('0xf'),JSON[_0x25db('0x12')](_0x2e6018));if(_0x2e6018[_0x25db('0x13')]){if(_0x2e6018[_0x25db('0x13')][_0x25db('0x14')]===0x1f4){logger[_0x25db('0x13')]('MemberReport,\x20%s,\x20%s',_0x3573fa,_0x2e6018[_0x25db('0x13')][_0x25db('0x15')]);return _0x2ad688(_0x2e6018[_0x25db('0x13')]['message']);}logger[_0x25db('0x13')](_0x25db('0xe'),_0x3573fa,_0x2e6018[_0x25db('0x13')][_0x25db('0x15')]);return _0x40f7eb(_0x2e6018[_0x25db('0x13')][_0x25db('0x15')]);}else{logger[_0x25db('0xd')](_0x25db('0xe'),_0x3573fa,_0x25db('0xf'));_0x40f7eb(_0x2e6018[_0x25db('0x16')]['message']);}})[_0x25db('0x17')](function(_0x58fccf){logger['error'](_0x25db('0xe'),_0x3573fa,_0x58fccf);_0x2ad688(_0x58fccf);});});}exports[_0x25db('0x18')]=function(_0x2b018b){var _0x31399b=this;return new Promise(function(_0x187fbc,_0x134bc8){return db[_0x25db('0x19')][_0x25db('0x1a')]({'raw':_0x2b018b[_0x25db('0x1b')]?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1c')]===undefined?!![]:![]:!![],'where':_0x2b018b[_0x25db('0x1b')]?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1d')]||null:null,'attributes':_0x2b018b[_0x25db('0x1b')]?_0x2b018b['options']['attributes']||null:null,'limit':_0x2b018b['options']?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1e')]||null:null,'include':_0x2b018b['options']?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1f')]?_[_0x25db('0x20')](_0x2b018b[_0x25db('0x1b')]['include'],function(_0x3f9129){return{'model':db[_0x3f9129[_0x25db('0x21')]],'as':_0x3f9129['as'],'attributes':_0x3f9129[_0x25db('0x22')],'include':_0x3f9129[_0x25db('0x1f')]?_[_0x25db('0x20')](_0x3f9129[_0x25db('0x1f')],function(_0x367833){return{'model':db[_0x367833['model']],'as':_0x367833['as'],'attributes':_0x367833[_0x25db('0x22')],'include':_0x367833[_0x25db('0x1f')]?_['map'](_0x367833[_0x25db('0x1f')],function(_0x13d989){return{'model':db[_0x13d989[_0x25db('0x21')]],'as':_0x13d989['as'],'attributes':_0x13d989[_0x25db('0x22')]};}):[]};}):[]};}):[]:[]})[_0x25db('0x23')](function(_0x196f9d){logger[_0x25db('0xd')](_0x25db('0x18'),_0x2b018b);logger[_0x25db('0x10')]('GetMemberReport',_0x2b018b,JSON[_0x25db('0x12')](_0x196f9d));_0x187fbc(_0x196f9d);})['catch'](function(_0x33eb6c){logger[_0x25db('0x13')](_0x25db('0x18'),_0x33eb6c[_0x25db('0x15')],_0x2b018b);_0x134bc8(_0x31399b[_0x25db('0x13')](0x1f4,_0x33eb6c[_0x25db('0x15')]));});});};exports[_0x25db('0x24')]=function(_0x449529){var _0x510f03=this;return new Promise(function(_0x2e912a,_0x15c163){return db['MemberReport'][_0x25db('0x25')](_0x449529['body'],{'raw':_0x449529[_0x25db('0x1b')]?_0x449529[_0x25db('0x1b')][_0x25db('0x1c')]===undefined?!![]:![]:!![]})[_0x25db('0x23')](function(_0x180d26){logger[_0x25db('0xd')](_0x25db('0x24'),_0x449529);logger[_0x25db('0x10')](_0x25db('0x24'),_0x449529,JSON['stringify'](_0x180d26));_0x2e912a(_0x180d26);})[_0x25db('0x17')](function(_0x2b4a9c){logger[_0x25db('0x13')](_0x25db('0x24'),_0x2b4a9c['message'],_0x449529);_0x15c163(_0x510f03['error'](0x1f4,_0x2b4a9c[_0x25db('0x15')]));});});};exports[_0x25db('0x26')]=function(_0x21bbdd){var _0x234a5f=this;return new Promise(function(_0xc5b6d7,_0x1e9802){return db[_0x25db('0x19')]['update'](_0x21bbdd['body'],{'raw':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')]['where']||null:null,'attributes':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')][_0x25db('0x22')]||null:null,'limit':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')][_0x25db('0x1e')]||null:null})[_0x25db('0x23')](function(_0x1b621e){logger[_0x25db('0xd')](_0x25db('0x26'),_0x21bbdd);logger[_0x25db('0x10')](_0x25db('0x26'),_0x21bbdd,JSON['stringify'](_0x1b621e));_0xc5b6d7(_0x1b621e);})[_0x25db('0x17')](function(_0x57612a){logger[_0x25db('0x13')](_0x25db('0x26'),_0x57612a[_0x25db('0x15')],_0x21bbdd);_0x1e9802(_0x234a5f[_0x25db('0x13')](0x1f4,_0x57612a[_0x25db('0x15')]));});});};
\ No newline at end of file
+var _0x510e=['then','info','MemberReport,\x20%s,\x20%s','debug','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','body','CreateMemberReport','UpdateMemberReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x9b3efc,_0x577a0d){var _0x200f05=function(_0x15ad7c){while(--_0x15ad7c){_0x9b3efc['push'](_0x9b3efc['shift']());}};_0x200f05(++_0x577a0d);}(_0x510e,0x1ed));var _0xe510=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x510e[_0x13b02f];return _0x12e9a6;};'use strict';var _=require(_0xe510('0x0'));var util=require(_0xe510('0x1'));var moment=require(_0xe510('0x2'));var BPromise=require(_0xe510('0x3'));var rs=require(_0xe510('0x4'));var fs=require('fs');var Redis=require(_0xe510('0x5'));var db=require(_0xe510('0x6'))['db'];var utils=require(_0xe510('0x7'));var logger=require(_0xe510('0x8'))('rpc');var config=require(_0xe510('0x9'));var jayson=require(_0xe510('0xa'));var client=jayson[_0xe510('0xb')][_0xe510('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x26cffc,_0x18ec55,_0x27ca15){return new BPromise(function(_0x42b48c,_0x2f5db7){return client[_0xe510('0xd')](_0x26cffc,_0x27ca15)[_0xe510('0xe')](function(_0xf2a94b){logger[_0xe510('0xf')](_0xe510('0x10'),_0x18ec55,'request\x20sent');logger[_0xe510('0x11')](_0xe510('0x12'),_0x18ec55,_0xe510('0x13'),JSON[_0xe510('0x14')](_0xf2a94b));if(_0xf2a94b[_0xe510('0x15')]){if(_0xf2a94b[_0xe510('0x15')]['code']===0x1f4){logger[_0xe510('0x15')](_0xe510('0x10'),_0x18ec55,_0xf2a94b[_0xe510('0x15')][_0xe510('0x16')]);return _0x2f5db7(_0xf2a94b[_0xe510('0x15')][_0xe510('0x16')]);}logger[_0xe510('0x15')](_0xe510('0x10'),_0x18ec55,_0xf2a94b[_0xe510('0x15')][_0xe510('0x16')]);return _0x42b48c(_0xf2a94b[_0xe510('0x15')][_0xe510('0x16')]);}else{logger['info'](_0xe510('0x10'),_0x18ec55,'request\x20sent');_0x42b48c(_0xf2a94b['result'][_0xe510('0x16')]);}})[_0xe510('0x17')](function(_0x2684b4){logger[_0xe510('0x15')](_0xe510('0x10'),_0x18ec55,_0x2684b4);_0x2f5db7(_0x2684b4);});});}exports[_0xe510('0x18')]=function(_0x268736){var _0x3831f4=this;return new Promise(function(_0x48e676,_0x34697){return db[_0xe510('0x19')][_0xe510('0x1a')]({'raw':_0x268736[_0xe510('0x1b')]?_0x268736[_0xe510('0x1b')][_0xe510('0x1c')]===undefined?!![]:![]:!![],'where':_0x268736[_0xe510('0x1b')]?_0x268736['options'][_0xe510('0x1d')]||null:null,'attributes':_0x268736[_0xe510('0x1b')]?_0x268736['options'][_0xe510('0x1e')]||null:null,'limit':_0x268736[_0xe510('0x1b')]?_0x268736['options'][_0xe510('0x1f')]||null:null,'include':_0x268736[_0xe510('0x1b')]?_0x268736['options'][_0xe510('0x20')]?_[_0xe510('0x21')](_0x268736[_0xe510('0x1b')][_0xe510('0x20')],function(_0xc6ffae){return{'model':db[_0xc6ffae['model']],'as':_0xc6ffae['as'],'attributes':_0xc6ffae[_0xe510('0x1e')],'include':_0xc6ffae['include']?_['map'](_0xc6ffae['include'],function(_0x4425ee){return{'model':db[_0x4425ee[_0xe510('0x22')]],'as':_0x4425ee['as'],'attributes':_0x4425ee['attributes'],'include':_0x4425ee[_0xe510('0x20')]?_['map'](_0x4425ee[_0xe510('0x20')],function(_0x45ea1e){return{'model':db[_0x45ea1e[_0xe510('0x22')]],'as':_0x45ea1e['as'],'attributes':_0x45ea1e[_0xe510('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xe510('0xe')](function(_0xb260e0){logger[_0xe510('0xf')](_0xe510('0x18'),_0x268736);logger[_0xe510('0x11')](_0xe510('0x18'),_0x268736,JSON[_0xe510('0x14')](_0xb260e0));_0x48e676(_0xb260e0);})['catch'](function(_0xf5a2fb){logger[_0xe510('0x15')]('GetMemberReport',_0xf5a2fb['message'],_0x268736);_0x34697(_0x3831f4[_0xe510('0x15')](0x1f4,_0xf5a2fb[_0xe510('0x16')]));});});};exports['CreateMemberReport']=function(_0xb7096){var _0x40008f=this;return new Promise(function(_0x99cd01,_0x12416c){return db[_0xe510('0x19')]['create'](_0xb7096[_0xe510('0x23')],{'raw':_0xb7096[_0xe510('0x1b')]?_0xb7096[_0xe510('0x1b')][_0xe510('0x1c')]===undefined?!![]:![]:!![]})[_0xe510('0xe')](function(_0x30fa1e){logger[_0xe510('0xf')](_0xe510('0x24'),_0xb7096);logger[_0xe510('0x11')](_0xe510('0x24'),_0xb7096,JSON['stringify'](_0x30fa1e));_0x99cd01(_0x30fa1e);})[_0xe510('0x17')](function(_0x8bfeed){logger[_0xe510('0x15')](_0xe510('0x24'),_0x8bfeed[_0xe510('0x16')],_0xb7096);_0x12416c(_0x40008f[_0xe510('0x15')](0x1f4,_0x8bfeed[_0xe510('0x16')]));});});};exports[_0xe510('0x25')]=function(_0x3b8009){var _0x2f971a=this;return new Promise(function(_0x22b714,_0x21fef0){return db[_0xe510('0x19')][_0xe510('0x26')](_0x3b8009[_0xe510('0x23')],{'raw':_0x3b8009[_0xe510('0x1b')]?_0x3b8009[_0xe510('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b8009[_0xe510('0x1b')]?_0x3b8009[_0xe510('0x1b')]['where']||null:null,'attributes':_0x3b8009[_0xe510('0x1b')]?_0x3b8009[_0xe510('0x1b')]['attributes']||null:null,'limit':_0x3b8009['options']?_0x3b8009[_0xe510('0x1b')][_0xe510('0x1f')]||null:null})[_0xe510('0xe')](function(_0x730c27){logger['info'](_0xe510('0x25'),_0x3b8009);logger['debug'](_0xe510('0x25'),_0x3b8009,JSON[_0xe510('0x14')](_0x730c27));_0x22b714(_0x730c27);})[_0xe510('0x17')](function(_0x55cff5){logger[_0xe510('0x15')](_0xe510('0x25'),_0x55cff5[_0xe510('0x16')],_0x3b8009);_0x21fef0(_0x2f971a[_0xe510('0x15')](0x1f4,_0x55cff5[_0xe510('0x16')]));});});};
\ No newline at end of file
index 95d7261..d85ccf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcafb=['Router','fs-extra','../../components/auth/service','../../config/environment','./migration.controller','get','index','exports','util','path','connect-timeout','express'];(function(_0xb609f7,_0xb06340){var _0x296bda=function(_0xbc343d){while(--_0xbc343d){_0xb609f7['push'](_0xb609f7['shift']());}};_0x296bda(++_0xb06340);}(_0xcafb,0x188));var _0xbcaf=function(_0x12716a,_0x428133){_0x12716a=_0x12716a-0x0;var _0x50fd03=_0xcafb[_0x12716a];return _0x50fd03;};'use strict';var multer=require('multer');var util=require(_0xbcaf('0x0'));var path=require(_0xbcaf('0x1'));var timeout=require(_0xbcaf('0x2'));var express=require(_0xbcaf('0x3'));var router=express[_0xbcaf('0x4')]();var fs_extra=require(_0xbcaf('0x5'));var auth=require(_0xbcaf('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbcaf('0x7'));var controller=require(_0xbcaf('0x8'));router[_0xbcaf('0x9')]('/',controller[_0xbcaf('0xa')]);module[_0xbcaf('0xb')]=router;
\ No newline at end of file
+var _0x5590=['index','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x5590,0x11a));var _0x0559=function(_0x52ebdd,_0x3d7f53){_0x52ebdd=_0x52ebdd-0x0;var _0x214d27=_0x5590[_0x52ebdd];return _0x214d27;};'use strict';var multer=require(_0x0559('0x0'));var util=require(_0x0559('0x1'));var path=require(_0x0559('0x2'));var timeout=require(_0x0559('0x3'));var express=require(_0x0559('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0559('0x5'));var interaction=require(_0x0559('0x6'));var config=require('../../config/environment');var controller=require('./migration.controller');router[_0x0559('0x7')]('/',controller[_0x0559('0x8')]);module[_0x0559('0x9')]=router;
\ No newline at end of file
index 1e8a5ea..68e6b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb0e=['exports','STRING','version','sequelize'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xdb0e,0x163));var _0xedb0=function(_0x3b0999,_0x3c9835){_0x3b0999=_0x3b0999-0x0;var _0x585226=_0xdb0e[_0x3b0999];return _0x585226;};'use strict';var Sequelize=require(_0xedb0('0x0'));module[_0xedb0('0x1')]={'version':{'type':Sequelize[_0xedb0('0x2')],'unique':_0xedb0('0x3')}};
\ No newline at end of file
+var _0x7c8f=['version','sequelize','exports','STRING'];(function(_0x2c8883,_0x44042a){var _0x3c8ae4=function(_0x594bd1){while(--_0x594bd1){_0x2c8883['push'](_0x2c8883['shift']());}};_0x3c8ae4(++_0x44042a);}(_0x7c8f,0x1b9));var _0xf7c8=function(_0xfe0638,_0x332d23){_0xfe0638=_0xfe0638-0x0;var _0x310289=_0x7c8f[_0xfe0638];return _0x310289;};'use strict';var Sequelize=require(_0xf7c8('0x0'));module[_0xf7c8('0x1')]={'version':{'type':Sequelize[_0xf7c8('0x2')],'unique':_0xf7c8('0x3')}};
\ No newline at end of file
index c76f436..929f1eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc153=['zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','update','destroy','then','error','stack','name','send','index','map','Migration','fieldName','type','model','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','rimraf'];(function(_0x71e993,_0x1f8834){var _0x4a93af=function(_0x12ed3d){while(--_0x12ed3d){_0x71e993['push'](_0x71e993['shift']());}};_0x4a93af(++_0x1f8834);}(_0xc153,0x191));var _0x3c15=function(_0x5265a4,_0xce56af){_0x5265a4=_0x5265a4-0x0;var _0x3cb9ea=_0xc153[_0x5265a4];return _0x3cb9ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c15('0x0'));var zipdir=require(_0x3c15('0x1'));var jsonpatch=require(_0x3c15('0x2'));var rp=require(_0x3c15('0x3'));var moment=require(_0x3c15('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3c15('0x5'));var path=require(_0x3c15('0x6'));var sox=require('sox');var csv=require(_0x3c15('0x7'));var ejs=require(_0x3c15('0x8'));var fs=require('fs');var fs_extra=require(_0x3c15('0x9'));var _=require(_0x3c15('0xa'));var squel=require(_0x3c15('0xb'));var crypto=require(_0x3c15('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3c15('0xd'));var toCsv=require(_0x3c15('0x7'));var querystring=require('querystring');var Papa=require(_0x3c15('0xe'));var Redis=require('ioredis');var authService=require(_0x3c15('0xf'));var qs=require(_0x3c15('0x10'));var as=require(_0x3c15('0x11'));var hardwareService=require(_0x3c15('0x12'));var logger=require(_0x3c15('0x13'))(_0x3c15('0x14'));var utils=require(_0x3c15('0x15'));var config=require(_0x3c15('0x16'));var licenseUtil=require(_0x3c15('0x17'));var db=require(_0x3c15('0x18'))['db'];function respondWithStatusCode(_0x399dcf,_0x47e983){_0x47e983=_0x47e983||0xcc;return function(_0x3b9a48){if(_0x3b9a48){return _0x399dcf[_0x3c15('0x19')](_0x47e983);}return _0x399dcf[_0x3c15('0x1a')](_0x47e983)[_0x3c15('0x1b')]();};}function respondWithResult(_0x5b981b,_0x1714f4){_0x1714f4=_0x1714f4||0xc8;return function(_0x3e62b1){if(_0x3e62b1){return _0x5b981b['status'](_0x1714f4)[_0x3c15('0x1c')](_0x3e62b1);}};}function respondWithFilteredResult(_0x7dde2b,_0x1900b5){return function(_0xdd88f4){if(_0xdd88f4){var _0x2208ad=typeof _0x1900b5[_0x3c15('0x1d')]===_0x3c15('0x1e')&&typeof _0x1900b5['limit']===_0x3c15('0x1e');var _0x18bce1=_0xdd88f4['count'];var _0x43ed22=_0x2208ad?0x0:_0x1900b5[_0x3c15('0x1d')];var _0x48080e=_0x2208ad?_0xdd88f4[_0x3c15('0x1f')]:_0x1900b5['offset']+_0x1900b5[_0x3c15('0x20')];var _0x2ff262;if(_0x48080e>=_0x18bce1){_0x48080e=_0x18bce1;_0x2ff262=0xc8;}else{_0x2ff262=0xce;}_0x7dde2b['status'](_0x2ff262);return _0x7dde2b[_0x3c15('0x21')]('Content-Range',_0x43ed22+'-'+_0x48080e+'/'+_0x18bce1)[_0x3c15('0x1c')](_0xdd88f4);}return null;};}function patchUpdates(_0x1dd738){return function(_0x1bcbbc){try{jsonpatch[_0x3c15('0x22')](_0x1bcbbc,_0x1dd738,!![]);}catch(_0x5dbaba){return BPromise[_0x3c15('0x23')](_0x5dbaba);}return _0x1bcbbc['save']();};}function saveUpdates(_0x313e70,_0x172127){return function(_0x3b111d){if(_0x3b111d){return _0x3b111d[_0x3c15('0x24')](_0x313e70)['then'](function(_0x4bc4b6){return _0x4bc4b6;});}return null;};}function removeEntity(_0x16ec90,_0x50c0a1){return function(_0x2e1583){if(_0x2e1583){return _0x2e1583[_0x3c15('0x25')]()[_0x3c15('0x26')](function(){_0x16ec90['status'](0xcc)[_0x3c15('0x1b')]();});}};}function handleEntityNotFound(_0x500295,_0xd519ff){return function(_0x3c04df){if(!_0x3c04df){_0x500295[_0x3c15('0x19')](0x194);}return _0x3c04df;};}function handleError(_0x3ff182,_0x7fec3b){_0x7fec3b=_0x7fec3b||0x1f4;return function(_0x1ae9fd){logger[_0x3c15('0x27')](_0x1ae9fd[_0x3c15('0x28')]);if(_0x1ae9fd[_0x3c15('0x29')]){delete _0x1ae9fd[_0x3c15('0x29')];}_0x3ff182['status'](_0x7fec3b)[_0x3c15('0x2a')](_0x1ae9fd);};}exports[_0x3c15('0x2b')]=function(_0x3dc9e7,_0x5b769f){var _0x1fd233={},_0x2c18d0={},_0x2dab36={'count':0x0,'rows':[]};var _0x27bad1=_[_0x3c15('0x2c')](db[_0x3c15('0x2d')]['rawAttributes'],function(_0x4d7ba4){return{'name':_0x4d7ba4[_0x3c15('0x2e')],'type':_0x4d7ba4[_0x3c15('0x2f')]['key']};});_0x2c18d0[_0x3c15('0x30')]=_[_0x3c15('0x2c')](_0x27bad1,_0x3c15('0x29'));_0x2c18d0['query']=_['keys'](_0x3dc9e7['query']);_0x2c18d0[_0x3c15('0x31')]=_['intersection'](_0x2c18d0[_0x3c15('0x30')],_0x2c18d0[_0x3c15('0x32')]);_0x1fd233[_0x3c15('0x33')]=_[_0x3c15('0x34')](_0x2c18d0[_0x3c15('0x30')],qs[_0x3c15('0x35')](_0x3dc9e7[_0x3c15('0x32')][_0x3c15('0x35')]));_0x1fd233[_0x3c15('0x33')]=_0x1fd233[_0x3c15('0x33')]['length']?_0x1fd233[_0x3c15('0x33')]:_0x2c18d0['model'];if(!_0x3dc9e7['query'][_0x3c15('0x36')](_0x3c15('0x37'))){_0x1fd233[_0x3c15('0x20')]=qs[_0x3c15('0x20')](_0x3dc9e7['query']['limit']);_0x1fd233[_0x3c15('0x1d')]=qs['offset'](_0x3dc9e7[_0x3c15('0x32')]['offset']);}_0x1fd233[_0x3c15('0x38')]=qs[_0x3c15('0x39')](_0x3dc9e7[_0x3c15('0x32')][_0x3c15('0x39')]);_0x1fd233[_0x3c15('0x3a')]=qs[_0x3c15('0x31')](_['pick'](_0x3dc9e7[_0x3c15('0x32')],_0x2c18d0[_0x3c15('0x31')]),_0x27bad1);if(_0x3dc9e7[_0x3c15('0x32')]['filter']){_0x1fd233[_0x3c15('0x3a')]=_[_0x3c15('0x3b')](_0x1fd233['where'],{'$or':_[_0x3c15('0x2c')](_0x27bad1,function(_0xbccaa4){if(_0xbccaa4[_0x3c15('0x2f')]!==_0x3c15('0x3c')){var _0x56358b={};_0x56358b[_0xbccaa4['name']]={'$like':'%'+_0x3dc9e7[_0x3c15('0x32')][_0x3c15('0x3d')]+'%'};return _0x56358b;}})});}_0x1fd233=_[_0x3c15('0x3b')]({},_0x1fd233,_0x3dc9e7[_0x3c15('0x3e')]);var _0x341cec={'where':_0x1fd233[_0x3c15('0x3a')]};return db[_0x3c15('0x2d')][_0x3c15('0x1f')](_0x341cec)[_0x3c15('0x26')](function(_0x32b99b){_0x2dab36[_0x3c15('0x1f')]=_0x32b99b;if(_0x3dc9e7['query']['includeAll']){_0x1fd233[_0x3c15('0x3f')]=[{'all':!![]}];}return db[_0x3c15('0x2d')][_0x3c15('0x40')](_0x1fd233);})[_0x3c15('0x26')](function(_0x7e1dc7){_0x2dab36[_0x3c15('0x41')]=_0x7e1dc7;return _0x2dab36;})['then'](respondWithFilteredResult(_0x5b769f,_0x1fd233))[_0x3c15('0x42')](handleError(_0x5b769f,null));};
\ No newline at end of file
+var _0x667c=['lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','end','error','name','send','index','Migration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','options','then','includeAll','include','findAll','catch','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra'];(function(_0x6122a7,_0x114ac4){var _0x58300f=function(_0xa8e7c5){while(--_0xa8e7c5){_0x6122a7['push'](_0x6122a7['shift']());}};_0x58300f(++_0x114ac4);}(_0x667c,0x82));var _0xc667=function(_0x8640b9,_0x1a1c7f){_0x8640b9=_0x8640b9-0x0;var _0x556632=_0x667c[_0x8640b9];return _0x556632;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc667('0x0'));var zipdir=require(_0xc667('0x1'));var jsonpatch=require(_0xc667('0x2'));var rp=require(_0xc667('0x3'));var moment=require('moment');var BPromise=require(_0xc667('0x4'));var Mustache=require(_0xc667('0x5'));var util=require('util');var path=require('path');var sox=require(_0xc667('0x6'));var csv=require(_0xc667('0x7'));var ejs=require(_0xc667('0x8'));var fs=require('fs');var fs_extra=require(_0xc667('0x9'));var _=require(_0xc667('0xa'));var squel=require(_0xc667('0xb'));var crypto=require(_0xc667('0xc'));var jsforce=require(_0xc667('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc667('0x7'));var querystring=require(_0xc667('0xe'));var Papa=require(_0xc667('0xf'));var Redis=require(_0xc667('0x10'));var authService=require(_0xc667('0x11'));var qs=require(_0xc667('0x12'));var as=require(_0xc667('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc667('0x14'))(_0xc667('0x15'));var utils=require('../../config/utils');var config=require(_0xc667('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc667('0x17'))['db'];function respondWithStatusCode(_0x410431,_0x3aaa60){_0x3aaa60=_0x3aaa60||0xcc;return function(_0x202955){if(_0x202955){return _0x410431[_0xc667('0x18')](_0x3aaa60);}return _0x410431[_0xc667('0x19')](_0x3aaa60)['end']();};}function respondWithResult(_0x5cd29b,_0x282bc5){_0x282bc5=_0x282bc5||0xc8;return function(_0x103201){if(_0x103201){return _0x5cd29b[_0xc667('0x19')](_0x282bc5)[_0xc667('0x1a')](_0x103201);}};}function respondWithFilteredResult(_0x1f9f5b,_0x5d4e20){return function(_0x7cb3de){if(_0x7cb3de){var _0x2f2a68=typeof _0x5d4e20['offset']===_0xc667('0x1b')&&typeof _0x5d4e20[_0xc667('0x1c')]===_0xc667('0x1b');var _0x1282d9=_0x7cb3de[_0xc667('0x1d')];var _0x3e96fd=_0x2f2a68?0x0:_0x5d4e20['offset'];var _0x38caa3=_0x2f2a68?_0x7cb3de[_0xc667('0x1d')]:_0x5d4e20[_0xc667('0x1e')]+_0x5d4e20[_0xc667('0x1c')];var _0x298394;if(_0x38caa3>=_0x1282d9){_0x38caa3=_0x1282d9;_0x298394=0xc8;}else{_0x298394=0xce;}_0x1f9f5b[_0xc667('0x19')](_0x298394);return _0x1f9f5b[_0xc667('0x1f')](_0xc667('0x20'),_0x3e96fd+'-'+_0x38caa3+'/'+_0x1282d9)['json'](_0x7cb3de);}return null;};}function patchUpdates(_0x1070c7){return function(_0x314f8e){try{jsonpatch[_0xc667('0x21')](_0x314f8e,_0x1070c7,!![]);}catch(_0x477776){return BPromise[_0xc667('0x22')](_0x477776);}return _0x314f8e[_0xc667('0x23')]();};}function saveUpdates(_0x163de7,_0x323fb3){return function(_0x486b19){if(_0x486b19){return _0x486b19[_0xc667('0x24')](_0x163de7)['then'](function(_0x11cbed){return _0x11cbed;});}return null;};}function removeEntity(_0xf0b68c,_0x4c250f){return function(_0x3ec535){if(_0x3ec535){return _0x3ec535[_0xc667('0x25')]()['then'](function(){_0xf0b68c[_0xc667('0x19')](0xcc)[_0xc667('0x26')]();});}};}function handleEntityNotFound(_0x2e5128,_0x33993c){return function(_0x133ed7){if(!_0x133ed7){_0x2e5128[_0xc667('0x18')](0x194);}return _0x133ed7;};}function handleError(_0x4064a3,_0x371db8){_0x371db8=_0x371db8||0x1f4;return function(_0x5c4f4f){logger[_0xc667('0x27')](_0x5c4f4f['stack']);if(_0x5c4f4f[_0xc667('0x28')]){delete _0x5c4f4f[_0xc667('0x28')];}_0x4064a3[_0xc667('0x19')](_0x371db8)[_0xc667('0x29')](_0x5c4f4f);};}exports[_0xc667('0x2a')]=function(_0x2e7917,_0x22203b){var _0x1aa158={},_0x3dccde={},_0x2c257f={'count':0x0,'rows':[]};var _0x15fbad=_['map'](db[_0xc667('0x2b')][_0xc667('0x2c')],function(_0x4ee38f){return{'name':_0x4ee38f[_0xc667('0x2d')],'type':_0x4ee38f[_0xc667('0x2e')][_0xc667('0x2f')]};});_0x3dccde['model']=_['map'](_0x15fbad,'name');_0x3dccde[_0xc667('0x30')]=_[_0xc667('0x31')](_0x2e7917['query']);_0x3dccde[_0xc667('0x32')]=_[_0xc667('0x33')](_0x3dccde[_0xc667('0x34')],_0x3dccde['query']);_0x1aa158[_0xc667('0x35')]=_[_0xc667('0x33')](_0x3dccde[_0xc667('0x34')],qs[_0xc667('0x36')](_0x2e7917[_0xc667('0x30')]['fields']));_0x1aa158[_0xc667('0x35')]=_0x1aa158['attributes'][_0xc667('0x37')]?_0x1aa158[_0xc667('0x35')]:_0x3dccde[_0xc667('0x34')];if(!_0x2e7917[_0xc667('0x30')][_0xc667('0x38')](_0xc667('0x39'))){_0x1aa158[_0xc667('0x1c')]=qs[_0xc667('0x1c')](_0x2e7917[_0xc667('0x30')]['limit']);_0x1aa158[_0xc667('0x1e')]=qs[_0xc667('0x1e')](_0x2e7917[_0xc667('0x30')][_0xc667('0x1e')]);}_0x1aa158['order']=qs[_0xc667('0x3a')](_0x2e7917[_0xc667('0x30')][_0xc667('0x3a')]);_0x1aa158[_0xc667('0x3b')]=qs[_0xc667('0x32')](_[_0xc667('0x3c')](_0x2e7917[_0xc667('0x30')],_0x3dccde[_0xc667('0x32')]),_0x15fbad);if(_0x2e7917[_0xc667('0x30')][_0xc667('0x3d')]){_0x1aa158[_0xc667('0x3b')]=_[_0xc667('0x3e')](_0x1aa158[_0xc667('0x3b')],{'$or':_[_0xc667('0x3f')](_0x15fbad,function(_0x15f019){if(_0x15f019['type']!=='VIRTUAL'){var _0xec64b5={};_0xec64b5[_0x15f019[_0xc667('0x28')]]={'$like':'%'+_0x2e7917[_0xc667('0x30')][_0xc667('0x3d')]+'%'};return _0xec64b5;}})});}_0x1aa158=_[_0xc667('0x3e')]({},_0x1aa158,_0x2e7917[_0xc667('0x40')]);var _0x1f5636={'where':_0x1aa158['where']};return db[_0xc667('0x2b')]['count'](_0x1f5636)[_0xc667('0x41')](function(_0x5705e0){_0x2c257f[_0xc667('0x1d')]=_0x5705e0;if(_0x2e7917[_0xc667('0x30')][_0xc667('0x42')]){_0x1aa158[_0xc667('0x43')]=[{'all':!![]}];}return db[_0xc667('0x2b')][_0xc667('0x44')](_0x1aa158);})[_0xc667('0x41')](function(_0x2479e7){_0x2c257f['rows']=_0x2479e7;return _0x2c257f;})[_0xc667('0x41')](respondWithFilteredResult(_0x22203b,_0x1aa158))[_0xc667('0x45')](handleError(_0x22203b,null));};
\ No newline at end of file
index d866822..ffb4f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ffa=['bluebird','request-promise','../../config/environment','./migration.attributes','exports','Migration','migrations','lodash','util','../../config/logger','api'];(function(_0x2ca46b,_0x500490){var _0x4cc6d3=function(_0x5d19b4){while(--_0x5d19b4){_0x2ca46b['push'](_0x2ca46b['shift']());}};_0x4cc6d3(++_0x500490);}(_0x3ffa,0x172));var _0xa3ff=function(_0x533440,_0x389402){_0x533440=_0x533440-0x0;var _0x1996d0=_0x3ffa[_0x533440];return _0x1996d0;};'use strict';var _=require(_0xa3ff('0x0'));var util=require(_0xa3ff('0x1'));var logger=require(_0xa3ff('0x2'))(_0xa3ff('0x3'));var moment=require('moment');var BPromise=require(_0xa3ff('0x4'));var rp=require(_0xa3ff('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa3ff('0x6'));var attributes=require(_0xa3ff('0x7'));module[_0xa3ff('0x8')]=function(_0x5c8821,_0x2c18f8){return _0x5c8821['define'](_0xa3ff('0x9'),attributes,{'tableName':_0xa3ff('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xad30=['rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x2b0623,_0x1c40e5){var _0x1f74c5=function(_0x52f8f1){while(--_0x52f8f1){_0x2b0623['push'](_0x2b0623['shift']());}};_0x1f74c5(++_0x1c40e5);}(_0xad30,0x1f1));var _0x0ad3=function(_0x439abd,_0x2d3355){_0x439abd=_0x439abd-0x0;var _0xa1effc=_0xad30[_0x439abd];return _0xa1effc;};'use strict';var _=require(_0x0ad3('0x0'));var util=require(_0x0ad3('0x1'));var logger=require(_0x0ad3('0x2'))(_0x0ad3('0x3'));var moment=require('moment');var BPromise=require(_0x0ad3('0x4'));var rp=require(_0x0ad3('0x5'));var fs=require('fs');var path=require(_0x0ad3('0x6'));var rimraf=require(_0x0ad3('0x7'));var config=require(_0x0ad3('0x8'));var attributes=require(_0x0ad3('0x9'));module[_0x0ad3('0xa')]=function(_0x2b03b6,_0x49d590){return _0x2b03b6[_0x0ad3('0xb')](_0x0ad3('0xc'),attributes,{'tableName':_0x0ad3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 546b7ab..7a9248a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60d7=['../../config/environment','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0x60d7,0x139));var _0x760d=function(_0x46bd9d,_0x4082f4){_0x46bd9d=_0x46bd9d-0x0;var _0x1c3346=_0x60d7[_0x46bd9d];return _0x1c3346;};'use strict';var _=require(_0x760d('0x0'));var util=require(_0x760d('0x1'));var moment=require('moment');var BPromise=require(_0x760d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x760d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x760d('0x4'));var logger=require(_0x760d('0x5'))(_0x760d('0x6'));var config=require(_0x760d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x760d('0x8')][_0x760d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39282b,_0x463b41,_0x3898d0){return new BPromise(function(_0x5db4c2,_0x2ca05d){return client[_0x760d('0xa')](_0x39282b,_0x3898d0)[_0x760d('0xb')](function(_0x5c4884){logger[_0x760d('0xc')](_0x760d('0xd'),_0x463b41,_0x760d('0xe'));logger['debug'](_0x760d('0xf'),_0x463b41,_0x760d('0xe'),JSON['stringify'](_0x5c4884));if(_0x5c4884[_0x760d('0x10')]){if(_0x5c4884[_0x760d('0x10')][_0x760d('0x11')]===0x1f4){logger[_0x760d('0x10')](_0x760d('0xd'),_0x463b41,_0x5c4884[_0x760d('0x10')][_0x760d('0x12')]);return _0x2ca05d(_0x5c4884[_0x760d('0x10')][_0x760d('0x12')]);}logger[_0x760d('0x10')](_0x760d('0xd'),_0x463b41,_0x5c4884['error'][_0x760d('0x12')]);return _0x5db4c2(_0x5c4884['error'][_0x760d('0x12')]);}else{logger[_0x760d('0xc')](_0x760d('0xd'),_0x463b41,_0x760d('0xe'));_0x5db4c2(_0x5c4884['result']['message']);}})[_0x760d('0x13')](function(_0x2f123c){logger[_0x760d('0x10')](_0x760d('0xd'),_0x463b41,_0x2f123c);_0x2ca05d(_0x2f123c);});});}
\ No newline at end of file
+var _0x132f=['jayson/promise','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2e9fde,_0x2f7f9c){var _0xa561b=function(_0x4b3295){while(--_0x4b3295){_0x2e9fde['push'](_0x2e9fde['shift']());}};_0xa561b(++_0x2f7f9c);}(_0x132f,0x182));var _0xf132=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x132f[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0xf132('0x0'));var util=require(_0xf132('0x1'));var moment=require(_0xf132('0x2'));var BPromise=require(_0xf132('0x3'));var rs=require(_0xf132('0x4'));var fs=require('fs');var Redis=require(_0xf132('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf132('0x6'));var logger=require(_0xf132('0x7'))(_0xf132('0x8'));var config=require(_0xf132('0x9'));var jayson=require(_0xf132('0xa'));var client=jayson['client'][_0xf132('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x280c1f,_0x533464,_0xbbfdc7){return new BPromise(function(_0x58cdf9,_0x3eed92){return client[_0xf132('0xc')](_0x280c1f,_0xbbfdc7)[_0xf132('0xd')](function(_0xa89a67){logger[_0xf132('0xe')](_0xf132('0xf'),_0x533464,_0xf132('0x10'));logger['debug']('Migration,\x20%s,\x20%s,\x20%s',_0x533464,_0xf132('0x10'),JSON[_0xf132('0x11')](_0xa89a67));if(_0xa89a67[_0xf132('0x12')]){if(_0xa89a67[_0xf132('0x12')][_0xf132('0x13')]===0x1f4){logger[_0xf132('0x12')](_0xf132('0xf'),_0x533464,_0xa89a67[_0xf132('0x12')][_0xf132('0x14')]);return _0x3eed92(_0xa89a67[_0xf132('0x12')][_0xf132('0x14')]);}logger[_0xf132('0x12')]('Migration,\x20%s,\x20%s',_0x533464,_0xa89a67[_0xf132('0x12')][_0xf132('0x14')]);return _0x58cdf9(_0xa89a67['error'][_0xf132('0x14')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0x533464,_0xf132('0x10'));_0x58cdf9(_0xa89a67[_0xf132('0x15')][_0xf132('0x14')]);}})['catch'](function(_0x48686e){logger[_0xf132('0x12')](_0xf132('0xf'),_0x533464,_0x48686e);_0x3eed92(_0x48686e);});});}
\ No newline at end of file
index 0da4794..e3188be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b29=['../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra'];(function(_0x2d4556,_0x278974){var _0x51b36a=function(_0x394d3e){while(--_0x394d3e){_0x2d4556['push'](_0x2d4556['shift']());}};_0x51b36a(++_0x278974);}(_0x2b29,0x163));var _0x92b2=function(_0x246e6a,_0x69dd2a){_0x246e6a=_0x246e6a-0x0;var _0xdb5075=_0x2b29[_0x246e6a];return _0xdb5075;};'use strict';var multer=require('multer');var util=require(_0x92b2('0x0'));var path=require(_0x92b2('0x1'));var timeout=require(_0x92b2('0x2'));var express=require(_0x92b2('0x3'));var router=express['Router']();var fs_extra=require(_0x92b2('0x4'));var auth=require(_0x92b2('0x5'));var interaction=require(_0x92b2('0x6'));var config=require(_0x92b2('0x7'));var controller=require(_0x92b2('0x8'));router[_0x92b2('0x9')]('/',auth['isAuthenticated'](),controller[_0x92b2('0xa')]);router['get'](_0x92b2('0xb'),auth[_0x92b2('0xc')](),controller['show']);router[_0x92b2('0xd')]('/',auth[_0x92b2('0xc')](),controller[_0x92b2('0xe')]);router[_0x92b2('0xf')]('/:id',auth[_0x92b2('0xc')](),controller[_0x92b2('0x10')]);router[_0x92b2('0x11')](_0x92b2('0xb'),auth[_0x92b2('0xc')](),controller[_0x92b2('0x12')]);module[_0x92b2('0x13')]=router;
\ No newline at end of file
+var _0x3557=['post','create','put','update','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','isAuthenticated','get','/:id','show'];(function(_0x3f07ea,_0x3918b7){var _0x5eb15f=function(_0x2cf499){while(--_0x2cf499){_0x3f07ea['push'](_0x3f07ea['shift']());}};_0x5eb15f(++_0x3918b7);}(_0x3557,0x137));var _0x7355=function(_0x34c4e1,_0x310387){_0x34c4e1=_0x34c4e1-0x0;var _0x5a11ef=_0x3557[_0x34c4e1];return _0x5a11ef;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7355('0x0'));var timeout=require(_0x7355('0x1'));var express=require(_0x7355('0x2'));var router=express[_0x7355('0x3')]();var fs_extra=require(_0x7355('0x4'));var auth=require(_0x7355('0x5'));var interaction=require(_0x7355('0x6'));var config=require(_0x7355('0x7'));var controller=require(_0x7355('0x8'));router['get']('/',auth[_0x7355('0x9')](),controller['index']);router[_0x7355('0xa')](_0x7355('0xb'),auth[_0x7355('0x9')](),controller[_0x7355('0xc')]);router[_0x7355('0xd')]('/',auth[_0x7355('0x9')](),controller[_0x7355('0xe')]);router[_0x7355('0xf')]('/:id',auth[_0x7355('0x9')](),controller[_0x7355('0x10')]);router['delete'](_0x7355('0xb'),auth[_0x7355('0x9')](),controller['destroy']);module[_0x7355('0x11')]=router;
\ No newline at end of file
index 0d2a6ac..ddbc9f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3749=['STRING','sequelize','ENUM','localnet','stun','turn'];(function(_0x3f447c,_0x1449d7){var _0x2bbaaf=function(_0x231da1){while(--_0x231da1){_0x3f447c['push'](_0x3f447c['shift']());}};_0x2bbaaf(++_0x1449d7);}(_0x3749,0x163));var _0x9374=function(_0x39b51c,_0x40010d){_0x39b51c=_0x39b51c-0x0;var _0x146312=_0x3749[_0x39b51c];return _0x146312;};'use strict';var Sequelize=require(_0x9374('0x0'));module['exports']={'type':{'type':Sequelize[_0x9374('0x1')](_0x9374('0x2'),'externip',_0x9374('0x3'),_0x9374('0x4'))},'value':{'type':Sequelize[_0x9374('0x5')]},'username':{'type':Sequelize[_0x9374('0x5')]},'password':{'type':Sequelize[_0x9374('0x5')]}};
\ No newline at end of file
+var _0x5758=['ENUM','localnet','externip','turn','STRING','sequelize','exports'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0x5758,0x17f));var _0x8575=function(_0x3ae734,_0x490bac){_0x3ae734=_0x3ae734-0x0;var _0x2da6cf=_0x5758[_0x3ae734];return _0x2da6cf;};'use strict';var Sequelize=require(_0x8575('0x0'));module[_0x8575('0x1')]={'type':{'type':Sequelize[_0x8575('0x2')](_0x8575('0x3'),_0x8575('0x4'),'stun',_0x8575('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x8575('0x6')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e287ff7..47b6bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa892=['debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Network,\x20%s,\x20%s','result','catch','offset','undefined','count','set','json','destroy','status','end','name','send','index','map','Network','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','findAll','rows','params','keys','includeAll','include','options','create','body','toUpperCase','STUN','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','find','server/files/templates/stun_multiple.ejs','server/files/templates/turn_multiple.ejs','update','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','then','request\x20sent'];(function(_0x4af37d,_0x5aa8d3){var _0x257150=function(_0x462348){while(--_0x462348){_0x4af37d['push'](_0x4af37d['shift']());}};_0x257150(++_0x5aa8d3);}(_0xa892,0x1a0));var _0x2a89=function(_0xf79497,_0x291574){_0xf79497=_0xf79497-0x0;var _0xa02443=_0xa892[_0xf79497];return _0xa02443;};'use strict';var util=require(_0x2a89('0x0'));var path=require(_0x2a89('0x1'));var ejs=require(_0x2a89('0x2'));var fs=require('fs');var _=require(_0x2a89('0x3'));var qs=require(_0x2a89('0x4'));var logger=require(_0x2a89('0x5'))(_0x2a89('0x6'));var config=require(_0x2a89('0x7'));var db=require(_0x2a89('0x8'))['db'];var jayson=require(_0x2a89('0x9'));var client=jayson[_0x2a89('0xa')][_0x2a89('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x397d23,_0xed8278,_0x202277,_0x10ad2c){return new Promise(function(_0x13f5f7,_0x129b60){var _0xc26846=_0x10ad2c||client;return _0xc26846['request'](_0x397d23,_0x202277)[_0x2a89('0xc')](function(_0x1819d6){logger['info']('Network,\x20%s,\x20%s',_0xed8278,_0x2a89('0xd'));logger[_0x2a89('0xe')](_0x2a89('0xf'),_0xed8278,'request\x20sent',JSON[_0x2a89('0x10')](_0x1819d6));if(_0x1819d6[_0x2a89('0x11')]){if(_0x1819d6['error'][_0x2a89('0x12')]===0x1f4){logger[_0x2a89('0x11')]('Network,\x20%s,\x20%s',_0xed8278,_0x1819d6['error'][_0x2a89('0x13')]);return _0x129b60(_0x1819d6[_0x2a89('0x11')][_0x2a89('0x13')]);}logger[_0x2a89('0x11')]('Network,\x20%s,\x20%s',_0xed8278,_0x1819d6['error'][_0x2a89('0x13')]);return _0x13f5f7(_0x1819d6[_0x2a89('0x11')]['message']);}else{logger['info'](_0x2a89('0x14'),_0xed8278,_0x2a89('0xd'));_0x13f5f7(_0x1819d6[_0x2a89('0x15')][_0x2a89('0x13')]);}})[_0x2a89('0x16')](function(_0x35498c){logger['error'](_0x2a89('0x14'),_0xed8278,_0x35498c);_0x129b60(_0x35498c);});});}function respondWithResult(_0x4720c6,_0x2a7bfb){_0x2a7bfb=_0x2a7bfb||0xc8;return function(_0x308051){if(_0x308051){return _0x4720c6['status'](_0x2a7bfb)['json'](_0x308051);}};}function respondWithFilteredResult(_0x5111e8,_0x2e4a5d){return function(_0x11ee39){if(_0x11ee39){var _0x1a503c=typeof _0x2e4a5d[_0x2a89('0x17')]==='undefined'&&typeof _0x2e4a5d['limit']===_0x2a89('0x18');var _0x2ea155=_0x11ee39['count'];var _0x191436=_0x1a503c?0x0:_0x2e4a5d['offset'];var _0xebfc8=_0x1a503c?_0x11ee39[_0x2a89('0x19')]:_0x2e4a5d[_0x2a89('0x17')]+_0x2e4a5d['limit'];var _0x5ee1a7;if(_0xebfc8>=_0x2ea155){_0xebfc8=_0x2ea155;_0x5ee1a7=0xc8;}else{_0x5ee1a7=0xce;}_0x5111e8['status'](_0x5ee1a7);return _0x5111e8[_0x2a89('0x1a')]('Content-Range',_0x191436+'-'+_0xebfc8+'/'+_0x2ea155)[_0x2a89('0x1b')](_0x11ee39);}return null;};}function saveUpdates(_0x5abf94){return function(_0x439719){if(_0x439719){return _0x439719['update'](_0x5abf94)[_0x2a89('0xc')](function(_0x2fddff){return _0x2fddff;});}return null;};}function removeEntity(_0x29656f){return function(_0x60e8e1){if(_0x60e8e1){return _0x60e8e1[_0x2a89('0x1c')]()[_0x2a89('0xc')](function(){_0x29656f[_0x2a89('0x1d')](0xcc)[_0x2a89('0x1e')]();});}};}function handleEntityNotFound(_0x1f3bd5){return function(_0x248c61){if(!_0x248c61){_0x1f3bd5['sendStatus'](0x194);}return _0x248c61;};}function handleError(_0x55f9c1,_0x734fce){_0x734fce=_0x734fce||0x1f4;return function(_0x1b8be5){logger[_0x2a89('0x11')](_0x1b8be5['stack']);if(_0x1b8be5[_0x2a89('0x1f')]){delete _0x1b8be5['name'];}_0x55f9c1[_0x2a89('0x1d')](_0x734fce)[_0x2a89('0x20')](_0x1b8be5);};}exports[_0x2a89('0x21')]=function(_0x5b088f,_0x4dcdf8){var _0x287dd9={},_0x1bd232={},_0x4bad04={'count':0x0,'rows':[]};var _0x70c7cf=_[_0x2a89('0x22')](db[_0x2a89('0x23')][_0x2a89('0x24')],function(_0x531ce5){return{'name':_0x531ce5[_0x2a89('0x25')],'type':_0x531ce5['type'][_0x2a89('0x26')]};});_0x1bd232[_0x2a89('0x27')]=_[_0x2a89('0x22')](_0x70c7cf,'name');_0x1bd232[_0x2a89('0x28')]=_['keys'](_0x5b088f[_0x2a89('0x28')]);_0x1bd232[_0x2a89('0x29')]=_['intersection'](_0x1bd232['model'],_0x1bd232['query']);_0x287dd9[_0x2a89('0x2a')]=_[_0x2a89('0x2b')](_0x1bd232[_0x2a89('0x27')],qs[_0x2a89('0x2c')](_0x5b088f[_0x2a89('0x28')][_0x2a89('0x2c')]));_0x287dd9[_0x2a89('0x2a')]=_0x287dd9[_0x2a89('0x2a')][_0x2a89('0x2d')]?_0x287dd9[_0x2a89('0x2a')]:_0x1bd232[_0x2a89('0x27')];if(!_0x5b088f[_0x2a89('0x28')][_0x2a89('0x2e')]('nolimit')){_0x287dd9[_0x2a89('0x2f')]=qs[_0x2a89('0x2f')](_0x5b088f[_0x2a89('0x28')]['limit']);_0x287dd9[_0x2a89('0x17')]=qs[_0x2a89('0x17')](_0x5b088f['query'][_0x2a89('0x17')]);}_0x287dd9[_0x2a89('0x30')]=qs['sort'](_0x5b088f[_0x2a89('0x28')][_0x2a89('0x31')]);_0x287dd9[_0x2a89('0x32')]=qs['filters'](_[_0x2a89('0x33')](_0x5b088f[_0x2a89('0x28')],_0x1bd232[_0x2a89('0x29')]),_0x70c7cf);if(_0x5b088f[_0x2a89('0x28')][_0x2a89('0x34')]){_0x287dd9[_0x2a89('0x32')]=_[_0x2a89('0x35')](_0x287dd9[_0x2a89('0x32')],{'$or':_[_0x2a89('0x22')](_0x70c7cf,function(_0x444d4b){if(_0x444d4b[_0x2a89('0x36')]!==_0x2a89('0x37')){var _0x9a8d4e={};_0x9a8d4e[_0x444d4b[_0x2a89('0x1f')]]={'$like':'%'+_0x5b088f['query'][_0x2a89('0x34')]+'%'};return _0x9a8d4e;}})});}_0x287dd9=_[_0x2a89('0x35')]({},_0x287dd9,_0x5b088f['options']);var _0x1ad773={'where':_0x287dd9[_0x2a89('0x32')]};return db['Network']['count'](_0x1ad773)[_0x2a89('0xc')](function(_0x40ca98){_0x4bad04[_0x2a89('0x19')]=_0x40ca98;if(_0x5b088f[_0x2a89('0x28')]['includeAll']){_0x287dd9['include']=[{'all':!![]}];}return db['Network'][_0x2a89('0x38')](_0x287dd9);})[_0x2a89('0xc')](function(_0x41c75e){_0x4bad04[_0x2a89('0x39')]=_0x41c75e;return _0x4bad04;})['then'](respondWithFilteredResult(_0x4dcdf8,_0x287dd9))[_0x2a89('0x16')](handleError(_0x4dcdf8,null));};exports['show']=function(_0x3bc3e5,_0x422121){var _0x555a8a={'raw':!![],'where':{'id':_0x3bc3e5[_0x2a89('0x3a')]['id']}},_0x5dbbd0={};_0x5dbbd0['model']=_[_0x2a89('0x3b')](db[_0x2a89('0x23')][_0x2a89('0x24')]);_0x5dbbd0['query']=_[_0x2a89('0x3b')](_0x3bc3e5[_0x2a89('0x28')]);_0x5dbbd0[_0x2a89('0x29')]=_[_0x2a89('0x2b')](_0x5dbbd0['model'],_0x5dbbd0[_0x2a89('0x28')]);_0x555a8a['attributes']=_[_0x2a89('0x2b')](_0x5dbbd0['model'],qs[_0x2a89('0x2c')](_0x3bc3e5[_0x2a89('0x28')][_0x2a89('0x2c')]));_0x555a8a[_0x2a89('0x2a')]=_0x555a8a[_0x2a89('0x2a')][_0x2a89('0x2d')]?_0x555a8a[_0x2a89('0x2a')]:_0x5dbbd0[_0x2a89('0x27')];if(_0x3bc3e5[_0x2a89('0x28')][_0x2a89('0x3c')]){_0x555a8a[_0x2a89('0x3d')]=[{'all':!![]}];}_0x555a8a=_[_0x2a89('0x35')]({},_0x555a8a,_0x3bc3e5[_0x2a89('0x3e')]);return db['Network']['find'](_0x555a8a)[_0x2a89('0xc')](handleEntityNotFound(_0x422121,null))[_0x2a89('0xc')](respondWithResult(_0x422121,null))[_0x2a89('0x16')](handleError(_0x422121,null));};exports[_0x2a89('0x3f')]=function(_0x557e30,_0x596b88){var _0x3f38bb;return db['Network']['create'](_0x557e30[_0x2a89('0x40')],{'raw':!![]})[_0x2a89('0xc')](function(_0x1ee045){_0x3f38bb=_0x1ee045;return db[_0x2a89('0x23')][_0x2a89('0x38')]({'where':{'type':_0x557e30['body'][_0x2a89('0x36')]},'raw':!![]});})['then'](function(_0x400744){if(_0x3f38bb[_0x2a89('0x36')][_0x2a89('0x41')]()==_0x2a89('0x42')){var _0x4f104b=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],'server/files/templates/stun_multiple.ejs'),_0x2a89('0x46'));var _0x2ec3d9=ejs[_0x2a89('0x47')](_0x4f104b,{'networks':_0x400744||[]});fs[_0x2a89('0x48')](_0x2a89('0x49'),_0x2ec3d9);return respondWithRpcPromise(_0x2a89('0x4a'),'create',{'module':_0x2a89('0x4b')});}else if(_0x3f38bb[_0x2a89('0x36')][_0x2a89('0x41')]()=='TURN'){var _0x5d337c=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],'server/files/templates/turn_multiple.ejs'),_0x2a89('0x46'));var _0x4700b6=ejs[_0x2a89('0x47')](_0x5d337c,{'networks':_0x400744||[]});fs[_0x2a89('0x48')](_0x2a89('0x4c'),_0x4700b6);return respondWithRpcPromise('Reload',_0x2a89('0x3f'),{'module':_0x2a89('0x4b')});}else{var _0x3ed07b=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config['root'],_0x2a89('0x4d')),'utf8');var _0x59b3f4=ejs['render'](_0x3ed07b,{'networks':_0x400744||[]});fs[_0x2a89('0x48')](util[_0x2a89('0x4e')](_0x2a89('0x4f'),_0x557e30[_0x2a89('0x40')][_0x2a89('0x36')][_0x2a89('0x50')]()),_0x59b3f4);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x3f'),{'module':_0x2a89('0x51')});}})['then'](function(){return _0x3f38bb;})[_0x2a89('0xc')](respondWithResult(_0x596b88,0xc9))[_0x2a89('0x16')](handleError(_0x596b88,null));};exports['update']=function(_0x22f74a,_0x1bcd10){var _0x12f552;return db[_0x2a89('0x23')][_0x2a89('0x52')]({'where':{'id':_0x22f74a[_0x2a89('0x3a')]['id']}})[_0x2a89('0xc')](handleEntityNotFound(_0x1bcd10,null))['then'](saveUpdates(_0x22f74a[_0x2a89('0x40')],null))['then'](function(_0x4c8dcb){if(_0x4c8dcb){_0x12f552=_0x4c8dcb;return db['Network'][_0x2a89('0x38')]({'where':{'type':_0x12f552[_0x2a89('0x36')]},'raw':!![]});}return null;})[_0x2a89('0xc')](function(_0x13ca47){if(_0x12f552[_0x2a89('0x36')][_0x2a89('0x41')]()==_0x2a89('0x42')){var _0x937ca9=fs['readFileSync'](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x53')),'utf8');var _0x580cc4=ejs[_0x2a89('0x47')](_0x937ca9,{'networks':_0x13ca47||[]});fs[_0x2a89('0x48')](_0x2a89('0x49'),_0x580cc4);return respondWithRpcPromise(_0x2a89('0x4a'),'update',{'module':_0x2a89('0x4b')});}else if(_0x12f552[_0x2a89('0x36')][_0x2a89('0x41')]()=='TURN'){var _0x46be19=fs[_0x2a89('0x43')](path['join'](config[_0x2a89('0x45')],_0x2a89('0x54')),_0x2a89('0x46'));var _0x455d37=ejs['render'](_0x46be19,{'networks':_0x13ca47||[]});fs[_0x2a89('0x48')](_0x2a89('0x4c'),_0x455d37);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x55'),{'module':_0x2a89('0x4b')});}else{var _0x29c266=fs['readFileSync'](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x4d')),_0x2a89('0x46'));var _0x29ca37=ejs['render'](_0x29c266,{'networks':_0x13ca47||[]});fs[_0x2a89('0x48')](util['format'](_0x2a89('0x4f'),_0x22f74a['body'][_0x2a89('0x36')][_0x2a89('0x50')]()),_0x29ca37);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x55'),{'module':_0x2a89('0x51')});}})[_0x2a89('0xc')](function(_0x1422ea){if(_0x1422ea){return _0x12f552;}return null;})['then'](respondWithResult(_0x1bcd10,null))[_0x2a89('0x16')](handleError(_0x1bcd10,null));};exports[_0x2a89('0x1c')]=function(_0x40f3dd,_0xec7582){var _0x66232d;return db[_0x2a89('0x23')][_0x2a89('0x52')]({'where':{'id':_0x40f3dd['params']['id']}})[_0x2a89('0xc')](function(_0x285a34){_0x66232d=_0x285a34;return _0x285a34;})[_0x2a89('0xc')](handleEntityNotFound(_0xec7582,null))[_0x2a89('0xc')](removeEntity(_0xec7582,null))['then'](function(){if(_0x66232d){return db[_0x2a89('0x23')][_0x2a89('0x38')]({'where':{'type':_0x66232d[_0x2a89('0x36')]},'raw':!![]});}})[_0x2a89('0xc')](function(_0x11004b){if(_0x66232d[_0x2a89('0x36')][_0x2a89('0x41')]()==_0x2a89('0x42')){var _0x4f7734=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x53')),_0x2a89('0x46'));var _0x23b296=ejs[_0x2a89('0x47')](_0x4f7734,{'networks':_0x11004b||[]});fs['writeFileSync'](_0x2a89('0x49'),_0x23b296);return respondWithRpcPromise('Reload','destroy',{'module':_0x2a89('0x4b')});}else if(_0x66232d[_0x2a89('0x36')][_0x2a89('0x41')]()=='TURN'){var _0x5eb76c=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],'server/files/templates/turn_multiple.ejs'),_0x2a89('0x46'));var _0x1a9307=ejs[_0x2a89('0x47')](_0x5eb76c,{'networks':_0x11004b||[]});fs[_0x2a89('0x48')](_0x2a89('0x4c'),_0x1a9307);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x1c'),{'module':_0x2a89('0x4b')});}else{var _0x3d2de5=fs['readFileSync'](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x4d')),_0x2a89('0x46'));var _0x53f786=ejs[_0x2a89('0x47')](_0x3d2de5,{'networks':_0x11004b||[]});fs[_0x2a89('0x48')](util[_0x2a89('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x66232d[_0x2a89('0x36')]['toLowerCase']()),_0x53f786);return respondWithRpcPromise(_0x2a89('0x4a'),'destroy',{'module':'chan_sip.so'});}})['catch'](handleError(_0xec7582,null));};
\ No newline at end of file
+var _0xf9ce=['Content-Range','update','then','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','count','includeAll','include','Network','findAll','rows','show','params','options','find','create','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','render','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','toLowerCase','chan_sip.so','/etc/asterisk/sip_xcally_%s.conf','util','path','ejs','lodash','../../config/logger','api','../../config/environment','../../mysqldb','http','request','info','Network,\x20%s,\x20%s','Network,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','json','offset','undefined','limit','status','set'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0xf9ce,0x140));var _0xef9c=function(_0x3b231a,_0x53a00d){_0x3b231a=_0x3b231a-0x0;var _0x18d67a=_0xf9ce[_0x3b231a];return _0x18d67a;};'use strict';var util=require(_0xef9c('0x0'));var path=require(_0xef9c('0x1'));var ejs=require(_0xef9c('0x2'));var fs=require('fs');var _=require(_0xef9c('0x3'));var qs=require('../../components/parsers/qs');var logger=require(_0xef9c('0x4'))(_0xef9c('0x5'));var config=require(_0xef9c('0x6'));var db=require(_0xef9c('0x7'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xef9c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x38d41b,_0x344044,_0x29482b,_0x511383){return new Promise(function(_0xdb2d89,_0x22f067){var _0x436d3e=_0x511383||client;return _0x436d3e[_0xef9c('0x9')](_0x38d41b,_0x29482b)['then'](function(_0x5b94dd){logger[_0xef9c('0xa')](_0xef9c('0xb'),_0x344044,'request\x20sent');logger['debug'](_0xef9c('0xc'),_0x344044,_0xef9c('0xd'),JSON['stringify'](_0x5b94dd));if(_0x5b94dd['error']){if(_0x5b94dd[_0xef9c('0xe')][_0xef9c('0xf')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0x344044,_0x5b94dd[_0xef9c('0xe')][_0xef9c('0x10')]);return _0x22f067(_0x5b94dd['error'][_0xef9c('0x10')]);}logger[_0xef9c('0xe')](_0xef9c('0xb'),_0x344044,_0x5b94dd[_0xef9c('0xe')]['message']);return _0xdb2d89(_0x5b94dd[_0xef9c('0xe')][_0xef9c('0x10')]);}else{logger[_0xef9c('0xa')](_0xef9c('0xb'),_0x344044,'request\x20sent');_0xdb2d89(_0x5b94dd['result'][_0xef9c('0x10')]);}})[_0xef9c('0x11')](function(_0x4555b7){logger[_0xef9c('0xe')]('Network,\x20%s,\x20%s',_0x344044,_0x4555b7);_0x22f067(_0x4555b7);});});}function respondWithResult(_0x402bb,_0x494dd6){_0x494dd6=_0x494dd6||0xc8;return function(_0x31ca1a){if(_0x31ca1a){return _0x402bb['status'](_0x494dd6)[_0xef9c('0x12')](_0x31ca1a);}};}function respondWithFilteredResult(_0x13a43a,_0x1ae860){return function(_0x100114){if(_0x100114){var _0x5dbfa2=typeof _0x1ae860[_0xef9c('0x13')]==='undefined'&&typeof _0x1ae860['limit']===_0xef9c('0x14');var _0x2309d0=_0x100114['count'];var _0xf5a1e5=_0x5dbfa2?0x0:_0x1ae860['offset'];var _0x4ccdff=_0x5dbfa2?_0x100114['count']:_0x1ae860[_0xef9c('0x13')]+_0x1ae860[_0xef9c('0x15')];var _0x2ba673;if(_0x4ccdff>=_0x2309d0){_0x4ccdff=_0x2309d0;_0x2ba673=0xc8;}else{_0x2ba673=0xce;}_0x13a43a[_0xef9c('0x16')](_0x2ba673);return _0x13a43a[_0xef9c('0x17')](_0xef9c('0x18'),_0xf5a1e5+'-'+_0x4ccdff+'/'+_0x2309d0)[_0xef9c('0x12')](_0x100114);}return null;};}function saveUpdates(_0x59a5d0){return function(_0x36c832){if(_0x36c832){return _0x36c832[_0xef9c('0x19')](_0x59a5d0)[_0xef9c('0x1a')](function(_0x398e99){return _0x398e99;});}return null;};}function removeEntity(_0x2d65f8){return function(_0x49ae35){if(_0x49ae35){return _0x49ae35[_0xef9c('0x1b')]()[_0xef9c('0x1a')](function(){_0x2d65f8[_0xef9c('0x16')](0xcc)[_0xef9c('0x1c')]();});}};}function handleEntityNotFound(_0x500c1c){return function(_0x12d0e0){if(!_0x12d0e0){_0x500c1c[_0xef9c('0x1d')](0x194);}return _0x12d0e0;};}function handleError(_0x60c033,_0x19b49c){_0x19b49c=_0x19b49c||0x1f4;return function(_0x12e1d6){logger[_0xef9c('0xe')](_0x12e1d6[_0xef9c('0x1e')]);if(_0x12e1d6[_0xef9c('0x1f')]){delete _0x12e1d6[_0xef9c('0x1f')];}_0x60c033[_0xef9c('0x16')](_0x19b49c)[_0xef9c('0x20')](_0x12e1d6);};}exports[_0xef9c('0x21')]=function(_0x5160a2,_0x83296d){var _0x105eb7={},_0x7b2b08={},_0x59ef5d={'count':0x0,'rows':[]};var _0x3cbe42=_[_0xef9c('0x22')](db['Network'][_0xef9c('0x23')],function(_0x14b908){return{'name':_0x14b908[_0xef9c('0x24')],'type':_0x14b908[_0xef9c('0x25')]['key']};});_0x7b2b08[_0xef9c('0x26')]=_[_0xef9c('0x22')](_0x3cbe42,_0xef9c('0x1f'));_0x7b2b08[_0xef9c('0x27')]=_[_0xef9c('0x28')](_0x5160a2[_0xef9c('0x27')]);_0x7b2b08[_0xef9c('0x29')]=_[_0xef9c('0x2a')](_0x7b2b08['model'],_0x7b2b08['query']);_0x105eb7[_0xef9c('0x2b')]=_['intersection'](_0x7b2b08[_0xef9c('0x26')],qs[_0xef9c('0x2c')](_0x5160a2[_0xef9c('0x27')][_0xef9c('0x2c')]));_0x105eb7[_0xef9c('0x2b')]=_0x105eb7[_0xef9c('0x2b')][_0xef9c('0x2d')]?_0x105eb7['attributes']:_0x7b2b08['model'];if(!_0x5160a2[_0xef9c('0x27')][_0xef9c('0x2e')](_0xef9c('0x2f'))){_0x105eb7[_0xef9c('0x15')]=qs[_0xef9c('0x15')](_0x5160a2['query'][_0xef9c('0x15')]);_0x105eb7['offset']=qs[_0xef9c('0x13')](_0x5160a2[_0xef9c('0x27')]['offset']);}_0x105eb7[_0xef9c('0x30')]=qs['sort'](_0x5160a2[_0xef9c('0x27')][_0xef9c('0x31')]);_0x105eb7[_0xef9c('0x32')]=qs[_0xef9c('0x29')](_['pick'](_0x5160a2[_0xef9c('0x27')],_0x7b2b08[_0xef9c('0x29')]),_0x3cbe42);if(_0x5160a2[_0xef9c('0x27')]['filter']){_0x105eb7[_0xef9c('0x32')]=_[_0xef9c('0x33')](_0x105eb7[_0xef9c('0x32')],{'$or':_[_0xef9c('0x22')](_0x3cbe42,function(_0x3ed80a){if(_0x3ed80a[_0xef9c('0x25')]!==_0xef9c('0x34')){var _0x1742cf={};_0x1742cf[_0x3ed80a[_0xef9c('0x1f')]]={'$like':'%'+_0x5160a2[_0xef9c('0x27')][_0xef9c('0x35')]+'%'};return _0x1742cf;}})});}_0x105eb7=_['merge']({},_0x105eb7,_0x5160a2['options']);var _0x476434={'where':_0x105eb7[_0xef9c('0x32')]};return db['Network'][_0xef9c('0x36')](_0x476434)[_0xef9c('0x1a')](function(_0x2188e8){_0x59ef5d[_0xef9c('0x36')]=_0x2188e8;if(_0x5160a2[_0xef9c('0x27')][_0xef9c('0x37')]){_0x105eb7[_0xef9c('0x38')]=[{'all':!![]}];}return db[_0xef9c('0x39')][_0xef9c('0x3a')](_0x105eb7);})[_0xef9c('0x1a')](function(_0x414039){_0x59ef5d[_0xef9c('0x3b')]=_0x414039;return _0x59ef5d;})[_0xef9c('0x1a')](respondWithFilteredResult(_0x83296d,_0x105eb7))[_0xef9c('0x11')](handleError(_0x83296d,null));};exports[_0xef9c('0x3c')]=function(_0x5e7790,_0xfc0ec3){var _0x557036={'raw':!![],'where':{'id':_0x5e7790[_0xef9c('0x3d')]['id']}},_0xc94c0d={};_0xc94c0d['model']=_['keys'](db[_0xef9c('0x39')][_0xef9c('0x23')]);_0xc94c0d[_0xef9c('0x27')]=_[_0xef9c('0x28')](_0x5e7790[_0xef9c('0x27')]);_0xc94c0d[_0xef9c('0x29')]=_[_0xef9c('0x2a')](_0xc94c0d[_0xef9c('0x26')],_0xc94c0d[_0xef9c('0x27')]);_0x557036[_0xef9c('0x2b')]=_[_0xef9c('0x2a')](_0xc94c0d[_0xef9c('0x26')],qs[_0xef9c('0x2c')](_0x5e7790[_0xef9c('0x27')][_0xef9c('0x2c')]));_0x557036[_0xef9c('0x2b')]=_0x557036[_0xef9c('0x2b')][_0xef9c('0x2d')]?_0x557036[_0xef9c('0x2b')]:_0xc94c0d[_0xef9c('0x26')];if(_0x5e7790[_0xef9c('0x27')][_0xef9c('0x37')]){_0x557036[_0xef9c('0x38')]=[{'all':!![]}];}_0x557036=_[_0xef9c('0x33')]({},_0x557036,_0x5e7790[_0xef9c('0x3e')]);return db[_0xef9c('0x39')][_0xef9c('0x3f')](_0x557036)[_0xef9c('0x1a')](handleEntityNotFound(_0xfc0ec3,null))[_0xef9c('0x1a')](respondWithResult(_0xfc0ec3,null))['catch'](handleError(_0xfc0ec3,null));};exports[_0xef9c('0x40')]=function(_0x2a1f4f,_0x37d620){var _0x5deec9;return db[_0xef9c('0x39')][_0xef9c('0x40')](_0x2a1f4f[_0xef9c('0x41')],{'raw':!![]})[_0xef9c('0x1a')](function(_0x545a5b){_0x5deec9=_0x545a5b;return db[_0xef9c('0x39')][_0xef9c('0x3a')]({'where':{'type':_0x2a1f4f[_0xef9c('0x41')][_0xef9c('0x25')]},'raw':!![]});})[_0xef9c('0x1a')](function(_0x1c73ed){if(_0x5deec9[_0xef9c('0x25')][_0xef9c('0x42')]()==_0xef9c('0x43')){var _0x294754=fs[_0xef9c('0x44')](path[_0xef9c('0x45')](config[_0xef9c('0x46')],_0xef9c('0x47')),_0xef9c('0x48'));var _0x370b48=ejs['render'](_0x294754,{'networks':_0x1c73ed||[]});fs[_0xef9c('0x49')](_0xef9c('0x4a'),_0x370b48);return respondWithRpcPromise(_0xef9c('0x4b'),_0xef9c('0x40'),{'module':_0xef9c('0x4c')});}else if(_0x5deec9[_0xef9c('0x25')][_0xef9c('0x42')]()==_0xef9c('0x4d')){var _0x2eff94=fs[_0xef9c('0x44')](path[_0xef9c('0x45')](config['root'],_0xef9c('0x4e')),_0xef9c('0x48'));var _0x469947=ejs[_0xef9c('0x4f')](_0x2eff94,{'networks':_0x1c73ed||[]});fs[_0xef9c('0x49')](_0xef9c('0x50'),_0x469947);return respondWithRpcPromise('Reload',_0xef9c('0x40'),{'module':_0xef9c('0x4c')});}else{var _0x1e2f79=fs[_0xef9c('0x44')](path[_0xef9c('0x45')](config['root'],_0xef9c('0x51')),_0xef9c('0x48'));var _0x10e710=ejs['render'](_0x1e2f79,{'networks':_0x1c73ed||[]});fs['writeFileSync'](util[_0xef9c('0x52')]('/etc/asterisk/sip_xcally_%s.conf',_0x2a1f4f[_0xef9c('0x41')]['type'][_0xef9c('0x53')]()),_0x10e710);return respondWithRpcPromise(_0xef9c('0x4b'),_0xef9c('0x40'),{'module':_0xef9c('0x54')});}})[_0xef9c('0x1a')](function(){return _0x5deec9;})[_0xef9c('0x1a')](respondWithResult(_0x37d620,0xc9))[_0xef9c('0x11')](handleError(_0x37d620,null));};exports['update']=function(_0x4786ed,_0x8488e8){var _0x1d1bc3;return db[_0xef9c('0x39')][_0xef9c('0x3f')]({'where':{'id':_0x4786ed['params']['id']}})[_0xef9c('0x1a')](handleEntityNotFound(_0x8488e8,null))[_0xef9c('0x1a')](saveUpdates(_0x4786ed['body'],null))[_0xef9c('0x1a')](function(_0x5be0b8){if(_0x5be0b8){_0x1d1bc3=_0x5be0b8;return db[_0xef9c('0x39')][_0xef9c('0x3a')]({'where':{'type':_0x1d1bc3[_0xef9c('0x25')]},'raw':!![]});}return null;})[_0xef9c('0x1a')](function(_0x4f395f){if(_0x1d1bc3[_0xef9c('0x25')]['toUpperCase']()==_0xef9c('0x43')){var _0x527a7c=fs[_0xef9c('0x44')](path[_0xef9c('0x45')](config['root'],'server/files/templates/stun_multiple.ejs'),_0xef9c('0x48'));var _0x4466df=ejs['render'](_0x527a7c,{'networks':_0x4f395f||[]});fs[_0xef9c('0x49')](_0xef9c('0x4a'),_0x4466df);return respondWithRpcPromise(_0xef9c('0x4b'),_0xef9c('0x19'),{'module':'res_stun_monitor.so'});}else if(_0x1d1bc3[_0xef9c('0x25')][_0xef9c('0x42')]()==_0xef9c('0x4d')){var _0x23a1f8=fs[_0xef9c('0x44')](path[_0xef9c('0x45')](config[_0xef9c('0x46')],_0xef9c('0x4e')),_0xef9c('0x48'));var _0x2330e2=ejs[_0xef9c('0x4f')](_0x23a1f8,{'networks':_0x4f395f||[]});fs[_0xef9c('0x49')](_0xef9c('0x50'),_0x2330e2);return respondWithRpcPromise('Reload',_0xef9c('0x19'),{'module':'res_stun_monitor.so'});}else{var _0xf2a915=fs[_0xef9c('0x44')](path['join'](config[_0xef9c('0x46')],'server/files/templates/network.ejs'),_0xef9c('0x48'));var _0x520566=ejs[_0xef9c('0x4f')](_0xf2a915,{'networks':_0x4f395f||[]});fs['writeFileSync'](util[_0xef9c('0x52')](_0xef9c('0x55'),_0x4786ed[_0xef9c('0x41')][_0xef9c('0x25')][_0xef9c('0x53')]()),_0x520566);return respondWithRpcPromise(_0xef9c('0x4b'),_0xef9c('0x19'),{'module':'chan_sip.so'});}})['then'](function(_0x79a999){if(_0x79a999){return _0x1d1bc3;}return null;})[_0xef9c('0x1a')](respondWithResult(_0x8488e8,null))[_0xef9c('0x11')](handleError(_0x8488e8,null));};exports['destroy']=function(_0x1d36ed,_0x40dced){var _0x5224ea;return db[_0xef9c('0x39')][_0xef9c('0x3f')]({'where':{'id':_0x1d36ed[_0xef9c('0x3d')]['id']}})[_0xef9c('0x1a')](function(_0x12488d){_0x5224ea=_0x12488d;return _0x12488d;})['then'](handleEntityNotFound(_0x40dced,null))[_0xef9c('0x1a')](removeEntity(_0x40dced,null))[_0xef9c('0x1a')](function(){if(_0x5224ea){return db['Network']['findAll']({'where':{'type':_0x5224ea['type']},'raw':!![]});}})[_0xef9c('0x1a')](function(_0x44c276){if(_0x5224ea[_0xef9c('0x25')][_0xef9c('0x42')]()=='STUN'){var _0x100008=fs[_0xef9c('0x44')](path['join'](config[_0xef9c('0x46')],_0xef9c('0x47')),_0xef9c('0x48'));var _0x23c07c=ejs[_0xef9c('0x4f')](_0x100008,{'networks':_0x44c276||[]});fs[_0xef9c('0x49')](_0xef9c('0x4a'),_0x23c07c);return respondWithRpcPromise(_0xef9c('0x4b'),_0xef9c('0x1b'),{'module':_0xef9c('0x4c')});}else if(_0x5224ea[_0xef9c('0x25')]['toUpperCase']()=='TURN'){var _0x10fc27=fs[_0xef9c('0x44')](path[_0xef9c('0x45')](config[_0xef9c('0x46')],_0xef9c('0x4e')),'utf8');var _0x15270d=ejs[_0xef9c('0x4f')](_0x10fc27,{'networks':_0x44c276||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x15270d);return respondWithRpcPromise(_0xef9c('0x4b'),_0xef9c('0x1b'),{'module':_0xef9c('0x4c')});}else{var _0x2244cb=fs['readFileSync'](path[_0xef9c('0x45')](config[_0xef9c('0x46')],_0xef9c('0x51')),_0xef9c('0x48'));var _0x144e76=ejs[_0xef9c('0x4f')](_0x2244cb,{'networks':_0x44c276||[]});fs[_0xef9c('0x49')](util[_0xef9c('0x52')](_0xef9c('0x55'),_0x5224ea['type'][_0xef9c('0x53')]()),_0x144e76);return respondWithRpcPromise(_0xef9c('0x4b'),_0xef9c('0x1b'),{'module':_0xef9c('0x54')});}})[_0xef9c('0x11')](handleError(_0x40dced,null));};
\ No newline at end of file
index ada7045..5e0ea73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db8=['lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./network.attributes','exports','Network','network'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x5db8,0xbb));var _0x85db=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x5db8[_0x4bb66f];return _0xf2772f;};'use strict';var _=require(_0x85db('0x0'));var util=require(_0x85db('0x1'));var logger=require(_0x85db('0x2'))('api');var moment=require(_0x85db('0x3'));var BPromise=require(_0x85db('0x4'));var rp=require(_0x85db('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x85db('0x6'));var attributes=require(_0x85db('0x7'));module[_0x85db('0x8')]=function(_0x34d71f,_0x48bf16){return _0x34d71f['define'](_0x85db('0x9'),attributes,{'tableName':_0x85db('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc03=['./network.attributes','exports','define','network','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x2d3ec4,_0x119362){var _0x6d0b5=function(_0xd6d7da){while(--_0xd6d7da){_0x2d3ec4['push'](_0x2d3ec4['shift']());}};_0x6d0b5(++_0x119362);}(_0xfc03,0x16f));var _0x3fc0=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xfc03[_0x5a3cf0];return _0x5a64ee;};'use strict';var _=require(_0x3fc0('0x0'));var util=require('util');var logger=require(_0x3fc0('0x1'))(_0x3fc0('0x2'));var moment=require('moment');var BPromise=require(_0x3fc0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3fc0('0x4'));var rimraf=require(_0x3fc0('0x5'));var config=require(_0x3fc0('0x6'));var attributes=require(_0x3fc0('0x7'));module[_0x3fc0('0x8')]=function(_0x389bfb,_0x2b4ef6){return _0x389bfb[_0x3fc0('0x9')]('Network',attributes,{'tableName':_0x3fc0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 910456e..c251413 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(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7a54,0x106));var _0x47a5=function(_0x2f9d82,_0x5d07eb){_0x2f9d82=_0x2f9d82-0x0;var _0x47553b=_0x7a54[_0x2f9d82];return _0x47553b;};'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 _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(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x451339,_0x331a14){_0x451339=_0x451339-0x0;var _0x1e9148=_0x7a54[_0x451339];return _0x1e9148;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index bdfdfc9..cec13a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0628=['index','/describe','describe','get','/:id','isAuthenticated','show','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/users','getAgents','post','create','/:id/dispositions','addAnswer','notify','addApplications','addAgents','/:id/send','send','update','delete','destroy','removeDispositions','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','./openchannelAccount.controller'];(function(_0x4dae71,_0x552903){var _0x25d8be=function(_0x2a5027){while(--_0x2a5027){_0x4dae71['push'](_0x4dae71['shift']());}};_0x25d8be(++_0x552903);}(_0x0628,0x1cc));var _0x8062=function(_0x327d9c,_0x4360d5){_0x327d9c=_0x327d9c-0x0;var _0x219f6b=_0x0628[_0x327d9c];return _0x219f6b;};'use strict';var multer=require(_0x8062('0x0'));var util=require(_0x8062('0x1'));var path=require(_0x8062('0x2'));var timeout=require(_0x8062('0x3'));var express=require(_0x8062('0x4'));var router=express[_0x8062('0x5')]();var fs_extra=require(_0x8062('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8062('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x8062('0x8')]);router['get'](_0x8062('0x9'),auth['isAuthenticated'](),controller[_0x8062('0xa')]);router[_0x8062('0xb')](_0x8062('0xc'),auth[_0x8062('0xd')](),controller[_0x8062('0xe')]);router[_0x8062('0xb')]('/:id/dispositions',auth[_0x8062('0xd')](),controller['getDispositions']);router[_0x8062('0xb')](_0x8062('0xf'),auth[_0x8062('0xd')](),controller[_0x8062('0x10')]);router[_0x8062('0xb')](_0x8062('0x11'),auth[_0x8062('0xd')](),controller[_0x8062('0x12')]);router[_0x8062('0xb')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x8062('0x13')]);router[_0x8062('0xb')](_0x8062('0x14'),auth[_0x8062('0xd')](),controller[_0x8062('0x15')]);router[_0x8062('0x16')]('/',auth[_0x8062('0xd')](),controller[_0x8062('0x17')]);router['post'](_0x8062('0x18'),auth[_0x8062('0xd')](),controller['addDisposition']);router['post'](_0x8062('0xf'),auth[_0x8062('0xd')](),controller[_0x8062('0x19')]);router[_0x8062('0x16')]('/:id/notify',controller[_0x8062('0x1a')]);router[_0x8062('0x16')](_0x8062('0x11'),auth[_0x8062('0xd')](),controller[_0x8062('0x1b')]);router['post'](_0x8062('0x14'),auth[_0x8062('0xd')](),controller[_0x8062('0x1c')]);router[_0x8062('0x16')](_0x8062('0x1d'),auth[_0x8062('0xd')](),controller[_0x8062('0x1e')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x8062('0x1f')]);router[_0x8062('0x20')]('/:id',auth[_0x8062('0xd')](),controller[_0x8062('0x21')]);router[_0x8062('0x20')](_0x8062('0x18'),auth[_0x8062('0xd')](),controller[_0x8062('0x22')]);router[_0x8062('0x20')](_0x8062('0xf'),auth[_0x8062('0xd')](),controller['removeAnswers']);router['delete'](_0x8062('0x14'),auth[_0x8062('0xd')](),controller[_0x8062('0x23')]);module['exports']=router;
\ No newline at end of file
+var _0x182c=['addApplications','addAgents','/:id/send','send','put','update','destroy','delete','removeDispositions','removeAnswers','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','describe','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','post','create','addDisposition','addAnswer','/:id/notify'];(function(_0x245307,_0x12cbb9){var _0x4cf712=function(_0x1ee4af){while(--_0x1ee4af){_0x245307['push'](_0x245307['shift']());}};_0x4cf712(++_0x12cbb9);}(_0x182c,0x1df));var _0xc182=function(_0x3b83ad,_0x51290d){_0x3b83ad=_0x3b83ad-0x0;var _0x20e6fd=_0x182c[_0x3b83ad];return _0x20e6fd;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc182('0x0'));var timeout=require(_0xc182('0x1'));var express=require(_0xc182('0x2'));var router=express['Router']();var fs_extra=require(_0xc182('0x3'));var auth=require(_0xc182('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc182('0x5'));var controller=require(_0xc182('0x6'));router[_0xc182('0x7')]('/',auth[_0xc182('0x8')](),controller[_0xc182('0x9')]);router['get']('/describe',auth[_0xc182('0x8')](),controller[_0xc182('0xa')]);router['get']('/:id',auth[_0xc182('0x8')](),controller['show']);router[_0xc182('0x7')](_0xc182('0xb'),auth['isAuthenticated'](),controller[_0xc182('0xc')]);router[_0xc182('0x7')](_0xc182('0xd'),auth[_0xc182('0x8')](),controller[_0xc182('0xe')]);router[_0xc182('0x7')](_0xc182('0xf'),auth[_0xc182('0x8')](),controller[_0xc182('0x10')]);router[_0xc182('0x7')](_0xc182('0x11'),auth[_0xc182('0x8')](),controller[_0xc182('0x12')]);router[_0xc182('0x7')](_0xc182('0x13'),auth['isAuthenticated'](),controller['getAgents']);router[_0xc182('0x14')]('/',auth['isAuthenticated'](),controller[_0xc182('0x15')]);router[_0xc182('0x14')](_0xc182('0xb'),auth[_0xc182('0x8')](),controller[_0xc182('0x16')]);router[_0xc182('0x14')](_0xc182('0xd'),auth[_0xc182('0x8')](),controller[_0xc182('0x17')]);router[_0xc182('0x14')](_0xc182('0x18'),controller['notify']);router[_0xc182('0x14')]('/:id/applications',auth[_0xc182('0x8')](),controller[_0xc182('0x19')]);router[_0xc182('0x14')](_0xc182('0x13'),auth[_0xc182('0x8')](),controller[_0xc182('0x1a')]);router[_0xc182('0x14')](_0xc182('0x1b'),auth['isAuthenticated'](),controller[_0xc182('0x1c')]);router[_0xc182('0x1d')]('/:id',auth['isAuthenticated'](),controller[_0xc182('0x1e')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xc182('0x1f')]);router[_0xc182('0x20')](_0xc182('0xb'),auth[_0xc182('0x8')](),controller[_0xc182('0x21')]);router[_0xc182('0x20')](_0xc182('0xd'),auth['isAuthenticated'](),controller[_0xc182('0x22')]);router[_0xc182('0x20')](_0xc182('0x13'),auth[_0xc182('0x8')](),controller['removeAgents']);module[_0xc182('0x23')]=router;
\ No newline at end of file
index d59064b..c3dfd99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86bd=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x86bd,0xda));var _0xd86b=function(_0x50d911,_0x5a81cb){_0x50d911=_0x50d911-0x0;var _0x2a1e57=_0x86bd[_0x50d911];return _0x2a1e57;};'use strict';var Sequelize=require(_0xd86b('0x0'));var rs=require(_0xd86b('0x1'));module[_0xd86b('0x2')]={'name':{'type':Sequelize[_0xd86b('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xd86b('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xd86b('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xd86b('0x4')],'defaultValue':function(){return _0xd86b('0x5');}},'notificationSound':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd86b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xd86b('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd86b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd86b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xd86b('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':![],'comment':_0xd86b('0x9'),'set':function(_0x7b8e55){if(!_0x7b8e55)this['setDataValue'](_0xd86b('0xa'),null);this['setDataValue'](_0xd86b('0xb'),_0x7b8e55);}}};
\ No newline at end of file
+var _0x80c2=['mandatoryDisposition','sequelize','randomstring','STRING','generate','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue'];(function(_0x509c0b,_0x4d4553){var _0x5f0415=function(_0x4f9d10){while(--_0x4f9d10){_0x509c0b['push'](_0x509c0b['shift']());}};_0x5f0415(++_0x4d4553);}(_0x80c2,0x14e));var _0x280c=function(_0x3f431c,_0x4ab8b7){_0x3f431c=_0x3f431c-0x0;var _0x49264d=_0x80c2[_0x3f431c];return _0x49264d;};'use strict';var Sequelize=require(_0x280c('0x0'));var rs=require(_0x280c('0x1'));module['exports']={'name':{'type':Sequelize[_0x280c('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x280c('0x2')],'defaultValue':function(){return rs[_0x280c('0x3')]();}},'replyUri':{'type':Sequelize[_0x280c('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x280c('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x280c('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x280c('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x280c('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x280c('0x6')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x15e760){if(!_0x15e760)this[_0x280c('0x7')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x280c('0x8'),_0x15e760);}}};
\ No newline at end of file
index 5e849a1..e45ad02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc23a=['findAndCountAll','finally','getApplications','getInteractions','Owner','fullname','internal','Tag','Tags','tag','addAgents','omit','spread','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','push','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','OpenchannelAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','limit','count','Content-Range','apply','reject','update','destroy','get','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','offset','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','rawAttributes','keys','OpenchannelAccount','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','order','pick','removeDispositions','addAnswer','CannedAnswer','nolimit','removeAnswers','ids','notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','updatedAt','difference','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','applications','list','asc','account','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','messageId','created','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','interaction','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate'];(function(_0x44e3bb,_0x13237e){var _0x4b39b8=function(_0x21ff15){while(--_0x21ff15){_0x44e3bb['push'](_0x44e3bb['shift']());}};_0x4b39b8(++_0x13237e);}(_0xc23a,0xd2));var _0xac23=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0xc23a[_0x5cb1af];return _0x8d7940;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xac23('0x0'));var zipdir=require(_0xac23('0x1'));var jsonpatch=require(_0xac23('0x2'));var rp=require('request-promise');var moment=require(_0xac23('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xac23('0x4'));var path=require('path');var sox=require(_0xac23('0x5'));var csv=require(_0xac23('0x6'));var ejs=require(_0xac23('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xac23('0x8'));var crypto=require(_0xac23('0x9'));var jsforce=require(_0xac23('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xac23('0x6'));var querystring=require(_0xac23('0xb'));var Papa=require(_0xac23('0xc'));var Redis=require(_0xac23('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xac23('0xe'));var logger=require(_0xac23('0xf'))('api');var utils=require(_0xac23('0x10'));var config=require(_0xac23('0x11'));var licenseUtil=require(_0xac23('0x12'));var db=require(_0xac23('0x13'))['db'];config[_0xac23('0x14')]=_[_0xac23('0x15')](config[_0xac23('0x14')],{'host':_0xac23('0x16'),'port':0x18eb});var socket=require(_0xac23('0x17'))(new Redis(config[_0xac23('0x14')]));require('./openchannelAccount.socket')[_0xac23('0x18')](socket);var jayson=require(_0xac23('0x19'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xac23('0x1a')][_0xac23('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x618735,_0x49fa85,_0x138548,_0x1c117f){return new BPromise(function(_0xaf49de,_0x449c37){var _0x48e6c9=_0x1c117f||client;return _0x48e6c9[_0xac23('0x1c')](_0x618735,_0x138548)[_0xac23('0x1d')](function(_0x3699b0){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x49fa85,_0xac23('0x1e'));logger[_0xac23('0x1f')](_0xac23('0x20'),_0x49fa85,_0xac23('0x1e'),JSON['stringify'](_0x3699b0));if(_0x3699b0[_0xac23('0x21')]){if(_0x3699b0[_0xac23('0x21')][_0xac23('0x22')]===0x1f4){logger[_0xac23('0x21')](_0xac23('0x23'),_0x49fa85,_0x3699b0[_0xac23('0x21')]['message']);return _0x449c37(_0x3699b0[_0xac23('0x21')][_0xac23('0x24')]);}logger[_0xac23('0x21')](_0xac23('0x23'),_0x49fa85,_0x3699b0[_0xac23('0x21')]['message']);return _0xaf49de(_0x3699b0[_0xac23('0x21')]['message']);}else{logger[_0xac23('0x25')](_0xac23('0x23'),_0x49fa85,_0xac23('0x1e'));_0xaf49de(_0x3699b0[_0xac23('0x26')][_0xac23('0x24')]);}})[_0xac23('0x27')](function(_0x58de43){logger[_0xac23('0x21')]('OpenchannelAccount,\x20%s,\x20%s',_0x49fa85,_0x58de43);_0x449c37(_0x58de43);});});}function respondWithStatusCode(_0x43440a,_0x2d552b){_0x2d552b=_0x2d552b||0xcc;return function(_0x9bb37c){if(_0x9bb37c){return _0x43440a[_0xac23('0x28')](_0x2d552b);}return _0x43440a[_0xac23('0x29')](_0x2d552b)[_0xac23('0x2a')]();};}function respondWithResult(_0x625160,_0x2190f8){_0x2190f8=_0x2190f8||0xc8;return function(_0x29375f){if(_0x29375f){return _0x625160[_0xac23('0x29')](_0x2190f8)[_0xac23('0x2b')](_0x29375f);}};}function respondWithFilteredResult(_0x1a7502,_0x73bba0){return function(_0x27e17b){if(_0x27e17b){var _0x13f4b5=typeof _0x73bba0['offset']==='undefined'&&typeof _0x73bba0[_0xac23('0x2c')]==='undefined';var _0x5a6bd9=_0x27e17b[_0xac23('0x2d')];var _0x2a0c2f=_0x13f4b5?0x0:_0x73bba0['offset'];var _0x534ed7=_0x13f4b5?_0x27e17b[_0xac23('0x2d')]:_0x73bba0['offset']+_0x73bba0['limit'];var _0x28dd39;if(_0x534ed7>=_0x5a6bd9){_0x534ed7=_0x5a6bd9;_0x28dd39=0xc8;}else{_0x28dd39=0xce;}_0x1a7502[_0xac23('0x29')](_0x28dd39);return _0x1a7502['set'](_0xac23('0x2e'),_0x2a0c2f+'-'+_0x534ed7+'/'+_0x5a6bd9)[_0xac23('0x2b')](_0x27e17b);}return null;};}function patchUpdates(_0x5cc040){return function(_0x3571e0){try{jsonpatch[_0xac23('0x2f')](_0x3571e0,_0x5cc040,!![]);}catch(_0x213a2e){return BPromise[_0xac23('0x30')](_0x213a2e);}return _0x3571e0['save']();};}function saveUpdates(_0x2f71e1,_0x57dd7d){return function(_0x3de89f){if(_0x3de89f){return _0x3de89f[_0xac23('0x31')](_0x2f71e1)[_0xac23('0x1d')](function(_0x1e1b9c){return _0x1e1b9c;});}return null;};}function removeEntity(_0x378405,_0x34df8a){return function(_0x1cfd73){if(_0x1cfd73){return _0x1cfd73[_0xac23('0x32')]()['then'](function(){var _0x570cb9=_0x1cfd73[_0xac23('0x33')]({'plain':!![]});var _0x1edc31=_0xac23('0x34');return db['UserProfileResource'][_0xac23('0x32')]({'where':{'type':_0x1edc31,'resourceId':_0x570cb9['id']}})[_0xac23('0x1d')](function(){return _0x1cfd73;});})[_0xac23('0x1d')](function(){_0x378405[_0xac23('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4731a1,_0x438c3e){return function(_0x2b0f02){if(!_0x2b0f02){_0x4731a1[_0xac23('0x28')](0x194);}return _0x2b0f02;};}function handleError(_0x20eaad,_0x4b784c){_0x4b784c=_0x4b784c||0x1f4;return function(_0x259cf1){logger[_0xac23('0x21')](_0x259cf1[_0xac23('0x35')]);if(_0x259cf1[_0xac23('0x36')]){delete _0x259cf1[_0xac23('0x36')];}_0x20eaad['status'](_0x4b784c)[_0xac23('0x37')](_0x259cf1);};}exports[_0xac23('0x38')]=function(_0x4300b9,_0x560a0f){var _0x36cbe7={'include':[{'model':db[_0xac23('0x39')],'as':_0xac23('0x3a')}]},_0x4970e2={},_0x4dfaa3={'count':0x0,'rows':[]};var _0x514bc4=_[_0xac23('0x3b')](db['OpenchannelAccount']['rawAttributes'],function(_0x387750){return{'name':_0x387750[_0xac23('0x3c')],'type':_0x387750[_0xac23('0x3d')][_0xac23('0x3e')]};});_0x4970e2['model']=_['map'](_0x514bc4,_0xac23('0x36'));_0x4970e2[_0xac23('0x3f')]=_['keys'](_0x4300b9[_0xac23('0x3f')]);_0x4970e2[_0xac23('0x40')]=_[_0xac23('0x41')](_0x4970e2[_0xac23('0x42')],_0x4970e2[_0xac23('0x3f')]);_0x36cbe7[_0xac23('0x43')]=_[_0xac23('0x41')](_0x4970e2[_0xac23('0x42')],qs[_0xac23('0x44')](_0x4300b9[_0xac23('0x3f')]['fields']));_0x36cbe7[_0xac23('0x43')]=_0x36cbe7[_0xac23('0x43')][_0xac23('0x45')]?_0x36cbe7[_0xac23('0x43')]:_0x4970e2[_0xac23('0x42')];if(!_0x4300b9[_0xac23('0x3f')][_0xac23('0x46')]('nolimit')){_0x36cbe7[_0xac23('0x2c')]=qs['limit'](_0x4300b9[_0xac23('0x3f')][_0xac23('0x2c')]);_0x36cbe7['offset']=qs['offset'](_0x4300b9[_0xac23('0x3f')][_0xac23('0x47')]);}_0x36cbe7['order']=qs[_0xac23('0x48')](_0x4300b9['query']['sort']);_0x36cbe7['where']=qs['filters'](_['pick'](_0x4300b9[_0xac23('0x3f')],_0x4970e2['filters']),_0x514bc4);if(_0x4300b9[_0xac23('0x3f')][_0xac23('0x49')]){_0x36cbe7[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x36cbe7['where'],{'$or':_[_0xac23('0x3b')](_0x514bc4,function(_0x13c773){if(_0x13c773['type']!==_0xac23('0x4c')){var _0x3444d4={};_0x3444d4[_0x13c773['name']]={'$like':'%'+_0x4300b9[_0xac23('0x3f')][_0xac23('0x49')]+'%'};return _0x3444d4;}})});}_0x36cbe7=_[_0xac23('0x4b')]({},_0x36cbe7,_0x4300b9[_0xac23('0x4d')]);var _0x5c138d={'where':_0x36cbe7['where']};return db['OpenchannelAccount']['count'](_0x5c138d)[_0xac23('0x1d')](function(_0x4de1e9){_0x4dfaa3['count']=_0x4de1e9;if(_0x4300b9['query'][_0xac23('0x4e')]){_0x36cbe7['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0xac23('0x4f')](_0x36cbe7);})[_0xac23('0x1d')](function(_0x27a45f){_0x4dfaa3[_0xac23('0x50')]=_0x27a45f;return _0x4dfaa3;})[_0xac23('0x1d')](respondWithFilteredResult(_0x560a0f,_0x36cbe7))[_0xac23('0x27')](handleError(_0x560a0f,null));};exports[_0xac23('0x51')]=function(_0x232d7c,_0x5c0910){var _0x2ace79={'raw':![],'where':{'id':_0x232d7c['params']['id']},'include':[{'model':db[_0xac23('0x39')],'as':'mandatoryDispositionPause'}]},_0x5b884a={};_0x5b884a['model']=_['keys'](db['OpenchannelAccount'][_0xac23('0x52')]);_0x5b884a[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x232d7c[_0xac23('0x3f')]);_0x5b884a[_0xac23('0x40')]=_[_0xac23('0x41')](_0x5b884a[_0xac23('0x42')],_0x5b884a[_0xac23('0x3f')]);_0x2ace79['attributes']=_[_0xac23('0x41')](_0x5b884a['model'],qs[_0xac23('0x44')](_0x232d7c[_0xac23('0x3f')]['fields']));_0x2ace79['attributes']=_0x2ace79[_0xac23('0x43')][_0xac23('0x45')]?_0x2ace79[_0xac23('0x43')]:_0x5b884a[_0xac23('0x42')];if(_0x232d7c['query'][_0xac23('0x4e')]){_0x2ace79['include']=[{'all':!![]}];}_0x2ace79=_['merge']({},_0x2ace79,_0x232d7c[_0xac23('0x4d')]);return db[_0xac23('0x54')]['find'](_0x2ace79)[_0xac23('0x1d')](handleEntityNotFound(_0x5c0910,null))[_0xac23('0x1d')](respondWithResult(_0x5c0910,null))[_0xac23('0x27')](handleError(_0x5c0910,null));};exports[_0xac23('0x55')]=function(_0x202445,_0x37c926){return db['OpenchannelAccount'][_0xac23('0x55')](_0x202445[_0xac23('0x56')],{})['then'](function(_0x4ca325){var _0x532182=_0x202445[_0xac23('0x57')]['get']({'plain':!![]});if(!_0x532182)throw new Error(_0xac23('0x58'));if(_0x532182['role']==='user'){var _0x2e21ec=_0x4ca325[_0xac23('0x33')]({'plain':!![]});var _0x49eb18=_0xac23('0x34');return db['UserProfileSection'][_0xac23('0x59')]({'where':{'name':_0x49eb18,'userProfileId':_0x532182[_0xac23('0x5a')]},'raw':!![]})[_0xac23('0x1d')](function(_0x55e2d9){if(_0x55e2d9&&_0x55e2d9['autoAssociation']===0x0){return db[_0xac23('0x5b')][_0xac23('0x55')]({'name':_0x2e21ec[_0xac23('0x36')],'resourceId':_0x2e21ec['id'],'type':_0x55e2d9[_0xac23('0x36')],'sectionId':_0x55e2d9['id']},{})[_0xac23('0x1d')](function(){return _0x4ca325;});}else{return _0x4ca325;}})['catch'](function(_0x539743){logger['error'](_0xac23('0x5c'),_0x539743);throw _0x539743;});}return _0x4ca325;})[_0xac23('0x1d')](respondWithResult(_0x37c926,0xc9))[_0xac23('0x27')](handleError(_0x37c926,null));};exports[_0xac23('0x31')]=function(_0x2a0849,_0x414a39){if(_0x2a0849['body']['id']){delete _0x2a0849[_0xac23('0x56')]['id'];}return db[_0xac23('0x54')]['find']({'where':{'id':_0x2a0849[_0xac23('0x5d')]['id']},'include':[{'model':db['Pause'],'as':_0xac23('0x3a')}]})[_0xac23('0x1d')](handleEntityNotFound(_0x414a39,null))['then'](saveUpdates(_0x2a0849[_0xac23('0x56')],null))[_0xac23('0x1d')](respondWithResult(_0x414a39,null))[_0xac23('0x27')](handleError(_0x414a39,null));};exports['destroy']=function(_0x1baa51,_0x232b1d){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x1baa51[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x232b1d,null))[_0xac23('0x1d')](removeEntity(_0x232b1d,null))['catch'](handleError(_0x232b1d,null));};exports[_0xac23('0x5e')]=function(_0x441bd2,_0x5a6756){return db[_0xac23('0x54')][_0xac23('0x5e')]()[_0xac23('0x1d')](respondWithResult(_0x5a6756,null))['catch'](handleError(_0x5a6756,null));};exports[_0xac23('0x5f')]=function(_0x1ddc58,_0x4ffaa9,_0x172c05){if(_0x1ddc58[_0xac23('0x56')]['id']){delete _0x1ddc58[_0xac23('0x56')]['id'];}return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x1ddc58[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x4ffaa9,null))['then'](function(_0x2a9730){if(_0x2a9730){_0x1ddc58[_0xac23('0x56')][_0xac23('0x60')]=_0x2a9730['id'];return db[_0xac23('0x61')][_0xac23('0x55')](_0x1ddc58[_0xac23('0x56')]);}})[_0xac23('0x1d')](respondWithResult(_0x4ffaa9,null))[_0xac23('0x27')](handleError(_0x4ffaa9,null));};exports[_0xac23('0x62')]=function(_0x4e165e,_0x308439,_0x1525e9){var _0x200567={'raw':![],'where':{}};var _0x308090={};var _0x5866b4={'count':0x0,'rows':[]};return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x4e165e['params']['id']}})['then'](handleEntityNotFound(_0x308439,null))[_0xac23('0x1d')](function(_0x85041a){if(_0x85041a){_0x308090[_0xac23('0x42')]=_[_0xac23('0x53')](db[_0xac23('0x61')][_0xac23('0x52')]);_0x308090[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x4e165e[_0xac23('0x3f')]);_0x308090[_0xac23('0x40')]=_[_0xac23('0x41')](_0x308090[_0xac23('0x42')],_0x308090[_0xac23('0x3f')]);_0x200567[_0xac23('0x43')]=_['intersection'](_0x308090[_0xac23('0x42')],qs[_0xac23('0x44')](_0x4e165e[_0xac23('0x3f')][_0xac23('0x44')]));_0x200567[_0xac23('0x43')]=_0x200567[_0xac23('0x43')]['length']?_0x200567[_0xac23('0x43')]:_0x308090['model'];if(!_0x4e165e[_0xac23('0x3f')][_0xac23('0x46')]('nolimit')){_0x200567['limit']=qs[_0xac23('0x2c')](_0x4e165e['query'][_0xac23('0x2c')]);_0x200567['offset']=qs[_0xac23('0x47')](_0x4e165e[_0xac23('0x3f')][_0xac23('0x47')]);}_0x200567[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x4e165e['query']['sort']);_0x200567['where']=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x4e165e[_0xac23('0x3f')],_0x308090[_0xac23('0x40')]));_0x200567[_0xac23('0x4a')][_0xac23('0x60')]=_0x85041a['id'];if(_0x4e165e[_0xac23('0x3f')][_0xac23('0x49')]){_0x200567[_0xac23('0x4a')]=_['merge'](_0x200567[_0xac23('0x4a')],{'$or':_[_0xac23('0x3b')](_0x200567['attributes'],function(_0x14a9c2){var _0x22f49f={};_0x22f49f[_0x14a9c2]={'$like':'%'+_0x4e165e[_0xac23('0x3f')][_0xac23('0x49')]+'%'};return _0x22f49f;})});}_0x200567=_[_0xac23('0x4b')]({},_0x200567,_0x4e165e['options']);return db['Disposition'][_0xac23('0x2d')]({'where':_0x200567['where']})[_0xac23('0x1d')](function(_0x15b7d3){_0x5866b4[_0xac23('0x2d')]=_0x15b7d3;if(_0x4e165e[_0xac23('0x3f')][_0xac23('0x4e')]){_0x200567['include']=[{'all':!![]}];}return db[_0xac23('0x61')][_0xac23('0x4f')](_0x200567);})[_0xac23('0x1d')](function(_0x14d2fd){_0x5866b4['rows']=_0x14d2fd;return _0x5866b4;});}})[_0xac23('0x1d')](respondWithFilteredResult(_0x308439,_0x200567))[_0xac23('0x27')](handleError(_0x308439,null));};exports[_0xac23('0x66')]=function(_0x46d328,_0x34ef80,_0x35a9ae){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x46d328['params']['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x34ef80,null))[_0xac23('0x1d')](function(_0x4f7d6f){if(_0x4f7d6f){return _0x4f7d6f['removeDispositions'](_0x46d328[_0xac23('0x3f')]['ids']);}})['then'](respondWithStatusCode(_0x34ef80,null))[_0xac23('0x27')](handleError(_0x34ef80,null));};exports[_0xac23('0x67')]=function(_0x9de5b3,_0x48051f,_0x5670d0){if(_0x9de5b3[_0xac23('0x56')]['id']){delete _0x9de5b3[_0xac23('0x56')]['id'];}return db[_0xac23('0x54')]['find']({'where':{'id':_0x9de5b3[_0xac23('0x5d')]['id']}})['then'](handleEntityNotFound(_0x48051f,null))[_0xac23('0x1d')](function(_0x3ba7f4){if(_0x3ba7f4){_0x9de5b3[_0xac23('0x56')][_0xac23('0x60')]=_0x3ba7f4['id'];return db[_0xac23('0x68')][_0xac23('0x55')](_0x9de5b3['body']);}})[_0xac23('0x1d')](respondWithResult(_0x48051f,null))[_0xac23('0x27')](handleError(_0x48051f,null));};exports['getAnswers']=function(_0x533f4a,_0x3c97ff,_0x6cdeb7){var _0x114a44={'raw':![],'where':{}};var _0x508d06={};var _0x115b9a={'count':0x0,'rows':[]};return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x533f4a['params']['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x3c97ff,null))[_0xac23('0x1d')](function(_0x293fc4){if(_0x293fc4){_0x508d06[_0xac23('0x42')]=_[_0xac23('0x53')](db[_0xac23('0x68')][_0xac23('0x52')]);_0x508d06[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x533f4a[_0xac23('0x3f')]);_0x508d06['filters']=_['intersection'](_0x508d06[_0xac23('0x42')],_0x508d06['query']);_0x114a44['attributes']=_[_0xac23('0x41')](_0x508d06['model'],qs[_0xac23('0x44')](_0x533f4a[_0xac23('0x3f')]['fields']));_0x114a44[_0xac23('0x43')]=_0x114a44[_0xac23('0x43')][_0xac23('0x45')]?_0x114a44[_0xac23('0x43')]:_0x508d06['model'];if(!_0x533f4a['query'][_0xac23('0x46')](_0xac23('0x69'))){_0x114a44[_0xac23('0x2c')]=qs[_0xac23('0x2c')](_0x533f4a['query']['limit']);_0x114a44[_0xac23('0x47')]=qs[_0xac23('0x47')](_0x533f4a[_0xac23('0x3f')][_0xac23('0x47')]);}_0x114a44[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x533f4a['query'][_0xac23('0x48')]);_0x114a44[_0xac23('0x4a')]=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x533f4a[_0xac23('0x3f')],_0x508d06['filters']));_0x114a44[_0xac23('0x4a')][_0xac23('0x60')]=_0x293fc4['id'];if(_0x533f4a[_0xac23('0x3f')][_0xac23('0x49')]){_0x114a44[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x114a44['where'],{'$or':_[_0xac23('0x3b')](_0x114a44[_0xac23('0x43')],function(_0x1d97a6){var _0x901f0a={};_0x901f0a[_0x1d97a6]={'$like':'%'+_0x533f4a['query']['filter']+'%'};return _0x901f0a;})});}_0x114a44=_['merge']({},_0x114a44,_0x533f4a[_0xac23('0x4d')]);return db[_0xac23('0x68')][_0xac23('0x2d')]({'where':_0x114a44['where']})[_0xac23('0x1d')](function(_0x9c240b){_0x115b9a[_0xac23('0x2d')]=_0x9c240b;if(_0x533f4a['query']['includeAll']){_0x114a44['include']=[{'all':!![]}];}return db[_0xac23('0x68')][_0xac23('0x4f')](_0x114a44);})['then'](function(_0xf9e468){_0x115b9a[_0xac23('0x50')]=_0xf9e468;return _0x115b9a;});}})[_0xac23('0x1d')](respondWithFilteredResult(_0x3c97ff,_0x114a44))[_0xac23('0x27')](handleError(_0x3c97ff,null));};exports[_0xac23('0x6a')]=function(_0x254605,_0x136cc7,_0x3e6573){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x254605[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x136cc7,null))[_0xac23('0x1d')](function(_0x1a6076){if(_0x1a6076){return _0x1a6076[_0xac23('0x6a')](_0x254605[_0xac23('0x3f')][_0xac23('0x6b')]);}})[_0xac23('0x1d')](respondWithStatusCode(_0x136cc7,null))[_0xac23('0x27')](handleError(_0x136cc7,null));};exports[_0xac23('0x6c')]=function(_0x1d9467,_0x511d39,_0xbbcc42){var _0x34d556={'body':_0x1d9467['body'],'channel':_0xac23('0x6d')};var _0x468358=[];var _0x556dbd=[];var _0x59548a={};var _0x2aee59=![];return db[_0xac23('0x6e')][_0xac23('0x5e')]()['then'](function(_0x5680f9){if(!_0x5680f9){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x71'));}_0x468358=_['difference'](_[_0xac23('0x53')](_0x5680f9),['createdAt',_0xac23('0x72')]);_0x556dbd=_[_0xac23('0x73')](_[_0xac23('0x53')](_0x5680f9),[_0xac23('0x74'),_0xac23('0x72'),_0xac23('0x75'),_0xac23('0x76')]);if(_0x1d9467[_0xac23('0x56')]['id']){delete _0x1d9467[_0xac23('0x56')]['id'];}if(_[_0xac23('0x77')](_0x1d9467[_0xac23('0x56')][_0xac23('0x78')])){throw new db[(_0xac23('0x6f'))]['ValidationError'](_0xac23('0x79'));}if(_['isNil'](_0x1d9467['body']['body'])||_0x1d9467['body'][_0xac23('0x56')]===''){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x7a'));}if(_['isNil'](_0x1d9467['body']['mapKey'])){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x7b')+_0x556dbd);}if(!_['includes'](_0x556dbd,_0x1d9467[_0xac23('0x56')]['mapKey'])){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x7c')+_0x556dbd);}_0x59548a[_0x1d9467[_0xac23('0x56')][_0xac23('0x7d')]]=_0x1d9467[_0xac23('0x56')][_0xac23('0x78')];})[_0xac23('0x1d')](function(){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x1d9467['params']['id']},'include':[{'model':db[_0xac23('0x7e')],'as':_0xac23('0x7f'),'include':[{'model':db[_0xac23('0x6e')],'as':_0xac23('0x80'),'where':_0x59548a,'limit':0x1,'order':[[_0xac23('0x72'),_0xac23('0x81')]]}]},{'model':db[_0xac23('0x82')],'as':_0xac23('0x83')}]});})[_0xac23('0x1d')](handleEntityNotFound(_0x511d39,null))['then'](function(_0x3732b4){if(_0x3732b4&&_0x3732b4[_0xac23('0x7f')]){_0x34d556['account']=_0x3732b4;_0x34d556[_0xac23('0x84')]=_0x3732b4[_0xac23('0x83')];_0x34d556[_0xac23('0x85')]=_0x3732b4['List'];_0x34d556[_0xac23('0x84')]=_['orderBy'](_0x34d556[_0xac23('0x84')],['priority'],[_0xac23('0x86')]);if(_0x34d556[_0xac23('0x87')][_0xac23('0x83')]){delete _0x34d556[_0xac23('0x87')]['Applications'];}if(_0x34d556['account'][_0xac23('0x7f')]&&_0x34d556['account'][_0xac23('0x7f')][_0xac23('0x80')][_0xac23('0x45')]){return _0x34d556[_0xac23('0x87')][_0xac23('0x7f')]['Contacts'][0x0];}var _0x3000c8=_[_0xac23('0x15')](_0x1d9467['body'],{'firstName':_0x1d9467['body'][_0xac23('0x78')],'ListId':_0x3732b4['ListId']});_0x3000c8[_0x1d9467[_0xac23('0x56')][_0xac23('0x7d')]]=_0x1d9467[_0xac23('0x56')][_0xac23('0x78')];return db['CmContact'][_0xac23('0x55')](_0x3000c8,{'fields':_0x468358,'raw':!![]});}})[_0xac23('0x1d')](handleEntityNotFound(_0x511d39,null))[_0xac23('0x1d')](function(_0x31f0fc){_0x34d556[_0xac23('0x88')]=_0x31f0fc;if(_0x31f0fc){var _0x17cf7b={'ContactId':_0x31f0fc['id'],'OpenchannelAccountId':_0x1d9467['params']['id'],'from':(_0x31f0fc[_0xac23('0x89')]||'')+'\x20'+(_0x31f0fc[_0xac23('0x8a')]||'')};var _0x4dd128={'OpenchannelAccountId':_0x1d9467[_0xac23('0x5d')]['id'],'closed':![]};if(_0x1d9467[_0xac23('0x56')]['threadId']){_0x4dd128['threadId']=_0x1d9467[_0xac23('0x56')][_0xac23('0x8b')];return db[_0xac23('0x8c')][_0xac23('0x59')]({'where':_0x4dd128})[_0xac23('0x1d')](function(_0x362661){if(_0x362661){return[_0x362661,![]];}_0x17cf7b['threadId']=_0x1d9467[_0xac23('0x56')][_0xac23('0x8b')];_0x17cf7b['externalUrl']=_0x1d9467[_0xac23('0x56')][_0xac23('0x8d')];return db[_0xac23('0x8c')][_0xac23('0x55')](_0x17cf7b)[_0xac23('0x1d')](function(_0x2eb083){return[_0x2eb083,!![]];});});}else{_0x4dd128[_0xac23('0x8b')]=null;}_0x4dd128[_0xac23('0x8e')]=_0x31f0fc['id'];return db[_0xac23('0x8c')][_0xac23('0x59')]({'where':_0x4dd128})[_0xac23('0x1d')](function(_0x4c10ae){if(_0x4c10ae){return[_0x4c10ae,![]];}return db[_0xac23('0x8c')]['create'](_0x17cf7b)[_0xac23('0x1d')](function(_0x4b61b4){return[_0x4b61b4,!![]];});});}})['spread'](function(_0x2cdc86,_0x267bb9){if(_0x2cdc86){_0x2aee59=_0x267bb9;if(!_0x267bb9){var _0x376c4d={'from':(_0x34d556[_0xac23('0x88')]['firstName']||'')+'\x20'+(_0x34d556[_0xac23('0x88')][_0xac23('0x8a')]||'')};if(_0x1d9467[_0xac23('0x56')][_0xac23('0x8b')]&&_0x1d9467[_0xac23('0x56')][_0xac23('0x8f')]&&_0x1d9467['body']['threadId']!=_0x1d9467[_0xac23('0x56')][_0xac23('0x8f')]){_0x376c4d[_0xac23('0x8b')]=_0x1d9467[_0xac23('0x56')][_0xac23('0x8f')];}return _0x2cdc86['update'](_0x376c4d);}else{return _0x2cdc86;}}})['then'](function(_0x4ef863){_0x34d556['interaction']=_0x4ef863[_0xac23('0x33')]({'plain':!![]});_0x34d556['interaction'][_0xac23('0x90')]=_0x2aee59;if(_0x34d556['interaction'][_0xac23('0x90')]){if(_0x34d556[_0xac23('0x87')]['autoclose']){_0x34d556[_0xac23('0x84')]['push']({'id':0x0,'priority':_0x34d556[_0xac23('0x84')][_0xac23('0x45')]+0x1,'app':_0xac23('0x91'),'appdata':_0xac23('0x92'),'interval':_0xac23('0x93')});}}return db[_0xac23('0x94')]['create']({'body':_0x1d9467[_0xac23('0x56')]['body'],'OpenchannelAccountId':_0x1d9467[_0xac23('0x5d')]['id'],'OpenchannelInteractionId':_0x4ef863['id'],'direction':'in','ContactId':_0x34d556[_0xac23('0x88')]['id'],'AttachmentId':_0x1d9467[_0xac23('0x56')][_0xac23('0x95')]});})[_0xac23('0x1d')](function(_0x42beb5){_0x34d556[_0xac23('0x24')]=_0x42beb5;if(_0x34d556[_0xac23('0x96')][_0xac23('0x97')]){return db[_0xac23('0x98')][_0xac23('0x59')]({'attributes':['id',_0xac23('0x36')],'where':{'id':_0x34d556['interaction'][_0xac23('0x97')]}})['then'](function(_0x5104fc){if(_0x5104fc){_0x34d556['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xac23('0x99'),'appdata':_0x5104fc[_0xac23('0x36')]+','+(_0x34d556['account'][_0xac23('0x9a')]||0xa),'interval':'*,*,*,*'});_0x34d556[_0xac23('0x9b')]=![];}return respondWithRpcPromise(_0xac23('0x9c'),_0xac23('0x9d'),_0x34d556);});}return respondWithRpcPromise(_0xac23('0x9c'),'startRouting',_0x34d556);})[_0xac23('0x1d')](function(_0x5cac15){respondWithRpcPromise(_0xac23('0x9e'),_0xac23('0x9e'),{'event':_0xac23('0x6c'),'message':_0x5cac15},client9002);return _0x5cac15;})[_0xac23('0x1d')](respondWithResult(_0x511d39,null))[_0xac23('0x27')](handleError(_0x511d39,null));};exports[_0xac23('0x9f')]=function(_0xaead28,_0x2f32a6){var _0x14c839=_0xaead28[_0xac23('0x5d')]['id'];var _0x22be62=_0xaead28[_0xac23('0x56')];var _0x2a6020=0xc8;var _0x59856b=null;return db[_0xac23('0xa0')][_0xac23('0xa1')]({'isolationLevel':db[_0xac23('0xa0')][_0xac23('0xa2')][_0xac23('0xa3')][_0xac23('0xa4')]},function(_0x2af9ff){return db['OpenchannelAccount']['findOne']({'where':{'id':_0x14c839},'transaction':_0x2af9ff})['then'](function(_0x59abb9){if(_0x59abb9){return db[_0xac23('0x82')]['destroy']({'where':{'OpenchannelAccountId':_0x14c839},'transaction':_0x2af9ff})[_0xac23('0x1d')](function(){var _0x42d759=_[_0xac23('0x3b')](_0x22be62,function(_0x2f606d){_0x2f606d[_0xac23('0x60')]=_0x14c839;return _0x2f606d;});return db[_0xac23('0x82')][_0xac23('0xa5')](_0x42d759,{'transaction':_0x2af9ff});});}else{_0x2a6020=0x194;_0x59856b=[];}});})[_0xac23('0x1d')](function(){if(_0x2a6020!==0x194){return db[_0xac23('0x82')][_0xac23('0xa6')]({'where':{'OpenchannelAccountId':_0x14c839},'order':'priority'})[_0xac23('0x1d')](function(_0x52827d){_0x59856b=_0x52827d;});}})['catch'](function(_0x467e40){_0x2a6020=0x1f4;logger[_0xac23('0x21')](_0x467e40['stack']);if(_0x467e40[_0xac23('0x36')]){delete _0x467e40[_0xac23('0x36')];}_0x59856b=_0x467e40;})[_0xac23('0xa7')](function(){if(_0x59856b===null){_0x2f32a6[_0xac23('0x28')](_0x2a6020);}else{if(_0x2a6020===0x1f4){_0x2f32a6['status'](_0x2a6020)[_0xac23('0x37')](_0x59856b);}else{_0x2f32a6[_0xac23('0x29')](_0x2a6020)[_0xac23('0x2b')](_0x59856b);}}});};exports[_0xac23('0xa8')]=function(_0x23b88d,_0x595dee,_0x261238){var _0x537f2f={};var _0x12aa00={};var _0x20c1ae;var _0x4d37ce;return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x23b88d[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x595dee,null))[_0xac23('0x1d')](function(_0x6b1a36){if(_0x6b1a36){_0x20c1ae=_0x6b1a36;_0x12aa00['model']=_[_0xac23('0x53')](db[_0xac23('0x82')][_0xac23('0x52')]);_0x12aa00[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x23b88d[_0xac23('0x3f')]);_0x12aa00[_0xac23('0x40')]=_['intersection'](_0x12aa00[_0xac23('0x42')],_0x12aa00[_0xac23('0x3f')]);_0x537f2f[_0xac23('0x43')]=_['intersection'](_0x12aa00[_0xac23('0x42')],qs[_0xac23('0x44')](_0x23b88d[_0xac23('0x3f')][_0xac23('0x44')]));_0x537f2f[_0xac23('0x43')]=_0x537f2f[_0xac23('0x43')][_0xac23('0x45')]?_0x537f2f['attributes']:_0x12aa00['model'];_0x537f2f[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x23b88d['query'][_0xac23('0x48')]);_0x537f2f[_0xac23('0x4a')]=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x23b88d[_0xac23('0x3f')],_0x12aa00[_0xac23('0x40')]));if(_0x23b88d['query'][_0xac23('0x49')]){_0x537f2f[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x537f2f[_0xac23('0x4a')],{'$or':_['map'](_0x537f2f['attributes'],function(_0x2ab403){var _0xb7fbb1={};_0xb7fbb1[_0x2ab403]={'$like':'%'+_0x23b88d[_0xac23('0x3f')]['filter']+'%'};return _0xb7fbb1;})});}_0x537f2f=_['merge']({},_0x537f2f,_0x23b88d['options']);return _0x20c1ae[_0xac23('0xa8')](_0x537f2f);}})[_0xac23('0x1d')](function(_0x1a4c0d){if(_0x1a4c0d){_0x4d37ce=_0x1a4c0d[_0xac23('0x45')];if(!_0x23b88d[_0xac23('0x3f')]['hasOwnProperty'](_0xac23('0x69'))){_0x537f2f['limit']=qs['limit'](_0x23b88d[_0xac23('0x3f')][_0xac23('0x2c')]);_0x537f2f['offset']=qs[_0xac23('0x47')](_0x23b88d[_0xac23('0x3f')][_0xac23('0x47')]);}return _0x20c1ae[_0xac23('0xa8')](_0x537f2f);}})[_0xac23('0x1d')](function(_0x2a3ce4){if(_0x2a3ce4){return _0x2a3ce4?{'count':_0x4d37ce,'rows':_0x2a3ce4}:null;}})[_0xac23('0x1d')](respondWithResult(_0x595dee,null))[_0xac23('0x27')](handleError(_0x595dee,null));};exports[_0xac23('0xa9')]=function(_0x58bc67,_0x41d35e,_0x4bbbaf){var _0x2d2120={'raw':![],'where':{}};var _0x371846={};var _0x57b5ce={'count':0x0,'rows':[]};return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x58bc67[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x41d35e,null))['then'](function(_0x1c0c94){if(_0x1c0c94){_0x371846[_0xac23('0x42')]=_[_0xac23('0x53')](db[_0xac23('0x8c')][_0xac23('0x52')]);_0x371846[_0xac23('0x3f')]=_['keys'](_0x58bc67[_0xac23('0x3f')]);_0x371846[_0xac23('0x40')]=_[_0xac23('0x41')](_0x371846[_0xac23('0x42')],_0x371846[_0xac23('0x3f')]);_0x2d2120[_0xac23('0x43')]=_[_0xac23('0x41')](_0x371846[_0xac23('0x42')],qs[_0xac23('0x44')](_0x58bc67['query'][_0xac23('0x44')]));_0x2d2120[_0xac23('0x43')]=_0x2d2120['attributes'][_0xac23('0x45')]?_0x2d2120[_0xac23('0x43')]:_0x371846[_0xac23('0x42')];if(!_0x58bc67[_0xac23('0x3f')][_0xac23('0x46')]('nolimit')){_0x2d2120[_0xac23('0x2c')]=qs['limit'](_0x58bc67['query'][_0xac23('0x2c')]);_0x2d2120['offset']=qs[_0xac23('0x47')](_0x58bc67[_0xac23('0x3f')][_0xac23('0x47')]);}_0x2d2120[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x58bc67[_0xac23('0x3f')]['sort']);_0x2d2120[_0xac23('0x4a')]=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x58bc67[_0xac23('0x3f')],_0x371846[_0xac23('0x40')]));_0x2d2120[_0xac23('0x4a')][_0xac23('0x60')]=_0x1c0c94['id'];if(_0x58bc67[_0xac23('0x3f')][_0xac23('0x49')]){_0x2d2120[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x2d2120['where'],{'$or':_[_0xac23('0x3b')](_0x2d2120['attributes'],function(_0x1e514b){var _0x343795={};_0x343795[_0x1e514b]={'$like':'%'+_0x58bc67[_0xac23('0x3f')]['filter']+'%'};return _0x343795;})});}_0x2d2120=_[_0xac23('0x4b')]({},_0x2d2120,_0x58bc67[_0xac23('0x4d')]);return db[_0xac23('0x8c')][_0xac23('0x2d')]({'where':_0x2d2120[_0xac23('0x4a')]})['then'](function(_0x4173d0){_0x57b5ce[_0xac23('0x2d')]=_0x4173d0;if(_0x58bc67[_0xac23('0x3f')][_0xac23('0x4e')]){_0x2d2120['include']=[{'model':db[_0xac23('0x6e')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xac23('0xaa'),'attributes':[_0xac23('0x36'),_0xac23('0xab'),_0xac23('0xac')],'required':![]},{'model':db[_0xac23('0xad')],'as':_0xac23('0xae'),'attributes':['id',_0xac23('0x36'),'color'],'where':_0x58bc67[_0xac23('0x3f')][_0xac23('0xaf')]?{'id':_0x58bc67['query']['tag']}:undefined,'required':_0x58bc67[_0xac23('0x3f')][_0xac23('0xaf')]?!![]:![]}];}return db[_0xac23('0x8c')][_0xac23('0x4f')](_0x2d2120);})[_0xac23('0x1d')](function(_0xacf4a2){_0x57b5ce[_0xac23('0x50')]=_0xacf4a2;return _0x57b5ce;});}})['then'](respondWithFilteredResult(_0x41d35e,_0x2d2120))[_0xac23('0x27')](handleError(_0x41d35e,null));};exports[_0xac23('0xb0')]=function(_0x30b76f,_0x9a2bfa,_0x57bea4){return db['OpenchannelAccount'][_0xac23('0x59')]({'where':{'id':_0x30b76f[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x9a2bfa,null))[_0xac23('0x1d')](function(_0x5f1241){if(_0x5f1241){return _0x5f1241[_0xac23('0xb0')](_0x30b76f[_0xac23('0x56')]['ids'],_[_0xac23('0xb1')](_0x30b76f[_0xac23('0x56')],[_0xac23('0x6b'),'id'])||{})[_0xac23('0xb2')](function(_0x4f73ee){for(var _0x59d6d4=0x0;_0x59d6d4<_0x30b76f['body'][_0xac23('0x6b')]['length'];_0x59d6d4+=0x1){socket[_0xac23('0xb3')](_0xac23('0xb4'),{'UserId':Number(_0x30b76f[_0xac23('0x56')][_0xac23('0x6b')][_0x59d6d4]),'OpenchannelAccountId':Number(_0x30b76f['params']['id'])});}return _0x4f73ee;});}})[_0xac23('0x1d')](respondWithResult(_0x9a2bfa,null))[_0xac23('0x27')](handleError(_0x9a2bfa,null));};exports[_0xac23('0xb5')]=function(_0x5b037a,_0xe9345f,_0x5a102f){return db['OpenchannelAccount']['find']({'where':{'id':_0x5b037a[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0xe9345f,null))[_0xac23('0x1d')](function(_0x1630fb){if(_0x1630fb){return _0x1630fb[_0xac23('0xb5')](_0x5b037a[_0xac23('0x3f')][_0xac23('0x6b')])['then'](function(){if(_['isArray'](_0x5b037a['query'][_0xac23('0x6b')])){for(var _0xb6daae=0x0;_0xb6daae<_0x5b037a[_0xac23('0x3f')][_0xac23('0x6b')][_0xac23('0x45')];_0xb6daae+=0x1){socket['emit'](_0xac23('0xb6'),{'UserId':Number(_0x5b037a['query'][_0xac23('0x6b')][_0xb6daae]),'OpenchannelAccountId':Number(_0x5b037a[_0xac23('0x5d')]['id'])});}}else{socket[_0xac23('0xb3')](_0xac23('0xb6'),{'UserId':Number(_0x5b037a[_0xac23('0x3f')][_0xac23('0x6b')]),'OpenchannelAccountId':Number(_0x5b037a['params']['id'])});}});}})[_0xac23('0x1d')](respondWithStatusCode(_0xe9345f,null))[_0xac23('0x27')](handleError(_0xe9345f,null));};exports[_0xac23('0xb7')]=function(_0x191e97,_0xa0754b,_0x2eadc6){var _0x116e9e={};var _0x325cb2={};var _0x3dc8e9;var _0x5edd9d;return db['OpenchannelAccount'][_0xac23('0x63')]({'where':{'id':_0x191e97[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0xa0754b,null))[_0xac23('0x1d')](function(_0x3e86bb){if(_0x3e86bb){_0x3dc8e9=_0x3e86bb;_0x325cb2['model']=_[_0xac23('0x53')](db[_0xac23('0x98')][_0xac23('0x52')]);_0x325cb2[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x191e97['query']);_0x325cb2['filters']=_[_0xac23('0x41')](_0x325cb2[_0xac23('0x42')],_0x325cb2['query']);_0x116e9e[_0xac23('0x43')]=_['intersection'](_0x325cb2['model'],qs[_0xac23('0x44')](_0x191e97[_0xac23('0x3f')][_0xac23('0x44')]));_0x116e9e[_0xac23('0x43')]=_0x116e9e[_0xac23('0x43')]['length']?_0x116e9e[_0xac23('0x43')]:_0x325cb2['model'];_0x116e9e[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x191e97['query']['sort']);_0x116e9e['where']=qs[_0xac23('0x40')](_['pick'](_0x191e97[_0xac23('0x3f')],_0x325cb2[_0xac23('0x40')]));if(_0x191e97[_0xac23('0x3f')][_0xac23('0x49')]){_0x116e9e[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x116e9e[_0xac23('0x4a')],{'$or':_[_0xac23('0x3b')](_0x116e9e[_0xac23('0x43')],function(_0x3e5e7f){var _0x58fdf6={};_0x58fdf6[_0x3e5e7f]={'$like':'%'+_0x191e97['query'][_0xac23('0x49')]+'%'};return _0x58fdf6;})});}_0x116e9e=_[_0xac23('0x4b')]({},_0x116e9e,_0x191e97['options']);return _0x3dc8e9[_0xac23('0xb7')](_0x116e9e);}})[_0xac23('0x1d')](function(_0x49ff38){if(_0x49ff38){_0x5edd9d=_0x49ff38[_0xac23('0x45')];if(!_0x191e97[_0xac23('0x3f')][_0xac23('0x46')](_0xac23('0x69'))){_0x116e9e[_0xac23('0x2c')]=qs[_0xac23('0x2c')](_0x191e97[_0xac23('0x3f')][_0xac23('0x2c')]);_0x116e9e[_0xac23('0x47')]=qs['offset'](_0x191e97[_0xac23('0x3f')][_0xac23('0x47')]);}return _0x3dc8e9[_0xac23('0xb7')](_0x116e9e);}})[_0xac23('0x1d')](function(_0x3dd4f5){if(_0x3dd4f5){return _0x3dd4f5?{'count':_0x5edd9d,'rows':_0x3dd4f5}:null;}})[_0xac23('0x1d')](respondWithResult(_0xa0754b,null))[_0xac23('0x27')](handleError(_0xa0754b,null));};exports['send']=function(_0x3696ef,_0x34c8c4,_0x1be6d1){var _0x15c337,_0x709c84,_0x1760c6;if(_[_0xac23('0x77')](_0x3696ef['body']['body'])||_0x3696ef[_0xac23('0x56')][_0xac23('0x56')]===''){throw new db[(_0xac23('0x6f'))]['ValidationError'](_0xac23('0x7a'));}if(_['isNil'](_0x3696ef[_0xac23('0x56')]['to'])){}_0x15c337=_0x3696ef[_0xac23('0x56')]['to'];return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x3696ef['params']['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x34c8c4,null))[_0xac23('0x1d')](function(_0x3dc251){if(_0x3dc251){return db['OpenchannelAccount'][_0xac23('0x59')]({'where':{'id':_0x3dc251['id']},'include':[{'model':db[_0xac23('0x7e')],'as':_0xac23('0x7f'),'include':[{'model':db[_0xac23('0x6e')],'as':_0xac23('0x80'),'where':{[_0x3dc251[_0xac23('0x7d')]]:_0x15c337},'limit':0x1,'order':[[_0xac23('0x72'),_0xac23('0x81')]]}]}]})[_0xac23('0x1d')](handleEntityNotFound(_0x34c8c4,null))[_0xac23('0x1d')](function(_0x40213a){if(_0x40213a&&_0x40213a[_0xac23('0x7f')]){_0x709c84=_0x40213a[_0xac23('0x33')]({'plain':!![]});if(_0x709c84[_0xac23('0x7f')]&&_0x709c84[_0xac23('0x7f')][_0xac23('0x80')][_0xac23('0x45')]){return _0x709c84['List']['Contacts'][0x0];}return db[_0xac23('0x6e')]['create'](_[_0xac23('0x15')](_0x3696ef['body'],{'firstName':_0x15c337,[_0x40213a['mapKey']]:_0x15c337,'phone':_0x15c337,'ListId':_0x709c84[_0xac23('0x76')]}));}})['then'](handleEntityNotFound(_0x34c8c4,null))[_0xac23('0x1d')](function(_0x4e62da){if(_0x4e62da){_0x1760c6=_0x4e62da;return db[_0xac23('0x8c')][_0xac23('0x59')]({'where':{'ContactId':_0x1760c6['id'],'closed':![],'OpenchannelAccountId':_0x709c84['id']}})[_0xac23('0x1d')](function(_0x3dd399){if(_0x3dd399){return[_0x3dd399,![]];}return db[_0xac23('0x8c')][_0xac23('0x55')]({'UserId':_0x3696ef[_0xac23('0x57')]['id'],'ContactId':_0x1760c6['id'],'OpenchannelAccountId':_0x709c84['id'],'lastMsgDirection':'out','firstMsgDirection':_0xac23('0xb8'),'Messages':[_[_0xac23('0x4b')](_0x3696ef['body'],{'read':![],'body':_0x3696ef[_0xac23('0x56')]['body'],'OpenchannelAccountId':_0x709c84['id'],'UserId':_0x3696ef['user']['id'],'ContactId':_0x1760c6['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xac23('0xb9')}]})[_0xac23('0x1d')](function(_0x3be62c){return[_0x3be62c,!![]];});});}})[_0xac23('0xb2')](function(_0x13292f,_0x495df6){if(_0x495df6){return _0x13292f;}return db[_0xac23('0x94')][_0xac23('0x55')](_[_0xac23('0x4b')](_0x3696ef['body'],{'read':![],'body':_0x3696ef[_0xac23('0x56')][_0xac23('0x56')],'OpenchannelAccountId':_0x709c84['id'],'OpenchannelInteractionId':_0x13292f['id'],'UserId':_0x3696ef[_0xac23('0x57')]['id'],'ContactId':_0x1760c6['id']}))['then'](function(_0x3568c1){_0x13292f[_0xac23('0xba')][_0xac23('0xb9')]=[];_0x13292f[_0xac23('0xba')][_0xac23('0xb9')][_0xac23('0xbb')](_0x3568c1['dataValues']);return _0x13292f;});});}})['then'](respondWithResult(_0x34c8c4,null))[_0xac23('0x27')](handleError(_0x34c8c4,null));};
\ No newline at end of file
+var _0x14f8=['bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','out','Messages','spread','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','then','info','OpenchannelAccount,\x20%s,\x20%s','OpenchannelAccount,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','catch','sendStatus','status','end','json','offset','count','limit','set','Content-Range','reject','save','update','destroy','OpenchannelAccounts','UserProfileResource','name','send','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','OpenchannelAccount','includeAll','include','findAll','show','params','Pause','find','create','get','role','user','UserProfileSection','userProfileId','body','mandatoryDispositionPause','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','pick','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','isNil','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','List','Contacts','DESC','OpenchannelApplication','account','applications','Applications','list','orderBy','priority','from','contact','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','firstName','messageId','created','interaction','autoclose','push','close','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','notify','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','map'];(function(_0x56acd3,_0x52fcc5){var _0x920a32=function(_0x16dc60){while(--_0x16dc60){_0x56acd3['push'](_0x56acd3['shift']());}};_0x920a32(++_0x52fcc5);}(_0x14f8,0x193));var _0x814f=function(_0x383435,_0x38ad33){_0x383435=_0x383435-0x0;var _0x1dc581=_0x14f8[_0x383435];return _0x1dc581;};'use strict';var emlformat=require(_0x814f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x814f('0x1'));var jsonpatch=require(_0x814f('0x2'));var rp=require(_0x814f('0x3'));var moment=require('moment');var BPromise=require(_0x814f('0x4'));var Mustache=require(_0x814f('0x5'));var util=require(_0x814f('0x6'));var path=require(_0x814f('0x7'));var sox=require('sox');var csv=require(_0x814f('0x8'));var ejs=require(_0x814f('0x9'));var fs=require('fs');var fs_extra=require(_0x814f('0xa'));var _=require(_0x814f('0xb'));var squel=require('squel');var crypto=require(_0x814f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x814f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x814f('0xe'));var Papa=require('papaparse');var Redis=require(_0x814f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x814f('0x10'));var as=require(_0x814f('0x11'));var hardwareService=require(_0x814f('0x12'));var logger=require(_0x814f('0x13'))(_0x814f('0x14'));var utils=require(_0x814f('0x15'));var config=require(_0x814f('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x814f('0x17'))['db'];config[_0x814f('0x18')]=_[_0x814f('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x814f('0x1a'))(new Redis(config[_0x814f('0x18')]));require(_0x814f('0x1b'))[_0x814f('0x1c')](socket);var jayson=require(_0x814f('0x1d'));var client=jayson[_0x814f('0x1e')][_0x814f('0x1f')]({'port':0x232c});var client9002=jayson[_0x814f('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x171ab4,_0x10b981,_0x39e15f,_0x7814d0){return new BPromise(function(_0x1767fb,_0x1b3633){var _0x41179a=_0x7814d0||client;return _0x41179a['request'](_0x171ab4,_0x39e15f)[_0x814f('0x20')](function(_0x5db7b8){logger[_0x814f('0x21')](_0x814f('0x22'),_0x10b981,'request\x20sent');logger['debug'](_0x814f('0x23'),_0x10b981,'request\x20sent',JSON['stringify'](_0x5db7b8));if(_0x5db7b8['error']){if(_0x5db7b8['error'][_0x814f('0x24')]===0x1f4){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x10b981,_0x5db7b8[_0x814f('0x25')][_0x814f('0x26')]);return _0x1b3633(_0x5db7b8[_0x814f('0x25')]['message']);}logger[_0x814f('0x25')](_0x814f('0x22'),_0x10b981,_0x5db7b8[_0x814f('0x25')]['message']);return _0x1767fb(_0x5db7b8[_0x814f('0x25')][_0x814f('0x26')]);}else{logger['info'](_0x814f('0x22'),_0x10b981,_0x814f('0x27'));_0x1767fb(_0x5db7b8['result'][_0x814f('0x26')]);}})[_0x814f('0x28')](function(_0xc162af){logger[_0x814f('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x10b981,_0xc162af);_0x1b3633(_0xc162af);});});}function respondWithStatusCode(_0x54798f,_0x5d7582){_0x5d7582=_0x5d7582||0xcc;return function(_0x2f6693){if(_0x2f6693){return _0x54798f[_0x814f('0x29')](_0x5d7582);}return _0x54798f[_0x814f('0x2a')](_0x5d7582)[_0x814f('0x2b')]();};}function respondWithResult(_0x425890,_0xd4a47c){_0xd4a47c=_0xd4a47c||0xc8;return function(_0x3cfd60){if(_0x3cfd60){return _0x425890[_0x814f('0x2a')](_0xd4a47c)[_0x814f('0x2c')](_0x3cfd60);}};}function respondWithFilteredResult(_0x555aa0,_0x4cb3d9){return function(_0x583ad8){if(_0x583ad8){var _0x1e3bc6=typeof _0x4cb3d9[_0x814f('0x2d')]==='undefined'&&typeof _0x4cb3d9['limit']==='undefined';var _0x2c1110=_0x583ad8[_0x814f('0x2e')];var _0x3350ff=_0x1e3bc6?0x0:_0x4cb3d9[_0x814f('0x2d')];var _0x252c0d=_0x1e3bc6?_0x583ad8[_0x814f('0x2e')]:_0x4cb3d9['offset']+_0x4cb3d9[_0x814f('0x2f')];var _0x468ac2;if(_0x252c0d>=_0x2c1110){_0x252c0d=_0x2c1110;_0x468ac2=0xc8;}else{_0x468ac2=0xce;}_0x555aa0[_0x814f('0x2a')](_0x468ac2);return _0x555aa0[_0x814f('0x30')](_0x814f('0x31'),_0x3350ff+'-'+_0x252c0d+'/'+_0x2c1110)[_0x814f('0x2c')](_0x583ad8);}return null;};}function patchUpdates(_0x3971f0){return function(_0x5570cf){try{jsonpatch['apply'](_0x5570cf,_0x3971f0,!![]);}catch(_0x1159f1){return BPromise[_0x814f('0x32')](_0x1159f1);}return _0x5570cf[_0x814f('0x33')]();};}function saveUpdates(_0x233622,_0x1cc746){return function(_0x425923){if(_0x425923){return _0x425923[_0x814f('0x34')](_0x233622)[_0x814f('0x20')](function(_0x281110){return _0x281110;});}return null;};}function removeEntity(_0x4af210,_0x3e1f85){return function(_0x2ced4d){if(_0x2ced4d){return _0x2ced4d[_0x814f('0x35')]()['then'](function(){var _0x40d84e=_0x2ced4d['get']({'plain':!![]});var _0x23c574=_0x814f('0x36');return db[_0x814f('0x37')]['destroy']({'where':{'type':_0x23c574,'resourceId':_0x40d84e['id']}})['then'](function(){return _0x2ced4d;});})['then'](function(){_0x4af210[_0x814f('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x246b6a,_0x48e82e){return function(_0x5ed22c){if(!_0x5ed22c){_0x246b6a[_0x814f('0x29')](0x194);}return _0x5ed22c;};}function handleError(_0x9389ef,_0x6cd7aa){_0x6cd7aa=_0x6cd7aa||0x1f4;return function(_0x2067aa){logger[_0x814f('0x25')](_0x2067aa['stack']);if(_0x2067aa['name']){delete _0x2067aa[_0x814f('0x38')];}_0x9389ef['status'](_0x6cd7aa)[_0x814f('0x39')](_0x2067aa);};}exports[_0x814f('0x3a')]=function(_0x3c905e,_0x26aa08){var _0x35ba6d={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x2f15b0={},_0x3aa4dc={'count':0x0,'rows':[]};var _0x330b11=_['map'](db['OpenchannelAccount'][_0x814f('0x3b')],function(_0x2b15d6){return{'name':_0x2b15d6[_0x814f('0x3c')],'type':_0x2b15d6[_0x814f('0x3d')][_0x814f('0x3e')]};});_0x2f15b0[_0x814f('0x3f')]=_['map'](_0x330b11,'name');_0x2f15b0[_0x814f('0x40')]=_[_0x814f('0x41')](_0x3c905e[_0x814f('0x40')]);_0x2f15b0[_0x814f('0x42')]=_[_0x814f('0x43')](_0x2f15b0[_0x814f('0x3f')],_0x2f15b0['query']);_0x35ba6d[_0x814f('0x44')]=_[_0x814f('0x43')](_0x2f15b0[_0x814f('0x3f')],qs[_0x814f('0x45')](_0x3c905e[_0x814f('0x40')][_0x814f('0x45')]));_0x35ba6d[_0x814f('0x44')]=_0x35ba6d[_0x814f('0x44')][_0x814f('0x46')]?_0x35ba6d[_0x814f('0x44')]:_0x2f15b0[_0x814f('0x3f')];if(!_0x3c905e[_0x814f('0x40')][_0x814f('0x47')](_0x814f('0x48'))){_0x35ba6d[_0x814f('0x2f')]=qs[_0x814f('0x2f')](_0x3c905e[_0x814f('0x40')][_0x814f('0x2f')]);_0x35ba6d[_0x814f('0x2d')]=qs[_0x814f('0x2d')](_0x3c905e[_0x814f('0x40')][_0x814f('0x2d')]);}_0x35ba6d[_0x814f('0x49')]=qs['sort'](_0x3c905e['query'][_0x814f('0x4a')]);_0x35ba6d[_0x814f('0x4b')]=qs[_0x814f('0x42')](_['pick'](_0x3c905e[_0x814f('0x40')],_0x2f15b0[_0x814f('0x42')]),_0x330b11);if(_0x3c905e['query'][_0x814f('0x4c')]){_0x35ba6d[_0x814f('0x4b')]=_[_0x814f('0x4d')](_0x35ba6d['where'],{'$or':_['map'](_0x330b11,function(_0x35522f){if(_0x35522f[_0x814f('0x3d')]!==_0x814f('0x4e')){var _0x164b76={};_0x164b76[_0x35522f[_0x814f('0x38')]]={'$like':'%'+_0x3c905e[_0x814f('0x40')][_0x814f('0x4c')]+'%'};return _0x164b76;}})});}_0x35ba6d=_[_0x814f('0x4d')]({},_0x35ba6d,_0x3c905e[_0x814f('0x4f')]);var _0x376d25={'where':_0x35ba6d[_0x814f('0x4b')]};return db[_0x814f('0x50')][_0x814f('0x2e')](_0x376d25)[_0x814f('0x20')](function(_0xc97768){_0x3aa4dc[_0x814f('0x2e')]=_0xc97768;if(_0x3c905e[_0x814f('0x40')][_0x814f('0x51')]){_0x35ba6d[_0x814f('0x52')]=[{'all':!![]}];}return db[_0x814f('0x50')][_0x814f('0x53')](_0x35ba6d);})[_0x814f('0x20')](function(_0x261f23){_0x3aa4dc['rows']=_0x261f23;return _0x3aa4dc;})['then'](respondWithFilteredResult(_0x26aa08,_0x35ba6d))[_0x814f('0x28')](handleError(_0x26aa08,null));};exports[_0x814f('0x54')]=function(_0x16818d,_0x25852a){var _0x5b8e00={'raw':![],'where':{'id':_0x16818d[_0x814f('0x55')]['id']},'include':[{'model':db[_0x814f('0x56')],'as':'mandatoryDispositionPause'}]},_0x4df88a={};_0x4df88a[_0x814f('0x3f')]=_[_0x814f('0x41')](db[_0x814f('0x50')][_0x814f('0x3b')]);_0x4df88a[_0x814f('0x40')]=_['keys'](_0x16818d[_0x814f('0x40')]);_0x4df88a[_0x814f('0x42')]=_[_0x814f('0x43')](_0x4df88a[_0x814f('0x3f')],_0x4df88a['query']);_0x5b8e00['attributes']=_['intersection'](_0x4df88a[_0x814f('0x3f')],qs['fields'](_0x16818d[_0x814f('0x40')][_0x814f('0x45')]));_0x5b8e00[_0x814f('0x44')]=_0x5b8e00['attributes'][_0x814f('0x46')]?_0x5b8e00[_0x814f('0x44')]:_0x4df88a[_0x814f('0x3f')];if(_0x16818d[_0x814f('0x40')]['includeAll']){_0x5b8e00[_0x814f('0x52')]=[{'all':!![]}];}_0x5b8e00=_['merge']({},_0x5b8e00,_0x16818d[_0x814f('0x4f')]);return db[_0x814f('0x50')][_0x814f('0x57')](_0x5b8e00)[_0x814f('0x20')](handleEntityNotFound(_0x25852a,null))[_0x814f('0x20')](respondWithResult(_0x25852a,null))[_0x814f('0x28')](handleError(_0x25852a,null));};exports[_0x814f('0x58')]=function(_0x3838a1,_0x1b33c4){return db[_0x814f('0x50')][_0x814f('0x58')](_0x3838a1['body'],{})['then'](function(_0x725c13){var _0x59843b=_0x3838a1['user'][_0x814f('0x59')]({'plain':!![]});if(!_0x59843b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x59843b[_0x814f('0x5a')]===_0x814f('0x5b')){var _0x164b07=_0x725c13['get']({'plain':!![]});var _0x13b7ed=_0x814f('0x36');return db[_0x814f('0x5c')][_0x814f('0x57')]({'where':{'name':_0x13b7ed,'userProfileId':_0x59843b[_0x814f('0x5d')]},'raw':!![]})['then'](function(_0x10f36f){if(_0x10f36f&&_0x10f36f['autoAssociation']===0x0){return db[_0x814f('0x37')][_0x814f('0x58')]({'name':_0x164b07[_0x814f('0x38')],'resourceId':_0x164b07['id'],'type':_0x10f36f[_0x814f('0x38')],'sectionId':_0x10f36f['id']},{})[_0x814f('0x20')](function(){return _0x725c13;});}else{return _0x725c13;}})[_0x814f('0x28')](function(_0x23bed5){logger[_0x814f('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x23bed5);throw _0x23bed5;});}return _0x725c13;})[_0x814f('0x20')](respondWithResult(_0x1b33c4,0xc9))[_0x814f('0x28')](handleError(_0x1b33c4,null));};exports[_0x814f('0x34')]=function(_0xa26ffb,_0x4c90da){if(_0xa26ffb[_0x814f('0x5e')]['id']){delete _0xa26ffb[_0x814f('0x5e')]['id'];}return db[_0x814f('0x50')][_0x814f('0x57')]({'where':{'id':_0xa26ffb['params']['id']},'include':[{'model':db[_0x814f('0x56')],'as':_0x814f('0x5f')}]})[_0x814f('0x20')](handleEntityNotFound(_0x4c90da,null))['then'](saveUpdates(_0xa26ffb[_0x814f('0x5e')],null))['then'](respondWithResult(_0x4c90da,null))[_0x814f('0x28')](handleError(_0x4c90da,null));};exports[_0x814f('0x35')]=function(_0x1ff0ef,_0x1cf7fd){return db[_0x814f('0x50')]['find']({'where':{'id':_0x1ff0ef[_0x814f('0x55')]['id']}})[_0x814f('0x20')](handleEntityNotFound(_0x1cf7fd,null))[_0x814f('0x20')](removeEntity(_0x1cf7fd,null))['catch'](handleError(_0x1cf7fd,null));};exports[_0x814f('0x60')]=function(_0x55a8ef,_0x236569){return db[_0x814f('0x50')][_0x814f('0x60')]()['then'](respondWithResult(_0x236569,null))['catch'](handleError(_0x236569,null));};exports[_0x814f('0x61')]=function(_0x492a2c,_0x5cdd84,_0x3eaa33){if(_0x492a2c[_0x814f('0x5e')]['id']){delete _0x492a2c[_0x814f('0x5e')]['id'];}return db[_0x814f('0x50')][_0x814f('0x57')]({'where':{'id':_0x492a2c[_0x814f('0x55')]['id']}})[_0x814f('0x20')](handleEntityNotFound(_0x5cdd84,null))[_0x814f('0x20')](function(_0x915a35){if(_0x915a35){_0x492a2c[_0x814f('0x5e')][_0x814f('0x62')]=_0x915a35['id'];return db[_0x814f('0x63')][_0x814f('0x58')](_0x492a2c[_0x814f('0x5e')]);}})[_0x814f('0x20')](respondWithResult(_0x5cdd84,null))['catch'](handleError(_0x5cdd84,null));};exports[_0x814f('0x64')]=function(_0x2d9719,_0x5c0806,_0x1d840e){var _0x489383={'raw':![],'where':{}};var _0x443cda={};var _0x49664c={'count':0x0,'rows':[]};return db[_0x814f('0x50')][_0x814f('0x65')]({'where':{'id':_0x2d9719[_0x814f('0x55')]['id']}})['then'](handleEntityNotFound(_0x5c0806,null))[_0x814f('0x20')](function(_0x404500){if(_0x404500){_0x443cda['model']=_['keys'](db[_0x814f('0x63')][_0x814f('0x3b')]);_0x443cda[_0x814f('0x40')]=_['keys'](_0x2d9719[_0x814f('0x40')]);_0x443cda[_0x814f('0x42')]=_['intersection'](_0x443cda[_0x814f('0x3f')],_0x443cda[_0x814f('0x40')]);_0x489383[_0x814f('0x44')]=_[_0x814f('0x43')](_0x443cda[_0x814f('0x3f')],qs[_0x814f('0x45')](_0x2d9719['query']['fields']));_0x489383[_0x814f('0x44')]=_0x489383[_0x814f('0x44')]['length']?_0x489383[_0x814f('0x44')]:_0x443cda[_0x814f('0x3f')];if(!_0x2d9719[_0x814f('0x40')][_0x814f('0x47')](_0x814f('0x48'))){_0x489383[_0x814f('0x2f')]=qs[_0x814f('0x2f')](_0x2d9719[_0x814f('0x40')]['limit']);_0x489383[_0x814f('0x2d')]=qs['offset'](_0x2d9719[_0x814f('0x40')]['offset']);}_0x489383[_0x814f('0x49')]=qs[_0x814f('0x4a')](_0x2d9719['query'][_0x814f('0x4a')]);_0x489383[_0x814f('0x4b')]=qs[_0x814f('0x42')](_[_0x814f('0x66')](_0x2d9719[_0x814f('0x40')],_0x443cda[_0x814f('0x42')]));_0x489383[_0x814f('0x4b')]['OpenchannelAccountId']=_0x404500['id'];if(_0x2d9719[_0x814f('0x40')][_0x814f('0x4c')]){_0x489383[_0x814f('0x4b')]=_[_0x814f('0x4d')](_0x489383[_0x814f('0x4b')],{'$or':_['map'](_0x489383[_0x814f('0x44')],function(_0x4ff4a1){var _0x34b019={};_0x34b019[_0x4ff4a1]={'$like':'%'+_0x2d9719[_0x814f('0x40')]['filter']+'%'};return _0x34b019;})});}_0x489383=_[_0x814f('0x4d')]({},_0x489383,_0x2d9719[_0x814f('0x4f')]);return db['Disposition'][_0x814f('0x2e')]({'where':_0x489383[_0x814f('0x4b')]})[_0x814f('0x20')](function(_0x351318){_0x49664c[_0x814f('0x2e')]=_0x351318;if(_0x2d9719[_0x814f('0x40')][_0x814f('0x51')]){_0x489383['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x489383);})['then'](function(_0x1faf4e){_0x49664c[_0x814f('0x67')]=_0x1faf4e;return _0x49664c;});}})[_0x814f('0x20')](respondWithFilteredResult(_0x5c0806,_0x489383))['catch'](handleError(_0x5c0806,null));};exports[_0x814f('0x68')]=function(_0x284aff,_0x1575b2,_0x47be4e){return db[_0x814f('0x50')][_0x814f('0x57')]({'where':{'id':_0x284aff[_0x814f('0x55')]['id']}})[_0x814f('0x20')](handleEntityNotFound(_0x1575b2,null))[_0x814f('0x20')](function(_0x6b49b0){if(_0x6b49b0){return _0x6b49b0[_0x814f('0x68')](_0x284aff[_0x814f('0x40')]['ids']);}})[_0x814f('0x20')](respondWithStatusCode(_0x1575b2,null))[_0x814f('0x28')](handleError(_0x1575b2,null));};exports[_0x814f('0x69')]=function(_0x4f90c3,_0x3dab20,_0x1bb9c2){if(_0x4f90c3[_0x814f('0x5e')]['id']){delete _0x4f90c3[_0x814f('0x5e')]['id'];}return db['OpenchannelAccount'][_0x814f('0x57')]({'where':{'id':_0x4f90c3[_0x814f('0x55')]['id']}})['then'](handleEntityNotFound(_0x3dab20,null))[_0x814f('0x20')](function(_0x15a848){if(_0x15a848){_0x4f90c3[_0x814f('0x5e')]['OpenchannelAccountId']=_0x15a848['id'];return db[_0x814f('0x6a')][_0x814f('0x58')](_0x4f90c3['body']);}})[_0x814f('0x20')](respondWithResult(_0x3dab20,null))[_0x814f('0x28')](handleError(_0x3dab20,null));};exports[_0x814f('0x6b')]=function(_0xcc5cf0,_0x4eadfc,_0x507d00){var _0x224047={'raw':![],'where':{}};var _0x4f4299={};var _0x105012={'count':0x0,'rows':[]};return db[_0x814f('0x50')][_0x814f('0x65')]({'where':{'id':_0xcc5cf0[_0x814f('0x55')]['id']}})[_0x814f('0x20')](handleEntityNotFound(_0x4eadfc,null))['then'](function(_0x5b81e1){if(_0x5b81e1){_0x4f4299[_0x814f('0x3f')]=_['keys'](db[_0x814f('0x6a')][_0x814f('0x3b')]);_0x4f4299[_0x814f('0x40')]=_[_0x814f('0x41')](_0xcc5cf0[_0x814f('0x40')]);_0x4f4299[_0x814f('0x42')]=_['intersection'](_0x4f4299[_0x814f('0x3f')],_0x4f4299[_0x814f('0x40')]);_0x224047[_0x814f('0x44')]=_[_0x814f('0x43')](_0x4f4299[_0x814f('0x3f')],qs[_0x814f('0x45')](_0xcc5cf0['query'][_0x814f('0x45')]));_0x224047[_0x814f('0x44')]=_0x224047[_0x814f('0x44')][_0x814f('0x46')]?_0x224047['attributes']:_0x4f4299[_0x814f('0x3f')];if(!_0xcc5cf0[_0x814f('0x40')][_0x814f('0x47')](_0x814f('0x48'))){_0x224047['limit']=qs[_0x814f('0x2f')](_0xcc5cf0[_0x814f('0x40')]['limit']);_0x224047[_0x814f('0x2d')]=qs[_0x814f('0x2d')](_0xcc5cf0['query'][_0x814f('0x2d')]);}_0x224047[_0x814f('0x49')]=qs['sort'](_0xcc5cf0[_0x814f('0x40')][_0x814f('0x4a')]);_0x224047[_0x814f('0x4b')]=qs[_0x814f('0x42')](_[_0x814f('0x66')](_0xcc5cf0[_0x814f('0x40')],_0x4f4299['filters']));_0x224047[_0x814f('0x4b')]['OpenchannelAccountId']=_0x5b81e1['id'];if(_0xcc5cf0[_0x814f('0x40')][_0x814f('0x4c')]){_0x224047[_0x814f('0x4b')]=_[_0x814f('0x4d')](_0x224047[_0x814f('0x4b')],{'$or':_['map'](_0x224047[_0x814f('0x44')],function(_0x5c4eac){var _0x143c36={};_0x143c36[_0x5c4eac]={'$like':'%'+_0xcc5cf0[_0x814f('0x40')][_0x814f('0x4c')]+'%'};return _0x143c36;})});}_0x224047=_['merge']({},_0x224047,_0xcc5cf0[_0x814f('0x4f')]);return db[_0x814f('0x6a')][_0x814f('0x2e')]({'where':_0x224047[_0x814f('0x4b')]})[_0x814f('0x20')](function(_0xff26ff){_0x105012[_0x814f('0x2e')]=_0xff26ff;if(_0xcc5cf0[_0x814f('0x40')]['includeAll']){_0x224047['include']=[{'all':!![]}];}return db[_0x814f('0x6a')][_0x814f('0x53')](_0x224047);})[_0x814f('0x20')](function(_0x2c9c49){_0x105012['rows']=_0x2c9c49;return _0x105012;});}})[_0x814f('0x20')](respondWithFilteredResult(_0x4eadfc,_0x224047))[_0x814f('0x28')](handleError(_0x4eadfc,null));};exports['removeAnswers']=function(_0x5a1c2b,_0x5a6350,_0x5693ab){return db[_0x814f('0x50')][_0x814f('0x57')]({'where':{'id':_0x5a1c2b['params']['id']}})['then'](handleEntityNotFound(_0x5a6350,null))['then'](function(_0x8619f7){if(_0x8619f7){return _0x8619f7[_0x814f('0x6c')](_0x5a1c2b['query'][_0x814f('0x6d')]);}})[_0x814f('0x20')](respondWithStatusCode(_0x5a6350,null))['catch'](handleError(_0x5a6350,null));};exports['notify']=function(_0x3b6d65,_0x2c0864,_0x3168e6){var _0xa48ade={'body':_0x3b6d65[_0x814f('0x5e')],'channel':'openchannel'};var _0x38bd8c=[];var _0x5aae5f=[];var _0x5da00a={};var _0x496468=![];return db[_0x814f('0x6e')][_0x814f('0x60')]()[_0x814f('0x20')](function(_0x36a780){if(!_0x36a780){throw new db[(_0x814f('0x6f'))]['ValidationError'](_0x814f('0x70'));}_0x38bd8c=_[_0x814f('0x71')](_[_0x814f('0x41')](_0x36a780),[_0x814f('0x72'),_0x814f('0x73')]);_0x5aae5f=_[_0x814f('0x71')](_['keys'](_0x36a780),[_0x814f('0x72'),_0x814f('0x73'),'CompanyId',_0x814f('0x74')]);if(_0x3b6d65[_0x814f('0x5e')]['id']){delete _0x3b6d65[_0x814f('0x5e')]['id'];}if(_['isNil'](_0x3b6d65[_0x814f('0x5e')]['from'])){throw new db[(_0x814f('0x6f'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x814f('0x75')](_0x3b6d65[_0x814f('0x5e')]['body'])||_0x3b6d65['body'][_0x814f('0x5e')]===''){throw new db[(_0x814f('0x6f'))][(_0x814f('0x76'))](_0x814f('0x77'));}if(_['isNil'](_0x3b6d65[_0x814f('0x5e')][_0x814f('0x78')])){throw new db['Sequelize'][(_0x814f('0x76'))](_0x814f('0x79')+_0x5aae5f);}if(!_[_0x814f('0x7a')](_0x5aae5f,_0x3b6d65[_0x814f('0x5e')]['mapKey'])){throw new db[(_0x814f('0x6f'))][(_0x814f('0x76'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5aae5f);}_0x5da00a[_0x3b6d65[_0x814f('0x5e')][_0x814f('0x78')]]=_0x3b6d65[_0x814f('0x5e')]['from'];})['then'](function(){return db[_0x814f('0x50')][_0x814f('0x57')]({'where':{'id':_0x3b6d65[_0x814f('0x55')]['id']},'include':[{'model':db[_0x814f('0x7b')],'as':_0x814f('0x7c'),'include':[{'model':db['CmContact'],'as':_0x814f('0x7d'),'where':_0x5da00a,'limit':0x1,'order':[['updatedAt',_0x814f('0x7e')]]}]},{'model':db[_0x814f('0x7f')],'as':'Applications'}]});})[_0x814f('0x20')](handleEntityNotFound(_0x2c0864,null))['then'](function(_0x3243ba){if(_0x3243ba&&_0x3243ba[_0x814f('0x7c')]){_0xa48ade[_0x814f('0x80')]=_0x3243ba;_0xa48ade[_0x814f('0x81')]=_0x3243ba[_0x814f('0x82')];_0xa48ade[_0x814f('0x83')]=_0x3243ba[_0x814f('0x7c')];_0xa48ade[_0x814f('0x81')]=_[_0x814f('0x84')](_0xa48ade['applications'],[_0x814f('0x85')],['asc']);if(_0xa48ade[_0x814f('0x80')][_0x814f('0x82')]){delete _0xa48ade['account'][_0x814f('0x82')];}if(_0xa48ade['account'][_0x814f('0x7c')]&&_0xa48ade[_0x814f('0x80')][_0x814f('0x7c')]['Contacts'][_0x814f('0x46')]){return _0xa48ade[_0x814f('0x80')]['List']['Contacts'][0x0];}var _0x34939f=_['defaults'](_0x3b6d65[_0x814f('0x5e')],{'firstName':_0x3b6d65[_0x814f('0x5e')]['from'],'ListId':_0x3243ba[_0x814f('0x74')]});_0x34939f[_0x3b6d65[_0x814f('0x5e')]['mapKey']]=_0x3b6d65[_0x814f('0x5e')][_0x814f('0x86')];return db[_0x814f('0x6e')][_0x814f('0x58')](_0x34939f,{'fields':_0x38bd8c,'raw':!![]});}})[_0x814f('0x20')](handleEntityNotFound(_0x2c0864,null))[_0x814f('0x20')](function(_0x4d0ff5){_0xa48ade[_0x814f('0x87')]=_0x4d0ff5;if(_0x4d0ff5){var _0xc745f4={'ContactId':_0x4d0ff5['id'],'OpenchannelAccountId':_0x3b6d65['params']['id'],'from':(_0x4d0ff5['firstName']||'')+'\x20'+(_0x4d0ff5[_0x814f('0x88')]||'')};var _0x12e04d={'OpenchannelAccountId':_0x3b6d65[_0x814f('0x55')]['id'],'closed':![]};if(_0x3b6d65[_0x814f('0x5e')][_0x814f('0x89')]){_0x12e04d['threadId']=_0x3b6d65[_0x814f('0x5e')][_0x814f('0x89')];return db[_0x814f('0x8a')][_0x814f('0x57')]({'where':_0x12e04d})[_0x814f('0x20')](function(_0x163a5b){if(_0x163a5b){return[_0x163a5b,![]];}_0xc745f4[_0x814f('0x89')]=_0x3b6d65[_0x814f('0x5e')][_0x814f('0x89')];_0xc745f4[_0x814f('0x8b')]=_0x3b6d65[_0x814f('0x5e')]['externalUrl'];return db[_0x814f('0x8a')][_0x814f('0x58')](_0xc745f4)[_0x814f('0x20')](function(_0x365228){return[_0x365228,!![]];});});}else{_0x12e04d[_0x814f('0x89')]=null;}_0x12e04d[_0x814f('0x8c')]=_0x4d0ff5['id'];return db['OpenchannelInteraction']['find']({'where':_0x12e04d})['then'](function(_0x1c2cab){if(_0x1c2cab){return[_0x1c2cab,![]];}return db['OpenchannelInteraction'][_0x814f('0x58')](_0xc745f4)[_0x814f('0x20')](function(_0x4ba3e2){return[_0x4ba3e2,!![]];});});}})['spread'](function(_0x52d640,_0x392327){if(_0x52d640){_0x496468=_0x392327;if(!_0x392327){var _0x1a1304={'from':(_0xa48ade[_0x814f('0x87')][_0x814f('0x8d')]||'')+'\x20'+(_0xa48ade[_0x814f('0x87')][_0x814f('0x88')]||'')};if(_0x3b6d65[_0x814f('0x5e')][_0x814f('0x89')]&&_0x3b6d65[_0x814f('0x5e')][_0x814f('0x8e')]&&_0x3b6d65[_0x814f('0x5e')][_0x814f('0x89')]!=_0x3b6d65[_0x814f('0x5e')][_0x814f('0x8e')]){_0x1a1304['threadId']=_0x3b6d65[_0x814f('0x5e')]['messageId'];}return _0x52d640[_0x814f('0x34')](_0x1a1304);}else{return _0x52d640;}}})[_0x814f('0x20')](function(_0x154cd4){_0xa48ade['interaction']=_0x154cd4[_0x814f('0x59')]({'plain':!![]});_0xa48ade['interaction'][_0x814f('0x8f')]=_0x496468;if(_0xa48ade[_0x814f('0x90')][_0x814f('0x8f')]){if(_0xa48ade[_0x814f('0x80')][_0x814f('0x91')]){_0xa48ade[_0x814f('0x81')][_0x814f('0x92')]({'id':0x0,'priority':_0xa48ade['applications']['length']+0x1,'app':_0x814f('0x93'),'appdata':'unmanaged','interval':_0x814f('0x94')});}}return db[_0x814f('0x95')][_0x814f('0x58')]({'body':_0x3b6d65[_0x814f('0x5e')][_0x814f('0x5e')],'OpenchannelAccountId':_0x3b6d65[_0x814f('0x55')]['id'],'OpenchannelInteractionId':_0x154cd4['id'],'direction':'in','ContactId':_0xa48ade[_0x814f('0x87')]['id'],'AttachmentId':_0x3b6d65[_0x814f('0x5e')][_0x814f('0x96')]});})[_0x814f('0x20')](function(_0x2fc1cb){_0xa48ade[_0x814f('0x26')]=_0x2fc1cb;if(_0xa48ade[_0x814f('0x90')][_0x814f('0x97')]){return db[_0x814f('0x98')][_0x814f('0x57')]({'attributes':['id','name'],'where':{'id':_0xa48ade['interaction'][_0x814f('0x97')]}})[_0x814f('0x20')](function(_0x3c5945){if(_0x3c5945){_0xa48ade[_0x814f('0x81')]['unshift']({'id':0x0,'priority':0x0,'app':_0x814f('0x99'),'appdata':_0x3c5945['name']+','+(_0xa48ade[_0x814f('0x80')][_0x814f('0x9a')]||0xa),'interval':_0x814f('0x94')});_0xa48ade[_0x814f('0x9b')]=![];}return respondWithRpcPromise('Start',_0x814f('0x9c'),_0xa48ade);});}return respondWithRpcPromise(_0x814f('0x9d'),_0x814f('0x9c'),_0xa48ade);})[_0x814f('0x20')](function(_0x514462){respondWithRpcPromise(_0x814f('0x9e'),_0x814f('0x9e'),{'event':_0x814f('0x9f'),'message':_0x514462},client9002);return _0x514462;})['then'](respondWithResult(_0x2c0864,null))[_0x814f('0x28')](handleError(_0x2c0864,null));};exports[_0x814f('0xa0')]=function(_0x1fab06,_0xb7d53d){var _0x53bd21=_0x1fab06[_0x814f('0x55')]['id'];var _0x301429=_0x1fab06[_0x814f('0x5e')];var _0x180537=0xc8;var _0xc9b500=null;return db['sequelize'][_0x814f('0xa1')]({'isolationLevel':db[_0x814f('0xa2')][_0x814f('0xa3')][_0x814f('0xa4')][_0x814f('0xa5')]},function(_0x1ed938){return db[_0x814f('0x50')][_0x814f('0x65')]({'where':{'id':_0x53bd21},'transaction':_0x1ed938})[_0x814f('0x20')](function(_0x254577){if(_0x254577){return db[_0x814f('0x7f')][_0x814f('0x35')]({'where':{'OpenchannelAccountId':_0x53bd21},'transaction':_0x1ed938})[_0x814f('0x20')](function(){var _0x261406=_[_0x814f('0xa6')](_0x301429,function(_0x477d35){_0x477d35[_0x814f('0x62')]=_0x53bd21;return _0x477d35;});return db[_0x814f('0x7f')][_0x814f('0xa7')](_0x261406,{'transaction':_0x1ed938});});}else{_0x180537=0x194;_0xc9b500=[];}});})[_0x814f('0x20')](function(){if(_0x180537!==0x194){return db[_0x814f('0x7f')][_0x814f('0xa8')]({'where':{'OpenchannelAccountId':_0x53bd21},'order':_0x814f('0x85')})[_0x814f('0x20')](function(_0x3ddc39){_0xc9b500=_0x3ddc39;});}})['catch'](function(_0x3a99ec){_0x180537=0x1f4;logger['error'](_0x3a99ec['stack']);if(_0x3a99ec[_0x814f('0x38')]){delete _0x3a99ec[_0x814f('0x38')];}_0xc9b500=_0x3a99ec;})[_0x814f('0xa9')](function(){if(_0xc9b500===null){_0xb7d53d[_0x814f('0x29')](_0x180537);}else{if(_0x180537===0x1f4){_0xb7d53d[_0x814f('0x2a')](_0x180537)[_0x814f('0x39')](_0xc9b500);}else{_0xb7d53d[_0x814f('0x2a')](_0x180537)['json'](_0xc9b500);}}});};exports[_0x814f('0xaa')]=function(_0x2f2f2e,_0xcba123,_0x1d13fc){var _0x1d8739={};var _0x30ed4f={};var _0xa48c14;var _0x3197d1;return db[_0x814f('0x50')][_0x814f('0x65')]({'where':{'id':_0x2f2f2e[_0x814f('0x55')]['id']}})[_0x814f('0x20')](handleEntityNotFound(_0xcba123,null))[_0x814f('0x20')](function(_0x28d92f){if(_0x28d92f){_0xa48c14=_0x28d92f;_0x30ed4f[_0x814f('0x3f')]=_[_0x814f('0x41')](db['OpenchannelApplication'][_0x814f('0x3b')]);_0x30ed4f[_0x814f('0x40')]=_['keys'](_0x2f2f2e[_0x814f('0x40')]);_0x30ed4f[_0x814f('0x42')]=_[_0x814f('0x43')](_0x30ed4f[_0x814f('0x3f')],_0x30ed4f['query']);_0x1d8739[_0x814f('0x44')]=_[_0x814f('0x43')](_0x30ed4f[_0x814f('0x3f')],qs['fields'](_0x2f2f2e[_0x814f('0x40')]['fields']));_0x1d8739['attributes']=_0x1d8739['attributes']['length']?_0x1d8739[_0x814f('0x44')]:_0x30ed4f[_0x814f('0x3f')];_0x1d8739[_0x814f('0x49')]=qs[_0x814f('0x4a')](_0x2f2f2e[_0x814f('0x40')][_0x814f('0x4a')]);_0x1d8739[_0x814f('0x4b')]=qs[_0x814f('0x42')](_[_0x814f('0x66')](_0x2f2f2e['query'],_0x30ed4f[_0x814f('0x42')]));if(_0x2f2f2e[_0x814f('0x40')][_0x814f('0x4c')]){_0x1d8739['where']=_[_0x814f('0x4d')](_0x1d8739[_0x814f('0x4b')],{'$or':_[_0x814f('0xa6')](_0x1d8739[_0x814f('0x44')],function(_0x4f8150){var _0x710c19={};_0x710c19[_0x4f8150]={'$like':'%'+_0x2f2f2e[_0x814f('0x40')][_0x814f('0x4c')]+'%'};return _0x710c19;})});}_0x1d8739=_[_0x814f('0x4d')]({},_0x1d8739,_0x2f2f2e[_0x814f('0x4f')]);return _0xa48c14[_0x814f('0xaa')](_0x1d8739);}})[_0x814f('0x20')](function(_0x46fdc8){if(_0x46fdc8){_0x3197d1=_0x46fdc8['length'];if(!_0x2f2f2e[_0x814f('0x40')]['hasOwnProperty'](_0x814f('0x48'))){_0x1d8739[_0x814f('0x2f')]=qs['limit'](_0x2f2f2e[_0x814f('0x40')]['limit']);_0x1d8739[_0x814f('0x2d')]=qs[_0x814f('0x2d')](_0x2f2f2e[_0x814f('0x40')]['offset']);}return _0xa48c14[_0x814f('0xaa')](_0x1d8739);}})[_0x814f('0x20')](function(_0x84240c){if(_0x84240c){return _0x84240c?{'count':_0x3197d1,'rows':_0x84240c}:null;}})[_0x814f('0x20')](respondWithResult(_0xcba123,null))[_0x814f('0x28')](handleError(_0xcba123,null));};exports[_0x814f('0xab')]=function(_0x534da2,_0xd78650,_0x1108ac){var _0x3fc63e={'raw':![],'where':{}};var _0x53d21b={};var _0x4540e5={'count':0x0,'rows':[]};return db[_0x814f('0x50')][_0x814f('0x65')]({'where':{'id':_0x534da2[_0x814f('0x55')]['id']}})[_0x814f('0x20')](handleEntityNotFound(_0xd78650,null))[_0x814f('0x20')](function(_0x29e49f){if(_0x29e49f){_0x53d21b[_0x814f('0x3f')]=_['keys'](db['OpenchannelInteraction'][_0x814f('0x3b')]);_0x53d21b[_0x814f('0x40')]=_[_0x814f('0x41')](_0x534da2[_0x814f('0x40')]);_0x53d21b[_0x814f('0x42')]=_[_0x814f('0x43')](_0x53d21b['model'],_0x53d21b[_0x814f('0x40')]);_0x3fc63e['attributes']=_[_0x814f('0x43')](_0x53d21b['model'],qs[_0x814f('0x45')](_0x534da2[_0x814f('0x40')][_0x814f('0x45')]));_0x3fc63e['attributes']=_0x3fc63e[_0x814f('0x44')][_0x814f('0x46')]?_0x3fc63e[_0x814f('0x44')]:_0x53d21b['model'];if(!_0x534da2[_0x814f('0x40')][_0x814f('0x47')](_0x814f('0x48'))){_0x3fc63e[_0x814f('0x2f')]=qs[_0x814f('0x2f')](_0x534da2[_0x814f('0x40')]['limit']);_0x3fc63e[_0x814f('0x2d')]=qs[_0x814f('0x2d')](_0x534da2[_0x814f('0x40')][_0x814f('0x2d')]);}_0x3fc63e[_0x814f('0x49')]=qs[_0x814f('0x4a')](_0x534da2[_0x814f('0x40')][_0x814f('0x4a')]);_0x3fc63e[_0x814f('0x4b')]=qs[_0x814f('0x42')](_[_0x814f('0x66')](_0x534da2[_0x814f('0x40')],_0x53d21b[_0x814f('0x42')]));_0x3fc63e[_0x814f('0x4b')][_0x814f('0x62')]=_0x29e49f['id'];if(_0x534da2[_0x814f('0x40')][_0x814f('0x4c')]){_0x3fc63e[_0x814f('0x4b')]=_[_0x814f('0x4d')](_0x3fc63e[_0x814f('0x4b')],{'$or':_[_0x814f('0xa6')](_0x3fc63e[_0x814f('0x44')],function(_0x250302){var _0x11316f={};_0x11316f[_0x250302]={'$like':'%'+_0x534da2[_0x814f('0x40')][_0x814f('0x4c')]+'%'};return _0x11316f;})});}_0x3fc63e=_[_0x814f('0x4d')]({},_0x3fc63e,_0x534da2[_0x814f('0x4f')]);return db[_0x814f('0x8a')]['count']({'where':_0x3fc63e[_0x814f('0x4b')]})[_0x814f('0x20')](function(_0x47ed95){_0x4540e5['count']=_0x47ed95;if(_0x534da2['query'][_0x814f('0x51')]){_0x3fc63e[_0x814f('0x52')]=[{'model':db[_0x814f('0x6e')],'as':_0x814f('0xac'),'required':![]},{'model':db[_0x814f('0x98')],'as':_0x814f('0xad'),'attributes':[_0x814f('0x38'),_0x814f('0xae'),'internal'],'required':![]},{'model':db[_0x814f('0xaf')],'as':_0x814f('0xb0'),'attributes':['id','name',_0x814f('0xb1')],'where':_0x534da2[_0x814f('0x40')][_0x814f('0xb2')]?{'id':_0x534da2['query'][_0x814f('0xb2')]}:undefined,'required':_0x534da2[_0x814f('0x40')]['tag']?!![]:![]}];}return db[_0x814f('0x8a')][_0x814f('0x53')](_0x3fc63e);})[_0x814f('0x20')](function(_0x5dceef){_0x4540e5[_0x814f('0x67')]=_0x5dceef;return _0x4540e5;});}})[_0x814f('0x20')](respondWithFilteredResult(_0xd78650,_0x3fc63e))['catch'](handleError(_0xd78650,null));};exports[_0x814f('0xb3')]=function(_0x4b294d,_0x2b3cdd,_0x4e3416){return db[_0x814f('0x50')][_0x814f('0x57')]({'where':{'id':_0x4b294d['params']['id']}})[_0x814f('0x20')](handleEntityNotFound(_0x2b3cdd,null))[_0x814f('0x20')](function(_0x455365){if(_0x455365){return _0x455365['addAgents'](_0x4b294d['body']['ids'],_[_0x814f('0xb4')](_0x4b294d['body'],['ids','id'])||{})['spread'](function(_0x431d58){for(var _0x4ddefd=0x0;_0x4ddefd<_0x4b294d[_0x814f('0x5e')][_0x814f('0x6d')]['length'];_0x4ddefd+=0x1){socket[_0x814f('0xb5')](_0x814f('0xb6'),{'UserId':Number(_0x4b294d['body']['ids'][_0x4ddefd]),'OpenchannelAccountId':Number(_0x4b294d['params']['id'])});}return _0x431d58;});}})[_0x814f('0x20')](respondWithResult(_0x2b3cdd,null))[_0x814f('0x28')](handleError(_0x2b3cdd,null));};exports[_0x814f('0xb7')]=function(_0x1dd3f4,_0x1ad7cc,_0x15ba71){return db['OpenchannelAccount'][_0x814f('0x57')]({'where':{'id':_0x1dd3f4['params']['id']}})['then'](handleEntityNotFound(_0x1ad7cc,null))[_0x814f('0x20')](function(_0x387bdd){if(_0x387bdd){return _0x387bdd[_0x814f('0xb7')](_0x1dd3f4[_0x814f('0x40')][_0x814f('0x6d')])['then'](function(){if(_['isArray'](_0x1dd3f4[_0x814f('0x40')][_0x814f('0x6d')])){for(var _0x357766=0x0;_0x357766<_0x1dd3f4['query'][_0x814f('0x6d')]['length'];_0x357766+=0x1){socket[_0x814f('0xb5')](_0x814f('0xb8'),{'UserId':Number(_0x1dd3f4[_0x814f('0x40')]['ids'][_0x357766]),'OpenchannelAccountId':Number(_0x1dd3f4[_0x814f('0x55')]['id'])});}}else{socket[_0x814f('0xb5')]('userOpenchannelAccount:remove',{'UserId':Number(_0x1dd3f4[_0x814f('0x40')][_0x814f('0x6d')]),'OpenchannelAccountId':Number(_0x1dd3f4['params']['id'])});}});}})['then'](respondWithStatusCode(_0x1ad7cc,null))[_0x814f('0x28')](handleError(_0x1ad7cc,null));};exports[_0x814f('0xb9')]=function(_0xfa5e03,_0x3e055f,_0x3957c7){var _0x18fdf7={};var _0x475824={};var _0x35e0a2;var _0x34051a;return db[_0x814f('0x50')][_0x814f('0x65')]({'where':{'id':_0xfa5e03['params']['id']}})[_0x814f('0x20')](handleEntityNotFound(_0x3e055f,null))[_0x814f('0x20')](function(_0x3e662a){if(_0x3e662a){_0x35e0a2=_0x3e662a;_0x475824['model']=_[_0x814f('0x41')](db['User'][_0x814f('0x3b')]);_0x475824['query']=_[_0x814f('0x41')](_0xfa5e03[_0x814f('0x40')]);_0x475824[_0x814f('0x42')]=_[_0x814f('0x43')](_0x475824['model'],_0x475824[_0x814f('0x40')]);_0x18fdf7[_0x814f('0x44')]=_[_0x814f('0x43')](_0x475824[_0x814f('0x3f')],qs[_0x814f('0x45')](_0xfa5e03[_0x814f('0x40')]['fields']));_0x18fdf7['attributes']=_0x18fdf7[_0x814f('0x44')][_0x814f('0x46')]?_0x18fdf7[_0x814f('0x44')]:_0x475824[_0x814f('0x3f')];_0x18fdf7[_0x814f('0x49')]=qs[_0x814f('0x4a')](_0xfa5e03['query'][_0x814f('0x4a')]);_0x18fdf7[_0x814f('0x4b')]=qs['filters'](_[_0x814f('0x66')](_0xfa5e03[_0x814f('0x40')],_0x475824[_0x814f('0x42')]));if(_0xfa5e03[_0x814f('0x40')][_0x814f('0x4c')]){_0x18fdf7[_0x814f('0x4b')]=_[_0x814f('0x4d')](_0x18fdf7[_0x814f('0x4b')],{'$or':_[_0x814f('0xa6')](_0x18fdf7[_0x814f('0x44')],function(_0x573314){var _0x36379f={};_0x36379f[_0x573314]={'$like':'%'+_0xfa5e03[_0x814f('0x40')][_0x814f('0x4c')]+'%'};return _0x36379f;})});}_0x18fdf7=_[_0x814f('0x4d')]({},_0x18fdf7,_0xfa5e03[_0x814f('0x4f')]);return _0x35e0a2[_0x814f('0xb9')](_0x18fdf7);}})[_0x814f('0x20')](function(_0x37f06e){if(_0x37f06e){_0x34051a=_0x37f06e[_0x814f('0x46')];if(!_0xfa5e03[_0x814f('0x40')][_0x814f('0x47')](_0x814f('0x48'))){_0x18fdf7[_0x814f('0x2f')]=qs[_0x814f('0x2f')](_0xfa5e03[_0x814f('0x40')][_0x814f('0x2f')]);_0x18fdf7[_0x814f('0x2d')]=qs[_0x814f('0x2d')](_0xfa5e03['query']['offset']);}return _0x35e0a2[_0x814f('0xb9')](_0x18fdf7);}})['then'](function(_0x595bae){if(_0x595bae){return _0x595bae?{'count':_0x34051a,'rows':_0x595bae}:null;}})[_0x814f('0x20')](respondWithResult(_0x3e055f,null))[_0x814f('0x28')](handleError(_0x3e055f,null));};exports[_0x814f('0x39')]=function(_0x214057,_0x29e20f,_0x12193b){var _0x3b7831,_0x3ad622,_0x481146;if(_[_0x814f('0x75')](_0x214057[_0x814f('0x5e')][_0x814f('0x5e')])||_0x214057[_0x814f('0x5e')][_0x814f('0x5e')]===''){throw new db[(_0x814f('0x6f'))][(_0x814f('0x76'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x214057[_0x814f('0x5e')]['to'])){}_0x3b7831=_0x214057[_0x814f('0x5e')]['to'];return db[_0x814f('0x50')]['findOne']({'where':{'id':_0x214057['params']['id']}})['then'](handleEntityNotFound(_0x29e20f,null))[_0x814f('0x20')](function(_0x20920b){if(_0x20920b){return db[_0x814f('0x50')][_0x814f('0x57')]({'where':{'id':_0x20920b['id']},'include':[{'model':db['CmList'],'as':_0x814f('0x7c'),'include':[{'model':db['CmContact'],'as':_0x814f('0x7d'),'where':{[_0x20920b[_0x814f('0x78')]]:_0x3b7831},'limit':0x1,'order':[[_0x814f('0x73'),_0x814f('0x7e')]]}]}]})['then'](handleEntityNotFound(_0x29e20f,null))[_0x814f('0x20')](function(_0x29ddbc){if(_0x29ddbc&&_0x29ddbc[_0x814f('0x7c')]){_0x3ad622=_0x29ddbc[_0x814f('0x59')]({'plain':!![]});if(_0x3ad622[_0x814f('0x7c')]&&_0x3ad622[_0x814f('0x7c')][_0x814f('0x7d')][_0x814f('0x46')]){return _0x3ad622[_0x814f('0x7c')][_0x814f('0x7d')][0x0];}return db[_0x814f('0x6e')][_0x814f('0x58')](_['defaults'](_0x214057[_0x814f('0x5e')],{'firstName':_0x3b7831,[_0x29ddbc[_0x814f('0x78')]]:_0x3b7831,'phone':_0x3b7831,'ListId':_0x3ad622[_0x814f('0x74')]}));}})[_0x814f('0x20')](handleEntityNotFound(_0x29e20f,null))['then'](function(_0x26b725){if(_0x26b725){_0x481146=_0x26b725;return db['OpenchannelInteraction'][_0x814f('0x57')]({'where':{'ContactId':_0x481146['id'],'closed':![],'OpenchannelAccountId':_0x3ad622['id']}})[_0x814f('0x20')](function(_0x1bba70){if(_0x1bba70){return[_0x1bba70,![]];}return db[_0x814f('0x8a')][_0x814f('0x58')]({'UserId':_0x214057['user']['id'],'ContactId':_0x481146['id'],'OpenchannelAccountId':_0x3ad622['id'],'lastMsgDirection':'out','firstMsgDirection':_0x814f('0xba'),'Messages':[_[_0x814f('0x4d')](_0x214057['body'],{'read':![],'body':_0x214057['body'][_0x814f('0x5e')],'OpenchannelAccountId':_0x3ad622['id'],'UserId':_0x214057[_0x814f('0x5b')]['id'],'ContactId':_0x481146['id']})]},{'include':[{'model':db[_0x814f('0x95')],'as':_0x814f('0xbb')}]})['then'](function(_0x401218){return[_0x401218,!![]];});});}})[_0x814f('0xbc')](function(_0x44329c,_0x18e37c){if(_0x18e37c){return _0x44329c;}return db[_0x814f('0x95')]['create'](_[_0x814f('0x4d')](_0x214057['body'],{'read':![],'body':_0x214057[_0x814f('0x5e')]['body'],'OpenchannelAccountId':_0x3ad622['id'],'OpenchannelInteractionId':_0x44329c['id'],'UserId':_0x214057[_0x814f('0x5b')]['id'],'ContactId':_0x481146['id']}))[_0x814f('0x20')](function(_0x5561d1){_0x44329c['dataValues'][_0x814f('0xbb')]=[];_0x44329c[_0x814f('0xbd')]['Messages']['push'](_0x5561d1['dataValues']);return _0x44329c;});});}})[_0x814f('0x20')](respondWithResult(_0x29e20f,null))[_0x814f('0x28')](handleError(_0x29e20f,null));};
\ No newline at end of file
index 159c23d..f861712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x2f1be1,_0x3c6ffb){var _0x23ab6e=function(_0x42dd6a){while(--_0x42dd6a){_0x2f1be1['push'](_0x2f1be1['shift']());}};_0x23ab6e(++_0x3c6ffb);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x0d8b('0x0'));var OpenchannelAccount=require(_0x0d8b('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x0d8b('0x2'),'afterDestroy':_0x0d8b('0x3')};function emitEvent(_0x43bca1){return function(_0x364286,_0x8196ed,_0x577834){OpenchannelAccountEvents['emit'](_0x43bca1+':'+_0x364286['id'],_0x364286);OpenchannelAccountEvents[_0x0d8b('0x4')](_0x43bca1,_0x364286);_0x577834(null);};}for(var e in events){if(events[_0x0d8b('0x5')](e)){var event=events[e];OpenchannelAccount[_0x0d8b('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x702d=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelAccount'];(function(_0x44ffdd,_0x2d0eef){var _0x3afeac=function(_0x554134){while(--_0x554134){_0x44ffdd['push'](_0x44ffdd['shift']());}};_0x3afeac(++_0x2d0eef);}(_0x702d,0x147));var _0xd702=function(_0x56e651,_0x20f7fa){_0x56e651=_0x56e651-0x0;var _0x59ae49=_0x702d[_0x56e651];return _0x59ae49;};'use strict';var EventEmitter=require(_0xd702('0x0'));var OpenchannelAccount=require(_0xd702('0x1'))['db'][_0xd702('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xd702('0x3')](0x0);var events={'afterCreate':_0xd702('0x4'),'afterUpdate':'update','afterDestroy':_0xd702('0x5')};function emitEvent(_0xebbd7c){return function(_0x27b260,_0x1c5a32,_0x481ee0){OpenchannelAccountEvents[_0xd702('0x6')](_0xebbd7c+':'+_0x27b260['id'],_0x27b260);OpenchannelAccountEvents['emit'](_0xebbd7c,_0x27b260);_0x481ee0(null);};}for(var e in events){if(events[_0xd702('0x7')](e)){var event=events[e];OpenchannelAccount[_0xd702('0x8')](e,emitEvent(event));}}module[_0xd702('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
index 2a6503b..111ae7c 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(_0x2e6a33,_0x636ebf){var _0x57870d=function(_0x5462df){while(--_0x5462df){_0x2e6a33['push'](_0x2e6a33['shift']());}};_0x57870d(++_0x636ebf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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(_0x2963a0,_0x1e11dd){var _0x51691c=function(_0x2f9e4f){while(--_0x2f9e4f){_0x2963a0['push'](_0x2963a0['shift']());}};_0x51691c(++_0x1e11dd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 fec5acd..68bcf21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x777d=['message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment','client','redis','socket.io-emitter','./openchannelAccount.socket','register','request','then','info','debug','request\x20sent','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s'];(function(_0x188d8a,_0x2e4b41){var _0x4c00b8=function(_0x26993b){while(--_0x26993b){_0x188d8a['push'](_0x188d8a['shift']());}};_0x4c00b8(++_0x2e4b41);}(_0x777d,0xe9));var _0xd777=function(_0xc298ad,_0xea4dc2){_0xc298ad=_0xc298ad-0x0;var _0x11b2e6=_0x777d[_0xc298ad];return _0x11b2e6;};'use strict';var _=require('lodash');var util=require(_0xd777('0x0'));var moment=require(_0xd777('0x1'));var BPromise=require(_0xd777('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd777('0x3'));var db=require(_0xd777('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xd777('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xd777('0x6')]['http']({'port':0x232a});config[_0xd777('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd777('0x8'))(new Redis(config[_0xd777('0x7')]));require(_0xd777('0x9'))[_0xd777('0xa')](socket);function respondWithRpcPromise(_0x15b49e,_0x261e0d,_0x28fedc){return new BPromise(function(_0x234862,_0x45afb5){return client[_0xd777('0xb')](_0x15b49e,_0x28fedc)[_0xd777('0xc')](function(_0x22f2f1){logger[_0xd777('0xd')]('OpenchannelAccount,\x20%s,\x20%s',_0x261e0d,'request\x20sent');logger[_0xd777('0xe')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x261e0d,_0xd777('0xf'),JSON[_0xd777('0x10')](_0x22f2f1));if(_0x22f2f1[_0xd777('0x11')]){if(_0x22f2f1[_0xd777('0x11')][_0xd777('0x12')]===0x1f4){logger['error'](_0xd777('0x13'),_0x261e0d,_0x22f2f1['error'][_0xd777('0x14')]);return _0x45afb5(_0x22f2f1[_0xd777('0x11')][_0xd777('0x14')]);}logger[_0xd777('0x11')](_0xd777('0x13'),_0x261e0d,_0x22f2f1['error'][_0xd777('0x14')]);return _0x234862(_0x22f2f1['error'][_0xd777('0x14')]);}else{logger['info'](_0xd777('0x13'),_0x261e0d,_0xd777('0xf'));_0x234862(_0x22f2f1[_0xd777('0x15')][_0xd777('0x14')]);}})[_0xd777('0x16')](function(_0x201175){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x261e0d,_0x201175);_0x45afb5(_0x201175);});});}
\ No newline at end of file
+var _0xb7e7=['socket.io-emitter','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost'];(function(_0x4e784a,_0x3164b9){var _0x509b5f=function(_0x168d1a){while(--_0x168d1a){_0x4e784a['push'](_0x4e784a['shift']());}};_0x509b5f(++_0x3164b9);}(_0xb7e7,0x121));var _0x7b7e=function(_0x39d544,_0x35c14f){_0x39d544=_0x39d544-0x0;var _0x5a5ff2=_0xb7e7[_0x39d544];return _0x5a5ff2;};'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});config[_0x7b7e('0x8')]=_[_0x7b7e('0x9')](config['redis'],{'host':_0x7b7e('0xa'),'port':0x18eb});var socket=require(_0x7b7e('0xb'))(new Redis(config[_0x7b7e('0x8')]));require(_0x7b7e('0xc'))[_0x7b7e('0xd')](socket);function respondWithRpcPromise(_0x26bb8d,_0x242e70,_0x52de3b){return new BPromise(function(_0x299519,_0x1eef0a){return client[_0x7b7e('0xe')](_0x26bb8d,_0x52de3b)[_0x7b7e('0xf')](function(_0xd581fb){logger[_0x7b7e('0x10')](_0x7b7e('0x11'),_0x242e70,_0x7b7e('0x12'));logger[_0x7b7e('0x13')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x242e70,_0x7b7e('0x12'),JSON[_0x7b7e('0x14')](_0xd581fb));if(_0xd581fb['error']){if(_0xd581fb[_0x7b7e('0x15')]['code']===0x1f4){logger['error'](_0x7b7e('0x11'),_0x242e70,_0xd581fb[_0x7b7e('0x15')][_0x7b7e('0x16')]);return _0x1eef0a(_0xd581fb[_0x7b7e('0x15')][_0x7b7e('0x16')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x242e70,_0xd581fb[_0x7b7e('0x15')][_0x7b7e('0x16')]);return _0x299519(_0xd581fb[_0x7b7e('0x15')][_0x7b7e('0x16')]);}else{logger[_0x7b7e('0x10')](_0x7b7e('0x11'),_0x242e70,_0x7b7e('0x12'));_0x299519(_0xd581fb[_0x7b7e('0x17')][_0x7b7e('0x16')]);}})[_0x7b7e('0x18')](function(_0x12e8e9){logger[_0x7b7e('0x15')](_0x7b7e('0x11'),_0x242e70,_0x12e8e9);_0x1eef0a(_0x12e8e9);});});}
\ No newline at end of file
index cff9529..a1d08a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3140=['removeListener','register','length','openchannelAccount:','./openchannelAccount.events','save','remove','update','emit'];(function(_0x4d8ff2,_0x40bf3a){var _0x2aa218=function(_0x1d9584){while(--_0x1d9584){_0x4d8ff2['push'](_0x4d8ff2['shift']());}};_0x2aa218(++_0x40bf3a);}(_0x3140,0xaf));var _0x0314=function(_0x3acfe5,_0x2f5f39){_0x3acfe5=_0x3acfe5-0x0;var _0x5295c3=_0x3140[_0x3acfe5];return _0x5295c3;};'use strict';var OpenchannelAccountEvents=require(_0x0314('0x0'));var events=[_0x0314('0x1'),_0x0314('0x2'),_0x0314('0x3')];function createListener(_0x4ac557,_0x4cf353){return function(_0x285be5){_0x4cf353[_0x0314('0x4')](_0x4ac557,_0x285be5);};}function removeListener(_0x1c0f66,_0x3e4284){return function(){OpenchannelAccountEvents[_0x0314('0x5')](_0x1c0f66,_0x3e4284);};}exports[_0x0314('0x6')]=function(_0x9e308d){for(var _0xf87d26=0x0,_0x11ee94=events[_0x0314('0x7')];_0xf87d26<_0x11ee94;_0xf87d26++){var _0x176944=events[_0xf87d26];var _0x495b27=createListener(_0x0314('0x8')+_0x176944,_0x9e308d);OpenchannelAccountEvents['on'](_0x176944,_0x495b27);}};
\ No newline at end of file
+var _0x851a=['update','emit','register','length','openchannelAccount:','./openchannelAccount.events','remove'];(function(_0xd6be05,_0x463f35){var _0x3cbabe=function(_0x87e40b){while(--_0x87e40b){_0xd6be05['push'](_0xd6be05['shift']());}};_0x3cbabe(++_0x463f35);}(_0x851a,0x19b));var _0xa851=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x851a[_0x599f41];return _0x2e4d58;};'use strict';var OpenchannelAccountEvents=require(_0xa851('0x0'));var events=['save',_0xa851('0x1'),_0xa851('0x2')];function createListener(_0x38707a,_0x52489c){return function(_0xd7442b){_0x52489c[_0xa851('0x3')](_0x38707a,_0xd7442b);};}function removeListener(_0x1b30dc,_0x3f317d){return function(){OpenchannelAccountEvents['removeListener'](_0x1b30dc,_0x3f317d);};}exports[_0xa851('0x4')]=function(_0x57a7c4){for(var _0x1cba67=0x0,_0x2fc0e0=events[_0xa851('0x5')];_0x1cba67<_0x2fc0e0;_0x1cba67++){var _0x551e16=events[_0x1cba67];var _0x3e1e9d=createListener(_0xa851('0x6')+_0x551e16,_0x57a7c4);OpenchannelAccountEvents['on'](_0x551e16,_0x3e1e9d);}};
\ No newline at end of file
index f890da8..27753a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a9=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','/:id','show','post','create','delete','destroy','express'];(function(_0x1bc1cc,_0x148679){var _0x50f829=function(_0x4999e2){while(--_0x4999e2){_0x1bc1cc['push'](_0x1bc1cc['shift']());}};_0x50f829(++_0x148679);}(_0x26a9,0x1ee));var _0x926a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x26a9[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x926a('0x0'));var router=express[_0x926a('0x1')]();var fs_extra=require(_0x926a('0x2'));var auth=require(_0x926a('0x3'));var interaction=require(_0x926a('0x4'));var config=require(_0x926a('0x5'));var controller=require(_0x926a('0x6'));router[_0x926a('0x7')]('/',auth[_0x926a('0x8')](),controller['index']);router[_0x926a('0x7')](_0x926a('0x9'),auth['isAuthenticated'](),controller[_0x926a('0xa')]);router[_0x926a('0xb')]('/',auth['isAuthenticated'](),controller[_0x926a('0xc')]);router['put'](_0x926a('0x9'),auth[_0x926a('0x8')](),controller['update']);router[_0x926a('0xd')](_0x926a('0x9'),auth[_0x926a('0x8')](),controller[_0x926a('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xd756=['path','express','Router','fs-extra','../../components/interaction/service','./openchannelApplication.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','destroy','exports','multer','util'];(function(_0x302830,_0x30b107){var _0x3ab169=function(_0x180642){while(--_0x180642){_0x302830['push'](_0x302830['shift']());}};_0x3ab169(++_0x30b107);}(_0xd756,0x1ec));var _0x6d75=function(_0x28d601,_0x19b8f7){_0x28d601=_0x28d601-0x0;var _0x279228=_0xd756[_0x28d601];return _0x279228;};'use strict';var multer=require(_0x6d75('0x0'));var util=require(_0x6d75('0x1'));var path=require(_0x6d75('0x2'));var timeout=require('connect-timeout');var express=require(_0x6d75('0x3'));var router=express[_0x6d75('0x4')]();var fs_extra=require(_0x6d75('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6d75('0x6'));var config=require('../../config/environment');var controller=require(_0x6d75('0x7'));router[_0x6d75('0x8')]('/',auth[_0x6d75('0x9')](),controller[_0x6d75('0xa')]);router[_0x6d75('0x8')]('/:id',auth[_0x6d75('0x9')](),controller[_0x6d75('0xb')]);router[_0x6d75('0xc')]('/',auth[_0x6d75('0x9')](),controller[_0x6d75('0xd')]);router[_0x6d75('0xe')](_0x6d75('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x6d75('0x10')]('/:id',auth[_0x6d75('0x9')](),controller[_0x6d75('0x11')]);module[_0x6d75('0x12')]=router;
\ No newline at end of file
index c9c9854..bba16e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4b6=['sequelize','STRING','noop','TEXT','*,*,*,*'];(function(_0x31c4ba,_0x16a3e4){var _0x1481dd=function(_0x3da49c){while(--_0x3da49c){_0x31c4ba['push'](_0x31c4ba['shift']());}};_0x1481dd(++_0x16a3e4);}(_0xd4b6,0x1d6));var _0x6d4b=function(_0x3b9674,_0x567567){_0x3b9674=_0x3b9674-0x0;var _0x59b9c3=_0xd4b6[_0x3b9674];return _0x59b9c3;};'use strict';var Sequelize=require(_0x6d4b('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x6d4b('0x1')],'allowNull':![],'defaultValue':_0x6d4b('0x2')},'appdata':{'type':Sequelize[_0x6d4b('0x3')]()},'description':{'type':Sequelize[_0x6d4b('0x1')]},'interval':{'type':Sequelize[_0x6d4b('0x1')],'defaultValue':_0x6d4b('0x4')}};
\ No newline at end of file
+var _0x1fd2=['INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x1fd2,0x11d));var _0x21fd=function(_0x217687,_0x13a09a){_0x217687=_0x217687-0x0;var _0x26410d=_0x1fd2[_0x217687];return _0x26410d;};'use strict';var Sequelize=require(_0x21fd('0x0'));module[_0x21fd('0x1')]={'priority':{'type':Sequelize[_0x21fd('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x21fd('0x3')],'allowNull':![],'defaultValue':_0x21fd('0x4')},'appdata':{'type':Sequelize[_0x21fd('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x21fd('0x3')],'defaultValue':_0x21fd('0x6')}};
\ No newline at end of file
index fd5d0f6..335e000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc39=['map','OpenchannelApplication','fieldName','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','length','include','create','body','find','eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','stack','name','index'];(function(_0x222eab,_0x45347a){var _0x27ebc2=function(_0x1fdd7d){while(--_0x1fdd7d){_0x222eab['push'](_0x222eab['shift']());}};_0x27ebc2(++_0x45347a);}(_0xbc39,0xb1));var _0x9bc3=function(_0xf4f343,_0x41fe4a){_0xf4f343=_0xf4f343-0x0;var _0x4cda68=_0xbc39[_0xf4f343];return _0x4cda68;};'use strict';var emlformat=require(_0x9bc3('0x0'));var rimraf=require(_0x9bc3('0x1'));var zipdir=require(_0x9bc3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9bc3('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9bc3('0x4'));var util=require(_0x9bc3('0x5'));var path=require('path');var sox=require(_0x9bc3('0x6'));var csv=require(_0x9bc3('0x7'));var ejs=require(_0x9bc3('0x8'));var fs=require('fs');var fs_extra=require(_0x9bc3('0x9'));var _=require(_0x9bc3('0xa'));var squel=require('squel');var crypto=require(_0x9bc3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9bc3('0xc'));var toCsv=require('to-csv');var querystring=require(_0x9bc3('0xd'));var Papa=require(_0x9bc3('0xe'));var Redis=require(_0x9bc3('0xf'));var authService=require(_0x9bc3('0x10'));var qs=require(_0x9bc3('0x11'));var as=require(_0x9bc3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9bc3('0x13'))(_0x9bc3('0x14'));var utils=require(_0x9bc3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9bc3('0x16'));var db=require(_0x9bc3('0x17'))['db'];function respondWithStatusCode(_0x1b1ebd,_0x25245a){_0x25245a=_0x25245a||0xcc;return function(_0x567689){if(_0x567689){return _0x1b1ebd[_0x9bc3('0x18')](_0x25245a);}return _0x1b1ebd[_0x9bc3('0x19')](_0x25245a)[_0x9bc3('0x1a')]();};}function respondWithResult(_0x4fcc8d,_0x41b9d8){_0x41b9d8=_0x41b9d8||0xc8;return function(_0x3ffcc1){if(_0x3ffcc1){return _0x4fcc8d[_0x9bc3('0x19')](_0x41b9d8)[_0x9bc3('0x1b')](_0x3ffcc1);}};}function respondWithFilteredResult(_0x5d3c4a,_0x3fb28c){return function(_0x207aa4){if(_0x207aa4){var _0x1c5476=typeof _0x3fb28c['offset']===_0x9bc3('0x1c')&&typeof _0x3fb28c[_0x9bc3('0x1d')]===_0x9bc3('0x1c');var _0x3fca4a=_0x207aa4[_0x9bc3('0x1e')];var _0x269492=_0x1c5476?0x0:_0x3fb28c[_0x9bc3('0x1f')];var _0x371423=_0x1c5476?_0x207aa4[_0x9bc3('0x1e')]:_0x3fb28c['offset']+_0x3fb28c[_0x9bc3('0x1d')];var _0x11347e;if(_0x371423>=_0x3fca4a){_0x371423=_0x3fca4a;_0x11347e=0xc8;}else{_0x11347e=0xce;}_0x5d3c4a['status'](_0x11347e);return _0x5d3c4a['set'](_0x9bc3('0x20'),_0x269492+'-'+_0x371423+'/'+_0x3fca4a)['json'](_0x207aa4);}return null;};}function patchUpdates(_0x33657a){return function(_0x3aa273){try{jsonpatch[_0x9bc3('0x21')](_0x3aa273,_0x33657a,!![]);}catch(_0x53f9cc){return BPromise[_0x9bc3('0x22')](_0x53f9cc);}return _0x3aa273[_0x9bc3('0x23')]();};}function saveUpdates(_0x4370e8,_0x45ccbf){return function(_0x33849d){if(_0x33849d){return _0x33849d[_0x9bc3('0x24')](_0x4370e8)[_0x9bc3('0x25')](function(_0x2ee592){return _0x2ee592;});}return null;};}function removeEntity(_0x50adff,_0x534dc2){return function(_0x2a5580){if(_0x2a5580){return _0x2a5580[_0x9bc3('0x26')]()['then'](function(){_0x50adff[_0x9bc3('0x19')](0xcc)[_0x9bc3('0x1a')]();});}};}function handleEntityNotFound(_0x5e02b6,_0x1c17be){return function(_0x2b28fc){if(!_0x2b28fc){_0x5e02b6[_0x9bc3('0x18')](0x194);}return _0x2b28fc;};}function handleError(_0x42a6ab,_0x386e82){_0x386e82=_0x386e82||0x1f4;return function(_0xcdeda7){logger['error'](_0xcdeda7[_0x9bc3('0x27')]);if(_0xcdeda7['name']){delete _0xcdeda7[_0x9bc3('0x28')];}_0x42a6ab[_0x9bc3('0x19')](_0x386e82)['send'](_0xcdeda7);};}exports[_0x9bc3('0x29')]=function(_0x1e43ca,_0x1bd9f4){var _0x16aca6={},_0x2adfad={},_0x5d8683={'count':0x0,'rows':[]};var _0x1b6c91=_[_0x9bc3('0x2a')](db[_0x9bc3('0x2b')]['rawAttributes'],function(_0x406444){return{'name':_0x406444[_0x9bc3('0x2c')],'type':_0x406444['type'][_0x9bc3('0x2d')]};});_0x2adfad['model']=_[_0x9bc3('0x2a')](_0x1b6c91,_0x9bc3('0x28'));_0x2adfad[_0x9bc3('0x2e')]=_[_0x9bc3('0x2f')](_0x1e43ca['query']);_0x2adfad['filters']=_[_0x9bc3('0x30')](_0x2adfad[_0x9bc3('0x31')],_0x2adfad[_0x9bc3('0x2e')]);_0x16aca6[_0x9bc3('0x32')]=_[_0x9bc3('0x30')](_0x2adfad[_0x9bc3('0x31')],qs[_0x9bc3('0x33')](_0x1e43ca[_0x9bc3('0x2e')]['fields']));_0x16aca6['attributes']=_0x16aca6[_0x9bc3('0x32')]['length']?_0x16aca6[_0x9bc3('0x32')]:_0x2adfad[_0x9bc3('0x31')];if(!_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x34')]('nolimit')){_0x16aca6[_0x9bc3('0x1d')]=qs[_0x9bc3('0x1d')](_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x1d')]);_0x16aca6['offset']=qs['offset'](_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x1f')]);}_0x16aca6['order']=qs[_0x9bc3('0x35')](_0x1e43ca[_0x9bc3('0x2e')]['sort']);_0x16aca6[_0x9bc3('0x36')]=qs[_0x9bc3('0x37')](_['pick'](_0x1e43ca[_0x9bc3('0x2e')],_0x2adfad[_0x9bc3('0x37')]),_0x1b6c91);if(_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x38')]){_0x16aca6[_0x9bc3('0x36')]=_[_0x9bc3('0x39')](_0x16aca6[_0x9bc3('0x36')],{'$or':_['map'](_0x1b6c91,function(_0x2539ce){if(_0x2539ce[_0x9bc3('0x3a')]!==_0x9bc3('0x3b')){var _0x2f1da={};_0x2f1da[_0x2539ce['name']]={'$like':'%'+_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x38')]+'%'};return _0x2f1da;}})});}_0x16aca6=_['merge']({},_0x16aca6,_0x1e43ca[_0x9bc3('0x3c')]);var _0x3b7098={'where':_0x16aca6[_0x9bc3('0x36')]};return db[_0x9bc3('0x2b')][_0x9bc3('0x1e')](_0x3b7098)[_0x9bc3('0x25')](function(_0x3e601b){_0x5d8683[_0x9bc3('0x1e')]=_0x3e601b;if(_0x1e43ca['query'][_0x9bc3('0x3d')]){_0x16aca6['include']=[{'all':!![]}];}return db[_0x9bc3('0x2b')][_0x9bc3('0x3e')](_0x16aca6);})[_0x9bc3('0x25')](function(_0x24a5e1){_0x5d8683[_0x9bc3('0x3f')]=_0x24a5e1;return _0x5d8683;})[_0x9bc3('0x25')](respondWithFilteredResult(_0x1bd9f4,_0x16aca6))[_0x9bc3('0x40')](handleError(_0x1bd9f4,null));};exports[_0x9bc3('0x41')]=function(_0x17fbcd,_0x3b5d56){var _0x33e03b={'raw':!![],'where':{'id':_0x17fbcd[_0x9bc3('0x42')]['id']}},_0x1f9daf={};_0x1f9daf[_0x9bc3('0x31')]=_[_0x9bc3('0x2f')](db[_0x9bc3('0x2b')][_0x9bc3('0x43')]);_0x1f9daf[_0x9bc3('0x2e')]=_['keys'](_0x17fbcd[_0x9bc3('0x2e')]);_0x1f9daf[_0x9bc3('0x37')]=_[_0x9bc3('0x30')](_0x1f9daf[_0x9bc3('0x31')],_0x1f9daf[_0x9bc3('0x2e')]);_0x33e03b[_0x9bc3('0x32')]=_['intersection'](_0x1f9daf[_0x9bc3('0x31')],qs['fields'](_0x17fbcd[_0x9bc3('0x2e')][_0x9bc3('0x33')]));_0x33e03b['attributes']=_0x33e03b[_0x9bc3('0x32')][_0x9bc3('0x44')]?_0x33e03b[_0x9bc3('0x32')]:_0x1f9daf[_0x9bc3('0x31')];if(_0x17fbcd[_0x9bc3('0x2e')][_0x9bc3('0x3d')]){_0x33e03b[_0x9bc3('0x45')]=[{'all':!![]}];}_0x33e03b=_[_0x9bc3('0x39')]({},_0x33e03b,_0x17fbcd['options']);return db['OpenchannelApplication']['find'](_0x33e03b)[_0x9bc3('0x25')](handleEntityNotFound(_0x3b5d56,null))['then'](respondWithResult(_0x3b5d56,null))['catch'](handleError(_0x3b5d56,null));};exports[_0x9bc3('0x46')]=function(_0x436ad6,_0x153bf2){return db[_0x9bc3('0x2b')][_0x9bc3('0x46')](_0x436ad6[_0x9bc3('0x47')],{})[_0x9bc3('0x25')](respondWithResult(_0x153bf2,0xc9))[_0x9bc3('0x40')](handleError(_0x153bf2,null));};exports[_0x9bc3('0x24')]=function(_0x35a7c1,_0x18ecc3){if(_0x35a7c1[_0x9bc3('0x47')]['id']){delete _0x35a7c1[_0x9bc3('0x47')]['id'];}return db['OpenchannelApplication']['find']({'where':{'id':_0x35a7c1[_0x9bc3('0x42')]['id']}})[_0x9bc3('0x25')](handleEntityNotFound(_0x18ecc3,null))[_0x9bc3('0x25')](saveUpdates(_0x35a7c1[_0x9bc3('0x47')],null))['then'](respondWithResult(_0x18ecc3,null))[_0x9bc3('0x40')](handleError(_0x18ecc3,null));};exports[_0x9bc3('0x26')]=function(_0x5801f7,_0x41996f){return db[_0x9bc3('0x2b')][_0x9bc3('0x48')]({'where':{'id':_0x5801f7[_0x9bc3('0x42')]['id']}})[_0x9bc3('0x25')](handleEntityNotFound(_0x41996f,null))[_0x9bc3('0x25')](removeEntity(_0x41996f,null))['catch'](handleError(_0x41996f,null));};
\ No newline at end of file
+var _0x1044=['count','set','Content-Range','json','apply','reject','then','destroy','stack','name','send','index','map','OpenchannelApplication','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','catch','show','params','rawAttributes','merge','options','find','create','body','update','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit'];(function(_0x5677f8,_0x5c1715){var _0x556a0b=function(_0x432dd6){while(--_0x432dd6){_0x5677f8['push'](_0x5677f8['shift']());}};_0x556a0b(++_0x5c1715);}(_0x1044,0x106));var _0x4104=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x1044[_0x68ee8b];return _0x5148f7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4104('0x0'));var jsonpatch=require(_0x4104('0x1'));var rp=require(_0x4104('0x2'));var moment=require(_0x4104('0x3'));var BPromise=require(_0x4104('0x4'));var Mustache=require(_0x4104('0x5'));var util=require(_0x4104('0x6'));var path=require(_0x4104('0x7'));var sox=require(_0x4104('0x8'));var csv=require(_0x4104('0x9'));var ejs=require(_0x4104('0xa'));var fs=require('fs');var fs_extra=require(_0x4104('0xb'));var _=require(_0x4104('0xc'));var squel=require('squel');var crypto=require(_0x4104('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4104('0xe'));var toCsv=require(_0x4104('0x9'));var querystring=require(_0x4104('0xf'));var Papa=require(_0x4104('0x10'));var Redis=require(_0x4104('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4104('0x12'));var as=require(_0x4104('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4104('0x14'));var utils=require(_0x4104('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4104('0x16'));var db=require(_0x4104('0x17'))['db'];function respondWithStatusCode(_0x40fc35,_0x167b08){_0x167b08=_0x167b08||0xcc;return function(_0x48d5f1){if(_0x48d5f1){return _0x40fc35[_0x4104('0x18')](_0x167b08);}return _0x40fc35['status'](_0x167b08)[_0x4104('0x19')]();};}function respondWithResult(_0x38e9f6,_0x24d1b7){_0x24d1b7=_0x24d1b7||0xc8;return function(_0x76ea7e){if(_0x76ea7e){return _0x38e9f6[_0x4104('0x1a')](_0x24d1b7)['json'](_0x76ea7e);}};}function respondWithFilteredResult(_0x109ee4,_0x33cfb1){return function(_0x49a845){if(_0x49a845){var _0x5a3044=typeof _0x33cfb1[_0x4104('0x1b')]===_0x4104('0x1c')&&typeof _0x33cfb1[_0x4104('0x1d')]===_0x4104('0x1c');var _0x347069=_0x49a845[_0x4104('0x1e')];var _0x11b318=_0x5a3044?0x0:_0x33cfb1[_0x4104('0x1b')];var _0x3f4a15=_0x5a3044?_0x49a845['count']:_0x33cfb1['offset']+_0x33cfb1[_0x4104('0x1d')];var _0x3c0235;if(_0x3f4a15>=_0x347069){_0x3f4a15=_0x347069;_0x3c0235=0xc8;}else{_0x3c0235=0xce;}_0x109ee4['status'](_0x3c0235);return _0x109ee4[_0x4104('0x1f')](_0x4104('0x20'),_0x11b318+'-'+_0x3f4a15+'/'+_0x347069)[_0x4104('0x21')](_0x49a845);}return null;};}function patchUpdates(_0x302e2b){return function(_0x417824){try{jsonpatch[_0x4104('0x22')](_0x417824,_0x302e2b,!![]);}catch(_0x26aa61){return BPromise[_0x4104('0x23')](_0x26aa61);}return _0x417824['save']();};}function saveUpdates(_0x8fdfdb,_0x3d1eec){return function(_0x35c00e){if(_0x35c00e){return _0x35c00e['update'](_0x8fdfdb)[_0x4104('0x24')](function(_0x27376a){return _0x27376a;});}return null;};}function removeEntity(_0x14f0b4,_0x584487){return function(_0x421d1c){if(_0x421d1c){return _0x421d1c[_0x4104('0x25')]()[_0x4104('0x24')](function(){_0x14f0b4[_0x4104('0x1a')](0xcc)[_0x4104('0x19')]();});}};}function handleEntityNotFound(_0x171e51,_0x457d52){return function(_0x3a48f5){if(!_0x3a48f5){_0x171e51[_0x4104('0x18')](0x194);}return _0x3a48f5;};}function handleError(_0x3a9e62,_0x115dcc){_0x115dcc=_0x115dcc||0x1f4;return function(_0x6ab8e7){logger['error'](_0x6ab8e7[_0x4104('0x26')]);if(_0x6ab8e7[_0x4104('0x27')]){delete _0x6ab8e7[_0x4104('0x27')];}_0x3a9e62[_0x4104('0x1a')](_0x115dcc)[_0x4104('0x28')](_0x6ab8e7);};}exports[_0x4104('0x29')]=function(_0x50adf9,_0x4d393a){var _0xfc55d0={},_0x45b5ca={},_0x362f74={'count':0x0,'rows':[]};var _0xacdff0=_[_0x4104('0x2a')](db[_0x4104('0x2b')]['rawAttributes'],function(_0x58e9e4){return{'name':_0x58e9e4['fieldName'],'type':_0x58e9e4[_0x4104('0x2c')]['key']};});_0x45b5ca[_0x4104('0x2d')]=_[_0x4104('0x2a')](_0xacdff0,_0x4104('0x27'));_0x45b5ca[_0x4104('0x2e')]=_[_0x4104('0x2f')](_0x50adf9['query']);_0x45b5ca[_0x4104('0x30')]=_[_0x4104('0x31')](_0x45b5ca[_0x4104('0x2d')],_0x45b5ca[_0x4104('0x2e')]);_0xfc55d0[_0x4104('0x32')]=_['intersection'](_0x45b5ca[_0x4104('0x2d')],qs[_0x4104('0x33')](_0x50adf9[_0x4104('0x2e')][_0x4104('0x33')]));_0xfc55d0['attributes']=_0xfc55d0[_0x4104('0x32')][_0x4104('0x34')]?_0xfc55d0[_0x4104('0x32')]:_0x45b5ca[_0x4104('0x2d')];if(!_0x50adf9[_0x4104('0x2e')][_0x4104('0x35')](_0x4104('0x36'))){_0xfc55d0[_0x4104('0x1d')]=qs[_0x4104('0x1d')](_0x50adf9[_0x4104('0x2e')][_0x4104('0x1d')]);_0xfc55d0[_0x4104('0x1b')]=qs['offset'](_0x50adf9['query'][_0x4104('0x1b')]);}_0xfc55d0[_0x4104('0x37')]=qs[_0x4104('0x38')](_0x50adf9[_0x4104('0x2e')][_0x4104('0x38')]);_0xfc55d0[_0x4104('0x39')]=qs[_0x4104('0x30')](_[_0x4104('0x3a')](_0x50adf9[_0x4104('0x2e')],_0x45b5ca[_0x4104('0x30')]),_0xacdff0);if(_0x50adf9['query'][_0x4104('0x3b')]){_0xfc55d0['where']=_['merge'](_0xfc55d0[_0x4104('0x39')],{'$or':_[_0x4104('0x2a')](_0xacdff0,function(_0x4d25fc){if(_0x4d25fc[_0x4104('0x2c')]!==_0x4104('0x3c')){var _0x1de850={};_0x1de850[_0x4d25fc['name']]={'$like':'%'+_0x50adf9[_0x4104('0x2e')][_0x4104('0x3b')]+'%'};return _0x1de850;}})});}_0xfc55d0=_['merge']({},_0xfc55d0,_0x50adf9['options']);var _0x4c4af9={'where':_0xfc55d0['where']};return db['OpenchannelApplication'][_0x4104('0x1e')](_0x4c4af9)[_0x4104('0x24')](function(_0x4bf19c){_0x362f74['count']=_0x4bf19c;if(_0x50adf9[_0x4104('0x2e')][_0x4104('0x3d')]){_0xfc55d0[_0x4104('0x3e')]=[{'all':!![]}];}return db[_0x4104('0x2b')]['findAll'](_0xfc55d0);})[_0x4104('0x24')](function(_0x338aa4){_0x362f74['rows']=_0x338aa4;return _0x362f74;})['then'](respondWithFilteredResult(_0x4d393a,_0xfc55d0))[_0x4104('0x3f')](handleError(_0x4d393a,null));};exports[_0x4104('0x40')]=function(_0x289884,_0x50c02c){var _0x472e5c={'raw':!![],'where':{'id':_0x289884[_0x4104('0x41')]['id']}},_0x31ee6c={};_0x31ee6c[_0x4104('0x2d')]=_[_0x4104('0x2f')](db[_0x4104('0x2b')][_0x4104('0x42')]);_0x31ee6c[_0x4104('0x2e')]=_[_0x4104('0x2f')](_0x289884['query']);_0x31ee6c['filters']=_['intersection'](_0x31ee6c[_0x4104('0x2d')],_0x31ee6c[_0x4104('0x2e')]);_0x472e5c[_0x4104('0x32')]=_[_0x4104('0x31')](_0x31ee6c[_0x4104('0x2d')],qs[_0x4104('0x33')](_0x289884[_0x4104('0x2e')]['fields']));_0x472e5c[_0x4104('0x32')]=_0x472e5c[_0x4104('0x32')]['length']?_0x472e5c[_0x4104('0x32')]:_0x31ee6c[_0x4104('0x2d')];if(_0x289884[_0x4104('0x2e')][_0x4104('0x3d')]){_0x472e5c[_0x4104('0x3e')]=[{'all':!![]}];}_0x472e5c=_[_0x4104('0x43')]({},_0x472e5c,_0x289884[_0x4104('0x44')]);return db[_0x4104('0x2b')][_0x4104('0x45')](_0x472e5c)['then'](handleEntityNotFound(_0x50c02c,null))['then'](respondWithResult(_0x50c02c,null))[_0x4104('0x3f')](handleError(_0x50c02c,null));};exports['create']=function(_0x371390,_0x451d23){return db[_0x4104('0x2b')][_0x4104('0x46')](_0x371390[_0x4104('0x47')],{})[_0x4104('0x24')](respondWithResult(_0x451d23,0xc9))[_0x4104('0x3f')](handleError(_0x451d23,null));};exports[_0x4104('0x48')]=function(_0x59b78b,_0x4ad9fa){if(_0x59b78b[_0x4104('0x47')]['id']){delete _0x59b78b[_0x4104('0x47')]['id'];}return db[_0x4104('0x2b')][_0x4104('0x45')]({'where':{'id':_0x59b78b[_0x4104('0x41')]['id']}})['then'](handleEntityNotFound(_0x4ad9fa,null))[_0x4104('0x24')](saveUpdates(_0x59b78b[_0x4104('0x47')],null))[_0x4104('0x24')](respondWithResult(_0x4ad9fa,null))[_0x4104('0x3f')](handleError(_0x4ad9fa,null));};exports['destroy']=function(_0x2fda98,_0x34379e){return db[_0x4104('0x2b')]['find']({'where':{'id':_0x2fda98['params']['id']}})[_0x4104('0x24')](handleEntityNotFound(_0x34379e,null))[_0x4104('0x24')](removeEntity(_0x34379e,null))[_0x4104('0x3f')](handleError(_0x34379e,null));};
\ No newline at end of file
index 5c8079e..e292a08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a6=['openchannel_applications','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define','OpenchannelApplication'];(function(_0xa7177,_0x474041){var _0x2fb17f=function(_0x5aaeec){while(--_0x5aaeec){_0xa7177['push'](_0xa7177['shift']());}};_0x2fb17f(++_0x474041);}(_0x62a6,0x1c9));var _0x662a=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x62a6[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0x662a('0x0'));var util=require(_0x662a('0x1'));var logger=require(_0x662a('0x2'))(_0x662a('0x3'));var moment=require(_0x662a('0x4'));var BPromise=require(_0x662a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x662a('0x6'));var config=require(_0x662a('0x7'));var attributes=require('./openchannelApplication.attributes');module[_0x662a('0x8')]=function(_0x34fe75,_0xbb83af){return _0x34fe75[_0x662a('0x9')](_0x662a('0xa'),attributes,{'tableName':_0x662a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbe63=['moment','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','lodash','util','api'];(function(_0x3c31ca,_0x11d3b6){var _0x1f7e3b=function(_0x5f0ad1){while(--_0x5f0ad1){_0x3c31ca['push'](_0x3c31ca['shift']());}};_0x1f7e3b(++_0x11d3b6);}(_0xbe63,0x15c));var _0x3be6=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0xbe63[_0x9fd887];return _0x1a54ab;};'use strict';var _=require(_0x3be6('0x0'));var util=require(_0x3be6('0x1'));var logger=require('../../config/logger')(_0x3be6('0x2'));var moment=require(_0x3be6('0x3'));var BPromise=require('bluebird');var rp=require(_0x3be6('0x4'));var fs=require('fs');var path=require(_0x3be6('0x5'));var rimraf=require(_0x3be6('0x6'));var config=require(_0x3be6('0x7'));var attributes=require('./openchannelApplication.attributes');module[_0x3be6('0x8')]=function(_0x14a85b,_0x17859f){return _0x14a85b[_0x3be6('0x9')](_0x3be6('0xa'),attributes,{'tableName':_0x3be6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3be6('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 4123cad..2a1dfb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5ca=['OpenchannelApplication,\x20%s,\x20%s','message','result','OpenchannelApplication','update','options','raw','attributes','limit','then','debug','UpdateOpenchannelApplication','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xd7b0a4,_0x53c7d3){var _0x184e9e=function(_0x325bbd){while(--_0x325bbd){_0xd7b0a4['push'](_0xd7b0a4['shift']());}};_0x184e9e(++_0x53c7d3);}(_0xc5ca,0x1d7));var _0xac5c=function(_0x5e9039,_0x313cf4){_0x5e9039=_0x5e9039-0x0;var _0x1c438b=_0xc5ca[_0x5e9039];return _0x1c438b;};'use strict';var _=require('lodash');var util=require(_0xac5c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xac5c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xac5c('0x2'))['db'];var utils=require(_0xac5c('0x3'));var logger=require(_0xac5c('0x4'))(_0xac5c('0x5'));var config=require(_0xac5c('0x6'));var jayson=require(_0xac5c('0x7'));var client=jayson[_0xac5c('0x8')][_0xac5c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f3679,_0x2132b8,_0x78648c){return new BPromise(function(_0x12de08,_0x1ad183){return client[_0xac5c('0xa')](_0x1f3679,_0x78648c)['then'](function(_0x1c8e04){logger['info']('OpenchannelApplication,\x20%s,\x20%s',_0x2132b8,_0xac5c('0xb'));logger['debug'](_0xac5c('0xc'),_0x2132b8,'request\x20sent',JSON[_0xac5c('0xd')](_0x1c8e04));if(_0x1c8e04[_0xac5c('0xe')]){if(_0x1c8e04[_0xac5c('0xe')]['code']===0x1f4){logger[_0xac5c('0xe')](_0xac5c('0xf'),_0x2132b8,_0x1c8e04[_0xac5c('0xe')][_0xac5c('0x10')]);return _0x1ad183(_0x1c8e04[_0xac5c('0xe')][_0xac5c('0x10')]);}logger[_0xac5c('0xe')](_0xac5c('0xf'),_0x2132b8,_0x1c8e04['error'][_0xac5c('0x10')]);return _0x12de08(_0x1c8e04[_0xac5c('0xe')][_0xac5c('0x10')]);}else{logger['info'](_0xac5c('0xf'),_0x2132b8,_0xac5c('0xb'));_0x12de08(_0x1c8e04[_0xac5c('0x11')][_0xac5c('0x10')]);}})['catch'](function(_0x26d104){logger[_0xac5c('0xe')]('OpenchannelApplication,\x20%s,\x20%s',_0x2132b8,_0x26d104);_0x1ad183(_0x26d104);});});}exports['UpdateOpenchannelApplication']=function(_0x5c5337){var _0x4961de=this;return new Promise(function(_0x5b8a78,_0x524116){return db[_0xac5c('0x12')][_0xac5c('0x13')](_0x5c5337['body'],{'raw':_0x5c5337[_0xac5c('0x14')]?_0x5c5337['options'][_0xac5c('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c5337[_0xac5c('0x14')]?_0x5c5337[_0xac5c('0x14')]['where']||null:null,'attributes':_0x5c5337['options']?_0x5c5337['options'][_0xac5c('0x16')]||null:null,'limit':_0x5c5337[_0xac5c('0x14')]?_0x5c5337[_0xac5c('0x14')][_0xac5c('0x17')]||null:null})[_0xac5c('0x18')](function(_0x28a201){logger['info']('UpdateOpenchannelApplication',_0x5c5337);logger[_0xac5c('0x19')]('UpdateOpenchannelApplication',_0x5c5337,JSON[_0xac5c('0xd')](_0x28a201));_0x5b8a78(_0x28a201);})['catch'](function(_0xf5a3){logger['error'](_0xac5c('0x1a'),_0xf5a3[_0xac5c('0x10')],_0x5c5337);_0x524116(_0x4961de[_0xac5c('0xe')](0x1f4,_0xf5a3[_0xac5c('0x10')]));});});};
\ No newline at end of file
+var _0xfb72=['catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','where','limit','then','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfb72,0x12c));var _0x2fb7=function(_0x22665a,_0x1668e5){_0x22665a=_0x22665a-0x0;var _0xa1acb3=_0xfb72[_0x22665a];return _0xa1acb3;};'use strict';var _=require('lodash');var util=require(_0x2fb7('0x0'));var moment=require(_0x2fb7('0x1'));var BPromise=require(_0x2fb7('0x2'));var rs=require(_0x2fb7('0x3'));var fs=require('fs');var Redis=require(_0x2fb7('0x4'));var db=require(_0x2fb7('0x5'))['db'];var utils=require(_0x2fb7('0x6'));var logger=require(_0x2fb7('0x7'))(_0x2fb7('0x8'));var config=require(_0x2fb7('0x9'));var jayson=require(_0x2fb7('0xa'));var client=jayson[_0x2fb7('0xb')][_0x2fb7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xff5dd7,_0x24dace,_0x177d1f){return new BPromise(function(_0x4e7cdf,_0x587732){return client['request'](_0xff5dd7,_0x177d1f)['then'](function(_0x24cf5c){logger[_0x2fb7('0xd')](_0x2fb7('0xe'),_0x24dace,'request\x20sent');logger['debug']('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x24dace,_0x2fb7('0xf'),JSON['stringify'](_0x24cf5c));if(_0x24cf5c['error']){if(_0x24cf5c[_0x2fb7('0x10')][_0x2fb7('0x11')]===0x1f4){logger[_0x2fb7('0x10')](_0x2fb7('0xe'),_0x24dace,_0x24cf5c['error'][_0x2fb7('0x12')]);return _0x587732(_0x24cf5c['error'][_0x2fb7('0x12')]);}logger[_0x2fb7('0x10')](_0x2fb7('0xe'),_0x24dace,_0x24cf5c[_0x2fb7('0x10')][_0x2fb7('0x12')]);return _0x4e7cdf(_0x24cf5c['error']['message']);}else{logger['info'](_0x2fb7('0xe'),_0x24dace,'request\x20sent');_0x4e7cdf(_0x24cf5c['result'][_0x2fb7('0x12')]);}})[_0x2fb7('0x13')](function(_0x1c7f38){logger[_0x2fb7('0x10')](_0x2fb7('0xe'),_0x24dace,_0x1c7f38);_0x587732(_0x1c7f38);});});}exports[_0x2fb7('0x14')]=function(_0x543db5){var _0x35a046=this;return new Promise(function(_0x52798e,_0x2e6786){return db[_0x2fb7('0x15')][_0x2fb7('0x16')](_0x543db5[_0x2fb7('0x17')],{'raw':_0x543db5[_0x2fb7('0x18')]?_0x543db5[_0x2fb7('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x543db5[_0x2fb7('0x18')]?_0x543db5[_0x2fb7('0x18')][_0x2fb7('0x19')]||null:null,'attributes':_0x543db5['options']?_0x543db5[_0x2fb7('0x18')]['attributes']||null:null,'limit':_0x543db5[_0x2fb7('0x18')]?_0x543db5[_0x2fb7('0x18')][_0x2fb7('0x1a')]||null:null})[_0x2fb7('0x1b')](function(_0x16172e){logger['info'](_0x2fb7('0x14'),_0x543db5);logger['debug']('UpdateOpenchannelApplication',_0x543db5,JSON[_0x2fb7('0x1c')](_0x16172e));_0x52798e(_0x16172e);})['catch'](function(_0x5b1ad3){logger[_0x2fb7('0x10')]('UpdateOpenchannelApplication',_0x5b1ad3[_0x2fb7('0x12')],_0x543db5);_0x2e6786(_0x35a046[_0x2fb7('0x10')](0x1f4,_0x5b1ad3[_0x2fb7('0x12')]));});});};
\ No newline at end of file
index 200f3b5..8b5dfdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x788f=['removeTags','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','show','/:id/messages','/:id/download','download','post','create','/:id/tags','tracked','addTags','put','/:id','openchannel','update','delete','openchannelinteraction:destroy','destroy'];(function(_0x3a9dae,_0x4ffe20){var _0x1f2ee4=function(_0xbfadaa){while(--_0xbfadaa){_0x3a9dae['push'](_0x3a9dae['shift']());}};_0x1f2ee4(++_0x4ffe20);}(_0x788f,0x1a5));var _0xf788=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x788f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xf788('0x0'));var path=require(_0xf788('0x1'));var timeout=require(_0xf788('0x2'));var express=require(_0xf788('0x3'));var router=express[_0xf788('0x4')]();var fs_extra=require(_0xf788('0x5'));var auth=require(_0xf788('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf788('0x7'));var controller=require('./openchannelInteraction.controller');router['get']('/',auth[_0xf788('0x8')](),controller[_0xf788('0x9')]);router['get']('/describe',auth[_0xf788('0x8')](),controller['describe']);router[_0xf788('0xa')]('/:id',auth[_0xf788('0x8')](),controller[_0xf788('0xb')]);router[_0xf788('0xa')](_0xf788('0xc'),auth['isAuthenticated'](),controller['getMessages']);router[_0xf788('0xa')](_0xf788('0xd'),auth[_0xf788('0x8')](),controller[_0xf788('0xe')]);router[_0xf788('0xf')]('/',auth[_0xf788('0x8')](),controller[_0xf788('0x10')]);router[_0xf788('0xf')](_0xf788('0xc'),auth['isAuthenticated'](),controller['addMessage']);router[_0xf788('0xf')](_0xf788('0x11'),auth[_0xf788('0x8')](),interaction[_0xf788('0x12')]('openchannel','openchannelinteraction:addtags'),controller[_0xf788('0x13')]);router[_0xf788('0x14')](_0xf788('0x15'),auth[_0xf788('0x8')](),interaction[_0xf788('0x12')](_0xf788('0x16'),'openchannelinteraction:update'),controller[_0xf788('0x17')]);router[_0xf788('0x18')](_0xf788('0x15'),auth[_0xf788('0x8')](),interaction[_0xf788('0x12')](_0xf788('0x16'),_0xf788('0x19')),controller[_0xf788('0x1a')]);router[_0xf788('0x18')]('/:id/tags',auth[_0xf788('0x8')](),controller[_0xf788('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x4976=['../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','isAuthenticated','/describe','/:id','/:id/messages','getMessages','/:id/download','download','create','addMessage','post','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','removeTags','path','express','Router','fs-extra'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4976,0x74));var _0x6497=function(_0x5db7b9,_0x2690ec){_0x5db7b9=_0x5db7b9-0x0;var _0x239bb7=_0x4976[_0x5db7b9];return _0x239bb7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6497('0x0'));var timeout=require('connect-timeout');var express=require(_0x6497('0x1'));var router=express[_0x6497('0x2')]();var fs_extra=require(_0x6497('0x3'));var auth=require(_0x6497('0x4'));var interaction=require(_0x6497('0x5'));var config=require('../../config/environment');var controller=require(_0x6497('0x6'));router[_0x6497('0x7')]('/',auth[_0x6497('0x8')](),controller['index']);router[_0x6497('0x7')](_0x6497('0x9'),auth[_0x6497('0x8')](),controller['describe']);router[_0x6497('0x7')](_0x6497('0xa'),auth[_0x6497('0x8')](),controller['show']);router['get'](_0x6497('0xb'),auth['isAuthenticated'](),controller[_0x6497('0xc')]);router[_0x6497('0x7')](_0x6497('0xd'),auth[_0x6497('0x8')](),controller[_0x6497('0xe')]);router['post']('/',auth[_0x6497('0x8')](),controller[_0x6497('0xf')]);router['post'](_0x6497('0xb'),auth[_0x6497('0x8')](),controller[_0x6497('0x10')]);router[_0x6497('0x11')](_0x6497('0x12'),auth['isAuthenticated'](),interaction[_0x6497('0x13')](_0x6497('0x14'),_0x6497('0x15')),controller[_0x6497('0x16')]);router[_0x6497('0x17')](_0x6497('0xa'),auth[_0x6497('0x8')](),interaction['tracked']('openchannel',_0x6497('0x18')),controller[_0x6497('0x19')]);router[_0x6497('0x1a')]('/:id',auth['isAuthenticated'](),interaction[_0x6497('0x13')](_0x6497('0x14'),_0x6497('0x1b')),controller[_0x6497('0x1c')]);router[_0x6497('0x1a')](_0x6497('0x12'),auth[_0x6497('0x8')](),controller[_0x6497('0x1d')]);module['exports']=router;
\ No newline at end of file
index 1dc6137..9ee4795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3667=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x5683e1,_0x333438){var _0x3ed5f9=function(_0x226510){while(--_0x226510){_0x5683e1['push'](_0x5683e1['shift']());}};_0x3ed5f9(++_0x333438);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7366('0x0'));module[_0x7366('0x1')]={'closed':{'type':Sequelize[_0x7366('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7366('0x3')]},'disposition':{'type':Sequelize[_0x7366('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x7366('0x4')]},'note':{'type':Sequelize[_0x7366('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x7366('0x4')]},'externalUrl':{'type':Sequelize[_0x7366('0x4')]},'lastMsgAt':{'type':Sequelize[_0x7366('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x7366('0x5')]('in',_0x7366('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x7366('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x7366('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x7366('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xa25c=['BOOLEAN','DATE','STRING','out','exports'];(function(_0x2353fe,_0x4b0bca){var _0x4d43f6=function(_0x5d0bd9){while(--_0x5d0bd9){_0x2353fe['push'](_0x2353fe['shift']());}};_0x4d43f6(++_0x4b0bca);}(_0xa25c,0x13f));var _0xca25=function(_0x92ad86,_0x3c09c3){_0x92ad86=_0x92ad86-0x0;var _0x188fbb=_0xa25c[_0x92ad86];return _0x188fbb;};'use strict';var Sequelize=require('sequelize');module[_0xca25('0x0')]={'closed':{'type':Sequelize[_0xca25('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xca25('0x2')]},'disposition':{'type':Sequelize[_0xca25('0x3')]},'secondDisposition':{'type':Sequelize[_0xca25('0x3')]},'thirdDisposition':{'type':Sequelize[_0xca25('0x3')]},'note':{'type':Sequelize[_0xca25('0x3')]},'read1stAt':{'type':Sequelize[_0xca25('0x2')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0xca25('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xca25('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xca25('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xca25('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0xca25('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 23b02d9..cfaae29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb979=['filter','where','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','unix','toString','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','User','fullname','CmContact','firstName','lastName','push','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','get','Account','Owner','closed','closedAt','disposition','threadId','Public','Private','basename','existsSync','createReadStream','pipe','System','Contact','out','value','views','transcript-','.pdf','Openchannel','createPdfFromHTML','download','unlinkSync','rimraf','zip-dir','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','then','destroy','end','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','getOptions','findAll','openchannel','query','user','show','from','params','model','keys','filters','intersection','attributes','include','merge','options','find','catch','create','update','body','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','fields','length','nolimit','order','sort','OpenchannelInteractionId'];(function(_0xaae14b,_0x250688){var _0x1c6982=function(_0x4028e5){while(--_0x4028e5){_0xaae14b['push'](_0xaae14b['shift']());}};_0x1c6982(++_0x250688);}(_0xb979,0xc0));var _0x9b97=function(_0xde00e,_0x3a8320){_0xde00e=_0xde00e-0x0;var _0x296e12=_0xb979[_0xde00e];return _0x296e12;};'use strict';var rimraf=require(_0x9b97('0x0'));var zipdir=require(_0x9b97('0x1'));var moment=require('moment');var util=require('util');var path=require(_0x9b97('0x2'));var ejs=require(_0x9b97('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x9b97('0x4'));var qs=require(_0x9b97('0x5'));var pdf=require(_0x9b97('0x6'));var logger=require(_0x9b97('0x7'))(_0x9b97('0x8'));var config=require(_0x9b97('0x9'));var db=require(_0x9b97('0xa'))['db'];config[_0x9b97('0xb')]=_[_0x9b97('0xc')](config[_0x9b97('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9b97('0xd'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0x9b97('0xe')](socket);function respondWithStatusCode(_0xaff571,_0x5d6a9b){_0x5d6a9b=_0x5d6a9b||0xcc;return function(_0x40dcc5){if(_0x40dcc5){return _0xaff571[_0x9b97('0xf')](_0x5d6a9b);}return _0xaff571[_0x9b97('0x10')](_0x5d6a9b)['end']();};}function respondWithResult(_0x11ed1a,_0x43cacc){_0x43cacc=_0x43cacc||0xc8;return function(_0xd949bd){if(_0xd949bd){return _0x11ed1a[_0x9b97('0x10')](_0x43cacc)[_0x9b97('0x11')](_0xd949bd);}};}function respondWithFilteredResult(_0x36d63d,_0x1c0454){return function(_0x4bc10e){if(_0x4bc10e){var _0x48d7cb=typeof _0x1c0454[_0x9b97('0x12')]==='undefined'&&typeof _0x1c0454[_0x9b97('0x13')]===_0x9b97('0x14');var _0xe68fe0=_0x4bc10e[_0x9b97('0x15')];var _0x1803d8=_0x48d7cb?0x0:_0x1c0454[_0x9b97('0x12')];var _0x293383=_0x48d7cb?_0x4bc10e[_0x9b97('0x15')]:_0x1c0454[_0x9b97('0x12')]+_0x1c0454[_0x9b97('0x13')];var _0x4cdaca;if(_0x293383>=_0xe68fe0){_0x293383=_0xe68fe0;_0x4cdaca=0xc8;}else{_0x4cdaca=0xce;}_0x36d63d[_0x9b97('0x10')](_0x4cdaca);return _0x36d63d[_0x9b97('0x16')](_0x9b97('0x17'),_0x1803d8+'-'+_0x293383+'/'+_0xe68fe0)['json'](_0x4bc10e);}return null;};}function saveUpdates(_0x197782){return function(_0x8858c7){if(_0x8858c7){return _0x8858c7['update'](_0x197782)[_0x9b97('0x18')](function(_0x312e98){return _0x312e98;});}return null;};}function removeEntity(_0x38939e){return function(_0x2b6059){if(_0x2b6059){return _0x2b6059[_0x9b97('0x19')]()[_0x9b97('0x18')](function(){_0x38939e[_0x9b97('0x10')](0xcc)[_0x9b97('0x1a')]();});}};}function handleEntityNotFound(_0x3f5485){return function(_0x1017d9){if(!_0x1017d9){_0x3f5485[_0x9b97('0xf')](0x194);}return _0x1017d9;};}function handleError(_0x24f79c,_0x4e1874){_0x4e1874=_0x4e1874||0x1f4;return function(_0x4f5183){logger[_0x9b97('0x1b')](_0x4f5183[_0x9b97('0x1c')]);if(_0x4f5183['name']){delete _0x4f5183[_0x9b97('0x1d')];}_0x24f79c['status'](_0x4e1874)[_0x9b97('0x1e')](_0x4f5183);};}exports[_0x9b97('0x1f')]=function(_0x261505,_0x509bc9){var _0x43de33={};var _0x47228a=_[_0x9b97('0x20')](db[_0x9b97('0x21')][_0x9b97('0x22')],function(_0xaf4c85){return{'name':_0xaf4c85[_0x9b97('0x23')],'type':_0xaf4c85[_0x9b97('0x24')]['key']};});_0x43de33=qs[_0x9b97('0x25')](_0x47228a,_0x261505);return interaction[_0x9b97('0x26')](_0x9b97('0x27'),_0x261505[_0x9b97('0x28')],_0x261505[_0x9b97('0x29')],_0x43de33,_0x47228a)['then'](respondWithFilteredResult(_0x509bc9,_0x43de33))['catch'](handleError(_0x509bc9,null));};exports[_0x9b97('0x2a')]=function(_0xfc63db,_0x5c8884){var _0x5ceff5={};if(_0xfc63db[_0x9b97('0x28')]['type']&&_0xfc63db[_0x9b97('0x28')]['type']===_0x9b97('0x2b')){_0x5ceff5[_0x9b97('0x2b')]=_0xfc63db[_0x9b97('0x2c')]['id'];}else{_0x5ceff5['id']=_0xfc63db[_0x9b97('0x2c')]['id'];}var _0x220286={'raw':![],'where':_0x5ceff5},_0x20be03={};_0x20be03[_0x9b97('0x2d')]=_['keys'](db['OpenchannelInteraction'][_0x9b97('0x22')]);_0x20be03[_0x9b97('0x28')]=_[_0x9b97('0x2e')](_0xfc63db[_0x9b97('0x28')]);_0x20be03[_0x9b97('0x2f')]=_[_0x9b97('0x30')](_0x20be03[_0x9b97('0x2d')],_0x20be03[_0x9b97('0x28')]);_0x220286[_0x9b97('0x31')]=_[_0x9b97('0x30')](_0x20be03[_0x9b97('0x2d')],qs['fields'](_0xfc63db['query']['fields']));_0x220286[_0x9b97('0x31')]=_0x220286['attributes']['length']?_0x220286[_0x9b97('0x31')]:_0x20be03[_0x9b97('0x2d')];if(_0xfc63db['query']['includeAll']){_0x220286[_0x9b97('0x32')]=[{'all':!![]}];}_0x220286=_[_0x9b97('0x33')]({},_0x220286,_0xfc63db[_0x9b97('0x34')]);return db['OpenchannelInteraction'][_0x9b97('0x35')](_0x220286)[_0x9b97('0x18')](handleEntityNotFound(_0x5c8884,null))[_0x9b97('0x18')](respondWithResult(_0x5c8884,null))[_0x9b97('0x36')](handleError(_0x5c8884,null));};exports[_0x9b97('0x37')]=function(_0x5d2fa9,_0x496f13){return db[_0x9b97('0x21')][_0x9b97('0x37')](_0x5d2fa9['body'],{})['then'](respondWithResult(_0x496f13,0xc9))[_0x9b97('0x36')](handleError(_0x496f13,null));};exports[_0x9b97('0x38')]=function(_0x9a45ac,_0xe0f622){if(_0x9a45ac[_0x9b97('0x39')]['id']){delete _0x9a45ac[_0x9b97('0x39')]['id'];}return db['OpenchannelInteraction'][_0x9b97('0x35')]({'where':{'id':_0x9a45ac[_0x9b97('0x2c')]['id']}})['then'](handleEntityNotFound(_0xe0f622,null))[_0x9b97('0x18')](saveUpdates(_0x9a45ac[_0x9b97('0x39')],null))[_0x9b97('0x18')](respondWithResult(_0xe0f622,null))[_0x9b97('0x36')](handleError(_0xe0f622,null));};exports[_0x9b97('0x19')]=function(_0x1bf71d,_0x314a7e){return db['OpenchannelInteraction'][_0x9b97('0x35')]({'where':{'id':_0x1bf71d['params']['id']}})[_0x9b97('0x18')](handleEntityNotFound(_0x314a7e,null))[_0x9b97('0x18')](removeEntity(_0x314a7e,null))['catch'](handleError(_0x314a7e,null));};exports['describe']=function(_0xf0c872,_0x3a3e39){return db[_0x9b97('0x21')][_0x9b97('0x3a')]()[_0x9b97('0x18')](respondWithResult(_0x3a3e39,null))[_0x9b97('0x36')](handleError(_0x3a3e39,null));};exports[_0x9b97('0x3b')]=function(_0x4c9087,_0x2ba3d1){return db[_0x9b97('0x3c')][_0x9b97('0x35')]({'where':{'id':_0x4c9087[_0x9b97('0x2c')]['id']}})[_0x9b97('0x18')](handleEntityNotFound(_0x2ba3d1,null))['then'](function(_0x59f658){if(_0x59f658){return _0x59f658[_0x9b97('0x3b')](_0x4c9087[_0x9b97('0x39')][_0x9b97('0x3d')],_[_0x9b97('0x3e')](_0x4c9087['body'],[_0x9b97('0x3d'),'id'])||{});}})[_0x9b97('0x18')](respondWithResult(_0x2ba3d1,null))[_0x9b97('0x36')](handleError(_0x2ba3d1,null));};exports[_0x9b97('0x3f')]=function(_0x7faf51,_0x536f8a){var _0x42d75a={'raw':![],'where':{}};var _0x52237a={};var _0x34014e={'count':0x0,'rows':[]};return db[_0x9b97('0x21')]['findOne']({'where':{'id':_0x7faf51['params']['id']}})[_0x9b97('0x18')](handleEntityNotFound(_0x536f8a,null))[_0x9b97('0x18')](function(_0x27058e){if(_0x27058e){_0x52237a[_0x9b97('0x2d')]=_[_0x9b97('0x2e')](db[_0x9b97('0x3c')]['rawAttributes']);_0x52237a[_0x9b97('0x28')]=_[_0x9b97('0x2e')](_0x7faf51[_0x9b97('0x28')]);_0x52237a[_0x9b97('0x2f')]=_[_0x9b97('0x30')](_0x52237a[_0x9b97('0x2d')],_0x52237a[_0x9b97('0x28')]);_0x42d75a[_0x9b97('0x31')]=_[_0x9b97('0x30')](_0x52237a['model'],qs['fields'](_0x7faf51[_0x9b97('0x28')][_0x9b97('0x40')]));_0x42d75a['attributes']=_0x42d75a['attributes'][_0x9b97('0x41')]?_0x42d75a['attributes']:_0x52237a[_0x9b97('0x2d')];if(!_0x7faf51[_0x9b97('0x28')]['hasOwnProperty'](_0x9b97('0x42'))){_0x42d75a['limit']=qs[_0x9b97('0x13')](_0x7faf51['query'][_0x9b97('0x13')]);_0x42d75a[_0x9b97('0x12')]=qs[_0x9b97('0x12')](_0x7faf51['query']['offset']);}_0x42d75a[_0x9b97('0x43')]=qs[_0x9b97('0x44')](_0x7faf51['query'][_0x9b97('0x44')]);_0x42d75a['where']=qs[_0x9b97('0x2f')](_['pick'](_0x7faf51[_0x9b97('0x28')],_0x52237a[_0x9b97('0x2f')]));_0x42d75a['where'][_0x9b97('0x45')]=_0x27058e['id'];if(_0x7faf51[_0x9b97('0x28')][_0x9b97('0x46')]){_0x42d75a[_0x9b97('0x47')]=_[_0x9b97('0x33')](_0x42d75a[_0x9b97('0x47')],{'$or':_[_0x9b97('0x20')](_0x42d75a['attributes'],function(_0x12894e){var _0x58a387={};_0x58a387[_0x12894e]={'$like':'%'+_0x7faf51[_0x9b97('0x28')][_0x9b97('0x46')]+'%'};return _0x58a387;})});}if(_0x7faf51[_0x9b97('0x28')]['$gte']){var _0x305eca=_0x7faf51['query'][_0x9b97('0x48')][_0x9b97('0x49')](',');var _0x4999c5={};_0x4999c5[_0x305eca[0x0]]={'$gte':moment(_0x305eca[0x1])['format'](_0x9b97('0x4a'))};_0x42d75a['where']=_[_0x9b97('0x33')](_0x42d75a[_0x9b97('0x47')],_0x4999c5);}_0x42d75a=_['merge']({},_0x42d75a,_0x7faf51[_0x9b97('0x34')]);return db[_0x9b97('0x3c')]['count']({'where':_0x42d75a[_0x9b97('0x47')]})['then'](function(_0x9de7bc){_0x34014e[_0x9b97('0x15')]=_0x9de7bc;if(_0x7faf51[_0x9b97('0x28')][_0x9b97('0x4b')]){_0x42d75a[_0x9b97('0x32')]=[{'all':!![]}];}return db[_0x9b97('0x3c')][_0x9b97('0x26')](_0x42d75a);})['then'](function(_0x5bb0be){_0x34014e['rows']=_0x5bb0be;return _0x34014e;});}})[_0x9b97('0x18')](respondWithFilteredResult(_0x536f8a,_0x42d75a))[_0x9b97('0x36')](handleError(_0x536f8a,null));};exports[_0x9b97('0x4c')]=function(_0x2ede00,_0x25341f){return db['OpenchannelInteraction'][_0x9b97('0x35')]({'where':{'id':_0x2ede00[_0x9b97('0x2c')]['id']}})['then'](handleEntityNotFound(_0x25341f,null))[_0x9b97('0x18')](function(_0x1e5a65){if(_0x1e5a65){return _0x1e5a65[_0x9b97('0x4d')](_0x2ede00['body'][_0x9b97('0x3d')],_[_0x9b97('0x3e')](_0x2ede00[_0x9b97('0x39')],[_0x9b97('0x3d'),'id'])||{})[_0x9b97('0x4e')](function(){return db[_0x9b97('0x4f')][_0x9b97('0x26')]({'attributes':['id',_0x9b97('0x1d'),_0x9b97('0x50')],'where':{'id':_0x2ede00['body'][_0x9b97('0x3d')]}});})[_0x9b97('0x18')](function(_0x7502c1){socket[_0x9b97('0x51')](_0x9b97('0x52'),{'id':Number(_0x2ede00[_0x9b97('0x2c')]['id']),'tags':_0x7502c1||[]});return{'id':Number(_0x2ede00[_0x9b97('0x2c')]['id']),'tags':_0x7502c1||[]};});}})['then'](respondWithResult(_0x25341f,null))['catch'](handleError(_0x25341f,null));};exports[_0x9b97('0x53')]=function(_0x5b2837,_0x1a7303){return db[_0x9b97('0x21')][_0x9b97('0x35')]({'where':{'id':_0x5b2837['params']['id']}})['then'](handleEntityNotFound(_0x1a7303,null))[_0x9b97('0x18')](function(_0x10f660){if(_0x10f660){return _0x10f660[_0x9b97('0x53')](_0x5b2837[_0x9b97('0x28')][_0x9b97('0x3d')]);}})[_0x9b97('0x18')](respondWithStatusCode(_0x1a7303,null))[_0x9b97('0x36')](handleError(_0x1a7303,null));};exports['download']=function(_0x10e492,_0x20b22e){var _0x256411=moment()[_0x9b97('0x54')]()[_0x9b97('0x55')]();var _0x1f21c0=path[_0x9b97('0x56')](config[_0x9b97('0x57')],_0x9b97('0x58'),_0x9b97('0x59'),_0x9b97('0x5a'));var _0x4bd033=path[_0x9b97('0x56')](config[_0x9b97('0x57')],'server','files',_0x9b97('0x5b'));var _0x21bcae=path[_0x9b97('0x56')](_0x1f21c0,_0x256411);var _0x41b6e5=util[_0x9b97('0x5c')](_0x9b97('0x5d'),_0x10e492['params']['id'],_0x256411);var _0x29213e=path[_0x9b97('0x56')](_0x1f21c0,_0x41b6e5);var _0xbe2665=[];_0xbe2665['push']({'model':db[_0x9b97('0x5e')],'as':'User','attributes':['id',_0x9b97('0x5f')],'raw':!![]});_0xbe2665['push']({'model':db[_0x9b97('0x60')],'as':'Contact','attributes':['id',_0x9b97('0x61'),_0x9b97('0x62')],'raw':!![]});if(_0x10e492['query'][_0x9b97('0x5b')]){_0xbe2665[_0x9b97('0x63')]({'model':db['Attachment'],'as':_0x9b97('0x64'),'raw':!![]});}var _0x2139fc=[{'model':db[_0x9b97('0x3c')],'as':_0x9b97('0x65'),'attributes':['id',_0x9b97('0x39'),_0x9b97('0x66'),_0x9b97('0x67'),_0x9b97('0x68'),_0x9b97('0x69')],'include':_0xbe2665}];_0x2139fc[_0x9b97('0x63')]({'model':db[_0x9b97('0x6a')],'as':'Account','attributes':['id',_0x9b97('0x1d')]});_0x2139fc[_0x9b97('0x63')]({'model':db[_0x9b97('0x5e')],'as':'Owner','attributes':['id',_0x9b97('0x5f')]});return db[_0x9b97('0x21')][_0x9b97('0x35')]({'where':{'id':_0x10e492[_0x9b97('0x2c')]['id']},'include':_0x2139fc})['then'](handleEntityNotFound(_0x20b22e,null))['then'](function(_0x4de364){if(_0x4de364){var _0x23c2a4=_0x4de364[_0x9b97('0x6b')]({'plain':!![]});fs['mkdirSync'](_0x21bcae);var _0x3096eb={'channel':'Openchannel','account':_0x23c2a4[_0x9b97('0x6c')][_0x9b97('0x1d')],'agent':_0x23c2a4['Owner']?_0x23c2a4[_0x9b97('0x6d')][_0x9b97('0x5f')]:'N.A.','createdAt':moment(_0x23c2a4[_0x9b97('0x66')])[_0x9b97('0x5c')](_0x9b97('0x4a'))[_0x9b97('0x55')](),'closedAt':_0x23c2a4[_0x9b97('0x6e')]?moment(_0x23c2a4[_0x9b97('0x6f')])[_0x9b97('0x5c')](_0x9b97('0x4a'))[_0x9b97('0x55')]():'','disposition':_0x23c2a4[_0x9b97('0x70')],'visibility':_0x23c2a4[_0x9b97('0x71')]?_0x9b97('0x72'):_0x9b97('0x73'),'messages':_(_0x23c2a4[_0x9b97('0x65')])[_0x9b97('0x46')]({'secret':![]})['map'](function(_0x52665f){if(_0x52665f[_0x9b97('0x64')]){var _0x2964ca=path[_0x9b97('0x56')](_0x4bd033,_0x52665f[_0x9b97('0x64')][_0x9b97('0x74')]);if(fs[_0x9b97('0x75')](_0x2964ca)){fs[_0x9b97('0x76')](_0x2964ca)[_0x9b97('0x77')](fs['createWriteStream'](path[_0x9b97('0x56')](_0x21bcae,_0x52665f['Attachment']['basename'])));}}return{'date':moment(_0x52665f[_0x9b97('0x66')])[_0x9b97('0x5c')](_0x9b97('0x4a'))[_0x9b97('0x55')](),'sender':_0x52665f['direction']==='out'?_0x52665f[_0x9b97('0x5e')]?_0x52665f[_0x9b97('0x5e')][_0x9b97('0x5f')]:_0x9b97('0x78'):_0x52665f[_0x9b97('0x79')][_0x9b97('0x61')]+(_0x52665f[_0x9b97('0x79')]['lastName']?'\x20'+_0x52665f[_0x9b97('0x79')]['lastName']:''),'body':_0x52665f[_0x9b97('0x64')]?_0x52665f[_0x9b97('0x64')][_0x9b97('0x74')]:_0x52665f['body'],'direction':_0x52665f[_0x9b97('0x67')]===_0x9b97('0x7a')?'A':'C','secret':_0x52665f[_0x9b97('0x68')],'read':_0x52665f[_0x9b97('0x69')],'attachment':_0x52665f[_0x9b97('0x64')]};})[_0x9b97('0x7b')]()};return ejs['renderFile'](path[_0x9b97('0x56')](config[_0x9b97('0x57')],_0x9b97('0x58'),_0x9b97('0x7c'),'downloadInteraction.ejs'),{'interaction':_0x3096eb})['then'](function(_0x29fad6){var _0x2bb36d=path[_0x9b97('0x56')](_0x21bcae,_0x9b97('0x7d')+_0x23c2a4['id']+'-'+_0x256411+_0x9b97('0x7e'));var _0xe235f={'path':_0x2bb36d,'channel':_0x9b97('0x7f'),'interactionId':_0x23c2a4['id']};return pdf[_0x9b97('0x80')](_0x29fad6,_0xe235f);})[_0x9b97('0x18')](function(){return new Promise(function(_0x194e24,_0x37f787){zipdir(_0x21bcae,{'saveTo':_0x29213e},function(_0x440bf3,_0x4d3a6d){if(_0x440bf3)return _0x37f787(_0x440bf3);return _0x194e24(_0x4d3a6d);});})[_0x9b97('0x18')](function(){return new Promise(function(_0x49f32f,_0x1db887){rimraf(_0x21bcae,function(_0x53a85e){if(_0x53a85e)_0x1db887(_0x53a85e);return _0x49f32f();});});})[_0x9b97('0x18')](function(){return _0x20b22e[_0x9b97('0x81')](_0x29213e,_0x41b6e5,function(_0xfeb6b9){if(_0xfeb6b9){logger['error']('Unable\x20to\x20delete\x20zip\x20file',_0xfeb6b9);}else{fs[_0x9b97('0x82')](_0x29213e);}});});});}else{return _0x20b22e[_0x9b97('0xf')](0xc8);}})[_0x9b97('0x36')](handleError(_0x20b22e,null));};
\ No newline at end of file
+var _0xe649=['pipe','createWriteStream','out','System','Contact','read','value','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','status','end','offset','undefined','limit','count','json','then','destroy','sendStatus','error','stack','name','send','index','OpenchannelInteraction','rawAttributes','fieldName','type','key','findAll','openchannel','query','catch','from','params','model','keys','filters','attributes','intersection','fields','includeAll','include','options','find','create','body','update','describe','OpenchannelMessage','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','order','sort','where','map','$gte','format','YYYY-MM-DD\x20HH:mm:ss','merge','rows','addTags','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','lastName','Attachment','Messages','createdAt','direction','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','closedAt','disposition','threadId','Public','filter','basename','existsSync'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xe649,0x18a));var _0x9e64=function(_0x249005,_0x5047ac){_0x249005=_0x249005-0x0;var _0x21b286=_0xe649[_0x249005];return _0x21b286;};'use strict';var rimraf=require(_0x9e64('0x0'));var zipdir=require(_0x9e64('0x1'));var moment=require(_0x9e64('0x2'));var util=require(_0x9e64('0x3'));var path=require(_0x9e64('0x4'));var ejs=require(_0x9e64('0x5'));var fs=require('fs');var _=require(_0x9e64('0x6'));var Redis=require('ioredis');var interaction=require(_0x9e64('0x7'));var qs=require(_0x9e64('0x8'));var pdf=require(_0x9e64('0x9'));var logger=require(_0x9e64('0xa'))(_0x9e64('0xb'));var config=require(_0x9e64('0xc'));var db=require(_0x9e64('0xd'))['db'];config['redis']=_[_0x9e64('0xe')](config[_0x9e64('0xf')],{'host':_0x9e64('0x10'),'port':0x18eb});var socket=require(_0x9e64('0x11'))(new Redis(config[_0x9e64('0xf')]));require('./openchannelInteraction.socket')[_0x9e64('0x12')](socket);function respondWithStatusCode(_0x4b9839,_0x32c710){_0x32c710=_0x32c710||0xcc;return function(_0x3c52e6){if(_0x3c52e6){return _0x4b9839['sendStatus'](_0x32c710);}return _0x4b9839[_0x9e64('0x13')](_0x32c710)[_0x9e64('0x14')]();};}function respondWithResult(_0x53c311,_0x3f85eb){_0x3f85eb=_0x3f85eb||0xc8;return function(_0x375901){if(_0x375901){return _0x53c311[_0x9e64('0x13')](_0x3f85eb)['json'](_0x375901);}};}function respondWithFilteredResult(_0x412316,_0x32dacc){return function(_0x11243f){if(_0x11243f){var _0x53198c=typeof _0x32dacc[_0x9e64('0x15')]===_0x9e64('0x16')&&typeof _0x32dacc[_0x9e64('0x17')]==='undefined';var _0x43ca38=_0x11243f[_0x9e64('0x18')];var _0x4dc875=_0x53198c?0x0:_0x32dacc[_0x9e64('0x15')];var _0x345287=_0x53198c?_0x11243f['count']:_0x32dacc[_0x9e64('0x15')]+_0x32dacc[_0x9e64('0x17')];var _0x3c2b73;if(_0x345287>=_0x43ca38){_0x345287=_0x43ca38;_0x3c2b73=0xc8;}else{_0x3c2b73=0xce;}_0x412316[_0x9e64('0x13')](_0x3c2b73);return _0x412316['set']('Content-Range',_0x4dc875+'-'+_0x345287+'/'+_0x43ca38)[_0x9e64('0x19')](_0x11243f);}return null;};}function saveUpdates(_0x189bb0){return function(_0x392a12){if(_0x392a12){return _0x392a12['update'](_0x189bb0)[_0x9e64('0x1a')](function(_0x416aae){return _0x416aae;});}return null;};}function removeEntity(_0x5d17c5){return function(_0x55cdf4){if(_0x55cdf4){return _0x55cdf4[_0x9e64('0x1b')]()[_0x9e64('0x1a')](function(){_0x5d17c5[_0x9e64('0x13')](0xcc)[_0x9e64('0x14')]();});}};}function handleEntityNotFound(_0x5615b0){return function(_0x41dfd0){if(!_0x41dfd0){_0x5615b0[_0x9e64('0x1c')](0x194);}return _0x41dfd0;};}function handleError(_0x1e0210,_0x199d77){_0x199d77=_0x199d77||0x1f4;return function(_0x3c1ebc){logger[_0x9e64('0x1d')](_0x3c1ebc[_0x9e64('0x1e')]);if(_0x3c1ebc[_0x9e64('0x1f')]){delete _0x3c1ebc[_0x9e64('0x1f')];}_0x1e0210[_0x9e64('0x13')](_0x199d77)[_0x9e64('0x20')](_0x3c1ebc);};}exports[_0x9e64('0x21')]=function(_0x30ce53,_0x453bcb){var _0x1e6c04={};var _0x566bfa=_['map'](db[_0x9e64('0x22')][_0x9e64('0x23')],function(_0x38066d){return{'name':_0x38066d[_0x9e64('0x24')],'type':_0x38066d[_0x9e64('0x25')][_0x9e64('0x26')]};});_0x1e6c04=qs['getOptions'](_0x566bfa,_0x30ce53);return interaction[_0x9e64('0x27')](_0x9e64('0x28'),_0x30ce53[_0x9e64('0x29')],_0x30ce53['user'],_0x1e6c04,_0x566bfa)[_0x9e64('0x1a')](respondWithFilteredResult(_0x453bcb,_0x1e6c04))[_0x9e64('0x2a')](handleError(_0x453bcb,null));};exports['show']=function(_0x5df9c0,_0x4a45dd){var _0x7d0a56={};if(_0x5df9c0[_0x9e64('0x29')]['type']&&_0x5df9c0[_0x9e64('0x29')]['type']===_0x9e64('0x2b')){_0x7d0a56[_0x9e64('0x2b')]=_0x5df9c0[_0x9e64('0x2c')]['id'];}else{_0x7d0a56['id']=_0x5df9c0[_0x9e64('0x2c')]['id'];}var _0x392d1c={'raw':![],'where':_0x7d0a56},_0x22f34c={};_0x22f34c[_0x9e64('0x2d')]=_['keys'](db[_0x9e64('0x22')][_0x9e64('0x23')]);_0x22f34c[_0x9e64('0x29')]=_[_0x9e64('0x2e')](_0x5df9c0[_0x9e64('0x29')]);_0x22f34c[_0x9e64('0x2f')]=_['intersection'](_0x22f34c[_0x9e64('0x2d')],_0x22f34c[_0x9e64('0x29')]);_0x392d1c[_0x9e64('0x30')]=_[_0x9e64('0x31')](_0x22f34c[_0x9e64('0x2d')],qs[_0x9e64('0x32')](_0x5df9c0[_0x9e64('0x29')][_0x9e64('0x32')]));_0x392d1c[_0x9e64('0x30')]=_0x392d1c[_0x9e64('0x30')]['length']?_0x392d1c[_0x9e64('0x30')]:_0x22f34c[_0x9e64('0x2d')];if(_0x5df9c0[_0x9e64('0x29')][_0x9e64('0x33')]){_0x392d1c[_0x9e64('0x34')]=[{'all':!![]}];}_0x392d1c=_['merge']({},_0x392d1c,_0x5df9c0[_0x9e64('0x35')]);return db[_0x9e64('0x22')][_0x9e64('0x36')](_0x392d1c)[_0x9e64('0x1a')](handleEntityNotFound(_0x4a45dd,null))[_0x9e64('0x1a')](respondWithResult(_0x4a45dd,null))['catch'](handleError(_0x4a45dd,null));};exports[_0x9e64('0x37')]=function(_0x40d5d4,_0x9ce725){return db[_0x9e64('0x22')][_0x9e64('0x37')](_0x40d5d4[_0x9e64('0x38')],{})[_0x9e64('0x1a')](respondWithResult(_0x9ce725,0xc9))[_0x9e64('0x2a')](handleError(_0x9ce725,null));};exports[_0x9e64('0x39')]=function(_0xa11a1f,_0x133461){if(_0xa11a1f[_0x9e64('0x38')]['id']){delete _0xa11a1f[_0x9e64('0x38')]['id'];}return db[_0x9e64('0x22')]['find']({'where':{'id':_0xa11a1f['params']['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x133461,null))[_0x9e64('0x1a')](saveUpdates(_0xa11a1f[_0x9e64('0x38')],null))[_0x9e64('0x1a')](respondWithResult(_0x133461,null))[_0x9e64('0x2a')](handleError(_0x133461,null));};exports[_0x9e64('0x1b')]=function(_0x2a9bec,_0x4ffc33){return db['OpenchannelInteraction']['find']({'where':{'id':_0x2a9bec[_0x9e64('0x2c')]['id']}})['then'](handleEntityNotFound(_0x4ffc33,null))[_0x9e64('0x1a')](removeEntity(_0x4ffc33,null))[_0x9e64('0x2a')](handleError(_0x4ffc33,null));};exports[_0x9e64('0x3a')]=function(_0x3dfd07,_0x64eb71){return db[_0x9e64('0x22')][_0x9e64('0x3a')]()[_0x9e64('0x1a')](respondWithResult(_0x64eb71,null))[_0x9e64('0x2a')](handleError(_0x64eb71,null));};exports['addMessage']=function(_0x7400dd,_0x3424a0){return db[_0x9e64('0x3b')]['find']({'where':{'id':_0x7400dd[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x3424a0,null))[_0x9e64('0x1a')](function(_0x53710c){if(_0x53710c){return _0x53710c[_0x9e64('0x3c')](_0x7400dd[_0x9e64('0x38')][_0x9e64('0x3d')],_[_0x9e64('0x3e')](_0x7400dd['body'],['ids','id'])||{});}})[_0x9e64('0x1a')](respondWithResult(_0x3424a0,null))[_0x9e64('0x2a')](handleError(_0x3424a0,null));};exports[_0x9e64('0x3f')]=function(_0x36b694,_0xeacd34){var _0x5cf660={'raw':![],'where':{}};var _0x27b28a={};var _0x516343={'count':0x0,'rows':[]};return db[_0x9e64('0x22')][_0x9e64('0x40')]({'where':{'id':_0x36b694[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0xeacd34,null))[_0x9e64('0x1a')](function(_0xa363c7){if(_0xa363c7){_0x27b28a['model']=_[_0x9e64('0x2e')](db[_0x9e64('0x3b')][_0x9e64('0x23')]);_0x27b28a[_0x9e64('0x29')]=_[_0x9e64('0x2e')](_0x36b694[_0x9e64('0x29')]);_0x27b28a['filters']=_[_0x9e64('0x31')](_0x27b28a[_0x9e64('0x2d')],_0x27b28a[_0x9e64('0x29')]);_0x5cf660[_0x9e64('0x30')]=_['intersection'](_0x27b28a[_0x9e64('0x2d')],qs[_0x9e64('0x32')](_0x36b694[_0x9e64('0x29')]['fields']));_0x5cf660[_0x9e64('0x30')]=_0x5cf660[_0x9e64('0x30')]['length']?_0x5cf660[_0x9e64('0x30')]:_0x27b28a[_0x9e64('0x2d')];if(!_0x36b694['query'][_0x9e64('0x41')]('nolimit')){_0x5cf660[_0x9e64('0x17')]=qs['limit'](_0x36b694[_0x9e64('0x29')]['limit']);_0x5cf660['offset']=qs[_0x9e64('0x15')](_0x36b694[_0x9e64('0x29')][_0x9e64('0x15')]);}_0x5cf660[_0x9e64('0x42')]=qs[_0x9e64('0x43')](_0x36b694[_0x9e64('0x29')]['sort']);_0x5cf660[_0x9e64('0x44')]=qs[_0x9e64('0x2f')](_['pick'](_0x36b694['query'],_0x27b28a[_0x9e64('0x2f')]));_0x5cf660[_0x9e64('0x44')]['OpenchannelInteractionId']=_0xa363c7['id'];if(_0x36b694[_0x9e64('0x29')]['filter']){_0x5cf660[_0x9e64('0x44')]=_['merge'](_0x5cf660[_0x9e64('0x44')],{'$or':_[_0x9e64('0x45')](_0x5cf660['attributes'],function(_0x25f3cb){var _0x54413d={};_0x54413d[_0x25f3cb]={'$like':'%'+_0x36b694[_0x9e64('0x29')]['filter']+'%'};return _0x54413d;})});}if(_0x36b694[_0x9e64('0x29')][_0x9e64('0x46')]){var _0x1638fd=_0x36b694[_0x9e64('0x29')][_0x9e64('0x46')]['split'](',');var _0x343672={};_0x343672[_0x1638fd[0x0]]={'$gte':moment(_0x1638fd[0x1])[_0x9e64('0x47')](_0x9e64('0x48'))};_0x5cf660[_0x9e64('0x44')]=_[_0x9e64('0x49')](_0x5cf660[_0x9e64('0x44')],_0x343672);}_0x5cf660=_[_0x9e64('0x49')]({},_0x5cf660,_0x36b694[_0x9e64('0x35')]);return db['OpenchannelMessage'][_0x9e64('0x18')]({'where':_0x5cf660[_0x9e64('0x44')]})[_0x9e64('0x1a')](function(_0x319ea9){_0x516343[_0x9e64('0x18')]=_0x319ea9;if(_0x36b694['query'][_0x9e64('0x33')]){_0x5cf660['include']=[{'all':!![]}];}return db[_0x9e64('0x3b')][_0x9e64('0x27')](_0x5cf660);})[_0x9e64('0x1a')](function(_0x2200cc){_0x516343[_0x9e64('0x4a')]=_0x2200cc;return _0x516343;});}})[_0x9e64('0x1a')](respondWithFilteredResult(_0xeacd34,_0x5cf660))['catch'](handleError(_0xeacd34,null));};exports[_0x9e64('0x4b')]=function(_0x3fc0e9,_0x4d86e4){return db[_0x9e64('0x22')]['find']({'where':{'id':_0x3fc0e9[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x4d86e4,null))[_0x9e64('0x1a')](function(_0x402975){if(_0x402975){return _0x402975['setTags'](_0x3fc0e9['body']['ids'],_[_0x9e64('0x3e')](_0x3fc0e9['body'],[_0x9e64('0x3d'),'id'])||{})['spread'](function(){return db[_0x9e64('0x4c')][_0x9e64('0x27')]({'attributes':['id',_0x9e64('0x1f'),_0x9e64('0x4d')],'where':{'id':_0x3fc0e9[_0x9e64('0x38')][_0x9e64('0x3d')]}});})[_0x9e64('0x1a')](function(_0x17e7ab){socket[_0x9e64('0x4e')](_0x9e64('0x4f'),{'id':Number(_0x3fc0e9['params']['id']),'tags':_0x17e7ab||[]});return{'id':Number(_0x3fc0e9['params']['id']),'tags':_0x17e7ab||[]};});}})[_0x9e64('0x1a')](respondWithResult(_0x4d86e4,null))[_0x9e64('0x2a')](handleError(_0x4d86e4,null));};exports['removeTags']=function(_0x48bef4,_0x22f4f4){return db[_0x9e64('0x22')]['find']({'where':{'id':_0x48bef4[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x22f4f4,null))[_0x9e64('0x1a')](function(_0x5316a5){if(_0x5316a5){return _0x5316a5[_0x9e64('0x50')](_0x48bef4['query'][_0x9e64('0x3d')]);}})[_0x9e64('0x1a')](respondWithStatusCode(_0x22f4f4,null))[_0x9e64('0x2a')](handleError(_0x22f4f4,null));};exports[_0x9e64('0x51')]=function(_0x473b2b,_0x2632d2){var _0x5b1149=moment()[_0x9e64('0x52')]()[_0x9e64('0x53')]();var _0x12811d=path[_0x9e64('0x54')](config[_0x9e64('0x55')],'server',_0x9e64('0x56'),_0x9e64('0x57'));var _0x7195a1=path[_0x9e64('0x54')](config[_0x9e64('0x55')],_0x9e64('0x58'),_0x9e64('0x56'),_0x9e64('0x59'));var _0x518a71=path[_0x9e64('0x54')](_0x12811d,_0x5b1149);var _0x5ac678=util[_0x9e64('0x47')](_0x9e64('0x5a'),_0x473b2b['params']['id'],_0x5b1149);var _0x46aa93=path['join'](_0x12811d,_0x5ac678);var _0x51b3e3=[];_0x51b3e3[_0x9e64('0x5b')]({'model':db[_0x9e64('0x5c')],'as':_0x9e64('0x5c'),'attributes':['id',_0x9e64('0x5d')],'raw':!![]});_0x51b3e3[_0x9e64('0x5b')]({'model':db[_0x9e64('0x5e')],'as':'Contact','attributes':['id','firstName',_0x9e64('0x5f')],'raw':!![]});if(_0x473b2b[_0x9e64('0x29')]['attachments']){_0x51b3e3[_0x9e64('0x5b')]({'model':db[_0x9e64('0x60')],'as':_0x9e64('0x60'),'raw':!![]});}var _0x58040c=[{'model':db[_0x9e64('0x3b')],'as':_0x9e64('0x61'),'attributes':['id','body',_0x9e64('0x62'),_0x9e64('0x63'),_0x9e64('0x64'),'read'],'include':_0x51b3e3}];_0x58040c[_0x9e64('0x5b')]({'model':db[_0x9e64('0x65')],'as':_0x9e64('0x66'),'attributes':['id',_0x9e64('0x1f')]});_0x58040c[_0x9e64('0x5b')]({'model':db[_0x9e64('0x5c')],'as':_0x9e64('0x67'),'attributes':['id',_0x9e64('0x5d')]});return db[_0x9e64('0x22')]['find']({'where':{'id':_0x473b2b[_0x9e64('0x2c')]['id']},'include':_0x58040c})[_0x9e64('0x1a')](handleEntityNotFound(_0x2632d2,null))[_0x9e64('0x1a')](function(_0x2e5032){if(_0x2e5032){var _0x35d8fc=_0x2e5032[_0x9e64('0x68')]({'plain':!![]});fs[_0x9e64('0x69')](_0x518a71);var _0xe99d40={'channel':_0x9e64('0x6a'),'account':_0x35d8fc[_0x9e64('0x66')][_0x9e64('0x1f')],'agent':_0x35d8fc['Owner']?_0x35d8fc[_0x9e64('0x67')][_0x9e64('0x5d')]:'N.A.','createdAt':moment(_0x35d8fc['createdAt'])[_0x9e64('0x47')](_0x9e64('0x48'))[_0x9e64('0x53')](),'closedAt':_0x35d8fc['closed']?moment(_0x35d8fc[_0x9e64('0x6b')])[_0x9e64('0x47')](_0x9e64('0x48'))['toString']():'','disposition':_0x35d8fc[_0x9e64('0x6c')],'visibility':_0x35d8fc[_0x9e64('0x6d')]?_0x9e64('0x6e'):'Private','messages':_(_0x35d8fc[_0x9e64('0x61')])[_0x9e64('0x6f')]({'secret':![]})[_0x9e64('0x45')](function(_0x527286){if(_0x527286[_0x9e64('0x60')]){var _0x6413ec=path[_0x9e64('0x54')](_0x7195a1,_0x527286[_0x9e64('0x60')][_0x9e64('0x70')]);if(fs[_0x9e64('0x71')](_0x6413ec)){fs['createReadStream'](_0x6413ec)[_0x9e64('0x72')](fs[_0x9e64('0x73')](path[_0x9e64('0x54')](_0x518a71,_0x527286[_0x9e64('0x60')]['basename'])));}}return{'date':moment(_0x527286[_0x9e64('0x62')])['format'](_0x9e64('0x48'))[_0x9e64('0x53')](),'sender':_0x527286['direction']===_0x9e64('0x74')?_0x527286['User']?_0x527286['User'][_0x9e64('0x5d')]:_0x9e64('0x75'):_0x527286[_0x9e64('0x76')]['firstName']+(_0x527286[_0x9e64('0x76')]['lastName']?'\x20'+_0x527286['Contact']['lastName']:''),'body':_0x527286[_0x9e64('0x60')]?_0x527286['Attachment'][_0x9e64('0x70')]:_0x527286[_0x9e64('0x38')],'direction':_0x527286[_0x9e64('0x63')]===_0x9e64('0x74')?'A':'C','secret':_0x527286[_0x9e64('0x64')],'read':_0x527286[_0x9e64('0x77')],'attachment':_0x527286[_0x9e64('0x60')]};})[_0x9e64('0x78')]()};return ejs[_0x9e64('0x79')](path[_0x9e64('0x54')](config[_0x9e64('0x55')],_0x9e64('0x58'),'views',_0x9e64('0x7a')),{'interaction':_0xe99d40})[_0x9e64('0x1a')](function(_0x5ee1e6){var _0x1a1882=path[_0x9e64('0x54')](_0x518a71,_0x9e64('0x7b')+_0x35d8fc['id']+'-'+_0x5b1149+_0x9e64('0x7c'));var _0x3e086a={'path':_0x1a1882,'channel':'Openchannel','interactionId':_0x35d8fc['id']};return pdf[_0x9e64('0x7d')](_0x5ee1e6,_0x3e086a);})[_0x9e64('0x1a')](function(){return new Promise(function(_0x5ab91d,_0x446e69){zipdir(_0x518a71,{'saveTo':_0x46aa93},function(_0x599bd3,_0x24c297){if(_0x599bd3)return _0x446e69(_0x599bd3);return _0x5ab91d(_0x24c297);});})[_0x9e64('0x1a')](function(){return new Promise(function(_0x3df97c,_0xe22301){rimraf(_0x518a71,function(_0x506d69){if(_0x506d69)_0xe22301(_0x506d69);return _0x3df97c();});});})[_0x9e64('0x1a')](function(){return _0x2632d2['download'](_0x46aa93,_0x5ac678,function(_0x46850d){if(_0x46850d){logger[_0x9e64('0x1d')]('Unable\x20to\x20delete\x20zip\x20file',_0x46850d);}else{fs[_0x9e64('0x7e')](_0x46aa93);}});});});}else{return _0x2632d2[_0x9e64('0x1c')](0xc8);}})[_0x9e64('0x2a')](handleError(_0x2632d2,null));};
\ No newline at end of file
index e966b0c..07ced25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fb9=['save','update','remove','then','setDataValue','Users','map','findAll','length','emit','catch','hook','events','OpenchannelMessage'];(function(_0x4b8447,_0x8d0569){var _0x5292d4=function(_0x204913){while(--_0x204913){_0x4b8447['push'](_0x4b8447['shift']());}};_0x5292d4(++_0x8d0569);}(_0x3fb9,0x1b0));var _0x93fb=function(_0x269bdc,_0x567933){_0x269bdc=_0x269bdc-0x0;var _0x647d83=_0x3fb9[_0x269bdc];return _0x647d83;};'use strict';var EventEmitter=require(_0x93fb('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db'][_0x93fb('0x1')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x93fb('0x2'),'afterUpdate':_0x93fb('0x3'),'afterDestroy':_0x93fb('0x4')};function emitEvent(_0x322b5a){return function(_0x2be6e0,_0x1031f1,_0x37fb5d){_0x2be6e0['getUsers']({'attributes':['id'],'raw':!![]})[_0x93fb('0x5')](function(_0x359c33){_0x2be6e0[_0x93fb('0x6')](_0x93fb('0x7'),_0x359c33[_0x93fb('0x8')](function(_0x235a72){return{'id':_0x235a72['id']};}));return OpenchannelMessage[_0x93fb('0x9')]({'where':{'OpenchannelInteractionId':_0x2be6e0['id'],'direction':'in','read':![]},'raw':!![]});})[_0x93fb('0x5')](function(_0x150826){_0x2be6e0[_0x93fb('0x6')]('unreadMessages',_0x150826[_0x93fb('0xa')]);OpenchannelInteractionEvents[_0x93fb('0xb')](_0x322b5a+':'+_0x2be6e0['id'],_0x2be6e0);OpenchannelInteractionEvents[_0x93fb('0xb')](_0x322b5a,_0x2be6e0);_0x37fb5d(null);})[_0x93fb('0xc')](_0x37fb5d(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x93fb('0xd')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x189d=['OpenchannelMessage','setMaxListeners','update','remove','getUsers','then','setDataValue','Users','map','length','emit','catch','hasOwnProperty','hook','exports','events','OpenchannelInteraction','../../mysqldb'];(function(_0x3f3ad5,_0x560022){var _0x1f008e=function(_0x441daa){while(--_0x441daa){_0x3f3ad5['push'](_0x3f3ad5['shift']());}};_0x1f008e(++_0x560022);}(_0x189d,0x12f));var _0xd189=function(_0x372ee1,_0x45c637){_0x372ee1=_0x372ee1-0x0;var _0x31ea06=_0x189d[_0x372ee1];return _0x31ea06;};'use strict';var EventEmitter=require(_0xd189('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0xd189('0x1')];var OpenchannelMessage=require(_0xd189('0x2'))['db'][_0xd189('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xd189('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd189('0x5'),'afterDestroy':_0xd189('0x6')};function emitEvent(_0x49cbbf){return function(_0xe06861,_0x3c8e1e,_0x10665b){_0xe06861[_0xd189('0x7')]({'attributes':['id'],'raw':!![]})[_0xd189('0x8')](function(_0xa98909){_0xe06861[_0xd189('0x9')](_0xd189('0xa'),_0xa98909[_0xd189('0xb')](function(_0xdb4cd0){return{'id':_0xdb4cd0['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0xe06861['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x1b69f3){_0xe06861[_0xd189('0x9')]('unreadMessages',_0x1b69f3[_0xd189('0xc')]);OpenchannelInteractionEvents[_0xd189('0xd')](_0x49cbbf+':'+_0xe06861['id'],_0xe06861);OpenchannelInteractionEvents[_0xd189('0xd')](_0x49cbbf,_0xe06861);_0x10665b(null);})[_0xd189('0xe')](_0x10665b(null));};}for(var e in events){if(events[_0xd189('0xf')](e)){var event=events[e];OpenchannelInteraction[_0xd189('0x10')](e,emitEvent(event));}}module[_0xd189('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 8c0ce2a..5e8cac9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bdc=['../../config/logger','rimraf','../../config/environment','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','lodash'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8bdc,0x11d));var _0xc8bd=function(_0x467eed,_0x35b22f){_0x467eed=_0x467eed-0x0;var _0x2430d0=_0x8bdc[_0x467eed];return _0x2430d0;};'use strict';var _=require(_0xc8bd('0x0'));var util=require('util');var logger=require(_0xc8bd('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc8bd('0x2'));var config=require(_0xc8bd('0x3'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0x2ad837,_0x566424){return _0x2ad837['define'](_0xc8bd('0x4'),attributes,{'tableName':_0xc8bd('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc8bd('0x6'),'collate':_0xc8bd('0x7'),'hooks':{'beforeUpdate':function(_0x1cfef4,_0x1a4a0f,_0x204bd3){if(_0x1cfef4['changed'](_0xc8bd('0x8'))){_0x1cfef4[_0xc8bd('0x9')]=moment()[_0xc8bd('0xa')]('YYYY-MM-DD\x20HH:mm:ss');}_0x204bd3(null,_0x1cfef4);}}});};
\ No newline at end of file
+var _0x29ef=['../../config/environment','./openchannelInteraction.attributes','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x172378,_0x5698e1){var _0x14cbe2=function(_0x101a9a){while(--_0x101a9a){_0x172378['push'](_0x172378['shift']());}};_0x14cbe2(++_0x5698e1);}(_0x29ef,0x196));var _0xf29e=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0x29ef[_0x2aea9e];return _0x430b92;};'use strict';var _=require(_0xf29e('0x0'));var util=require(_0xf29e('0x1'));var logger=require(_0xf29e('0x2'))(_0xf29e('0x3'));var moment=require('moment');var BPromise=require(_0xf29e('0x4'));var rp=require(_0xf29e('0x5'));var fs=require('fs');var path=require(_0xf29e('0x6'));var rimraf=require(_0xf29e('0x7'));var config=require(_0xf29e('0x8'));var attributes=require(_0xf29e('0x9'));module['exports']=function(_0x52df07,_0x36c4f4){return _0x52df07['define']('OpenchannelInteraction',attributes,{'tableName':_0xf29e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf29e('0xb'),'collate':_0xf29e('0xc'),'hooks':{'beforeUpdate':function(_0x556232,_0x98b8b1,_0x2252b3){if(_0x556232[_0xf29e('0xd')](_0xf29e('0xe'))){_0x556232[_0xf29e('0xf')]=moment()[_0xf29e('0x10')](_0xf29e('0x11'));}_0x2252b3(null,_0x556232);}}});};
\ No newline at end of file
index b47a6bd..f1308dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3be=['OpenchannelInteraction','update','body','options','where','limit','UpdateOpenchannelInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x2b0ded,_0x41c51a){var _0x33565c=function(_0x576546){while(--_0x576546){_0x2b0ded['push'](_0x2b0ded['shift']());}};_0x33565c(++_0x41c51a);}(_0xc3be,0x64));var _0xec3b=function(_0x3fbbdf,_0x168c77){_0x3fbbdf=_0x3fbbdf-0x0;var _0x5677df=_0xc3be[_0x3fbbdf];return _0x5677df;};'use strict';var _=require(_0xec3b('0x0'));var util=require(_0xec3b('0x1'));var moment=require(_0xec3b('0x2'));var BPromise=require(_0xec3b('0x3'));var rs=require(_0xec3b('0x4'));var fs=require('fs');var Redis=require(_0xec3b('0x5'));var db=require(_0xec3b('0x6'))['db'];var utils=require(_0xec3b('0x7'));var logger=require(_0xec3b('0x8'))(_0xec3b('0x9'));var config=require(_0xec3b('0xa'));var jayson=require(_0xec3b('0xb'));var client=jayson['client'][_0xec3b('0xc')]({'port':0x232a});config['redis']=_[_0xec3b('0xd')](config['redis'],{'host':_0xec3b('0xe'),'port':0x18eb});var socket=require(_0xec3b('0xf'))(new Redis(config[_0xec3b('0x10')]));require(_0xec3b('0x11'))[_0xec3b('0x12')](socket);function respondWithRpcPromise(_0x3dcdad,_0x371943,_0x3be263){return new BPromise(function(_0x509aa5,_0x2153be){return client[_0xec3b('0x13')](_0x3dcdad,_0x3be263)[_0xec3b('0x14')](function(_0x4c73d1){logger[_0xec3b('0x15')](_0xec3b('0x16'),_0x371943,_0xec3b('0x17'));logger[_0xec3b('0x18')](_0xec3b('0x19'),_0x371943,_0xec3b('0x17'),JSON[_0xec3b('0x1a')](_0x4c73d1));if(_0x4c73d1['error']){if(_0x4c73d1[_0xec3b('0x1b')][_0xec3b('0x1c')]===0x1f4){logger[_0xec3b('0x1b')](_0xec3b('0x16'),_0x371943,_0x4c73d1[_0xec3b('0x1b')][_0xec3b('0x1d')]);return _0x2153be(_0x4c73d1['error'][_0xec3b('0x1d')]);}logger[_0xec3b('0x1b')](_0xec3b('0x16'),_0x371943,_0x4c73d1['error']['message']);return _0x509aa5(_0x4c73d1[_0xec3b('0x1b')][_0xec3b('0x1d')]);}else{logger[_0xec3b('0x15')](_0xec3b('0x16'),_0x371943,_0xec3b('0x17'));_0x509aa5(_0x4c73d1[_0xec3b('0x1e')][_0xec3b('0x1d')]);}})[_0xec3b('0x1f')](function(_0x583a35){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x371943,_0x583a35);_0x2153be(_0x583a35);});});}exports['UpdateOpenchannelInteraction']=function(_0x5c3439){var _0x18ad2b=this;return new Promise(function(_0x32b330,_0x419f80){return db[_0xec3b('0x20')][_0xec3b('0x21')](_0x5c3439[_0xec3b('0x22')],{'raw':_0x5c3439[_0xec3b('0x23')]?_0x5c3439[_0xec3b('0x23')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c3439[_0xec3b('0x23')]?_0x5c3439['options'][_0xec3b('0x24')]||null:null,'attributes':_0x5c3439[_0xec3b('0x23')]?_0x5c3439[_0xec3b('0x23')]['attributes']||null:null,'limit':_0x5c3439[_0xec3b('0x23')]?_0x5c3439[_0xec3b('0x23')][_0xec3b('0x25')]||null:null})[_0xec3b('0x14')](function(_0x49c122){logger[_0xec3b('0x15')](_0xec3b('0x26'),_0x5c3439);logger['debug'](_0xec3b('0x26'),_0x5c3439,JSON[_0xec3b('0x1a')](_0x49c122));_0x32b330(_0x49c122);})[_0xec3b('0x1f')](function(_0x2852eb){logger[_0xec3b('0x1b')](_0xec3b('0x26'),_0x2852eb[_0xec3b('0x1d')],_0x5c3439);_0x419f80(_0x18ad2b[_0xec3b('0x1b')](0x1f4,_0x2852eb[_0xec3b('0x1d')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x408eed){return new Promise(function(_0xd42e71,_0x552472){return db['OpenchannelInteraction'][_0xec3b('0x27')]({'where':_0x408eed[_0xec3b('0x23')]?_0x408eed[_0xec3b('0x23')][_0xec3b('0x24')]||null:null})['then'](function(_0x566575){if(_0x566575){return _0x566575[_0xec3b('0x28')](_0x408eed[_0xec3b('0x22')][_0xec3b('0x29')],_[_0xec3b('0x2a')](_0x408eed[_0xec3b('0x22')],[_0xec3b('0x29'),'id'])||{});}})['spread'](function(_0x53ed85){logger[_0xec3b('0x15')](_0xec3b('0x2b'),_0x408eed);logger['debug'](_0xec3b('0x2b'),_0x408eed,JSON['stringify'](_0x53ed85));_0xd42e71(_0x53ed85);})[_0xec3b('0x1f')](function(_0x3abc01){logger[_0xec3b('0x1b')](_0xec3b('0x2b'),_0x3abc01[_0xec3b('0x1d')],_0x408eed);_0x552472(_this['error'](0x1f4,_0x3abc01[_0xec3b('0x1d')]));});});};
\ No newline at end of file
+var _0xf218=['./openchannelInteraction.socket','register','then','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','OpenchannelInteraction','update','body','options','raw','attributes','limit','UpdateOpenchannelInteraction','debug','stringify','AddTagsToOpenchannelInteraction','where','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xf218,0x14a));var _0x8f21=function(_0x29ecbc,_0x2929d9){_0x29ecbc=_0x29ecbc-0x0;var _0x5709b0=_0xf218[_0x29ecbc];return _0x5709b0;};'use strict';var _=require(_0x8f21('0x0'));var util=require(_0x8f21('0x1'));var moment=require('moment');var BPromise=require(_0x8f21('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8f21('0x3'));var db=require(_0x8f21('0x4'))['db'];var utils=require(_0x8f21('0x5'));var logger=require('../../config/logger')(_0x8f21('0x6'));var config=require('../../config/environment');var jayson=require(_0x8f21('0x7'));var client=jayson[_0x8f21('0x8')][_0x8f21('0x9')]({'port':0x232a});config[_0x8f21('0xa')]=_[_0x8f21('0xb')](config[_0x8f21('0xa')],{'host':_0x8f21('0xc'),'port':0x18eb});var socket=require(_0x8f21('0xd'))(new Redis(config[_0x8f21('0xa')]));require(_0x8f21('0xe'))[_0x8f21('0xf')](socket);function respondWithRpcPromise(_0x320f96,_0x23a2ca,_0x303c76){return new BPromise(function(_0x3d60e0,_0x2bc445){return client['request'](_0x320f96,_0x303c76)[_0x8f21('0x10')](function(_0x4623f7){logger['info'](_0x8f21('0x11'),_0x23a2ca,_0x8f21('0x12'));logger['debug'](_0x8f21('0x13'),_0x23a2ca,_0x8f21('0x12'),JSON['stringify'](_0x4623f7));if(_0x4623f7[_0x8f21('0x14')]){if(_0x4623f7[_0x8f21('0x14')][_0x8f21('0x15')]===0x1f4){logger[_0x8f21('0x14')](_0x8f21('0x11'),_0x23a2ca,_0x4623f7[_0x8f21('0x14')]['message']);return _0x2bc445(_0x4623f7['error'][_0x8f21('0x16')]);}logger['error'](_0x8f21('0x11'),_0x23a2ca,_0x4623f7['error'][_0x8f21('0x16')]);return _0x3d60e0(_0x4623f7[_0x8f21('0x14')][_0x8f21('0x16')]);}else{logger[_0x8f21('0x17')](_0x8f21('0x11'),_0x23a2ca,'request\x20sent');_0x3d60e0(_0x4623f7[_0x8f21('0x18')][_0x8f21('0x16')]);}})[_0x8f21('0x19')](function(_0x4aab56){logger[_0x8f21('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0x23a2ca,_0x4aab56);_0x2bc445(_0x4aab56);});});}exports['UpdateOpenchannelInteraction']=function(_0x1ac2db){var _0x54c3f7=this;return new Promise(function(_0x14d26a,_0x5f1819){return db[_0x8f21('0x1a')][_0x8f21('0x1b')](_0x1ac2db[_0x8f21('0x1c')],{'raw':_0x1ac2db[_0x8f21('0x1d')]?_0x1ac2db[_0x8f21('0x1d')][_0x8f21('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ac2db[_0x8f21('0x1d')]?_0x1ac2db[_0x8f21('0x1d')]['where']||null:null,'attributes':_0x1ac2db['options']?_0x1ac2db['options'][_0x8f21('0x1f')]||null:null,'limit':_0x1ac2db[_0x8f21('0x1d')]?_0x1ac2db[_0x8f21('0x1d')][_0x8f21('0x20')]||null:null})[_0x8f21('0x10')](function(_0x47f855){logger[_0x8f21('0x17')](_0x8f21('0x21'),_0x1ac2db);logger[_0x8f21('0x22')](_0x8f21('0x21'),_0x1ac2db,JSON[_0x8f21('0x23')](_0x47f855));_0x14d26a(_0x47f855);})[_0x8f21('0x19')](function(_0x405a40){logger[_0x8f21('0x14')](_0x8f21('0x21'),_0x405a40[_0x8f21('0x16')],_0x1ac2db);_0x5f1819(_0x54c3f7['error'](0x1f4,_0x405a40['message']));});});};exports[_0x8f21('0x24')]=function(_0x4ab64f){return new Promise(function(_0x444541,_0x113fb7){return db['OpenchannelInteraction']['find']({'where':_0x4ab64f['options']?_0x4ab64f['options'][_0x8f21('0x25')]||null:null})[_0x8f21('0x10')](function(_0x43661a){if(_0x43661a){return _0x43661a[_0x8f21('0x26')](_0x4ab64f['body'][_0x8f21('0x27')],_[_0x8f21('0x28')](_0x4ab64f[_0x8f21('0x1c')],['ids','id'])||{});}})[_0x8f21('0x29')](function(_0x18b37f){logger[_0x8f21('0x17')](_0x8f21('0x2a'),_0x4ab64f);logger[_0x8f21('0x22')](_0x8f21('0x2a'),_0x4ab64f,JSON['stringify'](_0x18b37f));_0x444541(_0x18b37f);})[_0x8f21('0x19')](function(_0x19df7e){logger[_0x8f21('0x14')](_0x8f21('0x2a'),_0x19df7e['message'],_0x4ab64f);_0x113fb7(_this[_0x8f21('0x14')](0x1f4,_0x19df7e[_0x8f21('0x16')]));});});};
\ No newline at end of file
index e2001c3..a1ea5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa86d=['update','emit','register','save','remove'];(function(_0x527379,_0x3ec58d){var _0x219af0=function(_0xf7144){while(--_0xf7144){_0x527379['push'](_0x527379['shift']());}};_0x219af0(++_0x3ec58d);}(_0xa86d,0x166));var _0xda86=function(_0x3d7eaa,_0x13c085){_0x3d7eaa=_0x3d7eaa-0x0;var _0x41255e=_0xa86d[_0x3d7eaa];return _0x41255e;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0xda86('0x0'),_0xda86('0x1'),_0xda86('0x2')];function createListener(_0xf6efa9,_0x23673d){return function(_0x4f619e){_0x23673d[_0xda86('0x3')](_0xf6efa9,_0x4f619e);};}function removeListener(_0x2a4d07,_0x2dfaa8){return function(){OpenchannelInteractionEvents['removeListener'](_0x2a4d07,_0x2dfaa8);};}exports[_0xda86('0x4')]=function(_0x4a117e){for(var _0x435e38=0x0,_0x1c2d83=events['length'];_0x435e38<_0x1c2d83;_0x435e38++){var _0x398e4d=events[_0x435e38];var _0x323789=createListener('openchannelInteraction:'+_0x398e4d,_0x4a117e);OpenchannelInteractionEvents['on'](_0x398e4d,_0x323789);}};
\ No newline at end of file
+var _0x52fd=['openchannelInteraction:','./openchannelInteraction.events','remove','update','emit','removeListener','register'];(function(_0xb41cf,_0x45b86b){var _0x1781e3=function(_0x321758){while(--_0x321758){_0xb41cf['push'](_0xb41cf['shift']());}};_0x1781e3(++_0x45b86b);}(_0x52fd,0x1c8));var _0xd52f=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x52fd[_0xfae23b];return _0x200640;};'use strict';var OpenchannelInteractionEvents=require(_0xd52f('0x0'));var events=['save',_0xd52f('0x1'),_0xd52f('0x2')];function createListener(_0x4583b1,_0xaf9691){return function(_0x13b01c){_0xaf9691[_0xd52f('0x3')](_0x4583b1,_0x13b01c);};}function removeListener(_0x81d839,_0x2638ed){return function(){OpenchannelInteractionEvents[_0xd52f('0x4')](_0x81d839,_0x2638ed);};}exports[_0xd52f('0x5')]=function(_0x5fdf95){for(var _0x726434=0x0,_0x256d0b=events['length'];_0x726434<_0x256d0b;_0x726434++){var _0x305c94=events[_0x726434];var _0x567e40=createListener(_0xd52f('0x6')+_0x305c94,_0x5fdf95);OpenchannelInteractionEvents['on'](_0x305c94,_0x567e40);}};
\ No newline at end of file
index 4c08ac5..1f36019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['index','get','/describe','/:id','show','tracked','openchannel','create','put','update','accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelMessage.controller','isAuthenticated'];(function(_0x39ac6e,_0x3d9e6d){var _0x789fea=function(_0x4e6d42){while(--_0x4e6d42){_0x39ac6e['push'](_0x39ac6e['shift']());}};_0x789fea(++_0x3d9e6d);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
+var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','create','update','put','/:id/accept','accept','/:id/reject','exports','multer','util','path','express','Router'];(function(_0x15bb92,_0x250a1b){var _0x35b094=function(_0x2875b3){while(--_0x2875b3){_0x15bb92['push'](_0x15bb92['shift']());}};_0x35b094(++_0x250a1b);}(_0xe706,0xa3));var _0x6e70=function(_0x1eebe4,_0x27f7b4){_0x1eebe4=_0x1eebe4-0x0;var _0x46f639=_0xe706[_0x1eebe4];return _0x46f639;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),interaction[_0x6e70('0x12')](_0x6e70('0x13'),_0x6e70('0x14')),controller[_0x6e70('0x15')]);router['put']('/:id',auth[_0x6e70('0xb')](),controller[_0x6e70('0x16')]);router[_0x6e70('0x17')](_0x6e70('0x18'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x19')]);router[_0x6e70('0x17')](_0x6e70('0x1a'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x6e70('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index 4cd6dba..2e42ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x117c=['ENUM','out','DATE','STRING','TEXT','medium'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x117c,0x71));var _0xc117=function(_0x194d61,_0x2a1696){_0x194d61=_0x194d61-0x0;var _0x16c05b=_0x117c[_0x194d61];return _0x16c05b;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0xc117('0x0')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xc117('0x1')]('in',_0xc117('0x2')),'defaultValue':_0xc117('0x2'),'allowNull':![]},'readAt':{'type':Sequelize[_0xc117('0x3')]},'providerName':{'type':Sequelize[_0xc117('0x4')]},'providerResponse':{'type':Sequelize[_0xc117('0x5')]}};
\ No newline at end of file
+var _0x00ea=['TEXT','BOOLEAN','ENUM','out','DATE','exports'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x00ea,0x19d));var _0xa00e=function(_0x7d85ec,_0x122ef1){_0x7d85ec=_0x7d85ec-0x0;var _0x551f5e=_0x00ea[_0x7d85ec];return _0x551f5e;};'use strict';var Sequelize=require('sequelize');module[_0xa00e('0x0')]={'body':{'type':Sequelize[_0xa00e('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xa00e('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0xa00e('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xa00e('0x3')]('in',_0xa00e('0x4')),'defaultValue':_0xa00e('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0xa00e('0x5')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xa00e('0x1')]}};
\ No newline at end of file
index 6def80d..563ef48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f9f=['contact','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','Sequelize','email','rejectmessage','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','end','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','order','sort','where','filter','merge','rows','show','params','keys','OpenchannelMessage','rawAttributes','includeAll','include','options','create','body','find','describe','../../config/logger','openchannel-interactions','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT'];(function(_0x173e2a,_0x547f99){var _0x4ac17f=function(_0x44602c){while(--_0x44602c){_0x173e2a['push'](_0x173e2a['shift']());}};_0x4ac17f(++_0x547f99);}(_0x6f9f,0x11d));var _0xf6f9=function(_0x1cc79a,_0x205fc5){_0x1cc79a=_0x1cc79a-0x0;var _0x50f331=_0x6f9f[_0x1cc79a];return _0x50f331;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6f9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf6f9('0x1'));var rp=require(_0xf6f9('0x2'));var moment=require(_0xf6f9('0x3'));var BPromise=require(_0xf6f9('0x4'));var Mustache=require(_0xf6f9('0x5'));var util=require(_0xf6f9('0x6'));var path=require(_0xf6f9('0x7'));var sox=require(_0xf6f9('0x8'));var csv=require(_0xf6f9('0x9'));var ejs=require(_0xf6f9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6f9('0xb'));var squel=require('squel');var crypto=require(_0xf6f9('0xc'));var jsforce=require(_0xf6f9('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf6f9('0x9'));var querystring=require('querystring');var Papa=require(_0xf6f9('0xe'));var Redis=require(_0xf6f9('0xf'));var authService=require(_0xf6f9('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf6f9('0x11'));var logger=require('../../config/logger')(_0xf6f9('0x12'));var utils=require(_0xf6f9('0x13'));var config=require(_0xf6f9('0x14'));var licenseUtil=require(_0xf6f9('0x15'));var db=require(_0xf6f9('0x16'))['db'];config['redis']=_[_0xf6f9('0x17')](config[_0xf6f9('0x18')],{'host':_0xf6f9('0x19'),'port':0x18eb});var socket=require(_0xf6f9('0x1a'))(new Redis(config[_0xf6f9('0x18')]));require(_0xf6f9('0x1b'))[_0xf6f9('0x1c')](socket);var jayson=require(_0xf6f9('0x1d'));var client=jayson[_0xf6f9('0x1e')][_0xf6f9('0x1f')]({'port':0x232c});var client9002=jayson[_0xf6f9('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x553973,_0x1a60a7,_0x10c41f,_0x531329){return new BPromise(function(_0x5cd53a,_0x474c43){var _0x4fba94=_0x531329||client;return _0x4fba94[_0xf6f9('0x20')](_0x553973,_0x10c41f)['then'](function(_0xa748ed){logger[_0xf6f9('0x21')](_0xf6f9('0x22'),_0x1a60a7,'request\x20sent');logger[_0xf6f9('0x23')](_0xf6f9('0x24'),_0x1a60a7,_0xf6f9('0x25'),JSON[_0xf6f9('0x26')](_0xa748ed));if(_0xa748ed[_0xf6f9('0x27')]){if(_0xa748ed[_0xf6f9('0x27')]['code']===0x1f4){logger[_0xf6f9('0x27')](_0xf6f9('0x22'),_0x1a60a7,_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);return _0x474c43(_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);}logger[_0xf6f9('0x27')](_0xf6f9('0x22'),_0x1a60a7,_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);return _0x5cd53a(_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);}else{logger[_0xf6f9('0x21')](_0xf6f9('0x22'),_0x1a60a7,_0xf6f9('0x25'));_0x5cd53a(_0xa748ed[_0xf6f9('0x29')][_0xf6f9('0x28')]);}})[_0xf6f9('0x2a')](function(_0x240f43){logger[_0xf6f9('0x27')](_0xf6f9('0x22'),_0x1a60a7,_0x240f43);_0x474c43(_0x240f43);});});}function respondWithStatusCode(_0x5a37ba,_0x14a25c){_0x14a25c=_0x14a25c||0xcc;return function(_0x4c2099){if(_0x4c2099){return _0x5a37ba[_0xf6f9('0x2b')](_0x14a25c);}return _0x5a37ba[_0xf6f9('0x2c')](_0x14a25c)['end']();};}function respondWithResult(_0x85a924,_0x492f5f){_0x492f5f=_0x492f5f||0xc8;return function(_0x5cd101){if(_0x5cd101){return _0x85a924['status'](_0x492f5f)[_0xf6f9('0x2d')](_0x5cd101);}};}function respondWithFilteredResult(_0x57fe90,_0x1b273c){return function(_0x10d6da){if(_0x10d6da){var _0x5bd385=typeof _0x1b273c[_0xf6f9('0x2e')]===_0xf6f9('0x2f')&&typeof _0x1b273c[_0xf6f9('0x30')]==='undefined';var _0x104744=_0x10d6da['count'];var _0x53facc=_0x5bd385?0x0:_0x1b273c['offset'];var _0x5c99f4=_0x5bd385?_0x10d6da[_0xf6f9('0x31')]:_0x1b273c[_0xf6f9('0x2e')]+_0x1b273c[_0xf6f9('0x30')];var _0x1fb821;if(_0x5c99f4>=_0x104744){_0x5c99f4=_0x104744;_0x1fb821=0xc8;}else{_0x1fb821=0xce;}_0x57fe90[_0xf6f9('0x2c')](_0x1fb821);return _0x57fe90[_0xf6f9('0x32')]('Content-Range',_0x53facc+'-'+_0x5c99f4+'/'+_0x104744)[_0xf6f9('0x2d')](_0x10d6da);}return null;};}function patchUpdates(_0x567759){return function(_0x110ad0){try{jsonpatch['apply'](_0x110ad0,_0x567759,!![]);}catch(_0x4673e3){return BPromise[_0xf6f9('0x33')](_0x4673e3);}return _0x110ad0[_0xf6f9('0x34')]();};}function saveUpdates(_0x4740af,_0x297898){return function(_0x273f47){if(_0x273f47){return _0x273f47[_0xf6f9('0x35')](_0x4740af)[_0xf6f9('0x36')](function(_0x3d8a16){return _0x3d8a16;});}return null;};}function removeEntity(_0x4b567e,_0x43777c){return function(_0x584aa2){if(_0x584aa2){return _0x584aa2[_0xf6f9('0x37')]()[_0xf6f9('0x36')](function(){_0x4b567e['status'](0xcc)[_0xf6f9('0x38')]();});}};}function handleEntityNotFound(_0x53d3d0,_0x16f7eb){return function(_0x3f83a9){if(!_0x3f83a9){_0x53d3d0[_0xf6f9('0x2b')](0x194);}return _0x3f83a9;};}function handleError(_0x2f34f0,_0x16fdb1){_0x16fdb1=_0x16fdb1||0x1f4;return function(_0x1a335e){logger[_0xf6f9('0x27')](_0x1a335e[_0xf6f9('0x39')]);if(_0x1a335e[_0xf6f9('0x3a')]){delete _0x1a335e[_0xf6f9('0x3a')];}_0x2f34f0[_0xf6f9('0x2c')](_0x16fdb1)[_0xf6f9('0x3b')](_0x1a335e);};}exports[_0xf6f9('0x3c')]=function(_0x14b35f,_0x55c2ff){var _0x5f533f={},_0x3ee662={},_0x4a70c4={'count':0x0,'rows':[]};var _0x4b7b35=_[_0xf6f9('0x3d')](db['OpenchannelMessage']['rawAttributes'],function(_0x176e96){return{'name':_0x176e96[_0xf6f9('0x3e')],'type':_0x176e96[_0xf6f9('0x3f')][_0xf6f9('0x40')]};});_0x3ee662[_0xf6f9('0x41')]=_[_0xf6f9('0x3d')](_0x4b7b35,_0xf6f9('0x3a'));_0x3ee662['query']=_['keys'](_0x14b35f[_0xf6f9('0x42')]);_0x3ee662[_0xf6f9('0x43')]=_[_0xf6f9('0x44')](_0x3ee662['model'],_0x3ee662['query']);_0x5f533f['attributes']=_['intersection'](_0x3ee662[_0xf6f9('0x41')],qs['fields'](_0x14b35f['query'][_0xf6f9('0x45')]));_0x5f533f[_0xf6f9('0x46')]=_0x5f533f[_0xf6f9('0x46')][_0xf6f9('0x47')]?_0x5f533f['attributes']:_0x3ee662[_0xf6f9('0x41')];if(!_0x14b35f[_0xf6f9('0x42')]['hasOwnProperty']('nolimit')){_0x5f533f[_0xf6f9('0x30')]=qs[_0xf6f9('0x30')](_0x14b35f['query']['limit']);_0x5f533f[_0xf6f9('0x2e')]=qs['offset'](_0x14b35f['query']['offset']);}_0x5f533f[_0xf6f9('0x48')]=qs[_0xf6f9('0x49')](_0x14b35f[_0xf6f9('0x42')][_0xf6f9('0x49')]);_0x5f533f[_0xf6f9('0x4a')]=qs['filters'](_['pick'](_0x14b35f['query'],_0x3ee662[_0xf6f9('0x43')]),_0x4b7b35);if(_0x14b35f[_0xf6f9('0x42')][_0xf6f9('0x4b')]){_0x5f533f['where']=_[_0xf6f9('0x4c')](_0x5f533f[_0xf6f9('0x4a')],{'$or':_[_0xf6f9('0x3d')](_0x4b7b35,function(_0x17a252){if(_0x17a252[_0xf6f9('0x3f')]!=='VIRTUAL'){var _0x297899={};_0x297899[_0x17a252['name']]={'$like':'%'+_0x14b35f[_0xf6f9('0x42')]['filter']+'%'};return _0x297899;}})});}_0x5f533f=_[_0xf6f9('0x4c')]({},_0x5f533f,_0x14b35f['options']);var _0xa0728e={'where':_0x5f533f[_0xf6f9('0x4a')]};return db['OpenchannelMessage']['count'](_0xa0728e)[_0xf6f9('0x36')](function(_0x2d944a){_0x4a70c4['count']=_0x2d944a;if(_0x14b35f[_0xf6f9('0x42')]['includeAll']){_0x5f533f['include']=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0x5f533f);})['then'](function(_0x22a2b9){_0x4a70c4[_0xf6f9('0x4d')]=_0x22a2b9;return _0x4a70c4;})['then'](respondWithFilteredResult(_0x55c2ff,_0x5f533f))['catch'](handleError(_0x55c2ff,null));};exports[_0xf6f9('0x4e')]=function(_0x9938eb,_0x20bfa4){var _0x4a6626={'raw':!![],'where':{'id':_0x9938eb[_0xf6f9('0x4f')]['id']}},_0x474aa8={};_0x474aa8[_0xf6f9('0x41')]=_[_0xf6f9('0x50')](db[_0xf6f9('0x51')][_0xf6f9('0x52')]);_0x474aa8[_0xf6f9('0x42')]=_['keys'](_0x9938eb[_0xf6f9('0x42')]);_0x474aa8[_0xf6f9('0x43')]=_[_0xf6f9('0x44')](_0x474aa8['model'],_0x474aa8['query']);_0x4a6626['attributes']=_['intersection'](_0x474aa8[_0xf6f9('0x41')],qs[_0xf6f9('0x45')](_0x9938eb['query'][_0xf6f9('0x45')]));_0x4a6626['attributes']=_0x4a6626[_0xf6f9('0x46')][_0xf6f9('0x47')]?_0x4a6626[_0xf6f9('0x46')]:_0x474aa8[_0xf6f9('0x41')];if(_0x9938eb['query'][_0xf6f9('0x53')]){_0x4a6626[_0xf6f9('0x54')]=[{'all':!![]}];}_0x4a6626=_[_0xf6f9('0x4c')]({},_0x4a6626,_0x9938eb[_0xf6f9('0x55')]);return db[_0xf6f9('0x51')]['find'](_0x4a6626)[_0xf6f9('0x36')](handleEntityNotFound(_0x20bfa4,null))[_0xf6f9('0x36')](respondWithResult(_0x20bfa4,null))[_0xf6f9('0x2a')](handleError(_0x20bfa4,null));};exports[_0xf6f9('0x56')]=function(_0x5bdc6b,_0x45ce1a){return db[_0xf6f9('0x51')]['create'](_0x5bdc6b[_0xf6f9('0x57')],{})[_0xf6f9('0x36')](respondWithResult(_0x45ce1a,0xc9))['catch'](handleError(_0x45ce1a,null));};exports[_0xf6f9('0x35')]=function(_0x515af7,_0x3426e5){if(_0x515af7['body']['id']){delete _0x515af7[_0xf6f9('0x57')]['id'];}return db[_0xf6f9('0x51')][_0xf6f9('0x58')]({'where':{'id':_0x515af7['params']['id']}})[_0xf6f9('0x36')](handleEntityNotFound(_0x3426e5,null))[_0xf6f9('0x36')](saveUpdates(_0x515af7['body'],null))[_0xf6f9('0x36')](respondWithResult(_0x3426e5,null))[_0xf6f9('0x2a')](handleError(_0x3426e5,null));};exports[_0xf6f9('0x37')]=function(_0x4e2185,_0x40fcad){return db[_0xf6f9('0x51')][_0xf6f9('0x58')]({'where':{'id':_0x4e2185[_0xf6f9('0x4f')]['id']}})[_0xf6f9('0x36')](handleEntityNotFound(_0x40fcad,null))['then'](removeEntity(_0x40fcad,null))[_0xf6f9('0x2a')](handleError(_0x40fcad,null));};exports['describe']=function(_0x1ff663,_0x9a1834){return db[_0xf6f9('0x51')][_0xf6f9('0x59')]()[_0xf6f9('0x36')](respondWithResult(_0x9a1834,null))['catch'](handleError(_0x9a1834,null));};var interaction_log=require(_0xf6f9('0x5a'))(_0xf6f9('0x5b'));exports[_0xf6f9('0x5c')]=function(_0x51fe0c,_0x5e345b,_0x2ef1ca){var _0x35134b={'agent':{},'channel':_0xf6f9('0x5d')};if(_0x51fe0c[_0xf6f9('0x57')]['id']){delete _0x51fe0c[_0xf6f9('0x57')]['id'];}_0x51fe0c['body'][_0xf6f9('0x5e')]=!![];_0x51fe0c[_0xf6f9('0x57')][_0xf6f9('0x5f')]=moment()[_0xf6f9('0x60')](_0xf6f9('0x61'));_0x51fe0c[_0xf6f9('0x57')]['UserId']=_0x51fe0c[_0xf6f9('0x57')][_0xf6f9('0x62')]||_0x51fe0c['user']['id'];_0x35134b[_0xf6f9('0x63')]['id']=_0x51fe0c[_0xf6f9('0x57')][_0xf6f9('0x62')];return db['OpenchannelMessage'][_0xf6f9('0x58')]({'where':{'id':_0x51fe0c[_0xf6f9('0x4f')]['id'],'UserId':null}})[_0xf6f9('0x36')](handleEntityNotFound(_0x5e345b,null))[_0xf6f9('0x36')](saveUpdates(_0x51fe0c[_0xf6f9('0x57')],null))['then'](function(_0x5c5e7){if(_0x5c5e7){_0x35134b[_0xf6f9('0x28')]=_0x5c5e7['get']({'plain':!![]});return db[_0xf6f9('0x64')][_0xf6f9('0x58')]({'where':{'id':_0x5c5e7[_0xf6f9('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x5e345b,null))['then'](function(_0x3a18a8){if(_0x3a18a8){return _0x3a18a8[_0xf6f9('0x35')]({'UserId':_0x51fe0c['body'][_0xf6f9('0x62')],'read1stAt':_[_0xf6f9('0x66')](_0x3a18a8[_0xf6f9('0x67')])?moment()[_0xf6f9('0x60')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf6f9('0x36')](function(_0x16dc02){if(_0x16dc02){_0x35134b[_0xf6f9('0x68')]=_0x16dc02[_0xf6f9('0x69')]({'plain':!![]});interaction_log[_0xf6f9('0x21')](_0xf6f9('0x6a'),_0x51fe0c[_0xf6f9('0x6b')]['id'],_0x51fe0c['user'][_0xf6f9('0x3a')],_0x51fe0c['user'][_0xf6f9('0x6c')],_0x35134b[_0xf6f9('0x68')]['id'],_0x51fe0c[_0xf6f9('0x57')]?JSON[_0xf6f9('0x26')](_0x51fe0c[_0xf6f9('0x57')]):_0xf6f9('0x6d'));return respondWithRpcPromise(_0xf6f9('0x6e'),_0xf6f9('0x6f'),_0x35134b);}return null;})['then'](function(_0x24f2eb){var _0x4f165b=_0xf6f9('0x70')+_0x24f2eb[_0xf6f9('0x28')][_0xf6f9('0x71')];return db[_0xf6f9('0x72')][_0xf6f9('0x42')](_0x4f165b,{'type':db['Sequelize'][_0xf6f9('0x73')][_0xf6f9('0x74')],'raw':!![]})[_0xf6f9('0x36')](function(_0x441fa4){return _0x441fa4;});})[_0xf6f9('0x36')](function(_0x41a035){if(_0x41a035){_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x75')]=_0x41a035[0x0];if(!_0x51fe0c[_0xf6f9('0x57')]['UserId'])return;return db[_0xf6f9('0x76')][_0xf6f9('0x58')]({'where':{'id':_0x51fe0c[_0xf6f9('0x57')]['UserId'],'role':_0xf6f9('0x63')},'attributes':['id',_0xf6f9('0x3a'),_0xf6f9('0x77'),'email',_0xf6f9('0x78')],'raw':!![]});}return null;})['then'](function(_0x36a0c0){if(!_0x36a0c0)return null;_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x63')]=_0x36a0c0;return _0x35134b;})[_0xf6f9('0x36')](function(_0x5b64ec){if(_0x5b64ec){if(_0x51fe0c['body'][_0xf6f9('0x79')]){_0x35134b['message'][_0xf6f9('0x7a')]=util[_0xf6f9('0x60')](_0xf6f9('0x7b'),_0x51fe0c[_0xf6f9('0x6b')][_0xf6f9('0x3a')]);_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x7c')]=_0x35134b[_0xf6f9('0x7c')];_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x7d')]=_0x35134b[_0xf6f9('0x7c')];_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x7e')]=_0xf6f9('0x5c');return respondWithRpcPromise(_0xf6f9('0x7f'),_0xf6f9('0x7f'),{'event':_0xf6f9('0x80'),'message':_0x35134b[_0xf6f9('0x28')]},client9002)[_0xf6f9('0x36')](function(){return _0x35134b;});}return _0x35134b;}return null;})[_0xf6f9('0x36')](respondWithResult(_0x5e345b,null))[_0xf6f9('0x2a')](handleError(_0x5e345b,null));};var interaction_log=require(_0xf6f9('0x5a'))(_0xf6f9('0x5b'));exports[_0xf6f9('0x33')]=function(_0x17b637,_0x3066f2,_0x11dae7){var _0x3457b6={'agent':{},'channel':_0xf6f9('0x5d')};if(_0x17b637[_0xf6f9('0x57')]['id']){delete _0x17b637[_0xf6f9('0x57')]['id'];}_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')]=_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')]||_0x17b637[_0xf6f9('0x6b')]['id'];_0x3457b6['agent']['id']=_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')];return db[_0xf6f9('0x51')][_0xf6f9('0x58')]({'where':{'id':_0x17b637[_0xf6f9('0x4f')]['id'],'UserId':null}})[_0xf6f9('0x36')](handleEntityNotFound(_0x3066f2,null))[_0xf6f9('0x36')](function(_0x56d138){if(_0x56d138){_0x3457b6[_0xf6f9('0x28')]=_0x56d138[_0xf6f9('0x69')]({'plain':!![]});return db[_0xf6f9('0x64')][_0xf6f9('0x58')]({'where':{'id':_0x56d138[_0xf6f9('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x3066f2,null))[_0xf6f9('0x36')](function(_0x37d1bc){if(_0x37d1bc){_0x3457b6['interaction']=_0x37d1bc[_0xf6f9('0x69')]({'plain':!![]});interaction_log[_0xf6f9('0x21')](_0xf6f9('0x81'),_0x17b637[_0xf6f9('0x6b')]['id'],_0x17b637['user'][_0xf6f9('0x3a')],_0x17b637[_0xf6f9('0x6b')][_0xf6f9('0x6c')],_0x3457b6[_0xf6f9('0x68')]['id'],_0x17b637[_0xf6f9('0x57')]?JSON[_0xf6f9('0x26')](_0x17b637[_0xf6f9('0x57')]):'null');return respondWithRpcPromise('RejectMessage',_0xf6f9('0x82'),_0x3457b6);}return null;})[_0xf6f9('0x36')](function(_0x5c074e){var _0x51047c=_0xf6f9('0x70')+_0x5c074e[_0xf6f9('0x28')]['ContactId'];return db['sequelize'][_0xf6f9('0x42')](_0x51047c,{'type':db[_0xf6f9('0x83')][_0xf6f9('0x73')][_0xf6f9('0x74')],'raw':!![]})[_0xf6f9('0x36')](function(_0x2b5b7d){return _0x2b5b7d;});})[_0xf6f9('0x36')](function(_0x5dfb07){if(_0x5dfb07){_0x3457b6[_0xf6f9('0x28')][_0xf6f9('0x75')]=_0x5dfb07[0x0];if(!_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')])return;return db[_0xf6f9('0x76')][_0xf6f9('0x58')]({'where':{'id':_0x17b637[_0xf6f9('0x57')]['UserId'],'role':_0xf6f9('0x63')},'attributes':['id',_0xf6f9('0x3a'),_0xf6f9('0x77'),_0xf6f9('0x84'),_0xf6f9('0x78')],'raw':!![]});}return null;})[_0xf6f9('0x36')](function(_0x318e2f){if(!_0x318e2f)return null;_0x3457b6['message']['agent']=_0x318e2f;return _0x3457b6;})['then'](function(_0x5b9341){if(_0x5b9341){_0x5b9341[_0xf6f9('0x28')]['interface']=util['format'](_0xf6f9('0x7b'),_0x17b637[_0xf6f9('0x6b')][_0xf6f9('0x3a')]);_0x5b9341[_0xf6f9('0x28')][_0xf6f9('0x7c')]=_0x3457b6['channel'];_0x5b9341[_0xf6f9('0x28')][_0xf6f9('0x7d')]=_0x3457b6[_0xf6f9('0x7c')];_0x5b9341[_0xf6f9('0x28')]['event']=_0xf6f9('0x33');respondWithRpcPromise(_0xf6f9('0x7f'),_0xf6f9('0x7f'),{'event':_0xf6f9('0x85'),'message':_0x5b9341[_0xf6f9('0x28')]},client9002);return _0x3457b6;}return null;})['then'](respondWithResult(_0x3066f2,null))[_0xf6f9('0x2a')](handleError(_0x3066f2,null));};
\ No newline at end of file
+var _0x25e1=['limit','undefined','count','offset','set','Content-Range','save','update','destroy','stack','name','send','map','OpenchannelMessage','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','include','findAll','params','includeAll','options','find','create','body','describe','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','User','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','role','null','rejectMessage','contact','fullname','rejectmessage','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelMessage.socket','client','http','then','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','sendStatus','status','end','json'];(function(_0x1c388e,_0x31f2de){var _0x4e2966=function(_0x21688c){while(--_0x21688c){_0x1c388e['push'](_0x1c388e['shift']());}};_0x4e2966(++_0x31f2de);}(_0x25e1,0x146));var _0x125e=function(_0x32dc20,_0x2cf33e){_0x32dc20=_0x32dc20-0x0;var _0x5c1b28=_0x25e1[_0x32dc20];return _0x5c1b28;};'use strict';var emlformat=require(_0x125e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x125e('0x1'));var jsonpatch=require(_0x125e('0x2'));var rp=require(_0x125e('0x3'));var moment=require(_0x125e('0x4'));var BPromise=require(_0x125e('0x5'));var Mustache=require(_0x125e('0x6'));var util=require(_0x125e('0x7'));var path=require('path');var sox=require(_0x125e('0x8'));var csv=require(_0x125e('0x9'));var ejs=require(_0x125e('0xa'));var fs=require('fs');var fs_extra=require(_0x125e('0xb'));var _=require('lodash');var squel=require(_0x125e('0xc'));var crypto=require(_0x125e('0xd'));var jsforce=require(_0x125e('0xe'));var deskjs=require(_0x125e('0xf'));var toCsv=require(_0x125e('0x9'));var querystring=require(_0x125e('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x125e('0x11'));var as=require(_0x125e('0x12'));var hardwareService=require(_0x125e('0x13'));var logger=require('../../config/logger')(_0x125e('0x14'));var utils=require(_0x125e('0x15'));var config=require(_0x125e('0x16'));var licenseUtil=require(_0x125e('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x125e('0x18')],{'host':_0x125e('0x19'),'port':0x18eb});var socket=require(_0x125e('0x1a'))(new Redis(config[_0x125e('0x18')]));require(_0x125e('0x1b'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x125e('0x1c')][_0x125e('0x1d')]({'port':0x232c});var client9002=jayson[_0x125e('0x1c')][_0x125e('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x21208f,_0x18191e,_0x3f090f,_0x53ad34){return new BPromise(function(_0x5afa75,_0x1cb98b){var _0x5a63a7=_0x53ad34||client;return _0x5a63a7['request'](_0x21208f,_0x3f090f)[_0x125e('0x1e')](function(_0x591814){logger['info'](_0x125e('0x1f'),_0x18191e,'request\x20sent');logger[_0x125e('0x20')](_0x125e('0x21'),_0x18191e,'request\x20sent',JSON[_0x125e('0x22')](_0x591814));if(_0x591814[_0x125e('0x23')]){if(_0x591814['error'][_0x125e('0x24')]===0x1f4){logger[_0x125e('0x23')](_0x125e('0x1f'),_0x18191e,_0x591814['error'][_0x125e('0x25')]);return _0x1cb98b(_0x591814[_0x125e('0x23')]['message']);}logger[_0x125e('0x23')](_0x125e('0x1f'),_0x18191e,_0x591814['error'][_0x125e('0x25')]);return _0x5afa75(_0x591814[_0x125e('0x23')][_0x125e('0x25')]);}else{logger[_0x125e('0x26')](_0x125e('0x1f'),_0x18191e,_0x125e('0x27'));_0x5afa75(_0x591814[_0x125e('0x28')][_0x125e('0x25')]);}})[_0x125e('0x29')](function(_0x13c10d){logger[_0x125e('0x23')](_0x125e('0x1f'),_0x18191e,_0x13c10d);_0x1cb98b(_0x13c10d);});});}function respondWithStatusCode(_0x4af7ed,_0x328716){_0x328716=_0x328716||0xcc;return function(_0x4ecb5d){if(_0x4ecb5d){return _0x4af7ed[_0x125e('0x2a')](_0x328716);}return _0x4af7ed[_0x125e('0x2b')](_0x328716)[_0x125e('0x2c')]();};}function respondWithResult(_0x241f0e,_0xd598f4){_0xd598f4=_0xd598f4||0xc8;return function(_0x5ed561){if(_0x5ed561){return _0x241f0e[_0x125e('0x2b')](_0xd598f4)[_0x125e('0x2d')](_0x5ed561);}};}function respondWithFilteredResult(_0x475508,_0x25d298){return function(_0x4eed01){if(_0x4eed01){var _0x10e2da=typeof _0x25d298['offset']==='undefined'&&typeof _0x25d298[_0x125e('0x2e')]===_0x125e('0x2f');var _0x23a4b5=_0x4eed01[_0x125e('0x30')];var _0x1df30c=_0x10e2da?0x0:_0x25d298[_0x125e('0x31')];var _0x54bfc8=_0x10e2da?_0x4eed01['count']:_0x25d298[_0x125e('0x31')]+_0x25d298[_0x125e('0x2e')];var _0x19468c;if(_0x54bfc8>=_0x23a4b5){_0x54bfc8=_0x23a4b5;_0x19468c=0xc8;}else{_0x19468c=0xce;}_0x475508[_0x125e('0x2b')](_0x19468c);return _0x475508[_0x125e('0x32')](_0x125e('0x33'),_0x1df30c+'-'+_0x54bfc8+'/'+_0x23a4b5)[_0x125e('0x2d')](_0x4eed01);}return null;};}function patchUpdates(_0x165454){return function(_0x1c67d3){try{jsonpatch['apply'](_0x1c67d3,_0x165454,!![]);}catch(_0x15ad4d){return BPromise['reject'](_0x15ad4d);}return _0x1c67d3[_0x125e('0x34')]();};}function saveUpdates(_0x5350e9,_0x476dd6){return function(_0x3ddd48){if(_0x3ddd48){return _0x3ddd48[_0x125e('0x35')](_0x5350e9)[_0x125e('0x1e')](function(_0x78354d){return _0x78354d;});}return null;};}function removeEntity(_0x5eaaf5,_0x2315a8){return function(_0x26a2b7){if(_0x26a2b7){return _0x26a2b7[_0x125e('0x36')]()[_0x125e('0x1e')](function(){_0x5eaaf5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x17dae5,_0x43abc0){return function(_0x2b99cc){if(!_0x2b99cc){_0x17dae5[_0x125e('0x2a')](0x194);}return _0x2b99cc;};}function handleError(_0x52062d,_0x181919){_0x181919=_0x181919||0x1f4;return function(_0x452335){logger[_0x125e('0x23')](_0x452335[_0x125e('0x37')]);if(_0x452335[_0x125e('0x38')]){delete _0x452335[_0x125e('0x38')];}_0x52062d[_0x125e('0x2b')](_0x181919)[_0x125e('0x39')](_0x452335);};}exports['index']=function(_0x21ed6b,_0x2bb1aa){var _0x49bf99={},_0x3dceeb={},_0x3bbf99={'count':0x0,'rows':[]};var _0x5bc8ff=_[_0x125e('0x3a')](db[_0x125e('0x3b')][_0x125e('0x3c')],function(_0x12fdfa){return{'name':_0x12fdfa['fieldName'],'type':_0x12fdfa[_0x125e('0x3d')][_0x125e('0x3e')]};});_0x3dceeb[_0x125e('0x3f')]=_[_0x125e('0x3a')](_0x5bc8ff,'name');_0x3dceeb[_0x125e('0x40')]=_[_0x125e('0x41')](_0x21ed6b['query']);_0x3dceeb[_0x125e('0x42')]=_['intersection'](_0x3dceeb[_0x125e('0x3f')],_0x3dceeb[_0x125e('0x40')]);_0x49bf99[_0x125e('0x43')]=_[_0x125e('0x44')](_0x3dceeb[_0x125e('0x3f')],qs['fields'](_0x21ed6b['query'][_0x125e('0x45')]));_0x49bf99['attributes']=_0x49bf99['attributes'][_0x125e('0x46')]?_0x49bf99[_0x125e('0x43')]:_0x3dceeb[_0x125e('0x3f')];if(!_0x21ed6b[_0x125e('0x40')][_0x125e('0x47')]('nolimit')){_0x49bf99[_0x125e('0x2e')]=qs[_0x125e('0x2e')](_0x21ed6b[_0x125e('0x40')][_0x125e('0x2e')]);_0x49bf99[_0x125e('0x31')]=qs[_0x125e('0x31')](_0x21ed6b['query']['offset']);}_0x49bf99['order']=qs[_0x125e('0x48')](_0x21ed6b[_0x125e('0x40')][_0x125e('0x48')]);_0x49bf99[_0x125e('0x49')]=qs[_0x125e('0x42')](_[_0x125e('0x4a')](_0x21ed6b[_0x125e('0x40')],_0x3dceeb[_0x125e('0x42')]),_0x5bc8ff);if(_0x21ed6b[_0x125e('0x40')][_0x125e('0x4b')]){_0x49bf99[_0x125e('0x49')]=_[_0x125e('0x4c')](_0x49bf99[_0x125e('0x49')],{'$or':_[_0x125e('0x3a')](_0x5bc8ff,function(_0x552d9e){if(_0x552d9e[_0x125e('0x3d')]!==_0x125e('0x4d')){var _0x2bb1b0={};_0x2bb1b0[_0x552d9e[_0x125e('0x38')]]={'$like':'%'+_0x21ed6b[_0x125e('0x40')][_0x125e('0x4b')]+'%'};return _0x2bb1b0;}})});}_0x49bf99=_['merge']({},_0x49bf99,_0x21ed6b['options']);var _0x68680f={'where':_0x49bf99['where']};return db[_0x125e('0x3b')][_0x125e('0x30')](_0x68680f)[_0x125e('0x1e')](function(_0x1794ca){_0x3bbf99[_0x125e('0x30')]=_0x1794ca;if(_0x21ed6b[_0x125e('0x40')]['includeAll']){_0x49bf99[_0x125e('0x4e')]=[{'all':!![]}];}return db[_0x125e('0x3b')][_0x125e('0x4f')](_0x49bf99);})[_0x125e('0x1e')](function(_0x3cd8d){_0x3bbf99['rows']=_0x3cd8d;return _0x3bbf99;})[_0x125e('0x1e')](respondWithFilteredResult(_0x2bb1aa,_0x49bf99))[_0x125e('0x29')](handleError(_0x2bb1aa,null));};exports['show']=function(_0x2a6e0d,_0x406e4f){var _0x2ea129={'raw':!![],'where':{'id':_0x2a6e0d[_0x125e('0x50')]['id']}},_0x155107={};_0x155107[_0x125e('0x3f')]=_[_0x125e('0x41')](db[_0x125e('0x3b')][_0x125e('0x3c')]);_0x155107[_0x125e('0x40')]=_[_0x125e('0x41')](_0x2a6e0d[_0x125e('0x40')]);_0x155107[_0x125e('0x42')]=_[_0x125e('0x44')](_0x155107[_0x125e('0x3f')],_0x155107[_0x125e('0x40')]);_0x2ea129[_0x125e('0x43')]=_[_0x125e('0x44')](_0x155107['model'],qs[_0x125e('0x45')](_0x2a6e0d[_0x125e('0x40')][_0x125e('0x45')]));_0x2ea129['attributes']=_0x2ea129['attributes']['length']?_0x2ea129['attributes']:_0x155107[_0x125e('0x3f')];if(_0x2a6e0d[_0x125e('0x40')][_0x125e('0x51')]){_0x2ea129[_0x125e('0x4e')]=[{'all':!![]}];}_0x2ea129=_[_0x125e('0x4c')]({},_0x2ea129,_0x2a6e0d[_0x125e('0x52')]);return db[_0x125e('0x3b')][_0x125e('0x53')](_0x2ea129)[_0x125e('0x1e')](handleEntityNotFound(_0x406e4f,null))[_0x125e('0x1e')](respondWithResult(_0x406e4f,null))['catch'](handleError(_0x406e4f,null));};exports[_0x125e('0x54')]=function(_0x151fd2,_0x587f7d){return db[_0x125e('0x3b')][_0x125e('0x54')](_0x151fd2[_0x125e('0x55')],{})[_0x125e('0x1e')](respondWithResult(_0x587f7d,0xc9))['catch'](handleError(_0x587f7d,null));};exports[_0x125e('0x35')]=function(_0x22d232,_0x4a17ef){if(_0x22d232['body']['id']){delete _0x22d232[_0x125e('0x55')]['id'];}return db[_0x125e('0x3b')][_0x125e('0x53')]({'where':{'id':_0x22d232[_0x125e('0x50')]['id']}})['then'](handleEntityNotFound(_0x4a17ef,null))[_0x125e('0x1e')](saveUpdates(_0x22d232[_0x125e('0x55')],null))['then'](respondWithResult(_0x4a17ef,null))['catch'](handleError(_0x4a17ef,null));};exports[_0x125e('0x36')]=function(_0x4cb7a1,_0x10cdcf){return db[_0x125e('0x3b')][_0x125e('0x53')]({'where':{'id':_0x4cb7a1[_0x125e('0x50')]['id']}})['then'](handleEntityNotFound(_0x10cdcf,null))[_0x125e('0x1e')](removeEntity(_0x10cdcf,null))[_0x125e('0x29')](handleError(_0x10cdcf,null));};exports[_0x125e('0x56')]=function(_0x7544c1,_0x4428c1){return db['OpenchannelMessage'][_0x125e('0x56')]()[_0x125e('0x1e')](respondWithResult(_0x4428c1,null))['catch'](handleError(_0x4428c1,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0x125e('0x57')]=function(_0x2910c9,_0x12d1d1,_0x1d3adc){var _0x131999={'agent':{},'channel':_0x125e('0x58')};if(_0x2910c9[_0x125e('0x55')]['id']){delete _0x2910c9[_0x125e('0x55')]['id'];}_0x2910c9[_0x125e('0x55')][_0x125e('0x59')]=!![];_0x2910c9[_0x125e('0x55')][_0x125e('0x5a')]=moment()[_0x125e('0x5b')](_0x125e('0x5c'));_0x2910c9[_0x125e('0x55')][_0x125e('0x5d')]=_0x2910c9[_0x125e('0x55')][_0x125e('0x5d')]||_0x2910c9[_0x125e('0x5e')]['id'];_0x131999[_0x125e('0x5f')]['id']=_0x2910c9[_0x125e('0x55')][_0x125e('0x5d')];return db[_0x125e('0x3b')]['find']({'where':{'id':_0x2910c9[_0x125e('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x12d1d1,null))[_0x125e('0x1e')](saveUpdates(_0x2910c9[_0x125e('0x55')],null))[_0x125e('0x1e')](function(_0x325ae9){if(_0x325ae9){_0x131999['message']=_0x325ae9[_0x125e('0x60')]({'plain':!![]});return db[_0x125e('0x61')][_0x125e('0x53')]({'where':{'id':_0x325ae9[_0x125e('0x62')]}});}return null;})[_0x125e('0x1e')](handleEntityNotFound(_0x12d1d1,null))[_0x125e('0x1e')](function(_0x45c2a8){if(_0x45c2a8){return _0x45c2a8[_0x125e('0x35')]({'UserId':_0x2910c9['body'][_0x125e('0x5d')],'read1stAt':_[_0x125e('0x63')](_0x45c2a8['read1stAt'])?moment()['format'](_0x125e('0x5c')):undefined});}return null;})[_0x125e('0x1e')](function(_0x440a88){if(_0x440a88){_0x131999[_0x125e('0x64')]=_0x440a88[_0x125e('0x60')]({'plain':!![]});interaction_log[_0x125e('0x26')](_0x125e('0x65'),_0x2910c9[_0x125e('0x5e')]['id'],_0x2910c9[_0x125e('0x5e')][_0x125e('0x38')],_0x2910c9[_0x125e('0x5e')]['role'],_0x131999['interaction']['id'],_0x2910c9[_0x125e('0x55')]?JSON[_0x125e('0x22')](_0x2910c9['body']):'null');return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x131999);}return null;})['then'](function(_0x5abb7f){var _0xe66dfb=_0x125e('0x66')+_0x5abb7f[_0x125e('0x25')][_0x125e('0x67')];return db[_0x125e('0x68')]['query'](_0xe66dfb,{'type':db[_0x125e('0x69')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x3d10ea){return _0x3d10ea;});})[_0x125e('0x1e')](function(_0x3eeb72){if(_0x3eeb72){_0x131999[_0x125e('0x25')]['contact']=_0x3eeb72[0x0];if(!_0x2910c9['body']['UserId'])return;return db[_0x125e('0x6a')][_0x125e('0x53')]({'where':{'id':_0x2910c9[_0x125e('0x55')][_0x125e('0x5d')],'role':_0x125e('0x5f')},'attributes':['id','name','fullname',_0x125e('0x6b'),_0x125e('0x6c')],'raw':!![]});}return null;})[_0x125e('0x1e')](function(_0x56bf1b){if(!_0x56bf1b)return null;_0x131999[_0x125e('0x25')][_0x125e('0x5f')]=_0x56bf1b;return _0x131999;})['then'](function(_0x3558e2){if(_0x3558e2){if(_0x2910c9['body'][_0x125e('0x6d')]){_0x131999[_0x125e('0x25')][_0x125e('0x6e')]=util[_0x125e('0x5b')](_0x125e('0x6f'),_0x2910c9[_0x125e('0x5e')]['name']);_0x131999['message'][_0x125e('0x70')]=_0x131999[_0x125e('0x70')];_0x131999[_0x125e('0x25')][_0x125e('0x71')]=_0x131999[_0x125e('0x70')];_0x131999[_0x125e('0x25')][_0x125e('0x72')]=_0x125e('0x57');return respondWithRpcPromise(_0x125e('0x73'),_0x125e('0x73'),{'event':_0x125e('0x74'),'message':_0x131999[_0x125e('0x25')]},client9002)[_0x125e('0x1e')](function(){return _0x131999;});}return _0x131999;}return null;})['then'](respondWithResult(_0x12d1d1,null))['catch'](handleError(_0x12d1d1,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0x125e('0x75')]=function(_0x3c6271,_0x544677,_0x50a485){var _0x2bba49={'agent':{},'channel':_0x125e('0x58')};if(_0x3c6271[_0x125e('0x55')]['id']){delete _0x3c6271[_0x125e('0x55')]['id'];}_0x3c6271[_0x125e('0x55')][_0x125e('0x5d')]=_0x3c6271[_0x125e('0x55')]['UserId']||_0x3c6271[_0x125e('0x5e')]['id'];_0x2bba49['agent']['id']=_0x3c6271[_0x125e('0x55')][_0x125e('0x5d')];return db['OpenchannelMessage'][_0x125e('0x53')]({'where':{'id':_0x3c6271[_0x125e('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x544677,null))[_0x125e('0x1e')](function(_0x4492d7){if(_0x4492d7){_0x2bba49[_0x125e('0x25')]=_0x4492d7[_0x125e('0x60')]({'plain':!![]});return db[_0x125e('0x61')][_0x125e('0x53')]({'where':{'id':_0x4492d7['OpenchannelInteractionId']}});}return null;})[_0x125e('0x1e')](handleEntityNotFound(_0x544677,null))[_0x125e('0x1e')](function(_0x260a05){if(_0x260a05){_0x2bba49['interaction']=_0x260a05[_0x125e('0x60')]({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3c6271[_0x125e('0x5e')]['id'],_0x3c6271['user'][_0x125e('0x38')],_0x3c6271[_0x125e('0x5e')][_0x125e('0x76')],_0x2bba49[_0x125e('0x64')]['id'],_0x3c6271[_0x125e('0x55')]?JSON['stringify'](_0x3c6271[_0x125e('0x55')]):_0x125e('0x77'));return respondWithRpcPromise('RejectMessage',_0x125e('0x78'),_0x2bba49);}return null;})[_0x125e('0x1e')](function(_0x5ebbd2){var _0x8713f=_0x125e('0x66')+_0x5ebbd2[_0x125e('0x25')]['ContactId'];return db[_0x125e('0x68')][_0x125e('0x40')](_0x8713f,{'type':db[_0x125e('0x69')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x536ba8){return _0x536ba8;});})[_0x125e('0x1e')](function(_0x1bc96f){if(_0x1bc96f){_0x2bba49[_0x125e('0x25')][_0x125e('0x79')]=_0x1bc96f[0x0];if(!_0x3c6271[_0x125e('0x55')][_0x125e('0x5d')])return;return db[_0x125e('0x6a')][_0x125e('0x53')]({'where':{'id':_0x3c6271[_0x125e('0x55')]['UserId'],'role':_0x125e('0x5f')},'attributes':['id','name',_0x125e('0x7a'),_0x125e('0x6b'),_0x125e('0x6c')],'raw':!![]});}return null;})[_0x125e('0x1e')](function(_0x4de133){if(!_0x4de133)return null;_0x2bba49[_0x125e('0x25')][_0x125e('0x5f')]=_0x4de133;return _0x2bba49;})['then'](function(_0x36b235){if(_0x36b235){_0x36b235['message'][_0x125e('0x6e')]=util['format'](_0x125e('0x6f'),_0x3c6271[_0x125e('0x5e')][_0x125e('0x38')]);_0x36b235['message'][_0x125e('0x70')]=_0x2bba49[_0x125e('0x70')];_0x36b235['message'][_0x125e('0x71')]=_0x2bba49[_0x125e('0x70')];_0x36b235[_0x125e('0x25')][_0x125e('0x72')]=_0x125e('0x75');respondWithRpcPromise(_0x125e('0x73'),'EventManager',{'event':_0x125e('0x7b'),'message':_0x36b235[_0x125e('0x25')]},client9002);return _0x2bba49;}return null;})[_0x125e('0x1e')](respondWithResult(_0x544677,null))[_0x125e('0x29')](handleError(_0x544677,null));};
\ No newline at end of file
index 2132adb..8e9dc61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaff=['events','OpenchannelMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0xc40b9f,_0x17ec1f){var _0x535b9c=function(_0x591b19){while(--_0x591b19){_0xc40b9f['push'](_0xc40b9f['shift']());}};_0x535b9c(++_0x17ec1f);}(_0xeaff,0x140));var _0xfeaf=function(_0x32f584,_0x2a3189){_0x32f584=_0x32f584-0x0;var _0x4d4185=_0xeaff[_0x32f584];return _0x4d4185;};'use strict';var EventEmitter=require(_0xfeaf('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0xfeaf('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xfeaf('0x2')](0x0);var events={'afterCreate':_0xfeaf('0x3'),'afterUpdate':_0xfeaf('0x4'),'afterDestroy':'remove'};function emitEvent(_0x486ac0){return function(_0x28be0f,_0x9dfdb3,_0x55b185){OpenchannelMessageEvents['emit'](_0x486ac0+':'+_0x28be0f['id'],_0x28be0f);OpenchannelMessageEvents[_0xfeaf('0x5')](_0x486ac0,_0x28be0f);_0x55b185(null);};}for(var e in events){if(events[_0xfeaf('0x6')](e)){var event=events[e];OpenchannelMessage[_0xfeaf('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x30c5=['exports','events','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x3a9e7f,_0x476ae3){var _0x2a6023=function(_0x45a92d){while(--_0x45a92d){_0x3a9e7f['push'](_0x3a9e7f['shift']());}};_0x2a6023(++_0x476ae3);}(_0x30c5,0x1d6));var _0x530c=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x30c5[_0x6131cd];return _0x47e916;};'use strict';var EventEmitter=require(_0x530c('0x0'));var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x530c('0x1')](0x0);var events={'afterCreate':_0x530c('0x2'),'afterUpdate':_0x530c('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1099db){return function(_0x240d56,_0x1e10e1,_0x5839fa){OpenchannelMessageEvents[_0x530c('0x4')](_0x1099db+':'+_0x240d56['id'],_0x240d56);OpenchannelMessageEvents[_0x530c('0x4')](_0x1099db,_0x240d56);_0x5839fa(null);};}for(var e in events){if(events[_0x530c('0x5')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x530c('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
index 3d50474..d9976c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe910=['Interaction','omit','POST','method','GET','info','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','finally','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','OpenchannelInteraction','OpenchannelInteractionId','then','update','createdAt','catch','error','secret','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','CmContact','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate','length'];(function(_0x582f72,_0x886d8){var _0x4cd5fe=function(_0x4ac1c7){while(--_0x4ac1c7){_0x582f72['push'](_0x582f72['shift']());}};_0x4cd5fe(++_0x886d8);}(_0xe910,0xa7));var _0x0e91=function(_0x414655,_0x79d916){_0x414655=_0x414655-0x0;var _0x237884=_0xe910[_0x414655];return _0x237884;};'use strict';var _=require('lodash');var util=require(_0x0e91('0x0'));var logger=require(_0x0e91('0x1'))(_0x0e91('0x2'));var moment=require('moment');var BPromise=require(_0x0e91('0x3'));var rp=require(_0x0e91('0x4'));var fs=require('fs');var path=require(_0x0e91('0x5'));var rimraf=require(_0x0e91('0x6'));var config=require(_0x0e91('0x7'));var attributes=require(_0x0e91('0x8'));module[_0x0e91('0x9')]=function(_0x294e9a,_0x510604){return _0x294e9a['define'](_0x0e91('0xa'),attributes,{'tableName':_0x0e91('0xb'),'paranoid':![],'indexes':[{'name':_0x0e91('0xc'),'fields':[_0x0e91('0xd')],'type':_0x0e91('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x381795,_0x1b6a04,_0x34f5ab){var _0x10f918=_0x294e9a[_0x0e91('0xf')];var _0x51db64=_0x381795[_0x0e91('0x10')]({'plain':!![]});if(_0x51db64[_0x0e91('0x11')]['toLowerCase']()==='in'||_0x51db64[_0x0e91('0x11')][_0x0e91('0x12')]()===_0x0e91('0x13')&&!_0x51db64['secret']&&!_[_0x0e91('0x14')](_0x51db64['UserId'])){_0x10f918[_0x0e91('0x15')]['findOne']({'where':{'id':_0x51db64[_0x0e91('0x16')]}})[_0x0e91('0x17')](function(_0x494695){if(_0x494695){_0x494695[_0x0e91('0x18')]({'lastMsgAt':_0x51db64[_0x0e91('0x19')],'lastMsgDirection':_0x51db64[_0x0e91('0x11')][_0x0e91('0x12')]()});}})[_0x0e91('0x1a')](function(_0x2ae40e){console[_0x0e91('0x1b')](_0x2ae40e);});}if(_0x51db64[_0x0e91('0x11')]===_0x0e91('0x13')&&!_0x51db64[_0x0e91('0x1c')]){var _0x17b33f;_0x10f918['CmContact'][_0x0e91('0x1d')]()[_0x0e91('0x17')](function(_0x3a1374){return _0x10f918[_0x0e91('0x1e')][_0x0e91('0x1f')]({'where':{'id':_0x51db64[_0x0e91('0x20')]},'include':[{'model':_0x10f918[_0x0e91('0x15')],'as':_0x0e91('0x21'),'where':{'id':_0x51db64['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x10f918[_0x0e91('0x22')],'as':_0x0e91('0x23'),'attributes':_[_0x0e91('0x24')](_0x3a1374)}]}]});})[_0x0e91('0x17')](function(_0xea6f2){_0x17b33f=_0xea6f2['get']({'plain':!![]});if(_0x17b33f&&_0x17b33f[_0x0e91('0x25')]){logger['info'](_0x0e91('0x26'),_0x0e91('0x27'),util['format']('Forwarding\x20message\x20%d\x20to\x20%s',_0x51db64['id'],_0x17b33f[_0x0e91('0x25')]));if(_0x17b33f['Interactions']&&_0x17b33f[_0x0e91('0x21')][_0x0e91('0x28')]){_0x51db64[_0x0e91('0x29')]=_[_0x0e91('0x2a')](_0x17b33f[_0x0e91('0x21')][0x0],'Contact');_0x51db64[_0x0e91('0x23')]=_0x17b33f[_0x0e91('0x21')][0x0][_0x0e91('0x23')];}var _0x1b6a04={'method':_0x0e91('0x2b'),'uri':encodeURI(_0x17b33f['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1b6a04[_0x0e91('0x2c')]){case _0x0e91('0x2d'):_0x1b6a04['qs']=_0x51db64;break;case _0x0e91('0x2b'):_0x1b6a04[_0x0e91('0xd')]=_0x51db64;break;}return rp(_0x1b6a04)[_0x0e91('0x17')](function(_0x2a618f){logger[_0x0e91('0x2e')]('OpenchannelMessage,\x20%s,\x20%s',_0x0e91('0x27'),util[_0x0e91('0x2f')](_0x0e91('0x30'),_0x51db64['id'],_0x17b33f[_0x0e91('0x25')]));if(_0x2a618f[_0x0e91('0xd')][_0x0e91('0x31')]&&_0x2a618f[_0x0e91('0xd')]['threadId']!=_0x51db64[_0x0e91('0x29')]['threadId']){return _0x10f918[_0x0e91('0x15')][_0x0e91('0x18')]({'threadId':_0x2a618f['body']['threadId']},{'where':{'id':_0x51db64[_0x0e91('0x29')]['id']}});}else{return;}})[_0x0e91('0x17')](function(){return _0x381795['update']({'read':!![]});})[_0x0e91('0x1a')](function(_0xc18a1f){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x0e91('0x27'),util['inspect'](_0xc18a1f,{'showHidden':![],'depth':null}));_0x34f5ab();});}else{_0x34f5ab();}})[_0x0e91('0x32')](function(){_0x34f5ab();});}else{_0x34f5ab();}}},'charset':'utf8mb4','collate':_0x0e91('0x33')});};
\ No newline at end of file
+var _0x41d2=['OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','out','CmContact','describe','OpenchannelAccount','OpenchannelAccountId','Interactions','Contact','keys','OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','omit','POST','method','info','Message\x20%d\x20forwarded\x20to\x20%s','threadId','error','inspect','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','OpenchannelMessage','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil'];(function(_0xaff1d2,_0x423d2a){var _0x32f4ed=function(_0xb3d115){while(--_0xb3d115){_0xaff1d2['push'](_0xaff1d2['shift']());}};_0x32f4ed(++_0x423d2a);}(_0x41d2,0x11a));var _0x241d=function(_0x1ed116,_0x23bc80){_0x1ed116=_0x1ed116-0x0;var _0x574066=_0x41d2[_0x1ed116];return _0x574066;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x241d('0x0'))(_0x241d('0x1'));var moment=require(_0x241d('0x2'));var BPromise=require(_0x241d('0x3'));var rp=require(_0x241d('0x4'));var fs=require('fs');var path=require(_0x241d('0x5'));var rimraf=require('rimraf');var config=require(_0x241d('0x6'));var attributes=require('./openchannelMessage.attributes');module[_0x241d('0x7')]=function(_0x40cbe9,_0x5bc284){return _0x40cbe9[_0x241d('0x8')](_0x241d('0x9'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x241d('0xa')],'type':_0x241d('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4851a8,_0x8e04c2,_0x175d17){var _0x208fee=_0x40cbe9[_0x241d('0xc')];var _0x5493c8=_0x4851a8[_0x241d('0xd')]({'plain':!![]});if(_0x5493c8[_0x241d('0xe')]['toLowerCase']()==='in'||_0x5493c8[_0x241d('0xe')][_0x241d('0xf')]()==='out'&&!_0x5493c8[_0x241d('0x10')]&&!_[_0x241d('0x11')](_0x5493c8['UserId'])){_0x208fee[_0x241d('0x12')][_0x241d('0x13')]({'where':{'id':_0x5493c8[_0x241d('0x14')]}})[_0x241d('0x15')](function(_0x2e186d){if(_0x2e186d){_0x2e186d[_0x241d('0x16')]({'lastMsgAt':_0x5493c8[_0x241d('0x17')],'lastMsgDirection':_0x5493c8[_0x241d('0xe')]['toLowerCase']()});}})[_0x241d('0x18')](function(_0x4da088){console['error'](_0x4da088);});}if(_0x5493c8[_0x241d('0xe')]===_0x241d('0x19')&&!_0x5493c8[_0x241d('0x10')]){var _0x526cef;_0x208fee[_0x241d('0x1a')][_0x241d('0x1b')]()['then'](function(_0x3f1189){return _0x208fee[_0x241d('0x1c')]['find']({'where':{'id':_0x5493c8[_0x241d('0x1d')]},'include':[{'model':_0x208fee[_0x241d('0x12')],'as':_0x241d('0x1e'),'where':{'id':_0x5493c8[_0x241d('0x14')]},'limit':0x1,'include':[{'model':_0x208fee[_0x241d('0x1a')],'as':_0x241d('0x1f'),'attributes':_[_0x241d('0x20')](_0x3f1189)}]}]});})[_0x241d('0x15')](function(_0x6aadb2){_0x526cef=_0x6aadb2[_0x241d('0xd')]({'plain':!![]});if(_0x526cef&&_0x526cef['replyUri']){logger['info'](_0x241d('0x21'),_0x241d('0x22'),util['format'](_0x241d('0x23'),_0x5493c8['id'],_0x526cef[_0x241d('0x24')]));if(_0x526cef[_0x241d('0x1e')]&&_0x526cef[_0x241d('0x1e')][_0x241d('0x25')]){_0x5493c8[_0x241d('0x26')]=_[_0x241d('0x27')](_0x526cef[_0x241d('0x1e')][0x0],_0x241d('0x1f'));_0x5493c8[_0x241d('0x1f')]=_0x526cef[_0x241d('0x1e')][0x0]['Contact'];}var _0x8e04c2={'method':_0x241d('0x28'),'uri':encodeURI(_0x526cef[_0x241d('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x8e04c2[_0x241d('0x29')]){case'GET':_0x8e04c2['qs']=_0x5493c8;break;case _0x241d('0x28'):_0x8e04c2[_0x241d('0xa')]=_0x5493c8;break;}return rp(_0x8e04c2)[_0x241d('0x15')](function(_0x15ccf4){logger[_0x241d('0x2a')]('OpenchannelMessage,\x20%s,\x20%s',_0x241d('0x22'),util['format'](_0x241d('0x2b'),_0x5493c8['id'],_0x526cef[_0x241d('0x24')]));if(_0x15ccf4['body']['threadId']&&_0x15ccf4[_0x241d('0xa')][_0x241d('0x2c')]!=_0x5493c8[_0x241d('0x26')][_0x241d('0x2c')]){return _0x208fee[_0x241d('0x12')][_0x241d('0x16')]({'threadId':_0x15ccf4[_0x241d('0xa')][_0x241d('0x2c')]},{'where':{'id':_0x5493c8['Interaction']['id']}});}else{return;}})[_0x241d('0x15')](function(){return _0x4851a8['update']({'read':!![]});})['catch'](function(_0x367fcb){logger[_0x241d('0x2d')](_0x241d('0x21'),_0x241d('0x22'),util[_0x241d('0x2e')](_0x367fcb,{'showHidden':![],'depth':null}));_0x175d17();});}else{_0x175d17();}})[_0x241d('0x2f')](function(){_0x175d17();});}else{_0x175d17();}}},'charset':_0x241d('0x30'),'collate':_0x241d('0x31')});};
\ No newline at end of file
index eb36db2..6e670e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x43ec5f,_0x53d569){var _0x49092a=function(_0x56e331){while(--_0x56e331){_0x43ec5f['push'](_0x43ec5f['shift']());}};_0x49092a(++_0x53d569);}(_0x2ef3,0xba));var _0x32ef=function(_0x422d57,_0x5ca69f){_0x422d57=_0x422d57-0x0;var _0x4f98a0=_0x2ef3[_0x422d57];return _0x4f98a0;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
+var _0xadb5=['debug','request\x20sent','stringify','error','code','message','info','result','catch','OpenchannelMessage','body','raw','CreateOpenchannelMessage','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x1e4cc4,_0xc6ffa7){var _0xfaa999=function(_0x1b3143){while(--_0x1b3143){_0x1e4cc4['push'](_0x1e4cc4['shift']());}};_0xfaa999(++_0xc6ffa7);}(_0xadb5,0xad));var _0x5adb=function(_0x2979d5,_0x6abe3b){_0x2979d5=_0x2979d5-0x0;var _0x15dcb8=_0xadb5[_0x2979d5];return _0x15dcb8;};'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});config[_0x5adb('0xa')]=_[_0x5adb('0xb')](config[_0x5adb('0xa')],{'host':_0x5adb('0xc'),'port':0x18eb});var socket=require(_0x5adb('0xd'))(new Redis(config[_0x5adb('0xa')]));require(_0x5adb('0xe'))[_0x5adb('0xf')](socket);function respondWithRpcPromise(_0x336bad,_0x129f5a,_0x275428){return new BPromise(function(_0x563d86,_0x4c268d){return client[_0x5adb('0x10')](_0x336bad,_0x275428)[_0x5adb('0x11')](function(_0x82e67e){logger['info'](_0x5adb('0x12'),_0x129f5a,'request\x20sent');logger[_0x5adb('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x129f5a,_0x5adb('0x14'),JSON[_0x5adb('0x15')](_0x82e67e));if(_0x82e67e[_0x5adb('0x16')]){if(_0x82e67e['error'][_0x5adb('0x17')]===0x1f4){logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e['error'][_0x5adb('0x18')]);return _0x4c268d(_0x82e67e['error'][_0x5adb('0x18')]);}logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);return _0x563d86(_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);}else{logger[_0x5adb('0x19')](_0x5adb('0x12'),_0x129f5a,'request\x20sent');_0x563d86(_0x82e67e[_0x5adb('0x1a')]['message']);}})[_0x5adb('0x1b')](function(_0x558f76){logger[_0x5adb('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x129f5a,_0x558f76);_0x4c268d(_0x558f76);});});}exports['CreateOpenchannelMessage']=function(_0x1fbaa5){var _0x1bed20=this;return new Promise(function(_0x438671,_0x1fd4a7){return db[_0x5adb('0x1c')]['create'](_0x1fbaa5[_0x5adb('0x1d')],{'raw':_0x1fbaa5['options']?_0x1fbaa5['options'][_0x5adb('0x1e')]===undefined?!![]:![]:!![]})[_0x5adb('0x11')](function(_0x1a38d3){logger[_0x5adb('0x19')](_0x5adb('0x1f'),_0x1fbaa5);logger[_0x5adb('0x13')](_0x5adb('0x1f'),_0x1fbaa5,JSON['stringify'](_0x1a38d3));_0x438671(_0x1a38d3);})[_0x5adb('0x1b')](function(_0x373cc3){logger[_0x5adb('0x16')](_0x5adb('0x1f'),_0x373cc3[_0x5adb('0x18')],_0x1fbaa5);_0x1fd4a7(_0x1bed20['error'](0x1f4,_0x373cc3[_0x5adb('0x18')]));});});};
\ No newline at end of file
index c9d5e15..0de6792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8075=['openchannelMessage:','./openchannelMessage.events','save','update','length'];(function(_0x409deb,_0x2b731){var _0x15a4f7=function(_0x556510){while(--_0x556510){_0x409deb['push'](_0x409deb['shift']());}};_0x15a4f7(++_0x2b731);}(_0x8075,0xab));var _0x5807=function(_0x579ec2,_0x1feede){_0x579ec2=_0x579ec2-0x0;var _0x10ffc4=_0x8075[_0x579ec2];return _0x10ffc4;};'use strict';var OpenchannelMessageEvents=require(_0x5807('0x0'));var events=[_0x5807('0x1'),'remove',_0x5807('0x2')];function createListener(_0x5efb54,_0x37a443){return function(_0x11de2e){_0x37a443['emit'](_0x5efb54,_0x11de2e);};}function removeListener(_0x35d426,_0x8f6a62){return function(){OpenchannelMessageEvents['removeListener'](_0x35d426,_0x8f6a62);};}exports['register']=function(_0x984f3d){for(var _0x5b471b=0x0,_0x308e83=events[_0x5807('0x3')];_0x5b471b<_0x308e83;_0x5b471b++){var _0x2b84d0=events[_0x5b471b];var _0x1e98cf=createListener(_0x5807('0x4')+_0x2b84d0,_0x984f3d);OpenchannelMessageEvents['on'](_0x2b84d0,_0x1e98cf);}};
\ No newline at end of file
+var _0x79dd=['length','./openchannelMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x468761,_0x337f30){var _0x434ac2=function(_0x4894c9){while(--_0x4894c9){_0x468761['push'](_0x468761['shift']());}};_0x434ac2(++_0x337f30);}(_0x79dd,0x1f1));var _0xd79d=function(_0x45f6cb,_0x531af6){_0x45f6cb=_0x45f6cb-0x0;var _0x5b7f93=_0x79dd[_0x45f6cb];return _0x5b7f93;};'use strict';var OpenchannelMessageEvents=require(_0xd79d('0x0'));var events=[_0xd79d('0x1'),_0xd79d('0x2'),_0xd79d('0x3')];function createListener(_0x5eb8f3,_0x1c278d){return function(_0x413a9d){_0x1c278d[_0xd79d('0x4')](_0x5eb8f3,_0x413a9d);};}function removeListener(_0x3dcf5d,_0x14559d){return function(){OpenchannelMessageEvents[_0xd79d('0x5')](_0x3dcf5d,_0x14559d);};}exports[_0xd79d('0x6')]=function(_0x3a969c){for(var _0xd9c417=0x0,_0x501982=events[_0xd79d('0x7')];_0xd9c417<_0x501982;_0xd9c417++){var _0x2ec1ad=events[_0xd9c417];var _0xbc8c4c=createListener('openchannelMessage:'+_0x2ec1ad,_0x3a969c);OpenchannelMessageEvents['on'](_0x2ec1ad,_0xbc8c4c);}};
\ No newline at end of file
index d28a197..5bbb11b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc681=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','destroy','removeTeams','removeAgents','util','path'];(function(_0x3dae84,_0x2481cb){var _0xf4ca3a=function(_0x269262){while(--_0x269262){_0x3dae84['push'](_0x3dae84['shift']());}};_0xf4ca3a(++_0x2481cb);}(_0xc681,0x193));var _0x1c68=function(_0x3edb0f,_0x35a7fa){_0x3edb0f=_0x3edb0f-0x0;var _0x5c1069=_0xc681[_0x3edb0f];return _0x5c1069;};'use strict';var multer=require('multer');var util=require(_0x1c68('0x0'));var path=require(_0x1c68('0x1'));var timeout=require('connect-timeout');var express=require(_0x1c68('0x2'));var router=express[_0x1c68('0x3')]();var fs_extra=require(_0x1c68('0x4'));var auth=require(_0x1c68('0x5'));var interaction=require(_0x1c68('0x6'));var config=require(_0x1c68('0x7'));var controller=require('./openchannelQueue.controller');router[_0x1c68('0x8')]('/',auth['isAuthenticated'](),controller[_0x1c68('0x9')]);router[_0x1c68('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x1c68('0xa'),auth[_0x1c68('0xb')](),controller[_0x1c68('0xc')]);router[_0x1c68('0x8')]('/:id/members',auth['isAuthenticated'](),controller[_0x1c68('0xd')]);router['get'](_0x1c68('0xe'),auth[_0x1c68('0xb')](),controller[_0x1c68('0xf')]);router[_0x1c68('0x8')](_0x1c68('0x10'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x11')]);router[_0x1c68('0x12')]('/',auth[_0x1c68('0xb')](),controller[_0x1c68('0x13')]);router['post'](_0x1c68('0xe'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x14')]);router[_0x1c68('0x12')](_0x1c68('0x10'),auth[_0x1c68('0xb')](),controller['addAgents']);router[_0x1c68('0x15')](_0x1c68('0xa'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x16')]);router[_0x1c68('0x17')](_0x1c68('0xa'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x18')]);router[_0x1c68('0x17')](_0x1c68('0xe'),auth['isAuthenticated'](),controller[_0x1c68('0x19')]);router[_0x1c68('0x17')](_0x1c68('0x10'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xe937=['getTeams','/:id/users','getAgents','post','addAgents','put','delete','/:id','destroy','removeAgents','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','show','/:id/members','getMembers','/:id/teams'];(function(_0x316441,_0x3309b4){var _0x38a3ba=function(_0x661be1){while(--_0x661be1){_0x316441['push'](_0x316441['shift']());}};_0x38a3ba(++_0x3309b4);}(_0xe937,0xe2));var _0x7e93=function(_0xa04cde,_0x108919){_0xa04cde=_0xa04cde-0x0;var _0x27ae1f=_0xe937[_0xa04cde];return _0x27ae1f;};'use strict';var multer=require('multer');var util=require(_0x7e93('0x0'));var path=require(_0x7e93('0x1'));var timeout=require(_0x7e93('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7e93('0x3'));var auth=require(_0x7e93('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7e93('0x5'));var controller=require('./openchannelQueue.controller');router[_0x7e93('0x6')]('/',auth[_0x7e93('0x7')](),controller[_0x7e93('0x8')]);router[_0x7e93('0x6')](_0x7e93('0x9'),auth[_0x7e93('0x7')](),controller['describe']);router[_0x7e93('0x6')]('/:id',auth[_0x7e93('0x7')](),controller[_0x7e93('0xa')]);router[_0x7e93('0x6')](_0x7e93('0xb'),auth[_0x7e93('0x7')](),controller[_0x7e93('0xc')]);router[_0x7e93('0x6')](_0x7e93('0xd'),auth[_0x7e93('0x7')](),controller[_0x7e93('0xe')]);router[_0x7e93('0x6')](_0x7e93('0xf'),auth['isAuthenticated'](),controller[_0x7e93('0x10')]);router[_0x7e93('0x11')]('/',auth[_0x7e93('0x7')](),controller['create']);router[_0x7e93('0x11')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x7e93('0x11')](_0x7e93('0xf'),auth[_0x7e93('0x7')](),controller[_0x7e93('0x12')]);router[_0x7e93('0x13')]('/:id',auth[_0x7e93('0x7')](),controller['update']);router[_0x7e93('0x14')](_0x7e93('0x15'),auth[_0x7e93('0x7')](),controller[_0x7e93('0x16')]);router[_0x7e93('0x14')]('/:id/teams',auth[_0x7e93('0x7')](),controller['removeTeams']);router['delete'](_0x7e93('0xf'),auth[_0x7e93('0x7')](),controller[_0x7e93('0x17')]);module['exports']=router;
\ No newline at end of file
index cacb04d..4180b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4980=['sequelize','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x17cda,_0x2ee4a2){var _0xf87505=function(_0x121480){while(--_0x121480){_0x17cda['push'](_0x17cda['shift']());}};_0xf87505(++_0x2ee4a2);}(_0x4980,0x17a));var _0x0498=function(_0xd3adfc,_0xe0afc){_0xd3adfc=_0xd3adfc-0x0;var _0x2f309a=_0x4980[_0xd3adfc];return _0x2f309a;};'use strict';var Sequelize=require(_0x0498('0x0'));module['exports']={'name':{'type':Sequelize[_0x0498('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x0498('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0498('0x3')](_0x0498('0x4'),_0x0498('0x5'),_0x0498('0x6'))}};
\ No newline at end of file
+var _0x9dc0=['sequelize','exports','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x5ecce5,_0x45f8fb){var _0xc2f006=function(_0x57a2e2){while(--_0x57a2e2){_0x5ecce5['push'](_0x5ecce5['shift']());}};_0xc2f006(++_0x45f8fb);}(_0x9dc0,0x198));var _0x09dc=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0x9dc0[_0x4c440b];return _0x2d48cf;};'use strict';var Sequelize=require(_0x09dc('0x0'));module[_0x09dc('0x1')]={'name':{'type':Sequelize[_0x09dc('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x09dc('0x2')]},'timeout':{'type':Sequelize[_0x09dc('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x09dc('0x4')](_0x09dc('0x5'),_0x09dc('0x6'),_0x09dc('0x7'))}};
\ No newline at end of file
index 7bda160..7c5674b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1667=['Content-Range','reject','update','then','destroy','OpenchannelQueues','UserProfileResource','end','sendStatus','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','OpenchannelQueue','findAll','rows','catch','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','get','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','UserId','agent','openchannelPause','createdAt','format','updatedAt','getTeams','Team','hasOwnProperty','ids','Agents','interface','sequelize','transaction','addTeams','findOrCreate','forEach','emit','removeTeams','field','user_has_teams','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','all','value','isEmpty','userOpenchannelQueue:remove','addAgents','spread','removeAgents','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./openchannelQueue.socket','register','status','json','offset','undefined','count','limit'];(function(_0x2c534a,_0x18a19e){var _0x3f5c99=function(_0x4c085f){while(--_0x4c085f){_0x2c534a['push'](_0x2c534a['shift']());}};_0x3f5c99(++_0x18a19e);}(_0x1667,0x1e7));var _0x7166=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x1667[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0x7166('0x0'));var rimraf=require(_0x7166('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7166('0x2'));var rp=require(_0x7166('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7166('0x4'));var util=require(_0x7166('0x5'));var path=require('path');var sox=require(_0x7166('0x6'));var csv=require('to-csv');var ejs=require(_0x7166('0x7'));var fs=require('fs');var fs_extra=require(_0x7166('0x8'));var _=require(_0x7166('0x9'));var squel=require(_0x7166('0xa'));var crypto=require(_0x7166('0xb'));var jsforce=require(_0x7166('0xc'));var deskjs=require(_0x7166('0xd'));var toCsv=require(_0x7166('0xe'));var querystring=require(_0x7166('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7166('0x10'));var as=require(_0x7166('0x11'));var hardwareService=require(_0x7166('0x12'));var logger=require(_0x7166('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x7166('0x14'));var licenseUtil=require(_0x7166('0x15'));var db=require(_0x7166('0x16'))['db'];config[_0x7166('0x17')]=_[_0x7166('0x18')](config[_0x7166('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7166('0x17')]));require(_0x7166('0x19'))[_0x7166('0x1a')](socket);function respondWithStatusCode(_0x40abf7,_0x15ea50){_0x15ea50=_0x15ea50||0xcc;return function(_0x431489){if(_0x431489){return _0x40abf7['sendStatus'](_0x15ea50);}return _0x40abf7[_0x7166('0x1b')](_0x15ea50)['end']();};}function respondWithResult(_0xe041ce,_0x34594f){_0x34594f=_0x34594f||0xc8;return function(_0x1897dd){if(_0x1897dd){return _0xe041ce['status'](_0x34594f)[_0x7166('0x1c')](_0x1897dd);}};}function respondWithFilteredResult(_0x4cd644,_0x349008){return function(_0xfdb07d){if(_0xfdb07d){var _0x2ba418=typeof _0x349008[_0x7166('0x1d')]===_0x7166('0x1e')&&typeof _0x349008['limit']==='undefined';var _0x1462de=_0xfdb07d[_0x7166('0x1f')];var _0x26dc8e=_0x2ba418?0x0:_0x349008[_0x7166('0x1d')];var _0x216860=_0x2ba418?_0xfdb07d[_0x7166('0x1f')]:_0x349008[_0x7166('0x1d')]+_0x349008[_0x7166('0x20')];var _0x379f1e;if(_0x216860>=_0x1462de){_0x216860=_0x1462de;_0x379f1e=0xc8;}else{_0x379f1e=0xce;}_0x4cd644[_0x7166('0x1b')](_0x379f1e);return _0x4cd644['set'](_0x7166('0x21'),_0x26dc8e+'-'+_0x216860+'/'+_0x1462de)[_0x7166('0x1c')](_0xfdb07d);}return null;};}function patchUpdates(_0x35b24b){return function(_0x4e88e2){try{jsonpatch['apply'](_0x4e88e2,_0x35b24b,!![]);}catch(_0x2a3589){return BPromise[_0x7166('0x22')](_0x2a3589);}return _0x4e88e2['save']();};}function saveUpdates(_0x253f51,_0xb443bc){return function(_0x3e23f8){if(_0x3e23f8){return _0x3e23f8[_0x7166('0x23')](_0x253f51)[_0x7166('0x24')](function(_0x46edea){return _0x46edea;});}return null;};}function removeEntity(_0x5a68cd,_0x351d90){return function(_0x25124a){if(_0x25124a){return _0x25124a[_0x7166('0x25')]()[_0x7166('0x24')](function(){var _0x1f87f2=_0x25124a['get']({'plain':!![]});var _0xa39d46=_0x7166('0x26');return db[_0x7166('0x27')][_0x7166('0x25')]({'where':{'type':_0xa39d46,'resourceId':_0x1f87f2['id']}})[_0x7166('0x24')](function(){return _0x25124a;});})[_0x7166('0x24')](function(){_0x5a68cd[_0x7166('0x1b')](0xcc)[_0x7166('0x28')]();});}};}function handleEntityNotFound(_0x370345,_0x322b56){return function(_0x280fec){if(!_0x280fec){_0x370345[_0x7166('0x29')](0x194);}return _0x280fec;};}function handleError(_0x9030f9,_0x2c0e14){_0x2c0e14=_0x2c0e14||0x1f4;return function(_0x4609b0){logger[_0x7166('0x2a')](_0x4609b0['stack']);if(_0x4609b0[_0x7166('0x2b')]){delete _0x4609b0['name'];}_0x9030f9['status'](_0x2c0e14)[_0x7166('0x2c')](_0x4609b0);};}exports[_0x7166('0x2d')]=function(_0xe8e9b3,_0xa1da50){var _0x15a542={},_0x16967e={},_0x336259={'count':0x0,'rows':[]};var _0x42cd53=_[_0x7166('0x2e')](db['OpenchannelQueue'][_0x7166('0x2f')],function(_0x49e876){return{'name':_0x49e876[_0x7166('0x30')],'type':_0x49e876['type'][_0x7166('0x31')]};});_0x16967e[_0x7166('0x32')]=_[_0x7166('0x2e')](_0x42cd53,_0x7166('0x2b'));_0x16967e[_0x7166('0x33')]=_[_0x7166('0x34')](_0xe8e9b3[_0x7166('0x33')]);_0x16967e[_0x7166('0x35')]=_[_0x7166('0x36')](_0x16967e['model'],_0x16967e[_0x7166('0x33')]);_0x15a542[_0x7166('0x37')]=_[_0x7166('0x36')](_0x16967e['model'],qs[_0x7166('0x38')](_0xe8e9b3[_0x7166('0x33')]['fields']));_0x15a542[_0x7166('0x37')]=_0x15a542[_0x7166('0x37')][_0x7166('0x39')]?_0x15a542['attributes']:_0x16967e['model'];if(!_0xe8e9b3['query']['hasOwnProperty'](_0x7166('0x3a'))){_0x15a542['limit']=qs[_0x7166('0x20')](_0xe8e9b3[_0x7166('0x33')][_0x7166('0x20')]);_0x15a542[_0x7166('0x1d')]=qs[_0x7166('0x1d')](_0xe8e9b3[_0x7166('0x33')][_0x7166('0x1d')]);}_0x15a542[_0x7166('0x3b')]=qs[_0x7166('0x3c')](_0xe8e9b3[_0x7166('0x33')][_0x7166('0x3c')]);_0x15a542[_0x7166('0x3d')]=qs[_0x7166('0x35')](_[_0x7166('0x3e')](_0xe8e9b3['query'],_0x16967e['filters']),_0x42cd53);if(_0xe8e9b3[_0x7166('0x33')][_0x7166('0x3f')]){_0x15a542[_0x7166('0x3d')]=_['merge'](_0x15a542['where'],{'$or':_[_0x7166('0x2e')](_0x42cd53,function(_0x51d7fc){if(_0x51d7fc['type']!==_0x7166('0x40')){var _0x30264d={};_0x30264d[_0x51d7fc[_0x7166('0x2b')]]={'$like':'%'+_0xe8e9b3[_0x7166('0x33')][_0x7166('0x3f')]+'%'};return _0x30264d;}})});}_0x15a542=_[_0x7166('0x41')]({},_0x15a542,_0xe8e9b3['options']);var _0x1fa33b={'where':_0x15a542[_0x7166('0x3d')]};return db['OpenchannelQueue'][_0x7166('0x1f')](_0x1fa33b)['then'](function(_0x52aa17){_0x336259[_0x7166('0x1f')]=_0x52aa17;if(_0xe8e9b3['query'][_0x7166('0x42')]){_0x15a542[_0x7166('0x43')]=[{'all':!![]}];}return db[_0x7166('0x44')][_0x7166('0x45')](_0x15a542);})['then'](function(_0x3cd329){_0x336259[_0x7166('0x46')]=_0x3cd329;return _0x336259;})[_0x7166('0x24')](respondWithFilteredResult(_0xa1da50,_0x15a542))[_0x7166('0x47')](handleError(_0xa1da50,null));};exports['show']=function(_0x3bc0bd,_0x5cb465){var _0x3a7320={'raw':!![],'where':{'id':_0x3bc0bd[_0x7166('0x48')]['id']}},_0xcc9365={};_0xcc9365[_0x7166('0x32')]=_[_0x7166('0x34')](db[_0x7166('0x44')]['rawAttributes']);_0xcc9365[_0x7166('0x33')]=_['keys'](_0x3bc0bd[_0x7166('0x33')]);_0xcc9365[_0x7166('0x35')]=_['intersection'](_0xcc9365[_0x7166('0x32')],_0xcc9365[_0x7166('0x33')]);_0x3a7320[_0x7166('0x37')]=_[_0x7166('0x36')](_0xcc9365['model'],qs['fields'](_0x3bc0bd['query'][_0x7166('0x38')]));_0x3a7320[_0x7166('0x37')]=_0x3a7320[_0x7166('0x37')][_0x7166('0x39')]?_0x3a7320[_0x7166('0x37')]:_0xcc9365[_0x7166('0x32')];if(_0x3bc0bd[_0x7166('0x33')]['includeAll']){_0x3a7320[_0x7166('0x43')]=[{'all':!![]}];}_0x3a7320=_[_0x7166('0x41')]({},_0x3a7320,_0x3bc0bd[_0x7166('0x49')]);return db['OpenchannelQueue'][_0x7166('0x4a')](_0x3a7320)[_0x7166('0x24')](handleEntityNotFound(_0x5cb465,null))['then'](respondWithResult(_0x5cb465,null))['catch'](handleError(_0x5cb465,null));};exports['create']=function(_0x5d3cb3,_0x2f6640){return db[_0x7166('0x44')][_0x7166('0x4b')](_0x5d3cb3[_0x7166('0x4c')],{})[_0x7166('0x24')](function(_0x49c601){var _0x3eebb2=_0x5d3cb3[_0x7166('0x4d')]['get']({'plain':!![]});if(!_0x3eebb2)throw new Error(_0x7166('0x4e'));if(_0x3eebb2[_0x7166('0x4f')]==='user'){var _0x4be5c7=_0x49c601['get']({'plain':!![]});var _0x2bd8e5='OpenchannelQueues';return db[_0x7166('0x50')][_0x7166('0x4a')]({'where':{'name':_0x2bd8e5,'userProfileId':_0x3eebb2[_0x7166('0x51')]},'raw':!![]})[_0x7166('0x24')](function(_0x125237){if(_0x125237&&_0x125237[_0x7166('0x52')]===0x0){return db[_0x7166('0x27')][_0x7166('0x4b')]({'name':_0x4be5c7[_0x7166('0x2b')],'resourceId':_0x4be5c7['id'],'type':_0x125237['name'],'sectionId':_0x125237['id']},{})['then'](function(){return _0x49c601;});}else{return _0x49c601;}})['catch'](function(_0x594e2b){logger[_0x7166('0x2a')](_0x7166('0x53'),_0x594e2b);throw _0x594e2b;});}return _0x49c601;})[_0x7166('0x24')](respondWithResult(_0x2f6640,0xc9))[_0x7166('0x47')](handleError(_0x2f6640,null));};exports['update']=function(_0x11eb90,_0x27f321){if(_0x11eb90[_0x7166('0x4c')]['id']){delete _0x11eb90[_0x7166('0x4c')]['id'];}return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x11eb90[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0x27f321,null))[_0x7166('0x24')](saveUpdates(_0x11eb90[_0x7166('0x4c')],null))[_0x7166('0x24')](respondWithResult(_0x27f321,null))[_0x7166('0x47')](handleError(_0x27f321,null));};exports[_0x7166('0x25')]=function(_0x5e87d4,_0x427fc7){return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x5e87d4[_0x7166('0x48')]['id']}})['then'](handleEntityNotFound(_0x427fc7,null))[_0x7166('0x24')](removeEntity(_0x427fc7,null))[_0x7166('0x47')](handleError(_0x427fc7,null));};exports[_0x7166('0x54')]=function(_0x3ed650,_0x3ed7d9){return db[_0x7166('0x44')][_0x7166('0x54')]()[_0x7166('0x24')](respondWithResult(_0x3ed7d9,null))[_0x7166('0x47')](handleError(_0x3ed7d9,null));};exports[_0x7166('0x55')]=function(_0xef1c75,_0x10bff9,_0x1c8380){var _0x12b48e={'raw':!![],'where':{}},_0x4b710b={},_0x3f307e;return db[_0x7166('0x44')][_0x7166('0x56')]({'where':{'id':_0xef1c75[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0x10bff9,null))['then'](function(_0x41f475){if(_0x41f475){_0x3f307e=_0x41f475[_0x7166('0x57')]({'plain':!![]});_0x4b710b[_0x7166('0x32')]=_['keys'](db[_0x7166('0x58')]['rawAttributes']);_0x4b710b[_0x7166('0x33')]=_[_0x7166('0x34')](_0xef1c75['query']);_0x4b710b[_0x7166('0x35')]=_[_0x7166('0x36')](_0x4b710b[_0x7166('0x32')],_0x4b710b[_0x7166('0x33')]);_0x12b48e['attributes']=_['intersection'](_0x4b710b[_0x7166('0x32')],qs[_0x7166('0x38')](_0xef1c75[_0x7166('0x33')][_0x7166('0x38')]));_0x12b48e[_0x7166('0x37')]=_0x12b48e[_0x7166('0x37')][_0x7166('0x39')]?_0x12b48e[_0x7166('0x37')]:_0x4b710b['model'];if(!_0xef1c75['query']['hasOwnProperty'](_0x7166('0x3a'))){_0x12b48e['limit']=qs[_0x7166('0x20')](_0xef1c75[_0x7166('0x33')][_0x7166('0x20')]);_0x12b48e['offset']=qs[_0x7166('0x1d')](_0xef1c75[_0x7166('0x33')][_0x7166('0x1d')]);}_0x12b48e[_0x7166('0x3b')]=qs[_0x7166('0x3c')](_0xef1c75[_0x7166('0x33')]['sort']);_0x12b48e[_0x7166('0x3d')]=qs[_0x7166('0x35')](_['pick'](_0xef1c75[_0x7166('0x33')],_0x4b710b[_0x7166('0x35')]));_0x12b48e[_0x7166('0x3d')][_0x7166('0x59')]=_0x41f475['id'];if(_0xef1c75[_0x7166('0x33')]['filter']){_0x12b48e[_0x7166('0x3d')]=_['merge'](_0x12b48e[_0x7166('0x3d')],{'$or':_[_0x7166('0x2e')](_0x12b48e[_0x7166('0x37')],function(_0x5b9ede){var _0x498ade={};_0x498ade[_0x5b9ede]={'$like':'%'+_0xef1c75[_0x7166('0x33')][_0x7166('0x3f')]+'%'};return _0x498ade;})});}_0x12b48e=_[_0x7166('0x41')]({},_0x12b48e,_0xef1c75[_0x7166('0x49')]);return db[_0x7166('0x58')][_0x7166('0x45')](_0x12b48e);}})[_0x7166('0x24')](function(_0x11dc78){if(_0x11dc78){return db[_0x7166('0x5a')][_0x7166('0x5b')]({'where':{'id':_[_0x7166('0x2e')](_0x11dc78,_0x7166('0x5c')),'role':_0x7166('0x5d')},'attributes':['id',_0x7166('0x2b'),_0x7166('0x5e'),'updatedAt',_0x7166('0x5f')]});}})[_0x7166('0x24')](function(_0x1ae2b6){if(_0x1ae2b6){return{'count':_0x1ae2b6[_0x7166('0x1f')],'rows':_['map'](_0x1ae2b6[_0x7166('0x46')],function(_0x4609ea){return{'membername':_0x4609ea['name'],'UserId':_0x4609ea['id'],'queue_name':_0x3f307e[_0x7166('0x2b')],'OpenchannelQueueId':_0x3f307e['id'],'interface':util[_0x7166('0x60')]('%s/%s','SIP',_0x4609ea[_0x7166('0x2b')]),'penalty':0x0,'paused':_0x4609ea[_0x7166('0x5e')],'createdAt':_0x4609ea[_0x7166('0x5f')],'updatedAt':_0x4609ea[_0x7166('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x7166('0x24')](respondWithFilteredResult(_0x10bff9,_0x12b48e))[_0x7166('0x47')](handleError(_0x10bff9,null));};exports[_0x7166('0x62')]=function(_0x2aacbf,_0x1dbf09,_0xc29a63){var _0x417b01={};var _0x2167dd={};var _0x432c72;var _0x94fa38;return db[_0x7166('0x44')][_0x7166('0x56')]({'where':{'id':_0x2aacbf[_0x7166('0x48')]['id']}})['then'](handleEntityNotFound(_0x1dbf09,null))[_0x7166('0x24')](function(_0x18bf88){if(_0x18bf88){_0x432c72=_0x18bf88;_0x2167dd['model']=_['keys'](db[_0x7166('0x63')][_0x7166('0x2f')]);_0x2167dd['query']=_[_0x7166('0x34')](_0x2aacbf['query']);_0x2167dd[_0x7166('0x35')]=_[_0x7166('0x36')](_0x2167dd[_0x7166('0x32')],_0x2167dd[_0x7166('0x33')]);_0x417b01[_0x7166('0x37')]=_[_0x7166('0x36')](_0x2167dd[_0x7166('0x32')],qs[_0x7166('0x38')](_0x2aacbf[_0x7166('0x33')][_0x7166('0x38')]));_0x417b01[_0x7166('0x37')]=_0x417b01[_0x7166('0x37')][_0x7166('0x39')]?_0x417b01['attributes']:_0x2167dd['model'];_0x417b01[_0x7166('0x3b')]=qs['sort'](_0x2aacbf[_0x7166('0x33')][_0x7166('0x3c')]);_0x417b01[_0x7166('0x3d')]=qs[_0x7166('0x35')](_[_0x7166('0x3e')](_0x2aacbf[_0x7166('0x33')],_0x2167dd['filters']));if(_0x2aacbf[_0x7166('0x33')][_0x7166('0x3f')]){_0x417b01[_0x7166('0x3d')]=_[_0x7166('0x41')](_0x417b01[_0x7166('0x3d')],{'$or':_[_0x7166('0x2e')](_0x417b01[_0x7166('0x37')],function(_0x1f75c8){var _0x499bf4={};_0x499bf4[_0x1f75c8]={'$like':'%'+_0x2aacbf['query'][_0x7166('0x3f')]+'%'};return _0x499bf4;})});}_0x417b01=_['merge']({},_0x417b01,_0x2aacbf['options']);return _0x432c72[_0x7166('0x62')](_0x417b01);}})['then'](function(_0x1c5051){if(_0x1c5051){_0x94fa38=_0x1c5051[_0x7166('0x39')];if(!_0x2aacbf[_0x7166('0x33')][_0x7166('0x64')](_0x7166('0x3a'))){_0x417b01[_0x7166('0x20')]=qs[_0x7166('0x20')](_0x2aacbf[_0x7166('0x33')][_0x7166('0x20')]);_0x417b01[_0x7166('0x1d')]=qs[_0x7166('0x1d')](_0x2aacbf[_0x7166('0x33')][_0x7166('0x1d')]);}return _0x432c72[_0x7166('0x62')](_0x417b01);}})[_0x7166('0x24')](function(_0x11a7df){if(_0x11a7df){return _0x11a7df?{'count':_0x94fa38,'rows':_0x11a7df}:null;}})[_0x7166('0x24')](respondWithResult(_0x1dbf09,null))['catch'](handleError(_0x1dbf09,null));};exports['addTeams']=function(_0x14fe77,_0x1886f6,_0x33491b){var _0x47d3fa=_0x14fe77[_0x7166('0x4c')][_0x7166('0x65')];return db['Team'][_0x7166('0x45')]({'where':{'id':_0x47d3fa},'attributes':['id'],'include':[{'model':db[_0x7166('0x5a')],'as':_0x7166('0x66'),'attributes':['id',_0x7166('0x2b'),'online','voicePause',_0x7166('0x67')],'raw':!![]}]})[_0x7166('0x24')](function(_0x5539ff){if(_0x5539ff){var _0x3f1dd7=_['flatMap'](_0x5539ff,function(_0x1a67a5){var _0x3ca168=_0x1a67a5[_0x7166('0x57')]({'plain':!![]});return _0x3ca168[_0x7166('0x66')];});return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x14fe77[_0x7166('0x48')]['id']}})[_0x7166('0x24')](function(_0x479ffa){return db[_0x7166('0x68')][_0x7166('0x69')](function(_0x43b231){return _0x479ffa[_0x7166('0x6a')](_0x47d3fa,{'transaction':_0x43b231})[_0x7166('0x24')](function(){return BPromise['each'](_0x3f1dd7,function(_0x13ac38){return db[_0x7166('0x58')][_0x7166('0x6b')]({'where':{'UserId':_0x13ac38['id'],'OpenchannelQueueId':_0x14fe77[_0x7166('0x48')]['id']},'transaction':_0x43b231});});})[_0x7166('0x24')](function(){_0x3f1dd7[_0x7166('0x6c')](function(_0x427aeb){socket[_0x7166('0x6d')]('userOpenchannelQueue:save',{'UserId':_0x427aeb['id'],'OpenchannelQueueId':_0x479ffa['id']});});});});});}})['then'](respondWithStatusCode(_0x1886f6,null))[_0x7166('0x47')](handleError(_0x1886f6,null));};exports[_0x7166('0x6e')]=function(_0x2b5683,_0x1c2300,_0x49b835){return db[_0x7166('0x63')][_0x7166('0x45')]({'where':{'id':_0x2b5683[_0x7166('0x33')][_0x7166('0x65')]},'attributes':['id'],'include':[{'model':db[_0x7166('0x5a')],'as':_0x7166('0x66'),'attributes':['id'],'raw':!![]}]})[_0x7166('0x24')](handleEntityNotFound(_0x1c2300,null))[_0x7166('0x24')](function(_0x4e0c89){var _0x39bbdf=_[_0x7166('0x2e')](_0x4e0c89,'id');var _0x4a1c4b=[];var _0x4ad8c9=[];var _0x4c6b8c=squel['select']();_0x4c6b8c[_0x7166('0x6f')]('tq.TeamId')['from']('team_has_openchannel_queues','tq')['join'](_0x7166('0x70'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x7166('0x3d')](_0x7166('0x71'),_0x2b5683[_0x7166('0x48')]['id']);for(var _0x1fde45=0x0;_0x1fde45<_0x4e0c89[_0x7166('0x39')];_0x1fde45+=0x1){let _0x38cf02=_0x4e0c89[_0x1fde45];for(var _0x2f541c=0x0;_0x2f541c<_0x38cf02['Agents'][_0x7166('0x39')];_0x2f541c+=0x1){let _0x2d3612=_0x38cf02[_0x7166('0x66')][_0x2f541c];var _0x41d730=_0x4c6b8c[_0x7166('0x72')]();_0x41d730[_0x7166('0x3d')](_0x7166('0x73'),_0x2d3612['id']);_0x4ad8c9[_0x7166('0x74')](db['sequelize'][_0x7166('0x33')](_0x41d730['toString'](),{'type':db['sequelize'][_0x7166('0x75')][_0x7166('0x76')]})['then'](function(_0x114f8e){if(_0x114f8e[_0x7166('0x39')]===0x1){return _0x2d3612['id'];}else{var _0x31e12f=_[_0x7166('0x77')](_['map'](_0x114f8e,_0x7166('0x78')),function(_0x3d0883){return _['includes'](_0x39bbdf,_0x3d0883);});if(_0x31e12f){return _0x2d3612['id'];}}}));}}return BPromise[_0x7166('0x79')](_0x4ad8c9)[_0x7166('0x24')](function(_0x262eb1){_0x4a1c4b=_(_0x4a1c4b)['union'](_0x262eb1)['compact']()[_0x7166('0x7a')]();return db['OpenchannelQueue'][_0x7166('0x4a')]({'where':{'id':_0x2b5683[_0x7166('0x48')]['id']}})[_0x7166('0x24')](function(_0x503c3d){return db[_0x7166('0x68')][_0x7166('0x69')](function(_0x2fd388){return _0x503c3d[_0x7166('0x6e')](_0x2b5683[_0x7166('0x33')][_0x7166('0x65')],{'transaction':_0x2fd388})['then'](function(){if(!_[_0x7166('0x7b')](_0x4a1c4b)){return _0x503c3d['removeAgents'](_0x4a1c4b,{'transaction':_0x2fd388});}})[_0x7166('0x24')](function(){_0x4a1c4b['forEach'](function(_0x5c1b48){socket[_0x7166('0x6d')](_0x7166('0x7c'),{'UserId':_0x5c1b48,'OpenchannelQueueId':_0x503c3d['id']});});});});});});})['then'](respondWithStatusCode(_0x1c2300,null))['catch'](handleError(_0x1c2300,null));};exports[_0x7166('0x7d')]=function(_0x7d71da,_0x5b2b50,_0x43d373){return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x7d71da[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0x5b2b50,null))[_0x7166('0x24')](function(_0xebdb8b){if(_0xebdb8b){return _0xebdb8b[_0x7166('0x7d')](_0x7d71da[_0x7166('0x4c')][_0x7166('0x65')],_['omit'](_0x7d71da[_0x7166('0x4c')],[_0x7166('0x65'),'id'])||{})[_0x7166('0x7e')](function(_0x4a2a47){for(var _0x10f479=0x0;_0x10f479<_0x7d71da['body'][_0x7166('0x65')][_0x7166('0x39')];_0x10f479+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x7d71da[_0x7166('0x4c')][_0x7166('0x65')][_0x10f479]),'OpenchannelQueueId':Number(_0x7d71da[_0x7166('0x48')]['id'])});}return _0x4a2a47;});}})[_0x7166('0x24')](respondWithResult(_0x5b2b50,null))[_0x7166('0x47')](handleError(_0x5b2b50,null));};exports[_0x7166('0x7f')]=function(_0x4c3f00,_0x90c0a,_0x17a53a){return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x4c3f00[_0x7166('0x48')]['id']}})['then'](handleEntityNotFound(_0x90c0a,null))[_0x7166('0x24')](function(_0x320235){if(_0x320235){return _0x320235[_0x7166('0x7f')](_0x4c3f00['query'][_0x7166('0x65')])[_0x7166('0x24')](function(){if(_[_0x7166('0x80')](_0x4c3f00['query'][_0x7166('0x65')])){for(var _0x5b5899=0x0;_0x5b5899<_0x4c3f00['query'][_0x7166('0x65')][_0x7166('0x39')];_0x5b5899+=0x1){socket[_0x7166('0x6d')](_0x7166('0x7c'),{'UserId':Number(_0x4c3f00[_0x7166('0x33')][_0x7166('0x65')][_0x5b5899]),'OpenchannelQueueId':Number(_0x4c3f00[_0x7166('0x48')]['id'])});}}else{socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x4c3f00['query'][_0x7166('0x65')]),'OpenchannelQueueId':Number(_0x4c3f00['params']['id'])});}});}})[_0x7166('0x24')](respondWithStatusCode(_0x90c0a,null))[_0x7166('0x47')](handleError(_0x90c0a,null));};exports[_0x7166('0x81')]=function(_0x1865b7,_0xbe2c09,_0x5d72a3){var _0x26927d={};var _0x3872ae={};var _0x13f4c4;var _0x64cec;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x1865b7[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0xbe2c09,null))[_0x7166('0x24')](function(_0x49e3b8){if(_0x49e3b8){_0x13f4c4=_0x49e3b8;_0x3872ae[_0x7166('0x32')]=_['keys'](db[_0x7166('0x5a')][_0x7166('0x2f')]);_0x3872ae[_0x7166('0x33')]=_['keys'](_0x1865b7[_0x7166('0x33')]);_0x3872ae[_0x7166('0x35')]=_[_0x7166('0x36')](_0x3872ae[_0x7166('0x32')],_0x3872ae['query']);_0x26927d['attributes']=_[_0x7166('0x36')](_0x3872ae['model'],qs[_0x7166('0x38')](_0x1865b7[_0x7166('0x33')]['fields']));_0x26927d['attributes']=_0x26927d[_0x7166('0x37')]['length']?_0x26927d['attributes']:_0x3872ae[_0x7166('0x32')];_0x26927d[_0x7166('0x3b')]=qs[_0x7166('0x3c')](_0x1865b7[_0x7166('0x33')]['sort']);_0x26927d[_0x7166('0x3d')]=qs[_0x7166('0x35')](_[_0x7166('0x3e')](_0x1865b7[_0x7166('0x33')],_0x3872ae['filters']));if(_0x1865b7[_0x7166('0x33')][_0x7166('0x3f')]){_0x26927d[_0x7166('0x3d')]=_[_0x7166('0x41')](_0x26927d[_0x7166('0x3d')],{'$or':_[_0x7166('0x2e')](_0x26927d['attributes'],function(_0x21e06b){var _0x45406a={};_0x45406a[_0x21e06b]={'$like':'%'+_0x1865b7[_0x7166('0x33')][_0x7166('0x3f')]+'%'};return _0x45406a;})});}_0x26927d=_[_0x7166('0x41')]({},_0x26927d,_0x1865b7['options']);return _0x13f4c4['getAgents'](_0x26927d);}})[_0x7166('0x24')](function(_0x100cf1){if(_0x100cf1){_0x64cec=_0x100cf1[_0x7166('0x39')];if(!_0x1865b7[_0x7166('0x33')]['hasOwnProperty']('nolimit')){_0x26927d[_0x7166('0x20')]=qs[_0x7166('0x20')](_0x1865b7[_0x7166('0x33')][_0x7166('0x20')]);_0x26927d[_0x7166('0x1d')]=qs[_0x7166('0x1d')](_0x1865b7[_0x7166('0x33')]['offset']);}return _0x13f4c4[_0x7166('0x81')](_0x26927d);}})[_0x7166('0x24')](function(_0x24da13){if(_0x24da13){return _0x24da13?{'count':_0x64cec,'rows':_0x24da13}:null;}})['then'](respondWithResult(_0xbe2c09,null))[_0x7166('0x47')](handleError(_0xbe2c09,null));};
\ No newline at end of file
+var _0xd6d4=['addAgents','omit','spread','removeAgents','getAgents','order','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','OpenchannelQueues','error','stack','name','send','index','rawAttributes','type','key','model','query','keys','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','map','VIRTUAL','options','includeAll','include','rows','catch','show','params','intersection','fields','find','OpenchannelQueue','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','UserOpenchannelQueue','findAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','Team','pick','getTeams','ids','User','Agents','online','voicePause','flatMap','transaction','addTeams','findOrCreate','forEach','emit','userOpenchannelQueue:save','select','field','tq.TeamId','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','sequelize','SELECT','every','includes','all','union','compact','isEmpty','userOpenchannelQueue:remove'];(function(_0xa3463d,_0x32f8da){var _0x50fd67=function(_0xb984fd){while(--_0xb984fd){_0xa3463d['push'](_0xa3463d['shift']());}};_0x50fd67(++_0x32f8da);}(_0xd6d4,0x8c));var _0x4d6d=function(_0x50759b,_0x1a2557){_0x50759b=_0x50759b-0x0;var _0x3a3167=_0xd6d4[_0x50759b];return _0x3a3167;};'use strict';var emlformat=require(_0x4d6d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4d6d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4d6d('0x2'));var moment=require(_0x4d6d('0x3'));var BPromise=require(_0x4d6d('0x4'));var Mustache=require('mustache');var util=require(_0x4d6d('0x5'));var path=require(_0x4d6d('0x6'));var sox=require(_0x4d6d('0x7'));var csv=require(_0x4d6d('0x8'));var ejs=require(_0x4d6d('0x9'));var fs=require('fs');var fs_extra=require(_0x4d6d('0xa'));var _=require(_0x4d6d('0xb'));var squel=require(_0x4d6d('0xc'));var crypto=require('crypto');var jsforce=require(_0x4d6d('0xd'));var deskjs=require(_0x4d6d('0xe'));var toCsv=require(_0x4d6d('0x8'));var querystring=require(_0x4d6d('0xf'));var Papa=require(_0x4d6d('0x10'));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(_0x4d6d('0x11'))(_0x4d6d('0x12'));var utils=require('../../config/utils');var config=require(_0x4d6d('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d6d('0x14'))['db'];config[_0x4d6d('0x15')]=_['defaults'](config[_0x4d6d('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x4d6d('0x16'))(new Redis(config['redis']));require(_0x4d6d('0x17'))[_0x4d6d('0x18')](socket);function respondWithStatusCode(_0xa6760a,_0x5e5882){_0x5e5882=_0x5e5882||0xcc;return function(_0x1259bd){if(_0x1259bd){return _0xa6760a[_0x4d6d('0x19')](_0x5e5882);}return _0xa6760a[_0x4d6d('0x1a')](_0x5e5882)[_0x4d6d('0x1b')]();};}function respondWithResult(_0x42eb61,_0x4067d0){_0x4067d0=_0x4067d0||0xc8;return function(_0x10a43c){if(_0x10a43c){return _0x42eb61[_0x4d6d('0x1a')](_0x4067d0)[_0x4d6d('0x1c')](_0x10a43c);}};}function respondWithFilteredResult(_0xccdda1,_0x4dffc0){return function(_0x10adce){if(_0x10adce){var _0x31ba4d=typeof _0x4dffc0[_0x4d6d('0x1d')]===_0x4d6d('0x1e')&&typeof _0x4dffc0[_0x4d6d('0x1f')]===_0x4d6d('0x1e');var _0xf16491=_0x10adce[_0x4d6d('0x20')];var _0x247856=_0x31ba4d?0x0:_0x4dffc0[_0x4d6d('0x1d')];var _0x1394ff=_0x31ba4d?_0x10adce[_0x4d6d('0x20')]:_0x4dffc0[_0x4d6d('0x1d')]+_0x4dffc0[_0x4d6d('0x1f')];var _0x1f5558;if(_0x1394ff>=_0xf16491){_0x1394ff=_0xf16491;_0x1f5558=0xc8;}else{_0x1f5558=0xce;}_0xccdda1[_0x4d6d('0x1a')](_0x1f5558);return _0xccdda1[_0x4d6d('0x21')](_0x4d6d('0x22'),_0x247856+'-'+_0x1394ff+'/'+_0xf16491)['json'](_0x10adce);}return null;};}function patchUpdates(_0x2b8dd7){return function(_0xd0c0a1){try{jsonpatch[_0x4d6d('0x23')](_0xd0c0a1,_0x2b8dd7,!![]);}catch(_0x26cf93){return BPromise[_0x4d6d('0x24')](_0x26cf93);}return _0xd0c0a1[_0x4d6d('0x25')]();};}function saveUpdates(_0x1a3fdc,_0x21f9b0){return function(_0x56801c){if(_0x56801c){return _0x56801c['update'](_0x1a3fdc)[_0x4d6d('0x26')](function(_0x4a9b91){return _0x4a9b91;});}return null;};}function removeEntity(_0x37ecde,_0x5ee5ad){return function(_0x5699e9){if(_0x5699e9){return _0x5699e9['destroy']()[_0x4d6d('0x26')](function(){var _0x47ecd3=_0x5699e9[_0x4d6d('0x27')]({'plain':!![]});var _0x3d9efb=_0x4d6d('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x3d9efb,'resourceId':_0x47ecd3['id']}})[_0x4d6d('0x26')](function(){return _0x5699e9;});})[_0x4d6d('0x26')](function(){_0x37ecde['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f3e82,_0xc05359){return function(_0x41a339){if(!_0x41a339){_0x3f3e82[_0x4d6d('0x19')](0x194);}return _0x41a339;};}function handleError(_0x304ddf,_0x444407){_0x444407=_0x444407||0x1f4;return function(_0x1d1206){logger[_0x4d6d('0x29')](_0x1d1206[_0x4d6d('0x2a')]);if(_0x1d1206[_0x4d6d('0x2b')]){delete _0x1d1206['name'];}_0x304ddf[_0x4d6d('0x1a')](_0x444407)[_0x4d6d('0x2c')](_0x1d1206);};}exports[_0x4d6d('0x2d')]=function(_0x572882,_0x1f7b7a){var _0x5e5861={},_0x4bafa6={},_0xe3333e={'count':0x0,'rows':[]};var _0x476407=_['map'](db['OpenchannelQueue'][_0x4d6d('0x2e')],function(_0x40485c){return{'name':_0x40485c['fieldName'],'type':_0x40485c[_0x4d6d('0x2f')][_0x4d6d('0x30')]};});_0x4bafa6[_0x4d6d('0x31')]=_['map'](_0x476407,_0x4d6d('0x2b'));_0x4bafa6[_0x4d6d('0x32')]=_[_0x4d6d('0x33')](_0x572882[_0x4d6d('0x32')]);_0x4bafa6['filters']=_['intersection'](_0x4bafa6[_0x4d6d('0x31')],_0x4bafa6[_0x4d6d('0x32')]);_0x5e5861[_0x4d6d('0x34')]=_['intersection'](_0x4bafa6[_0x4d6d('0x31')],qs['fields'](_0x572882[_0x4d6d('0x32')]['fields']));_0x5e5861[_0x4d6d('0x34')]=_0x5e5861[_0x4d6d('0x34')][_0x4d6d('0x35')]?_0x5e5861[_0x4d6d('0x34')]:_0x4bafa6[_0x4d6d('0x31')];if(!_0x572882[_0x4d6d('0x32')][_0x4d6d('0x36')](_0x4d6d('0x37'))){_0x5e5861['limit']=qs[_0x4d6d('0x1f')](_0x572882[_0x4d6d('0x32')][_0x4d6d('0x1f')]);_0x5e5861[_0x4d6d('0x1d')]=qs[_0x4d6d('0x1d')](_0x572882['query'][_0x4d6d('0x1d')]);}_0x5e5861['order']=qs[_0x4d6d('0x38')](_0x572882[_0x4d6d('0x32')]['sort']);_0x5e5861[_0x4d6d('0x39')]=qs[_0x4d6d('0x3a')](_['pick'](_0x572882[_0x4d6d('0x32')],_0x4bafa6[_0x4d6d('0x3a')]),_0x476407);if(_0x572882['query'][_0x4d6d('0x3b')]){_0x5e5861[_0x4d6d('0x39')]=_[_0x4d6d('0x3c')](_0x5e5861[_0x4d6d('0x39')],{'$or':_[_0x4d6d('0x3d')](_0x476407,function(_0xcb01f){if(_0xcb01f[_0x4d6d('0x2f')]!==_0x4d6d('0x3e')){var _0x101b52={};_0x101b52[_0xcb01f[_0x4d6d('0x2b')]]={'$like':'%'+_0x572882[_0x4d6d('0x32')][_0x4d6d('0x3b')]+'%'};return _0x101b52;}})});}_0x5e5861=_['merge']({},_0x5e5861,_0x572882[_0x4d6d('0x3f')]);var _0x3cf96f={'where':_0x5e5861[_0x4d6d('0x39')]};return db['OpenchannelQueue'][_0x4d6d('0x20')](_0x3cf96f)['then'](function(_0x5e12a0){_0xe3333e[_0x4d6d('0x20')]=_0x5e12a0;if(_0x572882['query'][_0x4d6d('0x40')]){_0x5e5861[_0x4d6d('0x41')]=[{'all':!![]}];}return db['OpenchannelQueue']['findAll'](_0x5e5861);})[_0x4d6d('0x26')](function(_0xc15e8c){_0xe3333e[_0x4d6d('0x42')]=_0xc15e8c;return _0xe3333e;})[_0x4d6d('0x26')](respondWithFilteredResult(_0x1f7b7a,_0x5e5861))[_0x4d6d('0x43')](handleError(_0x1f7b7a,null));};exports[_0x4d6d('0x44')]=function(_0xbb56b5,_0x9ee25b){var _0x5d2549={'raw':!![],'where':{'id':_0xbb56b5[_0x4d6d('0x45')]['id']}},_0x5d7f09={};_0x5d7f09[_0x4d6d('0x31')]=_[_0x4d6d('0x33')](db['OpenchannelQueue']['rawAttributes']);_0x5d7f09['query']=_[_0x4d6d('0x33')](_0xbb56b5[_0x4d6d('0x32')]);_0x5d7f09[_0x4d6d('0x3a')]=_[_0x4d6d('0x46')](_0x5d7f09['model'],_0x5d7f09[_0x4d6d('0x32')]);_0x5d2549['attributes']=_[_0x4d6d('0x46')](_0x5d7f09[_0x4d6d('0x31')],qs[_0x4d6d('0x47')](_0xbb56b5[_0x4d6d('0x32')][_0x4d6d('0x47')]));_0x5d2549[_0x4d6d('0x34')]=_0x5d2549['attributes'][_0x4d6d('0x35')]?_0x5d2549[_0x4d6d('0x34')]:_0x5d7f09[_0x4d6d('0x31')];if(_0xbb56b5[_0x4d6d('0x32')]['includeAll']){_0x5d2549['include']=[{'all':!![]}];}_0x5d2549=_['merge']({},_0x5d2549,_0xbb56b5['options']);return db['OpenchannelQueue'][_0x4d6d('0x48')](_0x5d2549)[_0x4d6d('0x26')](handleEntityNotFound(_0x9ee25b,null))[_0x4d6d('0x26')](respondWithResult(_0x9ee25b,null))[_0x4d6d('0x43')](handleError(_0x9ee25b,null));};exports['create']=function(_0x427b9a,_0x32308f){return db[_0x4d6d('0x49')]['create'](_0x427b9a[_0x4d6d('0x4a')],{})[_0x4d6d('0x26')](function(_0xc74a56){var _0x187553=_0x427b9a[_0x4d6d('0x4b')][_0x4d6d('0x27')]({'plain':!![]});if(!_0x187553)throw new Error(_0x4d6d('0x4c'));if(_0x187553[_0x4d6d('0x4d')]===_0x4d6d('0x4b')){var _0x573dd0=_0xc74a56[_0x4d6d('0x27')]({'plain':!![]});var _0x46803e=_0x4d6d('0x28');return db[_0x4d6d('0x4e')][_0x4d6d('0x48')]({'where':{'name':_0x46803e,'userProfileId':_0x187553[_0x4d6d('0x4f')]},'raw':!![]})[_0x4d6d('0x26')](function(_0x85fd90){if(_0x85fd90&&_0x85fd90[_0x4d6d('0x50')]===0x0){return db['UserProfileResource'][_0x4d6d('0x51')]({'name':_0x573dd0[_0x4d6d('0x2b')],'resourceId':_0x573dd0['id'],'type':_0x85fd90[_0x4d6d('0x2b')],'sectionId':_0x85fd90['id']},{})[_0x4d6d('0x26')](function(){return _0xc74a56;});}else{return _0xc74a56;}})[_0x4d6d('0x43')](function(_0x334977){logger[_0x4d6d('0x29')](_0x4d6d('0x52'),_0x334977);throw _0x334977;});}return _0xc74a56;})[_0x4d6d('0x26')](respondWithResult(_0x32308f,0xc9))['catch'](handleError(_0x32308f,null));};exports[_0x4d6d('0x53')]=function(_0x536be8,_0x221e7d){if(_0x536be8[_0x4d6d('0x4a')]['id']){delete _0x536be8['body']['id'];}return db[_0x4d6d('0x49')]['find']({'where':{'id':_0x536be8['params']['id']}})[_0x4d6d('0x26')](handleEntityNotFound(_0x221e7d,null))[_0x4d6d('0x26')](saveUpdates(_0x536be8[_0x4d6d('0x4a')],null))['then'](respondWithResult(_0x221e7d,null))[_0x4d6d('0x43')](handleError(_0x221e7d,null));};exports['destroy']=function(_0xb915e9,_0x585e24){return db[_0x4d6d('0x49')][_0x4d6d('0x48')]({'where':{'id':_0xb915e9[_0x4d6d('0x45')]['id']}})[_0x4d6d('0x26')](handleEntityNotFound(_0x585e24,null))[_0x4d6d('0x26')](removeEntity(_0x585e24,null))[_0x4d6d('0x43')](handleError(_0x585e24,null));};exports[_0x4d6d('0x54')]=function(_0x452fd3,_0x18c141){return db[_0x4d6d('0x49')][_0x4d6d('0x54')]()[_0x4d6d('0x26')](respondWithResult(_0x18c141,null))[_0x4d6d('0x43')](handleError(_0x18c141,null));};exports['getMembers']=function(_0x4e359e,_0x100de7,_0x121d79){var _0x3a847f={'raw':!![],'where':{}},_0x2d0724={},_0x185f3a;return db['OpenchannelQueue'][_0x4d6d('0x55')]({'where':{'id':_0x4e359e[_0x4d6d('0x45')]['id']}})[_0x4d6d('0x26')](handleEntityNotFound(_0x100de7,null))[_0x4d6d('0x26')](function(_0xf7f3c3){if(_0xf7f3c3){_0x185f3a=_0xf7f3c3['get']({'plain':!![]});_0x2d0724[_0x4d6d('0x31')]=_[_0x4d6d('0x33')](db[_0x4d6d('0x56')][_0x4d6d('0x2e')]);_0x2d0724[_0x4d6d('0x32')]=_[_0x4d6d('0x33')](_0x4e359e['query']);_0x2d0724[_0x4d6d('0x3a')]=_['intersection'](_0x2d0724[_0x4d6d('0x31')],_0x2d0724[_0x4d6d('0x32')]);_0x3a847f['attributes']=_[_0x4d6d('0x46')](_0x2d0724[_0x4d6d('0x31')],qs[_0x4d6d('0x47')](_0x4e359e[_0x4d6d('0x32')][_0x4d6d('0x47')]));_0x3a847f[_0x4d6d('0x34')]=_0x3a847f[_0x4d6d('0x34')][_0x4d6d('0x35')]?_0x3a847f[_0x4d6d('0x34')]:_0x2d0724[_0x4d6d('0x31')];if(!_0x4e359e[_0x4d6d('0x32')][_0x4d6d('0x36')](_0x4d6d('0x37'))){_0x3a847f[_0x4d6d('0x1f')]=qs[_0x4d6d('0x1f')](_0x4e359e[_0x4d6d('0x32')]['limit']);_0x3a847f['offset']=qs[_0x4d6d('0x1d')](_0x4e359e[_0x4d6d('0x32')][_0x4d6d('0x1d')]);}_0x3a847f['order']=qs['sort'](_0x4e359e[_0x4d6d('0x32')][_0x4d6d('0x38')]);_0x3a847f['where']=qs[_0x4d6d('0x3a')](_['pick'](_0x4e359e['query'],_0x2d0724[_0x4d6d('0x3a')]));_0x3a847f['where']['OpenchannelQueueId']=_0xf7f3c3['id'];if(_0x4e359e[_0x4d6d('0x32')][_0x4d6d('0x3b')]){_0x3a847f[_0x4d6d('0x39')]=_['merge'](_0x3a847f['where'],{'$or':_[_0x4d6d('0x3d')](_0x3a847f['attributes'],function(_0x487038){var _0xc9e360={};_0xc9e360[_0x487038]={'$like':'%'+_0x4e359e[_0x4d6d('0x32')][_0x4d6d('0x3b')]+'%'};return _0xc9e360;})});}_0x3a847f=_[_0x4d6d('0x3c')]({},_0x3a847f,_0x4e359e[_0x4d6d('0x3f')]);return db['UserOpenchannelQueue'][_0x4d6d('0x57')](_0x3a847f);}})['then'](function(_0x457136){if(_0x457136){return db['User']['findAndCountAll']({'where':{'id':_[_0x4d6d('0x3d')](_0x457136,_0x4d6d('0x58')),'role':_0x4d6d('0x59')},'attributes':['id',_0x4d6d('0x2b'),_0x4d6d('0x5a'),_0x4d6d('0x5b'),_0x4d6d('0x5c')]});}})[_0x4d6d('0x26')](function(_0x2f21b1){if(_0x2f21b1){return{'count':_0x2f21b1[_0x4d6d('0x20')],'rows':_[_0x4d6d('0x3d')](_0x2f21b1['rows'],function(_0xf5b6b0){return{'membername':_0xf5b6b0[_0x4d6d('0x2b')],'UserId':_0xf5b6b0['id'],'queue_name':_0x185f3a['name'],'OpenchannelQueueId':_0x185f3a['id'],'interface':util[_0x4d6d('0x5d')](_0x4d6d('0x5e'),'SIP',_0xf5b6b0['name']),'penalty':0x0,'paused':_0xf5b6b0[_0x4d6d('0x5a')],'createdAt':_0xf5b6b0[_0x4d6d('0x5c')],'updatedAt':_0xf5b6b0[_0x4d6d('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4d6d('0x26')](respondWithFilteredResult(_0x100de7,_0x3a847f))[_0x4d6d('0x43')](handleError(_0x100de7,null));};exports['getTeams']=function(_0x43785e,_0x2110db,_0x283766){var _0x1d3421={};var _0x56805a={};var _0x111df0;var _0xa72342;return db[_0x4d6d('0x49')][_0x4d6d('0x55')]({'where':{'id':_0x43785e[_0x4d6d('0x45')]['id']}})[_0x4d6d('0x26')](handleEntityNotFound(_0x2110db,null))[_0x4d6d('0x26')](function(_0x89439d){if(_0x89439d){_0x111df0=_0x89439d;_0x56805a[_0x4d6d('0x31')]=_['keys'](db[_0x4d6d('0x5f')][_0x4d6d('0x2e')]);_0x56805a[_0x4d6d('0x32')]=_[_0x4d6d('0x33')](_0x43785e[_0x4d6d('0x32')]);_0x56805a[_0x4d6d('0x3a')]=_[_0x4d6d('0x46')](_0x56805a[_0x4d6d('0x31')],_0x56805a[_0x4d6d('0x32')]);_0x1d3421[_0x4d6d('0x34')]=_[_0x4d6d('0x46')](_0x56805a['model'],qs[_0x4d6d('0x47')](_0x43785e[_0x4d6d('0x32')][_0x4d6d('0x47')]));_0x1d3421[_0x4d6d('0x34')]=_0x1d3421[_0x4d6d('0x34')][_0x4d6d('0x35')]?_0x1d3421['attributes']:_0x56805a['model'];_0x1d3421['order']=qs[_0x4d6d('0x38')](_0x43785e[_0x4d6d('0x32')]['sort']);_0x1d3421[_0x4d6d('0x39')]=qs['filters'](_[_0x4d6d('0x60')](_0x43785e['query'],_0x56805a['filters']));if(_0x43785e[_0x4d6d('0x32')][_0x4d6d('0x3b')]){_0x1d3421['where']=_['merge'](_0x1d3421[_0x4d6d('0x39')],{'$or':_[_0x4d6d('0x3d')](_0x1d3421['attributes'],function(_0x2abf73){var _0x471ad0={};_0x471ad0[_0x2abf73]={'$like':'%'+_0x43785e[_0x4d6d('0x32')][_0x4d6d('0x3b')]+'%'};return _0x471ad0;})});}_0x1d3421=_[_0x4d6d('0x3c')]({},_0x1d3421,_0x43785e[_0x4d6d('0x3f')]);return _0x111df0[_0x4d6d('0x61')](_0x1d3421);}})[_0x4d6d('0x26')](function(_0x1317c8){if(_0x1317c8){_0xa72342=_0x1317c8['length'];if(!_0x43785e['query'][_0x4d6d('0x36')](_0x4d6d('0x37'))){_0x1d3421[_0x4d6d('0x1f')]=qs[_0x4d6d('0x1f')](_0x43785e[_0x4d6d('0x32')][_0x4d6d('0x1f')]);_0x1d3421[_0x4d6d('0x1d')]=qs[_0x4d6d('0x1d')](_0x43785e[_0x4d6d('0x32')]['offset']);}return _0x111df0['getTeams'](_0x1d3421);}})['then'](function(_0x36a431){if(_0x36a431){return _0x36a431?{'count':_0xa72342,'rows':_0x36a431}:null;}})[_0x4d6d('0x26')](respondWithResult(_0x2110db,null))[_0x4d6d('0x43')](handleError(_0x2110db,null));};exports['addTeams']=function(_0x44f2da,_0x59c9bd,_0x150d9a){var _0x4b69ad=_0x44f2da[_0x4d6d('0x4a')][_0x4d6d('0x62')];return db[_0x4d6d('0x5f')]['findAll']({'where':{'id':_0x4b69ad},'attributes':['id'],'include':[{'model':db[_0x4d6d('0x63')],'as':_0x4d6d('0x64'),'attributes':['id',_0x4d6d('0x2b'),_0x4d6d('0x65'),_0x4d6d('0x66'),'interface'],'raw':!![]}]})[_0x4d6d('0x26')](function(_0x2d4758){if(_0x2d4758){var _0x22cf2d=_[_0x4d6d('0x67')](_0x2d4758,function(_0x557319){var _0x2de6c4=_0x557319['get']({'plain':!![]});return _0x2de6c4[_0x4d6d('0x64')];});return db[_0x4d6d('0x49')][_0x4d6d('0x48')]({'where':{'id':_0x44f2da['params']['id']}})[_0x4d6d('0x26')](function(_0x3cef33){return db['sequelize'][_0x4d6d('0x68')](function(_0x566a69){return _0x3cef33[_0x4d6d('0x69')](_0x4b69ad,{'transaction':_0x566a69})[_0x4d6d('0x26')](function(){return BPromise['each'](_0x22cf2d,function(_0x45c9b1){return db['UserOpenchannelQueue'][_0x4d6d('0x6a')]({'where':{'UserId':_0x45c9b1['id'],'OpenchannelQueueId':_0x44f2da[_0x4d6d('0x45')]['id']},'transaction':_0x566a69});});})[_0x4d6d('0x26')](function(){_0x22cf2d[_0x4d6d('0x6b')](function(_0x31cfd5){socket[_0x4d6d('0x6c')](_0x4d6d('0x6d'),{'UserId':_0x31cfd5['id'],'OpenchannelQueueId':_0x3cef33['id']});});});});});}})[_0x4d6d('0x26')](respondWithStatusCode(_0x59c9bd,null))[_0x4d6d('0x43')](handleError(_0x59c9bd,null));};exports['removeTeams']=function(_0x5cef73,_0xb49ac3,_0x41584d){return db[_0x4d6d('0x5f')][_0x4d6d('0x57')]({'where':{'id':_0x5cef73[_0x4d6d('0x32')][_0x4d6d('0x62')]},'attributes':['id'],'include':[{'model':db[_0x4d6d('0x63')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xb49ac3,null))[_0x4d6d('0x26')](function(_0x20b896){var _0x1a88d2=_[_0x4d6d('0x3d')](_0x20b896,'id');var _0x1f9c39=[];var _0x108b1b=[];var _0x3c1793=squel[_0x4d6d('0x6e')]();_0x3c1793[_0x4d6d('0x6f')](_0x4d6d('0x70'))['from'](_0x4d6d('0x71'),'tq')['join'](_0x4d6d('0x72'),'ut',_0x4d6d('0x73'))['where']('OpenchannelQueueId\x20=\x20?',_0x5cef73[_0x4d6d('0x45')]['id']);for(var _0x5f0044=0x0;_0x5f0044<_0x20b896['length'];_0x5f0044+=0x1){let _0x16d5d7=_0x20b896[_0x5f0044];for(var _0x21cfaa=0x0;_0x21cfaa<_0x16d5d7[_0x4d6d('0x64')]['length'];_0x21cfaa+=0x1){let _0x39c752=_0x16d5d7[_0x4d6d('0x64')][_0x21cfaa];var _0x197399=_0x3c1793[_0x4d6d('0x74')]();_0x197399['where'](_0x4d6d('0x75'),_0x39c752['id']);_0x108b1b[_0x4d6d('0x76')](db[_0x4d6d('0x77')][_0x4d6d('0x32')](_0x197399['toString'](),{'type':db[_0x4d6d('0x77')]['QueryTypes'][_0x4d6d('0x78')]})[_0x4d6d('0x26')](function(_0x7370fd){if(_0x7370fd[_0x4d6d('0x35')]===0x1){return _0x39c752['id'];}else{var _0x473331=_[_0x4d6d('0x79')](_[_0x4d6d('0x3d')](_0x7370fd,'TeamId'),function(_0x45252d){return _[_0x4d6d('0x7a')](_0x1a88d2,_0x45252d);});if(_0x473331){return _0x39c752['id'];}}}));}}return BPromise[_0x4d6d('0x7b')](_0x108b1b)[_0x4d6d('0x26')](function(_0x50d161){_0x1f9c39=_(_0x1f9c39)[_0x4d6d('0x7c')](_0x50d161)[_0x4d6d('0x7d')]()['value']();return db[_0x4d6d('0x49')][_0x4d6d('0x48')]({'where':{'id':_0x5cef73[_0x4d6d('0x45')]['id']}})[_0x4d6d('0x26')](function(_0x355746){return db[_0x4d6d('0x77')][_0x4d6d('0x68')](function(_0x5382ba){return _0x355746['removeTeams'](_0x5cef73['query']['ids'],{'transaction':_0x5382ba})[_0x4d6d('0x26')](function(){if(!_[_0x4d6d('0x7e')](_0x1f9c39)){return _0x355746['removeAgents'](_0x1f9c39,{'transaction':_0x5382ba});}})[_0x4d6d('0x26')](function(){_0x1f9c39['forEach'](function(_0x5ba826){socket[_0x4d6d('0x6c')](_0x4d6d('0x7f'),{'UserId':_0x5ba826,'OpenchannelQueueId':_0x355746['id']});});});});});});})[_0x4d6d('0x26')](respondWithStatusCode(_0xb49ac3,null))[_0x4d6d('0x43')](handleError(_0xb49ac3,null));};exports[_0x4d6d('0x80')]=function(_0x5975e0,_0x565550,_0x34df13){return db[_0x4d6d('0x49')][_0x4d6d('0x48')]({'where':{'id':_0x5975e0['params']['id']}})[_0x4d6d('0x26')](handleEntityNotFound(_0x565550,null))[_0x4d6d('0x26')](function(_0x57e80c){if(_0x57e80c){return _0x57e80c[_0x4d6d('0x80')](_0x5975e0[_0x4d6d('0x4a')][_0x4d6d('0x62')],_[_0x4d6d('0x81')](_0x5975e0['body'],['ids','id'])||{})[_0x4d6d('0x82')](function(_0x11554b){for(var _0x208133=0x0;_0x208133<_0x5975e0['body'][_0x4d6d('0x62')][_0x4d6d('0x35')];_0x208133+=0x1){socket[_0x4d6d('0x6c')](_0x4d6d('0x6d'),{'UserId':Number(_0x5975e0[_0x4d6d('0x4a')]['ids'][_0x208133]),'OpenchannelQueueId':Number(_0x5975e0['params']['id'])});}return _0x11554b;});}})[_0x4d6d('0x26')](respondWithResult(_0x565550,null))[_0x4d6d('0x43')](handleError(_0x565550,null));};exports[_0x4d6d('0x83')]=function(_0x2ca459,_0x88a789,_0x4d6d1d){return db['OpenchannelQueue']['find']({'where':{'id':_0x2ca459[_0x4d6d('0x45')]['id']}})[_0x4d6d('0x26')](handleEntityNotFound(_0x88a789,null))[_0x4d6d('0x26')](function(_0x4a173f){if(_0x4a173f){return _0x4a173f[_0x4d6d('0x83')](_0x2ca459[_0x4d6d('0x32')][_0x4d6d('0x62')])[_0x4d6d('0x26')](function(){if(_['isArray'](_0x2ca459['query'][_0x4d6d('0x62')])){for(var _0x597cbf=0x0;_0x597cbf<_0x2ca459[_0x4d6d('0x32')]['ids'][_0x4d6d('0x35')];_0x597cbf+=0x1){socket[_0x4d6d('0x6c')]('userOpenchannelQueue:remove',{'UserId':Number(_0x2ca459[_0x4d6d('0x32')]['ids'][_0x597cbf]),'OpenchannelQueueId':Number(_0x2ca459[_0x4d6d('0x45')]['id'])});}}else{socket[_0x4d6d('0x6c')](_0x4d6d('0x7f'),{'UserId':Number(_0x2ca459['query'][_0x4d6d('0x62')]),'OpenchannelQueueId':Number(_0x2ca459[_0x4d6d('0x45')]['id'])});}});}})['then'](respondWithStatusCode(_0x88a789,null))['catch'](handleError(_0x88a789,null));};exports[_0x4d6d('0x84')]=function(_0x43cc4f,_0x5107e7,_0x5e58e5){var _0x5c5858={};var _0x280728={};var _0x22270b;var _0x5cb5f0;return db['OpenchannelQueue'][_0x4d6d('0x55')]({'where':{'id':_0x43cc4f[_0x4d6d('0x45')]['id']}})[_0x4d6d('0x26')](handleEntityNotFound(_0x5107e7,null))[_0x4d6d('0x26')](function(_0x1abd11){if(_0x1abd11){_0x22270b=_0x1abd11;_0x280728['model']=_[_0x4d6d('0x33')](db['User'][_0x4d6d('0x2e')]);_0x280728[_0x4d6d('0x32')]=_['keys'](_0x43cc4f[_0x4d6d('0x32')]);_0x280728['filters']=_[_0x4d6d('0x46')](_0x280728['model'],_0x280728[_0x4d6d('0x32')]);_0x5c5858['attributes']=_['intersection'](_0x280728[_0x4d6d('0x31')],qs[_0x4d6d('0x47')](_0x43cc4f[_0x4d6d('0x32')][_0x4d6d('0x47')]));_0x5c5858[_0x4d6d('0x34')]=_0x5c5858[_0x4d6d('0x34')]['length']?_0x5c5858[_0x4d6d('0x34')]:_0x280728[_0x4d6d('0x31')];_0x5c5858[_0x4d6d('0x85')]=qs[_0x4d6d('0x38')](_0x43cc4f[_0x4d6d('0x32')][_0x4d6d('0x38')]);_0x5c5858['where']=qs[_0x4d6d('0x3a')](_[_0x4d6d('0x60')](_0x43cc4f[_0x4d6d('0x32')],_0x280728[_0x4d6d('0x3a')]));if(_0x43cc4f[_0x4d6d('0x32')][_0x4d6d('0x3b')]){_0x5c5858[_0x4d6d('0x39')]=_[_0x4d6d('0x3c')](_0x5c5858[_0x4d6d('0x39')],{'$or':_['map'](_0x5c5858['attributes'],function(_0x5775a7){var _0x43bf19={};_0x43bf19[_0x5775a7]={'$like':'%'+_0x43cc4f['query'][_0x4d6d('0x3b')]+'%'};return _0x43bf19;})});}_0x5c5858=_[_0x4d6d('0x3c')]({},_0x5c5858,_0x43cc4f[_0x4d6d('0x3f')]);return _0x22270b[_0x4d6d('0x84')](_0x5c5858);}})[_0x4d6d('0x26')](function(_0x452b47){if(_0x452b47){_0x5cb5f0=_0x452b47['length'];if(!_0x43cc4f[_0x4d6d('0x32')][_0x4d6d('0x36')](_0x4d6d('0x37'))){_0x5c5858[_0x4d6d('0x1f')]=qs['limit'](_0x43cc4f[_0x4d6d('0x32')][_0x4d6d('0x1f')]);_0x5c5858[_0x4d6d('0x1d')]=qs[_0x4d6d('0x1d')](_0x43cc4f[_0x4d6d('0x32')][_0x4d6d('0x1d')]);}return _0x22270b[_0x4d6d('0x84')](_0x5c5858);}})[_0x4d6d('0x26')](function(_0x5dc10a){if(_0x5dc10a){return _0x5dc10a?{'count':_0x5cb5f0,'rows':_0x5dc10a}:null;}})[_0x4d6d('0x26')](respondWithResult(_0x5107e7,null))[_0x4d6d('0x43')](handleError(_0x5107e7,null));};
\ No newline at end of file
index 563cb78..1b716aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6870=['remove','emit','hasOwnProperty','hook','exports','OpenchannelQueue','save'];(function(_0x170c1e,_0x38c33f){var _0x1403df=function(_0x39bdd4){while(--_0x39bdd4){_0x170c1e['push'](_0x170c1e['shift']());}};_0x1403df(++_0x38c33f);}(_0x6870,0x83));var _0x0687=function(_0x41c44d,_0x31d1eb){_0x41c44d=_0x41c44d-0x0;var _0x5e00f5=_0x6870[_0x41c44d];return _0x5e00f5;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require('../../mysqldb')['db'][_0x0687('0x0')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0687('0x1'),'afterUpdate':'update','afterDestroy':_0x0687('0x2')};function emitEvent(_0x47cfea){return function(_0x183809,_0x1537f4,_0x45a8fa){OpenchannelQueueEvents['emit'](_0x47cfea+':'+_0x183809['id'],_0x183809);OpenchannelQueueEvents[_0x0687('0x3')](_0x47cfea,_0x183809);_0x45a8fa(null);};}for(var e in events){if(events[_0x0687('0x4')](e)){var event=events[e];OpenchannelQueue[_0x0687('0x5')](e,emitEvent(event));}}module[_0x0687('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x804b=['../../mysqldb','OpenchannelQueue','setMaxListeners','remove','emit','hasOwnProperty','hook','events'];(function(_0x2a5167,_0x4ac282){var _0x45c09f=function(_0xf40c50){while(--_0xf40c50){_0x2a5167['push'](_0x2a5167['shift']());}};_0x45c09f(++_0x4ac282);}(_0x804b,0xc7));var _0xb804=function(_0x18bb6e,_0x41eb45){_0x18bb6e=_0x18bb6e-0x0;var _0x33e58c=_0x804b[_0x18bb6e];return _0x33e58c;};'use strict';var EventEmitter=require(_0xb804('0x0'));var OpenchannelQueue=require(_0xb804('0x1'))['db'][_0xb804('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xb804('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xb804('0x4')};function emitEvent(_0x1acf2d){return function(_0x5aa6a3,_0x1c99ee,_0x1d5436){OpenchannelQueueEvents[_0xb804('0x5')](_0x1acf2d+':'+_0x5aa6a3['id'],_0x5aa6a3);OpenchannelQueueEvents[_0xb804('0x5')](_0x1acf2d,_0x5aa6a3);_0x1d5436(null);};}for(var e in events){if(events[_0xb804('0x6')](e)){var event=events[e];OpenchannelQueue[_0xb804('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index 2d9ec9e..d0a5448 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa718=['../../config/environment','./openchannelQueue.attributes','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x4cc492,_0x162c85){var _0x1f36b9=function(_0xce4b2){while(--_0xce4b2){_0x4cc492['push'](_0x4cc492['shift']());}};_0x1f36b9(++_0x162c85);}(_0xa718,0x7d));var _0x8a71=function(_0x2f0f49,_0x9de0b9){_0x2f0f49=_0x2f0f49-0x0;var _0x5d1bb3=_0xa718[_0x2f0f49];return _0x5d1bb3;};'use strict';var _=require(_0x8a71('0x0'));var util=require(_0x8a71('0x1'));var logger=require(_0x8a71('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8a71('0x3'));var rp=require(_0x8a71('0x4'));var fs=require('fs');var path=require(_0x8a71('0x5'));var rimraf=require(_0x8a71('0x6'));var config=require(_0x8a71('0x7'));var attributes=require(_0x8a71('0x8'));module['exports']=function(_0x3281aa,_0x10e720){return _0x3281aa['define'](_0x8a71('0x9'),attributes,{'tableName':_0x8a71('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6355=['util','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueue.attributes','exports','OpenchannelQueue','lodash'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x6355,0xdb));var _0x5635=function(_0x4bc2ba,_0x537506){_0x4bc2ba=_0x4bc2ba-0x0;var _0xae9c9b=_0x6355[_0x4bc2ba];return _0xae9c9b;};'use strict';var _=require(_0x5635('0x0'));var util=require(_0x5635('0x1'));var logger=require('../../config/logger')(_0x5635('0x2'));var moment=require(_0x5635('0x3'));var BPromise=require(_0x5635('0x4'));var rp=require(_0x5635('0x5'));var fs=require('fs');var path=require(_0x5635('0x6'));var rimraf=require('rimraf');var config=require(_0x5635('0x7'));var attributes=require(_0x5635('0x8'));module[_0x5635('0x9')]=function(_0x81e605,_0x59cec7){return _0x81e605['define'](_0x5635('0xa'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c592788..4739599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f6=['find','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','debug','request\x20sent','stringify','error','code','message','OpenchannelQueue,\x20%s,\x20%s','info','result','catch','OpenchannelQueue','options','raw','where','attributes','limit','include','map','model','GetOpenchannelQueue','ShowOpenchannelQueue'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x34f6,0x161));var _0x634f=function(_0x1fddaf,_0x1968d7){_0x1fddaf=_0x1fddaf-0x0;var _0x22283d=_0x34f6[_0x1fddaf];return _0x22283d;};'use strict';var _=require(_0x634f('0x0'));var util=require(_0x634f('0x1'));var moment=require('moment');var BPromise=require(_0x634f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x634f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x634f('0x4'));var logger=require(_0x634f('0x5'))(_0x634f('0x6'));var config=require(_0x634f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x634f('0x8')]['http']({'port':0x232a});config[_0x634f('0x9')]=_['defaults'](config[_0x634f('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x634f('0x9')]));require('./openchannelQueue.socket')['register'](socket);function respondWithRpcPromise(_0xcb9b5d,_0x5d51ec,_0x44756c){return new BPromise(function(_0x4df3cc,_0x3e135d){return client['request'](_0xcb9b5d,_0x44756c)['then'](function(_0x40a96e){logger['info']('OpenchannelQueue,\x20%s,\x20%s',_0x5d51ec,'request\x20sent');logger[_0x634f('0xa')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x5d51ec,_0x634f('0xb'),JSON[_0x634f('0xc')](_0x40a96e));if(_0x40a96e[_0x634f('0xd')]){if(_0x40a96e[_0x634f('0xd')][_0x634f('0xe')]===0x1f4){logger[_0x634f('0xd')]('OpenchannelQueue,\x20%s,\x20%s',_0x5d51ec,_0x40a96e[_0x634f('0xd')][_0x634f('0xf')]);return _0x3e135d(_0x40a96e[_0x634f('0xd')]['message']);}logger[_0x634f('0xd')](_0x634f('0x10'),_0x5d51ec,_0x40a96e[_0x634f('0xd')][_0x634f('0xf')]);return _0x4df3cc(_0x40a96e[_0x634f('0xd')][_0x634f('0xf')]);}else{logger[_0x634f('0x11')](_0x634f('0x10'),_0x5d51ec,_0x634f('0xb'));_0x4df3cc(_0x40a96e[_0x634f('0x12')]['message']);}})[_0x634f('0x13')](function(_0x4538f1){logger[_0x634f('0xd')](_0x634f('0x10'),_0x5d51ec,_0x4538f1);_0x3e135d(_0x4538f1);});});}exports['GetOpenchannelQueue']=function(_0x88d653){var _0xbcc3aa=this;return new Promise(function(_0x1ef750,_0x422704){return db[_0x634f('0x14')]['findAll']({'raw':_0x88d653[_0x634f('0x15')]?_0x88d653['options'][_0x634f('0x16')]===undefined?!![]:![]:!![],'where':_0x88d653[_0x634f('0x15')]?_0x88d653[_0x634f('0x15')][_0x634f('0x17')]||null:null,'attributes':_0x88d653[_0x634f('0x15')]?_0x88d653[_0x634f('0x15')][_0x634f('0x18')]||null:null,'limit':_0x88d653['options']?_0x88d653[_0x634f('0x15')][_0x634f('0x19')]||null:null,'include':_0x88d653['options']?_0x88d653['options'][_0x634f('0x1a')]?_[_0x634f('0x1b')](_0x88d653[_0x634f('0x15')]['include'],function(_0xabb280){return{'model':db[_0xabb280[_0x634f('0x1c')]],'as':_0xabb280['as'],'attributes':_0xabb280[_0x634f('0x18')],'include':_0xabb280[_0x634f('0x1a')]?_[_0x634f('0x1b')](_0xabb280[_0x634f('0x1a')],function(_0x4431bc){return{'model':db[_0x4431bc[_0x634f('0x1c')]],'as':_0x4431bc['as'],'attributes':_0x4431bc[_0x634f('0x18')],'include':_0x4431bc[_0x634f('0x1a')]?_['map'](_0x4431bc['include'],function(_0x1506a0){return{'model':db[_0x1506a0[_0x634f('0x1c')]],'as':_0x1506a0['as'],'attributes':_0x1506a0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x52bd92){logger[_0x634f('0x11')](_0x634f('0x1d'),_0x88d653);logger[_0x634f('0xa')]('GetOpenchannelQueue',_0x88d653,JSON[_0x634f('0xc')](_0x52bd92));_0x1ef750(_0x52bd92);})[_0x634f('0x13')](function(_0xc43558){logger['error']('GetOpenchannelQueue',_0xc43558[_0x634f('0xf')],_0x88d653);_0x422704(_0xbcc3aa['error'](0x1f4,_0xc43558[_0x634f('0xf')]));});});};exports[_0x634f('0x1e')]=function(_0x4892a6){var _0x35b49b=this;return new Promise(function(_0xbdb4e4,_0xe6edb1){return db[_0x634f('0x14')][_0x634f('0x1f')]({'raw':_0x4892a6['options']?_0x4892a6['options'][_0x634f('0x16')]===undefined?!![]:![]:!![],'where':_0x4892a6[_0x634f('0x15')]?_0x4892a6[_0x634f('0x15')][_0x634f('0x17')]||null:null,'attributes':_0x4892a6[_0x634f('0x15')]?_0x4892a6[_0x634f('0x15')][_0x634f('0x18')]||null:null,'include':_0x4892a6[_0x634f('0x15')]?_0x4892a6['options'][_0x634f('0x1a')]?_[_0x634f('0x1b')](_0x4892a6[_0x634f('0x15')][_0x634f('0x1a')],function(_0x54d6be){return{'model':db[_0x54d6be[_0x634f('0x1c')]],'as':_0x54d6be['as'],'attributes':_0x54d6be['attributes'],'include':_0x54d6be[_0x634f('0x1a')]?_[_0x634f('0x1b')](_0x54d6be[_0x634f('0x1a')],function(_0x445802){return{'model':db[_0x445802[_0x634f('0x1c')]],'as':_0x445802['as'],'attributes':_0x445802['attributes'],'include':_0x445802['include']?_[_0x634f('0x1b')](_0x445802[_0x634f('0x1a')],function(_0x522583){return{'model':db[_0x522583['model']],'as':_0x522583['as'],'attributes':_0x522583[_0x634f('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5a0e2a){logger['info'](_0x634f('0x1e'),_0x4892a6);logger[_0x634f('0xa')](_0x634f('0x1e'),_0x4892a6,JSON['stringify'](_0x5a0e2a));_0xbdb4e4(_0x5a0e2a);})[_0x634f('0x13')](function(_0x920f05){logger[_0x634f('0xd')](_0x634f('0x1e'),_0x920f05[_0x634f('0xf')],_0x4892a6);_0xe6edb1(_0x35b49b[_0x634f('0xd')](0x1f4,_0x920f05['message']));});});};
\ No newline at end of file
+var _0x7ac4=['info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','limit','include','map','model','attributes','ShowOpenchannelQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then'];(function(_0x59795e,_0x8b5bc2){var _0x386fc4=function(_0x2bb55c){while(--_0x2bb55c){_0x59795e['push'](_0x59795e['shift']());}};_0x386fc4(++_0x8b5bc2);}(_0x7ac4,0xe9));var _0x47ac=function(_0x7d5872,_0x37123a){_0x7d5872=_0x7d5872-0x0;var _0x45661c=_0x7ac4[_0x7d5872];return _0x45661c;};'use strict';var _=require('lodash');var util=require(_0x47ac('0x0'));var moment=require(_0x47ac('0x1'));var BPromise=require(_0x47ac('0x2'));var rs=require(_0x47ac('0x3'));var fs=require('fs');var Redis=require(_0x47ac('0x4'));var db=require(_0x47ac('0x5'))['db'];var utils=require(_0x47ac('0x6'));var logger=require(_0x47ac('0x7'))(_0x47ac('0x8'));var config=require(_0x47ac('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x47ac('0xa')][_0x47ac('0xb')]({'port':0x232a});config[_0x47ac('0xc')]=_[_0x47ac('0xd')](config[_0x47ac('0xc')],{'host':_0x47ac('0xe'),'port':0x18eb});var socket=require(_0x47ac('0xf'))(new Redis(config[_0x47ac('0xc')]));require('./openchannelQueue.socket')[_0x47ac('0x10')](socket);function respondWithRpcPromise(_0x445614,_0x417eb0,_0x35514d){return new BPromise(function(_0x405a95,_0x43c3d8){return client[_0x47ac('0x11')](_0x445614,_0x35514d)[_0x47ac('0x12')](function(_0x24633d){logger[_0x47ac('0x13')](_0x47ac('0x14'),_0x417eb0,_0x47ac('0x15'));logger[_0x47ac('0x16')](_0x47ac('0x17'),_0x417eb0,_0x47ac('0x15'),JSON[_0x47ac('0x18')](_0x24633d));if(_0x24633d[_0x47ac('0x19')]){if(_0x24633d[_0x47ac('0x19')][_0x47ac('0x1a')]===0x1f4){logger[_0x47ac('0x19')](_0x47ac('0x14'),_0x417eb0,_0x24633d[_0x47ac('0x19')][_0x47ac('0x1b')]);return _0x43c3d8(_0x24633d[_0x47ac('0x19')][_0x47ac('0x1b')]);}logger[_0x47ac('0x19')](_0x47ac('0x14'),_0x417eb0,_0x24633d[_0x47ac('0x19')][_0x47ac('0x1b')]);return _0x405a95(_0x24633d[_0x47ac('0x19')][_0x47ac('0x1b')]);}else{logger[_0x47ac('0x13')](_0x47ac('0x14'),_0x417eb0,_0x47ac('0x15'));_0x405a95(_0x24633d['result'][_0x47ac('0x1b')]);}})[_0x47ac('0x1c')](function(_0x3fb682){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x417eb0,_0x3fb682);_0x43c3d8(_0x3fb682);});});}exports[_0x47ac('0x1d')]=function(_0x513ab0){var _0x16ce1a=this;return new Promise(function(_0x2b8866,_0xcd417d){return db[_0x47ac('0x1e')][_0x47ac('0x1f')]({'raw':_0x513ab0[_0x47ac('0x20')]?_0x513ab0[_0x47ac('0x20')][_0x47ac('0x21')]===undefined?!![]:![]:!![],'where':_0x513ab0[_0x47ac('0x20')]?_0x513ab0[_0x47ac('0x20')][_0x47ac('0x22')]||null:null,'attributes':_0x513ab0[_0x47ac('0x20')]?_0x513ab0['options']['attributes']||null:null,'limit':_0x513ab0[_0x47ac('0x20')]?_0x513ab0['options'][_0x47ac('0x23')]||null:null,'include':_0x513ab0[_0x47ac('0x20')]?_0x513ab0['options'][_0x47ac('0x24')]?_[_0x47ac('0x25')](_0x513ab0[_0x47ac('0x20')]['include'],function(_0x17335e){return{'model':db[_0x17335e[_0x47ac('0x26')]],'as':_0x17335e['as'],'attributes':_0x17335e[_0x47ac('0x27')],'include':_0x17335e['include']?_[_0x47ac('0x25')](_0x17335e[_0x47ac('0x24')],function(_0x5e1d22){return{'model':db[_0x5e1d22[_0x47ac('0x26')]],'as':_0x5e1d22['as'],'attributes':_0x5e1d22[_0x47ac('0x27')],'include':_0x5e1d22[_0x47ac('0x24')]?_[_0x47ac('0x25')](_0x5e1d22['include'],function(_0x9c4c64){return{'model':db[_0x9c4c64['model']],'as':_0x9c4c64['as'],'attributes':_0x9c4c64[_0x47ac('0x27')]};}):[]};}):[]};}):[]:[]})[_0x47ac('0x12')](function(_0x48db3e){logger[_0x47ac('0x13')](_0x47ac('0x1d'),_0x513ab0);logger[_0x47ac('0x16')]('GetOpenchannelQueue',_0x513ab0,JSON[_0x47ac('0x18')](_0x48db3e));_0x2b8866(_0x48db3e);})[_0x47ac('0x1c')](function(_0x548041){logger[_0x47ac('0x19')]('GetOpenchannelQueue',_0x548041['message'],_0x513ab0);_0xcd417d(_0x16ce1a['error'](0x1f4,_0x548041[_0x47ac('0x1b')]));});});};exports[_0x47ac('0x28')]=function(_0x5b268b){var _0x4248f7=this;return new Promise(function(_0x497731,_0x259c80){return db[_0x47ac('0x1e')][_0x47ac('0x29')]({'raw':_0x5b268b[_0x47ac('0x20')]?_0x5b268b[_0x47ac('0x20')][_0x47ac('0x21')]===undefined?!![]:![]:!![],'where':_0x5b268b[_0x47ac('0x20')]?_0x5b268b['options'][_0x47ac('0x22')]||null:null,'attributes':_0x5b268b[_0x47ac('0x20')]?_0x5b268b['options'][_0x47ac('0x27')]||null:null,'include':_0x5b268b['options']?_0x5b268b[_0x47ac('0x20')]['include']?_['map'](_0x5b268b[_0x47ac('0x20')]['include'],function(_0x396dcf){return{'model':db[_0x396dcf[_0x47ac('0x26')]],'as':_0x396dcf['as'],'attributes':_0x396dcf[_0x47ac('0x27')],'include':_0x396dcf[_0x47ac('0x24')]?_[_0x47ac('0x25')](_0x396dcf[_0x47ac('0x24')],function(_0x57d0ff){return{'model':db[_0x57d0ff['model']],'as':_0x57d0ff['as'],'attributes':_0x57d0ff[_0x47ac('0x27')],'include':_0x57d0ff[_0x47ac('0x24')]?_['map'](_0x57d0ff['include'],function(_0x13a8b5){return{'model':db[_0x13a8b5[_0x47ac('0x26')]],'as':_0x13a8b5['as'],'attributes':_0x13a8b5[_0x47ac('0x27')]};}):[]};}):[]};}):[]:[]})[_0x47ac('0x12')](function(_0x3e92a9){logger[_0x47ac('0x13')]('ShowOpenchannelQueue',_0x5b268b);logger[_0x47ac('0x16')](_0x47ac('0x28'),_0x5b268b,JSON['stringify'](_0x3e92a9));_0x497731(_0x3e92a9);})[_0x47ac('0x1c')](function(_0x54a3c8){logger[_0x47ac('0x19')](_0x47ac('0x28'),_0x54a3c8[_0x47ac('0x1b')],_0x5b268b);_0x259c80(_0x4248f7[_0x47ac('0x19')](0x1f4,_0x54a3c8['message']));});});};
\ No newline at end of file
index f393a4e..f6154fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd554=['remove','update','emit','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save'];(function(_0x28cff0,_0x589001){var _0x3f57f9=function(_0x146185){while(--_0x146185){_0x28cff0['push'](_0x28cff0['shift']());}};_0x3f57f9(++_0x589001);}(_0xd554,0xb2));var _0x4d55=function(_0x35096e,_0x3faf18){_0x35096e=_0x35096e-0x0;var _0x360dd3=_0xd554[_0x35096e];return _0x360dd3;};'use strict';var OpenchannelQueueEvents=require(_0x4d55('0x0'));var events=[_0x4d55('0x1'),_0x4d55('0x2'),_0x4d55('0x3')];function createListener(_0xccb629,_0x5c0daa){return function(_0x4fd104){_0x5c0daa[_0x4d55('0x4')](_0xccb629,_0x4fd104);};}function removeListener(_0x5b21bb,_0x1763fc){return function(){OpenchannelQueueEvents[_0x4d55('0x5')](_0x5b21bb,_0x1763fc);};}exports[_0x4d55('0x6')]=function(_0x5701e1){for(var _0x59cab0=0x0,_0x4263ad=events[_0x4d55('0x7')];_0x59cab0<_0x4263ad;_0x59cab0++){var _0x11e5f4=events[_0x59cab0];var _0x49a2fd=createListener(_0x4d55('0x8')+_0x11e5f4,_0x5701e1);OpenchannelQueueEvents['on'](_0x11e5f4,_0x49a2fd);}};
\ No newline at end of file
+var _0xb774=['removeListener','register','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit'];(function(_0x2f7ae3,_0x223602){var _0x3fcce6=function(_0x1313e5){while(--_0x1313e5){_0x2f7ae3['push'](_0x2f7ae3['shift']());}};_0x3fcce6(++_0x223602);}(_0xb774,0x1d3));var _0x4b77=function(_0x59713a,_0x446808){_0x59713a=_0x59713a-0x0;var _0x3ba098=_0xb774[_0x59713a];return _0x3ba098;};'use strict';var OpenchannelQueueEvents=require(_0x4b77('0x0'));var events=[_0x4b77('0x1'),_0x4b77('0x2'),_0x4b77('0x3')];function createListener(_0x2903d4,_0x337a8b){return function(_0x235aed){_0x337a8b[_0x4b77('0x4')](_0x2903d4,_0x235aed);};}function removeListener(_0x46b2ee,_0x496606){return function(){OpenchannelQueueEvents[_0x4b77('0x5')](_0x46b2ee,_0x496606);};}exports[_0x4b77('0x6')]=function(_0x19e511){for(var _0x47cd2a=0x0,_0x44bebf=events['length'];_0x47cd2a<_0x44bebf;_0x47cd2a++){var _0x278b54=events[_0x47cd2a];var _0x18fe2c=createListener(_0x4b77('0x7')+_0x278b54,_0x19e511);OpenchannelQueueEvents['on'](_0x278b54,_0x18fe2c);}};
\ No newline at end of file
index b3fc5ad..cdb19de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80b4=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','put','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x80b4,0x6b));var _0x480b=function(_0x11f7da,_0x101aef){_0x11f7da=_0x11f7da-0x0;var _0x9fe398=_0x80b4[_0x11f7da];return _0x9fe398;};'use strict';var multer=require(_0x480b('0x0'));var util=require(_0x480b('0x1'));var path=require(_0x480b('0x2'));var timeout=require('connect-timeout');var express=require(_0x480b('0x3'));var router=express[_0x480b('0x4')]();var fs_extra=require(_0x480b('0x5'));var auth=require(_0x480b('0x6'));var interaction=require(_0x480b('0x7'));var config=require(_0x480b('0x8'));var controller=require(_0x480b('0x9'));router[_0x480b('0xa')]('/',auth[_0x480b('0xb')](),controller[_0x480b('0xc')]);router[_0x480b('0xa')](_0x480b('0xd'),auth[_0x480b('0xb')](),controller[_0x480b('0xe')]);router['get']('/:id',auth[_0x480b('0xb')](),controller[_0x480b('0xf')]);router['post']('/',auth[_0x480b('0xb')](),controller['create']);router[_0x480b('0x10')](_0x480b('0x11'),auth[_0x480b('0xb')](),controller[_0x480b('0x12')]);router[_0x480b('0x13')](_0x480b('0x11'),auth[_0x480b('0xb')](),controller[_0x480b('0x14')]);module[_0x480b('0x15')]=router;
\ No newline at end of file
+var _0x2a54=['util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','delete','destroy','exports','multer'];(function(_0xe9d0b6,_0x594ff3){var _0x5eb165=function(_0x4c2294){while(--_0x4c2294){_0xe9d0b6['push'](_0xe9d0b6['shift']());}};_0x5eb165(++_0x594ff3);}(_0x2a54,0xc5));var _0x42a5=function(_0x142a7b,_0xcefdd8){_0x142a7b=_0x142a7b-0x0;var _0x3fbfad=_0x2a54[_0x142a7b];return _0x3fbfad;};'use strict';var multer=require(_0x42a5('0x0'));var util=require(_0x42a5('0x1'));var path=require(_0x42a5('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x42a5('0x3')]();var fs_extra=require(_0x42a5('0x4'));var auth=require(_0x42a5('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x42a5('0x6'));var controller=require(_0x42a5('0x7'));router[_0x42a5('0x8')]('/',auth[_0x42a5('0x9')](),controller[_0x42a5('0xa')]);router[_0x42a5('0x8')]('/describe',auth[_0x42a5('0x9')](),controller[_0x42a5('0xb')]);router['get'](_0x42a5('0xc'),auth[_0x42a5('0x9')](),controller[_0x42a5('0xd')]);router[_0x42a5('0xe')]('/',auth[_0x42a5('0x9')](),controller['create']);router['put'](_0x42a5('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x42a5('0xf')](_0x42a5('0xc'),auth['isAuthenticated'](),controller[_0x42a5('0x10')]);module[_0x42a5('0x11')]=router;
\ No newline at end of file
index d21ee8f..9a8b6c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00ce=['DATE','moment','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x00ce,0x132));var _0xe00c=function(_0x254ac9,_0x22f9d8){_0x254ac9=_0x254ac9-0x0;var _0x3630d3=_0x00ce[_0x254ac9];return _0x3630d3;};'use strict';var moment=require(_0xe00c('0x0'));var Sequelize=require(_0xe00c('0x1'));module[_0xe00c('0x2')]={'uniqueid':{'type':Sequelize[_0xe00c('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xe00c('0x3')]},'joinAt':{'type':Sequelize[_0xe00c('0x4')]},'leaveAt':{'type':Sequelize[_0xe00c('0x4')]},'acceptAt':{'type':Sequelize[_0xe00c('0x4')]},'exitAt':{'type':Sequelize[_0xe00c('0x4')]},'reason':{'type':Sequelize[_0xe00c('0x3')]}};
\ No newline at end of file
+var _0x9ee6=['DATE','sequelize','STRING'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x9ee6,0x94));var _0x69ee=function(_0x146a97,_0x2d8483){_0x146a97=_0x146a97-0x0;var _0x259d5c=_0x9ee6[_0x146a97];return _0x259d5c;};'use strict';var moment=require('moment');var Sequelize=require(_0x69ee('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x69ee('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x69ee('0x2')]},'acceptAt':{'type':Sequelize[_0x69ee('0x2')]},'exitAt':{'type':Sequelize[_0x69ee('0x2')]},'reason':{'type':Sequelize[_0x69ee('0x1')]}};
\ No newline at end of file
index 01a4e57..001ac03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e6a=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','error','stack','name','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','show','params','intersection','find','catch','create','update','body','describe','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs'];(function(_0x4a9771,_0x52429b){var _0x52e0ed=function(_0x5485c0){while(--_0x5485c0){_0x4a9771['push'](_0x4a9771['shift']());}};_0x52e0ed(++_0x52429b);}(_0x8e6a,0xce));var _0xa8e6=function(_0x6deb2b,_0x2aab85){_0x6deb2b=_0x6deb2b-0x0;var _0x1f032f=_0x8e6a[_0x6deb2b];return _0x1f032f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa8e6('0x0'));var jsonpatch=require(_0xa8e6('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa8e6('0x2'));var Mustache=require(_0xa8e6('0x3'));var util=require(_0xa8e6('0x4'));var path=require('path');var sox=require(_0xa8e6('0x5'));var csv=require(_0xa8e6('0x6'));var ejs=require(_0xa8e6('0x7'));var fs=require('fs');var fs_extra=require(_0xa8e6('0x8'));var _=require('lodash');var squel=require(_0xa8e6('0x9'));var crypto=require(_0xa8e6('0xa'));var jsforce=require(_0xa8e6('0xb'));var deskjs=require(_0xa8e6('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa8e6('0xd'));var Papa=require(_0xa8e6('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa8e6('0xf'));var as=require(_0xa8e6('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa8e6('0x11'))(_0xa8e6('0x12'));var utils=require(_0xa8e6('0x13'));var config=require(_0xa8e6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8e6('0x15'))['db'];function respondWithStatusCode(_0x45611d,_0x2231a6){_0x2231a6=_0x2231a6||0xcc;return function(_0x768d52){if(_0x768d52){return _0x45611d[_0xa8e6('0x16')](_0x2231a6);}return _0x45611d[_0xa8e6('0x17')](_0x2231a6)[_0xa8e6('0x18')]();};}function respondWithResult(_0x36a907,_0x31e578){_0x31e578=_0x31e578||0xc8;return function(_0x3e20cc){if(_0x3e20cc){return _0x36a907[_0xa8e6('0x17')](_0x31e578)[_0xa8e6('0x19')](_0x3e20cc);}};}function respondWithFilteredResult(_0x28270b,_0x4a3548){return function(_0x291ed8){if(_0x291ed8){var _0x591ed8=typeof _0x4a3548[_0xa8e6('0x1a')]===_0xa8e6('0x1b')&&typeof _0x4a3548[_0xa8e6('0x1c')]===_0xa8e6('0x1b');var _0x326518=_0x291ed8[_0xa8e6('0x1d')];var _0x2f781a=_0x591ed8?0x0:_0x4a3548[_0xa8e6('0x1a')];var _0x2cf073=_0x591ed8?_0x291ed8[_0xa8e6('0x1d')]:_0x4a3548[_0xa8e6('0x1a')]+_0x4a3548[_0xa8e6('0x1c')];var _0x18e0f8;if(_0x2cf073>=_0x326518){_0x2cf073=_0x326518;_0x18e0f8=0xc8;}else{_0x18e0f8=0xce;}_0x28270b[_0xa8e6('0x17')](_0x18e0f8);return _0x28270b['set']('Content-Range',_0x2f781a+'-'+_0x2cf073+'/'+_0x326518)['json'](_0x291ed8);}return null;};}function patchUpdates(_0x8440e0){return function(_0x1892df){try{jsonpatch[_0xa8e6('0x1e')](_0x1892df,_0x8440e0,!![]);}catch(_0x56ebac){return BPromise[_0xa8e6('0x1f')](_0x56ebac);}return _0x1892df[_0xa8e6('0x20')]();};}function saveUpdates(_0x1a4bc7,_0x38ccbe){return function(_0x4b53e4){if(_0x4b53e4){return _0x4b53e4['update'](_0x1a4bc7)['then'](function(_0x5c97ee){return _0x5c97ee;});}return null;};}function removeEntity(_0x12a386,_0x55786d){return function(_0x586303){if(_0x586303){return _0x586303['destroy']()['then'](function(){_0x12a386['status'](0xcc)[_0xa8e6('0x18')]();});}};}function handleEntityNotFound(_0x109ee4,_0x211a39){return function(_0x219f06){if(!_0x219f06){_0x109ee4[_0xa8e6('0x16')](0x194);}return _0x219f06;};}function handleError(_0x3ddb07,_0x1c841b){_0x1c841b=_0x1c841b||0x1f4;return function(_0x4adc18){logger[_0xa8e6('0x21')](_0x4adc18[_0xa8e6('0x22')]);if(_0x4adc18['name']){delete _0x4adc18[_0xa8e6('0x23')];}_0x3ddb07[_0xa8e6('0x17')](_0x1c841b)['send'](_0x4adc18);};}exports[_0xa8e6('0x24')]=function(_0x5de73e,_0x4e92ff){var _0x198e40={},_0x54f0f1={},_0x50ec6a={'count':0x0,'rows':[]};var _0x4830fb=_[_0xa8e6('0x25')](db[_0xa8e6('0x26')][_0xa8e6('0x27')],function(_0x31abfb){return{'name':_0x31abfb[_0xa8e6('0x28')],'type':_0x31abfb[_0xa8e6('0x29')][_0xa8e6('0x2a')]};});_0x54f0f1[_0xa8e6('0x2b')]=_[_0xa8e6('0x25')](_0x4830fb,'name');_0x54f0f1[_0xa8e6('0x2c')]=_[_0xa8e6('0x2d')](_0x5de73e['query']);_0x54f0f1[_0xa8e6('0x2e')]=_['intersection'](_0x54f0f1['model'],_0x54f0f1['query']);_0x198e40['attributes']=_['intersection'](_0x54f0f1['model'],qs['fields'](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x2f')]));_0x198e40[_0xa8e6('0x30')]=_0x198e40[_0xa8e6('0x30')][_0xa8e6('0x31')]?_0x198e40[_0xa8e6('0x30')]:_0x54f0f1[_0xa8e6('0x2b')];if(!_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x32')](_0xa8e6('0x33'))){_0x198e40[_0xa8e6('0x1c')]=qs[_0xa8e6('0x1c')](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x1c')]);_0x198e40[_0xa8e6('0x1a')]=qs[_0xa8e6('0x1a')](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x1a')]);}_0x198e40[_0xa8e6('0x34')]=qs[_0xa8e6('0x35')](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x35')]);_0x198e40[_0xa8e6('0x36')]=qs['filters'](_[_0xa8e6('0x37')](_0x5de73e[_0xa8e6('0x2c')],_0x54f0f1[_0xa8e6('0x2e')]),_0x4830fb);if(_0x5de73e[_0xa8e6('0x2c')]['filter']){_0x198e40['where']=_[_0xa8e6('0x38')](_0x198e40[_0xa8e6('0x36')],{'$or':_['map'](_0x4830fb,function(_0x542a9e){if(_0x542a9e[_0xa8e6('0x29')]!==_0xa8e6('0x39')){var _0x3f2148={};_0x3f2148[_0x542a9e[_0xa8e6('0x23')]]={'$like':'%'+_0x5de73e['query'][_0xa8e6('0x3a')]+'%'};return _0x3f2148;}})});}_0x198e40=_['merge']({},_0x198e40,_0x5de73e[_0xa8e6('0x3b')]);var _0xac7bbd={'where':_0x198e40[_0xa8e6('0x36')]};return db[_0xa8e6('0x26')][_0xa8e6('0x1d')](_0xac7bbd)[_0xa8e6('0x3c')](function(_0x216117){_0x50ec6a[_0xa8e6('0x1d')]=_0x216117;if(_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x3d')]){_0x198e40[_0xa8e6('0x3e')]=[{'all':!![]}];}return db[_0xa8e6('0x26')][_0xa8e6('0x3f')](_0x198e40);})['then'](function(_0x3e4c2a){_0x50ec6a[_0xa8e6('0x40')]=_0x3e4c2a;return _0x50ec6a;})[_0xa8e6('0x3c')](respondWithFilteredResult(_0x4e92ff,_0x198e40))['catch'](handleError(_0x4e92ff,null));};exports[_0xa8e6('0x41')]=function(_0x2c19ed,_0x2857a1){var _0xc4060b={'raw':!![],'where':{'id':_0x2c19ed[_0xa8e6('0x42')]['id']}},_0x26d65e={};_0x26d65e['model']=_[_0xa8e6('0x2d')](db['OpenchannelQueueReport'][_0xa8e6('0x27')]);_0x26d65e[_0xa8e6('0x2c')]=_[_0xa8e6('0x2d')](_0x2c19ed[_0xa8e6('0x2c')]);_0x26d65e[_0xa8e6('0x2e')]=_[_0xa8e6('0x43')](_0x26d65e['model'],_0x26d65e[_0xa8e6('0x2c')]);_0xc4060b[_0xa8e6('0x30')]=_[_0xa8e6('0x43')](_0x26d65e[_0xa8e6('0x2b')],qs['fields'](_0x2c19ed[_0xa8e6('0x2c')][_0xa8e6('0x2f')]));_0xc4060b['attributes']=_0xc4060b[_0xa8e6('0x30')]['length']?_0xc4060b[_0xa8e6('0x30')]:_0x26d65e['model'];if(_0x2c19ed[_0xa8e6('0x2c')][_0xa8e6('0x3d')]){_0xc4060b[_0xa8e6('0x3e')]=[{'all':!![]}];}_0xc4060b=_[_0xa8e6('0x38')]({},_0xc4060b,_0x2c19ed[_0xa8e6('0x3b')]);return db['OpenchannelQueueReport'][_0xa8e6('0x44')](_0xc4060b)[_0xa8e6('0x3c')](handleEntityNotFound(_0x2857a1,null))[_0xa8e6('0x3c')](respondWithResult(_0x2857a1,null))[_0xa8e6('0x45')](handleError(_0x2857a1,null));};exports[_0xa8e6('0x46')]=function(_0x5ec387,_0x56bca){return db[_0xa8e6('0x26')][_0xa8e6('0x46')](_0x5ec387['body'],{})[_0xa8e6('0x3c')](respondWithResult(_0x56bca,0xc9))[_0xa8e6('0x45')](handleError(_0x56bca,null));};exports[_0xa8e6('0x47')]=function(_0x561087,_0x195d7f){if(_0x561087[_0xa8e6('0x48')]['id']){delete _0x561087[_0xa8e6('0x48')]['id'];}return db[_0xa8e6('0x26')][_0xa8e6('0x44')]({'where':{'id':_0x561087['params']['id']}})[_0xa8e6('0x3c')](handleEntityNotFound(_0x195d7f,null))['then'](saveUpdates(_0x561087[_0xa8e6('0x48')],null))[_0xa8e6('0x3c')](respondWithResult(_0x195d7f,null))[_0xa8e6('0x45')](handleError(_0x195d7f,null));};exports['destroy']=function(_0x4b1ef9,_0x4686db){return db[_0xa8e6('0x26')][_0xa8e6('0x44')]({'where':{'id':_0x4b1ef9[_0xa8e6('0x42')]['id']}})[_0xa8e6('0x3c')](handleEntityNotFound(_0x4686db,null))[_0xa8e6('0x3c')](removeEntity(_0x4686db,null))[_0xa8e6('0x45')](handleError(_0x4686db,null));};exports[_0xa8e6('0x49')]=function(_0x5421f7,_0x1eb051){return db[_0xa8e6('0x26')][_0xa8e6('0x49')]()['then'](respondWithResult(_0x1eb051,null))[_0xa8e6('0x45')](handleError(_0x1eb051,null));};
\ No newline at end of file
+var _0xb500=['sort','where','filters','pick','filter','merge','VIRTUAL','OpenchannelQueueReport','includeAll','rows','show','params','fields','options','find','catch','create','body','update','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','end','error','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x13ed90,_0x2a0242){var _0x2a5e0a=function(_0x471c26){while(--_0x471c26){_0x13ed90['push'](_0x13ed90['shift']());}};_0x2a5e0a(++_0x2a0242);}(_0xb500,0x1d0));var _0x0b50=function(_0x2657ee,_0x2751ef){_0x2657ee=_0x2657ee-0x0;var _0x501804=_0xb500[_0x2657ee];return _0x501804;};'use strict';var emlformat=require(_0x0b50('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0b50('0x1'));var jsonpatch=require(_0x0b50('0x2'));var rp=require(_0x0b50('0x3'));var moment=require(_0x0b50('0x4'));var BPromise=require(_0x0b50('0x5'));var Mustache=require('mustache');var util=require(_0x0b50('0x6'));var path=require(_0x0b50('0x7'));var sox=require(_0x0b50('0x8'));var csv=require(_0x0b50('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0b50('0xa'));var _=require(_0x0b50('0xb'));var squel=require(_0x0b50('0xc'));var crypto=require(_0x0b50('0xd'));var jsforce=require(_0x0b50('0xe'));var deskjs=require(_0x0b50('0xf'));var toCsv=require(_0x0b50('0x9'));var querystring=require('querystring');var Papa=require(_0x0b50('0x10'));var Redis=require(_0x0b50('0x11'));var authService=require(_0x0b50('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0b50('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x0b50('0x14'));var config=require(_0x0b50('0x15'));var licenseUtil=require(_0x0b50('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ef4cd,_0x58f727){_0x58f727=_0x58f727||0xcc;return function(_0x3ad36c){if(_0x3ad36c){return _0x1ef4cd[_0x0b50('0x17')](_0x58f727);}return _0x1ef4cd[_0x0b50('0x18')](_0x58f727)['end']();};}function respondWithResult(_0x23de25,_0x100f84){_0x100f84=_0x100f84||0xc8;return function(_0x290211){if(_0x290211){return _0x23de25['status'](_0x100f84)[_0x0b50('0x19')](_0x290211);}};}function respondWithFilteredResult(_0x4918f7,_0x32c25d){return function(_0x4dda96){if(_0x4dda96){var _0x3f436c=typeof _0x32c25d[_0x0b50('0x1a')]===_0x0b50('0x1b')&&typeof _0x32c25d['limit']===_0x0b50('0x1b');var _0x42a748=_0x4dda96['count'];var _0x4504dc=_0x3f436c?0x0:_0x32c25d[_0x0b50('0x1a')];var _0x9ea20c=_0x3f436c?_0x4dda96[_0x0b50('0x1c')]:_0x32c25d[_0x0b50('0x1a')]+_0x32c25d[_0x0b50('0x1d')];var _0x46eb66;if(_0x9ea20c>=_0x42a748){_0x9ea20c=_0x42a748;_0x46eb66=0xc8;}else{_0x46eb66=0xce;}_0x4918f7['status'](_0x46eb66);return _0x4918f7[_0x0b50('0x1e')](_0x0b50('0x1f'),_0x4504dc+'-'+_0x9ea20c+'/'+_0x42a748)[_0x0b50('0x19')](_0x4dda96);}return null;};}function patchUpdates(_0x2ef005){return function(_0x5a8672){try{jsonpatch[_0x0b50('0x20')](_0x5a8672,_0x2ef005,!![]);}catch(_0x421833){return BPromise['reject'](_0x421833);}return _0x5a8672[_0x0b50('0x21')]();};}function saveUpdates(_0x980eb8,_0x37959c){return function(_0x34c5cf){if(_0x34c5cf){return _0x34c5cf['update'](_0x980eb8)[_0x0b50('0x22')](function(_0x55c98d){return _0x55c98d;});}return null;};}function removeEntity(_0xf572d3,_0xe6fccd){return function(_0x1af316){if(_0x1af316){return _0x1af316[_0x0b50('0x23')]()[_0x0b50('0x22')](function(){_0xf572d3[_0x0b50('0x18')](0xcc)[_0x0b50('0x24')]();});}};}function handleEntityNotFound(_0x129a4f,_0x4c6935){return function(_0x1dd43a){if(!_0x1dd43a){_0x129a4f[_0x0b50('0x17')](0x194);}return _0x1dd43a;};}function handleError(_0xa65099,_0x49adfd){_0x49adfd=_0x49adfd||0x1f4;return function(_0x4ccb1e){logger[_0x0b50('0x25')](_0x4ccb1e['stack']);if(_0x4ccb1e['name']){delete _0x4ccb1e[_0x0b50('0x26')];}_0xa65099[_0x0b50('0x18')](_0x49adfd)[_0x0b50('0x27')](_0x4ccb1e);};}exports[_0x0b50('0x28')]=function(_0x4afbc3,_0x57d231){var _0x197d70={},_0x42b984={},_0x32b5ab={'count':0x0,'rows':[]};var _0x4b0de1=_[_0x0b50('0x29')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x2c0a9b){return{'name':_0x2c0a9b[_0x0b50('0x2a')],'type':_0x2c0a9b[_0x0b50('0x2b')][_0x0b50('0x2c')]};});_0x42b984[_0x0b50('0x2d')]=_[_0x0b50('0x29')](_0x4b0de1,'name');_0x42b984[_0x0b50('0x2e')]=_[_0x0b50('0x2f')](_0x4afbc3[_0x0b50('0x2e')]);_0x42b984['filters']=_[_0x0b50('0x30')](_0x42b984[_0x0b50('0x2d')],_0x42b984[_0x0b50('0x2e')]);_0x197d70[_0x0b50('0x31')]=_[_0x0b50('0x30')](_0x42b984[_0x0b50('0x2d')],qs['fields'](_0x4afbc3[_0x0b50('0x2e')]['fields']));_0x197d70[_0x0b50('0x31')]=_0x197d70[_0x0b50('0x31')][_0x0b50('0x32')]?_0x197d70[_0x0b50('0x31')]:_0x42b984[_0x0b50('0x2d')];if(!_0x4afbc3[_0x0b50('0x2e')][_0x0b50('0x33')](_0x0b50('0x34'))){_0x197d70[_0x0b50('0x1d')]=qs[_0x0b50('0x1d')](_0x4afbc3['query'][_0x0b50('0x1d')]);_0x197d70['offset']=qs[_0x0b50('0x1a')](_0x4afbc3['query'][_0x0b50('0x1a')]);}_0x197d70[_0x0b50('0x35')]=qs[_0x0b50('0x36')](_0x4afbc3[_0x0b50('0x2e')][_0x0b50('0x36')]);_0x197d70[_0x0b50('0x37')]=qs[_0x0b50('0x38')](_[_0x0b50('0x39')](_0x4afbc3[_0x0b50('0x2e')],_0x42b984[_0x0b50('0x38')]),_0x4b0de1);if(_0x4afbc3[_0x0b50('0x2e')][_0x0b50('0x3a')]){_0x197d70[_0x0b50('0x37')]=_[_0x0b50('0x3b')](_0x197d70['where'],{'$or':_[_0x0b50('0x29')](_0x4b0de1,function(_0x1a665f){if(_0x1a665f[_0x0b50('0x2b')]!==_0x0b50('0x3c')){var _0x39908b={};_0x39908b[_0x1a665f[_0x0b50('0x26')]]={'$like':'%'+_0x4afbc3[_0x0b50('0x2e')]['filter']+'%'};return _0x39908b;}})});}_0x197d70=_[_0x0b50('0x3b')]({},_0x197d70,_0x4afbc3['options']);var _0x54d37f={'where':_0x197d70[_0x0b50('0x37')]};return db[_0x0b50('0x3d')]['count'](_0x54d37f)[_0x0b50('0x22')](function(_0x1f6ddc){_0x32b5ab[_0x0b50('0x1c')]=_0x1f6ddc;if(_0x4afbc3[_0x0b50('0x2e')][_0x0b50('0x3e')]){_0x197d70['include']=[{'all':!![]}];}return db[_0x0b50('0x3d')]['findAll'](_0x197d70);})['then'](function(_0x36fa37){_0x32b5ab[_0x0b50('0x3f')]=_0x36fa37;return _0x32b5ab;})['then'](respondWithFilteredResult(_0x57d231,_0x197d70))['catch'](handleError(_0x57d231,null));};exports[_0x0b50('0x40')]=function(_0xf13ec5,_0x306e7d){var _0x589690={'raw':!![],'where':{'id':_0xf13ec5[_0x0b50('0x41')]['id']}},_0x4b923c={};_0x4b923c[_0x0b50('0x2d')]=_[_0x0b50('0x2f')](db['OpenchannelQueueReport']['rawAttributes']);_0x4b923c[_0x0b50('0x2e')]=_[_0x0b50('0x2f')](_0xf13ec5['query']);_0x4b923c['filters']=_[_0x0b50('0x30')](_0x4b923c['model'],_0x4b923c['query']);_0x589690[_0x0b50('0x31')]=_[_0x0b50('0x30')](_0x4b923c[_0x0b50('0x2d')],qs[_0x0b50('0x42')](_0xf13ec5['query']['fields']));_0x589690[_0x0b50('0x31')]=_0x589690['attributes'][_0x0b50('0x32')]?_0x589690[_0x0b50('0x31')]:_0x4b923c[_0x0b50('0x2d')];if(_0xf13ec5[_0x0b50('0x2e')][_0x0b50('0x3e')]){_0x589690['include']=[{'all':!![]}];}_0x589690=_[_0x0b50('0x3b')]({},_0x589690,_0xf13ec5[_0x0b50('0x43')]);return db[_0x0b50('0x3d')][_0x0b50('0x44')](_0x589690)[_0x0b50('0x22')](handleEntityNotFound(_0x306e7d,null))[_0x0b50('0x22')](respondWithResult(_0x306e7d,null))[_0x0b50('0x45')](handleError(_0x306e7d,null));};exports[_0x0b50('0x46')]=function(_0x52f83f,_0x34cceb){return db[_0x0b50('0x3d')][_0x0b50('0x46')](_0x52f83f[_0x0b50('0x47')],{})[_0x0b50('0x22')](respondWithResult(_0x34cceb,0xc9))[_0x0b50('0x45')](handleError(_0x34cceb,null));};exports[_0x0b50('0x48')]=function(_0x16090e,_0x522eb7){if(_0x16090e[_0x0b50('0x47')]['id']){delete _0x16090e[_0x0b50('0x47')]['id'];}return db[_0x0b50('0x3d')]['find']({'where':{'id':_0x16090e[_0x0b50('0x41')]['id']}})[_0x0b50('0x22')](handleEntityNotFound(_0x522eb7,null))['then'](saveUpdates(_0x16090e[_0x0b50('0x47')],null))[_0x0b50('0x22')](respondWithResult(_0x522eb7,null))[_0x0b50('0x45')](handleError(_0x522eb7,null));};exports['destroy']=function(_0x32bf06,_0x2be343){return db[_0x0b50('0x3d')][_0x0b50('0x44')]({'where':{'id':_0x32bf06['params']['id']}})['then'](handleEntityNotFound(_0x2be343,null))[_0x0b50('0x22')](removeEntity(_0x2be343,null))[_0x0b50('0x45')](handleError(_0x2be343,null));};exports[_0x0b50('0x49')]=function(_0x2971ff,_0x2e51b9){return db[_0x0b50('0x3d')]['describe']()[_0x0b50('0x22')](respondWithResult(_0x2e51b9,null))['catch'](handleError(_0x2e51b9,null));};
\ No newline at end of file
index 9fba365..f11f32f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x212b87,_0x2993dd){var _0x2eeb09=function(_0x364c63){while(--_0x364c63){_0x212b87['push'](_0x212b87['shift']());}};_0x2eeb09(++_0x2993dd);}(_0x1261,0x144));var _0x1126=function(_0x12d6c2,_0x409bc8){_0x12d6c2=_0x12d6c2-0x0;var _0x1c9825=_0x1261[_0x12d6c2];return _0x1c9825;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x13d5cb,_0x1e9595){var _0x34844d=function(_0x3837cd){while(--_0x3837cd){_0x13d5cb['push'](_0x13d5cb['shift']());}};_0x34844d(++_0x1e9595);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xc4aa[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 832f772..8cca0df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','where','attributes','limit','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','client','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','create','body'];(function(_0x16b401,_0x47a42f){var _0x5243c7=function(_0x816da7){while(--_0x816da7){_0x16b401['push'](_0x16b401['shift']());}};_0x5243c7(++_0x47a42f);}(_0x7fce,0xdc));var _0xe7fc=function(_0x204fe9,_0x12a628){_0x204fe9=_0x204fe9-0x0;var _0x5c5e91=_0x7fce[_0x204fe9];return _0x5c5e91;};'use strict';var _=require(_0xe7fc('0x0'));var util=require(_0xe7fc('0x1'));var moment=require(_0xe7fc('0x2'));var BPromise=require('bluebird');var rs=require(_0xe7fc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe7fc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe7fc('0x5'))(_0xe7fc('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe7fc('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4665f6,_0x161dca,_0x296b2e){return new BPromise(function(_0x19eeef,_0x22fabf){return client['request'](_0x4665f6,_0x296b2e)[_0xe7fc('0x8')](function(_0x4a1209){logger[_0xe7fc('0x9')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,_0xe7fc('0xa'));logger[_0xe7fc('0xb')](_0xe7fc('0xc'),_0x161dca,_0xe7fc('0xa'),JSON['stringify'](_0x4a1209));if(_0x4a1209[_0xe7fc('0xd')]){if(_0x4a1209[_0xe7fc('0xd')]['code']===0x1f4){logger['error'](_0xe7fc('0xe'),_0x161dca,_0x4a1209['error'][_0xe7fc('0xf')]);return _0x22fabf(_0x4a1209['error']['message']);}logger[_0xe7fc('0xd')](_0xe7fc('0xe'),_0x161dca,_0x4a1209[_0xe7fc('0xd')][_0xe7fc('0xf')]);return _0x19eeef(_0x4a1209[_0xe7fc('0xd')]['message']);}else{logger[_0xe7fc('0x9')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,'request\x20sent');_0x19eeef(_0x4a1209[_0xe7fc('0x10')][_0xe7fc('0xf')]);}})[_0xe7fc('0x11')](function(_0x3a44a6){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,_0x3a44a6);_0x22fabf(_0x3a44a6);});});}exports['CreateOpenchannelQueueReport']=function(_0x4aa4f0){var _0x52902f=this;return new Promise(function(_0x490a99,_0x14515d){return db['OpenchannelQueueReport'][_0xe7fc('0x12')](_0x4aa4f0[_0xe7fc('0x13')],{'raw':_0x4aa4f0[_0xe7fc('0x14')]?_0x4aa4f0[_0xe7fc('0x14')][_0xe7fc('0x15')]===undefined?!![]:![]:!![]})[_0xe7fc('0x8')](function(_0x329051){logger[_0xe7fc('0x9')]('CreateOpenchannelQueueReport',_0x4aa4f0);logger[_0xe7fc('0xb')](_0xe7fc('0x16'),_0x4aa4f0,JSON['stringify'](_0x329051));_0x490a99(_0x329051);})['catch'](function(_0x35bb53){logger[_0xe7fc('0xd')](_0xe7fc('0x16'),_0x35bb53[_0xe7fc('0xf')],_0x4aa4f0);_0x14515d(_0x52902f[_0xe7fc('0xd')](0x1f4,_0x35bb53[_0xe7fc('0xf')]));});});};exports[_0xe7fc('0x17')]=function(_0x1731b6){var _0xb00cb9=this;return new Promise(function(_0x3e7e7e,_0x1d1348){return db[_0xe7fc('0x18')][_0xe7fc('0x19')](_0x1731b6['body'],{'raw':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1a')]||null:null,'attributes':_0x1731b6['options']?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1b')]||null:null,'limit':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1c')]||null:null})[_0xe7fc('0x8')](function(_0x383ca6){logger['info'](_0xe7fc('0x17'),_0x1731b6);logger[_0xe7fc('0xb')]('UpdateOpenchannelQueueReport',_0x1731b6,JSON[_0xe7fc('0x1d')](_0x383ca6));_0x3e7e7e(_0x383ca6);})['catch'](function(_0x39d908){logger[_0xe7fc('0xd')]('UpdateOpenchannelQueueReport',_0x39d908[_0xe7fc('0xf')],_0x1731b6);_0x1d1348(_0xb00cb9['error'](0x1f4,_0x39d908[_0xe7fc('0xf')]));});});};
\ No newline at end of file
+var _0x9ffd=['raw','UpdateOpenchannelQueueReport','update','where','attributes','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','OpenchannelQueueReport,\x20%s,\x20%s','info','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options'];(function(_0x3df871,_0xda2e11){var _0x570f7b=function(_0xfaac78){while(--_0xfaac78){_0x3df871['push'](_0x3df871['shift']());}};_0x570f7b(++_0xda2e11);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x490089,_0x4688ad){_0x490089=_0x490089-0x0;var _0x5d5faf=_0x9ffd[_0x490089];return _0x5d5faf;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13ea8c,_0x270eb2,_0x45c60a){return new BPromise(function(_0x66282d,_0x13954e){return client[_0xd9ff('0xb')](_0x13ea8c,_0x45c60a)[_0xd9ff('0xc')](function(_0x58e728){logger['info']('OpenchannelQueueReport,\x20%s,\x20%s',_0x270eb2,'request\x20sent');logger[_0xd9ff('0xd')](_0xd9ff('0xe'),_0x270eb2,_0xd9ff('0xf'),JSON[_0xd9ff('0x10')](_0x58e728));if(_0x58e728[_0xd9ff('0x11')]){if(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x12')]===0x1f4){logger[_0xd9ff('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x13954e(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x13')]);}logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x66282d(_0x58e728[_0xd9ff('0x11')]['message']);}else{logger[_0xd9ff('0x15')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x270eb2,'request\x20sent');_0x66282d(_0x58e728['result']['message']);}})[_0xd9ff('0x16')](function(_0x4f9d6d){logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x4f9d6d);_0x13954e(_0x4f9d6d);});});}exports[_0xd9ff('0x17')]=function(_0x3afd19){var _0x5f45c4=this;return new Promise(function(_0x2d4df1,_0x3ccf15){return db[_0xd9ff('0x18')][_0xd9ff('0x19')](_0x3afd19[_0xd9ff('0x1a')],{'raw':_0x3afd19[_0xd9ff('0x1b')]?_0x3afd19[_0xd9ff('0x1b')][_0xd9ff('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x4cf8ec){logger[_0xd9ff('0x15')](_0xd9ff('0x17'),_0x3afd19);logger['debug']('CreateOpenchannelQueueReport',_0x3afd19,JSON['stringify'](_0x4cf8ec));_0x2d4df1(_0x4cf8ec);})['catch'](function(_0x1f4d9e){logger['error'](_0xd9ff('0x17'),_0x1f4d9e[_0xd9ff('0x13')],_0x3afd19);_0x3ccf15(_0x5f45c4[_0xd9ff('0x11')](0x1f4,_0x1f4d9e[_0xd9ff('0x13')]));});});};exports[_0xd9ff('0x1d')]=function(_0x42a828){var _0x4b058a=this;return new Promise(function(_0x4fada1,_0x1136e9){return db['OpenchannelQueueReport'][_0xd9ff('0x1e')](_0x42a828['body'],{'raw':_0x42a828[_0xd9ff('0x1b')]?_0x42a828['options'][_0xd9ff('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42a828[_0xd9ff('0x1b')]?_0x42a828[_0xd9ff('0x1b')][_0xd9ff('0x1f')]||null:null,'attributes':_0x42a828['options']?_0x42a828[_0xd9ff('0x1b')][_0xd9ff('0x20')]||null:null,'limit':_0x42a828[_0xd9ff('0x1b')]?_0x42a828[_0xd9ff('0x1b')]['limit']||null:null})[_0xd9ff('0xc')](function(_0x3792d9){logger[_0xd9ff('0x15')](_0xd9ff('0x1d'),_0x42a828);logger[_0xd9ff('0xd')](_0xd9ff('0x1d'),_0x42a828,JSON[_0xd9ff('0x10')](_0x3792d9));_0x4fada1(_0x3792d9);})[_0xd9ff('0x16')](function(_0x3dc443){logger['error'](_0xd9ff('0x1d'),_0x3dc443['message'],_0x42a828);_0x1136e9(_0x4b058a[_0xd9ff('0x11')](0x1f4,_0x3dc443[_0xd9ff('0x13')]));});});};
\ No newline at end of file
index 08c5508..1adad3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d10=['util','path','connect-timeout','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x38483a,_0x47e05d){var _0xc57c28=function(_0x4e6220){while(--_0x4e6220){_0x38483a['push'](_0x38483a['shift']());}};_0xc57c28(++_0x47e05d);}(_0x7d10,0x110));var _0x07d1=function(_0x64c1c0,_0xf8e3e1){_0x64c1c0=_0x64c1c0-0x0;var _0x1b1454=_0x7d10[_0x64c1c0];return _0x1b1454;};'use strict';var multer=require(_0x07d1('0x0'));var util=require(_0x07d1('0x1'));var path=require(_0x07d1('0x2'));var timeout=require(_0x07d1('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x07d1('0x4'));var config=require(_0x07d1('0x5'));var controller=require(_0x07d1('0x6'));router['get']('/',auth[_0x07d1('0x7')](),controller[_0x07d1('0x8')]);router[_0x07d1('0x9')](_0x07d1('0xa'),auth[_0x07d1('0x7')](),controller[_0x07d1('0xb')]);router[_0x07d1('0x9')]('/:id',auth[_0x07d1('0x7')](),controller[_0x07d1('0xc')]);router[_0x07d1('0xd')]('/',auth[_0x07d1('0x7')](),controller[_0x07d1('0xe')]);router[_0x07d1('0xf')](_0x07d1('0x10'),auth[_0x07d1('0x7')](),controller[_0x07d1('0x11')]);router[_0x07d1('0x12')](_0x07d1('0x10'),auth[_0x07d1('0x7')](),controller[_0x07d1('0x13')]);module[_0x07d1('0x14')]=router;
\ No newline at end of file
+var _0xe5a0=['delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','/describe','/:id','show','post','create','put','update'];(function(_0x23925a,_0x168a91){var _0x26577e=function(_0x349029){while(--_0x349029){_0x23925a['push'](_0x23925a['shift']());}};_0x26577e(++_0x168a91);}(_0xe5a0,0x142));var _0x0e5a=function(_0x20ee13,_0x1beae1){_0x20ee13=_0x20ee13-0x0;var _0x2affab=_0xe5a0[_0x20ee13];return _0x2affab;};'use strict';var multer=require(_0x0e5a('0x0'));var util=require(_0x0e5a('0x1'));var path=require(_0x0e5a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0e5a('0x3')]();var fs_extra=require(_0x0e5a('0x4'));var auth=require(_0x0e5a('0x5'));var interaction=require(_0x0e5a('0x6'));var config=require(_0x0e5a('0x7'));var controller=require(_0x0e5a('0x8'));router[_0x0e5a('0x9')]('/',auth[_0x0e5a('0xa')](),controller['index']);router[_0x0e5a('0x9')](_0x0e5a('0xb'),auth[_0x0e5a('0xa')](),controller['describe']);router['get'](_0x0e5a('0xc'),auth[_0x0e5a('0xa')](),controller[_0x0e5a('0xd')]);router[_0x0e5a('0xe')]('/',auth[_0x0e5a('0xa')](),controller[_0x0e5a('0xf')]);router[_0x0e5a('0x10')]('/:id',auth[_0x0e5a('0xa')](),controller[_0x0e5a('0x11')]);router[_0x0e5a('0x12')]('/:id',auth[_0x0e5a('0xa')](),controller['destroy']);module[_0x0e5a('0x13')]=router;
\ No newline at end of file
index 5daeb67..ede28fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x4051be,_0x4e30dc){var _0x10d8e5=function(_0x1ae1c2){while(--_0x1ae1c2){_0x4051be['push'](_0x4051be['shift']());}};_0x10d8e5(++_0x4e30dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0xa91bb6,_0x436b4c){var _0x5e3e02=function(_0x422a71){while(--_0x422a71){_0xa91bb6['push'](_0xa91bb6['shift']());}};_0x5e3e02(++_0x436b4c);}(_0x54ef,0x112));var _0xf54e=function(_0x57b9c6,_0x4d6049){_0x57b9c6=_0x57b9c6-0x0;var _0x4623a0=_0x54ef[_0x57b9c6];return _0x4623a0;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index d30ae46..a208aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2f4=['ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','OpenchannelTransferReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','rimraf','zip-dir','fast-json-patch','bluebird','path','sox'];(function(_0x5b1e1d,_0x56da5b){var _0x4ce3cb=function(_0x3488){while(--_0x3488){_0x5b1e1d['push'](_0x5b1e1d['shift']());}};_0x4ce3cb(++_0x56da5b);}(_0xf2f4,0x92));var _0x4f2f=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xf2f4[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4f2f('0x0'));var zipdir=require(_0x4f2f('0x1'));var jsonpatch=require(_0x4f2f('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4f2f('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4f2f('0x4'));var sox=require(_0x4f2f('0x5'));var csv=require('to-csv');var ejs=require(_0x4f2f('0x6'));var fs=require('fs');var fs_extra=require(_0x4f2f('0x7'));var _=require('lodash');var squel=require(_0x4f2f('0x8'));var crypto=require(_0x4f2f('0x9'));var jsforce=require(_0x4f2f('0xa'));var deskjs=require(_0x4f2f('0xb'));var toCsv=require(_0x4f2f('0xc'));var querystring=require(_0x4f2f('0xd'));var Papa=require(_0x4f2f('0xe'));var Redis=require(_0x4f2f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4f2f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4f2f('0x11'));var logger=require(_0x4f2f('0x12'))(_0x4f2f('0x13'));var utils=require('../../config/utils');var config=require(_0x4f2f('0x14'));var licenseUtil=require(_0x4f2f('0x15'));var db=require(_0x4f2f('0x16'))['db'];function respondWithStatusCode(_0x333b4f,_0x396ba4){_0x396ba4=_0x396ba4||0xcc;return function(_0x2f8b3b){if(_0x2f8b3b){return _0x333b4f[_0x4f2f('0x17')](_0x396ba4);}return _0x333b4f[_0x4f2f('0x18')](_0x396ba4)[_0x4f2f('0x19')]();};}function respondWithResult(_0x55c72e,_0x1154f4){_0x1154f4=_0x1154f4||0xc8;return function(_0xa7b6f){if(_0xa7b6f){return _0x55c72e['status'](_0x1154f4)[_0x4f2f('0x1a')](_0xa7b6f);}};}function respondWithFilteredResult(_0xc5fe87,_0x47e107){return function(_0xeb5c7d){if(_0xeb5c7d){var _0x2532b8=typeof _0x47e107[_0x4f2f('0x1b')]===_0x4f2f('0x1c')&&typeof _0x47e107[_0x4f2f('0x1d')]===_0x4f2f('0x1c');var _0xdcae4c=_0xeb5c7d[_0x4f2f('0x1e')];var _0xc760b7=_0x2532b8?0x0:_0x47e107[_0x4f2f('0x1b')];var _0x44bb58=_0x2532b8?_0xeb5c7d[_0x4f2f('0x1e')]:_0x47e107[_0x4f2f('0x1b')]+_0x47e107['limit'];var _0x1412c6;if(_0x44bb58>=_0xdcae4c){_0x44bb58=_0xdcae4c;_0x1412c6=0xc8;}else{_0x1412c6=0xce;}_0xc5fe87[_0x4f2f('0x18')](_0x1412c6);return _0xc5fe87[_0x4f2f('0x1f')]('Content-Range',_0xc760b7+'-'+_0x44bb58+'/'+_0xdcae4c)[_0x4f2f('0x1a')](_0xeb5c7d);}return null;};}function patchUpdates(_0x488c6a){return function(_0x1ddca6){try{jsonpatch[_0x4f2f('0x20')](_0x1ddca6,_0x488c6a,!![]);}catch(_0x6468c1){return BPromise[_0x4f2f('0x21')](_0x6468c1);}return _0x1ddca6[_0x4f2f('0x22')]();};}function saveUpdates(_0x47bf8e,_0x33a602){return function(_0x3c263a){if(_0x3c263a){return _0x3c263a['update'](_0x47bf8e)[_0x4f2f('0x23')](function(_0x542dd0){return _0x542dd0;});}return null;};}function removeEntity(_0x33880f,_0x4653ef){return function(_0xb82b4d){if(_0xb82b4d){return _0xb82b4d[_0x4f2f('0x24')]()[_0x4f2f('0x23')](function(){_0x33880f[_0x4f2f('0x18')](0xcc)[_0x4f2f('0x19')]();});}};}function handleEntityNotFound(_0x3f5be8,_0x2edd8f){return function(_0x2b5848){if(!_0x2b5848){_0x3f5be8[_0x4f2f('0x17')](0x194);}return _0x2b5848;};}function handleError(_0x36cff8,_0x583b2b){_0x583b2b=_0x583b2b||0x1f4;return function(_0x2882b9){logger[_0x4f2f('0x25')](_0x2882b9[_0x4f2f('0x26')]);if(_0x2882b9[_0x4f2f('0x27')]){delete _0x2882b9[_0x4f2f('0x27')];}_0x36cff8[_0x4f2f('0x18')](_0x583b2b)[_0x4f2f('0x28')](_0x2882b9);};}exports[_0x4f2f('0x29')]=function(_0x4bae08,_0x5d5e9b){var _0x277bde={},_0x34272a={},_0x446614={'count':0x0,'rows':[]};var _0x1ff55e=_['map'](db['OpenchannelTransferReport'][_0x4f2f('0x2a')],function(_0x2c5fc0){return{'name':_0x2c5fc0[_0x4f2f('0x2b')],'type':_0x2c5fc0[_0x4f2f('0x2c')][_0x4f2f('0x2d')]};});_0x34272a[_0x4f2f('0x2e')]=_[_0x4f2f('0x2f')](_0x1ff55e,_0x4f2f('0x27'));_0x34272a['query']=_[_0x4f2f('0x30')](_0x4bae08[_0x4f2f('0x31')]);_0x34272a['filters']=_[_0x4f2f('0x32')](_0x34272a[_0x4f2f('0x2e')],_0x34272a[_0x4f2f('0x31')]);_0x277bde[_0x4f2f('0x33')]=_[_0x4f2f('0x32')](_0x34272a[_0x4f2f('0x2e')],qs[_0x4f2f('0x34')](_0x4bae08['query'][_0x4f2f('0x34')]));_0x277bde[_0x4f2f('0x33')]=_0x277bde[_0x4f2f('0x33')]['length']?_0x277bde[_0x4f2f('0x33')]:_0x34272a[_0x4f2f('0x2e')];if(!_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x35')]('nolimit')){_0x277bde[_0x4f2f('0x1d')]=qs[_0x4f2f('0x1d')](_0x4bae08['query'][_0x4f2f('0x1d')]);_0x277bde[_0x4f2f('0x1b')]=qs[_0x4f2f('0x1b')](_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x1b')]);}_0x277bde[_0x4f2f('0x36')]=qs[_0x4f2f('0x37')](_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x37')]);_0x277bde[_0x4f2f('0x38')]=qs[_0x4f2f('0x39')](_[_0x4f2f('0x3a')](_0x4bae08['query'],_0x34272a[_0x4f2f('0x39')]),_0x1ff55e);if(_0x4bae08[_0x4f2f('0x31')]['filter']){_0x277bde[_0x4f2f('0x38')]=_[_0x4f2f('0x3b')](_0x277bde['where'],{'$or':_[_0x4f2f('0x2f')](_0x1ff55e,function(_0x3b7d0e){if(_0x3b7d0e[_0x4f2f('0x2c')]!==_0x4f2f('0x3c')){var _0x4bf14f={};_0x4bf14f[_0x3b7d0e[_0x4f2f('0x27')]]={'$like':'%'+_0x4bae08['query'][_0x4f2f('0x3d')]+'%'};return _0x4bf14f;}})});}_0x277bde=_[_0x4f2f('0x3b')]({},_0x277bde,_0x4bae08[_0x4f2f('0x3e')]);var _0x13fd62={'where':_0x277bde[_0x4f2f('0x38')]};return db[_0x4f2f('0x3f')][_0x4f2f('0x1e')](_0x13fd62)[_0x4f2f('0x23')](function(_0x592606){_0x446614[_0x4f2f('0x1e')]=_0x592606;if(_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x40')]){_0x277bde[_0x4f2f('0x41')]=[{'all':!![]}];}return db[_0x4f2f('0x3f')][_0x4f2f('0x42')](_0x277bde);})[_0x4f2f('0x23')](function(_0x17117b){_0x446614[_0x4f2f('0x43')]=_0x17117b;return _0x446614;})['then'](respondWithFilteredResult(_0x5d5e9b,_0x277bde))[_0x4f2f('0x44')](handleError(_0x5d5e9b,null));};exports[_0x4f2f('0x45')]=function(_0x5eb933,_0xc3f6d1){var _0x36f65e={'raw':!![],'where':{'id':_0x5eb933[_0x4f2f('0x46')]['id']}},_0x1a14b4={};_0x1a14b4[_0x4f2f('0x2e')]=_[_0x4f2f('0x30')](db[_0x4f2f('0x3f')][_0x4f2f('0x2a')]);_0x1a14b4[_0x4f2f('0x31')]=_[_0x4f2f('0x30')](_0x5eb933['query']);_0x1a14b4[_0x4f2f('0x39')]=_[_0x4f2f('0x32')](_0x1a14b4[_0x4f2f('0x2e')],_0x1a14b4[_0x4f2f('0x31')]);_0x36f65e[_0x4f2f('0x33')]=_[_0x4f2f('0x32')](_0x1a14b4[_0x4f2f('0x2e')],qs[_0x4f2f('0x34')](_0x5eb933[_0x4f2f('0x31')][_0x4f2f('0x34')]));_0x36f65e['attributes']=_0x36f65e[_0x4f2f('0x33')]['length']?_0x36f65e[_0x4f2f('0x33')]:_0x1a14b4['model'];if(_0x5eb933[_0x4f2f('0x31')][_0x4f2f('0x40')]){_0x36f65e[_0x4f2f('0x41')]=[{'all':!![]}];}_0x36f65e=_[_0x4f2f('0x3b')]({},_0x36f65e,_0x5eb933[_0x4f2f('0x3e')]);return db[_0x4f2f('0x3f')][_0x4f2f('0x47')](_0x36f65e)[_0x4f2f('0x23')](handleEntityNotFound(_0xc3f6d1,null))['then'](respondWithResult(_0xc3f6d1,null))[_0x4f2f('0x44')](handleError(_0xc3f6d1,null));};exports[_0x4f2f('0x48')]=function(_0x1c55ee,_0x5de005){return db[_0x4f2f('0x3f')][_0x4f2f('0x48')](_0x1c55ee[_0x4f2f('0x49')],{})['then'](respondWithResult(_0x5de005,0xc9))[_0x4f2f('0x44')](handleError(_0x5de005,null));};exports[_0x4f2f('0x4a')]=function(_0x199d93,_0x396265){if(_0x199d93[_0x4f2f('0x49')]['id']){delete _0x199d93[_0x4f2f('0x49')]['id'];}return db[_0x4f2f('0x3f')]['find']({'where':{'id':_0x199d93[_0x4f2f('0x46')]['id']}})[_0x4f2f('0x23')](handleEntityNotFound(_0x396265,null))['then'](saveUpdates(_0x199d93['body'],null))[_0x4f2f('0x23')](respondWithResult(_0x396265,null))[_0x4f2f('0x44')](handleError(_0x396265,null));};exports[_0x4f2f('0x24')]=function(_0x531e46,_0x117fb0){return db[_0x4f2f('0x3f')]['find']({'where':{'id':_0x531e46[_0x4f2f('0x46')]['id']}})[_0x4f2f('0x23')](handleEntityNotFound(_0x117fb0,null))[_0x4f2f('0x23')](removeEntity(_0x117fb0,null))[_0x4f2f('0x44')](handleError(_0x117fb0,null));};exports[_0x4f2f('0x4b')]=function(_0x1c5409,_0x3950d7){return db['OpenchannelTransferReport'][_0x4f2f('0x4b')]()[_0x4f2f('0x23')](respondWithResult(_0x3950d7,null))[_0x4f2f('0x44')](handleError(_0x3950d7,null));};
\ No newline at end of file
+var _0x727e=['key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','map','VIRTUAL','includeAll','include','findAll','catch','show','params','fields','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','jsforce','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','undefined','count','limit','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','OpenchannelTransferReport','rawAttributes','fieldName','type'];(function(_0x276acf,_0x2ba93f){var _0x3d3990=function(_0x493db9){while(--_0x493db9){_0x276acf['push'](_0x276acf['shift']());}};_0x3d3990(++_0x2ba93f);}(_0x727e,0x148));var _0xe727=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x727e[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0xe727('0x0'));var rimraf=require(_0xe727('0x1'));var zipdir=require(_0xe727('0x2'));var jsonpatch=require(_0xe727('0x3'));var rp=require(_0xe727('0x4'));var moment=require('moment');var BPromise=require(_0xe727('0x5'));var Mustache=require(_0xe727('0x6'));var util=require(_0xe727('0x7'));var path=require(_0xe727('0x8'));var sox=require(_0xe727('0x9'));var csv=require(_0xe727('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe727('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe727('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe727('0xa'));var querystring=require('querystring');var Papa=require(_0xe727('0xd'));var Redis=require(_0xe727('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe727('0xf'));var as=require(_0xe727('0x10'));var hardwareService=require(_0xe727('0x11'));var logger=require(_0xe727('0x12'))(_0xe727('0x13'));var utils=require(_0xe727('0x14'));var config=require(_0xe727('0x15'));var licenseUtil=require(_0xe727('0x16'));var db=require(_0xe727('0x17'))['db'];function respondWithStatusCode(_0xd11750,_0x217735){_0x217735=_0x217735||0xcc;return function(_0x4ba2fb){if(_0x4ba2fb){return _0xd11750[_0xe727('0x18')](_0x217735);}return _0xd11750['status'](_0x217735)['end']();};}function respondWithResult(_0x3726ab,_0x44d9fd){_0x44d9fd=_0x44d9fd||0xc8;return function(_0x2dab78){if(_0x2dab78){return _0x3726ab[_0xe727('0x19')](_0x44d9fd)[_0xe727('0x1a')](_0x2dab78);}};}function respondWithFilteredResult(_0x51a484,_0x4f32cb){return function(_0x40a9d8){if(_0x40a9d8){var _0x4ced96=typeof _0x4f32cb[_0xe727('0x1b')]===_0xe727('0x1c')&&typeof _0x4f32cb['limit']===_0xe727('0x1c');var _0x54d5e9=_0x40a9d8[_0xe727('0x1d')];var _0x1364cf=_0x4ced96?0x0:_0x4f32cb[_0xe727('0x1b')];var _0xd61418=_0x4ced96?_0x40a9d8[_0xe727('0x1d')]:_0x4f32cb[_0xe727('0x1b')]+_0x4f32cb[_0xe727('0x1e')];var _0x3b8a5b;if(_0xd61418>=_0x54d5e9){_0xd61418=_0x54d5e9;_0x3b8a5b=0xc8;}else{_0x3b8a5b=0xce;}_0x51a484[_0xe727('0x19')](_0x3b8a5b);return _0x51a484['set'](_0xe727('0x1f'),_0x1364cf+'-'+_0xd61418+'/'+_0x54d5e9)['json'](_0x40a9d8);}return null;};}function patchUpdates(_0x382d67){return function(_0x2d8592){try{jsonpatch[_0xe727('0x20')](_0x2d8592,_0x382d67,!![]);}catch(_0x29dae9){return BPromise['reject'](_0x29dae9);}return _0x2d8592[_0xe727('0x21')]();};}function saveUpdates(_0x17d512,_0x17f3b0){return function(_0x1d09f4){if(_0x1d09f4){return _0x1d09f4[_0xe727('0x22')](_0x17d512)[_0xe727('0x23')](function(_0x43d97b){return _0x43d97b;});}return null;};}function removeEntity(_0x47f0b7,_0x3826c8){return function(_0x3fd6d6){if(_0x3fd6d6){return _0x3fd6d6[_0xe727('0x24')]()[_0xe727('0x23')](function(){_0x47f0b7['status'](0xcc)[_0xe727('0x25')]();});}};}function handleEntityNotFound(_0x1a74e0,_0x2534c5){return function(_0xdb3277){if(!_0xdb3277){_0x1a74e0[_0xe727('0x18')](0x194);}return _0xdb3277;};}function handleError(_0x1c68e8,_0x122ef5){_0x122ef5=_0x122ef5||0x1f4;return function(_0x49abd5){logger[_0xe727('0x26')](_0x49abd5[_0xe727('0x27')]);if(_0x49abd5[_0xe727('0x28')]){delete _0x49abd5[_0xe727('0x28')];}_0x1c68e8[_0xe727('0x19')](_0x122ef5)[_0xe727('0x29')](_0x49abd5);};}exports[_0xe727('0x2a')]=function(_0x69a16a,_0x389db6){var _0x1446b1={},_0x2cf930={},_0x41daf2={'count':0x0,'rows':[]};var _0x239b5d=_['map'](db[_0xe727('0x2b')][_0xe727('0x2c')],function(_0x56eb82){return{'name':_0x56eb82[_0xe727('0x2d')],'type':_0x56eb82[_0xe727('0x2e')][_0xe727('0x2f')]};});_0x2cf930[_0xe727('0x30')]=_['map'](_0x239b5d,_0xe727('0x28'));_0x2cf930[_0xe727('0x31')]=_[_0xe727('0x32')](_0x69a16a[_0xe727('0x31')]);_0x2cf930[_0xe727('0x33')]=_[_0xe727('0x34')](_0x2cf930[_0xe727('0x30')],_0x2cf930[_0xe727('0x31')]);_0x1446b1[_0xe727('0x35')]=_[_0xe727('0x34')](_0x2cf930[_0xe727('0x30')],qs['fields'](_0x69a16a[_0xe727('0x31')]['fields']));_0x1446b1[_0xe727('0x35')]=_0x1446b1[_0xe727('0x35')][_0xe727('0x36')]?_0x1446b1[_0xe727('0x35')]:_0x2cf930[_0xe727('0x30')];if(!_0x69a16a[_0xe727('0x31')][_0xe727('0x37')]('nolimit')){_0x1446b1['limit']=qs[_0xe727('0x1e')](_0x69a16a['query'][_0xe727('0x1e')]);_0x1446b1[_0xe727('0x1b')]=qs['offset'](_0x69a16a['query'][_0xe727('0x1b')]);}_0x1446b1[_0xe727('0x38')]=qs[_0xe727('0x39')](_0x69a16a['query'][_0xe727('0x39')]);_0x1446b1[_0xe727('0x3a')]=qs['filters'](_[_0xe727('0x3b')](_0x69a16a['query'],_0x2cf930[_0xe727('0x33')]),_0x239b5d);if(_0x69a16a[_0xe727('0x31')][_0xe727('0x3c')]){_0x1446b1[_0xe727('0x3a')]=_['merge'](_0x1446b1[_0xe727('0x3a')],{'$or':_[_0xe727('0x3d')](_0x239b5d,function(_0xec1c91){if(_0xec1c91['type']!==_0xe727('0x3e')){var _0x2b466a={};_0x2b466a[_0xec1c91['name']]={'$like':'%'+_0x69a16a['query']['filter']+'%'};return _0x2b466a;}})});}_0x1446b1=_['merge']({},_0x1446b1,_0x69a16a['options']);var _0x2a2518={'where':_0x1446b1[_0xe727('0x3a')]};return db[_0xe727('0x2b')][_0xe727('0x1d')](_0x2a2518)[_0xe727('0x23')](function(_0x15e094){_0x41daf2[_0xe727('0x1d')]=_0x15e094;if(_0x69a16a[_0xe727('0x31')][_0xe727('0x3f')]){_0x1446b1[_0xe727('0x40')]=[{'all':!![]}];}return db[_0xe727('0x2b')][_0xe727('0x41')](_0x1446b1);})[_0xe727('0x23')](function(_0x15b808){_0x41daf2['rows']=_0x15b808;return _0x41daf2;})[_0xe727('0x23')](respondWithFilteredResult(_0x389db6,_0x1446b1))[_0xe727('0x42')](handleError(_0x389db6,null));};exports[_0xe727('0x43')]=function(_0x1cc1e5,_0xe609f5){var _0x2614ca={'raw':!![],'where':{'id':_0x1cc1e5[_0xe727('0x44')]['id']}},_0xbd901={};_0xbd901[_0xe727('0x30')]=_['keys'](db['OpenchannelTransferReport']['rawAttributes']);_0xbd901[_0xe727('0x31')]=_[_0xe727('0x32')](_0x1cc1e5[_0xe727('0x31')]);_0xbd901[_0xe727('0x33')]=_[_0xe727('0x34')](_0xbd901[_0xe727('0x30')],_0xbd901[_0xe727('0x31')]);_0x2614ca[_0xe727('0x35')]=_[_0xe727('0x34')](_0xbd901['model'],qs[_0xe727('0x45')](_0x1cc1e5[_0xe727('0x31')][_0xe727('0x45')]));_0x2614ca[_0xe727('0x35')]=_0x2614ca[_0xe727('0x35')]['length']?_0x2614ca['attributes']:_0xbd901['model'];if(_0x1cc1e5[_0xe727('0x31')][_0xe727('0x3f')]){_0x2614ca[_0xe727('0x40')]=[{'all':!![]}];}_0x2614ca=_['merge']({},_0x2614ca,_0x1cc1e5[_0xe727('0x46')]);return db[_0xe727('0x2b')][_0xe727('0x47')](_0x2614ca)[_0xe727('0x23')](handleEntityNotFound(_0xe609f5,null))[_0xe727('0x23')](respondWithResult(_0xe609f5,null))[_0xe727('0x42')](handleError(_0xe609f5,null));};exports[_0xe727('0x48')]=function(_0x104f6f,_0x51de1c){return db[_0xe727('0x2b')][_0xe727('0x48')](_0x104f6f[_0xe727('0x49')],{})[_0xe727('0x23')](respondWithResult(_0x51de1c,0xc9))[_0xe727('0x42')](handleError(_0x51de1c,null));};exports[_0xe727('0x22')]=function(_0x49e4fa,_0x3a0b62){if(_0x49e4fa['body']['id']){delete _0x49e4fa[_0xe727('0x49')]['id'];}return db[_0xe727('0x2b')][_0xe727('0x47')]({'where':{'id':_0x49e4fa[_0xe727('0x44')]['id']}})[_0xe727('0x23')](handleEntityNotFound(_0x3a0b62,null))[_0xe727('0x23')](saveUpdates(_0x49e4fa[_0xe727('0x49')],null))[_0xe727('0x23')](respondWithResult(_0x3a0b62,null))[_0xe727('0x42')](handleError(_0x3a0b62,null));};exports[_0xe727('0x24')]=function(_0x1765cf,_0x429a17){return db[_0xe727('0x2b')][_0xe727('0x47')]({'where':{'id':_0x1765cf[_0xe727('0x44')]['id']}})['then'](handleEntityNotFound(_0x429a17,null))[_0xe727('0x23')](removeEntity(_0x429a17,null))[_0xe727('0x42')](handleError(_0x429a17,null));};exports['describe']=function(_0x295d8e,_0x5520fb){return db['OpenchannelTransferReport'][_0xe727('0x4a')]()[_0xe727('0x23')](respondWithResult(_0x5520fb,null))[_0xe727('0x42')](handleError(_0x5520fb,null));};
\ No newline at end of file
index dd744da..b3a364a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ce=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','define','OpenchannelTransferReport','uniqueid','lodash','util'];(function(_0xce06d0,_0xe944b9){var _0x360347=function(_0x565311){while(--_0x565311){_0xce06d0['push'](_0xce06d0['shift']());}};_0x360347(++_0xe944b9);}(_0x48ce,0x17f));var _0xe48c=function(_0x193f72,_0x5e9974){_0x193f72=_0x193f72-0x0;var _0x27ddb4=_0x48ce[_0x193f72];return _0x27ddb4;};'use strict';var _=require(_0xe48c('0x0'));var util=require(_0xe48c('0x1'));var logger=require(_0xe48c('0x2'))('api');var moment=require(_0xe48c('0x3'));var BPromise=require(_0xe48c('0x4'));var rp=require(_0xe48c('0x5'));var fs=require('fs');var path=require(_0xe48c('0x6'));var rimraf=require('rimraf');var config=require(_0xe48c('0x7'));var attributes=require('./openchannelTransferReport.attributes');module['exports']=function(_0x2f6361,_0xcc0062){return _0x2f6361[_0xe48c('0x8')](_0xe48c('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xe48c('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9204=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','OpenchannelTransferReport','report_openchannel_transfer','lodash','util'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x9204,0x174));var _0x4920=function(_0xe05306,_0x4bbb92){_0xe05306=_0xe05306-0x0;var _0x269f84=_0x9204[_0xe05306];return _0x269f84;};'use strict';var _=require(_0x4920('0x0'));var util=require(_0x4920('0x1'));var logger=require(_0x4920('0x2'))('api');var moment=require(_0x4920('0x3'));var BPromise=require(_0x4920('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4920('0x5'));var rimraf=require(_0x4920('0x6'));var config=require(_0x4920('0x7'));var attributes=require('./openchannelTransferReport.attributes');module[_0x4920('0x8')]=function(_0x203584,_0x11d47a){return _0x203584['define'](_0x4920('0x9'),attributes,{'tableName':_0x4920('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index fb7b507..d724541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6596=['stringify','error','code','message','request\x20sent','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','debug'];(function(_0x2998ef,_0x42bb6c){var _0x194a75=function(_0x52424e){while(--_0x52424e){_0x2998ef['push'](_0x2998ef['shift']());}};_0x194a75(++_0x42bb6c);}(_0x6596,0x1d3));var _0x6659=function(_0x387f15,_0x40a6b8){_0x387f15=_0x387f15-0x0;var _0x335547=_0x6596[_0x387f15];return _0x335547;};'use strict';var _=require(_0x6659('0x0'));var util=require(_0x6659('0x1'));var moment=require('moment');var BPromise=require(_0x6659('0x2'));var rs=require(_0x6659('0x3'));var fs=require('fs');var Redis=require(_0x6659('0x4'));var db=require(_0x6659('0x5'))['db'];var utils=require(_0x6659('0x6'));var logger=require(_0x6659('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6659('0x8'));var client=jayson[_0x6659('0x9')][_0x6659('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ed458,_0x29292b,_0x4a900d){return new BPromise(function(_0x485ea0,_0x24bfdf){return client[_0x6659('0xb')](_0x1ed458,_0x4a900d)[_0x6659('0xc')](function(_0x2aee6e){logger[_0x6659('0xd')](_0x6659('0xe'),_0x29292b,'request\x20sent');logger[_0x6659('0xf')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x29292b,'request\x20sent',JSON[_0x6659('0x10')](_0x2aee6e));if(_0x2aee6e['error']){if(_0x2aee6e[_0x6659('0x11')][_0x6659('0x12')]===0x1f4){logger[_0x6659('0x11')](_0x6659('0xe'),_0x29292b,_0x2aee6e['error'][_0x6659('0x13')]);return _0x24bfdf(_0x2aee6e[_0x6659('0x11')]['message']);}logger[_0x6659('0x11')](_0x6659('0xe'),_0x29292b,_0x2aee6e[_0x6659('0x11')][_0x6659('0x13')]);return _0x485ea0(_0x2aee6e[_0x6659('0x11')][_0x6659('0x13')]);}else{logger['info'](_0x6659('0xe'),_0x29292b,_0x6659('0x14'));_0x485ea0(_0x2aee6e[_0x6659('0x15')][_0x6659('0x13')]);}})[_0x6659('0x16')](function(_0x75836a){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x29292b,_0x75836a);_0x24bfdf(_0x75836a);});});}
\ No newline at end of file
+var _0xae30=['result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','info'];(function(_0x4660e3,_0x2b51c0){var _0x4cdbee=function(_0x263938){while(--_0x263938){_0x4660e3['push'](_0x4660e3['shift']());}};_0x4cdbee(++_0x2b51c0);}(_0xae30,0x10a));var _0x0ae3=function(_0x250669,_0xb15e88){_0x250669=_0x250669-0x0;var _0x131447=_0xae30[_0x250669];return _0x131447;};'use strict';var _=require(_0x0ae3('0x0'));var util=require(_0x0ae3('0x1'));var moment=require(_0x0ae3('0x2'));var BPromise=require('bluebird');var rs=require(_0x0ae3('0x3'));var fs=require('fs');var Redis=require(_0x0ae3('0x4'));var db=require(_0x0ae3('0x5'))['db'];var utils=require(_0x0ae3('0x6'));var logger=require('../../config/logger')(_0x0ae3('0x7'));var config=require(_0x0ae3('0x8'));var jayson=require(_0x0ae3('0x9'));var client=jayson[_0x0ae3('0xa')][_0x0ae3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xda3853,_0x2b81f4,_0x15b7e2){return new BPromise(function(_0x32ea6e,_0x34e783){return client[_0x0ae3('0xc')](_0xda3853,_0x15b7e2)[_0x0ae3('0xd')](function(_0x32ca2c){logger['info'](_0x0ae3('0xe'),_0x2b81f4,_0x0ae3('0xf'));logger['debug']('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x2b81f4,_0x0ae3('0xf'),JSON[_0x0ae3('0x10')](_0x32ca2c));if(_0x32ca2c[_0x0ae3('0x11')]){if(_0x32ca2c[_0x0ae3('0x11')]['code']===0x1f4){logger['error'](_0x0ae3('0xe'),_0x2b81f4,_0x32ca2c[_0x0ae3('0x11')]['message']);return _0x34e783(_0x32ca2c['error'][_0x0ae3('0x12')]);}logger['error'](_0x0ae3('0xe'),_0x2b81f4,_0x32ca2c[_0x0ae3('0x11')][_0x0ae3('0x12')]);return _0x32ea6e(_0x32ca2c[_0x0ae3('0x11')][_0x0ae3('0x12')]);}else{logger[_0x0ae3('0x13')](_0x0ae3('0xe'),_0x2b81f4,'request\x20sent');_0x32ea6e(_0x32ca2c[_0x0ae3('0x14')]['message']);}})[_0x0ae3('0x15')](function(_0x254a0f){logger[_0x0ae3('0x11')](_0x0ae3('0xe'),_0x2b81f4,_0x254a0f);_0x34e783(_0x254a0f);});});}
\ No newline at end of file
index e5b78a3..ad7faa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf0=['update','delete','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','isAuthenticated','index','get','/:id','show','post','create','put'];(function(_0x13c547,_0x188c8a){var _0x13fd59=function(_0x54326d){while(--_0x54326d){_0x13c547['push'](_0x13c547['shift']());}};_0x13fd59(++_0x188c8a);}(_0x4cf0,0x16a));var _0x04cf=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x4cf0[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require(_0x04cf('0x0'));var util=require('util');var path=require(_0x04cf('0x1'));var timeout=require('connect-timeout');var express=require(_0x04cf('0x2'));var router=express[_0x04cf('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x04cf('0x4'));var interaction=require(_0x04cf('0x5'));var config=require(_0x04cf('0x6'));var controller=require(_0x04cf('0x7'));router['get']('/',auth[_0x04cf('0x8')](),controller[_0x04cf('0x9')]);router[_0x04cf('0xa')](_0x04cf('0xb'),auth['isAuthenticated'](),controller[_0x04cf('0xc')]);router[_0x04cf('0xd')]('/',auth['isAuthenticated'](),controller[_0x04cf('0xe')]);router[_0x04cf('0xf')](_0x04cf('0xb'),auth[_0x04cf('0x8')](),controller[_0x04cf('0x10')]);router[_0x04cf('0x11')](_0x04cf('0xb'),auth[_0x04cf('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xd35f=['post','create','put','update','delete','destroy','multer','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','/:id','show'];(function(_0x224a7f,_0x4dfe0c){var _0x569b6a=function(_0x3d5dc7){while(--_0x3d5dc7){_0x224a7f['push'](_0x224a7f['shift']());}};_0x569b6a(++_0x4dfe0c);}(_0xd35f,0xd2));var _0xfd35=function(_0x350aeb,_0x3d265a){_0x350aeb=_0x350aeb-0x0;var _0x3c5273=_0xd35f[_0x350aeb];return _0x3c5273;};'use strict';var multer=require(_0xfd35('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfd35('0x1'));var express=require('express');var router=express[_0xfd35('0x2')]();var fs_extra=require(_0xfd35('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xfd35('0x4'));var config=require(_0xfd35('0x5'));var controller=require(_0xfd35('0x6'));router[_0xfd35('0x7')]('/',auth[_0xfd35('0x8')](),controller['index']);router[_0xfd35('0x7')](_0xfd35('0x9'),auth[_0xfd35('0x8')](),controller[_0xfd35('0xa')]);router[_0xfd35('0xb')]('/',auth['isAuthenticated'](),controller[_0xfd35('0xc')]);router[_0xfd35('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xfd35('0xe')]);router[_0xfd35('0xf')](_0xfd35('0x9'),auth[_0xfd35('0x8')](),controller[_0xfd35('0x10')]);module['exports']=router;
\ No newline at end of file
index 562dda3..69cace2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6144=['name','sequelize','exports','STRING'];(function(_0x28d225,_0x43be18){var _0x1f79e1=function(_0x362c23){while(--_0x362c23){_0x28d225['push'](_0x28d225['shift']());}};_0x1f79e1(++_0x43be18);}(_0x6144,0x1a9));var _0x4614=function(_0x45461f,_0x54d613){_0x45461f=_0x45461f-0x0;var _0x29ac6b=_0x6144[_0x45461f];return _0x29ac6b;};'use strict';var Sequelize=require(_0x4614('0x0'));module[_0x4614('0x1')]={'name':{'type':Sequelize[_0x4614('0x2')],'unique':_0x4614('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x4614('0x2')]}};
\ No newline at end of file
+var _0x98ab=['exports','STRING','sequelize'];(function(_0x2e9794,_0x39323c){var _0x79d4a5=function(_0x35e2fc){while(--_0x35e2fc){_0x2e9794['push'](_0x2e9794['shift']());}};_0x79d4a5(++_0x39323c);}(_0x98ab,0xf8));var _0xb98a=function(_0x40890c,_0x3625f5){_0x40890c=_0x40890c-0x0;var _0x4be5fc=_0x98ab[_0x40890c];return _0x4be5fc;};'use strict';var Sequelize=require(_0xb98a('0x0'));module[_0xb98a('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xb98a('0x2')]}};
\ No newline at end of file
index b6095f2..d9c0f9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85bd=['bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','get','UserProfileResource','then','error','stack','send','map','Pause','rawAttributes','key','model','query','keys','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','intersection','length','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0x85bd,0xf1));var _0xd85b=function(_0x29e3ec,_0x138a18){_0x29e3ec=_0x29e3ec-0x0;var _0x25727e=_0x85bd[_0x29e3ec];return _0x25727e;};'use strict';var emlformat=require(_0xd85b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd85b('0x1'));var jsonpatch=require(_0xd85b('0x2'));var rp=require(_0xd85b('0x3'));var moment=require(_0xd85b('0x4'));var BPromise=require(_0xd85b('0x5'));var Mustache=require(_0xd85b('0x6'));var util=require(_0xd85b('0x7'));var path=require('path');var sox=require(_0xd85b('0x8'));var csv=require(_0xd85b('0x9'));var ejs=require(_0xd85b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd85b('0xb'));var squel=require(_0xd85b('0xc'));var crypto=require(_0xd85b('0xd'));var jsforce=require(_0xd85b('0xe'));var deskjs=require(_0xd85b('0xf'));var toCsv=require(_0xd85b('0x9'));var querystring=require('querystring');var Papa=require(_0xd85b('0x10'));var Redis=require(_0xd85b('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd85b('0x12'));var logger=require(_0xd85b('0x13'))('api');var utils=require(_0xd85b('0x14'));var config=require(_0xd85b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xd85b('0x16'))['db'];function respondWithStatusCode(_0x570322,_0x40b524){_0x40b524=_0x40b524||0xcc;return function(_0x15f8d7){if(_0x15f8d7){return _0x570322[_0xd85b('0x17')](_0x40b524);}return _0x570322['status'](_0x40b524)[_0xd85b('0x18')]();};}function respondWithResult(_0x2573ba,_0x214de9){_0x214de9=_0x214de9||0xc8;return function(_0x4759c6){if(_0x4759c6){return _0x2573ba[_0xd85b('0x19')](_0x214de9)['json'](_0x4759c6);}};}function respondWithFilteredResult(_0x477054,_0x3ec251){return function(_0x5029d){if(_0x5029d){var _0x41ce66=typeof _0x3ec251[_0xd85b('0x1a')]===_0xd85b('0x1b')&&typeof _0x3ec251[_0xd85b('0x1c')]===_0xd85b('0x1b');var _0x427f55=_0x5029d[_0xd85b('0x1d')];var _0x43cdfa=_0x41ce66?0x0:_0x3ec251['offset'];var _0x143608=_0x41ce66?_0x5029d[_0xd85b('0x1d')]:_0x3ec251[_0xd85b('0x1a')]+_0x3ec251[_0xd85b('0x1c')];var _0x47d768;if(_0x143608>=_0x427f55){_0x143608=_0x427f55;_0x47d768=0xc8;}else{_0x47d768=0xce;}_0x477054[_0xd85b('0x19')](_0x47d768);return _0x477054['set'](_0xd85b('0x1e'),_0x43cdfa+'-'+_0x143608+'/'+_0x427f55)[_0xd85b('0x1f')](_0x5029d);}return null;};}function patchUpdates(_0x2e84d3){return function(_0x310e1d){try{jsonpatch[_0xd85b('0x20')](_0x310e1d,_0x2e84d3,!![]);}catch(_0x4d2c04){return BPromise[_0xd85b('0x21')](_0x4d2c04);}return _0x310e1d[_0xd85b('0x22')]();};}function saveUpdates(_0x40ae31,_0x1b4f60){return function(_0x1f8811){if(_0x1f8811){return _0x1f8811[_0xd85b('0x23')](_0x40ae31)['then'](function(_0x3db135){return _0x3db135;});}return null;};}function removeEntity(_0x542608,_0x4945f6){return function(_0xa70003){if(_0xa70003){return _0xa70003['destroy']()['then'](function(){var _0x32be27=_0xa70003[_0xd85b('0x24')]({'plain':!![]});var _0xde61a4='Pauses';return db[_0xd85b('0x25')]['destroy']({'where':{'type':_0xde61a4,'resourceId':_0x32be27['id']}})[_0xd85b('0x26')](function(){return _0xa70003;});})['then'](function(){_0x542608[_0xd85b('0x19')](0xcc)[_0xd85b('0x18')]();});}};}function handleEntityNotFound(_0xf44a89,_0x72914d){return function(_0xf4941d){if(!_0xf4941d){_0xf44a89[_0xd85b('0x17')](0x194);}return _0xf4941d;};}function handleError(_0x4431b3,_0x466286){_0x466286=_0x466286||0x1f4;return function(_0x122e3d){logger[_0xd85b('0x27')](_0x122e3d[_0xd85b('0x28')]);if(_0x122e3d['name']){delete _0x122e3d['name'];}_0x4431b3['status'](_0x466286)[_0xd85b('0x29')](_0x122e3d);};}exports['index']=function(_0x252cae,_0x16ea14){var _0x90cb31={},_0x243488={},_0x5ee219={'count':0x0,'rows':[]};var _0x371558=_[_0xd85b('0x2a')](db[_0xd85b('0x2b')][_0xd85b('0x2c')],function(_0x3a6e80){return{'name':_0x3a6e80['fieldName'],'type':_0x3a6e80['type'][_0xd85b('0x2d')]};});_0x243488[_0xd85b('0x2e')]=_[_0xd85b('0x2a')](_0x371558,'name');_0x243488[_0xd85b('0x2f')]=_[_0xd85b('0x30')](_0x252cae[_0xd85b('0x2f')]);_0x243488['filters']=_['intersection'](_0x243488[_0xd85b('0x2e')],_0x243488[_0xd85b('0x2f')]);_0x90cb31[_0xd85b('0x31')]=_['intersection'](_0x243488[_0xd85b('0x2e')],qs[_0xd85b('0x32')](_0x252cae['query'][_0xd85b('0x32')]));_0x90cb31[_0xd85b('0x31')]=_0x90cb31[_0xd85b('0x31')]['length']?_0x90cb31[_0xd85b('0x31')]:_0x243488[_0xd85b('0x2e')];if(!_0x252cae[_0xd85b('0x2f')][_0xd85b('0x33')](_0xd85b('0x34'))){_0x90cb31[_0xd85b('0x1c')]=qs['limit'](_0x252cae[_0xd85b('0x2f')]['limit']);_0x90cb31[_0xd85b('0x1a')]=qs['offset'](_0x252cae['query'][_0xd85b('0x1a')]);}_0x90cb31[_0xd85b('0x35')]=qs[_0xd85b('0x36')](_0x252cae[_0xd85b('0x2f')][_0xd85b('0x36')]);_0x90cb31[_0xd85b('0x37')]=qs[_0xd85b('0x38')](_[_0xd85b('0x39')](_0x252cae['query'],_0x243488[_0xd85b('0x38')]),_0x371558);if(_0x252cae[_0xd85b('0x2f')][_0xd85b('0x3a')]){_0x90cb31[_0xd85b('0x37')]=_['merge'](_0x90cb31[_0xd85b('0x37')],{'$or':_[_0xd85b('0x2a')](_0x371558,function(_0x28980d){if(_0x28980d[_0xd85b('0x3b')]!==_0xd85b('0x3c')){var _0x24aa51={};_0x24aa51[_0x28980d['name']]={'$like':'%'+_0x252cae[_0xd85b('0x2f')][_0xd85b('0x3a')]+'%'};return _0x24aa51;}})});}_0x90cb31=_['merge']({},_0x90cb31,_0x252cae[_0xd85b('0x3d')]);var _0x5e733d={'where':_0x90cb31['where']};return db['Pause'][_0xd85b('0x1d')](_0x5e733d)[_0xd85b('0x26')](function(_0x46fecb){_0x5ee219[_0xd85b('0x1d')]=_0x46fecb;if(_0x252cae[_0xd85b('0x2f')][_0xd85b('0x3e')]){_0x90cb31['include']=[{'all':!![]}];}return db[_0xd85b('0x2b')][_0xd85b('0x3f')](_0x90cb31);})[_0xd85b('0x26')](function(_0x14ba08){_0x5ee219[_0xd85b('0x40')]=_0x14ba08;return _0x5ee219;})[_0xd85b('0x26')](respondWithFilteredResult(_0x16ea14,_0x90cb31))[_0xd85b('0x41')](handleError(_0x16ea14,null));};exports[_0xd85b('0x42')]=function(_0x3d6afa,_0x2b628d){var _0x13e8b5={'raw':!![],'where':{'id':_0x3d6afa[_0xd85b('0x43')]['id']}},_0x4687f3={};_0x4687f3[_0xd85b('0x2e')]=_[_0xd85b('0x30')](db[_0xd85b('0x2b')]['rawAttributes']);_0x4687f3['query']=_[_0xd85b('0x30')](_0x3d6afa[_0xd85b('0x2f')]);_0x4687f3[_0xd85b('0x38')]=_[_0xd85b('0x44')](_0x4687f3[_0xd85b('0x2e')],_0x4687f3[_0xd85b('0x2f')]);_0x13e8b5[_0xd85b('0x31')]=_[_0xd85b('0x44')](_0x4687f3[_0xd85b('0x2e')],qs[_0xd85b('0x32')](_0x3d6afa[_0xd85b('0x2f')]['fields']));_0x13e8b5[_0xd85b('0x31')]=_0x13e8b5[_0xd85b('0x31')][_0xd85b('0x45')]?_0x13e8b5[_0xd85b('0x31')]:_0x4687f3['model'];if(_0x3d6afa[_0xd85b('0x2f')][_0xd85b('0x3e')]){_0x13e8b5[_0xd85b('0x46')]=[{'all':!![]}];}_0x13e8b5=_['merge']({},_0x13e8b5,_0x3d6afa['options']);return db[_0xd85b('0x2b')][_0xd85b('0x47')](_0x13e8b5)['then'](handleEntityNotFound(_0x2b628d,null))[_0xd85b('0x26')](respondWithResult(_0x2b628d,null))[_0xd85b('0x41')](handleError(_0x2b628d,null));};exports[_0xd85b('0x48')]=function(_0x202a95,_0x230b11){return db[_0xd85b('0x2b')][_0xd85b('0x48')](_0x202a95[_0xd85b('0x49')],{})[_0xd85b('0x26')](function(_0x334cb6){var _0x27dd54=_0x202a95['user'][_0xd85b('0x24')]({'plain':!![]});if(!_0x27dd54)throw new Error(_0xd85b('0x4a'));if(_0x27dd54[_0xd85b('0x4b')]===_0xd85b('0x4c')){var _0x4a8a61=_0x334cb6[_0xd85b('0x24')]({'plain':!![]});var _0x41fd76='Pauses';return db[_0xd85b('0x4d')]['find']({'where':{'name':_0x41fd76,'userProfileId':_0x27dd54[_0xd85b('0x4e')]},'raw':!![]})[_0xd85b('0x26')](function(_0x533ba9){if(_0x533ba9&&_0x533ba9['autoAssociation']===0x0){return db[_0xd85b('0x25')][_0xd85b('0x48')]({'name':_0x4a8a61[_0xd85b('0x4f')],'resourceId':_0x4a8a61['id'],'type':_0x533ba9[_0xd85b('0x4f')],'sectionId':_0x533ba9['id']},{})['then'](function(){return _0x334cb6;});}else{return _0x334cb6;}})[_0xd85b('0x41')](function(_0xf45df6){logger[_0xd85b('0x27')](_0xd85b('0x50'),_0xf45df6);throw _0xf45df6;});}return _0x334cb6;})[_0xd85b('0x26')](respondWithResult(_0x230b11,0xc9))[_0xd85b('0x41')](handleError(_0x230b11,null));};exports[_0xd85b('0x23')]=function(_0x1cb9e5,_0x5af140){if(_0x1cb9e5[_0xd85b('0x49')]['id']){delete _0x1cb9e5[_0xd85b('0x49')]['id'];}return db[_0xd85b('0x2b')]['find']({'where':{'id':_0x1cb9e5[_0xd85b('0x43')]['id']}})['then'](handleEntityNotFound(_0x5af140,null))[_0xd85b('0x26')](saveUpdates(_0x1cb9e5[_0xd85b('0x49')],null))[_0xd85b('0x26')](respondWithResult(_0x5af140,null))[_0xd85b('0x41')](handleError(_0x5af140,null));};exports[_0xd85b('0x51')]=function(_0x22111b,_0xb42c51){return db[_0xd85b('0x2b')][_0xd85b('0x47')]({'where':{'id':_0x22111b['params']['id']}})[_0xd85b('0x26')](handleEntityNotFound(_0xb42c51,null))[_0xd85b('0x26')](removeEntity(_0xb42c51,null))['catch'](handleError(_0xb42c51,null));};
\ No newline at end of file
+var _0x59a8=['count','offset','status','set','Content-Range','save','update','then','Pauses','destroy','error','stack','name','send','Pause','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','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','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','limit','undefined'];(function(_0xb2fa85,_0x5a0e61){var _0x36e2f3=function(_0xbca869){while(--_0xbca869){_0xb2fa85['push'](_0xb2fa85['shift']());}};_0x36e2f3(++_0x5a0e61);}(_0x59a8,0x1cf));var _0x859a=function(_0x2af0ab,_0xfefb5b){_0x2af0ab=_0x2af0ab-0x0;var _0xb921bd=_0x59a8[_0x2af0ab];return _0xb921bd;};'use strict';var emlformat=require(_0x859a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x859a('0x1'));var rp=require(_0x859a('0x2'));var moment=require(_0x859a('0x3'));var BPromise=require(_0x859a('0x4'));var Mustache=require(_0x859a('0x5'));var util=require('util');var path=require(_0x859a('0x6'));var sox=require(_0x859a('0x7'));var csv=require(_0x859a('0x8'));var ejs=require(_0x859a('0x9'));var fs=require('fs');var fs_extra=require(_0x859a('0xa'));var _=require('lodash');var squel=require(_0x859a('0xb'));var crypto=require(_0x859a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x859a('0xd'));var toCsv=require(_0x859a('0x8'));var querystring=require(_0x859a('0xe'));var Papa=require(_0x859a('0xf'));var Redis=require('ioredis');var authService=require(_0x859a('0x10'));var qs=require(_0x859a('0x11'));var as=require(_0x859a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x859a('0x13'))(_0x859a('0x14'));var utils=require(_0x859a('0x15'));var config=require(_0x859a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x859a('0x17'))['db'];function respondWithStatusCode(_0x91513a,_0x44bc95){_0x44bc95=_0x44bc95||0xcc;return function(_0x3a4a51){if(_0x3a4a51){return _0x91513a[_0x859a('0x18')](_0x44bc95);}return _0x91513a['status'](_0x44bc95)[_0x859a('0x19')]();};}function respondWithResult(_0x16d117,_0xee1777){_0xee1777=_0xee1777||0xc8;return function(_0xa018d9){if(_0xa018d9){return _0x16d117['status'](_0xee1777)[_0x859a('0x1a')](_0xa018d9);}};}function respondWithFilteredResult(_0x154aed,_0x11aec6){return function(_0x55c84b){if(_0x55c84b){var _0x18390=typeof _0x11aec6['offset']==='undefined'&&typeof _0x11aec6[_0x859a('0x1b')]===_0x859a('0x1c');var _0x4183e8=_0x55c84b[_0x859a('0x1d')];var _0x42098b=_0x18390?0x0:_0x11aec6[_0x859a('0x1e')];var _0x1ab921=_0x18390?_0x55c84b[_0x859a('0x1d')]:_0x11aec6['offset']+_0x11aec6['limit'];var _0xa05c2d;if(_0x1ab921>=_0x4183e8){_0x1ab921=_0x4183e8;_0xa05c2d=0xc8;}else{_0xa05c2d=0xce;}_0x154aed[_0x859a('0x1f')](_0xa05c2d);return _0x154aed[_0x859a('0x20')](_0x859a('0x21'),_0x42098b+'-'+_0x1ab921+'/'+_0x4183e8)[_0x859a('0x1a')](_0x55c84b);}return null;};}function patchUpdates(_0x36dcb9){return function(_0xa8e767){try{jsonpatch['apply'](_0xa8e767,_0x36dcb9,!![]);}catch(_0x2dc320){return BPromise['reject'](_0x2dc320);}return _0xa8e767[_0x859a('0x22')]();};}function saveUpdates(_0x331261,_0x3e7b51){return function(_0x32918a){if(_0x32918a){return _0x32918a[_0x859a('0x23')](_0x331261)['then'](function(_0x5ce6d5){return _0x5ce6d5;});}return null;};}function removeEntity(_0x3bad3b,_0x5d7d2c){return function(_0x575723){if(_0x575723){return _0x575723['destroy']()[_0x859a('0x24')](function(){var _0x127621=_0x575723['get']({'plain':!![]});var _0x22e2ea=_0x859a('0x25');return db['UserProfileResource'][_0x859a('0x26')]({'where':{'type':_0x22e2ea,'resourceId':_0x127621['id']}})[_0x859a('0x24')](function(){return _0x575723;});})[_0x859a('0x24')](function(){_0x3bad3b[_0x859a('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50f186,_0x1a8f30){return function(_0x4e0245){if(!_0x4e0245){_0x50f186['sendStatus'](0x194);}return _0x4e0245;};}function handleError(_0x2445e4,_0x50e2b1){_0x50e2b1=_0x50e2b1||0x1f4;return function(_0x540be3){logger[_0x859a('0x27')](_0x540be3[_0x859a('0x28')]);if(_0x540be3[_0x859a('0x29')]){delete _0x540be3['name'];}_0x2445e4[_0x859a('0x1f')](_0x50e2b1)[_0x859a('0x2a')](_0x540be3);};}exports['index']=function(_0x3e3980,_0x545bc7){var _0x2ea114={},_0x4a2476={},_0x544140={'count':0x0,'rows':[]};var _0x204d89=_['map'](db[_0x859a('0x2b')][_0x859a('0x2c')],function(_0x122067){return{'name':_0x122067[_0x859a('0x2d')],'type':_0x122067[_0x859a('0x2e')][_0x859a('0x2f')]};});_0x4a2476[_0x859a('0x30')]=_[_0x859a('0x31')](_0x204d89,_0x859a('0x29'));_0x4a2476['query']=_[_0x859a('0x32')](_0x3e3980[_0x859a('0x33')]);_0x4a2476['filters']=_[_0x859a('0x34')](_0x4a2476[_0x859a('0x30')],_0x4a2476[_0x859a('0x33')]);_0x2ea114[_0x859a('0x35')]=_['intersection'](_0x4a2476[_0x859a('0x30')],qs['fields'](_0x3e3980[_0x859a('0x33')][_0x859a('0x36')]));_0x2ea114[_0x859a('0x35')]=_0x2ea114['attributes'][_0x859a('0x37')]?_0x2ea114[_0x859a('0x35')]:_0x4a2476[_0x859a('0x30')];if(!_0x3e3980['query']['hasOwnProperty'](_0x859a('0x38'))){_0x2ea114[_0x859a('0x1b')]=qs[_0x859a('0x1b')](_0x3e3980[_0x859a('0x33')]['limit']);_0x2ea114[_0x859a('0x1e')]=qs['offset'](_0x3e3980['query'][_0x859a('0x1e')]);}_0x2ea114[_0x859a('0x39')]=qs[_0x859a('0x3a')](_0x3e3980['query'][_0x859a('0x3a')]);_0x2ea114[_0x859a('0x3b')]=qs[_0x859a('0x3c')](_['pick'](_0x3e3980[_0x859a('0x33')],_0x4a2476[_0x859a('0x3c')]),_0x204d89);if(_0x3e3980[_0x859a('0x33')][_0x859a('0x3d')]){_0x2ea114[_0x859a('0x3b')]=_[_0x859a('0x3e')](_0x2ea114[_0x859a('0x3b')],{'$or':_[_0x859a('0x31')](_0x204d89,function(_0x12f7ac){if(_0x12f7ac[_0x859a('0x2e')]!=='VIRTUAL'){var _0x4e8192={};_0x4e8192[_0x12f7ac['name']]={'$like':'%'+_0x3e3980[_0x859a('0x33')][_0x859a('0x3d')]+'%'};return _0x4e8192;}})});}_0x2ea114=_[_0x859a('0x3e')]({},_0x2ea114,_0x3e3980[_0x859a('0x3f')]);var _0x41aaf0={'where':_0x2ea114[_0x859a('0x3b')]};return db[_0x859a('0x2b')][_0x859a('0x1d')](_0x41aaf0)[_0x859a('0x24')](function(_0x35a01e){_0x544140['count']=_0x35a01e;if(_0x3e3980[_0x859a('0x33')][_0x859a('0x40')]){_0x2ea114[_0x859a('0x41')]=[{'all':!![]}];}return db['Pause'][_0x859a('0x42')](_0x2ea114);})[_0x859a('0x24')](function(_0x1c0760){_0x544140[_0x859a('0x43')]=_0x1c0760;return _0x544140;})[_0x859a('0x24')](respondWithFilteredResult(_0x545bc7,_0x2ea114))[_0x859a('0x44')](handleError(_0x545bc7,null));};exports[_0x859a('0x45')]=function(_0x544622,_0x1575ee){var _0x104b4c={'raw':!![],'where':{'id':_0x544622[_0x859a('0x46')]['id']}},_0x19f31b={};_0x19f31b['model']=_[_0x859a('0x32')](db[_0x859a('0x2b')]['rawAttributes']);_0x19f31b['query']=_[_0x859a('0x32')](_0x544622['query']);_0x19f31b[_0x859a('0x3c')]=_[_0x859a('0x34')](_0x19f31b[_0x859a('0x30')],_0x19f31b[_0x859a('0x33')]);_0x104b4c[_0x859a('0x35')]=_[_0x859a('0x34')](_0x19f31b[_0x859a('0x30')],qs[_0x859a('0x36')](_0x544622[_0x859a('0x33')][_0x859a('0x36')]));_0x104b4c[_0x859a('0x35')]=_0x104b4c[_0x859a('0x35')][_0x859a('0x37')]?_0x104b4c[_0x859a('0x35')]:_0x19f31b[_0x859a('0x30')];if(_0x544622['query'][_0x859a('0x40')]){_0x104b4c[_0x859a('0x41')]=[{'all':!![]}];}_0x104b4c=_['merge']({},_0x104b4c,_0x544622[_0x859a('0x3f')]);return db['Pause'][_0x859a('0x47')](_0x104b4c)[_0x859a('0x24')](handleEntityNotFound(_0x1575ee,null))['then'](respondWithResult(_0x1575ee,null))[_0x859a('0x44')](handleError(_0x1575ee,null));};exports['create']=function(_0x21a06c,_0x42fce){return db[_0x859a('0x2b')][_0x859a('0x48')](_0x21a06c[_0x859a('0x49')],{})[_0x859a('0x24')](function(_0x2ceaab){var _0x2a43b8=_0x21a06c[_0x859a('0x4a')][_0x859a('0x4b')]({'plain':!![]});if(!_0x2a43b8)throw new Error(_0x859a('0x4c'));if(_0x2a43b8[_0x859a('0x4d')]===_0x859a('0x4a')){var _0x192539=_0x2ceaab['get']({'plain':!![]});var _0x561ae4=_0x859a('0x25');return db[_0x859a('0x4e')][_0x859a('0x47')]({'where':{'name':_0x561ae4,'userProfileId':_0x2a43b8['userProfileId']},'raw':!![]})[_0x859a('0x24')](function(_0x2b37bd){if(_0x2b37bd&&_0x2b37bd[_0x859a('0x4f')]===0x0){return db[_0x859a('0x50')][_0x859a('0x48')]({'name':_0x192539[_0x859a('0x29')],'resourceId':_0x192539['id'],'type':_0x2b37bd[_0x859a('0x29')],'sectionId':_0x2b37bd['id']},{})['then'](function(){return _0x2ceaab;});}else{return _0x2ceaab;}})[_0x859a('0x44')](function(_0x3e9bb7){logger[_0x859a('0x27')](_0x859a('0x51'),_0x3e9bb7);throw _0x3e9bb7;});}return _0x2ceaab;})['then'](respondWithResult(_0x42fce,0xc9))[_0x859a('0x44')](handleError(_0x42fce,null));};exports['update']=function(_0x21330b,_0x44ba73){if(_0x21330b[_0x859a('0x49')]['id']){delete _0x21330b['body']['id'];}return db['Pause'][_0x859a('0x47')]({'where':{'id':_0x21330b[_0x859a('0x46')]['id']}})[_0x859a('0x24')](handleEntityNotFound(_0x44ba73,null))[_0x859a('0x24')](saveUpdates(_0x21330b[_0x859a('0x49')],null))[_0x859a('0x24')](respondWithResult(_0x44ba73,null))[_0x859a('0x44')](handleError(_0x44ba73,null));};exports['destroy']=function(_0x15767b,_0xdda1db){return db[_0x859a('0x2b')]['find']({'where':{'id':_0x15767b[_0x859a('0x46')]['id']}})[_0x859a('0x24')](handleEntityNotFound(_0xdda1db,null))[_0x859a('0x24')](removeEntity(_0xdda1db,null))[_0x859a('0x44')](handleError(_0xdda1db,null));};
\ No newline at end of file
index 4e8b44d..4ca8ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','Pause'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x4937b2,_0x2599cf){_0x4937b2=_0x4937b2-0x0;var _0x8da2fb=_0x7fbe[_0x4937b2];return _0x8da2fb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ef6=['exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./pause.attributes'];(function(_0x1e896c,_0x3f9948){var _0xd149d9=function(_0x3281e5){while(--_0x3281e5){_0x1e896c['push'](_0x1e896c['shift']());}};_0xd149d9(++_0x3f9948);}(_0x8ef6,0xf2));var _0x68ef=function(_0xdd579b,_0x555510){_0xdd579b=_0xdd579b-0x0;var _0x1a9841=_0x8ef6[_0xdd579b];return _0x1a9841;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var logger=require(_0x68ef('0x2'))(_0x68ef('0x3'));var moment=require(_0x68ef('0x4'));var BPromise=require(_0x68ef('0x5'));var rp=require(_0x68ef('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var attributes=require(_0x68ef('0x9'));module[_0x68ef('0xa')]=function(_0x4d26e3,_0x4f77f3){return _0x4d26e3[_0x68ef('0xb')](_0x68ef('0xc'),attributes,{'tableName':_0x68ef('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a17c03..2574be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2c5af7,_0x31aced){var _0x5d7012=function(_0x57e642){while(--_0x57e642){_0x2c5af7['push'](_0x2c5af7['shift']());}};_0x5d7012(++_0x31aced);}(_0x7a54,0x106));var _0x47a5=function(_0x681f50,_0x5c7034){_0x681f50=_0x681f50-0x0;var _0x392bf8=_0x7a54[_0x681f50];return _0x392bf8;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x491a08,_0x29fd59){var _0x586836=function(_0xb85ccb){while(--_0xb85ccb){_0x491a08['push'](_0x491a08['shift']());}};_0x586836(++_0x29fd59);}(_0xb10b,0x12a));var _0xbb10=function(_0x4fb930,_0x4141c4){_0x4fb930=_0x4fb930-0x0;var _0x59adc4=_0xb10b[_0x4fb930];return _0x59adc4;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 527b001..abe8af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','webhookGet','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','replace','format','%s-%s%s','extname','now','post','file','upload','webhookPost'];(function(_0x5401dc,_0x5ec7d5){var _0x15d654=function(_0x4a6437){while(--_0x4a6437){_0x5401dc['push'](_0x5401dc['shift']());}};_0x15d654(++_0x5ec7d5);}(_0x34e8,0x12c));var _0x834e=function(_0xb9aede,_0x578e80){_0xb9aede=_0xb9aede-0x0;var _0x1f6a60=_0x34e8[_0xb9aede];return _0x1f6a60;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),controller[_0x834e('0xd')]);router[_0x834e('0xa')](_0x834e('0xe'),auth[_0x834e('0xf')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xf')](),controller[_0x834e('0x12')]);var upload=multer({'storage':multer[_0x834e('0x13')]({'destination':function(_0x36e124,_0x14038b,_0x2e1a37){_0x2e1a37(null,path[_0x834e('0x14')](config[_0x834e('0x15')],_0x834e('0x16')));},'filename':function(_0x538bb3,_0x5e5b6d,_0x6cd9b9){_0x5e5b6d['originalname']=_0x5e5b6d[_0x834e('0x17')][_0x834e('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x6cd9b9(null,util[_0x834e('0x19')](_0x834e('0x1a'),path['basename'](_0x5e5b6d[_0x834e('0x17')],path[_0x834e('0x1b')](_0x5e5b6d['originalname'])),Date[_0x834e('0x1c')](),path['extname'](_0x5e5b6d[_0x834e('0x17')])));}})});router[_0x834e('0x1d')]('/',upload['single'](_0x834e('0x1e')),controller[_0x834e('0x1f')]);router[_0x834e('0x1d')]('/webhook',controller[_0x834e('0x20')]);router[_0x834e('0x21')](_0x834e('0xe'),auth[_0x834e('0xf')](),controller[_0x834e('0x22')]);router[_0x834e('0x23')](_0x834e('0xe'),auth['isAuthenticated'](),controller[_0x834e('0x23')]);module[_0x834e('0x24')]=router;
\ No newline at end of file
+var _0xec56=['isAuthenticated','index','/webhook','webhookGet','/:id','show','download','diskStorage','join','server/files/plugins','originalname','replace','format','basename','extname','now','single','file','upload','post','webhookPost','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get'];(function(_0x2708fc,_0x17f7a7){var _0x53e607=function(_0x4e6912){while(--_0x4e6912){_0x2708fc['push'](_0x2708fc['shift']());}};_0x53e607(++_0x17f7a7);}(_0xec56,0x1bd));var _0x6ec5=function(_0x4ac7d3,_0x1fb256){_0x4ac7d3=_0x4ac7d3-0x0;var _0x547103=_0xec56[_0x4ac7d3];return _0x547103;};'use strict';var multer=require(_0x6ec5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6ec5('0x1'));var express=require(_0x6ec5('0x2'));var router=express[_0x6ec5('0x3')]();var fs_extra=require(_0x6ec5('0x4'));var auth=require(_0x6ec5('0x5'));var interaction=require(_0x6ec5('0x6'));var config=require(_0x6ec5('0x7'));var controller=require(_0x6ec5('0x8'));router[_0x6ec5('0x9')]('/',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xb')]);router[_0x6ec5('0x9')](_0x6ec5('0xc'),controller[_0x6ec5('0xd')]);router[_0x6ec5('0x9')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xf')]);router[_0x6ec5('0x9')]('/:id/download',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x10')]);var upload=multer({'storage':multer[_0x6ec5('0x11')]({'destination':function(_0x1964ae,_0x143b09,_0x181e79){_0x181e79(null,path[_0x6ec5('0x12')](config['root'],_0x6ec5('0x13')));},'filename':function(_0x1d7180,_0x2b1f61,_0xb04ab6){_0x2b1f61[_0x6ec5('0x14')]=_0x2b1f61[_0x6ec5('0x14')][_0x6ec5('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xb04ab6(null,util[_0x6ec5('0x16')]('%s-%s%s',path[_0x6ec5('0x17')](_0x2b1f61['originalname'],path[_0x6ec5('0x18')](_0x2b1f61[_0x6ec5('0x14')])),Date[_0x6ec5('0x19')](),path[_0x6ec5('0x18')](_0x2b1f61[_0x6ec5('0x14')])));}})});router['post']('/',upload[_0x6ec5('0x1a')](_0x6ec5('0x1b')),controller[_0x6ec5('0x1c')]);router[_0x6ec5('0x1d')](_0x6ec5('0xc'),controller[_0x6ec5('0x1e')]);router[_0x6ec5('0x1f')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x20')]);router[_0x6ec5('0x21')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x21')]);module[_0x6ec5('0x22')]=router;
\ No newline at end of file
index 7a9e729..fc3aa79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaa4=['never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','STRING','ENUM','html','script','TEXT','adminOnly','agentOnly','always'];(function(_0x4cad27,_0x35a526){var _0x5d9d71=function(_0x52294b){while(--_0x52294b){_0x4cad27['push'](_0x4cad27['shift']());}};_0x5d9d71(++_0x35a526);}(_0xaaa4,0x70));var _0x4aaa=function(_0x354996,_0x1e5127){_0x354996=_0x354996-0x0;var _0x25e1fa=_0xaaa4[_0x354996];return _0x25e1fa;};'use strict';var Sequelize=require('sequelize');module[_0x4aaa('0x0')]={'name':{'type':Sequelize[_0x4aaa('0x1')]},'type':{'type':Sequelize[_0x4aaa('0x2')](_0x4aaa('0x3'),_0x4aaa('0x4'))},'description':{'type':Sequelize[_0x4aaa('0x5')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x4aaa('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize['ENUM'](_0x4aaa('0x6'),_0x4aaa('0x7'),_0x4aaa('0x8'),_0x4aaa('0x9')),'defaultValue':_0x4aaa('0x8'),'comment':_0x4aaa('0xa')},'icon':{'type':Sequelize[_0x4aaa('0x1')]},'adminUrl':{'type':Sequelize[_0x4aaa('0x1')]},'agentUrl':{'type':Sequelize[_0x4aaa('0x1')]},'scriptName':{'type':Sequelize[_0x4aaa('0x1')]},'scriptPath':{'type':Sequelize[_0x4aaa('0x1')]}};
\ No newline at end of file
+var _0x7b62=['agentOnly','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','html','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.','ENUM','adminOnly'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b62,0x137));var _0x27b6=function(_0x4c9794,_0x15d7c4){_0x4c9794=_0x4c9794-0x0;var _0x339a2a=_0x7b62[_0x4c9794];return _0x339a2a;};'use strict';var Sequelize=require(_0x27b6('0x0'));module[_0x27b6('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x27b6('0x2'),_0x27b6('0x3'))},'description':{'type':Sequelize[_0x27b6('0x4')]},'version':{'type':Sequelize[_0x27b6('0x4')]},'path':{'type':Sequelize[_0x27b6('0x5')],'comment':_0x27b6('0x6')},'active':{'type':Sequelize[_0x27b6('0x7')],'defaultValue':0x0,'comment':_0x27b6('0x8')},'sidebar':{'type':Sequelize[_0x27b6('0x9')](_0x27b6('0xa'),_0x27b6('0xb'),'always',_0x27b6('0xc')),'defaultValue':'always','comment':_0x27b6('0xd')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0x27b6('0x5')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0x27b6('0x5')]},'scriptPath':{'type':Sequelize[_0x27b6('0x5')]}};
\ No newline at end of file
index 4f11863..a74e003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff4=['VIRTUAL','includeAll','include','findAll','show','options','find','catch','download','params','join','root','server/files/plugins','format','%s.zip','createWriteStream','zip','warning','code','ENOENT','error','Sequelize','Error','pipe','glob','**/*','dirname','basename','finalize','close','existsSync','Plugin\x20not\x20found','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','manifest.json','readFileSync','Invalid\x20manifest:\x20name\x20missing','type','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','Invalid\x20manifest:\x20views\x20missing','admin','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','http://localhost:','encoding','method','headers','content-length','content-type','endsWith','statusCode','sendStatus','webhookPost','resolve','\x27PORT\x27\x20parameter\x20not\x20specified','rimraf','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./plugin.socket','register','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','Plugins','stack','name','send','Plugin','rawAttributes','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x6ff4,0x66));var _0x46ff=function(_0x1073d2,_0x45e02d){_0x1073d2=_0x1073d2-0x0;var _0x4fa179=_0x6ff4[_0x1073d2];return _0x4fa179;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x46ff('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x46ff('0x1'));var Mustache=require(_0x46ff('0x2'));var util=require(_0x46ff('0x3'));var path=require(_0x46ff('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x46ff('0x5'));var fs=require('fs');var fs_extra=require(_0x46ff('0x6'));var _=require(_0x46ff('0x7'));var squel=require(_0x46ff('0x8'));var crypto=require(_0x46ff('0x9'));var jsforce=require(_0x46ff('0xa'));var deskjs=require(_0x46ff('0xb'));var toCsv=require(_0x46ff('0xc'));var querystring=require(_0x46ff('0xd'));var Papa=require(_0x46ff('0xe'));var extract=require(_0x46ff('0xf'));var rimraf=require(_0x46ff('0x0'));var archiver=require(_0x46ff('0x10'));var Redis=require(_0x46ff('0x11'));var authService=require(_0x46ff('0x12'));var qs=require(_0x46ff('0x13'));var as=require(_0x46ff('0x14'));var hardwareService=require(_0x46ff('0x15'));var logger=require(_0x46ff('0x16'))(_0x46ff('0x17'));var utils=require(_0x46ff('0x18'));var config=require(_0x46ff('0x19'));var licenseUtil=require(_0x46ff('0x1a'));var db=require(_0x46ff('0x1b'))['db'];config[_0x46ff('0x1c')]=_[_0x46ff('0x1d')](config['redis'],{'host':_0x46ff('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x46ff('0x1c')]));require(_0x46ff('0x1f'))[_0x46ff('0x20')](socket);function respondWithStatusCode(_0x27d790,_0x329f7b){_0x329f7b=_0x329f7b||0xcc;return function(_0x5e9d8b){if(_0x5e9d8b){return _0x27d790['sendStatus'](_0x329f7b);}return _0x27d790['status'](_0x329f7b)[_0x46ff('0x21')]();};}function respondWithResult(_0x5ab190,_0x39242f){_0x39242f=_0x39242f||0xc8;return function(_0x2ff746){if(_0x2ff746){return _0x5ab190[_0x46ff('0x22')](_0x39242f)[_0x46ff('0x23')](_0x2ff746);}};}function respondWithFilteredResult(_0x25f7f1,_0x45a2de){return function(_0x3543bb){if(_0x3543bb){var _0x372f96=typeof _0x45a2de[_0x46ff('0x24')]==='undefined'&&typeof _0x45a2de[_0x46ff('0x25')]===_0x46ff('0x26');var _0xb2ae10=_0x3543bb[_0x46ff('0x27')];var _0x27dfa3=_0x372f96?0x0:_0x45a2de[_0x46ff('0x24')];var _0x3e0d73=_0x372f96?_0x3543bb[_0x46ff('0x27')]:_0x45a2de[_0x46ff('0x24')]+_0x45a2de[_0x46ff('0x25')];var _0x153eb4;if(_0x3e0d73>=_0xb2ae10){_0x3e0d73=_0xb2ae10;_0x153eb4=0xc8;}else{_0x153eb4=0xce;}_0x25f7f1[_0x46ff('0x22')](_0x153eb4);return _0x25f7f1[_0x46ff('0x28')](_0x46ff('0x29'),_0x27dfa3+'-'+_0x3e0d73+'/'+_0xb2ae10)[_0x46ff('0x23')](_0x3543bb);}return null;};}function patchUpdates(_0xe747f8){return function(_0x3f28e5){try{jsonpatch[_0x46ff('0x2a')](_0x3f28e5,_0xe747f8,!![]);}catch(_0x5968a9){return BPromise[_0x46ff('0x2b')](_0x5968a9);}return _0x3f28e5['save']();};}function saveUpdates(_0x108cba,_0x5dedc5){return function(_0x2e5394){if(_0x2e5394){return _0x2e5394[_0x46ff('0x2c')](_0x108cba)[_0x46ff('0x2d')](function(_0x28f93b){return _0x28f93b;});}return null;};}function removeEntity(_0x1eedf7,_0x31fe68){return function(_0x23973c){if(_0x23973c){return _0x23973c[_0x46ff('0x2e')]()[_0x46ff('0x2d')](function(){var _0x12d91a=_0x23973c[_0x46ff('0x2f')]({'plain':!![]});var _0x521bd6=_0x46ff('0x30');return db['UserProfileResource'][_0x46ff('0x2e')]({'where':{'type':_0x521bd6,'resourceId':_0x12d91a['id']}})[_0x46ff('0x2d')](function(){return _0x23973c;});})[_0x46ff('0x2d')](function(){_0x1eedf7[_0x46ff('0x22')](0xcc)[_0x46ff('0x21')]();});}};}function handleEntityNotFound(_0x11649e,_0x109121){return function(_0x4d9bfc){if(!_0x4d9bfc){_0x11649e['sendStatus'](0x194);}return _0x4d9bfc;};}function handleError(_0xf24c08,_0x132182){_0x132182=_0x132182||0x1f4;return function(_0x564888){logger['error'](_0x564888[_0x46ff('0x31')]);if(_0x564888[_0x46ff('0x32')]){delete _0x564888[_0x46ff('0x32')];}_0xf24c08['status'](_0x132182)[_0x46ff('0x33')](_0x564888);};}exports['index']=function(_0x36f173,_0x23c504){var _0xbf0df5={},_0x231f9a={},_0x9a6c31={'count':0x0,'rows':[]};var _0x1742a0=_['map'](db[_0x46ff('0x34')][_0x46ff('0x35')],function(_0x5e3168){return{'name':_0x5e3168['fieldName'],'type':_0x5e3168['type']['key']};});_0x231f9a[_0x46ff('0x36')]=_[_0x46ff('0x37')](_0x1742a0,'name');_0x231f9a[_0x46ff('0x38')]=_[_0x46ff('0x39')](_0x36f173[_0x46ff('0x38')]);_0x231f9a[_0x46ff('0x3a')]=_[_0x46ff('0x3b')](_0x231f9a[_0x46ff('0x36')],_0x231f9a[_0x46ff('0x38')]);_0xbf0df5[_0x46ff('0x3c')]=_[_0x46ff('0x3b')](_0x231f9a[_0x46ff('0x36')],qs['fields'](_0x36f173[_0x46ff('0x38')][_0x46ff('0x3d')]));_0xbf0df5[_0x46ff('0x3c')]=_0xbf0df5['attributes'][_0x46ff('0x3e')]?_0xbf0df5[_0x46ff('0x3c')]:_0x231f9a[_0x46ff('0x36')];if(!_0x36f173[_0x46ff('0x38')][_0x46ff('0x3f')](_0x46ff('0x40'))){_0xbf0df5[_0x46ff('0x25')]=qs[_0x46ff('0x25')](_0x36f173[_0x46ff('0x38')][_0x46ff('0x25')]);_0xbf0df5[_0x46ff('0x24')]=qs['offset'](_0x36f173[_0x46ff('0x38')][_0x46ff('0x24')]);}_0xbf0df5[_0x46ff('0x41')]=qs[_0x46ff('0x42')](_0x36f173[_0x46ff('0x38')][_0x46ff('0x42')]);_0xbf0df5[_0x46ff('0x43')]=qs[_0x46ff('0x3a')](_[_0x46ff('0x44')](_0x36f173[_0x46ff('0x38')],_0x231f9a['filters']),_0x1742a0);if(_0x36f173[_0x46ff('0x38')][_0x46ff('0x45')]){_0xbf0df5['where']=_[_0x46ff('0x46')](_0xbf0df5[_0x46ff('0x43')],{'$or':_[_0x46ff('0x37')](_0x1742a0,function(_0x310315){if(_0x310315['type']!==_0x46ff('0x47')){var _0x11f06d={};_0x11f06d[_0x310315[_0x46ff('0x32')]]={'$like':'%'+_0x36f173[_0x46ff('0x38')]['filter']+'%'};return _0x11f06d;}})});}_0xbf0df5=_[_0x46ff('0x46')]({},_0xbf0df5,_0x36f173['options']);var _0x2ece43={'where':_0xbf0df5['where']};return db[_0x46ff('0x34')][_0x46ff('0x27')](_0x2ece43)[_0x46ff('0x2d')](function(_0x5daf9){_0x9a6c31[_0x46ff('0x27')]=_0x5daf9;if(_0x36f173['query'][_0x46ff('0x48')]){_0xbf0df5[_0x46ff('0x49')]=[{'all':!![]}];}return db['Plugin'][_0x46ff('0x4a')](_0xbf0df5);})[_0x46ff('0x2d')](function(_0x36c3ed){_0x9a6c31['rows']=_0x36c3ed;return _0x9a6c31;})[_0x46ff('0x2d')](respondWithFilteredResult(_0x23c504,_0xbf0df5))['catch'](handleError(_0x23c504,null));};exports[_0x46ff('0x4b')]=function(_0xae16d7,_0x336545){var _0x40bfaf={'raw':!![],'where':{'id':_0xae16d7['params']['id']}},_0x4e8abf={};_0x4e8abf['model']=_[_0x46ff('0x39')](db[_0x46ff('0x34')][_0x46ff('0x35')]);_0x4e8abf[_0x46ff('0x38')]=_[_0x46ff('0x39')](_0xae16d7[_0x46ff('0x38')]);_0x4e8abf[_0x46ff('0x3a')]=_[_0x46ff('0x3b')](_0x4e8abf[_0x46ff('0x36')],_0x4e8abf['query']);_0x40bfaf['attributes']=_['intersection'](_0x4e8abf[_0x46ff('0x36')],qs[_0x46ff('0x3d')](_0xae16d7[_0x46ff('0x38')][_0x46ff('0x3d')]));_0x40bfaf[_0x46ff('0x3c')]=_0x40bfaf[_0x46ff('0x3c')]['length']?_0x40bfaf[_0x46ff('0x3c')]:_0x4e8abf[_0x46ff('0x36')];if(_0xae16d7[_0x46ff('0x38')][_0x46ff('0x48')]){_0x40bfaf[_0x46ff('0x49')]=[{'all':!![]}];}_0x40bfaf=_[_0x46ff('0x46')]({},_0x40bfaf,_0xae16d7[_0x46ff('0x4c')]);return db[_0x46ff('0x34')][_0x46ff('0x4d')](_0x40bfaf)['then'](handleEntityNotFound(_0x336545,null))['then'](respondWithResult(_0x336545,null))[_0x46ff('0x4e')](handleError(_0x336545,null));};exports[_0x46ff('0x4f')]=function(_0x3fbed8,_0x4f687c,_0x262f26){return db[_0x46ff('0x34')][_0x46ff('0x4d')]({'where':{'id':_0x3fbed8[_0x46ff('0x50')]['id']},'attributes':[_0x46ff('0x32'),_0x46ff('0x4')],'raw':!![]})['then'](handleEntityNotFound(_0x4f687c,null))['then'](function(_0x27ca4f){if(_0x27ca4f){var _0x4fa820=path[_0x46ff('0x51')](config[_0x46ff('0x52')],_0x46ff('0x53'),util[_0x46ff('0x54')](_0x46ff('0x55'),path['basename'](_0x27ca4f['path'])));var _0x217125=fs[_0x46ff('0x56')](_0x4fa820);var _0x140fac=archiver(_0x46ff('0x57'),{'zlib':{'level':0x9}});_0x140fac['on'](_0x46ff('0x58'),function(_0x838adf){if(_0x838adf[_0x46ff('0x59')]===_0x46ff('0x5a')){logger[_0x46ff('0x5b')](_0x838adf);}else{throw new db[(_0x46ff('0x5c'))][(_0x46ff('0x5d'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x140fac['on'](_0x46ff('0x5b'),function(_0x5342d7){throw new db[(_0x46ff('0x5c'))][(_0x46ff('0x5d'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x140fac[_0x46ff('0x5e')](_0x217125);_0x140fac[_0x46ff('0x5f')](_0x46ff('0x60'),{'cwd':path[_0x46ff('0x51')](config[_0x46ff('0x52')],_0x46ff('0x53'),path[_0x46ff('0x61')](_0x27ca4f[_0x46ff('0x4')])),'ignore':[path['join'](path['basename'](_0x27ca4f[_0x46ff('0x4')]),'node_modules/**/*'),path[_0x46ff('0x51')](path[_0x46ff('0x62')](_0x27ca4f['path']),'attachments/**/*')],'nodir':!![]})[_0x46ff('0x63')]();_0x217125['on'](_0x46ff('0x64'),function(){if(!fs[_0x46ff('0x65')](_0x4fa820)){throw new db['Sequelize'][(_0x46ff('0x5d'))](_0x46ff('0x66'));}return _0x4f687c['download'](_0x4fa820,util[_0x46ff('0x54')](_0x46ff('0x55'),path['basename'](_0x27ca4f[_0x46ff('0x4')])),function(_0x4316d4){if(_0x4316d4){throw new db[(_0x46ff('0x5c'))][(_0x46ff('0x5d'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x46ff('0x67')](_0x4fa820);logger[_0x46ff('0x68')](_0x46ff('0x69'));logger[_0x46ff('0x68')](_0x46ff('0x6a'));});});}return null;})[_0x46ff('0x4e')](handleError(_0x4f687c,null));};exports[_0x46ff('0x6b')]=function(_0x11cb29,_0x20a246,_0x5c492a){var _0x4ecd17=path[_0x46ff('0x62')](_0x11cb29[_0x46ff('0x6c')][_0x46ff('0x6d')],path['extname'](_0x11cb29[_0x46ff('0x6c')][_0x46ff('0x6d')]));var _0x3bbb4b=path[_0x46ff('0x51')](config[_0x46ff('0x52')],_0x46ff('0x53'),_0x11cb29['file']['filename']);var _0x3f5a2d=path[_0x46ff('0x51')](config[_0x46ff('0x52')],'server/files/plugins',_0x4ecd17);logger[_0x46ff('0x68')](_0x46ff('0x6e'),_0x3bbb4b);logger[_0x46ff('0x68')](_0x46ff('0x6f'),_0x3f5a2d);try{fs[_0x46ff('0x70')](_0x3bbb4b,parseInt(_0x46ff('0x71'),0x8));extract(_0x3bbb4b,{'dir':_0x3f5a2d},function(_0x4624af){if(_0x4624af){logger[_0x46ff('0x5b')](_0x4624af);handleError(_0x4624af,!![]);};var _0xfc4fd0=fs[_0x46ff('0x72')](_0x3f5a2d);if(_0xfc4fd0[_0x46ff('0x3e')]>0x1){removeReferences(_0x3bbb4b,_0x3f5a2d);logger[_0x46ff('0x5b')](_0x46ff('0x73'));return _0x5c492a(new Error(_0x46ff('0x73')));}var _0x45706c=fs[_0x46ff('0x74')](path[_0x46ff('0x51')](_0x3f5a2d,_0xfc4fd0[0x0]));if(_0x45706c[_0x46ff('0x75')]()){removeReferences(_0x3bbb4b,_0x3f5a2d);logger[_0x46ff('0x5b')](_0x46ff('0x73'));return _0x5c492a(new Error('Invalid\x20plugin\x20structure'));}if(_0x45706c[_0x46ff('0x76')]()){var _0x4dd72c=fs[_0x46ff('0x72')](path[_0x46ff('0x51')](_0x3f5a2d,_0xfc4fd0[0x0]));if(_0x4dd72c[_0x46ff('0x3e')]===0x0){removeReferences(_0x3bbb4b,_0x3f5a2d);logger[_0x46ff('0x5b')](_0x46ff('0x73'));return _0x5c492a(new Error(_0x46ff('0x73')));}var _0x1eb02b=_0x4dd72c['some'](function(_0x540f9){return _0x540f9===_0x46ff('0x77');});if(!_0x1eb02b){return _0x5c492a(new Error('Plugin\x20manifest\x20missing'));}var _0x4768e6=fs[_0x46ff('0x78')](path[_0x46ff('0x51')](_0x3f5a2d,_0xfc4fd0[0x0],'manifest.json'));var _0x46705f=JSON['parse'](_0x4768e6);if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x32')]){return _0x5c492a(new Error(_0x46ff('0x79')));}if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7a')]){return _0x5c492a(new Error(_0x46ff('0x7b')));}if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7c')]){return _0x5c492a(new Error(_0x46ff('0x7d')));}if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7e')]){return _0x5c492a(new Error(_0x46ff('0x7f')));}if(_0x46705f[_0x46ff('0x7a')]==='html'){if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7e')]['views']){return _0x5c492a(new Error(_0x46ff('0x80')));}if('undefined'==typeof _0x46705f['parameters']['views'][_0x46ff('0x81')]&&_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')][_0x46ff('0x83')]){return _0x5c492a(new Error(_0x46ff('0x84')));}}else if(_0x46705f[_0x46ff('0x7a')]===_0x46ff('0x85')){if('undefined'==typeof _0x46705f['parameters'][_0x46ff('0x86')]){return _0x5c492a(new Error(_0x46ff('0x87')));}if(_0x46ff('0x26')==typeof _0x46705f['parameters'][_0x46ff('0x88')]){return _0x5c492a(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x5c492a(new Error(_0x46ff('0x89')));}var _0x94924e=_0x46705f[_0x46ff('0x32')];var _0x25e98c=_0x46705f['description'];var _0x272e68=_0x46705f[_0x46ff('0x7a')];var _0x646fb8=_0x46705f[_0x46ff('0x8a')]?_0x46705f[_0x46ff('0x8a')]:_0x46ff('0x8b');var _0x3f105f=_0x46705f[_0x46ff('0x8c')]?_0x46705f[_0x46ff('0x8c')]:'icon-apps';var _0x4b8d50='';var _0x225cb2='';var _0x57a20f='';var _0x5e53c6='';var _0x238b21=_0x46705f[_0x46ff('0x7c')];if(_0x272e68==='html'){if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')][_0x46ff('0x81')]){var _0x174bb3=_0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x174bb3)){_0x4b8d50=path[_0x46ff('0x51')](_0x46ff('0x8e'),_0x4ecd17,_0xfc4fd0[0x0],_0x174bb3);}else{_0x4b8d50=_0x174bb3;}}else{logger[_0x46ff('0x68')](_0x46ff('0x8f'));}if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')]['views'][_0x46ff('0x83')]){var _0x4f50e9=_0x46705f[_0x46ff('0x7e')]['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x4f50e9)){_0x225cb2=path['join']('plugins',_0x4ecd17,_0xfc4fd0[0x0],_0x4f50e9);}else{_0x225cb2=_0x4f50e9;}}else{logger['info']('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x272e68===_0x46ff('0x85')){_0x57a20f=_0x46705f['parameters'][_0x46ff('0x86')];_0x5e53c6=_0x46705f['parameters']['scriptPath'];if('undefined'!=typeof _0x46705f[_0x46ff('0x7e')]['views']){if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')]['views']['admin']){var _0x174bb3=_0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')][_0x46ff('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x174bb3)){_0x4b8d50=path[_0x46ff('0x51')]('plugins',_0x4ecd17,_0xfc4fd0[0x0],_0x174bb3);}else{_0x4b8d50=_0x174bb3;}}if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')]['views'][_0x46ff('0x83')]){var _0x4f50e9=_0x46705f['parameters']['views'][_0x46ff('0x83')];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x4f50e9)){_0x225cb2=path['join'](_0x46ff('0x8e'),_0x4ecd17,_0xfc4fd0[0x0],_0x4f50e9);}else{_0x225cb2=_0x4f50e9;}}}}var _0x1d8225={'name':_0x94924e,'description':_0x25e98c,'path':path['join'](_0x4ecd17,_0xfc4fd0[0x0]),'type':_0x272e68,'sidebar':_0x646fb8,'icon':_0x3f105f,'adminUrl':_0x4b8d50,'agentUrl':_0x225cb2,'scriptName':_0x57a20f,'scriptPath':_0x5e53c6,'version':_0x238b21};removeReferences(_0x3bbb4b,null);return db[_0x46ff('0x34')][_0x46ff('0x90')](_0x1d8225)['then'](function(_0x58d218){var _0x2d918a={'role':_0x11cb29[_0x46ff('0x91')][_0x46ff('0x92')],'userProfileId':_0x11cb29[_0x46ff('0x91')][_0x46ff('0x93')]};if(!_0x2d918a)throw new Error(_0x46ff('0x94'));if(_0x2d918a[_0x46ff('0x92')]===_0x46ff('0x95')){var _0x762ec3=_0x58d218[_0x46ff('0x2f')]({'plain':!![]});return db[_0x46ff('0x96')][_0x46ff('0x4d')]({'where':{'name':_0x46ff('0x30'),'userProfileId':_0x2d918a['userProfileId']},'raw':!![]})['then'](function(_0x477e82){if(_0x477e82&&_0x477e82[_0x46ff('0x97')]===0x0){return db[_0x46ff('0x98')][_0x46ff('0x90')]({'name':_0x762ec3[_0x46ff('0x32')],'resourceId':_0x762ec3['id'],'type':_0x477e82[_0x46ff('0x32')],'sectionId':_0x477e82['id']},{})[_0x46ff('0x2d')](function(){return _0x58d218;});}else{return _0x58d218;}})[_0x46ff('0x4e')](function(_0xb2165c){logger['error'](_0x46ff('0x99'),_0xb2165c);throw _0xb2165c;});}return _0x58d218;})[_0x46ff('0x2d')](respondWithResult(_0x20a246,null))[_0x46ff('0x4e')](handleError(_0x20a246,null));}});}catch(_0xde83cc){_0x20a246[_0x46ff('0x22')](0x1f4)[_0x46ff('0x33')](_0xde83cc);}};function removeReferences(_0xf980a7,_0x340ae8){try{if(_0xf980a7){fs[_0x46ff('0x67')](_0xf980a7);logger['info'](_0x46ff('0x9a'));}if(_0x340ae8){rimraf(_0x340ae8,function(){});logger['info'](_0x46ff('0x9b'));}}catch(_0x3393c2){logger[_0x46ff('0x5b')](_0x3393c2);}}exports['update']=function(_0x383165,_0x1aa468,_0x3fcf08){return db[_0x46ff('0x34')][_0x46ff('0x4d')]({'where':{'id':_0x383165[_0x46ff('0x50')]['id']}})[_0x46ff('0x2d')](handleEntityNotFound(_0x1aa468,null))['then'](saveUpdates(_0x383165[_0x46ff('0x91')],null))[_0x46ff('0x2d')](respondWithResult(_0x1aa468,null))[_0x46ff('0x4e')](handleError(_0x1aa468,null));};exports[_0x46ff('0x9c')]=function(_0x4dd4b4,_0x418187,_0x3f1c5f){return db[_0x46ff('0x34')][_0x46ff('0x4d')]({'where':{'id':_0x4dd4b4[_0x46ff('0x50')]['id']}})[_0x46ff('0x2d')](function(_0x1eee02){if(_0x1eee02){return _0x1eee02[_0x46ff('0x2e')]();}})['then'](function(_0xf68dbd){rimraf(path[_0x46ff('0x51')](config['root'],'server/files/plugins',path[_0x46ff('0x61')](_0xf68dbd[_0x46ff('0x4')])),function(){});return _0xf68dbd;})[_0x46ff('0x2d')](handleEntityNotFound(_0x418187,null))[_0x46ff('0x2d')](respondWithStatusCode(_0x418187,null))[_0x46ff('0x4e')](handleError(_0x418187,null));};exports[_0x46ff('0x9d')]=function(_0x52144a,_0x58d4e8,_0x400cb2){return BPromise['resolve']()[_0x46ff('0x2d')](function(){if(!_0x52144a[_0x46ff('0x38')]['path']){throw new Error(_0x46ff('0x9e'));}if(!_0x52144a[_0x46ff('0x38')][_0x46ff('0x9f')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x2f4580=_0x52144a[_0x46ff('0x38')][_0x46ff('0xa0')]?_0x52144a['query'][_0x46ff('0xa0')]+':'+_0x52144a[_0x46ff('0x38')][_0x46ff('0x9f')]:_0x46ff('0xa1')+_0x52144a[_0x46ff('0x38')][_0x46ff('0x9f')];var _0x1c96a4=_0x52144a[_0x46ff('0x38')][_0x46ff('0x23')]?_0x52144a[_0x46ff('0x38')][_0x46ff('0x23')]:!![];var _0x50c822=_0x52144a[_0x46ff('0x38')][_0x46ff('0xa2')]?_0x52144a[_0x46ff('0x38')][_0x46ff('0xa2')]:null;var _0x18d3d4={'method':_0x52144a[_0x46ff('0xa3')],'uri':util[_0x46ff('0x54')]('%s%s',_0x2f4580,_0x52144a[_0x46ff('0x38')][_0x46ff('0x4')]),'json':_0x1c96a4,'resolveWithFullResponse':!![],'encoding':_0x50c822,'qs':_0x52144a['query']};if(_0x52144a['headers']){_0x18d3d4[_0x46ff('0xa4')]=_0x52144a[_0x46ff('0xa4')];if(_0x18d3d4[_0x46ff('0xa4')][_0x46ff('0xa5')]){delete _0x18d3d4[_0x46ff('0xa4')]['content-length'];}}if(_0x18d3d4['headers']['content-type']){delete _0x18d3d4['headers'][_0x46ff('0xa6')];}return rp(_0x18d3d4);})[_0x46ff('0x2d')](function(_0xeca225){if(_0xeca225){_0x58d4e8[_0x46ff('0x28')](_0xeca225[_0x46ff('0xa4')]);logger[_0x46ff('0x68')](_0xeca225[_0x46ff('0x91')]);if(_[_0x46ff('0xa7')](_0x52144a[_0x46ff('0x38')][_0x46ff('0x4')],_0x46ff('0x4f'))&&_0xeca225[_0x46ff('0xa8')]==0x1f4){return _0x58d4e8[_0x46ff('0xa9')](_0xeca225['statusCode']);}else{return _0x58d4e8[_0x46ff('0x22')](_0xeca225[_0x46ff('0xa8')])[_0x46ff('0x33')](_0xeca225['body']);}}else{return _0x58d4e8[_0x46ff('0xa9')](0xc8);}})[_0x46ff('0x4e')](handleError(_0x58d4e8,null));};exports[_0x46ff('0xaa')]=function(_0x25818a,_0xe130d6,_0x39082b){return BPromise[_0x46ff('0xab')]()[_0x46ff('0x2d')](function(){if(!_0x25818a[_0x46ff('0x38')][_0x46ff('0x4')]){throw new Error(_0x46ff('0x9e'));}if(!_0x25818a[_0x46ff('0x38')]['port']){throw new Error(_0x46ff('0xac'));}var _0xf333cd=_0x25818a['query'][_0x46ff('0xa0')]?_0x25818a[_0x46ff('0x38')][_0x46ff('0xa0')]+':'+_0x25818a['query']['port']:_0x46ff('0xa1')+_0x25818a[_0x46ff('0x38')][_0x46ff('0x9f')];var _0x13d039=_0x25818a[_0x46ff('0x38')]['json']?_0x25818a[_0x46ff('0x38')][_0x46ff('0x23')]:!![];var _0x385c90=_0x25818a['query'][_0x46ff('0xa2')]?_0x25818a[_0x46ff('0x38')][_0x46ff('0xa2')]:null;var _0x3a2c4a={'method':_0x25818a['method'],'uri':util[_0x46ff('0x54')]('%s%s',_0xf333cd,_0x25818a[_0x46ff('0x38')][_0x46ff('0x4')]),'json':_0x13d039,'resolveWithFullResponse':!![],'encoding':_0x385c90,'body':_0x25818a[_0x46ff('0x91')]};if(_0x25818a[_0x46ff('0xa4')]){_0x3a2c4a[_0x46ff('0xa4')]=_0x25818a[_0x46ff('0xa4')];if(_0x3a2c4a['headers'][_0x46ff('0xa5')]){delete _0x3a2c4a['headers']['content-length'];}}if(_0x3a2c4a['headers'][_0x46ff('0xa6')]){delete _0x3a2c4a['headers'][_0x46ff('0xa6')];}return rp(_0x3a2c4a);})['then'](function(_0x1e9f35){if(_0x1e9f35){_0xe130d6[_0x46ff('0x28')](_0x1e9f35['headers']);logger['info'](_0x1e9f35[_0x46ff('0x91')]);return _0xe130d6[_0x46ff('0x22')](_0x1e9f35[_0x46ff('0xa8')])[_0x46ff('0x33')](_0x1e9f35['body']);}else{return _0xe130d6[_0x46ff('0xa9')](0xc8);}})[_0x46ff('0x4e')](handleError(_0xe130d6,null));};
\ No newline at end of file
+var _0xc148=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','find','download','path','join','server/files/plugins','format','%s.zip','basename','createWriteStream','warning','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','root','node_modules/**/*','attachments/**/*','finalize','close','Error','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','Download\x20completed','info','Temporary\x20file\x20removed','upload','file','extname','filename','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','Plugin\x20manifest\x20missing','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','html','parameters','views','Invalid\x20manifest:\x20views\x20missing','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','admin','test','Warning:\x20admin\x20view\x20not\x20specified','plugins','create','body','userProfileId','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','dirname','webhookGet','resolve','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-type','endsWith','statusCode','send','webhookPost','\x27PATH\x27\x20parameter\x20not\x20specified','content-length','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','extract-zip','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','get','Plugins','UserProfileResource','error','stack','name','index','map','Plugin','rawAttributes','fieldName','type','key','query','keys','filters'];(function(_0x24a234,_0x504c09){var _0xbc39b8=function(_0x1a5566){while(--_0x1a5566){_0x24a234['push'](_0x24a234['shift']());}};_0xbc39b8(++_0x504c09);}(_0xc148,0x1d7));var _0x8c14=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xc148[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x8c14('0x0'));var rimraf=require(_0x8c14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8c14('0x2'));var rp=require(_0x8c14('0x3'));var moment=require(_0x8c14('0x4'));var BPromise=require(_0x8c14('0x5'));var Mustache=require(_0x8c14('0x6'));var util=require(_0x8c14('0x7'));var path=require('path');var sox=require(_0x8c14('0x8'));var csv=require(_0x8c14('0x9'));var ejs=require(_0x8c14('0xa'));var fs=require('fs');var fs_extra=require(_0x8c14('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8c14('0xc'));var deskjs=require(_0x8c14('0xd'));var toCsv=require(_0x8c14('0x9'));var querystring=require(_0x8c14('0xe'));var Papa=require('papaparse');var extract=require(_0x8c14('0xf'));var rimraf=require(_0x8c14('0x1'));var archiver=require('archiver');var Redis=require(_0x8c14('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8c14('0x11'));var as=require(_0x8c14('0x12'));var hardwareService=require(_0x8c14('0x13'));var logger=require(_0x8c14('0x14'))(_0x8c14('0x15'));var utils=require(_0x8c14('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x8c14('0x17'));var db=require(_0x8c14('0x18'))['db'];config[_0x8c14('0x19')]=_[_0x8c14('0x1a')](config[_0x8c14('0x19')],{'host':_0x8c14('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8c14('0x19')]));require('./plugin.socket')[_0x8c14('0x1c')](socket);function respondWithStatusCode(_0x1e2b9f,_0x382350){_0x382350=_0x382350||0xcc;return function(_0x23a2c4){if(_0x23a2c4){return _0x1e2b9f[_0x8c14('0x1d')](_0x382350);}return _0x1e2b9f[_0x8c14('0x1e')](_0x382350)[_0x8c14('0x1f')]();};}function respondWithResult(_0x57b9f2,_0x4b7f7f){_0x4b7f7f=_0x4b7f7f||0xc8;return function(_0x417ba0){if(_0x417ba0){return _0x57b9f2[_0x8c14('0x1e')](_0x4b7f7f)[_0x8c14('0x20')](_0x417ba0);}};}function respondWithFilteredResult(_0x141fe5,_0x1a7e29){return function(_0x82234a){if(_0x82234a){var _0x4a8360=typeof _0x1a7e29['offset']===_0x8c14('0x21')&&typeof _0x1a7e29[_0x8c14('0x22')]===_0x8c14('0x21');var _0x537a49=_0x82234a[_0x8c14('0x23')];var _0x1adbe8=_0x4a8360?0x0:_0x1a7e29[_0x8c14('0x24')];var _0x1d7181=_0x4a8360?_0x82234a[_0x8c14('0x23')]:_0x1a7e29[_0x8c14('0x24')]+_0x1a7e29[_0x8c14('0x22')];var _0x1c1b29;if(_0x1d7181>=_0x537a49){_0x1d7181=_0x537a49;_0x1c1b29=0xc8;}else{_0x1c1b29=0xce;}_0x141fe5[_0x8c14('0x1e')](_0x1c1b29);return _0x141fe5[_0x8c14('0x25')](_0x8c14('0x26'),_0x1adbe8+'-'+_0x1d7181+'/'+_0x537a49)['json'](_0x82234a);}return null;};}function patchUpdates(_0x5eeeb6){return function(_0x22b941){try{jsonpatch['apply'](_0x22b941,_0x5eeeb6,!![]);}catch(_0x9b749d){return BPromise[_0x8c14('0x27')](_0x9b749d);}return _0x22b941[_0x8c14('0x28')]();};}function saveUpdates(_0x415bf4,_0x5486a9){return function(_0x534ec1){if(_0x534ec1){return _0x534ec1[_0x8c14('0x29')](_0x415bf4)[_0x8c14('0x2a')](function(_0x2afdb3){return _0x2afdb3;});}return null;};}function removeEntity(_0x355c7c,_0x23275e){return function(_0x14d7da){if(_0x14d7da){return _0x14d7da[_0x8c14('0x2b')]()[_0x8c14('0x2a')](function(){var _0x4f7cb8=_0x14d7da[_0x8c14('0x2c')]({'plain':!![]});var _0x56fa32=_0x8c14('0x2d');return db[_0x8c14('0x2e')][_0x8c14('0x2b')]({'where':{'type':_0x56fa32,'resourceId':_0x4f7cb8['id']}})[_0x8c14('0x2a')](function(){return _0x14d7da;});})[_0x8c14('0x2a')](function(){_0x355c7c[_0x8c14('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4867a3,_0x104c1c){return function(_0x4a710e){if(!_0x4a710e){_0x4867a3[_0x8c14('0x1d')](0x194);}return _0x4a710e;};}function handleError(_0x245bbc,_0x19a7ff){_0x19a7ff=_0x19a7ff||0x1f4;return function(_0x41099a){logger[_0x8c14('0x2f')](_0x41099a[_0x8c14('0x30')]);if(_0x41099a[_0x8c14('0x31')]){delete _0x41099a[_0x8c14('0x31')];}_0x245bbc[_0x8c14('0x1e')](_0x19a7ff)['send'](_0x41099a);};}exports[_0x8c14('0x32')]=function(_0x2cd797,_0x4795f0){var _0x3158ee={},_0x221c22={},_0x4d55dc={'count':0x0,'rows':[]};var _0x535c5d=_[_0x8c14('0x33')](db[_0x8c14('0x34')][_0x8c14('0x35')],function(_0x1f79e3){return{'name':_0x1f79e3[_0x8c14('0x36')],'type':_0x1f79e3[_0x8c14('0x37')][_0x8c14('0x38')]};});_0x221c22['model']=_[_0x8c14('0x33')](_0x535c5d,'name');_0x221c22[_0x8c14('0x39')]=_[_0x8c14('0x3a')](_0x2cd797[_0x8c14('0x39')]);_0x221c22[_0x8c14('0x3b')]=_[_0x8c14('0x3c')](_0x221c22[_0x8c14('0x3d')],_0x221c22[_0x8c14('0x39')]);_0x3158ee[_0x8c14('0x3e')]=_[_0x8c14('0x3c')](_0x221c22['model'],qs[_0x8c14('0x3f')](_0x2cd797[_0x8c14('0x39')]['fields']));_0x3158ee['attributes']=_0x3158ee['attributes'][_0x8c14('0x40')]?_0x3158ee['attributes']:_0x221c22['model'];if(!_0x2cd797['query'][_0x8c14('0x41')](_0x8c14('0x42'))){_0x3158ee[_0x8c14('0x22')]=qs[_0x8c14('0x22')](_0x2cd797['query']['limit']);_0x3158ee[_0x8c14('0x24')]=qs[_0x8c14('0x24')](_0x2cd797[_0x8c14('0x39')][_0x8c14('0x24')]);}_0x3158ee[_0x8c14('0x43')]=qs[_0x8c14('0x44')](_0x2cd797['query']['sort']);_0x3158ee[_0x8c14('0x45')]=qs[_0x8c14('0x3b')](_[_0x8c14('0x46')](_0x2cd797[_0x8c14('0x39')],_0x221c22[_0x8c14('0x3b')]),_0x535c5d);if(_0x2cd797[_0x8c14('0x39')][_0x8c14('0x47')]){_0x3158ee[_0x8c14('0x45')]=_[_0x8c14('0x48')](_0x3158ee[_0x8c14('0x45')],{'$or':_['map'](_0x535c5d,function(_0x2cdd78){if(_0x2cdd78[_0x8c14('0x37')]!==_0x8c14('0x49')){var _0x43d66c={};_0x43d66c[_0x2cdd78['name']]={'$like':'%'+_0x2cd797[_0x8c14('0x39')]['filter']+'%'};return _0x43d66c;}})});}_0x3158ee=_['merge']({},_0x3158ee,_0x2cd797[_0x8c14('0x4a')]);var _0x33f23c={'where':_0x3158ee[_0x8c14('0x45')]};return db[_0x8c14('0x34')][_0x8c14('0x23')](_0x33f23c)['then'](function(_0x274e4e){_0x4d55dc['count']=_0x274e4e;if(_0x2cd797['query'][_0x8c14('0x4b')]){_0x3158ee[_0x8c14('0x4c')]=[{'all':!![]}];}return db[_0x8c14('0x34')]['findAll'](_0x3158ee);})[_0x8c14('0x2a')](function(_0x4fc369){_0x4d55dc[_0x8c14('0x4d')]=_0x4fc369;return _0x4d55dc;})['then'](respondWithFilteredResult(_0x4795f0,_0x3158ee))[_0x8c14('0x4e')](handleError(_0x4795f0,null));};exports['show']=function(_0x21090f,_0x1281d2){var _0x4fb15f={'raw':!![],'where':{'id':_0x21090f[_0x8c14('0x4f')]['id']}},_0x29b664={};_0x29b664[_0x8c14('0x3d')]=_[_0x8c14('0x3a')](db['Plugin'][_0x8c14('0x35')]);_0x29b664['query']=_[_0x8c14('0x3a')](_0x21090f[_0x8c14('0x39')]);_0x29b664['filters']=_['intersection'](_0x29b664['model'],_0x29b664[_0x8c14('0x39')]);_0x4fb15f[_0x8c14('0x3e')]=_[_0x8c14('0x3c')](_0x29b664[_0x8c14('0x3d')],qs['fields'](_0x21090f[_0x8c14('0x39')][_0x8c14('0x3f')]));_0x4fb15f[_0x8c14('0x3e')]=_0x4fb15f[_0x8c14('0x3e')][_0x8c14('0x40')]?_0x4fb15f['attributes']:_0x29b664[_0x8c14('0x3d')];if(_0x21090f[_0x8c14('0x39')][_0x8c14('0x4b')]){_0x4fb15f[_0x8c14('0x4c')]=[{'all':!![]}];}_0x4fb15f=_[_0x8c14('0x48')]({},_0x4fb15f,_0x21090f[_0x8c14('0x4a')]);return db[_0x8c14('0x34')][_0x8c14('0x50')](_0x4fb15f)['then'](handleEntityNotFound(_0x1281d2,null))[_0x8c14('0x2a')](respondWithResult(_0x1281d2,null))[_0x8c14('0x4e')](handleError(_0x1281d2,null));};exports[_0x8c14('0x51')]=function(_0x36a3a3,_0x2a5be2,_0x41f00b){return db[_0x8c14('0x34')]['find']({'where':{'id':_0x36a3a3[_0x8c14('0x4f')]['id']},'attributes':['name',_0x8c14('0x52')],'raw':!![]})[_0x8c14('0x2a')](handleEntityNotFound(_0x2a5be2,null))['then'](function(_0x2135a7){if(_0x2135a7){var _0x45f0a2=path[_0x8c14('0x53')](config['root'],_0x8c14('0x54'),util[_0x8c14('0x55')](_0x8c14('0x56'),path[_0x8c14('0x57')](_0x2135a7['path'])));var _0x4323a5=fs[_0x8c14('0x58')](_0x45f0a2);var _0x3e84cc=archiver('zip',{'zlib':{'level':0x9}});_0x3e84cc['on'](_0x8c14('0x59'),function(_0x2ca93b){if(_0x2ca93b['code']===_0x8c14('0x5a')){logger[_0x8c14('0x2f')](_0x2ca93b);}else{throw new db['Sequelize']['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x3e84cc['on'](_0x8c14('0x2f'),function(_0x41c232){throw new db[(_0x8c14('0x5b'))]['Error'](_0x8c14('0x5c'));});_0x3e84cc[_0x8c14('0x5d')](_0x4323a5);_0x3e84cc[_0x8c14('0x5e')](_0x8c14('0x5f'),{'cwd':path['join'](config[_0x8c14('0x60')],'server/files/plugins',path['dirname'](_0x2135a7['path'])),'ignore':[path[_0x8c14('0x53')](path[_0x8c14('0x57')](_0x2135a7['path']),_0x8c14('0x61')),path[_0x8c14('0x53')](path[_0x8c14('0x57')](_0x2135a7['path']),_0x8c14('0x62'))],'nodir':!![]})[_0x8c14('0x63')]();_0x4323a5['on'](_0x8c14('0x64'),function(){if(!fs['existsSync'](_0x45f0a2)){throw new db[(_0x8c14('0x5b'))][(_0x8c14('0x65'))](_0x8c14('0x66'));}return _0x2a5be2['download'](_0x45f0a2,util[_0x8c14('0x55')](_0x8c14('0x56'),path[_0x8c14('0x57')](_0x2135a7['path'])),function(_0x4e7c05){if(_0x4e7c05){throw new db[(_0x8c14('0x5b'))]['Error'](_0x8c14('0x67'));}fs['unlinkSync'](_0x45f0a2);logger['info'](_0x8c14('0x68'));logger[_0x8c14('0x69')](_0x8c14('0x6a'));});});}return null;})[_0x8c14('0x4e')](handleError(_0x2a5be2,null));};exports[_0x8c14('0x6b')]=function(_0x32f769,_0x32f3ca,_0x41c1c8){var _0x40a19b=path[_0x8c14('0x57')](_0x32f769[_0x8c14('0x6c')]['filename'],path[_0x8c14('0x6d')](_0x32f769['file'][_0x8c14('0x6e')]));var _0x51a814=path['join'](config['root'],_0x8c14('0x54'),_0x32f769[_0x8c14('0x6c')][_0x8c14('0x6e')]);var _0x20b0cc=path[_0x8c14('0x53')](config[_0x8c14('0x60')],_0x8c14('0x54'),_0x40a19b);logger[_0x8c14('0x69')]('Plugin\x20upload\x20filepath:\x20%s',_0x51a814);logger['info']('Plugin\x20upload\x20destination:\x20%s',_0x20b0cc);try{fs[_0x8c14('0x6f')](_0x51a814,parseInt(_0x8c14('0x70'),0x8));extract(_0x51a814,{'dir':_0x20b0cc},function(_0x39bc69){if(_0x39bc69){logger[_0x8c14('0x2f')](_0x39bc69);handleError(_0x39bc69,!![]);};var _0x3a2fe0=fs[_0x8c14('0x71')](_0x20b0cc);if(_0x3a2fe0[_0x8c14('0x40')]>0x1){removeReferences(_0x51a814,_0x20b0cc);logger['error'](_0x8c14('0x72'));return _0x41c1c8(new Error('Invalid\x20plugin\x20structure'));}var _0x4e1a79=fs[_0x8c14('0x73')](path['join'](_0x20b0cc,_0x3a2fe0[0x0]));if(_0x4e1a79[_0x8c14('0x74')]()){removeReferences(_0x51a814,_0x20b0cc);logger[_0x8c14('0x2f')](_0x8c14('0x72'));return _0x41c1c8(new Error(_0x8c14('0x72')));}if(_0x4e1a79[_0x8c14('0x75')]()){var _0x1b461d=fs[_0x8c14('0x71')](path[_0x8c14('0x53')](_0x20b0cc,_0x3a2fe0[0x0]));if(_0x1b461d[_0x8c14('0x40')]===0x0){removeReferences(_0x51a814,_0x20b0cc);logger['error']('Invalid\x20plugin\x20structure');return _0x41c1c8(new Error('Invalid\x20plugin\x20structure'));}var _0x1039db=_0x1b461d[_0x8c14('0x76')](function(_0x198d7b){return _0x198d7b==='manifest.json';});if(!_0x1039db){return _0x41c1c8(new Error(_0x8c14('0x77')));}var _0x389ce9=fs[_0x8c14('0x78')](path[_0x8c14('0x53')](_0x20b0cc,_0x3a2fe0[0x0],_0x8c14('0x79')));var _0x2c8241=JSON[_0x8c14('0x7a')](_0x389ce9);if(_0x8c14('0x21')==typeof _0x2c8241[_0x8c14('0x31')]){return _0x41c1c8(new Error(_0x8c14('0x7b')));}if(_0x8c14('0x21')==typeof _0x2c8241['type']){return _0x41c1c8(new Error(_0x8c14('0x7c')));}if(_0x8c14('0x21')==typeof _0x2c8241[_0x8c14('0x7d')]){return _0x41c1c8(new Error(_0x8c14('0x7e')));}if(_0x8c14('0x21')==typeof _0x2c8241['parameters']){return _0x41c1c8(new Error(_0x8c14('0x7f')));}if(_0x2c8241[_0x8c14('0x37')]===_0x8c14('0x80')){if(_0x8c14('0x21')==typeof _0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')]){return _0x41c1c8(new Error(_0x8c14('0x83')));}if(_0x8c14('0x21')==typeof _0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')]['admin']&&_0x8c14('0x21')==typeof _0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')][_0x8c14('0x84')]){return _0x41c1c8(new Error(_0x8c14('0x85')));}}else if(_0x2c8241['type']===_0x8c14('0x86')){if('undefined'==typeof _0x2c8241[_0x8c14('0x81')][_0x8c14('0x87')]){return _0x41c1c8(new Error(_0x8c14('0x88')));}if('undefined'==typeof _0x2c8241['parameters'][_0x8c14('0x89')]){return _0x41c1c8(new Error(_0x8c14('0x8a')));}}else{return _0x41c1c8(new Error(_0x8c14('0x8b')));}var _0x1e0fcb=_0x2c8241[_0x8c14('0x31')];var _0x19b54e=_0x2c8241[_0x8c14('0x8c')];var _0x2e411c=_0x2c8241['type'];var _0x61f8a1=_0x2c8241[_0x8c14('0x8d')]?_0x2c8241['sidebar']:_0x8c14('0x8e');var _0xb44dbd=_0x2c8241[_0x8c14('0x8f')]?_0x2c8241[_0x8c14('0x8f')]:_0x8c14('0x90');var _0x4d1693='';var _0x51d1b6='';var _0x4c2e35='';var _0x3117c0='';var _0x17dfb7=_0x2c8241['version'];if(_0x2e411c===_0x8c14('0x80')){if(_0x8c14('0x21')!=typeof _0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')]['admin']){var _0x57ce7f=_0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')][_0x8c14('0x91')];if(!/^(f|ht)tps?:\/\//i[_0x8c14('0x92')](_0x57ce7f)){_0x4d1693=path[_0x8c14('0x53')]('plugins',_0x40a19b,_0x3a2fe0[0x0],_0x57ce7f);}else{_0x4d1693=_0x57ce7f;}}else{logger['info'](_0x8c14('0x93'));}if('undefined'!=typeof _0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')][_0x8c14('0x84')]){var _0x263d72=_0x2c8241[_0x8c14('0x81')]['views'][_0x8c14('0x84')];if(!/^(f|ht)tps?:\/\//i[_0x8c14('0x92')](_0x263d72)){_0x51d1b6=path[_0x8c14('0x53')](_0x8c14('0x94'),_0x40a19b,_0x3a2fe0[0x0],_0x263d72);}else{_0x51d1b6=_0x263d72;}}else{logger[_0x8c14('0x69')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x2e411c===_0x8c14('0x86')){_0x4c2e35=_0x2c8241[_0x8c14('0x81')][_0x8c14('0x87')];_0x3117c0=_0x2c8241[_0x8c14('0x81')][_0x8c14('0x89')];if(_0x8c14('0x21')!=typeof _0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')]){if(_0x8c14('0x21')!=typeof _0x2c8241[_0x8c14('0x81')]['views'][_0x8c14('0x91')]){var _0x57ce7f=_0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')][_0x8c14('0x91')];if(!/^(f|ht)tps?:\/\//i[_0x8c14('0x92')](_0x57ce7f)){_0x4d1693=path[_0x8c14('0x53')](_0x8c14('0x94'),_0x40a19b,_0x3a2fe0[0x0],_0x57ce7f);}else{_0x4d1693=_0x57ce7f;}}if(_0x8c14('0x21')!=typeof _0x2c8241[_0x8c14('0x81')]['views'][_0x8c14('0x84')]){var _0x263d72=_0x2c8241[_0x8c14('0x81')][_0x8c14('0x82')][_0x8c14('0x84')];if(!/^(f|ht)tps?:\/\//i[_0x8c14('0x92')](_0x263d72)){_0x51d1b6=path[_0x8c14('0x53')](_0x8c14('0x94'),_0x40a19b,_0x3a2fe0[0x0],_0x263d72);}else{_0x51d1b6=_0x263d72;}}}}var _0xc6553c={'name':_0x1e0fcb,'description':_0x19b54e,'path':path[_0x8c14('0x53')](_0x40a19b,_0x3a2fe0[0x0]),'type':_0x2e411c,'sidebar':_0x61f8a1,'icon':_0xb44dbd,'adminUrl':_0x4d1693,'agentUrl':_0x51d1b6,'scriptName':_0x4c2e35,'scriptPath':_0x3117c0,'version':_0x17dfb7};removeReferences(_0x51a814,null);return db['Plugin'][_0x8c14('0x95')](_0xc6553c)['then'](function(_0x416dbc){var _0x3ee278={'role':_0x32f769[_0x8c14('0x96')]['role'],'userProfileId':_0x32f769[_0x8c14('0x96')][_0x8c14('0x97')]};if(!_0x3ee278)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3ee278[_0x8c14('0x98')]===_0x8c14('0x99')){var _0x35689a=_0x416dbc['get']({'plain':!![]});return db[_0x8c14('0x9a')][_0x8c14('0x50')]({'where':{'name':_0x8c14('0x2d'),'userProfileId':_0x3ee278[_0x8c14('0x97')]},'raw':!![]})[_0x8c14('0x2a')](function(_0x11c2d6){if(_0x11c2d6&&_0x11c2d6['autoAssociation']===0x0){return db[_0x8c14('0x2e')][_0x8c14('0x95')]({'name':_0x35689a[_0x8c14('0x31')],'resourceId':_0x35689a['id'],'type':_0x11c2d6[_0x8c14('0x31')],'sectionId':_0x11c2d6['id']},{})[_0x8c14('0x2a')](function(){return _0x416dbc;});}else{return _0x416dbc;}})['catch'](function(_0x129ca2){logger[_0x8c14('0x2f')](_0x8c14('0x9b'),_0x129ca2);throw _0x129ca2;});}return _0x416dbc;})[_0x8c14('0x2a')](respondWithResult(_0x32f3ca,null))[_0x8c14('0x4e')](handleError(_0x32f3ca,null));}});}catch(_0x1275a2){_0x32f3ca[_0x8c14('0x1e')](0x1f4)['send'](_0x1275a2);}};function removeReferences(_0x5e2645,_0xb4f5e9){try{if(_0x5e2645){fs['unlinkSync'](_0x5e2645);logger[_0x8c14('0x69')](_0x8c14('0x9c'));}if(_0xb4f5e9){rimraf(_0xb4f5e9,function(){});logger[_0x8c14('0x69')](_0x8c14('0x9d'));}}catch(_0xe8d8b0){logger[_0x8c14('0x2f')](_0xe8d8b0);}}exports[_0x8c14('0x29')]=function(_0x59a3e1,_0x267bfa,_0x1295f9){return db[_0x8c14('0x34')]['find']({'where':{'id':_0x59a3e1['params']['id']}})['then'](handleEntityNotFound(_0x267bfa,null))[_0x8c14('0x2a')](saveUpdates(_0x59a3e1['body'],null))['then'](respondWithResult(_0x267bfa,null))[_0x8c14('0x4e')](handleError(_0x267bfa,null));};exports[_0x8c14('0x9e')]=function(_0x3ededb,_0x541c01,_0x226be1){return db['Plugin']['find']({'where':{'id':_0x3ededb[_0x8c14('0x4f')]['id']}})[_0x8c14('0x2a')](function(_0x4d311c){if(_0x4d311c){return _0x4d311c[_0x8c14('0x2b')]();}})[_0x8c14('0x2a')](function(_0x4ed394){rimraf(path[_0x8c14('0x53')](config['root'],_0x8c14('0x54'),path[_0x8c14('0x9f')](_0x4ed394['path'])),function(){});return _0x4ed394;})[_0x8c14('0x2a')](handleEntityNotFound(_0x541c01,null))[_0x8c14('0x2a')](respondWithStatusCode(_0x541c01,null))['catch'](handleError(_0x541c01,null));};exports[_0x8c14('0xa0')]=function(_0x11f0e1,_0x6ced9d,_0x141734){return BPromise[_0x8c14('0xa1')]()['then'](function(){if(!_0x11f0e1[_0x8c14('0x39')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x11f0e1[_0x8c14('0x39')][_0x8c14('0xa2')]){throw new Error(_0x8c14('0xa3'));}var _0x487ee5=_0x11f0e1[_0x8c14('0x39')][_0x8c14('0xa4')]?_0x11f0e1['query'][_0x8c14('0xa4')]+':'+_0x11f0e1[_0x8c14('0x39')]['port']:_0x8c14('0xa5')+_0x11f0e1[_0x8c14('0x39')][_0x8c14('0xa2')];var _0x3bb3be=_0x11f0e1[_0x8c14('0x39')][_0x8c14('0x20')]?_0x11f0e1[_0x8c14('0x39')][_0x8c14('0x20')]:!![];var _0x368217=_0x11f0e1[_0x8c14('0x39')]['encoding']?_0x11f0e1[_0x8c14('0x39')][_0x8c14('0xa6')]:null;var _0xbf9dcd={'method':_0x11f0e1[_0x8c14('0xa7')],'uri':util['format'](_0x8c14('0xa8'),_0x487ee5,_0x11f0e1[_0x8c14('0x39')][_0x8c14('0x52')]),'json':_0x3bb3be,'resolveWithFullResponse':!![],'encoding':_0x368217,'qs':_0x11f0e1[_0x8c14('0x39')]};if(_0x11f0e1['headers']){_0xbf9dcd[_0x8c14('0xa9')]=_0x11f0e1['headers'];if(_0xbf9dcd[_0x8c14('0xa9')]['content-length']){delete _0xbf9dcd[_0x8c14('0xa9')]['content-length'];}}if(_0xbf9dcd[_0x8c14('0xa9')]['content-type']){delete _0xbf9dcd[_0x8c14('0xa9')][_0x8c14('0xaa')];}return rp(_0xbf9dcd);})[_0x8c14('0x2a')](function(_0x5f5022){if(_0x5f5022){_0x6ced9d[_0x8c14('0x25')](_0x5f5022['headers']);logger['info'](_0x5f5022['body']);if(_[_0x8c14('0xab')](_0x11f0e1[_0x8c14('0x39')][_0x8c14('0x52')],_0x8c14('0x51'))&&_0x5f5022[_0x8c14('0xac')]==0x1f4){return _0x6ced9d['sendStatus'](_0x5f5022[_0x8c14('0xac')]);}else{return _0x6ced9d[_0x8c14('0x1e')](_0x5f5022['statusCode'])[_0x8c14('0xad')](_0x5f5022[_0x8c14('0x96')]);}}else{return _0x6ced9d[_0x8c14('0x1d')](0xc8);}})[_0x8c14('0x4e')](handleError(_0x6ced9d,null));};exports[_0x8c14('0xae')]=function(_0x383e4e,_0x326681,_0x55a86b){return BPromise[_0x8c14('0xa1')]()[_0x8c14('0x2a')](function(){if(!_0x383e4e[_0x8c14('0x39')]['path']){throw new Error(_0x8c14('0xaf'));}if(!_0x383e4e[_0x8c14('0x39')][_0x8c14('0xa2')]){throw new Error(_0x8c14('0xa3'));}var _0x5b2615=_0x383e4e[_0x8c14('0x39')][_0x8c14('0xa4')]?_0x383e4e[_0x8c14('0x39')]['hostname']+':'+_0x383e4e[_0x8c14('0x39')][_0x8c14('0xa2')]:_0x8c14('0xa5')+_0x383e4e[_0x8c14('0x39')][_0x8c14('0xa2')];var _0x1d1bfc=_0x383e4e[_0x8c14('0x39')][_0x8c14('0x20')]?_0x383e4e[_0x8c14('0x39')][_0x8c14('0x20')]:!![];var _0x519544=_0x383e4e[_0x8c14('0x39')]['encoding']?_0x383e4e[_0x8c14('0x39')][_0x8c14('0xa6')]:null;var _0x42ecb1={'method':_0x383e4e[_0x8c14('0xa7')],'uri':util[_0x8c14('0x55')]('%s%s',_0x5b2615,_0x383e4e['query']['path']),'json':_0x1d1bfc,'resolveWithFullResponse':!![],'encoding':_0x519544,'body':_0x383e4e[_0x8c14('0x96')]};if(_0x383e4e[_0x8c14('0xa9')]){_0x42ecb1[_0x8c14('0xa9')]=_0x383e4e['headers'];if(_0x42ecb1[_0x8c14('0xa9')][_0x8c14('0xb0')]){delete _0x42ecb1[_0x8c14('0xa9')][_0x8c14('0xb0')];}}if(_0x42ecb1[_0x8c14('0xa9')][_0x8c14('0xaa')]){delete _0x42ecb1[_0x8c14('0xa9')]['content-type'];}return rp(_0x42ecb1);})[_0x8c14('0x2a')](function(_0x520b77){if(_0x520b77){_0x326681['set'](_0x520b77[_0x8c14('0xa9')]);logger['info'](_0x520b77[_0x8c14('0x96')]);return _0x326681[_0x8c14('0x1e')](_0x520b77[_0x8c14('0xac')])[_0x8c14('0xad')](_0x520b77['body']);}else{return _0x326681['sendStatus'](0xc8);}})[_0x8c14('0x4e')](handleError(_0x326681,null));};
\ No newline at end of file
index 347006f..0b32f3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf603=['update','remove','emit','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x3ccdd9,_0x47f38b){var _0x1a49d8=function(_0x4aeaa8){while(--_0x4aeaa8){_0x3ccdd9['push'](_0x3ccdd9['shift']());}};_0x1a49d8(++_0x47f38b);}(_0xf603,0x124));var _0x3f60=function(_0x57b6d1,_0x2a1a5c){_0x57b6d1=_0x57b6d1-0x0;var _0x4f014b=_0xf603[_0x57b6d1];return _0x4f014b;};'use strict';var EventEmitter=require(_0x3f60('0x0'));var Plugin=require(_0x3f60('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0x3f60('0x2')](0x0);var events={'afterCreate':_0x3f60('0x3'),'afterUpdate':_0x3f60('0x4'),'afterDestroy':_0x3f60('0x5')};function emitEvent(_0x360e59){return function(_0x1403db,_0x21a566,_0x15a654){PluginEvents[_0x3f60('0x6')](_0x360e59+':'+_0x1403db['id'],_0x1403db);PluginEvents['emit'](_0x360e59,_0x1403db);_0x15a654(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x3f60('0x7')]=PluginEvents;
\ No newline at end of file
+var _0x1883=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Plugin','setMaxListeners','save'];(function(_0x2f8802,_0x3b6bf2){var _0xa52100=function(_0x17b408){while(--_0x17b408){_0x2f8802['push'](_0x2f8802['shift']());}};_0xa52100(++_0x3b6bf2);}(_0x1883,0xab));var _0x3188=function(_0x24a3b2,_0x30b370){_0x24a3b2=_0x24a3b2-0x0;var _0x1ecf2e=_0x1883[_0x24a3b2];return _0x1ecf2e;};'use strict';var EventEmitter=require(_0x3188('0x0'));var Plugin=require(_0x3188('0x1'))['db'][_0x3188('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x3188('0x3')](0x0);var events={'afterCreate':_0x3188('0x4'),'afterUpdate':_0x3188('0x5'),'afterDestroy':_0x3188('0x6')};function emitEvent(_0x408500){return function(_0x1c7c86,_0x44afb8,_0x46216d){PluginEvents[_0x3188('0x7')](_0x408500+':'+_0x1c7c86['id'],_0x1c7c86);PluginEvents[_0x3188('0x7')](_0x408500,_0x1c7c86);_0x46216d(null);};}for(var e in events){if(events[_0x3188('0x8')](e)){var event=events[e];Plugin[_0x3188('0x9')](e,emitEvent(event));}}module[_0x3188('0xa')]=PluginEvents;
\ No newline at end of file
index dde78e1..c41f703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde0f=['../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x23e408,_0x271eda){var _0x4c672c=function(_0x3576f8){while(--_0x3576f8){_0x23e408['push'](_0x23e408['shift']());}};_0x4c672c(++_0x271eda);}(_0xde0f,0xa2));var _0xfde0=function(_0x3651a6,_0x5aac47){_0x3651a6=_0x3651a6-0x0;var _0x1bcdb8=_0xde0f[_0x3651a6];return _0x1bcdb8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfde0('0x0'))(_0xfde0('0x1'));var moment=require(_0xfde0('0x2'));var BPromise=require(_0xfde0('0x3'));var rp=require(_0xfde0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfde0('0x5'));var config=require(_0xfde0('0x6'));var attributes=require(_0xfde0('0x7'));module[_0xfde0('0x8')]=function(_0xb6f608,_0x2c17d6){return _0xb6f608[_0xfde0('0x9')](_0xfde0('0xa'),attributes,{'tableName':_0xfde0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x90d2=['plugins','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./plugin.attributes','Plugin'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x90d2,0x64));var _0x290d=function(_0x574de6,_0x558a28){_0x574de6=_0x574de6-0x0;var _0x4008d9=_0x90d2[_0x574de6];return _0x4008d9;};'use strict';var _=require(_0x290d('0x0'));var util=require(_0x290d('0x1'));var logger=require(_0x290d('0x2'))(_0x290d('0x3'));var moment=require('moment');var BPromise=require(_0x290d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x290d('0x5'));var rimraf=require(_0x290d('0x6'));var config=require(_0x290d('0x7'));var attributes=require(_0x290d('0x8'));module['exports']=function(_0x9f8a74,_0x248a88){return _0x9f8a74['define'](_0x290d('0x9'),attributes,{'tableName':_0x290d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dcefb79..2399080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2455=['./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','debug','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','Plugin','options','raw','CreatePlugin','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost'];(function(_0x7dc85c,_0x3296bc){var _0x216a4d=function(_0x70b2b){while(--_0x70b2b){_0x7dc85c['push'](_0x7dc85c['shift']());}};_0x216a4d(++_0x3296bc);}(_0x2455,0xd3));var _0x5245=function(_0x50f9ab,_0x5009b4){_0x50f9ab=_0x50f9ab-0x0;var _0x58dda4=_0x2455[_0x50f9ab];return _0x58dda4;};'use strict';var _=require(_0x5245('0x0'));var util=require(_0x5245('0x1'));var moment=require(_0x5245('0x2'));var BPromise=require(_0x5245('0x3'));var rs=require(_0x5245('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5245('0x5'))(_0x5245('0x6'));var config=require(_0x5245('0x7'));var jayson=require(_0x5245('0x8'));var client=jayson[_0x5245('0x9')][_0x5245('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5245('0xb')],{'host':_0x5245('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5245('0xb')]));require(_0x5245('0xd'))[_0x5245('0xe')](socket);function respondWithRpcPromise(_0x55d444,_0x115e78,_0x21c740){return new BPromise(function(_0xe85e3d,_0x16844c){return client[_0x5245('0xf')](_0x55d444,_0x21c740)[_0x5245('0x10')](function(_0xfed6a0){logger[_0x5245('0x11')](_0x5245('0x12'),_0x115e78,'request\x20sent');logger[_0x5245('0x13')](_0x5245('0x14'),_0x115e78,_0x5245('0x15'),JSON[_0x5245('0x16')](_0xfed6a0));if(_0xfed6a0[_0x5245('0x17')]){if(_0xfed6a0[_0x5245('0x17')][_0x5245('0x18')]===0x1f4){logger['error'](_0x5245('0x12'),_0x115e78,_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);return _0x16844c(_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);}logger[_0x5245('0x17')](_0x5245('0x12'),_0x115e78,_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);return _0xe85e3d(_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);}else{logger['info'](_0x5245('0x12'),_0x115e78,_0x5245('0x15'));_0xe85e3d(_0xfed6a0[_0x5245('0x1a')][_0x5245('0x19')]);}})[_0x5245('0x1b')](function(_0x16b520){logger[_0x5245('0x17')](_0x5245('0x12'),_0x115e78,_0x16b520);_0x16844c(_0x16b520);});});}exports['CreatePlugin']=function(_0x297279){var _0x3dd068=this;return new Promise(function(_0x1378e6,_0x1bc8bf){return db[_0x5245('0x1c')]['create'](_0x297279['body'],{'raw':_0x297279[_0x5245('0x1d')]?_0x297279[_0x5245('0x1d')][_0x5245('0x1e')]===undefined?!![]:![]:!![]})[_0x5245('0x10')](function(_0x53ce49){logger['info'](_0x5245('0x1f'),_0x297279);logger[_0x5245('0x13')](_0x5245('0x1f'),_0x297279,JSON[_0x5245('0x16')](_0x53ce49));_0x1378e6(_0x53ce49);})[_0x5245('0x1b')](function(_0x3b0b68){logger[_0x5245('0x17')]('CreatePlugin',_0x3b0b68[_0x5245('0x19')],_0x297279);_0x1bc8bf(_0x3dd068[_0x5245('0x17')](0x1f4,_0x3b0b68['message']));});});};
\ No newline at end of file
+var _0x237d=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','localhost','redis','./plugin.socket','request','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','error','code','Plugin,\x20%s,\x20%s','message','result','catch','CreatePlugin','Plugin','create','body','options','raw','stringify','lodash','util','moment'];(function(_0x108915,_0x479eca){var _0x14d1ed=function(_0x3d206c){while(--_0x3d206c){_0x108915['push'](_0x108915['shift']());}};_0x14d1ed(++_0x479eca);}(_0x237d,0x1d9));var _0xd237=function(_0x248be7,_0x30bf9e){_0x248be7=_0x248be7-0x0;var _0x4f2be9=_0x237d[_0x248be7];return _0x4f2be9;};'use strict';var _=require(_0xd237('0x0'));var util=require(_0xd237('0x1'));var moment=require(_0xd237('0x2'));var BPromise=require(_0xd237('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd237('0x4'));var db=require(_0xd237('0x5'))['db'];var utils=require(_0xd237('0x6'));var logger=require(_0xd237('0x7'))(_0xd237('0x8'));var config=require(_0xd237('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd237('0xa')][_0xd237('0xb')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xd237('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd237('0xd')]));require(_0xd237('0xe'))['register'](socket);function respondWithRpcPromise(_0x3dd81f,_0x1475fb,_0x6f2928){return new BPromise(function(_0x3c8135,_0x2111ee){return client[_0xd237('0xf')](_0x3dd81f,_0x6f2928)[_0xd237('0x10')](function(_0x247450){logger[_0xd237('0x11')]('Plugin,\x20%s,\x20%s',_0x1475fb,_0xd237('0x12'));logger[_0xd237('0x13')](_0xd237('0x14'),_0x1475fb,_0xd237('0x12'),JSON['stringify'](_0x247450));if(_0x247450[_0xd237('0x15')]){if(_0x247450[_0xd237('0x15')][_0xd237('0x16')]===0x1f4){logger[_0xd237('0x15')](_0xd237('0x17'),_0x1475fb,_0x247450[_0xd237('0x15')][_0xd237('0x18')]);return _0x2111ee(_0x247450[_0xd237('0x15')][_0xd237('0x18')]);}logger[_0xd237('0x15')](_0xd237('0x17'),_0x1475fb,_0x247450[_0xd237('0x15')][_0xd237('0x18')]);return _0x3c8135(_0x247450['error'][_0xd237('0x18')]);}else{logger[_0xd237('0x11')](_0xd237('0x17'),_0x1475fb,_0xd237('0x12'));_0x3c8135(_0x247450[_0xd237('0x19')][_0xd237('0x18')]);}})[_0xd237('0x1a')](function(_0x3f29e2){logger['error'](_0xd237('0x17'),_0x1475fb,_0x3f29e2);_0x2111ee(_0x3f29e2);});});}exports[_0xd237('0x1b')]=function(_0x6b3c0b){var _0x3265ab=this;return new Promise(function(_0x27d7d3,_0x19bfb8){return db[_0xd237('0x1c')][_0xd237('0x1d')](_0x6b3c0b[_0xd237('0x1e')],{'raw':_0x6b3c0b[_0xd237('0x1f')]?_0x6b3c0b[_0xd237('0x1f')][_0xd237('0x20')]===undefined?!![]:![]:!![]})[_0xd237('0x10')](function(_0x343ea1){logger[_0xd237('0x11')]('CreatePlugin',_0x6b3c0b);logger[_0xd237('0x13')]('CreatePlugin',_0x6b3c0b,JSON[_0xd237('0x21')](_0x343ea1));_0x27d7d3(_0x343ea1);})[_0xd237('0x1a')](function(_0x203aac){logger[_0xd237('0x15')]('CreatePlugin',_0x203aac[_0xd237('0x18')],_0x6b3c0b);_0x19bfb8(_0x3265ab[_0xd237('0x15')](0x1f4,_0x203aac[_0xd237('0x18')]));});});};
\ No newline at end of file
index b518644..f5e6ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x597f=['plugin:','save','remove','update','register','length'];(function(_0x57546a,_0x175c3e){var _0x2e7cf1=function(_0x5798f2){while(--_0x5798f2){_0x57546a['push'](_0x57546a['shift']());}};_0x2e7cf1(++_0x175c3e);}(_0x597f,0xfd));var _0xf597=function(_0x47a12a,_0x70f591){_0x47a12a=_0x47a12a-0x0;var _0x30cd40=_0x597f[_0x47a12a];return _0x30cd40;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xf597('0x0'),_0xf597('0x1'),_0xf597('0x2')];function createListener(_0x71923b,_0x3533be){return function(_0x105d5d){_0x3533be['emit'](_0x71923b,_0x105d5d);};}function removeListener(_0x58edc8,_0x1ffc20){return function(){PluginEvents['removeListener'](_0x58edc8,_0x1ffc20);};}exports[_0xf597('0x3')]=function(_0x295c75){for(var _0x22733a=0x0,_0x4ccde0=events[_0xf597('0x4')];_0x22733a<_0x4ccde0;_0x22733a++){var _0x35d254=events[_0x22733a];var _0x30a3a3=createListener(_0xf597('0x5')+_0x35d254,_0x295c75);PluginEvents['on'](_0x35d254,_0x30a3a3);}};
\ No newline at end of file
+var _0xbcf6=['update','removeListener','register','length','plugin:','./plugin.events','save','remove'];(function(_0x593080,_0x916de1){var _0x4fde56=function(_0x1631f1){while(--_0x1631f1){_0x593080['push'](_0x593080['shift']());}};_0x4fde56(++_0x916de1);}(_0xbcf6,0x13d));var _0x6bcf=function(_0x4521e3,_0x10a8a4){_0x4521e3=_0x4521e3-0x0;var _0x46a272=_0xbcf6[_0x4521e3];return _0x46a272;};'use strict';var PluginEvents=require(_0x6bcf('0x0'));var events=[_0x6bcf('0x1'),_0x6bcf('0x2'),_0x6bcf('0x3')];function createListener(_0x1bcb5d,_0x1bea1d){return function(_0x416ea2){_0x1bea1d['emit'](_0x1bcb5d,_0x416ea2);};}function removeListener(_0x40f885,_0x43e233){return function(){PluginEvents[_0x6bcf('0x4')](_0x40f885,_0x43e233);};}exports[_0x6bcf('0x5')]=function(_0x3bdbea){for(var _0xded714=0x0,_0x3b57f9=events[_0x6bcf('0x6')];_0xded714<_0x3b57f9;_0xded714++){var _0x39dab1=events[_0xded714];var _0x530929=createListener(_0x6bcf('0x7')+_0x39dab1,_0x3bdbea);PluginEvents['on'](_0x39dab1,_0x530929);}};
\ No newline at end of file
index fc60682..0d68620 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(_0x1b3a1e,_0x2e5201){var _0x45f5b8=function(_0x302b05){while(--_0x302b05){_0x1b3a1e['push'](_0x1b3a1e['shift']());}};_0x45f5b8(++_0x2e5201);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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(_0x358f9e,_0x13de6c){var _0x2038b9=function(_0x5b6844){while(--_0x5b6844){_0x358f9e['push'](_0x358f9e['shift']());}};_0x2038b9(++_0x13de6c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'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 99ec1e3..9e2bc4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['express','motion2','length','describe','params','catch','create','body','script','join','cwd','chdir','dirname','dump','update','restart','hasOwnProperty','Unknown\x20status','delete','lodash','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','error','stack','name','status','send','npm\x20install','info','index','then','reject'];(function(_0x4be000,_0x1c7319){var _0x4c6c89=function(_0x49f9d9){while(--_0x49f9d9){_0x4be000['push'](_0x4be000['shift']());}};_0x4c6c89(++_0x1c7319);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x3ec122,_0x55150a){_0x3ec122=_0x3ec122-0x0;var _0x4ecf41=_0xb4e6[_0x3ec122];return _0x4ecf41;};'use strict';var _=require(_0x6b4e('0x0'));var pm2=require('../../config/pm2');var logger=require(_0x6b4e('0x1'))(_0x6b4e('0x2'));var path=require(_0x6b4e('0x3'));var exec=require(_0x6b4e('0x4'))[_0x6b4e('0x5')];var BPromise=require(_0x6b4e('0x6'));function handleEntityNotFound(_0x1929b8,_0x52313b){return function(_0x40da90){if(!_0x40da90){_0x1929b8[_0x6b4e('0x7')](0x194);;}return _0x40da90;};}function respondWithResult(_0x1f67a2,_0x49de51){_0x49de51=_0x49de51||0xc8;return function(_0xd3138f){if(_0xd3138f){return _0x1f67a2['status'](_0x49de51)['json'](_0xd3138f);}return null;};}function handleError(_0x2311d9,_0x48c870){_0x48c870=_0x48c870||0x1f4;return function(_0x53a71f){logger[_0x6b4e('0x8')](_0x53a71f[_0x6b4e('0x9')]);if(_0x53a71f[_0x6b4e('0xa')]){delete _0x53a71f[_0x6b4e('0xa')];}_0x2311d9[_0x6b4e('0xb')](_0x48c870)[_0x6b4e('0xc')](_0x53a71f);};}function execChildProcess(){return new BPromise(function(_0x323487,_0x49c734){exec(_0x6b4e('0xd'),function(_0x3bba86,_0x58c67d,_0x2a4d0f){logger[_0x6b4e('0xe')](_0x58c67d);logger[_0x6b4e('0xe')](_0x2a4d0f);if(_0x3bba86){logger[_0x6b4e('0x8')](_0x3bba86);return _0x49c734(_0x3bba86);}return _0x323487(_0x58c67d);});});}exports[_0x6b4e('0xf')]=function(_0xa3d358,_0x1db513){return pm2['list']()[_0x6b4e('0x10')](function(_0x29bdee){if(_0x29bdee){var _0x4788cf=_[_0x6b4e('0x11')](_0x29bdee,function(_0x4b62ad){return _0x4b62ad[_0x6b4e('0xa')]===_0x6b4e('0x12')||_0x4b62ad[_0x6b4e('0xa')]===_0x6b4e('0x13');});return{'rows':_0x4788cf,'count':_0x4788cf[_0x6b4e('0x14')]};}return null;})[_0x6b4e('0x10')](respondWithResult(_0x1db513,null))['catch'](handleError(_0x1db513,null));};exports['show']=function(_0x67496d,_0x1beb73){return pm2[_0x6b4e('0x15')](_0x67496d[_0x6b4e('0x16')]['id'])[_0x6b4e('0x10')](respondWithResult(_0x1beb73,null))[_0x6b4e('0x10')](handleEntityNotFound(_0x1beb73,null))[_0x6b4e('0x17')](handleError(_0x1beb73,null));};exports[_0x6b4e('0x18')]=function(_0x35aee1,_0x20a178){if(_0x35aee1[_0x6b4e('0x19')]['name']&&_0x35aee1[_0x6b4e('0x19')][_0x6b4e('0x1a')]){var _0x31fb9d=path[_0x6b4e('0x1b')](__dirname,'../../files/plugins',_0x35aee1[_0x6b4e('0x19')]['script']);var _0x2503a5=process[_0x6b4e('0x1c')]();process[_0x6b4e('0x1d')](path[_0x6b4e('0x1e')](_0x31fb9d));return execChildProcess()[_0x6b4e('0x10')](function(_0x346566){process[_0x6b4e('0x1d')](_0x2503a5);return pm2['start']({'name':_0x35aee1[_0x6b4e('0x19')]['name'],'script':_0x31fb9d});})[_0x6b4e('0x10')](function(_0x884b7e){pm2[_0x6b4e('0x1f')]();return _0x884b7e[0x0];})[_0x6b4e('0x10')](respondWithResult(_0x20a178,0xc9))['catch'](handleError(_0x20a178,null));}else{return _0x20a178[_0x6b4e('0xb')](0x1f4)[_0x6b4e('0xc')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x6b4e('0x20')]=function(_0x381ff0,_0x3513b2){if(_0x381ff0[_0x6b4e('0x19')]['id']){delete _0x381ff0['body']['id'];}var _0x2d42be={'online':_0x6b4e('0x21'),'stopped':'stop'};if(_0x2d42be[_0x6b4e('0x22')](_0x381ff0[_0x6b4e('0x19')][_0x6b4e('0xb')])){return pm2[_0x2d42be[_0x381ff0[_0x6b4e('0x19')]['status']]](_0x381ff0[_0x6b4e('0x16')]['id'])[_0x6b4e('0x10')](respondWithResult(_0x3513b2,0xc8))['catch'](handleError(_0x3513b2,null));}else{return _0x3513b2[_0x6b4e('0xb')](0x1f4)[_0x6b4e('0xc')]({'message':_0x6b4e('0x23')});}};exports['destroy']=function(_0x5c2200,_0x11156e){if(_0x5c2200[_0x6b4e('0x19')]['id']){delete _0x5c2200[_0x6b4e('0x19')]['id'];}if(_0x5c2200['params']['id']){return pm2[_0x6b4e('0x24')](_0x5c2200[_0x6b4e('0x16')]['id'])[_0x6b4e('0x10')](function(_0x5c1444){pm2['dump']();return _0x5c1444[0x0];})[_0x6b4e('0x10')](respondWithResult(_0x11156e,null))['catch'](handleError(_0x11156e,null));}else{return _0x11156e[_0x6b4e('0xb')](0x1f4)[_0x6b4e('0xc')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0xb469=['motion2','show','create','body','join','../../files/plugins','chdir','dirname','start','dump','catch','status','update','restart','hasOwnProperty','params','Unknown\x20status','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','child_process','exec','sendStatus','error','stack','name','send','info','index','list','then','reject','express'];(function(_0x5d3dab,_0x266f2a){var _0x1c6002=function(_0x1b3e92){while(--_0x1b3e92){_0x5d3dab['push'](_0x5d3dab['shift']());}};_0x1c6002(++_0x266f2a);}(_0xb469,0x13b));var _0x9b46=function(_0x383dcb,_0x44d367){_0x383dcb=_0x383dcb-0x0;var _0x2f454d=_0xb469[_0x383dcb];return _0x2f454d;};'use strict';var _=require(_0x9b46('0x0'));var pm2=require(_0x9b46('0x1'));var logger=require(_0x9b46('0x2'))(_0x9b46('0x3'));var path=require(_0x9b46('0x4'));var exec=require(_0x9b46('0x5'))[_0x9b46('0x6')];var BPromise=require('bluebird');function handleEntityNotFound(_0x31f853,_0x45322f){return function(_0x538fc4){if(!_0x538fc4){_0x31f853[_0x9b46('0x7')](0x194);;}return _0x538fc4;};}function respondWithResult(_0x405d1c,_0x50b49e){_0x50b49e=_0x50b49e||0xc8;return function(_0x1b2dd3){if(_0x1b2dd3){return _0x405d1c['status'](_0x50b49e)['json'](_0x1b2dd3);}return null;};}function handleError(_0x34c0de,_0x545b6c){_0x545b6c=_0x545b6c||0x1f4;return function(_0x402595){logger[_0x9b46('0x8')](_0x402595[_0x9b46('0x9')]);if(_0x402595['name']){delete _0x402595[_0x9b46('0xa')];}_0x34c0de['status'](_0x545b6c)[_0x9b46('0xb')](_0x402595);};}function execChildProcess(){return new BPromise(function(_0x568d9a,_0x2c29a7){exec('npm\x20install',function(_0x672157,_0x233b6b,_0x563de4){logger[_0x9b46('0xc')](_0x233b6b);logger[_0x9b46('0xc')](_0x563de4);if(_0x672157){logger['error'](_0x672157);return _0x2c29a7(_0x672157);}return _0x568d9a(_0x233b6b);});});}exports[_0x9b46('0xd')]=function(_0x2cfb35,_0x3d9618){return pm2[_0x9b46('0xe')]()[_0x9b46('0xf')](function(_0x35c5c1){if(_0x35c5c1){var _0x2136bc=_[_0x9b46('0x10')](_0x35c5c1,function(_0x3f2b28){return _0x3f2b28[_0x9b46('0xa')]===_0x9b46('0x11')||_0x3f2b28[_0x9b46('0xa')]===_0x9b46('0x12');});return{'rows':_0x2136bc,'count':_0x2136bc['length']};}return null;})['then'](respondWithResult(_0x3d9618,null))['catch'](handleError(_0x3d9618,null));};exports[_0x9b46('0x13')]=function(_0x5a380c,_0x29fec9){return pm2['describe'](_0x5a380c['params']['id'])[_0x9b46('0xf')](respondWithResult(_0x29fec9,null))['then'](handleEntityNotFound(_0x29fec9,null))['catch'](handleError(_0x29fec9,null));};exports[_0x9b46('0x14')]=function(_0x3a15cc,_0x5a0d25){if(_0x3a15cc[_0x9b46('0x15')][_0x9b46('0xa')]&&_0x3a15cc['body']['script']){var _0xbec2ea=path[_0x9b46('0x16')](__dirname,_0x9b46('0x17'),_0x3a15cc['body']['script']);var _0x2b3440=process['cwd']();process[_0x9b46('0x18')](path[_0x9b46('0x19')](_0xbec2ea));return execChildProcess()['then'](function(_0xadff19){process['chdir'](_0x2b3440);return pm2[_0x9b46('0x1a')]({'name':_0x3a15cc[_0x9b46('0x15')]['name'],'script':_0xbec2ea});})[_0x9b46('0xf')](function(_0x31ca63){pm2[_0x9b46('0x1b')]();return _0x31ca63[0x0];})[_0x9b46('0xf')](respondWithResult(_0x5a0d25,0xc9))[_0x9b46('0x1c')](handleError(_0x5a0d25,null));}else{return _0x5a0d25[_0x9b46('0x1d')](0x1f4)[_0x9b46('0xb')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x9b46('0x1e')]=function(_0x3ac37e,_0x478105){if(_0x3ac37e[_0x9b46('0x15')]['id']){delete _0x3ac37e[_0x9b46('0x15')]['id'];}var _0x2a79a5={'online':_0x9b46('0x1f'),'stopped':'stop'};if(_0x2a79a5[_0x9b46('0x20')](_0x3ac37e[_0x9b46('0x15')][_0x9b46('0x1d')])){return pm2[_0x2a79a5[_0x3ac37e[_0x9b46('0x15')][_0x9b46('0x1d')]]](_0x3ac37e[_0x9b46('0x21')]['id'])[_0x9b46('0xf')](respondWithResult(_0x478105,0xc8))[_0x9b46('0x1c')](handleError(_0x478105,null));}else{return _0x478105[_0x9b46('0x1d')](0x1f4)[_0x9b46('0xb')]({'message':_0x9b46('0x22')});}};exports['destroy']=function(_0x1f722d,_0x27f326){if(_0x1f722d[_0x9b46('0x15')]['id']){delete _0x1f722d[_0x9b46('0x15')]['id'];}if(_0x1f722d[_0x9b46('0x21')]['id']){return pm2[_0x9b46('0x23')](_0x1f722d[_0x9b46('0x21')]['id'])[_0x9b46('0xf')](function(_0x3ab49a){pm2[_0x9b46('0x1b')]();return _0x3ab49a[0x0];})[_0x9b46('0xf')](respondWithResult(_0x27f326,null))['catch'](handleError(_0x27f326,null));}else{return _0x27f326[_0x9b46('0x1d')](0x1f4)['send']({'message':_0x9b46('0x24')});}};
\ No newline at end of file
index a0a5f74..1b257c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf86e=['/queues','getQueues','exports','express','Router','./realtime.controller','get','isAuthenticated'];(function(_0xfba845,_0x55f7f7){var _0x5e1496=function(_0x46f8d0){while(--_0x46f8d0){_0xfba845['push'](_0xfba845['shift']());}};_0x5e1496(++_0x55f7f7);}(_0xf86e,0xcb));var _0xef86=function(_0x55c485,_0x3fe77e){_0x55c485=_0x55c485-0x0;var _0x6bb521=_0xf86e[_0x55c485];return _0x6bb521;};'use strict';var express=require(_0xef86('0x0'));var router=express[_0xef86('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xef86('0x2'));router[_0xef86('0x3')]('/agents',auth[_0xef86('0x4')](),controller['getAgents']);router[_0xef86('0x3')](_0xef86('0x5'),auth['isAuthenticated'](),controller[_0xef86('0x6')]);module[_0xef86('0x7')]=router;
\ No newline at end of file
+var _0xe0f5=['../../components/auth/service','./realtime.controller','get','/agents','getAgents','/queues','getQueues','Router'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xe0f5,0x177));var _0x5e0f=function(_0xfeee3,_0x273c02){_0xfeee3=_0xfeee3-0x0;var _0x419008=_0xe0f5[_0xfeee3];return _0x419008;};'use strict';var express=require('express');var router=express[_0x5e0f('0x0')]();var auth=require(_0x5e0f('0x1'));var controller=require(_0x5e0f('0x2'));router[_0x5e0f('0x3')](_0x5e0f('0x4'),auth['isAuthenticated'](),controller[_0x5e0f('0x5')]);router['get'](_0x5e0f('0x6'),auth['isAuthenticated'](),controller[_0x5e0f('0x7')]);module['exports']=router;
\ No newline at end of file
index de6bdcf..2f06aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd559=['order','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','length','User','rawAttributes','fieldName','type','key','agent','online','getOptions','push','sequelize','literal','FIELD(id,','forEach','Pause','where','merge','user','role','userProfileId','extraQueryConditions','UserProfile','getResources','findAndCountAll','map','find','globalStatus','getAgentStatus','Status','pause','sortAgentsByStatus','getQueues','isValidChannel','name','voice','outbound','dialActive','dialMethod','join','QueueCampaigns','Queues','filter','getRealtimeQueues','initializeQueues','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../errors/api','APIBadRequestError','handleError','offset','undefined','limit','count','status','set','Content-Range','json','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','*pause','resolve','then','channel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','getUpdatedSortOptions','fields'];(function(_0x44edab,_0x8afb62){var _0x1b4de0=function(_0x4ea4d8){while(--_0x4ea4d8){_0x44edab['push'](_0x44edab['shift']());}};_0x1b4de0(++_0x8afb62);}(_0xd559,0x1c0));var _0x9d55=function(_0x24006e,_0x42714c){_0x24006e=_0x24006e-0x0;var _0x5b9d3a=_0xd559[_0x24006e];return _0x5b9d3a;};'use strict';var _=require('lodash');var util=require(_0x9d55('0x0'));var rta=require(_0x9d55('0x1'));var rtq=require(_0x9d55('0x2'));var qs=require(_0x9d55('0x3'));var utils=require(_0x9d55('0x4'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0x9d55('0x5'))[_0x9d55('0x6')];var APIHandleError=require(_0x9d55('0x5'))[_0x9d55('0x7')];function respondWithFilteredResult(_0xa534bc,_0xbf3444){return function(_0x5eac26){if(_0x5eac26){var _0x4ddaf3=typeof _0xbf3444[_0x9d55('0x8')]===_0x9d55('0x9')&&typeof _0xbf3444[_0x9d55('0xa')]===_0x9d55('0x9');var _0x4cfbef=_0x5eac26[_0x9d55('0xb')];var _0x5ec3e6=_0x4ddaf3?0x0:_0xbf3444[_0x9d55('0x8')];var _0x462925=_0x4ddaf3?_0x5eac26[_0x9d55('0xb')]:_0xbf3444['offset']+_0xbf3444['limit'];var _0x1b12f0;if(_0x462925>=_0x4cfbef){_0x462925=_0x4cfbef;_0x1b12f0=0xc8;}else{_0x1b12f0=0xce;}_0xa534bc[_0x9d55('0xc')](_0x1b12f0);return _0xa534bc[_0x9d55('0xd')](_0x9d55('0xe'),_0x5ec3e6+'-'+_0x462925+'/'+_0x4cfbef)[_0x9d55('0xf')](_0x5eac26);}return null;};}exports['getAgents']=function(_0x12f5d5,_0x19d9aa){var _0x362db2={'count':0x0,'rows':[]};var _0x290b99={};var _0x3a0b2b;var _0x41a9b2=utils[_0x9d55('0x10')]();var _0x293b21;var _0x3d1c64;var _0x4699a8=_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x12')];var _0x594147=_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x13')];var _0x1bd825=_0x12f5d5['query'][_0x9d55('0x14')];var _0xd9b98e=_0x594147==='pause'||_0x594147===_0x9d55('0x15')?!![]:![];var _0x586507=[];var _0x25b826;var _0x42e14c;Promise[_0x9d55('0x16')]()[_0x9d55('0x17')](function(){if(_0x12f5d5['query']['channel']){if(!utils['isValidChannel'](_0x12f5d5['query'][_0x9d55('0x18')])){throw new APIBadRequestError(util[_0x9d55('0x19')](_0x9d55('0x1a'),_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x18')]));}_0x3a0b2b=_0x12f5d5['query'][_0x9d55('0x18')][_0x9d55('0x1b')]();}if(!_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x1c')]||!_0x12f5d5[_0x9d55('0x11')]['sort'][_0x9d55('0x1d')]('globalStatus')){_0x12f5d5['query'][_0x9d55('0x1c')]=rta['validateSortParameter'](_0x12f5d5[_0x9d55('0x11')]['sort']);return;}var _0x563035=rta[_0x9d55('0x1e')](_0x12f5d5[_0x9d55('0x11')]['sort']);_0x12f5d5['query'][_0x9d55('0x1c')]=_0x563035[_0x9d55('0x1f')]['join'](',');_0x25b826=_0x563035[_0x9d55('0x20')];})[_0x9d55('0x17')](function(){if(!_0x4699a8){return[];}return rta['getAgentIdsByQueues'](_0x4699a8,_0x3a0b2b);})[_0x9d55('0x17')](function(_0x13250b){_0x586507=_0x13250b;return rta[_0x9d55('0x21')]();})[_0x9d55('0x17')](function(_0x1774f0){_0x3d1c64=_0x1774f0[_0x9d55('0x22')];if((!_0x594147||_0xd9b98e)&&!_0x25b826){return _0x586507;}if(_0x25b826&&!_0x594147){return rta[_0x9d55('0x23')](_0x3d1c64,_0x586507,_0x25b826);}else{return rta['getAgentIdsByStatus'](_0x3d1c64,_0x586507,_0x594147);}})[_0x9d55('0x17')](function(_0x111e50){_0x586507=_0x111e50;var _0x538dc0=![];if(_0x586507[_0x9d55('0x24')]===0x0){if(_0x4699a8||_0x594147){_0x538dc0=!![];}if(_0xd9b98e){_0x538dc0=![];}}if(_0x538dc0){return _0x362db2;}var _0x2fef2b=_['map'](db[_0x9d55('0x25')][_0x9d55('0x26')],function(_0x53b48c){return{'name':_0x53b48c[_0x9d55('0x27')],'type':_0x53b48c[_0x9d55('0x28')][_0x9d55('0x29')]};});_0x12f5d5[_0x9d55('0x11')]['role']=_0x9d55('0x2a');_0x12f5d5['query'][_0x9d55('0x2b')]=!![];_0x290b99=qs[_0x9d55('0x2c')](_0x2fef2b,_0x12f5d5);_0x290b99['raw']=!![];var _0x2903d6=[];if(_0x586507[_0x9d55('0x24')]>0x0){_0x2903d6[_0x9d55('0x2d')]({'id':{'$in':_0x586507}});if(_0x25b826&&!_0x594147){_0x42e14c=[db[_0x9d55('0x2e')][_0x9d55('0x2f')](_0x9d55('0x30')+_0x586507+')')];_0x290b99[_0x9d55('0x20')]=_0x42e14c;}}if(_0xd9b98e){_0x41a9b2[_0x9d55('0x31')](function(_0x32ce68){var _0x43a48e=!![];if(_0x594147===_0x9d55('0x15')&&_0x3a0b2b!==_0x32ce68){_0x43a48e=![];}_0x2903d6[_0x9d55('0x2d')]({[_0x32ce68+_0x9d55('0x32')]:_0x43a48e});});if(_0x1bd825){_0x2903d6['push']({'pauseType':_0x1bd825});}}else if(_0x594147){_0x41a9b2['forEach'](function(_0x33ccea){_0x2903d6[_0x9d55('0x2d')]({[_0x33ccea+_0x9d55('0x32')]:![]});});}_0x290b99[_0x9d55('0x33')]=_[_0x9d55('0x34')](_0x290b99[_0x9d55('0x33')],{'$and':_0x2903d6});if(_0x12f5d5[_0x9d55('0x35')][_0x9d55('0x36')]===_0x9d55('0x35')){var _0x458cfb={'params':{'id':_0x12f5d5[_0x9d55('0x35')][_0x9d55('0x37')]},'query':{'section':'Agents','role':_0x9d55('0x2a'),'online':!![],'raw':!![],'ids':_0x586507,'customSorting':_0x42e14c}};if(_0xd9b98e){_0x458cfb['query'][_0x9d55('0x38')]=_0x2903d6;}_0x458cfb[_0x9d55('0x11')]=Object['assign'](_0x458cfb[_0x9d55('0x11')],_0x12f5d5[_0x9d55('0x11')]);delete _0x458cfb['query']['id'];return db[_0x9d55('0x39')][_0x9d55('0x3a')](_0x458cfb);}return db[_0x9d55('0x25')][_0x9d55('0x3b')](_0x290b99);})[_0x9d55('0x17')](function(_0x3701d4){_0x362db2[_0x9d55('0xb')]=_0x3701d4[_0x9d55('0xb')];_0x293b21=_0x3701d4[_0x9d55('0x22')];return _0x293b21[_0x9d55('0x3c')](function(_0x359b40){var _0x25fa46=_[_0x9d55('0x3d')](_0x3d1c64,['id',_0x359b40['id']]);if(_0x25fa46){var _0x94821e=rta['filterAgentAttributes'](_0x25fa46);_['merge'](_0x359b40,_0x94821e);}_0x359b40[_0x9d55('0x3e')]=rta[_0x9d55('0x3f')](_0x359b40);if(_0x359b40['globalStatus'][_0x9d55('0x1d')]('pause')){_0x41a9b2[_0x9d55('0x31')](function(_0xe2fb32){if(_0x359b40[_0xe2fb32+_0x9d55('0x32')]){_0x359b40[_0xe2fb32+_0x9d55('0x40')]=_0x9d55('0x41');}});}return _0x359b40;});})[_0x9d55('0x17')](function(_0x148e06){if(!_0x25b826||_0x42e14c){return _0x148e06;}return rta[_0x9d55('0x42')](_0x148e06,_0x25b826);})[_0x9d55('0x17')](function(_0x2c741e){_0x362db2[_0x9d55('0x22')]=_0x2c741e;return _0x362db2;})[_0x9d55('0x17')](respondWithFilteredResult(_0x19d9aa,_0x290b99))['catch'](APIHandleError(_0x19d9aa));};exports[_0x9d55('0x43')]=function(_0x56560c,_0xb50dfc){var _0x8c9ef5={'count':0x0,'rows':[]};var _0x100a17={};var _0x43679b;var _0x5acea3;var _0x4b7ce6;Promise[_0x9d55('0x16')]()['then'](function(){if(_0x56560c[_0x9d55('0x11')][_0x9d55('0x18')]){if(!utils[_0x9d55('0x44')](_0x56560c[_0x9d55('0x11')][_0x9d55('0x18')])){throw new APIBadRequestError(util[_0x9d55('0x19')](_0x9d55('0x1a'),_0x56560c[_0x9d55('0x11')][_0x9d55('0x18')]));}_0x43679b=_0x56560c[_0x9d55('0x11')]['channel'][_0x9d55('0x1b')]();}var _0x3e0487=_['startCase'](_0x43679b)+'Queue';var _0x5e4694=_['map'](db[_0x3e0487][_0x9d55('0x26')],function(_0x3fdd00){return{'name':_0x3fdd00[_0x9d55('0x27')],'type':_0x3fdd00[_0x9d55('0x28')][_0x9d55('0x29')]};});if(!_0x56560c[_0x9d55('0x11')][_0x9d55('0x1f')]){var _0x23618c=['id',_0x9d55('0x45')];if(_0x43679b===_0x9d55('0x46')){_0x23618c[_0x9d55('0x2d')](_0x9d55('0x28'));if(_0x56560c[_0x9d55('0x11')][_0x9d55('0x28')]===_0x9d55('0x47')){_0x23618c[_0x9d55('0x2d')]([_0x9d55('0x48'),_0x9d55('0x49')]);}}_0x56560c[_0x9d55('0x11')][_0x9d55('0x1f')]=_0x23618c[_0x9d55('0x4a')](',');}_0x100a17=qs[_0x9d55('0x2c')](_0x5e4694,_0x56560c);if(_0x56560c[_0x9d55('0x35')]['role']===_0x9d55('0x35')){var _0x3e67f2={'params':{'id':_0x56560c[_0x9d55('0x35')][_0x9d55('0x37')]},'query':{'section':_0x43679b===_0x9d55('0x46')&&_0x56560c[_0x9d55('0x11')][_0x9d55('0x28')]===_0x9d55('0x47')?_0x9d55('0x4b'):_['startCase'](_0x43679b)+_0x9d55('0x4c'),'type':_0x56560c['query'][_0x9d55('0x28')],'nolimit':!![],'sort':'name','filter':_0x56560c['query'][_0x9d55('0x4d')]}};return db[_0x9d55('0x39')][_0x9d55('0x3a')](_0x3e67f2);}return db[_0x3e0487][_0x9d55('0x3b')](_0x100a17);})['then'](function(_0x5a6528){_0x8c9ef5[_0x9d55('0xb')]=_0x5a6528['count'];_0x5acea3=_0x5a6528['rows'];return rtq[_0x9d55('0x4e')](_0x56560c,_0x43679b);})[_0x9d55('0x17')](function(_0x21c2ef){_0x4b7ce6=_0x21c2ef[_0x9d55('0x22')];return rtq[_0x9d55('0x4f')](_0x5acea3,_0x4b7ce6,_0x43679b,_0x56560c[_0x9d55('0x11')][_0x9d55('0x28')]);})[_0x9d55('0x17')](function(_0x1b0ba1){_0x8c9ef5[_0x9d55('0x22')]=_0x1b0ba1;return _0x8c9ef5;})[_0x9d55('0x17')](respondWithFilteredResult(_0xb50dfc,_0x100a17))['catch'](APIHandleError(_0xb50dfc));};
\ No newline at end of file
+var _0x3d92=['sort','globalStatus','validateSortParameter','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','rawAttributes','fieldName','type','role','agent','getOptions','raw','sequelize','literal','FIELD(id,','forEach','where','user','userProfileId','Agents','extraQueryConditions','assign','UserProfile','getResources','filterAgentAttributes','getAgentStatus','Status','sortAgentsByStatus','Queue','key','QueueCampaigns','jayson/promise','../../components/realtime/agents','../../components/parsers/qs','client','http','offset','undefined','limit','count','set','Content-Range','json','error','stack','name','status','request','startCase','Queues','then','result','catch','available','waiting','talking','paused','voice','outbound','push','pTalking','originated','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','agents','loggedInDb','loggedIn','find','merge','length','busy','connectedlinenum','internal','toString','UserId','accountcode','online','voiceStatus','User','Pause','findAll','includes','toLowerCase','Invalid\x20channel','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','*pause','resolve','channel'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x3d92,0x109));var _0x23d9=function(_0x1e7701,_0x13fd0f){_0x1e7701=_0x1e7701-0x0;var _0x3ab707=_0x3d92[_0x1e7701];return _0x3ab707;};'use strict';var util=require('util');var _=require('lodash');var jayson=require(_0x23d9('0x0'));var rta=require(_0x23d9('0x1'));var qs=require(_0x23d9('0x2'));var utils=require('../../config/utils');var logger=require('../../config/logger')('api');var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x23d9('0x3')][_0x23d9('0x4')]({'port':0x232a});var routingClient=jayson[_0x23d9('0x3')][_0x23d9('0x4')]({'port':0x232c});function respondWithFilteredResult(_0x446d62,_0x29461e){return function(_0x6cee1e){if(_0x6cee1e){var _0x4ccd32=typeof _0x29461e[_0x23d9('0x5')]===_0x23d9('0x6')&&typeof _0x29461e[_0x23d9('0x7')]==='undefined';var _0x451057=_0x6cee1e[_0x23d9('0x8')];var _0x46565b=_0x4ccd32?0x0:_0x29461e[_0x23d9('0x5')];var _0x2934df=_0x4ccd32?_0x6cee1e[_0x23d9('0x8')]:_0x29461e['offset']+_0x29461e['limit'];var _0x3e7b53;if(_0x2934df>=_0x451057){_0x2934df=_0x451057;_0x3e7b53=0xc8;}else{_0x3e7b53=0xce;}_0x446d62['status'](_0x3e7b53);return _0x446d62[_0x23d9('0x9')](_0x23d9('0xa'),_0x46565b+'-'+_0x2934df+'/'+_0x451057)[_0x23d9('0xb')](_0x6cee1e);}return null;};}function handleError(_0xc7f77c,_0x385738){_0x385738=_0x385738||0x1f4;return function(_0x1a56b4){logger[_0x23d9('0xc')](_0x1a56b4[_0x23d9('0xd')]);if(_0x1a56b4[_0x23d9('0xe')]){delete _0x1a56b4[_0x23d9('0xe')];}_0xc7f77c[_0x23d9('0xf')](_0x385738)['send'](_0x1a56b4);};}function getRealtimeQueues(_0x1e4470,_0x1adec1){return new Promise(function(_0x174820,_0x59231f){var _0x34e672=_0x1adec1==='voice'?amiClient:routingClient;return _0x34e672[_0x23d9('0x10')](_[_0x23d9('0x11')](_0x1adec1)+_0x23d9('0x12'),_0x1e4470)[_0x23d9('0x13')](function(_0x384c54){if(_0x384c54[_0x23d9('0xc')])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x1adec1));return _0x174820(_0x384c54[_0x23d9('0x14')]);})[_0x23d9('0x15')](function(_0x2d0b04){_0x59231f(_0x2d0b04);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x148469,_0x5a04f0){return amiClient[_0x23d9('0x10')]('VoiceQueuesChannels',{})[_0x23d9('0x13')](function(_0x1abae8){if(_0x1abae8[_0x23d9('0xc')])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x148469(_0x1abae8[_0x23d9('0x14')]);})[_0x23d9('0x15')](function(_0x27a9ca){_0x5a04f0(_0x27a9ca);});});}function initializeQueues(_0x390e6d,_0x55e613,_0x48fa08,_0x56ba43){var _0x4d42d2=['loggedIn',_0x23d9('0x16'),_0x23d9('0x17'),_0x23d9('0x18'),_0x23d9('0x19')];if(_0x48fa08===_0x23d9('0x1a')&&_0x56ba43===_0x23d9('0x1b')){_0x4d42d2[_0x23d9('0x1c')](_0x23d9('0x1d'),_0x23d9('0x1e'),'message',_0x23d9('0x1f'),_0x23d9('0x20'),_0x23d9('0x21'),_0x23d9('0x22'),_0x23d9('0x23'),_0x23d9('0x24'),_0x23d9('0x25'),_0x23d9('0x26'),_0x23d9('0x27'),'dialPredictiveInterval',_0x23d9('0x28'),_0x23d9('0x29'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls',_0x23d9('0x2a'),_0x23d9('0x2b'),_0x23d9('0x2c'),_0x23d9('0x2d'),_0x23d9('0x2e'));}return _0x390e6d[_0x23d9('0x2f')](function(_0xe531c3){var _0x579b76=_0xe531c3['get']({'plain':!![]});_0x579b76[_0x23d9('0x30')]=[];_0x579b76[_0x23d9('0x19')]=0x0;_0x579b76[_0x23d9('0x31')]=0x0;_0x579b76[_0x23d9('0x32')]=0x0;_0x579b76[_0x23d9('0x16')]=0x0;_0x579b76[_0x23d9('0x17')]=0x0;if(_0x48fa08==='voice'){_0x579b76[_0x23d9('0x18')]=0x0;_0x579b76['busy']=0x0;if(_0x56ba43===_0x23d9('0x1b')){_0x579b76[_0x23d9('0x1d')]=0x0;_0x579b76['originated']=0x0;}}var _0x3bdcc6=_[_0x23d9('0x33')](_0x55e613,['id',_0x579b76['id']]);if(_0x3bdcc6)_[_0x23d9('0x34')](_0x579b76,_['pick'](_0x3bdcc6,_0x4d42d2));return _0x579b76;});}function updateAgentVoiceStatus(_0x359a6b,_0x54be2c,_0xe81b5b){var _0x3a4dbd=_['filter'](_0xe81b5b,['queue',_0x54be2c['name']]);if(_0x3a4dbd[_0x23d9('0x35')]===0x0)return _0x359a6b[_0x23d9('0x36')]=!![];if(_['some'](_0x3a4dbd,[_0x23d9('0x37'),_0x359a6b[_0x23d9('0x38')][_0x23d9('0x39')]()]))return _0x359a6b['talking']=!![];if(!_0x359a6b['talking'])return _0x359a6b[_0x23d9('0x36')]=!![];}function getVoiceQueueAgents(_0x24e742,_0x5133ca,_0x2932a7,_0x48cd8a){var _0x35338f=_[_0x23d9('0x33')](_0x5133ca,['id',_0x24e742['id']]);if(!_0x35338f)return _0x24e742;return _0x35338f['getMembers']({'raw':!![]})[_0x23d9('0x13')](function(_0x7a00c9){for(var _0x4ab27d=0x0;_0x4ab27d<_0x7a00c9[_0x23d9('0x35')];_0x4ab27d++){var _0x3fb9fc=_[_0x23d9('0x33')](_0x2932a7,['id',_0x7a00c9[_0x4ab27d]['UserId']]);if(!_0x3fb9fc){_0x3fb9fc={'id':_0x7a00c9[_0x4ab27d][_0x23d9('0x3a')],'name':_0x7a00c9[_0x4ab27d]['UserId'],'accountcode':'','online':![]};}var _0x300cd3={'id':_0x3fb9fc['id'],'name':_0x3fb9fc[_0x23d9('0xe')],'internal':_0x3fb9fc[_0x23d9('0x3b')],'online':Boolean(_0x3fb9fc[_0x23d9('0x3c')]),'paused':Boolean(_0x7a00c9[_0x4ab27d]['paused'])};if(_0x3fb9fc[_0x23d9('0x3d')]===_0x23d9('0x18'))updateAgentVoiceStatus(_0x300cd3,_0x24e742,_0x48cd8a);if(_0x300cd3[_0x23d9('0x3c')])_0x24e742[_0x23d9('0x31')]++;if(_0x300cd3[_0x23d9('0x36')])_0x24e742[_0x23d9('0x36')]++;if(_0x300cd3[_0x23d9('0x19')]&&!_0x300cd3['busy']&&!_0x300cd3['talking'])_0x24e742[_0x23d9('0x19')]++;_0x24e742['agents'][_0x23d9('0x1c')](_0x300cd3);}return _0x24e742;});}function getQueueAgents(_0x38da13,_0x595e6a,_0xc65e53){var _0x2dc04e=_0x23d9('0x3e')+_['startCase'](_0xc65e53)+'Queue';var _0x5c6868=_0xc65e53+_0x23d9('0x3f');return db[_0x2dc04e][_0x23d9('0x40')]({'where':{[_[_0x23d9('0x11')](_0xc65e53)+'QueueId']:_0x38da13['id']},'raw':!![]})['then'](function(_0x22ff76){for(var _0x4748d9=0x0;_0x4748d9<_0x22ff76[_0x23d9('0x35')];_0x4748d9++){var _0x2115aa=_[_0x23d9('0x33')](_0x595e6a,['id',_0x22ff76[_0x4748d9][_0x23d9('0x3a')]]);if(!_0x2115aa){_0x2115aa={'id':_0x22ff76[_0x4748d9]['UserId'],'name':_0x22ff76[_0x4748d9]['UserId'],'online':![],['pauseField']:![]};}var _0x2ba1b5={'id':_0x2115aa['id'],'name':_0x2115aa['name'],'online':Boolean(_0x2115aa[_0x23d9('0x3c')]),'paused':Boolean(_0x2115aa[_0x5c6868])};if(_0x2ba1b5[_0x23d9('0x3c')])_0x38da13[_0x23d9('0x31')]++;_0x38da13[_0x23d9('0x30')][_0x23d9('0x1c')](_0x2ba1b5);}return _0x38da13;});}function validateChannel(_0x23fccc){var _0x49e526=utils['getChannels']();if(!_[_0x23d9('0x41')](_0x49e526,_0x23fccc[_0x23d9('0x42')]()))throw new Error(_0x23d9('0x43'));return _0x23fccc[_0x23d9('0x42')]();}exports['getAgents']=function(_0x22736e,_0x139851){var _0xae6ad7={'count':0x0,'rows':[]};var _0x3e7512={};var _0x782a0b;var _0x10482a;var _0x11fd63;var _0x3f3f36;var _0x23959a=utils[_0x23d9('0x44')]();var _0x583faa=_0x22736e[_0x23d9('0x45')][_0x23d9('0x46')];var _0xb4404d=_0x22736e[_0x23d9('0x45')][_0x23d9('0x47')];var _0x48e334=_0x22736e[_0x23d9('0x45')][_0x23d9('0x48')];var _0x2005dc=_0xb4404d===_0x23d9('0x49')||_0xb4404d===_0x23d9('0x4a')?!![]:![];var _0x46fee2=[];var _0x97b58a;Promise[_0x23d9('0x4b')]()[_0x23d9('0x13')](function(){if(_0x22736e['query'][_0x23d9('0x4c')]){_0x782a0b=validateChannel(_0x22736e['query'][_0x23d9('0x4c')]);}if(!_0x22736e[_0x23d9('0x45')][_0x23d9('0x4d')]||!_0x22736e[_0x23d9('0x45')][_0x23d9('0x4d')]['includes'](_0x23d9('0x4e'))){_0x22736e[_0x23d9('0x45')][_0x23d9('0x4d')]=rta[_0x23d9('0x4f')](_0x22736e[_0x23d9('0x45')][_0x23d9('0x4d')]);return;}var _0x25c196=rta['getUpdatedSortOptions'](_0x22736e[_0x23d9('0x45')][_0x23d9('0x4d')]);_0x22736e[_0x23d9('0x45')][_0x23d9('0x4d')]=_0x25c196[_0x23d9('0x50')][_0x23d9('0x51')](',');_0x10482a=_0x25c196[_0x23d9('0x52')];})[_0x23d9('0x13')](function(){if(!_0x583faa){return[];}return rta[_0x23d9('0x53')](_0x583faa,_0x782a0b);})[_0x23d9('0x13')](function(_0x4868ca){_0x46fee2=_0x4868ca;return rta[_0x23d9('0x54')]();})[_0x23d9('0x13')](function(_0x2bd959){_0x3f3f36=_0x2bd959[_0x23d9('0x55')];if((!_0xb4404d||_0x2005dc)&&!_0x10482a){return _0x46fee2;}if(_0x10482a&&!_0xb4404d){return rta[_0x23d9('0x56')](_0x3f3f36,_0x46fee2,_0x10482a);}else{return rta[_0x23d9('0x57')](_0x3f3f36,_0x46fee2,_0xb4404d);}})[_0x23d9('0x13')](function(_0x46e1ee){_0x46fee2=_0x46e1ee;var _0x2931c4=![];if(_0x46fee2[_0x23d9('0x35')]===0x0){if(_0x583faa||_0xb4404d){_0x2931c4=!![];}if(_0x2005dc){_0x2931c4=![];}}if(_0x2931c4){return _0xae6ad7;}var _0x30fb8d=_[_0x23d9('0x2f')](db[_0x23d9('0x3e')][_0x23d9('0x58')],function(_0x846c7e){return{'name':_0x846c7e[_0x23d9('0x59')],'type':_0x846c7e[_0x23d9('0x5a')]['key']};});_0x22736e[_0x23d9('0x45')][_0x23d9('0x5b')]=_0x23d9('0x5c');_0x22736e['query'][_0x23d9('0x3c')]=!![];_0x3e7512=qs[_0x23d9('0x5d')](_0x30fb8d,_0x22736e);_0x3e7512[_0x23d9('0x5e')]=!![];var _0x3f8332=[];if(_0x46fee2['length']>0x0){_0x3f8332[_0x23d9('0x1c')]({'id':{'$in':_0x46fee2}});if(_0x10482a&&!_0xb4404d){_0x97b58a=[db[_0x23d9('0x5f')][_0x23d9('0x60')](_0x23d9('0x61')+_0x46fee2+')')];_0x3e7512[_0x23d9('0x52')]=_0x97b58a;}}if(_0x2005dc){_0x23959a[_0x23d9('0x62')](function(_0x15d524){var _0x3fd8f6=!![];if(_0xb4404d===_0x23d9('0x4a')&&_0x782a0b!==_0x15d524){_0x3fd8f6=![];}_0x3f8332[_0x23d9('0x1c')]({[_0x15d524+_0x23d9('0x3f')]:_0x3fd8f6});});if(_0x48e334){_0x3f8332['push']({'pauseType':_0x48e334});}}else if(_0xb4404d){_0x23959a[_0x23d9('0x62')](function(_0x840839){_0x3f8332['push']({[_0x840839+_0x23d9('0x3f')]:![]});});}_0x3e7512[_0x23d9('0x63')]=_[_0x23d9('0x34')](_0x3e7512[_0x23d9('0x63')],{'$and':_0x3f8332});if(_0x22736e['user'][_0x23d9('0x5b')]===_0x23d9('0x64')){var _0x555c0d={'params':{'id':_0x22736e[_0x23d9('0x64')][_0x23d9('0x65')]},'query':{'section':_0x23d9('0x66'),'role':_0x23d9('0x5c'),'online':!![],'raw':!![],'ids':_0x46fee2,'customSorting':_0x97b58a}};if(_0x2005dc){_0x555c0d[_0x23d9('0x45')][_0x23d9('0x67')]=_0x3f8332;}_0x555c0d[_0x23d9('0x45')]=Object[_0x23d9('0x68')](_0x555c0d['query'],_0x22736e[_0x23d9('0x45')]);delete _0x555c0d[_0x23d9('0x45')]['id'];return db[_0x23d9('0x69')][_0x23d9('0x6a')](_0x555c0d);}return db['User']['findAndCountAll'](_0x3e7512);})['then'](function(_0x2c3348){_0xae6ad7[_0x23d9('0x8')]=_0x2c3348[_0x23d9('0x8')];_0x11fd63=_0x2c3348[_0x23d9('0x55')];return _0x11fd63['map'](function(_0x2edc6f){var _0x5026e4=_[_0x23d9('0x33')](_0x3f3f36,['id',_0x2edc6f['id']]);if(_0x5026e4){var _0x4bce0a=rta[_0x23d9('0x6b')](_0x5026e4);_['merge'](_0x2edc6f,_0x4bce0a);}_0x2edc6f[_0x23d9('0x4e')]=rta[_0x23d9('0x6c')](_0x2edc6f);if(_0x2edc6f['globalStatus'][_0x23d9('0x41')](_0x23d9('0x49'))){_0x23959a['forEach'](function(_0x58bc30){if(_0x2edc6f[_0x58bc30+_0x23d9('0x3f')]){_0x2edc6f[_0x58bc30+_0x23d9('0x6d')]=_0x23d9('0x49');}});}return _0x2edc6f;});})[_0x23d9('0x13')](function(_0x494fac){if(!_0x10482a||_0x97b58a){return _0x494fac;}return rta[_0x23d9('0x6e')](_0x494fac,_0x10482a);})['then'](function(_0x5ae62e){_0xae6ad7[_0x23d9('0x55')]=_0x5ae62e;return _0xae6ad7;})['then'](respondWithFilteredResult(_0x139851,_0x3e7512))[_0x23d9('0x15')](handleError(_0x139851,null));};exports['getQueues']=function(_0x33e1a1,_0x2645c4){var _0xe27fef={'count':0x0,'rows':[]},_0x2377a9={},_0xa8f14e,_0x1bb5b6,_0x13fb74,_0x21c054,_0x358a14;Promise[_0x23d9('0x4b')]()[_0x23d9('0x13')](function(){if(_0x33e1a1[_0x23d9('0x45')]['channel'])_0xa8f14e=validateChannel(_0x33e1a1[_0x23d9('0x45')]['channel']);var _0x2e53c4=_[_0x23d9('0x11')](_0xa8f14e)+_0x23d9('0x6f');var _0x35b865=_['map'](db[_0x2e53c4][_0x23d9('0x58')],function(_0xa54c1d){return{'name':_0xa54c1d[_0x23d9('0x59')],'type':_0xa54c1d['type'][_0x23d9('0x70')]};});_0x2377a9=qs[_0x23d9('0x5d')](_0x35b865,_0x33e1a1);if(_0x33e1a1[_0x23d9('0x64')][_0x23d9('0x5b')]==='user'){var _0xcbe8f6={'params':{'id':_0x33e1a1[_0x23d9('0x64')][_0x23d9('0x65')]},'query':{'section':_0xa8f14e===_0x23d9('0x1a')&&_0x33e1a1['query']['type']===_0x23d9('0x1b')?_0x23d9('0x71'):_[_0x23d9('0x11')](_0xa8f14e)+_0x23d9('0x12'),'type':_0x33e1a1[_0x23d9('0x45')]['type'],'nolimit':!![],'sort':_0x23d9('0xe'),'filter':_0x33e1a1[_0x23d9('0x45')]['filter']}};return db[_0x23d9('0x69')][_0x23d9('0x6a')](_0xcbe8f6);}return db[_0x2e53c4]['findAndCountAll'](_0x2377a9);})[_0x23d9('0x13')](function(_0x4b860d){_0xe27fef[_0x23d9('0x8')]=_0x4b860d[_0x23d9('0x8')];_0x1bb5b6=_0x4b860d[_0x23d9('0x55')];return getRealtimeQueues(_0x33e1a1,_0xa8f14e);})[_0x23d9('0x13')](function(_0x3a4b8d){_0x21c054=_0x3a4b8d['rows'];return rta[_0x23d9('0x54')]();})[_0x23d9('0x13')](function(_0x1706c8){_0x13fb74=_0x1706c8['rows'];if(_0xa8f14e!='voice')return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x557319){_0x358a14=_0x557319?_0x557319['rows']:[];return initializeQueues(_0x1bb5b6,_0x21c054,_0xa8f14e,_0x33e1a1['query'][_0x23d9('0x5a')]);})['then'](function(_0x17de27){var _0x417834=_0x17de27[_0x23d9('0x2f')](function(_0x28cff8){if(_0xa8f14e==='voice')return getVoiceQueueAgents(_0x28cff8,_0x1bb5b6,_0x13fb74,_0x358a14);else return getQueueAgents(_0x28cff8,_0x13fb74,_0xa8f14e);});return Promise['all'](_0x417834);})['then'](function(_0x5151ef){_0xe27fef['rows']=_0x5151ef;return _0xe27fef;})['then'](respondWithFilteredResult(_0x2645c4,_0x2377a9))[_0x23d9('0x15')](handleError(_0x2645c4,null));};
\ No newline at end of file
index d04f6b6..c1487de 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(_0x290257,_0x321b6b){var _0x20bff3=function(_0x57dc2c){while(--_0x57dc2c){_0x290257['push'](_0x290257['shift']());}};_0x20bff3(++_0x321b6b);}(_0xe706,0xa3));var _0x6e70=function(_0x3f00ee,_0x1d1673){_0x3f00ee=_0x3f00ee-0x0;var _0x18a07e=_0xe706[_0x3f00ee];return _0x18a07e;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5ef0ee,_0x257a2a){var _0x4832ce=function(_0x5b792c){while(--_0x5b792c){_0x5ef0ee['push'](_0x5ef0ee['shift']());}};_0x4832ce(++_0x257a2a);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 0b5da82..e41ccef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4d=['STRING','DATE','INTEGER'];(function(_0x493b91,_0x28666e){var _0x4c990f=function(_0x2e975e){while(--_0x2e975e){_0x493b91['push'](_0x493b91['shift']());}};_0x4c990f(++_0x28666e);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x3e07b0,_0x171c6f){_0x3e07b0=_0x3e07b0-0x0;var _0x36c354=_0x0f4d[_0x3e07b0];return _0x36c354;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xd0f4('0x0')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0xd0f4('0x0')]},'starttime':{'type':Sequelize[_0xd0f4('0x1')]},'responsetime':{'type':Sequelize[_0xd0f4('0x1')]},'ringtime':{'type':Sequelize[_0xd0f4('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xd0f4('0x0')]},'campaigntype':{'type':Sequelize[_0xd0f4('0x0')]},'membername':{'type':Sequelize[_0xd0f4('0x0')]}};
\ No newline at end of file
+var _0xa6bb=['exports','INTEGER','STRING','DATE'];(function(_0x430c41,_0x2d1c1e){var _0x23e795=function(_0xe299f2){while(--_0xe299f2){_0x430c41['push'](_0x430c41['shift']());}};_0x23e795(++_0x2d1c1e);}(_0xa6bb,0x12c));var _0xba6b=function(_0x517375,_0xb28cbc){_0x517375=_0x517375-0x0;var _0x36128d=_0xa6bb[_0x517375];return _0x36128d;};'use strict';var Sequelize=require('sequelize');module[_0xba6b('0x0')]={'state':{'type':Sequelize[_0xba6b('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xba6b('0x2')]},'scheduledat':{'type':Sequelize[_0xba6b('0x3')]},'uniqueid':{'type':Sequelize[_0xba6b('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xba6b('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xba6b('0x2')]},'campaigntype':{'type':Sequelize[_0xba6b('0x2')]},'membername':{'type':Sequelize[_0xba6b('0x2')]}};
\ No newline at end of file
index a4f3318..bd6e380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4fa=['./reportAgentPreview.attributes','exports','define','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xc4fa,0x12f));var _0xac4f=function(_0xec2241,_0x453d5c){_0xec2241=_0xec2241-0x0;var _0x201e24=_0xc4fa[_0xec2241];return _0x201e24;};'use strict';var _=require(_0xac4f('0x0'));var util=require(_0xac4f('0x1'));var logger=require(_0xac4f('0x2'))(_0xac4f('0x3'));var moment=require(_0xac4f('0x4'));var BPromise=require(_0xac4f('0x5'));var rp=require(_0xac4f('0x6'));var fs=require('fs');var path=require(_0xac4f('0x7'));var rimraf=require('rimraf');var config=require(_0xac4f('0x8'));var attributes=require(_0xac4f('0x9'));module[_0xac4f('0xa')]=function(_0x2966df,_0x5d54c3){return _0x2966df[_0xac4f('0xb')]('ReportAgentPreview',attributes,{'tableName':_0xac4f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf56=['path','rimraf','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','lodash','util','api','moment'];(function(_0x50bad0,_0x152a45){var _0x443fdc=function(_0x2e802b){while(--_0x2e802b){_0x50bad0['push'](_0x50bad0['shift']());}};_0x443fdc(++_0x152a45);}(_0xcf56,0x132));var _0x6cf5=function(_0x1667ba,_0xf399a){_0x1667ba=_0x1667ba-0x0;var _0x2e9232=_0xcf56[_0x1667ba];return _0x2e9232;};'use strict';var _=require(_0x6cf5('0x0'));var util=require(_0x6cf5('0x1'));var logger=require('../../config/logger')(_0x6cf5('0x2'));var moment=require(_0x6cf5('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6cf5('0x4'));var rimraf=require(_0x6cf5('0x5'));var config=require('../../config/environment');var attributes=require(_0x6cf5('0x6'));module[_0x6cf5('0x7')]=function(_0x5a41f5,_0xa71d40){return _0x5a41f5[_0x6cf5('0x8')](_0x6cf5('0x9'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2fd8569..3193e30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c50=['error','code','message','info','result','catch','ReportAgentPreview','create','body','options','raw','CreateReportAgentPreview','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x969a23,_0x38ac6f){var _0x1320df=function(_0x390086){while(--_0x390086){_0x969a23['push'](_0x969a23['shift']());}};_0x1320df(++_0x38ac6f);}(_0x7c50,0x89));var _0x07c5=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x7c50[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x07c5('0x0'));var util=require(_0x07c5('0x1'));var moment=require(_0x07c5('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x07c5('0x3'));var db=require(_0x07c5('0x4'))['db'];var utils=require(_0x07c5('0x5'));var logger=require('../../config/logger')(_0x07c5('0x6'));var config=require('../../config/environment');var jayson=require(_0x07c5('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x98ae56,_0x344d44,_0x57706c){return new BPromise(function(_0x26815d,_0x2b3c3d){return client['request'](_0x98ae56,_0x57706c)[_0x07c5('0x8')](function(_0x74213a){logger['info'](_0x07c5('0x9'),_0x344d44,_0x07c5('0xa'));logger[_0x07c5('0xb')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x344d44,_0x07c5('0xa'),JSON[_0x07c5('0xc')](_0x74213a));if(_0x74213a[_0x07c5('0xd')]){if(_0x74213a[_0x07c5('0xd')][_0x07c5('0xe')]===0x1f4){logger['error'](_0x07c5('0x9'),_0x344d44,_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);return _0x2b3c3d(_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);}logger[_0x07c5('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x344d44,_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);return _0x26815d(_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);}else{logger[_0x07c5('0x10')](_0x07c5('0x9'),_0x344d44,_0x07c5('0xa'));_0x26815d(_0x74213a[_0x07c5('0x11')]['message']);}})[_0x07c5('0x12')](function(_0x1d0c02){logger[_0x07c5('0xd')](_0x07c5('0x9'),_0x344d44,_0x1d0c02);_0x2b3c3d(_0x1d0c02);});});}exports['CreateReportAgentPreview']=function(_0x597d1c){var _0x121334=this;return new Promise(function(_0x9e3a1d,_0x5b21ee){return db[_0x07c5('0x13')][_0x07c5('0x14')](_0x597d1c[_0x07c5('0x15')],{'raw':_0x597d1c[_0x07c5('0x16')]?_0x597d1c[_0x07c5('0x16')][_0x07c5('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x53b30e){logger[_0x07c5('0x10')](_0x07c5('0x18'),_0x597d1c);logger[_0x07c5('0xb')](_0x07c5('0x18'),_0x597d1c,JSON[_0x07c5('0xc')](_0x53b30e));_0x9e3a1d(_0x53b30e);})[_0x07c5('0x12')](function(_0x378357){logger[_0x07c5('0xd')](_0x07c5('0x18'),_0x378357[_0x07c5('0xf')],_0x597d1c);_0x5b21ee(_0x121334[_0x07c5('0xd')](0x1f4,_0x378357['message']));});});};
\ No newline at end of file
+var _0x5908=['jayson/promise','client','http','request','info','ReportAgentPreview,\x20%s,\x20%s','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x20e4a9,_0x4ae4d1){var _0x6497f8=function(_0x54725d){while(--_0x54725d){_0x20e4a9['push'](_0x20e4a9['shift']());}};_0x6497f8(++_0x4ae4d1);}(_0x5908,0x84));var _0x8590=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x5908[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x8590('0x0'));var util=require(_0x8590('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8590('0x2'));var fs=require('fs');var Redis=require(_0x8590('0x3'));var db=require(_0x8590('0x4'))['db'];var utils=require(_0x8590('0x5'));var logger=require(_0x8590('0x6'))(_0x8590('0x7'));var config=require('../../config/environment');var jayson=require(_0x8590('0x8'));var client=jayson[_0x8590('0x9')][_0x8590('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xab5c79,_0x181e99,_0x673e1c){return new BPromise(function(_0x1bdc4a,_0x2779ec){return client[_0x8590('0xb')](_0xab5c79,_0x673e1c)['then'](function(_0x434ddd){logger[_0x8590('0xc')](_0x8590('0xd'),_0x181e99,'request\x20sent');logger[_0x8590('0xe')](_0x8590('0xf'),_0x181e99,_0x8590('0x10'),JSON[_0x8590('0x11')](_0x434ddd));if(_0x434ddd[_0x8590('0x12')]){if(_0x434ddd[_0x8590('0x12')][_0x8590('0x13')]===0x1f4){logger['error'](_0x8590('0xd'),_0x181e99,_0x434ddd['error'][_0x8590('0x14')]);return _0x2779ec(_0x434ddd[_0x8590('0x12')][_0x8590('0x14')]);}logger[_0x8590('0x12')](_0x8590('0xd'),_0x181e99,_0x434ddd[_0x8590('0x12')][_0x8590('0x14')]);return _0x1bdc4a(_0x434ddd[_0x8590('0x12')][_0x8590('0x14')]);}else{logger[_0x8590('0xc')](_0x8590('0xd'),_0x181e99,_0x8590('0x10'));_0x1bdc4a(_0x434ddd['result'][_0x8590('0x14')]);}})[_0x8590('0x15')](function(_0x5e2f4c){logger[_0x8590('0x12')](_0x8590('0xd'),_0x181e99,_0x5e2f4c);_0x2779ec(_0x5e2f4c);});});}exports[_0x8590('0x16')]=function(_0x2f1e99){var _0x3acb4d=this;return new Promise(function(_0x3b6dab,_0xeca465){return db[_0x8590('0x17')][_0x8590('0x18')](_0x2f1e99[_0x8590('0x19')],{'raw':_0x2f1e99['options']?_0x2f1e99[_0x8590('0x1a')][_0x8590('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x16cc42){logger[_0x8590('0xc')]('CreateReportAgentPreview',_0x2f1e99);logger[_0x8590('0xe')](_0x8590('0x16'),_0x2f1e99,JSON[_0x8590('0x11')](_0x16cc42));_0x3b6dab(_0x16cc42);})['catch'](function(_0x189836){logger[_0x8590('0x12')](_0x8590('0x16'),_0x189836['message'],_0x2f1e99);_0xeca465(_0x3acb4d[_0x8590('0x12')](0x1f4,_0x189836[_0x8590('0x14')]));});});};
\ No newline at end of file
index 8d84a38..9240941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x249a=['isAuthenticated','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound/channels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/sms/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels'];(function(_0x260a36,_0x5742eb){var _0x5c8bd9=function(_0x55ed8e){while(--_0x55ed8e){_0x260a36['push'](_0x260a36['shift']());}};_0x5c8bd9(++_0x5742eb);}(_0x249a,0x173));var _0xa249=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x249a[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0xa249('0x0'));var util=require(_0xa249('0x1'));var path=require(_0xa249('0x2'));var express=require(_0xa249('0x3'));var router=express[_0xa249('0x4')]();var auth=require(_0xa249('0x5'));var controller=require(_0xa249('0x6'));router[_0xa249('0x7')](_0xa249('0x8'),auth[_0xa249('0x9')](),controller[_0xa249('0xa')]);router['get']('/voice/channels/:uniqueid/mixmonitor',auth[_0xa249('0x9')](),controller[_0xa249('0xb')]);router[_0xa249('0x7')](_0xa249('0xc'),auth['isAuthenticated'](),controller[_0xa249('0xd')]);router[_0xa249('0x7')](_0xa249('0xe'),auth[_0xa249('0x9')](),controller[_0xa249('0xf')]);router[_0xa249('0x7')](_0xa249('0x10'),auth['isAuthenticated'](),controller[_0xa249('0x11')]);router[_0xa249('0x7')](_0xa249('0x12'),auth['isAuthenticated'](),controller['mailQueues']);router['get'](_0xa249('0x13'),auth[_0xa249('0x9')](),controller[_0xa249('0x14')]);router['get'](_0xa249('0x15'),auth[_0xa249('0x9')](),controller[_0xa249('0x16')]);router[_0xa249('0x7')](_0xa249('0x17'),auth[_0xa249('0x9')](),controller['smsQueues']);router['get'](_0xa249('0x18'),auth['isAuthenticated'](),controller[_0xa249('0x19')]);router[_0xa249('0x7')](_0xa249('0x1a'),auth[_0xa249('0x9')](),controller[_0xa249('0x1b')]);router[_0xa249('0x7')]('/voice/queues/preview/:id',auth['isAuthenticated'](),controller['voiceQueuesPreview']);router['get'](_0xa249('0x1c'),auth[_0xa249('0x9')](),controller['voiceQueuesChannels']);router[_0xa249('0x7')](_0xa249('0x1d'),auth[_0xa249('0x9')](),controller[_0xa249('0x1e')]);router[_0xa249('0x7')]('/voice/queues/channels/:uniqueid/hangup',auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router['get'](_0xa249('0x1f'),auth[_0xa249('0x9')](),controller[_0xa249('0x20')]);router[_0xa249('0x7')](_0xa249('0x21'),auth[_0xa249('0x9')](),controller[_0xa249('0x22')]);router[_0xa249('0x23')](_0xa249('0x21'),auth[_0xa249('0x9')](),controller[_0xa249('0x24')]);router[_0xa249('0x7')]('/outbound',auth[_0xa249('0x9')](),controller['outbound']);router[_0xa249('0x7')](_0xa249('0x25'),auth[_0xa249('0x9')](),controller['outboundChannels']);router[_0xa249('0x7')](_0xa249('0x26'),auth['isAuthenticated'](),controller[_0xa249('0x27')]);router['put'](_0xa249('0x28'),auth[_0xa249('0x9')](),controller[_0xa249('0x29')]);router[_0xa249('0x7')](_0xa249('0x2a'),auth[_0xa249('0x9')](),controller['telephones']);router[_0xa249('0x7')]('/trunks',auth[_0xa249('0x9')](),controller[_0xa249('0x2b')]);router[_0xa249('0x7')](_0xa249('0x2c'),auth[_0xa249('0x9')](),controller[_0xa249('0x2d')]);router[_0xa249('0x7')](_0xa249('0x2e'),auth['isAuthenticated'](),controller[_0xa249('0x2f')]);router[_0xa249('0x7')](_0xa249('0x30'),auth[_0xa249('0x9')](),controller['chatQueuesWaitingInteractions']);router[_0xa249('0x7')]('/mail/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0xa249('0x31')]);router['get'](_0xa249('0x32'),auth[_0xa249('0x9')](),controller[_0xa249('0x33')]);router['get']('/openchannel/queues/:id/waitinginteractions',auth[_0xa249('0x9')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0xa249('0x7')](_0xa249('0x34'),auth['isAuthenticated'](),controller['smsQueuesWaitingInteractions']);router[_0xa249('0x7')]('/whatsapp/queues/waitinginteractions',auth[_0xa249('0x9')](),controller['whatsappQueuesWaitingInteractions']);router[_0xa249('0x7')]('/fax/queues/waitinginteractions',auth[_0xa249('0x9')](),controller[_0xa249('0x35')]);router[_0xa249('0x36')](_0xa249('0x37'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x39')));router[_0xa249('0x7')](_0xa249('0x3a'),auth[_0xa249('0x9')](),controller[_0xa249('0x3b')]);router[_0xa249('0x36')](_0xa249('0x3c'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x3d')));router['get']('/chat/queues/:id',auth[_0xa249('0x9')](),controller['showChatQueues']);router[_0xa249('0x36')]('/fax/queues/:id/notify',auth[_0xa249('0x9')](),controller[_0xa249('0x38')]('fax'));router[_0xa249('0x7')]('/fax/queues/:id',auth[_0xa249('0x9')](),controller[_0xa249('0x3e')]);router[_0xa249('0x36')](_0xa249('0x3f'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x40')));router[_0xa249('0x7')](_0xa249('0x41'),auth[_0xa249('0x9')](),controller[_0xa249('0x42')]);router[_0xa249('0x36')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0xa249('0x43')));router[_0xa249('0x36')](_0xa249('0x44'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x45')));router[_0xa249('0x7')](_0xa249('0x46'),auth['isAuthenticated'](),controller[_0xa249('0x47')]);router[_0xa249('0x7')](_0xa249('0x48'),auth[_0xa249('0x9')](),controller[_0xa249('0x49')]);router[_0xa249('0x36')](_0xa249('0x4a'),auth[_0xa249('0x9')](),controller[_0xa249('0x4b')]);module['exports']=router;
\ No newline at end of file
+var _0xeaef=['put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','/openchannel/queues/:id','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues'];(function(_0x174076,_0x1a072f){var _0x1dadf3=function(_0x2dbbb7){while(--_0x2dbbb7){_0x174076['push'](_0x174076['shift']());}};_0x1dadf3(++_0x1a072f);}(_0xeaef,0x131));var _0xfeae=function(_0x711fbe,_0x549a53){_0x711fbe=_0x711fbe-0x0;var _0x263be2=_0xeaef[_0x711fbe];return _0x263be2;};'use strict';var multer=require(_0xfeae('0x0'));var util=require(_0xfeae('0x1'));var path=require(_0xfeae('0x2'));var express=require('express');var router=express[_0xfeae('0x3')]();var auth=require(_0xfeae('0x4'));var controller=require(_0xfeae('0x5'));router[_0xfeae('0x6')](_0xfeae('0x7'),auth['isAuthenticated'](),controller['voiceChannels']);router[_0xfeae('0x6')](_0xfeae('0x8'),auth[_0xfeae('0x9')](),controller[_0xfeae('0xa')]);router[_0xfeae('0x6')]('/voice/channels/:uniqueid/stopmixmonitor',auth[_0xfeae('0x9')](),controller['voiceChannelStopMixMonitor']);router[_0xfeae('0x6')](_0xfeae('0xb'),auth[_0xfeae('0x9')](),controller[_0xfeae('0xc')]);router[_0xfeae('0x6')](_0xfeae('0xd'),auth['isAuthenticated'](),controller[_0xfeae('0xe')]);router[_0xfeae('0x6')]('/mail/queues',auth[_0xfeae('0x9')](),controller[_0xfeae('0xf')]);router['get'](_0xfeae('0x10'),auth['isAuthenticated'](),controller[_0xfeae('0x11')]);router[_0xfeae('0x6')](_0xfeae('0x12'),auth['isAuthenticated'](),controller[_0xfeae('0x13')]);router[_0xfeae('0x6')](_0xfeae('0x14'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x15')]);router[_0xfeae('0x6')](_0xfeae('0x16'),auth['isAuthenticated'](),controller[_0xfeae('0x17')]);router[_0xfeae('0x6')](_0xfeae('0x18'),auth['isAuthenticated'](),controller['faxQueues']);router[_0xfeae('0x6')](_0xfeae('0x19'),auth[_0xfeae('0x9')](),controller['voiceQueuesPreview']);router[_0xfeae('0x6')](_0xfeae('0x1a'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x1b')]);router[_0xfeae('0x6')](_0xfeae('0x1c'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x1d')]);router['get']('/voice/queues/channels/:uniqueid/hangup',auth[_0xfeae('0x9')](),controller[_0xfeae('0x1e')]);router[_0xfeae('0x6')](_0xfeae('0x1f'),auth['isAuthenticated'](),controller[_0xfeae('0x20')]);router['get'](_0xfeae('0x21'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x22')]);router[_0xfeae('0x23')](_0xfeae('0x21'),auth['isAuthenticated'](),controller[_0xfeae('0x24')]);router[_0xfeae('0x6')](_0xfeae('0x25'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x26')]);router[_0xfeae('0x6')](_0xfeae('0x27'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x28')]);router['get']('/agents',auth[_0xfeae('0x9')](),controller['agents']);router['put'](_0xfeae('0x29'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x2a')]);router[_0xfeae('0x6')](_0xfeae('0x2b'),auth[_0xfeae('0x9')](),controller['telephones']);router[_0xfeae('0x6')](_0xfeae('0x2c'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x2d')]);router[_0xfeae('0x6')](_0xfeae('0x2e'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x2f')]);router['get'](_0xfeae('0x30'),auth[_0xfeae('0x9')](),controller['faxAccounts']);router[_0xfeae('0x6')](_0xfeae('0x31'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x32')]);router[_0xfeae('0x6')](_0xfeae('0x33'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x34')]);router['get'](_0xfeae('0x35'),auth[_0xfeae('0x9')](),controller['openchannelQueuesWaitingInteractions']);router[_0xfeae('0x6')]('/openchannel/queues/:id/waitinginteractions',auth[_0xfeae('0x9')](),controller[_0xfeae('0x36')]);router['get'](_0xfeae('0x37'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x38')]);router[_0xfeae('0x6')](_0xfeae('0x39'),auth['isAuthenticated'](),controller['whatsappQueuesWaitingInteractions']);router[_0xfeae('0x6')](_0xfeae('0x3a'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x3b')]);router[_0xfeae('0x3c')](_0xfeae('0x3d'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x3e')]('mail'));router['get'](_0xfeae('0x3f'),auth['isAuthenticated'](),controller['showMailQueues']);router[_0xfeae('0x3c')](_0xfeae('0x40'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x3e')](_0xfeae('0x41')));router['get'](_0xfeae('0x42'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x43')]);router['post'](_0xfeae('0x44'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x3e')](_0xfeae('0x45')));router[_0xfeae('0x6')](_0xfeae('0x46'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x47')]);router['post'](_0xfeae('0x48'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x3e')]('openchannel'));router['get'](_0xfeae('0x49'),auth[_0xfeae('0x9')](),controller['showOpenchannelQueues']);router[_0xfeae('0x3c')](_0xfeae('0x4a'),auth[_0xfeae('0x9')](),controller['queueNotify'](_0xfeae('0x4b')));router['post'](_0xfeae('0x4c'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x3e')](_0xfeae('0x4d')));router[_0xfeae('0x6')](_0xfeae('0x4e'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x4f')]);router['get'](_0xfeae('0x50'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x51')]);router[_0xfeae('0x3c')](_0xfeae('0x52'),auth[_0xfeae('0x9')](),controller[_0xfeae('0x53')]);module[_0xfeae('0x54')]=router;
\ No newline at end of file
index 154c70e..b08f151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['whatsappQueues','WhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','Account','QueueId','TransferReport','create','Start','queueTransferTimeout','agentNotify','channel','Channel\x20field\x20is\x20mandatory','chat','User','Agent\x20not\x20found','agentTransferTimeout','*,*,*,*','bluebird','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','then','error','code','message','catch','status','sendStatus','stack','name','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','params','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','OutboundChannels','Agents','user','interaction','hasOwnProperty','MemberReport','findAll','INTERACTION','length','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','format','SIP/%s','interface','agent','internal','capacity','telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','showOpenchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','SmsQueues'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x5c032f,_0x47ad3b){_0x5c032f=_0x5c032f-0x0;var _0x1f4dfe=_0x3eea[_0x5c032f];return _0x1f4dfe;};'use strict';var BPromise=require(_0xa3ee('0x0'));var moment=require('moment');var _=require(_0xa3ee('0x1'));var util=require(_0xa3ee('0x2'));var db=require(_0xa3ee('0x3'))['db'];var logger=require(_0xa3ee('0x4'))(_0xa3ee('0x5'));var jayson=require(_0xa3ee('0x6'));var amiClient=jayson[_0xa3ee('0x7')][_0xa3ee('0x8')]({'port':0x232a});var mailClient=jayson[_0xa3ee('0x7')][_0xa3ee('0x8')]({'port':0x232b});var routingClient=jayson[_0xa3ee('0x7')]['http']({'port':0x232c});function respondWithRpcPromise(_0x538bf9,_0x4183ee,_0x4e4588){return new BPromise(function(_0x37a3f0,_0x56f37b){var _0x1eeb5b=_0x4e4588?_0x4e4588:amiClient;return _0x1eeb5b['request'](_0x538bf9,_0x4183ee)[_0xa3ee('0x9')](function(_0x5ef236){if(_0x5ef236[_0xa3ee('0xa')]){if(_0x5ef236[_0xa3ee('0xa')][_0xa3ee('0xb')]===0x1f4){return _0x56f37b(_0x5ef236['error'][_0xa3ee('0xc')]);}return _0x37a3f0(_0x5ef236[_0xa3ee('0xa')]['message']);}else{_0x37a3f0(_0x5ef236['result']);}})[_0xa3ee('0xd')](function(_0x30e652){_0x56f37b(_0x30e652);});});}function respondWithResult(_0x403518,_0x4363d1){_0x4363d1=_0x4363d1||0xc8;return function(_0x594c88){if(_0x594c88){return _0x403518[_0xa3ee('0xe')](_0x4363d1)['json'](_0x594c88);}return _0x403518[_0xa3ee('0xf')](0x194);};}function handleError(_0x20535f,_0x2c34cf){_0x2c34cf=_0x2c34cf||0x1f4;return function(_0x150e20){logger['error'](_0x150e20[_0xa3ee('0x10')]);if(_0x150e20[_0xa3ee('0x11')]){delete _0x150e20['name'];}_0x20535f['status'](_0x2c34cf)['send'](_0x150e20);};}function findById(_0x40decb){return function(_0x7277cd){if(!_[_0xa3ee('0x12')](_0x40decb)&&!_[_0xa3ee('0x12')](_0x7277cd)&&!_['isNil'](_0x7277cd[_0xa3ee('0x13')])){return _[_0xa3ee('0x14')](_0x7277cd[_0xa3ee('0x13')],function(_0x299b1e){return _0x299b1e['id']==_0x40decb;});}return null;};}exports[_0xa3ee('0x15')]=function(_0x4aac0e,_0x377b9d){return respondWithRpcPromise(_0xa3ee('0x16'),_0x4aac0e[_0xa3ee('0x17')])[_0xa3ee('0x9')](respondWithResult(_0x377b9d,null))[_0xa3ee('0xd')](handleError(_0x377b9d,null));};exports[_0xa3ee('0x18')]=function(_0x4f8c56,_0x3f5d70){return respondWithRpcPromise(_0xa3ee('0x19'),_['merge'](_0x4f8c56[_0xa3ee('0x17')],_0x4f8c56['params']))[_0xa3ee('0x9')](respondWithResult(_0x3f5d70,null))[_0xa3ee('0xd')](handleError(_0x3f5d70,null));};exports[_0xa3ee('0x1a')]=function(_0x1bd196,_0x60b899){return respondWithRpcPromise(_0xa3ee('0x1b'),_[_0xa3ee('0x1c')](_0x1bd196[_0xa3ee('0x17')],_0x1bd196[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x60b899,null))['catch'](handleError(_0x60b899,null));};exports[_0xa3ee('0x1e')]=function(_0x1dca29,_0x157071){return respondWithRpcPromise(_0xa3ee('0x1f'),_0x1dca29[_0xa3ee('0x17')])['then'](respondWithResult(_0x157071,null))[_0xa3ee('0xd')](handleError(_0x157071,null));};exports[_0xa3ee('0x20')]=function(_0x146493,_0xd9a7f8){return respondWithRpcPromise(_0xa3ee('0x1f'),_0x146493[_0xa3ee('0x17')])[_0xa3ee('0x9')](findById(_0x146493[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0xd9a7f8,null))[_0xa3ee('0xd')](handleError(_0xd9a7f8,null));};exports['updateVoiceQueue']=function(_0x5ba571,_0x4abf49){return respondWithRpcPromise(_0xa3ee('0x21'),_['merge'](_0x5ba571[_0xa3ee('0x22')],_0x5ba571[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x4abf49,null))[_0xa3ee('0xd')](handleError(_0x4abf49,null));};exports[_0xa3ee('0x23')]=function(_0x14547d,_0x30ba4e){return respondWithRpcPromise(_0xa3ee('0x24'),_[_0xa3ee('0x1c')](_0x14547d[_0xa3ee('0x17')],_0x14547d['params']))[_0xa3ee('0x9')](respondWithResult(_0x30ba4e,null))['catch'](handleError(_0x30ba4e,null));};exports[_0xa3ee('0x25')]=function(_0x332d61,_0x496839){return respondWithRpcPromise(_0xa3ee('0x26'),_0x332d61['query'])[_0xa3ee('0x9')](respondWithResult(_0x496839,null))['catch'](handleError(_0x496839,null));};exports[_0xa3ee('0x27')]=function(_0x299099,_0x2f803c){return respondWithRpcPromise(_0xa3ee('0x28'),_[_0xa3ee('0x1c')](_0x299099['query'],_0x299099[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x2f803c,null))[_0xa3ee('0xd')](handleError(_0x2f803c,null));};exports['voiceQueuesChannelHangup']=function(_0x1599e4,_0x531f58){return respondWithRpcPromise(_0xa3ee('0x29'),_['merge'](_0x1599e4[_0xa3ee('0x17')],_0x1599e4['params']))[_0xa3ee('0x9')](respondWithResult(_0x531f58,null))[_0xa3ee('0xd')](handleError(_0x531f58,null));};exports[_0xa3ee('0x2a')]=function(_0x45be9b,_0x1717ba){return respondWithRpcPromise(_0xa3ee('0x2b'),_[_0xa3ee('0x1c')](_0x45be9b[_0xa3ee('0x17')],_0x45be9b[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x1717ba,null))[_0xa3ee('0xd')](handleError(_0x1717ba,null));};exports[_0xa3ee('0x2c')]=function(_0x447efd,_0x595b55){return respondWithRpcPromise(_0xa3ee('0x2d'),_0x447efd[_0xa3ee('0x17')])[_0xa3ee('0x9')](respondWithResult(_0x595b55,null))[_0xa3ee('0xd')](handleError(_0x595b55,null));};exports['outboundChannels']=function(_0x257627,_0x11a721){return respondWithRpcPromise(_0xa3ee('0x2e'),_0x257627['query'])[_0xa3ee('0x9')](respondWithResult(_0x11a721,null))[_0xa3ee('0xd')](handleError(_0x11a721,null));};exports['agents']=function(_0x319c26,_0x3ecbe6){var _0x4ef99a;return respondWithRpcPromise(_0xa3ee('0x2f'),_0x319c26[_0xa3ee('0x17')])[_0xa3ee('0x9')](function(_0x2c8873){_0x4ef99a=_0x2c8873;return respondWithRpcPromise(_0xa3ee('0x2f'),_0x319c26[_0xa3ee('0x17')],routingClient);})[_0xa3ee('0x9')](function(_0x3e0eec){return _[_0xa3ee('0x1c')]({},_0x3e0eec,_0x4ef99a);})[_0xa3ee('0x9')](respondWithResult(_0x3ecbe6,null))[_0xa3ee('0xd')](handleError(_0x3ecbe6,null));};exports['agentCapacity']=function(_0x5aa4b3,_0x548534){if(_0x5aa4b3[_0xa3ee('0x22')]&&_0x5aa4b3[_0xa3ee('0x22')]['interaction']&&_0x5aa4b3[_0xa3ee('0x30')]&&_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')]){for(var _0x55f47f in _0x5aa4b3[_0xa3ee('0x22')]['interaction']){if(_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0xa3ee('0x32')](_0x55f47f)){db[_0xa3ee('0x33')][_0xa3ee('0x34')]({'where':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')],'type':_0xa3ee('0x35'),'exitAt':null,'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f]&&_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0xa3ee('0x36')]?{'$notIn':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f]}:{'$ne':null}}})[_0xa3ee('0x9')](function(_0x25e0fe){var _0x4594e1=moment()['format'](_0xa3ee('0x37'));for(var _0xdca412=0x0,_0x112e80=_0x25e0fe[_0xa3ee('0x36')];_0xdca412<_0x112e80;_0xdca412+=0x1){_0x25e0fe[_0xdca412]['updateAttributes']({'exitAt':_0x4594e1});}});for(var _0x30fcf1=0x0;_0x30fcf1<_0x5aa4b3['body'][_0xa3ee('0x31')][_0x55f47f][_0xa3ee('0x36')];_0x30fcf1+=0x1){db[_0xa3ee('0x33')][_0xa3ee('0x38')]({'where':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')],'type':_0xa3ee('0x35'),'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0x30fcf1],'exitAt':null},'defaults':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')]['name'],'interface':_[_0xa3ee('0x12')](_0x5aa4b3['user']['interface'])?util[_0xa3ee('0x39')](_0xa3ee('0x3a'),_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')]):_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x3b')],'type':_0xa3ee('0x35'),'enterAt':moment()['format'](_0xa3ee('0x37')),'role':_0xa3ee('0x3c'),'internal':_0x5aa4b3['user'][_0xa3ee('0x3d')],'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0x30fcf1]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x5aa4b3['params']['id'],'capacity':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x3e')]},routingClient)[_0xa3ee('0x9')](respondWithResult(_0x548534,null))[_0xa3ee('0xd')](handleError(_0x548534,null));};exports[_0xa3ee('0x3f')]=function(_0x57e654,_0x55678e){return respondWithRpcPromise(_0xa3ee('0x40'),_0x57e654[_0xa3ee('0x17')])['then'](respondWithResult(_0x55678e,null))[_0xa3ee('0xd')](handleError(_0x55678e,null));};exports[_0xa3ee('0x41')]=function(_0x13cd8b,_0x579ec8){return respondWithRpcPromise('Trunks',_0x13cd8b[_0xa3ee('0x17')])['then'](respondWithResult(_0x579ec8,null))[_0xa3ee('0xd')](handleError(_0x579ec8,null));};exports[_0xa3ee('0x42')]=function(_0x5b8e79,_0x4232e0){return respondWithRpcPromise(_0xa3ee('0x43'),_0x5b8e79[_0xa3ee('0x17')])['then'](respondWithResult(_0x4232e0,null))[_0xa3ee('0xd')](handleError(_0x4232e0,null));};exports[_0xa3ee('0x44')]=function(_0x594034,_0x1d832c){return respondWithRpcPromise(_0xa3ee('0x45'),_0x594034[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x1d832c,null))['catch'](handleError(_0x1d832c,null));};exports[_0xa3ee('0x46')]=function(_0x17ac07,_0x4a1a2f){return respondWithRpcPromise(_0xa3ee('0x45'),_0x17ac07[_0xa3ee('0x17')],routingClient)['then'](findById(_0x17ac07['params']['id']))[_0xa3ee('0x9')](respondWithResult(_0x4a1a2f,null))[_0xa3ee('0xd')](handleError(_0x4a1a2f,null));};exports[_0xa3ee('0x47')]=function(_0x52b824,_0x11fb6e){return respondWithRpcPromise(_0xa3ee('0x48'),_0x52b824[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x11fb6e,null))[_0xa3ee('0xd')](handleError(_0x11fb6e,null));};exports[_0xa3ee('0x49')]=function(_0x497be4,_0x10f508){return respondWithRpcPromise(_0xa3ee('0x48'),_0x497be4['query'],routingClient)[_0xa3ee('0x9')](findById(_0x497be4[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0x10f508,null))[_0xa3ee('0xd')](handleError(_0x10f508,null));};exports[_0xa3ee('0x4a')]=function(_0x330778,_0x4a2255){return respondWithRpcPromise(_0xa3ee('0x4b'),_0x330778[_0xa3ee('0x17')],mailClient)[_0xa3ee('0x9')](respondWithResult(_0x4a2255,null))['catch'](handleError(_0x4a2255,null));};exports[_0xa3ee('0x4c')]=function(_0x13b81b,_0x519f10){return respondWithRpcPromise('OpenchannelQueues',_0x13b81b['query'],routingClient)['then'](respondWithResult(_0x519f10,null))[_0xa3ee('0xd')](handleError(_0x519f10,null));};exports[_0xa3ee('0x4d')]=function(_0x3adafb,_0x2f0424){return respondWithRpcPromise(_0xa3ee('0x4e'),_0x3adafb[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x3adafb['params']['id']))[_0xa3ee('0x9')](respondWithResult(_0x2f0424,null))[_0xa3ee('0xd')](handleError(_0x2f0424,null));};exports[_0xa3ee('0x4f')]=function(_0xaff641,_0x147024){return respondWithRpcPromise('SmsQueues',_0xaff641['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x147024,null))[_0xa3ee('0xd')](handleError(_0x147024,null));};exports[_0xa3ee('0x50')]=function(_0x24613d,_0x16aabe){return respondWithRpcPromise(_0xa3ee('0x51'),_0x24613d[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x24613d[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0x16aabe,null))[_0xa3ee('0xd')](handleError(_0x16aabe,null));};exports[_0xa3ee('0x52')]=function(_0x64f353,_0x224790){return respondWithRpcPromise(_0xa3ee('0x53'),_0x64f353['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x224790,null))['catch'](handleError(_0x224790,null));};exports['showWhatsappQueues']=function(_0x2b1c6e,_0x49daf9){return respondWithRpcPromise(_0xa3ee('0x53'),_0x2b1c6e[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x2b1c6e[_0xa3ee('0x1d')]['id']))['then'](respondWithResult(_0x49daf9,null))[_0xa3ee('0xd')](handleError(_0x49daf9,null));};exports[_0xa3ee('0x54')]=function(_0x179ae2,_0x370e3e){return respondWithRpcPromise('FaxQueues',_0x179ae2[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x370e3e,null))['catch'](handleError(_0x370e3e,null));};exports[_0xa3ee('0x55')]=function(_0x52a066,_0x4f3aac){return respondWithRpcPromise(_0xa3ee('0x56'),_0x52a066['query'],routingClient)['then'](findById(_0x52a066[_0xa3ee('0x1d')]['id']))['then'](respondWithResult(_0x4f3aac,null))['catch'](handleError(_0x4f3aac,null));};exports[_0xa3ee('0x57')]=function(_0xf8689f,_0x538a9b){return respondWithRpcPromise('FaxAccounts',_0xf8689f['query'])[_0xa3ee('0x9')](respondWithResult(_0x538a9b,null))[_0xa3ee('0xd')](handleError(_0x538a9b,null));};exports[_0xa3ee('0x58')]=function(_0x7844ae,_0x389547){return respondWithRpcPromise(_0xa3ee('0x59'),_0x7844ae['query'],routingClient)['then'](respondWithResult(_0x389547,null))[_0xa3ee('0xd')](handleError(_0x389547,null));};exports[_0xa3ee('0x5a')]=function(_0x42a79e,_0x5675fb){return respondWithRpcPromise(_0xa3ee('0x5b'),_0x42a79e[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x5675fb,null))[_0xa3ee('0xd')](handleError(_0x5675fb,null));};exports[_0xa3ee('0x5c')]=function(_0x3be877,_0x2ad745){return respondWithRpcPromise(_0xa3ee('0x5d'),_0x3be877['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x2ad745,null))[_0xa3ee('0xd')](handleError(_0x2ad745,null));};exports[_0xa3ee('0x5e')]=function(_0x37e1c2,_0xbfb429){return respondWithRpcPromise(_0xa3ee('0x5d'),_0x37e1c2[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](function(_0x448f14){if(_0x37e1c2['query']['type']!==undefined){var _0x228671=_(_0x448f14['rows'])[_0xa3ee('0x5f')]([_0x37e1c2[_0xa3ee('0x17')][_0xa3ee('0x60')],_0x37e1c2[_0xa3ee('0x1d')]['id']])['map'](_0xa3ee('0x61'))[_0xa3ee('0x62')]()[_0xa3ee('0x63')]();return _0x448f14[_0xa3ee('0x13')][_0xa3ee('0x5f')](function(_0x4e9473){return _0x228671[_0xa3ee('0x64')](_0x4e9473[_0xa3ee('0x61')])>-0x1;});}else{return _0x448f14[_0xa3ee('0x13')]['filter'](function(_0x3ca523){return _0x3ca523['queue_id']===parseInt(_0x37e1c2[_0xa3ee('0x1d')]['id']);});}})['then'](respondWithResult(_0xbfb429,null))[_0xa3ee('0xd')](handleError(_0xbfb429,null));};exports[_0xa3ee('0x65')]=function(_0x119c3d,_0x140ee0){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x119c3d[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x140ee0,null))['catch'](handleError(_0x140ee0,null));};exports[_0xa3ee('0x66')]=function(_0xa82482,_0x44b084){return respondWithRpcPromise(_0xa3ee('0x67'),_0xa82482[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x44b084,null))[_0xa3ee('0xd')](handleError(_0x44b084,null));};exports[_0xa3ee('0x68')]=function(_0x55a6b7,_0x2535ef){return respondWithRpcPromise(_0xa3ee('0x69'),_0x55a6b7[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x2535ef,null))[_0xa3ee('0xd')](handleError(_0x2535ef,null));};exports[_0xa3ee('0x6a')]=function(_0x31d3ca){return function(_0x329e32,_0x37bde3){var _0x25334c,_0x4f7ace;var _0x21fd56=_[_0xa3ee('0x6b')](_0x31d3ca);var _0x26a124=_0x31d3ca==='chat'?_0xa3ee('0x6c'):'Account';return db[_0x21fd56+_0xa3ee('0x6d')][_0xa3ee('0x6e')]({'raw':!![],'where':{'id':_0x329e32['params']['id']}})[_0xa3ee('0x9')](function(_0x44f27b){if(_['isNil'](_0x44f27b)){throw new Error(_0x21fd56+_0xa3ee('0x6f'));}_0x25334c=_0x44f27b;return db[_0x21fd56+_0xa3ee('0x70')][_0xa3ee('0x6e')]({'where':{'id':_0x329e32[_0xa3ee('0x22')][_0xa3ee('0x71')]},'include':[{'model':db[_0x21fd56+_0xa3ee('0x72')],'as':'Interaction'},{'model':db[_0x21fd56+_0x26a124],'as':'Account'}]});})['then'](function(_0x27454a){if(_['isNil'](_0x27454a)){throw new Error(_0x21fd56+_0xa3ee('0x73'));}_0x4f7ace=_0x27454a;return _0x27454a[_0xa3ee('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa3ee('0x9')](function(){var _0x312ad8={'uniqueid':_0x31d3ca+'.'+_0x4f7ace['id']+'.'+_0x4f7ace[_0xa3ee('0x72')]['id'],'FromUserId':_0x329e32[_0xa3ee('0x30')]['id'],'type':_0xa3ee('0x75')};_0x312ad8[_0x21fd56+_0xa3ee('0x76')]=_0x4f7ace['id'];_0x312ad8[_0x21fd56+_0xa3ee('0x77')]=_0x4f7ace[_0xa3ee('0x72')]['id'];_0x312ad8[_0xa3ee('0x78')+_0x21fd56+_0x26a124+'Id']=_0x4f7ace[_0xa3ee('0x79')]['id'];_0x312ad8['To'+_0x21fd56+_0xa3ee('0x7a')]=_0x25334c['id'];return db[_0x21fd56+_0xa3ee('0x7b')][_0xa3ee('0x7c')](_0x312ad8);})[_0xa3ee('0x9')](function(){return respondWithRpcPromise(_0xa3ee('0x7d'),{'channel':_0x31d3ca,'interaction':_0x4f7ace[_0xa3ee('0x72')],'message':_0x4f7ace,'account':_0x4f7ace[_0xa3ee('0x79')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x25334c[_0xa3ee('0x11')]+','+(_0x4f7ace[_0xa3ee('0x79')][_0xa3ee('0x7e')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0x37bde3,null))[_0xa3ee('0xd')](handleError(_0x37bde3,null));};};exports[_0xa3ee('0x7f')]=function(_0x591bfa,_0x5b53f1){var _0x24cbc9,_0x157436;if(_[_0xa3ee('0x12')](_0x591bfa[_0xa3ee('0x22')][_0xa3ee('0x80')])){throw new Error(_0xa3ee('0x81'));}var _0x18a74b=_0x591bfa[_0xa3ee('0x22')][_0xa3ee('0x80')];var _0x3e6657=_[_0xa3ee('0x6b')](_0x18a74b);var _0x3236b3=_0x18a74b===_0xa3ee('0x82')?'Website':_0xa3ee('0x79');return db[_0xa3ee('0x83')][_0xa3ee('0x6e')]({'raw':!![],'where':{'id':_0x591bfa[_0xa3ee('0x1d')]['id'],'role':_0xa3ee('0x3c')}})[_0xa3ee('0x9')](function(_0x4cc5e5){if(_['isNil'](_0x4cc5e5)){throw new Error(_0xa3ee('0x84'));}_0x24cbc9=_0x4cc5e5;return db[_0x3e6657+_0xa3ee('0x70')][_0xa3ee('0x6e')]({'where':{'id':_0x591bfa['body'][_0xa3ee('0x71')]},'include':[{'model':db[_0x3e6657+'Interaction'],'as':_0xa3ee('0x72')},{'model':db[_0x3e6657+_0x3236b3],'as':_0xa3ee('0x79')}]});})[_0xa3ee('0x9')](function(_0x10ec99){if(_[_0xa3ee('0x12')](_0x10ec99)){throw new Error(_0x3e6657+_0xa3ee('0x73'));}_0x157436=_0x10ec99;return _0x10ec99[_0xa3ee('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa3ee('0x9')](function(){var _0x116de1={'uniqueid':_0x18a74b+'.'+_0x157436['id']+'.'+_0x157436[_0xa3ee('0x72')]['id'],'FromUserId':_0x591bfa['user']['id'],'type':'queue','ToUserId':_0x24cbc9['id']};_0x116de1[_0x3e6657+'MessageId']=_0x157436['id'];_0x116de1[_0x3e6657+_0xa3ee('0x77')]=_0x157436['Interaction']['id'];_0x116de1[_0xa3ee('0x78')+_0x3e6657+_0x3236b3+'Id']=_0x157436[_0xa3ee('0x79')]['id'];return db[_0x3e6657+_0xa3ee('0x7b')][_0xa3ee('0x7c')](_0x116de1);})[_0xa3ee('0x9')](function(){return respondWithRpcPromise(_0xa3ee('0x7d'),{'channel':_0x18a74b,'interaction':_0x157436[_0xa3ee('0x72')],'message':_0x157436,'account':_0x157436[_0xa3ee('0x79')],'applications':[{'id':0x0,'priority':0x1,'app':_0xa3ee('0x3c'),'appdata':_0x24cbc9['name']+','+(_0x157436['Account'][_0xa3ee('0x85')]||0x12c),'interval':_0xa3ee('0x86')}]},routingClient);})[_0xa3ee('0x9')](respondWithResult(_0x5b53f1,null))[_0xa3ee('0xd')](handleError(_0x5b53f1,null));};
\ No newline at end of file
+var _0xee14=['telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','showChatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','update','queue','MessageId','InteractionId','From','QueueId','TransferReport','create','Start','queueTransferTimeout','channel','Website','User','agent','Agent\x20not\x20found','\x20Message\x20not\x20found','*,*,*,*','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','then','error','code','message','result','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','VoiceChannels','query','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','user','interaction','hasOwnProperty','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','MemberReport','findOrCreate','INTERACTION','SIP/%s','AgentCapacity'];(function(_0xe5b55e,_0x3744f2){var _0xee6d73=function(_0x676e1){while(--_0x676e1){_0xe5b55e['push'](_0xe5b55e['shift']());}};_0xee6d73(++_0x3744f2);}(_0xee14,0x13a));var _0x4ee1=function(_0x45e793,_0x124d5c){_0x45e793=_0x45e793-0x0;var _0x436e14=_0xee14[_0x45e793];return _0x436e14;};'use strict';var BPromise=require('bluebird');var moment=require('moment');var _=require(_0x4ee1('0x0'));var util=require(_0x4ee1('0x1'));var db=require(_0x4ee1('0x2'))['db'];var logger=require(_0x4ee1('0x3'))(_0x4ee1('0x4'));var jayson=require(_0x4ee1('0x5'));var amiClient=jayson[_0x4ee1('0x6')][_0x4ee1('0x7')]({'port':0x232a});var mailClient=jayson[_0x4ee1('0x6')]['http']({'port':0x232b});var routingClient=jayson[_0x4ee1('0x6')]['http']({'port':0x232c});function respondWithRpcPromise(_0x327c18,_0x3a45a3,_0x187656){return new BPromise(function(_0x293d5f,_0xdfe9c1){var _0x1fd8c8=_0x187656?_0x187656:amiClient;return _0x1fd8c8['request'](_0x327c18,_0x3a45a3)[_0x4ee1('0x8')](function(_0x38be25){if(_0x38be25['error']){if(_0x38be25[_0x4ee1('0x9')][_0x4ee1('0xa')]===0x1f4){return _0xdfe9c1(_0x38be25[_0x4ee1('0x9')][_0x4ee1('0xb')]);}return _0x293d5f(_0x38be25['error'][_0x4ee1('0xb')]);}else{_0x293d5f(_0x38be25[_0x4ee1('0xc')]);}})[_0x4ee1('0xd')](function(_0x2d5d3c){_0xdfe9c1(_0x2d5d3c);});});}function respondWithResult(_0x2f864e,_0x174427){_0x174427=_0x174427||0xc8;return function(_0x5616d6){if(_0x5616d6){return _0x2f864e[_0x4ee1('0xe')](_0x174427)[_0x4ee1('0xf')](_0x5616d6);}return _0x2f864e[_0x4ee1('0x10')](0x194);};}function handleError(_0x24a915,_0x46d2c2){_0x46d2c2=_0x46d2c2||0x1f4;return function(_0x1c342a){logger[_0x4ee1('0x9')](_0x1c342a[_0x4ee1('0x11')]);if(_0x1c342a[_0x4ee1('0x12')]){delete _0x1c342a['name'];}_0x24a915[_0x4ee1('0xe')](_0x46d2c2)[_0x4ee1('0x13')](_0x1c342a);};}function findById(_0x34651b){return function(_0x1b1e0e){if(!_[_0x4ee1('0x14')](_0x34651b)&&!_[_0x4ee1('0x14')](_0x1b1e0e)&&!_[_0x4ee1('0x14')](_0x1b1e0e[_0x4ee1('0x15')])){return _[_0x4ee1('0x16')](_0x1b1e0e[_0x4ee1('0x15')],function(_0x274de5){return _0x274de5['id']==_0x34651b;});}return null;};}exports['voiceChannels']=function(_0x236215,_0x3db827){return respondWithRpcPromise(_0x4ee1('0x17'),_0x236215[_0x4ee1('0x18')])[_0x4ee1('0x8')](respondWithResult(_0x3db827,null))[_0x4ee1('0xd')](handleError(_0x3db827,null));};exports['voiceChannelMixMonitor']=function(_0x8a631f,_0x333e96){return respondWithRpcPromise(_0x4ee1('0x19'),_[_0x4ee1('0x1a')](_0x8a631f[_0x4ee1('0x18')],_0x8a631f[_0x4ee1('0x1b')]))[_0x4ee1('0x8')](respondWithResult(_0x333e96,null))[_0x4ee1('0xd')](handleError(_0x333e96,null));};exports[_0x4ee1('0x1c')]=function(_0x3e5038,_0x4faaf6){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x4ee1('0x1a')](_0x3e5038[_0x4ee1('0x18')],_0x3e5038[_0x4ee1('0x1b')]))[_0x4ee1('0x8')](respondWithResult(_0x4faaf6,null))[_0x4ee1('0xd')](handleError(_0x4faaf6,null));};exports[_0x4ee1('0x1d')]=function(_0x57d45d,_0x5cc0b5){return respondWithRpcPromise(_0x4ee1('0x1e'),_0x57d45d[_0x4ee1('0x18')])['then'](respondWithResult(_0x5cc0b5,null))[_0x4ee1('0xd')](handleError(_0x5cc0b5,null));};exports[_0x4ee1('0x1f')]=function(_0x36654c,_0x215949){return respondWithRpcPromise(_0x4ee1('0x1e'),_0x36654c[_0x4ee1('0x18')])[_0x4ee1('0x8')](findById(_0x36654c['params']['id']))[_0x4ee1('0x8')](respondWithResult(_0x215949,null))['catch'](handleError(_0x215949,null));};exports[_0x4ee1('0x20')]=function(_0x4ec408,_0x3dc870){return respondWithRpcPromise(_0x4ee1('0x21'),_[_0x4ee1('0x1a')](_0x4ec408[_0x4ee1('0x22')],_0x4ec408[_0x4ee1('0x1b')]))['then'](respondWithResult(_0x3dc870,null))[_0x4ee1('0xd')](handleError(_0x3dc870,null));};exports['voiceQueuesPreview']=function(_0x121301,_0x3d5e6c){return respondWithRpcPromise(_0x4ee1('0x23'),_[_0x4ee1('0x1a')](_0x121301[_0x4ee1('0x18')],_0x121301['params']))[_0x4ee1('0x8')](respondWithResult(_0x3d5e6c,null))[_0x4ee1('0xd')](handleError(_0x3d5e6c,null));};exports[_0x4ee1('0x24')]=function(_0x2e37a3,_0x79f87c){return respondWithRpcPromise(_0x4ee1('0x25'),_0x2e37a3['query'])['then'](respondWithResult(_0x79f87c,null))[_0x4ee1('0xd')](handleError(_0x79f87c,null));};exports[_0x4ee1('0x26')]=function(_0x41ab60,_0x5a2f6f){return respondWithRpcPromise(_0x4ee1('0x27'),_[_0x4ee1('0x1a')](_0x41ab60[_0x4ee1('0x18')],_0x41ab60[_0x4ee1('0x1b')]))[_0x4ee1('0x8')](respondWithResult(_0x5a2f6f,null))[_0x4ee1('0xd')](handleError(_0x5a2f6f,null));};exports[_0x4ee1('0x28')]=function(_0x199e11,_0x36898c){return respondWithRpcPromise(_0x4ee1('0x29'),_[_0x4ee1('0x1a')](_0x199e11[_0x4ee1('0x18')],_0x199e11[_0x4ee1('0x1b')]))['then'](respondWithResult(_0x36898c,null))[_0x4ee1('0xd')](handleError(_0x36898c,null));};exports[_0x4ee1('0x2a')]=function(_0x882468,_0x50539f){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0x4ee1('0x1a')](_0x882468[_0x4ee1('0x18')],_0x882468[_0x4ee1('0x1b')]))[_0x4ee1('0x8')](respondWithResult(_0x50539f,null))['catch'](handleError(_0x50539f,null));};exports[_0x4ee1('0x2b')]=function(_0x2ed16f,_0x11721a){return respondWithRpcPromise(_0x4ee1('0x2c'),_0x2ed16f[_0x4ee1('0x18')])[_0x4ee1('0x8')](respondWithResult(_0x11721a,null))[_0x4ee1('0xd')](handleError(_0x11721a,null));};exports[_0x4ee1('0x2d')]=function(_0x59b5cc,_0x3b346e){return respondWithRpcPromise(_0x4ee1('0x2e'),_0x59b5cc[_0x4ee1('0x18')])[_0x4ee1('0x8')](respondWithResult(_0x3b346e,null))[_0x4ee1('0xd')](handleError(_0x3b346e,null));};exports[_0x4ee1('0x2f')]=function(_0x543b2e,_0x3e2ca7){var _0x37176a;return respondWithRpcPromise(_0x4ee1('0x30'),_0x543b2e[_0x4ee1('0x18')])[_0x4ee1('0x8')](function(_0x352dc5){_0x37176a=_0x352dc5;return respondWithRpcPromise(_0x4ee1('0x30'),_0x543b2e[_0x4ee1('0x18')],routingClient);})[_0x4ee1('0x8')](function(_0x29493d){return _[_0x4ee1('0x1a')]({},_0x29493d,_0x37176a);})[_0x4ee1('0x8')](respondWithResult(_0x3e2ca7,null))[_0x4ee1('0xd')](handleError(_0x3e2ca7,null));};exports['agentCapacity']=function(_0x3b3bed,_0x40a3e3){if(_0x3b3bed['body']&&_0x3b3bed[_0x4ee1('0x22')]['interaction']&&_0x3b3bed[_0x4ee1('0x31')]&&_0x3b3bed['user'][_0x4ee1('0x12')]){for(var _0xc7580c in _0x3b3bed['body'][_0x4ee1('0x32')]){if(_0x3b3bed[_0x4ee1('0x22')][_0x4ee1('0x32')][_0x4ee1('0x33')](_0xc7580c)){db['MemberReport'][_0x4ee1('0x34')]({'where':{'channel':_0xc7580c,'membername':_0x3b3bed[_0x4ee1('0x31')][_0x4ee1('0x12')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x3b3bed['body'][_0x4ee1('0x32')][_0xc7580c]&&_0x3b3bed[_0x4ee1('0x22')][_0x4ee1('0x32')][_0xc7580c][_0x4ee1('0x35')]?{'$notIn':_0x3b3bed[_0x4ee1('0x22')]['interaction'][_0xc7580c]}:{'$ne':null}}})['then'](function(_0xaa71d5){var _0x266add=moment()[_0x4ee1('0x36')](_0x4ee1('0x37'));for(var _0x5c5862=0x0,_0x3d6bf4=_0xaa71d5[_0x4ee1('0x35')];_0x5c5862<_0x3d6bf4;_0x5c5862+=0x1){_0xaa71d5[_0x5c5862]['updateAttributes']({'exitAt':_0x266add});}});for(var _0x21ebb8=0x0;_0x21ebb8<_0x3b3bed[_0x4ee1('0x22')][_0x4ee1('0x32')][_0xc7580c][_0x4ee1('0x35')];_0x21ebb8+=0x1){db[_0x4ee1('0x38')][_0x4ee1('0x39')]({'where':{'channel':_0xc7580c,'membername':_0x3b3bed[_0x4ee1('0x31')][_0x4ee1('0x12')],'type':_0x4ee1('0x3a'),'uniqueid':_0x3b3bed['body']['interaction'][_0xc7580c][_0x21ebb8],'exitAt':null},'defaults':{'channel':_0xc7580c,'membername':_0x3b3bed[_0x4ee1('0x31')][_0x4ee1('0x12')],'interface':_[_0x4ee1('0x14')](_0x3b3bed[_0x4ee1('0x31')]['interface'])?util[_0x4ee1('0x36')](_0x4ee1('0x3b'),_0x3b3bed[_0x4ee1('0x31')][_0x4ee1('0x12')]):_0x3b3bed[_0x4ee1('0x31')]['interface'],'type':_0x4ee1('0x3a'),'enterAt':moment()[_0x4ee1('0x36')](_0x4ee1('0x37')),'role':'agent','internal':_0x3b3bed[_0x4ee1('0x31')]['internal'],'uniqueid':_0x3b3bed[_0x4ee1('0x22')]['interaction'][_0xc7580c][_0x21ebb8]}});}}}}return respondWithRpcPromise(_0x4ee1('0x3c'),{'id':_0x3b3bed['params']['id'],'capacity':_0x3b3bed[_0x4ee1('0x22')]['capacity']},routingClient)[_0x4ee1('0x8')](respondWithResult(_0x40a3e3,null))[_0x4ee1('0xd')](handleError(_0x40a3e3,null));};exports[_0x4ee1('0x3d')]=function(_0x5f4f78,_0x3368ed){return respondWithRpcPromise(_0x4ee1('0x3e'),_0x5f4f78[_0x4ee1('0x18')])[_0x4ee1('0x8')](respondWithResult(_0x3368ed,null))[_0x4ee1('0xd')](handleError(_0x3368ed,null));};exports[_0x4ee1('0x3f')]=function(_0x3f1c32,_0x517729){return respondWithRpcPromise('Trunks',_0x3f1c32[_0x4ee1('0x18')])[_0x4ee1('0x8')](respondWithResult(_0x517729,null))[_0x4ee1('0xd')](handleError(_0x517729,null));};exports[_0x4ee1('0x40')]=function(_0x44e65f,_0x31e82d){return respondWithRpcPromise(_0x4ee1('0x41'),_0x44e65f[_0x4ee1('0x18')])[_0x4ee1('0x8')](respondWithResult(_0x31e82d,null))[_0x4ee1('0xd')](handleError(_0x31e82d,null));};exports[_0x4ee1('0x42')]=function(_0x2453ac,_0x3c2e42){return respondWithRpcPromise('ChatQueues',_0x2453ac[_0x4ee1('0x18')],routingClient)['then'](respondWithResult(_0x3c2e42,null))[_0x4ee1('0xd')](handleError(_0x3c2e42,null));};exports[_0x4ee1('0x43')]=function(_0x59bbca,_0x1e0aac){return respondWithRpcPromise(_0x4ee1('0x44'),_0x59bbca['query'],routingClient)['then'](findById(_0x59bbca[_0x4ee1('0x1b')]['id']))['then'](respondWithResult(_0x1e0aac,null))[_0x4ee1('0xd')](handleError(_0x1e0aac,null));};exports[_0x4ee1('0x45')]=function(_0x59ba70,_0x43489c){return respondWithRpcPromise(_0x4ee1('0x46'),_0x59ba70[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x43489c,null))[_0x4ee1('0xd')](handleError(_0x43489c,null));};exports[_0x4ee1('0x47')]=function(_0x11f619,_0x5f5694){return respondWithRpcPromise('MailQueues',_0x11f619[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](findById(_0x11f619['params']['id']))[_0x4ee1('0x8')](respondWithResult(_0x5f5694,null))[_0x4ee1('0xd')](handleError(_0x5f5694,null));};exports[_0x4ee1('0x48')]=function(_0x51e341,_0x1ad933){return respondWithRpcPromise('MailAccounts',_0x51e341[_0x4ee1('0x18')],mailClient)['then'](respondWithResult(_0x1ad933,null))['catch'](handleError(_0x1ad933,null));};exports[_0x4ee1('0x49')]=function(_0x16fcd0,_0x290451){return respondWithRpcPromise(_0x4ee1('0x4a'),_0x16fcd0[_0x4ee1('0x18')],routingClient)['then'](respondWithResult(_0x290451,null))[_0x4ee1('0xd')](handleError(_0x290451,null));};exports[_0x4ee1('0x4b')]=function(_0x10f4e,_0x58eb1d){return respondWithRpcPromise(_0x4ee1('0x4a'),_0x10f4e[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](findById(_0x10f4e[_0x4ee1('0x1b')]['id']))[_0x4ee1('0x8')](respondWithResult(_0x58eb1d,null))[_0x4ee1('0xd')](handleError(_0x58eb1d,null));};exports[_0x4ee1('0x4c')]=function(_0x20ca0b,_0x19fa31){return respondWithRpcPromise(_0x4ee1('0x4d'),_0x20ca0b[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x19fa31,null))['catch'](handleError(_0x19fa31,null));};exports[_0x4ee1('0x4e')]=function(_0x5bf5e9,_0x25cfc3){return respondWithRpcPromise('SmsQueues',_0x5bf5e9[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](findById(_0x5bf5e9[_0x4ee1('0x1b')]['id']))[_0x4ee1('0x8')](respondWithResult(_0x25cfc3,null))[_0x4ee1('0xd')](handleError(_0x25cfc3,null));};exports[_0x4ee1('0x4f')]=function(_0x342aa1,_0x447060){return respondWithRpcPromise(_0x4ee1('0x50'),_0x342aa1[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x447060,null))[_0x4ee1('0xd')](handleError(_0x447060,null));};exports['showWhatsappQueues']=function(_0x759888,_0x24308c){return respondWithRpcPromise(_0x4ee1('0x50'),_0x759888['query'],routingClient)['then'](findById(_0x759888[_0x4ee1('0x1b')]['id']))[_0x4ee1('0x8')](respondWithResult(_0x24308c,null))['catch'](handleError(_0x24308c,null));};exports[_0x4ee1('0x51')]=function(_0x431dfa,_0x3f8f94){return respondWithRpcPromise(_0x4ee1('0x52'),_0x431dfa[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x3f8f94,null))[_0x4ee1('0xd')](handleError(_0x3f8f94,null));};exports[_0x4ee1('0x53')]=function(_0x28e11c,_0x3824bf){return respondWithRpcPromise('FaxQueues',_0x28e11c[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](findById(_0x28e11c['params']['id']))['then'](respondWithResult(_0x3824bf,null))[_0x4ee1('0xd')](handleError(_0x3824bf,null));};exports[_0x4ee1('0x54')]=function(_0x19e095,_0x38e06){return respondWithRpcPromise(_0x4ee1('0x55'),_0x19e095[_0x4ee1('0x18')])[_0x4ee1('0x8')](respondWithResult(_0x38e06,null))['catch'](handleError(_0x38e06,null));};exports[_0x4ee1('0x56')]=function(_0x39583b,_0x44af66){return respondWithRpcPromise(_0x4ee1('0x57'),_0x39583b[_0x4ee1('0x18')],routingClient)['then'](respondWithResult(_0x44af66,null))[_0x4ee1('0xd')](handleError(_0x44af66,null));};exports['mailQueuesWaitingInteractions']=function(_0x1d360f,_0x29371c){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x1d360f['query'],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x29371c,null))[_0x4ee1('0xd')](handleError(_0x29371c,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x2beb82,_0x5aacf1){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x2beb82[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x5aacf1,null))[_0x4ee1('0xd')](handleError(_0x5aacf1,null));};exports[_0x4ee1('0x58')]=function(_0x37fa42,_0x38698a){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x37fa42[_0x4ee1('0x18')],routingClient)['then'](function(_0x57f66c){if(_0x37fa42[_0x4ee1('0x18')][_0x4ee1('0x59')]!==undefined){var _0x411c99=_(_0x57f66c[_0x4ee1('0x15')])[_0x4ee1('0x5a')]([_0x37fa42[_0x4ee1('0x18')][_0x4ee1('0x59')],_0x37fa42[_0x4ee1('0x1b')]['id']])['map'](_0x4ee1('0x5b'))[_0x4ee1('0x5c')]()['value']();return _0x57f66c[_0x4ee1('0x15')][_0x4ee1('0x5a')](function(_0xcd0dd9){return _0x411c99[_0x4ee1('0x5d')](_0xcd0dd9[_0x4ee1('0x5b')])>-0x1;});}else{return _0x57f66c[_0x4ee1('0x15')][_0x4ee1('0x5a')](function(_0x4dee3a){return _0x4dee3a[_0x4ee1('0x5b')]===parseInt(_0x37fa42['params']['id']);});}})[_0x4ee1('0x8')](respondWithResult(_0x38698a,null))[_0x4ee1('0xd')](handleError(_0x38698a,null));};exports[_0x4ee1('0x5e')]=function(_0x35a719,_0x48c51c){return respondWithRpcPromise(_0x4ee1('0x5f'),_0x35a719[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x48c51c,null))['catch'](handleError(_0x48c51c,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x2ef7c9,_0x4b4ad5){return respondWithRpcPromise(_0x4ee1('0x60'),_0x2ef7c9[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x4b4ad5,null))['catch'](handleError(_0x4b4ad5,null));};exports['faxQueuesWaitingInteractions']=function(_0x27fd3b,_0x1e2360){return respondWithRpcPromise(_0x4ee1('0x61'),_0x27fd3b[_0x4ee1('0x18')],routingClient)[_0x4ee1('0x8')](respondWithResult(_0x1e2360,null))[_0x4ee1('0xd')](handleError(_0x1e2360,null));};exports[_0x4ee1('0x62')]=function(_0x5727ef){return function(_0x4a3201,_0x50645b){var _0x3fba19,_0x3a75a7;var _0x33f5af=_[_0x4ee1('0x63')](_0x5727ef);var _0x4db801=_0x5727ef===_0x4ee1('0x64')?'Website':_0x4ee1('0x65');return db[_0x33f5af+_0x4ee1('0x66')][_0x4ee1('0x67')]({'raw':!![],'where':{'id':_0x4a3201[_0x4ee1('0x1b')]['id']}})[_0x4ee1('0x8')](function(_0x190f59){if(_['isNil'](_0x190f59)){throw new Error(_0x33f5af+_0x4ee1('0x68'));}_0x3fba19=_0x190f59;return db[_0x33f5af+_0x4ee1('0x69')][_0x4ee1('0x67')]({'where':{'id':_0x4a3201[_0x4ee1('0x22')][_0x4ee1('0x6a')]},'include':[{'model':db[_0x33f5af+_0x4ee1('0x6b')],'as':_0x4ee1('0x6b')},{'model':db[_0x33f5af+_0x4db801],'as':_0x4ee1('0x65')}]});})[_0x4ee1('0x8')](function(_0x207758){if(_[_0x4ee1('0x14')](_0x207758)){throw new Error(_0x33f5af+'\x20Message\x20not\x20found');}_0x3a75a7=_0x207758;return _0x207758[_0x4ee1('0x6c')]({'read':0x0,'readAt':null,'UserId':null});})[_0x4ee1('0x8')](function(){var _0x646878={'uniqueid':_0x5727ef+'.'+_0x3a75a7['id']+'.'+_0x3a75a7[_0x4ee1('0x6b')]['id'],'FromUserId':_0x4a3201[_0x4ee1('0x31')]['id'],'type':_0x4ee1('0x6d')};_0x646878[_0x33f5af+_0x4ee1('0x6e')]=_0x3a75a7['id'];_0x646878[_0x33f5af+_0x4ee1('0x6f')]=_0x3a75a7[_0x4ee1('0x6b')]['id'];_0x646878[_0x4ee1('0x70')+_0x33f5af+_0x4db801+'Id']=_0x3a75a7[_0x4ee1('0x65')]['id'];_0x646878['To'+_0x33f5af+_0x4ee1('0x71')]=_0x3fba19['id'];return db[_0x33f5af+_0x4ee1('0x72')][_0x4ee1('0x73')](_0x646878);})[_0x4ee1('0x8')](function(){return respondWithRpcPromise(_0x4ee1('0x74'),{'channel':_0x5727ef,'interaction':_0x3a75a7['Interaction'],'message':_0x3a75a7,'account':_0x3a75a7[_0x4ee1('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x4ee1('0x6d'),'appdata':_0x3fba19['name']+','+(_0x3a75a7[_0x4ee1('0x65')][_0x4ee1('0x75')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0x50645b,null))[_0x4ee1('0xd')](handleError(_0x50645b,null));};};exports['agentNotify']=function(_0x13a755,_0x1a00a4){var _0x47b854,_0x1700c6;if(_[_0x4ee1('0x14')](_0x13a755[_0x4ee1('0x22')][_0x4ee1('0x76')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x2bc05a=_0x13a755[_0x4ee1('0x22')][_0x4ee1('0x76')];var _0xc07f75=_[_0x4ee1('0x63')](_0x2bc05a);var _0x4315e9=_0x2bc05a===_0x4ee1('0x64')?_0x4ee1('0x77'):'Account';return db[_0x4ee1('0x78')][_0x4ee1('0x67')]({'raw':!![],'where':{'id':_0x13a755['params']['id'],'role':_0x4ee1('0x79')}})['then'](function(_0x5cf7fb){if(_[_0x4ee1('0x14')](_0x5cf7fb)){throw new Error(_0x4ee1('0x7a'));}_0x47b854=_0x5cf7fb;return db[_0xc07f75+_0x4ee1('0x69')][_0x4ee1('0x67')]({'where':{'id':_0x13a755[_0x4ee1('0x22')][_0x4ee1('0x6a')]},'include':[{'model':db[_0xc07f75+'Interaction'],'as':_0x4ee1('0x6b')},{'model':db[_0xc07f75+_0x4315e9],'as':_0x4ee1('0x65')}]});})[_0x4ee1('0x8')](function(_0x17ae2d){if(_[_0x4ee1('0x14')](_0x17ae2d)){throw new Error(_0xc07f75+_0x4ee1('0x7b'));}_0x1700c6=_0x17ae2d;return _0x17ae2d[_0x4ee1('0x6c')]({'read':0x0,'readAt':null,'UserId':null});})[_0x4ee1('0x8')](function(){var _0x5076c6={'uniqueid':_0x2bc05a+'.'+_0x1700c6['id']+'.'+_0x1700c6[_0x4ee1('0x6b')]['id'],'FromUserId':_0x13a755[_0x4ee1('0x31')]['id'],'type':_0x4ee1('0x6d'),'ToUserId':_0x47b854['id']};_0x5076c6[_0xc07f75+_0x4ee1('0x6e')]=_0x1700c6['id'];_0x5076c6[_0xc07f75+_0x4ee1('0x6f')]=_0x1700c6['Interaction']['id'];_0x5076c6[_0x4ee1('0x70')+_0xc07f75+_0x4315e9+'Id']=_0x1700c6['Account']['id'];return db[_0xc07f75+_0x4ee1('0x72')][_0x4ee1('0x73')](_0x5076c6);})[_0x4ee1('0x8')](function(){return respondWithRpcPromise(_0x4ee1('0x74'),{'channel':_0x2bc05a,'interaction':_0x1700c6['Interaction'],'message':_0x1700c6,'account':_0x1700c6[_0x4ee1('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x4ee1('0x79'),'appdata':_0x47b854['name']+','+(_0x1700c6[_0x4ee1('0x65')]['agentTransferTimeout']||0x12c),'interval':_0x4ee1('0x7c')}]},routingClient);})[_0x4ee1('0x8')](respondWithResult(_0x1a00a4,null))['catch'](handleError(_0x1a00a4,null));};
\ No newline at end of file
index 066bd54..1ec404b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4d5=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/run','run','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x91a9ba,_0x130792){var _0x2afa35=function(_0x42abcc){while(--_0x42abcc){_0x91a9ba['push'](_0x91a9ba['shift']());}};_0x2afa35(++_0x130792);}(_0xc4d5,0x177));var _0x5c4d=function(_0x648163,_0x241576){_0x648163=_0x648163-0x0;var _0x199d4d=_0xc4d5[_0x648163];return _0x199d4d;};'use strict';var multer=require(_0x5c4d('0x0'));var util=require(_0x5c4d('0x1'));var path=require('path');var timeout=require(_0x5c4d('0x2'));var express=require(_0x5c4d('0x3'));var router=express[_0x5c4d('0x4')]();var fs_extra=require(_0x5c4d('0x5'));var auth=require(_0x5c4d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5c4d('0x7'));var controller=require('./schedule.controller');router[_0x5c4d('0x8')]('/',auth[_0x5c4d('0x9')](),controller['index']);router[_0x5c4d('0x8')](_0x5c4d('0xa'),auth['isAuthenticated'](),controller[_0x5c4d('0xb')]);router[_0x5c4d('0x8')](_0x5c4d('0xc'),auth[_0x5c4d('0x9')](),controller[_0x5c4d('0xd')]);router[_0x5c4d('0xe')]('/',auth['isAuthenticated'](),controller[_0x5c4d('0xf')]);router[_0x5c4d('0x10')]('/:id',auth[_0x5c4d('0x9')](),controller[_0x5c4d('0x11')]);router[_0x5c4d('0x12')](_0x5c4d('0xa'),auth[_0x5c4d('0x9')](),controller[_0x5c4d('0x13')]);module[_0x5c4d('0x14')]=router;
\ No newline at end of file
+var _0x2461=['/:id','run','post','put','update','delete','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get'];(function(_0x57a65e,_0x33a406){var _0x3cfaf8=function(_0x5095cd){while(--_0x5095cd){_0x57a65e['push'](_0x57a65e['shift']());}};_0x3cfaf8(++_0x33a406);}(_0x2461,0x1f3));var _0x1246=function(_0x1d21fe,_0x40e827){_0x1d21fe=_0x1d21fe-0x0;var _0xf0eda7=_0x2461[_0x1d21fe];return _0xf0eda7;};'use strict';var multer=require('multer');var util=require(_0x1246('0x0'));var path=require(_0x1246('0x1'));var timeout=require(_0x1246('0x2'));var express=require(_0x1246('0x3'));var router=express[_0x1246('0x4')]();var fs_extra=require(_0x1246('0x5'));var auth=require(_0x1246('0x6'));var interaction=require(_0x1246('0x7'));var config=require('../../config/environment');var controller=require('./schedule.controller');router['get']('/',auth[_0x1246('0x8')](),controller[_0x1246('0x9')]);router[_0x1246('0xa')](_0x1246('0xb'),auth[_0x1246('0x8')](),controller['show']);router[_0x1246('0xa')]('/:id/run',auth[_0x1246('0x8')](),controller[_0x1246('0xc')]);router[_0x1246('0xd')]('/',auth[_0x1246('0x8')](),controller['create']);router[_0x1246('0xe')](_0x1246('0xb'),auth['isAuthenticated'](),controller[_0x1246('0xf')]);router[_0x1246('0x10')](_0x1246('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index df8af2e..a3cfabb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7257=['INTEGER','ENUM','years','quarters','months','weeks','days','minutes','csv','pdf','xlsx','custom','default','TEXT','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE'];(function(_0x49cbdb,_0x4b85d4){var _0x5b30e6=function(_0x59bc2a){while(--_0x59bc2a){_0x49cbdb['push'](_0x49cbdb['shift']());}};_0x5b30e6(++_0x4b85d4);}(_0x7257,0x1ac));var _0x7725=function(_0x15482e,_0x25b23c){_0x15482e=_0x15482e-0x0;var _0x4a0651=_0x7257[_0x15482e];return _0x4a0651;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7725('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x7725('0x0')]},'active':{'type':Sequelize[_0x7725('0x1')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x7725('0x0')],'allowNull':![],'defaultValue':_0x7725('0x2')},'startAt':{'type':Sequelize[_0x7725('0x3')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x7725('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x7725('0x5')](_0x7725('0x6'),_0x7725('0x7'),_0x7725('0x8'),_0x7725('0x9'),_0x7725('0xa'),'hours',_0x7725('0xb')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize['ENUM'](_0x7725('0xc'),_0x7725('0xd'),_0x7725('0xe')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize['ENUM'](_0x7725('0xf'),_0x7725('0x10')),'allowNull':![],'defaultValue':_0x7725('0xf')},'sendMail':{'type':Sequelize[_0x7725('0x1')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x7725('0x11')]},'bcc':{'type':Sequelize[_0x7725('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x7725('0x1')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xa52f=['days','minutes','ENUM','csv','xlsx','default','custom','TEXT','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','quarters','months','weeks'];(function(_0x50b541,_0x1a00ed){var _0x52ec9c=function(_0x1fe110){while(--_0x1fe110){_0x50b541['push'](_0x50b541['shift']());}};_0x52ec9c(++_0x1a00ed);}(_0xa52f,0x1dc));var _0xfa52=function(_0x3dd69b,_0xed6a1c){_0x3dd69b=_0x3dd69b-0x0;var _0x49991b=_0xa52f[_0x3dd69b];return _0x49991b;};'use strict';var Sequelize=require('sequelize');module[_0xfa52('0x0')]={'name':{'type':Sequelize[_0xfa52('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xfa52('0x1')]},'active':{'type':Sequelize[_0xfa52('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xfa52('0x3')},'startAt':{'type':Sequelize[_0xfa52('0x4')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xfa52('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xfa52('0x6'),_0xfa52('0x7'),_0xfa52('0x8'),_0xfa52('0x9'),_0xfa52('0xa'),'hours',_0xfa52('0xb')),'allowNull':![],'defaultValue':_0xfa52('0xa')},'output':{'type':Sequelize[_0xfa52('0xc')](_0xfa52('0xd'),'pdf',_0xfa52('0xe')),'allowNull':![],'defaultValue':_0xfa52('0xd')},'type':{'type':Sequelize['ENUM']('custom',_0xfa52('0xf')),'allowNull':![],'defaultValue':_0xfa52('0x10')},'sendMail':{'type':Sequelize[_0xfa52('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xfa52('0x11')]},'bcc':{'type':Sequelize[_0xfa52('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 083b23c..760501b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb136=['attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','find','run','../../config/schedule','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','offset','count','apply','save','then','destroy','get','UserProfileResource','error','name','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x389196,_0x469071){var _0x39e0ba=function(_0xd109dd){while(--_0xd109dd){_0x389196['push'](_0x389196['shift']());}};_0x39e0ba(++_0x469071);}(_0xb136,0x6c));var _0x6b13=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb136[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x6b13('0x0'));var rimraf=require(_0x6b13('0x1'));var zipdir=require(_0x6b13('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b13('0x3'));var moment=require(_0x6b13('0x4'));var BPromise=require(_0x6b13('0x5'));var Mustache=require(_0x6b13('0x6'));var util=require('util');var path=require(_0x6b13('0x7'));var sox=require(_0x6b13('0x8'));var csv=require(_0x6b13('0x9'));var ejs=require(_0x6b13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b13('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6b13('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6b13('0x9'));var querystring=require(_0x6b13('0xd'));var Papa=require(_0x6b13('0xe'));var Redis=require(_0x6b13('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6b13('0x10'));var as=require(_0x6b13('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b13('0x12'))(_0x6b13('0x13'));var utils=require(_0x6b13('0x14'));var config=require(_0x6b13('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b13('0x16'))['db'];function respondWithStatusCode(_0x3ebd6c,_0x1b41fa){_0x1b41fa=_0x1b41fa||0xcc;return function(_0x34d971){if(_0x34d971){return _0x3ebd6c[_0x6b13('0x17')](_0x1b41fa);}return _0x3ebd6c[_0x6b13('0x18')](_0x1b41fa)[_0x6b13('0x19')]();};}function respondWithResult(_0x27e2a4,_0x42cf7d){_0x42cf7d=_0x42cf7d||0xc8;return function(_0x429ae0){if(_0x429ae0){return _0x27e2a4[_0x6b13('0x18')](_0x42cf7d)[_0x6b13('0x1a')](_0x429ae0);}};}function respondWithFilteredResult(_0x3c862b,_0x38b2c2){return function(_0x27ad17){if(_0x27ad17){var _0x392071=typeof _0x38b2c2['offset']==='undefined'&&typeof _0x38b2c2[_0x6b13('0x1b')]==='undefined';var _0x4c95ba=_0x27ad17['count'];var _0x10f406=_0x392071?0x0:_0x38b2c2[_0x6b13('0x1c')];var _0x443584=_0x392071?_0x27ad17[_0x6b13('0x1d')]:_0x38b2c2[_0x6b13('0x1c')]+_0x38b2c2['limit'];var _0x22b3fe;if(_0x443584>=_0x4c95ba){_0x443584=_0x4c95ba;_0x22b3fe=0xc8;}else{_0x22b3fe=0xce;}_0x3c862b[_0x6b13('0x18')](_0x22b3fe);return _0x3c862b['set']('Content-Range',_0x10f406+'-'+_0x443584+'/'+_0x4c95ba)[_0x6b13('0x1a')](_0x27ad17);}return null;};}function patchUpdates(_0x21505f){return function(_0x328841){try{jsonpatch[_0x6b13('0x1e')](_0x328841,_0x21505f,!![]);}catch(_0x1800d8){return BPromise['reject'](_0x1800d8);}return _0x328841[_0x6b13('0x1f')]();};}function saveUpdates(_0x561fc3,_0x5f54bd){return function(_0x3952cb){if(_0x3952cb){return _0x3952cb['update'](_0x561fc3)[_0x6b13('0x20')](function(_0x309ab9){return _0x309ab9;});}return null;};}function removeEntity(_0x1c4494,_0x20e1c6){return function(_0x6308ed){if(_0x6308ed){return _0x6308ed[_0x6b13('0x21')]()[_0x6b13('0x20')](function(){var _0xda197b=_0x6308ed[_0x6b13('0x22')]({'plain':!![]});var _0x402514='Scheduler';return db[_0x6b13('0x23')][_0x6b13('0x21')]({'where':{'type':_0x402514,'resourceId':_0xda197b['id']}})[_0x6b13('0x20')](function(){return _0x6308ed;});})[_0x6b13('0x20')](function(){_0x1c4494[_0x6b13('0x18')](0xcc)[_0x6b13('0x19')]();});}};}function handleEntityNotFound(_0x37f59e,_0x519100){return function(_0x5b1631){if(!_0x5b1631){_0x37f59e[_0x6b13('0x17')](0x194);}return _0x5b1631;};}function handleError(_0x38fed4,_0xed8bcb){_0xed8bcb=_0xed8bcb||0x1f4;return function(_0x208f1f){logger[_0x6b13('0x24')](_0x208f1f['stack']);if(_0x208f1f[_0x6b13('0x25')]){delete _0x208f1f[_0x6b13('0x25')];}_0x38fed4['status'](_0xed8bcb)['send'](_0x208f1f);};}exports[_0x6b13('0x26')]=function(_0x515984,_0x317301){var _0x274c6c={},_0x4825db={},_0x56797e={'count':0x0,'rows':[]};var _0x41aea3=_[_0x6b13('0x27')](db[_0x6b13('0x28')][_0x6b13('0x29')],function(_0x1c3d12){return{'name':_0x1c3d12[_0x6b13('0x2a')],'type':_0x1c3d12[_0x6b13('0x2b')][_0x6b13('0x2c')]};});_0x4825db[_0x6b13('0x2d')]=_[_0x6b13('0x27')](_0x41aea3,_0x6b13('0x25'));_0x4825db[_0x6b13('0x2e')]=_[_0x6b13('0x2f')](_0x515984['query']);_0x4825db[_0x6b13('0x30')]=_[_0x6b13('0x31')](_0x4825db[_0x6b13('0x2d')],_0x4825db[_0x6b13('0x2e')]);_0x274c6c[_0x6b13('0x32')]=_[_0x6b13('0x31')](_0x4825db[_0x6b13('0x2d')],qs[_0x6b13('0x33')](_0x515984['query']['fields']));_0x274c6c['attributes']=_0x274c6c[_0x6b13('0x32')][_0x6b13('0x34')]?_0x274c6c[_0x6b13('0x32')]:_0x4825db[_0x6b13('0x2d')];if(!_0x515984[_0x6b13('0x2e')][_0x6b13('0x35')]('nolimit')){_0x274c6c[_0x6b13('0x1b')]=qs['limit'](_0x515984[_0x6b13('0x2e')][_0x6b13('0x1b')]);_0x274c6c['offset']=qs[_0x6b13('0x1c')](_0x515984[_0x6b13('0x2e')][_0x6b13('0x1c')]);}_0x274c6c[_0x6b13('0x36')]=qs[_0x6b13('0x37')](_0x515984[_0x6b13('0x2e')][_0x6b13('0x37')]);_0x274c6c[_0x6b13('0x38')]=qs[_0x6b13('0x30')](_['pick'](_0x515984[_0x6b13('0x2e')],_0x4825db[_0x6b13('0x30')]),_0x41aea3);if(_0x515984[_0x6b13('0x2e')][_0x6b13('0x39')]){_0x274c6c['where']=_['merge'](_0x274c6c[_0x6b13('0x38')],{'$or':_[_0x6b13('0x27')](_0x41aea3,function(_0x9e24a6){if(_0x9e24a6[_0x6b13('0x2b')]!=='VIRTUAL'){var _0x2a53b2={};_0x2a53b2[_0x9e24a6[_0x6b13('0x25')]]={'$like':'%'+_0x515984['query'][_0x6b13('0x39')]+'%'};return _0x2a53b2;}})});}_0x274c6c=_[_0x6b13('0x3a')]({},_0x274c6c,_0x515984['options']);var _0x146b56={'where':_0x274c6c[_0x6b13('0x38')]};return db[_0x6b13('0x28')][_0x6b13('0x1d')](_0x146b56)[_0x6b13('0x20')](function(_0x504b05){_0x56797e[_0x6b13('0x1d')]=_0x504b05;if(_0x515984['query'][_0x6b13('0x3b')]){_0x274c6c[_0x6b13('0x3c')]=[{'all':!![]}];}return db[_0x6b13('0x28')][_0x6b13('0x3d')](_0x274c6c);})['then'](function(_0x8d23c9){_0x56797e[_0x6b13('0x3e')]=_0x8d23c9;return _0x56797e;})[_0x6b13('0x20')](respondWithFilteredResult(_0x317301,_0x274c6c))[_0x6b13('0x3f')](handleError(_0x317301,null));};exports[_0x6b13('0x40')]=function(_0x2ba6c0,_0x50dd0b){var _0x57cf77={'raw':![],'where':{'id':_0x2ba6c0[_0x6b13('0x41')]['id']}},_0x78deff={};_0x78deff[_0x6b13('0x2d')]=_[_0x6b13('0x2f')](db[_0x6b13('0x28')][_0x6b13('0x29')]);_0x78deff['query']=_[_0x6b13('0x2f')](_0x2ba6c0['query']);_0x78deff[_0x6b13('0x30')]=_[_0x6b13('0x31')](_0x78deff[_0x6b13('0x2d')],_0x78deff[_0x6b13('0x2e')]);_0x57cf77[_0x6b13('0x32')]=_[_0x6b13('0x31')](_0x78deff['model'],qs['fields'](_0x2ba6c0['query'][_0x6b13('0x33')]));_0x57cf77[_0x6b13('0x32')]=_0x57cf77[_0x6b13('0x32')][_0x6b13('0x34')]?_0x57cf77['attributes']:_0x78deff['model'];if(_0x2ba6c0[_0x6b13('0x2e')][_0x6b13('0x3b')]){_0x57cf77[_0x6b13('0x3c')]=[{'all':!![]}];}_0x57cf77=_[_0x6b13('0x3a')]({},_0x57cf77,_0x2ba6c0[_0x6b13('0x42')]);return db[_0x6b13('0x28')]['find'](_0x57cf77)[_0x6b13('0x20')](handleEntityNotFound(_0x50dd0b,null))[_0x6b13('0x20')](respondWithResult(_0x50dd0b,null))['catch'](handleError(_0x50dd0b,null));};exports[_0x6b13('0x43')]=function(_0x1341ea,_0x7c84c8){return db['Schedule']['create'](_0x1341ea['body'],{})['then'](function(_0x20bf48){var _0x411cb8=_0x1341ea['user']['get']({'plain':!![]});if(!_0x411cb8)throw new Error(_0x6b13('0x44'));if(_0x411cb8[_0x6b13('0x45')]==='user'){var _0x29abea=_0x20bf48[_0x6b13('0x22')]({'plain':!![]});var _0x44588b=_0x6b13('0x46');return db[_0x6b13('0x47')]['find']({'where':{'name':_0x44588b,'userProfileId':_0x411cb8[_0x6b13('0x48')]},'raw':!![]})[_0x6b13('0x20')](function(_0x344108){if(_0x344108&&_0x344108['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x29abea[_0x6b13('0x25')],'resourceId':_0x29abea['id'],'type':_0x344108[_0x6b13('0x25')],'sectionId':_0x344108['id']},{})[_0x6b13('0x20')](function(){return _0x20bf48;});}else{return _0x20bf48;}})[_0x6b13('0x3f')](function(_0x2dbf81){logger[_0x6b13('0x24')](_0x6b13('0x49'),_0x2dbf81);throw _0x2dbf81;});}return _0x20bf48;})['then'](respondWithResult(_0x7c84c8,0xc9))[_0x6b13('0x3f')](handleError(_0x7c84c8,null));};exports[_0x6b13('0x4a')]=function(_0xc10c3f,_0x1e5363){if(_0xc10c3f[_0x6b13('0x4b')]['id']){delete _0xc10c3f[_0x6b13('0x4b')]['id'];}return db[_0x6b13('0x28')][_0x6b13('0x4c')]({'where':{'id':_0xc10c3f[_0x6b13('0x41')]['id']}})[_0x6b13('0x20')](handleEntityNotFound(_0x1e5363,null))[_0x6b13('0x20')](saveUpdates(_0xc10c3f[_0x6b13('0x4b')],null))['then'](respondWithResult(_0x1e5363,null))['catch'](handleError(_0x1e5363,null));};exports[_0x6b13('0x21')]=function(_0x15b079,_0x283612){return db['Schedule'][_0x6b13('0x4c')]({'where':{'id':_0x15b079[_0x6b13('0x41')]['id']}})[_0x6b13('0x20')](handleEntityNotFound(_0x283612,null))[_0x6b13('0x20')](removeEntity(_0x283612,null))['catch'](handleError(_0x283612,null));};exports[_0x6b13('0x4d')]=function(_0x8bbf10,_0x310a68,_0x245900){var _0x1351a1=require(_0x6b13('0x4e'));return db['Schedule'][_0x6b13('0x4c')]({'where':{'id':_0x8bbf10[_0x6b13('0x41')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x310a68,null))['then'](function(){_0x1351a1['run'](_0x8bbf10[_0x6b13('0x41')]['id']);})['then'](respondWithStatusCode(_0x310a68,null))[_0x6b13('0x3f')](handleError(_0x310a68,null));};
\ No newline at end of file
+var _0xb8ce=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','reject','update','then','destroy','get','Scheduler','UserProfileResource','error','stack','name','send','map','Schedule','type','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','where','merge','VIRTUAL','filter','options','count','findAll','rows','catch','rawAttributes','includeAll','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x3a34b5,_0x59fca5){var _0x3f064e=function(_0x1b0b71){while(--_0x1b0b71){_0x3a34b5['push'](_0x3a34b5['shift']());}};_0x3f064e(++_0x59fca5);}(_0xb8ce,0xe8));var _0xeb8c=function(_0x37dfe9,_0x105b58){_0x37dfe9=_0x37dfe9-0x0;var _0x21cc87=_0xb8ce[_0x37dfe9];return _0x21cc87;};'use strict';var emlformat=require(_0xeb8c('0x0'));var rimraf=require(_0xeb8c('0x1'));var zipdir=require(_0xeb8c('0x2'));var jsonpatch=require(_0xeb8c('0x3'));var rp=require(_0xeb8c('0x4'));var moment=require(_0xeb8c('0x5'));var BPromise=require(_0xeb8c('0x6'));var Mustache=require(_0xeb8c('0x7'));var util=require(_0xeb8c('0x8'));var path=require(_0xeb8c('0x9'));var sox=require(_0xeb8c('0xa'));var csv=require(_0xeb8c('0xb'));var ejs=require(_0xeb8c('0xc'));var fs=require('fs');var fs_extra=require(_0xeb8c('0xd'));var _=require(_0xeb8c('0xe'));var squel=require(_0xeb8c('0xf'));var crypto=require(_0xeb8c('0x10'));var jsforce=require(_0xeb8c('0x11'));var deskjs=require(_0xeb8c('0x12'));var toCsv=require(_0xeb8c('0xb'));var querystring=require(_0xeb8c('0x13'));var Papa=require(_0xeb8c('0x14'));var Redis=require(_0xeb8c('0x15'));var authService=require(_0xeb8c('0x16'));var qs=require(_0xeb8c('0x17'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeb8c('0x18'));var logger=require(_0xeb8c('0x19'))('api');var utils=require(_0xeb8c('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xeb8c('0x1b'));var db=require(_0xeb8c('0x1c'))['db'];function respondWithStatusCode(_0x98980c,_0x59a6d8){_0x59a6d8=_0x59a6d8||0xcc;return function(_0x36d327){if(_0x36d327){return _0x98980c[_0xeb8c('0x1d')](_0x59a6d8);}return _0x98980c['status'](_0x59a6d8)[_0xeb8c('0x1e')]();};}function respondWithResult(_0x363cae,_0x3689b5){_0x3689b5=_0x3689b5||0xc8;return function(_0x54c115){if(_0x54c115){return _0x363cae[_0xeb8c('0x1f')](_0x3689b5)[_0xeb8c('0x20')](_0x54c115);}};}function respondWithFilteredResult(_0x3126bb,_0x4cbd46){return function(_0x58b047){if(_0x58b047){var _0x39f533=typeof _0x4cbd46[_0xeb8c('0x21')]===_0xeb8c('0x22')&&typeof _0x4cbd46[_0xeb8c('0x23')]===_0xeb8c('0x22');var _0x4c2679=_0x58b047['count'];var _0x47aec3=_0x39f533?0x0:_0x4cbd46[_0xeb8c('0x21')];var _0x4296d9=_0x39f533?_0x58b047['count']:_0x4cbd46[_0xeb8c('0x21')]+_0x4cbd46[_0xeb8c('0x23')];var _0x8e434c;if(_0x4296d9>=_0x4c2679){_0x4296d9=_0x4c2679;_0x8e434c=0xc8;}else{_0x8e434c=0xce;}_0x3126bb[_0xeb8c('0x1f')](_0x8e434c);return _0x3126bb[_0xeb8c('0x24')]('Content-Range',_0x47aec3+'-'+_0x4296d9+'/'+_0x4c2679)[_0xeb8c('0x20')](_0x58b047);}return null;};}function patchUpdates(_0x3b8025){return function(_0x18b1e3){try{jsonpatch['apply'](_0x18b1e3,_0x3b8025,!![]);}catch(_0x3457c0){return BPromise[_0xeb8c('0x25')](_0x3457c0);}return _0x18b1e3['save']();};}function saveUpdates(_0xf972d0,_0x19958e){return function(_0x3dbce3){if(_0x3dbce3){return _0x3dbce3[_0xeb8c('0x26')](_0xf972d0)[_0xeb8c('0x27')](function(_0x48746c){return _0x48746c;});}return null;};}function removeEntity(_0x12d21c,_0x18d17f){return function(_0x4f3f8b){if(_0x4f3f8b){return _0x4f3f8b[_0xeb8c('0x28')]()[_0xeb8c('0x27')](function(){var _0x1a0e49=_0x4f3f8b[_0xeb8c('0x29')]({'plain':!![]});var _0x4ff0c7=_0xeb8c('0x2a');return db[_0xeb8c('0x2b')][_0xeb8c('0x28')]({'where':{'type':_0x4ff0c7,'resourceId':_0x1a0e49['id']}})[_0xeb8c('0x27')](function(){return _0x4f3f8b;});})['then'](function(){_0x12d21c[_0xeb8c('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x534aef,_0x5e2503){return function(_0x44158e){if(!_0x44158e){_0x534aef[_0xeb8c('0x1d')](0x194);}return _0x44158e;};}function handleError(_0x4172a1,_0x4edebf){_0x4edebf=_0x4edebf||0x1f4;return function(_0x3d0681){logger[_0xeb8c('0x2c')](_0x3d0681[_0xeb8c('0x2d')]);if(_0x3d0681[_0xeb8c('0x2e')]){delete _0x3d0681['name'];}_0x4172a1[_0xeb8c('0x1f')](_0x4edebf)[_0xeb8c('0x2f')](_0x3d0681);};}exports['index']=function(_0x2b921b,_0x2b9236){var _0x30f2c7={},_0x2f7fce={},_0x55c09c={'count':0x0,'rows':[]};var _0x6d4948=_[_0xeb8c('0x30')](db[_0xeb8c('0x31')]['rawAttributes'],function(_0x48b850){return{'name':_0x48b850['fieldName'],'type':_0x48b850[_0xeb8c('0x32')][_0xeb8c('0x33')]};});_0x2f7fce[_0xeb8c('0x34')]=_[_0xeb8c('0x30')](_0x6d4948,_0xeb8c('0x2e'));_0x2f7fce[_0xeb8c('0x35')]=_[_0xeb8c('0x36')](_0x2b921b['query']);_0x2f7fce[_0xeb8c('0x37')]=_[_0xeb8c('0x38')](_0x2f7fce['model'],_0x2f7fce[_0xeb8c('0x35')]);_0x30f2c7['attributes']=_['intersection'](_0x2f7fce['model'],qs[_0xeb8c('0x39')](_0x2b921b[_0xeb8c('0x35')]['fields']));_0x30f2c7[_0xeb8c('0x3a')]=_0x30f2c7['attributes'][_0xeb8c('0x3b')]?_0x30f2c7[_0xeb8c('0x3a')]:_0x2f7fce[_0xeb8c('0x34')];if(!_0x2b921b[_0xeb8c('0x35')]['hasOwnProperty']('nolimit')){_0x30f2c7[_0xeb8c('0x23')]=qs['limit'](_0x2b921b[_0xeb8c('0x35')][_0xeb8c('0x23')]);_0x30f2c7['offset']=qs[_0xeb8c('0x21')](_0x2b921b[_0xeb8c('0x35')][_0xeb8c('0x21')]);}_0x30f2c7[_0xeb8c('0x3c')]=qs['sort'](_0x2b921b[_0xeb8c('0x35')][_0xeb8c('0x3d')]);_0x30f2c7[_0xeb8c('0x3e')]=qs['filters'](_['pick'](_0x2b921b['query'],_0x2f7fce[_0xeb8c('0x37')]),_0x6d4948);if(_0x2b921b[_0xeb8c('0x35')]['filter']){_0x30f2c7[_0xeb8c('0x3e')]=_[_0xeb8c('0x3f')](_0x30f2c7['where'],{'$or':_['map'](_0x6d4948,function(_0x2c2dbe){if(_0x2c2dbe[_0xeb8c('0x32')]!==_0xeb8c('0x40')){var _0x2d6277={};_0x2d6277[_0x2c2dbe[_0xeb8c('0x2e')]]={'$like':'%'+_0x2b921b['query'][_0xeb8c('0x41')]+'%'};return _0x2d6277;}})});}_0x30f2c7=_[_0xeb8c('0x3f')]({},_0x30f2c7,_0x2b921b[_0xeb8c('0x42')]);var _0xdda2f4={'where':_0x30f2c7[_0xeb8c('0x3e')]};return db['Schedule'][_0xeb8c('0x43')](_0xdda2f4)[_0xeb8c('0x27')](function(_0x2a103f){_0x55c09c[_0xeb8c('0x43')]=_0x2a103f;if(_0x2b921b[_0xeb8c('0x35')]['includeAll']){_0x30f2c7['include']=[{'all':!![]}];}return db[_0xeb8c('0x31')][_0xeb8c('0x44')](_0x30f2c7);})['then'](function(_0x35c96c){_0x55c09c[_0xeb8c('0x45')]=_0x35c96c;return _0x55c09c;})[_0xeb8c('0x27')](respondWithFilteredResult(_0x2b9236,_0x30f2c7))[_0xeb8c('0x46')](handleError(_0x2b9236,null));};exports['show']=function(_0x5ab0d9,_0x308eab){var _0x32f9d7={'raw':![],'where':{'id':_0x5ab0d9['params']['id']}},_0x59b95b={};_0x59b95b[_0xeb8c('0x34')]=_[_0xeb8c('0x36')](db['Schedule'][_0xeb8c('0x47')]);_0x59b95b[_0xeb8c('0x35')]=_[_0xeb8c('0x36')](_0x5ab0d9[_0xeb8c('0x35')]);_0x59b95b['filters']=_[_0xeb8c('0x38')](_0x59b95b[_0xeb8c('0x34')],_0x59b95b[_0xeb8c('0x35')]);_0x32f9d7[_0xeb8c('0x3a')]=_['intersection'](_0x59b95b[_0xeb8c('0x34')],qs[_0xeb8c('0x39')](_0x5ab0d9[_0xeb8c('0x35')]['fields']));_0x32f9d7[_0xeb8c('0x3a')]=_0x32f9d7[_0xeb8c('0x3a')]['length']?_0x32f9d7[_0xeb8c('0x3a')]:_0x59b95b['model'];if(_0x5ab0d9[_0xeb8c('0x35')][_0xeb8c('0x48')]){_0x32f9d7[_0xeb8c('0x49')]=[{'all':!![]}];}_0x32f9d7=_['merge']({},_0x32f9d7,_0x5ab0d9[_0xeb8c('0x42')]);return db[_0xeb8c('0x31')][_0xeb8c('0x4a')](_0x32f9d7)[_0xeb8c('0x27')](handleEntityNotFound(_0x308eab,null))[_0xeb8c('0x27')](respondWithResult(_0x308eab,null))[_0xeb8c('0x46')](handleError(_0x308eab,null));};exports[_0xeb8c('0x4b')]=function(_0x554c3b,_0x1047fa){return db[_0xeb8c('0x31')]['create'](_0x554c3b[_0xeb8c('0x4c')],{})[_0xeb8c('0x27')](function(_0x1839fb){var _0x42d52d=_0x554c3b[_0xeb8c('0x4d')][_0xeb8c('0x29')]({'plain':!![]});if(!_0x42d52d)throw new Error(_0xeb8c('0x4e'));if(_0x42d52d[_0xeb8c('0x4f')]==='user'){var _0x3bad44=_0x1839fb[_0xeb8c('0x29')]({'plain':!![]});var _0x508cfa=_0xeb8c('0x2a');return db['UserProfileSection']['find']({'where':{'name':_0x508cfa,'userProfileId':_0x42d52d[_0xeb8c('0x50')]},'raw':!![]})[_0xeb8c('0x27')](function(_0x503ceb){if(_0x503ceb&&_0x503ceb[_0xeb8c('0x51')]===0x0){return db[_0xeb8c('0x2b')]['create']({'name':_0x3bad44[_0xeb8c('0x2e')],'resourceId':_0x3bad44['id'],'type':_0x503ceb[_0xeb8c('0x2e')],'sectionId':_0x503ceb['id']},{})[_0xeb8c('0x27')](function(){return _0x1839fb;});}else{return _0x1839fb;}})[_0xeb8c('0x46')](function(_0x2049b8){logger[_0xeb8c('0x2c')](_0xeb8c('0x52'),_0x2049b8);throw _0x2049b8;});}return _0x1839fb;})['then'](respondWithResult(_0x1047fa,0xc9))['catch'](handleError(_0x1047fa,null));};exports['update']=function(_0x184577,_0x145022){if(_0x184577[_0xeb8c('0x4c')]['id']){delete _0x184577[_0xeb8c('0x4c')]['id'];}return db[_0xeb8c('0x31')]['find']({'where':{'id':_0x184577['params']['id']}})['then'](handleEntityNotFound(_0x145022,null))[_0xeb8c('0x27')](saveUpdates(_0x184577[_0xeb8c('0x4c')],null))['then'](respondWithResult(_0x145022,null))[_0xeb8c('0x46')](handleError(_0x145022,null));};exports[_0xeb8c('0x28')]=function(_0x519c90,_0x33d390){return db[_0xeb8c('0x31')]['find']({'where':{'id':_0x519c90['params']['id']}})['then'](handleEntityNotFound(_0x33d390,null))[_0xeb8c('0x27')](removeEntity(_0x33d390,null))[_0xeb8c('0x46')](handleError(_0x33d390,null));};exports[_0xeb8c('0x53')]=function(_0x5302f5,_0x1c2bf9,_0x36d912){var _0x1754a1=require('../../config/schedule');return db[_0xeb8c('0x31')][_0xeb8c('0x4a')]({'where':{'id':_0x5302f5[_0xeb8c('0x54')]['id']},'raw':!![]})[_0xeb8c('0x27')](handleEntityNotFound(_0x1c2bf9,null))['then'](function(){_0x1754a1[_0xeb8c('0x53')](_0x5302f5[_0xeb8c('0x54')]['id']);})[_0xeb8c('0x27')](respondWithStatusCode(_0x1c2bf9,null))['catch'](handleError(_0x1c2bf9,null));};
\ No newline at end of file
index e561ad9..2ea9a32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdad=['lodash','util','moment','bluebird','request-promise','rimraf','./schedule.attributes','define','Schedule','tools_schedules'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xcdad,0x19a));var _0xdcda=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0xcdad[_0x382a62];return _0x490a25;};'use strict';var _=require(_0xdcda('0x0'));var util=require(_0xdcda('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xdcda('0x2'));var BPromise=require(_0xdcda('0x3'));var rp=require(_0xdcda('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdcda('0x5'));var config=require('../../config/environment');var attributes=require(_0xdcda('0x6'));module['exports']=function(_0x3f32f7,_0xfe998){return _0x3f32f7[_0xdcda('0x7')](_0xdcda('0x8'),attributes,{'tableName':_0xdcda('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc629=['bluebird','request-promise','path','rimraf','./schedule.attributes','exports','tools_schedules','lodash','../../config/logger','moment'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xc629,0x18d));var _0x9c62=function(_0x1b8359,_0x58a90d){_0x1b8359=_0x1b8359-0x0;var _0x4fb6ac=_0xc629[_0x1b8359];return _0x4fb6ac;};'use strict';var _=require(_0x9c62('0x0'));var util=require('util');var logger=require(_0x9c62('0x1'))('api');var moment=require(_0x9c62('0x2'));var BPromise=require(_0x9c62('0x3'));var rp=require(_0x9c62('0x4'));var fs=require('fs');var path=require(_0x9c62('0x5'));var rimraf=require(_0x9c62('0x6'));var config=require('../../config/environment');var attributes=require(_0x9c62('0x7'));module[_0x9c62('0x8')]=function(_0x1d5bd8,_0x55d894){return _0x1d5bd8['define']('Schedule',attributes,{'tableName':_0x9c62('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a344e14..c371cbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc7a=['then','info','Schedule,\x20%s,\x20%s','request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request'];(function(_0x4daeb6,_0x3316d5){var _0x38c788=function(_0x1316d2){while(--_0x1316d2){_0x4daeb6['push'](_0x4daeb6['shift']());}};_0x38c788(++_0x3316d5);}(_0xbc7a,0x1d7));var _0xabc7=function(_0x38f7a7,_0x5ae856){_0x38f7a7=_0x38f7a7-0x0;var _0x4cfaba=_0xbc7a[_0x38f7a7];return _0x4cfaba;};'use strict';var _=require(_0xabc7('0x0'));var util=require(_0xabc7('0x1'));var moment=require(_0xabc7('0x2'));var BPromise=require(_0xabc7('0x3'));var rs=require(_0xabc7('0x4'));var fs=require('fs');var Redis=require(_0xabc7('0x5'));var db=require(_0xabc7('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xabc7('0x7'));var jayson=require(_0xabc7('0x8'));var client=jayson[_0xabc7('0x9')][_0xabc7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1499c6,_0xfed74c,_0x994fad){return new BPromise(function(_0x417534,_0x23d33d){return client[_0xabc7('0xb')](_0x1499c6,_0x994fad)[_0xabc7('0xc')](function(_0x115b2d){logger[_0xabc7('0xd')](_0xabc7('0xe'),_0xfed74c,_0xabc7('0xf'));logger['debug'](_0xabc7('0x10'),_0xfed74c,'request\x20sent',JSON[_0xabc7('0x11')](_0x115b2d));if(_0x115b2d[_0xabc7('0x12')]){if(_0x115b2d['error'][_0xabc7('0x13')]===0x1f4){logger[_0xabc7('0x12')](_0xabc7('0xe'),_0xfed74c,_0x115b2d[_0xabc7('0x12')]['message']);return _0x23d33d(_0x115b2d[_0xabc7('0x12')]['message']);}logger[_0xabc7('0x12')](_0xabc7('0xe'),_0xfed74c,_0x115b2d[_0xabc7('0x12')][_0xabc7('0x14')]);return _0x417534(_0x115b2d[_0xabc7('0x12')]['message']);}else{logger[_0xabc7('0xd')](_0xabc7('0xe'),_0xfed74c,_0xabc7('0xf'));_0x417534(_0x115b2d['result']['message']);}})['catch'](function(_0x1df755){logger['error'](_0xabc7('0xe'),_0xfed74c,_0x1df755);_0x23d33d(_0x1df755);});});}
\ No newline at end of file
+var _0x3325=['Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info'];(function(_0x1ac120,_0x3e7e45){var _0x19b703=function(_0x5f32cb){while(--_0x5f32cb){_0x1ac120['push'](_0x1ac120['shift']());}};_0x19b703(++_0x3e7e45);}(_0x3325,0xef));var _0x5332=function(_0x2a829f,_0x1b0c15){_0x2a829f=_0x2a829f-0x0;var _0x5737c3=_0x3325[_0x2a829f];return _0x5737c3;};'use strict';var _=require('lodash');var util=require(_0x5332('0x0'));var moment=require(_0x5332('0x1'));var BPromise=require(_0x5332('0x2'));var rs=require(_0x5332('0x3'));var fs=require('fs');var Redis=require(_0x5332('0x4'));var db=require(_0x5332('0x5'))['db'];var utils=require(_0x5332('0x6'));var logger=require(_0x5332('0x7'))(_0x5332('0x8'));var config=require('../../config/environment');var jayson=require(_0x5332('0x9'));var client=jayson[_0x5332('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f967e,_0x30d03d,_0x461646){return new BPromise(function(_0xaad308,_0x289a07){return client[_0x5332('0xb')](_0x3f967e,_0x461646)[_0x5332('0xc')](function(_0x26c4ad){logger[_0x5332('0xd')](_0x5332('0xe'),_0x30d03d,_0x5332('0xf'));logger[_0x5332('0x10')](_0x5332('0x11'),_0x30d03d,_0x5332('0xf'),JSON['stringify'](_0x26c4ad));if(_0x26c4ad['error']){if(_0x26c4ad['error'][_0x5332('0x12')]===0x1f4){logger[_0x5332('0x13')](_0x5332('0xe'),_0x30d03d,_0x26c4ad[_0x5332('0x13')]['message']);return _0x289a07(_0x26c4ad[_0x5332('0x13')]['message']);}logger[_0x5332('0x13')](_0x5332('0xe'),_0x30d03d,_0x26c4ad[_0x5332('0x13')][_0x5332('0x14')]);return _0xaad308(_0x26c4ad['error'][_0x5332('0x14')]);}else{logger['info'](_0x5332('0xe'),_0x30d03d,'request\x20sent');_0xaad308(_0x26c4ad[_0x5332('0x15')][_0x5332('0x14')]);}})[_0x5332('0x16')](function(_0x5a4337){logger[_0x5332('0x13')]('Schedule,\x20%s,\x20%s',_0x30d03d,_0x5a4337);_0x289a07(_0x5a4337);});});}
\ No newline at end of file
index d438f7e..9667667 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf143=['/:id','show','/:id/download','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./screenRecording.controller','isAuthenticated','index','/describe','describe','get'];(function(_0x30c18f,_0xeba9ae){var _0x4b70bb=function(_0x2d350){while(--_0x2d350){_0x30c18f['push'](_0x30c18f['shift']());}};_0x4b70bb(++_0xeba9ae);}(_0xf143,0x1be));var _0x3f14=function(_0x3211f6,_0x47eb23){_0x3211f6=_0x3211f6-0x0;var _0x273e60=_0xf143[_0x3211f6];return _0x273e60;};'use strict';var multer=require(_0x3f14('0x0'));var util=require(_0x3f14('0x1'));var path=require(_0x3f14('0x2'));var timeout=require(_0x3f14('0x3'));var express=require(_0x3f14('0x4'));var router=express[_0x3f14('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3f14('0x6'));var config=require(_0x3f14('0x7'));var controller=require(_0x3f14('0x8'));router['get']('/',auth[_0x3f14('0x9')](),controller[_0x3f14('0xa')]);router['get'](_0x3f14('0xb'),auth[_0x3f14('0x9')](),controller[_0x3f14('0xc')]);router[_0x3f14('0xd')](_0x3f14('0xe'),auth[_0x3f14('0x9')](),controller[_0x3f14('0xf')]);router[_0x3f14('0xd')](_0x3f14('0x10'),auth[_0x3f14('0x9')](),controller['download']);router[_0x3f14('0x11')]('/',auth['isAuthenticated'](),controller[_0x3f14('0x12')]);router[_0x3f14('0x13')](_0x3f14('0xe'),auth[_0x3f14('0x9')](),controller['update']);router[_0x3f14('0x14')](_0x3f14('0xe'),auth[_0x3f14('0x9')](),controller[_0x3f14('0x15')]);module[_0x3f14('0x16')]=router;
\ No newline at end of file
+var _0x4681=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/:id','/:id/download','create','put','update'];(function(_0x31e584,_0x4d9f7f){var _0x5686d0=function(_0x1f9e99){while(--_0x1f9e99){_0x31e584['push'](_0x31e584['shift']());}};_0x5686d0(++_0x4d9f7f);}(_0x4681,0xd5));var _0x1468=function(_0x3abb24,_0x17b07e){_0x3abb24=_0x3abb24-0x0;var _0x9ad833=_0x4681[_0x3abb24];return _0x9ad833;};'use strict';var multer=require(_0x1468('0x0'));var util=require(_0x1468('0x1'));var path=require('path');var timeout=require(_0x1468('0x2'));var express=require(_0x1468('0x3'));var router=express[_0x1468('0x4')]();var fs_extra=require(_0x1468('0x5'));var auth=require(_0x1468('0x6'));var interaction=require(_0x1468('0x7'));var config=require(_0x1468('0x8'));var controller=require(_0x1468('0x9'));router[_0x1468('0xa')]('/',auth[_0x1468('0xb')](),controller[_0x1468('0xc')]);router[_0x1468('0xa')]('/describe',auth[_0x1468('0xb')](),controller['describe']);router[_0x1468('0xa')](_0x1468('0xd'),auth[_0x1468('0xb')](),controller['show']);router[_0x1468('0xa')](_0x1468('0xe'),auth[_0x1468('0xb')](),controller['download']);router['post']('/',auth[_0x1468('0xb')](),controller[_0x1468('0xf')]);router[_0x1468('0x10')](_0x1468('0xd'),auth[_0x1468('0xb')](),controller[_0x1468('0x11')]);router[_0x1468('0x12')](_0x1468('0xd'),auth['isAuthenticated'](),controller[_0x1468('0x13')]);module[_0x1468('0x14')]=router;
\ No newline at end of file
index d983a84..2cee853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e2=['setDataValue','INTEGER','subtract','duration','DATE','startedAt','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','path','../../config/environment','exports','getDataValue','extname','value','STRING','replace'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x79e2,0x1c3));var _0x279e=function(_0xfb82a7,_0x1be538){_0xfb82a7=_0xfb82a7-0x0;var _0x5ce7ff=_0x79e2[_0xfb82a7];return _0x5ce7ff;};'use strict';var Sequelize=require(_0x279e('0x0'));var moment=require('moment');var path=require(_0x279e('0x1'));var config=require(_0x279e('0x2'));module[_0x279e('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x279e('0x4')]('value')?path[_0x279e('0x5')](this[_0x279e('0x4')](_0x279e('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x279e('0x7')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x1c6b6f){var _0x26c072=_0x1c6b6f[_0x279e('0x8')](/\\/g,'/');this[_0x279e('0x9')](_0x279e('0x6'),_0x26c072);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x279e('0xa')],'set':function(_0x1ec1b7){this[_0x279e('0x9')]('startedAt',moment()[_0x279e('0xb')](_0x1ec1b7,'ms'));this[_0x279e('0x9')]('closedAt',moment());this[_0x279e('0x9')](_0x279e('0xc'),_0x1ec1b7);}},'startedAt':{'type':Sequelize[_0x279e('0xd')],'get':function(){return moment(this[_0x279e('0x4')](_0x279e('0xe')))[_0x279e('0xf')](_0x279e('0x10'))[_0x279e('0x11')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x279e('0x4')]('closedAt'))[_0x279e('0xf')](_0x279e('0x10'))[_0x279e('0x11')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x279e('0x4')](_0x279e('0x12')))[_0x279e('0xf')]('MM-DD-YYYY\x20HH:mm')[_0x279e('0x11')]();}},'updatedAt':{'type':Sequelize[_0x279e('0xd')],'get':function(){return moment(this[_0x279e('0x4')](_0x279e('0x13')))[_0x279e('0xf')](_0x279e('0x10'))['toString']();}}};
\ No newline at end of file
+var _0x3fc6=['exports','VIRTUAL','value','extname','getDataValue','STRING','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','path','../../config/environment'];(function(_0x4c7b20,_0x361515){var _0x4872bd=function(_0x358e19){while(--_0x358e19){_0x4c7b20['push'](_0x4c7b20['shift']());}};_0x4872bd(++_0x361515);}(_0x3fc6,0x115));var _0x63fc=function(_0x4739a4,_0x13ddd8){_0x4739a4=_0x4739a4-0x0;var _0x410c38=_0x3fc6[_0x4739a4];return _0x410c38;};'use strict';var Sequelize=require(_0x63fc('0x0'));var moment=require('moment');var path=require(_0x63fc('0x1'));var config=require(_0x63fc('0x2'));module[_0x63fc('0x3')]={'format':{'type':Sequelize[_0x63fc('0x4')],'get':function(){return this['getDataValue'](_0x63fc('0x5'))?path[_0x63fc('0x6')](this[_0x63fc('0x7')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x63fc('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x63fc('0x8')],'set':function(_0x1c7f72){var _0x3e8157=_0x1c7f72['replace'](/\\/g,'/');this[_0x63fc('0x9')](_0x63fc('0x5'),_0x3e8157);}},'rating':{'type':Sequelize[_0x63fc('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x63fc('0xa')],'set':function(_0x32749b){this['setDataValue'](_0x63fc('0xb'),moment()['subtract'](_0x32749b,'ms'));this['setDataValue'](_0x63fc('0xc'),moment());this[_0x63fc('0x9')](_0x63fc('0xd'),_0x32749b);}},'startedAt':{'type':Sequelize[_0x63fc('0xe')],'get':function(){return moment(this[_0x63fc('0x7')](_0x63fc('0xb')))[_0x63fc('0xf')](_0x63fc('0x10'))['toString']();}},'closedAt':{'type':Sequelize[_0x63fc('0xe')],'get':function(){return moment(this[_0x63fc('0x7')](_0x63fc('0xc')))['format'](_0x63fc('0x10'))[_0x63fc('0x11')]();}},'createdAt':{'type':Sequelize[_0x63fc('0xe')],'get':function(){return moment(this['getDataValue'](_0x63fc('0x12')))[_0x63fc('0xf')](_0x63fc('0x10'))[_0x63fc('0x11')]();}},'updatedAt':{'type':Sequelize[_0x63fc('0xe')],'get':function(){return moment(this[_0x63fc('0x7')](_0x63fc('0x13')))[_0x63fc('0xf')](_0x63fc('0x10'))[_0x63fc('0x11')]();}}};
\ No newline at end of file
index 7165034..b02e70f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['differenceBy','format','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','filter','options','ScreenRecording','includeAll','rows','catch','show','params','include','create','body','createdAt','closedAt','find','describe','download','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model'];(function(_0x352e75,_0x2bf3f3){var _0x2d12a2=function(_0x36ba25){while(--_0x36ba25){_0x352e75['push'](_0x352e75['shift']());}};_0x2d12a2(++_0x2bf3f3);}(_0xb458,0x103));var _0x8b45=function(_0x4f01ac,_0x130073){_0x4f01ac=_0x4f01ac-0x0;var _0x314994=_0xb458[_0x4f01ac];return _0x314994;};'use strict';var emlformat=require(_0x8b45('0x0'));var rimraf=require(_0x8b45('0x1'));var zipdir=require(_0x8b45('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8b45('0x3'));var BPromise=require(_0x8b45('0x4'));var Mustache=require(_0x8b45('0x5'));var util=require(_0x8b45('0x6'));var path=require('path');var sox=require(_0x8b45('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b45('0x8'));var _=require(_0x8b45('0x9'));var squel=require(_0x8b45('0xa'));var crypto=require(_0x8b45('0xb'));var jsforce=require(_0x8b45('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8b45('0xd'));var querystring=require(_0x8b45('0xe'));var Papa=require(_0x8b45('0xf'));var Redis=require(_0x8b45('0x10'));var authService=require(_0x8b45('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8b45('0x12'));var hardwareService=require(_0x8b45('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8b45('0x14'));var db=require(_0x8b45('0x15'))['db'];function respondWithStatusCode(_0x37c220,_0x52c4db){_0x52c4db=_0x52c4db||0xcc;return function(_0x30d38c){if(_0x30d38c){return _0x37c220[_0x8b45('0x16')](_0x52c4db);}return _0x37c220[_0x8b45('0x17')](_0x52c4db)[_0x8b45('0x18')]();};}function respondWithResult(_0x32babc,_0x2ad2ae){_0x2ad2ae=_0x2ad2ae||0xc8;return function(_0x5f0b20){if(_0x5f0b20){return _0x32babc['status'](_0x2ad2ae)[_0x8b45('0x19')](_0x5f0b20);}};}function respondWithFilteredResult(_0x23f1dd,_0x445170){return function(_0x39c1d1){if(_0x39c1d1){var _0x4781d7=typeof _0x445170[_0x8b45('0x1a')]===_0x8b45('0x1b')&&typeof _0x445170[_0x8b45('0x1c')]===_0x8b45('0x1b');var _0x391d1e=_0x39c1d1[_0x8b45('0x1d')];var _0x21d5b2=_0x4781d7?0x0:_0x445170[_0x8b45('0x1a')];var _0x43ffb7=_0x4781d7?_0x39c1d1[_0x8b45('0x1d')]:_0x445170[_0x8b45('0x1a')]+_0x445170[_0x8b45('0x1c')];var _0x309e23;if(_0x43ffb7>=_0x391d1e){_0x43ffb7=_0x391d1e;_0x309e23=0xc8;}else{_0x309e23=0xce;}_0x23f1dd['status'](_0x309e23);return _0x23f1dd[_0x8b45('0x1e')](_0x8b45('0x1f'),_0x21d5b2+'-'+_0x43ffb7+'/'+_0x391d1e)[_0x8b45('0x19')](_0x39c1d1);}return null;};}function patchUpdates(_0x46e21a){return function(_0x3e1438){try{jsonpatch[_0x8b45('0x20')](_0x3e1438,_0x46e21a,!![]);}catch(_0x2f4f1c){return BPromise[_0x8b45('0x21')](_0x2f4f1c);}return _0x3e1438['save']();};}function saveUpdates(_0x52f93f,_0x41154a){return function(_0x580e17){if(_0x580e17){return _0x580e17[_0x8b45('0x22')](_0x52f93f)[_0x8b45('0x23')](function(_0x30f405){return _0x30f405;});}return null;};}function removeEntity(_0x45e2db,_0x165570){return function(_0x2b8526){if(_0x2b8526){return _0x2b8526[_0x8b45('0x24')]()['then'](function(){_0x45e2db['status'](0xcc)[_0x8b45('0x18')]();});}};}function handleEntityNotFound(_0x2c2c06,_0x500044){return function(_0x5723a2){if(!_0x5723a2){_0x2c2c06[_0x8b45('0x16')](0x194);}return _0x5723a2;};}function handleError(_0x32f6f0,_0x2ca2d9){_0x2ca2d9=_0x2ca2d9||0x1f4;return function(_0x2f37bc){logger['error'](_0x2f37bc[_0x8b45('0x25')]);if(_0x2f37bc[_0x8b45('0x26')]){delete _0x2f37bc[_0x8b45('0x26')];}_0x32f6f0[_0x8b45('0x17')](_0x2ca2d9)[_0x8b45('0x27')](_0x2f37bc);};}exports[_0x8b45('0x28')]=function(_0x461017,_0x234f62){var _0x1733a7={},_0xf21bd1={},_0x339c73={'count':0x0,'rows':[]};var _0x1ba2d4=_[_0x8b45('0x29')](db['ScreenRecording'][_0x8b45('0x2a')],function(_0x36db96){return{'name':_0x36db96[_0x8b45('0x2b')],'type':_0x36db96[_0x8b45('0x2c')][_0x8b45('0x2d')]};});_0xf21bd1[_0x8b45('0x2e')]=_[_0x8b45('0x2f')](_[_0x8b45('0x29')](_0x1ba2d4,'name'),[_0x8b45('0x30')]);_0xf21bd1[_0x8b45('0x31')]=_[_0x8b45('0x32')](_0x461017[_0x8b45('0x31')]);_0xf21bd1[_0x8b45('0x33')]=_['intersection'](_0xf21bd1[_0x8b45('0x2e')],_0xf21bd1['query']);_0x1733a7['attributes']=_[_0x8b45('0x34')](_0xf21bd1[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x461017[_0x8b45('0x31')][_0x8b45('0x35')]));_0x1733a7[_0x8b45('0x36')]=_0x1733a7['attributes'][_0x8b45('0x37')]?_0x1733a7[_0x8b45('0x36')]:_0xf21bd1[_0x8b45('0x2e')];if(!_0x461017[_0x8b45('0x31')]['hasOwnProperty'](_0x8b45('0x38'))){_0x1733a7[_0x8b45('0x1c')]=qs[_0x8b45('0x1c')](_0x461017['query'][_0x8b45('0x1c')]);_0x1733a7[_0x8b45('0x1a')]=qs[_0x8b45('0x1a')](_0x461017['query'][_0x8b45('0x1a')]);}_0x1733a7[_0x8b45('0x39')]=qs[_0x8b45('0x3a')](_0x461017[_0x8b45('0x31')]['sort']);_0x1733a7[_0x8b45('0x3b')]=qs[_0x8b45('0x33')](_[_0x8b45('0x3c')](_0x461017[_0x8b45('0x31')],_0xf21bd1[_0x8b45('0x33')]),_0x1ba2d4);if(_0x461017[_0x8b45('0x31')]['filter']){_0x1733a7['where']=_[_0x8b45('0x3d')](_0x1733a7[_0x8b45('0x3b')],{'$or':_[_0x8b45('0x29')](_0x1ba2d4,function(_0x12d4b2){if(_0x12d4b2[_0x8b45('0x2c')]!=='VIRTUAL'){var _0x120068={};_0x120068[_0x12d4b2['name']]={'$like':'%'+_0x461017[_0x8b45('0x31')][_0x8b45('0x3e')]+'%'};return _0x120068;}})});}_0x1733a7=_[_0x8b45('0x3d')]({},_0x1733a7,_0x461017[_0x8b45('0x3f')]);var _0x254f17={'where':_0x1733a7[_0x8b45('0x3b')]};return db[_0x8b45('0x40')][_0x8b45('0x1d')](_0x254f17)[_0x8b45('0x23')](function(_0x2ca00e){_0x339c73[_0x8b45('0x1d')]=_0x2ca00e;if(_0x461017['query'][_0x8b45('0x41')]){_0x1733a7['include']=[{'all':!![]}];}return db[_0x8b45('0x40')]['findAll'](_0x1733a7);})[_0x8b45('0x23')](function(_0x224c45){_0x339c73[_0x8b45('0x42')]=_0x224c45;return _0x339c73;})[_0x8b45('0x23')](respondWithFilteredResult(_0x234f62,_0x1733a7))[_0x8b45('0x43')](handleError(_0x234f62,null));};exports[_0x8b45('0x44')]=function(_0x58e663,_0x6fbca4){var _0x5916c7={'raw':![],'where':{'id':_0x58e663[_0x8b45('0x45')]['id']}},_0x4c56c8={};_0x4c56c8[_0x8b45('0x2e')]=_[_0x8b45('0x32')](db['ScreenRecording'][_0x8b45('0x2a')]);_0x4c56c8['query']=_[_0x8b45('0x32')](_0x58e663[_0x8b45('0x31')]);_0x4c56c8[_0x8b45('0x33')]=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],_0x4c56c8[_0x8b45('0x31')]);_0x5916c7['attributes']=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x58e663[_0x8b45('0x31')][_0x8b45('0x35')]));_0x5916c7[_0x8b45('0x36')]=_0x5916c7[_0x8b45('0x36')][_0x8b45('0x37')]?_0x5916c7[_0x8b45('0x36')]:_0x4c56c8[_0x8b45('0x2e')];if(_0x58e663[_0x8b45('0x31')][_0x8b45('0x41')]){_0x5916c7[_0x8b45('0x46')]=[{'all':!![]}];}_0x5916c7=_[_0x8b45('0x3d')]({},_0x5916c7,_0x58e663[_0x8b45('0x3f')]);return db[_0x8b45('0x40')]['find'](_0x5916c7)['then'](handleEntityNotFound(_0x6fbca4,null))['then'](respondWithResult(_0x6fbca4,null))[_0x8b45('0x43')](handleError(_0x6fbca4,null));};exports[_0x8b45('0x47')]=function(_0x3a1621,_0x473530){return db[_0x8b45('0x40')][_0x8b45('0x47')](_0x3a1621[_0x8b45('0x48')],{})[_0x8b45('0x23')](respondWithResult(_0x473530,0xc9))['catch'](handleError(_0x473530,null));};exports[_0x8b45('0x22')]=function(_0x5d5be2,_0x23b5c6){if(_0x5d5be2[_0x8b45('0x48')]['id']){delete _0x5d5be2[_0x8b45('0x48')]['id'];}delete _0x5d5be2[_0x8b45('0x48')]['duration'];delete _0x5d5be2[_0x8b45('0x48')][_0x8b45('0x49')];delete _0x5d5be2['body'][_0x8b45('0x4a')];delete _0x5d5be2[_0x8b45('0x48')]['value'];return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':{'id':_0x5d5be2[_0x8b45('0x45')]['id']}})[_0x8b45('0x23')](handleEntityNotFound(_0x23b5c6,null))[_0x8b45('0x23')](saveUpdates(_0x5d5be2[_0x8b45('0x48')],null))['then'](respondWithResult(_0x23b5c6,null))['catch'](handleError(_0x23b5c6,null));};exports[_0x8b45('0x4c')]=function(_0x2a2e59,_0x2d5b31){return db['ScreenRecording'][_0x8b45('0x4c')]()[_0x8b45('0x23')](respondWithResult(_0x2d5b31,null))[_0x8b45('0x43')](handleError(_0x2d5b31,null));};exports[_0x8b45('0x4d')]=function(_0x2d6b66,_0x597402,_0x34c05d){var _0xa92a05=require('../../components/encryptor');var _0x422da0=![];var _0x4c3f38={};if(_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]&&_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]==='uniqueid'){_0x4c3f38[_0x8b45('0x4e')]=_0x2d6b66[_0x8b45('0x45')]['id'];}else{_0x4c3f38['id']=_0x2d6b66[_0x8b45('0x45')]['id'];}return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':_0x4c3f38,'attributes':['id',_0x8b45('0x4f')],'raw':!![]})[_0x8b45('0x23')](handleEntityNotFound(_0x597402,null))[_0x8b45('0x23')](function(_0x446fe5){if(_0x446fe5){var _0x5ba878=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x446fe5[_0x8b45('0x4f')]);var _0x1851c2=util['format'](_0x8b45('0x53'),_0x5ba878);if(fs[_0x8b45('0x54')](_0x1851c2)){_0x422da0=!![];return _0xa92a05[_0x8b45('0x55')](_0x1851c2,_0x5ba878,config['secrets'][_0x8b45('0x56')])[_0x8b45('0x23')](function(){return _0x446fe5;});}return _0x446fe5;}})[_0x8b45('0x23')](function(_0x9eacc1){if(_0x9eacc1){var _0x5795ca=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x9eacc1[_0x8b45('0x4f')]);if(!fs['existsSync'](_0x5795ca)){throw new db[(_0x8b45('0x57'))][(_0x8b45('0x58'))](_0x8b45('0x59'));}if(_0x9eacc1[_0x8b45('0x5a')]){return _0x597402[_0x8b45('0x4d')](_0x5795ca,_0x9eacc1['filename']+path[_0x8b45('0x5b')](_0x5795ca),function(){if(_0x422da0){fs['unlink'](_0x5795ca);}});}else{return _0x597402[_0x8b45('0x4d')](_0x5795ca,function(_0x2f7ab0){if(_0x422da0){fs[_0x8b45('0x5c')](_0x5795ca);}});}}})[_0x8b45('0x43')](function(_0x6a77bd){if(_0x6a77bd[_0x8b45('0x5d')]==='ScreenRecording\x20not\x20found'){_0x597402['status'](0x194)[_0x8b45('0x27')](_0x8b45('0x5e'));}else{return handleError(_0x597402,null);}});};exports['destroy']=function(_0x461c83,_0x239330){return db[_0x8b45('0x40')]['find']({'where':{'id':_0x461c83['params']['id']}})[_0x8b45('0x23')](function(_0x8e5a41){if(_['isNil'](_0x8e5a41)){throw new ReferenceError(_0x8b45('0x5f'));}return _0x8e5a41;})['then'](function(_0xf1ab37){var _0x560c51=path['join'](config[_0x8b45('0x51')],_0x8b45('0x52'),_0xf1ab37['value']);logger[_0x8b45('0x60')](_0x8b45('0x61'),_0x560c51);if(!_[_0x8b45('0x62')](_0xf1ab37[_0x8b45('0x4f')])&&fs[_0x8b45('0x54')](_0x560c51)){logger['info'](_0x8b45('0x63')+_0x560c51+_0x8b45('0x64'));fs[_0x8b45('0x65')](_0x560c51);}_0x560c51=_0x560c51+'.cypher';if(!_['isNil'](_0xf1ab37[_0x8b45('0x4f')])&&fs['existsSync'](_0x560c51)){logger[_0x8b45('0x60')]('File:\x20\x22'+_0x560c51+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x560c51);}return _0xf1ab37;})[_0x8b45('0x23')](function(_0x4df581){if(!_0x4df581)throw new InternalError();return _0x4df581[_0x8b45('0x24')]();})[_0x8b45('0x23')](function(){_0x239330['status'](0xcc)[_0x8b45('0x18')]();})[_0x8b45('0x43')](handleError(_0x239330,null));};
\ No newline at end of file
+var _0x2bd8=['unlink','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','index','ScreenRecording','rawAttributes','type','model','differenceBy','map','name','format','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','include','rows','catch','show','params','find','create','body','duration','createdAt','closedAt','value','../../components/encryptor','uniqueid','%s.cypher','secrets','recording','join','root','server/files/screen_recordings','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','download','extname'];(function(_0x58e2b2,_0x48d744){var _0x3d7cee=function(_0x34efc2){while(--_0x34efc2){_0x58e2b2['push'](_0x58e2b2['shift']());}};_0x3d7cee(++_0x48d744);}(_0x2bd8,0x130));var _0x82bd=function(_0x4e41a8,_0x24d5f7){_0x4e41a8=_0x4e41a8-0x0;var _0x5250ba=_0x2bd8[_0x4e41a8];return _0x5250ba;};'use strict';var emlformat=require(_0x82bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x82bd('0x1'));var jsonpatch=require(_0x82bd('0x2'));var rp=require(_0x82bd('0x3'));var moment=require(_0x82bd('0x4'));var BPromise=require(_0x82bd('0x5'));var Mustache=require(_0x82bd('0x6'));var util=require(_0x82bd('0x7'));var path=require('path');var sox=require(_0x82bd('0x8'));var csv=require(_0x82bd('0x9'));var ejs=require(_0x82bd('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x82bd('0xb'));var squel=require(_0x82bd('0xc'));var crypto=require(_0x82bd('0xd'));var jsforce=require(_0x82bd('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x82bd('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x82bd('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x82bd('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x82bd('0x11'));var config=require(_0x82bd('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x82bd('0x13'))['db'];function respondWithStatusCode(_0x5f1ab9,_0xfaccf7){_0xfaccf7=_0xfaccf7||0xcc;return function(_0x51e17e){if(_0x51e17e){return _0x5f1ab9[_0x82bd('0x14')](_0xfaccf7);}return _0x5f1ab9[_0x82bd('0x15')](_0xfaccf7)[_0x82bd('0x16')]();};}function respondWithResult(_0x2ca530,_0x58d82b){_0x58d82b=_0x58d82b||0xc8;return function(_0x446ffc){if(_0x446ffc){return _0x2ca530[_0x82bd('0x15')](_0x58d82b)['json'](_0x446ffc);}};}function respondWithFilteredResult(_0x3667ef,_0x4db39d){return function(_0x35dd09){if(_0x35dd09){var _0x433e7d=typeof _0x4db39d[_0x82bd('0x17')]===_0x82bd('0x18')&&typeof _0x4db39d[_0x82bd('0x19')]===_0x82bd('0x18');var _0x387d21=_0x35dd09[_0x82bd('0x1a')];var _0x31a350=_0x433e7d?0x0:_0x4db39d[_0x82bd('0x17')];var _0x390107=_0x433e7d?_0x35dd09[_0x82bd('0x1a')]:_0x4db39d[_0x82bd('0x17')]+_0x4db39d[_0x82bd('0x19')];var _0x4a1e62;if(_0x390107>=_0x387d21){_0x390107=_0x387d21;_0x4a1e62=0xc8;}else{_0x4a1e62=0xce;}_0x3667ef['status'](_0x4a1e62);return _0x3667ef[_0x82bd('0x1b')](_0x82bd('0x1c'),_0x31a350+'-'+_0x390107+'/'+_0x387d21)[_0x82bd('0x1d')](_0x35dd09);}return null;};}function patchUpdates(_0xc9fcdf){return function(_0x34899b){try{jsonpatch[_0x82bd('0x1e')](_0x34899b,_0xc9fcdf,!![]);}catch(_0x2c1810){return BPromise[_0x82bd('0x1f')](_0x2c1810);}return _0x34899b[_0x82bd('0x20')]();};}function saveUpdates(_0x3291cd,_0x2caa29){return function(_0x177025){if(_0x177025){return _0x177025[_0x82bd('0x21')](_0x3291cd)[_0x82bd('0x22')](function(_0x3d9f03){return _0x3d9f03;});}return null;};}function removeEntity(_0x2d9d95,_0x13a42a){return function(_0x3b6b93){if(_0x3b6b93){return _0x3b6b93[_0x82bd('0x23')]()['then'](function(){_0x2d9d95['status'](0xcc)[_0x82bd('0x16')]();});}};}function handleEntityNotFound(_0x436ecd,_0x1cb292){return function(_0x3eb6a5){if(!_0x3eb6a5){_0x436ecd[_0x82bd('0x14')](0x194);}return _0x3eb6a5;};}function handleError(_0x10d101,_0x3c7751){_0x3c7751=_0x3c7751||0x1f4;return function(_0xbef23b){logger[_0x82bd('0x24')](_0xbef23b[_0x82bd('0x25')]);if(_0xbef23b['name']){delete _0xbef23b['name'];}_0x10d101['status'](_0x3c7751)['send'](_0xbef23b);};}exports[_0x82bd('0x26')]=function(_0x52bcd8,_0x351d3d){var _0x190bca={},_0x363ef9={},_0x50585e={'count':0x0,'rows':[]};var _0x516c6d=_['map'](db[_0x82bd('0x27')][_0x82bd('0x28')],function(_0x40884f){return{'name':_0x40884f['fieldName'],'type':_0x40884f[_0x82bd('0x29')]['key']};});_0x363ef9[_0x82bd('0x2a')]=_[_0x82bd('0x2b')](_[_0x82bd('0x2c')](_0x516c6d,_0x82bd('0x2d')),[_0x82bd('0x2e')]);_0x363ef9[_0x82bd('0x2f')]=_['keys'](_0x52bcd8[_0x82bd('0x2f')]);_0x363ef9[_0x82bd('0x30')]=_[_0x82bd('0x31')](_0x363ef9['model'],_0x363ef9[_0x82bd('0x2f')]);_0x190bca['attributes']=_['intersection'](_0x363ef9[_0x82bd('0x2a')],qs[_0x82bd('0x32')](_0x52bcd8[_0x82bd('0x2f')][_0x82bd('0x32')]));_0x190bca[_0x82bd('0x33')]=_0x190bca[_0x82bd('0x33')][_0x82bd('0x34')]?_0x190bca[_0x82bd('0x33')]:_0x363ef9[_0x82bd('0x2a')];if(!_0x52bcd8[_0x82bd('0x2f')][_0x82bd('0x35')](_0x82bd('0x36'))){_0x190bca[_0x82bd('0x19')]=qs[_0x82bd('0x19')](_0x52bcd8[_0x82bd('0x2f')][_0x82bd('0x19')]);_0x190bca[_0x82bd('0x17')]=qs['offset'](_0x52bcd8['query']['offset']);}_0x190bca[_0x82bd('0x37')]=qs[_0x82bd('0x38')](_0x52bcd8['query'][_0x82bd('0x38')]);_0x190bca['where']=qs['filters'](_['pick'](_0x52bcd8[_0x82bd('0x2f')],_0x363ef9[_0x82bd('0x30')]),_0x516c6d);if(_0x52bcd8[_0x82bd('0x2f')][_0x82bd('0x39')]){_0x190bca[_0x82bd('0x3a')]=_['merge'](_0x190bca['where'],{'$or':_['map'](_0x516c6d,function(_0x64bc54){if(_0x64bc54['type']!=='VIRTUAL'){var _0xba38a4={};_0xba38a4[_0x64bc54[_0x82bd('0x2d')]]={'$like':'%'+_0x52bcd8[_0x82bd('0x2f')][_0x82bd('0x39')]+'%'};return _0xba38a4;}})});}_0x190bca=_[_0x82bd('0x3b')]({},_0x190bca,_0x52bcd8[_0x82bd('0x3c')]);var _0x65335b={'where':_0x190bca[_0x82bd('0x3a')]};return db[_0x82bd('0x27')]['count'](_0x65335b)['then'](function(_0xe210f4){_0x50585e[_0x82bd('0x1a')]=_0xe210f4;if(_0x52bcd8['query']['includeAll']){_0x190bca[_0x82bd('0x3d')]=[{'all':!![]}];}return db[_0x82bd('0x27')]['findAll'](_0x190bca);})[_0x82bd('0x22')](function(_0x21868d){_0x50585e[_0x82bd('0x3e')]=_0x21868d;return _0x50585e;})[_0x82bd('0x22')](respondWithFilteredResult(_0x351d3d,_0x190bca))[_0x82bd('0x3f')](handleError(_0x351d3d,null));};exports[_0x82bd('0x40')]=function(_0x2a18c3,_0x2c429d){var _0x21d7d4={'raw':![],'where':{'id':_0x2a18c3[_0x82bd('0x41')]['id']}},_0x239d48={};_0x239d48[_0x82bd('0x2a')]=_['keys'](db[_0x82bd('0x27')][_0x82bd('0x28')]);_0x239d48['query']=_['keys'](_0x2a18c3[_0x82bd('0x2f')]);_0x239d48[_0x82bd('0x30')]=_[_0x82bd('0x31')](_0x239d48[_0x82bd('0x2a')],_0x239d48[_0x82bd('0x2f')]);_0x21d7d4['attributes']=_['intersection'](_0x239d48[_0x82bd('0x2a')],qs[_0x82bd('0x32')](_0x2a18c3['query'][_0x82bd('0x32')]));_0x21d7d4['attributes']=_0x21d7d4[_0x82bd('0x33')][_0x82bd('0x34')]?_0x21d7d4['attributes']:_0x239d48[_0x82bd('0x2a')];if(_0x2a18c3[_0x82bd('0x2f')]['includeAll']){_0x21d7d4['include']=[{'all':!![]}];}_0x21d7d4=_[_0x82bd('0x3b')]({},_0x21d7d4,_0x2a18c3['options']);return db[_0x82bd('0x27')][_0x82bd('0x42')](_0x21d7d4)[_0x82bd('0x22')](handleEntityNotFound(_0x2c429d,null))[_0x82bd('0x22')](respondWithResult(_0x2c429d,null))['catch'](handleError(_0x2c429d,null));};exports['create']=function(_0x1852f2,_0x5a0ca6){return db['ScreenRecording'][_0x82bd('0x43')](_0x1852f2[_0x82bd('0x44')],{})[_0x82bd('0x22')](respondWithResult(_0x5a0ca6,0xc9))['catch'](handleError(_0x5a0ca6,null));};exports[_0x82bd('0x21')]=function(_0x92ba88,_0x1db61b){if(_0x92ba88[_0x82bd('0x44')]['id']){delete _0x92ba88[_0x82bd('0x44')]['id'];}delete _0x92ba88[_0x82bd('0x44')][_0x82bd('0x45')];delete _0x92ba88[_0x82bd('0x44')][_0x82bd('0x46')];delete _0x92ba88[_0x82bd('0x44')][_0x82bd('0x47')];delete _0x92ba88[_0x82bd('0x44')][_0x82bd('0x48')];return db['ScreenRecording'][_0x82bd('0x42')]({'where':{'id':_0x92ba88[_0x82bd('0x41')]['id']}})['then'](handleEntityNotFound(_0x1db61b,null))[_0x82bd('0x22')](saveUpdates(_0x92ba88[_0x82bd('0x44')],null))[_0x82bd('0x22')](respondWithResult(_0x1db61b,null))[_0x82bd('0x3f')](handleError(_0x1db61b,null));};exports['describe']=function(_0x5b4fd2,_0x37d1f0){return db['ScreenRecording']['describe']()[_0x82bd('0x22')](respondWithResult(_0x37d1f0,null))['catch'](handleError(_0x37d1f0,null));};exports['download']=function(_0x31b41d,_0x3f94f3,_0x3dbee7){var _0xcfb5ef=require(_0x82bd('0x49'));var _0x1a7402=![];var _0x417c29={};if(_0x31b41d[_0x82bd('0x2f')][_0x82bd('0x29')]&&_0x31b41d[_0x82bd('0x2f')][_0x82bd('0x29')]===_0x82bd('0x4a')){_0x417c29[_0x82bd('0x4a')]=_0x31b41d[_0x82bd('0x41')]['id'];}else{_0x417c29['id']=_0x31b41d[_0x82bd('0x41')]['id'];}return db['ScreenRecording'][_0x82bd('0x42')]({'where':_0x417c29,'attributes':['id',_0x82bd('0x48')],'raw':!![]})[_0x82bd('0x22')](handleEntityNotFound(_0x3f94f3,null))[_0x82bd('0x22')](function(_0x9bf8fa){if(_0x9bf8fa){var _0x5466d9=path['join'](config['root'],'server/files/screen_recordings',_0x9bf8fa[_0x82bd('0x48')]);var _0x2cc6ea=util[_0x82bd('0x2e')](_0x82bd('0x4b'),_0x5466d9);if(fs['existsSync'](_0x2cc6ea)){_0x1a7402=!![];return _0xcfb5ef['decryptFile'](_0x2cc6ea,_0x5466d9,config[_0x82bd('0x4c')][_0x82bd('0x4d')])[_0x82bd('0x22')](function(){return _0x9bf8fa;});}return _0x9bf8fa;}})['then'](function(_0x2657bc){if(_0x2657bc){var _0x2252ef=path[_0x82bd('0x4e')](config[_0x82bd('0x4f')],_0x82bd('0x50'),_0x2657bc[_0x82bd('0x48')]);if(!fs[_0x82bd('0x51')](_0x2252ef)){throw new db[(_0x82bd('0x52'))][(_0x82bd('0x53'))](_0x82bd('0x54'));}if(_0x2657bc[_0x82bd('0x55')]){return _0x3f94f3[_0x82bd('0x56')](_0x2252ef,_0x2657bc[_0x82bd('0x55')]+path[_0x82bd('0x57')](_0x2252ef),function(){if(_0x1a7402){fs[_0x82bd('0x58')](_0x2252ef);}});}else{return _0x3f94f3[_0x82bd('0x56')](_0x2252ef,function(_0x124ca4){if(_0x1a7402){fs[_0x82bd('0x58')](_0x2252ef);}});}}})['catch'](function(_0x566b01){if(_0x566b01['message']==='ScreenRecording\x20not\x20found'){_0x3f94f3[_0x82bd('0x15')](0x194)['send'](_0x82bd('0x59'));}else{return handleError(_0x3f94f3,null);}});};exports[_0x82bd('0x23')]=function(_0x3ee7c7,_0x409b06){return db[_0x82bd('0x27')][_0x82bd('0x42')]({'where':{'id':_0x3ee7c7[_0x82bd('0x41')]['id']}})[_0x82bd('0x22')](function(_0x40d6cf){if(_[_0x82bd('0x5a')](_0x40d6cf)){throw new ReferenceError(_0x82bd('0x5b'));}return _0x40d6cf;})['then'](function(_0x4c54f0){var _0x419965=path[_0x82bd('0x4e')](config['root'],'server/files/screen_recordings',_0x4c54f0[_0x82bd('0x48')]);logger[_0x82bd('0x5c')](_0x82bd('0x5d'),_0x419965);if(!_[_0x82bd('0x5a')](_0x4c54f0['value'])&&fs[_0x82bd('0x51')](_0x419965)){logger['info'](_0x82bd('0x5e')+_0x419965+_0x82bd('0x5f'));fs['unlinkSync'](_0x419965);}_0x419965=_0x419965+_0x82bd('0x60');if(!_[_0x82bd('0x5a')](_0x4c54f0[_0x82bd('0x48')])&&fs[_0x82bd('0x51')](_0x419965)){logger['info'](_0x82bd('0x5e')+_0x419965+_0x82bd('0x5f'));fs[_0x82bd('0x61')](_0x419965);}return _0x4c54f0;})[_0x82bd('0x22')](function(_0x243fba){if(!_0x243fba)throw new InternalError();return _0x243fba[_0x82bd('0x23')]();})[_0x82bd('0x22')](function(){_0x409b06[_0x82bd('0x15')](0xcc)[_0x82bd('0x16')]();})['catch'](handleError(_0x409b06,null));};
\ No newline at end of file
index 8dfafaf..5d022ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddd7=['screen_recordings','interactionid','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording'];(function(_0x18f1e6,_0x521510){var _0x5dcd46=function(_0x5567da){while(--_0x5567da){_0x18f1e6['push'](_0x18f1e6['shift']());}};_0x5dcd46(++_0x521510);}(_0xddd7,0xf0));var _0x7ddd=function(_0x22c53b,_0x408b9c){_0x22c53b=_0x22c53b-0x0;var _0x45246d=_0xddd7[_0x22c53b];return _0x45246d;};'use strict';var _=require('lodash');var util=require(_0x7ddd('0x0'));var logger=require('../../config/logger')(_0x7ddd('0x1'));var moment=require(_0x7ddd('0x2'));var BPromise=require(_0x7ddd('0x3'));var rp=require(_0x7ddd('0x4'));var fs=require('fs');var path=require(_0x7ddd('0x5'));var rimraf=require(_0x7ddd('0x6'));var config=require(_0x7ddd('0x7'));var attributes=require(_0x7ddd('0x8'));module[_0x7ddd('0x9')]=function(_0x541554,_0x3ab9e7){return _0x541554[_0x7ddd('0xa')](_0x7ddd('0xb'),attributes,{'tableName':_0x7ddd('0xc'),'paranoid':![],'indexes':[{'name':_0x7ddd('0xd'),'fields':[_0x7ddd('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8285=['request-promise','path','../../config/environment','./screenRecording.attributes','exports','define','screen_recordings','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0x8285,0x180));var _0x5828=function(_0xd56523,_0x3a5fdc){_0xd56523=_0xd56523-0x0;var _0x5b05ce=_0x8285[_0xd56523];return _0x5b05ce;};'use strict';var _=require(_0x5828('0x0'));var util=require(_0x5828('0x1'));var logger=require(_0x5828('0x2'))(_0x5828('0x3'));var moment=require(_0x5828('0x4'));var BPromise=require(_0x5828('0x5'));var rp=require(_0x5828('0x6'));var fs=require('fs');var path=require(_0x5828('0x7'));var rimraf=require('rimraf');var config=require(_0x5828('0x8'));var attributes=require(_0x5828('0x9'));module[_0x5828('0xa')]=function(_0x4feb85,_0x50c3bf){return _0x4feb85[_0x5828('0xb')]('ScreenRecording',attributes,{'tableName':_0x5828('0xc'),'paranoid':![],'indexes':[{'name':'interactionid','fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index 4ade25f..57556e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c71=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x40802a,_0xafa82f){var _0x1d80fe=function(_0x5d0364){while(--_0x5d0364){_0x40802a['push'](_0x40802a['shift']());}};_0x1d80fe(++_0xafa82f);}(_0x3c71,0x8e));var _0x13c7=function(_0x28e35f,_0x4e6f5d){_0x28e35f=_0x28e35f-0x0;var _0x4b3848=_0x3c71[_0x28e35f];return _0x4b3848;};'use strict';var _=require(_0x13c7('0x0'));var util=require(_0x13c7('0x1'));var moment=require(_0x13c7('0x2'));var BPromise=require('bluebird');var rs=require(_0x13c7('0x3'));var fs=require('fs');var Redis=require(_0x13c7('0x4'));var db=require(_0x13c7('0x5'))['db'];var utils=require(_0x13c7('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x13c7('0x7'));var jayson=require(_0x13c7('0x8'));var client=jayson[_0x13c7('0x9')][_0x13c7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfc5066,_0x374db7,_0x178481){return new BPromise(function(_0x196a00,_0x1fbf9b){return client[_0x13c7('0xb')](_0xfc5066,_0x178481)[_0x13c7('0xc')](function(_0x3a1c35){logger[_0x13c7('0xd')](_0x13c7('0xe'),_0x374db7,'request\x20sent');logger['debug']('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x374db7,_0x13c7('0xf'),JSON[_0x13c7('0x10')](_0x3a1c35));if(_0x3a1c35['error']){if(_0x3a1c35['error'][_0x13c7('0x11')]===0x1f4){logger[_0x13c7('0x12')](_0x13c7('0xe'),_0x374db7,_0x3a1c35['error'][_0x13c7('0x13')]);return _0x1fbf9b(_0x3a1c35[_0x13c7('0x12')][_0x13c7('0x13')]);}logger['error'](_0x13c7('0xe'),_0x374db7,_0x3a1c35[_0x13c7('0x12')][_0x13c7('0x13')]);return _0x196a00(_0x3a1c35['error'][_0x13c7('0x13')]);}else{logger['info'](_0x13c7('0xe'),_0x374db7,_0x13c7('0xf'));_0x196a00(_0x3a1c35['result']['message']);}})[_0x13c7('0x14')](function(_0x561ce5){logger[_0x13c7('0x12')](_0x13c7('0xe'),_0x374db7,_0x561ce5);_0x1fbf9b(_0x561ce5);});});}
\ No newline at end of file
+var _0xb335=['debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','ScreenRecording,\x20%s,\x20%s','request\x20sent'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb335,0x1e9));var _0x5b33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb335[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5b33('0x0'));var util=require(_0x5b33('0x1'));var moment=require(_0x5b33('0x2'));var BPromise=require(_0x5b33('0x3'));var rs=require(_0x5b33('0x4'));var fs=require('fs');var Redis=require(_0x5b33('0x5'));var db=require(_0x5b33('0x6'))['db'];var utils=require(_0x5b33('0x7'));var logger=require(_0x5b33('0x8'))(_0x5b33('0x9'));var config=require('../../config/environment');var jayson=require(_0x5b33('0xa'));var client=jayson[_0x5b33('0xb')][_0x5b33('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x102df7,_0x339b5c,_0x499e22){return new BPromise(function(_0x3de4a4,_0x4841ad){return client[_0x5b33('0xd')](_0x102df7,_0x499e22)['then'](function(_0x291d7f){logger[_0x5b33('0xe')](_0x5b33('0xf'),_0x339b5c,_0x5b33('0x10'));logger[_0x5b33('0x11')](_0x5b33('0x12'),_0x339b5c,_0x5b33('0x10'),JSON[_0x5b33('0x13')](_0x291d7f));if(_0x291d7f[_0x5b33('0x14')]){if(_0x291d7f['error'][_0x5b33('0x15')]===0x1f4){logger[_0x5b33('0x14')](_0x5b33('0xf'),_0x339b5c,_0x291d7f[_0x5b33('0x14')]['message']);return _0x4841ad(_0x291d7f[_0x5b33('0x14')][_0x5b33('0x16')]);}logger[_0x5b33('0x14')](_0x5b33('0xf'),_0x339b5c,_0x291d7f[_0x5b33('0x14')][_0x5b33('0x16')]);return _0x3de4a4(_0x291d7f[_0x5b33('0x14')][_0x5b33('0x16')]);}else{logger[_0x5b33('0xe')](_0x5b33('0xf'),_0x339b5c,_0x5b33('0x10'));_0x3de4a4(_0x291d7f['result'][_0x5b33('0x16')]);}})['catch'](function(_0x111c38){logger[_0x5b33('0x14')](_0x5b33('0xf'),_0x339b5c,_0x111c38);_0x4841ad(_0x111c38);});});}
\ No newline at end of file
index b18ee65..39c9778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dd3=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/now','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','originalname','post','single','file','addLogo','logologin','extname','preferred','addPreferred','favicon','addFavicon','put','isAuthenticated','update','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x4dce0c,_0x31fd6b){var _0x1d8bc8=function(_0x2a921c){while(--_0x2a921c){_0x4dce0c['push'](_0x4dce0c['shift']());}};_0x1d8bc8(++_0x31fd6b);}(_0x9dd3,0x108));var _0x39dd=function(_0x302622,_0x4c605b){_0x302622=_0x302622-0x0;var _0x1ea958=_0x9dd3[_0x302622];return _0x1ea958;};'use strict';var multer=require(_0x39dd('0x0'));var util=require(_0x39dd('0x1'));var path=require('path');var timeout=require(_0x39dd('0x2'));var express=require(_0x39dd('0x3'));var router=express[_0x39dd('0x4')]();var fs_extra=require(_0x39dd('0x5'));var auth=require(_0x39dd('0x6'));var interaction=require(_0x39dd('0x7'));var config=require(_0x39dd('0x8'));var controller=require('./setting.controller');router[_0x39dd('0x9')]('/',auth['isAuthenticated'](),controller[_0x39dd('0xa')]);router['get'](_0x39dd('0xb'),controller['getDate']);router[_0x39dd('0x9')](_0x39dd('0xc'),controller[_0x39dd('0xd')]);router[_0x39dd('0x9')](_0x39dd('0xe'),controller[_0x39dd('0xf')]);router['get'](_0x39dd('0x10'),controller[_0x39dd('0x11')]);router[_0x39dd('0x9')](_0x39dd('0x12'),controller[_0x39dd('0x13')]);router[_0x39dd('0x9')](_0x39dd('0x14'),controller[_0x39dd('0x15')]);router[_0x39dd('0x9')](_0x39dd('0x16'),controller[_0x39dd('0x17')]);var upload=multer({'storage':multer[_0x39dd('0x18')]({'destination':function(_0x34e74b,_0x514c3c,_0x187ada){_0x187ada(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],_0x39dd('0x1b')));},'filename':function(_0x48d442,_0x2d5df6,_0x312396){_0x312396(null,util[_0x39dd('0x1c')](_0x39dd('0x1d'),_0x39dd('0x1e'),path['extname'](_0x2d5df6[_0x39dd('0x1f')])));}})});router[_0x39dd('0x20')]('/:id/logo',upload[_0x39dd('0x21')](_0x39dd('0x22')),controller[_0x39dd('0x23')]);var upload=multer({'storage':multer[_0x39dd('0x18')]({'destination':function(_0x4b4c51,_0xee0f30,_0x343b63){_0x343b63(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],'server/files/images/logos/'));},'filename':function(_0x4602c6,_0x3c7aa9,_0x1b30da){_0x1b30da(null,util['format']('%s%s',_0x39dd('0x24'),path[_0x39dd('0x25')](_0x3c7aa9[_0x39dd('0x1f')])));}})});router[_0x39dd('0x20')](_0x39dd('0x10'),upload[_0x39dd('0x21')]('file'),controller['addLogoLogin']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x875035,_0x34cee4,_0x505ba7){_0x505ba7(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],_0x39dd('0x1b')));},'filename':function(_0x3d46ca,_0x2ed939,_0x382065){_0x382065(null,util[_0x39dd('0x1c')]('%s%s',_0x39dd('0x26'),path[_0x39dd('0x25')](_0x2ed939[_0x39dd('0x1f')])));}})});router[_0x39dd('0x20')](_0x39dd('0x14'),upload[_0x39dd('0x21')](_0x39dd('0x22')),controller[_0x39dd('0x27')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x24e187,_0x1969d7,_0x453684){_0x453684(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],_0x39dd('0x1b')));},'filename':function(_0x26209b,_0x9286a4,_0x43f9a1){_0x43f9a1(null,util['format'](_0x39dd('0x1d'),_0x39dd('0x28'),path[_0x39dd('0x25')](_0x9286a4['originalname'])));}})});router[_0x39dd('0x20')]('/:id/favicon',upload[_0x39dd('0x21')](_0x39dd('0x22')),controller[_0x39dd('0x29')]);router[_0x39dd('0x2a')]('/:id',auth[_0x39dd('0x2b')](),controller[_0x39dd('0x2c')]);module['exports']=router;
\ No newline at end of file
+var _0xf21b=['file','addLogo','logologin','post','join','%s%s','preferred','addPreferred','favicon','addFavicon','put','isAuthenticated','update','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','get','getDate','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','gdpr','/:id/preferred','getPreferred','/:id/favicon','diskStorage','root','server/files/images/logos/','format','logo','extname','originalname','single'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf21b,0x10a));var _0xbf21=function(_0x31ef6b,_0x46c3eb){_0x31ef6b=_0x31ef6b-0x0;var _0x5679e2=_0xf21b[_0x31ef6b];return _0x5679e2;};'use strict';var multer=require(_0xbf21('0x0'));var util=require(_0xbf21('0x1'));var path=require(_0xbf21('0x2'));var timeout=require('connect-timeout');var express=require(_0xbf21('0x3'));var router=express[_0xbf21('0x4')]();var fs_extra=require(_0xbf21('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbf21('0x6'));var config=require(_0xbf21('0x7'));var controller=require(_0xbf21('0x8'));router[_0xbf21('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xbf21('0x9')]('/now',controller[_0xbf21('0xa')]);router['get'](_0xbf21('0xb'),controller[_0xbf21('0xc')]);router[_0xbf21('0x9')](_0xbf21('0xd'),controller['getLogo']);router[_0xbf21('0x9')](_0xbf21('0xe'),controller[_0xbf21('0xf')]);router[_0xbf21('0x9')]('/:id/gdpr',controller[_0xbf21('0x10')]);router[_0xbf21('0x9')](_0xbf21('0x11'),controller[_0xbf21('0x12')]);router['get'](_0xbf21('0x13'),controller['getFavicon']);var upload=multer({'storage':multer[_0xbf21('0x14')]({'destination':function(_0x5b548d,_0x1c325c,_0x1aedd5){_0x1aedd5(null,path['join'](config[_0xbf21('0x15')],_0xbf21('0x16')));},'filename':function(_0x4a7efc,_0x13bd00,_0x467a21){_0x467a21(null,util[_0xbf21('0x17')]('%s%s',_0xbf21('0x18'),path[_0xbf21('0x19')](_0x13bd00[_0xbf21('0x1a')])));}})});router['post'](_0xbf21('0xd'),upload[_0xbf21('0x1b')](_0xbf21('0x1c')),controller[_0xbf21('0x1d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x29ec3e,_0x3acde6,_0x558411){_0x558411(null,path['join'](config[_0xbf21('0x15')],_0xbf21('0x16')));},'filename':function(_0x542a9e,_0x3e9f12,_0x28f70c){_0x28f70c(null,util[_0xbf21('0x17')]('%s%s',_0xbf21('0x1e'),path[_0xbf21('0x19')](_0x3e9f12[_0xbf21('0x1a')])));}})});router[_0xbf21('0x1f')](_0xbf21('0xe'),upload[_0xbf21('0x1b')](_0xbf21('0x1c')),controller['addLogoLogin']);var upload=multer({'storage':multer[_0xbf21('0x14')]({'destination':function(_0x20bbb7,_0x50a5f5,_0x157d75){_0x157d75(null,path[_0xbf21('0x20')](config[_0xbf21('0x15')],_0xbf21('0x16')));},'filename':function(_0x207058,_0x2de6a6,_0x5255f2){_0x5255f2(null,util[_0xbf21('0x17')](_0xbf21('0x21'),_0xbf21('0x22'),path[_0xbf21('0x19')](_0x2de6a6[_0xbf21('0x1a')])));}})});router['post'](_0xbf21('0x11'),upload['single'](_0xbf21('0x1c')),controller[_0xbf21('0x23')]);var upload=multer({'storage':multer[_0xbf21('0x14')]({'destination':function(_0x2f945c,_0x1ae7ed,_0x450616){_0x450616(null,path[_0xbf21('0x20')](config[_0xbf21('0x15')],_0xbf21('0x16')));},'filename':function(_0x10f3cb,_0x341214,_0x131ffe){_0x131ffe(null,util[_0xbf21('0x17')](_0xbf21('0x21'),_0xbf21('0x24'),path[_0xbf21('0x19')](_0x341214[_0xbf21('0x1a')])));}})});router['post']('/:id/favicon',upload[_0xbf21('0x1b')](_0xbf21('0x1c')),controller[_0xbf21('0x25')]);router[_0xbf21('0x26')]('/:id',auth[_0xbf21('0x27')](),controller[_0xbf21('0x28')]);module[_0xbf21('0x29')]=router;
\ No newline at end of file
index e3f064e..da24894 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(_0x74b053,_0x4a5f24){var _0x365274=function(_0x4ac7c4){while(--_0x4ac7c4){_0x74b053['push'](_0x74b053['shift']());}};_0x365274(++_0x4a5f24);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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(_0x35cd63,_0x25dc89){var _0xd72f9d=function(_0x2d8308){while(--_0x2d8308){_0x35cd63['push'](_0x35cd63['shift']());}};_0xd72f9d(++_0x25dc89);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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 cdf8a73..4edba2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3ff=['where','filters','pick','filter','merge','options','include','catch','show','params','keys','includeAll','body','find','addLogo','file','filename','addLogoLogin','getLicense','logo','loginLogo','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','root','join','toLower','default_logo.svg','default','upperFirst','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','server/files/images/logos','preferred','default_loginLogo.svg','custom','existsSync','securePassword','getPreferred','favicon','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','info','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','Setting,\x20%s,\x20%s','message','result','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x2955a9,_0x5afb3f){var _0x584d31=function(_0x4bb60d){while(--_0x4bb60d){_0x2955a9['push'](_0x2955a9['shift']());}};_0x584d31(++_0x5afb3f);}(_0xf3ff,0xae));var _0xff3f=function(_0x45ed8c,_0x370388){_0x45ed8c=_0x45ed8c-0x0;var _0x540f97=_0xf3ff[_0x45ed8c];return _0x540f97;};'use strict';var emlformat=require(_0xff3f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff3f('0x1'));var jsonpatch=require(_0xff3f('0x2'));var rp=require(_0xff3f('0x3'));var moment=require(_0xff3f('0x4'));var BPromise=require(_0xff3f('0x5'));var Mustache=require(_0xff3f('0x6'));var util=require('util');var path=require(_0xff3f('0x7'));var sox=require(_0xff3f('0x8'));var csv=require(_0xff3f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xff3f('0xa'));var _=require(_0xff3f('0xb'));var squel=require('squel');var crypto=require(_0xff3f('0xc'));var jsforce=require(_0xff3f('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xff3f('0xe'));var Redis=require('ioredis');var authService=require(_0xff3f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xff3f('0x10'));var hardwareService=require(_0xff3f('0x11'));var logger=require(_0xff3f('0x12'))(_0xff3f('0x13'));var utils=require(_0xff3f('0x14'));var config=require(_0xff3f('0x15'));var licenseUtil=require(_0xff3f('0x16'));var db=require(_0xff3f('0x17'))['db'];var jayson=require(_0xff3f('0x18'));var client=jayson[_0xff3f('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a09af,_0x30d2fe,_0x273f9b,_0x32f887){return new BPromise(function(_0x4b3409,_0x54b52c){var _0x3c2727=_0x32f887||client;return _0x3c2727['request'](_0x4a09af,_0x273f9b)['then'](function(_0x2a7c79){logger[_0xff3f('0x1a')]('Setting,\x20%s,\x20%s',_0x30d2fe,_0xff3f('0x1b'));logger['debug'](_0xff3f('0x1c'),_0x30d2fe,'request\x20sent',JSON[_0xff3f('0x1d')](_0x2a7c79));if(_0x2a7c79[_0xff3f('0x1e')]){if(_0x2a7c79[_0xff3f('0x1e')]['code']===0x1f4){logger[_0xff3f('0x1e')](_0xff3f('0x1f'),_0x30d2fe,_0x2a7c79['error'][_0xff3f('0x20')]);return _0x54b52c(_0x2a7c79[_0xff3f('0x1e')][_0xff3f('0x20')]);}logger[_0xff3f('0x1e')](_0xff3f('0x1f'),_0x30d2fe,_0x2a7c79[_0xff3f('0x1e')][_0xff3f('0x20')]);return _0x4b3409(_0x2a7c79[_0xff3f('0x1e')][_0xff3f('0x20')]);}else{logger[_0xff3f('0x1a')](_0xff3f('0x1f'),_0x30d2fe,_0xff3f('0x1b'));_0x4b3409(_0x2a7c79[_0xff3f('0x21')][_0xff3f('0x20')]);}})['catch'](function(_0x552113){logger[_0xff3f('0x1e')]('Setting,\x20%s,\x20%s',_0x30d2fe,_0x552113);_0x54b52c(_0x552113);});});}function respondWithStatusCode(_0x418316,_0x2bbbb2){_0x2bbbb2=_0x2bbbb2||0xcc;return function(_0x4dd74a){if(_0x4dd74a){return _0x418316[_0xff3f('0x22')](_0x2bbbb2);}return _0x418316['status'](_0x2bbbb2)[_0xff3f('0x23')]();};}function respondWithResult(_0x51b6bb,_0x20b234){_0x20b234=_0x20b234||0xc8;return function(_0x7b26a0){if(_0x7b26a0){return _0x51b6bb[_0xff3f('0x24')](_0x20b234)[_0xff3f('0x25')](_0x7b26a0);}};}function respondWithFilteredResult(_0x44fb87,_0x5d6a4e){return function(_0x579659){if(_0x579659){var _0x32addc=typeof _0x5d6a4e[_0xff3f('0x26')]===_0xff3f('0x27')&&typeof _0x5d6a4e[_0xff3f('0x28')]===_0xff3f('0x27');var _0x5e1d84=_0x579659[_0xff3f('0x29')];var _0x2dac57=_0x32addc?0x0:_0x5d6a4e['offset'];var _0x1f6d2a=_0x32addc?_0x579659[_0xff3f('0x29')]:_0x5d6a4e[_0xff3f('0x26')]+_0x5d6a4e[_0xff3f('0x28')];var _0x3bdbfa;if(_0x1f6d2a>=_0x5e1d84){_0x1f6d2a=_0x5e1d84;_0x3bdbfa=0xc8;}else{_0x3bdbfa=0xce;}_0x44fb87[_0xff3f('0x24')](_0x3bdbfa);return _0x44fb87[_0xff3f('0x2a')](_0xff3f('0x2b'),_0x2dac57+'-'+_0x1f6d2a+'/'+_0x5e1d84)[_0xff3f('0x25')](_0x579659);}return null;};}function patchUpdates(_0x183922){return function(_0x513871){try{jsonpatch[_0xff3f('0x2c')](_0x513871,_0x183922,!![]);}catch(_0x53d89e){return BPromise[_0xff3f('0x2d')](_0x53d89e);}return _0x513871[_0xff3f('0x2e')]();};}function saveUpdates(_0x42f420,_0x74b353){return function(_0x31e834){if(_0x31e834){return _0x31e834[_0xff3f('0x2f')](_0x42f420)[_0xff3f('0x30')](function(_0x1d746c){return _0x1d746c;});}return null;};}function removeEntity(_0x59402d,_0x57698c){return function(_0x3d50a5){if(_0x3d50a5){return _0x3d50a5[_0xff3f('0x31')]()[_0xff3f('0x30')](function(){_0x59402d[_0xff3f('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17e362,_0x46c712){return function(_0x90f0cf){if(!_0x90f0cf){_0x17e362['sendStatus'](0x194);}return _0x90f0cf;};}function handleError(_0x43153e,_0x3d8c48){_0x3d8c48=_0x3d8c48||0x1f4;return function(_0x300972){logger['error'](_0x300972[_0xff3f('0x32')]);if(_0x300972['name']){delete _0x300972[_0xff3f('0x33')];}_0x43153e[_0xff3f('0x24')](_0x3d8c48)[_0xff3f('0x34')](_0x300972);};}exports[_0xff3f('0x35')]=function(_0x32e640,_0x59dd93){var _0x521d6f={},_0x3f8710={},_0x48fda6={'count':0x0,'rows':[]};var _0x2d2893=_[_0xff3f('0x36')](db[_0xff3f('0x37')][_0xff3f('0x38')],function(_0xf172a){return{'name':_0xf172a[_0xff3f('0x39')],'type':_0xf172a[_0xff3f('0x3a')][_0xff3f('0x3b')]};});_0x3f8710[_0xff3f('0x3c')]=_[_0xff3f('0x36')](_0x2d2893,_0xff3f('0x33'));_0x3f8710[_0xff3f('0x3d')]=_['keys'](_0x32e640['query']);_0x3f8710['filters']=_[_0xff3f('0x3e')](_0x3f8710['model'],_0x3f8710['query']);_0x521d6f[_0xff3f('0x3f')]=_['intersection'](_0x3f8710[_0xff3f('0x3c')],qs[_0xff3f('0x40')](_0x32e640[_0xff3f('0x3d')][_0xff3f('0x40')]));_0x521d6f[_0xff3f('0x3f')]=_0x521d6f[_0xff3f('0x3f')][_0xff3f('0x41')]?_0x521d6f[_0xff3f('0x3f')]:_0x3f8710[_0xff3f('0x3c')];if(!_0x32e640[_0xff3f('0x3d')][_0xff3f('0x42')](_0xff3f('0x43'))){_0x521d6f[_0xff3f('0x28')]=qs['limit'](_0x32e640['query']['limit']);_0x521d6f[_0xff3f('0x26')]=qs[_0xff3f('0x26')](_0x32e640['query'][_0xff3f('0x26')]);}_0x521d6f[_0xff3f('0x44')]=qs[_0xff3f('0x45')](_0x32e640[_0xff3f('0x3d')]['sort']);_0x521d6f[_0xff3f('0x46')]=qs[_0xff3f('0x47')](_[_0xff3f('0x48')](_0x32e640[_0xff3f('0x3d')],_0x3f8710[_0xff3f('0x47')]),_0x2d2893);if(_0x32e640[_0xff3f('0x3d')][_0xff3f('0x49')]){_0x521d6f[_0xff3f('0x46')]=_['merge'](_0x521d6f[_0xff3f('0x46')],{'$or':_['map'](_0x2d2893,function(_0x2200f3){if(_0x2200f3[_0xff3f('0x3a')]!=='VIRTUAL'){var _0x23668c={};_0x23668c[_0x2200f3['name']]={'$like':'%'+_0x32e640[_0xff3f('0x3d')]['filter']+'%'};return _0x23668c;}})});}_0x521d6f=_[_0xff3f('0x4a')]({},_0x521d6f,_0x32e640[_0xff3f('0x4b')]);var _0x6604c={'where':_0x521d6f[_0xff3f('0x46')]};return db[_0xff3f('0x37')][_0xff3f('0x29')](_0x6604c)['then'](function(_0x5c0cd5){_0x48fda6[_0xff3f('0x29')]=_0x5c0cd5;if(_0x32e640[_0xff3f('0x3d')]['includeAll']){_0x521d6f[_0xff3f('0x4c')]=[{'all':!![]}];}return db[_0xff3f('0x37')]['findAll'](_0x521d6f);})[_0xff3f('0x30')](function(_0x5ed067){_0x48fda6['rows']=_0x5ed067;return _0x48fda6;})[_0xff3f('0x30')](respondWithFilteredResult(_0x59dd93,_0x521d6f))[_0xff3f('0x4d')](handleError(_0x59dd93,null));};exports[_0xff3f('0x4e')]=function(_0x4b03fa,_0x18e330){var _0x4af5a0={'raw':![],'where':{'id':_0x4b03fa[_0xff3f('0x4f')]['id']}},_0xec21bf={};_0xec21bf[_0xff3f('0x3c')]=_[_0xff3f('0x50')](db[_0xff3f('0x37')][_0xff3f('0x38')]);_0xec21bf['query']=_[_0xff3f('0x50')](_0x4b03fa[_0xff3f('0x3d')]);_0xec21bf['filters']=_[_0xff3f('0x3e')](_0xec21bf[_0xff3f('0x3c')],_0xec21bf[_0xff3f('0x3d')]);_0x4af5a0[_0xff3f('0x3f')]=_[_0xff3f('0x3e')](_0xec21bf[_0xff3f('0x3c')],qs[_0xff3f('0x40')](_0x4b03fa[_0xff3f('0x3d')][_0xff3f('0x40')]));_0x4af5a0[_0xff3f('0x3f')]=_0x4af5a0['attributes'][_0xff3f('0x41')]?_0x4af5a0[_0xff3f('0x3f')]:_0xec21bf[_0xff3f('0x3c')];if(_0x4b03fa['query'][_0xff3f('0x51')]){_0x4af5a0[_0xff3f('0x4c')]=[{'all':!![]}];}_0x4af5a0=_[_0xff3f('0x4a')]({},_0x4af5a0,_0x4b03fa[_0xff3f('0x4b')]);return db['Setting']['find'](_0x4af5a0)[_0xff3f('0x30')](handleEntityNotFound(_0x18e330,null))['then'](respondWithResult(_0x18e330,null))[_0xff3f('0x4d')](handleError(_0x18e330,null));};exports['update']=function(_0x4cf020,_0x58af52){if(_0x4cf020[_0xff3f('0x52')]['id']){delete _0x4cf020[_0xff3f('0x52')]['id'];}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x4cf020[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0x58af52,null))['then'](saveUpdates(_0x4cf020['body'],null))[_0xff3f('0x30')](respondWithResult(_0x58af52,null))['catch'](handleError(_0x58af52,null));};exports[_0xff3f('0x54')]=function(_0x487f24,_0xa3537,_0x3c20b3){if(_0x487f24[_0xff3f('0x55')]&&_0x487f24[_0xff3f('0x55')][_0xff3f('0x56')]){_0x487f24[_0xff3f('0x52')]['logo']=_0x487f24['file'][_0xff3f('0x56')];}return db[_0xff3f('0x37')]['find']({'where':{'id':_0x487f24[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0xa3537,null))[_0xff3f('0x30')](saveUpdates(_0x487f24[_0xff3f('0x52')],null))[_0xff3f('0x30')](respondWithResult(_0xa3537,null))[_0xff3f('0x4d')](handleError(_0xa3537,null));};exports[_0xff3f('0x57')]=function(_0x478885,_0x1b8a12,_0x5f22e0){if(_0x478885['file']&&_0x478885[_0xff3f('0x55')][_0xff3f('0x56')]){_0x478885[_0xff3f('0x52')]['loginLogo']=_0x478885['file'][_0xff3f('0x56')];}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x478885[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0x1b8a12,null))['then'](saveUpdates(_0x478885[_0xff3f('0x52')],null))['then'](respondWithResult(_0x1b8a12,null))['catch'](handleError(_0x1b8a12,null));};var utilLicense=require(_0xff3f('0x16'));exports['getLogo']=function(_0x1b5592,_0x4af2ed,_0x1a0a2e){var _0x13455c='server/files/images/logos';var _0x35dcf8={'custom':![]};return utilLicense[_0xff3f('0x58')]()[_0xff3f('0x30')](function(_0x1e474f){if(_0x1e474f){_0x35dcf8=_0x1e474f;}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x1b5592['params']['id']},'attributes':[_0xff3f('0x59'),_0xff3f('0x5a'),'preferred','favicon',_0xff3f('0x5b'),_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0x4af2ed,null))[_0xff3f('0x30')](function(_0x3a83ec){if(_0x3a83ec){var _0x14065a=_0x3a83ec[_0xff3f('0x59')]&&fs['existsSync'](path['join'](config[_0xff3f('0x5f')],_0x13455c,_['toLower'](_0x3a83ec['logo'])))?path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x13455c,_[_0xff3f('0x61')](_0x3a83ec[_0xff3f('0x59')])):path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x13455c,_[_0xff3f('0x61')](_0xff3f('0x62')));var _0x29f105=_0xff3f('0x63')+_[_0xff3f('0x64')](_0xff3f('0x59'));if(_0x3a83ec[_0x29f105]||!_0x35dcf8['custom']){_0x14065a=path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x13455c,_[_0xff3f('0x61')](_0xff3f('0x62')));}if(!fs['existsSync'](_0x14065a)){throw new db[(_0xff3f('0x65'))][(_0xff3f('0x66'))](_[_0xff3f('0x64')](_0xff3f('0x59'))+_0xff3f('0x67'));}return _0x4af2ed[_0xff3f('0x68')](_0x14065a);}})[_0xff3f('0x4d')](handleError(_0x4af2ed,null));};var utilLicense=require(_0xff3f('0x16'));exports[_0xff3f('0x69')]=function(_0x229148,_0x4f8043,_0x22cbf3){var _0x105a5f=_0xff3f('0x6a');var _0x284392={'custom':![]};return utilLicense[_0xff3f('0x58')]()[_0xff3f('0x30')](function(_0x31478f){if(_0x31478f){_0x284392=_0x31478f;}return db[_0xff3f('0x37')]['find']({'where':{'id':_0x229148[_0xff3f('0x4f')]['id']},'attributes':['logo',_0xff3f('0x5a'),_0xff3f('0x6b'),'favicon','defaultLogo',_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})[_0xff3f('0x30')](handleEntityNotFound(_0x4f8043,null))[_0xff3f('0x30')](function(_0x2397af){if(_0x2397af){var _0x3aa63a=_0x2397af[_0xff3f('0x5a')]&&fs['existsSync'](path['join'](config[_0xff3f('0x5f')],_0x105a5f,_[_0xff3f('0x61')](_0x2397af[_0xff3f('0x5a')])))?path['join'](config['root'],_0x105a5f,_[_0xff3f('0x61')](_0x2397af[_0xff3f('0x5a')])):path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x105a5f,_['toLower'](_0xff3f('0x6c')));var _0x5be87c='default'+_['upperFirst'](_0xff3f('0x5a'));if(_0x2397af[_0x5be87c]||!_0x284392[_0xff3f('0x6d')]){_0x3aa63a=path['join'](config[_0xff3f('0x5f')],_0x105a5f,_[_0xff3f('0x61')]('default_loginLogo.svg'));}if(!fs[_0xff3f('0x6e')](_0x3aa63a)){throw new db[(_0xff3f('0x65'))][(_0xff3f('0x66'))](_['upperFirst'](_0xff3f('0x5a'))+_0xff3f('0x67'));}return _0x4f8043['download'](_0x3aa63a);}})[_0xff3f('0x4d')](handleError(_0x4f8043,null));};exports['gdpr']=function(_0x5861ed,_0x408f1a){return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x5861ed['params']['id']},'attributes':[_0xff3f('0x6f')]})['then'](respondWithResult(_0x408f1a,null))[_0xff3f('0x4d')](handleError(_0x408f1a,null));};exports['addPreferred']=function(_0x221fde,_0xf317b5,_0x2a3157){if(_0x221fde['file']&&_0x221fde[_0xff3f('0x55')][_0xff3f('0x56')]){_0x221fde['body'][_0xff3f('0x6b')]=_0x221fde[_0xff3f('0x55')]['filename'];}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x221fde[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0xf317b5,null))[_0xff3f('0x30')](saveUpdates(_0x221fde[_0xff3f('0x52')],null))['then'](respondWithResult(_0xf317b5,null))[_0xff3f('0x4d')](handleError(_0xf317b5,null));};var utilLicense=require(_0xff3f('0x16'));exports[_0xff3f('0x70')]=function(_0x171b2d,_0x401150,_0x21df4b){var _0xb8630=_0xff3f('0x6a');var _0x23fe62={'custom':![]};return utilLicense['getLicense']()['then'](function(_0xc27075){if(_0xc27075){_0x23fe62=_0xc27075;}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x171b2d[_0xff3f('0x4f')]['id']},'attributes':[_0xff3f('0x59'),_0xff3f('0x5a'),_0xff3f('0x6b'),_0xff3f('0x71'),_0xff3f('0x5b'),_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0x401150,null))[_0xff3f('0x30')](function(_0x23dd85){if(_0x23dd85){var _0x41a536=_0x23dd85['preferred']&&fs['existsSync'](path[_0xff3f('0x60')](config['root'],_0xb8630,_[_0xff3f('0x61')](_0x23dd85[_0xff3f('0x6b')])))?path['join'](config['root'],_0xb8630,_[_0xff3f('0x61')](_0x23dd85['preferred'])):path['join'](config['root'],_0xb8630,_[_0xff3f('0x61')]('default_preferred.png'));var _0x5dac01='default'+_[_0xff3f('0x64')](_0xff3f('0x6b'));if(_0x23dd85[_0x5dac01]||!_0x23fe62['custom']||!_0x23fe62[_0xff3f('0x6b')]){_0x41a536=path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0xb8630,_[_0xff3f('0x61')](_0xff3f('0x72')));}if(!fs[_0xff3f('0x6e')](_0x41a536)){throw new db[(_0xff3f('0x65'))][(_0xff3f('0x66'))](_[_0xff3f('0x64')](_0xff3f('0x6b'))+_0xff3f('0x67'));}return _0x401150['download'](_0x41a536);}})[_0xff3f('0x4d')](handleError(_0x401150,null));};exports[_0xff3f('0x73')]=function(_0x206ef3,_0x44b937,_0x1704a0){if(_0x206ef3[_0xff3f('0x55')]&&_0x206ef3[_0xff3f('0x55')][_0xff3f('0x56')]){_0x206ef3[_0xff3f('0x52')][_0xff3f('0x71')]=_0x206ef3[_0xff3f('0x55')][_0xff3f('0x56')];}return db['Setting'][_0xff3f('0x53')]({'where':{'id':_0x206ef3[_0xff3f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x44b937,null))[_0xff3f('0x30')](saveUpdates(_0x206ef3[_0xff3f('0x52')],null))['then'](respondWithResult(_0x44b937,null))[_0xff3f('0x4d')](handleError(_0x44b937,null));};var utilLicense=require(_0xff3f('0x16'));exports[_0xff3f('0x74')]=function(_0x2b4504,_0x138607,_0x15d000){var _0x161926=_0xff3f('0x6a');var _0x542980={'custom':![]};return utilLicense['getLicense']()[_0xff3f('0x30')](function(_0x1b08d8){if(_0x1b08d8){_0x542980=_0x1b08d8;}return db['Setting']['find']({'where':{'id':_0x2b4504[_0xff3f('0x4f')]['id']},'attributes':[_0xff3f('0x59'),_0xff3f('0x5a'),_0xff3f('0x6b'),_0xff3f('0x71'),'defaultLogo',_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})[_0xff3f('0x30')](handleEntityNotFound(_0x138607,null))[_0xff3f('0x30')](function(_0x168332){if(_0x168332){var _0xe0bb69=_0x168332[_0xff3f('0x71')]&&fs[_0xff3f('0x6e')](path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x161926,_[_0xff3f('0x61')](_0x168332[_0xff3f('0x71')])))?path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x161926,_[_0xff3f('0x61')](_0x168332[_0xff3f('0x71')])):path[_0xff3f('0x60')](config['root'],_0x161926,_[_0xff3f('0x61')]('default_favicon.ico'));var _0x127de8=_0xff3f('0x63')+_[_0xff3f('0x64')](_0xff3f('0x71'));if(_0x168332[_0x127de8]||!_0x542980[_0xff3f('0x6d')]){_0xe0bb69=path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x161926,_[_0xff3f('0x61')](_0xff3f('0x75')));}if(!fs[_0xff3f('0x6e')](_0xe0bb69)){throw new db['Sequelize']['ValidationError'](_[_0xff3f('0x64')](_0xff3f('0x71'))+_0xff3f('0x67'));}return _0x138607['download'](_0xe0bb69);}})['catch'](handleError(_0x138607,null));};exports[_0xff3f('0x76')]=function(_0x38e0b1,_0x772330){var _0x7158a1={'offset':moment()[_0xff3f('0x77')]()};_0x7158a1['now']=moment()[_0xff3f('0x77')](_0x7158a1[_0xff3f('0x26')])[_0xff3f('0x78')](_0xff3f('0x79'));return _0x772330[_0xff3f('0x24')](0xc8)[_0xff3f('0x34')](_0x7158a1);};
\ No newline at end of file
+var _0x35f9=['default_loginLogo.svg','custom','securePassword','addPreferred','default_preferred.png','getFavicon','default_favicon.ico','getDate','now','utcOffset','format','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','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/license/util','../../mysqldb','jayson/promise','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','update','destroy','name','send','index','Setting','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','params','find','body','file','filename','logo','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default','upperFirst','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin'];(function(_0x215299,_0x29e45f){var _0x354984=function(_0x4aff11){while(--_0x4aff11){_0x215299['push'](_0x215299['shift']());}};_0x354984(++_0x29e45f);}(_0x35f9,0x1df));var _0x935f=function(_0x4ddc52,_0x1bb927){_0x4ddc52=_0x4ddc52-0x0;var _0x4c3d94=_0x35f9[_0x4ddc52];return _0x4c3d94;};'use strict';var emlformat=require(_0x935f('0x0'));var rimraf=require(_0x935f('0x1'));var zipdir=require(_0x935f('0x2'));var jsonpatch=require(_0x935f('0x3'));var rp=require('request-promise');var moment=require(_0x935f('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x935f('0x5'));var path=require(_0x935f('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x935f('0x7'));var fs=require('fs');var fs_extra=require(_0x935f('0x8'));var _=require(_0x935f('0x9'));var squel=require(_0x935f('0xa'));var crypto=require(_0x935f('0xb'));var jsforce=require(_0x935f('0xc'));var deskjs=require(_0x935f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x935f('0xe'));var Papa=require(_0x935f('0xf'));var Redis=require(_0x935f('0x10'));var authService=require(_0x935f('0x11'));var qs=require(_0x935f('0x12'));var as=require(_0x935f('0x13'));var hardwareService=require(_0x935f('0x14'));var logger=require(_0x935f('0x15'))(_0x935f('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x935f('0x17'));var db=require(_0x935f('0x18'))['db'];var jayson=require(_0x935f('0x19'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x246938,_0x16b3e0,_0x4b2bf7,_0x5ad51f){return new BPromise(function(_0x118ff1,_0x4eec05){var _0x450bf2=_0x5ad51f||client;return _0x450bf2[_0x935f('0x1a')](_0x246938,_0x4b2bf7)[_0x935f('0x1b')](function(_0xf2a8cb){logger[_0x935f('0x1c')](_0x935f('0x1d'),_0x16b3e0,_0x935f('0x1e'));logger[_0x935f('0x1f')]('Setting,\x20%s,\x20%s,\x20%s',_0x16b3e0,_0x935f('0x1e'),JSON[_0x935f('0x20')](_0xf2a8cb));if(_0xf2a8cb['error']){if(_0xf2a8cb[_0x935f('0x21')][_0x935f('0x22')]===0x1f4){logger[_0x935f('0x21')]('Setting,\x20%s,\x20%s',_0x16b3e0,_0xf2a8cb[_0x935f('0x21')][_0x935f('0x23')]);return _0x4eec05(_0xf2a8cb['error'][_0x935f('0x23')]);}logger[_0x935f('0x21')](_0x935f('0x1d'),_0x16b3e0,_0xf2a8cb['error']['message']);return _0x118ff1(_0xf2a8cb['error'][_0x935f('0x23')]);}else{logger['info'](_0x935f('0x1d'),_0x16b3e0,_0x935f('0x1e'));_0x118ff1(_0xf2a8cb[_0x935f('0x24')][_0x935f('0x23')]);}})[_0x935f('0x25')](function(_0xe80828){logger[_0x935f('0x21')](_0x935f('0x1d'),_0x16b3e0,_0xe80828);_0x4eec05(_0xe80828);});});}function respondWithStatusCode(_0x385198,_0x44f838){_0x44f838=_0x44f838||0xcc;return function(_0x1ee935){if(_0x1ee935){return _0x385198[_0x935f('0x26')](_0x44f838);}return _0x385198[_0x935f('0x27')](_0x44f838)[_0x935f('0x28')]();};}function respondWithResult(_0x16c8e6,_0x42d198){_0x42d198=_0x42d198||0xc8;return function(_0x1be66e){if(_0x1be66e){return _0x16c8e6[_0x935f('0x27')](_0x42d198)['json'](_0x1be66e);}};}function respondWithFilteredResult(_0xdd6b0b,_0x3728a8){return function(_0x34f675){if(_0x34f675){var _0x14917f=typeof _0x3728a8[_0x935f('0x29')]===_0x935f('0x2a')&&typeof _0x3728a8[_0x935f('0x2b')]==='undefined';var _0x2b1ae3=_0x34f675[_0x935f('0x2c')];var _0x37df18=_0x14917f?0x0:_0x3728a8['offset'];var _0x403982=_0x14917f?_0x34f675[_0x935f('0x2c')]:_0x3728a8[_0x935f('0x29')]+_0x3728a8[_0x935f('0x2b')];var _0x5495ef;if(_0x403982>=_0x2b1ae3){_0x403982=_0x2b1ae3;_0x5495ef=0xc8;}else{_0x5495ef=0xce;}_0xdd6b0b['status'](_0x5495ef);return _0xdd6b0b['set'](_0x935f('0x2d'),_0x37df18+'-'+_0x403982+'/'+_0x2b1ae3)[_0x935f('0x2e')](_0x34f675);}return null;};}function patchUpdates(_0x1ef469){return function(_0x3eab8c){try{jsonpatch['apply'](_0x3eab8c,_0x1ef469,!![]);}catch(_0x33289d){return BPromise[_0x935f('0x2f')](_0x33289d);}return _0x3eab8c['save']();};}function saveUpdates(_0x6f42ab,_0x3999fb){return function(_0x540b4e){if(_0x540b4e){return _0x540b4e[_0x935f('0x30')](_0x6f42ab)[_0x935f('0x1b')](function(_0x448907){return _0x448907;});}return null;};}function removeEntity(_0x534164,_0x3131bf){return function(_0x1ffd3b){if(_0x1ffd3b){return _0x1ffd3b[_0x935f('0x31')]()[_0x935f('0x1b')](function(){_0x534164[_0x935f('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ef4c0,_0x11fd17){return function(_0x53ffd1){if(!_0x53ffd1){_0x3ef4c0['sendStatus'](0x194);}return _0x53ffd1;};}function handleError(_0x1f9819,_0x10b02b){_0x10b02b=_0x10b02b||0x1f4;return function(_0x21cffd){logger[_0x935f('0x21')](_0x21cffd['stack']);if(_0x21cffd['name']){delete _0x21cffd[_0x935f('0x32')];}_0x1f9819[_0x935f('0x27')](_0x10b02b)[_0x935f('0x33')](_0x21cffd);};}exports[_0x935f('0x34')]=function(_0x3026b0,_0x1d798d){var _0x10fe79={},_0x3f73a6={},_0x8ee2ef={'count':0x0,'rows':[]};var _0x5e4aad=_['map'](db[_0x935f('0x35')][_0x935f('0x36')],function(_0x69399f){return{'name':_0x69399f[_0x935f('0x37')],'type':_0x69399f[_0x935f('0x38')][_0x935f('0x39')]};});_0x3f73a6['model']=_[_0x935f('0x3a')](_0x5e4aad,'name');_0x3f73a6[_0x935f('0x3b')]=_[_0x935f('0x3c')](_0x3026b0[_0x935f('0x3b')]);_0x3f73a6['filters']=_[_0x935f('0x3d')](_0x3f73a6[_0x935f('0x3e')],_0x3f73a6['query']);_0x10fe79['attributes']=_[_0x935f('0x3d')](_0x3f73a6['model'],qs[_0x935f('0x3f')](_0x3026b0['query'][_0x935f('0x3f')]));_0x10fe79['attributes']=_0x10fe79[_0x935f('0x40')][_0x935f('0x41')]?_0x10fe79[_0x935f('0x40')]:_0x3f73a6['model'];if(!_0x3026b0[_0x935f('0x3b')][_0x935f('0x42')]('nolimit')){_0x10fe79[_0x935f('0x2b')]=qs[_0x935f('0x2b')](_0x3026b0[_0x935f('0x3b')]['limit']);_0x10fe79[_0x935f('0x29')]=qs[_0x935f('0x29')](_0x3026b0['query'][_0x935f('0x29')]);}_0x10fe79[_0x935f('0x43')]=qs[_0x935f('0x44')](_0x3026b0[_0x935f('0x3b')][_0x935f('0x44')]);_0x10fe79[_0x935f('0x45')]=qs[_0x935f('0x46')](_[_0x935f('0x47')](_0x3026b0['query'],_0x3f73a6['filters']),_0x5e4aad);if(_0x3026b0[_0x935f('0x3b')][_0x935f('0x48')]){_0x10fe79[_0x935f('0x45')]=_['merge'](_0x10fe79[_0x935f('0x45')],{'$or':_['map'](_0x5e4aad,function(_0x37f8b0){if(_0x37f8b0[_0x935f('0x38')]!==_0x935f('0x49')){var _0x22a9f={};_0x22a9f[_0x37f8b0[_0x935f('0x32')]]={'$like':'%'+_0x3026b0[_0x935f('0x3b')][_0x935f('0x48')]+'%'};return _0x22a9f;}})});}_0x10fe79=_[_0x935f('0x4a')]({},_0x10fe79,_0x3026b0['options']);var _0x5278d5={'where':_0x10fe79[_0x935f('0x45')]};return db['Setting'][_0x935f('0x2c')](_0x5278d5)[_0x935f('0x1b')](function(_0x360740){_0x8ee2ef[_0x935f('0x2c')]=_0x360740;if(_0x3026b0['query'][_0x935f('0x4b')]){_0x10fe79[_0x935f('0x4c')]=[{'all':!![]}];}return db['Setting'][_0x935f('0x4d')](_0x10fe79);})[_0x935f('0x1b')](function(_0x14c2bd){_0x8ee2ef['rows']=_0x14c2bd;return _0x8ee2ef;})[_0x935f('0x1b')](respondWithFilteredResult(_0x1d798d,_0x10fe79))[_0x935f('0x25')](handleError(_0x1d798d,null));};exports['show']=function(_0x1f1cae,_0x302686){var _0x510e3e={'raw':![],'where':{'id':_0x1f1cae[_0x935f('0x4e')]['id']}},_0x297184={};_0x297184[_0x935f('0x3e')]=_[_0x935f('0x3c')](db[_0x935f('0x35')][_0x935f('0x36')]);_0x297184[_0x935f('0x3b')]=_[_0x935f('0x3c')](_0x1f1cae['query']);_0x297184[_0x935f('0x46')]=_['intersection'](_0x297184[_0x935f('0x3e')],_0x297184[_0x935f('0x3b')]);_0x510e3e[_0x935f('0x40')]=_[_0x935f('0x3d')](_0x297184['model'],qs[_0x935f('0x3f')](_0x1f1cae[_0x935f('0x3b')]['fields']));_0x510e3e['attributes']=_0x510e3e[_0x935f('0x40')][_0x935f('0x41')]?_0x510e3e[_0x935f('0x40')]:_0x297184[_0x935f('0x3e')];if(_0x1f1cae[_0x935f('0x3b')][_0x935f('0x4b')]){_0x510e3e['include']=[{'all':!![]}];}_0x510e3e=_[_0x935f('0x4a')]({},_0x510e3e,_0x1f1cae['options']);return db['Setting'][_0x935f('0x4f')](_0x510e3e)[_0x935f('0x1b')](handleEntityNotFound(_0x302686,null))[_0x935f('0x1b')](respondWithResult(_0x302686,null))[_0x935f('0x25')](handleError(_0x302686,null));};exports['update']=function(_0xff4f4d,_0x4d4287){if(_0xff4f4d[_0x935f('0x50')]['id']){delete _0xff4f4d[_0x935f('0x50')]['id'];}return db['Setting']['find']({'where':{'id':_0xff4f4d[_0x935f('0x4e')]['id']}})[_0x935f('0x1b')](handleEntityNotFound(_0x4d4287,null))['then'](saveUpdates(_0xff4f4d[_0x935f('0x50')],null))[_0x935f('0x1b')](respondWithResult(_0x4d4287,null))[_0x935f('0x25')](handleError(_0x4d4287,null));};exports['addLogo']=function(_0x145e5a,_0x1f183c,_0x4b394c){if(_0x145e5a[_0x935f('0x51')]&&_0x145e5a[_0x935f('0x51')][_0x935f('0x52')]){_0x145e5a[_0x935f('0x50')][_0x935f('0x53')]=_0x145e5a[_0x935f('0x51')][_0x935f('0x52')];}return db[_0x935f('0x35')]['find']({'where':{'id':_0x145e5a['params']['id']}})[_0x935f('0x1b')](handleEntityNotFound(_0x1f183c,null))[_0x935f('0x1b')](saveUpdates(_0x145e5a[_0x935f('0x50')],null))['then'](respondWithResult(_0x1f183c,null))[_0x935f('0x25')](handleError(_0x1f183c,null));};exports[_0x935f('0x54')]=function(_0x57ca58,_0x28cfd2,_0x3638b6){if(_0x57ca58[_0x935f('0x51')]&&_0x57ca58[_0x935f('0x51')][_0x935f('0x52')]){_0x57ca58['body'][_0x935f('0x55')]=_0x57ca58['file'][_0x935f('0x52')];}return db[_0x935f('0x35')][_0x935f('0x4f')]({'where':{'id':_0x57ca58['params']['id']}})['then'](handleEntityNotFound(_0x28cfd2,null))[_0x935f('0x1b')](saveUpdates(_0x57ca58[_0x935f('0x50')],null))[_0x935f('0x1b')](respondWithResult(_0x28cfd2,null))[_0x935f('0x25')](handleError(_0x28cfd2,null));};var utilLicense=require('../../config/license/util');exports[_0x935f('0x56')]=function(_0x1dbfda,_0x109fde,_0xc79c9b){var _0x3ac62d=_0x935f('0x57');var _0x35a04d={'custom':![]};return utilLicense[_0x935f('0x58')]()[_0x935f('0x1b')](function(_0x2d7c98){if(_0x2d7c98){_0x35a04d=_0x2d7c98;}return db[_0x935f('0x35')][_0x935f('0x4f')]({'where':{'id':_0x1dbfda[_0x935f('0x4e')]['id']},'attributes':['logo',_0x935f('0x55'),_0x935f('0x59'),_0x935f('0x5a'),_0x935f('0x5b'),_0x935f('0x5c'),_0x935f('0x5d'),_0x935f('0x5e')],'raw':!![]});})[_0x935f('0x1b')](handleEntityNotFound(_0x109fde,null))['then'](function(_0x333e4f){if(_0x333e4f){var _0x66e83=_0x333e4f[_0x935f('0x53')]&&fs[_0x935f('0x5f')](path[_0x935f('0x60')](config[_0x935f('0x61')],_0x3ac62d,_['toLower'](_0x333e4f[_0x935f('0x53')])))?path['join'](config[_0x935f('0x61')],_0x3ac62d,_[_0x935f('0x62')](_0x333e4f['logo'])):path['join'](config[_0x935f('0x61')],_0x3ac62d,_['toLower']('default_logo.svg'));var _0x4cc65a=_0x935f('0x63')+_[_0x935f('0x64')](_0x935f('0x53'));if(_0x333e4f[_0x4cc65a]||!_0x35a04d['custom']){_0x66e83=path['join'](config['root'],_0x3ac62d,_[_0x935f('0x62')]('default_logo.svg'));}if(!fs['existsSync'](_0x66e83)){throw new db[(_0x935f('0x65'))][(_0x935f('0x66'))](_[_0x935f('0x64')]('logo')+_0x935f('0x67'));}return _0x109fde[_0x935f('0x68')](_0x66e83);}})[_0x935f('0x25')](handleError(_0x109fde,null));};var utilLicense=require(_0x935f('0x17'));exports[_0x935f('0x69')]=function(_0x25f6a3,_0x516771,_0x10b022){var _0x1cc767='server/files/images/logos';var _0x1ab66b={'custom':![]};return utilLicense['getLicense']()['then'](function(_0xdd2a5a){if(_0xdd2a5a){_0x1ab66b=_0xdd2a5a;}return db[_0x935f('0x35')]['find']({'where':{'id':_0x25f6a3[_0x935f('0x4e')]['id']},'attributes':[_0x935f('0x53'),_0x935f('0x55'),_0x935f('0x59'),'favicon',_0x935f('0x5b'),_0x935f('0x5c'),_0x935f('0x5d'),'defaultFavicon'],'raw':!![]});})[_0x935f('0x1b')](handleEntityNotFound(_0x516771,null))[_0x935f('0x1b')](function(_0x44d786){if(_0x44d786){var _0x2dcfa8=_0x44d786[_0x935f('0x55')]&&fs[_0x935f('0x5f')](path[_0x935f('0x60')](config[_0x935f('0x61')],_0x1cc767,_[_0x935f('0x62')](_0x44d786['loginLogo'])))?path['join'](config[_0x935f('0x61')],_0x1cc767,_[_0x935f('0x62')](_0x44d786['loginLogo'])):path[_0x935f('0x60')](config[_0x935f('0x61')],_0x1cc767,_[_0x935f('0x62')](_0x935f('0x6a')));var _0x1ea947=_0x935f('0x63')+_['upperFirst'](_0x935f('0x55'));if(_0x44d786[_0x1ea947]||!_0x1ab66b[_0x935f('0x6b')]){_0x2dcfa8=path[_0x935f('0x60')](config[_0x935f('0x61')],_0x1cc767,_[_0x935f('0x62')](_0x935f('0x6a')));}if(!fs[_0x935f('0x5f')](_0x2dcfa8)){throw new db['Sequelize']['ValidationError'](_[_0x935f('0x64')](_0x935f('0x55'))+'\x20not\x20found');}return _0x516771['download'](_0x2dcfa8);}})['catch'](handleError(_0x516771,null));};exports['gdpr']=function(_0x12a422,_0xc214){return db[_0x935f('0x35')][_0x935f('0x4f')]({'where':{'id':_0x12a422['params']['id']},'attributes':[_0x935f('0x6c')]})['then'](respondWithResult(_0xc214,null))[_0x935f('0x25')](handleError(_0xc214,null));};exports[_0x935f('0x6d')]=function(_0x4fac48,_0x2d745c,_0x298491){if(_0x4fac48[_0x935f('0x51')]&&_0x4fac48[_0x935f('0x51')]['filename']){_0x4fac48[_0x935f('0x50')][_0x935f('0x59')]=_0x4fac48[_0x935f('0x51')][_0x935f('0x52')];}return db[_0x935f('0x35')][_0x935f('0x4f')]({'where':{'id':_0x4fac48[_0x935f('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2d745c,null))['then'](saveUpdates(_0x4fac48[_0x935f('0x50')],null))[_0x935f('0x1b')](respondWithResult(_0x2d745c,null))[_0x935f('0x25')](handleError(_0x2d745c,null));};var utilLicense=require(_0x935f('0x17'));exports['getPreferred']=function(_0x28c44c,_0x5ab316,_0x11b1dd){var _0x54a2a7=_0x935f('0x57');var _0x201449={'custom':![]};return utilLicense[_0x935f('0x58')]()[_0x935f('0x1b')](function(_0x199721){if(_0x199721){_0x201449=_0x199721;}return db[_0x935f('0x35')][_0x935f('0x4f')]({'where':{'id':_0x28c44c[_0x935f('0x4e')]['id']},'attributes':[_0x935f('0x53'),_0x935f('0x55'),_0x935f('0x59'),'favicon',_0x935f('0x5b'),_0x935f('0x5c'),_0x935f('0x5d'),_0x935f('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0x5ab316,null))[_0x935f('0x1b')](function(_0x55478b){if(_0x55478b){var _0x5cffe5=_0x55478b[_0x935f('0x59')]&&fs[_0x935f('0x5f')](path['join'](config[_0x935f('0x61')],_0x54a2a7,_['toLower'](_0x55478b[_0x935f('0x59')])))?path[_0x935f('0x60')](config['root'],_0x54a2a7,_[_0x935f('0x62')](_0x55478b[_0x935f('0x59')])):path['join'](config[_0x935f('0x61')],_0x54a2a7,_[_0x935f('0x62')](_0x935f('0x6e')));var _0x2cb0db='default'+_['upperFirst'](_0x935f('0x59'));if(_0x55478b[_0x2cb0db]||!_0x201449[_0x935f('0x6b')]||!_0x201449['preferred']){_0x5cffe5=path[_0x935f('0x60')](config[_0x935f('0x61')],_0x54a2a7,_[_0x935f('0x62')]('default_preferred.png'));}if(!fs[_0x935f('0x5f')](_0x5cffe5)){throw new db[(_0x935f('0x65'))][(_0x935f('0x66'))](_[_0x935f('0x64')](_0x935f('0x59'))+_0x935f('0x67'));}return _0x5ab316[_0x935f('0x68')](_0x5cffe5);}})[_0x935f('0x25')](handleError(_0x5ab316,null));};exports['addFavicon']=function(_0x4d5cc3,_0x581412,_0x3c48bf){if(_0x4d5cc3[_0x935f('0x51')]&&_0x4d5cc3['file'][_0x935f('0x52')]){_0x4d5cc3[_0x935f('0x50')][_0x935f('0x5a')]=_0x4d5cc3[_0x935f('0x51')]['filename'];}return db[_0x935f('0x35')][_0x935f('0x4f')]({'where':{'id':_0x4d5cc3[_0x935f('0x4e')]['id']}})[_0x935f('0x1b')](handleEntityNotFound(_0x581412,null))[_0x935f('0x1b')](saveUpdates(_0x4d5cc3[_0x935f('0x50')],null))['then'](respondWithResult(_0x581412,null))[_0x935f('0x25')](handleError(_0x581412,null));};var utilLicense=require(_0x935f('0x17'));exports[_0x935f('0x6f')]=function(_0x346d75,_0x57df6b,_0x1ba05e){var _0x3f3bb7=_0x935f('0x57');var _0x3590c5={'custom':![]};return utilLicense[_0x935f('0x58')]()[_0x935f('0x1b')](function(_0x318d05){if(_0x318d05){_0x3590c5=_0x318d05;}return db['Setting'][_0x935f('0x4f')]({'where':{'id':_0x346d75[_0x935f('0x4e')]['id']},'attributes':[_0x935f('0x53'),_0x935f('0x55'),_0x935f('0x59'),_0x935f('0x5a'),_0x935f('0x5b'),_0x935f('0x5c'),_0x935f('0x5d'),'defaultFavicon'],'raw':!![]});})[_0x935f('0x1b')](handleEntityNotFound(_0x57df6b,null))[_0x935f('0x1b')](function(_0x56efd8){if(_0x56efd8){var _0x4f8ff3=_0x56efd8[_0x935f('0x5a')]&&fs[_0x935f('0x5f')](path[_0x935f('0x60')](config[_0x935f('0x61')],_0x3f3bb7,_[_0x935f('0x62')](_0x56efd8[_0x935f('0x5a')])))?path[_0x935f('0x60')](config['root'],_0x3f3bb7,_['toLower'](_0x56efd8['favicon'])):path[_0x935f('0x60')](config[_0x935f('0x61')],_0x3f3bb7,_['toLower'](_0x935f('0x70')));var _0x5d8e88=_0x935f('0x63')+_[_0x935f('0x64')](_0x935f('0x5a'));if(_0x56efd8[_0x5d8e88]||!_0x3590c5[_0x935f('0x6b')]){_0x4f8ff3=path[_0x935f('0x60')](config[_0x935f('0x61')],_0x3f3bb7,_[_0x935f('0x62')](_0x935f('0x70')));}if(!fs[_0x935f('0x5f')](_0x4f8ff3)){throw new db[(_0x935f('0x65'))][(_0x935f('0x66'))](_[_0x935f('0x64')]('favicon')+_0x935f('0x67'));}return _0x57df6b[_0x935f('0x68')](_0x4f8ff3);}})[_0x935f('0x25')](handleError(_0x57df6b,null));};exports[_0x935f('0x71')]=function(_0x296f1c,_0x21faf9){var _0x25be04={'offset':moment()['utcOffset']()};_0x25be04[_0x935f('0x72')]=moment()[_0x935f('0x73')](_0x25be04[_0x935f('0x29')])[_0x935f('0x74')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x21faf9[_0x935f('0x27')](0xc8)[_0x935f('0x33')](_0x25be04);};
\ No newline at end of file
index aec7b49..efa21d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x4b7b9b,_0xa4aff9){var _0x3be710=function(_0x5b64fa){while(--_0x5b64fa){_0x4b7b9b['push'](_0x4b7b9b['shift']());}};_0x3be710(++_0xa4aff9);}(_0x008c,0x188));var _0xc008=function(_0x76b00b,_0x26e939){_0x76b00b=_0x76b00b-0x0;var _0xc8e4a=_0x008c[_0x76b00b];return _0xc8e4a;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('Setting',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x57396d,_0x5447c3){var _0x4fb0b6=function(_0x4c96bc){while(--_0x4c96bc){_0x57396d['push'](_0x57396d['shift']());}};_0x4fb0b6(++_0x5447c3);}(_0x34e8,0x12c));var _0x834e=function(_0xa9771e,_0x14ab5e){_0xa9771e=_0xa9771e-0x0;var _0x48ca22=_0x34e8[_0xa9771e];return _0x48ca22;};'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 44ed130..23a3bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0de8=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSetting','find','options','attributes','include','map','model','then','lodash','util','moment','randomstring'];(function(_0x52a9fa,_0x13f364){var _0x13280b=function(_0x5bd93a){while(--_0x5bd93a){_0x52a9fa['push'](_0x52a9fa['shift']());}};_0x13280b(++_0x13f364);}(_0x0de8,0x7c));var _0x80de=function(_0x5953d3,_0xebf3f3){_0x5953d3=_0x5953d3-0x0;var _0x3a4d54=_0x0de8[_0x5953d3];return _0x3a4d54;};'use strict';var _=require(_0x80de('0x0'));var util=require(_0x80de('0x1'));var moment=require(_0x80de('0x2'));var BPromise=require('bluebird');var rs=require(_0x80de('0x3'));var fs=require('fs');var Redis=require(_0x80de('0x4'));var db=require(_0x80de('0x5'))['db'];var utils=require(_0x80de('0x6'));var logger=require(_0x80de('0x7'))(_0x80de('0x8'));var config=require(_0x80de('0x9'));var jayson=require(_0x80de('0xa'));var client=jayson[_0x80de('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c631a,_0x4baac0,_0x56ecd4){return new BPromise(function(_0x2ab899,_0x503cae){return client[_0x80de('0xc')](_0x3c631a,_0x56ecd4)['then'](function(_0x3f6ed6){logger[_0x80de('0xd')](_0x80de('0xe'),_0x4baac0,_0x80de('0xf'));logger[_0x80de('0x10')](_0x80de('0x11'),_0x4baac0,_0x80de('0xf'),JSON[_0x80de('0x12')](_0x3f6ed6));if(_0x3f6ed6['error']){if(_0x3f6ed6[_0x80de('0x13')][_0x80de('0x14')]===0x1f4){logger[_0x80de('0x13')](_0x80de('0xe'),_0x4baac0,_0x3f6ed6['error'][_0x80de('0x15')]);return _0x503cae(_0x3f6ed6[_0x80de('0x13')][_0x80de('0x15')]);}logger[_0x80de('0x13')]('Setting,\x20%s,\x20%s',_0x4baac0,_0x3f6ed6[_0x80de('0x13')][_0x80de('0x15')]);return _0x2ab899(_0x3f6ed6[_0x80de('0x13')]['message']);}else{logger['info'](_0x80de('0xe'),_0x4baac0,'request\x20sent');_0x2ab899(_0x3f6ed6[_0x80de('0x16')][_0x80de('0x15')]);}})[_0x80de('0x17')](function(_0x2a3a69){logger['error'](_0x80de('0xe'),_0x4baac0,_0x2a3a69);_0x503cae(_0x2a3a69);});});}exports[_0x80de('0x18')]=function(_0xd7e229){var _0x3fef9f=this;return new Promise(function(_0x485085,_0x30ce3b){return db['Setting'][_0x80de('0x19')]({'raw':_0xd7e229[_0x80de('0x1a')]?_0xd7e229[_0x80de('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0xd7e229[_0x80de('0x1a')]?_0xd7e229['options']['where']||null:null,'attributes':_0xd7e229[_0x80de('0x1a')]?_0xd7e229[_0x80de('0x1a')][_0x80de('0x1b')]||null:null,'include':_0xd7e229[_0x80de('0x1a')]?_0xd7e229[_0x80de('0x1a')][_0x80de('0x1c')]?_[_0x80de('0x1d')](_0xd7e229['options'][_0x80de('0x1c')],function(_0x2a2121){return{'model':db[_0x2a2121['model']],'as':_0x2a2121['as'],'attributes':_0x2a2121[_0x80de('0x1b')],'include':_0x2a2121[_0x80de('0x1c')]?_[_0x80de('0x1d')](_0x2a2121['include'],function(_0xe84eff){return{'model':db[_0xe84eff[_0x80de('0x1e')]],'as':_0xe84eff['as'],'attributes':_0xe84eff[_0x80de('0x1b')],'include':_0xe84eff[_0x80de('0x1c')]?_[_0x80de('0x1d')](_0xe84eff[_0x80de('0x1c')],function(_0x47ea85){return{'model':db[_0x47ea85['model']],'as':_0x47ea85['as'],'attributes':_0x47ea85[_0x80de('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x80de('0x1f')](function(_0x3b6270){logger[_0x80de('0xd')](_0x80de('0x18'),_0xd7e229);logger[_0x80de('0x10')](_0x80de('0x18'),_0xd7e229,JSON['stringify'](_0x3b6270));_0x485085(_0x3b6270);})['catch'](function(_0x2bd74c){logger[_0x80de('0x13')](_0x80de('0x18'),_0x2bd74c[_0x80de('0x15')],_0xd7e229);_0x30ce3b(_0x3fef9f[_0x80de('0x13')](0x1f4,_0x2bd74c['message']));});});};
\ No newline at end of file
+var _0x89cc=['then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','Setting','find','options','raw','where','attributes','include','map','model','ShowSetting','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x89cc,0x115));var _0xc89c=function(_0x45c86f,_0x3ee07f){_0x45c86f=_0x45c86f-0x0;var _0x58f698=_0x89cc[_0x45c86f];return _0x58f698;};'use strict';var _=require('lodash');var util=require(_0xc89c('0x0'));var moment=require('moment');var BPromise=require(_0xc89c('0x1'));var rs=require(_0xc89c('0x2'));var fs=require('fs');var Redis=require(_0xc89c('0x3'));var db=require(_0xc89c('0x4'))['db'];var utils=require(_0xc89c('0x5'));var logger=require(_0xc89c('0x6'))(_0xc89c('0x7'));var config=require(_0xc89c('0x8'));var jayson=require(_0xc89c('0x9'));var client=jayson[_0xc89c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb64542,_0x487bc1,_0x55daaa){return new BPromise(function(_0x45d4de,_0x1f2ca2){return client['request'](_0xb64542,_0x55daaa)[_0xc89c('0xb')](function(_0x32d1af){logger[_0xc89c('0xc')](_0xc89c('0xd'),_0x487bc1,_0xc89c('0xe'));logger[_0xc89c('0xf')](_0xc89c('0x10'),_0x487bc1,'request\x20sent',JSON[_0xc89c('0x11')](_0x32d1af));if(_0x32d1af[_0xc89c('0x12')]){if(_0x32d1af[_0xc89c('0x12')][_0xc89c('0x13')]===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x487bc1,_0x32d1af[_0xc89c('0x12')][_0xc89c('0x14')]);return _0x1f2ca2(_0x32d1af[_0xc89c('0x12')][_0xc89c('0x14')]);}logger[_0xc89c('0x12')](_0xc89c('0xd'),_0x487bc1,_0x32d1af[_0xc89c('0x12')][_0xc89c('0x14')]);return _0x45d4de(_0x32d1af[_0xc89c('0x12')][_0xc89c('0x14')]);}else{logger[_0xc89c('0xc')](_0xc89c('0xd'),_0x487bc1,'request\x20sent');_0x45d4de(_0x32d1af['result'][_0xc89c('0x14')]);}})[_0xc89c('0x15')](function(_0x367a04){logger[_0xc89c('0x12')](_0xc89c('0xd'),_0x487bc1,_0x367a04);_0x1f2ca2(_0x367a04);});});}exports['ShowSetting']=function(_0x4a8a85){var _0x15f97f=this;return new Promise(function(_0x4f7fa7,_0x5cef6a){return db[_0xc89c('0x16')][_0xc89c('0x17')]({'raw':_0x4a8a85[_0xc89c('0x18')]?_0x4a8a85[_0xc89c('0x18')][_0xc89c('0x19')]===undefined?!![]:![]:!![],'where':_0x4a8a85[_0xc89c('0x18')]?_0x4a8a85[_0xc89c('0x18')][_0xc89c('0x1a')]||null:null,'attributes':_0x4a8a85[_0xc89c('0x18')]?_0x4a8a85[_0xc89c('0x18')][_0xc89c('0x1b')]||null:null,'include':_0x4a8a85[_0xc89c('0x18')]?_0x4a8a85[_0xc89c('0x18')][_0xc89c('0x1c')]?_['map'](_0x4a8a85[_0xc89c('0x18')][_0xc89c('0x1c')],function(_0x4842f1){return{'model':db[_0x4842f1['model']],'as':_0x4842f1['as'],'attributes':_0x4842f1['attributes'],'include':_0x4842f1[_0xc89c('0x1c')]?_[_0xc89c('0x1d')](_0x4842f1[_0xc89c('0x1c')],function(_0x5edc37){return{'model':db[_0x5edc37[_0xc89c('0x1e')]],'as':_0x5edc37['as'],'attributes':_0x5edc37[_0xc89c('0x1b')],'include':_0x5edc37[_0xc89c('0x1c')]?_[_0xc89c('0x1d')](_0x5edc37[_0xc89c('0x1c')],function(_0x55ef70){return{'model':db[_0x55ef70[_0xc89c('0x1e')]],'as':_0x55ef70['as'],'attributes':_0x55ef70['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x32daaa){logger[_0xc89c('0xc')](_0xc89c('0x1f'),_0x4a8a85);logger[_0xc89c('0xf')](_0xc89c('0x1f'),_0x4a8a85,JSON[_0xc89c('0x11')](_0x32daaa));_0x4f7fa7(_0x32daaa);})[_0xc89c('0x15')](function(_0x50dc10){logger[_0xc89c('0x12')](_0xc89c('0x1f'),_0x50dc10[_0xc89c('0x14')],_0x4a8a85);_0x5cef6a(_0x15f97f[_0xc89c('0x12')](0x1f4,_0x50dc10[_0xc89c('0x14')]));});});};
\ No newline at end of file
index f1639e9..690695a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['statusGet','/:id/users','getAgents','post','addDisposition','addAnswer','notify','addApplications','/:id/send','send','status','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status'];(function(_0x593cff,_0x2e5204){var _0x4e78bf=function(_0x3acfdf){while(--_0x3acfdf){_0x593cff['push'](_0x593cff['shift']());}};_0x4e78bf(++_0x2e5204);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xc4aa[_0x1969a7];return _0x3d665f;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['describe']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['get'](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xf')]);router['get'](_0xac4a('0x10'),auth['isAuthenticated'](),controller[_0xac4a('0x11')]);router['get'](_0xac4a('0x12'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x13')]);router['get'](_0xac4a('0x14'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x15')]);router[_0xac4a('0x8')](_0xac4a('0x16'),controller[_0xac4a('0x17')]);router[_0xac4a('0x8')](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x19')]);router[_0xac4a('0x1a')]('/',auth[_0xac4a('0x9')](),controller['create']);router[_0xac4a('0x1a')](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x1b')]);router[_0xac4a('0x1a')](_0xac4a('0x10'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x1c')]);router['post']('/:id/notify',controller[_0xac4a('0x1d')]);router[_0xac4a('0x1a')](_0xac4a('0x12'),auth['isAuthenticated'](),controller[_0xac4a('0x1e')]);router[_0xac4a('0x1a')](_0xac4a('0x1f'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x20')]);router[_0xac4a('0x1a')](_0xac4a('0x16'),controller[_0xac4a('0x21')]);router['post'](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller['addAgents']);router[_0xac4a('0x22')](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x23')]);router['delete'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x24')]);router[_0xac4a('0x25')](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x26')]);router[_0xac4a('0x25')](_0xac4a('0x10'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x27')]);router[_0xac4a('0x25')](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x28')]);module[_0xac4a('0x29')]=router;
\ No newline at end of file
+var _0xabce=['/:id/users','getAgents','create','post','addAnswer','/:id/notify','notify','/:id/send','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status'];(function(_0x5eb9c9,_0x2293e7){var _0x421549=function(_0x24dbaa){while(--_0x24dbaa){_0x5eb9c9['push'](_0x5eb9c9['shift']());}};_0x421549(++_0x2293e7);}(_0xabce,0x103));var _0xeabc=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0xabce[_0x4e9628];return _0x27bc8c;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/describe',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0x9')](_0xeabc('0xc'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0x9')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xf')]);router[_0xeabc('0x9')](_0xeabc('0x10'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x11')]);router[_0xeabc('0x9')](_0xeabc('0x12'),auth['isAuthenticated'](),controller[_0xeabc('0x13')]);router[_0xeabc('0x9')](_0xeabc('0x14'),controller['statusGet']);router['get'](_0xeabc('0x15'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x16')]);router['post']('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0x17')]);router['post']('/:id/dispositions',auth[_0xeabc('0x8')](),controller['addDisposition']);router[_0xeabc('0x18')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x19')]);router[_0xeabc('0x18')](_0xeabc('0x1a'),controller[_0xeabc('0x1b')]);router[_0xeabc('0x18')]('/:id/applications',auth[_0xeabc('0x8')](),controller['addApplications']);router[_0xeabc('0x18')](_0xeabc('0x1c'),auth['isAuthenticated'](),controller[_0xeabc('0x1d')]);router[_0xeabc('0x18')](_0xeabc('0x14'),controller[_0xeabc('0x1e')]);router[_0xeabc('0x18')]('/:id/users',auth[_0xeabc('0x8')](),controller[_0xeabc('0x1f')]);router[_0xeabc('0x20')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0x21')]);router[_0xeabc('0x22')](_0xeabc('0x23'),auth['isAuthenticated'](),controller[_0xeabc('0x24')]);router['delete'](_0xeabc('0xc'),auth['isAuthenticated'](),controller[_0xeabc('0x25')]);router[_0xeabc('0x22')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x26')]);router[_0xeabc('0x22')](_0xeabc('0x15'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xeabc('0x27')]=router;
\ No newline at end of file
index 1ece25a..67ea106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce3d=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate','ENUM','connectel','clicksend','plivo','clickatell','bandwidth','csc','intelepeer','BOOLEAN'];(function(_0x1fe146,_0x3e27c8){var _0x208fc9=function(_0x4602ed){while(--_0x4602ed){_0x1fe146['push'](_0x1fe146['shift']());}};_0x208fc9(++_0x3e27c8);}(_0xce3d,0x13b));var _0xdce3=function(_0x3786dd,_0x5777fc){_0x3786dd=_0x3786dd-0x0;var _0x4c7a8e=_0xce3d[_0x3786dd];return _0x4c7a8e;};'use strict';var Sequelize=require(_0xdce3('0x0'));var rs=require(_0xdce3('0x1'));module[_0xdce3('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0xdce3('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xdce3('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0xdce3('0x4')],'allowNull':![]},'token':{'type':Sequelize[_0xdce3('0x4')],'defaultValue':function(){return rs[_0xdce3('0x5')]();}},'phone':{'type':Sequelize[_0xdce3('0x4')]},'type':{'type':Sequelize[_0xdce3('0x6')]('twilio','skebby',_0xdce3('0x7'),_0xdce3('0x8'),_0xdce3('0x9'),_0xdce3('0xa'),_0xdce3('0xb'),_0xdce3('0xc'),'infobip',_0xdce3('0xd'))},'accountSid':{'type':Sequelize[_0xdce3('0x4')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xdce3('0x4')]},'smsMethod':{'type':Sequelize[_0xdce3('0x6')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0xdce3('0x4')]},'applicationId':{'type':Sequelize[_0xdce3('0x4')]},'accountId':{'type':Sequelize[_0xdce3('0x4')]},'senderString':{'type':Sequelize[_0xdce3('0x4')]},'deliveryReport':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':![]},'description':{'type':Sequelize[_0xdce3('0x4')]},'notificationTemplate':{'type':Sequelize[_0xdce3('0xf')],'defaultValue':function(){return _0xdce3('0x10');}},'notificationSound':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xdce3('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xdce3('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xdce3('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xdce3('0x12'),'set':function(_0x51fc7e){if(!_0x51fc7e)this[_0xdce3('0x13')](_0xdce3('0x14'),null);this[_0xdce3('0x13')](_0xdce3('0x15'),_0x51fc7e);}}};
\ No newline at end of file
+var _0xa407=['skebby','connectel','clicksend','plivo','clickatell','bandwidth','csc','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate','ENUM','twilio'];(function(_0x3cc8cb,_0x31f8fe){var _0x427615=function(_0x4dda8e){while(--_0x4dda8e){_0x3cc8cb['push'](_0x3cc8cb['shift']());}};_0x427615(++_0x31f8fe);}(_0xa407,0xc7));var _0x7a40=function(_0x18a158,_0x58fc13){_0x18a158=_0x18a158-0x0;var _0x32a549=_0xa407[_0x18a158];return _0x32a549;};'use strict';var Sequelize=require(_0x7a40('0x0'));var rs=require(_0x7a40('0x1'));module[_0x7a40('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x7a40('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x7a40('0x4')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x7a40('0x4')],'defaultValue':function(){return rs[_0x7a40('0x5')]();}},'phone':{'type':Sequelize[_0x7a40('0x4')]},'type':{'type':Sequelize[_0x7a40('0x6')](_0x7a40('0x7'),_0x7a40('0x8'),_0x7a40('0x9'),_0x7a40('0xa'),_0x7a40('0xb'),_0x7a40('0xc'),_0x7a40('0xd'),_0x7a40('0xe'),'infobip','intelepeer')},'accountSid':{'type':Sequelize[_0x7a40('0x4')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x7a40('0x4')]},'smsMethod':{'type':Sequelize[_0x7a40('0x6')]('SI','TI','GP')},'username':{'type':Sequelize[_0x7a40('0x4')]},'password':{'type':Sequelize[_0x7a40('0x4')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x7a40('0x4')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x7a40('0xf')],'defaultValue':![]},'description':{'type':Sequelize[_0x7a40('0x4')]},'notificationTemplate':{'type':Sequelize[_0x7a40('0x10')],'defaultValue':function(){return _0x7a40('0x11');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7a40('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x7a40('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x7a40('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7a40('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7a40('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x7a40('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x7a40('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7a40('0x12')],'comment':_0x7a40('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x7a40('0xf')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x431732){if(!_0x431732)this[_0x7a40('0x14')](_0x7a40('0x15'),null);this[_0x7a40('0x14')](_0x7a40('0x16'),_0x431732);}}};
\ No newline at end of file
index e4ce2e3..328f118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f0=['clicksend','message_id','plivo','Text','MessageUUID','results','csc','originatingAddress','segmentedMessage','clickatell','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','DESC','omit','defaults','contact','SmsInteraction','interaction','autoclose','push','close','*,*,*,*','created','SmsMessage','ContactId','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','receiveMessage','entity\x20found','stringify','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','user','out','Messages','spread','dataValues','received\x20delivery\x20report\x20from','skebby_dispatch_id','statusInt','status_code','groupName','DELIVERED','redif','inspect','error_code','infobip','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','reject','update','then','SmsAccounts','UserProfileResource','end','stack','name','send','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','findAll','rows','show','Pause','filters','includeAll','find','create','role','get','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','params','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','pick','removeDispositions','ids','CannedAnswer','removeAnswers','sms','SmsApplication','Applications','account','applications','priority','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','text','connectel'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x39f0,0x143));var _0x039f=function(_0x204296,_0xec4630){_0x204296=_0x204296-0x0;var _0x567f32=_0x39f0[_0x204296];return _0x567f32;};'use strict';var emlformat=require(_0x039f('0x0'));var rimraf=require(_0x039f('0x1'));var zipdir=require(_0x039f('0x2'));var jsonpatch=require(_0x039f('0x3'));var rp=require(_0x039f('0x4'));var moment=require(_0x039f('0x5'));var BPromise=require(_0x039f('0x6'));var Mustache=require('mustache');var util=require(_0x039f('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x039f('0x8'));var ejs=require(_0x039f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x039f('0xa'));var squel=require(_0x039f('0xb'));var crypto=require(_0x039f('0xc'));var jsforce=require(_0x039f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x039f('0x8'));var querystring=require('querystring');var Papa=require(_0x039f('0xe'));var Redis=require(_0x039f('0xf'));var authService=require(_0x039f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x039f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x039f('0x12'))(_0x039f('0x13'));var utils=require(_0x039f('0x14'));var config=require(_0x039f('0x15'));var licenseUtil=require(_0x039f('0x16'));var db=require(_0x039f('0x17'))['db'];config['redis']=_['defaults'](config[_0x039f('0x18')],{'host':_0x039f('0x19'),'port':0x18eb});var socket=require(_0x039f('0x1a'))(new Redis(config['redis']));require(_0x039f('0x1b'))[_0x039f('0x1c')](socket);var jayson=require(_0x039f('0x1d'));var client=jayson[_0x039f('0x1e')]['http']({'port':0x232c});function respondWithRpcPromise(_0x3479e0,_0x49865e,_0x260d2c,_0x47885a){return new BPromise(function(_0x180dc9,_0x49463){var _0x5ab619=_0x47885a||client;return _0x5ab619[_0x039f('0x1f')](_0x3479e0,_0x260d2c)['then'](function(_0x4a4175){logger[_0x039f('0x20')](_0x039f('0x21'),_0x49865e,_0x039f('0x22'));logger[_0x039f('0x23')](_0x039f('0x24'),_0x49865e,_0x039f('0x22'),JSON['stringify'](_0x4a4175));if(_0x4a4175[_0x039f('0x25')]){if(_0x4a4175[_0x039f('0x25')]['code']===0x1f4){logger[_0x039f('0x25')](_0x039f('0x21'),_0x49865e,_0x4a4175['error'][_0x039f('0x26')]);return _0x49463(_0x4a4175['error'][_0x039f('0x26')]);}logger[_0x039f('0x25')](_0x039f('0x21'),_0x49865e,_0x4a4175[_0x039f('0x25')][_0x039f('0x26')]);return _0x180dc9(_0x4a4175['error'][_0x039f('0x26')]);}else{logger['info'](_0x039f('0x21'),_0x49865e,_0x039f('0x22'));_0x180dc9(_0x4a4175[_0x039f('0x27')][_0x039f('0x26')]);}})[_0x039f('0x28')](function(_0x68f407){logger[_0x039f('0x25')](_0x039f('0x21'),_0x49865e,_0x68f407);_0x49463(_0x68f407);});});}function respondWithStatusCode(_0xa905ba,_0x524994){_0x524994=_0x524994||0xcc;return function(_0x331192){if(_0x331192){return _0xa905ba[_0x039f('0x29')](_0x524994);}return _0xa905ba[_0x039f('0x2a')](_0x524994)['end']();};}function respondWithResult(_0x14dfe5,_0x141054){_0x141054=_0x141054||0xc8;return function(_0x2f30bb){if(_0x2f30bb){return _0x14dfe5['status'](_0x141054)['json'](_0x2f30bb);}};}function respondWithFilteredResult(_0x4ec341,_0x357cc1){return function(_0x9b5b7){if(_0x9b5b7){var _0x5af817=typeof _0x357cc1['offset']===_0x039f('0x2b')&&typeof _0x357cc1[_0x039f('0x2c')]===_0x039f('0x2b');var _0x1ab641=_0x9b5b7[_0x039f('0x2d')];var _0x451f5a=_0x5af817?0x0:_0x357cc1[_0x039f('0x2e')];var _0x1f1f4f=_0x5af817?_0x9b5b7[_0x039f('0x2d')]:_0x357cc1['offset']+_0x357cc1[_0x039f('0x2c')];var _0x4feb9f;if(_0x1f1f4f>=_0x1ab641){_0x1f1f4f=_0x1ab641;_0x4feb9f=0xc8;}else{_0x4feb9f=0xce;}_0x4ec341[_0x039f('0x2a')](_0x4feb9f);return _0x4ec341[_0x039f('0x2f')](_0x039f('0x30'),_0x451f5a+'-'+_0x1f1f4f+'/'+_0x1ab641)[_0x039f('0x31')](_0x9b5b7);}return null;};}function patchUpdates(_0x30c91d){return function(_0x4f3e26){try{jsonpatch['apply'](_0x4f3e26,_0x30c91d,!![]);}catch(_0xcb509b){return BPromise[_0x039f('0x32')](_0xcb509b);}return _0x4f3e26['save']();};}function saveUpdates(_0x229f91,_0x256ff9){return function(_0x1ef5bb){if(_0x1ef5bb){return _0x1ef5bb[_0x039f('0x33')](_0x229f91)[_0x039f('0x34')](function(_0x18b663){return _0x18b663;});}return null;};}function removeEntity(_0x5974db,_0x9a378e){return function(_0x410772){if(_0x410772){return _0x410772['destroy']()[_0x039f('0x34')](function(){var _0x253a0d=_0x410772['get']({'plain':!![]});var _0x6b742=_0x039f('0x35');return db[_0x039f('0x36')]['destroy']({'where':{'type':_0x6b742,'resourceId':_0x253a0d['id']}})[_0x039f('0x34')](function(){return _0x410772;});})[_0x039f('0x34')](function(){_0x5974db[_0x039f('0x2a')](0xcc)[_0x039f('0x37')]();});}};}function handleEntityNotFound(_0x380c83,_0x15018c){return function(_0x392f78){if(!_0x392f78){_0x380c83['sendStatus'](0x194);}return _0x392f78;};}function handleError(_0x7ae843,_0x313125){_0x313125=_0x313125||0x1f4;return function(_0x15697c){logger[_0x039f('0x25')](_0x15697c[_0x039f('0x38')]);if(_0x15697c[_0x039f('0x39')]){delete _0x15697c[_0x039f('0x39')];}_0x7ae843[_0x039f('0x2a')](_0x313125)[_0x039f('0x3a')](_0x15697c);};}exports['index']=function(_0x382907,_0xf8ad8f){var _0x24cfe4={'include':[{'model':db['Pause'],'as':_0x039f('0x3b')}]},_0x3f1f64={},_0x118af8={'count':0x0,'rows':[]};var _0x4a3f20=_[_0x039f('0x3c')](db[_0x039f('0x3d')][_0x039f('0x3e')],function(_0x13baec){return{'name':_0x13baec[_0x039f('0x3f')],'type':_0x13baec[_0x039f('0x40')][_0x039f('0x41')]};});_0x3f1f64[_0x039f('0x42')]=_[_0x039f('0x3c')](_0x4a3f20,_0x039f('0x39'));_0x3f1f64[_0x039f('0x43')]=_[_0x039f('0x44')](_0x382907['query']);_0x3f1f64['filters']=_[_0x039f('0x45')](_0x3f1f64['model'],_0x3f1f64[_0x039f('0x43')]);_0x24cfe4[_0x039f('0x46')]=_[_0x039f('0x45')](_0x3f1f64['model'],qs[_0x039f('0x47')](_0x382907[_0x039f('0x43')]['fields']));_0x24cfe4[_0x039f('0x46')]=_0x24cfe4[_0x039f('0x46')][_0x039f('0x48')]?_0x24cfe4[_0x039f('0x46')]:_0x3f1f64[_0x039f('0x42')];if(!_0x382907['query'][_0x039f('0x49')](_0x039f('0x4a'))){_0x24cfe4[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x382907[_0x039f('0x43')][_0x039f('0x2c')]);_0x24cfe4['offset']=qs[_0x039f('0x2e')](_0x382907[_0x039f('0x43')][_0x039f('0x2e')]);}_0x24cfe4[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x382907[_0x039f('0x43')]['sort']);_0x24cfe4[_0x039f('0x4d')]=qs['filters'](_['pick'](_0x382907[_0x039f('0x43')],_0x3f1f64['filters']),_0x4a3f20);if(_0x382907[_0x039f('0x43')][_0x039f('0x4e')]){_0x24cfe4['where']=_['merge'](_0x24cfe4[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x4a3f20,function(_0x4e9c6b){if(_0x4e9c6b['type']!=='VIRTUAL'){var _0xba6add={};_0xba6add[_0x4e9c6b[_0x039f('0x39')]]={'$like':'%'+_0x382907[_0x039f('0x43')]['filter']+'%'};return _0xba6add;}})});}_0x24cfe4=_[_0x039f('0x4f')]({},_0x24cfe4,_0x382907[_0x039f('0x50')]);var _0x5db4a7={'where':_0x24cfe4['where']};return db['SmsAccount'][_0x039f('0x2d')](_0x5db4a7)[_0x039f('0x34')](function(_0x257b41){_0x118af8['count']=_0x257b41;if(_0x382907[_0x039f('0x43')]['includeAll']){_0x24cfe4[_0x039f('0x51')]=[{'all':!![]}];}return db[_0x039f('0x3d')][_0x039f('0x52')](_0x24cfe4);})[_0x039f('0x34')](function(_0x56cbd9){_0x118af8[_0x039f('0x53')]=_0x56cbd9;return _0x118af8;})['then'](respondWithFilteredResult(_0xf8ad8f,_0x24cfe4))['catch'](handleError(_0xf8ad8f,null));};exports[_0x039f('0x54')]=function(_0x36d3d8,_0xf07d7b){var _0x1d2d93={'raw':![],'where':{'id':_0x36d3d8['params']['id']},'include':[{'model':db[_0x039f('0x55')],'as':_0x039f('0x3b')}]},_0x8c2fdb={};_0x8c2fdb[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0x3d')]['rawAttributes']);_0x8c2fdb[_0x039f('0x43')]=_[_0x039f('0x44')](_0x36d3d8[_0x039f('0x43')]);_0x8c2fdb[_0x039f('0x56')]=_[_0x039f('0x45')](_0x8c2fdb['model'],_0x8c2fdb[_0x039f('0x43')]);_0x1d2d93[_0x039f('0x46')]=_['intersection'](_0x8c2fdb['model'],qs['fields'](_0x36d3d8['query'][_0x039f('0x47')]));_0x1d2d93['attributes']=_0x1d2d93[_0x039f('0x46')]['length']?_0x1d2d93[_0x039f('0x46')]:_0x8c2fdb[_0x039f('0x42')];if(_0x36d3d8['query'][_0x039f('0x57')]){_0x1d2d93['include']=[{'all':!![]}];}_0x1d2d93=_[_0x039f('0x4f')]({},_0x1d2d93,_0x36d3d8[_0x039f('0x50')]);return db[_0x039f('0x3d')][_0x039f('0x58')](_0x1d2d93)[_0x039f('0x34')](handleEntityNotFound(_0xf07d7b,null))[_0x039f('0x34')](respondWithResult(_0xf07d7b,null))[_0x039f('0x28')](handleError(_0xf07d7b,null));};exports['create']=function(_0x2551f6,_0xfaff07){return db[_0x039f('0x3d')][_0x039f('0x59')](_0x2551f6['body'],{})[_0x039f('0x34')](function(_0x19ab43){var _0x490069=_0x2551f6['user']['get']({'plain':!![]});if(!_0x490069)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x490069[_0x039f('0x5a')]==='user'){var _0x44ed57=_0x19ab43[_0x039f('0x5b')]({'plain':!![]});var _0x4669ce='SmsAccounts';return db[_0x039f('0x5c')][_0x039f('0x58')]({'where':{'name':_0x4669ce,'userProfileId':_0x490069['userProfileId']},'raw':!![]})[_0x039f('0x34')](function(_0x3d539a){if(_0x3d539a&&_0x3d539a['autoAssociation']===0x0){return db['UserProfileResource'][_0x039f('0x59')]({'name':_0x44ed57['name'],'resourceId':_0x44ed57['id'],'type':_0x3d539a['name'],'sectionId':_0x3d539a['id']},{})[_0x039f('0x34')](function(){return _0x19ab43;});}else{return _0x19ab43;}})[_0x039f('0x28')](function(_0x292289){logger[_0x039f('0x25')](_0x039f('0x5d'),_0x292289);throw _0x292289;});}return _0x19ab43;})[_0x039f('0x34')](respondWithResult(_0xfaff07,0xc9))[_0x039f('0x28')](handleError(_0xfaff07,null));};exports[_0x039f('0x33')]=function(_0x3b2c2a,_0x292862){if(_0x3b2c2a['body']['id']){delete _0x3b2c2a[_0x039f('0x5e')]['id'];}return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x3b2c2a['params']['id']},'include':[{'model':db[_0x039f('0x55')],'as':_0x039f('0x3b')}]})[_0x039f('0x34')](handleEntityNotFound(_0x292862,null))[_0x039f('0x34')](saveUpdates(_0x3b2c2a[_0x039f('0x5e')],null))[_0x039f('0x34')](respondWithResult(_0x292862,null))[_0x039f('0x28')](handleError(_0x292862,null));};exports[_0x039f('0x5f')]=function(_0x3cbded,_0x5cade1){return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0x3cbded[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x5cade1,null))[_0x039f('0x34')](removeEntity(_0x5cade1,null))[_0x039f('0x28')](handleError(_0x5cade1,null));};exports[_0x039f('0x61')]=function(_0xd6503c,_0x4f7208){return db[_0x039f('0x3d')][_0x039f('0x61')]()[_0x039f('0x34')](respondWithResult(_0x4f7208,null))[_0x039f('0x28')](handleError(_0x4f7208,null));};exports[_0x039f('0x62')]=function(_0x2c0364,_0x94a8a7,_0x15b68b){if(_0x2c0364[_0x039f('0x5e')]['id']){delete _0x2c0364[_0x039f('0x5e')]['id'];}return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x2c0364['params']['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x94a8a7,null))[_0x039f('0x34')](function(_0xfd6dd1){if(_0xfd6dd1){_0x2c0364['body'][_0x039f('0x63')]=_0xfd6dd1['id'];return db[_0x039f('0x64')][_0x039f('0x59')](_0x2c0364[_0x039f('0x5e')]);}})[_0x039f('0x34')](respondWithResult(_0x94a8a7,null))[_0x039f('0x28')](handleError(_0x94a8a7,null));};exports[_0x039f('0x65')]=function(_0x581ff6,_0x804293,_0x7591db){var _0x4f74aa={'raw':![],'where':{}};var _0x3c917b={};var _0x749505={'count':0x0,'rows':[]};return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x581ff6[_0x039f('0x60')]['id']}})['then'](handleEntityNotFound(_0x804293,null))[_0x039f('0x34')](function(_0x3621f9){if(_0x3621f9){_0x3c917b[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0x64')][_0x039f('0x3e')]);_0x3c917b[_0x039f('0x43')]=_[_0x039f('0x44')](_0x581ff6[_0x039f('0x43')]);_0x3c917b['filters']=_[_0x039f('0x45')](_0x3c917b[_0x039f('0x42')],_0x3c917b[_0x039f('0x43')]);_0x4f74aa['attributes']=_[_0x039f('0x45')](_0x3c917b[_0x039f('0x42')],qs[_0x039f('0x47')](_0x581ff6['query'][_0x039f('0x47')]));_0x4f74aa[_0x039f('0x46')]=_0x4f74aa[_0x039f('0x46')][_0x039f('0x48')]?_0x4f74aa[_0x039f('0x46')]:_0x3c917b[_0x039f('0x42')];if(!_0x581ff6['query'][_0x039f('0x49')](_0x039f('0x4a'))){_0x4f74aa[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x581ff6['query'][_0x039f('0x2c')]);_0x4f74aa[_0x039f('0x2e')]=qs['offset'](_0x581ff6[_0x039f('0x43')][_0x039f('0x2e')]);}_0x4f74aa[_0x039f('0x4b')]=qs['sort'](_0x581ff6[_0x039f('0x43')][_0x039f('0x4c')]);_0x4f74aa['where']=qs['filters'](_[_0x039f('0x67')](_0x581ff6[_0x039f('0x43')],_0x3c917b[_0x039f('0x56')]));_0x4f74aa[_0x039f('0x4d')][_0x039f('0x63')]=_0x3621f9['id'];if(_0x581ff6['query'][_0x039f('0x4e')]){_0x4f74aa[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x4f74aa[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x4f74aa[_0x039f('0x46')],function(_0x11e26c){var _0x540fb7={};_0x540fb7[_0x11e26c]={'$like':'%'+_0x581ff6[_0x039f('0x43')][_0x039f('0x4e')]+'%'};return _0x540fb7;})});}_0x4f74aa=_[_0x039f('0x4f')]({},_0x4f74aa,_0x581ff6['options']);return db[_0x039f('0x64')][_0x039f('0x2d')]({'where':_0x4f74aa[_0x039f('0x4d')]})[_0x039f('0x34')](function(_0x53e8d4){_0x749505['count']=_0x53e8d4;if(_0x581ff6['query'][_0x039f('0x57')]){_0x4f74aa[_0x039f('0x51')]=[{'all':!![]}];}return db[_0x039f('0x64')]['findAll'](_0x4f74aa);})[_0x039f('0x34')](function(_0x249ca7){_0x749505[_0x039f('0x53')]=_0x249ca7;return _0x749505;});}})[_0x039f('0x34')](respondWithFilteredResult(_0x804293,_0x4f74aa))[_0x039f('0x28')](handleError(_0x804293,null));};exports['removeDispositions']=function(_0x101bc3,_0x21f7ab,_0x18845c){return db[_0x039f('0x3d')]['find']({'where':{'id':_0x101bc3[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x21f7ab,null))['then'](function(_0xcc8785){if(_0xcc8785){return _0xcc8785[_0x039f('0x68')](_0x101bc3[_0x039f('0x43')][_0x039f('0x69')]);}})[_0x039f('0x34')](respondWithStatusCode(_0x21f7ab,null))['catch'](handleError(_0x21f7ab,null));};exports['addAnswer']=function(_0x1a1670,_0xbaad69,_0x203263){if(_0x1a1670[_0x039f('0x5e')]['id']){delete _0x1a1670[_0x039f('0x5e')]['id'];}return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x1a1670[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0xbaad69,null))[_0x039f('0x34')](function(_0xfb11de){if(_0xfb11de){_0x1a1670[_0x039f('0x5e')][_0x039f('0x63')]=_0xfb11de['id'];return db[_0x039f('0x6a')][_0x039f('0x59')](_0x1a1670[_0x039f('0x5e')]);}})[_0x039f('0x34')](respondWithResult(_0xbaad69,null))[_0x039f('0x28')](handleError(_0xbaad69,null));};exports['getAnswers']=function(_0xdcbd33,_0x148a10,_0x666f66){var _0x3852d1={'raw':![],'where':{}};var _0x508397={};var _0x202440={'count':0x0,'rows':[]};return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0xdcbd33[_0x039f('0x60')]['id']}})['then'](handleEntityNotFound(_0x148a10,null))[_0x039f('0x34')](function(_0x573d9f){if(_0x573d9f){_0x508397[_0x039f('0x42')]=_[_0x039f('0x44')](db['CannedAnswer'][_0x039f('0x3e')]);_0x508397[_0x039f('0x43')]=_['keys'](_0xdcbd33[_0x039f('0x43')]);_0x508397[_0x039f('0x56')]=_['intersection'](_0x508397['model'],_0x508397[_0x039f('0x43')]);_0x3852d1[_0x039f('0x46')]=_['intersection'](_0x508397[_0x039f('0x42')],qs['fields'](_0xdcbd33[_0x039f('0x43')][_0x039f('0x47')]));_0x3852d1['attributes']=_0x3852d1['attributes']['length']?_0x3852d1[_0x039f('0x46')]:_0x508397[_0x039f('0x42')];if(!_0xdcbd33['query'][_0x039f('0x49')](_0x039f('0x4a'))){_0x3852d1[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0xdcbd33[_0x039f('0x43')][_0x039f('0x2c')]);_0x3852d1[_0x039f('0x2e')]=qs[_0x039f('0x2e')](_0xdcbd33['query'][_0x039f('0x2e')]);}_0x3852d1[_0x039f('0x4b')]=qs['sort'](_0xdcbd33[_0x039f('0x43')][_0x039f('0x4c')]);_0x3852d1[_0x039f('0x4d')]=qs['filters'](_['pick'](_0xdcbd33[_0x039f('0x43')],_0x508397[_0x039f('0x56')]));_0x3852d1[_0x039f('0x4d')][_0x039f('0x63')]=_0x573d9f['id'];if(_0xdcbd33[_0x039f('0x43')]['filter']){_0x3852d1[_0x039f('0x4d')]=_['merge'](_0x3852d1['where'],{'$or':_[_0x039f('0x3c')](_0x3852d1[_0x039f('0x46')],function(_0x51c276){var _0x20271f={};_0x20271f[_0x51c276]={'$like':'%'+_0xdcbd33[_0x039f('0x43')]['filter']+'%'};return _0x20271f;})});}_0x3852d1=_[_0x039f('0x4f')]({},_0x3852d1,_0xdcbd33[_0x039f('0x50')]);return db[_0x039f('0x6a')][_0x039f('0x2d')]({'where':_0x3852d1[_0x039f('0x4d')]})[_0x039f('0x34')](function(_0x568d71){_0x202440['count']=_0x568d71;if(_0xdcbd33[_0x039f('0x43')][_0x039f('0x57')]){_0x3852d1[_0x039f('0x51')]=[{'all':!![]}];}return db['CannedAnswer'][_0x039f('0x52')](_0x3852d1);})[_0x039f('0x34')](function(_0x3c8c65){_0x202440['rows']=_0x3c8c65;return _0x202440;});}})['then'](respondWithFilteredResult(_0x148a10,_0x3852d1))['catch'](handleError(_0x148a10,null));};exports['removeAnswers']=function(_0x5e3a3d,_0x27b966,_0x25db2e){return db[_0x039f('0x3d')]['find']({'where':{'id':_0x5e3a3d[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x27b966,null))[_0x039f('0x34')](function(_0x33760b){if(_0x33760b){return _0x33760b[_0x039f('0x6b')](_0x5e3a3d[_0x039f('0x43')][_0x039f('0x69')]);}})['then'](respondWithStatusCode(_0x27b966,null))['catch'](handleError(_0x27b966,null));};exports['notify']=function(_0x503f34,_0x1c6677,_0x98512c){var _0x29515b={'channel':_0x039f('0x6c')};var _0x28f93d=[];var _0x36e825=[];var _0x165954={};return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0x503f34[_0x039f('0x60')]['id']},'include':[{'model':db[_0x039f('0x6d')],'as':_0x039f('0x6e')}]})[_0x039f('0x34')](handleEntityNotFound(_0x1c6677,null))['then'](function(_0x34a181){_0x29515b[_0x039f('0x6f')]=_0x34a181;_0x29515b[_0x039f('0x70')]=_['orderBy'](_0x34a181[_0x039f('0x6e')],[_0x039f('0x71')],['asc']);if(_0x29515b[_0x039f('0x6f')]['Applications']){delete _0x29515b['account'][_0x039f('0x6e')];}return db[_0x039f('0x72')][_0x039f('0x61')]();})[_0x039f('0x34')](function(_0x449400){if(!_0x449400){throw new db[(_0x039f('0x73'))][(_0x039f('0x74'))](_0x039f('0x75'));}_0x28f93d=_[_0x039f('0x76')](_[_0x039f('0x44')](_0x449400),[_0x039f('0x77'),_0x039f('0x78')]);_0x36e825=_[_0x039f('0x76')](_[_0x039f('0x44')](_0x449400),['createdAt',_0x039f('0x78'),'CompanyId','ListId']);_0x29515b[_0x039f('0x5e')]={'mapKey':_0x039f('0x79')};if(_0x29515b[_0x039f('0x6f')][_0x039f('0x40')]){switch(_0x29515b['account'][_0x039f('0x40')]){case _0x039f('0x7a'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34['body'][_0x039f('0x7c')];_0x29515b['body'][_0x039f('0x5e')]=_0x503f34['body'][_0x039f('0x7d')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x7f')];break;case _0x039f('0x80'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]='+'+_0x503f34[_0x039f('0x5e')]['sender'];_0x29515b[_0x039f('0x5e')]['body']=_0x503f34[_0x039f('0x5e')][_0x039f('0x81')];break;case _0x039f('0x82'):_0x29515b['body'][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x7b')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')]['message'];break;case _0x039f('0x83'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')]['from'];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x5e')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x84')];break;case _0x039f('0x85'):_0x29515b['body'][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x7c')];_0x29515b[_0x039f('0x5e')]['body']=_0x503f34['body'][_0x039f('0x86')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x87')];break;case'infobip':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]='+'+_0x503f34[_0x039f('0x5e')][_0x039f('0x88')][0x0][_0x039f('0x7b')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34['body'][_0x039f('0x88')][0x0]['text'];_0x29515b['body'][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x88')][0x0][_0x039f('0x7e')];break;case _0x039f('0x89'):_0x29515b[_0x039f('0x5e')]['from']=_0x503f34[_0x039f('0x5e')][_0x039f('0x8a')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x8b')]['message'];break;case _0x039f('0x8c'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')]['fromNumber'];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x81')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x8d')];break;case _0x039f('0x8e'):_0x29515b['body'][_0x039f('0x7e')]=_0x503f34[_0x039f('0x5e')][0x0][_0x039f('0x26')]['id'];_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')][0x0][_0x039f('0x26')][_0x039f('0x7b')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][0x0][_0x039f('0x26')][_0x039f('0x81')];break;case _0x039f('0x8f'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')]['from'];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')]['message'];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x90')];break;}}if(_0x29515b['body']['id']){delete _0x29515b[_0x039f('0x5e')]['id'];}if(_[_0x039f('0x91')](_0x29515b['body'][_0x039f('0x7b')])){throw new db['Sequelize']['ValidationError'](_0x039f('0x92'));}if(_['isNil'](_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')])||_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]===''){throw new db[(_0x039f('0x73'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x039f('0x91')](_0x29515b['body'][_0x039f('0x93')])){throw new db['Sequelize']['ValidationError'](_0x039f('0x94')+_0x36e825);}if(!_[_0x039f('0x95')](_0x36e825,_0x29515b[_0x039f('0x5e')][_0x039f('0x93')])){throw new db[(_0x039f('0x73'))][(_0x039f('0x74'))](_0x039f('0x96')+_0x36e825);}_0x165954[_0x29515b['body'][_0x039f('0x93')]]=_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')];return db[_0x039f('0x97')]['find']({'where':{'id':_0x29515b['account'][_0x039f('0x98')]},'include':[{'model':db['CmContact'],'as':_0x039f('0x99'),'where':_0x165954,'limit':0x1,'order':[['updatedAt',_0x039f('0x9a')]]}]});})[_0x039f('0x34')](handleEntityNotFound(_0x1c6677,null))[_0x039f('0x34')](function(_0x261c66){if(_0x261c66){_0x29515b['list']=_[_0x039f('0x9b')](_0x261c66,['Contacts']);if(_0x261c66[_0x039f('0x99')][_0x039f('0x48')]){return _0x261c66[_0x039f('0x99')][0x0];}var _0x55ee75=_[_0x039f('0x9c')](_0x29515b[_0x039f('0x5e')],{'firstName':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')],'ListId':_0x261c66['id']});_0x55ee75[_0x29515b[_0x039f('0x5e')]['mapKey']]=_0x29515b[_0x039f('0x5e')]['from'];return db[_0x039f('0x72')][_0x039f('0x59')](_0x55ee75,{'fields':_0x28f93d,'raw':!![]});}})['then'](handleEntityNotFound(_0x1c6677,null))['then'](function(_0x1a8070){if(_0x1a8070){_0x29515b[_0x039f('0x9d')]=_0x1a8070;var _0x45debb={'ContactId':_0x1a8070['id'],'phone':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')],'SmsAccountId':_0x503f34[_0x039f('0x60')]['id']};var _0x3d1e49={'ContactId':_0x1a8070['id'],'SmsAccountId':_0x503f34[_0x039f('0x60')]['id'],'closed':![]};return db[_0x039f('0x9e')][_0x039f('0x58')]({'where':_0x3d1e49})['then'](function(_0x52e93a){if(_0x52e93a){return[_0x52e93a,![]];}return db[_0x039f('0x9e')]['create'](_0x45debb)[_0x039f('0x34')](function(_0x1752d2){return[_0x1752d2,!![]];});});}})['spread'](function(_0x347a60,_0x5a3954){_0x29515b[_0x039f('0x9f')]=_0x347a60[_0x039f('0x5b')]({'plain':!![]});_0x29515b['interaction']['created']=![];if(_0x5a3954){if(_0x29515b[_0x039f('0x6f')][_0x039f('0xa0')]){_0x29515b[_0x039f('0x70')][_0x039f('0xa1')]({'id':0x0,'priority':_0x29515b['applications']['length']+0x1,'app':_0x039f('0xa2'),'appdata':'unmanaged','interval':_0x039f('0xa3')});}_0x29515b['interaction'][_0x039f('0xa4')]=!![];}return db[_0x039f('0xa5')][_0x039f('0x59')]({'phone':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')],'messageId':_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')],'body':_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')],'SmsAccountId':_0x503f34['params']['id'],'SmsInteractionId':_0x347a60['id'],'direction':'in','ContactId':_0x347a60[_0x039f('0xa6')],'AttachmentId':_0x29515b[_0x039f('0x5e')][_0x039f('0xa7')]});})['then'](function(_0x599ad1){_0x29515b['message']=_0x599ad1;if(_0x29515b['interaction']['UserId']){return db[_0x039f('0xa8')][_0x039f('0x58')]({'attributes':['id',_0x039f('0x39')],'where':{'id':_0x29515b[_0x039f('0x9f')][_0x039f('0xa9')]}})[_0x039f('0x34')](function(_0x32bf92){if(_0x32bf92){_0x29515b[_0x039f('0x70')][_0x039f('0xaa')]({'id':0x0,'priority':0x0,'app':_0x039f('0xab'),'appdata':_0x32bf92[_0x039f('0x39')]+','+(_0x29515b[_0x039f('0x6f')][_0x039f('0xac')]||0xa),'interval':_0x039f('0xa3')});}return respondWithRpcPromise('Start',_0x039f('0xad'),_0x29515b);});}return respondWithRpcPromise('Start',_0x039f('0xad'),_0x29515b);})['then'](function(_0x549653){if(_0x549653){var _0xa549f=0xc8;var _0x5e0142=_0x039f('0xae');logger[_0x039f('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5e0142,_0xa549f,_0x039f('0xaf'));logger[_0x039f('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x5e0142,_0xa549f,_0x039f('0xaf'),JSON[_0x039f('0xb0')](_0x549653));if(_0x29515b['account'][_0x039f('0x40')]===_0x039f('0x7a')){return _0x1c6677[_0x039f('0x2a')](_0xa549f)['set'](_0x039f('0xb1'),'text/xml')['send'](_0x039f('0xb2'));}else{return _0x1c6677['status'](_0xa549f)[_0x039f('0x31')](_0x549653);}}})['catch'](handleError(_0x1c6677,null));};exports[_0x039f('0xb3')]=function(_0x4e02d4,_0x1bd27c){var _0x46bd5d=_0x4e02d4[_0x039f('0x60')]['id'];var _0x5217f6=_0x4e02d4[_0x039f('0x5e')];var _0x21ea65=0xc8;var _0x7ff872=null;return db[_0x039f('0xb4')][_0x039f('0xb5')]({'isolationLevel':db['sequelize'][_0x039f('0xb6')][_0x039f('0xb7')]['READ_COMMITTED']},function(_0x3d6b8f){return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x46bd5d},'transaction':_0x3d6b8f})[_0x039f('0x34')](function(_0x22c79d){if(_0x22c79d){return db[_0x039f('0x6d')][_0x039f('0x5f')]({'where':{'SmsAccountId':_0x46bd5d},'transaction':_0x3d6b8f})[_0x039f('0x34')](function(){var _0x245f50=_['map'](_0x5217f6,function(_0x3c41fb){_0x3c41fb[_0x039f('0x63')]=_0x46bd5d;return _0x3c41fb;});return db[_0x039f('0x6d')][_0x039f('0xb8')](_0x245f50,{'transaction':_0x3d6b8f});});}else{_0x21ea65=0x194;_0x7ff872=[];}});})['then'](function(){if(_0x21ea65!==0x194){return db[_0x039f('0x6d')][_0x039f('0xb9')]({'where':{'SmsAccountId':_0x46bd5d},'order':_0x039f('0x71')})[_0x039f('0x34')](function(_0x39fce4){_0x7ff872=_0x39fce4;});}})[_0x039f('0x28')](function(_0x2af58a){_0x21ea65=0x1f4;logger['error'](_0x2af58a[_0x039f('0x38')]);if(_0x2af58a[_0x039f('0x39')]){delete _0x2af58a[_0x039f('0x39')];}_0x7ff872=_0x2af58a;})[_0x039f('0xba')](function(){if(_0x7ff872===null){_0x1bd27c['sendStatus'](_0x21ea65);}else{if(_0x21ea65===0x1f4){_0x1bd27c[_0x039f('0x2a')](_0x21ea65)[_0x039f('0x3a')](_0x7ff872);}else{_0x1bd27c['status'](_0x21ea65)[_0x039f('0x31')](_0x7ff872);}}});};exports['getApplications']=function(_0x3aea81,_0x2ab2a6,_0x5993a6){var _0x20f851={};var _0xd72bad={};var _0x318d70;var _0x35665b;return db['SmsAccount']['findOne']({'where':{'id':_0x3aea81[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x2ab2a6,null))[_0x039f('0x34')](function(_0x3d22b4){if(_0x3d22b4){_0x318d70=_0x3d22b4;_0xd72bad[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0x6d')][_0x039f('0x3e')]);_0xd72bad[_0x039f('0x43')]=_[_0x039f('0x44')](_0x3aea81['query']);_0xd72bad[_0x039f('0x56')]=_[_0x039f('0x45')](_0xd72bad['model'],_0xd72bad[_0x039f('0x43')]);_0x20f851[_0x039f('0x46')]=_[_0x039f('0x45')](_0xd72bad[_0x039f('0x42')],qs[_0x039f('0x47')](_0x3aea81['query']['fields']));_0x20f851['attributes']=_0x20f851[_0x039f('0x46')]['length']?_0x20f851[_0x039f('0x46')]:_0xd72bad[_0x039f('0x42')];_0x20f851[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x3aea81[_0x039f('0x43')][_0x039f('0x4c')]);_0x20f851[_0x039f('0x4d')]=qs[_0x039f('0x56')](_[_0x039f('0x67')](_0x3aea81[_0x039f('0x43')],_0xd72bad[_0x039f('0x56')]));if(_0x3aea81['query'][_0x039f('0x4e')]){_0x20f851[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x20f851[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x20f851[_0x039f('0x46')],function(_0xae941){var _0x19d5d1={};_0x19d5d1[_0xae941]={'$like':'%'+_0x3aea81[_0x039f('0x43')][_0x039f('0x4e')]+'%'};return _0x19d5d1;})});}_0x20f851=_[_0x039f('0x4f')]({},_0x20f851,_0x3aea81[_0x039f('0x50')]);return _0x318d70[_0x039f('0xbb')](_0x20f851);}})[_0x039f('0x34')](function(_0x3d2754){if(_0x3d2754){_0x35665b=_0x3d2754[_0x039f('0x48')];if(!_0x3aea81[_0x039f('0x43')][_0x039f('0x49')]('nolimit')){_0x20f851[_0x039f('0x2c')]=qs['limit'](_0x3aea81[_0x039f('0x43')][_0x039f('0x2c')]);_0x20f851['offset']=qs[_0x039f('0x2e')](_0x3aea81[_0x039f('0x43')][_0x039f('0x2e')]);}return _0x318d70[_0x039f('0xbb')](_0x20f851);}})['then'](function(_0xef5bf0){if(_0xef5bf0){return _0xef5bf0?{'count':_0x35665b,'rows':_0xef5bf0}:null;}})[_0x039f('0x34')](respondWithResult(_0x2ab2a6,null))[_0x039f('0x28')](handleError(_0x2ab2a6,null));};exports[_0x039f('0xbc')]=function(_0x44c205,_0x20b93a,_0x569921){var _0x1d7408={'raw':![],'where':{}};var _0x59c589={};var _0x5d54ed={'count':0x0,'rows':[]};return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x44c205[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x20b93a,null))[_0x039f('0x34')](function(_0x377b87){if(_0x377b87){_0x59c589['model']=_[_0x039f('0x44')](db[_0x039f('0x9e')][_0x039f('0x3e')]);_0x59c589['query']=_['keys'](_0x44c205[_0x039f('0x43')]);_0x59c589[_0x039f('0x56')]=_[_0x039f('0x45')](_0x59c589[_0x039f('0x42')],_0x59c589[_0x039f('0x43')]);_0x1d7408[_0x039f('0x46')]=_[_0x039f('0x45')](_0x59c589[_0x039f('0x42')],qs[_0x039f('0x47')](_0x44c205[_0x039f('0x43')][_0x039f('0x47')]));_0x1d7408['attributes']=_0x1d7408[_0x039f('0x46')][_0x039f('0x48')]?_0x1d7408[_0x039f('0x46')]:_0x59c589[_0x039f('0x42')];if(!_0x44c205[_0x039f('0x43')][_0x039f('0x49')](_0x039f('0x4a'))){_0x1d7408[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x44c205['query']['limit']);_0x1d7408[_0x039f('0x2e')]=qs[_0x039f('0x2e')](_0x44c205[_0x039f('0x43')]['offset']);}_0x1d7408[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x44c205['query'][_0x039f('0x4c')]);_0x1d7408['where']=qs[_0x039f('0x56')](_[_0x039f('0x67')](_0x44c205[_0x039f('0x43')],_0x59c589['filters']));_0x1d7408[_0x039f('0x4d')][_0x039f('0x63')]=_0x377b87['id'];if(_0x44c205[_0x039f('0x43')][_0x039f('0x4e')]){_0x1d7408[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x1d7408[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x1d7408['attributes'],function(_0x49fa1a){var _0x5a4a7c={};_0x5a4a7c[_0x49fa1a]={'$like':'%'+_0x44c205['query'][_0x039f('0x4e')]+'%'};return _0x5a4a7c;})});}_0x1d7408=_[_0x039f('0x4f')]({},_0x1d7408,_0x44c205[_0x039f('0x50')]);return db[_0x039f('0x9e')][_0x039f('0x2d')]({'where':_0x1d7408['where']})[_0x039f('0x34')](function(_0x2eb623){_0x5d54ed[_0x039f('0x2d')]=_0x2eb623;if(_0x44c205[_0x039f('0x43')][_0x039f('0x57')]){_0x1d7408[_0x039f('0x51')]=[{'model':db[_0x039f('0x72')],'as':_0x039f('0xbd'),'required':![]},{'model':db[_0x039f('0xa8')],'as':_0x039f('0xbe'),'attributes':[_0x039f('0x39'),_0x039f('0xbf'),_0x039f('0xc0')],'required':![]},{'model':db[_0x039f('0xc1')],'as':'Tags','attributes':['id',_0x039f('0x39'),_0x039f('0xc2')],'where':_0x44c205[_0x039f('0x43')][_0x039f('0xc3')]?{'id':_0x44c205[_0x039f('0x43')][_0x039f('0xc3')]}:undefined,'required':_0x44c205['query'][_0x039f('0xc3')]?!![]:![]}];}return db[_0x039f('0x9e')][_0x039f('0x52')](_0x1d7408);})[_0x039f('0x34')](function(_0x1cd65a){_0x5d54ed['rows']=_0x1cd65a;return _0x5d54ed;});}})[_0x039f('0x34')](respondWithFilteredResult(_0x20b93a,_0x1d7408))['catch'](handleError(_0x20b93a,null));};exports['send']=function(_0x4ec1f7,_0x5ec81c,_0x48c7d9){var _0x54f68e,_0x67d667,_0x4fd0a1;if(_[_0x039f('0x91')](_0x4ec1f7['body'][_0x039f('0x5e')])||_0x4ec1f7[_0x039f('0x5e')][_0x039f('0x5e')]===''){throw new db['Sequelize'][(_0x039f('0x74'))](_0x039f('0xc4'));}if(_[_0x039f('0x91')](_0x4ec1f7[_0x039f('0x5e')]['to'])){throw new db['Sequelize']['ValidationError'](_0x039f('0xc5'));}_0x54f68e=_0x4ec1f7['body']['to'];return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x4ec1f7[_0x039f('0x60')]['id']},'include':[{'model':db[_0x039f('0x97')],'as':_0x039f('0xc6'),'include':[{'model':db[_0x039f('0x72')],'as':_0x039f('0x99'),'where':{'mobile':_0x54f68e},'limit':0x1,'order':[[_0x039f('0x78'),'DESC']]}]}]})[_0x039f('0x34')](handleEntityNotFound(_0x5ec81c,null))[_0x039f('0x34')](function(_0x5b5461){if(_0x5b5461&&_0x5b5461[_0x039f('0xc6')]){_0x67d667=_0x5b5461[_0x039f('0x5b')]({'plain':!![]});if(_0x67d667[_0x039f('0xc6')]&&_0x67d667[_0x039f('0xc6')][_0x039f('0x99')][_0x039f('0x48')]){return _0x67d667[_0x039f('0xc6')][_0x039f('0x99')][0x0];}return db[_0x039f('0x72')]['create'](_[_0x039f('0x9c')](_0x4ec1f7['body'],{'firstName':_0x54f68e,'mobile':_0x54f68e,'phone':_0x54f68e,'ListId':_0x67d667['ListId']}));}})[_0x039f('0x34')](handleEntityNotFound(_0x5ec81c,null))['then'](function(_0x302e86){if(_0x302e86){_0x4fd0a1=_0x302e86;return db[_0x039f('0x9e')][_0x039f('0x58')]({'where':{'ContactId':_0x4fd0a1['id'],'closed':![],'SmsAccountId':_0x67d667['id']}})[_0x039f('0x34')](function(_0x339384){if(_0x339384){return[_0x339384,![]];}return db[_0x039f('0x9e')][_0x039f('0x59')]({'UserId':_0x4ec1f7[_0x039f('0xc7')]['id'],'ContactId':_0x4fd0a1['id'],'SmsAccountId':_0x67d667['id'],'phone':_0x54f68e,'firstMsgDirection':_0x039f('0xc8'),'Messages':[_[_0x039f('0x4f')](_0x4ec1f7[_0x039f('0x5e')],{'read':![],'body':_0x4ec1f7[_0x039f('0x5e')][_0x039f('0x5e')],'phone':_0x54f68e,'SmsAccountId':_0x67d667['id'],'UserId':_0x4ec1f7[_0x039f('0xc7')]['id'],'ContactId':_0x4fd0a1['id']})]},{'include':[{'model':db[_0x039f('0xa5')],'as':_0x039f('0xc9')}]})[_0x039f('0x34')](function(_0x56b0d1){return[_0x56b0d1,!![]];});});}})[_0x039f('0xca')](function(_0x13ee86,_0x4512cb){if(_0x4512cb){return _0x13ee86;}return db[_0x039f('0xa5')]['create'](_['merge'](_0x4ec1f7['body'],{'read':![],'body':_0x4ec1f7[_0x039f('0x5e')][_0x039f('0x5e')],'phone':_0x54f68e,'SmsAccountId':_0x67d667['id'],'SmsInteractionId':_0x13ee86['id'],'UserId':_0x4ec1f7[_0x039f('0xc7')]['id'],'ContactId':_0x4fd0a1['id']}))[_0x039f('0x34')](function(_0x49add2){_0x13ee86[_0x039f('0xcb')][_0x039f('0xc9')]=[];_0x13ee86[_0x039f('0xcb')][_0x039f('0xc9')][_0x039f('0xa1')](_0x49add2[_0x039f('0xcb')]);return _0x13ee86;});})['then'](respondWithResult(_0x5ec81c,null))[_0x039f('0x28')](handleError(_0x5ec81c,null));};exports[_0x039f('0x2a')]=function(_0x5217f2,_0x1983f6,_0x199c1f){if(_0x5217f2[_0x039f('0x5e')]['id']){delete _0x5217f2['body']['id'];}var _0x7309b7,_0x4d7c57,_0x305be9;return db[_0x039f('0x3d')]['find']({'where':{'id':_0x5217f2[_0x039f('0x60')]['id']}})['then'](handleEntityNotFound(_0x1983f6,null))[_0x039f('0x34')](function(_0x3d23c9){if(_0x3d23c9){_0x305be9=_0x3d23c9;logger[_0x039f('0x23')](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0xcc'),_0x3d23c9[_0x039f('0x40')],util['inspect'](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));switch(_0x3d23c9['type']){case _0x039f('0x80'):if(_0x5217f2['body'][_0x039f('0xcd')]&&_0x5217f2['body']['status']){_0x4d7c57=_0x5217f2['body'][_0x039f('0x2a')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')]['skebby_dispatch_id']}});}break;case _0x039f('0x82'):if(_0x5217f2[_0x039f('0x5e')]['requestid']&&_0x5217f2[_0x039f('0x5e')][_0x039f('0xce')]){_0x4d7c57=_0x5217f2['body']['statusInt'];return db['SmsMessage'][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')]['requestid']}});}break;case _0x039f('0x83'):if(_0x5217f2['body'][_0x039f('0x84')]&&_0x5217f2[_0x039f('0x5e')][_0x039f('0xcf')]){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][_0x039f('0xcf')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')]['message_id']}});}break;case'infobip':var _0x2510e9=_0x5217f2[_0x039f('0x5e')][_0x039f('0x88')][0x0];if(_0x2510e9[_0x039f('0x7e')]&&_0x2510e9[_0x039f('0x2a')][_0x039f('0xd0')]===_0x039f('0xd1')){_0x4d7c57=_0x2510e9[_0x039f('0x2a')]['groupName'];return db[_0x039f('0xa5')]['find']({'where':{'messageId':_0x2510e9[_0x039f('0x7e')]}});}break;case'clickatell':if(_0x5217f2[_0x039f('0x5e')]['messageId']&&_0x5217f2['body'][_0x039f('0x2a')]){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][_0x039f('0x2a')];return db['SmsMessage'][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')][_0x039f('0x7e')]}});}break;case _0x039f('0x8e'):if(_0x5217f2[_0x039f('0x5e')][0x0][_0x039f('0x26')]['id']){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][0x0][_0x039f('0x40')];return db[_0x039f('0xa5')]['find']({'where':{'messageId':_0x5217f2[_0x039f('0x5e')][0x0][_0x039f('0x26')]['id']}});}break;case _0x039f('0x8f'):if(_0x5217f2[_0x039f('0x5e')][_0x039f('0xd2')]&&_0x5217f2[_0x039f('0x5e')]['status']){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][_0x039f('0x2a')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')][_0x039f('0xd2')]}});}break;}}})[_0x039f('0x34')](handleEntityNotFound(_0x1983f6,null))[_0x039f('0x34')](function(_0x573d2b){if(_0x573d2b){_0x7309b7=_0x573d2b;switch(_0x305be9['type']){case _0x039f('0x80'):if(_0x4d7c57===_0x039f('0xd1')){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger['error'](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0x80'),util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x4d7c57==='1'){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),'status','skebby',util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x039f('0x83'):if(!_0x5217f2[_0x039f('0x5e')][_0x039f('0xd4')]&&_0x4d7c57>=0xc8&&_0x4d7c57<=0xce){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x039f('0x2a'),_0x039f('0x83'),util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x039f('0xd5'):var _0x2b6066=_0x5217f2[_0x039f('0x5e')]['results'][0x0];if(_0x2b6066[_0x039f('0x2a')]['groupName']==='DELIVERED'){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),'status','infobip',util['inspect'](_0x5217f2['body'],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x4d7c57=='DELIVERED_TO_GATEWAY'||_0x4d7c57==_0x039f('0xd6')){return _0x7309b7['update']({'read':!![]});}else{logger['error'](_0x039f('0x24'),'status',_0x039f('0x8c'),util[_0x039f('0xd3')](_0x5217f2['body'],{'showHidden':![],'depth':null}));}break;case _0x039f('0x8e'):if(_0x4d7c57=='message-delivered'){return _0x7309b7['update']({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0x8e'),util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x4d7c57===_0x039f('0xd7')||_0x4d7c57===_0x039f('0xd8')){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),'status',_0x039f('0x8f'),util['inspect'](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;}return _0x7309b7;}})[_0x039f('0x34')](respondWithResult(_0x1983f6,null))[_0x039f('0x28')](handleError(_0x1983f6,null));};exports[_0x039f('0xd9')]=function(_0x4af516,_0x3ee39c,_0x3040a9){var _0x3e9f18,_0xe65df0,_0x5250b8;return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0x4af516[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x3ee39c,null))[_0x039f('0x34')](function(_0xdd929d){if(_0xdd929d){_0x5250b8=_0xdd929d;logger[_0x039f('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x039f('0xcc'),_0xdd929d[_0x039f('0x40')],util[_0x039f('0xd3')](_0x4af516[_0x039f('0x43')],{'showHidden':![],'depth':null}));switch(_0xdd929d[_0x039f('0x40')]){case _0x039f('0x89'):if(_0x4af516[_0x039f('0x43')][_0x039f('0xda')]&&_0x4af516[_0x039f('0x43')][_0x039f('0xdb')]){_0xe65df0=_0x4af516[_0x039f('0x43')][_0x039f('0xdb')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x4af516['query'][_0x039f('0xda')]}});}break;}}})['then'](handleEntityNotFound(_0x3ee39c,null))[_0x039f('0x34')](function(_0x4b3bb1){if(_0x4b3bb1){_0x3e9f18=_0x4b3bb1;switch(_0x5250b8[_0x039f('0x40')]){case _0x039f('0x89'):if(_0xe65df0==='2'||_0xe65df0==='6'){return _0x3e9f18['update']({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0x89'),util[_0x039f('0xd3')](_0x4af516[_0x039f('0x43')],{'showHidden':![],'depth':null}));};break;}return _0x3e9f18;}})[_0x039f('0x34')](respondWithResult(_0x3ee39c,null))[_0x039f('0x28')](handleError(_0x3ee39c,null));};exports[_0x039f('0xdc')]=function(_0x235ec7,_0x44c545,_0x65f2f9){return db[_0x039f('0x3d')]['find']({'where':{'id':_0x235ec7['params']['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x44c545,null))['then'](function(_0x2fbf6d){if(_0x2fbf6d){return _0x2fbf6d['addAgents'](_0x235ec7[_0x039f('0x5e')][_0x039f('0x69')],_[_0x039f('0x9b')](_0x235ec7[_0x039f('0x5e')],[_0x039f('0x69'),'id'])||{})[_0x039f('0xca')](function(_0x3c6e83){for(var _0xa31da3=0x0;_0xa31da3<_0x235ec7[_0x039f('0x5e')]['ids'][_0x039f('0x48')];_0xa31da3+=0x1){socket[_0x039f('0xdd')](_0x039f('0xde'),{'UserId':Number(_0x235ec7[_0x039f('0x5e')]['ids'][_0xa31da3]),'SmsAccountId':Number(_0x235ec7[_0x039f('0x60')]['id'])});}return _0x3c6e83;});}})['then'](respondWithResult(_0x44c545,null))['catch'](handleError(_0x44c545,null));};exports[_0x039f('0xdf')]=function(_0xea7b70,_0x27ccf2,_0x52a97a){return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0xea7b70[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x27ccf2,null))['then'](function(_0x10d6fa){if(_0x10d6fa){return _0x10d6fa[_0x039f('0xdf')](_0xea7b70[_0x039f('0x43')]['ids'])[_0x039f('0x34')](function(){if(_[_0x039f('0xe0')](_0xea7b70[_0x039f('0x43')]['ids'])){for(var _0x16ab6e=0x0;_0x16ab6e<_0xea7b70[_0x039f('0x43')]['ids'][_0x039f('0x48')];_0x16ab6e+=0x1){socket[_0x039f('0xdd')]('userSmsAccount:remove',{'UserId':Number(_0xea7b70[_0x039f('0x43')][_0x039f('0x69')][_0x16ab6e]),'SmsAccountId':Number(_0xea7b70[_0x039f('0x60')]['id'])});}}else{socket[_0x039f('0xdd')](_0x039f('0xe1'),{'UserId':Number(_0xea7b70[_0x039f('0x43')]['ids']),'SmsAccountId':Number(_0xea7b70['params']['id'])});}});}})[_0x039f('0x34')](respondWithStatusCode(_0x27ccf2,null))[_0x039f('0x28')](handleError(_0x27ccf2,null));};exports['getAgents']=function(_0x879baf,_0x1cf4de,_0x3bfc04){var _0x228195={};var _0x35a74f={};var _0x2b9f90;var _0x5f5597;return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x879baf[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x1cf4de,null))[_0x039f('0x34')](function(_0x55ebbe){if(_0x55ebbe){_0x2b9f90=_0x55ebbe;_0x35a74f[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0xa8')]['rawAttributes']);_0x35a74f[_0x039f('0x43')]=_[_0x039f('0x44')](_0x879baf[_0x039f('0x43')]);_0x35a74f[_0x039f('0x56')]=_['intersection'](_0x35a74f['model'],_0x35a74f[_0x039f('0x43')]);_0x228195['attributes']=_[_0x039f('0x45')](_0x35a74f[_0x039f('0x42')],qs[_0x039f('0x47')](_0x879baf[_0x039f('0x43')]['fields']));_0x228195[_0x039f('0x46')]=_0x228195[_0x039f('0x46')][_0x039f('0x48')]?_0x228195['attributes']:_0x35a74f['model'];_0x228195[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x879baf['query'][_0x039f('0x4c')]);_0x228195[_0x039f('0x4d')]=qs[_0x039f('0x56')](_[_0x039f('0x67')](_0x879baf[_0x039f('0x43')],_0x35a74f['filters']));if(_0x879baf[_0x039f('0x43')][_0x039f('0x4e')]){_0x228195[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x228195['where'],{'$or':_[_0x039f('0x3c')](_0x228195[_0x039f('0x46')],function(_0x1acf8b){var _0x4420e3={};_0x4420e3[_0x1acf8b]={'$like':'%'+_0x879baf[_0x039f('0x43')][_0x039f('0x4e')]+'%'};return _0x4420e3;})});}_0x228195=_[_0x039f('0x4f')]({},_0x228195,_0x879baf[_0x039f('0x50')]);return _0x2b9f90[_0x039f('0xe2')](_0x228195);}})[_0x039f('0x34')](function(_0x29e856){if(_0x29e856){_0x5f5597=_0x29e856[_0x039f('0x48')];if(!_0x879baf[_0x039f('0x43')]['hasOwnProperty']('nolimit')){_0x228195[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x879baf[_0x039f('0x43')][_0x039f('0x2c')]);_0x228195[_0x039f('0x2e')]=qs['offset'](_0x879baf[_0x039f('0x43')][_0x039f('0x2e')]);}return _0x2b9f90[_0x039f('0xe2')](_0x228195);}})[_0x039f('0x34')](function(_0x37113c){if(_0x37113c){return _0x37113c?{'count':_0x5f5597,'rows':_0x37113c}:null;}})[_0x039f('0x34')](respondWithResult(_0x1cf4de,null))['catch'](handleError(_0x1cf4de,null));};
\ No newline at end of file
+var _0x7ef3=['infobip','groupName','DELIVERED','intelepeer','redif','inspect','error_code','RECEIVED_BY_RECIPIENT','message-delivered','statusGet','message-id','state','csc','addAgents','ids','userSmsAccount:save','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','redis','socket.io-emitter','./smsAccount.socket','client','http','request','then','info','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','result','catch','end','status','offset','undefined','limit','count','set','apply','reject','update','get','SmsAccounts','UserProfileResource','destroy','sendStatus','name','send','index','Pause','SmsAccount','rawAttributes','fieldName','key','model','map','keys','filters','intersection','fields','attributes','length','query','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','options','includeAll','include','rows','show','params','mandatoryDispositionPause','merge','create','body','user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','SmsAccountId','findAll','addAnswer','CannedAnswer','getAnswers','removeAnswers','sms','SmsApplication','Applications','account','applications','orderBy','asc','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','from','Body','MessageSid','connectel','clicksend','message_id','plivo','From','Text','messageId','text','results','originatingAddress','clickatell','fromNumber','replyMessageId','bandwidth','refid','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','omit','defaults','contact','SmsInteraction','spread','autoclose','push','close','unmanaged','*,*,*,*','created','SmsMessage','ContactId','interaction','UserId','User','unshift','agent','startRouting','Start','entity\x20found','debug','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','priority','finally','json','getApplications','Contact','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','skebby','skebby_dispatch_id','requestid','statusInt','status_code'];(function(_0x304b68,_0x2d2a73){var _0x2671be=function(_0x209571){while(--_0x209571){_0x304b68['push'](_0x304b68['shift']());}};_0x2671be(++_0x2d2a73);}(_0x7ef3,0xf7));var _0x37ef=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x7ef3[_0x2b9b7f];return _0x4ed19a;};'use strict';var emlformat=require(_0x37ef('0x0'));var rimraf=require(_0x37ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x37ef('0x2'));var rp=require(_0x37ef('0x3'));var moment=require(_0x37ef('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x37ef('0x5'));var util=require('util');var path=require(_0x37ef('0x6'));var sox=require('sox');var csv=require(_0x37ef('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x37ef('0x8'));var _=require(_0x37ef('0x9'));var squel=require(_0x37ef('0xa'));var crypto=require(_0x37ef('0xb'));var jsforce=require(_0x37ef('0xc'));var deskjs=require(_0x37ef('0xd'));var toCsv=require(_0x37ef('0x7'));var querystring=require(_0x37ef('0xe'));var Papa=require(_0x37ef('0xf'));var Redis=require(_0x37ef('0x10'));var authService=require(_0x37ef('0x11'));var qs=require(_0x37ef('0x12'));var as=require(_0x37ef('0x13'));var hardwareService=require(_0x37ef('0x14'));var logger=require('../../config/logger')(_0x37ef('0x15'));var utils=require('../../config/utils');var config=require(_0x37ef('0x16'));var licenseUtil=require(_0x37ef('0x17'));var db=require('../../mysqldb')['db'];config[_0x37ef('0x18')]=_['defaults'](config[_0x37ef('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x37ef('0x19'))(new Redis(config[_0x37ef('0x18')]));require(_0x37ef('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x37ef('0x1b')][_0x37ef('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0xce2827,_0x1374f6,_0x18001e,_0xb116cb){return new BPromise(function(_0x4aca0a,_0x4a7dd5){var _0x16a45f=_0xb116cb||client;return _0x16a45f[_0x37ef('0x1d')](_0xce2827,_0x18001e)[_0x37ef('0x1e')](function(_0x4d9e37){logger[_0x37ef('0x1f')]('SmsAccount,\x20%s,\x20%s',_0x1374f6,_0x37ef('0x20'));logger['debug'](_0x37ef('0x21'),_0x1374f6,_0x37ef('0x20'),JSON[_0x37ef('0x22')](_0x4d9e37));if(_0x4d9e37[_0x37ef('0x23')]){if(_0x4d9e37[_0x37ef('0x23')][_0x37ef('0x24')]===0x1f4){logger[_0x37ef('0x23')](_0x37ef('0x25'),_0x1374f6,_0x4d9e37[_0x37ef('0x23')][_0x37ef('0x26')]);return _0x4a7dd5(_0x4d9e37[_0x37ef('0x23')][_0x37ef('0x26')]);}logger[_0x37ef('0x23')]('SmsAccount,\x20%s,\x20%s',_0x1374f6,_0x4d9e37[_0x37ef('0x23')]['message']);return _0x4aca0a(_0x4d9e37['error'][_0x37ef('0x26')]);}else{logger[_0x37ef('0x1f')](_0x37ef('0x25'),_0x1374f6,'request\x20sent');_0x4aca0a(_0x4d9e37[_0x37ef('0x27')]['message']);}})[_0x37ef('0x28')](function(_0x470fda){logger[_0x37ef('0x23')]('SmsAccount,\x20%s,\x20%s',_0x1374f6,_0x470fda);_0x4a7dd5(_0x470fda);});});}function respondWithStatusCode(_0x5e187e,_0x133c0d){_0x133c0d=_0x133c0d||0xcc;return function(_0x370c6f){if(_0x370c6f){return _0x5e187e['sendStatus'](_0x133c0d);}return _0x5e187e['status'](_0x133c0d)[_0x37ef('0x29')]();};}function respondWithResult(_0x16301e,_0xf29756){_0xf29756=_0xf29756||0xc8;return function(_0x4f763a){if(_0x4f763a){return _0x16301e[_0x37ef('0x2a')](_0xf29756)['json'](_0x4f763a);}};}function respondWithFilteredResult(_0x3b7608,_0x562198){return function(_0x1e88f8){if(_0x1e88f8){var _0x340bd9=typeof _0x562198[_0x37ef('0x2b')]===_0x37ef('0x2c')&&typeof _0x562198[_0x37ef('0x2d')]===_0x37ef('0x2c');var _0x2ffa61=_0x1e88f8[_0x37ef('0x2e')];var _0x4a3607=_0x340bd9?0x0:_0x562198[_0x37ef('0x2b')];var _0x36fc6c=_0x340bd9?_0x1e88f8['count']:_0x562198[_0x37ef('0x2b')]+_0x562198[_0x37ef('0x2d')];var _0x3a4f25;if(_0x36fc6c>=_0x2ffa61){_0x36fc6c=_0x2ffa61;_0x3a4f25=0xc8;}else{_0x3a4f25=0xce;}_0x3b7608['status'](_0x3a4f25);return _0x3b7608[_0x37ef('0x2f')]('Content-Range',_0x4a3607+'-'+_0x36fc6c+'/'+_0x2ffa61)['json'](_0x1e88f8);}return null;};}function patchUpdates(_0x524e8a){return function(_0x20e5c8){try{jsonpatch[_0x37ef('0x30')](_0x20e5c8,_0x524e8a,!![]);}catch(_0x3eca0a){return BPromise[_0x37ef('0x31')](_0x3eca0a);}return _0x20e5c8['save']();};}function saveUpdates(_0x49404c,_0x282ed7){return function(_0x250c6f){if(_0x250c6f){return _0x250c6f[_0x37ef('0x32')](_0x49404c)[_0x37ef('0x1e')](function(_0x52b8ba){return _0x52b8ba;});}return null;};}function removeEntity(_0x419ae2,_0x325a01){return function(_0x9da41d){if(_0x9da41d){return _0x9da41d['destroy']()['then'](function(){var _0x37045d=_0x9da41d[_0x37ef('0x33')]({'plain':!![]});var _0x44a63d=_0x37ef('0x34');return db[_0x37ef('0x35')][_0x37ef('0x36')]({'where':{'type':_0x44a63d,'resourceId':_0x37045d['id']}})[_0x37ef('0x1e')](function(){return _0x9da41d;});})['then'](function(){_0x419ae2[_0x37ef('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10758f,_0x1be265){return function(_0x12c994){if(!_0x12c994){_0x10758f[_0x37ef('0x37')](0x194);}return _0x12c994;};}function handleError(_0x582149,_0x215930){_0x215930=_0x215930||0x1f4;return function(_0x3f14ca){logger[_0x37ef('0x23')](_0x3f14ca['stack']);if(_0x3f14ca['name']){delete _0x3f14ca[_0x37ef('0x38')];}_0x582149[_0x37ef('0x2a')](_0x215930)[_0x37ef('0x39')](_0x3f14ca);};}exports[_0x37ef('0x3a')]=function(_0x4cf5f3,_0x4cf652){var _0x289977={'include':[{'model':db[_0x37ef('0x3b')],'as':'mandatoryDispositionPause'}]},_0xa0c71d={},_0x476528={'count':0x0,'rows':[]};var _0x427120=_['map'](db[_0x37ef('0x3c')][_0x37ef('0x3d')],function(_0x23fd07){return{'name':_0x23fd07[_0x37ef('0x3e')],'type':_0x23fd07['type'][_0x37ef('0x3f')]};});_0xa0c71d[_0x37ef('0x40')]=_[_0x37ef('0x41')](_0x427120,_0x37ef('0x38'));_0xa0c71d['query']=_[_0x37ef('0x42')](_0x4cf5f3['query']);_0xa0c71d[_0x37ef('0x43')]=_[_0x37ef('0x44')](_0xa0c71d[_0x37ef('0x40')],_0xa0c71d['query']);_0x289977['attributes']=_[_0x37ef('0x44')](_0xa0c71d[_0x37ef('0x40')],qs['fields'](_0x4cf5f3['query'][_0x37ef('0x45')]));_0x289977[_0x37ef('0x46')]=_0x289977[_0x37ef('0x46')][_0x37ef('0x47')]?_0x289977[_0x37ef('0x46')]:_0xa0c71d[_0x37ef('0x40')];if(!_0x4cf5f3[_0x37ef('0x48')][_0x37ef('0x49')](_0x37ef('0x4a'))){_0x289977[_0x37ef('0x2d')]=qs[_0x37ef('0x2d')](_0x4cf5f3[_0x37ef('0x48')][_0x37ef('0x2d')]);_0x289977[_0x37ef('0x2b')]=qs['offset'](_0x4cf5f3[_0x37ef('0x48')][_0x37ef('0x2b')]);}_0x289977[_0x37ef('0x4b')]=qs[_0x37ef('0x4c')](_0x4cf5f3['query'][_0x37ef('0x4c')]);_0x289977['where']=qs['filters'](_[_0x37ef('0x4d')](_0x4cf5f3[_0x37ef('0x48')],_0xa0c71d['filters']),_0x427120);if(_0x4cf5f3[_0x37ef('0x48')][_0x37ef('0x4e')]){_0x289977[_0x37ef('0x4f')]=_['merge'](_0x289977[_0x37ef('0x4f')],{'$or':_[_0x37ef('0x41')](_0x427120,function(_0x213251){if(_0x213251[_0x37ef('0x50')]!=='VIRTUAL'){var _0x2d56f9={};_0x2d56f9[_0x213251[_0x37ef('0x38')]]={'$like':'%'+_0x4cf5f3[_0x37ef('0x48')][_0x37ef('0x4e')]+'%'};return _0x2d56f9;}})});}_0x289977=_['merge']({},_0x289977,_0x4cf5f3[_0x37ef('0x51')]);var _0x2ba45b={'where':_0x289977['where']};return db[_0x37ef('0x3c')][_0x37ef('0x2e')](_0x2ba45b)['then'](function(_0x2a5011){_0x476528[_0x37ef('0x2e')]=_0x2a5011;if(_0x4cf5f3[_0x37ef('0x48')][_0x37ef('0x52')]){_0x289977[_0x37ef('0x53')]=[{'all':!![]}];}return db[_0x37ef('0x3c')]['findAll'](_0x289977);})[_0x37ef('0x1e')](function(_0x442749){_0x476528[_0x37ef('0x54')]=_0x442749;return _0x476528;})[_0x37ef('0x1e')](respondWithFilteredResult(_0x4cf652,_0x289977))[_0x37ef('0x28')](handleError(_0x4cf652,null));};exports[_0x37ef('0x55')]=function(_0x4386f5,_0x2a2dee){var _0x3ba917={'raw':![],'where':{'id':_0x4386f5[_0x37ef('0x56')]['id']},'include':[{'model':db[_0x37ef('0x3b')],'as':_0x37ef('0x57')}]},_0x508f23={};_0x508f23[_0x37ef('0x40')]=_['keys'](db['SmsAccount'][_0x37ef('0x3d')]);_0x508f23['query']=_[_0x37ef('0x42')](_0x4386f5['query']);_0x508f23[_0x37ef('0x43')]=_[_0x37ef('0x44')](_0x508f23[_0x37ef('0x40')],_0x508f23[_0x37ef('0x48')]);_0x3ba917[_0x37ef('0x46')]=_[_0x37ef('0x44')](_0x508f23[_0x37ef('0x40')],qs[_0x37ef('0x45')](_0x4386f5[_0x37ef('0x48')][_0x37ef('0x45')]));_0x3ba917[_0x37ef('0x46')]=_0x3ba917[_0x37ef('0x46')][_0x37ef('0x47')]?_0x3ba917[_0x37ef('0x46')]:_0x508f23[_0x37ef('0x40')];if(_0x4386f5['query'][_0x37ef('0x52')]){_0x3ba917[_0x37ef('0x53')]=[{'all':!![]}];}_0x3ba917=_[_0x37ef('0x58')]({},_0x3ba917,_0x4386f5[_0x37ef('0x51')]);return db['SmsAccount']['find'](_0x3ba917)[_0x37ef('0x1e')](handleEntityNotFound(_0x2a2dee,null))[_0x37ef('0x1e')](respondWithResult(_0x2a2dee,null))[_0x37ef('0x28')](handleError(_0x2a2dee,null));};exports[_0x37ef('0x59')]=function(_0x3c455e,_0x52ce48){return db[_0x37ef('0x3c')][_0x37ef('0x59')](_0x3c455e[_0x37ef('0x5a')],{})[_0x37ef('0x1e')](function(_0x6e0d56){var _0x3aa7c7=_0x3c455e[_0x37ef('0x5b')][_0x37ef('0x33')]({'plain':!![]});if(!_0x3aa7c7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3aa7c7[_0x37ef('0x5c')]===_0x37ef('0x5b')){var _0x13ce44=_0x6e0d56[_0x37ef('0x33')]({'plain':!![]});var _0x14b1ed=_0x37ef('0x34');return db[_0x37ef('0x5d')][_0x37ef('0x5e')]({'where':{'name':_0x14b1ed,'userProfileId':_0x3aa7c7[_0x37ef('0x5f')]},'raw':!![]})[_0x37ef('0x1e')](function(_0x5b01c3){if(_0x5b01c3&&_0x5b01c3['autoAssociation']===0x0){return db[_0x37ef('0x35')][_0x37ef('0x59')]({'name':_0x13ce44['name'],'resourceId':_0x13ce44['id'],'type':_0x5b01c3[_0x37ef('0x38')],'sectionId':_0x5b01c3['id']},{})['then'](function(){return _0x6e0d56;});}else{return _0x6e0d56;}})[_0x37ef('0x28')](function(_0x1d730a){logger['error'](_0x37ef('0x60'),_0x1d730a);throw _0x1d730a;});}return _0x6e0d56;})[_0x37ef('0x1e')](respondWithResult(_0x52ce48,0xc9))['catch'](handleError(_0x52ce48,null));};exports[_0x37ef('0x32')]=function(_0x428869,_0x2d0079){if(_0x428869[_0x37ef('0x5a')]['id']){delete _0x428869[_0x37ef('0x5a')]['id'];}return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x428869[_0x37ef('0x56')]['id']},'include':[{'model':db[_0x37ef('0x3b')],'as':'mandatoryDispositionPause'}]})[_0x37ef('0x1e')](handleEntityNotFound(_0x2d0079,null))[_0x37ef('0x1e')](saveUpdates(_0x428869['body'],null))[_0x37ef('0x1e')](respondWithResult(_0x2d0079,null))[_0x37ef('0x28')](handleError(_0x2d0079,null));};exports[_0x37ef('0x36')]=function(_0xeb504d,_0x38e17b){return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0xeb504d[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x38e17b,null))[_0x37ef('0x1e')](removeEntity(_0x38e17b,null))[_0x37ef('0x28')](handleError(_0x38e17b,null));};exports[_0x37ef('0x61')]=function(_0x2c3f7e,_0x550487){return db[_0x37ef('0x3c')][_0x37ef('0x61')]()[_0x37ef('0x1e')](respondWithResult(_0x550487,null))[_0x37ef('0x28')](handleError(_0x550487,null));};exports[_0x37ef('0x62')]=function(_0x5a4034,_0x302a5a,_0x519590){if(_0x5a4034[_0x37ef('0x5a')]['id']){delete _0x5a4034[_0x37ef('0x5a')]['id'];}return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x5a4034[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x302a5a,null))[_0x37ef('0x1e')](function(_0x21e0f3){if(_0x21e0f3){_0x5a4034[_0x37ef('0x5a')]['SmsAccountId']=_0x21e0f3['id'];return db[_0x37ef('0x63')]['create'](_0x5a4034[_0x37ef('0x5a')]);}})[_0x37ef('0x1e')](respondWithResult(_0x302a5a,null))[_0x37ef('0x28')](handleError(_0x302a5a,null));};exports[_0x37ef('0x64')]=function(_0x1722ca,_0xb2dd7d,_0x3d05bf){var _0x70657={'raw':![],'where':{}};var _0x45e972={};var _0x2041b7={'count':0x0,'rows':[]};return db[_0x37ef('0x3c')][_0x37ef('0x65')]({'where':{'id':_0x1722ca[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0xb2dd7d,null))[_0x37ef('0x1e')](function(_0x1c7b5e){if(_0x1c7b5e){_0x45e972['model']=_[_0x37ef('0x42')](db[_0x37ef('0x63')][_0x37ef('0x3d')]);_0x45e972[_0x37ef('0x48')]=_[_0x37ef('0x42')](_0x1722ca[_0x37ef('0x48')]);_0x45e972[_0x37ef('0x43')]=_[_0x37ef('0x44')](_0x45e972['model'],_0x45e972[_0x37ef('0x48')]);_0x70657[_0x37ef('0x46')]=_[_0x37ef('0x44')](_0x45e972[_0x37ef('0x40')],qs['fields'](_0x1722ca[_0x37ef('0x48')][_0x37ef('0x45')]));_0x70657[_0x37ef('0x46')]=_0x70657[_0x37ef('0x46')][_0x37ef('0x47')]?_0x70657[_0x37ef('0x46')]:_0x45e972[_0x37ef('0x40')];if(!_0x1722ca['query'][_0x37ef('0x49')](_0x37ef('0x4a'))){_0x70657[_0x37ef('0x2d')]=qs[_0x37ef('0x2d')](_0x1722ca[_0x37ef('0x48')]['limit']);_0x70657[_0x37ef('0x2b')]=qs['offset'](_0x1722ca[_0x37ef('0x48')]['offset']);}_0x70657[_0x37ef('0x4b')]=qs[_0x37ef('0x4c')](_0x1722ca[_0x37ef('0x48')][_0x37ef('0x4c')]);_0x70657[_0x37ef('0x4f')]=qs[_0x37ef('0x43')](_['pick'](_0x1722ca['query'],_0x45e972[_0x37ef('0x43')]));_0x70657[_0x37ef('0x4f')][_0x37ef('0x66')]=_0x1c7b5e['id'];if(_0x1722ca[_0x37ef('0x48')][_0x37ef('0x4e')]){_0x70657[_0x37ef('0x4f')]=_[_0x37ef('0x58')](_0x70657[_0x37ef('0x4f')],{'$or':_[_0x37ef('0x41')](_0x70657[_0x37ef('0x46')],function(_0x16b1b4){var _0x3ecab7={};_0x3ecab7[_0x16b1b4]={'$like':'%'+_0x1722ca[_0x37ef('0x48')]['filter']+'%'};return _0x3ecab7;})});}_0x70657=_['merge']({},_0x70657,_0x1722ca[_0x37ef('0x51')]);return db[_0x37ef('0x63')][_0x37ef('0x2e')]({'where':_0x70657[_0x37ef('0x4f')]})[_0x37ef('0x1e')](function(_0x2398e3){_0x2041b7[_0x37ef('0x2e')]=_0x2398e3;if(_0x1722ca[_0x37ef('0x48')][_0x37ef('0x52')]){_0x70657[_0x37ef('0x53')]=[{'all':!![]}];}return db[_0x37ef('0x63')][_0x37ef('0x67')](_0x70657);})[_0x37ef('0x1e')](function(_0x122a57){_0x2041b7['rows']=_0x122a57;return _0x2041b7;});}})[_0x37ef('0x1e')](respondWithFilteredResult(_0xb2dd7d,_0x70657))[_0x37ef('0x28')](handleError(_0xb2dd7d,null));};exports['removeDispositions']=function(_0x3662a9,_0x5e0c4e,_0xf9e6bd){return db[_0x37ef('0x3c')]['find']({'where':{'id':_0x3662a9[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x5e0c4e,null))[_0x37ef('0x1e')](function(_0x1b32e0){if(_0x1b32e0){return _0x1b32e0['removeDispositions'](_0x3662a9[_0x37ef('0x48')]['ids']);}})['then'](respondWithStatusCode(_0x5e0c4e,null))[_0x37ef('0x28')](handleError(_0x5e0c4e,null));};exports[_0x37ef('0x68')]=function(_0x536b14,_0x5b7e77,_0x19a5aa){if(_0x536b14['body']['id']){delete _0x536b14['body']['id'];}return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x536b14[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x5b7e77,null))['then'](function(_0x3979b0){if(_0x3979b0){_0x536b14['body'][_0x37ef('0x66')]=_0x3979b0['id'];return db[_0x37ef('0x69')][_0x37ef('0x59')](_0x536b14[_0x37ef('0x5a')]);}})[_0x37ef('0x1e')](respondWithResult(_0x5b7e77,null))['catch'](handleError(_0x5b7e77,null));};exports[_0x37ef('0x6a')]=function(_0x1bdfb9,_0x241abb,_0x260bb3){var _0x865d65={'raw':![],'where':{}};var _0x1d4ee6={};var _0x528ca8={'count':0x0,'rows':[]};return db[_0x37ef('0x3c')]['findOne']({'where':{'id':_0x1bdfb9['params']['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x241abb,null))['then'](function(_0xc765c9){if(_0xc765c9){_0x1d4ee6['model']=_['keys'](db[_0x37ef('0x69')][_0x37ef('0x3d')]);_0x1d4ee6['query']=_['keys'](_0x1bdfb9['query']);_0x1d4ee6['filters']=_['intersection'](_0x1d4ee6['model'],_0x1d4ee6[_0x37ef('0x48')]);_0x865d65[_0x37ef('0x46')]=_[_0x37ef('0x44')](_0x1d4ee6[_0x37ef('0x40')],qs[_0x37ef('0x45')](_0x1bdfb9['query'][_0x37ef('0x45')]));_0x865d65['attributes']=_0x865d65[_0x37ef('0x46')]['length']?_0x865d65[_0x37ef('0x46')]:_0x1d4ee6[_0x37ef('0x40')];if(!_0x1bdfb9['query']['hasOwnProperty'](_0x37ef('0x4a'))){_0x865d65['limit']=qs[_0x37ef('0x2d')](_0x1bdfb9[_0x37ef('0x48')][_0x37ef('0x2d')]);_0x865d65[_0x37ef('0x2b')]=qs['offset'](_0x1bdfb9[_0x37ef('0x48')][_0x37ef('0x2b')]);}_0x865d65[_0x37ef('0x4b')]=qs[_0x37ef('0x4c')](_0x1bdfb9[_0x37ef('0x48')][_0x37ef('0x4c')]);_0x865d65['where']=qs[_0x37ef('0x43')](_[_0x37ef('0x4d')](_0x1bdfb9[_0x37ef('0x48')],_0x1d4ee6[_0x37ef('0x43')]));_0x865d65[_0x37ef('0x4f')][_0x37ef('0x66')]=_0xc765c9['id'];if(_0x1bdfb9[_0x37ef('0x48')][_0x37ef('0x4e')]){_0x865d65[_0x37ef('0x4f')]=_[_0x37ef('0x58')](_0x865d65['where'],{'$or':_[_0x37ef('0x41')](_0x865d65[_0x37ef('0x46')],function(_0x47431c){var _0x15a513={};_0x15a513[_0x47431c]={'$like':'%'+_0x1bdfb9[_0x37ef('0x48')][_0x37ef('0x4e')]+'%'};return _0x15a513;})});}_0x865d65=_[_0x37ef('0x58')]({},_0x865d65,_0x1bdfb9['options']);return db[_0x37ef('0x69')][_0x37ef('0x2e')]({'where':_0x865d65[_0x37ef('0x4f')]})[_0x37ef('0x1e')](function(_0x2410c9){_0x528ca8['count']=_0x2410c9;if(_0x1bdfb9[_0x37ef('0x48')]['includeAll']){_0x865d65[_0x37ef('0x53')]=[{'all':!![]}];}return db[_0x37ef('0x69')]['findAll'](_0x865d65);})[_0x37ef('0x1e')](function(_0x418689){_0x528ca8[_0x37ef('0x54')]=_0x418689;return _0x528ca8;});}})[_0x37ef('0x1e')](respondWithFilteredResult(_0x241abb,_0x865d65))[_0x37ef('0x28')](handleError(_0x241abb,null));};exports[_0x37ef('0x6b')]=function(_0x5e63c4,_0x57d92b,_0x56e70f){return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x5e63c4[_0x37ef('0x56')]['id']}})['then'](handleEntityNotFound(_0x57d92b,null))[_0x37ef('0x1e')](function(_0x387206){if(_0x387206){return _0x387206[_0x37ef('0x6b')](_0x5e63c4[_0x37ef('0x48')]['ids']);}})[_0x37ef('0x1e')](respondWithStatusCode(_0x57d92b,null))['catch'](handleError(_0x57d92b,null));};exports['notify']=function(_0x355e3a,_0x51fade,_0x55b771){var _0x23e142={'channel':_0x37ef('0x6c')};var _0x64adf5=[];var _0x49e112=[];var _0x1d551e={};return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x355e3a[_0x37ef('0x56')]['id']},'include':[{'model':db[_0x37ef('0x6d')],'as':_0x37ef('0x6e')}]})[_0x37ef('0x1e')](handleEntityNotFound(_0x51fade,null))['then'](function(_0x4739a2){_0x23e142[_0x37ef('0x6f')]=_0x4739a2;_0x23e142[_0x37ef('0x70')]=_[_0x37ef('0x71')](_0x4739a2[_0x37ef('0x6e')],['priority'],[_0x37ef('0x72')]);if(_0x23e142[_0x37ef('0x6f')]['Applications']){delete _0x23e142[_0x37ef('0x6f')]['Applications'];}return db[_0x37ef('0x73')][_0x37ef('0x61')]();})['then'](function(_0x5e645a){if(!_0x5e645a){throw new db[(_0x37ef('0x74'))]['ValidationError'](_0x37ef('0x75'));}_0x64adf5=_[_0x37ef('0x76')](_[_0x37ef('0x42')](_0x5e645a),[_0x37ef('0x77'),_0x37ef('0x78')]);_0x49e112=_[_0x37ef('0x76')](_[_0x37ef('0x42')](_0x5e645a),[_0x37ef('0x77'),'updatedAt','CompanyId',_0x37ef('0x79')]);_0x23e142[_0x37ef('0x5a')]={'mapKey':'mobile'};if(_0x23e142[_0x37ef('0x6f')]['type']){switch(_0x23e142[_0x37ef('0x6f')][_0x37ef('0x50')]){case'twilio':_0x23e142[_0x37ef('0x5a')][_0x37ef('0x7a')]=_0x355e3a[_0x37ef('0x5a')]['From'];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a['body'][_0x37ef('0x7b')];_0x23e142['body']['messageId']=_0x355e3a['body'][_0x37ef('0x7c')];break;case'skebby':_0x23e142[_0x37ef('0x5a')][_0x37ef('0x7a')]='+'+_0x355e3a[_0x37ef('0x5a')]['sender'];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a[_0x37ef('0x5a')]['text'];break;case _0x37ef('0x7d'):_0x23e142[_0x37ef('0x5a')][_0x37ef('0x7a')]=_0x355e3a['body'][_0x37ef('0x7a')];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a['body'][_0x37ef('0x26')];break;case _0x37ef('0x7e'):_0x23e142[_0x37ef('0x5a')]['from']=_0x355e3a[_0x37ef('0x5a')]['from'];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a['body'][_0x37ef('0x5a')];_0x23e142[_0x37ef('0x5a')]['messageId']=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x7f')];break;case _0x37ef('0x80'):_0x23e142[_0x37ef('0x5a')][_0x37ef('0x7a')]=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x81')];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x82')];_0x23e142['body'][_0x37ef('0x83')]=_0x355e3a[_0x37ef('0x5a')]['MessageUUID'];break;case'infobip':_0x23e142[_0x37ef('0x5a')][_0x37ef('0x7a')]='+'+_0x355e3a['body']['results'][0x0][_0x37ef('0x7a')];_0x23e142['body'][_0x37ef('0x5a')]=_0x355e3a[_0x37ef('0x5a')]['results'][0x0][_0x37ef('0x84')];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x83')]=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x85')][0x0][_0x37ef('0x83')];break;case'csc':_0x23e142[_0x37ef('0x5a')]['from']=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x86')];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a[_0x37ef('0x5a')]['segmentedMessage'][_0x37ef('0x26')];break;case _0x37ef('0x87'):_0x23e142[_0x37ef('0x5a')]['from']=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x88')];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x84')];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x83')]=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x89')];break;case _0x37ef('0x8a'):_0x23e142[_0x37ef('0x5a')][_0x37ef('0x83')]=_0x355e3a[_0x37ef('0x5a')][0x0]['message']['id'];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x7a')]=_0x355e3a[_0x37ef('0x5a')][0x0][_0x37ef('0x26')][_0x37ef('0x7a')];_0x23e142['body'][_0x37ef('0x5a')]=_0x355e3a['body'][0x0][_0x37ef('0x26')][_0x37ef('0x84')];break;case'intelepeer':_0x23e142['body'][_0x37ef('0x7a')]=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x7a')];_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')]=_0x355e3a['body']['message'];_0x23e142[_0x37ef('0x5a')]['messageId']=_0x355e3a[_0x37ef('0x5a')][_0x37ef('0x8b')];break;}}if(_0x23e142[_0x37ef('0x5a')]['id']){delete _0x23e142['body']['id'];}if(_[_0x37ef('0x8c')](_0x23e142[_0x37ef('0x5a')]['from'])){throw new db['Sequelize'][(_0x37ef('0x8d'))](_0x37ef('0x8e'));}if(_['isNil'](_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')])||_0x23e142['body'][_0x37ef('0x5a')]===''){throw new db['Sequelize'][(_0x37ef('0x8d'))](_0x37ef('0x8f'));}if(_[_0x37ef('0x8c')](_0x23e142['body'][_0x37ef('0x90')])){throw new db['Sequelize'][(_0x37ef('0x8d'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49e112);}if(!_[_0x37ef('0x91')](_0x49e112,_0x23e142[_0x37ef('0x5a')][_0x37ef('0x90')])){throw new db[(_0x37ef('0x74'))][(_0x37ef('0x8d'))](_0x37ef('0x92')+_0x49e112);}_0x1d551e[_0x23e142['body']['mapKey']]=_0x23e142[_0x37ef('0x5a')]['from'];return db[_0x37ef('0x93')][_0x37ef('0x5e')]({'where':{'id':_0x23e142['account'][_0x37ef('0x79')]},'include':[{'model':db['CmContact'],'as':_0x37ef('0x94'),'where':_0x1d551e,'limit':0x1,'order':[[_0x37ef('0x78'),'DESC']]}]});})[_0x37ef('0x1e')](handleEntityNotFound(_0x51fade,null))[_0x37ef('0x1e')](function(_0x43c7cf){if(_0x43c7cf){_0x23e142[_0x37ef('0x95')]=_[_0x37ef('0x96')](_0x43c7cf,[_0x37ef('0x94')]);if(_0x43c7cf[_0x37ef('0x94')]['length']){return _0x43c7cf['Contacts'][0x0];}var _0xe4d035=_[_0x37ef('0x97')](_0x23e142[_0x37ef('0x5a')],{'firstName':_0x23e142[_0x37ef('0x5a')]['from'],'ListId':_0x43c7cf['id']});_0xe4d035[_0x23e142['body'][_0x37ef('0x90')]]=_0x23e142['body'][_0x37ef('0x7a')];return db[_0x37ef('0x73')]['create'](_0xe4d035,{'fields':_0x64adf5,'raw':!![]});}})[_0x37ef('0x1e')](handleEntityNotFound(_0x51fade,null))[_0x37ef('0x1e')](function(_0x4fa78c){if(_0x4fa78c){_0x23e142[_0x37ef('0x98')]=_0x4fa78c;var _0x5621d2={'ContactId':_0x4fa78c['id'],'phone':_0x23e142['body']['from'],'SmsAccountId':_0x355e3a[_0x37ef('0x56')]['id']};var _0x425d1a={'ContactId':_0x4fa78c['id'],'SmsAccountId':_0x355e3a[_0x37ef('0x56')]['id'],'closed':![]};return db[_0x37ef('0x99')][_0x37ef('0x5e')]({'where':_0x425d1a})[_0x37ef('0x1e')](function(_0x255314){if(_0x255314){return[_0x255314,![]];}return db['SmsInteraction'][_0x37ef('0x59')](_0x5621d2)['then'](function(_0x78bf79){return[_0x78bf79,!![]];});});}})[_0x37ef('0x9a')](function(_0x49f317,_0xf6a360){_0x23e142['interaction']=_0x49f317[_0x37ef('0x33')]({'plain':!![]});_0x23e142['interaction']['created']=![];if(_0xf6a360){if(_0x23e142[_0x37ef('0x6f')][_0x37ef('0x9b')]){_0x23e142['applications'][_0x37ef('0x9c')]({'id':0x0,'priority':_0x23e142[_0x37ef('0x70')][_0x37ef('0x47')]+0x1,'app':_0x37ef('0x9d'),'appdata':_0x37ef('0x9e'),'interval':_0x37ef('0x9f')});}_0x23e142['interaction'][_0x37ef('0xa0')]=!![];}return db[_0x37ef('0xa1')][_0x37ef('0x59')]({'phone':_0x23e142[_0x37ef('0x5a')]['from'],'messageId':_0x23e142['body'][_0x37ef('0x83')],'body':_0x23e142[_0x37ef('0x5a')][_0x37ef('0x5a')],'SmsAccountId':_0x355e3a[_0x37ef('0x56')]['id'],'SmsInteractionId':_0x49f317['id'],'direction':'in','ContactId':_0x49f317[_0x37ef('0xa2')],'AttachmentId':_0x23e142[_0x37ef('0x5a')]['AttachmentId']});})[_0x37ef('0x1e')](function(_0x160b5c){_0x23e142[_0x37ef('0x26')]=_0x160b5c;if(_0x23e142[_0x37ef('0xa3')][_0x37ef('0xa4')]){return db[_0x37ef('0xa5')][_0x37ef('0x5e')]({'attributes':['id',_0x37ef('0x38')],'where':{'id':_0x23e142['interaction'][_0x37ef('0xa4')]}})['then'](function(_0x56664d){if(_0x56664d){_0x23e142[_0x37ef('0x70')][_0x37ef('0xa6')]({'id':0x0,'priority':0x0,'app':_0x37ef('0xa7'),'appdata':_0x56664d[_0x37ef('0x38')]+','+(_0x23e142[_0x37ef('0x6f')]['waitForTheAssignedAgent']||0xa),'interval':_0x37ef('0x9f')});}return respondWithRpcPromise('Start',_0x37ef('0xa8'),_0x23e142);});}return respondWithRpcPromise(_0x37ef('0xa9'),_0x37ef('0xa8'),_0x23e142);})[_0x37ef('0x1e')](function(_0x5b2a01){if(_0x5b2a01){var _0xc88c20=0xc8;var _0x6f72ef='receiveMessage';logger[_0x37ef('0x1f')](_0x37ef('0x21'),_0x6f72ef,_0xc88c20,_0x37ef('0xaa'));logger[_0x37ef('0xab')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x6f72ef,_0xc88c20,_0x37ef('0xaa'),JSON['stringify'](_0x5b2a01));if(_0x23e142[_0x37ef('0x6f')][_0x37ef('0x50')]==='twilio'){return _0x51fade[_0x37ef('0x2a')](_0xc88c20)[_0x37ef('0x2f')](_0x37ef('0xac'),_0x37ef('0xad'))[_0x37ef('0x39')](_0x37ef('0xae'));}else{return _0x51fade[_0x37ef('0x2a')](_0xc88c20)['json'](_0x5b2a01);}}})[_0x37ef('0x28')](handleError(_0x51fade,null));};exports[_0x37ef('0xaf')]=function(_0x28afa4,_0x8259f8){var _0x30a5e8=_0x28afa4[_0x37ef('0x56')]['id'];var _0x8f029a=_0x28afa4[_0x37ef('0x5a')];var _0x34289e=0xc8;var _0x37cbff=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x37ef('0xb0')][_0x37ef('0xb1')][_0x37ef('0xb2')][_0x37ef('0xb3')]},function(_0x30c27f){return db[_0x37ef('0x3c')][_0x37ef('0x65')]({'where':{'id':_0x30a5e8},'transaction':_0x30c27f})['then'](function(_0x5698bb){if(_0x5698bb){return db[_0x37ef('0x6d')][_0x37ef('0x36')]({'where':{'SmsAccountId':_0x30a5e8},'transaction':_0x30c27f})[_0x37ef('0x1e')](function(){var _0x3dc4ca=_[_0x37ef('0x41')](_0x8f029a,function(_0x1b7f82){_0x1b7f82[_0x37ef('0x66')]=_0x30a5e8;return _0x1b7f82;});return db[_0x37ef('0x6d')][_0x37ef('0xb4')](_0x3dc4ca,{'transaction':_0x30c27f});});}else{_0x34289e=0x194;_0x37cbff=[];}});})[_0x37ef('0x1e')](function(){if(_0x34289e!==0x194){return db[_0x37ef('0x6d')][_0x37ef('0xb5')]({'where':{'SmsAccountId':_0x30a5e8},'order':_0x37ef('0xb6')})[_0x37ef('0x1e')](function(_0x578045){_0x37cbff=_0x578045;});}})[_0x37ef('0x28')](function(_0x412f0d){_0x34289e=0x1f4;logger[_0x37ef('0x23')](_0x412f0d['stack']);if(_0x412f0d[_0x37ef('0x38')]){delete _0x412f0d[_0x37ef('0x38')];}_0x37cbff=_0x412f0d;})[_0x37ef('0xb7')](function(){if(_0x37cbff===null){_0x8259f8[_0x37ef('0x37')](_0x34289e);}else{if(_0x34289e===0x1f4){_0x8259f8[_0x37ef('0x2a')](_0x34289e)['send'](_0x37cbff);}else{_0x8259f8[_0x37ef('0x2a')](_0x34289e)[_0x37ef('0xb8')](_0x37cbff);}}});};exports[_0x37ef('0xb9')]=function(_0x354201,_0x90d1ba,_0x5455ff){var _0x1f8544={};var _0x5916cb={};var _0x2ce051;var _0x295f78;return db['SmsAccount'][_0x37ef('0x65')]({'where':{'id':_0x354201[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x90d1ba,null))[_0x37ef('0x1e')](function(_0x20602a){if(_0x20602a){_0x2ce051=_0x20602a;_0x5916cb['model']=_['keys'](db['SmsApplication'][_0x37ef('0x3d')]);_0x5916cb['query']=_[_0x37ef('0x42')](_0x354201[_0x37ef('0x48')]);_0x5916cb['filters']=_['intersection'](_0x5916cb['model'],_0x5916cb[_0x37ef('0x48')]);_0x1f8544[_0x37ef('0x46')]=_[_0x37ef('0x44')](_0x5916cb['model'],qs[_0x37ef('0x45')](_0x354201[_0x37ef('0x48')][_0x37ef('0x45')]));_0x1f8544[_0x37ef('0x46')]=_0x1f8544[_0x37ef('0x46')][_0x37ef('0x47')]?_0x1f8544[_0x37ef('0x46')]:_0x5916cb['model'];_0x1f8544[_0x37ef('0x4b')]=qs[_0x37ef('0x4c')](_0x354201[_0x37ef('0x48')]['sort']);_0x1f8544[_0x37ef('0x4f')]=qs[_0x37ef('0x43')](_[_0x37ef('0x4d')](_0x354201[_0x37ef('0x48')],_0x5916cb[_0x37ef('0x43')]));if(_0x354201[_0x37ef('0x48')][_0x37ef('0x4e')]){_0x1f8544[_0x37ef('0x4f')]=_[_0x37ef('0x58')](_0x1f8544[_0x37ef('0x4f')],{'$or':_['map'](_0x1f8544[_0x37ef('0x46')],function(_0x21c2a7){var _0x2eac57={};_0x2eac57[_0x21c2a7]={'$like':'%'+_0x354201[_0x37ef('0x48')]['filter']+'%'};return _0x2eac57;})});}_0x1f8544=_['merge']({},_0x1f8544,_0x354201[_0x37ef('0x51')]);return _0x2ce051[_0x37ef('0xb9')](_0x1f8544);}})['then'](function(_0x33390a){if(_0x33390a){_0x295f78=_0x33390a['length'];if(!_0x354201[_0x37ef('0x48')][_0x37ef('0x49')](_0x37ef('0x4a'))){_0x1f8544['limit']=qs[_0x37ef('0x2d')](_0x354201[_0x37ef('0x48')][_0x37ef('0x2d')]);_0x1f8544['offset']=qs['offset'](_0x354201['query']['offset']);}return _0x2ce051[_0x37ef('0xb9')](_0x1f8544);}})[_0x37ef('0x1e')](function(_0xf0d0e3){if(_0xf0d0e3){return _0xf0d0e3?{'count':_0x295f78,'rows':_0xf0d0e3}:null;}})['then'](respondWithResult(_0x90d1ba,null))[_0x37ef('0x28')](handleError(_0x90d1ba,null));};exports['getInteractions']=function(_0x515d20,_0x167d79,_0xf296c2){var _0x80e23e={'raw':![],'where':{}};var _0x4e2e13={};var _0x43899b={'count':0x0,'rows':[]};return db['SmsAccount'][_0x37ef('0x65')]({'where':{'id':_0x515d20[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x167d79,null))[_0x37ef('0x1e')](function(_0x221bef){if(_0x221bef){_0x4e2e13[_0x37ef('0x40')]=_[_0x37ef('0x42')](db['SmsInteraction'][_0x37ef('0x3d')]);_0x4e2e13[_0x37ef('0x48')]=_[_0x37ef('0x42')](_0x515d20[_0x37ef('0x48')]);_0x4e2e13['filters']=_[_0x37ef('0x44')](_0x4e2e13[_0x37ef('0x40')],_0x4e2e13[_0x37ef('0x48')]);_0x80e23e[_0x37ef('0x46')]=_['intersection'](_0x4e2e13['model'],qs[_0x37ef('0x45')](_0x515d20['query'][_0x37ef('0x45')]));_0x80e23e['attributes']=_0x80e23e[_0x37ef('0x46')][_0x37ef('0x47')]?_0x80e23e[_0x37ef('0x46')]:_0x4e2e13['model'];if(!_0x515d20[_0x37ef('0x48')][_0x37ef('0x49')](_0x37ef('0x4a'))){_0x80e23e['limit']=qs[_0x37ef('0x2d')](_0x515d20['query'][_0x37ef('0x2d')]);_0x80e23e[_0x37ef('0x2b')]=qs[_0x37ef('0x2b')](_0x515d20[_0x37ef('0x48')]['offset']);}_0x80e23e[_0x37ef('0x4b')]=qs['sort'](_0x515d20[_0x37ef('0x48')][_0x37ef('0x4c')]);_0x80e23e['where']=qs[_0x37ef('0x43')](_[_0x37ef('0x4d')](_0x515d20[_0x37ef('0x48')],_0x4e2e13[_0x37ef('0x43')]));_0x80e23e['where']['SmsAccountId']=_0x221bef['id'];if(_0x515d20[_0x37ef('0x48')][_0x37ef('0x4e')]){_0x80e23e[_0x37ef('0x4f')]=_[_0x37ef('0x58')](_0x80e23e[_0x37ef('0x4f')],{'$or':_[_0x37ef('0x41')](_0x80e23e[_0x37ef('0x46')],function(_0x46dbfe){var _0x590c7e={};_0x590c7e[_0x46dbfe]={'$like':'%'+_0x515d20[_0x37ef('0x48')][_0x37ef('0x4e')]+'%'};return _0x590c7e;})});}_0x80e23e=_[_0x37ef('0x58')]({},_0x80e23e,_0x515d20[_0x37ef('0x51')]);return db[_0x37ef('0x99')][_0x37ef('0x2e')]({'where':_0x80e23e['where']})[_0x37ef('0x1e')](function(_0x2fbdf2){_0x43899b['count']=_0x2fbdf2;if(_0x515d20[_0x37ef('0x48')][_0x37ef('0x52')]){_0x80e23e[_0x37ef('0x53')]=[{'model':db['CmContact'],'as':_0x37ef('0xba'),'required':![]},{'model':db[_0x37ef('0xa5')],'as':_0x37ef('0xbb'),'attributes':[_0x37ef('0x38'),_0x37ef('0xbc'),_0x37ef('0xbd')],'required':![]},{'model':db[_0x37ef('0xbe')],'as':_0x37ef('0xbf'),'attributes':['id','name',_0x37ef('0xc0')],'where':_0x515d20[_0x37ef('0x48')][_0x37ef('0xc1')]?{'id':_0x515d20[_0x37ef('0x48')][_0x37ef('0xc1')]}:undefined,'required':_0x515d20[_0x37ef('0x48')][_0x37ef('0xc1')]?!![]:![]}];}return db[_0x37ef('0x99')][_0x37ef('0x67')](_0x80e23e);})[_0x37ef('0x1e')](function(_0x172d88){_0x43899b[_0x37ef('0x54')]=_0x172d88;return _0x43899b;});}})[_0x37ef('0x1e')](respondWithFilteredResult(_0x167d79,_0x80e23e))['catch'](handleError(_0x167d79,null));};exports[_0x37ef('0x39')]=function(_0x2aed40,_0x2a58f1,_0x4be3d0){var _0x289810,_0x3549fc,_0x5808d6;if(_[_0x37ef('0x8c')](_0x2aed40['body'][_0x37ef('0x5a')])||_0x2aed40['body'][_0x37ef('0x5a')]===''){throw new db[(_0x37ef('0x74'))][(_0x37ef('0x8d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x37ef('0x8c')](_0x2aed40['body']['to'])){throw new db['Sequelize'][(_0x37ef('0x8d'))](_0x37ef('0xc2'));}_0x289810=_0x2aed40['body']['to'];return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x2aed40['params']['id']},'include':[{'model':db[_0x37ef('0x93')],'as':'List','include':[{'model':db[_0x37ef('0x73')],'as':_0x37ef('0x94'),'where':{'mobile':_0x289810},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})['then'](handleEntityNotFound(_0x2a58f1,null))[_0x37ef('0x1e')](function(_0x2c1375){if(_0x2c1375&&_0x2c1375[_0x37ef('0xc3')]){_0x3549fc=_0x2c1375[_0x37ef('0x33')]({'plain':!![]});if(_0x3549fc['List']&&_0x3549fc[_0x37ef('0xc3')]['Contacts'][_0x37ef('0x47')]){return _0x3549fc[_0x37ef('0xc3')][_0x37ef('0x94')][0x0];}return db[_0x37ef('0x73')][_0x37ef('0x59')](_[_0x37ef('0x97')](_0x2aed40[_0x37ef('0x5a')],{'firstName':_0x289810,'mobile':_0x289810,'phone':_0x289810,'ListId':_0x3549fc[_0x37ef('0x79')]}));}})[_0x37ef('0x1e')](handleEntityNotFound(_0x2a58f1,null))[_0x37ef('0x1e')](function(_0x1bc18d){if(_0x1bc18d){_0x5808d6=_0x1bc18d;return db[_0x37ef('0x99')][_0x37ef('0x5e')]({'where':{'ContactId':_0x5808d6['id'],'closed':![],'SmsAccountId':_0x3549fc['id']}})[_0x37ef('0x1e')](function(_0x1b0fe5){if(_0x1b0fe5){return[_0x1b0fe5,![]];}return db[_0x37ef('0x99')]['create']({'UserId':_0x2aed40[_0x37ef('0x5b')]['id'],'ContactId':_0x5808d6['id'],'SmsAccountId':_0x3549fc['id'],'phone':_0x289810,'firstMsgDirection':_0x37ef('0xc4'),'Messages':[_[_0x37ef('0x58')](_0x2aed40[_0x37ef('0x5a')],{'read':![],'body':_0x2aed40[_0x37ef('0x5a')][_0x37ef('0x5a')],'phone':_0x289810,'SmsAccountId':_0x3549fc['id'],'UserId':_0x2aed40[_0x37ef('0x5b')]['id'],'ContactId':_0x5808d6['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x37ef('0xc5')}]})['then'](function(_0x311286){return[_0x311286,!![]];});});}})[_0x37ef('0x9a')](function(_0x322150,_0x5a2cb8){if(_0x5a2cb8){return _0x322150;}return db[_0x37ef('0xa1')][_0x37ef('0x59')](_[_0x37ef('0x58')](_0x2aed40[_0x37ef('0x5a')],{'read':![],'body':_0x2aed40['body'][_0x37ef('0x5a')],'phone':_0x289810,'SmsAccountId':_0x3549fc['id'],'SmsInteractionId':_0x322150['id'],'UserId':_0x2aed40[_0x37ef('0x5b')]['id'],'ContactId':_0x5808d6['id']}))[_0x37ef('0x1e')](function(_0x3ef71a){_0x322150[_0x37ef('0xc6')][_0x37ef('0xc5')]=[];_0x322150[_0x37ef('0xc6')]['Messages']['push'](_0x3ef71a[_0x37ef('0xc6')]);return _0x322150;});})[_0x37ef('0x1e')](respondWithResult(_0x2a58f1,null))[_0x37ef('0x28')](handleError(_0x2a58f1,null));};exports['status']=function(_0x2d0fa6,_0x2a4017,_0x2a44c1){if(_0x2d0fa6['body']['id']){delete _0x2d0fa6[_0x37ef('0x5a')]['id'];}var _0x4d7b49,_0x307fd4,_0x4ad05e;return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x2d0fa6[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x2a4017,null))[_0x37ef('0x1e')](function(_0x7574c5){if(_0x7574c5){_0x4ad05e=_0x7574c5;logger[_0x37ef('0xab')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x37ef('0x2a'),_0x37ef('0xc7'),_0x7574c5[_0x37ef('0x50')],util['inspect'](_0x2d0fa6[_0x37ef('0x5a')],{'showHidden':![],'depth':null}));switch(_0x7574c5[_0x37ef('0x50')]){case _0x37ef('0xc8'):if(_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0xc9')]&&_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0x2a')]){_0x307fd4=_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0x2a')];return db[_0x37ef('0xa1')][_0x37ef('0x5e')]({'where':{'messageId':_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0xc9')]}});}break;case'connectel':if(_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0xca')]&&_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0xcb')]){_0x307fd4=_0x2d0fa6['body']['statusInt'];return db[_0x37ef('0xa1')][_0x37ef('0x5e')]({'where':{'messageId':_0x2d0fa6[_0x37ef('0x5a')]['requestid']}});}break;case _0x37ef('0x7e'):if(_0x2d0fa6['body']['message_id']&&_0x2d0fa6[_0x37ef('0x5a')]['status_code']){_0x307fd4=_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0xcc')];return db[_0x37ef('0xa1')][_0x37ef('0x5e')]({'where':{'messageId':_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0x7f')]}});}break;case _0x37ef('0xcd'):var _0x475ba7=_0x2d0fa6[_0x37ef('0x5a')]['results'][0x0];if(_0x475ba7[_0x37ef('0x83')]&&_0x475ba7[_0x37ef('0x2a')][_0x37ef('0xce')]===_0x37ef('0xcf')){_0x307fd4=_0x475ba7['status'][_0x37ef('0xce')];return db[_0x37ef('0xa1')][_0x37ef('0x5e')]({'where':{'messageId':_0x475ba7[_0x37ef('0x83')]}});}break;case _0x37ef('0x87'):if(_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0x83')]&&_0x2d0fa6[_0x37ef('0x5a')]['status']){_0x307fd4=_0x2d0fa6[_0x37ef('0x5a')]['status'];return db['SmsMessage']['find']({'where':{'messageId':_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0x83')]}});}break;case'bandwidth':if(_0x2d0fa6['body'][0x0]['message']['id']){_0x307fd4=_0x2d0fa6[_0x37ef('0x5a')][0x0][_0x37ef('0x50')];return db[_0x37ef('0xa1')][_0x37ef('0x5e')]({'where':{'messageId':_0x2d0fa6[_0x37ef('0x5a')][0x0]['message']['id']}});}break;case _0x37ef('0xd0'):if(_0x2d0fa6[_0x37ef('0x5a')]['redif']&&_0x2d0fa6[_0x37ef('0x5a')]['status']){_0x307fd4=_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0x2a')];return db[_0x37ef('0xa1')]['find']({'where':{'messageId':_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0xd1')]}});}break;}}})[_0x37ef('0x1e')](handleEntityNotFound(_0x2a4017,null))[_0x37ef('0x1e')](function(_0x347ece){if(_0x347ece){_0x4d7b49=_0x347ece;switch(_0x4ad05e['type']){case _0x37ef('0xc8'):if(_0x307fd4===_0x37ef('0xcf')){return _0x4d7b49[_0x37ef('0x32')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x37ef('0x2a'),_0x37ef('0xc8'),util['inspect'](_0x2d0fa6['body'],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x307fd4==='1'){return _0x4d7b49[_0x37ef('0x32')]({'read':!![]});}else{logger[_0x37ef('0x23')](_0x37ef('0x21'),_0x37ef('0x2a'),'skebby',util[_0x37ef('0xd2')](_0x2d0fa6[_0x37ef('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x37ef('0x7e'):if(!_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0xd3')]&&_0x307fd4>=0xc8&&_0x307fd4<=0xce){return _0x4d7b49[_0x37ef('0x32')]({'read':!![]});}else{logger[_0x37ef('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x37ef('0x2a'),'clicksend',util[_0x37ef('0xd2')](_0x2d0fa6['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x3e922b=_0x2d0fa6[_0x37ef('0x5a')][_0x37ef('0x85')][0x0];if(_0x3e922b[_0x37ef('0x2a')][_0x37ef('0xce')]===_0x37ef('0xcf')){return _0x4d7b49[_0x37ef('0x32')]({'read':!![]});}else{logger[_0x37ef('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x37ef('0xcd'),util[_0x37ef('0xd2')](_0x2d0fa6[_0x37ef('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x37ef('0x87'):if(_0x307fd4=='DELIVERED_TO_GATEWAY'||_0x307fd4==_0x37ef('0xd4')){return _0x4d7b49[_0x37ef('0x32')]({'read':!![]});}else{logger[_0x37ef('0x23')](_0x37ef('0x21'),_0x37ef('0x2a'),_0x37ef('0x87'),util[_0x37ef('0xd2')](_0x2d0fa6['body'],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x307fd4==_0x37ef('0xd5')){return _0x4d7b49[_0x37ef('0x32')]({'read':!![]});}else{logger[_0x37ef('0x23')](_0x37ef('0x21'),_0x37ef('0x2a'),_0x37ef('0x8a'),util[_0x37ef('0xd2')](_0x2d0fa6[_0x37ef('0x5a')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x307fd4==='DELIVRD'||_0x307fd4==='ACCEPTD'){return _0x4d7b49[_0x37ef('0x32')]({'read':!![]});}else{logger[_0x37ef('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x37ef('0xd0'),util[_0x37ef('0xd2')](_0x2d0fa6[_0x37ef('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x4d7b49;}})[_0x37ef('0x1e')](respondWithResult(_0x2a4017,null))['catch'](handleError(_0x2a4017,null));};exports[_0x37ef('0xd6')]=function(_0x442214,_0x40f9d0,_0x2a45c1){var _0x1f9a82,_0x2ebb8d,_0x19aa75;return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x442214['params']['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x40f9d0,null))[_0x37ef('0x1e')](function(_0x3f01c3){if(_0x3f01c3){_0x19aa75=_0x3f01c3;logger[_0x37ef('0xab')](_0x37ef('0x21'),_0x37ef('0x2a'),_0x37ef('0xc7'),_0x3f01c3[_0x37ef('0x50')],util[_0x37ef('0xd2')](_0x442214['query'],{'showHidden':![],'depth':null}));switch(_0x3f01c3['type']){case'csc':if(_0x442214[_0x37ef('0x48')][_0x37ef('0xd7')]&&_0x442214[_0x37ef('0x48')][_0x37ef('0xd8')]){_0x2ebb8d=_0x442214[_0x37ef('0x48')]['state'];return db['SmsMessage'][_0x37ef('0x5e')]({'where':{'messageId':_0x442214[_0x37ef('0x48')]['message-id']}});}break;}}})[_0x37ef('0x1e')](handleEntityNotFound(_0x40f9d0,null))[_0x37ef('0x1e')](function(_0x4d0ff0){if(_0x4d0ff0){_0x1f9a82=_0x4d0ff0;switch(_0x19aa75['type']){case _0x37ef('0xd9'):if(_0x2ebb8d==='2'||_0x2ebb8d==='6'){return _0x1f9a82[_0x37ef('0x32')]({'read':!![]});}else{logger[_0x37ef('0x23')](_0x37ef('0x21'),_0x37ef('0x2a'),_0x37ef('0xd9'),util[_0x37ef('0xd2')](_0x442214['query'],{'showHidden':![],'depth':null}));};break;}return _0x1f9a82;}})[_0x37ef('0x1e')](respondWithResult(_0x40f9d0,null))[_0x37ef('0x28')](handleError(_0x40f9d0,null));};exports[_0x37ef('0xda')]=function(_0xdbce0a,_0x5b8c1e,_0x1c5ba7){return db[_0x37ef('0x3c')]['find']({'where':{'id':_0xdbce0a[_0x37ef('0x56')]['id']}})[_0x37ef('0x1e')](handleEntityNotFound(_0x5b8c1e,null))[_0x37ef('0x1e')](function(_0x1e773d){if(_0x1e773d){return _0x1e773d[_0x37ef('0xda')](_0xdbce0a[_0x37ef('0x5a')][_0x37ef('0xdb')],_[_0x37ef('0x96')](_0xdbce0a['body'],[_0x37ef('0xdb'),'id'])||{})['spread'](function(_0x47dd2a){for(var _0x5d3ec2=0x0;_0x5d3ec2<_0xdbce0a[_0x37ef('0x5a')][_0x37ef('0xdb')][_0x37ef('0x47')];_0x5d3ec2+=0x1){socket['emit'](_0x37ef('0xdc'),{'UserId':Number(_0xdbce0a[_0x37ef('0x5a')][_0x37ef('0xdb')][_0x5d3ec2]),'SmsAccountId':Number(_0xdbce0a[_0x37ef('0x56')]['id'])});}return _0x47dd2a;});}})[_0x37ef('0x1e')](respondWithResult(_0x5b8c1e,null))[_0x37ef('0x28')](handleError(_0x5b8c1e,null));};exports[_0x37ef('0xdd')]=function(_0x30a994,_0x283ef4,_0xccad89){return db[_0x37ef('0x3c')][_0x37ef('0x5e')]({'where':{'id':_0x30a994[_0x37ef('0x56')]['id']}})['then'](handleEntityNotFound(_0x283ef4,null))[_0x37ef('0x1e')](function(_0x9ece20){if(_0x9ece20){return _0x9ece20[_0x37ef('0xdd')](_0x30a994['query'][_0x37ef('0xdb')])[_0x37ef('0x1e')](function(){if(_[_0x37ef('0xde')](_0x30a994[_0x37ef('0x48')][_0x37ef('0xdb')])){for(var _0x14306e=0x0;_0x14306e<_0x30a994[_0x37ef('0x48')][_0x37ef('0xdb')][_0x37ef('0x47')];_0x14306e+=0x1){socket[_0x37ef('0xdf')](_0x37ef('0xe0'),{'UserId':Number(_0x30a994['query']['ids'][_0x14306e]),'SmsAccountId':Number(_0x30a994[_0x37ef('0x56')]['id'])});}}else{socket[_0x37ef('0xdf')](_0x37ef('0xe0'),{'UserId':Number(_0x30a994[_0x37ef('0x48')][_0x37ef('0xdb')]),'SmsAccountId':Number(_0x30a994[_0x37ef('0x56')]['id'])});}});}})[_0x37ef('0x1e')](respondWithStatusCode(_0x283ef4,null))['catch'](handleError(_0x283ef4,null));};exports[_0x37ef('0xe1')]=function(_0x59621d,_0x42d5e1,_0x5233ae){var _0x29c84f={};var _0x27fb64={};var _0x5e7444;var _0x1274e1;return db[_0x37ef('0x3c')][_0x37ef('0x65')]({'where':{'id':_0x59621d[_0x37ef('0x56')]['id']}})['then'](handleEntityNotFound(_0x42d5e1,null))[_0x37ef('0x1e')](function(_0x213110){if(_0x213110){_0x5e7444=_0x213110;_0x27fb64[_0x37ef('0x40')]=_[_0x37ef('0x42')](db[_0x37ef('0xa5')][_0x37ef('0x3d')]);_0x27fb64['query']=_[_0x37ef('0x42')](_0x59621d[_0x37ef('0x48')]);_0x27fb64[_0x37ef('0x43')]=_[_0x37ef('0x44')](_0x27fb64['model'],_0x27fb64[_0x37ef('0x48')]);_0x29c84f['attributes']=_[_0x37ef('0x44')](_0x27fb64[_0x37ef('0x40')],qs[_0x37ef('0x45')](_0x59621d[_0x37ef('0x48')][_0x37ef('0x45')]));_0x29c84f[_0x37ef('0x46')]=_0x29c84f[_0x37ef('0x46')][_0x37ef('0x47')]?_0x29c84f[_0x37ef('0x46')]:_0x27fb64['model'];_0x29c84f['order']=qs['sort'](_0x59621d['query'][_0x37ef('0x4c')]);_0x29c84f[_0x37ef('0x4f')]=qs[_0x37ef('0x43')](_[_0x37ef('0x4d')](_0x59621d[_0x37ef('0x48')],_0x27fb64[_0x37ef('0x43')]));if(_0x59621d[_0x37ef('0x48')][_0x37ef('0x4e')]){_0x29c84f[_0x37ef('0x4f')]=_[_0x37ef('0x58')](_0x29c84f['where'],{'$or':_[_0x37ef('0x41')](_0x29c84f[_0x37ef('0x46')],function(_0x312532){var _0x45d111={};_0x45d111[_0x312532]={'$like':'%'+_0x59621d[_0x37ef('0x48')][_0x37ef('0x4e')]+'%'};return _0x45d111;})});}_0x29c84f=_[_0x37ef('0x58')]({},_0x29c84f,_0x59621d[_0x37ef('0x51')]);return _0x5e7444[_0x37ef('0xe1')](_0x29c84f);}})[_0x37ef('0x1e')](function(_0x55d528){if(_0x55d528){_0x1274e1=_0x55d528[_0x37ef('0x47')];if(!_0x59621d[_0x37ef('0x48')][_0x37ef('0x49')](_0x37ef('0x4a'))){_0x29c84f[_0x37ef('0x2d')]=qs['limit'](_0x59621d[_0x37ef('0x48')][_0x37ef('0x2d')]);_0x29c84f[_0x37ef('0x2b')]=qs[_0x37ef('0x2b')](_0x59621d[_0x37ef('0x48')][_0x37ef('0x2b')]);}return _0x5e7444[_0x37ef('0xe1')](_0x29c84f);}})['then'](function(_0x4b20ff){if(_0x4b20ff){return _0x4b20ff?{'count':_0x1274e1,'rows':_0x4b20ff}:null;}})['then'](respondWithResult(_0x42d5e1,null))['catch'](handleError(_0x42d5e1,null));};
\ No newline at end of file
index 50493cc..d94f1d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f07=['remove','emit','hasOwnProperty','hook','exports','events','SmsAccount','setMaxListeners','update'];(function(_0x22f8ab,_0x15d8ff){var _0x2a70e5=function(_0x5e6895){while(--_0x5e6895){_0x22f8ab['push'](_0x22f8ab['shift']());}};_0x2a70e5(++_0x15d8ff);}(_0x1f07,0x1a3));var _0x71f0=function(_0x7afe06,_0x4f48ca){_0x7afe06=_0x7afe06-0x0;var _0x4a528e=_0x1f07[_0x7afe06];return _0x4a528e;};'use strict';var EventEmitter=require(_0x71f0('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x71f0('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x71f0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x71f0('0x3'),'afterDestroy':_0x71f0('0x4')};function emitEvent(_0x1304be){return function(_0xddf64,_0x25d72c,_0x2d3311){SmsAccountEvents[_0x71f0('0x5')](_0x1304be+':'+_0xddf64['id'],_0xddf64);SmsAccountEvents['emit'](_0x1304be,_0xddf64);_0x2d3311(null);};}for(var e in events){if(events[_0x71f0('0x6')](e)){var event=events[e];SmsAccount[_0x71f0('0x7')](e,emitEvent(event));}}module[_0x71f0('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0x8953=['hasOwnProperty','hook','events','../../mysqldb','SmsAccount','setMaxListeners','save','update','remove','emit'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x8953,0x160));var _0x3895=function(_0x5276f1,_0x1fcf3f){_0x5276f1=_0x5276f1-0x0;var _0xa2d451=_0x8953[_0x5276f1];return _0xa2d451;};'use strict';var EventEmitter=require(_0x3895('0x0'));var SmsAccount=require(_0x3895('0x1'))['db'][_0x3895('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x3895('0x3')](0x0);var events={'afterCreate':_0x3895('0x4'),'afterUpdate':_0x3895('0x5'),'afterDestroy':_0x3895('0x6')};function emitEvent(_0x50a779){return function(_0x36f2b2,_0x54e2ff,_0x47888c){SmsAccountEvents['emit'](_0x50a779+':'+_0x36f2b2['id'],_0x36f2b2);SmsAccountEvents[_0x3895('0x7')](_0x50a779,_0x36f2b2);_0x47888c(null);};}for(var e in events){if(events[_0x3895('0x8')](e)){var event=events[e];SmsAccount[_0x3895('0x9')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
index bed6d16..f681cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc911=['bluebird','request-promise','rimraf','../../config/environment','./smsAccount.attributes','exports','SmsAccount','sms_accounts','lodash','moment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xc911,0x1c0));var _0x1c91=function(_0x1bd728,_0x183045){_0x1bd728=_0x1bd728-0x0;var _0x62bb7=_0xc911[_0x1bd728];return _0x62bb7;};'use strict';var _=require(_0x1c91('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1c91('0x1'));var BPromise=require(_0x1c91('0x2'));var rp=require(_0x1c91('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1c91('0x4'));var config=require(_0x1c91('0x5'));var attributes=require(_0x1c91('0x6'));module[_0x1c91('0x7')]=function(_0x5261cc,_0x14d26f){return _0x5261cc['define'](_0x1c91('0x8'),attributes,{'tableName':_0x1c91('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a7a=['sms_accounts','lodash','util','../../config/logger','bluebird','request-promise','../../config/environment','exports'];(function(_0x41d564,_0x4af890){var _0x4831b4=function(_0x2edd39){while(--_0x2edd39){_0x41d564['push'](_0x41d564['shift']());}};_0x4831b4(++_0x4af890);}(_0x0a7a,0xb9));var _0xa0a7=function(_0x21c79c,_0x22b1f7){_0x21c79c=_0x21c79c-0x0;var _0x5eb58c=_0x0a7a[_0x21c79c];return _0x5eb58c;};'use strict';var _=require(_0xa0a7('0x0'));var util=require(_0xa0a7('0x1'));var logger=require(_0xa0a7('0x2'))('api');var moment=require('moment');var BPromise=require(_0xa0a7('0x3'));var rp=require(_0xa0a7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa0a7('0x5'));var attributes=require('./smsAccount.attributes');module[_0xa0a7('0x6')]=function(_0xab7a5d,_0x21231d){return _0xab7a5d['define']('SmsAccount',attributes,{'tableName':_0xa0a7('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 06c3f44..8727120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3fe=['SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSmsAccount','find','raw','options','where','attributes','include','map','model','lodash','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','socket.io-emitter','./smsAccount.socket','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x408ea9,_0x2c9c27){var _0x3ac0f3=function(_0xa0b89c){while(--_0xa0b89c){_0x408ea9['push'](_0x408ea9['shift']());}};_0x3ac0f3(++_0x2c9c27);}(_0xf3fe,0xea));var _0xef3f=function(_0xf31cc9,_0x470886){_0xf31cc9=_0xf31cc9-0x0;var _0x381dc7=_0xf3fe[_0xf31cc9];return _0x381dc7;};'use strict';var _=require(_0xef3f('0x0'));var util=require('util');var moment=require(_0xef3f('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef3f('0x2'));var db=require(_0xef3f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xef3f('0x4'))(_0xef3f('0x5'));var config=require(_0xef3f('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xef3f('0x7'))(new Redis(config['redis']));require(_0xef3f('0x8'))['register'](socket);function respondWithRpcPromise(_0x46cd70,_0x3eb799,_0x37002c){return new BPromise(function(_0x154ef5,_0x3df0c4){return client[_0xef3f('0x9')](_0x46cd70,_0x37002c)[_0xef3f('0xa')](function(_0xf1c01c){logger['info'](_0xef3f('0xb'),_0x3eb799,_0xef3f('0xc'));logger[_0xef3f('0xd')](_0xef3f('0xe'),_0x3eb799,_0xef3f('0xc'),JSON[_0xef3f('0xf')](_0xf1c01c));if(_0xf1c01c[_0xef3f('0x10')]){if(_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x11')]===0x1f4){logger[_0xef3f('0x10')]('SmsAccount,\x20%s,\x20%s',_0x3eb799,_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);return _0x3df0c4(_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);}logger[_0xef3f('0x10')](_0xef3f('0xb'),_0x3eb799,_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);return _0x154ef5(_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);}else{logger[_0xef3f('0x13')](_0xef3f('0xb'),_0x3eb799,_0xef3f('0xc'));_0x154ef5(_0xf1c01c[_0xef3f('0x14')][_0xef3f('0x12')]);}})[_0xef3f('0x15')](function(_0x27b931){logger[_0xef3f('0x10')](_0xef3f('0xb'),_0x3eb799,_0x27b931);_0x3df0c4(_0x27b931);});});}exports[_0xef3f('0x16')]=function(_0x59d98c){var _0x42a3c4=this;return new Promise(function(_0xcf461d,_0x30a125){return db['SmsAccount'][_0xef3f('0x17')]({'raw':_0x59d98c['options']?_0x59d98c['options'][_0xef3f('0x18')]===undefined?!![]:![]:!![],'where':_0x59d98c[_0xef3f('0x19')]?_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1a')]||null:null,'attributes':_0x59d98c[_0xef3f('0x19')]?_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1b')]||null:null,'include':_0x59d98c['options']?_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1c')]?_['map'](_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1c')],function(_0x33a0db){return{'model':db[_0x33a0db['model']],'as':_0x33a0db['as'],'attributes':_0x33a0db[_0xef3f('0x1b')],'include':_0x33a0db['include']?_[_0xef3f('0x1d')](_0x33a0db[_0xef3f('0x1c')],function(_0x5114f6){return{'model':db[_0x5114f6[_0xef3f('0x1e')]],'as':_0x5114f6['as'],'attributes':_0x5114f6[_0xef3f('0x1b')],'include':_0x5114f6[_0xef3f('0x1c')]?_[_0xef3f('0x1d')](_0x5114f6[_0xef3f('0x1c')],function(_0x5efaee){return{'model':db[_0x5efaee['model']],'as':_0x5efaee['as'],'attributes':_0x5efaee[_0xef3f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xef3f('0xa')](function(_0x39a956){logger[_0xef3f('0x13')](_0xef3f('0x16'),_0x59d98c);logger[_0xef3f('0xd')]('ShowSmsAccount',_0x59d98c,JSON[_0xef3f('0xf')](_0x39a956));_0xcf461d(_0x39a956);})['catch'](function(_0x14b3ff){logger[_0xef3f('0x10')]('ShowSmsAccount',_0x14b3ff['message'],_0x59d98c);_0x30a125(_0x42a3c4[_0xef3f('0x10')](0x1f4,_0x14b3ff[_0xef3f('0x12')]));});});};
\ No newline at end of file
+var _0xa6a8=['../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','map','model','debug','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0xa6a8,0x1c1));var _0x8a6a=function(_0x29cfdd,_0x4c68e6){_0x29cfdd=_0x29cfdd-0x0;var _0x385b55=_0xa6a8[_0x29cfdd];return _0x385b55;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x8a6a('0x0'));var rs=require(_0x8a6a('0x1'));var fs=require('fs');var Redis=require(_0x8a6a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8a6a('0x3'));var logger=require(_0x8a6a('0x4'))(_0x8a6a('0x5'));var config=require(_0x8a6a('0x6'));var jayson=require(_0x8a6a('0x7'));var client=jayson['client'][_0x8a6a('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0x8a6a('0x9')],{'host':_0x8a6a('0xa'),'port':0x18eb});var socket=require(_0x8a6a('0xb'))(new Redis(config['redis']));require('./smsAccount.socket')[_0x8a6a('0xc')](socket);function respondWithRpcPromise(_0x6c52e6,_0x4a287b,_0x1b30f1){return new BPromise(function(_0x42a4d3,_0x568154){return client[_0x8a6a('0xd')](_0x6c52e6,_0x1b30f1)[_0x8a6a('0xe')](function(_0x52c782){logger['info'](_0x8a6a('0xf'),_0x4a287b,_0x8a6a('0x10'));logger['debug'](_0x8a6a('0x11'),_0x4a287b,'request\x20sent',JSON[_0x8a6a('0x12')](_0x52c782));if(_0x52c782[_0x8a6a('0x13')]){if(_0x52c782[_0x8a6a('0x13')][_0x8a6a('0x14')]===0x1f4){logger[_0x8a6a('0x13')](_0x8a6a('0xf'),_0x4a287b,_0x52c782['error'][_0x8a6a('0x15')]);return _0x568154(_0x52c782['error'][_0x8a6a('0x15')]);}logger[_0x8a6a('0x13')](_0x8a6a('0xf'),_0x4a287b,_0x52c782[_0x8a6a('0x13')][_0x8a6a('0x15')]);return _0x42a4d3(_0x52c782[_0x8a6a('0x13')]['message']);}else{logger[_0x8a6a('0x16')](_0x8a6a('0xf'),_0x4a287b,'request\x20sent');_0x42a4d3(_0x52c782['result'][_0x8a6a('0x15')]);}})[_0x8a6a('0x17')](function(_0x40a654){logger[_0x8a6a('0x13')](_0x8a6a('0xf'),_0x4a287b,_0x40a654);_0x568154(_0x40a654);});});}exports[_0x8a6a('0x18')]=function(_0x2b105a){var _0x38b8ea=this;return new Promise(function(_0x48235d,_0x4804ae){return db[_0x8a6a('0x19')][_0x8a6a('0x1a')]({'raw':_0x2b105a[_0x8a6a('0x1b')]?_0x2b105a[_0x8a6a('0x1b')][_0x8a6a('0x1c')]===undefined?!![]:![]:!![],'where':_0x2b105a[_0x8a6a('0x1b')]?_0x2b105a[_0x8a6a('0x1b')][_0x8a6a('0x1d')]||null:null,'attributes':_0x2b105a[_0x8a6a('0x1b')]?_0x2b105a[_0x8a6a('0x1b')][_0x8a6a('0x1e')]||null:null,'include':_0x2b105a['options']?_0x2b105a[_0x8a6a('0x1b')][_0x8a6a('0x1f')]?_[_0x8a6a('0x20')](_0x2b105a[_0x8a6a('0x1b')][_0x8a6a('0x1f')],function(_0x57bf38){return{'model':db[_0x57bf38[_0x8a6a('0x21')]],'as':_0x57bf38['as'],'attributes':_0x57bf38[_0x8a6a('0x1e')],'include':_0x57bf38['include']?_['map'](_0x57bf38[_0x8a6a('0x1f')],function(_0xa323df){return{'model':db[_0xa323df[_0x8a6a('0x21')]],'as':_0xa323df['as'],'attributes':_0xa323df['attributes'],'include':_0xa323df[_0x8a6a('0x1f')]?_['map'](_0xa323df[_0x8a6a('0x1f')],function(_0x572587){return{'model':db[_0x572587[_0x8a6a('0x21')]],'as':_0x572587['as'],'attributes':_0x572587['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2770fa){logger[_0x8a6a('0x16')](_0x8a6a('0x18'),_0x2b105a);logger[_0x8a6a('0x22')](_0x8a6a('0x18'),_0x2b105a,JSON['stringify'](_0x2770fa));_0x48235d(_0x2770fa);})[_0x8a6a('0x17')](function(_0x3064b6){logger['error']('ShowSmsAccount',_0x3064b6['message'],_0x2b105a);_0x4804ae(_0x38b8ea[_0x8a6a('0x13')](0x1f4,_0x3064b6[_0x8a6a('0x15')]));});});};
\ No newline at end of file
index 7a14775..b2f6de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 33e0638..0bf7ffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0xcb14ae,_0x4acd9f){var _0x12fed8=function(_0x424ab8){while(--_0x424ab8){_0xcb14ae['push'](_0xcb14ae['shift']());}};_0x12fed8(++_0x4acd9f);}(_0x7217,0x19e));var _0x7721=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0x7217[_0x4e1d03];return _0x362d4b;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
+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(_0xfd1abd,_0x5ed1fe){var _0x6671a4=function(_0x34768a){while(--_0x34768a){_0xfd1abd['push'](_0xfd1abd['shift']());}};_0x6671a4(++_0x5ed1fe);}(_0x55ca,0x126));var _0xa55c=function(_0x52a7e1,_0x189bf3){_0x52a7e1=_0x52a7e1-0x0;var _0x4f4495=_0x55ca[_0x52a7e1];return _0x4f4495;};'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 4030058..f620fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x518f=['sequelize','STRING','TEXT','*,*,*,*'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x518f,0x78));var _0xf518=function(_0x5447aa,_0x3afc00){_0x5447aa=_0x5447aa-0x0;var _0xb21e53=_0x518f[_0x5447aa];return _0xb21e53;};'use strict';var Sequelize=require(_0xf518('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xf518('0x1')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xf518('0x2')]()},'description':{'type':Sequelize[_0xf518('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xf518('0x3')}};
\ No newline at end of file
+var _0xa563=['exports','STRING','TEXT','*,*,*,*','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa563,0x144));var _0x3a56=function(_0x45b663,_0x1f9910){_0x45b663=_0x45b663-0x0;var _0x390b7c=_0xa563[_0x45b663];return _0x390b7c;};'use strict';var Sequelize=require(_0x3a56('0x0'));module[_0x3a56('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x3a56('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x3a56('0x3')]()},'description':{'type':Sequelize[_0x3a56('0x2')]},'interval':{'type':Sequelize[_0x3a56('0x2')],'defaultValue':_0x3a56('0x4')}};
\ No newline at end of file
index 5862540..61ed6e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7c0=['destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','catch','create','body'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xa7c0,0x1c9));var _0x0a7c=function(_0x40459f,_0x1813fd){_0x40459f=_0x40459f-0x0;var _0x2743ab=_0xa7c0[_0x40459f];return _0x2743ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0a7c('0x0'));var zipdir=require(_0x0a7c('0x1'));var jsonpatch=require(_0x0a7c('0x2'));var rp=require(_0x0a7c('0x3'));var moment=require(_0x0a7c('0x4'));var BPromise=require(_0x0a7c('0x5'));var Mustache=require(_0x0a7c('0x6'));var util=require(_0x0a7c('0x7'));var path=require('path');var sox=require(_0x0a7c('0x8'));var csv=require(_0x0a7c('0x9'));var ejs=require(_0x0a7c('0xa'));var fs=require('fs');var fs_extra=require(_0x0a7c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0a7c('0xc'));var jsforce=require(_0x0a7c('0xd'));var deskjs=require(_0x0a7c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0a7c('0xf'));var Papa=require(_0x0a7c('0x10'));var Redis=require(_0x0a7c('0x11'));var authService=require(_0x0a7c('0x12'));var qs=require(_0x0a7c('0x13'));var as=require(_0x0a7c('0x14'));var hardwareService=require(_0x0a7c('0x15'));var logger=require(_0x0a7c('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0a7c('0x17'))['db'];function respondWithStatusCode(_0x1277c5,_0x5e909f){_0x5e909f=_0x5e909f||0xcc;return function(_0xd06c8b){if(_0xd06c8b){return _0x1277c5['sendStatus'](_0x5e909f);}return _0x1277c5[_0x0a7c('0x18')](_0x5e909f)[_0x0a7c('0x19')]();};}function respondWithResult(_0x28ee10,_0x5440e5){_0x5440e5=_0x5440e5||0xc8;return function(_0x563d42){if(_0x563d42){return _0x28ee10[_0x0a7c('0x18')](_0x5440e5)[_0x0a7c('0x1a')](_0x563d42);}};}function respondWithFilteredResult(_0x2788c1,_0x4e8224){return function(_0x550e71){if(_0x550e71){var _0xb8aabe=typeof _0x4e8224[_0x0a7c('0x1b')]===_0x0a7c('0x1c')&&typeof _0x4e8224['limit']===_0x0a7c('0x1c');var _0x5a5cc6=_0x550e71['count'];var _0x1e2b85=_0xb8aabe?0x0:_0x4e8224[_0x0a7c('0x1b')];var _0x2af81b=_0xb8aabe?_0x550e71[_0x0a7c('0x1d')]:_0x4e8224[_0x0a7c('0x1b')]+_0x4e8224[_0x0a7c('0x1e')];var _0x39dc07;if(_0x2af81b>=_0x5a5cc6){_0x2af81b=_0x5a5cc6;_0x39dc07=0xc8;}else{_0x39dc07=0xce;}_0x2788c1[_0x0a7c('0x18')](_0x39dc07);return _0x2788c1['set']('Content-Range',_0x1e2b85+'-'+_0x2af81b+'/'+_0x5a5cc6)[_0x0a7c('0x1a')](_0x550e71);}return null;};}function patchUpdates(_0x16d90b){return function(_0x12fda5){try{jsonpatch[_0x0a7c('0x1f')](_0x12fda5,_0x16d90b,!![]);}catch(_0x49bc92){return BPromise[_0x0a7c('0x20')](_0x49bc92);}return _0x12fda5[_0x0a7c('0x21')]();};}function saveUpdates(_0xe69334,_0xa07d00){return function(_0x40d2d8){if(_0x40d2d8){return _0x40d2d8[_0x0a7c('0x22')](_0xe69334)[_0x0a7c('0x23')](function(_0x2569af){return _0x2569af;});}return null;};}function removeEntity(_0x2e6f08,_0x13f93a){return function(_0x113379){if(_0x113379){return _0x113379['destroy']()[_0x0a7c('0x23')](function(){_0x2e6f08[_0x0a7c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a5081,_0x30508a){return function(_0x59eab3){if(!_0x59eab3){_0x5a5081[_0x0a7c('0x24')](0x194);}return _0x59eab3;};}function handleError(_0x242feb,_0x36d239){_0x36d239=_0x36d239||0x1f4;return function(_0x233431){logger[_0x0a7c('0x25')](_0x233431[_0x0a7c('0x26')]);if(_0x233431['name']){delete _0x233431[_0x0a7c('0x27')];}_0x242feb[_0x0a7c('0x18')](_0x36d239)[_0x0a7c('0x28')](_0x233431);};}exports[_0x0a7c('0x29')]=function(_0x46d84c,_0x12ca9b){var _0xa363f2={},_0x130f8e={},_0x32c832={'count':0x0,'rows':[]};var _0x2b08cc=_[_0x0a7c('0x2a')](db[_0x0a7c('0x2b')][_0x0a7c('0x2c')],function(_0x4a0221){return{'name':_0x4a0221[_0x0a7c('0x2d')],'type':_0x4a0221['type'][_0x0a7c('0x2e')]};});_0x130f8e[_0x0a7c('0x2f')]=_[_0x0a7c('0x2a')](_0x2b08cc,'name');_0x130f8e[_0x0a7c('0x30')]=_[_0x0a7c('0x31')](_0x46d84c[_0x0a7c('0x30')]);_0x130f8e['filters']=_[_0x0a7c('0x32')](_0x130f8e['model'],_0x130f8e[_0x0a7c('0x30')]);_0xa363f2[_0x0a7c('0x33')]=_['intersection'](_0x130f8e[_0x0a7c('0x2f')],qs['fields'](_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x34')]));_0xa363f2[_0x0a7c('0x33')]=_0xa363f2[_0x0a7c('0x33')][_0x0a7c('0x35')]?_0xa363f2['attributes']:_0x130f8e[_0x0a7c('0x2f')];if(!_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x36')](_0x0a7c('0x37'))){_0xa363f2[_0x0a7c('0x1e')]=qs[_0x0a7c('0x1e')](_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x1e')]);_0xa363f2[_0x0a7c('0x1b')]=qs['offset'](_0x46d84c['query'][_0x0a7c('0x1b')]);}_0xa363f2[_0x0a7c('0x38')]=qs[_0x0a7c('0x39')](_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x39')]);_0xa363f2[_0x0a7c('0x3a')]=qs[_0x0a7c('0x3b')](_['pick'](_0x46d84c[_0x0a7c('0x30')],_0x130f8e['filters']),_0x2b08cc);if(_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x3c')]){_0xa363f2['where']=_[_0x0a7c('0x3d')](_0xa363f2[_0x0a7c('0x3a')],{'$or':_[_0x0a7c('0x2a')](_0x2b08cc,function(_0x59d201){if(_0x59d201[_0x0a7c('0x3e')]!==_0x0a7c('0x3f')){var _0x21c2d4={};_0x21c2d4[_0x59d201['name']]={'$like':'%'+_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x3c')]+'%'};return _0x21c2d4;}})});}_0xa363f2=_['merge']({},_0xa363f2,_0x46d84c['options']);var _0x1b70f6={'where':_0xa363f2[_0x0a7c('0x3a')]};return db['SmsApplication']['count'](_0x1b70f6)[_0x0a7c('0x23')](function(_0x1820c1){_0x32c832['count']=_0x1820c1;if(_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x40')]){_0xa363f2[_0x0a7c('0x41')]=[{'all':!![]}];}return db[_0x0a7c('0x2b')][_0x0a7c('0x42')](_0xa363f2);})[_0x0a7c('0x23')](function(_0x229fb4){_0x32c832[_0x0a7c('0x43')]=_0x229fb4;return _0x32c832;})[_0x0a7c('0x23')](respondWithFilteredResult(_0x12ca9b,_0xa363f2))['catch'](handleError(_0x12ca9b,null));};exports[_0x0a7c('0x44')]=function(_0x46e58d,_0x552ee5){var _0xf91a51={'raw':!![],'where':{'id':_0x46e58d[_0x0a7c('0x45')]['id']}},_0x2790e7={};_0x2790e7['model']=_[_0x0a7c('0x31')](db[_0x0a7c('0x2b')][_0x0a7c('0x2c')]);_0x2790e7[_0x0a7c('0x30')]=_['keys'](_0x46e58d['query']);_0x2790e7[_0x0a7c('0x3b')]=_[_0x0a7c('0x32')](_0x2790e7['model'],_0x2790e7[_0x0a7c('0x30')]);_0xf91a51[_0x0a7c('0x33')]=_['intersection'](_0x2790e7[_0x0a7c('0x2f')],qs[_0x0a7c('0x34')](_0x46e58d[_0x0a7c('0x30')][_0x0a7c('0x34')]));_0xf91a51[_0x0a7c('0x33')]=_0xf91a51[_0x0a7c('0x33')][_0x0a7c('0x35')]?_0xf91a51[_0x0a7c('0x33')]:_0x2790e7[_0x0a7c('0x2f')];if(_0x46e58d[_0x0a7c('0x30')][_0x0a7c('0x40')]){_0xf91a51[_0x0a7c('0x41')]=[{'all':!![]}];}_0xf91a51=_[_0x0a7c('0x3d')]({},_0xf91a51,_0x46e58d[_0x0a7c('0x46')]);return db['SmsApplication'][_0x0a7c('0x47')](_0xf91a51)[_0x0a7c('0x23')](handleEntityNotFound(_0x552ee5,null))[_0x0a7c('0x23')](respondWithResult(_0x552ee5,null))[_0x0a7c('0x48')](handleError(_0x552ee5,null));};exports[_0x0a7c('0x49')]=function(_0xbcaa6c,_0x4a7b2e){return db[_0x0a7c('0x2b')][_0x0a7c('0x49')](_0xbcaa6c[_0x0a7c('0x4a')],{})[_0x0a7c('0x23')](respondWithResult(_0x4a7b2e,0xc9))[_0x0a7c('0x48')](handleError(_0x4a7b2e,null));};exports[_0x0a7c('0x22')]=function(_0x52d888,_0xe08562){if(_0x52d888[_0x0a7c('0x4a')]['id']){delete _0x52d888[_0x0a7c('0x4a')]['id'];}return db[_0x0a7c('0x2b')][_0x0a7c('0x47')]({'where':{'id':_0x52d888[_0x0a7c('0x45')]['id']}})[_0x0a7c('0x23')](handleEntityNotFound(_0xe08562,null))['then'](saveUpdates(_0x52d888['body'],null))[_0x0a7c('0x23')](respondWithResult(_0xe08562,null))[_0x0a7c('0x48')](handleError(_0xe08562,null));};exports[_0x0a7c('0x4b')]=function(_0x3589cd,_0x286001){return db[_0x0a7c('0x2b')][_0x0a7c('0x47')]({'where':{'id':_0x3589cd[_0x0a7c('0x45')]['id']}})[_0x0a7c('0x23')](handleEntityNotFound(_0x286001,null))[_0x0a7c('0x23')](removeEntity(_0x286001,null))[_0x0a7c('0x48')](handleError(_0x286001,null));};
\ No newline at end of file
+var _0xfd4f=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','../../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','then','destroy','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir'];(function(_0x293d41,_0x43f954){var _0x1b5245=function(_0x4db2a7){while(--_0x4db2a7){_0x293d41['push'](_0x293d41['shift']());}};_0x1b5245(++_0x43f954);}(_0xfd4f,0x183));var _0xffd4=function(_0x2a33e9,_0x2a9f84){_0x2a33e9=_0x2a33e9-0x0;var _0x4d39b0=_0xfd4f[_0x2a33e9];return _0x4d39b0;};'use strict';var emlformat=require(_0xffd4('0x0'));var rimraf=require(_0xffd4('0x1'));var zipdir=require(_0xffd4('0x2'));var jsonpatch=require(_0xffd4('0x3'));var rp=require(_0xffd4('0x4'));var moment=require(_0xffd4('0x5'));var BPromise=require(_0xffd4('0x6'));var Mustache=require(_0xffd4('0x7'));var util=require(_0xffd4('0x8'));var path=require(_0xffd4('0x9'));var sox=require(_0xffd4('0xa'));var csv=require('to-csv');var ejs=require(_0xffd4('0xb'));var fs=require('fs');var fs_extra=require(_0xffd4('0xc'));var _=require(_0xffd4('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xffd4('0xe'));var deskjs=require(_0xffd4('0xf'));var toCsv=require(_0xffd4('0x10'));var querystring=require(_0xffd4('0x11'));var Papa=require(_0xffd4('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xffd4('0x13'));var hardwareService=require(_0xffd4('0x14'));var logger=require(_0xffd4('0x15'))('api');var utils=require(_0xffd4('0x16'));var config=require(_0xffd4('0x17'));var licenseUtil=require(_0xffd4('0x18'));var db=require(_0xffd4('0x19'))['db'];function respondWithStatusCode(_0xcfab82,_0x58bdad){_0x58bdad=_0x58bdad||0xcc;return function(_0xa105dd){if(_0xa105dd){return _0xcfab82[_0xffd4('0x1a')](_0x58bdad);}return _0xcfab82[_0xffd4('0x1b')](_0x58bdad)[_0xffd4('0x1c')]();};}function respondWithResult(_0x353b1c,_0x5d9c6b){_0x5d9c6b=_0x5d9c6b||0xc8;return function(_0x39867f){if(_0x39867f){return _0x353b1c[_0xffd4('0x1b')](_0x5d9c6b)[_0xffd4('0x1d')](_0x39867f);}};}function respondWithFilteredResult(_0x3bb4e0,_0x10046b){return function(_0x1fde6c){if(_0x1fde6c){var _0x1b5ac9=typeof _0x10046b[_0xffd4('0x1e')]===_0xffd4('0x1f')&&typeof _0x10046b[_0xffd4('0x20')]===_0xffd4('0x1f');var _0x4cafe3=_0x1fde6c[_0xffd4('0x21')];var _0x4bca8e=_0x1b5ac9?0x0:_0x10046b[_0xffd4('0x1e')];var _0x47de64=_0x1b5ac9?_0x1fde6c[_0xffd4('0x21')]:_0x10046b[_0xffd4('0x1e')]+_0x10046b[_0xffd4('0x20')];var _0x46169d;if(_0x47de64>=_0x4cafe3){_0x47de64=_0x4cafe3;_0x46169d=0xc8;}else{_0x46169d=0xce;}_0x3bb4e0['status'](_0x46169d);return _0x3bb4e0['set'](_0xffd4('0x22'),_0x4bca8e+'-'+_0x47de64+'/'+_0x4cafe3)[_0xffd4('0x1d')](_0x1fde6c);}return null;};}function patchUpdates(_0x15ad90){return function(_0x4e5525){try{jsonpatch[_0xffd4('0x23')](_0x4e5525,_0x15ad90,!![]);}catch(_0x47b4c9){return BPromise[_0xffd4('0x24')](_0x47b4c9);}return _0x4e5525[_0xffd4('0x25')]();};}function saveUpdates(_0x5ceae4,_0x48b0d4){return function(_0x496bcd){if(_0x496bcd){return _0x496bcd[_0xffd4('0x26')](_0x5ceae4)[_0xffd4('0x27')](function(_0x1b9d6e){return _0x1b9d6e;});}return null;};}function removeEntity(_0x1688c3,_0x15c89c){return function(_0x2bf8dd){if(_0x2bf8dd){return _0x2bf8dd[_0xffd4('0x28')]()[_0xffd4('0x27')](function(){_0x1688c3[_0xffd4('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41de61,_0x3c3ac6){return function(_0x15e115){if(!_0x15e115){_0x41de61[_0xffd4('0x1a')](0x194);}return _0x15e115;};}function handleError(_0x1af6de,_0x4ecbcd){_0x4ecbcd=_0x4ecbcd||0x1f4;return function(_0x5cac90){logger['error'](_0x5cac90[_0xffd4('0x29')]);if(_0x5cac90['name']){delete _0x5cac90[_0xffd4('0x2a')];}_0x1af6de[_0xffd4('0x1b')](_0x4ecbcd)[_0xffd4('0x2b')](_0x5cac90);};}exports[_0xffd4('0x2c')]=function(_0xbaf40f,_0x246ae3){var _0x50c2be={},_0x101ad0={},_0x4ce7a5={'count':0x0,'rows':[]};var _0x2d95ee=_[_0xffd4('0x2d')](db[_0xffd4('0x2e')][_0xffd4('0x2f')],function(_0x5dc66f){return{'name':_0x5dc66f[_0xffd4('0x30')],'type':_0x5dc66f[_0xffd4('0x31')][_0xffd4('0x32')]};});_0x101ad0[_0xffd4('0x33')]=_['map'](_0x2d95ee,_0xffd4('0x2a'));_0x101ad0[_0xffd4('0x34')]=_[_0xffd4('0x35')](_0xbaf40f[_0xffd4('0x34')]);_0x101ad0[_0xffd4('0x36')]=_[_0xffd4('0x37')](_0x101ad0[_0xffd4('0x33')],_0x101ad0[_0xffd4('0x34')]);_0x50c2be['attributes']=_[_0xffd4('0x37')](_0x101ad0['model'],qs[_0xffd4('0x38')](_0xbaf40f['query']['fields']));_0x50c2be[_0xffd4('0x39')]=_0x50c2be[_0xffd4('0x39')][_0xffd4('0x3a')]?_0x50c2be[_0xffd4('0x39')]:_0x101ad0[_0xffd4('0x33')];if(!_0xbaf40f[_0xffd4('0x34')][_0xffd4('0x3b')](_0xffd4('0x3c'))){_0x50c2be[_0xffd4('0x20')]=qs[_0xffd4('0x20')](_0xbaf40f[_0xffd4('0x34')][_0xffd4('0x20')]);_0x50c2be['offset']=qs['offset'](_0xbaf40f[_0xffd4('0x34')]['offset']);}_0x50c2be[_0xffd4('0x3d')]=qs[_0xffd4('0x3e')](_0xbaf40f[_0xffd4('0x34')][_0xffd4('0x3e')]);_0x50c2be[_0xffd4('0x3f')]=qs[_0xffd4('0x36')](_[_0xffd4('0x40')](_0xbaf40f[_0xffd4('0x34')],_0x101ad0[_0xffd4('0x36')]),_0x2d95ee);if(_0xbaf40f[_0xffd4('0x34')][_0xffd4('0x41')]){_0x50c2be['where']=_[_0xffd4('0x42')](_0x50c2be[_0xffd4('0x3f')],{'$or':_[_0xffd4('0x2d')](_0x2d95ee,function(_0x1bac7a){if(_0x1bac7a[_0xffd4('0x31')]!==_0xffd4('0x43')){var _0x448412={};_0x448412[_0x1bac7a[_0xffd4('0x2a')]]={'$like':'%'+_0xbaf40f[_0xffd4('0x34')]['filter']+'%'};return _0x448412;}})});}_0x50c2be=_[_0xffd4('0x42')]({},_0x50c2be,_0xbaf40f[_0xffd4('0x44')]);var _0x4755a0={'where':_0x50c2be[_0xffd4('0x3f')]};return db['SmsApplication'][_0xffd4('0x21')](_0x4755a0)['then'](function(_0x36859c){_0x4ce7a5[_0xffd4('0x21')]=_0x36859c;if(_0xbaf40f[_0xffd4('0x34')][_0xffd4('0x45')]){_0x50c2be[_0xffd4('0x46')]=[{'all':!![]}];}return db['SmsApplication']['findAll'](_0x50c2be);})[_0xffd4('0x27')](function(_0x4310fe){_0x4ce7a5[_0xffd4('0x47')]=_0x4310fe;return _0x4ce7a5;})[_0xffd4('0x27')](respondWithFilteredResult(_0x246ae3,_0x50c2be))[_0xffd4('0x48')](handleError(_0x246ae3,null));};exports[_0xffd4('0x49')]=function(_0x5ef6ac,_0x3090ff){var _0x94858d={'raw':!![],'where':{'id':_0x5ef6ac[_0xffd4('0x4a')]['id']}},_0x479f26={};_0x479f26[_0xffd4('0x33')]=_[_0xffd4('0x35')](db['SmsApplication'][_0xffd4('0x2f')]);_0x479f26[_0xffd4('0x34')]=_[_0xffd4('0x35')](_0x5ef6ac[_0xffd4('0x34')]);_0x479f26[_0xffd4('0x36')]=_['intersection'](_0x479f26[_0xffd4('0x33')],_0x479f26[_0xffd4('0x34')]);_0x94858d[_0xffd4('0x39')]=_[_0xffd4('0x37')](_0x479f26['model'],qs[_0xffd4('0x38')](_0x5ef6ac[_0xffd4('0x34')]['fields']));_0x94858d['attributes']=_0x94858d[_0xffd4('0x39')][_0xffd4('0x3a')]?_0x94858d['attributes']:_0x479f26['model'];if(_0x5ef6ac[_0xffd4('0x34')][_0xffd4('0x45')]){_0x94858d[_0xffd4('0x46')]=[{'all':!![]}];}_0x94858d=_[_0xffd4('0x42')]({},_0x94858d,_0x5ef6ac[_0xffd4('0x44')]);return db[_0xffd4('0x2e')][_0xffd4('0x4b')](_0x94858d)[_0xffd4('0x27')](handleEntityNotFound(_0x3090ff,null))[_0xffd4('0x27')](respondWithResult(_0x3090ff,null))[_0xffd4('0x48')](handleError(_0x3090ff,null));};exports[_0xffd4('0x4c')]=function(_0x5143d1,_0x104ede){return db[_0xffd4('0x2e')][_0xffd4('0x4c')](_0x5143d1[_0xffd4('0x4d')],{})[_0xffd4('0x27')](respondWithResult(_0x104ede,0xc9))[_0xffd4('0x48')](handleError(_0x104ede,null));};exports[_0xffd4('0x26')]=function(_0x4da83b,_0x2bb10a){if(_0x4da83b[_0xffd4('0x4d')]['id']){delete _0x4da83b[_0xffd4('0x4d')]['id'];}return db[_0xffd4('0x2e')]['find']({'where':{'id':_0x4da83b[_0xffd4('0x4a')]['id']}})[_0xffd4('0x27')](handleEntityNotFound(_0x2bb10a,null))[_0xffd4('0x27')](saveUpdates(_0x4da83b[_0xffd4('0x4d')],null))[_0xffd4('0x27')](respondWithResult(_0x2bb10a,null))[_0xffd4('0x48')](handleError(_0x2bb10a,null));};exports[_0xffd4('0x28')]=function(_0x5bd2b6,_0x1d5b9a){return db[_0xffd4('0x2e')]['find']({'where':{'id':_0x5bd2b6['params']['id']}})[_0xffd4('0x27')](handleEntityNotFound(_0x1d5b9a,null))[_0xffd4('0x27')](removeEntity(_0x1d5b9a,null))[_0xffd4('0x48')](handleError(_0x1d5b9a,null));};
\ No newline at end of file
index 6cda7e5..854aae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e6c=['../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x178215,_0xdde951){var _0x18fe51=function(_0x1b9979){while(--_0x1b9979){_0x178215['push'](_0x178215['shift']());}};_0x18fe51(++_0xdde951);}(_0x1e6c,0x11a));var _0xc1e6=function(_0x50a1f6,_0x238fd8){_0x50a1f6=_0x50a1f6-0x0;var _0x84f8d4=_0x1e6c[_0x50a1f6];return _0x84f8d4;};'use strict';var _=require(_0xc1e6('0x0'));var util=require('util');var logger=require(_0xc1e6('0x1'))(_0xc1e6('0x2'));var moment=require(_0xc1e6('0x3'));var BPromise=require(_0xc1e6('0x4'));var rp=require(_0xc1e6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc1e6('0x6'));var attributes=require(_0xc1e6('0x7'));module[_0xc1e6('0x8')]=function(_0x157b8d,_0x36968b){return _0x157b8d[_0xc1e6('0x9')](_0xc1e6('0xa'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc1e6('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xe97e=['lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','define','sms_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0xd598e9,_0x20cb54){var _0x12c224=function(_0x5046e1){while(--_0x5046e1){_0xd598e9['push'](_0xd598e9['shift']());}};_0x12c224(++_0x20cb54);}(_0xe97e,0xd0));var _0xee97=function(_0x15071f,_0x5eb780){_0x15071f=_0x15071f-0x0;var _0xe831e0=_0xe97e[_0x15071f];return _0xe831e0;};'use strict';var _=require(_0xee97('0x0'));var util=require(_0xee97('0x1'));var logger=require(_0xee97('0x2'))(_0xee97('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xee97('0x4'));var fs=require('fs');var path=require(_0xee97('0x5'));var rimraf=require(_0xee97('0x6'));var config=require(_0xee97('0x7'));var attributes=require(_0xee97('0x8'));module['exports']=function(_0x5a1c37,_0x42fe9f){return _0x5a1c37[_0xee97('0x9')]('SmsApplication',attributes,{'tableName':_0xee97('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xee97('0xb'),'collate':_0xee97('0xc')});};
\ No newline at end of file
index e735eea..5bea4d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d2f=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','error'];(function(_0x5192de,_0x4e91cd){var _0x4e287e=function(_0x3639bc){while(--_0x3639bc){_0x5192de['push'](_0x5192de['shift']());}};_0x4e287e(++_0x4e91cd);}(_0x3d2f,0x18f));var _0xf3d2=function(_0x279b90,_0x53c05b){_0x279b90=_0x279b90-0x0;var _0x415d4c=_0x3d2f[_0x279b90];return _0x415d4c;};'use strict';var _=require(_0xf3d2('0x0'));var util=require(_0xf3d2('0x1'));var moment=require('moment');var BPromise=require(_0xf3d2('0x2'));var rs=require(_0xf3d2('0x3'));var fs=require('fs');var Redis=require(_0xf3d2('0x4'));var db=require(_0xf3d2('0x5'))['db'];var utils=require(_0xf3d2('0x6'));var logger=require(_0xf3d2('0x7'))(_0xf3d2('0x8'));var config=require('../../config/environment');var jayson=require(_0xf3d2('0x9'));var client=jayson[_0xf3d2('0xa')][_0xf3d2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xf9a0c9,_0x23edba,_0x57f94b){return new BPromise(function(_0x26f330,_0x3f86f6){return client['request'](_0xf9a0c9,_0x57f94b)[_0xf3d2('0xc')](function(_0x4ef134){logger[_0xf3d2('0xd')](_0xf3d2('0xe'),_0x23edba,_0xf3d2('0xf'));logger[_0xf3d2('0x10')](_0xf3d2('0x11'),_0x23edba,_0xf3d2('0xf'),JSON['stringify'](_0x4ef134));if(_0x4ef134[_0xf3d2('0x12')]){if(_0x4ef134[_0xf3d2('0x12')]['code']===0x1f4){logger[_0xf3d2('0x12')]('SmsApplication,\x20%s,\x20%s',_0x23edba,_0x4ef134[_0xf3d2('0x12')][_0xf3d2('0x13')]);return _0x3f86f6(_0x4ef134[_0xf3d2('0x12')]['message']);}logger[_0xf3d2('0x12')](_0xf3d2('0xe'),_0x23edba,_0x4ef134[_0xf3d2('0x12')][_0xf3d2('0x13')]);return _0x26f330(_0x4ef134[_0xf3d2('0x12')][_0xf3d2('0x13')]);}else{logger['info'](_0xf3d2('0xe'),_0x23edba,_0xf3d2('0xf'));_0x26f330(_0x4ef134[_0xf3d2('0x14')][_0xf3d2('0x13')]);}})[_0xf3d2('0x15')](function(_0x3daaaf){logger[_0xf3d2('0x12')](_0xf3d2('0xe'),_0x23edba,_0x3daaaf);_0x3f86f6(_0x3daaaf);});});}
\ No newline at end of file
+var _0x431b=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash','util','moment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x431b,0x18d));var _0xb431=function(_0xce3465,_0x2299f7){_0xce3465=_0xce3465-0x0;var _0x329e9e=_0x431b[_0xce3465];return _0x329e9e;};'use strict';var _=require(_0xb431('0x0'));var util=require(_0xb431('0x1'));var moment=require(_0xb431('0x2'));var BPromise=require('bluebird');var rs=require(_0xb431('0x3'));var fs=require('fs');var Redis=require(_0xb431('0x4'));var db=require(_0xb431('0x5'))['db'];var utils=require(_0xb431('0x6'));var logger=require(_0xb431('0x7'))(_0xb431('0x8'));var config=require(_0xb431('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb431('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fefc5,_0x58eb22,_0x5151a2){return new BPromise(function(_0x45adf2,_0x4a21dd){return client['request'](_0x2fefc5,_0x5151a2)[_0xb431('0xb')](function(_0x34cdb1){logger[_0xb431('0xc')](_0xb431('0xd'),_0x58eb22,_0xb431('0xe'));logger[_0xb431('0xf')](_0xb431('0x10'),_0x58eb22,'request\x20sent',JSON[_0xb431('0x11')](_0x34cdb1));if(_0x34cdb1[_0xb431('0x12')]){if(_0x34cdb1[_0xb431('0x12')]['code']===0x1f4){logger[_0xb431('0x12')](_0xb431('0xd'),_0x58eb22,_0x34cdb1[_0xb431('0x12')][_0xb431('0x13')]);return _0x4a21dd(_0x34cdb1[_0xb431('0x12')][_0xb431('0x13')]);}logger['error'](_0xb431('0xd'),_0x58eb22,_0x34cdb1['error'][_0xb431('0x13')]);return _0x45adf2(_0x34cdb1[_0xb431('0x12')][_0xb431('0x13')]);}else{logger[_0xb431('0xc')](_0xb431('0xd'),_0x58eb22,_0xb431('0xe'));_0x45adf2(_0x34cdb1['result'][_0xb431('0x13')]);}})['catch'](function(_0xc73c8a){logger[_0xb431('0x12')](_0xb431('0xd'),_0x58eb22,_0xc73c8a);_0x4a21dd(_0xc73c8a);});});}
\ No newline at end of file
index bf586f4..cbf12c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','download','post'];(function(_0x2d7aa3,_0x4843bb){var _0x304219=function(_0x106cee){while(--_0x106cee){_0x2d7aa3['push'](_0x2d7aa3['shift']());}};_0x304219(++_0x4843bb);}(_0x0abf,0xe8));var _0xf0ab=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0abf[_0x14add3];return _0x4a174f;};'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')]('/describe',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0x7')](_0xf0ab('0xb'),auth['isAuthenticated'](),controller[_0xf0ab('0xc')]);router[_0xf0ab('0x7')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller['getMessages']);router[_0xf0ab('0x7')]('/:id/download',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xe')]);router[_0xf0ab('0xf')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x10')]);router[_0xf0ab('0xf')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller[_0xf0ab('0x11')]);router[_0xf0ab('0xf')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x15')),controller[_0xf0ab('0x16')]);router[_0xf0ab('0x17')](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x18')),controller[_0xf0ab('0x19')]);router['delete'](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x1a')),controller[_0xf0ab('0x1b')]);router[_0xf0ab('0x1c')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x1d')]);module[_0xf0ab('0x1e')]=router;
\ No newline at end of file
+var _0xa571=['get','isAuthenticated','index','/describe','/:id','/:id/messages','getMessages','/:id/download','download','create','post','addMessage','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','delete','tracked','destroy','/:id/tags','removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0xa571,0x107));var _0x1a57=function(_0x33e20e,_0x36a759){_0x33e20e=_0x33e20e-0x0;var _0x1578a6=_0xa571[_0x33e20e];return _0x1578a6;};'use strict';var multer=require(_0x1a57('0x0'));var util=require(_0x1a57('0x1'));var path=require(_0x1a57('0x2'));var timeout=require(_0x1a57('0x3'));var express=require('express');var router=express[_0x1a57('0x4')]();var fs_extra=require(_0x1a57('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1a57('0x6'));var controller=require('./smsInteraction.controller');router[_0x1a57('0x7')]('/',auth[_0x1a57('0x8')](),controller[_0x1a57('0x9')]);router[_0x1a57('0x7')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller['describe']);router[_0x1a57('0x7')](_0x1a57('0xb'),auth[_0x1a57('0x8')](),controller['show']);router[_0x1a57('0x7')](_0x1a57('0xc'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xd')]);router[_0x1a57('0x7')](_0x1a57('0xe'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1a57('0x10')]);router[_0x1a57('0x11')](_0x1a57('0xc'),auth['isAuthenticated'](),controller[_0x1a57('0x12')]);router[_0x1a57('0x11')]('/:id/tags',auth[_0x1a57('0x8')](),interaction['tracked'](_0x1a57('0x13'),_0x1a57('0x14')),controller[_0x1a57('0x15')]);router[_0x1a57('0x16')]('/:id',auth[_0x1a57('0x8')](),interaction['tracked']('sms',_0x1a57('0x17')),controller[_0x1a57('0x18')]);router[_0x1a57('0x19')]('/:id',auth[_0x1a57('0x8')](),interaction[_0x1a57('0x1a')](_0x1a57('0x13'),'smsinteraction:destroy'),controller[_0x1a57('0x1b')]);router[_0x1a57('0x19')](_0x1a57('0x1c'),auth[_0x1a57('0x8')](),controller[_0x1a57('0x1d')]);module['exports']=router;
\ No newline at end of file
index ae719a6..86248f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46e1=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','moment','exports'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x46e1,0x155));var _0x146e=function(_0x2488cf,_0x17a3f6){_0x2488cf=_0x2488cf-0x0;var _0x590e6b=_0x46e1[_0x2488cf];return _0x590e6b;};'use strict';var Sequelize=require(_0x146e('0x0'));var moment=require(_0x146e('0x1'));module[_0x146e('0x2')]={'closed':{'type':Sequelize[_0x146e('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x146e('0x4')]},'disposition':{'type':Sequelize[_0x146e('0x5')]},'secondDisposition':{'type':Sequelize[_0x146e('0x5')]},'thirdDisposition':{'type':Sequelize[_0x146e('0x5')]},'note':{'type':Sequelize[_0x146e('0x5')]},'phone':{'type':Sequelize[_0x146e('0x5')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x146e('0x6')]('in',_0x146e('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x146e('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x146e('0x6')]('in',_0x146e('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x146e('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb6f1=['sequelize','exports','DATE','STRING','ENUM','out','BOOLEAN'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xb6f1,0x118));var _0x1b6f=function(_0x196e1b,_0x55fa06){_0x196e1b=_0x196e1b-0x0;var _0x5e1f18=_0xb6f1[_0x196e1b];return _0x5e1f18;};'use strict';var Sequelize=require(_0x1b6f('0x0'));var moment=require('moment');module[_0x1b6f('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1b6f('0x2')]},'disposition':{'type':Sequelize[_0x1b6f('0x3')]},'secondDisposition':{'type':Sequelize[_0x1b6f('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x1b6f('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x1b6f('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x1b6f('0x4')]('in',_0x1b6f('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x1b6f('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1b6f('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 8ab0a1f..c1d4874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c55=['value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','rimraf','bluebird','util','path','lodash','../../components/export/pdf','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./smsInteraction.socket','sendStatus','end','undefined','limit','count','offset','status','set','json','update','then','destroy','error','stack','name','index','map','SmsInteraction','key','getOptions','findAll','sms','query','catch','show','model','keys','rawAttributes','attributes','intersection','fields','includeAll','include','merge','options','create','body','find','params','describe','addMessage','SmsMessage','omit','ids','findOne','filters','hasOwnProperty','order','sort','where','SmsInteractionId','$gte','split','rows','setTags','spread','color','emit','removeTags','download','unix','toString','join','root','server','tmp','format','push','fullname','CmContact','Contact','firstName','lastName','createdAt','direction','read','SmsAccount','Account','User','Owner','get','mkdirSync','Sms','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','Messages','filter','out','System'];(function(_0x22a645,_0x3faf40){var _0x33db9d=function(_0x29c879){while(--_0x29c879){_0x22a645['push'](_0x22a645['shift']());}};_0x33db9d(++_0x3faf40);}(_0x0c55,0x1d1));var _0x50c5=function(_0x367754,_0x436ae4){_0x367754=_0x367754-0x0;var _0x403541=_0x0c55[_0x367754];return _0x403541;};'use strict';var rimraf=require(_0x50c5('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x50c5('0x1'));var util=require(_0x50c5('0x2'));var path=require(_0x50c5('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x50c5('0x4'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0x50c5('0x5'));var logger=require(_0x50c5('0x6'))(_0x50c5('0x7'));var config=require(_0x50c5('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x50c5('0x9')](config[_0x50c5('0xa')],{'host':_0x50c5('0xb'),'port':0x18eb});var socket=require(_0x50c5('0xc'))(new Redis(config[_0x50c5('0xa')]));require(_0x50c5('0xd'))['register'](socket);function respondWithStatusCode(_0x1eef4f,_0x266432){_0x266432=_0x266432||0xcc;return function(_0x44e244){if(_0x44e244){return _0x1eef4f[_0x50c5('0xe')](_0x266432);}return _0x1eef4f['status'](_0x266432)[_0x50c5('0xf')]();};}function respondWithResult(_0x94beb0,_0x490578){_0x490578=_0x490578||0xc8;return function(_0xaef040){if(_0xaef040){return _0x94beb0['status'](_0x490578)['json'](_0xaef040);}};}function respondWithFilteredResult(_0x48f342,_0x1b6665){return function(_0x2b4a69){if(_0x2b4a69){var _0x3fca65=typeof _0x1b6665['offset']===_0x50c5('0x10')&&typeof _0x1b6665[_0x50c5('0x11')]===_0x50c5('0x10');var _0x4dc3b0=_0x2b4a69[_0x50c5('0x12')];var _0x46c928=_0x3fca65?0x0:_0x1b6665[_0x50c5('0x13')];var _0xb27e44=_0x3fca65?_0x2b4a69['count']:_0x1b6665['offset']+_0x1b6665['limit'];var _0x147b53;if(_0xb27e44>=_0x4dc3b0){_0xb27e44=_0x4dc3b0;_0x147b53=0xc8;}else{_0x147b53=0xce;}_0x48f342[_0x50c5('0x14')](_0x147b53);return _0x48f342[_0x50c5('0x15')]('Content-Range',_0x46c928+'-'+_0xb27e44+'/'+_0x4dc3b0)[_0x50c5('0x16')](_0x2b4a69);}return null;};}function saveUpdates(_0x33e0ff){return function(_0x14eaf3){if(_0x14eaf3){return _0x14eaf3[_0x50c5('0x17')](_0x33e0ff)[_0x50c5('0x18')](function(_0x3d2cdc){return _0x3d2cdc;});}return null;};}function removeEntity(_0xb89044){return function(_0x5da4ca){if(_0x5da4ca){return _0x5da4ca[_0x50c5('0x19')]()[_0x50c5('0x18')](function(){_0xb89044[_0x50c5('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3638ee){return function(_0x284a2a){if(!_0x284a2a){_0x3638ee[_0x50c5('0xe')](0x194);}return _0x284a2a;};}function handleError(_0x94af0a,_0x3b9e68){_0x3b9e68=_0x3b9e68||0x1f4;return function(_0xbefbde){logger[_0x50c5('0x1a')](_0xbefbde[_0x50c5('0x1b')]);if(_0xbefbde[_0x50c5('0x1c')]){delete _0xbefbde[_0x50c5('0x1c')];}_0x94af0a[_0x50c5('0x14')](_0x3b9e68)['send'](_0xbefbde);};}exports[_0x50c5('0x1d')]=function(_0x37c02c,_0x44b941){var _0x587155={};var _0x150bf9=_[_0x50c5('0x1e')](db[_0x50c5('0x1f')]['rawAttributes'],function(_0x5e3493){return{'name':_0x5e3493['fieldName'],'type':_0x5e3493['type'][_0x50c5('0x20')]};});_0x587155=qs[_0x50c5('0x21')](_0x150bf9,_0x37c02c);return interaction[_0x50c5('0x22')](_0x50c5('0x23'),_0x37c02c[_0x50c5('0x24')],_0x37c02c['user'],_0x587155,_0x150bf9)[_0x50c5('0x18')](respondWithFilteredResult(_0x44b941,_0x587155))[_0x50c5('0x25')](handleError(_0x44b941,null));};exports[_0x50c5('0x26')]=function(_0x2e6a01,_0x4cd185){var _0x4cbac2={'raw':![],'where':{'id':_0x2e6a01['params']['id']}},_0x4fd184={};_0x4fd184[_0x50c5('0x27')]=_[_0x50c5('0x28')](db['SmsInteraction'][_0x50c5('0x29')]);_0x4fd184[_0x50c5('0x24')]=_[_0x50c5('0x28')](_0x2e6a01[_0x50c5('0x24')]);_0x4fd184['filters']=_['intersection'](_0x4fd184['model'],_0x4fd184[_0x50c5('0x24')]);_0x4cbac2[_0x50c5('0x2a')]=_[_0x50c5('0x2b')](_0x4fd184[_0x50c5('0x27')],qs[_0x50c5('0x2c')](_0x2e6a01[_0x50c5('0x24')][_0x50c5('0x2c')]));_0x4cbac2['attributes']=_0x4cbac2[_0x50c5('0x2a')]['length']?_0x4cbac2[_0x50c5('0x2a')]:_0x4fd184[_0x50c5('0x27')];if(_0x2e6a01[_0x50c5('0x24')][_0x50c5('0x2d')]){_0x4cbac2[_0x50c5('0x2e')]=[{'all':!![]}];}_0x4cbac2=_[_0x50c5('0x2f')]({},_0x4cbac2,_0x2e6a01[_0x50c5('0x30')]);return db[_0x50c5('0x1f')]['find'](_0x4cbac2)['then'](handleEntityNotFound(_0x4cd185,null))['then'](respondWithResult(_0x4cd185,null))['catch'](handleError(_0x4cd185,null));};exports['create']=function(_0x1fdcfe,_0x6f3701){return db[_0x50c5('0x1f')][_0x50c5('0x31')](_0x1fdcfe['body'],{})[_0x50c5('0x18')](respondWithResult(_0x6f3701,0xc9))['catch'](handleError(_0x6f3701,null));};exports[_0x50c5('0x17')]=function(_0x45200b,_0x32f740){if(_0x45200b[_0x50c5('0x32')]['id']){delete _0x45200b[_0x50c5('0x32')]['id'];}return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x45200b[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x32f740,null))[_0x50c5('0x18')](saveUpdates(_0x45200b[_0x50c5('0x32')],null))['then'](respondWithResult(_0x32f740,null))['catch'](handleError(_0x32f740,null));};exports['destroy']=function(_0x5f5291,_0x1b7f0a){return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x5f5291[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x1b7f0a,null))['then'](removeEntity(_0x1b7f0a,null))['catch'](handleError(_0x1b7f0a,null));};exports[_0x50c5('0x35')]=function(_0x214aa2,_0x310d47){return db[_0x50c5('0x1f')][_0x50c5('0x35')]()[_0x50c5('0x18')](respondWithResult(_0x310d47,null))[_0x50c5('0x25')](handleError(_0x310d47,null));};exports[_0x50c5('0x36')]=function(_0x4a4974,_0x64deef){return db[_0x50c5('0x37')][_0x50c5('0x33')]({'where':{'id':_0x4a4974[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x64deef,null))[_0x50c5('0x18')](function(_0x1b4dc8){if(_0x1b4dc8){return _0x1b4dc8[_0x50c5('0x36')](_0x4a4974[_0x50c5('0x32')]['ids'],_[_0x50c5('0x38')](_0x4a4974[_0x50c5('0x32')],[_0x50c5('0x39'),'id'])||{});}})[_0x50c5('0x18')](respondWithResult(_0x64deef,null))[_0x50c5('0x25')](handleError(_0x64deef,null));};exports['getMessages']=function(_0x4c5007,_0x35efac){var _0x16be22={'raw':![],'where':{}};var _0x5cb8bb={};var _0x497094={'count':0x0,'rows':[]};return db[_0x50c5('0x1f')][_0x50c5('0x3a')]({'where':{'id':_0x4c5007['params']['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x35efac,null))[_0x50c5('0x18')](function(_0x4f3ff3){if(_0x4f3ff3){_0x5cb8bb[_0x50c5('0x27')]=_[_0x50c5('0x28')](db['SmsMessage'][_0x50c5('0x29')]);_0x5cb8bb[_0x50c5('0x24')]=_['keys'](_0x4c5007[_0x50c5('0x24')]);_0x5cb8bb[_0x50c5('0x3b')]=_[_0x50c5('0x2b')](_0x5cb8bb['model'],_0x5cb8bb[_0x50c5('0x24')]);_0x16be22[_0x50c5('0x2a')]=_[_0x50c5('0x2b')](_0x5cb8bb[_0x50c5('0x27')],qs[_0x50c5('0x2c')](_0x4c5007[_0x50c5('0x24')]['fields']));_0x16be22[_0x50c5('0x2a')]=_0x16be22[_0x50c5('0x2a')]['length']?_0x16be22[_0x50c5('0x2a')]:_0x5cb8bb[_0x50c5('0x27')];if(!_0x4c5007[_0x50c5('0x24')][_0x50c5('0x3c')]('nolimit')){_0x16be22[_0x50c5('0x11')]=qs['limit'](_0x4c5007['query'][_0x50c5('0x11')]);_0x16be22['offset']=qs['offset'](_0x4c5007['query'][_0x50c5('0x13')]);}_0x16be22[_0x50c5('0x3d')]=qs['sort'](_0x4c5007[_0x50c5('0x24')][_0x50c5('0x3e')]);_0x16be22[_0x50c5('0x3f')]=qs['filters'](_['pick'](_0x4c5007[_0x50c5('0x24')],_0x5cb8bb[_0x50c5('0x3b')]));_0x16be22[_0x50c5('0x3f')][_0x50c5('0x40')]=_0x4f3ff3['id'];if(_0x4c5007['query']['filter']){_0x16be22[_0x50c5('0x3f')]=_[_0x50c5('0x2f')](_0x16be22[_0x50c5('0x3f')],{'$or':_[_0x50c5('0x1e')](_0x16be22[_0x50c5('0x2a')],function(_0x143bf6){var _0x5c16a3={};_0x5c16a3[_0x143bf6]={'$like':'%'+_0x4c5007[_0x50c5('0x24')]['filter']+'%'};return _0x5c16a3;})});}if(_0x4c5007['query'][_0x50c5('0x41')]){var _0x4aa089=_0x4c5007[_0x50c5('0x24')][_0x50c5('0x41')][_0x50c5('0x42')](',');var _0x1980a6={};_0x1980a6[_0x4aa089[0x0]]={'$gte':moment(_0x4aa089[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x16be22[_0x50c5('0x3f')]=_[_0x50c5('0x2f')](_0x16be22[_0x50c5('0x3f')],_0x1980a6);}_0x16be22=_[_0x50c5('0x2f')]({},_0x16be22,_0x4c5007[_0x50c5('0x30')]);return db['SmsMessage'][_0x50c5('0x12')]({'where':_0x16be22['where']})[_0x50c5('0x18')](function(_0x586a35){_0x497094['count']=_0x586a35;if(_0x4c5007['query'][_0x50c5('0x2d')]){_0x16be22[_0x50c5('0x2e')]=[{'all':!![]}];}return db['SmsMessage'][_0x50c5('0x22')](_0x16be22);})[_0x50c5('0x18')](function(_0x229b6b){_0x497094[_0x50c5('0x43')]=_0x229b6b;return _0x497094;});}})[_0x50c5('0x18')](respondWithFilteredResult(_0x35efac,_0x16be22))['catch'](handleError(_0x35efac,null));};exports['addTags']=function(_0x165bee,_0x3879a3){return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x165bee[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x3879a3,null))[_0x50c5('0x18')](function(_0x2235f7){if(_0x2235f7){return _0x2235f7[_0x50c5('0x44')](_0x165bee[_0x50c5('0x32')][_0x50c5('0x39')],_['omit'](_0x165bee['body'],[_0x50c5('0x39'),'id'])||{})[_0x50c5('0x45')](function(){return db['Tag'][_0x50c5('0x22')]({'attributes':['id','name',_0x50c5('0x46')],'where':{'id':_0x165bee['body'][_0x50c5('0x39')]}});})[_0x50c5('0x18')](function(_0x2e716a){socket[_0x50c5('0x47')]('smsInteractionTags:save',{'id':Number(_0x165bee[_0x50c5('0x34')]['id']),'tags':_0x2e716a||[]});return{'id':Number(_0x165bee[_0x50c5('0x34')]['id']),'tags':_0x2e716a||[]};});}})[_0x50c5('0x18')](respondWithResult(_0x3879a3,null))[_0x50c5('0x25')](handleError(_0x3879a3,null));};exports[_0x50c5('0x48')]=function(_0x3a4d2c,_0x3de254){return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x3a4d2c[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x3de254,null))[_0x50c5('0x18')](function(_0x3c541c){if(_0x3c541c){return _0x3c541c[_0x50c5('0x48')](_0x3a4d2c[_0x50c5('0x24')][_0x50c5('0x39')]);}})[_0x50c5('0x18')](respondWithStatusCode(_0x3de254,null))[_0x50c5('0x25')](handleError(_0x3de254,null));};exports[_0x50c5('0x49')]=function(_0xd5738c,_0x41d88e){var _0x2c4f7a=moment()[_0x50c5('0x4a')]()[_0x50c5('0x4b')]();var _0xf48745=path[_0x50c5('0x4c')](config[_0x50c5('0x4d')],_0x50c5('0x4e'),'files',_0x50c5('0x4f'));var _0x109445=path[_0x50c5('0x4c')](_0xf48745,_0x2c4f7a);var _0x1d8dc7=util[_0x50c5('0x50')]('transcript-%d-%s.zip',_0xd5738c[_0x50c5('0x34')]['id'],_0x2c4f7a);var _0x60f356=path[_0x50c5('0x4c')](_0xf48745,_0x1d8dc7);var _0x16eaa9=[];_0x16eaa9[_0x50c5('0x51')]({'model':db['User'],'as':'User','attributes':['id',_0x50c5('0x52')],'raw':!![]});_0x16eaa9[_0x50c5('0x51')]({'model':db[_0x50c5('0x53')],'as':_0x50c5('0x54'),'attributes':['id',_0x50c5('0x55'),_0x50c5('0x56')],'raw':!![]});var _0x5e3d1d=[{'model':db[_0x50c5('0x37')],'as':'Messages','attributes':['id',_0x50c5('0x32'),_0x50c5('0x57'),_0x50c5('0x58'),'secret',_0x50c5('0x59')],'include':_0x16eaa9}];_0x5e3d1d[_0x50c5('0x51')]({'model':db[_0x50c5('0x5a')],'as':_0x50c5('0x5b'),'attributes':['id',_0x50c5('0x1c')]});_0x5e3d1d['push']({'model':db[_0x50c5('0x5c')],'as':_0x50c5('0x5d'),'attributes':['id',_0x50c5('0x52')]});return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0xd5738c['params']['id']},'include':_0x5e3d1d})[_0x50c5('0x18')](handleEntityNotFound(_0x41d88e,null))[_0x50c5('0x18')](function(_0x50e8c5){if(_0x50e8c5){var _0x3df0bc=_0x50e8c5[_0x50c5('0x5e')]({'plain':!![]});fs[_0x50c5('0x5f')](_0x109445);var _0x4737db={'channel':_0x50c5('0x60'),'account':_0x3df0bc[_0x50c5('0x5b')][_0x50c5('0x1c')],'agent':_0x3df0bc[_0x50c5('0x5d')]?_0x3df0bc[_0x50c5('0x5d')][_0x50c5('0x52')]:'N.A.','createdAt':moment(_0x3df0bc[_0x50c5('0x57')])[_0x50c5('0x50')](_0x50c5('0x61'))[_0x50c5('0x4b')](),'closedAt':_0x3df0bc[_0x50c5('0x62')]?moment(_0x3df0bc[_0x50c5('0x63')])['format'](_0x50c5('0x61'))['toString']():'','disposition':_0x3df0bc[_0x50c5('0x64')],'messages':_(_0x3df0bc[_0x50c5('0x65')])[_0x50c5('0x66')]({'secret':![]})[_0x50c5('0x1e')](function(_0x2fc0ac){return{'date':moment(_0x2fc0ac[_0x50c5('0x57')])[_0x50c5('0x50')](_0x50c5('0x61'))['toString'](),'sender':_0x2fc0ac[_0x50c5('0x58')]===_0x50c5('0x67')?_0x2fc0ac[_0x50c5('0x5c')]?_0x2fc0ac[_0x50c5('0x5c')]['fullname']:_0x50c5('0x68'):_0x2fc0ac[_0x50c5('0x54')][_0x50c5('0x55')]+(_0x2fc0ac[_0x50c5('0x54')]['lastName']?'\x20'+_0x2fc0ac[_0x50c5('0x54')]['lastName']:''),'body':_0x2fc0ac[_0x50c5('0x32')],'direction':_0x2fc0ac[_0x50c5('0x58')]==='out'?'A':'C','secret':_0x2fc0ac['secret'],'read':_0x2fc0ac[_0x50c5('0x59')]};})[_0x50c5('0x69')]()};return ejs[_0x50c5('0x6a')](path[_0x50c5('0x4c')](config[_0x50c5('0x4d')],_0x50c5('0x4e'),_0x50c5('0x6b'),_0x50c5('0x6c')),{'interaction':_0x4737db})[_0x50c5('0x18')](function(_0x130092){var _0x382bab=path[_0x50c5('0x4c')](_0x109445,_0x50c5('0x6d')+_0x3df0bc['id']+'-'+_0x2c4f7a+_0x50c5('0x6e'));var _0x46ec2f={'path':_0x382bab,'channel':_0x50c5('0x60'),'interactionId':_0x3df0bc['id']};return pdf[_0x50c5('0x6f')](_0x130092,_0x46ec2f);})[_0x50c5('0x18')](function(){return new BPromise(function(_0x49de61,_0x453df0){zipdir(_0x109445,{'saveTo':_0x60f356},function(_0x13e6a7,_0x2399ac){if(_0x13e6a7)return _0x453df0(_0x13e6a7);return _0x49de61(_0x2399ac);});})['then'](function(){return new BPromise(function(_0x562835,_0x2d1837){rimraf(_0x109445,function(_0x38f8b8){if(_0x38f8b8)_0x2d1837(_0x38f8b8);return _0x562835();});});})[_0x50c5('0x18')](function(){return _0x41d88e[_0x50c5('0x49')](_0x60f356,_0x1d8dc7,function(_0x24cfe6){if(_0x24cfe6){console[_0x50c5('0x70')](_0x50c5('0x71'),_0x24cfe6);}else{fs['unlinkSync'](_0x60f356);}});});});}else{return _0x41d88e[_0x50c5('0xe')](0xc8);}})[_0x50c5('0x25')](handleError(_0x41d88e,null));};
\ No newline at end of file
+var _0xf183=['update','then','error','stack','name','send','index','map','SmsInteraction','type','key','getOptions','findAll','sms','query','user','show','params','keys','rawAttributes','filters','model','attributes','intersection','fields','includeAll','merge','options','find','catch','body','destroy','describe','SmsMessage','addMessage','omit','getMessages','length','hasOwnProperty','nolimit','order','sort','where','pick','SmsInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','ids','spread','Tag','color','emit','removeTags','download','toString','root','server','tmp','join','User','fullname','push','CmContact','Contact','firstName','lastName','Messages','createdAt','secret','SmsAccount','Account','Owner','mkdirSync','Sms','N.A.','closed','disposition','direction','out','System','value','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','localhost','./smsInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set'];(function(_0x1032f2,_0x477191){var _0x59e5b6=function(_0x2c4b4b){while(--_0x2c4b4b){_0x1032f2['push'](_0x1032f2['shift']());}};_0x59e5b6(++_0x477191);}(_0xf183,0x1c3));var _0x3f18=function(_0x1cbf34,_0x418fd4){_0x1cbf34=_0x1cbf34-0x0;var _0x2a8a26=_0xf183[_0x1cbf34];return _0x2a8a26;};'use strict';var rimraf=require(_0x3f18('0x0'));var zipdir=require(_0x3f18('0x1'));var moment=require(_0x3f18('0x2'));var BPromise=require(_0x3f18('0x3'));var util=require(_0x3f18('0x4'));var path=require(_0x3f18('0x5'));var ejs=require(_0x3f18('0x6'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x3f18('0x7'));var qs=require(_0x3f18('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0x3f18('0x9'))(_0x3f18('0xa'));var config=require(_0x3f18('0xb'));var db=require('../../mysqldb')['db'];config[_0x3f18('0xc')]=_['defaults'](config[_0x3f18('0xc')],{'host':_0x3f18('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3f18('0xe'))[_0x3f18('0xf')](socket);function respondWithStatusCode(_0x309be1,_0x1d5841){_0x1d5841=_0x1d5841||0xcc;return function(_0x22af22){if(_0x22af22){return _0x309be1[_0x3f18('0x10')](_0x1d5841);}return _0x309be1[_0x3f18('0x11')](_0x1d5841)[_0x3f18('0x12')]();};}function respondWithResult(_0x5c88ab,_0x54ff76){_0x54ff76=_0x54ff76||0xc8;return function(_0x5deff8){if(_0x5deff8){return _0x5c88ab[_0x3f18('0x11')](_0x54ff76)[_0x3f18('0x13')](_0x5deff8);}};}function respondWithFilteredResult(_0x4487db,_0x365ba3){return function(_0x469b8d){if(_0x469b8d){var _0x38e530=typeof _0x365ba3[_0x3f18('0x14')]==='undefined'&&typeof _0x365ba3[_0x3f18('0x15')]===_0x3f18('0x16');var _0x465225=_0x469b8d[_0x3f18('0x17')];var _0x6fbf0f=_0x38e530?0x0:_0x365ba3[_0x3f18('0x14')];var _0x1c3657=_0x38e530?_0x469b8d['count']:_0x365ba3[_0x3f18('0x14')]+_0x365ba3[_0x3f18('0x15')];var _0x532499;if(_0x1c3657>=_0x465225){_0x1c3657=_0x465225;_0x532499=0xc8;}else{_0x532499=0xce;}_0x4487db[_0x3f18('0x11')](_0x532499);return _0x4487db[_0x3f18('0x18')]('Content-Range',_0x6fbf0f+'-'+_0x1c3657+'/'+_0x465225)[_0x3f18('0x13')](_0x469b8d);}return null;};}function saveUpdates(_0x10348b){return function(_0x15ab45){if(_0x15ab45){return _0x15ab45[_0x3f18('0x19')](_0x10348b)[_0x3f18('0x1a')](function(_0x26341d){return _0x26341d;});}return null;};}function removeEntity(_0x5825c8){return function(_0x100ac1){if(_0x100ac1){return _0x100ac1['destroy']()[_0x3f18('0x1a')](function(){_0x5825c8[_0x3f18('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fdd4e){return function(_0x2fc946){if(!_0x2fc946){_0x4fdd4e[_0x3f18('0x10')](0x194);}return _0x2fc946;};}function handleError(_0x551e1c,_0x1d3e4b){_0x1d3e4b=_0x1d3e4b||0x1f4;return function(_0xa328f){logger[_0x3f18('0x1b')](_0xa328f[_0x3f18('0x1c')]);if(_0xa328f[_0x3f18('0x1d')]){delete _0xa328f['name'];}_0x551e1c[_0x3f18('0x11')](_0x1d3e4b)[_0x3f18('0x1e')](_0xa328f);};}exports[_0x3f18('0x1f')]=function(_0x4ba0fb,_0x4a3813){var _0x5b5e1e={};var _0x5ae0a8=_[_0x3f18('0x20')](db[_0x3f18('0x21')]['rawAttributes'],function(_0x2d77a0){return{'name':_0x2d77a0['fieldName'],'type':_0x2d77a0[_0x3f18('0x22')][_0x3f18('0x23')]};});_0x5b5e1e=qs[_0x3f18('0x24')](_0x5ae0a8,_0x4ba0fb);return interaction[_0x3f18('0x25')](_0x3f18('0x26'),_0x4ba0fb[_0x3f18('0x27')],_0x4ba0fb[_0x3f18('0x28')],_0x5b5e1e,_0x5ae0a8)['then'](respondWithFilteredResult(_0x4a3813,_0x5b5e1e))['catch'](handleError(_0x4a3813,null));};exports[_0x3f18('0x29')]=function(_0x49f615,_0x47dbe0){var _0x3eb188={'raw':![],'where':{'id':_0x49f615[_0x3f18('0x2a')]['id']}},_0x501a24={};_0x501a24['model']=_[_0x3f18('0x2b')](db[_0x3f18('0x21')][_0x3f18('0x2c')]);_0x501a24[_0x3f18('0x27')]=_[_0x3f18('0x2b')](_0x49f615[_0x3f18('0x27')]);_0x501a24[_0x3f18('0x2d')]=_['intersection'](_0x501a24[_0x3f18('0x2e')],_0x501a24[_0x3f18('0x27')]);_0x3eb188[_0x3f18('0x2f')]=_[_0x3f18('0x30')](_0x501a24['model'],qs[_0x3f18('0x31')](_0x49f615[_0x3f18('0x27')][_0x3f18('0x31')]));_0x3eb188[_0x3f18('0x2f')]=_0x3eb188[_0x3f18('0x2f')]['length']?_0x3eb188['attributes']:_0x501a24[_0x3f18('0x2e')];if(_0x49f615['query'][_0x3f18('0x32')]){_0x3eb188['include']=[{'all':!![]}];}_0x3eb188=_[_0x3f18('0x33')]({},_0x3eb188,_0x49f615[_0x3f18('0x34')]);return db[_0x3f18('0x21')][_0x3f18('0x35')](_0x3eb188)[_0x3f18('0x1a')](handleEntityNotFound(_0x47dbe0,null))['then'](respondWithResult(_0x47dbe0,null))[_0x3f18('0x36')](handleError(_0x47dbe0,null));};exports['create']=function(_0x1d2e18,_0x86a972){return db[_0x3f18('0x21')]['create'](_0x1d2e18['body'],{})[_0x3f18('0x1a')](respondWithResult(_0x86a972,0xc9))[_0x3f18('0x36')](handleError(_0x86a972,null));};exports[_0x3f18('0x19')]=function(_0x1530d1,_0x313ba1){if(_0x1530d1[_0x3f18('0x37')]['id']){delete _0x1530d1[_0x3f18('0x37')]['id'];}return db[_0x3f18('0x21')][_0x3f18('0x35')]({'where':{'id':_0x1530d1[_0x3f18('0x2a')]['id']}})[_0x3f18('0x1a')](handleEntityNotFound(_0x313ba1,null))[_0x3f18('0x1a')](saveUpdates(_0x1530d1['body'],null))[_0x3f18('0x1a')](respondWithResult(_0x313ba1,null))[_0x3f18('0x36')](handleError(_0x313ba1,null));};exports[_0x3f18('0x38')]=function(_0x102a33,_0x43c753){return db['SmsInteraction'][_0x3f18('0x35')]({'where':{'id':_0x102a33[_0x3f18('0x2a')]['id']}})[_0x3f18('0x1a')](handleEntityNotFound(_0x43c753,null))[_0x3f18('0x1a')](removeEntity(_0x43c753,null))[_0x3f18('0x36')](handleError(_0x43c753,null));};exports['describe']=function(_0x55b0a6,_0x2eb42a){return db[_0x3f18('0x21')][_0x3f18('0x39')]()[_0x3f18('0x1a')](respondWithResult(_0x2eb42a,null))[_0x3f18('0x36')](handleError(_0x2eb42a,null));};exports['addMessage']=function(_0x41efb3,_0x3f5b3e){return db[_0x3f18('0x3a')][_0x3f18('0x35')]({'where':{'id':_0x41efb3[_0x3f18('0x2a')]['id']}})[_0x3f18('0x1a')](handleEntityNotFound(_0x3f5b3e,null))[_0x3f18('0x1a')](function(_0x4690cc){if(_0x4690cc){return _0x4690cc[_0x3f18('0x3b')](_0x41efb3[_0x3f18('0x37')]['ids'],_[_0x3f18('0x3c')](_0x41efb3[_0x3f18('0x37')],['ids','id'])||{});}})['then'](respondWithResult(_0x3f5b3e,null))[_0x3f18('0x36')](handleError(_0x3f5b3e,null));};exports[_0x3f18('0x3d')]=function(_0x2c634e,_0x584e30){var _0x2c83f7={'raw':![],'where':{}};var _0x5d8f4a={};var _0x254495={'count':0x0,'rows':[]};return db[_0x3f18('0x21')]['findOne']({'where':{'id':_0x2c634e['params']['id']}})[_0x3f18('0x1a')](handleEntityNotFound(_0x584e30,null))[_0x3f18('0x1a')](function(_0x4a92a2){if(_0x4a92a2){_0x5d8f4a[_0x3f18('0x2e')]=_[_0x3f18('0x2b')](db[_0x3f18('0x3a')][_0x3f18('0x2c')]);_0x5d8f4a[_0x3f18('0x27')]=_[_0x3f18('0x2b')](_0x2c634e[_0x3f18('0x27')]);_0x5d8f4a[_0x3f18('0x2d')]=_['intersection'](_0x5d8f4a['model'],_0x5d8f4a['query']);_0x2c83f7[_0x3f18('0x2f')]=_[_0x3f18('0x30')](_0x5d8f4a[_0x3f18('0x2e')],qs[_0x3f18('0x31')](_0x2c634e[_0x3f18('0x27')][_0x3f18('0x31')]));_0x2c83f7[_0x3f18('0x2f')]=_0x2c83f7[_0x3f18('0x2f')][_0x3f18('0x3e')]?_0x2c83f7[_0x3f18('0x2f')]:_0x5d8f4a[_0x3f18('0x2e')];if(!_0x2c634e['query'][_0x3f18('0x3f')](_0x3f18('0x40'))){_0x2c83f7[_0x3f18('0x15')]=qs[_0x3f18('0x15')](_0x2c634e[_0x3f18('0x27')][_0x3f18('0x15')]);_0x2c83f7[_0x3f18('0x14')]=qs[_0x3f18('0x14')](_0x2c634e[_0x3f18('0x27')][_0x3f18('0x14')]);}_0x2c83f7[_0x3f18('0x41')]=qs['sort'](_0x2c634e[_0x3f18('0x27')][_0x3f18('0x42')]);_0x2c83f7[_0x3f18('0x43')]=qs[_0x3f18('0x2d')](_[_0x3f18('0x44')](_0x2c634e[_0x3f18('0x27')],_0x5d8f4a[_0x3f18('0x2d')]));_0x2c83f7[_0x3f18('0x43')][_0x3f18('0x45')]=_0x4a92a2['id'];if(_0x2c634e[_0x3f18('0x27')][_0x3f18('0x46')]){_0x2c83f7['where']=_[_0x3f18('0x33')](_0x2c83f7[_0x3f18('0x43')],{'$or':_[_0x3f18('0x20')](_0x2c83f7[_0x3f18('0x2f')],function(_0x3d1678){var _0x278a2d={};_0x278a2d[_0x3d1678]={'$like':'%'+_0x2c634e['query'][_0x3f18('0x46')]+'%'};return _0x278a2d;})});}if(_0x2c634e[_0x3f18('0x27')]['$gte']){var _0x23e9fe=_0x2c634e[_0x3f18('0x27')][_0x3f18('0x47')][_0x3f18('0x48')](',');var _0xfc8428={};_0xfc8428[_0x23e9fe[0x0]]={'$gte':moment(_0x23e9fe[0x1])[_0x3f18('0x49')](_0x3f18('0x4a'))};_0x2c83f7[_0x3f18('0x43')]=_[_0x3f18('0x33')](_0x2c83f7[_0x3f18('0x43')],_0xfc8428);}_0x2c83f7=_['merge']({},_0x2c83f7,_0x2c634e['options']);return db[_0x3f18('0x3a')][_0x3f18('0x17')]({'where':_0x2c83f7[_0x3f18('0x43')]})[_0x3f18('0x1a')](function(_0x3d5aec){_0x254495[_0x3f18('0x17')]=_0x3d5aec;if(_0x2c634e[_0x3f18('0x27')][_0x3f18('0x32')]){_0x2c83f7[_0x3f18('0x4b')]=[{'all':!![]}];}return db[_0x3f18('0x3a')][_0x3f18('0x25')](_0x2c83f7);})[_0x3f18('0x1a')](function(_0x52cf84){_0x254495[_0x3f18('0x4c')]=_0x52cf84;return _0x254495;});}})[_0x3f18('0x1a')](respondWithFilteredResult(_0x584e30,_0x2c83f7))[_0x3f18('0x36')](handleError(_0x584e30,null));};exports[_0x3f18('0x4d')]=function(_0x3a4136,_0xda1fd1){return db[_0x3f18('0x21')][_0x3f18('0x35')]({'where':{'id':_0x3a4136['params']['id']}})[_0x3f18('0x1a')](handleEntityNotFound(_0xda1fd1,null))[_0x3f18('0x1a')](function(_0xeb3a2c){if(_0xeb3a2c){return _0xeb3a2c['setTags'](_0x3a4136[_0x3f18('0x37')][_0x3f18('0x4e')],_[_0x3f18('0x3c')](_0x3a4136[_0x3f18('0x37')],[_0x3f18('0x4e'),'id'])||{})[_0x3f18('0x4f')](function(){return db[_0x3f18('0x50')]['findAll']({'attributes':['id',_0x3f18('0x1d'),_0x3f18('0x51')],'where':{'id':_0x3a4136[_0x3f18('0x37')][_0x3f18('0x4e')]}});})[_0x3f18('0x1a')](function(_0x2f9c56){socket[_0x3f18('0x52')]('smsInteractionTags:save',{'id':Number(_0x3a4136[_0x3f18('0x2a')]['id']),'tags':_0x2f9c56||[]});return{'id':Number(_0x3a4136[_0x3f18('0x2a')]['id']),'tags':_0x2f9c56||[]};});}})[_0x3f18('0x1a')](respondWithResult(_0xda1fd1,null))['catch'](handleError(_0xda1fd1,null));};exports[_0x3f18('0x53')]=function(_0x212fca,_0x53e61d){return db[_0x3f18('0x21')][_0x3f18('0x35')]({'where':{'id':_0x212fca[_0x3f18('0x2a')]['id']}})[_0x3f18('0x1a')](handleEntityNotFound(_0x53e61d,null))[_0x3f18('0x1a')](function(_0x350587){if(_0x350587){return _0x350587[_0x3f18('0x53')](_0x212fca[_0x3f18('0x27')][_0x3f18('0x4e')]);}})[_0x3f18('0x1a')](respondWithStatusCode(_0x53e61d,null))[_0x3f18('0x36')](handleError(_0x53e61d,null));};exports[_0x3f18('0x54')]=function(_0x9fafdd,_0x561338){var _0x53dfb6=moment()['unix']()[_0x3f18('0x55')]();var _0x14b1cd=path['join'](config[_0x3f18('0x56')],_0x3f18('0x57'),'files',_0x3f18('0x58'));var _0x3da628=path[_0x3f18('0x59')](_0x14b1cd,_0x53dfb6);var _0x359162=util[_0x3f18('0x49')]('transcript-%d-%s.zip',_0x9fafdd[_0x3f18('0x2a')]['id'],_0x53dfb6);var _0x3614ab=path[_0x3f18('0x59')](_0x14b1cd,_0x359162);var _0x3573dc=[];_0x3573dc['push']({'model':db[_0x3f18('0x5a')],'as':'User','attributes':['id',_0x3f18('0x5b')],'raw':!![]});_0x3573dc[_0x3f18('0x5c')]({'model':db[_0x3f18('0x5d')],'as':_0x3f18('0x5e'),'attributes':['id',_0x3f18('0x5f'),_0x3f18('0x60')],'raw':!![]});var _0x1503b0=[{'model':db['SmsMessage'],'as':_0x3f18('0x61'),'attributes':['id','body',_0x3f18('0x62'),'direction',_0x3f18('0x63'),'read'],'include':_0x3573dc}];_0x1503b0[_0x3f18('0x5c')]({'model':db[_0x3f18('0x64')],'as':_0x3f18('0x65'),'attributes':['id','name']});_0x1503b0[_0x3f18('0x5c')]({'model':db[_0x3f18('0x5a')],'as':_0x3f18('0x66'),'attributes':['id',_0x3f18('0x5b')]});return db[_0x3f18('0x21')][_0x3f18('0x35')]({'where':{'id':_0x9fafdd['params']['id']},'include':_0x1503b0})['then'](handleEntityNotFound(_0x561338,null))[_0x3f18('0x1a')](function(_0x2242c6){if(_0x2242c6){var _0x570b5a=_0x2242c6['get']({'plain':!![]});fs[_0x3f18('0x67')](_0x3da628);var _0x58a412={'channel':_0x3f18('0x68'),'account':_0x570b5a[_0x3f18('0x65')][_0x3f18('0x1d')],'agent':_0x570b5a[_0x3f18('0x66')]?_0x570b5a[_0x3f18('0x66')][_0x3f18('0x5b')]:_0x3f18('0x69'),'createdAt':moment(_0x570b5a[_0x3f18('0x62')])[_0x3f18('0x49')]('YYYY-MM-DD\x20HH:mm:ss')[_0x3f18('0x55')](),'closedAt':_0x570b5a[_0x3f18('0x6a')]?moment(_0x570b5a['closedAt'])[_0x3f18('0x49')](_0x3f18('0x4a'))['toString']():'','disposition':_0x570b5a[_0x3f18('0x6b')],'messages':_(_0x570b5a[_0x3f18('0x61')])['filter']({'secret':![]})[_0x3f18('0x20')](function(_0x6cf162){return{'date':moment(_0x6cf162['createdAt'])['format'](_0x3f18('0x4a'))[_0x3f18('0x55')](),'sender':_0x6cf162[_0x3f18('0x6c')]===_0x3f18('0x6d')?_0x6cf162[_0x3f18('0x5a')]?_0x6cf162[_0x3f18('0x5a')][_0x3f18('0x5b')]:_0x3f18('0x6e'):_0x6cf162[_0x3f18('0x5e')][_0x3f18('0x5f')]+(_0x6cf162[_0x3f18('0x5e')][_0x3f18('0x60')]?'\x20'+_0x6cf162[_0x3f18('0x5e')][_0x3f18('0x60')]:''),'body':_0x6cf162[_0x3f18('0x37')],'direction':_0x6cf162['direction']===_0x3f18('0x6d')?'A':'C','secret':_0x6cf162['secret'],'read':_0x6cf162['read']};})[_0x3f18('0x6f')]()};return ejs[_0x3f18('0x70')](path[_0x3f18('0x59')](config[_0x3f18('0x56')],_0x3f18('0x57'),'views',_0x3f18('0x71')),{'interaction':_0x58a412})[_0x3f18('0x1a')](function(_0x4dbe60){var _0x103d1c=path[_0x3f18('0x59')](_0x3da628,_0x3f18('0x72')+_0x570b5a['id']+'-'+_0x53dfb6+_0x3f18('0x73'));var _0x11c05d={'path':_0x103d1c,'channel':_0x3f18('0x68'),'interactionId':_0x570b5a['id']};return pdf[_0x3f18('0x74')](_0x4dbe60,_0x11c05d);})[_0x3f18('0x1a')](function(){return new BPromise(function(_0x2be338,_0x17a558){zipdir(_0x3da628,{'saveTo':_0x3614ab},function(_0x3e3399,_0x259c41){if(_0x3e3399)return _0x17a558(_0x3e3399);return _0x2be338(_0x259c41);});})[_0x3f18('0x1a')](function(){return new BPromise(function(_0x1236c3,_0x30a305){rimraf(_0x3da628,function(_0xbc2d8a){if(_0xbc2d8a)_0x30a305(_0xbc2d8a);return _0x1236c3();});});})[_0x3f18('0x1a')](function(){return _0x561338['download'](_0x3614ab,_0x359162,function(_0x165f54){if(_0x165f54){console[_0x3f18('0x75')]('err',_0x165f54);}else{fs[_0x3f18('0x76')](_0x3614ab);}});});});}else{return _0x561338[_0x3f18('0x10')](0xc8);}})[_0x3f18('0x36')](handleError(_0x561338,null));};
\ No newline at end of file
index a4f5137..ba900ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff0=['unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','SmsInteraction','setMaxListeners','save','update','getUsers','then','setDataValue','map','findAll'];(function(_0x391f71,_0x30a58d){var _0x1923b4=function(_0x385dc4){while(--_0x385dc4){_0x391f71['push'](_0x391f71['shift']());}};_0x1923b4(++_0x30a58d);}(_0xfff0,0x139));var _0x0fff=function(_0x7dcd89,_0x5bc364){_0x7dcd89=_0x7dcd89-0x0;var _0x39836a=_0xfff0[_0x7dcd89];return _0x39836a;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0x0fff('0x0'))['db'][_0x0fff('0x1')];var SmsMessage=require(_0x0fff('0x0'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x0fff('0x2')](0x0);var events={'afterCreate':_0x0fff('0x3'),'afterUpdate':_0x0fff('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2cd3d5){return function(_0x17911e,_0x53c517,_0x33c813){_0x17911e[_0x0fff('0x5')]({'attributes':['id'],'raw':!![]})[_0x0fff('0x6')](function(_0x586dc5){_0x17911e[_0x0fff('0x7')]('Users',_0x586dc5[_0x0fff('0x8')](function(_0x5304a5){return{'id':_0x5304a5['id']};}));return SmsMessage[_0x0fff('0x9')]({'where':{'SmsInteractionId':_0x17911e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0fff('0x6')](function(_0x4cc3f3){_0x17911e[_0x0fff('0x7')](_0x0fff('0xa'),_0x4cc3f3[_0x0fff('0xb')]);SmsInteractionEvents[_0x0fff('0xc')](_0x2cd3d5+':'+_0x17911e['id'],_0x17911e);SmsInteractionEvents[_0x0fff('0xc')](_0x2cd3d5,_0x17911e);_0x33c813(null);})[_0x0fff('0xd')](_0x33c813(null));};}for(var e in events){if(events[_0x0fff('0xe')](e)){var event=events[e];SmsInteraction[_0x0fff('0xf')](e,emitEvent(event));}}module[_0x0fff('0x10')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x4137=['setMaxListeners','save','update','remove','getUsers','then','setDataValue','map','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','SmsInteraction','SmsMessage'];(function(_0x453f28,_0x31cc3c){var _0x24c654=function(_0x5b6c9f){while(--_0x5b6c9f){_0x453f28['push'](_0x453f28['shift']());}};_0x24c654(++_0x31cc3c);}(_0x4137,0xf8));var _0x7413=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x4137[_0x40a045];return _0x1a687c;};'use strict';var EventEmitter=require(_0x7413('0x0'));var SmsInteraction=require(_0x7413('0x1'))['db'][_0x7413('0x2')];var SmsMessage=require(_0x7413('0x1'))['db'][_0x7413('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x7413('0x4')](0x0);var events={'afterCreate':_0x7413('0x5'),'afterUpdate':_0x7413('0x6'),'afterDestroy':_0x7413('0x7')};function emitEvent(_0x3dc48a){return function(_0x451a96,_0x3bb181,_0x4fbade){_0x451a96[_0x7413('0x8')]({'attributes':['id'],'raw':!![]})[_0x7413('0x9')](function(_0x5b39ac){_0x451a96[_0x7413('0xa')]('Users',_0x5b39ac[_0x7413('0xb')](function(_0x120dc2){return{'id':_0x120dc2['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x451a96['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7413('0x9')](function(_0x2f4b54){_0x451a96['setDataValue'](_0x7413('0xc'),_0x2f4b54[_0x7413('0xd')]);SmsInteractionEvents[_0x7413('0xe')](_0x3dc48a+':'+_0x451a96['id'],_0x451a96);SmsInteractionEvents[_0x7413('0xe')](_0x3dc48a,_0x451a96);_0x4fbade(null);})[_0x7413('0xf')](_0x4fbade(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x7413('0x10')](e,emitEvent(event));}}module[_0x7413('0x11')]=SmsInteractionEvents;
\ No newline at end of file
index 84880de..08b6ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af4=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','sms_interactions','changed','closed'];(function(_0x36bc58,_0x27f03c){var _0x4a547e=function(_0x6326c6){while(--_0x6326c6){_0x36bc58['push'](_0x36bc58['shift']());}};_0x4a547e(++_0x27f03c);}(_0x4af4,0x146));var _0x44af=function(_0x2e9d94,_0x3e287a){_0x2e9d94=_0x2e9d94-0x0;var _0x2e4de2=_0x4af4[_0x2e9d94];return _0x2e4de2;};'use strict';var _=require(_0x44af('0x0'));var util=require(_0x44af('0x1'));var logger=require(_0x44af('0x2'))(_0x44af('0x3'));var moment=require(_0x44af('0x4'));var BPromise=require(_0x44af('0x5'));var rp=require(_0x44af('0x6'));var fs=require('fs');var path=require(_0x44af('0x7'));var rimraf=require(_0x44af('0x8'));var config=require(_0x44af('0x9'));var attributes=require(_0x44af('0xa'));module[_0x44af('0xb')]=function(_0x241250,_0x133477){return _0x241250[_0x44af('0xc')]('SmsInteraction',attributes,{'tableName':_0x44af('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x368894,_0x5e0f18,_0x2adc61){if(_0x368894[_0x44af('0xe')](_0x44af('0xf'))){_0x368894['closedAt']=moment()[_0x44af('0x10')](_0x44af('0x11'));}_0x2adc61(null,_0x368894);}}});};
\ No newline at end of file
+var _0x7a34=['exports','SmsInteraction','sms_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment'];(function(_0x4e505f,_0x2e90be){var _0xfa8de0=function(_0x55337e){while(--_0x55337e){_0x4e505f['push'](_0x4e505f['shift']());}};_0xfa8de0(++_0x2e90be);}(_0x7a34,0x170));var _0x47a3=function(_0x19c821,_0x74eeec){_0x19c821=_0x19c821-0x0;var _0x4e0faf=_0x7a34[_0x19c821];return _0x4e0faf;};'use strict';var _=require(_0x47a3('0x0'));var util=require(_0x47a3('0x1'));var logger=require(_0x47a3('0x2'))('api');var moment=require('moment');var BPromise=require(_0x47a3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a3('0x4'));var rimraf=require(_0x47a3('0x5'));var config=require(_0x47a3('0x6'));var attributes=require('./smsInteraction.attributes');module[_0x47a3('0x7')]=function(_0x344fbc,_0x49b8ad){return _0x344fbc['define'](_0x47a3('0x8'),attributes,{'tableName':_0x47a3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x750ef0,_0xddae2a,_0x3b8493){if(_0x750ef0[_0x47a3('0xa')](_0x47a3('0xb'))){_0x750ef0[_0x47a3('0xc')]=moment()[_0x47a3('0xd')](_0x47a3('0xe'));}_0x3b8493(null,_0x750ef0);}}});};
\ No newline at end of file
index 6ed046a..2b4e7c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd03c=['http','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','limit','find','ids','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client'];(function(_0x16f580,_0x3244ab){var _0x14a053=function(_0x2ff130){while(--_0x2ff130){_0x16f580['push'](_0x16f580['shift']());}};_0x14a053(++_0x3244ab);}(_0xd03c,0x1cb));var _0xcd03=function(_0x54e8ef,_0x541b36){_0x54e8ef=_0x54e8ef-0x0;var _0x5ca85d=_0xd03c[_0x54e8ef];return _0x5ca85d;};'use strict';var _=require('lodash');var util=require(_0xcd03('0x0'));var moment=require(_0xcd03('0x1'));var BPromise=require(_0xcd03('0x2'));var rs=require(_0xcd03('0x3'));var fs=require('fs');var Redis=require(_0xcd03('0x4'));var db=require(_0xcd03('0x5'))['db'];var utils=require(_0xcd03('0x6'));var logger=require(_0xcd03('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xcd03('0x8')][_0xcd03('0x9')]({'port':0x232a});config[_0xcd03('0xa')]=_['defaults'](config[_0xcd03('0xa')],{'host':_0xcd03('0xb'),'port':0x18eb});var socket=require(_0xcd03('0xc'))(new Redis(config[_0xcd03('0xa')]));require(_0xcd03('0xd'))[_0xcd03('0xe')](socket);function respondWithRpcPromise(_0x34dba3,_0xd0ccc,_0x1f9ba1){return new BPromise(function(_0x115ab2,_0x44afe4){return client[_0xcd03('0xf')](_0x34dba3,_0x1f9ba1)[_0xcd03('0x10')](function(_0x54c49a){logger[_0xcd03('0x11')](_0xcd03('0x12'),_0xd0ccc,_0xcd03('0x13'));logger[_0xcd03('0x14')](_0xcd03('0x15'),_0xd0ccc,_0xcd03('0x13'),JSON[_0xcd03('0x16')](_0x54c49a));if(_0x54c49a[_0xcd03('0x17')]){if(_0x54c49a['error'][_0xcd03('0x18')]===0x1f4){logger['error'](_0xcd03('0x12'),_0xd0ccc,_0x54c49a[_0xcd03('0x17')][_0xcd03('0x19')]);return _0x44afe4(_0x54c49a['error'][_0xcd03('0x19')]);}logger[_0xcd03('0x17')]('SmsInteraction,\x20%s,\x20%s',_0xd0ccc,_0x54c49a[_0xcd03('0x17')]['message']);return _0x115ab2(_0x54c49a['error'][_0xcd03('0x19')]);}else{logger[_0xcd03('0x11')]('SmsInteraction,\x20%s,\x20%s',_0xd0ccc,_0xcd03('0x13'));_0x115ab2(_0x54c49a[_0xcd03('0x1a')][_0xcd03('0x19')]);}})[_0xcd03('0x1b')](function(_0x53b3ca){logger[_0xcd03('0x17')](_0xcd03('0x12'),_0xd0ccc,_0x53b3ca);_0x44afe4(_0x53b3ca);});});}exports[_0xcd03('0x1c')]=function(_0x59f846){var _0x2e3c9c=this;return new Promise(function(_0xc9bfcf,_0x13935d){return db[_0xcd03('0x1d')][_0xcd03('0x1e')](_0x59f846[_0xcd03('0x1f')],{'raw':_0x59f846[_0xcd03('0x20')]?_0x59f846[_0xcd03('0x20')][_0xcd03('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59f846['options']?_0x59f846[_0xcd03('0x20')][_0xcd03('0x22')]||null:null,'attributes':_0x59f846[_0xcd03('0x20')]?_0x59f846[_0xcd03('0x20')]['attributes']||null:null,'limit':_0x59f846[_0xcd03('0x20')]?_0x59f846['options'][_0xcd03('0x23')]||null:null})[_0xcd03('0x10')](function(_0xe4a8d4){logger['info'](_0xcd03('0x1c'),_0x59f846);logger['debug']('UpdateSmsInteraction',_0x59f846,JSON[_0xcd03('0x16')](_0xe4a8d4));_0xc9bfcf(_0xe4a8d4);})['catch'](function(_0x52f3a4){logger[_0xcd03('0x17')](_0xcd03('0x1c'),_0x52f3a4['message'],_0x59f846);_0x13935d(_0x2e3c9c['error'](0x1f4,_0x52f3a4[_0xcd03('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x3ee4e6){return new Promise(function(_0x1b9813,_0x691885){return db[_0xcd03('0x1d')][_0xcd03('0x24')]({'where':_0x3ee4e6[_0xcd03('0x20')]?_0x3ee4e6[_0xcd03('0x20')][_0xcd03('0x22')]||null:null})[_0xcd03('0x10')](function(_0x51cc6d){if(_0x51cc6d){return _0x51cc6d['addTags'](_0x3ee4e6[_0xcd03('0x1f')][_0xcd03('0x25')],_['omit'](_0x3ee4e6[_0xcd03('0x1f')],[_0xcd03('0x25'),'id'])||{});}})['spread'](function(_0x81040){logger[_0xcd03('0x11')](_0xcd03('0x26'),_0x3ee4e6);logger[_0xcd03('0x14')]('AddTags',_0x3ee4e6,JSON['stringify'](_0x81040));_0x1b9813(_0x81040);})[_0xcd03('0x1b')](function(_0x54355e){logger[_0xcd03('0x17')](_0xcd03('0x26'),_0x54355e[_0xcd03('0x19')],_0x3ee4e6);_0x691885(_this[_0xcd03('0x17')](0x1f4,_0x54355e[_0xcd03('0x19')]));});});};
\ No newline at end of file
+var _0x147f=['AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','SmsInteraction','update','body','options','raw','where','attributes','UpdateSmsInteraction','catch','find','ids','spread'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x147f,0x141));var _0xf147=function(_0x31b80e,_0x4543df){_0x31b80e=_0x31b80e-0x0;var _0x4f3fe0=_0x147f[_0x31b80e];return _0x4f3fe0;};'use strict';var _=require(_0xf147('0x0'));var util=require(_0xf147('0x1'));var moment=require(_0xf147('0x2'));var BPromise=require(_0xf147('0x3'));var rs=require(_0xf147('0x4'));var fs=require('fs');var Redis=require(_0xf147('0x5'));var db=require(_0xf147('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xf147('0x7'))(_0xf147('0x8'));var config=require(_0xf147('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf147('0xa')][_0xf147('0xb')]({'port':0x232a});config[_0xf147('0xc')]=_['defaults'](config[_0xf147('0xc')],{'host':_0xf147('0xd'),'port':0x18eb});var socket=require(_0xf147('0xe'))(new Redis(config[_0xf147('0xc')]));require('./smsInteraction.socket')[_0xf147('0xf')](socket);function respondWithRpcPromise(_0x24dd7b,_0x377a83,_0x3dd28e){return new BPromise(function(_0x3dfed0,_0x59d14f){return client[_0xf147('0x10')](_0x24dd7b,_0x3dd28e)[_0xf147('0x11')](function(_0x54fc53){logger[_0xf147('0x12')](_0xf147('0x13'),_0x377a83,_0xf147('0x14'));logger[_0xf147('0x15')](_0xf147('0x16'),_0x377a83,_0xf147('0x14'),JSON[_0xf147('0x17')](_0x54fc53));if(_0x54fc53[_0xf147('0x18')]){if(_0x54fc53[_0xf147('0x18')]['code']===0x1f4){logger[_0xf147('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x377a83,_0x54fc53['error'][_0xf147('0x19')]);return _0x59d14f(_0x54fc53[_0xf147('0x18')]['message']);}logger[_0xf147('0x18')](_0xf147('0x13'),_0x377a83,_0x54fc53[_0xf147('0x18')][_0xf147('0x19')]);return _0x3dfed0(_0x54fc53[_0xf147('0x18')][_0xf147('0x19')]);}else{logger[_0xf147('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x377a83,_0xf147('0x14'));_0x3dfed0(_0x54fc53[_0xf147('0x1a')][_0xf147('0x19')]);}})['catch'](function(_0x1d1e93){logger[_0xf147('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x377a83,_0x1d1e93);_0x59d14f(_0x1d1e93);});});}exports['UpdateSmsInteraction']=function(_0x5bb1a7){var _0x3b7c7b=this;return new Promise(function(_0x18df53,_0x4d1c6a){return db[_0xf147('0x1b')][_0xf147('0x1c')](_0x5bb1a7[_0xf147('0x1d')],{'raw':_0x5bb1a7[_0xf147('0x1e')]?_0x5bb1a7[_0xf147('0x1e')][_0xf147('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bb1a7[_0xf147('0x1e')]?_0x5bb1a7[_0xf147('0x1e')][_0xf147('0x20')]||null:null,'attributes':_0x5bb1a7[_0xf147('0x1e')]?_0x5bb1a7[_0xf147('0x1e')][_0xf147('0x21')]||null:null,'limit':_0x5bb1a7['options']?_0x5bb1a7[_0xf147('0x1e')]['limit']||null:null})[_0xf147('0x11')](function(_0x11622c){logger[_0xf147('0x12')]('UpdateSmsInteraction',_0x5bb1a7);logger['debug'](_0xf147('0x22'),_0x5bb1a7,JSON[_0xf147('0x17')](_0x11622c));_0x18df53(_0x11622c);})[_0xf147('0x23')](function(_0x1fe57c){logger['error'](_0xf147('0x22'),_0x1fe57c[_0xf147('0x19')],_0x5bb1a7);_0x4d1c6a(_0x3b7c7b[_0xf147('0x18')](0x1f4,_0x1fe57c[_0xf147('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x526516){return new Promise(function(_0x47b8b7,_0xe2f61b){return db[_0xf147('0x1b')][_0xf147('0x24')]({'where':_0x526516['options']?_0x526516[_0xf147('0x1e')][_0xf147('0x20')]||null:null})['then'](function(_0x345b98){if(_0x345b98){return _0x345b98['addTags'](_0x526516[_0xf147('0x1d')][_0xf147('0x25')],_['omit'](_0x526516[_0xf147('0x1d')],[_0xf147('0x25'),'id'])||{});}})[_0xf147('0x26')](function(_0x15b30b){logger[_0xf147('0x12')]('AddTags',_0x526516);logger['debug'](_0xf147('0x27'),_0x526516,JSON[_0xf147('0x17')](_0x15b30b));_0x47b8b7(_0x15b30b);})[_0xf147('0x23')](function(_0x89d171){logger['error']('AddTags',_0x89d171[_0xf147('0x19')],_0x526516);_0xe2f61b(_this['error'](0x1f4,_0x89d171[_0xf147('0x19')]));});});};
\ No newline at end of file
index 1c5e968..262418b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc701=['update','emit','removeListener','register','length','smsInteraction:','./smsInteraction.events','remove'];(function(_0x4c19a1,_0x15197f){var _0x58ac50=function(_0x7c08c1){while(--_0x7c08c1){_0x4c19a1['push'](_0x4c19a1['shift']());}};_0x58ac50(++_0x15197f);}(_0xc701,0xd6));var _0x1c70=function(_0x27221f,_0x3f0125){_0x27221f=_0x27221f-0x0;var _0x1946d4=_0xc701[_0x27221f];return _0x1946d4;};'use strict';var SmsInteractionEvents=require(_0x1c70('0x0'));var events=['save',_0x1c70('0x1'),_0x1c70('0x2')];function createListener(_0xe0a5d3,_0x4ad6b4){return function(_0x42eb95){_0x4ad6b4[_0x1c70('0x3')](_0xe0a5d3,_0x42eb95);};}function removeListener(_0x2354e8,_0x2b758b){return function(){SmsInteractionEvents[_0x1c70('0x4')](_0x2354e8,_0x2b758b);};}exports[_0x1c70('0x5')]=function(_0x5b2c2d){for(var _0x1f13cb=0x0,_0x2382fc=events[_0x1c70('0x6')];_0x1f13cb<_0x2382fc;_0x1f13cb++){var _0x4451e4=events[_0x1f13cb];var _0x5052fe=createListener(_0x1c70('0x7')+_0x4451e4,_0x5b2c2d);SmsInteractionEvents['on'](_0x4451e4,_0x5052fe);}};
\ No newline at end of file
+var _0x73e8=['register','length','smsInteraction:','./smsInteraction.events','save','update','emit','removeListener'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x73e8,0x113));var _0x873e=function(_0x4f20d9,_0x44f2e0){_0x4f20d9=_0x4f20d9-0x0;var _0x3db5ed=_0x73e8[_0x4f20d9];return _0x3db5ed;};'use strict';var SmsInteractionEvents=require(_0x873e('0x0'));var events=[_0x873e('0x1'),'remove',_0x873e('0x2')];function createListener(_0x528449,_0x53655a){return function(_0x586d03){_0x53655a[_0x873e('0x3')](_0x528449,_0x586d03);};}function removeListener(_0x59f63b,_0x532aa8){return function(){SmsInteractionEvents[_0x873e('0x4')](_0x59f63b,_0x532aa8);};}exports[_0x873e('0x5')]=function(_0x250b07){for(var _0x4665f0=0x0,_0x83bf88=events[_0x873e('0x6')];_0x4665f0<_0x83bf88;_0x4665f0++){var _0x5f3e0c=events[_0x4665f0];var _0x2f1279=createListener(_0x873e('0x7')+_0x5f3e0c,_0x250b07);SmsInteractionEvents['on'](_0x5f3e0c,_0x2f1279);}};
\ No newline at end of file
index 83fd2b5..b7c12de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cdc=['/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','show','tracked','sms','smsmessage:create','post','/:id/status','put','/:id','update'];(function(_0x10b7b8,_0x1805f3){var _0x108df6=function(_0xcf711e){while(--_0xcf711e){_0x10b7b8['push'](_0x10b7b8['shift']());}};_0x108df6(++_0x1805f3);}(_0x4cdc,0x13a));var _0xc4cd=function(_0x2a86fd,_0x543a59){_0x2a86fd=_0x2a86fd-0x0;var _0x4d6840=_0x4cdc[_0x2a86fd];return _0x4d6840;};'use strict';var multer=require(_0xc4cd('0x0'));var util=require(_0xc4cd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc4cd('0x2'));var router=express[_0xc4cd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc4cd('0x4'));var interaction=require(_0xc4cd('0x5'));var config=require(_0xc4cd('0x6'));var controller=require(_0xc4cd('0x7'));router[_0xc4cd('0x8')]('/',auth[_0xc4cd('0x9')](),controller[_0xc4cd('0xa')]);router[_0xc4cd('0x8')](_0xc4cd('0xb'),auth['isAuthenticated'](),controller[_0xc4cd('0xc')]);router[_0xc4cd('0x8')]('/:id',auth[_0xc4cd('0x9')](),controller[_0xc4cd('0xd')]);router['post']('/',auth[_0xc4cd('0x9')](),interaction[_0xc4cd('0xe')](_0xc4cd('0xf'),_0xc4cd('0x10')),controller['create']);router[_0xc4cd('0x11')](_0xc4cd('0x12'),controller['status']);router[_0xc4cd('0x13')](_0xc4cd('0x14'),auth[_0xc4cd('0x9')](),controller[_0xc4cd('0x15')]);router['put'](_0xc4cd('0x16'),auth[_0xc4cd('0x9')](),controller[_0xc4cd('0x17')]);router[_0xc4cd('0x13')](_0xc4cd('0x18'),auth[_0xc4cd('0x9')](),controller['reject']);router[_0xc4cd('0x19')](_0xc4cd('0x14'),auth[_0xc4cd('0x9')](),controller[_0xc4cd('0x1a')]);module[_0xc4cd('0x1b')]=router;
\ No newline at end of file
+var _0x8863=['update','/:id/accept','accept','/:id/reject','reject','exports','util','path','connect-timeout','express','../../config/environment','./smsMessage.controller','isAuthenticated','index','/describe','describe','get','show','post','tracked','smsmessage:create','create','put','/:id'];(function(_0x48fdbb,_0x3239bd){var _0x198205=function(_0x1dd8c6){while(--_0x1dd8c6){_0x48fdbb['push'](_0x48fdbb['shift']());}};_0x198205(++_0x3239bd);}(_0x8863,0x1b6));var _0x3886=function(_0x4635e5,_0x5590a9){_0x4635e5=_0x4635e5-0x0;var _0x5a187b=_0x8863[_0x4635e5];return _0x5a187b;};'use strict';var multer=require('multer');var util=require(_0x3886('0x0'));var path=require(_0x3886('0x1'));var timeout=require(_0x3886('0x2'));var express=require(_0x3886('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3886('0x4'));var controller=require(_0x3886('0x5'));router['get']('/',auth[_0x3886('0x6')](),controller[_0x3886('0x7')]);router['get'](_0x3886('0x8'),auth[_0x3886('0x6')](),controller[_0x3886('0x9')]);router[_0x3886('0xa')]('/:id',auth[_0x3886('0x6')](),controller[_0x3886('0xb')]);router[_0x3886('0xc')]('/',auth[_0x3886('0x6')](),interaction[_0x3886('0xd')]('sms',_0x3886('0xe')),controller[_0x3886('0xf')]);router[_0x3886('0xc')]('/:id/status',controller['status']);router[_0x3886('0x10')](_0x3886('0x11'),auth[_0x3886('0x6')](),controller[_0x3886('0x12')]);router[_0x3886('0x10')](_0x3886('0x13'),auth[_0x3886('0x6')](),controller[_0x3886('0x14')]);router[_0x3886('0x10')](_0x3886('0x15'),auth[_0x3886('0x6')](),controller[_0x3886('0x16')]);router['delete'](_0x3886('0x11'),auth[_0x3886('0x6')](),controller['destroy']);module[_0x3886('0x17')]=router;
\ No newline at end of file
index 73ee7ae..5bfa473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a25=['STRING','DATE','BOOLEAN','sequelize','exports','TEXT','medium','ENUM','out'];(function(_0x526bbc,_0x27a64b){var _0x318d9c=function(_0x5f5c17){while(--_0x5f5c17){_0x526bbc['push'](_0x526bbc['shift']());}};_0x318d9c(++_0x27a64b);}(_0x8a25,0x1aa));var _0x58a2=function(_0x23d8a2,_0x5f451f){_0x23d8a2=_0x23d8a2-0x0;var _0x1657c8=_0x8a25[_0x23d8a2];return _0x1657c8;};'use strict';var Sequelize=require(_0x58a2('0x0'));module[_0x58a2('0x1')]={'body':{'type':Sequelize[_0x58a2('0x2')](_0x58a2('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x58a2('0x4')]('in',_0x58a2('0x5')),'defaultValue':_0x58a2('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x58a2('0x6')](0xbe)},'phone':{'type':Sequelize[_0x58a2('0x6')]},'readAt':{'type':Sequelize[_0x58a2('0x7')]},'secret':{'type':Sequelize[_0x58a2('0x8')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x58a2('0x6')]},'providerResponse':{'type':Sequelize[_0x58a2('0x2')]}};
\ No newline at end of file
+var _0x1eca=['exports','medium','BOOLEAN','out','STRING','DATE','TEXT','sequelize'];(function(_0x22093a,_0xa7acf1){var _0x2f4989=function(_0x5bf12b){while(--_0x5bf12b){_0x22093a['push'](_0x22093a['shift']());}};_0x2f4989(++_0xa7acf1);}(_0x1eca,0x10f));var _0xa1ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1eca[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa1ec('0x0'));module[_0xa1ec('0x1')]={'body':{'type':Sequelize['TEXT'](_0xa1ec('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xa1ec('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xa1ec('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xa1ec('0x5')](0xbe)},'phone':{'type':Sequelize[_0xa1ec('0x5')]},'readAt':{'type':Sequelize[_0xa1ec('0x6')]},'secret':{'type':Sequelize[_0xa1ec('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xa1ec('0x5')]},'providerResponse':{'type':Sequelize[_0xa1ec('0x7')]}};
\ No newline at end of file
index b572454..05d0c3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd481=['EventManager','acceptmessage','sms-interactions','reject','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage','SELECT','rejectmessage','SmsAccount','SmsAccountId','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','plivio','results','groupName','DELIVERED','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','fields','length','create','body','find','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteractionId','isNil','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd481,0x1e4));var _0x1d48=function(_0x2bb7b3,_0x4a636d){_0x2bb7b3=_0x2bb7b3-0x0;var _0x39f414=_0xd481[_0x2bb7b3];return _0x39f414;};'use strict';var emlformat=require(_0x1d48('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1d48('0x1'));var jsonpatch=require(_0x1d48('0x2'));var rp=require('request-promise');var moment=require(_0x1d48('0x3'));var BPromise=require(_0x1d48('0x4'));var Mustache=require(_0x1d48('0x5'));var util=require('util');var path=require(_0x1d48('0x6'));var sox=require('sox');var csv=require(_0x1d48('0x7'));var ejs=require(_0x1d48('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1d48('0x9'));var squel=require(_0x1d48('0xa'));var crypto=require(_0x1d48('0xb'));var jsforce=require(_0x1d48('0xc'));var deskjs=require(_0x1d48('0xd'));var toCsv=require(_0x1d48('0x7'));var querystring=require(_0x1d48('0xe'));var Papa=require(_0x1d48('0xf'));var Redis=require(_0x1d48('0x10'));var authService=require(_0x1d48('0x11'));var qs=require(_0x1d48('0x12'));var as=require(_0x1d48('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1d48('0x14'))(_0x1d48('0x15'));var utils=require(_0x1d48('0x16'));var config=require(_0x1d48('0x17'));var licenseUtil=require(_0x1d48('0x18'));var db=require(_0x1d48('0x19'))['db'];config[_0x1d48('0x1a')]=_[_0x1d48('0x1b')](config[_0x1d48('0x1a')],{'host':_0x1d48('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1d48('0x1a')]));require('./smsMessage.socket')[_0x1d48('0x1d')](socket);var jayson=require(_0x1d48('0x1e'));var client=jayson[_0x1d48('0x1f')][_0x1d48('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x1d48('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x2e2748,_0x27fd35,_0x4d6bd0,_0x1789af){return new BPromise(function(_0x433c92,_0x1b99e2){var _0x1b60d4=_0x1789af||client;return _0x1b60d4[_0x1d48('0x21')](_0x2e2748,_0x4d6bd0)[_0x1d48('0x22')](function(_0x1bcd95){logger[_0x1d48('0x23')](_0x1d48('0x24'),_0x27fd35,'request\x20sent');logger['debug'](_0x1d48('0x25'),_0x27fd35,_0x1d48('0x26'),JSON[_0x1d48('0x27')](_0x1bcd95));if(_0x1bcd95[_0x1d48('0x28')]){if(_0x1bcd95[_0x1d48('0x28')][_0x1d48('0x29')]===0x1f4){logger[_0x1d48('0x28')](_0x1d48('0x24'),_0x27fd35,_0x1bcd95['error'][_0x1d48('0x2a')]);return _0x1b99e2(_0x1bcd95[_0x1d48('0x28')]['message']);}logger['error'](_0x1d48('0x24'),_0x27fd35,_0x1bcd95[_0x1d48('0x28')][_0x1d48('0x2a')]);return _0x433c92(_0x1bcd95[_0x1d48('0x28')][_0x1d48('0x2a')]);}else{logger[_0x1d48('0x23')](_0x1d48('0x24'),_0x27fd35,_0x1d48('0x26'));_0x433c92(_0x1bcd95[_0x1d48('0x2b')][_0x1d48('0x2a')]);}})['catch'](function(_0x4e44eb){logger[_0x1d48('0x28')](_0x1d48('0x24'),_0x27fd35,_0x4e44eb);_0x1b99e2(_0x4e44eb);});});}function respondWithStatusCode(_0x42f8f6,_0x2bf773){_0x2bf773=_0x2bf773||0xcc;return function(_0x228276){if(_0x228276){return _0x42f8f6[_0x1d48('0x2c')](_0x2bf773);}return _0x42f8f6['status'](_0x2bf773)['end']();};}function respondWithResult(_0x187b34,_0x280505){_0x280505=_0x280505||0xc8;return function(_0x4d3f91){if(_0x4d3f91){return _0x187b34[_0x1d48('0x2d')](_0x280505)[_0x1d48('0x2e')](_0x4d3f91);}};}function respondWithFilteredResult(_0xb4d9c7,_0xccc388){return function(_0x5a3ed5){if(_0x5a3ed5){var _0x4cac26=typeof _0xccc388[_0x1d48('0x2f')]===_0x1d48('0x30')&&typeof _0xccc388[_0x1d48('0x31')]===_0x1d48('0x30');var _0x542998=_0x5a3ed5[_0x1d48('0x32')];var _0x3dee70=_0x4cac26?0x0:_0xccc388[_0x1d48('0x2f')];var _0x25408e=_0x4cac26?_0x5a3ed5[_0x1d48('0x32')]:_0xccc388['offset']+_0xccc388[_0x1d48('0x31')];var _0xa3b0ed;if(_0x25408e>=_0x542998){_0x25408e=_0x542998;_0xa3b0ed=0xc8;}else{_0xa3b0ed=0xce;}_0xb4d9c7[_0x1d48('0x2d')](_0xa3b0ed);return _0xb4d9c7['set'](_0x1d48('0x33'),_0x3dee70+'-'+_0x25408e+'/'+_0x542998)['json'](_0x5a3ed5);}return null;};}function patchUpdates(_0x5a2670){return function(_0x3abd42){try{jsonpatch[_0x1d48('0x34')](_0x3abd42,_0x5a2670,!![]);}catch(_0x2c4527){return BPromise['reject'](_0x2c4527);}return _0x3abd42[_0x1d48('0x35')]();};}function saveUpdates(_0x373b6b,_0x5e76bb){return function(_0x2648d8){if(_0x2648d8){return _0x2648d8[_0x1d48('0x36')](_0x373b6b)[_0x1d48('0x22')](function(_0x4e5286){return _0x4e5286;});}return null;};}function removeEntity(_0x3c6e09,_0x51093f){return function(_0x3e434c){if(_0x3e434c){return _0x3e434c[_0x1d48('0x37')]()[_0x1d48('0x22')](function(){_0x3c6e09['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1fe453,_0x165032){return function(_0x1b8e57){if(!_0x1b8e57){_0x1fe453[_0x1d48('0x2c')](0x194);}return _0x1b8e57;};}function handleError(_0x292483,_0x16493d){_0x16493d=_0x16493d||0x1f4;return function(_0x1df1e9){logger[_0x1d48('0x28')](_0x1df1e9[_0x1d48('0x38')]);if(_0x1df1e9[_0x1d48('0x39')]){delete _0x1df1e9[_0x1d48('0x39')];}_0x292483[_0x1d48('0x2d')](_0x16493d)[_0x1d48('0x3a')](_0x1df1e9);};}exports[_0x1d48('0x3b')]=function(_0x458ec3,_0x992e36){var _0x296a4={},_0xb3c168={},_0x58c430={'count':0x0,'rows':[]};var _0x2e5f3f=_[_0x1d48('0x3c')](db[_0x1d48('0x3d')][_0x1d48('0x3e')],function(_0x78ca07){return{'name':_0x78ca07[_0x1d48('0x3f')],'type':_0x78ca07[_0x1d48('0x40')][_0x1d48('0x41')]};});_0xb3c168[_0x1d48('0x42')]=_['map'](_0x2e5f3f,_0x1d48('0x39'));_0xb3c168['query']=_[_0x1d48('0x43')](_0x458ec3[_0x1d48('0x44')]);_0xb3c168['filters']=_[_0x1d48('0x45')](_0xb3c168[_0x1d48('0x42')],_0xb3c168[_0x1d48('0x44')]);_0x296a4[_0x1d48('0x46')]=_[_0x1d48('0x45')](_0xb3c168[_0x1d48('0x42')],qs['fields'](_0x458ec3['query']['fields']));_0x296a4[_0x1d48('0x46')]=_0x296a4[_0x1d48('0x46')]['length']?_0x296a4[_0x1d48('0x46')]:_0xb3c168[_0x1d48('0x42')];if(!_0x458ec3['query'][_0x1d48('0x47')](_0x1d48('0x48'))){_0x296a4[_0x1d48('0x31')]=qs['limit'](_0x458ec3['query'][_0x1d48('0x31')]);_0x296a4[_0x1d48('0x2f')]=qs[_0x1d48('0x2f')](_0x458ec3['query'][_0x1d48('0x2f')]);}_0x296a4['order']=qs[_0x1d48('0x49')](_0x458ec3[_0x1d48('0x44')][_0x1d48('0x49')]);_0x296a4[_0x1d48('0x4a')]=qs[_0x1d48('0x4b')](_[_0x1d48('0x4c')](_0x458ec3['query'],_0xb3c168[_0x1d48('0x4b')]),_0x2e5f3f);if(_0x458ec3[_0x1d48('0x44')][_0x1d48('0x4d')]){_0x296a4[_0x1d48('0x4a')]=_[_0x1d48('0x4e')](_0x296a4[_0x1d48('0x4a')],{'$or':_[_0x1d48('0x3c')](_0x2e5f3f,function(_0x3c9b15){if(_0x3c9b15[_0x1d48('0x40')]!==_0x1d48('0x4f')){var _0xc293f0={};_0xc293f0[_0x3c9b15[_0x1d48('0x39')]]={'$like':'%'+_0x458ec3['query'][_0x1d48('0x4d')]+'%'};return _0xc293f0;}})});}_0x296a4=_['merge']({},_0x296a4,_0x458ec3[_0x1d48('0x50')]);var _0x2e38fd={'where':_0x296a4[_0x1d48('0x4a')]};return db['SmsMessage']['count'](_0x2e38fd)[_0x1d48('0x22')](function(_0x3e2420){_0x58c430['count']=_0x3e2420;if(_0x458ec3[_0x1d48('0x44')][_0x1d48('0x51')]){_0x296a4[_0x1d48('0x52')]=[{'all':!![]}];}return db[_0x1d48('0x3d')][_0x1d48('0x53')](_0x296a4);})[_0x1d48('0x22')](function(_0x4f9692){_0x58c430[_0x1d48('0x54')]=_0x4f9692;return _0x58c430;})[_0x1d48('0x22')](respondWithFilteredResult(_0x992e36,_0x296a4))[_0x1d48('0x55')](handleError(_0x992e36,null));};exports['show']=function(_0x2f2a0f,_0x18230a){var _0x430ddf={'raw':!![],'where':{'id':_0x2f2a0f[_0x1d48('0x56')]['id']}},_0x146956={};_0x146956[_0x1d48('0x42')]=_[_0x1d48('0x43')](db['SmsMessage']['rawAttributes']);_0x146956[_0x1d48('0x44')]=_[_0x1d48('0x43')](_0x2f2a0f[_0x1d48('0x44')]);_0x146956['filters']=_['intersection'](_0x146956['model'],_0x146956['query']);_0x430ddf[_0x1d48('0x46')]=_[_0x1d48('0x45')](_0x146956[_0x1d48('0x42')],qs[_0x1d48('0x57')](_0x2f2a0f[_0x1d48('0x44')][_0x1d48('0x57')]));_0x430ddf[_0x1d48('0x46')]=_0x430ddf[_0x1d48('0x46')][_0x1d48('0x58')]?_0x430ddf[_0x1d48('0x46')]:_0x146956[_0x1d48('0x42')];if(_0x2f2a0f[_0x1d48('0x44')][_0x1d48('0x51')]){_0x430ddf['include']=[{'all':!![]}];}_0x430ddf=_['merge']({},_0x430ddf,_0x2f2a0f[_0x1d48('0x50')]);return db['SmsMessage']['find'](_0x430ddf)['then'](handleEntityNotFound(_0x18230a,null))[_0x1d48('0x22')](respondWithResult(_0x18230a,null))['catch'](handleError(_0x18230a,null));};exports[_0x1d48('0x59')]=function(_0x1684ef,_0x260fc6){return db[_0x1d48('0x3d')][_0x1d48('0x59')](_0x1684ef[_0x1d48('0x5a')],{})[_0x1d48('0x22')](respondWithResult(_0x260fc6,0xc9))['catch'](handleError(_0x260fc6,null));};exports[_0x1d48('0x36')]=function(_0x3dd918,_0x1c3b13){if(_0x3dd918[_0x1d48('0x5a')]['id']){delete _0x3dd918[_0x1d48('0x5a')]['id'];}return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x3dd918['params']['id']}})[_0x1d48('0x22')](handleEntityNotFound(_0x1c3b13,null))['then'](saveUpdates(_0x3dd918[_0x1d48('0x5a')],null))['then'](respondWithResult(_0x1c3b13,null))[_0x1d48('0x55')](handleError(_0x1c3b13,null));};exports['destroy']=function(_0x17eb32,_0x46aec6){return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x17eb32[_0x1d48('0x56')]['id']}})[_0x1d48('0x22')](handleEntityNotFound(_0x46aec6,null))[_0x1d48('0x22')](removeEntity(_0x46aec6,null))[_0x1d48('0x55')](handleError(_0x46aec6,null));};exports[_0x1d48('0x5c')]=function(_0xdadc9,_0x2a8038){return db['SmsMessage'][_0x1d48('0x5c')]()[_0x1d48('0x22')](respondWithResult(_0x2a8038,null))['catch'](handleError(_0x2a8038,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0x1d48('0x5d')]=function(_0x1f2dc8,_0x34bc2a,_0x30cecf){var _0x524c7f={'agent':{},'channel':'sms'};if(_0x1f2dc8[_0x1d48('0x5a')]['id']){delete _0x1f2dc8['body']['id'];}_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x5e')]=!![];_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x5f')]=moment()[_0x1d48('0x60')](_0x1d48('0x61'));_0x1f2dc8['body'][_0x1d48('0x62')]=_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x62')]||_0x1f2dc8[_0x1d48('0x63')]['id'];_0x524c7f['agent']['id']=_0x1f2dc8['body']['UserId'];return db[_0x1d48('0x3d')]['find']({'where':{'id':_0x1f2dc8[_0x1d48('0x56')]['id'],'UserId':null}})[_0x1d48('0x22')](handleEntityNotFound(_0x34bc2a,null))[_0x1d48('0x22')](saveUpdates(_0x1f2dc8[_0x1d48('0x5a')],null))[_0x1d48('0x22')](function(_0x59dd6d){if(_0x59dd6d){_0x524c7f[_0x1d48('0x2a')]=_0x59dd6d[_0x1d48('0x64')]({'plain':!![]});return db['SmsInteraction'][_0x1d48('0x5b')]({'where':{'id':_0x59dd6d[_0x1d48('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x34bc2a,null))[_0x1d48('0x22')](function(_0x31c5d8){if(_0x31c5d8){return _0x31c5d8['update']({'UserId':_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x62')],'read1stAt':_[_0x1d48('0x66')](_0x31c5d8['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0xd106d1){if(_0xd106d1){_0x524c7f[_0x1d48('0x67')]=_0xd106d1[_0x1d48('0x64')]({'plain':!![]});interaction_log[_0x1d48('0x23')](_0x1d48('0x68'),_0x1f2dc8['user']['id'],_0x1f2dc8[_0x1d48('0x63')]['name'],_0x1f2dc8['user'][_0x1d48('0x69')],_0x524c7f[_0x1d48('0x67')]['id'],_0x1f2dc8[_0x1d48('0x5a')]?JSON[_0x1d48('0x27')](_0x1f2dc8[_0x1d48('0x5a')]):'null');return respondWithRpcPromise(_0x1d48('0x6a'),'acceptMessage',_0x524c7f);}return null;})[_0x1d48('0x22')](function(_0x4cb827){var _0x16d705=_0x1d48('0x6b')+_0x4cb827[_0x1d48('0x2a')][_0x1d48('0x6c')];return db[_0x1d48('0x6d')][_0x1d48('0x44')](_0x16d705,{'type':db[_0x1d48('0x6e')][_0x1d48('0x6f')]['SELECT'],'raw':!![]})[_0x1d48('0x22')](function(_0x4c9bb6){return _0x4c9bb6;});})[_0x1d48('0x22')](function(_0x52c818){if(_0x52c818){_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x70')]=_0x52c818[0x0];if(!_0x1f2dc8[_0x1d48('0x5a')]['UserId'])return;return db[_0x1d48('0x71')][_0x1d48('0x5b')]({'where':{'id':_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x62')],'role':_0x1d48('0x72')},'attributes':['id',_0x1d48('0x39'),_0x1d48('0x73'),_0x1d48('0x74'),_0x1d48('0x75')],'raw':!![]});}return null;})[_0x1d48('0x22')](function(_0x3c61f5){if(!_0x3c61f5)return null;_0x524c7f['message'][_0x1d48('0x72')]=_0x3c61f5;return _0x524c7f;})[_0x1d48('0x22')](function(_0x5a4780){if(_0x5a4780){if(_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x76')]){_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x77')]=util[_0x1d48('0x60')](_0x1d48('0x78'),_0x1f2dc8[_0x1d48('0x63')][_0x1d48('0x39')]);_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x79')]=_0x524c7f[_0x1d48('0x79')];_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x7a')]=_0x524c7f[_0x1d48('0x79')];_0x524c7f['message'][_0x1d48('0x7b')]=_0x1d48('0x5d');return respondWithRpcPromise(_0x1d48('0x7c'),_0x1d48('0x7c'),{'event':_0x1d48('0x7d'),'message':_0x524c7f[_0x1d48('0x2a')]},client9002)[_0x1d48('0x22')](function(){return _0x524c7f;});}return _0x524c7f;}return null;})['then'](respondWithResult(_0x34bc2a,null))[_0x1d48('0x55')](handleError(_0x34bc2a,null));};var interaction_log=require('../../config/logger')(_0x1d48('0x7e'));exports[_0x1d48('0x7f')]=function(_0x35733f,_0xbb5e4e,_0x255514){var _0x160b44={'agent':{},'channel':'sms'};if(_0x35733f[_0x1d48('0x5a')]['id']){delete _0x35733f[_0x1d48('0x5a')]['id'];}_0x35733f[_0x1d48('0x5a')][_0x1d48('0x62')]=_0x35733f['body'][_0x1d48('0x62')]||_0x35733f[_0x1d48('0x63')]['id'];_0x160b44[_0x1d48('0x72')]['id']=_0x35733f['body'][_0x1d48('0x62')];return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x35733f['params']['id'],'UserId':null}})[_0x1d48('0x22')](handleEntityNotFound(_0xbb5e4e,null))[_0x1d48('0x22')](function(_0x1f1f65){if(_0x1f1f65){_0x160b44['message']=_0x1f1f65[_0x1d48('0x64')]({'plain':!![]});return db[_0x1d48('0x80')]['find']({'where':{'id':_0x1f1f65['SmsInteractionId']}});}return null;})[_0x1d48('0x22')](handleEntityNotFound(_0xbb5e4e,null))[_0x1d48('0x22')](function(_0xbd0e4e){if(_0xbd0e4e){_0x160b44[_0x1d48('0x67')]=_0xbd0e4e[_0x1d48('0x64')]({'plain':!![]});interaction_log[_0x1d48('0x23')](_0x1d48('0x81'),_0x35733f['user']['id'],_0x35733f[_0x1d48('0x63')]['name'],_0x35733f[_0x1d48('0x63')][_0x1d48('0x69')],_0x160b44[_0x1d48('0x67')]['id'],_0x35733f['body']?JSON[_0x1d48('0x27')](_0x35733f[_0x1d48('0x5a')]):_0x1d48('0x82'));return respondWithRpcPromise('RejectMessage',_0x1d48('0x83'),_0x160b44);}return null;})[_0x1d48('0x22')](function(_0x8026b4){var _0x5ca5cd=_0x1d48('0x6b')+_0x8026b4['message'][_0x1d48('0x6c')];return db['sequelize'][_0x1d48('0x44')](_0x5ca5cd,{'type':db[_0x1d48('0x6e')]['QueryTypes'][_0x1d48('0x84')],'raw':!![]})[_0x1d48('0x22')](function(_0x280519){return _0x280519;});})[_0x1d48('0x22')](function(_0x8d4b72){if(_0x8d4b72){_0x160b44[_0x1d48('0x2a')][_0x1d48('0x70')]=_0x8d4b72[0x0];if(!_0x35733f[_0x1d48('0x5a')][_0x1d48('0x62')])return;return db['User'][_0x1d48('0x5b')]({'where':{'id':_0x35733f[_0x1d48('0x5a')][_0x1d48('0x62')],'role':_0x1d48('0x72')},'attributes':['id',_0x1d48('0x39'),_0x1d48('0x73'),_0x1d48('0x74'),'internal'],'raw':!![]});}return null;})[_0x1d48('0x22')](function(_0x217bae){if(!_0x217bae)return null;_0x160b44['message'][_0x1d48('0x72')]=_0x217bae;return _0x160b44;})[_0x1d48('0x22')](function(_0xaad72e){if(_0xaad72e){_0xaad72e['message']['interface']=util[_0x1d48('0x60')](_0x1d48('0x78'),_0x35733f[_0x1d48('0x63')][_0x1d48('0x39')]);_0xaad72e[_0x1d48('0x2a')][_0x1d48('0x79')]=_0x160b44[_0x1d48('0x79')];_0xaad72e[_0x1d48('0x2a')][_0x1d48('0x7a')]=_0x160b44[_0x1d48('0x79')];_0xaad72e['message'][_0x1d48('0x7b')]=_0x1d48('0x7f');respondWithRpcPromise(_0x1d48('0x7c'),_0x1d48('0x7c'),{'event':_0x1d48('0x85'),'message':_0xaad72e[_0x1d48('0x2a')]},client9002);return _0x160b44;}return null;})['then'](respondWithResult(_0xbb5e4e,null))[_0x1d48('0x55')](handleError(_0xbb5e4e,null));};exports[_0x1d48('0x2d')]=function(_0x5db7d9,_0x2df347,_0x173aec){if(_0x5db7d9[_0x1d48('0x5a')]['id']){delete _0x5db7d9['body']['id'];}var _0x2606aa;return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x5db7d9[_0x1d48('0x56')]['id']}})[_0x1d48('0x22')](handleEntityNotFound(_0x2df347,null))[_0x1d48('0x22')](function(_0x2b40c0){if(_0x2b40c0){_0x2606aa=_0x2b40c0;return db[_0x1d48('0x86')][_0x1d48('0x5b')]({'where':{'id':_0x2b40c0[_0x1d48('0x87')]}});}})[_0x1d48('0x22')](handleEntityNotFound(_0x2df347,null))[_0x1d48('0x22')](function(_0x3f4856){if(_0x3f4856){logger[_0x1d48('0x88')](_0x1d48('0x25'),'status',_0x1d48('0x89'),_0x3f4856[_0x1d48('0x40')],util[_0x1d48('0x8a')](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));switch(_0x3f4856['type']){case _0x1d48('0x8b'):if(_0x5db7d9[_0x1d48('0x5a')]['MessageSid']&&_0x5db7d9[_0x1d48('0x5a')][_0x1d48('0x8c')]===_0x2606aa[_0x1d48('0x8d')]){return _0x2606aa[_0x1d48('0x36')]({'read':!![]});}else{logger[_0x1d48('0x28')](_0x1d48('0x8e'),'status','twilio',util[_0x1d48('0x8a')](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x1d48('0x8f'):if(_0x5db7d9[_0x1d48('0x5a')][_0x1d48('0x90')]&&_0x5db7d9['body'][_0x1d48('0x90')]===_0x2606aa[_0x1d48('0x8d')]&&_[_0x1d48('0x91')]([_0x1d48('0x92'),_0x1d48('0x93')],_0x5db7d9[_0x1d48('0x5a')]['Status'])>=0x0){return _0x2606aa[_0x1d48('0x36')]({'read':!![]});}else{logger[_0x1d48('0x28')](_0x1d48('0x8e'),'status',_0x1d48('0x94'),util['inspect'](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x28bf94=_0x5db7d9[_0x1d48('0x5a')][_0x1d48('0x95')][0x0];if(_0x28bf94[_0x1d48('0x2d')][_0x1d48('0x96')]===_0x1d48('0x97')){return _0x2606aa[_0x1d48('0x36')]({'read':!![]});}else{logger[_0x1d48('0x28')](_0x1d48('0x8e'),_0x1d48('0x2d'),'infobip',util[_0x1d48('0x8a')](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x2606aa;}})[_0x1d48('0x22')](respondWithResult(_0x2df347,null))[_0x1d48('0x55')](handleError(_0x2df347,null));};
\ No newline at end of file
+var _0x79e2=['inspect','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','indexOf','sent','delivered','Status','infobip','groupName','DELIVERED','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsMessage.socket','register','client','http','request','then','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','result','catch','end','status','json','offset','undefined','limit','count','set','apply','update','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','where','filters','filter','merge','VIRTUAL','options','SmsMessage','includeAll','include','findAll','rows','show','params','find','create','body','describe','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','contact','fullname','email','internal','manual','channel','accept','EventManager','sms-interactions','reject','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','User','interface','event','rejectmessage','SmsAccountId'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x79e2,0x1c3));var _0x279e=function(_0xf72b46,_0x5b629e){_0xf72b46=_0xf72b46-0x0;var _0x31dcfb=_0x79e2[_0xf72b46];return _0x31dcfb;};'use strict';var emlformat=require(_0x279e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x279e('0x1'));var jsonpatch=require(_0x279e('0x2'));var rp=require(_0x279e('0x3'));var moment=require('moment');var BPromise=require(_0x279e('0x4'));var Mustache=require('mustache');var util=require(_0x279e('0x5'));var path=require(_0x279e('0x6'));var sox=require(_0x279e('0x7'));var csv=require(_0x279e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x279e('0x9'));var squel=require(_0x279e('0xa'));var crypto=require(_0x279e('0xb'));var jsforce=require(_0x279e('0xc'));var deskjs=require(_0x279e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x279e('0xe'));var Papa=require(_0x279e('0xf'));var Redis=require(_0x279e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x279e('0x11'));var as=require(_0x279e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x279e('0x13'))(_0x279e('0x14'));var utils=require(_0x279e('0x15'));var config=require(_0x279e('0x16'));var licenseUtil=require(_0x279e('0x17'));var db=require(_0x279e('0x18'))['db'];config[_0x279e('0x19')]=_[_0x279e('0x1a')](config['redis'],{'host':_0x279e('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x279e('0x19')]));require(_0x279e('0x1c'))[_0x279e('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x279e('0x1e')][_0x279e('0x1f')]({'port':0x232c});var client9002=jayson[_0x279e('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x201ae0,_0x3683e6,_0x3daae8,_0xb9c4fe){return new BPromise(function(_0x14f7fc,_0x3e2d0b){var _0x484c6e=_0xb9c4fe||client;return _0x484c6e[_0x279e('0x20')](_0x201ae0,_0x3daae8)[_0x279e('0x21')](function(_0x1e9a48){logger[_0x279e('0x22')]('SmsMessage,\x20%s,\x20%s',_0x3683e6,_0x279e('0x23'));logger[_0x279e('0x24')](_0x279e('0x25'),_0x3683e6,_0x279e('0x23'),JSON[_0x279e('0x26')](_0x1e9a48));if(_0x1e9a48['error']){if(_0x1e9a48[_0x279e('0x27')]['code']===0x1f4){logger[_0x279e('0x27')](_0x279e('0x28'),_0x3683e6,_0x1e9a48['error'][_0x279e('0x29')]);return _0x3e2d0b(_0x1e9a48[_0x279e('0x27')][_0x279e('0x29')]);}logger[_0x279e('0x27')](_0x279e('0x28'),_0x3683e6,_0x1e9a48['error']['message']);return _0x14f7fc(_0x1e9a48[_0x279e('0x27')][_0x279e('0x29')]);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x3683e6,_0x279e('0x23'));_0x14f7fc(_0x1e9a48[_0x279e('0x2a')]['message']);}})[_0x279e('0x2b')](function(_0x5ab4a9){logger[_0x279e('0x27')](_0x279e('0x28'),_0x3683e6,_0x5ab4a9);_0x3e2d0b(_0x5ab4a9);});});}function respondWithStatusCode(_0x4cc1af,_0x5663ed){_0x5663ed=_0x5663ed||0xcc;return function(_0x54eb04){if(_0x54eb04){return _0x4cc1af['sendStatus'](_0x5663ed);}return _0x4cc1af['status'](_0x5663ed)[_0x279e('0x2c')]();};}function respondWithResult(_0x4c3104,_0x5b3c75){_0x5b3c75=_0x5b3c75||0xc8;return function(_0x73a347){if(_0x73a347){return _0x4c3104[_0x279e('0x2d')](_0x5b3c75)[_0x279e('0x2e')](_0x73a347);}};}function respondWithFilteredResult(_0x155927,_0x2957c7){return function(_0x2b9286){if(_0x2b9286){var _0x54fea1=typeof _0x2957c7[_0x279e('0x2f')]===_0x279e('0x30')&&typeof _0x2957c7[_0x279e('0x31')]===_0x279e('0x30');var _0x4fb56c=_0x2b9286[_0x279e('0x32')];var _0x28f5fe=_0x54fea1?0x0:_0x2957c7['offset'];var _0x5a73a0=_0x54fea1?_0x2b9286[_0x279e('0x32')]:_0x2957c7['offset']+_0x2957c7[_0x279e('0x31')];var _0x418daf;if(_0x5a73a0>=_0x4fb56c){_0x5a73a0=_0x4fb56c;_0x418daf=0xc8;}else{_0x418daf=0xce;}_0x155927[_0x279e('0x2d')](_0x418daf);return _0x155927[_0x279e('0x33')]('Content-Range',_0x28f5fe+'-'+_0x5a73a0+'/'+_0x4fb56c)['json'](_0x2b9286);}return null;};}function patchUpdates(_0x850f42){return function(_0x3ec817){try{jsonpatch[_0x279e('0x34')](_0x3ec817,_0x850f42,!![]);}catch(_0x13c39c){return BPromise['reject'](_0x13c39c);}return _0x3ec817['save']();};}function saveUpdates(_0x20956c,_0x1c264f){return function(_0x459cf2){if(_0x459cf2){return _0x459cf2[_0x279e('0x35')](_0x20956c)['then'](function(_0x1d3caf){return _0x1d3caf;});}return null;};}function removeEntity(_0x264e68,_0x3b5683){return function(_0x28c6c4){if(_0x28c6c4){return _0x28c6c4[_0x279e('0x36')]()[_0x279e('0x21')](function(){_0x264e68[_0x279e('0x2d')](0xcc)[_0x279e('0x2c')]();});}};}function handleEntityNotFound(_0x361309,_0x29b822){return function(_0x51f0bf){if(!_0x51f0bf){_0x361309[_0x279e('0x37')](0x194);}return _0x51f0bf;};}function handleError(_0x20c624,_0x3b40da){_0x3b40da=_0x3b40da||0x1f4;return function(_0x28327f){logger[_0x279e('0x27')](_0x28327f[_0x279e('0x38')]);if(_0x28327f['name']){delete _0x28327f[_0x279e('0x39')];}_0x20c624[_0x279e('0x2d')](_0x3b40da)[_0x279e('0x3a')](_0x28327f);};}exports[_0x279e('0x3b')]=function(_0x448690,_0x67ab69){var _0x40d3ba={},_0x1911b9={},_0x3e46b9={'count':0x0,'rows':[]};var _0x30345f=_[_0x279e('0x3c')](db['SmsMessage'][_0x279e('0x3d')],function(_0x376dae){return{'name':_0x376dae[_0x279e('0x3e')],'type':_0x376dae[_0x279e('0x3f')][_0x279e('0x40')]};});_0x1911b9[_0x279e('0x41')]=_[_0x279e('0x3c')](_0x30345f,_0x279e('0x39'));_0x1911b9[_0x279e('0x42')]=_[_0x279e('0x43')](_0x448690[_0x279e('0x42')]);_0x1911b9['filters']=_['intersection'](_0x1911b9[_0x279e('0x41')],_0x1911b9['query']);_0x40d3ba[_0x279e('0x44')]=_[_0x279e('0x45')](_0x1911b9[_0x279e('0x41')],qs['fields'](_0x448690[_0x279e('0x42')][_0x279e('0x46')]));_0x40d3ba[_0x279e('0x44')]=_0x40d3ba[_0x279e('0x44')][_0x279e('0x47')]?_0x40d3ba['attributes']:_0x1911b9['model'];if(!_0x448690['query'][_0x279e('0x48')](_0x279e('0x49'))){_0x40d3ba[_0x279e('0x31')]=qs['limit'](_0x448690[_0x279e('0x42')]['limit']);_0x40d3ba[_0x279e('0x2f')]=qs[_0x279e('0x2f')](_0x448690[_0x279e('0x42')][_0x279e('0x2f')]);}_0x40d3ba['order']=qs['sort'](_0x448690['query']['sort']);_0x40d3ba[_0x279e('0x4a')]=qs[_0x279e('0x4b')](_['pick'](_0x448690[_0x279e('0x42')],_0x1911b9[_0x279e('0x4b')]),_0x30345f);if(_0x448690['query'][_0x279e('0x4c')]){_0x40d3ba['where']=_[_0x279e('0x4d')](_0x40d3ba[_0x279e('0x4a')],{'$or':_[_0x279e('0x3c')](_0x30345f,function(_0x2b3005){if(_0x2b3005[_0x279e('0x3f')]!==_0x279e('0x4e')){var _0xc4359a={};_0xc4359a[_0x2b3005[_0x279e('0x39')]]={'$like':'%'+_0x448690[_0x279e('0x42')]['filter']+'%'};return _0xc4359a;}})});}_0x40d3ba=_['merge']({},_0x40d3ba,_0x448690[_0x279e('0x4f')]);var _0x38a5f2={'where':_0x40d3ba[_0x279e('0x4a')]};return db[_0x279e('0x50')]['count'](_0x38a5f2)[_0x279e('0x21')](function(_0x347c26){_0x3e46b9[_0x279e('0x32')]=_0x347c26;if(_0x448690[_0x279e('0x42')][_0x279e('0x51')]){_0x40d3ba[_0x279e('0x52')]=[{'all':!![]}];}return db[_0x279e('0x50')][_0x279e('0x53')](_0x40d3ba);})[_0x279e('0x21')](function(_0x480bd5){_0x3e46b9[_0x279e('0x54')]=_0x480bd5;return _0x3e46b9;})[_0x279e('0x21')](respondWithFilteredResult(_0x67ab69,_0x40d3ba))[_0x279e('0x2b')](handleError(_0x67ab69,null));};exports[_0x279e('0x55')]=function(_0xc7f0ce,_0x4b1ba1){var _0x6dbe07={'raw':!![],'where':{'id':_0xc7f0ce[_0x279e('0x56')]['id']}},_0x395c4b={};_0x395c4b[_0x279e('0x41')]=_[_0x279e('0x43')](db[_0x279e('0x50')][_0x279e('0x3d')]);_0x395c4b[_0x279e('0x42')]=_['keys'](_0xc7f0ce[_0x279e('0x42')]);_0x395c4b[_0x279e('0x4b')]=_['intersection'](_0x395c4b[_0x279e('0x41')],_0x395c4b['query']);_0x6dbe07[_0x279e('0x44')]=_[_0x279e('0x45')](_0x395c4b['model'],qs[_0x279e('0x46')](_0xc7f0ce[_0x279e('0x42')][_0x279e('0x46')]));_0x6dbe07[_0x279e('0x44')]=_0x6dbe07['attributes'][_0x279e('0x47')]?_0x6dbe07[_0x279e('0x44')]:_0x395c4b['model'];if(_0xc7f0ce[_0x279e('0x42')][_0x279e('0x51')]){_0x6dbe07[_0x279e('0x52')]=[{'all':!![]}];}_0x6dbe07=_[_0x279e('0x4d')]({},_0x6dbe07,_0xc7f0ce['options']);return db[_0x279e('0x50')][_0x279e('0x57')](_0x6dbe07)['then'](handleEntityNotFound(_0x4b1ba1,null))[_0x279e('0x21')](respondWithResult(_0x4b1ba1,null))[_0x279e('0x2b')](handleError(_0x4b1ba1,null));};exports[_0x279e('0x58')]=function(_0x5e0267,_0x443195){return db[_0x279e('0x50')]['create'](_0x5e0267[_0x279e('0x59')],{})[_0x279e('0x21')](respondWithResult(_0x443195,0xc9))[_0x279e('0x2b')](handleError(_0x443195,null));};exports['update']=function(_0x2a8639,_0x374381){if(_0x2a8639['body']['id']){delete _0x2a8639[_0x279e('0x59')]['id'];}return db[_0x279e('0x50')]['find']({'where':{'id':_0x2a8639['params']['id']}})[_0x279e('0x21')](handleEntityNotFound(_0x374381,null))[_0x279e('0x21')](saveUpdates(_0x2a8639[_0x279e('0x59')],null))[_0x279e('0x21')](respondWithResult(_0x374381,null))['catch'](handleError(_0x374381,null));};exports[_0x279e('0x36')]=function(_0x194a8b,_0x9afc0f){return db['SmsMessage'][_0x279e('0x57')]({'where':{'id':_0x194a8b[_0x279e('0x56')]['id']}})[_0x279e('0x21')](handleEntityNotFound(_0x9afc0f,null))[_0x279e('0x21')](removeEntity(_0x9afc0f,null))[_0x279e('0x2b')](handleError(_0x9afc0f,null));};exports[_0x279e('0x5a')]=function(_0x389032,_0x5697f5){return db[_0x279e('0x50')][_0x279e('0x5a')]()[_0x279e('0x21')](respondWithResult(_0x5697f5,null))[_0x279e('0x2b')](handleError(_0x5697f5,null));};var interaction_log=require(_0x279e('0x13'))('sms-interactions');exports['accept']=function(_0x33c27c,_0x13db5e,_0x189301){var _0x479fb6={'agent':{},'channel':_0x279e('0x5b')};if(_0x33c27c[_0x279e('0x59')]['id']){delete _0x33c27c[_0x279e('0x59')]['id'];}_0x33c27c['body'][_0x279e('0x5c')]=!![];_0x33c27c[_0x279e('0x59')][_0x279e('0x5d')]=moment()[_0x279e('0x5e')](_0x279e('0x5f'));_0x33c27c[_0x279e('0x59')][_0x279e('0x60')]=_0x33c27c['body']['UserId']||_0x33c27c[_0x279e('0x61')]['id'];_0x479fb6[_0x279e('0x62')]['id']=_0x33c27c[_0x279e('0x59')][_0x279e('0x60')];return db['SmsMessage'][_0x279e('0x57')]({'where':{'id':_0x33c27c['params']['id'],'UserId':null}})[_0x279e('0x21')](handleEntityNotFound(_0x13db5e,null))['then'](saveUpdates(_0x33c27c['body'],null))[_0x279e('0x21')](function(_0x292921){if(_0x292921){_0x479fb6[_0x279e('0x29')]=_0x292921[_0x279e('0x63')]({'plain':!![]});return db[_0x279e('0x64')][_0x279e('0x57')]({'where':{'id':_0x292921[_0x279e('0x65')]}});}return null;})[_0x279e('0x21')](handleEntityNotFound(_0x13db5e,null))['then'](function(_0x1a7c7c){if(_0x1a7c7c){return _0x1a7c7c[_0x279e('0x35')]({'UserId':_0x33c27c[_0x279e('0x59')]['UserId'],'read1stAt':_[_0x279e('0x66')](_0x1a7c7c[_0x279e('0x67')])?moment()[_0x279e('0x5e')](_0x279e('0x5f')):undefined});}return null;})[_0x279e('0x21')](function(_0x13c58f){if(_0x13c58f){_0x479fb6[_0x279e('0x68')]=_0x13c58f[_0x279e('0x63')]({'plain':!![]});interaction_log[_0x279e('0x22')](_0x279e('0x69'),_0x33c27c[_0x279e('0x61')]['id'],_0x33c27c[_0x279e('0x61')][_0x279e('0x39')],_0x33c27c[_0x279e('0x61')][_0x279e('0x6a')],_0x479fb6[_0x279e('0x68')]['id'],_0x33c27c[_0x279e('0x59')]?JSON[_0x279e('0x26')](_0x33c27c[_0x279e('0x59')]):_0x279e('0x6b'));return respondWithRpcPromise(_0x279e('0x6c'),_0x279e('0x6d'),_0x479fb6);}return null;})[_0x279e('0x21')](function(_0x41baef){var _0x2261ec=_0x279e('0x6e')+_0x41baef[_0x279e('0x29')][_0x279e('0x6f')];return db['sequelize'][_0x279e('0x42')](_0x2261ec,{'type':db['Sequelize'][_0x279e('0x70')][_0x279e('0x71')],'raw':!![]})[_0x279e('0x21')](function(_0x1057ca){return _0x1057ca;});})['then'](function(_0x4b5303){if(_0x4b5303){_0x479fb6[_0x279e('0x29')][_0x279e('0x72')]=_0x4b5303[0x0];if(!_0x33c27c[_0x279e('0x59')]['UserId'])return;return db['User'][_0x279e('0x57')]({'where':{'id':_0x33c27c[_0x279e('0x59')][_0x279e('0x60')],'role':'agent'},'attributes':['id',_0x279e('0x39'),_0x279e('0x73'),_0x279e('0x74'),_0x279e('0x75')],'raw':!![]});}return null;})['then'](function(_0x1c1ea0){if(!_0x1c1ea0)return null;_0x479fb6['message'][_0x279e('0x62')]=_0x1c1ea0;return _0x479fb6;})[_0x279e('0x21')](function(_0x407270){if(_0x407270){if(_0x33c27c[_0x279e('0x59')][_0x279e('0x76')]){_0x479fb6[_0x279e('0x29')]['interface']=util[_0x279e('0x5e')]('SIP/%s',_0x33c27c[_0x279e('0x61')][_0x279e('0x39')]);_0x479fb6[_0x279e('0x29')][_0x279e('0x77')]=_0x479fb6[_0x279e('0x77')];_0x479fb6[_0x279e('0x29')]['motionChannel']=_0x479fb6[_0x279e('0x77')];_0x479fb6['message']['event']=_0x279e('0x78');return respondWithRpcPromise(_0x279e('0x79'),'EventManager',{'event':'acceptmessage','message':_0x479fb6[_0x279e('0x29')]},client9002)[_0x279e('0x21')](function(){return _0x479fb6;});}return _0x479fb6;}return null;})[_0x279e('0x21')](respondWithResult(_0x13db5e,null))['catch'](handleError(_0x13db5e,null));};var interaction_log=require(_0x279e('0x13'))(_0x279e('0x7a'));exports[_0x279e('0x7b')]=function(_0x1ee8f1,_0x4db8ec,_0x35ee0e){var _0x423321={'agent':{},'channel':_0x279e('0x5b')};if(_0x1ee8f1[_0x279e('0x59')]['id']){delete _0x1ee8f1[_0x279e('0x59')]['id'];}_0x1ee8f1['body'][_0x279e('0x60')]=_0x1ee8f1[_0x279e('0x59')][_0x279e('0x60')]||_0x1ee8f1[_0x279e('0x61')]['id'];_0x423321[_0x279e('0x62')]['id']=_0x1ee8f1[_0x279e('0x59')][_0x279e('0x60')];return db['SmsMessage'][_0x279e('0x57')]({'where':{'id':_0x1ee8f1[_0x279e('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4db8ec,null))['then'](function(_0x4099b1){if(_0x4099b1){_0x423321['message']=_0x4099b1[_0x279e('0x63')]({'plain':!![]});return db['SmsInteraction']['find']({'where':{'id':_0x4099b1[_0x279e('0x65')]}});}return null;})[_0x279e('0x21')](handleEntityNotFound(_0x4db8ec,null))[_0x279e('0x21')](function(_0x56a754){if(_0x56a754){_0x423321[_0x279e('0x68')]=_0x56a754[_0x279e('0x63')]({'plain':!![]});interaction_log[_0x279e('0x22')](_0x279e('0x7c'),_0x1ee8f1[_0x279e('0x61')]['id'],_0x1ee8f1[_0x279e('0x61')][_0x279e('0x39')],_0x1ee8f1[_0x279e('0x61')][_0x279e('0x6a')],_0x423321['interaction']['id'],_0x1ee8f1[_0x279e('0x59')]?JSON[_0x279e('0x26')](_0x1ee8f1[_0x279e('0x59')]):_0x279e('0x6b'));return respondWithRpcPromise(_0x279e('0x7d'),_0x279e('0x7e'),_0x423321);}return null;})[_0x279e('0x21')](function(_0x1c922e){var _0x46f074='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1c922e[_0x279e('0x29')][_0x279e('0x6f')];return db['sequelize']['query'](_0x46f074,{'type':db[_0x279e('0x7f')][_0x279e('0x70')][_0x279e('0x71')],'raw':!![]})['then'](function(_0x5ca773){return _0x5ca773;});})['then'](function(_0x1be81e){if(_0x1be81e){_0x423321['message']['contact']=_0x1be81e[0x0];if(!_0x1ee8f1[_0x279e('0x59')][_0x279e('0x60')])return;return db[_0x279e('0x80')][_0x279e('0x57')]({'where':{'id':_0x1ee8f1[_0x279e('0x59')]['UserId'],'role':'agent'},'attributes':['id',_0x279e('0x39'),_0x279e('0x73'),_0x279e('0x74'),_0x279e('0x75')],'raw':!![]});}return null;})[_0x279e('0x21')](function(_0x31dc13){if(!_0x31dc13)return null;_0x423321['message']['agent']=_0x31dc13;return _0x423321;})[_0x279e('0x21')](function(_0x53f891){if(_0x53f891){_0x53f891[_0x279e('0x29')][_0x279e('0x81')]=util[_0x279e('0x5e')]('SIP/%s',_0x1ee8f1[_0x279e('0x61')][_0x279e('0x39')]);_0x53f891['message'][_0x279e('0x77')]=_0x423321['channel'];_0x53f891[_0x279e('0x29')]['motionChannel']=_0x423321[_0x279e('0x77')];_0x53f891['message'][_0x279e('0x82')]=_0x279e('0x7b');respondWithRpcPromise(_0x279e('0x79'),'EventManager',{'event':_0x279e('0x83'),'message':_0x53f891['message']},client9002);return _0x423321;}return null;})[_0x279e('0x21')](respondWithResult(_0x4db8ec,null))[_0x279e('0x2b')](handleError(_0x4db8ec,null));};exports[_0x279e('0x2d')]=function(_0x989b7c,_0x3e8bb3,_0x4cf275){if(_0x989b7c[_0x279e('0x59')]['id']){delete _0x989b7c[_0x279e('0x59')]['id'];}var _0x594e6b;return db['SmsMessage'][_0x279e('0x57')]({'where':{'id':_0x989b7c[_0x279e('0x56')]['id']}})[_0x279e('0x21')](handleEntityNotFound(_0x3e8bb3,null))[_0x279e('0x21')](function(_0x56d209){if(_0x56d209){_0x594e6b=_0x56d209;return db['SmsAccount'][_0x279e('0x57')]({'where':{'id':_0x56d209[_0x279e('0x84')]}});}})[_0x279e('0x21')](handleEntityNotFound(_0x3e8bb3,null))[_0x279e('0x21')](function(_0x444c44){if(_0x444c44){logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x279e('0x2d'),'received\x20delivery\x20report\x20from',_0x444c44[_0x279e('0x3f')],util[_0x279e('0x85')](_0x989b7c[_0x279e('0x59')],{'showHidden':![],'depth':null}));switch(_0x444c44['type']){case'twilio':if(_0x989b7c[_0x279e('0x59')]['MessageSid']&&_0x989b7c['body'][_0x279e('0x86')]===_0x594e6b['messageId']){return _0x594e6b[_0x279e('0x35')]({'read':!![]});}else{logger[_0x279e('0x27')](_0x279e('0x87'),_0x279e('0x2d'),'twilio',util[_0x279e('0x85')](_0x989b7c[_0x279e('0x59')],{'showHidden':![],'depth':null}));}break;case _0x279e('0x88'):if(_0x989b7c[_0x279e('0x59')][_0x279e('0x89')]&&_0x989b7c['body']['MessageUUID']===_0x594e6b[_0x279e('0x8a')]&&_[_0x279e('0x8b')]([_0x279e('0x8c'),_0x279e('0x8d')],_0x989b7c[_0x279e('0x59')][_0x279e('0x8e')])>=0x0){return _0x594e6b[_0x279e('0x35')]({'read':!![]});}else{logger[_0x279e('0x27')](_0x279e('0x87'),_0x279e('0x2d'),'plivio',util[_0x279e('0x85')](_0x989b7c['body'],{'showHidden':![],'depth':null}));}break;case _0x279e('0x8f'):var _0x18ca5f=_0x989b7c[_0x279e('0x59')]['results'][0x0];if(_0x18ca5f[_0x279e('0x2d')][_0x279e('0x90')]===_0x279e('0x91')){return _0x594e6b[_0x279e('0x35')]({'read':!![]});}else{logger['error'](_0x279e('0x87'),'status',_0x279e('0x8f'),util['inspect'](_0x989b7c[_0x279e('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x594e6b;}})[_0x279e('0x21')](respondWithResult(_0x3e8bb3,null))[_0x279e('0x2b')](handleError(_0x3e8bb3,null));};
\ No newline at end of file
index 7422def..7c90c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13e2=['save','update','remove','emit','hasOwnProperty','hook','events','SmsMessage','setMaxListeners'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x13e2,0x165));var _0x213e=function(_0x1d8383,_0x437a88){_0x1d8383=_0x1d8383-0x0;var _0x2316c2=_0x13e2[_0x1d8383];return _0x2316c2;};'use strict';var EventEmitter=require(_0x213e('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0x213e('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x213e('0x2')](0x0);var events={'afterCreate':_0x213e('0x3'),'afterUpdate':_0x213e('0x4'),'afterDestroy':_0x213e('0x5')};function emitEvent(_0x179536){return function(_0x345975,_0x1f85c7,_0x50f0d3){SmsMessageEvents[_0x213e('0x6')](_0x179536+':'+_0x345975['id'],_0x345975);SmsMessageEvents[_0x213e('0x6')](_0x179536,_0x345975);_0x50f0d3(null);};}for(var e in events){if(events[_0x213e('0x7')](e)){var event=events[e];SmsMessage[_0x213e('0x8')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0xd12c=['SmsMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xd12c,0x80));var _0xcd12=function(_0x3f43fa,_0x1ccd65){_0x3f43fa=_0x3f43fa-0x0;var _0x3cf4bb=_0xd12c[_0x3f43fa];return _0x3cf4bb;};'use strict';var EventEmitter=require(_0xcd12('0x0'));var SmsMessage=require(_0xcd12('0x1'))['db'][_0xcd12('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xcd12('0x3')](0x0);var events={'afterCreate':_0xcd12('0x4'),'afterUpdate':_0xcd12('0x5'),'afterDestroy':_0xcd12('0x6')};function emitEvent(_0x3d72a3){return function(_0x1eefcb,_0x493ce1,_0x5047b5){SmsMessageEvents[_0xcd12('0x7')](_0x3d72a3+':'+_0x1eefcb['id'],_0x1eefcb);SmsMessageEvents[_0xcd12('0x7')](_0x3d72a3,_0x1eefcb);_0x5047b5(null);};}for(var e in events){if(events[_0xcd12('0x8')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xcd12('0x9')]=SmsMessageEvents;
\ No newline at end of file
index 5cf9e4d..c68896b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe598=['&password=','password','split','sms','POST','session_key','total_sent','internal_order_id','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','deliveryReport','read','Missing\x20parameters:\x20authToken','clicksend','format','Basic\x20%s','toString','http_code','data','queued_count','message_id','clickSend','authId','base64','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/sms/2/text/advanced','token','application/json','infobip','crypto','apiKey','text','timestamp','keys','length','createHash','md5','digest','hex','signature=','GET','csc','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','clickatell','%s:%s','accountId','/messages','applicationId','bandwidth','intelepeer','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsMessage.attributes','exports','define','sms_messages','messageId','body','models','get','toLowerCase','direction','out','secret','UserId','isNil','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','messages','phone','remote','/api/sms/messages/','/status?token=','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','sender','login?username='];(function(_0x5362f1,_0xc50fb5){var _0x134b48=function(_0x2a7de7){while(--_0x2a7de7){_0x5362f1['push'](_0x5362f1['shift']());}};_0x134b48(++_0xc50fb5);}(_0xe598,0x1ac));var _0x8e59=function(_0x5f3de3,_0x40f0f5){_0x5f3de3=_0x5f3de3-0x0;var _0x287e0d=_0xe598[_0x5f3de3];return _0x287e0d;};'use strict';var _=require(_0x8e59('0x0'));var util=require('util');var logger=require(_0x8e59('0x1'))(_0x8e59('0x2'));var moment=require(_0x8e59('0x3'));var BPromise=require(_0x8e59('0x4'));var rp=require(_0x8e59('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8e59('0x6'));var config=require(_0x8e59('0x7'));var attributes=require(_0x8e59('0x8'));module[_0x8e59('0x9')]=function(_0x15bc5d,_0x3111a6){return _0x15bc5d[_0x8e59('0xa')]('SmsMessage',attributes,{'tableName':_0x8e59('0xb'),'paranoid':![],'indexes':[{'name':_0x8e59('0xc'),'fields':[_0x8e59('0xc')]},{'name':'fti_sms_messages','fields':[_0x8e59('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3c6b90,_0x37c9bb,_0x3db611){var _0x5f0264=_0x15bc5d[_0x8e59('0xe')];var _0x443df4=_0x3c6b90[_0x8e59('0xf')]({'plain':!![]});if(_0x443df4['direction'][_0x8e59('0x10')]()==='in'||_0x443df4[_0x8e59('0x11')][_0x8e59('0x10')]()===_0x8e59('0x12')&&!_0x443df4[_0x8e59('0x13')]&&!_['isNil'](_0x443df4[_0x8e59('0x14')])&&!_[_0x8e59('0x15')](_0x443df4[_0x8e59('0x16')])){_0x5f0264[_0x8e59('0x17')][_0x8e59('0x18')]({'where':{'id':_0x443df4[_0x8e59('0x16')]}})[_0x8e59('0x19')](function(_0x398ad0){if(_0x398ad0){_0x398ad0[_0x8e59('0x1a')]({'lastMsgAt':_0x443df4[_0x8e59('0x1b')],'lastMsgDirection':_0x443df4[_0x8e59('0x11')][_0x8e59('0x10')]()});}})[_0x8e59('0x1c')](function(_0x5457cf){console[_0x8e59('0x1d')](_0x5457cf);});}if(_0x443df4['direction']===_0x8e59('0x12')&&!_0x443df4[_0x8e59('0x13')]){var _0xcfc275;_0x5f0264[_0x8e59('0x1e')][_0x8e59('0x1f')]({'where':{'id':_0x443df4[_0x8e59('0x20')]},'raw':!![]})['then'](function(_0x166068){_0xcfc275=_0x166068;if(_0xcfc275&&_0xcfc275['type']){switch(_0xcfc275[_0x8e59('0x21')]){case _0x8e59('0x22'):var _0x1214e4=require('twilio');if(_0xcfc275[_0x8e59('0x23')]&&_0xcfc275[_0x8e59('0x24')]&&_0xcfc275['phone']){var _0x3cdf05=new _0x1214e4(_0xcfc275[_0x8e59('0x23')],_0xcfc275[_0x8e59('0x24')]);_0x3cdf05[_0x8e59('0x25')]['create']({'body':_0x443df4[_0x8e59('0xd')],'to':_0x443df4[_0x8e59('0x26')],'from':_0xcfc275['phone'],'statusCallback':_0xcfc275[_0x8e59('0x27')]+_0x8e59('0x28')+_0x443df4['id']+_0x8e59('0x29')+_0xcfc275['token']})['then'](function(_0xbc7e66){if(_0xbc7e66[_0x8e59('0x2a')]){return _0x3c6b90[_0x8e59('0x1a')]({'messageId':_0xbc7e66['sid']});}})['catch'](function(_0x1f84e6){logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),'twilio',util[_0x8e59('0x2d')](_0x1f84e6,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x22'),_0x8e59('0x2e'));}break;case'skebby':var _0x3c5dfb=_0x8e59('0x2f');if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275['password']){var _0x4d2e1d={'recipient':[_0x443df4[_0x8e59('0x26')]],'message':_0x443df4[_0x8e59('0xd')],'message_type':_0xcfc275[_0x8e59('0x31')]};if(_0xcfc275['smsMethod']&&_0xcfc275['smsMethod']!=='SI'){_0x4d2e1d[_0x8e59('0x32')]=_0xcfc275['phone'];}var _0x4049e8={'url':_0x3c5dfb+_0x8e59('0x33')+_0xcfc275[_0x8e59('0x30')]+_0x8e59('0x34')+_0xcfc275[_0x8e59('0x35')],'method':'GET'};rp(_0x4049e8)[_0x8e59('0x19')](function(_0x53d6e3){var _0x1c59f0=_0x53d6e3[_0x8e59('0x36')](';');var _0x2575a9={'user_key':_0x1c59f0[0x0],'session_key':_0x1c59f0[0x1]};_0x4049e8={'url':_0x3c5dfb+_0x8e59('0x37'),'method':_0x8e59('0x38'),'headers':{'user_key':_0x2575a9['user_key'],'Session_key':_0x2575a9[_0x8e59('0x39')]},'json':!![],'body':_0x4d2e1d};return rp(_0x4049e8);})[_0x8e59('0x19')](function(_0x4494f5){if(_0x4494f5[_0x8e59('0x3a')]>=0x1){var _0x21e325={'messageId':_0x4494f5[_0x8e59('0x3b')]};if(_0xcfc275['smsMethod']!=='GP'||!_0xcfc275['deliveryReport']){_0x21e325['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x21e325);}else{return logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8e59('0x2c'),_0x8e59('0x3c'),util['inspect'](_0x4494f5,{'showHidden':![],'depth':null}));}})['catch'](function(_0x2806fc){return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x3c'),util[_0x8e59('0x2d')](_0x2806fc,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8e59('0x3c'),_0x8e59('0x3d'));}break;case _0x8e59('0x3e'):if(_0xcfc275['authToken']){var _0x4236cf={'recipient':_0x443df4[_0x8e59('0x26')],'message':_0x443df4[_0x8e59('0xd')],'sender':_0xcfc275[_0x8e59('0x3f')]||_0xcfc275[_0x8e59('0x26')],'authorization':_0xcfc275[_0x8e59('0x24')]};var _0x37c9bb={'method':_0x8e59('0x38'),'uri':_0x8e59('0x40'),'body':_0x4236cf,'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0x101280){var _0x2d392b={'messageId':_0x101280['requestid']};if(!_0xcfc275[_0x8e59('0x41')]){_0x2d392b[_0x8e59('0x42')]=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x2d392b);})['catch'](function(_0xf882d1){logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate','connectel',util[_0x8e59('0x2d')](_0xf882d1,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate','connectel',_0x8e59('0x43'));}break;case _0x8e59('0x44'):if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275[_0x8e59('0x35')]){var _0x4236cf={'messages':[{'source':'xCALLY\x20Motion','to':_0x443df4[_0x8e59('0x26')],'body':_0x443df4[_0x8e59('0xd')],'from':_0xcfc275['senderString']||_0xcfc275[_0x8e59('0x26')]}]};var _0x2b448b=util[_0x8e59('0x45')]('%s:%s',_0xcfc275[_0x8e59('0x30')],_0xcfc275[_0x8e59('0x35')]);var _0x37c9bb={'method':_0x8e59('0x38'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x4236cf,'headers':{'Authorization':util[_0x8e59('0x45')](_0x8e59('0x46'),new Buffer(_0x2b448b)[_0x8e59('0x47')]('base64'))},'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0xdf6c64){if(_0xdf6c64[_0x8e59('0x48')]>=0xc8&&_0xdf6c64[_0x8e59('0x48')]<=0xce){if(_0xdf6c64[_0x8e59('0x49')]&&_0xdf6c64[_0x8e59('0x49')][_0x8e59('0x4a')]>0x0){var _0x51bdaf=_['head'](_0xdf6c64[_0x8e59('0x49')][_0x8e59('0x25')]);var _0x5e616f={'messageId':_0x51bdaf[_0x8e59('0x4b')]};if(!_0xcfc275['deliveryReport']){_0x5e616f['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x5e616f);}else{logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x4c'),util[_0x8e59('0x2d')](_0xdf6c64,{'showHidden':![],'depth':null}));}}else{logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8e59('0x4c'),util[_0x8e59('0x2d')](_0xdf6c64,{'showHidden':![],'depth':null}));}})['catch'](function(_0x252c13){logger['error'](_0x8e59('0x2b'),'afterCreate','clickSend',util['inspect'](_0x252c13,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x4c'),_0x8e59('0x3d'));}break;case'plivo':if(_0xcfc275[_0x8e59('0x4d')]&&_0xcfc275[_0x8e59('0x24')]){var _0x4236cf={'dst':_0x443df4[_0x8e59('0x26')],'text':_0x443df4[_0x8e59('0xd')],'src':_0xcfc275['senderString']||_0xcfc275[_0x8e59('0x26')],'url':_0xcfc275['remote']+_0x8e59('0x28')+_0x443df4['id']+_0x8e59('0x29')+_0xcfc275['token']};var _0x2b448b=util[_0x8e59('0x45')]('%s:%s',_0xcfc275[_0x8e59('0x4d')],_0xcfc275['authToken']);var _0x37c9bb={'method':_0x8e59('0x38'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0xcfc275[_0x8e59('0x4d')]),'body':_0x4236cf,'headers':{'Authorization':util[_0x8e59('0x45')]('Basic\x20%s',new Buffer(_0x2b448b)['toString'](_0x8e59('0x4e')))},'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0x5d9469){var _0x3c02b6={'messageId':_0x5d9469[_0x8e59('0x4f')][0x0]};return _0x3c6b90['update'](_0x3c02b6);})[_0x8e59('0x1c')](function(_0x6a9c4d){logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x50'),util[_0x8e59('0x2d')](_0x6a9c4d,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8e59('0x2c'),_0x8e59('0x50'),_0x8e59('0x51'));}break;case'infobip':if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275[_0x8e59('0x35')]){if(_0xcfc275[_0x8e59('0x52')]){var _0x160342={'method':_0x8e59('0x38'),'uri':_0xcfc275[_0x8e59('0x52')]+'/auth/1/session','body':{'username':_0xcfc275[_0x8e59('0x30')],'password':_0xcfc275[_0x8e59('0x35')]},'json':!![]};return rp(_0x160342)['then'](function(_0x142abc){var _0xf2d7ea={'method':_0x8e59('0x38'),'uri':_0xcfc275[_0x8e59('0x52')]+_0x8e59('0x53'),'body':{'messages':[{'from':_0xcfc275[_0x8e59('0x26')],'destinations':[{'to':_0x443df4[_0x8e59('0x26')]}],'text':_0x443df4['body'],'notifyUrl':_0xcfc275[_0x8e59('0x27')]+'/api/sms/messages/'+_0x443df4['id']+_0x8e59('0x29')+_0xcfc275[_0x8e59('0x54')],'notifyContentType':_0x8e59('0x55'),'callbackData':_0xcfc275[_0x8e59('0x26')]+';'+_0x443df4[_0x8e59('0xd')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x142abc[_0x8e59('0x54')]},'json':!![]};return rp(_0xf2d7ea)['then'](function(_0x3d88d3){if(_0x3d88d3[_0x8e59('0x25')]){var _0x13b8f5={'messageId':_0x3d88d3[_0x8e59('0x25')][0x0][_0x8e59('0xc')]};if(!_0xcfc275[_0x8e59('0x41')]){_0x13b8f5[_0x8e59('0x42')]=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x13b8f5);}else{return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x56'),util[_0x8e59('0x2d')](_0x3d88d3,{'showHidden':![],'depth':null}));}});})[_0x8e59('0x1c')](function(_0x38de46){return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x56'),util[_0x8e59('0x2d')](_0x38de46,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x56'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x56'),'Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x54af3a=require(_0x8e59('0x57'));if(_0xcfc275[_0x8e59('0x58')]){var _0x1c4ea5={};_0x1c4ea5['login']=_0xcfc275[_0x8e59('0x30')];_0x1c4ea5[_0x8e59('0x26')]=_0x443df4['phone'];_0x1c4ea5['sender']=_0xcfc275['phone'];_0x1c4ea5[_0x8e59('0x59')]=_0x443df4[_0x8e59('0xd')];_0x1c4ea5[_0x8e59('0x5a')]=+new Date();var _0x477196='';var _0x3b0231='';var _0x49046e=Object[_0x8e59('0x5b')](_0x1c4ea5);_0x49046e['sort']();for(var _0x4a001b=0x0;_0x4a001b<_0x49046e[_0x8e59('0x5c')];_0x4a001b++){if(_0x477196!=''){_0x477196+='&';}_0x477196+=_0x49046e[_0x4a001b]+'='+encodeURIComponent(_0x1c4ea5[_0x49046e[_0x4a001b]]);_0x3b0231+=_0x1c4ea5[_0x49046e[_0x4a001b]];}_0x3b0231+=_0xcfc275[_0x8e59('0x58')];_0x3b0231=_0x54af3a[_0x8e59('0x5d')](_0x8e59('0x5e'))[_0x8e59('0x1a')](_0x3b0231)[_0x8e59('0x5f')](_0x8e59('0x60'));if(_0x477196!==''){_0x477196+='&';}_0x477196+=_0x8e59('0x61')+_0x3b0231;var _0x4049e8={'method':_0x8e59('0x62'),'uri':_0xcfc275[_0x8e59('0x52')]+'/external/get/send.php?'+_0x477196,'json':!![]};return rp(_0x4049e8)[_0x8e59('0x19')](function(_0x4e6c18){var _0x33debe=Object[_0x8e59('0x5b')](_0x4e6c18);if(_0x4e6c18[_0x33debe[0x0]][_0x8e59('0x1d')]&&parseInt(_0x4e6c18[_0x33debe[0x0]][_0x8e59('0x1d')])===0x0){var _0x4b4343={'messageId':_0x4e6c18[_0x33debe[0x0]]['id_sms']};if(!_0xcfc275[_0x8e59('0x41')]){_0x4b4343['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x4b4343);}else{return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x63'),util[_0x8e59('0x2d')](_0x4e6c18[_0x8e59('0x1d')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x15122a){return logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x63'),util[_0x8e59('0x2d')](_0x15122a,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8e59('0x2c'),_0x8e59('0x63'),_0x8e59('0x64'));}break;case'clickatell':if(_0xcfc275[_0x8e59('0x58')]){var _0x52edb4={'method':_0x8e59('0x38'),'uri':_0x8e59('0x65'),'headers':{'Authorization':_0xcfc275[_0x8e59('0x58')]},'body':{'content':_0x443df4['body'],'to':[_0x443df4['phone']],'from':_0xcfc275[_0x8e59('0x26')],'binary':![],'clientMessageId':_0x8e59('0x66'),'charset':_0x8e59('0x67')},'json':!![]};rp(_0x52edb4)['then'](function(_0x51b9d5){if(!_0x51b9d5[_0x8e59('0x1d')]){var _0x3c96f1={'messageId':_0x51b9d5['messages'][0x0][_0x8e59('0x68')]};if(!_0xcfc275[_0x8e59('0x41')]){_0x3c96f1['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x3c96f1);}else{return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),'clickatell',util['inspect'](_0x51b9d5[_0x8e59('0x1d')],{'showHidden':![],'depth':null}));}})[_0x8e59('0x1c')](function(_0x5aafbc){return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x69'),util['inspect'](_0x5aafbc,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x69'),_0x8e59('0x64'));}break;case'bandwidth':if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275[_0x8e59('0x35')]){var _0x2b448b=util[_0x8e59('0x45')](_0x8e59('0x6a'),_0xcfc275[_0x8e59('0x30')],_0xcfc275[_0x8e59('0x35')]);var _0x37c9bb={'method':_0x8e59('0x38'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0xcfc275[_0x8e59('0x6b')]+_0x8e59('0x6c'),'body':{'to':[_0x443df4[_0x8e59('0x26')]],'text':_0x443df4[_0x8e59('0xd')],'from':_0xcfc275[_0x8e59('0x26')],'applicationId':_0xcfc275[_0x8e59('0x6d')]},'headers':{'Authorization':util[_0x8e59('0x45')](_0x8e59('0x46'),new Buffer(_0x2b448b)[_0x8e59('0x47')](_0x8e59('0x4e')))},'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0x4f8388){if(_0x4f8388['id']){var _0x579fd7={'messageId':_0x4f8388['id']};return _0x3c6b90[_0x8e59('0x1a')](_0x579fd7);}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate','bandwidth',util['inspect'](_0x4f8388,{'showHidden':![],'depth':null}));}})['catch'](function(_0x49bff9){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8e59('0x6e'),util[_0x8e59('0x2d')](_0x49bff9,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x6e'),_0x8e59('0x3d'));}break;case _0x8e59('0x6f'):if(_0xcfc275[_0x8e59('0x58')]){var _0x43eae9={};var _0x4049e8={'method':_0x8e59('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x8e59('0x70')+_0xcfc275[_0x8e59('0x58')],'Content-Type':_0x8e59('0x55')},'body':{'from':_0xcfc275[_0x8e59('0x26')],'to':_0x443df4[_0x8e59('0x26')],'text':_0x443df4[_0x8e59('0xd')]},'json':!![]};return rp(_0x4049e8)['then'](function(_0x13a4f8){if(_0x13a4f8[_0x8e59('0x71')]==0xca){_0x43eae9['message']=_0x13a4f8;var _0xb54520={'method':_0x8e59('0x38'),'uri':_0x8e59('0x72'),'headers':{'Authorization':_0x8e59('0x70')+_0xcfc275['apiKey'],'Content-Type':_0x8e59('0x55')},'body':{'refid':_0x43eae9[_0x8e59('0x73')]['refid']},'json':!![]};return rp(_0xb54520)[_0x8e59('0x19')](function(_0x27aacd){_0x43eae9['status']=_0x27aacd;var _0x2fd3f9={'messageId':_0x43eae9[_0x8e59('0x73')][_0x8e59('0x74')],'read':!![]};return _0x3c6b90[_0x8e59('0x1a')](_0x2fd3f9);});}else{return logger['error'](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x6f'),util['inspect'](_0x13a4f8,{'showHidden':![],'depth':null}));}})[_0x8e59('0x1c')](function(_0x141953){return logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x6f'),util[_0x8e59('0x2d')](_0x141953,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),'intelepeer',_0x8e59('0x75'));}break;}}})['finally'](function(){_0x3db611();});}else{_0x3db611();}}},'charset':_0x8e59('0x76'),'collate':_0x8e59('0x77')});};
\ No newline at end of file
+var _0x9aad=['toLowerCase','secret','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','catch','error','out','SmsAccount','find','type','twilio','accountSid','phone','messages','create','body','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','login?username=','&password=','GET','split','POST','session_key','total_sent','internal_order_id','read','connectel','authToken','senderString','https://smsapi.connectel.se/api/v2/send/','deliveryReport','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','data','queued_count','head','clickSend','Missing\x20parameters:\x20username,\x20password','authId','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','apiKey','login','text','timestamp','keys','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','csc','Missing\x20parameters:\x20apiKey','uuid','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','FULLTEXT','models','get','direction'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9aad,0x6b));var _0xd9aa=function(_0x1ca882,_0x14f6e6){_0x1ca882=_0x1ca882-0x0;var _0x357d7e=_0x9aad[_0x1ca882];return _0x357d7e;};'use strict';var _=require('lodash');var util=require(_0xd9aa('0x0'));var logger=require(_0xd9aa('0x1'))(_0xd9aa('0x2'));var moment=require(_0xd9aa('0x3'));var BPromise=require(_0xd9aa('0x4'));var rp=require(_0xd9aa('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd9aa('0x6'));var config=require(_0xd9aa('0x7'));var attributes=require(_0xd9aa('0x8'));module[_0xd9aa('0x9')]=function(_0x504077,_0x163807){return _0x504077[_0xd9aa('0xa')](_0xd9aa('0xb'),attributes,{'tableName':_0xd9aa('0xc'),'paranoid':![],'indexes':[{'name':_0xd9aa('0xd'),'fields':[_0xd9aa('0xd')]},{'name':_0xd9aa('0xe'),'fields':['body'],'type':_0xd9aa('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4938b2,_0x454c30,_0x2c5354){var _0x1e0018=_0x504077[_0xd9aa('0x10')];var _0x19ae67=_0x4938b2[_0xd9aa('0x11')]({'plain':!![]});if(_0x19ae67[_0xd9aa('0x12')]['toLowerCase']()==='in'||_0x19ae67[_0xd9aa('0x12')][_0xd9aa('0x13')]()==='out'&&!_0x19ae67[_0xd9aa('0x14')]&&!_[_0xd9aa('0x15')](_0x19ae67[_0xd9aa('0x16')])&&!_[_0xd9aa('0x15')](_0x19ae67[_0xd9aa('0x17')])){_0x1e0018[_0xd9aa('0x18')][_0xd9aa('0x19')]({'where':{'id':_0x19ae67[_0xd9aa('0x17')]}})[_0xd9aa('0x1a')](function(_0x2c546a){if(_0x2c546a){_0x2c546a[_0xd9aa('0x1b')]({'lastMsgAt':_0x19ae67[_0xd9aa('0x1c')],'lastMsgDirection':_0x19ae67[_0xd9aa('0x12')][_0xd9aa('0x13')]()});}})[_0xd9aa('0x1d')](function(_0x2347c2){console[_0xd9aa('0x1e')](_0x2347c2);});}if(_0x19ae67['direction']===_0xd9aa('0x1f')&&!_0x19ae67['secret']){var _0x3cc154;_0x1e0018[_0xd9aa('0x20')][_0xd9aa('0x21')]({'where':{'id':_0x19ae67['SmsAccountId']},'raw':!![]})[_0xd9aa('0x1a')](function(_0x31f39e){_0x3cc154=_0x31f39e;if(_0x3cc154&&_0x3cc154[_0xd9aa('0x22')]){switch(_0x3cc154[_0xd9aa('0x22')]){case _0xd9aa('0x23'):var _0x5b7d86=require('twilio');if(_0x3cc154[_0xd9aa('0x24')]&&_0x3cc154['authToken']&&_0x3cc154[_0xd9aa('0x25')]){var _0x1bacc9=new _0x5b7d86(_0x3cc154['accountSid'],_0x3cc154['authToken']);_0x1bacc9[_0xd9aa('0x26')][_0xd9aa('0x27')]({'body':_0x19ae67[_0xd9aa('0x28')],'to':_0x19ae67[_0xd9aa('0x25')],'from':_0x3cc154[_0xd9aa('0x25')],'statusCallback':_0x3cc154[_0xd9aa('0x29')]+_0xd9aa('0x2a')+_0x19ae67['id']+_0xd9aa('0x2b')+_0x3cc154[_0xd9aa('0x2c')]})[_0xd9aa('0x1a')](function(_0x356bf2){if(_0x356bf2['sid']){return _0x4938b2[_0xd9aa('0x1b')]({'messageId':_0x356bf2[_0xd9aa('0x2d')]});}})['catch'](function(_0x214b84){logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),'twilio',util[_0xd9aa('0x30')](_0x214b84,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x23'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xd9aa('0x31'):var _0xa44ed2=_0xd9aa('0x32');if(_0x3cc154[_0xd9aa('0x33')]&&_0x3cc154[_0xd9aa('0x34')]){var _0x21b492={'recipient':[_0x19ae67[_0xd9aa('0x25')]],'message':_0x19ae67[_0xd9aa('0x28')],'message_type':_0x3cc154['smsMethod']};if(_0x3cc154[_0xd9aa('0x35')]&&_0x3cc154[_0xd9aa('0x35')]!=='SI'){_0x21b492['sender']=_0x3cc154['phone'];}var _0x176fe4={'url':_0xa44ed2+_0xd9aa('0x36')+_0x3cc154[_0xd9aa('0x33')]+_0xd9aa('0x37')+_0x3cc154['password'],'method':_0xd9aa('0x38')};rp(_0x176fe4)[_0xd9aa('0x1a')](function(_0x5a64ed){var _0x5bd0b5=_0x5a64ed[_0xd9aa('0x39')](';');var _0x2ab1ae={'user_key':_0x5bd0b5[0x0],'session_key':_0x5bd0b5[0x1]};_0x176fe4={'url':_0xa44ed2+'sms','method':_0xd9aa('0x3a'),'headers':{'user_key':_0x2ab1ae['user_key'],'Session_key':_0x2ab1ae[_0xd9aa('0x3b')]},'json':!![],'body':_0x21b492};return rp(_0x176fe4);})['then'](function(_0x1b4f9e){if(_0x1b4f9e[_0xd9aa('0x3c')]>=0x1){var _0x33ffea={'messageId':_0x1b4f9e[_0xd9aa('0x3d')]};if(_0x3cc154['smsMethod']!=='GP'||!_0x3cc154['deliveryReport']){_0x33ffea[_0xd9aa('0x3e')]=!![];}return _0x4938b2[_0xd9aa('0x1b')](_0x33ffea);}else{return logger[_0xd9aa('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd9aa('0x2f'),_0xd9aa('0x31'),util[_0xd9aa('0x30')](_0x1b4f9e,{'showHidden':![],'depth':null}));}})[_0xd9aa('0x1d')](function(_0x183e9a){return logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),'afterCreate',_0xd9aa('0x31'),util['inspect'](_0x183e9a,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x31'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xd9aa('0x3f'):if(_0x3cc154[_0xd9aa('0x40')]){var _0x24e064={'recipient':_0x19ae67['phone'],'message':_0x19ae67[_0xd9aa('0x28')],'sender':_0x3cc154[_0xd9aa('0x41')]||_0x3cc154[_0xd9aa('0x25')],'authorization':_0x3cc154['authToken']};var _0x454c30={'method':_0xd9aa('0x3a'),'uri':_0xd9aa('0x42'),'body':_0x24e064,'json':!![]};rp(_0x454c30)[_0xd9aa('0x1a')](function(_0x19db76){var _0x1ca6b3={'messageId':_0x19db76['requestid']};if(!_0x3cc154[_0xd9aa('0x43')]){_0x1ca6b3[_0xd9aa('0x3e')]=!![];}return _0x4938b2['update'](_0x1ca6b3);})['catch'](function(_0x2e92b1){logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),'afterCreate','connectel',util[_0xd9aa('0x30')](_0x2e92b1,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x3f'),'Missing\x20parameters:\x20authToken');}break;case _0xd9aa('0x44'):if(_0x3cc154[_0xd9aa('0x33')]&&_0x3cc154[_0xd9aa('0x34')]){var _0x24e064={'messages':[{'source':'xCALLY\x20Motion','to':_0x19ae67[_0xd9aa('0x25')],'body':_0x19ae67[_0xd9aa('0x28')],'from':_0x3cc154[_0xd9aa('0x41')]||_0x3cc154[_0xd9aa('0x25')]}]};var _0x527b79=util[_0xd9aa('0x45')](_0xd9aa('0x46'),_0x3cc154['username'],_0x3cc154['password']);var _0x454c30={'method':'POST','uri':_0xd9aa('0x47'),'body':_0x24e064,'headers':{'Authorization':util[_0xd9aa('0x45')](_0xd9aa('0x48'),new Buffer(_0x527b79)[_0xd9aa('0x49')](_0xd9aa('0x4a')))},'json':!![]};rp(_0x454c30)[_0xd9aa('0x1a')](function(_0x274759){if(_0x274759['http_code']>=0xc8&&_0x274759['http_code']<=0xce){if(_0x274759['data']&&_0x274759[_0xd9aa('0x4b')][_0xd9aa('0x4c')]>0x0){var _0x2f9afa=_[_0xd9aa('0x4d')](_0x274759[_0xd9aa('0x4b')][_0xd9aa('0x26')]);var _0x472410={'messageId':_0x2f9afa['message_id']};if(!_0x3cc154[_0xd9aa('0x43')]){_0x472410[_0xd9aa('0x3e')]=!![];}return _0x4938b2['update'](_0x472410);}else{logger['error'](_0xd9aa('0x2e'),'afterCreate',_0xd9aa('0x4e'),util[_0xd9aa('0x30')](_0x274759,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x4e'),util[_0xd9aa('0x30')](_0x274759,{'showHidden':![],'depth':null}));}})[_0xd9aa('0x1d')](function(_0x135d2f){logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x4e'),util[_0xd9aa('0x30')](_0x135d2f,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x4e'),_0xd9aa('0x4f'));}break;case'plivo':if(_0x3cc154[_0xd9aa('0x50')]&&_0x3cc154[_0xd9aa('0x40')]){var _0x24e064={'dst':_0x19ae67['phone'],'text':_0x19ae67['body'],'src':_0x3cc154['senderString']||_0x3cc154['phone'],'url':_0x3cc154[_0xd9aa('0x29')]+'/api/sms/messages/'+_0x19ae67['id']+_0xd9aa('0x2b')+_0x3cc154[_0xd9aa('0x2c')]};var _0x527b79=util[_0xd9aa('0x45')](_0xd9aa('0x46'),_0x3cc154[_0xd9aa('0x50')],_0x3cc154[_0xd9aa('0x40')]);var _0x454c30={'method':'POST','uri':util[_0xd9aa('0x45')]('https://api.plivo.com/v1/Account/%s/Message/',_0x3cc154[_0xd9aa('0x50')]),'body':_0x24e064,'headers':{'Authorization':util['format'](_0xd9aa('0x48'),new Buffer(_0x527b79)[_0xd9aa('0x49')](_0xd9aa('0x4a')))},'json':!![]};rp(_0x454c30)['then'](function(_0x9634d7){var _0x55801f={'messageId':_0x9634d7[_0xd9aa('0x51')][0x0]};return _0x4938b2['update'](_0x55801f);})['catch'](function(_0x2955bb){logger['error'](_0xd9aa('0x2e'),'afterCreate','plivo',util['inspect'](_0x2955bb,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x52'),_0xd9aa('0x53'));}break;case _0xd9aa('0x54'):if(_0x3cc154[_0xd9aa('0x33')]&&_0x3cc154[_0xd9aa('0x34')]){if(_0x3cc154[_0xd9aa('0x55')]){var _0x52c9e8={'method':_0xd9aa('0x3a'),'uri':_0x3cc154[_0xd9aa('0x55')]+_0xd9aa('0x56'),'body':{'username':_0x3cc154['username'],'password':_0x3cc154[_0xd9aa('0x34')]},'json':!![]};return rp(_0x52c9e8)['then'](function(_0x2dec02){var _0x37ec1b={'method':_0xd9aa('0x3a'),'uri':_0x3cc154[_0xd9aa('0x55')]+_0xd9aa('0x57'),'body':{'messages':[{'from':_0x3cc154['phone'],'destinations':[{'to':_0x19ae67[_0xd9aa('0x25')]}],'text':_0x19ae67[_0xd9aa('0x28')],'notifyUrl':_0x3cc154[_0xd9aa('0x29')]+_0xd9aa('0x2a')+_0x19ae67['id']+_0xd9aa('0x2b')+_0x3cc154['token'],'notifyContentType':_0xd9aa('0x58'),'callbackData':_0x3cc154[_0xd9aa('0x25')]+';'+_0x19ae67[_0xd9aa('0x28')]}]},'headers':{'Authorization':_0xd9aa('0x59')+_0x2dec02[_0xd9aa('0x2c')]},'json':!![]};return rp(_0x37ec1b)[_0xd9aa('0x1a')](function(_0xc3c1d5){if(_0xc3c1d5[_0xd9aa('0x26')]){var _0xdffb1e={'messageId':_0xc3c1d5[_0xd9aa('0x26')][0x0][_0xd9aa('0xd')]};if(!_0x3cc154[_0xd9aa('0x43')]){_0xdffb1e['read']=!![];}return _0x4938b2[_0xd9aa('0x1b')](_0xdffb1e);}else{return logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x54'),util[_0xd9aa('0x30')](_0xc3c1d5,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x32c983){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd9aa('0x2f'),_0xd9aa('0x54'),util['inspect'](_0x32c983,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd9aa('0x2f'),_0xd9aa('0x54'),_0xd9aa('0x5a'));}}else{logger['error'](_0xd9aa('0x2e'),'afterCreate',_0xd9aa('0x54'),_0xd9aa('0x4f'));}break;case'csc':var _0x1549c6=require('crypto');if(_0x3cc154[_0xd9aa('0x5b')]){var _0x525455={};_0x525455[_0xd9aa('0x5c')]=_0x3cc154[_0xd9aa('0x33')];_0x525455[_0xd9aa('0x25')]=_0x19ae67['phone'];_0x525455['sender']=_0x3cc154['phone'];_0x525455[_0xd9aa('0x5d')]=_0x19ae67[_0xd9aa('0x28')];_0x525455[_0xd9aa('0x5e')]=+new Date();var _0x33bd48='';var _0x3b5027='';var _0xee3716=Object[_0xd9aa('0x5f')](_0x525455);_0xee3716['sort']();for(var _0x4c0f14=0x0;_0x4c0f14<_0xee3716[_0xd9aa('0x60')];_0x4c0f14++){if(_0x33bd48!=''){_0x33bd48+='&';}_0x33bd48+=_0xee3716[_0x4c0f14]+'='+encodeURIComponent(_0x525455[_0xee3716[_0x4c0f14]]);_0x3b5027+=_0x525455[_0xee3716[_0x4c0f14]];}_0x3b5027+=_0x3cc154[_0xd9aa('0x5b')];_0x3b5027=_0x1549c6[_0xd9aa('0x61')](_0xd9aa('0x62'))[_0xd9aa('0x1b')](_0x3b5027)[_0xd9aa('0x63')](_0xd9aa('0x64'));if(_0x33bd48!==''){_0x33bd48+='&';}_0x33bd48+=_0xd9aa('0x65')+_0x3b5027;var _0x176fe4={'method':_0xd9aa('0x38'),'uri':_0x3cc154['baseUrl']+_0xd9aa('0x66')+_0x33bd48,'json':!![]};return rp(_0x176fe4)[_0xd9aa('0x1a')](function(_0x47d8df){var _0x2d1d3f=Object[_0xd9aa('0x5f')](_0x47d8df);if(_0x47d8df[_0x2d1d3f[0x0]][_0xd9aa('0x1e')]&&parseInt(_0x47d8df[_0x2d1d3f[0x0]][_0xd9aa('0x1e')])===0x0){var _0x241943={'messageId':_0x47d8df[_0x2d1d3f[0x0]][_0xd9aa('0x67')]};if(!_0x3cc154[_0xd9aa('0x43')]){_0x241943[_0xd9aa('0x3e')]=!![];}return _0x4938b2[_0xd9aa('0x1b')](_0x241943);}else{return logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),'afterCreate','csc',util['inspect'](_0x47d8df['error'],{'showHidden':![],'depth':null}));}})[_0xd9aa('0x1d')](function(_0x5474be){return logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x68'),util['inspect'](_0x5474be,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd9aa('0x2f'),'csc',_0xd9aa('0x69'));}break;case'clickatell':if(_0x3cc154[_0xd9aa('0x5b')]){var _0x390952={'method':_0xd9aa('0x3a'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x3cc154[_0xd9aa('0x5b')]},'body':{'content':_0x19ae67[_0xd9aa('0x28')],'to':[_0x19ae67[_0xd9aa('0x25')]],'from':_0x3cc154[_0xd9aa('0x25')],'binary':![],'clientMessageId':_0xd9aa('0x6a'),'charset':_0xd9aa('0x6b')},'json':!![]};rp(_0x390952)[_0xd9aa('0x1a')](function(_0x3b1fd7){if(!_0x3b1fd7[_0xd9aa('0x1e')]){var _0x18a52b={'messageId':_0x3b1fd7[_0xd9aa('0x26')][0x0][_0xd9aa('0x6c')]};if(!_0x3cc154[_0xd9aa('0x43')]){_0x18a52b[_0xd9aa('0x3e')]=!![];}return _0x4938b2[_0xd9aa('0x1b')](_0x18a52b);}else{return logger['error'](_0xd9aa('0x2e'),'afterCreate',_0xd9aa('0x6d'),util[_0xd9aa('0x30')](_0x3b1fd7[_0xd9aa('0x1e')],{'showHidden':![],'depth':null}));}})[_0xd9aa('0x1d')](function(_0x13117a){return logger['error'](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x6d'),util[_0xd9aa('0x30')](_0x13117a,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x6d'),'Missing\x20parameters:\x20apiKey');}break;case _0xd9aa('0x6e'):if(_0x3cc154['username']&&_0x3cc154[_0xd9aa('0x34')]){var _0x527b79=util[_0xd9aa('0x45')](_0xd9aa('0x46'),_0x3cc154['username'],_0x3cc154[_0xd9aa('0x34')]);var _0x454c30={'method':'POST','uri':_0xd9aa('0x6f')+_0x3cc154[_0xd9aa('0x70')]+_0xd9aa('0x71'),'body':{'to':[_0x19ae67[_0xd9aa('0x25')]],'text':_0x19ae67[_0xd9aa('0x28')],'from':_0x3cc154[_0xd9aa('0x25')],'applicationId':_0x3cc154[_0xd9aa('0x72')]},'headers':{'Authorization':util[_0xd9aa('0x45')](_0xd9aa('0x48'),new Buffer(_0x527b79)[_0xd9aa('0x49')](_0xd9aa('0x4a')))},'json':!![]};rp(_0x454c30)[_0xd9aa('0x1a')](function(_0x19935b){if(_0x19935b['id']){var _0x35d9c9={'messageId':_0x19935b['id']};return _0x4938b2[_0xd9aa('0x1b')](_0x35d9c9);}else{logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),'bandwidth',util[_0xd9aa('0x30')](_0x19935b,{'showHidden':![],'depth':null}));}})['catch'](function(_0x30a7b3){logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x6e'),util[_0xd9aa('0x30')](_0x30a7b3,{'showHidden':![],'depth':null}));});}else{logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),'bandwidth','Missing\x20parameters:\x20username,\x20password');}break;case _0xd9aa('0x73'):if(_0x3cc154[_0xd9aa('0x5b')]){var _0x4ffc72={};var _0x176fe4={'method':_0xd9aa('0x3a'),'uri':_0xd9aa('0x74'),'headers':{'Authorization':_0xd9aa('0x75')+_0x3cc154[_0xd9aa('0x5b')],'Content-Type':_0xd9aa('0x58')},'body':{'from':_0x3cc154['phone'],'to':_0x19ae67[_0xd9aa('0x25')],'text':_0x19ae67[_0xd9aa('0x28')]},'json':!![]};return rp(_0x176fe4)[_0xd9aa('0x1a')](function(_0x24451f){if(_0x24451f['code']==0xca){_0x4ffc72['message']=_0x24451f;var _0x29d63e={'method':'POST','uri':_0xd9aa('0x76'),'headers':{'Authorization':_0xd9aa('0x75')+_0x3cc154['apiKey'],'Content-Type':_0xd9aa('0x58')},'body':{'refid':_0x4ffc72[_0xd9aa('0x77')][_0xd9aa('0x78')]},'json':!![]};return rp(_0x29d63e)['then'](function(_0x2edf54){_0x4ffc72[_0xd9aa('0x79')]=_0x2edf54;var _0x5c8c39={'messageId':_0x4ffc72[_0xd9aa('0x77')][_0xd9aa('0x78')],'read':!![]};return _0x4938b2[_0xd9aa('0x1b')](_0x5c8c39);});}else{return logger[_0xd9aa('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd9aa('0x2f'),_0xd9aa('0x73'),util[_0xd9aa('0x30')](_0x24451f,{'showHidden':![],'depth':null}));}})[_0xd9aa('0x1d')](function(_0x4ed6a2){return logger[_0xd9aa('0x1e')](_0xd9aa('0x2e'),_0xd9aa('0x2f'),_0xd9aa('0x73'),util[_0xd9aa('0x30')](_0x4ed6a2,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xd9aa('0x2e'),'afterCreate',_0xd9aa('0x73'),_0xd9aa('0x7a'));}break;}}})[_0xd9aa('0x7b')](function(){_0x2c5354();});}else{_0x2c5354();}}},'charset':_0xd9aa('0x7c'),'collate':_0xd9aa('0x7d')});};
\ No newline at end of file
index c8d533a..4146e70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b38=['result','catch','SmsMessage','create','options','raw','CreateSmsMessage','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','defaults','redis','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','message'];(function(_0xce33ec,_0x2a112a){var _0x2703f1=function(_0xf88315){while(--_0xf88315){_0xce33ec['push'](_0xce33ec['shift']());}};_0x2703f1(++_0x2a112a);}(_0x0b38,0xe1));var _0x80b3=function(_0x43b4df,_0x4a5227){_0x43b4df=_0x43b4df-0x0;var _0x5200db=_0x0b38[_0x43b4df];return _0x5200db;};'use strict';var _=require(_0x80b3('0x0'));var util=require(_0x80b3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x80b3('0x2'));var fs=require('fs');var Redis=require(_0x80b3('0x3'));var db=require(_0x80b3('0x4'))['db'];var utils=require(_0x80b3('0x5'));var logger=require('../../config/logger')(_0x80b3('0x6'));var config=require(_0x80b3('0x7'));var jayson=require(_0x80b3('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x80b3('0x9')](config[_0x80b3('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x80b3('0xb'))(new Redis(config[_0x80b3('0xa')]));require(_0x80b3('0xc'))[_0x80b3('0xd')](socket);function respondWithRpcPromise(_0xbcf710,_0x595b99,_0x50379a){return new BPromise(function(_0x492bc3,_0x574ca8){return client[_0x80b3('0xe')](_0xbcf710,_0x50379a)[_0x80b3('0xf')](function(_0x349908){logger[_0x80b3('0x10')](_0x80b3('0x11'),_0x595b99,'request\x20sent');logger[_0x80b3('0x12')](_0x80b3('0x13'),_0x595b99,_0x80b3('0x14'),JSON['stringify'](_0x349908));if(_0x349908[_0x80b3('0x15')]){if(_0x349908['error']['code']===0x1f4){logger['error'](_0x80b3('0x11'),_0x595b99,_0x349908['error'][_0x80b3('0x16')]);return _0x574ca8(_0x349908[_0x80b3('0x15')][_0x80b3('0x16')]);}logger[_0x80b3('0x15')](_0x80b3('0x11'),_0x595b99,_0x349908[_0x80b3('0x15')]['message']);return _0x492bc3(_0x349908[_0x80b3('0x15')]['message']);}else{logger[_0x80b3('0x10')](_0x80b3('0x11'),_0x595b99,'request\x20sent');_0x492bc3(_0x349908[_0x80b3('0x17')][_0x80b3('0x16')]);}})[_0x80b3('0x18')](function(_0x4ec5bc){logger[_0x80b3('0x15')](_0x80b3('0x11'),_0x595b99,_0x4ec5bc);_0x574ca8(_0x4ec5bc);});});}exports['CreateSmsMessage']=function(_0x2a837f){var _0xfc3417=this;return new Promise(function(_0x7929f1,_0x162b8d){return db[_0x80b3('0x19')][_0x80b3('0x1a')](_0x2a837f['body'],{'raw':_0x2a837f[_0x80b3('0x1b')]?_0x2a837f['options'][_0x80b3('0x1c')]===undefined?!![]:![]:!![]})[_0x80b3('0xf')](function(_0x9a47ed){logger[_0x80b3('0x10')](_0x80b3('0x1d'),_0x2a837f);logger['debug'](_0x80b3('0x1d'),_0x2a837f,JSON[_0x80b3('0x1e')](_0x9a47ed));_0x7929f1(_0x9a47ed);})[_0x80b3('0x18')](function(_0x515e59){logger[_0x80b3('0x15')](_0x80b3('0x1d'),_0x515e59[_0x80b3('0x16')],_0x2a837f);_0x162b8d(_0xfc3417['error'](0x1f4,_0x515e59[_0x80b3('0x16')]));});});};
\ No newline at end of file
+var _0x6f6c=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','SmsMessage','options','CreateSmsMessage','lodash','bluebird','randomstring'];(function(_0x387744,_0x305a98){var _0x5d7c36=function(_0x9e9760){while(--_0x9e9760){_0x387744['push'](_0x387744['shift']());}};_0x5d7c36(++_0x305a98);}(_0x6f6c,0x1bf));var _0xc6f6=function(_0x5975b9,_0x27f2f1){_0x5975b9=_0x5975b9-0x0;var _0x2890a7=_0x6f6c[_0x5975b9];return _0x2890a7;};'use strict';var _=require(_0xc6f6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc6f6('0x1'));var rs=require(_0xc6f6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc6f6('0x3'))['db'];var utils=require(_0xc6f6('0x4'));var logger=require('../../config/logger')(_0xc6f6('0x5'));var config=require(_0xc6f6('0x6'));var jayson=require(_0xc6f6('0x7'));var client=jayson[_0xc6f6('0x8')]['http']({'port':0x232a});config[_0xc6f6('0x9')]=_[_0xc6f6('0xa')](config[_0xc6f6('0x9')],{'host':_0xc6f6('0xb'),'port':0x18eb});var socket=require(_0xc6f6('0xc'))(new Redis(config[_0xc6f6('0x9')]));require(_0xc6f6('0xd'))[_0xc6f6('0xe')](socket);function respondWithRpcPromise(_0x2a4095,_0x134b61,_0xbbfd61){return new BPromise(function(_0x3259b4,_0x451afb){return client[_0xc6f6('0xf')](_0x2a4095,_0xbbfd61)[_0xc6f6('0x10')](function(_0x286f3f){logger[_0xc6f6('0x11')](_0xc6f6('0x12'),_0x134b61,_0xc6f6('0x13'));logger[_0xc6f6('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x134b61,_0xc6f6('0x13'),JSON[_0xc6f6('0x15')](_0x286f3f));if(_0x286f3f['error']){if(_0x286f3f[_0xc6f6('0x16')][_0xc6f6('0x17')]===0x1f4){logger[_0xc6f6('0x16')](_0xc6f6('0x12'),_0x134b61,_0x286f3f[_0xc6f6('0x16')][_0xc6f6('0x18')]);return _0x451afb(_0x286f3f[_0xc6f6('0x16')][_0xc6f6('0x18')]);}logger[_0xc6f6('0x16')](_0xc6f6('0x12'),_0x134b61,_0x286f3f[_0xc6f6('0x16')][_0xc6f6('0x18')]);return _0x3259b4(_0x286f3f[_0xc6f6('0x16')][_0xc6f6('0x18')]);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x134b61,_0xc6f6('0x13'));_0x3259b4(_0x286f3f[_0xc6f6('0x19')][_0xc6f6('0x18')]);}})[_0xc6f6('0x1a')](function(_0x535527){logger[_0xc6f6('0x16')](_0xc6f6('0x12'),_0x134b61,_0x535527);_0x451afb(_0x535527);});});}exports['CreateSmsMessage']=function(_0x1d29a4){var _0x5f1a94=this;return new Promise(function(_0x670ce8,_0x4b1f6f){return db[_0xc6f6('0x1b')]['create'](_0x1d29a4['body'],{'raw':_0x1d29a4[_0xc6f6('0x1c')]?_0x1d29a4[_0xc6f6('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xc6f6('0x10')](function(_0x3cc4fe){logger[_0xc6f6('0x11')](_0xc6f6('0x1d'),_0x1d29a4);logger[_0xc6f6('0x14')](_0xc6f6('0x1d'),_0x1d29a4,JSON[_0xc6f6('0x15')](_0x3cc4fe));_0x670ce8(_0x3cc4fe);})[_0xc6f6('0x1a')](function(_0x4ceeee){logger[_0xc6f6('0x16')](_0xc6f6('0x1d'),_0x4ceeee['message'],_0x1d29a4);_0x4b1f6f(_0x5f1a94[_0xc6f6('0x16')](0x1f4,_0x4ceeee[_0xc6f6('0x18')]));});});};
\ No newline at end of file
index b0a2950..31f64f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ff=['register','smsMessage:','remove','update','removeListener'];(function(_0x2944a4,_0x21a845){var _0x46476e=function(_0x16e105){while(--_0x16e105){_0x2944a4['push'](_0x2944a4['shift']());}};_0x46476e(++_0x21a845);}(_0xf8ff,0x84));var _0xff8f=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xf8ff[_0x411add];return _0x238242;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=['save',_0xff8f('0x0'),_0xff8f('0x1')];function createListener(_0x3d9d68,_0x3f1605){return function(_0x280a7a){_0x3f1605['emit'](_0x3d9d68,_0x280a7a);};}function removeListener(_0x459809,_0x4a02f5){return function(){SmsMessageEvents[_0xff8f('0x2')](_0x459809,_0x4a02f5);};}exports[_0xff8f('0x3')]=function(_0x5375e2){for(var _0x277bb4=0x0,_0xabfd18=events['length'];_0x277bb4<_0xabfd18;_0x277bb4++){var _0x479248=events[_0x277bb4];var _0x3035b3=createListener(_0xff8f('0x4')+_0x479248,_0x5375e2);SmsMessageEvents['on'](_0x479248,_0x3035b3);}};
\ No newline at end of file
+var _0x3ceb=['removeListener','register','length','smsMessage:','./smsMessage.events','save','remove','update','emit'];(function(_0xe6b93f,_0x2978da){var _0x3e8287=function(_0x358373){while(--_0x358373){_0xe6b93f['push'](_0xe6b93f['shift']());}};_0x3e8287(++_0x2978da);}(_0x3ceb,0xee));var _0xb3ce=function(_0x2530f0,_0x9c4d47){_0x2530f0=_0x2530f0-0x0;var _0x647e48=_0x3ceb[_0x2530f0];return _0x647e48;};'use strict';var SmsMessageEvents=require(_0xb3ce('0x0'));var events=[_0xb3ce('0x1'),_0xb3ce('0x2'),_0xb3ce('0x3')];function createListener(_0x3c083a,_0x286d19){return function(_0x40ac19){_0x286d19[_0xb3ce('0x4')](_0x3c083a,_0x40ac19);};}function removeListener(_0x401399,_0x3b402f){return function(){SmsMessageEvents[_0xb3ce('0x5')](_0x401399,_0x3b402f);};}exports[_0xb3ce('0x6')]=function(_0x59b849){for(var _0xf67316=0x0,_0x2dd8b2=events[_0xb3ce('0x7')];_0xf67316<_0x2dd8b2;_0xf67316++){var _0x3851c9=events[_0xf67316];var _0x4a472c=createListener(_0xb3ce('0x8')+_0x3851c9,_0x59b849);SmsMessageEvents['on'](_0x3851c9,_0x4a472c);}};
\ No newline at end of file
index 0b849bc..27ce432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03de=['addAgents','put','update','delete','destroy','removeTeams','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsQueue.controller','isAuthenticated','get','describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post'];(function(_0x4bd566,_0x55efb3){var _0x36f04f=function(_0x5f0efe){while(--_0x5f0efe){_0x4bd566['push'](_0x4bd566['shift']());}};_0x36f04f(++_0x55efb3);}(_0x03de,0xe7));var _0xe03d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03de[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xe03d('0x0'));var util=require('util');var path=require(_0xe03d('0x1'));var timeout=require(_0xe03d('0x2'));var express=require(_0xe03d('0x3'));var router=express[_0xe03d('0x4')]();var fs_extra=require(_0xe03d('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe03d('0x6'));var controller=require(_0xe03d('0x7'));router['get']('/',auth[_0xe03d('0x8')](),controller['index']);router[_0xe03d('0x9')]('/describe',auth[_0xe03d('0x8')](),controller[_0xe03d('0xa')]);router['get'](_0xe03d('0xb'),auth[_0xe03d('0x8')](),controller[_0xe03d('0xc')]);router[_0xe03d('0x9')](_0xe03d('0xd'),auth[_0xe03d('0x8')](),controller['getMembers']);router[_0xe03d('0x9')](_0xe03d('0xe'),auth[_0xe03d('0x8')](),controller[_0xe03d('0xf')]);router[_0xe03d('0x9')](_0xe03d('0x10'),auth[_0xe03d('0x8')](),controller[_0xe03d('0x11')]);router[_0xe03d('0x12')]('/',auth[_0xe03d('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xe03d('0x8')](),controller['addTeams']);router[_0xe03d('0x12')](_0xe03d('0x10'),auth[_0xe03d('0x8')](),controller[_0xe03d('0x13')]);router[_0xe03d('0x14')](_0xe03d('0xb'),auth[_0xe03d('0x8')](),controller[_0xe03d('0x15')]);router[_0xe03d('0x16')]('/:id',auth[_0xe03d('0x8')](),controller[_0xe03d('0x17')]);router[_0xe03d('0x16')](_0xe03d('0xe'),auth['isAuthenticated'](),controller[_0xe03d('0x18')]);router[_0xe03d('0x16')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x2efc=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','/:id','destroy','removeTeams','multer','util','path','express'];(function(_0x4aaa1b,_0x2c02fe){var _0xdb6037=function(_0x1f963e){while(--_0x1f963e){_0x4aaa1b['push'](_0x4aaa1b['shift']());}};_0xdb6037(++_0x2c02fe);}(_0x2efc,0x114));var _0xc2ef=function(_0x42bb6d,_0x412255){_0x42bb6d=_0x42bb6d-0x0;var _0x1db89b=_0x2efc[_0x42bb6d];return _0x1db89b;};'use strict';var multer=require(_0xc2ef('0x0'));var util=require(_0xc2ef('0x1'));var path=require(_0xc2ef('0x2'));var timeout=require('connect-timeout');var express=require(_0xc2ef('0x3'));var router=express['Router']();var fs_extra=require(_0xc2ef('0x4'));var auth=require(_0xc2ef('0x5'));var interaction=require(_0xc2ef('0x6'));var config=require(_0xc2ef('0x7'));var controller=require('./smsQueue.controller');router[_0xc2ef('0x8')]('/',auth[_0xc2ef('0x9')](),controller[_0xc2ef('0xa')]);router[_0xc2ef('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xc2ef('0xb')]);router[_0xc2ef('0x8')]('/:id',auth[_0xc2ef('0x9')](),controller[_0xc2ef('0xc')]);router[_0xc2ef('0x8')](_0xc2ef('0xd'),auth['isAuthenticated'](),controller[_0xc2ef('0xe')]);router['get'](_0xc2ef('0xf'),auth['isAuthenticated'](),controller[_0xc2ef('0x10')]);router['get'](_0xc2ef('0x11'),auth['isAuthenticated'](),controller[_0xc2ef('0x12')]);router[_0xc2ef('0x13')]('/',auth['isAuthenticated'](),controller[_0xc2ef('0x14')]);router[_0xc2ef('0x13')](_0xc2ef('0xf'),auth[_0xc2ef('0x9')](),controller[_0xc2ef('0x15')]);router[_0xc2ef('0x13')](_0xc2ef('0x11'),auth[_0xc2ef('0x9')](),controller['addAgents']);router[_0xc2ef('0x16')]('/:id',auth[_0xc2ef('0x9')](),controller[_0xc2ef('0x17')]);router[_0xc2ef('0x18')](_0xc2ef('0x19'),auth[_0xc2ef('0x9')](),controller[_0xc2ef('0x1a')]);router['delete'](_0xc2ef('0xf'),auth['isAuthenticated'](),controller[_0xc2ef('0x1b')]);router[_0xc2ef('0x18')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index e72a1fc..152d630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6fb=['sequelize','name','STRING','INTEGER','rrmemory','beepall'];(function(_0x1d9ea3,_0x2b706a){var _0x2039a0=function(_0xf540dd){while(--_0xf540dd){_0x1d9ea3['push'](_0x1d9ea3['shift']());}};_0x2039a0(++_0x2b706a);}(_0xd6fb,0x10e));var _0xbd6f=function(_0x532acb,_0x46fdda){_0x532acb=_0x532acb-0x0;var _0xd8d16f=_0xd6fb[_0x532acb];return _0xd8d16f;};'use strict';var Sequelize=require(_0xbd6f('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xbd6f('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xbd6f('0x2')]},'timeout':{'type':Sequelize[_0xbd6f('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xbd6f('0x4'),_0xbd6f('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0xb353=['roundrobin','STRING','ENUM','rrmemory','beepall'];(function(_0x27c8ab,_0x36a969){var _0x4dc031=function(_0x1735ee){while(--_0x1735ee){_0x27c8ab['push'](_0x27c8ab['shift']());}};_0x4dc031(++_0x36a969);}(_0xb353,0x97));var _0x3b35=function(_0x19305c,_0x1b93db){_0x19305c=_0x19305c-0x0;var _0x3a0ed9=_0xb353[_0x19305c];return _0x3a0ed9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3b35('0x0')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3b35('0x0')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x3b35('0x1')](_0x3b35('0x2'),_0x3b35('0x3'),_0x3b35('0x4'))}};
\ No newline at end of file
index 9fe16f7..4bc343e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x528e=['getTeams','Team','ids','Agents','online','voicePause','interface','sequelize','transaction','addTeams','each','forEach','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','push','toString','SELECT','TeamId','all','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','reject','save','destroy','get','SmsQueues','UserProfileResource','then','error','stack','send','index','map','SmsQueue','rawAttributes','fieldName','type','name','keys','intersection','model','query','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','findAll','rows','show','params','include','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','getMembers','UserSmsQueue','hasOwnProperty','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP'];(function(_0xd43aed,_0x556f54){var _0x4aa694=function(_0x56817d){while(--_0x56817d){_0xd43aed['push'](_0xd43aed['shift']());}};_0x4aa694(++_0x556f54);}(_0x528e,0x1d2));var _0xe528=function(_0x5e83f8,_0x33d0a0){_0x5e83f8=_0x5e83f8-0x0;var _0x5b687a=_0x528e[_0x5e83f8];return _0x5b687a;};'use strict';var emlformat=require(_0xe528('0x0'));var rimraf=require(_0xe528('0x1'));var zipdir=require(_0xe528('0x2'));var jsonpatch=require(_0xe528('0x3'));var rp=require(_0xe528('0x4'));var moment=require(_0xe528('0x5'));var BPromise=require(_0xe528('0x6'));var Mustache=require(_0xe528('0x7'));var util=require(_0xe528('0x8'));var path=require(_0xe528('0x9'));var sox=require('sox');var csv=require(_0xe528('0xa'));var ejs=require(_0xe528('0xb'));var fs=require('fs');var fs_extra=require(_0xe528('0xc'));var _=require(_0xe528('0xd'));var squel=require('squel');var crypto=require(_0xe528('0xe'));var jsforce=require(_0xe528('0xf'));var deskjs=require(_0xe528('0x10'));var toCsv=require(_0xe528('0xa'));var querystring=require(_0xe528('0x11'));var Papa=require(_0xe528('0x12'));var Redis=require(_0xe528('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe528('0x14'));var hardwareService=require(_0xe528('0x15'));var logger=require(_0xe528('0x16'))(_0xe528('0x17'));var utils=require(_0xe528('0x18'));var config=require(_0xe528('0x19'));var licenseUtil=require(_0xe528('0x1a'));var db=require('../../mysqldb')['db'];config[_0xe528('0x1b')]=_[_0xe528('0x1c')](config[_0xe528('0x1b')],{'host':_0xe528('0x1d'),'port':0x18eb});var socket=require(_0xe528('0x1e'))(new Redis(config[_0xe528('0x1b')]));require(_0xe528('0x1f'))[_0xe528('0x20')](socket);function respondWithStatusCode(_0x474e5b,_0x59b4b6){_0x59b4b6=_0x59b4b6||0xcc;return function(_0xad291b){if(_0xad291b){return _0x474e5b[_0xe528('0x21')](_0x59b4b6);}return _0x474e5b[_0xe528('0x22')](_0x59b4b6)['end']();};}function respondWithResult(_0x2a5987,_0x224692){_0x224692=_0x224692||0xc8;return function(_0x1c0109){if(_0x1c0109){return _0x2a5987[_0xe528('0x22')](_0x224692)['json'](_0x1c0109);}};}function respondWithFilteredResult(_0x4ac3b9,_0x24b472){return function(_0x46bae3){if(_0x46bae3){var _0x37c37f=typeof _0x24b472['offset']===_0xe528('0x23')&&typeof _0x24b472[_0xe528('0x24')]===_0xe528('0x23');var _0x537fef=_0x46bae3['count'];var _0x15f609=_0x37c37f?0x0:_0x24b472[_0xe528('0x25')];var _0x28450f=_0x37c37f?_0x46bae3[_0xe528('0x26')]:_0x24b472[_0xe528('0x25')]+_0x24b472[_0xe528('0x24')];var _0x3b3ce6;if(_0x28450f>=_0x537fef){_0x28450f=_0x537fef;_0x3b3ce6=0xc8;}else{_0x3b3ce6=0xce;}_0x4ac3b9[_0xe528('0x22')](_0x3b3ce6);return _0x4ac3b9[_0xe528('0x27')](_0xe528('0x28'),_0x15f609+'-'+_0x28450f+'/'+_0x537fef)[_0xe528('0x29')](_0x46bae3);}return null;};}function patchUpdates(_0x1affe9){return function(_0x35fc10){try{jsonpatch['apply'](_0x35fc10,_0x1affe9,!![]);}catch(_0x192c1d){return BPromise[_0xe528('0x2a')](_0x192c1d);}return _0x35fc10[_0xe528('0x2b')]();};}function saveUpdates(_0x5982e2,_0xf7d31d){return function(_0x48b204){if(_0x48b204){return _0x48b204['update'](_0x5982e2)['then'](function(_0x420855){return _0x420855;});}return null;};}function removeEntity(_0x1b5cc6,_0xe444b0){return function(_0x351dc9){if(_0x351dc9){return _0x351dc9[_0xe528('0x2c')]()['then'](function(){var _0x10dd55=_0x351dc9[_0xe528('0x2d')]({'plain':!![]});var _0x4d0541=_0xe528('0x2e');return db[_0xe528('0x2f')]['destroy']({'where':{'type':_0x4d0541,'resourceId':_0x10dd55['id']}})['then'](function(){return _0x351dc9;});})[_0xe528('0x30')](function(){_0x1b5cc6[_0xe528('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fb96d,_0x4aaf55){return function(_0x51c047){if(!_0x51c047){_0x3fb96d[_0xe528('0x21')](0x194);}return _0x51c047;};}function handleError(_0x2dc1fa,_0x2cfa19){_0x2cfa19=_0x2cfa19||0x1f4;return function(_0x17f85e){logger[_0xe528('0x31')](_0x17f85e[_0xe528('0x32')]);if(_0x17f85e['name']){delete _0x17f85e['name'];}_0x2dc1fa['status'](_0x2cfa19)[_0xe528('0x33')](_0x17f85e);};}exports[_0xe528('0x34')]=function(_0x4fd987,_0x55c966){var _0x68e21f={},_0x49efcb={},_0x22bee6={'count':0x0,'rows':[]};var _0x556bad=_[_0xe528('0x35')](db[_0xe528('0x36')][_0xe528('0x37')],function(_0x360461){return{'name':_0x360461[_0xe528('0x38')],'type':_0x360461[_0xe528('0x39')]['key']};});_0x49efcb['model']=_['map'](_0x556bad,_0xe528('0x3a'));_0x49efcb['query']=_[_0xe528('0x3b')](_0x4fd987['query']);_0x49efcb['filters']=_[_0xe528('0x3c')](_0x49efcb[_0xe528('0x3d')],_0x49efcb['query']);_0x68e21f['attributes']=_[_0xe528('0x3c')](_0x49efcb[_0xe528('0x3d')],qs['fields'](_0x4fd987[_0xe528('0x3e')][_0xe528('0x3f')]));_0x68e21f[_0xe528('0x40')]=_0x68e21f['attributes'][_0xe528('0x41')]?_0x68e21f['attributes']:_0x49efcb[_0xe528('0x3d')];if(!_0x4fd987[_0xe528('0x3e')]['hasOwnProperty'](_0xe528('0x42'))){_0x68e21f[_0xe528('0x24')]=qs[_0xe528('0x24')](_0x4fd987[_0xe528('0x3e')][_0xe528('0x24')]);_0x68e21f['offset']=qs[_0xe528('0x25')](_0x4fd987[_0xe528('0x3e')][_0xe528('0x25')]);}_0x68e21f[_0xe528('0x43')]=qs['sort'](_0x4fd987[_0xe528('0x3e')][_0xe528('0x44')]);_0x68e21f[_0xe528('0x45')]=qs[_0xe528('0x46')](_[_0xe528('0x47')](_0x4fd987[_0xe528('0x3e')],_0x49efcb[_0xe528('0x46')]),_0x556bad);if(_0x4fd987['query'][_0xe528('0x48')]){_0x68e21f[_0xe528('0x45')]=_[_0xe528('0x49')](_0x68e21f[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x556bad,function(_0x1a4891){if(_0x1a4891[_0xe528('0x39')]!=='VIRTUAL'){var _0x39dd3e={};_0x39dd3e[_0x1a4891[_0xe528('0x3a')]]={'$like':'%'+_0x4fd987['query'][_0xe528('0x48')]+'%'};return _0x39dd3e;}})});}_0x68e21f=_[_0xe528('0x49')]({},_0x68e21f,_0x4fd987['options']);var _0x59da60={'where':_0x68e21f['where']};return db[_0xe528('0x36')][_0xe528('0x26')](_0x59da60)['then'](function(_0x534436){_0x22bee6[_0xe528('0x26')]=_0x534436;if(_0x4fd987[_0xe528('0x3e')][_0xe528('0x4a')]){_0x68e21f['include']=[{'all':!![]}];}return db[_0xe528('0x36')][_0xe528('0x4b')](_0x68e21f);})[_0xe528('0x30')](function(_0x38e0a3){_0x22bee6[_0xe528('0x4c')]=_0x38e0a3;return _0x22bee6;})[_0xe528('0x30')](respondWithFilteredResult(_0x55c966,_0x68e21f))['catch'](handleError(_0x55c966,null));};exports[_0xe528('0x4d')]=function(_0x419f4d,_0x2748ed){var _0x2054bb={'raw':!![],'where':{'id':_0x419f4d[_0xe528('0x4e')]['id']}},_0xcc2e83={};_0xcc2e83['model']=_[_0xe528('0x3b')](db[_0xe528('0x36')]['rawAttributes']);_0xcc2e83[_0xe528('0x3e')]=_[_0xe528('0x3b')](_0x419f4d[_0xe528('0x3e')]);_0xcc2e83[_0xe528('0x46')]=_[_0xe528('0x3c')](_0xcc2e83[_0xe528('0x3d')],_0xcc2e83['query']);_0x2054bb[_0xe528('0x40')]=_[_0xe528('0x3c')](_0xcc2e83[_0xe528('0x3d')],qs[_0xe528('0x3f')](_0x419f4d[_0xe528('0x3e')][_0xe528('0x3f')]));_0x2054bb[_0xe528('0x40')]=_0x2054bb['attributes'][_0xe528('0x41')]?_0x2054bb[_0xe528('0x40')]:_0xcc2e83[_0xe528('0x3d')];if(_0x419f4d[_0xe528('0x3e')][_0xe528('0x4a')]){_0x2054bb[_0xe528('0x4f')]=[{'all':!![]}];}_0x2054bb=_[_0xe528('0x49')]({},_0x2054bb,_0x419f4d[_0xe528('0x50')]);return db['SmsQueue'][_0xe528('0x51')](_0x2054bb)[_0xe528('0x30')](handleEntityNotFound(_0x2748ed,null))[_0xe528('0x30')](respondWithResult(_0x2748ed,null))[_0xe528('0x52')](handleError(_0x2748ed,null));};exports[_0xe528('0x53')]=function(_0x4e0732,_0x533cd1){return db[_0xe528('0x36')][_0xe528('0x53')](_0x4e0732['body'],{})[_0xe528('0x30')](function(_0x363035){var _0x5e96bc=_0x4e0732['user']['get']({'plain':!![]});if(!_0x5e96bc)throw new Error(_0xe528('0x54'));if(_0x5e96bc[_0xe528('0x55')]===_0xe528('0x56')){var _0x3148bd=_0x363035[_0xe528('0x2d')]({'plain':!![]});var _0x2dd641=_0xe528('0x2e');return db[_0xe528('0x57')][_0xe528('0x51')]({'where':{'name':_0x2dd641,'userProfileId':_0x5e96bc['userProfileId']},'raw':!![]})[_0xe528('0x30')](function(_0x4d27fb){if(_0x4d27fb&&_0x4d27fb[_0xe528('0x58')]===0x0){return db[_0xe528('0x2f')][_0xe528('0x53')]({'name':_0x3148bd[_0xe528('0x3a')],'resourceId':_0x3148bd['id'],'type':_0x4d27fb['name'],'sectionId':_0x4d27fb['id']},{})[_0xe528('0x30')](function(){return _0x363035;});}else{return _0x363035;}})[_0xe528('0x52')](function(_0x3b7b4d){logger[_0xe528('0x31')](_0xe528('0x59'),_0x3b7b4d);throw _0x3b7b4d;});}return _0x363035;})['then'](respondWithResult(_0x533cd1,0xc9))['catch'](handleError(_0x533cd1,null));};exports[_0xe528('0x5a')]=function(_0x364db8,_0x5b74ea){if(_0x364db8['body']['id']){delete _0x364db8[_0xe528('0x5b')]['id'];}return db['SmsQueue'][_0xe528('0x51')]({'where':{'id':_0x364db8[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x5b74ea,null))[_0xe528('0x30')](saveUpdates(_0x364db8[_0xe528('0x5b')],null))[_0xe528('0x30')](respondWithResult(_0x5b74ea,null))['catch'](handleError(_0x5b74ea,null));};exports[_0xe528('0x2c')]=function(_0x869c18,_0x363f60){return db[_0xe528('0x36')][_0xe528('0x51')]({'where':{'id':_0x869c18[_0xe528('0x4e')]['id']}})['then'](handleEntityNotFound(_0x363f60,null))[_0xe528('0x30')](removeEntity(_0x363f60,null))[_0xe528('0x52')](handleError(_0x363f60,null));};exports['describe']=function(_0x1afd40,_0x59d2cc){return db[_0xe528('0x36')]['describe']()['then'](respondWithResult(_0x59d2cc,null))['catch'](handleError(_0x59d2cc,null));};exports[_0xe528('0x5c')]=function(_0xb111b6,_0x26ee4a,_0x4f2170){var _0x51576b={'raw':!![],'where':{}},_0x3a37ba={},_0x443f97;return db['SmsQueue']['findOne']({'where':{'id':_0xb111b6[_0xe528('0x4e')]['id']}})['then'](handleEntityNotFound(_0x26ee4a,null))[_0xe528('0x30')](function(_0x1130f2){if(_0x1130f2){_0x443f97=_0x1130f2[_0xe528('0x2d')]({'plain':!![]});_0x3a37ba[_0xe528('0x3d')]=_['keys'](db[_0xe528('0x5d')]['rawAttributes']);_0x3a37ba[_0xe528('0x3e')]=_[_0xe528('0x3b')](_0xb111b6['query']);_0x3a37ba[_0xe528('0x46')]=_[_0xe528('0x3c')](_0x3a37ba['model'],_0x3a37ba[_0xe528('0x3e')]);_0x51576b['attributes']=_[_0xe528('0x3c')](_0x3a37ba[_0xe528('0x3d')],qs[_0xe528('0x3f')](_0xb111b6[_0xe528('0x3e')][_0xe528('0x3f')]));_0x51576b[_0xe528('0x40')]=_0x51576b[_0xe528('0x40')][_0xe528('0x41')]?_0x51576b[_0xe528('0x40')]:_0x3a37ba['model'];if(!_0xb111b6[_0xe528('0x3e')][_0xe528('0x5e')]('nolimit')){_0x51576b[_0xe528('0x24')]=qs['limit'](_0xb111b6[_0xe528('0x3e')]['limit']);_0x51576b['offset']=qs[_0xe528('0x25')](_0xb111b6[_0xe528('0x3e')][_0xe528('0x25')]);}_0x51576b[_0xe528('0x43')]=qs[_0xe528('0x44')](_0xb111b6[_0xe528('0x3e')][_0xe528('0x44')]);_0x51576b[_0xe528('0x45')]=qs[_0xe528('0x46')](_[_0xe528('0x47')](_0xb111b6[_0xe528('0x3e')],_0x3a37ba[_0xe528('0x46')]));_0x51576b['where'][_0xe528('0x5f')]=_0x1130f2['id'];if(_0xb111b6[_0xe528('0x3e')]['filter']){_0x51576b[_0xe528('0x45')]=_['merge'](_0x51576b[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x51576b[_0xe528('0x40')],function(_0x1f1a25){var _0x5b23b5={};_0x5b23b5[_0x1f1a25]={'$like':'%'+_0xb111b6[_0xe528('0x3e')][_0xe528('0x48')]+'%'};return _0x5b23b5;})});}_0x51576b=_[_0xe528('0x49')]({},_0x51576b,_0xb111b6['options']);return db[_0xe528('0x5d')][_0xe528('0x4b')](_0x51576b);}})[_0xe528('0x30')](function(_0x49601d){if(_0x49601d){return db[_0xe528('0x60')][_0xe528('0x61')]({'where':{'id':_[_0xe528('0x35')](_0x49601d,_0xe528('0x62')),'role':_0xe528('0x63')},'attributes':['id',_0xe528('0x3a'),_0xe528('0x64'),_0xe528('0x65'),_0xe528('0x66')]});}})[_0xe528('0x30')](function(_0xf833a8){if(_0xf833a8){return{'count':_0xf833a8[_0xe528('0x26')],'rows':_[_0xe528('0x35')](_0xf833a8[_0xe528('0x4c')],function(_0xcaf4ae){return{'membername':_0xcaf4ae[_0xe528('0x3a')],'UserId':_0xcaf4ae['id'],'queue_name':_0x443f97[_0xe528('0x3a')],'SmsQueueId':_0x443f97['id'],'interface':util[_0xe528('0x67')](_0xe528('0x68'),_0xe528('0x69'),_0xcaf4ae[_0xe528('0x3a')]),'penalty':0x0,'paused':_0xcaf4ae['smsPause'],'createdAt':_0xcaf4ae[_0xe528('0x66')],'updatedAt':_0xcaf4ae[_0xe528('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe528('0x30')](respondWithFilteredResult(_0x26ee4a,_0x51576b))[_0xe528('0x52')](handleError(_0x26ee4a,null));};exports[_0xe528('0x6a')]=function(_0x16234c,_0x2832fa,_0x1fb04a){var _0x1c9998={};var _0x1e906a={};var _0x142239;var _0x882171;return db['SmsQueue']['findOne']({'where':{'id':_0x16234c[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x2832fa,null))[_0xe528('0x30')](function(_0xcee740){if(_0xcee740){_0x142239=_0xcee740;_0x1e906a[_0xe528('0x3d')]=_[_0xe528('0x3b')](db[_0xe528('0x6b')]['rawAttributes']);_0x1e906a['query']=_[_0xe528('0x3b')](_0x16234c['query']);_0x1e906a[_0xe528('0x46')]=_[_0xe528('0x3c')](_0x1e906a[_0xe528('0x3d')],_0x1e906a[_0xe528('0x3e')]);_0x1c9998[_0xe528('0x40')]=_[_0xe528('0x3c')](_0x1e906a[_0xe528('0x3d')],qs[_0xe528('0x3f')](_0x16234c[_0xe528('0x3e')][_0xe528('0x3f')]));_0x1c9998[_0xe528('0x40')]=_0x1c9998[_0xe528('0x40')][_0xe528('0x41')]?_0x1c9998['attributes']:_0x1e906a[_0xe528('0x3d')];_0x1c9998[_0xe528('0x43')]=qs['sort'](_0x16234c[_0xe528('0x3e')][_0xe528('0x44')]);_0x1c9998[_0xe528('0x45')]=qs['filters'](_[_0xe528('0x47')](_0x16234c[_0xe528('0x3e')],_0x1e906a[_0xe528('0x46')]));if(_0x16234c[_0xe528('0x3e')][_0xe528('0x48')]){_0x1c9998[_0xe528('0x45')]=_['merge'](_0x1c9998[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x1c9998[_0xe528('0x40')],function(_0x3b3286){var _0x67c842={};_0x67c842[_0x3b3286]={'$like':'%'+_0x16234c[_0xe528('0x3e')][_0xe528('0x48')]+'%'};return _0x67c842;})});}_0x1c9998=_[_0xe528('0x49')]({},_0x1c9998,_0x16234c['options']);return _0x142239[_0xe528('0x6a')](_0x1c9998);}})[_0xe528('0x30')](function(_0x3cdeb3){if(_0x3cdeb3){_0x882171=_0x3cdeb3[_0xe528('0x41')];if(!_0x16234c['query']['hasOwnProperty']('nolimit')){_0x1c9998[_0xe528('0x24')]=qs[_0xe528('0x24')](_0x16234c[_0xe528('0x3e')][_0xe528('0x24')]);_0x1c9998[_0xe528('0x25')]=qs[_0xe528('0x25')](_0x16234c[_0xe528('0x3e')][_0xe528('0x25')]);}return _0x142239[_0xe528('0x6a')](_0x1c9998);}})['then'](function(_0x50c3d9){if(_0x50c3d9){return _0x50c3d9?{'count':_0x882171,'rows':_0x50c3d9}:null;}})[_0xe528('0x30')](respondWithResult(_0x2832fa,null))[_0xe528('0x52')](handleError(_0x2832fa,null));};exports['addTeams']=function(_0x109802,_0xd995df,_0x4d9c28){var _0x54183b=_0x109802['body'][_0xe528('0x6c')];return db[_0xe528('0x6b')][_0xe528('0x4b')]({'where':{'id':_0x54183b},'attributes':['id'],'include':[{'model':db[_0xe528('0x60')],'as':_0xe528('0x6d'),'attributes':['id',_0xe528('0x3a'),_0xe528('0x6e'),_0xe528('0x6f'),_0xe528('0x70')],'raw':!![]}]})[_0xe528('0x30')](function(_0xf2e4c4){if(_0xf2e4c4){var _0x9b4fd4=_['flatMap'](_0xf2e4c4,function(_0x4dc69f){var _0x3c4a96=_0x4dc69f[_0xe528('0x2d')]({'plain':!![]});return _0x3c4a96[_0xe528('0x6d')];});return db[_0xe528('0x36')]['find']({'where':{'id':_0x109802[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](function(_0x5d39e4){return db[_0xe528('0x71')][_0xe528('0x72')](function(_0x15a7bc){return _0x5d39e4[_0xe528('0x73')](_0x54183b,{'transaction':_0x15a7bc})[_0xe528('0x30')](function(){return BPromise[_0xe528('0x74')](_0x9b4fd4,function(_0x137c1c){return db[_0xe528('0x5d')]['findOrCreate']({'where':{'UserId':_0x137c1c['id'],'SmsQueueId':_0x109802[_0xe528('0x4e')]['id']},'transaction':_0x15a7bc});});})[_0xe528('0x30')](function(){_0x9b4fd4[_0xe528('0x75')](function(_0x1c0091){socket[_0xe528('0x76')](_0xe528('0x77'),{'UserId':_0x1c0091['id'],'SmsQueueId':_0x5d39e4['id']});});});});});}})[_0xe528('0x30')](respondWithStatusCode(_0xd995df,null))[_0xe528('0x52')](handleError(_0xd995df,null));};exports[_0xe528('0x78')]=function(_0x2b3323,_0x1ba7c6,_0x207184){return db['Team'][_0xe528('0x4b')]({'where':{'id':_0x2b3323[_0xe528('0x3e')][_0xe528('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xe528('0x60')],'as':_0xe528('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xe528('0x30')](handleEntityNotFound(_0x1ba7c6,null))[_0xe528('0x30')](function(_0x58c374){var _0x36899a=_[_0xe528('0x35')](_0x58c374,'id');var _0x28d4ab=[];var _0x1e9a5f=[];var _0x376fe6=squel[_0xe528('0x79')]();_0x376fe6[_0xe528('0x7a')](_0xe528('0x7b'))['from'](_0xe528('0x7c'),'tq')[_0xe528('0x7d')]('user_has_teams','ut',_0xe528('0x7e'))[_0xe528('0x45')]('SmsQueueId\x20=\x20?',_0x2b3323[_0xe528('0x4e')]['id']);for(var _0x7e532f=0x0;_0x7e532f<_0x58c374[_0xe528('0x41')];_0x7e532f+=0x1){let _0x282e21=_0x58c374[_0x7e532f];for(var _0x5157b6=0x0;_0x5157b6<_0x282e21['Agents'][_0xe528('0x41')];_0x5157b6+=0x1){let _0x3bdbcd=_0x282e21[_0xe528('0x6d')][_0x5157b6];var _0x51a4bf=_0x376fe6[_0xe528('0x7f')]();_0x51a4bf[_0xe528('0x45')]('ut.UserId\x20=\x20?',_0x3bdbcd['id']);_0x1e9a5f[_0xe528('0x80')](db[_0xe528('0x71')]['query'](_0x51a4bf[_0xe528('0x81')](),{'type':db[_0xe528('0x71')]['QueryTypes'][_0xe528('0x82')]})['then'](function(_0x4c40ae){if(_0x4c40ae[_0xe528('0x41')]===0x1){return _0x3bdbcd['id'];}else{var _0x37fa66=_['every'](_['map'](_0x4c40ae,_0xe528('0x83')),function(_0x55becb){return _['includes'](_0x36899a,_0x55becb);});if(_0x37fa66){return _0x3bdbcd['id'];}}}));}}return BPromise[_0xe528('0x84')](_0x1e9a5f)[_0xe528('0x30')](function(_0x5c3e22){_0x28d4ab=_(_0x28d4ab)[_0xe528('0x85')](_0x5c3e22)[_0xe528('0x86')]()[_0xe528('0x87')]();return db[_0xe528('0x36')][_0xe528('0x51')]({'where':{'id':_0x2b3323['params']['id']}})[_0xe528('0x30')](function(_0x5a8c67){return db['sequelize']['transaction'](function(_0x173556){return _0x5a8c67[_0xe528('0x78')](_0x2b3323[_0xe528('0x3e')]['ids'],{'transaction':_0x173556})[_0xe528('0x30')](function(){if(!_[_0xe528('0x88')](_0x28d4ab)){return _0x5a8c67[_0xe528('0x89')](_0x28d4ab,{'transaction':_0x173556});}})[_0xe528('0x30')](function(){_0x28d4ab[_0xe528('0x75')](function(_0x5e2bf8){socket[_0xe528('0x76')](_0xe528('0x8a'),{'UserId':_0x5e2bf8,'SmsQueueId':_0x5a8c67['id']});});});});});});})['then'](respondWithStatusCode(_0x1ba7c6,null))[_0xe528('0x52')](handleError(_0x1ba7c6,null));};exports[_0xe528('0x8b')]=function(_0x3b5d5c,_0x5b1b93,_0x2f6482){return db[_0xe528('0x36')]['find']({'where':{'id':_0x3b5d5c[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x5b1b93,null))['then'](function(_0x4f3308){if(_0x4f3308){return _0x4f3308[_0xe528('0x8b')](_0x3b5d5c[_0xe528('0x5b')][_0xe528('0x6c')],_[_0xe528('0x8c')](_0x3b5d5c[_0xe528('0x5b')],[_0xe528('0x6c'),'id'])||{})['spread'](function(_0x86bf26){for(var _0x383923=0x0;_0x383923<_0x3b5d5c[_0xe528('0x5b')]['ids'][_0xe528('0x41')];_0x383923+=0x1){socket[_0xe528('0x76')](_0xe528('0x77'),{'UserId':Number(_0x3b5d5c[_0xe528('0x5b')][_0xe528('0x6c')][_0x383923]),'SmsQueueId':Number(_0x3b5d5c[_0xe528('0x4e')]['id'])});}return _0x86bf26;});}})[_0xe528('0x30')](respondWithResult(_0x5b1b93,null))['catch'](handleError(_0x5b1b93,null));};exports['removeAgents']=function(_0x4dfca8,_0xfd565f,_0x326938){return db[_0xe528('0x36')][_0xe528('0x51')]({'where':{'id':_0x4dfca8[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0xfd565f,null))[_0xe528('0x30')](function(_0x159743){if(_0x159743){return _0x159743[_0xe528('0x89')](_0x4dfca8[_0xe528('0x3e')][_0xe528('0x6c')])[_0xe528('0x30')](function(){if(_[_0xe528('0x8d')](_0x4dfca8[_0xe528('0x3e')][_0xe528('0x6c')])){for(var _0xa03cbe=0x0;_0xa03cbe<_0x4dfca8['query']['ids'][_0xe528('0x41')];_0xa03cbe+=0x1){socket[_0xe528('0x76')](_0xe528('0x8a'),{'UserId':Number(_0x4dfca8[_0xe528('0x3e')]['ids'][_0xa03cbe]),'SmsQueueId':Number(_0x4dfca8[_0xe528('0x4e')]['id'])});}}else{socket[_0xe528('0x76')](_0xe528('0x8a'),{'UserId':Number(_0x4dfca8[_0xe528('0x3e')]['ids']),'SmsQueueId':Number(_0x4dfca8['params']['id'])});}});}})['then'](respondWithStatusCode(_0xfd565f,null))[_0xe528('0x52')](handleError(_0xfd565f,null));};exports[_0xe528('0x8e')]=function(_0x3c200f,_0x4e7538,_0x1d1e9c){var _0x1a3974={};var _0x420b7f={};var _0x3ffc0e;var _0x53f089;return db[_0xe528('0x36')]['findOne']({'where':{'id':_0x3c200f[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x4e7538,null))[_0xe528('0x30')](function(_0x3dc070){if(_0x3dc070){_0x3ffc0e=_0x3dc070;_0x420b7f[_0xe528('0x3d')]=_['keys'](db[_0xe528('0x60')]['rawAttributes']);_0x420b7f[_0xe528('0x3e')]=_[_0xe528('0x3b')](_0x3c200f[_0xe528('0x3e')]);_0x420b7f[_0xe528('0x46')]=_[_0xe528('0x3c')](_0x420b7f[_0xe528('0x3d')],_0x420b7f[_0xe528('0x3e')]);_0x1a3974['attributes']=_[_0xe528('0x3c')](_0x420b7f['model'],qs[_0xe528('0x3f')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x3f')]));_0x1a3974[_0xe528('0x40')]=_0x1a3974['attributes']['length']?_0x1a3974[_0xe528('0x40')]:_0x420b7f['model'];_0x1a3974['order']=qs[_0xe528('0x44')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x44')]);_0x1a3974['where']=qs['filters'](_[_0xe528('0x47')](_0x3c200f[_0xe528('0x3e')],_0x420b7f[_0xe528('0x46')]));if(_0x3c200f['query'][_0xe528('0x48')]){_0x1a3974[_0xe528('0x45')]=_[_0xe528('0x49')](_0x1a3974[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x1a3974[_0xe528('0x40')],function(_0x2feb3e){var _0x4dab7f={};_0x4dab7f[_0x2feb3e]={'$like':'%'+_0x3c200f[_0xe528('0x3e')][_0xe528('0x48')]+'%'};return _0x4dab7f;})});}_0x1a3974=_[_0xe528('0x49')]({},_0x1a3974,_0x3c200f[_0xe528('0x50')]);return _0x3ffc0e['getAgents'](_0x1a3974);}})[_0xe528('0x30')](function(_0x276f44){if(_0x276f44){_0x53f089=_0x276f44[_0xe528('0x41')];if(!_0x3c200f[_0xe528('0x3e')][_0xe528('0x5e')]('nolimit')){_0x1a3974[_0xe528('0x24')]=qs[_0xe528('0x24')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x24')]);_0x1a3974[_0xe528('0x25')]=qs[_0xe528('0x25')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x25')]);}return _0x3ffc0e['getAgents'](_0x1a3974);}})[_0xe528('0x30')](function(_0x25ea02){if(_0x25ea02){return _0x25ea02?{'count':_0x53f089,'rows':_0x25ea02}:null;}})['then'](respondWithResult(_0x4e7538,null))[_0xe528('0x52')](handleError(_0x4e7538,null));};
\ No newline at end of file
+var _0x9ccc=['addAgents','spread','emit','removeAgents','isArray','hasOwnProperty','getAgents','eml-format','rimraf','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/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','SmsQueues','UserProfileResource','sendStatus','error','stack','name','send','map','SmsQueue','rawAttributes','type','key','query','intersection','attributes','model','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','findAll','rows','keys','includeAll','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','describe','getMembers','findOne','UserSmsQueue','SmsQueueId','User','findAndCountAll','smsPause','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','userSmsQueue:save','ids','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','all','removeTeams','forEach','userSmsQueue:remove'];(function(_0x154cb5,_0x1a8d5a){var _0x3f574f=function(_0x597a52){while(--_0x597a52){_0x154cb5['push'](_0x154cb5['shift']());}};_0x3f574f(++_0x1a8d5a);}(_0x9ccc,0x11b));var _0xc9cc=function(_0x2d02a5,_0x456e7f){_0x2d02a5=_0x2d02a5-0x0;var _0x5d4a1a=_0x9ccc[_0x2d02a5];return _0x5d4a1a;};'use strict';var emlformat=require(_0xc9cc('0x0'));var rimraf=require(_0xc9cc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc9cc('0x2'));var rp=require(_0xc9cc('0x3'));var moment=require('moment');var BPromise=require(_0xc9cc('0x4'));var Mustache=require(_0xc9cc('0x5'));var util=require('util');var path=require(_0xc9cc('0x6'));var sox=require(_0xc9cc('0x7'));var csv=require(_0xc9cc('0x8'));var ejs=require(_0xc9cc('0x9'));var fs=require('fs');var fs_extra=require(_0xc9cc('0xa'));var _=require(_0xc9cc('0xb'));var squel=require(_0xc9cc('0xc'));var crypto=require('crypto');var jsforce=require(_0xc9cc('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc9cc('0x8'));var querystring=require(_0xc9cc('0xe'));var Papa=require(_0xc9cc('0xf'));var Redis=require(_0xc9cc('0x10'));var authService=require(_0xc9cc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc9cc('0x12'));var hardwareService=require(_0xc9cc('0x13'));var logger=require(_0xc9cc('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc9cc('0x15'));var db=require(_0xc9cc('0x16'))['db'];config[_0xc9cc('0x17')]=_['defaults'](config['redis'],{'host':_0xc9cc('0x18'),'port':0x18eb});var socket=require(_0xc9cc('0x19'))(new Redis(config['redis']));require('./smsQueue.socket')[_0xc9cc('0x1a')](socket);function respondWithStatusCode(_0x408647,_0x4b54d5){_0x4b54d5=_0x4b54d5||0xcc;return function(_0x545394){if(_0x545394){return _0x408647['sendStatus'](_0x4b54d5);}return _0x408647[_0xc9cc('0x1b')](_0x4b54d5)[_0xc9cc('0x1c')]();};}function respondWithResult(_0xd3b6ec,_0x6c2b6d){_0x6c2b6d=_0x6c2b6d||0xc8;return function(_0x1c0dd5){if(_0x1c0dd5){return _0xd3b6ec['status'](_0x6c2b6d)[_0xc9cc('0x1d')](_0x1c0dd5);}};}function respondWithFilteredResult(_0x275875,_0x443d49){return function(_0x4df76a){if(_0x4df76a){var _0x42e697=typeof _0x443d49[_0xc9cc('0x1e')]===_0xc9cc('0x1f')&&typeof _0x443d49[_0xc9cc('0x20')]===_0xc9cc('0x1f');var _0x4141dc=_0x4df76a[_0xc9cc('0x21')];var _0x12e696=_0x42e697?0x0:_0x443d49[_0xc9cc('0x1e')];var _0x571b1b=_0x42e697?_0x4df76a[_0xc9cc('0x21')]:_0x443d49[_0xc9cc('0x1e')]+_0x443d49[_0xc9cc('0x20')];var _0x517387;if(_0x571b1b>=_0x4141dc){_0x571b1b=_0x4141dc;_0x517387=0xc8;}else{_0x517387=0xce;}_0x275875['status'](_0x517387);return _0x275875[_0xc9cc('0x22')]('Content-Range',_0x12e696+'-'+_0x571b1b+'/'+_0x4141dc)['json'](_0x4df76a);}return null;};}function patchUpdates(_0x4d9c53){return function(_0x26a17b){try{jsonpatch[_0xc9cc('0x23')](_0x26a17b,_0x4d9c53,!![]);}catch(_0x138743){return BPromise[_0xc9cc('0x24')](_0x138743);}return _0x26a17b[_0xc9cc('0x25')]();};}function saveUpdates(_0x3d1d9a,_0x5ef3e3){return function(_0x561784){if(_0x561784){return _0x561784['update'](_0x3d1d9a)[_0xc9cc('0x26')](function(_0x51df2c){return _0x51df2c;});}return null;};}function removeEntity(_0x37cc7a,_0x3fd075){return function(_0x23da89){if(_0x23da89){return _0x23da89[_0xc9cc('0x27')]()[_0xc9cc('0x26')](function(){var _0xba844e=_0x23da89[_0xc9cc('0x28')]({'plain':!![]});var _0x433dfe=_0xc9cc('0x29');return db[_0xc9cc('0x2a')][_0xc9cc('0x27')]({'where':{'type':_0x433dfe,'resourceId':_0xba844e['id']}})[_0xc9cc('0x26')](function(){return _0x23da89;});})[_0xc9cc('0x26')](function(){_0x37cc7a[_0xc9cc('0x1b')](0xcc)[_0xc9cc('0x1c')]();});}};}function handleEntityNotFound(_0xbc15bf,_0x4447a5){return function(_0x5b429c){if(!_0x5b429c){_0xbc15bf[_0xc9cc('0x2b')](0x194);}return _0x5b429c;};}function handleError(_0x12ad33,_0x12dac7){_0x12dac7=_0x12dac7||0x1f4;return function(_0x3d8575){logger[_0xc9cc('0x2c')](_0x3d8575[_0xc9cc('0x2d')]);if(_0x3d8575[_0xc9cc('0x2e')]){delete _0x3d8575[_0xc9cc('0x2e')];}_0x12ad33[_0xc9cc('0x1b')](_0x12dac7)[_0xc9cc('0x2f')](_0x3d8575);};}exports['index']=function(_0x49ce8f,_0x3206ef){var _0x2387e6={},_0x3fb36d={},_0x218964={'count':0x0,'rows':[]};var _0x41aa21=_[_0xc9cc('0x30')](db[_0xc9cc('0x31')][_0xc9cc('0x32')],function(_0x1a4101){return{'name':_0x1a4101['fieldName'],'type':_0x1a4101[_0xc9cc('0x33')][_0xc9cc('0x34')]};});_0x3fb36d['model']=_['map'](_0x41aa21,'name');_0x3fb36d['query']=_['keys'](_0x49ce8f[_0xc9cc('0x35')]);_0x3fb36d['filters']=_[_0xc9cc('0x36')](_0x3fb36d['model'],_0x3fb36d[_0xc9cc('0x35')]);_0x2387e6[_0xc9cc('0x37')]=_['intersection'](_0x3fb36d[_0xc9cc('0x38')],qs['fields'](_0x49ce8f[_0xc9cc('0x35')][_0xc9cc('0x39')]));_0x2387e6['attributes']=_0x2387e6['attributes'][_0xc9cc('0x3a')]?_0x2387e6[_0xc9cc('0x37')]:_0x3fb36d[_0xc9cc('0x38')];if(!_0x49ce8f[_0xc9cc('0x35')]['hasOwnProperty'](_0xc9cc('0x3b'))){_0x2387e6[_0xc9cc('0x20')]=qs[_0xc9cc('0x20')](_0x49ce8f[_0xc9cc('0x35')]['limit']);_0x2387e6['offset']=qs[_0xc9cc('0x1e')](_0x49ce8f[_0xc9cc('0x35')][_0xc9cc('0x1e')]);}_0x2387e6[_0xc9cc('0x3c')]=qs[_0xc9cc('0x3d')](_0x49ce8f['query'][_0xc9cc('0x3d')]);_0x2387e6[_0xc9cc('0x3e')]=qs[_0xc9cc('0x3f')](_[_0xc9cc('0x40')](_0x49ce8f[_0xc9cc('0x35')],_0x3fb36d['filters']),_0x41aa21);if(_0x49ce8f[_0xc9cc('0x35')][_0xc9cc('0x41')]){_0x2387e6[_0xc9cc('0x3e')]=_[_0xc9cc('0x42')](_0x2387e6[_0xc9cc('0x3e')],{'$or':_[_0xc9cc('0x30')](_0x41aa21,function(_0x595f0d){if(_0x595f0d[_0xc9cc('0x33')]!==_0xc9cc('0x43')){var _0x36ac10={};_0x36ac10[_0x595f0d[_0xc9cc('0x2e')]]={'$like':'%'+_0x49ce8f[_0xc9cc('0x35')][_0xc9cc('0x41')]+'%'};return _0x36ac10;}})});}_0x2387e6=_[_0xc9cc('0x42')]({},_0x2387e6,_0x49ce8f[_0xc9cc('0x44')]);var _0x4e65bd={'where':_0x2387e6['where']};return db[_0xc9cc('0x31')]['count'](_0x4e65bd)[_0xc9cc('0x26')](function(_0xe63c98){_0x218964[_0xc9cc('0x21')]=_0xe63c98;if(_0x49ce8f[_0xc9cc('0x35')]['includeAll']){_0x2387e6['include']=[{'all':!![]}];}return db[_0xc9cc('0x31')][_0xc9cc('0x45')](_0x2387e6);})[_0xc9cc('0x26')](function(_0x9367b6){_0x218964[_0xc9cc('0x46')]=_0x9367b6;return _0x218964;})[_0xc9cc('0x26')](respondWithFilteredResult(_0x3206ef,_0x2387e6))['catch'](handleError(_0x3206ef,null));};exports['show']=function(_0x1c9a89,_0x1d1c5d){var _0x1a632f={'raw':!![],'where':{'id':_0x1c9a89['params']['id']}},_0x2c038d={};_0x2c038d[_0xc9cc('0x38')]=_[_0xc9cc('0x47')](db[_0xc9cc('0x31')][_0xc9cc('0x32')]);_0x2c038d['query']=_[_0xc9cc('0x47')](_0x1c9a89[_0xc9cc('0x35')]);_0x2c038d[_0xc9cc('0x3f')]=_[_0xc9cc('0x36')](_0x2c038d['model'],_0x2c038d['query']);_0x1a632f[_0xc9cc('0x37')]=_['intersection'](_0x2c038d[_0xc9cc('0x38')],qs['fields'](_0x1c9a89[_0xc9cc('0x35')][_0xc9cc('0x39')]));_0x1a632f['attributes']=_0x1a632f[_0xc9cc('0x37')][_0xc9cc('0x3a')]?_0x1a632f[_0xc9cc('0x37')]:_0x2c038d['model'];if(_0x1c9a89['query'][_0xc9cc('0x48')]){_0x1a632f['include']=[{'all':!![]}];}_0x1a632f=_['merge']({},_0x1a632f,_0x1c9a89['options']);return db['SmsQueue'][_0xc9cc('0x49')](_0x1a632f)[_0xc9cc('0x26')](handleEntityNotFound(_0x1d1c5d,null))['then'](respondWithResult(_0x1d1c5d,null))[_0xc9cc('0x4a')](handleError(_0x1d1c5d,null));};exports[_0xc9cc('0x4b')]=function(_0x2ec45b,_0x436973){return db['SmsQueue'][_0xc9cc('0x4b')](_0x2ec45b['body'],{})[_0xc9cc('0x26')](function(_0x5f5405){var _0x50f299=_0x2ec45b['user'][_0xc9cc('0x28')]({'plain':!![]});if(!_0x50f299)throw new Error(_0xc9cc('0x4c'));if(_0x50f299[_0xc9cc('0x4d')]===_0xc9cc('0x4e')){var _0x16a8a7=_0x5f5405[_0xc9cc('0x28')]({'plain':!![]});var _0x4f1b15=_0xc9cc('0x29');return db[_0xc9cc('0x4f')][_0xc9cc('0x49')]({'where':{'name':_0x4f1b15,'userProfileId':_0x50f299[_0xc9cc('0x50')]},'raw':!![]})[_0xc9cc('0x26')](function(_0x452c7b){if(_0x452c7b&&_0x452c7b[_0xc9cc('0x51')]===0x0){return db[_0xc9cc('0x2a')][_0xc9cc('0x4b')]({'name':_0x16a8a7['name'],'resourceId':_0x16a8a7['id'],'type':_0x452c7b[_0xc9cc('0x2e')],'sectionId':_0x452c7b['id']},{})[_0xc9cc('0x26')](function(){return _0x5f5405;});}else{return _0x5f5405;}})[_0xc9cc('0x4a')](function(_0x4ba805){logger[_0xc9cc('0x2c')](_0xc9cc('0x52'),_0x4ba805);throw _0x4ba805;});}return _0x5f5405;})['then'](respondWithResult(_0x436973,0xc9))[_0xc9cc('0x4a')](handleError(_0x436973,null));};exports[_0xc9cc('0x53')]=function(_0x38f7e0,_0x365755){if(_0x38f7e0['body']['id']){delete _0x38f7e0[_0xc9cc('0x54')]['id'];}return db['SmsQueue'][_0xc9cc('0x49')]({'where':{'id':_0x38f7e0[_0xc9cc('0x55')]['id']}})[_0xc9cc('0x26')](handleEntityNotFound(_0x365755,null))['then'](saveUpdates(_0x38f7e0['body'],null))[_0xc9cc('0x26')](respondWithResult(_0x365755,null))['catch'](handleError(_0x365755,null));};exports[_0xc9cc('0x27')]=function(_0x4ca77a,_0x3c1db4){return db[_0xc9cc('0x31')][_0xc9cc('0x49')]({'where':{'id':_0x4ca77a['params']['id']}})[_0xc9cc('0x26')](handleEntityNotFound(_0x3c1db4,null))[_0xc9cc('0x26')](removeEntity(_0x3c1db4,null))[_0xc9cc('0x4a')](handleError(_0x3c1db4,null));};exports[_0xc9cc('0x56')]=function(_0x249f17,_0x34cafd){return db['SmsQueue']['describe']()[_0xc9cc('0x26')](respondWithResult(_0x34cafd,null))[_0xc9cc('0x4a')](handleError(_0x34cafd,null));};exports[_0xc9cc('0x57')]=function(_0x365637,_0x2f95b1,_0x54946e){var _0x95899f={'raw':!![],'where':{}},_0x1d661c={},_0x42912d;return db[_0xc9cc('0x31')][_0xc9cc('0x58')]({'where':{'id':_0x365637['params']['id']}})[_0xc9cc('0x26')](handleEntityNotFound(_0x2f95b1,null))[_0xc9cc('0x26')](function(_0x4432de){if(_0x4432de){_0x42912d=_0x4432de['get']({'plain':!![]});_0x1d661c['model']=_[_0xc9cc('0x47')](db[_0xc9cc('0x59')][_0xc9cc('0x32')]);_0x1d661c[_0xc9cc('0x35')]=_[_0xc9cc('0x47')](_0x365637[_0xc9cc('0x35')]);_0x1d661c[_0xc9cc('0x3f')]=_[_0xc9cc('0x36')](_0x1d661c['model'],_0x1d661c[_0xc9cc('0x35')]);_0x95899f['attributes']=_['intersection'](_0x1d661c[_0xc9cc('0x38')],qs['fields'](_0x365637['query'][_0xc9cc('0x39')]));_0x95899f['attributes']=_0x95899f[_0xc9cc('0x37')]['length']?_0x95899f[_0xc9cc('0x37')]:_0x1d661c[_0xc9cc('0x38')];if(!_0x365637[_0xc9cc('0x35')]['hasOwnProperty'](_0xc9cc('0x3b'))){_0x95899f[_0xc9cc('0x20')]=qs['limit'](_0x365637['query'][_0xc9cc('0x20')]);_0x95899f[_0xc9cc('0x1e')]=qs['offset'](_0x365637['query'][_0xc9cc('0x1e')]);}_0x95899f[_0xc9cc('0x3c')]=qs[_0xc9cc('0x3d')](_0x365637[_0xc9cc('0x35')][_0xc9cc('0x3d')]);_0x95899f[_0xc9cc('0x3e')]=qs[_0xc9cc('0x3f')](_[_0xc9cc('0x40')](_0x365637[_0xc9cc('0x35')],_0x1d661c[_0xc9cc('0x3f')]));_0x95899f[_0xc9cc('0x3e')][_0xc9cc('0x5a')]=_0x4432de['id'];if(_0x365637[_0xc9cc('0x35')][_0xc9cc('0x41')]){_0x95899f[_0xc9cc('0x3e')]=_[_0xc9cc('0x42')](_0x95899f[_0xc9cc('0x3e')],{'$or':_[_0xc9cc('0x30')](_0x95899f[_0xc9cc('0x37')],function(_0x5c5e48){var _0x596042={};_0x596042[_0x5c5e48]={'$like':'%'+_0x365637[_0xc9cc('0x35')][_0xc9cc('0x41')]+'%'};return _0x596042;})});}_0x95899f=_[_0xc9cc('0x42')]({},_0x95899f,_0x365637['options']);return db['UserSmsQueue'][_0xc9cc('0x45')](_0x95899f);}})[_0xc9cc('0x26')](function(_0x5a1c42){if(_0x5a1c42){return db[_0xc9cc('0x5b')][_0xc9cc('0x5c')]({'where':{'id':_['map'](_0x5a1c42,'UserId'),'role':'agent'},'attributes':['id','name',_0xc9cc('0x5d'),_0xc9cc('0x5e'),_0xc9cc('0x5f')]});}})[_0xc9cc('0x26')](function(_0x57a0ae){if(_0x57a0ae){return{'count':_0x57a0ae[_0xc9cc('0x21')],'rows':_['map'](_0x57a0ae[_0xc9cc('0x46')],function(_0x15fb40){return{'membername':_0x15fb40[_0xc9cc('0x2e')],'UserId':_0x15fb40['id'],'queue_name':_0x42912d[_0xc9cc('0x2e')],'SmsQueueId':_0x42912d['id'],'interface':util[_0xc9cc('0x60')](_0xc9cc('0x61'),_0xc9cc('0x62'),_0x15fb40[_0xc9cc('0x2e')]),'penalty':0x0,'paused':_0x15fb40[_0xc9cc('0x5d')],'createdAt':_0x15fb40[_0xc9cc('0x5f')],'updatedAt':_0x15fb40['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2f95b1,_0x95899f))[_0xc9cc('0x4a')](handleError(_0x2f95b1,null));};exports['getTeams']=function(_0x27ccc1,_0x15e2c1,_0x18071b){var _0x2b7687={};var _0x34b145={};var _0x2af882;var _0x13c55d;return db[_0xc9cc('0x31')][_0xc9cc('0x58')]({'where':{'id':_0x27ccc1[_0xc9cc('0x55')]['id']}})[_0xc9cc('0x26')](handleEntityNotFound(_0x15e2c1,null))['then'](function(_0x4eb2cf){if(_0x4eb2cf){_0x2af882=_0x4eb2cf;_0x34b145['model']=_['keys'](db[_0xc9cc('0x63')][_0xc9cc('0x32')]);_0x34b145['query']=_[_0xc9cc('0x47')](_0x27ccc1[_0xc9cc('0x35')]);_0x34b145[_0xc9cc('0x3f')]=_[_0xc9cc('0x36')](_0x34b145[_0xc9cc('0x38')],_0x34b145['query']);_0x2b7687[_0xc9cc('0x37')]=_[_0xc9cc('0x36')](_0x34b145[_0xc9cc('0x38')],qs[_0xc9cc('0x39')](_0x27ccc1[_0xc9cc('0x35')][_0xc9cc('0x39')]));_0x2b7687[_0xc9cc('0x37')]=_0x2b7687[_0xc9cc('0x37')][_0xc9cc('0x3a')]?_0x2b7687[_0xc9cc('0x37')]:_0x34b145['model'];_0x2b7687['order']=qs['sort'](_0x27ccc1[_0xc9cc('0x35')][_0xc9cc('0x3d')]);_0x2b7687[_0xc9cc('0x3e')]=qs['filters'](_[_0xc9cc('0x40')](_0x27ccc1[_0xc9cc('0x35')],_0x34b145[_0xc9cc('0x3f')]));if(_0x27ccc1[_0xc9cc('0x35')][_0xc9cc('0x41')]){_0x2b7687[_0xc9cc('0x3e')]=_['merge'](_0x2b7687['where'],{'$or':_[_0xc9cc('0x30')](_0x2b7687[_0xc9cc('0x37')],function(_0x47eb11){var _0x28ac95={};_0x28ac95[_0x47eb11]={'$like':'%'+_0x27ccc1[_0xc9cc('0x35')][_0xc9cc('0x41')]+'%'};return _0x28ac95;})});}_0x2b7687=_[_0xc9cc('0x42')]({},_0x2b7687,_0x27ccc1['options']);return _0x2af882[_0xc9cc('0x64')](_0x2b7687);}})[_0xc9cc('0x26')](function(_0x30aae4){if(_0x30aae4){_0x13c55d=_0x30aae4[_0xc9cc('0x3a')];if(!_0x27ccc1[_0xc9cc('0x35')]['hasOwnProperty'](_0xc9cc('0x3b'))){_0x2b7687['limit']=qs[_0xc9cc('0x20')](_0x27ccc1[_0xc9cc('0x35')][_0xc9cc('0x20')]);_0x2b7687[_0xc9cc('0x1e')]=qs[_0xc9cc('0x1e')](_0x27ccc1['query'][_0xc9cc('0x1e')]);}return _0x2af882[_0xc9cc('0x64')](_0x2b7687);}})[_0xc9cc('0x26')](function(_0x991c61){if(_0x991c61){return _0x991c61?{'count':_0x13c55d,'rows':_0x991c61}:null;}})['then'](respondWithResult(_0x15e2c1,null))['catch'](handleError(_0x15e2c1,null));};exports[_0xc9cc('0x65')]=function(_0x4209c2,_0x30dc3d,_0x325d02){var _0x5a904f=_0x4209c2[_0xc9cc('0x54')]['ids'];return db[_0xc9cc('0x63')][_0xc9cc('0x45')]({'where':{'id':_0x5a904f},'attributes':['id'],'include':[{'model':db[_0xc9cc('0x5b')],'as':_0xc9cc('0x66'),'attributes':['id','name',_0xc9cc('0x67'),_0xc9cc('0x68'),_0xc9cc('0x69')],'raw':!![]}]})['then'](function(_0x4d761c){if(_0x4d761c){var _0x3a2d8d=_[_0xc9cc('0x6a')](_0x4d761c,function(_0x3edca3){var _0x55d82c=_0x3edca3[_0xc9cc('0x28')]({'plain':!![]});return _0x55d82c[_0xc9cc('0x66')];});return db[_0xc9cc('0x31')][_0xc9cc('0x49')]({'where':{'id':_0x4209c2[_0xc9cc('0x55')]['id']}})[_0xc9cc('0x26')](function(_0x381f4e){return db[_0xc9cc('0x6b')][_0xc9cc('0x6c')](function(_0x259d5a){return _0x381f4e['addTeams'](_0x5a904f,{'transaction':_0x259d5a})[_0xc9cc('0x26')](function(){return BPromise[_0xc9cc('0x6d')](_0x3a2d8d,function(_0x328d12){return db[_0xc9cc('0x59')][_0xc9cc('0x6e')]({'where':{'UserId':_0x328d12['id'],'SmsQueueId':_0x4209c2[_0xc9cc('0x55')]['id']},'transaction':_0x259d5a});});})[_0xc9cc('0x26')](function(){_0x3a2d8d['forEach'](function(_0x4c43dc){socket['emit'](_0xc9cc('0x6f'),{'UserId':_0x4c43dc['id'],'SmsQueueId':_0x381f4e['id']});});});});});}})[_0xc9cc('0x26')](respondWithStatusCode(_0x30dc3d,null))[_0xc9cc('0x4a')](handleError(_0x30dc3d,null));};exports['removeTeams']=function(_0x18ad10,_0x31dbce,_0x451048){return db[_0xc9cc('0x63')][_0xc9cc('0x45')]({'where':{'id':_0x18ad10[_0xc9cc('0x35')][_0xc9cc('0x70')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc9cc('0x66'),'attributes':['id'],'raw':!![]}]})[_0xc9cc('0x26')](handleEntityNotFound(_0x31dbce,null))[_0xc9cc('0x26')](function(_0x45f3a4){var _0x8ced93=_[_0xc9cc('0x30')](_0x45f3a4,'id');var _0x476410=[];var _0x20556f=[];var _0x4275cc=squel[_0xc9cc('0x71')]();_0x4275cc[_0xc9cc('0x72')](_0xc9cc('0x73'))[_0xc9cc('0x74')]('team_has_sms_queues','tq')[_0xc9cc('0x75')](_0xc9cc('0x76'),'ut',_0xc9cc('0x77'))[_0xc9cc('0x3e')](_0xc9cc('0x78'),_0x18ad10[_0xc9cc('0x55')]['id']);for(var _0x76dd52=0x0;_0x76dd52<_0x45f3a4[_0xc9cc('0x3a')];_0x76dd52+=0x1){let _0xa0c6c3=_0x45f3a4[_0x76dd52];for(var _0x1522e8=0x0;_0x1522e8<_0xa0c6c3[_0xc9cc('0x66')][_0xc9cc('0x3a')];_0x1522e8+=0x1){let _0x3bd355=_0xa0c6c3[_0xc9cc('0x66')][_0x1522e8];var _0x46a8cd=_0x4275cc['clone']();_0x46a8cd['where']('ut.UserId\x20=\x20?',_0x3bd355['id']);_0x20556f[_0xc9cc('0x79')](db[_0xc9cc('0x6b')]['query'](_0x46a8cd[_0xc9cc('0x7a')](),{'type':db[_0xc9cc('0x6b')][_0xc9cc('0x7b')][_0xc9cc('0x7c')]})['then'](function(_0x1bae38){if(_0x1bae38[_0xc9cc('0x3a')]===0x1){return _0x3bd355['id'];}else{var _0x4b3d1c=_['every'](_['map'](_0x1bae38,_0xc9cc('0x7d')),function(_0x53260a){return _[_0xc9cc('0x7e')](_0x8ced93,_0x53260a);});if(_0x4b3d1c){return _0x3bd355['id'];}}}));}}return BPromise[_0xc9cc('0x7f')](_0x20556f)[_0xc9cc('0x26')](function(_0x22cfb3){_0x476410=_(_0x476410)['union'](_0x22cfb3)['compact']()['value']();return db[_0xc9cc('0x31')][_0xc9cc('0x49')]({'where':{'id':_0x18ad10[_0xc9cc('0x55')]['id']}})['then'](function(_0x3b83f5){return db[_0xc9cc('0x6b')][_0xc9cc('0x6c')](function(_0x1902c8){return _0x3b83f5[_0xc9cc('0x80')](_0x18ad10['query'][_0xc9cc('0x70')],{'transaction':_0x1902c8})[_0xc9cc('0x26')](function(){if(!_['isEmpty'](_0x476410)){return _0x3b83f5['removeAgents'](_0x476410,{'transaction':_0x1902c8});}})[_0xc9cc('0x26')](function(){_0x476410[_0xc9cc('0x81')](function(_0x175889){socket['emit'](_0xc9cc('0x82'),{'UserId':_0x175889,'SmsQueueId':_0x3b83f5['id']});});});});});});})[_0xc9cc('0x26')](respondWithStatusCode(_0x31dbce,null))[_0xc9cc('0x4a')](handleError(_0x31dbce,null));};exports[_0xc9cc('0x83')]=function(_0x46bb44,_0x2471d2,_0x419bab){return db[_0xc9cc('0x31')]['find']({'where':{'id':_0x46bb44[_0xc9cc('0x55')]['id']}})['then'](handleEntityNotFound(_0x2471d2,null))[_0xc9cc('0x26')](function(_0x395a37){if(_0x395a37){return _0x395a37[_0xc9cc('0x83')](_0x46bb44[_0xc9cc('0x54')][_0xc9cc('0x70')],_['omit'](_0x46bb44[_0xc9cc('0x54')],[_0xc9cc('0x70'),'id'])||{})[_0xc9cc('0x84')](function(_0x29c435){for(var _0x475dfd=0x0;_0x475dfd<_0x46bb44[_0xc9cc('0x54')][_0xc9cc('0x70')][_0xc9cc('0x3a')];_0x475dfd+=0x1){socket[_0xc9cc('0x85')](_0xc9cc('0x6f'),{'UserId':Number(_0x46bb44['body'][_0xc9cc('0x70')][_0x475dfd]),'SmsQueueId':Number(_0x46bb44[_0xc9cc('0x55')]['id'])});}return _0x29c435;});}})[_0xc9cc('0x26')](respondWithResult(_0x2471d2,null))[_0xc9cc('0x4a')](handleError(_0x2471d2,null));};exports['removeAgents']=function(_0x3a184f,_0x27e60b,_0x3b7163){return db['SmsQueue']['find']({'where':{'id':_0x3a184f['params']['id']}})['then'](handleEntityNotFound(_0x27e60b,null))['then'](function(_0x5701ec){if(_0x5701ec){return _0x5701ec[_0xc9cc('0x86')](_0x3a184f['query'][_0xc9cc('0x70')])[_0xc9cc('0x26')](function(){if(_[_0xc9cc('0x87')](_0x3a184f[_0xc9cc('0x35')][_0xc9cc('0x70')])){for(var _0xce34ba=0x0;_0xce34ba<_0x3a184f[_0xc9cc('0x35')][_0xc9cc('0x70')]['length'];_0xce34ba+=0x1){socket[_0xc9cc('0x85')](_0xc9cc('0x82'),{'UserId':Number(_0x3a184f['query'][_0xc9cc('0x70')][_0xce34ba]),'SmsQueueId':Number(_0x3a184f[_0xc9cc('0x55')]['id'])});}}else{socket[_0xc9cc('0x85')]('userSmsQueue:remove',{'UserId':Number(_0x3a184f['query'][_0xc9cc('0x70')]),'SmsQueueId':Number(_0x3a184f[_0xc9cc('0x55')]['id'])});}});}})[_0xc9cc('0x26')](respondWithStatusCode(_0x27e60b,null))[_0xc9cc('0x4a')](handleError(_0x27e60b,null));};exports['getAgents']=function(_0x589588,_0x25cb69,_0x31fd62){var _0x213f1c={};var _0x2a5414={};var _0x54c688;var _0x1ffb1d;return db['SmsQueue'][_0xc9cc('0x58')]({'where':{'id':_0x589588['params']['id']}})[_0xc9cc('0x26')](handleEntityNotFound(_0x25cb69,null))[_0xc9cc('0x26')](function(_0x3be7b9){if(_0x3be7b9){_0x54c688=_0x3be7b9;_0x2a5414[_0xc9cc('0x38')]=_['keys'](db[_0xc9cc('0x5b')][_0xc9cc('0x32')]);_0x2a5414[_0xc9cc('0x35')]=_[_0xc9cc('0x47')](_0x589588[_0xc9cc('0x35')]);_0x2a5414[_0xc9cc('0x3f')]=_['intersection'](_0x2a5414[_0xc9cc('0x38')],_0x2a5414[_0xc9cc('0x35')]);_0x213f1c[_0xc9cc('0x37')]=_[_0xc9cc('0x36')](_0x2a5414[_0xc9cc('0x38')],qs[_0xc9cc('0x39')](_0x589588[_0xc9cc('0x35')][_0xc9cc('0x39')]));_0x213f1c[_0xc9cc('0x37')]=_0x213f1c[_0xc9cc('0x37')][_0xc9cc('0x3a')]?_0x213f1c[_0xc9cc('0x37')]:_0x2a5414[_0xc9cc('0x38')];_0x213f1c[_0xc9cc('0x3c')]=qs[_0xc9cc('0x3d')](_0x589588[_0xc9cc('0x35')]['sort']);_0x213f1c[_0xc9cc('0x3e')]=qs['filters'](_[_0xc9cc('0x40')](_0x589588[_0xc9cc('0x35')],_0x2a5414[_0xc9cc('0x3f')]));if(_0x589588[_0xc9cc('0x35')][_0xc9cc('0x41')]){_0x213f1c[_0xc9cc('0x3e')]=_[_0xc9cc('0x42')](_0x213f1c[_0xc9cc('0x3e')],{'$or':_[_0xc9cc('0x30')](_0x213f1c[_0xc9cc('0x37')],function(_0x2057aa){var _0x55a2dc={};_0x55a2dc[_0x2057aa]={'$like':'%'+_0x589588['query'][_0xc9cc('0x41')]+'%'};return _0x55a2dc;})});}_0x213f1c=_['merge']({},_0x213f1c,_0x589588['options']);return _0x54c688['getAgents'](_0x213f1c);}})[_0xc9cc('0x26')](function(_0x1187de){if(_0x1187de){_0x1ffb1d=_0x1187de[_0xc9cc('0x3a')];if(!_0x589588[_0xc9cc('0x35')][_0xc9cc('0x88')](_0xc9cc('0x3b'))){_0x213f1c[_0xc9cc('0x20')]=qs['limit'](_0x589588[_0xc9cc('0x35')][_0xc9cc('0x20')]);_0x213f1c[_0xc9cc('0x1e')]=qs['offset'](_0x589588['query'][_0xc9cc('0x1e')]);}return _0x54c688[_0xc9cc('0x89')](_0x213f1c);}})[_0xc9cc('0x26')](function(_0x240ab9){if(_0x240ab9){return _0x240ab9?{'count':_0x1ffb1d,'rows':_0x240ab9}:null;}})[_0xc9cc('0x26')](respondWithResult(_0x25cb69,null))[_0xc9cc('0x4a')](handleError(_0x25cb69,null));};
\ No newline at end of file
index 5d5842b..d212fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6b1=['exports','../../mysqldb','SmsQueue','update','remove','emit','hasOwnProperty','hook'];(function(_0x12a554,_0x3d7ef8){var _0x244ba0=function(_0x5eb5ff){while(--_0x5eb5ff){_0x12a554['push'](_0x12a554['shift']());}};_0x244ba0(++_0x3d7ef8);}(_0xf6b1,0x71));var _0x1f6b=function(_0x226efe,_0x340ac6){_0x226efe=_0x226efe-0x0;var _0x37af89=_0xf6b1[_0x226efe];return _0x37af89;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x1f6b('0x0'))['db'][_0x1f6b('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x1f6b('0x2'),'afterDestroy':_0x1f6b('0x3')};function emitEvent(_0x468e0b){return function(_0x2c5d72,_0x6c8f8f,_0x26eac1){SmsQueueEvents['emit'](_0x468e0b+':'+_0x2c5d72['id'],_0x2c5d72);SmsQueueEvents[_0x1f6b('0x4')](_0x468e0b,_0x2c5d72);_0x26eac1(null);};}for(var e in events){if(events[_0x1f6b('0x5')](e)){var event=events[e];SmsQueue[_0x1f6b('0x6')](e,emitEvent(event));}}module[_0x1f6b('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0x7e91=['save','update','remove','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x4e2e1c,_0x192384){var _0x3b27c2=function(_0x734e9){while(--_0x734e9){_0x4e2e1c['push'](_0x4e2e1c['shift']());}};_0x3b27c2(++_0x192384);}(_0x7e91,0xf9));var _0x17e9=function(_0x51ea8a,_0x39518e){_0x51ea8a=_0x51ea8a-0x0;var _0xde8ce4=_0x7e91[_0x51ea8a];return _0xde8ce4;};'use strict';var EventEmitter=require(_0x17e9('0x0'));var SmsQueue=require(_0x17e9('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x17e9('0x2')](0x0);var events={'afterCreate':_0x17e9('0x3'),'afterUpdate':_0x17e9('0x4'),'afterDestroy':_0x17e9('0x5')};function emitEvent(_0x3a30c8){return function(_0x5ad2d0,_0x3744cb,_0x5c6716){SmsQueueEvents['emit'](_0x3a30c8+':'+_0x5ad2d0['id'],_0x5ad2d0);SmsQueueEvents['emit'](_0x3a30c8,_0x5ad2d0);_0x5c6716(null);};}for(var e in events){if(events[_0x17e9('0x6')](e)){var event=events[e];SmsQueue[_0x17e9('0x7')](e,emitEvent(event));}}module[_0x17e9('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 73d5454..efb8be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9170=['../../config/environment','exports','define','SmsQueue','sms_queues','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x647346,_0x55d42d){var _0x45063f=function(_0x5ec743){while(--_0x5ec743){_0x647346['push'](_0x647346['shift']());}};_0x45063f(++_0x55d42d);}(_0x9170,0xe1));var _0x0917=function(_0x332935,_0x332a6c){_0x332935=_0x332935-0x0;var _0x1684d4=_0x9170[_0x332935];return _0x1684d4;};'use strict';var _=require(_0x0917('0x0'));var util=require(_0x0917('0x1'));var logger=require(_0x0917('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0917('0x3'));var rp=require(_0x0917('0x4'));var fs=require('fs');var path=require(_0x0917('0x5'));var rimraf=require('rimraf');var config=require(_0x0917('0x6'));var attributes=require('./smsQueue.attributes');module[_0x0917('0x7')]=function(_0x3b927c,_0x10fe5){return _0x3b927c[_0x0917('0x8')](_0x0917('0x9'),attributes,{'tableName':_0x0917('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a83=['rimraf','../../config/environment','./smsQueue.attributes','exports','SmsQueue','sms_queues','util','bluebird','request-promise'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x1a83,0x1da));var _0x31a8=function(_0x3a317c,_0x12a022){_0x3a317c=_0x3a317c-0x0;var _0x596cd1=_0x1a83[_0x3a317c];return _0x596cd1;};'use strict';var _=require('lodash');var util=require(_0x31a8('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x31a8('0x1'));var rp=require(_0x31a8('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31a8('0x3'));var config=require(_0x31a8('0x4'));var attributes=require(_0x31a8('0x5'));module[_0x31a8('0x6')]=function(_0x15c877,_0x2b0fe7){return _0x15c877['define'](_0x31a8('0x7'),attributes,{'tableName':_0x31a8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7541682..7ec1f5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d5=['http','redis','localhost','./smsQueue.socket','request','then','info','SmsQueue,\x20%s,\x20%s','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetSmsQueue','findAll','options','where','attributes','limit','include','model','map','catch','SmsQueue','find','raw','ShowSmsQueue','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client'];(function(_0xfb6ea7,_0x35e031){var _0x1ecfb2=function(_0x727f9f){while(--_0x727f9f){_0xfb6ea7['push'](_0xfb6ea7['shift']());}};_0x1ecfb2(++_0x35e031);}(_0x23d5,0xd1));var _0x523d=function(_0x408d11,_0x503948){_0x408d11=_0x408d11-0x0;var _0x491bc3=_0x23d5[_0x408d11];return _0x491bc3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x523d('0x0'));var BPromise=require(_0x523d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x523d('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x523d('0x3'))(_0x523d('0x4'));var config=require(_0x523d('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x523d('0x6')][_0x523d('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0x523d('0x8')],{'host':_0x523d('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x523d('0x8')]));require(_0x523d('0xa'))['register'](socket);function respondWithRpcPromise(_0x19949f,_0x789bd3,_0x3c57f1){return new BPromise(function(_0x3da3e7,_0x452452){return client[_0x523d('0xb')](_0x19949f,_0x3c57f1)[_0x523d('0xc')](function(_0x1fed02){logger[_0x523d('0xd')](_0x523d('0xe'),_0x789bd3,'request\x20sent');logger[_0x523d('0xf')](_0x523d('0x10'),_0x789bd3,_0x523d('0x11'),JSON[_0x523d('0x12')](_0x1fed02));if(_0x1fed02[_0x523d('0x13')]){if(_0x1fed02[_0x523d('0x13')]['code']===0x1f4){logger[_0x523d('0x13')](_0x523d('0xe'),_0x789bd3,_0x1fed02[_0x523d('0x13')][_0x523d('0x14')]);return _0x452452(_0x1fed02[_0x523d('0x13')]['message']);}logger[_0x523d('0x13')]('SmsQueue,\x20%s,\x20%s',_0x789bd3,_0x1fed02[_0x523d('0x13')]['message']);return _0x3da3e7(_0x1fed02['error'][_0x523d('0x14')]);}else{logger[_0x523d('0xd')](_0x523d('0xe'),_0x789bd3,'request\x20sent');_0x3da3e7(_0x1fed02[_0x523d('0x15')][_0x523d('0x14')]);}})['catch'](function(_0xbfe4ec){logger[_0x523d('0x13')]('SmsQueue,\x20%s,\x20%s',_0x789bd3,_0xbfe4ec);_0x452452(_0xbfe4ec);});});}exports[_0x523d('0x16')]=function(_0x4937d4){var _0xc73af6=this;return new Promise(function(_0x54dd0a,_0x309ffc){return db['SmsQueue'][_0x523d('0x17')]({'raw':_0x4937d4['options']?_0x4937d4[_0x523d('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4937d4['options']?_0x4937d4[_0x523d('0x18')][_0x523d('0x19')]||null:null,'attributes':_0x4937d4['options']?_0x4937d4[_0x523d('0x18')][_0x523d('0x1a')]||null:null,'limit':_0x4937d4[_0x523d('0x18')]?_0x4937d4[_0x523d('0x18')][_0x523d('0x1b')]||null:null,'include':_0x4937d4[_0x523d('0x18')]?_0x4937d4[_0x523d('0x18')][_0x523d('0x1c')]?_['map'](_0x4937d4[_0x523d('0x18')][_0x523d('0x1c')],function(_0x45ba59){return{'model':db[_0x45ba59[_0x523d('0x1d')]],'as':_0x45ba59['as'],'attributes':_0x45ba59[_0x523d('0x1a')],'include':_0x45ba59[_0x523d('0x1c')]?_[_0x523d('0x1e')](_0x45ba59[_0x523d('0x1c')],function(_0x45295d){return{'model':db[_0x45295d[_0x523d('0x1d')]],'as':_0x45295d['as'],'attributes':_0x45295d['attributes'],'include':_0x45295d[_0x523d('0x1c')]?_[_0x523d('0x1e')](_0x45295d['include'],function(_0x161a52){return{'model':db[_0x161a52['model']],'as':_0x161a52['as'],'attributes':_0x161a52[_0x523d('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x523d('0xc')](function(_0x261d00){logger['info'](_0x523d('0x16'),_0x4937d4);logger[_0x523d('0xf')](_0x523d('0x16'),_0x4937d4,JSON['stringify'](_0x261d00));_0x54dd0a(_0x261d00);})[_0x523d('0x1f')](function(_0xa7ae45){logger[_0x523d('0x13')](_0x523d('0x16'),_0xa7ae45[_0x523d('0x14')],_0x4937d4);_0x309ffc(_0xc73af6['error'](0x1f4,_0xa7ae45[_0x523d('0x14')]));});});};exports['ShowSmsQueue']=function(_0x2d372c){var _0xeaa233=this;return new Promise(function(_0x2f249c,_0x26fad1){return db[_0x523d('0x20')][_0x523d('0x21')]({'raw':_0x2d372c[_0x523d('0x18')]?_0x2d372c[_0x523d('0x18')][_0x523d('0x22')]===undefined?!![]:![]:!![],'where':_0x2d372c[_0x523d('0x18')]?_0x2d372c[_0x523d('0x18')][_0x523d('0x19')]||null:null,'attributes':_0x2d372c['options']?_0x2d372c[_0x523d('0x18')]['attributes']||null:null,'include':_0x2d372c['options']?_0x2d372c[_0x523d('0x18')][_0x523d('0x1c')]?_[_0x523d('0x1e')](_0x2d372c[_0x523d('0x18')][_0x523d('0x1c')],function(_0x5bf4d6){return{'model':db[_0x5bf4d6[_0x523d('0x1d')]],'as':_0x5bf4d6['as'],'attributes':_0x5bf4d6[_0x523d('0x1a')],'include':_0x5bf4d6['include']?_[_0x523d('0x1e')](_0x5bf4d6[_0x523d('0x1c')],function(_0xeb5a9a){return{'model':db[_0xeb5a9a[_0x523d('0x1d')]],'as':_0xeb5a9a['as'],'attributes':_0xeb5a9a[_0x523d('0x1a')],'include':_0xeb5a9a['include']?_[_0x523d('0x1e')](_0xeb5a9a[_0x523d('0x1c')],function(_0x32a028){return{'model':db[_0x32a028[_0x523d('0x1d')]],'as':_0x32a028['as'],'attributes':_0x32a028[_0x523d('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x523d('0xc')](function(_0xe74594){logger[_0x523d('0xd')](_0x523d('0x23'),_0x2d372c);logger[_0x523d('0xf')](_0x523d('0x23'),_0x2d372c,JSON[_0x523d('0x12')](_0xe74594));_0x2f249c(_0xe74594);})['catch'](function(_0x28a394){logger[_0x523d('0x13')](_0x523d('0x23'),_0x28a394[_0x523d('0x14')],_0x2d372c);_0x26fad1(_0xeaa233[_0x523d('0x13')](0x1f4,_0x28a394['message']));});});};
\ No newline at end of file
+var _0xf533=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./smsQueue.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','SmsQueue,\x20%s,\x20%s','message','result','catch','GetSmsQueue','SmsQueue','findAll','options','raw','where','attributes','limit','include','map','model','find','ShowSmsQueue','lodash','moment','bluebird','ioredis'];(function(_0x27b42c,_0x1bbc67){var _0x2e931c=function(_0x2d59ab){while(--_0x2d59ab){_0x27b42c['push'](_0x27b42c['shift']());}};_0x2e931c(++_0x1bbc67);}(_0xf533,0x1b4));var _0x3f53=function(_0x4706a6,_0x5a1c63){_0x4706a6=_0x4706a6-0x0;var _0x1bb705=_0xf533[_0x4706a6];return _0x1bb705;};'use strict';var _=require(_0x3f53('0x0'));var util=require('util');var moment=require(_0x3f53('0x1'));var BPromise=require(_0x3f53('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3f53('0x3'));var db=require(_0x3f53('0x4'))['db'];var utils=require(_0x3f53('0x5'));var logger=require(_0x3f53('0x6'))(_0x3f53('0x7'));var config=require(_0x3f53('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3f53('0x9')][_0x3f53('0xa')]({'port':0x232a});config[_0x3f53('0xb')]=_['defaults'](config[_0x3f53('0xb')],{'host':_0x3f53('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3f53('0xb')]));require(_0x3f53('0xd'))[_0x3f53('0xe')](socket);function respondWithRpcPromise(_0x5e931a,_0x44eb3b,_0x29d9d5){return new BPromise(function(_0x5e2854,_0x52bd21){return client[_0x3f53('0xf')](_0x5e931a,_0x29d9d5)[_0x3f53('0x10')](function(_0x226b96){logger[_0x3f53('0x11')]('SmsQueue,\x20%s,\x20%s',_0x44eb3b,_0x3f53('0x12'));logger[_0x3f53('0x13')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x44eb3b,'request\x20sent',JSON[_0x3f53('0x14')](_0x226b96));if(_0x226b96['error']){if(_0x226b96[_0x3f53('0x15')][_0x3f53('0x16')]===0x1f4){logger[_0x3f53('0x15')](_0x3f53('0x17'),_0x44eb3b,_0x226b96[_0x3f53('0x15')][_0x3f53('0x18')]);return _0x52bd21(_0x226b96[_0x3f53('0x15')]['message']);}logger[_0x3f53('0x15')](_0x3f53('0x17'),_0x44eb3b,_0x226b96[_0x3f53('0x15')][_0x3f53('0x18')]);return _0x5e2854(_0x226b96['error'][_0x3f53('0x18')]);}else{logger[_0x3f53('0x11')]('SmsQueue,\x20%s,\x20%s',_0x44eb3b,_0x3f53('0x12'));_0x5e2854(_0x226b96[_0x3f53('0x19')]['message']);}})[_0x3f53('0x1a')](function(_0x32303c){logger['error'](_0x3f53('0x17'),_0x44eb3b,_0x32303c);_0x52bd21(_0x32303c);});});}exports[_0x3f53('0x1b')]=function(_0x223b17){var _0x545cdb=this;return new Promise(function(_0x124c17,_0x4b2bc1){return db[_0x3f53('0x1c')][_0x3f53('0x1d')]({'raw':_0x223b17[_0x3f53('0x1e')]?_0x223b17[_0x3f53('0x1e')][_0x3f53('0x1f')]===undefined?!![]:![]:!![],'where':_0x223b17[_0x3f53('0x1e')]?_0x223b17[_0x3f53('0x1e')][_0x3f53('0x20')]||null:null,'attributes':_0x223b17[_0x3f53('0x1e')]?_0x223b17[_0x3f53('0x1e')][_0x3f53('0x21')]||null:null,'limit':_0x223b17[_0x3f53('0x1e')]?_0x223b17[_0x3f53('0x1e')][_0x3f53('0x22')]||null:null,'include':_0x223b17[_0x3f53('0x1e')]?_0x223b17['options'][_0x3f53('0x23')]?_[_0x3f53('0x24')](_0x223b17[_0x3f53('0x1e')][_0x3f53('0x23')],function(_0x49df84){return{'model':db[_0x49df84['model']],'as':_0x49df84['as'],'attributes':_0x49df84['attributes'],'include':_0x49df84['include']?_['map'](_0x49df84[_0x3f53('0x23')],function(_0x509c83){return{'model':db[_0x509c83[_0x3f53('0x25')]],'as':_0x509c83['as'],'attributes':_0x509c83[_0x3f53('0x21')],'include':_0x509c83[_0x3f53('0x23')]?_['map'](_0x509c83[_0x3f53('0x23')],function(_0x19a43a){return{'model':db[_0x19a43a[_0x3f53('0x25')]],'as':_0x19a43a['as'],'attributes':_0x19a43a[_0x3f53('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d7b5b){logger[_0x3f53('0x11')]('GetSmsQueue',_0x223b17);logger[_0x3f53('0x13')]('GetSmsQueue',_0x223b17,JSON['stringify'](_0x2d7b5b));_0x124c17(_0x2d7b5b);})[_0x3f53('0x1a')](function(_0x53baa6){logger[_0x3f53('0x15')]('GetSmsQueue',_0x53baa6['message'],_0x223b17);_0x4b2bc1(_0x545cdb[_0x3f53('0x15')](0x1f4,_0x53baa6[_0x3f53('0x18')]));});});};exports['ShowSmsQueue']=function(_0x51e49f){var _0x12f549=this;return new Promise(function(_0x11d396,_0x18a31d){return db['SmsQueue'][_0x3f53('0x26')]({'raw':_0x51e49f['options']?_0x51e49f[_0x3f53('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x51e49f[_0x3f53('0x1e')]?_0x51e49f[_0x3f53('0x1e')]['where']||null:null,'attributes':_0x51e49f[_0x3f53('0x1e')]?_0x51e49f['options'][_0x3f53('0x21')]||null:null,'include':_0x51e49f[_0x3f53('0x1e')]?_0x51e49f[_0x3f53('0x1e')][_0x3f53('0x23')]?_[_0x3f53('0x24')](_0x51e49f[_0x3f53('0x1e')][_0x3f53('0x23')],function(_0x570ce2){return{'model':db[_0x570ce2[_0x3f53('0x25')]],'as':_0x570ce2['as'],'attributes':_0x570ce2['attributes'],'include':_0x570ce2[_0x3f53('0x23')]?_['map'](_0x570ce2[_0x3f53('0x23')],function(_0x4fe7bd){return{'model':db[_0x4fe7bd['model']],'as':_0x4fe7bd['as'],'attributes':_0x4fe7bd[_0x3f53('0x21')],'include':_0x4fe7bd[_0x3f53('0x23')]?_['map'](_0x4fe7bd[_0x3f53('0x23')],function(_0x24f671){return{'model':db[_0x24f671[_0x3f53('0x25')]],'as':_0x24f671['as'],'attributes':_0x24f671['attributes']};}):[]};}):[]};}):[]:[]})[_0x3f53('0x10')](function(_0x2121e5){logger[_0x3f53('0x11')](_0x3f53('0x27'),_0x51e49f);logger[_0x3f53('0x13')](_0x3f53('0x27'),_0x51e49f,JSON['stringify'](_0x2121e5));_0x11d396(_0x2121e5);})[_0x3f53('0x1a')](function(_0x5502cb){logger[_0x3f53('0x15')](_0x3f53('0x27'),_0x5502cb['message'],_0x51e49f);_0x18a31d(_0x12f549['error'](0x1f4,_0x5502cb['message']));});});};
\ No newline at end of file
index 0717729..e3fa43f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc90b=['save','remove','update','emit','removeListener','register','length','./smsQueue.events'];(function(_0x9fbc3b,_0x9e788d){var _0x1a7970=function(_0x4323c5){while(--_0x4323c5){_0x9fbc3b['push'](_0x9fbc3b['shift']());}};_0x1a7970(++_0x9e788d);}(_0xc90b,0x14f));var _0xbc90=function(_0x39b7df,_0x11bbec){_0x39b7df=_0x39b7df-0x0;var _0x11edbf=_0xc90b[_0x39b7df];return _0x11edbf;};'use strict';var SmsQueueEvents=require(_0xbc90('0x0'));var events=[_0xbc90('0x1'),_0xbc90('0x2'),_0xbc90('0x3')];function createListener(_0x495e72,_0x48d2df){return function(_0x353d5d){_0x48d2df[_0xbc90('0x4')](_0x495e72,_0x353d5d);};}function removeListener(_0x4f0892,_0x285d96){return function(){SmsQueueEvents[_0xbc90('0x5')](_0x4f0892,_0x285d96);};}exports[_0xbc90('0x6')]=function(_0x489b4d){for(var _0x5835c1=0x0,_0x17015b=events[_0xbc90('0x7')];_0x5835c1<_0x17015b;_0x5835c1++){var _0x2489b7=events[_0x5835c1];var _0x17586e=createListener('smsQueue:'+_0x2489b7,_0x489b4d);SmsQueueEvents['on'](_0x2489b7,_0x17586e);}};
\ No newline at end of file
+var _0x1b33=['smsQueue:','./smsQueue.events','save','remove','update','emit','removeListener','length'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x1b33,0x89));var _0x31b3=function(_0x30eb5b,_0x234476){_0x30eb5b=_0x30eb5b-0x0;var _0x559d73=_0x1b33[_0x30eb5b];return _0x559d73;};'use strict';var SmsQueueEvents=require(_0x31b3('0x0'));var events=[_0x31b3('0x1'),_0x31b3('0x2'),_0x31b3('0x3')];function createListener(_0x41d85b,_0x2a19b8){return function(_0x5cb1dd){_0x2a19b8[_0x31b3('0x4')](_0x41d85b,_0x5cb1dd);};}function removeListener(_0x2de03c,_0x1fe4f0){return function(){SmsQueueEvents[_0x31b3('0x5')](_0x2de03c,_0x1fe4f0);};}exports['register']=function(_0x412483){for(var _0xdb7177=0x0,_0x2b037d=events[_0x31b3('0x6')];_0xdb7177<_0x2b037d;_0xdb7177++){var _0xd215c4=events[_0xdb7177];var _0x38b90c=createListener(_0x31b3('0x7')+_0xd215c4,_0x412483);SmsQueueEvents['on'](_0xd215c4,_0x38b90c);}};
\ No newline at end of file
index 10d4d9c..f18e436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36a9=['post','put','/:id','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','show'];(function(_0x5e528a,_0xda2c0b){var _0x248784=function(_0xa47be9){while(--_0xa47be9){_0x5e528a['push'](_0x5e528a['shift']());}};_0x248784(++_0xda2c0b);}(_0x36a9,0x1a3));var _0x936a=function(_0x43a7d5,_0x528d76){_0x43a7d5=_0x43a7d5-0x0;var _0x2d5ab4=_0x36a9[_0x43a7d5];return _0x2d5ab4;};'use strict';var multer=require(_0x936a('0x0'));var util=require(_0x936a('0x1'));var path=require(_0x936a('0x2'));var timeout=require(_0x936a('0x3'));var express=require('express');var router=express[_0x936a('0x4')]();var fs_extra=require(_0x936a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x936a('0x6'));var config=require(_0x936a('0x7'));var controller=require('./smsQueueReport.controller');router[_0x936a('0x8')]('/',auth['isAuthenticated'](),controller[_0x936a('0x9')]);router['get'](_0x936a('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x936a('0x8')]('/:id',auth[_0x936a('0xb')](),controller[_0x936a('0xc')]);router[_0x936a('0xd')]('/',auth[_0x936a('0xb')](),controller['create']);router[_0x936a('0xe')](_0x936a('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x936a('0x10')](_0x936a('0xf'),auth['isAuthenticated'](),controller[_0x936a('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x7680=['put','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','post','create'];(function(_0x93be41,_0x46c7f2){var _0x5cf92a=function(_0x38096a){while(--_0x38096a){_0x93be41['push'](_0x93be41['shift']());}};_0x5cf92a(++_0x46c7f2);}(_0x7680,0x178));var _0x0768=function(_0xd7a900,_0x9e1e7e){_0xd7a900=_0xd7a900-0x0;var _0x585433=_0x7680[_0xd7a900];return _0x585433;};'use strict';var multer=require('multer');var util=require(_0x0768('0x0'));var path=require(_0x0768('0x1'));var timeout=require('connect-timeout');var express=require(_0x0768('0x2'));var router=express[_0x0768('0x3')]();var fs_extra=require(_0x0768('0x4'));var auth=require(_0x0768('0x5'));var interaction=require(_0x0768('0x6'));var config=require(_0x0768('0x7'));var controller=require('./smsQueueReport.controller');router[_0x0768('0x8')]('/',auth[_0x0768('0x9')](),controller['index']);router['get'](_0x0768('0xa'),auth['isAuthenticated'](),controller[_0x0768('0xb')]);router[_0x0768('0x8')](_0x0768('0xc'),auth[_0x0768('0x9')](),controller['show']);router[_0x0768('0xd')]('/',auth[_0x0768('0x9')](),controller[_0x0768('0xe')]);router[_0x0768('0xf')](_0x0768('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x0768('0xc'),auth[_0x0768('0x9')](),controller[_0x0768('0x10')]);module['exports']=router;
\ No newline at end of file
index 9685949..f2fabb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa092=['DATE','sequelize','STRING'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xa092,0x17b));var _0x2a09=function(_0x2388be,_0x43ebae){_0x2388be=_0x2388be-0x0;var _0x13ac52=_0xa092[_0x2388be];return _0x13ac52;};'use strict';var moment=require('moment');var Sequelize=require(_0x2a09('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2a09('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x2a09('0x1')]},'joinAt':{'type':Sequelize[_0x2a09('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x2a09('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x2a09('0x1')]}};
\ No newline at end of file
+var _0x6152=['sequelize','exports','DATE','STRING','moment'];(function(_0x3b39b1,_0x93813){var _0x44ce52=function(_0x4a2f60){while(--_0x4a2f60){_0x3b39b1['push'](_0x3b39b1['shift']());}};_0x44ce52(++_0x93813);}(_0x6152,0x95));var _0x2615=function(_0x197f28,_0x590307){_0x197f28=_0x197f28-0x0;var _0x271b00=_0x6152[_0x197f28];return _0x271b00;};'use strict';var moment=require(_0x2615('0x0'));var Sequelize=require(_0x2615('0x1'));module[_0x2615('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x2615('0x3')]},'leaveAt':{'type':Sequelize[_0x2615('0x3')]},'acceptAt':{'type':Sequelize[_0x2615('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x2615('0x4')]}};
\ No newline at end of file
index e0df551..4fa5c02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe880=['limit','count','set','Content-Range','update','then','end','stack','name','send','index','map','SmsQueueReport','rawAttributes','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe880,0x1d6));var _0x0e88=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0xe880[_0x45783c];return _0x1161da;};'use strict';var emlformat=require(_0x0e88('0x0'));var rimraf=require(_0x0e88('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e88('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0e88('0x3'));var util=require(_0x0e88('0x4'));var path=require(_0x0e88('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0e88('0x6'));var fs=require('fs');var fs_extra=require(_0x0e88('0x7'));var _=require(_0x0e88('0x8'));var squel=require(_0x0e88('0x9'));var crypto=require(_0x0e88('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0e88('0xb'));var querystring=require(_0x0e88('0xc'));var Papa=require('papaparse');var Redis=require(_0x0e88('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x0e88('0xe'));var as=require(_0x0e88('0xf'));var hardwareService=require(_0x0e88('0x10'));var logger=require(_0x0e88('0x11'))(_0x0e88('0x12'));var utils=require(_0x0e88('0x13'));var config=require(_0x0e88('0x14'));var licenseUtil=require(_0x0e88('0x15'));var db=require(_0x0e88('0x16'))['db'];function respondWithStatusCode(_0x3c7bf9,_0x584653){_0x584653=_0x584653||0xcc;return function(_0x4acc68){if(_0x4acc68){return _0x3c7bf9['sendStatus'](_0x584653);}return _0x3c7bf9[_0x0e88('0x17')](_0x584653)['end']();};}function respondWithResult(_0x5384de,_0x2afff0){_0x2afff0=_0x2afff0||0xc8;return function(_0x3b38c0){if(_0x3b38c0){return _0x5384de[_0x0e88('0x17')](_0x2afff0)[_0x0e88('0x18')](_0x3b38c0);}};}function respondWithFilteredResult(_0x49ad36,_0x1a8a3c){return function(_0x6b2a1d){if(_0x6b2a1d){var _0x186e1d=typeof _0x1a8a3c[_0x0e88('0x19')]===_0x0e88('0x1a')&&typeof _0x1a8a3c[_0x0e88('0x1b')]===_0x0e88('0x1a');var _0xac442a=_0x6b2a1d['count'];var _0xe89b0d=_0x186e1d?0x0:_0x1a8a3c[_0x0e88('0x19')];var _0x26f1e7=_0x186e1d?_0x6b2a1d[_0x0e88('0x1c')]:_0x1a8a3c['offset']+_0x1a8a3c[_0x0e88('0x1b')];var _0x47246f;if(_0x26f1e7>=_0xac442a){_0x26f1e7=_0xac442a;_0x47246f=0xc8;}else{_0x47246f=0xce;}_0x49ad36[_0x0e88('0x17')](_0x47246f);return _0x49ad36[_0x0e88('0x1d')](_0x0e88('0x1e'),_0xe89b0d+'-'+_0x26f1e7+'/'+_0xac442a)['json'](_0x6b2a1d);}return null;};}function patchUpdates(_0x3ead55){return function(_0x120527){try{jsonpatch['apply'](_0x120527,_0x3ead55,!![]);}catch(_0x96bc3a){return BPromise['reject'](_0x96bc3a);}return _0x120527['save']();};}function saveUpdates(_0x352764,_0xd8fdaa){return function(_0x17056f){if(_0x17056f){return _0x17056f[_0x0e88('0x1f')](_0x352764)[_0x0e88('0x20')](function(_0x385bdc){return _0x385bdc;});}return null;};}function removeEntity(_0x2fef5c,_0x16cb0a){return function(_0x48512c){if(_0x48512c){return _0x48512c['destroy']()['then'](function(){_0x2fef5c[_0x0e88('0x17')](0xcc)[_0x0e88('0x21')]();});}};}function handleEntityNotFound(_0x3d06ad,_0x33a7d8){return function(_0x59ac51){if(!_0x59ac51){_0x3d06ad['sendStatus'](0x194);}return _0x59ac51;};}function handleError(_0x1f0354,_0x27f6a2){_0x27f6a2=_0x27f6a2||0x1f4;return function(_0x339421){logger['error'](_0x339421[_0x0e88('0x22')]);if(_0x339421[_0x0e88('0x23')]){delete _0x339421['name'];}_0x1f0354[_0x0e88('0x17')](_0x27f6a2)[_0x0e88('0x24')](_0x339421);};}exports[_0x0e88('0x25')]=function(_0x138dff,_0x3bf846){var _0x32d031={},_0x186ea9={},_0x38d630={'count':0x0,'rows':[]};var _0x19d1f2=_[_0x0e88('0x26')](db[_0x0e88('0x27')][_0x0e88('0x28')],function(_0x573098){return{'name':_0x573098['fieldName'],'type':_0x573098['type'][_0x0e88('0x29')]};});_0x186ea9[_0x0e88('0x2a')]=_[_0x0e88('0x26')](_0x19d1f2,'name');_0x186ea9['query']=_[_0x0e88('0x2b')](_0x138dff['query']);_0x186ea9[_0x0e88('0x2c')]=_[_0x0e88('0x2d')](_0x186ea9[_0x0e88('0x2a')],_0x186ea9[_0x0e88('0x2e')]);_0x32d031['attributes']=_[_0x0e88('0x2d')](_0x186ea9[_0x0e88('0x2a')],qs['fields'](_0x138dff[_0x0e88('0x2e')][_0x0e88('0x2f')]));_0x32d031[_0x0e88('0x30')]=_0x32d031[_0x0e88('0x30')][_0x0e88('0x31')]?_0x32d031[_0x0e88('0x30')]:_0x186ea9[_0x0e88('0x2a')];if(!_0x138dff[_0x0e88('0x2e')][_0x0e88('0x32')](_0x0e88('0x33'))){_0x32d031[_0x0e88('0x1b')]=qs[_0x0e88('0x1b')](_0x138dff['query'][_0x0e88('0x1b')]);_0x32d031[_0x0e88('0x19')]=qs[_0x0e88('0x19')](_0x138dff[_0x0e88('0x2e')][_0x0e88('0x19')]);}_0x32d031[_0x0e88('0x34')]=qs['sort'](_0x138dff['query'][_0x0e88('0x35')]);_0x32d031['where']=qs['filters'](_['pick'](_0x138dff['query'],_0x186ea9[_0x0e88('0x2c')]),_0x19d1f2);if(_0x138dff['query'][_0x0e88('0x36')]){_0x32d031[_0x0e88('0x37')]=_[_0x0e88('0x38')](_0x32d031[_0x0e88('0x37')],{'$or':_[_0x0e88('0x26')](_0x19d1f2,function(_0xb23665){if(_0xb23665[_0x0e88('0x39')]!==_0x0e88('0x3a')){var _0x5b90c0={};_0x5b90c0[_0xb23665[_0x0e88('0x23')]]={'$like':'%'+_0x138dff[_0x0e88('0x2e')][_0x0e88('0x36')]+'%'};return _0x5b90c0;}})});}_0x32d031=_[_0x0e88('0x38')]({},_0x32d031,_0x138dff['options']);var _0x2538f3={'where':_0x32d031['where']};return db['SmsQueueReport'][_0x0e88('0x1c')](_0x2538f3)[_0x0e88('0x20')](function(_0x5dc34e){_0x38d630[_0x0e88('0x1c')]=_0x5dc34e;if(_0x138dff[_0x0e88('0x2e')][_0x0e88('0x3b')]){_0x32d031['include']=[{'all':!![]}];}return db[_0x0e88('0x27')][_0x0e88('0x3c')](_0x32d031);})[_0x0e88('0x20')](function(_0x966185){_0x38d630[_0x0e88('0x3d')]=_0x966185;return _0x38d630;})['then'](respondWithFilteredResult(_0x3bf846,_0x32d031))[_0x0e88('0x3e')](handleError(_0x3bf846,null));};exports[_0x0e88('0x3f')]=function(_0x5caace,_0x57ee32){var _0x7eb8c2={'raw':!![],'where':{'id':_0x5caace[_0x0e88('0x40')]['id']}},_0x231673={};_0x231673[_0x0e88('0x2a')]=_[_0x0e88('0x2b')](db[_0x0e88('0x27')][_0x0e88('0x28')]);_0x231673[_0x0e88('0x2e')]=_[_0x0e88('0x2b')](_0x5caace['query']);_0x231673[_0x0e88('0x2c')]=_[_0x0e88('0x2d')](_0x231673['model'],_0x231673[_0x0e88('0x2e')]);_0x7eb8c2[_0x0e88('0x30')]=_[_0x0e88('0x2d')](_0x231673['model'],qs[_0x0e88('0x2f')](_0x5caace[_0x0e88('0x2e')]['fields']));_0x7eb8c2[_0x0e88('0x30')]=_0x7eb8c2[_0x0e88('0x30')][_0x0e88('0x31')]?_0x7eb8c2[_0x0e88('0x30')]:_0x231673[_0x0e88('0x2a')];if(_0x5caace['query']['includeAll']){_0x7eb8c2[_0x0e88('0x41')]=[{'all':!![]}];}_0x7eb8c2=_[_0x0e88('0x38')]({},_0x7eb8c2,_0x5caace[_0x0e88('0x42')]);return db['SmsQueueReport'][_0x0e88('0x43')](_0x7eb8c2)['then'](handleEntityNotFound(_0x57ee32,null))[_0x0e88('0x20')](respondWithResult(_0x57ee32,null))[_0x0e88('0x3e')](handleError(_0x57ee32,null));};exports[_0x0e88('0x44')]=function(_0x5171da,_0x4b4c15){return db[_0x0e88('0x27')][_0x0e88('0x44')](_0x5171da[_0x0e88('0x45')],{})['then'](respondWithResult(_0x4b4c15,0xc9))[_0x0e88('0x3e')](handleError(_0x4b4c15,null));};exports[_0x0e88('0x1f')]=function(_0x5dd72a,_0x1ed042){if(_0x5dd72a[_0x0e88('0x45')]['id']){delete _0x5dd72a[_0x0e88('0x45')]['id'];}return db[_0x0e88('0x27')][_0x0e88('0x43')]({'where':{'id':_0x5dd72a[_0x0e88('0x40')]['id']}})[_0x0e88('0x20')](handleEntityNotFound(_0x1ed042,null))[_0x0e88('0x20')](saveUpdates(_0x5dd72a[_0x0e88('0x45')],null))['then'](respondWithResult(_0x1ed042,null))[_0x0e88('0x3e')](handleError(_0x1ed042,null));};exports['destroy']=function(_0x572357,_0x1774f2){return db[_0x0e88('0x27')]['find']({'where':{'id':_0x572357[_0x0e88('0x40')]['id']}})[_0x0e88('0x20')](handleEntityNotFound(_0x1774f2,null))['then'](removeEntity(_0x1774f2,null))['catch'](handleError(_0x1774f2,null));};exports[_0x0e88('0x46')]=function(_0x243ff7,_0x4850cb){return db['SmsQueueReport']['describe']()[_0x0e88('0x20')](respondWithResult(_0x4850cb,null))[_0x0e88('0x3e')](handleError(_0x4850cb,null));};
\ No newline at end of file
+var _0xcfd5=['SmsQueueReport','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','rawAttributes','include','find','create','body','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','index'];(function(_0x21b706,_0x1022f4){var _0x13b94a=function(_0x3116da){while(--_0x3116da){_0x21b706['push'](_0x21b706['shift']());}};_0x13b94a(++_0x1022f4);}(_0xcfd5,0x100));var _0x5cfd=function(_0x3bb279,_0x1fe179){_0x3bb279=_0x3bb279-0x0;var _0x33ff19=_0xcfd5[_0x3bb279];return _0x33ff19;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5cfd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5cfd('0x1'));var rp=require(_0x5cfd('0x2'));var moment=require('moment');var BPromise=require(_0x5cfd('0x3'));var Mustache=require(_0x5cfd('0x4'));var util=require(_0x5cfd('0x5'));var path=require(_0x5cfd('0x6'));var sox=require(_0x5cfd('0x7'));var csv=require(_0x5cfd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5cfd('0x9'));var _=require(_0x5cfd('0xa'));var squel=require(_0x5cfd('0xb'));var crypto=require(_0x5cfd('0xc'));var jsforce=require(_0x5cfd('0xd'));var deskjs=require(_0x5cfd('0xe'));var toCsv=require(_0x5cfd('0x8'));var querystring=require(_0x5cfd('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5cfd('0x10'));var qs=require(_0x5cfd('0x11'));var as=require(_0x5cfd('0x12'));var hardwareService=require(_0x5cfd('0x13'));var logger=require(_0x5cfd('0x14'))(_0x5cfd('0x15'));var utils=require('../../config/utils');var config=require(_0x5cfd('0x16'));var licenseUtil=require(_0x5cfd('0x17'));var db=require(_0x5cfd('0x18'))['db'];function respondWithStatusCode(_0x187d55,_0x409fff){_0x409fff=_0x409fff||0xcc;return function(_0x84b068){if(_0x84b068){return _0x187d55[_0x5cfd('0x19')](_0x409fff);}return _0x187d55[_0x5cfd('0x1a')](_0x409fff)[_0x5cfd('0x1b')]();};}function respondWithResult(_0x4c19bd,_0x40e58f){_0x40e58f=_0x40e58f||0xc8;return function(_0x4865cb){if(_0x4865cb){return _0x4c19bd[_0x5cfd('0x1a')](_0x40e58f)['json'](_0x4865cb);}};}function respondWithFilteredResult(_0x3e997f,_0x224936){return function(_0x2ba9f5){if(_0x2ba9f5){var _0x4b1aaf=typeof _0x224936[_0x5cfd('0x1c')]===_0x5cfd('0x1d')&&typeof _0x224936[_0x5cfd('0x1e')]==='undefined';var _0xc50481=_0x2ba9f5[_0x5cfd('0x1f')];var _0x52df3f=_0x4b1aaf?0x0:_0x224936[_0x5cfd('0x1c')];var _0x4b5d8d=_0x4b1aaf?_0x2ba9f5[_0x5cfd('0x1f')]:_0x224936[_0x5cfd('0x1c')]+_0x224936[_0x5cfd('0x1e')];var _0x2caed9;if(_0x4b5d8d>=_0xc50481){_0x4b5d8d=_0xc50481;_0x2caed9=0xc8;}else{_0x2caed9=0xce;}_0x3e997f[_0x5cfd('0x1a')](_0x2caed9);return _0x3e997f[_0x5cfd('0x20')](_0x5cfd('0x21'),_0x52df3f+'-'+_0x4b5d8d+'/'+_0xc50481)[_0x5cfd('0x22')](_0x2ba9f5);}return null;};}function patchUpdates(_0x6cb869){return function(_0x19b293){try{jsonpatch[_0x5cfd('0x23')](_0x19b293,_0x6cb869,!![]);}catch(_0x4df8c5){return BPromise[_0x5cfd('0x24')](_0x4df8c5);}return _0x19b293[_0x5cfd('0x25')]();};}function saveUpdates(_0x23b33e,_0x53d51e){return function(_0x313456){if(_0x313456){return _0x313456[_0x5cfd('0x26')](_0x23b33e)[_0x5cfd('0x27')](function(_0x20f2e2){return _0x20f2e2;});}return null;};}function removeEntity(_0x509a82,_0x5c3781){return function(_0x5cc8b8){if(_0x5cc8b8){return _0x5cc8b8[_0x5cfd('0x28')]()['then'](function(){_0x509a82['status'](0xcc)[_0x5cfd('0x1b')]();});}};}function handleEntityNotFound(_0x2c917f,_0x4bf63b){return function(_0x4e0969){if(!_0x4e0969){_0x2c917f['sendStatus'](0x194);}return _0x4e0969;};}function handleError(_0x38d03c,_0x53f7e7){_0x53f7e7=_0x53f7e7||0x1f4;return function(_0x1b155a){logger['error'](_0x1b155a[_0x5cfd('0x29')]);if(_0x1b155a[_0x5cfd('0x2a')]){delete _0x1b155a['name'];}_0x38d03c[_0x5cfd('0x1a')](_0x53f7e7)['send'](_0x1b155a);};}exports[_0x5cfd('0x2b')]=function(_0x4025a0,_0x5d4989){var _0x5794cb={},_0x292b25={},_0x16bc91={'count':0x0,'rows':[]};var _0x571b49=_['map'](db[_0x5cfd('0x2c')]['rawAttributes'],function(_0x2051db){return{'name':_0x2051db['fieldName'],'type':_0x2051db[_0x5cfd('0x2d')][_0x5cfd('0x2e')]};});_0x292b25['model']=_[_0x5cfd('0x2f')](_0x571b49,_0x5cfd('0x2a'));_0x292b25[_0x5cfd('0x30')]=_[_0x5cfd('0x31')](_0x4025a0['query']);_0x292b25[_0x5cfd('0x32')]=_[_0x5cfd('0x33')](_0x292b25['model'],_0x292b25['query']);_0x5794cb[_0x5cfd('0x34')]=_[_0x5cfd('0x33')](_0x292b25[_0x5cfd('0x35')],qs['fields'](_0x4025a0[_0x5cfd('0x30')][_0x5cfd('0x36')]));_0x5794cb['attributes']=_0x5794cb[_0x5cfd('0x34')][_0x5cfd('0x37')]?_0x5794cb[_0x5cfd('0x34')]:_0x292b25['model'];if(!_0x4025a0[_0x5cfd('0x30')]['hasOwnProperty'](_0x5cfd('0x38'))){_0x5794cb[_0x5cfd('0x1e')]=qs[_0x5cfd('0x1e')](_0x4025a0[_0x5cfd('0x30')]['limit']);_0x5794cb[_0x5cfd('0x1c')]=qs[_0x5cfd('0x1c')](_0x4025a0['query'][_0x5cfd('0x1c')]);}_0x5794cb[_0x5cfd('0x39')]=qs[_0x5cfd('0x3a')](_0x4025a0[_0x5cfd('0x30')][_0x5cfd('0x3a')]);_0x5794cb['where']=qs[_0x5cfd('0x32')](_[_0x5cfd('0x3b')](_0x4025a0[_0x5cfd('0x30')],_0x292b25[_0x5cfd('0x32')]),_0x571b49);if(_0x4025a0[_0x5cfd('0x30')][_0x5cfd('0x3c')]){_0x5794cb['where']=_[_0x5cfd('0x3d')](_0x5794cb['where'],{'$or':_[_0x5cfd('0x2f')](_0x571b49,function(_0x2e97d3){if(_0x2e97d3[_0x5cfd('0x2d')]!==_0x5cfd('0x3e')){var _0x18791d={};_0x18791d[_0x2e97d3['name']]={'$like':'%'+_0x4025a0[_0x5cfd('0x30')]['filter']+'%'};return _0x18791d;}})});}_0x5794cb=_['merge']({},_0x5794cb,_0x4025a0[_0x5cfd('0x3f')]);var _0x30d6d8={'where':_0x5794cb['where']};return db['SmsQueueReport']['count'](_0x30d6d8)[_0x5cfd('0x27')](function(_0x28db87){_0x16bc91[_0x5cfd('0x1f')]=_0x28db87;if(_0x4025a0[_0x5cfd('0x30')][_0x5cfd('0x40')]){_0x5794cb['include']=[{'all':!![]}];}return db['SmsQueueReport'][_0x5cfd('0x41')](_0x5794cb);})[_0x5cfd('0x27')](function(_0x5a54a0){_0x16bc91[_0x5cfd('0x42')]=_0x5a54a0;return _0x16bc91;})[_0x5cfd('0x27')](respondWithFilteredResult(_0x5d4989,_0x5794cb))[_0x5cfd('0x43')](handleError(_0x5d4989,null));};exports['show']=function(_0x547b58,_0x4b65f8){var _0x298d6c={'raw':!![],'where':{'id':_0x547b58[_0x5cfd('0x44')]['id']}},_0x155e80={};_0x155e80['model']=_['keys'](db[_0x5cfd('0x2c')][_0x5cfd('0x45')]);_0x155e80['query']=_['keys'](_0x547b58[_0x5cfd('0x30')]);_0x155e80['filters']=_[_0x5cfd('0x33')](_0x155e80[_0x5cfd('0x35')],_0x155e80[_0x5cfd('0x30')]);_0x298d6c[_0x5cfd('0x34')]=_[_0x5cfd('0x33')](_0x155e80[_0x5cfd('0x35')],qs[_0x5cfd('0x36')](_0x547b58[_0x5cfd('0x30')][_0x5cfd('0x36')]));_0x298d6c['attributes']=_0x298d6c[_0x5cfd('0x34')][_0x5cfd('0x37')]?_0x298d6c[_0x5cfd('0x34')]:_0x155e80[_0x5cfd('0x35')];if(_0x547b58[_0x5cfd('0x30')][_0x5cfd('0x40')]){_0x298d6c[_0x5cfd('0x46')]=[{'all':!![]}];}_0x298d6c=_['merge']({},_0x298d6c,_0x547b58['options']);return db[_0x5cfd('0x2c')][_0x5cfd('0x47')](_0x298d6c)[_0x5cfd('0x27')](handleEntityNotFound(_0x4b65f8,null))[_0x5cfd('0x27')](respondWithResult(_0x4b65f8,null))[_0x5cfd('0x43')](handleError(_0x4b65f8,null));};exports[_0x5cfd('0x48')]=function(_0x5ab551,_0x37d720){return db[_0x5cfd('0x2c')][_0x5cfd('0x48')](_0x5ab551[_0x5cfd('0x49')],{})[_0x5cfd('0x27')](respondWithResult(_0x37d720,0xc9))[_0x5cfd('0x43')](handleError(_0x37d720,null));};exports['update']=function(_0x4480c9,_0xd23297){if(_0x4480c9[_0x5cfd('0x49')]['id']){delete _0x4480c9['body']['id'];}return db['SmsQueueReport'][_0x5cfd('0x47')]({'where':{'id':_0x4480c9['params']['id']}})[_0x5cfd('0x27')](handleEntityNotFound(_0xd23297,null))[_0x5cfd('0x27')](saveUpdates(_0x4480c9[_0x5cfd('0x49')],null))[_0x5cfd('0x27')](respondWithResult(_0xd23297,null))[_0x5cfd('0x43')](handleError(_0xd23297,null));};exports['destroy']=function(_0x2148d2,_0x22005b){return db[_0x5cfd('0x2c')][_0x5cfd('0x47')]({'where':{'id':_0x2148d2['params']['id']}})[_0x5cfd('0x27')](handleEntityNotFound(_0x22005b,null))[_0x5cfd('0x27')](removeEntity(_0x22005b,null))[_0x5cfd('0x43')](handleError(_0x22005b,null));};exports[_0x5cfd('0x4a')]=function(_0x2bbd40,_0x316700){return db[_0x5cfd('0x2c')][_0x5cfd('0x4a')]()[_0x5cfd('0x27')](respondWithResult(_0x316700,null))[_0x5cfd('0x43')](handleError(_0x316700,null));};
\ No newline at end of file
index 78cc0b1..9bede4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x3e256e,_0x2452db){var _0x46597b=function(_0x54c7fa){while(--_0x54c7fa){_0x3e256e['push'](_0x3e256e['shift']());}};_0x46597b(++_0x2452db);}(_0xb7e7,0x121));var _0x7b7e=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xb7e7[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x2ee9c4,_0x4d50f8){var _0x47054e=function(_0x1630fa){while(--_0x1630fa){_0x2ee9c4['push'](_0x2ee9c4['shift']());}};_0x47054e(++_0x4d50f8);}(_0xb7e7,0x121));var _0x7b7e=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0xb7e7[_0xe66cf2];return _0x2d84e7;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index b82d912..2e6e209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58f6=['catch','SmsQueueReport','create','options','raw','CreateSmsQueueReport','UpdateSmsQueueReport','update','body','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','SmsQueueReport,\x20%s,\x20%s','request\x20sent','result'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x58f6,0x6d));var _0x658f=function(_0x4e0238,_0x7ab8e){_0x4e0238=_0x4e0238-0x0;var _0x18a8e4=_0x58f6[_0x4e0238];return _0x18a8e4;};'use strict';var _=require(_0x658f('0x0'));var util=require(_0x658f('0x1'));var moment=require(_0x658f('0x2'));var BPromise=require(_0x658f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x658f('0x4'));var db=require(_0x658f('0x5'))['db'];var utils=require(_0x658f('0x6'));var logger=require(_0x658f('0x7'))(_0x658f('0x8'));var config=require(_0x658f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x658f('0xa')][_0x658f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bea4d,_0x116e6a,_0x14a350){return new BPromise(function(_0x2d81aa,_0x25b542){return client[_0x658f('0xc')](_0x2bea4d,_0x14a350)[_0x658f('0xd')](function(_0x52d7f6){logger[_0x658f('0xe')]('SmsQueueReport,\x20%s,\x20%s',_0x116e6a,'request\x20sent');logger[_0x658f('0xf')](_0x658f('0x10'),_0x116e6a,'request\x20sent',JSON[_0x658f('0x11')](_0x52d7f6));if(_0x52d7f6[_0x658f('0x12')]){if(_0x52d7f6[_0x658f('0x12')]['code']===0x1f4){logger[_0x658f('0x12')]('SmsQueueReport,\x20%s,\x20%s',_0x116e6a,_0x52d7f6['error'][_0x658f('0x13')]);return _0x25b542(_0x52d7f6['error'][_0x658f('0x13')]);}logger['error'](_0x658f('0x14'),_0x116e6a,_0x52d7f6[_0x658f('0x12')][_0x658f('0x13')]);return _0x2d81aa(_0x52d7f6[_0x658f('0x12')][_0x658f('0x13')]);}else{logger[_0x658f('0xe')](_0x658f('0x14'),_0x116e6a,_0x658f('0x15'));_0x2d81aa(_0x52d7f6[_0x658f('0x16')][_0x658f('0x13')]);}})[_0x658f('0x17')](function(_0x52a97){logger[_0x658f('0x12')](_0x658f('0x14'),_0x116e6a,_0x52a97);_0x25b542(_0x52a97);});});}exports['CreateSmsQueueReport']=function(_0x2bdd44){var _0x5c7cb3=this;return new Promise(function(_0x5aaba0,_0x559eb6){return db[_0x658f('0x18')][_0x658f('0x19')](_0x2bdd44['body'],{'raw':_0x2bdd44[_0x658f('0x1a')]?_0x2bdd44[_0x658f('0x1a')][_0x658f('0x1b')]===undefined?!![]:![]:!![]})[_0x658f('0xd')](function(_0x1b23b6){logger[_0x658f('0xe')](_0x658f('0x1c'),_0x2bdd44);logger[_0x658f('0xf')](_0x658f('0x1c'),_0x2bdd44,JSON[_0x658f('0x11')](_0x1b23b6));_0x5aaba0(_0x1b23b6);})[_0x658f('0x17')](function(_0x1087d7){logger[_0x658f('0x12')](_0x658f('0x1c'),_0x1087d7[_0x658f('0x13')],_0x2bdd44);_0x559eb6(_0x5c7cb3[_0x658f('0x12')](0x1f4,_0x1087d7[_0x658f('0x13')]));});});};exports[_0x658f('0x1d')]=function(_0x319356){var _0x5a896b=this;return new Promise(function(_0x34d62f,_0x56f784){return db[_0x658f('0x18')][_0x658f('0x1e')](_0x319356[_0x658f('0x1f')],{'raw':_0x319356['options']?_0x319356[_0x658f('0x1a')][_0x658f('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x319356[_0x658f('0x1a')]?_0x319356['options']['where']||null:null,'attributes':_0x319356[_0x658f('0x1a')]?_0x319356['options'][_0x658f('0x20')]||null:null,'limit':_0x319356['options']?_0x319356[_0x658f('0x1a')]['limit']||null:null})[_0x658f('0xd')](function(_0x5a8bbf){logger[_0x658f('0xe')](_0x658f('0x1d'),_0x319356);logger[_0x658f('0xf')]('UpdateSmsQueueReport',_0x319356,JSON['stringify'](_0x5a8bbf));_0x34d62f(_0x5a8bbf);})[_0x658f('0x17')](function(_0x15f6db){logger[_0x658f('0x12')](_0x658f('0x1d'),_0x15f6db[_0x658f('0x13')],_0x319356);_0x56f784(_0x5a896b[_0x658f('0x12')](0x1f4,_0x15f6db[_0x658f('0x13')]));});});};
\ No newline at end of file
+var _0xf1c8=['SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','attributes','UpdateSmsQueueReport','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x232e6f,_0x8c8298){var _0x15b18b=function(_0x5652bd){while(--_0x5652bd){_0x232e6f['push'](_0x232e6f['shift']());}};_0x15b18b(++_0x8c8298);}(_0xf1c8,0x183));var _0x8f1c=function(_0xefe481,_0x3c9ddf){_0xefe481=_0xefe481-0x0;var _0x4781bc=_0xf1c8[_0xefe481];return _0x4781bc;};'use strict';var _=require(_0x8f1c('0x0'));var util=require('util');var moment=require(_0x8f1c('0x1'));var BPromise=require(_0x8f1c('0x2'));var rs=require(_0x8f1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8f1c('0x4'))['db'];var utils=require(_0x8f1c('0x5'));var logger=require(_0x8f1c('0x6'))('rpc');var config=require(_0x8f1c('0x7'));var jayson=require(_0x8f1c('0x8'));var client=jayson['client'][_0x8f1c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2d1c6a,_0x3bb0c6,_0xfd9e59){return new BPromise(function(_0x2c3e98,_0x2c4de0){return client[_0x8f1c('0xa')](_0x2d1c6a,_0xfd9e59)[_0x8f1c('0xb')](function(_0x2c9526){logger[_0x8f1c('0xc')](_0x8f1c('0xd'),_0x3bb0c6,_0x8f1c('0xe'));logger[_0x8f1c('0xf')](_0x8f1c('0x10'),_0x3bb0c6,_0x8f1c('0xe'),JSON[_0x8f1c('0x11')](_0x2c9526));if(_0x2c9526[_0x8f1c('0x12')]){if(_0x2c9526['error'][_0x8f1c('0x13')]===0x1f4){logger[_0x8f1c('0x12')](_0x8f1c('0xd'),_0x3bb0c6,_0x2c9526[_0x8f1c('0x12')]['message']);return _0x2c4de0(_0x2c9526[_0x8f1c('0x12')][_0x8f1c('0x14')]);}logger[_0x8f1c('0x12')](_0x8f1c('0xd'),_0x3bb0c6,_0x2c9526[_0x8f1c('0x12')][_0x8f1c('0x14')]);return _0x2c3e98(_0x2c9526[_0x8f1c('0x12')]['message']);}else{logger[_0x8f1c('0xc')]('SmsQueueReport,\x20%s,\x20%s',_0x3bb0c6,'request\x20sent');_0x2c3e98(_0x2c9526[_0x8f1c('0x15')][_0x8f1c('0x14')]);}})[_0x8f1c('0x16')](function(_0x512020){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x3bb0c6,_0x512020);_0x2c4de0(_0x512020);});});}exports[_0x8f1c('0x17')]=function(_0x2a8cf0){var _0x3664b0=this;return new Promise(function(_0x2c04e1,_0x461ea2){return db[_0x8f1c('0x18')][_0x8f1c('0x19')](_0x2a8cf0[_0x8f1c('0x1a')],{'raw':_0x2a8cf0[_0x8f1c('0x1b')]?_0x2a8cf0['options'][_0x8f1c('0x1c')]===undefined?!![]:![]:!![]})[_0x8f1c('0xb')](function(_0x48f2a7){logger[_0x8f1c('0xc')](_0x8f1c('0x17'),_0x2a8cf0);logger[_0x8f1c('0xf')](_0x8f1c('0x17'),_0x2a8cf0,JSON[_0x8f1c('0x11')](_0x48f2a7));_0x2c04e1(_0x48f2a7);})['catch'](function(_0x312760){logger[_0x8f1c('0x12')]('CreateSmsQueueReport',_0x312760[_0x8f1c('0x14')],_0x2a8cf0);_0x461ea2(_0x3664b0[_0x8f1c('0x12')](0x1f4,_0x312760['message']));});});};exports['UpdateSmsQueueReport']=function(_0x2513f3){var _0x528786=this;return new Promise(function(_0x3793fb,_0x308b0c){return db[_0x8f1c('0x18')]['update'](_0x2513f3[_0x8f1c('0x1a')],{'raw':_0x2513f3[_0x8f1c('0x1b')]?_0x2513f3['options'][_0x8f1c('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2513f3[_0x8f1c('0x1b')]?_0x2513f3[_0x8f1c('0x1b')]['where']||null:null,'attributes':_0x2513f3[_0x8f1c('0x1b')]?_0x2513f3[_0x8f1c('0x1b')][_0x8f1c('0x1d')]||null:null,'limit':_0x2513f3[_0x8f1c('0x1b')]?_0x2513f3[_0x8f1c('0x1b')]['limit']||null:null})[_0x8f1c('0xb')](function(_0x465d3e){logger['info']('UpdateSmsQueueReport',_0x2513f3);logger[_0x8f1c('0xf')](_0x8f1c('0x1e'),_0x2513f3,JSON[_0x8f1c('0x11')](_0x465d3e));_0x3793fb(_0x465d3e);})[_0x8f1c('0x16')](function(_0x314f33){logger[_0x8f1c('0x12')](_0x8f1c('0x1e'),_0x314f33[_0x8f1c('0x14')],_0x2513f3);_0x308b0c(_0x528786[_0x8f1c('0x12')](0x1f4,_0x314f33[_0x8f1c('0x14')]));});});};
\ No newline at end of file
index 21ac1ad..b769dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x723e=['delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put'];(function(_0x48084f,_0x2d1e50){var _0x215480=function(_0x3662ef){while(--_0x3662ef){_0x48084f['push'](_0x48084f['shift']());}};_0x215480(++_0x2d1e50);}(_0x723e,0x179));var _0xe723=function(_0x5e14e6,_0x42f560){_0x5e14e6=_0x5e14e6-0x0;var _0x46498e=_0x723e[_0x5e14e6];return _0x46498e;};'use strict';var multer=require('multer');var util=require(_0xe723('0x0'));var path=require(_0xe723('0x1'));var timeout=require(_0xe723('0x2'));var express=require(_0xe723('0x3'));var router=express[_0xe723('0x4')]();var fs_extra=require(_0xe723('0x5'));var auth=require(_0xe723('0x6'));var interaction=require(_0xe723('0x7'));var config=require(_0xe723('0x8'));var controller=require(_0xe723('0x9'));router['get']('/',auth[_0xe723('0xa')](),controller[_0xe723('0xb')]);router[_0xe723('0xc')](_0xe723('0xd'),auth[_0xe723('0xa')](),controller[_0xe723('0xe')]);router[_0xe723('0xc')](_0xe723('0xf'),auth['isAuthenticated'](),controller[_0xe723('0x10')]);router[_0xe723('0x11')]('/',auth[_0xe723('0xa')](),controller['create']);router[_0xe723('0x12')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller['update']);router[_0xe723('0x13')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller[_0xe723('0x14')]);module[_0xe723('0x15')]=router;
\ No newline at end of file
+var _0xc978=['/:id','show','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x341bf0,_0x1726b4){var _0x229815=function(_0x1adf3e){while(--_0x1adf3e){_0x341bf0['push'](_0x341bf0['shift']());}};_0x229815(++_0x1726b4);}(_0xc978,0xcd));var _0x8c97=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc978[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x8c97('0x0'));var util=require(_0x8c97('0x1'));var path=require(_0x8c97('0x2'));var timeout=require(_0x8c97('0x3'));var express=require(_0x8c97('0x4'));var router=express[_0x8c97('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8c97('0x6'));var interaction=require(_0x8c97('0x7'));var config=require(_0x8c97('0x8'));var controller=require(_0x8c97('0x9'));router[_0x8c97('0xa')]('/',auth[_0x8c97('0xb')](),controller[_0x8c97('0xc')]);router['get'](_0x8c97('0xd'),auth[_0x8c97('0xb')](),controller[_0x8c97('0xe')]);router[_0x8c97('0xa')](_0x8c97('0xf'),auth[_0x8c97('0xb')](),controller[_0x8c97('0x10')]);router['post']('/',auth[_0x8c97('0xb')](),controller[_0x8c97('0x11')]);router[_0x8c97('0x12')](_0x8c97('0xf'),auth[_0x8c97('0xb')](),controller[_0x8c97('0x13')]);router[_0x8c97('0x14')](_0x8c97('0xf'),auth[_0x8c97('0xb')](),controller['destroy']);module[_0x8c97('0x15')]=router;
\ No newline at end of file
index 2aa4a1d..e33ae2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x57053f,_0x414b3b){var _0x148841=function(_0x589c87){while(--_0x589c87){_0x57053f['push'](_0x57053f['shift']());}};_0x148841(++_0x414b3b);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x00bb[_0x2b5eae];return _0x5f3ac9;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x2cb756,_0x5148e6){var _0x2994ba=function(_0x11e674){while(--_0x11e674){_0x2cb756['push'](_0x2cb756['shift']());}};_0x2994ba(++_0x5148e6);}(_0xf4eb,0xec));var _0xbf4e=function(_0x3aec4f,_0x21fd36){_0x3aec4f=_0x3aec4f-0x0;var _0x43650c=_0xf4eb[_0x3aec4f];return _0x43650c;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
index 40e87af..65c6c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7be=['rows','catch','show','params','include','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','offset','count','apply','reject','then','destroy','end','sendStatus','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll'];(function(_0x532b5b,_0xce6ec8){var _0x169ff9=function(_0x4d2804){while(--_0x4d2804){_0x532b5b['push'](_0x532b5b['shift']());}};_0x169ff9(++_0xce6ec8);}(_0xa7be,0xf1));var _0xea7b=function(_0x2f63cf,_0x4227b5){_0x2f63cf=_0x2f63cf-0x0;var _0x5855fd=_0xa7be[_0x2f63cf];return _0x5855fd;};'use strict';var emlformat=require(_0xea7b('0x0'));var rimraf=require(_0xea7b('0x1'));var zipdir=require(_0xea7b('0x2'));var jsonpatch=require(_0xea7b('0x3'));var rp=require(_0xea7b('0x4'));var moment=require(_0xea7b('0x5'));var BPromise=require(_0xea7b('0x6'));var Mustache=require('mustache');var util=require(_0xea7b('0x7'));var path=require(_0xea7b('0x8'));var sox=require(_0xea7b('0x9'));var csv=require(_0xea7b('0xa'));var ejs=require(_0xea7b('0xb'));var fs=require('fs');var fs_extra=require(_0xea7b('0xc'));var _=require(_0xea7b('0xd'));var squel=require(_0xea7b('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xea7b('0xf'));var toCsv=require(_0xea7b('0xa'));var querystring=require(_0xea7b('0x10'));var Papa=require(_0xea7b('0x11'));var Redis=require(_0xea7b('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xea7b('0x13'));var hardwareService=require(_0xea7b('0x14'));var logger=require(_0xea7b('0x15'))(_0xea7b('0x16'));var utils=require(_0xea7b('0x17'));var config=require(_0xea7b('0x18'));var licenseUtil=require(_0xea7b('0x19'));var db=require(_0xea7b('0x1a'))['db'];function respondWithStatusCode(_0x8f79c4,_0x3d4981){_0x3d4981=_0x3d4981||0xcc;return function(_0x4cf5d6){if(_0x4cf5d6){return _0x8f79c4['sendStatus'](_0x3d4981);}return _0x8f79c4[_0xea7b('0x1b')](_0x3d4981)['end']();};}function respondWithResult(_0x2af88c,_0x4652f2){_0x4652f2=_0x4652f2||0xc8;return function(_0x1b734c){if(_0x1b734c){return _0x2af88c[_0xea7b('0x1b')](_0x4652f2)[_0xea7b('0x1c')](_0x1b734c);}};}function respondWithFilteredResult(_0x4137a8,_0x33ae96){return function(_0xec7ad2){if(_0xec7ad2){var _0x107b31=typeof _0x33ae96['offset']===_0xea7b('0x1d')&&typeof _0x33ae96[_0xea7b('0x1e')]===_0xea7b('0x1d');var _0x4dc848=_0xec7ad2['count'];var _0x2d9c97=_0x107b31?0x0:_0x33ae96[_0xea7b('0x1f')];var _0x49505c=_0x107b31?_0xec7ad2[_0xea7b('0x20')]:_0x33ae96[_0xea7b('0x1f')]+_0x33ae96['limit'];var _0x304ff4;if(_0x49505c>=_0x4dc848){_0x49505c=_0x4dc848;_0x304ff4=0xc8;}else{_0x304ff4=0xce;}_0x4137a8['status'](_0x304ff4);return _0x4137a8['set']('Content-Range',_0x2d9c97+'-'+_0x49505c+'/'+_0x4dc848)[_0xea7b('0x1c')](_0xec7ad2);}return null;};}function patchUpdates(_0x59dee3){return function(_0x4a50c7){try{jsonpatch[_0xea7b('0x21')](_0x4a50c7,_0x59dee3,!![]);}catch(_0x3e070a){return BPromise[_0xea7b('0x22')](_0x3e070a);}return _0x4a50c7['save']();};}function saveUpdates(_0x38a6be,_0x54c91a){return function(_0x16376e){if(_0x16376e){return _0x16376e['update'](_0x38a6be)[_0xea7b('0x23')](function(_0x2f20b0){return _0x2f20b0;});}return null;};}function removeEntity(_0x56580d,_0x5e0cfc){return function(_0x1cd54d){if(_0x1cd54d){return _0x1cd54d[_0xea7b('0x24')]()[_0xea7b('0x23')](function(){_0x56580d[_0xea7b('0x1b')](0xcc)[_0xea7b('0x25')]();});}};}function handleEntityNotFound(_0x7a2426,_0xc09dc4){return function(_0x24613a){if(!_0x24613a){_0x7a2426[_0xea7b('0x26')](0x194);}return _0x24613a;};}function handleError(_0x4a9251,_0x5a8da5){_0x5a8da5=_0x5a8da5||0x1f4;return function(_0x575228){logger[_0xea7b('0x27')](_0x575228[_0xea7b('0x28')]);if(_0x575228[_0xea7b('0x29')]){delete _0x575228[_0xea7b('0x29')];}_0x4a9251['status'](_0x5a8da5)[_0xea7b('0x2a')](_0x575228);};}exports[_0xea7b('0x2b')]=function(_0xde254b,_0x2d42dc){var _0x43ed38={},_0x27f585={},_0xfe62d3={'count':0x0,'rows':[]};var _0x39ff99=_[_0xea7b('0x2c')](db[_0xea7b('0x2d')][_0xea7b('0x2e')],function(_0x1a854f){return{'name':_0x1a854f['fieldName'],'type':_0x1a854f[_0xea7b('0x2f')]['key']};});_0x27f585[_0xea7b('0x30')]=_['map'](_0x39ff99,_0xea7b('0x29'));_0x27f585[_0xea7b('0x31')]=_[_0xea7b('0x32')](_0xde254b[_0xea7b('0x31')]);_0x27f585[_0xea7b('0x33')]=_[_0xea7b('0x34')](_0x27f585[_0xea7b('0x30')],_0x27f585[_0xea7b('0x31')]);_0x43ed38[_0xea7b('0x35')]=_[_0xea7b('0x34')](_0x27f585[_0xea7b('0x30')],qs[_0xea7b('0x36')](_0xde254b[_0xea7b('0x31')][_0xea7b('0x36')]));_0x43ed38[_0xea7b('0x35')]=_0x43ed38[_0xea7b('0x35')][_0xea7b('0x37')]?_0x43ed38[_0xea7b('0x35')]:_0x27f585[_0xea7b('0x30')];if(!_0xde254b['query'][_0xea7b('0x38')]('nolimit')){_0x43ed38[_0xea7b('0x1e')]=qs[_0xea7b('0x1e')](_0xde254b[_0xea7b('0x31')]['limit']);_0x43ed38[_0xea7b('0x1f')]=qs[_0xea7b('0x1f')](_0xde254b[_0xea7b('0x31')]['offset']);}_0x43ed38[_0xea7b('0x39')]=qs[_0xea7b('0x3a')](_0xde254b[_0xea7b('0x31')]['sort']);_0x43ed38['where']=qs[_0xea7b('0x33')](_[_0xea7b('0x3b')](_0xde254b[_0xea7b('0x31')],_0x27f585[_0xea7b('0x33')]),_0x39ff99);if(_0xde254b[_0xea7b('0x31')][_0xea7b('0x3c')]){_0x43ed38[_0xea7b('0x3d')]=_[_0xea7b('0x3e')](_0x43ed38[_0xea7b('0x3d')],{'$or':_[_0xea7b('0x2c')](_0x39ff99,function(_0x2b813d){if(_0x2b813d[_0xea7b('0x2f')]!==_0xea7b('0x3f')){var _0xab9dcd={};_0xab9dcd[_0x2b813d['name']]={'$like':'%'+_0xde254b[_0xea7b('0x31')][_0xea7b('0x3c')]+'%'};return _0xab9dcd;}})});}_0x43ed38=_[_0xea7b('0x3e')]({},_0x43ed38,_0xde254b[_0xea7b('0x40')]);var _0x2aad66={'where':_0x43ed38[_0xea7b('0x3d')]};return db[_0xea7b('0x2d')][_0xea7b('0x20')](_0x2aad66)[_0xea7b('0x23')](function(_0x260d2e){_0xfe62d3['count']=_0x260d2e;if(_0xde254b[_0xea7b('0x31')][_0xea7b('0x41')]){_0x43ed38['include']=[{'all':!![]}];}return db[_0xea7b('0x2d')][_0xea7b('0x42')](_0x43ed38);})[_0xea7b('0x23')](function(_0x2d9916){_0xfe62d3[_0xea7b('0x43')]=_0x2d9916;return _0xfe62d3;})[_0xea7b('0x23')](respondWithFilteredResult(_0x2d42dc,_0x43ed38))[_0xea7b('0x44')](handleError(_0x2d42dc,null));};exports[_0xea7b('0x45')]=function(_0x862107,_0x2f83e0){var _0x330403={'raw':!![],'where':{'id':_0x862107[_0xea7b('0x46')]['id']}},_0x1b95e2={};_0x1b95e2['model']=_[_0xea7b('0x32')](db[_0xea7b('0x2d')][_0xea7b('0x2e')]);_0x1b95e2['query']=_[_0xea7b('0x32')](_0x862107[_0xea7b('0x31')]);_0x1b95e2[_0xea7b('0x33')]=_['intersection'](_0x1b95e2[_0xea7b('0x30')],_0x1b95e2[_0xea7b('0x31')]);_0x330403['attributes']=_[_0xea7b('0x34')](_0x1b95e2[_0xea7b('0x30')],qs[_0xea7b('0x36')](_0x862107[_0xea7b('0x31')][_0xea7b('0x36')]));_0x330403[_0xea7b('0x35')]=_0x330403[_0xea7b('0x35')][_0xea7b('0x37')]?_0x330403['attributes']:_0x1b95e2['model'];if(_0x862107[_0xea7b('0x31')][_0xea7b('0x41')]){_0x330403[_0xea7b('0x47')]=[{'all':!![]}];}_0x330403=_[_0xea7b('0x3e')]({},_0x330403,_0x862107['options']);return db['SmsTransferReport']['find'](_0x330403)[_0xea7b('0x23')](handleEntityNotFound(_0x2f83e0,null))[_0xea7b('0x23')](respondWithResult(_0x2f83e0,null))[_0xea7b('0x44')](handleError(_0x2f83e0,null));};exports[_0xea7b('0x48')]=function(_0x5ca388,_0x2031f7){return db['SmsTransferReport'][_0xea7b('0x48')](_0x5ca388[_0xea7b('0x49')],{})[_0xea7b('0x23')](respondWithResult(_0x2031f7,0xc9))['catch'](handleError(_0x2031f7,null));};exports[_0xea7b('0x4a')]=function(_0x29006a,_0x444bb6){if(_0x29006a['body']['id']){delete _0x29006a[_0xea7b('0x49')]['id'];}return db[_0xea7b('0x2d')][_0xea7b('0x4b')]({'where':{'id':_0x29006a[_0xea7b('0x46')]['id']}})[_0xea7b('0x23')](handleEntityNotFound(_0x444bb6,null))[_0xea7b('0x23')](saveUpdates(_0x29006a[_0xea7b('0x49')],null))[_0xea7b('0x23')](respondWithResult(_0x444bb6,null))[_0xea7b('0x44')](handleError(_0x444bb6,null));};exports[_0xea7b('0x24')]=function(_0xa8a441,_0x5310f1){return db[_0xea7b('0x2d')][_0xea7b('0x4b')]({'where':{'id':_0xa8a441[_0xea7b('0x46')]['id']}})[_0xea7b('0x23')](handleEntityNotFound(_0x5310f1,null))[_0xea7b('0x23')](removeEntity(_0x5310f1,null))[_0xea7b('0x44')](handleError(_0x5310f1,null));};exports['describe']=function(_0x2e890c,_0x1fbc50){return db['SmsTransferReport'][_0xea7b('0x4c')]()['then'](respondWithResult(_0x1fbc50,null))['catch'](handleError(_0x1fbc50,null));};
\ No newline at end of file
+var _0x65ff=['merge','where','SmsTransferReport','includeAll','include','findAll','catch','show','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','index','map','rawAttributes','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter'];(function(_0x37f7be,_0x220f4e){var _0x20ad42=function(_0x5541ae){while(--_0x5541ae){_0x37f7be['push'](_0x37f7be['shift']());}};_0x20ad42(++_0x220f4e);}(_0x65ff,0x17a));var _0xf65f=function(_0x55d829,_0x43f06c){_0x55d829=_0x55d829-0x0;var _0x52163b=_0x65ff[_0x55d829];return _0x52163b;};'use strict';var emlformat=require(_0xf65f('0x0'));var rimraf=require(_0xf65f('0x1'));var zipdir=require(_0xf65f('0x2'));var jsonpatch=require(_0xf65f('0x3'));var rp=require(_0xf65f('0x4'));var moment=require(_0xf65f('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf65f('0x6'));var path=require(_0xf65f('0x7'));var sox=require(_0xf65f('0x8'));var csv=require(_0xf65f('0x9'));var ejs=require(_0xf65f('0xa'));var fs=require('fs');var fs_extra=require(_0xf65f('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf65f('0xc'));var jsforce=require(_0xf65f('0xd'));var deskjs=require(_0xf65f('0xe'));var toCsv=require(_0xf65f('0x9'));var querystring=require(_0xf65f('0xf'));var Papa=require(_0xf65f('0x10'));var Redis=require(_0xf65f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf65f('0x12'));var as=require(_0xf65f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf65f('0x14'))(_0xf65f('0x15'));var utils=require('../../config/utils');var config=require(_0xf65f('0x16'));var licenseUtil=require(_0xf65f('0x17'));var db=require(_0xf65f('0x18'))['db'];function respondWithStatusCode(_0x516ea8,_0x2be8df){_0x2be8df=_0x2be8df||0xcc;return function(_0x63ab98){if(_0x63ab98){return _0x516ea8[_0xf65f('0x19')](_0x2be8df);}return _0x516ea8[_0xf65f('0x1a')](_0x2be8df)[_0xf65f('0x1b')]();};}function respondWithResult(_0x5e7301,_0x280fdd){_0x280fdd=_0x280fdd||0xc8;return function(_0x1d631a){if(_0x1d631a){return _0x5e7301[_0xf65f('0x1a')](_0x280fdd)[_0xf65f('0x1c')](_0x1d631a);}};}function respondWithFilteredResult(_0x16f848,_0x30bf25){return function(_0x4b81b5){if(_0x4b81b5){var _0x5e6618=typeof _0x30bf25[_0xf65f('0x1d')]===_0xf65f('0x1e')&&typeof _0x30bf25[_0xf65f('0x1f')]===_0xf65f('0x1e');var _0x4552c8=_0x4b81b5[_0xf65f('0x20')];var _0x26ccd1=_0x5e6618?0x0:_0x30bf25[_0xf65f('0x1d')];var _0x260f19=_0x5e6618?_0x4b81b5[_0xf65f('0x20')]:_0x30bf25[_0xf65f('0x1d')]+_0x30bf25['limit'];var _0x3955b3;if(_0x260f19>=_0x4552c8){_0x260f19=_0x4552c8;_0x3955b3=0xc8;}else{_0x3955b3=0xce;}_0x16f848[_0xf65f('0x1a')](_0x3955b3);return _0x16f848['set'](_0xf65f('0x21'),_0x26ccd1+'-'+_0x260f19+'/'+_0x4552c8)['json'](_0x4b81b5);}return null;};}function patchUpdates(_0x3396cd){return function(_0x539b4e){try{jsonpatch[_0xf65f('0x22')](_0x539b4e,_0x3396cd,!![]);}catch(_0x3d6614){return BPromise['reject'](_0x3d6614);}return _0x539b4e[_0xf65f('0x23')]();};}function saveUpdates(_0x14bd25,_0x334d95){return function(_0x2edb5b){if(_0x2edb5b){return _0x2edb5b[_0xf65f('0x24')](_0x14bd25)['then'](function(_0x1d0264){return _0x1d0264;});}return null;};}function removeEntity(_0x331562,_0x57d953){return function(_0x8ea45d){if(_0x8ea45d){return _0x8ea45d[_0xf65f('0x25')]()[_0xf65f('0x26')](function(){_0x331562[_0xf65f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe7a986,_0x23a2c1){return function(_0x1cdf5a){if(!_0x1cdf5a){_0xe7a986[_0xf65f('0x19')](0x194);}return _0x1cdf5a;};}function handleError(_0xcf8c3c,_0x190721){_0x190721=_0x190721||0x1f4;return function(_0x2789ca){logger[_0xf65f('0x27')](_0x2789ca[_0xf65f('0x28')]);if(_0x2789ca[_0xf65f('0x29')]){delete _0x2789ca['name'];}_0xcf8c3c[_0xf65f('0x1a')](_0x190721)['send'](_0x2789ca);};}exports[_0xf65f('0x2a')]=function(_0x188795,_0xcb3005){var _0x544097={},_0x12c3d3={},_0x2e47e2={'count':0x0,'rows':[]};var _0xd5e866=_[_0xf65f('0x2b')](db['SmsTransferReport'][_0xf65f('0x2c')],function(_0x2935ce){return{'name':_0x2935ce['fieldName'],'type':_0x2935ce[_0xf65f('0x2d')][_0xf65f('0x2e')]};});_0x12c3d3['model']=_[_0xf65f('0x2b')](_0xd5e866,_0xf65f('0x29'));_0x12c3d3['query']=_[_0xf65f('0x2f')](_0x188795[_0xf65f('0x30')]);_0x12c3d3[_0xf65f('0x31')]=_[_0xf65f('0x32')](_0x12c3d3[_0xf65f('0x33')],_0x12c3d3[_0xf65f('0x30')]);_0x544097['attributes']=_[_0xf65f('0x32')](_0x12c3d3['model'],qs['fields'](_0x188795['query'][_0xf65f('0x34')]));_0x544097[_0xf65f('0x35')]=_0x544097[_0xf65f('0x35')][_0xf65f('0x36')]?_0x544097[_0xf65f('0x35')]:_0x12c3d3[_0xf65f('0x33')];if(!_0x188795[_0xf65f('0x30')][_0xf65f('0x37')]('nolimit')){_0x544097['limit']=qs[_0xf65f('0x1f')](_0x188795[_0xf65f('0x30')][_0xf65f('0x1f')]);_0x544097[_0xf65f('0x1d')]=qs['offset'](_0x188795[_0xf65f('0x30')][_0xf65f('0x1d')]);}_0x544097[_0xf65f('0x38')]=qs[_0xf65f('0x39')](_0x188795[_0xf65f('0x30')][_0xf65f('0x39')]);_0x544097['where']=qs[_0xf65f('0x31')](_[_0xf65f('0x3a')](_0x188795[_0xf65f('0x30')],_0x12c3d3[_0xf65f('0x31')]),_0xd5e866);if(_0x188795[_0xf65f('0x30')][_0xf65f('0x3b')]){_0x544097['where']=_[_0xf65f('0x3c')](_0x544097[_0xf65f('0x3d')],{'$or':_['map'](_0xd5e866,function(_0x43e0fd){if(_0x43e0fd[_0xf65f('0x2d')]!=='VIRTUAL'){var _0x33fd68={};_0x33fd68[_0x43e0fd['name']]={'$like':'%'+_0x188795['query'][_0xf65f('0x3b')]+'%'};return _0x33fd68;}})});}_0x544097=_[_0xf65f('0x3c')]({},_0x544097,_0x188795['options']);var _0xbe3ef0={'where':_0x544097['where']};return db[_0xf65f('0x3e')][_0xf65f('0x20')](_0xbe3ef0)[_0xf65f('0x26')](function(_0x262732){_0x2e47e2['count']=_0x262732;if(_0x188795[_0xf65f('0x30')][_0xf65f('0x3f')]){_0x544097[_0xf65f('0x40')]=[{'all':!![]}];}return db[_0xf65f('0x3e')][_0xf65f('0x41')](_0x544097);})['then'](function(_0x874ee1){_0x2e47e2['rows']=_0x874ee1;return _0x2e47e2;})[_0xf65f('0x26')](respondWithFilteredResult(_0xcb3005,_0x544097))[_0xf65f('0x42')](handleError(_0xcb3005,null));};exports[_0xf65f('0x43')]=function(_0x547a29,_0x46419c){var _0x3f86d6={'raw':!![],'where':{'id':_0x547a29['params']['id']}},_0x3176f6={};_0x3176f6[_0xf65f('0x33')]=_['keys'](db[_0xf65f('0x3e')][_0xf65f('0x2c')]);_0x3176f6[_0xf65f('0x30')]=_[_0xf65f('0x2f')](_0x547a29[_0xf65f('0x30')]);_0x3176f6[_0xf65f('0x31')]=_[_0xf65f('0x32')](_0x3176f6['model'],_0x3176f6['query']);_0x3f86d6[_0xf65f('0x35')]=_[_0xf65f('0x32')](_0x3176f6[_0xf65f('0x33')],qs[_0xf65f('0x34')](_0x547a29[_0xf65f('0x30')]['fields']));_0x3f86d6['attributes']=_0x3f86d6[_0xf65f('0x35')][_0xf65f('0x36')]?_0x3f86d6['attributes']:_0x3176f6[_0xf65f('0x33')];if(_0x547a29[_0xf65f('0x30')][_0xf65f('0x3f')]){_0x3f86d6[_0xf65f('0x40')]=[{'all':!![]}];}_0x3f86d6=_['merge']({},_0x3f86d6,_0x547a29[_0xf65f('0x44')]);return db[_0xf65f('0x3e')][_0xf65f('0x45')](_0x3f86d6)[_0xf65f('0x26')](handleEntityNotFound(_0x46419c,null))['then'](respondWithResult(_0x46419c,null))[_0xf65f('0x42')](handleError(_0x46419c,null));};exports['create']=function(_0x26bfa5,_0x51f4f4){return db[_0xf65f('0x3e')][_0xf65f('0x46')](_0x26bfa5[_0xf65f('0x47')],{})[_0xf65f('0x26')](respondWithResult(_0x51f4f4,0xc9))[_0xf65f('0x42')](handleError(_0x51f4f4,null));};exports['update']=function(_0x547ac5,_0x548f90){if(_0x547ac5['body']['id']){delete _0x547ac5['body']['id'];}return db[_0xf65f('0x3e')][_0xf65f('0x45')]({'where':{'id':_0x547ac5['params']['id']}})[_0xf65f('0x26')](handleEntityNotFound(_0x548f90,null))[_0xf65f('0x26')](saveUpdates(_0x547ac5[_0xf65f('0x47')],null))['then'](respondWithResult(_0x548f90,null))['catch'](handleError(_0x548f90,null));};exports[_0xf65f('0x25')]=function(_0x464731,_0x4c5406){return db[_0xf65f('0x3e')][_0xf65f('0x45')]({'where':{'id':_0x464731['params']['id']}})[_0xf65f('0x26')](handleEntityNotFound(_0x4c5406,null))[_0xf65f('0x26')](removeEntity(_0x4c5406,null))[_0xf65f('0x42')](handleError(_0x4c5406,null));};exports['describe']=function(_0x9fb2c2,_0x1961a6){return db[_0xf65f('0x3e')][_0xf65f('0x48')]()[_0xf65f('0x26')](respondWithResult(_0x1961a6,null))[_0xf65f('0x42')](handleError(_0x1961a6,null));};
\ No newline at end of file
index c66db41..a32c9b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x863f=['SmsTransferReport','uniqueid','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define'];(function(_0x3e3735,_0xaad8ef){var _0x1bf323=function(_0x4a90f5){while(--_0x4a90f5){_0x3e3735['push'](_0x3e3735['shift']());}};_0x1bf323(++_0xaad8ef);}(_0x863f,0xda));var _0xf863=function(_0x388898,_0x1728a8){_0x388898=_0x388898-0x0;var _0x4b2bdd=_0x863f[_0x388898];return _0x4b2bdd;};'use strict';var _=require('lodash');var util=require(_0xf863('0x0'));var logger=require(_0xf863('0x1'))(_0xf863('0x2'));var moment=require('moment');var BPromise=require(_0xf863('0x3'));var rp=require(_0xf863('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf863('0x5'));var config=require(_0xf863('0x6'));var attributes=require(_0xf863('0x7'));module[_0xf863('0x8')]=function(_0x1a4bf0,_0xd1accc){return _0x1a4bf0[_0xf863('0x9')](_0xf863('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xf863('0xb'),'fields':[_0xf863('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x128c=['rimraf','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','uniqueid','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x128c,0x96));var _0xc128=function(_0x3c1aed,_0x3bfe62){_0x3c1aed=_0x3c1aed-0x0;var _0x595be8=_0x128c[_0x3c1aed];return _0x595be8;};'use strict';var _=require(_0xc128('0x0'));var util=require(_0xc128('0x1'));var logger=require(_0xc128('0x2'))(_0xc128('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc128('0x4'));var fs=require('fs');var path=require(_0xc128('0x5'));var rimraf=require(_0xc128('0x6'));var config=require(_0xc128('0x7'));var attributes=require(_0xc128('0x8'));module[_0xc128('0x9')]=function(_0x579f44,_0x40690d){return _0x579f44['define'](_0xc128('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xc128('0xb'),'fields':[_0xc128('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 4347e26..5c962e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43fd=['request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','SmsTransferReport,\x20%s,\x20%s'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0x43fd,0x1ec));var _0xd43f=function(_0x3c1195,_0x36ff90){_0x3c1195=_0x3c1195-0x0;var _0x1a0cfe=_0x43fd[_0x3c1195];return _0x1a0cfe;};'use strict';var _=require('lodash');var util=require(_0xd43f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd43f('0x1'));var fs=require('fs');var Redis=require(_0xd43f('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xd43f('0x3'));var logger=require('../../config/logger')(_0xd43f('0x4'));var config=require(_0xd43f('0x5'));var jayson=require(_0xd43f('0x6'));var client=jayson[_0xd43f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xde214d,_0xad5196,_0x20ccd7){return new BPromise(function(_0x331163,_0x547e12){return client[_0xd43f('0x8')](_0xde214d,_0x20ccd7)[_0xd43f('0x9')](function(_0x52e9c8){logger[_0xd43f('0xa')](_0xd43f('0xb'),_0xad5196,_0xd43f('0xc'));logger[_0xd43f('0xd')](_0xd43f('0xe'),_0xad5196,'request\x20sent',JSON[_0xd43f('0xf')](_0x52e9c8));if(_0x52e9c8[_0xd43f('0x10')]){if(_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x11')]===0x1f4){logger[_0xd43f('0x10')](_0xd43f('0xb'),_0xad5196,_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x12')]);return _0x547e12(_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x12')]);}logger[_0xd43f('0x10')]('SmsTransferReport,\x20%s,\x20%s',_0xad5196,_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x12')]);return _0x331163(_0x52e9c8[_0xd43f('0x10')]['message']);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0xad5196,_0xd43f('0xc'));_0x331163(_0x52e9c8[_0xd43f('0x13')]['message']);}})[_0xd43f('0x14')](function(_0x3647df){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0xad5196,_0x3647df);_0x547e12(_0x3647df);});});}
\ No newline at end of file
+var _0xb7b6=['then','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SmsTransferReport,\x20%s,\x20%s','message','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x57dea2,_0x4930fd){var _0x352157=function(_0x1bca5a){while(--_0x1bca5a){_0x57dea2['push'](_0x57dea2['shift']());}};_0x352157(++_0x4930fd);}(_0xb7b6,0x15f));var _0x6b7b=function(_0x48ab84,_0x972e97){_0x48ab84=_0x48ab84-0x0;var _0x329c9a=_0xb7b6[_0x48ab84];return _0x329c9a;};'use strict';var _=require(_0x6b7b('0x0'));var util=require(_0x6b7b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6b7b('0x2'));var fs=require('fs');var Redis=require(_0x6b7b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x6b7b('0x4'));var logger=require(_0x6b7b('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6b7b('0x6'));var client=jayson[_0x6b7b('0x7')][_0x6b7b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xff519e,_0x24359f,_0x483b9c){return new BPromise(function(_0x49a6c8,_0x2bb86d){return client[_0x6b7b('0x9')](_0xff519e,_0x483b9c)[_0x6b7b('0xa')](function(_0x115f2d){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x24359f,'request\x20sent');logger[_0x6b7b('0xb')](_0x6b7b('0xc'),_0x24359f,_0x6b7b('0xd'),JSON[_0x6b7b('0xe')](_0x115f2d));if(_0x115f2d[_0x6b7b('0xf')]){if(_0x115f2d[_0x6b7b('0xf')]['code']===0x1f4){logger[_0x6b7b('0xf')](_0x6b7b('0x10'),_0x24359f,_0x115f2d['error'][_0x6b7b('0x11')]);return _0x2bb86d(_0x115f2d[_0x6b7b('0xf')]['message']);}logger[_0x6b7b('0xf')]('SmsTransferReport,\x20%s,\x20%s',_0x24359f,_0x115f2d[_0x6b7b('0xf')][_0x6b7b('0x11')]);return _0x49a6c8(_0x115f2d[_0x6b7b('0xf')]['message']);}else{logger['info'](_0x6b7b('0x10'),_0x24359f,'request\x20sent');_0x49a6c8(_0x115f2d['result'][_0x6b7b('0x11')]);}})[_0x6b7b('0x12')](function(_0x4ef35b){logger[_0x6b7b('0xf')](_0x6b7b('0x10'),_0x24359f,_0x4ef35b);_0x2bb86d(_0x4ef35b);});});}
\ No newline at end of file
index 226461c..5caff45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdda7=['basename','now','extname','post','single','create','put','update','delete','/:id','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','index','get','show','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xdda7,0x6a));var _0x7dda=function(_0xa19e3,_0x4161f2){_0xa19e3=_0xa19e3-0x0;var _0xb5df8b=_0xdda7[_0xa19e3];return _0xb5df8b;};'use strict';var multer=require(_0x7dda('0x0'));var util=require('util');var path=require(_0x7dda('0x1'));var timeout=require(_0x7dda('0x2'));var express=require(_0x7dda('0x3'));var router=express[_0x7dda('0x4')]();var fs_extra=require(_0x7dda('0x5'));var auth=require(_0x7dda('0x6'));var interaction=require(_0x7dda('0x7'));var config=require(_0x7dda('0x8'));var controller=require(_0x7dda('0x9'));router['get']('/',auth[_0x7dda('0xa')](),controller[_0x7dda('0xb')]);router[_0x7dda('0xc')]('/:id',auth[_0x7dda('0xa')](),controller[_0x7dda('0xd')]);router[_0x7dda('0xc')]('/:id/download',auth['isAuthenticated'](),controller[_0x7dda('0xe')]);var upload=multer({'storage':multer[_0x7dda('0xf')]({'destination':function(_0x551908,_0x540e12,_0x573fc8){_0x573fc8(null,path[_0x7dda('0x10')](config[_0x7dda('0x11')],_0x7dda('0x12')));},'filename':function(_0x4efab7,_0x2173be,_0x5dde69){_0x2173be[_0x7dda('0x13')]=_0x2173be['originalname'][_0x7dda('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5dde69(null,util[_0x7dda('0x15')]('%s-%s%s',path[_0x7dda('0x16')](_0x2173be[_0x7dda('0x13')],path['extname'](_0x2173be[_0x7dda('0x13')])),Date[_0x7dda('0x17')](),path[_0x7dda('0x18')](_0x2173be[_0x7dda('0x13')])));}})});router[_0x7dda('0x19')]('/',upload[_0x7dda('0x1a')]('file'),controller[_0x7dda('0x1b')]);router[_0x7dda('0x1c')]('/:id',auth[_0x7dda('0xa')](),controller[_0x7dda('0x1d')]);router[_0x7dda('0x1e')](_0x7dda('0x1f'),auth[_0x7dda('0xa')](),controller[_0x7dda('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x6602=['format','%s-%s%s','basename','extname','post','single','file','create','put','update','delete','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','index','get','/:id','show','/:id/download','isAuthenticated','diskStorage','server/files/sounds/original/','originalname','replace'];(function(_0x1158e1,_0x31b137){var _0x22ff3d=function(_0x4bf2ed){while(--_0x4bf2ed){_0x1158e1['push'](_0x1158e1['shift']());}};_0x22ff3d(++_0x31b137);}(_0x6602,0x194));var _0x2660=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x6602[_0x62c958];return _0x57ec61;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2660('0x0'));var timeout=require(_0x2660('0x1'));var express=require(_0x2660('0x2'));var router=express['Router']();var fs_extra=require(_0x2660('0x3'));var auth=require(_0x2660('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x2660('0x5'));var controller=require('./sound.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x2660('0x6')]);router[_0x2660('0x7')](_0x2660('0x8'),auth['isAuthenticated'](),controller[_0x2660('0x9')]);router[_0x2660('0x7')](_0x2660('0xa'),auth[_0x2660('0xb')](),controller['download']);var upload=multer({'storage':multer[_0x2660('0xc')]({'destination':function(_0x41aa0e,_0x1069d8,_0x1e6f2c){_0x1e6f2c(null,path['join'](config['root'],_0x2660('0xd')));},'filename':function(_0xd70c19,_0x53ece5,_0x3adf58){_0x53ece5[_0x2660('0xe')]=_0x53ece5[_0x2660('0xe')][_0x2660('0xf')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3adf58(null,util[_0x2660('0x10')](_0x2660('0x11'),path[_0x2660('0x12')](_0x53ece5[_0x2660('0xe')],path[_0x2660('0x13')](_0x53ece5['originalname'])),Date['now'](),path[_0x2660('0x13')](_0x53ece5[_0x2660('0xe')])));}})});router[_0x2660('0x14')]('/',upload[_0x2660('0x15')](_0x2660('0x16')),controller[_0x2660('0x17')]);router[_0x2660('0x18')](_0x2660('0x8'),auth['isAuthenticated'](),controller[_0x2660('0x19')]);router['delete'](_0x2660('0x8'),auth['isAuthenticated'](),controller[_0x2660('0x1a')]);module[_0x2660('0x1b')]=router;
\ No newline at end of file
index e1565df..5a981c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2475=['INTEGER','sequelize','exports','name','STRING','BIGINT'];(function(_0x226c11,_0x14c0a4){var _0x4dc73e=function(_0x17e242){while(--_0x17e242){_0x226c11['push'](_0x226c11['shift']());}};_0x4dc73e(++_0x14c0a4);}(_0x2475,0x1e7));var _0x5247=function(_0x52244a,_0x337afc){_0x52244a=_0x52244a-0x0;var _0x4d4964=_0x2475[_0x52244a];return _0x4d4964;};'use strict';var Sequelize=require(_0x5247('0x0'));module[_0x5247('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x5247('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x5247('0x3')]},'display_name':{'type':Sequelize[_0x5247('0x3')],'defaultValue':''},'description':{'type':Sequelize[_0x5247('0x3')]},'original_format':{'type':Sequelize[_0x5247('0x3')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x5247('0x4')]},'original_channelCount':{'type':Sequelize[_0x5247('0x5')]},'original_bitRate':{'type':Sequelize[_0x5247('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x5247('0x3')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0x5247('0x4')]},'converted_channelCount':{'type':Sequelize[_0x5247('0x5')]},'converted_bitRate':{'type':Sequelize[_0x5247('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x5247('0x5')]}};
\ No newline at end of file
+var _0x14bb=['FLOAT','BIGINT','INTEGER','sequelize','exports','STRING','name'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x14bb,0x192));var _0xb14b=function(_0x13a0f9,_0x544b12){_0x13a0f9=_0x13a0f9-0x0;var _0x3516e8=_0x14bb[_0x13a0f9];return _0x3516e8;};'use strict';var Sequelize=require(_0xb14b('0x0'));module[_0xb14b('0x1')]={'name':{'type':Sequelize[_0xb14b('0x2')],'unique':_0xb14b('0x3'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0xb14b('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xb14b('0x2')]},'original_format':{'type':Sequelize[_0xb14b('0x2')]},'original_duration':{'type':Sequelize[_0xb14b('0x4')]},'original_sampleCount':{'type':Sequelize[_0xb14b('0x5')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xb14b('0x5')]},'original_sampleRate':{'type':Sequelize[_0xb14b('0x6')]},'converted_format':{'type':Sequelize[_0xb14b('0x2')]},'converted_duration':{'type':Sequelize[_0xb14b('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xb14b('0x5')]},'converted_channelCount':{'type':Sequelize[_0xb14b('0x6')]},'converted_bitRate':{'type':Sequelize[_0xb14b('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xb14b('0x6')]}};
\ No newline at end of file
index ad37672..6b3927e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bb5=['status','end','json','offset','undefined','count','set','Content-Range','reject','save','then','get','Sounds','UserProfileResource','stack','name','send','map','Sound','rawAttributes','fieldName','model','keys','filters','query','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','intersection','length','options','find','converted_format','existsSync','join','root','server/files/sounds/converted','save_name','Sequelize','ValidationError','download','format','%s.%s','create','basename','file','originalname','filename','extname','substring','wav','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','error','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','sampleRate','body','role','userProfileId','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','destroy','server/files/sounds/original','original_format','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x41927f,_0x1cea30){var _0x122a0f=function(_0x5d529f){while(--_0x5d529f){_0x41927f['push'](_0x41927f['shift']());}};_0x122a0f(++_0x1cea30);}(_0x4bb5,0x1c8));var _0x54bb=function(_0x5271b6,_0x2733af){_0x5271b6=_0x5271b6-0x0;var _0x31921e=_0x4bb5[_0x5271b6];return _0x31921e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x54bb('0x0'));var zipdir=require(_0x54bb('0x1'));var jsonpatch=require(_0x54bb('0x2'));var rp=require(_0x54bb('0x3'));var moment=require(_0x54bb('0x4'));var BPromise=require(_0x54bb('0x5'));var Mustache=require(_0x54bb('0x6'));var util=require(_0x54bb('0x7'));var path=require('path');var sox=require(_0x54bb('0x8'));var csv=require(_0x54bb('0x9'));var ejs=require(_0x54bb('0xa'));var fs=require('fs');var fs_extra=require(_0x54bb('0xb'));var _=require(_0x54bb('0xc'));var squel=require('squel');var crypto=require(_0x54bb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x54bb('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x54bb('0xf'));var authService=require(_0x54bb('0x10'));var qs=require(_0x54bb('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x54bb('0x12'));var logger=require(_0x54bb('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x54bb('0x14'));var licenseUtil=require(_0x54bb('0x15'));var db=require(_0x54bb('0x16'))['db'];function respondWithStatusCode(_0xda2360,_0x5ab7b2){_0x5ab7b2=_0x5ab7b2||0xcc;return function(_0x48ba12){if(_0x48ba12){return _0xda2360[_0x54bb('0x17')](_0x5ab7b2);}return _0xda2360[_0x54bb('0x18')](_0x5ab7b2)[_0x54bb('0x19')]();};}function respondWithResult(_0x1b5cb9,_0xca2d17){_0xca2d17=_0xca2d17||0xc8;return function(_0x57b126){if(_0x57b126){return _0x1b5cb9[_0x54bb('0x18')](_0xca2d17)[_0x54bb('0x1a')](_0x57b126);}};}function respondWithFilteredResult(_0x39de88,_0x5633ea){return function(_0x4053ee){if(_0x4053ee){var _0x587532=typeof _0x5633ea[_0x54bb('0x1b')]===_0x54bb('0x1c')&&typeof _0x5633ea['limit']===_0x54bb('0x1c');var _0x135551=_0x4053ee[_0x54bb('0x1d')];var _0xeec81f=_0x587532?0x0:_0x5633ea[_0x54bb('0x1b')];var _0x324d77=_0x587532?_0x4053ee[_0x54bb('0x1d')]:_0x5633ea[_0x54bb('0x1b')]+_0x5633ea['limit'];var _0x3f1e65;if(_0x324d77>=_0x135551){_0x324d77=_0x135551;_0x3f1e65=0xc8;}else{_0x3f1e65=0xce;}_0x39de88['status'](_0x3f1e65);return _0x39de88[_0x54bb('0x1e')](_0x54bb('0x1f'),_0xeec81f+'-'+_0x324d77+'/'+_0x135551)['json'](_0x4053ee);}return null;};}function patchUpdates(_0x1fd523){return function(_0x16b680){try{jsonpatch['apply'](_0x16b680,_0x1fd523,!![]);}catch(_0x29c629){return BPromise[_0x54bb('0x20')](_0x29c629);}return _0x16b680[_0x54bb('0x21')]();};}function saveUpdates(_0x473590,_0x57dbec){return function(_0x141ed7){if(_0x141ed7){return _0x141ed7['update'](_0x473590)['then'](function(_0x153eba){return _0x153eba;});}return null;};}function removeEntity(_0x290932,_0x4a3acd){return function(_0x1c5f39){if(_0x1c5f39){return _0x1c5f39['destroy']()[_0x54bb('0x22')](function(){var _0x18449c=_0x1c5f39[_0x54bb('0x23')]({'plain':!![]});var _0x2da538=_0x54bb('0x24');return db[_0x54bb('0x25')]['destroy']({'where':{'type':_0x2da538,'resourceId':_0x18449c['id']}})[_0x54bb('0x22')](function(){return _0x1c5f39;});})[_0x54bb('0x22')](function(){_0x290932[_0x54bb('0x18')](0xcc)[_0x54bb('0x19')]();});}};}function handleEntityNotFound(_0x11128b,_0x460aae){return function(_0x2600d2){if(!_0x2600d2){_0x11128b[_0x54bb('0x17')](0x194);}return _0x2600d2;};}function handleError(_0x456934,_0x41f4bb){_0x41f4bb=_0x41f4bb||0x1f4;return function(_0x12a9ee){logger['error'](_0x12a9ee[_0x54bb('0x26')]);if(_0x12a9ee[_0x54bb('0x27')]){delete _0x12a9ee['name'];}_0x456934[_0x54bb('0x18')](_0x41f4bb)[_0x54bb('0x28')](_0x12a9ee);};}exports['index']=function(_0x564f92,_0x21d40e){var _0x3b4909={},_0x2d6e7f={},_0x553d45={'count':0x0,'rows':[]};var _0x2aef2d=_[_0x54bb('0x29')](db[_0x54bb('0x2a')][_0x54bb('0x2b')],function(_0x420c78){return{'name':_0x420c78[_0x54bb('0x2c')],'type':_0x420c78['type']['key']};});_0x2d6e7f[_0x54bb('0x2d')]=_[_0x54bb('0x29')](_0x2aef2d,_0x54bb('0x27'));_0x2d6e7f['query']=_[_0x54bb('0x2e')](_0x564f92['query']);_0x2d6e7f[_0x54bb('0x2f')]=_['intersection'](_0x2d6e7f[_0x54bb('0x2d')],_0x2d6e7f[_0x54bb('0x30')]);_0x3b4909[_0x54bb('0x31')]=_['intersection'](_0x2d6e7f[_0x54bb('0x2d')],qs[_0x54bb('0x32')](_0x564f92[_0x54bb('0x30')]['fields']));_0x3b4909[_0x54bb('0x31')]=_0x3b4909[_0x54bb('0x31')]['length']?_0x3b4909['attributes']:_0x2d6e7f[_0x54bb('0x2d')];if(!_0x564f92[_0x54bb('0x30')][_0x54bb('0x33')](_0x54bb('0x34'))){_0x3b4909[_0x54bb('0x35')]=qs[_0x54bb('0x35')](_0x564f92['query'][_0x54bb('0x35')]);_0x3b4909[_0x54bb('0x1b')]=qs[_0x54bb('0x1b')](_0x564f92['query'][_0x54bb('0x1b')]);}_0x3b4909[_0x54bb('0x36')]=qs['sort'](_0x564f92[_0x54bb('0x30')][_0x54bb('0x37')]);_0x3b4909['where']=qs['filters'](_[_0x54bb('0x38')](_0x564f92[_0x54bb('0x30')],_0x2d6e7f['filters']),_0x2aef2d);if(_0x564f92['query']['filter']){_0x3b4909[_0x54bb('0x39')]=_[_0x54bb('0x3a')](_0x3b4909[_0x54bb('0x39')],{'$or':_[_0x54bb('0x29')](_0x2aef2d,function(_0x12d4b9){if(_0x12d4b9[_0x54bb('0x3b')]!==_0x54bb('0x3c')){var _0x4e104c={};_0x4e104c[_0x12d4b9[_0x54bb('0x27')]]={'$like':'%'+_0x564f92[_0x54bb('0x30')]['filter']+'%'};return _0x4e104c;}})});}_0x3b4909=_[_0x54bb('0x3a')]({},_0x3b4909,_0x564f92['options']);var _0x174117={'where':_0x3b4909[_0x54bb('0x39')]};return db[_0x54bb('0x2a')][_0x54bb('0x1d')](_0x174117)[_0x54bb('0x22')](function(_0x387f7d){_0x553d45[_0x54bb('0x1d')]=_0x387f7d;if(_0x564f92[_0x54bb('0x30')][_0x54bb('0x3d')]){_0x3b4909[_0x54bb('0x3e')]=[{'all':!![]}];}return db['Sound'][_0x54bb('0x3f')](_0x3b4909);})['then'](function(_0x450220){_0x553d45[_0x54bb('0x40')]=_0x450220;return _0x553d45;})['then'](respondWithFilteredResult(_0x21d40e,_0x3b4909))[_0x54bb('0x41')](handleError(_0x21d40e,null));};exports[_0x54bb('0x42')]=function(_0x365f8c,_0x3b46f9){var _0x944be9={'raw':!![],'where':{'id':_0x365f8c[_0x54bb('0x43')]['id']}},_0x50587e={};_0x50587e[_0x54bb('0x2d')]=_[_0x54bb('0x2e')](db[_0x54bb('0x2a')][_0x54bb('0x2b')]);_0x50587e['query']=_[_0x54bb('0x2e')](_0x365f8c[_0x54bb('0x30')]);_0x50587e['filters']=_[_0x54bb('0x44')](_0x50587e[_0x54bb('0x2d')],_0x50587e[_0x54bb('0x30')]);_0x944be9[_0x54bb('0x31')]=_['intersection'](_0x50587e[_0x54bb('0x2d')],qs[_0x54bb('0x32')](_0x365f8c[_0x54bb('0x30')][_0x54bb('0x32')]));_0x944be9['attributes']=_0x944be9['attributes'][_0x54bb('0x45')]?_0x944be9[_0x54bb('0x31')]:_0x50587e[_0x54bb('0x2d')];if(_0x365f8c[_0x54bb('0x30')][_0x54bb('0x3d')]){_0x944be9[_0x54bb('0x3e')]=[{'all':!![]}];}_0x944be9=_[_0x54bb('0x3a')]({},_0x944be9,_0x365f8c[_0x54bb('0x46')]);return db[_0x54bb('0x2a')]['find'](_0x944be9)[_0x54bb('0x22')](handleEntityNotFound(_0x3b46f9,null))['then'](respondWithResult(_0x3b46f9,null))['catch'](handleError(_0x3b46f9,null));};exports['download']=function(_0x554393,_0x4b6ff9,_0x5cbb5d){return db[_0x54bb('0x2a')][_0x54bb('0x47')]({'where':{'id':_0x554393[_0x54bb('0x43')]['id']},'attributes':[_0x54bb('0x27'),'save_name',_0x54bb('0x48')],'raw':!![]})[_0x54bb('0x22')](handleEntityNotFound(_0x4b6ff9,null))[_0x54bb('0x22')](function(_0x4500ac){if(_0x4500ac){if(!fs[_0x54bb('0x49')](path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],_0x54bb('0x4c'),_0x4500ac[_0x54bb('0x4d')]+'.'+_0x4500ac['converted_format']))){throw new db[(_0x54bb('0x4e'))][(_0x54bb('0x4f'))]('Sound\x20not\x20found');}return _0x4b6ff9[_0x54bb('0x50')](path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],'server/files/sounds/converted',util[_0x54bb('0x51')]('%s.%s',_0x4500ac[_0x54bb('0x4d')],_0x4500ac['converted_format'])),util[_0x54bb('0x51')](_0x54bb('0x52'),_0x4500ac[_0x54bb('0x27')],_0x4500ac[_0x54bb('0x48')]));}return null;})[_0x54bb('0x41')](handleError(_0x4b6ff9,null));};exports[_0x54bb('0x53')]=function(_0x450475,_0x5dfd23,_0x3b2e9f){var _0x212cda={'name':path[_0x54bb('0x54')](_0x450475[_0x54bb('0x55')][_0x54bb('0x56')],path['extname'](_0x450475['file']['originalname'])),'save_name':path[_0x54bb('0x54')](_0x450475[_0x54bb('0x55')][_0x54bb('0x57')],path[_0x54bb('0x58')](_0x450475[_0x54bb('0x55')][_0x54bb('0x57')])),'original_format':path[_0x54bb('0x58')](_0x450475['file'][_0x54bb('0x56')])[_0x54bb('0x59')](0x1),'converted_format':_0x54bb('0x5a')};var _0x615d85=path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],'server/files/sounds/original',_0x450475[_0x54bb('0x55')]['filename']);var _0x3600d7=path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],_0x54bb('0x4c'),util[_0x54bb('0x51')](_0x54bb('0x52'),path[_0x54bb('0x54')](_0x450475['file'][_0x54bb('0x57')],path['extname'](_0x450475[_0x54bb('0x55')][_0x54bb('0x57')])),_0x212cda[_0x54bb('0x48')]));logger['info']('Sound\x20upload\x20filepath:\x20%s',_0x615d85);logger['info'](_0x54bb('0x5b'),_0x3600d7);try{fs[_0x54bb('0x5c')](_0x615d85,parseInt(_0x54bb('0x5d'),0x8));var _0x928006=sox[_0x54bb('0x5e')](_0x615d85,_0x3600d7,{'sampleRate':0x1f40,'format':_0x54bb('0x5a'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x928006['on'](_0x54bb('0x5f'),function(_0x26c832){fs['unlinkSync'](_0x615d85);_0x5dfd23[_0x54bb('0x18')](0x1f4)[_0x54bb('0x28')](_0x26c832);});_0x928006['on']('src',function(_0x24f357){_0x212cda['original_duration']=isNaN(_0x24f357[_0x54bb('0x60')])?null:_0x24f357[_0x54bb('0x60')]*0x3e8;_0x212cda[_0x54bb('0x61')]=isNaN(_0x24f357[_0x54bb('0x62')])?null:_0x24f357['sampleCount'];_0x212cda[_0x54bb('0x63')]=isNaN(_0x24f357['channelCount'])?null:_0x24f357[_0x54bb('0x64')];_0x212cda['original_bitRate']=isNaN(_0x24f357[_0x54bb('0x65')])?null:_0x24f357['bitRate'];_0x212cda['original_sampleRate']=isNaN(_0x24f357['sampleRate'])?null:_0x24f357['sampleRate'];});_0x928006['on'](_0x54bb('0x66'),function(_0x56661b){_0x212cda['converted_duration']=isNaN(_0x56661b[_0x54bb('0x60')])?null:_0x56661b[_0x54bb('0x60')]*0x3e8;_0x212cda[_0x54bb('0x67')]=isNaN(_0x56661b[_0x54bb('0x62')])?null:_0x56661b[_0x54bb('0x62')];_0x212cda[_0x54bb('0x68')]=isNaN(_0x56661b[_0x54bb('0x64')])?null:_0x56661b[_0x54bb('0x64')];_0x212cda[_0x54bb('0x69')]=isNaN(_0x56661b[_0x54bb('0x65')])?null:_0x56661b[_0x54bb('0x65')];_0x212cda[_0x54bb('0x6a')]=isNaN(_0x56661b[_0x54bb('0x6b')])?null:_0x56661b[_0x54bb('0x6b')];});_0x928006['on'](_0x54bb('0x19'),function(){fs[_0x54bb('0x5c')](_0x3600d7,parseInt(_0x54bb('0x5d'),0x8));return db[_0x54bb('0x2a')][_0x54bb('0x53')](_0x212cda)['then'](function(_0x1184b4){var _0xfee454={'role':_0x450475[_0x54bb('0x6c')][_0x54bb('0x6d')],'userProfileId':_0x450475[_0x54bb('0x6c')][_0x54bb('0x6e')]};if(!_0xfee454)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfee454[_0x54bb('0x6d')]===_0x54bb('0x6f')){var _0x3882d6=_0x1184b4['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x54bb('0x24'),'userProfileId':_0xfee454[_0x54bb('0x6e')]},'raw':!![]})[_0x54bb('0x22')](function(_0x2ab44a){if(_0x2ab44a&&_0x2ab44a[_0x54bb('0x70')]===0x0){return db['UserProfileResource']['create']({'name':_0x3882d6[_0x54bb('0x27')],'resourceId':_0x3882d6['id'],'type':_0x2ab44a[_0x54bb('0x27')],'sectionId':_0x2ab44a['id']},{})[_0x54bb('0x22')](function(){return _0x1184b4;});}else{return _0x1184b4;}})['catch'](function(_0x182a54){logger[_0x54bb('0x5f')](_0x54bb('0x71'),_0x182a54);throw _0x182a54;});}return _0x1184b4;})[_0x54bb('0x22')](respondWithResult(_0x5dfd23,null))[_0x54bb('0x41')](handleError(_0x5dfd23,null));});_0x928006[_0x54bb('0x72')]();}catch(_0x262706){_0x5dfd23[_0x54bb('0x18')](0x1f4)[_0x54bb('0x28')](_0x262706);}};exports['update']=function(_0x216f50,_0xfd35a1,_0xf7dbef){return db['Sound'][_0x54bb('0x47')]({'where':{'id':_0x216f50[_0x54bb('0x43')]['id']}})['then'](handleEntityNotFound(_0xfd35a1,null))[_0x54bb('0x22')](saveUpdates(_[_0x54bb('0x38')](_0x216f50[_0x54bb('0x6c')],['name','description']),null))[_0x54bb('0x22')](respondWithResult(_0xfd35a1,null))[_0x54bb('0x41')](handleError(_0xfd35a1,null));};exports[_0x54bb('0x73')]=function(_0x31d904,_0x10f458,_0x44a808){return db[_0x54bb('0x2a')][_0x54bb('0x47')]({'where':{'id':_0x31d904[_0x54bb('0x43')]['id']}})[_0x54bb('0x22')](function(_0x1fcb43){if(_0x1fcb43){return _0x1fcb43[_0x54bb('0x74')]();}})['then'](function(_0x2247b0){var _0x569fe8=path['join'](config[_0x54bb('0x4b')],_0x54bb('0x75'),util[_0x54bb('0x51')](_0x54bb('0x52'),_0x2247b0[_0x54bb('0x4d')],_0x2247b0[_0x54bb('0x76')]));var _0x7f2304=path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],_0x54bb('0x4c'),util['format'](_0x54bb('0x52'),_0x2247b0['save_name'],_0x2247b0['converted_format']));fs[_0x54bb('0x77')](_0x569fe8);fs['unlinkSync'](_0x7f2304);return _0x2247b0;})[_0x54bb('0x22')](function(_0x4b2a21){if(_0x4b2a21){return _0x10f458[_0x54bb('0x18')](0xcc)['end']();}})[_0x54bb('0x22')](handleEntityNotFound(_0x10f458,null))[_0x54bb('0x41')](handleError(_0x10f458,null));};
\ No newline at end of file
+var _0xaab7=['rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','set','Content-Range','apply','reject','save','update','then','destroy','get','Sounds','UserProfileResource','status','error','stack','name','index','Sound','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','VIRTUAL','filter','merge','count','includeAll','include','rows','catch','show','params','options','find','save_name','converted_format','existsSync','join','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','download','root','format','%s.%s','create','file','originalname','extname','basename','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','send','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','pick','description','delete','original_format','eml-format'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xaab7,0x7e));var _0x7aab=function(_0x1946c5,_0x42e375){_0x1946c5=_0x1946c5-0x0;var _0x12ef20=_0xaab7[_0x1946c5];return _0x12ef20;};'use strict';var emlformat=require(_0x7aab('0x0'));var rimraf=require(_0x7aab('0x1'));var zipdir=require(_0x7aab('0x2'));var jsonpatch=require(_0x7aab('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7aab('0x4'));var Mustache=require('mustache');var util=require(_0x7aab('0x5'));var path=require(_0x7aab('0x6'));var sox=require(_0x7aab('0x7'));var csv=require(_0x7aab('0x8'));var ejs=require(_0x7aab('0x9'));var fs=require('fs');var fs_extra=require(_0x7aab('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x7aab('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7aab('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7aab('0xd'));var Papa=require(_0x7aab('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7aab('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7aab('0x10'))(_0x7aab('0x11'));var utils=require(_0x7aab('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x7aab('0x13'));var db=require(_0x7aab('0x14'))['db'];function respondWithStatusCode(_0x419c37,_0x1722df){_0x1722df=_0x1722df||0xcc;return function(_0x4ba78b){if(_0x4ba78b){return _0x419c37[_0x7aab('0x15')](_0x1722df);}return _0x419c37['status'](_0x1722df)[_0x7aab('0x16')]();};}function respondWithResult(_0x3300e0,_0xd20cee){_0xd20cee=_0xd20cee||0xc8;return function(_0x208979){if(_0x208979){return _0x3300e0['status'](_0xd20cee)[_0x7aab('0x17')](_0x208979);}};}function respondWithFilteredResult(_0x55e810,_0x132b07){return function(_0x20137f){if(_0x20137f){var _0xe7b966=typeof _0x132b07[_0x7aab('0x18')]==='undefined'&&typeof _0x132b07['limit']===_0x7aab('0x19');var _0x2453b3=_0x20137f['count'];var _0x226131=_0xe7b966?0x0:_0x132b07[_0x7aab('0x18')];var _0x3927a2=_0xe7b966?_0x20137f['count']:_0x132b07[_0x7aab('0x18')]+_0x132b07['limit'];var _0x4cf20e;if(_0x3927a2>=_0x2453b3){_0x3927a2=_0x2453b3;_0x4cf20e=0xc8;}else{_0x4cf20e=0xce;}_0x55e810['status'](_0x4cf20e);return _0x55e810[_0x7aab('0x1a')](_0x7aab('0x1b'),_0x226131+'-'+_0x3927a2+'/'+_0x2453b3)[_0x7aab('0x17')](_0x20137f);}return null;};}function patchUpdates(_0x42e2f9){return function(_0xf2f0a4){try{jsonpatch[_0x7aab('0x1c')](_0xf2f0a4,_0x42e2f9,!![]);}catch(_0x176912){return BPromise[_0x7aab('0x1d')](_0x176912);}return _0xf2f0a4[_0x7aab('0x1e')]();};}function saveUpdates(_0x48a0a3,_0x4a7c57){return function(_0xf8aba8){if(_0xf8aba8){return _0xf8aba8[_0x7aab('0x1f')](_0x48a0a3)[_0x7aab('0x20')](function(_0x412fd9){return _0x412fd9;});}return null;};}function removeEntity(_0x509f18,_0x3d7337){return function(_0x30968b){if(_0x30968b){return _0x30968b[_0x7aab('0x21')]()[_0x7aab('0x20')](function(){var _0x5db5e9=_0x30968b[_0x7aab('0x22')]({'plain':!![]});var _0x5b5d9d=_0x7aab('0x23');return db[_0x7aab('0x24')][_0x7aab('0x21')]({'where':{'type':_0x5b5d9d,'resourceId':_0x5db5e9['id']}})['then'](function(){return _0x30968b;});})[_0x7aab('0x20')](function(){_0x509f18[_0x7aab('0x25')](0xcc)[_0x7aab('0x16')]();});}};}function handleEntityNotFound(_0x5bf24c,_0xf622c4){return function(_0x15eaa3){if(!_0x15eaa3){_0x5bf24c[_0x7aab('0x15')](0x194);}return _0x15eaa3;};}function handleError(_0x4dd14a,_0x5f85ec){_0x5f85ec=_0x5f85ec||0x1f4;return function(_0x5dc556){logger[_0x7aab('0x26')](_0x5dc556[_0x7aab('0x27')]);if(_0x5dc556[_0x7aab('0x28')]){delete _0x5dc556['name'];}_0x4dd14a['status'](_0x5f85ec)['send'](_0x5dc556);};}exports[_0x7aab('0x29')]=function(_0x4dd92c,_0x42927a){var _0x447a4a={},_0x5bc1b9={},_0x4d310c={'count':0x0,'rows':[]};var _0x5a8a56=_['map'](db[_0x7aab('0x2a')][_0x7aab('0x2b')],function(_0x54389e){return{'name':_0x54389e[_0x7aab('0x2c')],'type':_0x54389e[_0x7aab('0x2d')][_0x7aab('0x2e')]};});_0x5bc1b9['model']=_[_0x7aab('0x2f')](_0x5a8a56,_0x7aab('0x28'));_0x5bc1b9[_0x7aab('0x30')]=_[_0x7aab('0x31')](_0x4dd92c[_0x7aab('0x30')]);_0x5bc1b9[_0x7aab('0x32')]=_[_0x7aab('0x33')](_0x5bc1b9[_0x7aab('0x34')],_0x5bc1b9[_0x7aab('0x30')]);_0x447a4a[_0x7aab('0x35')]=_[_0x7aab('0x33')](_0x5bc1b9[_0x7aab('0x34')],qs['fields'](_0x4dd92c[_0x7aab('0x30')][_0x7aab('0x36')]));_0x447a4a[_0x7aab('0x35')]=_0x447a4a['attributes'][_0x7aab('0x37')]?_0x447a4a[_0x7aab('0x35')]:_0x5bc1b9[_0x7aab('0x34')];if(!_0x4dd92c['query'][_0x7aab('0x38')](_0x7aab('0x39'))){_0x447a4a['limit']=qs[_0x7aab('0x3a')](_0x4dd92c['query']['limit']);_0x447a4a['offset']=qs[_0x7aab('0x18')](_0x4dd92c[_0x7aab('0x30')][_0x7aab('0x18')]);}_0x447a4a['order']=qs[_0x7aab('0x3b')](_0x4dd92c['query'][_0x7aab('0x3b')]);_0x447a4a[_0x7aab('0x3c')]=qs['filters'](_['pick'](_0x4dd92c[_0x7aab('0x30')],_0x5bc1b9[_0x7aab('0x32')]),_0x5a8a56);if(_0x4dd92c[_0x7aab('0x30')]['filter']){_0x447a4a['where']=_['merge'](_0x447a4a[_0x7aab('0x3c')],{'$or':_[_0x7aab('0x2f')](_0x5a8a56,function(_0x26eb6e){if(_0x26eb6e[_0x7aab('0x2d')]!==_0x7aab('0x3d')){var _0x3863a5={};_0x3863a5[_0x26eb6e[_0x7aab('0x28')]]={'$like':'%'+_0x4dd92c['query'][_0x7aab('0x3e')]+'%'};return _0x3863a5;}})});}_0x447a4a=_[_0x7aab('0x3f')]({},_0x447a4a,_0x4dd92c['options']);var _0x1b5288={'where':_0x447a4a[_0x7aab('0x3c')]};return db[_0x7aab('0x2a')][_0x7aab('0x40')](_0x1b5288)[_0x7aab('0x20')](function(_0x262527){_0x4d310c[_0x7aab('0x40')]=_0x262527;if(_0x4dd92c[_0x7aab('0x30')][_0x7aab('0x41')]){_0x447a4a[_0x7aab('0x42')]=[{'all':!![]}];}return db[_0x7aab('0x2a')]['findAll'](_0x447a4a);})['then'](function(_0x4bb841){_0x4d310c[_0x7aab('0x43')]=_0x4bb841;return _0x4d310c;})['then'](respondWithFilteredResult(_0x42927a,_0x447a4a))[_0x7aab('0x44')](handleError(_0x42927a,null));};exports[_0x7aab('0x45')]=function(_0x136457,_0x5eba4f){var _0x1b88a9={'raw':!![],'where':{'id':_0x136457[_0x7aab('0x46')]['id']}},_0x452566={};_0x452566[_0x7aab('0x34')]=_[_0x7aab('0x31')](db[_0x7aab('0x2a')]['rawAttributes']);_0x452566[_0x7aab('0x30')]=_['keys'](_0x136457[_0x7aab('0x30')]);_0x452566[_0x7aab('0x32')]=_[_0x7aab('0x33')](_0x452566[_0x7aab('0x34')],_0x452566[_0x7aab('0x30')]);_0x1b88a9['attributes']=_[_0x7aab('0x33')](_0x452566[_0x7aab('0x34')],qs[_0x7aab('0x36')](_0x136457[_0x7aab('0x30')][_0x7aab('0x36')]));_0x1b88a9[_0x7aab('0x35')]=_0x1b88a9['attributes']['length']?_0x1b88a9[_0x7aab('0x35')]:_0x452566[_0x7aab('0x34')];if(_0x136457[_0x7aab('0x30')][_0x7aab('0x41')]){_0x1b88a9[_0x7aab('0x42')]=[{'all':!![]}];}_0x1b88a9=_[_0x7aab('0x3f')]({},_0x1b88a9,_0x136457[_0x7aab('0x47')]);return db[_0x7aab('0x2a')][_0x7aab('0x48')](_0x1b88a9)['then'](handleEntityNotFound(_0x5eba4f,null))[_0x7aab('0x20')](respondWithResult(_0x5eba4f,null))['catch'](handleError(_0x5eba4f,null));};exports['download']=function(_0x43d568,_0x12a374,_0x242dc2){return db[_0x7aab('0x2a')][_0x7aab('0x48')]({'where':{'id':_0x43d568[_0x7aab('0x46')]['id']},'attributes':[_0x7aab('0x28'),_0x7aab('0x49'),_0x7aab('0x4a')],'raw':!![]})['then'](handleEntityNotFound(_0x12a374,null))[_0x7aab('0x20')](function(_0xa811f9){if(_0xa811f9){if(!fs[_0x7aab('0x4b')](path[_0x7aab('0x4c')](config['root'],_0x7aab('0x4d'),_0xa811f9[_0x7aab('0x49')]+'.'+_0xa811f9[_0x7aab('0x4a')]))){throw new db[(_0x7aab('0x4e'))][(_0x7aab('0x4f'))](_0x7aab('0x50'));}return _0x12a374[_0x7aab('0x51')](path[_0x7aab('0x4c')](config[_0x7aab('0x52')],_0x7aab('0x4d'),util[_0x7aab('0x53')]('%s.%s',_0xa811f9[_0x7aab('0x49')],_0xa811f9[_0x7aab('0x4a')])),util['format'](_0x7aab('0x54'),_0xa811f9[_0x7aab('0x28')],_0xa811f9[_0x7aab('0x4a')]));}return null;})[_0x7aab('0x44')](handleError(_0x12a374,null));};exports[_0x7aab('0x55')]=function(_0x38d556,_0xa18690,_0x3791fe){var _0xa472c1={'name':path['basename'](_0x38d556[_0x7aab('0x56')][_0x7aab('0x57')],path[_0x7aab('0x58')](_0x38d556['file'][_0x7aab('0x57')])),'save_name':path[_0x7aab('0x59')](_0x38d556['file'][_0x7aab('0x5a')],path[_0x7aab('0x58')](_0x38d556[_0x7aab('0x56')][_0x7aab('0x5a')])),'original_format':path[_0x7aab('0x58')](_0x38d556[_0x7aab('0x56')][_0x7aab('0x57')])[_0x7aab('0x5b')](0x1),'converted_format':_0x7aab('0x5c')};var _0x5866d7=path[_0x7aab('0x4c')](config[_0x7aab('0x52')],_0x7aab('0x5d'),_0x38d556[_0x7aab('0x56')][_0x7aab('0x5a')]);var _0x46c254=path['join'](config[_0x7aab('0x52')],_0x7aab('0x4d'),util[_0x7aab('0x53')](_0x7aab('0x54'),path[_0x7aab('0x59')](_0x38d556[_0x7aab('0x56')][_0x7aab('0x5a')],path[_0x7aab('0x58')](_0x38d556['file'][_0x7aab('0x5a')])),_0xa472c1['converted_format']));logger[_0x7aab('0x5e')](_0x7aab('0x5f'),_0x5866d7);logger[_0x7aab('0x5e')](_0x7aab('0x60'),_0x46c254);try{fs[_0x7aab('0x61')](_0x5866d7,parseInt(_0x7aab('0x62'),0x8));var _0xe446bd=sox[_0x7aab('0x63')](_0x5866d7,_0x46c254,{'sampleRate':0x1f40,'format':_0x7aab('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xe446bd['on'](_0x7aab('0x26'),function(_0x4320f0){fs[_0x7aab('0x64')](_0x5866d7);_0xa18690[_0x7aab('0x25')](0x1f4)[_0x7aab('0x65')](_0x4320f0);});_0xe446bd['on'](_0x7aab('0x66'),function(_0x2c9731){_0xa472c1[_0x7aab('0x67')]=isNaN(_0x2c9731['duration'])?null:_0x2c9731[_0x7aab('0x68')]*0x3e8;_0xa472c1[_0x7aab('0x69')]=isNaN(_0x2c9731['sampleCount'])?null:_0x2c9731[_0x7aab('0x6a')];_0xa472c1[_0x7aab('0x6b')]=isNaN(_0x2c9731[_0x7aab('0x6c')])?null:_0x2c9731[_0x7aab('0x6c')];_0xa472c1['original_bitRate']=isNaN(_0x2c9731['bitRate'])?null:_0x2c9731[_0x7aab('0x6d')];_0xa472c1[_0x7aab('0x6e')]=isNaN(_0x2c9731[_0x7aab('0x6f')])?null:_0x2c9731['sampleRate'];});_0xe446bd['on'](_0x7aab('0x70'),function(_0x19ed09){_0xa472c1[_0x7aab('0x71')]=isNaN(_0x19ed09[_0x7aab('0x68')])?null:_0x19ed09[_0x7aab('0x68')]*0x3e8;_0xa472c1[_0x7aab('0x72')]=isNaN(_0x19ed09['sampleCount'])?null:_0x19ed09[_0x7aab('0x6a')];_0xa472c1['converted_channelCount']=isNaN(_0x19ed09[_0x7aab('0x6c')])?null:_0x19ed09[_0x7aab('0x6c')];_0xa472c1[_0x7aab('0x73')]=isNaN(_0x19ed09['bitRate'])?null:_0x19ed09[_0x7aab('0x6d')];_0xa472c1['converted_sampleRate']=isNaN(_0x19ed09['sampleRate'])?null:_0x19ed09[_0x7aab('0x6f')];});_0xe446bd['on']('end',function(){fs[_0x7aab('0x61')](_0x46c254,parseInt(_0x7aab('0x62'),0x8));return db[_0x7aab('0x2a')][_0x7aab('0x55')](_0xa472c1)[_0x7aab('0x20')](function(_0x277186){var _0x447600={'role':_0x38d556['body'][_0x7aab('0x74')],'userProfileId':_0x38d556['body'][_0x7aab('0x75')]};if(!_0x447600)throw new Error(_0x7aab('0x76'));if(_0x447600['role']===_0x7aab('0x77')){var _0x2f12bc=_0x277186[_0x7aab('0x22')]({'plain':!![]});return db[_0x7aab('0x78')][_0x7aab('0x48')]({'where':{'name':_0x7aab('0x23'),'userProfileId':_0x447600[_0x7aab('0x75')]},'raw':!![]})['then'](function(_0x2234e1){if(_0x2234e1&&_0x2234e1['autoAssociation']===0x0){return db[_0x7aab('0x24')][_0x7aab('0x55')]({'name':_0x2f12bc[_0x7aab('0x28')],'resourceId':_0x2f12bc['id'],'type':_0x2234e1['name'],'sectionId':_0x2234e1['id']},{})[_0x7aab('0x20')](function(){return _0x277186;});}else{return _0x277186;}})['catch'](function(_0x2b937d){logger[_0x7aab('0x26')](_0x7aab('0x79'),_0x2b937d);throw _0x2b937d;});}return _0x277186;})['then'](respondWithResult(_0xa18690,null))[_0x7aab('0x44')](handleError(_0xa18690,null));});_0xe446bd[_0x7aab('0x7a')]();}catch(_0x4d53eb){_0xa18690[_0x7aab('0x25')](0x1f4)[_0x7aab('0x65')](_0x4d53eb);}};exports[_0x7aab('0x1f')]=function(_0x19d10e,_0x45a580,_0x4a1a1a){return db[_0x7aab('0x2a')][_0x7aab('0x48')]({'where':{'id':_0x19d10e[_0x7aab('0x46')]['id']}})[_0x7aab('0x20')](handleEntityNotFound(_0x45a580,null))[_0x7aab('0x20')](saveUpdates(_[_0x7aab('0x7b')](_0x19d10e['body'],['name',_0x7aab('0x7c')]),null))[_0x7aab('0x20')](respondWithResult(_0x45a580,null))[_0x7aab('0x44')](handleError(_0x45a580,null));};exports[_0x7aab('0x7d')]=function(_0x3efc8a,_0x54ac13,_0x2d50d5){return db[_0x7aab('0x2a')][_0x7aab('0x48')]({'where':{'id':_0x3efc8a[_0x7aab('0x46')]['id']}})[_0x7aab('0x20')](function(_0x5cc520){if(_0x5cc520){return _0x5cc520[_0x7aab('0x21')]();}})['then'](function(_0x5487c6){var _0x33f8ef=path['join'](config[_0x7aab('0x52')],'server/files/sounds/original',util[_0x7aab('0x53')](_0x7aab('0x54'),_0x5487c6[_0x7aab('0x49')],_0x5487c6[_0x7aab('0x7e')]));var _0x3ba534=path[_0x7aab('0x4c')](config['root'],_0x7aab('0x4d'),util['format'](_0x7aab('0x54'),_0x5487c6[_0x7aab('0x49')],_0x5487c6[_0x7aab('0x4a')]));fs[_0x7aab('0x64')](_0x33f8ef);fs[_0x7aab('0x64')](_0x3ba534);return _0x5487c6;})[_0x7aab('0x20')](function(_0x75057b){if(_0x75057b){return _0x54ac13[_0x7aab('0x25')](0xcc)['end']();}})['then'](handleEntityNotFound(_0x54ac13,null))[_0x7aab('0x44')](handleError(_0x54ac13,null));};
\ No newline at end of file
index 44d7eb5..6e6c7d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfea9=['tools_sounds','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./sound.attributes','define','Sound'];(function(_0x52c95a,_0x384c07){var _0x1b6a93=function(_0x1dbe39){while(--_0x1dbe39){_0x52c95a['push'](_0x52c95a['shift']());}};_0x1b6a93(++_0x384c07);}(_0xfea9,0x85));var _0x9fea=function(_0x16ceb5,_0x24dbf0){_0x16ceb5=_0x16ceb5-0x0;var _0x2ecd40=_0xfea9[_0x16ceb5];return _0x2ecd40;};'use strict';var _=require(_0x9fea('0x0'));var util=require('util');var logger=require(_0x9fea('0x1'))('api');var moment=require(_0x9fea('0x2'));var BPromise=require(_0x9fea('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9fea('0x4'));var rimraf=require(_0x9fea('0x5'));var config=require(_0x9fea('0x6'));var attributes=require(_0x9fea('0x7'));module['exports']=function(_0x29b519,_0x28d63d){return _0x29b519[_0x9fea('0x8')](_0x9fea('0x9'),attributes,{'tableName':_0x9fea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8649=['path','rimraf','../../config/environment','./sound.attributes','define','Sound','tools_sounds','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x5c279e,_0x3bedee){var _0x3b3591=function(_0x3e5455){while(--_0x3e5455){_0x5c279e['push'](_0x5c279e['shift']());}};_0x3b3591(++_0x3bedee);}(_0x8649,0xbb));var _0x9864=function(_0x28e952,_0x479804){_0x28e952=_0x28e952-0x0;var _0x237622=_0x8649[_0x28e952];return _0x237622;};'use strict';var _=require(_0x9864('0x0'));var util=require('util');var logger=require(_0x9864('0x1'))('api');var moment=require(_0x9864('0x2'));var BPromise=require(_0x9864('0x3'));var rp=require(_0x9864('0x4'));var fs=require('fs');var path=require(_0x9864('0x5'));var rimraf=require(_0x9864('0x6'));var config=require(_0x9864('0x7'));var attributes=require(_0x9864('0x8'));module['exports']=function(_0x34d814,_0x34226f){return _0x34d814[_0x9864('0x9')](_0x9864('0xa'),attributes,{'tableName':_0x9864('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a7e5489..11f9088 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe148=['raw','attributes','include','map','model','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','Sound,\x20%s,\x20%s','message','result','catch','ShowSound','Sound','find','options'];(function(_0x12b1c7,_0x221e8f){var _0x2aa8a2=function(_0x3f51e1){while(--_0x3f51e1){_0x12b1c7['push'](_0x12b1c7['shift']());}};_0x2aa8a2(++_0x221e8f);}(_0xe148,0x1b3));var _0x8e14=function(_0x5743e3,_0x4a2aab){_0x5743e3=_0x5743e3-0x0;var _0x24d100=_0xe148[_0x5743e3];return _0x24d100;};'use strict';var _=require(_0x8e14('0x0'));var util=require(_0x8e14('0x1'));var moment=require(_0x8e14('0x2'));var BPromise=require(_0x8e14('0x3'));var rs=require(_0x8e14('0x4'));var fs=require('fs');var Redis=require(_0x8e14('0x5'));var db=require(_0x8e14('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e14('0x7'))(_0x8e14('0x8'));var config=require(_0x8e14('0x9'));var jayson=require(_0x8e14('0xa'));var client=jayson[_0x8e14('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5f13d7,_0x14ff61,_0x28bf81){return new BPromise(function(_0x5d04cc,_0x1ac0e0){return client[_0x8e14('0xc')](_0x5f13d7,_0x28bf81)[_0x8e14('0xd')](function(_0x1ec3c4){logger[_0x8e14('0xe')]('Sound,\x20%s,\x20%s',_0x14ff61,_0x8e14('0xf'));logger['debug'](_0x8e14('0x10'),_0x14ff61,'request\x20sent',JSON[_0x8e14('0x11')](_0x1ec3c4));if(_0x1ec3c4[_0x8e14('0x12')]){if(_0x1ec3c4['error']['code']===0x1f4){logger[_0x8e14('0x12')](_0x8e14('0x13'),_0x14ff61,_0x1ec3c4[_0x8e14('0x12')][_0x8e14('0x14')]);return _0x1ac0e0(_0x1ec3c4[_0x8e14('0x12')][_0x8e14('0x14')]);}logger[_0x8e14('0x12')](_0x8e14('0x13'),_0x14ff61,_0x1ec3c4[_0x8e14('0x12')]['message']);return _0x5d04cc(_0x1ec3c4[_0x8e14('0x12')][_0x8e14('0x14')]);}else{logger[_0x8e14('0xe')](_0x8e14('0x13'),_0x14ff61,'request\x20sent');_0x5d04cc(_0x1ec3c4[_0x8e14('0x15')][_0x8e14('0x14')]);}})[_0x8e14('0x16')](function(_0x53403b){logger['error'](_0x8e14('0x13'),_0x14ff61,_0x53403b);_0x1ac0e0(_0x53403b);});});}exports[_0x8e14('0x17')]=function(_0x4b8ef8){var _0x8df99c=this;return new Promise(function(_0x1ea0a6,_0x107248){return db[_0x8e14('0x18')][_0x8e14('0x19')]({'raw':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8[_0x8e14('0x1a')][_0x8e14('0x1b')]===undefined?!![]:![]:!![],'where':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8[_0x8e14('0x1a')]['where']||null:null,'attributes':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8['options'][_0x8e14('0x1c')]||null:null,'include':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8[_0x8e14('0x1a')][_0x8e14('0x1d')]?_[_0x8e14('0x1e')](_0x4b8ef8[_0x8e14('0x1a')][_0x8e14('0x1d')],function(_0x59917e){return{'model':db[_0x59917e[_0x8e14('0x1f')]],'as':_0x59917e['as'],'attributes':_0x59917e[_0x8e14('0x1c')],'include':_0x59917e[_0x8e14('0x1d')]?_[_0x8e14('0x1e')](_0x59917e[_0x8e14('0x1d')],function(_0x571f41){return{'model':db[_0x571f41[_0x8e14('0x1f')]],'as':_0x571f41['as'],'attributes':_0x571f41['attributes'],'include':_0x571f41[_0x8e14('0x1d')]?_[_0x8e14('0x1e')](_0x571f41[_0x8e14('0x1d')],function(_0x2650dd){return{'model':db[_0x2650dd[_0x8e14('0x1f')]],'as':_0x2650dd['as'],'attributes':_0x2650dd[_0x8e14('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8e14('0xd')](function(_0x15f17e){logger[_0x8e14('0xe')]('ShowSound',_0x4b8ef8);logger[_0x8e14('0x20')](_0x8e14('0x17'),_0x4b8ef8,JSON[_0x8e14('0x11')](_0x15f17e));_0x1ea0a6(_0x15f17e);})['catch'](function(_0x3c56e6){logger['error']('ShowSound',_0x3c56e6[_0x8e14('0x14')],_0x4b8ef8);_0x107248(_0x8df99c[_0x8e14('0x12')](0x1f4,_0x3c56e6[_0x8e14('0x14')]));});});};
\ No newline at end of file
+var _0xddf6=['rpc','client','then','info','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','Sound,\x20%s,\x20%s','message','catch','ShowSound','find','options','where','include','model','attributes','map','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x220481,_0x3e36b3){var _0x5eaa31=function(_0xa63fe1){while(--_0xa63fe1){_0x220481['push'](_0x220481['shift']());}};_0x5eaa31(++_0x3e36b3);}(_0xddf6,0xc2));var _0x6ddf=function(_0xf50f6a,_0x6f0d68){_0xf50f6a=_0xf50f6a-0x0;var _0xec2f6e=_0xddf6[_0xf50f6a];return _0xec2f6e;};'use strict';var _=require(_0x6ddf('0x0'));var util=require(_0x6ddf('0x1'));var moment=require(_0x6ddf('0x2'));var BPromise=require(_0x6ddf('0x3'));var rs=require(_0x6ddf('0x4'));var fs=require('fs');var Redis=require(_0x6ddf('0x5'));var db=require(_0x6ddf('0x6'))['db'];var utils=require(_0x6ddf('0x7'));var logger=require(_0x6ddf('0x8'))(_0x6ddf('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6ddf('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4db342,_0x4164f8,_0x2d7b5e){return new BPromise(function(_0x2ad884,_0x133354){return client['request'](_0x4db342,_0x2d7b5e)[_0x6ddf('0xb')](function(_0x21a646){logger[_0x6ddf('0xc')]('Sound,\x20%s,\x20%s',_0x4164f8,_0x6ddf('0xd'));logger['debug'](_0x6ddf('0xe'),_0x4164f8,_0x6ddf('0xd'),JSON[_0x6ddf('0xf')](_0x21a646));if(_0x21a646[_0x6ddf('0x10')]){if(_0x21a646[_0x6ddf('0x10')]['code']===0x1f4){logger['error'](_0x6ddf('0x11'),_0x4164f8,_0x21a646['error']['message']);return _0x133354(_0x21a646['error'][_0x6ddf('0x12')]);}logger['error'](_0x6ddf('0x11'),_0x4164f8,_0x21a646[_0x6ddf('0x10')]['message']);return _0x2ad884(_0x21a646[_0x6ddf('0x10')][_0x6ddf('0x12')]);}else{logger['info'](_0x6ddf('0x11'),_0x4164f8,_0x6ddf('0xd'));_0x2ad884(_0x21a646['result'][_0x6ddf('0x12')]);}})[_0x6ddf('0x13')](function(_0x476c93){logger[_0x6ddf('0x10')](_0x6ddf('0x11'),_0x4164f8,_0x476c93);_0x133354(_0x476c93);});});}exports[_0x6ddf('0x14')]=function(_0x414691){var _0x3b8931=this;return new Promise(function(_0x106aae,_0x1cdd45){return db['Sound'][_0x6ddf('0x15')]({'raw':_0x414691['options']?_0x414691['options']['raw']===undefined?!![]:![]:!![],'where':_0x414691[_0x6ddf('0x16')]?_0x414691[_0x6ddf('0x16')][_0x6ddf('0x17')]||null:null,'attributes':_0x414691[_0x6ddf('0x16')]?_0x414691['options']['attributes']||null:null,'include':_0x414691[_0x6ddf('0x16')]?_0x414691['options'][_0x6ddf('0x18')]?_['map'](_0x414691[_0x6ddf('0x16')][_0x6ddf('0x18')],function(_0x1ac5ef){return{'model':db[_0x1ac5ef[_0x6ddf('0x19')]],'as':_0x1ac5ef['as'],'attributes':_0x1ac5ef[_0x6ddf('0x1a')],'include':_0x1ac5ef[_0x6ddf('0x18')]?_[_0x6ddf('0x1b')](_0x1ac5ef['include'],function(_0x42e682){return{'model':db[_0x42e682['model']],'as':_0x42e682['as'],'attributes':_0x42e682[_0x6ddf('0x1a')],'include':_0x42e682['include']?_[_0x6ddf('0x1b')](_0x42e682[_0x6ddf('0x18')],function(_0x11b9ec){return{'model':db[_0x11b9ec[_0x6ddf('0x19')]],'as':_0x11b9ec['as'],'attributes':_0x11b9ec['attributes']};}):[]};}):[]};}):[]:[]})[_0x6ddf('0xb')](function(_0x86bfbd){logger[_0x6ddf('0xc')](_0x6ddf('0x14'),_0x414691);logger[_0x6ddf('0x1c')](_0x6ddf('0x14'),_0x414691,JSON[_0x6ddf('0xf')](_0x86bfbd));_0x106aae(_0x86bfbd);})[_0x6ddf('0x13')](function(_0xf54b68){logger[_0x6ddf('0x10')](_0x6ddf('0x14'),_0xf54b68[_0x6ddf('0x12')],_0x414691);_0x1cdd45(_0x3b8931['error'](0x1f4,_0xf54b68[_0x6ddf('0x12')]));});});};
\ No newline at end of file
index f64317f..70383d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../config/environment','./squareMessage.controller','get'];(function(_0x451130,_0x595ee2){var _0x68c08e=function(_0x23fe84){while(--_0x23fe84){_0x451130['push'](_0x451130['shift']());}};_0x68c08e(++_0x595ee2);}(_0xda2d,0x102));var _0xdda2=function(_0x403c97,_0x5d2f2e){_0x403c97=_0x403c97-0x0;var _0x3ed852=_0xda2d[_0x403c97];return _0x3ed852;};'use strict';var multer=require('multer');var util=require(_0xdda2('0x0'));var path=require(_0xdda2('0x1'));var timeout=require(_0xdda2('0x2'));var express=require(_0xdda2('0x3'));var router=express[_0xdda2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdda2('0x5'));var controller=require(_0xdda2('0x6'));router[_0xdda2('0x7')]('/',auth[_0xdda2('0x8')](),controller[_0xdda2('0x9')]);router[_0xdda2('0x7')](_0xdda2('0xa'),auth[_0xdda2('0x8')](),controller[_0xdda2('0xb')]);router[_0xdda2('0xc')]('/',auth['isAuthenticated'](),controller[_0xdda2('0xd')]);router[_0xdda2('0xe')]('/:id',auth[_0xdda2('0x8')](),controller[_0xdda2('0xf')]);router[_0xdda2('0x10')](_0xdda2('0xa'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x11')]);module[_0xdda2('0x12')]=router;
\ No newline at end of file
+var _0x0b0e=['./squareMessage.controller','get','isAuthenticated','index','show','post','create','/:id','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2f4c1c,_0x5a3dd4){var _0x25e0f2=function(_0x46ea31){while(--_0x46ea31){_0x2f4c1c['push'](_0x2f4c1c['shift']());}};_0x25e0f2(++_0x5a3dd4);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4a4922,_0x82cb8f){_0x4a4922=_0x4a4922-0x0;var _0x55a8c6=_0x0b0e[_0x4a4922];return _0x55a8c6;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0xd')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xe')]);router['put'](_0xe0b0('0xf'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x10')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x11')]);module[_0xe0b0('0x12')]=router;
\ No newline at end of file
index 9cda0d9..2e9a5e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30c0=['medium','out','TEXT','sequelize','exports','STRING'];(function(_0x822546,_0x219ce7){var _0x13d9e7=function(_0x2f147b){while(--_0x2f147b){_0x822546['push'](_0x822546['shift']());}};_0x13d9e7(++_0x219ce7);}(_0x30c0,0x141));var _0x030c=function(_0x1043ac,_0x2f78db){_0x1043ac=_0x1043ac-0x0;var _0x10f21d=_0x30c0[_0x1043ac];return _0x10f21d;};'use strict';var Sequelize=require(_0x030c('0x0'));module[_0x030c('0x1')]={'uniqueid':{'type':Sequelize[_0x030c('0x2')]},'body':{'type':Sequelize['TEXT'](_0x030c('0x3')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x030c('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0x030c('0x2')]},'providerResponse':{'type':Sequelize[_0x030c('0x5')]}};
\ No newline at end of file
+var _0x8dd8=['out','exports','TEXT','ENUM'];(function(_0x4817f9,_0x4070d1){var _0x2dcfa6=function(_0x408973){while(--_0x408973){_0x4817f9['push'](_0x4817f9['shift']());}};_0x2dcfa6(++_0x4070d1);}(_0x8dd8,0x121));var _0x88dd=function(_0x104f90,_0xcd8dc4){_0x104f90=_0x104f90-0x0;var _0x1e9b9f=_0x8dd8[_0x104f90];return _0x1e9b9f;};'use strict';var Sequelize=require('sequelize');module[_0x88dd('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x88dd('0x1')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x88dd('0x2')]('in','out'),'defaultValue':_0x88dd('0x3'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x88dd('0x1')]}};
\ No newline at end of file
index e05e905..15c404b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x513e=['request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','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','status','end','offset','limit','undefined','count','set','json','apply','reject','save','update','then','destroy','sendStatus','stack','name','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','SquareMessage','findAll','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x39b479,_0xefdbb7){var _0x32bb35=function(_0x28447e){while(--_0x28447e){_0x39b479['push'](_0x39b479['shift']());}};_0x32bb35(++_0xefdbb7);}(_0x513e,0x138));var _0xe513=function(_0x14a0a0,_0x45d0cf){_0x14a0a0=_0x14a0a0-0x0;var _0x56b651=_0x513e[_0x14a0a0];return _0x56b651;};'use strict';var emlformat=require(_0xe513('0x0'));var rimraf=require(_0xe513('0x1'));var zipdir=require(_0xe513('0x2'));var jsonpatch=require(_0xe513('0x3'));var rp=require(_0xe513('0x4'));var moment=require(_0xe513('0x5'));var BPromise=require(_0xe513('0x6'));var Mustache=require(_0xe513('0x7'));var util=require(_0xe513('0x8'));var path=require(_0xe513('0x9'));var sox=require(_0xe513('0xa'));var csv=require('to-csv');var ejs=require(_0xe513('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe513('0xc'));var squel=require(_0xe513('0xd'));var crypto=require(_0xe513('0xe'));var jsforce=require(_0xe513('0xf'));var deskjs=require(_0xe513('0x10'));var toCsv=require(_0xe513('0x11'));var querystring=require(_0xe513('0x12'));var Papa=require(_0xe513('0x13'));var Redis=require(_0xe513('0x14'));var authService=require(_0xe513('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xe513('0x16'));var hardwareService=require(_0xe513('0x17'));var logger=require(_0xe513('0x18'))('api');var utils=require(_0xe513('0x19'));var config=require(_0xe513('0x1a'));var licenseUtil=require(_0xe513('0x1b'));var db=require(_0xe513('0x1c'))['db'];function respondWithStatusCode(_0x106a29,_0x350406){_0x350406=_0x350406||0xcc;return function(_0x1ee256){if(_0x1ee256){return _0x106a29['sendStatus'](_0x350406);}return _0x106a29[_0xe513('0x1d')](_0x350406)[_0xe513('0x1e')]();};}function respondWithResult(_0x3e9c92,_0x3e5387){_0x3e5387=_0x3e5387||0xc8;return function(_0x2902a1){if(_0x2902a1){return _0x3e9c92['status'](_0x3e5387)['json'](_0x2902a1);}};}function respondWithFilteredResult(_0x241552,_0x48e02c){return function(_0x5b8aae){if(_0x5b8aae){var _0x2ddc08=typeof _0x48e02c[_0xe513('0x1f')]==='undefined'&&typeof _0x48e02c[_0xe513('0x20')]===_0xe513('0x21');var _0x405654=_0x5b8aae['count'];var _0x21c200=_0x2ddc08?0x0:_0x48e02c[_0xe513('0x1f')];var _0x51efc0=_0x2ddc08?_0x5b8aae[_0xe513('0x22')]:_0x48e02c[_0xe513('0x1f')]+_0x48e02c['limit'];var _0x4fe164;if(_0x51efc0>=_0x405654){_0x51efc0=_0x405654;_0x4fe164=0xc8;}else{_0x4fe164=0xce;}_0x241552[_0xe513('0x1d')](_0x4fe164);return _0x241552[_0xe513('0x23')]('Content-Range',_0x21c200+'-'+_0x51efc0+'/'+_0x405654)[_0xe513('0x24')](_0x5b8aae);}return null;};}function patchUpdates(_0x263f3e){return function(_0x48cd65){try{jsonpatch[_0xe513('0x25')](_0x48cd65,_0x263f3e,!![]);}catch(_0x5c853c){return BPromise[_0xe513('0x26')](_0x5c853c);}return _0x48cd65[_0xe513('0x27')]();};}function saveUpdates(_0x19a2a7,_0x41935a){return function(_0x4d8b47){if(_0x4d8b47){return _0x4d8b47[_0xe513('0x28')](_0x19a2a7)[_0xe513('0x29')](function(_0x37133e){return _0x37133e;});}return null;};}function removeEntity(_0x5db082,_0x192fcd){return function(_0x3afdbc){if(_0x3afdbc){return _0x3afdbc[_0xe513('0x2a')]()[_0xe513('0x29')](function(){_0x5db082[_0xe513('0x1d')](0xcc)[_0xe513('0x1e')]();});}};}function handleEntityNotFound(_0x4290cb,_0x4748d6){return function(_0xa7e74f){if(!_0xa7e74f){_0x4290cb[_0xe513('0x2b')](0x194);}return _0xa7e74f;};}function handleError(_0xd3e74a,_0x789334){_0x789334=_0x789334||0x1f4;return function(_0x3f082c){logger['error'](_0x3f082c[_0xe513('0x2c')]);if(_0x3f082c['name']){delete _0x3f082c[_0xe513('0x2d')];}_0xd3e74a[_0xe513('0x1d')](_0x789334)['send'](_0x3f082c);};}exports[_0xe513('0x2e')]=function(_0x372731,_0x412c25){var _0x33a358={},_0x13a7e4={},_0x3c9282={'count':0x0,'rows':[]};var _0x43f6b9=_['map'](db['SquareMessage'][_0xe513('0x2f')],function(_0x2f7551){return{'name':_0x2f7551[_0xe513('0x30')],'type':_0x2f7551[_0xe513('0x31')][_0xe513('0x32')]};});_0x13a7e4[_0xe513('0x33')]=_['map'](_0x43f6b9,_0xe513('0x2d'));_0x13a7e4[_0xe513('0x34')]=_[_0xe513('0x35')](_0x372731[_0xe513('0x34')]);_0x13a7e4[_0xe513('0x36')]=_[_0xe513('0x37')](_0x13a7e4[_0xe513('0x33')],_0x13a7e4[_0xe513('0x34')]);_0x33a358[_0xe513('0x38')]=_[_0xe513('0x37')](_0x13a7e4[_0xe513('0x33')],qs[_0xe513('0x39')](_0x372731[_0xe513('0x34')]['fields']));_0x33a358['attributes']=_0x33a358['attributes']['length']?_0x33a358['attributes']:_0x13a7e4[_0xe513('0x33')];if(!_0x372731[_0xe513('0x34')][_0xe513('0x3a')](_0xe513('0x3b'))){_0x33a358['limit']=qs[_0xe513('0x20')](_0x372731[_0xe513('0x34')][_0xe513('0x20')]);_0x33a358[_0xe513('0x1f')]=qs[_0xe513('0x1f')](_0x372731[_0xe513('0x34')][_0xe513('0x1f')]);}_0x33a358[_0xe513('0x3c')]=qs[_0xe513('0x3d')](_0x372731[_0xe513('0x34')][_0xe513('0x3d')]);_0x33a358[_0xe513('0x3e')]=qs['filters'](_['pick'](_0x372731['query'],_0x13a7e4['filters']),_0x43f6b9);if(_0x372731[_0xe513('0x34')][_0xe513('0x3f')]){_0x33a358['where']=_[_0xe513('0x40')](_0x33a358[_0xe513('0x3e')],{'$or':_[_0xe513('0x41')](_0x43f6b9,function(_0x33e847){if(_0x33e847[_0xe513('0x31')]!==_0xe513('0x42')){var _0x121278={};_0x121278[_0x33e847[_0xe513('0x2d')]]={'$like':'%'+_0x372731[_0xe513('0x34')][_0xe513('0x3f')]+'%'};return _0x121278;}})});}_0x33a358=_['merge']({},_0x33a358,_0x372731[_0xe513('0x43')]);var _0x2a2112={'where':_0x33a358[_0xe513('0x3e')]};return db['SquareMessage'][_0xe513('0x22')](_0x2a2112)[_0xe513('0x29')](function(_0x350912){_0x3c9282['count']=_0x350912;if(_0x372731[_0xe513('0x34')][_0xe513('0x44')]){_0x33a358[_0xe513('0x45')]=[{'all':!![]}];}return db[_0xe513('0x46')][_0xe513('0x47')](_0x33a358);})[_0xe513('0x29')](function(_0x7687c1){_0x3c9282['rows']=_0x7687c1;return _0x3c9282;})[_0xe513('0x29')](respondWithFilteredResult(_0x412c25,_0x33a358))[_0xe513('0x48')](handleError(_0x412c25,null));};exports[_0xe513('0x49')]=function(_0x589bf6,_0x25f886){var _0x2729b3={'raw':!![],'where':{'id':_0x589bf6[_0xe513('0x4a')]['id']}},_0x507403={};_0x507403[_0xe513('0x33')]=_[_0xe513('0x35')](db['SquareMessage'][_0xe513('0x2f')]);_0x507403[_0xe513('0x34')]=_[_0xe513('0x35')](_0x589bf6[_0xe513('0x34')]);_0x507403[_0xe513('0x36')]=_['intersection'](_0x507403[_0xe513('0x33')],_0x507403['query']);_0x2729b3[_0xe513('0x38')]=_[_0xe513('0x37')](_0x507403['model'],qs[_0xe513('0x39')](_0x589bf6[_0xe513('0x34')][_0xe513('0x39')]));_0x2729b3['attributes']=_0x2729b3[_0xe513('0x38')][_0xe513('0x4b')]?_0x2729b3['attributes']:_0x507403[_0xe513('0x33')];if(_0x589bf6[_0xe513('0x34')][_0xe513('0x44')]){_0x2729b3[_0xe513('0x45')]=[{'all':!![]}];}_0x2729b3=_[_0xe513('0x40')]({},_0x2729b3,_0x589bf6[_0xe513('0x43')]);return db[_0xe513('0x46')][_0xe513('0x4c')](_0x2729b3)[_0xe513('0x29')](handleEntityNotFound(_0x25f886,null))[_0xe513('0x29')](respondWithResult(_0x25f886,null))[_0xe513('0x48')](handleError(_0x25f886,null));};exports[_0xe513('0x4d')]=function(_0x2ecf07,_0x3e0766){return db[_0xe513('0x46')]['create'](_0x2ecf07[_0xe513('0x4e')],{})[_0xe513('0x29')](respondWithResult(_0x3e0766,0xc9))['catch'](handleError(_0x3e0766,null));};exports[_0xe513('0x28')]=function(_0xb7ee9e,_0x3057b8){if(_0xb7ee9e['body']['id']){delete _0xb7ee9e['body']['id'];}return db[_0xe513('0x46')]['find']({'where':{'id':_0xb7ee9e['params']['id']}})[_0xe513('0x29')](handleEntityNotFound(_0x3057b8,null))['then'](saveUpdates(_0xb7ee9e['body'],null))[_0xe513('0x29')](respondWithResult(_0x3057b8,null))[_0xe513('0x48')](handleError(_0x3057b8,null));};exports[_0xe513('0x2a')]=function(_0xa8eb5d,_0x5934b1){return db['SquareMessage'][_0xe513('0x4c')]({'where':{'id':_0xa8eb5d['params']['id']}})[_0xe513('0x29')](handleEntityNotFound(_0x5934b1,null))[_0xe513('0x29')](removeEntity(_0x5934b1,null))[_0xe513('0x48')](handleError(_0x5934b1,null));};
\ No newline at end of file
+var _0x685b=['SquareMessage','rawAttributes','key','map','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','count','limit','set','Content-Range','json','apply','save','then','end','sendStatus','error','stack','index'];(function(_0x52d4e7,_0x47f7f4){var _0x52fcbe=function(_0x14af60){while(--_0x14af60){_0x52d4e7['push'](_0x52d4e7['shift']());}};_0x52fcbe(++_0x47f7f4);}(_0x685b,0x199));var _0xb685=function(_0x503f4d,_0x476e97){_0x503f4d=_0x503f4d-0x0;var _0x4ce6d1=_0x685b[_0x503f4d];return _0x4ce6d1;};'use strict';var emlformat=require(_0xb685('0x0'));var rimraf=require(_0xb685('0x1'));var zipdir=require(_0xb685('0x2'));var jsonpatch=require(_0xb685('0x3'));var rp=require(_0xb685('0x4'));var moment=require(_0xb685('0x5'));var BPromise=require(_0xb685('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb685('0x7'));var sox=require(_0xb685('0x8'));var csv=require(_0xb685('0x9'));var ejs=require(_0xb685('0xa'));var fs=require('fs');var fs_extra=require(_0xb685('0xb'));var _=require(_0xb685('0xc'));var squel=require(_0xb685('0xd'));var crypto=require(_0xb685('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb685('0xf'));var toCsv=require(_0xb685('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb685('0x10'));var authService=require(_0xb685('0x11'));var qs=require(_0xb685('0x12'));var as=require(_0xb685('0x13'));var hardwareService=require(_0xb685('0x14'));var logger=require(_0xb685('0x15'))('api');var utils=require(_0xb685('0x16'));var config=require(_0xb685('0x17'));var licenseUtil=require(_0xb685('0x18'));var db=require(_0xb685('0x19'))['db'];function respondWithStatusCode(_0x25a06e,_0x5d4255){_0x5d4255=_0x5d4255||0xcc;return function(_0x35a41e){if(_0x35a41e){return _0x25a06e['sendStatus'](_0x5d4255);}return _0x25a06e[_0xb685('0x1a')](_0x5d4255)['end']();};}function respondWithResult(_0x37400a,_0xfac243){_0xfac243=_0xfac243||0xc8;return function(_0x2a7557){if(_0x2a7557){return _0x37400a[_0xb685('0x1a')](_0xfac243)['json'](_0x2a7557);}};}function respondWithFilteredResult(_0x217c06,_0x5dfa46){return function(_0x2aa19e){if(_0x2aa19e){var _0x1bd88b=typeof _0x5dfa46[_0xb685('0x1b')]==='undefined'&&typeof _0x5dfa46['limit']==='undefined';var _0x24028d=_0x2aa19e[_0xb685('0x1c')];var _0x23f701=_0x1bd88b?0x0:_0x5dfa46['offset'];var _0x111066=_0x1bd88b?_0x2aa19e[_0xb685('0x1c')]:_0x5dfa46[_0xb685('0x1b')]+_0x5dfa46[_0xb685('0x1d')];var _0x2587bc;if(_0x111066>=_0x24028d){_0x111066=_0x24028d;_0x2587bc=0xc8;}else{_0x2587bc=0xce;}_0x217c06[_0xb685('0x1a')](_0x2587bc);return _0x217c06[_0xb685('0x1e')](_0xb685('0x1f'),_0x23f701+'-'+_0x111066+'/'+_0x24028d)[_0xb685('0x20')](_0x2aa19e);}return null;};}function patchUpdates(_0x16032e){return function(_0x1e466f){try{jsonpatch[_0xb685('0x21')](_0x1e466f,_0x16032e,!![]);}catch(_0x394c84){return BPromise['reject'](_0x394c84);}return _0x1e466f[_0xb685('0x22')]();};}function saveUpdates(_0x13f3fc,_0x55e39e){return function(_0xcce887){if(_0xcce887){return _0xcce887['update'](_0x13f3fc)[_0xb685('0x23')](function(_0x24b78b){return _0x24b78b;});}return null;};}function removeEntity(_0x527847,_0x433bb3){return function(_0x5f1532){if(_0x5f1532){return _0x5f1532['destroy']()['then'](function(){_0x527847[_0xb685('0x1a')](0xcc)[_0xb685('0x24')]();});}};}function handleEntityNotFound(_0x42983b,_0x170798){return function(_0x39b1ac){if(!_0x39b1ac){_0x42983b[_0xb685('0x25')](0x194);}return _0x39b1ac;};}function handleError(_0x8f8da3,_0x2ea329){_0x2ea329=_0x2ea329||0x1f4;return function(_0x2ade94){logger[_0xb685('0x26')](_0x2ade94[_0xb685('0x27')]);if(_0x2ade94['name']){delete _0x2ade94['name'];}_0x8f8da3[_0xb685('0x1a')](_0x2ea329)['send'](_0x2ade94);};}exports[_0xb685('0x28')]=function(_0x42e6eb,_0x52b321){var _0x20dce7={},_0x13c91e={},_0x3af7c5={'count':0x0,'rows':[]};var _0x31cb04=_['map'](db[_0xb685('0x29')][_0xb685('0x2a')],function(_0x1747d5){return{'name':_0x1747d5['fieldName'],'type':_0x1747d5['type'][_0xb685('0x2b')]};});_0x13c91e['model']=_[_0xb685('0x2c')](_0x31cb04,_0xb685('0x2d'));_0x13c91e[_0xb685('0x2e')]=_[_0xb685('0x2f')](_0x42e6eb[_0xb685('0x2e')]);_0x13c91e[_0xb685('0x30')]=_[_0xb685('0x31')](_0x13c91e[_0xb685('0x32')],_0x13c91e['query']);_0x20dce7[_0xb685('0x33')]=_[_0xb685('0x31')](_0x13c91e[_0xb685('0x32')],qs[_0xb685('0x34')](_0x42e6eb[_0xb685('0x2e')][_0xb685('0x34')]));_0x20dce7[_0xb685('0x33')]=_0x20dce7['attributes'][_0xb685('0x35')]?_0x20dce7[_0xb685('0x33')]:_0x13c91e[_0xb685('0x32')];if(!_0x42e6eb['query'][_0xb685('0x36')](_0xb685('0x37'))){_0x20dce7['limit']=qs['limit'](_0x42e6eb[_0xb685('0x2e')][_0xb685('0x1d')]);_0x20dce7['offset']=qs['offset'](_0x42e6eb[_0xb685('0x2e')][_0xb685('0x1b')]);}_0x20dce7[_0xb685('0x38')]=qs[_0xb685('0x39')](_0x42e6eb[_0xb685('0x2e')][_0xb685('0x39')]);_0x20dce7[_0xb685('0x3a')]=qs[_0xb685('0x30')](_['pick'](_0x42e6eb[_0xb685('0x2e')],_0x13c91e[_0xb685('0x30')]),_0x31cb04);if(_0x42e6eb[_0xb685('0x2e')][_0xb685('0x3b')]){_0x20dce7[_0xb685('0x3a')]=_[_0xb685('0x3c')](_0x20dce7[_0xb685('0x3a')],{'$or':_[_0xb685('0x2c')](_0x31cb04,function(_0x2bd0fc){if(_0x2bd0fc[_0xb685('0x3d')]!==_0xb685('0x3e')){var _0x34fbfc={};_0x34fbfc[_0x2bd0fc['name']]={'$like':'%'+_0x42e6eb[_0xb685('0x2e')][_0xb685('0x3b')]+'%'};return _0x34fbfc;}})});}_0x20dce7=_[_0xb685('0x3c')]({},_0x20dce7,_0x42e6eb[_0xb685('0x3f')]);var _0x568555={'where':_0x20dce7[_0xb685('0x3a')]};return db['SquareMessage'][_0xb685('0x1c')](_0x568555)[_0xb685('0x23')](function(_0xd71ab5){_0x3af7c5[_0xb685('0x1c')]=_0xd71ab5;if(_0x42e6eb['query'][_0xb685('0x40')]){_0x20dce7[_0xb685('0x41')]=[{'all':!![]}];}return db['SquareMessage'][_0xb685('0x42')](_0x20dce7);})[_0xb685('0x23')](function(_0x562d12){_0x3af7c5[_0xb685('0x43')]=_0x562d12;return _0x3af7c5;})[_0xb685('0x23')](respondWithFilteredResult(_0x52b321,_0x20dce7))[_0xb685('0x44')](handleError(_0x52b321,null));};exports[_0xb685('0x45')]=function(_0x329cdb,_0x50c226){var _0x75abc7={'raw':!![],'where':{'id':_0x329cdb[_0xb685('0x46')]['id']}},_0x32b337={};_0x32b337[_0xb685('0x32')]=_['keys'](db[_0xb685('0x29')]['rawAttributes']);_0x32b337[_0xb685('0x2e')]=_[_0xb685('0x2f')](_0x329cdb[_0xb685('0x2e')]);_0x32b337[_0xb685('0x30')]=_[_0xb685('0x31')](_0x32b337[_0xb685('0x32')],_0x32b337[_0xb685('0x2e')]);_0x75abc7[_0xb685('0x33')]=_[_0xb685('0x31')](_0x32b337[_0xb685('0x32')],qs[_0xb685('0x34')](_0x329cdb[_0xb685('0x2e')][_0xb685('0x34')]));_0x75abc7[_0xb685('0x33')]=_0x75abc7[_0xb685('0x33')][_0xb685('0x35')]?_0x75abc7[_0xb685('0x33')]:_0x32b337['model'];if(_0x329cdb['query'][_0xb685('0x40')]){_0x75abc7[_0xb685('0x41')]=[{'all':!![]}];}_0x75abc7=_[_0xb685('0x3c')]({},_0x75abc7,_0x329cdb[_0xb685('0x3f')]);return db[_0xb685('0x29')]['find'](_0x75abc7)[_0xb685('0x23')](handleEntityNotFound(_0x50c226,null))[_0xb685('0x23')](respondWithResult(_0x50c226,null))[_0xb685('0x44')](handleError(_0x50c226,null));};exports[_0xb685('0x47')]=function(_0x544b0f,_0x120c92){return db[_0xb685('0x29')]['create'](_0x544b0f[_0xb685('0x48')],{})[_0xb685('0x23')](respondWithResult(_0x120c92,0xc9))['catch'](handleError(_0x120c92,null));};exports[_0xb685('0x49')]=function(_0x317d8b,_0x16c306){if(_0x317d8b[_0xb685('0x48')]['id']){delete _0x317d8b[_0xb685('0x48')]['id'];}return db['SquareMessage']['find']({'where':{'id':_0x317d8b[_0xb685('0x46')]['id']}})['then'](handleEntityNotFound(_0x16c306,null))[_0xb685('0x23')](saveUpdates(_0x317d8b[_0xb685('0x48')],null))[_0xb685('0x23')](respondWithResult(_0x16c306,null))[_0xb685('0x44')](handleError(_0x16c306,null));};exports[_0xb685('0x4a')]=function(_0x1e433f,_0x57a798){return db[_0xb685('0x29')]['find']({'where':{'id':_0x1e433f['params']['id']}})[_0xb685('0x23')](handleEntityNotFound(_0x57a798,null))['then'](removeEntity(_0x57a798,null))['catch'](handleError(_0x57a798,null));};
\ No newline at end of file
index dcfd27b..628a305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b12=['../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x30fd5,_0x2ac8fc){var _0x2e8709=function(_0x8316e){while(--_0x8316e){_0x30fd5['push'](_0x30fd5['shift']());}};_0x2e8709(++_0x2ac8fc);}(_0x2b12,0x1aa));var _0x22b1=function(_0x4f539a,_0x141b03){_0x4f539a=_0x4f539a-0x0;var _0x17e349=_0x2b12[_0x4f539a];return _0x17e349;};'use strict';var _=require(_0x22b1('0x0'));var util=require(_0x22b1('0x1'));var logger=require(_0x22b1('0x2'))(_0x22b1('0x3'));var moment=require('moment');var BPromise=require(_0x22b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x22b1('0x5'));var rimraf=require('rimraf');var config=require(_0x22b1('0x6'));var attributes=require(_0x22b1('0x7'));module[_0x22b1('0x8')]=function(_0x274287,_0x1706ba){return _0x274287[_0x22b1('0x9')](_0x22b1('0xa'),attributes,{'tableName':_0x22b1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x67b8=['bluebird','path','../../config/environment','exports','SquareMessage','square_messages','util','../../config/logger','api','moment'];(function(_0x2e6a70,_0x29209c){var _0x2043ba=function(_0x1057a3){while(--_0x1057a3){_0x2e6a70['push'](_0x2e6a70['shift']());}};_0x2043ba(++_0x29209c);}(_0x67b8,0x15a));var _0x867b=function(_0x34461e,_0x44b85b){_0x34461e=_0x34461e-0x0;var _0xcfc45c=_0x67b8[_0x34461e];return _0xcfc45c;};'use strict';var _=require('lodash');var util=require(_0x867b('0x0'));var logger=require(_0x867b('0x1'))(_0x867b('0x2'));var moment=require(_0x867b('0x3'));var BPromise=require(_0x867b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x867b('0x5'));var rimraf=require('rimraf');var config=require(_0x867b('0x6'));var attributes=require('./squareMessage.attributes');module[_0x867b('0x7')]=function(_0x195ee5,_0x1aa976){return _0x195ee5['define'](_0x867b('0x8'),attributes,{'tableName':_0x867b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ced353..fd75cc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d12=['stringify','error','code','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','debug','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s'];(function(_0x355adc,_0xac51ab){var _0x4df04f=function(_0x4a787d){while(--_0x4a787d){_0x355adc['push'](_0x355adc['shift']());}};_0x4df04f(++_0xac51ab);}(_0x9d12,0x1bd));var _0x29d1=function(_0x43d394,_0x33a215){_0x43d394=_0x43d394-0x0;var _0x57f4df=_0x9d12[_0x43d394];return _0x57f4df;};'use strict';var _=require(_0x29d1('0x0'));var util=require(_0x29d1('0x1'));var moment=require(_0x29d1('0x2'));var BPromise=require('bluebird');var rs=require(_0x29d1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x29d1('0x4'));var logger=require(_0x29d1('0x5'))(_0x29d1('0x6'));var config=require('../../config/environment');var jayson=require(_0x29d1('0x7'));var client=jayson[_0x29d1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fa5a4,_0x12b3d7,_0x2f733f){return new BPromise(function(_0x34971b,_0x49acf){return client['request'](_0x4fa5a4,_0x2f733f)[_0x29d1('0x9')](function(_0x449beb){logger[_0x29d1('0xa')](_0x29d1('0xb'),_0x12b3d7,_0x29d1('0xc'));logger['debug'](_0x29d1('0xd'),_0x12b3d7,_0x29d1('0xc'),JSON[_0x29d1('0xe')](_0x449beb));if(_0x449beb['error']){if(_0x449beb[_0x29d1('0xf')][_0x29d1('0x10')]===0x1f4){logger[_0x29d1('0xf')](_0x29d1('0xb'),_0x12b3d7,_0x449beb[_0x29d1('0xf')][_0x29d1('0x11')]);return _0x49acf(_0x449beb['error'][_0x29d1('0x11')]);}logger[_0x29d1('0xf')](_0x29d1('0xb'),_0x12b3d7,_0x449beb[_0x29d1('0xf')][_0x29d1('0x11')]);return _0x34971b(_0x449beb[_0x29d1('0xf')][_0x29d1('0x11')]);}else{logger['info'](_0x29d1('0xb'),_0x12b3d7,_0x29d1('0xc'));_0x34971b(_0x449beb[_0x29d1('0x12')][_0x29d1('0x11')]);}})[_0x29d1('0x13')](function(_0x133fdd){logger['error'](_0x29d1('0xb'),_0x12b3d7,_0x133fdd);_0x49acf(_0x133fdd);});});}exports[_0x29d1('0x14')]=function(_0x372a56){var _0x267d01=this;return new Promise(function(_0x11c3a2,_0x48a525){return db[_0x29d1('0x15')][_0x29d1('0x16')](_0x372a56[_0x29d1('0x17')],{'raw':_0x372a56['options']?_0x372a56[_0x29d1('0x18')][_0x29d1('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x52f083){logger[_0x29d1('0xa')](_0x29d1('0x14'),_0x372a56);logger[_0x29d1('0x1a')](_0x29d1('0x14'),_0x372a56,JSON[_0x29d1('0xe')](_0x52f083));_0x11c3a2(_0x52f083);})[_0x29d1('0x13')](function(_0x2bd91a){logger['error']('CreateSquareMessage',_0x2bd91a['message'],_0x372a56);_0x48a525(_0x267d01['error'](0x1f4,_0x2bd91a[_0x29d1('0x11')]));});});};
\ No newline at end of file
+var _0x0951=['raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreateSquareMessage','SquareMessage','create','options'];(function(_0x40e6c9,_0x2c8520){var _0x26919e=function(_0xf88e47){while(--_0xf88e47){_0x40e6c9['push'](_0x40e6c9['shift']());}};_0x26919e(++_0x2c8520);}(_0x0951,0x1a1));var _0x1095=function(_0x44dda2,_0x3d8e5c){_0x44dda2=_0x44dda2-0x0;var _0x294556=_0x0951[_0x44dda2];return _0x294556;};'use strict';var _=require(_0x1095('0x0'));var util=require(_0x1095('0x1'));var moment=require(_0x1095('0x2'));var BPromise=require(_0x1095('0x3'));var rs=require(_0x1095('0x4'));var fs=require('fs');var Redis=require(_0x1095('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1095('0x6'));var logger=require(_0x1095('0x7'))(_0x1095('0x8'));var config=require('../../config/environment');var jayson=require(_0x1095('0x9'));var client=jayson['client'][_0x1095('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x343a44,_0xa9c37,_0x218422){return new BPromise(function(_0x2fd040,_0x3290ca){return client[_0x1095('0xb')](_0x343a44,_0x218422)[_0x1095('0xc')](function(_0x2fcec7){logger[_0x1095('0xd')](_0x1095('0xe'),_0xa9c37,_0x1095('0xf'));logger['debug'](_0x1095('0x10'),_0xa9c37,_0x1095('0xf'),JSON[_0x1095('0x11')](_0x2fcec7));if(_0x2fcec7['error']){if(_0x2fcec7[_0x1095('0x12')]['code']===0x1f4){logger[_0x1095('0x12')](_0x1095('0xe'),_0xa9c37,_0x2fcec7[_0x1095('0x12')][_0x1095('0x13')]);return _0x3290ca(_0x2fcec7[_0x1095('0x12')]['message']);}logger['error'](_0x1095('0xe'),_0xa9c37,_0x2fcec7[_0x1095('0x12')]['message']);return _0x2fd040(_0x2fcec7[_0x1095('0x12')][_0x1095('0x13')]);}else{logger[_0x1095('0xd')](_0x1095('0xe'),_0xa9c37,_0x1095('0xf'));_0x2fd040(_0x2fcec7['result']['message']);}})[_0x1095('0x14')](function(_0x4b4edd){logger[_0x1095('0x12')]('SquareMessage,\x20%s,\x20%s',_0xa9c37,_0x4b4edd);_0x3290ca(_0x4b4edd);});});}exports[_0x1095('0x15')]=function(_0x8845e6){var _0x1c485e=this;return new Promise(function(_0x555969,_0x641b5){return db[_0x1095('0x16')][_0x1095('0x17')](_0x8845e6['body'],{'raw':_0x8845e6[_0x1095('0x18')]?_0x8845e6[_0x1095('0x18')][_0x1095('0x19')]===undefined?!![]:![]:!![]})[_0x1095('0xc')](function(_0x2b4d20){logger[_0x1095('0xd')](_0x1095('0x15'),_0x8845e6);logger['debug'](_0x1095('0x15'),_0x8845e6,JSON[_0x1095('0x11')](_0x2b4d20));_0x555969(_0x2b4d20);})[_0x1095('0x14')](function(_0x35a10c){logger['error']('CreateSquareMessage',_0x35a10c[_0x1095('0x13')],_0x8845e6);_0x641b5(_0x1c485e[_0x1095('0x12')](0x1f4,_0x35a10c[_0x1095('0x13')]));});});};
\ No newline at end of file
index e9ecf5e..04d0de6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90f6=['index','/:id','show','/:id/test','15s','test','post','create','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x90f6,0x9e));var _0x690f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x90f6[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x690f('0x0'));var util=require(_0x690f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x690f('0x2')]();var fs_extra=require(_0x690f('0x3'));var auth=require(_0x690f('0x4'));var interaction=require(_0x690f('0x5'));var config=require(_0x690f('0x6'));var controller=require(_0x690f('0x7'));router[_0x690f('0x8')]('/',auth[_0x690f('0x9')](),controller[_0x690f('0xa')]);router[_0x690f('0x8')](_0x690f('0xb'),auth[_0x690f('0x9')](),controller[_0x690f('0xc')]);router['get'](_0x690f('0xd'),auth[_0x690f('0x9')](),timeout(_0x690f('0xe')),controller[_0x690f('0xf')]);router[_0x690f('0x10')]('/',auth['isAuthenticated'](),controller[_0x690f('0x11')]);router['put'](_0x690f('0xb'),auth[_0x690f('0x9')](),controller['update']);router[_0x690f('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x690f('0x13')]);module[_0x690f('0x14')]=router;
\ No newline at end of file
+var _0x10f5=['show','/:id/test','15s','test','create','put','update','delete','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','get','isAuthenticated','index','/:id'];(function(_0x50451e,_0x1c12cd){var _0x3a1fde=function(_0x2b36ce){while(--_0x2b36ce){_0x50451e['push'](_0x50451e['shift']());}};_0x3a1fde(++_0x1c12cd);}(_0x10f5,0x15e));var _0x510f=function(_0x36c6a1,_0x41edfc){_0x36c6a1=_0x36c6a1-0x0;var _0x292e0f=_0x10f5[_0x36c6a1];return _0x292e0f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x510f('0x0'));var timeout=require(_0x510f('0x1'));var express=require('express');var router=express[_0x510f('0x2')]();var fs_extra=require(_0x510f('0x3'));var auth=require(_0x510f('0x4'));var interaction=require(_0x510f('0x5'));var config=require('../../config/environment');var controller=require(_0x510f('0x6'));router[_0x510f('0x7')]('/',auth[_0x510f('0x8')](),controller[_0x510f('0x9')]);router[_0x510f('0x7')](_0x510f('0xa'),auth[_0x510f('0x8')](),controller[_0x510f('0xb')]);router[_0x510f('0x7')](_0x510f('0xc'),auth[_0x510f('0x8')](),timeout(_0x510f('0xd')),controller[_0x510f('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x510f('0xf')]);router[_0x510f('0x10')](_0x510f('0xa'),auth[_0x510f('0x8')](),controller[_0x510f('0x11')]);router[_0x510f('0x12')]('/:id',auth[_0x510f('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6c42ab7..6876411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb032=['exports','STRING'];(function(_0x28bbf2,_0x1528e7){var _0x741f08=function(_0x7f7d2d){while(--_0x7f7d2d){_0x28bbf2['push'](_0x28bbf2['shift']());}};_0x741f08(++_0x1528e7);}(_0xb032,0x84));var _0x2b03=function(_0x8a7bcb,_0x2cf7d1){_0x8a7bcb=_0x8a7bcb-0x0;var _0x23ccc0=_0xb032[_0x8a7bcb];return _0x23ccc0;};'use strict';var Sequelize=require('sequelize');module[_0x2b03('0x0')]={'name':{'type':Sequelize[_0x2b03('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2b03('0x1')]}};
\ No newline at end of file
+var _0xbcc6=['exports','name','STRING','sequelize'];(function(_0x38ef42,_0x2ea01b){var _0x28bb4=function(_0x513bbd){while(--_0x513bbd){_0x38ef42['push'](_0x38ef42['shift']());}};_0x28bb4(++_0x2ea01b);}(_0xbcc6,0x107));var _0x6bcc=function(_0x58ff15,_0xb0640e){_0x58ff15=_0x58ff15-0x0;var _0x49e944=_0xbcc6[_0x58ff15];return _0x49e944;};'use strict';var Sequelize=require(_0x6bcc('0x0'));module[_0x6bcc('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x6bcc('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x6bcc('0x3')]},'description':{'type':Sequelize[_0x6bcc('0x3')]}};
\ No newline at end of file
index 8d525b1..b29ee28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7f0=['send','index','map','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','SquareOdbc','include','rows','catch','show','rawAttributes','find','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','create','params','test','dsn','odbc','openSync','closeSync','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','UserProfileResource','error','stack','name'];(function(_0x428d5b,_0xe0b248){var _0x4cad30=function(_0x1344c7){while(--_0x1344c7){_0x428d5b['push'](_0x428d5b['shift']());}};_0x4cad30(++_0xe0b248);}(_0xa7f0,0x80));var _0x0a7f=function(_0x53d941,_0x25c3ea){_0x53d941=_0x53d941-0x0;var _0xa50d46=_0xa7f0[_0x53d941];return _0xa50d46;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0a7f('0x0'));var zipdir=require(_0x0a7f('0x1'));var jsonpatch=require(_0x0a7f('0x2'));var rp=require(_0x0a7f('0x3'));var moment=require('moment');var BPromise=require(_0x0a7f('0x4'));var Mustache=require(_0x0a7f('0x5'));var util=require(_0x0a7f('0x6'));var path=require(_0x0a7f('0x7'));var sox=require(_0x0a7f('0x8'));var csv=require(_0x0a7f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a7f('0xa'));var _=require(_0x0a7f('0xb'));var squel=require(_0x0a7f('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a7f('0xd'));var toCsv=require(_0x0a7f('0x9'));var querystring=require('querystring');var Papa=require(_0x0a7f('0xe'));var Redis=require(_0x0a7f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0a7f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0a7f('0x11'))(_0x0a7f('0x12'));var utils=require(_0x0a7f('0x13'));var config=require(_0x0a7f('0x14'));var licenseUtil=require(_0x0a7f('0x15'));var db=require(_0x0a7f('0x16'))['db'];function respondWithStatusCode(_0x2f80f2,_0x1a36b3){_0x1a36b3=_0x1a36b3||0xcc;return function(_0x3489f8){if(_0x3489f8){return _0x2f80f2[_0x0a7f('0x17')](_0x1a36b3);}return _0x2f80f2[_0x0a7f('0x18')](_0x1a36b3)[_0x0a7f('0x19')]();};}function respondWithResult(_0x5d6a87,_0x54a3bf){_0x54a3bf=_0x54a3bf||0xc8;return function(_0x478c3a){if(_0x478c3a){return _0x5d6a87[_0x0a7f('0x18')](_0x54a3bf)[_0x0a7f('0x1a')](_0x478c3a);}};}function respondWithFilteredResult(_0x1e8ab3,_0x14df4b){return function(_0xfe6c0a){if(_0xfe6c0a){var _0x15a1f9=typeof _0x14df4b[_0x0a7f('0x1b')]===_0x0a7f('0x1c')&&typeof _0x14df4b[_0x0a7f('0x1d')]==='undefined';var _0x581ba6=_0xfe6c0a['count'];var _0x49d9f5=_0x15a1f9?0x0:_0x14df4b['offset'];var _0x3a9d5c=_0x15a1f9?_0xfe6c0a[_0x0a7f('0x1e')]:_0x14df4b['offset']+_0x14df4b[_0x0a7f('0x1d')];var _0x1e5e25;if(_0x3a9d5c>=_0x581ba6){_0x3a9d5c=_0x581ba6;_0x1e5e25=0xc8;}else{_0x1e5e25=0xce;}_0x1e8ab3['status'](_0x1e5e25);return _0x1e8ab3[_0x0a7f('0x1f')]('Content-Range',_0x49d9f5+'-'+_0x3a9d5c+'/'+_0x581ba6)['json'](_0xfe6c0a);}return null;};}function patchUpdates(_0x16e188){return function(_0x48b803){try{jsonpatch[_0x0a7f('0x20')](_0x48b803,_0x16e188,!![]);}catch(_0x55d0f3){return BPromise[_0x0a7f('0x21')](_0x55d0f3);}return _0x48b803[_0x0a7f('0x22')]();};}function saveUpdates(_0x3fc30,_0xa833fd){return function(_0x8b5c55){if(_0x8b5c55){return _0x8b5c55[_0x0a7f('0x23')](_0x3fc30)['then'](function(_0x1e99ba){return _0x1e99ba;});}return null;};}function removeEntity(_0x3713d0,_0xc1be2f){return function(_0x19fbd2){if(_0x19fbd2){return _0x19fbd2[_0x0a7f('0x24')]()[_0x0a7f('0x25')](function(){var _0x4dfd8f=_0x19fbd2['get']({'plain':!![]});var _0x2a8717='ODBC';return db[_0x0a7f('0x26')][_0x0a7f('0x24')]({'where':{'type':_0x2a8717,'resourceId':_0x4dfd8f['id']}})[_0x0a7f('0x25')](function(){return _0x19fbd2;});})[_0x0a7f('0x25')](function(){_0x3713d0[_0x0a7f('0x18')](0xcc)[_0x0a7f('0x19')]();});}};}function handleEntityNotFound(_0x1f4a98,_0x23a32b){return function(_0x1cbcaf){if(!_0x1cbcaf){_0x1f4a98[_0x0a7f('0x17')](0x194);}return _0x1cbcaf;};}function handleError(_0x36da53,_0x413b6f){_0x413b6f=_0x413b6f||0x1f4;return function(_0x2aef9b){logger[_0x0a7f('0x27')](_0x2aef9b[_0x0a7f('0x28')]);if(_0x2aef9b[_0x0a7f('0x29')]){delete _0x2aef9b[_0x0a7f('0x29')];}_0x36da53[_0x0a7f('0x18')](_0x413b6f)[_0x0a7f('0x2a')](_0x2aef9b);};}exports[_0x0a7f('0x2b')]=function(_0xe73641,_0x2f8498){var _0xe1a168={},_0x252da0={},_0x443d38={'count':0x0,'rows':[]};var _0x485643=_[_0x0a7f('0x2c')](db['SquareOdbc']['rawAttributes'],function(_0x4fdec7){return{'name':_0x4fdec7['fieldName'],'type':_0x4fdec7['type'][_0x0a7f('0x2d')]};});_0x252da0[_0x0a7f('0x2e')]=_[_0x0a7f('0x2c')](_0x485643,_0x0a7f('0x29'));_0x252da0[_0x0a7f('0x2f')]=_[_0x0a7f('0x30')](_0xe73641[_0x0a7f('0x2f')]);_0x252da0[_0x0a7f('0x31')]=_['intersection'](_0x252da0[_0x0a7f('0x2e')],_0x252da0['query']);_0xe1a168[_0x0a7f('0x32')]=_[_0x0a7f('0x33')](_0x252da0['model'],qs[_0x0a7f('0x34')](_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x34')]));_0xe1a168['attributes']=_0xe1a168['attributes'][_0x0a7f('0x35')]?_0xe1a168['attributes']:_0x252da0[_0x0a7f('0x2e')];if(!_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x36')](_0x0a7f('0x37'))){_0xe1a168[_0x0a7f('0x1d')]=qs[_0x0a7f('0x1d')](_0xe73641['query'][_0x0a7f('0x1d')]);_0xe1a168[_0x0a7f('0x1b')]=qs[_0x0a7f('0x1b')](_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x1b')]);}_0xe1a168[_0x0a7f('0x38')]=qs['sort'](_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x39')]);_0xe1a168[_0x0a7f('0x3a')]=qs['filters'](_[_0x0a7f('0x3b')](_0xe73641[_0x0a7f('0x2f')],_0x252da0[_0x0a7f('0x31')]),_0x485643);if(_0xe73641['query'][_0x0a7f('0x3c')]){_0xe1a168[_0x0a7f('0x3a')]=_[_0x0a7f('0x3d')](_0xe1a168['where'],{'$or':_[_0x0a7f('0x2c')](_0x485643,function(_0x2c8928){if(_0x2c8928[_0x0a7f('0x3e')]!=='VIRTUAL'){var _0x3093f9={};_0x3093f9[_0x2c8928[_0x0a7f('0x29')]]={'$like':'%'+_0xe73641[_0x0a7f('0x2f')]['filter']+'%'};return _0x3093f9;}})});}_0xe1a168=_['merge']({},_0xe1a168,_0xe73641[_0x0a7f('0x3f')]);var _0x340540={'where':_0xe1a168[_0x0a7f('0x3a')]};return db[_0x0a7f('0x40')][_0x0a7f('0x1e')](_0x340540)[_0x0a7f('0x25')](function(_0x29fe2e){_0x443d38['count']=_0x29fe2e;if(_0xe73641[_0x0a7f('0x2f')]['includeAll']){_0xe1a168[_0x0a7f('0x41')]=[{'all':!![]}];}return db[_0x0a7f('0x40')]['findAll'](_0xe1a168);})['then'](function(_0xc33853){_0x443d38[_0x0a7f('0x42')]=_0xc33853;return _0x443d38;})[_0x0a7f('0x25')](respondWithFilteredResult(_0x2f8498,_0xe1a168))[_0x0a7f('0x43')](handleError(_0x2f8498,null));};exports[_0x0a7f('0x44')]=function(_0x46fc36,_0x4c7bd9){var _0x11d0d={'raw':!![],'where':{'id':_0x46fc36['params']['id']}},_0xcefa3f={};_0xcefa3f[_0x0a7f('0x2e')]=_[_0x0a7f('0x30')](db[_0x0a7f('0x40')][_0x0a7f('0x45')]);_0xcefa3f['query']=_[_0x0a7f('0x30')](_0x46fc36['query']);_0xcefa3f[_0x0a7f('0x31')]=_[_0x0a7f('0x33')](_0xcefa3f[_0x0a7f('0x2e')],_0xcefa3f[_0x0a7f('0x2f')]);_0x11d0d[_0x0a7f('0x32')]=_[_0x0a7f('0x33')](_0xcefa3f['model'],qs[_0x0a7f('0x34')](_0x46fc36[_0x0a7f('0x2f')][_0x0a7f('0x34')]));_0x11d0d['attributes']=_0x11d0d['attributes']['length']?_0x11d0d[_0x0a7f('0x32')]:_0xcefa3f[_0x0a7f('0x2e')];if(_0x46fc36[_0x0a7f('0x2f')]['includeAll']){_0x11d0d['include']=[{'all':!![]}];}_0x11d0d=_[_0x0a7f('0x3d')]({},_0x11d0d,_0x46fc36[_0x0a7f('0x3f')]);return db[_0x0a7f('0x40')][_0x0a7f('0x46')](_0x11d0d)[_0x0a7f('0x25')](handleEntityNotFound(_0x4c7bd9,null))[_0x0a7f('0x25')](respondWithResult(_0x4c7bd9,null))['catch'](handleError(_0x4c7bd9,null));};exports['create']=function(_0x476b2d,_0xb041cb){return db['SquareOdbc']['create'](_0x476b2d[_0x0a7f('0x47')],{})['then'](function(_0xe37b58){var _0x3ea6b2=_0x476b2d['user'][_0x0a7f('0x48')]({'plain':!![]});if(!_0x3ea6b2)throw new Error(_0x0a7f('0x49'));if(_0x3ea6b2['role']===_0x0a7f('0x4a')){var _0x3deba1=_0xe37b58[_0x0a7f('0x48')]({'plain':!![]});var _0xe22ff3='ODBC';return db[_0x0a7f('0x4b')]['find']({'where':{'name':_0xe22ff3,'userProfileId':_0x3ea6b2[_0x0a7f('0x4c')]},'raw':!![]})['then'](function(_0x21813a){if(_0x21813a&&_0x21813a[_0x0a7f('0x4d')]===0x0){return db[_0x0a7f('0x26')][_0x0a7f('0x4e')]({'name':_0x3deba1['name'],'resourceId':_0x3deba1['id'],'type':_0x21813a[_0x0a7f('0x29')],'sectionId':_0x21813a['id']},{})[_0x0a7f('0x25')](function(){return _0xe37b58;});}else{return _0xe37b58;}})[_0x0a7f('0x43')](function(_0x99e167){logger[_0x0a7f('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x99e167);throw _0x99e167;});}return _0xe37b58;})['then'](respondWithResult(_0xb041cb,0xc9))[_0x0a7f('0x43')](handleError(_0xb041cb,null));};exports[_0x0a7f('0x23')]=function(_0x2d6926,_0x1001aa){if(_0x2d6926[_0x0a7f('0x47')]['id']){delete _0x2d6926['body']['id'];}return db[_0x0a7f('0x40')][_0x0a7f('0x46')]({'where':{'id':_0x2d6926[_0x0a7f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1001aa,null))[_0x0a7f('0x25')](saveUpdates(_0x2d6926[_0x0a7f('0x47')],null))[_0x0a7f('0x25')](respondWithResult(_0x1001aa,null))[_0x0a7f('0x43')](handleError(_0x1001aa,null));};exports[_0x0a7f('0x24')]=function(_0x2d2581,_0x578ebd){return db[_0x0a7f('0x40')][_0x0a7f('0x46')]({'where':{'id':_0x2d2581[_0x0a7f('0x4f')]['id']}})[_0x0a7f('0x25')](handleEntityNotFound(_0x578ebd,null))[_0x0a7f('0x25')](removeEntity(_0x578ebd,null))[_0x0a7f('0x43')](handleError(_0x578ebd,null));};exports[_0x0a7f('0x50')]=function(_0x177a0c,_0x456810,_0x1cd1af){var _0x301178;return db[_0x0a7f('0x40')][_0x0a7f('0x46')]({'where':{'id':_0x177a0c[_0x0a7f('0x4f')]['id']},'attributes':['id',_0x0a7f('0x51')]})['then'](handleEntityNotFound(_0x456810,null))[_0x0a7f('0x25')](function(_0x410628){if(_0x410628){var _0x9478d3=require(_0x0a7f('0x52'))();_0x9478d3[_0x0a7f('0x53')](_0x410628[_0x0a7f('0x51')]);_0x9478d3[_0x0a7f('0x54')]();return _0x410628;}})['then'](respondWithResult(_0x456810,null))['catch'](handleError(_0x456810,null));};
\ No newline at end of file
+var _0xd72d=['reject','update','destroy','then','get','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','where','filter','type','VIRTUAL','options','SquareOdbc','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','ODBC','UserProfileSection','userProfileId','autoAssociation','test','dsn','odbc','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','end','json','undefined','limit','offset','count','status','set','Content-Range','apply'];(function(_0x1d5a4f,_0x30f2cf){var _0x23b890=function(_0x541330){while(--_0x541330){_0x1d5a4f['push'](_0x1d5a4f['shift']());}};_0x23b890(++_0x30f2cf);}(_0xd72d,0x1cc));var _0xdd72=function(_0x6d72a3,_0x516107){_0x6d72a3=_0x6d72a3-0x0;var _0x4d7c33=_0xd72d[_0x6d72a3];return _0x4d7c33;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd72('0x0'));var zipdir=require(_0xdd72('0x1'));var jsonpatch=require(_0xdd72('0x2'));var rp=require(_0xdd72('0x3'));var moment=require('moment');var BPromise=require(_0xdd72('0x4'));var Mustache=require(_0xdd72('0x5'));var util=require('util');var path=require(_0xdd72('0x6'));var sox=require(_0xdd72('0x7'));var csv=require(_0xdd72('0x8'));var ejs=require(_0xdd72('0x9'));var fs=require('fs');var fs_extra=require(_0xdd72('0xa'));var _=require(_0xdd72('0xb'));var squel=require(_0xdd72('0xc'));var crypto=require('crypto');var jsforce=require(_0xdd72('0xd'));var deskjs=require(_0xdd72('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdd72('0xf'));var Redis=require('ioredis');var authService=require(_0xdd72('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xdd72('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xdd72('0x12'));var utils=require('../../config/utils');var config=require(_0xdd72('0x13'));var licenseUtil=require(_0xdd72('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39f250,_0x598b0c){_0x598b0c=_0x598b0c||0xcc;return function(_0x1f73a4){if(_0x1f73a4){return _0x39f250[_0xdd72('0x15')](_0x598b0c);}return _0x39f250['status'](_0x598b0c)[_0xdd72('0x16')]();};}function respondWithResult(_0x2d2589,_0x575493){_0x575493=_0x575493||0xc8;return function(_0x4420fe){if(_0x4420fe){return _0x2d2589['status'](_0x575493)[_0xdd72('0x17')](_0x4420fe);}};}function respondWithFilteredResult(_0xca6622,_0x55e44d){return function(_0x46e736){if(_0x46e736){var _0x1f59dd=typeof _0x55e44d['offset']===_0xdd72('0x18')&&typeof _0x55e44d[_0xdd72('0x19')]===_0xdd72('0x18');var _0x1622fb=_0x46e736['count'];var _0x51619d=_0x1f59dd?0x0:_0x55e44d[_0xdd72('0x1a')];var _0x4c6fac=_0x1f59dd?_0x46e736[_0xdd72('0x1b')]:_0x55e44d[_0xdd72('0x1a')]+_0x55e44d[_0xdd72('0x19')];var _0x142a45;if(_0x4c6fac>=_0x1622fb){_0x4c6fac=_0x1622fb;_0x142a45=0xc8;}else{_0x142a45=0xce;}_0xca6622[_0xdd72('0x1c')](_0x142a45);return _0xca6622[_0xdd72('0x1d')](_0xdd72('0x1e'),_0x51619d+'-'+_0x4c6fac+'/'+_0x1622fb)['json'](_0x46e736);}return null;};}function patchUpdates(_0x44655e){return function(_0x4f56ff){try{jsonpatch[_0xdd72('0x1f')](_0x4f56ff,_0x44655e,!![]);}catch(_0x4288fa){return BPromise[_0xdd72('0x20')](_0x4288fa);}return _0x4f56ff['save']();};}function saveUpdates(_0x2b4fb3,_0x101fae){return function(_0x25b5d5){if(_0x25b5d5){return _0x25b5d5[_0xdd72('0x21')](_0x2b4fb3)['then'](function(_0xe4bf1){return _0xe4bf1;});}return null;};}function removeEntity(_0x497ec2,_0x1ed42c){return function(_0x20d18f){if(_0x20d18f){return _0x20d18f[_0xdd72('0x22')]()[_0xdd72('0x23')](function(){var _0x30df94=_0x20d18f[_0xdd72('0x24')]({'plain':!![]});var _0xec577='ODBC';return db[_0xdd72('0x25')][_0xdd72('0x22')]({'where':{'type':_0xec577,'resourceId':_0x30df94['id']}})[_0xdd72('0x23')](function(){return _0x20d18f;});})[_0xdd72('0x23')](function(){_0x497ec2[_0xdd72('0x1c')](0xcc)[_0xdd72('0x16')]();});}};}function handleEntityNotFound(_0x54d68f,_0x3f43ba){return function(_0x1de976){if(!_0x1de976){_0x54d68f[_0xdd72('0x15')](0x194);}return _0x1de976;};}function handleError(_0x556f3e,_0xf228b9){_0xf228b9=_0xf228b9||0x1f4;return function(_0xa224cc){logger[_0xdd72('0x26')](_0xa224cc[_0xdd72('0x27')]);if(_0xa224cc[_0xdd72('0x28')]){delete _0xa224cc[_0xdd72('0x28')];}_0x556f3e[_0xdd72('0x1c')](_0xf228b9)['send'](_0xa224cc);};}exports[_0xdd72('0x29')]=function(_0x1c2643,_0x1ee272){var _0xf9b821={},_0x20e758={},_0x3180ea={'count':0x0,'rows':[]};var _0x2689c8=_[_0xdd72('0x2a')](db['SquareOdbc'][_0xdd72('0x2b')],function(_0x491651){return{'name':_0x491651[_0xdd72('0x2c')],'type':_0x491651['type'][_0xdd72('0x2d')]};});_0x20e758[_0xdd72('0x2e')]=_[_0xdd72('0x2a')](_0x2689c8,'name');_0x20e758[_0xdd72('0x2f')]=_[_0xdd72('0x30')](_0x1c2643[_0xdd72('0x2f')]);_0x20e758[_0xdd72('0x31')]=_[_0xdd72('0x32')](_0x20e758['model'],_0x20e758[_0xdd72('0x2f')]);_0xf9b821[_0xdd72('0x33')]=_[_0xdd72('0x32')](_0x20e758['model'],qs[_0xdd72('0x34')](_0x1c2643['query'][_0xdd72('0x34')]));_0xf9b821[_0xdd72('0x33')]=_0xf9b821[_0xdd72('0x33')][_0xdd72('0x35')]?_0xf9b821[_0xdd72('0x33')]:_0x20e758[_0xdd72('0x2e')];if(!_0x1c2643[_0xdd72('0x2f')]['hasOwnProperty'](_0xdd72('0x36'))){_0xf9b821[_0xdd72('0x19')]=qs[_0xdd72('0x19')](_0x1c2643['query'][_0xdd72('0x19')]);_0xf9b821[_0xdd72('0x1a')]=qs[_0xdd72('0x1a')](_0x1c2643[_0xdd72('0x2f')][_0xdd72('0x1a')]);}_0xf9b821['order']=qs['sort'](_0x1c2643['query']['sort']);_0xf9b821[_0xdd72('0x37')]=qs[_0xdd72('0x31')](_['pick'](_0x1c2643[_0xdd72('0x2f')],_0x20e758[_0xdd72('0x31')]),_0x2689c8);if(_0x1c2643[_0xdd72('0x2f')][_0xdd72('0x38')]){_0xf9b821['where']=_['merge'](_0xf9b821[_0xdd72('0x37')],{'$or':_[_0xdd72('0x2a')](_0x2689c8,function(_0x41a992){if(_0x41a992[_0xdd72('0x39')]!==_0xdd72('0x3a')){var _0x58715c={};_0x58715c[_0x41a992[_0xdd72('0x28')]]={'$like':'%'+_0x1c2643[_0xdd72('0x2f')][_0xdd72('0x38')]+'%'};return _0x58715c;}})});}_0xf9b821=_['merge']({},_0xf9b821,_0x1c2643[_0xdd72('0x3b')]);var _0x30126a={'where':_0xf9b821[_0xdd72('0x37')]};return db[_0xdd72('0x3c')][_0xdd72('0x1b')](_0x30126a)[_0xdd72('0x23')](function(_0x32b0b2){_0x3180ea[_0xdd72('0x1b')]=_0x32b0b2;if(_0x1c2643[_0xdd72('0x2f')][_0xdd72('0x3d')]){_0xf9b821[_0xdd72('0x3e')]=[{'all':!![]}];}return db[_0xdd72('0x3c')][_0xdd72('0x3f')](_0xf9b821);})[_0xdd72('0x23')](function(_0x85976d){_0x3180ea[_0xdd72('0x40')]=_0x85976d;return _0x3180ea;})[_0xdd72('0x23')](respondWithFilteredResult(_0x1ee272,_0xf9b821))[_0xdd72('0x41')](handleError(_0x1ee272,null));};exports[_0xdd72('0x42')]=function(_0x2849ae,_0x3693a4){var _0x3a3cc5={'raw':!![],'where':{'id':_0x2849ae[_0xdd72('0x43')]['id']}},_0x393457={};_0x393457[_0xdd72('0x2e')]=_[_0xdd72('0x30')](db[_0xdd72('0x3c')][_0xdd72('0x2b')]);_0x393457[_0xdd72('0x2f')]=_[_0xdd72('0x30')](_0x2849ae[_0xdd72('0x2f')]);_0x393457['filters']=_['intersection'](_0x393457[_0xdd72('0x2e')],_0x393457[_0xdd72('0x2f')]);_0x3a3cc5[_0xdd72('0x33')]=_[_0xdd72('0x32')](_0x393457[_0xdd72('0x2e')],qs[_0xdd72('0x34')](_0x2849ae['query'][_0xdd72('0x34')]));_0x3a3cc5[_0xdd72('0x33')]=_0x3a3cc5[_0xdd72('0x33')][_0xdd72('0x35')]?_0x3a3cc5['attributes']:_0x393457[_0xdd72('0x2e')];if(_0x2849ae[_0xdd72('0x2f')][_0xdd72('0x3d')]){_0x3a3cc5[_0xdd72('0x3e')]=[{'all':!![]}];}_0x3a3cc5=_[_0xdd72('0x44')]({},_0x3a3cc5,_0x2849ae[_0xdd72('0x3b')]);return db['SquareOdbc'][_0xdd72('0x45')](_0x3a3cc5)['then'](handleEntityNotFound(_0x3693a4,null))['then'](respondWithResult(_0x3693a4,null))[_0xdd72('0x41')](handleError(_0x3693a4,null));};exports[_0xdd72('0x46')]=function(_0x24330d,_0x1d0368){return db[_0xdd72('0x3c')][_0xdd72('0x46')](_0x24330d[_0xdd72('0x47')],{})[_0xdd72('0x23')](function(_0x34fe61){var _0x1fbcdd=_0x24330d['user'][_0xdd72('0x24')]({'plain':!![]});if(!_0x1fbcdd)throw new Error(_0xdd72('0x48'));if(_0x1fbcdd[_0xdd72('0x49')]===_0xdd72('0x4a')){var _0x3331ee=_0x34fe61[_0xdd72('0x24')]({'plain':!![]});var _0x2c9598=_0xdd72('0x4b');return db[_0xdd72('0x4c')]['find']({'where':{'name':_0x2c9598,'userProfileId':_0x1fbcdd[_0xdd72('0x4d')]},'raw':!![]})[_0xdd72('0x23')](function(_0x95bcc7){if(_0x95bcc7&&_0x95bcc7[_0xdd72('0x4e')]===0x0){return db[_0xdd72('0x25')][_0xdd72('0x46')]({'name':_0x3331ee[_0xdd72('0x28')],'resourceId':_0x3331ee['id'],'type':_0x95bcc7[_0xdd72('0x28')],'sectionId':_0x95bcc7['id']},{})['then'](function(){return _0x34fe61;});}else{return _0x34fe61;}})[_0xdd72('0x41')](function(_0x46dc0f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x46dc0f);throw _0x46dc0f;});}return _0x34fe61;})[_0xdd72('0x23')](respondWithResult(_0x1d0368,0xc9))[_0xdd72('0x41')](handleError(_0x1d0368,null));};exports[_0xdd72('0x21')]=function(_0x307071,_0x5d421c){if(_0x307071[_0xdd72('0x47')]['id']){delete _0x307071[_0xdd72('0x47')]['id'];}return db['SquareOdbc']['find']({'where':{'id':_0x307071[_0xdd72('0x43')]['id']}})['then'](handleEntityNotFound(_0x5d421c,null))['then'](saveUpdates(_0x307071[_0xdd72('0x47')],null))[_0xdd72('0x23')](respondWithResult(_0x5d421c,null))[_0xdd72('0x41')](handleError(_0x5d421c,null));};exports['destroy']=function(_0x140a19,_0x4af6f8){return db['SquareOdbc'][_0xdd72('0x45')]({'where':{'id':_0x140a19[_0xdd72('0x43')]['id']}})[_0xdd72('0x23')](handleEntityNotFound(_0x4af6f8,null))['then'](removeEntity(_0x4af6f8,null))[_0xdd72('0x41')](handleError(_0x4af6f8,null));};exports[_0xdd72('0x4f')]=function(_0x2d47d5,_0x583a6c,_0x52796d){var _0x154270;return db['SquareOdbc'][_0xdd72('0x45')]({'where':{'id':_0x2d47d5[_0xdd72('0x43')]['id']},'attributes':['id',_0xdd72('0x50')]})[_0xdd72('0x23')](handleEntityNotFound(_0x583a6c,null))['then'](function(_0x1b2e4b){if(_0x1b2e4b){var _0x1f8334=require(_0xdd72('0x51'))();_0x1f8334['openSync'](_0x1b2e4b[_0xdd72('0x50')]);_0x1f8334['closeSync']();return _0x1b2e4b;}})[_0xdd72('0x23')](respondWithResult(_0x583a6c,null))['catch'](handleError(_0x583a6c,null));};
\ No newline at end of file
index f9e97f9..e5b3326 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fb4=['moment','bluebird','request-promise','./squareOdbc.attributes','exports','square_odbc','../../config/logger','api'];(function(_0x255ac0,_0x3f6645){var _0x437bf1=function(_0x5baff0){while(--_0x5baff0){_0x255ac0['push'](_0x255ac0['shift']());}};_0x437bf1(++_0x3f6645);}(_0x9fb4,0x1c6));var _0x49fb=function(_0x4c4683,_0x241657){_0x4c4683=_0x4c4683-0x0;var _0x78ee7e=_0x9fb4[_0x4c4683];return _0x78ee7e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49fb('0x0'))(_0x49fb('0x1'));var moment=require(_0x49fb('0x2'));var BPromise=require(_0x49fb('0x3'));var rp=require(_0x49fb('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49fb('0x5'));module[_0x49fb('0x6')]=function(_0x4ebc6b,_0x2a5d7b){return _0x4ebc6b['define']('SquareOdbc',attributes,{'tableName':_0x49fb('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x031e=['square_odbc','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./squareOdbc.attributes','define','SquareOdbc'];(function(_0x5b5cde,_0x1f7c5f){var _0x364ad2=function(_0x4a1172){while(--_0x4a1172){_0x5b5cde['push'](_0x5b5cde['shift']());}};_0x364ad2(++_0x1f7c5f);}(_0x031e,0x1ae));var _0xe031=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0x031e[_0x5ce15c];return _0x36e4f5;};'use strict';var _=require(_0xe031('0x0'));var util=require(_0xe031('0x1'));var logger=require(_0xe031('0x2'))(_0xe031('0x3'));var moment=require(_0xe031('0x4'));var BPromise=require(_0xe031('0x5'));var rp=require(_0xe031('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe031('0x7'));module['exports']=function(_0x418fe1,_0x2380b0){return _0x418fe1[_0xe031('0x8')](_0xe031('0x9'),attributes,{'tableName':_0xe031('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d38bdf5..f5fb570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea95=['error','code','message','result','catch','find','options','raw','where','include','map','model','attributes','then','ShowSquareOdbc','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','request','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2f5297,_0x2b93fc){var _0x446f62=function(_0x531bab){while(--_0x531bab){_0x2f5297['push'](_0x2f5297['shift']());}};_0x446f62(++_0x2b93fc);}(_0xea95,0xef));var _0x5ea9=function(_0x5a97fc,_0x1f920f){_0x5a97fc=_0x5a97fc-0x0;var _0x42a7b3=_0xea95[_0x5a97fc];return _0x42a7b3;};'use strict';var _=require(_0x5ea9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5ea9('0x1'));var fs=require('fs');var Redis=require(_0x5ea9('0x2'));var db=require(_0x5ea9('0x3'))['db'];var utils=require(_0x5ea9('0x4'));var logger=require('../../config/logger')(_0x5ea9('0x5'));var config=require('../../config/environment');var jayson=require(_0x5ea9('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x268476,_0x1a8afc,_0x204257){return new BPromise(function(_0x48f93c,_0xb1ad6f){return client[_0x5ea9('0x7')](_0x268476,_0x204257)['then'](function(_0xf6b56d){logger['info'](_0x5ea9('0x8'),_0x1a8afc,_0x5ea9('0x9'));logger[_0x5ea9('0xa')](_0x5ea9('0xb'),_0x1a8afc,_0x5ea9('0x9'),JSON[_0x5ea9('0xc')](_0xf6b56d));if(_0xf6b56d[_0x5ea9('0xd')]){if(_0xf6b56d[_0x5ea9('0xd')][_0x5ea9('0xe')]===0x1f4){logger['error'](_0x5ea9('0x8'),_0x1a8afc,_0xf6b56d[_0x5ea9('0xd')][_0x5ea9('0xf')]);return _0xb1ad6f(_0xf6b56d[_0x5ea9('0xd')][_0x5ea9('0xf')]);}logger[_0x5ea9('0xd')](_0x5ea9('0x8'),_0x1a8afc,_0xf6b56d[_0x5ea9('0xd')]['message']);return _0x48f93c(_0xf6b56d[_0x5ea9('0xd')]['message']);}else{logger['info'](_0x5ea9('0x8'),_0x1a8afc,'request\x20sent');_0x48f93c(_0xf6b56d[_0x5ea9('0x10')][_0x5ea9('0xf')]);}})[_0x5ea9('0x11')](function(_0x5d28c2){logger[_0x5ea9('0xd')](_0x5ea9('0x8'),_0x1a8afc,_0x5d28c2);_0xb1ad6f(_0x5d28c2);});});}exports['ShowSquareOdbc']=function(_0x1b18bf){var _0x3e6317=this;return new Promise(function(_0x21c757,_0x27148e){return db['SquareOdbc'][_0x5ea9('0x12')]({'raw':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x14')]===undefined?!![]:![]:!![],'where':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x15')]||null:null,'attributes':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')]['attributes']||null:null,'include':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x16')]?_[_0x5ea9('0x17')](_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x16')],function(_0x56ddcb){return{'model':db[_0x56ddcb[_0x5ea9('0x18')]],'as':_0x56ddcb['as'],'attributes':_0x56ddcb[_0x5ea9('0x19')],'include':_0x56ddcb['include']?_[_0x5ea9('0x17')](_0x56ddcb['include'],function(_0x235330){return{'model':db[_0x235330[_0x5ea9('0x18')]],'as':_0x235330['as'],'attributes':_0x235330[_0x5ea9('0x19')],'include':_0x235330[_0x5ea9('0x16')]?_[_0x5ea9('0x17')](_0x235330[_0x5ea9('0x16')],function(_0x2dbdaf){return{'model':db[_0x2dbdaf[_0x5ea9('0x18')]],'as':_0x2dbdaf['as'],'attributes':_0x2dbdaf[_0x5ea9('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5ea9('0x1a')](function(_0x1ffd57){logger['info'](_0x5ea9('0x1b'),_0x1b18bf);logger['debug'](_0x5ea9('0x1b'),_0x1b18bf,JSON[_0x5ea9('0xc')](_0x1ffd57));_0x21c757(_0x1ffd57);})[_0x5ea9('0x11')](function(_0x47450a){logger[_0x5ea9('0xd')](_0x5ea9('0x1b'),_0x47450a[_0x5ea9('0xf')],_0x1b18bf);_0x27148e(_0x3e6317[_0x5ea9('0xd')](0x1f4,_0x47450a[_0x5ea9('0xf')]));});});};
\ No newline at end of file
+var _0xa85e=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','result','ShowSquareOdbc','find','options','raw','where','attributes','include','map','model','info','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x57c6aa,_0x51c8fd){var _0x2a1f40=function(_0x443c23){while(--_0x443c23){_0x57c6aa['push'](_0x57c6aa['shift']());}};_0x2a1f40(++_0x51c8fd);}(_0xa85e,0x123));var _0xea85=function(_0x705b98,_0x1c345b){_0x705b98=_0x705b98-0x0;var _0x47b72f=_0xa85e[_0x705b98];return _0x47b72f;};'use strict';var _=require(_0xea85('0x0'));var util=require('util');var moment=require(_0xea85('0x1'));var BPromise=require(_0xea85('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xea85('0x3'));var db=require(_0xea85('0x4'))['db'];var utils=require(_0xea85('0x5'));var logger=require(_0xea85('0x6'))(_0xea85('0x7'));var config=require(_0xea85('0x8'));var jayson=require(_0xea85('0x9'));var client=jayson[_0xea85('0xa')][_0xea85('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x153530,_0x21e7d0,_0x14ff74){return new BPromise(function(_0x2845a3,_0x30620e){return client['request'](_0x153530,_0x14ff74)[_0xea85('0xc')](function(_0x285c10){logger['info']('SquareOdbc,\x20%s,\x20%s',_0x21e7d0,'request\x20sent');logger[_0xea85('0xd')](_0xea85('0xe'),_0x21e7d0,_0xea85('0xf'),JSON[_0xea85('0x10')](_0x285c10));if(_0x285c10['error']){if(_0x285c10[_0xea85('0x11')][_0xea85('0x12')]===0x1f4){logger[_0xea85('0x11')](_0xea85('0x13'),_0x21e7d0,_0x285c10[_0xea85('0x11')][_0xea85('0x14')]);return _0x30620e(_0x285c10[_0xea85('0x11')][_0xea85('0x14')]);}logger[_0xea85('0x11')]('SquareOdbc,\x20%s,\x20%s',_0x21e7d0,_0x285c10[_0xea85('0x11')][_0xea85('0x14')]);return _0x2845a3(_0x285c10[_0xea85('0x11')][_0xea85('0x14')]);}else{logger['info']('SquareOdbc,\x20%s,\x20%s',_0x21e7d0,_0xea85('0xf'));_0x2845a3(_0x285c10[_0xea85('0x15')][_0xea85('0x14')]);}})['catch'](function(_0x399f02){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x21e7d0,_0x399f02);_0x30620e(_0x399f02);});});}exports[_0xea85('0x16')]=function(_0x4ff135){var _0x343464=this;return new Promise(function(_0x575e32,_0x59e1a0){return db['SquareOdbc'][_0xea85('0x17')]({'raw':_0x4ff135[_0xea85('0x18')]?_0x4ff135[_0xea85('0x18')][_0xea85('0x19')]===undefined?!![]:![]:!![],'where':_0x4ff135[_0xea85('0x18')]?_0x4ff135[_0xea85('0x18')][_0xea85('0x1a')]||null:null,'attributes':_0x4ff135[_0xea85('0x18')]?_0x4ff135[_0xea85('0x18')][_0xea85('0x1b')]||null:null,'include':_0x4ff135['options']?_0x4ff135[_0xea85('0x18')][_0xea85('0x1c')]?_['map'](_0x4ff135['options'][_0xea85('0x1c')],function(_0x1adcfb){return{'model':db[_0x1adcfb['model']],'as':_0x1adcfb['as'],'attributes':_0x1adcfb[_0xea85('0x1b')],'include':_0x1adcfb[_0xea85('0x1c')]?_[_0xea85('0x1d')](_0x1adcfb[_0xea85('0x1c')],function(_0x4358d8){return{'model':db[_0x4358d8[_0xea85('0x1e')]],'as':_0x4358d8['as'],'attributes':_0x4358d8[_0xea85('0x1b')],'include':_0x4358d8[_0xea85('0x1c')]?_[_0xea85('0x1d')](_0x4358d8['include'],function(_0x2b3e2f){return{'model':db[_0x2b3e2f[_0xea85('0x1e')]],'as':_0x2b3e2f['as'],'attributes':_0x2b3e2f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e2ad2){logger[_0xea85('0x1f')](_0xea85('0x16'),_0x4ff135);logger[_0xea85('0xd')](_0xea85('0x16'),_0x4ff135,JSON[_0xea85('0x10')](_0x2e2ad2));_0x575e32(_0x2e2ad2);})[_0xea85('0x20')](function(_0x45b323){logger['error'](_0xea85('0x16'),_0x45b323[_0xea85('0x14')],_0x4ff135);_0x59e1a0(_0x343464[_0xea85('0x11')](0x1f4,_0x45b323['message']));});});};
\ No newline at end of file
index debee98..cf1a802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe680=['update','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','show','post','put'];(function(_0x493687,_0x51a480){var _0x35172c=function(_0xe72da0){while(--_0xe72da0){_0x493687['push'](_0x493687['shift']());}};_0x35172c(++_0x51a480);}(_0xe680,0x68));var _0x0e68=function(_0x12ae97,_0x385f36){_0x12ae97=_0x12ae97-0x0;var _0xb50847=_0xe680[_0x12ae97];return _0xb50847;};'use strict';var multer=require(_0x0e68('0x0'));var util=require(_0x0e68('0x1'));var path=require(_0x0e68('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0e68('0x3')]();var fs_extra=require(_0x0e68('0x4'));var auth=require(_0x0e68('0x5'));var interaction=require(_0x0e68('0x6'));var config=require(_0x0e68('0x7'));var controller=require('./squareProject.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0e68('0x8')]);router[_0x0e68('0x9')](_0x0e68('0xa'),auth[_0x0e68('0xb')](),controller[_0x0e68('0xc')]);router[_0x0e68('0xd')]('/',auth[_0x0e68('0xb')](),controller['create']);router[_0x0e68('0xe')]('/:id',auth[_0x0e68('0xb')](),controller[_0x0e68('0xf')]);router['delete'](_0x0e68('0xa'),auth[_0x0e68('0xb')](),controller[_0x0e68('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x82ca=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','post','create','delete','destroy','exports','multer','util','path'];(function(_0xfc406a,_0x4479e1){var _0x395473=function(_0x1fe8b6){while(--_0x1fe8b6){_0xfc406a['push'](_0xfc406a['shift']());}};_0x395473(++_0x4479e1);}(_0x82ca,0x1f1));var _0xa82c=function(_0x1a0600,_0x41feef){_0x1a0600=_0x1a0600-0x0;var _0x734670=_0x82ca[_0x1a0600];return _0x734670;};'use strict';var multer=require(_0xa82c('0x0'));var util=require(_0xa82c('0x1'));var path=require(_0xa82c('0x2'));var timeout=require('connect-timeout');var express=require(_0xa82c('0x3'));var router=express[_0xa82c('0x4')]();var fs_extra=require(_0xa82c('0x5'));var auth=require(_0xa82c('0x6'));var interaction=require(_0xa82c('0x7'));var config=require(_0xa82c('0x8'));var controller=require(_0xa82c('0x9'));router[_0xa82c('0xa')]('/',auth[_0xa82c('0xb')](),controller[_0xa82c('0xc')]);router[_0xa82c('0xa')](_0xa82c('0xd'),auth['isAuthenticated'](),controller[_0xa82c('0xe')]);router[_0xa82c('0xf')]('/',auth['isAuthenticated'](),controller[_0xa82c('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa82c('0x11')](_0xa82c('0xd'),auth['isAuthenticated'](),controller[_0xa82c('0x12')]);module[_0xa82c('0x13')]=router;
\ No newline at end of file
index 32b2e7f..2037568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47cd=['long','getDataValue','preproduction','toString','utf8','production','DATE','STRING','name','BLOB'];(function(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0x47cd,0xf7));var _0xd47c=function(_0x474d61,_0x2c42bf){_0x474d61=_0x474d61-0x0;var _0xc389f2=_0x47cd[_0x474d61];return _0xc389f2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd47c('0x0')],'unique':_0xd47c('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0xd47c('0x0')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0xd47c('0x2')](_0xd47c('0x3')),'get':function(){if(this[_0xd47c('0x4')]('preproduction')){return this[_0xd47c('0x4')](_0xd47c('0x5'))[_0xd47c('0x6')](_0xd47c('0x7'));}}},'production':{'type':Sequelize[_0xd47c('0x2')](_0xd47c('0x3')),'get':function(){if(this[_0xd47c('0x4')](_0xd47c('0x8'))){return this['getDataValue'](_0xd47c('0x8'))[_0xd47c('0x6')](_0xd47c('0x7'));}}},'savedAt':{'type':Sequelize[_0xd47c('0x9')]},'publishedAt':{'type':Sequelize[_0xd47c('0x9')]}};
\ No newline at end of file
+var _0x9218=['long','getDataValue','preproduction','toString','utf8','production','DATE','sequelize','exports','STRING','name','TEXT','BLOB'];(function(_0xda1de7,_0x4c5edd){var _0x4ac7ba=function(_0x75a8b4){while(--_0x75a8b4){_0xda1de7['push'](_0xda1de7['shift']());}};_0x4ac7ba(++_0x4c5edd);}(_0x9218,0x10b));var _0x8921=function(_0x1b635d,_0x7c66a2){_0x1b635d=_0x1b635d-0x0;var _0x461f9e=_0x9218[_0x1b635d];return _0x461f9e;};'use strict';var Sequelize=require(_0x8921('0x0'));module[_0x8921('0x1')]={'name':{'type':Sequelize[_0x8921('0x2')],'unique':_0x8921('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x8921('0x2')]},'notes':{'type':Sequelize[_0x8921('0x4')]},'preproduction':{'type':Sequelize[_0x8921('0x5')](_0x8921('0x6')),'get':function(){if(this[_0x8921('0x7')](_0x8921('0x8'))){return this['getDataValue'](_0x8921('0x8'))[_0x8921('0x9')](_0x8921('0xa'));}}},'production':{'type':Sequelize[_0x8921('0x5')](_0x8921('0x6')),'get':function(){if(this[_0x8921('0x7')](_0x8921('0xb'))){return this[_0x8921('0x7')]('production')[_0x8921('0x9')]('utf8');}}},'savedAt':{'type':Sequelize[_0x8921('0xc')]},'publishedAt':{'type':Sequelize[_0x8921('0xc')]}};
\ No newline at end of file
index a92d74c..32a245f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3960=['stack','name','map','SquareProject','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','keys','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','production','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./squareProject.socket','register','json','offset','undefined','limit','count','status','set','update','then','destroy','get','UserProfileResource','publish','agi','stringify','end','sendStatus','error'];(function(_0x4ec7f2,_0x3d92d2){var _0x118004=function(_0x1ac4fb){while(--_0x1ac4fb){_0x4ec7f2['push'](_0x4ec7f2['shift']());}};_0x118004(++_0x3d92d2);}(_0x3960,0xb4));var _0x0396=function(_0x453247,_0x114698){_0x453247=_0x453247-0x0;var _0x1faec1=_0x3960[_0x453247];return _0x1faec1;};'use strict';var _=require('lodash');var Redis=require(_0x0396('0x0'));var qs=require('../../components/parsers/qs');var logger=require(_0x0396('0x1'))(_0x0396('0x2'));var config=require(_0x0396('0x3'));var db=require(_0x0396('0x4'))['db'];config[_0x0396('0x5')]=_['defaults'](config[_0x0396('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x0396('0x6'))(new Redis(config[_0x0396('0x5')]));require(_0x0396('0x7'))[_0x0396('0x8')](socket);function respondWithResult(_0x57c71a,_0x468c98){_0x468c98=_0x468c98||0xc8;return function(_0x55d8ca){if(_0x55d8ca){return _0x57c71a['status'](_0x468c98)[_0x0396('0x9')](_0x55d8ca);}};}function respondWithFilteredResult(_0x488509,_0x486df6){return function(_0x319894){if(_0x319894){var _0xc328f7=typeof _0x486df6[_0x0396('0xa')]===_0x0396('0xb')&&typeof _0x486df6[_0x0396('0xc')]===_0x0396('0xb');var _0x38ad3b=_0x319894['count'];var _0x1bd2d8=_0xc328f7?0x0:_0x486df6[_0x0396('0xa')];var _0x37647d=_0xc328f7?_0x319894[_0x0396('0xd')]:_0x486df6[_0x0396('0xa')]+_0x486df6[_0x0396('0xc')];var _0x1235e3;if(_0x37647d>=_0x38ad3b){_0x37647d=_0x38ad3b;_0x1235e3=0xc8;}else{_0x1235e3=0xce;}_0x488509[_0x0396('0xe')](_0x1235e3);return _0x488509[_0x0396('0xf')]('Content-Range',_0x1bd2d8+'-'+_0x37647d+'/'+_0x38ad3b)[_0x0396('0x9')](_0x319894);}return null;};}function saveUpdates(_0x5a9349){return function(_0x31f0ac){if(_0x31f0ac){return _0x31f0ac[_0x0396('0x10')](_0x5a9349)[_0x0396('0x11')](function(_0x3eea6b){return _0x3eea6b;});}return null;};}function removeEntity(_0x42958c){return function(_0x3a2c59){if(_0x3a2c59){return _0x3a2c59[_0x0396('0x12')]()[_0x0396('0x11')](function(){var _0x642cd8=_0x3a2c59[_0x0396('0x13')]({'plain':!![]});var _0x3a7983='SquareProjects';return db[_0x0396('0x14')][_0x0396('0x12')]({'where':{'type':_0x3a7983,'resourceId':_0x642cd8['id']}})[_0x0396('0x11')](function(){return _0x3a2c59;});})[_0x0396('0x11')](function(){var _0x50a863=new Redis(config[_0x0396('0x5')]);_0x50a863[_0x0396('0x15')](_0x0396('0x16'),JSON[_0x0396('0x17')]({'id':_0x3a2c59['id'],'deleted':!![]}));})[_0x0396('0x11')](function(){_0x42958c[_0x0396('0xe')](0xcc)[_0x0396('0x18')]();});}};}function handleEntityNotFound(_0x4b9ae5){return function(_0x12310b){if(!_0x12310b){_0x4b9ae5[_0x0396('0x19')](0x194);}return _0x12310b;};}function handleError(_0x29434b,_0xb019c6){_0xb019c6=_0xb019c6||0x1f4;return function(_0x40d004){logger[_0x0396('0x1a')](_0x40d004[_0x0396('0x1b')]);if(_0x40d004[_0x0396('0x1c')]){delete _0x40d004[_0x0396('0x1c')];}_0x29434b[_0x0396('0xe')](_0xb019c6)['send'](_0x40d004);};}exports['index']=function(_0x6bd3d6,_0x57d7d8){var _0x53fdd3={},_0x9b672e={},_0x270cef={'count':0x0,'rows':[]};var _0x53e59f=_[_0x0396('0x1d')](db[_0x0396('0x1e')][_0x0396('0x1f')],function(_0x322626){return{'name':_0x322626['fieldName'],'type':_0x322626[_0x0396('0x20')][_0x0396('0x21')]};});_0x9b672e[_0x0396('0x22')]=_[_0x0396('0x1d')](_0x53e59f,'name');_0x9b672e[_0x0396('0x23')]=_['keys'](_0x6bd3d6[_0x0396('0x23')]);_0x9b672e[_0x0396('0x24')]=_[_0x0396('0x25')](_0x9b672e[_0x0396('0x22')],_0x9b672e['query']);_0x53fdd3[_0x0396('0x26')]=_[_0x0396('0x25')](_0x9b672e[_0x0396('0x22')],qs[_0x0396('0x27')](_0x6bd3d6[_0x0396('0x23')][_0x0396('0x27')]));_0x53fdd3[_0x0396('0x26')]=_0x53fdd3['attributes'][_0x0396('0x28')]?_0x53fdd3[_0x0396('0x26')]:_0x9b672e['model'];if(!_0x6bd3d6['query'][_0x0396('0x29')]('nolimit')){_0x53fdd3[_0x0396('0xc')]=qs[_0x0396('0xc')](_0x6bd3d6[_0x0396('0x23')][_0x0396('0xc')]);_0x53fdd3[_0x0396('0xa')]=qs[_0x0396('0xa')](_0x6bd3d6['query'][_0x0396('0xa')]);}_0x53fdd3[_0x0396('0x2a')]=qs[_0x0396('0x2b')](_0x6bd3d6[_0x0396('0x23')]['sort']);_0x53fdd3[_0x0396('0x2c')]=qs[_0x0396('0x24')](_[_0x0396('0x2d')](_0x6bd3d6[_0x0396('0x23')],_0x9b672e[_0x0396('0x24')]),_0x53e59f);if(_0x6bd3d6[_0x0396('0x23')]['filter']){_0x53fdd3[_0x0396('0x2c')]=_['merge'](_0x53fdd3[_0x0396('0x2c')],{'$or':_[_0x0396('0x1d')](_0x53e59f,function(_0x2edca8){if(_0x2edca8['type']!==_0x0396('0x2e')){var _0x2681c0={};_0x2681c0[_0x2edca8[_0x0396('0x1c')]]={'$like':'%'+_0x6bd3d6[_0x0396('0x23')][_0x0396('0x2f')]+'%'};return _0x2681c0;}})});}_0x53fdd3=_['merge']({},_0x53fdd3,_0x6bd3d6[_0x0396('0x30')]);var _0x423127={'where':_0x53fdd3['where']};return db[_0x0396('0x1e')][_0x0396('0xd')](_0x423127)['then'](function(_0x1013af){_0x270cef[_0x0396('0xd')]=_0x1013af;if(_0x6bd3d6[_0x0396('0x23')][_0x0396('0x31')]){_0x53fdd3[_0x0396('0x32')]=[{'all':!![]}];}return db[_0x0396('0x1e')][_0x0396('0x33')](_0x53fdd3);})[_0x0396('0x11')](function(_0x54f28a){_0x270cef[_0x0396('0x34')]=_0x54f28a;return _0x270cef;})[_0x0396('0x11')](respondWithFilteredResult(_0x57d7d8,_0x53fdd3))[_0x0396('0x35')](handleError(_0x57d7d8,null));};exports['show']=function(_0x5f04d4,_0x37f7af){var _0x1298e1={'raw':![],'where':{'id':_0x5f04d4['params']['id']}},_0x21d169={};_0x21d169[_0x0396('0x22')]=_[_0x0396('0x36')](db[_0x0396('0x1e')][_0x0396('0x1f')]);_0x21d169[_0x0396('0x23')]=_['keys'](_0x5f04d4[_0x0396('0x23')]);_0x21d169[_0x0396('0x24')]=_[_0x0396('0x25')](_0x21d169['model'],_0x21d169['query']);_0x1298e1[_0x0396('0x26')]=_[_0x0396('0x25')](_0x21d169['model'],qs[_0x0396('0x27')](_0x5f04d4[_0x0396('0x23')][_0x0396('0x27')]));_0x1298e1[_0x0396('0x26')]=_0x1298e1[_0x0396('0x26')][_0x0396('0x28')]?_0x1298e1['attributes']:_0x21d169[_0x0396('0x22')];if(_0x5f04d4['query']['includeAll']){_0x1298e1[_0x0396('0x32')]=[{'all':!![]}];}_0x1298e1=_[_0x0396('0x37')]({},_0x1298e1,_0x5f04d4[_0x0396('0x30')]);return db['SquareProject']['find'](_0x1298e1)[_0x0396('0x11')](handleEntityNotFound(_0x37f7af,null))[_0x0396('0x11')](respondWithResult(_0x37f7af,null))['catch'](handleError(_0x37f7af,null));};exports[_0x0396('0x38')]=function(_0x3250f5,_0x4fe52a){return db['SquareProject'][_0x0396('0x38')](_0x3250f5[_0x0396('0x39')],{})[_0x0396('0x11')](function(_0x110c37){var _0x3e5468=_0x3250f5[_0x0396('0x3a')][_0x0396('0x13')]({'plain':!![]});if(!_0x3e5468)throw new Error(_0x0396('0x3b'));if(_0x3e5468[_0x0396('0x3c')]===_0x0396('0x3a')){var _0x36bff8=_0x110c37[_0x0396('0x13')]({'plain':!![]});var _0x41f44c=_0x0396('0x3d');return db[_0x0396('0x3e')][_0x0396('0x3f')]({'where':{'name':_0x41f44c,'userProfileId':_0x3e5468[_0x0396('0x40')]},'raw':!![]})['then'](function(_0x4bc6d9){if(_0x4bc6d9&&_0x4bc6d9[_0x0396('0x41')]===0x0){return db[_0x0396('0x14')][_0x0396('0x38')]({'name':_0x36bff8[_0x0396('0x1c')],'resourceId':_0x36bff8['id'],'type':_0x4bc6d9[_0x0396('0x1c')],'sectionId':_0x4bc6d9['id']},{})[_0x0396('0x11')](function(){return _0x110c37;});}else{return _0x110c37;}})[_0x0396('0x35')](function(_0x268875){logger[_0x0396('0x1a')](_0x0396('0x42'),_0x268875);throw _0x268875;});}return _0x110c37;})['then'](respondWithResult(_0x4fe52a,0xc9))[_0x0396('0x35')](handleError(_0x4fe52a,null));};exports['update']=function(_0x15dea5,_0xcf61bd){if(_0x15dea5['body']['id']){delete _0x15dea5[_0x0396('0x39')]['id'];}return db[_0x0396('0x1e')][_0x0396('0x3f')]({'where':{'id':_0x15dea5[_0x0396('0x43')]['id']}})[_0x0396('0x11')](handleEntityNotFound(_0xcf61bd,null))[_0x0396('0x11')](saveUpdates(_0x15dea5[_0x0396('0x39')],null))['then'](function(_0x573450){if(!_0x573450)return;var _0x4820b4=_0x573450[_0x0396('0x13')]({'plain':!![]});return _0x4820b4;})[_0x0396('0x11')](function(_0x26dbbc){var _0x308a5d=new Redis(config[_0x0396('0x5')]);_0x308a5d[_0x0396('0x15')](_0x0396('0x16'),JSON[_0x0396('0x17')](_['pick'](_0x26dbbc,['id','name',_0x0396('0x44')])));return _0x26dbbc;})[_0x0396('0x11')](respondWithResult(_0xcf61bd,null))[_0x0396('0x35')](handleError(_0xcf61bd,null));};exports['destroy']=function(_0x59f73a,_0x4291fc){return db[_0x0396('0x1e')][_0x0396('0x3f')]({'where':{'id':_0x59f73a[_0x0396('0x43')]['id']}})[_0x0396('0x11')](handleEntityNotFound(_0x4291fc,null))[_0x0396('0x11')](removeEntity(_0x4291fc,null))['catch'](handleError(_0x4291fc,null));};
\ No newline at end of file
+var _0xa0b5=['includeAll','include','find','catch','create','user','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','production','lodash','ioredis','api','redis','localhost','socket.io-emitter','./squareProject.socket','register','status','json','offset','limit','undefined','count','set','update','destroy','then','SquareProjects','UserProfileResource','publish','agi','stringify','end','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','findAll','params','keys'];(function(_0xae29f9,_0x16315b){var _0x10ee97=function(_0x2445b4){while(--_0x2445b4){_0xae29f9['push'](_0xae29f9['shift']());}};_0x10ee97(++_0x16315b);}(_0xa0b5,0x1d3));var _0x5a0b=function(_0xe8e2ed,_0x34e496){_0xe8e2ed=_0xe8e2ed-0x0;var _0x4eff22=_0xa0b5[_0xe8e2ed];return _0x4eff22;};'use strict';var _=require(_0x5a0b('0x0'));var Redis=require(_0x5a0b('0x1'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x5a0b('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x5a0b('0x3')]=_['defaults'](config[_0x5a0b('0x3')],{'host':_0x5a0b('0x4'),'port':0x18eb});var socket=require(_0x5a0b('0x5'))(new Redis(config[_0x5a0b('0x3')]));require(_0x5a0b('0x6'))[_0x5a0b('0x7')](socket);function respondWithResult(_0x2b62e7,_0x1c8a0c){_0x1c8a0c=_0x1c8a0c||0xc8;return function(_0x3e551c){if(_0x3e551c){return _0x2b62e7[_0x5a0b('0x8')](_0x1c8a0c)[_0x5a0b('0x9')](_0x3e551c);}};}function respondWithFilteredResult(_0x47dbec,_0x132a76){return function(_0x74459){if(_0x74459){var _0x3b8f6f=typeof _0x132a76[_0x5a0b('0xa')]==='undefined'&&typeof _0x132a76[_0x5a0b('0xb')]===_0x5a0b('0xc');var _0x1c049b=_0x74459[_0x5a0b('0xd')];var _0x41489b=_0x3b8f6f?0x0:_0x132a76['offset'];var _0x472235=_0x3b8f6f?_0x74459[_0x5a0b('0xd')]:_0x132a76[_0x5a0b('0xa')]+_0x132a76['limit'];var _0x4f3d4d;if(_0x472235>=_0x1c049b){_0x472235=_0x1c049b;_0x4f3d4d=0xc8;}else{_0x4f3d4d=0xce;}_0x47dbec[_0x5a0b('0x8')](_0x4f3d4d);return _0x47dbec[_0x5a0b('0xe')]('Content-Range',_0x41489b+'-'+_0x472235+'/'+_0x1c049b)['json'](_0x74459);}return null;};}function saveUpdates(_0x1cbf1a){return function(_0x196c85){if(_0x196c85){return _0x196c85[_0x5a0b('0xf')](_0x1cbf1a)['then'](function(_0x448a4f){return _0x448a4f;});}return null;};}function removeEntity(_0x2a83b0){return function(_0x244b5b){if(_0x244b5b){return _0x244b5b[_0x5a0b('0x10')]()[_0x5a0b('0x11')](function(){var _0x475e12=_0x244b5b['get']({'plain':!![]});var _0x340a7e=_0x5a0b('0x12');return db[_0x5a0b('0x13')]['destroy']({'where':{'type':_0x340a7e,'resourceId':_0x475e12['id']}})[_0x5a0b('0x11')](function(){return _0x244b5b;});})[_0x5a0b('0x11')](function(){var _0x2ea6ce=new Redis(config[_0x5a0b('0x3')]);_0x2ea6ce[_0x5a0b('0x14')](_0x5a0b('0x15'),JSON[_0x5a0b('0x16')]({'id':_0x244b5b['id'],'deleted':!![]}));})['then'](function(){_0x2a83b0[_0x5a0b('0x8')](0xcc)[_0x5a0b('0x17')]();});}};}function handleEntityNotFound(_0x495df4){return function(_0x2e9ae5){if(!_0x2e9ae5){_0x495df4['sendStatus'](0x194);}return _0x2e9ae5;};}function handleError(_0x366ec2,_0x239222){_0x239222=_0x239222||0x1f4;return function(_0x71a813){logger[_0x5a0b('0x18')](_0x71a813[_0x5a0b('0x19')]);if(_0x71a813[_0x5a0b('0x1a')]){delete _0x71a813[_0x5a0b('0x1a')];}_0x366ec2[_0x5a0b('0x8')](_0x239222)[_0x5a0b('0x1b')](_0x71a813);};}exports[_0x5a0b('0x1c')]=function(_0x2c1df3,_0x5a16a6){var _0x17a108={},_0x93c323={},_0x368c9b={'count':0x0,'rows':[]};var _0x201331=_[_0x5a0b('0x1d')](db[_0x5a0b('0x1e')][_0x5a0b('0x1f')],function(_0x465b42){return{'name':_0x465b42[_0x5a0b('0x20')],'type':_0x465b42[_0x5a0b('0x21')]['key']};});_0x93c323['model']=_[_0x5a0b('0x1d')](_0x201331,_0x5a0b('0x1a'));_0x93c323[_0x5a0b('0x22')]=_['keys'](_0x2c1df3[_0x5a0b('0x22')]);_0x93c323[_0x5a0b('0x23')]=_[_0x5a0b('0x24')](_0x93c323['model'],_0x93c323['query']);_0x17a108[_0x5a0b('0x25')]=_[_0x5a0b('0x24')](_0x93c323[_0x5a0b('0x26')],qs[_0x5a0b('0x27')](_0x2c1df3[_0x5a0b('0x22')]['fields']));_0x17a108[_0x5a0b('0x25')]=_0x17a108[_0x5a0b('0x25')]['length']?_0x17a108[_0x5a0b('0x25')]:_0x93c323[_0x5a0b('0x26')];if(!_0x2c1df3[_0x5a0b('0x22')][_0x5a0b('0x28')](_0x5a0b('0x29'))){_0x17a108[_0x5a0b('0xb')]=qs[_0x5a0b('0xb')](_0x2c1df3[_0x5a0b('0x22')][_0x5a0b('0xb')]);_0x17a108['offset']=qs['offset'](_0x2c1df3[_0x5a0b('0x22')][_0x5a0b('0xa')]);}_0x17a108[_0x5a0b('0x2a')]=qs['sort'](_0x2c1df3['query'][_0x5a0b('0x2b')]);_0x17a108['where']=qs[_0x5a0b('0x23')](_[_0x5a0b('0x2c')](_0x2c1df3[_0x5a0b('0x22')],_0x93c323[_0x5a0b('0x23')]),_0x201331);if(_0x2c1df3[_0x5a0b('0x22')][_0x5a0b('0x2d')]){_0x17a108['where']=_[_0x5a0b('0x2e')](_0x17a108[_0x5a0b('0x2f')],{'$or':_[_0x5a0b('0x1d')](_0x201331,function(_0x4fbc2e){if(_0x4fbc2e['type']!==_0x5a0b('0x30')){var _0x1a81f9={};_0x1a81f9[_0x4fbc2e[_0x5a0b('0x1a')]]={'$like':'%'+_0x2c1df3[_0x5a0b('0x22')][_0x5a0b('0x2d')]+'%'};return _0x1a81f9;}})});}_0x17a108=_[_0x5a0b('0x2e')]({},_0x17a108,_0x2c1df3[_0x5a0b('0x31')]);var _0x232f17={'where':_0x17a108['where']};return db[_0x5a0b('0x1e')][_0x5a0b('0xd')](_0x232f17)['then'](function(_0x1913b4){_0x368c9b['count']=_0x1913b4;if(_0x2c1df3[_0x5a0b('0x22')]['includeAll']){_0x17a108['include']=[{'all':!![]}];}return db[_0x5a0b('0x1e')][_0x5a0b('0x32')](_0x17a108);})[_0x5a0b('0x11')](function(_0x4fa53e){_0x368c9b['rows']=_0x4fa53e;return _0x368c9b;})[_0x5a0b('0x11')](respondWithFilteredResult(_0x5a16a6,_0x17a108))['catch'](handleError(_0x5a16a6,null));};exports['show']=function(_0x2aa99e,_0x2d5941){var _0x260f15={'raw':![],'where':{'id':_0x2aa99e[_0x5a0b('0x33')]['id']}},_0x138cf7={};_0x138cf7['model']=_[_0x5a0b('0x34')](db[_0x5a0b('0x1e')][_0x5a0b('0x1f')]);_0x138cf7['query']=_[_0x5a0b('0x34')](_0x2aa99e[_0x5a0b('0x22')]);_0x138cf7[_0x5a0b('0x23')]=_[_0x5a0b('0x24')](_0x138cf7['model'],_0x138cf7['query']);_0x260f15[_0x5a0b('0x25')]=_['intersection'](_0x138cf7[_0x5a0b('0x26')],qs['fields'](_0x2aa99e[_0x5a0b('0x22')]['fields']));_0x260f15[_0x5a0b('0x25')]=_0x260f15['attributes']['length']?_0x260f15[_0x5a0b('0x25')]:_0x138cf7['model'];if(_0x2aa99e[_0x5a0b('0x22')][_0x5a0b('0x35')]){_0x260f15[_0x5a0b('0x36')]=[{'all':!![]}];}_0x260f15=_[_0x5a0b('0x2e')]({},_0x260f15,_0x2aa99e['options']);return db[_0x5a0b('0x1e')][_0x5a0b('0x37')](_0x260f15)[_0x5a0b('0x11')](handleEntityNotFound(_0x2d5941,null))[_0x5a0b('0x11')](respondWithResult(_0x2d5941,null))[_0x5a0b('0x38')](handleError(_0x2d5941,null));};exports['create']=function(_0x40b91d,_0x560aff){return db[_0x5a0b('0x1e')][_0x5a0b('0x39')](_0x40b91d['body'],{})[_0x5a0b('0x11')](function(_0x1a1862){var _0x52eebd=_0x40b91d[_0x5a0b('0x3a')][_0x5a0b('0x3b')]({'plain':!![]});if(!_0x52eebd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52eebd['role']==='user'){var _0x51b5a4=_0x1a1862['get']({'plain':!![]});var _0x1c6c9d=_0x5a0b('0x12');return db[_0x5a0b('0x3c')][_0x5a0b('0x37')]({'where':{'name':_0x1c6c9d,'userProfileId':_0x52eebd[_0x5a0b('0x3d')]},'raw':!![]})[_0x5a0b('0x11')](function(_0x11e05c){if(_0x11e05c&&_0x11e05c['autoAssociation']===0x0){return db[_0x5a0b('0x13')][_0x5a0b('0x39')]({'name':_0x51b5a4[_0x5a0b('0x1a')],'resourceId':_0x51b5a4['id'],'type':_0x11e05c[_0x5a0b('0x1a')],'sectionId':_0x11e05c['id']},{})[_0x5a0b('0x11')](function(){return _0x1a1862;});}else{return _0x1a1862;}})[_0x5a0b('0x38')](function(_0x5c5674){logger[_0x5a0b('0x18')](_0x5a0b('0x3e'),_0x5c5674);throw _0x5c5674;});}return _0x1a1862;})[_0x5a0b('0x11')](respondWithResult(_0x560aff,0xc9))[_0x5a0b('0x38')](handleError(_0x560aff,null));};exports[_0x5a0b('0xf')]=function(_0x4625c6,_0x111e9a){if(_0x4625c6[_0x5a0b('0x3f')]['id']){delete _0x4625c6['body']['id'];}return db[_0x5a0b('0x1e')][_0x5a0b('0x37')]({'where':{'id':_0x4625c6[_0x5a0b('0x33')]['id']}})[_0x5a0b('0x11')](handleEntityNotFound(_0x111e9a,null))['then'](saveUpdates(_0x4625c6[_0x5a0b('0x3f')],null))[_0x5a0b('0x11')](function(_0x2246b9){if(!_0x2246b9)return;var _0x24c9a7=_0x2246b9[_0x5a0b('0x3b')]({'plain':!![]});return _0x24c9a7;})[_0x5a0b('0x11')](function(_0x5e57b8){var _0x54ff9c=new Redis(config[_0x5a0b('0x3')]);_0x54ff9c['publish']('agi',JSON[_0x5a0b('0x16')](_[_0x5a0b('0x2c')](_0x5e57b8,['id',_0x5a0b('0x1a'),_0x5a0b('0x40')])));return _0x5e57b8;})[_0x5a0b('0x11')](respondWithResult(_0x111e9a,null))[_0x5a0b('0x38')](handleError(_0x111e9a,null));};exports[_0x5a0b('0x10')]=function(_0x5c4de2,_0x38eca2){return db[_0x5a0b('0x1e')]['find']({'where':{'id':_0x5c4de2[_0x5a0b('0x33')]['id']}})['then'](handleEntityNotFound(_0x38eca2,null))[_0x5a0b('0x11')](removeEntity(_0x38eca2,null))[_0x5a0b('0x38')](handleError(_0x38eca2,null));};
\ No newline at end of file
index 4077a03..e340884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cd=['events','SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x285824,_0x3da647){var _0x311d7e=function(_0x2f3de0){while(--_0x2f3de0){_0x285824['push'](_0x285824['shift']());}};_0x311d7e(++_0x3da647);}(_0xe2cd,0x120));var _0xde2c=function(_0x592502,_0x1c4de8){_0x592502=_0x592502-0x0;var _0x5ebb4b=_0xe2cd[_0x592502];return _0x5ebb4b;};'use strict';var EventEmitter=require(_0xde2c('0x0'));var SquareProject=require('../../mysqldb')['db'][_0xde2c('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xde2c('0x2')](0x0);var events={'afterCreate':_0xde2c('0x3'),'afterUpdate':_0xde2c('0x4'),'afterDestroy':_0xde2c('0x5')};function emitEvent(_0x549b76){return function(_0xd90788,_0x418b5c,_0x243068){SquareProjectEvents[_0xde2c('0x6')](_0x549b76+':'+_0xd90788['id'],_0xd90788);SquareProjectEvents['emit'](_0x549b76,_0xd90788);_0x243068(null);};}for(var e in events){if(events[_0xde2c('0x7')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0xde2c('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0x3c7b=['exports','../../mysqldb','SquareProject','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x2046e8,_0x233be4){var _0x33c3ca=function(_0x48473a){while(--_0x48473a){_0x2046e8['push'](_0x2046e8['shift']());}};_0x33c3ca(++_0x233be4);}(_0x3c7b,0xeb));var _0xb3c7=function(_0x51a403,_0x3ca1c8){_0x51a403=_0x51a403-0x0;var _0x13554c=_0x3c7b[_0x51a403];return _0x13554c;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0xb3c7('0x0'))['db'][_0xb3c7('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb3c7('0x2'),'afterUpdate':_0xb3c7('0x3'),'afterDestroy':_0xb3c7('0x4')};function emitEvent(_0x1cbcb1){return function(_0x1da021,_0x42ed72,_0x5baa5a){SquareProjectEvents[_0xb3c7('0x5')](_0x1cbcb1+':'+_0x1da021['id'],_0x1da021);SquareProjectEvents['emit'](_0x1cbcb1,_0x1da021);_0x5baa5a(null);};}for(var e in events){if(events[_0xb3c7('0x6')](e)){var event=events[e];SquareProject[_0xb3c7('0x7')](e,emitEvent(event));}}module[_0xb3c7('0x8')]=SquareProjectEvents;
\ No newline at end of file
index ef60b0f..9a4e7a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8073=['production','publishedAt','lodash','../../config/logger','api','moment','request-promise','path','../../config/environment','./squareProject.attributes','exports','define','SquareProject','changed','savedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x49182a,_0xcd2046){var _0x1dbbd4=function(_0x31cbcd){while(--_0x31cbcd){_0x49182a['push'](_0x49182a['shift']());}};_0x1dbbd4(++_0xcd2046);}(_0x8073,0xce));var _0x3807=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x8073[_0x334841];return _0x5beb4b;};'use strict';var _=require(_0x3807('0x0'));var util=require('util');var logger=require(_0x3807('0x1'))(_0x3807('0x2'));var moment=require(_0x3807('0x3'));var BPromise=require('bluebird');var rp=require(_0x3807('0x4'));var fs=require('fs');var path=require(_0x3807('0x5'));var rimraf=require('rimraf');var config=require(_0x3807('0x6'));var attributes=require(_0x3807('0x7'));module[_0x3807('0x8')]=function(_0x125dc1,_0x19af6d){return _0x125dc1[_0x3807('0x9')](_0x3807('0xa'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x122d49,_0x129ab8,_0x3d5e8b){if(_0x122d49[_0x3807('0xb')]('preproduction')){_0x122d49[_0x3807('0xc')]=moment()[_0x3807('0xd')](_0x3807('0xe'));}if(_0x122d49[_0x3807('0xb')](_0x3807('0xf'))){_0x122d49[_0x3807('0x10')]=moment()[_0x3807('0xd')](_0x3807('0xe'));}_0x3d5e8b(null,_0x122d49);}}});};
\ No newline at end of file
+var _0x8ad7=['../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','changed','preproduction','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x30dd51,_0x340cbf){var _0x619e1=function(_0x4b5c13){while(--_0x4b5c13){_0x30dd51['push'](_0x30dd51['shift']());}};_0x619e1(++_0x340cbf);}(_0x8ad7,0x175));var _0x78ad=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x8ad7[_0x4a9fb1];return _0x348672;};'use strict';var _=require('lodash');var util=require(_0x78ad('0x0'));var logger=require(_0x78ad('0x1'))(_0x78ad('0x2'));var moment=require(_0x78ad('0x3'));var BPromise=require('bluebird');var rp=require(_0x78ad('0x4'));var fs=require('fs');var path=require(_0x78ad('0x5'));var rimraf=require(_0x78ad('0x6'));var config=require(_0x78ad('0x7'));var attributes=require(_0x78ad('0x8'));module[_0x78ad('0x9')]=function(_0x191b20,_0x5213bf){return _0x191b20[_0x78ad('0xa')](_0x78ad('0xb'),attributes,{'tableName':_0x78ad('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x41840a,_0x112496,_0x257c0b){if(_0x41840a[_0x78ad('0xd')](_0x78ad('0xe'))){_0x41840a['savedAt']=moment()['format'](_0x78ad('0xf'));}if(_0x41840a[_0x78ad('0xd')](_0x78ad('0x10'))){_0x41840a[_0x78ad('0x11')]=moment()[_0x78ad('0x12')](_0x78ad('0xf'));}_0x257c0b(null,_0x41840a);}}});};
\ No newline at end of file
index 33494bf..d7ac08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf342=['stringify','message','error','ShowSquareProject','find','raw','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','options','where','attributes','map','include','model','then','info','debug'];(function(_0x128fcd,_0x59568f){var _0x4811ad=function(_0x12643a){while(--_0x12643a){_0x128fcd['push'](_0x128fcd['shift']());}};_0x4811ad(++_0x59568f);}(_0xf342,0x10c));var _0x2f34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf342[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2f34('0x0'));var Redis=require(_0x2f34('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x2f34('0x2'))(_0x2f34('0x3'));var config=require(_0x2f34('0x4'));config[_0x2f34('0x5')]=_[_0x2f34('0x6')](config['redis'],{'host':_0x2f34('0x7'),'port':0x18eb});var socket=require(_0x2f34('0x8'))(new Redis(config['redis']));require(_0x2f34('0x9'))[_0x2f34('0xa')](socket);exports[_0x2f34('0xb')]=function(_0x178a7b){var _0x230bc1=this;return new Promise(function(_0x4fc0e4,_0x2e2758){return db[_0x2f34('0xc')]['findAll']({'raw':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')]['raw']===undefined?!![]:![]:!![],'where':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')][_0x2f34('0xe')]||null:null,'attributes':_0x178a7b[_0x2f34('0xd')]?_0x178a7b['options'][_0x2f34('0xf')]||null:null,'limit':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')]['limit']||null:null,'include':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')]['include']?_[_0x2f34('0x10')](_0x178a7b[_0x2f34('0xd')][_0x2f34('0x11')],function(_0xd774b7){return{'model':db[_0xd774b7[_0x2f34('0x12')]],'as':_0xd774b7['as'],'attributes':_0xd774b7['attributes'],'include':_0xd774b7[_0x2f34('0x11')]?_[_0x2f34('0x10')](_0xd774b7['include'],function(_0x9526d1){return{'model':db[_0x9526d1['model']],'as':_0x9526d1['as'],'attributes':_0x9526d1[_0x2f34('0xf')],'include':_0x9526d1[_0x2f34('0x11')]?_[_0x2f34('0x10')](_0x9526d1[_0x2f34('0x11')],function(_0x3bfc62){return{'model':db[_0x3bfc62['model']],'as':_0x3bfc62['as'],'attributes':_0x3bfc62['attributes']};}):[]};}):[]};}):[]:[]})[_0x2f34('0x13')](function(_0x14c781){logger[_0x2f34('0x14')](_0x2f34('0xb'),_0x178a7b);logger[_0x2f34('0x15')](_0x2f34('0xb'),_0x178a7b,JSON[_0x2f34('0x16')](_0x14c781));_0x4fc0e4(_0x14c781);})['catch'](function(_0x246f7f){logger['error'](_0x2f34('0xb'),_0x246f7f[_0x2f34('0x17')],_0x178a7b);_0x2e2758(_0x230bc1[_0x2f34('0x18')](0x1f4,_0x246f7f[_0x2f34('0x17')]));});});};exports[_0x2f34('0x19')]=function(_0x26ba0f){var _0x5f29c2=this;return new Promise(function(_0x25b56a,_0x38c588){return db[_0x2f34('0xc')][_0x2f34('0x1a')]({'raw':_0x26ba0f[_0x2f34('0xd')]?_0x26ba0f[_0x2f34('0xd')][_0x2f34('0x1b')]===undefined?!![]:![]:!![],'where':_0x26ba0f[_0x2f34('0xd')]?_0x26ba0f['options'][_0x2f34('0xe')]||null:null,'attributes':_0x26ba0f['options']?_0x26ba0f[_0x2f34('0xd')]['attributes']||null:null,'include':_0x26ba0f[_0x2f34('0xd')]?_0x26ba0f[_0x2f34('0xd')][_0x2f34('0x11')]?_['map'](_0x26ba0f[_0x2f34('0xd')][_0x2f34('0x11')],function(_0x65aeaf){return{'model':db[_0x65aeaf['model']],'as':_0x65aeaf['as'],'attributes':_0x65aeaf[_0x2f34('0xf')],'include':_0x65aeaf[_0x2f34('0x11')]?_[_0x2f34('0x10')](_0x65aeaf[_0x2f34('0x11')],function(_0x27a29f){return{'model':db[_0x27a29f['model']],'as':_0x27a29f['as'],'attributes':_0x27a29f[_0x2f34('0xf')],'include':_0x27a29f['include']?_[_0x2f34('0x10')](_0x27a29f[_0x2f34('0x11')],function(_0xc8863d){return{'model':db[_0xc8863d['model']],'as':_0xc8863d['as'],'attributes':_0xc8863d[_0x2f34('0xf')]};}):[]};}):[]};}):[]:[]})[_0x2f34('0x13')](function(_0x341869){logger['info'](_0x2f34('0x19'),_0x26ba0f);logger[_0x2f34('0x15')](_0x2f34('0x19'),_0x26ba0f,JSON[_0x2f34('0x16')](_0x341869));_0x25b56a(_0x341869);})[_0x2f34('0x1c')](function(_0x5f12af){logger[_0x2f34('0x18')](_0x2f34('0x19'),_0x5f12af[_0x2f34('0x17')],_0x26ba0f);_0x38c588(_0x5f29c2['error'](0x1f4,_0x5f12af[_0x2f34('0x17')]));});});};
\ No newline at end of file
+var _0xc022=['GetSquareProjects','SquareProject','options','raw','where','limit','include','map','attributes','model','then','info','stringify','catch','error','message','ShowSquareProject','find','debug','ioredis','../../config/logger','rpc','redis','defaults','socket.io-emitter','./squareProject.socket'];(function(_0x62062b,_0x83335e){var _0x3e722c=function(_0x4bcb9b){while(--_0x4bcb9b){_0x62062b['push'](_0x62062b['shift']());}};_0x3e722c(++_0x83335e);}(_0xc022,0xe3));var _0x2c02=function(_0x31f207,_0x33353a){_0x31f207=_0x31f207-0x0;var _0x1089ef=_0xc022[_0x31f207];return _0x1089ef;};'use strict';var _=require('lodash');var Redis=require(_0x2c02('0x0'));var db=require('../../mysqldb')['db'];var logger=require(_0x2c02('0x1'))(_0x2c02('0x2'));var config=require('../../config/environment');config[_0x2c02('0x3')]=_[_0x2c02('0x4')](config[_0x2c02('0x3')],{'host':'localhost','port':0x18eb});var socket=require(_0x2c02('0x5'))(new Redis(config['redis']));require(_0x2c02('0x6'))['register'](socket);exports[_0x2c02('0x7')]=function(_0x1e1de3){var _0x9696fe=this;return new Promise(function(_0x18e607,_0x10d752){return db[_0x2c02('0x8')]['findAll']({'raw':_0x1e1de3[_0x2c02('0x9')]?_0x1e1de3[_0x2c02('0x9')][_0x2c02('0xa')]===undefined?!![]:![]:!![],'where':_0x1e1de3[_0x2c02('0x9')]?_0x1e1de3[_0x2c02('0x9')][_0x2c02('0xb')]||null:null,'attributes':_0x1e1de3[_0x2c02('0x9')]?_0x1e1de3[_0x2c02('0x9')]['attributes']||null:null,'limit':_0x1e1de3[_0x2c02('0x9')]?_0x1e1de3['options'][_0x2c02('0xc')]||null:null,'include':_0x1e1de3['options']?_0x1e1de3[_0x2c02('0x9')][_0x2c02('0xd')]?_[_0x2c02('0xe')](_0x1e1de3[_0x2c02('0x9')][_0x2c02('0xd')],function(_0x1f85c3){return{'model':db[_0x1f85c3['model']],'as':_0x1f85c3['as'],'attributes':_0x1f85c3[_0x2c02('0xf')],'include':_0x1f85c3[_0x2c02('0xd')]?_['map'](_0x1f85c3[_0x2c02('0xd')],function(_0x1c4ff7){return{'model':db[_0x1c4ff7['model']],'as':_0x1c4ff7['as'],'attributes':_0x1c4ff7[_0x2c02('0xf')],'include':_0x1c4ff7[_0x2c02('0xd')]?_[_0x2c02('0xe')](_0x1c4ff7['include'],function(_0x30e18b){return{'model':db[_0x30e18b[_0x2c02('0x10')]],'as':_0x30e18b['as'],'attributes':_0x30e18b[_0x2c02('0xf')]};}):[]};}):[]};}):[]:[]})[_0x2c02('0x11')](function(_0x1c8f2c){logger[_0x2c02('0x12')](_0x2c02('0x7'),_0x1e1de3);logger['debug']('GetSquareProjects',_0x1e1de3,JSON[_0x2c02('0x13')](_0x1c8f2c));_0x18e607(_0x1c8f2c);})[_0x2c02('0x14')](function(_0x298b7b){logger[_0x2c02('0x15')](_0x2c02('0x7'),_0x298b7b['message'],_0x1e1de3);_0x10d752(_0x9696fe[_0x2c02('0x15')](0x1f4,_0x298b7b[_0x2c02('0x16')]));});});};exports[_0x2c02('0x17')]=function(_0x4b72e0){var _0x4e66ca=this;return new Promise(function(_0x2cab56,_0x3f1183){return db[_0x2c02('0x8')][_0x2c02('0x18')]({'raw':_0x4b72e0['options']?_0x4b72e0[_0x2c02('0x9')][_0x2c02('0xa')]===undefined?!![]:![]:!![],'where':_0x4b72e0['options']?_0x4b72e0[_0x2c02('0x9')][_0x2c02('0xb')]||null:null,'attributes':_0x4b72e0[_0x2c02('0x9')]?_0x4b72e0[_0x2c02('0x9')][_0x2c02('0xf')]||null:null,'include':_0x4b72e0[_0x2c02('0x9')]?_0x4b72e0[_0x2c02('0x9')]['include']?_[_0x2c02('0xe')](_0x4b72e0[_0x2c02('0x9')]['include'],function(_0x16bc0a){return{'model':db[_0x16bc0a[_0x2c02('0x10')]],'as':_0x16bc0a['as'],'attributes':_0x16bc0a[_0x2c02('0xf')],'include':_0x16bc0a[_0x2c02('0xd')]?_[_0x2c02('0xe')](_0x16bc0a[_0x2c02('0xd')],function(_0xba715d){return{'model':db[_0xba715d[_0x2c02('0x10')]],'as':_0xba715d['as'],'attributes':_0xba715d[_0x2c02('0xf')],'include':_0xba715d[_0x2c02('0xd')]?_[_0x2c02('0xe')](_0xba715d[_0x2c02('0xd')],function(_0x515f41){return{'model':db[_0x515f41[_0x2c02('0x10')]],'as':_0x515f41['as'],'attributes':_0x515f41['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x17a38d){logger[_0x2c02('0x12')](_0x2c02('0x17'),_0x4b72e0);logger[_0x2c02('0x19')](_0x2c02('0x17'),_0x4b72e0,JSON[_0x2c02('0x13')](_0x17a38d));_0x2cab56(_0x17a38d);})[_0x2c02('0x14')](function(_0x50e587){logger[_0x2c02('0x15')]('ShowSquareProject',_0x50e587['message'],_0x4b72e0);_0x3f1183(_0x4e66ca['error'](0x1f4,_0x50e587[_0x2c02('0x16')]));});});};
\ No newline at end of file
index 3a169d4..7d973f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cbd=['length','squareProject:','./squareProject.events','save','remove','update','emit','register'];(function(_0x45b374,_0x20dccb){var _0x24fc74=function(_0x357eaf){while(--_0x357eaf){_0x45b374['push'](_0x45b374['shift']());}};_0x24fc74(++_0x20dccb);}(_0x3cbd,0xfa));var _0xd3cb=function(_0x26a44e,_0x18c43f){_0x26a44e=_0x26a44e-0x0;var _0x566fc4=_0x3cbd[_0x26a44e];return _0x566fc4;};'use strict';var SquareProjectEvents=require(_0xd3cb('0x0'));var events=[_0xd3cb('0x1'),_0xd3cb('0x2'),_0xd3cb('0x3')];function createListener(_0x4b2725,_0x57f5ae){return function(_0x3c630f){_0x57f5ae[_0xd3cb('0x4')](_0x4b2725,_0x3c630f);};}function removeListener(_0x39ad76,_0x4f900f){return function(){SquareProjectEvents['removeListener'](_0x39ad76,_0x4f900f);};}exports[_0xd3cb('0x5')]=function(_0x4bf27c){for(var _0x56212d=0x0,_0x5659c8=events[_0xd3cb('0x6')];_0x56212d<_0x5659c8;_0x56212d++){var _0x49ab05=events[_0x56212d];var _0x4920bb=createListener(_0xd3cb('0x7')+_0x49ab05,_0x4bf27c);SquareProjectEvents['on'](_0x49ab05,_0x4920bb);}};
\ No newline at end of file
+var _0x4206=['squareProject:','./squareProject.events','update','emit','removeListener','register','length'];(function(_0xac1d73,_0x1d3a80){var _0x1652e0=function(_0x3ec034){while(--_0x3ec034){_0xac1d73['push'](_0xac1d73['shift']());}};_0x1652e0(++_0x1d3a80);}(_0x4206,0x166));var _0x6420=function(_0xe9eb3d,_0x187f37){_0xe9eb3d=_0xe9eb3d-0x0;var _0x411a83=_0x4206[_0xe9eb3d];return _0x411a83;};'use strict';var SquareProjectEvents=require(_0x6420('0x0'));var events=['save','remove',_0x6420('0x1')];function createListener(_0x101b6e,_0x27a515){return function(_0x1b3c34){_0x27a515[_0x6420('0x2')](_0x101b6e,_0x1b3c34);};}function removeListener(_0x4419d2,_0x39108b){return function(){SquareProjectEvents[_0x6420('0x3')](_0x4419d2,_0x39108b);};}exports[_0x6420('0x4')]=function(_0x2304b6){for(var _0x1c098b=0x0,_0x369bb3=events[_0x6420('0x5')];_0x1c098b<_0x369bb3;_0x1c098b++){var _0x30d77e=events[_0x1c098b];var _0x2df9de=createListener(_0x6420('0x6')+_0x30d77e,_0x2304b6);SquareProjectEvents['on'](_0x30d77e,_0x2df9de);}};
\ No newline at end of file
index 64b32db..891927d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./squareRecording.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put'];(function(_0x5dfbdf,_0x413174){var _0x2b2ef2=function(_0x36e6fe){while(--_0x36e6fe){_0x5dfbdf['push'](_0x5dfbdf['shift']());}};_0x2b2ef2(++_0x413174);}(_0x1cb9,0x14e));var _0x91cb=function(_0x17bc62,_0x4134d0){_0x17bc62=_0x17bc62-0x0;var _0x3e0739=_0x1cb9[_0x17bc62];return _0x3e0739;};'use strict';var multer=require(_0x91cb('0x0'));var util=require('util');var path=require(_0x91cb('0x1'));var timeout=require(_0x91cb('0x2'));var express=require(_0x91cb('0x3'));var router=express[_0x91cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91cb('0x5'));var interaction=require(_0x91cb('0x6'));var config=require('../../config/environment');var controller=require(_0x91cb('0x7'));router[_0x91cb('0x8')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0xa')]);router[_0x91cb('0x8')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0xc')]);router['get'](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0xe')]);router[_0x91cb('0xf')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0x10')]);router[_0x91cb('0x11')](_0x91cb('0xb'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x12')]);router[_0x91cb('0x13')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0x14')]);module[_0x91cb('0x15')]=router;
\ No newline at end of file
+var _0x1261=['isAuthenticated','show','/:id/download','post','create','/:id','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','index','get'];(function(_0x4bc25c,_0x16ef0a){var _0x19803b=function(_0x1b6329){while(--_0x1b6329){_0x4bc25c['push'](_0x4bc25c['shift']());}};_0x19803b(++_0x16ef0a);}(_0x1261,0x144));var _0x1126=function(_0x1c6ef2,_0x8d926a){_0x1c6ef2=_0x1c6ef2-0x0;var _0x404b8c=_0x1261[_0x1c6ef2];return _0x404b8c;};'use strict';var multer=require('multer');var util=require(_0x1126('0x0'));var path=require(_0x1126('0x1'));var timeout=require(_0x1126('0x2'));var express=require(_0x1126('0x3'));var router=express[_0x1126('0x4')]();var fs_extra=require(_0x1126('0x5'));var auth=require(_0x1126('0x6'));var interaction=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var controller=require(_0x1126('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1126('0xa')]);router[_0x1126('0xb')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0xd')]);router[_0x1126('0xb')](_0x1126('0xe'),auth[_0x1126('0xc')](),controller['download']);router[_0x1126('0xf')]('/',auth[_0x1126('0xc')](),controller[_0x1126('0x10')]);router['put'](_0x1126('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x1126('0x12')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0x13')]);module[_0x1126('0x14')]=router;
\ No newline at end of file
index c2ab77f..2995fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['substring','lastIndexOf','exports','STRING','VIRTUAL','getDataValue','savePath'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0x2eb2,0x19f));var _0x22eb=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x2eb2[_0x2d7f0e];return _0x110b07;};'use strict';var Sequelize=require('sequelize');module[_0x22eb('0x0')]={'uniqueid':{'type':Sequelize[_0x22eb('0x1')]},'callerid':{'type':Sequelize[_0x22eb('0x1')]},'calleridname':{'type':Sequelize[_0x22eb('0x1')]},'context':{'type':Sequelize[_0x22eb('0x1')]},'extension':{'type':Sequelize[_0x22eb('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x22eb('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0x22eb('0x1')]},'filename':{'type':Sequelize[_0x22eb('0x1')]},'savePath':{'type':Sequelize[_0x22eb('0x1')]},'format':{'type':Sequelize[_0x22eb('0x2')],'get':function(){var _0x4539d0='';var _0x396806=this[_0x22eb('0x3')](_0x22eb('0x4'));if(_0x396806){_0x4539d0=_0x396806[_0x22eb('0x5')](_0x396806[_0x22eb('0x6')]('.'));}return _0x4539d0;}}};
\ No newline at end of file
+var _0x8958=['savePath','substring','lastIndexOf','exports','STRING','VIRTUAL'];(function(_0x305bbf,_0x5647b3){var _0x4ed772=function(_0x3315ed){while(--_0x3315ed){_0x305bbf['push'](_0x305bbf['shift']());}};_0x4ed772(++_0x5647b3);}(_0x8958,0x93));var _0x8895=function(_0x5209e0,_0x1f8bb0){_0x5209e0=_0x5209e0-0x0;var _0x55d5cc=_0x8958[_0x5209e0];return _0x55d5cc;};'use strict';var Sequelize=require('sequelize');module[_0x8895('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x8895('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8895('0x1')]},'dnid':{'type':Sequelize[_0x8895('0x1')]},'projectName':{'type':Sequelize[_0x8895('0x1')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8895('0x1')]},'savePath':{'type':Sequelize[_0x8895('0x1')]},'format':{'type':Sequelize[_0x8895('0x2')],'get':function(){var _0x40cec6='';var _0x33013a=this['getDataValue'](_0x8895('0x3'));if(_0x33013a){_0x40cec6=_0x33013a[_0x8895('0x4')](_0x33013a[_0x8895('0x5')]('.'));}return _0x40cec6;}}};
\ No newline at end of file
index 24a72fc..5dc1e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x311d=['query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','update','download','uniqueid','savePath','filename','format','%s.cypher','existsSync','secrets','Sequelize','extname','unlink','message','SquareRecording\x20not\x20found','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','File:\x20\x22','unlinkSync','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','SquareRecording','rawAttributes','type','key','keys'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x311d,0x14c));var _0xd311=function(_0x45bfa9,_0x394f33){_0x45bfa9=_0x45bfa9-0x0;var _0x1978b2=_0x311d[_0x45bfa9];return _0x1978b2;};'use strict';var emlformat=require(_0xd311('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd311('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd311('0x2'));var moment=require(_0xd311('0x3'));var BPromise=require(_0xd311('0x4'));var Mustache=require(_0xd311('0x5'));var util=require(_0xd311('0x6'));var path=require(_0xd311('0x7'));var sox=require('sox');var csv=require(_0xd311('0x8'));var ejs=require(_0xd311('0x9'));var fs=require('fs');var fs_extra=require(_0xd311('0xa'));var _=require(_0xd311('0xb'));var squel=require(_0xd311('0xc'));var crypto=require(_0xd311('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd311('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd311('0xf'));var qs=require(_0xd311('0x10'));var as=require(_0xd311('0x11'));var hardwareService=require(_0xd311('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xd311('0x13'));var config=require(_0xd311('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd311('0x15'))['db'];function respondWithStatusCode(_0x5952da,_0x269698){_0x269698=_0x269698||0xcc;return function(_0x205d02){if(_0x205d02){return _0x5952da[_0xd311('0x16')](_0x269698);}return _0x5952da[_0xd311('0x17')](_0x269698)[_0xd311('0x18')]();};}function respondWithResult(_0x246f9b,_0x55c260){_0x55c260=_0x55c260||0xc8;return function(_0x229a9e){if(_0x229a9e){return _0x246f9b[_0xd311('0x17')](_0x55c260)[_0xd311('0x19')](_0x229a9e);}};}function respondWithFilteredResult(_0x4a6af4,_0x105a68){return function(_0x294ffa){if(_0x294ffa){var _0x1cdca4=typeof _0x105a68[_0xd311('0x1a')]==='undefined'&&typeof _0x105a68[_0xd311('0x1b')]===_0xd311('0x1c');var _0x286448=_0x294ffa[_0xd311('0x1d')];var _0x4cb8bc=_0x1cdca4?0x0:_0x105a68[_0xd311('0x1a')];var _0x4a20d4=_0x1cdca4?_0x294ffa[_0xd311('0x1d')]:_0x105a68[_0xd311('0x1a')]+_0x105a68[_0xd311('0x1b')];var _0x2c9a5b;if(_0x4a20d4>=_0x286448){_0x4a20d4=_0x286448;_0x2c9a5b=0xc8;}else{_0x2c9a5b=0xce;}_0x4a6af4[_0xd311('0x17')](_0x2c9a5b);return _0x4a6af4[_0xd311('0x1e')](_0xd311('0x1f'),_0x4cb8bc+'-'+_0x4a20d4+'/'+_0x286448)[_0xd311('0x19')](_0x294ffa);}return null;};}function patchUpdates(_0x230ab0){return function(_0x47aeb6){try{jsonpatch[_0xd311('0x20')](_0x47aeb6,_0x230ab0,!![]);}catch(_0x311158){return BPromise[_0xd311('0x21')](_0x311158);}return _0x47aeb6[_0xd311('0x22')]();};}function saveUpdates(_0x5f1fe5,_0x2f5eb6){return function(_0x2e6ad4){if(_0x2e6ad4){return _0x2e6ad4['update'](_0x5f1fe5)[_0xd311('0x23')](function(_0x2e15e7){return _0x2e15e7;});}return null;};}function removeEntity(_0x1c676e,_0x5bc588){return function(_0x5a6b1c){if(_0x5a6b1c){return _0x5a6b1c[_0xd311('0x24')]()[_0xd311('0x23')](function(){_0x1c676e['status'](0xcc)[_0xd311('0x18')]();});}};}function handleEntityNotFound(_0x26d396,_0x2746b4){return function(_0x1cf5d2){if(!_0x1cf5d2){_0x26d396[_0xd311('0x16')](0x194);}return _0x1cf5d2;};}function handleError(_0x133d88,_0x2940d6){_0x2940d6=_0x2940d6||0x1f4;return function(_0x28ee45){logger[_0xd311('0x25')](_0x28ee45[_0xd311('0x26')]);if(_0x28ee45[_0xd311('0x27')]){delete _0x28ee45[_0xd311('0x27')];}_0x133d88[_0xd311('0x17')](_0x2940d6)[_0xd311('0x28')](_0x28ee45);};}exports[_0xd311('0x29')]=function(_0x2cc38d,_0x516fda){var _0x4da5f8={},_0x3677a8={},_0x4ba41d={'count':0x0,'rows':[]};var _0x29aecc=_[_0xd311('0x2a')](db[_0xd311('0x2b')][_0xd311('0x2c')],function(_0x5bdb2d){return{'name':_0x5bdb2d['fieldName'],'type':_0x5bdb2d[_0xd311('0x2d')][_0xd311('0x2e')]};});_0x3677a8['model']=_[_0xd311('0x2a')](_0x29aecc,_0xd311('0x27'));_0x3677a8['query']=_[_0xd311('0x2f')](_0x2cc38d[_0xd311('0x30')]);_0x3677a8[_0xd311('0x31')]=_[_0xd311('0x32')](_0x3677a8[_0xd311('0x33')],_0x3677a8[_0xd311('0x30')]);_0x4da5f8['attributes']=_[_0xd311('0x32')](_0x3677a8[_0xd311('0x33')],qs[_0xd311('0x34')](_0x2cc38d['query'][_0xd311('0x34')]));_0x4da5f8[_0xd311('0x35')]=_0x4da5f8[_0xd311('0x35')][_0xd311('0x36')]?_0x4da5f8[_0xd311('0x35')]:_0x3677a8[_0xd311('0x33')];if(!_0x2cc38d[_0xd311('0x30')][_0xd311('0x37')]('nolimit')){_0x4da5f8[_0xd311('0x1b')]=qs['limit'](_0x2cc38d[_0xd311('0x30')][_0xd311('0x1b')]);_0x4da5f8[_0xd311('0x1a')]=qs['offset'](_0x2cc38d[_0xd311('0x30')]['offset']);}_0x4da5f8[_0xd311('0x38')]=qs[_0xd311('0x39')](_0x2cc38d[_0xd311('0x30')]['sort']);_0x4da5f8['where']=qs[_0xd311('0x31')](_['pick'](_0x2cc38d[_0xd311('0x30')],_0x3677a8['filters']),_0x29aecc);if(_0x2cc38d[_0xd311('0x30')]['filter']){_0x4da5f8[_0xd311('0x3a')]=_[_0xd311('0x3b')](_0x4da5f8['where'],{'$or':_[_0xd311('0x2a')](_0x29aecc,function(_0x25781e){if(_0x25781e[_0xd311('0x2d')]!==_0xd311('0x3c')){var _0x3f5da3={};_0x3f5da3[_0x25781e[_0xd311('0x27')]]={'$like':'%'+_0x2cc38d[_0xd311('0x30')][_0xd311('0x3d')]+'%'};return _0x3f5da3;}})});}_0x4da5f8=_[_0xd311('0x3b')]({},_0x4da5f8,_0x2cc38d[_0xd311('0x3e')]);var _0x5060f4={'where':_0x4da5f8[_0xd311('0x3a')]};return db[_0xd311('0x2b')][_0xd311('0x1d')](_0x5060f4)[_0xd311('0x23')](function(_0x45350e){_0x4ba41d[_0xd311('0x1d')]=_0x45350e;if(_0x2cc38d[_0xd311('0x30')][_0xd311('0x3f')]){_0x4da5f8[_0xd311('0x40')]=[{'all':!![]}];}return db[_0xd311('0x2b')][_0xd311('0x41')](_0x4da5f8);})['then'](function(_0x43c889){_0x4ba41d[_0xd311('0x42')]=_0x43c889;return _0x4ba41d;})[_0xd311('0x23')](respondWithFilteredResult(_0x516fda,_0x4da5f8))['catch'](handleError(_0x516fda,null));};exports[_0xd311('0x43')]=function(_0x59af9f,_0x51ffd3){var _0xa49216={'raw':!![],'where':{'id':_0x59af9f[_0xd311('0x44')]['id']}},_0x38d2a4={};_0x38d2a4[_0xd311('0x33')]=_[_0xd311('0x2f')](db[_0xd311('0x2b')][_0xd311('0x2c')]);_0x38d2a4[_0xd311('0x30')]=_[_0xd311('0x2f')](_0x59af9f[_0xd311('0x30')]);_0x38d2a4[_0xd311('0x31')]=_['intersection'](_0x38d2a4[_0xd311('0x33')],_0x38d2a4[_0xd311('0x30')]);_0xa49216[_0xd311('0x35')]=_[_0xd311('0x32')](_0x38d2a4[_0xd311('0x33')],qs[_0xd311('0x34')](_0x59af9f[_0xd311('0x30')][_0xd311('0x34')]));_0xa49216[_0xd311('0x35')]=_0xa49216['attributes'][_0xd311('0x36')]?_0xa49216[_0xd311('0x35')]:_0x38d2a4['model'];if(_0x59af9f[_0xd311('0x30')][_0xd311('0x3f')]){_0xa49216[_0xd311('0x40')]=[{'all':!![]}];}_0xa49216=_[_0xd311('0x3b')]({},_0xa49216,_0x59af9f[_0xd311('0x3e')]);return db['SquareRecording'][_0xd311('0x45')](_0xa49216)[_0xd311('0x23')](handleEntityNotFound(_0x51ffd3,null))['then'](respondWithResult(_0x51ffd3,null))[_0xd311('0x46')](handleError(_0x51ffd3,null));};exports[_0xd311('0x47')]=function(_0x11ef13,_0x1f3cb8){return db[_0xd311('0x2b')][_0xd311('0x47')](_0x11ef13[_0xd311('0x48')],{})[_0xd311('0x23')](respondWithResult(_0x1f3cb8,0xc9))['catch'](handleError(_0x1f3cb8,null));};exports[_0xd311('0x49')]=function(_0x3e2c05,_0x26fcb9){if(_0x3e2c05['body']['id']){delete _0x3e2c05['body']['id'];}return db[_0xd311('0x2b')][_0xd311('0x45')]({'where':{'id':_0x3e2c05['params']['id']}})[_0xd311('0x23')](handleEntityNotFound(_0x26fcb9,null))[_0xd311('0x23')](saveUpdates(_0x3e2c05[_0xd311('0x48')],null))['then'](respondWithResult(_0x26fcb9,null))[_0xd311('0x46')](handleError(_0x26fcb9,null));};exports[_0xd311('0x4a')]=function(_0x533b04,_0x5e0faa,_0x1eff26){var _0x1abb4b=require('../../components/encryptor');var _0xd9bb0e=![];var _0x160350={};if(_0x533b04[_0xd311('0x30')][_0xd311('0x2d')]&&_0x533b04['query']['type']==='uniqueid'){_0x160350[_0xd311('0x4b')]=_0x533b04[_0xd311('0x44')]['id'];}else{_0x160350['id']=_0x533b04[_0xd311('0x44')]['id'];}return db[_0xd311('0x2b')][_0xd311('0x45')]({'where':_0x160350,'attributes':['id',_0xd311('0x4c'),_0xd311('0x4d')],'raw':!![]})[_0xd311('0x23')](handleEntityNotFound(_0x5e0faa,null))[_0xd311('0x23')](function(_0x48c7b0){if(_0x48c7b0){var _0x34b10b=_0x48c7b0[_0xd311('0x4c')];var _0x1339d7=util[_0xd311('0x4e')](_0xd311('0x4f'),_0x34b10b);if(fs[_0xd311('0x50')](_0x1339d7)){_0xd9bb0e=!![];return _0x1abb4b['decryptFile'](_0x1339d7,_0x34b10b,config[_0xd311('0x51')]['recording'])[_0xd311('0x23')](function(){return _0x48c7b0;});}return _0x48c7b0;}})['then'](function(_0x48b5a2){if(_0x48b5a2){var _0x3bec98=_0x48b5a2[_0xd311('0x4c')];if(!fs[_0xd311('0x50')](_0x3bec98)){throw new db[(_0xd311('0x52'))]['ValidationError']('SquareRecording\x20not\x20found');}if(_0x48b5a2[_0xd311('0x4d')]){return _0x5e0faa['download'](_0x3bec98,_0x48b5a2['filename']+path[_0xd311('0x53')](_0x3bec98),function(){if(_0xd9bb0e){fs[_0xd311('0x54')](_0x3bec98);}});}else{return _0x5e0faa[_0xd311('0x4a')](_0x3bec98,function(_0x174503){if(_0xd9bb0e){fs['unlink'](_0x3bec98);}});}}})[_0xd311('0x46')](function(_0x5aa5ac){if(_0x5aa5ac[_0xd311('0x55')]===_0xd311('0x56')){_0x5e0faa[_0xd311('0x17')](0x194)[_0xd311('0x28')](_0xd311('0x57'));}else{return handleError(_0x5e0faa,null);}});};exports[_0xd311('0x24')]=function(_0x520149,_0x4a97b3){return db['SquareRecording'][_0xd311('0x45')]({'where':{'id':_0x520149['params']['id']}})[_0xd311('0x23')](function(_0x45c952){if(_[_0xd311('0x58')](_0x45c952)){throw new ReferenceError('Entity\x20not\x20found');}return _0x45c952;})[_0xd311('0x23')](function(_0x410bb6){var _0x3f958b=_0x410bb6['savePath'];logger[_0xd311('0x59')](_0xd311('0x5a'),_0x3f958b);if(!_[_0xd311('0x58')](_0x410bb6[_0xd311('0x4c')])&&fs[_0xd311('0x50')](_0x3f958b)){logger[_0xd311('0x59')]('File:\x20\x22'+_0x3f958b+_0xd311('0x5b'));fs['unlinkSync'](_0x3f958b);}_0x3f958b=_0x3f958b+_0xd311('0x5c');if(!_[_0xd311('0x58')](_0x410bb6[_0xd311('0x4c')])&&fs[_0xd311('0x50')](_0x3f958b)){logger[_0xd311('0x59')](_0xd311('0x5d')+_0x3f958b+_0xd311('0x5b'));fs[_0xd311('0x5e')](_0x3f958b);}return _0x410bb6;})[_0xd311('0x23')](function(_0x4aa73f){if(!_0x4aa73f)throw new InternalError();return _0x4aa73f['destroy']();})[_0xd311('0x23')](function(){_0x4a97b3[_0xd311('0x17')](0xcc)[_0xd311('0x18')]();})[_0xd311('0x46')](handleError(_0x4a97b3,null));};
\ No newline at end of file
+var _0x6a5f=['create','body','download','../../components/encryptor','uniqueid','filename','savePath','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','extname','unlink','SquareRecording\x20not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','name','send','index','map','SquareRecording','rawAttributes','fieldName','key','model','query','intersection','fields','length','attributes','hasOwnProperty','sort','filters','pick','where','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','find'];(function(_0x52949d,_0x5750ec){var _0x570250=function(_0xd9636a){while(--_0xd9636a){_0x52949d['push'](_0x52949d['shift']());}};_0x570250(++_0x5750ec);}(_0x6a5f,0x77));var _0xf6a5=function(_0xd1cf76,_0x1e667d){_0xd1cf76=_0xd1cf76-0x0;var _0x580cbf=_0x6a5f[_0xd1cf76];return _0x580cbf;};'use strict';var emlformat=require(_0xf6a5('0x0'));var rimraf=require(_0xf6a5('0x1'));var zipdir=require(_0xf6a5('0x2'));var jsonpatch=require(_0xf6a5('0x3'));var rp=require(_0xf6a5('0x4'));var moment=require(_0xf6a5('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf6a5('0x6'));var path=require(_0xf6a5('0x7'));var sox=require(_0xf6a5('0x8'));var csv=require(_0xf6a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6a5('0xa'));var squel=require(_0xf6a5('0xb'));var crypto=require(_0xf6a5('0xc'));var jsforce=require(_0xf6a5('0xd'));var deskjs=require(_0xf6a5('0xe'));var toCsv=require(_0xf6a5('0x9'));var querystring=require('querystring');var Papa=require(_0xf6a5('0xf'));var Redis=require(_0xf6a5('0x10'));var authService=require(_0xf6a5('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf6a5('0x12'));var logger=require(_0xf6a5('0x13'))(_0xf6a5('0x14'));var utils=require(_0xf6a5('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf6a5('0x16'));var db=require(_0xf6a5('0x17'))['db'];function respondWithStatusCode(_0x8294a,_0x49915d){_0x49915d=_0x49915d||0xcc;return function(_0x4cdd5d){if(_0x4cdd5d){return _0x8294a[_0xf6a5('0x18')](_0x49915d);}return _0x8294a['status'](_0x49915d)[_0xf6a5('0x19')]();};}function respondWithResult(_0x4b0fff,_0xe6f29d){_0xe6f29d=_0xe6f29d||0xc8;return function(_0x5e2523){if(_0x5e2523){return _0x4b0fff[_0xf6a5('0x1a')](_0xe6f29d)['json'](_0x5e2523);}};}function respondWithFilteredResult(_0x3b632e,_0x545876){return function(_0x1f5d1f){if(_0x1f5d1f){var _0x26869a=typeof _0x545876[_0xf6a5('0x1b')]===_0xf6a5('0x1c')&&typeof _0x545876[_0xf6a5('0x1d')]===_0xf6a5('0x1c');var _0x49fea3=_0x1f5d1f[_0xf6a5('0x1e')];var _0x45c2b7=_0x26869a?0x0:_0x545876[_0xf6a5('0x1b')];var _0x371109=_0x26869a?_0x1f5d1f[_0xf6a5('0x1e')]:_0x545876[_0xf6a5('0x1b')]+_0x545876[_0xf6a5('0x1d')];var _0xbaeb64;if(_0x371109>=_0x49fea3){_0x371109=_0x49fea3;_0xbaeb64=0xc8;}else{_0xbaeb64=0xce;}_0x3b632e[_0xf6a5('0x1a')](_0xbaeb64);return _0x3b632e['set']('Content-Range',_0x45c2b7+'-'+_0x371109+'/'+_0x49fea3)['json'](_0x1f5d1f);}return null;};}function patchUpdates(_0x27b32e){return function(_0x26f533){try{jsonpatch[_0xf6a5('0x1f')](_0x26f533,_0x27b32e,!![]);}catch(_0x5e80dd){return BPromise[_0xf6a5('0x20')](_0x5e80dd);}return _0x26f533[_0xf6a5('0x21')]();};}function saveUpdates(_0x116c2c,_0xddd0da){return function(_0x5ec35c){if(_0x5ec35c){return _0x5ec35c[_0xf6a5('0x22')](_0x116c2c)[_0xf6a5('0x23')](function(_0x4dca6d){return _0x4dca6d;});}return null;};}function removeEntity(_0xb1d271,_0x1b8529){return function(_0x29170a){if(_0x29170a){return _0x29170a[_0xf6a5('0x24')]()[_0xf6a5('0x23')](function(){_0xb1d271[_0xf6a5('0x1a')](0xcc)[_0xf6a5('0x19')]();});}};}function handleEntityNotFound(_0xa594d0,_0x1f4b7e){return function(_0x67bf0f){if(!_0x67bf0f){_0xa594d0[_0xf6a5('0x18')](0x194);}return _0x67bf0f;};}function handleError(_0x5adc60,_0x365707){_0x365707=_0x365707||0x1f4;return function(_0x481d06){logger[_0xf6a5('0x25')](_0x481d06['stack']);if(_0x481d06[_0xf6a5('0x26')]){delete _0x481d06['name'];}_0x5adc60[_0xf6a5('0x1a')](_0x365707)[_0xf6a5('0x27')](_0x481d06);};}exports[_0xf6a5('0x28')]=function(_0x5728b2,_0x563c1e){var _0x77fdc4={},_0x1c0a9d={},_0x52d75c={'count':0x0,'rows':[]};var _0x373df4=_[_0xf6a5('0x29')](db[_0xf6a5('0x2a')][_0xf6a5('0x2b')],function(_0x138f77){return{'name':_0x138f77[_0xf6a5('0x2c')],'type':_0x138f77['type'][_0xf6a5('0x2d')]};});_0x1c0a9d[_0xf6a5('0x2e')]=_[_0xf6a5('0x29')](_0x373df4,_0xf6a5('0x26'));_0x1c0a9d[_0xf6a5('0x2f')]=_['keys'](_0x5728b2[_0xf6a5('0x2f')]);_0x1c0a9d['filters']=_[_0xf6a5('0x30')](_0x1c0a9d[_0xf6a5('0x2e')],_0x1c0a9d[_0xf6a5('0x2f')]);_0x77fdc4['attributes']=_['intersection'](_0x1c0a9d[_0xf6a5('0x2e')],qs[_0xf6a5('0x31')](_0x5728b2[_0xf6a5('0x2f')][_0xf6a5('0x31')]));_0x77fdc4['attributes']=_0x77fdc4['attributes'][_0xf6a5('0x32')]?_0x77fdc4[_0xf6a5('0x33')]:_0x1c0a9d['model'];if(!_0x5728b2[_0xf6a5('0x2f')][_0xf6a5('0x34')]('nolimit')){_0x77fdc4['limit']=qs['limit'](_0x5728b2[_0xf6a5('0x2f')]['limit']);_0x77fdc4['offset']=qs[_0xf6a5('0x1b')](_0x5728b2[_0xf6a5('0x2f')][_0xf6a5('0x1b')]);}_0x77fdc4['order']=qs[_0xf6a5('0x35')](_0x5728b2[_0xf6a5('0x2f')][_0xf6a5('0x35')]);_0x77fdc4['where']=qs[_0xf6a5('0x36')](_[_0xf6a5('0x37')](_0x5728b2['query'],_0x1c0a9d[_0xf6a5('0x36')]),_0x373df4);if(_0x5728b2[_0xf6a5('0x2f')]['filter']){_0x77fdc4[_0xf6a5('0x38')]=_[_0xf6a5('0x39')](_0x77fdc4['where'],{'$or':_[_0xf6a5('0x29')](_0x373df4,function(_0x2f799c){if(_0x2f799c[_0xf6a5('0x3a')]!==_0xf6a5('0x3b')){var _0x2e51f2={};_0x2e51f2[_0x2f799c[_0xf6a5('0x26')]]={'$like':'%'+_0x5728b2[_0xf6a5('0x2f')]['filter']+'%'};return _0x2e51f2;}})});}_0x77fdc4=_[_0xf6a5('0x39')]({},_0x77fdc4,_0x5728b2[_0xf6a5('0x3c')]);var _0x263ddb={'where':_0x77fdc4['where']};return db['SquareRecording'][_0xf6a5('0x1e')](_0x263ddb)[_0xf6a5('0x23')](function(_0x51a52e){_0x52d75c[_0xf6a5('0x1e')]=_0x51a52e;if(_0x5728b2[_0xf6a5('0x2f')][_0xf6a5('0x3d')]){_0x77fdc4['include']=[{'all':!![]}];}return db[_0xf6a5('0x2a')][_0xf6a5('0x3e')](_0x77fdc4);})[_0xf6a5('0x23')](function(_0x44a00e){_0x52d75c[_0xf6a5('0x3f')]=_0x44a00e;return _0x52d75c;})[_0xf6a5('0x23')](respondWithFilteredResult(_0x563c1e,_0x77fdc4))[_0xf6a5('0x40')](handleError(_0x563c1e,null));};exports[_0xf6a5('0x41')]=function(_0xfe56e,_0x3670a8){var _0x53ff51={'raw':!![],'where':{'id':_0xfe56e[_0xf6a5('0x42')]['id']}},_0x297cae={};_0x297cae[_0xf6a5('0x2e')]=_[_0xf6a5('0x43')](db[_0xf6a5('0x2a')][_0xf6a5('0x2b')]);_0x297cae['query']=_[_0xf6a5('0x43')](_0xfe56e[_0xf6a5('0x2f')]);_0x297cae['filters']=_[_0xf6a5('0x30')](_0x297cae['model'],_0x297cae[_0xf6a5('0x2f')]);_0x53ff51[_0xf6a5('0x33')]=_[_0xf6a5('0x30')](_0x297cae['model'],qs[_0xf6a5('0x31')](_0xfe56e[_0xf6a5('0x2f')]['fields']));_0x53ff51[_0xf6a5('0x33')]=_0x53ff51[_0xf6a5('0x33')][_0xf6a5('0x32')]?_0x53ff51['attributes']:_0x297cae[_0xf6a5('0x2e')];if(_0xfe56e[_0xf6a5('0x2f')][_0xf6a5('0x3d')]){_0x53ff51['include']=[{'all':!![]}];}_0x53ff51=_[_0xf6a5('0x39')]({},_0x53ff51,_0xfe56e[_0xf6a5('0x3c')]);return db[_0xf6a5('0x2a')][_0xf6a5('0x44')](_0x53ff51)[_0xf6a5('0x23')](handleEntityNotFound(_0x3670a8,null))[_0xf6a5('0x23')](respondWithResult(_0x3670a8,null))[_0xf6a5('0x40')](handleError(_0x3670a8,null));};exports['create']=function(_0x100e72,_0x42f815){return db[_0xf6a5('0x2a')][_0xf6a5('0x45')](_0x100e72[_0xf6a5('0x46')],{})[_0xf6a5('0x23')](respondWithResult(_0x42f815,0xc9))[_0xf6a5('0x40')](handleError(_0x42f815,null));};exports[_0xf6a5('0x22')]=function(_0x1b749e,_0x121306){if(_0x1b749e[_0xf6a5('0x46')]['id']){delete _0x1b749e[_0xf6a5('0x46')]['id'];}return db[_0xf6a5('0x2a')][_0xf6a5('0x44')]({'where':{'id':_0x1b749e['params']['id']}})['then'](handleEntityNotFound(_0x121306,null))[_0xf6a5('0x23')](saveUpdates(_0x1b749e[_0xf6a5('0x46')],null))[_0xf6a5('0x23')](respondWithResult(_0x121306,null))[_0xf6a5('0x40')](handleError(_0x121306,null));};exports[_0xf6a5('0x47')]=function(_0x23f51f,_0x204af2,_0x577ee1){var _0x6d1052=require(_0xf6a5('0x48'));var _0x5e7d04=![];var _0x196d5a={};if(_0x23f51f[_0xf6a5('0x2f')][_0xf6a5('0x3a')]&&_0x23f51f[_0xf6a5('0x2f')]['type']===_0xf6a5('0x49')){_0x196d5a[_0xf6a5('0x49')]=_0x23f51f[_0xf6a5('0x42')]['id'];}else{_0x196d5a['id']=_0x23f51f[_0xf6a5('0x42')]['id'];}return db['SquareRecording'][_0xf6a5('0x44')]({'where':_0x196d5a,'attributes':['id','savePath',_0xf6a5('0x4a')],'raw':!![]})[_0xf6a5('0x23')](handleEntityNotFound(_0x204af2,null))[_0xf6a5('0x23')](function(_0x3a0de6){if(_0x3a0de6){var _0x5b1e95=_0x3a0de6[_0xf6a5('0x4b')];var _0x2a195c=util[_0xf6a5('0x4c')](_0xf6a5('0x4d'),_0x5b1e95);if(fs[_0xf6a5('0x4e')](_0x2a195c)){_0x5e7d04=!![];return _0x6d1052[_0xf6a5('0x4f')](_0x2a195c,_0x5b1e95,config[_0xf6a5('0x50')][_0xf6a5('0x51')])[_0xf6a5('0x23')](function(){return _0x3a0de6;});}return _0x3a0de6;}})[_0xf6a5('0x23')](function(_0xf20fd){if(_0xf20fd){var _0x3bc098=_0xf20fd[_0xf6a5('0x4b')];if(!fs[_0xf6a5('0x4e')](_0x3bc098)){throw new db[(_0xf6a5('0x52'))]['ValidationError']('SquareRecording\x20not\x20found');}if(_0xf20fd['filename']){return _0x204af2[_0xf6a5('0x47')](_0x3bc098,_0xf20fd['filename']+path[_0xf6a5('0x53')](_0x3bc098),function(){if(_0x5e7d04){fs[_0xf6a5('0x54')](_0x3bc098);}});}else{return _0x204af2['download'](_0x3bc098,function(_0x4e8a42){if(_0x5e7d04){fs[_0xf6a5('0x54')](_0x3bc098);}});}}})['catch'](function(_0x43772e){if(_0x43772e['message']===_0xf6a5('0x55')){_0x204af2[_0xf6a5('0x1a')](0x194)[_0xf6a5('0x27')]('Not\x20found');}else{return handleError(_0x204af2,null);}});};exports['destroy']=function(_0x1a42e4,_0x1812fd){return db[_0xf6a5('0x2a')]['find']({'where':{'id':_0x1a42e4[_0xf6a5('0x42')]['id']}})[_0xf6a5('0x23')](function(_0x1c2830){if(_['isNil'](_0x1c2830)){throw new ReferenceError(_0xf6a5('0x56'));}return _0x1c2830;})['then'](function(_0x34afde){var _0x166d65=_0x34afde[_0xf6a5('0x4b')];logger[_0xf6a5('0x57')](_0xf6a5('0x58'),_0x166d65);if(!_[_0xf6a5('0x59')](_0x34afde[_0xf6a5('0x4b')])&&fs[_0xf6a5('0x4e')](_0x166d65)){logger[_0xf6a5('0x57')](_0xf6a5('0x5a')+_0x166d65+_0xf6a5('0x5b'));fs['unlinkSync'](_0x166d65);}_0x166d65=_0x166d65+_0xf6a5('0x5c');if(!_['isNil'](_0x34afde[_0xf6a5('0x4b')])&&fs[_0xf6a5('0x4e')](_0x166d65)){logger[_0xf6a5('0x57')](_0xf6a5('0x5a')+_0x166d65+_0xf6a5('0x5b'));fs[_0xf6a5('0x5d')](_0x166d65);}return _0x34afde;})[_0xf6a5('0x23')](function(_0xcfc9bb){if(!_0xcfc9bb)throw new InternalError();return _0xcfc9bb[_0xf6a5('0x24')]();})[_0xf6a5('0x23')](function(){_0x1812fd[_0xf6a5('0x1a')](0xcc)[_0xf6a5('0x19')]();})[_0xf6a5('0x40')](handleError(_0x1812fd,null));};
\ No newline at end of file
index f758231..37b280d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb4=['./squareRecording.attributes','exports','define','SquareRecording','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x4fb4,0x190));var _0x44fb=function(_0x1a773a,_0x3c5038){_0x1a773a=_0x1a773a-0x0;var _0x27480a=_0x4fb4[_0x1a773a];return _0x27480a;};'use strict';var _=require('lodash');var util=require(_0x44fb('0x0'));var logger=require(_0x44fb('0x1'))(_0x44fb('0x2'));var moment=require(_0x44fb('0x3'));var BPromise=require(_0x44fb('0x4'));var rp=require(_0x44fb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x44fb('0x6'));var config=require(_0x44fb('0x7'));var attributes=require(_0x44fb('0x8'));module[_0x44fb('0x9')]=function(_0x375d33,_0x173e70){return _0x375d33[_0x44fb('0xa')](_0x44fb('0xb'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x62cf=['bluebird','rimraf','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','../../config/logger','moment'];(function(_0x26c990,_0x4c20f7){var _0x167f63=function(_0x57d68e){while(--_0x57d68e){_0x26c990['push'](_0x26c990['shift']());}};_0x167f63(++_0x4c20f7);}(_0x62cf,0x81));var _0xf62c=function(_0x49d173,_0x14a94e){_0x49d173=_0x49d173-0x0;var _0x7fbd82=_0x62cf[_0x49d173];return _0x7fbd82;};'use strict';var _=require(_0xf62c('0x0'));var util=require('util');var logger=require(_0xf62c('0x1'))('api');var moment=require(_0xf62c('0x2'));var BPromise=require(_0xf62c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf62c('0x4'));var config=require(_0xf62c('0x5'));var attributes=require(_0xf62c('0x6'));module[_0xf62c('0x7')]=function(_0x3604f0,_0x40487e){return _0x3604f0[_0xf62c('0x8')](_0xf62c('0x9'),attributes,{'tableName':_0xf62c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7aed99b..e901964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8d3=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','CreateSquareRecording','create','body'];(function(_0x15adfe,_0x722fe7){var _0x5bc985=function(_0x5470a2){while(--_0x5470a2){_0x15adfe['push'](_0x15adfe['shift']());}};_0x5bc985(++_0x722fe7);}(_0xd8d3,0x8d));var _0x3d8d=function(_0x20f46e,_0x338db5){_0x20f46e=_0x20f46e-0x0;var _0x227ea7=_0xd8d3[_0x20f46e];return _0x227ea7;};'use strict';var _=require(_0x3d8d('0x0'));var util=require(_0x3d8d('0x1'));var moment=require(_0x3d8d('0x2'));var BPromise=require('bluebird');var rs=require(_0x3d8d('0x3'));var fs=require('fs');var Redis=require(_0x3d8d('0x4'));var db=require(_0x3d8d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3d8d('0x6'))(_0x3d8d('0x7'));var config=require(_0x3d8d('0x8'));var jayson=require(_0x3d8d('0x9'));var client=jayson[_0x3d8d('0xa')][_0x3d8d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c5e48,_0x489a54,_0x1a9a1e){return new BPromise(function(_0x25fd99,_0x582076){return client[_0x3d8d('0xc')](_0x3c5e48,_0x1a9a1e)[_0x3d8d('0xd')](function(_0x272e1c){logger['info'](_0x3d8d('0xe'),_0x489a54,'request\x20sent');logger[_0x3d8d('0xf')](_0x3d8d('0x10'),_0x489a54,_0x3d8d('0x11'),JSON[_0x3d8d('0x12')](_0x272e1c));if(_0x272e1c[_0x3d8d('0x13')]){if(_0x272e1c[_0x3d8d('0x13')][_0x3d8d('0x14')]===0x1f4){logger['error'](_0x3d8d('0xe'),_0x489a54,_0x272e1c[_0x3d8d('0x13')][_0x3d8d('0x15')]);return _0x582076(_0x272e1c[_0x3d8d('0x13')]['message']);}logger[_0x3d8d('0x13')]('SquareRecording,\x20%s,\x20%s',_0x489a54,_0x272e1c[_0x3d8d('0x13')]['message']);return _0x25fd99(_0x272e1c[_0x3d8d('0x13')]['message']);}else{logger[_0x3d8d('0x16')](_0x3d8d('0xe'),_0x489a54,_0x3d8d('0x11'));_0x25fd99(_0x272e1c[_0x3d8d('0x17')][_0x3d8d('0x15')]);}})['catch'](function(_0x35ec40){logger['error'](_0x3d8d('0xe'),_0x489a54,_0x35ec40);_0x582076(_0x35ec40);});});}exports[_0x3d8d('0x18')]=function(_0x4d1903){var _0x1b9ca7=this;return new Promise(function(_0x4ba953,_0x314610){return db['SquareRecording'][_0x3d8d('0x19')](_0x4d1903[_0x3d8d('0x1a')],{'raw':_0x4d1903['options']?_0x4d1903['options']['raw']===undefined?!![]:![]:!![]})[_0x3d8d('0xd')](function(_0x4133a1){logger['info'](_0x3d8d('0x18'),_0x4d1903);logger[_0x3d8d('0xf')](_0x3d8d('0x18'),_0x4d1903,JSON[_0x3d8d('0x12')](_0x4133a1));_0x4ba953(_0x4133a1);})[_0x3d8d('0x1b')](function(_0x40c00b){logger[_0x3d8d('0x13')](_0x3d8d('0x18'),_0x40c00b[_0x3d8d('0x15')],_0x4d1903);_0x314610(_0x1b9ca7['error'](0x1f4,_0x40c00b[_0x3d8d('0x15')]));});});};
\ No newline at end of file
+var _0x5498=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','raw','lodash','util','moment','ioredis'];(function(_0xd08166,_0x3b0592){var _0x5a9912=function(_0x219162){while(--_0x219162){_0xd08166['push'](_0xd08166['shift']());}};_0x5a9912(++_0x3b0592);}(_0x5498,0x88));var _0x8549=function(_0x4b4632,_0x1b9ef8){_0x4b4632=_0x4b4632-0x0;var _0x487b85=_0x5498[_0x4b4632];return _0x487b85;};'use strict';var _=require(_0x8549('0x0'));var util=require(_0x8549('0x1'));var moment=require(_0x8549('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8549('0x3'));var db=require(_0x8549('0x4'))['db'];var utils=require(_0x8549('0x5'));var logger=require(_0x8549('0x6'))(_0x8549('0x7'));var config=require(_0x8549('0x8'));var jayson=require(_0x8549('0x9'));var client=jayson[_0x8549('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x132b83,_0x3328e9,_0x150bb0){return new BPromise(function(_0x398801,_0x2962ec){return client['request'](_0x132b83,_0x150bb0)[_0x8549('0xb')](function(_0x3a9db4){logger[_0x8549('0xc')](_0x8549('0xd'),_0x3328e9,_0x8549('0xe'));logger['debug'](_0x8549('0xf'),_0x3328e9,_0x8549('0xe'),JSON[_0x8549('0x10')](_0x3a9db4));if(_0x3a9db4['error']){if(_0x3a9db4[_0x8549('0x11')][_0x8549('0x12')]===0x1f4){logger[_0x8549('0x11')](_0x8549('0xd'),_0x3328e9,_0x3a9db4[_0x8549('0x11')][_0x8549('0x13')]);return _0x2962ec(_0x3a9db4['error'][_0x8549('0x13')]);}logger[_0x8549('0x11')](_0x8549('0xd'),_0x3328e9,_0x3a9db4['error'][_0x8549('0x13')]);return _0x398801(_0x3a9db4[_0x8549('0x11')][_0x8549('0x13')]);}else{logger[_0x8549('0xc')](_0x8549('0xd'),_0x3328e9,_0x8549('0xe'));_0x398801(_0x3a9db4[_0x8549('0x14')]['message']);}})[_0x8549('0x15')](function(_0x311e23){logger['error']('SquareRecording,\x20%s,\x20%s',_0x3328e9,_0x311e23);_0x2962ec(_0x311e23);});});}exports[_0x8549('0x16')]=function(_0x2cac7a){var _0x3d08d7=this;return new Promise(function(_0x56564c,_0x468cce){return db[_0x8549('0x17')][_0x8549('0x18')](_0x2cac7a[_0x8549('0x19')],{'raw':_0x2cac7a[_0x8549('0x1a')]?_0x2cac7a[_0x8549('0x1a')][_0x8549('0x1b')]===undefined?!![]:![]:!![]})[_0x8549('0xb')](function(_0x388ba6){logger[_0x8549('0xc')](_0x8549('0x16'),_0x2cac7a);logger['debug'](_0x8549('0x16'),_0x2cac7a,JSON[_0x8549('0x10')](_0x388ba6));_0x56564c(_0x388ba6);})[_0x8549('0x15')](function(_0x8867a4){logger[_0x8549('0x11')](_0x8549('0x16'),_0x8867a4[_0x8549('0x13')],_0x2cac7a);_0x468cce(_0x3d08d7[_0x8549('0x11')](0x1f4,_0x8867a4[_0x8549('0x13')]));});});};
\ No newline at end of file
index a66e666..9af229d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x217c2e,_0x358f06){var _0x22b7d8=function(_0x111c48){while(--_0x111c48){_0x217c2e['push'](_0x217c2e['shift']());}};_0x22b7d8(++_0x358f06);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x51fe73,_0x269307){var _0x5347d7=function(_0x5394b1){while(--_0x5394b1){_0x51fe73['push'](_0x51fe73['shift']());}};_0x5347d7(++_0x269307);}(_0xe706,0xa3));var _0x6e70=function(_0x5b1c50,_0x56e694){_0x5b1c50=_0x5b1c50-0x0;var _0x2d379b=_0xe706[_0x5b1c50];return _0x2d379b;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index bcff7cb..7993e8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc047=['DATE','BOOLEAN','exports','STRING'];(function(_0x5815af,_0x361f0b){var _0x3f14cb=function(_0x422c47){while(--_0x422c47){_0x5815af['push'](_0x5815af['shift']());}};_0x3f14cb(++_0x361f0b);}(_0xc047,0x152));var _0x7c04=function(_0x2cf913,_0x1873bd){_0x2cf913=_0x2cf913-0x0;var _0x3b946c=_0xc047[_0x2cf913];return _0x3b946c;};'use strict';var Sequelize=require('sequelize');module[_0x7c04('0x0')]={'network':{'type':Sequelize[_0x7c04('0x1')]},'network_script':{'type':Sequelize[_0x7c04('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x7c04('0x1')]},'language':{'type':Sequelize[_0x7c04('0x1')]},'type':{'type':Sequelize[_0x7c04('0x1')]},'uniqueid':{'type':Sequelize[_0x7c04('0x1')]},'version':{'type':Sequelize[_0x7c04('0x1')]},'callerid':{'type':Sequelize[_0x7c04('0x1')]},'calleridname':{'type':Sequelize[_0x7c04('0x1')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x7c04('0x1')]},'callington':{'type':Sequelize[_0x7c04('0x1')]},'callingtns':{'type':Sequelize[_0x7c04('0x1')]},'dnid':{'type':Sequelize[_0x7c04('0x1')]},'rdnis':{'type':Sequelize[_0x7c04('0x1')]},'context':{'type':Sequelize[_0x7c04('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x7c04('0x1')]},'enhanced':{'type':Sequelize[_0x7c04('0x1')]},'accountcode':{'type':Sequelize[_0x7c04('0x1')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7c04('0x2')]},'bot':{'type':Sequelize[_0x7c04('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1f20=['sequelize','exports','STRING','DATE'];(function(_0x296421,_0x27c2af){var _0x407240=function(_0x11094f){while(--_0x11094f){_0x296421['push'](_0x296421['shift']());}};_0x407240(++_0x27c2af);}(_0x1f20,0x11c));var _0x01f2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x1f20[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x01f2('0x0'));module[_0x01f2('0x1')]={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x01f2('0x2')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x01f2('0x2')]},'language':{'type':Sequelize[_0x01f2('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x01f2('0x2')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x01f2('0x2')]},'callingpres':{'type':Sequelize[_0x01f2('0x2')]},'callingani2':{'type':Sequelize[_0x01f2('0x2')]},'callington':{'type':Sequelize[_0x01f2('0x2')]},'callingtns':{'type':Sequelize[_0x01f2('0x2')]},'dnid':{'type':Sequelize[_0x01f2('0x2')]},'rdnis':{'type':Sequelize[_0x01f2('0x2')]},'context':{'type':Sequelize[_0x01f2('0x2')]},'extension':{'type':Sequelize[_0x01f2('0x2')]},'priority':{'type':Sequelize[_0x01f2('0x2')]},'enhanced':{'type':Sequelize[_0x01f2('0x2')]},'accountcode':{'type':Sequelize[_0x01f2('0x2')]},'threadid':{'type':Sequelize[_0x01f2('0x2')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x01f2('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 1744a0a..1d3304f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x563e=['model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','SquareReport','type','key'];(function(_0x448774,_0x45ddc7){var _0x46b2f6=function(_0x1dee94){while(--_0x1dee94){_0x448774['push'](_0x448774['shift']());}};_0x46b2f6(++_0x45ddc7);}(_0x563e,0x189));var _0xe563=function(_0x33314d,_0x499628){_0x33314d=_0x33314d-0x0;var _0x4ffe8e=_0x563e[_0x33314d];return _0x4ffe8e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe563('0x0'));var zipdir=require(_0xe563('0x1'));var jsonpatch=require(_0xe563('0x2'));var rp=require(_0xe563('0x3'));var moment=require('moment');var BPromise=require(_0xe563('0x4'));var Mustache=require(_0xe563('0x5'));var util=require(_0xe563('0x6'));var path=require(_0xe563('0x7'));var sox=require(_0xe563('0x8'));var csv=require(_0xe563('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe563('0xa'));var _=require(_0xe563('0xb'));var squel=require(_0xe563('0xc'));var crypto=require('crypto');var jsforce=require(_0xe563('0xd'));var deskjs=require(_0xe563('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe563('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe563('0x10'));var qs=require(_0xe563('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe563('0x12'));var logger=require(_0xe563('0x13'))(_0xe563('0x14'));var utils=require('../../config/utils');var config=require(_0xe563('0x15'));var licenseUtil=require(_0xe563('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a1258,_0x4ea1d4){_0x4ea1d4=_0x4ea1d4||0xcc;return function(_0x2b08cc){if(_0x2b08cc){return _0x2a1258[_0xe563('0x17')](_0x4ea1d4);}return _0x2a1258['status'](_0x4ea1d4)[_0xe563('0x18')]();};}function respondWithResult(_0x727cb0,_0x14498d){_0x14498d=_0x14498d||0xc8;return function(_0x252cb9){if(_0x252cb9){return _0x727cb0[_0xe563('0x19')](_0x14498d)[_0xe563('0x1a')](_0x252cb9);}};}function respondWithFilteredResult(_0x89da02,_0x21b44e){return function(_0x568f91){if(_0x568f91){var _0x44554e=typeof _0x21b44e[_0xe563('0x1b')]===_0xe563('0x1c')&&typeof _0x21b44e[_0xe563('0x1d')]===_0xe563('0x1c');var _0x5c75e6=_0x568f91['count'];var _0x5931cd=_0x44554e?0x0:_0x21b44e[_0xe563('0x1b')];var _0x17bfc5=_0x44554e?_0x568f91[_0xe563('0x1e')]:_0x21b44e['offset']+_0x21b44e['limit'];var _0x2e2304;if(_0x17bfc5>=_0x5c75e6){_0x17bfc5=_0x5c75e6;_0x2e2304=0xc8;}else{_0x2e2304=0xce;}_0x89da02[_0xe563('0x19')](_0x2e2304);return _0x89da02[_0xe563('0x1f')](_0xe563('0x20'),_0x5931cd+'-'+_0x17bfc5+'/'+_0x5c75e6)['json'](_0x568f91);}return null;};}function patchUpdates(_0x386803){return function(_0x4f5207){try{jsonpatch[_0xe563('0x21')](_0x4f5207,_0x386803,!![]);}catch(_0x232aae){return BPromise[_0xe563('0x22')](_0x232aae);}return _0x4f5207[_0xe563('0x23')]();};}function saveUpdates(_0x4b58cc,_0x379a2d){return function(_0x476c3b){if(_0x476c3b){return _0x476c3b[_0xe563('0x24')](_0x4b58cc)[_0xe563('0x25')](function(_0x178536){return _0x178536;});}return null;};}function removeEntity(_0x5a2483,_0x5e5258){return function(_0x31b188){if(_0x31b188){return _0x31b188[_0xe563('0x26')]()['then'](function(){_0x5a2483[_0xe563('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53ba7b,_0x5530b8){return function(_0x5d3924){if(!_0x5d3924){_0x53ba7b[_0xe563('0x17')](0x194);}return _0x5d3924;};}function handleError(_0x23ca83,_0x5bd00f){_0x5bd00f=_0x5bd00f||0x1f4;return function(_0x301cab){logger['error'](_0x301cab['stack']);if(_0x301cab[_0xe563('0x27')]){delete _0x301cab[_0xe563('0x27')];}_0x23ca83[_0xe563('0x19')](_0x5bd00f)[_0xe563('0x28')](_0x301cab);};}exports[_0xe563('0x29')]=function(_0x498d1d,_0x5bb967){var _0x2df9eb={},_0x1d61ac={},_0x269d32={'count':0x0,'rows':[]};var _0x386d26=_['map'](db[_0xe563('0x2a')]['rawAttributes'],function(_0x42d0af){return{'name':_0x42d0af['fieldName'],'type':_0x42d0af[_0xe563('0x2b')][_0xe563('0x2c')]};});_0x1d61ac[_0xe563('0x2d')]=_[_0xe563('0x2e')](_0x386d26,_0xe563('0x27'));_0x1d61ac['query']=_[_0xe563('0x2f')](_0x498d1d['query']);_0x1d61ac[_0xe563('0x30')]=_[_0xe563('0x31')](_0x1d61ac[_0xe563('0x2d')],_0x1d61ac[_0xe563('0x32')]);_0x2df9eb[_0xe563('0x33')]=_[_0xe563('0x31')](_0x1d61ac[_0xe563('0x2d')],qs[_0xe563('0x34')](_0x498d1d['query'][_0xe563('0x34')]));_0x2df9eb[_0xe563('0x33')]=_0x2df9eb['attributes'][_0xe563('0x35')]?_0x2df9eb[_0xe563('0x33')]:_0x1d61ac[_0xe563('0x2d')];if(!_0x498d1d[_0xe563('0x32')][_0xe563('0x36')]('nolimit')){_0x2df9eb[_0xe563('0x1d')]=qs[_0xe563('0x1d')](_0x498d1d[_0xe563('0x32')][_0xe563('0x1d')]);_0x2df9eb[_0xe563('0x1b')]=qs[_0xe563('0x1b')](_0x498d1d[_0xe563('0x32')][_0xe563('0x1b')]);}_0x2df9eb['order']=qs['sort'](_0x498d1d[_0xe563('0x32')][_0xe563('0x37')]);_0x2df9eb[_0xe563('0x38')]=qs[_0xe563('0x30')](_[_0xe563('0x39')](_0x498d1d[_0xe563('0x32')],_0x1d61ac[_0xe563('0x30')]),_0x386d26);if(_0x498d1d['query'][_0xe563('0x3a')]){_0x2df9eb['where']=_[_0xe563('0x3b')](_0x2df9eb[_0xe563('0x38')],{'$or':_[_0xe563('0x2e')](_0x386d26,function(_0x245ddb){if(_0x245ddb[_0xe563('0x2b')]!==_0xe563('0x3c')){var _0xb34516={};_0xb34516[_0x245ddb[_0xe563('0x27')]]={'$like':'%'+_0x498d1d[_0xe563('0x32')]['filter']+'%'};return _0xb34516;}})});}_0x2df9eb=_['merge']({},_0x2df9eb,_0x498d1d['options']);var _0x1edbfb={'where':_0x2df9eb[_0xe563('0x38')]};return db[_0xe563('0x2a')][_0xe563('0x1e')](_0x1edbfb)['then'](function(_0x367de1){_0x269d32[_0xe563('0x1e')]=_0x367de1;if(_0x498d1d[_0xe563('0x32')][_0xe563('0x3d')]){_0x2df9eb['include']=[{'all':!![]}];}return db[_0xe563('0x2a')][_0xe563('0x3e')](_0x2df9eb);})['then'](function(_0x5b5aa7){_0x269d32[_0xe563('0x3f')]=_0x5b5aa7;return _0x269d32;})[_0xe563('0x25')](respondWithFilteredResult(_0x5bb967,_0x2df9eb))[_0xe563('0x40')](handleError(_0x5bb967,null));};exports[_0xe563('0x41')]=function(_0x453882,_0x224795){var _0x2aa1ab={'raw':!![],'where':{'id':_0x453882[_0xe563('0x42')]['id']}},_0x284313={};_0x284313[_0xe563('0x2d')]=_[_0xe563('0x2f')](db[_0xe563('0x2a')][_0xe563('0x43')]);_0x284313[_0xe563('0x32')]=_[_0xe563('0x2f')](_0x453882[_0xe563('0x32')]);_0x284313['filters']=_[_0xe563('0x31')](_0x284313['model'],_0x284313[_0xe563('0x32')]);_0x2aa1ab[_0xe563('0x33')]=_[_0xe563('0x31')](_0x284313[_0xe563('0x2d')],qs['fields'](_0x453882[_0xe563('0x32')][_0xe563('0x34')]));_0x2aa1ab[_0xe563('0x33')]=_0x2aa1ab[_0xe563('0x33')][_0xe563('0x35')]?_0x2aa1ab[_0xe563('0x33')]:_0x284313['model'];if(_0x453882[_0xe563('0x32')][_0xe563('0x3d')]){_0x2aa1ab[_0xe563('0x44')]=[{'all':!![]}];}_0x2aa1ab=_['merge']({},_0x2aa1ab,_0x453882['options']);return db[_0xe563('0x2a')][_0xe563('0x45')](_0x2aa1ab)[_0xe563('0x25')](handleEntityNotFound(_0x224795,null))[_0xe563('0x25')](respondWithResult(_0x224795,null))[_0xe563('0x40')](handleError(_0x224795,null));};exports[_0xe563('0x46')]=function(_0x3ea695,_0x4fbd2d){return db['SquareReport']['create'](_0x3ea695['body'],{})['then'](respondWithResult(_0x4fbd2d,0xc9))[_0xe563('0x40')](handleError(_0x4fbd2d,null));};exports['update']=function(_0x40e80a,_0x305b55){if(_0x40e80a[_0xe563('0x47')]['id']){delete _0x40e80a[_0xe563('0x47')]['id'];}return db[_0xe563('0x2a')][_0xe563('0x45')]({'where':{'id':_0x40e80a[_0xe563('0x42')]['id']}})[_0xe563('0x25')](handleEntityNotFound(_0x305b55,null))[_0xe563('0x25')](saveUpdates(_0x40e80a[_0xe563('0x47')],null))[_0xe563('0x25')](respondWithResult(_0x305b55,null))['catch'](handleError(_0x305b55,null));};exports[_0xe563('0x26')]=function(_0x4ea931,_0x1a8735){return db[_0xe563('0x2a')][_0xe563('0x45')]({'where':{'id':_0x4ea931[_0xe563('0x42')]['id']}})[_0xe563('0x25')](handleEntityNotFound(_0x1a8735,null))[_0xe563('0x25')](removeEntity(_0x1a8735,null))[_0xe563('0x40')](handleError(_0x1a8735,null));};exports['describe']=function(_0x3b7f5b,_0xa805ba){return db['SquareReport'][_0xe563('0x48')]()[_0xe563('0x25')](respondWithResult(_0xa805ba,null))[_0xe563('0x40')](handleError(_0xa805ba,null));};
\ No newline at end of file
+var _0xf118=['count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','include','rows','show','includeAll','catch','create','body','find','describe','eml-format','rimraf','request-promise','moment','mustache','path','to-csv','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','end','json','offset','undefined','limit'];(function(_0x6f1a87,_0x5d5bcf){var _0x2495c7=function(_0x1c6733){while(--_0x1c6733){_0x6f1a87['push'](_0x6f1a87['shift']());}};_0x2495c7(++_0x5d5bcf);}(_0xf118,0xc2));var _0x8f11=function(_0x2a9548,_0x2742f6){_0x2a9548=_0x2a9548-0x0;var _0xf55c55=_0xf118[_0x2a9548];return _0xf55c55;};'use strict';var emlformat=require(_0x8f11('0x0'));var rimraf=require(_0x8f11('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8f11('0x2'));var moment=require(_0x8f11('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8f11('0x4'));var util=require('util');var path=require(_0x8f11('0x5'));var sox=require('sox');var csv=require(_0x8f11('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8f11('0x7'));var _=require(_0x8f11('0x8'));var squel=require(_0x8f11('0x9'));var crypto=require(_0x8f11('0xa'));var jsforce=require(_0x8f11('0xb'));var deskjs=require(_0x8f11('0xc'));var toCsv=require(_0x8f11('0x6'));var querystring=require(_0x8f11('0xd'));var Papa=require(_0x8f11('0xe'));var Redis=require(_0x8f11('0xf'));var authService=require(_0x8f11('0x10'));var qs=require(_0x8f11('0x11'));var as=require(_0x8f11('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8f11('0x13'))(_0x8f11('0x14'));var utils=require(_0x8f11('0x15'));var config=require(_0x8f11('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8f11('0x17'))['db'];function respondWithStatusCode(_0x40e833,_0x56266f){_0x56266f=_0x56266f||0xcc;return function(_0x533a23){if(_0x533a23){return _0x40e833[_0x8f11('0x18')](_0x56266f);}return _0x40e833[_0x8f11('0x19')](_0x56266f)[_0x8f11('0x1a')]();};}function respondWithResult(_0x4e7b8a,_0x362363){_0x362363=_0x362363||0xc8;return function(_0x2dd537){if(_0x2dd537){return _0x4e7b8a[_0x8f11('0x19')](_0x362363)[_0x8f11('0x1b')](_0x2dd537);}};}function respondWithFilteredResult(_0x48fe03,_0x143f83){return function(_0xd285e9){if(_0xd285e9){var _0x49c30b=typeof _0x143f83[_0x8f11('0x1c')]===_0x8f11('0x1d')&&typeof _0x143f83[_0x8f11('0x1e')]==='undefined';var _0x54f684=_0xd285e9[_0x8f11('0x1f')];var _0x3f74f3=_0x49c30b?0x0:_0x143f83[_0x8f11('0x1c')];var _0x5b26da=_0x49c30b?_0xd285e9[_0x8f11('0x1f')]:_0x143f83[_0x8f11('0x1c')]+_0x143f83[_0x8f11('0x1e')];var _0x1594e5;if(_0x5b26da>=_0x54f684){_0x5b26da=_0x54f684;_0x1594e5=0xc8;}else{_0x1594e5=0xce;}_0x48fe03[_0x8f11('0x19')](_0x1594e5);return _0x48fe03[_0x8f11('0x20')](_0x8f11('0x21'),_0x3f74f3+'-'+_0x5b26da+'/'+_0x54f684)['json'](_0xd285e9);}return null;};}function patchUpdates(_0x1f0394){return function(_0x1c5680){try{jsonpatch[_0x8f11('0x22')](_0x1c5680,_0x1f0394,!![]);}catch(_0x3e5fa3){return BPromise[_0x8f11('0x23')](_0x3e5fa3);}return _0x1c5680[_0x8f11('0x24')]();};}function saveUpdates(_0x1b3ecf,_0x866ad3){return function(_0x3045c1){if(_0x3045c1){return _0x3045c1[_0x8f11('0x25')](_0x1b3ecf)['then'](function(_0x56bea1){return _0x56bea1;});}return null;};}function removeEntity(_0x515d15,_0x279ed3){return function(_0x33f4fc){if(_0x33f4fc){return _0x33f4fc[_0x8f11('0x26')]()[_0x8f11('0x27')](function(){_0x515d15['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x24e9c4,_0x3d1cfe){return function(_0x561f78){if(!_0x561f78){_0x24e9c4[_0x8f11('0x18')](0x194);}return _0x561f78;};}function handleError(_0x450bb6,_0x95f9e8){_0x95f9e8=_0x95f9e8||0x1f4;return function(_0x4ca5c0){logger[_0x8f11('0x28')](_0x4ca5c0[_0x8f11('0x29')]);if(_0x4ca5c0['name']){delete _0x4ca5c0[_0x8f11('0x2a')];}_0x450bb6[_0x8f11('0x19')](_0x95f9e8)[_0x8f11('0x2b')](_0x4ca5c0);};}exports[_0x8f11('0x2c')]=function(_0x49caa7,_0x5bfaac){var _0x38cc7e={},_0x3f540e={},_0x163d8b={'count':0x0,'rows':[]};var _0x52b9dc=_[_0x8f11('0x2d')](db[_0x8f11('0x2e')][_0x8f11('0x2f')],function(_0x19c84d){return{'name':_0x19c84d[_0x8f11('0x30')],'type':_0x19c84d[_0x8f11('0x31')]['key']};});_0x3f540e[_0x8f11('0x32')]=_[_0x8f11('0x2d')](_0x52b9dc,_0x8f11('0x2a'));_0x3f540e[_0x8f11('0x33')]=_[_0x8f11('0x34')](_0x49caa7[_0x8f11('0x33')]);_0x3f540e[_0x8f11('0x35')]=_[_0x8f11('0x36')](_0x3f540e['model'],_0x3f540e[_0x8f11('0x33')]);_0x38cc7e['attributes']=_['intersection'](_0x3f540e[_0x8f11('0x32')],qs[_0x8f11('0x37')](_0x49caa7[_0x8f11('0x33')]['fields']));_0x38cc7e[_0x8f11('0x38')]=_0x38cc7e[_0x8f11('0x38')][_0x8f11('0x39')]?_0x38cc7e['attributes']:_0x3f540e[_0x8f11('0x32')];if(!_0x49caa7[_0x8f11('0x33')][_0x8f11('0x3a')]('nolimit')){_0x38cc7e['limit']=qs[_0x8f11('0x1e')](_0x49caa7[_0x8f11('0x33')][_0x8f11('0x1e')]);_0x38cc7e['offset']=qs[_0x8f11('0x1c')](_0x49caa7[_0x8f11('0x33')][_0x8f11('0x1c')]);}_0x38cc7e[_0x8f11('0x3b')]=qs[_0x8f11('0x3c')](_0x49caa7[_0x8f11('0x33')][_0x8f11('0x3c')]);_0x38cc7e[_0x8f11('0x3d')]=qs[_0x8f11('0x35')](_[_0x8f11('0x3e')](_0x49caa7[_0x8f11('0x33')],_0x3f540e[_0x8f11('0x35')]),_0x52b9dc);if(_0x49caa7['query'][_0x8f11('0x3f')]){_0x38cc7e[_0x8f11('0x3d')]=_['merge'](_0x38cc7e[_0x8f11('0x3d')],{'$or':_['map'](_0x52b9dc,function(_0x5dfc56){if(_0x5dfc56['type']!=='VIRTUAL'){var _0x99d393={};_0x99d393[_0x5dfc56[_0x8f11('0x2a')]]={'$like':'%'+_0x49caa7[_0x8f11('0x33')][_0x8f11('0x3f')]+'%'};return _0x99d393;}})});}_0x38cc7e=_[_0x8f11('0x40')]({},_0x38cc7e,_0x49caa7[_0x8f11('0x41')]);var _0x3dd4f5={'where':_0x38cc7e[_0x8f11('0x3d')]};return db[_0x8f11('0x2e')]['count'](_0x3dd4f5)[_0x8f11('0x27')](function(_0x2e1180){_0x163d8b[_0x8f11('0x1f')]=_0x2e1180;if(_0x49caa7[_0x8f11('0x33')]['includeAll']){_0x38cc7e[_0x8f11('0x42')]=[{'all':!![]}];}return db[_0x8f11('0x2e')]['findAll'](_0x38cc7e);})[_0x8f11('0x27')](function(_0x49ffe5){_0x163d8b[_0x8f11('0x43')]=_0x49ffe5;return _0x163d8b;})['then'](respondWithFilteredResult(_0x5bfaac,_0x38cc7e))['catch'](handleError(_0x5bfaac,null));};exports[_0x8f11('0x44')]=function(_0x441a8d,_0xc17fc3){var _0xa71cda={'raw':!![],'where':{'id':_0x441a8d['params']['id']}},_0x370d47={};_0x370d47[_0x8f11('0x32')]=_['keys'](db[_0x8f11('0x2e')]['rawAttributes']);_0x370d47[_0x8f11('0x33')]=_[_0x8f11('0x34')](_0x441a8d[_0x8f11('0x33')]);_0x370d47[_0x8f11('0x35')]=_[_0x8f11('0x36')](_0x370d47[_0x8f11('0x32')],_0x370d47[_0x8f11('0x33')]);_0xa71cda[_0x8f11('0x38')]=_['intersection'](_0x370d47['model'],qs[_0x8f11('0x37')](_0x441a8d[_0x8f11('0x33')][_0x8f11('0x37')]));_0xa71cda[_0x8f11('0x38')]=_0xa71cda['attributes'][_0x8f11('0x39')]?_0xa71cda['attributes']:_0x370d47['model'];if(_0x441a8d[_0x8f11('0x33')][_0x8f11('0x45')]){_0xa71cda['include']=[{'all':!![]}];}_0xa71cda=_[_0x8f11('0x40')]({},_0xa71cda,_0x441a8d[_0x8f11('0x41')]);return db[_0x8f11('0x2e')]['find'](_0xa71cda)[_0x8f11('0x27')](handleEntityNotFound(_0xc17fc3,null))['then'](respondWithResult(_0xc17fc3,null))[_0x8f11('0x46')](handleError(_0xc17fc3,null));};exports['create']=function(_0x164416,_0x5a3afd){return db['SquareReport'][_0x8f11('0x47')](_0x164416[_0x8f11('0x48')],{})[_0x8f11('0x27')](respondWithResult(_0x5a3afd,0xc9))[_0x8f11('0x46')](handleError(_0x5a3afd,null));};exports[_0x8f11('0x25')]=function(_0x2fe4d2,_0x3a5aa7){if(_0x2fe4d2[_0x8f11('0x48')]['id']){delete _0x2fe4d2['body']['id'];}return db['SquareReport'][_0x8f11('0x49')]({'where':{'id':_0x2fe4d2['params']['id']}})[_0x8f11('0x27')](handleEntityNotFound(_0x3a5aa7,null))[_0x8f11('0x27')](saveUpdates(_0x2fe4d2['body'],null))['then'](respondWithResult(_0x3a5aa7,null))[_0x8f11('0x46')](handleError(_0x3a5aa7,null));};exports[_0x8f11('0x26')]=function(_0x54ad22,_0x1b974d){return db[_0x8f11('0x2e')][_0x8f11('0x49')]({'where':{'id':_0x54ad22['params']['id']}})[_0x8f11('0x27')](handleEntityNotFound(_0x1b974d,null))[_0x8f11('0x27')](removeEntity(_0x1b974d,null))[_0x8f11('0x46')](handleError(_0x1b974d,null));};exports['describe']=function(_0x5ce010,_0xa2a4e0){return db[_0x8f11('0x2e')][_0x8f11('0x4a')]()[_0x8f11('0x27')](respondWithResult(_0xa2a4e0,null))[_0x8f11('0x46')](handleError(_0xa2a4e0,null));};
\ No newline at end of file
index 48a54f4..ba915f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4479=['exports','define','report_square','uniqueid','project_name','leaveAt','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes'];(function(_0x4e9072,_0x54fd7d){var _0x5a31d=function(_0x47dad5){while(--_0x47dad5){_0x4e9072['push'](_0x4e9072['shift']());}};_0x5a31d(++_0x54fd7d);}(_0x4479,0x1b9));var _0x9447=function(_0x3f8669,_0x5b73ff){_0x3f8669=_0x3f8669-0x0;var _0x47702a=_0x4479[_0x3f8669];return _0x47702a;};'use strict';var _=require('lodash');var util=require(_0x9447('0x0'));var logger=require('../../config/logger')(_0x9447('0x1'));var moment=require(_0x9447('0x2'));var BPromise=require(_0x9447('0x3'));var rp=require(_0x9447('0x4'));var fs=require('fs');var path=require(_0x9447('0x5'));var rimraf=require(_0x9447('0x6'));var config=require(_0x9447('0x7'));var attributes=require(_0x9447('0x8'));module[_0x9447('0x9')]=function(_0x17314d,_0x42ae3c){return _0x17314d[_0x9447('0xa')]('SquareReport',attributes,{'tableName':_0x9447('0xb'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0x9447('0xc'),_0x9447('0xd')]},{'name':_0x9447('0xe'),'fields':[_0x9447('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x861b=['leaveAt','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','uniqueid','project_name'];(function(_0x1baeaf,_0x41736f){var _0x246473=function(_0x1f280e){while(--_0x1f280e){_0x1baeaf['push'](_0x1baeaf['shift']());}};_0x246473(++_0x41736f);}(_0x861b,0x166));var _0xb861=function(_0x4e26b8,_0x1a3c12){_0x4e26b8=_0x4e26b8-0x0;var _0x10a6f0=_0x861b[_0x4e26b8];return _0x10a6f0;};'use strict';var _=require(_0xb861('0x0'));var util=require(_0xb861('0x1'));var logger=require(_0xb861('0x2'))(_0xb861('0x3'));var moment=require(_0xb861('0x4'));var BPromise=require('bluebird');var rp=require(_0xb861('0x5'));var fs=require('fs');var path=require(_0xb861('0x6'));var rimraf=require('rimraf');var config=require(_0xb861('0x7'));var attributes=require(_0xb861('0x8'));module[_0xb861('0x9')]=function(_0xff1325,_0x4ce63a){return _0xff1325[_0xb861('0xa')](_0xb861('0xb'),attributes,{'tableName':_0xb861('0xc'),'paranoid':![],'indexes':[{'name':_0xb861('0xd'),'fields':[_0xb861('0xe'),_0xb861('0xf')]},{'name':_0xb861('0x10'),'fields':[_0xb861('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 0a3f15f..d571497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf357=['UpdateSquareReport','update','where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareReport,\x20%s,\x20%s','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','catch','CreateSquareReport','SquareReport','create','body','options','raw','then','debug','stringify'];(function(_0x46b7cc,_0x22822e){var _0x24c647=function(_0x3c3c9d){while(--_0x3c3c9d){_0x46b7cc['push'](_0x46b7cc['shift']());}};_0x24c647(++_0x22822e);}(_0xf357,0x16e));var _0x7f35=function(_0x38bf8d,_0x48ebe5){_0x38bf8d=_0x38bf8d-0x0;var _0x30043c=_0xf357[_0x38bf8d];return _0x30043c;};'use strict';var _=require(_0x7f35('0x0'));var util=require(_0x7f35('0x1'));var moment=require(_0x7f35('0x2'));var BPromise=require('bluebird');var rs=require(_0x7f35('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7f35('0x4'))['db'];var utils=require(_0x7f35('0x5'));var logger=require(_0x7f35('0x6'))(_0x7f35('0x7'));var config=require(_0x7f35('0x8'));var jayson=require(_0x7f35('0x9'));var client=jayson[_0x7f35('0xa')][_0x7f35('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x34560b,_0x3b45e7,_0x4beb98){return new BPromise(function(_0x229d6f,_0x27e01b){return client[_0x7f35('0xc')](_0x34560b,_0x4beb98)['then'](function(_0x2fa09b){logger[_0x7f35('0xd')](_0x7f35('0xe'),_0x3b45e7,'request\x20sent');logger['debug'](_0x7f35('0xf'),_0x3b45e7,'request\x20sent',JSON['stringify'](_0x2fa09b));if(_0x2fa09b[_0x7f35('0x10')]){if(_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x11')]===0x1f4){logger[_0x7f35('0x10')](_0x7f35('0xe'),_0x3b45e7,_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x12')]);return _0x27e01b(_0x2fa09b['error'][_0x7f35('0x12')]);}logger[_0x7f35('0x10')](_0x7f35('0xe'),_0x3b45e7,_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x12')]);return _0x229d6f(_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x12')]);}else{logger['info']('SquareReport,\x20%s,\x20%s',_0x3b45e7,_0x7f35('0x13'));_0x229d6f(_0x2fa09b['result'][_0x7f35('0x12')]);}})[_0x7f35('0x14')](function(_0x1192a5){logger[_0x7f35('0x10')](_0x7f35('0xe'),_0x3b45e7,_0x1192a5);_0x27e01b(_0x1192a5);});});}exports[_0x7f35('0x15')]=function(_0x5463c5){var _0xe3a546=this;return new Promise(function(_0x3410f9,_0x19a8f9){return db[_0x7f35('0x16')][_0x7f35('0x17')](_0x5463c5[_0x7f35('0x18')],{'raw':_0x5463c5[_0x7f35('0x19')]?_0x5463c5[_0x7f35('0x19')][_0x7f35('0x1a')]===undefined?!![]:![]:!![]})[_0x7f35('0x1b')](function(_0x1859a4){logger[_0x7f35('0xd')](_0x7f35('0x15'),_0x5463c5);logger[_0x7f35('0x1c')]('CreateSquareReport',_0x5463c5,JSON[_0x7f35('0x1d')](_0x1859a4));_0x3410f9(_0x1859a4);})[_0x7f35('0x14')](function(_0x5d8cae){logger[_0x7f35('0x10')](_0x7f35('0x15'),_0x5d8cae[_0x7f35('0x12')],_0x5463c5);_0x19a8f9(_0xe3a546[_0x7f35('0x10')](0x1f4,_0x5d8cae[_0x7f35('0x12')]));});});};exports[_0x7f35('0x1e')]=function(_0x392743){var _0x440d93=this;return new Promise(function(_0x4c9998,_0xd0fd3b){return db[_0x7f35('0x16')][_0x7f35('0x1f')](_0x392743[_0x7f35('0x18')],{'raw':_0x392743[_0x7f35('0x19')]?_0x392743[_0x7f35('0x19')][_0x7f35('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x392743[_0x7f35('0x19')]?_0x392743[_0x7f35('0x19')][_0x7f35('0x20')]||null:null,'attributes':_0x392743[_0x7f35('0x19')]?_0x392743[_0x7f35('0x19')]['attributes']||null:null,'limit':_0x392743[_0x7f35('0x19')]?_0x392743['options']['limit']||null:null})[_0x7f35('0x1b')](function(_0x5ce473){logger[_0x7f35('0xd')](_0x7f35('0x1e'),_0x392743);logger[_0x7f35('0x1c')]('UpdateSquareReport',_0x392743,JSON[_0x7f35('0x1d')](_0x5ce473));_0x4c9998(_0x5ce473);})[_0x7f35('0x14')](function(_0x217d11){logger['error'](_0x7f35('0x1e'),_0x217d11[_0x7f35('0x12')],_0x392743);_0xd0fd3b(_0x440d93[_0x7f35('0x10')](0x1f4,_0x217d11['message']));});});};
\ No newline at end of file
+var _0x9acc=['info','request\x20sent','debug','stringify','message','error','result','SquareReport,\x20%s,\x20%s','SquareReport','body','options','raw','CreateSquareReport','catch','UpdateSquareReport','update','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x4cba5a,_0x1d9edb){var _0x254a07=function(_0x148b6e){while(--_0x148b6e){_0x4cba5a['push'](_0x4cba5a['shift']());}};_0x254a07(++_0x1d9edb);}(_0x9acc,0x168));var _0xc9ac=function(_0x1a3655,_0x517e7f){_0x1a3655=_0x1a3655-0x0;var _0x297ce2=_0x9acc[_0x1a3655];return _0x297ce2;};'use strict';var _=require(_0xc9ac('0x0'));var util=require('util');var moment=require(_0xc9ac('0x1'));var BPromise=require(_0xc9ac('0x2'));var rs=require(_0xc9ac('0x3'));var fs=require('fs');var Redis=require(_0xc9ac('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc9ac('0x5'))(_0xc9ac('0x6'));var config=require(_0xc9ac('0x7'));var jayson=require(_0xc9ac('0x8'));var client=jayson[_0xc9ac('0x9')][_0xc9ac('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x342b56,_0x30456e,_0x33f456){return new BPromise(function(_0x48c716,_0x26c1ec){return client['request'](_0x342b56,_0x33f456)[_0xc9ac('0xb')](function(_0x1ded8c){logger[_0xc9ac('0xc')]('SquareReport,\x20%s,\x20%s',_0x30456e,_0xc9ac('0xd'));logger[_0xc9ac('0xe')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x30456e,_0xc9ac('0xd'),JSON[_0xc9ac('0xf')](_0x1ded8c));if(_0x1ded8c['error']){if(_0x1ded8c['error']['code']===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x30456e,_0x1ded8c['error'][_0xc9ac('0x10')]);return _0x26c1ec(_0x1ded8c[_0xc9ac('0x11')][_0xc9ac('0x10')]);}logger[_0xc9ac('0x11')]('SquareReport,\x20%s,\x20%s',_0x30456e,_0x1ded8c['error']['message']);return _0x48c716(_0x1ded8c[_0xc9ac('0x11')][_0xc9ac('0x10')]);}else{logger['info']('SquareReport,\x20%s,\x20%s',_0x30456e,'request\x20sent');_0x48c716(_0x1ded8c[_0xc9ac('0x12')][_0xc9ac('0x10')]);}})['catch'](function(_0x37733f){logger[_0xc9ac('0x11')](_0xc9ac('0x13'),_0x30456e,_0x37733f);_0x26c1ec(_0x37733f);});});}exports['CreateSquareReport']=function(_0x1831f3){var _0x39b9ec=this;return new Promise(function(_0x3aa709,_0x360bf0){return db[_0xc9ac('0x14')]['create'](_0x1831f3[_0xc9ac('0x15')],{'raw':_0x1831f3[_0xc9ac('0x16')]?_0x1831f3['options'][_0xc9ac('0x17')]===undefined?!![]:![]:!![]})[_0xc9ac('0xb')](function(_0x52e560){logger[_0xc9ac('0xc')](_0xc9ac('0x18'),_0x1831f3);logger[_0xc9ac('0xe')](_0xc9ac('0x18'),_0x1831f3,JSON['stringify'](_0x52e560));_0x3aa709(_0x52e560);})[_0xc9ac('0x19')](function(_0x2a79af){logger[_0xc9ac('0x11')](_0xc9ac('0x18'),_0x2a79af['message'],_0x1831f3);_0x360bf0(_0x39b9ec[_0xc9ac('0x11')](0x1f4,_0x2a79af[_0xc9ac('0x10')]));});});};exports[_0xc9ac('0x1a')]=function(_0x4d9867){var _0x4b959c=this;return new Promise(function(_0x5b7966,_0x3c2b7e){return db['SquareReport'][_0xc9ac('0x1b')](_0x4d9867['body'],{'raw':_0x4d9867[_0xc9ac('0x16')]?_0x4d9867['options'][_0xc9ac('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d9867[_0xc9ac('0x16')]?_0x4d9867[_0xc9ac('0x16')][_0xc9ac('0x1c')]||null:null,'attributes':_0x4d9867['options']?_0x4d9867[_0xc9ac('0x16')][_0xc9ac('0x1d')]||null:null,'limit':_0x4d9867[_0xc9ac('0x16')]?_0x4d9867['options'][_0xc9ac('0x1e')]||null:null})['then'](function(_0x542d8c){logger[_0xc9ac('0xc')](_0xc9ac('0x1a'),_0x4d9867);logger['debug'](_0xc9ac('0x1a'),_0x4d9867,JSON['stringify'](_0x542d8c));_0x5b7966(_0x542d8c);})[_0xc9ac('0x19')](function(_0x14ea35){logger[_0xc9ac('0x11')](_0xc9ac('0x1a'),_0x14ea35[_0xc9ac('0x10')],_0x4d9867);_0x3c2b7e(_0x4b959c[_0xc9ac('0x11')](0x1f4,_0x14ea35['message']));});});};
\ No newline at end of file
index 3ddbfc5..f890fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51d9=['express','fs-extra','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','/describe','/:id','isAuthenticated','show','post','create','delete','exports','util','path','connect-timeout'];(function(_0x95589,_0x1c7de1){var _0x47933d=function(_0x457921){while(--_0x457921){_0x95589['push'](_0x95589['shift']());}};_0x47933d(++_0x1c7de1);}(_0x51d9,0x140));var _0x951d=function(_0x83a625,_0x3e2174){_0x83a625=_0x83a625-0x0;var _0x28fd96=_0x51d9[_0x83a625];return _0x28fd96;};'use strict';var multer=require('multer');var util=require(_0x951d('0x0'));var path=require(_0x951d('0x1'));var timeout=require(_0x951d('0x2'));var express=require(_0x951d('0x3'));var router=express['Router']();var fs_extra=require(_0x951d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x951d('0x5'));var config=require(_0x951d('0x6'));var controller=require(_0x951d('0x7'));router[_0x951d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x951d('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x951d('0x8')](_0x951d('0xa'),auth[_0x951d('0xb')](),controller[_0x951d('0xc')]);router[_0x951d('0xd')]('/',auth['isAuthenticated'](),controller[_0x951d('0xe')]);router['put'](_0x951d('0xa'),auth[_0x951d('0xb')](),controller['update']);router[_0x951d('0xf')](_0x951d('0xa'),auth[_0x951d('0xb')](),controller['destroy']);module[_0x951d('0x10')]=router;
\ No newline at end of file
+var _0xf953=['../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','show','post','create','put','/:id','update','destroy','multer','path'];(function(_0x4c8256,_0x427c67){var _0x2e0c1c=function(_0x106ec2){while(--_0x106ec2){_0x4c8256['push'](_0x4c8256['shift']());}};_0x2e0c1c(++_0x427c67);}(_0xf953,0xa8));var _0x3f95=function(_0x26df3e,_0x16d5f7){_0x26df3e=_0x26df3e-0x0;var _0x2d34ed=_0xf953[_0x26df3e];return _0x2d34ed;};'use strict';var multer=require(_0x3f95('0x0'));var util=require('util');var path=require(_0x3f95('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3f95('0x2'));var interaction=require(_0x3f95('0x3'));var config=require(_0x3f95('0x4'));var controller=require(_0x3f95('0x5'));router[_0x3f95('0x6')]('/',auth[_0x3f95('0x7')](),controller['index']);router['get'](_0x3f95('0x8'),auth['isAuthenticated'](),controller[_0x3f95('0x9')]);router[_0x3f95('0x6')]('/:id',auth[_0x3f95('0x7')](),controller[_0x3f95('0xa')]);router[_0x3f95('0xb')]('/',auth[_0x3f95('0x7')](),controller[_0x3f95('0xc')]);router[_0x3f95('0xd')](_0x3f95('0xe'),auth[_0x3f95('0x7')](),controller[_0x3f95('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3f95('0x10')]);module['exports']=router;
\ No newline at end of file
index 013616f..7077ebb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8daa=['sequelize','STRING'];(function(_0x269dac,_0x34f58f){var _0x549c20=function(_0x520222){while(--_0x520222){_0x269dac['push'](_0x269dac['shift']());}};_0x549c20(++_0x34f58f);}(_0x8daa,0x188));var _0xa8da=function(_0x290fa6,_0x16d017){_0x290fa6=_0x290fa6-0x0;var _0x47f1f3=_0x8daa[_0x290fa6];return _0x47f1f3;};'use strict';var Sequelize=require(_0xa8da('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xa8da('0x1')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0xa8da('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0xa8da('0x1')]},'callerid':{'type':Sequelize[_0xa8da('0x1')]}};
\ No newline at end of file
+var _0xf245=['TEXT','exports','STRING'];(function(_0x359cc6,_0x161486){var _0x3315de=function(_0x456a17){while(--_0x456a17){_0x359cc6['push'](_0x359cc6['shift']());}};_0x3315de(++_0x161486);}(_0xf245,0x1bd));var _0x5f24=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0xf245[_0x38537f];return _0x141e23;};'use strict';var Sequelize=require('sequelize');module[_0x5f24('0x0')]={'uniqueid':{'type':Sequelize[_0x5f24('0x1')]},'node':{'type':Sequelize[_0x5f24('0x1')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x5f24('0x2')]},'project_name':{'type':Sequelize[_0x5f24('0x1')]},'callerid':{'type':Sequelize[_0x5f24('0x1')]}};
\ No newline at end of file
index 6ed5162..fd8a875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61bf=['bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','keys','intersection','query','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','fields','attributes','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment'];(function(_0x2cab7d,_0xf73d16){var _0x4c46d6=function(_0x40f640){while(--_0x40f640){_0x2cab7d['push'](_0x2cab7d['shift']());}};_0x4c46d6(++_0xf73d16);}(_0x61bf,0x182));var _0xf61b=function(_0x4154db,_0x5875da){_0x4154db=_0x4154db-0x0;var _0x2cc561=_0x61bf[_0x4154db];return _0x2cc561;};'use strict';var emlformat=require(_0xf61b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf61b('0x1'));var jsonpatch=require(_0xf61b('0x2'));var rp=require('request-promise');var moment=require(_0xf61b('0x3'));var BPromise=require(_0xf61b('0x4'));var Mustache=require(_0xf61b('0x5'));var util=require('util');var path=require(_0xf61b('0x6'));var sox=require(_0xf61b('0x7'));var csv=require(_0xf61b('0x8'));var ejs=require(_0xf61b('0x9'));var fs=require('fs');var fs_extra=require(_0xf61b('0xa'));var _=require(_0xf61b('0xb'));var squel=require(_0xf61b('0xc'));var crypto=require(_0xf61b('0xd'));var jsforce=require(_0xf61b('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf61b('0x8'));var querystring=require(_0xf61b('0xf'));var Papa=require('papaparse');var Redis=require(_0xf61b('0x10'));var authService=require(_0xf61b('0x11'));var qs=require(_0xf61b('0x12'));var as=require(_0xf61b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf61b('0x14'))(_0xf61b('0x15'));var utils=require(_0xf61b('0x16'));var config=require(_0xf61b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf61b('0x18'))['db'];function respondWithStatusCode(_0x4e3f9a,_0x376ae4){_0x376ae4=_0x376ae4||0xcc;return function(_0x47a89f){if(_0x47a89f){return _0x4e3f9a[_0xf61b('0x19')](_0x376ae4);}return _0x4e3f9a[_0xf61b('0x1a')](_0x376ae4)[_0xf61b('0x1b')]();};}function respondWithResult(_0x7ed2a8,_0x1023eb){_0x1023eb=_0x1023eb||0xc8;return function(_0x3e7257){if(_0x3e7257){return _0x7ed2a8['status'](_0x1023eb)['json'](_0x3e7257);}};}function respondWithFilteredResult(_0x15d832,_0xf17e2){return function(_0x5a681c){if(_0x5a681c){var _0x58f038=typeof _0xf17e2['offset']===_0xf61b('0x1c')&&typeof _0xf17e2[_0xf61b('0x1d')]===_0xf61b('0x1c');var _0x46e186=_0x5a681c['count'];var _0x2255da=_0x58f038?0x0:_0xf17e2[_0xf61b('0x1e')];var _0x2566df=_0x58f038?_0x5a681c['count']:_0xf17e2['offset']+_0xf17e2[_0xf61b('0x1d')];var _0x1ad499;if(_0x2566df>=_0x46e186){_0x2566df=_0x46e186;_0x1ad499=0xc8;}else{_0x1ad499=0xce;}_0x15d832[_0xf61b('0x1a')](_0x1ad499);return _0x15d832[_0xf61b('0x1f')](_0xf61b('0x20'),_0x2255da+'-'+_0x2566df+'/'+_0x46e186)['json'](_0x5a681c);}return null;};}function patchUpdates(_0x379c27){return function(_0x562a7c){try{jsonpatch[_0xf61b('0x21')](_0x562a7c,_0x379c27,!![]);}catch(_0x37f7ed){return BPromise[_0xf61b('0x22')](_0x37f7ed);}return _0x562a7c[_0xf61b('0x23')]();};}function saveUpdates(_0x4574d5,_0x50fe6a){return function(_0x21a160){if(_0x21a160){return _0x21a160[_0xf61b('0x24')](_0x4574d5)[_0xf61b('0x25')](function(_0x342738){return _0x342738;});}return null;};}function removeEntity(_0x5d36ea,_0x4c953a){return function(_0x2fa660){if(_0x2fa660){return _0x2fa660[_0xf61b('0x26')]()['then'](function(){_0x5d36ea[_0xf61b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47e4eb,_0x1929d6){return function(_0x268b55){if(!_0x268b55){_0x47e4eb[_0xf61b('0x19')](0x194);}return _0x268b55;};}function handleError(_0x84be4a,_0x24f7c1){_0x24f7c1=_0x24f7c1||0x1f4;return function(_0x3648d4){logger[_0xf61b('0x27')](_0x3648d4[_0xf61b('0x28')]);if(_0x3648d4[_0xf61b('0x29')]){delete _0x3648d4[_0xf61b('0x29')];}_0x84be4a[_0xf61b('0x1a')](_0x24f7c1)[_0xf61b('0x2a')](_0x3648d4);};}exports[_0xf61b('0x2b')]=function(_0x1cbdfb,_0x21f86b){var _0x3f385a={},_0x225e94={},_0x3d259a={'count':0x0,'rows':[]};var _0x8e68c6=_[_0xf61b('0x2c')](db[_0xf61b('0x2d')][_0xf61b('0x2e')],function(_0x581228){return{'name':_0x581228[_0xf61b('0x2f')],'type':_0x581228[_0xf61b('0x30')][_0xf61b('0x31')]};});_0x225e94[_0xf61b('0x32')]=_[_0xf61b('0x2c')](_0x8e68c6,_0xf61b('0x29'));_0x225e94['query']=_[_0xf61b('0x33')](_0x1cbdfb['query']);_0x225e94['filters']=_[_0xf61b('0x34')](_0x225e94[_0xf61b('0x32')],_0x225e94[_0xf61b('0x35')]);_0x3f385a['attributes']=_['intersection'](_0x225e94[_0xf61b('0x32')],qs['fields'](_0x1cbdfb[_0xf61b('0x35')]['fields']));_0x3f385a['attributes']=_0x3f385a['attributes'][_0xf61b('0x36')]?_0x3f385a['attributes']:_0x225e94[_0xf61b('0x32')];if(!_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x37')](_0xf61b('0x38'))){_0x3f385a[_0xf61b('0x1d')]=qs[_0xf61b('0x1d')](_0x1cbdfb['query']['limit']);_0x3f385a[_0xf61b('0x1e')]=qs[_0xf61b('0x1e')](_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x1e')]);}_0x3f385a[_0xf61b('0x39')]=qs[_0xf61b('0x3a')](_0x1cbdfb['query'][_0xf61b('0x3a')]);_0x3f385a[_0xf61b('0x3b')]=qs[_0xf61b('0x3c')](_['pick'](_0x1cbdfb[_0xf61b('0x35')],_0x225e94[_0xf61b('0x3c')]),_0x8e68c6);if(_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x3d')]){_0x3f385a[_0xf61b('0x3b')]=_[_0xf61b('0x3e')](_0x3f385a[_0xf61b('0x3b')],{'$or':_['map'](_0x8e68c6,function(_0x2e2484){if(_0x2e2484[_0xf61b('0x30')]!==_0xf61b('0x3f')){var _0x1ac68e={};_0x1ac68e[_0x2e2484[_0xf61b('0x29')]]={'$like':'%'+_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x3d')]+'%'};return _0x1ac68e;}})});}_0x3f385a=_['merge']({},_0x3f385a,_0x1cbdfb[_0xf61b('0x40')]);var _0x11373e={'where':_0x3f385a[_0xf61b('0x3b')]};return db[_0xf61b('0x2d')][_0xf61b('0x41')](_0x11373e)['then'](function(_0x462ca5){_0x3d259a[_0xf61b('0x41')]=_0x462ca5;if(_0x1cbdfb['query'][_0xf61b('0x42')]){_0x3f385a[_0xf61b('0x43')]=[{'all':!![]}];}return db[_0xf61b('0x2d')][_0xf61b('0x44')](_0x3f385a);})[_0xf61b('0x25')](function(_0x11c86f){_0x3d259a['rows']=_0x11c86f;return _0x3d259a;})['then'](respondWithFilteredResult(_0x21f86b,_0x3f385a))[_0xf61b('0x45')](handleError(_0x21f86b,null));};exports[_0xf61b('0x46')]=function(_0x1cf23b,_0x11ddab){var _0x35f2c2={'raw':!![],'where':{'id':_0x1cf23b[_0xf61b('0x47')]['id']}},_0x57fd6d={};_0x57fd6d[_0xf61b('0x32')]=_[_0xf61b('0x33')](db[_0xf61b('0x2d')]['rawAttributes']);_0x57fd6d[_0xf61b('0x35')]=_[_0xf61b('0x33')](_0x1cf23b['query']);_0x57fd6d['filters']=_['intersection'](_0x57fd6d['model'],_0x57fd6d[_0xf61b('0x35')]);_0x35f2c2['attributes']=_[_0xf61b('0x34')](_0x57fd6d[_0xf61b('0x32')],qs[_0xf61b('0x48')](_0x1cf23b[_0xf61b('0x35')][_0xf61b('0x48')]));_0x35f2c2['attributes']=_0x35f2c2['attributes'][_0xf61b('0x36')]?_0x35f2c2[_0xf61b('0x49')]:_0x57fd6d[_0xf61b('0x32')];if(_0x1cf23b['query'][_0xf61b('0x42')]){_0x35f2c2['include']=[{'all':!![]}];}_0x35f2c2=_[_0xf61b('0x3e')]({},_0x35f2c2,_0x1cf23b[_0xf61b('0x40')]);return db[_0xf61b('0x2d')][_0xf61b('0x4a')](_0x35f2c2)[_0xf61b('0x25')](handleEntityNotFound(_0x11ddab,null))[_0xf61b('0x25')](respondWithResult(_0x11ddab,null))[_0xf61b('0x45')](handleError(_0x11ddab,null));};exports[_0xf61b('0x4b')]=function(_0x23aae7,_0x461ec6){return db['SquareDetailsReport'][_0xf61b('0x4b')](_0x23aae7[_0xf61b('0x4c')],{})[_0xf61b('0x25')](respondWithResult(_0x461ec6,0xc9))[_0xf61b('0x45')](handleError(_0x461ec6,null));};exports[_0xf61b('0x24')]=function(_0x11e6c6,_0x110672){if(_0x11e6c6[_0xf61b('0x4c')]['id']){delete _0x11e6c6[_0xf61b('0x4c')]['id'];}return db[_0xf61b('0x2d')][_0xf61b('0x4a')]({'where':{'id':_0x11e6c6[_0xf61b('0x47')]['id']}})[_0xf61b('0x25')](handleEntityNotFound(_0x110672,null))[_0xf61b('0x25')](saveUpdates(_0x11e6c6[_0xf61b('0x4c')],null))[_0xf61b('0x25')](respondWithResult(_0x110672,null))[_0xf61b('0x45')](handleError(_0x110672,null));};exports[_0xf61b('0x26')]=function(_0x3a2862,_0x38a51b){return db['SquareDetailsReport']['find']({'where':{'id':_0x3a2862[_0xf61b('0x47')]['id']}})[_0xf61b('0x25')](handleEntityNotFound(_0x38a51b,null))['then'](removeEntity(_0x38a51b,null))[_0xf61b('0x45')](handleError(_0x38a51b,null));};exports['describe']=function(_0x788b02,_0x54244d){return db[_0xf61b('0x2d')][_0xf61b('0x4d')]()['then'](respondWithResult(_0x54244d,null))[_0xf61b('0x45')](handleError(_0x54244d,null));};
\ No newline at end of file
+var _0x8676=['offset','set','Content-Range','apply','reject','save','update','destroy','error','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','pick','where','VIRTUAL','filter','merge','options','then','include','findAll','rows','catch','show','params','length','includeAll','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','limit','undefined','count'];(function(_0x40741b,_0x380f1a){var _0x30e499=function(_0x1c8dbc){while(--_0x1c8dbc){_0x40741b['push'](_0x40741b['shift']());}};_0x30e499(++_0x380f1a);}(_0x8676,0x16a));var _0x6867=function(_0x4ee391,_0x212f0a){_0x4ee391=_0x4ee391-0x0;var _0xc740f4=_0x8676[_0x4ee391];return _0xc740f4;};'use strict';var emlformat=require(_0x6867('0x0'));var rimraf=require(_0x6867('0x1'));var zipdir=require(_0x6867('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6867('0x3'));var moment=require(_0x6867('0x4'));var BPromise=require(_0x6867('0x5'));var Mustache=require(_0x6867('0x6'));var util=require(_0x6867('0x7'));var path=require(_0x6867('0x8'));var sox=require(_0x6867('0x9'));var csv=require(_0x6867('0xa'));var ejs=require(_0x6867('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6867('0xc'));var squel=require(_0x6867('0xd'));var crypto=require(_0x6867('0xe'));var jsforce=require(_0x6867('0xf'));var deskjs=require(_0x6867('0x10'));var toCsv=require(_0x6867('0xa'));var querystring=require(_0x6867('0x11'));var Papa=require(_0x6867('0x12'));var Redis=require('ioredis');var authService=require(_0x6867('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x6867('0x14'));var hardwareService=require(_0x6867('0x15'));var logger=require(_0x6867('0x16'))(_0x6867('0x17'));var utils=require(_0x6867('0x18'));var config=require(_0x6867('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b8d39,_0x37a32a){_0x37a32a=_0x37a32a||0xcc;return function(_0x300f8d){if(_0x300f8d){return _0x4b8d39[_0x6867('0x1a')](_0x37a32a);}return _0x4b8d39[_0x6867('0x1b')](_0x37a32a)[_0x6867('0x1c')]();};}function respondWithResult(_0x36f498,_0x2e31cc){_0x2e31cc=_0x2e31cc||0xc8;return function(_0x379393){if(_0x379393){return _0x36f498[_0x6867('0x1b')](_0x2e31cc)[_0x6867('0x1d')](_0x379393);}};}function respondWithFilteredResult(_0x40a1b9,_0x202ff9){return function(_0x23477f){if(_0x23477f){var _0x56a127=typeof _0x202ff9['offset']==='undefined'&&typeof _0x202ff9[_0x6867('0x1e')]===_0x6867('0x1f');var _0x2145c2=_0x23477f[_0x6867('0x20')];var _0x54824f=_0x56a127?0x0:_0x202ff9[_0x6867('0x21')];var _0x5810a1=_0x56a127?_0x23477f[_0x6867('0x20')]:_0x202ff9[_0x6867('0x21')]+_0x202ff9['limit'];var _0x4f6aa4;if(_0x5810a1>=_0x2145c2){_0x5810a1=_0x2145c2;_0x4f6aa4=0xc8;}else{_0x4f6aa4=0xce;}_0x40a1b9[_0x6867('0x1b')](_0x4f6aa4);return _0x40a1b9[_0x6867('0x22')](_0x6867('0x23'),_0x54824f+'-'+_0x5810a1+'/'+_0x2145c2)[_0x6867('0x1d')](_0x23477f);}return null;};}function patchUpdates(_0x59410d){return function(_0x1ebe81){try{jsonpatch[_0x6867('0x24')](_0x1ebe81,_0x59410d,!![]);}catch(_0x4c7700){return BPromise[_0x6867('0x25')](_0x4c7700);}return _0x1ebe81[_0x6867('0x26')]();};}function saveUpdates(_0x53047c,_0x53e47b){return function(_0x7403ba){if(_0x7403ba){return _0x7403ba[_0x6867('0x27')](_0x53047c)['then'](function(_0x42ae8a){return _0x42ae8a;});}return null;};}function removeEntity(_0x24c9f1,_0x3401e0){return function(_0x54523f){if(_0x54523f){return _0x54523f[_0x6867('0x28')]()['then'](function(){_0x24c9f1[_0x6867('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45e334,_0x237764){return function(_0x5eb146){if(!_0x5eb146){_0x45e334[_0x6867('0x1a')](0x194);}return _0x5eb146;};}function handleError(_0x24ff80,_0x3e03dc){_0x3e03dc=_0x3e03dc||0x1f4;return function(_0x163220){logger[_0x6867('0x29')](_0x163220['stack']);if(_0x163220['name']){delete _0x163220[_0x6867('0x2a')];}_0x24ff80[_0x6867('0x1b')](_0x3e03dc)[_0x6867('0x2b')](_0x163220);};}exports[_0x6867('0x2c')]=function(_0x2c5b30,_0x5778eb){var _0x48d32d={},_0x1a9c89={},_0x3ef5c9={'count':0x0,'rows':[]};var _0x3140fc=_[_0x6867('0x2d')](db[_0x6867('0x2e')][_0x6867('0x2f')],function(_0x49ed58){return{'name':_0x49ed58[_0x6867('0x30')],'type':_0x49ed58[_0x6867('0x31')][_0x6867('0x32')]};});_0x1a9c89[_0x6867('0x33')]=_[_0x6867('0x2d')](_0x3140fc,'name');_0x1a9c89[_0x6867('0x34')]=_[_0x6867('0x35')](_0x2c5b30[_0x6867('0x34')]);_0x1a9c89[_0x6867('0x36')]=_[_0x6867('0x37')](_0x1a9c89[_0x6867('0x33')],_0x1a9c89['query']);_0x48d32d[_0x6867('0x38')]=_[_0x6867('0x37')](_0x1a9c89[_0x6867('0x33')],qs[_0x6867('0x39')](_0x2c5b30[_0x6867('0x34')][_0x6867('0x39')]));_0x48d32d[_0x6867('0x38')]=_0x48d32d[_0x6867('0x38')]['length']?_0x48d32d[_0x6867('0x38')]:_0x1a9c89[_0x6867('0x33')];if(!_0x2c5b30[_0x6867('0x34')][_0x6867('0x3a')]('nolimit')){_0x48d32d['limit']=qs[_0x6867('0x1e')](_0x2c5b30[_0x6867('0x34')][_0x6867('0x1e')]);_0x48d32d[_0x6867('0x21')]=qs[_0x6867('0x21')](_0x2c5b30['query'][_0x6867('0x21')]);}_0x48d32d['order']=qs['sort'](_0x2c5b30[_0x6867('0x34')][_0x6867('0x3b')]);_0x48d32d['where']=qs[_0x6867('0x36')](_[_0x6867('0x3c')](_0x2c5b30[_0x6867('0x34')],_0x1a9c89[_0x6867('0x36')]),_0x3140fc);if(_0x2c5b30['query']['filter']){_0x48d32d[_0x6867('0x3d')]=_['merge'](_0x48d32d['where'],{'$or':_[_0x6867('0x2d')](_0x3140fc,function(_0x2d9708){if(_0x2d9708['type']!==_0x6867('0x3e')){var _0x2daf91={};_0x2daf91[_0x2d9708[_0x6867('0x2a')]]={'$like':'%'+_0x2c5b30[_0x6867('0x34')][_0x6867('0x3f')]+'%'};return _0x2daf91;}})});}_0x48d32d=_[_0x6867('0x40')]({},_0x48d32d,_0x2c5b30[_0x6867('0x41')]);var _0x3e9f5f={'where':_0x48d32d['where']};return db['SquareDetailsReport'][_0x6867('0x20')](_0x3e9f5f)[_0x6867('0x42')](function(_0x48b19c){_0x3ef5c9[_0x6867('0x20')]=_0x48b19c;if(_0x2c5b30['query']['includeAll']){_0x48d32d[_0x6867('0x43')]=[{'all':!![]}];}return db[_0x6867('0x2e')][_0x6867('0x44')](_0x48d32d);})[_0x6867('0x42')](function(_0x14e38d){_0x3ef5c9[_0x6867('0x45')]=_0x14e38d;return _0x3ef5c9;})['then'](respondWithFilteredResult(_0x5778eb,_0x48d32d))[_0x6867('0x46')](handleError(_0x5778eb,null));};exports[_0x6867('0x47')]=function(_0x2cff39,_0x281e49){var _0x1a4c8c={'raw':!![],'where':{'id':_0x2cff39[_0x6867('0x48')]['id']}},_0x13ba08={};_0x13ba08['model']=_[_0x6867('0x35')](db[_0x6867('0x2e')]['rawAttributes']);_0x13ba08[_0x6867('0x34')]=_[_0x6867('0x35')](_0x2cff39[_0x6867('0x34')]);_0x13ba08['filters']=_[_0x6867('0x37')](_0x13ba08[_0x6867('0x33')],_0x13ba08[_0x6867('0x34')]);_0x1a4c8c[_0x6867('0x38')]=_['intersection'](_0x13ba08[_0x6867('0x33')],qs[_0x6867('0x39')](_0x2cff39[_0x6867('0x34')][_0x6867('0x39')]));_0x1a4c8c[_0x6867('0x38')]=_0x1a4c8c[_0x6867('0x38')][_0x6867('0x49')]?_0x1a4c8c['attributes']:_0x13ba08[_0x6867('0x33')];if(_0x2cff39[_0x6867('0x34')][_0x6867('0x4a')]){_0x1a4c8c[_0x6867('0x43')]=[{'all':!![]}];}_0x1a4c8c=_[_0x6867('0x40')]({},_0x1a4c8c,_0x2cff39['options']);return db[_0x6867('0x2e')]['find'](_0x1a4c8c)['then'](handleEntityNotFound(_0x281e49,null))['then'](respondWithResult(_0x281e49,null))[_0x6867('0x46')](handleError(_0x281e49,null));};exports[_0x6867('0x4b')]=function(_0x5c00e2,_0x18a170){return db[_0x6867('0x2e')][_0x6867('0x4b')](_0x5c00e2[_0x6867('0x4c')],{})['then'](respondWithResult(_0x18a170,0xc9))[_0x6867('0x46')](handleError(_0x18a170,null));};exports[_0x6867('0x27')]=function(_0x302877,_0x3bf838){if(_0x302877[_0x6867('0x4c')]['id']){delete _0x302877[_0x6867('0x4c')]['id'];}return db[_0x6867('0x2e')][_0x6867('0x4d')]({'where':{'id':_0x302877[_0x6867('0x48')]['id']}})['then'](handleEntityNotFound(_0x3bf838,null))['then'](saveUpdates(_0x302877[_0x6867('0x4c')],null))[_0x6867('0x42')](respondWithResult(_0x3bf838,null))['catch'](handleError(_0x3bf838,null));};exports[_0x6867('0x28')]=function(_0x438623,_0x5f01e0){return db['SquareDetailsReport']['find']({'where':{'id':_0x438623[_0x6867('0x48')]['id']}})[_0x6867('0x42')](handleEntityNotFound(_0x5f01e0,null))[_0x6867('0x42')](removeEntity(_0x5f01e0,null))[_0x6867('0x46')](handleError(_0x5f01e0,null));};exports[_0x6867('0x4e')]=function(_0xa275f0,_0x35ac84){return db[_0x6867('0x2e')]['describe']()[_0x6867('0x42')](respondWithResult(_0x35ac84,null))[_0x6867('0x46')](handleError(_0x35ac84,null));};
\ No newline at end of file
index 3722028..22367a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc868=['path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x55c1b9,_0x6e45eb){var _0x1e6283=function(_0x21f41e){while(--_0x21f41e){_0x55c1b9['push'](_0x55c1b9['shift']());}};_0x1e6283(++_0x6e45eb);}(_0xc868,0xda));var _0x8c86=function(_0x4856fb,_0x444e61){_0x4856fb=_0x4856fb-0x0;var _0x453942=_0xc868[_0x4856fb];return _0x453942;};'use strict';var _=require(_0x8c86('0x0'));var util=require(_0x8c86('0x1'));var logger=require(_0x8c86('0x2'))(_0x8c86('0x3'));var moment=require(_0x8c86('0x4'));var BPromise=require(_0x8c86('0x5'));var rp=require(_0x8c86('0x6'));var fs=require('fs');var path=require(_0x8c86('0x7'));var rimraf=require(_0x8c86('0x8'));var config=require(_0x8c86('0x9'));var attributes=require(_0x8c86('0xa'));module[_0x8c86('0xb')]=function(_0x4a5c54,_0xc75a07){return _0x4a5c54[_0x8c86('0xc')](_0x8c86('0xd'),attributes,{'tableName':_0x8c86('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2844=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./squareReportDetail.attributes','define','SquareDetailsReport','report_square_details'];(function(_0x333798,_0x9f6561){var _0x389f4e=function(_0x193b28){while(--_0x193b28){_0x333798['push'](_0x333798['shift']());}};_0x389f4e(++_0x9f6561);}(_0x2844,0x1d4));var _0x4284=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x2844[_0x23e7c1];return _0x1add43;};'use strict';var _=require(_0x4284('0x0'));var util=require('util');var logger=require(_0x4284('0x1'))(_0x4284('0x2'));var moment=require(_0x4284('0x3'));var BPromise=require(_0x4284('0x4'));var rp=require(_0x4284('0x5'));var fs=require('fs');var path=require(_0x4284('0x6'));var rimraf=require(_0x4284('0x7'));var config=require('../../config/environment');var attributes=require(_0x4284('0x8'));module['exports']=function(_0x1112ab,_0x2e477b){return _0x1112ab[_0x4284('0x9')](_0x4284('0xa'),attributes,{'tableName':_0x4284('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index beb7922..6a3bf67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','body','options','raw','then','lodash','util'];(function(_0x540b47,_0x2591a8){var _0x4bddc4=function(_0x5b4161){while(--_0x5b4161){_0x540b47['push'](_0x540b47['shift']());}};_0x4bddc4(++_0x2591a8);}(_0xb62e,0x1de));var _0xeb62=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xb62e[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var moment=require(_0xeb62('0x2'));var BPromise=require(_0xeb62('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb62('0x4'));var db=require(_0xeb62('0x5'))['db'];var utils=require(_0xeb62('0x6'));var logger=require(_0xeb62('0x7'))(_0xeb62('0x8'));var config=require(_0xeb62('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb62('0xa')][_0xeb62('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31f5ea,_0x5e0dc4,_0x2065a0){return new BPromise(function(_0xab7049,_0x1e10ae){return client[_0xeb62('0xc')](_0x31f5ea,_0x2065a0)['then'](function(_0x5cdef3){logger[_0xeb62('0xd')](_0xeb62('0xe'),_0x5e0dc4,_0xeb62('0xf'));logger[_0xeb62('0x10')](_0xeb62('0x11'),_0x5e0dc4,_0xeb62('0xf'),JSON[_0xeb62('0x12')](_0x5cdef3));if(_0x5cdef3[_0xeb62('0x13')]){if(_0x5cdef3[_0xeb62('0x13')][_0xeb62('0x14')]===0x1f4){logger['error'](_0xeb62('0xe'),_0x5e0dc4,_0x5cdef3[_0xeb62('0x13')][_0xeb62('0x15')]);return _0x1e10ae(_0x5cdef3[_0xeb62('0x13')]['message']);}logger[_0xeb62('0x13')](_0xeb62('0xe'),_0x5e0dc4,_0x5cdef3[_0xeb62('0x13')]['message']);return _0xab7049(_0x5cdef3[_0xeb62('0x13')][_0xeb62('0x15')]);}else{logger[_0xeb62('0xd')]('SquareDetailsReport,\x20%s,\x20%s',_0x5e0dc4,_0xeb62('0xf'));_0xab7049(_0x5cdef3[_0xeb62('0x16')][_0xeb62('0x15')]);}})[_0xeb62('0x17')](function(_0x3fb280){logger[_0xeb62('0x13')](_0xeb62('0xe'),_0x5e0dc4,_0x3fb280);_0x1e10ae(_0x3fb280);});});}exports[_0xeb62('0x18')]=function(_0x39b138){var _0x27fd84=this;return new Promise(function(_0x27efc8,_0x11d516){return db[_0xeb62('0x19')]['create'](_0x39b138[_0xeb62('0x1a')],{'raw':_0x39b138[_0xeb62('0x1b')]?_0x39b138[_0xeb62('0x1b')][_0xeb62('0x1c')]===undefined?!![]:![]:!![]})[_0xeb62('0x1d')](function(_0x24cbf3){logger[_0xeb62('0xd')]('CreateSquareDetailsReport',_0x39b138);logger['debug'](_0xeb62('0x18'),_0x39b138,JSON[_0xeb62('0x12')](_0x24cbf3));_0x27efc8(_0x24cbf3);})[_0xeb62('0x17')](function(_0x13243f){logger[_0xeb62('0x13')]('CreateSquareDetailsReport',_0x13243f['message'],_0x39b138);_0x11d516(_0x27fd84[_0xeb62('0x13')](0x1f4,_0x13243f[_0xeb62('0x15')]));});});};
\ No newline at end of file
+var _0x3c66=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','SquareDetailsReport','options','CreateSquareDetailsReport','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x3e7e96,_0x5683ca){var _0x13f6f0=function(_0x320767){while(--_0x320767){_0x3e7e96['push'](_0x3e7e96['shift']());}};_0x13f6f0(++_0x5683ca);}(_0x3c66,0x8b));var _0x63c6=function(_0x4f73a0,_0xad6e0a){_0x4f73a0=_0x4f73a0-0x0;var _0x1dab98=_0x3c66[_0x4f73a0];return _0x1dab98;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x63c6('0x0'));var rs=require(_0x63c6('0x1'));var fs=require('fs');var Redis=require(_0x63c6('0x2'));var db=require(_0x63c6('0x3'))['db'];var utils=require(_0x63c6('0x4'));var logger=require(_0x63c6('0x5'))(_0x63c6('0x6'));var config=require(_0x63c6('0x7'));var jayson=require(_0x63c6('0x8'));var client=jayson[_0x63c6('0x9')][_0x63c6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b33e8,_0x47b438,_0x232099){return new BPromise(function(_0x50ff5c,_0x44e826){return client[_0x63c6('0xb')](_0x2b33e8,_0x232099)['then'](function(_0x386110){logger[_0x63c6('0xc')](_0x63c6('0xd'),_0x47b438,_0x63c6('0xe'));logger[_0x63c6('0xf')](_0x63c6('0x10'),_0x47b438,'request\x20sent',JSON[_0x63c6('0x11')](_0x386110));if(_0x386110[_0x63c6('0x12')]){if(_0x386110[_0x63c6('0x12')]['code']===0x1f4){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x47b438,_0x386110['error']['message']);return _0x44e826(_0x386110['error'][_0x63c6('0x13')]);}logger[_0x63c6('0x12')](_0x63c6('0xd'),_0x47b438,_0x386110[_0x63c6('0x12')][_0x63c6('0x13')]);return _0x50ff5c(_0x386110['error'][_0x63c6('0x13')]);}else{logger[_0x63c6('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x47b438,_0x63c6('0xe'));_0x50ff5c(_0x386110['result']['message']);}})[_0x63c6('0x14')](function(_0x571022){logger[_0x63c6('0x12')](_0x63c6('0xd'),_0x47b438,_0x571022);_0x44e826(_0x571022);});});}exports['CreateSquareDetailsReport']=function(_0xd5a3b5){var _0x2bbda5=this;return new Promise(function(_0x377f6e,_0x35ee57){return db[_0x63c6('0x15')]['create'](_0xd5a3b5['body'],{'raw':_0xd5a3b5['options']?_0xd5a3b5[_0x63c6('0x16')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xb7ba4f){logger[_0x63c6('0xc')]('CreateSquareDetailsReport',_0xd5a3b5);logger[_0x63c6('0xf')](_0x63c6('0x17'),_0xd5a3b5,JSON[_0x63c6('0x11')](_0xb7ba4f));_0x377f6e(_0xb7ba4f);})[_0x63c6('0x14')](function(_0x430a6e){logger['error'](_0x63c6('0x17'),_0x430a6e[_0x63c6('0x13')],_0xd5a3b5);_0x35ee57(_0x2bbda5[_0x63c6('0x12')](0x1f4,_0x430a6e[_0x63c6('0x13')]));});});};
\ No newline at end of file
index 6cf5723..6cf8b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ec=['killProcess','express','Router','../../components/auth/service','./system.controller','isAuthenticated','index','get','/process/:pid/kill'];(function(_0x4203e5,_0x24cb62){var _0x33f078=function(_0x43adab){while(--_0x43adab){_0x4203e5['push'](_0x4203e5['shift']());}};_0x33f078(++_0x24cb62);}(_0x04ec,0x184));var _0xc04e=function(_0xbc346f,_0x3db5c0){_0xbc346f=_0xbc346f-0x0;var _0x9f9260=_0x04ec[_0xbc346f];return _0x9f9260;};'use strict';var express=require(_0xc04e('0x0'));var router=express[_0xc04e('0x1')]();var auth=require(_0xc04e('0x2'));var controller=require(_0xc04e('0x3'));router['get']('/',auth[_0xc04e('0x4')](),controller[_0xc04e('0x5')]);router[_0xc04e('0x6')](_0xc04e('0x7'),auth[_0xc04e('0x4')](),controller[_0xc04e('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0x1783=['/process/:pid/kill','killProcess','../../components/auth/service','./system.controller','get','isAuthenticated','index'];(function(_0x5d4db8,_0x4ad01b){var _0x415548=function(_0x7ae456){while(--_0x7ae456){_0x5d4db8['push'](_0x5d4db8['shift']());}};_0x415548(++_0x4ad01b);}(_0x1783,0x1e5));var _0x3178=function(_0x32ed80,_0x3db315){_0x32ed80=_0x32ed80-0x0;var _0x212659=_0x1783[_0x32ed80];return _0x212659;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x3178('0x0'));var controller=require(_0x3178('0x1'));router[_0x3178('0x2')]('/',auth[_0x3178('0x3')](),controller[_0x3178('0x4')]);router[_0x3178('0x2')](_0x3178('0x5'),auth[_0x3178('0x3')](),controller[_0x3178('0x6')]);module['exports']=router;
\ No newline at end of file
index 7456bc3..43705a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x070c=['catch','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','split','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','api','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index','then'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x070c,0x1d8));var _0xc070=function(_0x403432,_0x12952a){_0x403432=_0x403432-0x0;var _0x259d36=_0x070c[_0x403432];return _0x259d36;};'use strict';var info=require('systeminformation');var exec=require(_0xc070('0x0'))[_0xc070('0x1')];var logger=require(_0xc070('0x2'))(_0xc070('0x3'));var util=require('util');var BPromise=require(_0xc070('0x4'));var _=require(_0xc070('0x5'));function handleError(_0x4d4a53,_0x4cbb6d,_0x5b24c6){_0x4cbb6d=_0x4cbb6d||0x1f4;return function(_0xdcbb9){logger[_0xc070('0x6')](_0xc070('0x7'),_0x5b24c6,_0x4cbb6d,util[_0xc070('0x8')](_0xdcbb9,{'showHidden':![],'depth':null}));delete _0xdcbb9[_0xc070('0x9')];_0x4d4a53[_0xc070('0xa')](_0x4cbb6d)[_0xc070('0xb')](_0xdcbb9);};}exports[_0xc070('0xc')]=function(_0x15861d,_0x414a18){return info['getAllData']()[_0xc070('0xd')](function(_0x41ec25){return _0x414a18[_0xc070('0xa')](0xc8)['json'](_0x41ec25);})[_0xc070('0xe')](function(_0x3b7f1c){return _0x414a18['status'](0x1f4)[_0xc070('0xf')](_0x3b7f1c);});};exports[_0xc070('0x10')]=function(_0x5e1894,_0x12c0ca){var _0xa7168e=[_0xc070('0x11')];return new BPromise(function(_0x68de8f,_0x16b110){return exec(util[_0xc070('0x12')](_0xc070('0x13'),_0x5e1894['params'][_0xc070('0x14')]),function(_0x41b070,_0x1f93c3,_0x3f6e4e){if(_0x41b070){return _0x16b110(_0x41b070);}return _0x68de8f(_0x1f93c3);});})[_0xc070('0xd')](function(_0x4989e0){var _0x14ce2e=![];var _0x131088=_0x4989e0[_0xc070('0x15')](/\n/);for(var _0x2763f1=0x0,_0x4883e0=_0xa7168e['length'];_0x2763f1<_0x4883e0,_0x14ce2e===![];_0x2763f1+=0x1){if(_0x4989e0['indexOf'](_0xa7168e[_0x2763f1])>=0x0){_0x14ce2e=!![];}}if(!_0x14ce2e){throw new Error(util[_0xc070('0x12')](_0xc070('0x16'),_0x5e1894[_0xc070('0x17')]['pid']));}process[_0xc070('0x18')](_0x5e1894[_0xc070('0x17')][_0xc070('0x14')],_0xc070('0x19'));return _0x12c0ca[_0xc070('0xa')](0xc8)[_0xc070('0xf')]({'message':util[_0xc070('0x12')](_0xc070('0x1a'),_0x5e1894[_0xc070('0x17')][_0xc070('0x14')])});})[_0xc070('0xe')](handleError(_0x12c0ca,null,_0xc070('0x10')));};
\ No newline at end of file
+var _0x46a8=['killProcess','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','split','length','indexOf','format','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','api','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','index','getAllData','then','status','json','catch'];(function(_0x555fe1,_0x250dad){var _0x32e425=function(_0x5bcd77){while(--_0x5bcd77){_0x555fe1['push'](_0x555fe1['shift']());}};_0x32e425(++_0x250dad);}(_0x46a8,0x185));var _0x846a=function(_0xb43e9f,_0x378aa4){_0xb43e9f=_0xb43e9f-0x0;var _0x52cd95=_0x46a8[_0xb43e9f];return _0x52cd95;};'use strict';var info=require('systeminformation');var exec=require(_0x846a('0x0'))[_0x846a('0x1')];var logger=require(_0x846a('0x2'))(_0x846a('0x3'));var util=require('util');var BPromise=require('bluebird');var _=require(_0x846a('0x4'));function handleError(_0x112404,_0x9e5358,_0x58666a){_0x9e5358=_0x9e5358||0x1f4;return function(_0x9f9ac8){logger[_0x846a('0x5')](_0x846a('0x6'),_0x58666a,_0x9e5358,util[_0x846a('0x7')](_0x9f9ac8,{'showHidden':![],'depth':null}));delete _0x9f9ac8[_0x846a('0x8')];_0x112404['status'](_0x9e5358)[_0x846a('0x9')](_0x9f9ac8);};}exports[_0x846a('0xa')]=function(_0x629c3b,_0x3bfd1e){return info[_0x846a('0xb')]()[_0x846a('0xc')](function(_0x3e432f){return _0x3bfd1e[_0x846a('0xd')](0xc8)[_0x846a('0xe')](_0x3e432f);})[_0x846a('0xf')](function(_0x23cc20){return _0x3bfd1e[_0x846a('0xd')](0x1f4)['json'](_0x23cc20);});};exports[_0x846a('0x10')]=function(_0x4f1dfd,_0x37aafa){var _0x475dce=['components/import/cm'];return new BPromise(function(_0x18b691,_0x106d2d){return exec(util['format'](_0x846a('0x11'),_0x4f1dfd[_0x846a('0x12')]['pid']),function(_0x56dfd2,_0x403ec4,_0x14da48){if(_0x56dfd2){return _0x106d2d(_0x56dfd2);}return _0x18b691(_0x403ec4);});})['then'](function(_0x2d806d){var _0x4f406e=![];var _0x5113f0=_0x2d806d[_0x846a('0x13')](/\n/);for(var _0x405ba7=0x0,_0x2085c8=_0x475dce[_0x846a('0x14')];_0x405ba7<_0x2085c8,_0x4f406e===![];_0x405ba7+=0x1){if(_0x2d806d[_0x846a('0x15')](_0x475dce[_0x405ba7])>=0x0){_0x4f406e=!![];}}if(!_0x4f406e){throw new Error(util[_0x846a('0x16')](_0x846a('0x17'),_0x4f1dfd['params'][_0x846a('0x18')]));}process[_0x846a('0x19')](_0x4f1dfd[_0x846a('0x12')][_0x846a('0x18')],'SIGINT');return _0x37aafa[_0x846a('0xd')](0xc8)['json']({'message':util[_0x846a('0x16')](_0x846a('0x1a'),_0x4f1dfd['params'][_0x846a('0x18')])});})[_0x846a('0xf')](handleError(_0x37aafa,null,_0x846a('0x10')));};
\ No newline at end of file
index 5bae51c..6d57d90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3264=['path','connect-timeout','express','../../components/auth/service','./tag.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','util'];(function(_0x39465d,_0x1bcf64){var _0x45c3d3=function(_0x1641ee){while(--_0x1641ee){_0x39465d['push'](_0x39465d['shift']());}};_0x45c3d3(++_0x1bcf64);}(_0x3264,0x7f));var _0x4326=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x3264[_0x4d613c];return _0x301fe3;};'use strict';var multer=require('multer');var util=require(_0x4326('0x0'));var path=require(_0x4326('0x1'));var timeout=require(_0x4326('0x2'));var express=require(_0x4326('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4326('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4326('0x5'));router[_0x4326('0x6')]('/',auth[_0x4326('0x7')](),controller[_0x4326('0x8')]);router['get'](_0x4326('0x9'),auth[_0x4326('0x7')](),controller[_0x4326('0xa')]);router[_0x4326('0xb')]('/',auth[_0x4326('0x7')](),controller[_0x4326('0xc')]);router[_0x4326('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x4326('0xe')]);router[_0x4326('0xf')](_0x4326('0x9'),auth[_0x4326('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x55e6=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','isAuthenticated','index','/:id','create','update','exports','multer','util'];(function(_0x2c230c,_0x2f28fa){var _0x2cabd6=function(_0x5437c7){while(--_0x5437c7){_0x2c230c['push'](_0x2c230c['shift']());}};_0x2cabd6(++_0x2f28fa);}(_0x55e6,0xca));var _0x655e=function(_0x1513c8,_0x3d4567){_0x1513c8=_0x1513c8-0x0;var _0x30ca27=_0x55e6[_0x1513c8];return _0x30ca27;};'use strict';var multer=require(_0x655e('0x0'));var util=require(_0x655e('0x1'));var path=require(_0x655e('0x2'));var timeout=require(_0x655e('0x3'));var express=require(_0x655e('0x4'));var router=express[_0x655e('0x5')]();var fs_extra=require(_0x655e('0x6'));var auth=require(_0x655e('0x7'));var interaction=require(_0x655e('0x8'));var config=require(_0x655e('0x9'));var controller=require(_0x655e('0xa'));router['get']('/',auth[_0x655e('0xb')](),controller[_0x655e('0xc')]);router['get'](_0x655e('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x655e('0xe')]);router['put']('/:id',auth[_0x655e('0xb')](),controller[_0x655e('0xf')]);router['delete']('/:id',auth[_0x655e('0xb')](),controller['destroy']);module[_0x655e('0x10')]=router;
\ No newline at end of file
index 214ca51..f121790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd7b=['#0091EA','sequelize','exports','STRING'];(function(_0x13301f,_0x521c8a){var _0x5a97b3=function(_0x165d92){while(--_0x165d92){_0x13301f['push'](_0x13301f['shift']());}};_0x5a97b3(++_0x521c8a);}(_0xfd7b,0xd1));var _0xbfd7=function(_0x2a7b8e,_0x50ffce){_0x2a7b8e=_0x2a7b8e-0x0;var _0x29b5c8=_0xfd7b[_0x2a7b8e];return _0x29b5c8;};'use strict';var Sequelize=require(_0xbfd7('0x0'));module[_0xbfd7('0x1')]={'name':{'type':Sequelize[_0xbfd7('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xbfd7('0x2')],'defaultValue':_0xbfd7('0x3')},'description':{'type':Sequelize[_0xbfd7('0x2')]}};
\ No newline at end of file
+var _0x85ed=['name','#0091EA','sequelize','exports','STRING'];(function(_0x4b3bfd,_0xd3a424){var _0x5d2fca=function(_0x3918ca){while(--_0x3918ca){_0x4b3bfd['push'](_0x4b3bfd['shift']());}};_0x5d2fca(++_0xd3a424);}(_0x85ed,0x66));var _0xd85e=function(_0x2e04ef,_0x31a596){_0x2e04ef=_0x2e04ef-0x0;var _0x5722b0=_0x85ed[_0x2e04ef];return _0x5722b0;};'use strict';var Sequelize=require(_0xd85e('0x0'));module[_0xd85e('0x1')]={'name':{'type':Sequelize[_0xd85e('0x2')],'unique':_0xd85e('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd85e('0x2')],'defaultValue':_0xd85e('0x4')},'description':{'type':Sequelize[_0xd85e('0x2')]}};
\ No newline at end of file
index e5da9b4..44d35a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303a=['update','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','get','sendStatus','error','stack','name','send','index','map','Tag','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','intersection','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x542575,_0x251452){var _0x11ad0a=function(_0x4bbede){while(--_0x4bbede){_0x542575['push'](_0x542575['shift']());}};_0x11ad0a(++_0x251452);}(_0x303a,0x1a0));var _0xa303=function(_0x5df2ff,_0x48300e){_0x5df2ff=_0x5df2ff-0x0;var _0x594f25=_0x303a[_0x5df2ff];return _0x594f25;};'use strict';var emlformat=require(_0xa303('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa303('0x1'));var jsonpatch=require(_0xa303('0x2'));var rp=require(_0xa303('0x3'));var moment=require(_0xa303('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa303('0x5'));var util=require(_0xa303('0x6'));var path=require(_0xa303('0x7'));var sox=require(_0xa303('0x8'));var csv=require(_0xa303('0x9'));var ejs=require(_0xa303('0xa'));var fs=require('fs');var fs_extra=require(_0xa303('0xb'));var _=require(_0xa303('0xc'));var squel=require(_0xa303('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa303('0x9'));var querystring=require(_0xa303('0xe'));var Papa=require('papaparse');var Redis=require(_0xa303('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa303('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa303('0x11'));var logger=require(_0xa303('0x12'))(_0xa303('0x13'));var utils=require(_0xa303('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa303('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf5df1e,_0x43a054){_0x43a054=_0x43a054||0xcc;return function(_0x2ed971){if(_0x2ed971){return _0xf5df1e['sendStatus'](_0x43a054);}return _0xf5df1e[_0xa303('0x16')](_0x43a054)[_0xa303('0x17')]();};}function respondWithResult(_0x28cd7f,_0xfa522c){_0xfa522c=_0xfa522c||0xc8;return function(_0xed0420){if(_0xed0420){return _0x28cd7f[_0xa303('0x16')](_0xfa522c)[_0xa303('0x18')](_0xed0420);}};}function respondWithFilteredResult(_0x2d1110,_0x4c8bc1){return function(_0x2c2939){if(_0x2c2939){var _0xd2e8ee=typeof _0x4c8bc1[_0xa303('0x19')]===_0xa303('0x1a')&&typeof _0x4c8bc1[_0xa303('0x1b')]===_0xa303('0x1a');var _0x5ec243=_0x2c2939[_0xa303('0x1c')];var _0x54ca49=_0xd2e8ee?0x0:_0x4c8bc1[_0xa303('0x19')];var _0x4cf535=_0xd2e8ee?_0x2c2939[_0xa303('0x1c')]:_0x4c8bc1['offset']+_0x4c8bc1[_0xa303('0x1b')];var _0xe263f9;if(_0x4cf535>=_0x5ec243){_0x4cf535=_0x5ec243;_0xe263f9=0xc8;}else{_0xe263f9=0xce;}_0x2d1110[_0xa303('0x16')](_0xe263f9);return _0x2d1110['set'](_0xa303('0x1d'),_0x54ca49+'-'+_0x4cf535+'/'+_0x5ec243)[_0xa303('0x18')](_0x2c2939);}return null;};}function patchUpdates(_0x1b0566){return function(_0x59e551){try{jsonpatch[_0xa303('0x1e')](_0x59e551,_0x1b0566,!![]);}catch(_0x3bc8c3){return BPromise[_0xa303('0x1f')](_0x3bc8c3);}return _0x59e551[_0xa303('0x20')]();};}function saveUpdates(_0x54b173,_0x14f9ab){return function(_0x2a2512){if(_0x2a2512){return _0x2a2512['update'](_0x54b173)[_0xa303('0x21')](function(_0x27c1d7){return _0x27c1d7;});}return null;};}function removeEntity(_0x25db9c,_0x122d1e){return function(_0x65ab0e){if(_0x65ab0e){return _0x65ab0e[_0xa303('0x22')]()[_0xa303('0x21')](function(){var _0x5d9dee=_0x65ab0e[_0xa303('0x23')]({'plain':!![]});var _0x57d584='Tags';return db['UserProfileResource']['destroy']({'where':{'type':_0x57d584,'resourceId':_0x5d9dee['id']}})['then'](function(){return _0x65ab0e;});})[_0xa303('0x21')](function(){_0x25db9c[_0xa303('0x16')](0xcc)[_0xa303('0x17')]();});}};}function handleEntityNotFound(_0xbb93f0,_0x94d3e4){return function(_0x48e79f){if(!_0x48e79f){_0xbb93f0[_0xa303('0x24')](0x194);}return _0x48e79f;};}function handleError(_0xb35c22,_0x561d73){_0x561d73=_0x561d73||0x1f4;return function(_0x221f59){logger[_0xa303('0x25')](_0x221f59[_0xa303('0x26')]);if(_0x221f59[_0xa303('0x27')]){delete _0x221f59[_0xa303('0x27')];}_0xb35c22[_0xa303('0x16')](_0x561d73)[_0xa303('0x28')](_0x221f59);};}exports[_0xa303('0x29')]=function(_0x411b42,_0x3383f4){var _0x9b7e61={},_0x217967={},_0x2f7775={'count':0x0,'rows':[]};var _0x1a44fc=_[_0xa303('0x2a')](db[_0xa303('0x2b')][_0xa303('0x2c')],function(_0x5de180){return{'name':_0x5de180['fieldName'],'type':_0x5de180[_0xa303('0x2d')][_0xa303('0x2e')]};});_0x217967[_0xa303('0x2f')]=_[_0xa303('0x2a')](_0x1a44fc,'name');_0x217967[_0xa303('0x30')]=_[_0xa303('0x31')](_0x411b42[_0xa303('0x30')]);_0x217967[_0xa303('0x32')]=_['intersection'](_0x217967[_0xa303('0x2f')],_0x217967[_0xa303('0x30')]);_0x9b7e61[_0xa303('0x33')]=_['intersection'](_0x217967[_0xa303('0x2f')],qs[_0xa303('0x34')](_0x411b42[_0xa303('0x30')]['fields']));_0x9b7e61[_0xa303('0x33')]=_0x9b7e61[_0xa303('0x33')][_0xa303('0x35')]?_0x9b7e61['attributes']:_0x217967[_0xa303('0x2f')];if(!_0x411b42[_0xa303('0x30')][_0xa303('0x36')](_0xa303('0x37'))){_0x9b7e61['limit']=qs[_0xa303('0x1b')](_0x411b42[_0xa303('0x30')][_0xa303('0x1b')]);_0x9b7e61[_0xa303('0x19')]=qs['offset'](_0x411b42[_0xa303('0x30')][_0xa303('0x19')]);}_0x9b7e61[_0xa303('0x38')]=qs[_0xa303('0x39')](_0x411b42[_0xa303('0x30')]['sort']);_0x9b7e61['where']=qs[_0xa303('0x32')](_[_0xa303('0x3a')](_0x411b42[_0xa303('0x30')],_0x217967['filters']),_0x1a44fc);if(_0x411b42['query'][_0xa303('0x3b')]){_0x9b7e61[_0xa303('0x3c')]=_[_0xa303('0x3d')](_0x9b7e61[_0xa303('0x3c')],{'$or':_['map'](_0x1a44fc,function(_0x59e413){if(_0x59e413[_0xa303('0x2d')]!==_0xa303('0x3e')){var _0x1c99b4={};_0x1c99b4[_0x59e413[_0xa303('0x27')]]={'$like':'%'+_0x411b42[_0xa303('0x30')]['filter']+'%'};return _0x1c99b4;}})});}_0x9b7e61=_[_0xa303('0x3d')]({},_0x9b7e61,_0x411b42[_0xa303('0x3f')]);var _0x468928={'where':_0x9b7e61[_0xa303('0x3c')]};return db['Tag']['count'](_0x468928)['then'](function(_0x1805f6){_0x2f7775[_0xa303('0x1c')]=_0x1805f6;if(_0x411b42[_0xa303('0x30')][_0xa303('0x40')]){_0x9b7e61[_0xa303('0x41')]=[{'all':!![]}];}return db[_0xa303('0x2b')][_0xa303('0x42')](_0x9b7e61);})[_0xa303('0x21')](function(_0x3615c5){_0x2f7775[_0xa303('0x43')]=_0x3615c5;return _0x2f7775;})[_0xa303('0x21')](respondWithFilteredResult(_0x3383f4,_0x9b7e61))['catch'](handleError(_0x3383f4,null));};exports['show']=function(_0x45fb2f,_0x54e558){var _0x839adf={'raw':!![],'where':{'id':_0x45fb2f[_0xa303('0x44')]['id']}},_0x564d59={};_0x564d59[_0xa303('0x2f')]=_[_0xa303('0x31')](db[_0xa303('0x2b')][_0xa303('0x2c')]);_0x564d59[_0xa303('0x30')]=_[_0xa303('0x31')](_0x45fb2f[_0xa303('0x30')]);_0x564d59[_0xa303('0x32')]=_[_0xa303('0x45')](_0x564d59[_0xa303('0x2f')],_0x564d59[_0xa303('0x30')]);_0x839adf[_0xa303('0x33')]=_['intersection'](_0x564d59[_0xa303('0x2f')],qs['fields'](_0x45fb2f[_0xa303('0x30')][_0xa303('0x34')]));_0x839adf[_0xa303('0x33')]=_0x839adf['attributes']['length']?_0x839adf[_0xa303('0x33')]:_0x564d59[_0xa303('0x2f')];if(_0x45fb2f[_0xa303('0x30')][_0xa303('0x40')]){_0x839adf[_0xa303('0x41')]=[{'all':!![]}];}_0x839adf=_[_0xa303('0x3d')]({},_0x839adf,_0x45fb2f[_0xa303('0x3f')]);return db[_0xa303('0x2b')][_0xa303('0x46')](_0x839adf)[_0xa303('0x21')](handleEntityNotFound(_0x54e558,null))['then'](respondWithResult(_0x54e558,null))[_0xa303('0x47')](handleError(_0x54e558,null));};exports[_0xa303('0x48')]=function(_0x532003,_0x3cc97a){return db['Tag'][_0xa303('0x48')](_0x532003[_0xa303('0x49')],{})[_0xa303('0x21')](function(_0x3fd1be){var _0x5a6da0=_0x532003[_0xa303('0x4a')][_0xa303('0x23')]({'plain':!![]});if(!_0x5a6da0)throw new Error(_0xa303('0x4b'));if(_0x5a6da0[_0xa303('0x4c')]===_0xa303('0x4a')){var _0x16242c=_0x3fd1be['get']({'plain':!![]});var _0x1a8bc0=_0xa303('0x4d');return db[_0xa303('0x4e')][_0xa303('0x46')]({'where':{'name':_0x1a8bc0,'userProfileId':_0x5a6da0['userProfileId']},'raw':!![]})['then'](function(_0x34547d){if(_0x34547d&&_0x34547d[_0xa303('0x4f')]===0x0){return db[_0xa303('0x50')]['create']({'name':_0x16242c[_0xa303('0x27')],'resourceId':_0x16242c['id'],'type':_0x34547d['name'],'sectionId':_0x34547d['id']},{})['then'](function(){return _0x3fd1be;});}else{return _0x3fd1be;}})['catch'](function(_0x51c4db){logger[_0xa303('0x25')](_0xa303('0x51'),_0x51c4db);throw _0x51c4db;});}return _0x3fd1be;})['then'](respondWithResult(_0x3cc97a,0xc9))[_0xa303('0x47')](handleError(_0x3cc97a,null));};exports[_0xa303('0x52')]=function(_0x33a667,_0x3cda19){if(_0x33a667[_0xa303('0x49')]['id']){delete _0x33a667['body']['id'];}return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x33a667[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x3cda19,null))[_0xa303('0x21')](saveUpdates(_0x33a667['body'],null))['then'](respondWithResult(_0x3cda19,null))[_0xa303('0x47')](handleError(_0x3cda19,null));};exports[_0xa303('0x22')]=function(_0x3e377b,_0x87a096){return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x3e377b[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x87a096,null))[_0xa303('0x21')](removeEntity(_0x87a096,null))['catch'](handleError(_0x87a096,null));};
\ No newline at end of file
+var _0xf290=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','get','Tags','UserProfileResource','error','stack','name','send','map','key','keys','query','filters','intersection','model','attributes','fields','length','sort','where','filter','merge','type','VIRTUAL','options','Tag','includeAll','include','findAll','rows','show','params','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0xdd2303,_0x259706){var _0x14f4fb=function(_0x64ad61){while(--_0x64ad61){_0xdd2303['push'](_0xdd2303['shift']());}};_0x14f4fb(++_0x259706);}(_0xf290,0xde));var _0x0f29=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xf290[_0x403c20];return _0x2b271a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0f29('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0f29('0x1'));var rp=require('request-promise');var moment=require(_0x0f29('0x2'));var BPromise=require(_0x0f29('0x3'));var Mustache=require(_0x0f29('0x4'));var util=require(_0x0f29('0x5'));var path=require(_0x0f29('0x6'));var sox=require('sox');var csv=require(_0x0f29('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0f29('0x8'));var _=require(_0x0f29('0x9'));var squel=require(_0x0f29('0xa'));var crypto=require(_0x0f29('0xb'));var jsforce=require(_0x0f29('0xc'));var deskjs=require(_0x0f29('0xd'));var toCsv=require(_0x0f29('0x7'));var querystring=require(_0x0f29('0xe'));var Papa=require(_0x0f29('0xf'));var Redis=require(_0x0f29('0x10'));var authService=require(_0x0f29('0x11'));var qs=require(_0x0f29('0x12'));var as=require(_0x0f29('0x13'));var hardwareService=require(_0x0f29('0x14'));var logger=require(_0x0f29('0x15'))('api');var utils=require(_0x0f29('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0f29('0x17'));var db=require(_0x0f29('0x18'))['db'];function respondWithStatusCode(_0x26bbec,_0x222c42){_0x222c42=_0x222c42||0xcc;return function(_0x195424){if(_0x195424){return _0x26bbec[_0x0f29('0x19')](_0x222c42);}return _0x26bbec['status'](_0x222c42)[_0x0f29('0x1a')]();};}function respondWithResult(_0x39961f,_0x2bb7b8){_0x2bb7b8=_0x2bb7b8||0xc8;return function(_0x368984){if(_0x368984){return _0x39961f[_0x0f29('0x1b')](_0x2bb7b8)[_0x0f29('0x1c')](_0x368984);}};}function respondWithFilteredResult(_0x1c518,_0x69df36){return function(_0x547404){if(_0x547404){var _0x4ac37d=typeof _0x69df36[_0x0f29('0x1d')]===_0x0f29('0x1e')&&typeof _0x69df36[_0x0f29('0x1f')]===_0x0f29('0x1e');var _0x4b3f0b=_0x547404[_0x0f29('0x20')];var _0x5d72a5=_0x4ac37d?0x0:_0x69df36[_0x0f29('0x1d')];var _0x4ca5e8=_0x4ac37d?_0x547404['count']:_0x69df36['offset']+_0x69df36[_0x0f29('0x1f')];var _0x8fc03f;if(_0x4ca5e8>=_0x4b3f0b){_0x4ca5e8=_0x4b3f0b;_0x8fc03f=0xc8;}else{_0x8fc03f=0xce;}_0x1c518[_0x0f29('0x1b')](_0x8fc03f);return _0x1c518[_0x0f29('0x21')](_0x0f29('0x22'),_0x5d72a5+'-'+_0x4ca5e8+'/'+_0x4b3f0b)[_0x0f29('0x1c')](_0x547404);}return null;};}function patchUpdates(_0x150271){return function(_0x4888b6){try{jsonpatch[_0x0f29('0x23')](_0x4888b6,_0x150271,!![]);}catch(_0x5a5a03){return BPromise['reject'](_0x5a5a03);}return _0x4888b6['save']();};}function saveUpdates(_0x5d94b9,_0x38a1ce){return function(_0x4a9dd8){if(_0x4a9dd8){return _0x4a9dd8['update'](_0x5d94b9)[_0x0f29('0x24')](function(_0x1840e0){return _0x1840e0;});}return null;};}function removeEntity(_0x346db8,_0x3402dc){return function(_0x29ca73){if(_0x29ca73){return _0x29ca73['destroy']()[_0x0f29('0x24')](function(){var _0x5a440f=_0x29ca73[_0x0f29('0x25')]({'plain':!![]});var _0x26f46f=_0x0f29('0x26');return db[_0x0f29('0x27')]['destroy']({'where':{'type':_0x26f46f,'resourceId':_0x5a440f['id']}})[_0x0f29('0x24')](function(){return _0x29ca73;});})['then'](function(){_0x346db8['status'](0xcc)[_0x0f29('0x1a')]();});}};}function handleEntityNotFound(_0x5c0202,_0x5bfcac){return function(_0x57dcc7){if(!_0x57dcc7){_0x5c0202['sendStatus'](0x194);}return _0x57dcc7;};}function handleError(_0x3c6ce9,_0x1f4ad2){_0x1f4ad2=_0x1f4ad2||0x1f4;return function(_0x4cc5a0){logger[_0x0f29('0x28')](_0x4cc5a0[_0x0f29('0x29')]);if(_0x4cc5a0[_0x0f29('0x2a')]){delete _0x4cc5a0['name'];}_0x3c6ce9['status'](_0x1f4ad2)[_0x0f29('0x2b')](_0x4cc5a0);};}exports['index']=function(_0x36b65c,_0x561c31){var _0x526364={},_0x7b10f={},_0x409b19={'count':0x0,'rows':[]};var _0xf59431=_[_0x0f29('0x2c')](db['Tag']['rawAttributes'],function(_0x3bb3c8){return{'name':_0x3bb3c8['fieldName'],'type':_0x3bb3c8['type'][_0x0f29('0x2d')]};});_0x7b10f['model']=_[_0x0f29('0x2c')](_0xf59431,'name');_0x7b10f['query']=_[_0x0f29('0x2e')](_0x36b65c[_0x0f29('0x2f')]);_0x7b10f[_0x0f29('0x30')]=_[_0x0f29('0x31')](_0x7b10f[_0x0f29('0x32')],_0x7b10f['query']);_0x526364[_0x0f29('0x33')]=_['intersection'](_0x7b10f[_0x0f29('0x32')],qs[_0x0f29('0x34')](_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x34')]));_0x526364['attributes']=_0x526364[_0x0f29('0x33')][_0x0f29('0x35')]?_0x526364['attributes']:_0x7b10f[_0x0f29('0x32')];if(!_0x36b65c[_0x0f29('0x2f')]['hasOwnProperty']('nolimit')){_0x526364[_0x0f29('0x1f')]=qs[_0x0f29('0x1f')](_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x1f')]);_0x526364[_0x0f29('0x1d')]=qs[_0x0f29('0x1d')](_0x36b65c['query'][_0x0f29('0x1d')]);}_0x526364['order']=qs[_0x0f29('0x36')](_0x36b65c['query'][_0x0f29('0x36')]);_0x526364[_0x0f29('0x37')]=qs[_0x0f29('0x30')](_['pick'](_0x36b65c['query'],_0x7b10f[_0x0f29('0x30')]),_0xf59431);if(_0x36b65c['query'][_0x0f29('0x38')]){_0x526364[_0x0f29('0x37')]=_[_0x0f29('0x39')](_0x526364[_0x0f29('0x37')],{'$or':_[_0x0f29('0x2c')](_0xf59431,function(_0x5afbb8){if(_0x5afbb8[_0x0f29('0x3a')]!==_0x0f29('0x3b')){var _0x42872b={};_0x42872b[_0x5afbb8[_0x0f29('0x2a')]]={'$like':'%'+_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x38')]+'%'};return _0x42872b;}})});}_0x526364=_[_0x0f29('0x39')]({},_0x526364,_0x36b65c[_0x0f29('0x3c')]);var _0x250b20={'where':_0x526364['where']};return db[_0x0f29('0x3d')][_0x0f29('0x20')](_0x250b20)[_0x0f29('0x24')](function(_0x11b1dc){_0x409b19['count']=_0x11b1dc;if(_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x3e')]){_0x526364[_0x0f29('0x3f')]=[{'all':!![]}];}return db[_0x0f29('0x3d')][_0x0f29('0x40')](_0x526364);})['then'](function(_0x410c59){_0x409b19[_0x0f29('0x41')]=_0x410c59;return _0x409b19;})[_0x0f29('0x24')](respondWithFilteredResult(_0x561c31,_0x526364))['catch'](handleError(_0x561c31,null));};exports[_0x0f29('0x42')]=function(_0x284279,_0x3a6479){var _0x338412={'raw':!![],'where':{'id':_0x284279[_0x0f29('0x43')]['id']}},_0x35f753={};_0x35f753[_0x0f29('0x32')]=_[_0x0f29('0x2e')](db['Tag']['rawAttributes']);_0x35f753['query']=_[_0x0f29('0x2e')](_0x284279[_0x0f29('0x2f')]);_0x35f753[_0x0f29('0x30')]=_[_0x0f29('0x31')](_0x35f753[_0x0f29('0x32')],_0x35f753[_0x0f29('0x2f')]);_0x338412['attributes']=_[_0x0f29('0x31')](_0x35f753['model'],qs[_0x0f29('0x34')](_0x284279['query'][_0x0f29('0x34')]));_0x338412[_0x0f29('0x33')]=_0x338412[_0x0f29('0x33')][_0x0f29('0x35')]?_0x338412[_0x0f29('0x33')]:_0x35f753['model'];if(_0x284279[_0x0f29('0x2f')][_0x0f29('0x3e')]){_0x338412[_0x0f29('0x3f')]=[{'all':!![]}];}_0x338412=_['merge']({},_0x338412,_0x284279[_0x0f29('0x3c')]);return db['Tag']['find'](_0x338412)[_0x0f29('0x24')](handleEntityNotFound(_0x3a6479,null))[_0x0f29('0x24')](respondWithResult(_0x3a6479,null))[_0x0f29('0x44')](handleError(_0x3a6479,null));};exports[_0x0f29('0x45')]=function(_0x20aa53,_0x335435){return db['Tag'][_0x0f29('0x45')](_0x20aa53[_0x0f29('0x46')],{})[_0x0f29('0x24')](function(_0x857564){var _0x2455d2=_0x20aa53[_0x0f29('0x47')][_0x0f29('0x25')]({'plain':!![]});if(!_0x2455d2)throw new Error(_0x0f29('0x48'));if(_0x2455d2[_0x0f29('0x49')]===_0x0f29('0x47')){var _0x5cd4a9=_0x857564['get']({'plain':!![]});var _0xa6231e=_0x0f29('0x26');return db[_0x0f29('0x4a')][_0x0f29('0x4b')]({'where':{'name':_0xa6231e,'userProfileId':_0x2455d2['userProfileId']},'raw':!![]})[_0x0f29('0x24')](function(_0xd624ad){if(_0xd624ad&&_0xd624ad[_0x0f29('0x4c')]===0x0){return db[_0x0f29('0x27')][_0x0f29('0x45')]({'name':_0x5cd4a9[_0x0f29('0x2a')],'resourceId':_0x5cd4a9['id'],'type':_0xd624ad[_0x0f29('0x2a')],'sectionId':_0xd624ad['id']},{})['then'](function(){return _0x857564;});}else{return _0x857564;}})[_0x0f29('0x44')](function(_0x6c1800){logger[_0x0f29('0x28')](_0x0f29('0x4d'),_0x6c1800);throw _0x6c1800;});}return _0x857564;})[_0x0f29('0x24')](respondWithResult(_0x335435,0xc9))[_0x0f29('0x44')](handleError(_0x335435,null));};exports['update']=function(_0x8c9780,_0x45d87c){if(_0x8c9780[_0x0f29('0x46')]['id']){delete _0x8c9780['body']['id'];}return db[_0x0f29('0x3d')]['find']({'where':{'id':_0x8c9780[_0x0f29('0x43')]['id']}})['then'](handleEntityNotFound(_0x45d87c,null))[_0x0f29('0x24')](saveUpdates(_0x8c9780[_0x0f29('0x46')],null))['then'](respondWithResult(_0x45d87c,null))[_0x0f29('0x44')](handleError(_0x45d87c,null));};exports[_0x0f29('0x4e')]=function(_0x4ae30,_0x4a2c08){return db[_0x0f29('0x3d')]['find']({'where':{'id':_0x4ae30[_0x0f29('0x43')]['id']}})[_0x0f29('0x24')](handleEntityNotFound(_0x4a2c08,null))['then'](removeEntity(_0x4a2c08,null))[_0x0f29('0x44')](handleError(_0x4a2c08,null));};
\ No newline at end of file
index fa1bf3b..a730a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc82b=['lodash','util','../../config/logger','bluebird','request-promise','path','../../config/environment','./tag.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc82b,0x1ef));var _0xbc82=function(_0x1e111d,_0x3e9402){_0x1e111d=_0x1e111d-0x0;var _0x33e354=_0xc82b[_0x1e111d];return _0x33e354;};'use strict';var _=require(_0xbc82('0x0'));var util=require(_0xbc82('0x1'));var logger=require(_0xbc82('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbc82('0x3'));var rp=require(_0xbc82('0x4'));var fs=require('fs');var path=require(_0xbc82('0x5'));var rimraf=require('rimraf');var config=require(_0xbc82('0x6'));var attributes=require(_0xbc82('0x7'));module[_0xbc82('0x8')]=function(_0x335dfb,_0x59c1a2){return _0x335dfb['define']('Tag',attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa60a=['Tag','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','define'];(function(_0x2712f2,_0x32ffde){var _0x27d051=function(_0x268445){while(--_0x268445){_0x2712f2['push'](_0x2712f2['shift']());}};_0x27d051(++_0x32ffde);}(_0xa60a,0x90));var _0xaa60=function(_0x3dd6dc,_0x3b841e){_0x3dd6dc=_0x3dd6dc-0x0;var _0x31f414=_0xa60a[_0x3dd6dc];return _0x31f414;};'use strict';var _=require(_0xaa60('0x0'));var util=require(_0xaa60('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xaa60('0x2'));var BPromise=require(_0xaa60('0x3'));var rp=require(_0xaa60('0x4'));var fs=require('fs');var path=require(_0xaa60('0x5'));var rimraf=require(_0xaa60('0x6'));var config=require(_0xaa60('0x7'));var attributes=require(_0xaa60('0x8'));module['exports']=function(_0x4b338e,_0x5766ee){return _0x4b338e[_0xaa60('0x9')](_0xaa60('0xa'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b69b441..657c3c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dae=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird'];(function(_0x4742ae,_0x47cd26){var _0x1553aa=function(_0x389cef){while(--_0x389cef){_0x4742ae['push'](_0x4742ae['shift']());}};_0x1553aa(++_0x47cd26);}(_0x2dae,0xc3));var _0xe2da=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x2dae[_0x166742];return _0xb7814a;};'use strict';var _=require(_0xe2da('0x0'));var util=require('util');var moment=require(_0xe2da('0x1'));var BPromise=require(_0xe2da('0x2'));var rs=require(_0xe2da('0x3'));var fs=require('fs');var Redis=require(_0xe2da('0x4'));var db=require(_0xe2da('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe2da('0x6'))(_0xe2da('0x7'));var config=require(_0xe2da('0x8'));var jayson=require(_0xe2da('0x9'));var client=jayson['client'][_0xe2da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x89c70b,_0x34cc98,_0x2efbd8){return new BPromise(function(_0x238da3,_0x1c71ea){return client[_0xe2da('0xb')](_0x89c70b,_0x2efbd8)[_0xe2da('0xc')](function(_0x68aa40){logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));logger[_0xe2da('0xf')](_0xe2da('0x10'),_0x34cc98,_0xe2da('0xe'),JSON[_0xe2da('0x11')](_0x68aa40));if(_0x68aa40[_0xe2da('0x12')]){if(_0x68aa40[_0xe2da('0x12')]['code']===0x1f4){logger[_0xe2da('0x12')]('Tag,\x20%s,\x20%s',_0x34cc98,_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);return _0x1c71ea(_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);}logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x68aa40[_0xe2da('0x12')]['message']);return _0x238da3(_0x68aa40[_0xe2da('0x12')]['message']);}else{logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));_0x238da3(_0x68aa40[_0xe2da('0x14')]['message']);}})[_0xe2da('0x15')](function(_0x2c0353){logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x2c0353);_0x1c71ea(_0x2c0353);});});}
\ No newline at end of file
+var _0xa37e=['Tag,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','request','then','info'];(function(_0x1422eb,_0x2d3581){var _0x130a4b=function(_0x18d4f4){while(--_0x18d4f4){_0x1422eb['push'](_0x1422eb['shift']());}};_0x130a4b(++_0x2d3581);}(_0xa37e,0x97));var _0xea37=function(_0xaf314a,_0x21e728){_0xaf314a=_0xaf314a-0x0;var _0x537fb9=_0xa37e[_0xaf314a];return _0x537fb9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xea37('0x0'));var BPromise=require(_0xea37('0x1'));var rs=require(_0xea37('0x2'));var fs=require('fs');var Redis=require(_0xea37('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xea37('0x4'));var logger=require('../../config/logger')(_0xea37('0x5'));var config=require(_0xea37('0x6'));var jayson=require(_0xea37('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36c489,_0x4a9e08,_0x4ae081){return new BPromise(function(_0x2c2890,_0x1401e1){return client[_0xea37('0x8')](_0x36c489,_0x4ae081)[_0xea37('0x9')](function(_0x5e4ebe){logger[_0xea37('0xa')](_0xea37('0xb'),_0x4a9e08,_0xea37('0xc'));logger['debug']('Tag,\x20%s,\x20%s,\x20%s',_0x4a9e08,_0xea37('0xc'),JSON[_0xea37('0xd')](_0x5e4ebe));if(_0x5e4ebe[_0xea37('0xe')]){if(_0x5e4ebe['error'][_0xea37('0xf')]===0x1f4){logger[_0xea37('0xe')](_0xea37('0xb'),_0x4a9e08,_0x5e4ebe['error'][_0xea37('0x10')]);return _0x1401e1(_0x5e4ebe[_0xea37('0xe')]['message']);}logger[_0xea37('0xe')]('Tag,\x20%s,\x20%s',_0x4a9e08,_0x5e4ebe[_0xea37('0xe')]['message']);return _0x2c2890(_0x5e4ebe[_0xea37('0xe')][_0xea37('0x10')]);}else{logger[_0xea37('0xa')](_0xea37('0xb'),_0x4a9e08,'request\x20sent');_0x2c2890(_0x5e4ebe[_0xea37('0x11')]['message']);}})['catch'](function(_0x3ae3cc){logger['error'](_0xea37('0xb'),_0x4a9e08,_0x3ae3cc);_0x1401e1(_0x3ae3cc);});});}
\ No newline at end of file
index 54317bd..24de591 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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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 89ecdec..02fc9a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x59616b,_0x38e534){var _0x5c4523=function(_0x166f2e){while(--_0x166f2e){_0x59616b['push'](_0x59616b['shift']());}};_0x5c4523(++_0x38e534);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x25a0ce,_0x1ff6fd){var _0xab8d97=function(_0x30daee){while(--_0x30daee){_0x25a0ce['push'](_0x25a0ce['shift']());}};_0xab8d97(++_0x1ff6fd);}(_0x2032,0xd9));var _0x2203=function(_0x228092,_0x28be38){_0x228092=_0x228092-0x0;var _0x4539f5=_0x2032[_0x228092];return _0x4539f5;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0b81d96..31de48b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe69c=['Queue:save','online','voicePause','UserVoiceQueueRt','upsert','isNil','interface','format','SIP/%s','all','UserVoicePrefix','spread','removeAgents','Sms','Queue:remove','getAgents','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','json','undefined','limit','count','offset','set','Content-Range','save','then','error','stack','status','send','index','Team','rawAttributes','fieldName','type','key','model','map','name','keys','query','filters','attributes','intersection','fields','length','nolimit','sort','where','merge','filter','includeAll','include','findAll','rows','options','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','params','sequelize','transaction','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','UserVoiceQueue','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','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','TeamVoicePrefix','VoicePrefixId','end','getQueues','findOne','channel','ValidationError','Unknown\x20channel','toLowerCase','order','pick','capitalize','Queues','addQueues','isValidChannel','add','ids','removeQueues','remove','addAgents','isArray','Voice','Chat','Mail','Fax','Openchannel','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','Queue','emit'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xe69c,0xb4));var _0xce69=function(_0x3a1ea5,_0x349f01){_0x3a1ea5=_0x3a1ea5-0x0;var _0xfac9b2=_0xe69c[_0x3a1ea5];return _0xfac9b2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xce69('0x0'));var zipdir=require(_0xce69('0x1'));var jsonpatch=require(_0xce69('0x2'));var rp=require(_0xce69('0x3'));var moment=require(_0xce69('0x4'));var BPromise=require(_0xce69('0x5'));var Mustache=require(_0xce69('0x6'));var util=require(_0xce69('0x7'));var path=require(_0xce69('0x8'));var sox=require(_0xce69('0x9'));var csv=require(_0xce69('0xa'));var ejs=require(_0xce69('0xb'));var fs=require('fs');var fs_extra=require(_0xce69('0xc'));var _=require(_0xce69('0xd'));var squel=require(_0xce69('0xe'));var crypto=require(_0xce69('0xf'));var jsforce=require(_0xce69('0x10'));var deskjs=require(_0xce69('0x11'));var toCsv=require('to-csv');var querystring=require(_0xce69('0x12'));var Papa=require(_0xce69('0x13'));var Redis=require(_0xce69('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xce69('0x15'));var as=require(_0xce69('0x16'));var hardwareService=require(_0xce69('0x17'));var logger=require(_0xce69('0x18'))('api');var utils=require(_0xce69('0x19'));var config=require(_0xce69('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xce69('0x1b')]=_[_0xce69('0x1c')](config['redis'],{'host':_0xce69('0x1d'),'port':0x18eb});var socket=require(_0xce69('0x1e'))(new Redis(config[_0xce69('0x1b')]));require(_0xce69('0x1f'))[_0xce69('0x20')](socket);function respondWithStatusCode(_0x318f33,_0x4fe34a){_0x4fe34a=_0x4fe34a||0xcc;return function(_0xfa7ef1){if(_0xfa7ef1){return _0x318f33[_0xce69('0x21')](_0x4fe34a);}return _0x318f33['status'](_0x4fe34a)['end']();};}function respondWithResult(_0xbc03ef,_0x2e4ca){_0x2e4ca=_0x2e4ca||0xc8;return function(_0x121581){if(_0x121581){return _0xbc03ef['status'](_0x2e4ca)[_0xce69('0x22')](_0x121581);}};}function respondWithFilteredResult(_0xcab22c,_0x4debd8){return function(_0x4489f6){if(_0x4489f6){var _0x597254=typeof _0x4debd8['offset']===_0xce69('0x23')&&typeof _0x4debd8[_0xce69('0x24')]===_0xce69('0x23');var _0x2f3395=_0x4489f6[_0xce69('0x25')];var _0x1d95f9=_0x597254?0x0:_0x4debd8[_0xce69('0x26')];var _0x2e8611=_0x597254?_0x4489f6[_0xce69('0x25')]:_0x4debd8[_0xce69('0x26')]+_0x4debd8[_0xce69('0x24')];var _0x563822;if(_0x2e8611>=_0x2f3395){_0x2e8611=_0x2f3395;_0x563822=0xc8;}else{_0x563822=0xce;}_0xcab22c['status'](_0x563822);return _0xcab22c[_0xce69('0x27')](_0xce69('0x28'),_0x1d95f9+'-'+_0x2e8611+'/'+_0x2f3395)[_0xce69('0x22')](_0x4489f6);}return null;};}function patchUpdates(_0xf24ed7){return function(_0x15e563){try{jsonpatch['apply'](_0x15e563,_0xf24ed7,!![]);}catch(_0x40316a){return BPromise['reject'](_0x40316a);}return _0x15e563[_0xce69('0x29')]();};}function saveUpdates(_0x59e802,_0x2fc6f9){return function(_0x23a5d0){if(_0x23a5d0){return _0x23a5d0['update'](_0x59e802)[_0xce69('0x2a')](function(_0x129793){return _0x129793;});}return null;};}function handleEntityNotFound(_0x2f4340,_0x42de4f){return function(_0x2b977e){if(!_0x2b977e){_0x2f4340[_0xce69('0x21')](0x194);}return _0x2b977e;};}function handleError(_0x3106aa,_0x327458){_0x327458=_0x327458||0x1f4;return function(_0x424edf){logger[_0xce69('0x2b')](_0x424edf[_0xce69('0x2c')]);if(_0x424edf['name']){delete _0x424edf['name'];}_0x3106aa[_0xce69('0x2d')](_0x327458)[_0xce69('0x2e')](_0x424edf);};}exports[_0xce69('0x2f')]=function(_0x2526e6,_0xd2d4e0){var _0xa28755={},_0x431999={},_0x26aba5={'count':0x0,'rows':[]};var _0x5636d4=_['map'](db[_0xce69('0x30')][_0xce69('0x31')],function(_0x56e164){return{'name':_0x56e164[_0xce69('0x32')],'type':_0x56e164[_0xce69('0x33')][_0xce69('0x34')]};});_0x431999[_0xce69('0x35')]=_[_0xce69('0x36')](_0x5636d4,_0xce69('0x37'));_0x431999['query']=_[_0xce69('0x38')](_0x2526e6[_0xce69('0x39')]);_0x431999[_0xce69('0x3a')]=_['intersection'](_0x431999[_0xce69('0x35')],_0x431999[_0xce69('0x39')]);_0xa28755[_0xce69('0x3b')]=_[_0xce69('0x3c')](_0x431999[_0xce69('0x35')],qs[_0xce69('0x3d')](_0x2526e6[_0xce69('0x39')][_0xce69('0x3d')]));_0xa28755['attributes']=_0xa28755[_0xce69('0x3b')][_0xce69('0x3e')]?_0xa28755['attributes']:_0x431999['model'];if(!_0x2526e6[_0xce69('0x39')]['hasOwnProperty'](_0xce69('0x3f'))){_0xa28755[_0xce69('0x24')]=qs[_0xce69('0x24')](_0x2526e6[_0xce69('0x39')][_0xce69('0x24')]);_0xa28755['offset']=qs[_0xce69('0x26')](_0x2526e6['query'][_0xce69('0x26')]);}_0xa28755['order']=qs[_0xce69('0x40')](_0x2526e6[_0xce69('0x39')][_0xce69('0x40')]);_0xa28755[_0xce69('0x41')]=qs['filters'](_['pick'](_0x2526e6['query'],_0x431999[_0xce69('0x3a')]),_0x5636d4);if(_0x2526e6[_0xce69('0x39')]['filter']){_0xa28755[_0xce69('0x41')]=_[_0xce69('0x42')](_0xa28755[_0xce69('0x41')],{'$or':_[_0xce69('0x36')](_0x5636d4,function(_0x7fb242){if(_0x7fb242[_0xce69('0x33')]!=='VIRTUAL'){var _0x3d38a5={};_0x3d38a5[_0x7fb242[_0xce69('0x37')]]={'$like':'%'+_0x2526e6[_0xce69('0x39')][_0xce69('0x43')]+'%'};return _0x3d38a5;}})});}_0xa28755=_[_0xce69('0x42')]({},_0xa28755,_0x2526e6['options']);var _0x311b10={'where':_0xa28755[_0xce69('0x41')]};return db[_0xce69('0x30')][_0xce69('0x25')](_0x311b10)['then'](function(_0x2140cc){_0x26aba5[_0xce69('0x25')]=_0x2140cc;if(_0x2526e6[_0xce69('0x39')][_0xce69('0x44')]){_0xa28755[_0xce69('0x45')]=[{'all':!![]}];}return db['Team'][_0xce69('0x46')](_0xa28755);})[_0xce69('0x2a')](function(_0x438d77){_0x26aba5[_0xce69('0x47')]=_0x438d77;return _0x26aba5;})[_0xce69('0x2a')](respondWithFilteredResult(_0xd2d4e0,_0xa28755))['catch'](handleError(_0xd2d4e0,null));};exports['show']=function(_0x4cb392,_0xed3cbd){var _0x3fde8b={'raw':![],'where':{'id':_0x4cb392['params']['id']}},_0x28a1bf={};_0x28a1bf[_0xce69('0x35')]=_['keys'](db[_0xce69('0x30')][_0xce69('0x31')]);_0x28a1bf[_0xce69('0x39')]=_['keys'](_0x4cb392[_0xce69('0x39')]);_0x28a1bf[_0xce69('0x3a')]=_[_0xce69('0x3c')](_0x28a1bf[_0xce69('0x35')],_0x28a1bf['query']);_0x3fde8b[_0xce69('0x3b')]=_[_0xce69('0x3c')](_0x28a1bf['model'],qs[_0xce69('0x3d')](_0x4cb392[_0xce69('0x39')][_0xce69('0x3d')]));_0x3fde8b['attributes']=_0x3fde8b[_0xce69('0x3b')][_0xce69('0x3e')]?_0x3fde8b[_0xce69('0x3b')]:_0x28a1bf[_0xce69('0x35')];if(_0x4cb392['query'][_0xce69('0x44')]){_0x3fde8b[_0xce69('0x45')]=[{'all':!![]}];}_0x3fde8b=_[_0xce69('0x42')]({},_0x3fde8b,_0x4cb392[_0xce69('0x48')]);return db[_0xce69('0x30')][_0xce69('0x49')](_0x3fde8b)[_0xce69('0x2a')](handleEntityNotFound(_0xed3cbd,null))[_0xce69('0x2a')](respondWithResult(_0xed3cbd,null))[_0xce69('0x4a')](handleError(_0xed3cbd,null));};exports['create']=function(_0x1f6b4a,_0x37542b){return db[_0xce69('0x30')][_0xce69('0x4b')](_0x1f6b4a[_0xce69('0x4c')],{})[_0xce69('0x2a')](function(_0x8c1f62){var _0x24ed9d=_0x1f6b4a[_0xce69('0x4d')][_0xce69('0x4e')]({'plain':!![]});if(!_0x24ed9d)throw new Error(_0xce69('0x4f'));if(_0x24ed9d[_0xce69('0x50')]===_0xce69('0x4d')){var _0x3810c5=_0x8c1f62['get']({'plain':!![]});var _0x15ff73=_0xce69('0x51');return db[_0xce69('0x52')][_0xce69('0x49')]({'where':{'name':_0x15ff73,'userProfileId':_0x24ed9d[_0xce69('0x53')]},'raw':!![]})['then'](function(_0x43e2f2){if(_0x43e2f2&&_0x43e2f2[_0xce69('0x54')]===0x0){return db[_0xce69('0x55')]['create']({'name':_0x3810c5[_0xce69('0x37')],'resourceId':_0x3810c5['id'],'type':_0x43e2f2[_0xce69('0x37')],'sectionId':_0x43e2f2['id']},{})[_0xce69('0x2a')](function(){return _0x8c1f62;});}else{return _0x8c1f62;}})[_0xce69('0x4a')](function(_0x22147b){logger['error'](_0xce69('0x56'),_0x22147b);throw _0x22147b;});}return _0x8c1f62;})['then'](respondWithResult(_0x37542b,0xc9))['catch'](handleError(_0x37542b,null));};exports[_0xce69('0x57')]=function(_0x1ca122,_0x329b8e){if(_0x1ca122[_0xce69('0x4c')]['id']){delete _0x1ca122[_0xce69('0x4c')]['id'];}return db[_0xce69('0x30')][_0xce69('0x49')]({'where':{'id':_0x1ca122['params']['id']}})[_0xce69('0x2a')](handleEntityNotFound(_0x329b8e,null))['then'](saveUpdates(_0x1ca122['body'],null))[_0xce69('0x2a')](respondWithResult(_0x329b8e,null))[_0xce69('0x4a')](handleError(_0x329b8e,null));};exports[_0xce69('0x58')]=function(_0x492519,_0x2bc4b5){var _0x519e4b=_0x492519[_0xce69('0x59')]['id'];var _0x2cf0f1=[];return db[_0xce69('0x5a')][_0xce69('0x5b')](function(_0x1bc4cc){var _0x1f39db='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x519e4b;return db[_0xce69('0x5a')]['query'](_0x1f39db,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc})['then'](function(_0x5649ce){_0x2cf0f1=_['map'](_0x5649ce,function(_0x4424af){return Number(_0x4424af[_0xce69('0x5f')]);});})['then'](function(){var _0x30e6c3=_0xce69('0x60')+_0x519e4b;return db[_0xce69('0x5a')][_0xce69('0x39')](_0x30e6c3,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x158279){var _0x17ed9e=_['map'](_0x158279,function(_0x3d3f26){return Number(_0x3d3f26[_0xce69('0x61')]);});return db[_0xce69('0x62')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'VoiceQueueId':{'$in':_0x17ed9e}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x2bfd55='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x519e4b;return db['sequelize'][_0xce69('0x39')](_0x2bfd55,{'type':db[_0xce69('0x5c')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1bc4cc});})['then'](function(_0x237d82){var _0x359f98=_['map'](_0x237d82,function(_0xcc0167){return Number(_0xcc0167['MailQueueId']);});return db['UserMailQueue'][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'MailQueueId':{'$in':_0x359f98}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x2fc64f='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x519e4b;return db['sequelize'][_0xce69('0x39')](_0x2fc64f,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})['then'](function(_0x284680){var _0x16ded8=_[_0xce69('0x36')](_0x284680,function(_0x3502f8){return Number(_0x3502f8[_0xce69('0x63')]);});return db[_0xce69('0x64')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'SmsQueueId':{'$in':_0x16ded8}},'transaction':_0x1bc4cc});})['then'](function(){var _0x4941b1=_0xce69('0x65')+_0x519e4b;return db['sequelize']['query'](_0x4941b1,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x35f9f1){var _0x1332ab=_[_0xce69('0x36')](_0x35f9f1,function(_0x210552){return Number(_0x210552[_0xce69('0x66')]);});return db[_0xce69('0x67')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'ChatQueueId':{'$in':_0x1332ab}},'transaction':_0x1bc4cc});})['then'](function(){var _0x4377a8=_0xce69('0x68')+_0x519e4b;return db[_0xce69('0x5a')][_0xce69('0x39')](_0x4377a8,{'type':db[_0xce69('0x5c')]['QueryTypes'][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x108f87){var _0x44b57e=_[_0xce69('0x36')](_0x108f87,function(_0x38712a){return Number(_0x38712a[_0xce69('0x69')]);});return db[_0xce69('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x2cf0f1},'FaxQueueId':{'$in':_0x44b57e}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x1223da=_0xce69('0x6b')+_0x519e4b;return db[_0xce69('0x5a')][_0xce69('0x39')](_0x1223da,{'type':db[_0xce69('0x5c')]['QueryTypes'][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x28cd5a){var _0x26b016=_[_0xce69('0x36')](_0x28cd5a,function(_0x5b931e){return Number(_0x5b931e[_0xce69('0x6c')]);});return db[_0xce69('0x6d')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'OpenchannelQueueId':{'$in':_0x26b016}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x580157=_0xce69('0x6e')+_0x519e4b;return db['sequelize'][_0xce69('0x39')](_0x580157,{'type':db['Sequelize'][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x243707){var _0x4db058=_[_0xce69('0x36')](_0x243707,function(_0x16ea4e){return Number(_0x16ea4e[_0xce69('0x6f')]);});return db['UserWhatsappQueue'][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'WhatsappQueueId':{'$in':_0x4db058}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){return db[_0xce69('0x70')][_0xce69('0x49')]({'where':{'TeamId':_0x519e4b}});})[_0xce69('0x2a')](function(_0x13cfac){if(_0x13cfac===null){return;}return db['UserVoicePrefix']['destroy']({'where':{'UserId':{'$in':_0x2cf0f1},'VoicePrefixId':_0x13cfac[_0xce69('0x71')]},'transaction':_0x1bc4cc});})['then'](function(){return db['Team']['destroy']({'where':{'id':_0x519e4b},'cascade':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x41dfb0){if(_0x41dfb0===0x0){_0x2bc4b5[_0xce69('0x21')](0x194);}else{return db[_0xce69('0x55')][_0xce69('0x58')]({'where':{'type':'Teams','resourceId':_0x519e4b},'cascade':!![],'transaction':_0x1bc4cc})['then'](function(){_0x2bc4b5[_0xce69('0x2d')](0xcc)[_0xce69('0x72')]();});}})[_0xce69('0x4a')](function(_0x2e8bd4){_0x2bc4b5['status'](0x1f4)[_0xce69('0x2e')](_0x2e8bd4);});});};exports[_0xce69('0x73')]=function(_0x1f4359,_0x141ee3,_0x586a5e){return db[_0xce69('0x30')][_0xce69('0x74')]({'where':{'id':_0x1f4359[_0xce69('0x59')]['id']}})['then'](handleEntityNotFound(_0x141ee3,null))['then'](function(_0x387c7e){if(!_0x1f4359['query'][_0xce69('0x75')]||!utils['isValidChannel'](_0x1f4359[_0xce69('0x39')]['channel'])){throw new db[(_0xce69('0x5c'))][(_0xce69('0x76'))](_0xce69('0x77'));}var _0xcf40b2={};var _0x1f786e={};_0x1f786e[_0xce69('0x35')]=_[_0xce69('0x38')](db[_['capitalize'](_0x1f4359[_0xce69('0x39')]['channel'][_0xce69('0x78')]())+'Queue']['rawAttributes']);_0x1f786e['query']=_[_0xce69('0x38')](_0x1f4359['query']);_0x1f786e[_0xce69('0x3a')]=_[_0xce69('0x3c')](_0x1f786e['model'],_0x1f786e['query']);_0xcf40b2[_0xce69('0x3b')]=_[_0xce69('0x3c')](_0x1f786e[_0xce69('0x35')],qs[_0xce69('0x3d')](_0x1f4359[_0xce69('0x39')]['fields']));_0xcf40b2[_0xce69('0x3b')]=_0xcf40b2[_0xce69('0x3b')]['length']?_0xcf40b2['attributes']:_0x1f786e[_0xce69('0x35')];_0xcf40b2[_0xce69('0x24')]=qs['limit'](_0x1f4359[_0xce69('0x39')][_0xce69('0x24')]);_0xcf40b2[_0xce69('0x26')]=qs[_0xce69('0x26')](_0x1f4359[_0xce69('0x39')][_0xce69('0x26')]);_0xcf40b2[_0xce69('0x79')]=qs['sort'](_0x1f4359[_0xce69('0x39')][_0xce69('0x40')]);_0xcf40b2[_0xce69('0x41')]=qs[_0xce69('0x3a')](_[_0xce69('0x7a')](_0x1f4359[_0xce69('0x39')],_0x1f786e['filters']));_0xcf40b2=_[_0xce69('0x42')]({},_0xcf40b2,_0x1f4359[_0xce69('0x48')]);return _0x387c7e['get'+_[_0xce69('0x7b')](_0x1f4359[_0xce69('0x39')][_0xce69('0x75')]['toLowerCase']())+_0xce69('0x7c')](_0xcf40b2);})[_0xce69('0x2a')](respondWithResult(_0x141ee3,null))['catch'](handleError(_0x141ee3,null));};exports[_0xce69('0x7d')]=function(_0x5d5a21,_0x2a45e8,_0x590c43){return db[_0xce69('0x30')]['findOne']({'where':{'id':_0x5d5a21[_0xce69('0x59')]['id']}})[_0xce69('0x2a')](function(_0x1a2251){if(_0x1a2251){if(!_0x5d5a21[_0xce69('0x4c')][_0xce69('0x75')]||!utils[_0xce69('0x7e')](_0x5d5a21['body'][_0xce69('0x75')])){throw new db[(_0xce69('0x5c'))][(_0xce69('0x76'))](_0xce69('0x77'));}return _0x1a2251[_0xce69('0x7f')+_[_0xce69('0x7b')](_0x5d5a21[_0xce69('0x4c')]['channel'][_0xce69('0x78')]())+'Queues'](_0x5d5a21[_0xce69('0x4c')][_0xce69('0x80')]);}return null;})['then'](handleEntityNotFound(_0x2a45e8,null))[_0xce69('0x2a')](respondWithStatusCode(_0x2a45e8,null))[_0xce69('0x4a')](handleError(_0x2a45e8,null));};exports[_0xce69('0x81')]=function(_0x37557f,_0x28fb39,_0x1122ff){return db[_0xce69('0x30')][_0xce69('0x74')]({'where':{'id':_0x37557f['params']['id']}})['then'](function(_0x6b8878){if(_0x6b8878){if(!_0x37557f['query'][_0xce69('0x75')]||!utils[_0xce69('0x7e')](_0x37557f[_0xce69('0x39')][_0xce69('0x75')])){throw new db[(_0xce69('0x5c'))][(_0xce69('0x76'))](_0xce69('0x77'));}return _0x6b8878[_0xce69('0x82')+_[_0xce69('0x7b')](_0x37557f['query'][_0xce69('0x75')][_0xce69('0x78')]())+_0xce69('0x7c')](_0x37557f[_0xce69('0x39')][_0xce69('0x80')]);}return null;})['then'](handleEntityNotFound(_0x28fb39,null))[_0xce69('0x2a')](respondWithStatusCode(_0x28fb39,null))[_0xce69('0x4a')](handleError(_0x28fb39,null));};exports[_0xce69('0x83')]=function(_0x4ef427,_0x32dd2c){var _0x1a923f=_[_0xce69('0x84')](_0x4ef427['body']['ids'])?_0x4ef427['body'][_0xce69('0x80')]:[_0x4ef427[_0xce69('0x4c')][_0xce69('0x80')]];var _0x1f0a8e=_0x4ef427['params']['id'];return db['Team'][_0xce69('0x49')]({'where':{'id':_0x1f0a8e}})[_0xce69('0x2a')](handleEntityNotFound(_0x32dd2c,null))['then'](function(_0x570def){if(_0x570def){var _0x3d7a42=[_0xce69('0x85'),_0xce69('0x86'),_0xce69('0x87'),'Sms',_0xce69('0x88'),_0xce69('0x89'),_0xce69('0x8a')];return db[_0xce69('0x5a')][_0xce69('0x5b')](function(_0x561444){var _0x2447dc=_[_0xce69('0x36')](_0x3d7a42,function(_0x16de40){var _0x7d8b5d={'attributes':['id',_0xce69('0x37')]};if(_0x16de40==='Voice'){_0x7d8b5d[_0xce69('0x8b')]={'attributes':[_0xce69('0x8c')]};}return _0x570def[_0xce69('0x4e')+_0x16de40+_0xce69('0x7c')](_0x7d8b5d)[_0xce69('0x2a')](function(_0x1a3d3a){var _0x53f237=_['map'](_0x1a3d3a,function(_0x24b4b9){var _0x22eec7=_[_0xce69('0x36')](_0x1a923f,function(_0x38fe4e){var _0x4b8e92={'where':{'UserId':_0x38fe4e,[_0x16de40+_0xce69('0x8d')]:_0x24b4b9['id']},'transaction':_0x561444};if(_0x16de40===_0xce69('0x85')){_0x4b8e92[_0xce69('0x1c')]={'penalty':_0x24b4b9[_0xce69('0x8e')][_0xce69('0x8c')]};}return db[_0xce69('0x8f')+_0x16de40+_0xce69('0x90')]['findOrCreate'](_0x4b8e92)[_0xce69('0x2a')](function(){socket[_0xce69('0x91')](_0xce69('0x4d')+_0x16de40+_0xce69('0x92'),{'UserId':_0x38fe4e,[_0x16de40+_0xce69('0x8d')]:_0x24b4b9['id']});if(_0x16de40!==_0xce69('0x85')){return;}return db[_0xce69('0x8f')]['findAll']({'where':{'id':_0x1a923f,'online':0x1},'attributes':['id',_0xce69('0x37'),_0xce69('0x93'),_0xce69('0x94'),'interface'],'raw':!![]})['then'](function(_0x5cb04c){var _0x18e4eb=_[_0xce69('0x36')](_0x5cb04c,function(_0xc798d2){return db[_0xce69('0x95')][_0xce69('0x96')]({'membername':_0xc798d2[_0xce69('0x37')],'UserId':_0xc798d2['id'],'queue_name':_0x24b4b9[_0xce69('0x37')],'VoiceQueueId':_0x24b4b9['id'],'interface':_[_0xce69('0x97')](_0xc798d2[_0xce69('0x98')])?util[_0xce69('0x99')](_0xce69('0x9a'),_0xc798d2[_0xce69('0x37')]):_0xc798d2['interface'],'paused':_0xc798d2[_0xce69('0x94')]||![],'penalty':_0x24b4b9[_0xce69('0x8e')]['penalty']},{'transaction':_0x561444});});return Promise[_0xce69('0x9b')](_0x18e4eb);});});});return Promise[_0xce69('0x9b')](_0x22eec7);});return Promise[_0xce69('0x9b')](_0x53f237);})['then'](function(){return db[_0xce69('0x70')]['findOne']({'where':{'teamId':_0x1f0a8e}})[_0xce69('0x2a')](function(_0x36ac11){if(_0x36ac11){var _0x2e56ec=_[_0xce69('0x36')](_0x1a923f,function(_0x457c2b){db[_0xce69('0x9c')][_0xce69('0x96')]({'UserId':_0x457c2b,'VoicePrefixId':_0x36ac11[_0xce69('0x71')]});});return Promise[_0xce69('0x9b')](_0x2e56ec);}});});});return Promise['all'](_0x2447dc)[_0xce69('0x2a')](function(){return _0x570def[_0xce69('0x83')](_0x1a923f,{'transaction':_0x561444})[_0xce69('0x9d')](function(_0x1bce86){return _0x1bce86;});});});}})[_0xce69('0x2a')](respondWithResult(_0x32dd2c,null))['catch'](handleError(_0x32dd2c,null));};exports[_0xce69('0x9e')]=function(_0x944609,_0x1e3f0e){var _0x38a26a=_[_0xce69('0x84')](_0x944609[_0xce69('0x39')][_0xce69('0x80')])?_0x944609['query'][_0xce69('0x80')]:[_0x944609[_0xce69('0x39')][_0xce69('0x80')]];var _0x3ddd5c=_0x944609[_0xce69('0x59')]['id'];return db[_0xce69('0x30')][_0xce69('0x49')]({'where':{'id':_0x3ddd5c}})['then'](handleEntityNotFound(_0x1e3f0e,null))[_0xce69('0x2a')](function(_0x4197b0){if(_0x4197b0){var _0x1cbed6=[_0xce69('0x85'),_0xce69('0x86'),'Mail',_0xce69('0x9f'),'Fax',_0xce69('0x89'),_0xce69('0x8a')];return db[_0xce69('0x5a')]['transaction'](function(_0x4eae82){var _0x267a1f=_[_0xce69('0x36')](_0x1cbed6,function(_0x119bca){var _0x38e046={'attributes':['id',_0xce69('0x37')]};return _0x4197b0[_0xce69('0x4e')+_0x119bca+_0xce69('0x7c')](_0x38e046)[_0xce69('0x2a')](function(_0xcaab04){var _0x54986b=_['map'](_0xcaab04,function(_0x1e95ba){return _0x1e95ba[_0xce69('0x9e')](_0x38a26a,{'transaction':_0x4eae82})[_0xce69('0x2a')](function(){var _0x127fce=_[_0xce69('0x36')](_0x38a26a,function(_0x3d922a){socket[_0xce69('0x91')]('user'+_0x119bca+_0xce69('0xa0'),{'UserId':Number(_0x3d922a),[_0x119bca+_0xce69('0x8d')]:_0x1e95ba['id']});if(_0x119bca!==_0xce69('0x85')){return;}return db['UserVoiceQueueRt'][_0xce69('0x58')]({'where':{'VoiceQueueId':_0x1e95ba['id'],'UserId':_0x3d922a},'transaction':_0x4eae82});});return Promise['all'](_0x127fce);});});return Promise['all'](_0x54986b);});});return Promise[_0xce69('0x9b')](_0x267a1f)[_0xce69('0x2a')](function(){return _0x4197b0['removeAgents'](_0x38a26a,{'transaction':_0x4eae82});})[_0xce69('0x2a')](function(){return db['TeamVoicePrefix'][_0xce69('0x74')]({'where':{'teamId':_0x3ddd5c}})[_0xce69('0x2a')](function(_0x49ac4){if(_0x49ac4){var _0x3354fc=_[_0xce69('0x36')](_0x38a26a,function(_0x579b06){db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x579b06,'VoicePrefixId':_0x49ac4[_0xce69('0x71')]}});});return Promise['all'](_0x3354fc);}});});});}})['then'](respondWithStatusCode(_0x1e3f0e,null))[_0xce69('0x4a')](handleError(_0x1e3f0e,null));};exports['getAgents']=function(_0x32eee9,_0x2c5826,_0x2718c5){var _0x6fb2c0={};var _0x970a={};var _0x15a6db;var _0x4ac0a3;return db[_0xce69('0x30')]['findOne']({'where':{'id':_0x32eee9[_0xce69('0x59')]['id']}})[_0xce69('0x2a')](handleEntityNotFound(_0x2c5826,null))[_0xce69('0x2a')](function(_0x504417){if(_0x504417){_0x15a6db=_0x504417;_0x970a[_0xce69('0x35')]=_[_0xce69('0x38')](db[_0xce69('0x8f')][_0xce69('0x31')]);_0x970a[_0xce69('0x39')]=_['keys'](_0x32eee9['query']);_0x970a[_0xce69('0x3a')]=_[_0xce69('0x3c')](_0x970a['model'],_0x970a[_0xce69('0x39')]);_0x6fb2c0['attributes']=_['intersection'](_0x970a[_0xce69('0x35')],qs[_0xce69('0x3d')](_0x32eee9[_0xce69('0x39')][_0xce69('0x3d')]));_0x6fb2c0[_0xce69('0x3b')]=_0x6fb2c0['attributes'][_0xce69('0x3e')]?_0x6fb2c0[_0xce69('0x3b')]:_0x970a[_0xce69('0x35')];_0x6fb2c0[_0xce69('0x79')]=qs['sort'](_0x32eee9['query'][_0xce69('0x40')]);_0x6fb2c0[_0xce69('0x41')]=qs[_0xce69('0x3a')](_[_0xce69('0x7a')](_0x32eee9[_0xce69('0x39')],_0x970a[_0xce69('0x3a')]));if(_0x32eee9['query'][_0xce69('0x43')]){_0x6fb2c0[_0xce69('0x41')]=_['merge'](_0x6fb2c0[_0xce69('0x41')],{'$or':_[_0xce69('0x36')](_0x6fb2c0[_0xce69('0x3b')],function(_0x4c9ec9){var _0x37a139={};_0x37a139[_0x4c9ec9]={'$like':'%'+_0x32eee9[_0xce69('0x39')][_0xce69('0x43')]+'%'};return _0x37a139;})});}_0x6fb2c0=_[_0xce69('0x42')]({},_0x6fb2c0,_0x32eee9['options']);return _0x15a6db[_0xce69('0xa1')](_0x6fb2c0);}})[_0xce69('0x2a')](function(_0x2f77ed){if(_0x2f77ed){_0x4ac0a3=_0x2f77ed[_0xce69('0x3e')];if(!_0x32eee9[_0xce69('0x39')][_0xce69('0xa2')]('nolimit')){_0x6fb2c0[_0xce69('0x24')]=qs[_0xce69('0x24')](_0x32eee9[_0xce69('0x39')][_0xce69('0x24')]);_0x6fb2c0[_0xce69('0x26')]=qs[_0xce69('0x26')](_0x32eee9['query'][_0xce69('0x26')]);}return _0x15a6db[_0xce69('0xa1')](_0x6fb2c0);}})[_0xce69('0x2a')](function(_0x3b95cb){if(_0x3b95cb){return _0x3b95cb?{'count':_0x4ac0a3,'rows':_0x3b95cb}:null;}})[_0xce69('0x2a')](respondWithResult(_0x2c5826,null))[_0xce69('0x4a')](handleError(_0x2c5826,null));};
\ No newline at end of file
+var _0x98a4=['spread','removeAgents','Chat','Fax','nolimit','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./team.socket','register','sendStatus','end','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','then','error','stack','name','send','map','Team','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','show','params','length','include','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','sequelize','transaction','Sequelize','QueryTypes','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','UserVoiceQueue','destroy','MailQueueId','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','getQueues','findOne','isValidChannel','channel','ValidationError','capitalize','Queue','toLowerCase','Queues','addQueues','Unknown\x20channel','add','ids','remove','addAgents','isArray','Voice','Mail','Sms','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','VoicePrefixId'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0x98a4,0x13e));var _0x498a=function(_0x39951f,_0x42fbf9){_0x39951f=_0x39951f-0x0;var _0x44624a=_0x98a4[_0x39951f];return _0x44624a;};'use strict';var emlformat=require(_0x498a('0x0'));var rimraf=require(_0x498a('0x1'));var zipdir=require(_0x498a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x498a('0x3'));var moment=require(_0x498a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x498a('0x5'));var util=require(_0x498a('0x6'));var path=require(_0x498a('0x7'));var sox=require('sox');var csv=require(_0x498a('0x8'));var ejs=require(_0x498a('0x9'));var fs=require('fs');var fs_extra=require(_0x498a('0xa'));var _=require('lodash');var squel=require(_0x498a('0xb'));var crypto=require('crypto');var jsforce=require(_0x498a('0xc'));var deskjs=require(_0x498a('0xd'));var toCsv=require(_0x498a('0x8'));var querystring=require('querystring');var Papa=require(_0x498a('0xe'));var Redis=require(_0x498a('0xf'));var authService=require(_0x498a('0x10'));var qs=require(_0x498a('0x11'));var as=require(_0x498a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x498a('0x13'))(_0x498a('0x14'));var utils=require(_0x498a('0x15'));var config=require(_0x498a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x498a('0x17'))['db'];config['redis']=_[_0x498a('0x18')](config['redis'],{'host':_0x498a('0x19'),'port':0x18eb});var socket=require(_0x498a('0x1a'))(new Redis(config[_0x498a('0x1b')]));require(_0x498a('0x1c'))[_0x498a('0x1d')](socket);function respondWithStatusCode(_0x13a241,_0x2d311b){_0x2d311b=_0x2d311b||0xcc;return function(_0x379dc2){if(_0x379dc2){return _0x13a241[_0x498a('0x1e')](_0x2d311b);}return _0x13a241['status'](_0x2d311b)[_0x498a('0x1f')]();};}function respondWithResult(_0x470c9c,_0x6c699e){_0x6c699e=_0x6c699e||0xc8;return function(_0x58de9d){if(_0x58de9d){return _0x470c9c[_0x498a('0x20')](_0x6c699e)['json'](_0x58de9d);}};}function respondWithFilteredResult(_0x298cd1,_0x36748d){return function(_0xd30414){if(_0xd30414){var _0x2af204=typeof _0x36748d[_0x498a('0x21')]===_0x498a('0x22')&&typeof _0x36748d['limit']===_0x498a('0x22');var _0x44f59e=_0xd30414[_0x498a('0x23')];var _0x2346a8=_0x2af204?0x0:_0x36748d[_0x498a('0x21')];var _0x35fb8d=_0x2af204?_0xd30414[_0x498a('0x23')]:_0x36748d['offset']+_0x36748d[_0x498a('0x24')];var _0x58cce0;if(_0x35fb8d>=_0x44f59e){_0x35fb8d=_0x44f59e;_0x58cce0=0xc8;}else{_0x58cce0=0xce;}_0x298cd1['status'](_0x58cce0);return _0x298cd1['set'](_0x498a('0x25'),_0x2346a8+'-'+_0x35fb8d+'/'+_0x44f59e)[_0x498a('0x26')](_0xd30414);}return null;};}function patchUpdates(_0x2ecc68){return function(_0x275d1b){try{jsonpatch[_0x498a('0x27')](_0x275d1b,_0x2ecc68,!![]);}catch(_0x534861){return BPromise[_0x498a('0x28')](_0x534861);}return _0x275d1b[_0x498a('0x29')]();};}function saveUpdates(_0x2bb30d,_0x2adef6){return function(_0x3ccc12){if(_0x3ccc12){return _0x3ccc12['update'](_0x2bb30d)[_0x498a('0x2a')](function(_0x57a135){return _0x57a135;});}return null;};}function handleEntityNotFound(_0x122c61,_0x39f82f){return function(_0x4ddbb7){if(!_0x4ddbb7){_0x122c61[_0x498a('0x1e')](0x194);}return _0x4ddbb7;};}function handleError(_0x3db5b7,_0x4d76f3){_0x4d76f3=_0x4d76f3||0x1f4;return function(_0x1c2f1a){logger[_0x498a('0x2b')](_0x1c2f1a[_0x498a('0x2c')]);if(_0x1c2f1a[_0x498a('0x2d')]){delete _0x1c2f1a[_0x498a('0x2d')];}_0x3db5b7[_0x498a('0x20')](_0x4d76f3)[_0x498a('0x2e')](_0x1c2f1a);};}exports['index']=function(_0x3ce0d3,_0x5ff98b){var _0x3f453b={},_0x2f60df={},_0x5cdd41={'count':0x0,'rows':[]};var _0x2bcc7e=_[_0x498a('0x2f')](db[_0x498a('0x30')][_0x498a('0x31')],function(_0x2f1c80){return{'name':_0x2f1c80[_0x498a('0x32')],'type':_0x2f1c80['type'][_0x498a('0x33')]};});_0x2f60df[_0x498a('0x34')]=_[_0x498a('0x2f')](_0x2bcc7e,'name');_0x2f60df['query']=_[_0x498a('0x35')](_0x3ce0d3[_0x498a('0x36')]);_0x2f60df[_0x498a('0x37')]=_['intersection'](_0x2f60df[_0x498a('0x34')],_0x2f60df[_0x498a('0x36')]);_0x3f453b[_0x498a('0x38')]=_[_0x498a('0x39')](_0x2f60df[_0x498a('0x34')],qs[_0x498a('0x3a')](_0x3ce0d3['query'][_0x498a('0x3a')]));_0x3f453b[_0x498a('0x38')]=_0x3f453b[_0x498a('0x38')]['length']?_0x3f453b['attributes']:_0x2f60df[_0x498a('0x34')];if(!_0x3ce0d3[_0x498a('0x36')][_0x498a('0x3b')]('nolimit')){_0x3f453b[_0x498a('0x24')]=qs[_0x498a('0x24')](_0x3ce0d3[_0x498a('0x36')][_0x498a('0x24')]);_0x3f453b[_0x498a('0x21')]=qs[_0x498a('0x21')](_0x3ce0d3[_0x498a('0x36')]['offset']);}_0x3f453b[_0x498a('0x3c')]=qs[_0x498a('0x3d')](_0x3ce0d3['query'][_0x498a('0x3d')]);_0x3f453b[_0x498a('0x3e')]=qs['filters'](_[_0x498a('0x3f')](_0x3ce0d3[_0x498a('0x36')],_0x2f60df['filters']),_0x2bcc7e);if(_0x3ce0d3[_0x498a('0x36')][_0x498a('0x40')]){_0x3f453b['where']=_['merge'](_0x3f453b[_0x498a('0x3e')],{'$or':_[_0x498a('0x2f')](_0x2bcc7e,function(_0x2a9bc2){if(_0x2a9bc2[_0x498a('0x41')]!==_0x498a('0x42')){var _0x484855={};_0x484855[_0x2a9bc2[_0x498a('0x2d')]]={'$like':'%'+_0x3ce0d3[_0x498a('0x36')][_0x498a('0x40')]+'%'};return _0x484855;}})});}_0x3f453b=_[_0x498a('0x43')]({},_0x3f453b,_0x3ce0d3[_0x498a('0x44')]);var _0x1130f4={'where':_0x3f453b['where']};return db['Team'][_0x498a('0x23')](_0x1130f4)[_0x498a('0x2a')](function(_0x31284b){_0x5cdd41['count']=_0x31284b;if(_0x3ce0d3[_0x498a('0x36')][_0x498a('0x45')]){_0x3f453b['include']=[{'all':!![]}];}return db['Team'][_0x498a('0x46')](_0x3f453b);})[_0x498a('0x2a')](function(_0x45458f){_0x5cdd41['rows']=_0x45458f;return _0x5cdd41;})['then'](respondWithFilteredResult(_0x5ff98b,_0x3f453b))['catch'](handleError(_0x5ff98b,null));};exports[_0x498a('0x47')]=function(_0x36f2cf,_0x3a4019){var _0x5a890a={'raw':![],'where':{'id':_0x36f2cf[_0x498a('0x48')]['id']}},_0xbbe10b={};_0xbbe10b[_0x498a('0x34')]=_[_0x498a('0x35')](db[_0x498a('0x30')][_0x498a('0x31')]);_0xbbe10b['query']=_[_0x498a('0x35')](_0x36f2cf[_0x498a('0x36')]);_0xbbe10b[_0x498a('0x37')]=_[_0x498a('0x39')](_0xbbe10b[_0x498a('0x34')],_0xbbe10b[_0x498a('0x36')]);_0x5a890a[_0x498a('0x38')]=_['intersection'](_0xbbe10b[_0x498a('0x34')],qs[_0x498a('0x3a')](_0x36f2cf[_0x498a('0x36')][_0x498a('0x3a')]));_0x5a890a['attributes']=_0x5a890a['attributes'][_0x498a('0x49')]?_0x5a890a['attributes']:_0xbbe10b[_0x498a('0x34')];if(_0x36f2cf[_0x498a('0x36')]['includeAll']){_0x5a890a[_0x498a('0x4a')]=[{'all':!![]}];}_0x5a890a=_[_0x498a('0x43')]({},_0x5a890a,_0x36f2cf[_0x498a('0x44')]);return db[_0x498a('0x30')][_0x498a('0x4b')](_0x5a890a)[_0x498a('0x2a')](handleEntityNotFound(_0x3a4019,null))[_0x498a('0x2a')](respondWithResult(_0x3a4019,null))[_0x498a('0x4c')](handleError(_0x3a4019,null));};exports[_0x498a('0x4d')]=function(_0x415ad5,_0x1e1b15){return db['Team']['create'](_0x415ad5[_0x498a('0x4e')],{})[_0x498a('0x2a')](function(_0x6a56a2){var _0x2f77a7=_0x415ad5[_0x498a('0x4f')][_0x498a('0x50')]({'plain':!![]});if(!_0x2f77a7)throw new Error(_0x498a('0x51'));if(_0x2f77a7[_0x498a('0x52')]===_0x498a('0x4f')){var _0x2cda99=_0x6a56a2[_0x498a('0x50')]({'plain':!![]});var _0x5b7eca=_0x498a('0x53');return db['UserProfileSection'][_0x498a('0x4b')]({'where':{'name':_0x5b7eca,'userProfileId':_0x2f77a7['userProfileId']},'raw':!![]})[_0x498a('0x2a')](function(_0x5c24f6){if(_0x5c24f6&&_0x5c24f6[_0x498a('0x54')]===0x0){return db[_0x498a('0x55')][_0x498a('0x4d')]({'name':_0x2cda99[_0x498a('0x2d')],'resourceId':_0x2cda99['id'],'type':_0x5c24f6[_0x498a('0x2d')],'sectionId':_0x5c24f6['id']},{})[_0x498a('0x2a')](function(){return _0x6a56a2;});}else{return _0x6a56a2;}})[_0x498a('0x4c')](function(_0x5b5425){logger[_0x498a('0x2b')](_0x498a('0x56'),_0x5b5425);throw _0x5b5425;});}return _0x6a56a2;})[_0x498a('0x2a')](respondWithResult(_0x1e1b15,0xc9))[_0x498a('0x4c')](handleError(_0x1e1b15,null));};exports[_0x498a('0x57')]=function(_0x33caec,_0x8c8c56){if(_0x33caec[_0x498a('0x4e')]['id']){delete _0x33caec['body']['id'];}return db['Team'][_0x498a('0x4b')]({'where':{'id':_0x33caec[_0x498a('0x48')]['id']}})[_0x498a('0x2a')](handleEntityNotFound(_0x8c8c56,null))[_0x498a('0x2a')](saveUpdates(_0x33caec[_0x498a('0x4e')],null))['then'](respondWithResult(_0x8c8c56,null))[_0x498a('0x4c')](handleError(_0x8c8c56,null));};exports['destroy']=function(_0x5dc320,_0x2b113b){var _0xa7ef93=_0x5dc320[_0x498a('0x48')]['id'];var _0x47e958=[];return db[_0x498a('0x58')][_0x498a('0x59')](function(_0x464b23){var _0x16abb8='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0xa7ef93;return db[_0x498a('0x58')][_0x498a('0x36')](_0x16abb8,{'type':db[_0x498a('0x5a')][_0x498a('0x5b')]['SELECT'],'raw':!![],'transaction':_0x464b23})[_0x498a('0x2a')](function(_0x559568){_0x47e958=_['map'](_0x559568,function(_0x340176){return Number(_0x340176['UserId']);});})[_0x498a('0x2a')](function(){var _0x7e237b=_0x498a('0x5c')+_0xa7ef93;return db[_0x498a('0x58')][_0x498a('0x36')](_0x7e237b,{'type':db[_0x498a('0x5a')][_0x498a('0x5b')]['SELECT'],'raw':!![],'transaction':_0x464b23});})[_0x498a('0x2a')](function(_0x32b7c6){var _0x42ef5f=_[_0x498a('0x2f')](_0x32b7c6,function(_0x4c8ce0){return Number(_0x4c8ce0[_0x498a('0x5d')]);});return db[_0x498a('0x5e')][_0x498a('0x5f')]({'where':{'UserId':{'$in':_0x47e958},'VoiceQueueId':{'$in':_0x42ef5f}},'transaction':_0x464b23});})[_0x498a('0x2a')](function(){var _0x5979ac='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0xa7ef93;return db[_0x498a('0x58')]['query'](_0x5979ac,{'type':db[_0x498a('0x5a')][_0x498a('0x5b')]['SELECT'],'raw':!![],'transaction':_0x464b23});})[_0x498a('0x2a')](function(_0x109b00){var _0x1741e9=_[_0x498a('0x2f')](_0x109b00,function(_0x400027){return Number(_0x400027[_0x498a('0x60')]);});return db['UserMailQueue'][_0x498a('0x5f')]({'where':{'UserId':{'$in':_0x47e958},'MailQueueId':{'$in':_0x1741e9}},'transaction':_0x464b23});})[_0x498a('0x2a')](function(){var _0x3da579=_0x498a('0x61')+_0xa7ef93;return db[_0x498a('0x58')][_0x498a('0x36')](_0x3da579,{'type':db['Sequelize']['QueryTypes'][_0x498a('0x62')],'raw':!![],'transaction':_0x464b23});})[_0x498a('0x2a')](function(_0x4baca7){var _0x1ba317=_[_0x498a('0x2f')](_0x4baca7,function(_0x5b9120){return Number(_0x5b9120[_0x498a('0x63')]);});return db['UserSmsQueue']['destroy']({'where':{'UserId':{'$in':_0x47e958},'SmsQueueId':{'$in':_0x1ba317}},'transaction':_0x464b23});})[_0x498a('0x2a')](function(){var _0x521736=_0x498a('0x64')+_0xa7ef93;return db[_0x498a('0x58')][_0x498a('0x36')](_0x521736,{'type':db[_0x498a('0x5a')][_0x498a('0x5b')][_0x498a('0x62')],'raw':!![],'transaction':_0x464b23});})[_0x498a('0x2a')](function(_0x3741d7){var _0x424e34=_[_0x498a('0x2f')](_0x3741d7,function(_0x44e3c8){return Number(_0x44e3c8['ChatQueueId']);});return db[_0x498a('0x65')][_0x498a('0x5f')]({'where':{'UserId':{'$in':_0x47e958},'ChatQueueId':{'$in':_0x424e34}},'transaction':_0x464b23});})['then'](function(){var _0x14ca7a=_0x498a('0x66')+_0xa7ef93;return db[_0x498a('0x58')]['query'](_0x14ca7a,{'type':db[_0x498a('0x5a')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x464b23});})['then'](function(_0xce589b){var _0x20b87a=_['map'](_0xce589b,function(_0x5736fd){return Number(_0x5736fd[_0x498a('0x67')]);});return db[_0x498a('0x68')][_0x498a('0x5f')]({'where':{'UserId':{'$in':_0x47e958},'FaxQueueId':{'$in':_0x20b87a}},'transaction':_0x464b23});})[_0x498a('0x2a')](function(){var _0x5454a9=_0x498a('0x69')+_0xa7ef93;return db[_0x498a('0x58')][_0x498a('0x36')](_0x5454a9,{'type':db[_0x498a('0x5a')][_0x498a('0x5b')]['SELECT'],'raw':!![],'transaction':_0x464b23});})[_0x498a('0x2a')](function(_0x50744c){var _0x4963b5=_[_0x498a('0x2f')](_0x50744c,function(_0x5ad055){return Number(_0x5ad055[_0x498a('0x6a')]);});return db[_0x498a('0x6b')][_0x498a('0x5f')]({'where':{'UserId':{'$in':_0x47e958},'OpenchannelQueueId':{'$in':_0x4963b5}},'transaction':_0x464b23});})['then'](function(){var _0x19be60=_0x498a('0x6c')+_0xa7ef93;return db[_0x498a('0x58')][_0x498a('0x36')](_0x19be60,{'type':db[_0x498a('0x5a')][_0x498a('0x5b')]['SELECT'],'raw':!![],'transaction':_0x464b23});})[_0x498a('0x2a')](function(_0x28d513){var _0x30a3fb=_[_0x498a('0x2f')](_0x28d513,function(_0x41c891){return Number(_0x41c891['WhatsappQueueId']);});return db[_0x498a('0x6d')][_0x498a('0x5f')]({'where':{'UserId':{'$in':_0x47e958},'WhatsappQueueId':{'$in':_0x30a3fb}},'transaction':_0x464b23});})[_0x498a('0x2a')](function(){return db[_0x498a('0x6e')][_0x498a('0x4b')]({'where':{'TeamId':_0xa7ef93}});})[_0x498a('0x2a')](function(_0x5b9334){if(_0x5b9334===null){return;}return db[_0x498a('0x6f')][_0x498a('0x5f')]({'where':{'UserId':{'$in':_0x47e958},'VoicePrefixId':_0x5b9334['VoicePrefixId']},'transaction':_0x464b23});})['then'](function(){return db[_0x498a('0x30')][_0x498a('0x5f')]({'where':{'id':_0xa7ef93},'cascade':!![],'transaction':_0x464b23});})['then'](function(_0x10acc3){if(_0x10acc3===0x0){_0x2b113b['sendStatus'](0x194);}else{return db[_0x498a('0x55')][_0x498a('0x5f')]({'where':{'type':'Teams','resourceId':_0xa7ef93},'cascade':!![],'transaction':_0x464b23})[_0x498a('0x2a')](function(){_0x2b113b[_0x498a('0x20')](0xcc)['end']();});}})['catch'](function(_0x5a00b7){_0x2b113b[_0x498a('0x20')](0x1f4)[_0x498a('0x2e')](_0x5a00b7);});});};exports[_0x498a('0x70')]=function(_0x57bc5d,_0xc8504a,_0x5b90ce){return db[_0x498a('0x30')][_0x498a('0x71')]({'where':{'id':_0x57bc5d[_0x498a('0x48')]['id']}})[_0x498a('0x2a')](handleEntityNotFound(_0xc8504a,null))[_0x498a('0x2a')](function(_0x543e6e){if(!_0x57bc5d[_0x498a('0x36')]['channel']||!utils[_0x498a('0x72')](_0x57bc5d[_0x498a('0x36')][_0x498a('0x73')])){throw new db['Sequelize'][(_0x498a('0x74'))]('Unknown\x20channel');}var _0x3d3df4={};var _0x1cdd67={};_0x1cdd67[_0x498a('0x34')]=_[_0x498a('0x35')](db[_[_0x498a('0x75')](_0x57bc5d[_0x498a('0x36')]['channel']['toLowerCase']())+_0x498a('0x76')][_0x498a('0x31')]);_0x1cdd67['query']=_[_0x498a('0x35')](_0x57bc5d[_0x498a('0x36')]);_0x1cdd67[_0x498a('0x37')]=_[_0x498a('0x39')](_0x1cdd67[_0x498a('0x34')],_0x1cdd67[_0x498a('0x36')]);_0x3d3df4[_0x498a('0x38')]=_[_0x498a('0x39')](_0x1cdd67[_0x498a('0x34')],qs['fields'](_0x57bc5d['query'][_0x498a('0x3a')]));_0x3d3df4[_0x498a('0x38')]=_0x3d3df4[_0x498a('0x38')][_0x498a('0x49')]?_0x3d3df4[_0x498a('0x38')]:_0x1cdd67['model'];_0x3d3df4['limit']=qs[_0x498a('0x24')](_0x57bc5d[_0x498a('0x36')][_0x498a('0x24')]);_0x3d3df4[_0x498a('0x21')]=qs['offset'](_0x57bc5d[_0x498a('0x36')][_0x498a('0x21')]);_0x3d3df4[_0x498a('0x3c')]=qs[_0x498a('0x3d')](_0x57bc5d[_0x498a('0x36')]['sort']);_0x3d3df4[_0x498a('0x3e')]=qs['filters'](_[_0x498a('0x3f')](_0x57bc5d[_0x498a('0x36')],_0x1cdd67[_0x498a('0x37')]));_0x3d3df4=_[_0x498a('0x43')]({},_0x3d3df4,_0x57bc5d[_0x498a('0x44')]);return _0x543e6e[_0x498a('0x50')+_['capitalize'](_0x57bc5d['query'][_0x498a('0x73')][_0x498a('0x77')]())+_0x498a('0x78')](_0x3d3df4);})[_0x498a('0x2a')](respondWithResult(_0xc8504a,null))[_0x498a('0x4c')](handleError(_0xc8504a,null));};exports[_0x498a('0x79')]=function(_0x143a38,_0x26467b,_0x42d95e){return db[_0x498a('0x30')][_0x498a('0x71')]({'where':{'id':_0x143a38[_0x498a('0x48')]['id']}})[_0x498a('0x2a')](function(_0x904539){if(_0x904539){if(!_0x143a38['body'][_0x498a('0x73')]||!utils[_0x498a('0x72')](_0x143a38['body'][_0x498a('0x73')])){throw new db[(_0x498a('0x5a'))][(_0x498a('0x74'))](_0x498a('0x7a'));}return _0x904539[_0x498a('0x7b')+_['capitalize'](_0x143a38[_0x498a('0x4e')][_0x498a('0x73')][_0x498a('0x77')]())+_0x498a('0x78')](_0x143a38['body'][_0x498a('0x7c')]);}return null;})[_0x498a('0x2a')](handleEntityNotFound(_0x26467b,null))[_0x498a('0x2a')](respondWithStatusCode(_0x26467b,null))[_0x498a('0x4c')](handleError(_0x26467b,null));};exports['removeQueues']=function(_0x3103ac,_0x4c6719,_0x1fb720){return db[_0x498a('0x30')]['findOne']({'where':{'id':_0x3103ac['params']['id']}})[_0x498a('0x2a')](function(_0x3ae5a1){if(_0x3ae5a1){if(!_0x3103ac[_0x498a('0x36')]['channel']||!utils[_0x498a('0x72')](_0x3103ac['query'][_0x498a('0x73')])){throw new db[(_0x498a('0x5a'))][(_0x498a('0x74'))](_0x498a('0x7a'));}return _0x3ae5a1[_0x498a('0x7d')+_[_0x498a('0x75')](_0x3103ac[_0x498a('0x36')][_0x498a('0x73')]['toLowerCase']())+_0x498a('0x78')](_0x3103ac[_0x498a('0x36')][_0x498a('0x7c')]);}return null;})[_0x498a('0x2a')](handleEntityNotFound(_0x4c6719,null))['then'](respondWithStatusCode(_0x4c6719,null))[_0x498a('0x4c')](handleError(_0x4c6719,null));};exports[_0x498a('0x7e')]=function(_0x45a295,_0x2ffeeb){var _0x519ff2=_[_0x498a('0x7f')](_0x45a295['body'][_0x498a('0x7c')])?_0x45a295[_0x498a('0x4e')][_0x498a('0x7c')]:[_0x45a295[_0x498a('0x4e')][_0x498a('0x7c')]];var _0x530528=_0x45a295[_0x498a('0x48')]['id'];return db[_0x498a('0x30')][_0x498a('0x4b')]({'where':{'id':_0x530528}})[_0x498a('0x2a')](handleEntityNotFound(_0x2ffeeb,null))['then'](function(_0x53790b){if(_0x53790b){var _0x4ff11c=[_0x498a('0x80'),'Chat',_0x498a('0x81'),_0x498a('0x82'),'Fax','Openchannel',_0x498a('0x83')];return db[_0x498a('0x58')][_0x498a('0x59')](function(_0x14574a){var _0x259cc0=_[_0x498a('0x2f')](_0x4ff11c,function(_0xbbae81){var _0x432b23={'attributes':['id',_0x498a('0x2d')]};if(_0xbbae81==='Voice'){_0x432b23[_0x498a('0x84')]={'attributes':[_0x498a('0x85')]};}return _0x53790b[_0x498a('0x50')+_0xbbae81+_0x498a('0x78')](_0x432b23)[_0x498a('0x2a')](function(_0x14dee2){var _0x1dfe2b=_['map'](_0x14dee2,function(_0xa2b039){var _0x504957=_[_0x498a('0x2f')](_0x519ff2,function(_0x1cc1e5){var _0x168192={'where':{'UserId':_0x1cc1e5,[_0xbbae81+_0x498a('0x86')]:_0xa2b039['id']},'transaction':_0x14574a};if(_0xbbae81===_0x498a('0x80')){_0x168192['defaults']={'penalty':_0xa2b039[_0x498a('0x87')][_0x498a('0x85')]};}return db[_0x498a('0x88')+_0xbbae81+_0x498a('0x76')][_0x498a('0x89')](_0x168192)['then'](function(){socket[_0x498a('0x8a')](_0x498a('0x4f')+_0xbbae81+_0x498a('0x8b'),{'UserId':_0x1cc1e5,[_0xbbae81+_0x498a('0x86')]:_0xa2b039['id']});if(_0xbbae81!==_0x498a('0x80')){return;}return db[_0x498a('0x88')][_0x498a('0x46')]({'where':{'id':_0x519ff2,'online':0x1},'attributes':['id','name',_0x498a('0x8c'),_0x498a('0x8d'),_0x498a('0x8e')],'raw':!![]})['then'](function(_0x5303bf){var _0xa7f0c7=_[_0x498a('0x2f')](_0x5303bf,function(_0x4be02c){return db[_0x498a('0x8f')][_0x498a('0x90')]({'membername':_0x4be02c[_0x498a('0x2d')],'UserId':_0x4be02c['id'],'queue_name':_0xa2b039[_0x498a('0x2d')],'VoiceQueueId':_0xa2b039['id'],'interface':_[_0x498a('0x91')](_0x4be02c[_0x498a('0x8e')])?util[_0x498a('0x92')](_0x498a('0x93'),_0x4be02c[_0x498a('0x2d')]):_0x4be02c['interface'],'paused':_0x4be02c[_0x498a('0x8d')]||![],'penalty':_0xa2b039[_0x498a('0x87')][_0x498a('0x85')]},{'transaction':_0x14574a});});return Promise[_0x498a('0x94')](_0xa7f0c7);});});});return Promise[_0x498a('0x94')](_0x504957);});return Promise[_0x498a('0x94')](_0x1dfe2b);})[_0x498a('0x2a')](function(){return db[_0x498a('0x6e')][_0x498a('0x71')]({'where':{'teamId':_0x530528}})[_0x498a('0x2a')](function(_0x1ef5d0){if(_0x1ef5d0){var _0xff6490=_[_0x498a('0x2f')](_0x519ff2,function(_0x110aff){db[_0x498a('0x6f')]['upsert']({'UserId':_0x110aff,'VoicePrefixId':_0x1ef5d0[_0x498a('0x95')]});});return Promise[_0x498a('0x94')](_0xff6490);}});});});return Promise[_0x498a('0x94')](_0x259cc0)[_0x498a('0x2a')](function(){return _0x53790b[_0x498a('0x7e')](_0x519ff2,{'transaction':_0x14574a})[_0x498a('0x96')](function(_0x5f815c){return _0x5f815c;});});});}})[_0x498a('0x2a')](respondWithResult(_0x2ffeeb,null))[_0x498a('0x4c')](handleError(_0x2ffeeb,null));};exports[_0x498a('0x97')]=function(_0x5580d4,_0x2db969){var _0x822a54=_['isArray'](_0x5580d4['query'][_0x498a('0x7c')])?_0x5580d4[_0x498a('0x36')][_0x498a('0x7c')]:[_0x5580d4['query'][_0x498a('0x7c')]];var _0x35c1bc=_0x5580d4[_0x498a('0x48')]['id'];return db[_0x498a('0x30')][_0x498a('0x4b')]({'where':{'id':_0x35c1bc}})[_0x498a('0x2a')](handleEntityNotFound(_0x2db969,null))['then'](function(_0xe25557){if(_0xe25557){var _0x5d7445=[_0x498a('0x80'),_0x498a('0x98'),_0x498a('0x81'),_0x498a('0x82'),_0x498a('0x99'),'Openchannel',_0x498a('0x83')];return db['sequelize']['transaction'](function(_0x18d9f6){var _0x1dc5db=_[_0x498a('0x2f')](_0x5d7445,function(_0x4aa2c7){var _0xd355e0={'attributes':['id',_0x498a('0x2d')]};return _0xe25557[_0x498a('0x50')+_0x4aa2c7+_0x498a('0x78')](_0xd355e0)[_0x498a('0x2a')](function(_0x1a062e){var _0xe2d5bd=_[_0x498a('0x2f')](_0x1a062e,function(_0x4e022f){return _0x4e022f[_0x498a('0x97')](_0x822a54,{'transaction':_0x18d9f6})[_0x498a('0x2a')](function(){var _0x45789b=_['map'](_0x822a54,function(_0x9440ec){socket[_0x498a('0x8a')](_0x498a('0x4f')+_0x4aa2c7+'Queue:remove',{'UserId':Number(_0x9440ec),[_0x4aa2c7+_0x498a('0x86')]:_0x4e022f['id']});if(_0x4aa2c7!==_0x498a('0x80')){return;}return db[_0x498a('0x8f')][_0x498a('0x5f')]({'where':{'VoiceQueueId':_0x4e022f['id'],'UserId':_0x9440ec},'transaction':_0x18d9f6});});return Promise[_0x498a('0x94')](_0x45789b);});});return Promise['all'](_0xe2d5bd);});});return Promise['all'](_0x1dc5db)[_0x498a('0x2a')](function(){return _0xe25557[_0x498a('0x97')](_0x822a54,{'transaction':_0x18d9f6});})[_0x498a('0x2a')](function(){return db[_0x498a('0x6e')][_0x498a('0x71')]({'where':{'teamId':_0x35c1bc}})[_0x498a('0x2a')](function(_0x3fc2ec){if(_0x3fc2ec){var _0x3dfe27=_['map'](_0x822a54,function(_0x59f0d9){db[_0x498a('0x6f')][_0x498a('0x5f')]({'where':{'UserId':_0x59f0d9,'VoicePrefixId':_0x3fc2ec[_0x498a('0x95')]}});});return Promise['all'](_0x3dfe27);}});});});}})[_0x498a('0x2a')](respondWithStatusCode(_0x2db969,null))[_0x498a('0x4c')](handleError(_0x2db969,null));};exports['getAgents']=function(_0x4951d8,_0x553eda,_0x7081b4){var _0x2ae8c8={};var _0x6462a2={};var _0x33cf1a;var _0x360371;return db[_0x498a('0x30')][_0x498a('0x71')]({'where':{'id':_0x4951d8[_0x498a('0x48')]['id']}})[_0x498a('0x2a')](handleEntityNotFound(_0x553eda,null))[_0x498a('0x2a')](function(_0xa93fc){if(_0xa93fc){_0x33cf1a=_0xa93fc;_0x6462a2[_0x498a('0x34')]=_[_0x498a('0x35')](db[_0x498a('0x88')]['rawAttributes']);_0x6462a2[_0x498a('0x36')]=_[_0x498a('0x35')](_0x4951d8[_0x498a('0x36')]);_0x6462a2[_0x498a('0x37')]=_['intersection'](_0x6462a2[_0x498a('0x34')],_0x6462a2[_0x498a('0x36')]);_0x2ae8c8[_0x498a('0x38')]=_[_0x498a('0x39')](_0x6462a2['model'],qs[_0x498a('0x3a')](_0x4951d8[_0x498a('0x36')][_0x498a('0x3a')]));_0x2ae8c8[_0x498a('0x38')]=_0x2ae8c8[_0x498a('0x38')][_0x498a('0x49')]?_0x2ae8c8[_0x498a('0x38')]:_0x6462a2[_0x498a('0x34')];_0x2ae8c8[_0x498a('0x3c')]=qs[_0x498a('0x3d')](_0x4951d8[_0x498a('0x36')]['sort']);_0x2ae8c8[_0x498a('0x3e')]=qs[_0x498a('0x37')](_['pick'](_0x4951d8['query'],_0x6462a2[_0x498a('0x37')]));if(_0x4951d8[_0x498a('0x36')][_0x498a('0x40')]){_0x2ae8c8['where']=_[_0x498a('0x43')](_0x2ae8c8[_0x498a('0x3e')],{'$or':_['map'](_0x2ae8c8['attributes'],function(_0xb80d70){var _0x3c06c4={};_0x3c06c4[_0xb80d70]={'$like':'%'+_0x4951d8[_0x498a('0x36')][_0x498a('0x40')]+'%'};return _0x3c06c4;})});}_0x2ae8c8=_['merge']({},_0x2ae8c8,_0x4951d8[_0x498a('0x44')]);return _0x33cf1a['getAgents'](_0x2ae8c8);}})[_0x498a('0x2a')](function(_0x12c84d){if(_0x12c84d){_0x360371=_0x12c84d[_0x498a('0x49')];if(!_0x4951d8[_0x498a('0x36')][_0x498a('0x3b')](_0x498a('0x9a'))){_0x2ae8c8[_0x498a('0x24')]=qs['limit'](_0x4951d8['query']['limit']);_0x2ae8c8[_0x498a('0x21')]=qs['offset'](_0x4951d8[_0x498a('0x36')][_0x498a('0x21')]);}return _0x33cf1a[_0x498a('0x9b')](_0x2ae8c8);}})[_0x498a('0x2a')](function(_0x1b40a7){if(_0x1b40a7){return _0x1b40a7?{'count':_0x360371,'rows':_0x1b40a7}:null;}})['then'](respondWithResult(_0x553eda,null))[_0x498a('0x4c')](handleError(_0x553eda,null));};
\ No newline at end of file
index aef7501..3ed6a6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7d0=['setMaxListeners','save','emit','exports','events','../../mysqldb'];(function(_0x2ff94e,_0x170aca){var _0x31e317=function(_0x29be0f){while(--_0x29be0f){_0x2ff94e['push'](_0x2ff94e['shift']());}};_0x31e317(++_0x170aca);}(_0xe7d0,0x1ea));var _0x0e7d=function(_0x432920,_0x3b6441){_0x432920=_0x432920-0x0;var _0x2da094=_0xe7d0[_0x432920];return _0x2da094;};'use strict';var EventEmitter=require(_0x0e7d('0x0'));var Team=require(_0x0e7d('0x1'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents[_0x0e7d('0x2')](0x0);var events={'afterCreate':_0x0e7d('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x14ed84){return function(_0x127bbb,_0x2e77d5,_0xfd34b1){TeamEvents[_0x0e7d('0x4')](_0x14ed84+':'+_0x127bbb['id'],_0x127bbb);TeamEvents[_0x0e7d('0x4')](_0x14ed84,_0x127bbb);_0xfd34b1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0x0e7d('0x5')]=TeamEvents;
\ No newline at end of file
+var _0x2813=['setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb','Team'];(function(_0x4125f1,_0x2a676e){var _0x23bb1a=function(_0xb332f8){while(--_0xb332f8){_0x4125f1['push'](_0x4125f1['shift']());}};_0x23bb1a(++_0x2a676e);}(_0x2813,0xa7));var _0x3281=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2813[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x3281('0x0'));var Team=require(_0x3281('0x1'))['db'][_0x3281('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x3281('0x3')](0x0);var events={'afterCreate':_0x3281('0x4'),'afterUpdate':_0x3281('0x5'),'afterDestroy':_0x3281('0x6')};function emitEvent(_0x35de03){return function(_0x265436,_0x247723,_0x21cb73){TeamEvents[_0x3281('0x7')](_0x35de03+':'+_0x265436['id'],_0x265436);TeamEvents[_0x3281('0x7')](_0x35de03,_0x265436);_0x21cb73(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x3281('0x8')](e,emitEvent(event));}}module[_0x3281('0x9')]=TeamEvents;
\ No newline at end of file
index 36283f1..76fddc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb585=['then','map','setDataValue','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms','Voice','Whatsapp','all','lodash','./team.attributes','get','Queues'];(function(_0x22c1e2,_0x5032a9){var _0x27be85=function(_0x1c64d0){while(--_0x1c64d0){_0x22c1e2['push'](_0x22c1e2['shift']());}};_0x27be85(++_0x5032a9);}(_0xb585,0x178));var _0x5b58=function(_0x4ffa05,_0x2d312e){_0x4ffa05=_0x4ffa05-0x0;var _0x1c4b4d=_0xb585[_0x4ffa05];return _0x1c4b4d;};'use strict';var _=require(_0x5b58('0x0'));var attributes=require(_0x5b58('0x1'));function getQueuesByChannel(_0x1aae17,_0x26e480){var _0x420cc2=_0x5b58('0x2')+_0x26e480+_0x5b58('0x3');return _0x1aae17[_0x420cc2]()[_0x5b58('0x4')](function(_0x4870c0){return _[_0x5b58('0x5')](_0x4870c0,function(_0xbfb099){_0xbfb099[_0x5b58('0x6')]('channel',_0x26e480);return _0xbfb099;});})[_0x5b58('0x7')](function(_0x28d4c5){throw _0x28d4c5;});}module[_0x5b58('0x8')]=function(_0x3d9dc7){return _0x3d9dc7[_0x5b58('0x9')](_0x5b58('0xa'),attributes,{'tableName':_0x5b58('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0xb6230b=this;var _0x189172=[_0x5b58('0xc'),_0x5b58('0xd'),_0x5b58('0xe'),_0x5b58('0xf'),_0x5b58('0x10'),_0x5b58('0x11'),_0x5b58('0x12')];return Promise['resolve']()[_0x5b58('0x4')](function(){var _0x33f643=_['map'](_0x189172,function(_0x439ccf){return getQueuesByChannel(_0xb6230b,_0x439ccf);});return Promise[_0x5b58('0x13')](_0x33f643);})[_0x5b58('0x7')](function(_0x320de5){throw _0x320de5;});}}});};
\ No newline at end of file
+var _0xe665=['channel','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms','Whatsapp','resolve','all','lodash','./team.attributes','get','Queues','then','map','setDataValue'];(function(_0x59a294,_0x17dde5){var _0x175f9b=function(_0xe3ece2){while(--_0xe3ece2){_0x59a294['push'](_0x59a294['shift']());}};_0x175f9b(++_0x17dde5);}(_0xe665,0x1c7));var _0x5e66=function(_0x116a5c,_0x4c7dbd){_0x116a5c=_0x116a5c-0x0;var _0x1547b6=_0xe665[_0x116a5c];return _0x1547b6;};'use strict';var _=require(_0x5e66('0x0'));var attributes=require(_0x5e66('0x1'));function getQueuesByChannel(_0x294389,_0x3f71e3){var _0x59b574=_0x5e66('0x2')+_0x3f71e3+_0x5e66('0x3');return _0x294389[_0x59b574]()[_0x5e66('0x4')](function(_0x17cc08){return _[_0x5e66('0x5')](_0x17cc08,function(_0x45884b){_0x45884b[_0x5e66('0x6')](_0x5e66('0x7'),_0x3f71e3);return _0x45884b;});})[_0x5e66('0x8')](function(_0x19e8cd){throw _0x19e8cd;});}module[_0x5e66('0x9')]=function(_0x46bda8){return _0x46bda8[_0x5e66('0xa')](_0x5e66('0xb'),attributes,{'tableName':_0x5e66('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x3a950b=this;var _0x1fa9c6=[_0x5e66('0xd'),_0x5e66('0xe'),_0x5e66('0xf'),_0x5e66('0x10'),_0x5e66('0x11'),'Voice',_0x5e66('0x12')];return Promise[_0x5e66('0x13')]()[_0x5e66('0x4')](function(){var _0x3d51a6=_[_0x5e66('0x5')](_0x1fa9c6,function(_0x5cb23a){return getQueuesByChannel(_0x3a950b,_0x5cb23a);});return Promise[_0x5e66('0x14')](_0x3d51a6);})[_0x5e66('0x8')](function(_0x125740){throw _0x125740;});}}});};
\ No newline at end of file
index 1bbe511..fbb9de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065c=['error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./team.socket','register','request','Team,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x065c,0xde));var _0xc065=function(_0x22ee1e,_0x3eff80){_0x22ee1e=_0x22ee1e-0x0;var _0x49a5c9=_0x065c[_0x22ee1e];return _0x49a5c9;};'use strict';var _=require(_0xc065('0x0'));var util=require(_0xc065('0x1'));var moment=require(_0xc065('0x2'));var BPromise=require('bluebird');var rs=require(_0xc065('0x3'));var fs=require('fs');var Redis=require(_0xc065('0x4'));var db=require(_0xc065('0x5'))['db'];var utils=require(_0xc065('0x6'));var logger=require('../../config/logger')(_0xc065('0x7'));var config=require(_0xc065('0x8'));var jayson=require(_0xc065('0x9'));var client=jayson[_0xc065('0xa')][_0xc065('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xc065('0xc')],{'host':_0xc065('0xd'),'port':0x18eb});var socket=require(_0xc065('0xe'))(new Redis(config[_0xc065('0xc')]));require(_0xc065('0xf'))[_0xc065('0x10')](socket);function respondWithRpcPromise(_0x4f0189,_0xa50c4c,_0x48ec54){return new BPromise(function(_0xd9fa42,_0x541115){return client[_0xc065('0x11')](_0x4f0189,_0x48ec54)['then'](function(_0x5b4e1d){logger['info'](_0xc065('0x12'),_0xa50c4c,_0xc065('0x13'));logger['debug']('Team,\x20%s,\x20%s,\x20%s',_0xa50c4c,_0xc065('0x13'),JSON[_0xc065('0x14')](_0x5b4e1d));if(_0x5b4e1d[_0xc065('0x15')]){if(_0x5b4e1d[_0xc065('0x15')][_0xc065('0x16')]===0x1f4){logger[_0xc065('0x15')](_0xc065('0x12'),_0xa50c4c,_0x5b4e1d[_0xc065('0x15')][_0xc065('0x17')]);return _0x541115(_0x5b4e1d[_0xc065('0x15')][_0xc065('0x17')]);}logger['error'](_0xc065('0x12'),_0xa50c4c,_0x5b4e1d['error'][_0xc065('0x17')]);return _0xd9fa42(_0x5b4e1d[_0xc065('0x15')][_0xc065('0x17')]);}else{logger[_0xc065('0x18')](_0xc065('0x12'),_0xa50c4c,'request\x20sent');_0xd9fa42(_0x5b4e1d[_0xc065('0x19')][_0xc065('0x17')]);}})[_0xc065('0x1a')](function(_0x580c2e){logger[_0xc065('0x15')](_0xc065('0x12'),_0xa50c4c,_0x580c2e);_0x541115(_0x580c2e);});});}
\ No newline at end of file
+var _0xc9cf=['error','code','Team,\x20%s,\x20%s','result','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','localhost','socket.io-emitter','./team.socket','register','request','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s'];(function(_0x375b46,_0x429d16){var _0x4f42ee=function(_0x33124b){while(--_0x33124b){_0x375b46['push'](_0x375b46['shift']());}};_0x4f42ee(++_0x429d16);}(_0xc9cf,0x1d0));var _0xfc9c=function(_0x2f71c1,_0x319017){_0x2f71c1=_0x2f71c1-0x0;var _0x411bb7=_0xc9cf[_0x2f71c1];return _0x411bb7;};'use strict';var _=require(_0xfc9c('0x0'));var util=require(_0xfc9c('0x1'));var moment=require(_0xfc9c('0x2'));var BPromise=require(_0xfc9c('0x3'));var rs=require(_0xfc9c('0x4'));var fs=require('fs');var Redis=require(_0xfc9c('0x5'));var db=require(_0xfc9c('0x6'))['db'];var utils=require(_0xfc9c('0x7'));var logger=require(_0xfc9c('0x8'))('rpc');var config=require(_0xfc9c('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfc9c('0xa')]({'port':0x232a});config[_0xfc9c('0xb')]=_['defaults'](config[_0xfc9c('0xb')],{'host':_0xfc9c('0xc'),'port':0x18eb});var socket=require(_0xfc9c('0xd'))(new Redis(config[_0xfc9c('0xb')]));require(_0xfc9c('0xe'))[_0xfc9c('0xf')](socket);function respondWithRpcPromise(_0x360be3,_0x3ec5f3,_0x375ded){return new BPromise(function(_0x469034,_0x5cb27d){return client[_0xfc9c('0x10')](_0x360be3,_0x375ded)[_0xfc9c('0x11')](function(_0x484130){logger[_0xfc9c('0x12')]('Team,\x20%s,\x20%s',_0x3ec5f3,_0xfc9c('0x13'));logger[_0xfc9c('0x14')](_0xfc9c('0x15'),_0x3ec5f3,_0xfc9c('0x13'),JSON['stringify'](_0x484130));if(_0x484130[_0xfc9c('0x16')]){if(_0x484130[_0xfc9c('0x16')][_0xfc9c('0x17')]===0x1f4){logger[_0xfc9c('0x16')](_0xfc9c('0x18'),_0x3ec5f3,_0x484130['error']['message']);return _0x5cb27d(_0x484130[_0xfc9c('0x16')]['message']);}logger['error'](_0xfc9c('0x18'),_0x3ec5f3,_0x484130[_0xfc9c('0x16')]['message']);return _0x469034(_0x484130[_0xfc9c('0x16')]['message']);}else{logger['info']('Team,\x20%s,\x20%s',_0x3ec5f3,_0xfc9c('0x13'));_0x469034(_0x484130[_0xfc9c('0x19')][_0xfc9c('0x1a')]);}})['catch'](function(_0xe50b8f){logger[_0xfc9c('0x16')](_0xfc9c('0x18'),_0x3ec5f3,_0xe50b8f);_0x5cb27d(_0xe50b8f);});});}
\ No newline at end of file
index 6beb2bb..ab48228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e8c=['team:','save','remove','update','removeListener','register','length'];(function(_0x2577c4,_0x73a8ae){var _0x43e4b8=function(_0x1474e3){while(--_0x1474e3){_0x2577c4['push'](_0x2577c4['shift']());}};_0x43e4b8(++_0x73a8ae);}(_0x1e8c,0xd3));var _0xc1e8=function(_0x33d4a2,_0x2baaf4){_0x33d4a2=_0x33d4a2-0x0;var _0x2c793f=_0x1e8c[_0x33d4a2];return _0x2c793f;};'use strict';var TeamEvents=require('./team.events');var events=[_0xc1e8('0x0'),_0xc1e8('0x1'),_0xc1e8('0x2')];function createListener(_0x3e305e,_0x30b815){return function(_0x396907){_0x30b815['emit'](_0x3e305e,_0x396907);};}function removeListener(_0xe38ad6,_0x1c7941){return function(){TeamEvents[_0xc1e8('0x3')](_0xe38ad6,_0x1c7941);};}exports[_0xc1e8('0x4')]=function(_0x2547e3){for(var _0x18613e=0x0,_0x547868=events[_0xc1e8('0x5')];_0x18613e<_0x547868;_0x18613e++){var _0x40e7cd=events[_0x18613e];var _0x3b5001=createListener(_0xc1e8('0x6')+_0x40e7cd,_0x2547e3);TeamEvents['on'](_0x40e7cd,_0x3b5001);}};
\ No newline at end of file
+var _0xf925=['removeListener','register','team:','update'];(function(_0x381856,_0xed1491){var _0x46166b=function(_0xc21391){while(--_0xc21391){_0x381856['push'](_0x381856['shift']());}};_0x46166b(++_0xed1491);}(_0xf925,0xb7));var _0x5f92=function(_0xb08b54,_0x149ec4){_0xb08b54=_0xb08b54-0x0;var _0x353ed9=_0xf925[_0xb08b54];return _0x353ed9;};'use strict';var TeamEvents=require('./team.events');var events=['save','remove',_0x5f92('0x0')];function createListener(_0x40e496,_0x3e409a){return function(_0x46b17f){_0x3e409a['emit'](_0x40e496,_0x46b17f);};}function removeListener(_0x7e44ac,_0x2973c5){return function(){TeamEvents[_0x5f92('0x1')](_0x7e44ac,_0x2973c5);};}exports[_0x5f92('0x2')]=function(_0x91d10c){for(var _0x3e2312=0x0,_0x1c7ad6=events['length'];_0x3e2312<_0x1c7ad6;_0x3e2312++){var _0x5acf64=events[_0x3e2312];var _0x487d6f=createListener(_0x5f92('0x3')+_0x5acf64,_0x91d10c);TeamEvents['on'](_0x5acf64,_0x487d6f);}};
\ No newline at end of file
index 82b878b..87efb0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc9f=['sequelize','INTEGER'];(function(_0x318397,_0x4a2f1f){var _0x29adcc=function(_0x5196ff){while(--_0x5196ff){_0x318397['push'](_0x318397['shift']());}};_0x29adcc(++_0x4a2f1f);}(_0xfc9f,0x7a));var _0xffc9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfc9f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xffc9('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xffc9('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xffc9('0x1')]}};
\ No newline at end of file
+var _0xadf7=['INTEGER','sequelize'];(function(_0x1486ce,_0x233c7f){var _0x10a7b2=function(_0xd96f47){while(--_0xd96f47){_0x1486ce['push'](_0x1486ce['shift']());}};_0x10a7b2(++_0x233c7f);}(_0xadf7,0xb5));var _0x7adf=function(_0x141e0b,_0x2e2319){_0x141e0b=_0x141e0b-0x0;var _0x3178ec=_0xadf7[_0x141e0b];return _0x3178ec;};'use strict';var Sequelize=require(_0x7adf('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0x7adf('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index e138915..331f88a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc06d=['bluebird','request-promise','../../config/environment','exports','TeamVoicePrefix','team_has_voice_prefixes','lodash','util','../../config/logger','api'];(function(_0x584ca0,_0xe401da){var _0x4125dc=function(_0x34fc80){while(--_0x34fc80){_0x584ca0['push'](_0x584ca0['shift']());}};_0x4125dc(++_0xe401da);}(_0xc06d,0x15a));var _0xdc06=function(_0x43d3ca,_0x5ace94){_0x43d3ca=_0x43d3ca-0x0;var _0x1bc9dd=_0xc06d[_0x43d3ca];return _0x1bc9dd;};'use strict';var _=require(_0xdc06('0x0'));var util=require(_0xdc06('0x1'));var logger=require(_0xdc06('0x2'))(_0xdc06('0x3'));var moment=require('moment');var BPromise=require(_0xdc06('0x4'));var rp=require(_0xdc06('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdc06('0x6'));var attributes=require('./teamVoicePrefix.attributes');module[_0xdc06('0x7')]=function(_0x2f7692,_0x5ce60c){return _0x2f7692['define'](_0xdc06('0x8'),attributes,{'tableName':_0xdc06('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x823c=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./teamVoicePrefix.attributes','exports','TeamVoicePrefix','team_has_voice_prefixes','lodash'];(function(_0x6a0d31,_0xf59fef){var _0x2e99a1=function(_0x58d986){while(--_0x58d986){_0x6a0d31['push'](_0x6a0d31['shift']());}};_0x2e99a1(++_0xf59fef);}(_0x823c,0x143));var _0xc823=function(_0x1a1739,_0x5001b7){_0x1a1739=_0x1a1739-0x0;var _0x44280d=_0x823c[_0x1a1739];return _0x44280d;};'use strict';var _=require(_0xc823('0x0'));var util=require('util');var logger=require(_0xc823('0x1'))(_0xc823('0x2'));var moment=require(_0xc823('0x3'));var BPromise=require(_0xc823('0x4'));var rp=require(_0xc823('0x5'));var fs=require('fs');var path=require(_0xc823('0x6'));var rimraf=require('rimraf');var config=require(_0xc823('0x7'));var attributes=require(_0xc823('0x8'));module[_0xc823('0x9')]=function(_0x42e0c0,_0x380607){return _0x42e0c0['define'](_0xc823('0xa'),attributes,{'tableName':_0xc823('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b2552d5..f901c35 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(_0x16ef9c,_0x55568f){var _0x38ad91=function(_0x459f6c){while(--_0x459f6c){_0x16ef9c['push'](_0x16ef9c['shift']());}};_0x38ad91(++_0x55568f);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x34fe88,_0x36a469){var _0x3d6cd0=function(_0x3e4fea){while(--_0x3e4fea){_0x34fe88['push'](_0x34fe88['shift']());}};_0x3d6cd0(++_0x36a469);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 2af77f5..01faeff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8109=['INTEGER','sequelize'];(function(_0x1e5ce3,_0x16f008){var _0x19b7a7=function(_0x1b0011){while(--_0x1b0011){_0x1e5ce3['push'](_0x1e5ce3['shift']());}};_0x19b7a7(++_0x16f008);}(_0x8109,0xff));var _0x9810=function(_0x3e334d,_0x5d37db){_0x3e334d=_0x3e334d-0x0;var _0x2949ce=_0x8109[_0x3e334d];return _0x2949ce;};'use strict';var Sequelize=require(_0x9810('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x9810('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaf43=['exports','INTEGER'];(function(_0x45afc1,_0x52a029){var _0x182539=function(_0x547e72){while(--_0x547e72){_0x45afc1['push'](_0x45afc1['shift']());}};_0x182539(++_0x52a029);}(_0xaf43,0x182));var _0x3af4=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xaf43[_0x46698a];return _0x356db0;};'use strict';var Sequelize=require('sequelize');module[_0x3af4('0x0')]={'penalty':{'type':Sequelize[_0x3af4('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index e8c7c55..17a55e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c96=['api','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','TeamVoiceQueue','lodash','../../config/logger'];(function(_0x4828b1,_0x5c8cf3){var _0x1fec1b=function(_0x3f2e5a){while(--_0x3f2e5a){_0x4828b1['push'](_0x4828b1['shift']());}};_0x1fec1b(++_0x5c8cf3);}(_0x6c96,0x1c1));var _0x66c9=function(_0x4f969e,_0xc440b){_0x4f969e=_0x4f969e-0x0;var _0x2958ea=_0x6c96[_0x4f969e];return _0x2958ea;};'use strict';var _=require(_0x66c9('0x0'));var util=require('util');var logger=require(_0x66c9('0x1'))(_0x66c9('0x2'));var moment=require('moment');var BPromise=require(_0x66c9('0x3'));var rp=require(_0x66c9('0x4'));var fs=require('fs');var path=require(_0x66c9('0x5'));var rimraf=require(_0x66c9('0x6'));var config=require(_0x66c9('0x7'));var attributes=require(_0x66c9('0x8'));module[_0x66c9('0x9')]=function(_0x55b24d,_0x1c8b59){return _0x55b24d['define'](_0x66c9('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x861a=['bluebird','request-promise','path','../../config/environment','./teamVoiceQueue.attributes','exports','TeamVoiceQueue','team_has_voice_queues','lodash','../../config/logger','api','moment'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x861a,0x194));var _0xa861=function(_0x2ae381,_0x58c00e){_0x2ae381=_0x2ae381-0x0;var _0x199fdb=_0x861a[_0x2ae381];return _0x199fdb;};'use strict';var _=require(_0xa861('0x0'));var util=require('util');var logger=require(_0xa861('0x1'))(_0xa861('0x2'));var moment=require(_0xa861('0x3'));var BPromise=require(_0xa861('0x4'));var rp=require(_0xa861('0x5'));var fs=require('fs');var path=require(_0xa861('0x6'));var rimraf=require('rimraf');var config=require(_0xa861('0x7'));var attributes=require(_0xa861('0x8'));module[_0xa861('0x9')]=function(_0x1a9322,_0x247b78){return _0x1a9322['define'](_0xa861('0xa'),attributes,{'tableName':_0xa861('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d60e0ef..a553a0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3731=['TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x54f18,_0x5831e4){var _0x1d1867=function(_0x565b32){while(--_0x565b32){_0x54f18['push'](_0x54f18['shift']());}};_0x1d1867(++_0x5831e4);}(_0x3731,0xba));var _0x1373=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3731[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x1373('0x0'));var util=require('util');var moment=require(_0x1373('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1373('0x2'));var logger=require(_0x1373('0x3'))(_0x1373('0x4'));var config=require(_0x1373('0x5'));var jayson=require(_0x1373('0x6'));var client=jayson['client'][_0x1373('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x38f978,_0x3135b7,_0x4ca32a){return new BPromise(function(_0x497188,_0x201409){return client['request'](_0x38f978,_0x4ca32a)['then'](function(_0x4bba81){logger[_0x1373('0x8')](_0x1373('0x9'),_0x3135b7,_0x1373('0xa'));logger[_0x1373('0xb')](_0x1373('0xc'),_0x3135b7,_0x1373('0xa'),JSON[_0x1373('0xd')](_0x4bba81));if(_0x4bba81[_0x1373('0xe')]){if(_0x4bba81[_0x1373('0xe')][_0x1373('0xf')]===0x1f4){logger[_0x1373('0xe')](_0x1373('0x9'),_0x3135b7,_0x4bba81[_0x1373('0xe')][_0x1373('0x10')]);return _0x201409(_0x4bba81['error']['message']);}logger[_0x1373('0xe')](_0x1373('0x9'),_0x3135b7,_0x4bba81[_0x1373('0xe')]['message']);return _0x497188(_0x4bba81['error'][_0x1373('0x10')]);}else{logger[_0x1373('0x8')](_0x1373('0x9'),_0x3135b7,_0x1373('0xa'));_0x497188(_0x4bba81[_0x1373('0x11')][_0x1373('0x10')]);}})['catch'](function(_0x10e19c){logger['error'](_0x1373('0x9'),_0x3135b7,_0x10e19c);_0x201409(_0x10e19c);});});}
\ No newline at end of file
+var _0xaef2=['TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info'];(function(_0x5b2d1a,_0x4a3eb4){var _0x19a96e=function(_0x36eab7){while(--_0x36eab7){_0x5b2d1a['push'](_0x5b2d1a['shift']());}};_0x19a96e(++_0x4a3eb4);}(_0xaef2,0x138));var _0x2aef=function(_0x22cff2,_0x5ad3ed){_0x22cff2=_0x22cff2-0x0;var _0x27b388=_0xaef2[_0x22cff2];return _0x27b388;};'use strict';var _=require(_0x2aef('0x0'));var util=require(_0x2aef('0x1'));var moment=require(_0x2aef('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2aef('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2aef('0x4'));var logger=require(_0x2aef('0x5'))(_0x2aef('0x6'));var config=require(_0x2aef('0x7'));var jayson=require(_0x2aef('0x8'));var client=jayson[_0x2aef('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f43d5,_0x1d90f0,_0x11c9cf){return new BPromise(function(_0xd5e3ff,_0x1e5c53){return client[_0x2aef('0xa')](_0x1f43d5,_0x11c9cf)['then'](function(_0x13e942){logger[_0x2aef('0xb')](_0x2aef('0xc'),_0x1d90f0,_0x2aef('0xd'));logger['debug']('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x1d90f0,_0x2aef('0xd'),JSON[_0x2aef('0xe')](_0x13e942));if(_0x13e942[_0x2aef('0xf')]){if(_0x13e942[_0x2aef('0xf')]['code']===0x1f4){logger[_0x2aef('0xf')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1d90f0,_0x13e942[_0x2aef('0xf')]['message']);return _0x1e5c53(_0x13e942[_0x2aef('0xf')][_0x2aef('0x10')]);}logger['error'](_0x2aef('0xc'),_0x1d90f0,_0x13e942[_0x2aef('0xf')]['message']);return _0xd5e3ff(_0x13e942[_0x2aef('0xf')][_0x2aef('0x10')]);}else{logger[_0x2aef('0xb')](_0x2aef('0xc'),_0x1d90f0,_0x2aef('0xd'));_0xd5e3ff(_0x13e942['result']['message']);}})[_0x2aef('0x11')](function(_0x526316){logger[_0x2aef('0xf')](_0x2aef('0xc'),_0x1d90f0,_0x526316);_0x1e5c53(_0x526316);});});}
\ No newline at end of file
index aea7a4d..5fdc9e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['../../components/auth/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','connect-timeout','Router'];(function(_0x365143,_0x5bee07){var _0x13dc56=function(_0x12d874){while(--_0x12d874){_0x365143['push'](_0x365143['shift']());}};_0x13dc56(++_0x5bee07);}(_0xd4a2,0x173));var _0x2d4a=function(_0x4bfe23,_0x4c147c){_0x4bfe23=_0x4bfe23-0x0;var _0x379fd8=_0xd4a2[_0x4bfe23];return _0x379fd8;};'use strict';var multer=require(_0x2d4a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2d4a('0x1'));var express=require('express');var router=express[_0x2d4a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2d4a('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x2d4a('0x4'));var controller=require(_0x2d4a('0x5'));router[_0x2d4a('0x6')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x8')]);router['get'](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xa')]);router[_0x2d4a('0xb')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xc')]);router[_0x2d4a('0xd')](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xe')]);router[_0x2d4a('0xf')](_0x2d4a('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x2d4a('0x10')]=router;
\ No newline at end of file
+var _0xa908=['../../components/auth/service','../../components/interaction/service','./template.controller','get','index','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','multer','path','express','Router','fs-extra'];(function(_0x140d6f,_0x5303f8){var _0x56cce4=function(_0x5e94a9){while(--_0x5e94a9){_0x140d6f['push'](_0x140d6f['shift']());}};_0x56cce4(++_0x5303f8);}(_0xa908,0x1c3));var _0x8a90=function(_0x4ad553,_0x586c5a){_0x4ad553=_0x4ad553-0x0;var _0x136750=_0xa908[_0x4ad553];return _0x136750;};'use strict';var multer=require(_0x8a90('0x0'));var util=require('util');var path=require(_0x8a90('0x1'));var timeout=require('connect-timeout');var express=require(_0x8a90('0x2'));var router=express[_0x8a90('0x3')]();var fs_extra=require(_0x8a90('0x4'));var auth=require(_0x8a90('0x5'));var interaction=require(_0x8a90('0x6'));var config=require('../../config/environment');var controller=require(_0x8a90('0x7'));router[_0x8a90('0x8')]('/',auth['isAuthenticated'](),controller[_0x8a90('0x9')]);router[_0x8a90('0x8')](_0x8a90('0xa'),auth[_0x8a90('0xb')](),controller[_0x8a90('0xc')]);router[_0x8a90('0xd')]('/',auth['isAuthenticated'](),controller[_0x8a90('0xe')]);router['put'](_0x8a90('0xa'),auth['isAuthenticated'](),controller[_0x8a90('0xf')]);router[_0x8a90('0x10')](_0x8a90('0xa'),auth[_0x8a90('0xb')](),controller[_0x8a90('0x11')]);module[_0x8a90('0x12')]=router;
\ No newline at end of file
index 65a8a88..9d9456a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4493=['sequelize','STRING'];(function(_0x5191b2,_0x5353dc){var _0x21f585=function(_0x316d5c){while(--_0x316d5c){_0x5191b2['push'](_0x5191b2['shift']());}};_0x21f585(++_0x5353dc);}(_0x4493,0xd8));var _0x3449=function(_0x27097b,_0x2c45bb){_0x27097b=_0x27097b-0x0;var _0x308529=_0x4493[_0x27097b];return _0x308529;};'use strict';var Sequelize=require(_0x3449('0x0'));module['exports']={'name':{'type':Sequelize[_0x3449('0x1')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xac12=['exports','STRING','TEXT','sequelize'];(function(_0x29e7ed,_0x29397d){var _0x15eaa7=function(_0x31fb10){while(--_0x31fb10){_0x29e7ed['push'](_0x29e7ed['shift']());}};_0x15eaa7(++_0x29397d);}(_0xac12,0x133));var _0x2ac1=function(_0x9a06f0,_0x5db000){_0x9a06f0=_0x9a06f0-0x0;var _0x53f935=_0xac12[_0x9a06f0];return _0x53f935;};'use strict';var Sequelize=require(_0x2ac1('0x0'));module[_0x2ac1('0x1')]={'name':{'type':Sequelize[_0x2ac1('0x2')]},'description':{'type':Sequelize[_0x2ac1('0x2')]},'html':{'type':Sequelize[_0x2ac1('0x3')]}};
\ No newline at end of file
index 5951786..b2bc89c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83c8=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','apply','reject','update','then','destroy','get','Templates','end','error','stack','name','send','index','Template','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x1407af,_0x4f2880){var _0x1b1640=function(_0x4e072b){while(--_0x4e072b){_0x1407af['push'](_0x1407af['shift']());}};_0x1b1640(++_0x4f2880);}(_0x83c8,0xff));var _0x883c=function(_0x3718b7,_0x2da677){_0x3718b7=_0x3718b7-0x0;var _0xf8c91e=_0x83c8[_0x3718b7];return _0xf8c91e;};'use strict';var emlformat=require(_0x883c('0x0'));var rimraf=require(_0x883c('0x1'));var zipdir=require(_0x883c('0x2'));var jsonpatch=require(_0x883c('0x3'));var rp=require(_0x883c('0x4'));var moment=require(_0x883c('0x5'));var BPromise=require(_0x883c('0x6'));var Mustache=require(_0x883c('0x7'));var util=require(_0x883c('0x8'));var path=require(_0x883c('0x9'));var sox=require(_0x883c('0xa'));var csv=require('to-csv');var ejs=require(_0x883c('0xb'));var fs=require('fs');var fs_extra=require(_0x883c('0xc'));var _=require(_0x883c('0xd'));var squel=require(_0x883c('0xe'));var crypto=require(_0x883c('0xf'));var jsforce=require(_0x883c('0x10'));var deskjs=require(_0x883c('0x11'));var toCsv=require('to-csv');var querystring=require(_0x883c('0x12'));var Papa=require(_0x883c('0x13'));var Redis=require(_0x883c('0x14'));var authService=require(_0x883c('0x15'));var qs=require(_0x883c('0x16'));var as=require(_0x883c('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x883c('0x18'))('api');var utils=require(_0x883c('0x19'));var config=require(_0x883c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x883c('0x1b'))['db'];function respondWithStatusCode(_0x5bab95,_0x18ac2e){_0x18ac2e=_0x18ac2e||0xcc;return function(_0x115fea){if(_0x115fea){return _0x5bab95['sendStatus'](_0x18ac2e);}return _0x5bab95[_0x883c('0x1c')](_0x18ac2e)['end']();};}function respondWithResult(_0x386cd3,_0x5ed8ea){_0x5ed8ea=_0x5ed8ea||0xc8;return function(_0x3576c6){if(_0x3576c6){return _0x386cd3[_0x883c('0x1c')](_0x5ed8ea)[_0x883c('0x1d')](_0x3576c6);}};}function respondWithFilteredResult(_0x323b0f,_0x583ac6){return function(_0x5bfe5e){if(_0x5bfe5e){var _0x2e6e45=typeof _0x583ac6[_0x883c('0x1e')]===_0x883c('0x1f')&&typeof _0x583ac6[_0x883c('0x20')]===_0x883c('0x1f');var _0x21af86=_0x5bfe5e[_0x883c('0x21')];var _0x1d2c8b=_0x2e6e45?0x0:_0x583ac6[_0x883c('0x1e')];var _0x1dcfc9=_0x2e6e45?_0x5bfe5e[_0x883c('0x21')]:_0x583ac6['offset']+_0x583ac6[_0x883c('0x20')];var _0x3e28ac;if(_0x1dcfc9>=_0x21af86){_0x1dcfc9=_0x21af86;_0x3e28ac=0xc8;}else{_0x3e28ac=0xce;}_0x323b0f[_0x883c('0x1c')](_0x3e28ac);return _0x323b0f['set']('Content-Range',_0x1d2c8b+'-'+_0x1dcfc9+'/'+_0x21af86)[_0x883c('0x1d')](_0x5bfe5e);}return null;};}function patchUpdates(_0x527e8b){return function(_0x2f78ad){try{jsonpatch[_0x883c('0x22')](_0x2f78ad,_0x527e8b,!![]);}catch(_0xd40f6b){return BPromise[_0x883c('0x23')](_0xd40f6b);}return _0x2f78ad['save']();};}function saveUpdates(_0x43f58c,_0x3d20fe){return function(_0x2f566d){if(_0x2f566d){return _0x2f566d[_0x883c('0x24')](_0x43f58c)[_0x883c('0x25')](function(_0x38c00a){return _0x38c00a;});}return null;};}function removeEntity(_0x7f417e,_0x450dc7){return function(_0x474174){if(_0x474174){return _0x474174[_0x883c('0x26')]()[_0x883c('0x25')](function(){var _0x34a3b5=_0x474174[_0x883c('0x27')]({'plain':!![]});var _0x3d7110=_0x883c('0x28');return db['UserProfileResource'][_0x883c('0x26')]({'where':{'type':_0x3d7110,'resourceId':_0x34a3b5['id']}})['then'](function(){return _0x474174;});})[_0x883c('0x25')](function(){_0x7f417e[_0x883c('0x1c')](0xcc)[_0x883c('0x29')]();});}};}function handleEntityNotFound(_0x3a124e,_0x318e4a){return function(_0x4104b7){if(!_0x4104b7){_0x3a124e['sendStatus'](0x194);}return _0x4104b7;};}function handleError(_0x4ccb70,_0x34559d){_0x34559d=_0x34559d||0x1f4;return function(_0x378940){logger[_0x883c('0x2a')](_0x378940[_0x883c('0x2b')]);if(_0x378940[_0x883c('0x2c')]){delete _0x378940['name'];}_0x4ccb70[_0x883c('0x1c')](_0x34559d)[_0x883c('0x2d')](_0x378940);};}exports[_0x883c('0x2e')]=function(_0x1a0f07,_0x4570f1){var _0xc56c5f={},_0x175626={},_0xd80934={'count':0x0,'rows':[]};var _0x36fa3b=_['map'](db[_0x883c('0x2f')][_0x883c('0x30')],function(_0x2b0ac7){return{'name':_0x2b0ac7[_0x883c('0x31')],'type':_0x2b0ac7[_0x883c('0x32')][_0x883c('0x33')]};});_0x175626[_0x883c('0x34')]=_[_0x883c('0x35')](_0x36fa3b,_0x883c('0x2c'));_0x175626[_0x883c('0x36')]=_['keys'](_0x1a0f07[_0x883c('0x36')]);_0x175626['filters']=_['intersection'](_0x175626[_0x883c('0x34')],_0x175626[_0x883c('0x36')]);_0xc56c5f[_0x883c('0x37')]=_[_0x883c('0x38')](_0x175626[_0x883c('0x34')],qs[_0x883c('0x39')](_0x1a0f07['query']['fields']));_0xc56c5f[_0x883c('0x37')]=_0xc56c5f[_0x883c('0x37')][_0x883c('0x3a')]?_0xc56c5f[_0x883c('0x37')]:_0x175626['model'];if(!_0x1a0f07['query'][_0x883c('0x3b')]('nolimit')){_0xc56c5f[_0x883c('0x20')]=qs[_0x883c('0x20')](_0x1a0f07[_0x883c('0x36')][_0x883c('0x20')]);_0xc56c5f[_0x883c('0x1e')]=qs[_0x883c('0x1e')](_0x1a0f07[_0x883c('0x36')][_0x883c('0x1e')]);}_0xc56c5f[_0x883c('0x3c')]=qs[_0x883c('0x3d')](_0x1a0f07[_0x883c('0x36')]['sort']);_0xc56c5f[_0x883c('0x3e')]=qs[_0x883c('0x3f')](_[_0x883c('0x40')](_0x1a0f07[_0x883c('0x36')],_0x175626['filters']),_0x36fa3b);if(_0x1a0f07[_0x883c('0x36')][_0x883c('0x41')]){_0xc56c5f['where']=_[_0x883c('0x42')](_0xc56c5f[_0x883c('0x3e')],{'$or':_[_0x883c('0x35')](_0x36fa3b,function(_0x11defe){if(_0x11defe[_0x883c('0x32')]!==_0x883c('0x43')){var _0x4ec617={};_0x4ec617[_0x11defe['name']]={'$like':'%'+_0x1a0f07[_0x883c('0x36')][_0x883c('0x41')]+'%'};return _0x4ec617;}})});}_0xc56c5f=_[_0x883c('0x42')]({},_0xc56c5f,_0x1a0f07[_0x883c('0x44')]);var _0x51176b={'where':_0xc56c5f['where']};return db[_0x883c('0x2f')][_0x883c('0x21')](_0x51176b)[_0x883c('0x25')](function(_0x1f6a41){_0xd80934[_0x883c('0x21')]=_0x1f6a41;if(_0x1a0f07['query'][_0x883c('0x45')]){_0xc56c5f[_0x883c('0x46')]=[{'all':!![]}];}return db[_0x883c('0x2f')][_0x883c('0x47')](_0xc56c5f);})[_0x883c('0x25')](function(_0x54a6fe){_0xd80934[_0x883c('0x48')]=_0x54a6fe;return _0xd80934;})[_0x883c('0x25')](respondWithFilteredResult(_0x4570f1,_0xc56c5f))[_0x883c('0x49')](handleError(_0x4570f1,null));};exports[_0x883c('0x4a')]=function(_0x552a7a,_0x7de566){var _0x84d084={'raw':!![],'where':{'id':_0x552a7a[_0x883c('0x4b')]['id']}},_0x163377={};_0x163377[_0x883c('0x34')]=_['keys'](db[_0x883c('0x2f')][_0x883c('0x30')]);_0x163377['query']=_[_0x883c('0x4c')](_0x552a7a['query']);_0x163377['filters']=_['intersection'](_0x163377[_0x883c('0x34')],_0x163377['query']);_0x84d084[_0x883c('0x37')]=_['intersection'](_0x163377['model'],qs[_0x883c('0x39')](_0x552a7a[_0x883c('0x36')][_0x883c('0x39')]));_0x84d084[_0x883c('0x37')]=_0x84d084['attributes'][_0x883c('0x3a')]?_0x84d084[_0x883c('0x37')]:_0x163377['model'];if(_0x552a7a['query'][_0x883c('0x45')]){_0x84d084[_0x883c('0x46')]=[{'all':!![]}];}_0x84d084=_['merge']({},_0x84d084,_0x552a7a[_0x883c('0x44')]);return db[_0x883c('0x2f')][_0x883c('0x4d')](_0x84d084)[_0x883c('0x25')](handleEntityNotFound(_0x7de566,null))[_0x883c('0x25')](respondWithResult(_0x7de566,null))[_0x883c('0x49')](handleError(_0x7de566,null));};exports[_0x883c('0x4e')]=function(_0x4bc3e5,_0x3703f2){return db['Template'][_0x883c('0x4e')](_0x4bc3e5[_0x883c('0x4f')],{})[_0x883c('0x25')](function(_0x15abfd){var _0x331b25=_0x4bc3e5['user']['get']({'plain':!![]});if(!_0x331b25)throw new Error(_0x883c('0x50'));if(_0x331b25[_0x883c('0x51')]===_0x883c('0x52')){var _0x17cf9e=_0x15abfd[_0x883c('0x27')]({'plain':!![]});var _0x12f9c2=_0x883c('0x28');return db['UserProfileSection'][_0x883c('0x4d')]({'where':{'name':_0x12f9c2,'userProfileId':_0x331b25[_0x883c('0x53')]},'raw':!![]})[_0x883c('0x25')](function(_0x5b6434){if(_0x5b6434&&_0x5b6434['autoAssociation']===0x0){return db['UserProfileResource'][_0x883c('0x4e')]({'name':_0x17cf9e['name'],'resourceId':_0x17cf9e['id'],'type':_0x5b6434[_0x883c('0x2c')],'sectionId':_0x5b6434['id']},{})[_0x883c('0x25')](function(){return _0x15abfd;});}else{return _0x15abfd;}})[_0x883c('0x49')](function(_0x1d8b49){logger[_0x883c('0x2a')](_0x883c('0x54'),_0x1d8b49);throw _0x1d8b49;});}return _0x15abfd;})[_0x883c('0x25')](respondWithResult(_0x3703f2,0xc9))[_0x883c('0x49')](handleError(_0x3703f2,null));};exports[_0x883c('0x24')]=function(_0x4fbd73,_0x1538a5){if(_0x4fbd73[_0x883c('0x4f')]['id']){delete _0x4fbd73[_0x883c('0x4f')]['id'];}return db[_0x883c('0x2f')][_0x883c('0x4d')]({'where':{'id':_0x4fbd73[_0x883c('0x4b')]['id']}})[_0x883c('0x25')](handleEntityNotFound(_0x1538a5,null))['then'](saveUpdates(_0x4fbd73[_0x883c('0x4f')],null))[_0x883c('0x25')](respondWithResult(_0x1538a5,null))[_0x883c('0x49')](handleError(_0x1538a5,null));};exports['destroy']=function(_0x3fa7a4,_0x449266){return db['Template'][_0x883c('0x4d')]({'where':{'id':_0x3fa7a4[_0x883c('0x4b')]['id']}})[_0x883c('0x25')](handleEntityNotFound(_0x449266,null))[_0x883c('0x25')](removeEntity(_0x449266,null))[_0x883c('0x49')](handleError(_0x449266,null));};
\ No newline at end of file
+var _0x45dd=['params','rawAttributes','length','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Templates','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','zip-dir','request-promise','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','UserProfileResource','error','stack','name','send','index','map','Template','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x45dd,0x162));var _0xd45d=function(_0x40f978,_0x451eda){_0x40f978=_0x40f978-0x0;var _0x321fab=_0x45dd[_0x40f978];return _0x321fab;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd45d('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd45d('0x1'));var moment=require('moment');var BPromise=require(_0xd45d('0x2'));var Mustache=require('mustache');var util=require(_0xd45d('0x3'));var path=require(_0xd45d('0x4'));var sox=require('sox');var csv=require(_0xd45d('0x5'));var ejs=require(_0xd45d('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd45d('0x7'));var squel=require(_0xd45d('0x8'));var crypto=require(_0xd45d('0x9'));var jsforce=require(_0xd45d('0xa'));var deskjs=require(_0xd45d('0xb'));var toCsv=require(_0xd45d('0x5'));var querystring=require(_0xd45d('0xc'));var Papa=require(_0xd45d('0xd'));var Redis=require(_0xd45d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd45d('0xf'));var as=require(_0xd45d('0x10'));var hardwareService=require(_0xd45d('0x11'));var logger=require(_0xd45d('0x12'))(_0xd45d('0x13'));var utils=require('../../config/utils');var config=require(_0xd45d('0x14'));var licenseUtil=require(_0xd45d('0x15'));var db=require(_0xd45d('0x16'))['db'];function respondWithStatusCode(_0x8628ac,_0x150675){_0x150675=_0x150675||0xcc;return function(_0x356eb0){if(_0x356eb0){return _0x8628ac[_0xd45d('0x17')](_0x150675);}return _0x8628ac[_0xd45d('0x18')](_0x150675)['end']();};}function respondWithResult(_0xa91e79,_0x1f9b6d){_0x1f9b6d=_0x1f9b6d||0xc8;return function(_0x3f6301){if(_0x3f6301){return _0xa91e79[_0xd45d('0x18')](_0x1f9b6d)['json'](_0x3f6301);}};}function respondWithFilteredResult(_0x5501be,_0x18d3b6){return function(_0x47296b){if(_0x47296b){var _0x58e5e4=typeof _0x18d3b6['offset']===_0xd45d('0x19')&&typeof _0x18d3b6[_0xd45d('0x1a')]===_0xd45d('0x19');var _0x38d0b5=_0x47296b[_0xd45d('0x1b')];var _0x3efdc4=_0x58e5e4?0x0:_0x18d3b6['offset'];var _0x2e71df=_0x58e5e4?_0x47296b[_0xd45d('0x1b')]:_0x18d3b6[_0xd45d('0x1c')]+_0x18d3b6[_0xd45d('0x1a')];var _0x46f761;if(_0x2e71df>=_0x38d0b5){_0x2e71df=_0x38d0b5;_0x46f761=0xc8;}else{_0x46f761=0xce;}_0x5501be[_0xd45d('0x18')](_0x46f761);return _0x5501be[_0xd45d('0x1d')](_0xd45d('0x1e'),_0x3efdc4+'-'+_0x2e71df+'/'+_0x38d0b5)[_0xd45d('0x1f')](_0x47296b);}return null;};}function patchUpdates(_0x22044a){return function(_0x2c3146){try{jsonpatch[_0xd45d('0x20')](_0x2c3146,_0x22044a,!![]);}catch(_0x35c676){return BPromise[_0xd45d('0x21')](_0x35c676);}return _0x2c3146[_0xd45d('0x22')]();};}function saveUpdates(_0x3b7669,_0x3db556){return function(_0x56314f){if(_0x56314f){return _0x56314f[_0xd45d('0x23')](_0x3b7669)[_0xd45d('0x24')](function(_0x2bf0f5){return _0x2bf0f5;});}return null;};}function removeEntity(_0x343e36,_0x358fcd){return function(_0x206f3d){if(_0x206f3d){return _0x206f3d[_0xd45d('0x25')]()['then'](function(){var _0x1439b1=_0x206f3d['get']({'plain':!![]});var _0x116f24='Templates';return db[_0xd45d('0x26')][_0xd45d('0x25')]({'where':{'type':_0x116f24,'resourceId':_0x1439b1['id']}})[_0xd45d('0x24')](function(){return _0x206f3d;});})[_0xd45d('0x24')](function(){_0x343e36['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x452df5,_0x76a9bb){return function(_0x160d78){if(!_0x160d78){_0x452df5['sendStatus'](0x194);}return _0x160d78;};}function handleError(_0x2cfb95,_0x51a191){_0x51a191=_0x51a191||0x1f4;return function(_0x5d297f){logger[_0xd45d('0x27')](_0x5d297f[_0xd45d('0x28')]);if(_0x5d297f['name']){delete _0x5d297f[_0xd45d('0x29')];}_0x2cfb95[_0xd45d('0x18')](_0x51a191)[_0xd45d('0x2a')](_0x5d297f);};}exports[_0xd45d('0x2b')]=function(_0x18bf79,_0x3fe5ee){var _0x111db0={},_0x157ab4={},_0x423d96={'count':0x0,'rows':[]};var _0x23bf23=_[_0xd45d('0x2c')](db[_0xd45d('0x2d')]['rawAttributes'],function(_0x4c3f35){return{'name':_0x4c3f35[_0xd45d('0x2e')],'type':_0x4c3f35[_0xd45d('0x2f')][_0xd45d('0x30')]};});_0x157ab4[_0xd45d('0x31')]=_[_0xd45d('0x2c')](_0x23bf23,_0xd45d('0x29'));_0x157ab4[_0xd45d('0x32')]=_[_0xd45d('0x33')](_0x18bf79[_0xd45d('0x32')]);_0x157ab4[_0xd45d('0x34')]=_[_0xd45d('0x35')](_0x157ab4[_0xd45d('0x31')],_0x157ab4[_0xd45d('0x32')]);_0x111db0[_0xd45d('0x36')]=_[_0xd45d('0x35')](_0x157ab4[_0xd45d('0x31')],qs[_0xd45d('0x37')](_0x18bf79['query'][_0xd45d('0x37')]));_0x111db0[_0xd45d('0x36')]=_0x111db0['attributes']['length']?_0x111db0[_0xd45d('0x36')]:_0x157ab4[_0xd45d('0x31')];if(!_0x18bf79[_0xd45d('0x32')][_0xd45d('0x38')](_0xd45d('0x39'))){_0x111db0['limit']=qs[_0xd45d('0x1a')](_0x18bf79[_0xd45d('0x32')][_0xd45d('0x1a')]);_0x111db0[_0xd45d('0x1c')]=qs[_0xd45d('0x1c')](_0x18bf79[_0xd45d('0x32')][_0xd45d('0x1c')]);}_0x111db0[_0xd45d('0x3a')]=qs[_0xd45d('0x3b')](_0x18bf79[_0xd45d('0x32')][_0xd45d('0x3b')]);_0x111db0[_0xd45d('0x3c')]=qs[_0xd45d('0x34')](_[_0xd45d('0x3d')](_0x18bf79[_0xd45d('0x32')],_0x157ab4[_0xd45d('0x34')]),_0x23bf23);if(_0x18bf79[_0xd45d('0x32')][_0xd45d('0x3e')]){_0x111db0['where']=_[_0xd45d('0x3f')](_0x111db0[_0xd45d('0x3c')],{'$or':_[_0xd45d('0x2c')](_0x23bf23,function(_0x169c81){if(_0x169c81['type']!==_0xd45d('0x40')){var _0x78efd2={};_0x78efd2[_0x169c81[_0xd45d('0x29')]]={'$like':'%'+_0x18bf79[_0xd45d('0x32')][_0xd45d('0x3e')]+'%'};return _0x78efd2;}})});}_0x111db0=_[_0xd45d('0x3f')]({},_0x111db0,_0x18bf79[_0xd45d('0x41')]);var _0x5db53f={'where':_0x111db0[_0xd45d('0x3c')]};return db[_0xd45d('0x2d')][_0xd45d('0x1b')](_0x5db53f)[_0xd45d('0x24')](function(_0x535f05){_0x423d96['count']=_0x535f05;if(_0x18bf79[_0xd45d('0x32')][_0xd45d('0x42')]){_0x111db0[_0xd45d('0x43')]=[{'all':!![]}];}return db[_0xd45d('0x2d')]['findAll'](_0x111db0);})[_0xd45d('0x24')](function(_0x3a2517){_0x423d96[_0xd45d('0x44')]=_0x3a2517;return _0x423d96;})['then'](respondWithFilteredResult(_0x3fe5ee,_0x111db0))[_0xd45d('0x45')](handleError(_0x3fe5ee,null));};exports[_0xd45d('0x46')]=function(_0x28244c,_0x4a6b49){var _0x40517c={'raw':!![],'where':{'id':_0x28244c[_0xd45d('0x47')]['id']}},_0x21ffb6={};_0x21ffb6['model']=_['keys'](db[_0xd45d('0x2d')][_0xd45d('0x48')]);_0x21ffb6[_0xd45d('0x32')]=_['keys'](_0x28244c[_0xd45d('0x32')]);_0x21ffb6[_0xd45d('0x34')]=_[_0xd45d('0x35')](_0x21ffb6['model'],_0x21ffb6[_0xd45d('0x32')]);_0x40517c['attributes']=_[_0xd45d('0x35')](_0x21ffb6['model'],qs[_0xd45d('0x37')](_0x28244c[_0xd45d('0x32')][_0xd45d('0x37')]));_0x40517c[_0xd45d('0x36')]=_0x40517c[_0xd45d('0x36')][_0xd45d('0x49')]?_0x40517c['attributes']:_0x21ffb6['model'];if(_0x28244c[_0xd45d('0x32')][_0xd45d('0x42')]){_0x40517c['include']=[{'all':!![]}];}_0x40517c=_['merge']({},_0x40517c,_0x28244c['options']);return db[_0xd45d('0x2d')][_0xd45d('0x4a')](_0x40517c)[_0xd45d('0x24')](handleEntityNotFound(_0x4a6b49,null))[_0xd45d('0x24')](respondWithResult(_0x4a6b49,null))[_0xd45d('0x45')](handleError(_0x4a6b49,null));};exports[_0xd45d('0x4b')]=function(_0x4189db,_0xbea6cc){return db[_0xd45d('0x2d')][_0xd45d('0x4b')](_0x4189db['body'],{})[_0xd45d('0x24')](function(_0x400ee9){var _0x1f507=_0x4189db['user'][_0xd45d('0x4c')]({'plain':!![]});if(!_0x1f507)throw new Error(_0xd45d('0x4d'));if(_0x1f507['role']===_0xd45d('0x4e')){var _0x2c52bc=_0x400ee9[_0xd45d('0x4c')]({'plain':!![]});var _0x225382=_0xd45d('0x4f');return db[_0xd45d('0x50')][_0xd45d('0x4a')]({'where':{'name':_0x225382,'userProfileId':_0x1f507[_0xd45d('0x51')]},'raw':!![]})[_0xd45d('0x24')](function(_0x2aacf9){if(_0x2aacf9&&_0x2aacf9[_0xd45d('0x52')]===0x0){return db[_0xd45d('0x26')][_0xd45d('0x4b')]({'name':_0x2c52bc['name'],'resourceId':_0x2c52bc['id'],'type':_0x2aacf9['name'],'sectionId':_0x2aacf9['id']},{})[_0xd45d('0x24')](function(){return _0x400ee9;});}else{return _0x400ee9;}})[_0xd45d('0x45')](function(_0x230dc0){logger['error'](_0xd45d('0x53'),_0x230dc0);throw _0x230dc0;});}return _0x400ee9;})[_0xd45d('0x24')](respondWithResult(_0xbea6cc,0xc9))[_0xd45d('0x45')](handleError(_0xbea6cc,null));};exports[_0xd45d('0x23')]=function(_0x19c9bb,_0x22a48e){if(_0x19c9bb[_0xd45d('0x54')]['id']){delete _0x19c9bb[_0xd45d('0x54')]['id'];}return db[_0xd45d('0x2d')][_0xd45d('0x4a')]({'where':{'id':_0x19c9bb['params']['id']}})[_0xd45d('0x24')](handleEntityNotFound(_0x22a48e,null))['then'](saveUpdates(_0x19c9bb['body'],null))[_0xd45d('0x24')](respondWithResult(_0x22a48e,null))[_0xd45d('0x45')](handleError(_0x22a48e,null));};exports[_0xd45d('0x25')]=function(_0x5cce4e,_0x557ed2){return db['Template'][_0xd45d('0x4a')]({'where':{'id':_0x5cce4e[_0xd45d('0x47')]['id']}})[_0xd45d('0x24')](handleEntityNotFound(_0x557ed2,null))[_0xd45d('0x24')](removeEntity(_0x557ed2,null))[_0xd45d('0x45')](handleError(_0x557ed2,null));};
\ No newline at end of file
index 3f917d6..0f3e9d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['bluebird','path','rimraf','../../config/environment','./template.attributes','exports','define','lodash','../../config/logger'];(function(_0xd01c97,_0x44dd5d){var _0x35809c=function(_0x2c3044){while(--_0x2c3044){_0xd01c97['push'](_0xd01c97['shift']());}};_0x35809c(++_0x44dd5d);}(_0xd6d6,0x1ae));var _0x6d6d=function(_0x5bf9ac,_0x1053d1){_0x5bf9ac=_0x5bf9ac-0x0;var _0x24ea1a=_0xd6d6[_0x5bf9ac];return _0x24ea1a;};'use strict';var _=require(_0x6d6d('0x0'));var util=require('util');var logger=require(_0x6d6d('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6d6d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d6d('0x3'));var rimraf=require(_0x6d6d('0x4'));var config=require(_0x6d6d('0x5'));var attributes=require(_0x6d6d('0x6'));module[_0x6d6d('0x7')]=function(_0x240e4c,_0x436a94){return _0x240e4c[_0x6d6d('0x8')]('Template',attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcbde=['tools_templates','util','../../config/logger','bluebird','path','../../config/environment','exports','define','Template'];(function(_0x292ce0,_0x526019){var _0x533685=function(_0xd68a25){while(--_0xd68a25){_0x292ce0['push'](_0x292ce0['shift']());}};_0x533685(++_0x526019);}(_0xcbde,0x10f));var _0xecbd=function(_0x3c5916,_0x89796a){_0x3c5916=_0x3c5916-0x0;var _0x232c4b=_0xcbde[_0x3c5916];return _0x232c4b;};'use strict';var _=require('lodash');var util=require(_0xecbd('0x0'));var logger=require(_0xecbd('0x1'))('api');var moment=require('moment');var BPromise=require(_0xecbd('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xecbd('0x3'));var rimraf=require('rimraf');var config=require(_0xecbd('0x4'));var attributes=require('./template.attributes');module[_0xecbd('0x5')]=function(_0x2c3b85,_0xcb4bd9){return _0x2c3b85[_0xecbd('0x6')](_0xecbd('0x7'),attributes,{'tableName':_0xecbd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d715bca..5b5d12d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07e5=['result','catch','GetTemplate','findAll','options','where','limit','map','include','model','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code','Template,\x20%s,\x20%s','message'];(function(_0x5d8d1d,_0x3eb3f){var _0x1b9cc7=function(_0x55f0d2){while(--_0x55f0d2){_0x5d8d1d['push'](_0x5d8d1d['shift']());}};_0x1b9cc7(++_0x3eb3f);}(_0x07e5,0xc5));var _0x507e=function(_0x263cc0,_0x182e9c){_0x263cc0=_0x263cc0-0x0;var _0x298414=_0x07e5[_0x263cc0];return _0x298414;};'use strict';var _=require(_0x507e('0x0'));var util=require('util');var moment=require(_0x507e('0x1'));var BPromise=require(_0x507e('0x2'));var rs=require(_0x507e('0x3'));var fs=require('fs');var Redis=require(_0x507e('0x4'));var db=require(_0x507e('0x5'))['db'];var utils=require(_0x507e('0x6'));var logger=require('../../config/logger')(_0x507e('0x7'));var config=require(_0x507e('0x8'));var jayson=require(_0x507e('0x9'));var client=jayson[_0x507e('0xa')][_0x507e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bc806,_0x3b256a,_0x44f72b){return new BPromise(function(_0x46629d,_0x5b49e6){return client['request'](_0x2bc806,_0x44f72b)[_0x507e('0xc')](function(_0x436ec9){logger[_0x507e('0xd')]('Template,\x20%s,\x20%s',_0x3b256a,_0x507e('0xe'));logger['debug']('Template,\x20%s,\x20%s,\x20%s',_0x3b256a,'request\x20sent',JSON[_0x507e('0xf')](_0x436ec9));if(_0x436ec9[_0x507e('0x10')]){if(_0x436ec9[_0x507e('0x10')][_0x507e('0x11')]===0x1f4){logger[_0x507e('0x10')](_0x507e('0x12'),_0x3b256a,_0x436ec9['error'][_0x507e('0x13')]);return _0x5b49e6(_0x436ec9[_0x507e('0x10')][_0x507e('0x13')]);}logger[_0x507e('0x10')](_0x507e('0x12'),_0x3b256a,_0x436ec9[_0x507e('0x10')][_0x507e('0x13')]);return _0x46629d(_0x436ec9[_0x507e('0x10')]['message']);}else{logger[_0x507e('0xd')]('Template,\x20%s,\x20%s',_0x3b256a,_0x507e('0xe'));_0x46629d(_0x436ec9[_0x507e('0x14')][_0x507e('0x13')]);}})[_0x507e('0x15')](function(_0x461845){logger['error'](_0x507e('0x12'),_0x3b256a,_0x461845);_0x5b49e6(_0x461845);});});}exports[_0x507e('0x16')]=function(_0x3ab25c){var _0x44e204=this;return new Promise(function(_0x26a564,_0x170e58){return db['Template'][_0x507e('0x17')]({'raw':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c['options']['raw']===undefined?!![]:![]:!![],'where':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')][_0x507e('0x19')]||null:null,'attributes':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')]['attributes']||null:null,'limit':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')][_0x507e('0x1a')]||null:null,'include':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')]['include']?_[_0x507e('0x1b')](_0x3ab25c[_0x507e('0x18')][_0x507e('0x1c')],function(_0x4add45){return{'model':db[_0x4add45[_0x507e('0x1d')]],'as':_0x4add45['as'],'attributes':_0x4add45[_0x507e('0x1e')],'include':_0x4add45[_0x507e('0x1c')]?_[_0x507e('0x1b')](_0x4add45[_0x507e('0x1c')],function(_0x37f65a){return{'model':db[_0x37f65a['model']],'as':_0x37f65a['as'],'attributes':_0x37f65a['attributes'],'include':_0x37f65a[_0x507e('0x1c')]?_['map'](_0x37f65a['include'],function(_0x21cd8e){return{'model':db[_0x21cd8e[_0x507e('0x1d')]],'as':_0x21cd8e['as'],'attributes':_0x21cd8e[_0x507e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x507e('0xc')](function(_0x3706b5){logger[_0x507e('0xd')](_0x507e('0x16'),_0x3ab25c);logger['debug'](_0x507e('0x16'),_0x3ab25c,JSON[_0x507e('0xf')](_0x3706b5));_0x26a564(_0x3706b5);})[_0x507e('0x15')](function(_0x536e01){logger[_0x507e('0x10')]('GetTemplate',_0x536e01[_0x507e('0x13')],_0x3ab25c);_0x170e58(_0x44e204[_0x507e('0x10')](0x1f4,_0x536e01[_0x507e('0x13')]));});});};
\ No newline at end of file
+var _0x41ef=['request\x20sent','Template,\x20%s,\x20%s,\x20%s','error','code','Template,\x20%s,\x20%s','message','info','result','GetTemplate','findAll','options','raw','attributes','limit','include','map','model','debug','stringify','catch','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x41ef,0xc8));var _0xf41e=function(_0x779ffc,_0x43d4bd){_0x779ffc=_0x779ffc-0x0;var _0x5312b8=_0x41ef[_0x779ffc];return _0x5312b8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf41e('0x0'));var BPromise=require(_0xf41e('0x1'));var rs=require(_0xf41e('0x2'));var fs=require('fs');var Redis=require(_0xf41e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf41e('0x4'));var logger=require('../../config/logger')(_0xf41e('0x5'));var config=require(_0xf41e('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xf41e('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3cc497,_0x2c39d2,_0x586787){return new BPromise(function(_0x23a836,_0xe6466d){return client[_0xf41e('0x8')](_0x3cc497,_0x586787)[_0xf41e('0x9')](function(_0x3e3575){logger['info']('Template,\x20%s,\x20%s',_0x2c39d2,_0xf41e('0xa'));logger['debug'](_0xf41e('0xb'),_0x2c39d2,_0xf41e('0xa'),JSON['stringify'](_0x3e3575));if(_0x3e3575[_0xf41e('0xc')]){if(_0x3e3575[_0xf41e('0xc')][_0xf41e('0xd')]===0x1f4){logger[_0xf41e('0xc')](_0xf41e('0xe'),_0x2c39d2,_0x3e3575[_0xf41e('0xc')][_0xf41e('0xf')]);return _0xe6466d(_0x3e3575[_0xf41e('0xc')][_0xf41e('0xf')]);}logger[_0xf41e('0xc')]('Template,\x20%s,\x20%s',_0x2c39d2,_0x3e3575['error'][_0xf41e('0xf')]);return _0x23a836(_0x3e3575['error'][_0xf41e('0xf')]);}else{logger[_0xf41e('0x10')](_0xf41e('0xe'),_0x2c39d2,'request\x20sent');_0x23a836(_0x3e3575[_0xf41e('0x11')]['message']);}})['catch'](function(_0x36db23){logger[_0xf41e('0xc')](_0xf41e('0xe'),_0x2c39d2,_0x36db23);_0xe6466d(_0x36db23);});});}exports[_0xf41e('0x12')]=function(_0x253102){var _0x55fd5b=this;return new Promise(function(_0xb0e96e,_0x3f9062){return db['Template'][_0xf41e('0x13')]({'raw':_0x253102[_0xf41e('0x14')]?_0x253102[_0xf41e('0x14')][_0xf41e('0x15')]===undefined?!![]:![]:!![],'where':_0x253102['options']?_0x253102['options']['where']||null:null,'attributes':_0x253102[_0xf41e('0x14')]?_0x253102[_0xf41e('0x14')][_0xf41e('0x16')]||null:null,'limit':_0x253102[_0xf41e('0x14')]?_0x253102[_0xf41e('0x14')][_0xf41e('0x17')]||null:null,'include':_0x253102[_0xf41e('0x14')]?_0x253102[_0xf41e('0x14')][_0xf41e('0x18')]?_[_0xf41e('0x19')](_0x253102[_0xf41e('0x14')][_0xf41e('0x18')],function(_0x1b1be3){return{'model':db[_0x1b1be3['model']],'as':_0x1b1be3['as'],'attributes':_0x1b1be3['attributes'],'include':_0x1b1be3[_0xf41e('0x18')]?_[_0xf41e('0x19')](_0x1b1be3[_0xf41e('0x18')],function(_0x5a616c){return{'model':db[_0x5a616c[_0xf41e('0x1a')]],'as':_0x5a616c['as'],'attributes':_0x5a616c[_0xf41e('0x16')],'include':_0x5a616c[_0xf41e('0x18')]?_[_0xf41e('0x19')](_0x5a616c[_0xf41e('0x18')],function(_0x571a87){return{'model':db[_0x571a87[_0xf41e('0x1a')]],'as':_0x571a87['as'],'attributes':_0x571a87[_0xf41e('0x16')]};}):[]};}):[]};}):[]:[]})[_0xf41e('0x9')](function(_0x2f5170){logger[_0xf41e('0x10')]('GetTemplate',_0x253102);logger[_0xf41e('0x1b')](_0xf41e('0x12'),_0x253102,JSON[_0xf41e('0x1c')](_0x2f5170));_0xb0e96e(_0x2f5170);})[_0xf41e('0x1d')](function(_0x5dd4ab){logger[_0xf41e('0xc')](_0xf41e('0x12'),_0x5dd4ab[_0xf41e('0xf')],_0x253102);_0x3f9062(_0x55fd5b[_0xf41e('0xc')](0x1f4,_0x5dd4ab[_0xf41e('0xf')]));});});};
\ No newline at end of file
index ef8da12..45546ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbced=['getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','delete','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','./trigger.controller','isAuthenticated','index','/:id','get','/:id/all_conditions','getAllConditions','/:id/any_conditions'];(function(_0x3d7f78,_0x17e4d0){var _0x3bf252=function(_0x2dd1c0){while(--_0x2dd1c0){_0x3d7f78['push'](_0x3d7f78['shift']());}};_0x3bf252(++_0x17e4d0);}(_0xbced,0x1d6));var _0xdbce=function(_0x4a3471,_0x474995){_0x4a3471=_0x4a3471-0x0;var _0x2cd24c=_0xbced[_0x4a3471];return _0x2cd24c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xdbce('0x0'));var express=require(_0xdbce('0x1'));var router=express[_0xdbce('0x2')]();var fs_extra=require(_0xdbce('0x3'));var auth=require(_0xdbce('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdbce('0x5'));router['get']('/',auth[_0xdbce('0x6')](),controller[_0xdbce('0x7')]);router['get'](_0xdbce('0x8'),auth[_0xdbce('0x6')](),controller['show']);router[_0xdbce('0x9')](_0xdbce('0xa'),auth[_0xdbce('0x6')](),controller[_0xdbce('0xb')]);router[_0xdbce('0x9')](_0xdbce('0xc'),auth[_0xdbce('0x6')](),controller[_0xdbce('0xd')]);router[_0xdbce('0x9')](_0xdbce('0xe'),auth[_0xdbce('0x6')](),controller[_0xdbce('0xf')]);router[_0xdbce('0x10')]('/',auth[_0xdbce('0x6')](),controller[_0xdbce('0x11')]);router['post']('/:id/all_conditions',auth[_0xdbce('0x6')](),controller[_0xdbce('0x12')]);router[_0xdbce('0x10')](_0xdbce('0xc'),auth[_0xdbce('0x6')](),controller[_0xdbce('0x13')]);router[_0xdbce('0x10')](_0xdbce('0xe'),auth[_0xdbce('0x6')](),controller[_0xdbce('0x14')]);router['put']('/:id',auth[_0xdbce('0x6')](),controller['update']);router[_0xdbce('0x15')](_0xdbce('0x8'),auth[_0xdbce('0x6')](),controller['destroy']);module[_0xdbce('0x16')]=router;
\ No newline at end of file
+var _0x928c=['create','post','addAction','put','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions'];(function(_0x15fa77,_0x93eaff){var _0x1385ff=function(_0x165e02){while(--_0x165e02){_0x15fa77['push'](_0x15fa77['shift']());}};_0x1385ff(++_0x93eaff);}(_0x928c,0x157));var _0xc928=function(_0x18bc40,_0x3c15fa){_0x18bc40=_0x18bc40-0x0;var _0x4d03dd=_0x928c[_0x18bc40];return _0x4d03dd;};'use strict';var multer=require(_0xc928('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc928('0x1'));var express=require(_0xc928('0x2'));var router=express[_0xc928('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc928('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc928('0x5'));var controller=require('./trigger.controller');router[_0xc928('0x6')]('/',auth[_0xc928('0x7')](),controller[_0xc928('0x8')]);router[_0xc928('0x6')](_0xc928('0x9'),auth[_0xc928('0x7')](),controller[_0xc928('0xa')]);router[_0xc928('0x6')](_0xc928('0xb'),auth['isAuthenticated'](),controller[_0xc928('0xc')]);router[_0xc928('0x6')](_0xc928('0xd'),auth[_0xc928('0x7')](),controller[_0xc928('0xe')]);router['get'](_0xc928('0xf'),auth[_0xc928('0x7')](),controller[_0xc928('0x10')]);router['post']('/',auth[_0xc928('0x7')](),controller[_0xc928('0x11')]);router[_0xc928('0x12')]('/:id/all_conditions',auth[_0xc928('0x7')](),controller['addAllCondition']);router[_0xc928('0x12')]('/:id/any_conditions',auth[_0xc928('0x7')](),controller['addAnyCondition']);router[_0xc928('0x12')](_0xc928('0xf'),auth['isAuthenticated'](),controller[_0xc928('0x13')]);router[_0xc928('0x14')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xc928('0x15')](_0xc928('0x9'),auth['isAuthenticated'](),controller[_0xc928('0x16')]);module[_0xc928('0x17')]=router;
\ No newline at end of file
index 67049bf..bd35e45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb6d=['exports','STRING','BOOLEAN'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0xbb6d,0x108));var _0xdbb6=function(_0x4e0364,_0x3c2813){_0x4e0364=_0x4e0364-0x0;var _0x174f43=_0xbb6d[_0x4e0364];return _0x174f43;};'use strict';var Sequelize=require('sequelize');module[_0xdbb6('0x0')]={'name':{'type':Sequelize[_0xdbb6('0x1')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xdbb6('0x1')]},'status':{'type':Sequelize[_0xdbb6('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe7ad=['STRING','BOOLEAN','sequelize','exports'];(function(_0x5ae0fd,_0x40e4d9){var _0x35dbd1=function(_0x536a02){while(--_0x536a02){_0x5ae0fd['push'](_0x5ae0fd['shift']());}};_0x35dbd1(++_0x40e4d9);}(_0xe7ad,0x176));var _0xde7a=function(_0x480d4c,_0x258d15){_0x480d4c=_0x480d4c-0x0;var _0x4859c0=_0xe7ad[_0x480d4c];return _0x4859c0;};'use strict';var Sequelize=require(_0xde7a('0x0'));module[_0xde7a('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xde7a('0x2')]},'description':{'type':Sequelize[_0xde7a('0x2')]},'status':{'type':Sequelize[_0xde7a('0x3')],'defaultValue':![]}};
\ No newline at end of file
index c48f6ff..8a50b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x140e=['nolimit','addAction','TriggerId','Action','getActions','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','set','Content-Range','json','apply','destroy','then','get','Triggers','UserProfileResource','stack','name','send','index','map','Trigger','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','sort','where','pick','filter','merge','VIRTUAL','options','count','include','rows','catch','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addAllCondition','TriggerAllId','Condition','TriggerAnyId','findOne','order','hasOwnProperty','getAllConditions','getAnyConditions'];(function(_0x3920c2,_0x55b692){var _0x4a9753=function(_0x10b158){while(--_0x10b158){_0x3920c2['push'](_0x3920c2['shift']());}};_0x4a9753(++_0x55b692);}(_0x140e,0xc5));var _0xe140=function(_0x3ac4a2,_0x38320b){_0x3ac4a2=_0x3ac4a2-0x0;var _0x48851b=_0x140e[_0x3ac4a2];return _0x48851b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe140('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe140('0x1'));var rp=require(_0xe140('0x2'));var moment=require('moment');var BPromise=require(_0xe140('0x3'));var Mustache=require(_0xe140('0x4'));var util=require('util');var path=require(_0xe140('0x5'));var sox=require(_0xe140('0x6'));var csv=require(_0xe140('0x7'));var ejs=require(_0xe140('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe140('0x9'));var squel=require(_0xe140('0xa'));var crypto=require('crypto');var jsforce=require(_0xe140('0xb'));var deskjs=require(_0xe140('0xc'));var toCsv=require(_0xe140('0x7'));var querystring=require(_0xe140('0xd'));var Papa=require(_0xe140('0xe'));var Redis=require(_0xe140('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe140('0x10'));var as=require(_0xe140('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe140('0x12'))(_0xe140('0x13'));var utils=require(_0xe140('0x14'));var config=require(_0xe140('0x15'));var licenseUtil=require(_0xe140('0x16'));var db=require(_0xe140('0x17'))['db'];function respondWithStatusCode(_0x25fbf2,_0x360958){_0x360958=_0x360958||0xcc;return function(_0x5e1362){if(_0x5e1362){return _0x25fbf2[_0xe140('0x18')](_0x360958);}return _0x25fbf2['status'](_0x360958)[_0xe140('0x19')]();};}function respondWithResult(_0x45862c,_0x27b512){_0x27b512=_0x27b512||0xc8;return function(_0x424712){if(_0x424712){return _0x45862c[_0xe140('0x1a')](_0x27b512)['json'](_0x424712);}};}function respondWithFilteredResult(_0x5ac2b1,_0x3cdddf){return function(_0xe17138){if(_0xe17138){var _0x303cce=typeof _0x3cdddf[_0xe140('0x1b')]==='undefined'&&typeof _0x3cdddf[_0xe140('0x1c')]===_0xe140('0x1d');var _0x52816b=_0xe17138['count'];var _0x311fa2=_0x303cce?0x0:_0x3cdddf['offset'];var _0x4b272f=_0x303cce?_0xe17138['count']:_0x3cdddf[_0xe140('0x1b')]+_0x3cdddf['limit'];var _0x36bcd3;if(_0x4b272f>=_0x52816b){_0x4b272f=_0x52816b;_0x36bcd3=0xc8;}else{_0x36bcd3=0xce;}_0x5ac2b1['status'](_0x36bcd3);return _0x5ac2b1[_0xe140('0x1e')](_0xe140('0x1f'),_0x311fa2+'-'+_0x4b272f+'/'+_0x52816b)[_0xe140('0x20')](_0xe17138);}return null;};}function patchUpdates(_0x5ed54b){return function(_0x2ee126){try{jsonpatch[_0xe140('0x21')](_0x2ee126,_0x5ed54b,!![]);}catch(_0x3087bb){return BPromise['reject'](_0x3087bb);}return _0x2ee126['save']();};}function saveUpdates(_0x48fcdd,_0x55f8db){return function(_0xd0c430){if(_0xd0c430){return _0xd0c430['update'](_0x48fcdd)['then'](function(_0x1318c4){return _0x1318c4;});}return null;};}function removeEntity(_0x311cfb,_0x50df49){return function(_0x230177){if(_0x230177){return _0x230177[_0xe140('0x22')]()[_0xe140('0x23')](function(){var _0x21eeeb=_0x230177[_0xe140('0x24')]({'plain':!![]});var _0x536417=_0xe140('0x25');return db[_0xe140('0x26')]['destroy']({'where':{'type':_0x536417,'resourceId':_0x21eeeb['id']}})[_0xe140('0x23')](function(){return _0x230177;});})[_0xe140('0x23')](function(){_0x311cfb[_0xe140('0x1a')](0xcc)[_0xe140('0x19')]();});}};}function handleEntityNotFound(_0x58e342,_0x274edc){return function(_0x128382){if(!_0x128382){_0x58e342[_0xe140('0x18')](0x194);}return _0x128382;};}function handleError(_0x27d9cf,_0x19cbb2){_0x19cbb2=_0x19cbb2||0x1f4;return function(_0x129ab3){logger['error'](_0x129ab3[_0xe140('0x27')]);if(_0x129ab3[_0xe140('0x28')]){delete _0x129ab3[_0xe140('0x28')];}_0x27d9cf[_0xe140('0x1a')](_0x19cbb2)[_0xe140('0x29')](_0x129ab3);};}exports[_0xe140('0x2a')]=function(_0x3b0b5d,_0x4b701b){var _0x46b389={},_0x3a9f24={},_0x4e9e83={'count':0x0,'rows':[]};var _0x1e6c11=_[_0xe140('0x2b')](db[_0xe140('0x2c')][_0xe140('0x2d')],function(_0x3a2a7e){return{'name':_0x3a2a7e[_0xe140('0x2e')],'type':_0x3a2a7e[_0xe140('0x2f')][_0xe140('0x30')]};});_0x3a9f24[_0xe140('0x31')]=_['map'](_0x1e6c11,_0xe140('0x28'));_0x3a9f24[_0xe140('0x32')]=_[_0xe140('0x33')](_0x3b0b5d[_0xe140('0x32')]);_0x3a9f24[_0xe140('0x34')]=_['intersection'](_0x3a9f24[_0xe140('0x31')],_0x3a9f24[_0xe140('0x32')]);_0x46b389[_0xe140('0x35')]=_[_0xe140('0x36')](_0x3a9f24['model'],qs['fields'](_0x3b0b5d['query'][_0xe140('0x37')]));_0x46b389[_0xe140('0x35')]=_0x46b389['attributes'][_0xe140('0x38')]?_0x46b389[_0xe140('0x35')]:_0x3a9f24[_0xe140('0x31')];if(!_0x3b0b5d['query']['hasOwnProperty']('nolimit')){_0x46b389[_0xe140('0x1c')]=qs[_0xe140('0x1c')](_0x3b0b5d[_0xe140('0x32')][_0xe140('0x1c')]);_0x46b389[_0xe140('0x1b')]=qs[_0xe140('0x1b')](_0x3b0b5d[_0xe140('0x32')][_0xe140('0x1b')]);}_0x46b389['order']=qs[_0xe140('0x39')](_0x3b0b5d['query'][_0xe140('0x39')]);_0x46b389[_0xe140('0x3a')]=qs[_0xe140('0x34')](_[_0xe140('0x3b')](_0x3b0b5d[_0xe140('0x32')],_0x3a9f24[_0xe140('0x34')]),_0x1e6c11);if(_0x3b0b5d['query'][_0xe140('0x3c')]){_0x46b389[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x46b389[_0xe140('0x3a')],{'$or':_[_0xe140('0x2b')](_0x1e6c11,function(_0x5c3c45){if(_0x5c3c45['type']!==_0xe140('0x3e')){var _0x11c790={};_0x11c790[_0x5c3c45[_0xe140('0x28')]]={'$like':'%'+_0x3b0b5d['query']['filter']+'%'};return _0x11c790;}})});}_0x46b389=_[_0xe140('0x3d')]({},_0x46b389,_0x3b0b5d[_0xe140('0x3f')]);var _0x26bf69={'where':_0x46b389[_0xe140('0x3a')]};return db[_0xe140('0x2c')][_0xe140('0x40')](_0x26bf69)['then'](function(_0x442409){_0x4e9e83[_0xe140('0x40')]=_0x442409;if(_0x3b0b5d[_0xe140('0x32')]['includeAll']){_0x46b389[_0xe140('0x41')]=[{'all':!![]}];}return db[_0xe140('0x2c')]['findAll'](_0x46b389);})[_0xe140('0x23')](function(_0x337ac3){_0x4e9e83[_0xe140('0x42')]=_0x337ac3;return _0x4e9e83;})[_0xe140('0x23')](respondWithFilteredResult(_0x4b701b,_0x46b389))[_0xe140('0x43')](handleError(_0x4b701b,null));};exports['show']=function(_0x5924d3,_0x2ff135){var _0x51ff98={'raw':![],'where':{'id':_0x5924d3[_0xe140('0x44')]['id']}},_0x1d9367={};_0x1d9367[_0xe140('0x31')]=_[_0xe140('0x33')](db[_0xe140('0x2c')][_0xe140('0x2d')]);_0x1d9367[_0xe140('0x32')]=_[_0xe140('0x33')](_0x5924d3[_0xe140('0x32')]);_0x1d9367[_0xe140('0x34')]=_[_0xe140('0x36')](_0x1d9367[_0xe140('0x31')],_0x1d9367[_0xe140('0x32')]);_0x51ff98['attributes']=_[_0xe140('0x36')](_0x1d9367[_0xe140('0x31')],qs[_0xe140('0x37')](_0x5924d3['query'][_0xe140('0x37')]));_0x51ff98[_0xe140('0x35')]=_0x51ff98['attributes'][_0xe140('0x38')]?_0x51ff98['attributes']:_0x1d9367['model'];if(_0x5924d3[_0xe140('0x32')][_0xe140('0x45')]){_0x51ff98['include']=[{'all':!![]}];}_0x51ff98=_[_0xe140('0x3d')]({},_0x51ff98,_0x5924d3[_0xe140('0x3f')]);return db[_0xe140('0x2c')][_0xe140('0x46')](_0x51ff98)['then'](handleEntityNotFound(_0x2ff135,null))[_0xe140('0x23')](respondWithResult(_0x2ff135,null))[_0xe140('0x43')](handleError(_0x2ff135,null));};exports['create']=function(_0x526596,_0x5c51be){return db['Trigger'][_0xe140('0x47')](_0x526596[_0xe140('0x48')],{})['then'](function(_0x34233f){var _0x124027=_0x526596[_0xe140('0x49')][_0xe140('0x24')]({'plain':!![]});if(!_0x124027)throw new Error(_0xe140('0x4a'));if(_0x124027[_0xe140('0x4b')]===_0xe140('0x49')){var _0x5944ea=_0x34233f[_0xe140('0x24')]({'plain':!![]});var _0x3e6e5d='Triggers';return db[_0xe140('0x4c')][_0xe140('0x46')]({'where':{'name':_0x3e6e5d,'userProfileId':_0x124027[_0xe140('0x4d')]},'raw':!![]})[_0xe140('0x23')](function(_0xcb5535){if(_0xcb5535&&_0xcb5535[_0xe140('0x4e')]===0x0){return db[_0xe140('0x26')]['create']({'name':_0x5944ea[_0xe140('0x28')],'resourceId':_0x5944ea['id'],'type':_0xcb5535[_0xe140('0x28')],'sectionId':_0xcb5535['id']},{})[_0xe140('0x23')](function(){return _0x34233f;});}else{return _0x34233f;}})[_0xe140('0x43')](function(_0x3207f2){logger[_0xe140('0x4f')](_0xe140('0x50'),_0x3207f2);throw _0x3207f2;});}return _0x34233f;})[_0xe140('0x23')](respondWithResult(_0x5c51be,0xc9))[_0xe140('0x43')](handleError(_0x5c51be,null));};exports[_0xe140('0x51')]=function(_0x4bb48a,_0x49a78b){if(_0x4bb48a[_0xe140('0x48')]['id']){delete _0x4bb48a[_0xe140('0x48')]['id'];}return db['Trigger'][_0xe140('0x46')]({'where':{'id':_0x4bb48a[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x49a78b,null))['then'](saveUpdates(_0x4bb48a[_0xe140('0x48')],null))[_0xe140('0x23')](respondWithResult(_0x49a78b,null))[_0xe140('0x43')](handleError(_0x49a78b,null));};exports[_0xe140('0x22')]=function(_0x3525d1,_0x54562c){return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x3525d1[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x54562c,null))[_0xe140('0x23')](removeEntity(_0x54562c,null))[_0xe140('0x43')](handleError(_0x54562c,null));};exports[_0xe140('0x52')]=function(_0x3ffa38,_0x3e9d45,_0x59c92f){if(_0x3ffa38[_0xe140('0x48')]['id']){delete _0x3ffa38[_0xe140('0x48')]['id'];}return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x3ffa38['params']['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x3e9d45,null))[_0xe140('0x23')](function(_0x27010d){if(_0x27010d){_0x3ffa38[_0xe140('0x48')][_0xe140('0x53')]=_0x27010d['id'];return db[_0xe140('0x54')][_0xe140('0x47')](_0x3ffa38[_0xe140('0x48')]);}})['then'](respondWithResult(_0x3e9d45,null))['catch'](handleError(_0x3e9d45,null));};exports['addAnyCondition']=function(_0x329a68,_0x5decf4,_0x21bc16){if(_0x329a68[_0xe140('0x48')]['id']){delete _0x329a68[_0xe140('0x48')]['id'];}return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x329a68['params']['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x5decf4,null))[_0xe140('0x23')](function(_0x428840){if(_0x428840){_0x329a68[_0xe140('0x48')][_0xe140('0x55')]=_0x428840['id'];return db[_0xe140('0x54')]['create'](_0x329a68[_0xe140('0x48')]);}})[_0xe140('0x23')](respondWithResult(_0x5decf4,null))[_0xe140('0x43')](handleError(_0x5decf4,null));};exports['getAllConditions']=function(_0x169cd0,_0x23ad53,_0x5e2910){var _0x4918a1={};var _0x2d1e7a={};var _0x5f2717;var _0x3f6f2b;return db[_0xe140('0x2c')][_0xe140('0x56')]({'where':{'id':_0x169cd0[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x23ad53,null))[_0xe140('0x23')](function(_0x4fbdc9){if(_0x4fbdc9){_0x5f2717=_0x4fbdc9;_0x2d1e7a[_0xe140('0x31')]=_['keys'](db[_0xe140('0x54')][_0xe140('0x2d')]);_0x2d1e7a['query']=_['keys'](_0x169cd0['query']);_0x2d1e7a[_0xe140('0x34')]=_[_0xe140('0x36')](_0x2d1e7a[_0xe140('0x31')],_0x2d1e7a[_0xe140('0x32')]);_0x4918a1[_0xe140('0x35')]=_['intersection'](_0x2d1e7a['model'],qs[_0xe140('0x37')](_0x169cd0[_0xe140('0x32')][_0xe140('0x37')]));_0x4918a1[_0xe140('0x35')]=_0x4918a1[_0xe140('0x35')][_0xe140('0x38')]?_0x4918a1['attributes']:_0x2d1e7a[_0xe140('0x31')];_0x4918a1[_0xe140('0x57')]=qs[_0xe140('0x39')](_0x169cd0['query'][_0xe140('0x39')]);_0x4918a1[_0xe140('0x3a')]=qs[_0xe140('0x34')](_[_0xe140('0x3b')](_0x169cd0['query'],_0x2d1e7a[_0xe140('0x34')]));if(_0x169cd0[_0xe140('0x32')][_0xe140('0x3c')]){_0x4918a1[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x4918a1[_0xe140('0x3a')],{'$or':_['map'](_0x4918a1[_0xe140('0x35')],function(_0x309a15){var _0x32e519={};_0x32e519[_0x309a15]={'$like':'%'+_0x169cd0[_0xe140('0x32')][_0xe140('0x3c')]+'%'};return _0x32e519;})});}_0x4918a1=_[_0xe140('0x3d')]({},_0x4918a1,_0x169cd0[_0xe140('0x3f')]);return _0x5f2717['getAllConditions'](_0x4918a1);}})[_0xe140('0x23')](function(_0x3942f3){if(_0x3942f3){_0x3f6f2b=_0x3942f3[_0xe140('0x38')];if(!_0x169cd0[_0xe140('0x32')][_0xe140('0x58')]('nolimit')){_0x4918a1[_0xe140('0x1c')]=qs['limit'](_0x169cd0[_0xe140('0x32')][_0xe140('0x1c')]);_0x4918a1['offset']=qs[_0xe140('0x1b')](_0x169cd0[_0xe140('0x32')][_0xe140('0x1b')]);}return _0x5f2717[_0xe140('0x59')](_0x4918a1);}})[_0xe140('0x23')](function(_0xdbdd96){if(_0xdbdd96){return _0xdbdd96?{'count':_0x3f6f2b,'rows':_0xdbdd96}:null;}})['then'](respondWithResult(_0x23ad53,null))[_0xe140('0x43')](handleError(_0x23ad53,null));};exports[_0xe140('0x5a')]=function(_0x36176a,_0x1fcbe0,_0x229d5a){var _0x35688a={};var _0x2d4ac4={};var _0x2f368d;var _0x400a7e;return db[_0xe140('0x2c')][_0xe140('0x56')]({'where':{'id':_0x36176a[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x1fcbe0,null))[_0xe140('0x23')](function(_0x234b92){if(_0x234b92){_0x2f368d=_0x234b92;_0x2d4ac4['model']=_[_0xe140('0x33')](db[_0xe140('0x54')][_0xe140('0x2d')]);_0x2d4ac4[_0xe140('0x32')]=_[_0xe140('0x33')](_0x36176a[_0xe140('0x32')]);_0x2d4ac4[_0xe140('0x34')]=_[_0xe140('0x36')](_0x2d4ac4[_0xe140('0x31')],_0x2d4ac4[_0xe140('0x32')]);_0x35688a[_0xe140('0x35')]=_[_0xe140('0x36')](_0x2d4ac4[_0xe140('0x31')],qs[_0xe140('0x37')](_0x36176a[_0xe140('0x32')]['fields']));_0x35688a[_0xe140('0x35')]=_0x35688a['attributes'][_0xe140('0x38')]?_0x35688a[_0xe140('0x35')]:_0x2d4ac4[_0xe140('0x31')];_0x35688a[_0xe140('0x57')]=qs[_0xe140('0x39')](_0x36176a[_0xe140('0x32')][_0xe140('0x39')]);_0x35688a[_0xe140('0x3a')]=qs[_0xe140('0x34')](_['pick'](_0x36176a[_0xe140('0x32')],_0x2d4ac4[_0xe140('0x34')]));if(_0x36176a[_0xe140('0x32')][_0xe140('0x3c')]){_0x35688a[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x35688a[_0xe140('0x3a')],{'$or':_[_0xe140('0x2b')](_0x35688a[_0xe140('0x35')],function(_0x13d321){var _0x3d748f={};_0x3d748f[_0x13d321]={'$like':'%'+_0x36176a[_0xe140('0x32')][_0xe140('0x3c')]+'%'};return _0x3d748f;})});}_0x35688a=_[_0xe140('0x3d')]({},_0x35688a,_0x36176a[_0xe140('0x3f')]);return _0x2f368d[_0xe140('0x5a')](_0x35688a);}})['then'](function(_0x16cf32){if(_0x16cf32){_0x400a7e=_0x16cf32[_0xe140('0x38')];if(!_0x36176a[_0xe140('0x32')][_0xe140('0x58')](_0xe140('0x5b'))){_0x35688a['limit']=qs[_0xe140('0x1c')](_0x36176a[_0xe140('0x32')][_0xe140('0x1c')]);_0x35688a[_0xe140('0x1b')]=qs['offset'](_0x36176a[_0xe140('0x32')]['offset']);}return _0x2f368d[_0xe140('0x5a')](_0x35688a);}})['then'](function(_0x6e5f1a){if(_0x6e5f1a){return _0x6e5f1a?{'count':_0x400a7e,'rows':_0x6e5f1a}:null;}})['then'](respondWithResult(_0x1fcbe0,null))[_0xe140('0x43')](handleError(_0x1fcbe0,null));};exports[_0xe140('0x5c')]=function(_0x5695ac,_0x22935b,_0x499a0a){if(_0x5695ac[_0xe140('0x48')]['id']){delete _0x5695ac[_0xe140('0x48')]['id'];}return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x5695ac[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x22935b,null))[_0xe140('0x23')](function(_0x4a6b00){if(_0x4a6b00){_0x5695ac[_0xe140('0x48')][_0xe140('0x5d')]=_0x4a6b00['id'];return db[_0xe140('0x5e')][_0xe140('0x47')](_0x5695ac[_0xe140('0x48')]);}})['then'](respondWithResult(_0x22935b,null))[_0xe140('0x43')](handleError(_0x22935b,null));};exports[_0xe140('0x5f')]=function(_0x563ee9,_0x9effc9,_0x589a3c){var _0x15f823={};var _0x276679={};var _0x338ce4;var _0xa88a96;return db['Trigger'][_0xe140('0x56')]({'where':{'id':_0x563ee9[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x9effc9,null))[_0xe140('0x23')](function(_0x180e38){if(_0x180e38){_0x338ce4=_0x180e38;_0x276679[_0xe140('0x31')]=_[_0xe140('0x33')](db[_0xe140('0x5e')]['rawAttributes']);_0x276679[_0xe140('0x32')]=_[_0xe140('0x33')](_0x563ee9[_0xe140('0x32')]);_0x276679['filters']=_[_0xe140('0x36')](_0x276679[_0xe140('0x31')],_0x276679[_0xe140('0x32')]);_0x15f823['attributes']=_[_0xe140('0x36')](_0x276679['model'],qs[_0xe140('0x37')](_0x563ee9['query'][_0xe140('0x37')]));_0x15f823[_0xe140('0x35')]=_0x15f823[_0xe140('0x35')]['length']?_0x15f823[_0xe140('0x35')]:_0x276679[_0xe140('0x31')];_0x15f823[_0xe140('0x57')]=qs['sort'](_0x563ee9[_0xe140('0x32')][_0xe140('0x39')]);_0x15f823[_0xe140('0x3a')]=qs[_0xe140('0x34')](_['pick'](_0x563ee9[_0xe140('0x32')],_0x276679[_0xe140('0x34')]));if(_0x563ee9[_0xe140('0x32')][_0xe140('0x3c')]){_0x15f823[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x15f823[_0xe140('0x3a')],{'$or':_[_0xe140('0x2b')](_0x15f823[_0xe140('0x35')],function(_0x47c7c8){var _0x1515a7={};_0x1515a7[_0x47c7c8]={'$like':'%'+_0x563ee9[_0xe140('0x32')][_0xe140('0x3c')]+'%'};return _0x1515a7;})});}_0x15f823=_[_0xe140('0x3d')]({},_0x15f823,_0x563ee9[_0xe140('0x3f')]);return _0x338ce4[_0xe140('0x5f')](_0x15f823);}})[_0xe140('0x23')](function(_0x32b932){if(_0x32b932){_0xa88a96=_0x32b932['length'];if(!_0x563ee9[_0xe140('0x32')][_0xe140('0x58')]('nolimit')){_0x15f823[_0xe140('0x1c')]=qs[_0xe140('0x1c')](_0x563ee9[_0xe140('0x32')][_0xe140('0x1c')]);_0x15f823[_0xe140('0x1b')]=qs[_0xe140('0x1b')](_0x563ee9['query'][_0xe140('0x1b')]);}return _0x338ce4[_0xe140('0x5f')](_0x15f823);}})[_0xe140('0x23')](function(_0x1e8284){if(_0x1e8284){return _0x1e8284?{'count':_0xa88a96,'rows':_0x1e8284}:null;}})[_0xe140('0x23')](respondWithResult(_0x9effc9,null))['catch'](handleError(_0x9effc9,null));};
\ No newline at end of file
+var _0x609d=['eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','update','then','Triggers','destroy','name','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','options','Trigger','count','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','user','role','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','order','pick','merge','getAnyConditions','addAction','TriggerId','Action','getActions'];(function(_0x20e971,_0xe32f4b){var _0x303122=function(_0x3e25d5){while(--_0x3e25d5){_0x20e971['push'](_0x20e971['shift']());}};_0x303122(++_0xe32f4b);}(_0x609d,0xc0));var _0xd609=function(_0x3ef8a9,_0x59a7c2){_0x3ef8a9=_0x3ef8a9-0x0;var _0x424f63=_0x609d[_0x3ef8a9];return _0x424f63;};'use strict';var emlformat=require(_0xd609('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd609('0x1'));var jsonpatch=require(_0xd609('0x2'));var rp=require(_0xd609('0x3'));var moment=require(_0xd609('0x4'));var BPromise=require(_0xd609('0x5'));var Mustache=require('mustache');var util=require(_0xd609('0x6'));var path=require(_0xd609('0x7'));var sox=require('sox');var csv=require(_0xd609('0x8'));var ejs=require(_0xd609('0x9'));var fs=require('fs');var fs_extra=require(_0xd609('0xa'));var _=require(_0xd609('0xb'));var squel=require(_0xd609('0xc'));var crypto=require(_0xd609('0xd'));var jsforce=require(_0xd609('0xe'));var deskjs=require(_0xd609('0xf'));var toCsv=require(_0xd609('0x8'));var querystring=require(_0xd609('0x10'));var Papa=require(_0xd609('0x11'));var Redis=require(_0xd609('0x12'));var authService=require(_0xd609('0x13'));var qs=require(_0xd609('0x14'));var as=require(_0xd609('0x15'));var hardwareService=require(_0xd609('0x16'));var logger=require('../../config/logger')(_0xd609('0x17'));var utils=require(_0xd609('0x18'));var config=require(_0xd609('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x115e80,_0x299a83){_0x299a83=_0x299a83||0xcc;return function(_0x5b8149){if(_0x5b8149){return _0x115e80[_0xd609('0x1a')](_0x299a83);}return _0x115e80['status'](_0x299a83)['end']();};}function respondWithResult(_0x49340e,_0x58ac7b){_0x58ac7b=_0x58ac7b||0xc8;return function(_0x55a997){if(_0x55a997){return _0x49340e[_0xd609('0x1b')](_0x58ac7b)[_0xd609('0x1c')](_0x55a997);}};}function respondWithFilteredResult(_0x45320e,_0x949259){return function(_0xfefec2){if(_0xfefec2){var _0x1ac4f6=typeof _0x949259[_0xd609('0x1d')]===_0xd609('0x1e')&&typeof _0x949259[_0xd609('0x1f')]===_0xd609('0x1e');var _0x3d6aa7=_0xfefec2['count'];var _0x24291b=_0x1ac4f6?0x0:_0x949259[_0xd609('0x1d')];var _0x365f94=_0x1ac4f6?_0xfefec2['count']:_0x949259[_0xd609('0x1d')]+_0x949259[_0xd609('0x1f')];var _0x21708d;if(_0x365f94>=_0x3d6aa7){_0x365f94=_0x3d6aa7;_0x21708d=0xc8;}else{_0x21708d=0xce;}_0x45320e[_0xd609('0x1b')](_0x21708d);return _0x45320e[_0xd609('0x20')](_0xd609('0x21'),_0x24291b+'-'+_0x365f94+'/'+_0x3d6aa7)[_0xd609('0x1c')](_0xfefec2);}return null;};}function patchUpdates(_0x2a1f3d){return function(_0x29459b){try{jsonpatch[_0xd609('0x22')](_0x29459b,_0x2a1f3d,!![]);}catch(_0x2ae316){return BPromise[_0xd609('0x23')](_0x2ae316);}return _0x29459b['save']();};}function saveUpdates(_0x3eb5d5,_0x5e43eb){return function(_0x305a4a){if(_0x305a4a){return _0x305a4a[_0xd609('0x24')](_0x3eb5d5)[_0xd609('0x25')](function(_0x44073f){return _0x44073f;});}return null;};}function removeEntity(_0x172d68,_0x31230b){return function(_0x14ec55){if(_0x14ec55){return _0x14ec55['destroy']()[_0xd609('0x25')](function(){var _0x158db3=_0x14ec55['get']({'plain':!![]});var _0x195978=_0xd609('0x26');return db['UserProfileResource'][_0xd609('0x27')]({'where':{'type':_0x195978,'resourceId':_0x158db3['id']}})[_0xd609('0x25')](function(){return _0x14ec55;});})[_0xd609('0x25')](function(){_0x172d68[_0xd609('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x212bc5,_0x273bdb){return function(_0x56af99){if(!_0x56af99){_0x212bc5[_0xd609('0x1a')](0x194);}return _0x56af99;};}function handleError(_0x5188a9,_0x3982f9){_0x3982f9=_0x3982f9||0x1f4;return function(_0x44f6b3){logger['error'](_0x44f6b3['stack']);if(_0x44f6b3[_0xd609('0x28')]){delete _0x44f6b3[_0xd609('0x28')];}_0x5188a9[_0xd609('0x1b')](_0x3982f9)['send'](_0x44f6b3);};}exports['index']=function(_0x27d620,_0xfcdd65){var _0x54b6f4={},_0xa0bb44={},_0x4f05cc={'count':0x0,'rows':[]};var _0x2fb69b=_[_0xd609('0x29')](db['Trigger'][_0xd609('0x2a')],function(_0x1b6084){return{'name':_0x1b6084[_0xd609('0x2b')],'type':_0x1b6084[_0xd609('0x2c')][_0xd609('0x2d')]};});_0xa0bb44[_0xd609('0x2e')]=_[_0xd609('0x29')](_0x2fb69b,_0xd609('0x28'));_0xa0bb44['query']=_['keys'](_0x27d620[_0xd609('0x2f')]);_0xa0bb44[_0xd609('0x30')]=_[_0xd609('0x31')](_0xa0bb44[_0xd609('0x2e')],_0xa0bb44[_0xd609('0x2f')]);_0x54b6f4[_0xd609('0x32')]=_[_0xd609('0x31')](_0xa0bb44[_0xd609('0x2e')],qs[_0xd609('0x33')](_0x27d620[_0xd609('0x2f')][_0xd609('0x33')]));_0x54b6f4[_0xd609('0x32')]=_0x54b6f4[_0xd609('0x32')][_0xd609('0x34')]?_0x54b6f4[_0xd609('0x32')]:_0xa0bb44[_0xd609('0x2e')];if(!_0x27d620[_0xd609('0x2f')][_0xd609('0x35')](_0xd609('0x36'))){_0x54b6f4[_0xd609('0x1f')]=qs[_0xd609('0x1f')](_0x27d620['query'][_0xd609('0x1f')]);_0x54b6f4[_0xd609('0x1d')]=qs[_0xd609('0x1d')](_0x27d620[_0xd609('0x2f')][_0xd609('0x1d')]);}_0x54b6f4['order']=qs['sort'](_0x27d620[_0xd609('0x2f')][_0xd609('0x37')]);_0x54b6f4[_0xd609('0x38')]=qs['filters'](_['pick'](_0x27d620[_0xd609('0x2f')],_0xa0bb44[_0xd609('0x30')]),_0x2fb69b);if(_0x27d620['query']['filter']){_0x54b6f4[_0xd609('0x38')]=_['merge'](_0x54b6f4[_0xd609('0x38')],{'$or':_['map'](_0x2fb69b,function(_0xdada01){if(_0xdada01[_0xd609('0x2c')]!=='VIRTUAL'){var _0x1a81b7={};_0x1a81b7[_0xdada01['name']]={'$like':'%'+_0x27d620[_0xd609('0x2f')][_0xd609('0x39')]+'%'};return _0x1a81b7;}})});}_0x54b6f4=_['merge']({},_0x54b6f4,_0x27d620[_0xd609('0x3a')]);var _0x1d7722={'where':_0x54b6f4[_0xd609('0x38')]};return db[_0xd609('0x3b')][_0xd609('0x3c')](_0x1d7722)[_0xd609('0x25')](function(_0x3c0168){_0x4f05cc[_0xd609('0x3c')]=_0x3c0168;if(_0x27d620['query']['includeAll']){_0x54b6f4['include']=[{'all':!![]}];}return db[_0xd609('0x3b')][_0xd609('0x3d')](_0x54b6f4);})['then'](function(_0x28af08){_0x4f05cc[_0xd609('0x3e')]=_0x28af08;return _0x4f05cc;})['then'](respondWithFilteredResult(_0xfcdd65,_0x54b6f4))[_0xd609('0x3f')](handleError(_0xfcdd65,null));};exports[_0xd609('0x40')]=function(_0x48afd0,_0x1cee9d){var _0x5349fa={'raw':![],'where':{'id':_0x48afd0[_0xd609('0x41')]['id']}},_0x53f566={};_0x53f566[_0xd609('0x2e')]=_['keys'](db[_0xd609('0x3b')][_0xd609('0x2a')]);_0x53f566[_0xd609('0x2f')]=_[_0xd609('0x42')](_0x48afd0[_0xd609('0x2f')]);_0x53f566[_0xd609('0x30')]=_[_0xd609('0x31')](_0x53f566[_0xd609('0x2e')],_0x53f566[_0xd609('0x2f')]);_0x5349fa[_0xd609('0x32')]=_[_0xd609('0x31')](_0x53f566[_0xd609('0x2e')],qs[_0xd609('0x33')](_0x48afd0[_0xd609('0x2f')]['fields']));_0x5349fa[_0xd609('0x32')]=_0x5349fa[_0xd609('0x32')][_0xd609('0x34')]?_0x5349fa[_0xd609('0x32')]:_0x53f566['model'];if(_0x48afd0[_0xd609('0x2f')][_0xd609('0x43')]){_0x5349fa[_0xd609('0x44')]=[{'all':!![]}];}_0x5349fa=_['merge']({},_0x5349fa,_0x48afd0[_0xd609('0x3a')]);return db[_0xd609('0x3b')][_0xd609('0x45')](_0x5349fa)[_0xd609('0x25')](handleEntityNotFound(_0x1cee9d,null))[_0xd609('0x25')](respondWithResult(_0x1cee9d,null))[_0xd609('0x3f')](handleError(_0x1cee9d,null));};exports[_0xd609('0x46')]=function(_0x18a23a,_0x2c8240){return db['Trigger'][_0xd609('0x46')](_0x18a23a[_0xd609('0x47')],{})[_0xd609('0x25')](function(_0x366965){var _0x4fba30=_0x18a23a[_0xd609('0x48')]['get']({'plain':!![]});if(!_0x4fba30)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4fba30[_0xd609('0x49')]===_0xd609('0x48')){var _0x41fe93=_0x366965[_0xd609('0x4a')]({'plain':!![]});var _0x41bafe=_0xd609('0x26');return db[_0xd609('0x4b')]['find']({'where':{'name':_0x41bafe,'userProfileId':_0x4fba30[_0xd609('0x4c')]},'raw':!![]})[_0xd609('0x25')](function(_0x15add3){if(_0x15add3&&_0x15add3[_0xd609('0x4d')]===0x0){return db[_0xd609('0x4e')]['create']({'name':_0x41fe93[_0xd609('0x28')],'resourceId':_0x41fe93['id'],'type':_0x15add3[_0xd609('0x28')],'sectionId':_0x15add3['id']},{})[_0xd609('0x25')](function(){return _0x366965;});}else{return _0x366965;}})[_0xd609('0x3f')](function(_0x395345){logger[_0xd609('0x4f')](_0xd609('0x50'),_0x395345);throw _0x395345;});}return _0x366965;})[_0xd609('0x25')](respondWithResult(_0x2c8240,0xc9))[_0xd609('0x3f')](handleError(_0x2c8240,null));};exports[_0xd609('0x24')]=function(_0x16fb0b,_0x4833d0){if(_0x16fb0b['body']['id']){delete _0x16fb0b[_0xd609('0x47')]['id'];}return db['Trigger']['find']({'where':{'id':_0x16fb0b[_0xd609('0x41')]['id']}})[_0xd609('0x25')](handleEntityNotFound(_0x4833d0,null))['then'](saveUpdates(_0x16fb0b['body'],null))['then'](respondWithResult(_0x4833d0,null))['catch'](handleError(_0x4833d0,null));};exports['destroy']=function(_0x34e37d,_0x688368){return db[_0xd609('0x3b')]['find']({'where':{'id':_0x34e37d[_0xd609('0x41')]['id']}})[_0xd609('0x25')](handleEntityNotFound(_0x688368,null))[_0xd609('0x25')](removeEntity(_0x688368,null))['catch'](handleError(_0x688368,null));};exports[_0xd609('0x51')]=function(_0x17ef44,_0x2d02c0,_0x27f85c){if(_0x17ef44[_0xd609('0x47')]['id']){delete _0x17ef44[_0xd609('0x47')]['id'];}return db['Trigger'][_0xd609('0x45')]({'where':{'id':_0x17ef44['params']['id']}})[_0xd609('0x25')](handleEntityNotFound(_0x2d02c0,null))[_0xd609('0x25')](function(_0x28ea0e){if(_0x28ea0e){_0x17ef44[_0xd609('0x47')][_0xd609('0x52')]=_0x28ea0e['id'];return db[_0xd609('0x53')][_0xd609('0x46')](_0x17ef44['body']);}})[_0xd609('0x25')](respondWithResult(_0x2d02c0,null))[_0xd609('0x3f')](handleError(_0x2d02c0,null));};exports[_0xd609('0x54')]=function(_0x13ddef,_0x1c37b4,_0x174d2a){if(_0x13ddef[_0xd609('0x47')]['id']){delete _0x13ddef[_0xd609('0x47')]['id'];}return db[_0xd609('0x3b')][_0xd609('0x45')]({'where':{'id':_0x13ddef[_0xd609('0x41')]['id']}})['then'](handleEntityNotFound(_0x1c37b4,null))[_0xd609('0x25')](function(_0x1a51bd){if(_0x1a51bd){_0x13ddef[_0xd609('0x47')][_0xd609('0x55')]=_0x1a51bd['id'];return db[_0xd609('0x53')][_0xd609('0x46')](_0x13ddef['body']);}})['then'](respondWithResult(_0x1c37b4,null))['catch'](handleError(_0x1c37b4,null));};exports[_0xd609('0x56')]=function(_0x2314aa,_0x8c2bc9,_0x4e40b9){var _0x4a29e1={};var _0x3fa517={};var _0x27a9a2;var _0x8e3424;return db['Trigger'][_0xd609('0x57')]({'where':{'id':_0x2314aa[_0xd609('0x41')]['id']}})[_0xd609('0x25')](handleEntityNotFound(_0x8c2bc9,null))[_0xd609('0x25')](function(_0x23d011){if(_0x23d011){_0x27a9a2=_0x23d011;_0x3fa517[_0xd609('0x2e')]=_[_0xd609('0x42')](db[_0xd609('0x53')][_0xd609('0x2a')]);_0x3fa517[_0xd609('0x2f')]=_[_0xd609('0x42')](_0x2314aa[_0xd609('0x2f')]);_0x3fa517[_0xd609('0x30')]=_[_0xd609('0x31')](_0x3fa517[_0xd609('0x2e')],_0x3fa517[_0xd609('0x2f')]);_0x4a29e1[_0xd609('0x32')]=_[_0xd609('0x31')](_0x3fa517[_0xd609('0x2e')],qs[_0xd609('0x33')](_0x2314aa[_0xd609('0x2f')][_0xd609('0x33')]));_0x4a29e1[_0xd609('0x32')]=_0x4a29e1[_0xd609('0x32')][_0xd609('0x34')]?_0x4a29e1[_0xd609('0x32')]:_0x3fa517[_0xd609('0x2e')];_0x4a29e1[_0xd609('0x58')]=qs['sort'](_0x2314aa[_0xd609('0x2f')][_0xd609('0x37')]);_0x4a29e1['where']=qs[_0xd609('0x30')](_[_0xd609('0x59')](_0x2314aa[_0xd609('0x2f')],_0x3fa517['filters']));if(_0x2314aa[_0xd609('0x2f')][_0xd609('0x39')]){_0x4a29e1[_0xd609('0x38')]=_[_0xd609('0x5a')](_0x4a29e1[_0xd609('0x38')],{'$or':_[_0xd609('0x29')](_0x4a29e1['attributes'],function(_0x1583ac){var _0x1e0fef={};_0x1e0fef[_0x1583ac]={'$like':'%'+_0x2314aa[_0xd609('0x2f')][_0xd609('0x39')]+'%'};return _0x1e0fef;})});}_0x4a29e1=_['merge']({},_0x4a29e1,_0x2314aa[_0xd609('0x3a')]);return _0x27a9a2[_0xd609('0x56')](_0x4a29e1);}})['then'](function(_0x40749f){if(_0x40749f){_0x8e3424=_0x40749f[_0xd609('0x34')];if(!_0x2314aa['query'][_0xd609('0x35')]('nolimit')){_0x4a29e1['limit']=qs[_0xd609('0x1f')](_0x2314aa[_0xd609('0x2f')][_0xd609('0x1f')]);_0x4a29e1[_0xd609('0x1d')]=qs[_0xd609('0x1d')](_0x2314aa[_0xd609('0x2f')][_0xd609('0x1d')]);}return _0x27a9a2['getAllConditions'](_0x4a29e1);}})['then'](function(_0xaa558e){if(_0xaa558e){return _0xaa558e?{'count':_0x8e3424,'rows':_0xaa558e}:null;}})[_0xd609('0x25')](respondWithResult(_0x8c2bc9,null))[_0xd609('0x3f')](handleError(_0x8c2bc9,null));};exports['getAnyConditions']=function(_0x366d23,_0x5c16be,_0xf5304f){var _0x2bb712={};var _0x4600e8={};var _0x1eb9cf;var _0xce52cf;return db['Trigger']['findOne']({'where':{'id':_0x366d23[_0xd609('0x41')]['id']}})[_0xd609('0x25')](handleEntityNotFound(_0x5c16be,null))[_0xd609('0x25')](function(_0x11c66b){if(_0x11c66b){_0x1eb9cf=_0x11c66b;_0x4600e8[_0xd609('0x2e')]=_['keys'](db[_0xd609('0x53')][_0xd609('0x2a')]);_0x4600e8[_0xd609('0x2f')]=_[_0xd609('0x42')](_0x366d23['query']);_0x4600e8[_0xd609('0x30')]=_[_0xd609('0x31')](_0x4600e8[_0xd609('0x2e')],_0x4600e8[_0xd609('0x2f')]);_0x2bb712[_0xd609('0x32')]=_['intersection'](_0x4600e8['model'],qs[_0xd609('0x33')](_0x366d23['query']['fields']));_0x2bb712[_0xd609('0x32')]=_0x2bb712[_0xd609('0x32')]['length']?_0x2bb712[_0xd609('0x32')]:_0x4600e8['model'];_0x2bb712[_0xd609('0x58')]=qs['sort'](_0x366d23['query'][_0xd609('0x37')]);_0x2bb712['where']=qs[_0xd609('0x30')](_[_0xd609('0x59')](_0x366d23['query'],_0x4600e8[_0xd609('0x30')]));if(_0x366d23[_0xd609('0x2f')]['filter']){_0x2bb712[_0xd609('0x38')]=_[_0xd609('0x5a')](_0x2bb712[_0xd609('0x38')],{'$or':_['map'](_0x2bb712[_0xd609('0x32')],function(_0x4f4ded){var _0x269bb7={};_0x269bb7[_0x4f4ded]={'$like':'%'+_0x366d23['query']['filter']+'%'};return _0x269bb7;})});}_0x2bb712=_[_0xd609('0x5a')]({},_0x2bb712,_0x366d23[_0xd609('0x3a')]);return _0x1eb9cf[_0xd609('0x5b')](_0x2bb712);}})[_0xd609('0x25')](function(_0x333bb0){if(_0x333bb0){_0xce52cf=_0x333bb0[_0xd609('0x34')];if(!_0x366d23[_0xd609('0x2f')]['hasOwnProperty'](_0xd609('0x36'))){_0x2bb712[_0xd609('0x1f')]=qs['limit'](_0x366d23['query'][_0xd609('0x1f')]);_0x2bb712[_0xd609('0x1d')]=qs[_0xd609('0x1d')](_0x366d23[_0xd609('0x2f')][_0xd609('0x1d')]);}return _0x1eb9cf[_0xd609('0x5b')](_0x2bb712);}})[_0xd609('0x25')](function(_0x559e77){if(_0x559e77){return _0x559e77?{'count':_0xce52cf,'rows':_0x559e77}:null;}})[_0xd609('0x25')](respondWithResult(_0x5c16be,null))['catch'](handleError(_0x5c16be,null));};exports[_0xd609('0x5c')]=function(_0x5a6ec5,_0x27c0a8,_0x15ce44){if(_0x5a6ec5['body']['id']){delete _0x5a6ec5[_0xd609('0x47')]['id'];}return db[_0xd609('0x3b')][_0xd609('0x45')]({'where':{'id':_0x5a6ec5[_0xd609('0x41')]['id']}})[_0xd609('0x25')](handleEntityNotFound(_0x27c0a8,null))[_0xd609('0x25')](function(_0x79806){if(_0x79806){_0x5a6ec5[_0xd609('0x47')][_0xd609('0x5d')]=_0x79806['id'];return db[_0xd609('0x5e')][_0xd609('0x46')](_0x5a6ec5[_0xd609('0x47')]);}})[_0xd609('0x25')](respondWithResult(_0x27c0a8,null))[_0xd609('0x3f')](handleError(_0x27c0a8,null));};exports[_0xd609('0x5f')]=function(_0x186905,_0x138684,_0x3c5e62){var _0x11df7f={};var _0xc90b63={};var _0x1b9828;var _0xb549e2;return db[_0xd609('0x3b')][_0xd609('0x57')]({'where':{'id':_0x186905[_0xd609('0x41')]['id']}})[_0xd609('0x25')](handleEntityNotFound(_0x138684,null))[_0xd609('0x25')](function(_0x46f0c9){if(_0x46f0c9){_0x1b9828=_0x46f0c9;_0xc90b63[_0xd609('0x2e')]=_[_0xd609('0x42')](db['Action'][_0xd609('0x2a')]);_0xc90b63['query']=_[_0xd609('0x42')](_0x186905[_0xd609('0x2f')]);_0xc90b63[_0xd609('0x30')]=_[_0xd609('0x31')](_0xc90b63[_0xd609('0x2e')],_0xc90b63[_0xd609('0x2f')]);_0x11df7f['attributes']=_[_0xd609('0x31')](_0xc90b63[_0xd609('0x2e')],qs[_0xd609('0x33')](_0x186905[_0xd609('0x2f')][_0xd609('0x33')]));_0x11df7f['attributes']=_0x11df7f[_0xd609('0x32')][_0xd609('0x34')]?_0x11df7f[_0xd609('0x32')]:_0xc90b63['model'];_0x11df7f[_0xd609('0x58')]=qs[_0xd609('0x37')](_0x186905[_0xd609('0x2f')][_0xd609('0x37')]);_0x11df7f[_0xd609('0x38')]=qs[_0xd609('0x30')](_[_0xd609('0x59')](_0x186905['query'],_0xc90b63[_0xd609('0x30')]));if(_0x186905['query'][_0xd609('0x39')]){_0x11df7f[_0xd609('0x38')]=_[_0xd609('0x5a')](_0x11df7f[_0xd609('0x38')],{'$or':_[_0xd609('0x29')](_0x11df7f[_0xd609('0x32')],function(_0x9b8ee0){var _0x33943f={};_0x33943f[_0x9b8ee0]={'$like':'%'+_0x186905[_0xd609('0x2f')][_0xd609('0x39')]+'%'};return _0x33943f;})});}_0x11df7f=_[_0xd609('0x5a')]({},_0x11df7f,_0x186905[_0xd609('0x3a')]);return _0x1b9828[_0xd609('0x5f')](_0x11df7f);}})[_0xd609('0x25')](function(_0x239135){if(_0x239135){_0xb549e2=_0x239135['length'];if(!_0x186905[_0xd609('0x2f')][_0xd609('0x35')](_0xd609('0x36'))){_0x11df7f[_0xd609('0x1f')]=qs[_0xd609('0x1f')](_0x186905[_0xd609('0x2f')][_0xd609('0x1f')]);_0x11df7f[_0xd609('0x1d')]=qs[_0xd609('0x1d')](_0x186905[_0xd609('0x2f')][_0xd609('0x1d')]);}return _0x1b9828[_0xd609('0x5f')](_0x11df7f);}})[_0xd609('0x25')](function(_0x58d207){if(_0x58d207){return _0x58d207?{'count':_0xb549e2,'rows':_0x58d207}:null;}})['then'](respondWithResult(_0x138684,null))['catch'](handleError(_0x138684,null));};
\ No newline at end of file
index c85b3d5..0df4e25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1061=['request-promise','path','rimraf','../../config/environment','./trigger.attributes','exports','define','lodash','moment','bluebird'];(function(_0x3930b1,_0x471bd7){var _0x974647=function(_0x31ea9b){while(--_0x31ea9b){_0x3930b1['push'](_0x3930b1['shift']());}};_0x974647(++_0x471bd7);}(_0x1061,0x1b5));var _0x1106=function(_0xad13ed,_0x328800){_0xad13ed=_0xad13ed-0x0;var _0x2c6d94=_0x1061[_0xad13ed];return _0x2c6d94;};'use strict';var _=require(_0x1106('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1106('0x1'));var BPromise=require(_0x1106('0x2'));var rp=require(_0x1106('0x3'));var fs=require('fs');var path=require(_0x1106('0x4'));var rimraf=require(_0x1106('0x5'));var config=require(_0x1106('0x6'));var attributes=require(_0x1106('0x7'));module[_0x1106('0x8')]=function(_0x5120c6,_0x1f098a){return _0x5120c6[_0x1106('0x9')]('Trigger',attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf842=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','Trigger','tools_triggers','lodash','util'];(function(_0x51341d,_0x1fd9ee){var _0x113299=function(_0x304767){while(--_0x304767){_0x51341d['push'](_0x51341d['shift']());}};_0x113299(++_0x1fd9ee);}(_0xf842,0x172));var _0x2f84=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xf842[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x2f84('0x0'));var util=require(_0x2f84('0x1'));var logger=require(_0x2f84('0x2'))(_0x2f84('0x3'));var moment=require('moment');var BPromise=require(_0x2f84('0x4'));var rp=require(_0x2f84('0x5'));var fs=require('fs');var path=require(_0x2f84('0x6'));var rimraf=require(_0x2f84('0x7'));var config=require(_0x2f84('0x8'));var attributes=require('./trigger.attributes');module[_0x2f84('0x9')]=function(_0x20e773,_0x88a4cb){return _0x20e773['define'](_0x2f84('0xa'),attributes,{'tableName':_0x2f84('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d795e55..11b73ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x121b=['http','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','GetTrigger','Trigger','findAll','options','raw','where','limit','include','model','attributes','map','stringify','ShowTrigger','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x24717a,_0x26f6dc){var _0x32cf54=function(_0x1282a6){while(--_0x1282a6){_0x24717a['push'](_0x24717a['shift']());}};_0x32cf54(++_0x26f6dc);}(_0x121b,0x183));var _0xb121=function(_0x1ab0e6,_0x17ba8d){_0x1ab0e6=_0x1ab0e6-0x0;var _0x248815=_0x121b[_0x1ab0e6];return _0x248815;};'use strict';var _=require(_0xb121('0x0'));var util=require(_0xb121('0x1'));var moment=require('moment');var BPromise=require(_0xb121('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb121('0x3'));var db=require(_0xb121('0x4'))['db'];var utils=require(_0xb121('0x5'));var logger=require('../../config/logger')(_0xb121('0x6'));var config=require(_0xb121('0x7'));var jayson=require(_0xb121('0x8'));var client=jayson['client'][_0xb121('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45823a,_0x4c7e0e,_0x24d7cd){return new BPromise(function(_0x22ce09,_0x4acfd6){return client[_0xb121('0xa')](_0x45823a,_0x24d7cd)[_0xb121('0xb')](function(_0x534e22){logger['info'](_0xb121('0xc'),_0x4c7e0e,_0xb121('0xd'));logger[_0xb121('0xe')](_0xb121('0xf'),_0x4c7e0e,_0xb121('0xd'),JSON['stringify'](_0x534e22));if(_0x534e22[_0xb121('0x10')]){if(_0x534e22[_0xb121('0x10')][_0xb121('0x11')]===0x1f4){logger[_0xb121('0x10')](_0xb121('0xc'),_0x4c7e0e,_0x534e22[_0xb121('0x10')][_0xb121('0x12')]);return _0x4acfd6(_0x534e22['error']['message']);}logger[_0xb121('0x10')](_0xb121('0xc'),_0x4c7e0e,_0x534e22[_0xb121('0x10')][_0xb121('0x12')]);return _0x22ce09(_0x534e22[_0xb121('0x10')][_0xb121('0x12')]);}else{logger[_0xb121('0x13')]('Trigger,\x20%s,\x20%s',_0x4c7e0e,_0xb121('0xd'));_0x22ce09(_0x534e22[_0xb121('0x14')][_0xb121('0x12')]);}})[_0xb121('0x15')](function(_0x4d4791){logger[_0xb121('0x10')]('Trigger,\x20%s,\x20%s',_0x4c7e0e,_0x4d4791);_0x4acfd6(_0x4d4791);});});}exports[_0xb121('0x16')]=function(_0x47cd30){var _0x2f7c8a=this;return new Promise(function(_0x4898fa,_0x24a548){return db[_0xb121('0x17')][_0xb121('0x18')]({'raw':_0x47cd30[_0xb121('0x19')]?_0x47cd30[_0xb121('0x19')][_0xb121('0x1a')]===undefined?!![]:![]:!![],'where':_0x47cd30[_0xb121('0x19')]?_0x47cd30['options'][_0xb121('0x1b')]||null:null,'attributes':_0x47cd30['options']?_0x47cd30['options']['attributes']||null:null,'limit':_0x47cd30[_0xb121('0x19')]?_0x47cd30[_0xb121('0x19')][_0xb121('0x1c')]||null:null,'include':_0x47cd30[_0xb121('0x19')]?_0x47cd30[_0xb121('0x19')][_0xb121('0x1d')]?_['map'](_0x47cd30[_0xb121('0x19')][_0xb121('0x1d')],function(_0x3e683b){return{'model':db[_0x3e683b[_0xb121('0x1e')]],'as':_0x3e683b['as'],'attributes':_0x3e683b[_0xb121('0x1f')],'include':_0x3e683b[_0xb121('0x1d')]?_['map'](_0x3e683b[_0xb121('0x1d')],function(_0x15a538){return{'model':db[_0x15a538[_0xb121('0x1e')]],'as':_0x15a538['as'],'attributes':_0x15a538[_0xb121('0x1f')],'include':_0x15a538[_0xb121('0x1d')]?_[_0xb121('0x20')](_0x15a538['include'],function(_0x9682d2){return{'model':db[_0x9682d2[_0xb121('0x1e')]],'as':_0x9682d2['as'],'attributes':_0x9682d2[_0xb121('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb121('0xb')](function(_0x552f4f){logger[_0xb121('0x13')](_0xb121('0x16'),_0x47cd30);logger['debug'](_0xb121('0x16'),_0x47cd30,JSON[_0xb121('0x21')](_0x552f4f));_0x4898fa(_0x552f4f);})[_0xb121('0x15')](function(_0x1bf87f){logger[_0xb121('0x10')](_0xb121('0x16'),_0x1bf87f[_0xb121('0x12')],_0x47cd30);_0x24a548(_0x2f7c8a[_0xb121('0x10')](0x1f4,_0x1bf87f[_0xb121('0x12')]));});});};exports[_0xb121('0x22')]=function(_0x4c4994){var _0x40b6fb=this;return new Promise(function(_0x76002a,_0x63a8b2){return db['Trigger'][_0xb121('0x23')]({'raw':_0x4c4994[_0xb121('0x19')]?_0x4c4994['options'][_0xb121('0x1a')]===undefined?!![]:![]:!![],'where':_0x4c4994[_0xb121('0x19')]?_0x4c4994[_0xb121('0x19')][_0xb121('0x1b')]||null:null,'attributes':_0x4c4994['options']?_0x4c4994[_0xb121('0x19')][_0xb121('0x1f')]||null:null,'include':_0x4c4994[_0xb121('0x19')]?_0x4c4994[_0xb121('0x19')][_0xb121('0x1d')]?_[_0xb121('0x20')](_0x4c4994[_0xb121('0x19')]['include'],function(_0x4d30a1){return{'model':db[_0x4d30a1[_0xb121('0x1e')]],'as':_0x4d30a1['as'],'attributes':_0x4d30a1[_0xb121('0x1f')],'include':_0x4d30a1[_0xb121('0x1d')]?_[_0xb121('0x20')](_0x4d30a1['include'],function(_0x272349){return{'model':db[_0x272349[_0xb121('0x1e')]],'as':_0x272349['as'],'attributes':_0x272349['attributes'],'include':_0x272349['include']?_[_0xb121('0x20')](_0x272349[_0xb121('0x1d')],function(_0x1025cc){return{'model':db[_0x1025cc[_0xb121('0x1e')]],'as':_0x1025cc['as'],'attributes':_0x1025cc['attributes']};}):[]};}):[]};}):[]:[]})[_0xb121('0xb')](function(_0x554864){logger['info'](_0xb121('0x22'),_0x4c4994);logger['debug'](_0xb121('0x22'),_0x4c4994,JSON[_0xb121('0x21')](_0x554864));_0x76002a(_0x554864);})[_0xb121('0x15')](function(_0x158aed){logger[_0xb121('0x10')]('ShowTrigger',_0x158aed[_0xb121('0x12')],_0x4c4994);_0x63a8b2(_0x40b6fb[_0xb121('0x10')](0x1f4,_0x158aed[_0xb121('0x12')]));});});};
\ No newline at end of file
+var _0xd7c5=['where','map','include','model','attributes','ShowTrigger','find','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetTrigger','Trigger','findAll','options','raw'];(function(_0x553c67,_0x27715e){var _0x25663a=function(_0x304b55){while(--_0x304b55){_0x553c67['push'](_0x553c67['shift']());}};_0x25663a(++_0x27715e);}(_0xd7c5,0x8f));var _0x5d7c=function(_0x5c058a,_0x266884){_0x5c058a=_0x5c058a-0x0;var _0x419fa7=_0xd7c5[_0x5c058a];return _0x419fa7;};'use strict';var _=require(_0x5d7c('0x0'));var util=require(_0x5d7c('0x1'));var moment=require(_0x5d7c('0x2'));var BPromise=require('bluebird');var rs=require(_0x5d7c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5d7c('0x4'))['db'];var utils=require(_0x5d7c('0x5'));var logger=require(_0x5d7c('0x6'))(_0x5d7c('0x7'));var config=require(_0x5d7c('0x8'));var jayson=require(_0x5d7c('0x9'));var client=jayson['client'][_0x5d7c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x127cf7,_0x591fd7,_0x5d7665){return new BPromise(function(_0x13e0bb,_0x419cbe){return client['request'](_0x127cf7,_0x5d7665)[_0x5d7c('0xb')](function(_0x19be28){logger[_0x5d7c('0xc')](_0x5d7c('0xd'),_0x591fd7,_0x5d7c('0xe'));logger[_0x5d7c('0xf')]('Trigger,\x20%s,\x20%s,\x20%s',_0x591fd7,'request\x20sent',JSON[_0x5d7c('0x10')](_0x19be28));if(_0x19be28[_0x5d7c('0x11')]){if(_0x19be28[_0x5d7c('0x11')][_0x5d7c('0x12')]===0x1f4){logger[_0x5d7c('0x11')](_0x5d7c('0xd'),_0x591fd7,_0x19be28[_0x5d7c('0x11')][_0x5d7c('0x13')]);return _0x419cbe(_0x19be28[_0x5d7c('0x11')]['message']);}logger[_0x5d7c('0x11')](_0x5d7c('0xd'),_0x591fd7,_0x19be28[_0x5d7c('0x11')][_0x5d7c('0x13')]);return _0x13e0bb(_0x19be28[_0x5d7c('0x11')][_0x5d7c('0x13')]);}else{logger['info'](_0x5d7c('0xd'),_0x591fd7,'request\x20sent');_0x13e0bb(_0x19be28[_0x5d7c('0x14')][_0x5d7c('0x13')]);}})[_0x5d7c('0x15')](function(_0x101ada){logger['error'](_0x5d7c('0xd'),_0x591fd7,_0x101ada);_0x419cbe(_0x101ada);});});}exports[_0x5d7c('0x16')]=function(_0x31b828){var _0x43fae1=this;return new Promise(function(_0x1da759,_0x4b1eda){return db[_0x5d7c('0x17')][_0x5d7c('0x18')]({'raw':_0x31b828['options']?_0x31b828[_0x5d7c('0x19')][_0x5d7c('0x1a')]===undefined?!![]:![]:!![],'where':_0x31b828[_0x5d7c('0x19')]?_0x31b828[_0x5d7c('0x19')][_0x5d7c('0x1b')]||null:null,'attributes':_0x31b828[_0x5d7c('0x19')]?_0x31b828[_0x5d7c('0x19')]['attributes']||null:null,'limit':_0x31b828[_0x5d7c('0x19')]?_0x31b828[_0x5d7c('0x19')]['limit']||null:null,'include':_0x31b828[_0x5d7c('0x19')]?_0x31b828[_0x5d7c('0x19')]['include']?_[_0x5d7c('0x1c')](_0x31b828[_0x5d7c('0x19')][_0x5d7c('0x1d')],function(_0x418224){return{'model':db[_0x418224[_0x5d7c('0x1e')]],'as':_0x418224['as'],'attributes':_0x418224[_0x5d7c('0x1f')],'include':_0x418224[_0x5d7c('0x1d')]?_[_0x5d7c('0x1c')](_0x418224[_0x5d7c('0x1d')],function(_0x3c2ae4){return{'model':db[_0x3c2ae4['model']],'as':_0x3c2ae4['as'],'attributes':_0x3c2ae4[_0x5d7c('0x1f')],'include':_0x3c2ae4[_0x5d7c('0x1d')]?_[_0x5d7c('0x1c')](_0x3c2ae4[_0x5d7c('0x1d')],function(_0x50dfe9){return{'model':db[_0x50dfe9[_0x5d7c('0x1e')]],'as':_0x50dfe9['as'],'attributes':_0x50dfe9['attributes']};}):[]};}):[]};}):[]:[]})[_0x5d7c('0xb')](function(_0x31449c){logger[_0x5d7c('0xc')]('GetTrigger',_0x31b828);logger['debug']('GetTrigger',_0x31b828,JSON['stringify'](_0x31449c));_0x1da759(_0x31449c);})[_0x5d7c('0x15')](function(_0x1bb60d){logger[_0x5d7c('0x11')](_0x5d7c('0x16'),_0x1bb60d[_0x5d7c('0x13')],_0x31b828);_0x4b1eda(_0x43fae1['error'](0x1f4,_0x1bb60d[_0x5d7c('0x13')]));});});};exports[_0x5d7c('0x20')]=function(_0x598c9e){var _0x4f8b30=this;return new Promise(function(_0x5a8317,_0x455d10){return db[_0x5d7c('0x17')][_0x5d7c('0x21')]({'raw':_0x598c9e[_0x5d7c('0x19')]?_0x598c9e[_0x5d7c('0x19')][_0x5d7c('0x1a')]===undefined?!![]:![]:!![],'where':_0x598c9e[_0x5d7c('0x19')]?_0x598c9e[_0x5d7c('0x19')][_0x5d7c('0x1b')]||null:null,'attributes':_0x598c9e[_0x5d7c('0x19')]?_0x598c9e[_0x5d7c('0x19')][_0x5d7c('0x1f')]||null:null,'include':_0x598c9e[_0x5d7c('0x19')]?_0x598c9e['options'][_0x5d7c('0x1d')]?_[_0x5d7c('0x1c')](_0x598c9e[_0x5d7c('0x19')][_0x5d7c('0x1d')],function(_0x604b3f){return{'model':db[_0x604b3f[_0x5d7c('0x1e')]],'as':_0x604b3f['as'],'attributes':_0x604b3f[_0x5d7c('0x1f')],'include':_0x604b3f[_0x5d7c('0x1d')]?_[_0x5d7c('0x1c')](_0x604b3f['include'],function(_0xb6d8e2){return{'model':db[_0xb6d8e2['model']],'as':_0xb6d8e2['as'],'attributes':_0xb6d8e2[_0x5d7c('0x1f')],'include':_0xb6d8e2[_0x5d7c('0x1d')]?_[_0x5d7c('0x1c')](_0xb6d8e2[_0x5d7c('0x1d')],function(_0x92eb26){return{'model':db[_0x92eb26[_0x5d7c('0x1e')]],'as':_0x92eb26['as'],'attributes':_0x92eb26['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b51dc){logger[_0x5d7c('0xc')]('ShowTrigger',_0x598c9e);logger[_0x5d7c('0xf')]('ShowTrigger',_0x598c9e,JSON[_0x5d7c('0x10')](_0x3b51dc));_0x5a8317(_0x3b51dc);})['catch'](function(_0xd07958){logger[_0x5d7c('0x11')](_0x5d7c('0x20'),_0xd07958[_0x5d7c('0x13')],_0x598c9e);_0x455d10(_0x4f8b30[_0x5d7c('0x11')](0x1f4,_0xd07958[_0x5d7c('0x13')]));});});};
\ No newline at end of file
index c1d0583..e132d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d02=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','/:id/clone','create','update','delete','exports'];(function(_0xf13346,_0x56b703){var _0x50207e=function(_0x4ecb78){while(--_0x4ecb78){_0xf13346['push'](_0xf13346['shift']());}};_0x50207e(++_0x56b703);}(_0x2d02,0xbd));var _0x22d0=function(_0x598b79,_0xdd2ec9){_0x598b79=_0x598b79-0x0;var _0x201b1d=_0x2d02[_0x598b79];return _0x201b1d;};'use strict';var multer=require(_0x22d0('0x0'));var util=require(_0x22d0('0x1'));var path=require(_0x22d0('0x2'));var timeout=require(_0x22d0('0x3'));var express=require(_0x22d0('0x4'));var router=express[_0x22d0('0x5')]();var fs_extra=require(_0x22d0('0x6'));var auth=require(_0x22d0('0x7'));var interaction=require(_0x22d0('0x8'));var config=require(_0x22d0('0x9'));var controller=require('./trunk.controller');router[_0x22d0('0xa')]('/',auth['isAuthenticated'](),controller[_0x22d0('0xb')]);router[_0x22d0('0xa')](_0x22d0('0xc'),auth[_0x22d0('0xd')](),controller[_0x22d0('0xe')]);router[_0x22d0('0xf')](_0x22d0('0x10'),auth[_0x22d0('0xd')](),controller['clone']);router[_0x22d0('0xf')]('/',auth[_0x22d0('0xd')](),controller[_0x22d0('0x11')]);router['put'](_0x22d0('0xc'),auth['isAuthenticated'](),controller[_0x22d0('0x12')]);router[_0x22d0('0x13')](_0x22d0('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x22d0('0x14')]=router;
\ No newline at end of file
+var _0xf76a=['clone','create','put','/:id','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','post'];(function(_0x27062d,_0x24b179){var _0x4f1478=function(_0x3b4489){while(--_0x3b4489){_0x27062d['push'](_0x27062d['shift']());}};_0x4f1478(++_0x24b179);}(_0xf76a,0x182));var _0xaf76=function(_0x29d4de,_0x326baf){_0x29d4de=_0x29d4de-0x0;var _0x34810f=_0xf76a[_0x29d4de];return _0x34810f;};'use strict';var multer=require('multer');var util=require(_0xaf76('0x0'));var path=require(_0xaf76('0x1'));var timeout=require(_0xaf76('0x2'));var express=require(_0xaf76('0x3'));var router=express[_0xaf76('0x4')]();var fs_extra=require(_0xaf76('0x5'));var auth=require(_0xaf76('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xaf76('0x7'));var controller=require('./trunk.controller');router[_0xaf76('0x8')]('/',auth[_0xaf76('0x9')](),controller[_0xaf76('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xaf76('0xb')]);router[_0xaf76('0xc')]('/:id/clone',auth[_0xaf76('0x9')](),controller[_0xaf76('0xd')]);router[_0xaf76('0xc')]('/',auth[_0xaf76('0x9')](),controller[_0xaf76('0xe')]);router[_0xaf76('0xf')]('/:id',auth[_0xaf76('0x9')](),controller['update']);router['delete'](_0xaf76('0x10'),auth[_0xaf76('0x9')](),controller[_0xaf76('0x11')]);module[_0xaf76('0x12')]=router;
\ No newline at end of file
index 1a24b08..35421e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc9e=['passive','dynamic','nonat','update,nonat','BOOLEAN','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','getDataValue','shortinfo','inband','auto','rfc2833','update','outgoing','nat','join','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]','yes','port,invite','insecure','never','INTEGER','always','accept','originate','uac','pai','fingerprint','active'];(function(_0x348860,_0x4531f6){var _0x2fc2ad=function(_0x3b449f){while(--_0x3b449f){_0x348860['push'](_0x348860['shift']());}};_0x2fc2ad(++_0x4531f6);}(_0xfc9e,0x18d));var _0xefc9=function(_0x334d1e,_0x28a488){_0x334d1e=_0x334d1e-0x0;var _0x3b33ba=_0xfc9e[_0x334d1e];return _0x3b33ba;};'use strict';var Sequelize=require('sequelize');module[_0xefc9('0x0')]={'name':{'type':Sequelize[_0xefc9('0x1')],'allowNull':![],'unique':_0xefc9('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x4'),_0xefc9('0x5'),_0xefc9('0x6')),'allowNull':![],'defaultValue':_0xefc9('0x4')},'context':{'type':Sequelize[_0xefc9('0x1')],'allowNull':![],'defaultValue':_0xefc9('0x7')},'callingpres':{'type':Sequelize[_0xefc9('0x3')]('ALLOWED_NOT_SCREENED',_0xefc9('0x8'),_0xefc9('0x9'),_0xefc9('0xa'),'PROHIB_NOT_SCREENED',_0xefc9('0xb'),_0xefc9('0xc'),_0xefc9('0xd'))},'deny':{'type':Sequelize[_0xefc9('0x1')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xefc9('0x1')]},'md5secret':{'type':Sequelize[_0xefc9('0x1')]},'remotesecret':{'type':Sequelize[_0xefc9('0x1')]},'transport':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0xe'),'set':function(_0x33c3f7){this[_0xefc9('0xf')](_0xefc9('0x10'),_0x33c3f7?_0x33c3f7['join'](','):null);},'get':function(){return this[_0xefc9('0x11')]('transport')?this[_0xefc9('0x11')](_0xefc9('0x10'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xefc9('0x3')]('rfc2833','info',_0xefc9('0x12'),_0xefc9('0x13'),_0xefc9('0x14')),'defaultValue':_0xefc9('0x15')},'directmedia':{'type':Sequelize[_0xefc9('0x3')]('yes','no','nonat',_0xefc9('0x16'),_0xefc9('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xefc9('0x1')]},'directmediadeny':{'type':Sequelize[_0xefc9('0x1')]},'nat':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':'force_rport,comedia','set':function(_0x23033b){this['setDataValue'](_0xefc9('0x18'),_0x23033b?_0x23033b[_0xefc9('0x19')](','):null);},'get':function(){return this[_0xefc9('0x11')]('nat')?this[_0xefc9('0x11')](_0xefc9('0x18'))[_0xefc9('0x1a')](','):null;},'comment':_0xefc9('0x1b')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xefc9('0x1')]},'pickupgroup':{'type':Sequelize[_0xefc9('0x1')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xefc9('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0x1c')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xefc9('0x1d'),'set':function(_0x5c1fa6){this[_0xefc9('0xf')]('allow',_0x5c1fa6?_0x5c1fa6[_0xefc9('0x19')](';'):_0xefc9('0x1d'));},'get':function(){return this[_0xefc9('0x11')](_0xefc9('0x1e'))?this[_0xefc9('0x11')](_0xefc9('0x1e'))['split'](';'):null;},'comment':_0xefc9('0x1f')},'autoframing':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'insecure':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0x21'),'set':function(_0x33eeb2){this[_0xefc9('0xf')]('insecure',_0x33eeb2?_0x33eeb2[_0xefc9('0x19')](','):null);},'get':function(){return this[_0xefc9('0x11')](_0xefc9('0x22'))?this[_0xefc9('0x11')](_0xefc9('0x22'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no',_0xefc9('0x23'))},'promiscredir':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no')},'accountcode':{'type':Sequelize[_0xefc9('0x24')](0xb)},'setvar':{'type':Sequelize[_0xefc9('0x1')]},'callerid':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xefc9('0x1')]},'callcounter':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no'),'defaultValue':_0xefc9('0x20')},'busylevel':{'type':Sequelize[_0xefc9('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'allowsubscribe':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'allowtransfer':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'ignoresdpversion':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'subscribecontext':{'type':Sequelize[_0xefc9('0x1')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no',_0xefc9('0x25')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xefc9('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no')},'mailbox':{'type':Sequelize[_0xefc9('0x1')]},'session_timers':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x26'),'refuse',_0xefc9('0x27'))},'session_expires':{'type':Sequelize[_0xefc9('0x24')](0xb)},'session_minse':{'type':Sequelize[_0xefc9('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x28'),'uas'),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xefc9('0x1')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0xefc9('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':_0xefc9('0x20')},'keepalive':{'type':Sequelize[_0xefc9('0x24')](0xb)},'defaultip':{'type':Sequelize[_0xefc9('0x1')]},'defaultuser':{'type':Sequelize[_0xefc9('0x1')]},'rtptimeout':{'type':Sequelize[_0xefc9('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xefc9('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xefc9('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no',_0xefc9('0x29')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xefc9('0x1')]},'callbackextension':{'type':Sequelize[_0xefc9('0x1')]},'timert1':{'type':Sequelize[_0xefc9('0x24')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0xefc9('0x24')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xefc9('0x1')]},'contactacl':{'type':Sequelize[_0xefc9('0x1')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xefc9('0x1')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'force_avp':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'icesupport':{'type':Sequelize[_0xefc9('0x3')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'dtlsverify':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no',_0xefc9('0x2a'),'certificate')},'dtlsrekey':{'type':Sequelize[_0xefc9('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0xefc9('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0xefc9('0x1')]},'dtlscipher':{'type':Sequelize[_0xefc9('0x1')]},'dtlscafile':{'type':Sequelize[_0xefc9('0x1')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize['ENUM'](_0xefc9('0x2b'),_0xefc9('0x2c'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xefc9('0x1')]},'usereqphone':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xefc9('0x1')]},'recordofffeature':{'type':Sequelize[_0xefc9('0x1')]},'call_limit':{'type':Sequelize[_0xefc9('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'subscribemwi':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'vmexten':{'type':Sequelize[_0xefc9('0x1')]},'mohinterpret':{'type':Sequelize[_0xefc9('0x1')]},'mohsuggest':{'type':Sequelize[_0xefc9('0x1')]},'parkinglot':{'type':Sequelize[_0xefc9('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0x2d')},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0xefc9('0x2e'),_0xefc9('0x16'),_0xefc9('0x2f')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xefc9('0x1')]},'active':{'type':Sequelize[_0xefc9('0x30')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xad86=['port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','actpass','dynamic','nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','user','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','auto','yes','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]'];(function(_0x28a7dd,_0x614f64){var _0x2d243d=function(_0x15d940){while(--_0x15d940){_0x28a7dd['push'](_0x28a7dd['shift']());}};_0x2d243d(++_0x614f64);}(_0xad86,0x11b));var _0x6ad8=function(_0xb109db,_0x2d34e4){_0xb109db=_0xb109db-0x0;var _0x25a1ca=_0xad86[_0xb109db];return _0x25a1ca;};'use strict';var Sequelize=require(_0x6ad8('0x0'));module[_0x6ad8('0x1')]={'name':{'type':Sequelize[_0x6ad8('0x2')],'allowNull':![],'unique':_0x6ad8('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x5'),_0x6ad8('0x6'),_0x6ad8('0x7')),'allowNull':![],'defaultValue':_0x6ad8('0x5')},'context':{'type':Sequelize[_0x6ad8('0x2')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x8'),_0x6ad8('0x9'),_0x6ad8('0xa'),'ALLOWED',_0x6ad8('0xb'),'PROHIB_PASSED_SCREEN',_0x6ad8('0xc'),_0x6ad8('0xd'))},'deny':{'type':Sequelize[_0x6ad8('0x2')]},'permit':{'type':Sequelize[_0x6ad8('0x2')]},'secret':{'type':Sequelize[_0x6ad8('0x2')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x6ad8('0x2')]},'transport':{'type':Sequelize[_0x6ad8('0x2')],'defaultValue':_0x6ad8('0xe'),'set':function(_0x31c0fd){this[_0x6ad8('0xf')](_0x6ad8('0x10'),_0x31c0fd?_0x31c0fd[_0x6ad8('0x11')](','):null);},'get':function(){return this[_0x6ad8('0x12')]('transport')?this['getDataValue'](_0x6ad8('0x10'))[_0x6ad8('0x13')](','):null;},'comment':_0x6ad8('0x14')},'dtmfmode':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x15'),_0x6ad8('0x16'),_0x6ad8('0x17'),'inband',_0x6ad8('0x18')),'defaultValue':_0x6ad8('0x15')},'directmedia':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no','nonat',_0x6ad8('0x1a'),_0x6ad8('0x1b')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x6ad8('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x6ad8('0x1c'),'set':function(_0x1f4edf){this[_0x6ad8('0xf')](_0x6ad8('0x1d'),_0x1f4edf?_0x1f4edf[_0x6ad8('0x11')](','):null);},'get':function(){return this['getDataValue'](_0x6ad8('0x1d'))?this[_0x6ad8('0x12')](_0x6ad8('0x1d'))[_0x6ad8('0x13')](','):null;},'comment':_0x6ad8('0x1e')},'callgroup':{'type':Sequelize[_0x6ad8('0x2')]},'namedcallgroup':{'type':Sequelize[_0x6ad8('0x2')]},'pickupgroup':{'type':Sequelize[_0x6ad8('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x6ad8('0x2')]},'language':{'type':Sequelize[_0x6ad8('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0x6ad8('0x2')],'defaultValue':_0x6ad8('0x1f')},'allow':{'type':Sequelize[_0x6ad8('0x2')],'allowNull':![],'defaultValue':_0x6ad8('0x20'),'set':function(_0x133947){this[_0x6ad8('0xf')]('allow',_0x133947?_0x133947[_0x6ad8('0x11')](';'):_0x6ad8('0x20'));},'get':function(){return this['getDataValue'](_0x6ad8('0x21'))?this['getDataValue'](_0x6ad8('0x21'))[_0x6ad8('0x13')](';'):null;},'comment':_0x6ad8('0x22')},'autoframing':{'type':Sequelize['ENUM'](_0x6ad8('0x19'),'no')},'insecure':{'type':Sequelize[_0x6ad8('0x2')],'defaultValue':_0x6ad8('0x23'),'set':function(_0x51edf2){this[_0x6ad8('0xf')](_0x6ad8('0x24'),_0x51edf2?_0x51edf2[_0x6ad8('0x11')](','):null);},'get':function(){return this[_0x6ad8('0x12')](_0x6ad8('0x24'))?this['getDataValue'](_0x6ad8('0x24'))[_0x6ad8('0x13')](','):null;},'comment':_0x6ad8('0x25')},'trustrpid':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x6ad8('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no',_0x6ad8('0x26'))},'promiscredir':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no')},'useclientcode':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no')},'accountcode':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'setvar':{'type':Sequelize[_0x6ad8('0x2')]},'callerid':{'type':Sequelize[_0x6ad8('0x2')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize['ENUM'](_0x6ad8('0x19'),'no'),'defaultValue':_0x6ad8('0x19')},'busylevel':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'allowoverlap':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no')},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no')},'allowtransfer':{'type':Sequelize[_0x6ad8('0x4')]('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x6ad8('0x19'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x6ad8('0x2')]},'videosupport':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no',_0x6ad8('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x6ad8('0x4')]('yes','no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM'](_0x6ad8('0x29'),_0x6ad8('0x2a'),_0x6ad8('0x2b'))},'session_expires':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'session_minse':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'session_refresher':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x2c'),_0x6ad8('0x2d')),'defaultValue':_0x6ad8('0x2d')},'t38pt_usertpsource':{'type':Sequelize[_0x6ad8('0x2')]},'regexten':{'type':Sequelize[_0x6ad8('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x6ad8('0x19'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'defaultip':{'type':Sequelize[_0x6ad8('0x2')]},'defaultuser':{'type':Sequelize[_0x6ad8('0x2')]},'rtptimeout':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'sendrpid':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6ad8('0x2')]},'callbackextension':{'type':Sequelize[_0x6ad8('0x2')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'qualifyfreq':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'contactpermit':{'type':Sequelize[_0x6ad8('0x2')]},'contactdeny':{'type':Sequelize[_0x6ad8('0x2')]},'contactacl':{'type':Sequelize[_0x6ad8('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x6ad8('0x2')]},'use_q850_reason':{'type':Sequelize[_0x6ad8('0x2')]},'maxforwards':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'encryption':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no')},'force_avp':{'type':Sequelize[_0x6ad8('0x4')]('yes','no')},'icesupport':{'type':Sequelize[_0x6ad8('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x6ad8('0x19'),'no',_0x6ad8('0x2e'),_0x6ad8('0x2f'))},'dtlsrekey':{'type':Sequelize[_0x6ad8('0x27')](0xb)},'dtlscertfile':{'type':Sequelize[_0x6ad8('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x6ad8('0x2')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x30'),'passive',_0x6ad8('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x6ad8('0x4')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x6ad8('0x2')]},'recordofffeature':{'type':Sequelize[_0x6ad8('0x2')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x6ad8('0x4')](_0x6ad8('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0x6ad8('0x4')]('yes','no')},'vmexten':{'type':Sequelize[_0x6ad8('0x2')]},'mohinterpret':{'type':Sequelize[_0x6ad8('0x2')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0x6ad8('0x2')]},'description':{'type':Sequelize[_0x6ad8('0x2')]},'host':{'type':Sequelize[_0x6ad8('0x2')],'defaultValue':_0x6ad8('0x32')},'canreinvite':{'type':Sequelize['ENUM'](_0x6ad8('0x19'),'no',_0x6ad8('0x33'),'update','update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x6ad8('0x2')]},'otherFields':{'type':Sequelize[_0x6ad8('0x2')]},'active':{'type':Sequelize[_0x6ad8('0x34')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x6ad8('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 834a419..84c7250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','include','find','clone','params','omit','updatedAt','body','createdAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','autoAssociation','findAll','readFileSync','writeFileSync','Reload','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','rawAttributes','fieldName','type'];(function(_0x114fa2,_0x18e427){var _0x1b8a07=function(_0x46cb38){while(--_0x46cb38){_0x114fa2['push'](_0x114fa2['shift']());}};_0x1b8a07(++_0x18e427);}(_0x9a19,0x114));var _0x99a1=function(_0x3c0dcc,_0x18c419){_0x3c0dcc=_0x3c0dcc-0x0;var _0x1a224c=_0x9a19[_0x3c0dcc];return _0x1a224c;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];var jayson=require(_0x99a1('0x19'));var client=jayson[_0x99a1('0x1a')][_0x99a1('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xf713b9,_0x40c19c,_0x3a865c,_0x47815e){return new BPromise(function(_0xe1a1f,_0x3c9ef4){var _0x39ee55=_0x47815e||client;return _0x39ee55['request'](_0xf713b9,_0x3a865c)[_0x99a1('0x1c')](function(_0x3e45d4){logger[_0x99a1('0x1d')](_0x99a1('0x1e'),_0x40c19c,_0x99a1('0x1f'));logger[_0x99a1('0x20')](_0x99a1('0x21'),_0x40c19c,'request\x20sent',JSON['stringify'](_0x3e45d4));if(_0x3e45d4[_0x99a1('0x22')]){if(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x23')]===0x1f4){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);return _0x3c9ef4(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);}logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4['error'][_0x99a1('0x24')]);return _0xe1a1f(_0x3e45d4[_0x99a1('0x22')]['message']);}else{logger[_0x99a1('0x1d')]('Trunk,\x20%s,\x20%s',_0x40c19c,_0x99a1('0x1f'));_0xe1a1f(_0x3e45d4[_0x99a1('0x25')][_0x99a1('0x24')]);}})[_0x99a1('0x26')](function(_0x5a88c6){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x5a88c6);_0x3c9ef4(_0x5a88c6);});});}function respondWithStatusCode(_0x483c17,_0x44df2d){_0x44df2d=_0x44df2d||0xcc;return function(_0x5b5dfa){if(_0x5b5dfa){return _0x483c17[_0x99a1('0x27')](_0x44df2d);}return _0x483c17[_0x99a1('0x28')](_0x44df2d)[_0x99a1('0x29')]();};}function respondWithResult(_0xdaa27d,_0x3c813){_0x3c813=_0x3c813||0xc8;return function(_0x491341){if(_0x491341){return _0xdaa27d['status'](_0x3c813)[_0x99a1('0x2a')](_0x491341);}};}function respondWithFilteredResult(_0x5dabd9,_0x5dc733){return function(_0xafea84){if(_0xafea84){var _0x440879=typeof _0x5dc733[_0x99a1('0x2b')]===_0x99a1('0x2c')&&typeof _0x5dc733[_0x99a1('0x2d')]===_0x99a1('0x2c');var _0x183037=_0xafea84['count'];var _0xf41b0d=_0x440879?0x0:_0x5dc733['offset'];var _0x255197=_0x440879?_0xafea84[_0x99a1('0x2e')]:_0x5dc733[_0x99a1('0x2b')]+_0x5dc733['limit'];var _0x371edf;if(_0x255197>=_0x183037){_0x255197=_0x183037;_0x371edf=0xc8;}else{_0x371edf=0xce;}_0x5dabd9[_0x99a1('0x28')](_0x371edf);return _0x5dabd9['set'](_0x99a1('0x2f'),_0xf41b0d+'-'+_0x255197+'/'+_0x183037)[_0x99a1('0x2a')](_0xafea84);}return null;};}function patchUpdates(_0x36aa34){return function(_0x303d1e){try{jsonpatch[_0x99a1('0x30')](_0x303d1e,_0x36aa34,!![]);}catch(_0x969f6e){return BPromise[_0x99a1('0x31')](_0x969f6e);}return _0x303d1e[_0x99a1('0x32')]();};}function saveUpdates(_0x52da8d,_0x4960e4){return function(_0x3fa342){if(_0x3fa342){return _0x3fa342['update'](_0x52da8d)[_0x99a1('0x1c')](function(_0x400581){return _0x400581;});}return null;};}function removeEntity(_0x5b1a79,_0xa5972b){return function(_0x3503d5){if(_0x3503d5){return _0x3503d5[_0x99a1('0x33')]()[_0x99a1('0x1c')](function(){var _0x13f4db=_0x3503d5[_0x99a1('0x34')]({'plain':!![]});var _0x3081cd=_0x99a1('0x35');return db[_0x99a1('0x36')][_0x99a1('0x33')]({'where':{'type':_0x3081cd,'resourceId':_0x13f4db['id']}})[_0x99a1('0x1c')](function(){return _0x3503d5;});})[_0x99a1('0x1c')](function(){_0x5b1a79[_0x99a1('0x28')](0xcc)[_0x99a1('0x29')]();});}};}function handleEntityNotFound(_0x55005e,_0x53fed5){return function(_0x46e3f2){if(!_0x46e3f2){_0x55005e[_0x99a1('0x27')](0x194);}return _0x46e3f2;};}function handleError(_0x416a36,_0x4131e0){_0x4131e0=_0x4131e0||0x1f4;return function(_0x2690bd){logger[_0x99a1('0x22')](_0x2690bd[_0x99a1('0x37')]);if(_0x2690bd['name']){delete _0x2690bd[_0x99a1('0x38')];}_0x416a36[_0x99a1('0x28')](_0x4131e0)['send'](_0x2690bd);};}exports[_0x99a1('0x39')]=function(_0x2d328c,_0x391afa){var _0x3cd1a0={},_0x430cbc={},_0x399fd4={'count':0x0,'rows':[]};var _0x30e8a9=_[_0x99a1('0x3a')](db[_0x99a1('0x3b')][_0x99a1('0x3c')],function(_0x1da3e7){return{'name':_0x1da3e7[_0x99a1('0x3d')],'type':_0x1da3e7[_0x99a1('0x3e')]['key']};});_0x430cbc['model']=_['map'](_0x30e8a9,_0x99a1('0x38'));_0x430cbc[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x2d328c[_0x99a1('0x3f')]);_0x430cbc[_0x99a1('0x41')]=_['intersection'](_0x430cbc[_0x99a1('0x42')],_0x430cbc[_0x99a1('0x3f')]);_0x3cd1a0[_0x99a1('0x43')]=_['intersection'](_0x430cbc['model'],qs[_0x99a1('0x44')](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x3cd1a0['attributes']=_0x3cd1a0[_0x99a1('0x43')][_0x99a1('0x45')]?_0x3cd1a0[_0x99a1('0x43')]:_0x430cbc[_0x99a1('0x42')];if(!_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x46')](_0x99a1('0x47'))){_0x3cd1a0[_0x99a1('0x2d')]=qs[_0x99a1('0x2d')](_0x2d328c[_0x99a1('0x3f')]['limit']);_0x3cd1a0[_0x99a1('0x2b')]=qs[_0x99a1('0x2b')](_0x2d328c[_0x99a1('0x3f')]['offset']);}_0x3cd1a0[_0x99a1('0x48')]=qs['sort'](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x49')]);_0x3cd1a0[_0x99a1('0x4a')]=qs[_0x99a1('0x41')](_[_0x99a1('0x4b')](_0x2d328c[_0x99a1('0x3f')],_0x430cbc['filters']),_0x30e8a9);if(_0x2d328c[_0x99a1('0x3f')]['filter']){_0x3cd1a0[_0x99a1('0x4a')]=_[_0x99a1('0x4c')](_0x3cd1a0[_0x99a1('0x4a')],{'$or':_[_0x99a1('0x3a')](_0x30e8a9,function(_0x3a0b44){if(_0x3a0b44[_0x99a1('0x3e')]!==_0x99a1('0x4d')){var _0x3861b6={};_0x3861b6[_0x3a0b44[_0x99a1('0x38')]]={'$like':'%'+_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x4e')]+'%'};return _0x3861b6;}})});}_0x3cd1a0=_['merge']({},_0x3cd1a0,_0x2d328c[_0x99a1('0x4f')]);var _0x330e3b={'where':_0x3cd1a0['where']};return db[_0x99a1('0x3b')][_0x99a1('0x2e')](_0x330e3b)[_0x99a1('0x1c')](function(_0x2e377b){_0x399fd4[_0x99a1('0x2e')]=_0x2e377b;if(_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x50')]){_0x3cd1a0['include']=[{'all':!![]}];}return db[_0x99a1('0x3b')]['findAll'](_0x3cd1a0);})[_0x99a1('0x1c')](function(_0x269798){_0x399fd4['rows']=_0x269798;return _0x399fd4;})['then'](respondWithFilteredResult(_0x391afa,_0x3cd1a0))[_0x99a1('0x26')](handleError(_0x391afa,null));};exports[_0x99a1('0x51')]=function(_0x462c15,_0x4519fb){var _0xee2b1b={'raw':![],'where':{'id':_0x462c15['params']['id']}},_0x597836={};_0x597836['model']=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x597836[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x462c15[_0x99a1('0x3f')]);_0x597836[_0x99a1('0x41')]=_['intersection'](_0x597836[_0x99a1('0x42')],_0x597836[_0x99a1('0x3f')]);_0xee2b1b[_0x99a1('0x43')]=_['intersection'](_0x597836[_0x99a1('0x42')],qs['fields'](_0x462c15['query'][_0x99a1('0x44')]));_0xee2b1b[_0x99a1('0x43')]=_0xee2b1b[_0x99a1('0x43')][_0x99a1('0x45')]?_0xee2b1b[_0x99a1('0x43')]:_0x597836[_0x99a1('0x42')];if(_0x462c15[_0x99a1('0x3f')][_0x99a1('0x50')]){_0xee2b1b[_0x99a1('0x52')]=[{'all':!![]}];}_0xee2b1b=_['merge']({},_0xee2b1b,_0x462c15[_0x99a1('0x4f')]);return db['Trunk'][_0x99a1('0x53')](_0xee2b1b)[_0x99a1('0x1c')](handleEntityNotFound(_0x4519fb,null))['then'](respondWithResult(_0x4519fb,null))[_0x99a1('0x26')](handleError(_0x4519fb,null));};exports[_0x99a1('0x54')]=function(_0x469e10,_0x2b2d63){var _0x2800d5={'where':{'id':_0x469e10[_0x99a1('0x55')]['id']}},_0x1bff78={};_0x1bff78[_0x99a1('0x42')]=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x2800d5[_0x99a1('0x43')]=_['intersection'](_0x1bff78['model'],qs[_0x99a1('0x44')](_0x469e10[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x2800d5[_0x99a1('0x43')]=_0x2800d5[_0x99a1('0x43')]['length']?_0x2800d5[_0x99a1('0x43')]:_0x1bff78[_0x99a1('0x42')];if(_0x469e10['query'][_0x99a1('0x50')]){_0x2800d5[_0x99a1('0x52')]=[{'all':!![]}];}_0x2800d5=_[_0x99a1('0x4c')]({},_0x2800d5,_0x469e10[_0x99a1('0x4f')]);return db[_0x99a1('0x3b')]['find'](_0x2800d5)[_0x99a1('0x1c')](handleEntityNotFound(_0x2b2d63,null))[_0x99a1('0x1c')](function(_0x1bb1cb){if(_0x1bb1cb){var _0x22811f=_0x1bb1cb[_0x99a1('0x34')]({'plain':!![]});_0x22811f=qs[_0x99a1('0x56')](_0x22811f,['id','createdAt',_0x99a1('0x57')]);_0x469e10[_0x99a1('0x58')]=_['omit'](_0x469e10[_0x99a1('0x58')],['id',_0x99a1('0x59'),_0x99a1('0x57')]);return db[_0x99a1('0x3b')][_0x99a1('0x5a')](_['merge'](_0x22811f,_0x469e10[_0x99a1('0x58')]),{'include':_0x469e10['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x38ce3c){var _0x3f7c16=_0x469e10['user']['get']({'plain':!![]});if(!_0x3f7c16)throw new Error(_0x99a1('0x5b'));if(_0x3f7c16['role']===_0x99a1('0x5c')){var _0x263db3=_0x38ce3c[_0x99a1('0x34')]({'plain':!![]});var _0x180c1e='Trunks';return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x180c1e,'userProfileId':_0x3f7c16[_0x99a1('0x5e')]},'raw':!![]})['then'](function(_0x3a62c6){if(_0x3a62c6&&_0x3a62c6['autoAssociation']===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x263db3[_0x99a1('0x38')],'resourceId':_0x263db3['id'],'type':_0x3a62c6[_0x99a1('0x38')],'sectionId':_0x3a62c6['id']},{})[_0x99a1('0x1c')](function(){return _0x38ce3c;});}else{return _0x38ce3c;}})['catch'](function(_0x4d37f8){logger['error'](_0x99a1('0x5f'),_0x4d37f8);throw _0x4d37f8;});}return _0x38ce3c;});}})[_0x99a1('0x1c')](respondWithResult(_0x2b2d63,0xc9))['catch'](handleError(_0x2b2d63,null));};exports['create']=function(_0x1fe7af,_0x2f5587,_0x401c8f){var _0x509d4f;return db['Trunk'][_0x99a1('0x5a')](_0x1fe7af['body'],{'raw':!![]})[_0x99a1('0x1c')](function(_0x129690){_0x509d4f=_0x129690;return db[_0x99a1('0x3b')]['findAll']({'raw':!![]});})[_0x99a1('0x1c')](function(_0x28c7d8){var _0x4ac99e=fs['readFileSync'](path[_0x99a1('0x60')](config['root'],_0x99a1('0x61')),_0x99a1('0x62'));var _0x30a0a5=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x3d0ff6=ejs['render'](_0x4ac99e,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x65'),_0x3d0ff6);if(_0x509d4f[_0x99a1('0x66')]){var _0x1750d5=ejs[_0x99a1('0x67')](_0x30a0a5,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x68'),_0x1750d5);}})['then'](function(){return respondWithRpcPromise('Reload',_0x99a1('0x5a'),{'module':_0x99a1('0x69')});})[_0x99a1('0x1c')](function(){var _0x525969=_0x1fe7af[_0x99a1('0x5c')][_0x99a1('0x34')]({'plain':!![]});if(!_0x525969)throw new Error(_0x99a1('0x5b'));if(_0x525969[_0x99a1('0x6a')]===_0x99a1('0x5c')){var _0x4ae313=_0x509d4f[_0x99a1('0x34')]({'plain':!![]});return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x99a1('0x35'),'userProfileId':_0x525969[_0x99a1('0x5e')]},'raw':!![]})[_0x99a1('0x1c')](function(_0x5e42be){if(_0x5e42be&&_0x5e42be[_0x99a1('0x6b')]===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x4ae313[_0x99a1('0x38')],'resourceId':_0x4ae313['id'],'type':_0x5e42be[_0x99a1('0x38')],'sectionId':_0x5e42be['id']},{})['then'](function(){return _0x509d4f;});}else{return _0x509d4f;}})[_0x99a1('0x26')](function(_0x68c944){logger[_0x99a1('0x22')](_0x99a1('0x5f'),_0x68c944);throw _0x68c944;});}return _0x509d4f;})[_0x99a1('0x1c')](respondWithResult(_0x2f5587,0xc9))[_0x99a1('0x26')](handleError(_0x2f5587,null));};exports['update']=function(_0xaa953e,_0x33d96b,_0x4a5617){var _0x56716a;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0xaa953e['params']['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x33d96b,null))[_0x99a1('0x1c')](saveUpdates(_0xaa953e[_0x99a1('0x58')],null))[_0x99a1('0x1c')](function(_0x43156f){if(_0x43156f){_0x56716a=_0x43156f;return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});}})[_0x99a1('0x1c')](function(_0x4260d7){if(_0x4260d7){var _0x3e099c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],'server/files/templates/trunk.ejs'),_0x99a1('0x62'));var _0x5a9a7d=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0xbbbe26=ejs[_0x99a1('0x67')](_0x3e099c,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0xbbbe26);var _0x361ce6=ejs['render'](_0x5a9a7d,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x68'),_0x361ce6);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x70'),{'module':_0x99a1('0x69')});}return null;})[_0x99a1('0x1c')](function(_0x6dab29){if(_0x6dab29){return _0x56716a;}})[_0x99a1('0x1c')](respondWithResult(_0x33d96b,null))['catch'](handleError(_0x33d96b,null));};exports['destroy']=function(_0x51c289,_0x2dd29b,_0x353f25){var _0x53cdb3;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0x51c289[_0x99a1('0x55')]['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x2dd29b,null))['then'](removeEntity(_0x2dd29b,null))[_0x99a1('0x1c')](function(){return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});})[_0x99a1('0x1c')](function(_0x4e9fe9){var _0x24aa05=fs['readFileSync'](path['join'](config['root'],_0x99a1('0x61')),'utf8');var _0xb7744c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x444e43=ejs['render'](_0x24aa05,{'trunks':_0x4e9fe9});var _0x4fcd65=ejs[_0x99a1('0x67')](_0xb7744c,{'trunks':_0x4e9fe9});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0x444e43);fs['writeFileSync'](_0x99a1('0x68'),_0x4fcd65);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x33'),{'module':'chan_sip.so'});})[_0x99a1('0x26')](handleError(_0x2dd29b,null));};
\ No newline at end of file
+var _0x4b84=['omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','create','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Trunk,\x20%s,\x20%s','request\x20sent','result','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','Trunks','UserProfileResource','stack','name','send','index','Trunk','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','length','find','includeAll','get'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x4b84,0x1cc));var _0x44b8=function(_0x195577,_0x5de53a){_0x195577=_0x195577-0x0;var _0x13c367=_0x4b84[_0x195577];return _0x13c367;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];var jayson=require(_0x44b8('0x14'));var client=jayson['client'][_0x44b8('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x490bc6,_0x833ea3,_0x18d642,_0x4df670){return new BPromise(function(_0x63e8f6,_0x4be54c){var _0x54fa95=_0x4df670||client;return _0x54fa95[_0x44b8('0x16')](_0x490bc6,_0x18d642)[_0x44b8('0x17')](function(_0x1722da){logger[_0x44b8('0x18')]('Trunk,\x20%s,\x20%s',_0x833ea3,'request\x20sent');logger['debug'](_0x44b8('0x19'),_0x833ea3,'request\x20sent',JSON[_0x44b8('0x1a')](_0x1722da));if(_0x1722da[_0x44b8('0x1b')]){if(_0x1722da['error'][_0x44b8('0x1c')]===0x1f4){logger[_0x44b8('0x1b')]('Trunk,\x20%s,\x20%s',_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x4be54c(_0x1722da['error'][_0x44b8('0x1d')]);}logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x63e8f6(_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);}else{logger[_0x44b8('0x18')](_0x44b8('0x1e'),_0x833ea3,_0x44b8('0x1f'));_0x63e8f6(_0x1722da[_0x44b8('0x20')][_0x44b8('0x1d')]);}})['catch'](function(_0x56549a){logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x56549a);_0x4be54c(_0x56549a);});});}function respondWithStatusCode(_0x1418db,_0x305a5c){_0x305a5c=_0x305a5c||0xcc;return function(_0x51a34a){if(_0x51a34a){return _0x1418db[_0x44b8('0x21')](_0x305a5c);}return _0x1418db['status'](_0x305a5c)[_0x44b8('0x22')]();};}function respondWithResult(_0x228c81,_0x25a0c1){_0x25a0c1=_0x25a0c1||0xc8;return function(_0x47689e){if(_0x47689e){return _0x228c81[_0x44b8('0x23')](_0x25a0c1)['json'](_0x47689e);}};}function respondWithFilteredResult(_0x474f01,_0x502acf){return function(_0x41d673){if(_0x41d673){var _0x350482=typeof _0x502acf['offset']===_0x44b8('0x24')&&typeof _0x502acf[_0x44b8('0x25')]===_0x44b8('0x24');var _0x59c1bf=_0x41d673[_0x44b8('0x26')];var _0x242342=_0x350482?0x0:_0x502acf['offset'];var _0x2e0174=_0x350482?_0x41d673['count']:_0x502acf[_0x44b8('0x27')]+_0x502acf['limit'];var _0x559f0b;if(_0x2e0174>=_0x59c1bf){_0x2e0174=_0x59c1bf;_0x559f0b=0xc8;}else{_0x559f0b=0xce;}_0x474f01['status'](_0x559f0b);return _0x474f01[_0x44b8('0x28')](_0x44b8('0x29'),_0x242342+'-'+_0x2e0174+'/'+_0x59c1bf)[_0x44b8('0x2a')](_0x41d673);}return null;};}function patchUpdates(_0x1bd1be){return function(_0x38cd17){try{jsonpatch[_0x44b8('0x2b')](_0x38cd17,_0x1bd1be,!![]);}catch(_0x2cf205){return BPromise[_0x44b8('0x2c')](_0x2cf205);}return _0x38cd17[_0x44b8('0x2d')]();};}function saveUpdates(_0x28f918,_0x5e1129){return function(_0x417d81){if(_0x417d81){return _0x417d81[_0x44b8('0x2e')](_0x28f918)['then'](function(_0x261ff2){return _0x261ff2;});}return null;};}function removeEntity(_0x538db7,_0x212983){return function(_0x1652cb){if(_0x1652cb){return _0x1652cb[_0x44b8('0x2f')]()[_0x44b8('0x17')](function(){var _0x1b63a7=_0x1652cb['get']({'plain':!![]});var _0x16b706=_0x44b8('0x30');return db[_0x44b8('0x31')][_0x44b8('0x2f')]({'where':{'type':_0x16b706,'resourceId':_0x1b63a7['id']}})[_0x44b8('0x17')](function(){return _0x1652cb;});})['then'](function(){_0x538db7[_0x44b8('0x23')](0xcc)[_0x44b8('0x22')]();});}};}function handleEntityNotFound(_0x1a30fc,_0x3e93af){return function(_0x140a79){if(!_0x140a79){_0x1a30fc[_0x44b8('0x21')](0x194);}return _0x140a79;};}function handleError(_0x2e8b88,_0x14a9d7){_0x14a9d7=_0x14a9d7||0x1f4;return function(_0x28c10d){logger[_0x44b8('0x1b')](_0x28c10d[_0x44b8('0x32')]);if(_0x28c10d[_0x44b8('0x33')]){delete _0x28c10d[_0x44b8('0x33')];}_0x2e8b88[_0x44b8('0x23')](_0x14a9d7)[_0x44b8('0x34')](_0x28c10d);};}exports[_0x44b8('0x35')]=function(_0x323c50,_0xeff999){var _0x28faa9={},_0x3984f8={},_0x2c02d6={'count':0x0,'rows':[]};var _0x282345=_['map'](db[_0x44b8('0x36')][_0x44b8('0x37')],function(_0x4fcfa0){return{'name':_0x4fcfa0[_0x44b8('0x38')],'type':_0x4fcfa0[_0x44b8('0x39')][_0x44b8('0x3a')]};});_0x3984f8[_0x44b8('0x3b')]=_['map'](_0x282345,_0x44b8('0x33'));_0x3984f8[_0x44b8('0x3c')]=_[_0x44b8('0x3d')](_0x323c50[_0x44b8('0x3c')]);_0x3984f8[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],_0x3984f8[_0x44b8('0x3c')]);_0x28faa9[_0x44b8('0x40')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x28faa9[_0x44b8('0x40')]=_0x28faa9[_0x44b8('0x40')]['length']?_0x28faa9[_0x44b8('0x40')]:_0x3984f8[_0x44b8('0x3b')];if(!_0x323c50[_0x44b8('0x3c')]['hasOwnProperty'](_0x44b8('0x42'))){_0x28faa9[_0x44b8('0x25')]=qs[_0x44b8('0x25')](_0x323c50['query'][_0x44b8('0x25')]);_0x28faa9[_0x44b8('0x27')]=qs[_0x44b8('0x27')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x27')]);}_0x28faa9['order']=qs['sort'](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x43')]);_0x28faa9[_0x44b8('0x44')]=qs[_0x44b8('0x3e')](_[_0x44b8('0x45')](_0x323c50[_0x44b8('0x3c')],_0x3984f8[_0x44b8('0x3e')]),_0x282345);if(_0x323c50[_0x44b8('0x3c')][_0x44b8('0x46')]){_0x28faa9[_0x44b8('0x44')]=_[_0x44b8('0x47')](_0x28faa9[_0x44b8('0x44')],{'$or':_[_0x44b8('0x48')](_0x282345,function(_0x1236c7){if(_0x1236c7[_0x44b8('0x39')]!==_0x44b8('0x49')){var _0xce06dc={};_0xce06dc[_0x1236c7[_0x44b8('0x33')]]={'$like':'%'+_0x323c50[_0x44b8('0x3c')]['filter']+'%'};return _0xce06dc;}})});}_0x28faa9=_['merge']({},_0x28faa9,_0x323c50[_0x44b8('0x4a')]);var _0x1df74b={'where':_0x28faa9[_0x44b8('0x44')]};return db[_0x44b8('0x36')][_0x44b8('0x26')](_0x1df74b)[_0x44b8('0x17')](function(_0x411ed6){_0x2c02d6['count']=_0x411ed6;if(_0x323c50[_0x44b8('0x3c')]['includeAll']){_0x28faa9[_0x44b8('0x4b')]=[{'all':!![]}];}return db[_0x44b8('0x36')][_0x44b8('0x4c')](_0x28faa9);})[_0x44b8('0x17')](function(_0x103d57){_0x2c02d6[_0x44b8('0x4d')]=_0x103d57;return _0x2c02d6;})['then'](respondWithFilteredResult(_0xeff999,_0x28faa9))[_0x44b8('0x4e')](handleError(_0xeff999,null));};exports[_0x44b8('0x4f')]=function(_0x10602c,_0x25d266){var _0x4ccc77={'raw':![],'where':{'id':_0x10602c[_0x44b8('0x50')]['id']}},_0x4e4ed1={};_0x4e4ed1[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')][_0x44b8('0x37')]);_0x4e4ed1['query']=_[_0x44b8('0x3d')](_0x10602c[_0x44b8('0x3c')]);_0x4e4ed1[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x4e4ed1[_0x44b8('0x3b')],_0x4e4ed1['query']);_0x4ccc77['attributes']=_[_0x44b8('0x3f')](_0x4e4ed1['model'],qs[_0x44b8('0x41')](_0x10602c['query'][_0x44b8('0x41')]));_0x4ccc77[_0x44b8('0x40')]=_0x4ccc77[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4ccc77[_0x44b8('0x40')]:_0x4e4ed1[_0x44b8('0x3b')];if(_0x10602c[_0x44b8('0x3c')]['includeAll']){_0x4ccc77[_0x44b8('0x4b')]=[{'all':!![]}];}_0x4ccc77=_[_0x44b8('0x47')]({},_0x4ccc77,_0x10602c[_0x44b8('0x4a')]);return db['Trunk'][_0x44b8('0x52')](_0x4ccc77)[_0x44b8('0x17')](handleEntityNotFound(_0x25d266,null))[_0x44b8('0x17')](respondWithResult(_0x25d266,null))[_0x44b8('0x4e')](handleError(_0x25d266,null));};exports['clone']=function(_0x399d6b,_0x308f7b){var _0x4a6e55={'where':{'id':_0x399d6b[_0x44b8('0x50')]['id']}},_0x3de425={};_0x3de425[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')]['rawAttributes']);_0x4a6e55['attributes']=_[_0x44b8('0x3f')](_0x3de425[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x4a6e55[_0x44b8('0x40')]=_0x4a6e55[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4a6e55[_0x44b8('0x40')]:_0x3de425[_0x44b8('0x3b')];if(_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]){_0x4a6e55['include']=[{'all':!![]}];}_0x4a6e55=_[_0x44b8('0x47')]({},_0x4a6e55,_0x399d6b[_0x44b8('0x4a')]);return db[_0x44b8('0x36')][_0x44b8('0x52')](_0x4a6e55)[_0x44b8('0x17')](handleEntityNotFound(_0x308f7b,null))[_0x44b8('0x17')](function(_0x426a6a){if(_0x426a6a){var _0x172ff3=_0x426a6a[_0x44b8('0x54')]({'plain':!![]});_0x172ff3=qs[_0x44b8('0x55')](_0x172ff3,['id',_0x44b8('0x56'),_0x44b8('0x57')]);_0x399d6b[_0x44b8('0x58')]=_[_0x44b8('0x55')](_0x399d6b[_0x44b8('0x58')],['id',_0x44b8('0x56'),_0x44b8('0x57')]);return db[_0x44b8('0x36')]['create'](_[_0x44b8('0x47')](_0x172ff3,_0x399d6b[_0x44b8('0x58')]),{'include':_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]?[{'all':!![]}]:undefined})[_0x44b8('0x17')](function(_0x29ed5d){var _0x2ecf65=_0x399d6b['user'][_0x44b8('0x54')]({'plain':!![]});if(!_0x2ecf65)throw new Error(_0x44b8('0x59'));if(_0x2ecf65['role']===_0x44b8('0x5a')){var _0x3354bd=_0x29ed5d['get']({'plain':!![]});var _0x37e42e=_0x44b8('0x30');return db[_0x44b8('0x5b')]['find']({'where':{'name':_0x37e42e,'userProfileId':_0x2ecf65[_0x44b8('0x5c')]},'raw':!![]})['then'](function(_0x36cdd8){if(_0x36cdd8&&_0x36cdd8['autoAssociation']===0x0){return db[_0x44b8('0x31')][_0x44b8('0x5d')]({'name':_0x3354bd[_0x44b8('0x33')],'resourceId':_0x3354bd['id'],'type':_0x36cdd8[_0x44b8('0x33')],'sectionId':_0x36cdd8['id']},{})[_0x44b8('0x17')](function(){return _0x29ed5d;});}else{return _0x29ed5d;}})[_0x44b8('0x4e')](function(_0x4c7edd){logger[_0x44b8('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c7edd);throw _0x4c7edd;});}return _0x29ed5d;});}})[_0x44b8('0x17')](respondWithResult(_0x308f7b,0xc9))[_0x44b8('0x4e')](handleError(_0x308f7b,null));};exports['create']=function(_0x3f9438,_0x1ee26b,_0x1cf31f){var _0x30d60f;return db[_0x44b8('0x36')][_0x44b8('0x5d')](_0x3f9438[_0x44b8('0x58')],{'raw':!![]})[_0x44b8('0x17')](function(_0x3f9102){_0x30d60f=_0x3f9102;return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0x52381a){var _0xd20d0=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],_0x44b8('0x60')),_0x44b8('0x61'));var _0x5bff09=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],_0x44b8('0x63')),_0x44b8('0x61'));var _0x59060b=ejs[_0x44b8('0x64')](_0xd20d0,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x59060b);if(_0x30d60f[_0x44b8('0x67')]){var _0x2e02d7=ejs[_0x44b8('0x64')](_0x5bff09,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x2e02d7);}})['then'](function(){return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x5d'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x17')](function(){var _0x5b26e8=_0x3f9438['user']['get']({'plain':!![]});if(!_0x5b26e8)throw new Error(_0x44b8('0x59'));if(_0x5b26e8[_0x44b8('0x6b')]===_0x44b8('0x5a')){var _0x46e20f=_0x30d60f[_0x44b8('0x54')]({'plain':!![]});return db['UserProfileSection'][_0x44b8('0x52')]({'where':{'name':'Trunks','userProfileId':_0x5b26e8[_0x44b8('0x5c')]},'raw':!![]})[_0x44b8('0x17')](function(_0xea2c3e){if(_0xea2c3e&&_0xea2c3e['autoAssociation']===0x0){return db['UserProfileResource'][_0x44b8('0x5d')]({'name':_0x46e20f[_0x44b8('0x33')],'resourceId':_0x46e20f['id'],'type':_0xea2c3e[_0x44b8('0x33')],'sectionId':_0xea2c3e['id']},{})['then'](function(){return _0x30d60f;});}else{return _0x30d60f;}})[_0x44b8('0x4e')](function(_0x36f217){logger[_0x44b8('0x1b')](_0x44b8('0x6c'),_0x36f217);throw _0x36f217;});}return _0x30d60f;})[_0x44b8('0x17')](respondWithResult(_0x1ee26b,0xc9))['catch'](handleError(_0x1ee26b,null));};exports[_0x44b8('0x2e')]=function(_0x1888f8,_0xbbdab9,_0x2a8ccc){var _0x220f1b;return db['Trunk'][_0x44b8('0x52')]({'where':{'id':_0x1888f8[_0x44b8('0x50')]['id']}})[_0x44b8('0x17')](handleEntityNotFound(_0xbbdab9,null))[_0x44b8('0x17')](saveUpdates(_0x1888f8[_0x44b8('0x58')],null))[_0x44b8('0x17')](function(_0x1c7ef2){if(_0x1c7ef2){_0x220f1b=_0x1c7ef2;return db['Trunk'][_0x44b8('0x4c')]({'raw':!![]});}})[_0x44b8('0x17')](function(_0x4c3fea){if(_0x4c3fea){var _0x3bb7d8=fs[_0x44b8('0x5e')](path['join'](config[_0x44b8('0x62')],'server/files/templates/trunk.ejs'),'utf8');var _0x31d3b6=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x36334a=ejs[_0x44b8('0x64')](_0x3bb7d8,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x36334a);var _0x1a5621=ejs[_0x44b8('0x64')](_0x31d3b6,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x1a5621);return respondWithRpcPromise('Reload',_0x44b8('0x2e'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x55f4e4){if(_0x55f4e4){return _0x220f1b;}})[_0x44b8('0x17')](respondWithResult(_0xbbdab9,null))['catch'](handleError(_0xbbdab9,null));};exports[_0x44b8('0x2f')]=function(_0x1e37fd,_0x268e1e,_0x306793){var _0x3a9780;return db[_0x44b8('0x36')][_0x44b8('0x52')]({'where':{'id':_0x1e37fd[_0x44b8('0x50')]['id']}})['then'](handleEntityNotFound(_0x268e1e,null))[_0x44b8('0x17')](removeEntity(_0x268e1e,null))[_0x44b8('0x17')](function(){return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0xee44b3){var _0x10034d=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/trunk.ejs'),_0x44b8('0x61'));var _0x553aa9=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],'server/files/templates/registry.ejs'),'utf8');var _0x4b22e7=ejs[_0x44b8('0x64')](_0x10034d,{'trunks':_0xee44b3});var _0x4860af=ejs[_0x44b8('0x64')](_0x553aa9,{'trunks':_0xee44b3});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x4b22e7);fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x4860af);return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x2f'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x4e')](handleError(_0x268e1e,null));};
\ No newline at end of file
index 7b9bdc5..3069731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa13d=['Trunk','tools_trunks','lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports'];(function(_0x25444a,_0x476ca6){var _0x20fe0b=function(_0x4ba279){while(--_0x4ba279){_0x25444a['push'](_0x25444a['shift']());}};_0x20fe0b(++_0x476ca6);}(_0xa13d,0x124));var _0xda13=function(_0x2061e4,_0x30c10f){_0x2061e4=_0x2061e4-0x0;var _0x4cd9ca=_0xa13d[_0x2061e4];return _0x4cd9ca;};'use strict';var _=require(_0xda13('0x0'));var util=require('util');var logger=require(_0xda13('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xda13('0x2'));var fs=require('fs');var path=require(_0xda13('0x3'));var rimraf=require(_0xda13('0x4'));var config=require(_0xda13('0x5'));var attributes=require(_0xda13('0x6'));module[_0xda13('0x7')]=function(_0x3281c3,_0x5e0cfc){return _0x3281c3['define'](_0xda13('0x8'),attributes,{'tableName':_0xda13('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8af5=['Trunk','tools_trunks','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports'];(function(_0x4b2345,_0x5d1200){var _0x1c329a=function(_0x135167){while(--_0x135167){_0x4b2345['push'](_0x4b2345['shift']());}};_0x1c329a(++_0x5d1200);}(_0x8af5,0x147));var _0x58af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8af5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x58af('0x0'));var util=require('util');var logger=require(_0x58af('0x1'))(_0x58af('0x2'));var moment=require(_0x58af('0x3'));var BPromise=require(_0x58af('0x4'));var rp=require(_0x58af('0x5'));var fs=require('fs');var path=require(_0x58af('0x6'));var rimraf=require(_0x58af('0x7'));var config=require(_0x58af('0x8'));var attributes=require(_0x58af('0x9'));module[_0x58af('0xa')]=function(_0x2b4e63,_0x266709){return _0x2b4e63['define'](_0x58af('0xb'),attributes,{'tableName':_0x58af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b84735c..0825c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3403=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetTrunk','Trunk','options','raw','where','attributes','limit','include','map','model','stringify','find','ShowTrunk','lodash','util','moment','bluebird','randomstring'];(function(_0x1f6a60,_0x1465de){var _0x526310=function(_0x18fef2){while(--_0x18fef2){_0x1f6a60['push'](_0x1f6a60['shift']());}};_0x526310(++_0x1465de);}(_0x3403,0x136));var _0x3340=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x3403[_0x29d94e];return _0x106237;};'use strict';var _=require(_0x3340('0x0'));var util=require(_0x3340('0x1'));var moment=require(_0x3340('0x2'));var BPromise=require(_0x3340('0x3'));var rs=require(_0x3340('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3340('0x5'))['db'];var utils=require(_0x3340('0x6'));var logger=require(_0x3340('0x7'))('rpc');var config=require(_0x3340('0x8'));var jayson=require(_0x3340('0x9'));var client=jayson[_0x3340('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x218e20,_0x580f36,_0x1f531b){return new BPromise(function(_0x54ca59,_0x3e46b6){return client[_0x3340('0xb')](_0x218e20,_0x1f531b)[_0x3340('0xc')](function(_0x172e55){logger[_0x3340('0xd')](_0x3340('0xe'),_0x580f36,_0x3340('0xf'));logger[_0x3340('0x10')](_0x3340('0x11'),_0x580f36,_0x3340('0xf'),JSON['stringify'](_0x172e55));if(_0x172e55[_0x3340('0x12')]){if(_0x172e55[_0x3340('0x12')][_0x3340('0x13')]===0x1f4){logger[_0x3340('0x12')]('Trunk,\x20%s,\x20%s',_0x580f36,_0x172e55[_0x3340('0x12')][_0x3340('0x14')]);return _0x3e46b6(_0x172e55[_0x3340('0x12')]['message']);}logger[_0x3340('0x12')](_0x3340('0xe'),_0x580f36,_0x172e55['error'][_0x3340('0x14')]);return _0x54ca59(_0x172e55[_0x3340('0x12')][_0x3340('0x14')]);}else{logger[_0x3340('0xd')](_0x3340('0xe'),_0x580f36,'request\x20sent');_0x54ca59(_0x172e55['result'][_0x3340('0x14')]);}})[_0x3340('0x15')](function(_0xdd3f25){logger['error']('Trunk,\x20%s,\x20%s',_0x580f36,_0xdd3f25);_0x3e46b6(_0xdd3f25);});});}exports[_0x3340('0x16')]=function(_0x38a84e){var _0x27a4fc=this;return new Promise(function(_0x2355f4,_0x4fb1e6){return db[_0x3340('0x17')]['findAll']({'raw':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x19')]===undefined?!![]:![]:!![],'where':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1a')]||null:null,'attributes':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1b')]||null:null,'limit':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1c')]||null:null,'include':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1d')]?_[_0x3340('0x1e')](_0x38a84e[_0x3340('0x18')][_0x3340('0x1d')],function(_0x1fe605){return{'model':db[_0x1fe605[_0x3340('0x1f')]],'as':_0x1fe605['as'],'attributes':_0x1fe605[_0x3340('0x1b')],'include':_0x1fe605[_0x3340('0x1d')]?_[_0x3340('0x1e')](_0x1fe605['include'],function(_0x1c4724){return{'model':db[_0x1c4724[_0x3340('0x1f')]],'as':_0x1c4724['as'],'attributes':_0x1c4724[_0x3340('0x1b')],'include':_0x1c4724[_0x3340('0x1d')]?_['map'](_0x1c4724[_0x3340('0x1d')],function(_0x3ee06f){return{'model':db[_0x3ee06f['model']],'as':_0x3ee06f['as'],'attributes':_0x3ee06f[_0x3340('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3340('0xc')](function(_0x5a515c){logger[_0x3340('0xd')](_0x3340('0x16'),_0x38a84e);logger['debug'](_0x3340('0x16'),_0x38a84e,JSON[_0x3340('0x20')](_0x5a515c));_0x2355f4(_0x5a515c);})[_0x3340('0x15')](function(_0x46691b){logger['error'](_0x3340('0x16'),_0x46691b[_0x3340('0x14')],_0x38a84e);_0x4fb1e6(_0x27a4fc[_0x3340('0x12')](0x1f4,_0x46691b[_0x3340('0x14')]));});});};exports['ShowTrunk']=function(_0x11c9c7){var _0x51634c=this;return new Promise(function(_0x306064,_0x532113){return db['Trunk'][_0x3340('0x21')]({'raw':_0x11c9c7[_0x3340('0x18')]?_0x11c9c7['options'][_0x3340('0x19')]===undefined?!![]:![]:!![],'where':_0x11c9c7['options']?_0x11c9c7[_0x3340('0x18')][_0x3340('0x1a')]||null:null,'attributes':_0x11c9c7[_0x3340('0x18')]?_0x11c9c7[_0x3340('0x18')][_0x3340('0x1b')]||null:null,'include':_0x11c9c7[_0x3340('0x18')]?_0x11c9c7[_0x3340('0x18')]['include']?_[_0x3340('0x1e')](_0x11c9c7[_0x3340('0x18')][_0x3340('0x1d')],function(_0x3533a3){return{'model':db[_0x3533a3[_0x3340('0x1f')]],'as':_0x3533a3['as'],'attributes':_0x3533a3[_0x3340('0x1b')],'include':_0x3533a3['include']?_[_0x3340('0x1e')](_0x3533a3[_0x3340('0x1d')],function(_0x136c6a){return{'model':db[_0x136c6a[_0x3340('0x1f')]],'as':_0x136c6a['as'],'attributes':_0x136c6a[_0x3340('0x1b')],'include':_0x136c6a[_0x3340('0x1d')]?_[_0x3340('0x1e')](_0x136c6a[_0x3340('0x1d')],function(_0x3b5e8b){return{'model':db[_0x3b5e8b[_0x3340('0x1f')]],'as':_0x3b5e8b['as'],'attributes':_0x3b5e8b[_0x3340('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3340('0xc')](function(_0x370134){logger['info']('ShowTrunk',_0x11c9c7);logger[_0x3340('0x10')](_0x3340('0x22'),_0x11c9c7,JSON[_0x3340('0x20')](_0x370134));_0x306064(_0x370134);})[_0x3340('0x15')](function(_0x334b6f){logger[_0x3340('0x12')](_0x3340('0x22'),_0x334b6f['message'],_0x11c9c7);_0x532113(_0x51634c[_0x3340('0x12')](0x1f4,_0x334b6f[_0x3340('0x14')]));});});};
\ No newline at end of file
+var _0x0c32=['attributes','limit','include','map','model','GetTrunk','ShowTrunk','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','request\x20sent','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','catch','Trunk','options','raw','where'];(function(_0x106abf,_0x540cb9){var _0x171d95=function(_0x5808bb){while(--_0x5808bb){_0x106abf['push'](_0x106abf['shift']());}};_0x171d95(++_0x540cb9);}(_0x0c32,0x130));var _0x20c3=function(_0x1ab654,_0x17dd1b){_0x1ab654=_0x1ab654-0x0;var _0x13b5c7=_0x0c32[_0x1ab654];return _0x13b5c7;};'use strict';var _=require(_0x20c3('0x0'));var util=require(_0x20c3('0x1'));var moment=require(_0x20c3('0x2'));var BPromise=require(_0x20c3('0x3'));var rs=require(_0x20c3('0x4'));var fs=require('fs');var Redis=require(_0x20c3('0x5'));var db=require(_0x20c3('0x6'))['db'];var utils=require(_0x20c3('0x7'));var logger=require(_0x20c3('0x8'))(_0x20c3('0x9'));var config=require(_0x20c3('0xa'));var jayson=require(_0x20c3('0xb'));var client=jayson[_0x20c3('0xc')][_0x20c3('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4d069e,_0x58bdc4,_0x162df8){return new BPromise(function(_0x573b8d,_0x11703d){return client['request'](_0x4d069e,_0x162df8)[_0x20c3('0xe')](function(_0x245a31){logger[_0x20c3('0xf')]('Trunk,\x20%s,\x20%s',_0x58bdc4,'request\x20sent');logger[_0x20c3('0x10')]('Trunk,\x20%s,\x20%s,\x20%s',_0x58bdc4,_0x20c3('0x11'),JSON[_0x20c3('0x12')](_0x245a31));if(_0x245a31[_0x20c3('0x13')]){if(_0x245a31[_0x20c3('0x13')][_0x20c3('0x14')]===0x1f4){logger[_0x20c3('0x13')](_0x20c3('0x15'),_0x58bdc4,_0x245a31[_0x20c3('0x13')][_0x20c3('0x16')]);return _0x11703d(_0x245a31[_0x20c3('0x13')][_0x20c3('0x16')]);}logger[_0x20c3('0x13')](_0x20c3('0x15'),_0x58bdc4,_0x245a31[_0x20c3('0x13')]['message']);return _0x573b8d(_0x245a31[_0x20c3('0x13')][_0x20c3('0x16')]);}else{logger['info'](_0x20c3('0x15'),_0x58bdc4,_0x20c3('0x11'));_0x573b8d(_0x245a31[_0x20c3('0x17')][_0x20c3('0x16')]);}})[_0x20c3('0x18')](function(_0x1b6cf5){logger[_0x20c3('0x13')](_0x20c3('0x15'),_0x58bdc4,_0x1b6cf5);_0x11703d(_0x1b6cf5);});});}exports['GetTrunk']=function(_0x31514f){var _0x292d58=this;return new Promise(function(_0x2ee07d,_0x19be46){return db[_0x20c3('0x19')]['findAll']({'raw':_0x31514f[_0x20c3('0x1a')]?_0x31514f[_0x20c3('0x1a')][_0x20c3('0x1b')]===undefined?!![]:![]:!![],'where':_0x31514f[_0x20c3('0x1a')]?_0x31514f[_0x20c3('0x1a')][_0x20c3('0x1c')]||null:null,'attributes':_0x31514f[_0x20c3('0x1a')]?_0x31514f[_0x20c3('0x1a')][_0x20c3('0x1d')]||null:null,'limit':_0x31514f[_0x20c3('0x1a')]?_0x31514f[_0x20c3('0x1a')][_0x20c3('0x1e')]||null:null,'include':_0x31514f[_0x20c3('0x1a')]?_0x31514f[_0x20c3('0x1a')][_0x20c3('0x1f')]?_[_0x20c3('0x20')](_0x31514f[_0x20c3('0x1a')][_0x20c3('0x1f')],function(_0x367969){return{'model':db[_0x367969['model']],'as':_0x367969['as'],'attributes':_0x367969[_0x20c3('0x1d')],'include':_0x367969[_0x20c3('0x1f')]?_[_0x20c3('0x20')](_0x367969[_0x20c3('0x1f')],function(_0x570012){return{'model':db[_0x570012[_0x20c3('0x21')]],'as':_0x570012['as'],'attributes':_0x570012[_0x20c3('0x1d')],'include':_0x570012[_0x20c3('0x1f')]?_[_0x20c3('0x20')](_0x570012[_0x20c3('0x1f')],function(_0x23329b){return{'model':db[_0x23329b[_0x20c3('0x21')]],'as':_0x23329b['as'],'attributes':_0x23329b[_0x20c3('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x35444e){logger[_0x20c3('0xf')](_0x20c3('0x22'),_0x31514f);logger[_0x20c3('0x10')](_0x20c3('0x22'),_0x31514f,JSON[_0x20c3('0x12')](_0x35444e));_0x2ee07d(_0x35444e);})['catch'](function(_0x396403){logger[_0x20c3('0x13')]('GetTrunk',_0x396403[_0x20c3('0x16')],_0x31514f);_0x19be46(_0x292d58['error'](0x1f4,_0x396403[_0x20c3('0x16')]));});});};exports[_0x20c3('0x23')]=function(_0x6a2852){var _0xe8c2b=this;return new Promise(function(_0x4b716c,_0x5c06ac){return db[_0x20c3('0x19')][_0x20c3('0x24')]({'raw':_0x6a2852['options']?_0x6a2852[_0x20c3('0x1a')][_0x20c3('0x1b')]===undefined?!![]:![]:!![],'where':_0x6a2852[_0x20c3('0x1a')]?_0x6a2852[_0x20c3('0x1a')][_0x20c3('0x1c')]||null:null,'attributes':_0x6a2852[_0x20c3('0x1a')]?_0x6a2852[_0x20c3('0x1a')][_0x20c3('0x1d')]||null:null,'include':_0x6a2852[_0x20c3('0x1a')]?_0x6a2852[_0x20c3('0x1a')][_0x20c3('0x1f')]?_[_0x20c3('0x20')](_0x6a2852[_0x20c3('0x1a')][_0x20c3('0x1f')],function(_0x53c299){return{'model':db[_0x53c299['model']],'as':_0x53c299['as'],'attributes':_0x53c299[_0x20c3('0x1d')],'include':_0x53c299[_0x20c3('0x1f')]?_[_0x20c3('0x20')](_0x53c299[_0x20c3('0x1f')],function(_0x14eceb){return{'model':db[_0x14eceb[_0x20c3('0x21')]],'as':_0x14eceb['as'],'attributes':_0x14eceb['attributes'],'include':_0x14eceb[_0x20c3('0x1f')]?_[_0x20c3('0x20')](_0x14eceb[_0x20c3('0x1f')],function(_0x2015d4){return{'model':db[_0x2015d4['model']],'as':_0x2015d4['as'],'attributes':_0x2015d4[_0x20c3('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x20c3('0xe')](function(_0x29a93b){logger[_0x20c3('0xf')](_0x20c3('0x23'),_0x6a2852);logger[_0x20c3('0x10')]('ShowTrunk',_0x6a2852,JSON['stringify'](_0x29a93b));_0x4b716c(_0x29a93b);})[_0x20c3('0x18')](function(_0x300eee){logger[_0x20c3('0x13')](_0x20c3('0x23'),_0x300eee['message'],_0x6a2852);_0x5c06ac(_0xe8c2b[_0x20c3('0x13')](0x1f4,_0x300eee['message']));});});};
\ No newline at end of file
index 445e6c8..757ee00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab26=['Router','./user-setting.controller','put','isAuthenticated'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xab26,0x64));var _0x6ab2=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xab26[_0x122ef9];return _0x42fba0;};'use strict';var express=require('express');var router=express[_0x6ab2('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x6ab2('0x1'));router[_0x6ab2('0x2')]('/:id',auth[_0x6ab2('0x3')](),controller['update']);module['exports']=router;
\ No newline at end of file
+var _0xf177=['../../components/auth/service','./user-setting.controller','isAuthenticated','update','Router'];(function(_0x4e4ebe,_0x43ca60){var _0x270b54=function(_0x2ab515){while(--_0x2ab515){_0x4e4ebe['push'](_0x4e4ebe['shift']());}};_0x270b54(++_0x43ca60);}(_0xf177,0x112));var _0x7f17=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xf177[_0x4a9fb1];return _0x348672;};'use strict';var express=require('express');var router=express[_0x7f17('0x0')]();var auth=require(_0x7f17('0x1'));var controller=require(_0x7f17('0x2'));router['put']('/:id',auth[_0x7f17('0x3')](),controller[_0x7f17('0x4')]);module['exports']=router;
\ No newline at end of file
index 39a7a77..47c0c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec65=['TEXT','DATE','INTEGER','UserId','sequelize','error','warning','info','debug','exports','ENUM','BOOLEAN'];(function(_0x2fbce7,_0x2ce748){var _0x107c98=function(_0x48b9d2){while(--_0x48b9d2){_0x2fbce7['push'](_0x2fbce7['shift']());}};_0x107c98(++_0x2ce748);}(_0xec65,0xa0));var _0x5ec6=function(_0x39ea42,_0x3c1f50){_0x39ea42=_0x39ea42-0x0;var _0x33f5b7=_0xec65[_0x39ea42];return _0x33f5b7;};'use strict';var Sequelize=require(_0x5ec6('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x5ec6('0x1'),_0x5ec6('0x2'),_0x5ec6('0x3'),_0x5ec6('0x4')];module[_0x5ec6('0x5')]={'clientSideLoggingLevel':{'type':Sequelize[_0x5ec6('0x6')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x5ec6('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x5ec6('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x5ec6('0x8')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x5ec6('0x9')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x5ec6('0xa')],'unique':_0x5ec6('0xb')}};
\ No newline at end of file
+var _0xfd01=['INTEGER','UserId','sequelize','warning','debug','ENUM','error','BOOLEAN','DATE'];(function(_0x968c50,_0x1492ca){var _0x5c24ab=function(_0x1c5e7f){while(--_0x1c5e7f){_0x968c50['push'](_0x968c50['shift']());}};_0x5c24ab(++_0x1492ca);}(_0xfd01,0x185));var _0x1fd0=function(_0x3ba739,_0x92c074){_0x3ba739=_0x3ba739-0x0;var _0x582cec=_0xfd01[_0x3ba739];return _0x582cec;};'use strict';var Sequelize=require(_0x1fd0('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error',_0x1fd0('0x1'),'info',_0x1fd0('0x2')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0x1fd0('0x3')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x1fd0('0x4'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x1fd0('0x5')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x1fd0('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x1fd0('0x7')],'unique':_0x1fd0('0x8')}};
\ No newline at end of file
index 7cae025..ea083f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf296=['stack','name','send','role','admin','Unauthorized','Invalid\x20user\x20setting\x20id','find','params','catch','lodash','ioredis','api','socket.io-emitter','redis','register','defaults','localhost','status','json','update','then','error'];(function(_0x493fe7,_0x31f891){var _0xecac55=function(_0x29b9bd){while(--_0x29b9bd){_0x493fe7['push'](_0x493fe7['shift']());}};_0xecac55(++_0x31f891);}(_0xf296,0x94));var _0x6f29=function(_0x2fe959,_0x351d77){_0x2fe959=_0x2fe959-0x0;var _0x2f6ace=_0xf296[_0x2fe959];return _0x2f6ace;};'use strict';var _=require(_0x6f29('0x0'));var Redis=require(_0x6f29('0x1'));var logger=require('../../config/logger')(_0x6f29('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var socket=require(_0x6f29('0x3'))(new Redis(config[_0x6f29('0x4')]));require('./user-setting.socket')[_0x6f29('0x5')](socket);config[_0x6f29('0x4')]=_[_0x6f29('0x6')](config['redis'],{'host':_0x6f29('0x7'),'port':0x18eb});function respondWithResult(_0x295563,_0x584956){_0x584956=_0x584956||0xc8;return function(_0x8ea46){if(_0x8ea46){return _0x295563[_0x6f29('0x8')](_0x584956)[_0x6f29('0x9')](_0x8ea46);}};}function saveUpdates(_0x8d27ae){return function(_0x1ef7e1){if(_0x1ef7e1){return _0x1ef7e1[_0x6f29('0xa')](_0x8d27ae)[_0x6f29('0xb')](function(_0x533e59){return _0x533e59;});}return null;};}function handleEntityNotFound(_0x53db5d){return function(_0xbf45fd){if(!_0xbf45fd){_0x53db5d['sendStatus'](0x194);}return _0xbf45fd;};}function handleError(_0x5201d4,_0x29c69c){_0x29c69c=_0x29c69c||0x1f4;return function(_0x5e24b4){logger[_0x6f29('0xc')](_0x5e24b4[_0x6f29('0xd')]);if(_0x5e24b4[_0x6f29('0xe')]){delete _0x5e24b4['name'];}_0x5201d4[_0x6f29('0x8')](_0x29c69c)[_0x6f29('0xf')](_0x5e24b4);};}exports[_0x6f29('0xa')]=function(_0x1a50f2,_0x300182){if(_0x1a50f2['user'][_0x6f29('0x10')]!==_0x6f29('0x11'))throw new Error(_0x6f29('0x12'));if(isNaN(Number(_0x1a50f2['params']['id'])))throw new Error(_0x6f29('0x13'));return db['UserSetting'][_0x6f29('0x14')]({'where':{'id':_0x1a50f2[_0x6f29('0x15')]['id']}})[_0x6f29('0xb')](handleEntityNotFound(_0x300182,null))[_0x6f29('0xb')](saveUpdates(_0x1a50f2['body'],null))['then'](respondWithResult(_0x300182,null))[_0x6f29('0x16')](handleError(_0x300182,null));};
\ No newline at end of file
+var _0x682e=['error','stack','name','status','send','user','role','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','find','body','catch','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','./user-setting.socket','register','defaults','localhost','json','update','then'];(function(_0x198247,_0x491c12){var _0x2b18bc=function(_0x4a43e2){while(--_0x4a43e2){_0x198247['push'](_0x198247['shift']());}};_0x2b18bc(++_0x491c12);}(_0x682e,0x1ce));var _0xe682=function(_0x364a3a,_0x5b4fe4){_0x364a3a=_0x364a3a-0x0;var _0x17fef8=_0x682e[_0x364a3a];return _0x17fef8;};'use strict';var _=require(_0xe682('0x0'));var Redis=require(_0xe682('0x1'));var logger=require(_0xe682('0x2'))(_0xe682('0x3'));var config=require(_0xe682('0x4'));var db=require(_0xe682('0x5'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xe682('0x6')]));require(_0xe682('0x7'))[_0xe682('0x8')](socket);config[_0xe682('0x6')]=_[_0xe682('0x9')](config[_0xe682('0x6')],{'host':_0xe682('0xa'),'port':0x18eb});function respondWithResult(_0xd6995,_0x68a2e3){_0x68a2e3=_0x68a2e3||0xc8;return function(_0x1ab428){if(_0x1ab428){return _0xd6995['status'](_0x68a2e3)[_0xe682('0xb')](_0x1ab428);}};}function saveUpdates(_0x3dfb81){return function(_0x43e3d9){if(_0x43e3d9){return _0x43e3d9[_0xe682('0xc')](_0x3dfb81)[_0xe682('0xd')](function(_0x2f7213){return _0x2f7213;});}return null;};}function handleEntityNotFound(_0x5acc03){return function(_0x152b9f){if(!_0x152b9f){_0x5acc03['sendStatus'](0x194);}return _0x152b9f;};}function handleError(_0x111bc8,_0x569605){_0x569605=_0x569605||0x1f4;return function(_0x493a34){logger[_0xe682('0xe')](_0x493a34[_0xe682('0xf')]);if(_0x493a34[_0xe682('0x10')]){delete _0x493a34[_0xe682('0x10')];}_0x111bc8[_0xe682('0x11')](_0x569605)[_0xe682('0x12')](_0x493a34);};}exports['update']=function(_0x20934a,_0x3a8de0){if(_0x20934a[_0xe682('0x13')][_0xe682('0x14')]!==_0xe682('0x15'))throw new Error(_0xe682('0x16'));if(isNaN(Number(_0x20934a[_0xe682('0x17')]['id'])))throw new Error(_0xe682('0x18'));return db['UserSetting'][_0xe682('0x19')]({'where':{'id':_0x20934a['params']['id']}})['then'](handleEntityNotFound(_0x3a8de0,null))['then'](saveUpdates(_0x20934a[_0xe682('0x1a')],null))[_0xe682('0xd')](respondWithResult(_0x3a8de0,null))[_0xe682('0x1b')](handleError(_0x3a8de0,null));};
\ No newline at end of file
index 9b27cf2..01d821d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf724=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserSetting'];(function(_0x443f79,_0x33e446){var _0x3847e4=function(_0x42fa01){while(--_0x42fa01){_0x443f79['push'](_0x443f79['shift']());}};_0x3847e4(++_0x33e446);}(_0xf724,0x1cb));var _0x4f72=function(_0x5ecadc,_0x1cf9f1){_0x5ecadc=_0x5ecadc-0x0;var _0x565037=_0xf724[_0x5ecadc];return _0x565037;};'use strict';var EventEmitter=require(_0x4f72('0x0'));var UserSetting=require(_0x4f72('0x1'))['db'][_0x4f72('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x4f72('0x3')](0x0);var events={'afterCreate':_0x4f72('0x4'),'afterUpdate':_0x4f72('0x5'),'afterDestroy':_0x4f72('0x6')};function emitEvent(_0x4ce031){return function(_0x1a210f,_0x30479c,_0x1fa912){UserSettingEvents['emit'](_0x4ce031+':'+_0x1a210f['id'],_0x1a210f);UserSettingEvents[_0x4f72('0x7')](_0x4ce031,_0x1a210f);_0x1fa912(null);};}for(var e in events){if(events[_0x4f72('0x8')](e)){var event=events[e];UserSetting[_0x4f72('0x9')](e,emitEvent(event));}}module[_0x4f72('0xa')]=UserSettingEvents;
\ No newline at end of file
+var _0x03ed=['hook','exports','events','../../mysqldb','UserSetting','save','update','remove','emit'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x03ed,0x14f));var _0xd03e=function(_0x6148d9,_0x653a21){_0x6148d9=_0x6148d9-0x0;var _0x3a136c=_0x03ed[_0x6148d9];return _0x3a136c;};'use strict';var EventEmitter=require(_0xd03e('0x0'));var UserSetting=require(_0xd03e('0x1'))['db'][_0xd03e('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd03e('0x3'),'afterUpdate':_0xd03e('0x4'),'afterDestroy':_0xd03e('0x5')};function emitEvent(_0x189749){return function(_0x4e5959,_0x30d91c,_0x5159cc){UserSettingEvents[_0xd03e('0x6')](_0x189749+':'+_0x4e5959['id'],_0x4e5959);UserSettingEvents[_0xd03e('0x6')](_0x189749,_0x4e5959);_0x5159cc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0xd03e('0x7')](e,emitEvent(event));}}module[_0xd03e('0x8')]=UserSettingEvents;
\ No newline at end of file
index 7b3f1ea..b8b0055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd52a=['UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince','exports','define'];(function(_0x4b87e8,_0x4bcc67){var _0x2d8e46=function(_0x15a9b9){while(--_0x15a9b9){_0x4b87e8['push'](_0x4b87e8['shift']());}};_0x2d8e46(++_0x4bcc67);}(_0xd52a,0xca));var _0xad52=function(_0x333604,_0x2861af){_0x333604=_0x333604-0x0;var _0x246130=_0xd52a[_0x333604];return _0x246130;};'use strict';var attributes=require('./user-setting.attributes');module[_0xad52('0x0')]=function(_0x5e6aa7){return _0x5e6aa7[_0xad52('0x1')](_0xad52('0x2'),attributes,{'tableName':_0xad52('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x572592){if(!_0x572592[_0xad52('0x4')])_0x572592[_0xad52('0x5')]=null;else if(_0x572592[_0xad52('0x5')]===null)_0x572592[_0xad52('0x5')]=new Date();}}});};
\ No newline at end of file
+var _0x44a3=['define','UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince','./user-setting.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x44a3,0x1a9));var _0x344a=function(_0x27a997,_0x85f149){_0x27a997=_0x27a997-0x0;var _0x5aa288=_0x44a3[_0x27a997];return _0x5aa288;};'use strict';var attributes=require(_0x344a('0x0'));module[_0x344a('0x1')]=function(_0x3fa916){return _0x3fa916[_0x344a('0x2')](_0x344a('0x3'),attributes,{'tableName':_0x344a('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3bb844){if(!_0x3bb844[_0x344a('0x5')])_0x3bb844['clientSideLoggingEnabledSince']=null;else if(_0x3bb844[_0x344a('0x6')]===null)_0x3bb844[_0x344a('0x6')]=new Date();}}});};
\ No newline at end of file
index c62706a..b16708d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3be4=['UserId','register','length','user-setting:','./user-setting.events','save','remove','emit','user-setting:update:user-'];(function(_0x463f29,_0x315360){var _0x516d9b=function(_0x8c52c9){while(--_0x8c52c9){_0x463f29['push'](_0x463f29['shift']());}};_0x516d9b(++_0x315360);}(_0x3be4,0xaf));var _0x43be=function(_0x5b13c9,_0x44e067){_0x5b13c9=_0x5b13c9-0x0;var _0x453edd=_0x3be4[_0x5b13c9];return _0x453edd;};'use strict';var UserSettingEvents=require(_0x43be('0x0'));var events=[_0x43be('0x1'),_0x43be('0x2'),'update'];function createListener(_0x240879,_0x65c56b){return function(_0x551498){_0x65c56b[_0x43be('0x3')](_0x240879,_0x551498);if(_0x240879==='user-setting:update'){_0x65c56b[_0x43be('0x3')](_0x43be('0x4')+_0x551498[_0x43be('0x5')],_0x551498);}};}exports[_0x43be('0x6')]=function(_0x57973d){for(var _0x11faa1=0x0,_0x3efc56=events[_0x43be('0x7')];_0x11faa1<_0x3efc56;_0x11faa1++){var _0x3f35f4=events[_0x11faa1];var _0x148950=createListener(_0x43be('0x8')+_0x3f35f4,_0x57973d);UserSettingEvents['on'](_0x3f35f4,_0x148950);}};
\ No newline at end of file
+var _0x9468=['emit','user-setting:update','user-setting:update:user-','UserId','length','user-setting:','./user-setting.events','save','remove','update'];(function(_0x32917a,_0x3559ea){var _0x1881e1=function(_0x56730d){while(--_0x56730d){_0x32917a['push'](_0x32917a['shift']());}};_0x1881e1(++_0x3559ea);}(_0x9468,0x100));var _0x8946=function(_0x3cb30b,_0x504b3e){_0x3cb30b=_0x3cb30b-0x0;var _0x2ca717=_0x9468[_0x3cb30b];return _0x2ca717;};'use strict';var UserSettingEvents=require(_0x8946('0x0'));var events=[_0x8946('0x1'),_0x8946('0x2'),_0x8946('0x3')];function createListener(_0x4f0f09,_0x5d45f0){return function(_0x1593d6){_0x5d45f0[_0x8946('0x4')](_0x4f0f09,_0x1593d6);if(_0x4f0f09===_0x8946('0x5')){_0x5d45f0[_0x8946('0x4')](_0x8946('0x6')+_0x1593d6[_0x8946('0x7')],_0x1593d6);}};}exports['register']=function(_0x27535d){for(var _0x5858be=0x0,_0x5095a1=events[_0x8946('0x8')];_0x5858be<_0x5095a1;_0x5858be++){var _0x3b72ec=events[_0x5858be];var _0x1711f7=createListener(_0x8946('0x9')+_0x3b72ec,_0x27535d);UserSettingEvents['on'](_0x3b72ec,_0x1711f7);}};
\ No newline at end of file
index 5a74819..14ba1d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe07b=['/:id/scheduled_calls','/:id/api_key','getApiKey','addContacts','create','post','/create_many','bulkCreate','diskStorage','join','root','format','%s-%s','now','single','file','addAvatar','login','logout','/:id/pause','pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','createApiKey','put','/:id','update','/:id/password','changePassword','removeTeams','delete','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','exports','multer','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/whoami','whoami','/presence','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','getWhatsappInteractions','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/whatsapp_accounts','getWhatsappAccounts'];(function(_0x16fbaf,_0x3504c9){var _0x50d295=function(_0x2b570b){while(--_0x2b570b){_0x16fbaf['push'](_0x16fbaf['shift']());}};_0x50d295(++_0x3504c9);}(_0xe07b,0x181));var _0xbe07=function(_0x353c43,_0x3a4111){_0x353c43=_0x353c43-0x0;var _0x515e2c=_0xe07b[_0x353c43];return _0x515e2c;};'use strict';var multer=require(_0xbe07('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe07('0x1'));var router=express[_0xbe07('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xbe07('0x3'));var interaction=require(_0xbe07('0x4'));var config=require(_0xbe07('0x5'));var controller=require('./user.controller');router[_0xbe07('0x6')]('/',auth[_0xbe07('0x7')](),controller[_0xbe07('0x8')]);router[_0xbe07('0x6')]('/describe',auth['isAuthenticated'](),controller[_0xbe07('0x9')]);router[_0xbe07('0x6')](_0xbe07('0xa'),auth[_0xbe07('0x7')](),controller[_0xbe07('0xb')]);router[_0xbe07('0x6')](_0xbe07('0xc'),auth['isAuthenticated'](),controller['getPresence']);router[_0xbe07('0x6')]('/:id',auth[_0xbe07('0x7')](),controller[_0xbe07('0xd')]);router[_0xbe07('0x6')](_0xbe07('0xe'),controller[_0xbe07('0xf')]);router[_0xbe07('0x6')](_0xbe07('0x10'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x11')]);router['get']('/:id/contacts',auth[_0xbe07('0x7')](),controller[_0xbe07('0x12')]);router['get'](_0xbe07('0x13'),auth['isAuthenticated'](),controller[_0xbe07('0x14')]);router[_0xbe07('0x6')](_0xbe07('0x15'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x16')]);router[_0xbe07('0x6')](_0xbe07('0x17'),auth['isAuthenticated'](),controller[_0xbe07('0x18')]);router['get']('/:id/recordings',auth[_0xbe07('0x7')](),controller[_0xbe07('0x19')]);router[_0xbe07('0x6')](_0xbe07('0x1a'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x1b')]);router[_0xbe07('0x6')](_0xbe07('0x1c'),auth['isAuthenticated'](),controller[_0xbe07('0x1d')]);router['get']('/:id/openchannel/interactions',auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router['get'](_0xbe07('0x1e'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x1f')]);router[_0xbe07('0x6')](_0xbe07('0x20'),auth[_0xbe07('0x7')](),controller['getSmsInteractions']);router[_0xbe07('0x6')](_0xbe07('0x21'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x22')]);router['get']('/:id/whatsapp/interactions',auth[_0xbe07('0x7')](),controller[_0xbe07('0x23')]);router['get']('/:id/teams',auth[_0xbe07('0x7')](),controller[_0xbe07('0x24')]);router[_0xbe07('0x6')](_0xbe07('0x25'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x26')]);router[_0xbe07('0x6')](_0xbe07('0x27'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x28')]);router[_0xbe07('0x6')](_0xbe07('0x29'),auth['isAuthenticated'](),controller[_0xbe07('0x2a')]);router[_0xbe07('0x6')](_0xbe07('0x2b'),auth[_0xbe07('0x7')](),controller['getFaxAccounts']);router[_0xbe07('0x6')](_0xbe07('0x2c'),auth[_0xbe07('0x7')](),controller['getMailAccounts']);router[_0xbe07('0x6')](_0xbe07('0x2d'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x2e')]);router[_0xbe07('0x6')](_0xbe07('0x2f'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x30')]);router[_0xbe07('0x6')]('/:id/chat_websites',auth[_0xbe07('0x7')](),controller['getChatWebsites']);router['get'](_0xbe07('0x31'),auth['isAuthenticated'](),controller[_0xbe07('0x32')]);router[_0xbe07('0x6')](_0xbe07('0x33'),auth[_0xbe07('0x7')](),controller['getScheduledCalls']);router['get'](_0xbe07('0x34'),auth['isAuthenticated'](),controller[_0xbe07('0x35')]);router['post']('/:id/contacts',auth[_0xbe07('0x7')](),controller[_0xbe07('0x36')]);router['post']('/',auth[_0xbe07('0x7')](),controller[_0xbe07('0x37')]);router[_0xbe07('0x38')](_0xbe07('0x39'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x3a')]);router[_0xbe07('0x38')](_0xbe07('0x13'),auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer[_0xbe07('0x3b')]({'destination':function(_0x249a72,_0x2478c5,_0xc36888){_0xc36888(null,path[_0xbe07('0x3c')](config[_0xbe07('0x3d')],'server/files/images/'));},'filename':function(_0x244265,_0x596fa5,_0x493682){_0x493682(null,util[_0xbe07('0x3e')](_0xbe07('0x3f'),Date[_0xbe07('0x40')](),_0x596fa5['originalname']));}})});router['post'](_0xbe07('0xe'),upload[_0xbe07('0x41')](_0xbe07('0x42')),controller[_0xbe07('0x43')]);router[_0xbe07('0x38')]('/:id/login',auth[_0xbe07('0x7')](),controller[_0xbe07('0x44')]);router[_0xbe07('0x38')]('/:id/logout',auth[_0xbe07('0x7')](),controller[_0xbe07('0x45')]);router[_0xbe07('0x38')](_0xbe07('0x46'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x47')]);router['post'](_0xbe07('0x48'),auth['isAuthenticated'](),controller[_0xbe07('0x49')]);router[_0xbe07('0x38')](_0xbe07('0x4a'),auth['isAuthenticated'](),controller[_0xbe07('0x4b')]);router[_0xbe07('0x38')](_0xbe07('0x4c'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x4d')]);router['post'](_0xbe07('0x4e'),auth['isAuthenticated'](),controller['addMailInteractions']);router[_0xbe07('0x38')](_0xbe07('0x4f'),auth['isAuthenticated'](),controller['addFaxInteractions']);router[_0xbe07('0x38')](_0xbe07('0x50'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x51')]);router[_0xbe07('0x38')](_0xbe07('0x52'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x53')]);router[_0xbe07('0x38')](_0xbe07('0x54'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x55')]);router['post'](_0xbe07('0x2b'),auth[_0xbe07('0x7')](),controller['addFaxAccounts']);router[_0xbe07('0x38')](_0xbe07('0x2c'),auth['isAuthenticated'](),controller[_0xbe07('0x56')]);router[_0xbe07('0x38')](_0xbe07('0x2d'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x57')]);router['post']('/:id/sms_accounts',auth[_0xbe07('0x7')](),controller[_0xbe07('0x58')]);router[_0xbe07('0x38')](_0xbe07('0x59'),auth[_0xbe07('0x7')](),controller['addChatWebsites']);router[_0xbe07('0x38')](_0xbe07('0x31'),auth[_0xbe07('0x7')](),controller['addWhatsappAccounts']);router[_0xbe07('0x38')]('/:id/api_key',auth[_0xbe07('0x7')](),controller[_0xbe07('0x5a')]);router[_0xbe07('0x5b')](_0xbe07('0x5c'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x5d')]);router[_0xbe07('0x5b')](_0xbe07('0x5e'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x5f')]);router['delete'](_0xbe07('0x13'),auth[_0xbe07('0x7')](),controller['removeQueues']);router['delete'](_0xbe07('0x4a'),auth['isAuthenticated'](),controller[_0xbe07('0x60')]);router[_0xbe07('0x61')](_0xbe07('0x5c'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0xbe07('0x4c'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x62')]);router[_0xbe07('0x61')](_0xbe07('0x4e'),auth['isAuthenticated'](),controller[_0xbe07('0x63')]);router['delete'](_0xbe07('0x4f'),auth[_0xbe07('0x7')](),controller['removeFaxInteractions']);router[_0xbe07('0x61')]('/:id/sms_interactions',auth[_0xbe07('0x7')](),controller[_0xbe07('0x64')]);router['delete']('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0xbe07('0x65')]);router[_0xbe07('0x61')]('/:id/whatsapp_interactions',auth[_0xbe07('0x7')](),controller[_0xbe07('0x66')]);router[_0xbe07('0x61')](_0xbe07('0x2b'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x67')]);router[_0xbe07('0x61')](_0xbe07('0x2c'),auth[_0xbe07('0x7')](),controller['removeMailAccounts']);router[_0xbe07('0x61')](_0xbe07('0x2d'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x68')]);router[_0xbe07('0x61')](_0xbe07('0x2f'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x69')]);router[_0xbe07('0x61')](_0xbe07('0x59'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x6a')]);router[_0xbe07('0x61')](_0xbe07('0x31'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x6b')]);router['delete'](_0xbe07('0x34'),auth[_0xbe07('0x7')](),controller['removeApiKey']);module[_0xbe07('0x6c')]=router;
\ No newline at end of file
+var _0x777d=['/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','createApiKey','put','update','/:id/password','changePassword','delete','/:id/queues','removeQueues','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','exports','util','path','connect-timeout','Router','fs-extra','./user.controller','isAuthenticated','get','/whoami','whoami','/presence','getPresence','/:id','show','getOpenTabs','/:id/contacts','getQueues','/:id/queues_rt','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/agents','getAgents','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','create','format','%s-%s','now','originalname','/:id/avatar','single','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x777d,0xe9));var _0xd777=function(_0x1d5458,_0x3acf09){_0x1d5458=_0x1d5458-0x0;var _0x9bf6f=_0x777d[_0x1d5458];return _0x9bf6f;};'use strict';var multer=require('multer');var util=require(_0xd777('0x0'));var path=require(_0xd777('0x1'));var timeout=require(_0xd777('0x2'));var express=require('express');var router=express[_0xd777('0x3')]();var fs_extra=require(_0xd777('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd777('0x5'));router['get']('/',auth[_0xd777('0x6')](),controller['index']);router[_0xd777('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd777('0x7')](_0xd777('0x8'),auth[_0xd777('0x6')](),controller[_0xd777('0x9')]);router[_0xd777('0x7')](_0xd777('0xa'),auth[_0xd777('0x6')](),controller[_0xd777('0xb')]);router[_0xd777('0x7')](_0xd777('0xc'),auth[_0xd777('0x6')](),controller[_0xd777('0xd')]);router[_0xd777('0x7')]('/:id/avatar',controller['getAvatar']);router[_0xd777('0x7')]('/:id/open_tabs',auth[_0xd777('0x6')](),controller[_0xd777('0xe')]);router[_0xd777('0x7')](_0xd777('0xf'),auth[_0xd777('0x6')](),controller['getContacts']);router[_0xd777('0x7')]('/:id/queues',auth[_0xd777('0x6')](),controller[_0xd777('0x10')]);router[_0xd777('0x7')](_0xd777('0x11'),auth[_0xd777('0x6')](),controller['getVoiceQueuesRt']);router[_0xd777('0x7')]('/:id/groups',auth[_0xd777('0x6')](),controller['getGroups']);router[_0xd777('0x7')](_0xd777('0x12'),auth[_0xd777('0x6')](),controller[_0xd777('0x13')]);router[_0xd777('0x7')](_0xd777('0x14'),auth['isAuthenticated'](),controller['getScreenRecordings']);router[_0xd777('0x7')]('/:id/chat/interactions',auth[_0xd777('0x6')](),controller['getChatInteractions']);router['get']('/:id/openchannel/interactions',auth[_0xd777('0x6')](),controller['getOpenchannelInteractions']);router['get']('/:id/mail/interactions',auth['isAuthenticated'](),controller['getMailInteractions']);router[_0xd777('0x7')](_0xd777('0x15'),auth[_0xd777('0x6')](),controller[_0xd777('0x16')]);router[_0xd777('0x7')](_0xd777('0x17'),auth[_0xd777('0x6')](),controller[_0xd777('0x18')]);router[_0xd777('0x7')](_0xd777('0x19'),auth[_0xd777('0x6')](),controller['getWhatsappInteractions']);router[_0xd777('0x7')](_0xd777('0x1a'),auth[_0xd777('0x6')](),controller[_0xd777('0x1b')]);router[_0xd777('0x7')]('/:id/lists',auth[_0xd777('0x6')](),controller['getLists']);router['get'](_0xd777('0x1c'),auth[_0xd777('0x6')](),controller[_0xd777('0x1d')]);router[_0xd777('0x7')]('/:id/prefixes',auth[_0xd777('0x6')](),controller[_0xd777('0x1e')]);router[_0xd777('0x7')](_0xd777('0x1f'),auth[_0xd777('0x6')](),controller[_0xd777('0x20')]);router[_0xd777('0x7')](_0xd777('0x21'),auth['isAuthenticated'](),controller[_0xd777('0x22')]);router['get']('/:id/openchannel_accounts',auth[_0xd777('0x6')](),controller[_0xd777('0x23')]);router[_0xd777('0x7')](_0xd777('0x24'),auth['isAuthenticated'](),controller['getSmsAccounts']);router[_0xd777('0x7')](_0xd777('0x25'),auth[_0xd777('0x6')](),controller[_0xd777('0x26')]);router[_0xd777('0x7')](_0xd777('0x27'),auth['isAuthenticated'](),controller['getWhatsappAccounts']);router[_0xd777('0x7')](_0xd777('0x28'),auth[_0xd777('0x6')](),controller[_0xd777('0x29')]);router[_0xd777('0x7')](_0xd777('0x2a'),auth[_0xd777('0x6')](),controller[_0xd777('0x2b')]);router['post']('/:id/contacts',auth[_0xd777('0x6')](),controller['addContacts']);router[_0xd777('0x2c')]('/',auth[_0xd777('0x6')](),controller[_0xd777('0x2d')]);router[_0xd777('0x2c')]('/create_many',auth[_0xd777('0x6')](),controller['bulkCreate']);router[_0xd777('0x2c')]('/:id/queues',auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3503ca,_0x3cd5f3,_0x44f48f){_0x44f48f(null,path['join'](config['root'],'server/files/images/'));},'filename':function(_0x3e432d,_0x21466,_0x27aaa6){_0x27aaa6(null,util[_0xd777('0x2e')](_0xd777('0x2f'),Date[_0xd777('0x30')](),_0x21466[_0xd777('0x31')]));}})});router[_0xd777('0x2c')](_0xd777('0x32'),upload[_0xd777('0x33')]('file'),controller[_0xd777('0x34')]);router[_0xd777('0x2c')](_0xd777('0x35'),auth[_0xd777('0x6')](),controller[_0xd777('0x36')]);router[_0xd777('0x2c')](_0xd777('0x37'),auth[_0xd777('0x6')](),controller[_0xd777('0x38')]);router[_0xd777('0x2c')](_0xd777('0x39'),auth[_0xd777('0x6')](),controller['pause']);router[_0xd777('0x2c')]('/:id/unpause',auth[_0xd777('0x6')](),controller[_0xd777('0x3a')]);router[_0xd777('0x2c')](_0xd777('0x1a'),auth[_0xd777('0x6')](),controller[_0xd777('0x3b')]);router['post'](_0xd777('0x3c'),auth[_0xd777('0x6')](),controller[_0xd777('0x3d')]);router['post'](_0xd777('0x3e'),auth[_0xd777('0x6')](),controller[_0xd777('0x3f')]);router[_0xd777('0x2c')](_0xd777('0x40'),auth[_0xd777('0x6')](),controller[_0xd777('0x41')]);router['post'](_0xd777('0x42'),auth[_0xd777('0x6')](),controller['addSmsInteractions']);router['post'](_0xd777('0x43'),auth[_0xd777('0x6')](),controller[_0xd777('0x44')]);router[_0xd777('0x2c')](_0xd777('0x45'),auth[_0xd777('0x6')](),controller[_0xd777('0x46')]);router[_0xd777('0x2c')](_0xd777('0x1f'),auth[_0xd777('0x6')](),controller[_0xd777('0x47')]);router['post'](_0xd777('0x21'),auth[_0xd777('0x6')](),controller[_0xd777('0x48')]);router['post']('/:id/openchannel_accounts',auth[_0xd777('0x6')](),controller[_0xd777('0x49')]);router[_0xd777('0x2c')](_0xd777('0x24'),auth[_0xd777('0x6')](),controller[_0xd777('0x4a')]);router[_0xd777('0x2c')](_0xd777('0x25'),auth['isAuthenticated'](),controller[_0xd777('0x4b')]);router['post']('/:id/whatsapp_accounts',auth[_0xd777('0x6')](),controller[_0xd777('0x4c')]);router['post'](_0xd777('0x2a'),auth[_0xd777('0x6')](),controller[_0xd777('0x4d')]);router[_0xd777('0x4e')]('/:id',auth['isAuthenticated'](),controller[_0xd777('0x4f')]);router['put'](_0xd777('0x50'),auth[_0xd777('0x6')](),controller[_0xd777('0x51')]);router[_0xd777('0x52')](_0xd777('0x53'),auth['isAuthenticated'](),controller[_0xd777('0x54')]);router[_0xd777('0x52')](_0xd777('0x1a'),auth['isAuthenticated'](),controller[_0xd777('0x55')]);router[_0xd777('0x52')]('/:id',auth[_0xd777('0x6')](),controller[_0xd777('0x56')]);router[_0xd777('0x52')]('/:id/chat_interactions',auth[_0xd777('0x6')](),controller[_0xd777('0x57')]);router[_0xd777('0x52')](_0xd777('0x3e'),auth[_0xd777('0x6')](),controller[_0xd777('0x58')]);router[_0xd777('0x52')](_0xd777('0x40'),auth[_0xd777('0x6')](),controller[_0xd777('0x59')]);router[_0xd777('0x52')](_0xd777('0x42'),auth[_0xd777('0x6')](),controller[_0xd777('0x5a')]);router[_0xd777('0x52')](_0xd777('0x43'),auth[_0xd777('0x6')](),controller[_0xd777('0x5b')]);router[_0xd777('0x52')](_0xd777('0x45'),auth[_0xd777('0x6')](),controller[_0xd777('0x5c')]);router[_0xd777('0x52')]('/:id/fax_accounts',auth['isAuthenticated'](),controller['removeFaxAccounts']);router[_0xd777('0x52')](_0xd777('0x21'),auth[_0xd777('0x6')](),controller[_0xd777('0x5d')]);router[_0xd777('0x52')]('/:id/openchannel_accounts',auth[_0xd777('0x6')](),controller[_0xd777('0x5e')]);router['delete'](_0xd777('0x24'),auth[_0xd777('0x6')](),controller[_0xd777('0x5f')]);router['delete'](_0xd777('0x25'),auth['isAuthenticated'](),controller[_0xd777('0x60')]);router[_0xd777('0x52')](_0xd777('0x27'),auth[_0xd777('0x6')](),controller[_0xd777('0x61')]);router['delete'](_0xd777('0x2a'),auth['isAuthenticated'](),controller[_0xd777('0x62')]);module[_0xd777('0x63')]=router;
\ No newline at end of file
index 57437d6..a763d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['isArray','wss','encryption','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','avpf','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','sequelize','moment','util','lodash','STRING','name','setDataValue','defaultuser','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','agent','telephone','local','INTEGER','accountcode','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','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','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','certificate','passive','actpass','update,nonat','TEXT','showWebBar','get'];(function(_0x2d8a8c,_0x365e01){var _0x2770d8=function(_0x4ac0bb){while(--_0x4ac0bb){_0x2d8a8c['push'](_0x2d8a8c['shift']());}};_0x2770d8(++_0x365e01);}(_0x34e8,0x12c));var _0x834e=function(_0x5efbe6,_0x5569b7){_0x5efbe6=_0x5efbe6-0x0;var _0x27e808=_0x34e8[_0x5efbe6];return _0x27e808;};'use strict';var Sequelize=require(_0x834e('0x0'));var moment=require(_0x834e('0x1'));var util=require(_0x834e('0x2'));var _=require(_0x834e('0x3'));module['exports']={'name':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x472111){this[_0x834e('0x6')](_0x834e('0x5'),_0x472111);this[_0x834e('0x6')](_0x834e('0x7'),_0x472111);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'set':function(_0x52056d){this[_0x834e('0x6')](_0x834e('0x8'),_0x52056d);this[_0x834e('0x6')](_0x834e('0x9'),util[_0x834e('0xa')](_0x834e('0xb'),_0x52056d,this[_0x834e('0xc')](_0x834e('0xd'))));}},'alias':{'type':Sequelize[_0x834e('0x4')]},'email':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0xe'),'validate':{'isEmail':!![]},'set':function(_0x36e124){if(_0x36e124){this[_0x834e('0x6')](_0x834e('0xe'),_0x36e124[_0x834e('0xf')]());}}},'role':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x11'),'user',_0x834e('0x12'),_0x834e('0x13')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x834e('0x4')],'defaultValue':_0x834e('0x14')},'internal':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':![],'unique':_0x834e('0xd'),'set':function(_0x50e860){this[_0x834e('0x6')](_0x834e('0xd'),_0x50e860);this['setDataValue'](_0x834e('0x16'),_0x50e860);this['setDataValue'](_0x834e('0x9'),util[_0x834e('0xa')]('\x22%s\x22\x20<%s>',this[_0x834e('0xc')](_0x834e('0x8')),_0x50e860));}},'salt':{'type':Sequelize[_0x834e('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x834e('0x4')]},'address':{'type':Sequelize[_0x834e('0x4')]},'zipcode':{'type':Sequelize[_0x834e('0x4')]},'userpic':{'type':Sequelize[_0x834e('0x4')]},'city':{'type':Sequelize[_0x834e('0x4')]},'country':{'type':Sequelize[_0x834e('0x4')]},'online':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x834e('0x18')},'lastPauseAt':{'type':Sequelize[_0x834e('0x19')]},'chatCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x834e('0x15')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x1a')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x834e('0x15')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend','user','peer'),'allowNull':!![],'defaultValue':_0x834e('0x1b')},'context':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x1c')},'callingpres':{'type':Sequelize['ENUM'](_0x834e('0x1d'),_0x834e('0x1e'),_0x834e('0x1f'),_0x834e('0x20'),_0x834e('0x21'),_0x834e('0x22'),_0x834e('0x23'),_0x834e('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x25'),'set':function(_0x2b3418){this[_0x834e('0x6')](_0x834e('0x26'),_0x2b3418?_0x2b3418[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x26'))?this[_0x834e('0xc')]('transport')[_0x834e('0x28')](','):null;},'comment':_0x834e('0x29')},'dtmfmode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2a'),'info',_0x834e('0x2b'),_0x834e('0x2c'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x31'),'set':function(_0x6a3ac){this['setDataValue'](_0x834e('0x32'),_0x6a3ac?_0x6a3ac[_0x834e('0x27')](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x834e('0xc')](_0x834e('0x32'))[_0x834e('0x28')](','):null;},'comment':_0x834e('0x33')},'callgroup':{'type':Sequelize[_0x834e('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x834e('0x4')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x834e('0x4')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x834e('0x34')},'allow':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'defaultValue':_0x834e('0x35'),'set':function(_0x3c59af){this[_0x834e('0x6')]('allow',_0x3c59af?_0x3c59af[_0x834e('0x27')](';'):_0x834e('0x35'));},'get':function(){return this[_0x834e('0xc')]('allow')?this[_0x834e('0xc')](_0x834e('0x36'))['split'](';'):null;},'comment':_0x834e('0x37')},'autoframing':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'set':function(_0x4a18bb){this['setDataValue'](_0x834e('0x38'),_0x4a18bb?_0x4a18bb[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x38'))?this[_0x834e('0xc')](_0x834e('0x38'))[_0x834e('0x28')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x834e('0x10')]('yes','no',_0x834e('0x39')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x3a')},'amaflags':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3c'),_0x834e('0x3d'),_0x834e('0x3e')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3f'),_0x834e('0x40')),'allowNull':!![],'defaultValue':_0x834e('0x40')},'t38pt_usertpsource':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x834e('0x10')]('yes','no','fingerprint',_0x834e('0x41')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x834e('0x10')]('active',_0x834e('0x42'),_0x834e('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x44')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x834e('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x834e('0x19')]},'passwordResetAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x834e('0x45')]},'showWebBar':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0,'set':function(_0x1e4310){this[_0x834e('0x6')](_0x834e('0x46'),_0x1e4310);var _0x1659c8=this[_0x834e('0x47')]({'plain':!![]});switch(_0x1e4310){case 0x0:case 0x1:var _0x17b8e3=_0x1659c8[_0x834e('0x26')]?_[_0x834e('0x48')](_0x1659c8[_0x834e('0x26')])?_0x1659c8[_0x834e('0x26')][_0x834e('0x27')]():_0x1659c8[_0x834e('0x26')]:'udp';if(_0x17b8e3===_0x834e('0x49')){_0x17b8e3=_0x834e('0x25');}this[_0x834e('0x6')](_0x834e('0x26'),_0x17b8e3);this['setDataValue'](_0x834e('0x4a'),'no');this['setDataValue']('avpf',null);this[_0x834e('0x6')](_0x834e('0x4b'),null);this[_0x834e('0x6')](_0x834e('0x4c'),null);this[_0x834e('0x6')](_0x834e('0x4d'),null);this[_0x834e('0x6')](_0x834e('0x4e'),null);this['setDataValue'](_0x834e('0x4f'),null);this['setDataValue'](_0x834e('0x50'),null);this[_0x834e('0x6')]('dtlsprivatekey',null);this['setDataValue'](_0x834e('0x51'),'no');break;case 0x2:this[_0x834e('0x6')](_0x834e('0x26'),_0x834e('0x49'));this[_0x834e('0x6')]('encryption',_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x52'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4b'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4c'),_0x834e('0x2d'));this['setDataValue'](_0x834e('0x4d'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4e'),'no');this['setDataValue'](_0x834e('0x4f'),'actpass');this['setDataValue']('dtlscertfile',_0x1659c8[_0x834e('0x50')]||_0x834e('0x53'));this['setDataValue'](_0x834e('0x54'),_0x1659c8[_0x834e('0x54')]||'/etc/pki/tls/private/motion.key');this[_0x834e('0x6')](_0x834e('0x51'),'yes');break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x346be5){this[_0x834e('0x6')](_0x834e('0x55'),_0x346be5?_0x346be5[_0x834e('0x27')](','):[]);},'get':function(){return this[_0x834e('0xc')]('permissions')?_[_0x834e('0x56')](this['getDataValue'](_0x834e('0x55'))[_0x834e('0x28')](','),function(_0x2c758c){return parseInt(_0x2c758c,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x834e('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x834e('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('phoneBarEnableScreenRecordingByAgent')?this[_0x834e('0xc')](_0x834e('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x18ddac){if(typeof _0x18ddac===_0x834e('0x58')){var _0x5acf5c=_0x18ddac==='1'?!![]:_0x18ddac==='0'?![]:_0x18ddac===_0x834e('0x59')?!![]:_0x18ddac===_0x834e('0x5a')?![]:![];this[_0x834e('0x6')]('screenrecording',_0x5acf5c);}else{this[_0x834e('0x6')](_0x834e('0x5b'),_0x18ddac);}}},'blocked':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x443633){this[_0x834e('0x6')]('blocked',_0x443633);if(_0x443633===!![]){this['setDataValue'](_0x834e('0x5c'),moment());this[_0x834e('0x6')]('loginAttempts',0x0);}else{this[_0x834e('0x6')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x834e('0x15')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xedd9=['rfc2833','info','shortinfo','inband','auto','yes','update','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\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uas','certificate','active','passive','actpass','nonat','update,nonat','DATE','showWebBar','get','isArray','wss','encryption','force_avp','icesupport','dtlsverify','rtcp_mux','dtlsenable','dtlssetup','dtlscertfile','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','callerid','format','\x22%s\x22\x20<%s>','internal','email','ENUM','admin','user','agent','telephone','local','accountcode','getDataValue','fullname','BOOLEAN','INTEGER','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'];(function(_0x156b5b,_0x39ebd4){var _0x4ca8e1=function(_0x3f633a){while(--_0x3f633a){_0x156b5b['push'](_0x156b5b['shift']());}};_0x4ca8e1(++_0x39ebd4);}(_0xedd9,0xfc));var _0x9edd=function(_0x4c64e2,_0x2ed3dc){_0x4c64e2=_0x4c64e2-0x0;var _0x34f5b5=_0xedd9[_0x4c64e2];return _0x34f5b5;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9edd('0x0'));var util=require(_0x9edd('0x1'));var _=require(_0x9edd('0x2'));module[_0x9edd('0x3')]={'name':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'unique':_0x9edd('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3e6d3a){this[_0x9edd('0x6')]('name',_0x3e6d3a);this[_0x9edd('0x6')](_0x9edd('0x7'),_0x3e6d3a);},'comment':_0x9edd('0x8')},'fullname':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'set':function(_0x5319f7){this[_0x9edd('0x6')]('fullname',_0x5319f7);this[_0x9edd('0x6')](_0x9edd('0x9'),util[_0x9edd('0xa')](_0x9edd('0xb'),_0x5319f7,this['getDataValue'](_0x9edd('0xc'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'unique':_0x9edd('0xd'),'validate':{'isEmail':!![]},'set':function(_0x523026){if(_0x523026){this[_0x9edd('0x6')](_0x9edd('0xd'),_0x523026['toLowerCase']());}}},'role':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0xf'),_0x9edd('0x10'),_0x9edd('0x11'),_0x9edd('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':_0x9edd('0x13')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x9edd('0xc'),'set':function(_0x44fc7c){this[_0x9edd('0x6')](_0x9edd('0xc'),_0x44fc7c);this[_0x9edd('0x6')](_0x9edd('0x14'),_0x44fc7c);this[_0x9edd('0x6')](_0x9edd('0x9'),util['format'](_0x9edd('0xb'),this[_0x9edd('0x15')](_0x9edd('0x16')),_0x44fc7c));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x9edd('0x4')]},'mobile':{'type':Sequelize[_0x9edd('0x4')]},'address':{'type':Sequelize[_0x9edd('0x4')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x9edd('0x4')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x9edd('0x4')]},'online':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x9edd('0x18')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x9edd('0x19')},'ipaddr':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x9edd('0x18')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x1a'),'user',_0x9edd('0x1b')),'allowNull':!![],'defaultValue':_0x9edd('0x1a')},'context':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':_0x9edd('0x1c')},'callingpres':{'type':Sequelize['ENUM'](_0x9edd('0x1d'),_0x9edd('0x1e'),_0x9edd('0x1f'),_0x9edd('0x20'),_0x9edd('0x21'),_0x9edd('0x22'),_0x9edd('0x23'),_0x9edd('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':_0x9edd('0x25'),'set':function(_0x5af178){this[_0x9edd('0x6')](_0x9edd('0x26'),_0x5af178?_0x5af178[_0x9edd('0x27')](','):null);},'get':function(){return this['getDataValue'](_0x9edd('0x26'))?this[_0x9edd('0x15')](_0x9edd('0x26'))[_0x9edd('0x28')](','):null;},'comment':_0x9edd('0x29')},'dtmfmode':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2a'),_0x9edd('0x2b'),_0x9edd('0x2c'),_0x9edd('0x2d'),_0x9edd('0x2e')),'allowNull':!![],'defaultValue':_0x9edd('0x2a')},'directmedia':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no','nonat',_0x9edd('0x30'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x6de835){this[_0x9edd('0x6')](_0x9edd('0x31'),_0x6de835?_0x6de835[_0x9edd('0x27')](','):null);},'get':function(){return this[_0x9edd('0x15')](_0x9edd('0x31'))?this[_0x9edd('0x15')](_0x9edd('0x31'))[_0x9edd('0x28')](','):null;},'comment':_0x9edd('0x32')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x9edd('0x4')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x9edd('0x4')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x9edd('0x4')]},'disallow':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'defaultValue':_0x9edd('0x33')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9edd('0x34'),'set':function(_0xcbd0ef){this[_0x9edd('0x6')]('allow',_0xcbd0ef?_0xcbd0ef[_0x9edd('0x27')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x9edd('0x15')](_0x9edd('0x35'))?this['getDataValue'](_0x9edd('0x35'))[_0x9edd('0x28')](';'):null;},'comment':_0x9edd('0x36')},'autoframing':{'type':Sequelize[_0x9edd('0xe')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'set':function(_0x5bbdf8){this[_0x9edd('0x6')](_0x9edd('0x37'),_0x5bbdf8?_0x5bbdf8['join'](','):null);},'get':function(){return this[_0x9edd('0x15')]('insecure')?this['getDataValue'](_0x9edd('0x37'))[_0x9edd('0x28')](','):null;},'comment':_0x9edd('0x38')},'trustrpid':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no',_0x9edd('0x39')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':_0x9edd('0x3a')},'amaflags':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x9edd('0x2f')},'busylevel':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no',_0x9edd('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x3c'),_0x9edd('0x3d'),_0x9edd('0x3e')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x9edd('0xe')]('uac',_0x9edd('0x3f')),'allowNull':!![],'defaultValue':_0x9edd('0x3f')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x9edd('0x2f')},'keepalive':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no','fingerprint',_0x9edd('0x40')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x41'),_0x9edd('0x42'),_0x9edd('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x9edd('0xe')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no',_0x9edd('0x44'),_0x9edd('0x30'),_0x9edd('0x45')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x9edd('0x46')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0,'set':function(_0x3e9a3e){this[_0x9edd('0x6')](_0x9edd('0x47'),_0x3e9a3e);var _0x5df1d7=this[_0x9edd('0x48')]({'plain':!![]});switch(_0x3e9a3e){case 0x0:case 0x1:var _0x507cce=_0x5df1d7[_0x9edd('0x26')]?_[_0x9edd('0x49')](_0x5df1d7[_0x9edd('0x26')])?_0x5df1d7['transport'][_0x9edd('0x27')]():_0x5df1d7['transport']:_0x9edd('0x25');if(_0x507cce===_0x9edd('0x4a')){_0x507cce='udp';}this[_0x9edd('0x6')]('transport',_0x507cce);this[_0x9edd('0x6')](_0x9edd('0x4b'),'no');this[_0x9edd('0x6')]('avpf',null);this[_0x9edd('0x6')](_0x9edd('0x4c'),null);this[_0x9edd('0x6')](_0x9edd('0x4d'),null);this[_0x9edd('0x6')]('dtlsenable',null);this['setDataValue'](_0x9edd('0x4e'),null);this[_0x9edd('0x6')]('dtlssetup',null);this['setDataValue']('dtlscertfile',null);this[_0x9edd('0x6')]('dtlsprivatekey',null);this['setDataValue'](_0x9edd('0x4f'),'no');break;case 0x2:this[_0x9edd('0x6')]('transport',_0x9edd('0x4a'));this[_0x9edd('0x6')](_0x9edd('0x4b'),'yes');this[_0x9edd('0x6')]('avpf',_0x9edd('0x2f'));this[_0x9edd('0x6')]('force_avp',_0x9edd('0x2f'));this[_0x9edd('0x6')]('icesupport',_0x9edd('0x2f'));this[_0x9edd('0x6')](_0x9edd('0x50'),_0x9edd('0x2f'));this['setDataValue'](_0x9edd('0x4e'),'no');this['setDataValue'](_0x9edd('0x51'),_0x9edd('0x43'));this[_0x9edd('0x6')]('dtlscertfile',_0x5df1d7[_0x9edd('0x52')]||_0x9edd('0x53'));this[_0x9edd('0x6')](_0x9edd('0x54'),_0x5df1d7[_0x9edd('0x54')]||_0x9edd('0x55'));this[_0x9edd('0x6')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0x9edd('0x56')],'set':function(_0x3c7874){this[_0x9edd('0x6')](_0x9edd('0x57'),_0x3c7874?_0x3c7874[_0x9edd('0x27')](','):[]);},'get':function(){return this['getDataValue'](_0x9edd('0x57'))?_[_0x9edd('0x58')](this[_0x9edd('0x15')]('permissions')[_0x9edd('0x28')](','),function(_0x29d70d){return parseInt(_0x29d70d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x9edd('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x9edd('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x9edd('0xe')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x9edd('0x4')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x9edd('0x59')],'get':function(){return this[_0x9edd('0x15')](_0x9edd('0x5a'))?this['getDataValue']('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'interface':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![],'set':function(_0x1eabcd){if(typeof _0x1eabcd===_0x9edd('0x5b')){var _0xef1397=_0x1eabcd==='1'?!![]:_0x1eabcd==='0'?![]:_0x1eabcd==='true'?!![]:_0x1eabcd===_0x9edd('0x5c')?![]:![];this[_0x9edd('0x6')](_0x9edd('0x5d'),_0xef1397);}else{this[_0x9edd('0x6')](_0x9edd('0x5d'),_0x1eabcd);}}},'blocked':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![],'set':function(_0x14fa8a){this['setDataValue'](_0x9edd('0x5e'),_0x14fa8a);if(_0x14fa8a===!![]){this[_0x9edd('0x6')]('blockedAt',moment());this[_0x9edd('0x6')](_0x9edd('0x5f'),0x0);}else{this['setDataValue'](_0x9edd('0x60'),null);}}},'blockedAt':{'type':Sequelize[_0x9edd('0x46')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x9edd('0x18')](0x5)[_0x9edd('0x61')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0}};
\ No newline at end of file
index c0931b5..662f8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf29f=['faxPause','openchannelPause','smsPause','whatsappPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','unpause','getTeams','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','Team','getAssociatedQueues','addAgent','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','flattenDeep','removeAgent','getLists','getVoiceQueues','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','omit','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$ne','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','lastName','Contact','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','inbound','flatten','getAgents','lower','col','toString','asc','desc','substring','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unavailable','ringing','voiceStatus','toUpperCase','slice','select','InteractionId','field','ui.createdAt','user_has_','_interactions','OpenTabs','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APINotFoundError','handleError','../../mysqldb','./user.socket','register','redis','localhost','client','request','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','status','end','offset','limit','undefined','count','set','json','update','emit','get','role','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','value','includes','find','name','UserProfileResource','destroy','sendStatus','stack','send','index','rawAttributes','fieldName','type','key','salt','where','User','query','includeAll','include','userSetting','true','attributes','findAll','rows','openTabs','length','push','chat','dataValues','mail','whatsapp','all','show','model','differenceBy','keys','password','filters','intersection','fields','UserSetting','options','sms','openchannel','fax','body','describe','addContacts','params','ids','Setting','findById','securePassword','validatePasswordPattern','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','VoiceMail','fullname','email','permissions','101','102','103','113','110','104','105','106','107','109','100','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','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','telephone','isEmpty','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','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','spread','Queue:save','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','isArray','QueueId','Queue:remove','userpic','file','filename','getAvatar','join','root','existsSync','server/files/images/','download','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WHATSAPP','getContacts','CmContact','sort','pick','merge','hasOwnProperty','CmList','List','Tags','tag','Queue','order','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','FaxInteraction','getFaxInteractions','WhatsappInteraction','getWhatsappInteractions','login','phone','LOCAL/%s@from-sip/n','intrf','user:%s','headers','x-forwarded-for','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','MemberReport','concat','isMiddleware','resolve','QueuePause','pause','updateAttributes','DEFAULT\x20PAUSE','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause'];(function(_0x294dde,_0x5de89a){var _0x396f6c=function(_0x9e0bce){while(--_0x9e0bce){_0x294dde['push'](_0x294dde['shift']());}};_0x396f6c(++_0x5de89a);}(_0xf29f,0x87));var _0xff29=function(_0x1f0a22,_0x199a06){_0x1f0a22=_0x1f0a22-0x0;var _0xd8b67f=_0xf29f[_0x1f0a22];return _0xd8b67f;};'use strict';var moment=require('moment');var util=require('util');var path=require(_0xff29('0x0'));var fs=require('fs');var _=require(_0xff29('0x1'));var squel=require(_0xff29('0x2'));var jayson=require(_0xff29('0x3'));var Redis=require(_0xff29('0x4'));var authService=require(_0xff29('0x5'));var qs=require(_0xff29('0x6'));var logger=require(_0xff29('0x7'))(_0xff29('0x8'));var utils=require(_0xff29('0x9'));var config=require(_0xff29('0xa'));var licenseUtil=require(_0xff29('0xb'));var APIBadRequestError=require(_0xff29('0xc'))['APIBadRequestError'];var APINotFoundError=require(_0xff29('0xc'))[_0xff29('0xd')];var APIHandleError=require(_0xff29('0xc'))[_0xff29('0xe')];var db=require(_0xff29('0xf'))['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xff29('0x10'))[_0xff29('0x11')](socket);config[_0xff29('0x12')]=_['defaults'](config['redis'],{'host':_0xff29('0x13'),'port':0x18eb});var amiClient=jayson[_0xff29('0x14')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x437d72,_0x2e4de7,_0x92ddd1,_0x2b883a){return new Promise(function(_0x12af73,_0x3a5060){var _0x1c6a84=_0x2b883a||amiClient;return _0x1c6a84[_0xff29('0x15')](_0x437d72,_0x92ddd1)[_0xff29('0x16')](function(_0x5e9921){logger[_0xff29('0x17')](_0xff29('0x18'),_0x2e4de7,'request\x20sent');logger[_0xff29('0x19')](_0xff29('0x1a'),_0x2e4de7,_0xff29('0x1b'),JSON['stringify'](_0x5e9921));if(_0x5e9921[_0xff29('0x1c')]){if(_0x5e9921[_0xff29('0x1c')][_0xff29('0x1d')]===0x1f4){logger[_0xff29('0x1c')](_0xff29('0x18'),_0x2e4de7,_0x5e9921[_0xff29('0x1c')][_0xff29('0x1e')]);return _0x3a5060(_0x5e9921[_0xff29('0x1c')]['message']);}logger[_0xff29('0x1c')](_0xff29('0x18'),_0x2e4de7,_0x5e9921['error'][_0xff29('0x1e')]);return _0x12af73(_0x5e9921[_0xff29('0x1c')]['message']);}else{logger[_0xff29('0x17')](_0xff29('0x18'),_0x2e4de7,_0xff29('0x1b'));_0x12af73(_0x5e9921[_0xff29('0x1f')]['message']);}})[_0xff29('0x20')](function(_0x57e74c){logger[_0xff29('0x1c')](_0xff29('0x18'),_0x2e4de7,_0x57e74c);_0x3a5060(_0x57e74c);});});}function respondWithStatusCode(_0x5172f4,_0x1db81f){_0x1db81f=_0x1db81f||0xcc;return function(_0x2de1ea){if(_0x2de1ea){return _0x5172f4['sendStatus'](_0x1db81f);}return _0x5172f4[_0xff29('0x21')](_0x1db81f)[_0xff29('0x22')]();};}function respondWithResult(_0x3c4e21,_0x2d30e7){_0x2d30e7=_0x2d30e7||0xc8;return function(_0x1e96a4){if(_0x1e96a4){return _0x3c4e21['status'](_0x2d30e7)['json'](_0x1e96a4);}};}function respondWithFilteredResult(_0x59ff5c,_0x2fc4b1){return function(_0x165d5b){if(_0x165d5b){var _0x2322c3=typeof _0x2fc4b1[_0xff29('0x23')]==='undefined'&&typeof _0x2fc4b1[_0xff29('0x24')]===_0xff29('0x25');var _0x225f41=_0x165d5b[_0xff29('0x26')];var _0x3bb42b=_0x2322c3?0x0:_0x2fc4b1[_0xff29('0x23')];var _0x35cc88=_0x2322c3?_0x165d5b[_0xff29('0x26')]:_0x2fc4b1[_0xff29('0x23')]+_0x2fc4b1[_0xff29('0x24')];var _0x1a7311;if(_0x35cc88>=_0x225f41){_0x35cc88=_0x225f41;_0x1a7311=0xc8;}else{_0x1a7311=0xce;}_0x59ff5c[_0xff29('0x21')](_0x1a7311);return _0x59ff5c[_0xff29('0x27')]('Content-Range',_0x3bb42b+'-'+_0x35cc88+'/'+_0x225f41)[_0xff29('0x28')](_0x165d5b);}return null;};}function saveUpdates(_0x17c83b){return function(_0xc98d03){if(_0xc98d03){return _0xc98d03[_0xff29('0x29')](_0x17c83b)[_0xff29('0x16')](function(_0x499507){socket[_0xff29('0x2a')]('userNotification:recalc:'+_0x499507['id'],{});return _0x499507;});}return null;};}function removeEntity(_0x4e75c8){return function(_0x568131){if(_0x568131){return _0x568131['destroy']()[_0xff29('0x16')](function(){var _0x5076f5=_0x568131[_0xff29('0x2b')]({'plain':!![]});if(_0x5076f5[_0xff29('0x2c')]===_0xff29('0x2d'))return;var _0x2dba51=[{'name':_0xff29('0x2e'),'value':_0xff29('0x2f'),'ignore':!![]},{'name':_0xff29('0x30'),'value':_0xff29('0x31'),'ignore':![]},{'name':_0xff29('0x32'),'value':'telephone','ignore':![]}];var _0x1a5d6c=_(_0x2dba51)[_0xff29('0x33')](_0xff29('0x34'))[_0xff29('0x35')](_0xff29('0x36'))['value']();if(_[_0xff29('0x37')](_0x1a5d6c,_0x5076f5[_0xff29('0x2c')])){return;}var _0x53f230=_[_0xff29('0x38')](_0x2dba51,[_0xff29('0x36'),_0x5076f5[_0xff29('0x2c')]])[_0xff29('0x39')];return db[_0xff29('0x3a')][_0xff29('0x3b')]({'where':{'type':_0x53f230,'resourceId':_0x5076f5['id']}})[_0xff29('0x16')](function(){return _0x568131;});})[_0xff29('0x16')](function(){_0x4e75c8[_0xff29('0x21')](0xcc)[_0xff29('0x22')]();});}};}function handleEntityNotFound(_0x4df61c){return function(_0x490568){if(!_0x490568){_0x4df61c[_0xff29('0x3c')](0x194);}return _0x490568;};}function handleError(_0x1856d4,_0x18b887){_0x18b887=_0x18b887||0x1f4;return function(_0x104aa8){logger[_0xff29('0x1c')](_0x104aa8[_0xff29('0x3d')]);if(_0x104aa8['name']){delete _0x104aa8['name'];}_0x1856d4[_0xff29('0x21')](_0x18b887)[_0xff29('0x3e')](_0x104aa8);};}exports[_0xff29('0x3f')]=function(_0x138845,_0x2afa57){var _0x15b616={},_0x1d4bd0={'count':0x0,'rows':[]};var _0x1c3d51=_(db['User'][_0xff29('0x40')])[_0xff29('0x35')](function(_0x1b2da4){return{'name':_0x1b2da4[_0xff29('0x41')],'type':_0x1b2da4[_0xff29('0x42')][_0xff29('0x43')]};})['filter'](function(_0xfbb302){return!_[_0xff29('0x37')](['password',_0xff29('0x44')],_0xfbb302[_0xff29('0x39')]);})[_0xff29('0x36')]();_0x15b616=qs['getOptions'](_0x1c3d51,_0x138845);var _0x2c336d={'where':_0x15b616[_0xff29('0x45')]};return db[_0xff29('0x46')][_0xff29('0x26')](_0x2c336d)[_0xff29('0x16')](function(_0x4eafa8){_0x1d4bd0[_0xff29('0x26')]=_0x4eafa8;if(_0x138845[_0xff29('0x47')][_0xff29('0x48')]){_0x15b616[_0xff29('0x49')]=[{'all':!![]}];}if(_0x138845[_0xff29('0x47')][_0xff29('0x4a')]===_0xff29('0x4b')){_0x15b616['include']=[{'model':db['UserSetting'],'as':'userSetting'}];}if(!_[_0xff29('0x37')](_0x15b616['attributes'],'id')){_0x15b616[_0xff29('0x4c')]['push']('id');}return db['User'][_0xff29('0x4d')](_0x15b616);})['then'](function(_0x44f98f){_0x1d4bd0[_0xff29('0x4e')]=_0x44f98f;if(_0x138845[_0xff29('0x47')][_0xff29('0x4f')]==='true'){var _0x49f836=[];for(var _0x26be5f=0x0;_0x26be5f<_0x1d4bd0[_0xff29('0x4e')][_0xff29('0x50')];_0x26be5f++){_0x49f836[_0xff29('0x51')](get_open_tabs(_0xff29('0x52'),_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836['push'](get_open_tabs('sms',_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836[_0xff29('0x51')](get_open_tabs('fax',_0x1d4bd0['rows'][_0x26be5f]['dataValues']));_0x49f836[_0xff29('0x51')](get_open_tabs(_0xff29('0x54'),_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836[_0xff29('0x51')](get_open_tabs('openchannel',_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836[_0xff29('0x51')](get_open_tabs(_0xff29('0x55'),_0x1d4bd0[_0xff29('0x4e')][_0x26be5f]['dataValues']));}return Promise[_0xff29('0x56')](_0x49f836)[_0xff29('0x16')](function(){return _0x1d4bd0;});}else{return _0x1d4bd0;}})[_0xff29('0x16')](respondWithFilteredResult(_0x2afa57,_0x15b616))['catch'](handleError(_0x2afa57,null));};exports[_0xff29('0x57')]=function(_0x346dc3,_0x4733f0){var _0x209209={'raw':![],'where':{'id':_0x346dc3['params']['id']}},_0x4b758a={};_0x4b758a[_0xff29('0x58')]=_[_0xff29('0x59')](_[_0xff29('0x5a')](db[_0xff29('0x46')]['rawAttributes']),[_0xff29('0x5b'),_0xff29('0x44')]);_0x4b758a['query']=_[_0xff29('0x5a')](_0x346dc3[_0xff29('0x47')]);_0x4b758a[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x4b758a[_0xff29('0x58')],_0x4b758a[_0xff29('0x47')]);_0x209209[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x4b758a[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x346dc3[_0xff29('0x47')][_0xff29('0x5e')]));_0x209209[_0xff29('0x4c')]=_0x209209[_0xff29('0x4c')][_0xff29('0x50')]?_0x209209[_0xff29('0x4c')]:_0x4b758a[_0xff29('0x58')];if(_0x346dc3['query'][_0xff29('0x48')]){_0x209209['include']=[{'all':!![]}];}if(_0x346dc3[_0xff29('0x47')][_0xff29('0x4a')]===_0xff29('0x4b')){_0x209209[_0xff29('0x49')]=[{'model':db[_0xff29('0x5f')],'as':_0xff29('0x4a')}];}_0x209209=_['merge']({},_0x209209,_0x346dc3[_0xff29('0x60')]);if(!_['includes'](_0x209209[_0xff29('0x4c')],'id')){_0x209209['attributes'][_0xff29('0x51')]('id');}return db['User'][_0xff29('0x38')](_0x209209)['then'](handleEntityNotFound(_0x4733f0,null))[_0xff29('0x16')](function(_0x2d8f44){var _0x3927f2=[];values=_0x2d8f44;if(_0x346dc3[_0xff29('0x47')]['openTabs']===_0xff29('0x4b')){_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x52'),_0x2d8f44[_0xff29('0x53')]));_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x61'),_0x2d8f44['dataValues']));_0x3927f2['push'](get_open_tabs(_0xff29('0x62'),_0x2d8f44[_0xff29('0x53')]));_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x55'),_0x2d8f44[_0xff29('0x53')]));_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x63'),_0x2d8f44['dataValues']));_0x3927f2['push'](get_open_tabs(_0xff29('0x54'),_0x2d8f44[_0xff29('0x53')]));return Promise[_0xff29('0x56')](_0x3927f2);}else{return values;}})['then'](function(){return values;})[_0xff29('0x16')](respondWithResult(_0x4733f0,null))[_0xff29('0x20')](handleError(_0x4733f0,null));};exports['update']=function(_0x1bc597,_0x47cf2d){if(_0x1bc597[_0xff29('0x64')]['id']){delete _0x1bc597['body']['id'];}delete _0x1bc597['body']['role'];return db[_0xff29('0x46')]['find']({'where':{'id':_0x1bc597['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x47cf2d,null))[_0xff29('0x16')](saveUpdates(_0x1bc597[_0xff29('0x64')],null))[_0xff29('0x16')](respondWithResult(_0x47cf2d,null))[_0xff29('0x20')](handleError(_0x47cf2d,null));};exports['describe']=function(_0x283803,_0x35993c){return db['User'][_0xff29('0x65')]()[_0xff29('0x16')](respondWithResult(_0x35993c,null))[_0xff29('0x20')](handleError(_0x35993c,null));};exports[_0xff29('0x66')]=function(_0x80993c,_0x372012){return db[_0xff29('0x46')]['find']({'where':{'id':_0x80993c[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x372012,null))[_0xff29('0x16')](function(_0x18910d){if(_0x18910d){return _0x18910d[_0xff29('0x66')](_0x80993c[_0xff29('0x64')][_0xff29('0x68')],_['omit'](_0x80993c[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x372012,null))[_0xff29('0x20')](handleError(_0x372012,null));};function validateUser(_0x320c31){return new Promise(function(_0x5da39e,_0x132a46){if(_0x320c31['internal'])return _0x5da39e(_0x320c31);return db[_0xff29('0x69')][_0xff29('0x6a')](0x1)[_0xff29('0x16')](function(_0x471059){if(_0x471059[_0xff29('0x6b')])authService[_0xff29('0x6c')](_0x320c31[_0xff29('0x5b')]);db[_0xff29('0x46')]['max'](_0xff29('0x6d'))[_0xff29('0x16')](function(_0x5cc21d){if(_[_0xff29('0x6e')](_0x5cc21d)){_0x320c31[_0xff29('0x6d')]=_0x471059[_0xff29('0x6f')]||0x1;return;}if(_[_0xff29('0x6e')](_0x471059[_0xff29('0x6f')])||_0x471059[_0xff29('0x6f')]===_0x5cc21d){_0x320c31[_0xff29('0x6d')]=_0x5cc21d+0x1;return;}if(_0x471059[_0xff29('0x6f')]>_0x5cc21d){_0x320c31[_0xff29('0x6d')]=_0x471059[_0xff29('0x6f')];return;}return db[_0xff29('0x70')][_0xff29('0x47')](_0xff29('0x71'),{'type':db[_0xff29('0x70')][_0xff29('0x72')][_0xff29('0x73')]})[_0xff29('0x16')](function(_0x16a975){if(_0x16a975&&_0x16a975[_0xff29('0x50')]){for(var _0xe7235f=0x0,_0x16a42a=_0x16a975[_0xff29('0x50')];_0xe7235f<_0x16a42a&&_[_0xff29('0x6e')](_0x320c31[_0xff29('0x6d')]);_0xe7235f++){if(_0x471059[_0xff29('0x6f')]<=_0x16a975[_0xe7235f][_0xff29('0x74')]){_0x320c31[_0xff29('0x6d')]=_0x16a975[_0xe7235f][_0xff29('0x74')];}else if(_0x471059[_0xff29('0x6f')]>_0x16a975[_0xe7235f][_0xff29('0x74')]&&_0x471059['min_internal']<=_0x16a975[_0xe7235f]['to']){_0x320c31[_0xff29('0x6d')]=_0x471059['min_internal'];}}}if(_[_0xff29('0x6e')](_0x320c31['internal'])){_0x320c31[_0xff29('0x6d')]=_0x5cc21d+0x1;}return _0x5da39e(_0x320c31);});});})['catch'](function(_0x498d4e){_0x132a46(_0x498d4e);});});}function updateUser(_0x505bf8){return new Promise(function(_0x2227a2,_0x18c5a6){try{if(_0x505bf8[_0xff29('0x75')]){_0x505bf8['mailbox']=_0x505bf8[_0xff29('0x6d')];_0x505bf8[_0xff29('0x76')]={'mailbox':_0x505bf8[_0xff29('0x6d')],'password':_0x505bf8['password'],'fullname':_0x505bf8[_0xff29('0x77')],'email':_0x505bf8[_0xff29('0x78')]};}if(_0x505bf8['role']==='agent'){if(!_0x505bf8[_0xff29('0x79')])_0x505bf8['permissions']=[_0xff29('0x7a'),_0xff29('0x7b'),_0xff29('0x7c'),_0xff29('0x7d'),_0xff29('0x7e'),_0xff29('0x7f'),_0xff29('0x80'),_0xff29('0x81'),_0xff29('0x82'),'108',_0xff29('0x83'),_0xff29('0x84'),'111',_0xff29('0x85'),_0xff29('0x86')];}_0x2227a2(_0x505bf8);}catch(_0x4b1e24){_0x18c5a6(_0x4b1e24);}});}exports[_0xff29('0x87')]=function(_0x186d50,_0x3b39fa){if(_0x186d50[_0xff29('0x2f')][_0xff29('0x2c')]===_0xff29('0x31'))throw new Error(_0xff29('0x88'));if(_0x186d50[_0xff29('0x64')]['role']===_0xff29('0x2f')&&_0x186d50[_0xff29('0x2f')][_0xff29('0x2c')]!==_0xff29('0x2d')){throw new Error(_0xff29('0x89'));}if(_0x186d50['body'][_0xff29('0x2c')]==='admin'&&_0x186d50['user'][_0xff29('0x2c')]!=='admin'){throw new Error(_0xff29('0x8a'));}return licenseUtil[_0xff29('0x8b')]([_0x186d50['body']])[_0xff29('0x16')](function(){return validateUser(_0x186d50[_0xff29('0x64')]);})['then'](function(_0x2e968f){return updateUser(_0x2e968f)[_0xff29('0x16')](function(_0x37e3da){if(_0x37e3da[_0xff29('0x2c')]===_0xff29('0x2d')){_0x37e3da[_0xff29('0x8c')]=_0x186d50[_0xff29('0x2f')][_0xff29('0x8c')];delete _0x37e3da[_0xff29('0x8d')];}return _0x37e3da;});})[_0xff29('0x16')](function(_0x5c4bc5){return db['User']['create'](_0x5c4bc5,{'include':[{'model':db[_0xff29('0x76')],'as':_0xff29('0x76')}]});})['then'](function(_0x765bc0){if(_0x186d50[_0xff29('0x64')][_0xff29('0x2c')]===_0xff29('0x2f'))return _0x765bc0;if(_0x186d50[_0xff29('0x2f')]['role']!==_0xff29('0x2f'))return _0x765bc0;return db[_0xff29('0x8e')]['find']({'where':{'name':_0x765bc0[_0xff29('0x2c')]===_0xff29('0x31')?_0xff29('0x30'):_0xff29('0x32'),'userProfileId':_0x186d50[_0xff29('0x2f')][_0xff29('0x8d')]},'raw':!![]})[_0xff29('0x16')](function(_0x30cffb){if(!_0x30cffb||_0x30cffb[_0xff29('0x8f')]!=0x0)return _0x765bc0;return db[_0xff29('0x3a')][_0xff29('0x87')]({'name':_0x765bc0[_0xff29('0x39')],'resourceId':_0x765bc0['id'],'type':_0x30cffb['name'],'sectionId':_0x30cffb['id']},{})[_0xff29('0x16')](function(){return _0x765bc0;});})[_0xff29('0x20')](function(_0x15fd72){logger[_0xff29('0x1c')](_0xff29('0x90'),_0x15fd72);throw _0x15fd72;});})['then'](respondWithResult(_0x3b39fa,0xc9))[_0xff29('0x20')](handleError(_0x3b39fa,null));};exports[_0xff29('0x91')]=function(_0x1cbb82,_0xf87fe4){var _0x2351e7=_0x1cbb82[_0xff29('0x64')];var _0x486ea8=[];if(_0x1cbb82[_0xff29('0x2f')][_0xff29('0x2c')]===_0xff29('0x31'))throw new Error(_0xff29('0x88'));if(_[_0xff29('0x92')](_0x2351e7,['role',_0xff29('0x2f')])&&_0x1cbb82[_0xff29('0x2f')]['role']!==_0xff29('0x2d')){throw new Error(_0xff29('0x89'));}if(_[_0xff29('0x92')](_0x2351e7,['role',_0xff29('0x2d')])&&_0x1cbb82[_0xff29('0x2f')][_0xff29('0x2c')]!==_0xff29('0x2d')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x2351e7)[_0xff29('0x16')](function(){return validateUser(_0x2351e7[0x0]);})[_0xff29('0x16')](function(){for(var _0x501926=0x1;_0x501926<_0x2351e7['length'];_0x501926++){var _0x5065cc=_0x2351e7[_0x501926-0x1]['internal'];if(!_0x2351e7[_0x501926][_0xff29('0x6d')])_0x2351e7[_0x501926][_0xff29('0x6d')]=_0x5065cc+0x1;_0x486ea8[_0xff29('0x51')](validateUser(_0x2351e7[_0x501926]));}return Promise[_0xff29('0x56')](_0x486ea8);})[_0xff29('0x16')](function(){_0x486ea8=[];for(var _0x1f9fdf=0x0;_0x1f9fdf<_0x2351e7[_0xff29('0x50')];_0x1f9fdf++){_0x486ea8[_0xff29('0x51')](updateUser(_0x2351e7[_0x1f9fdf]));}return Promise['all'](_0x486ea8);})[_0xff29('0x16')](function(){_0x486ea8=_0x2351e7[_0xff29('0x35')](function(_0x291987){return db[_0xff29('0x46')][_0xff29('0x87')](_0x291987,{'include':[{'model':db['VoiceMail'],'as':_0xff29('0x76')}]})[_0xff29('0x16')](function(_0x29dec2){_0x291987['id']=_0x29dec2['id'];return _0x291987;});});return Promise[_0xff29('0x56')](_0x486ea8);})[_0xff29('0x16')](function(_0x2f2c29){if(_0x1cbb82['body'][_0xff29('0x2c')]==='user')return _0x2f2c29;if(_0x1cbb82['user'][_0xff29('0x2c')]!=='user')return _0x2f2c29;var _0x4f486e=_[_0xff29('0x92')](_0x2f2c29,function(_0x58c3f8){return _0x58c3f8[_0xff29('0x2c')]==='agent'||_0x58c3f8['role']===_0xff29('0x93');});if(!_0x4f486e)return _0x2f2c29;return db['UserProfileSection'][_0xff29('0x4d')]({'where':{'name':{'$or':[_0xff29('0x30'),'Telephones']},'userProfileId':_0x1cbb82[_0xff29('0x2f')][_0xff29('0x8d')]},'raw':!![]})[_0xff29('0x16')](function(_0x285ad9){if(_[_0xff29('0x94')](_0x285ad9)||!_[_0xff29('0x92')](_0x285ad9,[_0xff29('0x8f'),0x0]))return _0x2f2c29;_0x486ea8=[];var _0x29c74e=_(_0x285ad9)[_0xff29('0x35')](function(_0x58daa7){if(_0x58daa7[_0xff29('0x8f')]===0x1)return;return _0x58daa7['name']==='Agents'?'agent':'telephone';})['compact']()[_0xff29('0x36')]();for(var _0x55ea22=0x0;_0x55ea22<_0x2f2c29['length'];_0x55ea22++){if(!_[_0xff29('0x37')](_0x29c74e,_0x2f2c29[_0x55ea22]['role']))return;var _0x413d94=_0x2f2c29[_0x55ea22][_0xff29('0x2c')]===_0xff29('0x31')?'Agents':_0xff29('0x32');_0x486ea8[_0xff29('0x51')](db[_0xff29('0x3a')][_0xff29('0x87')]({'name':_0x2f2c29[_0x55ea22][_0xff29('0x39')],'resourceId':_0x2f2c29[_0x55ea22]['id'],'type':_0x413d94,'sectionId':_[_0xff29('0x38')](_0x285ad9,['name',_0x413d94])['id']},{}));}return Promise[_0xff29('0x56')](_0x486ea8);});})[_0xff29('0x16')](respondWithResult(_0xf87fe4,0xc9))[_0xff29('0x20')](handleError(_0xf87fe4,null));};exports[_0xff29('0x95')]=function(_0x158396,_0x194c1a){if(_0x158396['body']['id']){delete _0x158396['body']['id'];}return db[_0xff29('0x46')]['find']({'where':{'id':_0x158396[_0xff29('0x67')]['id']}})[_0xff29('0x16')](function(_0x26d651){if(!_0x26d651)return null;if(_0x26d651['id']===_0x158396[_0xff29('0x2f')]['id']){if(!_0x158396['body'][_0xff29('0x96')]||!_0x158396['body'][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9a'));}if(!_0x26d651['authenticate'](_0x158396['body'][_0xff29('0x96')])){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9b'));}if(_0x158396[_0xff29('0x64')][_0xff29('0x96')]===_0x158396[_0xff29('0x64')][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9c'));}}else if(_0x158396['user'][_0xff29('0x2c')]===_0xff29('0x2d')){if(!_0x158396[_0xff29('0x64')][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x158396['user'][_0xff29('0x2c')]===_0xff29('0x2f')){if(!_0x158396['body'][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9d'));}if(_0x26d651[_0xff29('0x2c')]!==_0xff29('0x31')){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x88'));}}else{throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x88'));}return _0x26d651;})[_0xff29('0x16')](handleEntityNotFound(_0x194c1a,null))[_0xff29('0x16')](function(_0x38a256){return db[_0xff29('0x69')][_0xff29('0x9e')]({'attributes':['id',_0xff29('0x6b'),_0xff29('0x9f'),_0xff29('0xa0')]})[_0xff29('0x16')](function(_0x5cf198){if(_0x5cf198[_0xff29('0x6b')])authService['validatePasswordPattern'](_0x158396[_0xff29('0x64')]['newPassword']);if(!_0x5cf198['enforcePasswordHistory']||!_0x38a256[_0xff29('0xa1')])return _0x38a256;authService[_0xff29('0xa2')](_0x158396['body']['newPassword'],_0x38a256[_0xff29('0xa1')],_0x5cf198['passwordHistoryLimit']);return _0x38a256;})[_0xff29('0x16')](saveUpdates({'password':_0x158396[_0xff29('0x64')][_0xff29('0x97')],'passwordResetAt':_0x158396['user']['id']==_0x158396[_0xff29('0x67')]['id']?moment():null,'previousPasswords':authService[_0xff29('0xa3')](_0x158396['body'][_0xff29('0x97')],_0x38a256[_0xff29('0xa1')])},null));})['then'](respondWithResult(_0x194c1a,null))[_0xff29('0x20')](handleError(_0x194c1a,null));};exports['addQueues']=function(_0x1c4c5c,_0x450974){var _0x15c2a5=_0x1c4c5c[_0xff29('0x64')][_0xff29('0xa4')];return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x1c4c5c[_0xff29('0x67')]['id']},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c'),_0xff29('0xa5'),_0xff29('0xa6'),_0xff29('0xa7'),_0xff29('0xa8')]})[_0xff29('0x16')](handleEntityNotFound(_0x450974,null))[_0xff29('0x16')](function(_0x155d5a){if(_0x155d5a){if(!utils[_0xff29('0xa9')](_0x15c2a5)){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0xaa'));}return _0x155d5a[_0xff29('0xab')+_[_0xff29('0xac')](_0x15c2a5[_0xff29('0xad')]())+_0xff29('0xae')](_0x1c4c5c[_0xff29('0x64')][_0xff29('0x68')],{'penalty':_0x1c4c5c[_0xff29('0x64')][_0xff29('0xaf')]||0x0})[_0xff29('0xb0')](function(_0x116287){for(var _0x1d0ed7=0x0;_0x1d0ed7<_0x1c4c5c[_0xff29('0x64')]['ids']['length'];_0x1d0ed7+=0x1){var _0x43a1f9={'UserId':Number(_0x1c4c5c['params']['id'])};_0x43a1f9[_['capitalize'](_0x15c2a5['toLowerCase']())+'QueueId']=Number(_0x1c4c5c[_0xff29('0x64')]['ids'][_0x1d0ed7]);socket[_0xff29('0x2a')](_0xff29('0x2f')+_[_0xff29('0xac')](_0x15c2a5[_0xff29('0xad')]())+_0xff29('0xb1'),_0x43a1f9);}return _0x116287;})[_0xff29('0x16')](function(){if(_0x15c2a5===_0xff29('0xb2')){return db[_0xff29('0xb3')]['findAll']({'where':{'id':_0x1c4c5c[_0xff29('0x64')][_0xff29('0x68')]||[]},'raw':!![],'attributes':['id','name']});}})[_0xff29('0x16')](function(_0x569191){var _0x285c6e=_0x155d5a[_0xff29('0x2b')]({'plain':!![]});var _0x3fca25=[];if(_0x15c2a5==='voice'&&_0x285c6e[_0xff29('0x2c')]===_0xff29('0x31')&&_0x285c6e['online']){for(let _0x1c355d=0x0;_0x1c355d<_0x569191[_0xff29('0x50')];_0x1c355d+=0x1){_0x3fca25[_0xff29('0x51')]({'membername':_0x285c6e[_0xff29('0x39')],'UserId':_0x285c6e['id'],'queue_name':_0x569191[_0x1c355d][_0xff29('0x39')],'VoiceQueueId':_0x569191[_0x1c355d]['id'],'interface':_[_0xff29('0x6e')](_0x285c6e[_0xff29('0xa8')])?util[_0xff29('0xb4')](_0xff29('0xb5'),_0x285c6e[_0xff29('0x39')]):_0x285c6e[_0xff29('0xa8')],'paused':_0x285c6e[_0xff29('0xa7')]||![],'penalty':_0x1c4c5c['body'][_0xff29('0xaf')]||0x0});}return Promise[_0xff29('0x56')](_0x3fca25[_0xff29('0x35')](function(_0x469377){return db[_0xff29('0xb6')][_0xff29('0xb7')](_0x469377);}));}return _0x155d5a;});}})[_0xff29('0x16')](respondWithStatusCode(_0x450974,null))['catch'](handleError(_0x450974,null));};exports[_0xff29('0xb8')]=function(_0x3bd074,_0xa7732){var _0x30b347,_0x241146;return db[_0xff29('0x46')]['find']({'where':{'id':_0x3bd074['params']['id']},'attributes':['id','name','role']})[_0xff29('0x16')](handleEntityNotFound(_0xa7732,null))['then'](function(_0x28c2ef){if(_0x28c2ef){_0x30b347=_0x28c2ef;if(!_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')]||!utils[_0xff29('0xa9')](_0x3bd074[_0xff29('0x47')]['channel'])){throw new db[(_0xff29('0x98'))]['ValidationError'](_0xff29('0xaa'));}return _0x28c2ef[_0xff29('0xb9')+_[_0xff29('0xac')](_0x3bd074[_0xff29('0x47')]['channel'][_0xff29('0xad')]())+_0xff29('0xae')](_0x3bd074[_0xff29('0x47')]['ids']);}})[_0xff29('0x16')](function(_0xf19bbb){if(_[_0xff29('0xba')](_0x3bd074[_0xff29('0x47')]['ids'])){for(var _0x39a93c=0x0;_0x39a93c<_0x3bd074['query'][_0xff29('0x68')][_0xff29('0x50')];_0x39a93c+=0x1){_0x241146={'UserId':Number(_0x3bd074['params']['id'])};_0x241146[_[_0xff29('0xac')](_0x3bd074[_0xff29('0x47')]['channel'][_0xff29('0xad')]())+'QueueId']=Number(_0x3bd074[_0xff29('0x47')][_0xff29('0x68')][_0x39a93c]);socket['emit'](_0xff29('0x2f')+_[_0xff29('0xac')](_0x3bd074['query']['channel'][_0xff29('0xad')]())+'Queue:remove',_0x241146);}}else{_0x241146={'UserId':Number(_0x3bd074[_0xff29('0x67')]['id'])};_0x241146[_['capitalize'](_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')][_0xff29('0xad')]())+_0xff29('0xbb')]=Number(_0x3bd074[_0xff29('0x47')][_0xff29('0x68')]);socket[_0xff29('0x2a')](_0xff29('0x2f')+_[_0xff29('0xac')](_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')][_0xff29('0xad')]())+_0xff29('0xbc'),_0x241146);}return _0xf19bbb;})[_0xff29('0x16')](function(){if(_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')]===_0xff29('0xb2')){return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'UserId':_0x3bd074[_0xff29('0x67')]['id'],'VoiceQueueId':_0x3bd074[_0xff29('0x47')][_0xff29('0x68')]},'individualHooks':!![]})[_0xff29('0x16')](function(){return _0x30b347;});}return _0x30b347;})['then'](respondWithStatusCode(_0xa7732,null))[_0xff29('0x20')](handleError(_0xa7732,null));};exports['addAvatar']=function(_0x35c466,_0x1231b0){_0x35c466[_0xff29('0x64')][_0xff29('0xbd')]=_0x35c466[_0xff29('0xbe')][_0xff29('0xbf')];return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x35c466[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1231b0,null))[_0xff29('0x16')](saveUpdates(_0x35c466[_0xff29('0x64')],null))['then'](respondWithResult(_0x1231b0,null))['catch'](handleError(_0x1231b0,null));};exports[_0xff29('0xc0')]=function(_0x1ababc,_0x126274){var _0x72053f=path[_0xff29('0xc1')](config[_0xff29('0xc2')],'server/files/images/logos/default_profile.png');return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x1ababc['params']['id']},'attributes':['id','userpic'],'raw':!![]})[_0xff29('0x16')](handleEntityNotFound(_0x126274,null))['then'](function(_0x586929){if(_0x586929){if(_[_0xff29('0x6e')](_0x586929[_0xff29('0xbd')])){return _0x126274['download'](_0x72053f);}else{if(!fs[_0xff29('0xc3')](path[_0xff29('0xc1')](config[_0xff29('0xc2')],_0xff29('0xc4'),_0x586929[_0xff29('0xbd')]))){return _0x126274['download'](_0x72053f);}return _0x126274[_0xff29('0xc5')](path['join'](config[_0xff29('0xc2')],_0xff29('0xc4'),_0x586929['userpic']));}}})[_0xff29('0x20')](handleError(_0x126274,null));};exports[_0xff29('0xc6')]=function(_0x357e36,_0x36d159){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x357e36[_0xff29('0x67')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x36d159,null))[_0xff29('0x16')](function(_0x44bfe8){var _0x1e7b32=[];values=_0x44bfe8['dataValues'];_0x1e7b32[_0xff29('0x51')](get_open_tabs(_0xff29('0x52'),_0x44bfe8[_0xff29('0x53')]));_0x1e7b32[_0xff29('0x51')](get_open_tabs(_0xff29('0x61'),_0x44bfe8['dataValues']));_0x1e7b32['push'](get_open_tabs('openchannel',_0x44bfe8['dataValues']));_0x1e7b32['push'](get_open_tabs(_0xff29('0x55'),_0x44bfe8[_0xff29('0x53')]));_0x1e7b32[_0xff29('0x51')](get_open_tabs('fax',_0x44bfe8[_0xff29('0x53')]));_0x1e7b32[_0xff29('0x51')](get_open_tabs(_0xff29('0x54'),_0x44bfe8[_0xff29('0x53')]));return Promise[_0xff29('0x56')](_0x1e7b32);})[_0xff29('0x16')](function(_0x323c3e){if(_0x323c3e){var _0x19608b=_[_0xff29('0x35')](values[_0xff29('0xc7')],function(_0x464e41){return{'channel':_0xff29('0xc8'),'id':_0x464e41['id'],'createdAt':_0x464e41[_0xff29('0xc9')]};});var _0x51ab5c=_[_0xff29('0x35')](values['FaxOpenTabs'],function(_0x5454fd){return{'channel':_0xff29('0xca'),'id':_0x5454fd['id'],'createdAt':_0x5454fd['createdAt']};});var _0x910c13=_[_0xff29('0x35')](values[_0xff29('0xcb')],function(_0x3cd211){return{'channel':_0xff29('0xcc'),'id':_0x3cd211['id'],'createdAt':_0x3cd211['createdAt']};});var _0x31c75f=_[_0xff29('0x35')](values[_0xff29('0xcd')],function(_0x7246e5){return{'channel':_0xff29('0xce'),'id':_0x7246e5['id'],'createdAt':_0x7246e5[_0xff29('0xc9')]};});var _0x264171=_[_0xff29('0x35')](values[_0xff29('0xcf')],function(_0x203c31){return{'channel':_0xff29('0xd0'),'id':_0x203c31['id'],'createdAt':_0x203c31[_0xff29('0xc9')]};});var _0x46fc6d=_[_0xff29('0x35')](values['WhatsappOpenTabs'],function(_0x40dba9){return{'channel':_0xff29('0xd1'),'id':_0x40dba9['id'],'createdAt':_0x40dba9['createdAt']};});var _0x378f4e=_['concat'](_0x19608b,_0x51ab5c,_0x910c13,_0x31c75f,_0x264171,_0x46fc6d);var _0x4e0074={'count':_0x378f4e[_0xff29('0x50')],'rows':_0x378f4e};return _0x4e0074;}else return null;})[_0xff29('0x16')](respondWithResult(_0x36d159,null))[_0xff29('0x20')](handleError(_0x36d159,null));};exports[_0xff29('0xd2')]=function(_0x273721,_0x218bc0){var _0xaebad={};var _0x52e899={};var _0x1e8c4a;var _0x4850c9;return db['User']['findOne']({'where':{'id':_0x273721[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x218bc0,null))[_0xff29('0x16')](function(_0x5913f5){if(_0x5913f5){_0x1e8c4a=_0x5913f5;_0x52e899[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xd3')]['rawAttributes']);_0x52e899['query']=_[_0xff29('0x5a')](_0x273721[_0xff29('0x47')]);_0x52e899[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x52e899[_0xff29('0x58')],_0x52e899[_0xff29('0x47')]);_0xaebad[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x52e899[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x273721[_0xff29('0x47')]['fields']));_0xaebad[_0xff29('0x4c')]=_0xaebad[_0xff29('0x4c')]['length']?_0xaebad[_0xff29('0x4c')]:_0x52e899[_0xff29('0x58')];_0xaebad['order']=qs['sort'](_0x273721[_0xff29('0x47')][_0xff29('0xd4')]);_0xaebad['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x273721[_0xff29('0x47')],_0x52e899[_0xff29('0x5c')]));if(_0x273721[_0xff29('0x47')][_0xff29('0x33')]){_0xaebad['where']=_['merge'](_0xaebad[_0xff29('0x45')],{'$or':_['map'](_0xaebad['attributes'],function(_0x225831){var _0x2967a2={};_0x2967a2[_0x225831]={'$like':'%'+_0x273721[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x2967a2;})});}_0xaebad=_[_0xff29('0xd6')]({},_0xaebad,_0x273721[_0xff29('0x60')]);return _0x1e8c4a[_0xff29('0xd2')](_0xaebad);}})[_0xff29('0x16')](function(_0x40e2a7){if(_0x40e2a7){_0x4850c9=_0x40e2a7[_0xff29('0x50')];if(_0x273721[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0x48'))){_0xaebad[_0xff29('0x49')]=[{'model':db[_0xff29('0xd8')],'as':_0xff29('0xd9'),'required':![]},{'model':db['Tag'],'as':_0xff29('0xda'),'attributes':['id','name','color'],'where':_0x273721['query'][_0xff29('0xdb')]?{'id':_0x273721[_0xff29('0x47')][_0xff29('0xdb')]}:undefined,'required':_0x273721[_0xff29('0x47')][_0xff29('0xdb')]?!![]:![]}];}if(!_0x273721[_0xff29('0x47')]['hasOwnProperty']('nolimit')){_0xaebad[_0xff29('0x24')]=qs['limit'](_0x273721[_0xff29('0x47')]['limit']);_0xaebad['offset']=qs['offset'](_0x273721[_0xff29('0x47')][_0xff29('0x23')]);}return _0x1e8c4a[_0xff29('0xd2')](_0xaebad);}})[_0xff29('0x16')](function(_0x4032cc){if(_0x4032cc){return _0x4032cc?{'count':_0x4850c9,'rows':_0x4032cc}:null;}})[_0xff29('0x16')](respondWithResult(_0x218bc0,null))[_0xff29('0x20')](handleError(_0x218bc0,null));};exports['getQueues']=function(_0x4c6d29,_0x5d19a6){var _0x11aaae;var _0x309017={};var _0x20ceba;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x4c6d29[_0xff29('0x67')]['id']},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c')]})[_0xff29('0x16')](handleEntityNotFound(_0x5d19a6,null))[_0xff29('0x16')](function(_0x38402b){if(!utils[_0xff29('0xa9')](_0x4c6d29[_0xff29('0x47')]['channel'])){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0xaa'));}_0x11aaae=_0x38402b;var _0x352d91={};_0x352d91[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_[_0xff29('0xac')](_0x4c6d29[_0xff29('0x47')]['channel'])+_0xff29('0xdc')][_0xff29('0x40')]);_0x352d91['query']=_['keys'](_0x4c6d29[_0xff29('0x47')]);_0x352d91[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x352d91[_0xff29('0x58')],_0x352d91['query']);_0x309017['attributes']=_[_0xff29('0x5d')](_0x352d91['model'],qs[_0xff29('0x5e')](_0x4c6d29[_0xff29('0x47')][_0xff29('0x5e')]));_0x309017[_0xff29('0x4c')]=_0x309017['attributes'][_0xff29('0x50')]?_0x309017[_0xff29('0x4c')]:_0x352d91[_0xff29('0x58')];_0x309017[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x4c6d29[_0xff29('0x47')][_0xff29('0xd4')]);_0x309017[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x4c6d29[_0xff29('0x47')],_0x352d91['filters']));if(_0x4c6d29[_0xff29('0x47')][_0xff29('0x33')]){_0x309017[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x309017[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x309017[_0xff29('0x4c')],function(_0x3040c2){var _0x365196={};_0x365196[_0x3040c2]={'$like':'%'+_0x4c6d29[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x365196;})});}_0x309017=_[_0xff29('0xd6')]({},_0x309017,_0x4c6d29[_0xff29('0x60')]);switch(_0x11aaae['role']){case _0xff29('0x2d'):return db[_[_0xff29('0xac')](_0x4c6d29[_0xff29('0x47')][_0xff29('0xa4')])+'Queue'][_0xff29('0x4d')](_0x309017);case'user':case _0xff29('0x31'):return _0x11aaae[_0xff29('0x2b')+_['capitalize'](_0x4c6d29['query'][_0xff29('0xa4')])+_0xff29('0xae')](_0x309017);default:throw new db['Sequelize']['ValidationError'](_0xff29('0xde'));}})[_0xff29('0x16')](function(_0x5d2bf4){_0x20ceba=_0x5d2bf4['length'];if(!_0x4c6d29[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x309017[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x4c6d29['query'][_0xff29('0x24')]);_0x309017[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x4c6d29[_0xff29('0x47')][_0xff29('0x23')]);}switch(_0x11aaae['role']){case'admin':return db[_[_0xff29('0xac')](_0x4c6d29['query'][_0xff29('0xa4')])+'Queue'][_0xff29('0x4d')](_0x309017);case _0xff29('0x2f'):case _0xff29('0x31'):return _0x11aaae['get'+_[_0xff29('0xac')](_0x4c6d29[_0xff29('0x47')][_0xff29('0xa4')])+_0xff29('0xae')](_0x309017);}})[_0xff29('0x16')](function(_0x2960c6){return{'count':_0x20ceba,'rows':_0x2960c6};})[_0xff29('0x16')](respondWithResult(_0x5d19a6,null))['catch'](handleError(_0x5d19a6,null));};exports[_0xff29('0xe0')]=function(_0x1e09d3,_0x3e4f0d){var _0x2a985d={};var _0xee22fd={};var _0x20d212;var _0x52b880;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x1e09d3[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3e4f0d,null))[_0xff29('0x16')](function(_0x7c3de9){if(_0x7c3de9){_0x20d212=_0x7c3de9;_0xee22fd[_0xff29('0x58')]=_['keys'](db[_0xff29('0xb6')]['rawAttributes']);_0xee22fd[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x1e09d3[_0xff29('0x47')]);_0xee22fd[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0xee22fd['model'],_0xee22fd['query']);_0x2a985d[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0xee22fd[_0xff29('0x58')],qs['fields'](_0x1e09d3[_0xff29('0x47')][_0xff29('0x5e')]));_0x2a985d[_0xff29('0x4c')]=_0x2a985d[_0xff29('0x4c')][_0xff29('0x50')]?_0x2a985d[_0xff29('0x4c')]:_0xee22fd['model'];_0x2a985d[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x1e09d3[_0xff29('0x47')][_0xff29('0xd4')]);_0x2a985d[_0xff29('0x45')]=qs['filters'](_[_0xff29('0xd5')](_0x1e09d3[_0xff29('0x47')],_0xee22fd[_0xff29('0x5c')]));if(_0x1e09d3['query'][_0xff29('0x33')]){_0x2a985d[_0xff29('0x45')]=_['merge'](_0x2a985d[_0xff29('0x45')],{'$or':_['map'](_0x2a985d[_0xff29('0x4c')],function(_0x220996){var _0xc21c1e={};_0xc21c1e[_0x220996]={'$like':'%'+_0x1e09d3[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0xc21c1e;})});}_0x2a985d=_[_0xff29('0xd6')]({},_0x2a985d,_0x1e09d3[_0xff29('0x60')]);return _0x20d212[_0xff29('0xe0')](_0x2a985d);}})[_0xff29('0x16')](function(_0x1ad086){if(_0x1ad086){_0x52b880=_0x1ad086[_0xff29('0x50')];if(!_0x1e09d3[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x2a985d[_0xff29('0x24')]=qs['limit'](_0x1e09d3[_0xff29('0x47')][_0xff29('0x24')]);_0x2a985d[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x1e09d3[_0xff29('0x47')][_0xff29('0x23')]);}return _0x20d212['getVoiceQueuesRt'](_0x2a985d);}})[_0xff29('0x16')](function(_0x8ce490){if(_0x8ce490){return _0x8ce490?{'count':_0x52b880,'rows':_0x8ce490}:null;}})[_0xff29('0x16')](respondWithResult(_0x3e4f0d,null))[_0xff29('0x20')](handleError(_0x3e4f0d,null));};exports[_0xff29('0xe1')]=function(_0x2243bd,_0x1b8c05){var _0x50f47f={};var _0x5c8531={};var _0x3fd37a;var _0x57bc23;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x2243bd[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1b8c05,null))[_0xff29('0x16')](function(_0x428de0){if(_0x428de0){_0x3fd37a=_0x428de0;_0x5c8531[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xe2')][_0xff29('0x40')]);_0x5c8531[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x2243bd['query']);_0x5c8531[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x5c8531['model'],_0x5c8531['query']);_0x50f47f[_0xff29('0x4c')]=_['intersection'](_0x5c8531[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x2243bd[_0xff29('0x47')][_0xff29('0x5e')]));_0x50f47f['attributes']=_0x50f47f['attributes']['length']?_0x50f47f[_0xff29('0x4c')]:_0x5c8531['model'];_0x50f47f[_0xff29('0xdd')]=qs['sort'](_0x2243bd[_0xff29('0x47')][_0xff29('0xd4')]);_0x50f47f['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x2243bd[_0xff29('0x47')],_0x5c8531[_0xff29('0x5c')]));if(_0x2243bd[_0xff29('0x47')]['filter']){_0x50f47f[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x50f47f[_0xff29('0x45')],{'$or':_['map'](_0x50f47f[_0xff29('0x4c')],function(_0x49ceb5){var _0x5af10e={};_0x5af10e[_0x49ceb5]={'$like':'%'+_0x2243bd[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x5af10e;})});}_0x50f47f=_[_0xff29('0xd6')]({},_0x50f47f,_0x2243bd[_0xff29('0x60')]);return _0x3fd37a[_0xff29('0xe1')](_0x50f47f);}})[_0xff29('0x16')](function(_0x305904){if(_0x305904){_0x57bc23=_0x305904['length'];if(!_0x2243bd[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x50f47f[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x2243bd[_0xff29('0x47')][_0xff29('0x24')]);_0x50f47f['offset']=qs[_0xff29('0x23')](_0x2243bd['query'][_0xff29('0x23')]);}return _0x3fd37a[_0xff29('0xe1')](_0x50f47f);}})['then'](function(_0x22f872){if(_0x22f872){return _0x22f872?{'count':_0x57bc23,'rows':_0x22f872}:null;}})['then'](respondWithResult(_0x1b8c05,null))[_0xff29('0x20')](handleError(_0x1b8c05,null));};exports[_0xff29('0xe3')]=function(_0x19c702,_0x2a5b6e){var _0x2e6a0b={'raw':!![],'where':{}};var _0x35020d={};var _0x9f8f7b={'count':0x0,'rows':[]};return db[_0xff29('0x46')]['findOne']({'where':{'id':_0x19c702[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x2a5b6e,null))[_0xff29('0x16')](function(_0x270fc2){if(_0x270fc2){_0x35020d['model']=_[_0xff29('0x5a')](db['VoiceRecording'][_0xff29('0x40')]);_0x35020d['query']=_['keys'](_0x19c702['query']);_0x35020d[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x35020d['model'],_0x35020d[_0xff29('0x47')]);_0x2e6a0b[_0xff29('0x4c')]=_['intersection'](_0x35020d['model'],qs[_0xff29('0x5e')](_0x19c702[_0xff29('0x47')][_0xff29('0x5e')]));_0x2e6a0b[_0xff29('0x4c')]=_0x2e6a0b['attributes']['length']?_0x2e6a0b[_0xff29('0x4c')]:_0x35020d[_0xff29('0x58')];if(!_0x19c702[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x2e6a0b[_0xff29('0x24')]=qs['limit'](_0x19c702[_0xff29('0x47')][_0xff29('0x24')]);_0x2e6a0b['offset']=qs[_0xff29('0x23')](_0x19c702[_0xff29('0x47')][_0xff29('0x23')]);}_0x2e6a0b[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x19c702[_0xff29('0x47')]['sort']);_0x2e6a0b['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x19c702['query'],_0x35020d[_0xff29('0x5c')]));_0x2e6a0b['where'][_0xff29('0xe4')]=_0x270fc2['id'];if(_0x19c702['query'][_0xff29('0x33')]){_0x2e6a0b['where']=_['merge'](_0x2e6a0b['where'],{'$or':_[_0xff29('0x35')](_0x2e6a0b[_0xff29('0x4c')],function(_0x227f03){var _0x4d010c={};_0x4d010c[_0x227f03]={'$like':'%'+_0x19c702[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x4d010c;})});}_0x2e6a0b=_['merge']({},_0x2e6a0b,_0x19c702[_0xff29('0x60')]);return db[_0xff29('0xe5')][_0xff29('0x26')]({'where':_0x2e6a0b[_0xff29('0x45')]})['then'](function(_0x1b9f9e){_0x9f8f7b[_0xff29('0x26')]=_0x1b9f9e;if(_0x19c702[_0xff29('0x47')]['includeAll']){_0x2e6a0b[_0xff29('0x49')]=[{'all':!![]}];}return db[_0xff29('0xe5')]['findAll'](_0x2e6a0b);})[_0xff29('0x16')](function(_0x3b5d61){_0x9f8f7b[_0xff29('0x4e')]=_0x3b5d61;return _0x9f8f7b;});}})['then'](respondWithFilteredResult(_0x2a5b6e,_0x2e6a0b))[_0xff29('0x20')](handleError(_0x2a5b6e,null));};exports[_0xff29('0xe6')]=function(_0x1d8540,_0x4c2e91){var _0x3517eb={'raw':!![],'where':{}};var _0x25b31f={};var _0x22bc10={'count':0x0,'rows':[]};return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x1d8540[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x4c2e91,null))[_0xff29('0x16')](function(_0x3e8c4c){if(_0x3e8c4c){_0x25b31f[_0xff29('0x58')]=_['keys'](db[_0xff29('0xe7')][_0xff29('0x40')]);_0x25b31f[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x1d8540[_0xff29('0x47')]);_0x25b31f[_0xff29('0x5c')]=_['intersection'](_0x25b31f['model'],_0x25b31f[_0xff29('0x47')]);_0x3517eb[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x25b31f['model'],qs[_0xff29('0x5e')](_0x1d8540[_0xff29('0x47')][_0xff29('0x5e')]));_0x3517eb[_0xff29('0x4c')]=_0x3517eb['attributes'][_0xff29('0x50')]?_0x3517eb['attributes']:_0x25b31f[_0xff29('0x58')];if(!_0x1d8540['query'][_0xff29('0xd7')](_0xff29('0xdf'))){_0x3517eb[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x1d8540[_0xff29('0x47')][_0xff29('0x24')]);_0x3517eb[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x1d8540[_0xff29('0x47')][_0xff29('0x23')]);}_0x3517eb['order']=qs['sort'](_0x1d8540['query']['sort']);_0x3517eb[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x1d8540[_0xff29('0x47')],_0x25b31f[_0xff29('0x5c')]));_0x3517eb[_0xff29('0x45')][_0xff29('0xe4')]=_0x3e8c4c['id'];if(_0x1d8540[_0xff29('0x47')][_0xff29('0x33')]){_0x3517eb['where']=_[_0xff29('0xd6')](_0x3517eb[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x3517eb[_0xff29('0x4c')],function(_0x19c841){var _0x4b5df9={};_0x4b5df9[_0x19c841]={'$like':'%'+_0x1d8540['query']['filter']+'%'};return _0x4b5df9;})});}_0x3517eb=_['merge']({},_0x3517eb,_0x1d8540[_0xff29('0x60')]);return db['ScreenRecording'][_0xff29('0x26')]({'where':_0x3517eb['where']})[_0xff29('0x16')](function(_0x5cf86c){_0x22bc10[_0xff29('0x26')]=_0x5cf86c;if(_0x1d8540['query'][_0xff29('0x48')]){_0x3517eb[_0xff29('0x49')]=[{'all':!![]}];}return db[_0xff29('0xe7')][_0xff29('0x4d')](_0x3517eb);})[_0xff29('0x16')](function(_0x5be7dd){_0x22bc10['rows']=_0x5be7dd;return _0x22bc10;});}})['then'](respondWithFilteredResult(_0x4c2e91,_0x3517eb))[_0xff29('0x20')](handleError(_0x4c2e91,null));};exports[_0xff29('0xe8')]=function(_0x6e7f8,_0x39821d){var _0x4e9b1e={};var _0x27c85c={};var _0x2a50a0;var _0x19544e;return db['User']['findOne']({'where':{'id':_0x6e7f8[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x39821d,null))['then'](function(_0x4fdb3b){if(_0x4fdb3b){_0x2a50a0=_0x4fdb3b;_0x27c85c[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xe9')][_0xff29('0x40')]);_0x27c85c['query']=_[_0xff29('0x5a')](_0x6e7f8[_0xff29('0x47')]);_0x27c85c[_0xff29('0x5c')]=_['intersection'](_0x27c85c['model'],_0x27c85c['query']);_0x4e9b1e[_0xff29('0x4c')]=_['intersection'](_0x27c85c['model'],qs[_0xff29('0x5e')](_0x6e7f8[_0xff29('0x47')][_0xff29('0x5e')]));_0x4e9b1e['attributes']=_0x4e9b1e[_0xff29('0x4c')][_0xff29('0x50')]?_0x4e9b1e[_0xff29('0x4c')]:_0x27c85c[_0xff29('0x58')];_0x4e9b1e[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x6e7f8[_0xff29('0x47')][_0xff29('0xd4')]);_0x4e9b1e[_0xff29('0x45')]=qs[_0xff29('0x5c')](_['pick'](_0x6e7f8[_0xff29('0x47')],_0x27c85c['filters']));if(_0x6e7f8[_0xff29('0x47')][_0xff29('0x33')]){_0x4e9b1e[_0xff29('0x45')]=_['merge'](_0x4e9b1e[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x4e9b1e['attributes'],function(_0x5b58c9){var _0x157505={};_0x157505[_0x5b58c9]={'$like':'%'+_0x6e7f8['query'][_0xff29('0x33')]+'%'};return _0x157505;})});}_0x4e9b1e=_[_0xff29('0xd6')]({},_0x4e9b1e,_0x6e7f8[_0xff29('0x60')]);return _0x2a50a0[_0xff29('0xe8')](_0x4e9b1e);}})['then'](function(_0x1dcfc5){if(_0x1dcfc5){_0x19544e=_0x1dcfc5[_0xff29('0x50')];if(!_0x6e7f8[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x4e9b1e[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x6e7f8[_0xff29('0x47')][_0xff29('0x24')]);_0x4e9b1e[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x6e7f8[_0xff29('0x47')][_0xff29('0x23')]);}return _0x2a50a0[_0xff29('0xe8')](_0x4e9b1e);}})[_0xff29('0x16')](function(_0x56be68){if(_0x56be68){return _0x56be68?{'count':_0x19544e,'rows':_0x56be68}:null;}})[_0xff29('0x16')](respondWithResult(_0x39821d,null))[_0xff29('0x20')](handleError(_0x39821d,null));};exports[_0xff29('0xea')]=function(_0x5bc42d,_0x466bb7){var _0x21c185={};var _0x241643={};var _0x5d5728;var _0x3cb33b;return db[_0xff29('0x46')]['findOne']({'where':{'id':_0x5bc42d[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x466bb7,null))[_0xff29('0x16')](function(_0x3076c8){if(_0x3076c8){_0x5d5728=_0x3076c8;_0x241643['model']=_[_0xff29('0x5a')](db['OpenchannelInteraction']['rawAttributes']);_0x241643['query']=_[_0xff29('0x5a')](_0x5bc42d[_0xff29('0x47')]);_0x241643['filters']=_['intersection'](_0x241643['model'],_0x241643[_0xff29('0x47')]);_0x21c185[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x241643[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x5bc42d['query'][_0xff29('0x5e')]));_0x21c185['attributes']=_0x21c185[_0xff29('0x4c')]['length']?_0x21c185[_0xff29('0x4c')]:_0x241643[_0xff29('0x58')];_0x21c185[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x5bc42d['query'][_0xff29('0xd4')]);_0x21c185['where']=qs['filters'](_['pick'](_0x5bc42d[_0xff29('0x47')],_0x241643[_0xff29('0x5c')]));if(_0x5bc42d['query'][_0xff29('0x33')]){_0x21c185[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x21c185[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x21c185[_0xff29('0x4c')],function(_0x3cc171){var _0xd75fb3={};_0xd75fb3[_0x3cc171]={'$like':'%'+_0x5bc42d['query'][_0xff29('0x33')]+'%'};return _0xd75fb3;})});}_0x21c185=_[_0xff29('0xd6')]({},_0x21c185,_0x5bc42d[_0xff29('0x60')]);return _0x5d5728[_0xff29('0xea')](_0x21c185);}})['then'](function(_0xee4a6c){if(_0xee4a6c){_0x3cb33b=_0xee4a6c[_0xff29('0x50')];if(!_0x5bc42d[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x21c185[_0xff29('0x24')]=qs['limit'](_0x5bc42d[_0xff29('0x47')][_0xff29('0x24')]);_0x21c185[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x5bc42d[_0xff29('0x47')]['offset']);}return _0x5d5728['getOpenchannelInteractions'](_0x21c185);}})[_0xff29('0x16')](function(_0x208f4e){if(_0x208f4e){return _0x208f4e?{'count':_0x3cb33b,'rows':_0x208f4e}:null;}})[_0xff29('0x16')](respondWithResult(_0x466bb7,null))[_0xff29('0x20')](handleError(_0x466bb7,null));};exports[_0xff29('0xeb')]=function(_0x2ddaab,_0x53a075){var _0x270287={'raw':!![],'where':{}};var _0x37d44c={};var _0x1f9d18={'count':0x0,'rows':[]};return db['User'][_0xff29('0x9e')]({'where':{'id':_0x2ddaab[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x53a075,null))[_0xff29('0x16')](function(_0x33504b){if(_0x33504b){_0x37d44c['model']=_[_0xff29('0x5a')](db[_0xff29('0xec')]['rawAttributes']);_0x37d44c[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x2ddaab['query']);_0x37d44c[_0xff29('0x5c')]=_['intersection'](_0x37d44c['model'],_0x37d44c[_0xff29('0x47')]);_0x270287[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x37d44c['model'],qs['fields'](_0x2ddaab[_0xff29('0x47')][_0xff29('0x5e')]));_0x270287[_0xff29('0x4c')]=_0x270287[_0xff29('0x4c')][_0xff29('0x50')]?_0x270287[_0xff29('0x4c')]:_0x37d44c[_0xff29('0x58')];if(!_0x2ddaab[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x270287[_0xff29('0x24')]=qs['limit'](_0x2ddaab[_0xff29('0x47')][_0xff29('0x24')]);_0x270287[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x2ddaab[_0xff29('0x47')][_0xff29('0x23')]);}_0x270287['order']=qs[_0xff29('0xd4')](_0x2ddaab[_0xff29('0x47')]['sort']);_0x270287['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x2ddaab[_0xff29('0x47')],_0x37d44c[_0xff29('0x5c')]));_0x270287[_0xff29('0x45')][_0xff29('0xe4')]=_0x33504b['id'];if(_0x2ddaab['query']['filter']){_0x270287[_0xff29('0x45')]=_['merge'](_0x270287[_0xff29('0x45')],{'$or':_['map'](_0x270287['attributes'],function(_0x3eed33){var _0x5a486c={};_0x5a486c[_0x3eed33]={'$like':'%'+_0x2ddaab[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x5a486c;})});}_0x270287=_[_0xff29('0xd6')]({},_0x270287,_0x2ddaab[_0xff29('0x60')]);return db[_0xff29('0xec')][_0xff29('0x26')]({'where':_0x270287[_0xff29('0x45')]})[_0xff29('0x16')](function(_0x374e8c){_0x1f9d18[_0xff29('0x26')]=_0x374e8c;if(_0x2ddaab['query'][_0xff29('0x48')]){_0x270287[_0xff29('0x49')]=[{'all':!![]}];}return db[_0xff29('0xec')][_0xff29('0x4d')](_0x270287);})[_0xff29('0x16')](function(_0x7ffc4a){_0x1f9d18[_0xff29('0x4e')]=_0x7ffc4a;return _0x1f9d18;});}})['then'](respondWithFilteredResult(_0x53a075,_0x270287))[_0xff29('0x20')](handleError(_0x53a075,null));};exports[_0xff29('0xed')]=function(_0x31326b,_0x3bc533){var _0x3c2185={};var _0x320d21={};var _0x45b595;var _0x58cd74;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x31326b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3bc533,null))['then'](function(_0x241f66){if(_0x241f66){_0x45b595=_0x241f66;_0x320d21[_0xff29('0x58')]=_['keys'](db['SmsInteraction'][_0xff29('0x40')]);_0x320d21[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x31326b[_0xff29('0x47')]);_0x320d21[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x320d21['model'],_0x320d21[_0xff29('0x47')]);_0x3c2185[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x320d21[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x31326b[_0xff29('0x47')]['fields']));_0x3c2185[_0xff29('0x4c')]=_0x3c2185['attributes'][_0xff29('0x50')]?_0x3c2185['attributes']:_0x320d21['model'];_0x3c2185['order']=qs['sort'](_0x31326b[_0xff29('0x47')]['sort']);_0x3c2185[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x31326b[_0xff29('0x47')],_0x320d21[_0xff29('0x5c')]));if(_0x31326b[_0xff29('0x47')][_0xff29('0x33')]){_0x3c2185[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x3c2185['where'],{'$or':_[_0xff29('0x35')](_0x3c2185[_0xff29('0x4c')],function(_0x104181){var _0x3666ce={};_0x3666ce[_0x104181]={'$like':'%'+_0x31326b[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x3666ce;})});}_0x3c2185=_[_0xff29('0xd6')]({},_0x3c2185,_0x31326b[_0xff29('0x60')]);return _0x45b595[_0xff29('0xed')](_0x3c2185);}})[_0xff29('0x16')](function(_0x2b029c){if(_0x2b029c){_0x58cd74=_0x2b029c[_0xff29('0x50')];if(!_0x31326b[_0xff29('0x47')][_0xff29('0xd7')]('nolimit')){_0x3c2185[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x31326b[_0xff29('0x47')]['limit']);_0x3c2185['offset']=qs[_0xff29('0x23')](_0x31326b['query']['offset']);}return _0x45b595['getSmsInteractions'](_0x3c2185);}})[_0xff29('0x16')](function(_0x1846dc){if(_0x1846dc){return _0x1846dc?{'count':_0x58cd74,'rows':_0x1846dc}:null;}})[_0xff29('0x16')](respondWithResult(_0x3bc533,null))[_0xff29('0x20')](handleError(_0x3bc533,null));};exports['getFaxInteractions']=function(_0xb59d1c,_0x4ca06e){var _0x3ffa67={};var _0x56ffad={};var _0x4ee5c7;var _0x467522;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0xb59d1c[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4ca06e,null))[_0xff29('0x16')](function(_0x12a188){if(_0x12a188){_0x4ee5c7=_0x12a188;_0x56ffad[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xee')][_0xff29('0x40')]);_0x56ffad[_0xff29('0x47')]=_[_0xff29('0x5a')](_0xb59d1c['query']);_0x56ffad[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x56ffad[_0xff29('0x58')],_0x56ffad[_0xff29('0x47')]);_0x3ffa67['attributes']=_[_0xff29('0x5d')](_0x56ffad[_0xff29('0x58')],qs[_0xff29('0x5e')](_0xb59d1c[_0xff29('0x47')]['fields']));_0x3ffa67['attributes']=_0x3ffa67[_0xff29('0x4c')][_0xff29('0x50')]?_0x3ffa67[_0xff29('0x4c')]:_0x56ffad[_0xff29('0x58')];_0x3ffa67[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0xb59d1c[_0xff29('0x47')][_0xff29('0xd4')]);_0x3ffa67[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0xb59d1c[_0xff29('0x47')],_0x56ffad[_0xff29('0x5c')]));if(_0xb59d1c[_0xff29('0x47')][_0xff29('0x33')]){_0x3ffa67['where']=_[_0xff29('0xd6')](_0x3ffa67[_0xff29('0x45')],{'$or':_['map'](_0x3ffa67[_0xff29('0x4c')],function(_0x5750e6){var _0x41519c={};_0x41519c[_0x5750e6]={'$like':'%'+_0xb59d1c[_0xff29('0x47')]['filter']+'%'};return _0x41519c;})});}_0x3ffa67=_[_0xff29('0xd6')]({},_0x3ffa67,_0xb59d1c[_0xff29('0x60')]);return _0x4ee5c7[_0xff29('0xef')](_0x3ffa67);}})[_0xff29('0x16')](function(_0x2131cf){if(_0x2131cf){_0x467522=_0x2131cf[_0xff29('0x50')];if(!_0xb59d1c[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x3ffa67[_0xff29('0x24')]=qs[_0xff29('0x24')](_0xb59d1c[_0xff29('0x47')]['limit']);_0x3ffa67[_0xff29('0x23')]=qs[_0xff29('0x23')](_0xb59d1c[_0xff29('0x47')][_0xff29('0x23')]);}return _0x4ee5c7['getFaxInteractions'](_0x3ffa67);}})[_0xff29('0x16')](function(_0x177c07){if(_0x177c07){return _0x177c07?{'count':_0x467522,'rows':_0x177c07}:null;}})[_0xff29('0x16')](respondWithResult(_0x4ca06e,null))[_0xff29('0x20')](handleError(_0x4ca06e,null));};exports['getWhatsappInteractions']=function(_0xf17c02,_0x30028a){var _0x46ee7e={};var _0x17902a={};var _0xf313b3;var _0x52db1b;return db['User'][_0xff29('0x9e')]({'where':{'id':_0xf17c02[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x30028a,null))[_0xff29('0x16')](function(_0x3f24f0){if(_0x3f24f0){_0xf313b3=_0x3f24f0;_0x17902a[_0xff29('0x58')]=_['keys'](db[_0xff29('0xf0')]['rawAttributes']);_0x17902a[_0xff29('0x47')]=_[_0xff29('0x5a')](_0xf17c02[_0xff29('0x47')]);_0x17902a[_0xff29('0x5c')]=_['intersection'](_0x17902a[_0xff29('0x58')],_0x17902a['query']);_0x46ee7e[_0xff29('0x4c')]=_['intersection'](_0x17902a[_0xff29('0x58')],qs[_0xff29('0x5e')](_0xf17c02['query'][_0xff29('0x5e')]));_0x46ee7e[_0xff29('0x4c')]=_0x46ee7e['attributes'][_0xff29('0x50')]?_0x46ee7e[_0xff29('0x4c')]:_0x17902a[_0xff29('0x58')];_0x46ee7e['order']=qs['sort'](_0xf17c02[_0xff29('0x47')][_0xff29('0xd4')]);_0x46ee7e[_0xff29('0x45')]=qs['filters'](_['pick'](_0xf17c02[_0xff29('0x47')],_0x17902a[_0xff29('0x5c')]));if(_0xf17c02['query'][_0xff29('0x33')]){_0x46ee7e[_0xff29('0x45')]=_['merge'](_0x46ee7e[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x46ee7e[_0xff29('0x4c')],function(_0x55e8ab){var _0x4af5be={};_0x4af5be[_0x55e8ab]={'$like':'%'+_0xf17c02[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x4af5be;})});}_0x46ee7e=_[_0xff29('0xd6')]({},_0x46ee7e,_0xf17c02['options']);return _0xf313b3[_0xff29('0xf1')](_0x46ee7e);}})[_0xff29('0x16')](function(_0x271f93){if(_0x271f93){_0x52db1b=_0x271f93[_0xff29('0x50')];if(!_0xf17c02[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x46ee7e[_0xff29('0x24')]=qs[_0xff29('0x24')](_0xf17c02[_0xff29('0x47')]['limit']);_0x46ee7e[_0xff29('0x23')]=qs['offset'](_0xf17c02[_0xff29('0x47')][_0xff29('0x23')]);}return _0xf313b3['getWhatsappInteractions'](_0x46ee7e);}})[_0xff29('0x16')](function(_0x4d199f){if(_0x4d199f){return _0x4d199f?{'count':_0x52db1b,'rows':_0x4d199f}:null;}})[_0xff29('0x16')](respondWithResult(_0x30028a,null))[_0xff29('0x20')](handleError(_0x30028a,null));};exports[_0xff29('0xf2')]=function(_0x451c37,_0x4d61e8,_0x2049ad){var _0x2eee92;var _0xa417b7;var _0x3129da;var _0x2bee1b=!_[_0xff29('0x6e')](_0x451c37[_0xff29('0x67')]['id'])?_0x451c37[_0xff29('0x67')]['id']:!_[_0xff29('0x6e')](_0x451c37[_0xff29('0x2f')]['id'])?_0x451c37[_0xff29('0x2f')]['id']:null;return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x2bee1b,'role':{'$or':[_0xff29('0x2d'),_0xff29('0x2f'),_0xff29('0x31')]}},'attributes':['id',_0xff29('0x39'),_0xff29('0xf3'),'mobile',_0xff29('0x2c'),'internal',_0xff29('0xa6')]})[_0xff29('0x16')](function(_0x3b63c2){if(_0x3b63c2){if(_0x3b63c2[_0xff29('0x2c')]===_0xff29('0x31')){_0x2eee92=_0x3b63c2;if(_0x451c37[_0xff29('0x64')][_0xff29('0xa8')]){_0x3129da=util[_0xff29('0xb4')](_0xff29('0xf4'),_0x2eee92[_0x451c37['body'][_0xff29('0xa8')]]);}else if(_0x451c37['body']['intrf']){_0x3129da=util[_0xff29('0xb4')](_0xff29('0xb5'),_0x451c37[_0xff29('0x64')][_0xff29('0xf5')]);}else{_0x3129da=util[_0xff29('0xb4')](_0xff29('0xb5'),_0x2eee92[_0xff29('0x39')]);}socket['to'](util[_0xff29('0xb4')](_0xff29('0xf6'),_0x2eee92['name']))[_0xff29('0x2a')]('user:forcelogout',{'user':{'id':_0x2eee92['id'],'name':_0x2eee92[_0xff29('0x39')]},'ip':_0x451c37[_0xff29('0xf7')][_0xff29('0xf8')]||_0x451c37['connection'][_0xff29('0xf9')]||_0x451c37[_0xff29('0xfa')]['remoteAddress']||_0x451c37[_0xff29('0xfb')]['socket'][_0xff29('0xf9')]});return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'membername':_0x2eee92[_0xff29('0x39')]},'individualHooks':!![]});}}else{throw new db[(_0xff29('0x98'))]['ValidationError'](_0xff29('0xfc'));}})[_0xff29('0x16')](function(){if(_0x2eee92){return _0x2eee92['getVoiceQueues']({'raw':!![]});}})[_0xff29('0x16')](function(_0x1ee065){if(_0x2eee92){if(_0x1ee065){_0xa417b7=_0x1ee065;if(_0xa417b7[_0xff29('0x50')]){var _0x448124=_0xa417b7['map'](function(_0x318016){var _0x461a1d={'membername':_0x2eee92[_0xff29('0x39')],'UserId':_0x2eee92['id'],'queue_name':_0x318016[_0xff29('0x39')],'VoiceQueueId':_0x318016['id'],'interface':_0x3129da,'paused':_0x2eee92['loginInPause']||![],'penalty':_0x318016[_0xff29('0xfd')]||0x0};return db['UserVoiceQueueRt'][_0xff29('0xb7')](_0x461a1d);});return Promise[_0xff29('0x56')](_0x448124);}}}})[_0xff29('0x16')](function(){if(_0x2eee92){return db['MemberReport']['findAll']({'where':{'membername':_0x2eee92[_0xff29('0x39')],'exitAt':null}});}})[_0xff29('0x16')](function(_0x550139){if(_0x2eee92){var _0x28f8ba=[];_0x550139[_0xff29('0xfe')](function(_0xd28778){_0x28f8ba[_0xff29('0x51')](_0xd28778[_0xff29('0x29')]({'exitAt':moment()[_0xff29('0xb4')](_0xff29('0xff'))}));});return Promise['all'](_0x28f8ba);}})[_0xff29('0x16')](function(){if(_0x2eee92){var _0x5d9d9b=[];var _0x141aba=[];var _0x5e9f08=utils[_0xff29('0x100')]();var _0x48dc31={'membername':_0x2eee92[_0xff29('0x39')],'interface':_0x3129da,'enterAt':moment()['format'](_0xff29('0xff')),'role':_0x2eee92[_0xff29('0x2c')],'internal':_0x2eee92[_0xff29('0x6d')]};_0x5e9f08[_0xff29('0xfe')](function(_0x23afa4){_0x5d9d9b[_0xff29('0x51')](_[_0xff29('0xd6')]({'channel':_0x23afa4,'type':_0xff29('0x101'),'data1':_0x451c37['body'][_0xff29('0x102')],'data2':_0x3129da},_0x48dc31));if(_0x2eee92[_0xff29('0xa6')]){_0x141aba[_0xff29('0x51')](_['merge']({'channel':_0x23afa4,'type':_0xff29('0x103'),'data1':_0xff29('0x104')},_0x48dc31));}});return db[_0xff29('0x105')][_0xff29('0x91')](_0x5d9d9b[_0xff29('0x106')](_0x141aba),{'individualHooks':!![]});}})['then'](function(){if(_0x2eee92){return _0x2eee92[_0xff29('0x29')]({'online':!![],'lastLoginAt':moment()[_0xff29('0xb4')](_0xff29('0xff')),'voicePause':_0x2eee92['loginInPause']||![],'mailPause':_0x2eee92['loginInPause']||![],'chatPause':_0x2eee92[_0xff29('0xa6')]||![],'faxPause':_0x2eee92[_0xff29('0xa6')]||![],'smsPause':_0x2eee92['loginInPause']||![],'openchannelPause':_0x2eee92['loginInPause']||![],'whatsappPause':_0x2eee92[_0xff29('0xa6')]||![],'pauseType':_0x2eee92[_0xff29('0xa6')]?'LOGININPAUSE':null,'interface':_0x3129da,'lastPauseAt':moment()[_0xff29('0xb4')](_0xff29('0xff'))});}})[_0xff29('0x16')](function(_0x459729){if(_0x451c37[_0xff29('0x107')]){return _0x2049ad();}else{return Promise[_0xff29('0x108')](_0x459729)[_0xff29('0x16')](respondWithResult(_0x4d61e8,null));}})[_0xff29('0x20')](handleError(_0x4d61e8,null));};exports['logout']=function(_0x13569d,_0x777639){var _0x1a89aa;return db[_0xff29('0x46')]['find']({'where':{'id':_0x13569d[_0xff29('0x67')]['id'],'role':'agent'},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c')]})['then'](handleEntityNotFound(_0x777639,null))['then'](function(_0x7ab48){if(_0x7ab48){_0x1a89aa=_0x7ab48;return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'membername':_0x1a89aa[_0xff29('0x39')]},'individualHooks':!![]});}})[_0xff29('0x16')](function(){return db[_0xff29('0x105')]['findAll']({'where':{'membername':_0x1a89aa[_0xff29('0x39')],'exitAt':null}});})[_0xff29('0x16')](function(_0x186fc5){var _0x57df54=[];_0x186fc5[_0xff29('0xfe')](function(_0x3a6d69){_0x57df54['push'](_0x3a6d69['update']({'exitAt':moment()['format'](_0xff29('0xff'))}));});return Promise[_0xff29('0x56')](_0x57df54);})['then'](function(){return _0x1a89aa[_0xff29('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x777639,null))[_0xff29('0x20')](handleError(_0x777639,null));};exports['pause']=function(_0x42fc02,_0x1d8246){var _0x39ccd5;return db[_0xff29('0xb6')][_0xff29('0x29')]({'paused':0x1},{'where':{'UserId':_0x42fc02['params']['id']},'individualHooks':!![]})['then'](function(){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x42fc02['params']['id'],'role':'agent'},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c'),_0xff29('0x6d'),_0xff29('0xa8'),_0xff29('0xa5')]});})[_0xff29('0x16')](handleEntityNotFound(_0x1d8246,null))['then'](function(_0x2ced3b){if(_0x2ced3b){_0x39ccd5=_0x2ced3b;return respondWithRpcPromise(_0xff29('0x109'),_0xff29('0x10a'),{'id':_0x39ccd5['id'],'name':_0x39ccd5['name'],'pause':!![]});}})[_0xff29('0x16')](function(){if(_0x39ccd5){return db[_0xff29('0x105')][_0xff29('0x4d')]({'where':{'membername':_0x39ccd5['name'],'type':_0xff29('0x103'),'exitAt':null}});}})[_0xff29('0x16')](function(_0x310804){if(_0x310804[_0xff29('0x50')]){var _0x31ab89=moment()[_0xff29('0xb4')](_0xff29('0xff'));for(var _0x334f1d=0x0,_0x469598=_0x310804[_0xff29('0x50')];_0x334f1d<_0x469598;_0x334f1d++){_0x310804[_0x334f1d][_0xff29('0x10b')]({'exitAt':_0x31ab89});}}})[_0xff29('0x16')](function(){var _0x58a768=[];var _0x2a175b=utils[_0xff29('0x100')]();_0x2a175b[_0xff29('0xfe')](function(_0x59df99){_0x58a768[_0xff29('0x51')]({'channel':_0x59df99,'membername':_0x39ccd5['name'],'interface':_[_0xff29('0x6e')](_0x39ccd5['interface'])?util[_0xff29('0xb4')]('SIP/%s',_0x39ccd5[_0xff29('0x39')]):_0x39ccd5[_0xff29('0xa8')],'type':_0xff29('0x103'),'enterAt':moment()['format'](_0xff29('0xff')),'data1':_0x42fc02[_0xff29('0x64')][_0xff29('0x42')]||_0xff29('0x10c'),'role':_0x39ccd5[_0xff29('0x2c')],'internal':_0x39ccd5[_0xff29('0x6d')]});});return db[_0xff29('0x105')][_0xff29('0x91')](_0x58a768,{'individualHooks':!![]});})[_0xff29('0x16')](function(){return _0x39ccd5[_0xff29('0x29')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x42fc02[_0xff29('0x64')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xff29('0xff'))});})[_0xff29('0x16')](respondWithResult(_0x1d8246,null))[_0xff29('0x20')](handleError(_0x1d8246,null));};exports['unpause']=function(_0x2e2bb6,_0x5136cc){if(_0x2e2bb6[_0xff29('0x64')][_0xff29('0xa4')]&&!utils['isValidChannel'](_0x2e2bb6['body']['channel'])){throw new APIBadRequestError(util['format'](_0xff29('0x10d'),_0x2e2bb6[_0xff29('0x64')][_0xff29('0xa4')]));}return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x2e2bb6[_0xff29('0x67')]['id']},'attributes':['id',_0xff29('0x39'),'role',_0xff29('0x6d'),_0xff29('0xa8'),_0xff29('0xa5'),_0xff29('0xa7'),_0xff29('0x10e'),'chatPause',_0xff29('0x10f'),_0xff29('0x110'),_0xff29('0x111'),_0xff29('0x112'),_0xff29('0x113'),'lastPauseAt']})[_0xff29('0x16')](function(_0x5d4393){if(!_0x5d4393){throw new APINotFoundError(util[_0xff29('0xb4')](_0xff29('0x114'),_0x2e2bb6[_0xff29('0x67')]['id']));}return _0x5d4393[_0xff29('0x115')](_0x2e2bb6[_0xff29('0x64')][_0xff29('0xa4')]);})['then'](respondWithResult(_0x5136cc,null))[_0xff29('0x20')](APIHandleError(_0x5136cc));};exports[_0xff29('0x116')]=function(_0x18ff44,_0x29a547){var _0x1500ad={};var _0x23b913={};var _0x162621;var _0x5a2018;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x18ff44[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x29a547,null))['then'](function(_0x73b2b9){if(_0x73b2b9){_0x162621=_0x73b2b9;_0x23b913[_0xff29('0x58')]=_['keys'](db['Team'][_0xff29('0x40')]);_0x23b913[_0xff29('0x47')]=_['keys'](_0x18ff44[_0xff29('0x47')]);_0x23b913['filters']=_[_0xff29('0x5d')](_0x23b913[_0xff29('0x58')],_0x23b913[_0xff29('0x47')]);_0x1500ad[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x23b913[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x18ff44[_0xff29('0x47')]['fields']));_0x1500ad[_0xff29('0x4c')]=_0x1500ad[_0xff29('0x4c')]['length']?_0x1500ad[_0xff29('0x4c')]:_0x23b913[_0xff29('0x58')];_0x1500ad[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x18ff44[_0xff29('0x47')][_0xff29('0xd4')]);_0x1500ad[_0xff29('0x45')]=qs['filters'](_[_0xff29('0xd5')](_0x18ff44[_0xff29('0x47')],_0x23b913[_0xff29('0x5c')]));if(_0x18ff44['query']['filter']){_0x1500ad[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x1500ad[_0xff29('0x45')],{'$or':_['map'](_0x1500ad[_0xff29('0x4c')],function(_0xd1bb1a){var _0x28668c={};_0x28668c[_0xd1bb1a]={'$like':'%'+_0x18ff44[_0xff29('0x47')]['filter']+'%'};return _0x28668c;})});}_0x1500ad=_['merge']({},_0x1500ad,_0x18ff44[_0xff29('0x60')]);return _0x162621[_0xff29('0x116')](_0x1500ad);}})[_0xff29('0x16')](function(_0x587a65){if(_0x587a65){_0x5a2018=_0x587a65[_0xff29('0x50')];if(!_0x18ff44[_0xff29('0x47')][_0xff29('0xd7')]('nolimit')){_0x1500ad[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x18ff44['query'][_0xff29('0x24')]);_0x1500ad[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x18ff44['query'][_0xff29('0x23')]);}return _0x162621['getTeams'](_0x1500ad);}})[_0xff29('0x16')](function(_0x5a4aad){if(_0x5a4aad){return _0x5a4aad?{'count':_0x5a2018,'rows':_0x5a4aad}:null;}})['then'](respondWithResult(_0x29a547,null))['catch'](handleError(_0x29a547,null));};exports[_0xff29('0x117')]=function(_0xeaccd5,_0x18ab4b){var _0x8fb563=_0xeaccd5[_0xff29('0x67')]['id'];var _0x32c565=_0xeaccd5[_0xff29('0x64')]?_0xeaccd5['body'][_0xff29('0x68')]:null;var _0x1848e3=[];return Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(!_0x32c565)throw new APIBadRequestError(_0xff29('0x118'));})[_0xff29('0x16')](function(){return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x8fb563}});})[_0xff29('0x16')](function(_0x4e2114){if(!_0x4e2114)throw new APINotFoundError(util[_0xff29('0xb4')](_0xff29('0x114'),_0xeaccd5[_0xff29('0x67')]['id']));return db[_0xff29('0x70')][_0xff29('0x119')](function(_0x55c828){return _0x4e2114[_0xff29('0x117')](_0x32c565,{'transaction':_0x55c828})[_0xff29('0x16')](function(){return db[_0xff29('0x11a')]['findAll']({'where':{'id':{'$in':_0x32c565}}});})[_0xff29('0x16')](function(_0x1c1d1b){var _0x1b607f=_[_0xff29('0x35')](_0x1c1d1b,function(_0x33afab){return _0x33afab[_0xff29('0x11b')]();});return Promise[_0xff29('0x56')](_0x1b607f);})[_0xff29('0x16')](function(_0x886eec){_0x1848e3=_['flattenDeep'](_0x886eec);var _0x1aa13e=_[_0xff29('0x35')](_0x1848e3,function(_0x310b29){return _0x310b29[_0xff29('0x11c')](_0x4e2114['id'],{'transaction':_0x55c828});});return Promise[_0xff29('0x56')](_0x1aa13e);})[_0xff29('0x16')](function(){if(!_0x4e2114['online'])return;var _0x200610=_[_0xff29('0x33')](_0x1848e3,function(_0x17198c){return _0x17198c[_0xff29('0x11d')](_0xff29('0xa4'))===_0xff29('0x11e');});var _0x55a37a=_['map'](_0x200610,function(_0x1bbb22){return db[_0xff29('0xb6')]['upsert']({'membername':_0x4e2114[_0xff29('0x39')],'UserId':_0x4e2114['id'],'queue_name':_0x1bbb22[_0xff29('0x39')],'VoiceQueueId':_0x1bbb22['id'],'interface':_[_0xff29('0x6e')](_0x4e2114['interface'])?util[_0xff29('0xb4')]('SIP/%s',_0x4e2114[_0xff29('0x39')]):_0x4e2114[_0xff29('0xa8')],'paused':_0x4e2114[_0xff29('0xa7')]||![],'penalty':_0x4e2114[_0xff29('0xaf')]},{'transaction':_0x55c828});});return Promise[_0xff29('0x56')](_0x55a37a);})[_0xff29('0x16')](function(){return db[_0xff29('0x11f')][_0xff29('0x4d')]({'where':{'teamId':{'$in':_0x32c565}}});})['then'](function(_0x57e659){var _0x34e9b0=_['map'](_0x57e659,function(_0x2b8564){return db[_0xff29('0x120')][_0xff29('0x87')]({'UserId':_0x4e2114['id'],'VoicePrefixId':_0x2b8564[_0xff29('0x121')]},{'transaction':_0x55c828});});return Promise[_0xff29('0x56')](_0x34e9b0);});});})['then'](function(){for(var _0x1a1791=0x0;_0x1a1791<_0x1848e3[_0xff29('0x50')];_0x1a1791++){var _0x56ddf4=_0x1848e3[_0x1a1791]['getDataValue'](_0xff29('0xa4'));var _0x24e23e=_0x56ddf4+_0xff29('0xbb');socket[_0xff29('0x2a')]('user'+_0x56ddf4+'Queue:save',{'UserId':_0x8fb563,['queueField']:_0x1848e3[_0x1a1791]['id']});}})['then'](respondWithStatusCode(_0x18ab4b,null))[_0xff29('0x20')](APIHandleError(_0x18ab4b));};exports[_0xff29('0x122')]=function(_0xd661a9,_0x3d78f2){var _0x508e29=_0xd661a9[_0xff29('0x67')]['id'];var _0x2252d5=null;if(_0xd661a9[_0xff29('0x47')][_0xff29('0x68')]){_0x2252d5=_[_0xff29('0xba')](_0xd661a9[_0xff29('0x47')][_0xff29('0x68')])?_0xd661a9[_0xff29('0x47')][_0xff29('0x68')]:[_0xd661a9['query'][_0xff29('0x68')]];}var _0x58d585=[];return Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(!_0x2252d5)throw new APIBadRequestError(_0xff29('0x123'));})[_0xff29('0x16')](function(){return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x508e29}});})['then'](function(_0x4619d7){if(!_0x4619d7)throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0xd661a9[_0xff29('0x67')]['id']));return db[_0xff29('0x70')][_0xff29('0x119')](function(_0x3e7fe8){return _0x4619d7['removeTeams'](_0x2252d5,{'transaction':_0x3e7fe8})[_0xff29('0x16')](function(){return db[_0xff29('0x11a')][_0xff29('0x4d')]({'where':{'id':{'$in':_0x2252d5}}});})[_0xff29('0x16')](function(_0x1f36a4){var _0x4d2efb=_['map'](_0x1f36a4,function(_0x16cd89){return _0x16cd89[_0xff29('0x11b')]();});return Promise[_0xff29('0x56')](_0x4d2efb);})[_0xff29('0x16')](function(_0x4f1ac1){_0x58d585=_[_0xff29('0x124')](_0x4f1ac1);var _0xacabdf=_[_0xff29('0x35')](_0x58d585,function(_0x42049a){return _0x42049a[_0xff29('0x125')](_0x4619d7['id'],{'transaction':_0x3e7fe8});});return Promise[_0xff29('0x56')](_0xacabdf);})[_0xff29('0x16')](function(){if(!_0x4619d7[_0xff29('0xa5')])return;var _0x351157=_[_0xff29('0x33')](_0x58d585,function(_0x327af5){return _0x327af5['getDataValue']('channel')===_0xff29('0x11e');});var _0x10cad0=_[_0xff29('0x35')](_0x351157,function(_0x5c5a1c){return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'VoiceQueueId':_0x5c5a1c['id'],'UserId':_0x4619d7['id']},'transaction':_0x3e7fe8});});return Promise[_0xff29('0x56')](_0x10cad0);})[_0xff29('0x16')](function(){return db[_0xff29('0x11f')]['findAll']({'where':{'teamId':{'$in':_0x2252d5}}});})['then'](function(_0x2c96be){var _0x3e214b=_[_0xff29('0x35')](_0x2c96be,function(_0x4f82d7){return db['UserVoicePrefix'][_0xff29('0x3b')]({'where':{'UserId':_0x4619d7['id'],'VoicePrefixId':_0x4f82d7[_0xff29('0x121')]}},{'transaction':_0x3e7fe8});});return Promise[_0xff29('0x56')](_0x3e214b);});});})['then'](function(){for(var _0x5c2241=0x0;_0x5c2241<_0x58d585['length'];_0x5c2241++){var _0x55abb4=_0x58d585[_0x5c2241]['getDataValue'](_0xff29('0xa4'));var _0x2ffb86=_0x55abb4+'QueueId';socket[_0xff29('0x2a')](_0xff29('0x2f')+_0x55abb4+_0xff29('0xbc'),{'UserId':_0x508e29,['queueField']:_0x58d585[_0x5c2241]['id']});}})[_0xff29('0x16')](respondWithStatusCode(_0x3d78f2,null))[_0xff29('0x20')](APIHandleError(_0x3d78f2));};exports[_0xff29('0x126')]=function(_0x38fd31,_0x11ebb7){var _0x29d7b6={};var _0x43ce04={};var _0x2f6ed2;var _0x2a4e8c;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x38fd31[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x11ebb7,null))[_0xff29('0x16')](function(_0x4b498c){if(_0x4b498c){_0x2f6ed2=_0x4b498c;_0x43ce04[_0xff29('0x58')]=_[_0xff29('0x5a')](db['CmList']['rawAttributes']);_0x43ce04[_0xff29('0x47')]=_['keys'](_0x38fd31[_0xff29('0x47')]);_0x43ce04[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x43ce04['model'],_0x43ce04['query']);_0x29d7b6['attributes']=_[_0xff29('0x5d')](_0x43ce04[_0xff29('0x58')],qs['fields'](_0x38fd31[_0xff29('0x47')][_0xff29('0x5e')]));_0x29d7b6[_0xff29('0x4c')]=_0x29d7b6[_0xff29('0x4c')][_0xff29('0x50')]?_0x29d7b6['attributes']:_0x43ce04[_0xff29('0x58')];_0x29d7b6['order']=qs[_0xff29('0xd4')](_0x38fd31[_0xff29('0x47')][_0xff29('0xd4')]);_0x29d7b6['where']=qs[_0xff29('0x5c')](_['pick'](_0x38fd31[_0xff29('0x47')],_0x43ce04[_0xff29('0x5c')]));if(_0x38fd31[_0xff29('0x47')][_0xff29('0x33')]){_0x29d7b6[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x29d7b6['where'],{'$or':_[_0xff29('0x35')](_0x29d7b6[_0xff29('0x4c')],function(_0x128ba6){var _0x5c4994={};_0x5c4994[_0x128ba6]={'$like':'%'+_0x38fd31[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x5c4994;})});}_0x29d7b6=_['merge']({},_0x29d7b6,_0x38fd31['options']);return _0x2f6ed2['getLists'](_0x29d7b6);}})['then'](function(_0x55f446){if(_0x55f446){_0x2a4e8c=_0x55f446[_0xff29('0x50')];if(!_0x38fd31[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x29d7b6[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x38fd31['query'][_0xff29('0x24')]);_0x29d7b6[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x38fd31[_0xff29('0x47')][_0xff29('0x23')]);}return _0x2f6ed2[_0xff29('0x126')](_0x29d7b6);}})[_0xff29('0x16')](function(_0x450b1c){if(_0x450b1c){return _0x450b1c?{'count':_0x2a4e8c,'rows':_0x450b1c}:null;}})['then'](respondWithResult(_0x11ebb7,null))[_0xff29('0x20')](handleError(_0x11ebb7,null));};exports['getAgents']=function(_0x37b87c,_0x295fc4){var _0xd22d24={};var _0x42dac6={};var _0x52f8f0;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x37b87c[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x295fc4,null))[_0xff29('0x16')](function(_0x1f7ad4){if(_0x1f7ad4){_0x52f8f0=_0x1f7ad4;_0x42dac6[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x46')][_0xff29('0x40')]);_0x42dac6[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x37b87c['query']);_0x42dac6[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x42dac6[_0xff29('0x58')],_0x42dac6['query']);_0xd22d24[_0xff29('0x4c')]=_['intersection'](_0x42dac6[_0xff29('0x58')],qs['fields'](_0x37b87c['query'][_0xff29('0x5e')]));_0xd22d24[_0xff29('0x4c')]=_0xd22d24['attributes'][_0xff29('0x50')]?_0xd22d24['attributes']:_0x42dac6[_0xff29('0x58')];_0xd22d24['order']=qs[_0xff29('0xd4')](_0x37b87c[_0xff29('0x47')][_0xff29('0xd4')]);_0xd22d24[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x37b87c['query'],_0x42dac6['filters']));if(_0x37b87c[_0xff29('0x47')][_0xff29('0x33')]){_0xd22d24[_0xff29('0x45')]=_[_0xff29('0xd6')](_0xd22d24[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0xd22d24['attributes'],function(_0x17f002){var _0x16f226={};_0x16f226[_0x17f002]={'$like':'%'+_0x37b87c[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x16f226;})});}_0xd22d24['model']=db[_0xff29('0x46')];_0xd22d24['as']=_0xff29('0x30');_0xd22d24=_[_0xff29('0xd6')]({},_0xd22d24,_0x37b87c[_0xff29('0x60')]);return _0x52f8f0[_0xff29('0x127')]({'include':[_0xd22d24]});}})['then'](function(_0xf837d4){if(_0xf837d4){var _0x254c66={},_0x989cf6=[];for(var _0x18fe5c=0x0;_0x18fe5c<_0xf837d4[_0xff29('0x50')];_0x18fe5c+=0x1){for(var _0x584aef=0x0,_0x40e04b;_0x584aef<_0xf837d4[_0x18fe5c]['Agents'][_0xff29('0x50')];_0x584aef+=0x1){_0x40e04b=_0xf837d4[_0x18fe5c][_0xff29('0x30')][_0x584aef][_0xff29('0x2b')]({'plain':!![]});_0x254c66[_0x40e04b['id']]=_0x40e04b;}}_0x254c66=_[_0xff29('0x128')](_0x254c66);for(var _0x160fc8=qs[_0xff29('0x23')](_0x37b87c[_0xff29('0x47')][_0xff29('0x23')]);_0x160fc8<_0x254c66[_0xff29('0x50')]&&_0x989cf6[_0xff29('0x50')]<qs[_0xff29('0x24')](_0x37b87c[_0xff29('0x47')][_0xff29('0x24')]);_0x160fc8+=0x1){if(_0x254c66[_0x160fc8]){_0x989cf6[_0xff29('0x51')](_0x254c66[_0x160fc8]);}}return{'count':_0x254c66[_0xff29('0x50')],'rows':_0x989cf6};}})['then'](respondWithResult(_0x295fc4,null))[_0xff29('0x20')](handleError(_0x295fc4,null));};exports[_0xff29('0x3b')]=function(_0x51a939,_0x25707a){if(_0x51a939[_0xff29('0x2f')]['id']==_0x51a939[_0xff29('0x67')]['id']){return _0x25707a[_0xff29('0x21')](0x1f4)['send']({'message':_0xff29('0x129')});}return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x51a939['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x25707a,null))[_0xff29('0x16')](removeEntity(_0x25707a,null))[_0xff29('0x20')](handleError(_0x25707a,null));};exports[_0xff29('0x12a')]=function(_0x34f0f9,_0x598440){return db[_0xff29('0x46')]['find']({'where':{'id':_0x34f0f9['params']['id']}})['then'](handleEntityNotFound(_0x598440,null))['then'](function(_0x7f4840){if(_0x7f4840){return _0x7f4840[_0xff29('0x12a')](_0x34f0f9[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x34f0f9[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})[_0xff29('0xb0')](function(){for(var _0x5abf79=0x0;_0x5abf79<_0x34f0f9[_0xff29('0x64')][_0xff29('0x68')]['length'];_0x5abf79+=0x1){socket[_0xff29('0x2a')](_0xff29('0x12c'),{'ChatInteractionId':Number(_0x34f0f9['body'][_0xff29('0x68')][_0x5abf79]),'UserId':Number(_0x34f0f9['params']['id'])});}return _0x34f0f9[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x598440,null))[_0xff29('0x20')](handleError(_0x598440,null));};exports[_0xff29('0x12d')]=function(_0x6f1157,_0x15b640){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x6f1157[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x15b640,null))[_0xff29('0x16')](function(_0x1c1ba5){if(_0x1c1ba5){return _0x1c1ba5[_0xff29('0x12d')](_0x6f1157['query'][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x6f1157['query'][_0xff29('0x68')])){for(var _0x1f4a4a=0x0;_0x1f4a4a<_0x6f1157[_0xff29('0x47')][_0xff29('0x68')][_0xff29('0x50')];_0x1f4a4a+=0x1){socket[_0xff29('0x2a')](_0xff29('0x12e'),{'ChatInteractionId':Number(_0x6f1157['query']['ids'][_0x1f4a4a]),'UserId':Number(_0x6f1157['params']['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x12e'),{'ChatInteractionId':Number(_0x6f1157['query'][_0xff29('0x68')]),'UserId':Number(_0x6f1157[_0xff29('0x67')]['id'])});}});}})['then'](respondWithStatusCode(_0x15b640,null))[_0xff29('0x20')](handleError(_0x15b640,null));};exports[_0xff29('0x12f')]=function(_0x32fa59,_0x2ee1b3){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x32fa59[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x2ee1b3,null))[_0xff29('0x16')](function(_0x13c96e){if(_0x13c96e){return _0x13c96e[_0xff29('0x12f')](_0x32fa59['body'][_0xff29('0x68')],_[_0xff29('0x12b')](_0x32fa59[_0xff29('0x64')],['ids','id'])||{})[_0xff29('0xb0')](function(){for(var _0x6276cd=0x0;_0x6276cd<_0x32fa59[_0xff29('0x64')]['ids'][_0xff29('0x50')];_0x6276cd+=0x1){socket['emit']('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x32fa59[_0xff29('0x64')]['ids'][_0x6276cd]),'UserId':Number(_0x32fa59['params']['id'])});}return _0x32fa59[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x2ee1b3,null))[_0xff29('0x20')](handleError(_0x2ee1b3,null));};exports['removeMailInteractions']=function(_0x55bfa8,_0x39c006){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x55bfa8[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x39c006,null))['then'](function(_0x2cc5ce){if(_0x2cc5ce){return _0x2cc5ce[_0xff29('0x130')](_0x55bfa8[_0xff29('0x47')][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x55bfa8['query'][_0xff29('0x68')])){for(var _0x40e818=0x0;_0x40e818<_0x55bfa8['query'][_0xff29('0x68')][_0xff29('0x50')];_0x40e818+=0x1){socket[_0xff29('0x2a')](_0xff29('0x131'),{'MailInteractionId':Number(_0x55bfa8[_0xff29('0x47')][_0xff29('0x68')][_0x40e818]),'UserId':Number(_0x55bfa8[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x55bfa8[_0xff29('0x47')]['ids']),'UserId':Number(_0x55bfa8[_0xff29('0x67')]['id'])});}});}})[_0xff29('0x16')](respondWithStatusCode(_0x39c006,null))[_0xff29('0x20')](handleError(_0x39c006,null));};exports['addFaxInteractions']=function(_0x56dd56,_0x3de3a8){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x56dd56[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3de3a8,null))[_0xff29('0x16')](function(_0x28763b){if(_0x28763b){return _0x28763b[_0xff29('0x132')](_0x56dd56[_0xff29('0x64')][_0xff29('0x68')],_['omit'](_0x56dd56[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})[_0xff29('0xb0')](function(){for(var _0x59aad9=0x0;_0x59aad9<_0x56dd56[_0xff29('0x64')][_0xff29('0x68')][_0xff29('0x50')];_0x59aad9+=0x1){socket[_0xff29('0x2a')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x56dd56[_0xff29('0x64')][_0xff29('0x68')][_0x59aad9]),'UserId':Number(_0x56dd56['params']['id'])});}return _0x56dd56[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x3de3a8,null))[_0xff29('0x20')](handleError(_0x3de3a8,null));};exports[_0xff29('0x133')]=function(_0xfceef7,_0xd96e81){return db['User']['find']({'where':{'id':_0xfceef7['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0xd96e81,null))['then'](function(_0x46de68){if(_0x46de68){return _0x46de68[_0xff29('0x133')](_0xfceef7[_0xff29('0x47')][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_['isArray'](_0xfceef7[_0xff29('0x47')][_0xff29('0x68')])){for(var _0x396961=0x0;_0x396961<_0xfceef7[_0xff29('0x47')][_0xff29('0x68')][_0xff29('0x50')];_0x396961+=0x1){socket[_0xff29('0x2a')](_0xff29('0x134'),{'FaxInteractionId':Number(_0xfceef7[_0xff29('0x47')]['ids'][_0x396961]),'UserId':Number(_0xfceef7[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x134'),{'FaxInteractionId':Number(_0xfceef7[_0xff29('0x47')][_0xff29('0x68')]),'UserId':Number(_0xfceef7['params']['id'])});}});}})['then'](respondWithStatusCode(_0xd96e81,null))[_0xff29('0x20')](handleError(_0xd96e81,null));};exports['addSmsInteractions']=function(_0x2b0ec1,_0x2c1bad){return db['User'][_0xff29('0x38')]({'where':{'id':_0x2b0ec1[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x2c1bad,null))['then'](function(_0x13dacb){if(_0x13dacb){return _0x13dacb[_0xff29('0x135')](_0x2b0ec1[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x2b0ec1['body'],['ids','id'])||{})[_0xff29('0xb0')](function(){for(var _0x4079ac=0x0;_0x4079ac<_0x2b0ec1[_0xff29('0x64')][_0xff29('0x68')]['length'];_0x4079ac+=0x1){socket[_0xff29('0x2a')](_0xff29('0x136'),{'SmsInteractionId':Number(_0x2b0ec1[_0xff29('0x64')][_0xff29('0x68')][_0x4079ac]),'UserId':Number(_0x2b0ec1[_0xff29('0x67')]['id'])});}return _0x2b0ec1[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x2c1bad,null))[_0xff29('0x20')](handleError(_0x2c1bad,null));};exports[_0xff29('0x137')]=function(_0x1e0789,_0x5b7e09){return db['User'][_0xff29('0x38')]({'where':{'id':_0x1e0789[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x5b7e09,null))[_0xff29('0x16')](function(_0x1fb7a6){if(_0x1fb7a6){return _0x1fb7a6['removeSmsInteractions'](_0x1e0789[_0xff29('0x47')][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x1e0789[_0xff29('0x47')][_0xff29('0x68')])){for(var _0x4f95ad=0x0;_0x4f95ad<_0x1e0789[_0xff29('0x47')]['ids'][_0xff29('0x50')];_0x4f95ad+=0x1){socket[_0xff29('0x2a')](_0xff29('0x138'),{'SmsInteractionId':Number(_0x1e0789[_0xff29('0x47')][_0xff29('0x68')][_0x4f95ad]),'UserId':Number(_0x1e0789[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x138'),{'SmsInteractionId':Number(_0x1e0789[_0xff29('0x47')][_0xff29('0x68')]),'UserId':Number(_0x1e0789[_0xff29('0x67')]['id'])});}});}})[_0xff29('0x16')](respondWithStatusCode(_0x5b7e09,null))[_0xff29('0x20')](handleError(_0x5b7e09,null));};exports[_0xff29('0x139')]=function(_0x151f86,_0x4582c7){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x151f86[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x4582c7,null))[_0xff29('0x16')](function(_0x462fad){if(_0x462fad){return _0x462fad[_0xff29('0x139')](_0x151f86[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x151f86[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})['spread'](function(){for(var _0x4d708c=0x0;_0x4d708c<_0x151f86[_0xff29('0x64')][_0xff29('0x68')][_0xff29('0x50')];_0x4d708c+=0x1){socket[_0xff29('0x2a')](_0xff29('0x13a'),{'OpenchannelInteractionId':Number(_0x151f86['body'][_0xff29('0x68')][_0x4d708c]),'UserId':Number(_0x151f86['params']['id'])});}return _0x151f86['body'][_0xff29('0x68')];});}})['then'](respondWithResult(_0x4582c7,null))['catch'](handleError(_0x4582c7,null));};exports[_0xff29('0x13b')]=function(_0x10da66,_0x20e26d){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x10da66[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x20e26d,null))[_0xff29('0x16')](function(_0x29fce3){if(_0x29fce3){return _0x29fce3['removeOpenchannelInteractions'](_0x10da66[_0xff29('0x47')]['ids'])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x10da66['query'][_0xff29('0x68')])){for(var _0x4c6a77=0x0;_0x4c6a77<_0x10da66['query'][_0xff29('0x68')][_0xff29('0x50')];_0x4c6a77+=0x1){socket[_0xff29('0x2a')](_0xff29('0x13c'),{'OpenchannelInteractionId':Number(_0x10da66[_0xff29('0x47')][_0xff29('0x68')][_0x4c6a77]),'UserId':Number(_0x10da66[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x13c'),{'OpenchannelInteractionId':Number(_0x10da66['query'][_0xff29('0x68')]),'UserId':Number(_0x10da66[_0xff29('0x67')]['id'])});}});}})[_0xff29('0x16')](respondWithStatusCode(_0x20e26d,null))[_0xff29('0x20')](handleError(_0x20e26d,null));};exports[_0xff29('0x13d')]=function(_0x44c0b2,_0x5b36b8){return db['User'][_0xff29('0x38')]({'where':{'id':_0x44c0b2[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x5b36b8,null))[_0xff29('0x16')](function(_0x3f3d1c){if(_0x3f3d1c){return _0x3f3d1c['addWhatsappInteractions'](_0x44c0b2[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x44c0b2[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})[_0xff29('0xb0')](function(){for(var _0x30ace5=0x0;_0x30ace5<_0x44c0b2['body']['ids']['length'];_0x30ace5+=0x1){socket[_0xff29('0x2a')](_0xff29('0x13e'),{'WhatsappInteractionId':Number(_0x44c0b2[_0xff29('0x64')][_0xff29('0x68')][_0x30ace5]),'UserId':Number(_0x44c0b2[_0xff29('0x67')]['id'])});}return _0x44c0b2['body']['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x5b36b8,null))['catch'](handleError(_0x5b36b8,null));};exports[_0xff29('0x13f')]=function(_0x13edfe,_0x4a1fca){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x13edfe[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4a1fca,null))['then'](function(_0x4b7171){if(_0x4b7171){return _0x4b7171['removeWhatsappInteractions'](_0x13edfe[_0xff29('0x47')]['ids']);}})[_0xff29('0x16')](respondWithStatusCode(_0x4a1fca,null))['catch'](handleError(_0x4a1fca,null));};exports[_0xff29('0x140')]=function(_0x57f4cd,_0x419399){var _0x1c62db={};var _0x34ed8b={};var _0x5b3178;var _0x3034be;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x57f4cd[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x419399,null))[_0xff29('0x16')](function(_0x3bf473){if(_0x3bf473){_0x5b3178=_0x3bf473;_0x34ed8b[_0xff29('0x58')]=_['keys'](db[_0xff29('0x141')][_0xff29('0x40')]);_0x34ed8b[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x57f4cd[_0xff29('0x47')]);_0x34ed8b['filters']=_[_0xff29('0x5d')](_0x34ed8b[_0xff29('0x58')],_0x34ed8b[_0xff29('0x47')]);_0x1c62db[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x34ed8b[_0xff29('0x58')],qs['fields'](_0x57f4cd[_0xff29('0x47')][_0xff29('0x5e')]));_0x1c62db[_0xff29('0x4c')]=_0x1c62db[_0xff29('0x4c')]['length']?_0x1c62db[_0xff29('0x4c')]:_0x34ed8b['model'];_0x1c62db[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x57f4cd['query']['sort']);_0x1c62db['where']=qs[_0xff29('0x5c')](_['pick'](_0x57f4cd['query'],_0x34ed8b[_0xff29('0x5c')]));if(_0x57f4cd[_0xff29('0x47')][_0xff29('0x33')]){_0x1c62db[_0xff29('0x45')]=_['merge'](_0x1c62db['where'],{'$or':_[_0xff29('0x35')](_0x1c62db['attributes'],function(_0x13aba9){var _0x109a92={};_0x109a92[_0x13aba9]={'$like':'%'+_0x57f4cd[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x109a92;})});}_0x1c62db=_[_0xff29('0xd6')]({},_0x1c62db,_0x57f4cd[_0xff29('0x60')]);return _0x5b3178[_0xff29('0x140')](_0x1c62db);}})[_0xff29('0x16')](function(_0xb900a5){if(_0xb900a5){_0x3034be=_0xb900a5[_0xff29('0x50')];if(!_0x57f4cd[_0xff29('0x47')][_0xff29('0xd7')]('nolimit')){_0x1c62db[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x57f4cd['query']['limit']);_0x1c62db[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x57f4cd[_0xff29('0x47')][_0xff29('0x23')]);}return _0x5b3178[_0xff29('0x140')](_0x1c62db);}})[_0xff29('0x16')](function(_0x33c298){if(_0x33c298){return _0x33c298?{'count':_0x3034be,'rows':_0x33c298}:null;}})[_0xff29('0x16')](respondWithResult(_0x419399,null))['catch'](handleError(_0x419399,null));};exports[_0xff29('0x142')]=function(_0x292ec1,_0x34990a){var _0x4c9672={};var _0x3b867d={};var _0x56b646;var _0x3fb11b;return db['User']['findOne']({'where':{'id':_0x292ec1[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x34990a,null))[_0xff29('0x16')](function(_0x4179d7){if(_0x4179d7){_0x56b646=_0x4179d7;_0x3b867d[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x143')][_0xff29('0x40')]);_0x3b867d[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x292ec1['query']);_0x3b867d[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x3b867d[_0xff29('0x58')],_0x3b867d[_0xff29('0x47')]);_0x4c9672['attributes']=_['intersection'](_0x3b867d[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x292ec1[_0xff29('0x47')]['fields']));_0x4c9672[_0xff29('0x4c')]=_0x4c9672[_0xff29('0x4c')][_0xff29('0x50')]?_0x4c9672[_0xff29('0x4c')]:_0x3b867d[_0xff29('0x58')];_0x4c9672[_0xff29('0xdd')]=qs['sort'](_0x292ec1[_0xff29('0x47')][_0xff29('0xd4')]);_0x4c9672[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x292ec1['query'],_0x3b867d[_0xff29('0x5c')]));if(_0x292ec1[_0xff29('0x47')]['filter']){_0x4c9672[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x4c9672[_0xff29('0x45')],{'$or':_['map'](_0x4c9672[_0xff29('0x4c')],function(_0x220ece){var _0x3ad537={};_0x3ad537[_0x220ece]={'$like':'%'+_0x292ec1['query'][_0xff29('0x33')]+'%'};return _0x3ad537;})});}_0x4c9672=_['merge']({},_0x4c9672,_0x292ec1[_0xff29('0x60')]);return _0x56b646[_0xff29('0x142')](_0x4c9672);}})[_0xff29('0x16')](function(_0x3851b1){if(_0x3851b1){_0x3fb11b=_0x3851b1[_0xff29('0x50')];if(!_0x292ec1['query'][_0xff29('0xd7')](_0xff29('0xdf'))){_0x4c9672[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x292ec1['query'][_0xff29('0x24')]);_0x4c9672[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x292ec1[_0xff29('0x47')][_0xff29('0x23')]);}return _0x56b646['getFaxAccounts'](_0x4c9672);}})[_0xff29('0x16')](function(_0x1e6b45){if(_0x1e6b45){return _0x1e6b45?{'count':_0x3fb11b,'rows':_0x1e6b45}:null;}})[_0xff29('0x16')](respondWithResult(_0x34990a,null))[_0xff29('0x20')](handleError(_0x34990a,null));};exports[_0xff29('0x144')]=function(_0xce819b,_0x4ee189){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0xce819b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4ee189,null))[_0xff29('0x16')](function(_0x1dea40){if(_0x1dea40){return _0x1dea40[_0xff29('0x144')](_0xce819b['body'][_0xff29('0x68')],_[_0xff29('0x12b')](_0xce819b[_0xff29('0x64')],['ids','id'])||{});}})['then'](respondWithResult(_0x4ee189,null))[_0xff29('0x20')](handleError(_0x4ee189,null));};exports[_0xff29('0x145')]=function(_0x2aabfb,_0x3d55f7){return db[_0xff29('0x46')]['find']({'where':{'id':_0x2aabfb[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3d55f7,null))[_0xff29('0x16')](function(_0x34189f){if(_0x34189f){return _0x34189f[_0xff29('0x145')](_0x2aabfb[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x3d55f7,null))['catch'](handleError(_0x3d55f7,null));};exports[_0xff29('0x146')]=function(_0xff7f00,_0x1a46f3){var _0x2a7070={};var _0x5bd136={};var _0x4e38a7;var _0x324baa;return db['User'][_0xff29('0x9e')]({'where':{'id':_0xff7f00[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1a46f3,null))[_0xff29('0x16')](function(_0x312bf9){if(_0x312bf9){_0x4e38a7=_0x312bf9;_0x5bd136['model']=_[_0xff29('0x5a')](db['MailAccount']['rawAttributes']);_0x5bd136[_0xff29('0x47')]=_[_0xff29('0x5a')](_0xff7f00[_0xff29('0x47')]);_0x5bd136[_0xff29('0x5c')]=_['intersection'](_0x5bd136[_0xff29('0x58')],_0x5bd136[_0xff29('0x47')]);_0x2a7070[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x5bd136[_0xff29('0x58')],qs[_0xff29('0x5e')](_0xff7f00[_0xff29('0x47')]['fields']));_0x2a7070['attributes']=_0x2a7070[_0xff29('0x4c')][_0xff29('0x50')]?_0x2a7070['attributes']:_0x5bd136[_0xff29('0x58')];_0x2a7070[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0xff7f00[_0xff29('0x47')]['sort']);_0x2a7070[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0xff7f00[_0xff29('0x47')],_0x5bd136[_0xff29('0x5c')]));if(_0xff7f00[_0xff29('0x47')][_0xff29('0x33')]){_0x2a7070[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x2a7070[_0xff29('0x45')],{'$or':_['map'](_0x2a7070['attributes'],function(_0x51950d){var _0x33dd66={};_0x33dd66[_0x51950d]={'$like':'%'+_0xff7f00[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x33dd66;})});}_0x2a7070=_[_0xff29('0xd6')]({},_0x2a7070,_0xff7f00['options']);return _0x4e38a7[_0xff29('0x146')](_0x2a7070);}})['then'](function(_0x1b7ba7){if(_0x1b7ba7){_0x324baa=_0x1b7ba7[_0xff29('0x50')];if(!_0xff7f00[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x2a7070[_0xff29('0x24')]=qs['limit'](_0xff7f00[_0xff29('0x47')][_0xff29('0x24')]);_0x2a7070[_0xff29('0x23')]=qs[_0xff29('0x23')](_0xff7f00[_0xff29('0x47')][_0xff29('0x23')]);}return _0x4e38a7[_0xff29('0x146')](_0x2a7070);}})[_0xff29('0x16')](function(_0x1b2d4a){if(_0x1b2d4a){return _0x1b2d4a?{'count':_0x324baa,'rows':_0x1b2d4a}:null;}})[_0xff29('0x16')](respondWithResult(_0x1a46f3,null))[_0xff29('0x20')](handleError(_0x1a46f3,null));};exports[_0xff29('0x147')]=function(_0x3e1c75,_0x1d1a56){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x3e1c75[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1d1a56,null))[_0xff29('0x16')](function(_0x28ca9b){if(_0x28ca9b){return _0x28ca9b[_0xff29('0x147')](_0x3e1c75[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x3e1c75['body'],[_0xff29('0x68'),'id'])||{});}})['then'](respondWithResult(_0x1d1a56,null))[_0xff29('0x20')](handleError(_0x1d1a56,null));};exports['removeMailAccounts']=function(_0x35611c,_0x399234){return db['User'][_0xff29('0x38')]({'where':{'id':_0x35611c[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x399234,null))[_0xff29('0x16')](function(_0x5a641d){if(_0x5a641d){return _0x5a641d['removeMailAccounts'](_0x35611c[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x399234,null))[_0xff29('0x20')](handleError(_0x399234,null));};exports[_0xff29('0x148')]=function(_0x2d4540,_0x362362){var _0x46f2ad={};var _0x4530b9={};var _0x186f16;var _0x14dbdf;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x2d4540[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x362362,null))[_0xff29('0x16')](function(_0x5213cb){if(_0x5213cb){_0x186f16=_0x5213cb;_0x4530b9[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x149')][_0xff29('0x40')]);_0x4530b9['query']=_[_0xff29('0x5a')](_0x2d4540[_0xff29('0x47')]);_0x4530b9[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x4530b9[_0xff29('0x58')],_0x4530b9[_0xff29('0x47')]);_0x46f2ad[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x4530b9[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x2d4540[_0xff29('0x47')][_0xff29('0x5e')]));_0x46f2ad[_0xff29('0x4c')]=_0x46f2ad[_0xff29('0x4c')][_0xff29('0x50')]?_0x46f2ad[_0xff29('0x4c')]:_0x4530b9[_0xff29('0x58')];_0x46f2ad[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x2d4540['query']['sort']);_0x46f2ad[_0xff29('0x45')]=qs[_0xff29('0x5c')](_['pick'](_0x2d4540[_0xff29('0x47')],_0x4530b9[_0xff29('0x5c')]));if(_0x2d4540[_0xff29('0x47')][_0xff29('0x33')]){_0x46f2ad['where']=_[_0xff29('0xd6')](_0x46f2ad[_0xff29('0x45')],{'$or':_['map'](_0x46f2ad[_0xff29('0x4c')],function(_0x2f6e83){var _0xa493b5={};_0xa493b5[_0x2f6e83]={'$like':'%'+_0x2d4540[_0xff29('0x47')]['filter']+'%'};return _0xa493b5;})});}_0x46f2ad=_[_0xff29('0xd6')]({},_0x46f2ad,_0x2d4540[_0xff29('0x60')]);return _0x186f16[_0xff29('0x148')](_0x46f2ad);}})[_0xff29('0x16')](function(_0x3beb0c){if(_0x3beb0c){_0x14dbdf=_0x3beb0c[_0xff29('0x50')];if(!_0x2d4540[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x46f2ad[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x2d4540[_0xff29('0x47')][_0xff29('0x24')]);_0x46f2ad[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x2d4540[_0xff29('0x47')][_0xff29('0x23')]);}return _0x186f16[_0xff29('0x148')](_0x46f2ad);}})[_0xff29('0x16')](function(_0x48a93f){if(_0x48a93f){return _0x48a93f?{'count':_0x14dbdf,'rows':_0x48a93f}:null;}})[_0xff29('0x16')](respondWithResult(_0x362362,null))[_0xff29('0x20')](handleError(_0x362362,null));};exports[_0xff29('0x14a')]=function(_0x270bf5,_0x449e02){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x270bf5[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x449e02,null))['then'](function(_0x409853){if(_0x409853){return _0x409853[_0xff29('0x14a')](_0x270bf5[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x270bf5[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x449e02,null))['catch'](handleError(_0x449e02,null));};exports[_0xff29('0x14b')]=function(_0x5b85b7,_0x357b7e){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x5b85b7[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x357b7e,null))['then'](function(_0x1f22c2){if(_0x1f22c2){return _0x1f22c2['removeOpenchannelAccounts'](_0x5b85b7[_0xff29('0x47')]['ids']);}})[_0xff29('0x16')](respondWithStatusCode(_0x357b7e,null))[_0xff29('0x20')](handleError(_0x357b7e,null));};exports['getSmsAccounts']=function(_0x25fa8b,_0x15abd0){var _0x45b907={};var _0x1d99fb={};var _0xe55d3;var _0x210ddc;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x25fa8b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x15abd0,null))['then'](function(_0x252503){if(_0x252503){_0xe55d3=_0x252503;_0x1d99fb['model']=_[_0xff29('0x5a')](db['SmsAccount'][_0xff29('0x40')]);_0x1d99fb[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x25fa8b['query']);_0x1d99fb['filters']=_[_0xff29('0x5d')](_0x1d99fb['model'],_0x1d99fb[_0xff29('0x47')]);_0x45b907['attributes']=_[_0xff29('0x5d')](_0x1d99fb['model'],qs[_0xff29('0x5e')](_0x25fa8b['query'][_0xff29('0x5e')]));_0x45b907[_0xff29('0x4c')]=_0x45b907['attributes'][_0xff29('0x50')]?_0x45b907['attributes']:_0x1d99fb[_0xff29('0x58')];_0x45b907['order']=qs[_0xff29('0xd4')](_0x25fa8b[_0xff29('0x47')]['sort']);_0x45b907[_0xff29('0x45')]=qs['filters'](_[_0xff29('0xd5')](_0x25fa8b[_0xff29('0x47')],_0x1d99fb[_0xff29('0x5c')]));if(_0x25fa8b[_0xff29('0x47')]['filter']){_0x45b907[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x45b907['where'],{'$or':_[_0xff29('0x35')](_0x45b907[_0xff29('0x4c')],function(_0x628aa5){var _0x223fe1={};_0x223fe1[_0x628aa5]={'$like':'%'+_0x25fa8b['query']['filter']+'%'};return _0x223fe1;})});}_0x45b907=_[_0xff29('0xd6')]({},_0x45b907,_0x25fa8b[_0xff29('0x60')]);return _0xe55d3[_0xff29('0x14c')](_0x45b907);}})[_0xff29('0x16')](function(_0x1c4e23){if(_0x1c4e23){_0x210ddc=_0x1c4e23[_0xff29('0x50')];if(!_0x25fa8b[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x45b907[_0xff29('0x24')]=qs['limit'](_0x25fa8b['query'][_0xff29('0x24')]);_0x45b907[_0xff29('0x23')]=qs['offset'](_0x25fa8b[_0xff29('0x47')][_0xff29('0x23')]);}return _0xe55d3[_0xff29('0x14c')](_0x45b907);}})[_0xff29('0x16')](function(_0x5d1854){if(_0x5d1854){return _0x5d1854?{'count':_0x210ddc,'rows':_0x5d1854}:null;}})[_0xff29('0x16')](respondWithResult(_0x15abd0,null))[_0xff29('0x20')](handleError(_0x15abd0,null));};exports[_0xff29('0x14d')]=function(_0xc29a17,_0x7ec26f){return db[_0xff29('0x46')]['find']({'where':{'id':_0xc29a17['params']['id']}})['then'](handleEntityNotFound(_0x7ec26f,null))['then'](function(_0xdd6594){if(_0xdd6594){return _0xdd6594[_0xff29('0x14d')](_0xc29a17[_0xff29('0x64')][_0xff29('0x68')],_['omit'](_0xc29a17[_0xff29('0x64')],['ids','id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x7ec26f,null))['catch'](handleError(_0x7ec26f,null));};exports[_0xff29('0x14e')]=function(_0x3e36dd,_0x4ee0f6){return db['User'][_0xff29('0x38')]({'where':{'id':_0x3e36dd[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4ee0f6,null))['then'](function(_0x917451){if(_0x917451){return _0x917451[_0xff29('0x14e')](_0x3e36dd['query'][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x4ee0f6,null))[_0xff29('0x20')](handleError(_0x4ee0f6,null));};exports[_0xff29('0x14f')]=function(_0x3adbd0,_0x948a54){var _0x17eafe={};var _0x22d6a5={};var _0x2843ae;var _0x53f8eb;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x3adbd0[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x948a54,null))['then'](function(_0x73c3e8){if(_0x73c3e8){_0x2843ae=_0x73c3e8;_0x22d6a5[_0xff29('0x58')]=_['keys'](db[_0xff29('0x150')][_0xff29('0x40')]);_0x22d6a5[_0xff29('0x47')]=_['keys'](_0x3adbd0[_0xff29('0x47')]);_0x22d6a5['filters']=_[_0xff29('0x5d')](_0x22d6a5[_0xff29('0x58')],_0x22d6a5[_0xff29('0x47')]);_0x17eafe[_0xff29('0x4c')]=_['intersection'](_0x22d6a5['model'],qs[_0xff29('0x5e')](_0x3adbd0[_0xff29('0x47')][_0xff29('0x5e')]));_0x17eafe[_0xff29('0x4c')]=_0x17eafe['attributes'][_0xff29('0x50')]?_0x17eafe['attributes']:_0x22d6a5[_0xff29('0x58')];_0x17eafe[_0xff29('0xdd')]=qs['sort'](_0x3adbd0['query']['sort']);_0x17eafe[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x3adbd0[_0xff29('0x47')],_0x22d6a5['filters']));if(_0x3adbd0[_0xff29('0x47')][_0xff29('0x33')]){_0x17eafe[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x17eafe[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x17eafe[_0xff29('0x4c')],function(_0x15bf30){var _0x59648d={};_0x59648d[_0x15bf30]={'$like':'%'+_0x3adbd0[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x59648d;})});}_0x17eafe=_['merge']({},_0x17eafe,_0x3adbd0[_0xff29('0x60')]);return _0x2843ae['getChatWebsites'](_0x17eafe);}})['then'](function(_0x7c4471){if(_0x7c4471){_0x53f8eb=_0x7c4471['length'];if(!_0x3adbd0[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x17eafe['limit']=qs[_0xff29('0x24')](_0x3adbd0['query'][_0xff29('0x24')]);_0x17eafe[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x3adbd0[_0xff29('0x47')][_0xff29('0x23')]);}return _0x2843ae['getChatWebsites'](_0x17eafe);}})['then'](function(_0x3dc868){if(_0x3dc868){return _0x3dc868?{'count':_0x53f8eb,'rows':_0x3dc868}:null;}})[_0xff29('0x16')](respondWithResult(_0x948a54,null))[_0xff29('0x20')](handleError(_0x948a54,null));};exports[_0xff29('0x151')]=function(_0x12a5bb,_0x169927){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x12a5bb['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x169927,null))[_0xff29('0x16')](function(_0x4dca3b){if(_0x4dca3b){return _0x4dca3b[_0xff29('0x151')](_0x12a5bb[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x12a5bb[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x169927,null))['catch'](handleError(_0x169927,null));};exports['removeChatWebsites']=function(_0x5dc48c,_0x591f5e){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x5dc48c[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x591f5e,null))[_0xff29('0x16')](function(_0x1f219d){if(_0x1f219d){return _0x1f219d[_0xff29('0x152')](_0x5dc48c[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x591f5e,null))[_0xff29('0x20')](handleError(_0x591f5e,null));};exports[_0xff29('0x153')]=function(_0x2955fc,_0x136538){var _0x306f34={};var _0x402192={};var _0x5dae85;var _0x3b1a0b;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x2955fc[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x136538,null))['then'](function(_0x5463a5){if(_0x5463a5){_0x5dae85=_0x5463a5;_0x402192[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x154')][_0xff29('0x40')]);_0x402192[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x2955fc[_0xff29('0x47')]);_0x402192[_0xff29('0x5c')]=_['intersection'](_0x402192[_0xff29('0x58')],_0x402192[_0xff29('0x47')]);_0x306f34[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x402192['model'],qs[_0xff29('0x5e')](_0x2955fc[_0xff29('0x47')][_0xff29('0x5e')]));_0x306f34[_0xff29('0x4c')]=_0x306f34[_0xff29('0x4c')][_0xff29('0x50')]?_0x306f34['attributes']:_0x402192[_0xff29('0x58')];_0x306f34[_0xff29('0xdd')]=qs['sort'](_0x2955fc['query'][_0xff29('0xd4')]);_0x306f34[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x2955fc[_0xff29('0x47')],_0x402192[_0xff29('0x5c')]));if(_0x2955fc[_0xff29('0x47')]['filter']){_0x306f34[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x306f34[_0xff29('0x45')],{'$or':_['map'](_0x306f34[_0xff29('0x4c')],function(_0x461246){var _0x5e9c5a={};_0x5e9c5a[_0x461246]={'$like':'%'+_0x2955fc[_0xff29('0x47')]['filter']+'%'};return _0x5e9c5a;})});}_0x306f34=_[_0xff29('0xd6')]({},_0x306f34,_0x2955fc[_0xff29('0x60')]);return _0x5dae85['getWhatsappAccounts'](_0x306f34);}})['then'](function(_0x2083d7){if(_0x2083d7){_0x3b1a0b=_0x2083d7['length'];if(!_0x2955fc['query'][_0xff29('0xd7')]('nolimit')){_0x306f34['limit']=qs[_0xff29('0x24')](_0x2955fc[_0xff29('0x47')][_0xff29('0x24')]);_0x306f34[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x2955fc[_0xff29('0x47')][_0xff29('0x23')]);}return _0x5dae85[_0xff29('0x153')](_0x306f34);}})[_0xff29('0x16')](function(_0x1d9abf){if(_0x1d9abf){return _0x1d9abf?{'count':_0x3b1a0b,'rows':_0x1d9abf}:null;}})[_0xff29('0x16')](respondWithResult(_0x136538,null))['catch'](handleError(_0x136538,null));};exports['addWhatsappAccounts']=function(_0x360e32,_0x31780c){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x360e32[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x31780c,null))[_0xff29('0x16')](function(_0x41facf){if(_0x41facf){return _0x41facf[_0xff29('0x155')](_0x360e32[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x360e32[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x31780c,null))[_0xff29('0x20')](handleError(_0x31780c,null));};exports['removeWhatsappAccounts']=function(_0x369a57,_0x27b5f9){return db['User']['find']({'where':{'id':_0x369a57[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x27b5f9,null))[_0xff29('0x16')](function(_0x2a6fd6){if(_0x2a6fd6){return _0x2a6fd6['removeWhatsappAccounts'](_0x369a57[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x27b5f9,null))[_0xff29('0x20')](handleError(_0x27b5f9,null));};exports[_0xff29('0x156')]=function(_0x46acf3,_0x32c794){var _0x40e1db={},_0xf98b08={},_0x1ee492={'count':0x0,'rows':[]};var _0x2ed201=db[_0xff29('0x157')][_0xff29('0x40')];_0xf98b08[_0xff29('0x58')]=_[_0xff29('0x5a')](_0x2ed201);_0xf98b08[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x46acf3[_0xff29('0x47')]);_0xf98b08[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0xf98b08[_0xff29('0x58')],_0xf98b08['query']);_0xf98b08['filters']=_['concat'](_0xf98b08['filters'],[_0xff29('0x158'),_0xff29('0x159'),'$gt',_0xff29('0x15a'),_0xff29('0x15b'),_0xff29('0x15c'),_0xff29('0x15d'),'$eq','$not','$between',_0xff29('0x15e'),_0xff29('0x15f'),_0xff29('0x160'),_0xff29('0x161'),_0xff29('0x162'),_0xff29('0x163'),_0xff29('0x164'),_0xff29('0x161'),_0xff29('0x165'),_0xff29('0x166'),'$contained',_0xff29('0x167')]);_0x40e1db[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0xf98b08[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x46acf3[_0xff29('0x47')][_0xff29('0x5e')]));_0x40e1db[_0xff29('0x4c')]=_0x40e1db[_0xff29('0x4c')][_0xff29('0x50')]?_0x40e1db[_0xff29('0x4c')]:_0xf98b08['model'];if(!_0x46acf3['query']['hasOwnProperty'](_0xff29('0xdf'))){_0x40e1db['limit']=qs[_0xff29('0x24')](_0x46acf3[_0xff29('0x47')]['limit']);_0x40e1db[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x46acf3[_0xff29('0x47')][_0xff29('0x23')]);}_0x40e1db['order']=qs[_0xff29('0xd4')](_0x46acf3[_0xff29('0x47')][_0xff29('0xd4')]);_0x40e1db['where']=qs['filters'](_[_0xff29('0xd5')](_0x46acf3[_0xff29('0x47')],_0xf98b08[_0xff29('0x5c')]));if(_0x46acf3[_0xff29('0x47')]['filter']){_0x40e1db[_0xff29('0x45')]=_['merge'](_0x40e1db[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x40e1db[_0xff29('0x4c')],function(_0x56f2fe){var _0x4be1ed={};_0x4be1ed[_0x56f2fe]={'$like':'%'+_0x46acf3[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x4be1ed;})});}_0x40e1db['where']={'$and':[_0x40e1db['where'],{'$or':[{'UserId':_0x46acf3[_0xff29('0x67')]['id']},{'OwnerId':_0x46acf3[_0xff29('0x67')]['id']}]}]};_0x40e1db=_[_0xff29('0xd6')]({},_0x40e1db,_0x46acf3[_0xff29('0x60')]);var _0x5b9c4f={'where':_0x40e1db[_0xff29('0x45')]};return db[_0xff29('0x157')][_0xff29('0x26')](_0x5b9c4f)['then'](function(_0x217aac){_0x1ee492[_0xff29('0x26')]=_0x217aac;if(_0x46acf3[_0xff29('0x47')][_0xff29('0x48')]){_0x40e1db[_0xff29('0x49')]=[{'attributes':['id','firstName',_0xff29('0x168'),_0xff29('0xf3')],'model':db[_0xff29('0xd3')],'as':_0xff29('0x169')},{'attributes':['id','name','dialActive'],'model':db[_0xff29('0xb3')],'as':_0xff29('0xdc')}];}return db['CmHopper']['findAll'](_0x40e1db);})[_0xff29('0x16')](function(_0x341b4d){_0x1ee492[_0xff29('0x4e')]=_0x341b4d;return _0x1ee492;})['then'](respondWithFilteredResult(_0x32c794,_0x40e1db))[_0xff29('0x20')](handleError(_0x32c794,null));};exports['getApiKey']=function(_0x13bc0c,_0x1a2c5e){if(!_[_0xff29('0x6e')](_0x13bc0c[_0xff29('0x2f')]['id'])&&(_0x13bc0c[_0xff29('0x2f')][_0xff29('0x2c')]==_0xff29('0x2d')||_0x13bc0c[_0xff29('0x2f')]['role']=='user')){return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x13bc0c[_0xff29('0x67')]['id']},'raw':!![]})[_0xff29('0x16')](function(_0x2b8d94){return authService[_0xff29('0x16a')](_0x2b8d94);})[_0xff29('0x16')](function(_0xe8fd18){if(_0xe8fd18){return _0x1a2c5e[_0xff29('0x21')](0xc8)[_0xff29('0x28')]({'api_key':_0xe8fd18[_0xff29('0x16b')]});}else{return _0x1a2c5e[_0xff29('0x21')](0xcc)[_0xff29('0x28')]({'message':_0xff29('0x16c')});}})['catch'](handleError(_0x1a2c5e,0x193));}else{return _0x1a2c5e[_0xff29('0x21')](0x191)[_0xff29('0x28')]({'message':_0xff29('0x16d')});}};exports[_0xff29('0x16e')]=function(_0x11581b,_0x52fe15){if(!_[_0xff29('0x6e')](_0x11581b[_0xff29('0x2f')]['id'])&&(_0x11581b[_0xff29('0x2f')][_0xff29('0x2c')]=='admin'||_0x11581b['user']['role']==_0xff29('0x2f'))){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x11581b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](function(_0x31143b){return authService[_0xff29('0x16f')](_0x31143b);})[_0xff29('0x16')](function(_0x1ff78d){return db[_0xff29('0x46')][_0xff29('0x29')]({'apiKeyIat':_0x1ff78d[_0xff29('0x170')],'apiKeyNonce':_0x1ff78d[_0xff29('0x171')]},{'where':{'id':_0x11581b[_0xff29('0x67')]['id']}})['then'](function(){return _0x52fe15['status'](0xc8)[_0xff29('0x28')]({'api_key':_0x1ff78d['token']});});})[_0xff29('0x20')](handleError(_0x52fe15,0x193));}else{return _0x52fe15['status'](0x191)[_0xff29('0x28')]({'message':_0xff29('0x16d')});}};exports[_0xff29('0x172')]=function(_0x1ace30,_0x5bde0c){if(!_[_0xff29('0x6e')](_0x1ace30[_0xff29('0x2f')]['id'])&&(_0x1ace30['user'][_0xff29('0x2c')]==_0xff29('0x2d')||_0x1ace30[_0xff29('0x2f')]['role']=='user')){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x1ace30[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x5bde0c,null))[_0xff29('0x16')](function(_0x14dc50){if(_0x14dc50&&_0x14dc50[_0xff29('0x173')]&&_0x14dc50[_0xff29('0x174')])return _0x14dc50;else throw{'message':_0xff29('0x175')};})[_0xff29('0x16')](function(){return db[_0xff29('0x46')][_0xff29('0x29')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x1ace30[_0xff29('0x67')]['id']}});})[_0xff29('0x16')](respondWithStatusCode(_0x5bde0c,0xc8))[_0xff29('0x20')](handleError(_0x5bde0c,0x193));}else{return _0x5bde0c[_0xff29('0x21')](0x191)[_0xff29('0x28')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['whoami']=function(_0x49843a,_0x5384e6){var _0x3b7efb=_0x49843a[_0xff29('0x2f')]['get']({'plain':!![]});if(!_0x3b7efb){return _0x5384e6[_0xff29('0x21')](0x191)[_0xff29('0x3e')](_0xff29('0x176'));}else{Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(_0x49843a[_0xff29('0x47')]['userSetting']!==_0xff29('0x4b'))return;return _0x49843a[_0xff29('0x2f')][_0xff29('0x177')]();})['then'](function(_0x17622e){if(!_0x17622e)return;return _0x17622e[_0xff29('0x2b')]({'plain':!![]});})[_0xff29('0x16')](function(_0x5921b4){_0x3b7efb[_0xff29('0x4a')]=_0x5921b4;return _0x5384e6[_0xff29('0x21')](0xc8)['json'](_0x3b7efb);});}};exports[_0xff29('0x178')]=function(_0x40f685,_0x59f3be){var _0x24d24d={'offset':0x0},_0x5e4425={'count':0x0,'rows':[]};Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(!_0x40f685[_0xff29('0x47')][_0xff29('0x33')]&&!_0x40f685['query'][_0xff29('0x179')]&&!_0x40f685['query'][_0xff29('0x17a')])return[];return Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){var _0x2d5584=[];if(!_[_0xff29('0x94')](_0x40f685[_0xff29('0x47')]['teams'])){_0x2d5584[_0xff29('0x51')](db[_0xff29('0x11a')][_0xff29('0x4d')]({'attributes':['id','name'],'where':{'id':_0x40f685['query'][_0xff29('0x179')]}}));}if(!_[_0xff29('0x94')](_0x40f685[_0xff29('0x47')][_0xff29('0x17a')])){_0x2d5584['push'](db[_0xff29('0xb3')][_0xff29('0x4d')]({'attributes':['id',_0xff29('0x39')],'type':_0xff29('0x17b'),'where':{'id':_0x40f685[_0xff29('0x47')]['queues']}}));}return Promise[_0xff29('0x56')](_0x2d5584);})[_0xff29('0x16')](function(_0x168433){var _0x140c0b=_[_0xff29('0x17c')](_0x168433)['map'](function(_0x5f0022){return _0x5f0022[_0xff29('0x17d')]({'attributes':['id',_0xff29('0x39'),'internal',_0xff29('0xa5')],'raw':!![]});});return Promise[_0xff29('0x56')](_0x140c0b);})[_0xff29('0x16')](function(_0x4f6bbd){var _0x4028e8=_['flatten'](_0x4f6bbd);if(!_0x40f685[_0xff29('0x47')]['filter'])return _0x4028e8;if(_[_0xff29('0x94')](_0x4028e8)){return db['User'][_0xff29('0x4d')]({'attributes':['id','name',_0xff29('0x6d'),'online'],'where':{'role':_0xff29('0x31'),'$or':[db[_0xff29('0x70')][_0xff29('0x45')](db['sequelize']['fn'](_0xff29('0x17e'),db['sequelize'][_0xff29('0x17f')]('name')),{'$like':'%'+_0x40f685[_0xff29('0x47')]['filter'][_0xff29('0xad')]()+'%'}),{'internal':{'$like':'%'+_0x40f685[_0xff29('0x47')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x4028e8)[_0xff29('0x17c')]()[_0xff29('0x33')](function(_0x967b2b){return _0x967b2b[_0xff29('0x39')]['toLowerCase']()['includes'](_0x40f685[_0xff29('0x47')][_0xff29('0x33')][_0xff29('0xad')]())||_0x967b2b[_0xff29('0x6d')][_0xff29('0x180')]()[_0xff29('0x37')](_0x40f685[_0xff29('0x47')][_0xff29('0x33')]);})[_0xff29('0x36')]();}})[_0xff29('0x16')](function(_0x4e0f52){var _0x5bbee1=_0xff29('0x39');var _0x30a33d=_0xff29('0x181');if(_0x40f685[_0xff29('0x47')]['sort']){_0x30a33d=_0x40f685[_0xff29('0x47')]['sort'][0x0]==='-'?_0xff29('0x182'):_0xff29('0x181');_0x5bbee1=_0x30a33d==='asc'?_0x40f685[_0xff29('0x47')][_0xff29('0xd4')]:_0x40f685[_0xff29('0x47')][_0xff29('0xd4')][_0xff29('0x183')](0x1);}return _(_0x4e0f52)['uniqBy']('id')[_0xff29('0x184')]([function(_0x1c1308){return _0x5bbee1===_0xff29('0x39')?_0x1c1308[_0x5bbee1][_0xff29('0xad')]():_0x1c1308[_0x5bbee1];}],[_0x30a33d])[_0xff29('0x35')](function(_0x395989){return _[_0xff29('0xd5')](_0x395989,['id',_0xff29('0x39'),'internal','online']);})[_0xff29('0x36')]();})['then'](function(_0x2dfde8){return amiClient[_0xff29('0x15')](_0xff29('0x30'),_0x40f685)['then'](function(_0x57a187){if(_0x57a187['error'])throw new Error(_0xff29('0x185'));var _0x4f592d=_0x57a187[_0xff29('0x1f')];var _0x5850bc=jayson[_0xff29('0x14')][_0xff29('0x186')]({'port':0x232c});return _0x5850bc[_0xff29('0x15')](_0xff29('0x30'),_0x40f685)[_0xff29('0x16')](function(_0x41b96e){if(_0x41b96e[_0xff29('0x1c')])throw new Error(_0xff29('0x187'));var _0xeb114e=_0x41b96e['result'];return _[_0xff29('0xd6')]({},_0xeb114e,_0x4f592d);});})['then'](function(_0x34475d){return _[_0xff29('0x35')](_0x2dfde8,function(_0x27bcf8){var _0x3a022f=_[_0xff29('0x38')](_0x34475d['rows'],['id',_0x27bcf8['id']]);if(!_0x3a022f||!_0x27bcf8[_0xff29('0xa5')]){_0x27bcf8[_0xff29('0x21')]=_0xff29('0x188');}else if(_0x3a022f[_0xff29('0xa7')]){_0x27bcf8[_0xff29('0x21')]=_0xff29('0x10a');}else{_0x27bcf8[_0xff29('0x21')]=_[_0xff29('0x37')]([_0xff29('0x189'),'unknown',_0xff29('0x18a'),_0xff29('0x18b'),null,undefined],_0x3a022f[_0xff29('0x18c')])?'online':'busy';}return _0x27bcf8;});});});})[_0xff29('0x16')](function(_0x4fbd22){if(!_0x40f685[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x24d24d[_0xff29('0x24')]=qs['limit'](_0x40f685['query']['limit']||0xa);_0x24d24d[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x40f685[_0xff29('0x47')][_0xff29('0x23')]);}_0x5e4425[_0xff29('0x26')]=_0x4fbd22[_0xff29('0x50')];_0x5e4425[_0xff29('0x4e')]=_0x24d24d[_0xff29('0x24')]?_0x4fbd22['slice'](_0x24d24d['offset'],_0x24d24d[_0xff29('0x23')]+_0x24d24d[_0xff29('0x24')]):_0x4fbd22;return _0x5e4425;})[_0xff29('0x16')](respondWithFilteredResult(_0x59f3be,_0x24d24d))['catch'](handleError(_0x59f3be,null));};function get_open_tabs(_0x139ef1,_0x3b91ec){var _0x455241=_0x139ef1['charAt'](0x0)[_0xff29('0x18d')]()+_0x139ef1[_0xff29('0x18e')](0x1);var _0x518c45={'type':db[_0xff29('0x98')][_0xff29('0x72')][_0xff29('0x73')],'raw':!![]};return new Promise(function(_0x2d848e,_0x5c6023){var _0x7066a7=squel[_0xff29('0x18f')]()['field']('ui.'+_0x455241+_0xff29('0x190'),'id')[_0xff29('0x191')](_0xff29('0x192'))['from'](_0xff29('0x193')+_0x139ef1+_0xff29('0x194'),'ui')['where']('ui.UserId\x20=\x20?',_0x3b91ec['id']);return db['sequelize']['query'](_0x7066a7['toString'](),_0x518c45)[_0xff29('0x16')](function(_0x3d7956){_0x3b91ec[_0x455241+_0xff29('0x195')]=_0x3d7956;_0x2d848e(_0x3d7956);})[_0xff29('0x20')](function(_0x36a3ab){_0x5c6023(_0x36a3ab);});});}
\ No newline at end of file
+var _0x9760=['QueryTypes','from','voicemail','mailbox','fullname','permissions','101','102','113','104','105','106','107','100','115','user','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','create','UserProfileSection','Agents','autoAssociation','bulkCreate','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','map','VoiceMail','some','findAll','isEmpty','oldPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','updatePasswordsHistory','online','loginInPause','voicePause','interface','isValidChannel','capitalize','toLowerCase','spread','emit','voice','VoiceQueue','SIP/%s','penalty','UserVoiceQueueRt','removeQueues','channel','remove','Queues','isArray','QueueId','Queue:remove','addAvatar','userpic','file','getAvatar','join','server/files/images/logos/default_profile.png','download','existsSync','root','server/files/images/','getOpenTabs','ChatOpenTabs','createdAt','FAX','OPENCHANNEL','MailOpenTabs','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','concat','CmContact','filters','order','sort','pick','getContacts','Tag','Tags','tag','hasOwnProperty','nolimit','getQueues','Unknown\x20channel','Queue','options','Unknown\x20role','getVoiceQueuesRt','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','ChatInteraction','getChatInteractions','OpenchannelInteraction','getOpenchannelInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','format','LOCAL/%s@from-sip/n','intrf','user:%s','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','forEach','update','getChannels','YYYY-MM-DD\x20HH:mm:ss','PAUSE','LOGININPAUSE','resolve','logout','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','getAssociatedQueues','addAgent','getDataValue','Voice','Queue:save','flattenDeep','removeAgent','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$notLike','$notILike','$like','$overlap','$any','firstName','lastName','Contact','dialActive','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','nonce','removeApiKey','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','inbound','flatten','lower','col','toString','asc','uniqBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','idle','unknown','unavailable','voiceStatus','slice','charAt','toUpperCase','select','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','OpenTabs','moment','util','path','lodash','squel','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/license/util','APINotFoundError','../../errors/api','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','register','defaults','client','http','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','destroy','get','role','admin','Users','agent','Telephones','telephone','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','fieldName','type','key','filter','password','getOptions','where','include','query','userSetting','UserSetting','attributes','rows','openTabs','true','length','dataValues','push','sms','mail','openchannel','whatsapp','all','catch','show','params','model','differenceBy','keys','salt','intersection','fields','includeAll','merge','chat','fax','body','describe','addContacts','ids','omit','internal','Setting','securePassword','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)'];(function(_0x5ed3c4,_0x259c9e){var _0x4c819b=function(_0x634134){while(--_0x634134){_0x5ed3c4['push'](_0x5ed3c4['shift']());}};_0x4c819b(++_0x259c9e);}(_0x9760,0x11e));var _0x0976=function(_0x59c99e,_0x3d104c){_0x59c99e=_0x59c99e-0x0;var _0x18b907=_0x9760[_0x59c99e];return _0x18b907;};'use strict';var moment=require(_0x0976('0x0'));var util=require(_0x0976('0x1'));var path=require(_0x0976('0x2'));var fs=require('fs');var _=require(_0x0976('0x3'));var squel=require(_0x0976('0x4'));var jayson=require('jayson/promise');var Redis=require('ioredis');var authService=require(_0x0976('0x5'));var qs=require(_0x0976('0x6'));var logger=require('../../config/logger')(_0x0976('0x7'));var utils=require(_0x0976('0x8'));var config=require('../../config/environment');var licenseUtil=require(_0x0976('0x9'));var APIBadRequestError=require('../../errors/api')['APIBadRequestError'];var APINotFoundError=require('../../errors/api')[_0x0976('0xa')];var APIHandleError=require(_0x0976('0xb'))[_0x0976('0xc')];var db=require(_0x0976('0xd'))['db'];var socket=require(_0x0976('0xe'))(new Redis(config[_0x0976('0xf')]));require(_0x0976('0x10'))[_0x0976('0x11')](socket);config[_0x0976('0xf')]=_[_0x0976('0x12')](config[_0x0976('0xf')],{'host':'localhost','port':0x18eb});var amiClient=jayson[_0x0976('0x13')][_0x0976('0x14')]({'port':0x232a});var values;function respondWithRpcPromise(_0xe5ba4f,_0x1a9437,_0x3965f1,_0xa56822){return new Promise(function(_0x15e2d2,_0x5a1f19){var _0x1909ca=_0xa56822||amiClient;return _0x1909ca['request'](_0xe5ba4f,_0x3965f1)['then'](function(_0x593922){logger[_0x0976('0x15')](_0x0976('0x16'),_0x1a9437,'request\x20sent');logger[_0x0976('0x17')](_0x0976('0x18'),_0x1a9437,_0x0976('0x19'),JSON['stringify'](_0x593922));if(_0x593922['error']){if(_0x593922['error'][_0x0976('0x1a')]===0x1f4){logger[_0x0976('0x1b')]('User,\x20%s,\x20%s',_0x1a9437,_0x593922['error']['message']);return _0x5a1f19(_0x593922['error'][_0x0976('0x1c')]);}logger['error'](_0x0976('0x16'),_0x1a9437,_0x593922[_0x0976('0x1b')]['message']);return _0x15e2d2(_0x593922['error']['message']);}else{logger[_0x0976('0x15')]('User,\x20%s,\x20%s',_0x1a9437,_0x0976('0x19'));_0x15e2d2(_0x593922['result'][_0x0976('0x1c')]);}})['catch'](function(_0x25c810){logger[_0x0976('0x1b')](_0x0976('0x16'),_0x1a9437,_0x25c810);_0x5a1f19(_0x25c810);});});}function respondWithStatusCode(_0x4e17a9,_0x29c4a4){_0x29c4a4=_0x29c4a4||0xcc;return function(_0x293262){if(_0x293262){return _0x4e17a9[_0x0976('0x1d')](_0x29c4a4);}return _0x4e17a9[_0x0976('0x1e')](_0x29c4a4)[_0x0976('0x1f')]();};}function respondWithResult(_0xdd751b,_0x6fe2c7){_0x6fe2c7=_0x6fe2c7||0xc8;return function(_0x4b7151){if(_0x4b7151){return _0xdd751b[_0x0976('0x1e')](_0x6fe2c7)[_0x0976('0x20')](_0x4b7151);}};}function respondWithFilteredResult(_0x1dd610,_0x3e4894){return function(_0x3d7fe6){if(_0x3d7fe6){var _0x36220a=typeof _0x3e4894[_0x0976('0x21')]===_0x0976('0x22')&&typeof _0x3e4894[_0x0976('0x23')]===_0x0976('0x22');var _0x3cde06=_0x3d7fe6[_0x0976('0x24')];var _0x19946e=_0x36220a?0x0:_0x3e4894[_0x0976('0x21')];var _0x4ff3a5=_0x36220a?_0x3d7fe6[_0x0976('0x24')]:_0x3e4894[_0x0976('0x21')]+_0x3e4894['limit'];var _0x13ae11;if(_0x4ff3a5>=_0x3cde06){_0x4ff3a5=_0x3cde06;_0x13ae11=0xc8;}else{_0x13ae11=0xce;}_0x1dd610[_0x0976('0x1e')](_0x13ae11);return _0x1dd610[_0x0976('0x25')](_0x0976('0x26'),_0x19946e+'-'+_0x4ff3a5+'/'+_0x3cde06)[_0x0976('0x20')](_0x3d7fe6);}return null;};}function saveUpdates(_0x3e5ad7){return function(_0x53d82e){if(_0x53d82e){return _0x53d82e['update'](_0x3e5ad7)[_0x0976('0x27')](function(_0x37e6fe){socket['emit']('userNotification:recalc:'+_0x37e6fe['id'],{});return _0x37e6fe;});}return null;};}function removeEntity(_0x518ae4){return function(_0x463b94){if(_0x463b94){return _0x463b94[_0x0976('0x28')]()['then'](function(){var _0x1ce7ef=_0x463b94[_0x0976('0x29')]({'plain':!![]});if(_0x1ce7ef[_0x0976('0x2a')]===_0x0976('0x2b'))return;var _0x37f0a2=[{'name':_0x0976('0x2c'),'value':'user','ignore':!![]},{'name':'Agents','value':_0x0976('0x2d'),'ignore':![]},{'name':_0x0976('0x2e'),'value':_0x0976('0x2f'),'ignore':![]}];var _0x74c8e4=_(_0x37f0a2)['filter']('ignore')['map'](_0x0976('0x30'))['value']();if(_[_0x0976('0x31')](_0x74c8e4,_0x1ce7ef[_0x0976('0x2a')])){return;}var _0x22258c=_[_0x0976('0x32')](_0x37f0a2,[_0x0976('0x30'),_0x1ce7ef[_0x0976('0x2a')]])[_0x0976('0x33')];return db[_0x0976('0x34')][_0x0976('0x28')]({'where':{'type':_0x22258c,'resourceId':_0x1ce7ef['id']}})[_0x0976('0x27')](function(){return _0x463b94;});})[_0x0976('0x27')](function(){_0x518ae4['status'](0xcc)[_0x0976('0x1f')]();});}};}function handleEntityNotFound(_0x36e023){return function(_0xe5309){if(!_0xe5309){_0x36e023[_0x0976('0x1d')](0x194);}return _0xe5309;};}function handleError(_0x14dcbf,_0x308aeb){_0x308aeb=_0x308aeb||0x1f4;return function(_0xa933c9){logger[_0x0976('0x1b')](_0xa933c9[_0x0976('0x35')]);if(_0xa933c9[_0x0976('0x33')]){delete _0xa933c9[_0x0976('0x33')];}_0x14dcbf[_0x0976('0x1e')](_0x308aeb)[_0x0976('0x36')](_0xa933c9);};}exports[_0x0976('0x37')]=function(_0x58a25d,_0x488ddd){var _0x419d1f={},_0x331195={'count':0x0,'rows':[]};var _0xa020a5=_(db[_0x0976('0x38')][_0x0976('0x39')])['map'](function(_0x5aabf1){return{'name':_0x5aabf1[_0x0976('0x3a')],'type':_0x5aabf1[_0x0976('0x3b')][_0x0976('0x3c')]};})[_0x0976('0x3d')](function(_0x40daa0){return!_[_0x0976('0x31')]([_0x0976('0x3e'),'salt'],_0x40daa0['name']);})['value']();_0x419d1f=qs[_0x0976('0x3f')](_0xa020a5,_0x58a25d);var _0x10863b={'where':_0x419d1f[_0x0976('0x40')]};return db['User']['count'](_0x10863b)[_0x0976('0x27')](function(_0x167496){_0x331195[_0x0976('0x24')]=_0x167496;if(_0x58a25d['query']['includeAll']){_0x419d1f[_0x0976('0x41')]=[{'all':!![]}];}if(_0x58a25d[_0x0976('0x42')][_0x0976('0x43')]==='true'){_0x419d1f['include']=[{'model':db[_0x0976('0x44')],'as':'userSetting'}];}if(!_[_0x0976('0x31')](_0x419d1f[_0x0976('0x45')],'id')){_0x419d1f[_0x0976('0x45')]['push']('id');}return db['User']['findAll'](_0x419d1f);})[_0x0976('0x27')](function(_0x5b06ed){_0x331195[_0x0976('0x46')]=_0x5b06ed;if(_0x58a25d['query'][_0x0976('0x47')]===_0x0976('0x48')){var _0x587b6b=[];for(var _0x2d44d9=0x0;_0x2d44d9<_0x331195[_0x0976('0x46')][_0x0976('0x49')];_0x2d44d9++){_0x587b6b['push'](get_open_tabs('chat',_0x331195['rows'][_0x2d44d9][_0x0976('0x4a')]));_0x587b6b[_0x0976('0x4b')](get_open_tabs(_0x0976('0x4c'),_0x331195[_0x0976('0x46')][_0x2d44d9][_0x0976('0x4a')]));_0x587b6b[_0x0976('0x4b')](get_open_tabs('fax',_0x331195[_0x0976('0x46')][_0x2d44d9]['dataValues']));_0x587b6b[_0x0976('0x4b')](get_open_tabs(_0x0976('0x4d'),_0x331195[_0x0976('0x46')][_0x2d44d9][_0x0976('0x4a')]));_0x587b6b['push'](get_open_tabs(_0x0976('0x4e'),_0x331195[_0x0976('0x46')][_0x2d44d9][_0x0976('0x4a')]));_0x587b6b[_0x0976('0x4b')](get_open_tabs(_0x0976('0x4f'),_0x331195[_0x0976('0x46')][_0x2d44d9][_0x0976('0x4a')]));}return Promise[_0x0976('0x50')](_0x587b6b)[_0x0976('0x27')](function(){return _0x331195;});}else{return _0x331195;}})[_0x0976('0x27')](respondWithFilteredResult(_0x488ddd,_0x419d1f))[_0x0976('0x51')](handleError(_0x488ddd,null));};exports[_0x0976('0x52')]=function(_0x3da136,_0x10f1dd){var _0x3e5099={'raw':![],'where':{'id':_0x3da136[_0x0976('0x53')]['id']}},_0x546ad7={};_0x546ad7[_0x0976('0x54')]=_[_0x0976('0x55')](_[_0x0976('0x56')](db['User'][_0x0976('0x39')]),[_0x0976('0x3e'),_0x0976('0x57')]);_0x546ad7[_0x0976('0x42')]=_['keys'](_0x3da136[_0x0976('0x42')]);_0x546ad7['filters']=_[_0x0976('0x58')](_0x546ad7[_0x0976('0x54')],_0x546ad7[_0x0976('0x42')]);_0x3e5099[_0x0976('0x45')]=_[_0x0976('0x58')](_0x546ad7[_0x0976('0x54')],qs[_0x0976('0x59')](_0x3da136[_0x0976('0x42')]['fields']));_0x3e5099[_0x0976('0x45')]=_0x3e5099[_0x0976('0x45')][_0x0976('0x49')]?_0x3e5099[_0x0976('0x45')]:_0x546ad7[_0x0976('0x54')];if(_0x3da136[_0x0976('0x42')][_0x0976('0x5a')]){_0x3e5099['include']=[{'all':!![]}];}if(_0x3da136[_0x0976('0x42')][_0x0976('0x43')]===_0x0976('0x48')){_0x3e5099[_0x0976('0x41')]=[{'model':db[_0x0976('0x44')],'as':_0x0976('0x43')}];}_0x3e5099=_[_0x0976('0x5b')]({},_0x3e5099,_0x3da136['options']);if(!_[_0x0976('0x31')](_0x3e5099[_0x0976('0x45')],'id')){_0x3e5099['attributes'][_0x0976('0x4b')]('id');}return db[_0x0976('0x38')][_0x0976('0x32')](_0x3e5099)['then'](handleEntityNotFound(_0x10f1dd,null))[_0x0976('0x27')](function(_0x238c04){var _0x5ce233=[];values=_0x238c04;if(_0x3da136[_0x0976('0x42')][_0x0976('0x47')]==='true'){_0x5ce233['push'](get_open_tabs(_0x0976('0x5c'),_0x238c04['dataValues']));_0x5ce233[_0x0976('0x4b')](get_open_tabs('sms',_0x238c04[_0x0976('0x4a')]));_0x5ce233[_0x0976('0x4b')](get_open_tabs(_0x0976('0x4e'),_0x238c04['dataValues']));_0x5ce233[_0x0976('0x4b')](get_open_tabs(_0x0976('0x4f'),_0x238c04[_0x0976('0x4a')]));_0x5ce233[_0x0976('0x4b')](get_open_tabs(_0x0976('0x5d'),_0x238c04[_0x0976('0x4a')]));_0x5ce233['push'](get_open_tabs(_0x0976('0x4d'),_0x238c04['dataValues']));return Promise['all'](_0x5ce233);}else{return values;}})[_0x0976('0x27')](function(){return values;})[_0x0976('0x27')](respondWithResult(_0x10f1dd,null))['catch'](handleError(_0x10f1dd,null));};exports['update']=function(_0x2a7b8f,_0x54d5d4){if(_0x2a7b8f[_0x0976('0x5e')]['id']){delete _0x2a7b8f[_0x0976('0x5e')]['id'];}delete _0x2a7b8f[_0x0976('0x5e')][_0x0976('0x2a')];return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x2a7b8f['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x54d5d4,null))[_0x0976('0x27')](saveUpdates(_0x2a7b8f[_0x0976('0x5e')],null))[_0x0976('0x27')](respondWithResult(_0x54d5d4,null))[_0x0976('0x51')](handleError(_0x54d5d4,null));};exports['describe']=function(_0x1e078e,_0x150811){return db['User'][_0x0976('0x5f')]()['then'](respondWithResult(_0x150811,null))[_0x0976('0x51')](handleError(_0x150811,null));};exports[_0x0976('0x60')]=function(_0x3b7a15,_0x27c23f){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x3b7a15[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x27c23f,null))[_0x0976('0x27')](function(_0x2009c1){if(_0x2009c1){return _0x2009c1[_0x0976('0x60')](_0x3b7a15[_0x0976('0x5e')][_0x0976('0x61')],_[_0x0976('0x62')](_0x3b7a15[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{});}})[_0x0976('0x27')](respondWithResult(_0x27c23f,null))[_0x0976('0x51')](handleError(_0x27c23f,null));};function validateUser(_0x1e3103){return new Promise(function(_0x1044b1,_0x20480b){if(_0x1e3103[_0x0976('0x63')])return _0x1044b1(_0x1e3103);return db[_0x0976('0x64')]['findById'](0x1)[_0x0976('0x27')](function(_0x3b4be9){if(_0x3b4be9[_0x0976('0x65')])authService['validatePasswordPattern'](_0x1e3103['password']);db[_0x0976('0x38')][_0x0976('0x66')](_0x0976('0x63'))[_0x0976('0x27')](function(_0x3949e4){if(_[_0x0976('0x67')](_0x3949e4)){_0x1e3103[_0x0976('0x63')]=_0x3b4be9[_0x0976('0x68')]||0x1;return;}if(_['isNil'](_0x3b4be9[_0x0976('0x68')])||_0x3b4be9[_0x0976('0x68')]===_0x3949e4){_0x1e3103[_0x0976('0x63')]=_0x3949e4+0x1;return;}if(_0x3b4be9[_0x0976('0x68')]>_0x3949e4){_0x1e3103[_0x0976('0x63')]=_0x3b4be9[_0x0976('0x68')];return;}return db[_0x0976('0x69')][_0x0976('0x42')](_0x0976('0x6a'),{'type':db['sequelize'][_0x0976('0x6b')]['SELECT']})['then'](function(_0x1f7f3d){if(_0x1f7f3d&&_0x1f7f3d['length']){for(var _0x1f805f=0x0,_0x2178ea=_0x1f7f3d[_0x0976('0x49')];_0x1f805f<_0x2178ea&&_[_0x0976('0x67')](_0x1e3103[_0x0976('0x63')]);_0x1f805f++){if(_0x3b4be9[_0x0976('0x68')]<=_0x1f7f3d[_0x1f805f][_0x0976('0x6c')]){_0x1e3103[_0x0976('0x63')]=_0x1f7f3d[_0x1f805f][_0x0976('0x6c')];}else if(_0x3b4be9[_0x0976('0x68')]>_0x1f7f3d[_0x1f805f]['from']&&_0x3b4be9[_0x0976('0x68')]<=_0x1f7f3d[_0x1f805f]['to']){_0x1e3103['internal']=_0x3b4be9[_0x0976('0x68')];}}}if(_[_0x0976('0x67')](_0x1e3103['internal'])){_0x1e3103[_0x0976('0x63')]=_0x3949e4+0x1;}return _0x1044b1(_0x1e3103);});});})['catch'](function(_0x2fd784){_0x20480b(_0x2fd784);});});}function updateUser(_0x1239ad){return new Promise(function(_0x36e4a7,_0x64644d){try{if(_0x1239ad[_0x0976('0x6d')]){_0x1239ad[_0x0976('0x6e')]=_0x1239ad['internal'];_0x1239ad['VoiceMail']={'mailbox':_0x1239ad[_0x0976('0x63')],'password':_0x1239ad[_0x0976('0x3e')],'fullname':_0x1239ad[_0x0976('0x6f')],'email':_0x1239ad['email']};}if(_0x1239ad['role']===_0x0976('0x2d')){if(!_0x1239ad[_0x0976('0x70')])_0x1239ad[_0x0976('0x70')]=[_0x0976('0x71'),_0x0976('0x72'),'103',_0x0976('0x73'),'110',_0x0976('0x74'),_0x0976('0x75'),_0x0976('0x76'),_0x0976('0x77'),'108','109',_0x0976('0x78'),'111','114',_0x0976('0x79')];}_0x36e4a7(_0x1239ad);}catch(_0x1f8877){_0x64644d(_0x1f8877);}});}exports['create']=function(_0x5a3bfa,_0x2481f6){if(_0x5a3bfa[_0x0976('0x7a')][_0x0976('0x2a')]===_0x0976('0x2d'))throw new Error(_0x0976('0x7b'));if(_0x5a3bfa[_0x0976('0x5e')][_0x0976('0x2a')]===_0x0976('0x7a')&&_0x5a3bfa['user'][_0x0976('0x2a')]!==_0x0976('0x2b')){throw new Error(_0x0976('0x7c'));}if(_0x5a3bfa[_0x0976('0x5e')][_0x0976('0x2a')]===_0x0976('0x2b')&&_0x5a3bfa[_0x0976('0x7a')][_0x0976('0x2a')]!=='admin'){throw new Error(_0x0976('0x7d'));}return licenseUtil['checkUserLimits']([_0x5a3bfa[_0x0976('0x5e')]])[_0x0976('0x27')](function(){return validateUser(_0x5a3bfa[_0x0976('0x5e')]);})[_0x0976('0x27')](function(_0x3bb0f5){return updateUser(_0x3bb0f5)['then'](function(_0xf756d6){if(_0xf756d6[_0x0976('0x2a')]==='admin'){_0xf756d6[_0x0976('0x7e')]=_0x5a3bfa['user'][_0x0976('0x7e')];delete _0xf756d6[_0x0976('0x7f')];}return _0xf756d6;});})[_0x0976('0x27')](function(_0xa5766){return db[_0x0976('0x38')][_0x0976('0x80')](_0xa5766,{'include':[{'model':db['VoiceMail'],'as':'VoiceMail'}]});})['then'](function(_0x5f0ac7){if(_0x5a3bfa['body']['role']===_0x0976('0x7a'))return _0x5f0ac7;if(_0x5a3bfa['user'][_0x0976('0x2a')]!==_0x0976('0x7a'))return _0x5f0ac7;return db[_0x0976('0x81')][_0x0976('0x32')]({'where':{'name':_0x5f0ac7[_0x0976('0x2a')]===_0x0976('0x2d')?_0x0976('0x82'):_0x0976('0x2e'),'userProfileId':_0x5a3bfa[_0x0976('0x7a')][_0x0976('0x7f')]},'raw':!![]})[_0x0976('0x27')](function(_0x2a19ab){if(!_0x2a19ab||_0x2a19ab[_0x0976('0x83')]!=0x0)return _0x5f0ac7;return db['UserProfileResource'][_0x0976('0x80')]({'name':_0x5f0ac7[_0x0976('0x33')],'resourceId':_0x5f0ac7['id'],'type':_0x2a19ab[_0x0976('0x33')],'sectionId':_0x2a19ab['id']},{})['then'](function(){return _0x5f0ac7;});})['catch'](function(_0xf11616){logger[_0x0976('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xf11616);throw _0xf11616;});})[_0x0976('0x27')](respondWithResult(_0x2481f6,0xc9))[_0x0976('0x51')](handleError(_0x2481f6,null));};exports[_0x0976('0x84')]=function(_0xd67150,_0x4947b7){var _0x19937b=_0xd67150[_0x0976('0x5e')];var _0x51abed=[];if(_0xd67150[_0x0976('0x7a')][_0x0976('0x2a')]==='agent')throw new Error('Unauthorized');if(_['some'](_0x19937b,[_0x0976('0x2a'),_0x0976('0x7a')])&&_0xd67150[_0x0976('0x7a')]['role']!==_0x0976('0x2b')){throw new Error(_0x0976('0x7c'));}if(_['some'](_0x19937b,['role',_0x0976('0x2b')])&&_0xd67150['user'][_0x0976('0x2a')]!==_0x0976('0x2b')){throw new Error(_0x0976('0x85'));}return licenseUtil[_0x0976('0x86')](_0x19937b)['then'](function(){return validateUser(_0x19937b[0x0]);})[_0x0976('0x27')](function(){for(var _0x5e57ee=0x1;_0x5e57ee<_0x19937b['length'];_0x5e57ee++){var _0x2b076a=_0x19937b[_0x5e57ee-0x1][_0x0976('0x63')];if(!_0x19937b[_0x5e57ee][_0x0976('0x63')])_0x19937b[_0x5e57ee][_0x0976('0x63')]=_0x2b076a+0x1;_0x51abed[_0x0976('0x4b')](validateUser(_0x19937b[_0x5e57ee]));}return Promise['all'](_0x51abed);})[_0x0976('0x27')](function(){_0x51abed=[];for(var _0x2172a2=0x0;_0x2172a2<_0x19937b[_0x0976('0x49')];_0x2172a2++){_0x51abed[_0x0976('0x4b')](updateUser(_0x19937b[_0x2172a2]));}return Promise[_0x0976('0x50')](_0x51abed);})[_0x0976('0x27')](function(){_0x51abed=_0x19937b[_0x0976('0x87')](function(_0x4309f1){return db[_0x0976('0x38')][_0x0976('0x80')](_0x4309f1,{'include':[{'model':db[_0x0976('0x88')],'as':_0x0976('0x88')}]})[_0x0976('0x27')](function(_0x3b4083){_0x4309f1['id']=_0x3b4083['id'];return _0x4309f1;});});return Promise[_0x0976('0x50')](_0x51abed);})[_0x0976('0x27')](function(_0x210704){if(_0xd67150[_0x0976('0x5e')][_0x0976('0x2a')]===_0x0976('0x7a'))return _0x210704;if(_0xd67150[_0x0976('0x7a')][_0x0976('0x2a')]!==_0x0976('0x7a'))return _0x210704;var _0x1b0f0d=_[_0x0976('0x89')](_0x210704,function(_0x5aab81){return _0x5aab81[_0x0976('0x2a')]===_0x0976('0x2d')||_0x5aab81[_0x0976('0x2a')]===_0x0976('0x2f');});if(!_0x1b0f0d)return _0x210704;return db[_0x0976('0x81')][_0x0976('0x8a')]({'where':{'name':{'$or':[_0x0976('0x82'),_0x0976('0x2e')]},'userProfileId':_0xd67150['user'][_0x0976('0x7f')]},'raw':!![]})[_0x0976('0x27')](function(_0x2f43e8){if(_[_0x0976('0x8b')](_0x2f43e8)||!_[_0x0976('0x89')](_0x2f43e8,[_0x0976('0x83'),0x0]))return _0x210704;_0x51abed=[];var _0x4d4e09=_(_0x2f43e8)['map'](function(_0x28e9dc){if(_0x28e9dc[_0x0976('0x83')]===0x1)return;return _0x28e9dc[_0x0976('0x33')]===_0x0976('0x82')?_0x0976('0x2d'):'telephone';})['compact']()['value']();for(var _0x4fd22d=0x0;_0x4fd22d<_0x210704['length'];_0x4fd22d++){if(!_[_0x0976('0x31')](_0x4d4e09,_0x210704[_0x4fd22d][_0x0976('0x2a')]))return;var _0x38c0a4=_0x210704[_0x4fd22d]['role']===_0x0976('0x2d')?_0x0976('0x82'):_0x0976('0x2e');_0x51abed[_0x0976('0x4b')](db[_0x0976('0x34')]['create']({'name':_0x210704[_0x4fd22d][_0x0976('0x33')],'resourceId':_0x210704[_0x4fd22d]['id'],'type':_0x38c0a4,'sectionId':_['find'](_0x2f43e8,[_0x0976('0x33'),_0x38c0a4])['id']},{}));}return Promise[_0x0976('0x50')](_0x51abed);});})[_0x0976('0x27')](respondWithResult(_0x4947b7,0xc9))[_0x0976('0x51')](handleError(_0x4947b7,null));};exports['changePassword']=function(_0x108ee8,_0x34ac4a){if(_0x108ee8[_0x0976('0x5e')]['id']){delete _0x108ee8[_0x0976('0x5e')]['id'];}return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x108ee8[_0x0976('0x53')]['id']}})[_0x0976('0x27')](function(_0x1a1b64){if(!_0x1a1b64)return null;if(_0x1a1b64['id']===_0x108ee8['user']['id']){if(!_0x108ee8[_0x0976('0x5e')][_0x0976('0x8c')]||!_0x108ee8[_0x0976('0x5e')]['newPassword']){throw new db[(_0x0976('0x8d'))][(_0x0976('0x8e'))](_0x0976('0x8f'));}if(!_0x1a1b64[_0x0976('0x90')](_0x108ee8[_0x0976('0x5e')][_0x0976('0x8c')])){throw new db[(_0x0976('0x8d'))]['ValidationError'](_0x0976('0x91'));}if(_0x108ee8[_0x0976('0x5e')][_0x0976('0x8c')]===_0x108ee8[_0x0976('0x5e')][_0x0976('0x92')]){throw new db['Sequelize'][(_0x0976('0x8e'))](_0x0976('0x93'));}}else if(_0x108ee8[_0x0976('0x7a')]['role']===_0x0976('0x2b')){if(!_0x108ee8[_0x0976('0x5e')]['newPassword']){throw new db[(_0x0976('0x8d'))][(_0x0976('0x8e'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x108ee8[_0x0976('0x7a')]['role']==='user'){if(!_0x108ee8[_0x0976('0x5e')]['newPassword']){throw new db[(_0x0976('0x8d'))][(_0x0976('0x8e'))](_0x0976('0x94'));}if(_0x1a1b64[_0x0976('0x2a')]!==_0x0976('0x2d')){throw new db[(_0x0976('0x8d'))]['ValidationError'](_0x0976('0x7b'));}}else{throw new db[(_0x0976('0x8d'))][(_0x0976('0x8e'))](_0x0976('0x7b'));}return _0x1a1b64;})['then'](handleEntityNotFound(_0x34ac4a,null))['then'](function(_0x2f25cb){return db[_0x0976('0x64')][_0x0976('0x95')]({'attributes':['id',_0x0976('0x65'),_0x0976('0x96'),_0x0976('0x97')]})[_0x0976('0x27')](function(_0x10f887){if(_0x10f887[_0x0976('0x65')])authService[_0x0976('0x98')](_0x108ee8[_0x0976('0x5e')][_0x0976('0x92')]);if(!_0x10f887[_0x0976('0x96')]||!_0x2f25cb[_0x0976('0x99')])return _0x2f25cb;authService['validatePasswordHistory'](_0x108ee8['body'][_0x0976('0x92')],_0x2f25cb['previousPasswords'],_0x10f887[_0x0976('0x97')]);return _0x2f25cb;})[_0x0976('0x27')](saveUpdates({'password':_0x108ee8[_0x0976('0x5e')][_0x0976('0x92')],'passwordResetAt':_0x108ee8[_0x0976('0x7a')]['id']==_0x108ee8['params']['id']?moment():null,'previousPasswords':authService[_0x0976('0x9a')](_0x108ee8[_0x0976('0x5e')][_0x0976('0x92')],_0x2f25cb[_0x0976('0x99')])},null));})['then'](respondWithResult(_0x34ac4a,null))[_0x0976('0x51')](handleError(_0x34ac4a,null));};exports['addQueues']=function(_0xe4c12d,_0x46d3a8){var _0x48279b=_0xe4c12d[_0x0976('0x5e')]['channel'];return db[_0x0976('0x38')]['find']({'where':{'id':_0xe4c12d[_0x0976('0x53')]['id']},'attributes':['id','name','role',_0x0976('0x9b'),_0x0976('0x9c'),_0x0976('0x9d'),_0x0976('0x9e')]})[_0x0976('0x27')](handleEntityNotFound(_0x46d3a8,null))[_0x0976('0x27')](function(_0x19a4c1){if(_0x19a4c1){if(!utils[_0x0976('0x9f')](_0x48279b)){throw new db[(_0x0976('0x8d'))][(_0x0976('0x8e'))]('Unknown\x20channel');}return _0x19a4c1['add'+_[_0x0976('0xa0')](_0x48279b[_0x0976('0xa1')]())+'Queues'](_0xe4c12d[_0x0976('0x5e')][_0x0976('0x61')],{'penalty':_0xe4c12d[_0x0976('0x5e')]['penalty']||0x0})[_0x0976('0xa2')](function(_0x9e31e8){for(var _0x626c09=0x0;_0x626c09<_0xe4c12d[_0x0976('0x5e')][_0x0976('0x61')][_0x0976('0x49')];_0x626c09+=0x1){var _0x34de12={'UserId':Number(_0xe4c12d[_0x0976('0x53')]['id'])};_0x34de12[_[_0x0976('0xa0')](_0x48279b[_0x0976('0xa1')]())+'QueueId']=Number(_0xe4c12d[_0x0976('0x5e')][_0x0976('0x61')][_0x626c09]);socket[_0x0976('0xa3')](_0x0976('0x7a')+_[_0x0976('0xa0')](_0x48279b[_0x0976('0xa1')]())+'Queue:save',_0x34de12);}return _0x9e31e8;})[_0x0976('0x27')](function(){if(_0x48279b===_0x0976('0xa4')){return db[_0x0976('0xa5')][_0x0976('0x8a')]({'where':{'id':_0xe4c12d[_0x0976('0x5e')][_0x0976('0x61')]||[]},'raw':!![],'attributes':['id',_0x0976('0x33')]});}})[_0x0976('0x27')](function(_0x1842ed){var _0x3f1329=_0x19a4c1[_0x0976('0x29')]({'plain':!![]});var _0x5ee0d9=[];if(_0x48279b===_0x0976('0xa4')&&_0x3f1329[_0x0976('0x2a')]===_0x0976('0x2d')&&_0x3f1329['online']){for(let _0x29a7de=0x0;_0x29a7de<_0x1842ed[_0x0976('0x49')];_0x29a7de+=0x1){_0x5ee0d9['push']({'membername':_0x3f1329[_0x0976('0x33')],'UserId':_0x3f1329['id'],'queue_name':_0x1842ed[_0x29a7de][_0x0976('0x33')],'VoiceQueueId':_0x1842ed[_0x29a7de]['id'],'interface':_[_0x0976('0x67')](_0x3f1329[_0x0976('0x9e')])?util['format'](_0x0976('0xa6'),_0x3f1329[_0x0976('0x33')]):_0x3f1329[_0x0976('0x9e')],'paused':_0x3f1329[_0x0976('0x9d')]||![],'penalty':_0xe4c12d[_0x0976('0x5e')][_0x0976('0xa7')]||0x0});}return Promise[_0x0976('0x50')](_0x5ee0d9[_0x0976('0x87')](function(_0x252923){return db[_0x0976('0xa8')]['upsert'](_0x252923);}));}return _0x19a4c1;});}})['then'](respondWithStatusCode(_0x46d3a8,null))[_0x0976('0x51')](handleError(_0x46d3a8,null));};exports[_0x0976('0xa9')]=function(_0x1dd910,_0x485255){var _0xdc89a6,_0x260b4c;return db[_0x0976('0x38')]['find']({'where':{'id':_0x1dd910[_0x0976('0x53')]['id']},'attributes':['id',_0x0976('0x33'),_0x0976('0x2a')]})['then'](handleEntityNotFound(_0x485255,null))['then'](function(_0x2291a3){if(_0x2291a3){_0xdc89a6=_0x2291a3;if(!_0x1dd910['query'][_0x0976('0xaa')]||!utils['isValidChannel'](_0x1dd910['query'][_0x0976('0xaa')])){throw new db[(_0x0976('0x8d'))][(_0x0976('0x8e'))]('Unknown\x20channel');}return _0x2291a3[_0x0976('0xab')+_[_0x0976('0xa0')](_0x1dd910[_0x0976('0x42')][_0x0976('0xaa')]['toLowerCase']())+_0x0976('0xac')](_0x1dd910[_0x0976('0x42')][_0x0976('0x61')]);}})[_0x0976('0x27')](function(_0x58520a){if(_[_0x0976('0xad')](_0x1dd910[_0x0976('0x42')][_0x0976('0x61')])){for(var _0x3cba42=0x0;_0x3cba42<_0x1dd910['query'][_0x0976('0x61')][_0x0976('0x49')];_0x3cba42+=0x1){_0x260b4c={'UserId':Number(_0x1dd910[_0x0976('0x53')]['id'])};_0x260b4c[_[_0x0976('0xa0')](_0x1dd910[_0x0976('0x42')][_0x0976('0xaa')]['toLowerCase']())+_0x0976('0xae')]=Number(_0x1dd910[_0x0976('0x42')][_0x0976('0x61')][_0x3cba42]);socket[_0x0976('0xa3')]('user'+_[_0x0976('0xa0')](_0x1dd910[_0x0976('0x42')]['channel'][_0x0976('0xa1')]())+_0x0976('0xaf'),_0x260b4c);}}else{_0x260b4c={'UserId':Number(_0x1dd910[_0x0976('0x53')]['id'])};_0x260b4c[_[_0x0976('0xa0')](_0x1dd910[_0x0976('0x42')][_0x0976('0xaa')]['toLowerCase']())+_0x0976('0xae')]=Number(_0x1dd910[_0x0976('0x42')][_0x0976('0x61')]);socket['emit'](_0x0976('0x7a')+_['capitalize'](_0x1dd910[_0x0976('0x42')][_0x0976('0xaa')]['toLowerCase']())+_0x0976('0xaf'),_0x260b4c);}return _0x58520a;})[_0x0976('0x27')](function(){if(_0x1dd910['query'][_0x0976('0xaa')]==='voice'){return db[_0x0976('0xa8')][_0x0976('0x28')]({'where':{'UserId':_0x1dd910[_0x0976('0x53')]['id'],'VoiceQueueId':_0x1dd910[_0x0976('0x42')][_0x0976('0x61')]},'individualHooks':!![]})[_0x0976('0x27')](function(){return _0xdc89a6;});}return _0xdc89a6;})['then'](respondWithStatusCode(_0x485255,null))[_0x0976('0x51')](handleError(_0x485255,null));};exports[_0x0976('0xb0')]=function(_0x4946c9,_0x38de22){_0x4946c9[_0x0976('0x5e')][_0x0976('0xb1')]=_0x4946c9[_0x0976('0xb2')]['filename'];return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x4946c9['params']['id']}})['then'](handleEntityNotFound(_0x38de22,null))[_0x0976('0x27')](saveUpdates(_0x4946c9[_0x0976('0x5e')],null))['then'](respondWithResult(_0x38de22,null))[_0x0976('0x51')](handleError(_0x38de22,null));};exports[_0x0976('0xb3')]=function(_0x18724c,_0x2ed431){var _0x2ca5ec=path[_0x0976('0xb4')](config['root'],_0x0976('0xb5'));return db[_0x0976('0x38')]['find']({'where':{'id':_0x18724c[_0x0976('0x53')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0x0976('0x27')](handleEntityNotFound(_0x2ed431,null))[_0x0976('0x27')](function(_0xfb7d13){if(_0xfb7d13){if(_[_0x0976('0x67')](_0xfb7d13[_0x0976('0xb1')])){return _0x2ed431[_0x0976('0xb6')](_0x2ca5ec);}else{if(!fs[_0x0976('0xb7')](path[_0x0976('0xb4')](config[_0x0976('0xb8')],_0x0976('0xb9'),_0xfb7d13[_0x0976('0xb1')]))){return _0x2ed431[_0x0976('0xb6')](_0x2ca5ec);}return _0x2ed431[_0x0976('0xb6')](path['join'](config[_0x0976('0xb8')],_0x0976('0xb9'),_0xfb7d13[_0x0976('0xb1')]));}}})[_0x0976('0x51')](handleError(_0x2ed431,null));};exports[_0x0976('0xba')]=function(_0x20dcf0,_0x3a2fea){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x20dcf0[_0x0976('0x53')]['id']},'attributes':['id']})[_0x0976('0x27')](handleEntityNotFound(_0x3a2fea,null))[_0x0976('0x27')](function(_0xfc9bf5){var _0x38dd5e=[];values=_0xfc9bf5['dataValues'];_0x38dd5e[_0x0976('0x4b')](get_open_tabs(_0x0976('0x5c'),_0xfc9bf5[_0x0976('0x4a')]));_0x38dd5e['push'](get_open_tabs(_0x0976('0x4c'),_0xfc9bf5[_0x0976('0x4a')]));_0x38dd5e[_0x0976('0x4b')](get_open_tabs(_0x0976('0x4e'),_0xfc9bf5[_0x0976('0x4a')]));_0x38dd5e[_0x0976('0x4b')](get_open_tabs('whatsapp',_0xfc9bf5['dataValues']));_0x38dd5e[_0x0976('0x4b')](get_open_tabs('fax',_0xfc9bf5[_0x0976('0x4a')]));_0x38dd5e['push'](get_open_tabs('mail',_0xfc9bf5[_0x0976('0x4a')]));return Promise[_0x0976('0x50')](_0x38dd5e);})[_0x0976('0x27')](function(_0x14ed04){if(_0x14ed04){var _0x111d6c=_[_0x0976('0x87')](values[_0x0976('0xbb')],function(_0x5815d2){return{'channel':'CHAT','id':_0x5815d2['id'],'createdAt':_0x5815d2[_0x0976('0xbc')]};});var _0xaa2c9d=_['map'](values['FaxOpenTabs'],function(_0x526ac5){return{'channel':_0x0976('0xbd'),'id':_0x526ac5['id'],'createdAt':_0x526ac5[_0x0976('0xbc')]};});var _0x327789=_[_0x0976('0x87')](values['OpenchannelOpenTabs'],function(_0x58c28e){return{'channel':_0x0976('0xbe'),'id':_0x58c28e['id'],'createdAt':_0x58c28e['createdAt']};});var _0x270cb8=_[_0x0976('0x87')](values[_0x0976('0xbf')],function(_0x5ac2eb){return{'channel':'MAIL','id':_0x5ac2eb['id'],'createdAt':_0x5ac2eb[_0x0976('0xbc')]};});var _0x42a857=_[_0x0976('0x87')](values[_0x0976('0xc0')],function(_0x34bccc){return{'channel':_0x0976('0xc1'),'id':_0x34bccc['id'],'createdAt':_0x34bccc[_0x0976('0xbc')]};});var _0x297c2d=_[_0x0976('0x87')](values[_0x0976('0xc2')],function(_0x28c57b){return{'channel':_0x0976('0xc3'),'id':_0x28c57b['id'],'createdAt':_0x28c57b['createdAt']};});var _0x3a52ff=_[_0x0976('0xc4')](_0x111d6c,_0xaa2c9d,_0x327789,_0x270cb8,_0x42a857,_0x297c2d);var _0x1740d7={'count':_0x3a52ff[_0x0976('0x49')],'rows':_0x3a52ff};return _0x1740d7;}else return null;})[_0x0976('0x27')](respondWithResult(_0x3a2fea,null))[_0x0976('0x51')](handleError(_0x3a2fea,null));};exports['getContacts']=function(_0x4a383e,_0x499c3e){var _0x1fb5f9={};var _0x473b8e={};var _0x28667d;var _0x1bc94c;return db['User'][_0x0976('0x95')]({'where':{'id':_0x4a383e[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0x499c3e,null))[_0x0976('0x27')](function(_0x3f06db){if(_0x3f06db){_0x28667d=_0x3f06db;_0x473b8e['model']=_[_0x0976('0x56')](db[_0x0976('0xc5')][_0x0976('0x39')]);_0x473b8e['query']=_[_0x0976('0x56')](_0x4a383e['query']);_0x473b8e[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x473b8e[_0x0976('0x54')],_0x473b8e[_0x0976('0x42')]);_0x1fb5f9[_0x0976('0x45')]=_[_0x0976('0x58')](_0x473b8e[_0x0976('0x54')],qs[_0x0976('0x59')](_0x4a383e[_0x0976('0x42')][_0x0976('0x59')]));_0x1fb5f9[_0x0976('0x45')]=_0x1fb5f9['attributes'][_0x0976('0x49')]?_0x1fb5f9[_0x0976('0x45')]:_0x473b8e['model'];_0x1fb5f9[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x4a383e['query']['sort']);_0x1fb5f9['where']=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x4a383e[_0x0976('0x42')],_0x473b8e[_0x0976('0xc6')]));if(_0x4a383e['query'][_0x0976('0x3d')]){_0x1fb5f9[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x1fb5f9[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x1fb5f9[_0x0976('0x45')],function(_0x1052c9){var _0x3d3aca={};_0x3d3aca[_0x1052c9]={'$like':'%'+_0x4a383e[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x3d3aca;})});}_0x1fb5f9=_[_0x0976('0x5b')]({},_0x1fb5f9,_0x4a383e['options']);return _0x28667d[_0x0976('0xca')](_0x1fb5f9);}})[_0x0976('0x27')](function(_0x383d4d){if(_0x383d4d){_0x1bc94c=_0x383d4d[_0x0976('0x49')];if(_0x4a383e[_0x0976('0x42')]['hasOwnProperty'](_0x0976('0x5a'))){_0x1fb5f9[_0x0976('0x41')]=[{'model':db['CmList'],'as':'List','required':![]},{'model':db[_0x0976('0xcb')],'as':_0x0976('0xcc'),'attributes':['id',_0x0976('0x33'),'color'],'where':_0x4a383e[_0x0976('0x42')][_0x0976('0xcd')]?{'id':_0x4a383e['query']['tag']}:undefined,'required':_0x4a383e[_0x0976('0x42')][_0x0976('0xcd')]?!![]:![]}];}if(!_0x4a383e[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x1fb5f9['limit']=qs[_0x0976('0x23')](_0x4a383e[_0x0976('0x42')][_0x0976('0x23')]);_0x1fb5f9[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x4a383e[_0x0976('0x42')][_0x0976('0x21')]);}return _0x28667d['getContacts'](_0x1fb5f9);}})[_0x0976('0x27')](function(_0x30997d){if(_0x30997d){return _0x30997d?{'count':_0x1bc94c,'rows':_0x30997d}:null;}})['then'](respondWithResult(_0x499c3e,null))['catch'](handleError(_0x499c3e,null));};exports[_0x0976('0xd0')]=function(_0x2f0787,_0x229e63){var _0x5dec55;var _0x4fa3a2={};var _0xc5275;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x2f0787[_0x0976('0x53')]['id']},'attributes':['id','name',_0x0976('0x2a')]})['then'](handleEntityNotFound(_0x229e63,null))['then'](function(_0x49262a){if(!utils[_0x0976('0x9f')](_0x2f0787[_0x0976('0x42')][_0x0976('0xaa')])){throw new db[(_0x0976('0x8d'))][(_0x0976('0x8e'))](_0x0976('0xd1'));}_0x5dec55=_0x49262a;var _0x1bd253={};_0x1bd253[_0x0976('0x54')]=_[_0x0976('0x56')](db[_[_0x0976('0xa0')](_0x2f0787[_0x0976('0x42')][_0x0976('0xaa')])+_0x0976('0xd2')][_0x0976('0x39')]);_0x1bd253[_0x0976('0x42')]=_[_0x0976('0x56')](_0x2f0787[_0x0976('0x42')]);_0x1bd253['filters']=_['intersection'](_0x1bd253[_0x0976('0x54')],_0x1bd253[_0x0976('0x42')]);_0x4fa3a2[_0x0976('0x45')]=_[_0x0976('0x58')](_0x1bd253['model'],qs[_0x0976('0x59')](_0x2f0787[_0x0976('0x42')][_0x0976('0x59')]));_0x4fa3a2[_0x0976('0x45')]=_0x4fa3a2[_0x0976('0x45')][_0x0976('0x49')]?_0x4fa3a2[_0x0976('0x45')]:_0x1bd253[_0x0976('0x54')];_0x4fa3a2[_0x0976('0xc7')]=qs['sort'](_0x2f0787[_0x0976('0x42')][_0x0976('0xc8')]);_0x4fa3a2[_0x0976('0x40')]=qs['filters'](_[_0x0976('0xc9')](_0x2f0787[_0x0976('0x42')],_0x1bd253[_0x0976('0xc6')]));if(_0x2f0787[_0x0976('0x42')]['filter']){_0x4fa3a2[_0x0976('0x40')]=_['merge'](_0x4fa3a2[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x4fa3a2['attributes'],function(_0x352e53){var _0x376a83={};_0x376a83[_0x352e53]={'$like':'%'+_0x2f0787[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x376a83;})});}_0x4fa3a2=_[_0x0976('0x5b')]({},_0x4fa3a2,_0x2f0787[_0x0976('0xd3')]);switch(_0x5dec55[_0x0976('0x2a')]){case _0x0976('0x2b'):return db[_['capitalize'](_0x2f0787[_0x0976('0x42')]['channel'])+'Queue'][_0x0976('0x8a')](_0x4fa3a2);case _0x0976('0x7a'):case _0x0976('0x2d'):return _0x5dec55['get'+_[_0x0976('0xa0')](_0x2f0787[_0x0976('0x42')][_0x0976('0xaa')])+_0x0976('0xac')](_0x4fa3a2);default:throw new db['Sequelize']['ValidationError'](_0x0976('0xd4'));}})[_0x0976('0x27')](function(_0x150a49){_0xc5275=_0x150a49['length'];if(!_0x2f0787['query'][_0x0976('0xce')](_0x0976('0xcf'))){_0x4fa3a2[_0x0976('0x23')]=qs['limit'](_0x2f0787[_0x0976('0x42')][_0x0976('0x23')]);_0x4fa3a2[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x2f0787['query'][_0x0976('0x21')]);}switch(_0x5dec55[_0x0976('0x2a')]){case _0x0976('0x2b'):return db[_[_0x0976('0xa0')](_0x2f0787[_0x0976('0x42')][_0x0976('0xaa')])+_0x0976('0xd2')][_0x0976('0x8a')](_0x4fa3a2);case'user':case _0x0976('0x2d'):return _0x5dec55[_0x0976('0x29')+_[_0x0976('0xa0')](_0x2f0787[_0x0976('0x42')][_0x0976('0xaa')])+'Queues'](_0x4fa3a2);}})['then'](function(_0x23c8cd){return{'count':_0xc5275,'rows':_0x23c8cd};})[_0x0976('0x27')](respondWithResult(_0x229e63,null))[_0x0976('0x51')](handleError(_0x229e63,null));};exports['getVoiceQueuesRt']=function(_0x44dacf,_0x26e847){var _0x25afae={};var _0x2197ea={};var _0x2d434c;var _0x3755cc;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x44dacf[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x26e847,null))[_0x0976('0x27')](function(_0x2087ee){if(_0x2087ee){_0x2d434c=_0x2087ee;_0x2197ea[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xa8')][_0x0976('0x39')]);_0x2197ea[_0x0976('0x42')]=_[_0x0976('0x56')](_0x44dacf['query']);_0x2197ea[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x2197ea[_0x0976('0x54')],_0x2197ea[_0x0976('0x42')]);_0x25afae[_0x0976('0x45')]=_[_0x0976('0x58')](_0x2197ea[_0x0976('0x54')],qs[_0x0976('0x59')](_0x44dacf[_0x0976('0x42')][_0x0976('0x59')]));_0x25afae[_0x0976('0x45')]=_0x25afae[_0x0976('0x45')][_0x0976('0x49')]?_0x25afae['attributes']:_0x2197ea['model'];_0x25afae[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x44dacf[_0x0976('0x42')]['sort']);_0x25afae['where']=qs[_0x0976('0xc6')](_['pick'](_0x44dacf[_0x0976('0x42')],_0x2197ea[_0x0976('0xc6')]));if(_0x44dacf[_0x0976('0x42')]['filter']){_0x25afae[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x25afae[_0x0976('0x40')],{'$or':_['map'](_0x25afae['attributes'],function(_0x5a9cd1){var _0x348a45={};_0x348a45[_0x5a9cd1]={'$like':'%'+_0x44dacf['query']['filter']+'%'};return _0x348a45;})});}_0x25afae=_[_0x0976('0x5b')]({},_0x25afae,_0x44dacf[_0x0976('0xd3')]);return _0x2d434c[_0x0976('0xd5')](_0x25afae);}})['then'](function(_0x17a217){if(_0x17a217){_0x3755cc=_0x17a217[_0x0976('0x49')];if(!_0x44dacf[_0x0976('0x42')]['hasOwnProperty']('nolimit')){_0x25afae[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x44dacf[_0x0976('0x42')]['limit']);_0x25afae[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x44dacf[_0x0976('0x42')][_0x0976('0x21')]);}return _0x2d434c['getVoiceQueuesRt'](_0x25afae);}})[_0x0976('0x27')](function(_0x331177){if(_0x331177){return _0x331177?{'count':_0x3755cc,'rows':_0x331177}:null;}})[_0x0976('0x27')](respondWithResult(_0x26e847,null))['catch'](handleError(_0x26e847,null));};exports['getGroups']=function(_0x5af382,_0xfcc676){var _0x3c8c1e={};var _0x1792e0={};var _0x1e3c6b;var _0x1fc73c;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x5af382['params']['id']}})['then'](handleEntityNotFound(_0xfcc676,null))[_0x0976('0x27')](function(_0x2983e7){if(_0x2983e7){_0x1e3c6b=_0x2983e7;_0x1792e0[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xd6')]['rawAttributes']);_0x1792e0[_0x0976('0x42')]=_['keys'](_0x5af382[_0x0976('0x42')]);_0x1792e0[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x1792e0[_0x0976('0x54')],_0x1792e0[_0x0976('0x42')]);_0x3c8c1e[_0x0976('0x45')]=_[_0x0976('0x58')](_0x1792e0[_0x0976('0x54')],qs['fields'](_0x5af382['query'][_0x0976('0x59')]));_0x3c8c1e['attributes']=_0x3c8c1e[_0x0976('0x45')][_0x0976('0x49')]?_0x3c8c1e[_0x0976('0x45')]:_0x1792e0[_0x0976('0x54')];_0x3c8c1e[_0x0976('0xc7')]=qs['sort'](_0x5af382[_0x0976('0x42')][_0x0976('0xc8')]);_0x3c8c1e[_0x0976('0x40')]=qs[_0x0976('0xc6')](_['pick'](_0x5af382[_0x0976('0x42')],_0x1792e0['filters']));if(_0x5af382['query']['filter']){_0x3c8c1e[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x3c8c1e['where'],{'$or':_[_0x0976('0x87')](_0x3c8c1e[_0x0976('0x45')],function(_0xb614d1){var _0x27037a={};_0x27037a[_0xb614d1]={'$like':'%'+_0x5af382[_0x0976('0x42')]['filter']+'%'};return _0x27037a;})});}_0x3c8c1e=_[_0x0976('0x5b')]({},_0x3c8c1e,_0x5af382[_0x0976('0xd3')]);return _0x1e3c6b['getGroups'](_0x3c8c1e);}})[_0x0976('0x27')](function(_0x1bbb6b){if(_0x1bbb6b){_0x1fc73c=_0x1bbb6b[_0x0976('0x49')];if(!_0x5af382[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x3c8c1e[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x5af382['query'][_0x0976('0x23')]);_0x3c8c1e[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x5af382['query']['offset']);}return _0x1e3c6b['getGroups'](_0x3c8c1e);}})[_0x0976('0x27')](function(_0x182d52){if(_0x182d52){return _0x182d52?{'count':_0x1fc73c,'rows':_0x182d52}:null;}})[_0x0976('0x27')](respondWithResult(_0xfcc676,null))[_0x0976('0x51')](handleError(_0xfcc676,null));};exports[_0x0976('0xd7')]=function(_0x574d37,_0x6cdd31){var _0x2f68b5={'raw':!![],'where':{}};var _0x2f6be9={};var _0x34d301={'count':0x0,'rows':[]};return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x574d37[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x6cdd31,null))['then'](function(_0x237ecb){if(_0x237ecb){_0x2f6be9[_0x0976('0x54')]=_[_0x0976('0x56')](db['VoiceRecording']['rawAttributes']);_0x2f6be9['query']=_[_0x0976('0x56')](_0x574d37[_0x0976('0x42')]);_0x2f6be9['filters']=_[_0x0976('0x58')](_0x2f6be9['model'],_0x2f6be9[_0x0976('0x42')]);_0x2f68b5[_0x0976('0x45')]=_[_0x0976('0x58')](_0x2f6be9[_0x0976('0x54')],qs[_0x0976('0x59')](_0x574d37[_0x0976('0x42')][_0x0976('0x59')]));_0x2f68b5[_0x0976('0x45')]=_0x2f68b5[_0x0976('0x45')][_0x0976('0x49')]?_0x2f68b5['attributes']:_0x2f6be9[_0x0976('0x54')];if(!_0x574d37[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x2f68b5['limit']=qs[_0x0976('0x23')](_0x574d37['query']['limit']);_0x2f68b5['offset']=qs[_0x0976('0x21')](_0x574d37[_0x0976('0x42')][_0x0976('0x21')]);}_0x2f68b5[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x574d37['query'][_0x0976('0xc8')]);_0x2f68b5[_0x0976('0x40')]=qs[_0x0976('0xc6')](_['pick'](_0x574d37['query'],_0x2f6be9['filters']));_0x2f68b5[_0x0976('0x40')][_0x0976('0xd8')]=_0x237ecb['id'];if(_0x574d37['query'][_0x0976('0x3d')]){_0x2f68b5[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x2f68b5['where'],{'$or':_[_0x0976('0x87')](_0x2f68b5['attributes'],function(_0x509011){var _0x21baed={};_0x21baed[_0x509011]={'$like':'%'+_0x574d37['query'][_0x0976('0x3d')]+'%'};return _0x21baed;})});}_0x2f68b5=_[_0x0976('0x5b')]({},_0x2f68b5,_0x574d37['options']);return db[_0x0976('0xd9')]['count']({'where':_0x2f68b5['where']})[_0x0976('0x27')](function(_0x403f94){_0x34d301[_0x0976('0x24')]=_0x403f94;if(_0x574d37['query']['includeAll']){_0x2f68b5[_0x0976('0x41')]=[{'all':!![]}];}return db[_0x0976('0xd9')][_0x0976('0x8a')](_0x2f68b5);})[_0x0976('0x27')](function(_0x4724d7){_0x34d301[_0x0976('0x46')]=_0x4724d7;return _0x34d301;});}})[_0x0976('0x27')](respondWithFilteredResult(_0x6cdd31,_0x2f68b5))[_0x0976('0x51')](handleError(_0x6cdd31,null));};exports[_0x0976('0xda')]=function(_0x265618,_0x338426){var _0x1e9a9c={'raw':!![],'where':{}};var _0x5bb81b={};var _0xf8cc59={'count':0x0,'rows':[]};return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x265618['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x338426,null))[_0x0976('0x27')](function(_0x5c25bf){if(_0x5c25bf){_0x5bb81b[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xdb')][_0x0976('0x39')]);_0x5bb81b[_0x0976('0x42')]=_[_0x0976('0x56')](_0x265618[_0x0976('0x42')]);_0x5bb81b[_0x0976('0xc6')]=_['intersection'](_0x5bb81b[_0x0976('0x54')],_0x5bb81b[_0x0976('0x42')]);_0x1e9a9c[_0x0976('0x45')]=_[_0x0976('0x58')](_0x5bb81b[_0x0976('0x54')],qs['fields'](_0x265618[_0x0976('0x42')]['fields']));_0x1e9a9c[_0x0976('0x45')]=_0x1e9a9c['attributes'][_0x0976('0x49')]?_0x1e9a9c[_0x0976('0x45')]:_0x5bb81b[_0x0976('0x54')];if(!_0x265618[_0x0976('0x42')]['hasOwnProperty'](_0x0976('0xcf'))){_0x1e9a9c[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x265618[_0x0976('0x42')][_0x0976('0x23')]);_0x1e9a9c[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x265618[_0x0976('0x42')]['offset']);}_0x1e9a9c['order']=qs['sort'](_0x265618[_0x0976('0x42')]['sort']);_0x1e9a9c[_0x0976('0x40')]=qs['filters'](_[_0x0976('0xc9')](_0x265618[_0x0976('0x42')],_0x5bb81b[_0x0976('0xc6')]));_0x1e9a9c['where'][_0x0976('0xd8')]=_0x5c25bf['id'];if(_0x265618[_0x0976('0x42')][_0x0976('0x3d')]){_0x1e9a9c[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x1e9a9c[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x1e9a9c['attributes'],function(_0x58900c){var _0x238bde={};_0x238bde[_0x58900c]={'$like':'%'+_0x265618[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x238bde;})});}_0x1e9a9c=_['merge']({},_0x1e9a9c,_0x265618[_0x0976('0xd3')]);return db[_0x0976('0xdb')]['count']({'where':_0x1e9a9c['where']})['then'](function(_0x2fc2b0){_0xf8cc59['count']=_0x2fc2b0;if(_0x265618[_0x0976('0x42')][_0x0976('0x5a')]){_0x1e9a9c[_0x0976('0x41')]=[{'all':!![]}];}return db['ScreenRecording']['findAll'](_0x1e9a9c);})[_0x0976('0x27')](function(_0x2c1821){_0xf8cc59[_0x0976('0x46')]=_0x2c1821;return _0xf8cc59;});}})[_0x0976('0x27')](respondWithFilteredResult(_0x338426,_0x1e9a9c))[_0x0976('0x51')](handleError(_0x338426,null));};exports['getChatInteractions']=function(_0x2feaad,_0x4e5744){var _0x45ad97={};var _0x438d16={};var _0xb8a825;var _0x63caee;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x2feaad[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x4e5744,null))['then'](function(_0x23beec){if(_0x23beec){_0xb8a825=_0x23beec;_0x438d16[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xdc')]['rawAttributes']);_0x438d16[_0x0976('0x42')]=_[_0x0976('0x56')](_0x2feaad['query']);_0x438d16['filters']=_[_0x0976('0x58')](_0x438d16[_0x0976('0x54')],_0x438d16[_0x0976('0x42')]);_0x45ad97[_0x0976('0x45')]=_[_0x0976('0x58')](_0x438d16[_0x0976('0x54')],qs['fields'](_0x2feaad[_0x0976('0x42')][_0x0976('0x59')]));_0x45ad97[_0x0976('0x45')]=_0x45ad97[_0x0976('0x45')][_0x0976('0x49')]?_0x45ad97[_0x0976('0x45')]:_0x438d16[_0x0976('0x54')];_0x45ad97[_0x0976('0xc7')]=qs['sort'](_0x2feaad[_0x0976('0x42')][_0x0976('0xc8')]);_0x45ad97[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x2feaad[_0x0976('0x42')],_0x438d16[_0x0976('0xc6')]));if(_0x2feaad[_0x0976('0x42')][_0x0976('0x3d')]){_0x45ad97['where']=_[_0x0976('0x5b')](_0x45ad97[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x45ad97[_0x0976('0x45')],function(_0x3e3fd6){var _0x5b2612={};_0x5b2612[_0x3e3fd6]={'$like':'%'+_0x2feaad['query']['filter']+'%'};return _0x5b2612;})});}_0x45ad97=_['merge']({},_0x45ad97,_0x2feaad[_0x0976('0xd3')]);return _0xb8a825[_0x0976('0xdd')](_0x45ad97);}})['then'](function(_0x2dea67){if(_0x2dea67){_0x63caee=_0x2dea67[_0x0976('0x49')];if(!_0x2feaad['query'][_0x0976('0xce')](_0x0976('0xcf'))){_0x45ad97['limit']=qs[_0x0976('0x23')](_0x2feaad[_0x0976('0x42')][_0x0976('0x23')]);_0x45ad97[_0x0976('0x21')]=qs['offset'](_0x2feaad[_0x0976('0x42')]['offset']);}return _0xb8a825[_0x0976('0xdd')](_0x45ad97);}})['then'](function(_0x58c4db){if(_0x58c4db){return _0x58c4db?{'count':_0x63caee,'rows':_0x58c4db}:null;}})[_0x0976('0x27')](respondWithResult(_0x4e5744,null))[_0x0976('0x51')](handleError(_0x4e5744,null));};exports['getOpenchannelInteractions']=function(_0x36d868,_0x4e5bc4){var _0x4c0109={};var _0x424a5b={};var _0x3a3329;var _0x19ec91;return db['User']['findOne']({'where':{'id':_0x36d868[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x4e5bc4,null))['then'](function(_0x3493d7){if(_0x3493d7){_0x3a3329=_0x3493d7;_0x424a5b[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xde')][_0x0976('0x39')]);_0x424a5b[_0x0976('0x42')]=_[_0x0976('0x56')](_0x36d868[_0x0976('0x42')]);_0x424a5b[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x424a5b['model'],_0x424a5b[_0x0976('0x42')]);_0x4c0109[_0x0976('0x45')]=_[_0x0976('0x58')](_0x424a5b['model'],qs[_0x0976('0x59')](_0x36d868['query']['fields']));_0x4c0109[_0x0976('0x45')]=_0x4c0109[_0x0976('0x45')][_0x0976('0x49')]?_0x4c0109[_0x0976('0x45')]:_0x424a5b[_0x0976('0x54')];_0x4c0109[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x36d868[_0x0976('0x42')][_0x0976('0xc8')]);_0x4c0109[_0x0976('0x40')]=qs['filters'](_[_0x0976('0xc9')](_0x36d868[_0x0976('0x42')],_0x424a5b[_0x0976('0xc6')]));if(_0x36d868[_0x0976('0x42')]['filter']){_0x4c0109['where']=_['merge'](_0x4c0109[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x4c0109['attributes'],function(_0x52fcad){var _0x4a5839={};_0x4a5839[_0x52fcad]={'$like':'%'+_0x36d868[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x4a5839;})});}_0x4c0109=_[_0x0976('0x5b')]({},_0x4c0109,_0x36d868[_0x0976('0xd3')]);return _0x3a3329[_0x0976('0xdf')](_0x4c0109);}})[_0x0976('0x27')](function(_0x4f39f8){if(_0x4f39f8){_0x19ec91=_0x4f39f8[_0x0976('0x49')];if(!_0x36d868[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x4c0109[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x36d868['query'][_0x0976('0x23')]);_0x4c0109[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x36d868[_0x0976('0x42')][_0x0976('0x21')]);}return _0x3a3329[_0x0976('0xdf')](_0x4c0109);}})[_0x0976('0x27')](function(_0x3f78bf){if(_0x3f78bf){return _0x3f78bf?{'count':_0x19ec91,'rows':_0x3f78bf}:null;}})[_0x0976('0x27')](respondWithResult(_0x4e5bc4,null))[_0x0976('0x51')](handleError(_0x4e5bc4,null));};exports['getMailInteractions']=function(_0x3f617e,_0x512bea){var _0x12c1f7={'raw':!![],'where':{}};var _0x1ce1fc={};var _0x39a72b={'count':0x0,'rows':[]};return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x3f617e[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0x512bea,null))[_0x0976('0x27')](function(_0x5b0c14){if(_0x5b0c14){_0x1ce1fc[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xe0')][_0x0976('0x39')]);_0x1ce1fc['query']=_['keys'](_0x3f617e[_0x0976('0x42')]);_0x1ce1fc[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x1ce1fc[_0x0976('0x54')],_0x1ce1fc[_0x0976('0x42')]);_0x12c1f7[_0x0976('0x45')]=_['intersection'](_0x1ce1fc[_0x0976('0x54')],qs[_0x0976('0x59')](_0x3f617e[_0x0976('0x42')][_0x0976('0x59')]));_0x12c1f7['attributes']=_0x12c1f7[_0x0976('0x45')][_0x0976('0x49')]?_0x12c1f7[_0x0976('0x45')]:_0x1ce1fc[_0x0976('0x54')];if(!_0x3f617e[_0x0976('0x42')]['hasOwnProperty'](_0x0976('0xcf'))){_0x12c1f7['limit']=qs[_0x0976('0x23')](_0x3f617e[_0x0976('0x42')][_0x0976('0x23')]);_0x12c1f7[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x3f617e[_0x0976('0x42')]['offset']);}_0x12c1f7[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x3f617e[_0x0976('0x42')][_0x0976('0xc8')]);_0x12c1f7[_0x0976('0x40')]=qs['filters'](_[_0x0976('0xc9')](_0x3f617e[_0x0976('0x42')],_0x1ce1fc[_0x0976('0xc6')]));_0x12c1f7[_0x0976('0x40')][_0x0976('0xd8')]=_0x5b0c14['id'];if(_0x3f617e['query'][_0x0976('0x3d')]){_0x12c1f7['where']=_[_0x0976('0x5b')](_0x12c1f7[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x12c1f7['attributes'],function(_0x425f3e){var _0x3f1524={};_0x3f1524[_0x425f3e]={'$like':'%'+_0x3f617e[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x3f1524;})});}_0x12c1f7=_[_0x0976('0x5b')]({},_0x12c1f7,_0x3f617e[_0x0976('0xd3')]);return db[_0x0976('0xe0')][_0x0976('0x24')]({'where':_0x12c1f7[_0x0976('0x40')]})['then'](function(_0x496d95){_0x39a72b[_0x0976('0x24')]=_0x496d95;if(_0x3f617e['query']['includeAll']){_0x12c1f7[_0x0976('0x41')]=[{'all':!![]}];}return db[_0x0976('0xe0')][_0x0976('0x8a')](_0x12c1f7);})['then'](function(_0x5a8da8){_0x39a72b[_0x0976('0x46')]=_0x5a8da8;return _0x39a72b;});}})['then'](respondWithFilteredResult(_0x512bea,_0x12c1f7))['catch'](handleError(_0x512bea,null));};exports[_0x0976('0xe1')]=function(_0x5c4e09,_0x28f9ec){var _0x183cb7={};var _0x3796a7={};var _0x263922;var _0x298ece;return db['User'][_0x0976('0x95')]({'where':{'id':_0x5c4e09['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x28f9ec,null))[_0x0976('0x27')](function(_0x1dbbaf){if(_0x1dbbaf){_0x263922=_0x1dbbaf;_0x3796a7[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xe2')][_0x0976('0x39')]);_0x3796a7[_0x0976('0x42')]=_[_0x0976('0x56')](_0x5c4e09[_0x0976('0x42')]);_0x3796a7[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x3796a7[_0x0976('0x54')],_0x3796a7[_0x0976('0x42')]);_0x183cb7[_0x0976('0x45')]=_[_0x0976('0x58')](_0x3796a7[_0x0976('0x54')],qs[_0x0976('0x59')](_0x5c4e09[_0x0976('0x42')]['fields']));_0x183cb7[_0x0976('0x45')]=_0x183cb7['attributes']['length']?_0x183cb7[_0x0976('0x45')]:_0x3796a7[_0x0976('0x54')];_0x183cb7[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x5c4e09[_0x0976('0x42')]['sort']);_0x183cb7['where']=qs['filters'](_[_0x0976('0xc9')](_0x5c4e09[_0x0976('0x42')],_0x3796a7[_0x0976('0xc6')]));if(_0x5c4e09[_0x0976('0x42')][_0x0976('0x3d')]){_0x183cb7['where']=_['merge'](_0x183cb7[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x183cb7[_0x0976('0x45')],function(_0xd0466f){var _0x166239={};_0x166239[_0xd0466f]={'$like':'%'+_0x5c4e09['query'][_0x0976('0x3d')]+'%'};return _0x166239;})});}_0x183cb7=_['merge']({},_0x183cb7,_0x5c4e09[_0x0976('0xd3')]);return _0x263922['getSmsInteractions'](_0x183cb7);}})[_0x0976('0x27')](function(_0x594d86){if(_0x594d86){_0x298ece=_0x594d86['length'];if(!_0x5c4e09[_0x0976('0x42')][_0x0976('0xce')]('nolimit')){_0x183cb7['limit']=qs[_0x0976('0x23')](_0x5c4e09[_0x0976('0x42')][_0x0976('0x23')]);_0x183cb7[_0x0976('0x21')]=qs['offset'](_0x5c4e09[_0x0976('0x42')][_0x0976('0x21')]);}return _0x263922[_0x0976('0xe1')](_0x183cb7);}})[_0x0976('0x27')](function(_0x2063ab){if(_0x2063ab){return _0x2063ab?{'count':_0x298ece,'rows':_0x2063ab}:null;}})[_0x0976('0x27')](respondWithResult(_0x28f9ec,null))[_0x0976('0x51')](handleError(_0x28f9ec,null));};exports[_0x0976('0xe3')]=function(_0x34796b,_0x3b346e){var _0x84fcdf={};var _0x404ef7={};var _0x149e3b;var _0x5310c6;return db['User'][_0x0976('0x95')]({'where':{'id':_0x34796b[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0x3b346e,null))[_0x0976('0x27')](function(_0x317b27){if(_0x317b27){_0x149e3b=_0x317b27;_0x404ef7[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0xe4')][_0x0976('0x39')]);_0x404ef7[_0x0976('0x42')]=_[_0x0976('0x56')](_0x34796b[_0x0976('0x42')]);_0x404ef7[_0x0976('0xc6')]=_['intersection'](_0x404ef7['model'],_0x404ef7[_0x0976('0x42')]);_0x84fcdf[_0x0976('0x45')]=_[_0x0976('0x58')](_0x404ef7['model'],qs[_0x0976('0x59')](_0x34796b[_0x0976('0x42')][_0x0976('0x59')]));_0x84fcdf[_0x0976('0x45')]=_0x84fcdf[_0x0976('0x45')]['length']?_0x84fcdf[_0x0976('0x45')]:_0x404ef7[_0x0976('0x54')];_0x84fcdf['order']=qs['sort'](_0x34796b[_0x0976('0x42')][_0x0976('0xc8')]);_0x84fcdf[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x34796b[_0x0976('0x42')],_0x404ef7[_0x0976('0xc6')]));if(_0x34796b[_0x0976('0x42')][_0x0976('0x3d')]){_0x84fcdf[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x84fcdf[_0x0976('0x40')],{'$or':_['map'](_0x84fcdf[_0x0976('0x45')],function(_0x464e6b){var _0x7b9353={};_0x7b9353[_0x464e6b]={'$like':'%'+_0x34796b[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x7b9353;})});}_0x84fcdf=_['merge']({},_0x84fcdf,_0x34796b[_0x0976('0xd3')]);return _0x149e3b[_0x0976('0xe3')](_0x84fcdf);}})[_0x0976('0x27')](function(_0x53ffe8){if(_0x53ffe8){_0x5310c6=_0x53ffe8[_0x0976('0x49')];if(!_0x34796b['query'][_0x0976('0xce')](_0x0976('0xcf'))){_0x84fcdf[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x34796b[_0x0976('0x42')][_0x0976('0x23')]);_0x84fcdf[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x34796b['query'][_0x0976('0x21')]);}return _0x149e3b['getFaxInteractions'](_0x84fcdf);}})[_0x0976('0x27')](function(_0x1cd2fe){if(_0x1cd2fe){return _0x1cd2fe?{'count':_0x5310c6,'rows':_0x1cd2fe}:null;}})[_0x0976('0x27')](respondWithResult(_0x3b346e,null))[_0x0976('0x51')](handleError(_0x3b346e,null));};exports[_0x0976('0xe5')]=function(_0xce694e,_0x11ce61){var _0x3de720={};var _0x47b04b={};var _0x13fe73;var _0x945b83;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0xce694e[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0x11ce61,null))[_0x0976('0x27')](function(_0x39beb3){if(_0x39beb3){_0x13fe73=_0x39beb3;_0x47b04b['model']=_[_0x0976('0x56')](db['WhatsappInteraction'][_0x0976('0x39')]);_0x47b04b[_0x0976('0x42')]=_[_0x0976('0x56')](_0xce694e['query']);_0x47b04b[_0x0976('0xc6')]=_['intersection'](_0x47b04b[_0x0976('0x54')],_0x47b04b[_0x0976('0x42')]);_0x3de720[_0x0976('0x45')]=_[_0x0976('0x58')](_0x47b04b[_0x0976('0x54')],qs['fields'](_0xce694e[_0x0976('0x42')][_0x0976('0x59')]));_0x3de720[_0x0976('0x45')]=_0x3de720[_0x0976('0x45')][_0x0976('0x49')]?_0x3de720[_0x0976('0x45')]:_0x47b04b[_0x0976('0x54')];_0x3de720['order']=qs[_0x0976('0xc8')](_0xce694e['query'][_0x0976('0xc8')]);_0x3de720[_0x0976('0x40')]=qs['filters'](_[_0x0976('0xc9')](_0xce694e['query'],_0x47b04b[_0x0976('0xc6')]));if(_0xce694e['query']['filter']){_0x3de720['where']=_['merge'](_0x3de720[_0x0976('0x40')],{'$or':_['map'](_0x3de720['attributes'],function(_0x157bb3){var _0x21ecea={};_0x21ecea[_0x157bb3]={'$like':'%'+_0xce694e[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x21ecea;})});}_0x3de720=_[_0x0976('0x5b')]({},_0x3de720,_0xce694e[_0x0976('0xd3')]);return _0x13fe73[_0x0976('0xe5')](_0x3de720);}})[_0x0976('0x27')](function(_0x2cbbb9){if(_0x2cbbb9){_0x945b83=_0x2cbbb9['length'];if(!_0xce694e[_0x0976('0x42')][_0x0976('0xce')]('nolimit')){_0x3de720[_0x0976('0x23')]=qs[_0x0976('0x23')](_0xce694e[_0x0976('0x42')][_0x0976('0x23')]);_0x3de720[_0x0976('0x21')]=qs['offset'](_0xce694e[_0x0976('0x42')]['offset']);}return _0x13fe73[_0x0976('0xe5')](_0x3de720);}})[_0x0976('0x27')](function(_0x28a7b3){if(_0x28a7b3){return _0x28a7b3?{'count':_0x945b83,'rows':_0x28a7b3}:null;}})[_0x0976('0x27')](respondWithResult(_0x11ce61,null))[_0x0976('0x51')](handleError(_0x11ce61,null));};exports[_0x0976('0xe6')]=function(_0x394e6a,_0x565613,_0x38ab95){var _0xfe5460;var _0x31b98d;var _0x1e1ab4;var _0x43f34d=!_[_0x0976('0x67')](_0x394e6a[_0x0976('0x53')]['id'])?_0x394e6a[_0x0976('0x53')]['id']:!_['isNil'](_0x394e6a[_0x0976('0x7a')]['id'])?_0x394e6a[_0x0976('0x7a')]['id']:null;return db['User'][_0x0976('0x32')]({'where':{'id':_0x43f34d,'role':{'$or':[_0x0976('0x2b'),_0x0976('0x7a'),_0x0976('0x2d')]}},'attributes':['id',_0x0976('0x33'),_0x0976('0xe7'),'mobile',_0x0976('0x2a'),_0x0976('0x63'),_0x0976('0x9c')]})[_0x0976('0x27')](function(_0x40eae6){if(_0x40eae6){if(_0x40eae6['role']==='agent'){_0xfe5460=_0x40eae6;if(_0x394e6a[_0x0976('0x5e')]['interface']){_0x1e1ab4=util[_0x0976('0xe8')](_0x0976('0xe9'),_0xfe5460[_0x394e6a[_0x0976('0x5e')][_0x0976('0x9e')]]);}else if(_0x394e6a[_0x0976('0x5e')][_0x0976('0xea')]){_0x1e1ab4=util[_0x0976('0xe8')]('SIP/%s',_0x394e6a[_0x0976('0x5e')][_0x0976('0xea')]);}else{_0x1e1ab4=util[_0x0976('0xe8')](_0x0976('0xa6'),_0xfe5460[_0x0976('0x33')]);}socket['to'](util[_0x0976('0xe8')](_0x0976('0xeb'),_0xfe5460['name']))[_0x0976('0xa3')]('user:forcelogout',{'user':{'id':_0xfe5460['id'],'name':_0xfe5460[_0x0976('0x33')]},'ip':_0x394e6a[_0x0976('0xec')][_0x0976('0xed')]||_0x394e6a[_0x0976('0xee')][_0x0976('0xef')]||_0x394e6a['socket'][_0x0976('0xef')]||_0x394e6a[_0x0976('0xee')][_0x0976('0xf0')][_0x0976('0xef')]});return db[_0x0976('0xa8')][_0x0976('0x28')]({'where':{'membername':_0xfe5460[_0x0976('0x33')]},'individualHooks':!![]});}}else{throw new db[(_0x0976('0x8d'))]['ValidationError'](_0x0976('0xf1'));}})[_0x0976('0x27')](function(){if(_0xfe5460){return _0xfe5460[_0x0976('0xf2')]({'raw':!![]});}})['then'](function(_0x264e5f){if(_0xfe5460){if(_0x264e5f){_0x31b98d=_0x264e5f;if(_0x31b98d['length']){var _0x4210f9=_0x31b98d['map'](function(_0x3407f0){var _0x11b869={'membername':_0xfe5460['name'],'UserId':_0xfe5460['id'],'queue_name':_0x3407f0[_0x0976('0x33')],'VoiceQueueId':_0x3407f0['id'],'interface':_0x1e1ab4,'paused':_0xfe5460[_0x0976('0x9c')]||![],'penalty':_0x3407f0[_0x0976('0xf3')]||0x0};return db['UserVoiceQueueRt'][_0x0976('0xf4')](_0x11b869);});return Promise['all'](_0x4210f9);}}}})[_0x0976('0x27')](function(){if(_0xfe5460){return db[_0x0976('0xf5')]['findAll']({'where':{'membername':_0xfe5460[_0x0976('0x33')],'exitAt':null}});}})['then'](function(_0x227421){if(_0xfe5460){var _0x3447a9=[];_0x227421[_0x0976('0xf6')](function(_0x174617){_0x3447a9[_0x0976('0x4b')](_0x174617[_0x0976('0xf7')]({'exitAt':moment()[_0x0976('0xe8')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0x0976('0x50')](_0x3447a9);}})['then'](function(){if(_0xfe5460){var _0x18de64=[];var _0x5682be=[];var _0x1f8661=utils[_0x0976('0xf8')]();var _0x32f6ec={'membername':_0xfe5460[_0x0976('0x33')],'interface':_0x1e1ab4,'enterAt':moment()[_0x0976('0xe8')](_0x0976('0xf9')),'role':_0xfe5460['role'],'internal':_0xfe5460['internal']};_0x1f8661['forEach'](function(_0x4237d0){_0x18de64[_0x0976('0x4b')](_[_0x0976('0x5b')]({'channel':_0x4237d0,'type':'LOGIN','data1':_0x394e6a[_0x0976('0x5e')]['device'],'data2':_0x1e1ab4},_0x32f6ec));if(_0xfe5460[_0x0976('0x9c')]){_0x5682be['push'](_[_0x0976('0x5b')]({'channel':_0x4237d0,'type':_0x0976('0xfa'),'data1':'LOGININPAUSE'},_0x32f6ec));}});return db['MemberReport']['bulkCreate'](_0x18de64[_0x0976('0xc4')](_0x5682be),{'individualHooks':!![]});}})[_0x0976('0x27')](function(){if(_0xfe5460){return _0xfe5460['update']({'online':!![],'lastLoginAt':moment()[_0x0976('0xe8')](_0x0976('0xf9')),'voicePause':_0xfe5460['loginInPause']||![],'mailPause':_0xfe5460[_0x0976('0x9c')]||![],'chatPause':_0xfe5460[_0x0976('0x9c')]||![],'faxPause':_0xfe5460[_0x0976('0x9c')]||![],'smsPause':_0xfe5460[_0x0976('0x9c')]||![],'openchannelPause':_0xfe5460['loginInPause']||![],'whatsappPause':_0xfe5460['loginInPause']||![],'pauseType':_0xfe5460[_0x0976('0x9c')]?_0x0976('0xfb'):null,'interface':_0x1e1ab4,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x0976('0x27')](function(_0x261394){if(_0x394e6a['isMiddleware']){return _0x38ab95();}else{return Promise[_0x0976('0xfc')](_0x261394)['then'](respondWithResult(_0x565613,null));}})[_0x0976('0x51')](handleError(_0x565613,null));};exports[_0x0976('0xfd')]=function(_0x23d690,_0x29a2f0){var _0x449efb;return db['User']['find']({'where':{'id':_0x23d690[_0x0976('0x53')]['id'],'role':'agent'},'attributes':['id',_0x0976('0x33'),_0x0976('0x2a')]})[_0x0976('0x27')](handleEntityNotFound(_0x29a2f0,null))[_0x0976('0x27')](function(_0x5f3f10){if(_0x5f3f10){_0x449efb=_0x5f3f10;return db[_0x0976('0xa8')]['destroy']({'where':{'membername':_0x449efb[_0x0976('0x33')]},'individualHooks':!![]});}})[_0x0976('0x27')](function(){return db['MemberReport'][_0x0976('0x8a')]({'where':{'membername':_0x449efb[_0x0976('0x33')],'exitAt':null}});})['then'](function(_0xab84e1){var _0x38dce0=[];_0xab84e1[_0x0976('0xf6')](function(_0xc99964){_0x38dce0[_0x0976('0x4b')](_0xc99964[_0x0976('0xf7')]({'exitAt':moment()[_0x0976('0xe8')](_0x0976('0xf9'))}));});return Promise['all'](_0x38dce0);})['then'](function(){return _0x449efb[_0x0976('0xf7')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x0976('0x27')](respondWithResult(_0x29a2f0,null))['catch'](handleError(_0x29a2f0,null));};exports[_0x0976('0xfe')]=function(_0x121a3e,_0x4f2508){var _0xd1c275;return db[_0x0976('0xa8')][_0x0976('0xf7')]({'paused':0x1},{'where':{'UserId':_0x121a3e['params']['id']},'individualHooks':!![]})[_0x0976('0x27')](function(){return db[_0x0976('0x38')]['find']({'where':{'id':_0x121a3e[_0x0976('0x53')]['id'],'role':_0x0976('0x2d')},'attributes':['id',_0x0976('0x33'),_0x0976('0x2a'),'internal',_0x0976('0x9e'),'online']});})[_0x0976('0x27')](handleEntityNotFound(_0x4f2508,null))[_0x0976('0x27')](function(_0x3bca1d){if(_0x3bca1d){_0xd1c275=_0x3bca1d;return respondWithRpcPromise(_0x0976('0xff'),_0x0976('0xfe'),{'id':_0xd1c275['id'],'name':_0xd1c275[_0x0976('0x33')],'pause':!![]});}})[_0x0976('0x27')](function(){if(_0xd1c275){return db[_0x0976('0xf5')][_0x0976('0x8a')]({'where':{'membername':_0xd1c275['name'],'type':'PAUSE','exitAt':null}});}})[_0x0976('0x27')](function(_0x13c5e){if(_0x13c5e[_0x0976('0x49')]){var _0x47e190=moment()[_0x0976('0xe8')](_0x0976('0xf9'));for(var _0x287491=0x0,_0x3873b0=_0x13c5e['length'];_0x287491<_0x3873b0;_0x287491++){_0x13c5e[_0x287491][_0x0976('0x100')]({'exitAt':_0x47e190});}}})[_0x0976('0x27')](function(){var _0x309dc0=[];var _0x568e3b=utils[_0x0976('0xf8')]();_0x568e3b[_0x0976('0xf6')](function(_0x2f8470){_0x309dc0[_0x0976('0x4b')]({'channel':_0x2f8470,'membername':_0xd1c275[_0x0976('0x33')],'interface':_[_0x0976('0x67')](_0xd1c275['interface'])?util[_0x0976('0xe8')](_0x0976('0xa6'),_0xd1c275[_0x0976('0x33')]):_0xd1c275['interface'],'type':'PAUSE','enterAt':moment()[_0x0976('0xe8')](_0x0976('0xf9')),'data1':_0x121a3e[_0x0976('0x5e')]['type']||_0x0976('0x101'),'role':_0xd1c275[_0x0976('0x2a')],'internal':_0xd1c275[_0x0976('0x63')]});});return db['MemberReport'][_0x0976('0x84')](_0x309dc0,{'individualHooks':!![]});})[_0x0976('0x27')](function(){return _0xd1c275['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x121a3e['body'][_0x0976('0x3b')]||_0x0976('0x101'),'lastPauseAt':moment()[_0x0976('0xe8')](_0x0976('0xf9'))});})[_0x0976('0x27')](respondWithResult(_0x4f2508,null))[_0x0976('0x51')](handleError(_0x4f2508,null));};exports['unpause']=function(_0x343e89,_0x4ee60b){if(_0x343e89[_0x0976('0x5e')][_0x0976('0xaa')]&&!utils['isValidChannel'](_0x343e89[_0x0976('0x5e')][_0x0976('0xaa')])){throw new APIBadRequestError(util[_0x0976('0xe8')](_0x0976('0x102'),_0x343e89[_0x0976('0x5e')]['channel']));}return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x343e89['params']['id']},'attributes':['id','name',_0x0976('0x2a'),_0x0976('0x63'),'interface',_0x0976('0x9b'),'voicePause',_0x0976('0x103'),_0x0976('0x104'),_0x0976('0x105'),_0x0976('0x106'),_0x0976('0x107'),_0x0976('0x108'),_0x0976('0x109'),_0x0976('0x10a')]})[_0x0976('0x27')](function(_0x22b4c1){if(!_0x22b4c1){throw new APINotFoundError(util['format'](_0x0976('0x10b'),_0x343e89['params']['id']));}return _0x22b4c1['unpause'](_0x343e89[_0x0976('0x5e')]['channel']);})[_0x0976('0x27')](respondWithResult(_0x4ee60b,null))[_0x0976('0x51')](APIHandleError(_0x4ee60b));};exports[_0x0976('0x10c')]=function(_0x117601,_0xaca2f9){var _0x19fef1={};var _0x149007={};var _0x464a56;var _0x47eeb7;return db[_0x0976('0x38')]['findOne']({'where':{'id':_0x117601[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0xaca2f9,null))[_0x0976('0x27')](function(_0x524d8b){if(_0x524d8b){_0x464a56=_0x524d8b;_0x149007[_0x0976('0x54')]=_['keys'](db[_0x0976('0x10d')]['rawAttributes']);_0x149007[_0x0976('0x42')]=_[_0x0976('0x56')](_0x117601[_0x0976('0x42')]);_0x149007[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x149007['model'],_0x149007['query']);_0x19fef1[_0x0976('0x45')]=_['intersection'](_0x149007[_0x0976('0x54')],qs['fields'](_0x117601[_0x0976('0x42')][_0x0976('0x59')]));_0x19fef1['attributes']=_0x19fef1[_0x0976('0x45')]['length']?_0x19fef1[_0x0976('0x45')]:_0x149007['model'];_0x19fef1[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x117601[_0x0976('0x42')][_0x0976('0xc8')]);_0x19fef1[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x117601['query'],_0x149007['filters']));if(_0x117601['query'][_0x0976('0x3d')]){_0x19fef1[_0x0976('0x40')]=_['merge'](_0x19fef1[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x19fef1[_0x0976('0x45')],function(_0x318481){var _0x1b58d1={};_0x1b58d1[_0x318481]={'$like':'%'+_0x117601[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x1b58d1;})});}_0x19fef1=_['merge']({},_0x19fef1,_0x117601['options']);return _0x464a56[_0x0976('0x10c')](_0x19fef1);}})['then'](function(_0x184c58){if(_0x184c58){_0x47eeb7=_0x184c58[_0x0976('0x49')];if(!_0x117601[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x19fef1[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x117601[_0x0976('0x42')][_0x0976('0x23')]);_0x19fef1[_0x0976('0x21')]=qs['offset'](_0x117601[_0x0976('0x42')][_0x0976('0x21')]);}return _0x464a56[_0x0976('0x10c')](_0x19fef1);}})[_0x0976('0x27')](function(_0x17ec21){if(_0x17ec21){return _0x17ec21?{'count':_0x47eeb7,'rows':_0x17ec21}:null;}})['then'](respondWithResult(_0xaca2f9,null))[_0x0976('0x51')](handleError(_0xaca2f9,null));};exports[_0x0976('0x10e')]=function(_0x5b37c4,_0x4585b1){var _0x2d12f1=_0x5b37c4['params']['id'];var _0x31dda2=_0x5b37c4[_0x0976('0x5e')]?_0x5b37c4[_0x0976('0x5e')][_0x0976('0x61')]:null;var _0xa4cfe6=[];return Promise[_0x0976('0xfc')]()[_0x0976('0x27')](function(){if(!_0x31dda2)throw new APIBadRequestError(_0x0976('0x10f'));})[_0x0976('0x27')](function(){return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x2d12f1}});})[_0x0976('0x27')](function(_0x59323c){if(!_0x59323c)throw new APINotFoundError(util[_0x0976('0xe8')](_0x0976('0x10b'),_0x5b37c4[_0x0976('0x53')]['id']));return db[_0x0976('0x69')][_0x0976('0x110')](function(_0x495e27){return _0x59323c[_0x0976('0x10e')](_0x31dda2,{'transaction':_0x495e27})[_0x0976('0x27')](function(){return db[_0x0976('0x10d')]['findAll']({'where':{'id':{'$in':_0x31dda2}}});})[_0x0976('0x27')](function(_0x409ebe){var _0x37a980=_[_0x0976('0x87')](_0x409ebe,function(_0x3432fa){return _0x3432fa[_0x0976('0x111')]();});return Promise[_0x0976('0x50')](_0x37a980);})['then'](function(_0x5236ef){_0xa4cfe6=_['flattenDeep'](_0x5236ef);var _0x43a071=_[_0x0976('0x87')](_0xa4cfe6,function(_0x6e9183){return _0x6e9183[_0x0976('0x112')](_0x59323c['id'],{'transaction':_0x495e27});});return Promise[_0x0976('0x50')](_0x43a071);})[_0x0976('0x27')](function(){if(!_0x59323c['online'])return;var _0x26f9f8=_[_0x0976('0x3d')](_0xa4cfe6,function(_0x26b957){return _0x26b957[_0x0976('0x113')](_0x0976('0xaa'))===_0x0976('0x114');});var _0x165f4a=_[_0x0976('0x87')](_0x26f9f8,function(_0x55ce1a){return db['UserVoiceQueueRt'][_0x0976('0xf4')]({'membername':_0x59323c['name'],'UserId':_0x59323c['id'],'queue_name':_0x55ce1a[_0x0976('0x33')],'VoiceQueueId':_0x55ce1a['id'],'interface':_['isNil'](_0x59323c[_0x0976('0x9e')])?util[_0x0976('0xe8')](_0x0976('0xa6'),_0x59323c[_0x0976('0x33')]):_0x59323c['interface'],'paused':_0x59323c[_0x0976('0x9d')]||![],'penalty':_0x59323c['penalty']},{'transaction':_0x495e27});});return Promise[_0x0976('0x50')](_0x165f4a);})[_0x0976('0x27')](function(){return db['TeamVoicePrefix'][_0x0976('0x8a')]({'where':{'teamId':{'$in':_0x31dda2}}});})[_0x0976('0x27')](function(_0x9b2ef0){var _0x3c792e=_['map'](_0x9b2ef0,function(_0x5d4f6e){return db['UserVoicePrefix']['create']({'UserId':_0x59323c['id'],'VoicePrefixId':_0x5d4f6e['VoicePrefixId']},{'transaction':_0x495e27});});return Promise['all'](_0x3c792e);});});})[_0x0976('0x27')](function(){for(var _0x170f19=0x0;_0x170f19<_0xa4cfe6[_0x0976('0x49')];_0x170f19++){var _0x3a274f=_0xa4cfe6[_0x170f19]['getDataValue']('channel');var _0x350028=_0x3a274f+'QueueId';socket[_0x0976('0xa3')]('user'+_0x3a274f+_0x0976('0x115'),{'UserId':_0x2d12f1,['queueField']:_0xa4cfe6[_0x170f19]['id']});}})[_0x0976('0x27')](respondWithStatusCode(_0x4585b1,null))['catch'](APIHandleError(_0x4585b1));};exports['removeTeams']=function(_0x5165d9,_0x34f3e4){var _0x1022ed=_0x5165d9[_0x0976('0x53')]['id'];var _0x33a974=null;if(_0x5165d9[_0x0976('0x42')][_0x0976('0x61')]){_0x33a974=_['isArray'](_0x5165d9[_0x0976('0x42')][_0x0976('0x61')])?_0x5165d9[_0x0976('0x42')][_0x0976('0x61')]:[_0x5165d9['query']['ids']];}var _0xa9c747=[];return Promise[_0x0976('0xfc')]()[_0x0976('0x27')](function(){if(!_0x33a974)throw new APIBadRequestError('Query\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0x0976('0x27')](function(){return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x1022ed}});})['then'](function(_0x3463a1){if(!_0x3463a1)throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x5165d9['params']['id']));return db[_0x0976('0x69')]['transaction'](function(_0x4f1859){return _0x3463a1['removeTeams'](_0x33a974,{'transaction':_0x4f1859})[_0x0976('0x27')](function(){return db[_0x0976('0x10d')][_0x0976('0x8a')]({'where':{'id':{'$in':_0x33a974}}});})[_0x0976('0x27')](function(_0x18c5b5){var _0x3ff70f=_['map'](_0x18c5b5,function(_0x553132){return _0x553132['getAssociatedQueues']();});return Promise['all'](_0x3ff70f);})[_0x0976('0x27')](function(_0x368596){_0xa9c747=_[_0x0976('0x116')](_0x368596);var _0x1b6b39=_[_0x0976('0x87')](_0xa9c747,function(_0x5cd07e){return _0x5cd07e[_0x0976('0x117')](_0x3463a1['id'],{'transaction':_0x4f1859});});return Promise['all'](_0x1b6b39);})[_0x0976('0x27')](function(){if(!_0x3463a1[_0x0976('0x9b')])return;var _0x3b7762=_[_0x0976('0x3d')](_0xa9c747,function(_0x2a6b99){return _0x2a6b99[_0x0976('0x113')](_0x0976('0xaa'))===_0x0976('0x114');});var _0x360d97=_[_0x0976('0x87')](_0x3b7762,function(_0x263442){return db['UserVoiceQueueRt'][_0x0976('0x28')]({'where':{'VoiceQueueId':_0x263442['id'],'UserId':_0x3463a1['id']},'transaction':_0x4f1859});});return Promise[_0x0976('0x50')](_0x360d97);})['then'](function(){return db[_0x0976('0x118')][_0x0976('0x8a')]({'where':{'teamId':{'$in':_0x33a974}}});})['then'](function(_0x362f08){var _0x1d9b75=_['map'](_0x362f08,function(_0x2fa4e7){return db[_0x0976('0x119')][_0x0976('0x28')]({'where':{'UserId':_0x3463a1['id'],'VoicePrefixId':_0x2fa4e7[_0x0976('0x11a')]}},{'transaction':_0x4f1859});});return Promise['all'](_0x1d9b75);});});})[_0x0976('0x27')](function(){for(var _0x3cfd4f=0x0;_0x3cfd4f<_0xa9c747[_0x0976('0x49')];_0x3cfd4f++){var _0x1ec01b=_0xa9c747[_0x3cfd4f][_0x0976('0x113')]('channel');var _0x30633c=_0x1ec01b+_0x0976('0xae');socket[_0x0976('0xa3')]('user'+_0x1ec01b+_0x0976('0xaf'),{'UserId':_0x1022ed,['queueField']:_0xa9c747[_0x3cfd4f]['id']});}})[_0x0976('0x27')](respondWithStatusCode(_0x34f3e4,null))[_0x0976('0x51')](APIHandleError(_0x34f3e4));};exports['getLists']=function(_0x1361e1,_0x1689a5){var _0x222e9c={};var _0x31c334={};var _0x40e569;var _0x444c9a;return db[_0x0976('0x38')]['findOne']({'where':{'id':_0x1361e1[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x1689a5,null))[_0x0976('0x27')](function(_0x9eb0b1){if(_0x9eb0b1){_0x40e569=_0x9eb0b1;_0x31c334[_0x0976('0x54')]=_['keys'](db['CmList'][_0x0976('0x39')]);_0x31c334[_0x0976('0x42')]=_[_0x0976('0x56')](_0x1361e1['query']);_0x31c334['filters']=_[_0x0976('0x58')](_0x31c334[_0x0976('0x54')],_0x31c334[_0x0976('0x42')]);_0x222e9c[_0x0976('0x45')]=_[_0x0976('0x58')](_0x31c334[_0x0976('0x54')],qs[_0x0976('0x59')](_0x1361e1[_0x0976('0x42')][_0x0976('0x59')]));_0x222e9c[_0x0976('0x45')]=_0x222e9c['attributes']['length']?_0x222e9c[_0x0976('0x45')]:_0x31c334[_0x0976('0x54')];_0x222e9c[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x1361e1[_0x0976('0x42')][_0x0976('0xc8')]);_0x222e9c[_0x0976('0x40')]=qs['filters'](_[_0x0976('0xc9')](_0x1361e1[_0x0976('0x42')],_0x31c334[_0x0976('0xc6')]));if(_0x1361e1['query'][_0x0976('0x3d')]){_0x222e9c[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x222e9c[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x222e9c[_0x0976('0x45')],function(_0x46b12f){var _0x18713c={};_0x18713c[_0x46b12f]={'$like':'%'+_0x1361e1[_0x0976('0x42')]['filter']+'%'};return _0x18713c;})});}_0x222e9c=_[_0x0976('0x5b')]({},_0x222e9c,_0x1361e1['options']);return _0x40e569[_0x0976('0x11b')](_0x222e9c);}})[_0x0976('0x27')](function(_0x1d1a2b){if(_0x1d1a2b){_0x444c9a=_0x1d1a2b['length'];if(!_0x1361e1[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x222e9c[_0x0976('0x23')]=qs['limit'](_0x1361e1['query'][_0x0976('0x23')]);_0x222e9c[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x1361e1['query'][_0x0976('0x21')]);}return _0x40e569[_0x0976('0x11b')](_0x222e9c);}})[_0x0976('0x27')](function(_0x1e2e40){if(_0x1e2e40){return _0x1e2e40?{'count':_0x444c9a,'rows':_0x1e2e40}:null;}})[_0x0976('0x27')](respondWithResult(_0x1689a5,null))['catch'](handleError(_0x1689a5,null));};exports[_0x0976('0x11c')]=function(_0x3d951e,_0x59d520){var _0x594322={};var _0x1deec4={};var _0x516f21;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x3d951e['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x59d520,null))[_0x0976('0x27')](function(_0x1a75f1){if(_0x1a75f1){_0x516f21=_0x1a75f1;_0x1deec4[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0x38')][_0x0976('0x39')]);_0x1deec4['query']=_[_0x0976('0x56')](_0x3d951e['query']);_0x1deec4[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x1deec4[_0x0976('0x54')],_0x1deec4[_0x0976('0x42')]);_0x594322[_0x0976('0x45')]=_[_0x0976('0x58')](_0x1deec4[_0x0976('0x54')],qs[_0x0976('0x59')](_0x3d951e['query']['fields']));_0x594322[_0x0976('0x45')]=_0x594322[_0x0976('0x45')][_0x0976('0x49')]?_0x594322['attributes']:_0x1deec4[_0x0976('0x54')];_0x594322[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x3d951e[_0x0976('0x42')][_0x0976('0xc8')]);_0x594322[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x3d951e['query'],_0x1deec4[_0x0976('0xc6')]));if(_0x3d951e[_0x0976('0x42')][_0x0976('0x3d')]){_0x594322[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x594322['where'],{'$or':_[_0x0976('0x87')](_0x594322[_0x0976('0x45')],function(_0x3e2ed5){var _0x34678c={};_0x34678c[_0x3e2ed5]={'$like':'%'+_0x3d951e[_0x0976('0x42')]['filter']+'%'};return _0x34678c;})});}_0x594322[_0x0976('0x54')]=db['User'];_0x594322['as']='Agents';_0x594322=_['merge']({},_0x594322,_0x3d951e[_0x0976('0xd3')]);return _0x516f21[_0x0976('0xf2')]({'include':[_0x594322]});}})[_0x0976('0x27')](function(_0x4bc8b2){if(_0x4bc8b2){var _0x1f266c={},_0x3c76ec=[];for(var _0x1e46bc=0x0;_0x1e46bc<_0x4bc8b2[_0x0976('0x49')];_0x1e46bc+=0x1){for(var _0x5396c3=0x0,_0x33f2ab;_0x5396c3<_0x4bc8b2[_0x1e46bc][_0x0976('0x82')][_0x0976('0x49')];_0x5396c3+=0x1){_0x33f2ab=_0x4bc8b2[_0x1e46bc][_0x0976('0x82')][_0x5396c3][_0x0976('0x29')]({'plain':!![]});_0x1f266c[_0x33f2ab['id']]=_0x33f2ab;}}_0x1f266c=_[_0x0976('0x11d')](_0x1f266c);for(var _0x2ea680=qs[_0x0976('0x21')](_0x3d951e[_0x0976('0x42')][_0x0976('0x21')]);_0x2ea680<_0x1f266c[_0x0976('0x49')]&&_0x3c76ec[_0x0976('0x49')]<qs[_0x0976('0x23')](_0x3d951e['query'][_0x0976('0x23')]);_0x2ea680+=0x1){if(_0x1f266c[_0x2ea680]){_0x3c76ec[_0x0976('0x4b')](_0x1f266c[_0x2ea680]);}}return{'count':_0x1f266c[_0x0976('0x49')],'rows':_0x3c76ec};}})[_0x0976('0x27')](respondWithResult(_0x59d520,null))[_0x0976('0x51')](handleError(_0x59d520,null));};exports[_0x0976('0x28')]=function(_0x2e10f3,_0x38bdd9){if(_0x2e10f3[_0x0976('0x7a')]['id']==_0x2e10f3[_0x0976('0x53')]['id']){return _0x38bdd9[_0x0976('0x1e')](0x1f4)[_0x0976('0x36')]({'message':_0x0976('0x11e')});}return db['User']['find']({'where':{'id':_0x2e10f3['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x38bdd9,null))[_0x0976('0x27')](removeEntity(_0x38bdd9,null))[_0x0976('0x51')](handleError(_0x38bdd9,null));};exports[_0x0976('0x11f')]=function(_0x258ed4,_0x480518){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x258ed4['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x480518,null))['then'](function(_0x581f94){if(_0x581f94){return _0x581f94[_0x0976('0x11f')](_0x258ed4['body'][_0x0976('0x61')],_[_0x0976('0x62')](_0x258ed4[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{})[_0x0976('0xa2')](function(){for(var _0x3d2953=0x0;_0x3d2953<_0x258ed4[_0x0976('0x5e')][_0x0976('0x61')][_0x0976('0x49')];_0x3d2953+=0x1){socket['emit'](_0x0976('0x120'),{'ChatInteractionId':Number(_0x258ed4[_0x0976('0x5e')][_0x0976('0x61')][_0x3d2953]),'UserId':Number(_0x258ed4[_0x0976('0x53')]['id'])});}return _0x258ed4[_0x0976('0x5e')]['ids'];});}})['then'](respondWithResult(_0x480518,null))['catch'](handleError(_0x480518,null));};exports['removeChatInteractions']=function(_0x4cea4c,_0x2abd5f){return db['User'][_0x0976('0x32')]({'where':{'id':_0x4cea4c[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x2abd5f,null))['then'](function(_0x349404){if(_0x349404){return _0x349404['removeChatInteractions'](_0x4cea4c[_0x0976('0x42')][_0x0976('0x61')])['then'](function(){if(_[_0x0976('0xad')](_0x4cea4c[_0x0976('0x42')][_0x0976('0x61')])){for(var _0x4bb586=0x0;_0x4bb586<_0x4cea4c['query'][_0x0976('0x61')]['length'];_0x4bb586+=0x1){socket[_0x0976('0xa3')](_0x0976('0x121'),{'ChatInteractionId':Number(_0x4cea4c[_0x0976('0x42')]['ids'][_0x4bb586]),'UserId':Number(_0x4cea4c['params']['id'])});}}else{socket[_0x0976('0xa3')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4cea4c[_0x0976('0x42')][_0x0976('0x61')]),'UserId':Number(_0x4cea4c[_0x0976('0x53')]['id'])});}});}})[_0x0976('0x27')](respondWithStatusCode(_0x2abd5f,null))[_0x0976('0x51')](handleError(_0x2abd5f,null));};exports[_0x0976('0x122')]=function(_0x454c75,_0xe40eb1){return db['User'][_0x0976('0x32')]({'where':{'id':_0x454c75[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0xe40eb1,null))[_0x0976('0x27')](function(_0x371354){if(_0x371354){return _0x371354[_0x0976('0x122')](_0x454c75[_0x0976('0x5e')]['ids'],_[_0x0976('0x62')](_0x454c75[_0x0976('0x5e')],['ids','id'])||{})[_0x0976('0xa2')](function(){for(var _0x19715c=0x0;_0x19715c<_0x454c75[_0x0976('0x5e')][_0x0976('0x61')][_0x0976('0x49')];_0x19715c+=0x1){socket['emit'](_0x0976('0x123'),{'MailInteractionId':Number(_0x454c75['body'][_0x0976('0x61')][_0x19715c]),'UserId':Number(_0x454c75['params']['id'])});}return _0x454c75['body']['ids'];});}})[_0x0976('0x27')](respondWithResult(_0xe40eb1,null))[_0x0976('0x51')](handleError(_0xe40eb1,null));};exports['removeMailInteractions']=function(_0x3f2ce3,_0x38b90b){return db[_0x0976('0x38')]['find']({'where':{'id':_0x3f2ce3[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x38b90b,null))[_0x0976('0x27')](function(_0x116957){if(_0x116957){return _0x116957[_0x0976('0x124')](_0x3f2ce3['query'][_0x0976('0x61')])[_0x0976('0x27')](function(){if(_[_0x0976('0xad')](_0x3f2ce3[_0x0976('0x42')][_0x0976('0x61')])){for(var _0x3f3fa7=0x0;_0x3f3fa7<_0x3f2ce3[_0x0976('0x42')][_0x0976('0x61')][_0x0976('0x49')];_0x3f3fa7+=0x1){socket['emit'](_0x0976('0x125'),{'MailInteractionId':Number(_0x3f2ce3[_0x0976('0x42')]['ids'][_0x3f3fa7]),'UserId':Number(_0x3f2ce3[_0x0976('0x53')]['id'])});}}else{socket[_0x0976('0xa3')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x3f2ce3[_0x0976('0x42')]['ids']),'UserId':Number(_0x3f2ce3[_0x0976('0x53')]['id'])});}});}})[_0x0976('0x27')](respondWithStatusCode(_0x38b90b,null))[_0x0976('0x51')](handleError(_0x38b90b,null));};exports[_0x0976('0x126')]=function(_0x13ccc3,_0x4d71c2){return db['User']['find']({'where':{'id':_0x13ccc3['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x4d71c2,null))[_0x0976('0x27')](function(_0x42c19a){if(_0x42c19a){return _0x42c19a[_0x0976('0x126')](_0x13ccc3['body'][_0x0976('0x61')],_['omit'](_0x13ccc3[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{})[_0x0976('0xa2')](function(){for(var _0x4a2f20=0x0;_0x4a2f20<_0x13ccc3[_0x0976('0x5e')][_0x0976('0x61')]['length'];_0x4a2f20+=0x1){socket[_0x0976('0xa3')](_0x0976('0x127'),{'FaxInteractionId':Number(_0x13ccc3['body'][_0x0976('0x61')][_0x4a2f20]),'UserId':Number(_0x13ccc3[_0x0976('0x53')]['id'])});}return _0x13ccc3['body'][_0x0976('0x61')];});}})[_0x0976('0x27')](respondWithResult(_0x4d71c2,null))[_0x0976('0x51')](handleError(_0x4d71c2,null));};exports[_0x0976('0x128')]=function(_0x2b93fd,_0x24dc76){return db[_0x0976('0x38')]['find']({'where':{'id':_0x2b93fd[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0x24dc76,null))[_0x0976('0x27')](function(_0x4b1caa){if(_0x4b1caa){return _0x4b1caa[_0x0976('0x128')](_0x2b93fd[_0x0976('0x42')][_0x0976('0x61')])['then'](function(){if(_[_0x0976('0xad')](_0x2b93fd['query'][_0x0976('0x61')])){for(var _0x2222ab=0x0;_0x2222ab<_0x2b93fd['query']['ids'][_0x0976('0x49')];_0x2222ab+=0x1){socket[_0x0976('0xa3')](_0x0976('0x129'),{'FaxInteractionId':Number(_0x2b93fd[_0x0976('0x42')]['ids'][_0x2222ab]),'UserId':Number(_0x2b93fd[_0x0976('0x53')]['id'])});}}else{socket[_0x0976('0xa3')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x2b93fd[_0x0976('0x42')]['ids']),'UserId':Number(_0x2b93fd['params']['id'])});}});}})[_0x0976('0x27')](respondWithStatusCode(_0x24dc76,null))['catch'](handleError(_0x24dc76,null));};exports[_0x0976('0x12a')]=function(_0x203bde,_0x17e638){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x203bde[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x17e638,null))[_0x0976('0x27')](function(_0x1bbad5){if(_0x1bbad5){return _0x1bbad5['addSmsInteractions'](_0x203bde[_0x0976('0x5e')][_0x0976('0x61')],_['omit'](_0x203bde[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{})[_0x0976('0xa2')](function(){for(var _0x511dfd=0x0;_0x511dfd<_0x203bde[_0x0976('0x5e')][_0x0976('0x61')][_0x0976('0x49')];_0x511dfd+=0x1){socket[_0x0976('0xa3')](_0x0976('0x12b'),{'SmsInteractionId':Number(_0x203bde['body'][_0x0976('0x61')][_0x511dfd]),'UserId':Number(_0x203bde[_0x0976('0x53')]['id'])});}return _0x203bde[_0x0976('0x5e')][_0x0976('0x61')];});}})[_0x0976('0x27')](respondWithResult(_0x17e638,null))[_0x0976('0x51')](handleError(_0x17e638,null));};exports[_0x0976('0x12c')]=function(_0x566a5f,_0x2ad01a){return db[_0x0976('0x38')]['find']({'where':{'id':_0x566a5f[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x2ad01a,null))[_0x0976('0x27')](function(_0x45d291){if(_0x45d291){return _0x45d291[_0x0976('0x12c')](_0x566a5f['query'][_0x0976('0x61')])[_0x0976('0x27')](function(){if(_[_0x0976('0xad')](_0x566a5f[_0x0976('0x42')][_0x0976('0x61')])){for(var _0x51c774=0x0;_0x51c774<_0x566a5f['query'][_0x0976('0x61')]['length'];_0x51c774+=0x1){socket[_0x0976('0xa3')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x566a5f[_0x0976('0x42')]['ids'][_0x51c774]),'UserId':Number(_0x566a5f[_0x0976('0x53')]['id'])});}}else{socket['emit'](_0x0976('0x12d'),{'SmsInteractionId':Number(_0x566a5f[_0x0976('0x42')][_0x0976('0x61')]),'UserId':Number(_0x566a5f[_0x0976('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x2ad01a,null))[_0x0976('0x51')](handleError(_0x2ad01a,null));};exports[_0x0976('0x12e')]=function(_0x1b6ad7,_0x1dc389){return db['User'][_0x0976('0x32')]({'where':{'id':_0x1b6ad7['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x1dc389,null))['then'](function(_0xb55484){if(_0xb55484){return _0xb55484[_0x0976('0x12e')](_0x1b6ad7[_0x0976('0x5e')]['ids'],_[_0x0976('0x62')](_0x1b6ad7[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{})['spread'](function(){for(var _0x33ffe2=0x0;_0x33ffe2<_0x1b6ad7[_0x0976('0x5e')][_0x0976('0x61')][_0x0976('0x49')];_0x33ffe2+=0x1){socket[_0x0976('0xa3')](_0x0976('0x12f'),{'OpenchannelInteractionId':Number(_0x1b6ad7[_0x0976('0x5e')][_0x0976('0x61')][_0x33ffe2]),'UserId':Number(_0x1b6ad7['params']['id'])});}return _0x1b6ad7['body'][_0x0976('0x61')];});}})[_0x0976('0x27')](respondWithResult(_0x1dc389,null))[_0x0976('0x51')](handleError(_0x1dc389,null));};exports[_0x0976('0x130')]=function(_0x259060,_0x4a7d8b){return db[_0x0976('0x38')]['find']({'where':{'id':_0x259060[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x4a7d8b,null))[_0x0976('0x27')](function(_0x458d21){if(_0x458d21){return _0x458d21['removeOpenchannelInteractions'](_0x259060['query'][_0x0976('0x61')])[_0x0976('0x27')](function(){if(_[_0x0976('0xad')](_0x259060[_0x0976('0x42')][_0x0976('0x61')])){for(var _0x35f86b=0x0;_0x35f86b<_0x259060[_0x0976('0x42')][_0x0976('0x61')][_0x0976('0x49')];_0x35f86b+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x259060[_0x0976('0x42')][_0x0976('0x61')][_0x35f86b]),'UserId':Number(_0x259060[_0x0976('0x53')]['id'])});}}else{socket[_0x0976('0xa3')](_0x0976('0x131'),{'OpenchannelInteractionId':Number(_0x259060['query'][_0x0976('0x61')]),'UserId':Number(_0x259060[_0x0976('0x53')]['id'])});}});}})[_0x0976('0x27')](respondWithStatusCode(_0x4a7d8b,null))[_0x0976('0x51')](handleError(_0x4a7d8b,null));};exports[_0x0976('0x132')]=function(_0x48986c,_0x2d0144){return db['User'][_0x0976('0x32')]({'where':{'id':_0x48986c['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x2d0144,null))['then'](function(_0x1769a6){if(_0x1769a6){return _0x1769a6[_0x0976('0x132')](_0x48986c['body']['ids'],_[_0x0976('0x62')](_0x48986c[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{})['spread'](function(){for(var _0x316295=0x0;_0x316295<_0x48986c[_0x0976('0x5e')][_0x0976('0x61')][_0x0976('0x49')];_0x316295+=0x1){socket[_0x0976('0xa3')](_0x0976('0x133'),{'WhatsappInteractionId':Number(_0x48986c['body'][_0x0976('0x61')][_0x316295]),'UserId':Number(_0x48986c['params']['id'])});}return _0x48986c[_0x0976('0x5e')]['ids'];});}})[_0x0976('0x27')](respondWithResult(_0x2d0144,null))[_0x0976('0x51')](handleError(_0x2d0144,null));};exports[_0x0976('0x134')]=function(_0x5c00aa,_0x2cf9f6){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x5c00aa[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x2cf9f6,null))['then'](function(_0x1fad83){if(_0x1fad83){return _0x1fad83[_0x0976('0x134')](_0x5c00aa[_0x0976('0x42')]['ids']);}})['then'](respondWithStatusCode(_0x2cf9f6,null))[_0x0976('0x51')](handleError(_0x2cf9f6,null));};exports[_0x0976('0x135')]=function(_0x41ff1c,_0x13a47e){var _0x3ec6fc={};var _0x59f087={};var _0x3f9178;var _0x437661;return db[_0x0976('0x38')]['findOne']({'where':{'id':_0x41ff1c[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x13a47e,null))[_0x0976('0x27')](function(_0xe8acb1){if(_0xe8acb1){_0x3f9178=_0xe8acb1;_0x59f087[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0x136')][_0x0976('0x39')]);_0x59f087['query']=_['keys'](_0x41ff1c[_0x0976('0x42')]);_0x59f087[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x59f087[_0x0976('0x54')],_0x59f087['query']);_0x3ec6fc[_0x0976('0x45')]=_[_0x0976('0x58')](_0x59f087[_0x0976('0x54')],qs[_0x0976('0x59')](_0x41ff1c['query'][_0x0976('0x59')]));_0x3ec6fc[_0x0976('0x45')]=_0x3ec6fc['attributes'][_0x0976('0x49')]?_0x3ec6fc[_0x0976('0x45')]:_0x59f087['model'];_0x3ec6fc[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x41ff1c['query'][_0x0976('0xc8')]);_0x3ec6fc[_0x0976('0x40')]=qs['filters'](_['pick'](_0x41ff1c[_0x0976('0x42')],_0x59f087[_0x0976('0xc6')]));if(_0x41ff1c[_0x0976('0x42')][_0x0976('0x3d')]){_0x3ec6fc['where']=_[_0x0976('0x5b')](_0x3ec6fc[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x3ec6fc[_0x0976('0x45')],function(_0x2701ff){var _0x249c46={};_0x249c46[_0x2701ff]={'$like':'%'+_0x41ff1c[_0x0976('0x42')]['filter']+'%'};return _0x249c46;})});}_0x3ec6fc=_[_0x0976('0x5b')]({},_0x3ec6fc,_0x41ff1c[_0x0976('0xd3')]);return _0x3f9178[_0x0976('0x135')](_0x3ec6fc);}})[_0x0976('0x27')](function(_0x17c2f3){if(_0x17c2f3){_0x437661=_0x17c2f3[_0x0976('0x49')];if(!_0x41ff1c[_0x0976('0x42')][_0x0976('0xce')]('nolimit')){_0x3ec6fc['limit']=qs[_0x0976('0x23')](_0x41ff1c[_0x0976('0x42')][_0x0976('0x23')]);_0x3ec6fc['offset']=qs[_0x0976('0x21')](_0x41ff1c[_0x0976('0x42')][_0x0976('0x21')]);}return _0x3f9178[_0x0976('0x135')](_0x3ec6fc);}})[_0x0976('0x27')](function(_0x5f3a10){if(_0x5f3a10){return _0x5f3a10?{'count':_0x437661,'rows':_0x5f3a10}:null;}})['then'](respondWithResult(_0x13a47e,null))['catch'](handleError(_0x13a47e,null));};exports[_0x0976('0x137')]=function(_0x952a96,_0x3c4f59){var _0x1bf4ed={};var _0x812956={};var _0x3a16d9;var _0x1d6d6a;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x952a96[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x3c4f59,null))['then'](function(_0x35f1d1){if(_0x35f1d1){_0x3a16d9=_0x35f1d1;_0x812956[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0x138')][_0x0976('0x39')]);_0x812956['query']=_[_0x0976('0x56')](_0x952a96[_0x0976('0x42')]);_0x812956[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x812956[_0x0976('0x54')],_0x812956[_0x0976('0x42')]);_0x1bf4ed['attributes']=_[_0x0976('0x58')](_0x812956[_0x0976('0x54')],qs[_0x0976('0x59')](_0x952a96[_0x0976('0x42')][_0x0976('0x59')]));_0x1bf4ed['attributes']=_0x1bf4ed[_0x0976('0x45')][_0x0976('0x49')]?_0x1bf4ed[_0x0976('0x45')]:_0x812956[_0x0976('0x54')];_0x1bf4ed[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x952a96[_0x0976('0x42')][_0x0976('0xc8')]);_0x1bf4ed[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x952a96[_0x0976('0x42')],_0x812956['filters']));if(_0x952a96[_0x0976('0x42')][_0x0976('0x3d')]){_0x1bf4ed[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x1bf4ed[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x1bf4ed[_0x0976('0x45')],function(_0x57bd90){var _0x597a22={};_0x597a22[_0x57bd90]={'$like':'%'+_0x952a96['query']['filter']+'%'};return _0x597a22;})});}_0x1bf4ed=_[_0x0976('0x5b')]({},_0x1bf4ed,_0x952a96[_0x0976('0xd3')]);return _0x3a16d9[_0x0976('0x137')](_0x1bf4ed);}})[_0x0976('0x27')](function(_0x1d76a3){if(_0x1d76a3){_0x1d6d6a=_0x1d76a3[_0x0976('0x49')];if(!_0x952a96['query']['hasOwnProperty']('nolimit')){_0x1bf4ed[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x952a96[_0x0976('0x42')][_0x0976('0x23')]);_0x1bf4ed[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x952a96['query'][_0x0976('0x21')]);}return _0x3a16d9['getFaxAccounts'](_0x1bf4ed);}})[_0x0976('0x27')](function(_0x78bb5e){if(_0x78bb5e){return _0x78bb5e?{'count':_0x1d6d6a,'rows':_0x78bb5e}:null;}})['then'](respondWithResult(_0x3c4f59,null))[_0x0976('0x51')](handleError(_0x3c4f59,null));};exports[_0x0976('0x139')]=function(_0x5a54f7,_0xbbe0ef){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x5a54f7['params']['id']}})['then'](handleEntityNotFound(_0xbbe0ef,null))[_0x0976('0x27')](function(_0x21af57){if(_0x21af57){return _0x21af57[_0x0976('0x139')](_0x5a54f7[_0x0976('0x5e')][_0x0976('0x61')],_['omit'](_0x5a54f7[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{});}})['then'](respondWithResult(_0xbbe0ef,null))[_0x0976('0x51')](handleError(_0xbbe0ef,null));};exports[_0x0976('0x13a')]=function(_0x17b2a2,_0x13f863){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x17b2a2[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0x13f863,null))[_0x0976('0x27')](function(_0x8f7678){if(_0x8f7678){return _0x8f7678[_0x0976('0x13a')](_0x17b2a2[_0x0976('0x42')][_0x0976('0x61')]);}})['then'](respondWithStatusCode(_0x13f863,null))['catch'](handleError(_0x13f863,null));};exports[_0x0976('0x13b')]=function(_0x310d3a,_0x26e638){var _0x1ca454={};var _0x428b8e={};var _0x54b1a4;var _0x4480db;return db[_0x0976('0x38')]['findOne']({'where':{'id':_0x310d3a['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x26e638,null))[_0x0976('0x27')](function(_0x3e6df4){if(_0x3e6df4){_0x54b1a4=_0x3e6df4;_0x428b8e[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0x13c')][_0x0976('0x39')]);_0x428b8e[_0x0976('0x42')]=_['keys'](_0x310d3a[_0x0976('0x42')]);_0x428b8e[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x428b8e[_0x0976('0x54')],_0x428b8e[_0x0976('0x42')]);_0x1ca454[_0x0976('0x45')]=_['intersection'](_0x428b8e[_0x0976('0x54')],qs['fields'](_0x310d3a[_0x0976('0x42')]['fields']));_0x1ca454[_0x0976('0x45')]=_0x1ca454[_0x0976('0x45')][_0x0976('0x49')]?_0x1ca454[_0x0976('0x45')]:_0x428b8e[_0x0976('0x54')];_0x1ca454['order']=qs[_0x0976('0xc8')](_0x310d3a[_0x0976('0x42')][_0x0976('0xc8')]);_0x1ca454['where']=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x310d3a[_0x0976('0x42')],_0x428b8e[_0x0976('0xc6')]));if(_0x310d3a[_0x0976('0x42')][_0x0976('0x3d')]){_0x1ca454[_0x0976('0x40')]=_['merge'](_0x1ca454[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x1ca454[_0x0976('0x45')],function(_0x9951e1){var _0x39d115={};_0x39d115[_0x9951e1]={'$like':'%'+_0x310d3a[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x39d115;})});}_0x1ca454=_['merge']({},_0x1ca454,_0x310d3a[_0x0976('0xd3')]);return _0x54b1a4[_0x0976('0x13b')](_0x1ca454);}})[_0x0976('0x27')](function(_0x204b59){if(_0x204b59){_0x4480db=_0x204b59['length'];if(!_0x310d3a[_0x0976('0x42')]['hasOwnProperty']('nolimit')){_0x1ca454[_0x0976('0x23')]=qs[_0x0976('0x23')](_0x310d3a['query'][_0x0976('0x23')]);_0x1ca454[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x310d3a[_0x0976('0x42')][_0x0976('0x21')]);}return _0x54b1a4[_0x0976('0x13b')](_0x1ca454);}})['then'](function(_0x4b2577){if(_0x4b2577){return _0x4b2577?{'count':_0x4480db,'rows':_0x4b2577}:null;}})[_0x0976('0x27')](respondWithResult(_0x26e638,null))['catch'](handleError(_0x26e638,null));};exports[_0x0976('0x13d')]=function(_0x477334,_0x4fc79c){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x477334['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x4fc79c,null))['then'](function(_0x504f71){if(_0x504f71){return _0x504f71[_0x0976('0x13d')](_0x477334[_0x0976('0x5e')][_0x0976('0x61')],_[_0x0976('0x62')](_0x477334[_0x0976('0x5e')],['ids','id'])||{});}})[_0x0976('0x27')](respondWithResult(_0x4fc79c,null))['catch'](handleError(_0x4fc79c,null));};exports[_0x0976('0x13e')]=function(_0xf8e7b5,_0x18205e){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0xf8e7b5[_0x0976('0x53')]['id']}})['then'](handleEntityNotFound(_0x18205e,null))[_0x0976('0x27')](function(_0x2dc687){if(_0x2dc687){return _0x2dc687['removeMailAccounts'](_0xf8e7b5['query'][_0x0976('0x61')]);}})['then'](respondWithStatusCode(_0x18205e,null))[_0x0976('0x51')](handleError(_0x18205e,null));};exports[_0x0976('0x13f')]=function(_0x36b45c,_0x3e2126){var _0x1293d2={};var _0x1b0190={};var _0x369b2f;var _0x14155f;return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x36b45c[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x3e2126,null))['then'](function(_0x1f0943){if(_0x1f0943){_0x369b2f=_0x1f0943;_0x1b0190[_0x0976('0x54')]=_[_0x0976('0x56')](db['OpenchannelAccount'][_0x0976('0x39')]);_0x1b0190[_0x0976('0x42')]=_[_0x0976('0x56')](_0x36b45c[_0x0976('0x42')]);_0x1b0190[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x1b0190[_0x0976('0x54')],_0x1b0190[_0x0976('0x42')]);_0x1293d2[_0x0976('0x45')]=_['intersection'](_0x1b0190[_0x0976('0x54')],qs[_0x0976('0x59')](_0x36b45c['query'][_0x0976('0x59')]));_0x1293d2[_0x0976('0x45')]=_0x1293d2[_0x0976('0x45')]['length']?_0x1293d2[_0x0976('0x45')]:_0x1b0190[_0x0976('0x54')];_0x1293d2[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x36b45c[_0x0976('0x42')][_0x0976('0xc8')]);_0x1293d2[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x36b45c['query'],_0x1b0190['filters']));if(_0x36b45c[_0x0976('0x42')][_0x0976('0x3d')]){_0x1293d2[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x1293d2[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x1293d2['attributes'],function(_0x5c1f95){var _0x56e4ef={};_0x56e4ef[_0x5c1f95]={'$like':'%'+_0x36b45c[_0x0976('0x42')]['filter']+'%'};return _0x56e4ef;})});}_0x1293d2=_[_0x0976('0x5b')]({},_0x1293d2,_0x36b45c[_0x0976('0xd3')]);return _0x369b2f['getOpenchannelAccounts'](_0x1293d2);}})[_0x0976('0x27')](function(_0x147b6d){if(_0x147b6d){_0x14155f=_0x147b6d[_0x0976('0x49')];if(!_0x36b45c[_0x0976('0x42')]['hasOwnProperty'](_0x0976('0xcf'))){_0x1293d2['limit']=qs[_0x0976('0x23')](_0x36b45c['query'][_0x0976('0x23')]);_0x1293d2[_0x0976('0x21')]=qs['offset'](_0x36b45c[_0x0976('0x42')]['offset']);}return _0x369b2f[_0x0976('0x13f')](_0x1293d2);}})[_0x0976('0x27')](function(_0x33ecf6){if(_0x33ecf6){return _0x33ecf6?{'count':_0x14155f,'rows':_0x33ecf6}:null;}})[_0x0976('0x27')](respondWithResult(_0x3e2126,null))[_0x0976('0x51')](handleError(_0x3e2126,null));};exports[_0x0976('0x140')]=function(_0x1c8d59,_0x8e94e1){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x1c8d59[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x8e94e1,null))['then'](function(_0x1ed284){if(_0x1ed284){return _0x1ed284[_0x0976('0x140')](_0x1c8d59[_0x0976('0x5e')][_0x0976('0x61')],_['omit'](_0x1c8d59[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{});}})[_0x0976('0x27')](respondWithResult(_0x8e94e1,null))[_0x0976('0x51')](handleError(_0x8e94e1,null));};exports[_0x0976('0x141')]=function(_0x468885,_0x44c9b6){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x468885['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x44c9b6,null))[_0x0976('0x27')](function(_0x10f89c){if(_0x10f89c){return _0x10f89c[_0x0976('0x141')](_0x468885['query'][_0x0976('0x61')]);}})['then'](respondWithStatusCode(_0x44c9b6,null))[_0x0976('0x51')](handleError(_0x44c9b6,null));};exports[_0x0976('0x142')]=function(_0xea1bd9,_0x33a3bc){var _0x288403={};var _0x3a14c2={};var _0x2f6077;var _0x303b37;return db[_0x0976('0x38')]['findOne']({'where':{'id':_0xea1bd9['params']['id']}})['then'](handleEntityNotFound(_0x33a3bc,null))[_0x0976('0x27')](function(_0xfbfcbb){if(_0xfbfcbb){_0x2f6077=_0xfbfcbb;_0x3a14c2[_0x0976('0x54')]=_[_0x0976('0x56')](db[_0x0976('0x143')]['rawAttributes']);_0x3a14c2['query']=_[_0x0976('0x56')](_0xea1bd9['query']);_0x3a14c2[_0x0976('0xc6')]=_['intersection'](_0x3a14c2[_0x0976('0x54')],_0x3a14c2[_0x0976('0x42')]);_0x288403[_0x0976('0x45')]=_[_0x0976('0x58')](_0x3a14c2[_0x0976('0x54')],qs['fields'](_0xea1bd9[_0x0976('0x42')][_0x0976('0x59')]));_0x288403['attributes']=_0x288403[_0x0976('0x45')]['length']?_0x288403['attributes']:_0x3a14c2['model'];_0x288403[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0xea1bd9[_0x0976('0x42')][_0x0976('0xc8')]);_0x288403[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0xea1bd9[_0x0976('0x42')],_0x3a14c2[_0x0976('0xc6')]));if(_0xea1bd9[_0x0976('0x42')][_0x0976('0x3d')]){_0x288403[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x288403[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x288403[_0x0976('0x45')],function(_0x2b9975){var _0xac6bc9={};_0xac6bc9[_0x2b9975]={'$like':'%'+_0xea1bd9[_0x0976('0x42')]['filter']+'%'};return _0xac6bc9;})});}_0x288403=_['merge']({},_0x288403,_0xea1bd9[_0x0976('0xd3')]);return _0x2f6077[_0x0976('0x142')](_0x288403);}})[_0x0976('0x27')](function(_0x444fdf){if(_0x444fdf){_0x303b37=_0x444fdf[_0x0976('0x49')];if(!_0xea1bd9['query'][_0x0976('0xce')](_0x0976('0xcf'))){_0x288403[_0x0976('0x23')]=qs['limit'](_0xea1bd9[_0x0976('0x42')][_0x0976('0x23')]);_0x288403[_0x0976('0x21')]=qs[_0x0976('0x21')](_0xea1bd9[_0x0976('0x42')]['offset']);}return _0x2f6077[_0x0976('0x142')](_0x288403);}})[_0x0976('0x27')](function(_0x124314){if(_0x124314){return _0x124314?{'count':_0x303b37,'rows':_0x124314}:null;}})['then'](respondWithResult(_0x33a3bc,null))[_0x0976('0x51')](handleError(_0x33a3bc,null));};exports['addSmsAccounts']=function(_0x3fb715,_0x11aa98){return db['User']['find']({'where':{'id':_0x3fb715[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x11aa98,null))['then'](function(_0x1a3777){if(_0x1a3777){return _0x1a3777[_0x0976('0x144')](_0x3fb715[_0x0976('0x5e')]['ids'],_[_0x0976('0x62')](_0x3fb715[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{});}})[_0x0976('0x27')](respondWithResult(_0x11aa98,null))[_0x0976('0x51')](handleError(_0x11aa98,null));};exports['removeSmsAccounts']=function(_0x35a751,_0x1f9721){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x35a751['params']['id']}})['then'](handleEntityNotFound(_0x1f9721,null))[_0x0976('0x27')](function(_0x207818){if(_0x207818){return _0x207818[_0x0976('0x145')](_0x35a751[_0x0976('0x42')][_0x0976('0x61')]);}})[_0x0976('0x27')](respondWithStatusCode(_0x1f9721,null))[_0x0976('0x51')](handleError(_0x1f9721,null));};exports['getChatWebsites']=function(_0x487cd3,_0x34de13){var _0x348718={};var _0x5208ba={};var _0x53c2e0;var _0x594db5;return db[_0x0976('0x38')]['findOne']({'where':{'id':_0x487cd3[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x34de13,null))[_0x0976('0x27')](function(_0x192ab7){if(_0x192ab7){_0x53c2e0=_0x192ab7;_0x5208ba['model']=_[_0x0976('0x56')](db[_0x0976('0x146')][_0x0976('0x39')]);_0x5208ba[_0x0976('0x42')]=_[_0x0976('0x56')](_0x487cd3[_0x0976('0x42')]);_0x5208ba[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x5208ba[_0x0976('0x54')],_0x5208ba['query']);_0x348718[_0x0976('0x45')]=_[_0x0976('0x58')](_0x5208ba[_0x0976('0x54')],qs[_0x0976('0x59')](_0x487cd3[_0x0976('0x42')][_0x0976('0x59')]));_0x348718[_0x0976('0x45')]=_0x348718['attributes'][_0x0976('0x49')]?_0x348718[_0x0976('0x45')]:_0x5208ba[_0x0976('0x54')];_0x348718[_0x0976('0xc7')]=qs['sort'](_0x487cd3['query'][_0x0976('0xc8')]);_0x348718[_0x0976('0x40')]=qs['filters'](_[_0x0976('0xc9')](_0x487cd3[_0x0976('0x42')],_0x5208ba['filters']));if(_0x487cd3[_0x0976('0x42')]['filter']){_0x348718['where']=_[_0x0976('0x5b')](_0x348718[_0x0976('0x40')],{'$or':_['map'](_0x348718[_0x0976('0x45')],function(_0x105900){var _0x40fe3c={};_0x40fe3c[_0x105900]={'$like':'%'+_0x487cd3[_0x0976('0x42')]['filter']+'%'};return _0x40fe3c;})});}_0x348718=_[_0x0976('0x5b')]({},_0x348718,_0x487cd3[_0x0976('0xd3')]);return _0x53c2e0['getChatWebsites'](_0x348718);}})[_0x0976('0x27')](function(_0x43ec05){if(_0x43ec05){_0x594db5=_0x43ec05[_0x0976('0x49')];if(!_0x487cd3[_0x0976('0x42')][_0x0976('0xce')]('nolimit')){_0x348718[_0x0976('0x23')]=qs['limit'](_0x487cd3[_0x0976('0x42')][_0x0976('0x23')]);_0x348718[_0x0976('0x21')]=qs['offset'](_0x487cd3['query'][_0x0976('0x21')]);}return _0x53c2e0['getChatWebsites'](_0x348718);}})[_0x0976('0x27')](function(_0x1a3e00){if(_0x1a3e00){return _0x1a3e00?{'count':_0x594db5,'rows':_0x1a3e00}:null;}})[_0x0976('0x27')](respondWithResult(_0x34de13,null))[_0x0976('0x51')](handleError(_0x34de13,null));};exports[_0x0976('0x147')]=function(_0x3da64f,_0x339159){return db['User'][_0x0976('0x32')]({'where':{'id':_0x3da64f[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x339159,null))[_0x0976('0x27')](function(_0x5399d7){if(_0x5399d7){return _0x5399d7[_0x0976('0x147')](_0x3da64f[_0x0976('0x5e')]['ids'],_[_0x0976('0x62')](_0x3da64f[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{});}})[_0x0976('0x27')](respondWithResult(_0x339159,null))[_0x0976('0x51')](handleError(_0x339159,null));};exports[_0x0976('0x148')]=function(_0xa16097,_0x17e815){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0xa16097['params']['id']}})['then'](handleEntityNotFound(_0x17e815,null))['then'](function(_0x2de4dc){if(_0x2de4dc){return _0x2de4dc[_0x0976('0x148')](_0xa16097['query'][_0x0976('0x61')]);}})[_0x0976('0x27')](respondWithStatusCode(_0x17e815,null))[_0x0976('0x51')](handleError(_0x17e815,null));};exports[_0x0976('0x149')]=function(_0x160055,_0x2e8ea8){var _0x3747cc={};var _0x8da5ed={};var _0x3cf4da;var _0x3fbc1e;return db['User']['findOne']({'where':{'id':_0x160055['params']['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x2e8ea8,null))[_0x0976('0x27')](function(_0x240bd6){if(_0x240bd6){_0x3cf4da=_0x240bd6;_0x8da5ed[_0x0976('0x54')]=_[_0x0976('0x56')](db['WhatsappAccount'][_0x0976('0x39')]);_0x8da5ed[_0x0976('0x42')]=_['keys'](_0x160055[_0x0976('0x42')]);_0x8da5ed[_0x0976('0xc6')]=_['intersection'](_0x8da5ed[_0x0976('0x54')],_0x8da5ed[_0x0976('0x42')]);_0x3747cc[_0x0976('0x45')]=_[_0x0976('0x58')](_0x8da5ed[_0x0976('0x54')],qs['fields'](_0x160055[_0x0976('0x42')][_0x0976('0x59')]));_0x3747cc['attributes']=_0x3747cc[_0x0976('0x45')][_0x0976('0x49')]?_0x3747cc[_0x0976('0x45')]:_0x8da5ed[_0x0976('0x54')];_0x3747cc[_0x0976('0xc7')]=qs[_0x0976('0xc8')](_0x160055['query'][_0x0976('0xc8')]);_0x3747cc[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x160055[_0x0976('0x42')],_0x8da5ed[_0x0976('0xc6')]));if(_0x160055[_0x0976('0x42')][_0x0976('0x3d')]){_0x3747cc['where']=_[_0x0976('0x5b')](_0x3747cc[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x3747cc[_0x0976('0x45')],function(_0x222857){var _0x71adbb={};_0x71adbb[_0x222857]={'$like':'%'+_0x160055[_0x0976('0x42')][_0x0976('0x3d')]+'%'};return _0x71adbb;})});}_0x3747cc=_[_0x0976('0x5b')]({},_0x3747cc,_0x160055[_0x0976('0xd3')]);return _0x3cf4da['getWhatsappAccounts'](_0x3747cc);}})[_0x0976('0x27')](function(_0x1ff923){if(_0x1ff923){_0x3fbc1e=_0x1ff923[_0x0976('0x49')];if(!_0x160055[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x3747cc['limit']=qs[_0x0976('0x23')](_0x160055[_0x0976('0x42')][_0x0976('0x23')]);_0x3747cc['offset']=qs['offset'](_0x160055[_0x0976('0x42')][_0x0976('0x21')]);}return _0x3cf4da[_0x0976('0x149')](_0x3747cc);}})[_0x0976('0x27')](function(_0x2a4f25){if(_0x2a4f25){return _0x2a4f25?{'count':_0x3fbc1e,'rows':_0x2a4f25}:null;}})[_0x0976('0x27')](respondWithResult(_0x2e8ea8,null))['catch'](handleError(_0x2e8ea8,null));};exports[_0x0976('0x14a')]=function(_0xd79d57,_0x4c78eb){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0xd79d57[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x4c78eb,null))[_0x0976('0x27')](function(_0x25e750){if(_0x25e750){return _0x25e750[_0x0976('0x14a')](_0xd79d57['body']['ids'],_[_0x0976('0x62')](_0xd79d57[_0x0976('0x5e')],[_0x0976('0x61'),'id'])||{});}})[_0x0976('0x27')](respondWithResult(_0x4c78eb,null))[_0x0976('0x51')](handleError(_0x4c78eb,null));};exports[_0x0976('0x14b')]=function(_0x96e08d,_0x431257){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x96e08d[_0x0976('0x53')]['id']}})[_0x0976('0x27')](handleEntityNotFound(_0x431257,null))['then'](function(_0x5f3bf3){if(_0x5f3bf3){return _0x5f3bf3[_0x0976('0x14b')](_0x96e08d['query']['ids']);}})[_0x0976('0x27')](respondWithStatusCode(_0x431257,null))[_0x0976('0x51')](handleError(_0x431257,null));};exports[_0x0976('0x14c')]=function(_0x1473ea,_0x631771){var _0x5babf3={},_0x4e6b7f={},_0x1eb0ef={'count':0x0,'rows':[]};var _0x292da7=db[_0x0976('0x14d')]['rawAttributes'];_0x4e6b7f['model']=_[_0x0976('0x56')](_0x292da7);_0x4e6b7f[_0x0976('0x42')]=_[_0x0976('0x56')](_0x1473ea[_0x0976('0x42')]);_0x4e6b7f[_0x0976('0xc6')]=_[_0x0976('0x58')](_0x4e6b7f[_0x0976('0x54')],_0x4e6b7f[_0x0976('0x42')]);_0x4e6b7f[_0x0976('0xc6')]=_[_0x0976('0xc4')](_0x4e6b7f['filters'],[_0x0976('0x14e'),_0x0976('0x14f'),'$gt','$gte',_0x0976('0x150'),_0x0976('0x151'),_0x0976('0x152'),'$eq',_0x0976('0x153'),_0x0976('0x154'),_0x0976('0x155'),_0x0976('0x156'),_0x0976('0x157'),'$like',_0x0976('0x158'),'$iLike',_0x0976('0x159'),_0x0976('0x15a'),_0x0976('0x15b'),'$contains','$contained',_0x0976('0x15c')]);_0x5babf3[_0x0976('0x45')]=_[_0x0976('0x58')](_0x4e6b7f[_0x0976('0x54')],qs[_0x0976('0x59')](_0x1473ea[_0x0976('0x42')][_0x0976('0x59')]));_0x5babf3[_0x0976('0x45')]=_0x5babf3[_0x0976('0x45')][_0x0976('0x49')]?_0x5babf3[_0x0976('0x45')]:_0x4e6b7f[_0x0976('0x54')];if(!_0x1473ea[_0x0976('0x42')][_0x0976('0xce')](_0x0976('0xcf'))){_0x5babf3['limit']=qs['limit'](_0x1473ea[_0x0976('0x42')][_0x0976('0x23')]);_0x5babf3[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x1473ea[_0x0976('0x42')]['offset']);}_0x5babf3[_0x0976('0xc7')]=qs['sort'](_0x1473ea['query']['sort']);_0x5babf3[_0x0976('0x40')]=qs[_0x0976('0xc6')](_[_0x0976('0xc9')](_0x1473ea[_0x0976('0x42')],_0x4e6b7f[_0x0976('0xc6')]));if(_0x1473ea[_0x0976('0x42')][_0x0976('0x3d')]){_0x5babf3[_0x0976('0x40')]=_[_0x0976('0x5b')](_0x5babf3[_0x0976('0x40')],{'$or':_[_0x0976('0x87')](_0x5babf3[_0x0976('0x45')],function(_0x3df6a7){var _0x2c4fd8={};_0x2c4fd8[_0x3df6a7]={'$like':'%'+_0x1473ea['query'][_0x0976('0x3d')]+'%'};return _0x2c4fd8;})});}_0x5babf3[_0x0976('0x40')]={'$and':[_0x5babf3[_0x0976('0x40')],{'$or':[{'UserId':_0x1473ea[_0x0976('0x53')]['id']},{'OwnerId':_0x1473ea['params']['id']}]}]};_0x5babf3=_[_0x0976('0x5b')]({},_0x5babf3,_0x1473ea[_0x0976('0xd3')]);var _0x38e505={'where':_0x5babf3['where']};return db[_0x0976('0x14d')]['count'](_0x38e505)[_0x0976('0x27')](function(_0x3e1826){_0x1eb0ef[_0x0976('0x24')]=_0x3e1826;if(_0x1473ea[_0x0976('0x42')][_0x0976('0x5a')]){_0x5babf3[_0x0976('0x41')]=[{'attributes':['id',_0x0976('0x15d'),_0x0976('0x15e'),_0x0976('0xe7')],'model':db['CmContact'],'as':_0x0976('0x15f')},{'attributes':['id',_0x0976('0x33'),_0x0976('0x160')],'model':db[_0x0976('0xa5')],'as':_0x0976('0xd2')}];}return db['CmHopper'][_0x0976('0x8a')](_0x5babf3);})[_0x0976('0x27')](function(_0x25ccd7){_0x1eb0ef[_0x0976('0x46')]=_0x25ccd7;return _0x1eb0ef;})[_0x0976('0x27')](respondWithFilteredResult(_0x631771,_0x5babf3))[_0x0976('0x51')](handleError(_0x631771,null));};exports['getApiKey']=function(_0x3edd76,_0x3120fb){if(!_[_0x0976('0x67')](_0x3edd76[_0x0976('0x7a')]['id'])&&(_0x3edd76[_0x0976('0x7a')][_0x0976('0x2a')]==_0x0976('0x2b')||_0x3edd76['user'][_0x0976('0x2a')]==_0x0976('0x7a'))){return db[_0x0976('0x38')][_0x0976('0x95')]({'where':{'id':_0x3edd76['params']['id']},'raw':!![]})[_0x0976('0x27')](function(_0x18a05b){return authService[_0x0976('0x161')](_0x18a05b);})[_0x0976('0x27')](function(_0x574423){if(_0x574423){return _0x3120fb[_0x0976('0x1e')](0xc8)[_0x0976('0x20')]({'api_key':_0x574423[_0x0976('0x162')]});}else{return _0x3120fb['status'](0xcc)[_0x0976('0x20')]({'message':_0x0976('0x163')});}})[_0x0976('0x51')](handleError(_0x3120fb,0x193));}else{return _0x3120fb[_0x0976('0x1e')](0x191)[_0x0976('0x20')]({'message':_0x0976('0x164')});}};exports[_0x0976('0x165')]=function(_0x372c46,_0x45f7bb){if(!_['isNil'](_0x372c46[_0x0976('0x7a')]['id'])&&(_0x372c46[_0x0976('0x7a')][_0x0976('0x2a')]==_0x0976('0x2b')||_0x372c46['user'][_0x0976('0x2a')]==_0x0976('0x7a'))){return db[_0x0976('0x38')][_0x0976('0x32')]({'where':{'id':_0x372c46['params']['id']}})['then'](function(_0x201a96){return authService[_0x0976('0x166')](_0x201a96);})[_0x0976('0x27')](function(_0x830d59){return db[_0x0976('0x38')][_0x0976('0xf7')]({'apiKeyIat':_0x830d59['iat'],'apiKeyNonce':_0x830d59[_0x0976('0x167')]},{'where':{'id':_0x372c46['params']['id']}})[_0x0976('0x27')](function(){return _0x45f7bb['status'](0xc8)[_0x0976('0x20')]({'api_key':_0x830d59[_0x0976('0x162')]});});})[_0x0976('0x51')](handleError(_0x45f7bb,0x193));}else{return _0x45f7bb[_0x0976('0x1e')](0x191)[_0x0976('0x20')]({'message':_0x0976('0x164')});}};exports[_0x0976('0x168')]=function(_0x283cc9,_0x339b74){if(!_[_0x0976('0x67')](_0x283cc9[_0x0976('0x7a')]['id'])&&(_0x283cc9[_0x0976('0x7a')][_0x0976('0x2a')]==_0x0976('0x2b')||_0x283cc9[_0x0976('0x7a')][_0x0976('0x2a')]==_0x0976('0x7a'))){return db[_0x0976('0x38')]['find']({'where':{'id':_0x283cc9['params']['id']}})['then'](handleEntityNotFound(_0x339b74,null))[_0x0976('0x27')](function(_0x288231){if(_0x288231&&_0x288231['apiKeyNonce']&&_0x288231['apiKeyIat'])return _0x288231;else throw{'message':_0x0976('0x169')};})[_0x0976('0x27')](function(){return db['User'][_0x0976('0xf7')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x283cc9[_0x0976('0x53')]['id']}});})['then'](respondWithStatusCode(_0x339b74,0xc8))[_0x0976('0x51')](handleError(_0x339b74,0x193));}else{return _0x339b74[_0x0976('0x1e')](0x191)[_0x0976('0x20')]({'message':_0x0976('0x164')});}};exports[_0x0976('0x16a')]=function(_0x406549,_0x422549){var _0x57fda8=_0x406549[_0x0976('0x7a')]['get']({'plain':!![]});if(!_0x57fda8){return _0x422549[_0x0976('0x1e')](0x191)['send'](_0x0976('0x16b'));}else{Promise[_0x0976('0xfc')]()[_0x0976('0x27')](function(){if(_0x406549[_0x0976('0x42')][_0x0976('0x43')]!==_0x0976('0x48'))return;return _0x406549[_0x0976('0x7a')][_0x0976('0x16c')]();})[_0x0976('0x27')](function(_0x2ce941){if(!_0x2ce941)return;return _0x2ce941[_0x0976('0x29')]({'plain':!![]});})[_0x0976('0x27')](function(_0x9ee676){_0x57fda8['userSetting']=_0x9ee676;return _0x422549[_0x0976('0x1e')](0xc8)[_0x0976('0x20')](_0x57fda8);});}};exports[_0x0976('0x16d')]=function(_0x47abb8,_0x215000){var _0x477945={'offset':0x0},_0x3f77e3={'count':0x0,'rows':[]};Promise[_0x0976('0xfc')]()[_0x0976('0x27')](function(){if(!_0x47abb8[_0x0976('0x42')][_0x0976('0x3d')]&&!_0x47abb8[_0x0976('0x42')][_0x0976('0x16e')]&&!_0x47abb8[_0x0976('0x42')]['queues'])return[];return Promise['resolve']()[_0x0976('0x27')](function(){var _0x17a093=[];if(!_[_0x0976('0x8b')](_0x47abb8['query'][_0x0976('0x16e')])){_0x17a093['push'](db['Team'][_0x0976('0x8a')]({'attributes':['id','name'],'where':{'id':_0x47abb8[_0x0976('0x42')][_0x0976('0x16e')]}}));}if(!_['isEmpty'](_0x47abb8[_0x0976('0x42')]['queues'])){_0x17a093['push'](db[_0x0976('0xa5')][_0x0976('0x8a')]({'attributes':['id',_0x0976('0x33')],'type':_0x0976('0x16f'),'where':{'id':_0x47abb8[_0x0976('0x42')]['queues']}}));}return Promise[_0x0976('0x50')](_0x17a093);})[_0x0976('0x27')](function(_0x31b16c){var _0x55a400=_[_0x0976('0x170')](_0x31b16c)[_0x0976('0x87')](function(_0x27fb12){return _0x27fb12['getAgents']({'attributes':['id',_0x0976('0x33'),_0x0976('0x63'),'online'],'raw':!![]});});return Promise[_0x0976('0x50')](_0x55a400);})[_0x0976('0x27')](function(_0x22d1dd){var _0xaf7a69=_[_0x0976('0x170')](_0x22d1dd);if(!_0x47abb8[_0x0976('0x42')][_0x0976('0x3d')])return _0xaf7a69;if(_[_0x0976('0x8b')](_0xaf7a69)){return db[_0x0976('0x38')]['findAll']({'attributes':['id',_0x0976('0x33'),_0x0976('0x63'),_0x0976('0x9b')],'where':{'role':_0x0976('0x2d'),'$or':[db['sequelize'][_0x0976('0x40')](db[_0x0976('0x69')]['fn'](_0x0976('0x171'),db[_0x0976('0x69')][_0x0976('0x172')](_0x0976('0x33'))),{'$like':'%'+_0x47abb8['query'][_0x0976('0x3d')][_0x0976('0xa1')]()+'%'}),{'internal':{'$like':'%'+_0x47abb8['query'][_0x0976('0x3d')]+'%'}}]},'raw':!![]});}else{return _(_0xaf7a69)[_0x0976('0x170')]()[_0x0976('0x3d')](function(_0x36f304){return _0x36f304[_0x0976('0x33')][_0x0976('0xa1')]()['includes'](_0x47abb8[_0x0976('0x42')][_0x0976('0x3d')][_0x0976('0xa1')]())||_0x36f304[_0x0976('0x63')][_0x0976('0x173')]()[_0x0976('0x31')](_0x47abb8[_0x0976('0x42')]['filter']);})['value']();}})['then'](function(_0x387e25){var _0x2a2e86=_0x0976('0x33');var _0x46e7d3='asc';if(_0x47abb8[_0x0976('0x42')]['sort']){_0x46e7d3=_0x47abb8[_0x0976('0x42')][_0x0976('0xc8')][0x0]==='-'?'desc':_0x0976('0x174');_0x2a2e86=_0x46e7d3===_0x0976('0x174')?_0x47abb8[_0x0976('0x42')]['sort']:_0x47abb8[_0x0976('0x42')][_0x0976('0xc8')]['substring'](0x1);}return _(_0x387e25)[_0x0976('0x175')]('id')['orderBy']([function(_0x22af2a){return _0x2a2e86===_0x0976('0x33')?_0x22af2a[_0x2a2e86][_0x0976('0xa1')]():_0x22af2a[_0x2a2e86];}],[_0x46e7d3])['map'](function(_0x2dfd70){return _[_0x0976('0xc9')](_0x2dfd70,['id',_0x0976('0x33'),_0x0976('0x63'),_0x0976('0x9b')]);})[_0x0976('0x30')]();})['then'](function(_0x1a362f){return amiClient[_0x0976('0x176')](_0x0976('0x82'),_0x47abb8)[_0x0976('0x27')](function(_0x4be4af){if(_0x4be4af[_0x0976('0x1b')])throw new Error(_0x0976('0x177'));var _0x1adee1=_0x4be4af[_0x0976('0x178')];var _0x1f32e9=jayson['client'][_0x0976('0x14')]({'port':0x232c});return _0x1f32e9[_0x0976('0x176')](_0x0976('0x82'),_0x47abb8)[_0x0976('0x27')](function(_0x52d0e9){if(_0x52d0e9[_0x0976('0x1b')])throw new Error(_0x0976('0x179'));var _0x2c303f=_0x52d0e9[_0x0976('0x178')];return _[_0x0976('0x5b')]({},_0x2c303f,_0x1adee1);});})[_0x0976('0x27')](function(_0x5f3bcf){return _[_0x0976('0x87')](_0x1a362f,function(_0x3a367f){var _0x170855=_[_0x0976('0x32')](_0x5f3bcf[_0x0976('0x46')],['id',_0x3a367f['id']]);if(!_0x170855||!_0x3a367f['online']){_0x3a367f[_0x0976('0x1e')]='offline';}else if(_0x170855['voicePause']){_0x3a367f[_0x0976('0x1e')]=_0x0976('0xfe');}else{_0x3a367f[_0x0976('0x1e')]=_[_0x0976('0x31')]([_0x0976('0x17a'),_0x0976('0x17b'),_0x0976('0x17c'),'ringing',null,undefined],_0x170855[_0x0976('0x17d')])?'online':'busy';}return _0x3a367f;});});});})[_0x0976('0x27')](function(_0x3a73de){if(!_0x47abb8[_0x0976('0x42')][_0x0976('0xce')]('nolimit')){_0x477945['limit']=qs[_0x0976('0x23')](_0x47abb8[_0x0976('0x42')][_0x0976('0x23')]||0xa);_0x477945[_0x0976('0x21')]=qs[_0x0976('0x21')](_0x47abb8[_0x0976('0x42')][_0x0976('0x21')]);}_0x3f77e3[_0x0976('0x24')]=_0x3a73de['length'];_0x3f77e3[_0x0976('0x46')]=_0x477945['limit']?_0x3a73de[_0x0976('0x17e')](_0x477945[_0x0976('0x21')],_0x477945[_0x0976('0x21')]+_0x477945[_0x0976('0x23')]):_0x3a73de;return _0x3f77e3;})[_0x0976('0x27')](respondWithFilteredResult(_0x215000,_0x477945))[_0x0976('0x51')](handleError(_0x215000,null));};function get_open_tabs(_0x5d2c51,_0x5d1b9a){var _0x4c427a=_0x5d2c51[_0x0976('0x17f')](0x0)[_0x0976('0x180')]()+_0x5d2c51[_0x0976('0x17e')](0x1);var _0x14afc0={'type':db[_0x0976('0x8d')]['QueryTypes']['SELECT'],'raw':!![]};return new Promise(function(_0x3fc4f2,_0x221093){var _0x296a00=squel[_0x0976('0x181')]()[_0x0976('0x182')](_0x0976('0x183')+_0x4c427a+_0x0976('0x184'),'id')[_0x0976('0x182')](_0x0976('0x185'))[_0x0976('0x6c')](_0x0976('0x186')+_0x5d2c51+_0x0976('0x187'),'ui')[_0x0976('0x40')]('ui.UserId\x20=\x20?',_0x5d1b9a['id']);return db[_0x0976('0x69')]['query'](_0x296a00['toString'](),_0x14afc0)['then'](function(_0x455f2a){_0x5d1b9a[_0x4c427a+_0x0976('0x188')]=_0x455f2a;_0x3fc4f2(_0x455f2a);})['catch'](function(_0x456270){_0x221093(_0x456270);});});}
\ No newline at end of file
index 166874d..43bf374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf597=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','remove'];(function(_0xde214d,_0x43f6f9){var _0x2a7d36=function(_0x33e0ae){while(--_0x33e0ae){_0xde214d['push'](_0xde214d['shift']());}};_0x2a7d36(++_0x43f6f9);}(_0xf597,0x11c));var _0x7f59=function(_0x16bb33,_0x45c563){_0x16bb33=_0x16bb33-0x0;var _0x15b66a=_0xf597[_0x16bb33];return _0x15b66a;};'use strict';var EventEmitter=require(_0x7f59('0x0'));var User=require(_0x7f59('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x7f59('0x2')};function emitEvent(_0x5b84b0){return function(_0x4efe3a,_0x5f564f,_0x3ed741){UserEvents['emit'](_0x5b84b0+':'+_0x4efe3a['id'],_0x4efe3a);UserEvents[_0x7f59('0x3')](_0x5b84b0,_0x4efe3a);_0x3ed741(null);};}for(var e in events){if(events[_0x7f59('0x4')](e)){var event=events[e];User[_0x7f59('0x5')](e,emitEvent(event));}}module[_0x7f59('0x6')]=UserEvents;
\ No newline at end of file
+var _0xff62=['../../mysqldb','save','emit','hasOwnProperty','exports'];(function(_0x51049c,_0x301737){var _0x3a322b=function(_0x2ed90e){while(--_0x2ed90e){_0x51049c['push'](_0x51049c['shift']());}};_0x3a322b(++_0x301737);}(_0xff62,0x168));var _0x2ff6=function(_0x590ee2,_0x1e8622){_0x590ee2=_0x590ee2-0x0;var _0x2ac46e=_0xff62[_0x590ee2];return _0x2ac46e;};'use strict';var EventEmitter=require('events');var User=require(_0x2ff6('0x0'))['db']['User'];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2ff6('0x1'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4f5532){return function(_0x5f51d3,_0x2da3f0,_0x380a03){UserEvents['emit'](_0x4f5532+':'+_0x5f51d3['id'],_0x5f51d3);UserEvents[_0x2ff6('0x2')](_0x4f5532,_0x5f51d3);_0x380a03(null);};}for(var e in events){if(events[_0x2ff6('0x3')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x2ff6('0x4')]=UserEvents;
\ No newline at end of file
index 6562568..dcb2b82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x383d=['QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findOne','PAUSE','channel','MemberReport','isArray','map','chatPause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','forEach','Status','setDataValue','util','md5','moment','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','options','join','StopMixMonitor','wav','WAV','gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','name','concat','catch','exports','define','User','users','utf8','utf8_bin','undefined','UserProfile','userProfileId','privacyEnabled','updateMd5Password','updatePassword','resolve','find','changed','userSetting','createUserSetting','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','from','salt','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','client','http','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','manual','voice'];(function(_0x25b0c0,_0x177e85){var _0x5e3a8c=function(_0x20fe14){while(--_0x20fe14){_0x25b0c0['push'](_0x25b0c0['shift']());}};_0x5e3a8c(++_0x177e85);}(_0x383d,0x86));var _0xd383=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x383d[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require(_0xd383('0x0'));var md5=require(_0xd383('0x1'));var moment=require(_0xd383('0x2'));var _=require('lodash');var jayson=require(_0xd383('0x3'));var attributes=require(_0xd383('0x4'));var authTypes=[_0xd383('0x5')];var validatePresenceOf=function(_0x3439dd){return _0x3439dd&&_0x3439dd[_0xd383('0x6')];};var getChanSpyApplications=function(_0x43ab08,_0x5a0b1d,_0xc64e9b){var _0x30ba82={'context':_0x43ab08[_0xd383('0x7')]||_0xd383('0x8'),'type':_0xd383('0x9'),'isApp':![],'UserId':_0x43ab08['id']};var _0x5d4e0f=[];for(var _0x55478b=0x0,_0x19c4aa=0x1;_0x55478b<_0xc64e9b[_0xd383('0x6')];_0x55478b++,_0x19c4aa=0x1){var _0x59baad={'exten':util[_0xd383('0xa')](_0xd383('0xb'),_0xc64e9b[_0x55478b][_0xd383('0xc')],_0x5a0b1d),'ChanSpyId':_0xc64e9b[_0x55478b]['id']};_0x5d4e0f[_0xd383('0xd')](_[_0xd383('0xe')]({'app':_0xd383('0xf'),'appdata':util['format'](_0xd383('0x10'),_0xd383('0x11')),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));if(_0xc64e9b[_0x55478b][_0xd383('0x12')]){_0x5d4e0f[_0xd383('0xd')](_['merge']({'app':_0xd383('0x13'),'appdata':util[_0xd383('0xa')](_0xd383('0x14'),_0xc64e9b[_0x55478b][_0xd383('0x15')]),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));}if(_0xc64e9b[_0x55478b]['auth']){_0x5d4e0f[_0xd383('0xd')](_['merge']({'app':_0xd383('0x16'),'appdata':_0xc64e9b[_0x55478b][_0xd383('0x17')],'priority':_0x19c4aa++},_0x30ba82,_0x59baad));}_0x5d4e0f[_0xd383('0xd')](_[_0xd383('0xe')]({'app':_0xd383('0x18'),'appdata':util[_0xd383('0xa')]('SIP/%s,%s',_0x43ab08['name'],_0xc64e9b[_0x55478b][_0xd383('0x19')]?_0xc64e9b[_0x55478b][_0xd383('0x19')][_0xd383('0x1a')](''):''),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));if(_0xc64e9b[_0x55478b][_0xd383('0x12')]){_0x5d4e0f[_0xd383('0xd')](_[_0xd383('0xe')]({'app':_0xd383('0x1b'),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));}}return _0x5d4e0f;};var getUserApplications=function(_0x808fe7,_0x59e8d1){var _0x42a290=[_0xd383('0x1c'),_0xd383('0x1d'),_0xd383('0x1e')];var _0x213f72={'context':_0x808fe7[_0xd383('0x7')]||'from-sip','exten':_0x59e8d1,'type':_0xd383('0x9'),'isApp':![],'UserId':_0x808fe7['id']};var _0x514261=[{'app':_0xd383('0xf'),'appdata':'CDR(type)=internal'}];if(_0x808fe7[_0xd383('0x1f')]&&_[_0xd383('0x20')](_0x42a290,_0x808fe7['extensionMonitor'])){_0x514261[_0xd383('0xd')]({'app':_0xd383('0xf'),'appdata':_0xd383('0x21')});_0x514261['push']({'app':'Set','appdata':util[_0xd383('0xa')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x808fe7['extensionMonitor'])});_0x514261[_0xd383('0xd')]({'app':'Dial','appdata':util[_0xd383('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x808fe7['name'])});}else{_0x514261['push']({'app':_0xd383('0x22'),'appdata':util[_0xd383('0xa')](_0xd383('0x23'),_0x808fe7['name'])});}_0x514261[_0xd383('0xd')]({'app':_0xd383('0x24')});for(var _0x252f79=0x0;_0x252f79<_0x514261[_0xd383('0x6')];_0x252f79++){_0x514261[_0x252f79][_0xd383('0x25')]=_0x252f79+0x1;_0x514261[_0x252f79]=_[_0xd383('0x26')](_0x514261[_0x252f79],_0x213f72);}return _0x514261;};var getChanSpyPromise=function(_0x13d395,_0x208247){return new BPromise(function(_0x1981db,_0x4f2ec6){return _0x13d395[_0xd383('0x27')][_0xd383('0x28')]()[_0xd383('0x29')](function(_0x3ab284){if(_0x3ab284){var _0x138d81=getChanSpyApplications(_0x208247,_0x208247[_0xd383('0x2a')],_0x3ab284);if(_0x208247[_0xd383('0x2a')]!=_0x208247[_0xd383('0x2b')]){_0x138d81=_0x138d81[_0xd383('0x2c')](getChanSpyApplications(_0x208247,_0x208247[_0xd383('0x2b')],_0x3ab284));}return _0x1981db(_0x138d81);}return _0x1981db([]);})[_0xd383('0x2d')](function(_0x12298f){_0x4f2ec6(_0x12298f);});});};module[_0xd383('0x2e')]=function(_0x4284dd){var _0x15b20b=_0x4284dd['models'];return _0x4284dd[_0xd383('0x2f')](_0xd383('0x30'),attributes,{'tableName':_0xd383('0x31'),'charset':_0xd383('0x32'),'collate':_0xd383('0x33'),'hooks':{'beforeCreate':function(_0x18f305,_0x2f2d1c,_0x3bb4b5){var _0x2aea0b=typeof _0x18f305['userProfileId']===_0xd383('0x34')?BPromise['resolve'](null):_0x15b20b[_0xd383('0x35')]['find']({'where':{'id':_0x18f305[_0xd383('0x36')]}});_0x2aea0b['then'](function(_0x15d06b){if(_0x15d06b){_0x18f305[_0xd383('0x37')]=_0x15d06b['privacyEnabled'];}})[_0xd383('0x29')](function(){_0x18f305[_0xd383('0x38')]();_0x18f305[_0xd383('0x39')](_0x3bb4b5);})[_0xd383('0x2d')](function(_0x15b65a){_0x3bb4b5(_0x15b65a);});},'beforeUpdate':function(_0x2f6bdc,_0x16a816,_0x2d3f88){Promise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(_0x2f6bdc['changed'](_0xd383('0x36'))===![])return;return _0x15b20b[_0xd383('0x35')][_0xd383('0x3b')]({'where':{'id':_0x2f6bdc[_0xd383('0x36')]}})[_0xd383('0x29')](function(_0x3262c6){if(_0x3262c6)_0x2f6bdc[_0xd383('0x37')]=_0x3262c6[_0xd383('0x37')];return;});})[_0xd383('0x29')](function(){if(_0x2f6bdc[_0xd383('0x3c')](_0xd383('0x17'))){_0x2f6bdc['updateMd5Password']();return _0x2f6bdc[_0xd383('0x39')](_0x2d3f88);}_0x2d3f88();})[_0xd383('0x2d')](function(_0x4345ec){_0x2d3f88(_0x4345ec);});},'afterCreate':function(_0x3762c5,_0xc6ae65,_0x50cc11){var _0x45161e=getUserApplications(_0x3762c5,_0x3762c5[_0xd383('0x2a')]);if(_0x3762c5['internal']!=_0x3762c5['name']){_0x45161e=_0x45161e[_0xd383('0x2c')](getUserApplications(_0x3762c5,_0x3762c5[_0xd383('0x2b')]));}return Promise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(!_0x3762c5[_0xd383('0x3d')]){return _0x3762c5[_0xd383('0x3e')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0xd383('0x29')](function(){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0x45161e);})[_0xd383('0x29')](function(){if(_0x3762c5[_0xd383('0x11')]){return getChanSpyPromise(_0x15b20b,_0x3762c5);}})[_0xd383('0x29')](function(_0x2d109a){if(_0x2d109a&&_0x2d109a[_0xd383('0x6')]){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0x2d109a);}})[_0xd383('0x29')](function(){_0x50cc11();})[_0xd383('0x2d')](function(_0x57f81a){_0x50cc11(_0x57f81a);});},'afterUpdate':function(_0x4f1d94,_0x4850d7,_0x25a8d6){return BPromise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(_0x4f1d94['changed'](_0xd383('0x11'))||_0x4f1d94[_0xd383('0x3c')](_0xd383('0x7'))){return _0x15b20b[_0xd383('0x3f')]['destroy']({'where':{'UserId':_0x4f1d94['id'],'type':_0xd383('0x9'),'ChanSpyId':{'$ne':null}}})[_0xd383('0x29')](function(){if(_0x4f1d94[_0xd383('0x11')]){return getChanSpyPromise(_0x15b20b,_0x4f1d94)[_0xd383('0x29')](function(_0x457226){if(_0x457226&&_0x457226['length']){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0x457226);}});}});}})['then'](function(){if(_0x4f1d94[_0xd383('0x3c')](_0xd383('0x1f'))||_0x4f1d94[_0xd383('0x3c')]('context')){return _0x15b20b[_0xd383('0x3f')]['destroy']({'where':{'UserId':_0x4f1d94['id'],'type':_0xd383('0x9'),'ChanSpyId':null}})[_0xd383('0x29')](function(){var _0xb3f550=getUserApplications(_0x4f1d94,_0x4f1d94['internal']);if(_0x4f1d94['internal']!=_0x4f1d94[_0xd383('0x2b')]){_0xb3f550=_0xb3f550[_0xd383('0x2c')](getUserApplications(_0x4f1d94,_0x4f1d94['name']));}return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0xb3f550);});}})[_0xd383('0x29')](function(){_0x25a8d6();})[_0xd383('0x2d')](function(_0x5415fd){_0x25a8d6(_0x5415fd);});},'afterDestroy':function(_0x58ccbb){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x41')]({'where':{'UserId':_0x58ccbb['id'],'type':_0xd383('0x9')}});}},'instanceMethods':{'authenticate':function(_0x41bbc6,_0x2df7ef){if(!_0x2df7ef){return this[_0xd383('0x17')]===this[_0xd383('0x42')](_0x41bbc6);}var _0x1c21e9=this;this[_0xd383('0x42')](_0x41bbc6,function(_0x10adc2,_0x1cf984){if(_0x10adc2){_0x2df7ef(_0x10adc2);}if(_0x1c21e9[_0xd383('0x17')]===_0x1cf984){_0x2df7ef(null,!![]);}else{_0x2df7ef(null,![]);}});},'makeSalt':function(_0xb0716a,_0x557de7){var _0x1f3b92=0x10;if(typeof arguments[0x0]===_0xd383('0x43')){_0x557de7=arguments[0x0];_0xb0716a=_0x1f3b92;}else if(typeof arguments[0x1]==='function'){_0x557de7=arguments[0x1];}else{throw new Error(_0xd383('0x44'));}if(!_0xb0716a){_0xb0716a=_0x1f3b92;}return crypto[_0xd383('0x45')](_0xb0716a,function(_0x2ab6ff,_0xdfd18){if(_0x2ab6ff){_0x557de7(_0x2ab6ff);}return _0x557de7(null,_0xdfd18[_0xd383('0x46')](_0xd383('0x47')));});},'encryptPassword':function(_0x2252aa,_0x566d21){if(!_0x2252aa||!this['salt']){return _0x566d21?_0x566d21(null):null;}var _0x1b506d=0x2710;var _0x24458e=0x40;var _0x3dc478=Buffer[_0xd383('0x48')](this[_0xd383('0x49')],_0xd383('0x47'));if(!_0x566d21){return crypto['pbkdf2Sync'](_0x2252aa,_0x3dc478,_0x1b506d,_0x24458e,_0xd383('0x4a'))[_0xd383('0x46')](_0xd383('0x47'));}return crypto[_0xd383('0x4b')](_0x2252aa,_0x3dc478,_0x1b506d,_0x24458e,_0xd383('0x4a'),function(_0x124200,_0x121ba0){if(_0x124200){_0x566d21(_0x124200);}return _0x566d21(null,_0x121ba0['toString'](_0xd383('0x47')));});},'updatePassword':function(_0x10ce20){if(!this[_0xd383('0x17')]){return _0x10ce20(null);}if(!validatePresenceOf(this[_0xd383('0x17')])&&authTypes[_0xd383('0x4c')](this[_0xd383('0x4d')])===-0x1){_0x10ce20(new Error(_0xd383('0x4e')));}var _0x375a48=this;this[_0xd383('0x4f')](function(_0x2aebda,_0x4f0691){if(_0x2aebda){return _0x10ce20(_0x2aebda);}_0x375a48[_0xd383('0x49')]=_0x4f0691;_0x375a48[_0xd383('0x42')](_0x375a48['password'],function(_0x55352e,_0x5d260b){if(_0x55352e){_0x10ce20(_0x55352e);}_0x375a48['password']=_0x5d260b;_0x10ce20(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xd383('0x2b')]+_0xd383('0x50')+this[_0xd383('0x17')]);return this['md5secret'];},'getRealtimeData':function(){var _0x243d73={'id':this['id']};var _0x3cbf92=jayson[_0xd383('0x51')][_0xd383('0x52')]({'port':0x232a});var _0x3bf42f=jayson['client'][_0xd383('0x52')]({'port':0x232c});var _0x23ae84={};var _0x1a4764={};return _0x3cbf92[_0xd383('0x53')](_0xd383('0x54'),_0x243d73)['then'](function(_0x2812d0){if(_0x2812d0[_0xd383('0x55')]){throw new Error(_0xd383('0x56'));}_0x23ae84=_0x2812d0['result'];return _0x3bf42f[_0xd383('0x53')](_0xd383('0x54'),_0x243d73);})[_0xd383('0x29')](function(_0x49ecae){if(_0x49ecae[_0xd383('0x55')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x1a4764=_0x49ecae[_0xd383('0x57')];var _0x5304c2=_[_0xd383('0xe')]({},_0x23ae84,_0x1a4764);return _0x5304c2;})['catch'](function(_0x375dbb){throw _0x375dbb;});},'unpause':function(_0x571c95,_0x77c975=_0xd383('0x58')){var _0x123424=this;var _0x4e5d62={};return Promise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(!_0x571c95||_0x571c95===_0xd383('0x59')&&_0x77c975===_0xd383('0x58')){var _0x24c61a=jayson['client'][_0xd383('0x52')]({'port':0x232a});return _0x24c61a[_0xd383('0x53')](_0xd383('0x5a'),{'id':_0x123424['id'],'name':_0x123424[_0xd383('0x2b')],'pause':![]})['then'](function(_0x324f01){if(_0x324f01[_0xd383('0x55')]){throw new Error(util[_0xd383('0xa')](_0xd383('0x5b'),_0x123424['id'],_0x123424[_0xd383('0x2b')]));}return _0x324f01[_0xd383('0x57')][_0xd383('0x5c')];});}})[_0xd383('0x29')](function(){if(!_0x571c95||_0x571c95===_0xd383('0x59')){return _0x15b20b[_0xd383('0x5d')][_0xd383('0x5e')]({'paused':0x0},{'where':{'UserId':_0x123424['id']},'individualHooks':!![]});}})[_0xd383('0x29')](function(){var _0x247df4=!_0x571c95?'findAll':_0xd383('0x5f');var _0x2c8ce4={'membername':_0x123424[_0xd383('0x2b')],'type':_0xd383('0x60'),'exitAt':null};if(_0x571c95){_0x2c8ce4[_0xd383('0x61')]=_0x571c95;}return _0x15b20b[_0xd383('0x62')][_0x247df4]({'where':_0x2c8ce4});})[_0xd383('0x29')](function(_0x3c2011){if(_0x3c2011){var _0x1b9b07=Array[_0xd383('0x63')](_0x3c2011)?_0x3c2011:[_0x3c2011];var _0x4213ae=_0x1b9b07[_0xd383('0x64')](function(_0x547b57){return _0x547b57[_0xd383('0x5e')]({'exitAt':moment()[_0xd383('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x77c975});});return Promise['all'](_0x4213ae);}})[_0xd383('0x29')](function(){if(!_0x571c95){_0x4e5d62['voicePause']=![];_0x4e5d62['mailPause']=![];_0x4e5d62[_0xd383('0x65')]=![];_0x4e5d62[_0xd383('0x66')]=![];_0x4e5d62[_0xd383('0x67')]=![];_0x4e5d62[_0xd383('0x68')]=![];_0x4e5d62[_0xd383('0x69')]=![];}else{_0x4e5d62[_0x571c95+_0xd383('0x6a')]=![];}return _0x123424[_0xd383('0x6b')]();})[_0xd383('0x29')](function(_0x423a53){var _0x5036c8=require(_0xd383('0x6c'));var _0x1c5326=_0x5036c8['getChannels']();_0x1c5326[_0xd383('0x6d')](function(_0x13aff0){var _0x2cc77f=_0x13aff0+_0xd383('0x6e');_0x123424[_0xd383('0x6f')]([_0x2cc77f],_0x423a53[_0x2cc77f]);});return _0x123424[_0xd383('0x5e')](_0x4e5d62);})[_0xd383('0x2d')](function(_0x200d6c){throw _0x200d6c;});}}});};
\ No newline at end of file
+var _0xf961=['salt','from','toString','pbkdf2','sha1','provider','Invalid\x20password','md5secret','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','voice','manual','message','UserVoiceQueueRt','findOne','PAUSE','channel','MemberReport','isArray','map','update','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','faxPause','smsPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','setDataValue','bluebird','crypto','util','md5','lodash','jayson/promise','./user.attributes','length','context','from-sip','system','format','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','priority','defaults','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8_bin','userProfileId','undefined','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','resolve','changed','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','base64'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0xf961,0x1cf));var _0x1f96=function(_0x5834bc,_0x3d4801){_0x5834bc=_0x5834bc-0x0;var _0x3e183a=_0xf961[_0x5834bc];return _0x3e183a;};'use strict';var BPromise=require(_0x1f96('0x0'));var crypto=require(_0x1f96('0x1'));var util=require(_0x1f96('0x2'));var md5=require(_0x1f96('0x3'));var moment=require('moment');var _=require(_0x1f96('0x4'));var jayson=require(_0x1f96('0x5'));var attributes=require(_0x1f96('0x6'));var authTypes=['google'];var validatePresenceOf=function(_0x3d032b){return _0x3d032b&&_0x3d032b[_0x1f96('0x7')];};var getChanSpyApplications=function(_0x1f5109,_0x518062,_0x40caad){var _0x53e4d1={'context':_0x1f5109[_0x1f96('0x8')]||_0x1f96('0x9'),'type':_0x1f96('0xa'),'isApp':![],'UserId':_0x1f5109['id']};var _0x848382=[];for(var _0x333fb3=0x0,_0x322068=0x1;_0x333fb3<_0x40caad['length'];_0x333fb3++,_0x322068=0x1){var _0x523b60={'exten':util[_0x1f96('0xb')]('%s%s',_0x40caad[_0x333fb3][_0x1f96('0xc')],_0x518062),'ChanSpyId':_0x40caad[_0x333fb3]['id']};_0x848382[_0x1f96('0xd')](_[_0x1f96('0xe')]({'app':_0x1f96('0xf'),'appdata':util['format'](_0x1f96('0x10'),_0x1f96('0x11')),'priority':_0x322068++},_0x53e4d1,_0x523b60));if(_0x40caad[_0x333fb3][_0x1f96('0x12')]){_0x848382['push'](_[_0x1f96('0xe')]({'app':_0x1f96('0x13'),'appdata':util[_0x1f96('0xb')](_0x1f96('0x14'),_0x40caad[_0x333fb3][_0x1f96('0x15')]),'priority':_0x322068++},_0x53e4d1,_0x523b60));}if(_0x40caad[_0x333fb3][_0x1f96('0x16')]){_0x848382['push'](_[_0x1f96('0xe')]({'app':_0x1f96('0x17'),'appdata':_0x40caad[_0x333fb3][_0x1f96('0x18')],'priority':_0x322068++},_0x53e4d1,_0x523b60));}_0x848382[_0x1f96('0xd')](_['merge']({'app':_0x1f96('0x19'),'appdata':util[_0x1f96('0xb')](_0x1f96('0x1a'),_0x1f5109[_0x1f96('0x1b')],_0x40caad[_0x333fb3][_0x1f96('0x1c')]?_0x40caad[_0x333fb3][_0x1f96('0x1c')][_0x1f96('0x1d')](''):''),'priority':_0x322068++},_0x53e4d1,_0x523b60));if(_0x40caad[_0x333fb3][_0x1f96('0x12')]){_0x848382['push'](_[_0x1f96('0xe')]({'app':_0x1f96('0x1e'),'priority':_0x322068++},_0x53e4d1,_0x523b60));}}return _0x848382;};var getUserApplications=function(_0x4f8942,_0x1569ca){var _0x23bf6a=[_0x1f96('0x1f'),_0x1f96('0x20'),_0x1f96('0x21')];var _0x112c35={'context':_0x4f8942['context']||_0x1f96('0x9'),'exten':_0x1569ca,'type':'system','isApp':![],'UserId':_0x4f8942['id']};var _0x41254a=[{'app':_0x1f96('0xf'),'appdata':_0x1f96('0x22')}];if(_0x4f8942[_0x1f96('0x23')]&&_['includes'](_0x23bf6a,_0x4f8942[_0x1f96('0x23')])){_0x41254a[_0x1f96('0xd')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x41254a[_0x1f96('0xd')]({'app':_0x1f96('0xf'),'appdata':util[_0x1f96('0xb')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x4f8942[_0x1f96('0x23')])});_0x41254a[_0x1f96('0xd')]({'app':_0x1f96('0x24'),'appdata':util[_0x1f96('0xb')](_0x1f96('0x25'),_0x4f8942[_0x1f96('0x1b')])});}else{_0x41254a[_0x1f96('0xd')]({'app':_0x1f96('0x24'),'appdata':util['format']('SIP/%s,,tTxX',_0x4f8942['name'])});}_0x41254a['push']({'app':'Hangup'});for(var _0x2f2d60=0x0;_0x2f2d60<_0x41254a[_0x1f96('0x7')];_0x2f2d60++){_0x41254a[_0x2f2d60][_0x1f96('0x26')]=_0x2f2d60+0x1;_0x41254a[_0x2f2d60]=_[_0x1f96('0x27')](_0x41254a[_0x2f2d60],_0x112c35);}return _0x41254a;};var getChanSpyPromise=function(_0x5d39db,_0x2f9b5c){return new BPromise(function(_0x1cd885,_0x29e1d2){return _0x5d39db['VoiceChanSpy'][_0x1f96('0x28')]()[_0x1f96('0x29')](function(_0x5358f4){if(_0x5358f4){var _0x5ddb20=getChanSpyApplications(_0x2f9b5c,_0x2f9b5c[_0x1f96('0x2a')],_0x5358f4);if(_0x2f9b5c[_0x1f96('0x2a')]!=_0x2f9b5c[_0x1f96('0x1b')]){_0x5ddb20=_0x5ddb20[_0x1f96('0x2b')](getChanSpyApplications(_0x2f9b5c,_0x2f9b5c[_0x1f96('0x1b')],_0x5358f4));}return _0x1cd885(_0x5ddb20);}return _0x1cd885([]);})[_0x1f96('0x2c')](function(_0x5507a7){_0x29e1d2(_0x5507a7);});});};module[_0x1f96('0x2d')]=function(_0x504120){var _0x3d20aa=_0x504120[_0x1f96('0x2e')];return _0x504120[_0x1f96('0x2f')](_0x1f96('0x30'),attributes,{'tableName':_0x1f96('0x31'),'charset':'utf8','collate':_0x1f96('0x32'),'hooks':{'beforeCreate':function(_0x3ae612,_0x5ce954,_0x17810e){var _0x2e18ad=typeof _0x3ae612[_0x1f96('0x33')]===_0x1f96('0x34')?BPromise['resolve'](null):_0x3d20aa[_0x1f96('0x35')][_0x1f96('0x36')]({'where':{'id':_0x3ae612[_0x1f96('0x33')]}});_0x2e18ad['then'](function(_0x136997){if(_0x136997){_0x3ae612[_0x1f96('0x37')]=_0x136997[_0x1f96('0x37')];}})[_0x1f96('0x29')](function(){_0x3ae612[_0x1f96('0x38')]();_0x3ae612[_0x1f96('0x39')](_0x17810e);})[_0x1f96('0x2c')](function(_0x1cc45a){_0x17810e(_0x1cc45a);});},'beforeUpdate':function(_0x5bba8f,_0x394c5a,_0x2aac53){Promise[_0x1f96('0x3a')]()[_0x1f96('0x29')](function(){if(_0x5bba8f[_0x1f96('0x3b')](_0x1f96('0x33'))===![])return;return _0x3d20aa[_0x1f96('0x35')][_0x1f96('0x36')]({'where':{'id':_0x5bba8f[_0x1f96('0x33')]}})[_0x1f96('0x29')](function(_0x3c17c0){if(_0x3c17c0)_0x5bba8f[_0x1f96('0x37')]=_0x3c17c0[_0x1f96('0x37')];return;});})[_0x1f96('0x29')](function(){if(_0x5bba8f['changed'](_0x1f96('0x18'))){_0x5bba8f[_0x1f96('0x38')]();return _0x5bba8f['updatePassword'](_0x2aac53);}_0x2aac53();})['catch'](function(_0xa97e4c){_0x2aac53(_0xa97e4c);});},'afterCreate':function(_0x40f93c,_0x52815e,_0x5d8fce){var _0x32ed0a=getUserApplications(_0x40f93c,_0x40f93c[_0x1f96('0x2a')]);if(_0x40f93c[_0x1f96('0x2a')]!=_0x40f93c[_0x1f96('0x1b')]){_0x32ed0a=_0x32ed0a[_0x1f96('0x2b')](getUserApplications(_0x40f93c,_0x40f93c[_0x1f96('0x1b')]));}return Promise['resolve']()[_0x1f96('0x29')](function(){if(!_0x40f93c['userSetting']){return _0x40f93c['createUserSetting']({'clientSideLoggingLevel':_0x1f96('0x3c'),'clientSideLoggingEnabled':![]});}})[_0x1f96('0x29')](function(){return _0x3d20aa[_0x1f96('0x3d')][_0x1f96('0x3e')](_0x32ed0a);})[_0x1f96('0x29')](function(){if(_0x40f93c['chanspy']){return getChanSpyPromise(_0x3d20aa,_0x40f93c);}})[_0x1f96('0x29')](function(_0x5101ea){if(_0x5101ea&&_0x5101ea['length']){return _0x3d20aa[_0x1f96('0x3d')][_0x1f96('0x3e')](_0x5101ea);}})[_0x1f96('0x29')](function(){_0x5d8fce();})[_0x1f96('0x2c')](function(_0x515e1c){_0x5d8fce(_0x515e1c);});},'afterUpdate':function(_0x2c8ffe,_0x199532,_0x318415){return BPromise['resolve']()['then'](function(){if(_0x2c8ffe[_0x1f96('0x3b')](_0x1f96('0x11'))||_0x2c8ffe[_0x1f96('0x3b')](_0x1f96('0x8'))){return _0x3d20aa[_0x1f96('0x3d')]['destroy']({'where':{'UserId':_0x2c8ffe['id'],'type':_0x1f96('0xa'),'ChanSpyId':{'$ne':null}}})[_0x1f96('0x29')](function(){if(_0x2c8ffe[_0x1f96('0x11')]){return getChanSpyPromise(_0x3d20aa,_0x2c8ffe)[_0x1f96('0x29')](function(_0x1eb316){if(_0x1eb316&&_0x1eb316['length']){return _0x3d20aa[_0x1f96('0x3d')][_0x1f96('0x3e')](_0x1eb316);}});}});}})[_0x1f96('0x29')](function(){if(_0x2c8ffe[_0x1f96('0x3b')](_0x1f96('0x23'))||_0x2c8ffe[_0x1f96('0x3b')](_0x1f96('0x8'))){return _0x3d20aa[_0x1f96('0x3d')][_0x1f96('0x3f')]({'where':{'UserId':_0x2c8ffe['id'],'type':'system','ChanSpyId':null}})[_0x1f96('0x29')](function(){var _0x5675d=getUserApplications(_0x2c8ffe,_0x2c8ffe[_0x1f96('0x2a')]);if(_0x2c8ffe[_0x1f96('0x2a')]!=_0x2c8ffe[_0x1f96('0x1b')]){_0x5675d=_0x5675d[_0x1f96('0x2b')](getUserApplications(_0x2c8ffe,_0x2c8ffe[_0x1f96('0x1b')]));}return _0x3d20aa[_0x1f96('0x3d')][_0x1f96('0x3e')](_0x5675d);});}})[_0x1f96('0x29')](function(){_0x318415();})[_0x1f96('0x2c')](function(_0x4f01d3){_0x318415(_0x4f01d3);});},'afterDestroy':function(_0x3683c9){return _0x3d20aa['VoiceExtension'][_0x1f96('0x3f')]({'where':{'UserId':_0x3683c9['id'],'type':_0x1f96('0xa')}});}},'instanceMethods':{'authenticate':function(_0x3bcf8a,_0x182a1e){if(!_0x182a1e){return this[_0x1f96('0x18')]===this['encryptPassword'](_0x3bcf8a);}var _0x3b26fe=this;this[_0x1f96('0x40')](_0x3bcf8a,function(_0x101eaf,_0x89220d){if(_0x101eaf){_0x182a1e(_0x101eaf);}if(_0x3b26fe[_0x1f96('0x18')]===_0x89220d){_0x182a1e(null,!![]);}else{_0x182a1e(null,![]);}});},'makeSalt':function(_0x1fa760,_0x4fe106){var _0x3047d2=0x10;if(typeof arguments[0x0]===_0x1f96('0x41')){_0x4fe106=arguments[0x0];_0x1fa760=_0x3047d2;}else if(typeof arguments[0x1]===_0x1f96('0x41')){_0x4fe106=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x1fa760){_0x1fa760=_0x3047d2;}return crypto['randomBytes'](_0x1fa760,function(_0x3f3f81,_0x260b67){if(_0x3f3f81){_0x4fe106(_0x3f3f81);}return _0x4fe106(null,_0x260b67['toString'](_0x1f96('0x42')));});},'encryptPassword':function(_0x504746,_0x941fb8){if(!_0x504746||!this[_0x1f96('0x43')]){return _0x941fb8?_0x941fb8(null):null;}var _0x58be70=0x2710;var _0x443e74=0x40;var _0x4c715d=Buffer[_0x1f96('0x44')](this['salt'],_0x1f96('0x42'));if(!_0x941fb8){return crypto['pbkdf2Sync'](_0x504746,_0x4c715d,_0x58be70,_0x443e74,'sha1')[_0x1f96('0x45')]('base64');}return crypto[_0x1f96('0x46')](_0x504746,_0x4c715d,_0x58be70,_0x443e74,_0x1f96('0x47'),function(_0x142d4a,_0x5d18da){if(_0x142d4a){_0x941fb8(_0x142d4a);}return _0x941fb8(null,_0x5d18da[_0x1f96('0x45')](_0x1f96('0x42')));});},'updatePassword':function(_0x45c236){if(!this['password']){return _0x45c236(null);}if(!validatePresenceOf(this[_0x1f96('0x18')])&&authTypes['indexOf'](this[_0x1f96('0x48')])===-0x1){_0x45c236(new Error(_0x1f96('0x49')));}var _0x31cc02=this;this['makeSalt'](function(_0x57b42c,_0x54d00d){if(_0x57b42c){return _0x45c236(_0x57b42c);}_0x31cc02['salt']=_0x54d00d;_0x31cc02['encryptPassword'](_0x31cc02[_0x1f96('0x18')],function(_0x3d72d5,_0x893d7c){if(_0x3d72d5){_0x45c236(_0x3d72d5);}_0x31cc02[_0x1f96('0x18')]=_0x893d7c;_0x45c236(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x1f96('0x1b')]+':asterisk:'+this[_0x1f96('0x18')]);return this[_0x1f96('0x4a')];},'getRealtimeData':function(){var _0x393bdb={'id':this['id']};var _0x42e95=jayson[_0x1f96('0x4b')][_0x1f96('0x4c')]({'port':0x232a});var _0x5c206d=jayson[_0x1f96('0x4b')][_0x1f96('0x4c')]({'port':0x232c});var _0xbbb169={};var _0xda9a64={};return _0x42e95[_0x1f96('0x4d')](_0x1f96('0x4e'),_0x393bdb)[_0x1f96('0x29')](function(_0x158f3a){if(_0x158f3a[_0x1f96('0x3c')]){throw new Error(_0x1f96('0x4f'));}_0xbbb169=_0x158f3a[_0x1f96('0x50')];return _0x5c206d[_0x1f96('0x4d')](_0x1f96('0x4e'),_0x393bdb);})[_0x1f96('0x29')](function(_0x1593b1){if(_0x1593b1[_0x1f96('0x3c')]){throw new Error(_0x1f96('0x51'));}_0xda9a64=_0x1593b1[_0x1f96('0x50')];var _0x27318f=_[_0x1f96('0xe')]({},_0xbbb169,_0xda9a64);return _0x27318f;})['catch'](function(_0x22cedc){throw _0x22cedc;});},'unpause':function(_0x4ed957,_0x551a56='manual'){var _0x581dd6=this;var _0x5561a2={};return Promise[_0x1f96('0x3a')]()[_0x1f96('0x29')](function(){if(!_0x4ed957||_0x4ed957===_0x1f96('0x52')&&_0x551a56===_0x1f96('0x53')){var _0x531291=jayson[_0x1f96('0x4b')][_0x1f96('0x4c')]({'port':0x232a});return _0x531291[_0x1f96('0x4d')]('QueuePause',{'id':_0x581dd6['id'],'name':_0x581dd6[_0x1f96('0x1b')],'pause':![]})[_0x1f96('0x29')](function(_0x34613f){if(_0x34613f[_0x1f96('0x3c')]){throw new Error(util[_0x1f96('0xb')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x581dd6['id'],_0x581dd6[_0x1f96('0x1b')]));}return _0x34613f['result'][_0x1f96('0x54')];});}})['then'](function(){if(!_0x4ed957||_0x4ed957===_0x1f96('0x52')){return _0x3d20aa[_0x1f96('0x55')]['update']({'paused':0x0},{'where':{'UserId':_0x581dd6['id']},'individualHooks':!![]});}})[_0x1f96('0x29')](function(){var _0x26e62a=!_0x4ed957?_0x1f96('0x28'):_0x1f96('0x56');var _0x31bf77={'membername':_0x581dd6[_0x1f96('0x1b')],'type':_0x1f96('0x57'),'exitAt':null};if(_0x4ed957){_0x31bf77[_0x1f96('0x58')]=_0x4ed957;}return _0x3d20aa[_0x1f96('0x59')][_0x26e62a]({'where':_0x31bf77});})[_0x1f96('0x29')](function(_0x25b047){if(_0x25b047){var _0x383b3a=Array[_0x1f96('0x5a')](_0x25b047)?_0x25b047:[_0x25b047];var _0x3811f4=_0x383b3a[_0x1f96('0x5b')](function(_0x3e2c7a){return _0x3e2c7a[_0x1f96('0x5c')]({'exitAt':moment()[_0x1f96('0xb')](_0x1f96('0x5d')),'data2':_0x551a56});});return Promise[_0x1f96('0x5e')](_0x3811f4);}})[_0x1f96('0x29')](function(){if(!_0x4ed957){_0x5561a2[_0x1f96('0x5f')]=![];_0x5561a2[_0x1f96('0x60')]=![];_0x5561a2[_0x1f96('0x61')]=![];_0x5561a2[_0x1f96('0x62')]=![];_0x5561a2[_0x1f96('0x63')]=![];_0x5561a2['whatsappPause']=![];_0x5561a2['openchannelPause']=![];}else{_0x5561a2[_0x4ed957+_0x1f96('0x64')]=![];}return _0x581dd6[_0x1f96('0x65')]();})[_0x1f96('0x29')](function(_0x404163){var _0x5dd074=require(_0x1f96('0x66'));var _0x5b4810=_0x5dd074[_0x1f96('0x67')]();_0x5b4810[_0x1f96('0x68')](function(_0x5ecdb2){var _0x409364=_0x5ecdb2+'Status';_0x581dd6[_0x1f96('0x69')]([_0x409364],_0x404163[_0x409364]);});return _0x581dd6[_0x1f96('0x5c')](_0x5561a2);})[_0x1f96('0x2c')](function(_0xde270b){throw _0xde270b;});}}});};
\ No newline at end of file
index ab38945..280cd34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec7=['localhost','socket.io-emitter','register','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','then','info','stringify','catch','error','ShowUser','find','debug','message','role','internal','interface','update','PAUSE','length','updateAttributes','getChannels','forEach','name','format','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','YYYY-MM-DD\x20HH:mm:ss','UnpauseUser','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','voicePause','chatPause','whatsappPause','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','unpause','system','LogoutUser','UserVoiceQueueRt','destroy','MemberReport','push','all','mobile','count','agent','../../config/license/util','Maximum\x20login\x20has\x20been\x20reached','loginInPause','merge','LOGIN','callysquare','LOGININPAUSE','bulkCreate','concat','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults'];(function(_0x43131d,_0x2db0c4){var _0x27918b=function(_0x50b798){while(--_0x50b798){_0x43131d['push'](_0x43131d['shift']());}};_0x27918b(++_0x2db0c4);}(_0xaec7,0x182));var _0x7aec=function(_0x5d07ff,_0x1f976f){_0x5d07ff=_0x5d07ff-0x0;var _0x5226ad=_0xaec7[_0x5d07ff];return _0x5226ad;};'use strict';var _=require('lodash');var util=require(_0x7aec('0x0'));var moment=require(_0x7aec('0x1'));var BPromise=require(_0x7aec('0x2'));var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7aec('0x3'));var logger=require(_0x7aec('0x4'))(_0x7aec('0x5'));var config=require(_0x7aec('0x6'));config[_0x7aec('0x7')]=_[_0x7aec('0x8')](config[_0x7aec('0x7')],{'host':_0x7aec('0x9'),'port':0x18eb});var socket=require(_0x7aec('0xa'))(new Redis(config['redis']));require('./user.socket')[_0x7aec('0xb')](socket);exports[_0x7aec('0xc')]=function(_0x25b43a){var _0x3711f7=this;return new Promise(function(_0xfabe2,_0x3cfac7){return db[_0x7aec('0xd')][_0x7aec('0xe')]({'raw':_0x25b43a[_0x7aec('0xf')]?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x10')]===undefined?!![]:![]:!![],'where':_0x25b43a[_0x7aec('0xf')]?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x11')]||null:null,'attributes':_0x25b43a[_0x7aec('0xf')]?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x12')]||null:null,'limit':_0x25b43a[_0x7aec('0xf')]?_0x25b43a['options'][_0x7aec('0x13')]||null:null,'include':_0x25b43a['options']?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x14')]?_[_0x7aec('0x15')](_0x25b43a[_0x7aec('0xf')][_0x7aec('0x14')],function(_0x2f762d){return{'model':db[_0x2f762d[_0x7aec('0x16')]],'as':_0x2f762d['as'],'attributes':_0x2f762d[_0x7aec('0x12')],'include':_0x2f762d[_0x7aec('0x14')]?_['map'](_0x2f762d[_0x7aec('0x14')],function(_0x2a2838){return{'model':db[_0x2a2838[_0x7aec('0x16')]],'as':_0x2a2838['as'],'attributes':_0x2a2838[_0x7aec('0x12')],'include':_0x2a2838[_0x7aec('0x14')]?_[_0x7aec('0x15')](_0x2a2838[_0x7aec('0x14')],function(_0x12597d){return{'model':db[_0x12597d[_0x7aec('0x16')]],'as':_0x12597d['as'],'attributes':_0x12597d[_0x7aec('0x12')]};}):[]};}):[]};}):[]:[]})[_0x7aec('0x17')](function(_0x5df970){logger[_0x7aec('0x18')](_0x7aec('0xc'),_0x25b43a);logger['debug'](_0x7aec('0xc'),_0x25b43a,JSON[_0x7aec('0x19')](_0x5df970));_0xfabe2(_0x5df970);})[_0x7aec('0x1a')](function(_0x527330){logger[_0x7aec('0x1b')]('GetUser',_0x527330['message'],_0x25b43a);_0x3cfac7(_0x3711f7[_0x7aec('0x1b')](0x1f4,_0x527330['message']));});});};exports[_0x7aec('0x1c')]=function(_0x5ef249){var _0x14061c=this;return new Promise(function(_0x3dd39a,_0x4b9e80){return db[_0x7aec('0xd')][_0x7aec('0x1d')]({'raw':_0x5ef249[_0x7aec('0xf')]?_0x5ef249[_0x7aec('0xf')][_0x7aec('0x10')]===undefined?!![]:![]:!![],'where':_0x5ef249[_0x7aec('0xf')]?_0x5ef249[_0x7aec('0xf')][_0x7aec('0x11')]||null:null,'attributes':_0x5ef249['options']?_0x5ef249['options']['attributes']||null:null,'include':_0x5ef249[_0x7aec('0xf')]?_0x5ef249[_0x7aec('0xf')][_0x7aec('0x14')]?_[_0x7aec('0x15')](_0x5ef249[_0x7aec('0xf')]['include'],function(_0x28036f){return{'model':db[_0x28036f[_0x7aec('0x16')]],'as':_0x28036f['as'],'attributes':_0x28036f[_0x7aec('0x12')],'include':_0x28036f['include']?_[_0x7aec('0x15')](_0x28036f[_0x7aec('0x14')],function(_0x86289d){return{'model':db[_0x86289d['model']],'as':_0x86289d['as'],'attributes':_0x86289d[_0x7aec('0x12')],'include':_0x86289d['include']?_['map'](_0x86289d['include'],function(_0x224344){return{'model':db[_0x224344['model']],'as':_0x224344['as'],'attributes':_0x224344['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xb97001){logger[_0x7aec('0x18')](_0x7aec('0x1c'),_0x5ef249);logger[_0x7aec('0x1e')]('ShowUser',_0x5ef249,JSON['stringify'](_0xb97001));_0x3dd39a(_0xb97001);})['catch'](function(_0x1c647d){logger[_0x7aec('0x1b')]('ShowUser',_0x1c647d[_0x7aec('0x1f')],_0x5ef249);_0x4b9e80(_0x14061c['error'](0x1f4,_0x1c647d['message']));});});};exports['PauseUser']=function(_0x56349b){var _0x103f7c=this;return new Promise(function(_0x3ce4c9,_0x32764a){var _0x517bb3;return db[_0x7aec('0xd')][_0x7aec('0x1d')]({'where':_0x56349b['options']['where']||{},'attributes':['id','name',_0x7aec('0x20'),_0x7aec('0x21'),_0x7aec('0x22')]})[_0x7aec('0x17')](function(_0x6bf614){if(_0x6bf614){_0x517bb3=_0x6bf614;return db['UserVoiceQueueRt'][_0x7aec('0x23')]({'paused':0x1},{'where':{'UserId':_0x517bb3['id']},'individualHooks':!![]});}})[_0x7aec('0x17')](function(){if(_0x517bb3){return db['MemberReport'][_0x7aec('0xe')]({'where':{'membername':_0x517bb3['name'],'type':_0x7aec('0x24'),'exitAt':null}});}})['then'](function(_0x5627b6){if(_0x517bb3){if(_0x5627b6&&_0x5627b6[_0x7aec('0x25')]){var _0x2d3e66=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x1b7f8c=0x0,_0x1dae3e=_0x5627b6['length'];_0x1b7f8c<_0x1dae3e;_0x1b7f8c++){_0x5627b6[_0x1b7f8c][_0x7aec('0x26')]({'exitAt':_0x2d3e66});}}}})[_0x7aec('0x17')](function(){if(_0x517bb3){var _0x4845c9=[];var _0x3e5d1a=utils[_0x7aec('0x27')]();_0x3e5d1a[_0x7aec('0x28')](function(_0x1d2075){_0x4845c9['push']({'channel':_0x1d2075,'membername':_0x517bb3[_0x7aec('0x29')],'interface':_['isNil'](_0x517bb3['interface'])?util[_0x7aec('0x2a')](_0x7aec('0x2b'),_0x517bb3[_0x7aec('0x29')]):_0x517bb3[_0x7aec('0x22')],'type':_0x7aec('0x24'),'enterAt':moment()[_0x7aec('0x2a')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x56349b[_0x7aec('0x2c')][_0x7aec('0x2d')]||_0x7aec('0x2e'),'role':_0x517bb3['role'],'internal':_0x517bb3[_0x7aec('0x21')],'uniqueid':_0x56349b[_0x7aec('0x2c')][_0x7aec('0x2f')]||null});});return db['MemberReport']['bulkCreate'](_0x4845c9,{'individualHooks':!![]});}})['then'](function(){if(_0x517bb3){return _0x517bb3[_0x7aec('0x23')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x56349b[_0x7aec('0x2c')]['type']||_0x7aec('0x2e'),'lastPauseAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30'))});}})[_0x7aec('0x17')](function(_0x7ded4){_0x3ce4c9(_0x7ded4);})[_0x7aec('0x1a')](function(_0x33a7f5){_0x32764a(_0x103f7c[_0x7aec('0x1b')](0x1f4,_0x33a7f5[_0x7aec('0x1f')]));});});};exports[_0x7aec('0x31')]=function(_0x5e6682){var _0x38de00=this;return new Promise(function(_0x1cfb8a,_0x3dac91){if(_0x5e6682[_0x7aec('0x2c')]['channel']&&!utils['isValidChannel'](_0x5e6682['body'][_0x7aec('0x32')])){throw new Error(util[_0x7aec('0x2a')](_0x7aec('0x33'),_0x5e6682[_0x7aec('0x2c')][_0x7aec('0x32')]));}return db['User'][_0x7aec('0x34')]({'where':_0x5e6682[_0x7aec('0xf')][_0x7aec('0x11')]||{},'attributes':['id',_0x7aec('0x29'),_0x7aec('0x20'),_0x7aec('0x21'),_0x7aec('0x22'),'online',_0x7aec('0x35'),'mailPause',_0x7aec('0x36'),'faxPause','openchannelPause','smsPause',_0x7aec('0x37'),'pauseType',_0x7aec('0x38')]})[_0x7aec('0x17')](function(_0x52e0f4){if(!_0x52e0f4){throw new Error(util[_0x7aec('0x2a')](_0x7aec('0x39'),_0x5e6682[_0x7aec('0x3a')]['id']));}return _0x52e0f4[_0x7aec('0x3b')](_0x5e6682['body']['channel'],_0x7aec('0x3c'));})[_0x7aec('0x17')](function(_0x394cb4){_0x1cfb8a(_0x394cb4);})[_0x7aec('0x1a')](function(_0x53cce3){_0x3dac91(_0x38de00[_0x7aec('0x1b')](0x1f4,_0x53cce3[_0x7aec('0x1f')]));});});};exports[_0x7aec('0x3d')]=function(_0x2e818b){var _0x2d4249=this;return new Promise(function(_0x16f739,_0x27b7e5){var _0x2bba50;return db['User'][_0x7aec('0x34')]({'where':_0x2e818b[_0x7aec('0xf')]['where']||{},'attributes':['id','name']})[_0x7aec('0x17')](function(_0x1fe871){if(_0x1fe871){_0x2bba50=_0x1fe871;return db[_0x7aec('0x3e')][_0x7aec('0x3f')]({'where':{'membername':_0x2bba50['name']},'individualHooks':!![]});}})[_0x7aec('0x17')](function(){if(_0x2bba50){return db[_0x7aec('0x40')][_0x7aec('0xe')]({'where':{'membername':_0x2bba50['name'],'exitAt':null}});}})[_0x7aec('0x17')](function(_0x3bb3a5){if(_0x2bba50){if(_0x3bb3a5&&_0x3bb3a5[_0x7aec('0x25')]){var _0x558e31=[];_0x3bb3a5[_0x7aec('0x28')](function(_0x28d06c){_0x558e31[_0x7aec('0x41')](_0x28d06c[_0x7aec('0x23')]({'exitAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30'))}));});return BPromise[_0x7aec('0x42')](_0x558e31);}}})[_0x7aec('0x17')](function(){if(_0x2bba50){return _0x2bba50[_0x7aec('0x23')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x2a304c){_0x16f739(_0x2a304c);})[_0x7aec('0x1a')](function(_0x2c5109){_0x27b7e5(_0x2d4249['error'](0x1f4,_0x2c5109[_0x7aec('0x1f')]));});});};exports['LoginUser']=function(_0x2064fd){var _0x39d451=this;return new Promise(function(_0x35e447,_0xfcfd22){var _0x391c03;var _0x10ea3a;var _0x470f9a;var _0x5a0eb9;return db[_0x7aec('0xd')][_0x7aec('0x34')]({'where':_0x2064fd[_0x7aec('0xf')][_0x7aec('0x11')]||{},'attributes':['id',_0x7aec('0x29'),'role',_0x7aec('0x43'),'phone',_0x7aec('0x21'),'loginInPause',_0x7aec('0x22')]})[_0x7aec('0x17')](function(_0x4a0653){if(_0x4a0653){_0x391c03=_0x4a0653;_0x5a0eb9=_0x2064fd[_0x7aec('0x2c')]['interface']?_0x2064fd['body'][_0x7aec('0x22')]:util[_0x7aec('0x2a')](_0x7aec('0x2b'),_0x391c03[_0x7aec('0x29')]);return db[_0x7aec('0xd')][_0x7aec('0x44')]({'where':{'role':_0x7aec('0x45'),'online':!![],'id':{'$ne':_0x391c03['id']}}});}})[_0x7aec('0x17')](function(_0x56b55d){if(_0x56b55d){_0x470f9a=_0x56b55d;return require(_0x7aec('0x46'))['getLicense']();}})[_0x7aec('0x17')](function(_0x5841fa){if(_0x5841fa&&_0x5841fa['agents']&&_0x470f9a>=_0x5841fa['agents']){throw new Error(_0x7aec('0x47'));}})['then'](function(){if(_0x391c03){return db[_0x7aec('0x3e')]['destroy']({'where':{'membername':_0x391c03[_0x7aec('0x29')]},'individualHooks':!![]});}})['then'](function(){if(_0x391c03){return _0x391c03['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x50c44b){if(_0x391c03){if(_0x50c44b){var _0x50defd=[];_0x10ea3a=_0x50c44b;if(_0x10ea3a[_0x7aec('0x25')]){for(var _0x3609ca=0x0;_0x3609ca<_0x10ea3a[_0x7aec('0x25')];_0x3609ca++){_0x50defd[_0x7aec('0x41')](db[_0x7aec('0x3e')]['upsert']({'membername':_0x391c03['name'],'UserId':_0x391c03['id'],'queue_name':_0x10ea3a[_0x3609ca][_0x7aec('0x29')],'VoiceQueueId':_0x10ea3a[_0x3609ca]['id'],'interface':_0x5a0eb9,'paused':_0x391c03[_0x7aec('0x48')]||![],'penalty':_0x10ea3a[_0x3609ca]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x50defd);}}}})[_0x7aec('0x17')](function(){if(_0x391c03){return db['MemberReport'][_0x7aec('0xe')]({'where':{'membername':_0x391c03[_0x7aec('0x29')],'exitAt':null}});}})[_0x7aec('0x17')](function(_0x2a0d4c){if(_0x391c03){if(_0x2a0d4c&&_0x2a0d4c['length']){var _0x2ee50b=[];_0x2a0d4c['forEach'](function(_0x3a98c7){_0x2ee50b[_0x7aec('0x41')](_0x3a98c7['update']({'exitAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30'))}));});return BPromise[_0x7aec('0x42')](_0x2ee50b);}}})['then'](function(){if(_0x391c03){var _0x5d9591=[];var _0x361ca4=[];var _0x1cef50=utils['getChannels']();var _0x48b64a={'membername':_0x391c03[_0x7aec('0x29')],'interface':_0x5a0eb9,'enterAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30')),'role':_0x391c03[_0x7aec('0x20')],'internal':_0x391c03[_0x7aec('0x21')]};_0x1cef50[_0x7aec('0x28')](function(_0x5d7b84){_0x5d9591[_0x7aec('0x41')](_[_0x7aec('0x49')]({'channel':_0x5d7b84,'type':_0x7aec('0x4a'),'data1':_0x7aec('0x4b'),'data2':_0x5a0eb9},_0x48b64a));if(_0x391c03[_0x7aec('0x48')]){_0x361ca4[_0x7aec('0x41')](_[_0x7aec('0x49')]({'channel':_0x5d7b84,'type':_0x7aec('0x24'),'data1':_0x7aec('0x4c')},_0x48b64a));}});return db[_0x7aec('0x40')][_0x7aec('0x4d')](_0x5d9591[_0x7aec('0x4e')](_0x361ca4),{'individualHooks':!![]});}})[_0x7aec('0x17')](function(){if(_0x391c03){return _0x391c03[_0x7aec('0x23')]({'online':!![],'lastLoginAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30')),'voicePause':_0x391c03['loginInPause']||![],'mailPause':_0x391c03[_0x7aec('0x48')]||![],'chatPause':_0x391c03[_0x7aec('0x48')]||![],'faxPause':_0x391c03[_0x7aec('0x48')]||![],'smsPause':_0x391c03['loginInPause']||![],'openchannelPause':_0x391c03[_0x7aec('0x48')]||![],'pauseType':_0x391c03['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30')),'interface':_0x5a0eb9});}})['then'](function(_0x53a96c){_0x35e447(_0x53a96c);})[_0x7aec('0x1a')](function(_0x164e61){_0xfcfd22(_0x39d451[_0x7aec('0x1b')](0x1f4,_0x164e61['message']));});});};
\ No newline at end of file
+var _0x20a1=['isNil','YYYY-MM-DD\x20HH:mm:ss','body','type','bulkCreate','UnpauseUser','channel','Channel\x20parameter\x20%s\x20is\x20invalid','role','online','mailPause','chatPause','faxPause','openchannelPause','smsPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','LogoutUser','destroy','all','findOne','mobile','phone','loginInPause','SIP/%s','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','UserVoiceQueue.penalty','merge','LOGIN','callysquare','concat','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','defaults','redis','localhost','socket.io-emitter','./user.socket','register','GetUser','User','findAll','options','raw','attributes','include','map','model','then','stringify','catch','message','error','ShowUser','find','where','info','PauseUser','name','internal','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','format','length','getChannels','forEach','push'];(function(_0x29bcfe,_0x1a7367){var _0x215d60=function(_0x399709){while(--_0x399709){_0x29bcfe['push'](_0x29bcfe['shift']());}};_0x215d60(++_0x1a7367);}(_0x20a1,0x7e));var _0x120a=function(_0x15343a,_0x30ddac){_0x15343a=_0x15343a-0x0;var _0x3594d9=_0x20a1[_0x15343a];return _0x3594d9;};'use strict';var _=require(_0x120a('0x0'));var util=require(_0x120a('0x1'));var moment=require(_0x120a('0x2'));var BPromise=require(_0x120a('0x3'));var Redis=require(_0x120a('0x4'));var db=require(_0x120a('0x5'))['db'];var utils=require(_0x120a('0x6'));var logger=require(_0x120a('0x7'))(_0x120a('0x8'));var config=require('../../config/environment');config['redis']=_[_0x120a('0x9')](config[_0x120a('0xa')],{'host':_0x120a('0xb'),'port':0x18eb});var socket=require(_0x120a('0xc'))(new Redis(config['redis']));require(_0x120a('0xd'))[_0x120a('0xe')](socket);exports[_0x120a('0xf')]=function(_0x4d6a08){var _0x44c81b=this;return new Promise(function(_0x44d978,_0xd62d02){return db[_0x120a('0x10')][_0x120a('0x11')]({'raw':_0x4d6a08[_0x120a('0x12')]?_0x4d6a08[_0x120a('0x12')][_0x120a('0x13')]===undefined?!![]:![]:!![],'where':_0x4d6a08[_0x120a('0x12')]?_0x4d6a08[_0x120a('0x12')]['where']||null:null,'attributes':_0x4d6a08[_0x120a('0x12')]?_0x4d6a08[_0x120a('0x12')][_0x120a('0x14')]||null:null,'limit':_0x4d6a08[_0x120a('0x12')]?_0x4d6a08[_0x120a('0x12')]['limit']||null:null,'include':_0x4d6a08[_0x120a('0x12')]?_0x4d6a08[_0x120a('0x12')][_0x120a('0x15')]?_[_0x120a('0x16')](_0x4d6a08[_0x120a('0x12')][_0x120a('0x15')],function(_0x2b97d7){return{'model':db[_0x2b97d7[_0x120a('0x17')]],'as':_0x2b97d7['as'],'attributes':_0x2b97d7['attributes'],'include':_0x2b97d7[_0x120a('0x15')]?_['map'](_0x2b97d7[_0x120a('0x15')],function(_0x3739e){return{'model':db[_0x3739e[_0x120a('0x17')]],'as':_0x3739e['as'],'attributes':_0x3739e[_0x120a('0x14')],'include':_0x3739e['include']?_[_0x120a('0x16')](_0x3739e[_0x120a('0x15')],function(_0x531180){return{'model':db[_0x531180[_0x120a('0x17')]],'as':_0x531180['as'],'attributes':_0x531180[_0x120a('0x14')]};}):[]};}):[]};}):[]:[]})[_0x120a('0x18')](function(_0x3b26da){logger['info'](_0x120a('0xf'),_0x4d6a08);logger['debug']('GetUser',_0x4d6a08,JSON[_0x120a('0x19')](_0x3b26da));_0x44d978(_0x3b26da);})[_0x120a('0x1a')](function(_0x79cd8e){logger['error'](_0x120a('0xf'),_0x79cd8e[_0x120a('0x1b')],_0x4d6a08);_0xd62d02(_0x44c81b[_0x120a('0x1c')](0x1f4,_0x79cd8e[_0x120a('0x1b')]));});});};exports[_0x120a('0x1d')]=function(_0x280615){var _0x31f966=this;return new Promise(function(_0x517a24,_0x10f68f){return db[_0x120a('0x10')][_0x120a('0x1e')]({'raw':_0x280615[_0x120a('0x12')]?_0x280615[_0x120a('0x12')][_0x120a('0x13')]===undefined?!![]:![]:!![],'where':_0x280615[_0x120a('0x12')]?_0x280615[_0x120a('0x12')][_0x120a('0x1f')]||null:null,'attributes':_0x280615[_0x120a('0x12')]?_0x280615[_0x120a('0x12')][_0x120a('0x14')]||null:null,'include':_0x280615[_0x120a('0x12')]?_0x280615[_0x120a('0x12')][_0x120a('0x15')]?_[_0x120a('0x16')](_0x280615[_0x120a('0x12')][_0x120a('0x15')],function(_0x4a2755){return{'model':db[_0x4a2755[_0x120a('0x17')]],'as':_0x4a2755['as'],'attributes':_0x4a2755[_0x120a('0x14')],'include':_0x4a2755['include']?_[_0x120a('0x16')](_0x4a2755['include'],function(_0x317477){return{'model':db[_0x317477['model']],'as':_0x317477['as'],'attributes':_0x317477[_0x120a('0x14')],'include':_0x317477[_0x120a('0x15')]?_['map'](_0x317477[_0x120a('0x15')],function(_0x2ffbf6){return{'model':db[_0x2ffbf6[_0x120a('0x17')]],'as':_0x2ffbf6['as'],'attributes':_0x2ffbf6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xc1bcbb){logger[_0x120a('0x20')]('ShowUser',_0x280615);logger['debug'](_0x120a('0x1d'),_0x280615,JSON[_0x120a('0x19')](_0xc1bcbb));_0x517a24(_0xc1bcbb);})[_0x120a('0x1a')](function(_0x48c959){logger[_0x120a('0x1c')]('ShowUser',_0x48c959['message'],_0x280615);_0x10f68f(_0x31f966['error'](0x1f4,_0x48c959[_0x120a('0x1b')]));});});};exports[_0x120a('0x21')]=function(_0x3f662d){var _0x228451=this;return new Promise(function(_0x33c180,_0x23b6ea){var _0x5043af;return db[_0x120a('0x10')][_0x120a('0x1e')]({'where':_0x3f662d[_0x120a('0x12')][_0x120a('0x1f')]||{},'attributes':['id',_0x120a('0x22'),'role',_0x120a('0x23'),_0x120a('0x24')]})[_0x120a('0x18')](function(_0x3bfd52){if(_0x3bfd52){_0x5043af=_0x3bfd52;return db[_0x120a('0x25')][_0x120a('0x26')]({'paused':0x1},{'where':{'UserId':_0x5043af['id']},'individualHooks':!![]});}})[_0x120a('0x18')](function(){if(_0x5043af){return db[_0x120a('0x27')]['findAll']({'where':{'membername':_0x5043af[_0x120a('0x22')],'type':_0x120a('0x28'),'exitAt':null}});}})[_0x120a('0x18')](function(_0xad1e24){if(_0x5043af){if(_0xad1e24&&_0xad1e24['length']){var _0x4052d8=moment()[_0x120a('0x29')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x3ec8d7=0x0,_0x145a72=_0xad1e24[_0x120a('0x2a')];_0x3ec8d7<_0x145a72;_0x3ec8d7++){_0xad1e24[_0x3ec8d7]['updateAttributes']({'exitAt':_0x4052d8});}}}})[_0x120a('0x18')](function(){if(_0x5043af){var _0xb4b8c9=[];var _0x4ef91c=utils[_0x120a('0x2b')]();_0x4ef91c[_0x120a('0x2c')](function(_0x689baf){_0xb4b8c9[_0x120a('0x2d')]({'channel':_0x689baf,'membername':_0x5043af[_0x120a('0x22')],'interface':_[_0x120a('0x2e')](_0x5043af[_0x120a('0x24')])?util['format']('SIP/%s',_0x5043af[_0x120a('0x22')]):_0x5043af['interface'],'type':'PAUSE','enterAt':moment()[_0x120a('0x29')](_0x120a('0x2f')),'data1':_0x3f662d[_0x120a('0x30')][_0x120a('0x31')]||'DEFAULT\x20PAUSE','role':_0x5043af['role'],'internal':_0x5043af[_0x120a('0x23')],'uniqueid':_0x3f662d['body']['uniqueid']||null});});return db[_0x120a('0x27')][_0x120a('0x32')](_0xb4b8c9,{'individualHooks':!![]});}})['then'](function(){if(_0x5043af){return _0x5043af[_0x120a('0x26')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3f662d[_0x120a('0x30')][_0x120a('0x31')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x120a('0x29')](_0x120a('0x2f'))});}})[_0x120a('0x18')](function(_0x35b70c){_0x33c180(_0x35b70c);})['catch'](function(_0x5a6349){_0x23b6ea(_0x228451[_0x120a('0x1c')](0x1f4,_0x5a6349['message']));});});};exports[_0x120a('0x33')]=function(_0x3a57d5){var _0x323b99=this;return new Promise(function(_0x5ec438,_0x39b257){if(_0x3a57d5[_0x120a('0x30')]['channel']&&!utils['isValidChannel'](_0x3a57d5[_0x120a('0x30')][_0x120a('0x34')])){throw new Error(util['format'](_0x120a('0x35'),_0x3a57d5[_0x120a('0x30')][_0x120a('0x34')]));}return db[_0x120a('0x10')]['findOne']({'where':_0x3a57d5[_0x120a('0x12')][_0x120a('0x1f')]||{},'attributes':['id',_0x120a('0x22'),_0x120a('0x36'),'internal',_0x120a('0x24'),_0x120a('0x37'),'voicePause',_0x120a('0x38'),_0x120a('0x39'),_0x120a('0x3a'),_0x120a('0x3b'),_0x120a('0x3c'),'whatsappPause',_0x120a('0x3d'),_0x120a('0x3e')]})[_0x120a('0x18')](function(_0x44f227){if(!_0x44f227){throw new Error(util['format'](_0x120a('0x3f'),_0x3a57d5[_0x120a('0x40')]['id']));}return _0x44f227['unpause'](_0x3a57d5['body'][_0x120a('0x34')],'system');})[_0x120a('0x18')](function(_0x364e66){_0x5ec438(_0x364e66);})[_0x120a('0x1a')](function(_0x73393e){_0x39b257(_0x323b99[_0x120a('0x1c')](0x1f4,_0x73393e['message']));});});};exports[_0x120a('0x41')]=function(_0xbf24b2){var _0x258698=this;return new Promise(function(_0xd8a1ef,_0x38dac9){var _0x5e5ef1;return db[_0x120a('0x10')]['findOne']({'where':_0xbf24b2[_0x120a('0x12')][_0x120a('0x1f')]||{},'attributes':['id',_0x120a('0x22')]})['then'](function(_0x1db763){if(_0x1db763){_0x5e5ef1=_0x1db763;return db[_0x120a('0x25')][_0x120a('0x42')]({'where':{'membername':_0x5e5ef1['name']},'individualHooks':!![]});}})[_0x120a('0x18')](function(){if(_0x5e5ef1){return db[_0x120a('0x27')][_0x120a('0x11')]({'where':{'membername':_0x5e5ef1[_0x120a('0x22')],'exitAt':null}});}})[_0x120a('0x18')](function(_0x5aca11){if(_0x5e5ef1){if(_0x5aca11&&_0x5aca11[_0x120a('0x2a')]){var _0x23c235=[];_0x5aca11['forEach'](function(_0x3452c0){_0x23c235[_0x120a('0x2d')](_0x3452c0[_0x120a('0x26')]({'exitAt':moment()[_0x120a('0x29')](_0x120a('0x2f'))}));});return BPromise[_0x120a('0x43')](_0x23c235);}}})[_0x120a('0x18')](function(){if(_0x5e5ef1){return _0x5e5ef1['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x3ba747){_0xd8a1ef(_0x3ba747);})['catch'](function(_0xd94258){_0x38dac9(_0x258698[_0x120a('0x1c')](0x1f4,_0xd94258[_0x120a('0x1b')]));});});};exports['LoginUser']=function(_0x21d6e0){var _0x249bac=this;return new Promise(function(_0x5c28f5,_0x2b53ba){var _0x5a8c79;var _0x30df2d;var _0x556b8d;var _0x493021;return db[_0x120a('0x10')][_0x120a('0x44')]({'where':_0x21d6e0[_0x120a('0x12')]['where']||{},'attributes':['id',_0x120a('0x22'),_0x120a('0x36'),_0x120a('0x45'),_0x120a('0x46'),'internal',_0x120a('0x47'),_0x120a('0x24')]})[_0x120a('0x18')](function(_0x266c72){if(_0x266c72){_0x5a8c79=_0x266c72;_0x493021=_0x21d6e0[_0x120a('0x30')]['interface']?_0x21d6e0[_0x120a('0x30')]['interface']:util['format'](_0x120a('0x48'),_0x5a8c79['name']);return db[_0x120a('0x10')][_0x120a('0x49')]({'where':{'role':_0x120a('0x4a'),'online':!![],'id':{'$ne':_0x5a8c79['id']}}});}})[_0x120a('0x18')](function(_0x461354){if(_0x461354){_0x556b8d=_0x461354;return require(_0x120a('0x4b'))[_0x120a('0x4c')]();}})[_0x120a('0x18')](function(_0xa1b116){if(_0xa1b116&&_0xa1b116[_0x120a('0x4d')]&&_0x556b8d>=_0xa1b116[_0x120a('0x4d')]){throw new Error(_0x120a('0x4e'));}})[_0x120a('0x18')](function(){if(_0x5a8c79){return db[_0x120a('0x25')][_0x120a('0x42')]({'where':{'membername':_0x5a8c79[_0x120a('0x22')]},'individualHooks':!![]});}})[_0x120a('0x18')](function(){if(_0x5a8c79){return _0x5a8c79[_0x120a('0x4f')]({'raw':!![]});}})['then'](function(_0x4eb9f4){if(_0x5a8c79){if(_0x4eb9f4){var _0x46076c=[];_0x30df2d=_0x4eb9f4;if(_0x30df2d[_0x120a('0x2a')]){for(var _0x2dc17b=0x0;_0x2dc17b<_0x30df2d[_0x120a('0x2a')];_0x2dc17b++){_0x46076c[_0x120a('0x2d')](db[_0x120a('0x25')]['upsert']({'membername':_0x5a8c79[_0x120a('0x22')],'UserId':_0x5a8c79['id'],'queue_name':_0x30df2d[_0x2dc17b][_0x120a('0x22')],'VoiceQueueId':_0x30df2d[_0x2dc17b]['id'],'interface':_0x493021,'paused':_0x5a8c79[_0x120a('0x47')]||![],'penalty':_0x30df2d[_0x2dc17b][_0x120a('0x50')]||0x0}));}return BPromise[_0x120a('0x43')](_0x46076c);}}}})['then'](function(){if(_0x5a8c79){return db['MemberReport']['findAll']({'where':{'membername':_0x5a8c79[_0x120a('0x22')],'exitAt':null}});}})[_0x120a('0x18')](function(_0xd136f4){if(_0x5a8c79){if(_0xd136f4&&_0xd136f4[_0x120a('0x2a')]){var _0x3f50b3=[];_0xd136f4['forEach'](function(_0x3b26ca){_0x3f50b3[_0x120a('0x2d')](_0x3b26ca['update']({'exitAt':moment()[_0x120a('0x29')](_0x120a('0x2f'))}));});return BPromise[_0x120a('0x43')](_0x3f50b3);}}})['then'](function(){if(_0x5a8c79){var _0x3fc88e=[];var _0x49318f=[];var _0x50811a=utils[_0x120a('0x2b')]();var _0x2d8fdb={'membername':_0x5a8c79[_0x120a('0x22')],'interface':_0x493021,'enterAt':moment()[_0x120a('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x5a8c79[_0x120a('0x36')],'internal':_0x5a8c79[_0x120a('0x23')]};_0x50811a['forEach'](function(_0x266b77){_0x3fc88e[_0x120a('0x2d')](_[_0x120a('0x51')]({'channel':_0x266b77,'type':_0x120a('0x52'),'data1':_0x120a('0x53'),'data2':_0x493021},_0x2d8fdb));if(_0x5a8c79[_0x120a('0x47')]){_0x49318f[_0x120a('0x2d')](_[_0x120a('0x51')]({'channel':_0x266b77,'type':_0x120a('0x28'),'data1':'LOGININPAUSE'},_0x2d8fdb));}});return db[_0x120a('0x27')][_0x120a('0x32')](_0x3fc88e[_0x120a('0x54')](_0x49318f),{'individualHooks':!![]});}})[_0x120a('0x18')](function(){if(_0x5a8c79){return _0x5a8c79[_0x120a('0x26')]({'online':!![],'lastLoginAt':moment()[_0x120a('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x5a8c79[_0x120a('0x47')]||![],'mailPause':_0x5a8c79[_0x120a('0x47')]||![],'chatPause':_0x5a8c79[_0x120a('0x47')]||![],'faxPause':_0x5a8c79[_0x120a('0x47')]||![],'smsPause':_0x5a8c79[_0x120a('0x47')]||![],'openchannelPause':_0x5a8c79['loginInPause']||![],'pauseType':_0x5a8c79[_0x120a('0x47')]?_0x120a('0x55'):null,'lastPauseAt':moment()[_0x120a('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x493021});}})[_0x120a('0x18')](function(_0x4b0f3a){_0x5c28f5(_0x4b0f3a);})[_0x120a('0x1a')](function(_0x3f1bc1){_0x2b53ba(_0x249bac[_0x120a('0x1c')](0x1f4,_0x3f1bc1['message']));});});};
\ No newline at end of file
index c4ef3ad..a490d3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6902=['update','emit','register','length','user:','./user.events','save','remove'];(function(_0x286dbe,_0x51e5cf){var _0x5a5a99=function(_0x2590fd){while(--_0x2590fd){_0x286dbe['push'](_0x286dbe['shift']());}};_0x5a5a99(++_0x51e5cf);}(_0x6902,0x18d));var _0x2690=function(_0x2785ef,_0x2faf3a){_0x2785ef=_0x2785ef-0x0;var _0x4a6c6c=_0x6902[_0x2785ef];return _0x4a6c6c;};'use strict';var UserEvents=require(_0x2690('0x0'));var events=[_0x2690('0x1'),_0x2690('0x2'),_0x2690('0x3')];function createListener(_0x4e0772,_0xe998e4){return function(_0x399064){_0xe998e4[_0x2690('0x4')](_0x4e0772,_0x399064);};}function removeListener(_0x1b738f,_0xff525d){return function(){UserEvents['removeListener'](_0x1b738f,_0xff525d);};}exports[_0x2690('0x5')]=function(_0x5b7207){for(var _0x37fff1=0x0,_0x5bbf8d=events[_0x2690('0x6')];_0x37fff1<_0x5bbf8d;_0x37fff1++){var _0x11f8df=events[_0x37fff1];var _0x477878=createListener(_0x2690('0x7')+_0x11f8df,_0x5b7207);UserEvents['on'](_0x11f8df,_0x477878);}};
\ No newline at end of file
+var _0x767c=['register','length','user:','./user.events','remove','update','emit'];(function(_0x14246c,_0x1384d0){var _0x378955=function(_0x13ec5a){while(--_0x13ec5a){_0x14246c['push'](_0x14246c['shift']());}};_0x378955(++_0x1384d0);}(_0x767c,0x1f4));var _0xc767=function(_0x168134,_0x1edc4e){_0x168134=_0x168134-0x0;var _0x1bb0e9=_0x767c[_0x168134];return _0x1bb0e9;};'use strict';var UserEvents=require(_0xc767('0x0'));var events=['save',_0xc767('0x1'),_0xc767('0x2')];function createListener(_0x446a3c,_0x2b7384){return function(_0x392b9e){_0x2b7384[_0xc767('0x3')](_0x446a3c,_0x392b9e);};}function removeListener(_0x17f1d2,_0x393267){return function(){UserEvents['removeListener'](_0x17f1d2,_0x393267);};}exports[_0xc767('0x4')]=function(_0x33a6ac){for(var _0x5604a3=0x0,_0x1ebeb9=events[_0xc767('0x5')];_0x5604a3<_0x1ebeb9;_0x5604a3++){var _0x135086=events[_0x5604a3];var _0x12090b=createListener(_0xc767('0x6')+_0x135086,_0x33a6ac);UserEvents['on'](_0x135086,_0x12090b);}};
\ No newline at end of file
index 4519c5b..b5e8652 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(_0x4842bb,_0x5b7a74){var _0x5da2f0=function(_0x254e9c){while(--_0x254e9c){_0x4842bb['push'](_0x4842bb['shift']());}};_0x5da2f0(++_0x5b7a74);}(_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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x39b801,_0x1fdd40){var _0x53acb1=function(_0x19607f){while(--_0x19607f){_0x39b801['push'](_0x39b801['shift']());}};_0x53acb1(++_0x1fdd40);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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 338608c..96e19a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bd0=['sequelize','exports','INTEGER'];(function(_0x271c5b,_0x46d768){var _0x1d36eb=function(_0x3b46a8){while(--_0x3b46a8){_0x271c5b['push'](_0x271c5b['shift']());}};_0x1d36eb(++_0x46d768);}(_0x3bd0,0x93));var _0x03bd=function(_0x3a7722,_0x5d6f9f){_0x3a7722=_0x3a7722-0x0;var _0x2755aa=_0x3bd0[_0x3a7722];return _0x2755aa;};'use strict';var Sequelize=require(_0x03bd('0x0'));module[_0x03bd('0x1')]={'penalty':{'type':Sequelize[_0x03bd('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x064a=['INTEGER'];(function(_0x516927,_0xb4aad0){var _0x30749b=function(_0x2ca6cc){while(--_0x2ca6cc){_0x516927['push'](_0x516927['shift']());}};_0x30749b(++_0xb4aad0);}(_0x064a,0xb1));var _0xa064=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x064a[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xa064('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index ecb3ec1..4caa973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f9c=['request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','UserChatQueue','lodash','util','moment','bluebird'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x4f9c,0x1a0));var _0xc4f9=function(_0x406e46,_0x5799cb){_0x406e46=_0x406e46-0x0;var _0x4a3742=_0x4f9c[_0x406e46];return _0x4a3742;};'use strict';var _=require(_0xc4f9('0x0'));var util=require(_0xc4f9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc4f9('0x2'));var BPromise=require(_0xc4f9('0x3'));var rp=require(_0xc4f9('0x4'));var fs=require('fs');var path=require(_0xc4f9('0x5'));var rimraf=require(_0xc4f9('0x6'));var config=require(_0xc4f9('0x7'));var attributes=require(_0xc4f9('0x8'));module['exports']=function(_0x2c7bc7,_0x44dac5){return _0x2c7bc7['define'](_0xc4f9('0x9'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabd5=['UserChatQueue','user_has_chat_queues','util','api','moment','request-promise','../../config/environment','./userChatQueue.attributes','exports','define'];(function(_0x118969,_0x3bea3e){var _0x12ffc8=function(_0x2dc7b5){while(--_0x2dc7b5){_0x118969['push'](_0x118969['shift']());}};_0x12ffc8(++_0x3bea3e);}(_0xabd5,0xe8));var _0x5abd=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xabd5[_0x5d2803];return _0xdcad2c;};'use strict';var _=require('lodash');var util=require(_0x5abd('0x0'));var logger=require('../../config/logger')(_0x5abd('0x1'));var moment=require(_0x5abd('0x2'));var BPromise=require('bluebird');var rp=require(_0x5abd('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5abd('0x4'));var attributes=require(_0x5abd('0x5'));module[_0x5abd('0x6')]=function(_0x12b1bf,_0x14f2e6){return _0x12b1bf[_0x5abd('0x7')](_0x5abd('0x8'),attributes,{'tableName':_0x5abd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f90e827..221c014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c2c=['then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x14165d,_0x46dd72){var _0x48b655=function(_0x3c7167){while(--_0x3c7167){_0x14165d['push'](_0x14165d['shift']());}};_0x48b655(++_0x46dd72);}(_0x6c2c,0x16b));var _0xc6c2=function(_0x3b49ad,_0x224a65){_0x3b49ad=_0x3b49ad-0x0;var _0x1c212d=_0x6c2c[_0x3b49ad];return _0x1c212d;};'use strict';var _=require(_0xc6c2('0x0'));var util=require(_0xc6c2('0x1'));var moment=require(_0xc6c2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc6c2('0x3'));var db=require(_0xc6c2('0x4'))['db'];var utils=require(_0xc6c2('0x5'));var logger=require(_0xc6c2('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc6c2('0x7'));var client=jayson[_0xc6c2('0x8')][_0xc6c2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x331e8d,_0x256265,_0x7587b6){return new BPromise(function(_0x403660,_0x307850){return client[_0xc6c2('0xa')](_0x331e8d,_0x7587b6)[_0xc6c2('0xb')](function(_0x3cf5a8){logger[_0xc6c2('0xc')](_0xc6c2('0xd'),_0x256265,_0xc6c2('0xe'));logger[_0xc6c2('0xf')](_0xc6c2('0x10'),_0x256265,_0xc6c2('0xe'),JSON[_0xc6c2('0x11')](_0x3cf5a8));if(_0x3cf5a8[_0xc6c2('0x12')]){if(_0x3cf5a8[_0xc6c2('0x12')]['code']===0x1f4){logger[_0xc6c2('0x12')](_0xc6c2('0xd'),_0x256265,_0x3cf5a8[_0xc6c2('0x12')][_0xc6c2('0x13')]);return _0x307850(_0x3cf5a8[_0xc6c2('0x12')][_0xc6c2('0x13')]);}logger[_0xc6c2('0x12')](_0xc6c2('0xd'),_0x256265,_0x3cf5a8['error'][_0xc6c2('0x13')]);return _0x403660(_0x3cf5a8['error'][_0xc6c2('0x13')]);}else{logger['info'](_0xc6c2('0xd'),_0x256265,_0xc6c2('0xe'));_0x403660(_0x3cf5a8[_0xc6c2('0x14')]['message']);}})[_0xc6c2('0x15')](function(_0x4819b7){logger[_0xc6c2('0x12')](_0xc6c2('0xd'),_0x256265,_0x4819b7);_0x307850(_0x4819b7);});});}
\ No newline at end of file
+var _0xf916=['then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x19a90e,_0xe14b0b){var _0xa49b11=function(_0x560f76){while(--_0x560f76){_0x19a90e['push'](_0x19a90e['shift']());}};_0xa49b11(++_0xe14b0b);}(_0xf916,0x1a4));var _0x6f91=function(_0x38f4a8,_0x3bc960){_0x38f4a8=_0x38f4a8-0x0;var _0x10f4a0=_0xf916[_0x38f4a8];return _0x10f4a0;};'use strict';var _=require(_0x6f91('0x0'));var util=require('util');var moment=require(_0x6f91('0x1'));var BPromise=require(_0x6f91('0x2'));var rs=require(_0x6f91('0x3'));var fs=require('fs');var Redis=require(_0x6f91('0x4'));var db=require(_0x6f91('0x5'))['db'];var utils=require(_0x6f91('0x6'));var logger=require(_0x6f91('0x7'))('rpc');var config=require(_0x6f91('0x8'));var jayson=require(_0x6f91('0x9'));var client=jayson['client'][_0x6f91('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x534683,_0x480bb9,_0xcadb4d){return new BPromise(function(_0x4d62cd,_0x21e273){return client[_0x6f91('0xb')](_0x534683,_0xcadb4d)[_0x6f91('0xc')](function(_0x38ea5f){logger['info'](_0x6f91('0xd'),_0x480bb9,_0x6f91('0xe'));logger[_0x6f91('0xf')](_0x6f91('0x10'),_0x480bb9,_0x6f91('0xe'),JSON[_0x6f91('0x11')](_0x38ea5f));if(_0x38ea5f['error']){if(_0x38ea5f[_0x6f91('0x12')][_0x6f91('0x13')]===0x1f4){logger['error'](_0x6f91('0xd'),_0x480bb9,_0x38ea5f['error'][_0x6f91('0x14')]);return _0x21e273(_0x38ea5f[_0x6f91('0x12')]['message']);}logger['error'](_0x6f91('0xd'),_0x480bb9,_0x38ea5f[_0x6f91('0x12')][_0x6f91('0x14')]);return _0x4d62cd(_0x38ea5f[_0x6f91('0x12')][_0x6f91('0x14')]);}else{logger[_0x6f91('0x15')](_0x6f91('0xd'),_0x480bb9,_0x6f91('0xe'));_0x4d62cd(_0x38ea5f[_0x6f91('0x16')][_0x6f91('0x14')]);}})[_0x6f91('0x17')](function(_0x1b3bc7){logger['error'](_0x6f91('0xd'),_0x480bb9,_0x1b3bc7);_0x21e273(_0x1b3bc7);});});}
\ No newline at end of file
index c0bb587..605a8fa 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(_0x515be2,_0x51b3ff){var _0x514679=function(_0x562c51){while(--_0x562c51){_0x515be2['push'](_0x515be2['shift']());}};_0x514679(++_0x51b3ff);}(_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'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x280e59,_0x250988){var _0x19c766=function(_0x2c2355){while(--_0x2c2355){_0x280e59['push'](_0x280e59['shift']());}};_0x19c766(++_0x250988);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3ff685,_0x304b9e){_0x3ff685=_0x3ff685-0x0;var _0x2046c9=_0xcb91[_0x3ff685];return _0x2046c9;};'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 773343e..56673fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a53=['exports','INTEGER','STRING','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a53,0x8f));var _0x35a5=function(_0xed5edf,_0x4259b5){_0xed5edf=_0xed5edf-0x0;var _0x1727f4=_0x5a53[_0xed5edf];return _0x1727f4;};'use strict';var Sequelize=require(_0x35a5('0x0'));module[_0x35a5('0x1')]={'penalty':{'type':Sequelize[_0x35a5('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x35a5('0x3')]}};
\ No newline at end of file
+var _0xc7c9=['INTEGER','STRING'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc7c9,0x156));var _0x9c7c=function(_0x70d97d,_0x35a359){_0x70d97d=_0x70d97d-0x0;var _0x1ee1d9=_0xc7c9[_0x70d97d];return _0x1ee1d9;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x9c7c('0x0')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x9c7c('0x0')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x9c7c('0x1')]}};
\ No newline at end of file
index 4e00fb6..d755805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f4=['user_has_fax_queues','lodash','util','moment','bluebird','request-promise','path','../../config/environment','./userFaxQueue.attributes','define'];(function(_0x262baa,_0x283058){var _0x4f2257=function(_0x2cd1c6){while(--_0x2cd1c6){_0x262baa['push'](_0x262baa['shift']());}};_0x4f2257(++_0x283058);}(_0x41f4,0x14b));var _0x441f=function(_0x3591ae,_0x4ce0cc){_0x3591ae=_0x3591ae-0x0;var _0x4ebb7e=_0x41f4[_0x3591ae];return _0x4ebb7e;};'use strict';var _=require(_0x441f('0x0'));var util=require(_0x441f('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x441f('0x2'));var BPromise=require(_0x441f('0x3'));var rp=require(_0x441f('0x4'));var fs=require('fs');var path=require(_0x441f('0x5'));var rimraf=require('rimraf');var config=require(_0x441f('0x6'));var attributes=require(_0x441f('0x7'));module['exports']=function(_0x18c980,_0x12734a){return _0x18c980[_0x441f('0x8')]('UserFaxQueue',attributes,{'tableName':_0x441f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb6b2=['define','UserFaxQueue','user_has_fax_queues','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports'];(function(_0x2771cd,_0x182426){var _0x4231a0=function(_0x418405){while(--_0x418405){_0x2771cd['push'](_0x2771cd['shift']());}};_0x4231a0(++_0x182426);}(_0xb6b2,0x179));var _0x2b6b=function(_0x2efb2b,_0x2acf6c){_0x2efb2b=_0x2efb2b-0x0;var _0x458ec8=_0xb6b2[_0x2efb2b];return _0x458ec8;};'use strict';var _=require('lodash');var util=require(_0x2b6b('0x0'));var logger=require(_0x2b6b('0x1'))(_0x2b6b('0x2'));var moment=require(_0x2b6b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2b6b('0x4'));var rimraf=require(_0x2b6b('0x5'));var config=require(_0x2b6b('0x6'));var attributes=require('./userFaxQueue.attributes');module[_0x2b6b('0x7')]=function(_0x575c2d,_0x23ca46){return _0x575c2d[_0x2b6b('0x8')](_0x2b6b('0x9'),attributes,{'tableName':_0x2b6b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e5bba6..1ab5afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddee=['error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','then','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5a6eb,_0x226bfb){var _0x962fd4=function(_0x6f28a1){while(--_0x6f28a1){_0x5a6eb['push'](_0x5a6eb['shift']());}};_0x962fd4(++_0x226bfb);}(_0xddee,0x1a8));var _0xedde=function(_0x5d860f,_0x467498){_0x5d860f=_0x5d860f-0x0;var _0x236490=_0xddee[_0x5d860f];return _0x236490;};'use strict';var _=require(_0xedde('0x0'));var util=require('util');var moment=require(_0xedde('0x1'));var BPromise=require(_0xedde('0x2'));var rs=require(_0xedde('0x3'));var fs=require('fs');var Redis=require(_0xedde('0x4'));var db=require(_0xedde('0x5'))['db'];var utils=require(_0xedde('0x6'));var logger=require('../../config/logger')(_0xedde('0x7'));var config=require(_0xedde('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xedde('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x418a4f,_0x318545,_0x2df004){return new BPromise(function(_0x5c104b,_0x5d091a){return client['request'](_0x418a4f,_0x2df004)[_0xedde('0xa')](function(_0x42a0ae){logger['info'](_0xedde('0xb'),_0x318545,_0xedde('0xc'));logger[_0xedde('0xd')](_0xedde('0xe'),_0x318545,_0xedde('0xc'),JSON[_0xedde('0xf')](_0x42a0ae));if(_0x42a0ae[_0xedde('0x10')]){if(_0x42a0ae[_0xedde('0x10')][_0xedde('0x11')]===0x1f4){logger[_0xedde('0x10')](_0xedde('0xb'),_0x318545,_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);return _0x5d091a(_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);}logger[_0xedde('0x10')](_0xedde('0xb'),_0x318545,_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);return _0x5c104b(_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);}else{logger[_0xedde('0x13')]('UserFaxQueue,\x20%s,\x20%s',_0x318545,_0xedde('0xc'));_0x5c104b(_0x42a0ae[_0xedde('0x14')]['message']);}})[_0xedde('0x15')](function(_0x18bbf3){logger[_0xedde('0x10')](_0xedde('0xb'),_0x318545,_0x18bbf3);_0x5d091a(_0x18bbf3);});});}
\ No newline at end of file
+var _0x6933=['result','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x4719f5,_0x30f4ed){var _0x437f23=function(_0xcef8d9){while(--_0xcef8d9){_0x4719f5['push'](_0x4719f5['shift']());}};_0x437f23(++_0x30f4ed);}(_0x6933,0x13c));var _0x3693=function(_0x2f7231,_0x20670d){_0x2f7231=_0x2f7231-0x0;var _0x1a9d86=_0x6933[_0x2f7231];return _0x1a9d86;};'use strict';var _=require('lodash');var util=require(_0x3693('0x0'));var moment=require('moment');var BPromise=require(_0x3693('0x1'));var rs=require(_0x3693('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3693('0x3'))['db'];var utils=require(_0x3693('0x4'));var logger=require(_0x3693('0x5'))(_0x3693('0x6'));var config=require(_0x3693('0x7'));var jayson=require(_0x3693('0x8'));var client=jayson[_0x3693('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x42d263,_0x2431f1,_0x3727ce){return new BPromise(function(_0x3ea628,_0x508b2c){return client[_0x3693('0xa')](_0x42d263,_0x3727ce)[_0x3693('0xb')](function(_0x1e38be){logger[_0x3693('0xc')](_0x3693('0xd'),_0x2431f1,_0x3693('0xe'));logger[_0x3693('0xf')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x2431f1,'request\x20sent',JSON[_0x3693('0x10')](_0x1e38be));if(_0x1e38be[_0x3693('0x11')]){if(_0x1e38be[_0x3693('0x11')][_0x3693('0x12')]===0x1f4){logger[_0x3693('0x11')](_0x3693('0xd'),_0x2431f1,_0x1e38be[_0x3693('0x11')]['message']);return _0x508b2c(_0x1e38be['error'][_0x3693('0x13')]);}logger[_0x3693('0x11')](_0x3693('0xd'),_0x2431f1,_0x1e38be['error'][_0x3693('0x13')]);return _0x3ea628(_0x1e38be['error'][_0x3693('0x13')]);}else{logger[_0x3693('0xc')](_0x3693('0xd'),_0x2431f1,_0x3693('0xe'));_0x3ea628(_0x1e38be[_0x3693('0x14')]['message']);}})['catch'](function(_0x3b9c13){logger[_0x3693('0x11')](_0x3693('0xd'),_0x2431f1,_0x3b9c13);_0x508b2c(_0x3b9c13);});});}
\ No newline at end of file
index 90c8b04..67bda2d 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(_0x32981f,_0x903148){var _0x2d29bb=function(_0xab7417){while(--_0xab7417){_0x32981f['push'](_0x32981f['shift']());}};_0x2d29bb(++_0x903148);}(_0xe706,0xa3));var _0x6e70=function(_0x293fa7,_0x1bdf5c){_0x293fa7=_0x293fa7-0x0;var _0x3f54dc=_0xe706[_0x293fa7];return _0x3f54dc;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x16e0c8,_0x4861eb){var _0xe4b5af=function(_0x5248bc){while(--_0x5248bc){_0x16e0c8['push'](_0x16e0c8['shift']());}};_0xe4b5af(++_0x4861eb);}(_0x9c44,0x178));var _0x49c4=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x9c44[_0x465a0c];return _0x1e202e;};'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 1447251..11c30f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc48=['sequelize','exports','INTEGER'];(function(_0x13b2eb,_0x4ac476){var _0xfc76ba=function(_0x3e15f){while(--_0x3e15f){_0x13b2eb['push'](_0x13b2eb['shift']());}};_0xfc76ba(++_0x4ac476);}(_0xbc48,0xd2));var _0x8bc4=function(_0x14ccb7,_0x19f4c3){_0x14ccb7=_0x14ccb7-0x0;var _0x502a9f=_0xbc48[_0x14ccb7];return _0x502a9f;};'use strict';var Sequelize=require(_0x8bc4('0x0'));module[_0x8bc4('0x1')]={'penalty':{'type':Sequelize[_0x8bc4('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x850a=['sequelize','exports','INTEGER'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x850a,0x123));var _0xa850=function(_0x74892f,_0x1e981b){_0x74892f=_0x74892f-0x0;var _0x10ee61=_0x850a[_0x74892f];return _0x10ee61;};'use strict';var Sequelize=require(_0xa850('0x0'));module[_0xa850('0x1')]={'penalty':{'type':Sequelize[_0xa850('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index df9fd5e..a19fce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6154=['UserMailQueue','user_has_mail_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x26f3bb,_0x123c73){var _0x59f67b=function(_0x370d85){while(--_0x370d85){_0x26f3bb['push'](_0x26f3bb['shift']());}};_0x59f67b(++_0x123c73);}(_0x6154,0x1d0));var _0x4615=function(_0x3a981e,_0x167074){_0x3a981e=_0x3a981e-0x0;var _0x38624a=_0x6154[_0x3a981e];return _0x38624a;};'use strict';var _=require('lodash');var util=require(_0x4615('0x0'));var logger=require(_0x4615('0x1'))(_0x4615('0x2'));var moment=require(_0x4615('0x3'));var BPromise=require(_0x4615('0x4'));var rp=require(_0x4615('0x5'));var fs=require('fs');var path=require(_0x4615('0x6'));var rimraf=require(_0x4615('0x7'));var config=require('../../config/environment');var attributes=require('./userMailQueue.attributes');module[_0x4615('0x8')]=function(_0x254356,_0x12df51){return _0x254356['define'](_0x4615('0x9'),attributes,{'tableName':_0x4615('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5dc3=['../../config/logger','api','bluebird','rimraf','../../config/environment','./userMailQueue.attributes','exports','UserMailQueue','lodash'];(function(_0x31a22e,_0x2e90a7){var _0x2bf5e7=function(_0x2b1180){while(--_0x2b1180){_0x31a22e['push'](_0x31a22e['shift']());}};_0x2bf5e7(++_0x2e90a7);}(_0x5dc3,0x1af));var _0x35dc=function(_0x59d12e,_0x1128ff){_0x59d12e=_0x59d12e-0x0;var _0x2f5ee4=_0x5dc3[_0x59d12e];return _0x2f5ee4;};'use strict';var _=require(_0x35dc('0x0'));var util=require('util');var logger=require(_0x35dc('0x1'))(_0x35dc('0x2'));var moment=require('moment');var BPromise=require(_0x35dc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x35dc('0x4'));var config=require(_0x35dc('0x5'));var attributes=require(_0x35dc('0x6'));module[_0x35dc('0x7')]=function(_0x5d94c0,_0x58c079){return _0x5d94c0['define'](_0x35dc('0x8'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67bcb0c..abe3ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x544cc6,_0x28a762){var _0x547ae5=function(_0x1f33d5){while(--_0x1f33d5){_0x544cc6['push'](_0x544cc6['shift']());}};_0x547ae5(++_0x28a762);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('UserMailQueue,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x4b84=['../../config/logger','rpc','http','then','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserMailQueue,\x20%s,\x20%s','message','lodash','util','randomstring','../../config/utils'];(function(_0x4ed546,_0x244bd0){var _0x10bfcc=function(_0x2e2caa){while(--_0x2e2caa){_0x4ed546['push'](_0x4ed546['shift']());}};_0x10bfcc(++_0x244bd0);}(_0x4b84,0x1cc));var _0x44b8=function(_0x3042c5,_0x36cb88){_0x3042c5=_0x3042c5-0x0;var _0x7cd140=_0x4b84[_0x3042c5];return _0x7cd140;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44b8('0x3'));var logger=require(_0x44b8('0x4'))(_0x44b8('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x44b8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x54274b,_0x327f59,_0x5947f7){return new BPromise(function(_0x3e87c5,_0x5a2353){return client['request'](_0x54274b,_0x5947f7)[_0x44b8('0x7')](function(_0x42319d){logger[_0x44b8('0x8')]('UserMailQueue,\x20%s,\x20%s',_0x327f59,_0x44b8('0x9'));logger[_0x44b8('0xa')](_0x44b8('0xb'),_0x327f59,_0x44b8('0x9'),JSON[_0x44b8('0xc')](_0x42319d));if(_0x42319d[_0x44b8('0xd')]){if(_0x42319d[_0x44b8('0xd')]['code']===0x1f4){logger[_0x44b8('0xd')](_0x44b8('0xe'),_0x327f59,_0x42319d['error'][_0x44b8('0xf')]);return _0x5a2353(_0x42319d['error'][_0x44b8('0xf')]);}logger[_0x44b8('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x327f59,_0x42319d[_0x44b8('0xd')]['message']);return _0x3e87c5(_0x42319d['error'][_0x44b8('0xf')]);}else{logger[_0x44b8('0x8')](_0x44b8('0xe'),_0x327f59,_0x44b8('0x9'));_0x3e87c5(_0x42319d['result']['message']);}})['catch'](function(_0x3fe9fb){logger['error'](_0x44b8('0xe'),_0x327f59,_0x3fe9fb);_0x5a2353(_0x3fe9fb);});});}
\ No newline at end of file
index 3d7958f..088face 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x924e=['sendUserNotification','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated'];(function(_0xf6a8d,_0x359266){var _0x1101d3=function(_0x3825e4){while(--_0x3825e4){_0xf6a8d['push'](_0xf6a8d['shift']());}};_0x1101d3(++_0x359266);}(_0x924e,0x113));var _0xe924=function(_0x2f6075,_0x432a21){_0x2f6075=_0x2f6075-0x0;var _0x5bd973=_0x924e[_0x2f6075];return _0x5bd973;};'use strict';var multer=require(_0xe924('0x0'));var util=require(_0xe924('0x1'));var path=require('path');var timeout=require(_0xe924('0x2'));var express=require(_0xe924('0x3'));var router=express[_0xe924('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe924('0x5'));var interaction=require(_0xe924('0x6'));var config=require(_0xe924('0x7'));var controller=require(_0xe924('0x8'));router[_0xe924('0x9')]('/',auth[_0xe924('0xa')](),controller[_0xe924('0xb')]);module[_0xe924('0xc')]=router;
\ No newline at end of file
+var _0x2249=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','sendUserNotification'];(function(_0x14d454,_0xa071e0){var _0x2b907d=function(_0x511581){while(--_0x511581){_0x14d454['push'](_0x14d454['shift']());}};_0x2b907d(++_0xa071e0);}(_0x2249,0x139));var _0x9224=function(_0x172948,_0x4262cc){_0x172948=_0x172948-0x0;var _0x4aeaa9=_0x2249[_0x172948];return _0x4aeaa9;};'use strict';var multer=require(_0x9224('0x0'));var util=require(_0x9224('0x1'));var path=require(_0x9224('0x2'));var timeout=require(_0x9224('0x3'));var express=require(_0x9224('0x4'));var router=express[_0x9224('0x5')]();var fs_extra=require(_0x9224('0x6'));var auth=require(_0x9224('0x7'));var interaction=require(_0x9224('0x8'));var config=require(_0x9224('0x9'));var controller=require('./userNotification.controller');router['post']('/',auth[_0x9224('0xa')](),controller[_0x9224('0xb')]);module[_0x9224('0xc')]=router;
\ No newline at end of file
index 6feb7af..64967d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9897=['STRING','TEXT','BOOLEAN','sequelize','exports'];(function(_0x132d12,_0x2c9799){var _0x1c3163=function(_0x7d9136){while(--_0x7d9136){_0x132d12['push'](_0x132d12['shift']());}};_0x1c3163(++_0x2c9799);}(_0x9897,0x1c0));var _0x7989=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0x9897[_0x5037ab];return _0x512adb;};'use strict';var Sequelize=require(_0x7989('0x0'));module[_0x7989('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x7989('0x2')]},'recipientsId':{'type':Sequelize[_0x7989('0x3')]},'recipientsDescription':{'type':Sequelize[_0x7989('0x2')]},'beep':{'type':Sequelize[_0x7989('0x4')]}};
\ No newline at end of file
+var _0x2f12=['exports','STRING','TEXT'];(function(_0x18bbfb,_0x12517f){var _0xcc9a2e=function(_0x80ccfd){while(--_0x80ccfd){_0x18bbfb['push'](_0x18bbfb['shift']());}};_0xcc9a2e(++_0x12517f);}(_0x2f12,0x84));var _0x22f1=function(_0x41f6eb,_0x5a3754){_0x41f6eb=_0x41f6eb-0x0;var _0x42e69c=_0x2f12[_0x41f6eb];return _0x42e69c;};'use strict';var Sequelize=require('sequelize');module[_0x22f1('0x0')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x22f1('0x1')]},'recipientsId':{'type':Sequelize[_0x22f1('0x2')]},'recipientsDescription':{'type':Sequelize[_0x22f1('0x1')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index c658dcb..a614c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80b1=['offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','end','stack','name','send','sendUserNotification','body','text','hasOwnProperty','TemplateId','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','error','Sequelize','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','team','user','some','includes','toLowerCase','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','create','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','model','User','union','ids','queue','Queue','push','flatten','getAgents','map','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','ejs','fs-extra','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','sendStatus','status','json'];(function(_0x197063,_0x44e5f8){var _0x5b5457=function(_0x135cca){while(--_0x135cca){_0x197063['push'](_0x197063['shift']());}};_0x5b5457(++_0x44e5f8);}(_0x80b1,0x167));var _0x180b=function(_0x5aba01,_0x11a9ed){_0x5aba01=_0x5aba01-0x0;var _0x1b6c10=_0x80b1[_0x5aba01];return _0x1b6c10;};'use strict';var emlformat=require(_0x180b('0x0'));var rimraf=require(_0x180b('0x1'));var zipdir=require(_0x180b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x180b('0x3'));var moment=require(_0x180b('0x4'));var BPromise=require(_0x180b('0x5'));var Mustache=require('mustache');var util=require(_0x180b('0x6'));var path=require('path');var sox=require(_0x180b('0x7'));var csv=require('to-csv');var ejs=require(_0x180b('0x8'));var fs=require('fs');var fs_extra=require(_0x180b('0x9'));var _=require('lodash');var squel=require(_0x180b('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x180b('0xb'));var toCsv=require(_0x180b('0xc'));var querystring=require(_0x180b('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x180b('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x180b('0xf'));var hardwareService=require(_0x180b('0x10'));var logger=require(_0x180b('0x11'))('api');var utils=require(_0x180b('0x12'));var config=require(_0x180b('0x13'));var licenseUtil=require(_0x180b('0x14'));var db=require(_0x180b('0x15'))['db'];config[_0x180b('0x16')]=_[_0x180b('0x17')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x180b('0x18'))(new Redis(config[_0x180b('0x16')]));require(_0x180b('0x19'))['register'](socket);function respondWithStatusCode(_0x4cf2ed,_0x5a316a){_0x5a316a=_0x5a316a||0xcc;return function(_0x1d20fc){if(_0x1d20fc){return _0x4cf2ed[_0x180b('0x1a')](_0x5a316a);}return _0x4cf2ed[_0x180b('0x1b')](_0x5a316a)['end']();};}function respondWithResult(_0x390948,_0x2ef1af){_0x2ef1af=_0x2ef1af||0xc8;return function(_0x3f8348){if(_0x3f8348){return _0x390948['status'](_0x2ef1af)[_0x180b('0x1c')](_0x3f8348);}};}function respondWithFilteredResult(_0x11477f,_0x31baf0){return function(_0x31f7b9){if(_0x31f7b9){var _0x4e21a2=typeof _0x31baf0[_0x180b('0x1d')]===_0x180b('0x1e')&&typeof _0x31baf0[_0x180b('0x1f')]===_0x180b('0x1e');var _0xc7de94=_0x31f7b9[_0x180b('0x20')];var _0x35f509=_0x4e21a2?0x0:_0x31baf0[_0x180b('0x1d')];var _0x5f0e5f=_0x4e21a2?_0x31f7b9['count']:_0x31baf0[_0x180b('0x1d')]+_0x31baf0[_0x180b('0x1f')];var _0x5f2edd;if(_0x5f0e5f>=_0xc7de94){_0x5f0e5f=_0xc7de94;_0x5f2edd=0xc8;}else{_0x5f2edd=0xce;}_0x11477f[_0x180b('0x1b')](_0x5f2edd);return _0x11477f['set'](_0x180b('0x21'),_0x35f509+'-'+_0x5f0e5f+'/'+_0xc7de94)['json'](_0x31f7b9);}return null;};}function patchUpdates(_0x1c4203){return function(_0x1eed53){try{jsonpatch[_0x180b('0x22')](_0x1eed53,_0x1c4203,!![]);}catch(_0x4979c3){return BPromise[_0x180b('0x23')](_0x4979c3);}return _0x1eed53['save']();};}function saveUpdates(_0x2de159,_0x1d805a){return function(_0xaa5508){if(_0xaa5508){return _0xaa5508[_0x180b('0x24')](_0x2de159)['then'](function(_0x3a24f3){return _0x3a24f3;});}return null;};}function removeEntity(_0x3db6f7,_0x52f7fe){return function(_0xc066d6){if(_0xc066d6){return _0xc066d6[_0x180b('0x25')]()[_0x180b('0x26')](function(){_0x3db6f7[_0x180b('0x1b')](0xcc)[_0x180b('0x27')]();});}};}function handleEntityNotFound(_0x447d40,_0x3d1222){return function(_0x4f2678){if(!_0x4f2678){_0x447d40['sendStatus'](0x194);}return _0x4f2678;};}function handleError(_0x57d6bd,_0x3ee571){_0x3ee571=_0x3ee571||0x1f4;return function(_0x4de28b){logger['error'](_0x4de28b[_0x180b('0x28')]);if(_0x4de28b[_0x180b('0x29')]){delete _0x4de28b[_0x180b('0x29')];}_0x57d6bd[_0x180b('0x1b')](_0x3ee571)[_0x180b('0x2a')](_0x4de28b);};}exports[_0x180b('0x2b')]=function(_0x1e463f,_0x4eab29,_0x449dd3){if(!_0x1e463f[_0x180b('0x2c')]['hasOwnProperty'](_0x180b('0x2d'))&&!_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x2f'))){throw new db['Sequelize']['ValidationError'](_0x180b('0x30'));}else{if(_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x2f'))&&!_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x31'))){throw new db['Sequelize'][(_0x180b('0x32'))](_0x180b('0x33'));}if(!_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x34'))){throw new db['Sequelize'][(_0x180b('0x32'))](_0x180b('0x35'));}else{try{var _0xd233ee=JSON[_0x180b('0x36')](_0x1e463f['body'][_0x180b('0x34')]);}catch(_0x3bbeae){logger[_0x180b('0x37')](_0x3bbeae);throw new db[(_0x180b('0x38'))]['ValidationError'](_0x180b('0x39'));}var _0x2162aa=['chatqueue',_0x180b('0x3a'),_0x180b('0x3b'),_0x180b('0x3c'),_0x180b('0x3d'),_0x180b('0x3e'),'whatsappqueue',_0x180b('0x3f'),_0x180b('0x40')];if(_[_0x180b('0x41')](_0xd233ee,function(_0xb6a23a){return!_[_0x180b('0x42')](_0x2162aa,_0xb6a23a['model'][_0x180b('0x43')]());})){throw new db[(_0x180b('0x38'))][(_0x180b('0x32'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x456ef0={};_0x456ef0[_0x180b('0x44')]=_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')]('senderName')?_0x1e463f[_0x180b('0x2c')][_0x180b('0x44')]:_0x1e463f[_0x180b('0x40')][_0x180b('0x45')];_0x456ef0[_0x180b('0x46')]=_[_0x180b('0x47')](_0x1e463f[_0x180b('0x2c')][_0x180b('0x46')])?null:_0x1e463f[_0x180b('0x2c')]['recipientsDescription'];_0x456ef0['beep']=_0x1e463f[_0x180b('0x2c')][_0x180b('0x48')]||![];_0x456ef0[_0x180b('0x49')]=_0x1e463f[_0x180b('0x40')]['id'];return getContent(_0x1e463f[_0x180b('0x2c')])[_0x180b('0x26')](function(_0x22a47f){_0x456ef0[_0x180b('0x2c')]=_0x22a47f;return getRecipients(_0xd233ee);})[_0x180b('0x26')](function(_0x3cb12a){_0x456ef0[_0x180b('0x4a')]=_[_0x180b('0x4b')](_0x3cb12a)[_0x180b('0x4c')](',');return db['sequelize']['transaction'](function(_0x7d4e8b){return db['UserNotification'][_0x180b('0x4d')](_0x456ef0,{'raw':!![],'transaction':_0x7d4e8b})[_0x180b('0x26')](function(_0x2f85ba){var _0x42b827={'sender':_0x456ef0['senderName'],'description':_0x456ef0[_0x180b('0x46')],'content':_0x456ef0[_0x180b('0x2c')],'beep':_0x456ef0[_0x180b('0x48')]};_0x3cb12a[_0x180b('0x4e')](function(_0x2f1266){_0x42b827[_0x180b('0x4f')]=_0x2f1266;socket[_0x180b('0x50')](_0x180b('0x51'),_0x42b827);});return _0x2f85ba;});});})[_0x180b('0x26')](respondWithResult(_0x4eab29,0xc9))[_0x180b('0x52')](handleError(_0x4eab29,null));};function getContent(_0x5b6d74){return new BPromise(function(_0x88e349,_0x3ca881){if(_0x5b6d74[_0x180b('0x2d')]){_0x88e349(_0x5b6d74[_0x180b('0x2d')]);return;}return db[_0x180b('0x53')][_0x180b('0x54')]({'attributes':[_0x180b('0x55')],'where':{'id':_0x5b6d74[_0x180b('0x2f')]},'raw':!![]})[_0x180b('0x26')](function(_0x1d2d63){if(!_0x1d2d63)throw new db[(_0x180b('0x38'))]['ValidationError'](_0x180b('0x56'));var _0x4a7b69=Mustache['render'](_0x1d2d63[_0x180b('0x55')],_0x5b6d74[_0x180b('0x31')]);_0x88e349(_0x4a7b69);})[_0x180b('0x52')](function(_0x100adf){_0x3ca881(_0x100adf);});});}function getRecipients(_0x36f12a){return new BPromise(function(_0x4884ca,_0x3f40c4){var _0x37278c=[];var _0x465845=[];_0x36f12a[_0x180b('0x4e')](function(_0x1d082a){var _0x257a1f=_['startCase'](_0x1d082a[_0x180b('0x57')]['toLowerCase']());if(_0x257a1f===_0x180b('0x58')){_0x37278c=_[_0x180b('0x59')](_0x37278c,_0x1d082a[_0x180b('0x5a')]);}else{if(_[_0x180b('0x42')](_0x257a1f,_0x180b('0x5b')))_0x257a1f=_0x257a1f['replace']('queue',_0x180b('0x5c'));_0x1d082a['ids'][_0x180b('0x4e')](function(_0x2d0aea){_0x465845[_0x180b('0x5d')](getAgents(_0x257a1f,_0x2d0aea));});}});return BPromise['all'](_0x465845)[_0x180b('0x26')](function(_0x2953d4){_0x37278c=_[_0x180b('0x59')](_0x37278c,_[_0x180b('0x5e')](_0x2953d4));_0x4884ca(_0x37278c);})[_0x180b('0x52')](function(_0x2988ad){_0x3f40c4(_0x2988ad);});});}function getAgents(_0x258795,_0x5c0614){return new BPromise(function(_0x52d812,_0x126088){return db[_0x258795][_0x180b('0x54')]({'where':{'id':_0x5c0614}})[_0x180b('0x26')](function(_0x45a446){return _0x45a446[_0x180b('0x5f')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4b2153){var _0x3fe5ab=_[_0x180b('0x60')](_0x4b2153,'id');_0x52d812(_0x3fe5ab);});})['catch'](function(_0x4c6536){_0x126088(_0x4c6536);});});}
\ No newline at end of file
+var _0xcab2=['forEach','emit','catch','Invalid\x20\x27TemplateId\x27\x20parameter','render','html','view','union','replace','queue','Queue','ids','all','flatten','findOne','getAgents','map','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./userNotification.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','error','stack','name','send','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','recipients','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','smsqueue','whatsappqueue','team','some','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','user','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create'];(function(_0x209bbf,_0x2e2375){var _0x592d4b=function(_0x419947){while(--_0x419947){_0x209bbf['push'](_0x209bbf['shift']());}};_0x592d4b(++_0x2e2375);}(_0xcab2,0x70));var _0x2cab=function(_0x32145f,_0x1671df){_0x32145f=_0x32145f-0x0;var _0x2f8445=_0xcab2[_0x32145f];return _0x2f8445;};'use strict';var emlformat=require(_0x2cab('0x0'));var rimraf=require(_0x2cab('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x2cab('0x2'));var moment=require('moment');var BPromise=require(_0x2cab('0x3'));var Mustache=require(_0x2cab('0x4'));var util=require(_0x2cab('0x5'));var path=require(_0x2cab('0x6'));var sox=require(_0x2cab('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2cab('0x8'));var _=require(_0x2cab('0x9'));var squel=require('squel');var crypto=require(_0x2cab('0xa'));var jsforce=require(_0x2cab('0xb'));var deskjs=require(_0x2cab('0xc'));var toCsv=require(_0x2cab('0xd'));var querystring=require(_0x2cab('0xe'));var Papa=require(_0x2cab('0xf'));var Redis=require(_0x2cab('0x10'));var authService=require(_0x2cab('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2cab('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2cab('0x13'))('api');var utils=require(_0x2cab('0x14'));var config=require(_0x2cab('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2cab('0x16'))['db'];config[_0x2cab('0x17')]=_['defaults'](config[_0x2cab('0x17')],{'host':_0x2cab('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2cab('0x17')]));require(_0x2cab('0x19'))[_0x2cab('0x1a')](socket);function respondWithStatusCode(_0x337361,_0x585071){_0x585071=_0x585071||0xcc;return function(_0x2fbff8){if(_0x2fbff8){return _0x337361[_0x2cab('0x1b')](_0x585071);}return _0x337361['status'](_0x585071)[_0x2cab('0x1c')]();};}function respondWithResult(_0xdb0838,_0x16e7c2){_0x16e7c2=_0x16e7c2||0xc8;return function(_0x5b16a6){if(_0x5b16a6){return _0xdb0838[_0x2cab('0x1d')](_0x16e7c2)[_0x2cab('0x1e')](_0x5b16a6);}};}function respondWithFilteredResult(_0x2d789d,_0x343460){return function(_0x54ab11){if(_0x54ab11){var _0x368dba=typeof _0x343460[_0x2cab('0x1f')]===_0x2cab('0x20')&&typeof _0x343460[_0x2cab('0x21')]===_0x2cab('0x20');var _0x28fc14=_0x54ab11[_0x2cab('0x22')];var _0xc52a=_0x368dba?0x0:_0x343460[_0x2cab('0x1f')];var _0x59dd6c=_0x368dba?_0x54ab11['count']:_0x343460[_0x2cab('0x1f')]+_0x343460['limit'];var _0x3f3f76;if(_0x59dd6c>=_0x28fc14){_0x59dd6c=_0x28fc14;_0x3f3f76=0xc8;}else{_0x3f3f76=0xce;}_0x2d789d[_0x2cab('0x1d')](_0x3f3f76);return _0x2d789d['set']('Content-Range',_0xc52a+'-'+_0x59dd6c+'/'+_0x28fc14)['json'](_0x54ab11);}return null;};}function patchUpdates(_0x5689db){return function(_0x319acb){try{jsonpatch[_0x2cab('0x23')](_0x319acb,_0x5689db,!![]);}catch(_0x53855a){return BPromise[_0x2cab('0x24')](_0x53855a);}return _0x319acb[_0x2cab('0x25')]();};}function saveUpdates(_0x45515e,_0x157cf1){return function(_0x1497e1){if(_0x1497e1){return _0x1497e1[_0x2cab('0x26')](_0x45515e)['then'](function(_0x3843a7){return _0x3843a7;});}return null;};}function removeEntity(_0x48d0aa,_0x2b9f3f){return function(_0x13c5cd){if(_0x13c5cd){return _0x13c5cd[_0x2cab('0x27')]()[_0x2cab('0x28')](function(){_0x48d0aa[_0x2cab('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x173655,_0x2de06d){return function(_0x5c09ee){if(!_0x5c09ee){_0x173655[_0x2cab('0x1b')](0x194);}return _0x5c09ee;};}function handleError(_0x387c9a,_0x4d12d9){_0x4d12d9=_0x4d12d9||0x1f4;return function(_0x2d7860){logger[_0x2cab('0x29')](_0x2d7860[_0x2cab('0x2a')]);if(_0x2d7860[_0x2cab('0x2b')]){delete _0x2d7860['name'];}_0x387c9a[_0x2cab('0x1d')](_0x4d12d9)[_0x2cab('0x2c')](_0x2d7860);};}exports['sendUserNotification']=function(_0x56d2fc,_0x3328fe,_0x5ceee3){if(!_0x56d2fc[_0x2cab('0x2d')][_0x2cab('0x2e')](_0x2cab('0x2f'))&&!_0x56d2fc[_0x2cab('0x2d')][_0x2cab('0x2e')](_0x2cab('0x30'))){throw new db[(_0x2cab('0x31'))][(_0x2cab('0x32'))](_0x2cab('0x33'));}else{if(_0x56d2fc['body'][_0x2cab('0x2e')]('TemplateId')&&!_0x56d2fc['body']['hasOwnProperty']('view')){throw new db['Sequelize']['ValidationError'](_0x2cab('0x34'));}if(!_0x56d2fc[_0x2cab('0x2d')][_0x2cab('0x2e')]('recipients')){throw new db[(_0x2cab('0x31'))]['ValidationError'](_0x2cab('0x35'));}else{try{var _0x390837=JSON['parse'](_0x56d2fc[_0x2cab('0x2d')][_0x2cab('0x36')]);}catch(_0x458754){logger['error'](_0x458754);throw new db['Sequelize'][(_0x2cab('0x32'))](_0x2cab('0x37'));}var _0x3a4c5d=[_0x2cab('0x38'),_0x2cab('0x39'),'mailqueue',_0x2cab('0x3a'),_0x2cab('0x3b'),'voicequeue',_0x2cab('0x3c'),_0x2cab('0x3d'),'user'];if(_[_0x2cab('0x3e')](_0x390837,function(_0x8a35d1){return!_[_0x2cab('0x3f')](_0x3a4c5d,_0x8a35d1['model'][_0x2cab('0x40')]());})){throw new db[(_0x2cab('0x31'))]['ValidationError'](_0x2cab('0x41'));}}}var _0xf1cd48={};_0xf1cd48[_0x2cab('0x42')]=_0x56d2fc[_0x2cab('0x2d')]['hasOwnProperty'](_0x2cab('0x42'))?_0x56d2fc[_0x2cab('0x2d')]['senderName']:_0x56d2fc[_0x2cab('0x43')]['fullname'];_0xf1cd48['recipientsDescription']=_['isEmpty'](_0x56d2fc[_0x2cab('0x2d')][_0x2cab('0x44')])?null:_0x56d2fc['body'][_0x2cab('0x44')];_0xf1cd48[_0x2cab('0x45')]=_0x56d2fc[_0x2cab('0x2d')][_0x2cab('0x45')]||![];_0xf1cd48[_0x2cab('0x46')]=_0x56d2fc[_0x2cab('0x43')]['id'];return getContent(_0x56d2fc[_0x2cab('0x2d')])[_0x2cab('0x28')](function(_0x3c394b){_0xf1cd48[_0x2cab('0x2d')]=_0x3c394b;return getRecipients(_0x390837);})[_0x2cab('0x28')](function(_0x2f9290){_0xf1cd48[_0x2cab('0x47')]=_[_0x2cab('0x48')](_0x2f9290)[_0x2cab('0x49')](',');return db[_0x2cab('0x4a')][_0x2cab('0x4b')](function(_0x27ab85){return db[_0x2cab('0x4c')][_0x2cab('0x4d')](_0xf1cd48,{'raw':!![],'transaction':_0x27ab85})[_0x2cab('0x28')](function(_0x4166e4){var _0x11dd76={'sender':_0xf1cd48['senderName'],'description':_0xf1cd48['recipientsDescription'],'content':_0xf1cd48[_0x2cab('0x2d')],'beep':_0xf1cd48[_0x2cab('0x45')]};_0x2f9290[_0x2cab('0x4e')](function(_0x4a2108){_0x11dd76['recipient']=_0x4a2108;socket[_0x2cab('0x4f')]('userNotification:send',_0x11dd76);});return _0x4166e4;});});})['then'](respondWithResult(_0x3328fe,0xc9))[_0x2cab('0x50')](handleError(_0x3328fe,null));};function getContent(_0x3f0a3b){return new BPromise(function(_0x242de7,_0x299e9d){if(_0x3f0a3b['text']){_0x242de7(_0x3f0a3b[_0x2cab('0x2f')]);return;}return db['Template']['findOne']({'attributes':['html'],'where':{'id':_0x3f0a3b[_0x2cab('0x30')]},'raw':!![]})['then'](function(_0x27a3d8){if(!_0x27a3d8)throw new db[(_0x2cab('0x31'))][(_0x2cab('0x32'))](_0x2cab('0x51'));var _0x4a53e2=Mustache[_0x2cab('0x52')](_0x27a3d8[_0x2cab('0x53')],_0x3f0a3b[_0x2cab('0x54')]);_0x242de7(_0x4a53e2);})[_0x2cab('0x50')](function(_0x39f35d){_0x299e9d(_0x39f35d);});});}function getRecipients(_0x19dc77){return new BPromise(function(_0x454f05,_0x4f39e9){var _0x3f1b4e=[];var _0x1872e1=[];_0x19dc77[_0x2cab('0x4e')](function(_0x13ef55){var _0x523b16=_['startCase'](_0x13ef55['model'][_0x2cab('0x40')]());if(_0x523b16==='User'){_0x3f1b4e=_[_0x2cab('0x55')](_0x3f1b4e,_0x13ef55['ids']);}else{if(_['includes'](_0x523b16,'queue'))_0x523b16=_0x523b16[_0x2cab('0x56')](_0x2cab('0x57'),_0x2cab('0x58'));_0x13ef55[_0x2cab('0x59')]['forEach'](function(_0x106c0c){_0x1872e1['push'](getAgents(_0x523b16,_0x106c0c));});}});return BPromise[_0x2cab('0x5a')](_0x1872e1)['then'](function(_0x16149c){_0x3f1b4e=_[_0x2cab('0x55')](_0x3f1b4e,_[_0x2cab('0x5b')](_0x16149c));_0x454f05(_0x3f1b4e);})[_0x2cab('0x50')](function(_0x50f6df){_0x4f39e9(_0x50f6df);});});}function getAgents(_0x1e3388,_0x2b0c54){return new BPromise(function(_0x4ff6b6,_0x43d33a){return db[_0x1e3388][_0x2cab('0x5c')]({'where':{'id':_0x2b0c54}})[_0x2cab('0x28')](function(_0x5bd615){return _0x5bd615[_0x2cab('0x5d')]({'attributes':['id'],'raw':!![]})[_0x2cab('0x28')](function(_0x291f4a){var _0x387179=_[_0x2cab('0x5e')](_0x291f4a,'id');_0x4ff6b6(_0x387179);});})[_0x2cab('0x50')](function(_0x2f82ec){_0x43d33a(_0x2f82ec);});});}
\ No newline at end of file
index 76a7ba6..09402c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa16b=['../../mysqldb','UserNotification','save','update','emit','hook','exports'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0xa16b,0x181));var _0xba16=function(_0x3058b4,_0x5a42b2){_0x3058b4=_0x3058b4-0x0;var _0x449053=_0xa16b[_0x3058b4];return _0x449053;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xba16('0x0'))['db'][_0xba16('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xba16('0x2'),'afterUpdate':_0xba16('0x3'),'afterDestroy':'remove'};function emitEvent(_0x46d47f){return function(_0x21d043,_0x2154d6,_0x209734){UserNotificationEvents[_0xba16('0x4')](_0x46d47f+':'+_0x21d043['id'],_0x21d043);UserNotificationEvents['emit'](_0x46d47f,_0x21d043);_0x209734(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0xba16('0x5')](e,emitEvent(event));}}module[_0xba16('0x6')]=UserNotificationEvents;
\ No newline at end of file
+var _0x374f=['UserNotification','save','update','remove','emit','hook','exports'];(function(_0x48a96f,_0x530059){var _0x3ff3ef=function(_0x286059){while(--_0x286059){_0x48a96f['push'](_0x48a96f['shift']());}};_0x3ff3ef(++_0x530059);}(_0x374f,0x142));var _0xf374=function(_0x21113c,_0x1ed17f){_0x21113c=_0x21113c-0x0;var _0x366a3e=_0x374f[_0x21113c];return _0x366a3e;};'use strict';var EventEmitter=require('events');var UserNotification=require('../../mysqldb')['db'][_0xf374('0x0')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf374('0x1'),'afterUpdate':_0xf374('0x2'),'afterDestroy':_0xf374('0x3')};function emitEvent(_0x5218c0){return function(_0x4cab01,_0x24f436,_0x160416){UserNotificationEvents[_0xf374('0x4')](_0x5218c0+':'+_0x4cab01['id'],_0x4cab01);UserNotificationEvents[_0xf374('0x4')](_0x5218c0,_0x4cab01);_0x160416(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0xf374('0x5')](e,emitEvent(event));}}module[_0xf374('0x6')]=UserNotificationEvents;
\ No newline at end of file
index ed1138a..4582f46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e3=['path','rimraf','exports','define','userNotifications','utf8mb4','lodash','util','api'];(function(_0xe5300,_0x47ad43){var _0xdca19c=function(_0x54d2f2){while(--_0x54d2f2){_0xe5300['push'](_0xe5300['shift']());}};_0xdca19c(++_0x47ad43);}(_0xe2e3,0x114));var _0x3e2e=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xe2e3[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0x3e2e('0x0'));var util=require(_0x3e2e('0x1'));var logger=require('../../config/logger')(_0x3e2e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3e2e('0x3'));var rimraf=require(_0x3e2e('0x4'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0x3e2e('0x5')]=function(_0x1f4be5,_0x34de6b){return _0x1f4be5[_0x3e2e('0x6')]('UserNotification',attributes,{'tableName':_0x3e2e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3e2e('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbb8e=['define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./userNotification.attributes'];(function(_0x5453d7,_0x40c399){var _0x523fb4=function(_0x35ed79){while(--_0x35ed79){_0x5453d7['push'](_0x5453d7['shift']());}};_0x523fb4(++_0x40c399);}(_0xbb8e,0x164));var _0xebb8=function(_0x1bbaec,_0x5cd74d){_0x1bbaec=_0x1bbaec-0x0;var _0x445f83=_0xbb8e[_0x1bbaec];return _0x445f83;};'use strict';var _=require(_0xebb8('0x0'));var util=require(_0xebb8('0x1'));var logger=require(_0xebb8('0x2'))(_0xebb8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xebb8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xebb8('0x5'));var config=require(_0xebb8('0x6'));var attributes=require(_0xebb8('0x7'));module['exports']=function(_0x14fb20,_0x59199b){return _0x14fb20[_0xebb8('0x8')](_0xebb8('0x9'),attributes,{'tableName':_0xebb8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xebb8('0xb'),'collate':_0xebb8('0xc')});};
\ No newline at end of file
index f6211be..a2e2a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235d=['result','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x235d,0xb7));var _0xd235=function(_0x4e11f,_0x1522cc){_0x4e11f=_0x4e11f-0x0;var _0x4240c3=_0x235d[_0x4e11f];return _0x4240c3;};'use strict';var _=require(_0xd235('0x0'));var util=require(_0xd235('0x1'));var moment=require('moment');var BPromise=require(_0xd235('0x2'));var rs=require(_0xd235('0x3'));var fs=require('fs');var Redis=require(_0xd235('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd235('0x5'));var logger=require(_0xd235('0x6'))('rpc');var config=require(_0xd235('0x7'));var jayson=require(_0xd235('0x8'));var client=jayson[_0xd235('0x9')][_0xd235('0xa')]({'port':0x232a});config[_0xd235('0xb')]=_[_0xd235('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd235('0xd'))[_0xd235('0xe')](socket);function respondWithRpcPromise(_0x39f4cf,_0x37619a,_0x29738c){return new BPromise(function(_0x4bcf6a,_0x2ff5b0){return client[_0xd235('0xf')](_0x39f4cf,_0x29738c)['then'](function(_0x5bfd35){logger[_0xd235('0x10')](_0xd235('0x11'),_0x37619a,_0xd235('0x12'));logger[_0xd235('0x13')](_0xd235('0x14'),_0x37619a,'request\x20sent',JSON[_0xd235('0x15')](_0x5bfd35));if(_0x5bfd35['error']){if(_0x5bfd35[_0xd235('0x16')][_0xd235('0x17')]===0x1f4){logger['error'](_0xd235('0x11'),_0x37619a,_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);return _0x2ff5b0(_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);}logger[_0xd235('0x16')](_0xd235('0x11'),_0x37619a,_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);return _0x4bcf6a(_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);}else{logger[_0xd235('0x10')]('UserNotification,\x20%s,\x20%s',_0x37619a,'request\x20sent');_0x4bcf6a(_0x5bfd35[_0xd235('0x19')][_0xd235('0x18')]);}})['catch'](function(_0x5839b0){logger[_0xd235('0x16')](_0xd235('0x11'),_0x37619a,_0x5839b0);_0x2ff5b0(_0x5839b0);});});}
\ No newline at end of file
+var _0x80fb=['client','http','redis','defaults','./userNotification.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','UserNotification,\x20%s,\x20%s','message','catch','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x367385,_0x1f9e55){var _0x3c0351=function(_0x397a28){while(--_0x397a28){_0x367385['push'](_0x367385['shift']());}};_0x3c0351(++_0x1f9e55);}(_0x80fb,0x101));var _0xb80f=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x80fb[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0xb80f('0x0'));var moment=require(_0xb80f('0x1'));var BPromise=require(_0xb80f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb80f('0x3'));var logger=require(_0xb80f('0x4'))(_0xb80f('0x5'));var config=require(_0xb80f('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xb80f('0x7')][_0xb80f('0x8')]({'port':0x232a});config[_0xb80f('0x9')]=_[_0xb80f('0xa')](config[_0xb80f('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb80f('0x9')]));require(_0xb80f('0xb'))[_0xb80f('0xc')](socket);function respondWithRpcPromise(_0x4cbb1a,_0x21e3ff,_0x2ec9f2){return new BPromise(function(_0xf96456,_0x3380d8){return client[_0xb80f('0xd')](_0x4cbb1a,_0x2ec9f2)[_0xb80f('0xe')](function(_0xfdd1e7){logger[_0xb80f('0xf')]('UserNotification,\x20%s,\x20%s',_0x21e3ff,_0xb80f('0x10'));logger[_0xb80f('0x11')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x21e3ff,'request\x20sent',JSON[_0xb80f('0x12')](_0xfdd1e7));if(_0xfdd1e7[_0xb80f('0x13')]){if(_0xfdd1e7[_0xb80f('0x13')][_0xb80f('0x14')]===0x1f4){logger[_0xb80f('0x13')](_0xb80f('0x15'),_0x21e3ff,_0xfdd1e7[_0xb80f('0x13')]['message']);return _0x3380d8(_0xfdd1e7[_0xb80f('0x13')][_0xb80f('0x16')]);}logger[_0xb80f('0x13')](_0xb80f('0x15'),_0x21e3ff,_0xfdd1e7[_0xb80f('0x13')][_0xb80f('0x16')]);return _0xf96456(_0xfdd1e7[_0xb80f('0x13')]['message']);}else{logger[_0xb80f('0xf')](_0xb80f('0x15'),_0x21e3ff,'request\x20sent');_0xf96456(_0xfdd1e7['result'][_0xb80f('0x16')]);}})[_0xb80f('0x17')](function(_0x52511c){logger['error']('UserNotification,\x20%s,\x20%s',_0x21e3ff,_0x52511c);_0x3380d8(_0x52511c);});});}
\ No newline at end of file
index 71eb8f2..8ba3862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa93c=['length','userNotification:','./userNotification.events','save','remove','update','emit','register'];(function(_0x62f1a2,_0x7d84cb){var _0x137fb0=function(_0xdea36a){while(--_0xdea36a){_0x62f1a2['push'](_0x62f1a2['shift']());}};_0x137fb0(++_0x7d84cb);}(_0xa93c,0x1b2));var _0xca93=function(_0x270adf,_0x1daaa3){_0x270adf=_0x270adf-0x0;var _0x29eda9=_0xa93c[_0x270adf];return _0x29eda9;};'use strict';var UserNotificationEvents=require(_0xca93('0x0'));var events=[_0xca93('0x1'),_0xca93('0x2'),_0xca93('0x3')];function createListener(_0xd01418,_0x425fdb){return function(_0x25224f){_0x425fdb[_0xca93('0x4')](_0xd01418,_0x25224f);};}function removeListener(_0x3708a5,_0x1f9b96){return function(){UserNotificationEvents['removeListener'](_0x3708a5,_0x1f9b96);};}exports[_0xca93('0x5')]=function(_0x2e64ce){for(var _0x49d7a3=0x0,_0x4dbb16=events[_0xca93('0x6')];_0x49d7a3<_0x4dbb16;_0x49d7a3++){var _0x270e74=events[_0x49d7a3];var _0x40760c=createListener(_0xca93('0x7')+_0x270e74,_0x2e64ce);UserNotificationEvents['on'](_0x270e74,_0x40760c);}};
\ No newline at end of file
+var _0xa49b=['./userNotification.events','save','remove','update','emit','removeListener','length','userNotification:'];(function(_0x1d5dde,_0x5d0adc){var _0xeb8b85=function(_0x13d7b3){while(--_0x13d7b3){_0x1d5dde['push'](_0x1d5dde['shift']());}};_0xeb8b85(++_0x5d0adc);}(_0xa49b,0x188));var _0xba49=function(_0x28f12a,_0x54dcb1){_0x28f12a=_0x28f12a-0x0;var _0x3ca417=_0xa49b[_0x28f12a];return _0x3ca417;};'use strict';var UserNotificationEvents=require(_0xba49('0x0'));var events=[_0xba49('0x1'),_0xba49('0x2'),_0xba49('0x3')];function createListener(_0x2b3b56,_0xa24f99){return function(_0x33ab12){_0xa24f99[_0xba49('0x4')](_0x2b3b56,_0x33ab12);};}function removeListener(_0x5c05fd,_0xd7ed5a){return function(){UserNotificationEvents[_0xba49('0x5')](_0x5c05fd,_0xd7ed5a);};}exports['register']=function(_0x20b3fc){for(var _0x38dbca=0x0,_0x7fe06e=events[_0xba49('0x6')];_0x38dbca<_0x7fe06e;_0x38dbca++){var _0x1a4042=events[_0x38dbca];var _0x1a5482=createListener(_0xba49('0x7')+_0x1a4042,_0x20b3fc);UserNotificationEvents['on'](_0x1a4042,_0x1a5482);}};
\ No newline at end of file
index efa1eaf..2e5b506 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(_0x4ded50,_0x4a6af3){var _0xa92135=function(_0xe09b41){while(--_0xe09b41){_0x4ded50['push'](_0x4ded50['shift']());}};_0xa92135(++_0x4a6af3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x13c68a,_0x5b3be2){var _0x299b3c=function(_0x2ecfb5){while(--_0x2ecfb5){_0x13c68a['push'](_0x13c68a['shift']());}};_0x299b3c(++_0x5b3be2);}(_0xedd9,0xfc));var _0x9edd=function(_0x2ca4d,_0x57ebf4){_0x2ca4d=_0x2ca4d-0x0;var _0x20cff6=_0xedd9[_0x2ca4d];return _0x20cff6;};'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 662b4e9..9e2e2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x523a=['exports','INTEGER','sequelize'];(function(_0x8dc2b2,_0x50910f){var _0x6a3346=function(_0x28825d){while(--_0x28825d){_0x8dc2b2['push'](_0x8dc2b2['shift']());}};_0x6a3346(++_0x50910f);}(_0x523a,0x7a));var _0xa523=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x523a[_0xf50820];return _0x2a9b10;};'use strict';var Sequelize=require(_0xa523('0x0'));module[_0xa523('0x1')]={'penalty':{'type':Sequelize[_0xa523('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb3e9=['INTEGER','sequelize'];(function(_0x4bf0d4,_0x594635){var _0x29f6ea=function(_0x98295b){while(--_0x98295b){_0x4bf0d4['push'](_0x4bf0d4['shift']());}};_0x29f6ea(++_0x594635);}(_0xb3e9,0x1eb));var _0x9b3e=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0xb3e9[_0x5cb1af];return _0x8d7940;};'use strict';var Sequelize=require(_0x9b3e('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x9b3e('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 4091ce0..07ec5e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ba=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','user_has_openchannel_queues','lodash','api'];(function(_0x3c71ae,_0x3dd3a4){var _0x151b4e=function(_0x4e6c8a){while(--_0x4e6c8a){_0x3c71ae['push'](_0x3c71ae['shift']());}};_0x151b4e(++_0x3dd3a4);}(_0x52ba,0x18a));var _0xa52b=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x52ba[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xa52b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa52b('0x1'));var moment=require(_0xa52b('0x2'));var BPromise=require(_0xa52b('0x3'));var rp=require(_0xa52b('0x4'));var fs=require('fs');var path=require(_0xa52b('0x5'));var rimraf=require(_0xa52b('0x6'));var config=require(_0xa52b('0x7'));var attributes=require(_0xa52b('0x8'));module['exports']=function(_0x3f7016,_0xb1964e){return _0x3f7016[_0xa52b('0x9')]('UserOpenchannelQueue',attributes,{'tableName':_0xa52b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaed8=['request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','lodash','api','bluebird'];(function(_0x3533cd,_0x3193d1){var _0x4b9f24=function(_0x14f1d3){while(--_0x14f1d3){_0x3533cd['push'](_0x3533cd['shift']());}};_0x4b9f24(++_0x3193d1);}(_0xaed8,0x1ec));var _0x8aed=function(_0x25b4a4,_0x2e081b){_0x25b4a4=_0x25b4a4-0x0;var _0x707267=_0xaed8[_0x25b4a4];return _0x707267;};'use strict';var _=require(_0x8aed('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8aed('0x1'));var moment=require('moment');var BPromise=require(_0x8aed('0x2'));var rp=require(_0x8aed('0x3'));var fs=require('fs');var path=require(_0x8aed('0x4'));var rimraf=require(_0x8aed('0x5'));var config=require(_0x8aed('0x6'));var attributes=require(_0x8aed('0x7'));module[_0x8aed('0x8')]=function(_0x11043f,_0x4aa29c){return _0x11043f['define']('UserOpenchannelQueue',attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b19f9d1..c7250b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf38b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x34a0b2,_0xc75f81){var _0x1d62fd=function(_0x3431e4){while(--_0x3431e4){_0x34a0b2['push'](_0x34a0b2['shift']());}};_0x1d62fd(++_0xc75f81);}(_0xf38b,0x133));var _0xbf38=function(_0x22a2d9,_0x4b375b){_0x22a2d9=_0x22a2d9-0x0;var _0x574a5b=_0xf38b[_0x22a2d9];return _0x574a5b;};'use strict';var _=require(_0xbf38('0x0'));var util=require(_0xbf38('0x1'));var moment=require('moment');var BPromise=require(_0xbf38('0x2'));var rs=require(_0xbf38('0x3'));var fs=require('fs');var Redis=require(_0xbf38('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf38('0x5'))(_0xbf38('0x6'));var config=require(_0xbf38('0x7'));var jayson=require(_0xbf38('0x8'));var client=jayson[_0xbf38('0x9')][_0xbf38('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3385ff,_0x4c2632,_0x2a09e9){return new BPromise(function(_0x1b7780,_0xfbcdf9){return client[_0xbf38('0xb')](_0x3385ff,_0x2a09e9)[_0xbf38('0xc')](function(_0x242690){logger[_0xbf38('0xd')](_0xbf38('0xe'),_0x4c2632,_0xbf38('0xf'));logger[_0xbf38('0x10')](_0xbf38('0x11'),_0x4c2632,_0xbf38('0xf'),JSON[_0xbf38('0x12')](_0x242690));if(_0x242690[_0xbf38('0x13')]){if(_0x242690[_0xbf38('0x13')][_0xbf38('0x14')]===0x1f4){logger['error'](_0xbf38('0xe'),_0x4c2632,_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);return _0xfbcdf9(_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);}logger['error'](_0xbf38('0xe'),_0x4c2632,_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);return _0x1b7780(_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);}else{logger[_0xbf38('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x4c2632,_0xbf38('0xf'));_0x1b7780(_0x242690[_0xbf38('0x16')][_0xbf38('0x15')]);}})[_0xbf38('0x17')](function(_0x1ffa02){logger[_0xbf38('0x13')](_0xbf38('0xe'),_0x4c2632,_0x1ffa02);_0xfbcdf9(_0x1ffa02);});});}
\ No newline at end of file
+var _0xb3ae=['result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb3ae,0x75));var _0xeb3a=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xb3ae[_0x51020b];return _0x371e47;};'use strict';var _=require('lodash');var util=require(_0xeb3a('0x0'));var moment=require(_0xeb3a('0x1'));var BPromise=require(_0xeb3a('0x2'));var rs=require(_0xeb3a('0x3'));var fs=require('fs');var Redis=require(_0xeb3a('0x4'));var db=require(_0xeb3a('0x5'))['db'];var utils=require(_0xeb3a('0x6'));var logger=require(_0xeb3a('0x7'))(_0xeb3a('0x8'));var config=require('../../config/environment');var jayson=require(_0xeb3a('0x9'));var client=jayson[_0xeb3a('0xa')][_0xeb3a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a5238,_0x453748,_0x324da1){return new BPromise(function(_0x183e46,_0x58da62){return client[_0xeb3a('0xc')](_0x5a5238,_0x324da1)[_0xeb3a('0xd')](function(_0x595a7d){logger[_0xeb3a('0xe')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x453748,_0xeb3a('0xf'));logger['debug'](_0xeb3a('0x10'),_0x453748,_0xeb3a('0xf'),JSON['stringify'](_0x595a7d));if(_0x595a7d[_0xeb3a('0x11')]){if(_0x595a7d[_0xeb3a('0x11')][_0xeb3a('0x12')]===0x1f4){logger['error'](_0xeb3a('0x13'),_0x453748,_0x595a7d[_0xeb3a('0x11')][_0xeb3a('0x14')]);return _0x58da62(_0x595a7d[_0xeb3a('0x11')][_0xeb3a('0x14')]);}logger[_0xeb3a('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x453748,_0x595a7d[_0xeb3a('0x11')][_0xeb3a('0x14')]);return _0x183e46(_0x595a7d[_0xeb3a('0x11')][_0xeb3a('0x14')]);}else{logger[_0xeb3a('0xe')](_0xeb3a('0x13'),_0x453748,_0xeb3a('0xf'));_0x183e46(_0x595a7d[_0xeb3a('0x15')][_0xeb3a('0x14')]);}})[_0xeb3a('0x16')](function(_0xde18ad){logger[_0xeb3a('0x11')](_0xeb3a('0x13'),_0x453748,_0xde18ad);_0x58da62(_0xde18ad);});});}
\ No newline at end of file
index 3e967ed..5d940be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a23=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/sections','getSections','/:id/resources','getResources','post','/:id/clone','clone','addSections','addResources','put','update','delete','destroy','removeResources','exports','util','path','connect-timeout','express'];(function(_0x4c2808,_0x10765a){var _0x54f96a=function(_0x5825ec){while(--_0x5825ec){_0x4c2808['push'](_0x4c2808['shift']());}};_0x54f96a(++_0x10765a);}(_0x7a23,0x1a0));var _0x37a2=function(_0x94a875,_0x536eef){_0x94a875=_0x94a875-0x0;var _0x287a2c=_0x7a23[_0x94a875];return _0x287a2c;};'use strict';var multer=require('multer');var util=require(_0x37a2('0x0'));var path=require(_0x37a2('0x1'));var timeout=require(_0x37a2('0x2'));var express=require(_0x37a2('0x3'));var router=express[_0x37a2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x37a2('0x5'));var interaction=require(_0x37a2('0x6'));var config=require(_0x37a2('0x7'));var controller=require(_0x37a2('0x8'));router[_0x37a2('0x9')]('/',auth[_0x37a2('0xa')](),controller[_0x37a2('0xb')]);router[_0x37a2('0x9')](_0x37a2('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x37a2('0x9')](_0x37a2('0xd'),auth[_0x37a2('0xa')](),controller[_0x37a2('0xe')]);router[_0x37a2('0x9')](_0x37a2('0xf'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x10')]);router['get'](_0x37a2('0x11'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x12')]);router[_0x37a2('0x13')]('/',auth[_0x37a2('0xa')](),controller['create']);router['post'](_0x37a2('0x14'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x15')]);router[_0x37a2('0x13')]('/:id/sections',auth[_0x37a2('0xa')](),controller[_0x37a2('0x16')]);router[_0x37a2('0x13')]('/:id/resources',auth[_0x37a2('0xa')](),controller[_0x37a2('0x17')]);router[_0x37a2('0x18')](_0x37a2('0xd'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x19')]);router[_0x37a2('0x1a')](_0x37a2('0xd'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x1b')]);router[_0x37a2('0x1a')](_0x37a2('0xf'),auth[_0x37a2('0xa')](),controller['removeSections']);router[_0x37a2('0x1a')](_0x37a2('0x11'),auth['isAuthenticated'](),controller[_0x37a2('0x1c')]);module[_0x37a2('0x1d')]=router;
\ No newline at end of file
+var _0x0ef2=['index','/describe','describe','/:id','show','/:id/sections','getSections','getResources','post','create','/:id/clone','clone','addSections','addResources','destroy','delete','removeSections','/:id/resources','removeResources','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x0ef2,0x169));var _0x20ef=function(_0x152121,_0x120c53){_0x152121=_0x152121-0x0;var _0x592a85=_0x0ef2[_0x152121];return _0x592a85;};'use strict';var multer=require(_0x20ef('0x0'));var util=require(_0x20ef('0x1'));var path=require(_0x20ef('0x2'));var timeout=require(_0x20ef('0x3'));var express=require('express');var router=express[_0x20ef('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x20ef('0x5'));var interaction=require(_0x20ef('0x6'));var config=require(_0x20ef('0x7'));var controller=require(_0x20ef('0x8'));router[_0x20ef('0x9')]('/',auth[_0x20ef('0xa')](),controller[_0x20ef('0xb')]);router[_0x20ef('0x9')](_0x20ef('0xc'),auth[_0x20ef('0xa')](),controller[_0x20ef('0xd')]);router['get'](_0x20ef('0xe'),auth[_0x20ef('0xa')](),controller[_0x20ef('0xf')]);router[_0x20ef('0x9')](_0x20ef('0x10'),auth[_0x20ef('0xa')](),controller[_0x20ef('0x11')]);router[_0x20ef('0x9')]('/:id/resources',auth['isAuthenticated'](),controller[_0x20ef('0x12')]);router[_0x20ef('0x13')]('/',auth[_0x20ef('0xa')](),controller[_0x20ef('0x14')]);router[_0x20ef('0x13')](_0x20ef('0x15'),auth['isAuthenticated'](),controller[_0x20ef('0x16')]);router['post'](_0x20ef('0x10'),auth[_0x20ef('0xa')](),controller[_0x20ef('0x17')]);router[_0x20ef('0x13')]('/:id/resources',auth[_0x20ef('0xa')](),controller[_0x20ef('0x18')]);router['put'](_0x20ef('0xe'),auth[_0x20ef('0xa')](),controller['update']);router['delete'](_0x20ef('0xe'),auth['isAuthenticated'](),controller[_0x20ef('0x19')]);router[_0x20ef('0x1a')](_0x20ef('0x10'),auth['isAuthenticated'](),controller[_0x20ef('0x1b')]);router[_0x20ef('0x1a')](_0x20ef('0x1c'),auth[_0x20ef('0xa')](),controller[_0x20ef('0x1d')]);module[_0x20ef('0x1e')]=router;
\ No newline at end of file
index f6e6a85..27639be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4808=['BOOLEAN','exports','name','setDataValue','crudPermissions','getDataValue','split','STRING'];(function(_0x51d129,_0x175d7d){var _0x44c377=function(_0x5ee454){while(--_0x5ee454){_0x51d129['push'](_0x51d129['shift']());}};_0x44c377(++_0x175d7d);}(_0x4808,0x1f1));var _0x8480=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x4808[_0x550d12];return _0x12103d;};'use strict';var Sequelize=require('sequelize');module[_0x8480('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8480('0x1')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x202f2a){this[_0x8480('0x2')](_0x8480('0x3'),_0x202f2a?_0x202f2a['join'](''):[]);},'get':function(){return this[_0x8480('0x4')](_0x8480('0x3'))?this[_0x8480('0x4')](_0x8480('0x3'))[_0x8480('0x5')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x8480('0x6')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x8480('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xbdc7=['setDataValue','crudPermissions','join','getDataValue','BOOLEAN','sequelize','exports','STRING'];(function(_0x41de6b,_0x46060c){var _0x8d343c=function(_0x56d057){while(--_0x56d057){_0x41de6b['push'](_0x41de6b['shift']());}};_0x8d343c(++_0x46060c);}(_0xbdc7,0x14d));var _0x7bdc=function(_0x5ea722,_0x5f755f){_0x5ea722=_0x5ea722-0x0;var _0x1e4dff=_0xbdc7[_0x5ea722];return _0x1e4dff;};'use strict';var Sequelize=require(_0x7bdc('0x0'));module[_0x7bdc('0x1')]={'name':{'type':Sequelize[_0x7bdc('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x7bdc('0x2')],'set':function(_0x23b375){this[_0x7bdc('0x3')](_0x7bdc('0x4'),_0x23b375?_0x23b375[_0x7bdc('0x5')](''):[]);},'get':function(){return this[_0x7bdc('0x6')]('crudPermissions')?this['getDataValue'](_0x7bdc('0x4'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x7bdc('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x7bdc('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x7bdc('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x7bdc('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x7bdc('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x7bdc('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x7bdc('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x7bdc('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index addbb2c..8e741cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aad=['fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','UserProfile','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','clone','createdAt','updatedAt','crudPermissions','omit','sequelize','transaction','get','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','push','removeSections','ids','getSections','enabled','includes','subsections','forEach','resourceId','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs'];(function(_0x2d2258,_0x2ce510){var _0x18e155=function(_0x11949e){while(--_0x11949e){_0x2d2258['push'](_0x2d2258['shift']());}};_0x18e155(++_0x2ce510);}(_0x8aad,0x146));var _0xd8aa=function(_0x5074e1,_0x5e1389){_0x5074e1=_0x5074e1-0x0;var _0x420516=_0x8aad[_0x5074e1];return _0x420516;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];config[_0xd8aa('0x17')]=_[_0xd8aa('0x18')](config[_0xd8aa('0x17')],{'host':_0xd8aa('0x19'),'port':0x18eb});var socket=require(_0xd8aa('0x1a'))(new Redis(config['redis']));require('./userProfile.socket')[_0xd8aa('0x1b')](socket);function respondWithStatusCode(_0x319ffe,_0x2bbd1e){_0x2bbd1e=_0x2bbd1e||0xcc;return function(_0x47c131){if(_0x47c131){return _0x319ffe[_0xd8aa('0x1c')](_0x2bbd1e);}return _0x319ffe[_0xd8aa('0x1d')](_0x2bbd1e)[_0xd8aa('0x1e')]();};}function respondWithResult(_0x404ed6,_0x47a0e3){_0x47a0e3=_0x47a0e3||0xc8;return function(_0x476930){if(_0x476930){return _0x404ed6[_0xd8aa('0x1d')](_0x47a0e3)['json'](_0x476930);}};}function respondWithFilteredResult(_0x16d5c6,_0x223a34){return function(_0x32e2cd){if(_0x32e2cd){var _0x3a29ca=typeof _0x223a34[_0xd8aa('0x1f')]==='undefined'&&typeof _0x223a34[_0xd8aa('0x20')]===_0xd8aa('0x21');var _0xb156e6=_0x32e2cd[_0xd8aa('0x22')];var _0x56936b=_0x3a29ca?0x0:_0x223a34[_0xd8aa('0x1f')];var _0x3df281=_0x3a29ca?_0x32e2cd[_0xd8aa('0x22')]:_0x223a34[_0xd8aa('0x1f')]+_0x223a34[_0xd8aa('0x20')];var _0x4fe5d8;if(_0x3df281>=_0xb156e6){_0x3df281=_0xb156e6;_0x4fe5d8=0xc8;}else{_0x4fe5d8=0xce;}_0x16d5c6[_0xd8aa('0x1d')](_0x4fe5d8);return _0x16d5c6[_0xd8aa('0x23')](_0xd8aa('0x24'),_0x56936b+'-'+_0x3df281+'/'+_0xb156e6)['json'](_0x32e2cd);}return null;};}function patchUpdates(_0xa7cf85){return function(_0x7a4ce7){try{jsonpatch[_0xd8aa('0x25')](_0x7a4ce7,_0xa7cf85,!![]);}catch(_0x290849){return BPromise[_0xd8aa('0x26')](_0x290849);}return _0x7a4ce7[_0xd8aa('0x27')]();};}function saveUpdates(_0x1f64f8,_0x34d957){return function(_0x375f64){if(_0x375f64){return _0x375f64[_0xd8aa('0x28')](_0x1f64f8)[_0xd8aa('0x29')](function(_0x370d6f){return _0x370d6f;});}return null;};}function removeEntity(_0x26cc66,_0x5f1027){return function(_0x1f066a){if(_0x1f066a){return _0x1f066a[_0xd8aa('0x2a')]()[_0xd8aa('0x29')](function(){_0x26cc66[_0xd8aa('0x1d')](0xcc)[_0xd8aa('0x1e')]();});}};}function handleEntityNotFound(_0x3696fd,_0x26ab06){return function(_0x19edee){if(!_0x19edee){_0x3696fd[_0xd8aa('0x1c')](0x194);}return _0x19edee;};}function handleError(_0xbe531,_0x4cdb90){_0x4cdb90=_0x4cdb90||0x1f4;return function(_0x1f2a28){logger[_0xd8aa('0x2b')](_0x1f2a28[_0xd8aa('0x2c')]);if(_0x1f2a28['name']){delete _0x1f2a28[_0xd8aa('0x2d')];}_0xbe531['status'](_0x4cdb90)[_0xd8aa('0x2e')](_0x1f2a28);};}exports[_0xd8aa('0x2f')]=function(_0x37902c,_0x168a2e){var _0x44f783={},_0x28f3cc={},_0xd8d3b3={'count':0x0,'rows':[]};var _0x3cbe8d=_['map'](db[_0xd8aa('0x30')][_0xd8aa('0x31')],function(_0x11071f){return{'name':_0x11071f[_0xd8aa('0x32')],'type':_0x11071f[_0xd8aa('0x33')][_0xd8aa('0x34')]};});_0x28f3cc[_0xd8aa('0x35')]=_[_0xd8aa('0x36')](_0x3cbe8d,'name');_0x28f3cc[_0xd8aa('0x37')]=_[_0xd8aa('0x38')](_0x37902c[_0xd8aa('0x37')]);_0x28f3cc['filters']=_[_0xd8aa('0x39')](_0x28f3cc[_0xd8aa('0x35')],_0x28f3cc[_0xd8aa('0x37')]);_0x44f783[_0xd8aa('0x3a')]=_[_0xd8aa('0x39')](_0x28f3cc[_0xd8aa('0x35')],qs[_0xd8aa('0x3b')](_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x3b')]));_0x44f783['attributes']=_0x44f783[_0xd8aa('0x3a')][_0xd8aa('0x3c')]?_0x44f783[_0xd8aa('0x3a')]:_0x28f3cc[_0xd8aa('0x35')];if(!_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x3d')](_0xd8aa('0x3e'))){_0x44f783[_0xd8aa('0x20')]=qs[_0xd8aa('0x20')](_0x37902c['query'][_0xd8aa('0x20')]);_0x44f783['offset']=qs[_0xd8aa('0x1f')](_0x37902c[_0xd8aa('0x37')]['offset']);}_0x44f783[_0xd8aa('0x3f')]=qs[_0xd8aa('0x40')](_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x40')]);_0x44f783[_0xd8aa('0x41')]=qs['filters'](_['pick'](_0x37902c[_0xd8aa('0x37')],_0x28f3cc['filters']),_0x3cbe8d);if(_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x42')]){_0x44f783[_0xd8aa('0x41')]=_[_0xd8aa('0x43')](_0x44f783[_0xd8aa('0x41')],{'$or':_[_0xd8aa('0x36')](_0x3cbe8d,function(_0x3e79b6){if(_0x3e79b6[_0xd8aa('0x33')]!==_0xd8aa('0x44')){var _0xa34bea={};_0xa34bea[_0x3e79b6[_0xd8aa('0x2d')]]={'$like':'%'+_0x37902c['query'][_0xd8aa('0x42')]+'%'};return _0xa34bea;}})});}_0x44f783=_[_0xd8aa('0x43')]({},_0x44f783,_0x37902c[_0xd8aa('0x45')]);var _0x4b1de0={'where':_0x44f783[_0xd8aa('0x41')]};return db[_0xd8aa('0x30')][_0xd8aa('0x22')](_0x4b1de0)[_0xd8aa('0x29')](function(_0x3a0284){_0xd8d3b3[_0xd8aa('0x22')]=_0x3a0284;if(_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x44f783[_0xd8aa('0x47')]=[{'all':!![]}];}return db[_0xd8aa('0x30')][_0xd8aa('0x48')](_0x44f783);})[_0xd8aa('0x29')](function(_0x3b26c9){_0xd8d3b3[_0xd8aa('0x49')]=_0x3b26c9;return _0xd8d3b3;})[_0xd8aa('0x29')](respondWithFilteredResult(_0x168a2e,_0x44f783))[_0xd8aa('0x4a')](handleError(_0x168a2e,null));};exports[_0xd8aa('0x4b')]=function(_0x139ed6,_0x5a17aa){var _0x25d2d4={'raw':![],'where':{'id':_0x139ed6[_0xd8aa('0x4c')]['id']}},_0x22cce6={};_0x22cce6[_0xd8aa('0x35')]=_[_0xd8aa('0x38')](db[_0xd8aa('0x30')]['rawAttributes']);_0x22cce6[_0xd8aa('0x37')]=_['keys'](_0x139ed6[_0xd8aa('0x37')]);_0x22cce6['filters']=_[_0xd8aa('0x39')](_0x22cce6['model'],_0x22cce6['query']);_0x25d2d4[_0xd8aa('0x3a')]=_[_0xd8aa('0x39')](_0x22cce6[_0xd8aa('0x35')],qs[_0xd8aa('0x3b')](_0x139ed6[_0xd8aa('0x37')][_0xd8aa('0x3b')]));_0x25d2d4['attributes']=_0x25d2d4[_0xd8aa('0x3a')][_0xd8aa('0x3c')]?_0x25d2d4[_0xd8aa('0x3a')]:_0x22cce6[_0xd8aa('0x35')];if(_0x139ed6[_0xd8aa('0x37')]['includeAll']){_0x25d2d4['include']=[{'all':!![]}];}_0x25d2d4=_['merge']({},_0x25d2d4,_0x139ed6[_0xd8aa('0x45')]);return db[_0xd8aa('0x30')][_0xd8aa('0x4d')](_0x25d2d4)[_0xd8aa('0x29')](handleEntityNotFound(_0x5a17aa,null))[_0xd8aa('0x29')](respondWithResult(_0x5a17aa,null))[_0xd8aa('0x4a')](handleError(_0x5a17aa,null));};exports['create']=function(_0x221e2b,_0x241e23){return db['UserProfile'][_0xd8aa('0x4e')](_0x221e2b[_0xd8aa('0x4f')],{})[_0xd8aa('0x29')](respondWithResult(_0x241e23,0xc9))['catch'](handleError(_0x241e23,null));};exports[_0xd8aa('0x50')]=function(_0x625df9,_0x3b93b1){var _0x1f3ed6={'where':{'id':_0x625df9[_0xd8aa('0x4c')]['id']}},_0x1c6a21={};_0x1c6a21['model']=_['keys'](db[_0xd8aa('0x30')][_0xd8aa('0x31')]);_0x1f3ed6[_0xd8aa('0x3a')]=_[_0xd8aa('0x39')](_0x1c6a21[_0xd8aa('0x35')],qs[_0xd8aa('0x3b')](_0x625df9[_0xd8aa('0x37')]['fields']));_0x1f3ed6[_0xd8aa('0x3a')]=_0x1f3ed6[_0xd8aa('0x3a')]['length']?_0x1f3ed6[_0xd8aa('0x3a')]:_0x1c6a21['model'];if(_0x625df9[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x1f3ed6[_0xd8aa('0x47')]=[{'all':!![]}];}_0x1f3ed6=_['merge']({},_0x1f3ed6,_0x625df9['options']);return db['UserProfile']['find'](_0x1f3ed6)[_0xd8aa('0x29')](handleEntityNotFound(_0x3b93b1,null))[_0xd8aa('0x29')](function(_0x36222e){if(_0x36222e){var _0x5113b5=_0x36222e['get']({'plain':!![]});_0x5113b5=qs['omit'](_0x5113b5,['id',_0xd8aa('0x51'),_0xd8aa('0x52'),_0xd8aa('0x53')]);_0x625df9[_0xd8aa('0x4f')]=_[_0xd8aa('0x54')](_0x625df9[_0xd8aa('0x4f')],['id',_0xd8aa('0x51'),_0xd8aa('0x52')]);return db[_0xd8aa('0x55')][_0xd8aa('0x56')](function(_0x3153f3){return db[_0xd8aa('0x30')][_0xd8aa('0x4e')](_['merge'](_0x5113b5,_0x625df9['body']),{'include':_0x625df9[_0xd8aa('0x37')][_0xd8aa('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x3153f3})[_0xd8aa('0x29')](function(_0xe216d8){var _0x586dcf=_0xe216d8[_0xd8aa('0x57')]({'plain':!![]});return db[_0xd8aa('0x58')]['findAll']({'where':{'userProfileId':_0x625df9['params']['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x38e1ec){if(_0x38e1ec){return BPromise[_0xd8aa('0x59')](_0x38e1ec,function(_0x410436){return new BPromise(function(_0x54aaef,_0x541a8b){if(_0x410436[_0xd8aa('0x5a')]===null||_0x410436['autoAssociation']===0x1)_0x54aaef(null);return db[_0xd8aa('0x5b')][_0xd8aa('0x48')]({'where':{'sectionId':_0x410436['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x2d41c9){var _0x158eee=_[_0xd8aa('0x36')](_0x2d41c9,function(_0x4e4a62){return qs[_0xd8aa('0x54')](_0x4e4a62,['id',_0xd8aa('0x51'),_0xd8aa('0x52'),_0xd8aa('0x5c')]);});_0x54aaef(_0x158eee);})[_0xd8aa('0x4a')](function(_0x170954){_0x541a8b(_0x170954);});})[_0xd8aa('0x29')](function(_0x33706c){var _0x3fba51=qs[_0xd8aa('0x54')](_0x410436,['id',_0xd8aa('0x51'),_0xd8aa('0x52')]);_0x3fba51[_0xd8aa('0x5d')]=_0x586dcf['id'];if(_0x33706c)_0x3fba51[_0xd8aa('0x5e')]=_0x33706c;return _0x3fba51;})[_0xd8aa('0x29')](function(_0x406c32){return db[_0xd8aa('0x58')][_0xd8aa('0x4e')](_0x406c32,{'include':[{'model':db[_0xd8aa('0x5b')],'as':_0xd8aa('0x5e')}],'raw':!![],'transaction':_0x3153f3});});})[_0xd8aa('0x29')](function(){return _0x586dcf;});}});});});}})['then'](respondWithResult(_0x3b93b1,0xc9))['catch'](handleError(_0x3b93b1,null));};exports['update']=function(_0x2e0cfb,_0x5e3369){if(_0x2e0cfb[_0xd8aa('0x4f')]['id']){delete _0x2e0cfb[_0xd8aa('0x4f')]['id'];}return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x2e0cfb[_0xd8aa('0x4c')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x5e3369,null))[_0xd8aa('0x29')](saveUpdates(_0x2e0cfb[_0xd8aa('0x4f')],null))[_0xd8aa('0x29')](respondWithResult(_0x5e3369,null))[_0xd8aa('0x4a')](handleError(_0x5e3369,null));};exports[_0xd8aa('0x2a')]=function(_0x508c37,_0x5a4c5c){return db[_0xd8aa('0x30')]['find']({'where':{'id':_0x508c37[_0xd8aa('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5a4c5c,null))['then'](removeEntity(_0x5a4c5c,null))[_0xd8aa('0x4a')](handleError(_0x5a4c5c,null));};exports[_0xd8aa('0x5f')]=function(_0x5b0d21,_0x3ee72e){return db['UserProfile'][_0xd8aa('0x5f')]()[_0xd8aa('0x29')](respondWithResult(_0x3ee72e,null))[_0xd8aa('0x4a')](handleError(_0x3ee72e,null));};exports[_0xd8aa('0x60')]=function(_0x17bc21,_0x24132d){var _0x20865a=_0x17bc21[_0xd8aa('0x4f')];return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x17bc21['params']['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x24132d,null))[_0xd8aa('0x29')](function(_0x19651c){if(_0x19651c){return db['sequelize']['transaction'](function(_0x6a8bb1){return db[_0xd8aa('0x58')]['destroy']({'where':{'userProfileId':_0x17bc21[_0xd8aa('0x4c')]['id'],'sectionId':_[_0xd8aa('0x36')](_0x20865a,function(_0x2def5a){return _0x2def5a[_0xd8aa('0x5c')];})},'transaction':_0x6a8bb1})[_0xd8aa('0x29')](function(){var _0x27c98a=_[_0xd8aa('0x36')](_0x20865a,function(_0x4b6ee8){_0x4b6ee8[_0xd8aa('0x5d')]=_0x17bc21[_0xd8aa('0x4c')]['id'];return _0x4b6ee8;});var _0x85c97b=[];return BPromise[_0xd8aa('0x59')](_0x27c98a,function(_0x3e69d9){return db[_0xd8aa('0x58')][_0xd8aa('0x4e')](_0x3e69d9,{'include':[{'model':db[_0xd8aa('0x5b')],'as':'Resources'}],'raw':!![],'transaction':_0x6a8bb1})[_0xd8aa('0x29')](function(_0x45da98){_0x85c97b[_0xd8aa('0x61')](_0x45da98['get']({'plain':!![]}));});})[_0xd8aa('0x29')](function(){return _0x85c97b;});});});}})[_0xd8aa('0x29')](function(_0x19aa56){return _0x19aa56;})[_0xd8aa('0x29')](respondWithResult(_0x24132d,null))[_0xd8aa('0x4a')](handleError(_0x24132d,null));};exports[_0xd8aa('0x62')]=function(_0x95427d,_0x2c6083){var _0x12f182;return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x95427d[_0xd8aa('0x4c')]['id']},'attributes':['id',_0xd8aa('0x2d')]})[_0xd8aa('0x29')](handleEntityNotFound(_0x2c6083,null))[_0xd8aa('0x29')](function(_0x12638b){if(_0x12638b){_0x12f182=_0x12638b;return db[_0xd8aa('0x58')][_0xd8aa('0x2a')]({'where':{'userProfileId':_0x95427d['params']['id'],'sectionId':_0x95427d[_0xd8aa('0x37')][_0xd8aa('0x63')]}});}})[_0xd8aa('0x29')](function(){return _0x12f182;})[_0xd8aa('0x29')](respondWithStatusCode(_0x2c6083,null))['catch'](handleError(_0x2c6083,null));};exports[_0xd8aa('0x64')]=function(_0x160a59,_0x3cec88){var _0x8ffb88=[];var _0x5bb727=[];return db[_0xd8aa('0x58')]['findAll']({'where':{'userProfileId':_0x160a59[_0xd8aa('0x4c')]['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0xb725b3){_0x8ffb88=_[_0xd8aa('0x42')](_0xb725b3,function(_0xd02eb6){return _0xd02eb6[_0xd8aa('0x65')]===0x1||_[_0xd8aa('0x66')]([0x3eb,0x709],_0xd02eb6['sectionId']);});if(!_['isEmpty'](_0x8ffb88)){return _[_0xd8aa('0x36')](_0x8ffb88,function(_0x4299c4){return _0x4299c4[_0xd8aa('0x5c')];});}else{return;}})['then'](function(_0xc575c8){if(_0xc575c8)_0x5bb727=_0xc575c8;if(_[_0xd8aa('0x66')](_0x5bb727,0x64)){var _0x56cd3d=_[_0xd8aa('0x4d')](_0x8ffb88,{'sectionId':0x64});return hasDefaultDashboard(_0x56cd3d)[_0xd8aa('0x29')](function(_0x518588){return _['map'](_0x8ffb88,function(_0x2aaecc){if(_0x2aaecc['sectionId']===0x64){_0x2aaecc[_0xd8aa('0x67')]=_0x518588;}return _0x2aaecc;});});}else{return;}})[_0xd8aa('0x29')](function(_0x9093a7){if(_0x9093a7)_0x8ffb88=_0x9093a7;if(_[_0xd8aa('0x66')](_0x5bb727,0x3eb)){var _0xb8f3a6=_[_0xd8aa('0x4d')](_0x8ffb88,{'sectionId':0x3eb});return getCustomDashboards(_0xb8f3a6)['then'](function(_0xd23e6b){return _[_0xd8aa('0x36')](_0x8ffb88,function(_0x3b574f){if(_0xb8f3a6['enabled']){if(_0x3b574f['sectionId']===0x3eb){_0x3b574f['subsections']=_0xd23e6b;}}else{if(_0x3b574f['sectionId']===0x64){_0x3b574f[_0xd8aa('0x67')]=_0xd23e6b;}}return _0x3b574f;});});}else{return;}})[_0xd8aa('0x29')](function(_0x5050a0){if(_0x5050a0)_0x8ffb88=_0x5050a0;if(_['includes'](_0x5bb727,0x709)){var _0x40b35d=_[_0xd8aa('0x4d')](_0x8ffb88,{'sectionId':0x709});return getPlugins(_0x40b35d)['then'](function(_0x52ffaf){if(_0x40b35d[_0xd8aa('0x65')]){return _[_0xd8aa('0x36')](_0x8ffb88,function(_0x5ece00){if(_0x5ece00['sectionId']===0x709){_0x5ece00['subsections']=_0x52ffaf;}return _0x5ece00;});}else{var _0x3dd2ed={'sectionId':0x76c,'enabled':0x1,'subsections':_0x52ffaf};var _0x417dcf=_[_0xd8aa('0x36')](_0x8ffb88);_0x417dcf[_0xd8aa('0x61')](_0x3dd2ed);return _0x417dcf;}});}else{return;}})[_0xd8aa('0x29')](function(_0x41d5a9){if(_0x41d5a9)_0x8ffb88=_0x41d5a9;return _[_0xd8aa('0x42')](_0x8ffb88,[_0xd8aa('0x65'),0x1]);})[_0xd8aa('0x29')](respondWithResult(_0x3cec88,null))[_0xd8aa('0x4a')](handleError(_0x3cec88,null));};function hasDefaultDashboard(_0x44a16f){var _0x3497a3=[0x65];return new BPromise(function(_0x1c6e62,_0x3bb8f6){try{if(_0x44a16f[_0xd8aa('0x5a')]){_0x1c6e62(_0x3497a3);}else{return db[_0xd8aa('0x5b')]['findOne']({'where':{'sectionId':_0x44a16f['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x3f4aff){_0x3f4aff?_0x1c6e62(_0x3497a3):_0x1c6e62();});}}catch(_0x47b401){_0x3bb8f6(_0x47b401);}});}function getCustomDashboards(_0x320a99){var _0x352bce=[];return new BPromise(function(_0x2c3239,_0x141043){try{if(_0x320a99[_0xd8aa('0x5a')]){return db['Dashboard'][_0xd8aa('0x48')]({'raw':!![]})[_0xd8aa('0x29')](function(_0x57eaff){_0x57eaff[_0xd8aa('0x68')](function(_0xb117cc){_0x352bce['push'](_0xb117cc['id']+0x1869f);});_0x2c3239(_0x352bce);});}else{return db[_0xd8aa('0x5b')][_0xd8aa('0x48')]({'where':{'sectionId':_0x320a99['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x2c2915){_0x2c2915[_0xd8aa('0x68')](function(_0x2bfbaa){_0x352bce['push'](_0x2bfbaa[_0xd8aa('0x69')]+0x1869f);});_0x2c3239(_0x352bce);});}}catch(_0x580eb2){_0x141043(_0x580eb2);}});}function getPlugins(_0x44b53b){var _0x21e46a=[];return new BPromise(function(_0x2f6386,_0x5e490c){try{if(_0x44b53b[_0xd8aa('0x5a')]){return db['Plugin'][_0xd8aa('0x48')]({'raw':!![]})[_0xd8aa('0x29')](function(_0x1e1341){_0x1e1341[_0xd8aa('0x68')](function(_0x48db69){_0x21e46a[_0xd8aa('0x61')](_0x48db69['id']+0x15b38);});_0x2f6386(_0x21e46a);});}else{return db[_0xd8aa('0x5b')][_0xd8aa('0x48')]({'where':{'sectionId':_0x44b53b['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x4edac6){_0x4edac6[_0xd8aa('0x68')](function(_0x44ed5f){_0x21e46a[_0xd8aa('0x61')](_0x44ed5f[_0xd8aa('0x69')]+0x15b38);});_0x2f6386(_0x21e46a);});}}catch(_0x3cfcb9){_0x5e490c(_0x3cfcb9);}});}exports['addResources']=function(_0x5b0831,_0x3289cf){return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x5b0831[_0xd8aa('0x4c')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x3289cf,null))[_0xd8aa('0x29')](function(_0x3db85b){if(_0x3db85b){return db['sequelize'][_0xd8aa('0x56')](function(_0x237ed9){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x5b0831[_0xd8aa('0x4c')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x2a9b73){if(_0x2a9b73){return db[_0xd8aa('0x58')][_0xd8aa('0x2a')]({'where':{'userProfileId':_0x5b0831[_0xd8aa('0x4c')]['id'],'id':_[_0xd8aa('0x36')](_0x2a9b73,function(_0x414ddb){return _0x414ddb['id'];})},'transaction':_0x237ed9});}})['then'](function(_0x5e6075){var _0x554fb1=_[_0xd8aa('0x36')](_0x5b0831[_0xd8aa('0x4f')],function(_0x107d62){_0x107d62[_0xd8aa('0x5d')]=_0x5b0831['params']['id'];return _0x107d62;});return db[_0xd8aa('0x58')][_0xd8aa('0x6a')](_0x554fb1,{'raw':!![],'transaction':_0x237ed9});})['then'](function(_0x1cc629){var _0x2d3cd6=_[_0xd8aa('0x42')](_[_0xd8aa('0x36')](_0x1cc629,function(_0x149dc5){return _0x149dc5[_0xd8aa('0x57')]({'plain':!![]});}),{'includeAll':![]});if(_0x2d3cd6){return db[_0xd8aa('0x58')]['findAll']({'where':{'userProfileId':_0x5b0831[_0xd8aa('0x4c')]['id'],'sectionId':_['map'](_0x2d3cd6,function(_0x112535){return _0x112535[_0xd8aa('0x5c')];})},'attributes':['id','sectionId'],'raw':!![]})[_0xd8aa('0x29')](function(_0x13d59c){var _0x182cbd=_[_0xd8aa('0x36')](_0x5b0831[_0xd8aa('0x4f')],function(_0x1cd8aa){_0x1cd8aa[_0xd8aa('0x5d')]=_0x5b0831['params']['id'];return _0x1cd8aa;});return db[_0xd8aa('0x5b')][_0xd8aa('0x6a')](_0x182cbd,{'raw':!![],'transaction':_0x237ed9});});}})[_0xd8aa('0x4a')](handleError(_0x3289cf,null));});}})[_0xd8aa('0x29')](function(_0x4f1f80){var _0xdad00e=_[_0xd8aa('0x36')](_0x4f1f80,function(_0x5b590c){return _0x5b590c['get']({'plain':!![]});});})['then'](respondWithResult(_0x3289cf,null))['catch'](handleError(_0x3289cf,null));};exports[_0xd8aa('0x6b')]=function(_0x359ed6,_0xe8b39e,_0x47954e){return db[_0xd8aa('0x30')]['find']({'where':{'id':_0x359ed6[_0xd8aa('0x4c')]['id']}})['then'](handleEntityNotFound(_0xe8b39e,null))['then'](function(_0x50e12f){if(_0x50e12f){return _0x50e12f[_0xd8aa('0x6b')](_0x359ed6['query'][_0xd8aa('0x63')]);}})[_0xd8aa('0x29')](respondWithStatusCode(_0xe8b39e,null))[_0xd8aa('0x4a')](handleError(_0xe8b39e,null));};exports[_0xd8aa('0x6c')]=function(_0x161aaa,_0x4c164e){var _0x2a5d25={};if(!_0x161aaa['query']['section'])throw new Error(_0xd8aa('0x6d'));if(!_0x161aaa[_0xd8aa('0x37')][_0xd8aa('0x3d')](_0xd8aa('0x3e'))){_0x2a5d25['limit']=qs[_0xd8aa('0x20')](_0x161aaa[_0xd8aa('0x37')][_0xd8aa('0x20')]);_0x2a5d25[_0xd8aa('0x1f')]=qs['offset'](_0x161aaa[_0xd8aa('0x37')][_0xd8aa('0x1f')]);}return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x161aaa[_0xd8aa('0x4c')]['id']}})[_0xd8aa('0x29')](function(_0x3d5219){if(!_0x3d5219)throw new Error(_0xd8aa('0x6e')+_0x161aaa[_0xd8aa('0x4c')]['id']);return db['UserProfile'][_0xd8aa('0x6c')](_0x161aaa);})['then'](respondWithFilteredResult(_0x4c164e,_0x2a5d25))[_0xd8aa('0x4a')](handleError(_0x4c164e,null));};
\ No newline at end of file
+var _0xee87=['fields','length','find','catch','body','clone','get','omit','createdAt','updatedAt','crudPermissions','sequelize','create','each','autoAssociation','UserProfileResource','sectionId','userProfileId','UserProfileSection','Resources','describe','addSections','ids','getSections','enabled','includes','isEmpty','subsections','push','findOne','Dashboard','resourceId','forEach','addResources','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','then','destroy','stack','name','index','UserProfile','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes'];(function(_0x577fae,_0x1592d9){var _0x218b80=function(_0x1ac8ad){while(--_0x1ac8ad){_0x577fae['push'](_0x577fae['shift']());}};_0x218b80(++_0x1592d9);}(_0xee87,0x10d));var _0x7ee8=function(_0x1a2d93,_0x5e4948){_0x1a2d93=_0x1a2d93-0x0;var _0x369aa3=_0xee87[_0x1a2d93];return _0x369aa3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7ee8('0x0'));var zipdir=require(_0x7ee8('0x1'));var jsonpatch=require(_0x7ee8('0x2'));var rp=require(_0x7ee8('0x3'));var moment=require(_0x7ee8('0x4'));var BPromise=require(_0x7ee8('0x5'));var Mustache=require(_0x7ee8('0x6'));var util=require(_0x7ee8('0x7'));var path=require(_0x7ee8('0x8'));var sox=require(_0x7ee8('0x9'));var csv=require('to-csv');var ejs=require(_0x7ee8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7ee8('0xb'));var squel=require(_0x7ee8('0xc'));var crypto=require(_0x7ee8('0xd'));var jsforce=require(_0x7ee8('0xe'));var deskjs=require(_0x7ee8('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7ee8('0x10'));var Redis=require('ioredis');var authService=require(_0x7ee8('0x11'));var qs=require(_0x7ee8('0x12'));var as=require(_0x7ee8('0x13'));var hardwareService=require(_0x7ee8('0x14'));var logger=require(_0x7ee8('0x15'))(_0x7ee8('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7ee8('0x17'));var db=require(_0x7ee8('0x18'))['db'];config[_0x7ee8('0x19')]=_[_0x7ee8('0x1a')](config[_0x7ee8('0x19')],{'host':_0x7ee8('0x1b'),'port':0x18eb});var socket=require(_0x7ee8('0x1c'))(new Redis(config[_0x7ee8('0x19')]));require(_0x7ee8('0x1d'))[_0x7ee8('0x1e')](socket);function respondWithStatusCode(_0x1669d7,_0x3ac36a){_0x3ac36a=_0x3ac36a||0xcc;return function(_0x59a5d3){if(_0x59a5d3){return _0x1669d7[_0x7ee8('0x1f')](_0x3ac36a);}return _0x1669d7[_0x7ee8('0x20')](_0x3ac36a)[_0x7ee8('0x21')]();};}function respondWithResult(_0x192d8c,_0xf4a2c8){_0xf4a2c8=_0xf4a2c8||0xc8;return function(_0xc46e32){if(_0xc46e32){return _0x192d8c[_0x7ee8('0x20')](_0xf4a2c8)[_0x7ee8('0x22')](_0xc46e32);}};}function respondWithFilteredResult(_0x124442,_0x18d962){return function(_0x4028a7){if(_0x4028a7){var _0xf14110=typeof _0x18d962['offset']===_0x7ee8('0x23')&&typeof _0x18d962['limit']===_0x7ee8('0x23');var _0x459ad1=_0x4028a7['count'];var _0x59e544=_0xf14110?0x0:_0x18d962[_0x7ee8('0x24')];var _0x46a49d=_0xf14110?_0x4028a7[_0x7ee8('0x25')]:_0x18d962[_0x7ee8('0x24')]+_0x18d962[_0x7ee8('0x26')];var _0x49f7e0;if(_0x46a49d>=_0x459ad1){_0x46a49d=_0x459ad1;_0x49f7e0=0xc8;}else{_0x49f7e0=0xce;}_0x124442[_0x7ee8('0x20')](_0x49f7e0);return _0x124442[_0x7ee8('0x27')](_0x7ee8('0x28'),_0x59e544+'-'+_0x46a49d+'/'+_0x459ad1)['json'](_0x4028a7);}return null;};}function patchUpdates(_0x27bff9){return function(_0x406c2c){try{jsonpatch[_0x7ee8('0x29')](_0x406c2c,_0x27bff9,!![]);}catch(_0x1bcdd9){return BPromise['reject'](_0x1bcdd9);}return _0x406c2c[_0x7ee8('0x2a')]();};}function saveUpdates(_0x273bbe,_0x1342ca){return function(_0x5568cb){if(_0x5568cb){return _0x5568cb[_0x7ee8('0x2b')](_0x273bbe)[_0x7ee8('0x2c')](function(_0x3118fe){return _0x3118fe;});}return null;};}function removeEntity(_0x5ae459,_0x3f9cae){return function(_0x3870e9){if(_0x3870e9){return _0x3870e9[_0x7ee8('0x2d')]()['then'](function(){_0x5ae459[_0x7ee8('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d23fb,_0x368b8c){return function(_0x357683){if(!_0x357683){_0x4d23fb['sendStatus'](0x194);}return _0x357683;};}function handleError(_0x3396e3,_0x534075){_0x534075=_0x534075||0x1f4;return function(_0x2e31ed){logger['error'](_0x2e31ed[_0x7ee8('0x2e')]);if(_0x2e31ed['name']){delete _0x2e31ed[_0x7ee8('0x2f')];}_0x3396e3[_0x7ee8('0x20')](_0x534075)['send'](_0x2e31ed);};}exports[_0x7ee8('0x30')]=function(_0x1f34c5,_0x2d8809){var _0x10af17={},_0x2a8422={},_0x24ec48={'count':0x0,'rows':[]};var _0xaf69bf=_['map'](db[_0x7ee8('0x31')]['rawAttributes'],function(_0x40feae){return{'name':_0x40feae[_0x7ee8('0x32')],'type':_0x40feae[_0x7ee8('0x33')][_0x7ee8('0x34')]};});_0x2a8422['model']=_[_0x7ee8('0x35')](_0xaf69bf,_0x7ee8('0x2f'));_0x2a8422['query']=_[_0x7ee8('0x36')](_0x1f34c5[_0x7ee8('0x37')]);_0x2a8422[_0x7ee8('0x38')]=_[_0x7ee8('0x39')](_0x2a8422[_0x7ee8('0x3a')],_0x2a8422['query']);_0x10af17[_0x7ee8('0x3b')]=_[_0x7ee8('0x39')](_0x2a8422[_0x7ee8('0x3a')],qs['fields'](_0x1f34c5[_0x7ee8('0x37')]['fields']));_0x10af17[_0x7ee8('0x3b')]=_0x10af17[_0x7ee8('0x3b')]['length']?_0x10af17[_0x7ee8('0x3b')]:_0x2a8422[_0x7ee8('0x3a')];if(!_0x1f34c5[_0x7ee8('0x37')]['hasOwnProperty'](_0x7ee8('0x3c'))){_0x10af17['limit']=qs[_0x7ee8('0x26')](_0x1f34c5[_0x7ee8('0x37')][_0x7ee8('0x26')]);_0x10af17[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x1f34c5[_0x7ee8('0x37')][_0x7ee8('0x24')]);}_0x10af17[_0x7ee8('0x3d')]=qs[_0x7ee8('0x3e')](_0x1f34c5[_0x7ee8('0x37')][_0x7ee8('0x3e')]);_0x10af17[_0x7ee8('0x3f')]=qs[_0x7ee8('0x38')](_[_0x7ee8('0x40')](_0x1f34c5['query'],_0x2a8422['filters']),_0xaf69bf);if(_0x1f34c5[_0x7ee8('0x37')]['filter']){_0x10af17[_0x7ee8('0x3f')]=_[_0x7ee8('0x41')](_0x10af17[_0x7ee8('0x3f')],{'$or':_[_0x7ee8('0x35')](_0xaf69bf,function(_0x111588){if(_0x111588[_0x7ee8('0x33')]!==_0x7ee8('0x42')){var _0x384d83={};_0x384d83[_0x111588[_0x7ee8('0x2f')]]={'$like':'%'+_0x1f34c5[_0x7ee8('0x37')][_0x7ee8('0x43')]+'%'};return _0x384d83;}})});}_0x10af17=_[_0x7ee8('0x41')]({},_0x10af17,_0x1f34c5[_0x7ee8('0x44')]);var _0x3ef618={'where':_0x10af17[_0x7ee8('0x3f')]};return db[_0x7ee8('0x31')][_0x7ee8('0x25')](_0x3ef618)[_0x7ee8('0x2c')](function(_0x1074ef){_0x24ec48[_0x7ee8('0x25')]=_0x1074ef;if(_0x1f34c5['query'][_0x7ee8('0x45')]){_0x10af17[_0x7ee8('0x46')]=[{'all':!![]}];}return db['UserProfile'][_0x7ee8('0x47')](_0x10af17);})[_0x7ee8('0x2c')](function(_0x509838){_0x24ec48[_0x7ee8('0x48')]=_0x509838;return _0x24ec48;})[_0x7ee8('0x2c')](respondWithFilteredResult(_0x2d8809,_0x10af17))['catch'](handleError(_0x2d8809,null));};exports[_0x7ee8('0x49')]=function(_0x533cb3,_0x56abcc){var _0x4cee21={'raw':![],'where':{'id':_0x533cb3[_0x7ee8('0x4a')]['id']}},_0x52e167={};_0x52e167[_0x7ee8('0x3a')]=_['keys'](db[_0x7ee8('0x31')][_0x7ee8('0x4b')]);_0x52e167[_0x7ee8('0x37')]=_[_0x7ee8('0x36')](_0x533cb3[_0x7ee8('0x37')]);_0x52e167[_0x7ee8('0x38')]=_[_0x7ee8('0x39')](_0x52e167[_0x7ee8('0x3a')],_0x52e167['query']);_0x4cee21[_0x7ee8('0x3b')]=_[_0x7ee8('0x39')](_0x52e167['model'],qs[_0x7ee8('0x4c')](_0x533cb3['query']['fields']));_0x4cee21[_0x7ee8('0x3b')]=_0x4cee21['attributes'][_0x7ee8('0x4d')]?_0x4cee21[_0x7ee8('0x3b')]:_0x52e167[_0x7ee8('0x3a')];if(_0x533cb3['query'][_0x7ee8('0x45')]){_0x4cee21['include']=[{'all':!![]}];}_0x4cee21=_[_0x7ee8('0x41')]({},_0x4cee21,_0x533cb3[_0x7ee8('0x44')]);return db['UserProfile'][_0x7ee8('0x4e')](_0x4cee21)[_0x7ee8('0x2c')](handleEntityNotFound(_0x56abcc,null))[_0x7ee8('0x2c')](respondWithResult(_0x56abcc,null))[_0x7ee8('0x4f')](handleError(_0x56abcc,null));};exports['create']=function(_0x4f36d0,_0x46e007){return db[_0x7ee8('0x31')]['create'](_0x4f36d0[_0x7ee8('0x50')],{})['then'](respondWithResult(_0x46e007,0xc9))['catch'](handleError(_0x46e007,null));};exports[_0x7ee8('0x51')]=function(_0x3c69dd,_0x2e43ac){var _0xe52138={'where':{'id':_0x3c69dd[_0x7ee8('0x4a')]['id']}},_0x40cd33={};_0x40cd33[_0x7ee8('0x3a')]=_[_0x7ee8('0x36')](db[_0x7ee8('0x31')][_0x7ee8('0x4b')]);_0xe52138['attributes']=_[_0x7ee8('0x39')](_0x40cd33[_0x7ee8('0x3a')],qs['fields'](_0x3c69dd[_0x7ee8('0x37')][_0x7ee8('0x4c')]));_0xe52138['attributes']=_0xe52138[_0x7ee8('0x3b')][_0x7ee8('0x4d')]?_0xe52138['attributes']:_0x40cd33['model'];if(_0x3c69dd[_0x7ee8('0x37')][_0x7ee8('0x45')]){_0xe52138['include']=[{'all':!![]}];}_0xe52138=_[_0x7ee8('0x41')]({},_0xe52138,_0x3c69dd[_0x7ee8('0x44')]);return db[_0x7ee8('0x31')][_0x7ee8('0x4e')](_0xe52138)[_0x7ee8('0x2c')](handleEntityNotFound(_0x2e43ac,null))[_0x7ee8('0x2c')](function(_0xf29280){if(_0xf29280){var _0x5c7652=_0xf29280[_0x7ee8('0x52')]({'plain':!![]});_0x5c7652=qs[_0x7ee8('0x53')](_0x5c7652,['id',_0x7ee8('0x54'),_0x7ee8('0x55'),_0x7ee8('0x56')]);_0x3c69dd[_0x7ee8('0x50')]=_[_0x7ee8('0x53')](_0x3c69dd[_0x7ee8('0x50')],['id',_0x7ee8('0x54'),_0x7ee8('0x55')]);return db[_0x7ee8('0x57')]['transaction'](function(_0x2d43ae){return db['UserProfile'][_0x7ee8('0x58')](_[_0x7ee8('0x41')](_0x5c7652,_0x3c69dd[_0x7ee8('0x50')]),{'include':_0x3c69dd[_0x7ee8('0x37')][_0x7ee8('0x45')]?[{'all':!![]}]:undefined,'transaction':_0x2d43ae})[_0x7ee8('0x2c')](function(_0x395235){var _0x2ef412=_0x395235[_0x7ee8('0x52')]({'plain':!![]});return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x3c69dd[_0x7ee8('0x4a')]['id']},'raw':!![]})[_0x7ee8('0x2c')](function(_0x4d8473){if(_0x4d8473){return BPromise[_0x7ee8('0x59')](_0x4d8473,function(_0x3756db){return new BPromise(function(_0x2a7b97,_0x5cda8a){if(_0x3756db['autoAssociation']===null||_0x3756db[_0x7ee8('0x5a')]===0x1)_0x2a7b97(null);return db[_0x7ee8('0x5b')][_0x7ee8('0x47')]({'where':{'sectionId':_0x3756db['id']},'raw':!![]})[_0x7ee8('0x2c')](function(_0x5beb47){var _0x3975c1=_[_0x7ee8('0x35')](_0x5beb47,function(_0x1991ed){return qs['omit'](_0x1991ed,['id','createdAt',_0x7ee8('0x55'),_0x7ee8('0x5c')]);});_0x2a7b97(_0x3975c1);})['catch'](function(_0xbba570){_0x5cda8a(_0xbba570);});})[_0x7ee8('0x2c')](function(_0xabe2ff){var _0x234a80=qs[_0x7ee8('0x53')](_0x3756db,['id',_0x7ee8('0x54'),'updatedAt']);_0x234a80[_0x7ee8('0x5d')]=_0x2ef412['id'];if(_0xabe2ff)_0x234a80['Resources']=_0xabe2ff;return _0x234a80;})[_0x7ee8('0x2c')](function(_0x14735c){return db[_0x7ee8('0x5e')]['create'](_0x14735c,{'include':[{'model':db[_0x7ee8('0x5b')],'as':_0x7ee8('0x5f')}],'raw':!![],'transaction':_0x2d43ae});});})[_0x7ee8('0x2c')](function(){return _0x2ef412;});}});});});}})[_0x7ee8('0x2c')](respondWithResult(_0x2e43ac,0xc9))[_0x7ee8('0x4f')](handleError(_0x2e43ac,null));};exports[_0x7ee8('0x2b')]=function(_0x2d3fa9,_0xd84ebe){if(_0x2d3fa9[_0x7ee8('0x50')]['id']){delete _0x2d3fa9[_0x7ee8('0x50')]['id'];}return db[_0x7ee8('0x31')]['find']({'where':{'id':_0x2d3fa9[_0x7ee8('0x4a')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0xd84ebe,null))['then'](saveUpdates(_0x2d3fa9[_0x7ee8('0x50')],null))[_0x7ee8('0x2c')](respondWithResult(_0xd84ebe,null))['catch'](handleError(_0xd84ebe,null));};exports['destroy']=function(_0x3a2151,_0x2100f3){return db['UserProfile'][_0x7ee8('0x4e')]({'where':{'id':_0x3a2151[_0x7ee8('0x4a')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x2100f3,null))['then'](removeEntity(_0x2100f3,null))['catch'](handleError(_0x2100f3,null));};exports[_0x7ee8('0x60')]=function(_0x268a6f,_0x4295b0){return db[_0x7ee8('0x31')][_0x7ee8('0x60')]()[_0x7ee8('0x2c')](respondWithResult(_0x4295b0,null))[_0x7ee8('0x4f')](handleError(_0x4295b0,null));};exports[_0x7ee8('0x61')]=function(_0x32b5a1,_0xebfe91){var _0x4f8836=_0x32b5a1[_0x7ee8('0x50')];return db[_0x7ee8('0x31')][_0x7ee8('0x4e')]({'where':{'id':_0x32b5a1[_0x7ee8('0x4a')]['id']}})['then'](handleEntityNotFound(_0xebfe91,null))[_0x7ee8('0x2c')](function(_0x3bf4a5){if(_0x3bf4a5){return db['sequelize']['transaction'](function(_0x542045){return db[_0x7ee8('0x5e')][_0x7ee8('0x2d')]({'where':{'userProfileId':_0x32b5a1[_0x7ee8('0x4a')]['id'],'sectionId':_[_0x7ee8('0x35')](_0x4f8836,function(_0x3e9077){return _0x3e9077['sectionId'];})},'transaction':_0x542045})[_0x7ee8('0x2c')](function(){var _0x7caaec=_[_0x7ee8('0x35')](_0x4f8836,function(_0x242e9f){_0x242e9f[_0x7ee8('0x5d')]=_0x32b5a1['params']['id'];return _0x242e9f;});var _0x22a8e8=[];return BPromise[_0x7ee8('0x59')](_0x7caaec,function(_0x52d599){return db[_0x7ee8('0x5e')]['create'](_0x52d599,{'include':[{'model':db[_0x7ee8('0x5b')],'as':_0x7ee8('0x5f')}],'raw':!![],'transaction':_0x542045})[_0x7ee8('0x2c')](function(_0x5b0dfe){_0x22a8e8['push'](_0x5b0dfe['get']({'plain':!![]}));});})['then'](function(){return _0x22a8e8;});});});}})['then'](function(_0x5f4a96){return _0x5f4a96;})[_0x7ee8('0x2c')](respondWithResult(_0xebfe91,null))[_0x7ee8('0x4f')](handleError(_0xebfe91,null));};exports['removeSections']=function(_0x417de3,_0x4ed794){var _0x3f9079;return db[_0x7ee8('0x31')][_0x7ee8('0x4e')]({'where':{'id':_0x417de3[_0x7ee8('0x4a')]['id']},'attributes':['id',_0x7ee8('0x2f')]})[_0x7ee8('0x2c')](handleEntityNotFound(_0x4ed794,null))[_0x7ee8('0x2c')](function(_0x3216f2){if(_0x3216f2){_0x3f9079=_0x3216f2;return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x417de3[_0x7ee8('0x4a')]['id'],'sectionId':_0x417de3[_0x7ee8('0x37')][_0x7ee8('0x62')]}});}})[_0x7ee8('0x2c')](function(){return _0x3f9079;})[_0x7ee8('0x2c')](respondWithStatusCode(_0x4ed794,null))[_0x7ee8('0x4f')](handleError(_0x4ed794,null));};exports[_0x7ee8('0x63')]=function(_0x1e67c9,_0x4b5a92){var _0x1480fa=[];var _0x33dcfc=[];return db[_0x7ee8('0x5e')][_0x7ee8('0x47')]({'where':{'userProfileId':_0x1e67c9[_0x7ee8('0x4a')]['id']},'raw':!![]})[_0x7ee8('0x2c')](function(_0x5dee20){_0x1480fa=_['filter'](_0x5dee20,function(_0xa2ac0){return _0xa2ac0[_0x7ee8('0x64')]===0x1||_[_0x7ee8('0x65')]([0x3eb,0x709],_0xa2ac0[_0x7ee8('0x5c')]);});if(!_[_0x7ee8('0x66')](_0x1480fa)){return _['map'](_0x1480fa,function(_0x7659ba){return _0x7659ba[_0x7ee8('0x5c')];});}else{return;}})['then'](function(_0x98b503){if(_0x98b503)_0x33dcfc=_0x98b503;if(_[_0x7ee8('0x65')](_0x33dcfc,0x64)){var _0x28f39d=_[_0x7ee8('0x4e')](_0x1480fa,{'sectionId':0x64});return hasDefaultDashboard(_0x28f39d)[_0x7ee8('0x2c')](function(_0x318869){return _[_0x7ee8('0x35')](_0x1480fa,function(_0x53c14d){if(_0x53c14d['sectionId']===0x64){_0x53c14d['subsections']=_0x318869;}return _0x53c14d;});});}else{return;}})[_0x7ee8('0x2c')](function(_0x1a5afd){if(_0x1a5afd)_0x1480fa=_0x1a5afd;if(_['includes'](_0x33dcfc,0x3eb)){var _0x279b67=_[_0x7ee8('0x4e')](_0x1480fa,{'sectionId':0x3eb});return getCustomDashboards(_0x279b67)[_0x7ee8('0x2c')](function(_0xf055b0){return _[_0x7ee8('0x35')](_0x1480fa,function(_0x243ab1){if(_0x279b67['enabled']){if(_0x243ab1[_0x7ee8('0x5c')]===0x3eb){_0x243ab1[_0x7ee8('0x67')]=_0xf055b0;}}else{if(_0x243ab1[_0x7ee8('0x5c')]===0x64){_0x243ab1[_0x7ee8('0x67')]=_0xf055b0;}}return _0x243ab1;});});}else{return;}})[_0x7ee8('0x2c')](function(_0x11ac65){if(_0x11ac65)_0x1480fa=_0x11ac65;if(_[_0x7ee8('0x65')](_0x33dcfc,0x709)){var _0x1fd393=_[_0x7ee8('0x4e')](_0x1480fa,{'sectionId':0x709});return getPlugins(_0x1fd393)['then'](function(_0x303a8c){if(_0x1fd393[_0x7ee8('0x64')]){return _[_0x7ee8('0x35')](_0x1480fa,function(_0x2e8a9d){if(_0x2e8a9d[_0x7ee8('0x5c')]===0x709){_0x2e8a9d[_0x7ee8('0x67')]=_0x303a8c;}return _0x2e8a9d;});}else{var _0x17c555={'sectionId':0x76c,'enabled':0x1,'subsections':_0x303a8c};var _0x3928f4=_[_0x7ee8('0x35')](_0x1480fa);_0x3928f4[_0x7ee8('0x68')](_0x17c555);return _0x3928f4;}});}else{return;}})[_0x7ee8('0x2c')](function(_0x3428c2){if(_0x3428c2)_0x1480fa=_0x3428c2;return _[_0x7ee8('0x43')](_0x1480fa,[_0x7ee8('0x64'),0x1]);})['then'](respondWithResult(_0x4b5a92,null))['catch'](handleError(_0x4b5a92,null));};function hasDefaultDashboard(_0x432a04){var _0x207f47=[0x65];return new BPromise(function(_0x3ccfb4,_0x45515c){try{if(_0x432a04[_0x7ee8('0x5a')]){_0x3ccfb4(_0x207f47);}else{return db[_0x7ee8('0x5b')][_0x7ee8('0x69')]({'where':{'sectionId':_0x432a04['id']},'raw':!![]})[_0x7ee8('0x2c')](function(_0x3c5e9d){_0x3c5e9d?_0x3ccfb4(_0x207f47):_0x3ccfb4();});}}catch(_0x5e9c6a){_0x45515c(_0x5e9c6a);}});}function getCustomDashboards(_0x469d4c){var _0x19ded1=[];return new BPromise(function(_0xf50b66,_0x181a70){try{if(_0x469d4c[_0x7ee8('0x5a')]){return db[_0x7ee8('0x6a')][_0x7ee8('0x47')]({'raw':!![]})[_0x7ee8('0x2c')](function(_0x14b937){_0x14b937['forEach'](function(_0x3ada69){_0x19ded1[_0x7ee8('0x68')](_0x3ada69['id']+0x1869f);});_0xf50b66(_0x19ded1);});}else{return db[_0x7ee8('0x5b')][_0x7ee8('0x47')]({'where':{'sectionId':_0x469d4c['id']},'raw':!![]})['then'](function(_0x1207d2){_0x1207d2['forEach'](function(_0x28efaa){_0x19ded1[_0x7ee8('0x68')](_0x28efaa[_0x7ee8('0x6b')]+0x1869f);});_0xf50b66(_0x19ded1);});}}catch(_0x5d0c1b){_0x181a70(_0x5d0c1b);}});}function getPlugins(_0x27f3c1){var _0x329966=[];return new BPromise(function(_0x1a5523,_0x312186){try{if(_0x27f3c1[_0x7ee8('0x5a')]){return db['Plugin']['findAll']({'raw':!![]})[_0x7ee8('0x2c')](function(_0x27ebc2){_0x27ebc2[_0x7ee8('0x6c')](function(_0x2f7c3e){_0x329966[_0x7ee8('0x68')](_0x2f7c3e['id']+0x15b38);});_0x1a5523(_0x329966);});}else{return db[_0x7ee8('0x5b')]['findAll']({'where':{'sectionId':_0x27f3c1['id']},'raw':!![]})[_0x7ee8('0x2c')](function(_0x2892ac){_0x2892ac[_0x7ee8('0x6c')](function(_0x196e81){_0x329966[_0x7ee8('0x68')](_0x196e81['resourceId']+0x15b38);});_0x1a5523(_0x329966);});}}catch(_0x186607){_0x312186(_0x186607);}});}exports[_0x7ee8('0x6d')]=function(_0x5dac17,_0x8b85d5){return db['UserProfile'][_0x7ee8('0x4e')]({'where':{'id':_0x5dac17[_0x7ee8('0x4a')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x8b85d5,null))[_0x7ee8('0x2c')](function(_0x44fa3b){if(_0x44fa3b){return db['sequelize']['transaction'](function(_0x2b3d6d){return db[_0x7ee8('0x5e')][_0x7ee8('0x47')]({'where':{'userProfileId':_0x5dac17[_0x7ee8('0x4a')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x12c258){if(_0x12c258){return db[_0x7ee8('0x5e')][_0x7ee8('0x2d')]({'where':{'userProfileId':_0x5dac17['params']['id'],'id':_[_0x7ee8('0x35')](_0x12c258,function(_0x3753d7){return _0x3753d7['id'];})},'transaction':_0x2b3d6d});}})[_0x7ee8('0x2c')](function(_0x331cc0){var _0xa0322c=_[_0x7ee8('0x35')](_0x5dac17[_0x7ee8('0x50')],function(_0x469147){_0x469147[_0x7ee8('0x5d')]=_0x5dac17['params']['id'];return _0x469147;});return db[_0x7ee8('0x5e')][_0x7ee8('0x6e')](_0xa0322c,{'raw':!![],'transaction':_0x2b3d6d});})[_0x7ee8('0x2c')](function(_0x2604f5){var _0x2e2293=_[_0x7ee8('0x43')](_[_0x7ee8('0x35')](_0x2604f5,function(_0x467372){return _0x467372[_0x7ee8('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x2e2293){return db[_0x7ee8('0x5e')][_0x7ee8('0x47')]({'where':{'userProfileId':_0x5dac17[_0x7ee8('0x4a')]['id'],'sectionId':_[_0x7ee8('0x35')](_0x2e2293,function(_0x1d52ff){return _0x1d52ff['sectionId'];})},'attributes':['id',_0x7ee8('0x5c')],'raw':!![]})['then'](function(_0x451238){var _0x56c3ff=_['map'](_0x5dac17[_0x7ee8('0x50')],function(_0x1e3d68){_0x1e3d68[_0x7ee8('0x5d')]=_0x5dac17['params']['id'];return _0x1e3d68;});return db[_0x7ee8('0x5b')][_0x7ee8('0x6e')](_0x56c3ff,{'raw':!![],'transaction':_0x2b3d6d});});}})[_0x7ee8('0x4f')](handleError(_0x8b85d5,null));});}})[_0x7ee8('0x2c')](function(_0xfdac){var _0x4c109=_['map'](_0xfdac,function(_0x55cab9){return _0x55cab9[_0x7ee8('0x52')]({'plain':!![]});});})[_0x7ee8('0x2c')](respondWithResult(_0x8b85d5,null))[_0x7ee8('0x4f')](handleError(_0x8b85d5,null));};exports[_0x7ee8('0x6f')]=function(_0x262f35,_0x9e097b,_0x53515d){return db['UserProfile'][_0x7ee8('0x4e')]({'where':{'id':_0x262f35[_0x7ee8('0x4a')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x9e097b,null))[_0x7ee8('0x2c')](function(_0x1c4868){if(_0x1c4868){return _0x1c4868[_0x7ee8('0x6f')](_0x262f35[_0x7ee8('0x37')][_0x7ee8('0x62')]);}})[_0x7ee8('0x2c')](respondWithStatusCode(_0x9e097b,null))[_0x7ee8('0x4f')](handleError(_0x9e097b,null));};exports[_0x7ee8('0x70')]=function(_0x438260,_0x4d7fda){var _0x25e4c8={};if(!_0x438260[_0x7ee8('0x37')]['section'])throw new Error(_0x7ee8('0x71'));if(!_0x438260[_0x7ee8('0x37')]['hasOwnProperty'](_0x7ee8('0x3c'))){_0x25e4c8[_0x7ee8('0x26')]=qs['limit'](_0x438260[_0x7ee8('0x37')][_0x7ee8('0x26')]);_0x25e4c8[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x438260['query'][_0x7ee8('0x24')]);}return db['UserProfile'][_0x7ee8('0x4e')]({'where':{'id':_0x438260['params']['id']}})[_0x7ee8('0x2c')](function(_0x46c067){if(!_0x46c067)throw new Error(_0x7ee8('0x72')+_0x438260['params']['id']);return db['UserProfile']['getResources'](_0x438260);})[_0x7ee8('0x2c')](respondWithFilteredResult(_0x4d7fda,_0x25e4c8))['catch'](handleError(_0x4d7fda,null));};
\ No newline at end of file
index c5da8af..d93359e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserProfile'];(function(_0x119163,_0x34b2ea){var _0x16bb37=function(_0x2f40c6){while(--_0x2f40c6){_0x119163['push'](_0x119163['shift']());}};_0x16bb37(++_0x34b2ea);}(_0x47c5,0x165));var _0x547c=function(_0x5a1cc9,_0x28f54d){_0x5a1cc9=_0x5a1cc9-0x0;var _0x471761=_0x47c5[_0x5a1cc9];return _0x471761;};'use strict';var EventEmitter=require(_0x547c('0x0'));var UserProfile=require(_0x547c('0x1'))['db'][_0x547c('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x547c('0x3')](0x0);var events={'afterCreate':_0x547c('0x4'),'afterUpdate':_0x547c('0x5'),'afterDestroy':'remove'};function emitEvent(_0xddb439){return function(_0x16f4db,_0x5b48c9,_0x3e827e){UserProfileEvents[_0x547c('0x6')](_0xddb439+':'+_0x16f4db['id'],_0x16f4db);UserProfileEvents['emit'](_0xddb439,_0x16f4db);_0x3e827e(null);};}for(var e in events){if(events[_0x547c('0x7')](e)){var event=events[e];UserProfile[_0x547c('0x8')](e,emitEvent(event));}}module[_0x547c('0x9')]=UserProfileEvents;
\ No newline at end of file
+var _0xf567=['events','../../mysqldb','UserProfile','save','update','emit','hasOwnProperty','hook'];(function(_0x4edad2,_0x4b0b47){var _0x298b0c=function(_0x2e976b){while(--_0x2e976b){_0x4edad2['push'](_0x4edad2['shift']());}};_0x298b0c(++_0x4b0b47);}(_0xf567,0x118));var _0x7f56=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xf567[_0x57b54c];return _0x59cc19;};'use strict';var EventEmitter=require(_0x7f56('0x0'));var UserProfile=require(_0x7f56('0x1'))['db'][_0x7f56('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7f56('0x3'),'afterUpdate':_0x7f56('0x4'),'afterDestroy':'remove'};function emitEvent(_0x548b5b){return function(_0x26ecb0,_0x271ddb,_0xe30bba){UserProfileEvents['emit'](_0x548b5b+':'+_0x26ecb0['id'],_0x26ecb0);UserProfileEvents[_0x7f56('0x5')](_0x548b5b,_0x26ecb0);_0xe30bba(null);};}for(var e in events){if(events[_0x7f56('0x6')](e)){var event=events[e];UserProfile[_0x7f56('0x7')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 78afbd9..391a2f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c87=['CustomReports','rows','ids','customSorting','extraQueryConditions','count','Tags','color','tag','ThroughTags','true','chat','sms','dataValues','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','map','model','associatedResources','name','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','SquareProject','childModel','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','contacts','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','faxqueues','FaxQueue','FaxAccount','inboundroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','membername','User','role','agent','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','musiconholds','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','MailSubstatus','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','voicequeues','queuecampaigns','users','telephones','Users','admin','Agents','Telephones','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','Variable','plugins','Plugin','extractedreports','Reports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','QueryTypes','select','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','define','user_profiles','section','mergeResources','isEmpty','length','push','UserProfileSection','find','params','all','union','ignore','autoAssociation','keys','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','filters','pick','merge','key','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom'];(function(_0xd1513b,_0x3f9174){var _0x3b2581=function(_0x3ec539){while(--_0x3ec539){_0xd1513b['push'](_0xd1513b['shift']());}};_0x3b2581(++_0x3f9174);}(_0x4c87,0x1a3));var _0x74c8=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4c87[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x74c8('0x0'));var attributes=require(_0x74c8('0x1'));var qs=require(_0x74c8('0x2'));var squel=require(_0x74c8('0x3'));module[_0x74c8('0x4')]=function(_0x5aaf6e){var _0x23af30=_0x5aaf6e[_0x74c8('0x5')];function _0x4cfe19(_0xa8b427,_0x47cc0a){return new Promise(function(_0x306ebf,_0x25658c){if(!_0x47cc0a)return _0x306ebf(null);var _0x4a353a=_0x47cc0a['filter']?{[_0x47cc0a[_0x74c8('0x6')][_0x74c8('0x7')]]:_0x47cc0a['filter'][_0x74c8('0x8')]}:undefined;return _0x23af30[_0xa8b427][_0x74c8('0x9')]({'where':_0x4a353a,'raw':!![]})[_0x74c8('0xa')](function(_0x33808d){_0x47cc0a['associatedResources']=_[_0x74c8('0xb')](_0x33808d,'id');_0x306ebf(_0x47cc0a);})['catch'](function(_0x17ec17){_0x25658c(_0x17ec17);});});}function _0x1fd573(_0x377267,_0x1e0c10){return new Promise(function(_0x5352a0,_0x1906c6){var _0x427e1c=_0x377267[_0x74c8('0x6')]?{[_0x377267[_0x74c8('0x6')][_0x74c8('0x7')]]:_0x377267[_0x74c8('0x6')][_0x74c8('0x8')]}:undefined;return _0x23af30[_0x377267[_0x74c8('0xc')]][_0x74c8('0x9')]({'where':_0x427e1c,'raw':!![]})[_0x74c8('0xa')](function(_0x21bdea){_0x1e0c10[_0x74c8('0xd')]=_[_0x74c8('0xb')](_0x21bdea,function(_0x281872){return _0x281872[_0x74c8('0xe')];});_0x5352a0(_0x1e0c10);})[_0x74c8('0xf')](function(_0x5609e0){_0x1906c6(_0x5609e0);});});}function _0x4d3da4(_0x43c617,_0x60971b,_0x53d22e){if(!_0x60971b)return Promise[_0x74c8('0x10')](null);return new Promise(function(_0x572620,_0x52cd37){return _0x23af30[_0x74c8('0x11')][_0x74c8('0x9')]({'where':{'sectionId':_0x60971b['id']},'raw':!![]})[_0x74c8('0xa')](function(_0x1a0d70){if(_0x43c617[_0x74c8('0x7')]&&_0x43c617['field']!=='id'){_0x60971b[_0x74c8('0xd')]=_[_0x74c8('0xb')](_0x1a0d70,function(_0x17c0bc){return _0x17c0bc[_0x43c617[_0x74c8('0x7')]];});}else{if(_0x53d22e===_0x74c8('0x12')){_0x60971b[_0x74c8('0xd')]=_[_0x74c8('0xb')](_0x1a0d70,function(_0x245d25){return{'id':_0x245d25[_0x74c8('0x13')],'type':_0x245d25[_0x74c8('0x14')]};});}else{_0x60971b[_0x74c8('0xd')]=_['map'](_0x1a0d70,function(_0x5f27b4){return _0x5f27b4['resourceId'];});}}_0x572620(_0x60971b);})['catch'](function(_0x5de1c5){_0x52cd37(_0x5de1c5);});});}function _0x14335a(_0x407fdf,_0x340375){var _0x5e02ce={'parentSections':[]};switch(_0x407fdf[_0x74c8('0x15')]()){case'squareprojects':_0x5e02ce['childModel']=_0x74c8('0x16');break;case'odbc':_0x5e02ce[_0x74c8('0x17')]='SquareOdbc';break;case _0x74c8('0x18'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x19');_0x5e02ce[_0x74c8('0x1a')]=[{'name':_0x74c8('0x1b'),'field':_0x74c8('0xe'),'foreignKey':_0x74c8('0x1c')}];break;case _0x74c8('0x1d'):_0x5e02ce[_0x74c8('0x17')]='JscriptyProject';break;case _0x74c8('0x1e'):_0x5e02ce['childModel']='CmContact';_0x5e02ce['parentSections']=[{'name':_0x74c8('0x1f'),'field':'id','foreignKey':_0x74c8('0x20')}];break;case _0x74c8('0x21'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x22');break;case _0x74c8('0x23'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x24');break;case _0x74c8('0x25'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x26');break;case'chatqueues':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x27');break;case _0x74c8('0x28'):_0x5e02ce[_0x74c8('0x17')]='ChatWebsite';break;case _0x74c8('0x29'):_0x5e02ce['childModel']=_0x74c8('0x2a');break;case'faxaccounts':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x2b');break;case _0x74c8('0x2c'):case'internalroutes':case _0x74c8('0x2d'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x2e');break;case _0x74c8('0x2f'):_0x5e02ce['childModel']=_0x74c8('0x30');break;case _0x74c8('0x31'):_0x5e02ce[_0x74c8('0x17')]='VoiceMail';break;case _0x74c8('0x32'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x33');_0x5e02ce[_0x74c8('0x1a')]=[{'name':'Agents','field':'name','foreignKey':_0x74c8('0x34'),'model':_0x74c8('0x35'),'filter':{'field':_0x74c8('0x36'),'value':[_0x74c8('0x37')]}},{'name':'Telephones','field':'name','foreignKey':'membername','model':_0x74c8('0x35'),'filter':{'field':_0x74c8('0x36'),'value':['telephone']}},{'name':_0x74c8('0x38'),'field':_0x74c8('0xe'),'foreignKey':_0x74c8('0x39'),'model':_0x74c8('0x3a'),'filter':{'field':_0x74c8('0x14'),'value':[_0x74c8('0x3b')]}},{'name':_0x74c8('0x3c'),'field':'name','foreignKey':_0x74c8('0x39'),'model':'VoiceQueue','filter':{'field':_0x74c8('0x14'),'value':[_0x74c8('0x3d')]}}];break;case _0x74c8('0x3e'):_0x5e02ce[_0x74c8('0x17')]='VoiceMusicOnHold';break;case'chanspies':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x3f');break;case _0x74c8('0x40'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x41');break;case _0x74c8('0x42'):_0x5e02ce[_0x74c8('0x17')]='Campaign';break;case _0x74c8('0x43'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x44');break;case _0x74c8('0x45'):_0x5e02ce['childModel']=_0x74c8('0x46');break;case'mailsubstatuses':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x47');break;case'openchannelqueues':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x48');break;case _0x74c8('0x49'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x4a');break;case _0x74c8('0x4b'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x4c');break;case _0x74c8('0x4d'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x4e');break;case _0x74c8('0x4f'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x50');break;case _0x74c8('0x51'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x52');break;case'teams':_0x5e02ce[_0x74c8('0x17')]='Team';break;case _0x74c8('0x53'):case _0x74c8('0x54'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x3a');if(_0x340375){_0x5e02ce[_0x74c8('0x1a')]=[{'name':_0x74c8('0x38')},{'name':'QueueCampaigns'}];}break;case _0x74c8('0x55'):case'agents':case _0x74c8('0x56'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x35');if(_0x340375){_0x5e02ce['parentSections']=[{'name':_0x74c8('0x57'),'filter':{'field':'role','value':[_0x74c8('0x58'),'user']},'ignore':!![]},{'name':_0x74c8('0x59')},{'name':_0x74c8('0x5a')}];}break;case _0x74c8('0x5b'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x5c');break;case _0x74c8('0x5d'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x5e');break;case _0x74c8('0x5f'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x60');break;case _0x74c8('0x61'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x62');break;case _0x74c8('0x63'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x64');break;case _0x74c8('0x65'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x66');break;case _0x74c8('0x67'):_0x5e02ce[_0x74c8('0x17')]='User';break;case _0x74c8('0x68'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x69');break;case _0x74c8('0x6a'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x6b');break;case _0x74c8('0x6c'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x6d');break;case'intervals':_0x5e02ce['childModel']=_0x74c8('0x6e');break;case _0x74c8('0x6f'):_0x5e02ce['childModel']=_0x74c8('0x70');break;case _0x74c8('0x71'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x72');break;case _0x74c8('0x73'):_0x5e02ce['childModel']=_0x74c8('0x74');break;case _0x74c8('0x75'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x76');break;case _0x74c8('0x77'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x78');break;case _0x74c8('0x79'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x7a');break;case _0x74c8('0x7b'):_0x5e02ce[_0x74c8('0x17')]='Trunk';break;case'variables':_0x5e02ce['childModel']=_0x74c8('0x7c');break;case _0x74c8('0x7d'):_0x5e02ce['childModel']=_0x74c8('0x7e');break;case _0x74c8('0x7f'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x12');_0x5e02ce['parentSections']=[{'name':_0x74c8('0x80'),'field':'id','foreignKey':_0x74c8('0x81')}];break;case _0x74c8('0x82'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x83');break;}return _0x5e02ce;}function _0x5cedf9(_0x2174d9,_0x3e3b44){var _0x34ee4b=_0x2174d9[_0x74c8('0x84')](0x0)[_0x74c8('0x85')]()+_0x2174d9[_0x74c8('0x86')](0x1);var _0x1d73e6={'type':_0x23af30['Sequelize'][_0x74c8('0x87')]['SELECT'],'raw':!![]};return new Promise(function(_0x2224f9,_0x17f6fa){var _0x483064=squel[_0x74c8('0x88')]()[_0x74c8('0x7')]('ui.'+_0x34ee4b+_0x74c8('0x89'),'id')[_0x74c8('0x7')](_0x74c8('0x8a'))[_0x74c8('0x8b')](_0x74c8('0x8c')+_0x2174d9+_0x74c8('0x8d'),'ui')[_0x74c8('0x8e')](_0x74c8('0x8f'),_0x3e3b44['id']);return _0x23af30[_0x74c8('0x90')][_0x74c8('0x91')](_0x483064[_0x74c8('0x92')](),_0x1d73e6)[_0x74c8('0xa')](function(_0x317943){_0x3e3b44[_0x34ee4b+'OpenTabs']=_0x317943;_0x2224f9(_0x317943);})['catch'](function(_0xed4a0c){_0x17f6fa(_0xed4a0c);});});}return _0x5aaf6e[_0x74c8('0x93')]('UserProfile',attributes,{'tableName':_0x74c8('0x94'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x10c28){var _0xa2f73c={'raw':_0x10c28['query']['raw'],'where':{}};var _0x3f5c23={};var _0xdaf4a5={'count':0x0,'rows':[]};var _0x182b45=_0x10c28[_0x74c8('0x91')][_0x74c8('0x95')];var _0x4e2fa3=_0x10c28[_0x74c8('0x91')][_0x74c8('0x96')]||![];var _0x36a322=_0x14335a(_0x182b45,_0x4e2fa3);if(!_0x36a322[_0x74c8('0x17')])throw new Error('Invalid\x20section\x20\x27'+_0x182b45+'\x27');var _0xf3f7fc=[{'name':_0x182b45}];if(!_[_0x74c8('0x97')](_0x36a322[_0x74c8('0x1a')]))_0xf3f7fc=_0x36a322[_0x74c8('0x1a')];var _0x2dc9dd=[];for(var _0x3375fa=0x0;_0x3375fa<_0xf3f7fc[_0x74c8('0x98')];_0x3375fa++){_0x2dc9dd[_0x74c8('0x99')](_0x23af30[_0x74c8('0x9a')][_0x74c8('0x9b')]({'where':{'userProfileId':_0x10c28[_0x74c8('0x9c')]['id'],'name':_0xf3f7fc[_0x3375fa][_0x74c8('0xe')]},'raw':!![]}));}return Promise[_0x74c8('0x9d')](_0x2dc9dd)[_0x74c8('0xa')](function(_0x210252){var _0x5d0a4f=_[_0x74c8('0x6')](_0x210252,function(_0x297f72){return _0x297f72?_0x297f72:undefined;});var _0x39feff=_[_0x74c8('0x6')](_0xf3f7fc,['ignore',!![]]);var _0xf78948=_[_0x74c8('0x97')](_0x5d0a4f)&&_[_0x74c8('0x97')](_0x39feff)?null:_[_0x74c8('0x9e')](_0x39feff,_0x5d0a4f);if(!_0xf78948)return null;var _0x3586a1=[];for(var _0x2e15e7=0x0;_0x2e15e7<_0xf78948[_0x74c8('0x98')];_0x2e15e7++){var _0x239a55=_[_0x74c8('0x9b')](_0xf3f7fc,function(_0x2021f5){return _0xf78948[_0x2e15e7]?_0x2021f5['name']===_0xf78948[_0x2e15e7][_0x74c8('0xe')]:null;});if(_0x239a55){if(_0xf78948[_0x2e15e7][_0x74c8('0x9f')]){_0x3586a1[_0x74c8('0x99')](_0x4cfe19(_0x36a322['childModel'],_0xf78948[_0x2e15e7]));}else{if(!_0xf78948[_0x2e15e7][_0x74c8('0xa0')]){_0x3586a1[_0x74c8('0x99')](_0x4d3da4(_0x239a55,_0xf78948[_0x2e15e7],_0x36a322[_0x74c8('0x17')]));}else{if(_0x239a55['model']){_0x3586a1[_0x74c8('0x99')](_0x1fd573(_0x239a55,_0xf78948[_0x2e15e7]));}}}}}return Promise[_0x74c8('0x9d')](_0x3586a1);})[_0x74c8('0xa')](function(_0x3ddaac){var _0x14d854=_0x3ddaac;var _0x238f7b=null;if(_0x14d854){_0x238f7b=_0x14d854[_0x74c8('0x98')]===0x1?_0x14d854[0x0]:null;}if(!_0x238f7b&&!_0x14d854)return _0xdaf4a5;var _0x17cc78=_0x23af30[_0x36a322[_0x74c8('0x17')]]['rawAttributes'];_0x3f5c23[_0x74c8('0xc')]=_['keys'](_0x17cc78);_0x3f5c23[_0x74c8('0x91')]=_[_0x74c8('0xa1')](_0x10c28['query']);_0x3f5c23['filters']=_[_0x74c8('0xa2')](_0x3f5c23[_0x74c8('0xc')],_0x3f5c23[_0x74c8('0x91')]);_0xa2f73c['attributes']=_[_0x74c8('0xa2')](_0x3f5c23[_0x74c8('0xc')],qs['fields'](_0x10c28[_0x74c8('0x91')][_0x74c8('0xa3')]));_0xa2f73c[_0x74c8('0xa4')]=_0xa2f73c[_0x74c8('0xa4')][_0x74c8('0x98')]?_0xa2f73c[_0x74c8('0xa4')]:_0x3f5c23[_0x74c8('0xc')];if(!_0x10c28[_0x74c8('0x91')][_0x74c8('0xa5')](_0x74c8('0xa6'))){_0xa2f73c['limit']=qs[_0x74c8('0xa7')](_0x10c28[_0x74c8('0x91')][_0x74c8('0xa7')]);_0xa2f73c[_0x74c8('0xa8')]=qs[_0x74c8('0xa8')](_0x10c28[_0x74c8('0x91')][_0x74c8('0xa8')]);}_0xa2f73c[_0x74c8('0xa9')]=qs[_0x74c8('0xaa')](_0x10c28['query'][_0x74c8('0xaa')]);_0xa2f73c[_0x74c8('0x8e')]=qs[_0x74c8('0xab')](_[_0x74c8('0xac')](_0x10c28[_0x74c8('0x91')],_0x3f5c23[_0x74c8('0xab')]));if(_0x10c28[_0x74c8('0x91')][_0x74c8('0x6')]){_0xa2f73c['where']=_[_0x74c8('0xad')](_0xa2f73c[_0x74c8('0x8e')],{'$or':_[_0x74c8('0xb')](_0x17cc78,function(_0xfe9469){if(_0xfe9469[_0x74c8('0x14')][_0x74c8('0xae')]!=='VIRTUAL'){var _0x45621f={};_0x45621f[_0xfe9469['field']]={'$like':'%'+_0x10c28[_0x74c8('0x91')][_0x74c8('0x6')]+'%'};return _0x45621f;}})});}var _0x228392=[];var _0x46f261=null;var _0x4b90a4={};if(_0x238f7b){_0x46f261=_[_0x74c8('0x9b')](_0xf3f7fc,[_0x74c8('0xe'),_0x238f7b[_0x74c8('0xe')]]);if(_0x46f261['field']){_0x4b90a4={};if(_0x36a322['childModel']===_0x74c8('0x12')){_0x4b90a4[_0x46f261[_0x74c8('0xaf')]]=_[_0x74c8('0xb')](_0x238f7b[_0x74c8('0xd')],'id');}else{_0x4b90a4[_0x46f261[_0x74c8('0xaf')]]=_0x238f7b[_0x74c8('0xd')];}_0x228392[_0x74c8('0x99')](_0x4b90a4);}else{_0xa2f73c[_0x74c8('0x8e')]['id']=_0x238f7b[_0x74c8('0xd')];}}else{for(var _0x24534e=0x0;_0x24534e<_0x14d854[_0x74c8('0x98')];_0x24534e++){_0x46f261=_[_0x74c8('0x9b')](_0xf3f7fc,['name',_0x14d854[_0x24534e]['name']]);if(_0x46f261[_0x74c8('0x7')]){_0x4b90a4={};_0x4b90a4[_0x46f261[_0x74c8('0xaf')]]=_0x14d854[_0x24534e]['associatedResources'];_0x228392[_0x74c8('0x99')](_0x4b90a4);}else{if(!_0xa2f73c['where']['id'])_0xa2f73c[_0x74c8('0x8e')]['id']=[];_0x14d854[_0x24534e][_0x74c8('0xd')][_0x74c8('0xb0')](function(_0x5e4fef){_0xa2f73c['where']['id']['push'](_0x5e4fef);});}}}if(!_[_0x74c8('0x97')](_0x228392)){_0xa2f73c[_0x74c8('0x8e')]=_['merge'](_0xa2f73c[_0x74c8('0x8e')],{'$and':{'$or':_0x228392}});}_0xa2f73c=_[_0x74c8('0xad')]({},_0xa2f73c,_0x10c28[_0x74c8('0xb1')]);if(_0x238f7b&&!_0x238f7b[_0x74c8('0xa0')]&&_0x36a322[_0x74c8('0x17')]==='AnalyticExtractedReport'){if(_0x10c28['query'][_0x74c8('0xb2')]){_0xa2f73c[_0x74c8('0xb3')]=[{'all':!![]}];}return _0x23af30[_0x36a322['childModel']]['findAll'](_0xa2f73c)[_0x74c8('0xa')](function(_0x7e4b83){var _0x5ec8fc=[];_0x7e4b83['forEach'](function(_0x47aad9){var _0x56c996;switch(_0x47aad9[_0x74c8('0xb4')]){case _0x74c8('0xb5'):_0x56c996=_['find'](_0x238f7b[_0x74c8('0xd')],function(_0x270012){return _0x270012['id']===_0x47aad9[_0x74c8('0x81')]&&_0x270012[_0x74c8('0x14')]===_0x74c8('0xb6');});break;case _0x74c8('0xb7'):_0x56c996=_[_0x74c8('0x9b')](_0x238f7b[_0x74c8('0xd')],function(_0x9d049){return _0x9d049['id']===_0x47aad9[_0x74c8('0x81')]&&_0x9d049[_0x74c8('0x14')]===_0x74c8('0xb8');});break;}if(_0x56c996)_0x5ec8fc[_0x74c8('0x99')](_0x47aad9);});_0xdaf4a5['count']=_0x5ec8fc[_0x74c8('0x98')];_0xdaf4a5[_0x74c8('0xb9')]=_0x5ec8fc;return _0xdaf4a5;});}else{if(!_[_0x74c8('0x97')](_0x10c28['query'][_0x74c8('0xba')])){_0xa2f73c[_0x74c8('0x8e')]['id']=_0xa2f73c[_0x74c8('0x8e')]['id']?_['intersection'](_0xa2f73c[_0x74c8('0x8e')]['id'],_0x10c28[_0x74c8('0x91')][_0x74c8('0xba')]):_0x10c28[_0x74c8('0x91')]['ids'];if(_0x10c28[_0x74c8('0x91')][_0x74c8('0xbb')]){_0xa2f73c[_0x74c8('0xa9')]=_0x10c28[_0x74c8('0x91')][_0x74c8('0xbb')];}}if(_0x10c28[_0x74c8('0x91')][_0x74c8('0xbc')]){_0xa2f73c[_0x74c8('0x8e')]=_[_0x74c8('0xad')](_0xa2f73c[_0x74c8('0x8e')],{'$and':_0x10c28['query'][_0x74c8('0xbc')]});}return _0x23af30[_0x36a322[_0x74c8('0x17')]][_0x74c8('0xbd')]({'where':_0xa2f73c[_0x74c8('0x8e')]})[_0x74c8('0xa')](function(_0x63e630){_0xdaf4a5[_0x74c8('0xbd')]=_0x63e630;if(_0x10c28['query'][_0x74c8('0xb2')]){if(_0x36a322[_0x74c8('0x17')]==='CmContact'){_0xa2f73c[_0x74c8('0xb3')]=[{'model':_0x23af30[_0x74c8('0x76')],'as':_0x74c8('0xbe'),'attributes':['id',_0x74c8('0xe'),_0x74c8('0xbf')],'required':_0x10c28[_0x74c8('0x91')][_0x74c8('0xc0')]?!![]:![]},{'model':_0x23af30[_0x74c8('0x76')],'as':_0x74c8('0xc1'),'attributes':['id','name','color'],'through':_0x10c28[_0x74c8('0x91')]['tag']?{'attributes':[],'where':{'TagId':_0x10c28[_0x74c8('0x91')]['tag']||undefined}}:{},'required':_0x10c28['query']['tag']?!![]:![]}];}else{_0xa2f73c['include']=[{'all':!![]}];}}return _0x23af30[_0x36a322[_0x74c8('0x17')]][_0x74c8('0x9')](_0xa2f73c);})[_0x74c8('0xa')](function(_0x5d1af4){_0xdaf4a5[_0x74c8('0xb9')]=_0x5d1af4;if(_0x182b45===_0x74c8('0x59')&&_0x10c28[_0x74c8('0x91')]['openTabs']===_0x74c8('0xc2')){var _0x53dee1=[];for(var _0x18c272=0x0;_0x18c272<_0xdaf4a5['rows'][_0x74c8('0x98')];_0x18c272++){_0x53dee1[_0x74c8('0x99')](_0x5cedf9(_0x74c8('0xc3'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272]['dataValues']));_0x53dee1['push'](_0x5cedf9(_0x74c8('0xc4'),_0xdaf4a5['rows'][_0x18c272][_0x74c8('0xc5')]));_0x53dee1[_0x74c8('0x99')](_0x5cedf9('fax',_0xdaf4a5[_0x74c8('0xb9')][_0x18c272]['dataValues']));_0x53dee1[_0x74c8('0x99')](_0x5cedf9(_0x74c8('0xc6'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272][_0x74c8('0xc5')]));_0x53dee1['push'](_0x5cedf9(_0x74c8('0xc7'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272][_0x74c8('0xc5')]));_0x53dee1[_0x74c8('0x99')](_0x5cedf9(_0x74c8('0xc8'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272]['dataValues']));}return Promise['all'](_0x53dee1)['then'](function(){return _0xdaf4a5;});}return _0xdaf4a5;});}});}}});};
\ No newline at end of file
+var _0xc189=['variables','Variable','plugins','Plugin','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','raw','section','mergeResources','Invalid\x20section\x20\x27','length','push','find','params','all','isEmpty','union','ignore','autoAssociation','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','merge','key','foreignKey','forEach','options','reportType','default','custom','count','ids','customSorting','extraQueryConditions','includeAll','include','Tag','color','tag','rows','Agents','openTabs','true','chat','sms','dataValues','mail','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','value','findAll','then','associatedResources','map','field','model','name','UserProfileResource','AnalyticExtractedReport','resourceId','catch','toLowerCase','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','projects','contacts','CmContact','ListId','lists','companies','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','internalroutes','contexts','VoiceContext','voicemails','VoiceMail','membername','User','agent','role','VoiceQueues','queue','VoiceQueue','type','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','VoiceChanSpy','voiceprefixes','VoicePrefix','mailqueues','MailQueue','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','SmsAccount','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','queuecampaigns','users','agents','Users','admin','Telephones','salesforceaccounts','SalesforceAccount','freshdeskaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','cannedanswers','CannedAnswer','Disposition','customdashboards','Dashboard','intervals','Interval','scheduler','Schedule','sounds','Sound','tags','templates','Template','triggers','trunks','Trunk'];(function(_0x1eb3a9,_0x1bc3d2){var _0x588a71=function(_0x4399d8){while(--_0x4399d8){_0x1eb3a9['push'](_0x1eb3a9['shift']());}};_0x588a71(++_0x1bc3d2);}(_0xc189,0x1c6));var _0x9c18=function(_0x5e7979,_0x4175c0){_0x5e7979=_0x5e7979-0x0;var _0x50f569=_0xc189[_0x5e7979];return _0x50f569;};'use strict';var _=require(_0x9c18('0x0'));var attributes=require(_0x9c18('0x1'));var qs=require(_0x9c18('0x2'));var squel=require(_0x9c18('0x3'));module['exports']=function(_0x11242d){var _0xef7bba=_0x11242d[_0x9c18('0x4')];function _0x4d711e(_0x47f1ca,_0xaa7a58){return new Promise(function(_0x272f0e,_0x1ae49c){if(!_0xaa7a58)return _0x272f0e(null);var _0x1a7910=_0xaa7a58[_0x9c18('0x5')]?{[_0xaa7a58[_0x9c18('0x5')]['field']]:_0xaa7a58[_0x9c18('0x5')][_0x9c18('0x6')]}:undefined;return _0xef7bba[_0x47f1ca][_0x9c18('0x7')]({'where':_0x1a7910,'raw':!![]})[_0x9c18('0x8')](function(_0x2aa414){_0xaa7a58[_0x9c18('0x9')]=_[_0x9c18('0xa')](_0x2aa414,'id');_0x272f0e(_0xaa7a58);})['catch'](function(_0x505d86){_0x1ae49c(_0x505d86);});});}function _0x760ed8(_0x43f87d,_0x1c6869){return new Promise(function(_0x243ac8,_0x129895){var _0x1e96fa=_0x43f87d['filter']?{[_0x43f87d[_0x9c18('0x5')][_0x9c18('0xb')]]:_0x43f87d[_0x9c18('0x5')]['value']}:undefined;return _0xef7bba[_0x43f87d[_0x9c18('0xc')]][_0x9c18('0x7')]({'where':_0x1e96fa,'raw':!![]})[_0x9c18('0x8')](function(_0x48e72b){_0x1c6869[_0x9c18('0x9')]=_['map'](_0x48e72b,function(_0x3d390e){return _0x3d390e[_0x9c18('0xd')];});_0x243ac8(_0x1c6869);})['catch'](function(_0x2c0cd4){_0x129895(_0x2c0cd4);});});}function _0x13e0f2(_0x5d9b7e,_0x16ff2b,_0x114312){if(!_0x16ff2b)return Promise['resolve'](null);return new Promise(function(_0x34eab1,_0x4a1b58){return _0xef7bba[_0x9c18('0xe')][_0x9c18('0x7')]({'where':{'sectionId':_0x16ff2b['id']},'raw':!![]})[_0x9c18('0x8')](function(_0x4ea427){if(_0x5d9b7e[_0x9c18('0xb')]&&_0x5d9b7e[_0x9c18('0xb')]!=='id'){_0x16ff2b['associatedResources']=_[_0x9c18('0xa')](_0x4ea427,function(_0x466e9c){return _0x466e9c[_0x5d9b7e[_0x9c18('0xb')]];});}else{if(_0x114312===_0x9c18('0xf')){_0x16ff2b[_0x9c18('0x9')]=_[_0x9c18('0xa')](_0x4ea427,function(_0x55e152){return{'id':_0x55e152[_0x9c18('0x10')],'type':_0x55e152['type']};});}else{_0x16ff2b[_0x9c18('0x9')]=_[_0x9c18('0xa')](_0x4ea427,function(_0x2c2e68){return _0x2c2e68[_0x9c18('0x10')];});}}_0x34eab1(_0x16ff2b);})[_0x9c18('0x11')](function(_0x507774){_0x4a1b58(_0x507774);});});}function _0x2fd438(_0x3a156d,_0x8e45ce){var _0x56508d={'parentSections':[]};switch(_0x3a156d[_0x9c18('0x12')]()){case'squareprojects':_0x56508d[_0x9c18('0x13')]=_0x9c18('0x14');break;case _0x9c18('0x15'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x16');break;case'squarerecordings':_0x56508d['childModel']=_0x9c18('0x17');_0x56508d[_0x9c18('0x18')]=[{'name':_0x9c18('0x19'),'field':_0x9c18('0xd'),'foreignKey':_0x9c18('0x1a')}];break;case _0x9c18('0x1b'):_0x56508d[_0x9c18('0x13')]='JscriptyProject';break;case _0x9c18('0x1c'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x1d');_0x56508d[_0x9c18('0x18')]=[{'name':'Lists','field':'id','foreignKey':_0x9c18('0x1e')}];break;case _0x9c18('0x1f'):_0x56508d[_0x9c18('0x13')]='CmList';break;case _0x9c18('0x20'):_0x56508d[_0x9c18('0x13')]='CmCompany';break;case'globalcustomfields':_0x56508d[_0x9c18('0x13')]=_0x9c18('0x21');break;case _0x9c18('0x22'):_0x56508d['childModel']=_0x9c18('0x23');break;case _0x9c18('0x24'):_0x56508d['childModel']=_0x9c18('0x25');break;case _0x9c18('0x26'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x27');break;case _0x9c18('0x28'):_0x56508d['childModel']='FaxAccount';break;case'inboundroutes':case _0x9c18('0x29'):case'outboundroutes':_0x56508d[_0x9c18('0x13')]='VoiceExtension';break;case _0x9c18('0x2a'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x2b');break;case _0x9c18('0x2c'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x2d');break;case'voicerecordings':_0x56508d[_0x9c18('0x13')]='VoiceRecording';_0x56508d[_0x9c18('0x18')]=[{'name':'Agents','field':'name','foreignKey':_0x9c18('0x2e'),'model':_0x9c18('0x2f'),'filter':{'field':'role','value':[_0x9c18('0x30')]}},{'name':'Telephones','field':_0x9c18('0xd'),'foreignKey':_0x9c18('0x2e'),'model':_0x9c18('0x2f'),'filter':{'field':_0x9c18('0x31'),'value':['telephone']}},{'name':_0x9c18('0x32'),'field':_0x9c18('0xd'),'foreignKey':_0x9c18('0x33'),'model':_0x9c18('0x34'),'filter':{'field':_0x9c18('0x35'),'value':[_0x9c18('0x36')]}},{'name':_0x9c18('0x37'),'field':_0x9c18('0xd'),'foreignKey':_0x9c18('0x33'),'model':_0x9c18('0x34'),'filter':{'field':_0x9c18('0x35'),'value':[_0x9c18('0x38')]}}];break;case _0x9c18('0x39'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x3a');break;case'chanspies':_0x56508d[_0x9c18('0x13')]=_0x9c18('0x3b');break;case _0x9c18('0x3c'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x3d');break;case'ivrcampaigns':_0x56508d['childModel']='Campaign';break;case _0x9c18('0x3e'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x3f');break;case'mailaccounts':_0x56508d['childModel']=_0x9c18('0x40');break;case _0x9c18('0x41'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x42');break;case _0x9c18('0x43'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x44');break;case _0x9c18('0x45'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x46');break;case _0x9c18('0x47'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x48');break;case'smsaccounts':_0x56508d[_0x9c18('0x13')]=_0x9c18('0x49');break;case'whatsappqueues':_0x56508d['childModel']=_0x9c18('0x4a');break;case _0x9c18('0x4b'):_0x56508d['childModel']=_0x9c18('0x4c');break;case _0x9c18('0x4d'):_0x56508d[_0x9c18('0x13')]='Team';break;case _0x9c18('0x4e'):case _0x9c18('0x4f'):_0x56508d['childModel']='VoiceQueue';if(_0x8e45ce){_0x56508d[_0x9c18('0x18')]=[{'name':'VoiceQueues'},{'name':_0x9c18('0x37')}];}break;case _0x9c18('0x50'):case _0x9c18('0x51'):case'telephones':_0x56508d['childModel']=_0x9c18('0x2f');if(_0x8e45ce){_0x56508d[_0x9c18('0x18')]=[{'name':_0x9c18('0x52'),'filter':{'field':'role','value':[_0x9c18('0x53'),'user']},'ignore':!![]},{'name':'Agents'},{'name':_0x9c18('0x54')}];}break;case'zendeskaccounts':_0x56508d[_0x9c18('0x13')]='ZendeskAccount';break;case _0x9c18('0x55'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x56');break;case _0x9c18('0x57'):_0x56508d[_0x9c18('0x13')]='FreshdeskAccount';break;case'sugarcrmaccounts':_0x56508d[_0x9c18('0x13')]=_0x9c18('0x58');break;case _0x9c18('0x59'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x5a');break;case _0x9c18('0x5b'):_0x56508d[_0x9c18('0x13')]='ZohoAccount';break;case _0x9c18('0x5c'):_0x56508d['childModel']=_0x9c18('0x2f');break;case _0x9c18('0x5d'):_0x56508d['childModel']=_0x9c18('0x5e');break;case'dispositions':_0x56508d[_0x9c18('0x13')]=_0x9c18('0x5f');break;case _0x9c18('0x60'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x61');break;case _0x9c18('0x62'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x63');break;case'pauses':_0x56508d[_0x9c18('0x13')]='Pause';break;case _0x9c18('0x64'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x65');break;case _0x9c18('0x66'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x67');break;case _0x9c18('0x68'):_0x56508d[_0x9c18('0x13')]='Tag';break;case _0x9c18('0x69'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x6a');break;case _0x9c18('0x6b'):_0x56508d[_0x9c18('0x13')]='Trigger';break;case _0x9c18('0x6c'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x6d');break;case _0x9c18('0x6e'):_0x56508d['childModel']=_0x9c18('0x6f');break;case _0x9c18('0x70'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x71');break;case'extractedreports':_0x56508d[_0x9c18('0x13')]=_0x9c18('0xf');_0x56508d['parentSections']=[{'name':'Reports','field':'id','foreignKey':_0x9c18('0x72')}];break;case _0x9c18('0x73'):_0x56508d[_0x9c18('0x13')]=_0x9c18('0x74');break;}return _0x56508d;}function _0x4137a5(_0x33b0b6,_0x566061){var _0x3ee20c=_0x33b0b6[_0x9c18('0x75')](0x0)[_0x9c18('0x76')]()+_0x33b0b6[_0x9c18('0x77')](0x1);var _0x41c09d={'type':_0xef7bba[_0x9c18('0x78')][_0x9c18('0x79')][_0x9c18('0x7a')],'raw':!![]};return new Promise(function(_0x750210,_0x3de339){var _0x29babf=squel[_0x9c18('0x7b')]()[_0x9c18('0xb')](_0x9c18('0x7c')+_0x3ee20c+_0x9c18('0x7d'),'id')[_0x9c18('0xb')](_0x9c18('0x7e'))[_0x9c18('0x7f')]('user_has_'+_0x33b0b6+_0x9c18('0x80'),'ui')[_0x9c18('0x81')](_0x9c18('0x82'),_0x566061['id']);return _0xef7bba[_0x9c18('0x83')][_0x9c18('0x84')](_0x29babf[_0x9c18('0x85')](),_0x41c09d)[_0x9c18('0x8')](function(_0x2956cb){_0x566061[_0x3ee20c+_0x9c18('0x86')]=_0x2956cb;_0x750210(_0x2956cb);})[_0x9c18('0x11')](function(_0x220d6b){_0x3de339(_0x220d6b);});});}return _0x11242d[_0x9c18('0x87')](_0x9c18('0x88'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x38835b){var _0x5607ae={'raw':_0x38835b[_0x9c18('0x84')][_0x9c18('0x89')],'where':{}};var _0x5eac1d={};var _0x25a944={'count':0x0,'rows':[]};var _0x9d4a3e=_0x38835b['query'][_0x9c18('0x8a')];var _0x10d72d=_0x38835b[_0x9c18('0x84')][_0x9c18('0x8b')]||![];var _0x34cd64=_0x2fd438(_0x9d4a3e,_0x10d72d);if(!_0x34cd64['childModel'])throw new Error(_0x9c18('0x8c')+_0x9d4a3e+'\x27');var _0x268127=[{'name':_0x9d4a3e}];if(!_['isEmpty'](_0x34cd64[_0x9c18('0x18')]))_0x268127=_0x34cd64[_0x9c18('0x18')];var _0x3d92bf=[];for(var _0x32bc8f=0x0;_0x32bc8f<_0x268127[_0x9c18('0x8d')];_0x32bc8f++){_0x3d92bf[_0x9c18('0x8e')](_0xef7bba['UserProfileSection'][_0x9c18('0x8f')]({'where':{'userProfileId':_0x38835b[_0x9c18('0x90')]['id'],'name':_0x268127[_0x32bc8f][_0x9c18('0xd')]},'raw':!![]}));}return Promise[_0x9c18('0x91')](_0x3d92bf)[_0x9c18('0x8')](function(_0x4bfdbd){var _0x1ac8c4=_['filter'](_0x4bfdbd,function(_0x46d459){return _0x46d459?_0x46d459:undefined;});var _0x4c3ac4=_[_0x9c18('0x5')](_0x268127,['ignore',!![]]);var _0x4dd995=_[_0x9c18('0x92')](_0x1ac8c4)&&_['isEmpty'](_0x4c3ac4)?null:_[_0x9c18('0x93')](_0x4c3ac4,_0x1ac8c4);if(!_0x4dd995)return null;var _0x3c02d7=[];for(var _0x210ca9=0x0;_0x210ca9<_0x4dd995['length'];_0x210ca9++){var _0x28fe64=_[_0x9c18('0x8f')](_0x268127,function(_0x271caa){return _0x4dd995[_0x210ca9]?_0x271caa[_0x9c18('0xd')]===_0x4dd995[_0x210ca9]['name']:null;});if(_0x28fe64){if(_0x4dd995[_0x210ca9][_0x9c18('0x94')]){_0x3c02d7[_0x9c18('0x8e')](_0x4d711e(_0x34cd64[_0x9c18('0x13')],_0x4dd995[_0x210ca9]));}else{if(!_0x4dd995[_0x210ca9][_0x9c18('0x95')]){_0x3c02d7['push'](_0x13e0f2(_0x28fe64,_0x4dd995[_0x210ca9],_0x34cd64['childModel']));}else{if(_0x28fe64[_0x9c18('0xc')]){_0x3c02d7['push'](_0x760ed8(_0x28fe64,_0x4dd995[_0x210ca9]));}}}}}return Promise[_0x9c18('0x91')](_0x3c02d7);})[_0x9c18('0x8')](function(_0x5de708){var _0x1cb62f=_0x5de708;var _0x3cd4e9=null;if(_0x1cb62f){_0x3cd4e9=_0x1cb62f[_0x9c18('0x8d')]===0x1?_0x1cb62f[0x0]:null;}if(!_0x3cd4e9&&!_0x1cb62f)return _0x25a944;var _0x399f93=_0xef7bba[_0x34cd64[_0x9c18('0x13')]][_0x9c18('0x96')];_0x5eac1d[_0x9c18('0xc')]=_[_0x9c18('0x97')](_0x399f93);_0x5eac1d[_0x9c18('0x84')]=_[_0x9c18('0x97')](_0x38835b['query']);_0x5eac1d[_0x9c18('0x98')]=_[_0x9c18('0x99')](_0x5eac1d[_0x9c18('0xc')],_0x5eac1d[_0x9c18('0x84')]);_0x5607ae[_0x9c18('0x9a')]=_[_0x9c18('0x99')](_0x5eac1d[_0x9c18('0xc')],qs[_0x9c18('0x9b')](_0x38835b[_0x9c18('0x84')][_0x9c18('0x9b')]));_0x5607ae['attributes']=_0x5607ae['attributes'][_0x9c18('0x8d')]?_0x5607ae[_0x9c18('0x9a')]:_0x5eac1d[_0x9c18('0xc')];if(!_0x38835b[_0x9c18('0x84')][_0x9c18('0x9c')](_0x9c18('0x9d'))){_0x5607ae['limit']=qs[_0x9c18('0x9e')](_0x38835b[_0x9c18('0x84')]['limit']);_0x5607ae[_0x9c18('0x9f')]=qs[_0x9c18('0x9f')](_0x38835b[_0x9c18('0x84')][_0x9c18('0x9f')]);}_0x5607ae[_0x9c18('0xa0')]=qs['sort'](_0x38835b[_0x9c18('0x84')][_0x9c18('0xa1')]);_0x5607ae[_0x9c18('0x81')]=qs[_0x9c18('0x98')](_['pick'](_0x38835b[_0x9c18('0x84')],_0x5eac1d[_0x9c18('0x98')]));if(_0x38835b['query']['filter']){_0x5607ae['where']=_[_0x9c18('0xa2')](_0x5607ae['where'],{'$or':_[_0x9c18('0xa')](_0x399f93,function(_0x2b2991){if(_0x2b2991[_0x9c18('0x35')][_0x9c18('0xa3')]!=='VIRTUAL'){var _0x2f2069={};_0x2f2069[_0x2b2991['field']]={'$like':'%'+_0x38835b[_0x9c18('0x84')][_0x9c18('0x5')]+'%'};return _0x2f2069;}})});}var _0x265c92=[];var _0x16d72f=null;var _0x44eb3f={};if(_0x3cd4e9){_0x16d72f=_[_0x9c18('0x8f')](_0x268127,[_0x9c18('0xd'),_0x3cd4e9[_0x9c18('0xd')]]);if(_0x16d72f['field']){_0x44eb3f={};if(_0x34cd64[_0x9c18('0x13')]===_0x9c18('0xf')){_0x44eb3f[_0x16d72f[_0x9c18('0xa4')]]=_[_0x9c18('0xa')](_0x3cd4e9[_0x9c18('0x9')],'id');}else{_0x44eb3f[_0x16d72f[_0x9c18('0xa4')]]=_0x3cd4e9[_0x9c18('0x9')];}_0x265c92[_0x9c18('0x8e')](_0x44eb3f);}else{_0x5607ae['where']['id']=_0x3cd4e9[_0x9c18('0x9')];}}else{for(var _0x2a8ff9=0x0;_0x2a8ff9<_0x1cb62f[_0x9c18('0x8d')];_0x2a8ff9++){_0x16d72f=_[_0x9c18('0x8f')](_0x268127,[_0x9c18('0xd'),_0x1cb62f[_0x2a8ff9]['name']]);if(_0x16d72f['field']){_0x44eb3f={};_0x44eb3f[_0x16d72f['foreignKey']]=_0x1cb62f[_0x2a8ff9][_0x9c18('0x9')];_0x265c92[_0x9c18('0x8e')](_0x44eb3f);}else{if(!_0x5607ae['where']['id'])_0x5607ae['where']['id']=[];_0x1cb62f[_0x2a8ff9][_0x9c18('0x9')][_0x9c18('0xa5')](function(_0x3baae8){_0x5607ae[_0x9c18('0x81')]['id']['push'](_0x3baae8);});}}}if(!_[_0x9c18('0x92')](_0x265c92)){_0x5607ae[_0x9c18('0x81')]=_[_0x9c18('0xa2')](_0x5607ae[_0x9c18('0x81')],{'$and':{'$or':_0x265c92}});}_0x5607ae=_['merge']({},_0x5607ae,_0x38835b[_0x9c18('0xa6')]);if(_0x3cd4e9&&!_0x3cd4e9['autoAssociation']&&_0x34cd64['childModel']===_0x9c18('0xf')){if(_0x38835b[_0x9c18('0x84')]['includeAll']){_0x5607ae['include']=[{'all':!![]}];}return _0xef7bba[_0x34cd64['childModel']][_0x9c18('0x7')](_0x5607ae)[_0x9c18('0x8')](function(_0xe078cb){var _0x24c574=[];_0xe078cb[_0x9c18('0xa5')](function(_0x51dcac){var _0x23233d;switch(_0x51dcac[_0x9c18('0xa7')]){case _0x9c18('0xa8'):_0x23233d=_[_0x9c18('0x8f')](_0x3cd4e9[_0x9c18('0x9')],function(_0x40d18c){return _0x40d18c['id']===_0x51dcac[_0x9c18('0x72')]&&_0x40d18c['type']==='DefaultReports';});break;case _0x9c18('0xa9'):_0x23233d=_['find'](_0x3cd4e9[_0x9c18('0x9')],function(_0x3b4d5f){return _0x3b4d5f['id']===_0x51dcac[_0x9c18('0x72')]&&_0x3b4d5f['type']==='CustomReports';});break;}if(_0x23233d)_0x24c574[_0x9c18('0x8e')](_0x51dcac);});_0x25a944[_0x9c18('0xaa')]=_0x24c574[_0x9c18('0x8d')];_0x25a944['rows']=_0x24c574;return _0x25a944;});}else{if(!_[_0x9c18('0x92')](_0x38835b[_0x9c18('0x84')][_0x9c18('0xab')])){_0x5607ae[_0x9c18('0x81')]['id']=_0x5607ae[_0x9c18('0x81')]['id']?_[_0x9c18('0x99')](_0x5607ae[_0x9c18('0x81')]['id'],_0x38835b['query'][_0x9c18('0xab')]):_0x38835b[_0x9c18('0x84')][_0x9c18('0xab')];if(_0x38835b[_0x9c18('0x84')]['customSorting']){_0x5607ae['order']=_0x38835b['query'][_0x9c18('0xac')];}}if(_0x38835b['query'][_0x9c18('0xad')]){_0x5607ae[_0x9c18('0x81')]=_[_0x9c18('0xa2')](_0x5607ae[_0x9c18('0x81')],{'$and':_0x38835b['query'][_0x9c18('0xad')]});}return _0xef7bba[_0x34cd64[_0x9c18('0x13')]][_0x9c18('0xaa')]({'where':_0x5607ae['where']})[_0x9c18('0x8')](function(_0x1b1cb4){_0x25a944[_0x9c18('0xaa')]=_0x1b1cb4;if(_0x38835b['query'][_0x9c18('0xae')]){if(_0x34cd64[_0x9c18('0x13')]===_0x9c18('0x1d')){_0x5607ae[_0x9c18('0xaf')]=[{'model':_0xef7bba[_0x9c18('0xb0')],'as':'Tags','attributes':['id',_0x9c18('0xd'),_0x9c18('0xb1')],'required':_0x38835b[_0x9c18('0x84')][_0x9c18('0xb2')]?!![]:![]},{'model':_0xef7bba[_0x9c18('0xb0')],'as':'ThroughTags','attributes':['id',_0x9c18('0xd'),_0x9c18('0xb1')],'through':_0x38835b[_0x9c18('0x84')][_0x9c18('0xb2')]?{'attributes':[],'where':{'TagId':_0x38835b[_0x9c18('0x84')][_0x9c18('0xb2')]||undefined}}:{},'required':_0x38835b['query'][_0x9c18('0xb2')]?!![]:![]}];}else{_0x5607ae[_0x9c18('0xaf')]=[{'all':!![]}];}}return _0xef7bba[_0x34cd64[_0x9c18('0x13')]][_0x9c18('0x7')](_0x5607ae);})[_0x9c18('0x8')](function(_0x12e4a3){_0x25a944[_0x9c18('0xb3')]=_0x12e4a3;if(_0x9d4a3e===_0x9c18('0xb4')&&_0x38835b[_0x9c18('0x84')][_0x9c18('0xb5')]===_0x9c18('0xb6')){var _0x1d5315=[];for(var _0x34bcf5=0x0;_0x34bcf5<_0x25a944[_0x9c18('0xb3')]['length'];_0x34bcf5++){_0x1d5315['push'](_0x4137a5(_0x9c18('0xb7'),_0x25a944[_0x9c18('0xb3')][_0x34bcf5]['dataValues']));_0x1d5315[_0x9c18('0x8e')](_0x4137a5(_0x9c18('0xb8'),_0x25a944[_0x9c18('0xb3')][_0x34bcf5][_0x9c18('0xb9')]));_0x1d5315[_0x9c18('0x8e')](_0x4137a5('fax',_0x25a944[_0x9c18('0xb3')][_0x34bcf5][_0x9c18('0xb9')]));_0x1d5315[_0x9c18('0x8e')](_0x4137a5(_0x9c18('0xba'),_0x25a944['rows'][_0x34bcf5][_0x9c18('0xb9')]));_0x1d5315[_0x9c18('0x8e')](_0x4137a5(_0x9c18('0xbb'),_0x25a944['rows'][_0x34bcf5][_0x9c18('0xb9')]));_0x1d5315['push'](_0x4137a5('whatsapp',_0x25a944[_0x9c18('0xb3')][_0x34bcf5][_0x9c18('0xb9')]));}return Promise[_0x9c18('0x91')](_0x1d5315)[_0x9c18('0x8')](function(){return _0x25a944;});}return _0x25a944;});}});}}});};
\ No newline at end of file
index 748146d..6eff60a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44fe=['http','redis','localhost','socket.io-emitter','./userProfile.socket','request','then','info','request\x20sent','debug','stringify','error','code','UserProfile,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x20daf4,_0x239f24){var _0x103fa6=function(_0x8c276c){while(--_0x8c276c){_0x20daf4['push'](_0x20daf4['shift']());}};_0x103fa6(++_0x239f24);}(_0x44fe,0x16f));var _0xe44f=function(_0x45e0af,_0x452121){_0x45e0af=_0x45e0af-0x0;var _0x397de6=_0x44fe[_0x45e0af];return _0x397de6;};'use strict';var _=require(_0xe44f('0x0'));var util=require(_0xe44f('0x1'));var moment=require(_0xe44f('0x2'));var BPromise=require(_0xe44f('0x3'));var rs=require(_0xe44f('0x4'));var fs=require('fs');var Redis=require(_0xe44f('0x5'));var db=require(_0xe44f('0x6'))['db'];var utils=require(_0xe44f('0x7'));var logger=require(_0xe44f('0x8'))(_0xe44f('0x9'));var config=require(_0xe44f('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe44f('0xb')]({'port':0x232a});config[_0xe44f('0xc')]=_['defaults'](config[_0xe44f('0xc')],{'host':_0xe44f('0xd'),'port':0x18eb});var socket=require(_0xe44f('0xe'))(new Redis(config[_0xe44f('0xc')]));require(_0xe44f('0xf'))['register'](socket);function respondWithRpcPromise(_0x12bdfb,_0x28ed63,_0x44b180){return new BPromise(function(_0x447184,_0x2d6ec5){return client[_0xe44f('0x10')](_0x12bdfb,_0x44b180)[_0xe44f('0x11')](function(_0xdb9b6c){logger[_0xe44f('0x12')]('UserProfile,\x20%s,\x20%s',_0x28ed63,_0xe44f('0x13'));logger[_0xe44f('0x14')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x28ed63,_0xe44f('0x13'),JSON[_0xe44f('0x15')](_0xdb9b6c));if(_0xdb9b6c[_0xe44f('0x16')]){if(_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x17')]===0x1f4){logger[_0xe44f('0x16')](_0xe44f('0x18'),_0x28ed63,_0xdb9b6c[_0xe44f('0x16')]['message']);return _0x2d6ec5(_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x19')]);}logger[_0xe44f('0x16')](_0xe44f('0x18'),_0x28ed63,_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x19')]);return _0x447184(_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x19')]);}else{logger[_0xe44f('0x12')](_0xe44f('0x18'),_0x28ed63,_0xe44f('0x13'));_0x447184(_0xdb9b6c[_0xe44f('0x1a')]['message']);}})['catch'](function(_0xf3b4df){logger[_0xe44f('0x16')](_0xe44f('0x18'),_0x28ed63,_0xf3b4df);_0x2d6ec5(_0xf3b4df);});});}
\ No newline at end of file
+var _0xdd68=['defaults','localhost','socket.io-emitter','redis','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x4c5c4c,_0x4f25e1){var _0x546718=function(_0x44f2ec){while(--_0x44f2ec){_0x4c5c4c['push'](_0x4c5c4c['shift']());}};_0x546718(++_0x4f25e1);}(_0xdd68,0x196));var _0x8dd6=function(_0x737a1f,_0x235fef){_0x737a1f=_0x737a1f-0x0;var _0x16eba1=_0xdd68[_0x737a1f];return _0x16eba1;};'use strict';var _=require(_0x8dd6('0x0'));var util=require('util');var moment=require(_0x8dd6('0x1'));var BPromise=require(_0x8dd6('0x2'));var rs=require(_0x8dd6('0x3'));var fs=require('fs');var Redis=require(_0x8dd6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8dd6('0x5'));var logger=require(_0x8dd6('0x6'))('rpc');var config=require(_0x8dd6('0x7'));var jayson=require(_0x8dd6('0x8'));var client=jayson['client'][_0x8dd6('0x9')]({'port':0x232a});config['redis']=_[_0x8dd6('0xa')](config['redis'],{'host':_0x8dd6('0xb'),'port':0x18eb});var socket=require(_0x8dd6('0xc'))(new Redis(config[_0x8dd6('0xd')]));require('./userProfile.socket')[_0x8dd6('0xe')](socket);function respondWithRpcPromise(_0x7ef2a7,_0x1ef33d,_0x2dc6ea){return new BPromise(function(_0x34bd4e,_0x19e423){return client[_0x8dd6('0xf')](_0x7ef2a7,_0x2dc6ea)[_0x8dd6('0x10')](function(_0x84f828){logger[_0x8dd6('0x11')](_0x8dd6('0x12'),_0x1ef33d,_0x8dd6('0x13'));logger[_0x8dd6('0x14')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x1ef33d,_0x8dd6('0x13'),JSON[_0x8dd6('0x15')](_0x84f828));if(_0x84f828[_0x8dd6('0x16')]){if(_0x84f828['error']['code']===0x1f4){logger[_0x8dd6('0x16')]('UserProfile,\x20%s,\x20%s',_0x1ef33d,_0x84f828['error'][_0x8dd6('0x17')]);return _0x19e423(_0x84f828[_0x8dd6('0x16')][_0x8dd6('0x17')]);}logger[_0x8dd6('0x16')](_0x8dd6('0x12'),_0x1ef33d,_0x84f828[_0x8dd6('0x16')][_0x8dd6('0x17')]);return _0x34bd4e(_0x84f828[_0x8dd6('0x16')][_0x8dd6('0x17')]);}else{logger['info'](_0x8dd6('0x12'),_0x1ef33d,_0x8dd6('0x13'));_0x34bd4e(_0x84f828[_0x8dd6('0x18')][_0x8dd6('0x17')]);}})[_0x8dd6('0x19')](function(_0x36bcdc){logger[_0x8dd6('0x16')](_0x8dd6('0x12'),_0x1ef33d,_0x36bcdc);_0x19e423(_0x36bcdc);});});}
\ No newline at end of file
index e0b7217..d3b8593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x517b=['removeListener','register','./userProfile.events','update'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x517b,0x152));var _0xb517=function(_0x4f522f,_0x4ac9e0){_0x4f522f=_0x4f522f-0x0;var _0x5701b3=_0x517b[_0x4f522f];return _0x5701b3;};'use strict';var UserProfileEvents=require(_0xb517('0x0'));var events=['save','remove',_0xb517('0x1')];function createListener(_0x30d048,_0x123f3f){return function(_0xc66c91){_0x123f3f['emit'](_0x30d048,_0xc66c91);};}function removeListener(_0x29ba21,_0x16ae13){return function(){UserProfileEvents[_0xb517('0x2')](_0x29ba21,_0x16ae13);};}exports[_0xb517('0x3')]=function(_0x36b111){for(var _0x2c2045=0x0,_0xca734a=events['length'];_0x2c2045<_0xca734a;_0x2c2045++){var _0x488f3c=events[_0x2c2045];var _0x48b3dd=createListener('userProfile:'+_0x488f3c,_0x36b111);UserProfileEvents['on'](_0x488f3c,_0x48b3dd);}};
\ No newline at end of file
+var _0xa948=['userProfile:','./userProfile.events','save','remove','update','emit','register'];(function(_0x302b17,_0x921eef){var _0x2362b8=function(_0x13e488){while(--_0x13e488){_0x302b17['push'](_0x302b17['shift']());}};_0x2362b8(++_0x921eef);}(_0xa948,0x8d));var _0x8a94=function(_0x26d678,_0x273258){_0x26d678=_0x26d678-0x0;var _0x4ad538=_0xa948[_0x26d678];return _0x4ad538;};'use strict';var UserProfileEvents=require(_0x8a94('0x0'));var events=[_0x8a94('0x1'),_0x8a94('0x2'),_0x8a94('0x3')];function createListener(_0x126783,_0x4feba2){return function(_0x5769c2){_0x4feba2[_0x8a94('0x4')](_0x126783,_0x5769c2);};}function removeListener(_0x57075e,_0x5e2ad3){return function(){UserProfileEvents['removeListener'](_0x57075e,_0x5e2ad3);};}exports[_0x8a94('0x5')]=function(_0x12bc5c){for(var _0x562aea=0x0,_0x3d6dd0=events['length'];_0x562aea<_0x3d6dd0;_0x562aea++){var _0x3ae26a=events[_0x562aea];var _0x4074eb=createListener(_0x8a94('0x6')+_0x3ae26a,_0x12bc5c);UserProfileEvents['on'](_0x3ae26a,_0x4074eb);}};
\ No newline at end of file
index 13e78b2..853a41f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe835=['update','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x4a7ef6,_0x43c1b5){var _0x5685f1=function(_0x453324){while(--_0x453324){_0x4a7ef6['push'](_0x4a7ef6['shift']());}};_0x5685f1(++_0x43c1b5);}(_0xe835,0x1ca));var _0x5e83=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0xe835[_0x273dc5];return _0x46dae7;};'use strict';var multer=require(_0x5e83('0x0'));var util=require(_0x5e83('0x1'));var path=require(_0x5e83('0x2'));var timeout=require(_0x5e83('0x3'));var express=require('express');var router=express[_0x5e83('0x4')]();var fs_extra=require(_0x5e83('0x5'));var auth=require(_0x5e83('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./userProfileResource.controller');router[_0x5e83('0x7')]('/',auth[_0x5e83('0x8')](),controller[_0x5e83('0x9')]);router['get'](_0x5e83('0xa'),auth['isAuthenticated'](),controller[_0x5e83('0xb')]);router[_0x5e83('0x7')](_0x5e83('0xc'),auth[_0x5e83('0x8')](),controller[_0x5e83('0xd')]);router[_0x5e83('0xe')]('/',auth[_0x5e83('0x8')](),controller[_0x5e83('0xf')]);router[_0x5e83('0x10')](_0x5e83('0xc'),auth[_0x5e83('0x8')](),controller[_0x5e83('0x11')]);router['delete']('/:id',auth[_0x5e83('0x8')](),controller[_0x5e83('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x53f8=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','index','/describe','isAuthenticated','show','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53f8,0x1b4));var _0x853f=function(_0x58afd5,_0x534a48){_0x58afd5=_0x58afd5-0x0;var _0x3e503b=_0x53f8[_0x58afd5];return _0x3e503b;};'use strict';var multer=require('multer');var util=require(_0x853f('0x0'));var path=require(_0x853f('0x1'));var timeout=require(_0x853f('0x2'));var express=require(_0x853f('0x3'));var router=express[_0x853f('0x4')]();var fs_extra=require(_0x853f('0x5'));var auth=require(_0x853f('0x6'));var interaction=require(_0x853f('0x7'));var config=require(_0x853f('0x8'));var controller=require(_0x853f('0x9'));router[_0x853f('0xa')]('/',auth['isAuthenticated'](),controller[_0x853f('0xb')]);router[_0x853f('0xa')](_0x853f('0xc'),auth[_0x853f('0xd')](),controller['describe']);router[_0x853f('0xa')]('/:id',auth[_0x853f('0xd')](),controller[_0x853f('0xe')]);router['post']('/',auth[_0x853f('0xd')](),controller[_0x853f('0xf')]);router[_0x853f('0x10')](_0x853f('0x11'),auth[_0x853f('0xd')](),controller[_0x853f('0x12')]);router[_0x853f('0x13')]('/:id',auth[_0x853f('0xd')](),controller[_0x853f('0x14')]);module[_0x853f('0x15')]=router;
\ No newline at end of file
index ef4c514..08c6fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd16=['INTEGER','exports'];(function(_0x58965a,_0x2e71db){var _0x254efc=function(_0xf14fb4){while(--_0xf14fb4){_0x58965a['push'](_0x58965a['shift']());}};_0x254efc(++_0x2e71db);}(_0xfd16,0x1bf));var _0x6fd1=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xfd16[_0x45d3f0];return _0x314b79;};'use strict';var Sequelize=require('sequelize');module[_0x6fd1('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x6fd1('0x1')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x0ac5=['INTEGER','exports','STRING'];(function(_0x282442,_0x185644){var _0x244748=function(_0x10a419){while(--_0x10a419){_0x282442['push'](_0x282442['shift']());}};_0x244748(++_0x185644);}(_0x0ac5,0x19c));var _0x50ac=function(_0x5c0866,_0x56b948){_0x5c0866=_0x5c0866-0x0;var _0x4120a1=_0x0ac5[_0x5c0866];return _0x4120a1;};'use strict';var Sequelize=require('sequelize');module[_0x50ac('0x0')]={'name':{'type':Sequelize[_0x50ac('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x50ac('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x50ac('0x1')],'allowNull':![]}};
\ No newline at end of file
index d1f5d77..1543c15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','UserProfileResource','rawAttributes','type','key','model','query'];(function(_0x477a5d,_0x549533){var _0x24b79e=function(_0xce90bb){while(--_0xce90bb){_0x477a5d['push'](_0x477a5d['shift']());}};_0x24b79e(++_0x549533);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x5a060f,_0x5bf8d3){_0x5a060f=_0x5a060f-0x0;var _0x16c409=_0xc1c6[_0x5a060f];return _0x16c409;};'use strict';var emlformat=require(_0x6c1c('0x0'));var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c1c('0x3'));var moment=require('moment');var BPromise=require(_0x6c1c('0x4'));var Mustache=require(_0x6c1c('0x5'));var util=require(_0x6c1c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6c1c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c1c('0x8'));var _=require('lodash');var squel=require(_0x6c1c('0x9'));var crypto=require(_0x6c1c('0xa'));var jsforce=require(_0x6c1c('0xb'));var deskjs=require(_0x6c1c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6c1c('0xd'));var Papa=require(_0x6c1c('0xe'));var Redis=require('ioredis');var authService=require(_0x6c1c('0xf'));var qs=require(_0x6c1c('0x10'));var as=require(_0x6c1c('0x11'));var hardwareService=require(_0x6c1c('0x12'));var logger=require('../../config/logger')(_0x6c1c('0x13'));var utils=require(_0x6c1c('0x14'));var config=require(_0x6c1c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x16'))['db'];function respondWithStatusCode(_0x12a9e6,_0x2067bd){_0x2067bd=_0x2067bd||0xcc;return function(_0x49304f){if(_0x49304f){return _0x12a9e6[_0x6c1c('0x17')](_0x2067bd);}return _0x12a9e6['status'](_0x2067bd)[_0x6c1c('0x18')]();};}function respondWithResult(_0x15a1fc,_0x2d279e){_0x2d279e=_0x2d279e||0xc8;return function(_0x154107){if(_0x154107){return _0x15a1fc[_0x6c1c('0x19')](_0x2d279e)[_0x6c1c('0x1a')](_0x154107);}};}function respondWithFilteredResult(_0x297c33,_0x41aa74){return function(_0x448f35){if(_0x448f35){var _0x5f3758=typeof _0x41aa74[_0x6c1c('0x1b')]===_0x6c1c('0x1c')&&typeof _0x41aa74['limit']===_0x6c1c('0x1c');var _0x237cac=_0x448f35['count'];var _0x137770=_0x5f3758?0x0:_0x41aa74['offset'];var _0x338dc2=_0x5f3758?_0x448f35[_0x6c1c('0x1d')]:_0x41aa74['offset']+_0x41aa74[_0x6c1c('0x1e')];var _0x59ab38;if(_0x338dc2>=_0x237cac){_0x338dc2=_0x237cac;_0x59ab38=0xc8;}else{_0x59ab38=0xce;}_0x297c33[_0x6c1c('0x19')](_0x59ab38);return _0x297c33[_0x6c1c('0x1f')](_0x6c1c('0x20'),_0x137770+'-'+_0x338dc2+'/'+_0x237cac)[_0x6c1c('0x1a')](_0x448f35);}return null;};}function patchUpdates(_0x1acf7f){return function(_0x1efb19){try{jsonpatch[_0x6c1c('0x21')](_0x1efb19,_0x1acf7f,!![]);}catch(_0x2ed830){return BPromise[_0x6c1c('0x22')](_0x2ed830);}return _0x1efb19[_0x6c1c('0x23')]();};}function saveUpdates(_0x3d2bf3,_0x450b1f){return function(_0x2382c0){if(_0x2382c0){return _0x2382c0[_0x6c1c('0x24')](_0x3d2bf3)[_0x6c1c('0x25')](function(_0x19c269){return _0x19c269;});}return null;};}function removeEntity(_0x2319d3,_0x12c638){return function(_0x3a3f13){if(_0x3a3f13){return _0x3a3f13[_0x6c1c('0x26')]()[_0x6c1c('0x25')](function(){_0x2319d3[_0x6c1c('0x19')](0xcc)[_0x6c1c('0x18')]();});}};}function handleEntityNotFound(_0x7ff10d,_0x18452d){return function(_0x80bc05){if(!_0x80bc05){_0x7ff10d[_0x6c1c('0x17')](0x194);}return _0x80bc05;};}function handleError(_0x1b9d7d,_0x2feaf4){_0x2feaf4=_0x2feaf4||0x1f4;return function(_0x5f4568){logger[_0x6c1c('0x27')](_0x5f4568['stack']);if(_0x5f4568[_0x6c1c('0x28')]){delete _0x5f4568['name'];}_0x1b9d7d[_0x6c1c('0x19')](_0x2feaf4)['send'](_0x5f4568);};}exports[_0x6c1c('0x29')]=function(_0xf557ba,_0x504348){var _0x3b1a4f={},_0x24da4c={},_0x4e13e3={'count':0x0,'rows':[]};var _0x3b319a=_[_0x6c1c('0x2a')](db[_0x6c1c('0x2b')][_0x6c1c('0x2c')],function(_0x4fc279){return{'name':_0x4fc279['fieldName'],'type':_0x4fc279[_0x6c1c('0x2d')][_0x6c1c('0x2e')]};});_0x24da4c[_0x6c1c('0x2f')]=_[_0x6c1c('0x2a')](_0x3b319a,_0x6c1c('0x28'));_0x24da4c[_0x6c1c('0x30')]=_['keys'](_0xf557ba[_0x6c1c('0x30')]);_0x24da4c[_0x6c1c('0x31')]=_['intersection'](_0x24da4c[_0x6c1c('0x2f')],_0x24da4c[_0x6c1c('0x30')]);_0x3b1a4f[_0x6c1c('0x32')]=_[_0x6c1c('0x33')](_0x24da4c['model'],qs[_0x6c1c('0x34')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x3b1a4f['attributes']=_0x3b1a4f[_0x6c1c('0x32')]['length']?_0x3b1a4f[_0x6c1c('0x32')]:_0x24da4c['model'];if(!_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x35')](_0x6c1c('0x36'))){_0x3b1a4f['limit']=qs['limit'](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x1e')]);_0x3b1a4f[_0x6c1c('0x1b')]=qs['offset'](_0xf557ba[_0x6c1c('0x30')]['offset']);}_0x3b1a4f['order']=qs[_0x6c1c('0x37')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x37')]);_0x3b1a4f[_0x6c1c('0x38')]=qs['filters'](_[_0x6c1c('0x39')](_0xf557ba[_0x6c1c('0x30')],_0x24da4c[_0x6c1c('0x31')]),_0x3b319a);if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]){_0x3b1a4f[_0x6c1c('0x38')]=_[_0x6c1c('0x3b')](_0x3b1a4f[_0x6c1c('0x38')],{'$or':_[_0x6c1c('0x2a')](_0x3b319a,function(_0x232508){if(_0x232508['type']!==_0x6c1c('0x3c')){var _0x464549={};_0x464549[_0x232508[_0x6c1c('0x28')]]={'$like':'%'+_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]+'%'};return _0x464549;}})});}_0x3b1a4f=_['merge']({},_0x3b1a4f,_0xf557ba['options']);var _0x549db1={'where':_0x3b1a4f[_0x6c1c('0x38')]};return db['UserProfileResource']['count'](_0x549db1)[_0x6c1c('0x25')](function(_0x37244e){_0x4e13e3['count']=_0x37244e;if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x3b1a4f[_0x6c1c('0x3e')]=[{'all':!![]}];}return db['UserProfileResource'][_0x6c1c('0x3f')](_0x3b1a4f);})[_0x6c1c('0x25')](function(_0x502e75){_0x4e13e3[_0x6c1c('0x40')]=_0x502e75;return _0x4e13e3;})['then'](respondWithFilteredResult(_0x504348,_0x3b1a4f))[_0x6c1c('0x41')](handleError(_0x504348,null));};exports[_0x6c1c('0x42')]=function(_0x16a389,_0x174f2c){var _0x10764a={'raw':![],'where':{'id':_0x16a389[_0x6c1c('0x43')]['id']}},_0x595ba2={};_0x595ba2[_0x6c1c('0x2f')]=_[_0x6c1c('0x44')](db['UserProfileResource'][_0x6c1c('0x2c')]);_0x595ba2[_0x6c1c('0x30')]=_[_0x6c1c('0x44')](_0x16a389[_0x6c1c('0x30')]);_0x595ba2[_0x6c1c('0x31')]=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],_0x595ba2['query']);_0x10764a['attributes']=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],qs[_0x6c1c('0x34')](_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x10764a[_0x6c1c('0x32')]=_0x10764a[_0x6c1c('0x32')][_0x6c1c('0x45')]?_0x10764a[_0x6c1c('0x32')]:_0x595ba2['model'];if(_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x10764a['include']=[{'all':!![]}];}_0x10764a=_[_0x6c1c('0x3b')]({},_0x10764a,_0x16a389['options']);return db[_0x6c1c('0x2b')][_0x6c1c('0x46')](_0x10764a)[_0x6c1c('0x25')](handleEntityNotFound(_0x174f2c,null))[_0x6c1c('0x25')](respondWithResult(_0x174f2c,null))[_0x6c1c('0x41')](handleError(_0x174f2c,null));};exports['create']=function(_0x1fe6e8,_0x58d075){return db[_0x6c1c('0x2b')][_0x6c1c('0x47')](_0x1fe6e8[_0x6c1c('0x48')],{})[_0x6c1c('0x25')](respondWithResult(_0x58d075,0xc9))[_0x6c1c('0x41')](handleError(_0x58d075,null));};exports[_0x6c1c('0x24')]=function(_0x52c14d,_0xa9889a){if(_0x52c14d[_0x6c1c('0x48')]['id']){delete _0x52c14d['body']['id'];}return db[_0x6c1c('0x2b')][_0x6c1c('0x46')]({'where':{'id':_0x52c14d[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0xa9889a,null))['then'](saveUpdates(_0x52c14d[_0x6c1c('0x48')],null))[_0x6c1c('0x25')](respondWithResult(_0xa9889a,null))[_0x6c1c('0x41')](handleError(_0xa9889a,null));};exports['destroy']=function(_0x5b8d69,_0x56b367){return db['UserProfileResource']['find']({'where':{'id':_0x5b8d69[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0x56b367,null))['then'](removeEntity(_0x56b367,null))[_0x6c1c('0x41')](handleError(_0x56b367,null));};exports[_0x6c1c('0x49')]=function(_0x2450ab,_0x5489ac){return db['UserProfileResource'][_0x6c1c('0x49')]()[_0x6c1c('0x25')](respondWithResult(_0x5489ac,null))['catch'](handleError(_0x5489ac,null));};
\ No newline at end of file
+var _0x6343=['VIRTUAL','options','UserProfileResource','then','rows','catch','show','params','keys','includeAll','include','create','body','find','describe','zip-dir','fast-json-patch','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','stack','send','map','rawAttributes','fieldName','type','key','model','name','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','filter','merge'];(function(_0x2dbce7,_0x57cb8d){var _0x3a3ed0=function(_0x28c8c6){while(--_0x28c8c6){_0x2dbce7['push'](_0x2dbce7['shift']());}};_0x3a3ed0(++_0x57cb8d);}(_0x6343,0x168));var _0x3634=function(_0x585c9b,_0x53c88d){_0x585c9b=_0x585c9b-0x0;var _0x390dca=_0x6343[_0x585c9b];return _0x390dca;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3634('0x0'));var jsonpatch=require(_0x3634('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3634('0x2'));var path=require(_0x3634('0x3'));var sox=require('sox');var csv=require(_0x3634('0x4'));var ejs=require(_0x3634('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3634('0x6'));var squel=require(_0x3634('0x7'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3634('0x8'));var toCsv=require(_0x3634('0x4'));var querystring=require(_0x3634('0x9'));var Papa=require(_0x3634('0xa'));var Redis=require(_0x3634('0xb'));var authService=require(_0x3634('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3634('0xd'));var logger=require(_0x3634('0xe'))('api');var utils=require(_0x3634('0xf'));var config=require(_0x3634('0x10'));var licenseUtil=require(_0x3634('0x11'));var db=require(_0x3634('0x12'))['db'];function respondWithStatusCode(_0x1e6a04,_0x151c8c){_0x151c8c=_0x151c8c||0xcc;return function(_0x35ae07){if(_0x35ae07){return _0x1e6a04[_0x3634('0x13')](_0x151c8c);}return _0x1e6a04[_0x3634('0x14')](_0x151c8c)[_0x3634('0x15')]();};}function respondWithResult(_0x299e53,_0x71d09b){_0x71d09b=_0x71d09b||0xc8;return function(_0x7e4801){if(_0x7e4801){return _0x299e53[_0x3634('0x14')](_0x71d09b)['json'](_0x7e4801);}};}function respondWithFilteredResult(_0x167247,_0x48787f){return function(_0x69609d){if(_0x69609d){var _0x18285c=typeof _0x48787f[_0x3634('0x16')]===_0x3634('0x17')&&typeof _0x48787f[_0x3634('0x18')]==='undefined';var _0x3121a3=_0x69609d['count'];var _0x50350d=_0x18285c?0x0:_0x48787f[_0x3634('0x16')];var _0x4b2115=_0x18285c?_0x69609d[_0x3634('0x19')]:_0x48787f[_0x3634('0x16')]+_0x48787f[_0x3634('0x18')];var _0x5603d2;if(_0x4b2115>=_0x3121a3){_0x4b2115=_0x3121a3;_0x5603d2=0xc8;}else{_0x5603d2=0xce;}_0x167247[_0x3634('0x14')](_0x5603d2);return _0x167247[_0x3634('0x1a')]('Content-Range',_0x50350d+'-'+_0x4b2115+'/'+_0x3121a3)[_0x3634('0x1b')](_0x69609d);}return null;};}function patchUpdates(_0x506281){return function(_0x742e56){try{jsonpatch[_0x3634('0x1c')](_0x742e56,_0x506281,!![]);}catch(_0x5b77a7){return BPromise[_0x3634('0x1d')](_0x5b77a7);}return _0x742e56[_0x3634('0x1e')]();};}function saveUpdates(_0x206c8e,_0x505026){return function(_0x22b7ef){if(_0x22b7ef){return _0x22b7ef[_0x3634('0x1f')](_0x206c8e)['then'](function(_0x3936ee){return _0x3936ee;});}return null;};}function removeEntity(_0x596acb,_0x5e9188){return function(_0x3a8c41){if(_0x3a8c41){return _0x3a8c41[_0x3634('0x20')]()['then'](function(){_0x596acb[_0x3634('0x14')](0xcc)[_0x3634('0x15')]();});}};}function handleEntityNotFound(_0x17db44,_0x225ddc){return function(_0x363ca2){if(!_0x363ca2){_0x17db44[_0x3634('0x13')](0x194);}return _0x363ca2;};}function handleError(_0x38e863,_0x4762b1){_0x4762b1=_0x4762b1||0x1f4;return function(_0x22f1f1){logger['error'](_0x22f1f1[_0x3634('0x21')]);if(_0x22f1f1['name']){delete _0x22f1f1['name'];}_0x38e863['status'](_0x4762b1)[_0x3634('0x22')](_0x22f1f1);};}exports['index']=function(_0x3bf28b,_0x12b80e){var _0x49804f={},_0x55a77f={},_0x282f73={'count':0x0,'rows':[]};var _0x5bd4e0=_[_0x3634('0x23')](db['UserProfileResource'][_0x3634('0x24')],function(_0x3d7322){return{'name':_0x3d7322[_0x3634('0x25')],'type':_0x3d7322[_0x3634('0x26')][_0x3634('0x27')]};});_0x55a77f[_0x3634('0x28')]=_[_0x3634('0x23')](_0x5bd4e0,_0x3634('0x29'));_0x55a77f['query']=_['keys'](_0x3bf28b['query']);_0x55a77f[_0x3634('0x2a')]=_['intersection'](_0x55a77f[_0x3634('0x28')],_0x55a77f[_0x3634('0x2b')]);_0x49804f[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x55a77f[_0x3634('0x28')],qs[_0x3634('0x2e')](_0x3bf28b['query'][_0x3634('0x2e')]));_0x49804f[_0x3634('0x2c')]=_0x49804f[_0x3634('0x2c')][_0x3634('0x2f')]?_0x49804f[_0x3634('0x2c')]:_0x55a77f[_0x3634('0x28')];if(!_0x3bf28b[_0x3634('0x2b')][_0x3634('0x30')](_0x3634('0x31'))){_0x49804f['limit']=qs[_0x3634('0x18')](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x18')]);_0x49804f[_0x3634('0x16')]=qs['offset'](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x16')]);}_0x49804f[_0x3634('0x32')]=qs['sort'](_0x3bf28b['query']['sort']);_0x49804f[_0x3634('0x33')]=qs[_0x3634('0x2a')](_['pick'](_0x3bf28b[_0x3634('0x2b')],_0x55a77f[_0x3634('0x2a')]),_0x5bd4e0);if(_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]){_0x49804f[_0x3634('0x33')]=_[_0x3634('0x35')](_0x49804f[_0x3634('0x33')],{'$or':_['map'](_0x5bd4e0,function(_0x416987){if(_0x416987['type']!==_0x3634('0x36')){var _0x3ae966={};_0x3ae966[_0x416987[_0x3634('0x29')]]={'$like':'%'+_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]+'%'};return _0x3ae966;}})});}_0x49804f=_['merge']({},_0x49804f,_0x3bf28b[_0x3634('0x37')]);var _0x33af29={'where':_0x49804f[_0x3634('0x33')]};return db[_0x3634('0x38')][_0x3634('0x19')](_0x33af29)[_0x3634('0x39')](function(_0x28c8d0){_0x282f73[_0x3634('0x19')]=_0x28c8d0;if(_0x3bf28b[_0x3634('0x2b')]['includeAll']){_0x49804f['include']=[{'all':!![]}];}return db[_0x3634('0x38')]['findAll'](_0x49804f);})['then'](function(_0x5948db){_0x282f73[_0x3634('0x3a')]=_0x5948db;return _0x282f73;})['then'](respondWithFilteredResult(_0x12b80e,_0x49804f))[_0x3634('0x3b')](handleError(_0x12b80e,null));};exports[_0x3634('0x3c')]=function(_0x53c1ea,_0x505be7){var _0x4896ab={'raw':![],'where':{'id':_0x53c1ea[_0x3634('0x3d')]['id']}},_0x324970={};_0x324970['model']=_[_0x3634('0x3e')](db[_0x3634('0x38')][_0x3634('0x24')]);_0x324970[_0x3634('0x2b')]=_[_0x3634('0x3e')](_0x53c1ea['query']);_0x324970['filters']=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],_0x324970[_0x3634('0x2b')]);_0x4896ab[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],qs['fields'](_0x53c1ea[_0x3634('0x2b')][_0x3634('0x2e')]));_0x4896ab[_0x3634('0x2c')]=_0x4896ab['attributes']['length']?_0x4896ab[_0x3634('0x2c')]:_0x324970[_0x3634('0x28')];if(_0x53c1ea[_0x3634('0x2b')][_0x3634('0x3f')]){_0x4896ab[_0x3634('0x40')]=[{'all':!![]}];}_0x4896ab=_[_0x3634('0x35')]({},_0x4896ab,_0x53c1ea[_0x3634('0x37')]);return db[_0x3634('0x38')]['find'](_0x4896ab)[_0x3634('0x39')](handleEntityNotFound(_0x505be7,null))[_0x3634('0x39')](respondWithResult(_0x505be7,null))[_0x3634('0x3b')](handleError(_0x505be7,null));};exports[_0x3634('0x41')]=function(_0x615276,_0x151654){return db[_0x3634('0x38')][_0x3634('0x41')](_0x615276[_0x3634('0x42')],{})['then'](respondWithResult(_0x151654,0xc9))[_0x3634('0x3b')](handleError(_0x151654,null));};exports[_0x3634('0x1f')]=function(_0x4a4a94,_0x3c356b){if(_0x4a4a94[_0x3634('0x42')]['id']){delete _0x4a4a94[_0x3634('0x42')]['id'];}return db[_0x3634('0x38')][_0x3634('0x43')]({'where':{'id':_0x4a4a94[_0x3634('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3c356b,null))[_0x3634('0x39')](saveUpdates(_0x4a4a94[_0x3634('0x42')],null))[_0x3634('0x39')](respondWithResult(_0x3c356b,null))[_0x3634('0x3b')](handleError(_0x3c356b,null));};exports[_0x3634('0x20')]=function(_0x582475,_0x66f6a4){return db[_0x3634('0x38')]['find']({'where':{'id':_0x582475['params']['id']}})[_0x3634('0x39')](handleEntityNotFound(_0x66f6a4,null))['then'](removeEntity(_0x66f6a4,null))[_0x3634('0x3b')](handleError(_0x66f6a4,null));};exports[_0x3634('0x44')]=function(_0x1943a5,_0x1834a3){return db['UserProfileResource'][_0x3634('0x44')]()[_0x3634('0x39')](respondWithResult(_0x1834a3,null))[_0x3634('0x3b')](handleError(_0x1834a3,null));};
\ No newline at end of file
index 5e2dbd6..5d9068e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['../../config/environment','UserProfileResource','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x8aec06,_0x3d5724){var _0x4c3613=function(_0x3c85da){while(--_0x3c85da){_0x8aec06['push'](_0x8aec06['shift']());}};_0x4c3613(++_0x3d5724);}(_0x3266,0x1a9));var _0x6326=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x3266[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0x6326('0x0'));var util=require('util');var logger=require(_0x6326('0x1'))(_0x6326('0x2'));var moment=require(_0x6326('0x3'));var BPromise=require(_0x6326('0x4'));var rp=require(_0x6326('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6326('0x6'));var config=require(_0x6326('0x7'));var attributes=require('./userProfileResource.attributes');module['exports']=function(_0x2d6694,_0x2a5178){return _0x2d6694['define'](_0x6326('0x8'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x6326('0x9'),'fields':[_0x6326('0xa'),_0x6326('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb01c=['path','rimraf','./userProfileResource.attributes','exports','UserProfileResource','user_profile_has_resources','sectionId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb01c,0x93));var _0xcb01=function(_0x201f6a,_0x1b6f2e){_0x201f6a=_0x201f6a-0x0;var _0xf7370e=_0xb01c[_0x201f6a];return _0xf7370e;};'use strict';var _=require(_0xcb01('0x0'));var util=require(_0xcb01('0x1'));var logger=require(_0xcb01('0x2'))(_0xcb01('0x3'));var moment=require(_0xcb01('0x4'));var BPromise=require(_0xcb01('0x5'));var rp=require(_0xcb01('0x6'));var fs=require('fs');var path=require(_0xcb01('0x7'));var rimraf=require(_0xcb01('0x8'));var config=require('../../config/environment');var attributes=require(_0xcb01('0x9'));module[_0xcb01('0xa')]=function(_0x358e07,_0x4df561){return _0x358e07['define'](_0xcb01('0xb'),attributes,{'tableName':_0xcb01('0xc'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['resourceId',_0xcb01('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 8f6a94d..f7192ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf0e=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash'];(function(_0x1cf728,_0x56712f){var _0x32538c=function(_0x5c1540){while(--_0x5c1540){_0x1cf728['push'](_0x1cf728['shift']());}};_0x32538c(++_0x56712f);}(_0xdf0e,0x8b));var _0xedf0=function(_0x4c217f,_0x82a1ae){_0x4c217f=_0x4c217f-0x0;var _0x4033b2=_0xdf0e[_0x4c217f];return _0x4033b2;};'use strict';var _=require(_0xedf0('0x0'));var util=require('util');var moment=require(_0xedf0('0x1'));var BPromise=require('bluebird');var rs=require(_0xedf0('0x2'));var fs=require('fs');var Redis=require(_0xedf0('0x3'));var db=require(_0xedf0('0x4'))['db'];var utils=require(_0xedf0('0x5'));var logger=require(_0xedf0('0x6'))('rpc');var config=require(_0xedf0('0x7'));var jayson=require(_0xedf0('0x8'));var client=jayson[_0xedf0('0x9')][_0xedf0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42ffb6,_0x45482b,_0x24e65d){return new BPromise(function(_0x3fb93a,_0x3d3869){return client['request'](_0x42ffb6,_0x24e65d)['then'](function(_0x2db53c){logger[_0xedf0('0xb')](_0xedf0('0xc'),_0x45482b,_0xedf0('0xd'));logger[_0xedf0('0xe')](_0xedf0('0xf'),_0x45482b,_0xedf0('0xd'),JSON['stringify'](_0x2db53c));if(_0x2db53c[_0xedf0('0x10')]){if(_0x2db53c[_0xedf0('0x10')]['code']===0x1f4){logger[_0xedf0('0x10')](_0xedf0('0xc'),_0x45482b,_0x2db53c['error']['message']);return _0x3d3869(_0x2db53c[_0xedf0('0x10')][_0xedf0('0x11')]);}logger[_0xedf0('0x10')](_0xedf0('0xc'),_0x45482b,_0x2db53c[_0xedf0('0x10')][_0xedf0('0x11')]);return _0x3fb93a(_0x2db53c[_0xedf0('0x10')][_0xedf0('0x11')]);}else{logger[_0xedf0('0xb')](_0xedf0('0xc'),_0x45482b,_0xedf0('0xd'));_0x3fb93a(_0x2db53c[_0xedf0('0x12')]['message']);}})[_0xedf0('0x13')](function(_0x464248){logger[_0xedf0('0x10')](_0xedf0('0xc'),_0x45482b,_0x464248);_0x3d3869(_0x464248);});});}
\ No newline at end of file
+var _0xd46b=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash'];(function(_0x4ccd32,_0x3b11c9){var _0x30b693=function(_0x1b816f){while(--_0x1b816f){_0x4ccd32['push'](_0x4ccd32['shift']());}};_0x30b693(++_0x3b11c9);}(_0xd46b,0x14f));var _0xbd46=function(_0x504691,_0x2d34f4){_0x504691=_0x504691-0x0;var _0x24364c=_0xd46b[_0x504691];return _0x24364c;};'use strict';var _=require(_0xbd46('0x0'));var util=require(_0xbd46('0x1'));var moment=require(_0xbd46('0x2'));var BPromise=require(_0xbd46('0x3'));var rs=require(_0xbd46('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd46('0x5'))['db'];var utils=require(_0xbd46('0x6'));var logger=require(_0xbd46('0x7'))(_0xbd46('0x8'));var config=require('../../config/environment');var jayson=require(_0xbd46('0x9'));var client=jayson[_0xbd46('0xa')][_0xbd46('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5eba51,_0x5b5943,_0x4d11cd){return new BPromise(function(_0x4d723b,_0x1f28ba){return client[_0xbd46('0xc')](_0x5eba51,_0x4d11cd)[_0xbd46('0xd')](function(_0x1b4967){logger[_0xbd46('0xe')](_0xbd46('0xf'),_0x5b5943,_0xbd46('0x10'));logger[_0xbd46('0x11')](_0xbd46('0x12'),_0x5b5943,_0xbd46('0x10'),JSON['stringify'](_0x1b4967));if(_0x1b4967[_0xbd46('0x13')]){if(_0x1b4967[_0xbd46('0x13')][_0xbd46('0x14')]===0x1f4){logger[_0xbd46('0x13')](_0xbd46('0xf'),_0x5b5943,_0x1b4967[_0xbd46('0x13')][_0xbd46('0x15')]);return _0x1f28ba(_0x1b4967[_0xbd46('0x13')][_0xbd46('0x15')]);}logger[_0xbd46('0x13')](_0xbd46('0xf'),_0x5b5943,_0x1b4967[_0xbd46('0x13')][_0xbd46('0x15')]);return _0x4d723b(_0x1b4967['error'][_0xbd46('0x15')]);}else{logger['info']('UserProfileResource,\x20%s,\x20%s',_0x5b5943,_0xbd46('0x10'));_0x4d723b(_0x1b4967[_0xbd46('0x16')][_0xbd46('0x15')]);}})[_0xbd46('0x17')](function(_0x4df382){logger[_0xbd46('0x13')](_0xbd46('0xf'),_0x5b5943,_0x4df382);_0x1f28ba(_0x4df382);});});}
\ No newline at end of file
index 0815b7e..c1d62a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b1f=['/:id','show','post','create','update','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x40b166,_0x1d7cf6){var _0x2219fe=function(_0xcce13d){while(--_0xcce13d){_0x40b166['push'](_0x40b166['shift']());}};_0x2219fe(++_0x1d7cf6);}(_0x1b1f,0xaf));var _0xf1b1=function(_0x570668,_0x5db8c2){_0x570668=_0x570668-0x0;var _0x101f2b=_0x1b1f[_0x570668];return _0x101f2b;};'use strict';var multer=require(_0xf1b1('0x0'));var util=require(_0xf1b1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf1b1('0x2'));var router=express[_0xf1b1('0x3')]();var fs_extra=require(_0xf1b1('0x4'));var auth=require(_0xf1b1('0x5'));var interaction=require(_0xf1b1('0x6'));var config=require(_0xf1b1('0x7'));var controller=require(_0xf1b1('0x8'));router[_0xf1b1('0x9')]('/',auth[_0xf1b1('0xa')](),controller[_0xf1b1('0xb')]);router[_0xf1b1('0x9')](_0xf1b1('0xc'),auth[_0xf1b1('0xa')](),controller[_0xf1b1('0xd')]);router['get'](_0xf1b1('0xe'),auth[_0xf1b1('0xa')](),controller[_0xf1b1('0xf')]);router[_0xf1b1('0x10')]('/',auth['isAuthenticated'](),controller[_0xf1b1('0x11')]);router['put'](_0xf1b1('0xe'),auth[_0xf1b1('0xa')](),controller[_0xf1b1('0x12')]);router['delete'](_0xf1b1('0xe'),auth['isAuthenticated'](),controller[_0xf1b1('0x13')]);module[_0xf1b1('0x14')]=router;
\ No newline at end of file
+var _0x8a92=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','isAuthenticated','get','/describe','show','post','put','/:id','update','delete','destroy','exports','util','path'];(function(_0x44b23e,_0x3d951d){var _0x228403=function(_0x6d6d92){while(--_0x6d6d92){_0x44b23e['push'](_0x44b23e['shift']());}};_0x228403(++_0x3d951d);}(_0x8a92,0x12a));var _0x28a9=function(_0x5c628c,_0x47d73a){_0x5c628c=_0x5c628c-0x0;var _0x217704=_0x8a92[_0x5c628c];return _0x217704;};'use strict';var multer=require('multer');var util=require(_0x28a9('0x0'));var path=require(_0x28a9('0x1'));var timeout=require(_0x28a9('0x2'));var express=require('express');var router=express[_0x28a9('0x3')]();var fs_extra=require(_0x28a9('0x4'));var auth=require(_0x28a9('0x5'));var interaction=require(_0x28a9('0x6'));var config=require(_0x28a9('0x7'));var controller=require(_0x28a9('0x8'));router['get']('/',auth[_0x28a9('0x9')](),controller['index']);router[_0x28a9('0xa')](_0x28a9('0xb'),auth[_0x28a9('0x9')](),controller['describe']);router['get']('/:id',auth[_0x28a9('0x9')](),controller[_0x28a9('0xc')]);router[_0x28a9('0xd')]('/',auth[_0x28a9('0x9')](),controller['create']);router[_0x28a9('0xe')](_0x28a9('0xf'),auth[_0x28a9('0x9')](),controller[_0x28a9('0x10')]);router[_0x28a9('0x11')](_0x28a9('0xf'),auth[_0x28a9('0x9')](),controller[_0x28a9('0x12')]);module[_0x28a9('0x13')]=router;
\ No newline at end of file
index 9a0805a..bcf596c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae60=['setDataValue','join','getDataValue','crudPermissions','split','sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x119b28,_0x515bcf){var _0x5d9e67=function(_0x8ae0bc){while(--_0x8ae0bc){_0x119b28['push'](_0x119b28['shift']());}};_0x5d9e67(++_0x515bcf);}(_0xae60,0x1c7));var _0x0ae6=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0xae60[_0x49b207];return _0x2dc8fa;};'use strict';var Sequelize=require(_0x0ae6('0x0'));module[_0x0ae6('0x1')]={'name':{'type':Sequelize[_0x0ae6('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x0ae6('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x4c014f){this[_0x0ae6('0x5')]('crudPermissions',_0x4c014f?_0x4c014f[_0x0ae6('0x6')](''):[]);},'get':function(){return this[_0x0ae6('0x7')](_0x0ae6('0x8'))?this[_0x0ae6('0x7')](_0x0ae6('0x8'))[_0x0ae6('0x9')](''):[];}}};
\ No newline at end of file
+var _0xd4a2=['join','getDataValue','split','sequelize','STRING','BOOLEAN','setDataValue','crudPermissions'];(function(_0x2a7fbd,_0x4cda9b){var _0x39995a=function(_0x4e10f6){while(--_0x4e10f6){_0x2a7fbd['push'](_0x2a7fbd['shift']());}};_0x39995a(++_0x4cda9b);}(_0xd4a2,0x173));var _0x2d4a=function(_0x6541aa,_0x47b8a8){_0x6541aa=_0x6541aa-0x0;var _0x554f82=_0xd4a2[_0x6541aa];return _0x554f82;};'use strict';var Sequelize=require(_0x2d4a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x2d4a('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x2d4a('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x2d4a('0x1')],'set':function(_0x5d435a){this[_0x2d4a('0x3')](_0x2d4a('0x4'),_0x5d435a?_0x5d435a[_0x2d4a('0x5')](''):[]);},'get':function(){return this[_0x2d4a('0x6')](_0x2d4a('0x4'))?this['getDataValue'](_0x2d4a('0x4'))[_0x2d4a('0x7')](''):[];}}};
\ No newline at end of file
index 9e92e74..9175e6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f9=['intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','offset','undefined','count','status','Content-Range','json','apply','reject','save','update','then','destroy','end','error','send','index','map','UserProfileSection','fieldName','key','model','name','query','filters'];(function(_0x4e2d9c,_0x4af02c){var _0x214f3f=function(_0x3c8122){while(--_0x3c8122){_0x4e2d9c['push'](_0x4e2d9c['shift']());}};_0x214f3f(++_0x4af02c);}(_0xd1f9,0x19f));var _0x9d1f=function(_0x310dc2,_0x2299c4){_0x310dc2=_0x310dc2-0x0;var _0x24980f=_0xd1f9[_0x310dc2];return _0x24980f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9d1f('0x0'));var zipdir=require(_0x9d1f('0x1'));var jsonpatch=require(_0x9d1f('0x2'));var rp=require('request-promise');var moment=require(_0x9d1f('0x3'));var BPromise=require(_0x9d1f('0x4'));var Mustache=require(_0x9d1f('0x5'));var util=require(_0x9d1f('0x6'));var path=require(_0x9d1f('0x7'));var sox=require('sox');var csv=require(_0x9d1f('0x8'));var ejs=require(_0x9d1f('0x9'));var fs=require('fs');var fs_extra=require(_0x9d1f('0xa'));var _=require('lodash');var squel=require(_0x9d1f('0xb'));var crypto=require(_0x9d1f('0xc'));var jsforce=require(_0x9d1f('0xd'));var deskjs=require(_0x9d1f('0xe'));var toCsv=require(_0x9d1f('0x8'));var querystring=require(_0x9d1f('0xf'));var Papa=require(_0x9d1f('0x10'));var Redis=require(_0x9d1f('0x11'));var authService=require(_0x9d1f('0x12'));var qs=require(_0x9d1f('0x13'));var as=require(_0x9d1f('0x14'));var hardwareService=require(_0x9d1f('0x15'));var logger=require(_0x9d1f('0x16'))(_0x9d1f('0x17'));var utils=require(_0x9d1f('0x18'));var config=require(_0x9d1f('0x19'));var licenseUtil=require(_0x9d1f('0x1a'));var db=require(_0x9d1f('0x1b'))['db'];function respondWithStatusCode(_0x37266b,_0x3cf742){_0x3cf742=_0x3cf742||0xcc;return function(_0x555c4f){if(_0x555c4f){return _0x37266b[_0x9d1f('0x1c')](_0x3cf742);}return _0x37266b['status'](_0x3cf742)['end']();};}function respondWithResult(_0x1c8859,_0x106354){_0x106354=_0x106354||0xc8;return function(_0x281873){if(_0x281873){return _0x1c8859['status'](_0x106354)['json'](_0x281873);}};}function respondWithFilteredResult(_0xaecdad,_0xf8273){return function(_0x184770){if(_0x184770){var _0x7afbe6=typeof _0xf8273[_0x9d1f('0x1d')]===_0x9d1f('0x1e')&&typeof _0xf8273['limit']===_0x9d1f('0x1e');var _0x5ea02f=_0x184770[_0x9d1f('0x1f')];var _0xc724c7=_0x7afbe6?0x0:_0xf8273[_0x9d1f('0x1d')];var _0x1944ea=_0x7afbe6?_0x184770[_0x9d1f('0x1f')]:_0xf8273[_0x9d1f('0x1d')]+_0xf8273['limit'];var _0x4cdf96;if(_0x1944ea>=_0x5ea02f){_0x1944ea=_0x5ea02f;_0x4cdf96=0xc8;}else{_0x4cdf96=0xce;}_0xaecdad[_0x9d1f('0x20')](_0x4cdf96);return _0xaecdad['set'](_0x9d1f('0x21'),_0xc724c7+'-'+_0x1944ea+'/'+_0x5ea02f)[_0x9d1f('0x22')](_0x184770);}return null;};}function patchUpdates(_0x22bb55){return function(_0x3112c4){try{jsonpatch[_0x9d1f('0x23')](_0x3112c4,_0x22bb55,!![]);}catch(_0x4e79ba){return BPromise[_0x9d1f('0x24')](_0x4e79ba);}return _0x3112c4[_0x9d1f('0x25')]();};}function saveUpdates(_0x183dd8,_0x1951d4){return function(_0x4f9ba8){if(_0x4f9ba8){return _0x4f9ba8[_0x9d1f('0x26')](_0x183dd8)[_0x9d1f('0x27')](function(_0x392fce){return _0x392fce;});}return null;};}function removeEntity(_0x466c6c,_0x45b510){return function(_0x3649ed){if(_0x3649ed){return _0x3649ed[_0x9d1f('0x28')]()[_0x9d1f('0x27')](function(){_0x466c6c[_0x9d1f('0x20')](0xcc)[_0x9d1f('0x29')]();});}};}function handleEntityNotFound(_0x5ca358,_0x2c239f){return function(_0x4ad9e7){if(!_0x4ad9e7){_0x5ca358[_0x9d1f('0x1c')](0x194);}return _0x4ad9e7;};}function handleError(_0x24b92e,_0x4b886c){_0x4b886c=_0x4b886c||0x1f4;return function(_0x32bdf7){logger[_0x9d1f('0x2a')](_0x32bdf7['stack']);if(_0x32bdf7['name']){delete _0x32bdf7['name'];}_0x24b92e[_0x9d1f('0x20')](_0x4b886c)[_0x9d1f('0x2b')](_0x32bdf7);};}exports[_0x9d1f('0x2c')]=function(_0x59a9af,_0x3bb516){var _0x322b46={},_0x19ab82={},_0x345b17={'count':0x0,'rows':[]};var _0x5a6198=_[_0x9d1f('0x2d')](db[_0x9d1f('0x2e')]['rawAttributes'],function(_0x2437d1){return{'name':_0x2437d1[_0x9d1f('0x2f')],'type':_0x2437d1['type'][_0x9d1f('0x30')]};});_0x19ab82[_0x9d1f('0x31')]=_[_0x9d1f('0x2d')](_0x5a6198,_0x9d1f('0x32'));_0x19ab82[_0x9d1f('0x33')]=_['keys'](_0x59a9af[_0x9d1f('0x33')]);_0x19ab82[_0x9d1f('0x34')]=_[_0x9d1f('0x35')](_0x19ab82[_0x9d1f('0x31')],_0x19ab82[_0x9d1f('0x33')]);_0x322b46[_0x9d1f('0x36')]=_[_0x9d1f('0x35')](_0x19ab82[_0x9d1f('0x31')],qs['fields'](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x37')]));_0x322b46[_0x9d1f('0x36')]=_0x322b46[_0x9d1f('0x36')][_0x9d1f('0x38')]?_0x322b46[_0x9d1f('0x36')]:_0x19ab82[_0x9d1f('0x31')];if(!_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x39')](_0x9d1f('0x3a'))){_0x322b46[_0x9d1f('0x3b')]=qs['limit'](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x3b')]);_0x322b46[_0x9d1f('0x1d')]=qs[_0x9d1f('0x1d')](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x1d')]);}_0x322b46[_0x9d1f('0x3c')]=qs[_0x9d1f('0x3d')](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x3d')]);_0x322b46[_0x9d1f('0x3e')]=qs[_0x9d1f('0x34')](_[_0x9d1f('0x3f')](_0x59a9af['query'],_0x19ab82[_0x9d1f('0x34')]),_0x5a6198);if(_0x59a9af['query']['filter']){_0x322b46['where']=_[_0x9d1f('0x40')](_0x322b46[_0x9d1f('0x3e')],{'$or':_[_0x9d1f('0x2d')](_0x5a6198,function(_0x2e5268){if(_0x2e5268['type']!==_0x9d1f('0x41')){var _0x18cbae={};_0x18cbae[_0x2e5268[_0x9d1f('0x32')]]={'$like':'%'+_0x59a9af['query'][_0x9d1f('0x42')]+'%'};return _0x18cbae;}})});}_0x322b46=_[_0x9d1f('0x40')]({},_0x322b46,_0x59a9af[_0x9d1f('0x43')]);var _0x1d0134={'where':_0x322b46['where']};return db[_0x9d1f('0x2e')][_0x9d1f('0x1f')](_0x1d0134)[_0x9d1f('0x27')](function(_0x11ac8f){_0x345b17['count']=_0x11ac8f;if(_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x44')]){_0x322b46[_0x9d1f('0x45')]=[{'all':!![]}];}return db[_0x9d1f('0x2e')][_0x9d1f('0x46')](_0x322b46);})[_0x9d1f('0x27')](function(_0x5a84f9){_0x345b17[_0x9d1f('0x47')]=_0x5a84f9;return _0x345b17;})[_0x9d1f('0x27')](respondWithFilteredResult(_0x3bb516,_0x322b46))['catch'](handleError(_0x3bb516,null));};exports[_0x9d1f('0x48')]=function(_0x19651d,_0x35df1d){var _0x4e03ac={'raw':![],'where':{'id':_0x19651d[_0x9d1f('0x49')]['id']}},_0x31834c={};_0x31834c['model']=_['keys'](db[_0x9d1f('0x2e')]['rawAttributes']);_0x31834c[_0x9d1f('0x33')]=_['keys'](_0x19651d[_0x9d1f('0x33')]);_0x31834c[_0x9d1f('0x34')]=_[_0x9d1f('0x35')](_0x31834c[_0x9d1f('0x31')],_0x31834c[_0x9d1f('0x33')]);_0x4e03ac[_0x9d1f('0x36')]=_[_0x9d1f('0x35')](_0x31834c[_0x9d1f('0x31')],qs[_0x9d1f('0x37')](_0x19651d[_0x9d1f('0x33')][_0x9d1f('0x37')]));_0x4e03ac[_0x9d1f('0x36')]=_0x4e03ac[_0x9d1f('0x36')][_0x9d1f('0x38')]?_0x4e03ac[_0x9d1f('0x36')]:_0x31834c[_0x9d1f('0x31')];if(_0x19651d['query'][_0x9d1f('0x44')]){_0x4e03ac[_0x9d1f('0x45')]=[{'all':!![]}];}_0x4e03ac=_[_0x9d1f('0x40')]({},_0x4e03ac,_0x19651d['options']);return db[_0x9d1f('0x2e')][_0x9d1f('0x4a')](_0x4e03ac)[_0x9d1f('0x27')](handleEntityNotFound(_0x35df1d,null))[_0x9d1f('0x27')](respondWithResult(_0x35df1d,null))['catch'](handleError(_0x35df1d,null));};exports[_0x9d1f('0x4b')]=function(_0x24ade0,_0x4d6518){return db['UserProfileSection']['create'](_0x24ade0[_0x9d1f('0x4c')],{})[_0x9d1f('0x27')](respondWithResult(_0x4d6518,0xc9))['catch'](handleError(_0x4d6518,null));};exports[_0x9d1f('0x26')]=function(_0x5b6493,_0x2dc003){if(_0x5b6493[_0x9d1f('0x4c')]['id']){delete _0x5b6493[_0x9d1f('0x4c')]['id'];}return db[_0x9d1f('0x2e')][_0x9d1f('0x4a')]({'where':{'id':_0x5b6493['params']['id']}})[_0x9d1f('0x27')](handleEntityNotFound(_0x2dc003,null))[_0x9d1f('0x27')](saveUpdates(_0x5b6493[_0x9d1f('0x4c')],null))[_0x9d1f('0x27')](respondWithResult(_0x2dc003,null))['catch'](handleError(_0x2dc003,null));};exports[_0x9d1f('0x28')]=function(_0x300c2a,_0x5ea2e9){return db[_0x9d1f('0x2e')][_0x9d1f('0x4a')]({'where':{'id':_0x300c2a['params']['id']}})[_0x9d1f('0x27')](handleEntityNotFound(_0x5ea2e9,null))[_0x9d1f('0x27')](removeEntity(_0x5ea2e9,null))['catch'](handleError(_0x5ea2e9,null));};exports[_0x9d1f('0x4d')]=function(_0xcbe675,_0x2f4524){return db[_0x9d1f('0x2e')][_0x9d1f('0x4d')]()[_0x9d1f('0x27')](respondWithResult(_0x2f4524,null))['catch'](handleError(_0x2f4524,null));};
\ No newline at end of file
+var _0xc30c=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','json','apply','update','then','error','stack','name','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','UserProfileSection','count','includeAll','include','rows','catch','length','merge','find','create','body','destroy','params','describe','eml-format'];(function(_0x2f5638,_0x3f4643){var _0x35507f=function(_0x5c232b){while(--_0x5c232b){_0x2f5638['push'](_0x2f5638['shift']());}};_0x35507f(++_0x3f4643);}(_0xc30c,0x1c1));var _0xcc30=function(_0x3dbccb,_0x126d36){_0x3dbccb=_0x3dbccb-0x0;var _0x3e90e7=_0xc30c[_0x3dbccb];return _0x3e90e7;};'use strict';var emlformat=require(_0xcc30('0x0'));var rimraf=require(_0xcc30('0x1'));var zipdir=require(_0xcc30('0x2'));var jsonpatch=require(_0xcc30('0x3'));var rp=require(_0xcc30('0x4'));var moment=require(_0xcc30('0x5'));var BPromise=require(_0xcc30('0x6'));var Mustache=require('mustache');var util=require(_0xcc30('0x7'));var path=require(_0xcc30('0x8'));var sox=require(_0xcc30('0x9'));var csv=require(_0xcc30('0xa'));var ejs=require(_0xcc30('0xb'));var fs=require('fs');var fs_extra=require(_0xcc30('0xc'));var _=require('lodash');var squel=require(_0xcc30('0xd'));var crypto=require(_0xcc30('0xe'));var jsforce=require(_0xcc30('0xf'));var deskjs=require(_0xcc30('0x10'));var toCsv=require(_0xcc30('0xa'));var querystring=require(_0xcc30('0x11'));var Papa=require(_0xcc30('0x12'));var Redis=require('ioredis');var authService=require(_0xcc30('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xcc30('0x14'));var hardwareService=require(_0xcc30('0x15'));var logger=require(_0xcc30('0x16'))(_0xcc30('0x17'));var utils=require(_0xcc30('0x18'));var config=require(_0xcc30('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xcc30('0x1a'))['db'];function respondWithStatusCode(_0x83cc76,_0x1eaac7){_0x1eaac7=_0x1eaac7||0xcc;return function(_0x5466f2){if(_0x5466f2){return _0x83cc76[_0xcc30('0x1b')](_0x1eaac7);}return _0x83cc76[_0xcc30('0x1c')](_0x1eaac7)[_0xcc30('0x1d')]();};}function respondWithResult(_0x196042,_0x599e6e){_0x599e6e=_0x599e6e||0xc8;return function(_0x1b3ec7){if(_0x1b3ec7){return _0x196042[_0xcc30('0x1c')](_0x599e6e)['json'](_0x1b3ec7);}};}function respondWithFilteredResult(_0x592270,_0x5753ca){return function(_0x18f547){if(_0x18f547){var _0x5d17cd=typeof _0x5753ca[_0xcc30('0x1e')]===_0xcc30('0x1f')&&typeof _0x5753ca[_0xcc30('0x20')]==='undefined';var _0x198baa=_0x18f547['count'];var _0x572a43=_0x5d17cd?0x0:_0x5753ca[_0xcc30('0x1e')];var _0x40255d=_0x5d17cd?_0x18f547['count']:_0x5753ca[_0xcc30('0x1e')]+_0x5753ca['limit'];var _0x271318;if(_0x40255d>=_0x198baa){_0x40255d=_0x198baa;_0x271318=0xc8;}else{_0x271318=0xce;}_0x592270[_0xcc30('0x1c')](_0x271318);return _0x592270[_0xcc30('0x21')](_0xcc30('0x22'),_0x572a43+'-'+_0x40255d+'/'+_0x198baa)[_0xcc30('0x23')](_0x18f547);}return null;};}function patchUpdates(_0x479609){return function(_0x4abbcf){try{jsonpatch[_0xcc30('0x24')](_0x4abbcf,_0x479609,!![]);}catch(_0x2ae98a){return BPromise['reject'](_0x2ae98a);}return _0x4abbcf['save']();};}function saveUpdates(_0x532d12,_0x3ee5d9){return function(_0x4de604){if(_0x4de604){return _0x4de604[_0xcc30('0x25')](_0x532d12)[_0xcc30('0x26')](function(_0x21d61a){return _0x21d61a;});}return null;};}function removeEntity(_0x40e03a,_0x463337){return function(_0x568daa){if(_0x568daa){return _0x568daa['destroy']()[_0xcc30('0x26')](function(){_0x40e03a[_0xcc30('0x1c')](0xcc)[_0xcc30('0x1d')]();});}};}function handleEntityNotFound(_0x80d877,_0x5b8ce3){return function(_0x227d4c){if(!_0x227d4c){_0x80d877[_0xcc30('0x1b')](0x194);}return _0x227d4c;};}function handleError(_0x539a16,_0x26a7d5){_0x26a7d5=_0x26a7d5||0x1f4;return function(_0x26d3f2){logger[_0xcc30('0x27')](_0x26d3f2[_0xcc30('0x28')]);if(_0x26d3f2['name']){delete _0x26d3f2[_0xcc30('0x29')];}_0x539a16[_0xcc30('0x1c')](_0x26a7d5)['send'](_0x26d3f2);};}exports['index']=function(_0x5eb06d,_0x4d407d){var _0x480cc9={},_0x223bc0={},_0x3c5372={'count':0x0,'rows':[]};var _0x349882=_['map'](db['UserProfileSection'][_0xcc30('0x2a')],function(_0x353802){return{'name':_0x353802[_0xcc30('0x2b')],'type':_0x353802['type'][_0xcc30('0x2c')]};});_0x223bc0[_0xcc30('0x2d')]=_[_0xcc30('0x2e')](_0x349882,_0xcc30('0x29'));_0x223bc0[_0xcc30('0x2f')]=_[_0xcc30('0x30')](_0x5eb06d['query']);_0x223bc0[_0xcc30('0x31')]=_[_0xcc30('0x32')](_0x223bc0[_0xcc30('0x2d')],_0x223bc0['query']);_0x480cc9[_0xcc30('0x33')]=_['intersection'](_0x223bc0['model'],qs[_0xcc30('0x34')](_0x5eb06d[_0xcc30('0x2f')][_0xcc30('0x34')]));_0x480cc9[_0xcc30('0x33')]=_0x480cc9[_0xcc30('0x33')]['length']?_0x480cc9[_0xcc30('0x33')]:_0x223bc0[_0xcc30('0x2d')];if(!_0x5eb06d['query'][_0xcc30('0x35')](_0xcc30('0x36'))){_0x480cc9['limit']=qs[_0xcc30('0x20')](_0x5eb06d[_0xcc30('0x2f')][_0xcc30('0x20')]);_0x480cc9[_0xcc30('0x1e')]=qs[_0xcc30('0x1e')](_0x5eb06d['query'][_0xcc30('0x1e')]);}_0x480cc9[_0xcc30('0x37')]=qs[_0xcc30('0x38')](_0x5eb06d[_0xcc30('0x2f')][_0xcc30('0x38')]);_0x480cc9[_0xcc30('0x39')]=qs['filters'](_[_0xcc30('0x3a')](_0x5eb06d[_0xcc30('0x2f')],_0x223bc0[_0xcc30('0x31')]),_0x349882);if(_0x5eb06d[_0xcc30('0x2f')][_0xcc30('0x3b')]){_0x480cc9[_0xcc30('0x39')]=_['merge'](_0x480cc9[_0xcc30('0x39')],{'$or':_[_0xcc30('0x2e')](_0x349882,function(_0x3a0b12){if(_0x3a0b12['type']!=='VIRTUAL'){var _0x1c784a={};_0x1c784a[_0x3a0b12[_0xcc30('0x29')]]={'$like':'%'+_0x5eb06d[_0xcc30('0x2f')][_0xcc30('0x3b')]+'%'};return _0x1c784a;}})});}_0x480cc9=_['merge']({},_0x480cc9,_0x5eb06d[_0xcc30('0x3c')]);var _0x2d1f52={'where':_0x480cc9[_0xcc30('0x39')]};return db[_0xcc30('0x3d')][_0xcc30('0x3e')](_0x2d1f52)[_0xcc30('0x26')](function(_0x302772){_0x3c5372[_0xcc30('0x3e')]=_0x302772;if(_0x5eb06d['query'][_0xcc30('0x3f')]){_0x480cc9[_0xcc30('0x40')]=[{'all':!![]}];}return db['UserProfileSection']['findAll'](_0x480cc9);})[_0xcc30('0x26')](function(_0x5416ae){_0x3c5372[_0xcc30('0x41')]=_0x5416ae;return _0x3c5372;})[_0xcc30('0x26')](respondWithFilteredResult(_0x4d407d,_0x480cc9))[_0xcc30('0x42')](handleError(_0x4d407d,null));};exports['show']=function(_0x8d3b25,_0x2f9e60){var _0x5c4e44={'raw':![],'where':{'id':_0x8d3b25['params']['id']}},_0x412d88={};_0x412d88[_0xcc30('0x2d')]=_[_0xcc30('0x30')](db[_0xcc30('0x3d')][_0xcc30('0x2a')]);_0x412d88[_0xcc30('0x2f')]=_[_0xcc30('0x30')](_0x8d3b25[_0xcc30('0x2f')]);_0x412d88[_0xcc30('0x31')]=_['intersection'](_0x412d88[_0xcc30('0x2d')],_0x412d88[_0xcc30('0x2f')]);_0x5c4e44[_0xcc30('0x33')]=_[_0xcc30('0x32')](_0x412d88[_0xcc30('0x2d')],qs[_0xcc30('0x34')](_0x8d3b25[_0xcc30('0x2f')][_0xcc30('0x34')]));_0x5c4e44[_0xcc30('0x33')]=_0x5c4e44['attributes'][_0xcc30('0x43')]?_0x5c4e44[_0xcc30('0x33')]:_0x412d88[_0xcc30('0x2d')];if(_0x8d3b25['query'][_0xcc30('0x3f')]){_0x5c4e44[_0xcc30('0x40')]=[{'all':!![]}];}_0x5c4e44=_[_0xcc30('0x44')]({},_0x5c4e44,_0x8d3b25[_0xcc30('0x3c')]);return db['UserProfileSection'][_0xcc30('0x45')](_0x5c4e44)[_0xcc30('0x26')](handleEntityNotFound(_0x2f9e60,null))['then'](respondWithResult(_0x2f9e60,null))[_0xcc30('0x42')](handleError(_0x2f9e60,null));};exports['create']=function(_0x478511,_0x4ab63e){return db[_0xcc30('0x3d')][_0xcc30('0x46')](_0x478511['body'],{})['then'](respondWithResult(_0x4ab63e,0xc9))[_0xcc30('0x42')](handleError(_0x4ab63e,null));};exports['update']=function(_0x460b15,_0x56f548){if(_0x460b15['body']['id']){delete _0x460b15['body']['id'];}return db['UserProfileSection'][_0xcc30('0x45')]({'where':{'id':_0x460b15['params']['id']}})[_0xcc30('0x26')](handleEntityNotFound(_0x56f548,null))[_0xcc30('0x26')](saveUpdates(_0x460b15[_0xcc30('0x47')],null))[_0xcc30('0x26')](respondWithResult(_0x56f548,null))['catch'](handleError(_0x56f548,null));};exports[_0xcc30('0x48')]=function(_0x172a04,_0x50644f){return db[_0xcc30('0x3d')][_0xcc30('0x45')]({'where':{'id':_0x172a04[_0xcc30('0x49')]['id']}})[_0xcc30('0x26')](handleEntityNotFound(_0x50644f,null))[_0xcc30('0x26')](removeEntity(_0x50644f,null))[_0xcc30('0x42')](handleError(_0x50644f,null));};exports[_0xcc30('0x4a')]=function(_0x178449,_0x47b687){return db[_0xcc30('0x3d')][_0xcc30('0x4a')]()[_0xcc30('0x26')](respondWithResult(_0x47b687,null))[_0xcc30('0x42')](handleError(_0x47b687,null));};
\ No newline at end of file
index be78a5d..c26a56e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc458=['define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./userProfileSection.attributes','exports'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xc458,0x1f3));var _0x8c45=function(_0x27d271,_0x364840){_0x27d271=_0x27d271-0x0;var _0x14d6e9=_0xc458[_0x27d271];return _0x14d6e9;};'use strict';var _=require(_0x8c45('0x0'));var util=require(_0x8c45('0x1'));var logger=require(_0x8c45('0x2'))(_0x8c45('0x3'));var moment=require(_0x8c45('0x4'));var BPromise=require(_0x8c45('0x5'));var rp=require(_0x8c45('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8c45('0x7'));var config=require(_0x8c45('0x8'));var attributes=require(_0x8c45('0x9'));module[_0x8c45('0xa')]=function(_0x1c509e,_0x55abab){return _0x1c509e[_0x8c45('0xb')](_0x8c45('0xc'),attributes,{'tableName':_0x8c45('0xd'),'paranoid':![],'indexes':[{'name':_0x8c45('0xe'),'fields':[_0x8c45('0xf'),_0x8c45('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe810=['../../config/environment','./userProfileSection.attributes','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','api','moment','bluebird','request-promise','rimraf'];(function(_0x560a57,_0x203da7){var _0x3028ba=function(_0x4bf4a8){while(--_0x4bf4a8){_0x560a57['push'](_0x560a57['shift']());}};_0x3028ba(++_0x203da7);}(_0xe810,0x104));var _0x0e81=function(_0x3a0539,_0x4637c6){_0x3a0539=_0x3a0539-0x0;var _0x439ab2=_0xe810[_0x3a0539];return _0x439ab2;};'use strict';var _=require(_0x0e81('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0e81('0x1'));var moment=require(_0x0e81('0x2'));var BPromise=require(_0x0e81('0x3'));var rp=require(_0x0e81('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0e81('0x5'));var config=require(_0x0e81('0x6'));var attributes=require(_0x0e81('0x7'));module['exports']=function(_0x327d6f,_0x1478dd){return _0x327d6f[_0x0e81('0x8')](_0x0e81('0x9'),attributes,{'tableName':_0x0e81('0xa'),'paranoid':![],'indexes':[{'name':_0x0e81('0xb'),'fields':[_0x0e81('0xc'),_0x0e81('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index de7a96d..6edccea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9956=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserProfileSection,\x20%s,\x20%s','result'];(function(_0x28bda5,_0x21e90b){var _0x305a7e=function(_0x11fbb6){while(--_0x11fbb6){_0x28bda5['push'](_0x28bda5['shift']());}};_0x305a7e(++_0x21e90b);}(_0x9956,0x1b1));var _0x6995=function(_0x4f7fd2,_0x19c13b){_0x4f7fd2=_0x4f7fd2-0x0;var _0x541c53=_0x9956[_0x4f7fd2];return _0x541c53;};'use strict';var _=require(_0x6995('0x0'));var util=require(_0x6995('0x1'));var moment=require('moment');var BPromise=require(_0x6995('0x2'));var rs=require(_0x6995('0x3'));var fs=require('fs');var Redis=require(_0x6995('0x4'));var db=require(_0x6995('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6995('0x6'))(_0x6995('0x7'));var config=require(_0x6995('0x8'));var jayson=require(_0x6995('0x9'));var client=jayson[_0x6995('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x487f1c,_0x147cd9,_0xfd3df1){return new BPromise(function(_0xe969cd,_0x349544){return client[_0x6995('0xb')](_0x487f1c,_0xfd3df1)[_0x6995('0xc')](function(_0x10c422){logger[_0x6995('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x147cd9,_0x6995('0xe'));logger[_0x6995('0xf')](_0x6995('0x10'),_0x147cd9,'request\x20sent',JSON[_0x6995('0x11')](_0x10c422));if(_0x10c422[_0x6995('0x12')]){if(_0x10c422['error'][_0x6995('0x13')]===0x1f4){logger[_0x6995('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x147cd9,_0x10c422[_0x6995('0x12')][_0x6995('0x14')]);return _0x349544(_0x10c422[_0x6995('0x12')][_0x6995('0x14')]);}logger[_0x6995('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x147cd9,_0x10c422[_0x6995('0x12')]['message']);return _0xe969cd(_0x10c422[_0x6995('0x12')][_0x6995('0x14')]);}else{logger['info'](_0x6995('0x15'),_0x147cd9,_0x6995('0xe'));_0xe969cd(_0x10c422[_0x6995('0x16')]['message']);}})[_0x6995('0x17')](function(_0x3397ee){logger[_0x6995('0x12')](_0x6995('0x15'),_0x147cd9,_0x3397ee);_0x349544(_0x3397ee);});});}
\ No newline at end of file
+var _0x1b74=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','lodash','util','moment'];(function(_0x37c006,_0x1f647a){var _0x3f306e=function(_0x48de6a){while(--_0x48de6a){_0x37c006['push'](_0x37c006['shift']());}};_0x3f306e(++_0x1f647a);}(_0x1b74,0xfa));var _0x41b7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1b74[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x41b7('0x0'));var util=require(_0x41b7('0x1'));var moment=require(_0x41b7('0x2'));var BPromise=require(_0x41b7('0x3'));var rs=require(_0x41b7('0x4'));var fs=require('fs');var Redis=require(_0x41b7('0x5'));var db=require(_0x41b7('0x6'))['db'];var utils=require(_0x41b7('0x7'));var logger=require('../../config/logger')(_0x41b7('0x8'));var config=require(_0x41b7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x41b7('0xa')][_0x41b7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x306df5,_0x2b8640,_0x39b99c){return new BPromise(function(_0x44ecbc,_0x2c4e6a){return client['request'](_0x306df5,_0x39b99c)[_0x41b7('0xc')](function(_0xe4149){logger[_0x41b7('0xd')](_0x41b7('0xe'),_0x2b8640,_0x41b7('0xf'));logger[_0x41b7('0x10')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x2b8640,_0x41b7('0xf'),JSON[_0x41b7('0x11')](_0xe4149));if(_0xe4149['error']){if(_0xe4149['error'][_0x41b7('0x12')]===0x1f4){logger[_0x41b7('0x13')](_0x41b7('0xe'),_0x2b8640,_0xe4149[_0x41b7('0x13')][_0x41b7('0x14')]);return _0x2c4e6a(_0xe4149[_0x41b7('0x13')][_0x41b7('0x14')]);}logger[_0x41b7('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x2b8640,_0xe4149[_0x41b7('0x13')]['message']);return _0x44ecbc(_0xe4149[_0x41b7('0x13')]['message']);}else{logger[_0x41b7('0xd')](_0x41b7('0xe'),_0x2b8640,_0x41b7('0xf'));_0x44ecbc(_0xe4149[_0x41b7('0x15')][_0x41b7('0x14')]);}})[_0x41b7('0x16')](function(_0x1da73b){logger[_0x41b7('0x13')](_0x41b7('0xe'),_0x2b8640,_0x1da73b);_0x2c4e6a(_0x1da73b);});});}
\ No newline at end of file
index 86f2225..d171864 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(_0x5e0823,_0x146024){var _0x592fbb=function(_0x5ec112){while(--_0x5ec112){_0x5e0823['push'](_0x5e0823['shift']());}};_0x592fbb(++_0x146024);}(_0x9c44,0x178));var _0x49c4=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x9c44[_0x1694f5];return _0x5b4321;};'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(_0x5c1587,_0x3d4bce){var _0x473f37=function(_0x235818){while(--_0x235818){_0x5c1587['push'](_0x5c1587['shift']());}};_0x473f37(++_0x3d4bce);}(_0xe706,0xa3));var _0x6e70=function(_0x57111f,_0x2a7bde){_0x57111f=_0x57111f-0x0;var _0xe10f6f=_0xe706[_0x57111f];return _0xe10f6f;};'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 417dacb..05033f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf811=['sequelize'];(function(_0xa27110,_0xc62924){var _0x440477=function(_0x1b8e33){while(--_0x1b8e33){_0xa27110['push'](_0xa27110['shift']());}};_0x440477(++_0xc62924);}(_0xf811,0x1bd));var _0x1f81=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xf811[_0x21549c];return _0x426cbd;};'use strict';var Sequelize=require(_0x1f81('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf109=['INTEGER','sequelize','exports'];(function(_0x1fb4ff,_0x172d25){var _0x3f2d20=function(_0x358d44){while(--_0x358d44){_0x1fb4ff['push'](_0x1fb4ff['shift']());}};_0x3f2d20(++_0x172d25);}(_0xf109,0x1de));var _0x9f10=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0xf109[_0x42bdad];return _0x122626;};'use strict';var Sequelize=require(_0x9f10('0x0'));module[_0x9f10('0x1')]={'penalty':{'type':Sequelize[_0x9f10('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 3a9f42d..2760b77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde46=['./userSmsQueue.attributes','exports','define','user_has_sms_queues','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment'];(function(_0x5e5417,_0x3a4d7f){var _0x1521dc=function(_0x3d2158){while(--_0x3d2158){_0x5e5417['push'](_0x5e5417['shift']());}};_0x1521dc(++_0x3a4d7f);}(_0xde46,0x14e));var _0x6de4=function(_0x43d123,_0x48cd06){_0x43d123=_0x43d123-0x0;var _0x511350=_0xde46[_0x43d123];return _0x511350;};'use strict';var _=require(_0x6de4('0x0'));var util=require(_0x6de4('0x1'));var logger=require(_0x6de4('0x2'))(_0x6de4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6de4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6de4('0x5'));var config=require(_0x6de4('0x6'));var attributes=require(_0x6de4('0x7'));module[_0x6de4('0x8')]=function(_0x525dcc,_0x47eb32){return _0x525dcc[_0x6de4('0x9')]('UserSmsQueue',attributes,{'tableName':_0x6de4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ace=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api'];(function(_0x5279cb,_0x1601be){var _0x55785a=function(_0x33fd36){while(--_0x33fd36){_0x5279cb['push'](_0x5279cb['shift']());}};_0x55785a(++_0x1601be);}(_0x8ace,0x1bc));var _0xe8ac=function(_0x575c75,_0x120aa9){_0x575c75=_0x575c75-0x0;var _0x436370=_0x8ace[_0x575c75];return _0x436370;};'use strict';var _=require(_0xe8ac('0x0'));var util=require(_0xe8ac('0x1'));var logger=require(_0xe8ac('0x2'))(_0xe8ac('0x3'));var moment=require(_0xe8ac('0x4'));var BPromise=require(_0xe8ac('0x5'));var rp=require(_0xe8ac('0x6'));var fs=require('fs');var path=require(_0xe8ac('0x7'));var rimraf=require(_0xe8ac('0x8'));var config=require(_0xe8ac('0x9'));var attributes=require(_0xe8ac('0xa'));module[_0xe8ac('0xb')]=function(_0x170e14,_0x2b48ec){return _0x170e14['define'](_0xe8ac('0xc'),attributes,{'tableName':_0xe8ac('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2046d7c..797ea4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x980e=['request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http'];(function(_0x5ed66c,_0x3ef02e){var _0x2871ab=function(_0x6e3fca){while(--_0x6e3fca){_0x5ed66c['push'](_0x5ed66c['shift']());}};_0x2871ab(++_0x3ef02e);}(_0x980e,0x175));var _0xe980=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x980e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe980('0x0'));var util=require('util');var moment=require(_0xe980('0x1'));var BPromise=require(_0xe980('0x2'));var rs=require(_0xe980('0x3'));var fs=require('fs');var Redis=require(_0xe980('0x4'));var db=require(_0xe980('0x5'))['db'];var utils=require(_0xe980('0x6'));var logger=require('../../config/logger')(_0xe980('0x7'));var config=require(_0xe980('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe980('0x9')][_0xe980('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe58413,_0x3c8451,_0xe94a26){return new BPromise(function(_0x50d911,_0x5bd6fc){return client[_0xe980('0xb')](_0xe58413,_0xe94a26)[_0xe980('0xc')](function(_0x3352c1){logger[_0xe980('0xd')](_0xe980('0xe'),_0x3c8451,_0xe980('0xf'));logger[_0xe980('0x10')](_0xe980('0x11'),_0x3c8451,_0xe980('0xf'),JSON[_0xe980('0x12')](_0x3352c1));if(_0x3352c1[_0xe980('0x13')]){if(_0x3352c1[_0xe980('0x13')][_0xe980('0x14')]===0x1f4){logger[_0xe980('0x13')](_0xe980('0xe'),_0x3c8451,_0x3352c1[_0xe980('0x13')]['message']);return _0x5bd6fc(_0x3352c1['error'][_0xe980('0x15')]);}logger['error'](_0xe980('0xe'),_0x3c8451,_0x3352c1[_0xe980('0x13')]['message']);return _0x50d911(_0x3352c1['error'][_0xe980('0x15')]);}else{logger['info'](_0xe980('0xe'),_0x3c8451,_0xe980('0xf'));_0x50d911(_0x3352c1[_0xe980('0x16')]['message']);}})[_0xe980('0x17')](function(_0x2de72e){logger['error'](_0xe980('0xe'),_0x3c8451,_0x2de72e);_0x5bd6fc(_0x2de72e);});});}
\ No newline at end of file
+var _0x1a87=['ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment'];(function(_0x26df67,_0x481b4a){var _0x331dee=function(_0x29d0c2){while(--_0x29d0c2){_0x26df67['push'](_0x26df67['shift']());}};_0x331dee(++_0x481b4a);}(_0x1a87,0xa6));var _0x71a8=function(_0x3d69f5,_0xb99af3){_0x3d69f5=_0x3d69f5-0x0;var _0xfc942a=_0x1a87[_0x3d69f5];return _0xfc942a;};'use strict';var _=require(_0x71a8('0x0'));var util=require('util');var moment=require(_0x71a8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x71a8('0x2'));var db=require(_0x71a8('0x3'))['db'];var utils=require(_0x71a8('0x4'));var logger=require(_0x71a8('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x71a8('0x6'));var client=jayson[_0x71a8('0x7')][_0x71a8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4d7ba0,_0x790787,_0x399625){return new BPromise(function(_0x43df6f,_0x7478c0){return client[_0x71a8('0x9')](_0x4d7ba0,_0x399625)[_0x71a8('0xa')](function(_0xd929a7){logger[_0x71a8('0xb')](_0x71a8('0xc'),_0x790787,_0x71a8('0xd'));logger[_0x71a8('0xe')](_0x71a8('0xf'),_0x790787,'request\x20sent',JSON[_0x71a8('0x10')](_0xd929a7));if(_0xd929a7[_0x71a8('0x11')]){if(_0xd929a7[_0x71a8('0x11')]['code']===0x1f4){logger[_0x71a8('0x11')](_0x71a8('0xc'),_0x790787,_0xd929a7[_0x71a8('0x11')]['message']);return _0x7478c0(_0xd929a7[_0x71a8('0x11')][_0x71a8('0x12')]);}logger[_0x71a8('0x11')](_0x71a8('0xc'),_0x790787,_0xd929a7['error'][_0x71a8('0x12')]);return _0x43df6f(_0xd929a7[_0x71a8('0x11')][_0x71a8('0x12')]);}else{logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x790787,_0x71a8('0xd'));_0x43df6f(_0xd929a7[_0x71a8('0x13')][_0x71a8('0x12')]);}})[_0x71a8('0x14')](function(_0x448585){logger[_0x71a8('0x11')](_0x71a8('0xc'),_0x790787,_0x448585);_0x7478c0(_0x448585);});});}
\ No newline at end of file
index df2d8e3..04ea602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc779=['exports','INTEGER'];(function(_0x3a9815,_0x47eb16){var _0x188653=function(_0x203e84){while(--_0x203e84){_0x3a9815['push'](_0x3a9815['shift']());}};_0x188653(++_0x47eb16);}(_0xc779,0x8e));var _0x9c77=function(_0x52f27b,_0x3e4aa6){_0x52f27b=_0x52f27b-0x0;var _0xde855c=_0xc779[_0x52f27b];return _0xde855c;};'use strict';var Sequelize=require('sequelize');module[_0x9c77('0x0')]={'UserId':{'type':Sequelize[_0x9c77('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x9c77('0x1')]}};
\ No newline at end of file
+var _0x6347=['INTEGER','exports'];(function(_0x3fb8c7,_0x4bf727){var _0x3e3559=function(_0x20aba1){while(--_0x20aba1){_0x3fb8c7['push'](_0x3fb8c7['shift']());}};_0x3e3559(++_0x4bf727);}(_0x6347,0x151));var _0x7634=function(_0x243f5b,_0x4bb734){_0x243f5b=_0x243f5b-0x0;var _0x6ca0eb=_0x6347[_0x243f5b];return _0x6ca0eb;};'use strict';var Sequelize=require('sequelize');module[_0x7634('0x0')]={'UserId':{'type':Sequelize[_0x7634('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x7634('0x1')]}};
\ No newline at end of file
index 74ec11b..5cb31f4 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(_0x1b0f29,_0x487fd1){var _0x21de22=function(_0x14ce52){while(--_0x14ce52){_0x1b0f29['push'](_0x1b0f29['shift']());}};_0x21de22(++_0x487fd1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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(_0xf6ab47,_0x2f4cbf){var _0xc8c9ec=function(_0x295598){while(--_0x295598){_0xf6ab47['push'](_0xf6ab47['shift']());}};_0xc8c9ec(++_0x2f4cbf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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 aa07e8e..8063790 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(_0x4feaf9,_0x11d59f){var _0x15a078=function(_0x223d9f){while(--_0x223d9f){_0x4feaf9['push'](_0x4feaf9['shift']());}};_0x15a078(++_0x11d59f);}(_0xe706,0xa3));var _0x6e70=function(_0x1ff275,_0x12b011){_0x1ff275=_0x1ff275-0x0;var _0x156912=_0xe706[_0x1ff275];return _0x156912;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5f23f2,_0x476d21){var _0x4332d3=function(_0x58f341){while(--_0x58f341){_0x5f23f2['push'](_0x5f23f2['shift']());}};_0x4332d3(++_0x476d21);}(_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 b59eca1..a223274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf0f=['INTEGER','exports'];(function(_0x2329ff,_0x1bd48b){var _0x497656=function(_0x467541){while(--_0x467541){_0x2329ff['push'](_0x2329ff['shift']());}};_0x497656(++_0x1bd48b);}(_0xdf0f,0x1e9));var _0xfdf0=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xdf0f[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require('sequelize');module[_0xfdf0('0x0')]={'penalty':{'type':Sequelize[_0xfdf0('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfdd8=['sequelize'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xfdd8,0x169));var _0x8fdd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfdd8[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8fdd('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 25b5dbb..cb260ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdce2=['lodash','api','moment','path','rimraf','../../config/environment','exports','define','UserVoiceQueue'];(function(_0x1e4369,_0x526215){var _0x2d7b80=function(_0x3c550f){while(--_0x3c550f){_0x1e4369['push'](_0x1e4369['shift']());}};_0x2d7b80(++_0x526215);}(_0xdce2,0x6c));var _0x2dce=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xdce2[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0x2dce('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2dce('0x1'));var moment=require(_0x2dce('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2dce('0x3'));var rimraf=require(_0x2dce('0x4'));var config=require(_0x2dce('0x5'));var attributes=require('./userVoiceQueue.attributes');module[_0x2dce('0x6')]=function(_0x4e6151,_0x6e285c){return _0x4e6151[_0x2dce('0x7')](_0x2dce('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x08c7=['exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','api','bluebird','request-promise','path','../../config/environment','./userVoiceQueue.attributes'];(function(_0x3a9707,_0x3d19c8){var _0x2fb6aa=function(_0x51947b){while(--_0x51947b){_0x3a9707['push'](_0x3a9707['shift']());}};_0x2fb6aa(++_0x3d19c8);}(_0x08c7,0x1e4));var _0x708c=function(_0x1ca218,_0x5d41e0){_0x1ca218=_0x1ca218-0x0;var _0x6015e=_0x08c7[_0x1ca218];return _0x6015e;};'use strict';var _=require(_0x708c('0x0'));var util=require(_0x708c('0x1'));var logger=require('../../config/logger')(_0x708c('0x2'));var moment=require('moment');var BPromise=require(_0x708c('0x3'));var rp=require(_0x708c('0x4'));var fs=require('fs');var path=require(_0x708c('0x5'));var rimraf=require('rimraf');var config=require(_0x708c('0x6'));var attributes=require(_0x708c('0x7'));module[_0x708c('0x8')]=function(_0x5415c0,_0x4902ec){return _0x5415c0[_0x708c('0x9')](_0x708c('0xa'),attributes,{'tableName':_0x708c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b9c8e0..ea09710 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2d5=['request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x219a70,_0x232d83){var _0x1e01ab=function(_0x4c8e0f){while(--_0x4c8e0f){_0x219a70['push'](_0x219a70['shift']());}};_0x1e01ab(++_0x232d83);}(_0xc2d5,0xa4));var _0x5c2d=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xc2d5[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0x5c2d('0x0'));var util=require('util');var moment=require(_0x5c2d('0x1'));var BPromise=require(_0x5c2d('0x2'));var rs=require(_0x5c2d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5c2d('0x4'))['db'];var utils=require(_0x5c2d('0x5'));var logger=require(_0x5c2d('0x6'))(_0x5c2d('0x7'));var config=require(_0x5c2d('0x8'));var jayson=require(_0x5c2d('0x9'));var client=jayson[_0x5c2d('0xa')][_0x5c2d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x454e64,_0xd13093,_0x3cecb6){return new BPromise(function(_0x1d54eb,_0x927353){return client[_0x5c2d('0xc')](_0x454e64,_0x3cecb6)['then'](function(_0x2b8b8f){logger[_0x5c2d('0xd')](_0x5c2d('0xe'),_0xd13093,_0x5c2d('0xf'));logger['debug'](_0x5c2d('0x10'),_0xd13093,_0x5c2d('0xf'),JSON[_0x5c2d('0x11')](_0x2b8b8f));if(_0x2b8b8f[_0x5c2d('0x12')]){if(_0x2b8b8f[_0x5c2d('0x12')]['code']===0x1f4){logger['error'](_0x5c2d('0xe'),_0xd13093,_0x2b8b8f[_0x5c2d('0x12')]['message']);return _0x927353(_0x2b8b8f[_0x5c2d('0x12')][_0x5c2d('0x13')]);}logger[_0x5c2d('0x12')]('UserVoiceQueue,\x20%s,\x20%s',_0xd13093,_0x2b8b8f['error'][_0x5c2d('0x13')]);return _0x1d54eb(_0x2b8b8f[_0x5c2d('0x12')][_0x5c2d('0x13')]);}else{logger[_0x5c2d('0xd')](_0x5c2d('0xe'),_0xd13093,_0x5c2d('0xf'));_0x1d54eb(_0x2b8b8f[_0x5c2d('0x14')][_0x5c2d('0x13')]);}})[_0x5c2d('0x15')](function(_0x1334a4){logger[_0x5c2d('0x12')](_0x5c2d('0xe'),_0xd13093,_0x1334a4);_0x927353(_0x1334a4);});});}
\ No newline at end of file
+var _0x1cc5=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error','UserVoiceQueue,\x20%s,\x20%s','message','result','catch'];(function(_0x4d3e97,_0x749913){var _0x3147d7=function(_0x250599){while(--_0x250599){_0x4d3e97['push'](_0x4d3e97['shift']());}};_0x3147d7(++_0x749913);}(_0x1cc5,0x85));var _0x51cc=function(_0x414b44,_0x3b95a0){_0x414b44=_0x414b44-0x0;var _0x32fa6b=_0x1cc5[_0x414b44];return _0x32fa6b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51cc('0x0'));var BPromise=require(_0x51cc('0x1'));var rs=require(_0x51cc('0x2'));var fs=require('fs');var Redis=require(_0x51cc('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x51cc('0x4'))(_0x51cc('0x5'));var config=require(_0x51cc('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x51cc('0x7')][_0x51cc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39638a,_0x283948,_0x55f92f){return new BPromise(function(_0x3ae61b,_0x596408){return client[_0x51cc('0x9')](_0x39638a,_0x55f92f)['then'](function(_0x5f0c26){logger[_0x51cc('0xa')]('UserVoiceQueue,\x20%s,\x20%s',_0x283948,_0x51cc('0xb'));logger[_0x51cc('0xc')](_0x51cc('0xd'),_0x283948,'request\x20sent',JSON['stringify'](_0x5f0c26));if(_0x5f0c26[_0x51cc('0xe')]){if(_0x5f0c26['error']['code']===0x1f4){logger[_0x51cc('0xe')](_0x51cc('0xf'),_0x283948,_0x5f0c26[_0x51cc('0xe')][_0x51cc('0x10')]);return _0x596408(_0x5f0c26['error'][_0x51cc('0x10')]);}logger['error'](_0x51cc('0xf'),_0x283948,_0x5f0c26['error'][_0x51cc('0x10')]);return _0x3ae61b(_0x5f0c26[_0x51cc('0xe')][_0x51cc('0x10')]);}else{logger[_0x51cc('0xa')](_0x51cc('0xf'),_0x283948,_0x51cc('0xb'));_0x3ae61b(_0x5f0c26[_0x51cc('0x11')][_0x51cc('0x10')]);}})[_0x51cc('0x12')](function(_0x4f1f17){logger[_0x51cc('0xe')](_0x51cc('0xf'),_0x283948,_0x4f1f17);_0x596408(_0x4f1f17);});});}
\ No newline at end of file
index 741ce30..645761d 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(_0x189449,_0x3e3282){var _0x1fa8e5=function(_0x381a73){while(--_0x381a73){_0x189449['push'](_0x189449['shift']());}};_0x1fa8e5(++_0x3e3282);}(_0xe706,0xa3));var _0x6e70=function(_0x4b55cb,_0x49791b){_0x4b55cb=_0x4b55cb-0x0;var _0x2631df=_0xe706[_0x4b55cb];return _0x2631df;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x1fc760,_0xa2d2d0){var _0x584022=function(_0x3d1a5e){while(--_0x3d1a5e){_0x1fc760['push'](_0x1fc760['shift']());}};_0x584022(++_0xa2d2d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 3eacb2b..1c271bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4202=['queue_interface','STRING','sequelize','exports','Required\x20by\x20Asterisk','INTEGER'];(function(_0x5a7dd3,_0x26b7cf){var _0x2f4d07=function(_0x280510){while(--_0x280510){_0x5a7dd3['push'](_0x5a7dd3['shift']());}};_0x2f4d07(++_0x26b7cf);}(_0x4202,0x8c));var _0x2420=function(_0x44ea1b,_0x36bbd3){_0x44ea1b=_0x44ea1b-0x0;var _0x239690=_0x4202[_0x44ea1b];return _0x239690;};'use strict';var Sequelize=require(_0x2420('0x0'));module[_0x2420('0x1')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x2420('0x2')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0x2420('0x2')},'UserId':{'type':Sequelize[_0x2420('0x3')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x2420('0x4'),'comment':_0x2420('0x2')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x2420('0x5')],'allowNull':![],'unique':_0x2420('0x4'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x2420('0x3')](0xb),'defaultValue':0x0,'comment':_0x2420('0x2')},'paused':{'type':Sequelize[_0x2420('0x3')](0xb),'defaultValue':0x0,'comment':_0x2420('0x2')}};
\ No newline at end of file
+var _0xf784=['queue_interface','sequelize','INTEGER','Required\x20by\x20Asterisk','STRING'];(function(_0x5abdfc,_0x385c27){var _0x124657=function(_0x667dde){while(--_0x667dde){_0x5abdfc['push'](_0x5abdfc['shift']());}};_0x124657(++_0x385c27);}(_0xf784,0x1b9));var _0x4f78=function(_0x141699,_0x3cf999){_0x141699=_0x141699-0x0;var _0x478205=_0xf784[_0x141699];return _0x478205;};'use strict';var Sequelize=require(_0x4f78('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x4f78('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x4f78('0x2')},'membername':{'type':Sequelize[_0x4f78('0x3')],'allowNull':![],'comment':_0x4f78('0x2')},'UserId':{'type':Sequelize[_0x4f78('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x4f78('0x3')],'allowNull':![],'unique':_0x4f78('0x4'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0x4f78('0x1')],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4f78('0x4'),'comment':_0x4f78('0x2')},'penalty':{'type':Sequelize[_0x4f78('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x4f78('0x1')](0xb),'defaultValue':0x0,'comment':_0x4f78('0x2')}};
\ No newline at end of file
index cfbbbc3..4331427 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0069=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove'];(function(_0x1fd8b3,_0x3bd29a){var _0x1f461f=function(_0x171f72){while(--_0x171f72){_0x1fd8b3['push'](_0x1fd8b3['shift']());}};_0x1f461f(++_0x3bd29a);}(_0x0069,0x17a));var _0x9006=function(_0x2868ec,_0x3aef29){_0x2868ec=_0x2868ec-0x0;var _0x2ad998=_0x0069[_0x2868ec];return _0x2ad998;};'use strict';var EventEmitter=require(_0x9006('0x0'));var UserVoiceQueueRt=require(_0x9006('0x1'))['db'][_0x9006('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x9006('0x3')](0x0);var events={'afterCreate':_0x9006('0x4'),'afterUpdate':_0x9006('0x5'),'afterDestroy':_0x9006('0x6')};function emitEvent(_0x506c63){return function(_0x51b42f,_0x4bcf2b,_0x4246ad){UserVoiceQueueRtEvents[_0x9006('0x7')](_0x506c63+':'+_0x51b42f['id'],_0x51b42f);UserVoiceQueueRtEvents[_0x9006('0x7')](_0x506c63,_0x51b42f);_0x4246ad(null);};}for(var e in events){if(events[_0x9006('0x8')](e)){var event=events[e];UserVoiceQueueRt[_0x9006('0x9')](e,emitEvent(event));}}module[_0x9006('0xa')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xd3cb=['../../mysqldb','UserVoiceQueueRt','save','emit','hasOwnProperty','exports','events'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xd3cb,0x1a3));var _0xbd3c=function(_0x5e0e3e,_0x124cab){_0x5e0e3e=_0x5e0e3e-0x0;var _0x15c697=_0xd3cb[_0x5e0e3e];return _0x15c697;};'use strict';var EventEmitter=require(_0xbd3c('0x0'));var UserVoiceQueueRt=require(_0xbd3c('0x1'))['db'][_0xbd3c('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbd3c('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xf1cdb9){return function(_0x5c2401,_0x34d3d5,_0x1334b7){UserVoiceQueueRtEvents[_0xbd3c('0x4')](_0xf1cdb9+':'+_0x5c2401['id'],_0x5c2401);UserVoiceQueueRtEvents[_0xbd3c('0x4')](_0xf1cdb9,_0x5c2401);_0x1334b7(null);};}for(var e in events){if(events[_0xbd3c('0x5')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xbd3c('0x6')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 0647ab2..7823459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b5=['./userVoiceQueueRt.attributes','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x3e5566,_0x403e50){var _0x381923=function(_0x5914bd){while(--_0x5914bd){_0x3e5566['push'](_0x3e5566['shift']());}};_0x381923(++_0x403e50);}(_0x88b5,0x183));var _0x588b=function(_0x41bec4,_0x256bba){_0x41bec4=_0x41bec4-0x0;var _0x37b75c=_0x88b5[_0x41bec4];return _0x37b75c;};'use strict';var _=require(_0x588b('0x0'));var util=require(_0x588b('0x1'));var logger=require(_0x588b('0x2'))(_0x588b('0x3'));var moment=require(_0x588b('0x4'));var BPromise=require(_0x588b('0x5'));var rp=require(_0x588b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x588b('0x7'));var config=require(_0x588b('0x8'));var attributes=require(_0x588b('0x9'));module['exports']=function(_0x5272de,_0x5b9299){return _0x5272de['define'](_0x588b('0xa'),attributes,{'tableName':_0x588b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xab1a=['define','UserVoiceQueueRt','user_has_voice_queues_rt','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports'];(function(_0x31038b,_0x3ac1c9){var _0x1c9d3c=function(_0xe00e97){while(--_0xe00e97){_0x31038b['push'](_0x31038b['shift']());}};_0x1c9d3c(++_0x3ac1c9);}(_0xab1a,0x121));var _0xaab1=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0xab1a[_0x3cc9d9];return _0x1a425d;};'use strict';var _=require('lodash');var util=require(_0xaab1('0x0'));var logger=require(_0xaab1('0x1'))(_0xaab1('0x2'));var moment=require(_0xaab1('0x3'));var BPromise=require('bluebird');var rp=require(_0xaab1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaab1('0x5'));var config=require(_0xaab1('0x6'));var attributes=require('./userVoiceQueueRt.attributes');module[_0xaab1('0x7')]=function(_0xcf6e75,_0x8cae94){return _0xcf6e75[_0xaab1('0x8')](_0xaab1('0x9'),attributes,{'tableName':_0xaab1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2adbf10..0055c70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8198=['request\x20sent','debug','stringify','error','code','message','catch','UserVoiceQueueRt','findAll','options','raw','where','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','GetVoiceQueueRtPauses','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./userVoiceQueueRt.socket','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s'];(function(_0x3dee9e,_0x4857b8){var _0x439481=function(_0x3a60e7){while(--_0x3a60e7){_0x3dee9e['push'](_0x3dee9e['shift']());}};_0x439481(++_0x4857b8);}(_0x8198,0x118));var _0x8819=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x8198[_0x2bf141];return _0x48277b;};'use strict';var _=require('lodash');var util=require(_0x8819('0x0'));var moment=require('moment');var BPromise=require(_0x8819('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8819('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8819('0x3'));var logger=require(_0x8819('0x4'))(_0x8819('0x5'));var config=require(_0x8819('0x6'));var jayson=require(_0x8819('0x7'));var client=jayson[_0x8819('0x8')][_0x8819('0x9')]({'port':0x232a});config['redis']=_[_0x8819('0xa')](config[_0x8819('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8819('0xb')]));require(_0x8819('0xc'))['register'](socket);function respondWithRpcPromise(_0x220f6e,_0x16df74,_0x413d19){return new BPromise(function(_0x49d422,_0x508bbf){return client[_0x8819('0xd')](_0x220f6e,_0x413d19)[_0x8819('0xe')](function(_0x37e837){logger[_0x8819('0xf')](_0x8819('0x10'),_0x16df74,_0x8819('0x11'));logger[_0x8819('0x12')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x16df74,'request\x20sent',JSON[_0x8819('0x13')](_0x37e837));if(_0x37e837[_0x8819('0x14')]){if(_0x37e837[_0x8819('0x14')][_0x8819('0x15')]===0x1f4){logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x16df74,_0x37e837['error']['message']);return _0x508bbf(_0x37e837[_0x8819('0x14')][_0x8819('0x16')]);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x16df74,_0x37e837[_0x8819('0x14')][_0x8819('0x16')]);return _0x49d422(_0x37e837[_0x8819('0x14')]['message']);}else{logger[_0x8819('0xf')](_0x8819('0x10'),_0x16df74,'request\x20sent');_0x49d422(_0x37e837['result'][_0x8819('0x16')]);}})[_0x8819('0x17')](function(_0xae1afa){logger[_0x8819('0x14')](_0x8819('0x10'),_0x16df74,_0xae1afa);_0x508bbf(_0xae1afa);});});}exports['GetVoiceQueueRtPauses']=function(_0x46b6a7){var _0x2c9b3e=this;return new Promise(function(_0xc0e07e,_0xdbacb6){return db[_0x8819('0x18')][_0x8819('0x19')]({'raw':_0x46b6a7[_0x8819('0x1a')]?_0x46b6a7[_0x8819('0x1a')][_0x8819('0x1b')]===undefined?!![]:![]:!![],'where':_0x46b6a7['options']?_0x46b6a7[_0x8819('0x1a')][_0x8819('0x1c')]||null:null,'attributes':[[db['sequelize']['fn'](_0x8819('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0x8819('0x1e')](_0x8819('0x1f')))),'outboundQueuePauses']]})[_0x8819('0xe')](function(_0x108169){logger[_0x8819('0xf')](_0x8819('0x20'),_0x46b6a7);logger[_0x8819('0x12')](_0x8819('0x20'),_0x46b6a7,JSON[_0x8819('0x13')](_0x108169));_0xc0e07e(_0x108169);})[_0x8819('0x17')](function(_0x13f556){logger[_0x8819('0x14')](_0x8819('0x20'),_0x13f556['message'],_0x46b6a7);_0xdbacb6(_0x2c9b3e[_0x8819('0x14')](0x1f4,_0x13f556[_0x8819('0x16')]));});});};
\ No newline at end of file
+var _0x965a=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','moment','bluebird','randomstring'];(function(_0x19ce60,_0x1b9af7){var _0x36fc7b=function(_0x3e34f5){while(--_0x3e34f5){_0x19ce60['push'](_0x19ce60['shift']());}};_0x36fc7b(++_0x1b9af7);}(_0x965a,0x1a9));var _0xa965=function(_0x44de29,_0x50d793){_0x44de29=_0x44de29-0x0;var _0x9393f6=_0x965a[_0x44de29];return _0x9393f6;};'use strict';var _=require(_0xa965('0x0'));var util=require('util');var moment=require(_0xa965('0x1'));var BPromise=require(_0xa965('0x2'));var rs=require(_0xa965('0x3'));var fs=require('fs');var Redis=require(_0xa965('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa965('0x5'));var logger=require(_0xa965('0x6'))(_0xa965('0x7'));var config=require(_0xa965('0x8'));var jayson=require(_0xa965('0x9'));var client=jayson[_0xa965('0xa')]['http']({'port':0x232a});config[_0xa965('0xb')]=_[_0xa965('0xc')](config[_0xa965('0xb')],{'host':_0xa965('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa965('0xb')]));require(_0xa965('0xe'))[_0xa965('0xf')](socket);function respondWithRpcPromise(_0x4ff322,_0xee3f50,_0x2f520a){return new BPromise(function(_0x1b57ea,_0x508039){return client[_0xa965('0x10')](_0x4ff322,_0x2f520a)[_0xa965('0x11')](function(_0x19dd5c){logger[_0xa965('0x12')](_0xa965('0x13'),_0xee3f50,_0xa965('0x14'));logger[_0xa965('0x15')](_0xa965('0x16'),_0xee3f50,_0xa965('0x14'),JSON['stringify'](_0x19dd5c));if(_0x19dd5c[_0xa965('0x17')]){if(_0x19dd5c[_0xa965('0x17')][_0xa965('0x18')]===0x1f4){logger['error'](_0xa965('0x13'),_0xee3f50,_0x19dd5c[_0xa965('0x17')]['message']);return _0x508039(_0x19dd5c[_0xa965('0x17')][_0xa965('0x19')]);}logger[_0xa965('0x17')](_0xa965('0x13'),_0xee3f50,_0x19dd5c[_0xa965('0x17')][_0xa965('0x19')]);return _0x1b57ea(_0x19dd5c[_0xa965('0x17')]['message']);}else{logger[_0xa965('0x12')](_0xa965('0x13'),_0xee3f50,_0xa965('0x14'));_0x1b57ea(_0x19dd5c[_0xa965('0x1a')][_0xa965('0x19')]);}})[_0xa965('0x1b')](function(_0x4ba918){logger[_0xa965('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0xee3f50,_0x4ba918);_0x508039(_0x4ba918);});});}exports[_0xa965('0x1c')]=function(_0x26f118){var _0x269730=this;return new Promise(function(_0x10127a,_0x287ad4){return db[_0xa965('0x1d')][_0xa965('0x1e')]({'raw':_0x26f118[_0xa965('0x1f')]?_0x26f118[_0xa965('0x1f')][_0xa965('0x20')]===undefined?!![]:![]:!![],'where':_0x26f118[_0xa965('0x1f')]?_0x26f118['options'][_0xa965('0x21')]||null:null,'attributes':[[db[_0xa965('0x22')]['fn'](_0xa965('0x23'),db['sequelize']['fn']('IF',db[_0xa965('0x22')][_0xa965('0x24')](_0xa965('0x25')))),_0xa965('0x26')]]})[_0xa965('0x11')](function(_0x4b6a1b){logger[_0xa965('0x12')]('GetVoiceQueueRtPauses',_0x26f118);logger[_0xa965('0x15')]('GetVoiceQueueRtPauses',_0x26f118,JSON['stringify'](_0x4b6a1b));_0x10127a(_0x4b6a1b);})[_0xa965('0x1b')](function(_0x12c2c2){logger[_0xa965('0x17')](_0xa965('0x1c'),_0x12c2c2[_0xa965('0x19')],_0x26f118);_0x287ad4(_0x269730[_0xa965('0x17')](0x1f4,_0x12c2c2[_0xa965('0x19')]));});});};
\ No newline at end of file
index e97623c..68c656d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['removeListener','register','length','save','remove'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xda19,0xd5));var _0x9da1=function(_0x2d59a5,_0x5603f1){_0x2d59a5=_0x2d59a5-0x0;var _0x4bc96f=_0xda19[_0x2d59a5];return _0x4bc96f;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x9da1('0x0'),_0x9da1('0x1'),'update'];function createListener(_0x175479,_0x503770){return function(_0x435076){_0x503770['emit'](_0x175479,_0x435076);};}function removeListener(_0x2a77c7,_0xef6f5a){return function(){UserVoiceQueueRtEvents[_0x9da1('0x2')](_0x2a77c7,_0xef6f5a);};}exports[_0x9da1('0x3')]=function(_0x156faf){for(var _0x2dcbc6=0x0,_0x23e4f7=events[_0x9da1('0x4')];_0x2dcbc6<_0x23e4f7;_0x2dcbc6++){var _0x1c24e6=events[_0x2dcbc6];var _0x5e2d18=createListener('userVoiceQueueRt:'+_0x1c24e6,_0x156faf);UserVoiceQueueRtEvents['on'](_0x1c24e6,_0x5e2d18);}};
\ No newline at end of file
+var _0x1488=['./userVoiceQueueRt.events','remove','update','emit','removeListener','register','length','userVoiceQueueRt:'];(function(_0x5d27d5,_0x2d6c07){var _0x19ad0e=function(_0x193175){while(--_0x193175){_0x5d27d5['push'](_0x5d27d5['shift']());}};_0x19ad0e(++_0x2d6c07);}(_0x1488,0x88));var _0x8148=function(_0x46a3ff,_0x470b9a){_0x46a3ff=_0x46a3ff-0x0;var _0x404bc2=_0x1488[_0x46a3ff];return _0x404bc2;};'use strict';var UserVoiceQueueRtEvents=require(_0x8148('0x0'));var events=['save',_0x8148('0x1'),_0x8148('0x2')];function createListener(_0x22606a,_0x5cc7ef){return function(_0x508e80){_0x5cc7ef[_0x8148('0x3')](_0x22606a,_0x508e80);};}function removeListener(_0x5b1a48,_0x32d78){return function(){UserVoiceQueueRtEvents[_0x8148('0x4')](_0x5b1a48,_0x32d78);};}exports[_0x8148('0x5')]=function(_0x153009){for(var _0x173d87=0x0,_0x2ac35d=events[_0x8148('0x6')];_0x173d87<_0x2ac35d;_0x173d87++){var _0x1254e9=events[_0x173d87];var _0x4fb6b4=createListener(_0x8148('0x7')+_0x1254e9,_0x153009);UserVoiceQueueRtEvents['on'](_0x1254e9,_0x4fb6b4);}};
\ No newline at end of file
index 03b142f..1ece9c5 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(_0x117afe,_0xc7fa7){var _0x1743d7=function(_0x46176c){while(--_0x46176c){_0x117afe['push'](_0x117afe['shift']());}};_0x1743d7(++_0xc7fa7);}(_0xedd9,0xfc));var _0x9edd=function(_0x13ff0c,_0x2e0181){_0x13ff0c=_0x13ff0c-0x0;var _0x2c005d=_0xedd9[_0x13ff0c];return _0x2c005d;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x541cd2,_0x11ff2b){var _0x2756fe=function(_0x2b521e){while(--_0x2b521e){_0x541cd2['push'](_0x541cd2['shift']());}};_0x2756fe(++_0x11ff2b);}(_0x70e0,0x17b));var _0x070e=function(_0x446a30,_0x417153){_0x446a30=_0x446a30-0x0;var _0x3470ab=_0x70e0[_0x446a30];return _0x3470ab;};'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 f0ae896..e93bfc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5fb=['sequelize','exports','INTEGER'];(function(_0x50ae92,_0x37aca9){var _0x4ed238=function(_0x11a387){while(--_0x11a387){_0x50ae92['push'](_0x50ae92['shift']());}};_0x4ed238(++_0x37aca9);}(_0xc5fb,0xa8));var _0xbc5f=function(_0x5cb6f3,_0x4085bc){_0x5cb6f3=_0x5cb6f3-0x0;var _0x225ffe=_0xc5fb[_0x5cb6f3];return _0x225ffe;};'use strict';var Sequelize=require(_0xbc5f('0x0'));module[_0xbc5f('0x1')]={'penalty':{'type':Sequelize[_0xbc5f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6138=['exports','INTEGER'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x6138,0xbe));var _0x8613=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x6138[_0x4243a3];return _0x1b2a33;};'use strict';var Sequelize=require('sequelize');module[_0x8613('0x0')]={'penalty':{'type':Sequelize[_0x8613('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index b3fa4b7..7faea4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10e7=['util','../../config/logger','bluebird','request-promise','path','rimraf','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash'];(function(_0x3b7b8a,_0x52c3b0){var _0x441206=function(_0x5d34d3){while(--_0x5d34d3){_0x3b7b8a['push'](_0x3b7b8a['shift']());}};_0x441206(++_0x52c3b0);}(_0x10e7,0x180));var _0x710e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x10e7[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x710e('0x0'));var util=require(_0x710e('0x1'));var logger=require(_0x710e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x710e('0x3'));var rp=require(_0x710e('0x4'));var fs=require('fs');var path=require(_0x710e('0x5'));var rimraf=require(_0x710e('0x6'));var config=require('../../config/environment');var attributes=require('./userWhatsappQueue.attributes');module[_0x710e('0x7')]=function(_0x44b775,_0x20b3b3){return _0x44b775[_0x710e('0x8')](_0x710e('0x9'),attributes,{'tableName':_0x710e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a11=['exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes'];(function(_0x59e8ab,_0x5333ce){var _0x22d0f6=function(_0x3126e1){while(--_0x3126e1){_0x59e8ab['push'](_0x59e8ab['shift']());}};_0x22d0f6(++_0x5333ce);}(_0x8a11,0x19a));var _0x18a1=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0x8a11[_0xf0bcac];return _0x4e4c65;};'use strict';var _=require(_0x18a1('0x0'));var util=require('util');var logger=require(_0x18a1('0x1'))(_0x18a1('0x2'));var moment=require(_0x18a1('0x3'));var BPromise=require(_0x18a1('0x4'));var rp=require(_0x18a1('0x5'));var fs=require('fs');var path=require(_0x18a1('0x6'));var rimraf=require(_0x18a1('0x7'));var config=require(_0x18a1('0x8'));var attributes=require(_0x18a1('0x9'));module[_0x18a1('0xa')]=function(_0x6eb14e,_0x356253){return _0x6eb14e[_0x18a1('0xb')](_0x18a1('0xc'),attributes,{'tableName':_0x18a1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 602dccf..4ebcfde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db1=['code','message','info','request\x20sent','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','UserWhatsappQueue,\x20%s,\x20%s','debug','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0db1,0x1bc));var _0x10db=function(_0x4a2019,_0x2d9501){_0x4a2019=_0x4a2019-0x0;var _0x4518f9=_0x0db1[_0x4a2019];return _0x4518f9;};'use strict';var _=require(_0x10db('0x0'));var util=require('util');var moment=require(_0x10db('0x1'));var BPromise=require(_0x10db('0x2'));var rs=require(_0x10db('0x3'));var fs=require('fs');var Redis=require(_0x10db('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x10db('0x5'));var logger=require(_0x10db('0x6'))(_0x10db('0x7'));var config=require(_0x10db('0x8'));var jayson=require(_0x10db('0x9'));var client=jayson[_0x10db('0xa')][_0x10db('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12c92d,_0x2a07ce,_0x54c7c7){return new BPromise(function(_0x17d529,_0x2e2cb3){return client[_0x10db('0xc')](_0x12c92d,_0x54c7c7)['then'](function(_0x712577){logger['info'](_0x10db('0xd'),_0x2a07ce,'request\x20sent');logger[_0x10db('0xe')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x2a07ce,'request\x20sent',JSON['stringify'](_0x712577));if(_0x712577['error']){if(_0x712577[_0x10db('0xf')][_0x10db('0x10')]===0x1f4){logger[_0x10db('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2a07ce,_0x712577[_0x10db('0xf')][_0x10db('0x11')]);return _0x2e2cb3(_0x712577['error']['message']);}logger[_0x10db('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2a07ce,_0x712577[_0x10db('0xf')][_0x10db('0x11')]);return _0x17d529(_0x712577['error'][_0x10db('0x11')]);}else{logger[_0x10db('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2a07ce,_0x10db('0x13'));_0x17d529(_0x712577['result'][_0x10db('0x11')]);}})['catch'](function(_0x4446e5){logger[_0x10db('0xf')](_0x10db('0xd'),_0x2a07ce,_0x4446e5);_0x2e2cb3(_0x4446e5);});});}
\ No newline at end of file
+var _0x8b7f=['stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','UserWhatsappQueue,\x20%s,\x20%s,\x20%s'];(function(_0x24f99a,_0x2ed010){var _0x4ee072=function(_0x16d4b5){while(--_0x16d4b5){_0x24f99a['push'](_0x24f99a['shift']());}};_0x4ee072(++_0x2ed010);}(_0x8b7f,0x156));var _0xf8b7=function(_0x4047fd,_0x4521d2){_0x4047fd=_0x4047fd-0x0;var _0x26458b=_0x8b7f[_0x4047fd];return _0x26458b;};'use strict';var _=require(_0xf8b7('0x0'));var util=require(_0xf8b7('0x1'));var moment=require(_0xf8b7('0x2'));var BPromise=require('bluebird');var rs=require(_0xf8b7('0x3'));var fs=require('fs');var Redis=require(_0xf8b7('0x4'));var db=require(_0xf8b7('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf8b7('0x6'))(_0xf8b7('0x7'));var config=require(_0xf8b7('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf8b7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d0703,_0x3b7051,_0x42beb2){return new BPromise(function(_0xd3342,_0x34b170){return client[_0xf8b7('0xa')](_0x1d0703,_0x42beb2)['then'](function(_0x86c6a0){logger[_0xf8b7('0xb')](_0xf8b7('0xc'),_0x3b7051,_0xf8b7('0xd'));logger['debug'](_0xf8b7('0xe'),_0x3b7051,'request\x20sent',JSON[_0xf8b7('0xf')](_0x86c6a0));if(_0x86c6a0[_0xf8b7('0x10')]){if(_0x86c6a0['error'][_0xf8b7('0x11')]===0x1f4){logger[_0xf8b7('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3b7051,_0x86c6a0['error']['message']);return _0x34b170(_0x86c6a0[_0xf8b7('0x10')][_0xf8b7('0x12')]);}logger[_0xf8b7('0x10')](_0xf8b7('0xc'),_0x3b7051,_0x86c6a0['error'][_0xf8b7('0x12')]);return _0xd3342(_0x86c6a0['error']['message']);}else{logger[_0xf8b7('0xb')](_0xf8b7('0xc'),_0x3b7051,_0xf8b7('0xd'));_0xd3342(_0x86c6a0[_0xf8b7('0x13')][_0xf8b7('0x12')]);}})[_0xf8b7('0x14')](function(_0xb87888){logger[_0xf8b7('0x10')](_0xf8b7('0xc'),_0x3b7051,_0xb87888);_0x34b170(_0xb87888);});});}
\ No newline at end of file
index 4997b2d..9033ff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1159=['update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','isAuthenticated','index','get','/:id','show','post','create','put'];(function(_0x196092,_0xc5ea6f){var _0x376189=function(_0x1c6642){while(--_0x1c6642){_0x196092['push'](_0x196092['shift']());}};_0x376189(++_0xc5ea6f);}(_0x1159,0xf3));var _0x9115=function(_0x274cb5,_0x2c220a){_0x274cb5=_0x274cb5-0x0;var _0x3e53ff=_0x1159[_0x274cb5];return _0x3e53ff;};'use strict';var multer=require(_0x9115('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9115('0x1'));var express=require(_0x9115('0x2'));var router=express[_0x9115('0x3')]();var fs_extra=require(_0x9115('0x4'));var auth=require(_0x9115('0x5'));var interaction=require(_0x9115('0x6'));var config=require(_0x9115('0x7'));var controller=require(_0x9115('0x8'));router['get']('/',auth[_0x9115('0x9')](),controller[_0x9115('0xa')]);router[_0x9115('0xb')](_0x9115('0xc'),auth[_0x9115('0x9')](),controller[_0x9115('0xd')]);router[_0x9115('0xe')]('/',auth['isAuthenticated'](),controller[_0x9115('0xf')]);router[_0x9115('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x9115('0x11')]);router['delete'](_0x9115('0xc'),auth[_0x9115('0x9')](),controller[_0x9115('0x12')]);module[_0x9115('0x13')]=router;
\ No newline at end of file
+var _0x55d2=['../../config/environment','./variable.controller','get','isAuthenticated','/:id','show','post','update','destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x55d2,0x9f));var _0x255d=function(_0x1b3f44,_0x5cdb98){_0x1b3f44=_0x1b3f44-0x0;var _0xb6ff18=_0x55d2[_0x1b3f44];return _0xb6ff18;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x255d('0x0'));var timeout=require(_0x255d('0x1'));var express=require(_0x255d('0x2'));var router=express[_0x255d('0x3')]();var fs_extra=require(_0x255d('0x4'));var auth=require(_0x255d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x255d('0x6'));var controller=require(_0x255d('0x7'));router[_0x255d('0x8')]('/',auth[_0x255d('0x9')](),controller['index']);router['get'](_0x255d('0xa'),auth[_0x255d('0x9')](),controller[_0x255d('0xb')]);router[_0x255d('0xc')]('/',auth[_0x255d('0x9')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x255d('0xd')]);router['delete'](_0x255d('0xa'),auth[_0x255d('0x9')](),controller[_0x255d('0xe')]);module['exports']=router;
\ No newline at end of file
index 020dad8..8f2451d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x397a=['name','sequelize','exports','STRING'];(function(_0x2cab45,_0x3cfcb8){var _0x37f14a=function(_0x2bf4e9){while(--_0x2bf4e9){_0x2cab45['push'](_0x2cab45['shift']());}};_0x37f14a(++_0x3cfcb8);}(_0x397a,0x9d));var _0xa397=function(_0x2d6349,_0x54701a){_0x2d6349=_0x2d6349-0x0;var _0x290472=_0x397a[_0x2d6349];return _0x290472;};'use strict';var Sequelize=require(_0xa397('0x0'));module[_0xa397('0x1')]={'name':{'type':Sequelize[_0xa397('0x2')],'unique':_0xa397('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x70c8=['STRING'];(function(_0x4a75e0,_0x220621){var _0x3f5c22=function(_0x282713){while(--_0x282713){_0x4a75e0['push'](_0x4a75e0['shift']());}};_0x3f5c22(++_0x220621);}(_0x70c8,0xa9));var _0x870c=function(_0x177be2,_0x19f40a){_0x177be2=_0x177be2-0x0;var _0x1de4a2=_0x70c8[_0x177be2];return _0x1de4a2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x870c('0x0')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x870c('0x0')]}};
\ No newline at end of file
index 3e5ccc5..7ccc228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eea=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','get','Variables','UserProfileResource','sendStatus','error','name','index','map','Variable','rawAttributes','fieldName','type','key','query','filters','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','intersection','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x7eea,0x14c));var _0xa7ee=function(_0x324029,_0x351869){_0x324029=_0x324029-0x0;var _0x83c0f8=_0x7eea[_0x324029];return _0x83c0f8;};'use strict';var emlformat=require(_0xa7ee('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa7ee('0x1'));var jsonpatch=require(_0xa7ee('0x2'));var rp=require(_0xa7ee('0x3'));var moment=require(_0xa7ee('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa7ee('0x5'));var util=require(_0xa7ee('0x6'));var path=require(_0xa7ee('0x7'));var sox=require('sox');var csv=require(_0xa7ee('0x8'));var ejs=require(_0xa7ee('0x9'));var fs=require('fs');var fs_extra=require(_0xa7ee('0xa'));var _=require(_0xa7ee('0xb'));var squel=require(_0xa7ee('0xc'));var crypto=require(_0xa7ee('0xd'));var jsforce=require(_0xa7ee('0xe'));var deskjs=require(_0xa7ee('0xf'));var toCsv=require(_0xa7ee('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa7ee('0x10'));var qs=require(_0xa7ee('0x11'));var as=require(_0xa7ee('0x12'));var hardwareService=require(_0xa7ee('0x13'));var logger=require(_0xa7ee('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xa7ee('0x15'));var licenseUtil=require(_0xa7ee('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf70e28,_0x2bce29){_0x2bce29=_0x2bce29||0xcc;return function(_0x48d8d9){if(_0x48d8d9){return _0xf70e28['sendStatus'](_0x2bce29);}return _0xf70e28['status'](_0x2bce29)[_0xa7ee('0x17')]();};}function respondWithResult(_0x389ca3,_0xe414d){_0xe414d=_0xe414d||0xc8;return function(_0x5b9429){if(_0x5b9429){return _0x389ca3[_0xa7ee('0x18')](_0xe414d)['json'](_0x5b9429);}};}function respondWithFilteredResult(_0x4e20cb,_0x4ad7d8){return function(_0x320365){if(_0x320365){var _0x3d447d=typeof _0x4ad7d8[_0xa7ee('0x19')]===_0xa7ee('0x1a')&&typeof _0x4ad7d8['limit']===_0xa7ee('0x1a');var _0x3e08cb=_0x320365[_0xa7ee('0x1b')];var _0x4c23aa=_0x3d447d?0x0:_0x4ad7d8[_0xa7ee('0x19')];var _0x1d8fce=_0x3d447d?_0x320365[_0xa7ee('0x1b')]:_0x4ad7d8[_0xa7ee('0x19')]+_0x4ad7d8[_0xa7ee('0x1c')];var _0x421a7f;if(_0x1d8fce>=_0x3e08cb){_0x1d8fce=_0x3e08cb;_0x421a7f=0xc8;}else{_0x421a7f=0xce;}_0x4e20cb[_0xa7ee('0x18')](_0x421a7f);return _0x4e20cb[_0xa7ee('0x1d')](_0xa7ee('0x1e'),_0x4c23aa+'-'+_0x1d8fce+'/'+_0x3e08cb)[_0xa7ee('0x1f')](_0x320365);}return null;};}function patchUpdates(_0x5e4e0a){return function(_0x100e5d){try{jsonpatch[_0xa7ee('0x20')](_0x100e5d,_0x5e4e0a,!![]);}catch(_0x1bff06){return BPromise[_0xa7ee('0x21')](_0x1bff06);}return _0x100e5d[_0xa7ee('0x22')]();};}function saveUpdates(_0x45e300,_0x4b97c9){return function(_0xb68074){if(_0xb68074){return _0xb68074[_0xa7ee('0x23')](_0x45e300)['then'](function(_0x5465e6){return _0x5465e6;});}return null;};}function removeEntity(_0x5b29a9,_0xb44761){return function(_0x1edd3f){if(_0x1edd3f){return _0x1edd3f[_0xa7ee('0x24')]()[_0xa7ee('0x25')](function(){var _0x4cee16=_0x1edd3f[_0xa7ee('0x26')]({'plain':!![]});var _0x24f34e=_0xa7ee('0x27');return db[_0xa7ee('0x28')][_0xa7ee('0x24')]({'where':{'type':_0x24f34e,'resourceId':_0x4cee16['id']}})[_0xa7ee('0x25')](function(){return _0x1edd3f;});})['then'](function(){_0x5b29a9['status'](0xcc)[_0xa7ee('0x17')]();});}};}function handleEntityNotFound(_0xcb02cc,_0x5ab937){return function(_0x57d1c5){if(!_0x57d1c5){_0xcb02cc[_0xa7ee('0x29')](0x194);}return _0x57d1c5;};}function handleError(_0x22ba48,_0x246ad1){_0x246ad1=_0x246ad1||0x1f4;return function(_0x1ce28a){logger[_0xa7ee('0x2a')](_0x1ce28a['stack']);if(_0x1ce28a[_0xa7ee('0x2b')]){delete _0x1ce28a[_0xa7ee('0x2b')];}_0x22ba48[_0xa7ee('0x18')](_0x246ad1)['send'](_0x1ce28a);};}exports[_0xa7ee('0x2c')]=function(_0x6bb84f,_0x330269){var _0x1971a3={},_0x6b02fb={},_0x35df8b={'count':0x0,'rows':[]};var _0x3760af=_[_0xa7ee('0x2d')](db[_0xa7ee('0x2e')][_0xa7ee('0x2f')],function(_0x23bdca){return{'name':_0x23bdca[_0xa7ee('0x30')],'type':_0x23bdca[_0xa7ee('0x31')][_0xa7ee('0x32')]};});_0x6b02fb['model']=_[_0xa7ee('0x2d')](_0x3760af,_0xa7ee('0x2b'));_0x6b02fb[_0xa7ee('0x33')]=_['keys'](_0x6bb84f[_0xa7ee('0x33')]);_0x6b02fb[_0xa7ee('0x34')]=_['intersection'](_0x6b02fb[_0xa7ee('0x35')],_0x6b02fb['query']);_0x1971a3[_0xa7ee('0x36')]=_['intersection'](_0x6b02fb[_0xa7ee('0x35')],qs[_0xa7ee('0x37')](_0x6bb84f['query'][_0xa7ee('0x37')]));_0x1971a3[_0xa7ee('0x36')]=_0x1971a3['attributes'][_0xa7ee('0x38')]?_0x1971a3[_0xa7ee('0x36')]:_0x6b02fb['model'];if(!_0x6bb84f[_0xa7ee('0x33')]['hasOwnProperty'](_0xa7ee('0x39'))){_0x1971a3[_0xa7ee('0x1c')]=qs[_0xa7ee('0x1c')](_0x6bb84f[_0xa7ee('0x33')][_0xa7ee('0x1c')]);_0x1971a3[_0xa7ee('0x19')]=qs[_0xa7ee('0x19')](_0x6bb84f['query'][_0xa7ee('0x19')]);}_0x1971a3[_0xa7ee('0x3a')]=qs[_0xa7ee('0x3b')](_0x6bb84f[_0xa7ee('0x33')][_0xa7ee('0x3b')]);_0x1971a3[_0xa7ee('0x3c')]=qs[_0xa7ee('0x34')](_[_0xa7ee('0x3d')](_0x6bb84f[_0xa7ee('0x33')],_0x6b02fb['filters']),_0x3760af);if(_0x6bb84f[_0xa7ee('0x33')][_0xa7ee('0x3e')]){_0x1971a3[_0xa7ee('0x3c')]=_[_0xa7ee('0x3f')](_0x1971a3[_0xa7ee('0x3c')],{'$or':_[_0xa7ee('0x2d')](_0x3760af,function(_0x12fb0d){if(_0x12fb0d[_0xa7ee('0x31')]!==_0xa7ee('0x40')){var _0x2ff587={};_0x2ff587[_0x12fb0d[_0xa7ee('0x2b')]]={'$like':'%'+_0x6bb84f['query'][_0xa7ee('0x3e')]+'%'};return _0x2ff587;}})});}_0x1971a3=_[_0xa7ee('0x3f')]({},_0x1971a3,_0x6bb84f[_0xa7ee('0x41')]);var _0x572838={'where':_0x1971a3[_0xa7ee('0x3c')]};return db[_0xa7ee('0x2e')][_0xa7ee('0x1b')](_0x572838)['then'](function(_0x486c88){_0x35df8b[_0xa7ee('0x1b')]=_0x486c88;if(_0x6bb84f['query'][_0xa7ee('0x42')]){_0x1971a3[_0xa7ee('0x43')]=[{'all':!![]}];}return db[_0xa7ee('0x2e')][_0xa7ee('0x44')](_0x1971a3);})[_0xa7ee('0x25')](function(_0x4122df){_0x35df8b[_0xa7ee('0x45')]=_0x4122df;return _0x35df8b;})[_0xa7ee('0x25')](respondWithFilteredResult(_0x330269,_0x1971a3))['catch'](handleError(_0x330269,null));};exports[_0xa7ee('0x46')]=function(_0x2be3ce,_0x251650){var _0x41f89b={'raw':!![],'where':{'id':_0x2be3ce[_0xa7ee('0x47')]['id']}},_0xb5e6af={};_0xb5e6af[_0xa7ee('0x35')]=_[_0xa7ee('0x48')](db[_0xa7ee('0x2e')][_0xa7ee('0x2f')]);_0xb5e6af['query']=_[_0xa7ee('0x48')](_0x2be3ce[_0xa7ee('0x33')]);_0xb5e6af[_0xa7ee('0x34')]=_[_0xa7ee('0x49')](_0xb5e6af[_0xa7ee('0x35')],_0xb5e6af['query']);_0x41f89b[_0xa7ee('0x36')]=_[_0xa7ee('0x49')](_0xb5e6af[_0xa7ee('0x35')],qs[_0xa7ee('0x37')](_0x2be3ce[_0xa7ee('0x33')][_0xa7ee('0x37')]));_0x41f89b[_0xa7ee('0x36')]=_0x41f89b['attributes'][_0xa7ee('0x38')]?_0x41f89b['attributes']:_0xb5e6af['model'];if(_0x2be3ce[_0xa7ee('0x33')][_0xa7ee('0x42')]){_0x41f89b[_0xa7ee('0x43')]=[{'all':!![]}];}_0x41f89b=_[_0xa7ee('0x3f')]({},_0x41f89b,_0x2be3ce['options']);return db[_0xa7ee('0x2e')][_0xa7ee('0x4a')](_0x41f89b)[_0xa7ee('0x25')](handleEntityNotFound(_0x251650,null))[_0xa7ee('0x25')](respondWithResult(_0x251650,null))[_0xa7ee('0x4b')](handleError(_0x251650,null));};exports['create']=function(_0x529307,_0x32c6ab){return db[_0xa7ee('0x2e')][_0xa7ee('0x4c')](_0x529307['body'],{})[_0xa7ee('0x25')](function(_0x4b81ca){var _0x2e432a=_0x529307[_0xa7ee('0x4d')][_0xa7ee('0x26')]({'plain':!![]});if(!_0x2e432a)throw new Error(_0xa7ee('0x4e'));if(_0x2e432a[_0xa7ee('0x4f')]===_0xa7ee('0x4d')){var _0x1a4f47=_0x4b81ca[_0xa7ee('0x26')]({'plain':!![]});var _0x418505=_0xa7ee('0x27');return db[_0xa7ee('0x50')][_0xa7ee('0x4a')]({'where':{'name':_0x418505,'userProfileId':_0x2e432a[_0xa7ee('0x51')]},'raw':!![]})[_0xa7ee('0x25')](function(_0x1f358f){if(_0x1f358f&&_0x1f358f[_0xa7ee('0x52')]===0x0){return db[_0xa7ee('0x28')][_0xa7ee('0x4c')]({'name':_0x1a4f47[_0xa7ee('0x2b')],'resourceId':_0x1a4f47['id'],'type':_0x1f358f[_0xa7ee('0x2b')],'sectionId':_0x1f358f['id']},{})[_0xa7ee('0x25')](function(){return _0x4b81ca;});}else{return _0x4b81ca;}})[_0xa7ee('0x4b')](function(_0x334c35){logger[_0xa7ee('0x2a')](_0xa7ee('0x53'),_0x334c35);throw _0x334c35;});}return _0x4b81ca;})[_0xa7ee('0x25')](respondWithResult(_0x32c6ab,0xc9))['catch'](handleError(_0x32c6ab,null));};exports[_0xa7ee('0x23')]=function(_0x43265d,_0x2229a9){if(_0x43265d[_0xa7ee('0x54')]['id']){delete _0x43265d['body']['id'];}return db[_0xa7ee('0x2e')][_0xa7ee('0x4a')]({'where':{'id':_0x43265d[_0xa7ee('0x47')]['id']}})[_0xa7ee('0x25')](handleEntityNotFound(_0x2229a9,null))['then'](saveUpdates(_0x43265d[_0xa7ee('0x54')],null))['then'](respondWithResult(_0x2229a9,null))[_0xa7ee('0x4b')](handleError(_0x2229a9,null));};exports[_0xa7ee('0x24')]=function(_0x5e5c62,_0x446039){return db[_0xa7ee('0x2e')][_0xa7ee('0x4a')]({'where':{'id':_0x5e5c62[_0xa7ee('0x47')]['id']}})[_0xa7ee('0x25')](handleEntityNotFound(_0x446039,null))[_0xa7ee('0x25')](removeEntity(_0x446039,null))[_0xa7ee('0x4b')](handleError(_0x446039,null));};
\ No newline at end of file
+var _0xb03a=['body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','Variables','UserProfileResource','error','name','send','index','map','Variable','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','catch','show','params','create','user','get','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xb03a,0xef));var _0xab03=function(_0x43551a,_0x2c6ae4){_0x43551a=_0x43551a-0x0;var _0x1a79b1=_0xb03a[_0x43551a];return _0x1a79b1;};'use strict';var emlformat=require(_0xab03('0x0'));var rimraf=require(_0xab03('0x1'));var zipdir=require(_0xab03('0x2'));var jsonpatch=require(_0xab03('0x3'));var rp=require(_0xab03('0x4'));var moment=require(_0xab03('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xab03('0x6'));var util=require('util');var path=require('path');var sox=require(_0xab03('0x7'));var csv=require('to-csv');var ejs=require(_0xab03('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xab03('0x9'));var squel=require(_0xab03('0xa'));var crypto=require(_0xab03('0xb'));var jsforce=require(_0xab03('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xab03('0xd'));var querystring=require(_0xab03('0xe'));var Papa=require(_0xab03('0xf'));var Redis=require('ioredis');var authService=require(_0xab03('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xab03('0x11'));var hardwareService=require(_0xab03('0x12'));var logger=require(_0xab03('0x13'))('api');var utils=require(_0xab03('0x14'));var config=require(_0xab03('0x15'));var licenseUtil=require(_0xab03('0x16'));var db=require(_0xab03('0x17'))['db'];function respondWithStatusCode(_0x1838a1,_0x4d818b){_0x4d818b=_0x4d818b||0xcc;return function(_0xc59c4f){if(_0xc59c4f){return _0x1838a1[_0xab03('0x18')](_0x4d818b);}return _0x1838a1['status'](_0x4d818b)[_0xab03('0x19')]();};}function respondWithResult(_0x551775,_0xbe9902){_0xbe9902=_0xbe9902||0xc8;return function(_0x73a09f){if(_0x73a09f){return _0x551775[_0xab03('0x1a')](_0xbe9902)[_0xab03('0x1b')](_0x73a09f);}};}function respondWithFilteredResult(_0x2ad314,_0x503f51){return function(_0x112114){if(_0x112114){var _0x4b3847=typeof _0x503f51[_0xab03('0x1c')]==='undefined'&&typeof _0x503f51[_0xab03('0x1d')]===_0xab03('0x1e');var _0x42d870=_0x112114[_0xab03('0x1f')];var _0x141404=_0x4b3847?0x0:_0x503f51['offset'];var _0x55a9a7=_0x4b3847?_0x112114['count']:_0x503f51[_0xab03('0x1c')]+_0x503f51[_0xab03('0x1d')];var _0x5bd04c;if(_0x55a9a7>=_0x42d870){_0x55a9a7=_0x42d870;_0x5bd04c=0xc8;}else{_0x5bd04c=0xce;}_0x2ad314[_0xab03('0x1a')](_0x5bd04c);return _0x2ad314[_0xab03('0x20')](_0xab03('0x21'),_0x141404+'-'+_0x55a9a7+'/'+_0x42d870)[_0xab03('0x1b')](_0x112114);}return null;};}function patchUpdates(_0x12027a){return function(_0x1f5585){try{jsonpatch[_0xab03('0x22')](_0x1f5585,_0x12027a,!![]);}catch(_0xfe6357){return BPromise['reject'](_0xfe6357);}return _0x1f5585[_0xab03('0x23')]();};}function saveUpdates(_0x1f3cf1,_0x4e636b){return function(_0x2efb74){if(_0x2efb74){return _0x2efb74['update'](_0x1f3cf1)[_0xab03('0x24')](function(_0x459c56){return _0x459c56;});}return null;};}function removeEntity(_0x4e3a92,_0x3b633f){return function(_0x2c9862){if(_0x2c9862){return _0x2c9862[_0xab03('0x25')]()[_0xab03('0x24')](function(){var _0x4e8c8c=_0x2c9862['get']({'plain':!![]});var _0x95dd3b=_0xab03('0x26');return db[_0xab03('0x27')][_0xab03('0x25')]({'where':{'type':_0x95dd3b,'resourceId':_0x4e8c8c['id']}})['then'](function(){return _0x2c9862;});})[_0xab03('0x24')](function(){_0x4e3a92['status'](0xcc)[_0xab03('0x19')]();});}};}function handleEntityNotFound(_0x3f8337,_0x221022){return function(_0x5955fb){if(!_0x5955fb){_0x3f8337[_0xab03('0x18')](0x194);}return _0x5955fb;};}function handleError(_0x410c82,_0x1079c3){_0x1079c3=_0x1079c3||0x1f4;return function(_0x4e4ef7){logger[_0xab03('0x28')](_0x4e4ef7['stack']);if(_0x4e4ef7[_0xab03('0x29')]){delete _0x4e4ef7[_0xab03('0x29')];}_0x410c82['status'](_0x1079c3)[_0xab03('0x2a')](_0x4e4ef7);};}exports[_0xab03('0x2b')]=function(_0x3e4a7b,_0x50d5d5){var _0x46dd8e={},_0x3b1d31={},_0x3e6657={'count':0x0,'rows':[]};var _0x249a94=_[_0xab03('0x2c')](db[_0xab03('0x2d')][_0xab03('0x2e')],function(_0x46ebea){return{'name':_0x46ebea[_0xab03('0x2f')],'type':_0x46ebea['type'][_0xab03('0x30')]};});_0x3b1d31[_0xab03('0x31')]=_['map'](_0x249a94,_0xab03('0x29'));_0x3b1d31[_0xab03('0x32')]=_[_0xab03('0x33')](_0x3e4a7b[_0xab03('0x32')]);_0x3b1d31[_0xab03('0x34')]=_[_0xab03('0x35')](_0x3b1d31[_0xab03('0x31')],_0x3b1d31[_0xab03('0x32')]);_0x46dd8e['attributes']=_[_0xab03('0x35')](_0x3b1d31[_0xab03('0x31')],qs[_0xab03('0x36')](_0x3e4a7b[_0xab03('0x32')][_0xab03('0x36')]));_0x46dd8e['attributes']=_0x46dd8e[_0xab03('0x37')][_0xab03('0x38')]?_0x46dd8e['attributes']:_0x3b1d31['model'];if(!_0x3e4a7b[_0xab03('0x32')][_0xab03('0x39')](_0xab03('0x3a'))){_0x46dd8e['limit']=qs[_0xab03('0x1d')](_0x3e4a7b[_0xab03('0x32')][_0xab03('0x1d')]);_0x46dd8e[_0xab03('0x1c')]=qs[_0xab03('0x1c')](_0x3e4a7b[_0xab03('0x32')][_0xab03('0x1c')]);}_0x46dd8e['order']=qs['sort'](_0x3e4a7b[_0xab03('0x32')][_0xab03('0x3b')]);_0x46dd8e[_0xab03('0x3c')]=qs[_0xab03('0x34')](_[_0xab03('0x3d')](_0x3e4a7b[_0xab03('0x32')],_0x3b1d31[_0xab03('0x34')]),_0x249a94);if(_0x3e4a7b[_0xab03('0x32')]['filter']){_0x46dd8e[_0xab03('0x3c')]=_['merge'](_0x46dd8e[_0xab03('0x3c')],{'$or':_['map'](_0x249a94,function(_0x20ee39){if(_0x20ee39[_0xab03('0x3e')]!==_0xab03('0x3f')){var _0x4e49f5={};_0x4e49f5[_0x20ee39[_0xab03('0x29')]]={'$like':'%'+_0x3e4a7b[_0xab03('0x32')][_0xab03('0x40')]+'%'};return _0x4e49f5;}})});}_0x46dd8e=_[_0xab03('0x41')]({},_0x46dd8e,_0x3e4a7b[_0xab03('0x42')]);var _0x6dadcf={'where':_0x46dd8e['where']};return db['Variable'][_0xab03('0x1f')](_0x6dadcf)[_0xab03('0x24')](function(_0x46624a){_0x3e6657[_0xab03('0x1f')]=_0x46624a;if(_0x3e4a7b['query'][_0xab03('0x43')]){_0x46dd8e['include']=[{'all':!![]}];}return db['Variable']['findAll'](_0x46dd8e);})[_0xab03('0x24')](function(_0x4ce850){_0x3e6657['rows']=_0x4ce850;return _0x3e6657;})[_0xab03('0x24')](respondWithFilteredResult(_0x50d5d5,_0x46dd8e))[_0xab03('0x44')](handleError(_0x50d5d5,null));};exports[_0xab03('0x45')]=function(_0x54e1a7,_0x30e5a0){var _0xa06d07={'raw':!![],'where':{'id':_0x54e1a7[_0xab03('0x46')]['id']}},_0x1d16b1={};_0x1d16b1[_0xab03('0x31')]=_[_0xab03('0x33')](db[_0xab03('0x2d')][_0xab03('0x2e')]);_0x1d16b1['query']=_['keys'](_0x54e1a7[_0xab03('0x32')]);_0x1d16b1[_0xab03('0x34')]=_[_0xab03('0x35')](_0x1d16b1['model'],_0x1d16b1[_0xab03('0x32')]);_0xa06d07[_0xab03('0x37')]=_['intersection'](_0x1d16b1['model'],qs['fields'](_0x54e1a7[_0xab03('0x32')]['fields']));_0xa06d07[_0xab03('0x37')]=_0xa06d07[_0xab03('0x37')]['length']?_0xa06d07[_0xab03('0x37')]:_0x1d16b1[_0xab03('0x31')];if(_0x54e1a7[_0xab03('0x32')][_0xab03('0x43')]){_0xa06d07['include']=[{'all':!![]}];}_0xa06d07=_['merge']({},_0xa06d07,_0x54e1a7[_0xab03('0x42')]);return db[_0xab03('0x2d')]['find'](_0xa06d07)[_0xab03('0x24')](handleEntityNotFound(_0x30e5a0,null))[_0xab03('0x24')](respondWithResult(_0x30e5a0,null))[_0xab03('0x44')](handleError(_0x30e5a0,null));};exports[_0xab03('0x47')]=function(_0x79325e,_0x58a59d){return db[_0xab03('0x2d')][_0xab03('0x47')](_0x79325e['body'],{})[_0xab03('0x24')](function(_0x3779b3){var _0x59c301=_0x79325e[_0xab03('0x48')][_0xab03('0x49')]({'plain':!![]});if(!_0x59c301)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x59c301['role']===_0xab03('0x48')){var _0x15263e=_0x3779b3[_0xab03('0x49')]({'plain':!![]});var _0x35e528=_0xab03('0x26');return db[_0xab03('0x4a')]['find']({'where':{'name':_0x35e528,'userProfileId':_0x59c301['userProfileId']},'raw':!![]})['then'](function(_0x19e05c){if(_0x19e05c&&_0x19e05c['autoAssociation']===0x0){return db[_0xab03('0x27')][_0xab03('0x47')]({'name':_0x15263e[_0xab03('0x29')],'resourceId':_0x15263e['id'],'type':_0x19e05c['name'],'sectionId':_0x19e05c['id']},{})[_0xab03('0x24')](function(){return _0x3779b3;});}else{return _0x3779b3;}})[_0xab03('0x44')](function(_0x3eccd1){logger['error'](_0xab03('0x4b'),_0x3eccd1);throw _0x3eccd1;});}return _0x3779b3;})[_0xab03('0x24')](respondWithResult(_0x58a59d,0xc9))['catch'](handleError(_0x58a59d,null));};exports[_0xab03('0x4c')]=function(_0x453563,_0x186f6a){if(_0x453563[_0xab03('0x4d')]['id']){delete _0x453563[_0xab03('0x4d')]['id'];}return db[_0xab03('0x2d')][_0xab03('0x4e')]({'where':{'id':_0x453563[_0xab03('0x46')]['id']}})[_0xab03('0x24')](handleEntityNotFound(_0x186f6a,null))[_0xab03('0x24')](saveUpdates(_0x453563['body'],null))['then'](respondWithResult(_0x186f6a,null))['catch'](handleError(_0x186f6a,null));};exports[_0xab03('0x25')]=function(_0x4896f1,_0x32ff53){return db[_0xab03('0x2d')][_0xab03('0x4e')]({'where':{'id':_0x4896f1[_0xab03('0x46')]['id']}})[_0xab03('0x24')](handleEntityNotFound(_0x32ff53,null))[_0xab03('0x24')](removeEntity(_0x32ff53,null))[_0xab03('0x44')](handleError(_0x32ff53,null));};
\ No newline at end of file
index 3336e2f..92bd603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7780=['./variable.attributes','exports','Variable','tools_variables','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7780,0xe8));var _0x0778=function(_0x23f50a,_0x1e0fbc){_0x23f50a=_0x23f50a-0x0;var _0x3d48e2=_0x7780[_0x23f50a];return _0x3d48e2;};'use strict';var _=require(_0x0778('0x0'));var util=require(_0x0778('0x1'));var logger=require(_0x0778('0x2'))('api');var moment=require(_0x0778('0x3'));var BPromise=require(_0x0778('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0778('0x5'));var rimraf=require(_0x0778('0x6'));var config=require(_0x0778('0x7'));var attributes=require(_0x0778('0x8'));module[_0x0778('0x9')]=function(_0x3cd022,_0x476c1c){return _0x3cd022['define'](_0x0778('0xa'),attributes,{'tableName':_0x0778('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2cec=['tools_variables','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./variable.attributes','exports','Variable'];(function(_0x195760,_0x1ecf93){var _0x58bcd1=function(_0x1774df){while(--_0x1774df){_0x195760['push'](_0x195760['shift']());}};_0x58bcd1(++_0x1ecf93);}(_0x2cec,0x9d));var _0xc2ce=function(_0x312afb,_0x42be46){_0x312afb=_0x312afb-0x0;var _0x586f1a=_0x2cec[_0x312afb];return _0x586f1a;};'use strict';var _=require(_0xc2ce('0x0'));var util=require(_0xc2ce('0x1'));var logger=require('../../config/logger')(_0xc2ce('0x2'));var moment=require(_0xc2ce('0x3'));var BPromise=require(_0xc2ce('0x4'));var rp=require(_0xc2ce('0x5'));var fs=require('fs');var path=require(_0xc2ce('0x6'));var rimraf=require(_0xc2ce('0x7'));var config=require(_0xc2ce('0x8'));var attributes=require(_0xc2ce('0x9'));module[_0xc2ce('0xa')]=function(_0x88cb0e,_0x4d7eba){return _0x88cb0e['define'](_0xc2ce('0xb'),attributes,{'tableName':_0xc2ce('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b47241..40d8d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowVariable','options','where','include','map','attributes'];(function(_0x8ccfdc,_0x59d713){var _0x1e106e=function(_0x2c4745){while(--_0x2c4745){_0x8ccfdc['push'](_0x8ccfdc['shift']());}};_0x1e106e(++_0x59d713);}(_0x814b,0x1a2));var _0xb814=function(_0x1d8119,_0xc98f17){_0x1d8119=_0x1d8119-0x0;var _0x3e30f6=_0x814b[_0x1d8119];return _0x3e30f6;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Variable,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}exports[_0xb814('0x18')]=function(_0x55ba16){var _0x270598=this;return new Promise(function(_0xfac75b,_0x4c3007){return db['Variable']['find']({'raw':_0x55ba16[_0xb814('0x19')]?_0x55ba16['options']['raw']===undefined?!![]:![]:!![],'where':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1a')]||null:null,'attributes':_0x55ba16['options']?_0x55ba16[_0xb814('0x19')]['attributes']||null:null,'include':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')],function(_0x1f5d40){return{'model':db[_0x1f5d40['model']],'as':_0x1f5d40['as'],'attributes':_0x1f5d40[_0xb814('0x1d')],'include':_0x1f5d40['include']?_[_0xb814('0x1c')](_0x1f5d40[_0xb814('0x1b')],function(_0x31c7ec){return{'model':db[_0x31c7ec[_0xb814('0x1e')]],'as':_0x31c7ec['as'],'attributes':_0x31c7ec[_0xb814('0x1d')],'include':_0x31c7ec[_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x31c7ec['include'],function(_0x392222){return{'model':db[_0x392222[_0xb814('0x1e')]],'as':_0x392222['as'],'attributes':_0x392222[_0xb814('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb814('0xd')](function(_0x32ed56){logger[_0xb814('0xe')](_0xb814('0x18'),_0x55ba16);logger[_0xb814('0x11')]('ShowVariable',_0x55ba16,JSON[_0xb814('0x1f')](_0x32ed56));_0xfac75b(_0x32ed56);})[_0xb814('0x17')](function(_0x52ed64){logger[_0xb814('0x13')](_0xb814('0x18'),_0x52ed64[_0xb814('0x15')],_0x55ba16);_0x4c3007(_0x270598['error'](0x1f4,_0x52ed64[_0xb814('0x15')]));});});};
\ No newline at end of file
+var _0x1cb9=['include','map','model','then','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowVariable','Variable','options','attributes'];(function(_0xdac383,_0x505d99){var _0x3e783d=function(_0x29c22a){while(--_0x29c22a){_0xdac383['push'](_0xdac383['shift']());}};_0x3e783d(++_0x505d99);}(_0x1cb9,0x14e));var _0x91cb=function(_0x3b18d,_0x30c7f9){_0x3b18d=_0x3b18d-0x0;var _0x1a3362=_0x1cb9[_0x3b18d];return _0x1a3362;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Variable,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}exports[_0x91cb('0x16')]=function(_0x1cd34b){var _0xcd1a78=this;return new Promise(function(_0x5cc1c3,_0x3fba4f){return db[_0x91cb('0x17')]['find']({'raw':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b['options']['raw']===undefined?!![]:![]:!![],'where':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')]['where']||null:null,'attributes':_0x1cd34b['options']?_0x1cd34b['options'][_0x91cb('0x19')]||null:null,'include':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')]?_['map'](_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')],function(_0x1fa837){return{'model':db[_0x1fa837['model']],'as':_0x1fa837['as'],'attributes':_0x1fa837[_0x91cb('0x19')],'include':_0x1fa837[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x1fa837[_0x91cb('0x1a')],function(_0x3ca500){return{'model':db[_0x3ca500[_0x91cb('0x1c')]],'as':_0x3ca500['as'],'attributes':_0x3ca500[_0x91cb('0x19')],'include':_0x3ca500[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x3ca500['include'],function(_0x59bf3a){return{'model':db[_0x59bf3a[_0x91cb('0x1c')]],'as':_0x59bf3a['as'],'attributes':_0x59bf3a['attributes']};}):[]};}):[]};}):[]:[]})[_0x91cb('0x1d')](function(_0x34d372){logger[_0x91cb('0xc')]('ShowVariable',_0x1cd34b);logger[_0x91cb('0xf')]('ShowVariable',_0x1cd34b,JSON[_0x91cb('0x11')](_0x34d372));_0x5cc1c3(_0x34d372);})[_0x91cb('0x15')](function(_0x3b3ee6){logger[_0x91cb('0x12')](_0x91cb('0x16'),_0x3b3ee6['message'],_0x1cd34b);_0x3fba4f(_0xcd1a78[_0x91cb('0x12')](0x1f4,_0x3b3ee6['message']));});});};
\ No newline at end of file
index 2fee9e5..0a434b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4b=['isAuthenticated','canUpdate','fetch','/reset','pull','/migrations','exports','express','Router','get','index','/fetch'];(function(_0x1f75d4,_0x183581){var _0x72f2ca=function(_0x5aafee){while(--_0x5aafee){_0x1f75d4['push'](_0x1f75d4['shift']());}};_0x72f2ca(++_0x183581);}(_0xac4b,0x157));var _0xbac4=function(_0xfaf9e9,_0x54e675){_0xfaf9e9=_0xfaf9e9-0x0;var _0xc28fbf=_0xac4b[_0xfaf9e9];return _0xc28fbf;};'use strict';var express=require(_0xbac4('0x0'));var router=express[_0xbac4('0x1')]();var auth=require('../../components/auth/service');var controller=require('./version.controller');router[_0xbac4('0x2')]('/',controller[_0xbac4('0x3')]);router[_0xbac4('0x2')](_0xbac4('0x4'),auth[_0xbac4('0x5')](),auth[_0xbac4('0x6')](),controller[_0xbac4('0x7')]);router['get'](_0xbac4('0x8'),auth['isAuthenticated'](),auth[_0xbac4('0x6')](),controller['reset']);router[_0xbac4('0x2')]('/pull',auth[_0xbac4('0x5')](),auth['canUpdate'](),controller[_0xbac4('0x9')]);router[_0xbac4('0x2')]('/restart',auth[_0xbac4('0x5')](),controller['restart']);router[_0xbac4('0x2')](_0xbac4('0xa'),controller['migrations']);module[_0xbac4('0xb')]=router;
\ No newline at end of file
+var _0x8441=['/fetch','isAuthenticated','fetch','/reset','canUpdate','/pull','/restart','migrations','exports','../../components/auth/service','./version.controller','get','index'];(function(_0x34c825,_0x44cad4){var _0x2fde13=function(_0x5ba245){while(--_0x5ba245){_0x34c825['push'](_0x34c825['shift']());}};_0x2fde13(++_0x44cad4);}(_0x8441,0xbf));var _0x1844=function(_0x4584ed,_0x30292b){_0x4584ed=_0x4584ed-0x0;var _0x3d0859=_0x8441[_0x4584ed];return _0x3d0859;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x1844('0x0'));var controller=require(_0x1844('0x1'));router[_0x1844('0x2')]('/',controller[_0x1844('0x3')]);router['get'](_0x1844('0x4'),auth[_0x1844('0x5')](),auth['canUpdate'](),controller[_0x1844('0x6')]);router[_0x1844('0x2')](_0x1844('0x7'),auth[_0x1844('0x5')](),auth[_0x1844('0x8')](),controller['reset']);router['get'](_0x1844('0x9'),auth[_0x1844('0x5')](),auth[_0x1844('0x8')](),controller['pull']);router['get'](_0x1844('0xa'),auth[_0x1844('0x5')](),controller['restart']);router[_0x1844('0x2')]('/migrations',controller[_0x1844('0xb')]);module[_0x1844('0xc')]=router;
\ No newline at end of file
index 26ed876..4434810 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46b=['Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','join','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/logger','update','simple-git','root','index','exports','version','query','latest','fetch','2.0.0','status','json','origin','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','info','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','motion2','pm2\x20restart\x20motion\x20%s','catch','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','migrations','map','then'];(function(_0x1bd5e9,_0x2dd9d8){var _0x2c802c=function(_0x1ba7a2){while(--_0x1ba7a2){_0x1bd5e9['push'](_0x1bd5e9['shift']());}};_0x2c802c(++_0x2dd9d8);}(_0xa46b,0x6f));var _0xba46=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xa46b[_0x432682];return _0x463d05;};'use strict';var Umzug=require(_0xba46('0x0'));var path=require(_0xba46('0x1'));var fs=require('fs');var _=require(_0xba46('0x2'));var pkginfo=require(_0xba46('0x3'))(module,'version');var compareVersions=require(_0xba46('0x4'));var exec=require(_0xba46('0x5'))[_0xba46('0x6')];var db=require(_0xba46('0x7'))['db'];var config=require(_0xba46('0x8'));var pm2=require('../../config/pm2');var logger=require(_0xba46('0x9'))(_0xba46('0xa'));var git=require(_0xba46('0xb'))(config[_0xba46('0xc')]);exports[_0xba46('0xd')]=function(_0x1f4096,_0x2fc7f5){var _0x513a63={'current':module[_0xba46('0xe')][_0xba46('0xf')],'phonebar':0x2};if(_0x1f4096[_0xba46('0x10')]&&_0x1f4096[_0xba46('0x10')][_0xba46('0x11')]){return git[_0xba46('0x12')]()['tags'](function(_0x44e7f2,_0x1f3658){_0x513a63['latest']=(_0x44e7f2?module[_0xba46('0xe')][_0xba46('0xf')]:_0x1f3658[_0xba46('0x11')])||_0xba46('0x13');return _0x2fc7f5[_0xba46('0x14')](0xc8)[_0xba46('0x15')](_0x513a63);});}else{return _0x2fc7f5['status'](0xc8)[_0xba46('0x15')](_0x513a63);}};exports[_0xba46('0x12')]=function(_0x45cd2a,_0x38d679){return git[_0xba46('0x12')]([_0xba46('0x16'),'master'],function(_0x4f4e78){if(_0x4f4e78){logger[_0xba46('0x17')](_0x4f4e78);return _0x38d679[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x4f4e78);}logger['info'](_0xba46('0x18'));return _0x38d679[_0xba46('0x14')](0xc8)['json']({'output':_0xba46('0x19')});});};exports['reset']=function(_0x2ece31,_0x75ae45){return git[_0xba46('0x1a')]([_0xba46('0x1b'),'FETCH_HEAD'],function(_0x5ac40e){if(_0x5ac40e){logger[_0xba46('0x17')](_0x5ac40e);return _0x75ae45[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x5ac40e);}logger[_0xba46('0x1c')](_0xba46('0x1d'));return _0x75ae45[_0xba46('0x14')](0xc8)[_0xba46('0x15')]({'output':'git\x20reset\x20--hard'});});};exports[_0xba46('0x1e')]=function(_0x22780f,_0x58ad6e){exec(_0xba46('0x1f'),function(_0x71f0e2,_0x3aaa65,_0x579494){logger['info'](_0x3aaa65);logger[_0xba46('0x1c')](_0x579494);if(_0x71f0e2){logger['error'](_0x71f0e2);return _0x58ad6e[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x71f0e2);}return _0x58ad6e['status'](0xc8)['json']({'output':_0x3aaa65});});};exports['restart']=function(_0x555f5f,_0x516ffb){return pm2[_0xba46('0x20')](_0xba46('0x21'))['then'](function(_0x4e59f2){logger[_0xba46('0x1c')](_0xba46('0x22'),_0x4e59f2);return _0x516ffb[_0xba46('0x14')](0xc8)[_0xba46('0x15')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0xba46('0x23')](function(_0x1aee85){logger[_0xba46('0x17')](_0x1aee85);return _0x516ffb['status'](0x1f4)['json'](_0x1aee85);});};exports['migrations']=function(_0x2af376,_0x413e7b){var _0x412af9=fs['readdirSync'](path['join'](config[_0xba46('0xc')],_0xba46('0x24'),'migrations'));var _0x4ecb72=[];for(var _0x3c061e=0x0;_0x3c061e<_0x412af9[_0xba46('0x25')];_0x3c061e++){var _0x4a357c=_0x412af9[_0x3c061e][_0xba46('0x26')](_0xba46('0x27'),'');if(compareVersions(module[_0xba46('0xe')][_0xba46('0xf')],_0x4a357c)===-0x1){_0x4ecb72[_0xba46('0x28')](_0x4a357c);}}if(_0x4ecb72['length']){var _0x19577c=_0x4ecb72[_0xba46('0x29')](compareVersions);var _0x47dfd0=new Umzug({'storage':_0xba46('0x2a'),'storageOptions':{'model':db[_0xba46('0x2b')],'modelName':'Migration','columnName':_0xba46('0xf')},'migrations':{'params':[db[_0xba46('0x2a')][_0xba46('0x2c')](),db[_0xba46('0x2a')]['constructor'],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['join'](config[_0xba46('0xc')],_0xba46('0x24'),_0xba46('0x2d')),'pattern':/\.js$/}});_0x47dfd0['up']({'migrations':_[_0xba46('0x2e')](_0x19577c,function(_0x59024d){return _0x59024d+'.js';})})[_0xba46('0x2f')](function(){return _0x413e7b[_0xba46('0x14')](0xc8)[_0xba46('0x15')]({'output':_0xba46('0x30')+module[_0xba46('0xe')]['version']+_0xba46('0x31')+_[_0xba46('0x32')](_0x19577c),'migrations':_[_0xba46('0x33')](_0x19577c)});})['catch'](function(_0x537eb3){if(_0x537eb3 instanceof db[_0xba46('0x2a')]['UniqueConstraintError']){return _0x413e7b['status'](0xc8)['json']({'output':_0xba46('0x34')});}else{return _0x413e7b[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x537eb3);}});}else{return _0x413e7b[_0xba46('0x14')](0xc8)['json']({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0xd1b2=['exports','query','tags','latest','2.0.0','json','status','fetch','origin','git\x20fetch','reset','--hard','FETCH_HEAD','error','info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','restart','motion2','then','pm2\x20restart\x20motion\x20%s','catch','migrations','readdirSync','join','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','Database\x20already\x20up-to-date','path','pkginfo','version','child_process','exec','../../mysqldb','../../config/environment','../../config/logger','root','index'];(function(_0x57f590,_0x27766a){var _0x39fbae=function(_0x58bcc4){while(--_0x58bcc4){_0x57f590['push'](_0x57f590['shift']());}};_0x39fbae(++_0x27766a);}(_0xd1b2,0x1ea));var _0x2d1b=function(_0x23f842,_0x270d27){_0x23f842=_0x23f842-0x0;var _0x1a4b62=_0xd1b2[_0x23f842];return _0x1a4b62;};'use strict';var Umzug=require('umzug');var path=require(_0x2d1b('0x0'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x2d1b('0x1'))(module,_0x2d1b('0x2'));var compareVersions=require('compare-versions');var exec=require(_0x2d1b('0x3'))[_0x2d1b('0x4')];var db=require(_0x2d1b('0x5'))['db'];var config=require(_0x2d1b('0x6'));var pm2=require('../../config/pm2');var logger=require(_0x2d1b('0x7'))('update');var git=require('simple-git')(config[_0x2d1b('0x8')]);exports[_0x2d1b('0x9')]=function(_0x2a6f87,_0xfb9c05){var _0x2730c7={'current':module[_0x2d1b('0xa')][_0x2d1b('0x2')],'phonebar':0x2};if(_0x2a6f87[_0x2d1b('0xb')]&&_0x2a6f87[_0x2d1b('0xb')]['latest']){return git['fetch']()[_0x2d1b('0xc')](function(_0x39c532,_0x231bf3){_0x2730c7[_0x2d1b('0xd')]=(_0x39c532?module[_0x2d1b('0xa')]['version']:_0x231bf3[_0x2d1b('0xd')])||_0x2d1b('0xe');return _0xfb9c05['status'](0xc8)[_0x2d1b('0xf')](_0x2730c7);});}else{return _0xfb9c05[_0x2d1b('0x10')](0xc8)['json'](_0x2730c7);}};exports[_0x2d1b('0x11')]=function(_0x3e1478,_0x37b7be){return git[_0x2d1b('0x11')]([_0x2d1b('0x12'),'master'],function(_0x9b6c52){if(_0x9b6c52){logger['error'](_0x9b6c52);return _0x37b7be[_0x2d1b('0x10')](0x1f4)[_0x2d1b('0xf')](_0x9b6c52);}logger['info'](_0x2d1b('0x13'));return _0x37b7be[_0x2d1b('0x10')](0xc8)[_0x2d1b('0xf')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x2d1b('0x14')]=function(_0x40f8df,_0x175a1a){return git[_0x2d1b('0x14')]([_0x2d1b('0x15'),_0x2d1b('0x16')],function(_0x55d20a){if(_0x55d20a){logger[_0x2d1b('0x17')](_0x55d20a);return _0x175a1a[_0x2d1b('0x10')](0x1f4)[_0x2d1b('0xf')](_0x55d20a);}logger[_0x2d1b('0x18')](_0x2d1b('0x19'));return _0x175a1a[_0x2d1b('0x10')](0xc8)['json']({'output':_0x2d1b('0x1a')});});};exports['pull']=function(_0x129b01,_0x18917b){exec('npm\x20install\x20--production',function(_0x385278,_0x558f35,_0x4ac7d4){logger[_0x2d1b('0x18')](_0x558f35);logger['info'](_0x4ac7d4);if(_0x385278){logger[_0x2d1b('0x17')](_0x385278);return _0x18917b['status'](0x1f4)[_0x2d1b('0xf')](_0x385278);}return _0x18917b[_0x2d1b('0x10')](0xc8)[_0x2d1b('0xf')]({'output':_0x558f35});});};exports[_0x2d1b('0x1b')]=function(_0x224d0b,_0x1452a2){return pm2[_0x2d1b('0x1b')](_0x2d1b('0x1c'))[_0x2d1b('0x1d')](function(_0x1cd3aa){logger['info'](_0x2d1b('0x1e'),_0x1cd3aa);return _0x1452a2[_0x2d1b('0x10')](0xc8)[_0x2d1b('0xf')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x2d1b('0x1f')](function(_0x2c55ce){logger[_0x2d1b('0x17')](_0x2c55ce);return _0x1452a2[_0x2d1b('0x10')](0x1f4)[_0x2d1b('0xf')](_0x2c55ce);});};exports[_0x2d1b('0x20')]=function(_0x118458,_0x729d36){var _0x397bdb=fs[_0x2d1b('0x21')](path[_0x2d1b('0x22')](config[_0x2d1b('0x8')],_0x2d1b('0x23'),_0x2d1b('0x20')));var _0x3028ca=[];for(var _0xca00c3=0x0;_0xca00c3<_0x397bdb[_0x2d1b('0x24')];_0xca00c3++){var _0x5b79d5=_0x397bdb[_0xca00c3][_0x2d1b('0x25')](_0x2d1b('0x26'),'');if(compareVersions(module[_0x2d1b('0xa')]['version'],_0x5b79d5)===-0x1){_0x3028ca[_0x2d1b('0x27')](_0x5b79d5);}}if(_0x3028ca['length']){var _0x124522=_0x3028ca[_0x2d1b('0x28')](compareVersions);var _0x461dac=new Umzug({'storage':_0x2d1b('0x29'),'storageOptions':{'model':db['Migration'],'modelName':_0x2d1b('0x2a'),'columnName':_0x2d1b('0x2')},'migrations':{'params':[db[_0x2d1b('0x29')][_0x2d1b('0x2b')](),db[_0x2d1b('0x29')][_0x2d1b('0x2c')],function(){throw new Error(_0x2d1b('0x2d'));}],'path':path[_0x2d1b('0x22')](config[_0x2d1b('0x8')],_0x2d1b('0x23'),_0x2d1b('0x20')),'pattern':/\.js$/}});_0x461dac['up']({'migrations':_['map'](_0x124522,function(_0x8628a2){return _0x8628a2+_0x2d1b('0x26');})})['then'](function(){return _0x729d36[_0x2d1b('0x10')](0xc8)[_0x2d1b('0xf')]({'output':_0x2d1b('0x2e')+module['exports'][_0x2d1b('0x2')]+_0x2d1b('0x2f')+_[_0x2d1b('0x30')](_0x124522),'migrations':_['join'](_0x124522)});})[_0x2d1b('0x1f')](function(_0x51a393){if(_0x51a393 instanceof db[_0x2d1b('0x29')]['UniqueConstraintError']){return _0x729d36[_0x2d1b('0x10')](0xc8)[_0x2d1b('0xf')]({'output':_0x2d1b('0x31')});}else{return _0x729d36[_0x2d1b('0x10')](0x1f4)[_0x2d1b('0xf')](_0x51a393);}});}else{return _0x729d36[_0x2d1b('0x10')](0xc8)[_0x2d1b('0xf')]({'output':_0x2d1b('0x31')});}};
\ No newline at end of file
index 4d26dfb..0f2078c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6675=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','post','create','update','delete','/:id','exports','multer','path','connect-timeout','fs-extra'];(function(_0x3eb5fb,_0x372fff){var _0x44e483=function(_0x13feae){while(--_0x13feae){_0x3eb5fb['push'](_0x3eb5fb['shift']());}};_0x44e483(++_0x372fff);}(_0x6675,0x15c));var _0x5667=function(_0x2b0bb4,_0x19adb6){_0x2b0bb4=_0x2b0bb4-0x0;var _0x262b70=_0x6675[_0x2b0bb4];return _0x262b70;};'use strict';var multer=require(_0x5667('0x0'));var util=require('util');var path=require(_0x5667('0x1'));var timeout=require(_0x5667('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5667('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5667('0x4'));var config=require(_0x5667('0x5'));var controller=require('./voiceAgentReport.controller');router['get']('/',auth[_0x5667('0x6')](),controller[_0x5667('0x7')]);router[_0x5667('0x8')]('/describe',auth[_0x5667('0x6')](),controller[_0x5667('0x9')]);router[_0x5667('0x8')]('/:id',auth[_0x5667('0x6')](),controller['show']);router[_0x5667('0xa')]('/',auth[_0x5667('0x6')](),controller[_0x5667('0xb')]);router['put']('/:id',auth[_0x5667('0x6')](),controller[_0x5667('0xc')]);router[_0x5667('0xd')](_0x5667('0xe'),auth[_0x5667('0x6')](),controller['destroy']);module[_0x5667('0xf')]=router;
\ No newline at end of file
+var _0x1a1f=['isAuthenticated','index','/describe','/:id','show','post','create','put','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get'];(function(_0x41b0a6,_0x5deda1){var _0x45c42e=function(_0x3a6e0e){while(--_0x3a6e0e){_0x41b0a6['push'](_0x41b0a6['shift']());}};_0x45c42e(++_0x5deda1);}(_0x1a1f,0x1d5));var _0xf1a1=function(_0x77263c,_0x23c411){_0x77263c=_0x77263c-0x0;var _0xb6136f=_0x1a1f[_0x77263c];return _0xb6136f;};'use strict';var multer=require(_0xf1a1('0x0'));var util=require(_0xf1a1('0x1'));var path=require(_0xf1a1('0x2'));var timeout=require(_0xf1a1('0x3'));var express=require(_0xf1a1('0x4'));var router=express['Router']();var fs_extra=require(_0xf1a1('0x5'));var auth=require(_0xf1a1('0x6'));var interaction=require(_0xf1a1('0x7'));var config=require(_0xf1a1('0x8'));var controller=require(_0xf1a1('0x9'));router[_0xf1a1('0xa')]('/',auth[_0xf1a1('0xb')](),controller[_0xf1a1('0xc')]);router['get'](_0xf1a1('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0xf1a1('0xa')](_0xf1a1('0xe'),auth['isAuthenticated'](),controller[_0xf1a1('0xf')]);router[_0xf1a1('0x10')]('/',auth[_0xf1a1('0xb')](),controller[_0xf1a1('0x11')]);router[_0xf1a1('0x12')](_0xf1a1('0xe'),auth[_0xf1a1('0xb')](),controller['update']);router['delete'](_0xf1a1('0xe'),auth[_0xf1a1('0xb')](),controller[_0xf1a1('0x13')]);module['exports']=router;
\ No newline at end of file
index 2d25515..7e5479f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4325=['sequelize','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x4325,0x1da));var _0x5432=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4325[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0x5432('0x0'));module[_0x5432('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x5432('0x2')]},'calleridnum':{'type':Sequelize[_0x5432('0x2')]},'calleridname':{'type':Sequelize[_0x5432('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x5432('0x2')]},'agentcalledAt':{'type':Sequelize[_0x5432('0x3')]},'agentconnectAt':{'type':Sequelize[_0x5432('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x5432('0x3')]},'agentdumpAt':{'type':Sequelize[_0x5432('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x5432('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x5432('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x5432('0x5')]},'agentacw':{'type':Sequelize[_0x5432('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x5432('0x5')]},'reason':{'type':Sequelize[_0x5432('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x5432('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x5432('0x2')]},'connectedlinenum':{'type':Sequelize[_0x5432('0x2')]},'connectedlinename':{'type':Sequelize[_0x5432('0x2')]},'language':{'type':Sequelize[_0x5432('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x5432('0x2')]},'priority':{'type':Sequelize[_0x5432('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x5432('0x5')]},'destchannelstatedesc':{'type':Sequelize[_0x5432('0x2')]},'destcalleridnum':{'type':Sequelize[_0x5432('0x2')]},'destcalleridname':{'type':Sequelize[_0x5432('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x5432('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x5432('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x5432('0x2')]},'destexten':{'type':Sequelize[_0x5432('0x2')]},'destpriority':{'type':Sequelize[_0x5432('0x2')]},'destuniqueid':{'type':Sequelize[_0x5432('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x5432('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x5432('0x2')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x5432('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x5432('0x2')]},'transferuniqueid':{'type':Sequelize[_0x5432('0x2')]},'agententerreason':{'type':Sequelize[_0x5432('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xde9f=['DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING'];(function(_0x26c323,_0x559fa7){var _0xaa4f94=function(_0x7b9080){while(--_0x7b9080){_0x26c323['push'](_0x26c323['shift']());}};_0xaa4f94(++_0x559fa7);}(_0xde9f,0x118));var _0xfde9=function(_0x9d14e3,_0x5a6072){_0x9d14e3=_0x9d14e3-0x0;var _0x19bf32=_0xde9f[_0x9d14e3];return _0x19bf32;};'use strict';var Sequelize=require(_0xfde9('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xfde9('0x1')]},'calleridnum':{'type':Sequelize[_0xfde9('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xfde9('0x1')]},'interface':{'type':Sequelize[_0xfde9('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xfde9('0x2')]},'agentconnectAt':{'type':Sequelize[_0xfde9('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xfde9('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xfde9('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xfde9('0x4')]},'agentacw':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xfde9('0x4')]},'reason':{'type':Sequelize[_0xfde9('0x1')]},'lastevent':{'type':Sequelize[_0xfde9('0x1')]},'channel':{'type':Sequelize[_0xfde9('0x1')]},'channelstate':{'type':Sequelize[_0xfde9('0x4')]},'channelstatedesc':{'type':Sequelize[_0xfde9('0x1')]},'connectedlinenum':{'type':Sequelize[_0xfde9('0x1')]},'connectedlinename':{'type':Sequelize[_0xfde9('0x1')]},'language':{'type':Sequelize[_0xfde9('0x1')]},'accountcode':{'type':Sequelize[_0xfde9('0x1')]},'context':{'type':Sequelize[_0xfde9('0x1')]},'exten':{'type':Sequelize[_0xfde9('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xfde9('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xfde9('0x1')]},'destcalleridnum':{'type':Sequelize[_0xfde9('0x1')]},'destcalleridname':{'type':Sequelize[_0xfde9('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xfde9('0x1')]},'destaccountcode':{'type':Sequelize[_0xfde9('0x1')]},'destcontext':{'type':Sequelize[_0xfde9('0x1')]},'destexten':{'type':Sequelize[_0xfde9('0x1')]},'destpriority':{'type':Sequelize[_0xfde9('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfde9('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xfde9('0x1')]},'transfer':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xfde9('0x5')},'transferexten':{'type':Sequelize[_0xfde9('0x1')]},'transferuniqueid':{'type':Sequelize[_0xfde9('0x1')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 13fef3d..9fc7fe3 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(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'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(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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 5382f13..776b1be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9576=['request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api'];(function(_0xf260d,_0x14205c){var _0xe2b85c=function(_0x128924){while(--_0x128924){_0xf260d['push'](_0xf260d['shift']());}};_0xe2b85c(++_0x14205c);}(_0x9576,0x182));var _0x6957=function(_0x43647f,_0xeb1445){_0x43647f=_0x43647f-0x0;var _0x25a27f=_0x9576[_0x43647f];return _0x25a27f;};'use strict';var _=require(_0x6957('0x0'));var util=require(_0x6957('0x1'));var logger=require(_0x6957('0x2'))(_0x6957('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6957('0x4'));var fs=require('fs');var path=require(_0x6957('0x5'));var rimraf=require(_0x6957('0x6'));var config=require(_0x6957('0x7'));var attributes=require(_0x6957('0x8'));module[_0x6957('0x9')]=function(_0x2eb79e,_0x49e08a){return _0x2eb79e[_0x6957('0xa')](_0x6957('0xb'),attributes,{'tableName':_0x6957('0xc'),'paranoid':![],'indexes':[{'fields':[_0x6957('0xd'),_0x6957('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf5a7=['../../config/environment','./voiceAgentReport.attributes','exports','define','report_agent','uniqueid','destuniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x34d70e,_0x217f7a){var _0x1367c1=function(_0x441c87){while(--_0x441c87){_0x34d70e['push'](_0x34d70e['shift']());}};_0x1367c1(++_0x217f7a);}(_0xf5a7,0x133));var _0x7f5a=function(_0x1e340b,_0x495f8b){_0x1e340b=_0x1e340b-0x0;var _0x787512=_0xf5a7[_0x1e340b];return _0x787512;};'use strict';var _=require(_0x7f5a('0x0'));var util=require(_0x7f5a('0x1'));var logger=require('../../config/logger')(_0x7f5a('0x2'));var moment=require(_0x7f5a('0x3'));var BPromise=require(_0x7f5a('0x4'));var rp=require(_0x7f5a('0x5'));var fs=require('fs');var path=require(_0x7f5a('0x6'));var rimraf=require(_0x7f5a('0x7'));var config=require(_0x7f5a('0x8'));var attributes=require(_0x7f5a('0x9'));module[_0x7f5a('0xa')]=function(_0x520bf9,_0x2808f2){return _0x520bf9[_0x7f5a('0xb')]('VoiceAgentReport',attributes,{'tableName':_0x7f5a('0xc'),'paranoid':![],'indexes':[{'fields':[_0x7f5a('0xd'),_0x7f5a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 6bbfe9c..458c609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d27=['debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateVoiceAgentReport','create','body','options','raw','UpdateVoiceAgentReport','VoiceAgentReport','update','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent'];(function(_0x6f2eb8,_0x317f95){var _0x1ad3d6=function(_0x3f0a19){while(--_0x3f0a19){_0x6f2eb8['push'](_0x6f2eb8['shift']());}};_0x1ad3d6(++_0x317f95);}(_0x1d27,0xa7));var _0x71d2=function(_0x53d8e6,_0x30de3e){_0x53d8e6=_0x53d8e6-0x0;var _0x8b5fe2=_0x1d27[_0x53d8e6];return _0x8b5fe2;};'use strict';var _=require(_0x71d2('0x0'));var util=require(_0x71d2('0x1'));var moment=require(_0x71d2('0x2'));var BPromise=require(_0x71d2('0x3'));var rs=require(_0x71d2('0x4'));var fs=require('fs');var Redis=require(_0x71d2('0x5'));var db=require(_0x71d2('0x6'))['db'];var utils=require(_0x71d2('0x7'));var logger=require(_0x71d2('0x8'))(_0x71d2('0x9'));var config=require(_0x71d2('0xa'));var jayson=require(_0x71d2('0xb'));var client=jayson[_0x71d2('0xc')][_0x71d2('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x1c0541,_0x5a8b16,_0xe00585){return new BPromise(function(_0xe2a843,_0x4167aa){return client[_0x71d2('0xe')](_0x1c0541,_0xe00585)[_0x71d2('0xf')](function(_0x4ff17d){logger['info'](_0x71d2('0x10'),_0x5a8b16,_0x71d2('0x11'));logger[_0x71d2('0x12')](_0x71d2('0x13'),_0x5a8b16,_0x71d2('0x11'),JSON[_0x71d2('0x14')](_0x4ff17d));if(_0x4ff17d[_0x71d2('0x15')]){if(_0x4ff17d[_0x71d2('0x15')][_0x71d2('0x16')]===0x1f4){logger[_0x71d2('0x15')](_0x71d2('0x10'),_0x5a8b16,_0x4ff17d['error']['message']);return _0x4167aa(_0x4ff17d[_0x71d2('0x15')][_0x71d2('0x17')]);}logger[_0x71d2('0x15')](_0x71d2('0x10'),_0x5a8b16,_0x4ff17d[_0x71d2('0x15')]['message']);return _0xe2a843(_0x4ff17d[_0x71d2('0x15')][_0x71d2('0x17')]);}else{logger[_0x71d2('0x18')]('VoiceAgentReport,\x20%s,\x20%s',_0x5a8b16,_0x71d2('0x11'));_0xe2a843(_0x4ff17d[_0x71d2('0x19')]['message']);}})[_0x71d2('0x1a')](function(_0x2050b5){logger[_0x71d2('0x15')]('VoiceAgentReport,\x20%s,\x20%s',_0x5a8b16,_0x2050b5);_0x4167aa(_0x2050b5);});});}exports[_0x71d2('0x1b')]=function(_0x49e9c2){var _0x42b6ce=this;return new Promise(function(_0x2f6dd8,_0x452cc2){return db['VoiceAgentReport'][_0x71d2('0x1c')](_0x49e9c2[_0x71d2('0x1d')],{'raw':_0x49e9c2[_0x71d2('0x1e')]?_0x49e9c2[_0x71d2('0x1e')][_0x71d2('0x1f')]===undefined?!![]:![]:!![]})[_0x71d2('0xf')](function(_0x2f4375){logger[_0x71d2('0x18')](_0x71d2('0x1b'),_0x49e9c2);logger[_0x71d2('0x12')](_0x71d2('0x1b'),_0x49e9c2,JSON[_0x71d2('0x14')](_0x2f4375));_0x2f6dd8(_0x2f4375);})[_0x71d2('0x1a')](function(_0x1870be){logger[_0x71d2('0x15')](_0x71d2('0x1b'),_0x1870be[_0x71d2('0x17')],_0x49e9c2);_0x452cc2(_0x42b6ce['error'](0x1f4,_0x1870be[_0x71d2('0x17')]));});});};exports[_0x71d2('0x20')]=function(_0x105973){var _0x372294=this;return new Promise(function(_0x31b992,_0x206cce){return db[_0x71d2('0x21')][_0x71d2('0x22')](_0x105973[_0x71d2('0x1d')],{'raw':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')]['where']||null:null,'attributes':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')][_0x71d2('0x23')]||null:null,'limit':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')][_0x71d2('0x24')]||null:null})['then'](function(_0x45630d){logger['info'](_0x71d2('0x20'),_0x105973);logger[_0x71d2('0x12')]('UpdateVoiceAgentReport',_0x105973,JSON[_0x71d2('0x14')](_0x45630d));_0x31b992(_0x45630d);})['catch'](function(_0x33c884){logger[_0x71d2('0x15')](_0x71d2('0x20'),_0x33c884[_0x71d2('0x17')],_0x105973);_0x206cce(_0x372294[_0x71d2('0x15')](0x1f4,_0x33c884[_0x71d2('0x17')]));});});};
\ No newline at end of file
+var _0x06f9=['code','error','message','result','catch','VoiceAgentReport','create','body','options','CreateVoiceAgentReport','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4afac5,_0x1ab4ed){var _0x2404b3=function(_0x5c700b){while(--_0x5c700b){_0x4afac5['push'](_0x4afac5['shift']());}};_0x2404b3(++_0x1ab4ed);}(_0x06f9,0x104));var _0x906f=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x06f9[_0x15bc81];return _0x59440e;};'use strict';var _=require(_0x906f('0x0'));var util=require(_0x906f('0x1'));var moment=require(_0x906f('0x2'));var BPromise=require(_0x906f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x906f('0x4'));var db=require(_0x906f('0x5'))['db'];var utils=require(_0x906f('0x6'));var logger=require(_0x906f('0x7'))(_0x906f('0x8'));var config=require(_0x906f('0x9'));var jayson=require(_0x906f('0xa'));var client=jayson[_0x906f('0xb')][_0x906f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3423f2,_0x45adaf,_0x26ff18){return new BPromise(function(_0x367894,_0x65497f){return client['request'](_0x3423f2,_0x26ff18)[_0x906f('0xd')](function(_0x52ada7){logger[_0x906f('0xe')](_0x906f('0xf'),_0x45adaf,_0x906f('0x10'));logger[_0x906f('0x11')](_0x906f('0x12'),_0x45adaf,_0x906f('0x10'),JSON[_0x906f('0x13')](_0x52ada7));if(_0x52ada7['error']){if(_0x52ada7['error'][_0x906f('0x14')]===0x1f4){logger[_0x906f('0x15')](_0x906f('0xf'),_0x45adaf,_0x52ada7[_0x906f('0x15')][_0x906f('0x16')]);return _0x65497f(_0x52ada7[_0x906f('0x15')]['message']);}logger[_0x906f('0x15')](_0x906f('0xf'),_0x45adaf,_0x52ada7[_0x906f('0x15')][_0x906f('0x16')]);return _0x367894(_0x52ada7[_0x906f('0x15')][_0x906f('0x16')]);}else{logger[_0x906f('0xe')](_0x906f('0xf'),_0x45adaf,_0x906f('0x10'));_0x367894(_0x52ada7[_0x906f('0x17')]['message']);}})[_0x906f('0x18')](function(_0x3e2d5a){logger[_0x906f('0x15')]('VoiceAgentReport,\x20%s,\x20%s',_0x45adaf,_0x3e2d5a);_0x65497f(_0x3e2d5a);});});}exports['CreateVoiceAgentReport']=function(_0x1bf44f){var _0x24419b=this;return new Promise(function(_0x149356,_0x4a36dc){return db[_0x906f('0x19')][_0x906f('0x1a')](_0x1bf44f[_0x906f('0x1b')],{'raw':_0x1bf44f[_0x906f('0x1c')]?_0x1bf44f[_0x906f('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x906f('0xd')](function(_0x223665){logger[_0x906f('0xe')](_0x906f('0x1d'),_0x1bf44f);logger[_0x906f('0x11')]('CreateVoiceAgentReport',_0x1bf44f,JSON[_0x906f('0x13')](_0x223665));_0x149356(_0x223665);})[_0x906f('0x18')](function(_0x314a18){logger[_0x906f('0x15')](_0x906f('0x1d'),_0x314a18[_0x906f('0x16')],_0x1bf44f);_0x4a36dc(_0x24419b[_0x906f('0x15')](0x1f4,_0x314a18[_0x906f('0x16')]));});});};exports[_0x906f('0x1e')]=function(_0x59fa73){var _0xf4fda8=this;return new Promise(function(_0x557eea,_0x1cea5b){return db[_0x906f('0x19')][_0x906f('0x1f')](_0x59fa73[_0x906f('0x1b')],{'raw':_0x59fa73[_0x906f('0x1c')]?_0x59fa73[_0x906f('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59fa73[_0x906f('0x1c')]?_0x59fa73['options'][_0x906f('0x20')]||null:null,'attributes':_0x59fa73['options']?_0x59fa73[_0x906f('0x1c')][_0x906f('0x21')]||null:null,'limit':_0x59fa73['options']?_0x59fa73['options'][_0x906f('0x22')]||null:null})['then'](function(_0x324fc8){logger[_0x906f('0xe')]('UpdateVoiceAgentReport',_0x59fa73);logger[_0x906f('0x11')]('UpdateVoiceAgentReport',_0x59fa73,JSON[_0x906f('0x13')](_0x324fc8));_0x557eea(_0x324fc8);})[_0x906f('0x18')](function(_0x52e0ef){logger[_0x906f('0x15')]('UpdateVoiceAgentReport',_0x52e0ef[_0x906f('0x16')],_0x59fa73);_0x1cea5b(_0xf4fda8['error'](0x1f4,_0x52e0ef[_0x906f('0x16')]));});});};
\ No newline at end of file
index da4ad86..b75f166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe015=['../../components/interaction/service','../../config/environment','./voiceCallReport.controller','isAuthenticated','index','describe','get','/:id','show','put','update','multer','util','path','Router','../../components/auth/service'];(function(_0x222e21,_0x2e4242){var _0x4d2a68=function(_0x456282){while(--_0x456282){_0x222e21['push'](_0x222e21['shift']());}};_0x4d2a68(++_0x2e4242);}(_0xe015,0x13b));var _0x5e01=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xe015[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require(_0x5e01('0x0'));var util=require(_0x5e01('0x1'));var path=require(_0x5e01('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5e01('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5e01('0x4'));var interaction=require(_0x5e01('0x5'));var config=require(_0x5e01('0x6'));var controller=require(_0x5e01('0x7'));router['get']('/',auth[_0x5e01('0x8')](),controller[_0x5e01('0x9')]);router['get']('/describe',auth[_0x5e01('0x8')](),controller[_0x5e01('0xa')]);router[_0x5e01('0xb')](_0x5e01('0xc'),auth[_0x5e01('0x8')](),controller[_0x5e01('0xd')]);router['post']('/',auth[_0x5e01('0x8')](),controller['create']);router[_0x5e01('0xe')]('/:id',auth[_0x5e01('0x8')](),controller[_0x5e01('0xf')]);router['delete'](_0x5e01('0xc'),auth[_0x5e01('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x98a8=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports'];(function(_0x551e6b,_0x378961){var _0x5e35cb=function(_0x11f67e){while(--_0x11f67e){_0x551e6b['push'](_0x551e6b['shift']());}};_0x5e35cb(++_0x378961);}(_0x98a8,0x12c));var _0x898a=function(_0xe8044,_0x2106d1){_0xe8044=_0xe8044-0x0;var _0x5d0a43=_0x98a8[_0xe8044];return _0x5d0a43;};'use strict';var multer=require(_0x898a('0x0'));var util=require(_0x898a('0x1'));var path=require(_0x898a('0x2'));var timeout=require(_0x898a('0x3'));var express=require(_0x898a('0x4'));var router=express[_0x898a('0x5')]();var fs_extra=require(_0x898a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x898a('0x7'));var config=require(_0x898a('0x8'));var controller=require(_0x898a('0x9'));router[_0x898a('0xa')]('/',auth[_0x898a('0xb')](),controller['index']);router[_0x898a('0xa')]('/describe',auth[_0x898a('0xb')](),controller['describe']);router[_0x898a('0xa')](_0x898a('0xc'),auth[_0x898a('0xb')](),controller[_0x898a('0xd')]);router[_0x898a('0xe')]('/',auth[_0x898a('0xb')](),controller[_0x898a('0xf')]);router[_0x898a('0x10')](_0x898a('0xc'),auth['isAuthenticated'](),controller[_0x898a('0x11')]);router['delete'](_0x898a('0xc'),auth['isAuthenticated'](),controller[_0x898a('0x12')]);module[_0x898a('0x13')]=router;
\ No newline at end of file
index bfedbb9..413c78a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56c=['dialer','TEXT','DATE','INTEGER','exports','STRING','ENUM','inbound','outbound','inbound-fax','outbound-fax'];(function(_0x3f5af3,_0x27212a){var _0x3bb9c1=function(_0x2add28){while(--_0x2add28){_0x3f5af3['push'](_0x3f5af3['shift']());}};_0x3bb9c1(++_0x27212a);}(_0xf56c,0x67));var _0xcf56=function(_0x4ce684,_0x4b9f3e){_0x4ce684=_0x4ce684-0x0;var _0x423a96=_0xf56c[_0x4ce684];return _0x423a96;};'use strict';var Sequelize=require('sequelize');module[_0xcf56('0x0')]={'uniqueid':{'type':Sequelize[_0xcf56('0x1')]},'type':{'type':Sequelize[_0xcf56('0x2')](_0xcf56('0x3'),'internal',_0xcf56('0x4'),_0xcf56('0x5'),_0xcf56('0x6'),_0xcf56('0x7'))},'tag':{'type':Sequelize[_0xcf56('0x1')]},'accountcode':{'type':Sequelize[_0xcf56('0x1')]},'source':{'type':Sequelize[_0xcf56('0x1')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0xcf56('0x1')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xcf56('0x1')]},'destinationchannel':{'type':Sequelize[_0xcf56('0x1')]},'lastapplication':{'type':Sequelize[_0xcf56('0x1')]},'lastdata':{'type':Sequelize[_0xcf56('0x8')]},'starttime':{'type':Sequelize[_0xcf56('0x9')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xcf56('0x9')]},'endtime':{'type':Sequelize[_0xcf56('0x9')]},'duration':{'type':Sequelize[_0xcf56('0xa')]},'billableseconds':{'type':Sequelize[_0xcf56('0xa')]},'mohtime':{'type':Sequelize[_0xcf56('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xcf56('0x1')]},'amaflags':{'type':Sequelize[_0xcf56('0x1')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0xcf56('0x1')]},'userSecondDisposition':{'type':Sequelize[_0xcf56('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xcf56('0x1')]},'prefix':{'type':Sequelize[_0xcf56('0x1')]},'routeid':{'type':Sequelize[_0xcf56('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd448=['internal','outbound','inbound-fax','outbound-fax','dialer','DATE','INTEGER','exports','STRING','ENUM','inbound'];(function(_0x4cb169,_0x204f7f){var _0x318884=function(_0x38fab3){while(--_0x38fab3){_0x4cb169['push'](_0x4cb169['shift']());}};_0x318884(++_0x204f7f);}(_0xd448,0x172));var _0x8d44=function(_0x190955,_0x4e4272){_0x190955=_0x190955-0x0;var _0x1fe69b=_0xd448[_0x190955];return _0x1fe69b;};'use strict';var Sequelize=require('sequelize');module[_0x8d44('0x0')]={'uniqueid':{'type':Sequelize[_0x8d44('0x1')]},'type':{'type':Sequelize[_0x8d44('0x2')](_0x8d44('0x3'),_0x8d44('0x4'),_0x8d44('0x5'),_0x8d44('0x6'),_0x8d44('0x7'),_0x8d44('0x8'))},'tag':{'type':Sequelize[_0x8d44('0x1')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0x8d44('0x1')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x8d44('0x1')]},'channel':{'type':Sequelize[_0x8d44('0x1')]},'destinationchannel':{'type':Sequelize[_0x8d44('0x1')]},'lastapplication':{'type':Sequelize[_0x8d44('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x8d44('0x9')]},'systemanswertime':{'type':Sequelize[_0x8d44('0x9')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize[_0x8d44('0xa')]},'billableseconds':{'type':Sequelize[_0x8d44('0xa')]},'mohtime':{'type':Sequelize[_0x8d44('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x8d44('0x1')]},'userfield':{'type':Sequelize[_0x8d44('0x1')]},'userDisposition':{'type':Sequelize[_0x8d44('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x8d44('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x8d44('0x1')]},'prefix':{'type':Sequelize[_0x8d44('0x1')]},'routeid':{'type':Sequelize[_0x8d44('0xa')]},'sipcallid':{'type':Sequelize[_0x8d44('0x1')]}};
\ No newline at end of file
index f04c7b9..44b2e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['pick','filter','merge','options','VoiceCallReport','then','includeAll','include','fullname','alias','User','findAll','rows','catch','show','params','keys','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0x2ef3,0xba));var _0x32ef=function(_0x7fa9a8,_0x6fb420){_0x7fa9a8=_0x7fa9a8-0x0;var _0x369929=_0x2ef3[_0x7fa9a8];return _0x369929;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['VoiceCallReport'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'attributes':['id',_0x32ef('0x27'),_0x32ef('0x41'),_0x32ef('0x42')],'model':db[_0x32ef('0x43')],'as':'User'}];}return db['VoiceCallReport'][_0x32ef('0x44')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x2a33dd){_0x3c569d[_0x32ef('0x45')]=_0x2a33dd;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x46')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x47')]=function(_0x5d2f06,_0x4744ba){var _0x4bc5bc={'raw':!![],'where':{'id':_0x5d2f06[_0x32ef('0x48')]['id']}},_0xcb3c08={};_0xcb3c08[_0x32ef('0x2e')]=_[_0x32ef('0x49')](db[_0x32ef('0x3d')][_0x32ef('0x2a')]);_0xcb3c08[_0x32ef('0x2f')]=_[_0x32ef('0x49')](_0x5d2f06[_0x32ef('0x2f')]);_0xcb3c08[_0x32ef('0x30')]=_['intersection'](_0xcb3c08[_0x32ef('0x2e')],_0xcb3c08['query']);_0x4bc5bc[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0xcb3c08[_0x32ef('0x2e')],qs['fields'](_0x5d2f06[_0x32ef('0x2f')][_0x32ef('0x33')]));_0x4bc5bc[_0x32ef('0x31')]=_0x4bc5bc[_0x32ef('0x31')][_0x32ef('0x34')]?_0x4bc5bc[_0x32ef('0x31')]:_0xcb3c08[_0x32ef('0x2e')];if(_0x5d2f06['query']['includeAll']){_0x4bc5bc[_0x32ef('0x40')]=[{'all':!![]}];}_0x4bc5bc=_[_0x32ef('0x3b')]({},_0x4bc5bc,_0x5d2f06[_0x32ef('0x3c')]);return db[_0x32ef('0x3d')][_0x32ef('0x4a')](_0x4bc5bc)[_0x32ef('0x3e')](handleEntityNotFound(_0x4744ba,null))[_0x32ef('0x3e')](respondWithResult(_0x4744ba,null))[_0x32ef('0x46')](handleError(_0x4744ba,null));};exports[_0x32ef('0x4b')]=function(_0x1ebedf,_0x35a294){return db[_0x32ef('0x3d')][_0x32ef('0x4b')](_0x1ebedf['body'],{})[_0x32ef('0x3e')](respondWithResult(_0x35a294,0xc9))[_0x32ef('0x46')](handleError(_0x35a294,null));};exports[_0x32ef('0x4c')]=function(_0xd42609,_0x1cc9f3){return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'id':_0xd42609[_0x32ef('0x48')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x1cc9f3,null))[_0x32ef('0x3e')](removeEntity(_0x1cc9f3,null))[_0x32ef('0x46')](handleError(_0x1cc9f3,null));};exports[_0x32ef('0x4d')]=function(_0x272377,_0x326445){return db[_0x32ef('0x3d')][_0x32ef('0x4d')]()[_0x32ef('0x3e')](respondWithResult(_0x326445,null))[_0x32ef('0x46')](handleError(_0x326445,null));};exports['update']=function(_0x515ac9,_0x179c2f){if(_0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')]){delete _0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')];}return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'uniqueid':_0x515ac9[_0x32ef('0x48')]['id'],'UserId':{'$or':[null,_0x515ac9[_0x32ef('0x50')]['id']]}}})[_0x32ef('0x3e')](handleEntityNotFound(_0x179c2f,null))[_0x32ef('0x3e')](saveUpdates(_0x515ac9['body'],null))[_0x32ef('0x3e')](respondWithResult(_0x179c2f,null))[_0x32ef('0x46')](handleError(_0x179c2f,null));};
\ No newline at end of file
+var _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f66,0x1a0));var _0x65f6=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x5f66[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
index c294b02..5bd4f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b00=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport'];(function(_0x38e5b0,_0x358b34){var _0x31a65a=function(_0x243ea1){while(--_0x243ea1){_0x38e5b0['push'](_0x38e5b0['shift']());}};_0x31a65a(++_0x358b34);}(_0x7b00,0x135));var _0x07b0=function(_0x504a5d,_0x26c3d1){_0x504a5d=_0x504a5d-0x0;var _0x1750f0=_0x7b00[_0x504a5d];return _0x1750f0;};'use strict';var _=require(_0x07b0('0x0'));var util=require(_0x07b0('0x1'));var logger=require(_0x07b0('0x2'))(_0x07b0('0x3'));var moment=require(_0x07b0('0x4'));var BPromise=require(_0x07b0('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x07b0('0x6'));var rimraf=require(_0x07b0('0x7'));var config=require(_0x07b0('0x8'));var attributes=require(_0x07b0('0x9'));module[_0x07b0('0xa')]=function(_0x26b098,_0x4c390c){return _0x26b098[_0x07b0('0xb')](_0x07b0('0xc'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x07b0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb75=['path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x149b82,_0x15af5d){var _0x1952c9=function(_0x452b9b){while(--_0x452b9b){_0x149b82['push'](_0x149b82['shift']());}};_0x1952c9(++_0x15af5d);}(_0xdb75,0xae));var _0x5db7=function(_0x3682ad,_0x3d954f){_0x3682ad=_0x3682ad-0x0;var _0x212ff3=_0xdb75[_0x3682ad];return _0x212ff3;};'use strict';var _=require(_0x5db7('0x0'));var util=require(_0x5db7('0x1'));var logger=require(_0x5db7('0x2'))(_0x5db7('0x3'));var moment=require(_0x5db7('0x4'));var BPromise=require('bluebird');var rp=require(_0x5db7('0x5'));var fs=require('fs');var path=require(_0x5db7('0x6'));var rimraf=require(_0x5db7('0x7'));var config=require(_0x5db7('0x8'));var attributes=require(_0x5db7('0x9'));module[_0x5db7('0xa')]=function(_0x4a14be,_0x3344ef){return _0x4a14be[_0x5db7('0xb')](_0x5db7('0xc'),attributes,{'tableName':_0x5db7('0xd'),'paranoid':![],'indexes':[{'fields':[_0x5db7('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index a63fcb2..c708789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38a2=['UpdateVoiceCallReport','update','body','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','VoiceCallReport','findAll','options','where','attributes','limit','include','map','model','GetVoiceCallReport','CreateVoiceCallReport','raw','stringify'];(function(_0x2eb04a,_0x9443bf){var _0x57665b=function(_0xc0ed17){while(--_0xc0ed17){_0x2eb04a['push'](_0x2eb04a['shift']());}};_0x57665b(++_0x9443bf);}(_0x38a2,0x11b));var _0x238a=function(_0x487f81,_0x40d371){_0x487f81=_0x487f81-0x0;var _0x269079=_0x38a2[_0x487f81];return _0x269079;};'use strict';var _=require(_0x238a('0x0'));var util=require(_0x238a('0x1'));var moment=require('moment');var BPromise=require(_0x238a('0x2'));var rs=require(_0x238a('0x3'));var fs=require('fs');var Redis=require(_0x238a('0x4'));var db=require(_0x238a('0x5'))['db'];var utils=require(_0x238a('0x6'));var logger=require(_0x238a('0x7'))(_0x238a('0x8'));var config=require(_0x238a('0x9'));var jayson=require(_0x238a('0xa'));var client=jayson[_0x238a('0xb')][_0x238a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5f4383,_0x13de53,_0x5c3a95){return new BPromise(function(_0x5078b3,_0x49fbe5){return client[_0x238a('0xd')](_0x5f4383,_0x5c3a95)[_0x238a('0xe')](function(_0x4ce6ae){logger[_0x238a('0xf')](_0x238a('0x10'),_0x13de53,_0x238a('0x11'));logger[_0x238a('0x12')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x13de53,_0x238a('0x11'),JSON['stringify'](_0x4ce6ae));if(_0x4ce6ae[_0x238a('0x13')]){if(_0x4ce6ae[_0x238a('0x13')][_0x238a('0x14')]===0x1f4){logger[_0x238a('0x13')](_0x238a('0x10'),_0x13de53,_0x4ce6ae[_0x238a('0x13')][_0x238a('0x15')]);return _0x49fbe5(_0x4ce6ae[_0x238a('0x13')][_0x238a('0x15')]);}logger[_0x238a('0x13')]('VoiceCallReport,\x20%s,\x20%s',_0x13de53,_0x4ce6ae[_0x238a('0x13')]['message']);return _0x5078b3(_0x4ce6ae[_0x238a('0x13')]['message']);}else{logger[_0x238a('0xf')](_0x238a('0x10'),_0x13de53,_0x238a('0x11'));_0x5078b3(_0x4ce6ae[_0x238a('0x16')][_0x238a('0x15')]);}})[_0x238a('0x17')](function(_0x214f57){logger[_0x238a('0x13')](_0x238a('0x10'),_0x13de53,_0x214f57);_0x49fbe5(_0x214f57);});});}exports['GetVoiceCallReport']=function(_0x10f374){var _0x461572=this;return new Promise(function(_0x5b976a,_0x20036a){return db[_0x238a('0x18')][_0x238a('0x19')]({'raw':_0x10f374[_0x238a('0x1a')]?_0x10f374['options']['raw']===undefined?!![]:![]:!![],'where':_0x10f374['options']?_0x10f374[_0x238a('0x1a')][_0x238a('0x1b')]||null:null,'attributes':_0x10f374[_0x238a('0x1a')]?_0x10f374['options'][_0x238a('0x1c')]||null:null,'limit':_0x10f374['options']?_0x10f374['options'][_0x238a('0x1d')]||null:null,'include':_0x10f374[_0x238a('0x1a')]?_0x10f374[_0x238a('0x1a')][_0x238a('0x1e')]?_[_0x238a('0x1f')](_0x10f374['options']['include'],function(_0x23e952){return{'model':db[_0x23e952[_0x238a('0x20')]],'as':_0x23e952['as'],'attributes':_0x23e952['attributes'],'include':_0x23e952[_0x238a('0x1e')]?_[_0x238a('0x1f')](_0x23e952[_0x238a('0x1e')],function(_0x424896){return{'model':db[_0x424896[_0x238a('0x20')]],'as':_0x424896['as'],'attributes':_0x424896['attributes'],'include':_0x424896[_0x238a('0x1e')]?_[_0x238a('0x1f')](_0x424896[_0x238a('0x1e')],function(_0x4a85a0){return{'model':db[_0x4a85a0['model']],'as':_0x4a85a0['as'],'attributes':_0x4a85a0['attributes']};}):[]};}):[]};}):[]:[]})[_0x238a('0xe')](function(_0x1263e2){logger[_0x238a('0xf')]('GetVoiceCallReport',_0x10f374);logger[_0x238a('0x12')](_0x238a('0x21'),_0x10f374,JSON['stringify'](_0x1263e2));_0x5b976a(_0x1263e2);})[_0x238a('0x17')](function(_0xfac9c5){logger[_0x238a('0x13')]('GetVoiceCallReport',_0xfac9c5[_0x238a('0x15')],_0x10f374);_0x20036a(_0x461572['error'](0x1f4,_0xfac9c5[_0x238a('0x15')]));});});};exports[_0x238a('0x22')]=function(_0x4b3918){var _0x4657a9=this;return new Promise(function(_0x7536b8,_0x53f544){return db['VoiceCallReport']['create'](_0x4b3918['body'],{'raw':_0x4b3918[_0x238a('0x1a')]?_0x4b3918[_0x238a('0x1a')][_0x238a('0x23')]===undefined?!![]:![]:!![]})[_0x238a('0xe')](function(_0x125eb0){logger[_0x238a('0xf')]('CreateVoiceCallReport',_0x4b3918);logger[_0x238a('0x12')]('CreateVoiceCallReport',_0x4b3918,JSON[_0x238a('0x24')](_0x125eb0));_0x7536b8(_0x125eb0);})[_0x238a('0x17')](function(_0x3a828b){logger[_0x238a('0x13')](_0x238a('0x22'),_0x3a828b[_0x238a('0x15')],_0x4b3918);_0x53f544(_0x4657a9[_0x238a('0x13')](0x1f4,_0x3a828b[_0x238a('0x15')]));});});};exports[_0x238a('0x25')]=function(_0x5564a1){var _0x5f340f=this;return new Promise(function(_0x104760,_0x488402){return db['VoiceCallReport'][_0x238a('0x26')](_0x5564a1[_0x238a('0x27')],{'raw':_0x5564a1[_0x238a('0x1a')]?_0x5564a1['options'][_0x238a('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5564a1['options']?_0x5564a1['options']['where']||null:null,'attributes':_0x5564a1[_0x238a('0x1a')]?_0x5564a1[_0x238a('0x1a')][_0x238a('0x1c')]||null:null,'limit':_0x5564a1[_0x238a('0x1a')]?_0x5564a1[_0x238a('0x1a')]['limit']||null:null})[_0x238a('0xe')](function(_0x166f59){logger['info'](_0x238a('0x25'),_0x5564a1);logger[_0x238a('0x12')](_0x238a('0x25'),_0x5564a1,JSON['stringify'](_0x166f59));_0x104760(_0x166f59);})[_0x238a('0x17')](function(_0x532b6f){logger[_0x238a('0x13')](_0x238a('0x25'),_0x532b6f[_0x238a('0x15')],_0x5564a1);_0x488402(_0x5f340f[_0x238a('0x13')](0x1f4,_0x532b6f[_0x238a('0x15')]));});});};
\ No newline at end of file
+var _0x762d=['include','then','stringify','VoiceCallReport','create','body','CreateVoiceCallReport','UpdateVoiceCallReport','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','VoiceCallReport,\x20%s,\x20%s','info','catch','GetVoiceCallReport','options','raw','where','attributes','limit','map','model'];(function(_0x2cdccd,_0x213fe8){var _0x56a145=function(_0x4fa90e){while(--_0x4fa90e){_0x2cdccd['push'](_0x2cdccd['shift']());}};_0x56a145(++_0x213fe8);}(_0x762d,0x104));var _0xd762=function(_0x506786,_0x3d7ec5){_0x506786=_0x506786-0x0;var _0x898449=_0x762d[_0x506786];return _0x898449;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd762('0x0'));var BPromise=require(_0xd762('0x1'));var rs=require(_0xd762('0x2'));var fs=require('fs');var Redis=require(_0xd762('0x3'));var db=require(_0xd762('0x4'))['db'];var utils=require(_0xd762('0x5'));var logger=require(_0xd762('0x6'))('rpc');var config=require(_0xd762('0x7'));var jayson=require(_0xd762('0x8'));var client=jayson['client'][_0xd762('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e1357,_0x538de1,_0x2f00f5){return new BPromise(function(_0xaae3eb,_0x4271b6){return client[_0xd762('0xa')](_0x5e1357,_0x2f00f5)['then'](function(_0x1fdeeb){logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x538de1,'request\x20sent');logger[_0xd762('0xb')](_0xd762('0xc'),_0x538de1,_0xd762('0xd'),JSON['stringify'](_0x1fdeeb));if(_0x1fdeeb[_0xd762('0xe')]){if(_0x1fdeeb[_0xd762('0xe')][_0xd762('0xf')]===0x1f4){logger[_0xd762('0xe')]('VoiceCallReport,\x20%s,\x20%s',_0x538de1,_0x1fdeeb['error'][_0xd762('0x10')]);return _0x4271b6(_0x1fdeeb[_0xd762('0xe')][_0xd762('0x10')]);}logger[_0xd762('0xe')](_0xd762('0x11'),_0x538de1,_0x1fdeeb['error'][_0xd762('0x10')]);return _0xaae3eb(_0x1fdeeb[_0xd762('0xe')][_0xd762('0x10')]);}else{logger[_0xd762('0x12')](_0xd762('0x11'),_0x538de1,_0xd762('0xd'));_0xaae3eb(_0x1fdeeb['result'][_0xd762('0x10')]);}})[_0xd762('0x13')](function(_0x39c4f9){logger[_0xd762('0xe')]('VoiceCallReport,\x20%s,\x20%s',_0x538de1,_0x39c4f9);_0x4271b6(_0x39c4f9);});});}exports[_0xd762('0x14')]=function(_0x2a0dea){var _0xe57866=this;return new Promise(function(_0x5ce0cd,_0x3347c7){return db['VoiceCallReport']['findAll']({'raw':_0x2a0dea[_0xd762('0x15')]?_0x2a0dea[_0xd762('0x15')][_0xd762('0x16')]===undefined?!![]:![]:!![],'where':_0x2a0dea['options']?_0x2a0dea[_0xd762('0x15')][_0xd762('0x17')]||null:null,'attributes':_0x2a0dea[_0xd762('0x15')]?_0x2a0dea['options'][_0xd762('0x18')]||null:null,'limit':_0x2a0dea[_0xd762('0x15')]?_0x2a0dea['options'][_0xd762('0x19')]||null:null,'include':_0x2a0dea[_0xd762('0x15')]?_0x2a0dea[_0xd762('0x15')]['include']?_[_0xd762('0x1a')](_0x2a0dea[_0xd762('0x15')]['include'],function(_0x1a7e5b){return{'model':db[_0x1a7e5b[_0xd762('0x1b')]],'as':_0x1a7e5b['as'],'attributes':_0x1a7e5b['attributes'],'include':_0x1a7e5b[_0xd762('0x1c')]?_[_0xd762('0x1a')](_0x1a7e5b[_0xd762('0x1c')],function(_0x1b420d){return{'model':db[_0x1b420d['model']],'as':_0x1b420d['as'],'attributes':_0x1b420d['attributes'],'include':_0x1b420d[_0xd762('0x1c')]?_[_0xd762('0x1a')](_0x1b420d[_0xd762('0x1c')],function(_0x4e8b80){return{'model':db[_0x4e8b80['model']],'as':_0x4e8b80['as'],'attributes':_0x4e8b80['attributes']};}):[]};}):[]};}):[]:[]})[_0xd762('0x1d')](function(_0x4c7a3d){logger[_0xd762('0x12')]('GetVoiceCallReport',_0x2a0dea);logger[_0xd762('0xb')]('GetVoiceCallReport',_0x2a0dea,JSON[_0xd762('0x1e')](_0x4c7a3d));_0x5ce0cd(_0x4c7a3d);})[_0xd762('0x13')](function(_0x3a1fc5){logger[_0xd762('0xe')]('GetVoiceCallReport',_0x3a1fc5['message'],_0x2a0dea);_0x3347c7(_0xe57866['error'](0x1f4,_0x3a1fc5[_0xd762('0x10')]));});});};exports['CreateVoiceCallReport']=function(_0x4a051d){var _0x3d4bdd=this;return new Promise(function(_0x18080a,_0x42ae2e){return db[_0xd762('0x1f')][_0xd762('0x20')](_0x4a051d[_0xd762('0x21')],{'raw':_0x4a051d[_0xd762('0x15')]?_0x4a051d[_0xd762('0x15')][_0xd762('0x16')]===undefined?!![]:![]:!![]})[_0xd762('0x1d')](function(_0x2a2656){logger['info'](_0xd762('0x22'),_0x4a051d);logger['debug'](_0xd762('0x22'),_0x4a051d,JSON[_0xd762('0x1e')](_0x2a2656));_0x18080a(_0x2a2656);})[_0xd762('0x13')](function(_0x5e866f){logger[_0xd762('0xe')](_0xd762('0x22'),_0x5e866f[_0xd762('0x10')],_0x4a051d);_0x42ae2e(_0x3d4bdd['error'](0x1f4,_0x5e866f['message']));});});};exports['UpdateVoiceCallReport']=function(_0x429d09){var _0x1c0bcf=this;return new Promise(function(_0x443aa6,_0x5f0ea4){return db[_0xd762('0x1f')]['update'](_0x429d09[_0xd762('0x21')],{'raw':_0x429d09['options']?_0x429d09[_0xd762('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x429d09[_0xd762('0x15')]?_0x429d09[_0xd762('0x15')][_0xd762('0x17')]||null:null,'attributes':_0x429d09[_0xd762('0x15')]?_0x429d09[_0xd762('0x15')][_0xd762('0x18')]||null:null,'limit':_0x429d09['options']?_0x429d09[_0xd762('0x15')][_0xd762('0x19')]||null:null})['then'](function(_0x3f9ed1){logger[_0xd762('0x12')](_0xd762('0x23'),_0x429d09);logger['debug'](_0xd762('0x23'),_0x429d09,JSON[_0xd762('0x1e')](_0x3f9ed1));_0x443aa6(_0x3f9ed1);})[_0xd762('0x13')](function(_0x3abf49){logger[_0xd762('0xe')]('UpdateVoiceCallReport',_0x3abf49[_0xd762('0x10')],_0x429d09);_0x5f0ea4(_0x1c0bcf[_0xd762('0xe')](0x1f4,_0x3abf49[_0xd762('0x10')]));});});};
\ No newline at end of file
index 68346e1..eff560e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7611=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','multer'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x7611,0x77));var _0x1761=function(_0x2fe469,_0x32a238){_0x2fe469=_0x2fe469-0x0;var _0x279b6c=_0x7611[_0x2fe469];return _0x279b6c;};'use strict';var multer=require(_0x1761('0x0'));var util=require(_0x1761('0x1'));var path=require(_0x1761('0x2'));var timeout=require(_0x1761('0x3'));var express=require('express');var router=express[_0x1761('0x4')]();var fs_extra=require(_0x1761('0x5'));var auth=require(_0x1761('0x6'));var interaction=require(_0x1761('0x7'));var config=require(_0x1761('0x8'));var controller=require(_0x1761('0x9'));router[_0x1761('0xa')]('/',auth[_0x1761('0xb')](),controller[_0x1761('0xc')]);router[_0x1761('0xa')](_0x1761('0xd'),auth['isAuthenticated'](),controller[_0x1761('0xe')]);router[_0x1761('0xf')]('/',auth[_0x1761('0xb')](),controller[_0x1761('0x10')]);router[_0x1761('0x11')](_0x1761('0xd'),auth[_0x1761('0xb')](),controller[_0x1761('0x12')]);router['delete'](_0x1761('0xd'),auth[_0x1761('0xb')](),controller['destroy']);module[_0x1761('0x13')]=router;
\ No newline at end of file
+var _0x8237=['index','get','/:id','show','post','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x3b90ab,_0x174a22){var _0x206e92=function(_0x21fbd3){while(--_0x21fbd3){_0x3b90ab['push'](_0x3b90ab['shift']());}};_0x206e92(++_0x174a22);}(_0x8237,0x7a));var _0x7823=function(_0x563661,_0x3047c4){_0x563661=_0x563661-0x0;var _0x20028c=_0x8237[_0x563661];return _0x20028c;};'use strict';var multer=require(_0x7823('0x0'));var util=require(_0x7823('0x1'));var path=require(_0x7823('0x2'));var timeout=require(_0x7823('0x3'));var express=require(_0x7823('0x4'));var router=express[_0x7823('0x5')]();var fs_extra=require(_0x7823('0x6'));var auth=require(_0x7823('0x7'));var interaction=require(_0x7823('0x8'));var config=require(_0x7823('0x9'));var controller=require('./voiceChanSpy.controller');router['get']('/',auth[_0x7823('0xa')](),controller[_0x7823('0xb')]);router[_0x7823('0xc')](_0x7823('0xd'),auth[_0x7823('0xa')](),controller[_0x7823('0xe')]);router[_0x7823('0xf')]('/',auth[_0x7823('0xa')](),controller['create']);router[_0x7823('0x10')](_0x7823('0xd'),auth[_0x7823('0xa')](),controller[_0x7823('0x11')]);router[_0x7823('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index f03cf05..f5ac568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc5=['options','join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x3a7e42,_0x58e47d){var _0x7122b7=function(_0x42acab){while(--_0x42acab){_0x3a7e42['push'](_0x3a7e42['shift']());}};_0x7122b7(++_0x58e47d);}(_0xecc5,0x1be));var _0x5ecc=function(_0x17a1bc,_0x4eb8a5){_0x17a1bc=_0x17a1bc-0x0;var _0x5b683f=_0xecc5[_0x17a1bc];return _0x5b683f;};'use strict';var Sequelize=require(_0x5ecc('0x0'));module[_0x5ecc('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x5ecc('0x2')],'unique':_0x5ecc('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x5ecc('0x2')],'set':function(_0x270f86){this['setDataValue'](_0x5ecc('0x4'),_0x270f86?_0x270f86[_0x5ecc('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x5ecc('0x4'))?this[_0x5ecc('0x6')](_0x5ecc('0x4'))[_0x5ecc('0x7')](''):[];}},'auth':{'type':Sequelize[_0x5ecc('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x5ecc('0x2')]},'record':{'type':Sequelize[_0x5ecc('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x5ecc('0x2')]},'description':{'type':Sequelize[_0x5ecc('0x2')]}};
\ No newline at end of file
+var _0x09fa=['split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','join','options'];(function(_0x566c9a,_0x449918){var _0x2f6ca4=function(_0x102caf){while(--_0x102caf){_0x566c9a['push'](_0x566c9a['shift']());}};_0x2f6ca4(++_0x449918);}(_0x09fa,0xda));var _0xa09f=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x09fa[_0x164eca];return _0x2ce562;};'use strict';var Sequelize=require(_0xa09f('0x0'));module[_0xa09f('0x1')]={'name':{'type':Sequelize[_0xa09f('0x2')]},'prefix':{'type':Sequelize[_0xa09f('0x2')],'unique':_0xa09f('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x27a649){this[_0xa09f('0x4')]('options',_0x27a649?_0x27a649[_0xa09f('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xa09f('0x6'))?this['getDataValue']('options')[_0xa09f('0x7')](''):[];}},'auth':{'type':Sequelize[_0xa09f('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0xa09f('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xa09f('0x2')]},'description':{'type':Sequelize[_0xa09f('0x2')]}};
\ No newline at end of file
index e19e797..8fb002a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cc=['merge','VIRTUAL','includeAll','include','VoiceChanSpy','findAll','rows','show','params','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','get','ChanSpies','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter'];(function(_0x138443,_0xd4c791){var _0x3bc680=function(_0x42d02e){while(--_0x42d02e){_0x138443['push'](_0x138443['shift']());}};_0x3bc680(++_0xd4c791);}(_0xe2cc,0x69));var _0xce2c=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xe2cc[_0x432682];return _0x463d05;};'use strict';var emlformat=require(_0xce2c('0x0'));var rimraf=require(_0xce2c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xce2c('0x2'));var moment=require(_0xce2c('0x3'));var BPromise=require(_0xce2c('0x4'));var Mustache=require(_0xce2c('0x5'));var util=require(_0xce2c('0x6'));var path=require(_0xce2c('0x7'));var sox=require(_0xce2c('0x8'));var csv=require(_0xce2c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xce2c('0xa'));var squel=require(_0xce2c('0xb'));var crypto=require(_0xce2c('0xc'));var jsforce=require(_0xce2c('0xd'));var deskjs=require(_0xce2c('0xe'));var toCsv=require(_0xce2c('0x9'));var querystring=require('querystring');var Papa=require(_0xce2c('0xf'));var Redis=require(_0xce2c('0x10'));var authService=require(_0xce2c('0x11'));var qs=require(_0xce2c('0x12'));var as=require(_0xce2c('0x13'));var hardwareService=require(_0xce2c('0x14'));var logger=require(_0xce2c('0x15'))(_0xce2c('0x16'));var utils=require(_0xce2c('0x17'));var config=require(_0xce2c('0x18'));var licenseUtil=require(_0xce2c('0x19'));var db=require(_0xce2c('0x1a'))['db'];function respondWithStatusCode(_0x2f3b17,_0x27928d){_0x27928d=_0x27928d||0xcc;return function(_0x2421f6){if(_0x2421f6){return _0x2f3b17['sendStatus'](_0x27928d);}return _0x2f3b17['status'](_0x27928d)[_0xce2c('0x1b')]();};}function respondWithResult(_0x57c898,_0x214c62){_0x214c62=_0x214c62||0xc8;return function(_0x179855){if(_0x179855){return _0x57c898[_0xce2c('0x1c')](_0x214c62)[_0xce2c('0x1d')](_0x179855);}};}function respondWithFilteredResult(_0x4873e6,_0xb99213){return function(_0x1c3046){if(_0x1c3046){var _0x146830=typeof _0xb99213[_0xce2c('0x1e')]===_0xce2c('0x1f')&&typeof _0xb99213[_0xce2c('0x20')]===_0xce2c('0x1f');var _0x561b9e=_0x1c3046[_0xce2c('0x21')];var _0x35bc08=_0x146830?0x0:_0xb99213[_0xce2c('0x1e')];var _0x151422=_0x146830?_0x1c3046[_0xce2c('0x21')]:_0xb99213['offset']+_0xb99213[_0xce2c('0x20')];var _0xcc8a80;if(_0x151422>=_0x561b9e){_0x151422=_0x561b9e;_0xcc8a80=0xc8;}else{_0xcc8a80=0xce;}_0x4873e6['status'](_0xcc8a80);return _0x4873e6['set'](_0xce2c('0x22'),_0x35bc08+'-'+_0x151422+'/'+_0x561b9e)[_0xce2c('0x1d')](_0x1c3046);}return null;};}function patchUpdates(_0x43ee21){return function(_0x2f409c){try{jsonpatch[_0xce2c('0x23')](_0x2f409c,_0x43ee21,!![]);}catch(_0x228bf3){return BPromise[_0xce2c('0x24')](_0x228bf3);}return _0x2f409c['save']();};}function saveUpdates(_0x30380e,_0xb8057b){return function(_0x399f67){if(_0x399f67){return _0x399f67[_0xce2c('0x25')](_0x30380e)[_0xce2c('0x26')](function(_0x1c8bb6){return _0x1c8bb6;});}return null;};}function removeEntity(_0x1e263d,_0x39880d){return function(_0x451e86){if(_0x451e86){return _0x451e86[_0xce2c('0x27')]()['then'](function(){var _0x452cfa=_0x451e86[_0xce2c('0x28')]({'plain':!![]});var _0x333471=_0xce2c('0x29');return db[_0xce2c('0x2a')][_0xce2c('0x27')]({'where':{'type':_0x333471,'resourceId':_0x452cfa['id']}})['then'](function(){return _0x451e86;});})[_0xce2c('0x26')](function(){_0x1e263d['status'](0xcc)[_0xce2c('0x1b')]();});}};}function handleEntityNotFound(_0x1aea2c,_0xbb1756){return function(_0x2b6ce6){if(!_0x2b6ce6){_0x1aea2c[_0xce2c('0x2b')](0x194);}return _0x2b6ce6;};}function handleError(_0x19846d,_0x253ca2){_0x253ca2=_0x253ca2||0x1f4;return function(_0x32caae){logger[_0xce2c('0x2c')](_0x32caae[_0xce2c('0x2d')]);if(_0x32caae[_0xce2c('0x2e')]){delete _0x32caae[_0xce2c('0x2e')];}_0x19846d[_0xce2c('0x1c')](_0x253ca2)['send'](_0x32caae);};}exports[_0xce2c('0x2f')]=function(_0xc2cff6,_0x472a5f){var _0x371a3b={},_0x1a057b={},_0x59b8cd={'count':0x0,'rows':[]};var _0x1d0bfd=_[_0xce2c('0x30')](db['VoiceChanSpy'][_0xce2c('0x31')],function(_0x1a2ae7){return{'name':_0x1a2ae7[_0xce2c('0x32')],'type':_0x1a2ae7[_0xce2c('0x33')][_0xce2c('0x34')]};});_0x1a057b['model']=_[_0xce2c('0x30')](_0x1d0bfd,'name');_0x1a057b[_0xce2c('0x35')]=_[_0xce2c('0x36')](_0xc2cff6['query']);_0x1a057b[_0xce2c('0x37')]=_[_0xce2c('0x38')](_0x1a057b[_0xce2c('0x39')],_0x1a057b[_0xce2c('0x35')]);_0x371a3b['attributes']=_[_0xce2c('0x38')](_0x1a057b[_0xce2c('0x39')],qs['fields'](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x3a')]));_0x371a3b[_0xce2c('0x3b')]=_0x371a3b[_0xce2c('0x3b')][_0xce2c('0x3c')]?_0x371a3b[_0xce2c('0x3b')]:_0x1a057b[_0xce2c('0x39')];if(!_0xc2cff6[_0xce2c('0x35')]['hasOwnProperty'](_0xce2c('0x3d'))){_0x371a3b[_0xce2c('0x20')]=qs['limit'](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x20')]);_0x371a3b[_0xce2c('0x1e')]=qs[_0xce2c('0x1e')](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x1e')]);}_0x371a3b[_0xce2c('0x3e')]=qs[_0xce2c('0x3f')](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x3f')]);_0x371a3b[_0xce2c('0x40')]=qs['filters'](_[_0xce2c('0x41')](_0xc2cff6[_0xce2c('0x35')],_0x1a057b[_0xce2c('0x37')]),_0x1d0bfd);if(_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x42')]){_0x371a3b[_0xce2c('0x40')]=_[_0xce2c('0x43')](_0x371a3b[_0xce2c('0x40')],{'$or':_[_0xce2c('0x30')](_0x1d0bfd,function(_0x2a4775){if(_0x2a4775[_0xce2c('0x33')]!==_0xce2c('0x44')){var _0x45ab99={};_0x45ab99[_0x2a4775[_0xce2c('0x2e')]]={'$like':'%'+_0xc2cff6['query']['filter']+'%'};return _0x45ab99;}})});}_0x371a3b=_['merge']({},_0x371a3b,_0xc2cff6['options']);var _0x35f35f={'where':_0x371a3b[_0xce2c('0x40')]};return db['VoiceChanSpy']['count'](_0x35f35f)[_0xce2c('0x26')](function(_0x29a022){_0x59b8cd[_0xce2c('0x21')]=_0x29a022;if(_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x45')]){_0x371a3b[_0xce2c('0x46')]=[{'all':!![]}];}return db[_0xce2c('0x47')][_0xce2c('0x48')](_0x371a3b);})['then'](function(_0x8bbc9a){_0x59b8cd[_0xce2c('0x49')]=_0x8bbc9a;return _0x59b8cd;})[_0xce2c('0x26')](respondWithFilteredResult(_0x472a5f,_0x371a3b))['catch'](handleError(_0x472a5f,null));};exports[_0xce2c('0x4a')]=function(_0x3b7223,_0x4cd90b){var _0x5e1127={'raw':![],'where':{'id':_0x3b7223[_0xce2c('0x4b')]['id']}},_0x22060b={};_0x22060b['model']=_['keys'](db['VoiceChanSpy'][_0xce2c('0x31')]);_0x22060b[_0xce2c('0x35')]=_['keys'](_0x3b7223[_0xce2c('0x35')]);_0x22060b[_0xce2c('0x37')]=_['intersection'](_0x22060b['model'],_0x22060b['query']);_0x5e1127[_0xce2c('0x3b')]=_['intersection'](_0x22060b[_0xce2c('0x39')],qs[_0xce2c('0x3a')](_0x3b7223['query'][_0xce2c('0x3a')]));_0x5e1127[_0xce2c('0x3b')]=_0x5e1127[_0xce2c('0x3b')][_0xce2c('0x3c')]?_0x5e1127['attributes']:_0x22060b[_0xce2c('0x39')];if(_0x3b7223[_0xce2c('0x35')][_0xce2c('0x45')]){_0x5e1127['include']=[{'all':!![]}];}_0x5e1127=_[_0xce2c('0x43')]({},_0x5e1127,_0x3b7223[_0xce2c('0x4c')]);return db['VoiceChanSpy'][_0xce2c('0x4d')](_0x5e1127)['then'](handleEntityNotFound(_0x4cd90b,null))[_0xce2c('0x26')](respondWithResult(_0x4cd90b,null))[_0xce2c('0x4e')](handleError(_0x4cd90b,null));};exports[_0xce2c('0x4f')]=function(_0x23fb2b,_0xff694f){return db[_0xce2c('0x47')]['create'](_0x23fb2b[_0xce2c('0x50')],{})[_0xce2c('0x26')](function(_0x4025af){var _0x2644c2=_0x23fb2b[_0xce2c('0x51')][_0xce2c('0x28')]({'plain':!![]});if(!_0x2644c2)throw new Error(_0xce2c('0x52'));if(_0x2644c2[_0xce2c('0x53')]===_0xce2c('0x51')){var _0x7b381f=_0x4025af[_0xce2c('0x28')]({'plain':!![]});var _0x29406c=_0xce2c('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x29406c,'userProfileId':_0x2644c2['userProfileId']},'raw':!![]})[_0xce2c('0x26')](function(_0x2d50c1){if(_0x2d50c1&&_0x2d50c1[_0xce2c('0x54')]===0x0){return db[_0xce2c('0x2a')][_0xce2c('0x4f')]({'name':_0x7b381f[_0xce2c('0x2e')],'resourceId':_0x7b381f['id'],'type':_0x2d50c1[_0xce2c('0x2e')],'sectionId':_0x2d50c1['id']},{})[_0xce2c('0x26')](function(){return _0x4025af;});}else{return _0x4025af;}})['catch'](function(_0xb420b0){logger['error'](_0xce2c('0x55'),_0xb420b0);throw _0xb420b0;});}return _0x4025af;})[_0xce2c('0x26')](respondWithResult(_0xff694f,0xc9))[_0xce2c('0x4e')](handleError(_0xff694f,null));};exports[_0xce2c('0x25')]=function(_0x52a479,_0x107429){if(_0x52a479[_0xce2c('0x50')]['id']){delete _0x52a479['body']['id'];}return db[_0xce2c('0x47')][_0xce2c('0x4d')]({'where':{'id':_0x52a479['params']['id']}})[_0xce2c('0x26')](handleEntityNotFound(_0x107429,null))[_0xce2c('0x26')](saveUpdates(_0x52a479[_0xce2c('0x50')],null))[_0xce2c('0x26')](respondWithResult(_0x107429,null))[_0xce2c('0x4e')](handleError(_0x107429,null));};exports[_0xce2c('0x27')]=function(_0xa33a8d,_0x47741a){return db[_0xce2c('0x47')]['find']({'where':{'id':_0xa33a8d[_0xce2c('0x4b')]['id']}})[_0xce2c('0x26')](handleEntityNotFound(_0x47741a,null))[_0xce2c('0x26')](removeEntity(_0x47741a,null))[_0xce2c('0x4e')](handleError(_0x47741a,null));};
\ No newline at end of file
+var _0x3a25=['find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChanSpies','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x180a7f,_0x40033d){var _0x537e6d=function(_0x2af020){while(--_0x2af020){_0x180a7f['push'](_0x180a7f['shift']());}};_0x537e6d(++_0x40033d);}(_0x3a25,0x15d));var _0x53a2=function(_0x2be480,_0x186992){_0x2be480=_0x2be480-0x0;var _0x2bbd04=_0x3a25[_0x2be480];return _0x2bbd04;};'use strict';var emlformat=require(_0x53a2('0x0'));var rimraf=require(_0x53a2('0x1'));var zipdir=require(_0x53a2('0x2'));var jsonpatch=require(_0x53a2('0x3'));var rp=require(_0x53a2('0x4'));var moment=require(_0x53a2('0x5'));var BPromise=require(_0x53a2('0x6'));var Mustache=require(_0x53a2('0x7'));var util=require(_0x53a2('0x8'));var path=require(_0x53a2('0x9'));var sox=require(_0x53a2('0xa'));var csv=require(_0x53a2('0xb'));var ejs=require(_0x53a2('0xc'));var fs=require('fs');var fs_extra=require(_0x53a2('0xd'));var _=require(_0x53a2('0xe'));var squel=require('squel');var crypto=require(_0x53a2('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x53a2('0x10'));var toCsv=require(_0x53a2('0xb'));var querystring=require(_0x53a2('0x11'));var Papa=require(_0x53a2('0x12'));var Redis=require(_0x53a2('0x13'));var authService=require(_0x53a2('0x14'));var qs=require(_0x53a2('0x15'));var as=require(_0x53a2('0x16'));var hardwareService=require(_0x53a2('0x17'));var logger=require(_0x53a2('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x53a2('0x19'));var licenseUtil=require(_0x53a2('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x564ca9,_0x47881a){_0x47881a=_0x47881a||0xcc;return function(_0x410370){if(_0x410370){return _0x564ca9[_0x53a2('0x1b')](_0x47881a);}return _0x564ca9[_0x53a2('0x1c')](_0x47881a)['end']();};}function respondWithResult(_0x58070c,_0x4e2228){_0x4e2228=_0x4e2228||0xc8;return function(_0x9c14b7){if(_0x9c14b7){return _0x58070c[_0x53a2('0x1c')](_0x4e2228)[_0x53a2('0x1d')](_0x9c14b7);}};}function respondWithFilteredResult(_0xf9b589,_0x4d3a40){return function(_0x1779ef){if(_0x1779ef){var _0x3343d3=typeof _0x4d3a40[_0x53a2('0x1e')]===_0x53a2('0x1f')&&typeof _0x4d3a40[_0x53a2('0x20')]==='undefined';var _0x485c4d=_0x1779ef[_0x53a2('0x21')];var _0x446b71=_0x3343d3?0x0:_0x4d3a40[_0x53a2('0x1e')];var _0x104fb6=_0x3343d3?_0x1779ef[_0x53a2('0x21')]:_0x4d3a40[_0x53a2('0x1e')]+_0x4d3a40['limit'];var _0x589666;if(_0x104fb6>=_0x485c4d){_0x104fb6=_0x485c4d;_0x589666=0xc8;}else{_0x589666=0xce;}_0xf9b589[_0x53a2('0x1c')](_0x589666);return _0xf9b589[_0x53a2('0x22')]('Content-Range',_0x446b71+'-'+_0x104fb6+'/'+_0x485c4d)[_0x53a2('0x1d')](_0x1779ef);}return null;};}function patchUpdates(_0x3fb15b){return function(_0x3efc90){try{jsonpatch[_0x53a2('0x23')](_0x3efc90,_0x3fb15b,!![]);}catch(_0x503e9b){return BPromise[_0x53a2('0x24')](_0x503e9b);}return _0x3efc90[_0x53a2('0x25')]();};}function saveUpdates(_0xd9693c,_0x2cda68){return function(_0x42df19){if(_0x42df19){return _0x42df19[_0x53a2('0x26')](_0xd9693c)[_0x53a2('0x27')](function(_0x3a769d){return _0x3a769d;});}return null;};}function removeEntity(_0x4a1a34,_0x579b10){return function(_0x473042){if(_0x473042){return _0x473042[_0x53a2('0x28')]()[_0x53a2('0x27')](function(){var _0x2852a1=_0x473042[_0x53a2('0x29')]({'plain':!![]});var _0xa39167='ChanSpies';return db[_0x53a2('0x2a')][_0x53a2('0x28')]({'where':{'type':_0xa39167,'resourceId':_0x2852a1['id']}})[_0x53a2('0x27')](function(){return _0x473042;});})[_0x53a2('0x27')](function(){_0x4a1a34[_0x53a2('0x1c')](0xcc)[_0x53a2('0x2b')]();});}};}function handleEntityNotFound(_0x21325d,_0x41ae20){return function(_0x2f2062){if(!_0x2f2062){_0x21325d[_0x53a2('0x1b')](0x194);}return _0x2f2062;};}function handleError(_0x18d6df,_0x31426e){_0x31426e=_0x31426e||0x1f4;return function(_0x262eba){logger[_0x53a2('0x2c')](_0x262eba[_0x53a2('0x2d')]);if(_0x262eba[_0x53a2('0x2e')]){delete _0x262eba[_0x53a2('0x2e')];}_0x18d6df['status'](_0x31426e)[_0x53a2('0x2f')](_0x262eba);};}exports[_0x53a2('0x30')]=function(_0x286e70,_0x23374b){var _0x18f091={},_0x2e0dfc={},_0x137541={'count':0x0,'rows':[]};var _0x1bf7b4=_[_0x53a2('0x31')](db[_0x53a2('0x32')][_0x53a2('0x33')],function(_0x4cb93b){return{'name':_0x4cb93b[_0x53a2('0x34')],'type':_0x4cb93b[_0x53a2('0x35')][_0x53a2('0x36')]};});_0x2e0dfc[_0x53a2('0x37')]=_[_0x53a2('0x31')](_0x1bf7b4,_0x53a2('0x2e'));_0x2e0dfc[_0x53a2('0x38')]=_[_0x53a2('0x39')](_0x286e70['query']);_0x2e0dfc[_0x53a2('0x3a')]=_[_0x53a2('0x3b')](_0x2e0dfc[_0x53a2('0x37')],_0x2e0dfc[_0x53a2('0x38')]);_0x18f091['attributes']=_[_0x53a2('0x3b')](_0x2e0dfc[_0x53a2('0x37')],qs[_0x53a2('0x3c')](_0x286e70[_0x53a2('0x38')][_0x53a2('0x3c')]));_0x18f091[_0x53a2('0x3d')]=_0x18f091['attributes'][_0x53a2('0x3e')]?_0x18f091[_0x53a2('0x3d')]:_0x2e0dfc[_0x53a2('0x37')];if(!_0x286e70['query'][_0x53a2('0x3f')]('nolimit')){_0x18f091[_0x53a2('0x20')]=qs[_0x53a2('0x20')](_0x286e70[_0x53a2('0x38')]['limit']);_0x18f091['offset']=qs[_0x53a2('0x1e')](_0x286e70['query'][_0x53a2('0x1e')]);}_0x18f091[_0x53a2('0x40')]=qs[_0x53a2('0x41')](_0x286e70[_0x53a2('0x38')][_0x53a2('0x41')]);_0x18f091[_0x53a2('0x42')]=qs['filters'](_[_0x53a2('0x43')](_0x286e70[_0x53a2('0x38')],_0x2e0dfc['filters']),_0x1bf7b4);if(_0x286e70['query'][_0x53a2('0x44')]){_0x18f091['where']=_[_0x53a2('0x45')](_0x18f091[_0x53a2('0x42')],{'$or':_['map'](_0x1bf7b4,function(_0x22fede){if(_0x22fede[_0x53a2('0x35')]!==_0x53a2('0x46')){var _0x1aa50d={};_0x1aa50d[_0x22fede[_0x53a2('0x2e')]]={'$like':'%'+_0x286e70['query'][_0x53a2('0x44')]+'%'};return _0x1aa50d;}})});}_0x18f091=_[_0x53a2('0x45')]({},_0x18f091,_0x286e70['options']);var _0x411b7b={'where':_0x18f091[_0x53a2('0x42')]};return db['VoiceChanSpy'][_0x53a2('0x21')](_0x411b7b)['then'](function(_0xd5bcc8){_0x137541[_0x53a2('0x21')]=_0xd5bcc8;if(_0x286e70[_0x53a2('0x38')][_0x53a2('0x47')]){_0x18f091[_0x53a2('0x48')]=[{'all':!![]}];}return db[_0x53a2('0x32')]['findAll'](_0x18f091);})[_0x53a2('0x27')](function(_0x33238d){_0x137541[_0x53a2('0x49')]=_0x33238d;return _0x137541;})[_0x53a2('0x27')](respondWithFilteredResult(_0x23374b,_0x18f091))[_0x53a2('0x4a')](handleError(_0x23374b,null));};exports[_0x53a2('0x4b')]=function(_0x3790c1,_0x426a88){var _0x382636={'raw':![],'where':{'id':_0x3790c1[_0x53a2('0x4c')]['id']}},_0x1b5fbe={};_0x1b5fbe[_0x53a2('0x37')]=_[_0x53a2('0x39')](db[_0x53a2('0x32')][_0x53a2('0x33')]);_0x1b5fbe[_0x53a2('0x38')]=_['keys'](_0x3790c1[_0x53a2('0x38')]);_0x1b5fbe[_0x53a2('0x3a')]=_['intersection'](_0x1b5fbe['model'],_0x1b5fbe[_0x53a2('0x38')]);_0x382636['attributes']=_['intersection'](_0x1b5fbe[_0x53a2('0x37')],qs[_0x53a2('0x3c')](_0x3790c1[_0x53a2('0x38')][_0x53a2('0x3c')]));_0x382636['attributes']=_0x382636['attributes']['length']?_0x382636[_0x53a2('0x3d')]:_0x1b5fbe['model'];if(_0x3790c1['query'][_0x53a2('0x47')]){_0x382636[_0x53a2('0x48')]=[{'all':!![]}];}_0x382636=_[_0x53a2('0x45')]({},_0x382636,_0x3790c1[_0x53a2('0x4d')]);return db[_0x53a2('0x32')]['find'](_0x382636)[_0x53a2('0x27')](handleEntityNotFound(_0x426a88,null))['then'](respondWithResult(_0x426a88,null))[_0x53a2('0x4a')](handleError(_0x426a88,null));};exports[_0x53a2('0x4e')]=function(_0x5baa46,_0x35fb2b){return db[_0x53a2('0x32')][_0x53a2('0x4e')](_0x5baa46[_0x53a2('0x4f')],{})[_0x53a2('0x27')](function(_0x6fd478){var _0x622575=_0x5baa46['user'][_0x53a2('0x29')]({'plain':!![]});if(!_0x622575)throw new Error(_0x53a2('0x50'));if(_0x622575[_0x53a2('0x51')]==='user'){var _0x36df41=_0x6fd478[_0x53a2('0x29')]({'plain':!![]});var _0x42238f=_0x53a2('0x52');return db[_0x53a2('0x53')]['find']({'where':{'name':_0x42238f,'userProfileId':_0x622575['userProfileId']},'raw':!![]})[_0x53a2('0x27')](function(_0x4f65a1){if(_0x4f65a1&&_0x4f65a1[_0x53a2('0x54')]===0x0){return db[_0x53a2('0x2a')]['create']({'name':_0x36df41['name'],'resourceId':_0x36df41['id'],'type':_0x4f65a1[_0x53a2('0x2e')],'sectionId':_0x4f65a1['id']},{})[_0x53a2('0x27')](function(){return _0x6fd478;});}else{return _0x6fd478;}})[_0x53a2('0x4a')](function(_0x5eae3e){logger['error'](_0x53a2('0x55'),_0x5eae3e);throw _0x5eae3e;});}return _0x6fd478;})[_0x53a2('0x27')](respondWithResult(_0x35fb2b,0xc9))[_0x53a2('0x4a')](handleError(_0x35fb2b,null));};exports[_0x53a2('0x26')]=function(_0xf722ed,_0x50e667){if(_0xf722ed[_0x53a2('0x4f')]['id']){delete _0xf722ed[_0x53a2('0x4f')]['id'];}return db[_0x53a2('0x32')][_0x53a2('0x56')]({'where':{'id':_0xf722ed[_0x53a2('0x4c')]['id']}})[_0x53a2('0x27')](handleEntityNotFound(_0x50e667,null))[_0x53a2('0x27')](saveUpdates(_0xf722ed['body'],null))[_0x53a2('0x27')](respondWithResult(_0x50e667,null))['catch'](handleError(_0x50e667,null));};exports[_0x53a2('0x28')]=function(_0x867db6,_0x3b91eb){return db[_0x53a2('0x32')]['find']({'where':{'id':_0x867db6[_0x53a2('0x4c')]['id']}})[_0x53a2('0x27')](handleEntityNotFound(_0x3b91eb,null))[_0x53a2('0x27')](removeEntity(_0x3b91eb,null))[_0x53a2('0x4a')](handleError(_0x3b91eb,null));};
\ No newline at end of file
index 1d347ba..641d198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12b0=['push','merge','Set','chanspy','record','auth','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','concat','internal','User','findAll','agent','then','catch','exports','models','define','VoiceChanSpy','voice_chanspy','length','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system'];(function(_0x458a20,_0x206f85){var _0x3cce8a=function(_0x41b460){while(--_0x41b460){_0x458a20['push'](_0x458a20['shift']());}};_0x3cce8a(++_0x206f85);}(_0x12b0,0x12e));var _0x012b=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x12b0[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x012b('0x0'));var util=require(_0x012b('0x1'));var BPromise=require(_0x012b('0x2'));var attributes=require(_0x012b('0x3'));var getUserApplications=function(_0x1ee49f,_0x2286b6,_0x2636a1){var _0x17c329=0x1;var _0x352f83=[];var _0x28830f={'context':_0x2286b6[_0x012b('0x4')]||_0x012b('0x5'),'exten':util[_0x012b('0x6')](_0x012b('0x7'),_0x1ee49f[_0x012b('0x8')],_0x2636a1),'type':_0x012b('0x9'),'isApp':![],'ChanSpyId':_0x1ee49f['id'],'UserId':_0x2286b6['id']};_0x352f83[_0x012b('0xa')](_[_0x012b('0xb')]({'app':_0x012b('0xc'),'appdata':util[_0x012b('0x6')]('CDR(type)=%s',_0x012b('0xd')),'priority':_0x17c329++},_0x28830f));if(_0x1ee49f[_0x012b('0xe')]){_0x352f83[_0x012b('0xa')](_[_0x012b('0xb')]({'app':'MixMonitor','appdata':util['format']('${UNIQUEID}.%s,a',_0x1ee49f['recordingFormat']),'priority':_0x17c329++},_0x28830f));}if(_0x1ee49f[_0x012b('0xf')]){_0x352f83[_0x012b('0xa')](_['merge']({'app':_0x012b('0x10'),'appdata':_0x1ee49f['password'],'priority':_0x17c329++},_0x28830f));}_0x352f83[_0x012b('0xa')](_['merge']({'app':_0x012b('0x11'),'appdata':util[_0x012b('0x6')](_0x012b('0x12'),_0x2286b6[_0x012b('0x13')],_0x1ee49f[_0x012b('0x14')]?_0x1ee49f[_0x012b('0x14')][_0x012b('0x15')](''):''),'priority':_0x17c329++},_0x28830f));if(_0x1ee49f[_0x012b('0xe')]){_0x352f83[_0x012b('0xa')](_[_0x012b('0xb')]({'app':_0x012b('0x16'),'priority':_0x17c329++},_0x28830f));}return _0x352f83;};var getChanSpyApplications=function(_0x2e2282,_0x43a425){var _0x1166f8=[];for(var _0x1c1b89=0x0,_0x4f5ce7=0x1;_0x1c1b89<_0x43a425['length'];_0x1c1b89++,_0x4f5ce7=0x1){_0x1166f8=_0x1166f8[_0x012b('0x17')](getUserApplications(_0x2e2282,_0x43a425[_0x1c1b89],_0x43a425[_0x1c1b89][_0x012b('0x18')]));if(_0x43a425[_0x1c1b89][_0x012b('0x18')]!=_0x43a425[_0x1c1b89]['name']){_0x1166f8=_0x1166f8[_0x012b('0x17')](getUserApplications(_0x2e2282,_0x43a425[_0x1c1b89],_0x43a425[_0x1c1b89][_0x012b('0x13')]));}}return _0x1166f8;};var getChanSpyPromise=function(_0x470960,_0x3a5820){return new BPromise(function(_0x5984e6,_0x49b388){return _0x470960[_0x012b('0x19')][_0x012b('0x1a')]({'attributes':['id',_0x012b('0x13'),_0x012b('0x18')],'where':{'role':_0x012b('0x1b'),'chanspy':!![]},'raw':!![]})[_0x012b('0x1c')](function(_0x855023){if(_0x855023){return _0x5984e6(getChanSpyApplications(_0x3a5820,_0x855023));}return _0x5984e6([]);})[_0x012b('0x1d')](function(_0x518c20){_0x49b388(_0x518c20);});});};module[_0x012b('0x1e')]=function(_0x1437b4,_0x829112){var _0x5b4712=_0x1437b4[_0x012b('0x1f')];return _0x1437b4[_0x012b('0x20')](_0x012b('0x21'),attributes,{'tableName':_0x012b('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x447cf0,_0x2a6b74,_0x18f9c7){return getChanSpyPromise(_0x5b4712,_0x447cf0)['then'](function(_0x4bcdac){if(_0x4bcdac&&_0x4bcdac[_0x012b('0x23')]){return _0x5b4712[_0x012b('0x24')][_0x012b('0x25')](_0x4bcdac);}})[_0x012b('0x1c')](function(){_0x18f9c7();})[_0x012b('0x1d')](function(_0x2cbe32){_0x18f9c7(_0x2cbe32);});},'afterUpdate':function(_0x53c8c1,_0x540499,_0x1ac691){return _0x5b4712['VoiceExtension'][_0x012b('0x26')]({'where':{'ChanSpyId':_0x53c8c1['id']}})[_0x012b('0x1c')](function(){return getChanSpyPromise(_0x5b4712,_0x53c8c1);})[_0x012b('0x1c')](function(_0x4109a0){if(_0x4109a0&&_0x4109a0[_0x012b('0x23')]){return _0x5b4712[_0x012b('0x24')][_0x012b('0x25')](_0x4109a0);}})[_0x012b('0x1c')](function(){_0x1ac691();})[_0x012b('0x1d')](function(_0x483233){_0x1ac691(_0x483233);});},'afterDestroy':function(_0x2ceed9,_0x2cf385,_0x368d87){return _0x5b4712['VoiceExtension'][_0x012b('0x26')]({'where':{'ChanSpyId':_0x2ceed9['id']}})['then'](function(){_0x368d87();})[_0x012b('0x1d')](function(_0x51a7a7){_0x368d87(_0x51a7a7);});}}});};
\ No newline at end of file
+var _0x86b6=['StopMixMonitor','internal','findAll','catch','define','VoiceChanSpy','then','length','bulkCreate','VoiceExtension','destroy','lodash','util','./voiceChanSpy.attributes','context','format','%s%s','prefix','system','merge','Set','CDR(type)=%s','record','push','MixMonitor','recordingFormat','auth','ChanSpy','SIP/%s,%s','name','options','join'];(function(_0x4ec9a2,_0x216a25){var _0x4424bb=function(_0x57fa19){while(--_0x57fa19){_0x4ec9a2['push'](_0x4ec9a2['shift']());}};_0x4424bb(++_0x216a25);}(_0x86b6,0xab));var _0x686b=function(_0x3c691c,_0x75c10a){_0x3c691c=_0x3c691c-0x0;var _0x5703a0=_0x86b6[_0x3c691c];return _0x5703a0;};'use strict';var _=require(_0x686b('0x0'));var util=require(_0x686b('0x1'));var BPromise=require('bluebird');var attributes=require(_0x686b('0x2'));var getUserApplications=function(_0x406259,_0xd0857a,_0x11e906){var _0x2b6b8a=0x1;var _0x348dd7=[];var _0x46ef4e={'context':_0xd0857a[_0x686b('0x3')]||'from-sip','exten':util[_0x686b('0x4')](_0x686b('0x5'),_0x406259[_0x686b('0x6')],_0x11e906),'type':_0x686b('0x7'),'isApp':![],'ChanSpyId':_0x406259['id'],'UserId':_0xd0857a['id']};_0x348dd7['push'](_[_0x686b('0x8')]({'app':_0x686b('0x9'),'appdata':util[_0x686b('0x4')](_0x686b('0xa'),'chanspy'),'priority':_0x2b6b8a++},_0x46ef4e));if(_0x406259[_0x686b('0xb')]){_0x348dd7[_0x686b('0xc')](_[_0x686b('0x8')]({'app':_0x686b('0xd'),'appdata':util[_0x686b('0x4')]('${UNIQUEID}.%s,a',_0x406259[_0x686b('0xe')]),'priority':_0x2b6b8a++},_0x46ef4e));}if(_0x406259[_0x686b('0xf')]){_0x348dd7[_0x686b('0xc')](_[_0x686b('0x8')]({'app':'Authenticate','appdata':_0x406259['password'],'priority':_0x2b6b8a++},_0x46ef4e));}_0x348dd7[_0x686b('0xc')](_[_0x686b('0x8')]({'app':_0x686b('0x10'),'appdata':util[_0x686b('0x4')](_0x686b('0x11'),_0xd0857a[_0x686b('0x12')],_0x406259[_0x686b('0x13')]?_0x406259[_0x686b('0x13')][_0x686b('0x14')](''):''),'priority':_0x2b6b8a++},_0x46ef4e));if(_0x406259[_0x686b('0xb')]){_0x348dd7[_0x686b('0xc')](_[_0x686b('0x8')]({'app':_0x686b('0x15'),'priority':_0x2b6b8a++},_0x46ef4e));}return _0x348dd7;};var getChanSpyApplications=function(_0x57c1d8,_0x15f33b){var _0x1f9f07=[];for(var _0x1deb23=0x0,_0x9e3ebc=0x1;_0x1deb23<_0x15f33b['length'];_0x1deb23++,_0x9e3ebc=0x1){_0x1f9f07=_0x1f9f07['concat'](getUserApplications(_0x57c1d8,_0x15f33b[_0x1deb23],_0x15f33b[_0x1deb23]['internal']));if(_0x15f33b[_0x1deb23][_0x686b('0x16')]!=_0x15f33b[_0x1deb23][_0x686b('0x12')]){_0x1f9f07=_0x1f9f07['concat'](getUserApplications(_0x57c1d8,_0x15f33b[_0x1deb23],_0x15f33b[_0x1deb23][_0x686b('0x12')]));}}return _0x1f9f07;};var getChanSpyPromise=function(_0x4a71b0,_0x468864){return new BPromise(function(_0x14a8f8,_0x1f07e3){return _0x4a71b0['User'][_0x686b('0x17')]({'attributes':['id','name',_0x686b('0x16')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x21100e){if(_0x21100e){return _0x14a8f8(getChanSpyApplications(_0x468864,_0x21100e));}return _0x14a8f8([]);})[_0x686b('0x18')](function(_0x4378c5){_0x1f07e3(_0x4378c5);});});};module['exports']=function(_0x4b7d74,_0x53bf1d){var _0x58989e=_0x4b7d74['models'];return _0x4b7d74[_0x686b('0x19')](_0x686b('0x1a'),attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x31751a,_0x1191b0,_0x5a6c4d){return getChanSpyPromise(_0x58989e,_0x31751a)[_0x686b('0x1b')](function(_0x1c3c93){if(_0x1c3c93&&_0x1c3c93[_0x686b('0x1c')]){return _0x58989e['VoiceExtension'][_0x686b('0x1d')](_0x1c3c93);}})[_0x686b('0x1b')](function(){_0x5a6c4d();})['catch'](function(_0x536e41){_0x5a6c4d(_0x536e41);});},'afterUpdate':function(_0x162375,_0x44032f,_0x1b0d16){return _0x58989e[_0x686b('0x1e')][_0x686b('0x1f')]({'where':{'ChanSpyId':_0x162375['id']}})[_0x686b('0x1b')](function(){return getChanSpyPromise(_0x58989e,_0x162375);})[_0x686b('0x1b')](function(_0x53bbc6){if(_0x53bbc6&&_0x53bbc6[_0x686b('0x1c')]){return _0x58989e[_0x686b('0x1e')][_0x686b('0x1d')](_0x53bbc6);}})[_0x686b('0x1b')](function(){_0x1b0d16();})[_0x686b('0x18')](function(_0x3aa563){_0x1b0d16(_0x3aa563);});},'afterDestroy':function(_0x1d2f98,_0x153dbb,_0xbd858e){return _0x58989e[_0x686b('0x1e')][_0x686b('0x1f')]({'where':{'ChanSpyId':_0x1d2f98['id']}})[_0x686b('0x1b')](function(){_0xbd858e();})[_0x686b('0x18')](function(_0x4ad536){_0xbd858e(_0x4ad536);});}}});};
\ No newline at end of file
index 7c95d6e..2c72342 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb248=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x4b375c,_0x48d684){var _0x4fd5ef=function(_0x2f21d9){while(--_0x2f21d9){_0x4b375c['push'](_0x4b375c['shift']());}};_0x4fd5ef(++_0x48d684);}(_0xb248,0xc6));var _0x8b24=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xb248[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x8b24('0x0'));var util=require('util');var moment=require(_0x8b24('0x1'));var BPromise=require(_0x8b24('0x2'));var rs=require(_0x8b24('0x3'));var fs=require('fs');var Redis=require(_0x8b24('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8b24('0x5'));var logger=require(_0x8b24('0x6'))('rpc');var config=require(_0x8b24('0x7'));var jayson=require(_0x8b24('0x8'));var client=jayson['client'][_0x8b24('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4705e0,_0x588ca8,_0x3198a2){return new BPromise(function(_0x51bbad,_0x43b851){return client[_0x8b24('0xa')](_0x4705e0,_0x3198a2)[_0x8b24('0xb')](function(_0x4ad0db){logger[_0x8b24('0xc')](_0x8b24('0xd'),_0x588ca8,_0x8b24('0xe'));logger[_0x8b24('0xf')](_0x8b24('0x10'),_0x588ca8,_0x8b24('0xe'),JSON[_0x8b24('0x11')](_0x4ad0db));if(_0x4ad0db[_0x8b24('0x12')]){if(_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x13')]===0x1f4){logger[_0x8b24('0x12')](_0x8b24('0xd'),_0x588ca8,_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x14')]);return _0x43b851(_0x4ad0db['error']['message']);}logger[_0x8b24('0x12')](_0x8b24('0xd'),_0x588ca8,_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x14')]);return _0x51bbad(_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x14')]);}else{logger[_0x8b24('0xc')](_0x8b24('0xd'),_0x588ca8,'request\x20sent');_0x51bbad(_0x4ad0db['result']['message']);}})[_0x8b24('0x15')](function(_0x523863){logger['error'](_0x8b24('0xd'),_0x588ca8,_0x523863);_0x43b851(_0x523863);});});}
\ No newline at end of file
+var _0x0647=['info','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x724796,_0x217237){var _0x46bfcc=function(_0x44c191){while(--_0x44c191){_0x724796['push'](_0x724796['shift']());}};_0x46bfcc(++_0x217237);}(_0x0647,0xd0));var _0x7064=function(_0x37756b,_0x24db76){_0x37756b=_0x37756b-0x0;var _0x46efec=_0x0647[_0x37756b];return _0x46efec;};'use strict';var _=require(_0x7064('0x0'));var util=require('util');var moment=require(_0x7064('0x1'));var BPromise=require(_0x7064('0x2'));var rs=require(_0x7064('0x3'));var fs=require('fs');var Redis=require(_0x7064('0x4'));var db=require(_0x7064('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7064('0x6'));var config=require(_0x7064('0x7'));var jayson=require(_0x7064('0x8'));var client=jayson[_0x7064('0x9')][_0x7064('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1101e4,_0x58186b,_0x536336){return new BPromise(function(_0x1c85b1,_0x39b7e3){return client[_0x7064('0xb')](_0x1101e4,_0x536336)['then'](function(_0x38c195){logger[_0x7064('0xc')]('VoiceChanSpy,\x20%s,\x20%s',_0x58186b,_0x7064('0xd'));logger[_0x7064('0xe')](_0x7064('0xf'),_0x58186b,'request\x20sent',JSON[_0x7064('0x10')](_0x38c195));if(_0x38c195[_0x7064('0x11')]){if(_0x38c195[_0x7064('0x11')][_0x7064('0x12')]===0x1f4){logger['error'](_0x7064('0x13'),_0x58186b,_0x38c195[_0x7064('0x11')][_0x7064('0x14')]);return _0x39b7e3(_0x38c195[_0x7064('0x11')][_0x7064('0x14')]);}logger[_0x7064('0x11')](_0x7064('0x13'),_0x58186b,_0x38c195[_0x7064('0x11')]['message']);return _0x1c85b1(_0x38c195['error']['message']);}else{logger[_0x7064('0xc')](_0x7064('0x13'),_0x58186b,_0x7064('0xd'));_0x1c85b1(_0x38c195['result'][_0x7064('0x14')]);}})[_0x7064('0x15')](function(_0x5bb1cc){logger[_0x7064('0x11')](_0x7064('0x13'),_0x58186b,_0x5bb1cc);_0x39b7e3(_0x5bb1cc);});});}
\ No newline at end of file
index d5b2bed..51ff624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaacd=['get','/:id','show','post','create','put','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','isAuthenticated','index'];(function(_0x3096f2,_0x45189f){var _0x1509af=function(_0x4156f4){while(--_0x4156f4){_0x3096f2['push'](_0x3096f2['shift']());}};_0x1509af(++_0x45189f);}(_0xaacd,0xf8));var _0xdaac=function(_0x2a81cb,_0xa8c94a){_0x2a81cb=_0x2a81cb-0x0;var _0xe02861=_0xaacd[_0x2a81cb];return _0xe02861;};'use strict';var multer=require(_0xdaac('0x0'));var util=require('util');var path=require(_0xdaac('0x1'));var timeout=require(_0xdaac('0x2'));var express=require(_0xdaac('0x3'));var router=express[_0xdaac('0x4')]();var fs_extra=require(_0xdaac('0x5'));var auth=require(_0xdaac('0x6'));var interaction=require(_0xdaac('0x7'));var config=require(_0xdaac('0x8'));var controller=require(_0xdaac('0x9'));router['get']('/',auth[_0xdaac('0xa')](),controller[_0xdaac('0xb')]);router[_0xdaac('0xc')](_0xdaac('0xd'),auth[_0xdaac('0xa')](),controller[_0xdaac('0xe')]);router[_0xdaac('0xf')]('/',auth[_0xdaac('0xa')](),controller[_0xdaac('0x10')]);router[_0xdaac('0x11')](_0xdaac('0xd'),auth[_0xdaac('0xa')](),controller['update']);router[_0xdaac('0x12')](_0xdaac('0xd'),auth['isAuthenticated'](),controller[_0xdaac('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xfa9f=['express','Router','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','get','isAuthenticated','/:id','show','post','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x3d369c,_0x39b082){var _0xb96391=function(_0x18d746){while(--_0x18d746){_0x3d369c['push'](_0x3d369c['shift']());}};_0xb96391(++_0x39b082);}(_0xfa9f,0x12f));var _0xffa9=function(_0x1663ae,_0x10484a){_0x1663ae=_0x1663ae-0x0;var _0x30ffb8=_0xfa9f[_0x1663ae];return _0x30ffb8;};'use strict';var multer=require(_0xffa9('0x0'));var util=require(_0xffa9('0x1'));var path=require('path');var timeout=require(_0xffa9('0x2'));var express=require(_0xffa9('0x3'));var router=express[_0xffa9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xffa9('0x5'));var interaction=require(_0xffa9('0x6'));var config=require('../../config/environment');var controller=require(_0xffa9('0x7'));router[_0xffa9('0x8')]('/',auth[_0xffa9('0x9')](),controller['index']);router[_0xffa9('0x8')](_0xffa9('0xa'),auth[_0xffa9('0x9')](),controller[_0xffa9('0xb')]);router[_0xffa9('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xffa9('0xd')](_0xffa9('0xa'),auth['isAuthenticated'](),controller[_0xffa9('0xe')]);router[_0xffa9('0xf')](_0xffa9('0xa'),auth['isAuthenticated'](),controller[_0xffa9('0x10')]);module[_0xffa9('0x11')]=router;
\ No newline at end of file
index ae035ad..6d3c3d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c13=['name','STRING'];(function(_0x26e5ce,_0x1434bd){var _0x5f14df=function(_0x186f5c){while(--_0x186f5c){_0x26e5ce['push'](_0x26e5ce['shift']());}};_0x5f14df(++_0x1434bd);}(_0x2c13,0x15b));var _0x32c1=function(_0x45275d,_0x35f242){_0x45275d=_0x45275d-0x0;var _0x27306d=_0x2c13[_0x45275d];return _0x27306d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x32c1('0x0')],'unique':_0x32c1('0x1')},'description':{'type':Sequelize[_0x32c1('0x0')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5eb1=['exports','STRING','name','BOOLEAN'];(function(_0x5bc4d1,_0x5101a3){var _0x4d7f6e=function(_0xe38ec9){while(--_0xe38ec9){_0x5bc4d1['push'](_0x5bc4d1['shift']());}};_0x4d7f6e(++_0x5101a3);}(_0x5eb1,0x7c));var _0x15eb=function(_0x13d878,_0x3ac33){_0x13d878=_0x13d878-0x0;var _0x4f9280=_0x5eb1[_0x13d878];return _0x4f9280;};'use strict';var Sequelize=require('sequelize');module[_0x15eb('0x0')]={'name':{'type':Sequelize[_0x15eb('0x1')],'unique':_0x15eb('0x2')},'description':{'type':Sequelize[_0x15eb('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x15eb('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 6c21b2d..0103461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f74=['find','create','readFileSync','join','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','root','writeFileSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','end','status','undefined','limit','count','set','json','apply','reject','update','destroy','get','Contexts','stack','name','send','map','VoiceContext','rawAttributes','fieldName','type','key','model','keys','filters','attributes','fields','query','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','include','findAll','rows','show','params','intersection','merge','options'];(function(_0x2a4006,_0x24cddc){var _0x58223d=function(_0x27595d){while(--_0x27595d){_0x2a4006['push'](_0x2a4006['shift']());}};_0x58223d(++_0x24cddc);}(_0x5f74,0x19d));var _0x45f7=function(_0x3b97f6,_0x4ce1f7){_0x3b97f6=_0x3b97f6-0x0;var _0x287014=_0x5f74[_0x3b97f6];return _0x287014;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x45f7('0x0'));var zipdir=require(_0x45f7('0x1'));var jsonpatch=require(_0x45f7('0x2'));var rp=require(_0x45f7('0x3'));var moment=require(_0x45f7('0x4'));var BPromise=require(_0x45f7('0x5'));var Mustache=require(_0x45f7('0x6'));var util=require(_0x45f7('0x7'));var path=require(_0x45f7('0x8'));var sox=require('sox');var csv=require(_0x45f7('0x9'));var ejs=require(_0x45f7('0xa'));var fs=require('fs');var fs_extra=require(_0x45f7('0xb'));var _=require(_0x45f7('0xc'));var squel=require(_0x45f7('0xd'));var crypto=require(_0x45f7('0xe'));var jsforce=require(_0x45f7('0xf'));var deskjs=require(_0x45f7('0x10'));var toCsv=require(_0x45f7('0x9'));var querystring=require(_0x45f7('0x11'));var Papa=require('papaparse');var Redis=require(_0x45f7('0x12'));var authService=require(_0x45f7('0x13'));var qs=require(_0x45f7('0x14'));var as=require(_0x45f7('0x15'));var hardwareService=require(_0x45f7('0x16'));var logger=require(_0x45f7('0x17'))(_0x45f7('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x45f7('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x45f7('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x95130f,_0x46f3e5,_0x25c70e,_0x2d3a13){return new BPromise(function(_0x18e0cf,_0x5317ba){var _0x4930c5=_0x2d3a13||client;return _0x4930c5[_0x45f7('0x1b')](_0x95130f,_0x25c70e)[_0x45f7('0x1c')](function(_0x2c35ab){logger[_0x45f7('0x1d')](_0x45f7('0x1e'),_0x46f3e5,_0x45f7('0x1f'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x46f3e5,'request\x20sent',JSON['stringify'](_0x2c35ab));if(_0x2c35ab[_0x45f7('0x20')]){if(_0x2c35ab[_0x45f7('0x20')]['code']===0x1f4){logger['error'](_0x45f7('0x1e'),_0x46f3e5,_0x2c35ab[_0x45f7('0x20')][_0x45f7('0x21')]);return _0x5317ba(_0x2c35ab['error']['message']);}logger[_0x45f7('0x20')]('VoiceContext,\x20%s,\x20%s',_0x46f3e5,_0x2c35ab['error'][_0x45f7('0x21')]);return _0x18e0cf(_0x2c35ab[_0x45f7('0x20')][_0x45f7('0x21')]);}else{logger[_0x45f7('0x1d')](_0x45f7('0x1e'),_0x46f3e5,'request\x20sent');_0x18e0cf(_0x2c35ab[_0x45f7('0x22')]['message']);}})[_0x45f7('0x23')](function(_0x5b516a){logger[_0x45f7('0x20')](_0x45f7('0x1e'),_0x46f3e5,_0x5b516a);_0x5317ba(_0x5b516a);});});}function respondWithStatusCode(_0x309353,_0x2b37f8){_0x2b37f8=_0x2b37f8||0xcc;return function(_0x234e68){if(_0x234e68){return _0x309353[_0x45f7('0x24')](_0x2b37f8);}return _0x309353['status'](_0x2b37f8)[_0x45f7('0x25')]();};}function respondWithResult(_0xa85053,_0xf15078){_0xf15078=_0xf15078||0xc8;return function(_0x3baf2b){if(_0x3baf2b){return _0xa85053[_0x45f7('0x26')](_0xf15078)['json'](_0x3baf2b);}};}function respondWithFilteredResult(_0x38fb32,_0x8f874){return function(_0x263d1d){if(_0x263d1d){var _0x726540=typeof _0x8f874['offset']===_0x45f7('0x27')&&typeof _0x8f874[_0x45f7('0x28')]==='undefined';var _0x1ac167=_0x263d1d['count'];var _0x45fd80=_0x726540?0x0:_0x8f874['offset'];var _0x3673bb=_0x726540?_0x263d1d[_0x45f7('0x29')]:_0x8f874['offset']+_0x8f874['limit'];var _0x366de7;if(_0x3673bb>=_0x1ac167){_0x3673bb=_0x1ac167;_0x366de7=0xc8;}else{_0x366de7=0xce;}_0x38fb32[_0x45f7('0x26')](_0x366de7);return _0x38fb32[_0x45f7('0x2a')]('Content-Range',_0x45fd80+'-'+_0x3673bb+'/'+_0x1ac167)[_0x45f7('0x2b')](_0x263d1d);}return null;};}function patchUpdates(_0x36c3c7){return function(_0xc2ff05){try{jsonpatch[_0x45f7('0x2c')](_0xc2ff05,_0x36c3c7,!![]);}catch(_0x5dbbc1){return BPromise[_0x45f7('0x2d')](_0x5dbbc1);}return _0xc2ff05['save']();};}function saveUpdates(_0x1c72c7,_0x35f9fb){return function(_0x2257f9){if(_0x2257f9){return _0x2257f9[_0x45f7('0x2e')](_0x1c72c7)['then'](function(_0x48f147){return _0x48f147;});}return null;};}function removeEntity(_0x3091cd,_0x26c22c){return function(_0x406ae6){if(_0x406ae6){return _0x406ae6[_0x45f7('0x2f')]()[_0x45f7('0x1c')](function(){var _0x33898e=_0x406ae6[_0x45f7('0x30')]({'plain':!![]});var _0x4e3ad7=_0x45f7('0x31');return db['UserProfileResource'][_0x45f7('0x2f')]({'where':{'type':_0x4e3ad7,'resourceId':_0x33898e['id']}})[_0x45f7('0x1c')](function(){return _0x406ae6;});})[_0x45f7('0x1c')](function(){_0x3091cd[_0x45f7('0x26')](0xcc)[_0x45f7('0x25')]();});}};}function handleEntityNotFound(_0xd2704b,_0xd9afc2){return function(_0x5d87e5){if(!_0x5d87e5){_0xd2704b[_0x45f7('0x24')](0x194);}return _0x5d87e5;};}function handleError(_0x3e8d5b,_0x531fb8){_0x531fb8=_0x531fb8||0x1f4;return function(_0x58e6f3){logger[_0x45f7('0x20')](_0x58e6f3[_0x45f7('0x32')]);if(_0x58e6f3[_0x45f7('0x33')]){delete _0x58e6f3[_0x45f7('0x33')];}_0x3e8d5b[_0x45f7('0x26')](_0x531fb8)[_0x45f7('0x34')](_0x58e6f3);};}exports['index']=function(_0x25a540,_0x1d018e){var _0x56fd63={},_0x5b8491={},_0x5cd1b9={'count':0x0,'rows':[]};var _0x5c8e22=_[_0x45f7('0x35')](db[_0x45f7('0x36')][_0x45f7('0x37')],function(_0x1f9d87){return{'name':_0x1f9d87[_0x45f7('0x38')],'type':_0x1f9d87[_0x45f7('0x39')][_0x45f7('0x3a')]};});_0x5b8491[_0x45f7('0x3b')]=_[_0x45f7('0x35')](_0x5c8e22,_0x45f7('0x33'));_0x5b8491['query']=_[_0x45f7('0x3c')](_0x25a540['query']);_0x5b8491[_0x45f7('0x3d')]=_['intersection'](_0x5b8491[_0x45f7('0x3b')],_0x5b8491['query']);_0x56fd63[_0x45f7('0x3e')]=_['intersection'](_0x5b8491['model'],qs[_0x45f7('0x3f')](_0x25a540[_0x45f7('0x40')][_0x45f7('0x3f')]));_0x56fd63['attributes']=_0x56fd63[_0x45f7('0x3e')][_0x45f7('0x41')]?_0x56fd63[_0x45f7('0x3e')]:_0x5b8491[_0x45f7('0x3b')];if(!_0x25a540[_0x45f7('0x40')][_0x45f7('0x42')](_0x45f7('0x43'))){_0x56fd63[_0x45f7('0x28')]=qs[_0x45f7('0x28')](_0x25a540[_0x45f7('0x40')]['limit']);_0x56fd63[_0x45f7('0x44')]=qs[_0x45f7('0x44')](_0x25a540[_0x45f7('0x40')][_0x45f7('0x44')]);}_0x56fd63[_0x45f7('0x45')]=qs['sort'](_0x25a540[_0x45f7('0x40')][_0x45f7('0x46')]);_0x56fd63[_0x45f7('0x47')]=qs[_0x45f7('0x3d')](_[_0x45f7('0x48')](_0x25a540[_0x45f7('0x40')],_0x5b8491[_0x45f7('0x3d')]),_0x5c8e22);if(_0x25a540[_0x45f7('0x40')][_0x45f7('0x49')]){_0x56fd63[_0x45f7('0x47')]=_['merge'](_0x56fd63['where'],{'$or':_[_0x45f7('0x35')](_0x5c8e22,function(_0x4d5a94){if(_0x4d5a94[_0x45f7('0x39')]!=='VIRTUAL'){var _0x3199ac={};_0x3199ac[_0x4d5a94['name']]={'$like':'%'+_0x25a540[_0x45f7('0x40')][_0x45f7('0x49')]+'%'};return _0x3199ac;}})});}_0x56fd63=_['merge']({},_0x56fd63,_0x25a540['options']);var _0xa3821b={'where':_0x56fd63[_0x45f7('0x47')]};return db[_0x45f7('0x36')][_0x45f7('0x29')](_0xa3821b)[_0x45f7('0x1c')](function(_0x1ac429){_0x5cd1b9[_0x45f7('0x29')]=_0x1ac429;if(_0x25a540[_0x45f7('0x40')]['includeAll']){_0x56fd63[_0x45f7('0x4a')]=[{'all':!![]}];}return db['VoiceContext'][_0x45f7('0x4b')](_0x56fd63);})['then'](function(_0x49556f){_0x5cd1b9[_0x45f7('0x4c')]=_0x49556f;return _0x5cd1b9;})['then'](respondWithFilteredResult(_0x1d018e,_0x56fd63))[_0x45f7('0x23')](handleError(_0x1d018e,null));};exports[_0x45f7('0x4d')]=function(_0x4561f1,_0x5f53bf){var _0x2c3634={'raw':![],'where':{'id':_0x4561f1[_0x45f7('0x4e')]['id']}},_0x21df57={};_0x21df57[_0x45f7('0x3b')]=_[_0x45f7('0x3c')](db[_0x45f7('0x36')][_0x45f7('0x37')]);_0x21df57[_0x45f7('0x40')]=_[_0x45f7('0x3c')](_0x4561f1[_0x45f7('0x40')]);_0x21df57[_0x45f7('0x3d')]=_[_0x45f7('0x4f')](_0x21df57['model'],_0x21df57[_0x45f7('0x40')]);_0x2c3634[_0x45f7('0x3e')]=_[_0x45f7('0x4f')](_0x21df57[_0x45f7('0x3b')],qs['fields'](_0x4561f1[_0x45f7('0x40')][_0x45f7('0x3f')]));_0x2c3634[_0x45f7('0x3e')]=_0x2c3634['attributes']['length']?_0x2c3634['attributes']:_0x21df57[_0x45f7('0x3b')];if(_0x4561f1[_0x45f7('0x40')]['includeAll']){_0x2c3634[_0x45f7('0x4a')]=[{'all':!![]}];}_0x2c3634=_[_0x45f7('0x50')]({},_0x2c3634,_0x4561f1[_0x45f7('0x51')]);return db['VoiceContext'][_0x45f7('0x52')](_0x2c3634)[_0x45f7('0x1c')](handleEntityNotFound(_0x5f53bf,null))[_0x45f7('0x1c')](respondWithResult(_0x5f53bf,null))[_0x45f7('0x23')](handleError(_0x5f53bf,null));};exports[_0x45f7('0x53')]=function(_0x4b93b7,_0x455855,_0x30dfbc){var _0x129839;return db[_0x45f7('0x36')][_0x45f7('0x53')](_0x4b93b7['body'],{'raw':!![]})['then'](function(_0x4902e2){_0x129839=_0x4902e2;return db[_0x45f7('0x36')]['findAll']({'raw':!![]});})['then'](function(_0x5a155e){var _0x17233e=fs[_0x45f7('0x54')](path[_0x45f7('0x55')](config['root'],_0x45f7('0x56')),_0x45f7('0x57'));var _0x16140c=ejs[_0x45f7('0x58')](_0x17233e,{'contexts':_0x5a155e||[]});fs['writeFileSync'](_0x45f7('0x59'),_0x16140c);})[_0x45f7('0x1c')](function(){return respondWithRpcPromise(_0x45f7('0x5a'),_0x45f7('0x53'),{'module':_0x45f7('0x5b')});})['then'](function(){var _0x136d4a=_0x4b93b7[_0x45f7('0x5c')][_0x45f7('0x30')]({'plain':!![]});if(!_0x136d4a)throw new Error(_0x45f7('0x5d'));if(_0x136d4a['role']===_0x45f7('0x5c')){var _0x4b41d6=_0x129839['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'Contexts','userProfileId':_0x136d4a[_0x45f7('0x5e')]},'raw':!![]})[_0x45f7('0x1c')](function(_0x9d9cd3){if(_0x9d9cd3&&_0x9d9cd3['autoAssociation']===0x0){return db[_0x45f7('0x5f')][_0x45f7('0x53')]({'name':_0x4b41d6[_0x45f7('0x33')],'resourceId':_0x4b41d6['id'],'type':_0x9d9cd3[_0x45f7('0x33')],'sectionId':_0x9d9cd3['id']},{})[_0x45f7('0x1c')](function(){return _0x129839;});}else{return _0x129839;}})[_0x45f7('0x23')](function(_0x35b8a7){logger[_0x45f7('0x20')](_0x45f7('0x60'),_0x35b8a7);throw _0x35b8a7;});}return _0x129839;})[_0x45f7('0x1c')](respondWithResult(_0x455855,0xc9))[_0x45f7('0x23')](handleError(_0x455855,null));};exports['update']=function(_0x4666bb,_0x3ff83e,_0xf3dd5){var _0x3a516f;return db[_0x45f7('0x36')]['find']({'where':{'id':_0x4666bb[_0x45f7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3ff83e,null))[_0x45f7('0x1c')](saveUpdates(_0x4666bb['body'],null))[_0x45f7('0x1c')](function(_0x55e9e6){if(_0x55e9e6){_0x3a516f=_0x55e9e6;return db['VoiceContext'][_0x45f7('0x4b')]({'raw':!![]});}})['then'](function(_0x5c086e){var _0x5106da=fs[_0x45f7('0x54')](path['join'](config[_0x45f7('0x61')],_0x45f7('0x56')),_0x45f7('0x57'));var _0x198cdc=ejs[_0x45f7('0x58')](_0x5106da,{'contexts':_0x5c086e||[]});fs[_0x45f7('0x62')](_0x45f7('0x59'),_0x198cdc);})[_0x45f7('0x1c')](function(){return respondWithRpcPromise('Reload',_0x45f7('0x2e'),{'module':'chan_sip.so'});})[_0x45f7('0x1c')](function(){return _0x3a516f;})[_0x45f7('0x1c')](respondWithResult(_0x3ff83e,null))[_0x45f7('0x23')](handleError(_0x3ff83e,null));};exports['destroy']=function(_0x50aaa1,_0x130810,_0x416cb1){var _0x1d2ee5;return db[_0x45f7('0x36')][_0x45f7('0x52')]({'where':{'id':_0x50aaa1[_0x45f7('0x4e')]['id']}})[_0x45f7('0x1c')](handleEntityNotFound(_0x130810,null))[_0x45f7('0x1c')](removeEntity(_0x130810,null))[_0x45f7('0x1c')](function(){return db[_0x45f7('0x36')][_0x45f7('0x4b')]({'raw':!![]});})[_0x45f7('0x1c')](function(_0x190f5b){var _0x549d59=fs[_0x45f7('0x54')](path[_0x45f7('0x55')](config[_0x45f7('0x61')],_0x45f7('0x56')),_0x45f7('0x57'));var _0xc3935c=ejs[_0x45f7('0x58')](_0x549d59,{'contexts':_0x190f5b});fs[_0x45f7('0x62')](_0x45f7('0x59'),_0xc3935c);return respondWithRpcPromise(_0x45f7('0x5a'),_0x45f7('0x2f'),{'module':_0x45f7('0x5b')});})['catch'](handleError(_0x130810,null));};
\ No newline at end of file
+var _0x43a3=['length','includeAll','options','create','readFileSync','join','root','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Contexts','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','body','server/files/templates/context.ejs','utf8','rimraf','fast-json-patch','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','get','end','stack','send','index','map','rawAttributes','type','key','name','query','keys','filters','intersection','model','fields','attributes','nolimit','order','sort','where','pick','filter','merge','VoiceContext','include','findAll','rows','show'];(function(_0x3e5206,_0x42de8c){var _0x3e51e8=function(_0x722bc1){while(--_0x722bc1){_0x3e5206['push'](_0x3e5206['shift']());}};_0x3e51e8(++_0x42de8c);}(_0x43a3,0x7f));var _0x343a=function(_0x2cac20,_0x804dbe){_0x2cac20=_0x2cac20-0x0;var _0x576220=_0x43a3[_0x2cac20];return _0x576220;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x343a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x343a('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x343a('0x2'));var util=require(_0x343a('0x3'));var path=require('path');var sox=require(_0x343a('0x4'));var csv=require('to-csv');var ejs=require(_0x343a('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x343a('0x6'));var squel=require(_0x343a('0x7'));var crypto=require(_0x343a('0x8'));var jsforce=require(_0x343a('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x343a('0xa'));var querystring=require(_0x343a('0xb'));var Papa=require(_0x343a('0xc'));var Redis=require(_0x343a('0xd'));var authService=require(_0x343a('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x343a('0xf'));var hardwareService=require(_0x343a('0x10'));var logger=require(_0x343a('0x11'))(_0x343a('0x12'));var utils=require(_0x343a('0x13'));var config=require(_0x343a('0x14'));var licenseUtil=require(_0x343a('0x15'));var db=require(_0x343a('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x343a('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x342cd6,_0x57011f,_0x5b7a92,_0x282702){return new BPromise(function(_0x5b3c56,_0x25a508){var _0x5cf464=_0x282702||client;return _0x5cf464[_0x343a('0x18')](_0x342cd6,_0x5b7a92)[_0x343a('0x19')](function(_0x4f2d27){logger[_0x343a('0x1a')](_0x343a('0x1b'),_0x57011f,_0x343a('0x1c'));logger[_0x343a('0x1d')](_0x343a('0x1e'),_0x57011f,_0x343a('0x1c'),JSON[_0x343a('0x1f')](_0x4f2d27));if(_0x4f2d27[_0x343a('0x20')]){if(_0x4f2d27[_0x343a('0x20')][_0x343a('0x21')]===0x1f4){logger[_0x343a('0x20')](_0x343a('0x1b'),_0x57011f,_0x4f2d27[_0x343a('0x20')][_0x343a('0x22')]);return _0x25a508(_0x4f2d27[_0x343a('0x20')][_0x343a('0x22')]);}logger[_0x343a('0x20')](_0x343a('0x1b'),_0x57011f,_0x4f2d27[_0x343a('0x20')][_0x343a('0x22')]);return _0x5b3c56(_0x4f2d27['error'][_0x343a('0x22')]);}else{logger['info'](_0x343a('0x1b'),_0x57011f,_0x343a('0x1c'));_0x5b3c56(_0x4f2d27['result'][_0x343a('0x22')]);}})[_0x343a('0x23')](function(_0x35b85e){logger[_0x343a('0x20')](_0x343a('0x1b'),_0x57011f,_0x35b85e);_0x25a508(_0x35b85e);});});}function respondWithStatusCode(_0x4f306d,_0x3e9406){_0x3e9406=_0x3e9406||0xcc;return function(_0x4ea9fb){if(_0x4ea9fb){return _0x4f306d[_0x343a('0x24')](_0x3e9406);}return _0x4f306d[_0x343a('0x25')](_0x3e9406)['end']();};}function respondWithResult(_0x183641,_0x6ae4f8){_0x6ae4f8=_0x6ae4f8||0xc8;return function(_0x462570){if(_0x462570){return _0x183641[_0x343a('0x25')](_0x6ae4f8)[_0x343a('0x26')](_0x462570);}};}function respondWithFilteredResult(_0x59807f,_0x3aaa73){return function(_0x3096c3){if(_0x3096c3){var _0x2c0775=typeof _0x3aaa73[_0x343a('0x27')]===_0x343a('0x28')&&typeof _0x3aaa73[_0x343a('0x29')]==='undefined';var _0x3fcc59=_0x3096c3[_0x343a('0x2a')];var _0x473256=_0x2c0775?0x0:_0x3aaa73['offset'];var _0x248960=_0x2c0775?_0x3096c3[_0x343a('0x2a')]:_0x3aaa73[_0x343a('0x27')]+_0x3aaa73[_0x343a('0x29')];var _0x5a6a58;if(_0x248960>=_0x3fcc59){_0x248960=_0x3fcc59;_0x5a6a58=0xc8;}else{_0x5a6a58=0xce;}_0x59807f[_0x343a('0x25')](_0x5a6a58);return _0x59807f['set'](_0x343a('0x2b'),_0x473256+'-'+_0x248960+'/'+_0x3fcc59)['json'](_0x3096c3);}return null;};}function patchUpdates(_0x275c2c){return function(_0x284d37){try{jsonpatch[_0x343a('0x2c')](_0x284d37,_0x275c2c,!![]);}catch(_0xc8a533){return BPromise['reject'](_0xc8a533);}return _0x284d37[_0x343a('0x2d')]();};}function saveUpdates(_0x289489,_0x1587b0){return function(_0xcc6254){if(_0xcc6254){return _0xcc6254[_0x343a('0x2e')](_0x289489)[_0x343a('0x19')](function(_0x5c09b7){return _0x5c09b7;});}return null;};}function removeEntity(_0x6d3ba3,_0x5acb77){return function(_0x282b37){if(_0x282b37){return _0x282b37[_0x343a('0x2f')]()[_0x343a('0x19')](function(){var _0x2bda5b=_0x282b37[_0x343a('0x30')]({'plain':!![]});var _0xdd508='Contexts';return db['UserProfileResource'][_0x343a('0x2f')]({'where':{'type':_0xdd508,'resourceId':_0x2bda5b['id']}})[_0x343a('0x19')](function(){return _0x282b37;});})[_0x343a('0x19')](function(){_0x6d3ba3['status'](0xcc)[_0x343a('0x31')]();});}};}function handleEntityNotFound(_0x36cddf,_0x5b7865){return function(_0x235513){if(!_0x235513){_0x36cddf[_0x343a('0x24')](0x194);}return _0x235513;};}function handleError(_0x224f16,_0x245833){_0x245833=_0x245833||0x1f4;return function(_0x3d3810){logger[_0x343a('0x20')](_0x3d3810[_0x343a('0x32')]);if(_0x3d3810['name']){delete _0x3d3810['name'];}_0x224f16['status'](_0x245833)[_0x343a('0x33')](_0x3d3810);};}exports[_0x343a('0x34')]=function(_0x1b1b82,_0x2e7d4d){var _0x35b48f={},_0x35a68e={},_0x3c0280={'count':0x0,'rows':[]};var _0x45d5a9=_[_0x343a('0x35')](db['VoiceContext'][_0x343a('0x36')],function(_0x5b179b){return{'name':_0x5b179b['fieldName'],'type':_0x5b179b[_0x343a('0x37')][_0x343a('0x38')]};});_0x35a68e['model']=_[_0x343a('0x35')](_0x45d5a9,_0x343a('0x39'));_0x35a68e[_0x343a('0x3a')]=_[_0x343a('0x3b')](_0x1b1b82['query']);_0x35a68e[_0x343a('0x3c')]=_[_0x343a('0x3d')](_0x35a68e['model'],_0x35a68e['query']);_0x35b48f['attributes']=_[_0x343a('0x3d')](_0x35a68e[_0x343a('0x3e')],qs[_0x343a('0x3f')](_0x1b1b82['query'][_0x343a('0x3f')]));_0x35b48f[_0x343a('0x40')]=_0x35b48f[_0x343a('0x40')]['length']?_0x35b48f[_0x343a('0x40')]:_0x35a68e['model'];if(!_0x1b1b82[_0x343a('0x3a')]['hasOwnProperty'](_0x343a('0x41'))){_0x35b48f[_0x343a('0x29')]=qs[_0x343a('0x29')](_0x1b1b82[_0x343a('0x3a')]['limit']);_0x35b48f[_0x343a('0x27')]=qs[_0x343a('0x27')](_0x1b1b82[_0x343a('0x3a')][_0x343a('0x27')]);}_0x35b48f[_0x343a('0x42')]=qs[_0x343a('0x43')](_0x1b1b82[_0x343a('0x3a')]['sort']);_0x35b48f[_0x343a('0x44')]=qs[_0x343a('0x3c')](_[_0x343a('0x45')](_0x1b1b82[_0x343a('0x3a')],_0x35a68e[_0x343a('0x3c')]),_0x45d5a9);if(_0x1b1b82[_0x343a('0x3a')][_0x343a('0x46')]){_0x35b48f[_0x343a('0x44')]=_[_0x343a('0x47')](_0x35b48f[_0x343a('0x44')],{'$or':_[_0x343a('0x35')](_0x45d5a9,function(_0x488ef6){if(_0x488ef6[_0x343a('0x37')]!=='VIRTUAL'){var _0x3024d4={};_0x3024d4[_0x488ef6['name']]={'$like':'%'+_0x1b1b82['query']['filter']+'%'};return _0x3024d4;}})});}_0x35b48f=_[_0x343a('0x47')]({},_0x35b48f,_0x1b1b82['options']);var _0x1b89cf={'where':_0x35b48f[_0x343a('0x44')]};return db[_0x343a('0x48')][_0x343a('0x2a')](_0x1b89cf)['then'](function(_0x672b1f){_0x3c0280[_0x343a('0x2a')]=_0x672b1f;if(_0x1b1b82['query']['includeAll']){_0x35b48f[_0x343a('0x49')]=[{'all':!![]}];}return db[_0x343a('0x48')][_0x343a('0x4a')](_0x35b48f);})[_0x343a('0x19')](function(_0x99c1d0){_0x3c0280[_0x343a('0x4b')]=_0x99c1d0;return _0x3c0280;})['then'](respondWithFilteredResult(_0x2e7d4d,_0x35b48f))[_0x343a('0x23')](handleError(_0x2e7d4d,null));};exports[_0x343a('0x4c')]=function(_0x14e81a,_0x4588bb){var _0x25e5dd={'raw':![],'where':{'id':_0x14e81a['params']['id']}},_0x50284e={};_0x50284e[_0x343a('0x3e')]=_[_0x343a('0x3b')](db['VoiceContext']['rawAttributes']);_0x50284e[_0x343a('0x3a')]=_[_0x343a('0x3b')](_0x14e81a[_0x343a('0x3a')]);_0x50284e[_0x343a('0x3c')]=_[_0x343a('0x3d')](_0x50284e[_0x343a('0x3e')],_0x50284e[_0x343a('0x3a')]);_0x25e5dd[_0x343a('0x40')]=_[_0x343a('0x3d')](_0x50284e[_0x343a('0x3e')],qs['fields'](_0x14e81a[_0x343a('0x3a')][_0x343a('0x3f')]));_0x25e5dd[_0x343a('0x40')]=_0x25e5dd['attributes'][_0x343a('0x4d')]?_0x25e5dd[_0x343a('0x40')]:_0x50284e[_0x343a('0x3e')];if(_0x14e81a['query'][_0x343a('0x4e')]){_0x25e5dd[_0x343a('0x49')]=[{'all':!![]}];}_0x25e5dd=_['merge']({},_0x25e5dd,_0x14e81a[_0x343a('0x4f')]);return db['VoiceContext']['find'](_0x25e5dd)['then'](handleEntityNotFound(_0x4588bb,null))[_0x343a('0x19')](respondWithResult(_0x4588bb,null))[_0x343a('0x23')](handleError(_0x4588bb,null));};exports[_0x343a('0x50')]=function(_0x5cf684,_0x16a941,_0x431850){var _0x26c845;return db['VoiceContext'][_0x343a('0x50')](_0x5cf684['body'],{'raw':!![]})['then'](function(_0x5ae49a){_0x26c845=_0x5ae49a;return db[_0x343a('0x48')][_0x343a('0x4a')]({'raw':!![]});})[_0x343a('0x19')](function(_0x36ec2a){var _0x36c17b=fs[_0x343a('0x51')](path[_0x343a('0x52')](config[_0x343a('0x53')],'server/files/templates/context.ejs'),'utf8');var _0x556446=ejs[_0x343a('0x54')](_0x36c17b,{'contexts':_0x36ec2a||[]});fs[_0x343a('0x55')](_0x343a('0x56'),_0x556446);})[_0x343a('0x19')](function(){return respondWithRpcPromise(_0x343a('0x57'),_0x343a('0x50'),{'module':_0x343a('0x58')});})[_0x343a('0x19')](function(){var _0x434fd3=_0x5cf684[_0x343a('0x59')][_0x343a('0x30')]({'plain':!![]});if(!_0x434fd3)throw new Error(_0x343a('0x5a'));if(_0x434fd3[_0x343a('0x5b')]==='user'){var _0x35b6e7=_0x26c845['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x343a('0x5c'),'userProfileId':_0x434fd3[_0x343a('0x5d')]},'raw':!![]})['then'](function(_0xc7c923){if(_0xc7c923&&_0xc7c923[_0x343a('0x5e')]===0x0){return db[_0x343a('0x5f')][_0x343a('0x50')]({'name':_0x35b6e7['name'],'resourceId':_0x35b6e7['id'],'type':_0xc7c923[_0x343a('0x39')],'sectionId':_0xc7c923['id']},{})['then'](function(){return _0x26c845;});}else{return _0x26c845;}})[_0x343a('0x23')](function(_0x87bbfd){logger[_0x343a('0x20')](_0x343a('0x60'),_0x87bbfd);throw _0x87bbfd;});}return _0x26c845;})[_0x343a('0x19')](respondWithResult(_0x16a941,0xc9))[_0x343a('0x23')](handleError(_0x16a941,null));};exports['update']=function(_0x490919,_0x24b54e,_0x4a6034){var _0x158a50;return db[_0x343a('0x48')][_0x343a('0x61')]({'where':{'id':_0x490919[_0x343a('0x62')]['id']}})[_0x343a('0x19')](handleEntityNotFound(_0x24b54e,null))[_0x343a('0x19')](saveUpdates(_0x490919[_0x343a('0x63')],null))[_0x343a('0x19')](function(_0x5c704a){if(_0x5c704a){_0x158a50=_0x5c704a;return db[_0x343a('0x48')]['findAll']({'raw':!![]});}})['then'](function(_0x1cbbb6){var _0x23c7ca=fs['readFileSync'](path[_0x343a('0x52')](config['root'],_0x343a('0x64')),_0x343a('0x65'));var _0x29c871=ejs[_0x343a('0x54')](_0x23c7ca,{'contexts':_0x1cbbb6||[]});fs[_0x343a('0x55')](_0x343a('0x56'),_0x29c871);})['then'](function(){return respondWithRpcPromise('Reload','update',{'module':_0x343a('0x58')});})[_0x343a('0x19')](function(){return _0x158a50;})[_0x343a('0x19')](respondWithResult(_0x24b54e,null))[_0x343a('0x23')](handleError(_0x24b54e,null));};exports[_0x343a('0x2f')]=function(_0x5a3fbd,_0x5e8de8,_0x5c5b11){var _0x1e7447;return db[_0x343a('0x48')][_0x343a('0x61')]({'where':{'id':_0x5a3fbd[_0x343a('0x62')]['id']}})[_0x343a('0x19')](handleEntityNotFound(_0x5e8de8,null))[_0x343a('0x19')](removeEntity(_0x5e8de8,null))[_0x343a('0x19')](function(){return db[_0x343a('0x48')][_0x343a('0x4a')]({'raw':!![]});})[_0x343a('0x19')](function(_0x487eba){var _0x2bc484=fs[_0x343a('0x51')](path[_0x343a('0x52')](config[_0x343a('0x53')],_0x343a('0x64')),_0x343a('0x65'));var _0xf6841f=ejs[_0x343a('0x54')](_0x2bc484,{'contexts':_0x487eba});fs[_0x343a('0x55')](_0x343a('0x56'),_0xf6841f);return respondWithRpcPromise('Reload',_0x343a('0x2f'),{'module':_0x343a('0x58')});})[_0x343a('0x23')](handleError(_0x5e8de8,null));};
\ No newline at end of file
index fb3f10a..22ac6f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb640=['./voiceContext.attributes','define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x1eb82d,_0x1e23cb){var _0x2c9502=function(_0x4a3500){while(--_0x4a3500){_0x1eb82d['push'](_0x1eb82d['shift']());}};_0x2c9502(++_0x1e23cb);}(_0xb640,0xc7));var _0x0b64=function(_0x9517c4,_0x4efdb8){_0x9517c4=_0x9517c4-0x0;var _0x5623f7=_0xb640[_0x9517c4];return _0x5623f7;};'use strict';var _=require(_0x0b64('0x0'));var util=require(_0x0b64('0x1'));var logger=require(_0x0b64('0x2'))(_0x0b64('0x3'));var moment=require(_0x0b64('0x4'));var BPromise=require(_0x0b64('0x5'));var rp=require(_0x0b64('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0b64('0x7'));var config=require(_0x0b64('0x8'));var attributes=require(_0x0b64('0x9'));module['exports']=function(_0x159628,_0x47c4da){return _0x159628[_0x0b64('0xa')](_0x0b64('0xb'),attributes,{'tableName':_0x0b64('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x90fc=['path','exports','define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment'];(function(_0x476b00,_0x250877){var _0x44ec8e=function(_0xec6b23){while(--_0xec6b23){_0x476b00['push'](_0x476b00['shift']());}};_0x44ec8e(++_0x250877);}(_0x90fc,0xe1));var _0xc90f=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x90fc[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xc90f('0x0'));var util=require(_0xc90f('0x1'));var logger=require(_0xc90f('0x2'))(_0xc90f('0x3'));var moment=require(_0xc90f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc90f('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceContext.attributes');module[_0xc90f('0x6')]=function(_0x17685e,_0x56f210){return _0x17685e[_0xc90f('0x7')](_0xc90f('0x8'),attributes,{'tableName':_0xc90f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a46706f..67e1eb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85cf=['jayson/promise','client','request','info','debug','request\x20sent','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4e623c,_0x110ef0){var _0x43fbbf=function(_0x38eafe){while(--_0x38eafe){_0x4e623c['push'](_0x4e623c['shift']());}};_0x43fbbf(++_0x110ef0);}(_0x85cf,0x76));var _0xf85c=function(_0x20f433,_0x19154a){_0x20f433=_0x20f433-0x0;var _0x5ad992=_0x85cf[_0x20f433];return _0x5ad992;};'use strict';var _=require('lodash');var util=require(_0xf85c('0x0'));var moment=require(_0xf85c('0x1'));var BPromise=require(_0xf85c('0x2'));var rs=require(_0xf85c('0x3'));var fs=require('fs');var Redis=require(_0xf85c('0x4'));var db=require(_0xf85c('0x5'))['db'];var utils=require(_0xf85c('0x6'));var logger=require(_0xf85c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf85c('0x8'));var client=jayson[_0xf85c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x386a60,_0x41d08d,_0xe1be83){return new BPromise(function(_0x1bebcf,_0x1857d9){return client[_0xf85c('0xa')](_0x386a60,_0xe1be83)['then'](function(_0x25aa6e){logger[_0xf85c('0xb')]('VoiceContext,\x20%s,\x20%s',_0x41d08d,'request\x20sent');logger[_0xf85c('0xc')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x41d08d,_0xf85c('0xd'),JSON[_0xf85c('0xe')](_0x25aa6e));if(_0x25aa6e[_0xf85c('0xf')]){if(_0x25aa6e['error'][_0xf85c('0x10')]===0x1f4){logger[_0xf85c('0xf')](_0xf85c('0x11'),_0x41d08d,_0x25aa6e[_0xf85c('0xf')]['message']);return _0x1857d9(_0x25aa6e[_0xf85c('0xf')][_0xf85c('0x12')]);}logger[_0xf85c('0xf')](_0xf85c('0x11'),_0x41d08d,_0x25aa6e['error'][_0xf85c('0x12')]);return _0x1bebcf(_0x25aa6e['error'][_0xf85c('0x12')]);}else{logger['info'](_0xf85c('0x11'),_0x41d08d,'request\x20sent');_0x1bebcf(_0x25aa6e[_0xf85c('0x13')]['message']);}})[_0xf85c('0x14')](function(_0x30b768){logger[_0xf85c('0xf')](_0xf85c('0x11'),_0x41d08d,_0x30b768);_0x1857d9(_0x30b768);});});}
\ No newline at end of file
+var _0xe5fc=['http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x39ff5a,_0x59a24f){var _0xda9abc=function(_0x35efe2){while(--_0x35efe2){_0x39ff5a['push'](_0x39ff5a['shift']());}};_0xda9abc(++_0x59a24f);}(_0xe5fc,0x109));var _0xce5f=function(_0x7e3626,_0xac2b4b){_0x7e3626=_0x7e3626-0x0;var _0x44547e=_0xe5fc[_0x7e3626];return _0x44547e;};'use strict';var _=require(_0xce5f('0x0'));var util=require('util');var moment=require(_0xce5f('0x1'));var BPromise=require(_0xce5f('0x2'));var rs=require(_0xce5f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xce5f('0x4'))('rpc');var config=require(_0xce5f('0x5'));var jayson=require(_0xce5f('0x6'));var client=jayson[_0xce5f('0x7')][_0xce5f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3b77ef,_0x30a150,_0x2b64dc){return new BPromise(function(_0x3451af,_0x4fa651){return client[_0xce5f('0x9')](_0x3b77ef,_0x2b64dc)[_0xce5f('0xa')](function(_0x29a7bf){logger[_0xce5f('0xb')](_0xce5f('0xc'),_0x30a150,_0xce5f('0xd'));logger[_0xce5f('0xe')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x30a150,_0xce5f('0xd'),JSON[_0xce5f('0xf')](_0x29a7bf));if(_0x29a7bf[_0xce5f('0x10')]){if(_0x29a7bf[_0xce5f('0x10')][_0xce5f('0x11')]===0x1f4){logger[_0xce5f('0x10')](_0xce5f('0xc'),_0x30a150,_0x29a7bf[_0xce5f('0x10')][_0xce5f('0x12')]);return _0x4fa651(_0x29a7bf['error']['message']);}logger['error'](_0xce5f('0xc'),_0x30a150,_0x29a7bf[_0xce5f('0x10')][_0xce5f('0x12')]);return _0x3451af(_0x29a7bf[_0xce5f('0x10')]['message']);}else{logger[_0xce5f('0xb')](_0xce5f('0xc'),_0x30a150,_0xce5f('0xd'));_0x3451af(_0x29a7bf[_0xce5f('0x13')][_0xce5f('0x12')]);}})[_0xce5f('0x14')](function(_0x1544ba){logger[_0xce5f('0x10')](_0xce5f('0xc'),_0x30a150,_0x1544ba);_0x4fa651(_0x1544ba);});});}
\ No newline at end of file
index d03d72b..5d34d13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68ef=['show','post','create','put','update','delete','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x2313a6,_0x37b377){var _0x5414ec=function(_0x5eade4){while(--_0x5eade4){_0x2313a6['push'](_0x2313a6['shift']());}};_0x5414ec(++_0x37b377);}(_0x68ef,0x196));var _0xf68e=function(_0x136476,_0x1d4dfb){_0x136476=_0x136476-0x0;var _0x1347f3=_0x68ef[_0x136476];return _0x1347f3;};'use strict';var multer=require(_0xf68e('0x0'));var util=require('util');var path=require(_0xf68e('0x1'));var timeout=require(_0xf68e('0x2'));var express=require(_0xf68e('0x3'));var router=express['Router']();var fs_extra=require(_0xf68e('0x4'));var auth=require(_0xf68e('0x5'));var interaction=require(_0xf68e('0x6'));var config=require(_0xf68e('0x7'));var controller=require(_0xf68e('0x8'));router[_0xf68e('0x9')]('/',auth[_0xf68e('0xa')](),controller[_0xf68e('0xb')]);router[_0xf68e('0x9')](_0xf68e('0xc'),auth[_0xf68e('0xa')](),controller['describe']);router[_0xf68e('0x9')](_0xf68e('0xd'),auth['isAuthenticated'](),controller[_0xf68e('0xe')]);router[_0xf68e('0xf')]('/',auth[_0xf68e('0xa')](),controller[_0xf68e('0x10')]);router[_0xf68e('0x11')]('/:id',auth[_0xf68e('0xa')](),controller[_0xf68e('0x12')]);router[_0xf68e('0x13')]('/:id',auth[_0xf68e('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x066f=['describe','/:id','show','post','put','update','exports','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x164ddc,_0x12ed72){var _0x54ff05=function(_0x27aafa){while(--_0x27aafa){_0x164ddc['push'](_0x164ddc['shift']());}};_0x54ff05(++_0x12ed72);}(_0x066f,0x137));var _0xf066=function(_0x575ea2,_0x47569f){_0x575ea2=_0x575ea2-0x0;var _0x4ce5a4=_0x066f[_0x575ea2];return _0x4ce5a4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf066('0x0'));var timeout=require('connect-timeout');var express=require(_0xf066('0x1'));var router=express[_0xf066('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xf066('0x3'));var interaction=require(_0xf066('0x4'));var config=require(_0xf066('0x5'));var controller=require('./voiceDialReport.controller');router[_0xf066('0x6')]('/',auth[_0xf066('0x7')](),controller[_0xf066('0x8')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xf066('0x9')]);router[_0xf066('0x6')](_0xf066('0xa'),auth['isAuthenticated'](),controller[_0xf066('0xb')]);router[_0xf066('0xc')]('/',auth[_0xf066('0x7')](),controller['create']);router[_0xf066('0xd')]('/:id',auth[_0xf066('0x7')](),controller[_0xf066('0xe')]);router['delete'](_0xf066('0xa'),auth[_0xf066('0x7')](),controller['destroy']);module[_0xf066('0xf')]=router;
\ No newline at end of file
index cc01a63..0ed90b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x51ed46,_0x4b7ad2){var _0xc2b1e7=function(_0x43ec08){while(--_0x43ec08){_0x51ed46['push'](_0x51ed46['shift']());}};_0xc2b1e7(++_0x4b7ad2);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x511d41,_0x371d28){_0x511d41=_0x511d41-0x0;var _0x3184d6=_0xd6d6[_0x511d41];return _0x3184d6;};'use strict';var Sequelize=require(_0x6d6d('0x0'));module[_0x6d6d('0x1')]={'privilege':{'type':Sequelize[_0x6d6d('0x2')]},'channel':{'type':Sequelize[_0x6d6d('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'calleridnum':{'type':Sequelize[_0x6d6d('0x2')]},'calleridname':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'language':{'type':Sequelize[_0x6d6d('0x2')]},'accountcode':{'type':Sequelize[_0x6d6d('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x6d6d('0x2')]},'priority':{'type':Sequelize[_0x6d6d('0x3')]},'uniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'linkedid':{'type':Sequelize[_0x6d6d('0x2')]},'destchannel':{'type':Sequelize[_0x6d6d('0x2')]},'destchannelstate':{'type':Sequelize[_0x6d6d('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'destlanguage':{'type':Sequelize[_0x6d6d('0x2')]},'destaccountcode':{'type':Sequelize[_0x6d6d('0x2')]},'destcontext':{'type':Sequelize[_0x6d6d('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x6d6d('0x3')]},'destuniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x6d6d('0x2')]},'starttime':{'type':Sequelize[_0x6d6d('0x4')]},'answertime':{'type':Sequelize[_0x6d6d('0x4')]},'endtime':{'type':Sequelize[_0x6d6d('0x4')]},'lastevent':{'type':Sequelize[_0x6d6d('0x2')],'comment':_0x6d6d('0x5')},'routeId':{'type':Sequelize[_0x6d6d('0x3')]},'duration':{'type':Sequelize[_0x6d6d('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x6d6d('0x3')]}};
\ No newline at end of file
+var _0x9f62=['exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x301ca3,_0x4233c5){var _0x131292=function(_0x4b64fd){while(--_0x4b64fd){_0x301ca3['push'](_0x301ca3['shift']());}};_0x131292(++_0x4233c5);}(_0x9f62,0x154));var _0x29f6=function(_0x4f49cf,_0x25d447){_0x4f49cf=_0x4f49cf-0x0;var _0x60936=_0x9f62[_0x4f49cf];return _0x60936;};'use strict';var Sequelize=require('sequelize');module[_0x29f6('0x0')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x29f6('0x1')]},'channelstate':{'type':Sequelize[_0x29f6('0x2')]},'channelstatedesc':{'type':Sequelize[_0x29f6('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x29f6('0x1')]},'connectedlinename':{'type':Sequelize[_0x29f6('0x1')]},'language':{'type':Sequelize[_0x29f6('0x1')]},'accountcode':{'type':Sequelize[_0x29f6('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x29f6('0x1')]},'priority':{'type':Sequelize[_0x29f6('0x2')]},'uniqueid':{'type':Sequelize[_0x29f6('0x1')]},'linkedid':{'type':Sequelize[_0x29f6('0x1')]},'destchannel':{'type':Sequelize[_0x29f6('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x29f6('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x29f6('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x29f6('0x1')]},'destexten':{'type':Sequelize[_0x29f6('0x1')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0x29f6('0x1')]},'destlinkedid':{'type':Sequelize[_0x29f6('0x1')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x29f6('0x3')]},'lastevent':{'type':Sequelize[_0x29f6('0x1')],'comment':_0x29f6('0x4')},'routeId':{'type':Sequelize[_0x29f6('0x2')]},'duration':{'type':Sequelize[_0x29f6('0x2')]},'holdtime':{'type':Sequelize[_0x29f6('0x2')]},'billableseconds':{'type':Sequelize[_0x29f6('0x2')]}};
\ No newline at end of file
index ffb65e4..bc5e28e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe993=['status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','sendStatus','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','VoiceDialReport','then','includeAll','findAll','rows','show','params','include','catch','create','body','find','describe','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe993,0x1ea));var _0x3e99=function(_0x509692,_0xe7045d){_0x509692=_0x509692-0x0;var _0x25266e=_0xe993[_0x509692];return _0x25266e;};'use strict';var emlformat=require(_0x3e99('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3e99('0x1'));var jsonpatch=require(_0x3e99('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3e99('0x3'));var Mustache=require('mustache');var util=require(_0x3e99('0x4'));var path=require(_0x3e99('0x5'));var sox=require(_0x3e99('0x6'));var csv=require('to-csv');var ejs=require(_0x3e99('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3e99('0x8'));var squel=require(_0x3e99('0x9'));var crypto=require(_0x3e99('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x3e99('0xb'));var toCsv=require(_0x3e99('0xc'));var querystring=require(_0x3e99('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3e99('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x3e99('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3e99('0x10'))(_0x3e99('0x11'));var utils=require(_0x3e99('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x3e99('0x13'));var db=require(_0x3e99('0x14'))['db'];function respondWithStatusCode(_0x33ebf4,_0x82a58e){_0x82a58e=_0x82a58e||0xcc;return function(_0x1407e5){if(_0x1407e5){return _0x33ebf4['sendStatus'](_0x82a58e);}return _0x33ebf4[_0x3e99('0x15')](_0x82a58e)[_0x3e99('0x16')]();};}function respondWithResult(_0x318f09,_0x3e2c8f){_0x3e2c8f=_0x3e2c8f||0xc8;return function(_0x52f236){if(_0x52f236){return _0x318f09['status'](_0x3e2c8f)[_0x3e99('0x17')](_0x52f236);}};}function respondWithFilteredResult(_0x2cc41b,_0x3b2051){return function(_0x135f19){if(_0x135f19){var _0x14c0c3=typeof _0x3b2051[_0x3e99('0x18')]==='undefined'&&typeof _0x3b2051['limit']===_0x3e99('0x19');var _0x1a6551=_0x135f19[_0x3e99('0x1a')];var _0x34b3b0=_0x14c0c3?0x0:_0x3b2051[_0x3e99('0x18')];var _0x569061=_0x14c0c3?_0x135f19[_0x3e99('0x1a')]:_0x3b2051[_0x3e99('0x18')]+_0x3b2051[_0x3e99('0x1b')];var _0x5800b7;if(_0x569061>=_0x1a6551){_0x569061=_0x1a6551;_0x5800b7=0xc8;}else{_0x5800b7=0xce;}_0x2cc41b['status'](_0x5800b7);return _0x2cc41b[_0x3e99('0x1c')](_0x3e99('0x1d'),_0x34b3b0+'-'+_0x569061+'/'+_0x1a6551)['json'](_0x135f19);}return null;};}function patchUpdates(_0x86bf80){return function(_0x37059c){try{jsonpatch[_0x3e99('0x1e')](_0x37059c,_0x86bf80,!![]);}catch(_0x2a57cb){return BPromise[_0x3e99('0x1f')](_0x2a57cb);}return _0x37059c['save']();};}function saveUpdates(_0x123f62,_0x577805){return function(_0x53e8d8){if(_0x53e8d8){return _0x53e8d8[_0x3e99('0x20')](_0x123f62)['then'](function(_0x4f0adc){return _0x4f0adc;});}return null;};}function removeEntity(_0x297636,_0x351c64){return function(_0x1bc227){if(_0x1bc227){return _0x1bc227[_0x3e99('0x21')]()['then'](function(){_0x297636[_0x3e99('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59f29e,_0x47d66b){return function(_0x2ee50a){if(!_0x2ee50a){_0x59f29e[_0x3e99('0x22')](0x194);}return _0x2ee50a;};}function handleError(_0x5cb365,_0x44a544){_0x44a544=_0x44a544||0x1f4;return function(_0x49507d){logger[_0x3e99('0x23')](_0x49507d[_0x3e99('0x24')]);if(_0x49507d[_0x3e99('0x25')]){delete _0x49507d['name'];}_0x5cb365['status'](_0x44a544)['send'](_0x49507d);};}exports['index']=function(_0x51898c,_0x5f0e67){var _0x5ee5c3={},_0x327956={},_0x5cf242={'count':0x0,'rows':[]};var _0x152b97=_[_0x3e99('0x26')](db['VoiceDialReport'][_0x3e99('0x27')],function(_0x2de86f){return{'name':_0x2de86f[_0x3e99('0x28')],'type':_0x2de86f[_0x3e99('0x29')][_0x3e99('0x2a')]};});_0x327956[_0x3e99('0x2b')]=_[_0x3e99('0x26')](_0x152b97,_0x3e99('0x25'));_0x327956[_0x3e99('0x2c')]=_[_0x3e99('0x2d')](_0x51898c[_0x3e99('0x2c')]);_0x327956[_0x3e99('0x2e')]=_[_0x3e99('0x2f')](_0x327956['model'],_0x327956[_0x3e99('0x2c')]);_0x5ee5c3[_0x3e99('0x30')]=_['intersection'](_0x327956['model'],qs[_0x3e99('0x31')](_0x51898c[_0x3e99('0x2c')][_0x3e99('0x31')]));_0x5ee5c3[_0x3e99('0x30')]=_0x5ee5c3[_0x3e99('0x30')][_0x3e99('0x32')]?_0x5ee5c3[_0x3e99('0x30')]:_0x327956[_0x3e99('0x2b')];if(!_0x51898c[_0x3e99('0x2c')][_0x3e99('0x33')](_0x3e99('0x34'))){_0x5ee5c3['limit']=qs['limit'](_0x51898c['query'][_0x3e99('0x1b')]);_0x5ee5c3[_0x3e99('0x18')]=qs[_0x3e99('0x18')](_0x51898c[_0x3e99('0x2c')]['offset']);}_0x5ee5c3['order']=qs[_0x3e99('0x35')](_0x51898c[_0x3e99('0x2c')]['sort']);_0x5ee5c3['where']=qs['filters'](_[_0x3e99('0x36')](_0x51898c[_0x3e99('0x2c')],_0x327956[_0x3e99('0x2e')]),_0x152b97);if(_0x51898c[_0x3e99('0x2c')]['filter']){_0x5ee5c3[_0x3e99('0x37')]=_[_0x3e99('0x38')](_0x5ee5c3[_0x3e99('0x37')],{'$or':_['map'](_0x152b97,function(_0x44649a){if(_0x44649a[_0x3e99('0x29')]!==_0x3e99('0x39')){var _0xc40e47={};_0xc40e47[_0x44649a[_0x3e99('0x25')]]={'$like':'%'+_0x51898c[_0x3e99('0x2c')][_0x3e99('0x3a')]+'%'};return _0xc40e47;}})});}_0x5ee5c3=_[_0x3e99('0x38')]({},_0x5ee5c3,_0x51898c[_0x3e99('0x3b')]);var _0x32f6fb={'where':_0x5ee5c3[_0x3e99('0x37')]};return db[_0x3e99('0x3c')]['count'](_0x32f6fb)[_0x3e99('0x3d')](function(_0x21e677){_0x5cf242[_0x3e99('0x1a')]=_0x21e677;if(_0x51898c[_0x3e99('0x2c')][_0x3e99('0x3e')]){_0x5ee5c3['include']=[{'all':!![]}];}return db[_0x3e99('0x3c')][_0x3e99('0x3f')](_0x5ee5c3);})[_0x3e99('0x3d')](function(_0x14e2ec){_0x5cf242[_0x3e99('0x40')]=_0x14e2ec;return _0x5cf242;})[_0x3e99('0x3d')](respondWithFilteredResult(_0x5f0e67,_0x5ee5c3))['catch'](handleError(_0x5f0e67,null));};exports[_0x3e99('0x41')]=function(_0x2553a3,_0x8776dc){var _0x15a9b2={'raw':!![],'where':{'id':_0x2553a3[_0x3e99('0x42')]['id']}},_0xe5abd2={};_0xe5abd2['model']=_[_0x3e99('0x2d')](db[_0x3e99('0x3c')][_0x3e99('0x27')]);_0xe5abd2['query']=_[_0x3e99('0x2d')](_0x2553a3[_0x3e99('0x2c')]);_0xe5abd2['filters']=_['intersection'](_0xe5abd2[_0x3e99('0x2b')],_0xe5abd2[_0x3e99('0x2c')]);_0x15a9b2[_0x3e99('0x30')]=_['intersection'](_0xe5abd2[_0x3e99('0x2b')],qs[_0x3e99('0x31')](_0x2553a3[_0x3e99('0x2c')][_0x3e99('0x31')]));_0x15a9b2[_0x3e99('0x30')]=_0x15a9b2[_0x3e99('0x30')][_0x3e99('0x32')]?_0x15a9b2[_0x3e99('0x30')]:_0xe5abd2[_0x3e99('0x2b')];if(_0x2553a3[_0x3e99('0x2c')][_0x3e99('0x3e')]){_0x15a9b2[_0x3e99('0x43')]=[{'all':!![]}];}_0x15a9b2=_['merge']({},_0x15a9b2,_0x2553a3['options']);return db[_0x3e99('0x3c')]['find'](_0x15a9b2)[_0x3e99('0x3d')](handleEntityNotFound(_0x8776dc,null))['then'](respondWithResult(_0x8776dc,null))[_0x3e99('0x44')](handleError(_0x8776dc,null));};exports[_0x3e99('0x45')]=function(_0x5cc9e6,_0x74c6ea){return db['VoiceDialReport']['create'](_0x5cc9e6[_0x3e99('0x46')],{})[_0x3e99('0x3d')](respondWithResult(_0x74c6ea,0xc9))[_0x3e99('0x44')](handleError(_0x74c6ea,null));};exports[_0x3e99('0x20')]=function(_0x6c9edf,_0x5ea073){if(_0x6c9edf[_0x3e99('0x46')]['id']){delete _0x6c9edf[_0x3e99('0x46')]['id'];}return db[_0x3e99('0x3c')][_0x3e99('0x47')]({'where':{'id':_0x6c9edf['params']['id']}})['then'](handleEntityNotFound(_0x5ea073,null))[_0x3e99('0x3d')](saveUpdates(_0x6c9edf[_0x3e99('0x46')],null))[_0x3e99('0x3d')](respondWithResult(_0x5ea073,null))[_0x3e99('0x44')](handleError(_0x5ea073,null));};exports[_0x3e99('0x21')]=function(_0x162a69,_0x39fe43){return db[_0x3e99('0x3c')][_0x3e99('0x47')]({'where':{'id':_0x162a69[_0x3e99('0x42')]['id']}})[_0x3e99('0x3d')](handleEntityNotFound(_0x39fe43,null))['then'](removeEntity(_0x39fe43,null))[_0x3e99('0x44')](handleError(_0x39fe43,null));};exports['describe']=function(_0xdd6c54,_0x26a329){return db[_0x3e99('0x3c')][_0x3e99('0x48')]()[_0x3e99('0x3d')](respondWithResult(_0x26a329,null))['catch'](handleError(_0x26a329,null));};
\ No newline at end of file
+var _0x1336=['ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','error','name','send','map','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','options','VoiceDialReport','includeAll','findAll','rows','catch','show','params','include','merge','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv'];(function(_0x3f7471,_0x2cfcef){var _0x5aa4e4=function(_0x732e61){while(--_0x732e61){_0x3f7471['push'](_0x3f7471['shift']());}};_0x5aa4e4(++_0x2cfcef);}(_0x1336,0x122));var _0x6133=function(_0x2047d0,_0x589165){_0x2047d0=_0x2047d0-0x0;var _0x14ebfc=_0x1336[_0x2047d0];return _0x14ebfc;};'use strict';var emlformat=require(_0x6133('0x0'));var rimraf=require(_0x6133('0x1'));var zipdir=require(_0x6133('0x2'));var jsonpatch=require(_0x6133('0x3'));var rp=require('request-promise');var moment=require(_0x6133('0x4'));var BPromise=require(_0x6133('0x5'));var Mustache=require(_0x6133('0x6'));var util=require(_0x6133('0x7'));var path=require(_0x6133('0x8'));var sox=require('sox');var csv=require(_0x6133('0x9'));var ejs=require(_0x6133('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6133('0xb'));var squel=require('squel');var crypto=require(_0x6133('0xc'));var jsforce=require(_0x6133('0xd'));var deskjs=require(_0x6133('0xe'));var toCsv=require(_0x6133('0x9'));var querystring=require(_0x6133('0xf'));var Papa=require(_0x6133('0x10'));var Redis=require(_0x6133('0x11'));var authService=require(_0x6133('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6133('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6133('0x14'));var utils=require('../../config/utils');var config=require(_0x6133('0x15'));var licenseUtil=require(_0x6133('0x16'));var db=require(_0x6133('0x17'))['db'];function respondWithStatusCode(_0x7089fc,_0xe5dd7a){_0xe5dd7a=_0xe5dd7a||0xcc;return function(_0x2d6615){if(_0x2d6615){return _0x7089fc[_0x6133('0x18')](_0xe5dd7a);}return _0x7089fc[_0x6133('0x19')](_0xe5dd7a)[_0x6133('0x1a')]();};}function respondWithResult(_0x18ca5c,_0x23c752){_0x23c752=_0x23c752||0xc8;return function(_0x3b758b){if(_0x3b758b){return _0x18ca5c[_0x6133('0x19')](_0x23c752)['json'](_0x3b758b);}};}function respondWithFilteredResult(_0x72e517,_0x5020c3){return function(_0x1177a1){if(_0x1177a1){var _0x402612=typeof _0x5020c3[_0x6133('0x1b')]===_0x6133('0x1c')&&typeof _0x5020c3['limit']==='undefined';var _0x20da57=_0x1177a1['count'];var _0x9d5174=_0x402612?0x0:_0x5020c3[_0x6133('0x1b')];var _0x4f0b15=_0x402612?_0x1177a1[_0x6133('0x1d')]:_0x5020c3[_0x6133('0x1b')]+_0x5020c3[_0x6133('0x1e')];var _0x2ba246;if(_0x4f0b15>=_0x20da57){_0x4f0b15=_0x20da57;_0x2ba246=0xc8;}else{_0x2ba246=0xce;}_0x72e517[_0x6133('0x19')](_0x2ba246);return _0x72e517[_0x6133('0x1f')](_0x6133('0x20'),_0x9d5174+'-'+_0x4f0b15+'/'+_0x20da57)[_0x6133('0x21')](_0x1177a1);}return null;};}function patchUpdates(_0x430104){return function(_0x15791d){try{jsonpatch[_0x6133('0x22')](_0x15791d,_0x430104,!![]);}catch(_0x3a4d11){return BPromise[_0x6133('0x23')](_0x3a4d11);}return _0x15791d[_0x6133('0x24')]();};}function saveUpdates(_0xa468e4,_0x3c624f){return function(_0x51bf75){if(_0x51bf75){return _0x51bf75[_0x6133('0x25')](_0xa468e4)[_0x6133('0x26')](function(_0x12a5de){return _0x12a5de;});}return null;};}function removeEntity(_0x4f309c,_0xb7d6af){return function(_0x5a7fcd){if(_0x5a7fcd){return _0x5a7fcd['destroy']()[_0x6133('0x26')](function(){_0x4f309c[_0x6133('0x19')](0xcc)[_0x6133('0x1a')]();});}};}function handleEntityNotFound(_0x2c5d4a,_0x2aeda9){return function(_0x14d611){if(!_0x14d611){_0x2c5d4a['sendStatus'](0x194);}return _0x14d611;};}function handleError(_0x2ccafb,_0x26ac78){_0x26ac78=_0x26ac78||0x1f4;return function(_0x23bfb7){logger[_0x6133('0x27')](_0x23bfb7['stack']);if(_0x23bfb7[_0x6133('0x28')]){delete _0x23bfb7[_0x6133('0x28')];}_0x2ccafb[_0x6133('0x19')](_0x26ac78)[_0x6133('0x29')](_0x23bfb7);};}exports['index']=function(_0x3f795b,_0x1425f4){var _0x1d776f={},_0x3aa35f={},_0x2a81ea={'count':0x0,'rows':[]};var _0x1dcf8c=_[_0x6133('0x2a')](db['VoiceDialReport'][_0x6133('0x2b')],function(_0x4757f4){return{'name':_0x4757f4['fieldName'],'type':_0x4757f4['type'][_0x6133('0x2c')]};});_0x3aa35f[_0x6133('0x2d')]=_[_0x6133('0x2a')](_0x1dcf8c,_0x6133('0x28'));_0x3aa35f[_0x6133('0x2e')]=_[_0x6133('0x2f')](_0x3f795b[_0x6133('0x2e')]);_0x3aa35f[_0x6133('0x30')]=_[_0x6133('0x31')](_0x3aa35f[_0x6133('0x2d')],_0x3aa35f[_0x6133('0x2e')]);_0x1d776f['attributes']=_[_0x6133('0x31')](_0x3aa35f[_0x6133('0x2d')],qs[_0x6133('0x32')](_0x3f795b[_0x6133('0x2e')][_0x6133('0x32')]));_0x1d776f[_0x6133('0x33')]=_0x1d776f['attributes']['length']?_0x1d776f[_0x6133('0x33')]:_0x3aa35f[_0x6133('0x2d')];if(!_0x3f795b['query'][_0x6133('0x34')](_0x6133('0x35'))){_0x1d776f['limit']=qs[_0x6133('0x1e')](_0x3f795b['query'][_0x6133('0x1e')]);_0x1d776f[_0x6133('0x1b')]=qs[_0x6133('0x1b')](_0x3f795b[_0x6133('0x2e')][_0x6133('0x1b')]);}_0x1d776f[_0x6133('0x36')]=qs[_0x6133('0x37')](_0x3f795b[_0x6133('0x2e')]['sort']);_0x1d776f[_0x6133('0x38')]=qs[_0x6133('0x30')](_[_0x6133('0x39')](_0x3f795b['query'],_0x3aa35f['filters']),_0x1dcf8c);if(_0x3f795b['query'][_0x6133('0x3a')]){_0x1d776f[_0x6133('0x38')]=_['merge'](_0x1d776f[_0x6133('0x38')],{'$or':_[_0x6133('0x2a')](_0x1dcf8c,function(_0x1c4491){if(_0x1c4491[_0x6133('0x3b')]!=='VIRTUAL'){var _0x3290f9={};_0x3290f9[_0x1c4491[_0x6133('0x28')]]={'$like':'%'+_0x3f795b[_0x6133('0x2e')][_0x6133('0x3a')]+'%'};return _0x3290f9;}})});}_0x1d776f=_['merge']({},_0x1d776f,_0x3f795b[_0x6133('0x3c')]);var _0x193403={'where':_0x1d776f['where']};return db[_0x6133('0x3d')][_0x6133('0x1d')](_0x193403)[_0x6133('0x26')](function(_0x166df7){_0x2a81ea[_0x6133('0x1d')]=_0x166df7;if(_0x3f795b[_0x6133('0x2e')][_0x6133('0x3e')]){_0x1d776f['include']=[{'all':!![]}];}return db[_0x6133('0x3d')][_0x6133('0x3f')](_0x1d776f);})[_0x6133('0x26')](function(_0x455792){_0x2a81ea[_0x6133('0x40')]=_0x455792;return _0x2a81ea;})[_0x6133('0x26')](respondWithFilteredResult(_0x1425f4,_0x1d776f))[_0x6133('0x41')](handleError(_0x1425f4,null));};exports[_0x6133('0x42')]=function(_0x4c6ae5,_0x497a9c){var _0x52c541={'raw':!![],'where':{'id':_0x4c6ae5[_0x6133('0x43')]['id']}},_0x54b509={};_0x54b509['model']=_[_0x6133('0x2f')](db['VoiceDialReport'][_0x6133('0x2b')]);_0x54b509['query']=_['keys'](_0x4c6ae5['query']);_0x54b509['filters']=_[_0x6133('0x31')](_0x54b509['model'],_0x54b509[_0x6133('0x2e')]);_0x52c541['attributes']=_[_0x6133('0x31')](_0x54b509[_0x6133('0x2d')],qs[_0x6133('0x32')](_0x4c6ae5[_0x6133('0x2e')][_0x6133('0x32')]));_0x52c541[_0x6133('0x33')]=_0x52c541[_0x6133('0x33')]['length']?_0x52c541['attributes']:_0x54b509[_0x6133('0x2d')];if(_0x4c6ae5[_0x6133('0x2e')]['includeAll']){_0x52c541[_0x6133('0x44')]=[{'all':!![]}];}_0x52c541=_[_0x6133('0x45')]({},_0x52c541,_0x4c6ae5[_0x6133('0x3c')]);return db[_0x6133('0x3d')][_0x6133('0x46')](_0x52c541)[_0x6133('0x26')](handleEntityNotFound(_0x497a9c,null))[_0x6133('0x26')](respondWithResult(_0x497a9c,null))[_0x6133('0x41')](handleError(_0x497a9c,null));};exports[_0x6133('0x47')]=function(_0x22f320,_0x1928bf){return db[_0x6133('0x3d')][_0x6133('0x47')](_0x22f320['body'],{})[_0x6133('0x26')](respondWithResult(_0x1928bf,0xc9))[_0x6133('0x41')](handleError(_0x1928bf,null));};exports['update']=function(_0x2f22f1,_0x488f33){if(_0x2f22f1['body']['id']){delete _0x2f22f1[_0x6133('0x48')]['id'];}return db[_0x6133('0x3d')][_0x6133('0x46')]({'where':{'id':_0x2f22f1[_0x6133('0x43')]['id']}})[_0x6133('0x26')](handleEntityNotFound(_0x488f33,null))[_0x6133('0x26')](saveUpdates(_0x2f22f1[_0x6133('0x48')],null))['then'](respondWithResult(_0x488f33,null))['catch'](handleError(_0x488f33,null));};exports[_0x6133('0x49')]=function(_0x5d9fec,_0x34c803){return db['VoiceDialReport']['find']({'where':{'id':_0x5d9fec['params']['id']}})['then'](handleEntityNotFound(_0x34c803,null))[_0x6133('0x26')](removeEntity(_0x34c803,null))[_0x6133('0x41')](handleError(_0x34c803,null));};exports[_0x6133('0x4a')]=function(_0x4e0ba7,_0x5a3d6e){return db[_0x6133('0x3d')][_0x6133('0x4a')]()[_0x6133('0x26')](respondWithResult(_0x5a3d6e,null))['catch'](handleError(_0x5a3d6e,null));};
\ No newline at end of file
index c1ea941..3208cca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc1=['api','moment','bluebird','request-promise','path','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger'];(function(_0x190d84,_0x28ae7a){var _0x476687=function(_0x3e2090){while(--_0x3e2090){_0x190d84['push'](_0x190d84['shift']());}};_0x476687(++_0x28ae7a);}(_0x2cc1,0x1bd));var _0x12cc=function(_0x58c56a,_0x40d9e4){_0x58c56a=_0x58c56a-0x0;var _0x4f83d0=_0x2cc1[_0x58c56a];return _0x4f83d0;};'use strict';var _=require(_0x12cc('0x0'));var util=require(_0x12cc('0x1'));var logger=require(_0x12cc('0x2'))(_0x12cc('0x3'));var moment=require(_0x12cc('0x4'));var BPromise=require(_0x12cc('0x5'));var rp=require(_0x12cc('0x6'));var fs=require('fs');var path=require(_0x12cc('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x12cc('0x8'));module[_0x12cc('0x9')]=function(_0x4d6ec4,_0x496867){return _0x4d6ec4[_0x12cc('0xa')](_0x12cc('0xb'),attributes,{'tableName':_0x12cc('0xc'),'paranoid':![],'indexes':[{'fields':[_0x12cc('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb40c=['lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','./voiceDialReport.attributes','exports','define','uniqueid'];(function(_0xf487ae,_0x53c6ff){var _0x4a5dbe=function(_0x3f9d1d){while(--_0x3f9d1d){_0xf487ae['push'](_0xf487ae['shift']());}};_0x4a5dbe(++_0x53c6ff);}(_0xb40c,0x79));var _0xcb40=function(_0x26019a,_0x58e0e4){_0x26019a=_0x26019a-0x0;var _0xafe52b=_0xb40c[_0x26019a];return _0xafe52b;};'use strict';var _=require(_0xcb40('0x0'));var util=require(_0xcb40('0x1'));var logger=require(_0xcb40('0x2'))('api');var moment=require(_0xcb40('0x3'));var BPromise=require('bluebird');var rp=require(_0xcb40('0x4'));var fs=require('fs');var path=require(_0xcb40('0x5'));var rimraf=require('rimraf');var config=require(_0xcb40('0x6'));var attributes=require(_0xcb40('0x7'));module[_0xcb40('0x8')]=function(_0x1d5ad5,_0x474ead){return _0x1d5ad5[_0xcb40('0x9')]('VoiceDialReport',attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0xcb40('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index ec87936..33549c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbd8=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','options','raw','UpdateVoiceDialReport','update','body','attributes','limit','lodash','util','moment','bluebird'];(function(_0x33768b,_0x4c6540){var _0x182e97=function(_0xf6bff5){while(--_0xf6bff5){_0x33768b['push'](_0x33768b['shift']());}};_0x182e97(++_0x4c6540);}(_0xfbd8,0x146));var _0x8fbd=function(_0x9336f8,_0x286899){_0x9336f8=_0x9336f8-0x0;var _0x32adbb=_0xfbd8[_0x9336f8];return _0x32adbb;};'use strict';var _=require(_0x8fbd('0x0'));var util=require(_0x8fbd('0x1'));var moment=require(_0x8fbd('0x2'));var BPromise=require(_0x8fbd('0x3'));var rs=require(_0x8fbd('0x4'));var fs=require('fs');var Redis=require(_0x8fbd('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8fbd('0x6'));var logger=require(_0x8fbd('0x7'))(_0x8fbd('0x8'));var config=require(_0x8fbd('0x9'));var jayson=require(_0x8fbd('0xa'));var client=jayson['client'][_0x8fbd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cb930,_0x57d03f,_0x5ecf05){return new BPromise(function(_0x4b8b94,_0x505bae){return client[_0x8fbd('0xc')](_0x1cb930,_0x5ecf05)[_0x8fbd('0xd')](function(_0x11eabf){logger[_0x8fbd('0xe')](_0x8fbd('0xf'),_0x57d03f,'request\x20sent');logger[_0x8fbd('0x10')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x57d03f,_0x8fbd('0x11'),JSON[_0x8fbd('0x12')](_0x11eabf));if(_0x11eabf[_0x8fbd('0x13')]){if(_0x11eabf[_0x8fbd('0x13')]['code']===0x1f4){logger[_0x8fbd('0x13')](_0x8fbd('0xf'),_0x57d03f,_0x11eabf[_0x8fbd('0x13')][_0x8fbd('0x14')]);return _0x505bae(_0x11eabf['error'][_0x8fbd('0x14')]);}logger[_0x8fbd('0x13')](_0x8fbd('0xf'),_0x57d03f,_0x11eabf['error'][_0x8fbd('0x14')]);return _0x4b8b94(_0x11eabf[_0x8fbd('0x13')]['message']);}else{logger[_0x8fbd('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x57d03f,'request\x20sent');_0x4b8b94(_0x11eabf[_0x8fbd('0x15')][_0x8fbd('0x14')]);}})[_0x8fbd('0x16')](function(_0x428727){logger['error'](_0x8fbd('0xf'),_0x57d03f,_0x428727);_0x505bae(_0x428727);});});}exports[_0x8fbd('0x17')]=function(_0x14aa7f){var _0x1c81b8=this;return new Promise(function(_0x54f419,_0x9186f2){return db[_0x8fbd('0x18')][_0x8fbd('0x19')](_0x14aa7f['body'],{'raw':_0x14aa7f[_0x8fbd('0x1a')]?_0x14aa7f[_0x8fbd('0x1a')][_0x8fbd('0x1b')]===undefined?!![]:![]:!![]})[_0x8fbd('0xd')](function(_0x2c0d04){logger[_0x8fbd('0xe')](_0x8fbd('0x17'),_0x14aa7f);logger[_0x8fbd('0x10')](_0x8fbd('0x17'),_0x14aa7f,JSON[_0x8fbd('0x12')](_0x2c0d04));_0x54f419(_0x2c0d04);})[_0x8fbd('0x16')](function(_0x3e76ba){logger[_0x8fbd('0x13')](_0x8fbd('0x17'),_0x3e76ba['message'],_0x14aa7f);_0x9186f2(_0x1c81b8[_0x8fbd('0x13')](0x1f4,_0x3e76ba[_0x8fbd('0x14')]));});});};exports[_0x8fbd('0x1c')]=function(_0x575a26){var _0x4652f5=this;return new Promise(function(_0x466f94,_0x28039f){return db['VoiceDialReport'][_0x8fbd('0x1d')](_0x575a26[_0x8fbd('0x1e')],{'raw':_0x575a26[_0x8fbd('0x1a')]?_0x575a26[_0x8fbd('0x1a')][_0x8fbd('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x575a26[_0x8fbd('0x1a')]?_0x575a26[_0x8fbd('0x1a')]['where']||null:null,'attributes':_0x575a26[_0x8fbd('0x1a')]?_0x575a26[_0x8fbd('0x1a')][_0x8fbd('0x1f')]||null:null,'limit':_0x575a26['options']?_0x575a26['options'][_0x8fbd('0x20')]||null:null})[_0x8fbd('0xd')](function(_0x106255){logger[_0x8fbd('0xe')](_0x8fbd('0x1c'),_0x575a26);logger[_0x8fbd('0x10')](_0x8fbd('0x1c'),_0x575a26,JSON[_0x8fbd('0x12')](_0x106255));_0x466f94(_0x106255);})[_0x8fbd('0x16')](function(_0x300c9b){logger['error'](_0x8fbd('0x1c'),_0x300c9b['message'],_0x575a26);_0x28039f(_0x4652f5[_0x8fbd('0x13')](0x1f4,_0x300c9b[_0x8fbd('0x14')]));});});};
\ No newline at end of file
+var _0x135a=['request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','UpdateVoiceDialReport','update','where','attributes','limit','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x19344e,_0x1f8da1){var _0x590d32=function(_0x359cf5){while(--_0x359cf5){_0x19344e['push'](_0x19344e['shift']());}};_0x590d32(++_0x1f8da1);}(_0x135a,0x140));var _0xa135=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x135a[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xa135('0x0'));var util=require(_0xa135('0x1'));var moment=require(_0xa135('0x2'));var BPromise=require(_0xa135('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa135('0x4'));var logger=require(_0xa135('0x5'))(_0xa135('0x6'));var config=require(_0xa135('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa135('0x8')][_0xa135('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24c9a5,_0x475f4f,_0x4ee21f){return new BPromise(function(_0x37c2d9,_0x36f541){return client[_0xa135('0xa')](_0x24c9a5,_0x4ee21f)[_0xa135('0xb')](function(_0x16170c){logger[_0xa135('0xc')](_0xa135('0xd'),_0x475f4f,_0xa135('0xe'));logger[_0xa135('0xf')](_0xa135('0x10'),_0x475f4f,'request\x20sent',JSON[_0xa135('0x11')](_0x16170c));if(_0x16170c[_0xa135('0x12')]){if(_0x16170c[_0xa135('0x12')]['code']===0x1f4){logger[_0xa135('0x12')](_0xa135('0xd'),_0x475f4f,_0x16170c[_0xa135('0x12')]['message']);return _0x36f541(_0x16170c[_0xa135('0x12')][_0xa135('0x13')]);}logger[_0xa135('0x12')](_0xa135('0xd'),_0x475f4f,_0x16170c['error'][_0xa135('0x13')]);return _0x37c2d9(_0x16170c[_0xa135('0x12')][_0xa135('0x13')]);}else{logger[_0xa135('0xc')](_0xa135('0xd'),_0x475f4f,_0xa135('0xe'));_0x37c2d9(_0x16170c[_0xa135('0x14')][_0xa135('0x13')]);}})[_0xa135('0x15')](function(_0x50aafe){logger[_0xa135('0x12')](_0xa135('0xd'),_0x475f4f,_0x50aafe);_0x36f541(_0x50aafe);});});}exports[_0xa135('0x16')]=function(_0x4409ed){var _0x5af52f=this;return new Promise(function(_0x1319c5,_0x3f592d){return db[_0xa135('0x17')][_0xa135('0x18')](_0x4409ed[_0xa135('0x19')],{'raw':_0x4409ed[_0xa135('0x1a')]?_0x4409ed[_0xa135('0x1a')][_0xa135('0x1b')]===undefined?!![]:![]:!![]})[_0xa135('0xb')](function(_0x5b0056){logger[_0xa135('0xc')](_0xa135('0x16'),_0x4409ed);logger[_0xa135('0xf')](_0xa135('0x16'),_0x4409ed,JSON[_0xa135('0x11')](_0x5b0056));_0x1319c5(_0x5b0056);})[_0xa135('0x15')](function(_0x4d1115){logger[_0xa135('0x12')](_0xa135('0x16'),_0x4d1115[_0xa135('0x13')],_0x4409ed);_0x3f592d(_0x5af52f[_0xa135('0x12')](0x1f4,_0x4d1115['message']));});});};exports[_0xa135('0x1c')]=function(_0x4b0f0f){var _0x18c733=this;return new Promise(function(_0x57c822,_0x52a508){return db[_0xa135('0x17')][_0xa135('0x1d')](_0x4b0f0f['body'],{'raw':_0x4b0f0f[_0xa135('0x1a')]?_0x4b0f0f[_0xa135('0x1a')][_0xa135('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b0f0f[_0xa135('0x1a')]?_0x4b0f0f[_0xa135('0x1a')][_0xa135('0x1e')]||null:null,'attributes':_0x4b0f0f['options']?_0x4b0f0f[_0xa135('0x1a')][_0xa135('0x1f')]||null:null,'limit':_0x4b0f0f['options']?_0x4b0f0f['options'][_0xa135('0x20')]||null:null})[_0xa135('0xb')](function(_0x12b828){logger[_0xa135('0xc')](_0xa135('0x1c'),_0x4b0f0f);logger[_0xa135('0xf')](_0xa135('0x1c'),_0x4b0f0f,JSON['stringify'](_0x12b828));_0x57c822(_0x12b828);})['catch'](function(_0x4075e8){logger[_0xa135('0x12')](_0xa135('0x1c'),_0x4075e8[_0xa135('0x13')],_0x4b0f0f);_0x52a508(_0x18c733[_0xa135('0x12')](0x1f4,_0x4075e8[_0xa135('0x13')]));});});};
\ No newline at end of file
index c22aaf1..25ba142 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c6=['../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','post','/:id/applications','addApplications','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x8ae98b,_0x155f88){var _0xc30bd4=function(_0x5ca462){while(--_0x5ca462){_0x8ae98b['push'](_0x8ae98b['shift']());}};_0xc30bd4(++_0x155f88);}(_0xc6c6,0x15f));var _0x6c6c=function(_0x297c55,_0x34fa75){_0x297c55=_0x297c55-0x0;var _0x120389=_0xc6c6[_0x297c55];return _0x120389;};'use strict';var multer=require(_0x6c6c('0x0'));var util=require('util');var path=require(_0x6c6c('0x1'));var timeout=require(_0x6c6c('0x2'));var express=require(_0x6c6c('0x3'));var router=express['Router']();var fs_extra=require(_0x6c6c('0x4'));var auth=require(_0x6c6c('0x5'));var interaction=require(_0x6c6c('0x6'));var config=require(_0x6c6c('0x7'));var controller=require(_0x6c6c('0x8'));router[_0x6c6c('0x9')]('/',auth[_0x6c6c('0xa')](),controller[_0x6c6c('0xb')]);router[_0x6c6c('0x9')](_0x6c6c('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x6c6c('0xd')]('/',auth[_0x6c6c('0xa')](),controller['create']);router[_0x6c6c('0xd')](_0x6c6c('0xe'),auth[_0x6c6c('0xa')](),controller[_0x6c6c('0xf')]);router[_0x6c6c('0x10')](_0x6c6c('0xc'),auth['isAuthenticated'](),controller[_0x6c6c('0x11')]);router[_0x6c6c('0x12')](_0x6c6c('0xc'),auth[_0x6c6c('0xa')](),controller[_0x6c6c('0x13')]);module[_0x6c6c('0x14')]=router;
\ No newline at end of file
+var _0x9b5e=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceExtension.controller','isAuthenticated','/:id','show','post','create','/:id/applications','addApplications','update','exports','util','path','express'];(function(_0x5b115d,_0x1a07e5){var _0x122f65=function(_0x350e62){while(--_0x350e62){_0x5b115d['push'](_0x5b115d['shift']());}};_0x122f65(++_0x1a07e5);}(_0x9b5e,0x10d));var _0xe9b5=function(_0x53157f,_0x30239f){_0x53157f=_0x53157f-0x0;var _0x3d9aca=_0x9b5e[_0x53157f];return _0x3d9aca;};'use strict';var multer=require('multer');var util=require(_0xe9b5('0x0'));var path=require(_0xe9b5('0x1'));var timeout=require('connect-timeout');var express=require(_0xe9b5('0x2'));var router=express[_0xe9b5('0x3')]();var fs_extra=require(_0xe9b5('0x4'));var auth=require(_0xe9b5('0x5'));var interaction=require(_0xe9b5('0x6'));var config=require('../../config/environment');var controller=require(_0xe9b5('0x7'));router['get']('/',auth[_0xe9b5('0x8')](),controller['index']);router['get'](_0xe9b5('0x9'),auth['isAuthenticated'](),controller[_0xe9b5('0xa')]);router[_0xe9b5('0xb')]('/',auth[_0xe9b5('0x8')](),controller[_0xe9b5('0xc')]);router[_0xe9b5('0xb')](_0xe9b5('0xd'),auth[_0xe9b5('0x8')](),controller[_0xe9b5('0xe')]);router['put'](_0xe9b5('0x9'),auth['isAuthenticated'](),controller[_0xe9b5('0xf')]);router['delete'](_0xe9b5('0x9'),auth[_0xe9b5('0x8')](),controller['destroy']);module[_0xe9b5('0x10')]=router;
\ No newline at end of file
index c78c420..a575103 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ac=['compositeIndex','STRING','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x81ac,0x6a));var _0xc81a=function(_0x34317c,_0x349d02){_0x34317c=_0x34317c-0x0;var _0x4007af=_0x81ac[_0x34317c];return _0x4007af;};'use strict';var Sequelize=require(_0xc81a('0x0'));module[_0xc81a('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc81a('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'unique':_0xc81a('0x2')},'priority':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':'1','unique':_0xc81a('0x2')},'tag':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':_0xc81a('0x4')},'appdata':{'type':Sequelize[_0xc81a('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc81a('0x5')](_0xc81a('0x6'),_0xc81a('0x7'),_0xc81a('0x8'),_0xc81a('0x9'),_0xc81a('0xa'),_0xc81a('0xb'),'any'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':_0xc81a('0xc')},'IntervalId':{'type':Sequelize[_0xc81a('0xd')]},'isApp':{'type':Sequelize[_0xc81a('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc81a('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0xc81a('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0xc81a('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc81a('0xd')]},'recordingFormat':{'type':Sequelize[_0xc81a('0x3')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0xc81a('0xe')],'defaultValue':!![]},'name':{'type':Sequelize[_0xc81a('0xf')],'get':function(_0x2a17ae){return this[_0xc81a('0x10')](_0xc81a('0x11'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x69c4=['compositeIndex','NoOp','ENUM','inbound','outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','getDataValue','sequelize','STRING'];(function(_0x5eb6e6,_0x17f551){var _0x35c38b=function(_0xa3592){while(--_0xa3592){_0x5eb6e6['push'](_0x5eb6e6['shift']());}};_0x35c38b(++_0x17f551);}(_0x69c4,0xde));var _0x469c=function(_0x1f6fcb,_0x1beca3){_0x1f6fcb=_0x1f6fcb-0x0;var _0x3abd28=_0x69c4[_0x1f6fcb];return _0x3abd28;};'use strict';var Sequelize=require(_0x469c('0x0'));module['exports']={'context':{'type':Sequelize[_0x469c('0x1')],'allowNull':![],'unique':_0x469c('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x469c('0x1')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x469c('0x1')],'allowNull':![],'defaultValue':'1','unique':_0x469c('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x469c('0x1')],'allowNull':![],'defaultValue':_0x469c('0x3')},'appdata':{'type':Sequelize[_0x469c('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x469c('0x4')](_0x469c('0x5'),_0x469c('0x6'),'internal',_0x469c('0x7'),_0x469c('0x8'),_0x469c('0x9'),_0x469c('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0x469c('0x1')]},'interval':{'type':Sequelize[_0x469c('0x1')],'allowNull':![],'defaultValue':_0x469c('0xb')},'IntervalId':{'type':Sequelize[_0x469c('0xc')]},'isApp':{'type':Sequelize[_0x469c('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x469c('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x469c('0x1')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x469c('0xc')]},'recordingFormat':{'type':Sequelize[_0x469c('0x1')],'defaultValue':_0x469c('0xe')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4ed549){return this[_0x469c('0xf')]('exten');}},'alias':{'type':Sequelize[_0x469c('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 3ac4ccc..d63d355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11b9=['outbound','startsWith','exten','concat','create','role','user','InboundRoutes','inbound','InternalRoutes','internal','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','recordingFormat','alias','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','destroy','get','OutboundRoutes','filter','ignore','value','includes','type','find','name','then','error','send','map','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','VoiceExtension','show','params','length','options','catch','body'];(function(_0x587066,_0x13695f){var _0x2e2a57=function(_0x50b612){while(--_0x50b612){_0x587066['push'](_0x587066['shift']());}};_0x2e2a57(++_0x13695f);}(_0x11b9,0x142));var _0x911b=function(_0x4f317e,_0x3a42b5){_0x4f317e=_0x4f317e-0x0;var _0x59bd95=_0x11b9[_0x4f317e];return _0x59bd95;};'use strict';var _=require(_0x911b('0x0'));var Redis=require(_0x911b('0x1'));var qs=require(_0x911b('0x2'));var logger=require('../../config/logger')(_0x911b('0x3'));var config=require(_0x911b('0x4'));var db=require(_0x911b('0x5'))['db'];config[_0x911b('0x6')]=_[_0x911b('0x7')](config[_0x911b('0x6')],{'host':_0x911b('0x8'),'port':0x18eb});var socket=require(_0x911b('0x9'))(new Redis(config[_0x911b('0x6')]));require(_0x911b('0xa'))[_0x911b('0xb')](socket);function respondWithStatusCode(_0x8ed1d3,_0x1d4678){_0x1d4678=_0x1d4678||0xcc;return function(_0x5ea77f){if(_0x5ea77f){return _0x8ed1d3[_0x911b('0xc')](_0x1d4678);}return _0x8ed1d3[_0x911b('0xd')](_0x1d4678)[_0x911b('0xe')]();};}function respondWithResult(_0x443dbb,_0x7ad9e0){_0x7ad9e0=_0x7ad9e0||0xc8;return function(_0x539f3c){if(_0x539f3c){return _0x443dbb[_0x911b('0xd')](_0x7ad9e0)[_0x911b('0xf')](_0x539f3c);}};}function respondWithFilteredResult(_0x3c0524,_0x9b0e32){return function(_0xde1d0a){if(_0xde1d0a){var _0x3de5dd=typeof _0x9b0e32['offset']===_0x911b('0x10')&&typeof _0x9b0e32[_0x911b('0x11')]==='undefined';var _0x3d17c3=_0xde1d0a[_0x911b('0x12')];var _0x53bb79=_0x3de5dd?0x0:_0x9b0e32[_0x911b('0x13')];var _0x4838f2=_0x3de5dd?_0xde1d0a['count']:_0x9b0e32[_0x911b('0x13')]+_0x9b0e32['limit'];var _0x108710;if(_0x4838f2>=_0x3d17c3){_0x4838f2=_0x3d17c3;_0x108710=0xc8;}else{_0x108710=0xce;}_0x3c0524[_0x911b('0xd')](_0x108710);return _0x3c0524[_0x911b('0x14')](_0x911b('0x15'),_0x53bb79+'-'+_0x4838f2+'/'+_0x3d17c3)['json'](_0xde1d0a);}return null;};}function removeEntity(_0x13027e){return function(_0x1aaa59){if(_0x1aaa59){return _0x1aaa59[_0x911b('0x16')]()['then'](function(){var _0x21f218=_0x1aaa59[_0x911b('0x17')]({'plain':!![]});var _0x374262=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':_0x911b('0x18'),'value':'outbound','ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x4aa77b=_(_0x374262)[_0x911b('0x19')](_0x911b('0x1a'))['map'](_0x911b('0x1b'))['value']();if(_[_0x911b('0x1c')](_0x4aa77b,_0x21f218[_0x911b('0x1d')])){return;}var _0x3aee45=_[_0x911b('0x1e')](_0x374262,[_0x911b('0x1b'),_0x21f218[_0x911b('0x1d')]])[_0x911b('0x1f')];return db['UserProfileResource'][_0x911b('0x16')]({'where':{'type':_0x3aee45,'resourceId':_0x21f218['id']}})['then'](function(){return _0x1aaa59;});})[_0x911b('0x20')](function(){_0x13027e[_0x911b('0xd')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4eef74){return function(_0x2b0210){if(!_0x2b0210){_0x4eef74[_0x911b('0xc')](0x194);}return _0x2b0210;};}function handleError(_0x2f48b9,_0x30c2e8){_0x30c2e8=_0x30c2e8||0x1f4;return function(_0x1dd61c){logger[_0x911b('0x21')](_0x1dd61c['stack']);if(_0x1dd61c[_0x911b('0x1f')]){delete _0x1dd61c['name'];}_0x2f48b9[_0x911b('0xd')](_0x30c2e8)[_0x911b('0x22')](_0x1dd61c);};}exports['index']=function(_0x580a3a,_0x2a5dbb){var _0xf0e9e2={},_0xc6a284={},_0x40a8f1={'count':0x0,'rows':[]};var _0x5999e7=_[_0x911b('0x23')](db['VoiceExtension'][_0x911b('0x24')],function(_0x3cc10a){return{'name':_0x3cc10a[_0x911b('0x25')],'type':_0x3cc10a[_0x911b('0x1d')][_0x911b('0x26')]};});_0xc6a284['model']=_[_0x911b('0x23')](_0x5999e7,'name');_0xc6a284[_0x911b('0x27')]=_[_0x911b('0x28')](_0x580a3a[_0x911b('0x27')]);_0xc6a284['filters']=_[_0x911b('0x29')](_0xc6a284[_0x911b('0x2a')],_0xc6a284[_0x911b('0x27')]);_0xf0e9e2[_0x911b('0x2b')]=_[_0x911b('0x29')](_0xc6a284[_0x911b('0x2a')],qs[_0x911b('0x2c')](_0x580a3a[_0x911b('0x27')][_0x911b('0x2c')]));_0xf0e9e2[_0x911b('0x2b')]=_0xf0e9e2['attributes']['length']?_0xf0e9e2['attributes']:_0xc6a284[_0x911b('0x2a')];if(!_0x580a3a[_0x911b('0x27')]['hasOwnProperty'](_0x911b('0x2d'))){_0xf0e9e2[_0x911b('0x11')]=qs[_0x911b('0x11')](_0x580a3a['query'][_0x911b('0x11')]);_0xf0e9e2[_0x911b('0x13')]=qs[_0x911b('0x13')](_0x580a3a['query'][_0x911b('0x13')]);}_0xf0e9e2[_0x911b('0x2e')]=qs['sort'](_0x580a3a[_0x911b('0x27')][_0x911b('0x2f')]);_0xf0e9e2[_0x911b('0x30')]=qs[_0x911b('0x31')](_[_0x911b('0x32')](_0x580a3a[_0x911b('0x27')],_0xc6a284[_0x911b('0x31')]),_0x5999e7);if(_0x580a3a['query'][_0x911b('0x19')]){_0xf0e9e2[_0x911b('0x30')]=_[_0x911b('0x33')](_0xf0e9e2[_0x911b('0x30')],{'$or':_['map'](_0x5999e7,function(_0x4db2a8){if(_0x4db2a8[_0x911b('0x1d')]!==_0x911b('0x34')){var _0x5530ac={};_0x5530ac[_0x4db2a8[_0x911b('0x1f')]]={'$like':'%'+_0x580a3a['query'][_0x911b('0x19')]+'%'};return _0x5530ac;}})});}_0xf0e9e2=_[_0x911b('0x33')]({},_0xf0e9e2,_0x580a3a['options']);var _0x4d9801={'where':_0xf0e9e2['where']};return db['VoiceExtension']['count'](_0x4d9801)[_0x911b('0x20')](function(_0x1dd418){_0x40a8f1[_0x911b('0x12')]=_0x1dd418;if(_0x580a3a[_0x911b('0x27')][_0x911b('0x35')]){_0xf0e9e2[_0x911b('0x36')]=[{'all':!![]}];}return db[_0x911b('0x37')]['findAll'](_0xf0e9e2);})[_0x911b('0x20')](function(_0x15099b){_0x40a8f1['rows']=_0x15099b;return _0x40a8f1;})['then'](respondWithFilteredResult(_0x2a5dbb,_0xf0e9e2))['catch'](handleError(_0x2a5dbb,null));};exports[_0x911b('0x38')]=function(_0x2dea2c,_0x531b29){var _0x262b03={'raw':![],'where':{'id':_0x2dea2c[_0x911b('0x39')]['id']}},_0x5752d8={};_0x5752d8[_0x911b('0x2a')]=_['keys'](db[_0x911b('0x37')][_0x911b('0x24')]);_0x5752d8[_0x911b('0x27')]=_[_0x911b('0x28')](_0x2dea2c[_0x911b('0x27')]);_0x5752d8[_0x911b('0x31')]=_[_0x911b('0x29')](_0x5752d8[_0x911b('0x2a')],_0x5752d8[_0x911b('0x27')]);_0x262b03[_0x911b('0x2b')]=_[_0x911b('0x29')](_0x5752d8[_0x911b('0x2a')],qs[_0x911b('0x2c')](_0x2dea2c[_0x911b('0x27')]['fields']));_0x262b03['attributes']=_0x262b03['attributes'][_0x911b('0x3a')]?_0x262b03[_0x911b('0x2b')]:_0x5752d8[_0x911b('0x2a')];if(_0x2dea2c['query'][_0x911b('0x35')]){_0x262b03[_0x911b('0x36')]=[{'all':!![]}];}_0x262b03=_[_0x911b('0x33')]({},_0x262b03,_0x2dea2c[_0x911b('0x3b')]);return db[_0x911b('0x37')]['find'](_0x262b03)[_0x911b('0x20')](handleEntityNotFound(_0x531b29,null))[_0x911b('0x20')](respondWithResult(_0x531b29,null))[_0x911b('0x3c')](handleError(_0x531b29,null));};exports['destroy']=function(_0x24af51,_0x142dac){return db['VoiceExtension'][_0x911b('0x1e')]({'where':{'id':_0x24af51[_0x911b('0x39')]['id']}})[_0x911b('0x20')](handleEntityNotFound(_0x142dac,null))['then'](removeEntity(_0x142dac,null))[_0x911b('0x3c')](handleError(_0x142dac,null));};exports['create']=function(_0x3cbaac,_0x19e664){if(_0x3cbaac[_0x911b('0x3d')]['type']===_0x911b('0x3e')&&!_[_0x911b('0x3f')](_0x3cbaac['body'][_0x911b('0x40')],'_')){_0x3cbaac[_0x911b('0x3d')][_0x911b('0x40')]='_'[_0x911b('0x41')](_0x3cbaac[_0x911b('0x3d')]['exten']);}return db[_0x911b('0x37')][_0x911b('0x42')](_0x3cbaac[_0x911b('0x3d')],{'raw':![]})[_0x911b('0x20')](function(_0x37f8a2){var _0x4cbfa6=_0x3cbaac['user']['get']({'plain':!![]});if(!_0x4cbfa6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4cbfa6[_0x911b('0x43')]===_0x911b('0x44')){var _0x8d303b=_0x37f8a2[_0x911b('0x17')]({'plain':!![]});var _0x48361d=[{'name':_0x911b('0x45'),'value':_0x911b('0x46')},{'name':_0x911b('0x18'),'value':_0x911b('0x3e')},{'name':_0x911b('0x47'),'value':_0x911b('0x48')}];var _0xa25789=_[_0x911b('0x1e')](_0x48361d,['value',_0x8d303b[_0x911b('0x1d')]])['name'];return db[_0x911b('0x49')][_0x911b('0x1e')]({'where':{'name':_0xa25789,'userProfileId':_0x4cbfa6[_0x911b('0x4a')]},'raw':!![]})[_0x911b('0x20')](function(_0x41519b){if(_0x41519b&&_0x41519b[_0x911b('0x4b')]===0x0){return db[_0x911b('0x4c')]['create']({'name':_0x8d303b[_0x911b('0x1f')],'resourceId':_0x8d303b['id'],'type':_0x41519b[_0x911b('0x1f')],'sectionId':_0x41519b['id']},{})['then'](function(){return _0x37f8a2;});}else{return _0x37f8a2;}})[_0x911b('0x3c')](function(_0x3800b2){logger[_0x911b('0x21')](_0x911b('0x4d'),_0x3800b2);throw _0x3800b2;});}return _0x37f8a2;})[_0x911b('0x20')](respondWithResult(_0x19e664,0xc9))[_0x911b('0x3c')](handleError(_0x19e664,null));};exports[_0x911b('0x4e')]=function(_0x41661,_0x399319){if(_0x41661['body']['id']){delete _0x41661[_0x911b('0x3d')]['id'];}return db[_0x911b('0x37')][_0x911b('0x1e')]({'where':{'id':_0x41661['params']['id']}})['then'](handleEntityNotFound(_0x399319,null))['then'](function(_0x148cf1){if(_0x148cf1){return db[_0x911b('0x37')][_0x911b('0x4e')](_[_0x911b('0x32')](_0x41661['body'],['exten',_0x911b('0x4f'),'description',_0x911b('0x50'),'cutdigits','mandatoryDisposition',_0x911b('0x51')]),{'where':{'context':_0x148cf1['context'],'exten':_0x148cf1[_0x911b('0x40')]},'individualHooks':!![]})[_0x911b('0x20')](function(_0x1ca3e1){return _0x1ca3e1;});}return null;})[_0x911b('0x20')](respondWithStatusCode(_0x399319,null))[_0x911b('0x3c')](handleError(_0x399319,null));};exports[_0x911b('0x52')]=function(_0x274a03,_0xf7ef01){var _0x1c73c2=_0x274a03[_0x911b('0x39')]['id'];var _0x2860ed=_0x274a03[_0x911b('0x3d')];var _0x3aa488=0xc8;var _0x57e354=null;return db[_0x911b('0x53')][_0x911b('0x54')]({'isolationLevel':db[_0x911b('0x53')][_0x911b('0x55')][_0x911b('0x56')][_0x911b('0x57')]},function(_0xcfa5ef){return db['VoiceExtension'][_0x911b('0x58')]({'where':{'id':_0x1c73c2},'transaction':_0xcfa5ef})[_0x911b('0x20')](function(_0x2d88b4){if(_0x2d88b4){return db[_0x911b('0x37')][_0x911b('0x16')]({'where':{'VoiceExtensionId':_0x1c73c2},'transaction':_0xcfa5ef})[_0x911b('0x20')](function(){var _0x4236b1=_['map'](_0x2860ed,function(_0x5c3acf){_0x5c3acf[_0x911b('0x59')]=_0x1c73c2;_0x5c3acf[_0x911b('0x5a')]=!![];return _0x5c3acf;});return _0x2d88b4[_0x911b('0x5b')](_0x4236b1);})[_0x911b('0x20')](function(_0x4cada9){return db[_0x911b('0x37')][_0x911b('0x5c')](_0x4cada9,{'transaction':_0xcfa5ef});});}else{_0x3aa488=0x194;_0x57e354=[];}});})['then'](function(){if(_0x3aa488!==0x194){return db[_0x911b('0x37')][_0x911b('0x5d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1c73c2},'order':_0x911b('0x5e')})[_0x911b('0x20')](function(_0x953674){_0x57e354=_0x953674;});}})[_0x911b('0x3c')](function(_0x15c01c){_0x3aa488=0x1f4;logger[_0x911b('0x21')](_0x15c01c['stack']);if(_0x15c01c[_0x911b('0x1f')]){delete _0x15c01c[_0x911b('0x1f')];}_0x57e354=_0x15c01c;})[_0x911b('0x5f')](function(){if(_0x57e354===null){_0xf7ef01['sendStatus'](_0x3aa488);}else{if(_0x3aa488===0x1f4){_0xf7ef01['status'](_0x3aa488)[_0x911b('0x22')](_0x57e354);}else{_0xf7ef01[_0x911b('0xd')](_0x3aa488)['json'](_0x57e354);}}});};
\ No newline at end of file
+var _0xb284=['body','exten','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InboundRoutes','inbound','OutboundRoutes','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','recordingFormat','mandatoryDisposition','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','createRouting','bulkCreate','findAndCountAll','finally','sendStatus','lodash','../../components/parsers/qs','api','../../mysqldb','redis','localhost','./voiceExtension.socket','register','status','offset','undefined','count','set','Content-Range','json','destroy','then','get','outbound','InternalRoutes','internal','filter','value','type','find','UserProfileResource','end','error','stack','name','send','index','map','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','pick','where','merge','VIRTUAL','options','VoiceExtension','include','rows','catch','show','rawAttributes','includeAll','params','create','startsWith'];(function(_0x5a8ef5,_0x3c9264){var _0x16fcbc=function(_0x2867ce){while(--_0x2867ce){_0x5a8ef5['push'](_0x5a8ef5['shift']());}};_0x16fcbc(++_0x3c9264);}(_0xb284,0x1cd));var _0x4b28=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb284[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x4b28('0x0'));var Redis=require('ioredis');var qs=require(_0x4b28('0x1'));var logger=require('../../config/logger')(_0x4b28('0x2'));var config=require('../../config/environment');var db=require(_0x4b28('0x3'))['db'];config[_0x4b28('0x4')]=_['defaults'](config[_0x4b28('0x4')],{'host':_0x4b28('0x5'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4b28('0x4')]));require(_0x4b28('0x6'))[_0x4b28('0x7')](socket);function respondWithStatusCode(_0x9ca533,_0xed53b6){_0xed53b6=_0xed53b6||0xcc;return function(_0x384b5e){if(_0x384b5e){return _0x9ca533['sendStatus'](_0xed53b6);}return _0x9ca533[_0x4b28('0x8')](_0xed53b6)['end']();};}function respondWithResult(_0x4d220d,_0x3b1db3){_0x3b1db3=_0x3b1db3||0xc8;return function(_0x53a176){if(_0x53a176){return _0x4d220d[_0x4b28('0x8')](_0x3b1db3)['json'](_0x53a176);}};}function respondWithFilteredResult(_0x102ca7,_0x19363f){return function(_0x5d688a){if(_0x5d688a){var _0x226a57=typeof _0x19363f[_0x4b28('0x9')]===_0x4b28('0xa')&&typeof _0x19363f['limit']==='undefined';var _0x4bf444=_0x5d688a[_0x4b28('0xb')];var _0x359ad5=_0x226a57?0x0:_0x19363f[_0x4b28('0x9')];var _0x55d48d=_0x226a57?_0x5d688a[_0x4b28('0xb')]:_0x19363f['offset']+_0x19363f['limit'];var _0x4787b1;if(_0x55d48d>=_0x4bf444){_0x55d48d=_0x4bf444;_0x4787b1=0xc8;}else{_0x4787b1=0xce;}_0x102ca7['status'](_0x4787b1);return _0x102ca7[_0x4b28('0xc')](_0x4b28('0xd'),_0x359ad5+'-'+_0x55d48d+'/'+_0x4bf444)[_0x4b28('0xe')](_0x5d688a);}return null;};}function removeEntity(_0x2605a1){return function(_0xed0eff){if(_0xed0eff){return _0xed0eff[_0x4b28('0xf')]()[_0x4b28('0x10')](function(){var _0x4328fa=_0xed0eff[_0x4b28('0x11')]({'plain':!![]});var _0x90a501=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':'OutboundRoutes','value':_0x4b28('0x12'),'ignore':![]},{'name':_0x4b28('0x13'),'value':_0x4b28('0x14'),'ignore':![]}];var _0x37c494=_(_0x90a501)[_0x4b28('0x15')]('ignore')['map'](_0x4b28('0x16'))['value']();if(_['includes'](_0x37c494,_0x4328fa[_0x4b28('0x17')])){return;}var _0x134b81=_[_0x4b28('0x18')](_0x90a501,[_0x4b28('0x16'),_0x4328fa['type']])['name'];return db[_0x4b28('0x19')][_0x4b28('0xf')]({'where':{'type':_0x134b81,'resourceId':_0x4328fa['id']}})[_0x4b28('0x10')](function(){return _0xed0eff;});})[_0x4b28('0x10')](function(){_0x2605a1[_0x4b28('0x8')](0xcc)[_0x4b28('0x1a')]();});}};}function handleEntityNotFound(_0x219884){return function(_0x4c0872){if(!_0x4c0872){_0x219884['sendStatus'](0x194);}return _0x4c0872;};}function handleError(_0x2a3d43,_0x1066c3){_0x1066c3=_0x1066c3||0x1f4;return function(_0x12a430){logger[_0x4b28('0x1b')](_0x12a430[_0x4b28('0x1c')]);if(_0x12a430[_0x4b28('0x1d')]){delete _0x12a430[_0x4b28('0x1d')];}_0x2a3d43[_0x4b28('0x8')](_0x1066c3)[_0x4b28('0x1e')](_0x12a430);};}exports[_0x4b28('0x1f')]=function(_0x340ba9,_0x41240f){var _0x1bcbca={},_0x2536f4={},_0x4c2907={'count':0x0,'rows':[]};var _0x9c6250=_[_0x4b28('0x20')](db['VoiceExtension']['rawAttributes'],function(_0x5f0ce9){return{'name':_0x5f0ce9['fieldName'],'type':_0x5f0ce9[_0x4b28('0x17')][_0x4b28('0x21')]};});_0x2536f4[_0x4b28('0x22')]=_['map'](_0x9c6250,_0x4b28('0x1d'));_0x2536f4[_0x4b28('0x23')]=_[_0x4b28('0x24')](_0x340ba9['query']);_0x2536f4[_0x4b28('0x25')]=_[_0x4b28('0x26')](_0x2536f4['model'],_0x2536f4[_0x4b28('0x23')]);_0x1bcbca[_0x4b28('0x27')]=_[_0x4b28('0x26')](_0x2536f4[_0x4b28('0x22')],qs['fields'](_0x340ba9['query'][_0x4b28('0x28')]));_0x1bcbca[_0x4b28('0x27')]=_0x1bcbca[_0x4b28('0x27')][_0x4b28('0x29')]?_0x1bcbca['attributes']:_0x2536f4[_0x4b28('0x22')];if(!_0x340ba9[_0x4b28('0x23')][_0x4b28('0x2a')]('nolimit')){_0x1bcbca['limit']=qs['limit'](_0x340ba9[_0x4b28('0x23')][_0x4b28('0x2b')]);_0x1bcbca['offset']=qs[_0x4b28('0x9')](_0x340ba9[_0x4b28('0x23')][_0x4b28('0x9')]);}_0x1bcbca[_0x4b28('0x2c')]=qs[_0x4b28('0x2d')](_0x340ba9['query']['sort']);_0x1bcbca['where']=qs[_0x4b28('0x25')](_[_0x4b28('0x2e')](_0x340ba9[_0x4b28('0x23')],_0x2536f4[_0x4b28('0x25')]),_0x9c6250);if(_0x340ba9[_0x4b28('0x23')]['filter']){_0x1bcbca[_0x4b28('0x2f')]=_[_0x4b28('0x30')](_0x1bcbca[_0x4b28('0x2f')],{'$or':_[_0x4b28('0x20')](_0x9c6250,function(_0x3ec787){if(_0x3ec787[_0x4b28('0x17')]!==_0x4b28('0x31')){var _0x23d6e2={};_0x23d6e2[_0x3ec787[_0x4b28('0x1d')]]={'$like':'%'+_0x340ba9[_0x4b28('0x23')][_0x4b28('0x15')]+'%'};return _0x23d6e2;}})});}_0x1bcbca=_[_0x4b28('0x30')]({},_0x1bcbca,_0x340ba9[_0x4b28('0x32')]);var _0x248509={'where':_0x1bcbca[_0x4b28('0x2f')]};return db[_0x4b28('0x33')]['count'](_0x248509)[_0x4b28('0x10')](function(_0x46d21f){_0x4c2907['count']=_0x46d21f;if(_0x340ba9[_0x4b28('0x23')]['includeAll']){_0x1bcbca[_0x4b28('0x34')]=[{'all':!![]}];}return db[_0x4b28('0x33')]['findAll'](_0x1bcbca);})['then'](function(_0x54ee2d){_0x4c2907[_0x4b28('0x35')]=_0x54ee2d;return _0x4c2907;})[_0x4b28('0x10')](respondWithFilteredResult(_0x41240f,_0x1bcbca))[_0x4b28('0x36')](handleError(_0x41240f,null));};exports[_0x4b28('0x37')]=function(_0x3cbd49,_0x494d38){var _0x27aac5={'raw':![],'where':{'id':_0x3cbd49['params']['id']}},_0x5043c4={};_0x5043c4[_0x4b28('0x22')]=_[_0x4b28('0x24')](db[_0x4b28('0x33')][_0x4b28('0x38')]);_0x5043c4[_0x4b28('0x23')]=_[_0x4b28('0x24')](_0x3cbd49[_0x4b28('0x23')]);_0x5043c4[_0x4b28('0x25')]=_[_0x4b28('0x26')](_0x5043c4['model'],_0x5043c4[_0x4b28('0x23')]);_0x27aac5['attributes']=_['intersection'](_0x5043c4[_0x4b28('0x22')],qs[_0x4b28('0x28')](_0x3cbd49[_0x4b28('0x23')][_0x4b28('0x28')]));_0x27aac5['attributes']=_0x27aac5[_0x4b28('0x27')][_0x4b28('0x29')]?_0x27aac5[_0x4b28('0x27')]:_0x5043c4['model'];if(_0x3cbd49[_0x4b28('0x23')][_0x4b28('0x39')]){_0x27aac5[_0x4b28('0x34')]=[{'all':!![]}];}_0x27aac5=_[_0x4b28('0x30')]({},_0x27aac5,_0x3cbd49['options']);return db['VoiceExtension']['find'](_0x27aac5)[_0x4b28('0x10')](handleEntityNotFound(_0x494d38,null))[_0x4b28('0x10')](respondWithResult(_0x494d38,null))['catch'](handleError(_0x494d38,null));};exports[_0x4b28('0xf')]=function(_0x145d7c,_0x342bb5){return db[_0x4b28('0x33')][_0x4b28('0x18')]({'where':{'id':_0x145d7c[_0x4b28('0x3a')]['id']}})[_0x4b28('0x10')](handleEntityNotFound(_0x342bb5,null))['then'](removeEntity(_0x342bb5,null))[_0x4b28('0x36')](handleError(_0x342bb5,null));};exports[_0x4b28('0x3b')]=function(_0x222357,_0x5cc36b){if(_0x222357['body'][_0x4b28('0x17')]==='outbound'&&!_[_0x4b28('0x3c')](_0x222357['body']['exten'],'_')){_0x222357[_0x4b28('0x3d')][_0x4b28('0x3e')]='_'['concat'](_0x222357[_0x4b28('0x3d')]['exten']);}return db[_0x4b28('0x33')][_0x4b28('0x3b')](_0x222357[_0x4b28('0x3d')],{'raw':![]})['then'](function(_0x56c9f5){var _0x254587=_0x222357[_0x4b28('0x3f')][_0x4b28('0x11')]({'plain':!![]});if(!_0x254587)throw new Error(_0x4b28('0x40'));if(_0x254587[_0x4b28('0x41')]===_0x4b28('0x3f')){var _0x5de977=_0x56c9f5['get']({'plain':!![]});var _0x182d4d=[{'name':_0x4b28('0x42'),'value':_0x4b28('0x43')},{'name':_0x4b28('0x44'),'value':_0x4b28('0x12')},{'name':_0x4b28('0x13'),'value':_0x4b28('0x14')}];var _0x1b52fc=_[_0x4b28('0x18')](_0x182d4d,[_0x4b28('0x16'),_0x5de977['type']])[_0x4b28('0x1d')];return db[_0x4b28('0x45')][_0x4b28('0x18')]({'where':{'name':_0x1b52fc,'userProfileId':_0x254587['userProfileId']},'raw':!![]})['then'](function(_0x5239fb){if(_0x5239fb&&_0x5239fb['autoAssociation']===0x0){return db[_0x4b28('0x19')][_0x4b28('0x3b')]({'name':_0x5de977[_0x4b28('0x1d')],'resourceId':_0x5de977['id'],'type':_0x5239fb[_0x4b28('0x1d')],'sectionId':_0x5239fb['id']},{})['then'](function(){return _0x56c9f5;});}else{return _0x56c9f5;}})['catch'](function(_0x464127){logger['error'](_0x4b28('0x46'),_0x464127);throw _0x464127;});}return _0x56c9f5;})[_0x4b28('0x10')](respondWithResult(_0x5cc36b,0xc9))[_0x4b28('0x36')](handleError(_0x5cc36b,null));};exports[_0x4b28('0x47')]=function(_0x5d4b0f,_0x346e76){if(_0x5d4b0f[_0x4b28('0x3d')]['id']){delete _0x5d4b0f[_0x4b28('0x3d')]['id'];}return db['VoiceExtension']['find']({'where':{'id':_0x5d4b0f['params']['id']}})[_0x4b28('0x10')](handleEntityNotFound(_0x346e76,null))[_0x4b28('0x10')](function(_0x2d661d){if(_0x2d661d){return db[_0x4b28('0x33')][_0x4b28('0x47')](_[_0x4b28('0x2e')](_0x5d4b0f[_0x4b28('0x3d')],[_0x4b28('0x3e'),_0x4b28('0x48'),'description',_0x4b28('0x49'),'cutdigits',_0x4b28('0x4a'),'alias']),{'where':{'context':_0x2d661d[_0x4b28('0x48')],'exten':_0x2d661d['exten']},'individualHooks':!![]})[_0x4b28('0x10')](function(_0x166661){return _0x166661;});}return null;})[_0x4b28('0x10')](respondWithStatusCode(_0x346e76,null))['catch'](handleError(_0x346e76,null));};exports[_0x4b28('0x4b')]=function(_0x18cc0a,_0x562a9f){var _0x102c7b=_0x18cc0a[_0x4b28('0x3a')]['id'];var _0x3aa14b=_0x18cc0a[_0x4b28('0x3d')];var _0x10d318=0xc8;var _0x232756=null;return db[_0x4b28('0x4c')][_0x4b28('0x4d')]({'isolationLevel':db[_0x4b28('0x4c')]['Transaction'][_0x4b28('0x4e')][_0x4b28('0x4f')]},function(_0x5d06ab){return db[_0x4b28('0x33')][_0x4b28('0x50')]({'where':{'id':_0x102c7b},'transaction':_0x5d06ab})[_0x4b28('0x10')](function(_0x4009a7){if(_0x4009a7){return db[_0x4b28('0x33')][_0x4b28('0xf')]({'where':{'VoiceExtensionId':_0x102c7b},'transaction':_0x5d06ab})[_0x4b28('0x10')](function(){var _0x37b2be=_[_0x4b28('0x20')](_0x3aa14b,function(_0x3ac563){_0x3ac563['VoiceExtensionId']=_0x102c7b;_0x3ac563[_0x4b28('0x51')]=!![];return _0x3ac563;});return _0x4009a7[_0x4b28('0x52')](_0x37b2be);})[_0x4b28('0x10')](function(_0x8ee0fc){return db['VoiceExtension'][_0x4b28('0x53')](_0x8ee0fc,{'transaction':_0x5d06ab});});}else{_0x10d318=0x194;_0x232756=[];}});})['then'](function(){if(_0x10d318!==0x194){return db[_0x4b28('0x33')][_0x4b28('0x54')]({'where':{'isApp':!![],'VoiceExtensionId':_0x102c7b},'order':'cast(priority\x20as\x20unsigned)'})[_0x4b28('0x10')](function(_0x3deb32){_0x232756=_0x3deb32;});}})[_0x4b28('0x36')](function(_0x1fd6c8){_0x10d318=0x1f4;logger[_0x4b28('0x1b')](_0x1fd6c8[_0x4b28('0x1c')]);if(_0x1fd6c8[_0x4b28('0x1d')]){delete _0x1fd6c8[_0x4b28('0x1d')];}_0x232756=_0x1fd6c8;})[_0x4b28('0x55')](function(){if(_0x232756===null){_0x562a9f[_0x4b28('0x56')](_0x10d318);}else{if(_0x10d318===0x1f4){_0x562a9f[_0x4b28('0x8')](_0x10d318)[_0x4b28('0x1e')](_0x232756);}else{_0x562a9f[_0x4b28('0x8')](_0x10d318)[_0x4b28('0xe')](_0x232756);}}});};
\ No newline at end of file
index f50dcd8..b543eb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a0a=['remove','emit','hook','events','VoiceExtension','setMaxListeners','save'];(function(_0x4220ec,_0x47e9f3){var _0x431285=function(_0x13881d){while(--_0x13881d){_0x4220ec['push'](_0x4220ec['shift']());}};_0x431285(++_0x47e9f3);}(_0x7a0a,0x176));var _0xa7a0=function(_0x556f37,_0x5be04c){_0x556f37=_0x556f37-0x0;var _0x3e39f8=_0x7a0a[_0x556f37];return _0x3e39f8;};'use strict';var EventEmitter=require(_0xa7a0('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0xa7a0('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xa7a0('0x2')](0x0);var events={'afterCreate':_0xa7a0('0x3'),'afterUpdate':'update','afterDestroy':_0xa7a0('0x4')};function emitEvent(_0x3b4152){return function(_0x2119f6,_0x36c430,_0x440019){VoiceExtensionEvents[_0xa7a0('0x5')](_0x3b4152+':'+_0x2119f6['id'],_0x2119f6);VoiceExtensionEvents[_0xa7a0('0x5')](_0x3b4152,_0x2119f6);_0x440019(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xa7a0('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x45b7=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save'];(function(_0x329be6,_0xbdc71b){var _0x1cd78f=function(_0x4d235d){while(--_0x4d235d){_0x329be6['push'](_0x329be6['shift']());}};_0x1cd78f(++_0xbdc71b);}(_0x45b7,0x69));var _0x745b=function(_0x2f5dad,_0x4313ad){_0x2f5dad=_0x2f5dad-0x0;var _0x38e02d=_0x45b7[_0x2f5dad];return _0x38e02d;};'use strict';var EventEmitter=require(_0x745b('0x0'));var VoiceExtension=require(_0x745b('0x1'))['db'][_0x745b('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x745b('0x3')](0x0);var events={'afterCreate':_0x745b('0x4'),'afterUpdate':_0x745b('0x5'),'afterDestroy':_0x745b('0x6')};function emitEvent(_0x2a2da7){return function(_0x5313c7,_0x4d4e57,_0x4be867){VoiceExtensionEvents[_0x745b('0x7')](_0x2a2da7+':'+_0x5313c7['id'],_0x5313c7);VoiceExtensionEvents[_0x745b('0x7')](_0x2a2da7,_0x5313c7);_0x4be867(null);};}for(var e in events){if(events[_0x745b('0x8')](e)){var event=events[e];VoiceExtension[_0x745b('0x9')](e,emitEvent(event));}}module[_0x745b('0xa')]=VoiceExtensionEvents;
\ No newline at end of file
index 51a7049..ffa7858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83d3=['replace','isEmpty','Interval','findAll','interval','IntervalId','then','length','*,*,*,*','map','filter','toLowerCase','tag','CDR(tag)=','intervals','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','playback','includes','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appType','appdata','priority','last','define','voice_extensions','get','concat','Hangup','lodash','./voiceExtension.attributes','exports','Set','context','exten','type','CDR(routeAlias)=','alias','inbound','push','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','No\x20alias\x20set','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','CDR(routeid)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','trunk','timeout','options','url','split','name','phone','param','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)'];(function(_0x22431e,_0x5af0a3){var _0xd978e9=function(_0x2bbdd7){while(--_0x2bbdd7){_0x22431e['push'](_0x22431e['shift']());}};_0xd978e9(++_0x5af0a3);}(_0x83d3,0x17c));var _0x383d=function(_0x2b85d5,_0x3115b7){_0x2b85d5=_0x2b85d5-0x0;var _0xe8c96f=_0x83d3[_0x2b85d5];return _0xe8c96f;};'use strict';var _=require(_0x383d('0x0'));var attributes=require(_0x383d('0x1'));module[_0x383d('0x2')]=function(_0x381df6){var _0x37aa24=_0x381df6['models'];function _0x9287d4(_0x1184a6){var _0x31cbfc=0x2;var _0x202ffc=[{'type':_0x1184a6['type'],'app':_0x383d('0x3'),'appdata':'CDR(type)='+_0x1184a6['type'],'context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6[_0x383d('0x5')],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']},{'type':_0x1184a6[_0x383d('0x6')],'app':_0x1184a6['alias']?_0x383d('0x3'):'NoOp','appdata':_0x1184a6['alias']?_0x383d('0x7')+_0x1184a6[_0x383d('0x8')]:'No\x20alias\x20set','context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6[_0x383d('0x5')],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']}];if(_0x1184a6[_0x383d('0x6')]===_0x383d('0x9')){_0x202ffc[_0x383d('0xa')]({'type':_0x383d('0x9'),'app':'Set','appdata':'CDR(routeid)='+_0x1184a6['id'],'context':_0x1184a6['context'],'exten':_0x1184a6[_0x383d('0x5')],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']});}_0x202ffc['push']({'type':_0x1184a6[_0x383d('0x6')],'app':_0x383d('0x3'),'appdata':_0x383d('0xb'),'context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6['exten'],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']},{'type':_0x1184a6['type'],'app':_0x383d('0x3'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6['exten'],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']},{'type':_0x1184a6['type'],'app':_0x383d('0x3'),'appdata':_0x383d('0xc'),'context':_0x1184a6['context'],'exten':_0x1184a6['exten'],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']});return _0x202ffc;}function _0x11c1f9(_0x2a3025){var _0x5be3d7=0x2;var _0x475a84=[{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0xe'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x2a3025['alias']?_0x383d('0x3'):_0x383d('0xf'),'appdata':_0x2a3025[_0x383d('0x8')]?_0x383d('0x7')+_0x2a3025[_0x383d('0x8')]:_0x383d('0x10'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':'outbound','app':_0x383d('0x3'),'appdata':_0x383d('0x11')+(_0x2a3025['cutdigits']?_0x383d('0x12')+_0x2a3025[_0x383d('0x13')]+'}':_0x383d('0x14')),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0x15')+_0x2a3025['id'],'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':'outbound','app':'ExecIf','appdata':_0x383d('0x16')+(_0x5be3d7+0x2)+_0x383d('0x17')+(_0x5be3d7+0x1)+')','context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x2a3025[_0x383d('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0x2a3025[_0x383d('0x13')]+'}':_0x383d('0x18'),'context':_0x2a3025['context'],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0xb'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':'Set','appdata':_0x383d('0x19'),'context':_0x2a3025['context'],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0xc'),'context':_0x2a3025['context'],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':'Set','appdata':_0x383d('0x1a')+_0x2a3025['id'],'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']}];if(_0x2a3025[_0x383d('0x1b')]('recordingFormat')&&_0x2a3025[_0x383d('0x1c')]!==_0x383d('0x1d')){_0x475a84['push']({'type':_0x383d('0xd'),'app':'Set','appdata':_0x383d('0x1e'),'context':_0x2a3025['context'],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':'outbound','app':_0x383d('0x3'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x2a3025[_0x383d('0x1c')]||_0x383d('0x1f'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']});}return _0x475a84;}function _0x48a2a9(_0x28254f,_0x5379cc){var _0x23aeb4=[{'name':_0x383d('0x20'),'param':0x0},{'name':_0x383d('0x21'),'param':0x1},{'name':_0x383d('0x22'),'param':0x2},{'name':_0x383d('0x23'),'param':0x3}];var _0x1f6313={};var _0x47a5e0=_0x5379cc[_0x383d('0x24')](',');var _0x5cc6c4=[];for(var _0x31ea5e=0x0;_0x31ea5e<_0x23aeb4['length'];_0x31ea5e++){switch(_0x23aeb4[_0x31ea5e][_0x383d('0x25')]){case _0x383d('0x20'):_0x1f6313[_0x383d('0x20')]=_0x47a5e0[_0x23aeb4[_0x31ea5e]['param']][_0x383d('0x24')]('/')[0x1];_0x1f6313[_0x383d('0x26')]=_0x47a5e0[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]['split']('/')[0x2];_0x1f6313[_0x383d('0x28')]=_0x1f6313['phone']?_0x1f6313[_0x383d('0x26')][_0x383d('0x24')]('$')[0x0]:undefined;_0x1f6313['phone']=_0x28254f['cutdigits']?(_0x1f6313[_0x383d('0x28')]||'')+_0x383d('0x12')+_0x28254f[_0x383d('0x13')]+'}':(_0x1f6313[_0x383d('0x28')]||'')+_0x383d('0x14');_0x5cc6c4[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]=[_0x383d('0x29'),_0x1f6313[_0x383d('0x20')],_0x1f6313['phone']][_0x383d('0x2a')]('/');break;case _0x383d('0x22'):_0x1f6313['options']=_0x47a5e0[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]];if(_0x28254f[_0x383d('0x1c')]!==_0x383d('0x1d')){if(_0x1f6313[_0x383d('0x22')][_0x383d('0x2b')](_0x383d('0x2c'))<0x0){_0x1f6313[_0x383d('0x22')]+=_0x383d('0x2c');}}else{_0x1f6313[_0x383d('0x22')]=_0x1f6313['options'][_0x383d('0x2d')](_0x383d('0x2c'),'');}_0x5cc6c4[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]=_0x1f6313['options'];break;default:_0x5cc6c4[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]=_0x47a5e0[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]];}}return _0x5cc6c4[_0x383d('0x2a')](',');}function _0x508cf3(_0x5c7c3e,_0x3c0184,_0x5bf5cc){return new Promise(function(_0x3a4aaa,_0x693b48){var _0x48dd52=[];if(_[_0x383d('0x2e')](_0x3c0184))return _0x3a4aaa(_0x48dd52);_0x37aa24[_0x383d('0x2f')][_0x383d('0x30')]({'attributes':['id',_0x383d('0x31'),_0x383d('0x32')],'raw':!![]})[_0x383d('0x33')](function(_0x2f98f1){for(var _0x5072a5=0x0,_0x44bf8c=0x0;_0x5072a5<_0x3c0184[_0x383d('0x34')];_0x5072a5++,_0x44bf8c=0x0){var _0x59cabf=_0x3c0184[_0x5072a5];var _0x4735c0=[];var _0xa8b119=[];delete _0x59cabf['id'];if(_0x59cabf['interval']!==_0x383d('0x35')){_0x59cabf['intervals']=[_0x59cabf[_0x383d('0x31')]];}else{_0x59cabf['intervals']=_0x59cabf['IntervalId']?_[_0x383d('0x36')](_[_0x383d('0x37')](_0x2f98f1,{'IntervalId':_0x59cabf[_0x383d('0x32')]}),_0x383d('0x31')):[];}_0x59cabf[_0x383d('0x4')]=_0x5c7c3e['context'];_0x59cabf[_0x383d('0x5')]=_0x5c7c3e[_0x383d('0x5')];if(_0x59cabf[_0x383d('0x6')])_0x59cabf[_0x383d('0x6')]=_0x59cabf['type'][_0x383d('0x38')]();if(_0x5c7c3e[_0x383d('0x6')]===_0x383d('0xd')){if(_0x59cabf[_0x383d('0x1b')](_0x383d('0x39'))&&_0x59cabf['tag']&&_0x59cabf[_0x383d('0x39')]!=='--'){_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf[_0x383d('0x6')][_0x383d('0x38')](),'app':_0x383d('0x3'),'appdata':_0x383d('0x3a')+_0x59cabf[_0x383d('0x39')],'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf[_0x383d('0x6')][_0x383d('0x38')](),'app':_0x383d('0x3c'),'appdata':_0x383d('0x3d')+(_0x59cabf[_0x383d('0x3e')]?_0x383d('0x3f')+_0x59cabf[_0x383d('0x3e')]+')':_0x383d('0x40')),'context':_0x5c7c3e['context'],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}else{if(_0x59cabf[_0x383d('0x1b')](_0x383d('0x41'))){if([_0x383d('0x42'),_0x383d('0x43')][_0x383d('0x44')](_0x59cabf['app']['toLowerCase']())&&_0x59cabf['appType']!==_0x383d('0x45')){if(_0x59cabf['answer']){_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf[_0x383d('0x6')][_0x383d('0x38')](),'app':_0x383d('0x3c'),'appdata':_0x383d('0x46'),'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf['type']['toLowerCase'](),'app':_0x383d('0x3'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e['exten'],'priority':_0x59cabf[_0x383d('0x3b')]['length']+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}else{_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf['type'][_0x383d('0x38')](),'app':_0x383d('0x3c'),'appdata':_0x383d('0x47'),'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});_0x4735c0['push']({'type':_0x59cabf[_0x383d('0x6')]['toLowerCase'](),'app':_0x383d('0x3'),'appdata':_0x383d('0x48'),'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')]['length']+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}}}}for(var _0x220e4c=0x0;_0x220e4c<_0x59cabf[_0x383d('0x3b')]['length'];_0x220e4c++){var _0x510806=_0x5bf5cc+_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')];var _0x4c4a86=_0x220e4c===_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]-0x1?_0x5bf5cc+_0x4735c0[_0x383d('0x34')]+_0xa8b119[_0x383d('0x34')]+0x2:_0x5bf5cc+_0x220e4c+0x1;_0x4735c0[_0x383d('0x49')](_0x220e4c,0x0,{'type':_0x5c7c3e[_0x383d('0x6')],'app':_0x383d('0x4a'),'appdata':_0x59cabf['intervals'][_0x220e4c]+'?'+_0x5c7c3e['context']+_0x383d('0x4b')+_0x510806+':'+_0x5c7c3e[_0x383d('0x4')]+_0x383d('0x4b')+_0x4c4a86,'exten':_0x5c7c3e[_0x383d('0x5')],'context':_0x5c7c3e[_0x383d('0x4')],'priority':_0x5bf5cc+_0x220e4c,'VoiceExtensionId':_0x5c7c3e['id']});}if(_0x59cabf[_0x383d('0x4c')]==='outboundDial')_0x59cabf[_0x383d('0x4d')]=_0x48a2a9(_0x5c7c3e,_0x59cabf[_0x383d('0x4d')]);_0x59cabf[_0x383d('0x4e')]=_0x4735c0[_0x383d('0x34')]?_[_0x383d('0x4f')](_0x4735c0)[_0x383d('0x4e')]+0x1:_0x5bf5cc;_0x48dd52=_['concat'](_0x48dd52,_0x4735c0,[_0x59cabf],_0xa8b119);_0x5bf5cc=_[_0x383d('0x4f')](_0x48dd52)[_0x383d('0x4e')]+0x1;}return _0x3a4aaa(_0x48dd52);})['catch'](function(_0x251934){_0x693b48(_0x251934);});});}return _0x381df6[_0x383d('0x50')]('VoiceExtension',attributes,{'tableName':_0x383d('0x51'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x21c6cf){var _0x15c570=this[_0x383d('0x52')]({'plain':!![]});var _0x336c76=_0x15c570[_0x383d('0x6')]===_0x383d('0xd')?_0x11c1f9(_0x15c570):_0x9287d4(_0x15c570);return _0x508cf3(_0x15c570,_0x21c6cf,_[_0x383d('0x4f')](_0x336c76)[_0x383d('0x4e')]+0x1)[_0x383d('0x33')](function(_0x2a6543){var _0x41edbd=_[_0x383d('0x53')](_0x336c76,_0x2a6543);_0x41edbd['push']({'type':_0x15c570[_0x383d('0x6')],'app':_0x383d('0x54'),'exten':_0x15c570[_0x383d('0x5')],'context':_0x15c570['context'],'priority':_[_0x383d('0x4f')](_0x41edbd)['priority']+0x1,'VoiceExtensionId':_0x15c570['id']});return _0x41edbd;});}}});};
\ No newline at end of file
+var _0x4a80=['NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','define','VoiceExtension','get','Hangup','lodash','exports','models','type','Set','CDR(type)=','context','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','exten','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','url','split','name','phone','prefix','param','join','options','indexOf','U(xcally-mixmonitor-context)','replace','Interval','interval','then','length','*,*,*,*','intervals','IntervalId','map','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)='];(function(_0x12258f,_0x22a0db){var _0x547564=function(_0x4ae224){while(--_0x4ae224){_0x12258f['push'](_0x12258f['shift']());}};_0x547564(++_0x22a0db);}(_0x4a80,0xbe));var _0x04a8=function(_0x5d2d4c,_0x3fe5d8){_0x5d2d4c=_0x5d2d4c-0x0;var _0x273ccb=_0x4a80[_0x5d2d4c];return _0x273ccb;};'use strict';var _=require(_0x04a8('0x0'));var attributes=require('./voiceExtension.attributes');module[_0x04a8('0x1')]=function(_0x333eb6){var _0x5edee6=_0x333eb6[_0x04a8('0x2')];function _0x198bc8(_0x256369){var _0x1e36fc=0x2;var _0x85c22=[{'type':_0x256369[_0x04a8('0x3')],'app':_0x04a8('0x4'),'appdata':_0x04a8('0x5')+_0x256369[_0x04a8('0x3')],'context':_0x256369[_0x04a8('0x6')],'exten':_0x256369['exten'],'priority':_0x1e36fc++,'VoiceExtensionId':_0x256369['id']},{'type':_0x256369[_0x04a8('0x3')],'app':_0x256369[_0x04a8('0x7')]?_0x04a8('0x4'):_0x04a8('0x8'),'appdata':_0x256369[_0x04a8('0x7')]?_0x04a8('0x9')+_0x256369[_0x04a8('0x7')]:_0x04a8('0xa'),'context':_0x256369[_0x04a8('0x6')],'exten':_0x256369[_0x04a8('0xb')],'priority':_0x1e36fc++,'VoiceExtensionId':_0x256369['id']}];if(_0x256369['type']===_0x04a8('0xc')){_0x85c22[_0x04a8('0xd')]({'type':_0x04a8('0xc'),'app':'Set','appdata':_0x04a8('0xe')+_0x256369['id'],'context':_0x256369[_0x04a8('0x6')],'exten':_0x256369[_0x04a8('0xb')],'priority':_0x1e36fc++,'VoiceExtensionId':_0x256369['id']});}_0x85c22[_0x04a8('0xd')]({'type':_0x256369[_0x04a8('0x3')],'app':_0x04a8('0x4'),'appdata':_0x04a8('0xf'),'context':_0x256369['context'],'exten':_0x256369[_0x04a8('0xb')],'priority':_0x1e36fc++,'VoiceExtensionId':_0x256369['id']},{'type':_0x256369[_0x04a8('0x3')],'app':_0x04a8('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x256369['context'],'exten':_0x256369[_0x04a8('0xb')],'priority':_0x1e36fc++,'VoiceExtensionId':_0x256369['id']},{'type':_0x256369[_0x04a8('0x3')],'app':'Set','appdata':_0x04a8('0x10'),'context':_0x256369['context'],'exten':_0x256369[_0x04a8('0xb')],'priority':_0x1e36fc++,'VoiceExtensionId':_0x256369['id']});return _0x85c22;}function _0x5dee8a(_0x129973){var _0x173f8e=0x2;var _0x4bb73c=[{'type':_0x04a8('0x11'),'app':_0x04a8('0x4'),'appdata':'CDR(type)=outbound','context':_0x129973['context'],'exten':_0x129973['exten'],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':_0x04a8('0x11'),'app':_0x129973[_0x04a8('0x7')]?_0x04a8('0x4'):_0x04a8('0x8'),'appdata':_0x129973[_0x04a8('0x7')]?_0x04a8('0x9')+_0x129973['alias']:_0x04a8('0xa'),'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973[_0x04a8('0xb')],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':_0x04a8('0x11'),'app':_0x04a8('0x4'),'appdata':_0x04a8('0x12')+(_0x129973[_0x04a8('0x13')]?_0x04a8('0x14')+_0x129973['cutdigits']+'}':_0x04a8('0x15')),'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973[_0x04a8('0xb')],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':'outbound','app':'Set','appdata':_0x04a8('0xe')+_0x129973['id'],'context':_0x129973['context'],'exten':_0x129973['exten'],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':_0x04a8('0x11'),'app':_0x04a8('0x16'),'appdata':_0x04a8('0x17')+(_0x173f8e+0x2)+_0x04a8('0x18')+(_0x173f8e+0x1)+')','context':_0x129973[_0x04a8('0x6')],'exten':_0x129973[_0x04a8('0xb')],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':_0x04a8('0x11'),'app':'Set','appdata':_0x129973[_0x04a8('0x13')]?_0x04a8('0x19')+_0x129973['cutdigits']+'}':_0x04a8('0x1a'),'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973[_0x04a8('0xb')],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':_0x04a8('0x11'),'app':_0x04a8('0x4'),'appdata':_0x04a8('0xf'),'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973[_0x04a8('0xb')],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':_0x04a8('0x11'),'app':_0x04a8('0x4'),'appdata':_0x04a8('0x1b'),'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973['exten'],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':'outbound','app':_0x04a8('0x4'),'appdata':_0x04a8('0x10'),'context':_0x129973['context'],'exten':_0x129973['exten'],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':_0x04a8('0x11'),'app':_0x04a8('0x4'),'appdata':_0x04a8('0x1c')+_0x129973['id'],'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973['exten'],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']}];if(_0x129973[_0x04a8('0x1d')]('recordingFormat')&&_0x129973[_0x04a8('0x1e')]!==_0x04a8('0x1f')){_0x4bb73c[_0x04a8('0xd')]({'type':_0x04a8('0x11'),'app':_0x04a8('0x4'),'appdata':_0x04a8('0x20'),'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973[_0x04a8('0xb')],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']},{'type':'outbound','app':_0x04a8('0x4'),'appdata':_0x04a8('0x21')+_0x129973['recordingFormat']||_0x04a8('0x22'),'context':_0x129973[_0x04a8('0x6')],'exten':_0x129973['exten'],'priority':_0x173f8e++,'VoiceExtensionId':_0x129973['id']});}return _0x4bb73c;}function _0x377c39(_0x254267,_0x536f6c){var _0x1d0399=[{'name':_0x04a8('0x23'),'param':0x0},{'name':_0x04a8('0x24'),'param':0x1},{'name':'options','param':0x2},{'name':_0x04a8('0x25'),'param':0x3}];var _0xc5e0b={};var _0x4ce22b=_0x536f6c[_0x04a8('0x26')](',');var _0x10c9c5=[];for(var _0x339586=0x0;_0x339586<_0x1d0399['length'];_0x339586++){switch(_0x1d0399[_0x339586][_0x04a8('0x27')]){case _0x04a8('0x23'):_0xc5e0b[_0x04a8('0x23')]=_0x4ce22b[_0x1d0399[_0x339586]['param']]['split']('/')[0x1];_0xc5e0b[_0x04a8('0x28')]=_0x4ce22b[_0x1d0399[_0x339586]['param']]['split']('/')[0x2];_0xc5e0b[_0x04a8('0x29')]=_0xc5e0b[_0x04a8('0x28')]?_0xc5e0b[_0x04a8('0x28')][_0x04a8('0x26')]('$')[0x0]:undefined;_0xc5e0b[_0x04a8('0x28')]=_0x254267['cutdigits']?(_0xc5e0b['prefix']||'')+_0x04a8('0x14')+_0x254267[_0x04a8('0x13')]+'}':(_0xc5e0b[_0x04a8('0x29')]||'')+_0x04a8('0x15');_0x10c9c5[_0x1d0399[_0x339586][_0x04a8('0x2a')]]=['SIP',_0xc5e0b[_0x04a8('0x23')],_0xc5e0b['phone']][_0x04a8('0x2b')]('/');break;case _0x04a8('0x2c'):_0xc5e0b['options']=_0x4ce22b[_0x1d0399[_0x339586][_0x04a8('0x2a')]];if(_0x254267[_0x04a8('0x1e')]!=='none'){if(_0xc5e0b[_0x04a8('0x2c')][_0x04a8('0x2d')](_0x04a8('0x2e'))<0x0){_0xc5e0b[_0x04a8('0x2c')]+=_0x04a8('0x2e');}}else{_0xc5e0b['options']=_0xc5e0b['options'][_0x04a8('0x2f')](_0x04a8('0x2e'),'');}_0x10c9c5[_0x1d0399[_0x339586][_0x04a8('0x2a')]]=_0xc5e0b['options'];break;default:_0x10c9c5[_0x1d0399[_0x339586][_0x04a8('0x2a')]]=_0x4ce22b[_0x1d0399[_0x339586][_0x04a8('0x2a')]];}}return _0x10c9c5[_0x04a8('0x2b')](',');}function _0x16a257(_0x3b4c5b,_0x4eaeb4,_0x47067b){return new Promise(function(_0x19f417,_0x2ebe73){var _0x51bfca=[];if(_['isEmpty'](_0x4eaeb4))return _0x19f417(_0x51bfca);_0x5edee6[_0x04a8('0x30')]['findAll']({'attributes':['id',_0x04a8('0x31'),'IntervalId'],'raw':!![]})[_0x04a8('0x32')](function(_0x30f982){for(var _0x4ee013=0x0,_0x28fe9f=0x0;_0x4ee013<_0x4eaeb4[_0x04a8('0x33')];_0x4ee013++,_0x28fe9f=0x0){var _0x5c6f63=_0x4eaeb4[_0x4ee013];var _0x585d4f=[];var _0x594b1f=[];delete _0x5c6f63['id'];if(_0x5c6f63[_0x04a8('0x31')]!==_0x04a8('0x34')){_0x5c6f63['intervals']=[_0x5c6f63[_0x04a8('0x31')]];}else{_0x5c6f63[_0x04a8('0x35')]=_0x5c6f63[_0x04a8('0x36')]?_[_0x04a8('0x37')](_['filter'](_0x30f982,{'IntervalId':_0x5c6f63[_0x04a8('0x36')]}),_0x04a8('0x31')):[];}_0x5c6f63['context']=_0x3b4c5b[_0x04a8('0x6')];_0x5c6f63[_0x04a8('0xb')]=_0x3b4c5b[_0x04a8('0xb')];if(_0x5c6f63['type'])_0x5c6f63[_0x04a8('0x3')]=_0x5c6f63['type']['toLowerCase']();if(_0x3b4c5b[_0x04a8('0x3')]===_0x04a8('0x11')){if(_0x5c6f63[_0x04a8('0x1d')](_0x04a8('0x38'))&&_0x5c6f63[_0x04a8('0x38')]&&_0x5c6f63['tag']!=='--'){_0x585d4f[_0x04a8('0xd')]({'type':_0x5c6f63[_0x04a8('0x3')][_0x04a8('0x39')](),'app':_0x04a8('0x4'),'appdata':_0x04a8('0x3a')+_0x5c6f63[_0x04a8('0x38')],'context':_0x3b4c5b['context'],'exten':_0x3b4c5b[_0x04a8('0xb')],'priority':_0x5c6f63[_0x04a8('0x35')]['length']+_0x47067b+_0x28fe9f++,'VoiceExtensionId':_0x3b4c5b['id']});}_0x585d4f['push']({'type':_0x5c6f63[_0x04a8('0x3')]['toLowerCase'](),'app':_0x04a8('0x16'),'appdata':_0x04a8('0x3b')+(_0x5c6f63[_0x04a8('0x3c')]?_0x04a8('0x3d')+_0x5c6f63['callerID']+')':_0x04a8('0x3e')),'context':_0x3b4c5b['context'],'exten':_0x3b4c5b['exten'],'priority':_0x5c6f63[_0x04a8('0x35')][_0x04a8('0x33')]+_0x47067b+_0x28fe9f++,'VoiceExtensionId':_0x3b4c5b['id']});}else{if(_0x5c6f63['hasOwnProperty'](_0x04a8('0x3f'))){if(['queue',_0x04a8('0x40')][_0x04a8('0x41')](_0x5c6f63[_0x04a8('0x42')][_0x04a8('0x39')]())&&_0x5c6f63[_0x04a8('0x43')]!==_0x04a8('0x44')){if(_0x5c6f63[_0x04a8('0x3f')]){_0x585d4f['push']({'type':_0x5c6f63[_0x04a8('0x3')][_0x04a8('0x39')](),'app':_0x04a8('0x16'),'appdata':_0x04a8('0x45'),'context':_0x3b4c5b[_0x04a8('0x6')],'exten':_0x3b4c5b[_0x04a8('0xb')],'priority':_0x5c6f63[_0x04a8('0x35')][_0x04a8('0x33')]+_0x47067b+_0x28fe9f++,'VoiceExtensionId':_0x3b4c5b['id']});_0x585d4f[_0x04a8('0xd')]({'type':_0x5c6f63['type'][_0x04a8('0x39')](),'app':'Set','appdata':_0x04a8('0x46'),'context':_0x3b4c5b[_0x04a8('0x6')],'exten':_0x3b4c5b[_0x04a8('0xb')],'priority':_0x5c6f63[_0x04a8('0x35')][_0x04a8('0x33')]+_0x47067b+_0x28fe9f++,'VoiceExtensionId':_0x3b4c5b['id']});}else{_0x585d4f['push']({'type':_0x5c6f63[_0x04a8('0x3')]['toLowerCase'](),'app':_0x04a8('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x3b4c5b[_0x04a8('0x6')],'exten':_0x3b4c5b['exten'],'priority':_0x5c6f63[_0x04a8('0x35')][_0x04a8('0x33')]+_0x47067b+_0x28fe9f++,'VoiceExtensionId':_0x3b4c5b['id']});_0x585d4f['push']({'type':_0x5c6f63[_0x04a8('0x3')]['toLowerCase'](),'app':_0x04a8('0x4'),'appdata':_0x04a8('0x47'),'context':_0x3b4c5b[_0x04a8('0x6')],'exten':_0x3b4c5b[_0x04a8('0xb')],'priority':_0x5c6f63[_0x04a8('0x35')][_0x04a8('0x33')]+_0x47067b+_0x28fe9f++,'VoiceExtensionId':_0x3b4c5b['id']});}}}}for(var _0x2d2085=0x0;_0x2d2085<_0x5c6f63['intervals'][_0x04a8('0x33')];_0x2d2085++){var _0x3ae4c8=_0x47067b+_0x5c6f63['intervals']['length'];var _0x3846de=_0x2d2085===_0x5c6f63['intervals']['length']-0x1?_0x47067b+_0x585d4f['length']+_0x594b1f[_0x04a8('0x33')]+0x2:_0x47067b+_0x2d2085+0x1;_0x585d4f[_0x04a8('0x48')](_0x2d2085,0x0,{'type':_0x3b4c5b['type'],'app':_0x04a8('0x49'),'appdata':_0x5c6f63[_0x04a8('0x35')][_0x2d2085]+'?'+_0x3b4c5b['context']+_0x04a8('0x4a')+_0x3ae4c8+':'+_0x3b4c5b['context']+_0x04a8('0x4a')+_0x3846de,'exten':_0x3b4c5b[_0x04a8('0xb')],'context':_0x3b4c5b['context'],'priority':_0x47067b+_0x2d2085,'VoiceExtensionId':_0x3b4c5b['id']});}if(_0x5c6f63[_0x04a8('0x43')]===_0x04a8('0x4b'))_0x5c6f63[_0x04a8('0x4c')]=_0x377c39(_0x3b4c5b,_0x5c6f63[_0x04a8('0x4c')]);_0x5c6f63[_0x04a8('0x4d')]=_0x585d4f[_0x04a8('0x33')]?_[_0x04a8('0x4e')](_0x585d4f)[_0x04a8('0x4d')]+0x1:_0x47067b;_0x51bfca=_[_0x04a8('0x4f')](_0x51bfca,_0x585d4f,[_0x5c6f63],_0x594b1f);_0x47067b=_[_0x04a8('0x4e')](_0x51bfca)[_0x04a8('0x4d')]+0x1;}return _0x19f417(_0x51bfca);})['catch'](function(_0x59f3cd){_0x2ebe73(_0x59f3cd);});});}return _0x333eb6[_0x04a8('0x50')](_0x04a8('0x51'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x4a9ca9){var _0x1d5f27=this[_0x04a8('0x52')]({'plain':!![]});var _0x3a3b31=_0x1d5f27['type']===_0x04a8('0x11')?_0x5dee8a(_0x1d5f27):_0x198bc8(_0x1d5f27);return _0x16a257(_0x1d5f27,_0x4a9ca9,_[_0x04a8('0x4e')](_0x3a3b31)['priority']+0x1)[_0x04a8('0x32')](function(_0x66eab9){var _0x47911a=_[_0x04a8('0x4f')](_0x3a3b31,_0x66eab9);_0x47911a[_0x04a8('0xd')]({'type':_0x1d5f27[_0x04a8('0x3')],'app':_0x04a8('0x53'),'exten':_0x1d5f27[_0x04a8('0xb')],'context':_0x1d5f27[_0x04a8('0x6')],'priority':_[_0x04a8('0x4e')](_0x47911a)[_0x04a8('0x4d')]+0x1,'VoiceExtensionId':_0x1d5f27['id']});return _0x47911a;});}}});};
\ No newline at end of file
index d22e0c9..92aaa4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0a=['findAll','options','where','attributes','limit','include','map','model','stringify','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','error','code','VoiceExtension,\x20%s,\x20%s','message','request\x20sent','result','GetVoiceExtension','VoiceExtension'];(function(_0x450689,_0x3b857c){var _0x46ffb0=function(_0x5d3679){while(--_0x5d3679){_0x450689['push'](_0x450689['shift']());}};_0x46ffb0(++_0x3b857c);}(_0x8d0a,0x172));var _0xa8d0=function(_0x3acc94,_0x4216ef){_0x3acc94=_0x3acc94-0x0;var _0x93e335=_0x8d0a[_0x3acc94];return _0x93e335;};'use strict';var _=require(_0xa8d0('0x0'));var util=require(_0xa8d0('0x1'));var moment=require(_0xa8d0('0x2'));var BPromise=require('bluebird');var rs=require(_0xa8d0('0x3'));var fs=require('fs');var Redis=require(_0xa8d0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa8d0('0x5'));var logger=require(_0xa8d0('0x6'))(_0xa8d0('0x7'));var config=require('../../config/environment');var jayson=require(_0xa8d0('0x8'));var client=jayson[_0xa8d0('0x9')][_0xa8d0('0xa')]({'port':0x232a});config[_0xa8d0('0xb')]=_[_0xa8d0('0xc')](config[_0xa8d0('0xb')],{'host':_0xa8d0('0xd'),'port':0x18eb});var socket=require(_0xa8d0('0xe'))(new Redis(config[_0xa8d0('0xb')]));require(_0xa8d0('0xf'))[_0xa8d0('0x10')](socket);function respondWithRpcPromise(_0x9fee79,_0x3c1221,_0x23cbc5){return new BPromise(function(_0x3a1138,_0xe516eb){return client[_0xa8d0('0x11')](_0x9fee79,_0x23cbc5)[_0xa8d0('0x12')](function(_0x380cc5){logger[_0xa8d0('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x3c1221,'request\x20sent');logger[_0xa8d0('0x14')](_0xa8d0('0x15'),_0x3c1221,'request\x20sent',JSON['stringify'](_0x380cc5));if(_0x380cc5[_0xa8d0('0x16')]){if(_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x17')]===0x1f4){logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x19')]);return _0xe516eb(_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x19')]);}logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x380cc5['error'][_0xa8d0('0x19')]);return _0x3a1138(_0x380cc5[_0xa8d0('0x16')]['message']);}else{logger[_0xa8d0('0x13')](_0xa8d0('0x18'),_0x3c1221,_0xa8d0('0x1a'));_0x3a1138(_0x380cc5[_0xa8d0('0x1b')][_0xa8d0('0x19')]);}})['catch'](function(_0x35554e){logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x35554e);_0xe516eb(_0x35554e);});});}exports[_0xa8d0('0x1c')]=function(_0x1b5dfb){var _0x16e479=this;return new Promise(function(_0x21a6ca,_0x595452){return db[_0xa8d0('0x1d')][_0xa8d0('0x1e')]({'raw':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x20')]||null:null,'attributes':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb['options'][_0xa8d0('0x21')]||null:null,'limit':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x22')]||null:null,'include':_0x1b5dfb['options']?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x23')]?_[_0xa8d0('0x24')](_0x1b5dfb['options'][_0xa8d0('0x23')],function(_0x5f5dfb){return{'model':db[_0x5f5dfb[_0xa8d0('0x25')]],'as':_0x5f5dfb['as'],'attributes':_0x5f5dfb[_0xa8d0('0x21')],'include':_0x5f5dfb['include']?_['map'](_0x5f5dfb[_0xa8d0('0x23')],function(_0x5d9a04){return{'model':db[_0x5d9a04[_0xa8d0('0x25')]],'as':_0x5d9a04['as'],'attributes':_0x5d9a04[_0xa8d0('0x21')],'include':_0x5d9a04[_0xa8d0('0x23')]?_[_0xa8d0('0x24')](_0x5d9a04[_0xa8d0('0x23')],function(_0x5a5079){return{'model':db[_0x5a5079[_0xa8d0('0x25')]],'as':_0x5a5079['as'],'attributes':_0x5a5079[_0xa8d0('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa8d0('0x12')](function(_0x500cec){logger['info']('GetVoiceExtension',_0x1b5dfb);logger[_0xa8d0('0x14')](_0xa8d0('0x1c'),_0x1b5dfb,JSON[_0xa8d0('0x26')](_0x500cec));_0x21a6ca(_0x500cec);})[_0xa8d0('0x27')](function(_0x2c9ff2){logger[_0xa8d0('0x16')](_0xa8d0('0x1c'),_0x2c9ff2['message'],_0x1b5dfb);_0x595452(_0x16e479[_0xa8d0('0x16')](0x1f4,_0x2c9ff2['message']));});});};
\ No newline at end of file
+var _0x02b6=['debug','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','findAll','options','attributes','limit','include','model','map','GetVoiceExtension','stringify','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','then','info','VoiceExtension,\x20%s,\x20%s'];(function(_0x492987,_0x3d9e71){var _0x2ee521=function(_0x490b7e){while(--_0x490b7e){_0x492987['push'](_0x492987['shift']());}};_0x2ee521(++_0x3d9e71);}(_0x02b6,0xfe));var _0x602b=function(_0x327fce,_0x1a5a4a){_0x327fce=_0x327fce-0x0;var _0x5e32d3=_0x02b6[_0x327fce];return _0x5e32d3;};'use strict';var _=require(_0x602b('0x0'));var util=require('util');var moment=require(_0x602b('0x1'));var BPromise=require(_0x602b('0x2'));var rs=require(_0x602b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x602b('0x4'));var logger=require(_0x602b('0x5'))(_0x602b('0x6'));var config=require(_0x602b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x602b('0x8')]['http']({'port':0x232a});config[_0x602b('0x9')]=_[_0x602b('0xa')](config[_0x602b('0x9')],{'host':_0x602b('0xb'),'port':0x18eb});var socket=require(_0x602b('0xc'))(new Redis(config[_0x602b('0x9')]));require(_0x602b('0xd'))[_0x602b('0xe')](socket);function respondWithRpcPromise(_0x20c7cf,_0x1687ca,_0x4fb0a2){return new BPromise(function(_0x470cf0,_0x5ca85d){return client['request'](_0x20c7cf,_0x4fb0a2)[_0x602b('0xf')](function(_0x568461){logger[_0x602b('0x10')](_0x602b('0x11'),_0x1687ca,'request\x20sent');logger[_0x602b('0x12')](_0x602b('0x13'),_0x1687ca,_0x602b('0x14'),JSON['stringify'](_0x568461));if(_0x568461[_0x602b('0x15')]){if(_0x568461[_0x602b('0x15')][_0x602b('0x16')]===0x1f4){logger[_0x602b('0x15')](_0x602b('0x11'),_0x1687ca,_0x568461[_0x602b('0x15')][_0x602b('0x17')]);return _0x5ca85d(_0x568461['error']['message']);}logger[_0x602b('0x15')](_0x602b('0x11'),_0x1687ca,_0x568461[_0x602b('0x15')][_0x602b('0x17')]);return _0x470cf0(_0x568461[_0x602b('0x15')][_0x602b('0x17')]);}else{logger[_0x602b('0x10')](_0x602b('0x11'),_0x1687ca,_0x602b('0x14'));_0x470cf0(_0x568461['result'][_0x602b('0x17')]);}})[_0x602b('0x18')](function(_0x3ddabd){logger['error'](_0x602b('0x11'),_0x1687ca,_0x3ddabd);_0x5ca85d(_0x3ddabd);});});}exports['GetVoiceExtension']=function(_0x4ddfe0){var _0x311da8=this;return new Promise(function(_0x4e888d,_0x28eadf){return db['VoiceExtension'][_0x602b('0x19')]({'raw':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')]['where']||null:null,'attributes':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1b')]||null:null,'limit':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1c')]||null:null,'include':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1d')]?_['map'](_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1d')],function(_0x5ce51b){return{'model':db[_0x5ce51b[_0x602b('0x1e')]],'as':_0x5ce51b['as'],'attributes':_0x5ce51b[_0x602b('0x1b')],'include':_0x5ce51b['include']?_[_0x602b('0x1f')](_0x5ce51b[_0x602b('0x1d')],function(_0x22cd69){return{'model':db[_0x22cd69[_0x602b('0x1e')]],'as':_0x22cd69['as'],'attributes':_0x22cd69[_0x602b('0x1b')],'include':_0x22cd69[_0x602b('0x1d')]?_[_0x602b('0x1f')](_0x22cd69[_0x602b('0x1d')],function(_0x3e82bc){return{'model':db[_0x3e82bc[_0x602b('0x1e')]],'as':_0x3e82bc['as'],'attributes':_0x3e82bc[_0x602b('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23a7f4){logger['info'](_0x602b('0x20'),_0x4ddfe0);logger[_0x602b('0x12')](_0x602b('0x20'),_0x4ddfe0,JSON[_0x602b('0x21')](_0x23a7f4));_0x4e888d(_0x23a7f4);})[_0x602b('0x18')](function(_0x3647cf){logger[_0x602b('0x15')](_0x602b('0x20'),_0x3647cf[_0x602b('0x17')],_0x4ddfe0);_0x28eadf(_0x311da8[_0x602b('0x15')](0x1f4,_0x3647cf[_0x602b('0x17')]));});});};
\ No newline at end of file
index c416e01..e3f44c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x118540,_0x4c53b3){var _0xc900be=function(_0x3ffa03){while(--_0x3ffa03){_0x118540['push'](_0x118540['shift']());}};_0xc900be(++_0x4c53b3);}(_0x7a54,0x106));var _0x47a5=function(_0x2ca188,_0x24577f){_0x2ca188=_0x2ca188-0x0;var _0x3ba3ff=_0x7a54[_0x2ca188];return _0x3ba3ff;};'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
+var _0x2ef3=['update','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save','remove'];(function(_0xaf06ee,_0x139d54){var _0x5e463e=function(_0x4338f5){while(--_0x4338f5){_0xaf06ee['push'](_0xaf06ee['shift']());}};_0x5e463e(++_0x139d54);}(_0x2ef3,0xba));var _0x32ef=function(_0x249d7e,_0x3ccaea){_0x249d7e=_0x249d7e-0x0;var _0x2c4bcf=_0x2ef3[_0x249d7e];return _0x2c4bcf;};'use strict';var VoiceExtensionEvents=require(_0x32ef('0x0'));var events=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3')];function createListener(_0x3944df,_0x38047b){return function(_0x48106c){_0x38047b[_0x32ef('0x4')](_0x3944df,_0x48106c);};}function removeListener(_0x38b7f3,_0x524ab6){return function(){VoiceExtensionEvents[_0x32ef('0x5')](_0x38b7f3,_0x524ab6);};}exports[_0x32ef('0x6')]=function(_0x4c8104){for(var _0x5dfa09=0x0,_0x2c0089=events[_0x32ef('0x7')];_0x5dfa09<_0x2c0089;_0x5dfa09++){var _0x367c39=events[_0x5dfa09];var _0x2fb8eb=createListener(_0x32ef('0x8')+_0x367c39,_0x4c8104);VoiceExtensionEvents['on'](_0x367c39,_0x2fb8eb);}};
\ No newline at end of file
index 9f8de6b..598af50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741c=['get','isAuthenticated','index','/:id','/:id/messages','getMessages','create','put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','./voiceMail.controller'];(function(_0x3fcd66,_0x83eaec){var _0x54a268=function(_0x4ec8e2){while(--_0x4ec8e2){_0x3fcd66['push'](_0x3fcd66['shift']());}};_0x54a268(++_0x83eaec);}(_0x741c,0x196));var _0xc741=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x741c[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xc741('0x0'));var util=require(_0xc741('0x1'));var path=require(_0xc741('0x2'));var timeout=require(_0xc741('0x3'));var express=require(_0xc741('0x4'));var router=express[_0xc741('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc741('0x6'));var config=require('../../config/environment');var controller=require(_0xc741('0x7'));router[_0xc741('0x8')]('/',auth[_0xc741('0x9')](),controller[_0xc741('0xa')]);router[_0xc741('0x8')](_0xc741('0xb'),auth[_0xc741('0x9')](),controller['show']);router[_0xc741('0x8')](_0xc741('0xc'),auth['isAuthenticated'](),controller[_0xc741('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc741('0xe')]);router[_0xc741('0xf')](_0xc741('0xb'),auth[_0xc741('0x9')](),controller[_0xc741('0x10')]);router[_0xc741('0x11')](_0xc741('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3d04=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','show','/:id/messages','getMessages','create','update','delete','/:id','destroy'];(function(_0x1b2779,_0x181d22){var _0x162929=function(_0x2d0083){while(--_0x2d0083){_0x1b2779['push'](_0x1b2779['shift']());}};_0x162929(++_0x181d22);}(_0x3d04,0xbe));var _0x43d0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x3d04[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var path=require(_0x43d0('0x2'));var timeout=require(_0x43d0('0x3'));var express=require(_0x43d0('0x4'));var router=express[_0x43d0('0x5')]();var fs_extra=require(_0x43d0('0x6'));var auth=require(_0x43d0('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x43d0('0x8'));var controller=require(_0x43d0('0x9'));router[_0x43d0('0xa')]('/',auth[_0x43d0('0xb')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x43d0('0xc')]);router[_0x43d0('0xa')](_0x43d0('0xd'),auth[_0x43d0('0xb')](),controller[_0x43d0('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x43d0('0xf')]);router['put']('/:id',auth[_0x43d0('0xb')](),controller[_0x43d0('0x10')]);router[_0x43d0('0x11')](_0x43d0('0x12'),auth['isAuthenticated'](),controller[_0x43d0('0x13')]);module[_0x43d0('0x14')]=router;
\ No newline at end of file
index 02e7c88..d8f751e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ca8=['STRING','from-voicemail','contest_mailbox','setDataValue','email','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20','mailbox','exports'];(function(_0x3e91e0,_0x2175e0){var _0x2d243d=function(_0x48c3b6){while(--_0x48c3b6){_0x3e91e0['push'](_0x3e91e0['shift']());}};_0x2d243d(++_0x2175e0);}(_0x5ca8,0x1db));var _0x85ca=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x5ca8[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require('sequelize');module[_0x85ca('0x0')]={'customer_id':{'type':Sequelize[_0x85ca('0x1')]},'context':{'type':Sequelize[_0x85ca('0x1')],'defaultValue':_0x85ca('0x2'),'unique':_0x85ca('0x3')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x85ca('0x3')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x85ca('0x1')]},'email':{'type':Sequelize[_0x85ca('0x1')],'validate':{'isEmail':!![]},'set':function(_0x2cd720){this[_0x85ca('0x4')](_0x85ca('0x5'),typeof _0x2cd720==='string'&&_0x2cd720[_0x85ca('0x6')]()?_0x2cd720['trim']():null);}},'pager':{'type':Sequelize[_0x85ca('0x1')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x85ca('0x7')},'attach':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':_0x85ca('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x85ca('0x1')]},'callback':{'type':Sequelize[_0x85ca('0x1')]},'review':{'type':Sequelize['ENUM'](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x85ca('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':_0x85ca('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':_0x85ca('0x9'),'allowNull':![]},'stamp':{'type':_0x85ca('0xb')},'emailsubject':{'type':Sequelize[_0x85ca('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x85ca('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x85ca('0xd')],'get':function(){return this[_0x85ca('0xe')]('fullname')+_0x85ca('0xf')+this[_0x85ca('0xe')](_0x85ca('0x10'));}}};
\ No newline at end of file
+var _0x7ff6=['contest_mailbox','setDataValue','email','trim','central','ENUM','yes','TIMESTAMP','INTEGER','fullname','\x20-\x20','getDataValue','mailbox','sequelize','exports','STRING','from-voicemail'];(function(_0x1111ba,_0x3eb8b2){var _0x28921c=function(_0x5ef0e7){while(--_0x5ef0e7){_0x1111ba['push'](_0x1111ba['shift']());}};_0x28921c(++_0x3eb8b2);}(_0x7ff6,0x1a5));var _0x67ff=function(_0x432cfb,_0x1a2962){_0x432cfb=_0x432cfb-0x0;var _0x171ece=_0x7ff6[_0x432cfb];return _0x171ece;};'use strict';var Sequelize=require(_0x67ff('0x0'));module[_0x67ff('0x1')]={'customer_id':{'type':Sequelize[_0x67ff('0x2')]},'context':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':_0x67ff('0x3'),'unique':_0x67ff('0x4')},'mailbox':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x67ff('0x2')]},'fullname':{'type':Sequelize[_0x67ff('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x589709){this[_0x67ff('0x5')](_0x67ff('0x6'),typeof _0x589709==='string'&&_0x589709[_0x67ff('0x7')]()?_0x589709['trim']():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':_0x67ff('0x8')},'attach':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':_0x67ff('0xa'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0x67ff('0xa'),'no'),'defaultValue':_0x67ff('0xa'),'allowNull':![]},'dialout':{'type':Sequelize[_0x67ff('0x2')]},'callback':{'type':Sequelize[_0x67ff('0x2')]},'review':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x67ff('0xa'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x67ff('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':_0x67ff('0xa'),'allowNull':![]},'forcename':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0x67ff('0xa'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x67ff('0x9')](_0x67ff('0xa'),'no'),'defaultValue':_0x67ff('0xa'),'allowNull':![]},'stamp':{'type':_0x67ff('0xb')},'emailsubject':{'type':Sequelize[_0x67ff('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x67ff('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x67ff('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x67ff('0xd'))+_0x67ff('0xe')+this[_0x67ff('0xf')](_0x67ff('0x10'));}}};
\ No newline at end of file
index cc9e280..850b993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd914=['limit','order','sort','where','filters','pick','VIRTUAL','options','VoiceMail','includeAll','include','rows','catch','show','params','merge','find','create','body','get','role','user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','VoiceMailMessage','filter','mailbox','findAndCountAll','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','destroy','Voicemails','UserProfileResource','name','send','map','rawAttributes','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x4859fb,_0x4f7617){var _0x323bd8=function(_0x171085){while(--_0x171085){_0x4859fb['push'](_0x4859fb['shift']());}};_0x323bd8(++_0x4f7617);}(_0xd914,0x17f));var _0x4d91=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0xd914[_0x2e3dfc];return _0x4b1245;};'use strict';var emlformat=require(_0x4d91('0x0'));var rimraf=require(_0x4d91('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d91('0x2'));var rp=require(_0x4d91('0x3'));var moment=require(_0x4d91('0x4'));var BPromise=require(_0x4d91('0x5'));var Mustache=require(_0x4d91('0x6'));var util=require(_0x4d91('0x7'));var path=require('path');var sox=require(_0x4d91('0x8'));var csv=require('to-csv');var ejs=require(_0x4d91('0x9'));var fs=require('fs');var fs_extra=require(_0x4d91('0xa'));var _=require(_0x4d91('0xb'));var squel=require(_0x4d91('0xc'));var crypto=require(_0x4d91('0xd'));var jsforce=require(_0x4d91('0xe'));var deskjs=require(_0x4d91('0xf'));var toCsv=require(_0x4d91('0x10'));var querystring=require('querystring');var Papa=require(_0x4d91('0x11'));var Redis=require(_0x4d91('0x12'));var authService=require(_0x4d91('0x13'));var qs=require(_0x4d91('0x14'));var as=require(_0x4d91('0x15'));var hardwareService=require(_0x4d91('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x4d91('0x17'));var config=require(_0x4d91('0x18'));var licenseUtil=require(_0x4d91('0x19'));var db=require(_0x4d91('0x1a'))['db'];function respondWithStatusCode(_0x1c15b7,_0x318e0c){_0x318e0c=_0x318e0c||0xcc;return function(_0x4ea591){if(_0x4ea591){return _0x1c15b7['sendStatus'](_0x318e0c);}return _0x1c15b7[_0x4d91('0x1b')](_0x318e0c)[_0x4d91('0x1c')]();};}function respondWithResult(_0xb6590d,_0x3c9fd6){_0x3c9fd6=_0x3c9fd6||0xc8;return function(_0x33fbd4){if(_0x33fbd4){return _0xb6590d[_0x4d91('0x1b')](_0x3c9fd6)[_0x4d91('0x1d')](_0x33fbd4);}};}function respondWithFilteredResult(_0x4f5aef,_0x3a8ec9){return function(_0x42631a){if(_0x42631a){var _0x1e2ef7=typeof _0x3a8ec9[_0x4d91('0x1e')]===_0x4d91('0x1f')&&typeof _0x3a8ec9['limit']===_0x4d91('0x1f');var _0xb75abf=_0x42631a[_0x4d91('0x20')];var _0x44b9a7=_0x1e2ef7?0x0:_0x3a8ec9['offset'];var _0x350e23=_0x1e2ef7?_0x42631a[_0x4d91('0x20')]:_0x3a8ec9[_0x4d91('0x1e')]+_0x3a8ec9['limit'];var _0x13ef2c;if(_0x350e23>=_0xb75abf){_0x350e23=_0xb75abf;_0x13ef2c=0xc8;}else{_0x13ef2c=0xce;}_0x4f5aef[_0x4d91('0x1b')](_0x13ef2c);return _0x4f5aef[_0x4d91('0x21')](_0x4d91('0x22'),_0x44b9a7+'-'+_0x350e23+'/'+_0xb75abf)[_0x4d91('0x1d')](_0x42631a);}return null;};}function patchUpdates(_0x40cde4){return function(_0xc1d44f){try{jsonpatch[_0x4d91('0x23')](_0xc1d44f,_0x40cde4,!![]);}catch(_0x30d911){return BPromise[_0x4d91('0x24')](_0x30d911);}return _0xc1d44f['save']();};}function saveUpdates(_0x4493da,_0x5f5236){return function(_0x57913e){if(_0x57913e){return _0x57913e[_0x4d91('0x25')](_0x4493da)[_0x4d91('0x26')](function(_0x341d18){return _0x341d18;});}return null;};}function removeEntity(_0x9cb864,_0x7d8cbf){return function(_0x12b722){if(_0x12b722){return _0x12b722[_0x4d91('0x27')]()[_0x4d91('0x26')](function(){var _0x55356b=_0x12b722['get']({'plain':!![]});var _0x1ee6b3=_0x4d91('0x28');return db[_0x4d91('0x29')][_0x4d91('0x27')]({'where':{'type':_0x1ee6b3,'resourceId':_0x55356b['id']}})[_0x4d91('0x26')](function(){return _0x12b722;});})[_0x4d91('0x26')](function(){_0x9cb864[_0x4d91('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dc353,_0xda9802){return function(_0x12ac74){if(!_0x12ac74){_0x3dc353['sendStatus'](0x194);}return _0x12ac74;};}function handleError(_0x480a56,_0x299f27){_0x299f27=_0x299f27||0x1f4;return function(_0x470079){logger['error'](_0x470079['stack']);if(_0x470079[_0x4d91('0x2a')]){delete _0x470079[_0x4d91('0x2a')];}_0x480a56[_0x4d91('0x1b')](_0x299f27)[_0x4d91('0x2b')](_0x470079);};}exports['index']=function(_0x2587a1,_0x31bbf8){var _0x468e95={},_0xee7535={},_0xa63422={'count':0x0,'rows':[]};var _0x3466f3=_[_0x4d91('0x2c')](db['VoiceMail'][_0x4d91('0x2d')],function(_0x4f44ff){return{'name':_0x4f44ff['fieldName'],'type':_0x4f44ff[_0x4d91('0x2e')][_0x4d91('0x2f')]};});_0xee7535['model']=_[_0x4d91('0x2c')](_0x3466f3,_0x4d91('0x2a'));_0xee7535[_0x4d91('0x30')]=_[_0x4d91('0x31')](_0x2587a1[_0x4d91('0x30')]);_0xee7535['filters']=_[_0x4d91('0x32')](_0xee7535[_0x4d91('0x33')],_0xee7535[_0x4d91('0x30')]);_0x468e95[_0x4d91('0x34')]=_[_0x4d91('0x32')](_0xee7535[_0x4d91('0x33')],qs['fields'](_0x2587a1[_0x4d91('0x30')][_0x4d91('0x35')]));_0x468e95['attributes']=_0x468e95[_0x4d91('0x34')][_0x4d91('0x36')]?_0x468e95[_0x4d91('0x34')]:_0xee7535['model'];if(!_0x2587a1[_0x4d91('0x30')][_0x4d91('0x37')](_0x4d91('0x38'))){_0x468e95[_0x4d91('0x39')]=qs['limit'](_0x2587a1[_0x4d91('0x30')][_0x4d91('0x39')]);_0x468e95[_0x4d91('0x1e')]=qs[_0x4d91('0x1e')](_0x2587a1['query']['offset']);}_0x468e95[_0x4d91('0x3a')]=qs[_0x4d91('0x3b')](_0x2587a1['query'][_0x4d91('0x3b')]);_0x468e95[_0x4d91('0x3c')]=qs[_0x4d91('0x3d')](_[_0x4d91('0x3e')](_0x2587a1['query'],_0xee7535[_0x4d91('0x3d')]),_0x3466f3);if(_0x2587a1[_0x4d91('0x30')]['filter']){_0x468e95[_0x4d91('0x3c')]=_['merge'](_0x468e95[_0x4d91('0x3c')],{'$or':_['map'](_0x3466f3,function(_0x2dc892){if(_0x2dc892['type']!==_0x4d91('0x3f')){var _0x2782d2={};_0x2782d2[_0x2dc892[_0x4d91('0x2a')]]={'$like':'%'+_0x2587a1[_0x4d91('0x30')]['filter']+'%'};return _0x2782d2;}})});}_0x468e95=_['merge']({},_0x468e95,_0x2587a1[_0x4d91('0x40')]);var _0x55c8d0={'where':_0x468e95[_0x4d91('0x3c')]};return db[_0x4d91('0x41')]['count'](_0x55c8d0)[_0x4d91('0x26')](function(_0x2ae356){_0xa63422[_0x4d91('0x20')]=_0x2ae356;if(_0x2587a1[_0x4d91('0x30')][_0x4d91('0x42')]){_0x468e95[_0x4d91('0x43')]=[{'all':!![]}];}return db[_0x4d91('0x41')]['findAll'](_0x468e95);})[_0x4d91('0x26')](function(_0x4c70af){_0xa63422[_0x4d91('0x44')]=_0x4c70af;return _0xa63422;})[_0x4d91('0x26')](respondWithFilteredResult(_0x31bbf8,_0x468e95))[_0x4d91('0x45')](handleError(_0x31bbf8,null));};exports[_0x4d91('0x46')]=function(_0x20ec78,_0x1fc884){var _0x4b8e12={'raw':!![],'where':{'id':_0x20ec78[_0x4d91('0x47')]['id']}},_0x4ffc08={};_0x4ffc08[_0x4d91('0x33')]=_['keys'](db[_0x4d91('0x41')][_0x4d91('0x2d')]);_0x4ffc08[_0x4d91('0x30')]=_[_0x4d91('0x31')](_0x20ec78[_0x4d91('0x30')]);_0x4ffc08[_0x4d91('0x3d')]=_[_0x4d91('0x32')](_0x4ffc08[_0x4d91('0x33')],_0x4ffc08[_0x4d91('0x30')]);_0x4b8e12['attributes']=_['intersection'](_0x4ffc08[_0x4d91('0x33')],qs['fields'](_0x20ec78[_0x4d91('0x30')][_0x4d91('0x35')]));_0x4b8e12[_0x4d91('0x34')]=_0x4b8e12[_0x4d91('0x34')]['length']?_0x4b8e12[_0x4d91('0x34')]:_0x4ffc08['model'];if(_0x20ec78['query'][_0x4d91('0x42')]){_0x4b8e12[_0x4d91('0x43')]=[{'all':!![]}];}_0x4b8e12=_[_0x4d91('0x48')]({},_0x4b8e12,_0x20ec78[_0x4d91('0x40')]);return db[_0x4d91('0x41')][_0x4d91('0x49')](_0x4b8e12)['then'](handleEntityNotFound(_0x1fc884,null))[_0x4d91('0x26')](respondWithResult(_0x1fc884,null))[_0x4d91('0x45')](handleError(_0x1fc884,null));};exports[_0x4d91('0x4a')]=function(_0x449dd8,_0x106e5b){return db[_0x4d91('0x41')][_0x4d91('0x4a')](_0x449dd8[_0x4d91('0x4b')],{})[_0x4d91('0x26')](function(_0x145dfd){var _0x16f776=_0x449dd8['user'][_0x4d91('0x4c')]({'plain':!![]});if(!_0x16f776)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x16f776[_0x4d91('0x4d')]===_0x4d91('0x4e')){var _0x195e65=_0x145dfd[_0x4d91('0x4c')]({'plain':!![]});var _0x436a3d=_0x4d91('0x28');return db[_0x4d91('0x4f')][_0x4d91('0x49')]({'where':{'name':_0x436a3d,'userProfileId':_0x16f776['userProfileId']},'raw':!![]})[_0x4d91('0x26')](function(_0x43e72c){if(_0x43e72c&&_0x43e72c[_0x4d91('0x50')]===0x0){return db[_0x4d91('0x29')][_0x4d91('0x4a')]({'name':_0x195e65[_0x4d91('0x2a')],'resourceId':_0x195e65['id'],'type':_0x43e72c[_0x4d91('0x2a')],'sectionId':_0x43e72c['id']},{})['then'](function(){return _0x145dfd;});}else{return _0x145dfd;}})[_0x4d91('0x45')](function(_0x2159e4){logger[_0x4d91('0x51')](_0x4d91('0x52'),_0x2159e4);throw _0x2159e4;});}return _0x145dfd;})[_0x4d91('0x26')](respondWithResult(_0x106e5b,0xc9))[_0x4d91('0x45')](handleError(_0x106e5b,null));};exports[_0x4d91('0x25')]=function(_0x4138c5,_0x645923){if(_0x4138c5[_0x4d91('0x4b')]['id']){delete _0x4138c5[_0x4d91('0x4b')]['id'];}return db[_0x4d91('0x41')][_0x4d91('0x49')]({'where':{'id':_0x4138c5[_0x4d91('0x47')]['id']}})[_0x4d91('0x26')](handleEntityNotFound(_0x645923,null))[_0x4d91('0x26')](saveUpdates(_0x4138c5[_0x4d91('0x4b')],null))['then'](respondWithResult(_0x645923,null))['catch'](handleError(_0x645923,null));};exports['destroy']=function(_0x45cf4e,_0x10c1dd){return db[_0x4d91('0x41')]['find']({'where':{'id':_0x45cf4e[_0x4d91('0x47')]['id']}})[_0x4d91('0x26')](handleEntityNotFound(_0x10c1dd,null))[_0x4d91('0x26')](removeEntity(_0x10c1dd,null))['catch'](handleError(_0x10c1dd,null));};exports['getMessages']=function(_0x5bc877,_0x75aa6d,_0x26bfde){return db[_0x4d91('0x41')][_0x4d91('0x53')]({'where':{'id':_0x5bc877[_0x4d91('0x47')]['id']}})['then'](handleEntityNotFound(_0x75aa6d,null))[_0x4d91('0x26')](function(_0x20c0f2){var _0x4d9b87;var _0x563558={},_0x3f4f24={};_0x3f4f24['model']=_[_0x4d91('0x31')](db[_0x4d91('0x54')][_0x4d91('0x2d')]);_0x3f4f24['query']=_[_0x4d91('0x31')](_0x5bc877[_0x4d91('0x30')]);_0x3f4f24[_0x4d91('0x3d')]=_[_0x4d91('0x32')](_0x3f4f24[_0x4d91('0x33')],_0x3f4f24[_0x4d91('0x30')]);_0x563558[_0x4d91('0x34')]=_['intersection'](_0x3f4f24['model'],qs['fields'](_0x5bc877['query'][_0x4d91('0x35')]));_0x563558[_0x4d91('0x34')]=_0x563558[_0x4d91('0x34')]['length']?_0x563558[_0x4d91('0x34')]:_0x3f4f24['model'];if(!_0x5bc877[_0x4d91('0x30')][_0x4d91('0x37')]('nolimit')){_0x563558['limit']=qs[_0x4d91('0x39')](_0x5bc877[_0x4d91('0x30')][_0x4d91('0x39')]);_0x563558[_0x4d91('0x1e')]=qs[_0x4d91('0x1e')](_0x5bc877[_0x4d91('0x30')][_0x4d91('0x1e')]);}_0x563558[_0x4d91('0x3a')]=qs[_0x4d91('0x3b')](_0x5bc877[_0x4d91('0x30')]['sort']);_0x563558['where']=qs[_0x4d91('0x3d')](_[_0x4d91('0x3e')](_0x5bc877[_0x4d91('0x30')],_0x3f4f24[_0x4d91('0x3d')]));if(_0x5bc877[_0x4d91('0x30')][_0x4d91('0x55')]){_0x563558[_0x4d91('0x3c')]=_[_0x4d91('0x48')](_0x563558[_0x4d91('0x3c')],{'$or':_['map'](_0x563558['attributes'],function(_0x515574){var _0x51156f={};_0x51156f[_0x515574]={'$like':'%'+_0x5bc877[_0x4d91('0x30')][_0x4d91('0x55')]+'%'};return _0x51156f;})});}_0x563558[_0x4d91('0x3c')]=_[_0x4d91('0x48')](_0x563558[_0x4d91('0x3c')],{'mailboxuser':_0x20c0f2[_0x4d91('0x56')]});_0x563558=_[_0x4d91('0x48')]({},_0x563558,_0x5bc877[_0x4d91('0x40')]);return db[_0x4d91('0x54')][_0x4d91('0x57')](_0x563558)[_0x4d91('0x26')](respondWithFilteredResult(_0x75aa6d,_0x563558));})[_0x4d91('0x45')](handleError(_0x75aa6d,null));};
\ No newline at end of file
+var _0xd64b=['merge','filter','options','includeAll','include','findAll','catch','params','filters','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMessages','findOne','order','sort','mailbox','VoiceMailMessage','findAndCountAll','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','apply','reject','update','then','destroy','get','Voicemails','stack','name','send','index','map','VoiceMail','rawAttributes','type','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','limit','where','pick'];(function(_0x107844,_0x41926f){var _0x40c2b5=function(_0x2d0c58){while(--_0x2d0c58){_0x107844['push'](_0x107844['shift']());}};_0x40c2b5(++_0x41926f);}(_0xd64b,0xc1));var _0xbd64=function(_0x420746,_0x26dd66){_0x420746=_0x420746-0x0;var _0x1c6de2=_0xd64b[_0x420746];return _0x1c6de2;};'use strict';var emlformat=require(_0xbd64('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbd64('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbd64('0x2'));var moment=require(_0xbd64('0x3'));var BPromise=require(_0xbd64('0x4'));var Mustache=require(_0xbd64('0x5'));var util=require(_0xbd64('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(_0xbd64('0x7'));var _=require(_0xbd64('0x8'));var squel=require(_0xbd64('0x9'));var crypto=require(_0xbd64('0xa'));var jsforce=require(_0xbd64('0xb'));var deskjs=require(_0xbd64('0xc'));var toCsv=require(_0xbd64('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbd64('0xe'));var authService=require(_0xbd64('0xf'));var qs=require(_0xbd64('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd64('0x11'));var logger=require(_0xbd64('0x12'))(_0xbd64('0x13'));var utils=require(_0xbd64('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xbd64('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x136f60,_0x2729d8){_0x2729d8=_0x2729d8||0xcc;return function(_0x3a941c){if(_0x3a941c){return _0x136f60[_0xbd64('0x16')](_0x2729d8);}return _0x136f60[_0xbd64('0x17')](_0x2729d8)[_0xbd64('0x18')]();};}function respondWithResult(_0x2e23f2,_0x269e2f){_0x269e2f=_0x269e2f||0xc8;return function(_0x2b5808){if(_0x2b5808){return _0x2e23f2['status'](_0x269e2f)[_0xbd64('0x19')](_0x2b5808);}};}function respondWithFilteredResult(_0x13e7a4,_0x3ff550){return function(_0x32fd34){if(_0x32fd34){var _0x29fc16=typeof _0x3ff550['offset']===_0xbd64('0x1a')&&typeof _0x3ff550['limit']===_0xbd64('0x1a');var _0x1432a6=_0x32fd34[_0xbd64('0x1b')];var _0x1d7a14=_0x29fc16?0x0:_0x3ff550[_0xbd64('0x1c')];var _0x2f4554=_0x29fc16?_0x32fd34[_0xbd64('0x1b')]:_0x3ff550[_0xbd64('0x1c')]+_0x3ff550['limit'];var _0x305545;if(_0x2f4554>=_0x1432a6){_0x2f4554=_0x1432a6;_0x305545=0xc8;}else{_0x305545=0xce;}_0x13e7a4[_0xbd64('0x17')](_0x305545);return _0x13e7a4['set']('Content-Range',_0x1d7a14+'-'+_0x2f4554+'/'+_0x1432a6)[_0xbd64('0x19')](_0x32fd34);}return null;};}function patchUpdates(_0x42b328){return function(_0x196d21){try{jsonpatch[_0xbd64('0x1d')](_0x196d21,_0x42b328,!![]);}catch(_0x2c5551){return BPromise[_0xbd64('0x1e')](_0x2c5551);}return _0x196d21['save']();};}function saveUpdates(_0x4d4a16,_0x6038f){return function(_0x41f2f){if(_0x41f2f){return _0x41f2f[_0xbd64('0x1f')](_0x4d4a16)[_0xbd64('0x20')](function(_0x55e74c){return _0x55e74c;});}return null;};}function removeEntity(_0x51d118,_0x28497c){return function(_0x4afaff){if(_0x4afaff){return _0x4afaff[_0xbd64('0x21')]()['then'](function(){var _0x33452d=_0x4afaff[_0xbd64('0x22')]({'plain':!![]});var _0x3d12a0=_0xbd64('0x23');return db['UserProfileResource'][_0xbd64('0x21')]({'where':{'type':_0x3d12a0,'resourceId':_0x33452d['id']}})[_0xbd64('0x20')](function(){return _0x4afaff;});})[_0xbd64('0x20')](function(){_0x51d118[_0xbd64('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e8719,_0x29c9c8){return function(_0x49eac5){if(!_0x49eac5){_0x4e8719['sendStatus'](0x194);}return _0x49eac5;};}function handleError(_0xfa918,_0x5aacdd){_0x5aacdd=_0x5aacdd||0x1f4;return function(_0x3cf5b7){logger['error'](_0x3cf5b7[_0xbd64('0x24')]);if(_0x3cf5b7['name']){delete _0x3cf5b7[_0xbd64('0x25')];}_0xfa918[_0xbd64('0x17')](_0x5aacdd)[_0xbd64('0x26')](_0x3cf5b7);};}exports[_0xbd64('0x27')]=function(_0x306f19,_0x207ffc){var _0x4ed44a={},_0x35bdd5={},_0xe876c9={'count':0x0,'rows':[]};var _0xc44280=_[_0xbd64('0x28')](db[_0xbd64('0x29')][_0xbd64('0x2a')],function(_0x5e70d3){return{'name':_0x5e70d3['fieldName'],'type':_0x5e70d3[_0xbd64('0x2b')]['key']};});_0x35bdd5[_0xbd64('0x2c')]=_[_0xbd64('0x28')](_0xc44280,'name');_0x35bdd5['query']=_[_0xbd64('0x2d')](_0x306f19['query']);_0x35bdd5['filters']=_[_0xbd64('0x2e')](_0x35bdd5[_0xbd64('0x2c')],_0x35bdd5[_0xbd64('0x2f')]);_0x4ed44a['attributes']=_[_0xbd64('0x2e')](_0x35bdd5['model'],qs[_0xbd64('0x30')](_0x306f19[_0xbd64('0x2f')][_0xbd64('0x30')]));_0x4ed44a[_0xbd64('0x31')]=_0x4ed44a[_0xbd64('0x31')][_0xbd64('0x32')]?_0x4ed44a['attributes']:_0x35bdd5['model'];if(!_0x306f19[_0xbd64('0x2f')][_0xbd64('0x33')](_0xbd64('0x34'))){_0x4ed44a[_0xbd64('0x35')]=qs[_0xbd64('0x35')](_0x306f19[_0xbd64('0x2f')]['limit']);_0x4ed44a['offset']=qs[_0xbd64('0x1c')](_0x306f19[_0xbd64('0x2f')][_0xbd64('0x1c')]);}_0x4ed44a['order']=qs['sort'](_0x306f19[_0xbd64('0x2f')]['sort']);_0x4ed44a[_0xbd64('0x36')]=qs['filters'](_[_0xbd64('0x37')](_0x306f19[_0xbd64('0x2f')],_0x35bdd5['filters']),_0xc44280);if(_0x306f19[_0xbd64('0x2f')]['filter']){_0x4ed44a['where']=_[_0xbd64('0x38')](_0x4ed44a[_0xbd64('0x36')],{'$or':_[_0xbd64('0x28')](_0xc44280,function(_0x52f401){if(_0x52f401['type']!=='VIRTUAL'){var _0x344d46={};_0x344d46[_0x52f401[_0xbd64('0x25')]]={'$like':'%'+_0x306f19['query'][_0xbd64('0x39')]+'%'};return _0x344d46;}})});}_0x4ed44a=_[_0xbd64('0x38')]({},_0x4ed44a,_0x306f19[_0xbd64('0x3a')]);var _0x27fd12={'where':_0x4ed44a['where']};return db['VoiceMail'][_0xbd64('0x1b')](_0x27fd12)['then'](function(_0x595a91){_0xe876c9[_0xbd64('0x1b')]=_0x595a91;if(_0x306f19[_0xbd64('0x2f')][_0xbd64('0x3b')]){_0x4ed44a[_0xbd64('0x3c')]=[{'all':!![]}];}return db[_0xbd64('0x29')][_0xbd64('0x3d')](_0x4ed44a);})[_0xbd64('0x20')](function(_0x762380){_0xe876c9['rows']=_0x762380;return _0xe876c9;})[_0xbd64('0x20')](respondWithFilteredResult(_0x207ffc,_0x4ed44a))[_0xbd64('0x3e')](handleError(_0x207ffc,null));};exports['show']=function(_0x41b27a,_0x1e4983){var _0xe5b069={'raw':!![],'where':{'id':_0x41b27a[_0xbd64('0x3f')]['id']}},_0x2bc972={};_0x2bc972[_0xbd64('0x2c')]=_[_0xbd64('0x2d')](db['VoiceMail'][_0xbd64('0x2a')]);_0x2bc972['query']=_[_0xbd64('0x2d')](_0x41b27a['query']);_0x2bc972[_0xbd64('0x40')]=_[_0xbd64('0x2e')](_0x2bc972[_0xbd64('0x2c')],_0x2bc972['query']);_0xe5b069[_0xbd64('0x31')]=_['intersection'](_0x2bc972['model'],qs['fields'](_0x41b27a[_0xbd64('0x2f')][_0xbd64('0x30')]));_0xe5b069[_0xbd64('0x31')]=_0xe5b069[_0xbd64('0x31')][_0xbd64('0x32')]?_0xe5b069[_0xbd64('0x31')]:_0x2bc972[_0xbd64('0x2c')];if(_0x41b27a['query'][_0xbd64('0x3b')]){_0xe5b069[_0xbd64('0x3c')]=[{'all':!![]}];}_0xe5b069=_[_0xbd64('0x38')]({},_0xe5b069,_0x41b27a['options']);return db[_0xbd64('0x29')][_0xbd64('0x41')](_0xe5b069)[_0xbd64('0x20')](handleEntityNotFound(_0x1e4983,null))[_0xbd64('0x20')](respondWithResult(_0x1e4983,null))[_0xbd64('0x3e')](handleError(_0x1e4983,null));};exports['create']=function(_0x283699,_0x1a9ec8){return db[_0xbd64('0x29')][_0xbd64('0x42')](_0x283699['body'],{})['then'](function(_0x1e008f){var _0x2a7eec=_0x283699[_0xbd64('0x43')][_0xbd64('0x22')]({'plain':!![]});if(!_0x2a7eec)throw new Error(_0xbd64('0x44'));if(_0x2a7eec[_0xbd64('0x45')]===_0xbd64('0x43')){var _0x3807a7=_0x1e008f[_0xbd64('0x22')]({'plain':!![]});var _0x2709b2=_0xbd64('0x23');return db[_0xbd64('0x46')][_0xbd64('0x41')]({'where':{'name':_0x2709b2,'userProfileId':_0x2a7eec[_0xbd64('0x47')]},'raw':!![]})[_0xbd64('0x20')](function(_0x5bd444){if(_0x5bd444&&_0x5bd444[_0xbd64('0x48')]===0x0){return db['UserProfileResource']['create']({'name':_0x3807a7['name'],'resourceId':_0x3807a7['id'],'type':_0x5bd444['name'],'sectionId':_0x5bd444['id']},{})[_0xbd64('0x20')](function(){return _0x1e008f;});}else{return _0x1e008f;}})[_0xbd64('0x3e')](function(_0x5480f5){logger[_0xbd64('0x49')](_0xbd64('0x4a'),_0x5480f5);throw _0x5480f5;});}return _0x1e008f;})[_0xbd64('0x20')](respondWithResult(_0x1a9ec8,0xc9))['catch'](handleError(_0x1a9ec8,null));};exports[_0xbd64('0x1f')]=function(_0x371bad,_0x44cd4f){if(_0x371bad[_0xbd64('0x4b')]['id']){delete _0x371bad[_0xbd64('0x4b')]['id'];}return db[_0xbd64('0x29')]['find']({'where':{'id':_0x371bad['params']['id']}})['then'](handleEntityNotFound(_0x44cd4f,null))[_0xbd64('0x20')](saveUpdates(_0x371bad[_0xbd64('0x4b')],null))[_0xbd64('0x20')](respondWithResult(_0x44cd4f,null))[_0xbd64('0x3e')](handleError(_0x44cd4f,null));};exports['destroy']=function(_0x1d0d9f,_0x20b275){return db[_0xbd64('0x29')][_0xbd64('0x41')]({'where':{'id':_0x1d0d9f[_0xbd64('0x3f')]['id']}})[_0xbd64('0x20')](handleEntityNotFound(_0x20b275,null))['then'](removeEntity(_0x20b275,null))[_0xbd64('0x3e')](handleError(_0x20b275,null));};exports[_0xbd64('0x4c')]=function(_0x15f1fc,_0x1fe3e5,_0x465661){return db[_0xbd64('0x29')][_0xbd64('0x4d')]({'where':{'id':_0x15f1fc[_0xbd64('0x3f')]['id']}})[_0xbd64('0x20')](handleEntityNotFound(_0x1fe3e5,null))[_0xbd64('0x20')](function(_0x3812b3){var _0xffda84;var _0x4a1e21={},_0x56c7d9={};_0x56c7d9[_0xbd64('0x2c')]=_[_0xbd64('0x2d')](db['VoiceMailMessage']['rawAttributes']);_0x56c7d9[_0xbd64('0x2f')]=_[_0xbd64('0x2d')](_0x15f1fc['query']);_0x56c7d9[_0xbd64('0x40')]=_[_0xbd64('0x2e')](_0x56c7d9[_0xbd64('0x2c')],_0x56c7d9[_0xbd64('0x2f')]);_0x4a1e21[_0xbd64('0x31')]=_[_0xbd64('0x2e')](_0x56c7d9[_0xbd64('0x2c')],qs[_0xbd64('0x30')](_0x15f1fc[_0xbd64('0x2f')]['fields']));_0x4a1e21[_0xbd64('0x31')]=_0x4a1e21[_0xbd64('0x31')][_0xbd64('0x32')]?_0x4a1e21['attributes']:_0x56c7d9[_0xbd64('0x2c')];if(!_0x15f1fc[_0xbd64('0x2f')]['hasOwnProperty'](_0xbd64('0x34'))){_0x4a1e21[_0xbd64('0x35')]=qs[_0xbd64('0x35')](_0x15f1fc[_0xbd64('0x2f')][_0xbd64('0x35')]);_0x4a1e21[_0xbd64('0x1c')]=qs['offset'](_0x15f1fc[_0xbd64('0x2f')][_0xbd64('0x1c')]);}_0x4a1e21[_0xbd64('0x4e')]=qs[_0xbd64('0x4f')](_0x15f1fc['query'][_0xbd64('0x4f')]);_0x4a1e21[_0xbd64('0x36')]=qs['filters'](_[_0xbd64('0x37')](_0x15f1fc['query'],_0x56c7d9[_0xbd64('0x40')]));if(_0x15f1fc[_0xbd64('0x2f')][_0xbd64('0x39')]){_0x4a1e21[_0xbd64('0x36')]=_['merge'](_0x4a1e21[_0xbd64('0x36')],{'$or':_[_0xbd64('0x28')](_0x4a1e21[_0xbd64('0x31')],function(_0x23925c){var _0x463a60={};_0x463a60[_0x23925c]={'$like':'%'+_0x15f1fc[_0xbd64('0x2f')]['filter']+'%'};return _0x463a60;})});}_0x4a1e21['where']=_['merge'](_0x4a1e21[_0xbd64('0x36')],{'mailboxuser':_0x3812b3[_0xbd64('0x50')]});_0x4a1e21=_[_0xbd64('0x38')]({},_0x4a1e21,_0x15f1fc[_0xbd64('0x3a')]);return db[_0xbd64('0x51')][_0xbd64('0x52')](_0x4a1e21)['then'](respondWithFilteredResult(_0x1fe3e5,_0x4a1e21));})[_0xbd64('0x3e')](handleError(_0x1fe3e5,null));};
\ No newline at end of file
index 6e0f610..ea60d4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x931f=['define','mailbox_context','mailbox','lodash','../../config/logger','api','bluebird','request-promise','rimraf','./voiceMail.attributes'];(function(_0x127cf7,_0x4e2ab1){var _0xa4bfec=function(_0x56d865){while(--_0x56d865){_0x127cf7['push'](_0x127cf7['shift']());}};_0xa4bfec(++_0x4e2ab1);}(_0x931f,0xc1));var _0xf931=function(_0x34c8ff,_0x674110){_0x34c8ff=_0x34c8ff-0x0;var _0x42601c=_0x931f[_0x34c8ff];return _0x42601c;};'use strict';var _=require(_0xf931('0x0'));var util=require('util');var logger=require(_0xf931('0x1'))(_0xf931('0x2'));var moment=require('moment');var BPromise=require(_0xf931('0x3'));var rp=require(_0xf931('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf931('0x5'));var config=require('../../config/environment');var attributes=require(_0xf931('0x6'));module['exports']=function(_0x5600a8,_0x1ad875){return _0x5600a8[_0xf931('0x7')]('VoiceMail',attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0xf931('0x8'),'fields':[_0xf931('0x9'),'context']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb93b=['request-promise','path','rimraf','../../config/environment','./voiceMail.attributes','exports','VoiceMail','voice_voicemail','mailbox_context','context','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x29ea7b,_0x26a8f9){var _0x12fdfb=function(_0x2444ef){while(--_0x2444ef){_0x29ea7b['push'](_0x29ea7b['shift']());}};_0x12fdfb(++_0x26a8f9);}(_0xb93b,0x1ca));var _0xbb93=function(_0x17a842,_0x1ac67a){_0x17a842=_0x17a842-0x0;var _0x142199=_0xb93b[_0x17a842];return _0x142199;};'use strict';var _=require(_0xbb93('0x0'));var util=require(_0xbb93('0x1'));var logger=require(_0xbb93('0x2'))(_0xbb93('0x3'));var moment=require(_0xbb93('0x4'));var BPromise=require(_0xbb93('0x5'));var rp=require(_0xbb93('0x6'));var fs=require('fs');var path=require(_0xbb93('0x7'));var rimraf=require(_0xbb93('0x8'));var config=require(_0xbb93('0x9'));var attributes=require(_0xbb93('0xa'));module[_0xbb93('0xb')]=function(_0x180da8,_0x3209a6){return _0x180da8['define'](_0xbb93('0xc'),attributes,{'tableName':_0xbb93('0xd'),'paranoid':![],'indexes':[{'name':_0xbb93('0xe'),'fields':['mailbox',_0xbb93('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index e9deed6..b423454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe11f=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceMail,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird'];(function(_0x534214,_0xf6f3cb){var _0x5480a6=function(_0x532f3e){while(--_0x532f3e){_0x534214['push'](_0x534214['shift']());}};_0x5480a6(++_0xf6f3cb);}(_0xe11f,0x1cb));var _0xfe11=function(_0x4bc0f7,_0x329c69){_0x4bc0f7=_0x4bc0f7-0x0;var _0x1fa851=_0xe11f[_0x4bc0f7];return _0x1fa851;};'use strict';var _=require(_0xfe11('0x0'));var util=require('util');var moment=require(_0xfe11('0x1'));var BPromise=require(_0xfe11('0x2'));var rs=require(_0xfe11('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfe11('0x4'))['db'];var utils=require(_0xfe11('0x5'));var logger=require(_0xfe11('0x6'))('rpc');var config=require(_0xfe11('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfe11('0x8')][_0xfe11('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb17c21,_0x26f39b,_0x390098){return new BPromise(function(_0x106bc1,_0x186163){return client[_0xfe11('0xa')](_0xb17c21,_0x390098)[_0xfe11('0xb')](function(_0x2d50e0){logger['info']('VoiceMail,\x20%s,\x20%s',_0x26f39b,_0xfe11('0xc'));logger[_0xfe11('0xd')](_0xfe11('0xe'),_0x26f39b,_0xfe11('0xc'),JSON[_0xfe11('0xf')](_0x2d50e0));if(_0x2d50e0[_0xfe11('0x10')]){if(_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x11')]===0x1f4){logger[_0xfe11('0x10')](_0xfe11('0x12'),_0x26f39b,_0x2d50e0[_0xfe11('0x10')]['message']);return _0x186163(_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x13')]);}logger[_0xfe11('0x10')](_0xfe11('0x12'),_0x26f39b,_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x13')]);return _0x106bc1(_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x13')]);}else{logger['info'](_0xfe11('0x12'),_0x26f39b,_0xfe11('0xc'));_0x106bc1(_0x2d50e0[_0xfe11('0x14')][_0xfe11('0x13')]);}})[_0xfe11('0x15')](function(_0x5d801c){logger[_0xfe11('0x10')](_0xfe11('0x12'),_0x26f39b,_0x5d801c);_0x186163(_0x5d801c);});});}
\ No newline at end of file
+var _0x341f=['http','request','info','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','code','error','message','VoiceMail,\x20%s,\x20%s','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x29529e,_0x4694c1){var _0x123203=function(_0x160669){while(--_0x160669){_0x29529e['push'](_0x29529e['shift']());}};_0x123203(++_0x4694c1);}(_0x341f,0x1d4));var _0xf341=function(_0x2bc6aa,_0x58bbcb){_0x2bc6aa=_0x2bc6aa-0x0;var _0x2145ea=_0x341f[_0x2bc6aa];return _0x2145ea;};'use strict';var _=require(_0xf341('0x0'));var util=require(_0xf341('0x1'));var moment=require(_0xf341('0x2'));var BPromise=require(_0xf341('0x3'));var rs=require(_0xf341('0x4'));var fs=require('fs');var Redis=require(_0xf341('0x5'));var db=require(_0xf341('0x6'))['db'];var utils=require(_0xf341('0x7'));var logger=require(_0xf341('0x8'))(_0xf341('0x9'));var config=require(_0xf341('0xa'));var jayson=require(_0xf341('0xb'));var client=jayson['client'][_0xf341('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x53b07d,_0x52c381,_0x5a2f59){return new BPromise(function(_0x5a940f,_0x1458e5){return client[_0xf341('0xd')](_0x53b07d,_0x5a2f59)['then'](function(_0x1e2ec7){logger[_0xf341('0xe')]('VoiceMail,\x20%s,\x20%s',_0x52c381,'request\x20sent');logger['debug'](_0xf341('0xf'),_0x52c381,'request\x20sent',JSON[_0xf341('0x10')](_0x1e2ec7));if(_0x1e2ec7['error']){if(_0x1e2ec7['error'][_0xf341('0x11')]===0x1f4){logger[_0xf341('0x12')]('VoiceMail,\x20%s,\x20%s',_0x52c381,_0x1e2ec7[_0xf341('0x12')]['message']);return _0x1458e5(_0x1e2ec7[_0xf341('0x12')]['message']);}logger[_0xf341('0x12')]('VoiceMail,\x20%s,\x20%s',_0x52c381,_0x1e2ec7[_0xf341('0x12')][_0xf341('0x13')]);return _0x5a940f(_0x1e2ec7[_0xf341('0x12')][_0xf341('0x13')]);}else{logger[_0xf341('0xe')](_0xf341('0x14'),_0x52c381,_0xf341('0x15'));_0x5a940f(_0x1e2ec7[_0xf341('0x16')][_0xf341('0x13')]);}})[_0xf341('0x17')](function(_0x55d2ef){logger[_0xf341('0x12')](_0xf341('0x14'),_0x52c381,_0x55d2ef);_0x1458e5(_0x55d2ef);});});}
\ No newline at end of file
index 6003f4b..02b30d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5528=['exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id/download','download','post','create','put','delete','/:id','destroy'];(function(_0x4217b9,_0x2e2a50){var _0x156685=function(_0x2bcff4){while(--_0x2bcff4){_0x4217b9['push'](_0x4217b9['shift']());}};_0x156685(++_0x2e2a50);}(_0x5528,0x13c));var _0x8552=function(_0x128bef,_0xc7a0af){_0x128bef=_0x128bef-0x0;var _0x1ba862=_0x5528[_0x128bef];return _0x1ba862;};'use strict';var multer=require(_0x8552('0x0'));var util=require(_0x8552('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8552('0x2'));var router=express[_0x8552('0x3')]();var fs_extra=require(_0x8552('0x4'));var auth=require(_0x8552('0x5'));var interaction=require(_0x8552('0x6'));var config=require(_0x8552('0x7'));var controller=require(_0x8552('0x8'));router[_0x8552('0x9')]('/',auth[_0x8552('0xa')](),controller[_0x8552('0xb')]);router[_0x8552('0x9')]('/:id',auth[_0x8552('0xa')](),controller['show']);router['get'](_0x8552('0xc'),auth[_0x8552('0xa')](),controller[_0x8552('0xd')]);router[_0x8552('0xe')]('/',auth[_0x8552('0xa')](),controller[_0x8552('0xf')]);router[_0x8552('0x10')]('/:id',auth[_0x8552('0xa')](),controller['update']);router[_0x8552('0x11')](_0x8552('0x12'),auth[_0x8552('0xa')](),controller[_0x8552('0x13')]);module[_0x8552('0x14')]=router;
\ No newline at end of file
+var _0x47b9=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMailMessage.controller','get','isAuthenticated','show','post','put','/:id','delete','destroy','exports','multer','util'];(function(_0x3e7e96,_0x5683ca){var _0x13f6f0=function(_0x320767){while(--_0x320767){_0x3e7e96['push'](_0x3e7e96['shift']());}};_0x13f6f0(++_0x5683ca);}(_0x47b9,0x1c9));var _0x947b=function(_0x29ae80,_0x3579f1){_0x29ae80=_0x29ae80-0x0;var _0x5d6d71=_0x47b9[_0x29ae80];return _0x5d6d71;};'use strict';var multer=require(_0x947b('0x0'));var util=require(_0x947b('0x1'));var path=require('path');var timeout=require(_0x947b('0x2'));var express=require('express');var router=express[_0x947b('0x3')]();var fs_extra=require(_0x947b('0x4'));var auth=require(_0x947b('0x5'));var interaction=require(_0x947b('0x6'));var config=require('../../config/environment');var controller=require(_0x947b('0x7'));router[_0x947b('0x8')]('/',auth[_0x947b('0x9')](),controller['index']);router[_0x947b('0x8')]('/:id',auth[_0x947b('0x9')](),controller[_0x947b('0xa')]);router[_0x947b('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x947b('0xb')]('/',auth[_0x947b('0x9')](),controller['create']);router[_0x947b('0xc')](_0x947b('0xd'),auth[_0x947b('0x9')](),controller['update']);router[_0x947b('0xe')]('/:id',auth[_0x947b('0x9')](),controller[_0x947b('0xf')]);module[_0x947b('0x10')]=router;
\ No newline at end of file
index e11c0f9..32a3578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb524=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','VIRTUAL','getDataValue','INTEGER','STRING','TIMESTAMP','literal'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0xb524,0x1f1));var _0x4b52=function(_0x404483,_0x18f84a){_0x404483=_0x404483-0x0;var _0x497fac=_0xb524[_0x404483];return _0x497fac;};'use strict';var Sequelize=require(_0x4b52('0x0'));module['exports']={'name':{'type':Sequelize[_0x4b52('0x1')],'get':function(_0x5b2569){return this[_0x4b52('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x4b52('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'stamp':{'type':_0x4b52('0x5'),'defaultValue':Sequelize[_0x4b52('0x6')](_0x4b52('0x7'))}};
\ No newline at end of file
+var _0x8b37=['long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB'];(function(_0x29a580,_0xc0cfbb){var _0x196b8c=function(_0x4bc581){while(--_0x4bc581){_0x29a580['push'](_0x29a580['shift']());}};_0x196b8c(++_0xc0cfbb);}(_0x8b37,0x12d));var _0x78b3=function(_0x1c324d,_0x2daa7c){_0x1c324d=_0x1c324d-0x0;var _0x33347f=_0x8b37[_0x1c324d];return _0x33347f;};'use strict';var Sequelize=require(_0x78b3('0x0'));module[_0x78b3('0x1')]={'name':{'type':Sequelize[_0x78b3('0x2')],'get':function(_0x62ca7d){return this[_0x78b3('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x78b3('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x78b3('0x6')](_0x78b3('0x7')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x78b3('0x5')],'defaultValue':''},'stamp':{'type':_0x78b3('0x8'),'defaultValue':Sequelize[_0x78b3('0x9')](_0x78b3('0xa'))}};
\ No newline at end of file
index afab206..0b537bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50fe=['recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','count','offset','apply','reject','save','update','destroy','error','stack','name','send','index','map','VoiceMailMessage','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','then','rows','catch','show','rawAttributes','find','create','body','download'];(function(_0x1dc24d,_0x541fa4){var _0x5d7fb2=function(_0x7ccd26){while(--_0x7ccd26){_0x1dc24d['push'](_0x1dc24d['shift']());}};_0x5d7fb2(++_0x541fa4);}(_0x50fe,0x1e3));var _0xe50f=function(_0x418fa7,_0x1bce1a){_0x418fa7=_0x418fa7-0x0;var _0x496da9=_0x50fe[_0x418fa7];return _0x496da9;};'use strict';var emlformat=require(_0xe50f('0x0'));var rimraf=require(_0xe50f('0x1'));var zipdir=require(_0xe50f('0x2'));var jsonpatch=require(_0xe50f('0x3'));var rp=require(_0xe50f('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe50f('0x5'));var util=require('util');var path=require(_0xe50f('0x6'));var sox=require(_0xe50f('0x7'));var csv=require(_0xe50f('0x8'));var ejs=require(_0xe50f('0x9'));var fs=require('fs');var fs_extra=require(_0xe50f('0xa'));var _=require(_0xe50f('0xb'));var squel=require(_0xe50f('0xc'));var crypto=require('crypto');var jsforce=require(_0xe50f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe50f('0x8'));var querystring=require(_0xe50f('0xe'));var Papa=require(_0xe50f('0xf'));var Redis=require('ioredis');var authService=require(_0xe50f('0x10'));var qs=require(_0xe50f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe50f('0x12'));var utils=require(_0xe50f('0x13'));var config=require(_0xe50f('0x14'));var licenseUtil=require(_0xe50f('0x15'));var db=require(_0xe50f('0x16'))['db'];function respondWithStatusCode(_0x5c8bb6,_0x35f43c){_0x35f43c=_0x35f43c||0xcc;return function(_0x3eb791){if(_0x3eb791){return _0x5c8bb6[_0xe50f('0x17')](_0x35f43c);}return _0x5c8bb6[_0xe50f('0x18')](_0x35f43c)[_0xe50f('0x19')]();};}function respondWithResult(_0x2268c4,_0x63bc5a){_0x63bc5a=_0x63bc5a||0xc8;return function(_0x3f7d1b){if(_0x3f7d1b){return _0x2268c4[_0xe50f('0x18')](_0x63bc5a)['json'](_0x3f7d1b);}};}function respondWithFilteredResult(_0x596511,_0x2eaba3){return function(_0x120e86){if(_0x120e86){var _0x411148=typeof _0x2eaba3['offset']==='undefined'&&typeof _0x2eaba3[_0xe50f('0x1a')]==='undefined';var _0x3c7a72=_0x120e86[_0xe50f('0x1b')];var _0x17b508=_0x411148?0x0:_0x2eaba3['offset'];var _0x4f595d=_0x411148?_0x120e86[_0xe50f('0x1b')]:_0x2eaba3[_0xe50f('0x1c')]+_0x2eaba3[_0xe50f('0x1a')];var _0x4d05f6;if(_0x4f595d>=_0x3c7a72){_0x4f595d=_0x3c7a72;_0x4d05f6=0xc8;}else{_0x4d05f6=0xce;}_0x596511[_0xe50f('0x18')](_0x4d05f6);return _0x596511['set']('Content-Range',_0x17b508+'-'+_0x4f595d+'/'+_0x3c7a72)['json'](_0x120e86);}return null;};}function patchUpdates(_0x4b41eb){return function(_0x5ac675){try{jsonpatch[_0xe50f('0x1d')](_0x5ac675,_0x4b41eb,!![]);}catch(_0x50191a){return BPromise[_0xe50f('0x1e')](_0x50191a);}return _0x5ac675[_0xe50f('0x1f')]();};}function saveUpdates(_0x14ce76,_0x56f5ed){return function(_0x4ce897){if(_0x4ce897){return _0x4ce897[_0xe50f('0x20')](_0x14ce76)['then'](function(_0x5af541){return _0x5af541;});}return null;};}function removeEntity(_0x516109,_0x56753e){return function(_0x1b83b0){if(_0x1b83b0){return _0x1b83b0[_0xe50f('0x21')]()['then'](function(){_0x516109[_0xe50f('0x18')](0xcc)[_0xe50f('0x19')]();});}};}function handleEntityNotFound(_0x211fef,_0x2f5b10){return function(_0x499d6b){if(!_0x499d6b){_0x211fef[_0xe50f('0x17')](0x194);}return _0x499d6b;};}function handleError(_0x4c3244,_0x9510c8){_0x9510c8=_0x9510c8||0x1f4;return function(_0x43d351){logger[_0xe50f('0x22')](_0x43d351[_0xe50f('0x23')]);if(_0x43d351[_0xe50f('0x24')]){delete _0x43d351[_0xe50f('0x24')];}_0x4c3244[_0xe50f('0x18')](_0x9510c8)[_0xe50f('0x25')](_0x43d351);};}exports[_0xe50f('0x26')]=function(_0x530b72,_0x44361f){var _0x4f078c={},_0x3c90b5={},_0x3be39f={'count':0x0,'rows':[]};var _0x2c3380=_[_0xe50f('0x27')](db[_0xe50f('0x28')]['rawAttributes'],function(_0x935aad){return{'name':_0x935aad['fieldName'],'type':_0x935aad[_0xe50f('0x29')][_0xe50f('0x2a')]};});_0x3c90b5[_0xe50f('0x2b')]=_[_0xe50f('0x2c')](_[_0xe50f('0x27')](_0x2c3380,_0xe50f('0x24')),[_0xe50f('0x24')]);_0x3c90b5[_0xe50f('0x2d')]=_[_0xe50f('0x2e')](_0x530b72['query']);_0x3c90b5['filters']=_[_0xe50f('0x2f')](_0x3c90b5[_0xe50f('0x2b')],_0x3c90b5[_0xe50f('0x2d')]);_0x4f078c[_0xe50f('0x30')]=_[_0xe50f('0x2f')](_0x3c90b5['model'],qs[_0xe50f('0x31')](_0x530b72[_0xe50f('0x2d')][_0xe50f('0x31')]));_0x4f078c[_0xe50f('0x30')]=_0x4f078c[_0xe50f('0x30')][_0xe50f('0x32')]?_0x4f078c['attributes']:_0x3c90b5[_0xe50f('0x2b')];if(!_0x530b72[_0xe50f('0x2d')]['hasOwnProperty']('nolimit')){_0x4f078c[_0xe50f('0x1a')]=qs[_0xe50f('0x1a')](_0x530b72[_0xe50f('0x2d')]['limit']);_0x4f078c[_0xe50f('0x1c')]=qs[_0xe50f('0x1c')](_0x530b72[_0xe50f('0x2d')]['offset']);}_0x4f078c[_0xe50f('0x33')]=qs[_0xe50f('0x34')](_0x530b72['query'][_0xe50f('0x34')]);_0x4f078c[_0xe50f('0x35')]=qs[_0xe50f('0x36')](_['pick'](_0x530b72[_0xe50f('0x2d')],_0x3c90b5[_0xe50f('0x36')]),_0x2c3380);if(_0x530b72[_0xe50f('0x2d')][_0xe50f('0x37')]){_0x4f078c[_0xe50f('0x35')]=_['merge'](_0x4f078c[_0xe50f('0x35')],{'$or':_[_0xe50f('0x27')](_0x2c3380,function(_0x1ba5b8){if(_0x1ba5b8[_0xe50f('0x29')]!==_0xe50f('0x38')){var _0x94bbad={};_0x94bbad[_0x1ba5b8['name']]={'$like':'%'+_0x530b72[_0xe50f('0x2d')][_0xe50f('0x37')]+'%'};return _0x94bbad;}})});}_0x4f078c=_[_0xe50f('0x39')]({},_0x4f078c,_0x530b72[_0xe50f('0x3a')]);var _0xe0994e={'where':_0x4f078c['where']};return db[_0xe50f('0x28')][_0xe50f('0x1b')](_0xe0994e)['then'](function(_0x2747b4){_0x3be39f[_0xe50f('0x1b')]=_0x2747b4;if(_0x530b72['query'][_0xe50f('0x3b')]){_0x4f078c[_0xe50f('0x3c')]=[{'all':!![]}];}return db[_0xe50f('0x28')]['findAll'](_0x4f078c);})[_0xe50f('0x3d')](function(_0x16466e){_0x3be39f[_0xe50f('0x3e')]=_0x16466e;return _0x3be39f;})[_0xe50f('0x3d')](respondWithFilteredResult(_0x44361f,_0x4f078c))[_0xe50f('0x3f')](handleError(_0x44361f,null));};exports[_0xe50f('0x40')]=function(_0x134a9a,_0x4106a5){var _0x4756cf={'raw':!![],'where':{'id':_0x134a9a['params']['id']}},_0x44474e={};_0x44474e[_0xe50f('0x2b')]=_[_0xe50f('0x2e')](db[_0xe50f('0x28')][_0xe50f('0x41')]);_0x44474e[_0xe50f('0x2d')]=_['keys'](_0x134a9a[_0xe50f('0x2d')]);_0x44474e[_0xe50f('0x36')]=_[_0xe50f('0x2f')](_0x44474e[_0xe50f('0x2b')],_0x44474e[_0xe50f('0x2d')]);_0x4756cf[_0xe50f('0x30')]=_[_0xe50f('0x2f')](_0x44474e[_0xe50f('0x2b')],qs[_0xe50f('0x31')](_0x134a9a[_0xe50f('0x2d')][_0xe50f('0x31')]));_0x4756cf[_0xe50f('0x30')]=_0x4756cf[_0xe50f('0x30')]['length']?_0x4756cf[_0xe50f('0x30')]:_0x44474e['model'];if(_0x134a9a['query'][_0xe50f('0x3b')]){_0x4756cf[_0xe50f('0x3c')]=[{'all':!![]}];}_0x4756cf=_[_0xe50f('0x39')]({},_0x4756cf,_0x134a9a[_0xe50f('0x3a')]);return db[_0xe50f('0x28')][_0xe50f('0x42')](_0x4756cf)[_0xe50f('0x3d')](handleEntityNotFound(_0x4106a5,null))['then'](respondWithResult(_0x4106a5,null))[_0xe50f('0x3f')](handleError(_0x4106a5,null));};exports[_0xe50f('0x43')]=function(_0x5cc629,_0x4dbaf4){return db[_0xe50f('0x28')][_0xe50f('0x43')](_0x5cc629['body'],{})[_0xe50f('0x3d')](respondWithResult(_0x4dbaf4,0xc9))[_0xe50f('0x3f')](handleError(_0x4dbaf4,null));};exports[_0xe50f('0x20')]=function(_0xb77c12,_0x5c7f04){if(_0xb77c12[_0xe50f('0x44')]['id']){delete _0xb77c12[_0xe50f('0x44')]['id'];}return db[_0xe50f('0x28')][_0xe50f('0x42')]({'where':{'id':_0xb77c12['params']['id']}})[_0xe50f('0x3d')](handleEntityNotFound(_0x5c7f04,null))['then'](saveUpdates(_0xb77c12[_0xe50f('0x44')],null))[_0xe50f('0x3d')](respondWithResult(_0x5c7f04,null))[_0xe50f('0x3f')](handleError(_0x5c7f04,null));};exports[_0xe50f('0x21')]=function(_0x175334,_0x3e7f64){return db['VoiceMailMessage'][_0xe50f('0x42')]({'where':{'id':_0x175334['params']['id']}})[_0xe50f('0x3d')](handleEntityNotFound(_0x3e7f64,null))[_0xe50f('0x3d')](removeEntity(_0x3e7f64,null))[_0xe50f('0x3f')](handleError(_0x3e7f64,null));};exports[_0xe50f('0x45')]=function(_0x5a60d3,_0x2409f0,_0x4cfcfa){return db[_0xe50f('0x28')][_0xe50f('0x42')]({'where':{'id':_0x5a60d3['params']['id']},'attributes':['id',_0xe50f('0x46'),_0xe50f('0x47')]})['then'](handleEntityNotFound(_0x2409f0,null))[_0xe50f('0x3d')](function(_0x42dfea){if(_0x42dfea){if(!_0x42dfea[_0xe50f('0x46')]){throw new db[(_0xe50f('0x48'))][(_0xe50f('0x49'))](_0xe50f('0x4a'));}var _0x57b4e9={'Content-Type':'audio/wav','Content-Disposition':_0xe50f('0x4b')};if(_0x42dfea[_0xe50f('0x47')]){_0x57b4e9[_0xe50f('0x4c')]=_0xe50f('0x4d')+_0x42dfea[_0xe50f('0x47')]+_0xe50f('0x4e');}_0x2409f0['set'](_0x57b4e9);return _0x2409f0['send'](new Buffer(_0x42dfea[_0xe50f('0x46')]));}})[_0xe50f('0x3f')](handleError(_0x2409f0,null));};
\ No newline at end of file
+var _0xeb62=['request-promise','moment','bluebird','util','sox','to-csv','fs-extra','squel','crypto','jsforce','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','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','VoiceMailMessage','include','options','find','create','body','download','recording','Sequelize','ValidationError','audio/wav','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x122e9b,_0x391bf4){var _0x22c247=function(_0x1b2c65){while(--_0x1b2c65){_0x122e9b['push'](_0x122e9b['shift']());}};_0x22c247(++_0x391bf4);}(_0xeb62,0x107));var _0x2eb6=function(_0x16b896,_0x4f2600){_0x16b896=_0x16b896-0x0;var _0x1a811b=_0xeb62[_0x16b896];return _0x1a811b;};'use strict';var emlformat=require(_0x2eb6('0x0'));var rimraf=require(_0x2eb6('0x1'));var zipdir=require(_0x2eb6('0x2'));var jsonpatch=require(_0x2eb6('0x3'));var rp=require(_0x2eb6('0x4'));var moment=require(_0x2eb6('0x5'));var BPromise=require(_0x2eb6('0x6'));var Mustache=require('mustache');var util=require(_0x2eb6('0x7'));var path=require('path');var sox=require(_0x2eb6('0x8'));var csv=require(_0x2eb6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2eb6('0xa'));var _=require('lodash');var squel=require(_0x2eb6('0xb'));var crypto=require(_0x2eb6('0xc'));var jsforce=require(_0x2eb6('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2eb6('0xe'));var Papa=require(_0x2eb6('0xf'));var Redis=require(_0x2eb6('0x10'));var authService=require(_0x2eb6('0x11'));var qs=require(_0x2eb6('0x12'));var as=require(_0x2eb6('0x13'));var hardwareService=require(_0x2eb6('0x14'));var logger=require('../../config/logger')(_0x2eb6('0x15'));var utils=require('../../config/utils');var config=require(_0x2eb6('0x16'));var licenseUtil=require(_0x2eb6('0x17'));var db=require(_0x2eb6('0x18'))['db'];function respondWithStatusCode(_0x5da00d,_0x19ae23){_0x19ae23=_0x19ae23||0xcc;return function(_0x505d07){if(_0x505d07){return _0x5da00d[_0x2eb6('0x19')](_0x19ae23);}return _0x5da00d[_0x2eb6('0x1a')](_0x19ae23)[_0x2eb6('0x1b')]();};}function respondWithResult(_0x3c0b02,_0x2db137){_0x2db137=_0x2db137||0xc8;return function(_0xd07cab){if(_0xd07cab){return _0x3c0b02['status'](_0x2db137)['json'](_0xd07cab);}};}function respondWithFilteredResult(_0x5a9ff3,_0x475c12){return function(_0xed87e5){if(_0xed87e5){var _0x3b850f=typeof _0x475c12[_0x2eb6('0x1c')]===_0x2eb6('0x1d')&&typeof _0x475c12['limit']===_0x2eb6('0x1d');var _0x4e818f=_0xed87e5['count'];var _0x3ce44e=_0x3b850f?0x0:_0x475c12[_0x2eb6('0x1c')];var _0x1e70df=_0x3b850f?_0xed87e5[_0x2eb6('0x1e')]:_0x475c12[_0x2eb6('0x1c')]+_0x475c12[_0x2eb6('0x1f')];var _0x5ddfcc;if(_0x1e70df>=_0x4e818f){_0x1e70df=_0x4e818f;_0x5ddfcc=0xc8;}else{_0x5ddfcc=0xce;}_0x5a9ff3['status'](_0x5ddfcc);return _0x5a9ff3[_0x2eb6('0x20')](_0x2eb6('0x21'),_0x3ce44e+'-'+_0x1e70df+'/'+_0x4e818f)[_0x2eb6('0x22')](_0xed87e5);}return null;};}function patchUpdates(_0x1ec1c8){return function(_0x4697f0){try{jsonpatch[_0x2eb6('0x23')](_0x4697f0,_0x1ec1c8,!![]);}catch(_0x332505){return BPromise[_0x2eb6('0x24')](_0x332505);}return _0x4697f0[_0x2eb6('0x25')]();};}function saveUpdates(_0x449320,_0x5890f9){return function(_0x52a8ef){if(_0x52a8ef){return _0x52a8ef[_0x2eb6('0x26')](_0x449320)[_0x2eb6('0x27')](function(_0x55c5a9){return _0x55c5a9;});}return null;};}function removeEntity(_0x261167,_0x44466c){return function(_0xcbcf8b){if(_0xcbcf8b){return _0xcbcf8b[_0x2eb6('0x28')]()[_0x2eb6('0x27')](function(){_0x261167[_0x2eb6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39e7fd,_0xe3a67c){return function(_0x25f237){if(!_0x25f237){_0x39e7fd['sendStatus'](0x194);}return _0x25f237;};}function handleError(_0x259cf0,_0x7af804){_0x7af804=_0x7af804||0x1f4;return function(_0xc7df43){logger[_0x2eb6('0x29')](_0xc7df43[_0x2eb6('0x2a')]);if(_0xc7df43['name']){delete _0xc7df43[_0x2eb6('0x2b')];}_0x259cf0[_0x2eb6('0x1a')](_0x7af804)[_0x2eb6('0x2c')](_0xc7df43);};}exports['index']=function(_0x205da9,_0x33906a){var _0x2303e0={},_0x221139={},_0x4e8e47={'count':0x0,'rows':[]};var _0xc03a9c=_[_0x2eb6('0x2d')](db['VoiceMailMessage'][_0x2eb6('0x2e')],function(_0x5f25d3){return{'name':_0x5f25d3[_0x2eb6('0x2f')],'type':_0x5f25d3[_0x2eb6('0x30')][_0x2eb6('0x31')]};});_0x221139[_0x2eb6('0x32')]=_[_0x2eb6('0x33')](_[_0x2eb6('0x2d')](_0xc03a9c,_0x2eb6('0x2b')),[_0x2eb6('0x2b')]);_0x221139[_0x2eb6('0x34')]=_[_0x2eb6('0x35')](_0x205da9[_0x2eb6('0x34')]);_0x221139['filters']=_[_0x2eb6('0x36')](_0x221139[_0x2eb6('0x32')],_0x221139[_0x2eb6('0x34')]);_0x2303e0[_0x2eb6('0x37')]=_[_0x2eb6('0x36')](_0x221139[_0x2eb6('0x32')],qs[_0x2eb6('0x38')](_0x205da9[_0x2eb6('0x34')][_0x2eb6('0x38')]));_0x2303e0[_0x2eb6('0x37')]=_0x2303e0['attributes'][_0x2eb6('0x39')]?_0x2303e0['attributes']:_0x221139[_0x2eb6('0x32')];if(!_0x205da9['query'][_0x2eb6('0x3a')](_0x2eb6('0x3b'))){_0x2303e0[_0x2eb6('0x1f')]=qs[_0x2eb6('0x1f')](_0x205da9[_0x2eb6('0x34')][_0x2eb6('0x1f')]);_0x2303e0[_0x2eb6('0x1c')]=qs[_0x2eb6('0x1c')](_0x205da9[_0x2eb6('0x34')][_0x2eb6('0x1c')]);}_0x2303e0['order']=qs['sort'](_0x205da9['query'][_0x2eb6('0x3c')]);_0x2303e0['where']=qs[_0x2eb6('0x3d')](_[_0x2eb6('0x3e')](_0x205da9[_0x2eb6('0x34')],_0x221139[_0x2eb6('0x3d')]),_0xc03a9c);if(_0x205da9['query'][_0x2eb6('0x3f')]){_0x2303e0[_0x2eb6('0x40')]=_[_0x2eb6('0x41')](_0x2303e0['where'],{'$or':_[_0x2eb6('0x2d')](_0xc03a9c,function(_0x4e293c){if(_0x4e293c[_0x2eb6('0x30')]!==_0x2eb6('0x42')){var _0x787bfd={};_0x787bfd[_0x4e293c[_0x2eb6('0x2b')]]={'$like':'%'+_0x205da9['query'][_0x2eb6('0x3f')]+'%'};return _0x787bfd;}})});}_0x2303e0=_['merge']({},_0x2303e0,_0x205da9['options']);var _0xe9f4df={'where':_0x2303e0[_0x2eb6('0x40')]};return db['VoiceMailMessage']['count'](_0xe9f4df)['then'](function(_0x1d60e0){_0x4e8e47['count']=_0x1d60e0;if(_0x205da9[_0x2eb6('0x34')][_0x2eb6('0x43')]){_0x2303e0['include']=[{'all':!![]}];}return db['VoiceMailMessage'][_0x2eb6('0x44')](_0x2303e0);})[_0x2eb6('0x27')](function(_0x391301){_0x4e8e47[_0x2eb6('0x45')]=_0x391301;return _0x4e8e47;})[_0x2eb6('0x27')](respondWithFilteredResult(_0x33906a,_0x2303e0))[_0x2eb6('0x46')](handleError(_0x33906a,null));};exports[_0x2eb6('0x47')]=function(_0x466df3,_0x4505be){var _0x2fa51a={'raw':!![],'where':{'id':_0x466df3[_0x2eb6('0x48')]['id']}},_0x44319d={};_0x44319d[_0x2eb6('0x32')]=_[_0x2eb6('0x35')](db[_0x2eb6('0x49')][_0x2eb6('0x2e')]);_0x44319d[_0x2eb6('0x34')]=_[_0x2eb6('0x35')](_0x466df3[_0x2eb6('0x34')]);_0x44319d[_0x2eb6('0x3d')]=_[_0x2eb6('0x36')](_0x44319d[_0x2eb6('0x32')],_0x44319d['query']);_0x2fa51a[_0x2eb6('0x37')]=_[_0x2eb6('0x36')](_0x44319d[_0x2eb6('0x32')],qs['fields'](_0x466df3[_0x2eb6('0x34')][_0x2eb6('0x38')]));_0x2fa51a['attributes']=_0x2fa51a[_0x2eb6('0x37')][_0x2eb6('0x39')]?_0x2fa51a[_0x2eb6('0x37')]:_0x44319d[_0x2eb6('0x32')];if(_0x466df3[_0x2eb6('0x34')][_0x2eb6('0x43')]){_0x2fa51a[_0x2eb6('0x4a')]=[{'all':!![]}];}_0x2fa51a=_[_0x2eb6('0x41')]({},_0x2fa51a,_0x466df3[_0x2eb6('0x4b')]);return db[_0x2eb6('0x49')][_0x2eb6('0x4c')](_0x2fa51a)[_0x2eb6('0x27')](handleEntityNotFound(_0x4505be,null))[_0x2eb6('0x27')](respondWithResult(_0x4505be,null))[_0x2eb6('0x46')](handleError(_0x4505be,null));};exports[_0x2eb6('0x4d')]=function(_0x3ee5e1,_0x4b80b2){return db[_0x2eb6('0x49')][_0x2eb6('0x4d')](_0x3ee5e1[_0x2eb6('0x4e')],{})[_0x2eb6('0x27')](respondWithResult(_0x4b80b2,0xc9))[_0x2eb6('0x46')](handleError(_0x4b80b2,null));};exports[_0x2eb6('0x26')]=function(_0x46bc1c,_0x4bfc2a){if(_0x46bc1c[_0x2eb6('0x4e')]['id']){delete _0x46bc1c[_0x2eb6('0x4e')]['id'];}return db['VoiceMailMessage'][_0x2eb6('0x4c')]({'where':{'id':_0x46bc1c['params']['id']}})['then'](handleEntityNotFound(_0x4bfc2a,null))['then'](saveUpdates(_0x46bc1c[_0x2eb6('0x4e')],null))[_0x2eb6('0x27')](respondWithResult(_0x4bfc2a,null))[_0x2eb6('0x46')](handleError(_0x4bfc2a,null));};exports[_0x2eb6('0x28')]=function(_0x398ffe,_0x12305e){return db[_0x2eb6('0x49')][_0x2eb6('0x4c')]({'where':{'id':_0x398ffe[_0x2eb6('0x48')]['id']}})[_0x2eb6('0x27')](handleEntityNotFound(_0x12305e,null))[_0x2eb6('0x27')](removeEntity(_0x12305e,null))[_0x2eb6('0x46')](handleError(_0x12305e,null));};exports[_0x2eb6('0x4f')]=function(_0xa5d072,_0x4d9adb,_0x40e3bd){return db[_0x2eb6('0x49')]['find']({'where':{'id':_0xa5d072[_0x2eb6('0x48')]['id']},'attributes':['id',_0x2eb6('0x50'),'msg_id']})['then'](handleEntityNotFound(_0x4d9adb,null))[_0x2eb6('0x27')](function(_0x317464){if(_0x317464){if(!_0x317464['recording']){throw new db[(_0x2eb6('0x51'))][(_0x2eb6('0x52'))]('VoiceMailMessage\x20not\x20found');}var _0x7ce598={'Content-Type':_0x2eb6('0x53'),'Content-Disposition':_0x2eb6('0x54')};if(_0x317464[_0x2eb6('0x55')]){_0x7ce598[_0x2eb6('0x56')]=_0x2eb6('0x57')+_0x317464[_0x2eb6('0x55')]+_0x2eb6('0x58');}_0x4d9adb[_0x2eb6('0x20')](_0x7ce598);return _0x4d9adb['send'](new Buffer(_0x317464[_0x2eb6('0x50')]));}})['catch'](handleError(_0x4d9adb,null));};
\ No newline at end of file
index db3e480..08b5734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x643a=['./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x401588,_0x51cd98){var _0x11e331=function(_0x4aeb70){while(--_0x4aeb70){_0x401588['push'](_0x401588['shift']());}};_0x11e331(++_0x51cd98);}(_0x643a,0x17d));var _0xa643=function(_0x4cfe90,_0x416cef){_0x4cfe90=_0x4cfe90-0x0;var _0x1471c7=_0x643a[_0x4cfe90];return _0x1471c7;};'use strict';var _=require(_0xa643('0x0'));var util=require(_0xa643('0x1'));var logger=require(_0xa643('0x2'))(_0xa643('0x3'));var moment=require(_0xa643('0x4'));var BPromise=require('bluebird');var rp=require(_0xa643('0x5'));var fs=require('fs');var path=require(_0xa643('0x6'));var rimraf=require(_0xa643('0x7'));var config=require(_0xa643('0x8'));var attributes=require(_0xa643('0x9'));module[_0xa643('0xa')]=function(_0x3ab5b2,_0x12553a){return _0x3ab5b2[_0xa643('0xb')](_0xa643('0xc'),attributes,{'tableName':_0xa643('0xd'),'paranoid':![],'indexes':[{'name':_0xa643('0xe'),'fields':[_0xa643('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x6c0c=['bluebird','request-promise','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','VoiceMailMessage','voice_voicemail_messages','dir','lodash','../../config/logger','api','moment'];(function(_0x32a3ce,_0x647c17){var _0x3f8a07=function(_0x4e456d){while(--_0x4e456d){_0x32a3ce['push'](_0x32a3ce['shift']());}};_0x3f8a07(++_0x647c17);}(_0x6c0c,0x182));var _0xc6c0=function(_0x51b1f0,_0x1312ca){_0x51b1f0=_0x51b1f0-0x0;var _0x2bff94=_0x6c0c[_0x51b1f0];return _0x2bff94;};'use strict';var _=require(_0xc6c0('0x0'));var util=require('util');var logger=require(_0xc6c0('0x1'))(_0xc6c0('0x2'));var moment=require(_0xc6c0('0x3'));var BPromise=require(_0xc6c0('0x4'));var rp=require(_0xc6c0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc6c0('0x6'));var config=require(_0xc6c0('0x7'));var attributes=require(_0xc6c0('0x8'));module[_0xc6c0('0x9')]=function(_0x1fdcf2,_0xe49dbd){return _0x1fdcf2['define'](_0xc6c0('0xa'),attributes,{'tableName':_0xc6c0('0xb'),'paranoid':![],'indexes':[{'name':_0xc6c0('0xc'),'fields':[_0xc6c0('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index 6fd8d07..eef99be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd69f=['error','code','message','result','catch','lodash','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','VoiceMailMessage,\x20%s,\x20%s','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x673ea4,_0x449076){var _0x3e5938=function(_0x4152e0){while(--_0x4152e0){_0x673ea4['push'](_0x673ea4['shift']());}};_0x3e5938(++_0x449076);}(_0xd69f,0x9d));var _0xfd69=function(_0x1792eb,_0x1cb57b){_0x1792eb=_0x1792eb-0x0;var _0x515c0a=_0xd69f[_0x1792eb];return _0x515c0a;};'use strict';var _=require(_0xfd69('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfd69('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd69('0x2'));var logger=require(_0xfd69('0x3'))(_0xfd69('0x4'));var config=require(_0xfd69('0x5'));var jayson=require(_0xfd69('0x6'));var client=jayson[_0xfd69('0x7')][_0xfd69('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1105aa,_0x7d2179,_0x1ac2cf){return new BPromise(function(_0x56e7c9,_0x4a8afc){return client['request'](_0x1105aa,_0x1ac2cf)['then'](function(_0x4b7521){logger[_0xfd69('0x9')](_0xfd69('0xa'),_0x7d2179,'request\x20sent');logger['debug'](_0xfd69('0xb'),_0x7d2179,_0xfd69('0xc'),JSON[_0xfd69('0xd')](_0x4b7521));if(_0x4b7521[_0xfd69('0xe')]){if(_0x4b7521[_0xfd69('0xe')][_0xfd69('0xf')]===0x1f4){logger[_0xfd69('0xe')](_0xfd69('0xa'),_0x7d2179,_0x4b7521[_0xfd69('0xe')][_0xfd69('0x10')]);return _0x4a8afc(_0x4b7521[_0xfd69('0xe')][_0xfd69('0x10')]);}logger[_0xfd69('0xe')](_0xfd69('0xa'),_0x7d2179,_0x4b7521[_0xfd69('0xe')]['message']);return _0x56e7c9(_0x4b7521[_0xfd69('0xe')][_0xfd69('0x10')]);}else{logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x7d2179,'request\x20sent');_0x56e7c9(_0x4b7521[_0xfd69('0x11')][_0xfd69('0x10')]);}})[_0xfd69('0x12')](function(_0x4ded34){logger[_0xfd69('0xe')](_0xfd69('0xa'),_0x7d2179,_0x4ded34);_0x4a8afc(_0x4ded34);});});}
\ No newline at end of file
+var _0x473d=['jayson/promise','client','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util','moment','randomstring','../../mysqldb','rpc'];(function(_0x5f2afa,_0x3d2cd2){var _0xc21b56=function(_0x14825b){while(--_0x14825b){_0x5f2afa['push'](_0x5f2afa['shift']());}};_0xc21b56(++_0x3d2cd2);}(_0x473d,0xe4));var _0xd473=function(_0x39c30d,_0x54ad35){_0x39c30d=_0x39c30d-0x0;var _0x120b2b=_0x473d[_0x39c30d];return _0x120b2b;};'use strict';var _=require(_0xd473('0x0'));var util=require(_0xd473('0x1'));var moment=require(_0xd473('0x2'));var BPromise=require('bluebird');var rs=require(_0xd473('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd473('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd473('0x5'));var config=require('../../config/environment');var jayson=require(_0xd473('0x6'));var client=jayson[_0xd473('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20b52d,_0x23665a,_0xd66f1b){return new BPromise(function(_0x2276d2,_0x82e0bf){return client['request'](_0x20b52d,_0xd66f1b)[_0xd473('0x8')](function(_0x25a52b){logger['info'](_0xd473('0x9'),_0x23665a,_0xd473('0xa'));logger[_0xd473('0xb')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x23665a,_0xd473('0xa'),JSON[_0xd473('0xc')](_0x25a52b));if(_0x25a52b[_0xd473('0xd')]){if(_0x25a52b[_0xd473('0xd')][_0xd473('0xe')]===0x1f4){logger[_0xd473('0xd')](_0xd473('0x9'),_0x23665a,_0x25a52b[_0xd473('0xd')][_0xd473('0xf')]);return _0x82e0bf(_0x25a52b[_0xd473('0xd')][_0xd473('0xf')]);}logger[_0xd473('0xd')](_0xd473('0x9'),_0x23665a,_0x25a52b['error'][_0xd473('0xf')]);return _0x2276d2(_0x25a52b[_0xd473('0xd')][_0xd473('0xf')]);}else{logger[_0xd473('0x10')](_0xd473('0x9'),_0x23665a,'request\x20sent');_0x2276d2(_0x25a52b['result'][_0xd473('0xf')]);}})[_0xd473('0x11')](function(_0x597ad6){logger['error'](_0xd473('0x9'),_0x23665a,_0x597ad6);_0x82e0bf(_0x597ad6);});});}
\ No newline at end of file
index b43f169..3b2d9a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bf4=['/:id/sounds/:id2','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','isAuthenticated','index','get','/:id','show','/:id/sounds','post','addSound','put','update','destroy','delete'];(function(_0x2b775e,_0x5be870){var _0x3ef379=function(_0x1fc136){while(--_0x1fc136){_0x2b775e['push'](_0x2b775e['shift']());}};_0x3ef379(++_0x5be870);}(_0x2bf4,0x166));var _0x42bf=function(_0x1b1bd5,_0xf50a3){_0x1b1bd5=_0x1b1bd5-0x0;var _0x12bf17=_0x2bf4[_0x1b1bd5];return _0x12bf17;};'use strict';var multer=require(_0x42bf('0x0'));var util=require(_0x42bf('0x1'));var path=require(_0x42bf('0x2'));var timeout=require(_0x42bf('0x3'));var express=require('express');var router=express[_0x42bf('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x42bf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x42bf('0x6'));var controller=require(_0x42bf('0x7'));router['get']('/',auth[_0x42bf('0x8')](),controller[_0x42bf('0x9')]);router[_0x42bf('0xa')](_0x42bf('0xb'),auth[_0x42bf('0x8')](),controller[_0x42bf('0xc')]);router['get'](_0x42bf('0xd'),auth[_0x42bf('0x8')](),controller['getSounds']);router['post']('/',auth[_0x42bf('0x8')](),controller['create']);router[_0x42bf('0xe')](_0x42bf('0xd'),auth[_0x42bf('0x8')](),controller[_0x42bf('0xf')]);router[_0x42bf('0x10')](_0x42bf('0xb'),auth[_0x42bf('0x8')](),controller[_0x42bf('0x11')]);router['delete'](_0x42bf('0xb'),auth[_0x42bf('0x8')](),controller[_0x42bf('0x12')]);router[_0x42bf('0x13')](_0x42bf('0x14'),auth[_0x42bf('0x8')](),controller['removeSound']);module['exports']=router;
\ No newline at end of file
+var _0x4a9d=['get','isAuthenticated','/:id','show','/:id/sounds','getSounds','post','addSound','put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller'];(function(_0x807ab3,_0x3dde5b){var _0x1c20df=function(_0x29c8b9){while(--_0x29c8b9){_0x807ab3['push'](_0x807ab3['shift']());}};_0x1c20df(++_0x3dde5b);}(_0x4a9d,0x1b8));var _0xd4a9=function(_0x82eb5a,_0x39d0f6){_0x82eb5a=_0x82eb5a-0x0;var _0x231d5e=_0x4a9d[_0x82eb5a];return _0x231d5e;};'use strict';var multer=require(_0xd4a9('0x0'));var util=require(_0xd4a9('0x1'));var path=require(_0xd4a9('0x2'));var timeout=require(_0xd4a9('0x3'));var express=require(_0xd4a9('0x4'));var router=express['Router']();var fs_extra=require(_0xd4a9('0x5'));var auth=require(_0xd4a9('0x6'));var interaction=require(_0xd4a9('0x7'));var config=require(_0xd4a9('0x8'));var controller=require(_0xd4a9('0x9'));router[_0xd4a9('0xa')]('/',auth[_0xd4a9('0xb')](),controller['index']);router[_0xd4a9('0xa')](_0xd4a9('0xc'),auth[_0xd4a9('0xb')](),controller[_0xd4a9('0xd')]);router[_0xd4a9('0xa')](_0xd4a9('0xe'),auth['isAuthenticated'](),controller[_0xd4a9('0xf')]);router[_0xd4a9('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xd4a9('0x10')]('/:id/sounds',auth[_0xd4a9('0xb')](),controller[_0xd4a9('0x11')]);router[_0xd4a9('0x12')]('/:id',auth[_0xd4a9('0xb')](),controller[_0xd4a9('0x13')]);router[_0xd4a9('0x14')]('/:id',auth[_0xd4a9('0xb')](),controller[_0xd4a9('0x15')]);router[_0xd4a9('0x14')](_0xd4a9('0x16'),auth[_0xd4a9('0xb')](),controller[_0xd4a9('0x17')]);module[_0xd4a9('0x18')]=router;
\ No newline at end of file
index 3765f94..1843266 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9edf=['exports','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','mp3','STRING','alpha','TIMESTAMP','BOOLEAN'];(function(_0x587c0f,_0x4e548a){var _0x4931b5=function(_0x960fb4){while(--_0x960fb4){_0x587c0f['push'](_0x587c0f['shift']());}};_0x4931b5(++_0x4e548a);}(_0x9edf,0x11e));var _0xf9ed=function(_0x18e467,_0x4b91df){_0x18e467=_0x18e467-0x0;var _0x451cd4=_0x9edf[_0x18e467];return _0x451cd4;};'use strict';var Sequelize=require('sequelize');module[_0xf9ed('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xf9ed('0x1')},'mode':{'type':Sequelize[_0xf9ed('0x2')](_0xf9ed('0x3'),_0xf9ed('0x4'),_0xf9ed('0x5'),_0xf9ed('0x6'),_0xf9ed('0x7'),_0xf9ed('0x8')),'allowNull':!![],'defaultValue':_0xf9ed('0x4')},'directory':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![],'defaultValue':_0xf9ed('0xa')},'format':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![]},'stamp':{'type':_0xf9ed('0xb')},'defaultEntry':{'type':Sequelize[_0xf9ed('0xc')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe02f=['files','mp3nb','quietmp3nb','quietmp3','mp3','STRING','TIMESTAMP','BOOLEAN','exports','name','ENUM','custom'];(function(_0x430bc5,_0x128451){var _0x31b37e=function(_0x33e2d3){while(--_0x33e2d3){_0x430bc5['push'](_0x430bc5['shift']());}};_0x31b37e(++_0x128451);}(_0xe02f,0x170));var _0xfe02=function(_0x4f4814,_0x44959d){_0x4f4814=_0x4f4814-0x0;var _0x179592=_0xe02f[_0x4f4814];return _0x179592;};'use strict';var Sequelize=require('sequelize');module[_0xfe02('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xfe02('0x1')},'mode':{'type':Sequelize[_0xfe02('0x2')](_0xfe02('0x3'),_0xfe02('0x4'),_0xfe02('0x5'),_0xfe02('0x6'),_0xfe02('0x7'),_0xfe02('0x8')),'allowNull':!![],'defaultValue':_0xfe02('0x4')},'directory':{'type':Sequelize[_0xfe02('0x9')],'allowNull':!![]},'application':{'type':Sequelize[_0xfe02('0x9')],'allowNull':!![]},'digit':{'type':Sequelize[_0xfe02('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0xfe02('0x9')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0xfe02('0x9')],'allowNull':!![]},'stamp':{'type':_0xfe02('0xa')},'defaultEntry':{'type':Sequelize[_0xfe02('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 143afb0..90230ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf76a=['length','options','find','body','create','transaction','mode','files','directory','join','root','mkdirSync','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','server/files/moh','symlinkSync','removeSound','id2','getSounds','filter','hasOwnProperty','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','error','stack','name','index','VoiceMusicOnHold','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','nolimit','order','sort','where','filters','pick','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params'];(function(_0x2f9f43,_0x56eda0){var _0x41b9ac=function(_0x36e82f){while(--_0x36e82f){_0x2f9f43['push'](_0x2f9f43['shift']());}};_0x41b9ac(++_0x56eda0);}(_0xf76a,0x10b));var _0xaf76=function(_0x5425b2,_0x1a87c0){_0x5425b2=_0x5425b2-0x0;var _0x5e8d35=_0xf76a[_0x5425b2];return _0x5e8d35;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf76('0x0'));var zipdir=require(_0xaf76('0x1'));var jsonpatch=require(_0xaf76('0x2'));var rp=require('request-promise');var moment=require(_0xaf76('0x3'));var BPromise=require(_0xaf76('0x4'));var Mustache=require(_0xaf76('0x5'));var util=require(_0xaf76('0x6'));var path=require('path');var sox=require(_0xaf76('0x7'));var csv=require(_0xaf76('0x8'));var ejs=require(_0xaf76('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaf76('0xa'));var squel=require(_0xaf76('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xaf76('0x8'));var querystring=require(_0xaf76('0xc'));var Papa=require(_0xaf76('0xd'));var Redis=require(_0xaf76('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xaf76('0xf'));var as=require(_0xaf76('0x10'));var hardwareService=require(_0xaf76('0x11'));var logger=require(_0xaf76('0x12'))(_0xaf76('0x13'));var utils=require(_0xaf76('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaf76('0x15'))['db'];function respondWithStatusCode(_0x23f3c0,_0x3aebfc){_0x3aebfc=_0x3aebfc||0xcc;return function(_0x9193cb){if(_0x9193cb){return _0x23f3c0[_0xaf76('0x16')](_0x3aebfc);}return _0x23f3c0[_0xaf76('0x17')](_0x3aebfc)[_0xaf76('0x18')]();};}function respondWithResult(_0x2a6361,_0x569b91){_0x569b91=_0x569b91||0xc8;return function(_0x5f7630){if(_0x5f7630){return _0x2a6361[_0xaf76('0x17')](_0x569b91)[_0xaf76('0x19')](_0x5f7630);}};}function respondWithFilteredResult(_0x291d8f,_0x51d7b6){return function(_0x311ccd){if(_0x311ccd){var _0x17a528=typeof _0x51d7b6[_0xaf76('0x1a')]==='undefined'&&typeof _0x51d7b6[_0xaf76('0x1b')]===_0xaf76('0x1c');var _0x9bb9c1=_0x311ccd['count'];var _0x2dcf66=_0x17a528?0x0:_0x51d7b6[_0xaf76('0x1a')];var _0x2bc25e=_0x17a528?_0x311ccd[_0xaf76('0x1d')]:_0x51d7b6['offset']+_0x51d7b6[_0xaf76('0x1b')];var _0x7e316;if(_0x2bc25e>=_0x9bb9c1){_0x2bc25e=_0x9bb9c1;_0x7e316=0xc8;}else{_0x7e316=0xce;}_0x291d8f[_0xaf76('0x17')](_0x7e316);return _0x291d8f[_0xaf76('0x1e')](_0xaf76('0x1f'),_0x2dcf66+'-'+_0x2bc25e+'/'+_0x9bb9c1)[_0xaf76('0x19')](_0x311ccd);}return null;};}function patchUpdates(_0x26507d){return function(_0x76cd0f){try{jsonpatch['apply'](_0x76cd0f,_0x26507d,!![]);}catch(_0x1f1330){return BPromise[_0xaf76('0x20')](_0x1f1330);}return _0x76cd0f['save']();};}function saveUpdates(_0x163eca,_0x37664c){return function(_0x1f855c){if(_0x1f855c){return _0x1f855c['update'](_0x163eca)[_0xaf76('0x21')](function(_0x4010cf){return _0x4010cf;});}return null;};}function removeEntity(_0x1a330c,_0x38a5ac){return function(_0x20a35c){if(_0x20a35c){return _0x20a35c[_0xaf76('0x22')]()['then'](function(){var _0x18acd6=_0x20a35c['get']({'plain':!![]});var _0x4e6abf='MusicOnHolds';return db['UserProfileResource'][_0xaf76('0x22')]({'where':{'type':_0x4e6abf,'resourceId':_0x18acd6['id']}})['then'](function(){return _0x20a35c;});})[_0xaf76('0x21')](function(){_0x1a330c[_0xaf76('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a46e1,_0x1dd916){return function(_0x191309){if(!_0x191309){_0x3a46e1[_0xaf76('0x16')](0x194);}return _0x191309;};}function handleError(_0x10247a,_0x2c780a){_0x2c780a=_0x2c780a||0x1f4;return function(_0x732df5){logger[_0xaf76('0x23')](_0x732df5[_0xaf76('0x24')]);if(_0x732df5['name']){delete _0x732df5[_0xaf76('0x25')];}_0x10247a[_0xaf76('0x17')](_0x2c780a)['send'](_0x732df5);};}exports[_0xaf76('0x26')]=function(_0x188aed,_0x5175de){var _0x56d9bc={},_0x3f5776={},_0x240441={'count':0x0,'rows':[]};var _0x440565=_['map'](db[_0xaf76('0x27')][_0xaf76('0x28')],function(_0x308c88){return{'name':_0x308c88[_0xaf76('0x29')],'type':_0x308c88[_0xaf76('0x2a')][_0xaf76('0x2b')]};});_0x3f5776['model']=_['map'](_0x440565,'name');_0x3f5776[_0xaf76('0x2c')]=_[_0xaf76('0x2d')](_0x188aed[_0xaf76('0x2c')]);_0x3f5776['filters']=_[_0xaf76('0x2e')](_0x3f5776[_0xaf76('0x2f')],_0x3f5776[_0xaf76('0x2c')]);_0x56d9bc[_0xaf76('0x30')]=_[_0xaf76('0x2e')](_0x3f5776[_0xaf76('0x2f')],qs['fields'](_0x188aed[_0xaf76('0x2c')][_0xaf76('0x31')]));_0x56d9bc['attributes']=_0x56d9bc[_0xaf76('0x30')]['length']?_0x56d9bc[_0xaf76('0x30')]:_0x3f5776[_0xaf76('0x2f')];if(!_0x188aed[_0xaf76('0x2c')]['hasOwnProperty'](_0xaf76('0x32'))){_0x56d9bc[_0xaf76('0x1b')]=qs[_0xaf76('0x1b')](_0x188aed['query'][_0xaf76('0x1b')]);_0x56d9bc[_0xaf76('0x1a')]=qs[_0xaf76('0x1a')](_0x188aed['query'][_0xaf76('0x1a')]);}_0x56d9bc[_0xaf76('0x33')]=qs[_0xaf76('0x34')](_0x188aed[_0xaf76('0x2c')][_0xaf76('0x34')]);delete _0x188aed['query'][_0xaf76('0x34')];_0x56d9bc[_0xaf76('0x35')]=qs[_0xaf76('0x36')](_[_0xaf76('0x37')](_0x188aed['query'],_0x3f5776[_0xaf76('0x36')]),_0x440565);if(_0x188aed[_0xaf76('0x2c')]['filter']){_0x56d9bc[_0xaf76('0x35')]=_[_0xaf76('0x38')](_0x56d9bc[_0xaf76('0x35')],{'$or':_[_0xaf76('0x39')](_0x440565,function(_0x3269f6){if(_0x3269f6[_0xaf76('0x2a')]!==_0xaf76('0x3a')){var _0x25f6fc={};_0x25f6fc[_0x3269f6[_0xaf76('0x25')]]={'$like':'%'+_0x188aed[_0xaf76('0x2c')]['filter']+'%'};return _0x25f6fc;}})});}_0x56d9bc=_[_0xaf76('0x38')]({},_0x56d9bc,_0x188aed['options']);var _0xc2ad7={'where':_0x56d9bc[_0xaf76('0x35')]};return db[_0xaf76('0x27')][_0xaf76('0x1d')](_0xc2ad7)[_0xaf76('0x21')](function(_0x2f4941){_0x240441[_0xaf76('0x1d')]=_0x2f4941;if(_0x188aed[_0xaf76('0x2c')][_0xaf76('0x3b')]){_0x56d9bc[_0xaf76('0x3c')]=[{'all':!![]}];}return db[_0xaf76('0x27')][_0xaf76('0x3d')](_0x56d9bc);})['then'](function(_0x234304){_0x240441[_0xaf76('0x3e')]=_0x234304;return _0x240441;})['then'](respondWithFilteredResult(_0x5175de,_0x56d9bc))[_0xaf76('0x3f')](handleError(_0x5175de,null));};exports[_0xaf76('0x40')]=function(_0x3656e0,_0x287690){var _0x5e9eb6={'raw':![],'where':{'id':_0x3656e0[_0xaf76('0x41')]['id']}},_0x1fd8eb={};_0x1fd8eb[_0xaf76('0x2f')]=_[_0xaf76('0x2d')](db['VoiceMusicOnHold']['rawAttributes']);_0x1fd8eb[_0xaf76('0x2c')]=_['keys'](_0x3656e0[_0xaf76('0x2c')]);_0x1fd8eb[_0xaf76('0x36')]=_[_0xaf76('0x2e')](_0x1fd8eb[_0xaf76('0x2f')],_0x1fd8eb[_0xaf76('0x2c')]);_0x5e9eb6[_0xaf76('0x30')]=_['intersection'](_0x1fd8eb[_0xaf76('0x2f')],qs[_0xaf76('0x31')](_0x3656e0[_0xaf76('0x2c')][_0xaf76('0x31')]));_0x5e9eb6[_0xaf76('0x30')]=_0x5e9eb6[_0xaf76('0x30')][_0xaf76('0x42')]?_0x5e9eb6['attributes']:_0x1fd8eb[_0xaf76('0x2f')];if(_0x3656e0[_0xaf76('0x2c')][_0xaf76('0x3b')]){_0x5e9eb6['include']=[{'all':!![]}];}_0x5e9eb6=_['merge']({},_0x5e9eb6,_0x3656e0[_0xaf76('0x43')]);return db[_0xaf76('0x27')][_0xaf76('0x44')](_0x5e9eb6)['then'](handleEntityNotFound(_0x287690,null))[_0xaf76('0x21')](respondWithResult(_0x287690,null))[_0xaf76('0x3f')](handleError(_0x287690,null));};exports['update']=function(_0x538063,_0x2a6be9){if(_0x538063[_0xaf76('0x45')]['id']){delete _0x538063[_0xaf76('0x45')]['id'];}return db[_0xaf76('0x27')][_0xaf76('0x44')]({'where':{'id':_0x538063[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](handleEntityNotFound(_0x2a6be9,null))['then'](saveUpdates(_0x538063[_0xaf76('0x45')],null))[_0xaf76('0x21')](respondWithResult(_0x2a6be9,null))['catch'](handleError(_0x2a6be9,null));};exports[_0xaf76('0x46')]=function(_0x225a67,_0x84e95d,_0x3f073f){return db['sequelize'][_0xaf76('0x47')](function(_0x228026){if(_0x225a67[_0xaf76('0x45')][_0xaf76('0x48')]===_0xaf76('0x49')){_0x225a67[_0xaf76('0x45')][_0xaf76('0x4a')]=path[_0xaf76('0x4b')](config[_0xaf76('0x4c')],'server/files/moh',_0x225a67[_0xaf76('0x45')]['name']);}return db[_0xaf76('0x27')][_0xaf76('0x46')](_0x225a67[_0xaf76('0x45')],{'transaction':_0x228026})[_0xaf76('0x21')](function(_0x5e74ad){if(_0x225a67['body'][_0xaf76('0x48')]===_0xaf76('0x49')){fs[_0xaf76('0x4d')](_0x5e74ad[_0xaf76('0x4a')],parseInt('0777',0x8));}var _0x21a5b2=_0x225a67[_0xaf76('0x4e')][_0xaf76('0x4f')]({'plain':!![]});if(!_0x21a5b2)throw new Error(_0xaf76('0x50'));if(_0x21a5b2[_0xaf76('0x51')]===_0xaf76('0x4e')){var _0x52dfb5=_0x5e74ad[_0xaf76('0x4f')]({'plain':!![]});return db[_0xaf76('0x52')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x21a5b2[_0xaf76('0x53')]},'raw':!![]})[_0xaf76('0x21')](function(_0x508bda){if(_0x508bda&&_0x508bda[_0xaf76('0x54')]===0x0){return db['UserProfileResource'][_0xaf76('0x46')]({'name':_0x52dfb5[_0xaf76('0x25')],'resourceId':_0x52dfb5['id'],'type':_0x508bda[_0xaf76('0x25')],'sectionId':_0x508bda['id']},{})[_0xaf76('0x21')](function(){return _0x5e74ad;});}else{return _0x5e74ad;}})[_0xaf76('0x3f')](function(_0x3270fd){logger[_0xaf76('0x23')](_0xaf76('0x55'),_0x3270fd);});}return _0x5e74ad;});})[_0xaf76('0x21')](respondWithResult(_0x84e95d,0xc9))[_0xaf76('0x3f')](handleError(_0x84e95d,null));};exports[_0xaf76('0x22')]=function(_0x237804,_0x45291b,_0xb86af8){var _0x2cc495;return db[_0xaf76('0x27')]['find']({'where':{'id':_0x237804[_0xaf76('0x41')]['id']}})['then'](function(_0x3f0ae2){if(_0x3f0ae2){return db[_0xaf76('0x56')]['transaction'](function(_0x252360){return _0x3f0ae2['destroy']({'transaction':_0x252360,'raw':!![]})[_0xaf76('0x21')](function(_0x2b1778){if(_0x2b1778[_0xaf76('0x4a')]){fs[_0xaf76('0x57')](_0x2b1778['directory'])[_0xaf76('0x58')](function(_0x27861b){fs['unlinkSync'](path[_0xaf76('0x4b')](_0x2b1778[_0xaf76('0x4a')],_0x27861b));});fs[_0xaf76('0x59')](_0x2b1778['directory']);}return _0x2b1778;});})['catch'](function(_0x311bf8){throw new db[(_0xaf76('0x5a'))][(_0xaf76('0x5b'))](_0x311bf8[_0xaf76('0x5c')]);});}})[_0xaf76('0x21')](handleEntityNotFound(_0x45291b,null))[_0xaf76('0x21')](removeEntity(_0x45291b,null))[_0xaf76('0x3f')](handleError(_0x45291b,null));};exports[_0xaf76('0x5d')]=function(_0x1dd469,_0x2c57da,_0x136704){return db['sequelize'][_0xaf76('0x47')](function(_0x9b122b){var _0x2935c9;return db[_0xaf76('0x27')]['find']({'where':{'id':_0x1dd469[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](function(_0x505821){if(_0x505821){_0x2935c9=_0x505821;return _0x505821[_0xaf76('0x5d')](_0x1dd469[_0xaf76('0x45')]['id'],{'transaction':_0x9b122b});}})[_0xaf76('0x21')](function(_0x3980ee){if(_0x3980ee){return db[_0xaf76('0x5e')][_0xaf76('0x5f')]({'where':{'id':_0x1dd469[_0xaf76('0x45')]['id']},'attributes':['id',_0xaf76('0x25'),_0xaf76('0x60'),_0xaf76('0x61'),_0xaf76('0x62')],'raw':!![]});}})[_0xaf76('0x21')](function(_0x5c0325){if(_0x5c0325){var _0x4ab23c=path[_0xaf76('0x4b')](config[_0xaf76('0x4c')],_0xaf76('0x63'),util[_0xaf76('0x64')](_0xaf76('0x65'),path[_0xaf76('0x66')](_0x5c0325[_0xaf76('0x60')],path[_0xaf76('0x67')](_0x5c0325[_0xaf76('0x60')])),_0x5c0325[_0xaf76('0x61')]));var _0x2747c4=path['join'](config[_0xaf76('0x4c')],_0xaf76('0x68'),_0x2935c9[_0xaf76('0x25')],util['format'](_0xaf76('0x65'),_0x5c0325['name'],_0x5c0325[_0xaf76('0x61')]));fs[_0xaf76('0x69')](_0x4ab23c,_0x2747c4);return _0x5c0325;}})[_0xaf76('0x3f')](function(_0x2b3caa){throw new db['Sequelize'][(_0xaf76('0x5b'))](_0x2b3caa['message']);});})[_0xaf76('0x21')](handleEntityNotFound(_0x2c57da,null))['then'](respondWithResult(_0x2c57da,0xc9))[_0xaf76('0x3f')](handleError(_0x2c57da,null));};exports[_0xaf76('0x6a')]=function(_0x4206fb,_0x44bea6,_0x326428){return db[_0xaf76('0x56')]['transaction'](function(_0x38612d){var _0x318afd;return db[_0xaf76('0x27')]['findOne']({'where':{'id':_0x4206fb[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](handleEntityNotFound(_0x44bea6,null))['then'](function(_0x4b9f0c){if(_0x4b9f0c){_0x318afd=_0x4b9f0c;return _0x4b9f0c['removeSound'](_0x4206fb['params'][_0xaf76('0x6b')]);}})[_0xaf76('0x21')](function(_0x442815){if(_0x442815){return db[_0xaf76('0x5e')][_0xaf76('0x5f')]({'where':{'id':_0x4206fb['params']['id2']},'attributes':['id','name',_0xaf76('0x60'),_0xaf76('0x61'),_0xaf76('0x62')],'raw':!![]});}})['then'](function(_0x2c5bf7){if(_0x2c5bf7){fs['unlinkSync'](path[_0xaf76('0x4b')](_0x318afd['directory'],util[_0xaf76('0x64')]('%s.%s',_0x2c5bf7[_0xaf76('0x25')],_0x2c5bf7[_0xaf76('0x61')])));return _0x2c5bf7;}})['catch'](function(_0x9279fa){throw new db[(_0xaf76('0x5a'))][(_0xaf76('0x5b'))](_0x9279fa['message']);});})['then'](handleEntityNotFound(_0x44bea6,null))['then'](respondWithStatusCode(_0x44bea6,0xcc))[_0xaf76('0x3f')](handleError(_0x44bea6,null));};exports[_0xaf76('0x6c')]=function(_0x25e918,_0x4c243d,_0x4f142f){var _0x23b8f7={};var _0x22fb47={};var _0x56f6bc;var _0x57f53a;return db[_0xaf76('0x27')]['findOne']({'where':{'id':_0x25e918[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](handleEntityNotFound(_0x4c243d,null))[_0xaf76('0x21')](function(_0x1f5b64){if(_0x1f5b64){_0x56f6bc=_0x1f5b64;_0x22fb47['model']=_[_0xaf76('0x2d')](db[_0xaf76('0x5e')]['rawAttributes']);_0x22fb47[_0xaf76('0x2c')]=_[_0xaf76('0x2d')](_0x25e918[_0xaf76('0x2c')]);_0x22fb47['filters']=_['intersection'](_0x22fb47[_0xaf76('0x2f')],_0x22fb47[_0xaf76('0x2c')]);_0x23b8f7[_0xaf76('0x30')]=_[_0xaf76('0x2e')](_0x22fb47[_0xaf76('0x2f')],qs[_0xaf76('0x31')](_0x25e918[_0xaf76('0x2c')][_0xaf76('0x31')]));_0x23b8f7[_0xaf76('0x30')]=_0x23b8f7['attributes']['length']?_0x23b8f7[_0xaf76('0x30')]:_0x22fb47[_0xaf76('0x2f')];_0x23b8f7['order']=qs['sort'](_0x25e918['query'][_0xaf76('0x34')]);_0x23b8f7[_0xaf76('0x35')]=qs[_0xaf76('0x36')](_[_0xaf76('0x37')](_0x25e918['query'],_0x22fb47['filters']));if(_0x25e918[_0xaf76('0x2c')]['filter']){_0x23b8f7[_0xaf76('0x35')]=_[_0xaf76('0x38')](_0x23b8f7[_0xaf76('0x35')],{'$or':_[_0xaf76('0x39')](_0x23b8f7['attributes'],function(_0x451f3b){var _0x17721c={};_0x17721c[_0x451f3b]={'$like':'%'+_0x25e918['query'][_0xaf76('0x6d')]+'%'};return _0x17721c;})});}_0x23b8f7=_[_0xaf76('0x38')]({},_0x23b8f7,_0x25e918[_0xaf76('0x43')]);return _0x56f6bc[_0xaf76('0x6c')](_0x23b8f7);}})[_0xaf76('0x21')](function(_0x133f8a){if(_0x133f8a){_0x57f53a=_0x133f8a[_0xaf76('0x42')];if(!_0x25e918[_0xaf76('0x2c')][_0xaf76('0x6e')](_0xaf76('0x32'))){_0x23b8f7[_0xaf76('0x1b')]=qs[_0xaf76('0x1b')](_0x25e918['query'][_0xaf76('0x1b')]);_0x23b8f7[_0xaf76('0x1a')]=qs[_0xaf76('0x1a')](_0x25e918[_0xaf76('0x2c')][_0xaf76('0x1a')]);}return _0x56f6bc[_0xaf76('0x6c')](_0x23b8f7);}})['then'](function(_0x4ad3e5){if(_0x4ad3e5){return _0x4ad3e5?{'count':_0x57f53a,'rows':_0x4ad3e5}:null;}})[_0xaf76('0x21')](respondWithResult(_0x4c243d,null))[_0xaf76('0x3f')](handleError(_0x4c243d,null));};
\ No newline at end of file
+var _0xe450=['destroy','then','MusicOnHolds','UserProfileResource','sendStatus','stack','name','send','index','map','VoiceMusicOnHold','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','type','merge','options','includeAll','include','catch','rawAttributes','find','update','body','params','create','transaction','mode','files','directory','join','root','server/files/moh','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','readdirSync','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','sequelize','Sound','findOne','save_name','converted_format','%s.%s','basename','removeSound','id2','createdAt','getSounds','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x5e13af,_0x5461e0){var _0x3dbfa0=function(_0x44c302){while(--_0x44c302){_0x5e13af['push'](_0x5e13af['shift']());}};_0x3dbfa0(++_0x5461e0);}(_0xe450,0x1e2));var _0x0e45=function(_0x1c93db,_0x19b957){_0x1c93db=_0x1c93db-0x0;var _0x21327e=_0xe450[_0x1c93db];return _0x21327e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e45('0x0'));var zipdir=require(_0x0e45('0x1'));var jsonpatch=require(_0x0e45('0x2'));var rp=require('request-promise');var moment=require(_0x0e45('0x3'));var BPromise=require(_0x0e45('0x4'));var Mustache=require(_0x0e45('0x5'));var util=require(_0x0e45('0x6'));var path=require('path');var sox=require(_0x0e45('0x7'));var csv=require('to-csv');var ejs=require(_0x0e45('0x8'));var fs=require('fs');var fs_extra=require(_0x0e45('0x9'));var _=require(_0x0e45('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0e45('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0e45('0xc'));var querystring=require(_0x0e45('0xd'));var Papa=require(_0x0e45('0xe'));var Redis=require(_0x0e45('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0e45('0x10'));var hardwareService=require(_0x0e45('0x11'));var logger=require(_0x0e45('0x12'))(_0x0e45('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0e45('0x14'));var db=require(_0x0e45('0x15'))['db'];function respondWithStatusCode(_0x299f1b,_0x89b199){_0x89b199=_0x89b199||0xcc;return function(_0x2185be){if(_0x2185be){return _0x299f1b['sendStatus'](_0x89b199);}return _0x299f1b['status'](_0x89b199)['end']();};}function respondWithResult(_0x178fe0,_0x20e8a3){_0x20e8a3=_0x20e8a3||0xc8;return function(_0x5b0b8d){if(_0x5b0b8d){return _0x178fe0[_0x0e45('0x16')](_0x20e8a3)[_0x0e45('0x17')](_0x5b0b8d);}};}function respondWithFilteredResult(_0x5b1427,_0x4c4099){return function(_0x430591){if(_0x430591){var _0x371902=typeof _0x4c4099[_0x0e45('0x18')]===_0x0e45('0x19')&&typeof _0x4c4099[_0x0e45('0x1a')]==='undefined';var _0x541271=_0x430591['count'];var _0x2f1c59=_0x371902?0x0:_0x4c4099[_0x0e45('0x18')];var _0x2a74cf=_0x371902?_0x430591[_0x0e45('0x1b')]:_0x4c4099[_0x0e45('0x18')]+_0x4c4099[_0x0e45('0x1a')];var _0x2e0f28;if(_0x2a74cf>=_0x541271){_0x2a74cf=_0x541271;_0x2e0f28=0xc8;}else{_0x2e0f28=0xce;}_0x5b1427[_0x0e45('0x16')](_0x2e0f28);return _0x5b1427[_0x0e45('0x1c')](_0x0e45('0x1d'),_0x2f1c59+'-'+_0x2a74cf+'/'+_0x541271)[_0x0e45('0x17')](_0x430591);}return null;};}function patchUpdates(_0x2a692e){return function(_0x3d2c33){try{jsonpatch[_0x0e45('0x1e')](_0x3d2c33,_0x2a692e,!![]);}catch(_0x4add3d){return BPromise[_0x0e45('0x1f')](_0x4add3d);}return _0x3d2c33[_0x0e45('0x20')]();};}function saveUpdates(_0x5d8e55,_0x28a0cc){return function(_0x2ac93d){if(_0x2ac93d){return _0x2ac93d['update'](_0x5d8e55)['then'](function(_0x1b2176){return _0x1b2176;});}return null;};}function removeEntity(_0x53907d,_0x40b25b){return function(_0x3b0504){if(_0x3b0504){return _0x3b0504[_0x0e45('0x21')]()[_0x0e45('0x22')](function(){var _0x4dfcda=_0x3b0504['get']({'plain':!![]});var _0xd918e5=_0x0e45('0x23');return db[_0x0e45('0x24')]['destroy']({'where':{'type':_0xd918e5,'resourceId':_0x4dfcda['id']}})[_0x0e45('0x22')](function(){return _0x3b0504;});})[_0x0e45('0x22')](function(){_0x53907d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c478a,_0x21a433){return function(_0x4d1e79){if(!_0x4d1e79){_0x4c478a[_0x0e45('0x25')](0x194);}return _0x4d1e79;};}function handleError(_0x59414b,_0x41d869){_0x41d869=_0x41d869||0x1f4;return function(_0x29dadd){logger['error'](_0x29dadd[_0x0e45('0x26')]);if(_0x29dadd[_0x0e45('0x27')]){delete _0x29dadd['name'];}_0x59414b[_0x0e45('0x16')](_0x41d869)[_0x0e45('0x28')](_0x29dadd);};}exports[_0x0e45('0x29')]=function(_0xc5b652,_0x57618a){var _0x30bca3={},_0x4bc4a5={},_0x4aeef9={'count':0x0,'rows':[]};var _0x4f3069=_[_0x0e45('0x2a')](db[_0x0e45('0x2b')]['rawAttributes'],function(_0x2d4556){return{'name':_0x2d4556[_0x0e45('0x2c')],'type':_0x2d4556['type'][_0x0e45('0x2d')]};});_0x4bc4a5[_0x0e45('0x2e')]=_[_0x0e45('0x2a')](_0x4f3069,_0x0e45('0x27'));_0x4bc4a5[_0x0e45('0x2f')]=_[_0x0e45('0x30')](_0xc5b652[_0x0e45('0x2f')]);_0x4bc4a5[_0x0e45('0x31')]=_[_0x0e45('0x32')](_0x4bc4a5[_0x0e45('0x2e')],_0x4bc4a5[_0x0e45('0x2f')]);_0x30bca3[_0x0e45('0x33')]=_[_0x0e45('0x32')](_0x4bc4a5[_0x0e45('0x2e')],qs[_0x0e45('0x34')](_0xc5b652[_0x0e45('0x2f')][_0x0e45('0x34')]));_0x30bca3[_0x0e45('0x33')]=_0x30bca3[_0x0e45('0x33')][_0x0e45('0x35')]?_0x30bca3[_0x0e45('0x33')]:_0x4bc4a5['model'];if(!_0xc5b652[_0x0e45('0x2f')][_0x0e45('0x36')](_0x0e45('0x37'))){_0x30bca3[_0x0e45('0x1a')]=qs[_0x0e45('0x1a')](_0xc5b652[_0x0e45('0x2f')][_0x0e45('0x1a')]);_0x30bca3['offset']=qs[_0x0e45('0x18')](_0xc5b652[_0x0e45('0x2f')][_0x0e45('0x18')]);}_0x30bca3[_0x0e45('0x38')]=qs['sort'](_0xc5b652[_0x0e45('0x2f')]['sort']);delete _0xc5b652[_0x0e45('0x2f')]['sort'];_0x30bca3[_0x0e45('0x39')]=qs[_0x0e45('0x31')](_[_0x0e45('0x3a')](_0xc5b652[_0x0e45('0x2f')],_0x4bc4a5[_0x0e45('0x31')]),_0x4f3069);if(_0xc5b652[_0x0e45('0x2f')][_0x0e45('0x3b')]){_0x30bca3[_0x0e45('0x39')]=_['merge'](_0x30bca3[_0x0e45('0x39')],{'$or':_[_0x0e45('0x2a')](_0x4f3069,function(_0x4e4bd2){if(_0x4e4bd2[_0x0e45('0x3c')]!=='VIRTUAL'){var _0x38bf50={};_0x38bf50[_0x4e4bd2['name']]={'$like':'%'+_0xc5b652[_0x0e45('0x2f')][_0x0e45('0x3b')]+'%'};return _0x38bf50;}})});}_0x30bca3=_[_0x0e45('0x3d')]({},_0x30bca3,_0xc5b652[_0x0e45('0x3e')]);var _0x1c265c={'where':_0x30bca3[_0x0e45('0x39')]};return db['VoiceMusicOnHold'][_0x0e45('0x1b')](_0x1c265c)[_0x0e45('0x22')](function(_0x2fd259){_0x4aeef9['count']=_0x2fd259;if(_0xc5b652[_0x0e45('0x2f')][_0x0e45('0x3f')]){_0x30bca3[_0x0e45('0x40')]=[{'all':!![]}];}return db[_0x0e45('0x2b')]['findAll'](_0x30bca3);})[_0x0e45('0x22')](function(_0x54a025){_0x4aeef9['rows']=_0x54a025;return _0x4aeef9;})['then'](respondWithFilteredResult(_0x57618a,_0x30bca3))[_0x0e45('0x41')](handleError(_0x57618a,null));};exports['show']=function(_0x1e73b4,_0x5a988e){var _0x4a30a1={'raw':![],'where':{'id':_0x1e73b4['params']['id']}},_0x47b469={};_0x47b469[_0x0e45('0x2e')]=_[_0x0e45('0x30')](db[_0x0e45('0x2b')][_0x0e45('0x42')]);_0x47b469[_0x0e45('0x2f')]=_['keys'](_0x1e73b4[_0x0e45('0x2f')]);_0x47b469[_0x0e45('0x31')]=_[_0x0e45('0x32')](_0x47b469[_0x0e45('0x2e')],_0x47b469['query']);_0x4a30a1[_0x0e45('0x33')]=_[_0x0e45('0x32')](_0x47b469[_0x0e45('0x2e')],qs[_0x0e45('0x34')](_0x1e73b4[_0x0e45('0x2f')][_0x0e45('0x34')]));_0x4a30a1['attributes']=_0x4a30a1[_0x0e45('0x33')][_0x0e45('0x35')]?_0x4a30a1[_0x0e45('0x33')]:_0x47b469[_0x0e45('0x2e')];if(_0x1e73b4['query'][_0x0e45('0x3f')]){_0x4a30a1[_0x0e45('0x40')]=[{'all':!![]}];}_0x4a30a1=_[_0x0e45('0x3d')]({},_0x4a30a1,_0x1e73b4['options']);return db[_0x0e45('0x2b')][_0x0e45('0x43')](_0x4a30a1)['then'](handleEntityNotFound(_0x5a988e,null))[_0x0e45('0x22')](respondWithResult(_0x5a988e,null))[_0x0e45('0x41')](handleError(_0x5a988e,null));};exports[_0x0e45('0x44')]=function(_0x26b59f,_0x11dac4){if(_0x26b59f[_0x0e45('0x45')]['id']){delete _0x26b59f[_0x0e45('0x45')]['id'];}return db[_0x0e45('0x2b')]['find']({'where':{'id':_0x26b59f[_0x0e45('0x46')]['id']}})[_0x0e45('0x22')](handleEntityNotFound(_0x11dac4,null))[_0x0e45('0x22')](saveUpdates(_0x26b59f[_0x0e45('0x45')],null))['then'](respondWithResult(_0x11dac4,null))[_0x0e45('0x41')](handleError(_0x11dac4,null));};exports[_0x0e45('0x47')]=function(_0x302bbb,_0x27d29b,_0x10c6da){return db['sequelize'][_0x0e45('0x48')](function(_0x2261f2){if(_0x302bbb[_0x0e45('0x45')][_0x0e45('0x49')]===_0x0e45('0x4a')){_0x302bbb['body'][_0x0e45('0x4b')]=path[_0x0e45('0x4c')](config[_0x0e45('0x4d')],_0x0e45('0x4e'),_0x302bbb[_0x0e45('0x45')][_0x0e45('0x27')]);}return db['VoiceMusicOnHold'][_0x0e45('0x47')](_0x302bbb[_0x0e45('0x45')],{'transaction':_0x2261f2})['then'](function(_0x1c5a9c){if(_0x302bbb[_0x0e45('0x45')][_0x0e45('0x49')]===_0x0e45('0x4a')){fs['mkdirSync'](_0x1c5a9c[_0x0e45('0x4b')],parseInt('0777',0x8));}var _0x2e19ee=_0x302bbb[_0x0e45('0x4f')][_0x0e45('0x50')]({'plain':!![]});if(!_0x2e19ee)throw new Error(_0x0e45('0x51'));if(_0x2e19ee[_0x0e45('0x52')]==='user'){var _0x38826f=_0x1c5a9c[_0x0e45('0x50')]({'plain':!![]});return db[_0x0e45('0x53')][_0x0e45('0x43')]({'where':{'name':_0x0e45('0x23'),'userProfileId':_0x2e19ee[_0x0e45('0x54')]},'raw':!![]})['then'](function(_0x1e5bef){if(_0x1e5bef&&_0x1e5bef['autoAssociation']===0x0){return db[_0x0e45('0x24')][_0x0e45('0x47')]({'name':_0x38826f[_0x0e45('0x27')],'resourceId':_0x38826f['id'],'type':_0x1e5bef[_0x0e45('0x27')],'sectionId':_0x1e5bef['id']},{})['then'](function(){return _0x1c5a9c;});}else{return _0x1c5a9c;}})[_0x0e45('0x41')](function(_0x49f1b8){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x49f1b8);});}return _0x1c5a9c;});})[_0x0e45('0x22')](respondWithResult(_0x27d29b,0xc9))[_0x0e45('0x41')](handleError(_0x27d29b,null));};exports[_0x0e45('0x21')]=function(_0x37fc68,_0xc73986,_0x341665){var _0x1dfea9;return db[_0x0e45('0x2b')]['find']({'where':{'id':_0x37fc68[_0x0e45('0x46')]['id']}})[_0x0e45('0x22')](function(_0x54ac1e){if(_0x54ac1e){return db['sequelize']['transaction'](function(_0x210550){return _0x54ac1e['destroy']({'transaction':_0x210550,'raw':!![]})['then'](function(_0x31fd5e){if(_0x31fd5e['directory']){fs[_0x0e45('0x55')](_0x31fd5e[_0x0e45('0x4b')])['forEach'](function(_0x480d76){fs[_0x0e45('0x56')](path[_0x0e45('0x4c')](_0x31fd5e[_0x0e45('0x4b')],_0x480d76));});fs[_0x0e45('0x57')](_0x31fd5e[_0x0e45('0x4b')]);}return _0x31fd5e;});})[_0x0e45('0x41')](function(_0x85564e){throw new db[(_0x0e45('0x58'))][(_0x0e45('0x59'))](_0x85564e[_0x0e45('0x5a')]);});}})['then'](handleEntityNotFound(_0xc73986,null))[_0x0e45('0x22')](removeEntity(_0xc73986,null))[_0x0e45('0x41')](handleError(_0xc73986,null));};exports[_0x0e45('0x5b')]=function(_0x1572c7,_0x416a5b,_0x13e632){return db[_0x0e45('0x5c')][_0x0e45('0x48')](function(_0x32cafc){var _0x5e0f40;return db[_0x0e45('0x2b')][_0x0e45('0x43')]({'where':{'id':_0x1572c7['params']['id']}})[_0x0e45('0x22')](function(_0x8b80a6){if(_0x8b80a6){_0x5e0f40=_0x8b80a6;return _0x8b80a6['addSound'](_0x1572c7[_0x0e45('0x45')]['id'],{'transaction':_0x32cafc});}})[_0x0e45('0x22')](function(_0x4654f4){if(_0x4654f4){return db[_0x0e45('0x5d')][_0x0e45('0x5e')]({'where':{'id':_0x1572c7['body']['id']},'attributes':['id',_0x0e45('0x27'),_0x0e45('0x5f'),_0x0e45('0x60'),'createdAt'],'raw':!![]});}})['then'](function(_0x38a37e){if(_0x38a37e){var _0x35a80a=path[_0x0e45('0x4c')](config['root'],'server/files/sounds/converted',util['format'](_0x0e45('0x61'),path[_0x0e45('0x62')](_0x38a37e[_0x0e45('0x5f')],path['extname'](_0x38a37e[_0x0e45('0x5f')])),_0x38a37e['converted_format']));var _0x250e7b=path['join'](config['root'],_0x0e45('0x4e'),_0x5e0f40['name'],util['format']('%s.%s',_0x38a37e[_0x0e45('0x27')],_0x38a37e['converted_format']));fs['symlinkSync'](_0x35a80a,_0x250e7b);return _0x38a37e;}})['catch'](function(_0x972e0e){throw new db[(_0x0e45('0x58'))][(_0x0e45('0x59'))](_0x972e0e[_0x0e45('0x5a')]);});})[_0x0e45('0x22')](handleEntityNotFound(_0x416a5b,null))[_0x0e45('0x22')](respondWithResult(_0x416a5b,0xc9))[_0x0e45('0x41')](handleError(_0x416a5b,null));};exports[_0x0e45('0x63')]=function(_0x28817b,_0x2b4653,_0x118121){return db['sequelize']['transaction'](function(_0x581486){var _0x25fdf7;return db[_0x0e45('0x2b')][_0x0e45('0x5e')]({'where':{'id':_0x28817b[_0x0e45('0x46')]['id']}})['then'](handleEntityNotFound(_0x2b4653,null))[_0x0e45('0x22')](function(_0x2ba10d){if(_0x2ba10d){_0x25fdf7=_0x2ba10d;return _0x2ba10d['removeSound'](_0x28817b[_0x0e45('0x46')][_0x0e45('0x64')]);}})[_0x0e45('0x22')](function(_0x192e76){if(_0x192e76){return db[_0x0e45('0x5d')]['findOne']({'where':{'id':_0x28817b[_0x0e45('0x46')][_0x0e45('0x64')]},'attributes':['id',_0x0e45('0x27'),_0x0e45('0x5f'),'converted_format',_0x0e45('0x65')],'raw':!![]});}})[_0x0e45('0x22')](function(_0x5ec9b7){if(_0x5ec9b7){fs[_0x0e45('0x56')](path[_0x0e45('0x4c')](_0x25fdf7[_0x0e45('0x4b')],util['format'](_0x0e45('0x61'),_0x5ec9b7[_0x0e45('0x27')],_0x5ec9b7[_0x0e45('0x60')])));return _0x5ec9b7;}})['catch'](function(_0x1bde18){throw new db[(_0x0e45('0x58'))]['ValidationError'](_0x1bde18[_0x0e45('0x5a')]);});})['then'](handleEntityNotFound(_0x2b4653,null))[_0x0e45('0x22')](respondWithStatusCode(_0x2b4653,0xcc))['catch'](handleError(_0x2b4653,null));};exports[_0x0e45('0x66')]=function(_0x5a5c04,_0x48b8b5,_0xea561d){var _0x226d59={};var _0x2b8062={};var _0xe4ff23;var _0x2e2ab6;return db[_0x0e45('0x2b')][_0x0e45('0x5e')]({'where':{'id':_0x5a5c04['params']['id']}})['then'](handleEntityNotFound(_0x48b8b5,null))[_0x0e45('0x22')](function(_0x13b744){if(_0x13b744){_0xe4ff23=_0x13b744;_0x2b8062[_0x0e45('0x2e')]=_['keys'](db['Sound']['rawAttributes']);_0x2b8062[_0x0e45('0x2f')]=_[_0x0e45('0x30')](_0x5a5c04[_0x0e45('0x2f')]);_0x2b8062[_0x0e45('0x31')]=_[_0x0e45('0x32')](_0x2b8062['model'],_0x2b8062['query']);_0x226d59[_0x0e45('0x33')]=_[_0x0e45('0x32')](_0x2b8062[_0x0e45('0x2e')],qs[_0x0e45('0x34')](_0x5a5c04[_0x0e45('0x2f')]['fields']));_0x226d59['attributes']=_0x226d59[_0x0e45('0x33')][_0x0e45('0x35')]?_0x226d59[_0x0e45('0x33')]:_0x2b8062[_0x0e45('0x2e')];_0x226d59['order']=qs['sort'](_0x5a5c04[_0x0e45('0x2f')]['sort']);_0x226d59[_0x0e45('0x39')]=qs['filters'](_[_0x0e45('0x3a')](_0x5a5c04[_0x0e45('0x2f')],_0x2b8062[_0x0e45('0x31')]));if(_0x5a5c04[_0x0e45('0x2f')][_0x0e45('0x3b')]){_0x226d59['where']=_[_0x0e45('0x3d')](_0x226d59['where'],{'$or':_[_0x0e45('0x2a')](_0x226d59[_0x0e45('0x33')],function(_0x3d1234){var _0x430db4={};_0x430db4[_0x3d1234]={'$like':'%'+_0x5a5c04[_0x0e45('0x2f')][_0x0e45('0x3b')]+'%'};return _0x430db4;})});}_0x226d59=_[_0x0e45('0x3d')]({},_0x226d59,_0x5a5c04['options']);return _0xe4ff23[_0x0e45('0x66')](_0x226d59);}})['then'](function(_0x697e24){if(_0x697e24){_0x2e2ab6=_0x697e24[_0x0e45('0x35')];if(!_0x5a5c04[_0x0e45('0x2f')][_0x0e45('0x36')]('nolimit')){_0x226d59[_0x0e45('0x1a')]=qs[_0x0e45('0x1a')](_0x5a5c04[_0x0e45('0x2f')][_0x0e45('0x1a')]);_0x226d59[_0x0e45('0x18')]=qs[_0x0e45('0x18')](_0x5a5c04[_0x0e45('0x2f')]['offset']);}return _0xe4ff23[_0x0e45('0x66')](_0x226d59);}})[_0x0e45('0x22')](function(_0x1ada3a){if(_0x1ada3a){return _0x1ada3a?{'count':_0x2e2ab6,'rows':_0x1ada3a}:null;}})[_0x0e45('0x22')](respondWithResult(_0x48b8b5,null))[_0x0e45('0x41')](handleError(_0x48b8b5,null));};
\ No newline at end of file
index bb8ca2d..ce2cba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf30=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','define','VoiceMusicOnHold','voice_musiconhold','lodash','util'];(function(_0x1a0600,_0x41feef){var _0x734670=function(_0x2da4e4){while(--_0x2da4e4){_0x1a0600['push'](_0x1a0600['shift']());}};_0x734670(++_0x41feef);}(_0xcf30,0x102));var _0x0cf3=function(_0x48b14e,_0x57e63f){_0x48b14e=_0x48b14e-0x0;var _0x4f1ffb=_0xcf30[_0x48b14e];return _0x4f1ffb;};'use strict';var _=require(_0x0cf3('0x0'));var util=require(_0x0cf3('0x1'));var logger=require(_0x0cf3('0x2'))(_0x0cf3('0x3'));var moment=require('moment');var BPromise=require(_0x0cf3('0x4'));var rp=require(_0x0cf3('0x5'));var fs=require('fs');var path=require(_0x0cf3('0x6'));var rimraf=require(_0x0cf3('0x7'));var config=require(_0x0cf3('0x8'));var attributes=require(_0x0cf3('0x9'));module['exports']=function(_0xad12b3,_0x2bbbbf){return _0xad12b3[_0x0cf3('0xa')](_0x0cf3('0xb'),attributes,{'tableName':_0x0cf3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x123c=['voice_musiconhold','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceMusicOnHold'];(function(_0xcf30dc,_0x4e8a0d){var _0x450089=function(_0xb342c6){while(--_0xb342c6){_0xcf30dc['push'](_0xcf30dc['shift']());}};_0x450089(++_0x4e8a0d);}(_0x123c,0x127));var _0xc123=function(_0x41aa8b,_0x55f5c9){_0x41aa8b=_0x41aa8b-0x0;var _0x1ebf7c=_0x123c[_0x41aa8b];return _0x1ebf7c;};'use strict';var _=require(_0xc123('0x0'));var util=require(_0xc123('0x1'));var logger=require(_0xc123('0x2'))(_0xc123('0x3'));var moment=require(_0xc123('0x4'));var BPromise=require(_0xc123('0x5'));var rp=require(_0xc123('0x6'));var fs=require('fs');var path=require(_0xc123('0x7'));var rimraf=require(_0xc123('0x8'));var config=require(_0xc123('0x9'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xc123('0xa')]=function(_0x268687,_0x48bc44){return _0x268687[_0xc123('0xb')](_0xc123('0xc'),attributes,{'tableName':_0xc123('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 162d7a0..cde02d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x2963a7,_0x1472c9){var _0x20a494=function(_0xaa8003){while(--_0xaa8003){_0x2963a7['push'](_0x2963a7['shift']());}};_0x20a494(++_0x1472c9);}(_0x34e8,0x12c));var _0x834e=function(_0x4b3b73,_0x469cc9){_0x4b3b73=_0x4b3b73-0x0;var _0x439291=_0x34e8[_0x4b3b73];return _0x439291;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
+var _0x70e0=['code','VoiceMusicOnHold,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x16f49c,_0x52b156){var _0x52ed0a=function(_0x40f5b6){while(--_0x40f5b6){_0x16f49c['push'](_0x16f49c['shift']());}};_0x52ed0a(++_0x52b156);}(_0x70e0,0x17b));var _0x070e=function(_0x1d22da,_0x47a555){_0x1d22da=_0x1d22da-0x0;var _0x39cc92=_0x70e0[_0x1d22da];return _0x39cc92;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index c4b3fe5..03519a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc01b=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','show','/:id/users','getAgents','/:id/teams','getTeams','post','addTeams','put','/:id','update','delete','destroy','removeAgents','removeTeams'];(function(_0x354cf0,_0x5f3201){var _0x1ef41a=function(_0x398529){while(--_0x398529){_0x354cf0['push'](_0x354cf0['shift']());}};_0x1ef41a(++_0x5f3201);}(_0xc01b,0x74));var _0xbc01=function(_0x4cc9d4,_0x240bee){_0x4cc9d4=_0x4cc9d4-0x0;var _0x44871d=_0xc01b[_0x4cc9d4];return _0x44871d;};'use strict';var multer=require(_0xbc01('0x0'));var util=require(_0xbc01('0x1'));var path=require(_0xbc01('0x2'));var timeout=require(_0xbc01('0x3'));var express=require(_0xbc01('0x4'));var router=express[_0xbc01('0x5')]();var fs_extra=require(_0xbc01('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xbc01('0x7'));var config=require(_0xbc01('0x8'));var controller=require(_0xbc01('0x9'));router[_0xbc01('0xa')]('/',auth[_0xbc01('0xb')](),controller[_0xbc01('0xc')]);router[_0xbc01('0xa')](_0xbc01('0xd'),auth[_0xbc01('0xb')](),controller[_0xbc01('0xe')]);router[_0xbc01('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xbc01('0xf')]);router[_0xbc01('0xa')](_0xbc01('0x10'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x11')]);router[_0xbc01('0xa')](_0xbc01('0x12'),auth['isAuthenticated'](),controller[_0xbc01('0x13')]);router[_0xbc01('0x14')]('/',auth[_0xbc01('0xb')](),controller['create']);router[_0xbc01('0x14')](_0xbc01('0x10'),auth[_0xbc01('0xb')](),controller['addAgents']);router['post']('/:id/teams',auth[_0xbc01('0xb')](),controller[_0xbc01('0x15')]);router[_0xbc01('0x16')](_0xbc01('0x17'),auth['isAuthenticated'](),controller[_0xbc01('0x18')]);router[_0xbc01('0x19')](_0xbc01('0x17'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x1a')]);router[_0xbc01('0x19')](_0xbc01('0x10'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x1b')]);router[_0xbc01('0x19')](_0xbc01('0x12'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x4853=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','show','/:id/users','getAgents','/:id/teams','post','addAgents','/:id','update','delete','removeAgents','util'];(function(_0x2a5d87,_0x51899d){var _0x1d7450=function(_0x3c1f0a){while(--_0x3c1f0a){_0x2a5d87['push'](_0x2a5d87['shift']());}};_0x1d7450(++_0x51899d);}(_0x4853,0x11d));var _0x3485=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4853[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0x3485('0x0'));var path=require('path');var timeout=require(_0x3485('0x1'));var express=require(_0x3485('0x2'));var router=express[_0x3485('0x3')]();var fs_extra=require(_0x3485('0x4'));var auth=require(_0x3485('0x5'));var interaction=require(_0x3485('0x6'));var config=require('../../config/environment');var controller=require('./voicePrefix.controller');router['get']('/',auth[_0x3485('0x7')](),controller[_0x3485('0x8')]);router[_0x3485('0x9')](_0x3485('0xa'),auth[_0x3485('0x7')](),controller[_0x3485('0xb')]);router[_0x3485('0x9')]('/:id',auth[_0x3485('0x7')](),controller[_0x3485('0xc')]);router[_0x3485('0x9')](_0x3485('0xd'),auth[_0x3485('0x7')](),controller[_0x3485('0xe')]);router[_0x3485('0x9')](_0x3485('0xf'),auth[_0x3485('0x7')](),controller['getTeams']);router[_0x3485('0x10')]('/',auth[_0x3485('0x7')](),controller['create']);router['post'](_0x3485('0xd'),auth[_0x3485('0x7')](),controller[_0x3485('0x11')]);router['post']('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router['put'](_0x3485('0x12'),auth[_0x3485('0x7')](),controller[_0x3485('0x13')]);router['delete'](_0x3485('0x12'),auth['isAuthenticated'](),controller['destroy']);router[_0x3485('0x14')]('/:id/users',auth[_0x3485('0x7')](),controller[_0x3485('0x15')]);router[_0x3485('0x14')](_0x3485('0xf'),auth['isAuthenticated'](),controller['removeTeams']);module['exports']=router;
\ No newline at end of file
index 5dbad1a..d051029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a8=['exports','STRING','VIRTUAL','system-','getDataValue','name','INTEGER','sequelize'];(function(_0x81ae4c,_0x46f493){var _0x54de8a=function(_0xb562dd){while(--_0xb562dd){_0x81ae4c['push'](_0x81ae4c['shift']());}};_0x54de8a(++_0x46f493);}(_0x84a8,0x1a7));var _0x884a=function(_0x581249,_0x483f03){_0x581249=_0x581249-0x0;var _0x284bae=_0x84a8[_0x581249];return _0x284bae;};'use strict';var Sequelize=require(_0x884a('0x0'));module[_0x884a('0x1')]={'name':{'type':Sequelize[_0x884a('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x884a('0x3')],'get':function(_0x3f41f1){return _0x884a('0x4')+this[_0x884a('0x5')](_0x884a('0x6'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x884a('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x884a('0x7')]}};
\ No newline at end of file
+var _0x078e=['sequelize','exports','name','VIRTUAL','system-','STRING'];(function(_0x5a1eb8,_0x13e6a0){var _0x483150=function(_0x4766d5){while(--_0x4766d5){_0x5a1eb8['push'](_0x5a1eb8['shift']());}};_0x483150(++_0x13e6a0);}(_0x078e,0xf6));var _0xe078=function(_0x4792cd,_0x36e65d){_0x4792cd=_0x4792cd-0x0;var _0x4720a5=_0x078e[_0x4792cd];return _0x4720a5;};'use strict';var Sequelize=require(_0xe078('0x0'));module[_0xe078('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe078('0x2')},'prefix':{'type':Sequelize[_0xe078('0x3')],'get':function(_0x137de0){return _0xe078('0x4')+this['getDataValue'](_0xe078('0x2'))+'-';}},'description':{'type':Sequelize[_0xe078('0x5')]},'callerIdAll':{'type':Sequelize[_0xe078('0x5')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index e510ada..8363386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8952=['rawAttributes','fieldName','type','map','keys','filters','intersection','query','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','rows','catch','params','find','describe','create','sequelize','transaction','body','get','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','context','from-sip','exten','system','Voice\x20Prefix\x20Extension','prefix','Voice\x20Prefix','VoicePrefixId','push','Set','CDR(prefix)=','callerIdAll','NoOp','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','findById','addAgents','ids','omit','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','Team','findAll','Agents','online','interface','addTeams','each','TeamVoicePrefix','upsert','UserVoicePrefix','forEach','select','field','from','team_has_voice_prefixes','join','user_has_teams','VoicePrefixId\x20=\x20?','every','includes','all','union','compact','value','removeTeams','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','VoicePrefixes','error','stack','name','send','index','VoicePrefix'];(function(_0x2b948f,_0x398e62){var _0x1237bc=function(_0x3c1843){while(--_0x3c1843){_0x2b948f['push'](_0x2b948f['shift']());}};_0x1237bc(++_0x398e62);}(_0x8952,0x17e));var _0x2895=function(_0x449b4c,_0x2f0678){_0x449b4c=_0x449b4c-0x0;var _0x586280=_0x8952[_0x449b4c];return _0x586280;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2895('0x0'));var zipdir=require(_0x2895('0x1'));var jsonpatch=require(_0x2895('0x2'));var rp=require(_0x2895('0x3'));var moment=require(_0x2895('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2895('0x5'));var util=require(_0x2895('0x6'));var path=require(_0x2895('0x7'));var sox=require('sox');var csv=require(_0x2895('0x8'));var ejs=require(_0x2895('0x9'));var fs=require('fs');var fs_extra=require(_0x2895('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2895('0xb'));var jsforce=require(_0x2895('0xc'));var deskjs=require(_0x2895('0xd'));var toCsv=require(_0x2895('0x8'));var querystring=require(_0x2895('0xe'));var Papa=require('papaparse');var Redis=require(_0x2895('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2895('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2895('0x11'));var utils=require(_0x2895('0x12'));var config=require(_0x2895('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2895('0x14'))['db'];config[_0x2895('0x15')]=_['defaults'](config[_0x2895('0x15')],{'host':_0x2895('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2895('0x17'))[_0x2895('0x18')](socket);function respondWithStatusCode(_0x5777a0,_0x2198c3){_0x2198c3=_0x2198c3||0xcc;return function(_0xd8192e){if(_0xd8192e){return _0x5777a0[_0x2895('0x19')](_0x2198c3);}return _0x5777a0[_0x2895('0x1a')](_0x2198c3)[_0x2895('0x1b')]();};}function respondWithResult(_0x2627e6,_0x6a5c7e){_0x6a5c7e=_0x6a5c7e||0xc8;return function(_0x31bb7f){if(_0x31bb7f){return _0x2627e6[_0x2895('0x1a')](_0x6a5c7e)[_0x2895('0x1c')](_0x31bb7f);}};}function respondWithFilteredResult(_0x10a1bf,_0x183b05){return function(_0xbf8b63){if(_0xbf8b63){var _0x2cb505=typeof _0x183b05[_0x2895('0x1d')]===_0x2895('0x1e')&&typeof _0x183b05[_0x2895('0x1f')]===_0x2895('0x1e');var _0x5a8eab=_0xbf8b63['count'];var _0x493851=_0x2cb505?0x0:_0x183b05[_0x2895('0x1d')];var _0x12c2fb=_0x2cb505?_0xbf8b63[_0x2895('0x20')]:_0x183b05['offset']+_0x183b05[_0x2895('0x1f')];var _0x190b79;if(_0x12c2fb>=_0x5a8eab){_0x12c2fb=_0x5a8eab;_0x190b79=0xc8;}else{_0x190b79=0xce;}_0x10a1bf[_0x2895('0x1a')](_0x190b79);return _0x10a1bf[_0x2895('0x21')](_0x2895('0x22'),_0x493851+'-'+_0x12c2fb+'/'+_0x5a8eab)['json'](_0xbf8b63);}return null;};}function patchUpdates(_0x30c6c3){return function(_0x5e93a4){try{jsonpatch['apply'](_0x5e93a4,_0x30c6c3,!![]);}catch(_0x142e58){return BPromise[_0x2895('0x23')](_0x142e58);}return _0x5e93a4[_0x2895('0x24')]();};}function saveUpdates(_0x511286,_0x4e884f){return function(_0x3a72fa){if(_0x3a72fa){return _0x3a72fa[_0x2895('0x25')](_0x511286)[_0x2895('0x26')](function(_0x4a21cf){return _0x4a21cf;});}return null;};}function removeEntity(_0x3d3320,_0x3690ce){return function(_0x480604){if(_0x480604){return _0x480604[_0x2895('0x27')]()[_0x2895('0x26')](function(){var _0x2cd4df=_0x480604['get']({'plain':!![]});var _0x320661=_0x2895('0x28');return db['UserProfileResource'][_0x2895('0x27')]({'where':{'type':_0x320661,'resourceId':_0x2cd4df['id']}})['then'](function(){return _0x480604;});})['then'](function(){_0x3d3320[_0x2895('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfa4f85,_0x381538){return function(_0x4fdd94){if(!_0x4fdd94){_0xfa4f85['sendStatus'](0x194);}return _0x4fdd94;};}function handleError(_0x32db49,_0x30dc2f){_0x30dc2f=_0x30dc2f||0x1f4;return function(_0x190e07){logger[_0x2895('0x29')](_0x190e07[_0x2895('0x2a')]);if(_0x190e07[_0x2895('0x2b')]){delete _0x190e07[_0x2895('0x2b')];}_0x32db49['status'](_0x30dc2f)[_0x2895('0x2c')](_0x190e07);};}exports[_0x2895('0x2d')]=function(_0x3625ba,_0x5546eb){var _0x1e9c13={},_0x458a55={},_0x31ab90={'count':0x0,'rows':[]};var _0x35a2e8=_['map'](db[_0x2895('0x2e')][_0x2895('0x2f')],function(_0x4765c9){return{'name':_0x4765c9[_0x2895('0x30')],'type':_0x4765c9[_0x2895('0x31')]['key']};});_0x458a55['model']=_[_0x2895('0x32')](_0x35a2e8,_0x2895('0x2b'));_0x458a55['query']=_[_0x2895('0x33')](_0x3625ba['query']);_0x458a55[_0x2895('0x34')]=_[_0x2895('0x35')](_0x458a55['model'],_0x458a55[_0x2895('0x36')]);_0x1e9c13['attributes']=_[_0x2895('0x35')](_0x458a55['model'],qs['fields'](_0x3625ba[_0x2895('0x36')][_0x2895('0x37')]));_0x1e9c13[_0x2895('0x38')]=_0x1e9c13['attributes'][_0x2895('0x39')]?_0x1e9c13[_0x2895('0x38')]:_0x458a55[_0x2895('0x3a')];if(!_0x3625ba[_0x2895('0x36')][_0x2895('0x3b')](_0x2895('0x3c'))){_0x1e9c13[_0x2895('0x1f')]=qs[_0x2895('0x1f')](_0x3625ba[_0x2895('0x36')][_0x2895('0x1f')]);_0x1e9c13['offset']=qs[_0x2895('0x1d')](_0x3625ba[_0x2895('0x36')][_0x2895('0x1d')]);}_0x1e9c13[_0x2895('0x3d')]=qs[_0x2895('0x3e')](_0x3625ba[_0x2895('0x36')][_0x2895('0x3e')]);_0x1e9c13['where']=qs['filters'](_[_0x2895('0x3f')](_0x3625ba[_0x2895('0x36')],_0x458a55[_0x2895('0x34')]),_0x35a2e8);if(_0x3625ba[_0x2895('0x36')][_0x2895('0x40')]){_0x1e9c13[_0x2895('0x41')]=_['merge'](_0x1e9c13['where'],{'$or':_[_0x2895('0x32')](_0x35a2e8,function(_0x20208f){if(_0x20208f['type']!=='VIRTUAL'){var _0x2a0eaf={};_0x2a0eaf[_0x20208f[_0x2895('0x2b')]]={'$like':'%'+_0x3625ba[_0x2895('0x36')][_0x2895('0x40')]+'%'};return _0x2a0eaf;}})});}_0x1e9c13=_[_0x2895('0x42')]({},_0x1e9c13,_0x3625ba[_0x2895('0x43')]);var _0x5d4e23={'where':_0x1e9c13[_0x2895('0x41')]};return db[_0x2895('0x2e')][_0x2895('0x20')](_0x5d4e23)[_0x2895('0x26')](function(_0x4af6d6){_0x31ab90[_0x2895('0x20')]=_0x4af6d6;if(_0x3625ba[_0x2895('0x36')][_0x2895('0x44')]){_0x1e9c13[_0x2895('0x45')]=[{'all':!![]}];}return db['VoicePrefix']['findAll'](_0x1e9c13);})[_0x2895('0x26')](function(_0x19ce85){_0x31ab90[_0x2895('0x46')]=_0x19ce85;return _0x31ab90;})[_0x2895('0x26')](respondWithFilteredResult(_0x5546eb,_0x1e9c13))[_0x2895('0x47')](handleError(_0x5546eb,null));};exports['show']=function(_0x5bd425,_0x4b336c){var _0x28dd37={'raw':![],'where':{'id':_0x5bd425[_0x2895('0x48')]['id']}},_0x2130b2={};_0x2130b2[_0x2895('0x3a')]=_[_0x2895('0x33')](db[_0x2895('0x2e')]['rawAttributes']);_0x2130b2[_0x2895('0x36')]=_[_0x2895('0x33')](_0x5bd425[_0x2895('0x36')]);_0x2130b2[_0x2895('0x34')]=_[_0x2895('0x35')](_0x2130b2[_0x2895('0x3a')],_0x2130b2[_0x2895('0x36')]);_0x28dd37[_0x2895('0x38')]=_['intersection'](_0x2130b2[_0x2895('0x3a')],qs[_0x2895('0x37')](_0x5bd425[_0x2895('0x36')]['fields']));_0x28dd37[_0x2895('0x38')]=_0x28dd37[_0x2895('0x38')]['length']?_0x28dd37[_0x2895('0x38')]:_0x2130b2[_0x2895('0x3a')];if(_0x5bd425[_0x2895('0x36')][_0x2895('0x44')]){_0x28dd37[_0x2895('0x45')]=[{'all':!![]}];}_0x28dd37=_[_0x2895('0x42')]({},_0x28dd37,_0x5bd425[_0x2895('0x43')]);return db['VoicePrefix'][_0x2895('0x49')](_0x28dd37)[_0x2895('0x26')](handleEntityNotFound(_0x4b336c,null))['then'](respondWithResult(_0x4b336c,null))['catch'](handleError(_0x4b336c,null));};exports['destroy']=function(_0x212a1f,_0xe552b6){return db[_0x2895('0x2e')][_0x2895('0x49')]({'where':{'id':_0x212a1f[_0x2895('0x48')]['id']}})[_0x2895('0x26')](handleEntityNotFound(_0xe552b6,null))[_0x2895('0x26')](removeEntity(_0xe552b6,null))[_0x2895('0x47')](handleError(_0xe552b6,null));};exports[_0x2895('0x4a')]=function(_0x3d043c,_0x45302c){return db[_0x2895('0x2e')][_0x2895('0x4a')]()[_0x2895('0x26')](respondWithResult(_0x45302c,null))[_0x2895('0x47')](handleError(_0x45302c,null));};exports[_0x2895('0x4b')]=function(_0x2116a6,_0x3e0fde){var _0xbcf98;return db[_0x2895('0x4c')][_0x2895('0x4d')](function(_0x90ed5d){return db[_0x2895('0x2e')][_0x2895('0x4b')](_0x2116a6[_0x2895('0x4e')],{'transaction':_0x90ed5d})[_0x2895('0x26')](function(_0x16ff3d){_0xbcf98=_0x16ff3d[_0x2895('0x4f')]({'plain':!![]});return db[_0x2895('0x50')][_0x2895('0x49')]({'where':{'id':_0xbcf98[_0x2895('0x51')]},'raw':!![]})['then'](function(_0xbc538a){return createVoicePrefixExtensions(_0xbcf98,_0xbc538a,_0x90ed5d);});});})[_0x2895('0x26')](function(){var _0x2bc573=_0x2116a6[_0x2895('0x52')][_0x2895('0x4f')]({'plain':!![]});if(!_0x2bc573)throw new Error(_0x2895('0x53'));if(_0x2bc573['role']===_0x2895('0x52')){var _0x5579b3=_0xbcf98;return db[_0x2895('0x54')][_0x2895('0x49')]({'where':{'name':_0x2895('0x28'),'userProfileId':_0x2bc573[_0x2895('0x55')]},'raw':!![]})[_0x2895('0x26')](function(_0x56a2c0){if(_0x56a2c0&&_0x56a2c0['autoAssociation']===0x0){return db[_0x2895('0x56')][_0x2895('0x4b')]({'name':_0x5579b3[_0x2895('0x2b')],'resourceId':_0x5579b3['id'],'type':_0x56a2c0['name'],'sectionId':_0x56a2c0['id']},{})[_0x2895('0x26')](function(){return _0xbcf98;});}else{return _0xbcf98;}})['catch'](function(_0x3c1f50){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3c1f50);throw _0x3c1f50;});}return _0xbcf98;})['then'](respondWithResult(_0x3e0fde,null))['catch'](handleError(_0x3e0fde,null));};function Extension(_0x36177d,_0x2ff725,_0x402e00,_0x4336c){this[_0x2895('0x57')]=_0x2895('0x58');this[_0x2895('0x59')]=_0x36177d;this['app']=_0x402e00;this[_0x2895('0x31')]=_0x2895('0x5a');this['description']=_0x2895('0x5b');this['priority']=_0x2ff725;this['appdata']=_0x4336c;}function createVoicePrefixExtensions(_0x2a9194,_0x14d7f9,_0x50299a){return new BPromise(function(_0xf5be,_0x3c5e32){var _0x35d979=new Extension(formatPrefixName(_0x2a9194[_0x2895('0x5c')]),0x1,'NoOp',_0x2895('0x5d'));_0x35d979['VoicePrefixId']=_0x2a9194['id'];return db[_0x2895('0x50')]['create'](_0x35d979,{'transaction':_0x50299a})['then'](function(_0x1af031){var _0x58f96a=_0x1af031[_0x2895('0x4f')]({'plain':!![]});var _0x39a28b=_[_0x2895('0x32')](addVoicePrefixExtensions(_0x2a9194,_0x14d7f9),function(_0x559ef3){_0x559ef3[_0x2895('0x51')]=_0x58f96a['id'];_0x559ef3[_0x2895('0x5e')]=_0x2a9194['id'];return _0x559ef3;});return db['VoiceExtension']['bulkCreate'](_0x39a28b,{'transaction':_0x50299a})[_0x2895('0x26')](function(_0x347445){if(!_0x347445){return _0x3c5e32('Extensions\x20creation\x20failed');}else{return _0xf5be(_0x347445);}})[_0x2895('0x47')](function(_0x53f9d8){return _0x3c5e32(_0x53f9d8);});});;});};function addVoicePrefixExtensions(_0x567520,_0x98b64d){var _0x3241cb=[];var _0x16b39c=formatPrefixName(_0x567520['prefix']);_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x2,_0x2895('0x60'),_0x2895('0x61')+_0x567520[_0x2895('0x2b')]));if(_0x567520[_0x2895('0x62')]){_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x3,_0x2895('0x60'),'PREFIX-CALLERIDALL='+_0x567520[_0x2895('0x62')]));}else{_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x3,_0x2895('0x63'),_0x2895('0x64')));}_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x4,_0x2895('0x65'),_0x98b64d[_0x2895('0x57')]+','+_0x2895('0x66')+(0x8+_0x567520['name'][_0x2895('0x39')])+'}'+','+0x1));return _0x3241cb;}function formatPrefixName(_0x354718){var _0x16f369='_';for(var _0x2288ff=0x0;_0x2288ff<_0x354718[_0x2895('0x39')];_0x2288ff++){if(_0x354718[_0x2895('0x67')](_0x2288ff)=='-'){_0x16f369+=_0x354718[_0x2895('0x67')](_0x2288ff);}else{_0x16f369+='['+_0x354718[_0x2895('0x67')](_0x2288ff)+']';}}_0x16f369+='.';return _0x16f369;}exports[_0x2895('0x25')]=function(_0x2862aa,_0x53a270,_0x477385){var _0x1a2045=_0x2862aa[_0x2895('0x4e')];_0x1a2045[_0x2895('0x5c')]=_0x2895('0x68')+_0x1a2045[_0x2895('0x2b')]+'-';return db[_0x2895('0x4c')][_0x2895('0x4d')](function(_0x203609){return db[_0x2895('0x2e')]['update'](_0x1a2045,{'where':{'id':_0x1a2045['id']},'transaction':_0x203609})[_0x2895('0x26')](function(){return db[_0x2895('0x50')][_0x2895('0x27')]({'where':{'VoicePrefixId':_0x1a2045['id']},'transaction':_0x203609})[_0x2895('0x26')](function(){return db[_0x2895('0x50')]['find']({'where':{'id':_0x1a2045[_0x2895('0x51')]},'raw':!![]})[_0x2895('0x26')](function(_0x4c569e){return createVoicePrefixExtensions(_0x1a2045,_0x4c569e,_0x203609);});});});})['then'](function(){return db['VoicePrefix'][_0x2895('0x69')](_0x1a2045['id']);})[_0x2895('0x26')](respondWithResult(_0x53a270,null))[_0x2895('0x47')](handleError(_0x53a270,null));};exports[_0x2895('0x6a')]=function(_0x31e21a,_0x48c014,_0x5e6a1f){return db[_0x2895('0x2e')]['find']({'where':{'id':_0x31e21a[_0x2895('0x48')]['id']}})['then'](handleEntityNotFound(_0x48c014,null))[_0x2895('0x26')](function(_0x3de634){if(_0x3de634){return _0x3de634['addAgents'](_0x31e21a[_0x2895('0x4e')][_0x2895('0x6b')],_[_0x2895('0x6c')](_0x31e21a[_0x2895('0x4e')],['ids','id'])||{})['spread'](function(_0x10ca0f){for(var _0x5dde20=0x0;_0x5dde20<_0x31e21a['body'][_0x2895('0x6b')][_0x2895('0x39')];_0x5dde20+=0x1){socket[_0x2895('0x6d')](_0x2895('0x6e'),{'UserId':Number(_0x31e21a['body'][_0x2895('0x6b')][_0x5dde20]),'VoicePrefixId':Number(_0x31e21a[_0x2895('0x48')]['id'])});}return _0x10ca0f;});}})[_0x2895('0x26')](respondWithResult(_0x48c014,null))[_0x2895('0x47')](handleError(_0x48c014,null));};exports[_0x2895('0x6f')]=function(_0x45e80c,_0x21d3dd,_0x3346c2){return db[_0x2895('0x2e')][_0x2895('0x49')]({'where':{'id':_0x45e80c[_0x2895('0x48')]['id']}})[_0x2895('0x26')](handleEntityNotFound(_0x21d3dd,null))['then'](function(_0x1a9c84){if(_0x1a9c84){return _0x1a9c84[_0x2895('0x6f')](_0x45e80c[_0x2895('0x36')]['ids'])[_0x2895('0x26')](function(){if(_[_0x2895('0x70')](_0x45e80c['query'][_0x2895('0x6b')])){for(var _0x1693b6=0x0;_0x1693b6<_0x45e80c[_0x2895('0x36')]['ids'][_0x2895('0x39')];_0x1693b6+=0x1){socket[_0x2895('0x6d')](_0x2895('0x71'),{'UserId':Number(_0x45e80c[_0x2895('0x36')]['ids'][_0x1693b6]),'VoicePrefixId':Number(_0x45e80c[_0x2895('0x48')]['id'])});}}else{socket[_0x2895('0x6d')](_0x2895('0x71'),{'UserId':Number(_0x45e80c['query'][_0x2895('0x6b')]),'VoicePrefixId':Number(_0x45e80c['params']['id'])});}});}})[_0x2895('0x26')](respondWithStatusCode(_0x21d3dd,null))[_0x2895('0x47')](handleError(_0x21d3dd,null));};exports[_0x2895('0x72')]=function(_0x253e07,_0x570dd9,_0x6eef86){var _0x46bbca={};var _0x413aa4={};var _0x5e892a;var _0x34898e;return db['VoicePrefix'][_0x2895('0x73')]({'where':{'id':_0x253e07[_0x2895('0x48')]['id']}})['then'](handleEntityNotFound(_0x570dd9,null))['then'](function(_0x3bd07c){if(_0x3bd07c){_0x5e892a=_0x3bd07c;_0x413aa4[_0x2895('0x3a')]=_['keys'](db[_0x2895('0x74')][_0x2895('0x2f')]);_0x413aa4['query']=_[_0x2895('0x33')](_0x253e07[_0x2895('0x36')]);_0x413aa4[_0x2895('0x34')]=_[_0x2895('0x35')](_0x413aa4[_0x2895('0x3a')],_0x413aa4['query']);_0x46bbca[_0x2895('0x38')]=_[_0x2895('0x35')](_0x413aa4[_0x2895('0x3a')],qs[_0x2895('0x37')](_0x253e07[_0x2895('0x36')]['fields']));_0x46bbca[_0x2895('0x38')]=_0x46bbca[_0x2895('0x38')][_0x2895('0x39')]?_0x46bbca[_0x2895('0x38')]:_0x413aa4['model'];_0x46bbca[_0x2895('0x3d')]=qs[_0x2895('0x3e')](_0x253e07[_0x2895('0x36')][_0x2895('0x3e')]);_0x46bbca['where']=qs[_0x2895('0x34')](_[_0x2895('0x3f')](_0x253e07[_0x2895('0x36')],_0x413aa4[_0x2895('0x34')]));if(_0x253e07[_0x2895('0x36')][_0x2895('0x40')]){_0x46bbca['where']=_[_0x2895('0x42')](_0x46bbca[_0x2895('0x41')],{'$or':_[_0x2895('0x32')](_0x46bbca['attributes'],function(_0x553af0){var _0x1ff21e={};_0x1ff21e[_0x553af0]={'$like':'%'+_0x253e07[_0x2895('0x36')][_0x2895('0x40')]+'%'};return _0x1ff21e;})});}_0x46bbca=_[_0x2895('0x42')]({},_0x46bbca,_0x253e07[_0x2895('0x43')]);return _0x5e892a['getAgents'](_0x46bbca);}})[_0x2895('0x26')](function(_0x837eef){if(_0x837eef){_0x34898e=_0x837eef[_0x2895('0x39')];if(!_0x253e07['query']['hasOwnProperty'](_0x2895('0x3c'))){_0x46bbca[_0x2895('0x1f')]=qs[_0x2895('0x1f')](_0x253e07['query'][_0x2895('0x1f')]);_0x46bbca[_0x2895('0x1d')]=qs[_0x2895('0x1d')](_0x253e07[_0x2895('0x36')]['offset']);}return _0x5e892a[_0x2895('0x72')](_0x46bbca);}})[_0x2895('0x26')](function(_0x71d436){if(_0x71d436){return _0x71d436?{'count':_0x34898e,'rows':_0x71d436}:null;}})[_0x2895('0x26')](respondWithResult(_0x570dd9,null))[_0x2895('0x47')](handleError(_0x570dd9,null));};exports[_0x2895('0x75')]=function(_0x3ae81f,_0x25f5c9,_0x2d6167){var _0x265c7a={};var _0x32baef={};var _0x3d2996;var _0x3d47d0;return db[_0x2895('0x2e')]['findOne']({'where':{'id':_0x3ae81f['params']['id']}})['then'](handleEntityNotFound(_0x25f5c9,null))['then'](function(_0x440fbf){if(_0x440fbf){_0x3d2996=_0x440fbf;_0x32baef[_0x2895('0x3a')]=_[_0x2895('0x33')](db[_0x2895('0x76')][_0x2895('0x2f')]);_0x32baef[_0x2895('0x36')]=_[_0x2895('0x33')](_0x3ae81f[_0x2895('0x36')]);_0x32baef[_0x2895('0x34')]=_[_0x2895('0x35')](_0x32baef[_0x2895('0x3a')],_0x32baef[_0x2895('0x36')]);_0x265c7a[_0x2895('0x38')]=_[_0x2895('0x35')](_0x32baef['model'],qs[_0x2895('0x37')](_0x3ae81f[_0x2895('0x36')][_0x2895('0x37')]));_0x265c7a['attributes']=_0x265c7a['attributes'][_0x2895('0x39')]?_0x265c7a[_0x2895('0x38')]:_0x32baef['model'];_0x265c7a[_0x2895('0x3d')]=qs['sort'](_0x3ae81f[_0x2895('0x36')][_0x2895('0x3e')]);_0x265c7a[_0x2895('0x41')]=qs[_0x2895('0x34')](_[_0x2895('0x3f')](_0x3ae81f[_0x2895('0x36')],_0x32baef[_0x2895('0x34')]));if(_0x3ae81f['query'][_0x2895('0x40')]){_0x265c7a[_0x2895('0x41')]=_['merge'](_0x265c7a[_0x2895('0x41')],{'$or':_[_0x2895('0x32')](_0x265c7a['attributes'],function(_0x1cf787){var _0x3c8ea2={};_0x3c8ea2[_0x1cf787]={'$like':'%'+_0x3ae81f[_0x2895('0x36')][_0x2895('0x40')]+'%'};return _0x3c8ea2;})});}_0x265c7a=_[_0x2895('0x42')]({},_0x265c7a,_0x3ae81f[_0x2895('0x43')]);return _0x3d2996[_0x2895('0x75')](_0x265c7a);}})[_0x2895('0x26')](function(_0xdbd16a){if(_0xdbd16a){_0x3d47d0=_0xdbd16a[_0x2895('0x39')];if(!_0x3ae81f[_0x2895('0x36')][_0x2895('0x3b')](_0x2895('0x3c'))){_0x265c7a[_0x2895('0x1f')]=qs['limit'](_0x3ae81f[_0x2895('0x36')][_0x2895('0x1f')]);_0x265c7a[_0x2895('0x1d')]=qs[_0x2895('0x1d')](_0x3ae81f[_0x2895('0x36')][_0x2895('0x1d')]);}return _0x3d2996[_0x2895('0x75')](_0x265c7a);}})['then'](function(_0x17055a){if(_0x17055a){return _0x17055a?{'count':_0x3d47d0,'rows':_0x17055a}:null;}})['then'](respondWithResult(_0x25f5c9,null))[_0x2895('0x47')](handleError(_0x25f5c9,null));};exports['addTeams']=function(_0x204af3,_0x3e2994,_0x1e85d9){var _0x53ccff=_0x204af3[_0x2895('0x4e')]['ids'];var _0x3f024f;return db[_0x2895('0x76')][_0x2895('0x77')]({'where':{'id':_0x53ccff},'attributes':['id'],'include':[{'model':db[_0x2895('0x74')],'as':_0x2895('0x78'),'attributes':['id',_0x2895('0x2b'),_0x2895('0x79'),'voicePause',_0x2895('0x7a')],'raw':!![]}]})[_0x2895('0x26')](function(_0x1b8f32){if(_0x1b8f32){_0x3f024f=_0x1b8f32;var _0x4b7c11=_['flatMap'](_0x1b8f32,function(_0x335da0){var _0x13e113=_0x335da0[_0x2895('0x4f')]({'plain':!![]});return _0x13e113['Agents'];});return db[_0x2895('0x2e')][_0x2895('0x49')]({'where':{'id':_0x204af3[_0x2895('0x48')]['id']}})[_0x2895('0x26')](function(_0x1dcc85){return db[_0x2895('0x4c')][_0x2895('0x4d')](function(_0x2d6109){return _0x1dcc85[_0x2895('0x7b')](_0x53ccff,{'transaction':_0x2d6109})[_0x2895('0x26')](function(){return BPromise[_0x2895('0x7c')](_0x3f024f,function(_0x16ec29){return db[_0x2895('0x7d')][_0x2895('0x7e')]({'TeamId':_0x16ec29['id'],'VoicePrefixId':_0x204af3[_0x2895('0x48')]['id']},{'transaction':_0x2d6109});});})[_0x2895('0x26')](function(){return BPromise[_0x2895('0x7c')](_0x4b7c11,function(_0x2c6df4){return db[_0x2895('0x7f')]['findOrCreate']({'where':{'UserId':_0x2c6df4['id'],'VoicePrefixId':_0x204af3['params']['id']},'transaction':_0x2d6109});});})[_0x2895('0x26')](function(){_0x4b7c11[_0x2895('0x80')](function(_0x366ca5){socket[_0x2895('0x6d')](_0x2895('0x6e'),{'UserId':_0x366ca5['id'],'VoicePrefixId':_0x1dcc85['id']});});});});});}})[_0x2895('0x26')](respondWithStatusCode(_0x3e2994,null))['catch'](handleError(_0x3e2994,null));};exports['removeTeams']=function(_0x51b96a,_0x40d48c,_0x4f0b85){return db[_0x2895('0x76')][_0x2895('0x77')]({'where':{'id':_0x51b96a[_0x2895('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x2895('0x74')],'as':_0x2895('0x78'),'attributes':['id'],'raw':!![]}]})[_0x2895('0x26')](handleEntityNotFound(_0x40d48c,null))['then'](function(_0x340cb7){var _0x2458f1=_[_0x2895('0x32')](_0x340cb7,'id');var _0x2e3651=[];var _0x2187ce=[];var _0x175202=squel[_0x2895('0x81')]();_0x175202[_0x2895('0x82')]('tq.TeamId')[_0x2895('0x83')](_0x2895('0x84'),'tq')[_0x2895('0x85')](_0x2895('0x86'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x2895('0x87'),_0x51b96a[_0x2895('0x48')]['id']);for(var _0x53eef2=0x0;_0x53eef2<_0x340cb7[_0x2895('0x39')];_0x53eef2+=0x1){let _0x1e2311=_0x340cb7[_0x53eef2];for(var _0x368a30=0x0;_0x368a30<_0x1e2311['Agents'][_0x2895('0x39')];_0x368a30+=0x1){let _0x2dd3d9=_0x1e2311[_0x2895('0x78')][_0x368a30];var _0x233136=_0x175202['clone']();_0x233136[_0x2895('0x41')]('ut.UserId\x20=\x20?',_0x2dd3d9['id']);_0x2187ce['push'](db['sequelize'][_0x2895('0x36')](_0x233136['toString'](),{'type':db['sequelize']['QueryTypes']['SELECT']})['then'](function(_0x2bbb3e){if(_0x2bbb3e[_0x2895('0x39')]===0x1){return _0x2dd3d9['id'];}else{var _0x25969b=_[_0x2895('0x88')](_['map'](_0x2bbb3e,'TeamId'),function(_0x5cc9fc){return _[_0x2895('0x89')](_0x2458f1,_0x5cc9fc);});if(_0x25969b){return _0x2dd3d9['id'];}}}));}}return BPromise[_0x2895('0x8a')](_0x2187ce)[_0x2895('0x26')](function(_0x2ccc9f){_0x2e3651=_(_0x2e3651)[_0x2895('0x8b')](_0x2ccc9f)[_0x2895('0x8c')]()[_0x2895('0x8d')]();return db[_0x2895('0x2e')]['find']({'where':{'id':_0x51b96a[_0x2895('0x48')]['id']}})[_0x2895('0x26')](function(_0x16f74a){return db['sequelize'][_0x2895('0x4d')](function(_0x5d05d3){return _0x16f74a[_0x2895('0x8e')](_0x51b96a[_0x2895('0x36')][_0x2895('0x6b')],{'transaction':_0x5d05d3})[_0x2895('0x26')](function(){if(!_['isEmpty'](_0x2e3651)){return _0x16f74a[_0x2895('0x6f')](_0x2e3651,{'transaction':_0x5d05d3});}})[_0x2895('0x26')](function(){_0x2e3651[_0x2895('0x80')](function(_0x3fb18a){socket[_0x2895('0x6d')]('userVoicePrefix:remove',{'UserId':_0x3fb18a,'VoicePrefixId':_0x16f74a['id']});});});});});});})[_0x2895('0x26')](respondWithStatusCode(_0x40d48c,null))[_0x2895('0x47')](handleError(_0x40d48c,null));};
\ No newline at end of file
+var _0x373d=['team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','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','redis','localhost','./voicePrefix.socket','register','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','describe','create','sequelize','transaction','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','description','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtension','VoiceExtensionId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','addAgents','omit','ids','spread','emit','removeAgents','userVoicePrefix:remove','getAgents','findOne','User','getTeams','Team','addTeams','Agents','online','voicePause','flatMap','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','userVoicePrefix:save','field','tq.TeamId','from'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x373d,0x1e2));var _0xd373=function(_0x237587,_0x5ca4cb){_0x237587=_0x237587-0x0;var _0x1ae730=_0x373d[_0x237587];return _0x1ae730;};'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'];config['redis']=_['defaults'](config[_0xd373('0x15')],{'host':_0xd373('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd373('0x15')]));require(_0xd373('0x17'))[_0xd373('0x18')](socket);function respondWithStatusCode(_0x23ed86,_0x28b2bf){_0x28b2bf=_0x28b2bf||0xcc;return function(_0x1a9df9){if(_0x1a9df9){return _0x23ed86[_0xd373('0x19')](_0x28b2bf);}return _0x23ed86[_0xd373('0x1a')](_0x28b2bf)[_0xd373('0x1b')]();};}function respondWithResult(_0x2c5854,_0x3a5316){_0x3a5316=_0x3a5316||0xc8;return function(_0x263ae3){if(_0x263ae3){return _0x2c5854[_0xd373('0x1a')](_0x3a5316)['json'](_0x263ae3);}};}function respondWithFilteredResult(_0x1e26cf,_0x5eab00){return function(_0x460259){if(_0x460259){var _0x36d47a=typeof _0x5eab00['offset']===_0xd373('0x1c')&&typeof _0x5eab00['limit']==='undefined';var _0x23fada=_0x460259[_0xd373('0x1d')];var _0x167597=_0x36d47a?0x0:_0x5eab00[_0xd373('0x1e')];var _0x16b147=_0x36d47a?_0x460259[_0xd373('0x1d')]:_0x5eab00['offset']+_0x5eab00[_0xd373('0x1f')];var _0xd808f8;if(_0x16b147>=_0x23fada){_0x16b147=_0x23fada;_0xd808f8=0xc8;}else{_0xd808f8=0xce;}_0x1e26cf[_0xd373('0x1a')](_0xd808f8);return _0x1e26cf[_0xd373('0x20')](_0xd373('0x21'),_0x167597+'-'+_0x16b147+'/'+_0x23fada)[_0xd373('0x22')](_0x460259);}return null;};}function patchUpdates(_0x4f64bd){return function(_0x355fca){try{jsonpatch[_0xd373('0x23')](_0x355fca,_0x4f64bd,!![]);}catch(_0x157f81){return BPromise[_0xd373('0x24')](_0x157f81);}return _0x355fca[_0xd373('0x25')]();};}function saveUpdates(_0x238ffd,_0x466a03){return function(_0x109e4c){if(_0x109e4c){return _0x109e4c[_0xd373('0x26')](_0x238ffd)[_0xd373('0x27')](function(_0x437110){return _0x437110;});}return null;};}function removeEntity(_0x34f05a,_0x388182){return function(_0x420a30){if(_0x420a30){return _0x420a30[_0xd373('0x28')]()[_0xd373('0x27')](function(){var _0x50b987=_0x420a30[_0xd373('0x29')]({'plain':!![]});var _0x3e657b=_0xd373('0x2a');return db[_0xd373('0x2b')][_0xd373('0x28')]({'where':{'type':_0x3e657b,'resourceId':_0x50b987['id']}})[_0xd373('0x27')](function(){return _0x420a30;});})[_0xd373('0x27')](function(){_0x34f05a[_0xd373('0x1a')](0xcc)[_0xd373('0x1b')]();});}};}function handleEntityNotFound(_0x158825,_0xbc420b){return function(_0x2ee37c){if(!_0x2ee37c){_0x158825[_0xd373('0x19')](0x194);}return _0x2ee37c;};}function handleError(_0x5287e7,_0x7ca56e){_0x7ca56e=_0x7ca56e||0x1f4;return function(_0x490842){logger['error'](_0x490842[_0xd373('0x2c')]);if(_0x490842[_0xd373('0x2d')]){delete _0x490842[_0xd373('0x2d')];}_0x5287e7[_0xd373('0x1a')](_0x7ca56e)[_0xd373('0x2e')](_0x490842);};}exports['index']=function(_0x6659f6,_0x104156){var _0x4e17c9={},_0x102c3a={},_0x8e4884={'count':0x0,'rows':[]};var _0x146e24=_[_0xd373('0x2f')](db[_0xd373('0x30')][_0xd373('0x31')],function(_0x364c01){return{'name':_0x364c01[_0xd373('0x32')],'type':_0x364c01[_0xd373('0x33')]['key']};});_0x102c3a[_0xd373('0x34')]=_[_0xd373('0x2f')](_0x146e24,_0xd373('0x2d'));_0x102c3a[_0xd373('0x35')]=_[_0xd373('0x36')](_0x6659f6[_0xd373('0x35')]);_0x102c3a[_0xd373('0x37')]=_[_0xd373('0x38')](_0x102c3a[_0xd373('0x34')],_0x102c3a[_0xd373('0x35')]);_0x4e17c9[_0xd373('0x39')]=_[_0xd373('0x38')](_0x102c3a[_0xd373('0x34')],qs[_0xd373('0x3a')](_0x6659f6[_0xd373('0x35')]['fields']));_0x4e17c9[_0xd373('0x39')]=_0x4e17c9[_0xd373('0x39')][_0xd373('0x3b')]?_0x4e17c9[_0xd373('0x39')]:_0x102c3a['model'];if(!_0x6659f6[_0xd373('0x35')][_0xd373('0x3c')](_0xd373('0x3d'))){_0x4e17c9[_0xd373('0x1f')]=qs[_0xd373('0x1f')](_0x6659f6[_0xd373('0x35')]['limit']);_0x4e17c9['offset']=qs[_0xd373('0x1e')](_0x6659f6['query'][_0xd373('0x1e')]);}_0x4e17c9[_0xd373('0x3e')]=qs[_0xd373('0x3f')](_0x6659f6['query'][_0xd373('0x3f')]);_0x4e17c9[_0xd373('0x40')]=qs[_0xd373('0x37')](_[_0xd373('0x41')](_0x6659f6['query'],_0x102c3a['filters']),_0x146e24);if(_0x6659f6['query'][_0xd373('0x42')]){_0x4e17c9['where']=_[_0xd373('0x43')](_0x4e17c9[_0xd373('0x40')],{'$or':_['map'](_0x146e24,function(_0x4e8734){if(_0x4e8734['type']!==_0xd373('0x44')){var _0x43a4b8={};_0x43a4b8[_0x4e8734[_0xd373('0x2d')]]={'$like':'%'+_0x6659f6['query']['filter']+'%'};return _0x43a4b8;}})});}_0x4e17c9=_[_0xd373('0x43')]({},_0x4e17c9,_0x6659f6[_0xd373('0x45')]);var _0x51efee={'where':_0x4e17c9[_0xd373('0x40')]};return db[_0xd373('0x30')][_0xd373('0x1d')](_0x51efee)[_0xd373('0x27')](function(_0x2d8c7d){_0x8e4884['count']=_0x2d8c7d;if(_0x6659f6['query'][_0xd373('0x46')]){_0x4e17c9[_0xd373('0x47')]=[{'all':!![]}];}return db[_0xd373('0x30')][_0xd373('0x48')](_0x4e17c9);})['then'](function(_0x29725c){_0x8e4884['rows']=_0x29725c;return _0x8e4884;})[_0xd373('0x27')](respondWithFilteredResult(_0x104156,_0x4e17c9))[_0xd373('0x49')](handleError(_0x104156,null));};exports[_0xd373('0x4a')]=function(_0xfb2922,_0x15cd1f){var _0x54afd4={'raw':![],'where':{'id':_0xfb2922[_0xd373('0x4b')]['id']}},_0x42744d={};_0x42744d['model']=_[_0xd373('0x36')](db[_0xd373('0x30')][_0xd373('0x31')]);_0x42744d[_0xd373('0x35')]=_[_0xd373('0x36')](_0xfb2922[_0xd373('0x35')]);_0x42744d[_0xd373('0x37')]=_[_0xd373('0x38')](_0x42744d[_0xd373('0x34')],_0x42744d[_0xd373('0x35')]);_0x54afd4['attributes']=_['intersection'](_0x42744d[_0xd373('0x34')],qs['fields'](_0xfb2922[_0xd373('0x35')]['fields']));_0x54afd4['attributes']=_0x54afd4['attributes'][_0xd373('0x3b')]?_0x54afd4[_0xd373('0x39')]:_0x42744d[_0xd373('0x34')];if(_0xfb2922[_0xd373('0x35')][_0xd373('0x46')]){_0x54afd4[_0xd373('0x47')]=[{'all':!![]}];}_0x54afd4=_[_0xd373('0x43')]({},_0x54afd4,_0xfb2922['options']);return db[_0xd373('0x30')]['find'](_0x54afd4)[_0xd373('0x27')](handleEntityNotFound(_0x15cd1f,null))[_0xd373('0x27')](respondWithResult(_0x15cd1f,null))['catch'](handleError(_0x15cd1f,null));};exports[_0xd373('0x28')]=function(_0x5ca39c,_0x46a582){return db[_0xd373('0x30')][_0xd373('0x4c')]({'where':{'id':_0x5ca39c[_0xd373('0x4b')]['id']}})[_0xd373('0x27')](handleEntityNotFound(_0x46a582,null))['then'](removeEntity(_0x46a582,null))['catch'](handleError(_0x46a582,null));};exports['describe']=function(_0x3a2192,_0x384e23){return db['VoicePrefix'][_0xd373('0x4d')]()[_0xd373('0x27')](respondWithResult(_0x384e23,null))['catch'](handleError(_0x384e23,null));};exports[_0xd373('0x4e')]=function(_0xb6b583,_0x102101){var _0x473af2;return db[_0xd373('0x4f')][_0xd373('0x50')](function(_0xc255ec){return db[_0xd373('0x30')][_0xd373('0x4e')](_0xb6b583[_0xd373('0x51')],{'transaction':_0xc255ec})[_0xd373('0x27')](function(_0x5b88ea){_0x473af2=_0x5b88ea['get']({'plain':!![]});return db['VoiceExtension']['find']({'where':{'id':_0x473af2['VoiceExtensionId']},'raw':!![]})['then'](function(_0x409246){return createVoicePrefixExtensions(_0x473af2,_0x409246,_0xc255ec);});});})[_0xd373('0x27')](function(){var _0x5b2ae9=_0xb6b583['user']['get']({'plain':!![]});if(!_0x5b2ae9)throw new Error(_0xd373('0x52'));if(_0x5b2ae9[_0xd373('0x53')]==='user'){var _0x52fa5b=_0x473af2;return db[_0xd373('0x54')][_0xd373('0x4c')]({'where':{'name':_0xd373('0x2a'),'userProfileId':_0x5b2ae9[_0xd373('0x55')]},'raw':!![]})[_0xd373('0x27')](function(_0x59da03){if(_0x59da03&&_0x59da03[_0xd373('0x56')]===0x0){return db[_0xd373('0x2b')][_0xd373('0x4e')]({'name':_0x52fa5b[_0xd373('0x2d')],'resourceId':_0x52fa5b['id'],'type':_0x59da03[_0xd373('0x2d')],'sectionId':_0x59da03['id']},{})[_0xd373('0x27')](function(){return _0x473af2;});}else{return _0x473af2;}})[_0xd373('0x49')](function(_0x2e4298){logger[_0xd373('0x57')](_0xd373('0x58'),_0x2e4298);throw _0x2e4298;});}return _0x473af2;})[_0xd373('0x27')](respondWithResult(_0x102101,null))[_0xd373('0x49')](handleError(_0x102101,null));};function Extension(_0x213b3c,_0x42e45d,_0x13f139,_0x4cb143){this[_0xd373('0x59')]=_0xd373('0x5a');this[_0xd373('0x5b')]=_0x213b3c;this['app']=_0x13f139;this[_0xd373('0x33')]='system';this[_0xd373('0x5c')]='Voice\x20Prefix\x20Extension';this[_0xd373('0x5d')]=_0x42e45d;this[_0xd373('0x5e')]=_0x4cb143;}function createVoicePrefixExtensions(_0x427f68,_0x19924a,_0x41c327){return new BPromise(function(_0x1ac620,_0xa47b76){var _0xaaf7fa=new Extension(formatPrefixName(_0x427f68[_0xd373('0x5f')]),0x1,_0xd373('0x60'),_0xd373('0x61'));_0xaaf7fa[_0xd373('0x62')]=_0x427f68['id'];return db[_0xd373('0x63')][_0xd373('0x4e')](_0xaaf7fa,{'transaction':_0x41c327})[_0xd373('0x27')](function(_0x2e7edb){var _0x1379e5=_0x2e7edb[_0xd373('0x29')]({'plain':!![]});var _0x209e76=_[_0xd373('0x2f')](addVoicePrefixExtensions(_0x427f68,_0x19924a),function(_0x295e09){_0x295e09[_0xd373('0x64')]=_0x1379e5['id'];_0x295e09[_0xd373('0x62')]=_0x427f68['id'];return _0x295e09;});return db[_0xd373('0x63')][_0xd373('0x65')](_0x209e76,{'transaction':_0x41c327})[_0xd373('0x27')](function(_0x547a8a){if(!_0x547a8a){return _0xa47b76(_0xd373('0x66'));}else{return _0x1ac620(_0x547a8a);}})[_0xd373('0x49')](function(_0x5fdc16){return _0xa47b76(_0x5fdc16);});});;});};function addVoicePrefixExtensions(_0x4a7d01,_0x38068a){var _0x2d9019=[];var _0x33320c=formatPrefixName(_0x4a7d01[_0xd373('0x5f')]);_0x2d9019[_0xd373('0x67')](new Extension(_0x33320c,0x2,_0xd373('0x68'),_0xd373('0x69')+_0x4a7d01['name']));if(_0x4a7d01[_0xd373('0x6a')]){_0x2d9019[_0xd373('0x67')](new Extension(_0x33320c,0x3,_0xd373('0x68'),_0xd373('0x6b')+_0x4a7d01[_0xd373('0x6a')]));}else{_0x2d9019[_0xd373('0x67')](new Extension(_0x33320c,0x3,_0xd373('0x60'),_0xd373('0x6c')));}_0x2d9019['push'](new Extension(_0x33320c,0x4,_0xd373('0x6d'),_0x38068a['context']+','+_0xd373('0x6e')+(0x8+_0x4a7d01[_0xd373('0x2d')][_0xd373('0x3b')])+'}'+','+0x1));return _0x2d9019;}function formatPrefixName(_0x2a9582){var _0x36e7cc='_';for(var _0x32c044=0x0;_0x32c044<_0x2a9582[_0xd373('0x3b')];_0x32c044++){if(_0x2a9582[_0xd373('0x6f')](_0x32c044)=='-'){_0x36e7cc+=_0x2a9582['charAt'](_0x32c044);}else{_0x36e7cc+='['+_0x2a9582[_0xd373('0x6f')](_0x32c044)+']';}}_0x36e7cc+='.';return _0x36e7cc;}exports['update']=function(_0x40f5ad,_0x27fcbe,_0x310a65){var _0x3ce679=_0x40f5ad[_0xd373('0x51')];_0x3ce679[_0xd373('0x5f')]=_0xd373('0x70')+_0x3ce679['name']+'-';return db[_0xd373('0x4f')][_0xd373('0x50')](function(_0x3d375d){return db['VoicePrefix'][_0xd373('0x26')](_0x3ce679,{'where':{'id':_0x3ce679['id']},'transaction':_0x3d375d})[_0xd373('0x27')](function(){return db[_0xd373('0x63')][_0xd373('0x28')]({'where':{'VoicePrefixId':_0x3ce679['id']},'transaction':_0x3d375d})[_0xd373('0x27')](function(){return db[_0xd373('0x63')][_0xd373('0x4c')]({'where':{'id':_0x3ce679[_0xd373('0x64')]},'raw':!![]})[_0xd373('0x27')](function(_0x727541){return createVoicePrefixExtensions(_0x3ce679,_0x727541,_0x3d375d);});});});})[_0xd373('0x27')](function(){return db[_0xd373('0x30')]['findById'](_0x3ce679['id']);})[_0xd373('0x27')](respondWithResult(_0x27fcbe,null))[_0xd373('0x49')](handleError(_0x27fcbe,null));};exports[_0xd373('0x71')]=function(_0x506f49,_0x377147,_0x365028){return db[_0xd373('0x30')]['find']({'where':{'id':_0x506f49[_0xd373('0x4b')]['id']}})['then'](handleEntityNotFound(_0x377147,null))[_0xd373('0x27')](function(_0x26821a){if(_0x26821a){return _0x26821a[_0xd373('0x71')](_0x506f49[_0xd373('0x51')]['ids'],_[_0xd373('0x72')](_0x506f49['body'],[_0xd373('0x73'),'id'])||{})[_0xd373('0x74')](function(_0x140ec4){for(var _0xb658db=0x0;_0xb658db<_0x506f49[_0xd373('0x51')][_0xd373('0x73')]['length'];_0xb658db+=0x1){socket[_0xd373('0x75')]('userVoicePrefix:save',{'UserId':Number(_0x506f49[_0xd373('0x51')]['ids'][_0xb658db]),'VoicePrefixId':Number(_0x506f49['params']['id'])});}return _0x140ec4;});}})[_0xd373('0x27')](respondWithResult(_0x377147,null))[_0xd373('0x49')](handleError(_0x377147,null));};exports[_0xd373('0x76')]=function(_0x32b739,_0x5a5651,_0x546a07){return db[_0xd373('0x30')][_0xd373('0x4c')]({'where':{'id':_0x32b739[_0xd373('0x4b')]['id']}})[_0xd373('0x27')](handleEntityNotFound(_0x5a5651,null))[_0xd373('0x27')](function(_0x1a30eb){if(_0x1a30eb){return _0x1a30eb[_0xd373('0x76')](_0x32b739[_0xd373('0x35')][_0xd373('0x73')])[_0xd373('0x27')](function(){if(_['isArray'](_0x32b739[_0xd373('0x35')][_0xd373('0x73')])){for(var _0x1576e5=0x0;_0x1576e5<_0x32b739[_0xd373('0x35')][_0xd373('0x73')][_0xd373('0x3b')];_0x1576e5+=0x1){socket[_0xd373('0x75')]('userVoicePrefix:remove',{'UserId':Number(_0x32b739[_0xd373('0x35')]['ids'][_0x1576e5]),'VoicePrefixId':Number(_0x32b739['params']['id'])});}}else{socket[_0xd373('0x75')](_0xd373('0x77'),{'UserId':Number(_0x32b739[_0xd373('0x35')][_0xd373('0x73')]),'VoicePrefixId':Number(_0x32b739[_0xd373('0x4b')]['id'])});}});}})[_0xd373('0x27')](respondWithStatusCode(_0x5a5651,null))['catch'](handleError(_0x5a5651,null));};exports[_0xd373('0x78')]=function(_0x19eb94,_0x6114a5,_0x52ab87){var _0x467ac8={};var _0x2c543a={};var _0x1a5666;var _0x47ae4c;return db[_0xd373('0x30')][_0xd373('0x79')]({'where':{'id':_0x19eb94[_0xd373('0x4b')]['id']}})['then'](handleEntityNotFound(_0x6114a5,null))[_0xd373('0x27')](function(_0x288295){if(_0x288295){_0x1a5666=_0x288295;_0x2c543a[_0xd373('0x34')]=_[_0xd373('0x36')](db[_0xd373('0x7a')][_0xd373('0x31')]);_0x2c543a[_0xd373('0x35')]=_[_0xd373('0x36')](_0x19eb94[_0xd373('0x35')]);_0x2c543a[_0xd373('0x37')]=_[_0xd373('0x38')](_0x2c543a[_0xd373('0x34')],_0x2c543a[_0xd373('0x35')]);_0x467ac8['attributes']=_[_0xd373('0x38')](_0x2c543a[_0xd373('0x34')],qs[_0xd373('0x3a')](_0x19eb94['query'][_0xd373('0x3a')]));_0x467ac8[_0xd373('0x39')]=_0x467ac8['attributes'][_0xd373('0x3b')]?_0x467ac8['attributes']:_0x2c543a[_0xd373('0x34')];_0x467ac8[_0xd373('0x3e')]=qs[_0xd373('0x3f')](_0x19eb94[_0xd373('0x35')][_0xd373('0x3f')]);_0x467ac8[_0xd373('0x40')]=qs['filters'](_[_0xd373('0x41')](_0x19eb94['query'],_0x2c543a[_0xd373('0x37')]));if(_0x19eb94[_0xd373('0x35')][_0xd373('0x42')]){_0x467ac8[_0xd373('0x40')]=_[_0xd373('0x43')](_0x467ac8['where'],{'$or':_[_0xd373('0x2f')](_0x467ac8[_0xd373('0x39')],function(_0x232b78){var _0x12ffc0={};_0x12ffc0[_0x232b78]={'$like':'%'+_0x19eb94[_0xd373('0x35')][_0xd373('0x42')]+'%'};return _0x12ffc0;})});}_0x467ac8=_['merge']({},_0x467ac8,_0x19eb94[_0xd373('0x45')]);return _0x1a5666[_0xd373('0x78')](_0x467ac8);}})[_0xd373('0x27')](function(_0x4b32b6){if(_0x4b32b6){_0x47ae4c=_0x4b32b6[_0xd373('0x3b')];if(!_0x19eb94[_0xd373('0x35')]['hasOwnProperty'](_0xd373('0x3d'))){_0x467ac8['limit']=qs[_0xd373('0x1f')](_0x19eb94['query']['limit']);_0x467ac8[_0xd373('0x1e')]=qs[_0xd373('0x1e')](_0x19eb94[_0xd373('0x35')][_0xd373('0x1e')]);}return _0x1a5666[_0xd373('0x78')](_0x467ac8);}})['then'](function(_0x3ae4c8){if(_0x3ae4c8){return _0x3ae4c8?{'count':_0x47ae4c,'rows':_0x3ae4c8}:null;}})['then'](respondWithResult(_0x6114a5,null))[_0xd373('0x49')](handleError(_0x6114a5,null));};exports[_0xd373('0x7b')]=function(_0xc8f4e6,_0x5c951e,_0x113671){var _0x5621d8={};var _0x30549e={};var _0x633ba0;var _0xa854a2;return db[_0xd373('0x30')][_0xd373('0x79')]({'where':{'id':_0xc8f4e6['params']['id']}})[_0xd373('0x27')](handleEntityNotFound(_0x5c951e,null))[_0xd373('0x27')](function(_0x39327f){if(_0x39327f){_0x633ba0=_0x39327f;_0x30549e[_0xd373('0x34')]=_[_0xd373('0x36')](db[_0xd373('0x7c')][_0xd373('0x31')]);_0x30549e['query']=_[_0xd373('0x36')](_0xc8f4e6[_0xd373('0x35')]);_0x30549e[_0xd373('0x37')]=_[_0xd373('0x38')](_0x30549e[_0xd373('0x34')],_0x30549e[_0xd373('0x35')]);_0x5621d8[_0xd373('0x39')]=_[_0xd373('0x38')](_0x30549e[_0xd373('0x34')],qs[_0xd373('0x3a')](_0xc8f4e6[_0xd373('0x35')][_0xd373('0x3a')]));_0x5621d8[_0xd373('0x39')]=_0x5621d8[_0xd373('0x39')][_0xd373('0x3b')]?_0x5621d8[_0xd373('0x39')]:_0x30549e[_0xd373('0x34')];_0x5621d8['order']=qs[_0xd373('0x3f')](_0xc8f4e6[_0xd373('0x35')]['sort']);_0x5621d8['where']=qs[_0xd373('0x37')](_[_0xd373('0x41')](_0xc8f4e6['query'],_0x30549e[_0xd373('0x37')]));if(_0xc8f4e6[_0xd373('0x35')][_0xd373('0x42')]){_0x5621d8[_0xd373('0x40')]=_[_0xd373('0x43')](_0x5621d8[_0xd373('0x40')],{'$or':_[_0xd373('0x2f')](_0x5621d8[_0xd373('0x39')],function(_0x3cc904){var _0x6e6c7e={};_0x6e6c7e[_0x3cc904]={'$like':'%'+_0xc8f4e6[_0xd373('0x35')]['filter']+'%'};return _0x6e6c7e;})});}_0x5621d8=_['merge']({},_0x5621d8,_0xc8f4e6[_0xd373('0x45')]);return _0x633ba0[_0xd373('0x7b')](_0x5621d8);}})['then'](function(_0x3785b7){if(_0x3785b7){_0xa854a2=_0x3785b7[_0xd373('0x3b')];if(!_0xc8f4e6[_0xd373('0x35')][_0xd373('0x3c')](_0xd373('0x3d'))){_0x5621d8[_0xd373('0x1f')]=qs['limit'](_0xc8f4e6[_0xd373('0x35')][_0xd373('0x1f')]);_0x5621d8[_0xd373('0x1e')]=qs['offset'](_0xc8f4e6[_0xd373('0x35')][_0xd373('0x1e')]);}return _0x633ba0[_0xd373('0x7b')](_0x5621d8);}})['then'](function(_0x6463cd){if(_0x6463cd){return _0x6463cd?{'count':_0xa854a2,'rows':_0x6463cd}:null;}})[_0xd373('0x27')](respondWithResult(_0x5c951e,null))['catch'](handleError(_0x5c951e,null));};exports[_0xd373('0x7d')]=function(_0x2da0cd,_0x48624a,_0x316348){var _0x48ee3b=_0x2da0cd[_0xd373('0x51')][_0xd373('0x73')];var _0x3b6ba5;return db['Team']['findAll']({'where':{'id':_0x48ee3b},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd373('0x7e'),'attributes':['id','name',_0xd373('0x7f'),_0xd373('0x80'),'interface'],'raw':!![]}]})[_0xd373('0x27')](function(_0x5be460){if(_0x5be460){_0x3b6ba5=_0x5be460;var _0x449d06=_[_0xd373('0x81')](_0x5be460,function(_0x15eb3d){var _0x1031eb=_0x15eb3d[_0xd373('0x29')]({'plain':!![]});return _0x1031eb[_0xd373('0x7e')];});return db['VoicePrefix'][_0xd373('0x4c')]({'where':{'id':_0x2da0cd['params']['id']}})[_0xd373('0x27')](function(_0x41faec){return db[_0xd373('0x4f')][_0xd373('0x50')](function(_0x39606d){return _0x41faec[_0xd373('0x7d')](_0x48ee3b,{'transaction':_0x39606d})['then'](function(){return BPromise[_0xd373('0x82')](_0x3b6ba5,function(_0x424a53){return db[_0xd373('0x83')]['upsert']({'TeamId':_0x424a53['id'],'VoicePrefixId':_0x2da0cd[_0xd373('0x4b')]['id']},{'transaction':_0x39606d});});})[_0xd373('0x27')](function(){return BPromise[_0xd373('0x82')](_0x449d06,function(_0x2f1dc0){return db[_0xd373('0x84')][_0xd373('0x85')]({'where':{'UserId':_0x2f1dc0['id'],'VoicePrefixId':_0x2da0cd['params']['id']},'transaction':_0x39606d});});})[_0xd373('0x27')](function(){_0x449d06['forEach'](function(_0x447ea9){socket[_0xd373('0x75')](_0xd373('0x86'),{'UserId':_0x447ea9['id'],'VoicePrefixId':_0x41faec['id']});});});});});}})[_0xd373('0x27')](respondWithStatusCode(_0x48624a,null))['catch'](handleError(_0x48624a,null));};exports['removeTeams']=function(_0x22e0bd,_0x44fbef,_0x3c9e20){return db[_0xd373('0x7c')][_0xd373('0x48')]({'where':{'id':_0x22e0bd[_0xd373('0x35')]['ids']},'attributes':['id'],'include':[{'model':db[_0xd373('0x7a')],'as':_0xd373('0x7e'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x44fbef,null))[_0xd373('0x27')](function(_0x2225b2){var _0x2d5326=_['map'](_0x2225b2,'id');var _0x259610=[];var _0x747622=[];var _0x5233a2=squel['select']();_0x5233a2[_0xd373('0x87')](_0xd373('0x88'))[_0xd373('0x89')](_0xd373('0x8a'),'tq')[_0xd373('0x8b')](_0xd373('0x8c'),'ut',_0xd373('0x8d'))['where'](_0xd373('0x8e'),_0x22e0bd[_0xd373('0x4b')]['id']);for(var _0x11e4a9=0x0;_0x11e4a9<_0x2225b2[_0xd373('0x3b')];_0x11e4a9+=0x1){let _0x7b49b6=_0x2225b2[_0x11e4a9];for(var _0x4d9ab3=0x0;_0x4d9ab3<_0x7b49b6[_0xd373('0x7e')][_0xd373('0x3b')];_0x4d9ab3+=0x1){let _0x4c924d=_0x7b49b6[_0xd373('0x7e')][_0x4d9ab3];var _0x494de8=_0x5233a2[_0xd373('0x8f')]();_0x494de8[_0xd373('0x40')](_0xd373('0x90'),_0x4c924d['id']);_0x747622[_0xd373('0x67')](db[_0xd373('0x4f')][_0xd373('0x35')](_0x494de8[_0xd373('0x91')](),{'type':db[_0xd373('0x4f')]['QueryTypes'][_0xd373('0x92')]})[_0xd373('0x27')](function(_0x13b085){if(_0x13b085[_0xd373('0x3b')]===0x1){return _0x4c924d['id'];}else{var _0x392bd2=_[_0xd373('0x93')](_['map'](_0x13b085,_0xd373('0x94')),function(_0x10ac87){return _[_0xd373('0x95')](_0x2d5326,_0x10ac87);});if(_0x392bd2){return _0x4c924d['id'];}}}));}}return BPromise[_0xd373('0x96')](_0x747622)[_0xd373('0x27')](function(_0x20fa2e){_0x259610=_(_0x259610)[_0xd373('0x97')](_0x20fa2e)[_0xd373('0x98')]()[_0xd373('0x99')]();return db['VoicePrefix'][_0xd373('0x4c')]({'where':{'id':_0x22e0bd[_0xd373('0x4b')]['id']}})[_0xd373('0x27')](function(_0x536c81){return db[_0xd373('0x4f')]['transaction'](function(_0x4ca4f9){return _0x536c81[_0xd373('0x9a')](_0x22e0bd['query'][_0xd373('0x73')],{'transaction':_0x4ca4f9})['then'](function(){if(!_['isEmpty'](_0x259610)){return _0x536c81['removeAgents'](_0x259610,{'transaction':_0x4ca4f9});}})['then'](function(){_0x259610['forEach'](function(_0x1de658){socket[_0xd373('0x75')](_0xd373('0x77'),{'UserId':_0x1de658,'VoicePrefixId':_0x536c81['id']});});});});});});})[_0xd373('0x27')](respondWithStatusCode(_0x44fbef,null))['catch'](handleError(_0x44fbef,null));};
\ No newline at end of file
index 23fdf7c..0b28864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef4=['hook','VoicePrefix','setMaxListeners','save','update','remove','emit'];(function(_0x29e4f0,_0x1199ff){var _0x435aa7=function(_0x3088d7){while(--_0x3088d7){_0x29e4f0['push'](_0x29e4f0['shift']());}};_0x435aa7(++_0x1199ff);}(_0xdef4,0x17b));var _0x4def=function(_0x3dea7d,_0x2cd4ea){_0x3dea7d=_0x3dea7d-0x0;var _0x53919a=_0xdef4[_0x3dea7d];return _0x53919a;};'use strict';var EventEmitter=require('events');var VoicePrefix=require('../../mysqldb')['db'][_0x4def('0x0')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4def('0x1')](0x0);var events={'afterCreate':_0x4def('0x2'),'afterUpdate':_0x4def('0x3'),'afterDestroy':_0x4def('0x4')};function emitEvent(_0x2ac5b2){return function(_0xa3889c,_0x3d3979,_0x32ab4d){VoicePrefixEvents['emit'](_0x2ac5b2+':'+_0xa3889c['id'],_0xa3889c);VoicePrefixEvents[_0x4def('0x5')](_0x2ac5b2,_0xa3889c);_0x32ab4d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x4def('0x6')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0x2104=['hasOwnProperty','hook','exports','events','VoicePrefix','setMaxListeners','save','update','remove','emit'];(function(_0x1ff261,_0x3a4a63){var _0x54fb32=function(_0x26a50b){while(--_0x26a50b){_0x1ff261['push'](_0x1ff261['shift']());}};_0x54fb32(++_0x3a4a63);}(_0x2104,0x1bb));var _0x4210=function(_0xe7281f,_0x2d77c3){_0xe7281f=_0xe7281f-0x0;var _0x90dc99=_0x2104[_0xe7281f];return _0x90dc99;};'use strict';var EventEmitter=require(_0x4210('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0x4210('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4210('0x2')](0x0);var events={'afterCreate':_0x4210('0x3'),'afterUpdate':_0x4210('0x4'),'afterDestroy':_0x4210('0x5')};function emitEvent(_0x307070){return function(_0xc4ca36,_0x8d835e,_0x72b6d4){VoicePrefixEvents[_0x4210('0x6')](_0x307070+':'+_0xc4ca36['id'],_0xc4ca36);VoicePrefixEvents[_0x4210('0x6')](_0x307070,_0xc4ca36);_0x72b6d4(null);};}for(var e in events){if(events[_0x4210('0x7')](e)){var event=events[e];VoicePrefix[_0x4210('0x8')](e,emitEvent(event));}}module[_0x4210('0x9')]=VoicePrefixEvents;
\ No newline at end of file
index 6dd3a0d..dd68aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4f0=['rimraf','./voicePrefix.attributes','exports','define','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x3e2167,_0x28fdbe){var _0x592f32=function(_0x6c3172){while(--_0x6c3172){_0x3e2167['push'](_0x3e2167['shift']());}};_0x592f32(++_0x28fdbe);}(_0xb4f0,0xd5));var _0x0b4f=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0xb4f0[_0x4a3898];return _0x25ceb0;};'use strict';var _=require(_0x0b4f('0x0'));var util=require(_0x0b4f('0x1'));var logger=require(_0x0b4f('0x2'))(_0x0b4f('0x3'));var moment=require('moment');var BPromise=require(_0x0b4f('0x4'));var rp=require(_0x0b4f('0x5'));var fs=require('fs');var path=require(_0x0b4f('0x6'));var rimraf=require(_0x0b4f('0x7'));var config=require('../../config/environment');var attributes=require(_0x0b4f('0x8'));module[_0x0b4f('0x9')]=function(_0x204521,_0x51177e){return _0x204521[_0x0b4f('0xa')]('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7649=['./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','moment','request-promise','path','rimraf','../../config/environment'];(function(_0xe55553,_0x3222b2){var _0x346308=function(_0x14e36f){while(--_0x14e36f){_0xe55553['push'](_0xe55553['shift']());}};_0x346308(++_0x3222b2);}(_0x7649,0x1b2));var _0x9764=function(_0x3262e7,_0xae980f){_0x3262e7=_0x3262e7-0x0;var _0x297196=_0x7649[_0x3262e7];return _0x297196;};'use strict';var _=require(_0x9764('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x9764('0x1'));var BPromise=require('bluebird');var rp=require(_0x9764('0x2'));var fs=require('fs');var path=require(_0x9764('0x3'));var rimraf=require(_0x9764('0x4'));var config=require(_0x9764('0x5'));var attributes=require(_0x9764('0x6'));module[_0x9764('0x7')]=function(_0x14e89c,_0x36cb12){return _0x14e89c[_0x9764('0x8')](_0x9764('0x9'),attributes,{'tableName':_0x9764('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0889f4..cb44c71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./voicePrefix.socket','register','then','info','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','VoicePrefix,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x315f3d,_0x593f5d){var _0x1dfd5e=function(_0x565fe7){while(--_0x565fe7){_0x315f3d['push'](_0x315f3d['shift']());}};_0x1dfd5e(++_0x593f5d);}(_0x9f0e,0x116));var _0xe9f0=function(_0x1665ea,_0xef41bc){_0x1665ea=_0x1665ea-0x0;var _0x153939=_0x9f0e[_0x1665ea];return _0x153939;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xe9f0('0xa')]=_[_0xe9f0('0xb')](config[_0xe9f0('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xe9f0('0xc'))(new Redis(config[_0xe9f0('0xa')]));require(_0xe9f0('0xd'))[_0xe9f0('0xe')](socket);function respondWithRpcPromise(_0xa523c0,_0x240932,_0x807322){return new BPromise(function(_0x3724f4,_0x6acfb){return client['request'](_0xa523c0,_0x807322)[_0xe9f0('0xf')](function(_0x329ecd){logger[_0xe9f0('0x10')]('VoicePrefix,\x20%s,\x20%s',_0x240932,_0xe9f0('0x11'));logger['debug'](_0xe9f0('0x12'),_0x240932,_0xe9f0('0x11'),JSON[_0xe9f0('0x13')](_0x329ecd));if(_0x329ecd[_0xe9f0('0x14')]){if(_0x329ecd['error'][_0xe9f0('0x15')]===0x1f4){logger['error'](_0xe9f0('0x16'),_0x240932,_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);return _0x6acfb(_0x329ecd['error'][_0xe9f0('0x17')]);}logger[_0xe9f0('0x14')](_0xe9f0('0x16'),_0x240932,_0x329ecd['error'][_0xe9f0('0x17')]);return _0x3724f4(_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);}else{logger[_0xe9f0('0x10')](_0xe9f0('0x16'),_0x240932,_0xe9f0('0x11'));_0x3724f4(_0x329ecd[_0xe9f0('0x18')]['message']);}})[_0xe9f0('0x19')](function(_0x19e090){logger[_0xe9f0('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x240932,_0x19e090);_0x6acfb(_0x19e090);});});}
\ No newline at end of file
+var _0x8b52=['http','redis','defaults','localhost','./voicePrefix.socket','register','request','then','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x22e47a,_0x4ea10c){var _0x15a12a=function(_0x4a097f){while(--_0x4a097f){_0x22e47a['push'](_0x22e47a['shift']());}};_0x15a12a(++_0x4ea10c);}(_0x8b52,0x151));var _0x28b5=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8b52[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x28b5('0x0'));var util=require(_0x28b5('0x1'));var moment=require(_0x28b5('0x2'));var BPromise=require('bluebird');var rs=require(_0x28b5('0x3'));var fs=require('fs');var Redis=require(_0x28b5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x28b5('0x5'));var logger=require(_0x28b5('0x6'))(_0x28b5('0x7'));var config=require(_0x28b5('0x8'));var jayson=require(_0x28b5('0x9'));var client=jayson[_0x28b5('0xa')][_0x28b5('0xb')]({'port':0x232a});config[_0x28b5('0xc')]=_[_0x28b5('0xd')](config['redis'],{'host':_0x28b5('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x28b5('0xf'))[_0x28b5('0x10')](socket);function respondWithRpcPromise(_0x4f2a41,_0xd8f394,_0x315ed6){return new BPromise(function(_0x4d3d4e,_0x10d2b5){return client[_0x28b5('0x11')](_0x4f2a41,_0x315ed6)[_0x28b5('0x12')](function(_0x6b22a8){logger['info'](_0x28b5('0x13'),_0xd8f394,'request\x20sent');logger[_0x28b5('0x14')](_0x28b5('0x15'),_0xd8f394,'request\x20sent',JSON[_0x28b5('0x16')](_0x6b22a8));if(_0x6b22a8['error']){if(_0x6b22a8[_0x28b5('0x17')]['code']===0x1f4){logger['error'](_0x28b5('0x13'),_0xd8f394,_0x6b22a8[_0x28b5('0x17')]['message']);return _0x10d2b5(_0x6b22a8[_0x28b5('0x17')][_0x28b5('0x18')]);}logger[_0x28b5('0x17')](_0x28b5('0x13'),_0xd8f394,_0x6b22a8[_0x28b5('0x17')]['message']);return _0x4d3d4e(_0x6b22a8[_0x28b5('0x17')]['message']);}else{logger[_0x28b5('0x19')](_0x28b5('0x13'),_0xd8f394,_0x28b5('0x1a'));_0x4d3d4e(_0x6b22a8[_0x28b5('0x1b')]['message']);}})[_0x28b5('0x1c')](function(_0x1396cf){logger[_0x28b5('0x17')]('VoicePrefix,\x20%s,\x20%s',_0xd8f394,_0x1396cf);_0x10d2b5(_0x1396cf);});});}
\ No newline at end of file
index f8022c5..8f9b3be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0531=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0531,0xde));var _0x1053=function(_0x12c280,_0x51dd07){_0x12c280=_0x12c280-0x0;var _0x3638d3=_0x0531[_0x12c280];return _0x3638d3;};'use strict';var VoicePrefixEvents=require(_0x1053('0x0'));var events=[_0x1053('0x1'),'remove','update'];function createListener(_0x450b81,_0x48bca0){return function(_0x5ced96){_0x48bca0[_0x1053('0x2')](_0x450b81,_0x5ced96);};}function removeListener(_0x117b5a,_0x12d7ea){return function(){VoicePrefixEvents[_0x1053('0x3')](_0x117b5a,_0x12d7ea);};}exports[_0x1053('0x4')]=function(_0x5d8ce2){for(var _0x29e7cd=0x0,_0x3350a0=events[_0x1053('0x5')];_0x29e7cd<_0x3350a0;_0x29e7cd++){var _0x3d052e=events[_0x29e7cd];var _0x4f1877=createListener(_0x1053('0x6')+_0x3d052e,_0x5d8ce2);VoicePrefixEvents['on'](_0x3d052e,_0x4f1877);}};
\ No newline at end of file
+var _0x7382=['save','register','voicePrefix:'];(function(_0x282325,_0x225755){var _0x5e71e3=function(_0x283d60){while(--_0x283d60){_0x282325['push'](_0x282325['shift']());}};_0x5e71e3(++_0x225755);}(_0x7382,0x1f2));var _0x2738=function(_0x142fe0,_0x4452fb){_0x142fe0=_0x142fe0-0x0;var _0x800621=_0x7382[_0x142fe0];return _0x800621;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x2738('0x0'),'remove','update'];function createListener(_0x190aa6,_0x480143){return function(_0x250b3c){_0x480143['emit'](_0x190aa6,_0x250b3c);};}function removeListener(_0x402f25,_0x25ad1b){return function(){VoicePrefixEvents['removeListener'](_0x402f25,_0x25ad1b);};}exports[_0x2738('0x1')]=function(_0x267a1a){for(var _0x457c61=0x0,_0x1437b0=events['length'];_0x457c61<_0x1437b0;_0x457c61++){var _0x99e22e=events[_0x457c61];var _0x20a64f=createListener(_0x2738('0x2')+_0x99e22e,_0x267a1a);VoicePrefixEvents['on'](_0x99e22e,_0x20a64f);}};
\ No newline at end of file
index 072d3b3..6ab1d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x56eb70,_0x2bd75c){var _0x47f1fe=function(_0x1fbb17){while(--_0x1fbb17){_0x56eb70['push'](_0x56eb70['shift']());}};_0x47f1fe(++_0x2bd75c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
+var _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(_0x5807d4,_0x29306b){var _0x5ddf9b=function(_0x56476c){while(--_0x56476c){_0x5807d4['push'](_0x5807d4['shift']());}};_0x5ddf9b(++_0x29306b);}(_0xb10b,0x12a));var _0xbb10=function(_0x2486a4,_0x3e3650){_0x2486a4=_0x2486a4-0x0;var _0x14cf68=_0xb10b[_0x2486a4];return _0x14cf68;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
index d39d7ef..83faf21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b6=['Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','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\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','outbound','ENUM','leastrecent','fewestcalls','random','rrmemory','linear','setDataValue','strategy','getDataValue','inbound','booked','roundrobin','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','wrapuptime','Active/Disactive\x20Campaign','preview','progressive','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','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','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)'];(function(_0x12fcbd,_0x884804){var _0x28ec2a=function(_0xa5ff99){while(--_0xa5ff99){_0x12fcbd['push'](_0x12fcbd['shift']());}};_0x28ec2a(++_0x884804);}(_0x04b6,0x169));var _0x604b=function(_0x287a47,_0x2f731c){_0x287a47=_0x287a47-0x0;var _0x3fb726=_0x04b6[_0x287a47];return _0x3fb726;};'use strict';var Sequelize=require(_0x604b('0x0'));module[_0x604b('0x1')]={'name':{'type':Sequelize[_0x604b('0x2')],'allowNull':![],'unique':_0x604b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('inbound',_0x604b('0x4')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0x604b('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize[_0x604b('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x604b('0x5')]('rr','ringall',_0x604b('0x6'),_0x604b('0x7'),_0x604b('0x8'),_0x604b('0x9'),_0x604b('0xa'),'wrandom','rrordered'),'allowNull':![],'defaultValue':'ringall','set':function(_0x132587){this[_0x604b('0xb')](_0x604b('0xc'),_0x132587?_0x132587:_0x604b('0x9'));},'get':function(){var _0x2868aa=this[_0x604b('0xd')]('type');var _0x5b6050=this['getDataValue']('dialMethod');var _0x3795dd=this[_0x604b('0xd')]('strategy');if(_0x2868aa===_0x604b('0xe')){return _0x3795dd;}if(_0x5b6050===_0x604b('0xf')&&_0x3795dd===_0x604b('0x9')||_0x5b6050==='booked'&&_0x3795dd===_0x604b('0x10')){return _0x3795dd;}if(_0x5b6050==='progressive'||_0x5b6050===_0x604b('0x11')||_0x5b6050===_0x604b('0x12')){return _0x3795dd;}return null;}},'servicelevel':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x604b('0x13')](0xb)},'timeout':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x604b('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':_0x604b('0x14')},'autopause':{'type':Sequelize['ENUM']('yes','no',_0x604b('0x15')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x604b('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0x604b('0x5')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x604b('0x5')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x604b('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x604b('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no',_0x604b('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no')},'announce_position_limit':{'type':Sequelize[_0x604b('0x13')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x604b('0x5')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x604b('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x604b('0x2')]},'queue_youarenext':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x604b('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x604b('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x604b('0x2')]},'queue_less_than':{'type':Sequelize[_0x604b('0x2')]},'periodic_announce':{'type':Sequelize[_0x604b('0x17')],'set':function(_0x413d0c){this[_0x604b('0xb')](_0x604b('0x18'),_0x413d0c?_0x413d0c[_0x604b('0x19')](','):[]);},'get':function(){return this[_0x604b('0xd')](_0x604b('0x18'))?this[_0x604b('0xd')]('periodic_announce')[_0x604b('0x1a')](','):[];}},'joinempty':{'type':Sequelize['STRING'],'defaultValue':_0x604b('0x14'),'set':function(_0x1850e5){this[_0x604b('0xb')](_0x604b('0x1b'),_0x1850e5?_0x1850e5['join'](','):undefined);},'get':function(){return this[_0x604b('0xd')]('joinempty')?this[_0x604b('0xd')](_0x604b('0x1b'))[_0x604b('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x604b('0x2')],'defaultValue':'no','set':function(_0x122c2f){this[_0x604b('0xb')]('leavewhenempty',_0x122c2f?_0x122c2f['join'](','):undefined);},'get':function(){return this[_0x604b('0xd')](_0x604b('0x1c'))?this[_0x604b('0xd')]('leavewhenempty')['split'](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x604b('0x2')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':0x0,'set':function(_0x4583cc){this[_0x604b('0xb')]('acw',_0x4583cc);if(_0x4583cc){if(this[_0x604b('0xd')]('wrapuptime')<0x2){this[_0x604b('0xb')](_0x604b('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':0x0,'comment':_0x604b('0x1f')},'dialMethod':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x20'),_0x604b('0x21'),'power',_0x604b('0x11'),'booked'),'defaultValue':_0x604b('0x21'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0x604b('0x13')](0x4)[_0x604b('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x604b('0x23')},'dialLimitQueue':{'type':Sequelize[_0x604b('0x13')](0x4)[_0x604b('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x604b('0x24')},'dialPowerLevel':{'type':Sequelize[_0x604b('0x25')](0x2)[_0x604b('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM']('agentBusyFactor',_0x604b('0x26')),'defaultValue':'dropRate','comment':_0x604b('0x27')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x604b('0x25')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x604b('0x28')},'dialPredictiveInterval':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x604b('0x29')},'dialOriginateCallerIdName':{'type':Sequelize[_0x604b('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x604b('0x2a'),'comment':_0x604b('0x2b')},'dialQueueTimeout':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x2c')},'dialQueueProject':{'type':Sequelize[_0x604b('0x2')],'comment':_0x604b('0x2d')},'dialCongestionMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x604b('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x33')},'dialGlobalMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x604b('0x34')},'dialTimezone':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x604b('0x35')},'dialPrefix':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x36'),_0x604b('0x37'),'onlyIfOpen'),'defaultValue':_0x604b('0x36')},'dialAMDActive':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':0x0,'comment':_0x604b('0x38')},'dialAMDInitialSilence':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x604b('0x39')},'dialAMDGreeting':{'type':Sequelize[_0x604b('0x13')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x604b('0x3a')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x604b('0x3b')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x604b('0x3c')},'dialAMDMinWordLength':{'type':Sequelize[_0x604b('0x13')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x604b('0x3d')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x604b('0x3e')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x604b('0x3f')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x604b('0x13')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x604b('0x40')},'dialRecallMeTimeout':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x604b('0x41')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x604b('0x42')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x604b('0x43'),_0x604b('0x44')),'defaultValue':_0x604b('0x43')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0x604b('0x2d')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x604b('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x4a')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x604b('0x4f')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x604b('0x50'),'set':function(_0x57d04a){if(!_0x57d04a)this[_0x604b('0xb')](_0x604b('0x51'),null);this[_0x604b('0xb')]('mandatoryDisposition',_0x57d04a);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x604b('0x22')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9508=['#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','ASC','DESC','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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','STRING','name','ENUM','outbound','inbound','ringall','leastrecent','fewestcalls','random','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue','dialMethod','booked','roundrobin','progressive','power','INTEGER','yes','once','join','periodic_announce','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','preview','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','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\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'];(function(_0x33bcdb,_0x11846b){var _0x18a9bf=function(_0x34417a){while(--_0x34417a){_0x33bcdb['push'](_0x33bcdb['shift']());}};_0x18a9bf(++_0x11846b);}(_0x9508,0xf3));var _0x8950=function(_0x16fe50,_0x4711bc){_0x16fe50=_0x16fe50-0x0;var _0x5e2370=_0x9508[_0x16fe50];return _0x5e2370;};'use strict';var Sequelize=require(_0x8950('0x0'));module[_0x8950('0x1')]={'name':{'type':Sequelize[_0x8950('0x2')],'allowNull':![],'unique':_0x8950('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x8950('0x4')]('inbound',_0x8950('0x5')),'allowNull':![],'defaultValue':_0x8950('0x6')},'musiconhold':{'type':Sequelize[_0x8950('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize[_0x8950('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x8950('0x4')]('rr',_0x8950('0x7'),_0x8950('0x8'),_0x8950('0x9'),_0x8950('0xa'),_0x8950('0xb'),'linear',_0x8950('0xc'),_0x8950('0xd')),'allowNull':![],'defaultValue':_0x8950('0x7'),'set':function(_0x5cde08){this[_0x8950('0xe')](_0x8950('0xf'),_0x5cde08?_0x5cde08:_0x8950('0xb'));},'get':function(){var _0x4ef9e1=this[_0x8950('0x10')]('type');var _0x5afca5=this[_0x8950('0x10')](_0x8950('0x11'));var _0x28151e=this[_0x8950('0x10')]('strategy');if(_0x4ef9e1===_0x8950('0x6')){return _0x28151e;}if(_0x5afca5===_0x8950('0x12')&&_0x28151e===_0x8950('0xb')||_0x5afca5==='booked'&&_0x28151e===_0x8950('0x13')){return _0x28151e;}if(_0x5afca5===_0x8950('0x14')||_0x5afca5==='predictive'||_0x5afca5===_0x8950('0x15')){return _0x28151e;}return null;}},'servicelevel':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x8950('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defaultValue':_0x8950('0x17')},'autopause':{'type':Sequelize['ENUM'](_0x8950('0x17'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x8950('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0x8950('0x4')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x8950('0x4')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x8950('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x8950('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x8950('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defaultValue':_0x8950('0x17')},'announce_holdtime':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no',_0x8950('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x8950('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](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[_0x8950('0x2')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x8950('0x2')]},'queue_quantity1':{'type':Sequelize[_0x8950('0x2')]},'queue_quantity2':{'type':Sequelize[_0x8950('0x2')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x2277c9){this[_0x8950('0xe')]('periodic_announce',_0x2277c9?_0x2277c9[_0x8950('0x19')](','):[]);},'get':function(){return this['getDataValue'](_0x8950('0x1a'))?this[_0x8950('0x10')](_0x8950('0x1a'))[_0x8950('0x1b')](','):[];}},'joinempty':{'type':Sequelize[_0x8950('0x2')],'defaultValue':_0x8950('0x17'),'set':function(_0x2be8e8){this[_0x8950('0xe')]('joinempty',_0x2be8e8?_0x2be8e8[_0x8950('0x19')](','):undefined);},'get':function(){return this[_0x8950('0x10')]('joinempty')?this[_0x8950('0x10')](_0x8950('0x1c'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x8950('0x2')],'defaultValue':'no','set':function(_0x5a45ce){this[_0x8950('0xe')]('leavewhenempty',_0x5a45ce?_0x5a45ce[_0x8950('0x19')](','):undefined);},'get':function(){return this['getDataValue'](_0x8950('0x1d'))?this[_0x8950('0x10')](_0x8950('0x1d'))[_0x8950('0x1b')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x8950('0x4')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x8950('0x2')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':0x0,'set':function(_0x297280){this[_0x8950('0xe')](_0x8950('0x1f'),_0x297280);if(_0x297280){if(this[_0x8950('0x10')](_0x8950('0x20'))<0x2){this[_0x8950('0xe')](_0x8950('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x8950('0x4')](_0x8950('0x21'),_0x8950('0x14'),'power',_0x8950('0x22'),_0x8950('0x12')),'defaultValue':_0x8950('0x14'),'comment':_0x8950('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x8950('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x8950('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x8950('0x25')},'dialPowerLevel':{'type':Sequelize[_0x8950('0x26')](0x2)[_0x8950('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0x8950('0x4')]('agentBusyFactor',_0x8950('0x27')),'defaultValue':_0x8950('0x27'),'comment':_0x8950('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x8950('0x29')},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0x8950('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x8950('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0x8950('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x8950('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x8950('0x16')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x8950('0x2')],'defaultValue':'tTxX','comment':_0x8950('0x2b')},'dialQueueTimeout':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8950('0x2c')},'dialQueueProject':{'type':Sequelize[_0x8950('0x2')],'comment':_0x8950('0x2d')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8950('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)[_0x8950('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8950('0x2f')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)[_0x8950('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8950('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x8950('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0x8950('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0x8950('0x30'),_0x8950('0x31')),'defaultValue':_0x8950('0x32')},'dialAMDActive':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':0x0,'comment':_0x8950('0x33')},'dialAMDInitialSilence':{'type':Sequelize[_0x8950('0x16')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x8950('0x34')},'dialAMDGreeting':{'type':Sequelize[_0x8950('0x16')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x8950('0x35')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x8950('0x16')](0x9)[_0x8950('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x8950('0x36')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x8950('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x8950('0x37')},'dialAMDMinWordLength':{'type':Sequelize[_0x8950('0x16')](0x9)[_0x8950('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x8950('0x38')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x8950('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x8950('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x8950('0x16')](0x9)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x8950('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x8950('0x16')](0x5)[_0x8950('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x8950('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x8950('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x8950('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x8950('0x3c')},'dialRecallInQueue':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':0x0,'comment':_0x8950('0x3d')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC',_0x8950('0x3e')),'defaultValue':_0x8950('0x3f')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0x8950('0x2d')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x8950('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x8950('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)[_0x8950('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8950('0x40')},'dialDropMaxRetry':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)[_0x8950('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8950('0x41')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)[_0x8950('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8950('0x42')},'dialMachineMaxRetry':{'type':Sequelize[_0x8950('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8950('0x43')},'dialMachineRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)[_0x8950('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8950('0x44')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8950('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8950('0x45')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x8950('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8950('0x46')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x8950('0x47')},'mandatoryDisposition':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':![],'comment':_0x8950('0x48'),'set':function(_0x1b6dca){if(!_0x1b6dca)this[_0x8950('0xe')](_0x8950('0x49'),null);this[_0x8950('0xe')](_0x8950('0x4a'),_0x1b6dca);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x8950('0x16')](0x3)[_0x8950('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x8950('0x16')](0x3)['UNSIGNED'],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x8950('0x1e')],'defaultValue':![]}};
\ No newline at end of file
index aae94a2..ee2e78d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c46=['ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./voiceQueue.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','map','value','includes','type','find','name','UserProfileResource','then','end','sendStatus','error','send','index','VoiceQueue','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','userProfileId','autoAssociation','findOne','CmHopper','order','getHopperHistories','CmHopperHistory','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','teams','User','Agents','online','interface','flatMap','forEach','penalty','transaction','each','upsert','findOrCreate','isNil','format','SIP/%s','voicePause','emit','Team','field','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','sequelize','QueryTypes','SELECT','every','TeamId','union','compact','removeTeams','ids','isEmpty','removeAgents','UserVoiceQueueRt','userVoiceQueue:remove','addAgents','push','all','getAgents','getMembers','getLists','CmList','addLists','spread','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','ListId\x20=\x20?','COALESCE(phone,\x27\x27)','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse'];(function(_0x36f415,_0x19680a){var _0x2488b1=function(_0x46a8be){while(--_0x46a8be){_0x36f415['push'](_0x36f415['shift']());}};_0x2488b1(++_0x19680a);}(_0x8c46,0x171));var _0x68c4=function(_0xddb6b4,_0x36c947){_0xddb6b4=_0xddb6b4-0x0;var _0x4cbc03=_0x8c46[_0xddb6b4];return _0x4cbc03;};'use strict';var emlformat=require(_0x68c4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x68c4('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x68c4('0x2'));var Mustache=require(_0x68c4('0x3'));var util=require(_0x68c4('0x4'));var path=require(_0x68c4('0x5'));var sox=require(_0x68c4('0x6'));var csv=require(_0x68c4('0x7'));var ejs=require(_0x68c4('0x8'));var fs=require('fs');var fs_extra=require(_0x68c4('0x9'));var _=require(_0x68c4('0xa'));var squel=require(_0x68c4('0xb'));var crypto=require('crypto');var jsforce=require(_0x68c4('0xc'));var deskjs=require(_0x68c4('0xd'));var toCsv=require(_0x68c4('0x7'));var querystring=require('querystring');var Papa=require(_0x68c4('0xe'));var Redis=require(_0x68c4('0xf'));var authService=require(_0x68c4('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68c4('0x11'));var logger=require(_0x68c4('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x68c4('0x13'));var licenseUtil=require(_0x68c4('0x14'));var db=require(_0x68c4('0x15'))['db'];config['redis']=_[_0x68c4('0x16')](config[_0x68c4('0x17')],{'host':_0x68c4('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x68c4('0x17')]));require(_0x68c4('0x19'))[_0x68c4('0x1a')](socket);function respondWithStatusCode(_0x52f031,_0x211793){_0x211793=_0x211793||0xcc;return function(_0x38fd57){if(_0x38fd57){return _0x52f031['sendStatus'](_0x211793);}return _0x52f031[_0x68c4('0x1b')](_0x211793)['end']();};}function respondWithResult(_0x1a7045,_0x556aa6){_0x556aa6=_0x556aa6||0xc8;return function(_0x5497bf){if(_0x5497bf){return _0x1a7045[_0x68c4('0x1b')](_0x556aa6)[_0x68c4('0x1c')](_0x5497bf);}};}function respondWithFilteredResult(_0x4f4797,_0x2d6c1b){return function(_0x1d757c){if(_0x1d757c){var _0x38ac38=typeof _0x2d6c1b[_0x68c4('0x1d')]===_0x68c4('0x1e')&&typeof _0x2d6c1b[_0x68c4('0x1f')]===_0x68c4('0x1e');var _0x415ef2=_0x1d757c[_0x68c4('0x20')];var _0x3befda=_0x38ac38?0x0:_0x2d6c1b[_0x68c4('0x1d')];var _0x58f87d=_0x38ac38?_0x1d757c[_0x68c4('0x20')]:_0x2d6c1b['offset']+_0x2d6c1b['limit'];var _0x34d3a6;if(_0x58f87d>=_0x415ef2){_0x58f87d=_0x415ef2;_0x34d3a6=0xc8;}else{_0x34d3a6=0xce;}_0x4f4797[_0x68c4('0x1b')](_0x34d3a6);return _0x4f4797[_0x68c4('0x21')](_0x68c4('0x22'),_0x3befda+'-'+_0x58f87d+'/'+_0x415ef2)['json'](_0x1d757c);}return null;};}function patchUpdates(_0x35e865){return function(_0x310bc6){try{jsonpatch['apply'](_0x310bc6,_0x35e865,!![]);}catch(_0x201742){return BPromise[_0x68c4('0x23')](_0x201742);}return _0x310bc6[_0x68c4('0x24')]();};}function saveUpdates(_0x10278e,_0x12ecd1){return function(_0x20e78b){if(_0x20e78b){return _0x20e78b[_0x68c4('0x25')](_0x10278e)['then'](function(_0x2ff4a5){return _0x2ff4a5;});}return null;};}function removeEntity(_0x55355d,_0xf16a78){return function(_0x10c67e){if(_0x10c67e){return _0x10c67e[_0x68c4('0x26')]()['then'](function(){var _0x1e14db=_0x10c67e[_0x68c4('0x27')]({'plain':!![]});var _0x496f4d=[{'name':_0x68c4('0x28'),'value':_0x68c4('0x29'),'ignore':![]},{'name':_0x68c4('0x2a'),'value':_0x68c4('0x2b'),'ignore':![]}];var _0x5589d6=_(_0x496f4d)[_0x68c4('0x2c')]('ignore')[_0x68c4('0x2d')](_0x68c4('0x2e'))['value']();if(_[_0x68c4('0x2f')](_0x5589d6,_0x1e14db[_0x68c4('0x30')])){return;}var _0x48e4bd=_[_0x68c4('0x31')](_0x496f4d,[_0x68c4('0x2e'),_0x1e14db[_0x68c4('0x30')]])[_0x68c4('0x32')];return db[_0x68c4('0x33')][_0x68c4('0x26')]({'where':{'type':_0x48e4bd,'resourceId':_0x1e14db['id']}})[_0x68c4('0x34')](function(){return _0x10c67e;});})[_0x68c4('0x34')](function(){_0x55355d[_0x68c4('0x1b')](0xcc)[_0x68c4('0x35')]();});}};}function handleEntityNotFound(_0x19bc4a,_0x925289){return function(_0x302237){if(!_0x302237){_0x19bc4a[_0x68c4('0x36')](0x194);}return _0x302237;};}function handleError(_0x3ce082,_0x3a3a75){_0x3a3a75=_0x3a3a75||0x1f4;return function(_0x33fcc7){logger[_0x68c4('0x37')](_0x33fcc7['stack']);if(_0x33fcc7[_0x68c4('0x32')]){delete _0x33fcc7[_0x68c4('0x32')];}_0x3ce082[_0x68c4('0x1b')](_0x3a3a75)[_0x68c4('0x38')](_0x33fcc7);};}exports[_0x68c4('0x39')]=function(_0x5a4e0c,_0x32fef0){var _0x4f4672={},_0x586e9c={},_0x4dcd5b={'count':0x0,'rows':[]};var _0xb86553=_[_0x68c4('0x2d')](db[_0x68c4('0x3a')][_0x68c4('0x3b')],function(_0x5953cc){return{'name':_0x5953cc[_0x68c4('0x3c')],'type':_0x5953cc[_0x68c4('0x30')][_0x68c4('0x3d')]};});_0x586e9c['model']=_[_0x68c4('0x2d')](_0xb86553,_0x68c4('0x32'));_0x586e9c[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x5a4e0c[_0x68c4('0x3e')]);_0x586e9c[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x586e9c[_0x68c4('0x42')],_0x586e9c[_0x68c4('0x3e')]);_0x4f4672[_0x68c4('0x43')]=_['intersection'](_0x586e9c['model'],qs[_0x68c4('0x44')](_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x4f4672[_0x68c4('0x43')]=_0x4f4672[_0x68c4('0x43')][_0x68c4('0x45')]?_0x4f4672[_0x68c4('0x43')]:_0x586e9c[_0x68c4('0x42')];if(!_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x4f4672[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x5a4e0c['query']['limit']);_0x4f4672[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x4f4672['order']=qs[_0x68c4('0x48')](_0x5a4e0c[_0x68c4('0x3e')]['sort']);_0x4f4672['where']=qs['filters'](_[_0x68c4('0x49')](_0x5a4e0c['query'],_0x586e9c[_0x68c4('0x40')]),_0xb86553);if(_0x5a4e0c['query'][_0x68c4('0x2c')]){_0x4f4672[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x4f4672[_0x68c4('0x4a')],{'$or':_['map'](_0xb86553,function(_0x3d82be){if(_0x3d82be[_0x68c4('0x30')]!==_0x68c4('0x4c')){var _0x10cf85={};_0x10cf85[_0x3d82be['name']]={'$like':'%'+_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x10cf85;}})});}_0x4f4672=_[_0x68c4('0x4b')]({},_0x4f4672,_0x5a4e0c[_0x68c4('0x4d')]);var _0x215183={'where':_0x4f4672['where']};return db['VoiceQueue']['count'](_0x215183)[_0x68c4('0x34')](function(_0x268bf4){_0x4dcd5b[_0x68c4('0x20')]=_0x268bf4;if(_0x5a4e0c[_0x68c4('0x3e')]['includeAll']){_0x4f4672[_0x68c4('0x4e')]=[{'all':!![]}];}return db[_0x68c4('0x3a')][_0x68c4('0x4f')](_0x4f4672);})[_0x68c4('0x34')](function(_0x25be7a){_0x4dcd5b[_0x68c4('0x50')]=_0x25be7a;return _0x4dcd5b;})[_0x68c4('0x34')](respondWithFilteredResult(_0x32fef0,_0x4f4672))[_0x68c4('0x51')](handleError(_0x32fef0,null));};exports[_0x68c4('0x52')]=function(_0x9d03e6,_0x1ba892){var _0x4eb9bb={'raw':![],'where':{'id':_0x9d03e6['params']['id']}},_0x1c5206={};_0x1c5206[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x3a')][_0x68c4('0x3b')]);_0x1c5206['query']=_[_0x68c4('0x3f')](_0x9d03e6['query']);_0x1c5206[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x1c5206['model'],_0x1c5206[_0x68c4('0x3e')]);_0x4eb9bb[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x1c5206[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x9d03e6[_0x68c4('0x3e')]['fields']));_0x4eb9bb[_0x68c4('0x43')]=_0x4eb9bb[_0x68c4('0x43')][_0x68c4('0x45')]?_0x4eb9bb[_0x68c4('0x43')]:_0x1c5206['model'];if(_0x9d03e6[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x4eb9bb[_0x68c4('0x4e')]=[{'all':!![]}];}_0x4eb9bb=_[_0x68c4('0x4b')]({},_0x4eb9bb,_0x9d03e6[_0x68c4('0x4d')]);return db[_0x68c4('0x3a')]['find'](_0x4eb9bb)[_0x68c4('0x34')](handleEntityNotFound(_0x1ba892,null))[_0x68c4('0x34')](respondWithResult(_0x1ba892,null))[_0x68c4('0x51')](handleError(_0x1ba892,null));};exports['create']=function(_0x354035,_0x2e98b0){return db['VoiceQueue']['create'](_0x354035[_0x68c4('0x54')],{})[_0x68c4('0x34')](function(_0xa727fc){var _0x31eda2=_0x354035[_0x68c4('0x55')][_0x68c4('0x27')]({'plain':!![]});if(!_0x31eda2)throw new Error(_0x68c4('0x56'));if(_0x31eda2[_0x68c4('0x57')]==='user'){var _0xb62438=_0xa727fc['get']({'plain':!![]});var _0x59157e=[{'name':'VoiceQueues','value':_0x68c4('0x29')},{'name':_0x68c4('0x2a'),'value':_0x68c4('0x2b')}];var _0x50d030=_[_0x68c4('0x31')](_0x59157e,[_0x68c4('0x2e'),_0xb62438['type']])[_0x68c4('0x32')];return db['UserProfileSection'][_0x68c4('0x31')]({'where':{'name':_0x50d030,'userProfileId':_0x31eda2['userProfileId']},'raw':!![]})[_0x68c4('0x34')](function(_0x21bfb8){if(_0x21bfb8&&_0x21bfb8['autoAssociation']===0x0){return db[_0x68c4('0x33')][_0x68c4('0x58')]({'name':_0xb62438['name'],'resourceId':_0xb62438['id'],'type':_0x21bfb8[_0x68c4('0x32')],'sectionId':_0x21bfb8['id']},{})[_0x68c4('0x34')](function(){return _0xa727fc;});}else{return _0xa727fc;}})['catch'](function(_0x1511f0){logger[_0x68c4('0x37')](_0x68c4('0x59'),_0x1511f0);throw _0x1511f0;});}return _0xa727fc;})[_0x68c4('0x34')](respondWithResult(_0x2e98b0,0xc9))[_0x68c4('0x51')](handleError(_0x2e98b0,null));};exports[_0x68c4('0x5a')]=function(_0x1a2ede,_0x22424b){var _0x24bb5d={'where':{'id':_0x1a2ede[_0x68c4('0x5b')]['id']}},_0x52aa52={};_0x52aa52[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x3a')][_0x68c4('0x3b')]);_0x24bb5d[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x52aa52['model'],qs['fields'](_0x1a2ede[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x24bb5d['attributes']=_0x24bb5d[_0x68c4('0x43')][_0x68c4('0x45')]?_0x24bb5d[_0x68c4('0x43')]:_0x52aa52[_0x68c4('0x42')];if(_0x1a2ede[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x24bb5d['include']=[{'all':!![]}];}_0x24bb5d=_[_0x68c4('0x4b')]({},_0x24bb5d,_0x1a2ede[_0x68c4('0x4d')]);return db[_0x68c4('0x3a')][_0x68c4('0x31')](_0x24bb5d)[_0x68c4('0x34')](handleEntityNotFound(_0x22424b,null))['then'](function(_0x4bb60c){if(_0x4bb60c){var _0x200dba=_0x4bb60c[_0x68c4('0x27')]({'plain':!![]});_0x200dba=qs[_0x68c4('0x5c')](_0x200dba,['id',_0x68c4('0x5d'),_0x68c4('0x5e')]);_0x1a2ede['body']=_[_0x68c4('0x5c')](_0x1a2ede[_0x68c4('0x54')],['id',_0x68c4('0x5d'),_0x68c4('0x5e')]);return db[_0x68c4('0x3a')][_0x68c4('0x58')](_[_0x68c4('0x4b')](_0x200dba,_0x1a2ede[_0x68c4('0x54')]),{'include':_0x1a2ede[_0x68c4('0x3e')][_0x68c4('0x53')]?[{'all':!![]}]:undefined})['then'](function(_0x418647){var _0x482e3e=_0x1a2ede[_0x68c4('0x55')][_0x68c4('0x27')]({'plain':!![]});if(!_0x482e3e)throw new Error(_0x68c4('0x56'));if(_0x482e3e['role']===_0x68c4('0x55')){var _0x4fa64d=_0x418647[_0x68c4('0x27')]({'plain':!![]});var _0x1a6594=[{'name':_0x68c4('0x28'),'value':_0x68c4('0x29')},{'name':_0x68c4('0x2a'),'value':'outbound'}];var _0x3882ca=_[_0x68c4('0x31')](_0x1a6594,[_0x68c4('0x2e'),_0x4fa64d[_0x68c4('0x30')]])[_0x68c4('0x32')];return db['UserProfileSection'][_0x68c4('0x31')]({'where':{'name':_0x3882ca,'userProfileId':_0x482e3e[_0x68c4('0x5f')]},'raw':!![]})[_0x68c4('0x34')](function(_0x550ed2){if(_0x550ed2&&_0x550ed2[_0x68c4('0x60')]===0x0){return db[_0x68c4('0x33')][_0x68c4('0x58')]({'name':_0x4fa64d['name'],'resourceId':_0x4fa64d['id'],'type':_0x550ed2[_0x68c4('0x32')],'sectionId':_0x550ed2['id']},{})['then'](function(){return _0x418647;});}else{return _0x418647;}})['catch'](function(_0x43af21){logger[_0x68c4('0x37')](_0x68c4('0x59'),_0x43af21);throw _0x43af21;});}return _0x418647;});}})['then'](respondWithResult(_0x22424b,0xc9))['catch'](handleError(_0x22424b,null));};exports[_0x68c4('0x25')]=function(_0x1ead72,_0x4b0788){if(_0x1ead72[_0x68c4('0x54')]['id']){delete _0x1ead72[_0x68c4('0x54')]['id'];}return db['VoiceQueue']['find']({'where':{'id':_0x1ead72[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x4b0788,null))[_0x68c4('0x34')](saveUpdates(_0x1ead72[_0x68c4('0x54')],null))['then'](respondWithResult(_0x4b0788,null))[_0x68c4('0x51')](handleError(_0x4b0788,null));};exports['destroy']=function(_0x220ac8,_0x4208a4){return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x220ac8[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x4208a4,null))[_0x68c4('0x34')](removeEntity(_0x4208a4,null))[_0x68c4('0x51')](handleError(_0x4208a4,null));};exports['getHoppers']=function(_0x2d4c32,_0x4a0f4e,_0x60af6f){var _0x2314b2={'raw':![],'where':{}};var _0xce0b25={};var _0x242b48={'count':0x0,'rows':[]};return db[_0x68c4('0x3a')][_0x68c4('0x61')]({'where':{'id':_0x2d4c32[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x4a0f4e,null))[_0x68c4('0x34')](function(_0x227358){if(_0x227358){_0xce0b25[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x62')][_0x68c4('0x3b')]);_0xce0b25[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x2d4c32[_0x68c4('0x3e')]);_0xce0b25[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0xce0b25[_0x68c4('0x42')],_0xce0b25[_0x68c4('0x3e')]);_0x2314b2[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0xce0b25[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x2d4c32['query'][_0x68c4('0x44')]));_0x2314b2[_0x68c4('0x43')]=_0x2314b2['attributes'][_0x68c4('0x45')]?_0x2314b2[_0x68c4('0x43')]:_0xce0b25['model'];if(!_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x2314b2[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x2314b2['offset']=qs[_0x68c4('0x1d')](_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x2314b2[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x2d4c32['query']['sort']);_0x2314b2[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x2d4c32[_0x68c4('0x3e')],_0xce0b25[_0x68c4('0x40')]));_0x2314b2[_0x68c4('0x4a')]['VoiceQueueId']=_0x227358['id'];if(_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x2314b2['where']=_[_0x68c4('0x4b')](_0x2314b2[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x2314b2[_0x68c4('0x43')],function(_0x4645e9){var _0x3aebef={};_0x3aebef[_0x4645e9]={'$like':'%'+_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x3aebef;})});}_0x2314b2=_[_0x68c4('0x4b')]({},_0x2314b2,_0x2d4c32[_0x68c4('0x4d')]);return db[_0x68c4('0x62')][_0x68c4('0x20')]({'where':_0x2314b2[_0x68c4('0x4a')]})[_0x68c4('0x34')](function(_0x562722){_0x242b48['count']=_0x562722;if(_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x2314b2[_0x68c4('0x4e')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x2314b2);})[_0x68c4('0x34')](function(_0x2ec0af){_0x242b48['rows']=_0x2ec0af;return _0x242b48;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x4a0f4e,_0x2314b2))[_0x68c4('0x51')](handleError(_0x4a0f4e,null));};exports[_0x68c4('0x64')]=function(_0x141acd,_0x59f44a,_0x2a5570){var _0x3172dd={'raw':!![],'where':{}};var _0x281a26={};var _0x36e5dc={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x141acd[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x59f44a,null))[_0x68c4('0x34')](function(_0x2cbfad){if(_0x2cbfad){_0x281a26[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x65')]['rawAttributes']);_0x281a26['query']=_[_0x68c4('0x3f')](_0x141acd[_0x68c4('0x3e')]);_0x281a26[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x281a26[_0x68c4('0x42')],_0x281a26[_0x68c4('0x3e')]);_0x3172dd[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x281a26[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x141acd['query'][_0x68c4('0x44')]));_0x3172dd[_0x68c4('0x43')]=_0x3172dd['attributes'][_0x68c4('0x45')]?_0x3172dd[_0x68c4('0x43')]:_0x281a26[_0x68c4('0x42')];if(!_0x141acd['query'][_0x68c4('0x46')](_0x68c4('0x47'))){_0x3172dd['limit']=qs[_0x68c4('0x1f')](_0x141acd[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x3172dd[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x141acd[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x3172dd['order']=qs[_0x68c4('0x48')](_0x141acd['query'][_0x68c4('0x48')]);_0x3172dd[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_['pick'](_0x141acd[_0x68c4('0x3e')],_0x281a26[_0x68c4('0x40')]));_0x3172dd['where'][_0x68c4('0x66')]=_0x2cbfad['id'];if(_0x141acd[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x3172dd[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x3172dd['where'],{'$or':_[_0x68c4('0x2d')](_0x3172dd[_0x68c4('0x43')],function(_0x580c01){var _0x27f038={};_0x27f038[_0x580c01]={'$like':'%'+_0x141acd[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x27f038;})});}_0x3172dd=_[_0x68c4('0x4b')]({},_0x3172dd,_0x141acd[_0x68c4('0x4d')]);return db['CmHopperHistory'][_0x68c4('0x20')]({'where':_0x3172dd[_0x68c4('0x4a')]})[_0x68c4('0x34')](function(_0x14f058){_0x36e5dc[_0x68c4('0x20')]=_0x14f058;if(_0x141acd['query']['includeAll']){_0x3172dd[_0x68c4('0x4e')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x68c4('0x4f')](_0x3172dd);})[_0x68c4('0x34')](function(_0x34e3a2){_0x36e5dc[_0x68c4('0x50')]=_0x34e3a2;return _0x36e5dc;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x59f44a,_0x3172dd))[_0x68c4('0x51')](handleError(_0x59f44a,null));};exports[_0x68c4('0x67')]=function(_0xf08f80,_0x2f671c,_0x51d2dd){var _0x340634={'raw':!![],'where':{}};var _0x2313a2={};var _0x33c4fb={'count':0x0,'rows':[]};return db[_0x68c4('0x3a')][_0x68c4('0x61')]({'where':{'id':_0xf08f80['params']['id']}})['then'](handleEntityNotFound(_0x2f671c,null))[_0x68c4('0x34')](function(_0x3154da){if(_0x3154da){_0x2313a2[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x68')][_0x68c4('0x3b')]);_0x2313a2[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0xf08f80[_0x68c4('0x3e')]);_0x2313a2['filters']=_[_0x68c4('0x41')](_0x2313a2[_0x68c4('0x42')],_0x2313a2[_0x68c4('0x3e')]);_0x340634[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x2313a2[_0x68c4('0x42')],qs['fields'](_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x340634[_0x68c4('0x43')]=_0x340634[_0x68c4('0x43')][_0x68c4('0x45')]?_0x340634[_0x68c4('0x43')]:_0x2313a2[_0x68c4('0x42')];if(!_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x340634[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0xf08f80['query'][_0x68c4('0x1f')]);_0x340634[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x340634[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x340634[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0xf08f80[_0x68c4('0x3e')],_0x2313a2['filters']));_0x340634[_0x68c4('0x4a')][_0x68c4('0x66')]=_0x3154da['id'];if(_0xf08f80['query'][_0x68c4('0x2c')]){_0x340634[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x340634[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x340634[_0x68c4('0x43')],function(_0x10686a){var _0x25508e={};_0x25508e[_0x10686a]={'$like':'%'+_0xf08f80['query'][_0x68c4('0x2c')]+'%'};return _0x25508e;})});}_0x340634=_['merge']({},_0x340634,_0xf08f80[_0x68c4('0x4d')]);return db[_0x68c4('0x68')][_0x68c4('0x20')]({'where':_0x340634['where']})[_0x68c4('0x34')](function(_0x1419fb){_0x33c4fb[_0x68c4('0x20')]=_0x1419fb;if(_0xf08f80['query'][_0x68c4('0x53')]){_0x340634['include']=[{'all':!![]}];}return db[_0x68c4('0x68')][_0x68c4('0x4f')](_0x340634);})[_0x68c4('0x34')](function(_0x567979){_0x33c4fb[_0x68c4('0x50')]=_0x567979;return _0x33c4fb;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x2f671c,_0x340634))[_0x68c4('0x51')](handleError(_0x2f671c,null));};exports[_0x68c4('0x69')]=function(_0x28839e,_0x1c545c,_0x57b5cd){var _0x643ed4={'raw':!![],'where':{}};var _0x52d4e3={};var _0x442171={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x28839e['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x1c545c,null))['then'](function(_0x92fe39){if(_0x92fe39){_0x52d4e3[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db['CmHopperBlack'][_0x68c4('0x3b')]);_0x52d4e3[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x28839e[_0x68c4('0x3e')]);_0x52d4e3['filters']=_[_0x68c4('0x41')](_0x52d4e3[_0x68c4('0x42')],_0x52d4e3[_0x68c4('0x3e')]);_0x643ed4[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x52d4e3[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x28839e['query'][_0x68c4('0x44')]));_0x643ed4['attributes']=_0x643ed4[_0x68c4('0x43')][_0x68c4('0x45')]?_0x643ed4['attributes']:_0x52d4e3[_0x68c4('0x42')];if(!_0x28839e[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x643ed4[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x28839e['query'][_0x68c4('0x1f')]);_0x643ed4['offset']=qs[_0x68c4('0x1d')](_0x28839e[_0x68c4('0x3e')]['offset']);}_0x643ed4[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x28839e[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x643ed4[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_['pick'](_0x28839e[_0x68c4('0x3e')],_0x52d4e3[_0x68c4('0x40')]));_0x643ed4[_0x68c4('0x4a')][_0x68c4('0x66')]=_0x92fe39['id'];if(_0x28839e[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x643ed4[_0x68c4('0x4a')]=_['merge'](_0x643ed4[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x643ed4[_0x68c4('0x43')],function(_0x23b1fa){var _0x4194ed={};_0x4194ed[_0x23b1fa]={'$like':'%'+_0x28839e[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x4194ed;})});}_0x643ed4=_[_0x68c4('0x4b')]({},_0x643ed4,_0x28839e[_0x68c4('0x4d')]);return db[_0x68c4('0x6a')][_0x68c4('0x20')]({'where':_0x643ed4[_0x68c4('0x4a')]})[_0x68c4('0x34')](function(_0x2d7f6b){_0x442171[_0x68c4('0x20')]=_0x2d7f6b;if(_0x28839e[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x643ed4[_0x68c4('0x4e')]=[{'all':!![]}];}return db[_0x68c4('0x6a')][_0x68c4('0x4f')](_0x643ed4);})[_0x68c4('0x34')](function(_0x2337c5){_0x442171[_0x68c4('0x50')]=_0x2337c5;return _0x442171;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x1c545c,_0x643ed4))['catch'](handleError(_0x1c545c,null));};exports[_0x68c4('0x6b')]=function(_0xcfff56,_0x5a4431,_0x1b2d21){var _0x28d484={};var _0x5f5c87={};var _0x224b46;var _0x54f69a;return db[_0x68c4('0x3a')][_0x68c4('0x61')]({'where':{'id':_0xcfff56[_0x68c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5a4431,null))['then'](function(_0x45332b){if(_0x45332b){_0x224b46=_0x45332b;_0x5f5c87[_0x68c4('0x42')]=_['keys'](db['Team'][_0x68c4('0x3b')]);_0x5f5c87[_0x68c4('0x3e')]=_['keys'](_0xcfff56[_0x68c4('0x3e')]);_0x5f5c87[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x5f5c87[_0x68c4('0x42')],_0x5f5c87[_0x68c4('0x3e')]);_0x28d484[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x5f5c87['model'],qs['fields'](_0xcfff56['query']['fields']));_0x28d484[_0x68c4('0x43')]=_0x28d484[_0x68c4('0x43')][_0x68c4('0x45')]?_0x28d484[_0x68c4('0x43')]:_0x5f5c87[_0x68c4('0x42')];_0x28d484[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x28d484['where']=qs[_0x68c4('0x40')](_['pick'](_0xcfff56[_0x68c4('0x3e')],_0x5f5c87[_0x68c4('0x40')]));if(_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x28d484[_0x68c4('0x4a')]=_['merge'](_0x28d484[_0x68c4('0x4a')],{'$or':_['map'](_0x28d484[_0x68c4('0x43')],function(_0x4b7d22){var _0x11b33e={};_0x11b33e[_0x4b7d22]={'$like':'%'+_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x11b33e;})});}_0x28d484=_['merge']({},_0x28d484,_0xcfff56['options']);return _0x224b46['getTeams'](_0x28d484);}})[_0x68c4('0x34')](function(_0x5abcc4){if(_0x5abcc4){_0x54f69a=_0x5abcc4[_0x68c4('0x45')];if(!_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x28d484[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x28d484[_0x68c4('0x1d')]=qs['offset'](_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x224b46[_0x68c4('0x6b')](_0x28d484);}})['then'](function(_0x563f64){if(_0x563f64){return _0x563f64?{'count':_0x54f69a,'rows':_0x563f64}:null;}})[_0x68c4('0x34')](respondWithResult(_0x5a4431,null))[_0x68c4('0x51')](handleError(_0x5a4431,null));};exports['addTeams']=function(_0x47551d,_0x69c698,_0x58ec57){var _0x321c91=_0x47551d['body'][_0x68c4('0x6c')];var _0x18a99e=_[_0x68c4('0x2d')](_0x321c91,'id');return db['Team'][_0x68c4('0x4f')]({'where':{'id':_0x18a99e},'attributes':['id'],'include':[{'model':db[_0x68c4('0x6d')],'as':_0x68c4('0x6e'),'attributes':['id',_0x68c4('0x32'),_0x68c4('0x6f'),'voicePause',_0x68c4('0x70')],'raw':!![]}]})['then'](function(_0x317d54){if(_0x317d54){var _0xb218aa=_[_0x68c4('0x71')](_0x317d54,function(_0x366836){var _0x32b8ec=_0x366836['get']({'plain':!![]});_0x32b8ec['Agents'][_0x68c4('0x72')](function(_0x3a9b30){_0x3a9b30[_0x68c4('0x73')]=_[_0x68c4('0x31')](_0x321c91,{'id':_0x32b8ec['id']})[_0x68c4('0x73')];});return _0x32b8ec['Agents'];});return db['VoiceQueue'][_0x68c4('0x31')]({'where':{'id':_0x47551d['params']['id']}})['then'](function(_0x1f64bb){return db['sequelize'][_0x68c4('0x74')](function(_0xdd470){return _0x1f64bb['addTeams'](_0x18a99e,{'transaction':_0xdd470})[_0x68c4('0x34')](function(){return BPromise[_0x68c4('0x75')](_0x321c91,function(_0x13cf3a){return db['TeamVoiceQueue'][_0x68c4('0x76')]({'TeamId':_0x13cf3a['id'],'VoiceQueueId':_0x47551d[_0x68c4('0x5b')]['id'],'penalty':_0x13cf3a[_0x68c4('0x73')]},{'transaction':_0xdd470});});})[_0x68c4('0x34')](function(){return BPromise[_0x68c4('0x75')](_0xb218aa,function(_0x23d953){return db['UserVoiceQueue'][_0x68c4('0x77')]({'where':{'UserId':_0x23d953['id'],'VoiceQueueId':_0x47551d[_0x68c4('0x5b')]['id']},'defaults':{'penalty':_0x23d953[_0x68c4('0x73')]},'transaction':_0xdd470});});})[_0x68c4('0x34')](function(){return BPromise[_0x68c4('0x75')](_[_0x68c4('0x2c')](_0xb218aa,{'online':!![]}),function(_0x424b09){return db['UserVoiceQueueRt'][_0x68c4('0x76')]({'membername':_0x424b09[_0x68c4('0x32')],'UserId':_0x424b09['id'],'queue_name':_0x1f64bb[_0x68c4('0x32')],'VoiceQueueId':_0x1f64bb['id'],'interface':_[_0x68c4('0x78')](_0x424b09[_0x68c4('0x70')])?util[_0x68c4('0x79')](_0x68c4('0x7a'),_0x424b09[_0x68c4('0x32')]):_0x424b09[_0x68c4('0x70')],'paused':_0x424b09[_0x68c4('0x7b')]||![],'penalty':_0x424b09[_0x68c4('0x73')]},{'transaction':_0xdd470});});})['then'](function(){_0xb218aa[_0x68c4('0x72')](function(_0x2622d5){socket[_0x68c4('0x7c')]('userVoiceQueue:save',{'UserId':_0x2622d5['id'],'VoiceQueueId':_0x1f64bb['id']});});});});});}})[_0x68c4('0x34')](respondWithStatusCode(_0x69c698,null))[_0x68c4('0x51')](handleError(_0x69c698,null));};exports['removeTeams']=function(_0xb5cc8,_0x44ed2d,_0x31d3ce){return db[_0x68c4('0x7d')][_0x68c4('0x4f')]({'where':{'id':_0xb5cc8[_0x68c4('0x3e')]['ids']},'attributes':['id'],'include':[{'model':db[_0x68c4('0x6d')],'as':_0x68c4('0x6e'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x44ed2d,null))['then'](function(_0x28dcc4){var _0xffc880=_[_0x68c4('0x2d')](_0x28dcc4,'id');var _0x367bf5=[];var _0x5758bd=[];var _0x5e338a=squel['select']();_0x5e338a[_0x68c4('0x7e')]('tq.TeamId')[_0x68c4('0x7f')](_0x68c4('0x80'),'tq')[_0x68c4('0x81')](_0x68c4('0x82'),'ut',_0x68c4('0x83'))['where'](_0x68c4('0x84'),_0xb5cc8[_0x68c4('0x5b')]['id']);for(var _0x324b7b=0x0;_0x324b7b<_0x28dcc4['length'];_0x324b7b+=0x1){let _0x299cb2=_0x28dcc4[_0x324b7b];for(var _0xf58301=0x0;_0xf58301<_0x299cb2[_0x68c4('0x6e')][_0x68c4('0x45')];_0xf58301+=0x1){let _0x433d01=_0x299cb2[_0x68c4('0x6e')][_0xf58301];var _0x15e67c=_0x5e338a[_0x68c4('0x5a')]();_0x15e67c[_0x68c4('0x4a')](_0x68c4('0x85'),_0x433d01['id']);_0x5758bd['push'](db[_0x68c4('0x86')][_0x68c4('0x3e')](_0x15e67c['toString'](),{'type':db['sequelize'][_0x68c4('0x87')][_0x68c4('0x88')]})['then'](function(_0x1697bb){if(_0x1697bb[_0x68c4('0x45')]===0x1){return _0x433d01['id'];}else{var _0x575880=_[_0x68c4('0x89')](_[_0x68c4('0x2d')](_0x1697bb,_0x68c4('0x8a')),function(_0x2501eb){return _['includes'](_0xffc880,_0x2501eb);});if(_0x575880){return _0x433d01['id'];}}}));}}return BPromise['all'](_0x5758bd)['then'](function(_0x52a09c){_0x367bf5=_(_0x367bf5)[_0x68c4('0x8b')](_0x52a09c)[_0x68c4('0x8c')]()[_0x68c4('0x2e')]();return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0xb5cc8[_0x68c4('0x5b')]['id']}})['then'](function(_0x27a611){return db[_0x68c4('0x86')][_0x68c4('0x74')](function(_0x522239){return _0x27a611[_0x68c4('0x8d')](_0xb5cc8[_0x68c4('0x3e')][_0x68c4('0x8e')],{'transaction':_0x522239})[_0x68c4('0x34')](function(){if(!_[_0x68c4('0x8f')](_0x367bf5)){return _0x27a611[_0x68c4('0x90')](_0x367bf5,{'transaction':_0x522239})[_0x68c4('0x34')](function(){return db[_0x68c4('0x91')][_0x68c4('0x26')]({'where':{'VoiceQueueId':_0xb5cc8['params']['id'],'UserId':_0x367bf5},'transaction':_0x522239});});}})['then'](function(){_0x367bf5[_0x68c4('0x72')](function(_0x3eb8fe){socket[_0x68c4('0x7c')](_0x68c4('0x92'),{'UserId':_0x3eb8fe,'VoiceQueueId':_0x27a611['id']});});});});});});})['then'](respondWithStatusCode(_0x44ed2d,null))[_0x68c4('0x51')](handleError(_0x44ed2d,null));};exports[_0x68c4('0x93')]=function(_0x1a7057,_0x2d6c9a,_0x5a75fd){var _0x51d63d,_0x22276a;return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x1a7057[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x2d6c9a,null))['then'](function(_0x3eae09){if(_0x3eae09){_0x22276a=_0x3eae09;return _0x3eae09[_0x68c4('0x93')](_0x1a7057[_0x68c4('0x54')][_0x68c4('0x8e')],_[_0x68c4('0x5c')](_0x1a7057['body'],[_0x68c4('0x8e'),'id'])||{})['spread'](function(_0x5343f1){for(var _0x2a515a=0x0;_0x2a515a<_0x1a7057[_0x68c4('0x54')]['ids'][_0x68c4('0x45')];_0x2a515a+=0x1){socket[_0x68c4('0x7c')]('userVoiceQueue:save',{'UserId':Number(_0x1a7057[_0x68c4('0x54')]['ids'][_0x2a515a]),'VoiceQueueId':Number(_0x1a7057[_0x68c4('0x5b')]['id'])});}return _0x5343f1;});}})[_0x68c4('0x34')](function(_0x4769d0){_0x51d63d=_0x4769d0||[];if(_0x22276a){return db[_0x68c4('0x6d')][_0x68c4('0x4f')]({'where':{'id':_0x1a7057[_0x68c4('0x54')]['ids']},'attributes':['id',_0x68c4('0x32'),_0x68c4('0x6f'),_0x68c4('0x7b'),_0x68c4('0x70')],'raw':!![]});}})['then'](function(_0x525c3f){if(!_[_0x68c4('0x8f')](_0x525c3f)){var _0x38ff95=[];for(var _0x4db93c=0x0;_0x4db93c<_0x525c3f['length'];_0x4db93c++){if(_0x525c3f[_0x4db93c]['online']){_0x38ff95[_0x68c4('0x94')](db['UserVoiceQueueRt'][_0x68c4('0x76')]({'membername':_0x525c3f[_0x4db93c][_0x68c4('0x32')],'UserId':_0x525c3f[_0x4db93c]['id'],'queue_name':_0x22276a[_0x68c4('0x32')],'VoiceQueueId':_0x22276a['id'],'interface':_['isNil'](_0x525c3f[_0x4db93c]['interface'])?util[_0x68c4('0x79')](_0x68c4('0x7a'),_0x525c3f[_0x4db93c][_0x68c4('0x32')]):_0x525c3f[_0x4db93c][_0x68c4('0x70')],'paused':_0x525c3f[_0x4db93c][_0x68c4('0x7b')]||![],'penalty':_0x1a7057[_0x68c4('0x54')][_0x68c4('0x73')]||0x0}));}}return BPromise[_0x68c4('0x95')](_0x38ff95);}})['then'](function(){return _0x51d63d;})[_0x68c4('0x34')](respondWithResult(_0x2d6c9a,null))[_0x68c4('0x51')](handleError(_0x2d6c9a,null));};exports[_0x68c4('0x90')]=function(_0x5afc0a,_0x47f307,_0x2cc6ae){return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x5afc0a['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x47f307,null))[_0x68c4('0x34')](function(_0x32a565){if(_0x32a565){return _0x32a565[_0x68c4('0x90')](_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')])[_0x68c4('0x34')](function(){if(_['isArray'](_0x5afc0a[_0x68c4('0x3e')]['ids'])){for(var _0x410973=0x0;_0x410973<_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')][_0x68c4('0x45')];_0x410973+=0x1){socket[_0x68c4('0x7c')]('userVoiceQueue:remove',{'UserId':Number(_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')][_0x410973]),'VoiceQueueId':Number(_0x5afc0a[_0x68c4('0x5b')]['id'])});}}else{socket['emit'](_0x68c4('0x92'),{'UserId':Number(_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')]),'VoiceQueueId':Number(_0x5afc0a[_0x68c4('0x5b')]['id'])});}});}})[_0x68c4('0x34')](function(_0x3f4c7b){return db['UserVoiceQueueRt'][_0x68c4('0x26')]({'where':{'VoiceQueueId':_0x5afc0a[_0x68c4('0x5b')]['id'],'UserId':_0x5afc0a[_0x68c4('0x3e')]['ids']}})[_0x68c4('0x34')](function(){return _0x3f4c7b;});})[_0x68c4('0x34')](respondWithStatusCode(_0x47f307,null))['catch'](handleError(_0x47f307,null));};exports['getAgents']=function(_0x53e78d,_0x2bde6f,_0x297f5a){var _0x792f08={};var _0x754694={};var _0x4843cb;var _0x5cb555;return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x53e78d[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x2bde6f,null))[_0x68c4('0x34')](function(_0x42c0ab){if(_0x42c0ab){_0x4843cb=_0x42c0ab;_0x754694[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db['User'][_0x68c4('0x3b')]);_0x754694[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x53e78d[_0x68c4('0x3e')]);_0x754694[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x754694[_0x68c4('0x42')],_0x754694[_0x68c4('0x3e')]);_0x792f08[_0x68c4('0x43')]=_['intersection'](_0x754694[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x792f08[_0x68c4('0x43')]=_0x792f08[_0x68c4('0x43')][_0x68c4('0x45')]?_0x792f08[_0x68c4('0x43')]:_0x754694[_0x68c4('0x42')];_0x792f08[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x792f08[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_['pick'](_0x53e78d['query'],_0x754694[_0x68c4('0x40')]));if(_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x792f08[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x792f08['where'],{'$or':_['map'](_0x792f08[_0x68c4('0x43')],function(_0x525839){var _0x4285b1={};_0x4285b1[_0x525839]={'$like':'%'+_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x4285b1;})});}_0x792f08=_[_0x68c4('0x4b')]({},_0x792f08,_0x53e78d[_0x68c4('0x4d')]);return _0x4843cb[_0x68c4('0x96')](_0x792f08);}})['then'](function(_0x3c008a){if(_0x3c008a){_0x5cb555=_0x3c008a['length'];if(!_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x792f08[_0x68c4('0x1f')]=qs['limit'](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x792f08[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x4843cb['getAgents'](_0x792f08);}})['then'](function(_0x44f028){if(_0x44f028){return _0x44f028?{'count':_0x5cb555,'rows':_0x44f028}:null;}})['then'](respondWithResult(_0x2bde6f,null))[_0x68c4('0x51')](handleError(_0x2bde6f,null));};exports[_0x68c4('0x97')]=function(_0x536262,_0x761be5,_0x14f02f){var _0x574f30={};var _0x16e4a1={};var _0x5ace9e;var _0x29f9dd;return db[_0x68c4('0x3a')]['findOne']({'where':{'id':_0x536262['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x761be5,null))['then'](function(_0x26a719){if(_0x26a719){_0x5ace9e=_0x26a719;_0x16e4a1[_0x68c4('0x42')]=_['keys'](db['UserVoiceQueueRt'][_0x68c4('0x3b')]);_0x16e4a1[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x536262[_0x68c4('0x3e')]);_0x16e4a1[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x16e4a1['model'],_0x16e4a1[_0x68c4('0x3e')]);_0x574f30[_0x68c4('0x43')]=_['intersection'](_0x16e4a1[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x536262[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x574f30[_0x68c4('0x43')]=_0x574f30[_0x68c4('0x43')]['length']?_0x574f30[_0x68c4('0x43')]:_0x16e4a1[_0x68c4('0x42')];_0x574f30[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x536262[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x574f30[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x536262[_0x68c4('0x3e')],_0x16e4a1['filters']));if(_0x536262['query']['filter']){_0x574f30[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x574f30['where'],{'$or':_[_0x68c4('0x2d')](_0x574f30['attributes'],function(_0x450986){var _0xe4914b={};_0xe4914b[_0x450986]={'$like':'%'+_0x536262[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0xe4914b;})});}_0x574f30=_[_0x68c4('0x4b')]({},_0x574f30,_0x536262['options']);return _0x5ace9e[_0x68c4('0x97')](_0x574f30);}})['then'](function(_0x8e4a98){if(_0x8e4a98){_0x29f9dd=_0x8e4a98[_0x68c4('0x45')];if(!_0x536262[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x574f30[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x536262['query'][_0x68c4('0x1f')]);_0x574f30['offset']=qs[_0x68c4('0x1d')](_0x536262[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x5ace9e[_0x68c4('0x97')](_0x574f30);}})[_0x68c4('0x34')](function(_0x6150c6){return _0x6150c6?{'count':_0x29f9dd,'rows':_0x6150c6}:null;})[_0x68c4('0x34')](respondWithResult(_0x761be5,null))[_0x68c4('0x51')](handleError(_0x761be5,null));};exports[_0x68c4('0x98')]=function(_0x32cfa8,_0x5be923,_0x3e07fa){var _0x4b6321={};var _0x3c982a={};var _0x1f91b7;var _0x3f5d06;return db['VoiceQueue']['findOne']({'where':{'id':_0x32cfa8[_0x68c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5be923,null))[_0x68c4('0x34')](function(_0x1abafa){if(_0x1abafa){_0x1f91b7=_0x1abafa;_0x3c982a[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x99')][_0x68c4('0x3b')]);_0x3c982a[_0x68c4('0x3e')]=_['keys'](_0x32cfa8['query']);_0x3c982a['filters']=_[_0x68c4('0x41')](_0x3c982a[_0x68c4('0x42')],_0x3c982a['query']);_0x4b6321[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x3c982a[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x4b6321[_0x68c4('0x43')]=_0x4b6321[_0x68c4('0x43')][_0x68c4('0x45')]?_0x4b6321[_0x68c4('0x43')]:_0x3c982a['model'];_0x4b6321[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x4b6321['where']=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x32cfa8[_0x68c4('0x3e')],_0x3c982a[_0x68c4('0x40')]));if(_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x4b6321[_0x68c4('0x4a')]=_['merge'](_0x4b6321[_0x68c4('0x4a')],{'$or':_['map'](_0x4b6321[_0x68c4('0x43')],function(_0x462b58){var _0x2de851={};_0x2de851[_0x462b58]={'$like':'%'+_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x2de851;})});}_0x4b6321=_[_0x68c4('0x4b')]({},_0x4b6321,_0x32cfa8[_0x68c4('0x4d')]);return _0x1f91b7[_0x68c4('0x98')](_0x4b6321);}})['then'](function(_0x3f45be){if(_0x3f45be){_0x3f5d06=_0x3f45be['length'];if(!_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x46')]('nolimit')){_0x4b6321['limit']=qs[_0x68c4('0x1f')](_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x4b6321[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x32cfa8['query'][_0x68c4('0x1d')]);}return _0x1f91b7[_0x68c4('0x98')](_0x4b6321);}})[_0x68c4('0x34')](function(_0x5ed4c0){if(_0x5ed4c0){return _0x5ed4c0?{'count':_0x3f5d06,'rows':_0x5ed4c0}:null;}})[_0x68c4('0x34')](respondWithResult(_0x5be923,null))['catch'](handleError(_0x5be923,null));};exports[_0x68c4('0x9a')]=function(_0x14538e,_0x44ff59,_0x2d3def){var _0x35e37a=moment()[_0x68c4('0x79')]('YYYY-MM-DD\x20HH:mm:ss');var _0x76cd3,_0x24fab4;return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x14538e[_0x68c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x44ff59,null))[_0x68c4('0x34')](function(_0x4e4ffa){if(_0x4e4ffa){_0x24fab4=_0x4e4ffa;return _0x4e4ffa['addLists'](_0x14538e[_0x68c4('0x54')][_0x68c4('0x8e')],_[_0x68c4('0x5c')](_0x14538e[_0x68c4('0x54')],[_0x68c4('0x8e'),'id'])||{});}return null;})[_0x68c4('0x9b')](function(_0x136782){var _0x2782c5;_0x76cd3=_0x136782||[];var _0x204e20=[];if(_0x136782){for(var _0x5cd266=0x0;_0x5cd266<_0x136782[_0x68c4('0x45')];_0x5cd266+=0x1){var _0x3757ea=_0x136782[_0x5cd266]['get']({'plain':!![]});_0x24fab4[_0x68c4('0x9c')]=_0x14538e['body']['dialCheckDuplicateType']?_0x14538e[_0x68c4('0x54')][_0x68c4('0x9c')]:_0x24fab4[_0x68c4('0x9c')];switch(_0x24fab4[_0x68c4('0x9c')]){case'always':_0x2782c5=squel[_0x68c4('0x9d')]()[_0x68c4('0x9e')](_0x68c4('0x9f'))[_0x68c4('0xa0')]([_0x68c4('0xa1'),_0x68c4('0xa2'),_0x68c4('0xa3'),_0x68c4('0xa4'),_0x68c4('0x66'),_0x68c4('0x5d'),'updatedAt'],squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xa1'),_0x68c4('0xa1'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0xa2'))[_0x68c4('0x7e')]('id',_0x68c4('0xa3'))[_0x68c4('0x7e')](_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')](),'ListId')[_0x68c4('0x7e')](_0x14538e[_0x68c4('0x5b')]['id']['toString'](),_0x68c4('0x66'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5d'))['field']('\x27'+_0x35e37a+'\x27',_0x68c4('0x5e'))[_0x68c4('0x7f')](_0x68c4('0xa8'))[_0x68c4('0x4a')](_0x68c4('0xa9'))[_0x68c4('0x4a')]('ListId\x20=\x20?',_0x3757ea[_0x68c4('0xa6')]['toString']())['where'](_0x68c4('0xaa'))[_0x68c4('0x4a')]('phone\x20NOT\x20IN\x20(?)',squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xab'))[_0x68c4('0x7f')](_0x68c4('0xac'))['where'](_0x68c4('0x84'),_0x14538e['params']['id'][_0x68c4('0xa7')]()))['where'](_0x68c4('0xad'),squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')]('COALESCE(phone,\x27\x27)')[_0x68c4('0x7f')](_0x68c4('0x9f'))[_0x68c4('0x4a')](_0x68c4('0x84'),_0x14538e[_0x68c4('0x5b')]['id'][_0x68c4('0xa7')]())))['toString']();break;case _0x68c4('0xae'):_0x2782c5=squel['insert']()[_0x68c4('0x9e')]('cm_hopper')['fromQuery']([_0x68c4('0xa1'),_0x68c4('0xa2'),'ContactId',_0x68c4('0xa4'),'VoiceQueueId',_0x68c4('0x5d'),'updatedAt'],squel['select']()[_0x68c4('0x7e')](_0x68c4('0xa1'),_0x68c4('0xa1'))['field']('\x27'+_0x35e37a+'\x27','scheduledAt')[_0x68c4('0x7e')]('id',_0x68c4('0xa3'))[_0x68c4('0x7e')](_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')](),_0x68c4('0xa4'))[_0x68c4('0x7e')](_0x14538e['params']['id']['toString'](),_0x68c4('0x66'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27','createdAt')[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5e'))[_0x68c4('0x7f')]('cm_contacts')[_0x68c4('0x4a')](_0x68c4('0xa9'))[_0x68c4('0x4a')](_0x68c4('0xaf'),_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')]())['where'](_0x68c4('0xaa'))[_0x68c4('0x4a')](_0x68c4('0xad'),squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xb0'))[_0x68c4('0x7f')](_0x68c4('0x9f'))[_0x68c4('0x4a')]('VoiceQueueId\x20=\x20?',_0x14538e[_0x68c4('0x5b')]['id'][_0x68c4('0xa7')]())))[_0x68c4('0xa7')]();break;default:_0x2782c5=squel[_0x68c4('0x9d')]()[_0x68c4('0x9e')](_0x68c4('0x9f'))[_0x68c4('0xa0')]([_0x68c4('0xa1'),_0x68c4('0xa2'),_0x68c4('0xa3'),_0x68c4('0xa4'),_0x68c4('0x66'),_0x68c4('0x5d'),_0x68c4('0x5e')],squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xa1'),_0x68c4('0xa1'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27','scheduledAt')['field']('id',_0x68c4('0xa3'))['field'](_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')](),'ListId')[_0x68c4('0x7e')](_0x14538e['params']['id'][_0x68c4('0xa7')](),_0x68c4('0x66'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5d'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27','updatedAt')[_0x68c4('0x7f')](_0x68c4('0xa8'))['where'](_0x68c4('0xa9'))[_0x68c4('0x4a')]('ListId\x20=\x20?',_0x3757ea[_0x68c4('0xa6')]['toString']())['where'](_0x68c4('0xaa')))['toString']();}_0x204e20[_0x68c4('0x94')](db['sequelize'][_0x68c4('0x3e')](_0x2782c5));}return BPromise['all'](_0x204e20);}})['then'](function(){var _0x131281=[];var _0xa46915=squel['insert']()[_0x68c4('0x9e')]('cm_hopper_additional_phones')[_0x68c4('0xa0')](['CmHopperId',_0x68c4('0xa1'),_0x68c4('0xb1'),_0x68c4('0x5d'),_0x68c4('0x5e')],squel['select']()[_0x68c4('0x7e')](_0x68c4('0xb2'))[_0x68c4('0x7e')](_0x68c4('0xb3'))[_0x68c4('0x7e')](_0x68c4('0xb4'))['field']('\x27'+_0x35e37a+'\x27',_0x68c4('0x5d'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5e'))[_0x68c4('0x7f')](_0x68c4('0xb5'),'ci')['join'](_0x68c4('0x9f'),'h',_0x68c4('0xb6'))[_0x68c4('0x4a')](_0x68c4('0xb7'),_0x35e37a)[_0x68c4('0x4a')](_0x68c4('0xb8'),_0x68c4('0xb9')))['toString']();_0x131281[_0x68c4('0x94')](db[_0x68c4('0x86')][_0x68c4('0x3e')](_0xa46915));return BPromise[_0x68c4('0x95')](_0x131281);})['then'](function(){return _0x76cd3;})[_0x68c4('0x34')](respondWithResult(_0x44ff59,null))[_0x68c4('0x51')](handleError(_0x44ff59,null));};exports[_0x68c4('0xba')]=function(_0x209ae8,_0x421a7b,_0x5430b1){return db[_0x68c4('0x3a')]['find']({'where':{'id':_0x209ae8['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x421a7b,null))[_0x68c4('0x34')](function(_0x45f198){if(_0x45f198){return _0x45f198[_0x68c4('0xba')](_0x209ae8[_0x68c4('0x3e')][_0x68c4('0x8e')]);}})[_0x68c4('0x34')](function(_0x18236e){if(_0x18236e){return db['CmHopper'][_0x68c4('0x26')]({'where':{'ListId':_0x209ae8[_0x68c4('0x3e')][_0x68c4('0x8e')],'VoiceQueueId':_0x209ae8['params']['id']}})['then'](function(){return _0x18236e;});}})['then'](respondWithStatusCode(_0x421a7b,null))['catch'](handleError(_0x421a7b,null));};exports[_0x68c4('0xbb')]=function(_0x4191fe,_0x5d1d0,_0x2682e6){var _0x5e1014={};var _0x2ed260={};var _0x2cbb90;var _0x5c09ef;return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x4191fe['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x5d1d0,null))[_0x68c4('0x34')](function(_0x16d537){if(_0x16d537){_0x2cbb90=_0x16d537;_0x2ed260[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x99')][_0x68c4('0x3b')]);_0x2ed260['query']=_[_0x68c4('0x3f')](_0x4191fe[_0x68c4('0x3e')]);_0x2ed260[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x2ed260['model'],_0x2ed260[_0x68c4('0x3e')]);_0x5e1014[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x2ed260[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x5e1014['attributes']=_0x5e1014[_0x68c4('0x43')][_0x68c4('0x45')]?_0x5e1014['attributes']:_0x2ed260[_0x68c4('0x42')];_0x5e1014['order']=qs[_0x68c4('0x48')](_0x4191fe['query'][_0x68c4('0x48')]);_0x5e1014[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x4191fe['query'],_0x2ed260[_0x68c4('0x40')]));if(_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x5e1014['where']=_[_0x68c4('0x4b')](_0x5e1014[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x5e1014[_0x68c4('0x43')],function(_0x16869a){var _0xadc66d={};_0xadc66d[_0x16869a]={'$like':'%'+_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0xadc66d;})});}_0x5e1014=_[_0x68c4('0x4b')]({},_0x5e1014,_0x4191fe[_0x68c4('0x4d')]);return _0x2cbb90[_0x68c4('0xbb')](_0x5e1014);}})[_0x68c4('0x34')](function(_0x3244d8){if(_0x3244d8){_0x5c09ef=_0x3244d8[_0x68c4('0x45')];if(!_0x4191fe[_0x68c4('0x3e')]['hasOwnProperty'](_0x68c4('0x47'))){_0x5e1014[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x5e1014[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x2cbb90[_0x68c4('0xbb')](_0x5e1014);}})[_0x68c4('0x34')](function(_0x41e6c4){if(_0x41e6c4){return _0x41e6c4?{'count':_0x5c09ef,'rows':_0x41e6c4}:null;}})[_0x68c4('0x34')](respondWithResult(_0x5d1d0,null))[_0x68c4('0x51')](handleError(_0x5d1d0,null));};exports['addBlackLists']=function(_0x3d155a,_0x8e3fd9,_0x1b3554){var _0x28e0c4,_0x12c06a;return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x3d155a['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x8e3fd9,null))[_0x68c4('0x34')](function(_0x35ad90){if(_0x35ad90){_0x12c06a=_0x35ad90;return _0x35ad90[_0x68c4('0xbc')](_0x3d155a[_0x68c4('0x54')][_0x68c4('0x8e')],_['omit'](_0x3d155a[_0x68c4('0x54')],[_0x68c4('0x8e'),'id'])||{});}return null;})[_0x68c4('0x9b')](function(_0x14555a){var _0xe8c33f;_0x28e0c4=_0x14555a||[];var _0x27a10c=[];if(_0x14555a){for(var _0x4e1bc5=0x0;_0x4e1bc5<_0x14555a[_0x68c4('0x45')];_0x4e1bc5+=0x1){var _0x8fc106=_0x14555a[_0x4e1bc5][_0x68c4('0x27')]({'plain':!![]});_0xe8c33f=squel[_0x68c4('0x9d')]()['into'](_0x68c4('0xbd'))[_0x68c4('0xa0')]([_0x68c4('0xa1'),_0x68c4('0xa3'),_0x68c4('0xa4'),_0x68c4('0x66'),_0x68c4('0x5d'),_0x68c4('0x5e')],squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xa1'),'phone')[_0x68c4('0x7e')]('id','ContactId')['field'](_0x8fc106[_0x68c4('0xa6')][_0x68c4('0xa7')](),'ListId')[_0x68c4('0x7e')](_0x3d155a[_0x68c4('0x5b')]['id'][_0x68c4('0xa7')](),_0x68c4('0x66'))[_0x68c4('0x7e')]('NOW()',_0x68c4('0x5d'))['field'](_0x68c4('0xbe'),_0x68c4('0x5e'))[_0x68c4('0x7f')](_0x68c4('0xa8'))[_0x68c4('0x4a')]('deletedAt\x20IS\x20NULL')[_0x68c4('0x4a')](_0x68c4('0xaf'),_0x8fc106['CmListId'][_0x68c4('0xa7')]())[_0x68c4('0x4a')](_0x68c4('0xaa')))[_0x68c4('0xa7')]();_0x27a10c[_0x68c4('0x94')](db[_0x68c4('0x86')][_0x68c4('0x3e')](_0xe8c33f));}return BPromise['all'](_0x27a10c);}})[_0x68c4('0x34')](function(){return _0x28e0c4;})[_0x68c4('0x34')](respondWithResult(_0x8e3fd9,null))['catch'](handleError(_0x8e3fd9,null));};exports[_0x68c4('0xbf')]=function(_0x4647cd,_0x58cc75,_0xc4f30){return db[_0x68c4('0x3a')]['find']({'where':{'id':_0x4647cd['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x58cc75,null))[_0x68c4('0x34')](function(_0x20e00f){if(_0x20e00f){return _0x20e00f[_0x68c4('0xbf')](_0x4647cd[_0x68c4('0x3e')]['ids']);}})[_0x68c4('0x34')](function(_0x349564){if(_0x349564){return db['CmHopperBlack'][_0x68c4('0x26')]({'where':{'ListId':_0x4647cd[_0x68c4('0x3e')][_0x68c4('0x8e')],'VoiceQueueId':_0x4647cd['params']['id']}})[_0x68c4('0x34')](function(){return _0x349564;});}})[_0x68c4('0x34')](respondWithStatusCode(_0x58cc75,null))[_0x68c4('0x51')](handleError(_0x58cc75,null));};
\ No newline at end of file
+var _0x41fe=['cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','get','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','find','UserProfileResource','destroy','error','stack','name','send','index','VoiceQueue','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','includeAll','include','findAll','catch','show','params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoiceQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','getHoppers','findOne','VoiceQueueId','CmHopper','rows','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','pick','getTeams','Team','addTeams','teams','User','online','voicePause','flatMap','Agents','forEach','penalty','sequelize','each','TeamVoiceQueue','upsert','UserVoiceQueue','UserVoiceQueueRt','isNil','format','emit','userVoiceQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','all','compact','transaction','ids','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','interface','isArray','getAgents','getMembers','CmList','getLists','YYYY-MM-DD\x20HH:mm:ss','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','scheduledAt','ContactId','CmListId','ListId','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','ListId\x20=\x20?','CmHopperId','OrderBy','h.id','ci.OrderBy+1'];(function(_0xb55417,_0x40e0ef){var _0x5143e6=function(_0x2136c7){while(--_0x2136c7){_0xb55417['push'](_0xb55417['shift']());}};_0x5143e6(++_0x40e0ef);}(_0x41fe,0xd1));var _0xe41f=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x41fe[_0x38537f];return _0x141e23;};'use strict';var emlformat=require(_0xe41f('0x0'));var rimraf=require(_0xe41f('0x1'));var zipdir=require(_0xe41f('0x2'));var jsonpatch=require(_0xe41f('0x3'));var rp=require(_0xe41f('0x4'));var moment=require(_0xe41f('0x5'));var BPromise=require(_0xe41f('0x6'));var Mustache=require(_0xe41f('0x7'));var util=require(_0xe41f('0x8'));var path=require(_0xe41f('0x9'));var sox=require(_0xe41f('0xa'));var csv=require(_0xe41f('0xb'));var ejs=require(_0xe41f('0xc'));var fs=require('fs');var fs_extra=require(_0xe41f('0xd'));var _=require(_0xe41f('0xe'));var squel=require(_0xe41f('0xf'));var crypto=require(_0xe41f('0x10'));var jsforce=require('jsforce');var deskjs=require(_0xe41f('0x11'));var toCsv=require(_0xe41f('0xb'));var querystring=require('querystring');var Papa=require(_0xe41f('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe41f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xe41f('0x14'));var config=require(_0xe41f('0x15'));var licenseUtil=require(_0xe41f('0x16'));var db=require(_0xe41f('0x17'))['db'];config[_0xe41f('0x18')]=_[_0xe41f('0x19')](config[_0xe41f('0x18')],{'host':_0xe41f('0x1a'),'port':0x18eb});var socket=require(_0xe41f('0x1b'))(new Redis(config[_0xe41f('0x18')]));require('./voiceQueue.socket')[_0xe41f('0x1c')](socket);function respondWithStatusCode(_0x13a2dd,_0x544753){_0x544753=_0x544753||0xcc;return function(_0x16bc30){if(_0x16bc30){return _0x13a2dd[_0xe41f('0x1d')](_0x544753);}return _0x13a2dd[_0xe41f('0x1e')](_0x544753)[_0xe41f('0x1f')]();};}function respondWithResult(_0x194653,_0x3e4e83){_0x3e4e83=_0x3e4e83||0xc8;return function(_0xab3c7d){if(_0xab3c7d){return _0x194653['status'](_0x3e4e83)['json'](_0xab3c7d);}};}function respondWithFilteredResult(_0x2b5688,_0x5e59e2){return function(_0x5b5dd7){if(_0x5b5dd7){var _0x831479=typeof _0x5e59e2[_0xe41f('0x20')]===_0xe41f('0x21')&&typeof _0x5e59e2[_0xe41f('0x22')]===_0xe41f('0x21');var _0x5bd220=_0x5b5dd7[_0xe41f('0x23')];var _0x5339dd=_0x831479?0x0:_0x5e59e2[_0xe41f('0x20')];var _0x2c264c=_0x831479?_0x5b5dd7['count']:_0x5e59e2[_0xe41f('0x20')]+_0x5e59e2[_0xe41f('0x22')];var _0x171851;if(_0x2c264c>=_0x5bd220){_0x2c264c=_0x5bd220;_0x171851=0xc8;}else{_0x171851=0xce;}_0x2b5688['status'](_0x171851);return _0x2b5688[_0xe41f('0x24')](_0xe41f('0x25'),_0x5339dd+'-'+_0x2c264c+'/'+_0x5bd220)[_0xe41f('0x26')](_0x5b5dd7);}return null;};}function patchUpdates(_0x10ee63){return function(_0xa647ca){try{jsonpatch[_0xe41f('0x27')](_0xa647ca,_0x10ee63,!![]);}catch(_0x9c0c33){return BPromise['reject'](_0x9c0c33);}return _0xa647ca[_0xe41f('0x28')]();};}function saveUpdates(_0x5a443f,_0x4e8587){return function(_0x2f586e){if(_0x2f586e){return _0x2f586e[_0xe41f('0x29')](_0x5a443f)[_0xe41f('0x2a')](function(_0x4f7965){return _0x4f7965;});}return null;};}function removeEntity(_0x1ac25a,_0x573b3){return function(_0x115701){if(_0x115701){return _0x115701['destroy']()[_0xe41f('0x2a')](function(){var _0x5790ae=_0x115701[_0xe41f('0x2b')]({'plain':!![]});var _0x44fb04=[{'name':'VoiceQueues','value':_0xe41f('0x2c'),'ignore':![]},{'name':_0xe41f('0x2d'),'value':_0xe41f('0x2e'),'ignore':![]}];var _0x68f74c=_(_0x44fb04)[_0xe41f('0x2f')](_0xe41f('0x30'))[_0xe41f('0x31')](_0xe41f('0x32'))[_0xe41f('0x32')]();if(_[_0xe41f('0x33')](_0x68f74c,_0x5790ae[_0xe41f('0x34')])){return;}var _0x60008=_[_0xe41f('0x35')](_0x44fb04,[_0xe41f('0x32'),_0x5790ae[_0xe41f('0x34')]])['name'];return db[_0xe41f('0x36')][_0xe41f('0x37')]({'where':{'type':_0x60008,'resourceId':_0x5790ae['id']}})[_0xe41f('0x2a')](function(){return _0x115701;});})[_0xe41f('0x2a')](function(){_0x1ac25a[_0xe41f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b1e86,_0x157aa0){return function(_0x3a3dbe){if(!_0x3a3dbe){_0x3b1e86[_0xe41f('0x1d')](0x194);}return _0x3a3dbe;};}function handleError(_0x51a34a,_0x59794a){_0x59794a=_0x59794a||0x1f4;return function(_0x52e335){logger[_0xe41f('0x38')](_0x52e335[_0xe41f('0x39')]);if(_0x52e335[_0xe41f('0x3a')]){delete _0x52e335['name'];}_0x51a34a[_0xe41f('0x1e')](_0x59794a)[_0xe41f('0x3b')](_0x52e335);};}exports[_0xe41f('0x3c')]=function(_0x205f3a,_0x182e32){var _0x3d9090={},_0x44f99b={},_0x2bc67a={'count':0x0,'rows':[]};var _0x1c8ef2=_[_0xe41f('0x31')](db[_0xe41f('0x3d')][_0xe41f('0x3e')],function(_0x508d2a){return{'name':_0x508d2a[_0xe41f('0x3f')],'type':_0x508d2a['type'][_0xe41f('0x40')]};});_0x44f99b['model']=_[_0xe41f('0x31')](_0x1c8ef2,'name');_0x44f99b['query']=_[_0xe41f('0x41')](_0x205f3a[_0xe41f('0x42')]);_0x44f99b[_0xe41f('0x43')]=_[_0xe41f('0x44')](_0x44f99b[_0xe41f('0x45')],_0x44f99b['query']);_0x3d9090[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x44f99b[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x205f3a[_0xe41f('0x42')][_0xe41f('0x47')]));_0x3d9090[_0xe41f('0x46')]=_0x3d9090['attributes'][_0xe41f('0x48')]?_0x3d9090[_0xe41f('0x46')]:_0x44f99b[_0xe41f('0x45')];if(!_0x205f3a[_0xe41f('0x42')][_0xe41f('0x49')](_0xe41f('0x4a'))){_0x3d9090[_0xe41f('0x22')]=qs[_0xe41f('0x22')](_0x205f3a[_0xe41f('0x42')]['limit']);_0x3d9090['offset']=qs[_0xe41f('0x20')](_0x205f3a['query'][_0xe41f('0x20')]);}_0x3d9090[_0xe41f('0x4b')]=qs[_0xe41f('0x4c')](_0x205f3a['query'][_0xe41f('0x4c')]);_0x3d9090[_0xe41f('0x4d')]=qs['filters'](_['pick'](_0x205f3a[_0xe41f('0x42')],_0x44f99b[_0xe41f('0x43')]),_0x1c8ef2);if(_0x205f3a[_0xe41f('0x42')][_0xe41f('0x2f')]){_0x3d9090[_0xe41f('0x4d')]=_[_0xe41f('0x4e')](_0x3d9090[_0xe41f('0x4d')],{'$or':_['map'](_0x1c8ef2,function(_0x255aa8){if(_0x255aa8[_0xe41f('0x34')]!=='VIRTUAL'){var _0x2bb953={};_0x2bb953[_0x255aa8['name']]={'$like':'%'+_0x205f3a[_0xe41f('0x42')][_0xe41f('0x2f')]+'%'};return _0x2bb953;}})});}_0x3d9090=_[_0xe41f('0x4e')]({},_0x3d9090,_0x205f3a['options']);var _0x3870a2={'where':_0x3d9090['where']};return db[_0xe41f('0x3d')][_0xe41f('0x23')](_0x3870a2)[_0xe41f('0x2a')](function(_0x16fd5c){_0x2bc67a[_0xe41f('0x23')]=_0x16fd5c;if(_0x205f3a[_0xe41f('0x42')][_0xe41f('0x4f')]){_0x3d9090[_0xe41f('0x50')]=[{'all':!![]}];}return db['VoiceQueue'][_0xe41f('0x51')](_0x3d9090);})['then'](function(_0x1688cb){_0x2bc67a['rows']=_0x1688cb;return _0x2bc67a;})[_0xe41f('0x2a')](respondWithFilteredResult(_0x182e32,_0x3d9090))[_0xe41f('0x52')](handleError(_0x182e32,null));};exports[_0xe41f('0x53')]=function(_0x35b7f5,_0x4be69e){var _0xf70388={'raw':![],'where':{'id':_0x35b7f5[_0xe41f('0x54')]['id']}},_0x49bcac={};_0x49bcac[_0xe41f('0x45')]=_[_0xe41f('0x41')](db[_0xe41f('0x3d')]['rawAttributes']);_0x49bcac[_0xe41f('0x42')]=_['keys'](_0x35b7f5['query']);_0x49bcac['filters']=_[_0xe41f('0x44')](_0x49bcac[_0xe41f('0x45')],_0x49bcac['query']);_0xf70388[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x49bcac[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x35b7f5[_0xe41f('0x42')][_0xe41f('0x47')]));_0xf70388[_0xe41f('0x46')]=_0xf70388[_0xe41f('0x46')][_0xe41f('0x48')]?_0xf70388[_0xe41f('0x46')]:_0x49bcac['model'];if(_0x35b7f5[_0xe41f('0x42')][_0xe41f('0x4f')]){_0xf70388[_0xe41f('0x50')]=[{'all':!![]}];}_0xf70388=_['merge']({},_0xf70388,_0x35b7f5[_0xe41f('0x55')]);return db[_0xe41f('0x3d')][_0xe41f('0x35')](_0xf70388)[_0xe41f('0x2a')](handleEntityNotFound(_0x4be69e,null))[_0xe41f('0x2a')](respondWithResult(_0x4be69e,null))['catch'](handleError(_0x4be69e,null));};exports[_0xe41f('0x56')]=function(_0x33600c,_0x55594c){return db['VoiceQueue']['create'](_0x33600c[_0xe41f('0x57')],{})[_0xe41f('0x2a')](function(_0x2d8a6a){var _0x2136a5=_0x33600c[_0xe41f('0x58')][_0xe41f('0x2b')]({'plain':!![]});if(!_0x2136a5)throw new Error(_0xe41f('0x59'));if(_0x2136a5[_0xe41f('0x5a')]==='user'){var _0x1e70ba=_0x2d8a6a[_0xe41f('0x2b')]({'plain':!![]});var _0x5efe4e=[{'name':_0xe41f('0x5b'),'value':_0xe41f('0x2c')},{'name':'QueueCampaigns','value':_0xe41f('0x2e')}];var _0x107370=_['find'](_0x5efe4e,[_0xe41f('0x32'),_0x1e70ba[_0xe41f('0x34')]])[_0xe41f('0x3a')];return db[_0xe41f('0x5c')][_0xe41f('0x35')]({'where':{'name':_0x107370,'userProfileId':_0x2136a5[_0xe41f('0x5d')]},'raw':!![]})['then'](function(_0x1d5017){if(_0x1d5017&&_0x1d5017[_0xe41f('0x5e')]===0x0){return db['UserProfileResource'][_0xe41f('0x56')]({'name':_0x1e70ba[_0xe41f('0x3a')],'resourceId':_0x1e70ba['id'],'type':_0x1d5017[_0xe41f('0x3a')],'sectionId':_0x1d5017['id']},{})['then'](function(){return _0x2d8a6a;});}else{return _0x2d8a6a;}})[_0xe41f('0x52')](function(_0x2218dd){logger[_0xe41f('0x38')](_0xe41f('0x5f'),_0x2218dd);throw _0x2218dd;});}return _0x2d8a6a;})['then'](respondWithResult(_0x55594c,0xc9))[_0xe41f('0x52')](handleError(_0x55594c,null));};exports[_0xe41f('0x60')]=function(_0x51c5ae,_0x53781a){var _0x15ba6a={'where':{'id':_0x51c5ae['params']['id']}},_0x2e284e={};_0x2e284e[_0xe41f('0x45')]=_[_0xe41f('0x41')](db[_0xe41f('0x3d')]['rawAttributes']);_0x15ba6a[_0xe41f('0x46')]=_['intersection'](_0x2e284e[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x51c5ae[_0xe41f('0x42')][_0xe41f('0x47')]));_0x15ba6a[_0xe41f('0x46')]=_0x15ba6a[_0xe41f('0x46')][_0xe41f('0x48')]?_0x15ba6a['attributes']:_0x2e284e[_0xe41f('0x45')];if(_0x51c5ae[_0xe41f('0x42')][_0xe41f('0x4f')]){_0x15ba6a['include']=[{'all':!![]}];}_0x15ba6a=_['merge']({},_0x15ba6a,_0x51c5ae['options']);return db[_0xe41f('0x3d')]['find'](_0x15ba6a)[_0xe41f('0x2a')](handleEntityNotFound(_0x53781a,null))['then'](function(_0x5c729d){if(_0x5c729d){var _0x4e01d4=_0x5c729d[_0xe41f('0x2b')]({'plain':!![]});_0x4e01d4=qs[_0xe41f('0x61')](_0x4e01d4,['id',_0xe41f('0x62'),_0xe41f('0x63')]);_0x51c5ae[_0xe41f('0x57')]=_['omit'](_0x51c5ae[_0xe41f('0x57')],['id',_0xe41f('0x62'),'updatedAt']);return db['VoiceQueue'][_0xe41f('0x56')](_['merge'](_0x4e01d4,_0x51c5ae[_0xe41f('0x57')]),{'include':_0x51c5ae[_0xe41f('0x42')][_0xe41f('0x4f')]?[{'all':!![]}]:undefined})['then'](function(_0x524bc3){var _0x4fa7f0=_0x51c5ae['user']['get']({'plain':!![]});if(!_0x4fa7f0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4fa7f0[_0xe41f('0x5a')]===_0xe41f('0x58')){var _0x37471b=_0x524bc3[_0xe41f('0x2b')]({'plain':!![]});var _0x25a72e=[{'name':_0xe41f('0x5b'),'value':_0xe41f('0x2c')},{'name':_0xe41f('0x2d'),'value':_0xe41f('0x2e')}];var _0x585880=_['find'](_0x25a72e,[_0xe41f('0x32'),_0x37471b[_0xe41f('0x34')]])[_0xe41f('0x3a')];return db['UserProfileSection'][_0xe41f('0x35')]({'where':{'name':_0x585880,'userProfileId':_0x4fa7f0[_0xe41f('0x5d')]},'raw':!![]})[_0xe41f('0x2a')](function(_0x38b75c){if(_0x38b75c&&_0x38b75c[_0xe41f('0x5e')]===0x0){return db[_0xe41f('0x36')]['create']({'name':_0x37471b[_0xe41f('0x3a')],'resourceId':_0x37471b['id'],'type':_0x38b75c['name'],'sectionId':_0x38b75c['id']},{})[_0xe41f('0x2a')](function(){return _0x524bc3;});}else{return _0x524bc3;}})['catch'](function(_0x2cfa6c){logger[_0xe41f('0x38')](_0xe41f('0x5f'),_0x2cfa6c);throw _0x2cfa6c;});}return _0x524bc3;});}})[_0xe41f('0x2a')](respondWithResult(_0x53781a,0xc9))['catch'](handleError(_0x53781a,null));};exports['update']=function(_0x2e9ff9,_0x430dac){if(_0x2e9ff9[_0xe41f('0x57')]['id']){delete _0x2e9ff9[_0xe41f('0x57')]['id'];}return db[_0xe41f('0x3d')][_0xe41f('0x35')]({'where':{'id':_0x2e9ff9['params']['id']}})['then'](handleEntityNotFound(_0x430dac,null))['then'](saveUpdates(_0x2e9ff9['body'],null))[_0xe41f('0x2a')](respondWithResult(_0x430dac,null))[_0xe41f('0x52')](handleError(_0x430dac,null));};exports[_0xe41f('0x37')]=function(_0x45a51f,_0xb9c8d7){return db[_0xe41f('0x3d')][_0xe41f('0x35')]({'where':{'id':_0x45a51f['params']['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0xb9c8d7,null))[_0xe41f('0x2a')](removeEntity(_0xb9c8d7,null))[_0xe41f('0x52')](handleError(_0xb9c8d7,null));};exports[_0xe41f('0x64')]=function(_0x476cf6,_0x377930,_0xf6c719){var _0x300c5a={'raw':![],'where':{}};var _0x5ce1da={};var _0x326836={'count':0x0,'rows':[]};return db[_0xe41f('0x3d')][_0xe41f('0x65')]({'where':{'id':_0x476cf6[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x377930,null))['then'](function(_0x752620){if(_0x752620){_0x5ce1da[_0xe41f('0x45')]=_[_0xe41f('0x41')](db['CmHopper'][_0xe41f('0x3e')]);_0x5ce1da[_0xe41f('0x42')]=_[_0xe41f('0x41')](_0x476cf6[_0xe41f('0x42')]);_0x5ce1da[_0xe41f('0x43')]=_['intersection'](_0x5ce1da['model'],_0x5ce1da[_0xe41f('0x42')]);_0x300c5a[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x5ce1da[_0xe41f('0x45')],qs['fields'](_0x476cf6[_0xe41f('0x42')][_0xe41f('0x47')]));_0x300c5a['attributes']=_0x300c5a[_0xe41f('0x46')][_0xe41f('0x48')]?_0x300c5a[_0xe41f('0x46')]:_0x5ce1da[_0xe41f('0x45')];if(!_0x476cf6[_0xe41f('0x42')][_0xe41f('0x49')]('nolimit')){_0x300c5a[_0xe41f('0x22')]=qs[_0xe41f('0x22')](_0x476cf6[_0xe41f('0x42')][_0xe41f('0x22')]);_0x300c5a[_0xe41f('0x20')]=qs[_0xe41f('0x20')](_0x476cf6[_0xe41f('0x42')]['offset']);}_0x300c5a[_0xe41f('0x4b')]=qs['sort'](_0x476cf6[_0xe41f('0x42')][_0xe41f('0x4c')]);_0x300c5a[_0xe41f('0x4d')]=qs[_0xe41f('0x43')](_['pick'](_0x476cf6[_0xe41f('0x42')],_0x5ce1da['filters']));_0x300c5a[_0xe41f('0x4d')][_0xe41f('0x66')]=_0x752620['id'];if(_0x476cf6['query'][_0xe41f('0x2f')]){_0x300c5a[_0xe41f('0x4d')]=_['merge'](_0x300c5a['where'],{'$or':_[_0xe41f('0x31')](_0x300c5a[_0xe41f('0x46')],function(_0x422a0a){var _0x2a3bb6={};_0x2a3bb6[_0x422a0a]={'$like':'%'+_0x476cf6[_0xe41f('0x42')][_0xe41f('0x2f')]+'%'};return _0x2a3bb6;})});}_0x300c5a=_[_0xe41f('0x4e')]({},_0x300c5a,_0x476cf6[_0xe41f('0x55')]);return db[_0xe41f('0x67')][_0xe41f('0x23')]({'where':_0x300c5a['where']})[_0xe41f('0x2a')](function(_0x17bd89){_0x326836['count']=_0x17bd89;if(_0x476cf6[_0xe41f('0x42')][_0xe41f('0x4f')]){_0x300c5a[_0xe41f('0x50')]=[{'all':!![]}];}return db[_0xe41f('0x67')][_0xe41f('0x51')](_0x300c5a);})[_0xe41f('0x2a')](function(_0xb52da0){_0x326836[_0xe41f('0x68')]=_0xb52da0;return _0x326836;});}})[_0xe41f('0x2a')](respondWithFilteredResult(_0x377930,_0x300c5a))[_0xe41f('0x52')](handleError(_0x377930,null));};exports['getHopperHistories']=function(_0x489a94,_0x4cf71d,_0x2039b6){var _0x45fbb3={'raw':!![],'where':{}};var _0x22edc4={};var _0x4c5e53={'count':0x0,'rows':[]};return db[_0xe41f('0x3d')]['findOne']({'where':{'id':_0x489a94[_0xe41f('0x54')]['id']}})['then'](handleEntityNotFound(_0x4cf71d,null))[_0xe41f('0x2a')](function(_0x529033){if(_0x529033){_0x22edc4[_0xe41f('0x45')]=_[_0xe41f('0x41')](db[_0xe41f('0x69')][_0xe41f('0x3e')]);_0x22edc4['query']=_[_0xe41f('0x41')](_0x489a94[_0xe41f('0x42')]);_0x22edc4[_0xe41f('0x43')]=_[_0xe41f('0x44')](_0x22edc4[_0xe41f('0x45')],_0x22edc4[_0xe41f('0x42')]);_0x45fbb3[_0xe41f('0x46')]=_['intersection'](_0x22edc4[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x489a94['query'][_0xe41f('0x47')]));_0x45fbb3[_0xe41f('0x46')]=_0x45fbb3['attributes']['length']?_0x45fbb3['attributes']:_0x22edc4[_0xe41f('0x45')];if(!_0x489a94[_0xe41f('0x42')]['hasOwnProperty'](_0xe41f('0x4a'))){_0x45fbb3[_0xe41f('0x22')]=qs[_0xe41f('0x22')](_0x489a94[_0xe41f('0x42')][_0xe41f('0x22')]);_0x45fbb3[_0xe41f('0x20')]=qs[_0xe41f('0x20')](_0x489a94[_0xe41f('0x42')][_0xe41f('0x20')]);}_0x45fbb3[_0xe41f('0x4b')]=qs[_0xe41f('0x4c')](_0x489a94[_0xe41f('0x42')][_0xe41f('0x4c')]);_0x45fbb3[_0xe41f('0x4d')]=qs[_0xe41f('0x43')](_['pick'](_0x489a94[_0xe41f('0x42')],_0x22edc4[_0xe41f('0x43')]));_0x45fbb3['where'][_0xe41f('0x66')]=_0x529033['id'];if(_0x489a94[_0xe41f('0x42')][_0xe41f('0x2f')]){_0x45fbb3[_0xe41f('0x4d')]=_[_0xe41f('0x4e')](_0x45fbb3[_0xe41f('0x4d')],{'$or':_[_0xe41f('0x31')](_0x45fbb3[_0xe41f('0x46')],function(_0x40b7cd){var _0x45f81f={};_0x45f81f[_0x40b7cd]={'$like':'%'+_0x489a94['query'][_0xe41f('0x2f')]+'%'};return _0x45f81f;})});}_0x45fbb3=_[_0xe41f('0x4e')]({},_0x45fbb3,_0x489a94[_0xe41f('0x55')]);return db[_0xe41f('0x69')]['count']({'where':_0x45fbb3['where']})[_0xe41f('0x2a')](function(_0xcddae3){_0x4c5e53[_0xe41f('0x23')]=_0xcddae3;if(_0x489a94['query'][_0xe41f('0x4f')]){_0x45fbb3[_0xe41f('0x50')]=[{'all':!![]}];}return db[_0xe41f('0x69')]['findAll'](_0x45fbb3);})['then'](function(_0x1a2194){_0x4c5e53['rows']=_0x1a2194;return _0x4c5e53;});}})[_0xe41f('0x2a')](respondWithFilteredResult(_0x4cf71d,_0x45fbb3))['catch'](handleError(_0x4cf71d,null));};exports[_0xe41f('0x6a')]=function(_0x2602ba,_0x2cd117,_0x56e207){var _0xb24bc={'raw':!![],'where':{}};var _0x3326c1={};var _0x5787b4={'count':0x0,'rows':[]};return db[_0xe41f('0x3d')][_0xe41f('0x65')]({'where':{'id':_0x2602ba[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x2cd117,null))[_0xe41f('0x2a')](function(_0x20e303){if(_0x20e303){_0x3326c1['model']=_[_0xe41f('0x41')](db[_0xe41f('0x6b')][_0xe41f('0x3e')]);_0x3326c1[_0xe41f('0x42')]=_['keys'](_0x2602ba[_0xe41f('0x42')]);_0x3326c1[_0xe41f('0x43')]=_[_0xe41f('0x44')](_0x3326c1[_0xe41f('0x45')],_0x3326c1[_0xe41f('0x42')]);_0xb24bc[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x3326c1[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x2602ba[_0xe41f('0x42')]['fields']));_0xb24bc[_0xe41f('0x46')]=_0xb24bc[_0xe41f('0x46')][_0xe41f('0x48')]?_0xb24bc['attributes']:_0x3326c1[_0xe41f('0x45')];if(!_0x2602ba['query'][_0xe41f('0x49')](_0xe41f('0x4a'))){_0xb24bc[_0xe41f('0x22')]=qs[_0xe41f('0x22')](_0x2602ba[_0xe41f('0x42')][_0xe41f('0x22')]);_0xb24bc[_0xe41f('0x20')]=qs['offset'](_0x2602ba[_0xe41f('0x42')][_0xe41f('0x20')]);}_0xb24bc['order']=qs[_0xe41f('0x4c')](_0x2602ba[_0xe41f('0x42')]['sort']);_0xb24bc[_0xe41f('0x4d')]=qs[_0xe41f('0x43')](_['pick'](_0x2602ba['query'],_0x3326c1[_0xe41f('0x43')]));_0xb24bc['where'][_0xe41f('0x66')]=_0x20e303['id'];if(_0x2602ba[_0xe41f('0x42')][_0xe41f('0x2f')]){_0xb24bc[_0xe41f('0x4d')]=_[_0xe41f('0x4e')](_0xb24bc['where'],{'$or':_[_0xe41f('0x31')](_0xb24bc[_0xe41f('0x46')],function(_0x41810e){var _0x3cf75e={};_0x3cf75e[_0x41810e]={'$like':'%'+_0x2602ba[_0xe41f('0x42')][_0xe41f('0x2f')]+'%'};return _0x3cf75e;})});}_0xb24bc=_[_0xe41f('0x4e')]({},_0xb24bc,_0x2602ba[_0xe41f('0x55')]);return db[_0xe41f('0x6b')]['count']({'where':_0xb24bc[_0xe41f('0x4d')]})[_0xe41f('0x2a')](function(_0x1f5051){_0x5787b4['count']=_0x1f5051;if(_0x2602ba['query'][_0xe41f('0x4f')]){_0xb24bc['include']=[{'all':!![]}];}return db[_0xe41f('0x6b')][_0xe41f('0x51')](_0xb24bc);})[_0xe41f('0x2a')](function(_0x18ece8){_0x5787b4[_0xe41f('0x68')]=_0x18ece8;return _0x5787b4;});}})['then'](respondWithFilteredResult(_0x2cd117,_0xb24bc))[_0xe41f('0x52')](handleError(_0x2cd117,null));};exports[_0xe41f('0x6c')]=function(_0x1ba63c,_0x37a5ca,_0x48c4ca){var _0xef729b={'raw':!![],'where':{}};var _0x2e340a={};var _0x452a81={'count':0x0,'rows':[]};return db[_0xe41f('0x3d')][_0xe41f('0x65')]({'where':{'id':_0x1ba63c['params']['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x37a5ca,null))[_0xe41f('0x2a')](function(_0x3c9052){if(_0x3c9052){_0x2e340a['model']=_[_0xe41f('0x41')](db[_0xe41f('0x6d')][_0xe41f('0x3e')]);_0x2e340a[_0xe41f('0x42')]=_[_0xe41f('0x41')](_0x1ba63c['query']);_0x2e340a['filters']=_[_0xe41f('0x44')](_0x2e340a[_0xe41f('0x45')],_0x2e340a['query']);_0xef729b[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x2e340a[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x1ba63c[_0xe41f('0x42')]['fields']));_0xef729b[_0xe41f('0x46')]=_0xef729b[_0xe41f('0x46')][_0xe41f('0x48')]?_0xef729b[_0xe41f('0x46')]:_0x2e340a['model'];if(!_0x1ba63c['query']['hasOwnProperty'](_0xe41f('0x4a'))){_0xef729b['limit']=qs['limit'](_0x1ba63c[_0xe41f('0x42')][_0xe41f('0x22')]);_0xef729b[_0xe41f('0x20')]=qs[_0xe41f('0x20')](_0x1ba63c['query'][_0xe41f('0x20')]);}_0xef729b[_0xe41f('0x4b')]=qs['sort'](_0x1ba63c[_0xe41f('0x42')][_0xe41f('0x4c')]);_0xef729b[_0xe41f('0x4d')]=qs[_0xe41f('0x43')](_[_0xe41f('0x6e')](_0x1ba63c[_0xe41f('0x42')],_0x2e340a[_0xe41f('0x43')]));_0xef729b[_0xe41f('0x4d')][_0xe41f('0x66')]=_0x3c9052['id'];if(_0x1ba63c[_0xe41f('0x42')][_0xe41f('0x2f')]){_0xef729b[_0xe41f('0x4d')]=_[_0xe41f('0x4e')](_0xef729b[_0xe41f('0x4d')],{'$or':_[_0xe41f('0x31')](_0xef729b[_0xe41f('0x46')],function(_0x1f9673){var _0x10d584={};_0x10d584[_0x1f9673]={'$like':'%'+_0x1ba63c[_0xe41f('0x42')][_0xe41f('0x2f')]+'%'};return _0x10d584;})});}_0xef729b=_[_0xe41f('0x4e')]({},_0xef729b,_0x1ba63c['options']);return db[_0xe41f('0x6d')]['count']({'where':_0xef729b[_0xe41f('0x4d')]})[_0xe41f('0x2a')](function(_0x5c89cb){_0x452a81[_0xe41f('0x23')]=_0x5c89cb;if(_0x1ba63c[_0xe41f('0x42')]['includeAll']){_0xef729b[_0xe41f('0x50')]=[{'all':!![]}];}return db[_0xe41f('0x6d')][_0xe41f('0x51')](_0xef729b);})[_0xe41f('0x2a')](function(_0x4cc611){_0x452a81['rows']=_0x4cc611;return _0x452a81;});}})[_0xe41f('0x2a')](respondWithFilteredResult(_0x37a5ca,_0xef729b))[_0xe41f('0x52')](handleError(_0x37a5ca,null));};exports[_0xe41f('0x6f')]=function(_0x181de3,_0x1aec9f,_0x23bf66){var _0x351563={};var _0x7f8b7f={};var _0x2ba720;var _0xbf2fcb;return db[_0xe41f('0x3d')][_0xe41f('0x65')]({'where':{'id':_0x181de3[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x1aec9f,null))[_0xe41f('0x2a')](function(_0x55322e){if(_0x55322e){_0x2ba720=_0x55322e;_0x7f8b7f[_0xe41f('0x45')]=_[_0xe41f('0x41')](db[_0xe41f('0x70')][_0xe41f('0x3e')]);_0x7f8b7f[_0xe41f('0x42')]=_[_0xe41f('0x41')](_0x181de3[_0xe41f('0x42')]);_0x7f8b7f[_0xe41f('0x43')]=_[_0xe41f('0x44')](_0x7f8b7f[_0xe41f('0x45')],_0x7f8b7f[_0xe41f('0x42')]);_0x351563['attributes']=_[_0xe41f('0x44')](_0x7f8b7f[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x181de3['query'][_0xe41f('0x47')]));_0x351563[_0xe41f('0x46')]=_0x351563[_0xe41f('0x46')][_0xe41f('0x48')]?_0x351563['attributes']:_0x7f8b7f[_0xe41f('0x45')];_0x351563[_0xe41f('0x4b')]=qs['sort'](_0x181de3[_0xe41f('0x42')][_0xe41f('0x4c')]);_0x351563['where']=qs[_0xe41f('0x43')](_[_0xe41f('0x6e')](_0x181de3[_0xe41f('0x42')],_0x7f8b7f[_0xe41f('0x43')]));if(_0x181de3[_0xe41f('0x42')][_0xe41f('0x2f')]){_0x351563['where']=_[_0xe41f('0x4e')](_0x351563[_0xe41f('0x4d')],{'$or':_['map'](_0x351563[_0xe41f('0x46')],function(_0x622ec5){var _0x581769={};_0x581769[_0x622ec5]={'$like':'%'+_0x181de3[_0xe41f('0x42')]['filter']+'%'};return _0x581769;})});}_0x351563=_[_0xe41f('0x4e')]({},_0x351563,_0x181de3[_0xe41f('0x55')]);return _0x2ba720[_0xe41f('0x6f')](_0x351563);}})['then'](function(_0x597e95){if(_0x597e95){_0xbf2fcb=_0x597e95[_0xe41f('0x48')];if(!_0x181de3[_0xe41f('0x42')]['hasOwnProperty'](_0xe41f('0x4a'))){_0x351563[_0xe41f('0x22')]=qs[_0xe41f('0x22')](_0x181de3[_0xe41f('0x42')][_0xe41f('0x22')]);_0x351563[_0xe41f('0x20')]=qs['offset'](_0x181de3[_0xe41f('0x42')][_0xe41f('0x20')]);}return _0x2ba720[_0xe41f('0x6f')](_0x351563);}})[_0xe41f('0x2a')](function(_0x516507){if(_0x516507){return _0x516507?{'count':_0xbf2fcb,'rows':_0x516507}:null;}})[_0xe41f('0x2a')](respondWithResult(_0x1aec9f,null))[_0xe41f('0x52')](handleError(_0x1aec9f,null));};exports[_0xe41f('0x71')]=function(_0x5bd688,_0x1a7b27,_0x3c2f7d){var _0xe64ec=_0x5bd688[_0xe41f('0x57')][_0xe41f('0x72')];var _0x273370=_[_0xe41f('0x31')](_0xe64ec,'id');return db['Team'][_0xe41f('0x51')]({'where':{'id':_0x273370},'attributes':['id'],'include':[{'model':db[_0xe41f('0x73')],'as':'Agents','attributes':['id',_0xe41f('0x3a'),_0xe41f('0x74'),_0xe41f('0x75'),'interface'],'raw':!![]}]})[_0xe41f('0x2a')](function(_0x39fb4b){if(_0x39fb4b){var _0x10a093=_[_0xe41f('0x76')](_0x39fb4b,function(_0x18aa0f){var _0x1cc00c=_0x18aa0f[_0xe41f('0x2b')]({'plain':!![]});_0x1cc00c[_0xe41f('0x77')][_0xe41f('0x78')](function(_0x3fcb79){_0x3fcb79['penalty']=_[_0xe41f('0x35')](_0xe64ec,{'id':_0x1cc00c['id']})[_0xe41f('0x79')];});return _0x1cc00c[_0xe41f('0x77')];});return db[_0xe41f('0x3d')]['find']({'where':{'id':_0x5bd688[_0xe41f('0x54')]['id']}})['then'](function(_0x66b5b7){return db[_0xe41f('0x7a')]['transaction'](function(_0x3251b6){return _0x66b5b7['addTeams'](_0x273370,{'transaction':_0x3251b6})['then'](function(){return BPromise[_0xe41f('0x7b')](_0xe64ec,function(_0xdf55ce){return db[_0xe41f('0x7c')][_0xe41f('0x7d')]({'TeamId':_0xdf55ce['id'],'VoiceQueueId':_0x5bd688[_0xe41f('0x54')]['id'],'penalty':_0xdf55ce[_0xe41f('0x79')]},{'transaction':_0x3251b6});});})['then'](function(){return BPromise[_0xe41f('0x7b')](_0x10a093,function(_0x82c44e){return db[_0xe41f('0x7e')]['findOrCreate']({'where':{'UserId':_0x82c44e['id'],'VoiceQueueId':_0x5bd688[_0xe41f('0x54')]['id']},'defaults':{'penalty':_0x82c44e[_0xe41f('0x79')]},'transaction':_0x3251b6});});})['then'](function(){return BPromise[_0xe41f('0x7b')](_[_0xe41f('0x2f')](_0x10a093,{'online':!![]}),function(_0x338d90){return db[_0xe41f('0x7f')][_0xe41f('0x7d')]({'membername':_0x338d90[_0xe41f('0x3a')],'UserId':_0x338d90['id'],'queue_name':_0x66b5b7[_0xe41f('0x3a')],'VoiceQueueId':_0x66b5b7['id'],'interface':_[_0xe41f('0x80')](_0x338d90['interface'])?util[_0xe41f('0x81')]('SIP/%s',_0x338d90[_0xe41f('0x3a')]):_0x338d90['interface'],'paused':_0x338d90['voicePause']||![],'penalty':_0x338d90[_0xe41f('0x79')]},{'transaction':_0x3251b6});});})[_0xe41f('0x2a')](function(){_0x10a093[_0xe41f('0x78')](function(_0x5d655c){socket[_0xe41f('0x82')](_0xe41f('0x83'),{'UserId':_0x5d655c['id'],'VoiceQueueId':_0x66b5b7['id']});});});});});}})[_0xe41f('0x2a')](respondWithStatusCode(_0x1a7b27,null))[_0xe41f('0x52')](handleError(_0x1a7b27,null));};exports[_0xe41f('0x84')]=function(_0x440900,_0x275537,_0x589da8){return db['Team'][_0xe41f('0x51')]({'where':{'id':_0x440900['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xe41f('0x73')],'as':_0xe41f('0x77'),'attributes':['id'],'raw':!![]}]})[_0xe41f('0x2a')](handleEntityNotFound(_0x275537,null))[_0xe41f('0x2a')](function(_0x5b8c7f){var _0x3ef844=_[_0xe41f('0x31')](_0x5b8c7f,'id');var _0x4dcf98=[];var _0x694b31=[];var _0x938753=squel[_0xe41f('0x85')]();_0x938753[_0xe41f('0x86')](_0xe41f('0x87'))[_0xe41f('0x88')](_0xe41f('0x89'),'tq')[_0xe41f('0x8a')](_0xe41f('0x8b'),'ut',_0xe41f('0x8c'))[_0xe41f('0x4d')](_0xe41f('0x8d'),_0x440900[_0xe41f('0x54')]['id']);for(var _0x5b1b2b=0x0;_0x5b1b2b<_0x5b8c7f['length'];_0x5b1b2b+=0x1){let _0x5cf61d=_0x5b8c7f[_0x5b1b2b];for(var _0x1959ae=0x0;_0x1959ae<_0x5cf61d[_0xe41f('0x77')][_0xe41f('0x48')];_0x1959ae+=0x1){let _0x4d3b75=_0x5cf61d[_0xe41f('0x77')][_0x1959ae];var _0x1d1a29=_0x938753[_0xe41f('0x60')]();_0x1d1a29[_0xe41f('0x4d')](_0xe41f('0x8e'),_0x4d3b75['id']);_0x694b31[_0xe41f('0x8f')](db['sequelize']['query'](_0x1d1a29[_0xe41f('0x90')](),{'type':db[_0xe41f('0x7a')][_0xe41f('0x91')][_0xe41f('0x92')]})[_0xe41f('0x2a')](function(_0x1b3d0e){if(_0x1b3d0e[_0xe41f('0x48')]===0x1){return _0x4d3b75['id'];}else{var _0x424237=_[_0xe41f('0x93')](_[_0xe41f('0x31')](_0x1b3d0e,'TeamId'),function(_0x3c4401){return _[_0xe41f('0x33')](_0x3ef844,_0x3c4401);});if(_0x424237){return _0x4d3b75['id'];}}}));}}return BPromise[_0xe41f('0x94')](_0x694b31)['then'](function(_0x5adb43){_0x4dcf98=_(_0x4dcf98)['union'](_0x5adb43)[_0xe41f('0x95')]()[_0xe41f('0x32')]();return db[_0xe41f('0x3d')][_0xe41f('0x35')]({'where':{'id':_0x440900[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](function(_0x1efb37){return db[_0xe41f('0x7a')][_0xe41f('0x96')](function(_0x3f2ed1){return _0x1efb37[_0xe41f('0x84')](_0x440900[_0xe41f('0x42')][_0xe41f('0x97')],{'transaction':_0x3f2ed1})[_0xe41f('0x2a')](function(){if(!_[_0xe41f('0x98')](_0x4dcf98)){return _0x1efb37[_0xe41f('0x99')](_0x4dcf98,{'transaction':_0x3f2ed1})['then'](function(){return db[_0xe41f('0x7f')]['destroy']({'where':{'VoiceQueueId':_0x440900[_0xe41f('0x54')]['id'],'UserId':_0x4dcf98},'transaction':_0x3f2ed1});});}})['then'](function(){_0x4dcf98[_0xe41f('0x78')](function(_0x23daf4){socket[_0xe41f('0x82')](_0xe41f('0x9a'),{'UserId':_0x23daf4,'VoiceQueueId':_0x1efb37['id']});});});});});});})[_0xe41f('0x2a')](respondWithStatusCode(_0x275537,null))[_0xe41f('0x52')](handleError(_0x275537,null));};exports['addAgents']=function(_0x43d098,_0x1fdbab,_0x1a3a40){var _0x248862,_0xc14491;return db[_0xe41f('0x3d')][_0xe41f('0x35')]({'where':{'id':_0x43d098[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x1fdbab,null))[_0xe41f('0x2a')](function(_0x34fa74){if(_0x34fa74){_0xc14491=_0x34fa74;return _0x34fa74[_0xe41f('0x9b')](_0x43d098['body'][_0xe41f('0x97')],_[_0xe41f('0x61')](_0x43d098['body'],[_0xe41f('0x97'),'id'])||{})[_0xe41f('0x9c')](function(_0x1fb2bc){for(var _0x2c2b50=0x0;_0x2c2b50<_0x43d098[_0xe41f('0x57')]['ids'][_0xe41f('0x48')];_0x2c2b50+=0x1){socket['emit']('userVoiceQueue:save',{'UserId':Number(_0x43d098[_0xe41f('0x57')][_0xe41f('0x97')][_0x2c2b50]),'VoiceQueueId':Number(_0x43d098[_0xe41f('0x54')]['id'])});}return _0x1fb2bc;});}})[_0xe41f('0x2a')](function(_0x42f566){_0x248862=_0x42f566||[];if(_0xc14491){return db[_0xe41f('0x73')]['findAll']({'where':{'id':_0x43d098['body']['ids']},'attributes':['id',_0xe41f('0x3a'),_0xe41f('0x74'),_0xe41f('0x75'),_0xe41f('0x9d')],'raw':!![]});}})[_0xe41f('0x2a')](function(_0x9f112a){if(!_[_0xe41f('0x98')](_0x9f112a)){var _0x2ed35f=[];for(var _0x4dab0a=0x0;_0x4dab0a<_0x9f112a[_0xe41f('0x48')];_0x4dab0a++){if(_0x9f112a[_0x4dab0a][_0xe41f('0x74')]){_0x2ed35f['push'](db[_0xe41f('0x7f')]['upsert']({'membername':_0x9f112a[_0x4dab0a][_0xe41f('0x3a')],'UserId':_0x9f112a[_0x4dab0a]['id'],'queue_name':_0xc14491['name'],'VoiceQueueId':_0xc14491['id'],'interface':_['isNil'](_0x9f112a[_0x4dab0a][_0xe41f('0x9d')])?util['format']('SIP/%s',_0x9f112a[_0x4dab0a]['name']):_0x9f112a[_0x4dab0a]['interface'],'paused':_0x9f112a[_0x4dab0a][_0xe41f('0x75')]||![],'penalty':_0x43d098[_0xe41f('0x57')][_0xe41f('0x79')]||0x0}));}}return BPromise[_0xe41f('0x94')](_0x2ed35f);}})[_0xe41f('0x2a')](function(){return _0x248862;})[_0xe41f('0x2a')](respondWithResult(_0x1fdbab,null))['catch'](handleError(_0x1fdbab,null));};exports['removeAgents']=function(_0x153b80,_0x349006,_0x12a52b){return db['VoiceQueue'][_0xe41f('0x35')]({'where':{'id':_0x153b80[_0xe41f('0x54')]['id']}})['then'](handleEntityNotFound(_0x349006,null))[_0xe41f('0x2a')](function(_0x3942fb){if(_0x3942fb){return _0x3942fb['removeAgents'](_0x153b80[_0xe41f('0x42')][_0xe41f('0x97')])['then'](function(){if(_[_0xe41f('0x9e')](_0x153b80[_0xe41f('0x42')][_0xe41f('0x97')])){for(var _0x3ac8e2=0x0;_0x3ac8e2<_0x153b80[_0xe41f('0x42')]['ids'][_0xe41f('0x48')];_0x3ac8e2+=0x1){socket[_0xe41f('0x82')](_0xe41f('0x9a'),{'UserId':Number(_0x153b80['query'][_0xe41f('0x97')][_0x3ac8e2]),'VoiceQueueId':Number(_0x153b80[_0xe41f('0x54')]['id'])});}}else{socket[_0xe41f('0x82')](_0xe41f('0x9a'),{'UserId':Number(_0x153b80[_0xe41f('0x42')]['ids']),'VoiceQueueId':Number(_0x153b80['params']['id'])});}});}})['then'](function(_0x1fb204){return db[_0xe41f('0x7f')][_0xe41f('0x37')]({'where':{'VoiceQueueId':_0x153b80[_0xe41f('0x54')]['id'],'UserId':_0x153b80[_0xe41f('0x42')][_0xe41f('0x97')]}})[_0xe41f('0x2a')](function(){return _0x1fb204;});})[_0xe41f('0x2a')](respondWithStatusCode(_0x349006,null))[_0xe41f('0x52')](handleError(_0x349006,null));};exports[_0xe41f('0x9f')]=function(_0x5701e4,_0x57ff12,_0x4c8582){var _0x442878={};var _0x4aea75={};var _0x48deac;var _0x3d9469;return db[_0xe41f('0x3d')][_0xe41f('0x65')]({'where':{'id':_0x5701e4[_0xe41f('0x54')]['id']}})['then'](handleEntityNotFound(_0x57ff12,null))['then'](function(_0x1a923a){if(_0x1a923a){_0x48deac=_0x1a923a;_0x4aea75[_0xe41f('0x45')]=_['keys'](db[_0xe41f('0x73')]['rawAttributes']);_0x4aea75[_0xe41f('0x42')]=_['keys'](_0x5701e4[_0xe41f('0x42')]);_0x4aea75[_0xe41f('0x43')]=_['intersection'](_0x4aea75['model'],_0x4aea75[_0xe41f('0x42')]);_0x442878[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x4aea75[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x5701e4[_0xe41f('0x42')]['fields']));_0x442878[_0xe41f('0x46')]=_0x442878[_0xe41f('0x46')][_0xe41f('0x48')]?_0x442878['attributes']:_0x4aea75['model'];_0x442878[_0xe41f('0x4b')]=qs['sort'](_0x5701e4[_0xe41f('0x42')]['sort']);_0x442878['where']=qs[_0xe41f('0x43')](_['pick'](_0x5701e4[_0xe41f('0x42')],_0x4aea75[_0xe41f('0x43')]));if(_0x5701e4['query'][_0xe41f('0x2f')]){_0x442878[_0xe41f('0x4d')]=_['merge'](_0x442878[_0xe41f('0x4d')],{'$or':_[_0xe41f('0x31')](_0x442878[_0xe41f('0x46')],function(_0x466077){var _0x1dff28={};_0x1dff28[_0x466077]={'$like':'%'+_0x5701e4[_0xe41f('0x42')]['filter']+'%'};return _0x1dff28;})});}_0x442878=_[_0xe41f('0x4e')]({},_0x442878,_0x5701e4[_0xe41f('0x55')]);return _0x48deac[_0xe41f('0x9f')](_0x442878);}})[_0xe41f('0x2a')](function(_0x1eaeee){if(_0x1eaeee){_0x3d9469=_0x1eaeee['length'];if(!_0x5701e4['query']['hasOwnProperty'](_0xe41f('0x4a'))){_0x442878['limit']=qs[_0xe41f('0x22')](_0x5701e4['query']['limit']);_0x442878[_0xe41f('0x20')]=qs[_0xe41f('0x20')](_0x5701e4['query'][_0xe41f('0x20')]);}return _0x48deac[_0xe41f('0x9f')](_0x442878);}})[_0xe41f('0x2a')](function(_0x7c3b2d){if(_0x7c3b2d){return _0x7c3b2d?{'count':_0x3d9469,'rows':_0x7c3b2d}:null;}})['then'](respondWithResult(_0x57ff12,null))[_0xe41f('0x52')](handleError(_0x57ff12,null));};exports['getMembers']=function(_0x558089,_0x107fe,_0x3af5a8){var _0x573564={};var _0x29a104={};var _0x58ce5d;var _0x11adf2;return db['VoiceQueue'][_0xe41f('0x65')]({'where':{'id':_0x558089['params']['id']}})['then'](handleEntityNotFound(_0x107fe,null))[_0xe41f('0x2a')](function(_0x2c0573){if(_0x2c0573){_0x58ce5d=_0x2c0573;_0x29a104[_0xe41f('0x45')]=_[_0xe41f('0x41')](db['UserVoiceQueueRt']['rawAttributes']);_0x29a104[_0xe41f('0x42')]=_[_0xe41f('0x41')](_0x558089[_0xe41f('0x42')]);_0x29a104[_0xe41f('0x43')]=_[_0xe41f('0x44')](_0x29a104[_0xe41f('0x45')],_0x29a104[_0xe41f('0x42')]);_0x573564[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x29a104[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x558089[_0xe41f('0x42')]['fields']));_0x573564['attributes']=_0x573564['attributes'][_0xe41f('0x48')]?_0x573564[_0xe41f('0x46')]:_0x29a104['model'];_0x573564[_0xe41f('0x4b')]=qs[_0xe41f('0x4c')](_0x558089['query']['sort']);_0x573564[_0xe41f('0x4d')]=qs[_0xe41f('0x43')](_[_0xe41f('0x6e')](_0x558089[_0xe41f('0x42')],_0x29a104[_0xe41f('0x43')]));if(_0x558089['query'][_0xe41f('0x2f')]){_0x573564[_0xe41f('0x4d')]=_[_0xe41f('0x4e')](_0x573564[_0xe41f('0x4d')],{'$or':_[_0xe41f('0x31')](_0x573564[_0xe41f('0x46')],function(_0x4ba713){var _0x32f7fd={};_0x32f7fd[_0x4ba713]={'$like':'%'+_0x558089['query']['filter']+'%'};return _0x32f7fd;})});}_0x573564=_['merge']({},_0x573564,_0x558089['options']);return _0x58ce5d[_0xe41f('0xa0')](_0x573564);}})['then'](function(_0x45885b){if(_0x45885b){_0x11adf2=_0x45885b[_0xe41f('0x48')];if(!_0x558089[_0xe41f('0x42')][_0xe41f('0x49')](_0xe41f('0x4a'))){_0x573564['limit']=qs[_0xe41f('0x22')](_0x558089[_0xe41f('0x42')][_0xe41f('0x22')]);_0x573564[_0xe41f('0x20')]=qs[_0xe41f('0x20')](_0x558089[_0xe41f('0x42')][_0xe41f('0x20')]);}return _0x58ce5d[_0xe41f('0xa0')](_0x573564);}})[_0xe41f('0x2a')](function(_0x5cf60b){return _0x5cf60b?{'count':_0x11adf2,'rows':_0x5cf60b}:null;})[_0xe41f('0x2a')](respondWithResult(_0x107fe,null))[_0xe41f('0x52')](handleError(_0x107fe,null));};exports['getLists']=function(_0xe7bc4d,_0x188fac,_0x4322a4){var _0x17166e={};var _0x4054a0={};var _0x1e7da7;var _0x26257d;return db['VoiceQueue'][_0xe41f('0x65')]({'where':{'id':_0xe7bc4d[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x188fac,null))['then'](function(_0x482b7d){if(_0x482b7d){_0x1e7da7=_0x482b7d;_0x4054a0[_0xe41f('0x45')]=_[_0xe41f('0x41')](db[_0xe41f('0xa1')]['rawAttributes']);_0x4054a0['query']=_[_0xe41f('0x41')](_0xe7bc4d[_0xe41f('0x42')]);_0x4054a0[_0xe41f('0x43')]=_['intersection'](_0x4054a0[_0xe41f('0x45')],_0x4054a0[_0xe41f('0x42')]);_0x17166e[_0xe41f('0x46')]=_[_0xe41f('0x44')](_0x4054a0[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0xe7bc4d[_0xe41f('0x42')][_0xe41f('0x47')]));_0x17166e[_0xe41f('0x46')]=_0x17166e[_0xe41f('0x46')][_0xe41f('0x48')]?_0x17166e[_0xe41f('0x46')]:_0x4054a0[_0xe41f('0x45')];_0x17166e[_0xe41f('0x4b')]=qs[_0xe41f('0x4c')](_0xe7bc4d['query']['sort']);_0x17166e[_0xe41f('0x4d')]=qs['filters'](_['pick'](_0xe7bc4d[_0xe41f('0x42')],_0x4054a0[_0xe41f('0x43')]));if(_0xe7bc4d[_0xe41f('0x42')]['filter']){_0x17166e[_0xe41f('0x4d')]=_[_0xe41f('0x4e')](_0x17166e[_0xe41f('0x4d')],{'$or':_[_0xe41f('0x31')](_0x17166e[_0xe41f('0x46')],function(_0x401376){var _0x25e06c={};_0x25e06c[_0x401376]={'$like':'%'+_0xe7bc4d[_0xe41f('0x42')]['filter']+'%'};return _0x25e06c;})});}_0x17166e=_['merge']({},_0x17166e,_0xe7bc4d[_0xe41f('0x55')]);return _0x1e7da7[_0xe41f('0xa2')](_0x17166e);}})[_0xe41f('0x2a')](function(_0x5e3a22){if(_0x5e3a22){_0x26257d=_0x5e3a22['length'];if(!_0xe7bc4d[_0xe41f('0x42')]['hasOwnProperty'](_0xe41f('0x4a'))){_0x17166e[_0xe41f('0x22')]=qs[_0xe41f('0x22')](_0xe7bc4d[_0xe41f('0x42')][_0xe41f('0x22')]);_0x17166e['offset']=qs[_0xe41f('0x20')](_0xe7bc4d[_0xe41f('0x42')][_0xe41f('0x20')]);}return _0x1e7da7[_0xe41f('0xa2')](_0x17166e);}})[_0xe41f('0x2a')](function(_0x598f89){if(_0x598f89){return _0x598f89?{'count':_0x26257d,'rows':_0x598f89}:null;}})[_0xe41f('0x2a')](respondWithResult(_0x188fac,null))['catch'](handleError(_0x188fac,null));};exports['addLists']=function(_0x5dfc9f,_0x46c3b2,_0x535909){var _0x45f61a=moment()[_0xe41f('0x81')](_0xe41f('0xa3'));var _0x3d9c82,_0x332518;return db[_0xe41f('0x3d')][_0xe41f('0x35')]({'where':{'id':_0x5dfc9f[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x46c3b2,null))[_0xe41f('0x2a')](function(_0x2864c3){if(_0x2864c3){_0x332518=_0x2864c3;return _0x2864c3[_0xe41f('0xa4')](_0x5dfc9f[_0xe41f('0x57')][_0xe41f('0x97')],_[_0xe41f('0x61')](_0x5dfc9f[_0xe41f('0x57')],[_0xe41f('0x97'),'id'])||{});}return null;})[_0xe41f('0x9c')](function(_0x4ff5a9){var _0x38d8ad;_0x3d9c82=_0x4ff5a9||[];var _0x4bb242=[];if(_0x4ff5a9){for(var _0x5ab070=0x0;_0x5ab070<_0x4ff5a9[_0xe41f('0x48')];_0x5ab070+=0x1){var _0x14e00b=_0x4ff5a9[_0x5ab070]['get']({'plain':!![]});_0x332518[_0xe41f('0xa5')]=_0x5dfc9f[_0xe41f('0x57')][_0xe41f('0xa5')]?_0x5dfc9f[_0xe41f('0x57')][_0xe41f('0xa5')]:_0x332518[_0xe41f('0xa5')];switch(_0x332518['dialCheckDuplicateType']){case _0xe41f('0xa6'):_0x38d8ad=squel[_0xe41f('0xa7')]()[_0xe41f('0xa8')](_0xe41f('0xa9'))['fromQuery']([_0xe41f('0xaa'),_0xe41f('0xab'),_0xe41f('0xac'),'ListId',_0xe41f('0x66'),_0xe41f('0x62'),_0xe41f('0x63')],squel[_0xe41f('0x85')]()[_0xe41f('0x86')](_0xe41f('0xaa'),'phone')[_0xe41f('0x86')]('\x27'+_0x45f61a+'\x27',_0xe41f('0xab'))['field']('id','ContactId')[_0xe41f('0x86')](_0x14e00b[_0xe41f('0xad')]['toString'](),_0xe41f('0xae'))[_0xe41f('0x86')](_0x5dfc9f['params']['id']['toString'](),'VoiceQueueId')[_0xe41f('0x86')]('\x27'+_0x45f61a+'\x27',_0xe41f('0x62'))['field']('\x27'+_0x45f61a+'\x27','updatedAt')[_0xe41f('0x88')](_0xe41f('0xaf'))['where'](_0xe41f('0xb0'))[_0xe41f('0x4d')]('ListId\x20=\x20?',_0x14e00b[_0xe41f('0xad')][_0xe41f('0x90')]())[_0xe41f('0x4d')](_0xe41f('0xb1'))[_0xe41f('0x4d')](_0xe41f('0xb2'),squel['select']()['field'](_0xe41f('0xb3'))[_0xe41f('0x88')](_0xe41f('0xb4'))[_0xe41f('0x4d')](_0xe41f('0x8d'),_0x5dfc9f[_0xe41f('0x54')]['id'][_0xe41f('0x90')]()))[_0xe41f('0x4d')](_0xe41f('0xb2'),squel[_0xe41f('0x85')]()[_0xe41f('0x86')](_0xe41f('0xb5'))[_0xe41f('0x88')](_0xe41f('0xa9'))[_0xe41f('0x4d')](_0xe41f('0x8d'),_0x5dfc9f['params']['id'][_0xe41f('0x90')]())))[_0xe41f('0x90')]();break;case _0xe41f('0xb6'):_0x38d8ad=squel[_0xe41f('0xa7')]()[_0xe41f('0xa8')](_0xe41f('0xa9'))[_0xe41f('0xb7')]([_0xe41f('0xaa'),_0xe41f('0xab'),'ContactId',_0xe41f('0xae'),_0xe41f('0x66'),_0xe41f('0x62'),'updatedAt'],squel[_0xe41f('0x85')]()[_0xe41f('0x86')](_0xe41f('0xaa'),_0xe41f('0xaa'))[_0xe41f('0x86')]('\x27'+_0x45f61a+'\x27',_0xe41f('0xab'))[_0xe41f('0x86')]('id',_0xe41f('0xac'))[_0xe41f('0x86')](_0x14e00b[_0xe41f('0xad')][_0xe41f('0x90')](),'ListId')[_0xe41f('0x86')](_0x5dfc9f['params']['id'][_0xe41f('0x90')](),_0xe41f('0x66'))[_0xe41f('0x86')]('\x27'+_0x45f61a+'\x27',_0xe41f('0x62'))['field']('\x27'+_0x45f61a+'\x27',_0xe41f('0x63'))['from'](_0xe41f('0xaf'))['where'](_0xe41f('0xb0'))['where']('ListId\x20=\x20?',_0x14e00b['CmListId']['toString']())['where'](_0xe41f('0xb1'))[_0xe41f('0x4d')](_0xe41f('0xb2'),squel['select']()['field']('COALESCE(phone,\x27\x27)')[_0xe41f('0x88')]('cm_hopper')[_0xe41f('0x4d')]('VoiceQueueId\x20=\x20?',_0x5dfc9f[_0xe41f('0x54')]['id']['toString']())))[_0xe41f('0x90')]();break;default:_0x38d8ad=squel[_0xe41f('0xa7')]()['into'](_0xe41f('0xa9'))[_0xe41f('0xb7')]([_0xe41f('0xaa'),_0xe41f('0xab'),_0xe41f('0xac'),_0xe41f('0xae'),_0xe41f('0x66'),_0xe41f('0x62'),'updatedAt'],squel[_0xe41f('0x85')]()[_0xe41f('0x86')](_0xe41f('0xaa'),_0xe41f('0xaa'))['field']('\x27'+_0x45f61a+'\x27','scheduledAt')[_0xe41f('0x86')]('id',_0xe41f('0xac'))['field'](_0x14e00b[_0xe41f('0xad')][_0xe41f('0x90')](),_0xe41f('0xae'))['field'](_0x5dfc9f[_0xe41f('0x54')]['id'][_0xe41f('0x90')](),_0xe41f('0x66'))['field']('\x27'+_0x45f61a+'\x27',_0xe41f('0x62'))[_0xe41f('0x86')]('\x27'+_0x45f61a+'\x27',_0xe41f('0x63'))[_0xe41f('0x88')](_0xe41f('0xaf'))[_0xe41f('0x4d')](_0xe41f('0xb0'))[_0xe41f('0x4d')](_0xe41f('0xb8'),_0x14e00b[_0xe41f('0xad')][_0xe41f('0x90')]())['where'](_0xe41f('0xb1')))[_0xe41f('0x90')]();}_0x4bb242[_0xe41f('0x8f')](db['sequelize'][_0xe41f('0x42')](_0x38d8ad));}return BPromise['all'](_0x4bb242);}})[_0xe41f('0x2a')](function(){var _0x21b49b=[];var _0x138421=squel[_0xe41f('0xa7')]()['into']('cm_hopper_additional_phones')[_0xe41f('0xb7')]([_0xe41f('0xb9'),_0xe41f('0xaa'),_0xe41f('0xba'),_0xe41f('0x62'),'updatedAt'],squel[_0xe41f('0x85')]()['field'](_0xe41f('0xbb'))[_0xe41f('0x86')]('ci.item')[_0xe41f('0x86')](_0xe41f('0xbc'))[_0xe41f('0x86')]('\x27'+_0x45f61a+'\x27',_0xe41f('0x62'))[_0xe41f('0x86')]('\x27'+_0x45f61a+'\x27',_0xe41f('0x63'))[_0xe41f('0x88')](_0xe41f('0xbd'),'ci')[_0xe41f('0x8a')](_0xe41f('0xa9'),'h',_0xe41f('0xbe'))[_0xe41f('0x4d')](_0xe41f('0xbf'),_0x45f61a)[_0xe41f('0x4d')](_0xe41f('0xc0'),'PHONE'))[_0xe41f('0x90')]();_0x21b49b[_0xe41f('0x8f')](db[_0xe41f('0x7a')][_0xe41f('0x42')](_0x138421));return BPromise['all'](_0x21b49b);})[_0xe41f('0x2a')](function(){return _0x3d9c82;})[_0xe41f('0x2a')](respondWithResult(_0x46c3b2,null))[_0xe41f('0x52')](handleError(_0x46c3b2,null));};exports[_0xe41f('0xc1')]=function(_0x69b1af,_0x361c2b,_0x11a1a4){return db['VoiceQueue'][_0xe41f('0x35')]({'where':{'id':_0x69b1af['params']['id']}})['then'](handleEntityNotFound(_0x361c2b,null))[_0xe41f('0x2a')](function(_0x28a226){if(_0x28a226){return _0x28a226[_0xe41f('0xc1')](_0x69b1af[_0xe41f('0x42')]['ids']);}})['then'](function(_0x1cb07a){if(_0x1cb07a){return db[_0xe41f('0x67')][_0xe41f('0x37')]({'where':{'ListId':_0x69b1af['query'][_0xe41f('0x97')],'VoiceQueueId':_0x69b1af[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](function(){return _0x1cb07a;});}})[_0xe41f('0x2a')](respondWithStatusCode(_0x361c2b,null))[_0xe41f('0x52')](handleError(_0x361c2b,null));};exports[_0xe41f('0xc2')]=function(_0x304f4c,_0x4b245c,_0x588857){var _0x30eea4={};var _0x4bef34={};var _0x4e8e6c;var _0x131c3f;return db[_0xe41f('0x3d')][_0xe41f('0x65')]({'where':{'id':_0x304f4c[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x4b245c,null))[_0xe41f('0x2a')](function(_0x4621c7){if(_0x4621c7){_0x4e8e6c=_0x4621c7;_0x4bef34[_0xe41f('0x45')]=_['keys'](db[_0xe41f('0xa1')][_0xe41f('0x3e')]);_0x4bef34['query']=_[_0xe41f('0x41')](_0x304f4c[_0xe41f('0x42')]);_0x4bef34['filters']=_[_0xe41f('0x44')](_0x4bef34[_0xe41f('0x45')],_0x4bef34[_0xe41f('0x42')]);_0x30eea4['attributes']=_[_0xe41f('0x44')](_0x4bef34[_0xe41f('0x45')],qs[_0xe41f('0x47')](_0x304f4c['query'][_0xe41f('0x47')]));_0x30eea4[_0xe41f('0x46')]=_0x30eea4[_0xe41f('0x46')]['length']?_0x30eea4['attributes']:_0x4bef34[_0xe41f('0x45')];_0x30eea4[_0xe41f('0x4b')]=qs[_0xe41f('0x4c')](_0x304f4c[_0xe41f('0x42')][_0xe41f('0x4c')]);_0x30eea4[_0xe41f('0x4d')]=qs[_0xe41f('0x43')](_[_0xe41f('0x6e')](_0x304f4c[_0xe41f('0x42')],_0x4bef34[_0xe41f('0x43')]));if(_0x304f4c[_0xe41f('0x42')][_0xe41f('0x2f')]){_0x30eea4['where']=_[_0xe41f('0x4e')](_0x30eea4[_0xe41f('0x4d')],{'$or':_[_0xe41f('0x31')](_0x30eea4[_0xe41f('0x46')],function(_0x736931){var _0x3490f0={};_0x3490f0[_0x736931]={'$like':'%'+_0x304f4c[_0xe41f('0x42')][_0xe41f('0x2f')]+'%'};return _0x3490f0;})});}_0x30eea4=_[_0xe41f('0x4e')]({},_0x30eea4,_0x304f4c['options']);return _0x4e8e6c[_0xe41f('0xc2')](_0x30eea4);}})['then'](function(_0x518a56){if(_0x518a56){_0x131c3f=_0x518a56[_0xe41f('0x48')];if(!_0x304f4c[_0xe41f('0x42')]['hasOwnProperty'](_0xe41f('0x4a'))){_0x30eea4['limit']=qs[_0xe41f('0x22')](_0x304f4c[_0xe41f('0x42')][_0xe41f('0x22')]);_0x30eea4[_0xe41f('0x20')]=qs[_0xe41f('0x20')](_0x304f4c['query'][_0xe41f('0x20')]);}return _0x4e8e6c[_0xe41f('0xc2')](_0x30eea4);}})[_0xe41f('0x2a')](function(_0x2363e9){if(_0x2363e9){return _0x2363e9?{'count':_0x131c3f,'rows':_0x2363e9}:null;}})[_0xe41f('0x2a')](respondWithResult(_0x4b245c,null))[_0xe41f('0x52')](handleError(_0x4b245c,null));};exports[_0xe41f('0xc3')]=function(_0x491127,_0x24cb4f,_0x53b5dd){var _0x50c1e6,_0x181eb1;return db[_0xe41f('0x3d')][_0xe41f('0x35')]({'where':{'id':_0x491127[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x24cb4f,null))[_0xe41f('0x2a')](function(_0x3020f9){if(_0x3020f9){_0x181eb1=_0x3020f9;return _0x3020f9[_0xe41f('0xc3')](_0x491127[_0xe41f('0x57')][_0xe41f('0x97')],_['omit'](_0x491127[_0xe41f('0x57')],[_0xe41f('0x97'),'id'])||{});}return null;})['spread'](function(_0x424d30){var _0x3a744c;_0x50c1e6=_0x424d30||[];var _0x2727a2=[];if(_0x424d30){for(var _0x4afb28=0x0;_0x4afb28<_0x424d30['length'];_0x4afb28+=0x1){var _0x5dff85=_0x424d30[_0x4afb28][_0xe41f('0x2b')]({'plain':!![]});_0x3a744c=squel['insert']()[_0xe41f('0xa8')](_0xe41f('0xc4'))['fromQuery'](['phone',_0xe41f('0xac'),_0xe41f('0xae'),'VoiceQueueId',_0xe41f('0x62'),_0xe41f('0x63')],squel[_0xe41f('0x85')]()[_0xe41f('0x86')]('phone','phone')[_0xe41f('0x86')]('id',_0xe41f('0xac'))['field'](_0x5dff85[_0xe41f('0xad')][_0xe41f('0x90')](),_0xe41f('0xae'))['field'](_0x491127[_0xe41f('0x54')]['id']['toString'](),_0xe41f('0x66'))[_0xe41f('0x86')](_0xe41f('0xc5'),_0xe41f('0x62'))[_0xe41f('0x86')](_0xe41f('0xc5'),'updatedAt')[_0xe41f('0x88')](_0xe41f('0xaf'))[_0xe41f('0x4d')](_0xe41f('0xb0'))[_0xe41f('0x4d')](_0xe41f('0xb8'),_0x5dff85[_0xe41f('0xad')]['toString']())[_0xe41f('0x4d')](_0xe41f('0xb1')))['toString']();_0x2727a2[_0xe41f('0x8f')](db[_0xe41f('0x7a')][_0xe41f('0x42')](_0x3a744c));}return BPromise['all'](_0x2727a2);}})[_0xe41f('0x2a')](function(){return _0x50c1e6;})[_0xe41f('0x2a')](respondWithResult(_0x24cb4f,null))['catch'](handleError(_0x24cb4f,null));};exports[_0xe41f('0xc6')]=function(_0x56fb3a,_0x3c81aa,_0x5d7880){return db['VoiceQueue'][_0xe41f('0x35')]({'where':{'id':_0x56fb3a[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](handleEntityNotFound(_0x3c81aa,null))[_0xe41f('0x2a')](function(_0x4431ce){if(_0x4431ce){return _0x4431ce['removeBlackLists'](_0x56fb3a[_0xe41f('0x42')][_0xe41f('0x97')]);}})['then'](function(_0x26c2dd){if(_0x26c2dd){return db[_0xe41f('0x6d')]['destroy']({'where':{'ListId':_0x56fb3a[_0xe41f('0x42')][_0xe41f('0x97')],'VoiceQueueId':_0x56fb3a[_0xe41f('0x54')]['id']}})[_0xe41f('0x2a')](function(){return _0x26c2dd;});}})['then'](respondWithStatusCode(_0x3c81aa,null))[_0xe41f('0x52')](handleError(_0x3c81aa,null));};
\ No newline at end of file
index f75ad5d..3d4cd9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858f=['save','update','remove','emit','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x319993,_0x47e278){var _0x496a98=function(_0x34e364){while(--_0x34e364){_0x319993['push'](_0x319993['shift']());}};_0x496a98(++_0x47e278);}(_0x858f,0xf9));var _0xf858=function(_0x1fd9e7,_0x24cdbe){_0x1fd9e7=_0x1fd9e7-0x0;var _0x1781f2=_0x858f[_0x1fd9e7];return _0x1781f2;};'use strict';var EventEmitter=require(_0xf858('0x0'));var VoiceQueue=require(_0xf858('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xf858('0x2')](0x0);var events={'afterCreate':_0xf858('0x3'),'afterUpdate':_0xf858('0x4'),'afterDestroy':_0xf858('0x5')};function emitEvent(_0x3bff11){return function(_0x103c5b,_0x3c3440,_0x143c74){VoiceQueueEvents[_0xf858('0x6')](_0x3bff11+':'+_0x103c5b['id'],_0x103c5b);VoiceQueueEvents['emit'](_0x3bff11,_0x103c5b);_0x143c74(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0xf858('0x7')](e,emitEvent(event));}}module[_0xf858('0x8')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x6937=['save','remove','emit','hasOwnProperty','hook','events','VoiceQueue','setMaxListeners'];(function(_0x10af44,_0x558fa8){var _0x3eedb7=function(_0x17d844){while(--_0x17d844){_0x10af44['push'](_0x10af44['shift']());}};_0x3eedb7(++_0x558fa8);}(_0x6937,0xf5));var _0x7693=function(_0x5b6375,_0x563718){_0x5b6375=_0x5b6375-0x0;var _0x4045b4=_0x6937[_0x5b6375];return _0x4045b4;};'use strict';var EventEmitter=require(_0x7693('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x7693('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x7693('0x2')](0x0);var events={'afterCreate':_0x7693('0x3'),'afterUpdate':'update','afterDestroy':_0x7693('0x4')};function emitEvent(_0x519369){return function(_0x5ce3ba,_0x1f31c2,_0x370741){VoiceQueueEvents['emit'](_0x519369+':'+_0x5ce3ba['id'],_0x5ce3ba);VoiceQueueEvents[_0x7693('0x5')](_0x519369,_0x5ce3ba);_0x370741(null);};}for(var e in events){if(events[_0x7693('0x6')](e)){var event=events[e];VoiceQueue[_0x7693('0x7')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index cc8aade..e0787f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x3c789f,_0x9dacd1){var _0x3e8568=function(_0x456552){while(--_0x456552){_0x3c789f['push'](_0x3c789f['shift']());}};_0x3e8568(++_0x9dacd1);}(_0x70e0,0x17b));var _0x070e=function(_0x19f546,_0x2a1afd){_0x19f546=_0x19f546-0x0;var _0x51a3ff=_0x70e0[_0x19f546];return _0x51a3ff;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0x37595b,_0x30c6ed){var _0x116be6=function(_0x1a4f31){while(--_0x1a4f31){_0x37595b['push'](_0x37595b['shift']());}};_0x116be6(++_0x30c6ed);}(_0xedd9,0xfc));var _0x9edd=function(_0x209c03,_0x401c3d){_0x209c03=_0x209c03-0x0;var _0x34dd35=_0xedd9[_0x209c03];return _0x34dd35;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f9947c5..ac50914 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04c1=['raw','where','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','redis','request','then','info','VoiceQueue,\x20%s,\x20%s','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','options','attributes','include','model','map','ShowVoiceQueue','find'];(function(_0x4a5224,_0x2822be){var _0x334a3f=function(_0x294972){while(--_0x294972){_0x4a5224['push'](_0x4a5224['shift']());}};_0x334a3f(++_0x2822be);}(_0x04c1,0x92));var _0x104c=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x04c1[_0x1928c9];return _0x51b5fb;};'use strict';var _=require('lodash');var util=require(_0x104c('0x0'));var moment=require(_0x104c('0x1'));var BPromise=require(_0x104c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x104c('0x3'));var logger=require(_0x104c('0x4'))(_0x104c('0x5'));var config=require(_0x104c('0x6'));var jayson=require(_0x104c('0x7'));var client=jayson[_0x104c('0x8')]['http']({'port':0x232a});config['redis']=_[_0x104c('0x9')](config['redis'],{'host':_0x104c('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x104c('0xb')]));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x12edcf,_0x34f8c2,_0xce0c92){return new BPromise(function(_0x4af0bd,_0x9b19b4){return client[_0x104c('0xc')](_0x12edcf,_0xce0c92)[_0x104c('0xd')](function(_0x3a4f66){logger[_0x104c('0xe')](_0x104c('0xf'),_0x34f8c2,'request\x20sent');logger[_0x104c('0x10')](_0x104c('0x11'),_0x34f8c2,_0x104c('0x12'),JSON[_0x104c('0x13')](_0x3a4f66));if(_0x3a4f66[_0x104c('0x14')]){if(_0x3a4f66[_0x104c('0x14')][_0x104c('0x15')]===0x1f4){logger[_0x104c('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x34f8c2,_0x3a4f66[_0x104c('0x14')][_0x104c('0x16')]);return _0x9b19b4(_0x3a4f66['error']['message']);}logger[_0x104c('0x14')](_0x104c('0xf'),_0x34f8c2,_0x3a4f66[_0x104c('0x14')]['message']);return _0x4af0bd(_0x3a4f66[_0x104c('0x14')][_0x104c('0x16')]);}else{logger[_0x104c('0xe')](_0x104c('0xf'),_0x34f8c2,_0x104c('0x12'));_0x4af0bd(_0x3a4f66[_0x104c('0x17')][_0x104c('0x16')]);}})[_0x104c('0x18')](function(_0x3e350a){logger[_0x104c('0x14')](_0x104c('0xf'),_0x34f8c2,_0x3e350a);_0x9b19b4(_0x3e350a);});});}exports[_0x104c('0x19')]=function(_0x5475de){var _0x4f238c=this;return new Promise(function(_0x5c3f3d,_0x1e330d){return db[_0x104c('0x1a')]['findAll']({'raw':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')]['where']||null:null,'attributes':_0x5475de[_0x104c('0x1b')]?_0x5475de['options'][_0x104c('0x1c')]||null:null,'limit':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')]['limit']||null:null,'include':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')][_0x104c('0x1d')]?_['map'](_0x5475de['options'][_0x104c('0x1d')],function(_0x120b5f){return{'model':db[_0x120b5f[_0x104c('0x1e')]],'as':_0x120b5f['as'],'attributes':_0x120b5f[_0x104c('0x1c')],'include':_0x120b5f[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x120b5f['include'],function(_0x26436f){return{'model':db[_0x26436f[_0x104c('0x1e')]],'as':_0x26436f['as'],'attributes':_0x26436f[_0x104c('0x1c')],'include':_0x26436f[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x26436f[_0x104c('0x1d')],function(_0x3eec39){return{'model':db[_0x3eec39[_0x104c('0x1e')]],'as':_0x3eec39['as'],'attributes':_0x3eec39['attributes']};}):[]};}):[]};}):[]:[]})[_0x104c('0xd')](function(_0x730660){logger[_0x104c('0xe')]('GetVoiceQueue',_0x5475de);logger[_0x104c('0x10')](_0x104c('0x19'),_0x5475de,JSON[_0x104c('0x13')](_0x730660));_0x5c3f3d(_0x730660);})[_0x104c('0x18')](function(_0x41c5db){logger['error'](_0x104c('0x19'),_0x41c5db['message'],_0x5475de);_0x1e330d(_0x4f238c[_0x104c('0x14')](0x1f4,_0x41c5db[_0x104c('0x16')]));});});};exports[_0x104c('0x20')]=function(_0x4995f1){var _0x37d37a=this;return new Promise(function(_0xbba13b,_0xbcf8bc){return db[_0x104c('0x1a')][_0x104c('0x21')]({'raw':_0x4995f1[_0x104c('0x1b')]?_0x4995f1[_0x104c('0x1b')][_0x104c('0x22')]===undefined?!![]:![]:!![],'where':_0x4995f1[_0x104c('0x1b')]?_0x4995f1[_0x104c('0x1b')][_0x104c('0x23')]||null:null,'attributes':_0x4995f1[_0x104c('0x1b')]?_0x4995f1[_0x104c('0x1b')][_0x104c('0x1c')]||null:null,'include':_0x4995f1[_0x104c('0x1b')]?_0x4995f1['options'][_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x4995f1['options'][_0x104c('0x1d')],function(_0x267c4b){return{'model':db[_0x267c4b[_0x104c('0x1e')]],'as':_0x267c4b['as'],'attributes':_0x267c4b['attributes'],'include':_0x267c4b[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x267c4b[_0x104c('0x1d')],function(_0x12ee01){return{'model':db[_0x12ee01[_0x104c('0x1e')]],'as':_0x12ee01['as'],'attributes':_0x12ee01[_0x104c('0x1c')],'include':_0x12ee01[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x12ee01[_0x104c('0x1d')],function(_0x530565){return{'model':db[_0x530565[_0x104c('0x1e')]],'as':_0x530565['as'],'attributes':_0x530565['attributes']};}):[]};}):[]};}):[]:[]})[_0x104c('0xd')](function(_0x38e86a){logger[_0x104c('0xe')](_0x104c('0x20'),_0x4995f1);logger[_0x104c('0x10')](_0x104c('0x20'),_0x4995f1,JSON[_0x104c('0x13')](_0x38e86a));_0xbba13b(_0x38e86a);})[_0x104c('0x18')](function(_0x1c72cb){logger['error'](_0x104c('0x20'),_0x1c72cb[_0x104c('0x16')],_0x4995f1);_0xbcf8bc(_0x37d37a[_0x104c('0x14')](0x1f4,_0x1c72cb[_0x104c('0x16')]));});});};
\ No newline at end of file
+var _0x2bc9=['model','find','ShowVoiceQueue','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','request','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','attributes','include','map'];(function(_0x57d13b,_0x52d8cb){var _0x467696=function(_0x153000){while(--_0x153000){_0x57d13b['push'](_0x57d13b['shift']());}};_0x467696(++_0x52d8cb);}(_0x2bc9,0x13c));var _0x92bc=function(_0x5c2e5e,_0x2bc00e){_0x5c2e5e=_0x5c2e5e-0x0;var _0x46a5da=_0x2bc9[_0x5c2e5e];return _0x46a5da;};'use strict';var _=require(_0x92bc('0x0'));var util=require(_0x92bc('0x1'));var moment=require(_0x92bc('0x2'));var BPromise=require('bluebird');var rs=require(_0x92bc('0x3'));var fs=require('fs');var Redis=require(_0x92bc('0x4'));var db=require(_0x92bc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x92bc('0x6'))(_0x92bc('0x7'));var config=require(_0x92bc('0x8'));var jayson=require(_0x92bc('0x9'));var client=jayson[_0x92bc('0xa')][_0x92bc('0xb')]({'port':0x232a});config[_0x92bc('0xc')]=_['defaults'](config[_0x92bc('0xc')],{'host':_0x92bc('0xd'),'port':0x18eb});var socket=require(_0x92bc('0xe'))(new Redis(config[_0x92bc('0xc')]));require(_0x92bc('0xf'))[_0x92bc('0x10')](socket);function respondWithRpcPromise(_0x26817a,_0x384b8d,_0x49f324){return new BPromise(function(_0x2edebe,_0x440289){return client[_0x92bc('0x11')](_0x26817a,_0x49f324)['then'](function(_0x40313b){logger[_0x92bc('0x12')](_0x92bc('0x13'),_0x384b8d,_0x92bc('0x14'));logger[_0x92bc('0x15')]('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x384b8d,'request\x20sent',JSON['stringify'](_0x40313b));if(_0x40313b['error']){if(_0x40313b[_0x92bc('0x16')][_0x92bc('0x17')]===0x1f4){logger[_0x92bc('0x16')](_0x92bc('0x13'),_0x384b8d,_0x40313b['error'][_0x92bc('0x18')]);return _0x440289(_0x40313b[_0x92bc('0x16')]['message']);}logger[_0x92bc('0x16')](_0x92bc('0x13'),_0x384b8d,_0x40313b[_0x92bc('0x16')][_0x92bc('0x18')]);return _0x2edebe(_0x40313b[_0x92bc('0x16')]['message']);}else{logger['info']('VoiceQueue,\x20%s,\x20%s',_0x384b8d,_0x92bc('0x14'));_0x2edebe(_0x40313b[_0x92bc('0x19')][_0x92bc('0x18')]);}})[_0x92bc('0x1a')](function(_0x74c106){logger[_0x92bc('0x16')](_0x92bc('0x13'),_0x384b8d,_0x74c106);_0x440289(_0x74c106);});});}exports[_0x92bc('0x1b')]=function(_0x2af521){var _0x161c59=this;return new Promise(function(_0x1a8c3e,_0x380818){return db[_0x92bc('0x1c')][_0x92bc('0x1d')]({'raw':_0x2af521[_0x92bc('0x1e')]?_0x2af521[_0x92bc('0x1e')][_0x92bc('0x1f')]===undefined?!![]:![]:!![],'where':_0x2af521[_0x92bc('0x1e')]?_0x2af521[_0x92bc('0x1e')]['where']||null:null,'attributes':_0x2af521[_0x92bc('0x1e')]?_0x2af521[_0x92bc('0x1e')][_0x92bc('0x20')]||null:null,'limit':_0x2af521[_0x92bc('0x1e')]?_0x2af521['options']['limit']||null:null,'include':_0x2af521[_0x92bc('0x1e')]?_0x2af521['options'][_0x92bc('0x21')]?_[_0x92bc('0x22')](_0x2af521[_0x92bc('0x1e')][_0x92bc('0x21')],function(_0x2665f6){return{'model':db[_0x2665f6[_0x92bc('0x23')]],'as':_0x2665f6['as'],'attributes':_0x2665f6[_0x92bc('0x20')],'include':_0x2665f6['include']?_['map'](_0x2665f6[_0x92bc('0x21')],function(_0x1c6326){return{'model':db[_0x1c6326['model']],'as':_0x1c6326['as'],'attributes':_0x1c6326[_0x92bc('0x20')],'include':_0x1c6326[_0x92bc('0x21')]?_['map'](_0x1c6326[_0x92bc('0x21')],function(_0x44985d){return{'model':db[_0x44985d[_0x92bc('0x23')]],'as':_0x44985d['as'],'attributes':_0x44985d[_0x92bc('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a93c2){logger[_0x92bc('0x12')](_0x92bc('0x1b'),_0x2af521);logger[_0x92bc('0x15')](_0x92bc('0x1b'),_0x2af521,JSON['stringify'](_0x2a93c2));_0x1a8c3e(_0x2a93c2);})[_0x92bc('0x1a')](function(_0x2a6e09){logger['error'](_0x92bc('0x1b'),_0x2a6e09['message'],_0x2af521);_0x380818(_0x161c59[_0x92bc('0x16')](0x1f4,_0x2a6e09[_0x92bc('0x18')]));});});};exports['ShowVoiceQueue']=function(_0x34c4dd){var _0x24aba6=this;return new Promise(function(_0x1143fe,_0x2f8a54){return db['VoiceQueue'][_0x92bc('0x24')]({'raw':_0x34c4dd['options']?_0x34c4dd[_0x92bc('0x1e')][_0x92bc('0x1f')]===undefined?!![]:![]:!![],'where':_0x34c4dd[_0x92bc('0x1e')]?_0x34c4dd['options']['where']||null:null,'attributes':_0x34c4dd['options']?_0x34c4dd[_0x92bc('0x1e')][_0x92bc('0x20')]||null:null,'include':_0x34c4dd['options']?_0x34c4dd[_0x92bc('0x1e')]['include']?_[_0x92bc('0x22')](_0x34c4dd[_0x92bc('0x1e')][_0x92bc('0x21')],function(_0x8c0dcf){return{'model':db[_0x8c0dcf[_0x92bc('0x23')]],'as':_0x8c0dcf['as'],'attributes':_0x8c0dcf[_0x92bc('0x20')],'include':_0x8c0dcf[_0x92bc('0x21')]?_[_0x92bc('0x22')](_0x8c0dcf['include'],function(_0x44857b){return{'model':db[_0x44857b[_0x92bc('0x23')]],'as':_0x44857b['as'],'attributes':_0x44857b['attributes'],'include':_0x44857b['include']?_[_0x92bc('0x22')](_0x44857b[_0x92bc('0x21')],function(_0x2f5a3f){return{'model':db[_0x2f5a3f[_0x92bc('0x23')]],'as':_0x2f5a3f['as'],'attributes':_0x2f5a3f[_0x92bc('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x390488){logger[_0x92bc('0x12')](_0x92bc('0x25'),_0x34c4dd);logger[_0x92bc('0x15')]('ShowVoiceQueue',_0x34c4dd,JSON[_0x92bc('0x26')](_0x390488));_0x1143fe(_0x390488);})[_0x92bc('0x1a')](function(_0x4af0a9){logger['error'](_0x92bc('0x25'),_0x4af0a9[_0x92bc('0x18')],_0x34c4dd);_0x2f8a54(_0x24aba6[_0x92bc('0x16')](0x1f4,_0x4af0a9[_0x92bc('0x18')]));});});};
\ No newline at end of file
index 93184f5..dd1ba12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2746=['length','voiceQueue:','./voiceQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x410b06,_0x2d35b6){var _0x5522ee=function(_0x41333a){while(--_0x41333a){_0x410b06['push'](_0x410b06['shift']());}};_0x5522ee(++_0x2d35b6);}(_0x2746,0x146));var _0x6274=function(_0x25e4d4,_0x17f8e0){_0x25e4d4=_0x25e4d4-0x0;var _0x1d7fbe=_0x2746[_0x25e4d4];return _0x1d7fbe;};'use strict';var VoiceQueueEvents=require(_0x6274('0x0'));var events=[_0x6274('0x1'),_0x6274('0x2'),_0x6274('0x3')];function createListener(_0x5f4a59,_0x23daef){return function(_0x5734d8){_0x23daef[_0x6274('0x4')](_0x5f4a59,_0x5734d8);};}function removeListener(_0x113084,_0x42cd92){return function(){VoiceQueueEvents[_0x6274('0x5')](_0x113084,_0x42cd92);};}exports[_0x6274('0x6')]=function(_0x2e1a1f){for(var _0x49b63c=0x0,_0x44e985=events[_0x6274('0x7')];_0x49b63c<_0x44e985;_0x49b63c++){var _0x4c8bc4=events[_0x49b63c];var _0x2c235b=createListener(_0x6274('0x8')+_0x4c8bc4,_0x2e1a1f);VoiceQueueEvents['on'](_0x4c8bc4,_0x2c235b);}};
\ No newline at end of file
+var _0x5aed=['./voiceQueue.events','save','remove','emit','removeListener','register','length','voiceQueue:'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x5aed,0x138));var _0xd5ae=function(_0x55b79a,_0x54ab17){_0x55b79a=_0x55b79a-0x0;var _0xbbc0e0=_0x5aed[_0x55b79a];return _0xbbc0e0;};'use strict';var VoiceQueueEvents=require(_0xd5ae('0x0'));var events=[_0xd5ae('0x1'),_0xd5ae('0x2'),'update'];function createListener(_0x19c3ea,_0x595b84){return function(_0x2d67ee){_0x595b84[_0xd5ae('0x3')](_0x19c3ea,_0x2d67ee);};}function removeListener(_0x35923d,_0x106286){return function(){VoiceQueueEvents[_0xd5ae('0x4')](_0x35923d,_0x106286);};}exports[_0xd5ae('0x5')]=function(_0x55929a){for(var _0x5871bb=0x0,_0x3a4704=events[_0xd5ae('0x6')];_0x5871bb<_0x3a4704;_0x5871bb++){var _0x32aad2=events[_0x5871bb];var _0x1d8566=createListener(_0xd5ae('0x7')+_0x32aad2,_0x55929a);VoiceQueueEvents['on'](_0x32aad2,_0x1d8566);}};
\ No newline at end of file
index 3827b66..fcadea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a0=['/describe','describe','/index','getVoiceQueuesReport','show','post','create','put','update','/:id','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','get','isAuthenticated','index'];(function(_0x4e141a,_0x29b849){var _0x1ce7fa=function(_0xcfdfd7){while(--_0xcfdfd7){_0x4e141a['push'](_0x4e141a['shift']());}};_0x1ce7fa(++_0x29b849);}(_0x15a0,0x1ad));var _0x015a=function(_0x22cb5f,_0x2cdd63){_0x22cb5f=_0x22cb5f-0x0;var _0x274d36=_0x15a0[_0x22cb5f];return _0x274d36;};'use strict';var multer=require('multer');var util=require(_0x015a('0x0'));var path=require(_0x015a('0x1'));var timeout=require('connect-timeout');var express=require(_0x015a('0x2'));var router=express[_0x015a('0x3')]();var fs_extra=require(_0x015a('0x4'));var auth=require(_0x015a('0x5'));var interaction=require(_0x015a('0x6'));var config=require('../../config/environment');var controller=require(_0x015a('0x7'));router[_0x015a('0x8')]('/',auth[_0x015a('0x9')](),controller[_0x015a('0xa')]);router['get'](_0x015a('0xb'),auth[_0x015a('0x9')](),controller[_0x015a('0xc')]);router[_0x015a('0x8')](_0x015a('0xd'),auth[_0x015a('0x9')](),controller[_0x015a('0xe')]);router[_0x015a('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x015a('0xf')]);router[_0x015a('0x10')]('/',auth[_0x015a('0x9')](),controller[_0x015a('0x11')]);router[_0x015a('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x015a('0x13')]);router['delete'](_0x015a('0x14'),auth[_0x015a('0x9')](),controller['destroy']);module[_0x015a('0x15')]=router;
\ No newline at end of file
+var _0x11e1=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','get','/describe','describe','/index','getVoiceQueuesReport','show','post','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x11e1,0x1b4));var _0x111e=function(_0x200427,_0x4cad2b){_0x200427=_0x200427-0x0;var _0x337ac9=_0x11e1[_0x200427];return _0x337ac9;};'use strict';var multer=require(_0x111e('0x0'));var util=require(_0x111e('0x1'));var path=require(_0x111e('0x2'));var timeout=require(_0x111e('0x3'));var express=require(_0x111e('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x111e('0x5'));var interaction=require(_0x111e('0x6'));var config=require(_0x111e('0x7'));var controller=require(_0x111e('0x8'));router['get']('/',auth[_0x111e('0x9')](),controller['index']);router[_0x111e('0xa')](_0x111e('0xb'),auth[_0x111e('0x9')](),controller[_0x111e('0xc')]);router[_0x111e('0xa')](_0x111e('0xd'),auth[_0x111e('0x9')](),controller[_0x111e('0xe')]);router[_0x111e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x111e('0xf')]);router[_0x111e('0x10')]('/',auth[_0x111e('0x9')](),controller['create']);router['put'](_0x111e('0x11'),auth[_0x111e('0x9')](),controller[_0x111e('0x12')]);router[_0x111e('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x111e('0x14')]);module[_0x111e('0x15')]=router;
\ No newline at end of file
index a660aa3..d669db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4739=['STRING','DATE','getDataValue','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','moment','exports'];(function(_0x17abe0,_0x2becec){var _0x5dd1a2=function(_0x244f5e){while(--_0x244f5e){_0x17abe0['push'](_0x17abe0['shift']());}};_0x5dd1a2(++_0x2becec);}(_0x4739,0x1cc));var _0x9473=function(_0x22d114,_0x2d249b){_0x22d114=_0x22d114-0x0;var _0x17c386=_0x4739[_0x22d114];return _0x17c386;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9473('0x0'));module[_0x9473('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x9473('0x2')]},'calleridname':{'type':Sequelize[_0x9473('0x2')]},'queue':{'type':Sequelize[_0x9473('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x9473('0x3')],'set':function(_0x109a3e){var _0x1dfd1a=moment(_0x109a3e);var _0x3f9076=moment(this[_0x9473('0x4')](_0x9473('0x5')))['format'](_0x9473('0x6'));var _0xefec4e=_0x1dfd1a[_0x9473('0x7')](_0x3f9076,_0x9473('0x8'));this[_0x9473('0x9')]('queuecallerleaveAt',_0x109a3e);this[_0x9473('0x9')](_0x9473('0xa'),_0xefec4e||null);}},'position':{'type':Sequelize[_0x9473('0xb')]},'count':{'type':Sequelize[_0x9473('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x9473('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x9473('0x3')]},'queuecallerexit':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x9473('0xd')},'originalposition':{'type':Sequelize[_0x9473('0xb')]},'channel':{'type':Sequelize[_0x9473('0x2')]},'connectedlinenum':{'type':Sequelize[_0x9473('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x9473('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x9473('0x2')]},'priority':{'type':Sequelize[_0x9473('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x9473('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x9473('0x2')]},'transfer':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x9473('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x9473('0x2')]},'disposition':{'type':Sequelize[_0x9473('0x2')]},'secondDisposition':{'type':Sequelize[_0x9473('0x2')]},'thirdDisposition':{'type':Sequelize[_0x9473('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x9473('0xb')],'defaultValue':0x0},'note':{'type':Sequelize[_0x9473('0x2')]}};
\ No newline at end of file
+var _0x64f8=['COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','sequelize','moment','exports','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','INTEGER','BOOLEAN'];(function(_0x26ae4d,_0x3c56f7){var _0xc9b89a=function(_0x411561){while(--_0x411561){_0x26ae4d['push'](_0x26ae4d['shift']());}};_0xc9b89a(++_0x3c56f7);}(_0x64f8,0x139));var _0x864f=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x64f8[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x864f('0x0'));var moment=require(_0x864f('0x1'));module[_0x864f('0x2')]={'type':{'type':Sequelize[_0x864f('0x3')]},'uniqueid':{'type':Sequelize[_0x864f('0x3')]},'calleridnum':{'type':Sequelize[_0x864f('0x3')]},'calleridname':{'type':Sequelize[_0x864f('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x864f('0x4')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x2a67cb){var _0x5ce47b=moment(_0x2a67cb);var _0x562b0b=moment(this['getDataValue'](_0x864f('0x5')))['format'](_0x864f('0x6'));var _0x46aacd=_0x5ce47b[_0x864f('0x7')](_0x562b0b,'seconds');this[_0x864f('0x8')]('queuecallerleaveAt',_0x2a67cb);this[_0x864f('0x8')]('holdtime',_0x46aacd||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x864f('0x9')]},'queuecallerabandon':{'type':Sequelize[_0x864f('0xa')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x864f('0xa')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x864f('0x4')]},'queuecallerexit':{'type':Sequelize[_0x864f('0xa')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x864f('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x864f('0x3')],'comment':_0x864f('0xb')},'originalposition':{'type':Sequelize[_0x864f('0x9')]},'channel':{'type':Sequelize[_0x864f('0x3')]},'connectedlinenum':{'type':Sequelize[_0x864f('0x3')]},'connectedlinename':{'type':Sequelize[_0x864f('0x3')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x864f('0x3')]},'priority':{'type':Sequelize[_0x864f('0x3')]},'holdtime':{'type':Sequelize[_0x864f('0x9')]},'mohtime':{'type':Sequelize[_0x864f('0x9')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x864f('0xa')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x864f('0x3')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x864f('0x3')]},'transferuniqueid':{'type':Sequelize[_0x864f('0x3')]},'disposition':{'type':Sequelize[_0x864f('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x864f('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x864f('0x9')],'defaultValue':0x0},'note':{'type':Sequelize[_0x864f('0x3')]}};
\ No newline at end of file
index 85b1ac8..93f6dd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb5=['VIRTUAL','options','includeAll','rows','catch','params','length','include','create','body','find','describe','getVoiceQueuesReport','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xdcb5,0x67));var _0x5dcb=function(_0x25e286,_0x573fab){_0x25e286=_0x25e286-0x0;var _0x7be8f7=_0xdcb5[_0x25e286];return _0x7be8f7;};'use strict';var emlformat=require(_0x5dcb('0x0'));var rimraf=require(_0x5dcb('0x1'));var zipdir=require(_0x5dcb('0x2'));var jsonpatch=require(_0x5dcb('0x3'));var rp=require(_0x5dcb('0x4'));var moment=require(_0x5dcb('0x5'));var BPromise=require(_0x5dcb('0x6'));var Mustache=require(_0x5dcb('0x7'));var util=require(_0x5dcb('0x8'));var path=require(_0x5dcb('0x9'));var sox=require(_0x5dcb('0xa'));var csv=require(_0x5dcb('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5dcb('0xc'));var _=require(_0x5dcb('0xd'));var squel=require(_0x5dcb('0xe'));var crypto=require(_0x5dcb('0xf'));var jsforce=require(_0x5dcb('0x10'));var deskjs=require(_0x5dcb('0x11'));var toCsv=require(_0x5dcb('0xb'));var querystring=require(_0x5dcb('0x12'));var Papa=require(_0x5dcb('0x13'));var Redis=require(_0x5dcb('0x14'));var authService=require(_0x5dcb('0x15'));var qs=require(_0x5dcb('0x16'));var as=require(_0x5dcb('0x17'));var hardwareService=require(_0x5dcb('0x18'));var logger=require(_0x5dcb('0x19'))('api');var utils=require(_0x5dcb('0x1a'));var config=require(_0x5dcb('0x1b'));var licenseUtil=require(_0x5dcb('0x1c'));var db=require(_0x5dcb('0x1d'))['db'];config[_0x5dcb('0x1e')]=_[_0x5dcb('0x1f')](config[_0x5dcb('0x1e')],{'host':'localhost','port':0x18eb});var socket=require(_0x5dcb('0x20'))(new Redis(config[_0x5dcb('0x1e')]));require(_0x5dcb('0x21'))['register'](socket);function respondWithStatusCode(_0x317cdc,_0x564621){_0x564621=_0x564621||0xcc;return function(_0x39ec4a){if(_0x39ec4a){return _0x317cdc[_0x5dcb('0x22')](_0x564621);}return _0x317cdc[_0x5dcb('0x23')](_0x564621)['end']();};}function respondWithResult(_0x26d9a2,_0x5312ea){_0x5312ea=_0x5312ea||0xc8;return function(_0x559064){if(_0x559064){return _0x26d9a2[_0x5dcb('0x23')](_0x5312ea)[_0x5dcb('0x24')](_0x559064);}};}function respondWithFilteredResult(_0xdf01ce,_0x12440b){return function(_0x3fa5a8){if(_0x3fa5a8){var _0x3b993e=typeof _0x12440b['offset']===_0x5dcb('0x25')&&typeof _0x12440b['limit']===_0x5dcb('0x25');var _0x4e1d8d=_0x3fa5a8[_0x5dcb('0x26')];var _0xe286bf=_0x3b993e?0x0:_0x12440b[_0x5dcb('0x27')];var _0x330b37=_0x3b993e?_0x3fa5a8[_0x5dcb('0x26')]:_0x12440b[_0x5dcb('0x27')]+_0x12440b[_0x5dcb('0x28')];var _0x23559c;if(_0x330b37>=_0x4e1d8d){_0x330b37=_0x4e1d8d;_0x23559c=0xc8;}else{_0x23559c=0xce;}_0xdf01ce[_0x5dcb('0x23')](_0x23559c);return _0xdf01ce[_0x5dcb('0x29')](_0x5dcb('0x2a'),_0xe286bf+'-'+_0x330b37+'/'+_0x4e1d8d)[_0x5dcb('0x24')](_0x3fa5a8);}return null;};}function patchUpdates(_0x146841){return function(_0x2e6071){try{jsonpatch[_0x5dcb('0x2b')](_0x2e6071,_0x146841,!![]);}catch(_0x4387f1){return BPromise[_0x5dcb('0x2c')](_0x4387f1);}return _0x2e6071[_0x5dcb('0x2d')]();};}function saveUpdates(_0x4012bf,_0x2c911c){return function(_0x13f6bd){if(_0x13f6bd){return _0x13f6bd[_0x5dcb('0x2e')](_0x4012bf)[_0x5dcb('0x2f')](function(_0xed26d){return _0xed26d;});}return null;};}function removeEntity(_0xc5d53d,_0xf39f98){return function(_0x970c70){if(_0x970c70){return _0x970c70[_0x5dcb('0x30')]()[_0x5dcb('0x2f')](function(){_0xc5d53d[_0x5dcb('0x23')](0xcc)[_0x5dcb('0x31')]();});}};}function handleEntityNotFound(_0x31477d,_0x5c698e){return function(_0x11eda6){if(!_0x11eda6){_0x31477d['sendStatus'](0x194);}return _0x11eda6;};}function handleError(_0x5a6fc5,_0x88081a){_0x88081a=_0x88081a||0x1f4;return function(_0x389115){logger[_0x5dcb('0x32')](_0x389115[_0x5dcb('0x33')]);if(_0x389115[_0x5dcb('0x34')]){delete _0x389115[_0x5dcb('0x34')];}_0x5a6fc5[_0x5dcb('0x23')](_0x88081a)[_0x5dcb('0x35')](_0x389115);};}exports[_0x5dcb('0x36')]=function(_0x23ca8b,_0x4eaea0){var _0x1aaf7b={},_0x333af3={},_0x2ee69e={'count':0x0,'rows':[]};var _0x5d215c=_[_0x5dcb('0x37')](db[_0x5dcb('0x38')][_0x5dcb('0x39')],function(_0x3465b3){return{'name':_0x3465b3[_0x5dcb('0x3a')],'type':_0x3465b3[_0x5dcb('0x3b')]['key']};});_0x333af3[_0x5dcb('0x3c')]=_[_0x5dcb('0x37')](_0x5d215c,_0x5dcb('0x34'));_0x333af3[_0x5dcb('0x3d')]=_[_0x5dcb('0x3e')](_0x23ca8b['query']);_0x333af3['filters']=_[_0x5dcb('0x3f')](_0x333af3[_0x5dcb('0x3c')],_0x333af3[_0x5dcb('0x3d')]);_0x1aaf7b[_0x5dcb('0x40')]=_[_0x5dcb('0x3f')](_0x333af3[_0x5dcb('0x3c')],qs[_0x5dcb('0x41')](_0x23ca8b[_0x5dcb('0x3d')]['fields']));_0x1aaf7b[_0x5dcb('0x40')]=_0x1aaf7b[_0x5dcb('0x40')]['length']?_0x1aaf7b[_0x5dcb('0x40')]:_0x333af3[_0x5dcb('0x3c')];if(!_0x23ca8b['query'][_0x5dcb('0x42')](_0x5dcb('0x43'))){_0x1aaf7b['limit']=qs['limit'](_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x28')]);_0x1aaf7b['offset']=qs[_0x5dcb('0x27')](_0x23ca8b[_0x5dcb('0x3d')]['offset']);}_0x1aaf7b[_0x5dcb('0x44')]=qs[_0x5dcb('0x45')](_0x23ca8b['query'][_0x5dcb('0x45')]);_0x1aaf7b[_0x5dcb('0x46')]=qs[_0x5dcb('0x47')](_[_0x5dcb('0x48')](_0x23ca8b[_0x5dcb('0x3d')],_0x333af3['filters']),_0x5d215c);if(_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x49')]){_0x1aaf7b[_0x5dcb('0x46')]=_[_0x5dcb('0x4a')](_0x1aaf7b[_0x5dcb('0x46')],{'$or':_['map'](_0x5d215c,function(_0x68cce0){if(_0x68cce0[_0x5dcb('0x3b')]!==_0x5dcb('0x4b')){var _0x4aae42={};_0x4aae42[_0x68cce0[_0x5dcb('0x34')]]={'$like':'%'+_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x49')]+'%'};return _0x4aae42;}})});}_0x1aaf7b=_[_0x5dcb('0x4a')]({},_0x1aaf7b,_0x23ca8b[_0x5dcb('0x4c')]);var _0x4ad3fc={'where':_0x1aaf7b[_0x5dcb('0x46')]};return db[_0x5dcb('0x38')]['count'](_0x4ad3fc)['then'](function(_0xa264b3){_0x2ee69e['count']=_0xa264b3;if(_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x4d')]){_0x1aaf7b['include']=[{'all':!![]}];}return db[_0x5dcb('0x38')]['findAll'](_0x1aaf7b);})[_0x5dcb('0x2f')](function(_0x2503f3){_0x2ee69e[_0x5dcb('0x4e')]=_0x2503f3;return _0x2ee69e;})['then'](respondWithFilteredResult(_0x4eaea0,_0x1aaf7b))[_0x5dcb('0x4f')](handleError(_0x4eaea0,null));};exports['show']=function(_0x206fc3,_0x1cbfb8){var _0x37f4ea={'raw':![],'where':{'id':_0x206fc3[_0x5dcb('0x50')]['id']}},_0x2edccf={};_0x2edccf[_0x5dcb('0x3c')]=_[_0x5dcb('0x3e')](db[_0x5dcb('0x38')][_0x5dcb('0x39')]);_0x2edccf[_0x5dcb('0x3d')]=_[_0x5dcb('0x3e')](_0x206fc3['query']);_0x2edccf[_0x5dcb('0x47')]=_[_0x5dcb('0x3f')](_0x2edccf[_0x5dcb('0x3c')],_0x2edccf['query']);_0x37f4ea[_0x5dcb('0x40')]=_[_0x5dcb('0x3f')](_0x2edccf[_0x5dcb('0x3c')],qs[_0x5dcb('0x41')](_0x206fc3[_0x5dcb('0x3d')]['fields']));_0x37f4ea[_0x5dcb('0x40')]=_0x37f4ea['attributes'][_0x5dcb('0x51')]?_0x37f4ea[_0x5dcb('0x40')]:_0x2edccf[_0x5dcb('0x3c')];if(_0x206fc3[_0x5dcb('0x3d')][_0x5dcb('0x4d')]){_0x37f4ea[_0x5dcb('0x52')]=[{'all':!![]}];}_0x37f4ea=_[_0x5dcb('0x4a')]({},_0x37f4ea,_0x206fc3['options']);return db['VoiceQueueReport']['find'](_0x37f4ea)[_0x5dcb('0x2f')](handleEntityNotFound(_0x1cbfb8,null))[_0x5dcb('0x2f')](respondWithResult(_0x1cbfb8,null))[_0x5dcb('0x4f')](handleError(_0x1cbfb8,null));};exports[_0x5dcb('0x53')]=function(_0x184d56,_0x357a47){return db['VoiceQueueReport']['create'](_0x184d56[_0x5dcb('0x54')],{})[_0x5dcb('0x2f')](respondWithResult(_0x357a47,0xc9))['catch'](handleError(_0x357a47,null));};exports[_0x5dcb('0x2e')]=function(_0x43b640,_0xfcd0d0){if(_0x43b640[_0x5dcb('0x54')]['id']){delete _0x43b640[_0x5dcb('0x54')]['id'];}return db[_0x5dcb('0x38')]['find']({'where':{'id':_0x43b640[_0x5dcb('0x50')]['id']}})[_0x5dcb('0x2f')](handleEntityNotFound(_0xfcd0d0,null))[_0x5dcb('0x2f')](saveUpdates(_0x43b640[_0x5dcb('0x54')],null))['then'](respondWithResult(_0xfcd0d0,null))[_0x5dcb('0x4f')](handleError(_0xfcd0d0,null));};exports[_0x5dcb('0x30')]=function(_0x4bfd8c,_0x1d0e1d){return db[_0x5dcb('0x38')][_0x5dcb('0x55')]({'where':{'id':_0x4bfd8c[_0x5dcb('0x50')]['id']}})['then'](handleEntityNotFound(_0x1d0e1d,null))['then'](removeEntity(_0x1d0e1d,null))[_0x5dcb('0x4f')](handleError(_0x1d0e1d,null));};exports[_0x5dcb('0x56')]=function(_0x3b6ae0,_0x57254d){return db['VoiceQueueReport']['describe']()['then'](respondWithResult(_0x57254d,null))[_0x5dcb('0x4f')](handleError(_0x57254d,null));};exports[_0x5dcb('0x57')]=function(_0xafd586,_0x12d54e){var _0x46bf1c={},_0x591039={},_0x799a0c={'count':0x0,'rows':[]};_0x591039['model']=_[_0x5dcb('0x3e')](db[_0x5dcb('0x38')][_0x5dcb('0x39')]);_0x591039[_0x5dcb('0x3d')]=_[_0x5dcb('0x3e')](_0xafd586['query']);_0x591039[_0x5dcb('0x47')]=_[_0x5dcb('0x3f')](_0x591039[_0x5dcb('0x3c')],_0x591039[_0x5dcb('0x3d')]);_0x46bf1c[_0x5dcb('0x40')]=_[_0x5dcb('0x3f')](_0x591039['model'],qs[_0x5dcb('0x41')](_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x41')]));_0x46bf1c[_0x5dcb('0x40')]=_0x46bf1c[_0x5dcb('0x40')][_0x5dcb('0x51')]?_0x46bf1c[_0x5dcb('0x40')]:_0x591039[_0x5dcb('0x3c')];if(!_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x42')](_0x5dcb('0x43'))){_0x46bf1c['limit']=qs[_0x5dcb('0x28')](_0xafd586['query'][_0x5dcb('0x28')]);_0x46bf1c[_0x5dcb('0x27')]=qs[_0x5dcb('0x27')](_0xafd586[_0x5dcb('0x3d')]['offset']);}_0x46bf1c[_0x5dcb('0x44')]=qs['sort'](_0xafd586[_0x5dcb('0x3d')]['sort']);_0x46bf1c[_0x5dcb('0x46')]=qs['filters'](_[_0x5dcb('0x48')](_0xafd586['query'],_0x591039[_0x5dcb('0x47')]));if(_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x49')]){_0x46bf1c[_0x5dcb('0x46')]=_[_0x5dcb('0x4a')](_0x46bf1c['where'],{'$or':_[_0x5dcb('0x37')](_0x46bf1c[_0x5dcb('0x40')],function(_0x56de98){var _0x47d310={};_0x47d310[_0x56de98]={'$like':'%'+_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x49')]+'%'};return _0x47d310;})});}_0x46bf1c=_[_0x5dcb('0x4a')]({},_0x46bf1c,_0xafd586[_0x5dcb('0x4c')]);var _0x434e20={'where':_0x46bf1c[_0x5dcb('0x46')]};return db['VoiceQueueReport'][_0x5dcb('0x26')](_0x434e20)['then'](function(_0x8c2138){_0x799a0c[_0x5dcb('0x26')]=_0x8c2138;if(_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x4d')]){_0x46bf1c[_0x5dcb('0x52')]=[{'all':!![]}];}return db[_0x5dcb('0x38')][_0x5dcb('0x58')](_0x46bf1c);})[_0x5dcb('0x2f')](function(_0x4e396d){_0x799a0c[_0x5dcb('0x4e')]=_0x4e396d;return _0x799a0c;})[_0x5dcb('0x2f')](respondWithFilteredResult(_0x12d54e,_0x46bf1c,'getVoiceQueuesReport'))[_0x5dcb('0x4f')](handleError(_0x12d54e,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x8d73=['nolimit','order','sort','where','pick','filter','merge','then','catch','show','params','includeAll','include','options','create','body','update','find','describe','findAll','rows','getVoiceQueuesReport','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','register','status','end','offset','limit','count','set','Content-Range','json','reject','save','destroy','sendStatus','error','stack','name','send','VoiceQueueReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0xf0db21,_0x5d98c9){var _0x47f4cb=function(_0x551f5b){while(--_0x551f5b){_0xf0db21['push'](_0xf0db21['shift']());}};_0x47f4cb(++_0x5d98c9);}(_0x8d73,0x68));var _0x38d7=function(_0x5aba1b,_0x1d537d){_0x5aba1b=_0x5aba1b-0x0;var _0x4adba3=_0x8d73[_0x5aba1b];return _0x4adba3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x38d7('0x0'));var jsonpatch=require(_0x38d7('0x1'));var rp=require(_0x38d7('0x2'));var moment=require(_0x38d7('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x38d7('0x4'));var util=require('util');var path=require(_0x38d7('0x5'));var sox=require(_0x38d7('0x6'));var csv=require(_0x38d7('0x7'));var ejs=require(_0x38d7('0x8'));var fs=require('fs');var fs_extra=require(_0x38d7('0x9'));var _=require(_0x38d7('0xa'));var squel=require(_0x38d7('0xb'));var crypto=require(_0x38d7('0xc'));var jsforce=require(_0x38d7('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x38d7('0x7'));var querystring=require(_0x38d7('0xe'));var Papa=require(_0x38d7('0xf'));var Redis=require(_0x38d7('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x38d7('0x11'));var as=require(_0x38d7('0x12'));var hardwareService=require(_0x38d7('0x13'));var logger=require(_0x38d7('0x14'))(_0x38d7('0x15'));var utils=require(_0x38d7('0x16'));var config=require(_0x38d7('0x17'));var licenseUtil=require(_0x38d7('0x18'));var db=require(_0x38d7('0x19'))['db'];config['redis']=_[_0x38d7('0x1a')](config[_0x38d7('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x38d7('0x1b')]));require('./voiceQueueReport.socket')[_0x38d7('0x1c')](socket);function respondWithStatusCode(_0x4ceb51,_0x36bc0b){_0x36bc0b=_0x36bc0b||0xcc;return function(_0x56bf22){if(_0x56bf22){return _0x4ceb51['sendStatus'](_0x36bc0b);}return _0x4ceb51[_0x38d7('0x1d')](_0x36bc0b)[_0x38d7('0x1e')]();};}function respondWithResult(_0x4c9589,_0x14ced3){_0x14ced3=_0x14ced3||0xc8;return function(_0x330010){if(_0x330010){return _0x4c9589[_0x38d7('0x1d')](_0x14ced3)['json'](_0x330010);}};}function respondWithFilteredResult(_0x2707da,_0x5dc47d){return function(_0x41df63){if(_0x41df63){var _0x5a2da2=typeof _0x5dc47d[_0x38d7('0x1f')]==='undefined'&&typeof _0x5dc47d[_0x38d7('0x20')]==='undefined';var _0x4b9bdf=_0x41df63[_0x38d7('0x21')];var _0x42e822=_0x5a2da2?0x0:_0x5dc47d[_0x38d7('0x1f')];var _0x30adb6=_0x5a2da2?_0x41df63[_0x38d7('0x21')]:_0x5dc47d[_0x38d7('0x1f')]+_0x5dc47d['limit'];var _0x9f3080;if(_0x30adb6>=_0x4b9bdf){_0x30adb6=_0x4b9bdf;_0x9f3080=0xc8;}else{_0x9f3080=0xce;}_0x2707da[_0x38d7('0x1d')](_0x9f3080);return _0x2707da[_0x38d7('0x22')](_0x38d7('0x23'),_0x42e822+'-'+_0x30adb6+'/'+_0x4b9bdf)[_0x38d7('0x24')](_0x41df63);}return null;};}function patchUpdates(_0x59498c){return function(_0x432449){try{jsonpatch['apply'](_0x432449,_0x59498c,!![]);}catch(_0x47f1fe){return BPromise[_0x38d7('0x25')](_0x47f1fe);}return _0x432449[_0x38d7('0x26')]();};}function saveUpdates(_0x5d078c,_0x519894){return function(_0x1f7a95){if(_0x1f7a95){return _0x1f7a95['update'](_0x5d078c)['then'](function(_0x4b8af0){return _0x4b8af0;});}return null;};}function removeEntity(_0x2679c2,_0x485355){return function(_0x2dc1a4){if(_0x2dc1a4){return _0x2dc1a4[_0x38d7('0x27')]()['then'](function(){_0x2679c2['status'](0xcc)[_0x38d7('0x1e')]();});}};}function handleEntityNotFound(_0x172ac9,_0x4e0c39){return function(_0x310887){if(!_0x310887){_0x172ac9[_0x38d7('0x28')](0x194);}return _0x310887;};}function handleError(_0x280954,_0x10d167){_0x10d167=_0x10d167||0x1f4;return function(_0x56b72e){logger[_0x38d7('0x29')](_0x56b72e[_0x38d7('0x2a')]);if(_0x56b72e[_0x38d7('0x2b')]){delete _0x56b72e[_0x38d7('0x2b')];}_0x280954['status'](_0x10d167)[_0x38d7('0x2c')](_0x56b72e);};}exports['index']=function(_0x2119a5,_0x608cbc){var _0xc8a408={},_0x152411={},_0x3b1a1b={'count':0x0,'rows':[]};var _0x2acd23=_['map'](db[_0x38d7('0x2d')][_0x38d7('0x2e')],function(_0x513584){return{'name':_0x513584[_0x38d7('0x2f')],'type':_0x513584[_0x38d7('0x30')][_0x38d7('0x31')]};});_0x152411[_0x38d7('0x32')]=_[_0x38d7('0x33')](_0x2acd23,_0x38d7('0x2b'));_0x152411[_0x38d7('0x34')]=_[_0x38d7('0x35')](_0x2119a5[_0x38d7('0x34')]);_0x152411[_0x38d7('0x36')]=_[_0x38d7('0x37')](_0x152411['model'],_0x152411['query']);_0xc8a408[_0x38d7('0x38')]=_[_0x38d7('0x37')](_0x152411[_0x38d7('0x32')],qs[_0x38d7('0x39')](_0x2119a5['query']['fields']));_0xc8a408[_0x38d7('0x38')]=_0xc8a408['attributes'][_0x38d7('0x3a')]?_0xc8a408[_0x38d7('0x38')]:_0x152411[_0x38d7('0x32')];if(!_0x2119a5[_0x38d7('0x34')][_0x38d7('0x3b')](_0x38d7('0x3c'))){_0xc8a408[_0x38d7('0x20')]=qs[_0x38d7('0x20')](_0x2119a5['query'][_0x38d7('0x20')]);_0xc8a408[_0x38d7('0x1f')]=qs[_0x38d7('0x1f')](_0x2119a5[_0x38d7('0x34')][_0x38d7('0x1f')]);}_0xc8a408[_0x38d7('0x3d')]=qs['sort'](_0x2119a5['query'][_0x38d7('0x3e')]);_0xc8a408[_0x38d7('0x3f')]=qs['filters'](_[_0x38d7('0x40')](_0x2119a5[_0x38d7('0x34')],_0x152411['filters']),_0x2acd23);if(_0x2119a5[_0x38d7('0x34')][_0x38d7('0x41')]){_0xc8a408[_0x38d7('0x3f')]=_[_0x38d7('0x42')](_0xc8a408[_0x38d7('0x3f')],{'$or':_[_0x38d7('0x33')](_0x2acd23,function(_0x1ecbdf){if(_0x1ecbdf['type']!=='VIRTUAL'){var _0x3007bf={};_0x3007bf[_0x1ecbdf[_0x38d7('0x2b')]]={'$like':'%'+_0x2119a5[_0x38d7('0x34')][_0x38d7('0x41')]+'%'};return _0x3007bf;}})});}_0xc8a408=_['merge']({},_0xc8a408,_0x2119a5['options']);var _0x54fdae={'where':_0xc8a408[_0x38d7('0x3f')]};return db[_0x38d7('0x2d')][_0x38d7('0x21')](_0x54fdae)[_0x38d7('0x43')](function(_0x3c78b8){_0x3b1a1b['count']=_0x3c78b8;if(_0x2119a5[_0x38d7('0x34')]['includeAll']){_0xc8a408['include']=[{'all':!![]}];}return db[_0x38d7('0x2d')]['findAll'](_0xc8a408);})[_0x38d7('0x43')](function(_0x1de9cd){_0x3b1a1b['rows']=_0x1de9cd;return _0x3b1a1b;})[_0x38d7('0x43')](respondWithFilteredResult(_0x608cbc,_0xc8a408))[_0x38d7('0x44')](handleError(_0x608cbc,null));};exports[_0x38d7('0x45')]=function(_0x1aa444,_0x4c60e7){var _0x4f12f8={'raw':![],'where':{'id':_0x1aa444[_0x38d7('0x46')]['id']}},_0x12ada7={};_0x12ada7[_0x38d7('0x32')]=_[_0x38d7('0x35')](db[_0x38d7('0x2d')]['rawAttributes']);_0x12ada7[_0x38d7('0x34')]=_['keys'](_0x1aa444['query']);_0x12ada7[_0x38d7('0x36')]=_[_0x38d7('0x37')](_0x12ada7[_0x38d7('0x32')],_0x12ada7['query']);_0x4f12f8['attributes']=_[_0x38d7('0x37')](_0x12ada7['model'],qs[_0x38d7('0x39')](_0x1aa444[_0x38d7('0x34')][_0x38d7('0x39')]));_0x4f12f8[_0x38d7('0x38')]=_0x4f12f8[_0x38d7('0x38')][_0x38d7('0x3a')]?_0x4f12f8['attributes']:_0x12ada7[_0x38d7('0x32')];if(_0x1aa444[_0x38d7('0x34')][_0x38d7('0x47')]){_0x4f12f8[_0x38d7('0x48')]=[{'all':!![]}];}_0x4f12f8=_[_0x38d7('0x42')]({},_0x4f12f8,_0x1aa444[_0x38d7('0x49')]);return db['VoiceQueueReport']['find'](_0x4f12f8)[_0x38d7('0x43')](handleEntityNotFound(_0x4c60e7,null))[_0x38d7('0x43')](respondWithResult(_0x4c60e7,null))[_0x38d7('0x44')](handleError(_0x4c60e7,null));};exports['create']=function(_0x882b4d,_0xa897a0){return db[_0x38d7('0x2d')][_0x38d7('0x4a')](_0x882b4d[_0x38d7('0x4b')],{})[_0x38d7('0x43')](respondWithResult(_0xa897a0,0xc9))['catch'](handleError(_0xa897a0,null));};exports[_0x38d7('0x4c')]=function(_0x182090,_0x60c7bb){if(_0x182090[_0x38d7('0x4b')]['id']){delete _0x182090[_0x38d7('0x4b')]['id'];}return db[_0x38d7('0x2d')][_0x38d7('0x4d')]({'where':{'id':_0x182090[_0x38d7('0x46')]['id']}})[_0x38d7('0x43')](handleEntityNotFound(_0x60c7bb,null))[_0x38d7('0x43')](saveUpdates(_0x182090[_0x38d7('0x4b')],null))['then'](respondWithResult(_0x60c7bb,null))[_0x38d7('0x44')](handleError(_0x60c7bb,null));};exports[_0x38d7('0x27')]=function(_0x1d54fe,_0x3f046b){return db[_0x38d7('0x2d')]['find']({'where':{'id':_0x1d54fe[_0x38d7('0x46')]['id']}})[_0x38d7('0x43')](handleEntityNotFound(_0x3f046b,null))['then'](removeEntity(_0x3f046b,null))[_0x38d7('0x44')](handleError(_0x3f046b,null));};exports[_0x38d7('0x4e')]=function(_0x15bcad,_0x57b6ff){return db['VoiceQueueReport']['describe']()[_0x38d7('0x43')](respondWithResult(_0x57b6ff,null))[_0x38d7('0x44')](handleError(_0x57b6ff,null));};exports['getVoiceQueuesReport']=function(_0x2e9409,_0x2faac7){var _0x24fbce={},_0x56494e={},_0x5d7cc1={'count':0x0,'rows':[]};_0x56494e['model']=_[_0x38d7('0x35')](db[_0x38d7('0x2d')][_0x38d7('0x2e')]);_0x56494e[_0x38d7('0x34')]=_[_0x38d7('0x35')](_0x2e9409[_0x38d7('0x34')]);_0x56494e[_0x38d7('0x36')]=_[_0x38d7('0x37')](_0x56494e['model'],_0x56494e['query']);_0x24fbce[_0x38d7('0x38')]=_[_0x38d7('0x37')](_0x56494e[_0x38d7('0x32')],qs[_0x38d7('0x39')](_0x2e9409[_0x38d7('0x34')][_0x38d7('0x39')]));_0x24fbce[_0x38d7('0x38')]=_0x24fbce['attributes'][_0x38d7('0x3a')]?_0x24fbce[_0x38d7('0x38')]:_0x56494e['model'];if(!_0x2e9409['query'][_0x38d7('0x3b')](_0x38d7('0x3c'))){_0x24fbce['limit']=qs[_0x38d7('0x20')](_0x2e9409['query'][_0x38d7('0x20')]);_0x24fbce['offset']=qs[_0x38d7('0x1f')](_0x2e9409['query'][_0x38d7('0x1f')]);}_0x24fbce[_0x38d7('0x3d')]=qs[_0x38d7('0x3e')](_0x2e9409['query'][_0x38d7('0x3e')]);_0x24fbce[_0x38d7('0x3f')]=qs[_0x38d7('0x36')](_[_0x38d7('0x40')](_0x2e9409[_0x38d7('0x34')],_0x56494e[_0x38d7('0x36')]));if(_0x2e9409['query'][_0x38d7('0x41')]){_0x24fbce['where']=_['merge'](_0x24fbce[_0x38d7('0x3f')],{'$or':_[_0x38d7('0x33')](_0x24fbce[_0x38d7('0x38')],function(_0x206fb1){var _0x289316={};_0x289316[_0x206fb1]={'$like':'%'+_0x2e9409[_0x38d7('0x34')]['filter']+'%'};return _0x289316;})});}_0x24fbce=_[_0x38d7('0x42')]({},_0x24fbce,_0x2e9409[_0x38d7('0x49')]);var _0x3d1380={'where':_0x24fbce['where']};return db[_0x38d7('0x2d')][_0x38d7('0x21')](_0x3d1380)['then'](function(_0x481dfe){_0x5d7cc1['count']=_0x481dfe;if(_0x2e9409['query'][_0x38d7('0x47')]){_0x24fbce['include']=[{'all':!![]}];}return db[_0x38d7('0x2d')][_0x38d7('0x4f')](_0x24fbce);})[_0x38d7('0x43')](function(_0x11acc5){_0x5d7cc1[_0x38d7('0x50')]=_0x11acc5;return _0x5d7cc1;})[_0x38d7('0x43')](respondWithFilteredResult(_0x2faac7,_0x24fbce,'getVoiceQueuesReport'))[_0x38d7('0x44')](handleError(_0x2faac7,null,_0x38d7('0x51')));};
\ No newline at end of file
index b16f4d1..e3dd9b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf22=['setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb','VoiceQueueReport'];(function(_0x30b9f1,_0x39542c){var _0x537f5e=function(_0x1da733){while(--_0x1da733){_0x30b9f1['push'](_0x30b9f1['shift']());}};_0x537f5e(++_0x39542c);}(_0xaf22,0x19b));var _0x2af2=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xaf22[_0x1facfa];return _0x9ec701;};'use strict';var EventEmitter=require(_0x2af2('0x0'));var VoiceQueueReport=require(_0x2af2('0x1'))['db'][_0x2af2('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x2af2('0x3')](0x0);var events={'afterCreate':_0x2af2('0x4'),'afterUpdate':_0x2af2('0x5'),'afterDestroy':_0x2af2('0x6')};function emitEvent(_0x503e9a){return function(_0x2fb879,_0x346274,_0x27c382){VoiceQueueReportEvents[_0x2af2('0x7')](_0x503e9a+':'+_0x2fb879['id'],_0x2fb879);VoiceQueueReportEvents['emit'](_0x503e9a,_0x2fb879);_0x27c382(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x2af2('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xad0a=['remove','emit','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update'];(function(_0x130145,_0x353c81){var _0x4f2166=function(_0x397c46){while(--_0x397c46){_0x130145['push'](_0x130145['shift']());}};_0x4f2166(++_0x353c81);}(_0xad0a,0x92));var _0xaad0=function(_0x1b9abf,_0x5e449b){_0x1b9abf=_0x1b9abf-0x0;var _0x1d8450=_0xad0a[_0x1b9abf];return _0x1d8450;};'use strict';var EventEmitter=require(_0xaad0('0x0'));var VoiceQueueReport=require(_0xaad0('0x1'))['db'][_0xaad0('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xaad0('0x3')](0x0);var events={'afterCreate':_0xaad0('0x4'),'afterUpdate':_0xaad0('0x5'),'afterDestroy':_0xaad0('0x6')};function emitEvent(_0x45f023){return function(_0x4b3698,_0x36907b,_0x1eec67){VoiceQueueReportEvents[_0xaad0('0x7')](_0x45f023+':'+_0x4b3698['id'],_0x4b3698);VoiceQueueReportEvents[_0xaad0('0x7')](_0x45f023,_0x4b3698);_0x1eec67(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 41b861a..4114320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2882=['util','request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','uniqueid','lodash'];(function(_0x4bd67a,_0x4f9725){var _0x2be5fb=function(_0x33e132){while(--_0x33e132){_0x4bd67a['push'](_0x4bd67a['shift']());}};_0x2be5fb(++_0x4f9725);}(_0x2882,0x180));var _0x2288=function(_0x1f76b2,_0x1f78f1){_0x1f76b2=_0x1f76b2-0x0;var _0x2a8fb5=_0x2882[_0x1f76b2];return _0x2a8fb5;};'use strict';var _=require(_0x2288('0x0'));var util=require(_0x2288('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2288('0x2'));var fs=require('fs');var path=require(_0x2288('0x3'));var rimraf=require(_0x2288('0x4'));var config=require(_0x2288('0x5'));var attributes=require(_0x2288('0x6'));module['exports']=function(_0x3c4d6b,_0x43c7ae){return _0x3c4d6b[_0x2288('0x7')](_0x2288('0x8'),attributes,{'tableName':_0x2288('0x9'),'paranoid':![],'indexes':[{'fields':[_0x2288('0xa')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcef2=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash'];(function(_0x28c2b2,_0x4df41f){var _0x2c4e13=function(_0x31f6b2){while(--_0x31f6b2){_0x28c2b2['push'](_0x28c2b2['shift']());}};_0x2c4e13(++_0x4df41f);}(_0xcef2,0x8f));var _0x2cef=function(_0x3c340e,_0x33c8bc){_0x3c340e=_0x3c340e-0x0;var _0x2c82b6=_0xcef2[_0x3c340e];return _0x2c82b6;};'use strict';var _=require(_0x2cef('0x0'));var util=require(_0x2cef('0x1'));var logger=require(_0x2cef('0x2'))(_0x2cef('0x3'));var moment=require('moment');var BPromise=require(_0x2cef('0x4'));var rp=require(_0x2cef('0x5'));var fs=require('fs');var path=require(_0x2cef('0x6'));var rimraf=require(_0x2cef('0x7'));var config=require(_0x2cef('0x8'));var attributes=require(_0x2cef('0x9'));module[_0x2cef('0xa')]=function(_0x268271,_0xe94631){return _0x268271[_0x2cef('0xb')](_0x2cef('0xc'),attributes,{'tableName':_0x2cef('0xd'),'paranoid':![],'indexes':[{'fields':[_0x2cef('0xe')]},{'fields':[_0x2cef('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 55908ba..b86aeab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa557=['UpdateVoiceQueueReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','info','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','map','include','model','stringify','create','body','then','CreateVoiceQueueReport'];(function(_0x5b67ce,_0x43622c){var _0x25c0b3=function(_0x4d3070){while(--_0x4d3070){_0x5b67ce['push'](_0x5b67ce['shift']());}};_0x25c0b3(++_0x43622c);}(_0xa557,0x1af));var _0x7a55=function(_0x1f52d7,_0x1759d7){_0x1f52d7=_0x1f52d7-0x0;var _0x5013f8=_0xa557[_0x1f52d7];return _0x5013f8;};'use strict';var _=require(_0x7a55('0x0'));var util=require(_0x7a55('0x1'));var moment=require(_0x7a55('0x2'));var BPromise=require('bluebird');var rs=require(_0x7a55('0x3'));var fs=require('fs');var Redis=require(_0x7a55('0x4'));var db=require(_0x7a55('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7a55('0x6'))(_0x7a55('0x7'));var config=require('../../config/environment');var jayson=require(_0x7a55('0x8'));var client=jayson[_0x7a55('0x9')]['http']({'port':0x232a});config[_0x7a55('0xa')]=_[_0x7a55('0xb')](config[_0x7a55('0xa')],{'host':_0x7a55('0xc'),'port':0x18eb});var socket=require(_0x7a55('0xd'))(new Redis(config[_0x7a55('0xa')]));require(_0x7a55('0xe'))[_0x7a55('0xf')](socket);function respondWithRpcPromise(_0x2451b1,_0x1fe16d,_0x25a1ba){return new BPromise(function(_0x3fa64b,_0x5c93be){return client['request'](_0x2451b1,_0x25a1ba)['then'](function(_0x3eaf3b){logger[_0x7a55('0x10')]('VoiceQueueReport,\x20%s,\x20%s',_0x1fe16d,_0x7a55('0x11'));logger[_0x7a55('0x12')](_0x7a55('0x13'),_0x1fe16d,'request\x20sent',JSON['stringify'](_0x3eaf3b));if(_0x3eaf3b[_0x7a55('0x14')]){if(_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x15')]===0x1f4){logger[_0x7a55('0x14')](_0x7a55('0x16'),_0x1fe16d,_0x3eaf3b[_0x7a55('0x14')]['message']);return _0x5c93be(_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x17')]);}logger[_0x7a55('0x14')](_0x7a55('0x16'),_0x1fe16d,_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x17')]);return _0x3fa64b(_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x17')]);}else{logger[_0x7a55('0x10')](_0x7a55('0x16'),_0x1fe16d,_0x7a55('0x11'));_0x3fa64b(_0x3eaf3b[_0x7a55('0x18')][_0x7a55('0x17')]);}})[_0x7a55('0x19')](function(_0xf04089){logger[_0x7a55('0x14')](_0x7a55('0x16'),_0x1fe16d,_0xf04089);_0x5c93be(_0xf04089);});});}exports[_0x7a55('0x1a')]=function(_0x25e303){var _0x17ea0e=this;return new Promise(function(_0x57ba4f,_0x585641){return db[_0x7a55('0x1b')][_0x7a55('0x1c')]({'raw':_0x25e303['options']?_0x25e303[_0x7a55('0x1d')][_0x7a55('0x1e')]===undefined?!![]:![]:!![],'where':_0x25e303[_0x7a55('0x1d')]?_0x25e303[_0x7a55('0x1d')][_0x7a55('0x1f')]||null:null,'attributes':_0x25e303[_0x7a55('0x1d')]?_0x25e303['options'][_0x7a55('0x20')]||null:null,'limit':_0x25e303[_0x7a55('0x1d')]?_0x25e303[_0x7a55('0x1d')][_0x7a55('0x21')]||null:null,'include':_0x25e303[_0x7a55('0x1d')]?_0x25e303[_0x7a55('0x1d')]['include']?_[_0x7a55('0x22')](_0x25e303[_0x7a55('0x1d')][_0x7a55('0x23')],function(_0x19c543){return{'model':db[_0x19c543[_0x7a55('0x24')]],'as':_0x19c543['as'],'attributes':_0x19c543['attributes'],'include':_0x19c543[_0x7a55('0x23')]?_['map'](_0x19c543[_0x7a55('0x23')],function(_0x21da61){return{'model':db[_0x21da61[_0x7a55('0x24')]],'as':_0x21da61['as'],'attributes':_0x21da61[_0x7a55('0x20')],'include':_0x21da61[_0x7a55('0x23')]?_[_0x7a55('0x22')](_0x21da61[_0x7a55('0x23')],function(_0x5cad1d){return{'model':db[_0x5cad1d['model']],'as':_0x5cad1d['as'],'attributes':_0x5cad1d[_0x7a55('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b44c8){logger['info'](_0x7a55('0x1a'),_0x25e303);logger[_0x7a55('0x12')](_0x7a55('0x1a'),_0x25e303,JSON[_0x7a55('0x25')](_0x3b44c8));_0x57ba4f(_0x3b44c8);})['catch'](function(_0xf2008e){logger['error']('GetVoiceQueueReport',_0xf2008e[_0x7a55('0x17')],_0x25e303);_0x585641(_0x17ea0e[_0x7a55('0x14')](0x1f4,_0xf2008e['message']));});});};exports['CreateVoiceQueueReport']=function(_0x1831a3){var _0x37f8c6=this;return new Promise(function(_0x19525a,_0x2dd4aa){return db['VoiceQueueReport'][_0x7a55('0x26')](_0x1831a3[_0x7a55('0x27')],{'raw':_0x1831a3[_0x7a55('0x1d')]?_0x1831a3['options'][_0x7a55('0x1e')]===undefined?!![]:![]:!![]})[_0x7a55('0x28')](function(_0x517b61){logger[_0x7a55('0x10')](_0x7a55('0x29'),_0x1831a3);logger['debug'](_0x7a55('0x29'),_0x1831a3,JSON[_0x7a55('0x25')](_0x517b61));_0x19525a(_0x517b61);})[_0x7a55('0x19')](function(_0x180e86){logger[_0x7a55('0x14')](_0x7a55('0x29'),_0x180e86[_0x7a55('0x17')],_0x1831a3);_0x2dd4aa(_0x37f8c6[_0x7a55('0x14')](0x1f4,_0x180e86['message']));});});};exports[_0x7a55('0x2a')]=function(_0x5bd8a2){var _0x2db140=this;return new Promise(function(_0x261b65,_0x237d9c){return db[_0x7a55('0x1b')]['update'](_0x5bd8a2[_0x7a55('0x27')],{'raw':_0x5bd8a2[_0x7a55('0x1d')]?_0x5bd8a2[_0x7a55('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bd8a2['options']?_0x5bd8a2[_0x7a55('0x1d')][_0x7a55('0x1f')]||null:null,'attributes':_0x5bd8a2[_0x7a55('0x1d')]?_0x5bd8a2[_0x7a55('0x1d')][_0x7a55('0x20')]||null:null,'limit':_0x5bd8a2[_0x7a55('0x1d')]?_0x5bd8a2[_0x7a55('0x1d')][_0x7a55('0x21')]||null:null})[_0x7a55('0x28')](function(_0x11f2be){logger[_0x7a55('0x10')]('UpdateVoiceQueueReport',_0x5bd8a2);logger[_0x7a55('0x12')](_0x7a55('0x2a'),_0x5bd8a2,JSON[_0x7a55('0x25')](_0x11f2be));_0x261b65(_0x11f2be);})[_0x7a55('0x19')](function(_0x3fd54d){logger[_0x7a55('0x14')](_0x7a55('0x2a'),_0x3fd54d[_0x7a55('0x17')],_0x5bd8a2);_0x237d9c(_0x2db140['error'](0x1f4,_0x3fd54d[_0x7a55('0x17')]));});});};
\ No newline at end of file
+var _0xf7bd=['catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','attributes','limit','include','model','map','CreateVoiceQueueReport','body','update','where','UpdateVoiceQueueReport','lodash','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x3e0642,_0x5f4ef3){var _0x352cb5=function(_0x266c7b){while(--_0x266c7b){_0x3e0642['push'](_0x3e0642['shift']());}};_0x352cb5(++_0x5f4ef3);}(_0xf7bd,0xd3));var _0xdf7b=function(_0x1a7244,_0x3d99d9){_0x1a7244=_0x1a7244-0x0;var _0x5c4e9f=_0xf7bd[_0x1a7244];return _0x5c4e9f;};'use strict';var _=require(_0xdf7b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xdf7b('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xdf7b('0x2'));var logger=require(_0xdf7b('0x3'))('rpc');var config=require(_0xdf7b('0x4'));var jayson=require(_0xdf7b('0x5'));var client=jayson[_0xdf7b('0x6')][_0xdf7b('0x7')]({'port':0x232a});config[_0xdf7b('0x8')]=_['defaults'](config['redis'],{'host':_0xdf7b('0x9'),'port':0x18eb});var socket=require(_0xdf7b('0xa'))(new Redis(config[_0xdf7b('0x8')]));require('./voiceQueueReport.socket')[_0xdf7b('0xb')](socket);function respondWithRpcPromise(_0x2215ec,_0x6d7211,_0x2b5415){return new BPromise(function(_0xf8e24d,_0x48a438){return client[_0xdf7b('0xc')](_0x2215ec,_0x2b5415)[_0xdf7b('0xd')](function(_0xeb577e){logger[_0xdf7b('0xe')](_0xdf7b('0xf'),_0x6d7211,_0xdf7b('0x10'));logger[_0xdf7b('0x11')](_0xdf7b('0x12'),_0x6d7211,_0xdf7b('0x10'),JSON[_0xdf7b('0x13')](_0xeb577e));if(_0xeb577e[_0xdf7b('0x14')]){if(_0xeb577e[_0xdf7b('0x14')]['code']===0x1f4){logger[_0xdf7b('0x14')](_0xdf7b('0xf'),_0x6d7211,_0xeb577e[_0xdf7b('0x14')][_0xdf7b('0x15')]);return _0x48a438(_0xeb577e[_0xdf7b('0x14')][_0xdf7b('0x15')]);}logger[_0xdf7b('0x14')]('VoiceQueueReport,\x20%s,\x20%s',_0x6d7211,_0xeb577e[_0xdf7b('0x14')][_0xdf7b('0x15')]);return _0xf8e24d(_0xeb577e['error'][_0xdf7b('0x15')]);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x6d7211,_0xdf7b('0x10'));_0xf8e24d(_0xeb577e[_0xdf7b('0x16')]['message']);}})[_0xdf7b('0x17')](function(_0x2ba04a){logger[_0xdf7b('0x14')]('VoiceQueueReport,\x20%s,\x20%s',_0x6d7211,_0x2ba04a);_0x48a438(_0x2ba04a);});});}exports[_0xdf7b('0x18')]=function(_0x138008){var _0x18457d=this;return new Promise(function(_0x467e42,_0x4e2806){return db[_0xdf7b('0x19')][_0xdf7b('0x1a')]({'raw':_0x138008[_0xdf7b('0x1b')]?_0x138008[_0xdf7b('0x1b')][_0xdf7b('0x1c')]===undefined?!![]:![]:!![],'where':_0x138008['options']?_0x138008[_0xdf7b('0x1b')]['where']||null:null,'attributes':_0x138008['options']?_0x138008[_0xdf7b('0x1b')][_0xdf7b('0x1d')]||null:null,'limit':_0x138008['options']?_0x138008[_0xdf7b('0x1b')][_0xdf7b('0x1e')]||null:null,'include':_0x138008[_0xdf7b('0x1b')]?_0x138008['options'][_0xdf7b('0x1f')]?_['map'](_0x138008['options']['include'],function(_0x375636){return{'model':db[_0x375636[_0xdf7b('0x20')]],'as':_0x375636['as'],'attributes':_0x375636['attributes'],'include':_0x375636[_0xdf7b('0x1f')]?_[_0xdf7b('0x21')](_0x375636[_0xdf7b('0x1f')],function(_0x5a054f){return{'model':db[_0x5a054f[_0xdf7b('0x20')]],'as':_0x5a054f['as'],'attributes':_0x5a054f[_0xdf7b('0x1d')],'include':_0x5a054f['include']?_[_0xdf7b('0x21')](_0x5a054f[_0xdf7b('0x1f')],function(_0x1cb140){return{'model':db[_0x1cb140['model']],'as':_0x1cb140['as'],'attributes':_0x1cb140[_0xdf7b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdf7b('0xd')](function(_0x22b6a7){logger[_0xdf7b('0xe')]('GetVoiceQueueReport',_0x138008);logger[_0xdf7b('0x11')](_0xdf7b('0x18'),_0x138008,JSON[_0xdf7b('0x13')](_0x22b6a7));_0x467e42(_0x22b6a7);})[_0xdf7b('0x17')](function(_0x2e2469){logger[_0xdf7b('0x14')](_0xdf7b('0x18'),_0x2e2469[_0xdf7b('0x15')],_0x138008);_0x4e2806(_0x18457d[_0xdf7b('0x14')](0x1f4,_0x2e2469[_0xdf7b('0x15')]));});});};exports[_0xdf7b('0x22')]=function(_0x840987){var _0x47e333=this;return new Promise(function(_0x4ea24c,_0x6bddbd){return db[_0xdf7b('0x19')]['create'](_0x840987[_0xdf7b('0x23')],{'raw':_0x840987[_0xdf7b('0x1b')]?_0x840987['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3a4d37){logger[_0xdf7b('0xe')](_0xdf7b('0x22'),_0x840987);logger[_0xdf7b('0x11')](_0xdf7b('0x22'),_0x840987,JSON['stringify'](_0x3a4d37));_0x4ea24c(_0x3a4d37);})[_0xdf7b('0x17')](function(_0x531fef){logger[_0xdf7b('0x14')](_0xdf7b('0x22'),_0x531fef[_0xdf7b('0x15')],_0x840987);_0x6bddbd(_0x47e333[_0xdf7b('0x14')](0x1f4,_0x531fef[_0xdf7b('0x15')]));});});};exports['UpdateVoiceQueueReport']=function(_0x5396b4){var _0x590a88=this;return new Promise(function(_0xdafe56,_0x7e0726){return db[_0xdf7b('0x19')][_0xdf7b('0x24')](_0x5396b4['body'],{'raw':_0x5396b4[_0xdf7b('0x1b')]?_0x5396b4[_0xdf7b('0x1b')][_0xdf7b('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5396b4[_0xdf7b('0x1b')]?_0x5396b4['options'][_0xdf7b('0x25')]||null:null,'attributes':_0x5396b4[_0xdf7b('0x1b')]?_0x5396b4[_0xdf7b('0x1b')][_0xdf7b('0x1d')]||null:null,'limit':_0x5396b4[_0xdf7b('0x1b')]?_0x5396b4['options']['limit']||null:null})['then'](function(_0x44b870){logger[_0xdf7b('0xe')](_0xdf7b('0x26'),_0x5396b4);logger[_0xdf7b('0x11')](_0xdf7b('0x26'),_0x5396b4,JSON[_0xdf7b('0x13')](_0x44b870));_0xdafe56(_0x44b870);})[_0xdf7b('0x17')](function(_0x541237){logger['error'](_0xdf7b('0x26'),_0x541237[_0xdf7b('0x15')],_0x5396b4);_0x7e0726(_0x590a88[_0xdf7b('0x14')](0x1f4,_0x541237[_0xdf7b('0x15')]));});});};
\ No newline at end of file
index 702320f..b25d758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a76=['remove','update','emit','removeListener','length','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2a76,0xde));var _0x62a7=function(_0xc2e46e,_0x3b979c){_0xc2e46e=_0xc2e46e-0x0;var _0x1a355d=_0x2a76[_0xc2e46e];return _0x1a355d;};'use strict';var VoiceQueueReportEvents=require(_0x62a7('0x0'));var events=[_0x62a7('0x1'),_0x62a7('0x2'),_0x62a7('0x3')];function createListener(_0x42601f,_0x1cbd7c){return function(_0x108f6f){_0x1cbd7c[_0x62a7('0x4')](_0x42601f,_0x108f6f);};}function removeListener(_0x44abef,_0x28e476){return function(){VoiceQueueReportEvents[_0x62a7('0x5')](_0x44abef,_0x28e476);};}exports['register']=function(_0x3aa52a){for(var _0x5a2c8f=0x0,_0x10a163=events[_0x62a7('0x6')];_0x5a2c8f<_0x10a163;_0x5a2c8f++){var _0x520e2a=events[_0x5a2c8f];var _0x5af567=createListener(_0x62a7('0x7')+_0x520e2a,_0x3aa52a);VoiceQueueReportEvents['on'](_0x520e2a,_0x5af567);}};
\ No newline at end of file
+var _0x3248=['save','emit','register','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3248,0x1bc));var _0x8324=function(_0x3130ba,_0x49bb59){_0x3130ba=_0x3130ba-0x0;var _0x23bd10=_0x3248[_0x3130ba];return _0x23bd10;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x8324('0x0'),'remove','update'];function createListener(_0x1daa25,_0xf7c3f5){return function(_0x257d13){_0xf7c3f5[_0x8324('0x1')](_0x1daa25,_0x257d13);};}function removeListener(_0x2cfce9,_0x334505){return function(){VoiceQueueReportEvents['removeListener'](_0x2cfce9,_0x334505);};}exports[_0x8324('0x2')]=function(_0x1c5c2a){for(var _0x5157f4=0x0,_0x25ee7a=events[_0x8324('0x3')];_0x5157f4<_0x25ee7a;_0x5157f4++){var _0x4302c5=events[_0x5157f4];var _0x1514c0=createListener('voiceQueueReport:'+_0x4302c5,_0x1c5c2a);VoiceQueueReportEvents['on'](_0x4302c5,_0x1514c0);}};
\ No newline at end of file
index 73ed863..bfff388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5fe=['isAuthenticated','/:id','post','put','update','destroy','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xb5fe,0x192));var _0xeb5f=function(_0x420809,_0x3da7e9){_0x420809=_0x420809-0x0;var _0x8bad16=_0xb5fe[_0x420809];return _0x8bad16;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xeb5f('0x0'));var express=require('express');var router=express[_0xeb5f('0x1')]();var fs_extra=require(_0xeb5f('0x2'));var auth=require(_0xeb5f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xeb5f('0x4'));var controller=require('./voiceQueuesLog.controller');router[_0xeb5f('0x5')]('/',auth[_0xeb5f('0x6')](),controller['index']);router[_0xeb5f('0x5')](_0xeb5f('0x7'),auth[_0xeb5f('0x6')](),controller['show']);router[_0xeb5f('0x8')]('/',auth[_0xeb5f('0x6')](),controller['create']);router[_0xeb5f('0x9')](_0xeb5f('0x7'),auth[_0xeb5f('0x6')](),controller[_0xeb5f('0xa')]);router['delete'](_0xeb5f('0x7'),auth[_0xeb5f('0x6')](),controller[_0xeb5f('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0x0e37=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','isAuthenticated','post','create','put','/:id','update','delete','exports','util','connect-timeout','express'];(function(_0x2dd0e9,_0x25b523){var _0x106ca4=function(_0x32cd67){while(--_0x32cd67){_0x2dd0e9['push'](_0x2dd0e9['shift']());}};_0x106ca4(++_0x25b523);}(_0x0e37,0xc9));var _0x70e3=function(_0x5a6dc0,_0x2948b0){_0x5a6dc0=_0x5a6dc0-0x0;var _0x141cda=_0x0e37[_0x5a6dc0];return _0x141cda;};'use strict';var multer=require('multer');var util=require(_0x70e3('0x0'));var path=require('path');var timeout=require(_0x70e3('0x1'));var express=require(_0x70e3('0x2'));var router=express[_0x70e3('0x3')]();var fs_extra=require(_0x70e3('0x4'));var auth=require(_0x70e3('0x5'));var interaction=require(_0x70e3('0x6'));var config=require(_0x70e3('0x7'));var controller=require(_0x70e3('0x8'));router['get']('/',auth[_0x70e3('0x9')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x70e3('0xa')]('/',auth['isAuthenticated'](),controller[_0x70e3('0xb')]);router[_0x70e3('0xc')](_0x70e3('0xd'),auth[_0x70e3('0x9')](),controller[_0x70e3('0xe')]);router[_0x70e3('0xf')](_0x70e3('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x70e3('0x10')]=router;
\ No newline at end of file
index 849891a..b72838b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c06=['moment','exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x3469a7,_0x2ce225){var _0x394098=function(_0x42d03f){while(--_0x42d03f){_0x3469a7['push'](_0x3469a7['shift']());}};_0x394098(++_0x2ce225);}(_0x2c06,0x1b1));var _0x62c0=function(_0x14f502,_0xf32dc1){_0x14f502=_0x14f502-0x0;var _0x263674=_0x2c06[_0x14f502];return _0x263674;};'use strict';var Sequelize=require(_0x62c0('0x0'));var moment=require(_0x62c0('0x1'));module[_0x62c0('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x62c0('0x4')],'allowNull':![],'defaultValue':Sequelize[_0x62c0('0x5')](_0x62c0('0x6'))}};
\ No newline at end of file
+var _0x84cb=['STRING','DATE','literal','sequelize','moment','exports'];(function(_0x4a1552,_0x38a1eb){var _0x3f2f13=function(_0x313037){while(--_0x313037){_0x4a1552['push'](_0x4a1552['shift']());}};_0x3f2f13(++_0x38a1eb);}(_0x84cb,0x1bf));var _0xb84c=function(_0x3277ff,_0x4407f4){_0x3277ff=_0x3277ff-0x0;var _0x36d6d3=_0x84cb[_0x3277ff];return _0x36d6d3;};'use strict';var Sequelize=require(_0xb84c('0x0'));var moment=require(_0xb84c('0x1'));module[_0xb84c('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xb84c('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xb84c('0x4')],'allowNull':![],'defaultValue':Sequelize[_0xb84c('0x5')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index 759edf9..b269baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40ad=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','count','limit','status','set','Content-Range','json','apply','reject','update','then','error','stack','name','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','include','find','create','body','params','destroy','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs'];(function(_0x28f74d,_0x37a93f){var _0x5abe79=function(_0x2b325c){while(--_0x2b325c){_0x28f74d['push'](_0x28f74d['shift']());}};_0x5abe79(++_0x37a93f);}(_0x40ad,0x11b));var _0xd40a=function(_0x1bb889,_0x49c4b5){_0x1bb889=_0x1bb889-0x0;var _0xd8b76d=_0x40ad[_0x1bb889];return _0xd8b76d;};'use strict';var emlformat=require(_0xd40a('0x0'));var rimraf=require(_0xd40a('0x1'));var zipdir=require(_0xd40a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd40a('0x3'));var BPromise=require(_0xd40a('0x4'));var Mustache=require('mustache');var util=require(_0xd40a('0x5'));var path=require(_0xd40a('0x6'));var sox=require(_0xd40a('0x7'));var csv=require(_0xd40a('0x8'));var ejs=require(_0xd40a('0x9'));var fs=require('fs');var fs_extra=require(_0xd40a('0xa'));var _=require('lodash');var squel=require(_0xd40a('0xb'));var crypto=require(_0xd40a('0xc'));var jsforce=require(_0xd40a('0xd'));var deskjs=require(_0xd40a('0xe'));var toCsv=require(_0xd40a('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd40a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd40a('0x10'));var as=require(_0xd40a('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd40a('0x12'))(_0xd40a('0x13'));var utils=require(_0xd40a('0x14'));var config=require(_0xd40a('0x15'));var licenseUtil=require(_0xd40a('0x16'));var db=require(_0xd40a('0x17'))['db'];function respondWithStatusCode(_0x587e49,_0x185cf4){_0x185cf4=_0x185cf4||0xcc;return function(_0x5616dc){if(_0x5616dc){return _0x587e49[_0xd40a('0x18')](_0x185cf4);}return _0x587e49['status'](_0x185cf4)[_0xd40a('0x19')]();};}function respondWithResult(_0x365489,_0x5279b8){_0x5279b8=_0x5279b8||0xc8;return function(_0x173211){if(_0x173211){return _0x365489['status'](_0x5279b8)['json'](_0x173211);}};}function respondWithFilteredResult(_0xd31280,_0x375ec7){return function(_0x245931){if(_0x245931){var _0x37b920=typeof _0x375ec7[_0xd40a('0x1a')]===_0xd40a('0x1b')&&typeof _0x375ec7['limit']==='undefined';var _0x5b215c=_0x245931[_0xd40a('0x1c')];var _0x13e1aa=_0x37b920?0x0:_0x375ec7[_0xd40a('0x1a')];var _0x15b13a=_0x37b920?_0x245931[_0xd40a('0x1c')]:_0x375ec7[_0xd40a('0x1a')]+_0x375ec7[_0xd40a('0x1d')];var _0x24b17c;if(_0x15b13a>=_0x5b215c){_0x15b13a=_0x5b215c;_0x24b17c=0xc8;}else{_0x24b17c=0xce;}_0xd31280[_0xd40a('0x1e')](_0x24b17c);return _0xd31280[_0xd40a('0x1f')](_0xd40a('0x20'),_0x13e1aa+'-'+_0x15b13a+'/'+_0x5b215c)[_0xd40a('0x21')](_0x245931);}return null;};}function patchUpdates(_0x442324){return function(_0x52df9e){try{jsonpatch[_0xd40a('0x22')](_0x52df9e,_0x442324,!![]);}catch(_0x5a96e3){return BPromise[_0xd40a('0x23')](_0x5a96e3);}return _0x52df9e['save']();};}function saveUpdates(_0x584f65,_0x2f7bc4){return function(_0x2f42c7){if(_0x2f42c7){return _0x2f42c7[_0xd40a('0x24')](_0x584f65)[_0xd40a('0x25')](function(_0x2647c4){return _0x2647c4;});}return null;};}function removeEntity(_0xaac0b9,_0x17c852){return function(_0x2d0a00){if(_0x2d0a00){return _0x2d0a00['destroy']()[_0xd40a('0x25')](function(){_0xaac0b9[_0xd40a('0x1e')](0xcc)[_0xd40a('0x19')]();});}};}function handleEntityNotFound(_0x41f81f,_0x1a6120){return function(_0x587400){if(!_0x587400){_0x41f81f[_0xd40a('0x18')](0x194);}return _0x587400;};}function handleError(_0x4e16a2,_0x165cca){_0x165cca=_0x165cca||0x1f4;return function(_0x52d6cb){logger[_0xd40a('0x26')](_0x52d6cb[_0xd40a('0x27')]);if(_0x52d6cb[_0xd40a('0x28')]){delete _0x52d6cb['name'];}_0x4e16a2[_0xd40a('0x1e')](_0x165cca)['send'](_0x52d6cb);};}exports[_0xd40a('0x29')]=function(_0x193f35,_0x51d479){var _0x485eb8={},_0x5a7a4d={},_0xfd959d={'count':0x0,'rows':[]};var _0x4dc65d=_[_0xd40a('0x2a')](db[_0xd40a('0x2b')][_0xd40a('0x2c')],function(_0x19523d){return{'name':_0x19523d[_0xd40a('0x2d')],'type':_0x19523d[_0xd40a('0x2e')]['key']};});_0x5a7a4d['model']=_[_0xd40a('0x2a')](_0x4dc65d,_0xd40a('0x28'));_0x5a7a4d[_0xd40a('0x2f')]=_[_0xd40a('0x30')](_0x193f35[_0xd40a('0x2f')]);_0x5a7a4d['filters']=_[_0xd40a('0x31')](_0x5a7a4d[_0xd40a('0x32')],_0x5a7a4d[_0xd40a('0x2f')]);_0x485eb8[_0xd40a('0x33')]=_['intersection'](_0x5a7a4d[_0xd40a('0x32')],qs[_0xd40a('0x34')](_0x193f35['query']['fields']));_0x485eb8[_0xd40a('0x33')]=_0x485eb8[_0xd40a('0x33')][_0xd40a('0x35')]?_0x485eb8[_0xd40a('0x33')]:_0x5a7a4d[_0xd40a('0x32')];if(!_0x193f35['query']['hasOwnProperty'](_0xd40a('0x36'))){_0x485eb8[_0xd40a('0x1d')]=qs[_0xd40a('0x1d')](_0x193f35[_0xd40a('0x2f')][_0xd40a('0x1d')]);_0x485eb8[_0xd40a('0x1a')]=qs[_0xd40a('0x1a')](_0x193f35[_0xd40a('0x2f')]['offset']);}_0x485eb8[_0xd40a('0x37')]=qs[_0xd40a('0x38')](_0x193f35[_0xd40a('0x2f')][_0xd40a('0x38')]);_0x485eb8['where']=qs[_0xd40a('0x39')](_[_0xd40a('0x3a')](_0x193f35[_0xd40a('0x2f')],_0x5a7a4d[_0xd40a('0x39')]),_0x4dc65d);if(_0x193f35[_0xd40a('0x2f')][_0xd40a('0x3b')]){_0x485eb8[_0xd40a('0x3c')]=_[_0xd40a('0x3d')](_0x485eb8['where'],{'$or':_[_0xd40a('0x2a')](_0x4dc65d,function(_0x260ef3){if(_0x260ef3[_0xd40a('0x2e')]!==_0xd40a('0x3e')){var _0x4ee19e={};_0x4ee19e[_0x260ef3[_0xd40a('0x28')]]={'$like':'%'+_0x193f35['query'][_0xd40a('0x3b')]+'%'};return _0x4ee19e;}})});}_0x485eb8=_[_0xd40a('0x3d')]({},_0x485eb8,_0x193f35[_0xd40a('0x3f')]);var _0x1c10f0={'where':_0x485eb8[_0xd40a('0x3c')]};return db[_0xd40a('0x2b')][_0xd40a('0x1c')](_0x1c10f0)[_0xd40a('0x25')](function(_0x1389f1){_0xfd959d['count']=_0x1389f1;if(_0x193f35[_0xd40a('0x2f')][_0xd40a('0x40')]){_0x485eb8['include']=[{'all':!![]}];}return db['VoiceQueuesLog'][_0xd40a('0x41')](_0x485eb8);})[_0xd40a('0x25')](function(_0x486c13){_0xfd959d[_0xd40a('0x42')]=_0x486c13;return _0xfd959d;})[_0xd40a('0x25')](respondWithFilteredResult(_0x51d479,_0x485eb8))[_0xd40a('0x43')](handleError(_0x51d479,null));};exports[_0xd40a('0x44')]=function(_0x1161c9,_0x353612){var _0x29eb95={'raw':!![],'where':{'id':_0x1161c9['params']['id']}},_0x327b9b={};_0x327b9b['model']=_[_0xd40a('0x30')](db[_0xd40a('0x2b')][_0xd40a('0x2c')]);_0x327b9b[_0xd40a('0x2f')]=_[_0xd40a('0x30')](_0x1161c9[_0xd40a('0x2f')]);_0x327b9b[_0xd40a('0x39')]=_[_0xd40a('0x31')](_0x327b9b[_0xd40a('0x32')],_0x327b9b['query']);_0x29eb95[_0xd40a('0x33')]=_[_0xd40a('0x31')](_0x327b9b[_0xd40a('0x32')],qs[_0xd40a('0x34')](_0x1161c9[_0xd40a('0x2f')][_0xd40a('0x34')]));_0x29eb95['attributes']=_0x29eb95[_0xd40a('0x33')]['length']?_0x29eb95[_0xd40a('0x33')]:_0x327b9b[_0xd40a('0x32')];if(_0x1161c9['query']['includeAll']){_0x29eb95[_0xd40a('0x45')]=[{'all':!![]}];}_0x29eb95=_[_0xd40a('0x3d')]({},_0x29eb95,_0x1161c9[_0xd40a('0x3f')]);return db[_0xd40a('0x2b')][_0xd40a('0x46')](_0x29eb95)[_0xd40a('0x25')](handleEntityNotFound(_0x353612,null))['then'](respondWithResult(_0x353612,null))[_0xd40a('0x43')](handleError(_0x353612,null));};exports['create']=function(_0x5b1672,_0x5a08a4){return db[_0xd40a('0x2b')][_0xd40a('0x47')](_0x5b1672[_0xd40a('0x48')],{})['then'](respondWithResult(_0x5a08a4,0xc9))['catch'](handleError(_0x5a08a4,null));};exports[_0xd40a('0x24')]=function(_0x3fd0e2,_0x1205f4){if(_0x3fd0e2[_0xd40a('0x48')]['id']){delete _0x3fd0e2[_0xd40a('0x48')]['id'];}return db[_0xd40a('0x2b')]['find']({'where':{'id':_0x3fd0e2[_0xd40a('0x49')]['id']}})['then'](handleEntityNotFound(_0x1205f4,null))[_0xd40a('0x25')](saveUpdates(_0x3fd0e2['body'],null))['then'](respondWithResult(_0x1205f4,null))['catch'](handleError(_0x1205f4,null));};exports[_0xd40a('0x4a')]=function(_0x4ed00c,_0x29212c){return db[_0xd40a('0x2b')]['find']({'where':{'id':_0x4ed00c[_0xd40a('0x49')]['id']}})[_0xd40a('0x25')](handleEntityNotFound(_0x29212c,null))[_0xd40a('0x25')](removeEntity(_0x29212c,null))['catch'](handleError(_0x29212c,null));};
\ No newline at end of file
+var _0xc474=['catch','show','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','VoiceQueuesLog','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x3c5ee9,_0xb251bd){var _0x149349=function(_0x594eba){while(--_0x594eba){_0x3c5ee9['push'](_0x3c5ee9['shift']());}};_0x149349(++_0xb251bd);}(_0xc474,0x9e));var _0x4c47=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xc474[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x4c47('0x0'));var rimraf=require(_0x4c47('0x1'));var zipdir=require(_0x4c47('0x2'));var jsonpatch=require(_0x4c47('0x3'));var rp=require(_0x4c47('0x4'));var moment=require(_0x4c47('0x5'));var BPromise=require(_0x4c47('0x6'));var Mustache=require(_0x4c47('0x7'));var util=require(_0x4c47('0x8'));var path=require(_0x4c47('0x9'));var sox=require(_0x4c47('0xa'));var csv=require(_0x4c47('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c47('0xc'));var _=require('lodash');var squel=require(_0x4c47('0xd'));var crypto=require(_0x4c47('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x4c47('0xf'));var toCsv=require(_0x4c47('0xb'));var querystring=require('querystring');var Papa=require(_0x4c47('0x10'));var Redis=require(_0x4c47('0x11'));var authService=require(_0x4c47('0x12'));var qs=require(_0x4c47('0x13'));var as=require(_0x4c47('0x14'));var hardwareService=require(_0x4c47('0x15'));var logger=require('../../config/logger')(_0x4c47('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4c47('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3654fb,_0xeda9c2){_0xeda9c2=_0xeda9c2||0xcc;return function(_0x2b63dc){if(_0x2b63dc){return _0x3654fb[_0x4c47('0x18')](_0xeda9c2);}return _0x3654fb[_0x4c47('0x19')](_0xeda9c2)[_0x4c47('0x1a')]();};}function respondWithResult(_0xeb5325,_0x4703f8){_0x4703f8=_0x4703f8||0xc8;return function(_0x3867df){if(_0x3867df){return _0xeb5325[_0x4c47('0x19')](_0x4703f8)[_0x4c47('0x1b')](_0x3867df);}};}function respondWithFilteredResult(_0x59a39a,_0x39afa1){return function(_0x11852a){if(_0x11852a){var _0x493a84=typeof _0x39afa1['offset']===_0x4c47('0x1c')&&typeof _0x39afa1[_0x4c47('0x1d')]===_0x4c47('0x1c');var _0xd461bc=_0x11852a[_0x4c47('0x1e')];var _0x32148e=_0x493a84?0x0:_0x39afa1[_0x4c47('0x1f')];var _0x26a46c=_0x493a84?_0x11852a['count']:_0x39afa1['offset']+_0x39afa1[_0x4c47('0x1d')];var _0x521aa4;if(_0x26a46c>=_0xd461bc){_0x26a46c=_0xd461bc;_0x521aa4=0xc8;}else{_0x521aa4=0xce;}_0x59a39a[_0x4c47('0x19')](_0x521aa4);return _0x59a39a[_0x4c47('0x20')](_0x4c47('0x21'),_0x32148e+'-'+_0x26a46c+'/'+_0xd461bc)['json'](_0x11852a);}return null;};}function patchUpdates(_0x291869){return function(_0x57cf13){try{jsonpatch[_0x4c47('0x22')](_0x57cf13,_0x291869,!![]);}catch(_0x510666){return BPromise[_0x4c47('0x23')](_0x510666);}return _0x57cf13['save']();};}function saveUpdates(_0x560049,_0x422ee3){return function(_0x444513){if(_0x444513){return _0x444513[_0x4c47('0x24')](_0x560049)['then'](function(_0x178ba3){return _0x178ba3;});}return null;};}function removeEntity(_0x5551e4,_0x3d1561){return function(_0x23588f){if(_0x23588f){return _0x23588f[_0x4c47('0x25')]()[_0x4c47('0x26')](function(){_0x5551e4[_0x4c47('0x19')](0xcc)[_0x4c47('0x1a')]();});}};}function handleEntityNotFound(_0x42c286,_0x236d67){return function(_0x197d94){if(!_0x197d94){_0x42c286[_0x4c47('0x18')](0x194);}return _0x197d94;};}function handleError(_0x1594a0,_0x50f357){_0x50f357=_0x50f357||0x1f4;return function(_0x2a560b){logger[_0x4c47('0x27')](_0x2a560b[_0x4c47('0x28')]);if(_0x2a560b[_0x4c47('0x29')]){delete _0x2a560b[_0x4c47('0x29')];}_0x1594a0[_0x4c47('0x19')](_0x50f357)[_0x4c47('0x2a')](_0x2a560b);};}exports[_0x4c47('0x2b')]=function(_0x26290c,_0x18998d){var _0x4b4d8b={},_0x46da66={},_0x13b62e={'count':0x0,'rows':[]};var _0x399219=_['map'](db[_0x4c47('0x2c')][_0x4c47('0x2d')],function(_0x3c1a0c){return{'name':_0x3c1a0c[_0x4c47('0x2e')],'type':_0x3c1a0c['type']['key']};});_0x46da66['model']=_['map'](_0x399219,_0x4c47('0x29'));_0x46da66[_0x4c47('0x2f')]=_[_0x4c47('0x30')](_0x26290c[_0x4c47('0x2f')]);_0x46da66[_0x4c47('0x31')]=_[_0x4c47('0x32')](_0x46da66[_0x4c47('0x33')],_0x46da66[_0x4c47('0x2f')]);_0x4b4d8b[_0x4c47('0x34')]=_[_0x4c47('0x32')](_0x46da66[_0x4c47('0x33')],qs[_0x4c47('0x35')](_0x26290c['query'][_0x4c47('0x35')]));_0x4b4d8b[_0x4c47('0x34')]=_0x4b4d8b[_0x4c47('0x34')][_0x4c47('0x36')]?_0x4b4d8b[_0x4c47('0x34')]:_0x46da66[_0x4c47('0x33')];if(!_0x26290c['query'][_0x4c47('0x37')]('nolimit')){_0x4b4d8b[_0x4c47('0x1d')]=qs['limit'](_0x26290c[_0x4c47('0x2f')][_0x4c47('0x1d')]);_0x4b4d8b['offset']=qs[_0x4c47('0x1f')](_0x26290c[_0x4c47('0x2f')][_0x4c47('0x1f')]);}_0x4b4d8b[_0x4c47('0x38')]=qs[_0x4c47('0x39')](_0x26290c[_0x4c47('0x2f')][_0x4c47('0x39')]);_0x4b4d8b[_0x4c47('0x3a')]=qs[_0x4c47('0x31')](_[_0x4c47('0x3b')](_0x26290c['query'],_0x46da66[_0x4c47('0x31')]),_0x399219);if(_0x26290c[_0x4c47('0x2f')][_0x4c47('0x3c')]){_0x4b4d8b['where']=_[_0x4c47('0x3d')](_0x4b4d8b['where'],{'$or':_[_0x4c47('0x3e')](_0x399219,function(_0x43b84a){if(_0x43b84a[_0x4c47('0x3f')]!==_0x4c47('0x40')){var _0x56a6a3={};_0x56a6a3[_0x43b84a[_0x4c47('0x29')]]={'$like':'%'+_0x26290c['query'][_0x4c47('0x3c')]+'%'};return _0x56a6a3;}})});}_0x4b4d8b=_[_0x4c47('0x3d')]({},_0x4b4d8b,_0x26290c[_0x4c47('0x41')]);var _0x2586b7={'where':_0x4b4d8b[_0x4c47('0x3a')]};return db['VoiceQueuesLog'][_0x4c47('0x1e')](_0x2586b7)['then'](function(_0x4ebe53){_0x13b62e[_0x4c47('0x1e')]=_0x4ebe53;if(_0x26290c[_0x4c47('0x2f')][_0x4c47('0x42')]){_0x4b4d8b[_0x4c47('0x43')]=[{'all':!![]}];}return db[_0x4c47('0x2c')][_0x4c47('0x44')](_0x4b4d8b);})[_0x4c47('0x26')](function(_0x4f4a8e){_0x13b62e[_0x4c47('0x45')]=_0x4f4a8e;return _0x13b62e;})[_0x4c47('0x26')](respondWithFilteredResult(_0x18998d,_0x4b4d8b))[_0x4c47('0x46')](handleError(_0x18998d,null));};exports[_0x4c47('0x47')]=function(_0x391ead,_0x2452ab){var _0x3789b2={'raw':!![],'where':{'id':_0x391ead['params']['id']}},_0x20ba09={};_0x20ba09[_0x4c47('0x33')]=_[_0x4c47('0x30')](db[_0x4c47('0x2c')]['rawAttributes']);_0x20ba09[_0x4c47('0x2f')]=_['keys'](_0x391ead[_0x4c47('0x2f')]);_0x20ba09[_0x4c47('0x31')]=_['intersection'](_0x20ba09[_0x4c47('0x33')],_0x20ba09[_0x4c47('0x2f')]);_0x3789b2[_0x4c47('0x34')]=_['intersection'](_0x20ba09[_0x4c47('0x33')],qs[_0x4c47('0x35')](_0x391ead[_0x4c47('0x2f')][_0x4c47('0x35')]));_0x3789b2['attributes']=_0x3789b2[_0x4c47('0x34')][_0x4c47('0x36')]?_0x3789b2[_0x4c47('0x34')]:_0x20ba09[_0x4c47('0x33')];if(_0x391ead[_0x4c47('0x2f')][_0x4c47('0x42')]){_0x3789b2['include']=[{'all':!![]}];}_0x3789b2=_['merge']({},_0x3789b2,_0x391ead[_0x4c47('0x41')]);return db[_0x4c47('0x2c')]['find'](_0x3789b2)['then'](handleEntityNotFound(_0x2452ab,null))[_0x4c47('0x26')](respondWithResult(_0x2452ab,null))[_0x4c47('0x46')](handleError(_0x2452ab,null));};exports[_0x4c47('0x48')]=function(_0x4e61be,_0x1d2b95){return db[_0x4c47('0x2c')][_0x4c47('0x48')](_0x4e61be[_0x4c47('0x49')],{})['then'](respondWithResult(_0x1d2b95,0xc9))['catch'](handleError(_0x1d2b95,null));};exports['update']=function(_0x5b0404,_0x78f8b2){if(_0x5b0404['body']['id']){delete _0x5b0404[_0x4c47('0x49')]['id'];}return db[_0x4c47('0x2c')][_0x4c47('0x4a')]({'where':{'id':_0x5b0404[_0x4c47('0x4b')]['id']}})['then'](handleEntityNotFound(_0x78f8b2,null))[_0x4c47('0x26')](saveUpdates(_0x5b0404[_0x4c47('0x49')],null))['then'](respondWithResult(_0x78f8b2,null))[_0x4c47('0x46')](handleError(_0x78f8b2,null));};exports['destroy']=function(_0x126ff4,_0x155820){return db['VoiceQueuesLog'][_0x4c47('0x4a')]({'where':{'id':_0x126ff4[_0x4c47('0x4b')]['id']}})[_0x4c47('0x26')](handleEntityNotFound(_0x155820,null))['then'](removeEntity(_0x155820,null))[_0x4c47('0x46')](handleError(_0x155820,null));};
\ No newline at end of file
index 815de68..dfee790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7be=['rimraf','./voiceQueuesLog.attributes','exports','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x41aa18,_0x375545){var _0x96ad61=function(_0x9b06d3){while(--_0x9b06d3){_0x41aa18['push'](_0x41aa18['shift']());}};_0x96ad61(++_0x375545);}(_0xc7be,0x78));var _0xec7b=function(_0x18b1a8,_0x4331ae){_0x18b1a8=_0x18b1a8-0x0;var _0x1659fc=_0xc7be[_0x18b1a8];return _0x1659fc;};'use strict';var _=require(_0xec7b('0x0'));var util=require(_0xec7b('0x1'));var logger=require(_0xec7b('0x2'))(_0xec7b('0x3'));var moment=require(_0xec7b('0x4'));var BPromise=require(_0xec7b('0x5'));var rp=require(_0xec7b('0x6'));var fs=require('fs');var path=require(_0xec7b('0x7'));var rimraf=require(_0xec7b('0x8'));var config=require('../../config/environment');var attributes=require(_0xec7b('0x9'));module[_0xec7b('0xa')]=function(_0x1c5720,_0x5877e9){return _0x1c5720['define'](_0xec7b('0xb'),attributes,{'tableName':_0xec7b('0xc'),'paranoid':![],'indexes':[{'name':_0xec7b('0xd'),'fields':[_0xec7b('0xe'),_0xec7b('0xf')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x19cc=['../../config/logger','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x19cc,0x10c));var _0xc19c=function(_0x16938f,_0x35e57f){_0x16938f=_0x16938f-0x0;var _0x5c66e9=_0x19cc[_0x16938f];return _0x5c66e9;};'use strict';var _=require(_0xc19c('0x0'));var util=require(_0xc19c('0x1'));var logger=require(_0xc19c('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc19c('0x3'));var fs=require('fs');var path=require(_0xc19c('0x4'));var rimraf=require(_0xc19c('0x5'));var config=require(_0xc19c('0x6'));var attributes=require(_0xc19c('0x7'));module[_0xc19c('0x8')]=function(_0x219437,_0xf3b6db){return _0x219437[_0xc19c('0x9')](_0xc19c('0xa'),attributes,{'tableName':_0xc19c('0xb'),'paranoid':![],'indexes':[{'name':_0xc19c('0xc'),'fields':[_0xc19c('0xd'),_0xc19c('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 622c1ff..8e5b7cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe129=['request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xe129,0x94));var _0x9e12=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe129[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9e12('0x0'));var util=require(_0x9e12('0x1'));var moment=require('moment');var BPromise=require(_0x9e12('0x2'));var rs=require(_0x9e12('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e12('0x4'))['db'];var utils=require(_0x9e12('0x5'));var logger=require('../../config/logger')(_0x9e12('0x6'));var config=require(_0x9e12('0x7'));var jayson=require(_0x9e12('0x8'));var client=jayson[_0x9e12('0x9')][_0x9e12('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x242bb7,_0x525e08,_0x185f3c){return new BPromise(function(_0x50227b,_0x458427){return client['request'](_0x242bb7,_0x185f3c)[_0x9e12('0xb')](function(_0xa8941e){logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x525e08,_0x9e12('0xc'));logger['debug'](_0x9e12('0xd'),_0x525e08,_0x9e12('0xc'),JSON['stringify'](_0xa8941e));if(_0xa8941e[_0x9e12('0xe')]){if(_0xa8941e[_0x9e12('0xe')][_0x9e12('0xf')]===0x1f4){logger[_0x9e12('0xe')](_0x9e12('0x10'),_0x525e08,_0xa8941e[_0x9e12('0xe')][_0x9e12('0x11')]);return _0x458427(_0xa8941e['error'][_0x9e12('0x11')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x525e08,_0xa8941e['error'][_0x9e12('0x11')]);return _0x50227b(_0xa8941e['error'][_0x9e12('0x11')]);}else{logger[_0x9e12('0x12')](_0x9e12('0x10'),_0x525e08,'request\x20sent');_0x50227b(_0xa8941e[_0x9e12('0x13')]['message']);}})['catch'](function(_0x1e0366){logger[_0x9e12('0xe')](_0x9e12('0x10'),_0x525e08,_0x1e0366);_0x458427(_0x1e0366);});});}
\ No newline at end of file
+var _0xd167=['stringify','error','VoiceQueuesLog,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xd167,0xc3));var _0x7d16=function(_0x517975,_0x1454b9){_0x517975=_0x517975-0x0;var _0x2108c9=_0xd167[_0x517975];return _0x2108c9;};'use strict';var _=require(_0x7d16('0x0'));var util=require(_0x7d16('0x1'));var moment=require('moment');var BPromise=require(_0x7d16('0x2'));var rs=require(_0x7d16('0x3'));var fs=require('fs');var Redis=require(_0x7d16('0x4'));var db=require(_0x7d16('0x5'))['db'];var utils=require(_0x7d16('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x7d16('0x7'));var jayson=require(_0x7d16('0x8'));var client=jayson[_0x7d16('0x9')][_0x7d16('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x93df31,_0x17e6b3,_0x5cdcd4){return new BPromise(function(_0x1d1d2e,_0x5402c3){return client['request'](_0x93df31,_0x5cdcd4)['then'](function(_0x3ae69b){logger[_0x7d16('0xb')]('VoiceQueuesLog,\x20%s,\x20%s',_0x17e6b3,_0x7d16('0xc'));logger[_0x7d16('0xd')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x17e6b3,_0x7d16('0xc'),JSON[_0x7d16('0xe')](_0x3ae69b));if(_0x3ae69b['error']){if(_0x3ae69b['error']['code']===0x1f4){logger[_0x7d16('0xf')](_0x7d16('0x10'),_0x17e6b3,_0x3ae69b[_0x7d16('0xf')][_0x7d16('0x11')]);return _0x5402c3(_0x3ae69b[_0x7d16('0xf')][_0x7d16('0x11')]);}logger[_0x7d16('0xf')]('VoiceQueuesLog,\x20%s,\x20%s',_0x17e6b3,_0x3ae69b[_0x7d16('0xf')]['message']);return _0x1d1d2e(_0x3ae69b[_0x7d16('0xf')]['message']);}else{logger[_0x7d16('0xb')](_0x7d16('0x10'),_0x17e6b3,_0x7d16('0xc'));_0x1d1d2e(_0x3ae69b[_0x7d16('0x12')][_0x7d16('0x11')]);}})['catch'](function(_0x4d6971){logger[_0x7d16('0xf')](_0x7d16('0x10'),_0x17e6b3,_0x4d6971);_0x5402c3(_0x4d6971);});});}
\ No newline at end of file
index cf1d44f..2a2bd1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6ea=['/:id','show','/:id/download','download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','put','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','isAuthenticated','get','/describe','describe'];(function(_0x3909ae,_0x3183c7){var _0x15000b=function(_0x591ff5){while(--_0x591ff5){_0x3909ae['push'](_0x3909ae['shift']());}};_0x15000b(++_0x3183c7);}(_0xd6ea,0x71));var _0xad6e=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xd6ea[_0xa148b7];return _0x51efd3;};'use strict';var multer=require(_0xad6e('0x0'));var util=require(_0xad6e('0x1'));var path=require('path');var timeout=require(_0xad6e('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xad6e('0x3'));var auth=require(_0xad6e('0x4'));var interaction=require(_0xad6e('0x5'));var config=require(_0xad6e('0x6'));var controller=require(_0xad6e('0x7'));router['get']('/',auth[_0xad6e('0x8')](),controller['index']);router[_0xad6e('0x9')](_0xad6e('0xa'),auth[_0xad6e('0x8')](),controller[_0xad6e('0xb')]);router[_0xad6e('0x9')](_0xad6e('0xc'),auth[_0xad6e('0x8')](),controller[_0xad6e('0xd')]);router[_0xad6e('0x9')](_0xad6e('0xe'),auth['isAuthenticated'](),controller[_0xad6e('0xf')]);router[_0xad6e('0x9')](_0xad6e('0x10'),controller['downloads']);router['get'](_0xad6e('0x11'),auth['isAuthenticated'](),controller[_0xad6e('0x12')]);router[_0xad6e('0x13')]('/',auth[_0xad6e('0x8')](),controller['create']);router[_0xad6e('0x13')]('/:id/transcribe',auth[_0xad6e('0x8')](),controller['runTranscribe']);router[_0xad6e('0x14')](_0xad6e('0xc'),auth['isAuthenticated'](),controller[_0xad6e('0x15')]);router[_0xad6e('0x16')](_0xad6e('0xc'),auth[_0xad6e('0x8')](),controller[_0xad6e('0x17')]);module[_0xad6e('0x18')]=router;
\ No newline at end of file
+var _0x1c09=['isAuthenticated','show','download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./voiceRecording.controller','get','index','/describe','describe','/:id'];(function(_0x28c5cd,_0x2c23c0){var _0x560c3=function(_0x3f89a2){while(--_0x3f89a2){_0x28c5cd['push'](_0x28c5cd['shift']());}};_0x560c3(++_0x2c23c0);}(_0x1c09,0x8f));var _0x91c0=function(_0x3f12fc,_0x5534a3){_0x3f12fc=_0x3f12fc-0x0;var _0x1448ad=_0x1c09[_0x3f12fc];return _0x1448ad;};'use strict';var multer=require(_0x91c0('0x0'));var util=require(_0x91c0('0x1'));var path=require(_0x91c0('0x2'));var timeout=require(_0x91c0('0x3'));var express=require('express');var router=express[_0x91c0('0x4')]();var fs_extra=require(_0x91c0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x91c0('0x6'));var controller=require(_0x91c0('0x7'));router[_0x91c0('0x8')]('/',auth['isAuthenticated'](),controller[_0x91c0('0x9')]);router[_0x91c0('0x8')](_0x91c0('0xa'),auth['isAuthenticated'](),controller[_0x91c0('0xb')]);router[_0x91c0('0x8')](_0x91c0('0xc'),auth[_0x91c0('0xd')](),controller[_0x91c0('0xe')]);router[_0x91c0('0x8')]('/:id/download',auth[_0x91c0('0xd')](),controller[_0x91c0('0xf')]);router[_0x91c0('0x8')](_0x91c0('0x10'),controller['downloads']);router[_0x91c0('0x8')](_0x91c0('0x11'),auth['isAuthenticated'](),controller[_0x91c0('0x12')]);router[_0x91c0('0x13')]('/',auth[_0x91c0('0xd')](),controller[_0x91c0('0x14')]);router['post'](_0x91c0('0x11'),auth[_0x91c0('0xd')](),controller[_0x91c0('0x15')]);router[_0x91c0('0x16')](_0x91c0('0xc'),auth['isAuthenticated'](),controller[_0x91c0('0x17')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x91c0('0x18')]);module[_0x91c0('0x19')]=router;
\ No newline at end of file
index de91941..288c66e 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(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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 3c32736..0de4222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x938d=['VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','sequelize','MD5','col','$and','push','Entity\x20not\x20found','isNil','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','listBuckets','createBucket','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','transcribeName','TranscriptionJob','TranscriptionJobName','transcribeStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','writeFile','fileText','root','Transcript\x20not\x20available','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','error','stack','name','send','index','map','VoiceRecording','rawAttributes','type','model','differenceBy','format','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','keys','find','catch','create','body','params','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError'];(function(_0x321c6d,_0x6e6f64){var _0x2f36da=function(_0x11c29a){while(--_0x11c29a){_0x321c6d['push'](_0x321c6d['shift']());}};_0x2f36da(++_0x6e6f64);}(_0x938d,0xd8));var _0xd938=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x938d[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd938('0x0'));var rimraf=require(_0xd938('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd938('0x2'));var rp=require(_0xd938('0x3'));var moment=require(_0xd938('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd938('0x5'));var util=require(_0xd938('0x6'));var path=require(_0xd938('0x7'));var sox=require(_0xd938('0x8'));var csv=require(_0xd938('0x9'));var ejs=require(_0xd938('0xa'));var fs=require('fs');var fs_extra=require(_0xd938('0xb'));var _=require(_0xd938('0xc'));var squel=require('squel');var crypto=require(_0xd938('0xd'));var jsforce=require(_0xd938('0xe'));var deskjs=require(_0xd938('0xf'));var toCsv=require(_0xd938('0x9'));var querystring=require(_0xd938('0x10'));var Papa=require(_0xd938('0x11'));var AWS=require(_0xd938('0x12'));var uuidv4=require('uuid/v4');var Redis=require(_0xd938('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xd938('0x14'));var as=require(_0xd938('0x15'));var hardwareService=require(_0xd938('0x16'));var logger=require(_0xd938('0x17'))(_0xd938('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd938('0x19'));var db=require(_0xd938('0x1a'))['db'];function respondWithStatusCode(_0x4496c5,_0x4dd724){_0x4dd724=_0x4dd724||0xcc;return function(_0xb321a1){if(_0xb321a1){return _0x4496c5[_0xd938('0x1b')](_0x4dd724);}return _0x4496c5[_0xd938('0x1c')](_0x4dd724)[_0xd938('0x1d')]();};}function respondWithResult(_0x5a015a,_0x469002){_0x469002=_0x469002||0xc8;return function(_0x19ae01){if(_0x19ae01){return _0x5a015a[_0xd938('0x1c')](_0x469002)['json'](_0x19ae01);}};}function respondWithFilteredResult(_0x1fb09c,_0x5628b7){return function(_0x1e54bc){if(_0x1e54bc){var _0x423790=typeof _0x5628b7[_0xd938('0x1e')]===_0xd938('0x1f')&&typeof _0x5628b7[_0xd938('0x20')]===_0xd938('0x1f');var _0x1d9571=_0x1e54bc[_0xd938('0x21')];var _0x52a92e=_0x423790?0x0:_0x5628b7['offset'];var _0x2a86e5=_0x423790?_0x1e54bc[_0xd938('0x21')]:_0x5628b7[_0xd938('0x1e')]+_0x5628b7[_0xd938('0x20')];var _0x2e8a21;if(_0x2a86e5>=_0x1d9571){_0x2a86e5=_0x1d9571;_0x2e8a21=0xc8;}else{_0x2e8a21=0xce;}_0x1fb09c[_0xd938('0x1c')](_0x2e8a21);return _0x1fb09c[_0xd938('0x22')](_0xd938('0x23'),_0x52a92e+'-'+_0x2a86e5+'/'+_0x1d9571)[_0xd938('0x24')](_0x1e54bc);}return null;};}function patchUpdates(_0x24674f){return function(_0x2ff57a){try{jsonpatch[_0xd938('0x25')](_0x2ff57a,_0x24674f,!![]);}catch(_0x1e99e3){return BPromise['reject'](_0x1e99e3);}return _0x2ff57a[_0xd938('0x26')]();};}function saveUpdates(_0x395a0a,_0x1b049c){return function(_0x9b3a7b){if(_0x9b3a7b){return _0x9b3a7b[_0xd938('0x27')](_0x395a0a)['then'](function(_0x3c99b0){return _0x3c99b0;});}return null;};}function removeEntity(_0x41245d,_0x5a8826){return function(_0x2c490a){if(_0x2c490a){return _0x2c490a[_0xd938('0x28')]()[_0xd938('0x29')](function(){_0x41245d['status'](0xcc)[_0xd938('0x1d')]();});}};}function handleEntityNotFound(_0x15f595,_0x5e1f1f){return function(_0x30d6db){if(!_0x30d6db){_0x15f595[_0xd938('0x1b')](0x194);}return _0x30d6db;};}function handleError(_0x124be8,_0x361b1b){_0x361b1b=_0x361b1b||0x1f4;return function(_0x254950){logger[_0xd938('0x2a')](_0x254950[_0xd938('0x2b')]);if(_0x254950['name']){delete _0x254950[_0xd938('0x2c')];}_0x124be8[_0xd938('0x1c')](_0x361b1b)[_0xd938('0x2d')](_0x254950);};}exports[_0xd938('0x2e')]=function(_0x59d39c,_0x517ae1){var _0x4b1961={},_0x4ec011={},_0x48ac98={'count':0x0,'rows':[]};var _0x42c27f=_[_0xd938('0x2f')](db[_0xd938('0x30')][_0xd938('0x31')],function(_0x1385f7){return{'name':_0x1385f7['fieldName'],'type':_0x1385f7[_0xd938('0x32')]['key']};});_0x4ec011[_0xd938('0x33')]=_[_0xd938('0x34')](_['map'](_0x42c27f,'name'),[_0xd938('0x35')]);_0x4ec011[_0xd938('0x36')]=_['keys'](_0x59d39c[_0xd938('0x36')]);_0x4ec011[_0xd938('0x37')]=_[_0xd938('0x38')](_0x4ec011['model'],_0x4ec011['query']);_0x4b1961['attributes']=_[_0xd938('0x38')](_0x4ec011[_0xd938('0x33')],qs[_0xd938('0x39')](_0x59d39c[_0xd938('0x36')]['fields']));_0x4b1961[_0xd938('0x3a')]=_0x4b1961['attributes'][_0xd938('0x3b')]?_0x4b1961[_0xd938('0x3a')]:_0x4ec011[_0xd938('0x33')];if(!_0x59d39c['query'][_0xd938('0x3c')](_0xd938('0x3d'))){_0x4b1961[_0xd938('0x20')]=qs['limit'](_0x59d39c['query'][_0xd938('0x20')]);_0x4b1961['offset']=qs[_0xd938('0x1e')](_0x59d39c[_0xd938('0x36')][_0xd938('0x1e')]);}_0x4b1961[_0xd938('0x3e')]=qs['sort'](_0x59d39c[_0xd938('0x36')][_0xd938('0x3f')]);_0x4b1961[_0xd938('0x40')]=qs[_0xd938('0x37')](_['pick'](_0x59d39c['query'],_0x4ec011[_0xd938('0x37')]),_0x42c27f);if(_0x59d39c['query']['filter']){_0x4b1961[_0xd938('0x40')]=_[_0xd938('0x41')](_0x4b1961[_0xd938('0x40')],{'$or':_[_0xd938('0x2f')](_0x42c27f,function(_0x353f88){if(_0x353f88['type']!==_0xd938('0x42')){var _0x19fb7f={};_0x19fb7f[_0x353f88['name']]={'$like':'%'+_0x59d39c[_0xd938('0x36')][_0xd938('0x43')]+'%'};return _0x19fb7f;}})});}_0x4b1961=_[_0xd938('0x41')]({},_0x4b1961,_0x59d39c[_0xd938('0x44')]);var _0x274d61={'where':_0x4b1961[_0xd938('0x40')]};return db[_0xd938('0x30')][_0xd938('0x21')](_0x274d61)[_0xd938('0x29')](function(_0x20727f){_0x48ac98[_0xd938('0x21')]=_0x20727f;if(_0x59d39c[_0xd938('0x36')][_0xd938('0x45')]){_0x4b1961[_0xd938('0x46')]=[{'all':!![]}];}return db[_0xd938('0x30')][_0xd938('0x47')](_0x4b1961);})[_0xd938('0x29')](function(_0xab1ede){_0x48ac98[_0xd938('0x48')]=_0xab1ede;return _0x48ac98;})[_0xd938('0x29')](respondWithFilteredResult(_0x517ae1,_0x4b1961))['catch'](handleError(_0x517ae1,null));};exports[_0xd938('0x49')]=function(_0x5af294,_0x3c41ff){var _0x2fa030={'raw':![],'where':{'id':_0x5af294['params']['id']}},_0x16ab83={};_0x16ab83['model']=_[_0xd938('0x4a')](db['VoiceRecording']['rawAttributes']);_0x16ab83['query']=_[_0xd938('0x4a')](_0x5af294[_0xd938('0x36')]);_0x16ab83[_0xd938('0x37')]=_[_0xd938('0x38')](_0x16ab83[_0xd938('0x33')],_0x16ab83[_0xd938('0x36')]);_0x2fa030[_0xd938('0x3a')]=_['intersection'](_0x16ab83[_0xd938('0x33')],qs[_0xd938('0x39')](_0x5af294['query']['fields']));_0x2fa030[_0xd938('0x3a')]=_0x2fa030['attributes'][_0xd938('0x3b')]?_0x2fa030[_0xd938('0x3a')]:_0x16ab83[_0xd938('0x33')];if(_0x5af294[_0xd938('0x36')][_0xd938('0x45')]){_0x2fa030[_0xd938('0x46')]=[{'all':!![]}];}_0x2fa030=_[_0xd938('0x41')]({},_0x2fa030,_0x5af294[_0xd938('0x44')]);return db[_0xd938('0x30')][_0xd938('0x4b')](_0x2fa030)['then'](handleEntityNotFound(_0x3c41ff,null))[_0xd938('0x29')](respondWithResult(_0x3c41ff,null))[_0xd938('0x4c')](handleError(_0x3c41ff,null));};exports[_0xd938('0x4d')]=function(_0x254f98,_0x3ce088){return db[_0xd938('0x30')]['create'](_0x254f98[_0xd938('0x4e')],{})[_0xd938('0x29')](respondWithResult(_0x3ce088,0xc9))['catch'](handleError(_0x3ce088,null));};exports[_0xd938('0x27')]=function(_0x395752,_0x1011a5){if(_0x395752[_0xd938('0x4e')]['id']){delete _0x395752[_0xd938('0x4e')]['id'];}return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':{'id':_0x395752[_0xd938('0x4f')]['id']}})[_0xd938('0x29')](handleEntityNotFound(_0x1011a5,null))[_0xd938('0x29')](saveUpdates(_0x395752[_0xd938('0x4e')],null))[_0xd938('0x29')](respondWithResult(_0x1011a5,null))[_0xd938('0x4c')](handleError(_0x1011a5,null));};exports['describe']=function(_0x21307f,_0x3ed73b){return db[_0xd938('0x30')][_0xd938('0x50')]()[_0xd938('0x29')](respondWithResult(_0x3ed73b,null))[_0xd938('0x4c')](handleError(_0x3ed73b,null));};exports[_0xd938('0x51')]=function(_0x1ac442,_0x3cf93d,_0x4e23ac){var _0x125869=require(_0xd938('0x52'));var _0x532aca=![];var _0x3113fc={};if(_0x1ac442['query'][_0xd938('0x32')]&&_0x1ac442[_0xd938('0x36')][_0xd938('0x32')]==='uniqueid'){_0x3113fc[_0xd938('0x53')]=_0x1ac442[_0xd938('0x4f')]['id'];}else{_0x3113fc['id']=_0x1ac442[_0xd938('0x4f')]['id'];}return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':_0x3113fc,'attributes':['id',_0xd938('0x54')],'raw':!![]})[_0xd938('0x29')](handleEntityNotFound(_0x3cf93d,null))[_0xd938('0x29')](function(_0xff61fc){if(_0xff61fc){var _0xb72662=_0xff61fc[_0xd938('0x54')];var _0xa6c33f=util[_0xd938('0x35')](_0xd938('0x55'),_0xb72662);if(fs[_0xd938('0x56')](_0xa6c33f)){_0x532aca=!![];return _0x125869[_0xd938('0x57')](_0xa6c33f,_0xb72662,config[_0xd938('0x58')][_0xd938('0x59')])[_0xd938('0x29')](function(){return _0xff61fc;});}return _0xff61fc;}})[_0xd938('0x29')](function(_0x4efce8){if(_0x4efce8){var _0x5c8d59=_0x4efce8['value'];if(!fs[_0xd938('0x56')](_0x5c8d59)){throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))](_0xd938('0x5c'));}if(_0x4efce8['filename']){return _0x3cf93d[_0xd938('0x51')](_0x5c8d59,_0x4efce8[_0xd938('0x5d')]+path[_0xd938('0x5e')](_0x5c8d59),function(){if(_0x532aca){fs[_0xd938('0x5f')](_0x5c8d59);}});}else{return _0x3cf93d[_0xd938('0x51')](_0x5c8d59,function(_0x51e461){if(_0x532aca){fs[_0xd938('0x5f')](_0x5c8d59);}});}}})['catch'](function(_0x1317be){if(_0x1317be[_0xd938('0x60')]===_0xd938('0x5c')){_0x3cf93d[_0xd938('0x1c')](0x194)[_0xd938('0x2d')](_0xd938('0x61'));}else{return handleError(_0x3cf93d,null);}});};exports[_0xd938('0x62')]=function(_0x2d7c41,_0x36a445,_0x3d7281){var _0x3b14c7=require(_0xd938('0x52'));var _0x5ebf27=![];var _0x4733ff={'$and':[db[_0xd938('0x63')][_0xd938('0x40')](db['sequelize']['fn'](_0xd938('0x64'),db[_0xd938('0x63')][_0xd938('0x65')]('uniqueid')),_0x2d7c41[_0xd938('0x36')]['token'])]};if(_0x2d7c41[_0xd938('0x36')][_0xd938('0x32')]&&_0x2d7c41[_0xd938('0x36')][_0xd938('0x32')]===_0xd938('0x53')){_0x4733ff[_0xd938('0x66')][_0xd938('0x67')]({'uniqueid':_0x2d7c41[_0xd938('0x4f')]['id']});}else{_0x4733ff[_0xd938('0x66')][_0xd938('0x67')]({'id':_0x2d7c41[_0xd938('0x4f')]['id']});}return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':_0x4733ff,'attributes':['id',_0xd938('0x54')],'raw':!![]})[_0xd938('0x29')](handleEntityNotFound(_0x36a445,null))[_0xd938('0x29')](function(_0x18ca53){if(_0x18ca53){var _0x8f55b8=util[_0xd938('0x35')](_0xd938('0x55'),_0x18ca53[_0xd938('0x54')]);if(fs[_0xd938('0x56')](_0x8f55b8)){_0x5ebf27=!![];return _0x3b14c7[_0xd938('0x57')](_0x8f55b8,_0x18ca53[_0xd938('0x54')],config['secrets'][_0xd938('0x59')])[_0xd938('0x29')](function(){return _0x18ca53;});}return _0x18ca53;}})[_0xd938('0x29')](function(_0xf6434d){if(_0xf6434d){if(!fs[_0xd938('0x56')](_0xf6434d[_0xd938('0x54')])){throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))]('VoiceRecording\x20not\x20found');}if(_0xf6434d[_0xd938('0x5d')]){return _0x36a445[_0xd938('0x51')](_0xf6434d[_0xd938('0x54')],_0xf6434d[_0xd938('0x5d')]+path[_0xd938('0x5e')](_0xf6434d['value']),function(){if(_0x5ebf27){fs[_0xd938('0x5f')](_0xf6434d[_0xd938('0x54')]);}});}else{return _0x36a445[_0xd938('0x51')](_0xf6434d[_0xd938('0x54')],function(_0x5f38ae){if(_0x5ebf27){fs[_0xd938('0x5f')](_0xf6434d['value']);}});}}})[_0xd938('0x4c')](handleError(_0x36a445,null));};exports[_0xd938('0x28')]=function(_0x5350b5,_0xf7c797){return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':{'id':_0x5350b5[_0xd938('0x4f')]['id']}})[_0xd938('0x29')](function(_0x170114){if(_['isNil'](_0x170114)){throw new ReferenceError(_0xd938('0x68'));}return _0x170114;})[_0xd938('0x29')](function(_0x51d02a){var _0x291698=_0x51d02a['value'];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x291698);if(!_[_0xd938('0x69')](_0x51d02a[_0xd938('0x54')])&&fs[_0xd938('0x56')](_0x291698)){logger[_0xd938('0x6a')]('File:\x20\x22'+_0x291698+_0xd938('0x6b'));fs[_0xd938('0x6c')](_0x291698);}_0x291698=_0x291698+'.cypher';if(!_['isNil'](_0x51d02a[_0xd938('0x54')])&&fs['existsSync'](_0x291698)){logger['info'](_0xd938('0x6d')+_0x291698+_0xd938('0x6b'));fs['unlinkSync'](_0x291698);}return _0x51d02a;})[_0xd938('0x29')](function(_0x35a777){if(!_0x35a777)throw new InternalError();return _0x35a777[_0xd938('0x28')]();})[_0xd938('0x29')](function(){_0xf7c797[_0xd938('0x1c')](0xcc)[_0xd938('0x1d')]();})[_0xd938('0x4c')](handleError(_0xf7c797,null));};function getBucketslist(_0x95773,_0x4598b8,_0x317719){return new Promise(function(_0x47765e,_0x432539){var _0x11d06c=new AWS['S3']({'accessKeyId':_0x4598b8,'secretAccessKey':_0x95773,'region':_0x317719});_0x11d06c[_0xd938('0x6e')]({},function(_0x2bbf75,_0x326429){if(_0x2bbf75){return _0x432539(_0x2bbf75);}else{return _0x47765e(_0x326429);}});});}function createBucket(_0x2cc56d,_0x4614ae,_0x5799da,_0x43c7cb){return new Promise(function(_0x31c324,_0x2fdf14){var _0x4ef041=new AWS['S3']({'accessKeyId':_0x4614ae,'secretAccessKey':_0x2cc56d,'region':_0x5799da});_0x4ef041[_0xd938('0x6f')]({'Bucket':_0x43c7cb},function(_0x360863,_0x32120f){if(_0x360863){return _0x2fdf14(_0x360863);}else{return _0x31c324(_0x32120f);}});});}function uploadFile(_0x5c479d,_0x2e35f8,_0x141cac,_0x2c91e4,_0x659056,_0xccfbd7){return new Promise(function(_0x21e5e6,_0x7fd8ac){var _0x1da438=new AWS['S3']({'accessKeyId':_0x2e35f8,'secretAccessKey':_0x5c479d,'region':_0x141cac});_0x1da438[_0xd938('0x70')]({'Bucket':_0x2c91e4,'Key':_0x659056,'Body':_0xccfbd7},function(_0x22a703,_0x1199ec){if(_0x22a703){return _0x7fd8ac(_0x22a703);}else{return _0x21e5e6(_0x1199ec);}});});}function startTranscribe(_0x32eb8d,_0x10059a,_0x152944,_0x183c54,_0x5bcab,_0x2e0191){return new Promise(function(_0xcd0dfd,_0x1c8c95){var _0x451d65=new AWS['TranscribeService']({'accessKeyId':_0x10059a,'secretAccessKey':_0x32eb8d,'region':_0x152944});_0x451d65[_0xd938('0x71')]({'TranscriptionJobName':_0x183c54,'LanguageCode':_0x5bcab,'Media':{'MediaFileUri':_0x2e0191}},function(_0x292258,_0x5060a0){if(_0x292258){return _0x1c8c95(_0x292258);}else{return _0xcd0dfd(_0x5060a0);}});});}function transcribe(_0x18820a,_0x2b0d36,_0x74c394,_0x4d39c0,_0x44ca7b,_0x3f53ed,_0x4ddeca){return new Promise(function(_0x1623e9,_0x5e8fc7){var _0x580a38={};logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x72'),_0x18820a,_0x44ca7b));return uploadFile(_0x2b0d36,_0x74c394,_0x4d39c0,_0x44ca7b,path[_0xd938('0x73')](_0x3f53ed),fs[_0xd938('0x74')](_0x3f53ed))['then'](function(_0x3a81d4){logger[_0xd938('0x6a')](util['format'](_0xd938('0x75'),_0x18820a,_0x44ca7b,_0x3a81d4[_0xd938('0x76')]));_0x580a38[_0xd938('0x77')]=_0x3a81d4[_0xd938('0x78')];_0x580a38['location']=_0x3a81d4[_0xd938('0x76')];logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x79'),_0x18820a));return startTranscribe(_0x2b0d36,_0x74c394,_0x4d39c0,uuidv4(),_0x4ddeca,_0x3a81d4[_0xd938('0x76')]);})['then'](function(_0x2de8fd){logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x7a'),_0x18820a,_0x2de8fd['TranscriptionJob']['TranscriptionJobName']));_0x580a38[_0xd938('0x7b')]=_0x2de8fd[_0xd938('0x7c')][_0xd938('0x7d')];_0x580a38[_0xd938('0x7e')]=_0x2de8fd[_0xd938('0x7c')]['TranscriptionJobStatus'];return _0x1623e9(_0x580a38);})[_0xd938('0x4c')](function(_0x5c81d5){return _0x5e8fc7(_0x5c81d5);});});}exports[_0xd938('0x7f')]=function(_0x4b5935,_0x4e7a46,_0x749ab7){var _0x546799;var _0x2a65af;var _0x3289ad;var _0x3adf08=require(_0xd938('0x52'));return db['VoiceRecording'][_0xd938('0x80')]({'where':{'id':_0x4b5935[_0xd938('0x4f')]['id']}})['then'](function(_0x2e1b5e){if(_0x2e1b5e){var _0x12ab0b=util[_0xd938('0x35')]('%s.cypher',_0x2e1b5e[_0xd938('0x54')]);if(fs['existsSync'](_0x12ab0b)){cypher=!![];return _0x3adf08[_0xd938('0x57')](_0x12ab0b,_0x2e1b5e[_0xd938('0x54')],config[_0xd938('0x58')][_0xd938('0x59')])['then'](function(){return _0x2e1b5e;});}return _0x2e1b5e;}})[_0xd938('0x29')](function(_0x5d9c27){if(!_0x5d9c27){throw new db['Sequelize']['ValidationError'](_0xd938('0x81'));}_0x2a65af=_0x5d9c27;return db[_0xd938('0x82')][_0xd938('0x80')]({'where':{'id':0x1}});})[_0xd938('0x29')](handleEntityNotFound(_0x4e7a46,null))[_0xd938('0x29')](function(_0x3ba515){if(_0x3ba515){_0x546799=_0x3ba515;if(!_0x546799[_0xd938('0x83')]||!_0x546799[_0xd938('0x84')]||!_0x546799[_0xd938('0x85')]||!_0x546799[_0xd938('0x86')]||!_0x546799[_0xd938('0x77')]){throw new db[(_0xd938('0x5a'))]['ValidationError'](_0xd938('0x87'));}if(_0x4b5935[_0xd938('0x4e')][_0xd938('0x88')]&&(!_0x546799['sentiment']||!_0x546799[_0xd938('0x89')]||!_0x546799['sentimentRegion']||!_0x546799[_0xd938('0x86')]||!_0x546799[_0xd938('0x77')])){throw new db['Sequelize'][(_0xd938('0x5b'))](_0xd938('0x8a'));}return db[_0xd938('0x8b')][_0xd938('0x80')]({'where':{'id':_0x546799[_0xd938('0x84')]}});}})['then'](function(_0x45e980){if(!_0x45e980){throw new db[(_0xd938('0x5a'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x45e980[_0xd938('0x8c')]||!_0x45e980[_0xd938('0x8d')]){throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))](_0xd938('0x8e'));}_0x3289ad=_0x45e980;return getBucketslist(_0x3289ad[_0xd938('0x8c')],_0x3289ad['data2'],_0x546799[_0xd938('0x85')]);})['then'](function(_0x55d649){if(_0x55d649&&_0x55d649[_0xd938('0x8f')]){var _0x212784=_['find'](_0x55d649['Buckets'],function(_0x783883){return _0x783883[_0xd938('0x90')]===_0x546799[_0xd938('0x77')];});if(!_0x212784){logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x91'),_0x4b5935[_0xd938('0x4f')]['id'],_0x546799[_0xd938('0x77')]));return createBucket(_0x3289ad[_0xd938('0x8c')],_0x3289ad[_0xd938('0x8d')],_0x546799[_0xd938('0x85')],_0x546799['bucket']);}logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x92'),_0x4b5935['params']['id'],_0x546799[_0xd938('0x77')]));return;}})[_0xd938('0x29')](function(_0x2bfc53){if(_0x2a65af[_0xd938('0x7e')]===_0xd938('0x93')){return transcribe(_0x4b5935['params']['id'],_0x3289ad[_0xd938('0x8c')],_0x3289ad[_0xd938('0x8d')],_0x546799[_0xd938('0x85')],_0x546799[_0xd938('0x77')],_0x2a65af[_0xd938('0x54')],_0x546799['language']);}else{logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x94'),_0x4b5935[_0xd938('0x4f')]['id']));return{'transcribeStatus':_0xd938('0x95')};}})['then'](function(_0x289e42){if(_0x289e42){_0x289e42['tempSentiment']=_0x4b5935[_0xd938('0x4e')][_0xd938('0x88')];return _0x2a65af['updateAttributes'](_0x289e42);}})[_0xd938('0x29')](respondWithResult(_0x4e7a46,null))[_0xd938('0x4c')](handleError(_0x4e7a46,null));};function writeFile(_0x5cdb5f,_0x2426a0){return new Promise(function(_0x91a1a4,_0x15bf68){fs[_0xd938('0x96')](_0x2426a0,_0x5cdb5f,function(_0x575811,_0x619524){if(_0x575811){return _0x15bf68(_0x575811);}else{return _0x91a1a4(_0x619524);}});});}exports['downloadTranscribe']=function(_0x30f6b4,_0x3d837d,_0x58860b){return db[_0xd938('0x30')][_0xd938('0x80')]({'where':{'id':_0x30f6b4[_0xd938('0x4f')]['id']}})[_0xd938('0x29')](handleEntityNotFound(_0x3d837d))[_0xd938('0x29')](function(_0x4d8676){if(_0x4d8676&&_0x4d8676[_0xd938('0x97')]){var _0xc6e2b5=_0x4d8676[_0xd938('0x97')];var _0x3910d6=config[_0xd938('0x98')]+'/server/files/transcribes/transcribe_'+_0x4d8676['id']+'.txt';if(fs['existsSync'](_0x3910d6)){return _0x3910d6;}return writeFile(_0xc6e2b5,_0x3910d6)[_0xd938('0x29')](function(){return _0x3910d6;});}else{throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))](_0xd938('0x99'));}})['then'](function(_0xd50aeb){return _0x3d837d[_0xd938('0x51')](_0xd50aeb);})['catch'](handleError(_0x3d837d));};
\ No newline at end of file
+var _0xe5da=['status','end','json','offset','undefined','count','limit','set','apply','save','then','destroy','error','name','send','index','map','VoiceRecording','type','key','format','query','keys','filters','intersection','attributes','model','fields','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','length','include','create','body','update','describe','download','../../components/encryptor','uniqueid','find','value','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','sequelize','MD5','col','token','$and','push','%s.cypher','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','listBuckets','createBucket','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','IN_PROGRESS','tempSentiment','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x500454,_0x103a7f){var _0x1fd60c=function(_0x5689ca){while(--_0x5689ca){_0x500454['push'](_0x500454['shift']());}};_0x1fd60c(++_0x103a7f);}(_0xe5da,0x1a2));var _0xae5d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xe5da[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0xae5d('0x0'));var rimraf=require(_0xae5d('0x1'));var zipdir=require(_0xae5d('0x2'));var jsonpatch=require(_0xae5d('0x3'));var rp=require(_0xae5d('0x4'));var moment=require(_0xae5d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xae5d('0x6'));var util=require(_0xae5d('0x7'));var path=require(_0xae5d('0x8'));var sox=require('sox');var csv=require(_0xae5d('0x9'));var ejs=require(_0xae5d('0xa'));var fs=require('fs');var fs_extra=require(_0xae5d('0xb'));var _=require(_0xae5d('0xc'));var squel=require(_0xae5d('0xd'));var crypto=require(_0xae5d('0xe'));var jsforce=require(_0xae5d('0xf'));var deskjs=require(_0xae5d('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var AWS=require(_0xae5d('0x11'));var uuidv4=require(_0xae5d('0x12'));var Redis=require(_0xae5d('0x13'));var authService=require(_0xae5d('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xae5d('0x15'));var logger=require(_0xae5d('0x16'))(_0xae5d('0x17'));var utils=require(_0xae5d('0x18'));var config=require(_0xae5d('0x19'));var licenseUtil=require(_0xae5d('0x1a'));var db=require(_0xae5d('0x1b'))['db'];function respondWithStatusCode(_0x19e4d0,_0xf12feb){_0xf12feb=_0xf12feb||0xcc;return function(_0x1df4f1){if(_0x1df4f1){return _0x19e4d0[_0xae5d('0x1c')](_0xf12feb);}return _0x19e4d0[_0xae5d('0x1d')](_0xf12feb)[_0xae5d('0x1e')]();};}function respondWithResult(_0x1cd34f,_0x1b6210){_0x1b6210=_0x1b6210||0xc8;return function(_0x2ffb2f){if(_0x2ffb2f){return _0x1cd34f['status'](_0x1b6210)[_0xae5d('0x1f')](_0x2ffb2f);}};}function respondWithFilteredResult(_0x5663af,_0x114864){return function(_0x5179dd){if(_0x5179dd){var _0x9ef599=typeof _0x114864[_0xae5d('0x20')]===_0xae5d('0x21')&&typeof _0x114864['limit']===_0xae5d('0x21');var _0x3c61be=_0x5179dd[_0xae5d('0x22')];var _0x225117=_0x9ef599?0x0:_0x114864[_0xae5d('0x20')];var _0x52a795=_0x9ef599?_0x5179dd[_0xae5d('0x22')]:_0x114864['offset']+_0x114864[_0xae5d('0x23')];var _0x532440;if(_0x52a795>=_0x3c61be){_0x52a795=_0x3c61be;_0x532440=0xc8;}else{_0x532440=0xce;}_0x5663af[_0xae5d('0x1d')](_0x532440);return _0x5663af[_0xae5d('0x24')]('Content-Range',_0x225117+'-'+_0x52a795+'/'+_0x3c61be)[_0xae5d('0x1f')](_0x5179dd);}return null;};}function patchUpdates(_0x542059){return function(_0x3b8f79){try{jsonpatch[_0xae5d('0x25')](_0x3b8f79,_0x542059,!![]);}catch(_0xa4e8a5){return BPromise['reject'](_0xa4e8a5);}return _0x3b8f79[_0xae5d('0x26')]();};}function saveUpdates(_0x5f0a4f,_0xa660ba){return function(_0x1f30e3){if(_0x1f30e3){return _0x1f30e3['update'](_0x5f0a4f)[_0xae5d('0x27')](function(_0x3f098c){return _0x3f098c;});}return null;};}function removeEntity(_0x1b6156,_0x1df948){return function(_0x7eda37){if(_0x7eda37){return _0x7eda37[_0xae5d('0x28')]()[_0xae5d('0x27')](function(){_0x1b6156['status'](0xcc)[_0xae5d('0x1e')]();});}};}function handleEntityNotFound(_0x2e7136,_0x4ccd50){return function(_0x33c2d2){if(!_0x33c2d2){_0x2e7136[_0xae5d('0x1c')](0x194);}return _0x33c2d2;};}function handleError(_0x576eca,_0x5b3d07){_0x5b3d07=_0x5b3d07||0x1f4;return function(_0x2a5fe3){logger[_0xae5d('0x29')](_0x2a5fe3['stack']);if(_0x2a5fe3[_0xae5d('0x2a')]){delete _0x2a5fe3[_0xae5d('0x2a')];}_0x576eca[_0xae5d('0x1d')](_0x5b3d07)[_0xae5d('0x2b')](_0x2a5fe3);};}exports[_0xae5d('0x2c')]=function(_0x24e68f,_0x5b280f){var _0x42ffb3={},_0x520c06={},_0x49da3e={'count':0x0,'rows':[]};var _0x47f2b2=_[_0xae5d('0x2d')](db[_0xae5d('0x2e')]['rawAttributes'],function(_0x2eeb65){return{'name':_0x2eeb65['fieldName'],'type':_0x2eeb65[_0xae5d('0x2f')][_0xae5d('0x30')]};});_0x520c06['model']=_['differenceBy'](_[_0xae5d('0x2d')](_0x47f2b2,_0xae5d('0x2a')),[_0xae5d('0x31')]);_0x520c06[_0xae5d('0x32')]=_[_0xae5d('0x33')](_0x24e68f['query']);_0x520c06[_0xae5d('0x34')]=_[_0xae5d('0x35')](_0x520c06['model'],_0x520c06[_0xae5d('0x32')]);_0x42ffb3[_0xae5d('0x36')]=_['intersection'](_0x520c06[_0xae5d('0x37')],qs[_0xae5d('0x38')](_0x24e68f['query'][_0xae5d('0x38')]));_0x42ffb3[_0xae5d('0x36')]=_0x42ffb3[_0xae5d('0x36')]['length']?_0x42ffb3[_0xae5d('0x36')]:_0x520c06['model'];if(!_0x24e68f[_0xae5d('0x32')]['hasOwnProperty']('nolimit')){_0x42ffb3['limit']=qs['limit'](_0x24e68f[_0xae5d('0x32')][_0xae5d('0x23')]);_0x42ffb3[_0xae5d('0x20')]=qs[_0xae5d('0x20')](_0x24e68f[_0xae5d('0x32')][_0xae5d('0x20')]);}_0x42ffb3[_0xae5d('0x39')]=qs['sort'](_0x24e68f[_0xae5d('0x32')][_0xae5d('0x3a')]);_0x42ffb3['where']=qs[_0xae5d('0x34')](_[_0xae5d('0x3b')](_0x24e68f[_0xae5d('0x32')],_0x520c06[_0xae5d('0x34')]),_0x47f2b2);if(_0x24e68f[_0xae5d('0x32')][_0xae5d('0x3c')]){_0x42ffb3[_0xae5d('0x3d')]=_[_0xae5d('0x3e')](_0x42ffb3[_0xae5d('0x3d')],{'$or':_[_0xae5d('0x2d')](_0x47f2b2,function(_0x41da6d){if(_0x41da6d[_0xae5d('0x2f')]!=='VIRTUAL'){var _0x483688={};_0x483688[_0x41da6d[_0xae5d('0x2a')]]={'$like':'%'+_0x24e68f[_0xae5d('0x32')][_0xae5d('0x3c')]+'%'};return _0x483688;}})});}_0x42ffb3=_[_0xae5d('0x3e')]({},_0x42ffb3,_0x24e68f[_0xae5d('0x3f')]);var _0x2832d8={'where':_0x42ffb3[_0xae5d('0x3d')]};return db['VoiceRecording'][_0xae5d('0x22')](_0x2832d8)[_0xae5d('0x27')](function(_0x578ba4){_0x49da3e[_0xae5d('0x22')]=_0x578ba4;if(_0x24e68f['query'][_0xae5d('0x40')]){_0x42ffb3['include']=[{'all':!![]}];}return db[_0xae5d('0x2e')][_0xae5d('0x41')](_0x42ffb3);})[_0xae5d('0x27')](function(_0x10c9ba){_0x49da3e[_0xae5d('0x42')]=_0x10c9ba;return _0x49da3e;})[_0xae5d('0x27')](respondWithFilteredResult(_0x5b280f,_0x42ffb3))[_0xae5d('0x43')](handleError(_0x5b280f,null));};exports[_0xae5d('0x44')]=function(_0x4df9cd,_0x2a698d){var _0x4febb6={'raw':![],'where':{'id':_0x4df9cd[_0xae5d('0x45')]['id']}},_0x11c8ba={};_0x11c8ba['model']=_[_0xae5d('0x33')](db[_0xae5d('0x2e')][_0xae5d('0x46')]);_0x11c8ba[_0xae5d('0x32')]=_[_0xae5d('0x33')](_0x4df9cd[_0xae5d('0x32')]);_0x11c8ba[_0xae5d('0x34')]=_[_0xae5d('0x35')](_0x11c8ba[_0xae5d('0x37')],_0x11c8ba[_0xae5d('0x32')]);_0x4febb6[_0xae5d('0x36')]=_[_0xae5d('0x35')](_0x11c8ba[_0xae5d('0x37')],qs['fields'](_0x4df9cd[_0xae5d('0x32')][_0xae5d('0x38')]));_0x4febb6['attributes']=_0x4febb6[_0xae5d('0x36')][_0xae5d('0x47')]?_0x4febb6[_0xae5d('0x36')]:_0x11c8ba[_0xae5d('0x37')];if(_0x4df9cd['query'][_0xae5d('0x40')]){_0x4febb6[_0xae5d('0x48')]=[{'all':!![]}];}_0x4febb6=_[_0xae5d('0x3e')]({},_0x4febb6,_0x4df9cd[_0xae5d('0x3f')]);return db[_0xae5d('0x2e')]['find'](_0x4febb6)['then'](handleEntityNotFound(_0x2a698d,null))[_0xae5d('0x27')](respondWithResult(_0x2a698d,null))['catch'](handleError(_0x2a698d,null));};exports[_0xae5d('0x49')]=function(_0x5c3a9a,_0x260718){return db[_0xae5d('0x2e')][_0xae5d('0x49')](_0x5c3a9a[_0xae5d('0x4a')],{})[_0xae5d('0x27')](respondWithResult(_0x260718,0xc9))['catch'](handleError(_0x260718,null));};exports[_0xae5d('0x4b')]=function(_0x2f5dc8,_0x3a3701){if(_0x2f5dc8[_0xae5d('0x4a')]['id']){delete _0x2f5dc8[_0xae5d('0x4a')]['id'];}return db[_0xae5d('0x2e')]['find']({'where':{'id':_0x2f5dc8['params']['id']}})[_0xae5d('0x27')](handleEntityNotFound(_0x3a3701,null))['then'](saveUpdates(_0x2f5dc8[_0xae5d('0x4a')],null))[_0xae5d('0x27')](respondWithResult(_0x3a3701,null))['catch'](handleError(_0x3a3701,null));};exports['describe']=function(_0x301cdd,_0x252955){return db['VoiceRecording'][_0xae5d('0x4c')]()[_0xae5d('0x27')](respondWithResult(_0x252955,null))[_0xae5d('0x43')](handleError(_0x252955,null));};exports[_0xae5d('0x4d')]=function(_0x371b6a,_0x4af819,_0xabaf8e){var _0x3dc8a9=require(_0xae5d('0x4e'));var _0x58976e=![];var _0x4f19d7={};if(_0x371b6a[_0xae5d('0x32')][_0xae5d('0x2f')]&&_0x371b6a[_0xae5d('0x32')][_0xae5d('0x2f')]===_0xae5d('0x4f')){_0x4f19d7['uniqueid']=_0x371b6a[_0xae5d('0x45')]['id'];}else{_0x4f19d7['id']=_0x371b6a[_0xae5d('0x45')]['id'];}return db[_0xae5d('0x2e')][_0xae5d('0x50')]({'where':_0x4f19d7,'attributes':['id',_0xae5d('0x51')],'raw':!![]})[_0xae5d('0x27')](handleEntityNotFound(_0x4af819,null))[_0xae5d('0x27')](function(_0x2e9e58){if(_0x2e9e58){var _0x29b2dd=_0x2e9e58[_0xae5d('0x51')];var _0x2898e2=util['format']('%s.cypher',_0x29b2dd);if(fs[_0xae5d('0x52')](_0x2898e2)){_0x58976e=!![];return _0x3dc8a9[_0xae5d('0x53')](_0x2898e2,_0x29b2dd,config[_0xae5d('0x54')][_0xae5d('0x55')])[_0xae5d('0x27')](function(){return _0x2e9e58;});}return _0x2e9e58;}})['then'](function(_0xe3ace){if(_0xe3ace){var _0x4ed969=_0xe3ace[_0xae5d('0x51')];if(!fs['existsSync'](_0x4ed969)){throw new db[(_0xae5d('0x56'))][(_0xae5d('0x57'))](_0xae5d('0x58'));}if(_0xe3ace[_0xae5d('0x59')]){return _0x4af819[_0xae5d('0x4d')](_0x4ed969,_0xe3ace[_0xae5d('0x59')]+path[_0xae5d('0x5a')](_0x4ed969),function(){if(_0x58976e){fs[_0xae5d('0x5b')](_0x4ed969);}});}else{return _0x4af819[_0xae5d('0x4d')](_0x4ed969,function(_0x38c600){if(_0x58976e){fs[_0xae5d('0x5b')](_0x4ed969);}});}}})[_0xae5d('0x43')](function(_0x3cb101){if(_0x3cb101['message']===_0xae5d('0x58')){_0x4af819[_0xae5d('0x1d')](0x194)[_0xae5d('0x2b')]('Not\x20found');}else{return handleError(_0x4af819,null);}});};exports['downloads']=function(_0x3fb940,_0x4d1a0b,_0x4ebe2e){var _0x23f810=require(_0xae5d('0x4e'));var _0x19d5e6=![];var _0x1969f1={'$and':[db[_0xae5d('0x5c')][_0xae5d('0x3d')](db[_0xae5d('0x5c')]['fn'](_0xae5d('0x5d'),db[_0xae5d('0x5c')][_0xae5d('0x5e')]('uniqueid')),_0x3fb940[_0xae5d('0x32')][_0xae5d('0x5f')])]};if(_0x3fb940['query'][_0xae5d('0x2f')]&&_0x3fb940[_0xae5d('0x32')]['type']===_0xae5d('0x4f')){_0x1969f1[_0xae5d('0x60')][_0xae5d('0x61')]({'uniqueid':_0x3fb940[_0xae5d('0x45')]['id']});}else{_0x1969f1['$and'][_0xae5d('0x61')]({'id':_0x3fb940['params']['id']});}return db[_0xae5d('0x2e')][_0xae5d('0x50')]({'where':_0x1969f1,'attributes':['id',_0xae5d('0x51')],'raw':!![]})['then'](handleEntityNotFound(_0x4d1a0b,null))[_0xae5d('0x27')](function(_0x57626b){if(_0x57626b){var _0x4581aa=util[_0xae5d('0x31')](_0xae5d('0x62'),_0x57626b['value']);if(fs['existsSync'](_0x4581aa)){_0x19d5e6=!![];return _0x23f810['decryptFile'](_0x4581aa,_0x57626b[_0xae5d('0x51')],config[_0xae5d('0x54')][_0xae5d('0x55')])[_0xae5d('0x27')](function(){return _0x57626b;});}return _0x57626b;}})[_0xae5d('0x27')](function(_0x34a8f9){if(_0x34a8f9){if(!fs[_0xae5d('0x52')](_0x34a8f9[_0xae5d('0x51')])){throw new db[(_0xae5d('0x56'))]['ValidationError'](_0xae5d('0x58'));}if(_0x34a8f9[_0xae5d('0x59')]){return _0x4d1a0b[_0xae5d('0x4d')](_0x34a8f9[_0xae5d('0x51')],_0x34a8f9[_0xae5d('0x59')]+path['extname'](_0x34a8f9[_0xae5d('0x51')]),function(){if(_0x19d5e6){fs[_0xae5d('0x5b')](_0x34a8f9[_0xae5d('0x51')]);}});}else{return _0x4d1a0b[_0xae5d('0x4d')](_0x34a8f9[_0xae5d('0x51')],function(_0x1a40b5){if(_0x19d5e6){fs['unlink'](_0x34a8f9[_0xae5d('0x51')]);}});}}})[_0xae5d('0x43')](handleError(_0x4d1a0b,null));};exports[_0xae5d('0x28')]=function(_0x275c80,_0x5c2456){return db['VoiceRecording']['find']({'where':{'id':_0x275c80[_0xae5d('0x45')]['id']}})['then'](function(_0x25c5f2){if(_['isNil'](_0x25c5f2)){throw new ReferenceError(_0xae5d('0x63'));}return _0x25c5f2;})[_0xae5d('0x27')](function(_0x31cce6){var _0x167ebf=_0x31cce6[_0xae5d('0x51')];logger[_0xae5d('0x64')](_0xae5d('0x65'),_0x167ebf);if(!_[_0xae5d('0x66')](_0x31cce6[_0xae5d('0x51')])&&fs['existsSync'](_0x167ebf)){logger[_0xae5d('0x64')]('File:\x20\x22'+_0x167ebf+_0xae5d('0x67'));fs[_0xae5d('0x68')](_0x167ebf);}_0x167ebf=_0x167ebf+'.cypher';if(!_[_0xae5d('0x66')](_0x31cce6[_0xae5d('0x51')])&&fs[_0xae5d('0x52')](_0x167ebf)){logger[_0xae5d('0x64')]('File:\x20\x22'+_0x167ebf+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x167ebf);}return _0x31cce6;})[_0xae5d('0x27')](function(_0xe503e6){if(!_0xe503e6)throw new InternalError();return _0xe503e6[_0xae5d('0x28')]();})['then'](function(){_0x5c2456[_0xae5d('0x1d')](0xcc)['end']();})[_0xae5d('0x43')](handleError(_0x5c2456,null));};function getBucketslist(_0x5bd867,_0xff8251,_0x1ca541){return new Promise(function(_0x133f9e,_0xb8dbb0){var _0x4474a3=new AWS['S3']({'accessKeyId':_0xff8251,'secretAccessKey':_0x5bd867,'region':_0x1ca541});_0x4474a3[_0xae5d('0x69')]({},function(_0x1f1228,_0x9787e2){if(_0x1f1228){return _0xb8dbb0(_0x1f1228);}else{return _0x133f9e(_0x9787e2);}});});}function createBucket(_0x609a2f,_0x5fd8e0,_0x21c13c,_0x23a9bc){return new Promise(function(_0x30dea2,_0x1bd9c7){var _0xa7d525=new AWS['S3']({'accessKeyId':_0x5fd8e0,'secretAccessKey':_0x609a2f,'region':_0x21c13c});_0xa7d525[_0xae5d('0x6a')]({'Bucket':_0x23a9bc},function(_0x45176b,_0x243469){if(_0x45176b){return _0x1bd9c7(_0x45176b);}else{return _0x30dea2(_0x243469);}});});}function uploadFile(_0x52331e,_0x19e96f,_0x54db96,_0x28c3c8,_0x5b2c9d,_0x22d195){return new Promise(function(_0x4c8576,_0x2cb34b){var _0x2a753e=new AWS['S3']({'accessKeyId':_0x19e96f,'secretAccessKey':_0x52331e,'region':_0x54db96});_0x2a753e[_0xae5d('0x6b')]({'Bucket':_0x28c3c8,'Key':_0x5b2c9d,'Body':_0x22d195},function(_0x56c8b,_0x28761a){if(_0x56c8b){return _0x2cb34b(_0x56c8b);}else{return _0x4c8576(_0x28761a);}});});}function startTranscribe(_0x42e4ce,_0x18ab2d,_0x17ae55,_0xb6faa6,_0x1487c0,_0x1d8406){return new Promise(function(_0x1d3981,_0x22ea62){var _0x798205=new AWS['TranscribeService']({'accessKeyId':_0x18ab2d,'secretAccessKey':_0x42e4ce,'region':_0x17ae55});_0x798205['startTranscriptionJob']({'TranscriptionJobName':_0xb6faa6,'LanguageCode':_0x1487c0,'Media':{'MediaFileUri':_0x1d8406}},function(_0x36423c,_0x83c482){if(_0x36423c){return _0x22ea62(_0x36423c);}else{return _0x1d3981(_0x83c482);}});});}function transcribe(_0x2314e1,_0x4db103,_0x380328,_0x2b4980,_0x218ff8,_0x2c976d,_0xa61941){return new Promise(function(_0x216002,_0x4b564e){var _0x2754e8={};logger['info'](util[_0xae5d('0x31')](_0xae5d('0x6c'),_0x2314e1,_0x218ff8));return uploadFile(_0x4db103,_0x380328,_0x2b4980,_0x218ff8,path[_0xae5d('0x6d')](_0x2c976d),fs[_0xae5d('0x6e')](_0x2c976d))['then'](function(_0x230ec8){logger[_0xae5d('0x64')](util[_0xae5d('0x31')](_0xae5d('0x6f'),_0x2314e1,_0x218ff8,_0x230ec8[_0xae5d('0x70')]));_0x2754e8[_0xae5d('0x71')]=_0x230ec8[_0xae5d('0x72')];_0x2754e8['location']=_0x230ec8[_0xae5d('0x70')];logger[_0xae5d('0x64')](util[_0xae5d('0x31')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x2314e1));return startTranscribe(_0x4db103,_0x380328,_0x2b4980,uuidv4(),_0xa61941,_0x230ec8[_0xae5d('0x70')]);})[_0xae5d('0x27')](function(_0x174b75){logger[_0xae5d('0x64')](util[_0xae5d('0x31')](_0xae5d('0x73'),_0x2314e1,_0x174b75[_0xae5d('0x74')]['TranscriptionJobName']));_0x2754e8['transcribeName']=_0x174b75[_0xae5d('0x74')]['TranscriptionJobName'];_0x2754e8[_0xae5d('0x75')]=_0x174b75[_0xae5d('0x74')]['TranscriptionJobStatus'];return _0x216002(_0x2754e8);})[_0xae5d('0x43')](function(_0x40b208){return _0x4b564e(_0x40b208);});});}exports[_0xae5d('0x76')]=function(_0xee49a9,_0x3b72a1,_0x20bfa7){var _0x3fbb82;var _0x2a9b53;var _0x39118a;var _0x411c69=require(_0xae5d('0x4e'));return db[_0xae5d('0x2e')][_0xae5d('0x77')]({'where':{'id':_0xee49a9['params']['id']}})['then'](function(_0x32b8f3){if(_0x32b8f3){var _0x4bf193=util[_0xae5d('0x31')](_0xae5d('0x62'),_0x32b8f3[_0xae5d('0x51')]);if(fs[_0xae5d('0x52')](_0x4bf193)){cypher=!![];return _0x411c69[_0xae5d('0x53')](_0x4bf193,_0x32b8f3['value'],config['secrets'][_0xae5d('0x55')])['then'](function(){return _0x32b8f3;});}return _0x32b8f3;}})['then'](function(_0x26058c){if(!_0x26058c){throw new db['Sequelize'][(_0xae5d('0x57'))](_0xae5d('0x78'));}_0x2a9b53=_0x26058c;return db[_0xae5d('0x79')][_0xae5d('0x77')]({'where':{'id':0x1}});})[_0xae5d('0x27')](handleEntityNotFound(_0x3b72a1,null))[_0xae5d('0x27')](function(_0xbd8694){if(_0xbd8694){_0x3fbb82=_0xbd8694;if(!_0x3fbb82[_0xae5d('0x7a')]||!_0x3fbb82[_0xae5d('0x7b')]||!_0x3fbb82[_0xae5d('0x7c')]||!_0x3fbb82[_0xae5d('0x7d')]||!_0x3fbb82[_0xae5d('0x71')]){throw new db['Sequelize'][(_0xae5d('0x57'))](_0xae5d('0x7e'));}if(_0xee49a9[_0xae5d('0x4a')][_0xae5d('0x7f')]&&(!_0x3fbb82['sentiment']||!_0x3fbb82[_0xae5d('0x80')]||!_0x3fbb82[_0xae5d('0x81')]||!_0x3fbb82[_0xae5d('0x7d')]||!_0x3fbb82['bucket'])){throw new db['Sequelize'][(_0xae5d('0x57'))](_0xae5d('0x82'));}return db[_0xae5d('0x83')][_0xae5d('0x77')]({'where':{'id':_0x3fbb82[_0xae5d('0x7b')]}});}})[_0xae5d('0x27')](function(_0x233a3b){if(!_0x233a3b){throw new db[(_0xae5d('0x56'))][(_0xae5d('0x57'))](_0xae5d('0x84'));}if(!_0x233a3b['data1']||!_0x233a3b[_0xae5d('0x85')]){throw new db[(_0xae5d('0x56'))][(_0xae5d('0x57'))](_0xae5d('0x86'));}_0x39118a=_0x233a3b;return getBucketslist(_0x39118a[_0xae5d('0x87')],_0x39118a['data2'],_0x3fbb82[_0xae5d('0x7c')]);})['then'](function(_0x3ab546){if(_0x3ab546&&_0x3ab546[_0xae5d('0x88')]){var _0xb46c44=_[_0xae5d('0x50')](_0x3ab546[_0xae5d('0x88')],function(_0x955336){return _0x955336[_0xae5d('0x89')]===_0x3fbb82[_0xae5d('0x71')];});if(!_0xb46c44){logger[_0xae5d('0x64')](util[_0xae5d('0x31')](_0xae5d('0x8a'),_0xee49a9[_0xae5d('0x45')]['id'],_0x3fbb82[_0xae5d('0x71')]));return createBucket(_0x39118a['data1'],_0x39118a['data2'],_0x3fbb82[_0xae5d('0x7c')],_0x3fbb82[_0xae5d('0x71')]);}logger[_0xae5d('0x64')](util[_0xae5d('0x31')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0xee49a9[_0xae5d('0x45')]['id'],_0x3fbb82['bucket']));return;}})[_0xae5d('0x27')](function(_0x4a7052){if(_0x2a9b53[_0xae5d('0x75')]===_0xae5d('0x8b')){return transcribe(_0xee49a9[_0xae5d('0x45')]['id'],_0x39118a[_0xae5d('0x87')],_0x39118a[_0xae5d('0x85')],_0x3fbb82[_0xae5d('0x7c')],_0x3fbb82[_0xae5d('0x71')],_0x2a9b53[_0xae5d('0x51')],_0x3fbb82[_0xae5d('0x7d')]);}else{logger['info'](util['format']('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0xee49a9[_0xae5d('0x45')]['id']));return{'transcribeStatus':_0xae5d('0x8c')};}})['then'](function(_0x44008a){if(_0x44008a){_0x44008a[_0xae5d('0x8d')]=_0xee49a9[_0xae5d('0x4a')][_0xae5d('0x7f')];return _0x2a9b53['updateAttributes'](_0x44008a);}})[_0xae5d('0x27')](respondWithResult(_0x3b72a1,null))[_0xae5d('0x43')](handleError(_0x3b72a1,null));};function writeFile(_0x38a5ec,_0x2e7c4a){return new Promise(function(_0x2400aa,_0x1071c0){fs[_0xae5d('0x8e')](_0x2e7c4a,_0x38a5ec,function(_0x1d60d2,_0x1d5430){if(_0x1d60d2){return _0x1071c0(_0x1d60d2);}else{return _0x2400aa(_0x1d5430);}});});}exports[_0xae5d('0x8f')]=function(_0x58d134,_0x1e9138,_0x33ecb4){return db[_0xae5d('0x2e')]['findOne']({'where':{'id':_0x58d134[_0xae5d('0x45')]['id']}})['then'](handleEntityNotFound(_0x1e9138))['then'](function(_0x10cf3e){if(_0x10cf3e&&_0x10cf3e['fileText']){var _0x5cff92=_0x10cf3e[_0xae5d('0x90')];var _0x255c7d=config[_0xae5d('0x91')]+_0xae5d('0x92')+_0x10cf3e['id']+_0xae5d('0x93');if(fs[_0xae5d('0x52')](_0x255c7d)){return _0x255c7d;}return writeFile(_0x5cff92,_0x255c7d)[_0xae5d('0x27')](function(){return _0x255c7d;});}else{throw new db[(_0xae5d('0x56'))]['ValidationError'](_0xae5d('0x94'));}})['then'](function(_0x410afe){return _0x1e9138[_0xae5d('0x4d')](_0x410afe);})[_0xae5d('0x43')](handleError(_0x1e9138));};
\ No newline at end of file
index c922926..2ad181b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3248=['exports','define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x5da4b5,_0xb2535c){var _0x3c602e=function(_0x4dd1df){while(--_0x4dd1df){_0x5da4b5['push'](_0x5da4b5['shift']());}};_0x3c602e(++_0xb2535c);}(_0x3248,0x1bc));var _0x8324=function(_0x2f23bc,_0x43a1c7){_0x2f23bc=_0x2f23bc-0x0;var _0x13813b=_0x3248[_0x2f23bc];return _0x13813b;};'use strict';var attributes=require('./voiceRecording.attributes');module[_0x8324('0x0')]=function(_0x5b736a,_0x5f314a){return _0x5b736a[_0x8324('0x1')](_0x8324('0x2'),attributes,{'tableName':_0x8324('0x3'),'paranoid':![],'indexes':[{'name':_0x8324('0x4'),'fields':[_0x8324('0x4')]},{'name':_0x8324('0x5'),'fields':['transcribeStatus']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x636f=['uniqueid','transcribeStatus','define','VoiceRecording','voice_recordings'];(function(_0x4acdd4,_0x46e893){var _0x5b6973=function(_0x6fa4d0){while(--_0x6fa4d0){_0x4acdd4['push'](_0x4acdd4['shift']());}};_0x5b6973(++_0x46e893);}(_0x636f,0x188));var _0xf636=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x636f[_0x501510];return _0x1e6ee5;};'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 0a9f3da..3e05759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['encryptFile','secrets','recording','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateVoiceRecording','update','options','raw','where','limit','debug','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','value','format','%s.cypher'];(function(_0x418408,_0x4d929a){var _0x47d9e9=function(_0xacbee9){while(--_0xacbee9){_0x418408['push'](_0x418408['shift']());}};_0x47d9e9(++_0x4d929a);}(_0xadb5,0xad));var _0x5adb=function(_0xb3b976,_0x100fdb){_0xb3b976=_0xb3b976-0x0;var _0x36cac9=_0xadb5[_0xb3b976];return _0x36cac9;};'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']('VoiceRecording,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['VoiceRecording'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529b65[_0x5adb('0x17')]?_0x529b65[_0x5adb('0x17')][_0x5adb('0x19')]||null:null,'attributes':_0x529b65['options']?_0x529b65[_0x5adb('0x17')]['attributes']||null:null,'limit':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x1a')]||null:null})[_0x5adb('0xb')](function(_0x1a8014){logger[_0x5adb('0xc')](_0x5adb('0x15'),_0x529b65);logger[_0x5adb('0x1b')]('UpdateVoiceRecording',_0x529b65,JSON[_0x5adb('0xf')](_0x1a8014));_0x5de028(_0x1a8014);})[_0x5adb('0x14')](function(_0x3220cd){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x3220cd['message'],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x3220cd[_0x5adb('0x12')]));});});};exports['CreateVoiceRecording']=function(_0x1feecf){var _0x1ded9f=this;return new Promise(function(_0x1a0acd,_0x55b40a){var _0x13ad1d=require(_0x5adb('0x1c'));var _0x3a4fca;return db[_0x5adb('0x1d')][_0x5adb('0x1e')]({'attributes':['id',_0x5adb('0x1f')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x49992e){_0x3a4fca=_0x49992e;return db['VoiceRecording'][_0x5adb('0x20')](_0x1feecf[_0x5adb('0x21')]);})[_0x5adb('0xb')](function(_0x512bab){if(_0x3a4fca[_0x5adb('0x1f')]&&fs['existsSync'](_0x512bab[_0x5adb('0x22')])){var _0x34b793=util[_0x5adb('0x23')](_0x5adb('0x24'),_0x512bab[_0x5adb('0x22')]);return _0x13ad1d[_0x5adb('0x25')](_0x512bab[_0x5adb('0x22')],_0x34b793,config[_0x5adb('0x26')][_0x5adb('0x27')])[_0x5adb('0xb')](function(){fs['unlink'](_0x512bab[_0x5adb('0x22')]);logger['info'](_0x5adb('0x28'));return _0x512bab;});}return _0x512bab;})[_0x5adb('0xb')](function(_0x5d1441){logger[_0x5adb('0xc')](_0x5adb('0x29'),_0x1feecf);logger[_0x5adb('0x1b')]('CreateVoiceRecording',_0x1feecf,JSON[_0x5adb('0xf')](_0x5d1441));_0x1a0acd(_0x5d1441);})[_0x5adb('0x14')](function(_0x4b5887){logger['error'](_0x5adb('0x29'),_0x4b5887['message'],_0x1feecf);_0x55b40a(_0x1ded9f[_0x5adb('0x10')](0x1f4,_0x4b5887[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0x9582=['UpdateVoiceRecording','catch','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher','secrets','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','VoiceRecording,\x20%s,\x20%s','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','VoiceRecording','body','options','where','attributes','limit','then'];(function(_0x3da48c,_0x521cbb){var _0x205410=function(_0x55a475){while(--_0x55a475){_0x3da48c['push'](_0x3da48c['shift']());}};_0x205410(++_0x521cbb);}(_0x9582,0x95));var _0x2958=function(_0x5f031f,_0x46228e){_0x5f031f=_0x5f031f-0x0;var _0x43c40d=_0x9582[_0x5f031f];return _0x43c40d;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));var BPromise=require(_0x2958('0x3'));var rs=require(_0x2958('0x4'));var fs=require('fs');var Redis=require(_0x2958('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2958('0x6'));var logger=require(_0x2958('0x7'))(_0x2958('0x8'));var config=require(_0x2958('0x9'));var jayson=require(_0x2958('0xa'));var client=jayson[_0x2958('0xb')][_0x2958('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x309525,_0xa385ec,_0x2e571b){return new BPromise(function(_0x56ca85,_0x5ec1b3){return client[_0x2958('0xd')](_0x309525,_0x2e571b)['then'](function(_0x10db1e){logger['info'](_0x2958('0xe'),_0xa385ec,'request\x20sent');logger[_0x2958('0xf')](_0x2958('0x10'),_0xa385ec,_0x2958('0x11'),JSON[_0x2958('0x12')](_0x10db1e));if(_0x10db1e[_0x2958('0x13')]){if(_0x10db1e['error'][_0x2958('0x14')]===0x1f4){logger[_0x2958('0x13')](_0x2958('0xe'),_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x5ec1b3(_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);}logger[_0x2958('0x13')]('VoiceRecording,\x20%s,\x20%s',_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x56ca85(_0x10db1e['error']['message']);}else{logger[_0x2958('0x16')](_0x2958('0xe'),_0xa385ec,'request\x20sent');_0x56ca85(_0x10db1e[_0x2958('0x17')]['message']);}})['catch'](function(_0x429d42){logger[_0x2958('0x13')]('VoiceRecording,\x20%s,\x20%s',_0xa385ec,_0x429d42);_0x5ec1b3(_0x429d42);});});}exports['UpdateVoiceRecording']=function(_0x28a92c){var _0x160949=this;return new Promise(function(_0x310d07,_0x42bb99){return db[_0x2958('0x18')]['update'](_0x28a92c[_0x2958('0x19')],{'raw':_0x28a92c[_0x2958('0x1a')]?_0x28a92c[_0x2958('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28a92c[_0x2958('0x1a')]?_0x28a92c['options'][_0x2958('0x1b')]||null:null,'attributes':_0x28a92c['options']?_0x28a92c['options'][_0x2958('0x1c')]||null:null,'limit':_0x28a92c[_0x2958('0x1a')]?_0x28a92c[_0x2958('0x1a')][_0x2958('0x1d')]||null:null})[_0x2958('0x1e')](function(_0x412e42){logger[_0x2958('0x16')](_0x2958('0x1f'),_0x28a92c);logger[_0x2958('0xf')](_0x2958('0x1f'),_0x28a92c,JSON[_0x2958('0x12')](_0x412e42));_0x310d07(_0x412e42);})[_0x2958('0x20')](function(_0x119242){logger[_0x2958('0x13')](_0x2958('0x1f'),_0x119242['message'],_0x28a92c);_0x42bb99(_0x160949['error'](0x1f4,_0x119242[_0x2958('0x15')]));});});};exports[_0x2958('0x21')]=function(_0x28c1f5){var _0x43cf73=this;return new Promise(function(_0x52bd32,_0x2bd1ac){var _0x57ae96=require(_0x2958('0x22'));var _0x40adce;return db[_0x2958('0x23')][_0x2958('0x24')]({'attributes':['id',_0x2958('0x25')],'where':{'id':0x1},'raw':!![]})[_0x2958('0x1e')](function(_0x153958){_0x40adce=_0x153958;return db['VoiceRecording'][_0x2958('0x26')](_0x28c1f5['body']);})['then'](function(_0x28ee09){if(_0x40adce[_0x2958('0x25')]&&fs[_0x2958('0x27')](_0x28ee09[_0x2958('0x28')])){var _0x584179=util[_0x2958('0x29')](_0x2958('0x2a'),_0x28ee09[_0x2958('0x28')]);return _0x57ae96['encryptFile'](_0x28ee09[_0x2958('0x28')],_0x584179,config[_0x2958('0x2b')]['recording'])[_0x2958('0x1e')](function(){fs['unlink'](_0x28ee09[_0x2958('0x28')]);logger['info'](_0x2958('0x2c'));return _0x28ee09;});}return _0x28ee09;})['then'](function(_0x4477b5){logger[_0x2958('0x16')](_0x2958('0x21'),_0x28c1f5);logger[_0x2958('0xf')](_0x2958('0x21'),_0x28c1f5,JSON[_0x2958('0x12')](_0x4477b5));_0x52bd32(_0x4477b5);})[_0x2958('0x20')](function(_0x58f9b4){logger[_0x2958('0x13')]('CreateVoiceRecording',_0x58f9b4[_0x2958('0x15')],_0x28c1f5);_0x2bd1ac(_0x43cf73['error'](0x1f4,_0x58f9b4[_0x2958('0x15')]));});});};
\ No newline at end of file
index fbada1b..11b91e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x677d=['../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','put','destroy','exports','util','path','connect-timeout','Router'];(function(_0x55cd6a,_0x335c4b){var _0x407d6f=function(_0xd59d15){while(--_0xd59d15){_0x55cd6a['push'](_0x55cd6a['shift']());}};_0x407d6f(++_0x335c4b);}(_0x677d,0x10c));var _0xd677=function(_0x23bcd4,_0xd3deb0){_0x23bcd4=_0x23bcd4-0x0;var _0x4cb792=_0x677d[_0x23bcd4];return _0x4cb792;};'use strict';var multer=require('multer');var util=require(_0xd677('0x0'));var path=require(_0xd677('0x1'));var timeout=require(_0xd677('0x2'));var express=require('express');var router=express[_0xd677('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd677('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd677('0x5'));var controller=require(_0xd677('0x6'));router[_0xd677('0x7')]('/',auth[_0xd677('0x8')](),controller['index']);router[_0xd677('0x7')](_0xd677('0x9'),auth['isAuthenticated'](),controller[_0xd677('0xa')]);router[_0xd677('0x7')](_0xd677('0xb'),auth[_0xd677('0x8')](),controller[_0xd677('0xc')]);router['post']('/',auth[_0xd677('0x8')](),controller['create']);router[_0xd677('0xd')]('/:id',auth[_0xd677('0x8')](),controller['update']);router['delete']('/:id',auth[_0xd677('0x8')](),controller[_0xd677('0xe')]);module[_0xd677('0xf')]=router;
\ No newline at end of file
+var _0x536c=['show','create','put','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','/:id'];(function(_0x4ba8fc,_0x38da41){var _0x29cfd2=function(_0x52fc9b){while(--_0x52fc9b){_0x4ba8fc['push'](_0x4ba8fc['shift']());}};_0x29cfd2(++_0x38da41);}(_0x536c,0x15b));var _0xc536=function(_0x32c78e,_0x32cc40){_0x32c78e=_0x32c78e-0x0;var _0x5dc750=_0x536c[_0x32c78e];return _0x5dc750;};'use strict';var multer=require(_0xc536('0x0'));var util=require(_0xc536('0x1'));var path=require(_0xc536('0x2'));var timeout=require(_0xc536('0x3'));var express=require(_0xc536('0x4'));var router=express[_0xc536('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc536('0x6'));var interaction=require(_0xc536('0x7'));var config=require(_0xc536('0x8'));var controller=require('./voiceTransferReport.controller');router['get']('/',auth[_0xc536('0x9')](),controller['index']);router[_0xc536('0xa')](_0xc536('0xb'),auth['isAuthenticated'](),controller[_0xc536('0xc')]);router[_0xc536('0xa')](_0xc536('0xd'),auth[_0xc536('0x9')](),controller[_0xc536('0xe')]);router['post']('/',auth[_0xc536('0x9')](),controller[_0xc536('0xf')]);router[_0xc536('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xc536('0x11')]);router['delete']('/:id',auth[_0xc536('0x9')](),controller['destroy']);module[_0xc536('0x12')]=router;
\ No newline at end of file
index feea8a7..82ca5fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e18=['moment','exports','ENUM','blind','attended','STRING','Yes','sequelize'];(function(_0x234e8a,_0x9b5f28){var _0x32385c=function(_0x1ea8fa){while(--_0x1ea8fa){_0x234e8a['push'](_0x234e8a['shift']());}};_0x32385c(++_0x9b5f28);}(_0x6e18,0x11f));var _0x86e1=function(_0x46ae5f,_0x598b7d){_0x46ae5f=_0x46ae5f-0x0;var _0x145e4d=_0x6e18[_0x46ae5f];return _0x145e4d;};'use strict';var Sequelize=require(_0x86e1('0x0'));var moment=require(_0x86e1('0x1'));module[_0x86e1('0x2')]={'type':{'type':Sequelize[_0x86e1('0x3')](_0x86e1('0x4'),_0x86e1('0x5'))},'result':{'type':Sequelize[_0x86e1('0x6')]},'transfererchannel':{'type':Sequelize[_0x86e1('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x86e1('0x6')]},'transferercalleridname':{'type':Sequelize[_0x86e1('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0x86e1('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0x86e1('0x6')]},'transfereraccountcode':{'type':Sequelize[_0x86e1('0x6')]},'transferercontext':{'type':Sequelize[_0x86e1('0x6')]},'transfererexten':{'type':Sequelize[_0x86e1('0x6')]},'transfererlinkedid':{'type':Sequelize[_0x86e1('0x6')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x86e1('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x86e1('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0x86e1('0x6')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x86e1('0x6')]},'transfereelinkedid':{'type':Sequelize[_0x86e1('0x6')]},'isexternal':{'type':Sequelize[_0x86e1('0x3')](_0x86e1('0x7'),'No')},'context':{'type':Sequelize[_0x86e1('0x6')]},'extension':{'type':Sequelize[_0x86e1('0x6')]}};
\ No newline at end of file
+var _0x45cf=['STRING','sequelize','moment','exports','ENUM','blind'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x45cf,0x1c3));var _0xf45c=function(_0x4066c2,_0xad48e8){_0x4066c2=_0x4066c2-0x0;var _0x3870a0=_0x45cf[_0x4066c2];return _0x3870a0;};'use strict';var Sequelize=require(_0xf45c('0x0'));var moment=require(_0xf45c('0x1'));module[_0xf45c('0x2')]={'type':{'type':Sequelize[_0xf45c('0x3')](_0xf45c('0x4'),'attended')},'result':{'type':Sequelize[_0xf45c('0x5')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0xf45c('0x5')]},'transferercalleridname':{'type':Sequelize[_0xf45c('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0xf45c('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xf45c('0x5')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0xf45c('0x5')]},'transfererlinkedid':{'type':Sequelize[_0xf45c('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xf45c('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0xf45c('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0xf45c('0x5')]},'transfereecontext':{'type':Sequelize[_0xf45c('0x5')]},'transfereeexten':{'type':Sequelize[_0xf45c('0x5')]},'transfereelinkedid':{'type':Sequelize[_0xf45c('0x5')]},'isexternal':{'type':Sequelize[_0xf45c('0x3')]('Yes','No')},'context':{'type':Sequelize[_0xf45c('0x5')]},'extension':{'type':Sequelize[_0xf45c('0x5')]}};
\ No newline at end of file
index b438a3d..8b0da20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce1b=['limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','VoiceTransferReport','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','params','includeAll','find','create','body','eml-format','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset'];(function(_0x38ca2d,_0x32240f){var _0x3d8356=function(_0x14abb9){while(--_0x14abb9){_0x38ca2d['push'](_0x38ca2d['shift']());}};_0x3d8356(++_0x32240f);}(_0xce1b,0x6b));var _0xbce1=function(_0x5ac1ed,_0x11f3b8){_0x5ac1ed=_0x5ac1ed-0x0;var _0x1bb1c1=_0xce1b[_0x5ac1ed];return _0x1bb1c1;};'use strict';var emlformat=require(_0xbce1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbce1('0x1'));var moment=require(_0xbce1('0x2'));var BPromise=require(_0xbce1('0x3'));var Mustache=require(_0xbce1('0x4'));var util=require('util');var path=require(_0xbce1('0x5'));var sox=require('sox');var csv=require(_0xbce1('0x6'));var ejs=require(_0xbce1('0x7'));var fs=require('fs');var fs_extra=require(_0xbce1('0x8'));var _=require('lodash');var squel=require(_0xbce1('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbce1('0xa'));var toCsv=require(_0xbce1('0x6'));var querystring=require(_0xbce1('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xbce1('0xc'));var qs=require(_0xbce1('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbce1('0xe'))('api');var utils=require(_0xbce1('0xf'));var config=require(_0xbce1('0x10'));var licenseUtil=require(_0xbce1('0x11'));var db=require(_0xbce1('0x12'))['db'];function respondWithStatusCode(_0x13798a,_0x4af9de){_0x4af9de=_0x4af9de||0xcc;return function(_0x3ae99e){if(_0x3ae99e){return _0x13798a[_0xbce1('0x13')](_0x4af9de);}return _0x13798a[_0xbce1('0x14')](_0x4af9de)[_0xbce1('0x15')]();};}function respondWithResult(_0x10c709,_0x205b7e){_0x205b7e=_0x205b7e||0xc8;return function(_0x3b338e){if(_0x3b338e){return _0x10c709[_0xbce1('0x14')](_0x205b7e)[_0xbce1('0x16')](_0x3b338e);}};}function respondWithFilteredResult(_0x13e5c4,_0x40fa4d){return function(_0x3b8153){if(_0x3b8153){var _0x130910=typeof _0x40fa4d['offset']==='undefined'&&typeof _0x40fa4d['limit']==='undefined';var _0x37d417=_0x3b8153[_0xbce1('0x17')];var _0x315edf=_0x130910?0x0:_0x40fa4d[_0xbce1('0x18')];var _0x2cbe86=_0x130910?_0x3b8153[_0xbce1('0x17')]:_0x40fa4d[_0xbce1('0x18')]+_0x40fa4d[_0xbce1('0x19')];var _0x32ea86;if(_0x2cbe86>=_0x37d417){_0x2cbe86=_0x37d417;_0x32ea86=0xc8;}else{_0x32ea86=0xce;}_0x13e5c4[_0xbce1('0x14')](_0x32ea86);return _0x13e5c4[_0xbce1('0x1a')](_0xbce1('0x1b'),_0x315edf+'-'+_0x2cbe86+'/'+_0x37d417)['json'](_0x3b8153);}return null;};}function patchUpdates(_0x44c630){return function(_0x2c6f33){try{jsonpatch[_0xbce1('0x1c')](_0x2c6f33,_0x44c630,!![]);}catch(_0x563af6){return BPromise[_0xbce1('0x1d')](_0x563af6);}return _0x2c6f33[_0xbce1('0x1e')]();};}function saveUpdates(_0x209518,_0x23e93a){return function(_0x2f69cd){if(_0x2f69cd){return _0x2f69cd[_0xbce1('0x1f')](_0x209518)[_0xbce1('0x20')](function(_0x5ad076){return _0x5ad076;});}return null;};}function removeEntity(_0x2cac11,_0x5da49c){return function(_0x39d10b){if(_0x39d10b){return _0x39d10b[_0xbce1('0x21')]()[_0xbce1('0x20')](function(){_0x2cac11[_0xbce1('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bea2b,_0xdd8c76){return function(_0xfd6a20){if(!_0xfd6a20){_0x2bea2b[_0xbce1('0x13')](0x194);}return _0xfd6a20;};}function handleError(_0x31edc9,_0x34ecf7){_0x34ecf7=_0x34ecf7||0x1f4;return function(_0x32824d){logger[_0xbce1('0x22')](_0x32824d['stack']);if(_0x32824d[_0xbce1('0x23')]){delete _0x32824d[_0xbce1('0x23')];}_0x31edc9[_0xbce1('0x14')](_0x34ecf7)['send'](_0x32824d);};}exports[_0xbce1('0x24')]=function(_0x2e05d4,_0xfad389){var _0xb81694={},_0xefe45f={},_0x580f7c={'count':0x0,'rows':[]};var _0xb5322a=_[_0xbce1('0x25')](db[_0xbce1('0x26')][_0xbce1('0x27')],function(_0x4c4ceb){return{'name':_0x4c4ceb['fieldName'],'type':_0x4c4ceb[_0xbce1('0x28')][_0xbce1('0x29')]};});_0xefe45f[_0xbce1('0x2a')]=_['map'](_0xb5322a,_0xbce1('0x23'));_0xefe45f['query']=_[_0xbce1('0x2b')](_0x2e05d4[_0xbce1('0x2c')]);_0xefe45f[_0xbce1('0x2d')]=_[_0xbce1('0x2e')](_0xefe45f['model'],_0xefe45f[_0xbce1('0x2c')]);_0xb81694[_0xbce1('0x2f')]=_[_0xbce1('0x2e')](_0xefe45f[_0xbce1('0x2a')],qs[_0xbce1('0x30')](_0x2e05d4[_0xbce1('0x2c')]['fields']));_0xb81694[_0xbce1('0x2f')]=_0xb81694[_0xbce1('0x2f')][_0xbce1('0x31')]?_0xb81694['attributes']:_0xefe45f['model'];if(!_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x32')]('nolimit')){_0xb81694[_0xbce1('0x19')]=qs[_0xbce1('0x19')](_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x19')]);_0xb81694[_0xbce1('0x18')]=qs[_0xbce1('0x18')](_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x18')]);}_0xb81694['order']=qs[_0xbce1('0x33')](_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x33')]);_0xb81694[_0xbce1('0x34')]=qs[_0xbce1('0x2d')](_[_0xbce1('0x35')](_0x2e05d4[_0xbce1('0x2c')],_0xefe45f[_0xbce1('0x2d')]),_0xb5322a);if(_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x36')]){_0xb81694[_0xbce1('0x34')]=_[_0xbce1('0x37')](_0xb81694[_0xbce1('0x34')],{'$or':_[_0xbce1('0x25')](_0xb5322a,function(_0x488934){if(_0x488934[_0xbce1('0x28')]!==_0xbce1('0x38')){var _0x952c05={};_0x952c05[_0x488934[_0xbce1('0x23')]]={'$like':'%'+_0x2e05d4['query'][_0xbce1('0x36')]+'%'};return _0x952c05;}})});}_0xb81694=_['merge']({},_0xb81694,_0x2e05d4[_0xbce1('0x39')]);var _0x512d02={'where':_0xb81694[_0xbce1('0x34')]};return db[_0xbce1('0x26')][_0xbce1('0x17')](_0x512d02)[_0xbce1('0x20')](function(_0x374663){_0x580f7c[_0xbce1('0x17')]=_0x374663;if(_0x2e05d4[_0xbce1('0x2c')]['includeAll']){_0xb81694[_0xbce1('0x3a')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0xb81694);})[_0xbce1('0x20')](function(_0x2c946f){_0x580f7c[_0xbce1('0x3b')]=_0x2c946f;return _0x580f7c;})[_0xbce1('0x20')](respondWithFilteredResult(_0xfad389,_0xb81694))[_0xbce1('0x3c')](handleError(_0xfad389,null));};exports['show']=function(_0x44db03,_0x17e360){var _0x385a5f={'raw':!![],'where':{'id':_0x44db03[_0xbce1('0x3d')]['id']}},_0x1f6dfe={};_0x1f6dfe[_0xbce1('0x2a')]=_['keys'](db[_0xbce1('0x26')]['rawAttributes']);_0x1f6dfe[_0xbce1('0x2c')]=_[_0xbce1('0x2b')](_0x44db03[_0xbce1('0x2c')]);_0x1f6dfe[_0xbce1('0x2d')]=_[_0xbce1('0x2e')](_0x1f6dfe['model'],_0x1f6dfe[_0xbce1('0x2c')]);_0x385a5f['attributes']=_[_0xbce1('0x2e')](_0x1f6dfe[_0xbce1('0x2a')],qs['fields'](_0x44db03['query'][_0xbce1('0x30')]));_0x385a5f[_0xbce1('0x2f')]=_0x385a5f[_0xbce1('0x2f')][_0xbce1('0x31')]?_0x385a5f['attributes']:_0x1f6dfe[_0xbce1('0x2a')];if(_0x44db03[_0xbce1('0x2c')][_0xbce1('0x3e')]){_0x385a5f[_0xbce1('0x3a')]=[{'all':!![]}];}_0x385a5f=_[_0xbce1('0x37')]({},_0x385a5f,_0x44db03[_0xbce1('0x39')]);return db[_0xbce1('0x26')][_0xbce1('0x3f')](_0x385a5f)[_0xbce1('0x20')](handleEntityNotFound(_0x17e360,null))['then'](respondWithResult(_0x17e360,null))[_0xbce1('0x3c')](handleError(_0x17e360,null));};exports['create']=function(_0x5b4b29,_0x58baa7){return db['VoiceTransferReport'][_0xbce1('0x40')](_0x5b4b29[_0xbce1('0x41')],{})[_0xbce1('0x20')](respondWithResult(_0x58baa7,0xc9))[_0xbce1('0x3c')](handleError(_0x58baa7,null));};exports[_0xbce1('0x1f')]=function(_0x32c16c,_0x2419ed){if(_0x32c16c[_0xbce1('0x41')]['id']){delete _0x32c16c[_0xbce1('0x41')]['id'];}return db[_0xbce1('0x26')][_0xbce1('0x3f')]({'where':{'id':_0x32c16c[_0xbce1('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2419ed,null))[_0xbce1('0x20')](saveUpdates(_0x32c16c['body'],null))['then'](respondWithResult(_0x2419ed,null))[_0xbce1('0x3c')](handleError(_0x2419ed,null));};exports[_0xbce1('0x21')]=function(_0x186b22,_0xe09fa9){return db[_0xbce1('0x26')][_0xbce1('0x3f')]({'where':{'id':_0x186b22[_0xbce1('0x3d')]['id']}})[_0xbce1('0x20')](handleEntityNotFound(_0xe09fa9,null))[_0xbce1('0x20')](removeEntity(_0xe09fa9,null))[_0xbce1('0x3c')](handleError(_0xe09fa9,null));};exports['describe']=function(_0x510ab7,_0x497845){return db[_0xbce1('0x26')]['describe']()[_0xbce1('0x20')](respondWithResult(_0x497845,null))['catch'](handleError(_0x497845,null));};
\ No newline at end of file
+var _0x28de=['body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','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','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','send','map','VoiceTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','create'];(function(_0x2333df,_0x1be219){var _0x12013c=function(_0x4802f5){while(--_0x4802f5){_0x2333df['push'](_0x2333df['shift']());}};_0x12013c(++_0x1be219);}(_0x28de,0x180));var _0xe28d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x28de[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xe28d('0x0'));var rimraf=require(_0xe28d('0x1'));var zipdir=require(_0xe28d('0x2'));var jsonpatch=require(_0xe28d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe28d('0x4'));var Mustache=require(_0xe28d('0x5'));var util=require('util');var path=require(_0xe28d('0x6'));var sox=require(_0xe28d('0x7'));var csv=require(_0xe28d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe28d('0x9'));var _=require(_0xe28d('0xa'));var squel=require(_0xe28d('0xb'));var crypto=require(_0xe28d('0xc'));var jsforce=require(_0xe28d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe28d('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe28d('0xe'));var authService=require(_0xe28d('0xf'));var qs=require(_0xe28d('0x10'));var as=require(_0xe28d('0x11'));var hardwareService=require(_0xe28d('0x12'));var logger=require(_0xe28d('0x13'))(_0xe28d('0x14'));var utils=require('../../config/utils');var config=require(_0xe28d('0x15'));var licenseUtil=require(_0xe28d('0x16'));var db=require(_0xe28d('0x17'))['db'];function respondWithStatusCode(_0x593cb2,_0x4e688b){_0x4e688b=_0x4e688b||0xcc;return function(_0x4abaed){if(_0x4abaed){return _0x593cb2[_0xe28d('0x18')](_0x4e688b);}return _0x593cb2[_0xe28d('0x19')](_0x4e688b)[_0xe28d('0x1a')]();};}function respondWithResult(_0x3afc0c,_0x30653c){_0x30653c=_0x30653c||0xc8;return function(_0x4b97d0){if(_0x4b97d0){return _0x3afc0c[_0xe28d('0x19')](_0x30653c)['json'](_0x4b97d0);}};}function respondWithFilteredResult(_0x7fbda4,_0x4c3fa3){return function(_0x8dc21a){if(_0x8dc21a){var _0x2079e4=typeof _0x4c3fa3[_0xe28d('0x1b')]===_0xe28d('0x1c')&&typeof _0x4c3fa3[_0xe28d('0x1d')]===_0xe28d('0x1c');var _0x491043=_0x8dc21a[_0xe28d('0x1e')];var _0x561ac0=_0x2079e4?0x0:_0x4c3fa3[_0xe28d('0x1b')];var _0x394fd8=_0x2079e4?_0x8dc21a[_0xe28d('0x1e')]:_0x4c3fa3[_0xe28d('0x1b')]+_0x4c3fa3[_0xe28d('0x1d')];var _0x374f07;if(_0x394fd8>=_0x491043){_0x394fd8=_0x491043;_0x374f07=0xc8;}else{_0x374f07=0xce;}_0x7fbda4[_0xe28d('0x19')](_0x374f07);return _0x7fbda4[_0xe28d('0x1f')](_0xe28d('0x20'),_0x561ac0+'-'+_0x394fd8+'/'+_0x491043)[_0xe28d('0x21')](_0x8dc21a);}return null;};}function patchUpdates(_0x33bd75){return function(_0x3202ca){try{jsonpatch[_0xe28d('0x22')](_0x3202ca,_0x33bd75,!![]);}catch(_0x58b0a2){return BPromise[_0xe28d('0x23')](_0x58b0a2);}return _0x3202ca[_0xe28d('0x24')]();};}function saveUpdates(_0x516e1c,_0x13ca0c){return function(_0x5b5e10){if(_0x5b5e10){return _0x5b5e10[_0xe28d('0x25')](_0x516e1c)['then'](function(_0x10814e){return _0x10814e;});}return null;};}function removeEntity(_0x24663c,_0xf8620f){return function(_0x4c64c7){if(_0x4c64c7){return _0x4c64c7[_0xe28d('0x26')]()[_0xe28d('0x27')](function(){_0x24663c['status'](0xcc)[_0xe28d('0x1a')]();});}};}function handleEntityNotFound(_0x172582,_0xeb69ff){return function(_0x5a8408){if(!_0x5a8408){_0x172582[_0xe28d('0x18')](0x194);}return _0x5a8408;};}function handleError(_0x1851c2,_0x16baa4){_0x16baa4=_0x16baa4||0x1f4;return function(_0x36bda8){logger[_0xe28d('0x28')](_0x36bda8[_0xe28d('0x29')]);if(_0x36bda8[_0xe28d('0x2a')]){delete _0x36bda8[_0xe28d('0x2a')];}_0x1851c2[_0xe28d('0x19')](_0x16baa4)[_0xe28d('0x2b')](_0x36bda8);};}exports['index']=function(_0x195ee8,_0x4e3377){var _0x5a4315={},_0x1b385f={},_0x44dfe7={'count':0x0,'rows':[]};var _0x2687f2=_[_0xe28d('0x2c')](db[_0xe28d('0x2d')][_0xe28d('0x2e')],function(_0x991bf5){return{'name':_0x991bf5['fieldName'],'type':_0x991bf5[_0xe28d('0x2f')][_0xe28d('0x30')]};});_0x1b385f[_0xe28d('0x31')]=_[_0xe28d('0x2c')](_0x2687f2,_0xe28d('0x2a'));_0x1b385f[_0xe28d('0x32')]=_[_0xe28d('0x33')](_0x195ee8[_0xe28d('0x32')]);_0x1b385f[_0xe28d('0x34')]=_[_0xe28d('0x35')](_0x1b385f[_0xe28d('0x31')],_0x1b385f[_0xe28d('0x32')]);_0x5a4315[_0xe28d('0x36')]=_[_0xe28d('0x35')](_0x1b385f[_0xe28d('0x31')],qs[_0xe28d('0x37')](_0x195ee8[_0xe28d('0x32')]['fields']));_0x5a4315['attributes']=_0x5a4315[_0xe28d('0x36')][_0xe28d('0x38')]?_0x5a4315[_0xe28d('0x36')]:_0x1b385f[_0xe28d('0x31')];if(!_0x195ee8[_0xe28d('0x32')][_0xe28d('0x39')](_0xe28d('0x3a'))){_0x5a4315[_0xe28d('0x1d')]=qs[_0xe28d('0x1d')](_0x195ee8['query']['limit']);_0x5a4315[_0xe28d('0x1b')]=qs['offset'](_0x195ee8[_0xe28d('0x32')][_0xe28d('0x1b')]);}_0x5a4315[_0xe28d('0x3b')]=qs[_0xe28d('0x3c')](_0x195ee8[_0xe28d('0x32')][_0xe28d('0x3c')]);_0x5a4315[_0xe28d('0x3d')]=qs[_0xe28d('0x34')](_['pick'](_0x195ee8[_0xe28d('0x32')],_0x1b385f[_0xe28d('0x34')]),_0x2687f2);if(_0x195ee8['query']['filter']){_0x5a4315[_0xe28d('0x3d')]=_[_0xe28d('0x3e')](_0x5a4315[_0xe28d('0x3d')],{'$or':_[_0xe28d('0x2c')](_0x2687f2,function(_0x508469){if(_0x508469[_0xe28d('0x2f')]!==_0xe28d('0x3f')){var _0x105d81={};_0x105d81[_0x508469[_0xe28d('0x2a')]]={'$like':'%'+_0x195ee8['query'][_0xe28d('0x40')]+'%'};return _0x105d81;}})});}_0x5a4315=_[_0xe28d('0x3e')]({},_0x5a4315,_0x195ee8[_0xe28d('0x41')]);var _0x554ca2={'where':_0x5a4315[_0xe28d('0x3d')]};return db[_0xe28d('0x2d')][_0xe28d('0x1e')](_0x554ca2)['then'](function(_0x19e8c3){_0x44dfe7['count']=_0x19e8c3;if(_0x195ee8[_0xe28d('0x32')]['includeAll']){_0x5a4315[_0xe28d('0x42')]=[{'all':!![]}];}return db[_0xe28d('0x2d')][_0xe28d('0x43')](_0x5a4315);})[_0xe28d('0x27')](function(_0x200497){_0x44dfe7[_0xe28d('0x44')]=_0x200497;return _0x44dfe7;})[_0xe28d('0x27')](respondWithFilteredResult(_0x4e3377,_0x5a4315))[_0xe28d('0x45')](handleError(_0x4e3377,null));};exports[_0xe28d('0x46')]=function(_0x2a1545,_0x47cb5f){var _0x5ed63c={'raw':!![],'where':{'id':_0x2a1545['params']['id']}},_0x2a3182={};_0x2a3182[_0xe28d('0x31')]=_['keys'](db[_0xe28d('0x2d')][_0xe28d('0x2e')]);_0x2a3182['query']=_[_0xe28d('0x33')](_0x2a1545['query']);_0x2a3182[_0xe28d('0x34')]=_[_0xe28d('0x35')](_0x2a3182[_0xe28d('0x31')],_0x2a3182[_0xe28d('0x32')]);_0x5ed63c[_0xe28d('0x36')]=_[_0xe28d('0x35')](_0x2a3182['model'],qs[_0xe28d('0x37')](_0x2a1545[_0xe28d('0x32')][_0xe28d('0x37')]));_0x5ed63c[_0xe28d('0x36')]=_0x5ed63c['attributes'][_0xe28d('0x38')]?_0x5ed63c[_0xe28d('0x36')]:_0x2a3182['model'];if(_0x2a1545[_0xe28d('0x32')]['includeAll']){_0x5ed63c[_0xe28d('0x42')]=[{'all':!![]}];}_0x5ed63c=_[_0xe28d('0x3e')]({},_0x5ed63c,_0x2a1545[_0xe28d('0x41')]);return db['VoiceTransferReport']['find'](_0x5ed63c)[_0xe28d('0x27')](handleEntityNotFound(_0x47cb5f,null))[_0xe28d('0x27')](respondWithResult(_0x47cb5f,null))[_0xe28d('0x45')](handleError(_0x47cb5f,null));};exports[_0xe28d('0x47')]=function(_0x349b4d,_0x4ed8e7){return db[_0xe28d('0x2d')][_0xe28d('0x47')](_0x349b4d[_0xe28d('0x48')],{})[_0xe28d('0x27')](respondWithResult(_0x4ed8e7,0xc9))[_0xe28d('0x45')](handleError(_0x4ed8e7,null));};exports['update']=function(_0x177106,_0x5f38b8){if(_0x177106[_0xe28d('0x48')]['id']){delete _0x177106[_0xe28d('0x48')]['id'];}return db[_0xe28d('0x2d')][_0xe28d('0x49')]({'where':{'id':_0x177106[_0xe28d('0x4a')]['id']}})[_0xe28d('0x27')](handleEntityNotFound(_0x5f38b8,null))[_0xe28d('0x27')](saveUpdates(_0x177106['body'],null))[_0xe28d('0x27')](respondWithResult(_0x5f38b8,null))[_0xe28d('0x45')](handleError(_0x5f38b8,null));};exports[_0xe28d('0x26')]=function(_0x3c883d,_0x588bd9){return db['VoiceTransferReport'][_0xe28d('0x49')]({'where':{'id':_0x3c883d[_0xe28d('0x4a')]['id']}})[_0xe28d('0x27')](handleEntityNotFound(_0x588bd9,null))[_0xe28d('0x27')](removeEntity(_0x588bd9,null))[_0xe28d('0x45')](handleError(_0x588bd9,null));};exports[_0xe28d('0x4b')]=function(_0x1e5778,_0x2d3ea5){return db[_0xe28d('0x2d')][_0xe28d('0x4b')]()[_0xe28d('0x27')](respondWithResult(_0x2d3ea5,null))[_0xe28d('0x45')](handleError(_0x2d3ea5,null));};
\ No newline at end of file
index f94777f..650774a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9531=['moment','bluebird','request-promise','rimraf','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','../../config/logger'];(function(_0x1e39d4,_0x56422c){var _0x2ab307=function(_0x41b78c){while(--_0x41b78c){_0x1e39d4['push'](_0x1e39d4['shift']());}};_0x2ab307(++_0x56422c);}(_0x9531,0x15d));var _0x1953=function(_0x27cd93,_0x3a5e81){_0x27cd93=_0x27cd93-0x0;var _0x4bb34c=_0x9531[_0x27cd93];return _0x4bb34c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1953('0x0'))('api');var moment=require(_0x1953('0x1'));var BPromise=require(_0x1953('0x2'));var rp=require(_0x1953('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1953('0x4'));var config=require('../../config/environment');var attributes=require(_0x1953('0x5'));module[_0x1953('0x6')]=function(_0x1d8867,_0x31b66e){return _0x1d8867[_0x1953('0x7')](_0x1953('0x8'),attributes,{'tableName':_0x1953('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63b2=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./voiceTransferReport.attributes','VoiceTransferReport','report_call_transfer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x63b2,0xdc));var _0x263b=function(_0x26d4d1,_0x239884){_0x26d4d1=_0x26d4d1-0x0;var _0x45432c=_0x63b2[_0x26d4d1];return _0x45432c;};'use strict';var _=require(_0x263b('0x0'));var util=require(_0x263b('0x1'));var logger=require(_0x263b('0x2'))('api');var moment=require(_0x263b('0x3'));var BPromise=require(_0x263b('0x4'));var rp=require(_0x263b('0x5'));var fs=require('fs');var path=require(_0x263b('0x6'));var rimraf=require('rimraf');var config=require(_0x263b('0x7'));var attributes=require(_0x263b('0x8'));module['exports']=function(_0x27c851,_0x3501f3){return _0x27c851['define'](_0x263b('0x9'),attributes,{'tableName':_0x263b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c533cf5..ed804f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb936=['client','http','request','then','info','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceTransferReport,\x20%s,\x20%s','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb936,0xa5));var _0x6b93=function(_0x476dd2,_0x485c07){_0x476dd2=_0x476dd2-0x0;var _0x1b5f46=_0xb936[_0x476dd2];return _0x1b5f46;};'use strict';var _=require('lodash');var util=require(_0x6b93('0x0'));var moment=require(_0x6b93('0x1'));var BPromise=require(_0x6b93('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6b93('0x3'));var db=require(_0x6b93('0x4'))['db'];var utils=require(_0x6b93('0x5'));var logger=require(_0x6b93('0x6'))('rpc');var config=require(_0x6b93('0x7'));var jayson=require(_0x6b93('0x8'));var client=jayson[_0x6b93('0x9')][_0x6b93('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xdada9b,_0x22bc74,_0x2e9249){return new BPromise(function(_0x42bbcb,_0xa055a){return client[_0x6b93('0xb')](_0xdada9b,_0x2e9249)[_0x6b93('0xc')](function(_0x9b714e){logger[_0x6b93('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x22bc74,_0x6b93('0xe'));logger[_0x6b93('0xf')](_0x6b93('0x10'),_0x22bc74,_0x6b93('0xe'),JSON[_0x6b93('0x11')](_0x9b714e));if(_0x9b714e[_0x6b93('0x12')]){if(_0x9b714e[_0x6b93('0x12')][_0x6b93('0x13')]===0x1f4){logger[_0x6b93('0x12')](_0x6b93('0x14'),_0x22bc74,_0x9b714e[_0x6b93('0x12')][_0x6b93('0x15')]);return _0xa055a(_0x9b714e[_0x6b93('0x12')]['message']);}logger[_0x6b93('0x12')](_0x6b93('0x14'),_0x22bc74,_0x9b714e[_0x6b93('0x12')]['message']);return _0x42bbcb(_0x9b714e[_0x6b93('0x12')][_0x6b93('0x15')]);}else{logger[_0x6b93('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x22bc74,_0x6b93('0xe'));_0x42bbcb(_0x9b714e[_0x6b93('0x16')][_0x6b93('0x15')]);}})[_0x6b93('0x17')](function(_0x3d1bfc){logger[_0x6b93('0x12')](_0x6b93('0x14'),_0x22bc74,_0x3d1bfc);_0xa055a(_0x3d1bfc);});});}exports[_0x6b93('0x18')]=function(_0x293728){var _0x1f74a4=this;return new Promise(function(_0x4b5d59,_0x1599bc){return db[_0x6b93('0x19')][_0x6b93('0x1a')](_0x293728['body'],{'raw':_0x293728[_0x6b93('0x1b')]?_0x293728[_0x6b93('0x1b')][_0x6b93('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x51eb2f){logger[_0x6b93('0xd')](_0x6b93('0x18'),_0x293728);logger[_0x6b93('0xf')](_0x6b93('0x18'),_0x293728,JSON[_0x6b93('0x11')](_0x51eb2f));_0x4b5d59(_0x51eb2f);})['catch'](function(_0x24688f){logger[_0x6b93('0x12')](_0x6b93('0x18'),_0x24688f[_0x6b93('0x15')],_0x293728);_0x1599bc(_0x1f74a4[_0x6b93('0x12')](0x1f4,_0x24688f['message']));});});};
\ No newline at end of file
+var _0xf73a=['CreateVoiceTransferReport','VoiceTransferReport','body','options','raw','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','code','error','VoiceTransferReport,\x20%s,\x20%s','message','result','catch'];(function(_0x158d07,_0x4a59e3){var _0x40ef6c=function(_0x2b32ca){while(--_0x2b32ca){_0x158d07['push'](_0x158d07['shift']());}};_0x40ef6c(++_0x4a59e3);}(_0xf73a,0xc2));var _0xaf73=function(_0x1ef8a2,_0xb43031){_0x1ef8a2=_0x1ef8a2-0x0;var _0x227937=_0xf73a[_0x1ef8a2];return _0x227937;};'use strict';var _=require(_0xaf73('0x0'));var util=require('util');var moment=require(_0xaf73('0x1'));var BPromise=require(_0xaf73('0x2'));var rs=require(_0xaf73('0x3'));var fs=require('fs');var Redis=require(_0xaf73('0x4'));var db=require(_0xaf73('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaf73('0x6'))('rpc');var config=require(_0xaf73('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xaf73('0x8')][_0xaf73('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xacdbc6,_0x10665c,_0x1c5611){return new BPromise(function(_0x550375,_0x233687){return client[_0xaf73('0xa')](_0xacdbc6,_0x1c5611)[_0xaf73('0xb')](function(_0x314dcf){logger[_0xaf73('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x10665c,_0xaf73('0xd'));logger[_0xaf73('0xe')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x10665c,_0xaf73('0xd'),JSON[_0xaf73('0xf')](_0x314dcf));if(_0x314dcf['error']){if(_0x314dcf['error'][_0xaf73('0x10')]===0x1f4){logger[_0xaf73('0x11')](_0xaf73('0x12'),_0x10665c,_0x314dcf['error'][_0xaf73('0x13')]);return _0x233687(_0x314dcf['error'][_0xaf73('0x13')]);}logger[_0xaf73('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x10665c,_0x314dcf['error'][_0xaf73('0x13')]);return _0x550375(_0x314dcf[_0xaf73('0x11')][_0xaf73('0x13')]);}else{logger[_0xaf73('0xc')](_0xaf73('0x12'),_0x10665c,_0xaf73('0xd'));_0x550375(_0x314dcf[_0xaf73('0x14')]['message']);}})[_0xaf73('0x15')](function(_0x532748){logger[_0xaf73('0x11')](_0xaf73('0x12'),_0x10665c,_0x532748);_0x233687(_0x532748);});});}exports[_0xaf73('0x16')]=function(_0xb55a57){var _0x56cd45=this;return new Promise(function(_0x498298,_0x424a48){return db[_0xaf73('0x17')]['create'](_0xb55a57[_0xaf73('0x18')],{'raw':_0xb55a57[_0xaf73('0x19')]?_0xb55a57[_0xaf73('0x19')][_0xaf73('0x1a')]===undefined?!![]:![]:!![]})[_0xaf73('0xb')](function(_0x4f524b){logger[_0xaf73('0xc')](_0xaf73('0x16'),_0xb55a57);logger['debug'](_0xaf73('0x16'),_0xb55a57,JSON[_0xaf73('0xf')](_0x4f524b));_0x498298(_0x4f524b);})[_0xaf73('0x15')](function(_0x52a00e){logger[_0xaf73('0x11')](_0xaf73('0x16'),_0x52a00e['message'],_0xb55a57);_0x424a48(_0x56cd45[_0xaf73('0x11')](0x1f4,_0x52a00e[_0xaf73('0x13')]));});});};
\ No newline at end of file
index 000a1a0..3a1dcc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b02=['Router','../../components/auth/service','./webbar.controller','isAuthenticated','originate','post','/hangup','isWebrtcLicence','/answer','/hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express'];(function(_0x10ad9a,_0x31ed2c){var _0x2f7257=function(_0x1e9e10){while(--_0x1e9e10){_0x10ad9a['push'](_0x10ad9a['shift']());}};_0x2f7257(++_0x31ed2c);}(_0x5b02,0xe9));var _0x25b0=function(_0xdbd224,_0x3ed10d){_0xdbd224=_0xdbd224-0x0;var _0x43669c=_0x5b02[_0xdbd224];return _0x43669c;};'use strict';var express=require(_0x25b0('0x0'));var router=express[_0x25b0('0x1')]();var auth=require(_0x25b0('0x2'));var controller=require(_0x25b0('0x3'));router['post']('/originate',auth[_0x25b0('0x4')](),auth['isWebrtcLicence'](),controller[_0x25b0('0x5')]);router[_0x25b0('0x6')](_0x25b0('0x7'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hangup']);router[_0x25b0('0x6')](_0x25b0('0x9'),auth['isAuthenticated'](),auth[_0x25b0('0x8')](),controller['answer']);router['post'](_0x25b0('0xa'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hold']);router[_0x25b0('0x6')](_0x25b0('0xb'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xc')]);router[_0x25b0('0x6')](_0x25b0('0xd'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xe')]);router[_0x25b0('0x6')](_0x25b0('0xf'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0x10')]);module[_0x25b0('0x11')]=router;
\ No newline at end of file
+var _0xcb91=['/unhold','unhold','/calls','transfer','exports','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','/hangup','isAuthenticated','hangup','hold'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2867d8,_0xef3ee0){_0x2867d8=_0x2867d8-0x0;var _0x3b8176=_0xcb91[_0x2867d8];return _0x3b8176;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x1cb9('0x0'));var controller=require(_0x1cb9('0x1'));router[_0x1cb9('0x2')](_0x1cb9('0x3'),auth['isAuthenticated'](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0x5')]);router['post'](_0x1cb9('0x6'),auth[_0x1cb9('0x7')](),auth['isWebrtcLicence'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x2')]('/answer',auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller['answer']);router[_0x1cb9('0x2')]('/hold',auth['isAuthenticated'](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0x9')]);router[_0x1cb9('0x2')](_0x1cb9('0xa'),auth[_0x1cb9('0x7')](),auth['isWebrtcLicence'](),controller[_0x1cb9('0xb')]);router[_0x1cb9('0x2')](_0x1cb9('0xc'),auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller['calls']);router['post']('/transfer',auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0xd')]);module[_0x1cb9('0xe')]=router;
\ No newline at end of file
index f94d262..0a137c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1306=['name','status','send','code','catch','User','agent','VoiceChannels','all','then','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callbackUrl','entityFound:','user:%s','originate\x20executed!','hangup','hangup\x20fired:','sessionId','format','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','transferNumber\x20is\x20required','info','log','handleError:','error','stack'];(function(_0x4b92a4,_0x1cf00d){var _0x249a0c=function(_0x4f290a){while(--_0x4f290a){_0x4b92a4['push'](_0x4b92a4['shift']());}};_0x249a0c(++_0x1cf00d);}(_0x1306,0x17a));var _0x6130=function(_0x5d980b,_0x29d8b5){_0x5d980b=_0x5d980b-0x0;var _0x173f6a=_0x1306[_0x5d980b];return _0x173f6a;};'use strict';var path=require(_0x6130('0x0'));var fs=require('fs');var _=require(_0x6130('0x1'));var db=require(_0x6130('0x2'))['db'];var config=require(_0x6130('0x3'));var util=require(_0x6130('0x4'));var BPromise=require(_0x6130('0x5'));var jayson=require(_0x6130('0x6'));var amiClient=jayson[_0x6130('0x7')][_0x6130('0x8')]({'port':0x232a});var logger=require(_0x6130('0x9'))(_0x6130('0xa'));var Redis=require(_0x6130('0xb'));config[_0x6130('0xc')]=_[_0x6130('0xd')](config[_0x6130('0xc')],{'host':_0x6130('0xe'),'port':0x18eb});var io=require(_0x6130('0xf'))(new Redis(config[_0x6130('0xc')]));var Schema=require(_0x6130('0x10'));var originateValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'callNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x14')]},'callerId':{'type':_0x6130('0x13')},'callbackUrl':{'type':_0x6130('0x13')}});var hangupValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});var conferenceValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});function emit(_0x39b444,_0x274659,_0x3298f0){logger[_0x6130('0x16')](_0x39b444,_0x274659,JSON['stringify'](_0x3298f0));io['to'](_0x39b444)['emit'](_0x274659,_0x3298f0);}function handleError(_0x1f80e0){return function(_0x49803e){console[_0x6130('0x17')](_0x6130('0x18'),_0x49803e,_0x49803e instanceof RangeError);logger[_0x6130('0x19')](_0x49803e[_0x6130('0x1a')]);if(_0x49803e instanceof RangeError){if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e['name'];}_0x1f80e0[_0x6130('0x1c')](0x194)['send'](_0x49803e);}else{if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e[_0x6130('0x1b')];}_0x1f80e0[_0x6130('0x1c')](0x1f4)[_0x6130('0x1d')](_0x49803e);}};}function checkError(){return function(_0x42f498){if(!_0x42f498){throw new RangeError('NotFound');}return _0x42f498;};}function respondWithRpcPromise(_0x5be413,_0x2c01cd){return new BPromise(function(_0x534390,_0x30b4f2){var _0x289c7b=amiClient;return _0x289c7b['request'](_0x5be413,_0x2c01cd)['then'](function(_0x54fc67){if(_0x54fc67[_0x6130('0x19')]){if(_0x54fc67['error'][_0x6130('0x1e')]===0x1f4){return _0x30b4f2(_0x54fc67['error']['message']);}return _0x534390(_0x54fc67['error']['message']);}else{_0x534390(_0x54fc67['result']);}})[_0x6130('0x1f')](function(_0x1ba07d){_0x30b4f2(_0x1ba07d);});});}function getAgent(_0x4d7442){return db[_0x6130('0x20')]['findOne']({'where':{'id':_0x4d7442,'role':_0x6130('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x5787a6,_0x9196d1){return new BPromise(function(_0x456231,_0x401a31){var _0x2997fd=respondWithRpcPromise(_0x6130('0x22'));var _0x392386=getAgent(_0x5787a6);Promise[_0x6130('0x23')]([_0x2997fd,_0x392386])[_0x6130('0x24')](function(_0x14dff0){var _0x5809e4=_0x14dff0[0x0];var _0x5363cc=_0x14dff0[0x1];var _0x383c56=_[_0x6130('0x25')](_0x5809e4[_0x6130('0x26')],function(_0x4345ac){return _0x4345ac[_0x6130('0x27')]==_0x5363cc['id']&&_0x4345ac['sessionId']==_0x9196d1;});if(_0x383c56[_0x6130('0x28')]==0x1){_0x456231(_0x5363cc);}else{_0x401a31(new RangeError(_0x6130('0x29')+_0x9196d1+_0x6130('0x2a')));}});});}exports[_0x6130('0x2b')]=function(_0x76dfa6,_0x4cf1d3){logger[_0x6130('0x16')](_0x6130('0x2c'),_0x76dfa6[_0x6130('0x2d')]);var _0x4b0c9c=originateValidation[_0x6130('0x10')](_0x76dfa6[_0x6130('0x2d')]);if(_0x4b0c9c[_0x6130('0x28')]>0x0){return _0x4cf1d3[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x4b0c9c);}var _0x6389a3=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x2f')];var _0x25fabf=_0x76dfa6['body'][_0x6130('0x30')];var _0x4df5ed=_0x76dfa6['body']['callerId'];var _0x1ffc85=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x31')];return getAgent(_0x6389a3)[_0x6130('0x24')](function(_0x438cde){logger[_0x6130('0x16')](_0x6130('0x32'),_0x438cde[_0x6130('0x1b')]);emit(util['format'](_0x6130('0x33'),_0x438cde[_0x6130('0x1b')]),'webbar:originate',{'callNumber':_0x25fabf,'callerId':_0x4df5ed,'callbackUrl':_0x1ffc85});return _0x4cf1d3[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x34')});})['catch'](handleError(_0x4cf1d3));};exports[_0x6130('0x35')]=function(_0x147663,_0x501630){logger['info'](_0x6130('0x36'),_0x147663[_0x6130('0x2d')]);var _0x3b1f14=hangupValidation['validate'](_0x147663['body']);if(_0x3b1f14[_0x6130('0x28')]>0x0){return _0x501630[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x3b1f14);}var _0x7d3014=_0x147663[_0x6130('0x2d')][_0x6130('0x2f')];var _0x167b31=_0x147663['body'][_0x6130('0x37')];return getAgent(_0x7d3014)[_0x6130('0x24')](function(_0x101aab){logger[_0x6130('0x16')](_0x6130('0x32'),_0x101aab[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x101aab[_0x6130('0x1b')]),_0x6130('0x39'),{'sessionId':_0x167b31});return _0x501630[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x3a')});})[_0x6130('0x1f')](handleError(_0x501630));};exports[_0x6130('0x3b')]=function(_0x7e02ef,_0x566e43){logger[_0x6130('0x16')](_0x6130('0x3c'),_0x7e02ef[_0x6130('0x2d')]);var _0x4c727b=answerValidation[_0x6130('0x10')](_0x7e02ef[_0x6130('0x2d')]);if(_0x4c727b[_0x6130('0x28')]>0x0){return _0x566e43['status'](0x190)['json'](_0x4c727b);}var _0x3ee3f8=_0x7e02ef[_0x6130('0x2d')][_0x6130('0x2f')];var _0xd87943=_0x7e02ef[_0x6130('0x2d')]['sessionId'];return getAgent(_0x3ee3f8)[_0x6130('0x24')](function(_0xef11b5){logger['info'](_0x6130('0x32'),_0xef11b5[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0xef11b5[_0x6130('0x1b')]),_0x6130('0x3d'),{'sessionId':_0xd87943});return _0x566e43[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0x566e43));};exports[_0x6130('0x3e')]=function(_0x534a67,_0x28fb1f){logger[_0x6130('0x16')](_0x6130('0x3f'),_0x534a67[_0x6130('0x2d')]);var _0x15adfd=holdValidation[_0x6130('0x10')](_0x534a67[_0x6130('0x2d')]);if(_0x15adfd[_0x6130('0x28')]>0x0){return _0x28fb1f[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x15adfd);}var _0x3936a8=_0x534a67['body'][_0x6130('0x2f')];var _0x134198=_0x534a67[_0x6130('0x2d')][_0x6130('0x37')];return getAgent(_0x3936a8)[_0x6130('0x24')](function(_0x13f591){logger[_0x6130('0x16')](_0x6130('0x32'),_0x13f591[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x13f591[_0x6130('0x1b')]),_0x6130('0x40'),{'sessionId':_0x134198});return _0x28fb1f[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x41')});})[_0x6130('0x1f')](handleError(_0x28fb1f));};exports[_0x6130('0x42')]=function(_0x37ee0c,_0x3a64ef){logger['info'](_0x6130('0x43'),_0x37ee0c[_0x6130('0x2d')]);var _0x1d0240=unholdValidation[_0x6130('0x10')](_0x37ee0c[_0x6130('0x2d')]);if(_0x1d0240[_0x6130('0x28')]>0x0){return _0x3a64ef['status'](0x190)[_0x6130('0x2e')](_0x1d0240);}var _0x1cbd0e=_0x37ee0c[_0x6130('0x2d')]['userId'];var _0x4f5207=_0x37ee0c['body']['sessionId'];return getAgent(_0x1cbd0e)[_0x6130('0x24')](function(_0xa9b10a){logger[_0x6130('0x16')]('entityFound:',_0xa9b10a['name']);emit(util['format']('user:%s',_0xa9b10a[_0x6130('0x1b')]),_0x6130('0x44'),{'sessionId':_0x4f5207});return _0x3a64ef[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x45')});})['catch'](handleError(_0x3a64ef));};exports[_0x6130('0x46')]=function(_0x305d99,_0x49e3cf){logger[_0x6130('0x16')](_0x6130('0x47'),_0x49e3cf[_0x6130('0x2d')]);var _0x32bf20=callsValidation[_0x6130('0x10')](_0x305d99[_0x6130('0x2d')]);if(_0x32bf20[_0x6130('0x28')]>0x0){return _0x49e3cf[_0x6130('0x1c')](0x190)['json'](_0x32bf20);}var _0x159ff8=_0x305d99[_0x6130('0x2d')][_0x6130('0x2f')];var _0x4934ca=respondWithRpcPromise('VoiceChannels');var _0x1b4f82=getAgent(_0x159ff8);return Promise[_0x6130('0x23')]([_0x4934ca,_0x1b4f82])[_0x6130('0x24')](function(_0xc253f){var _0x37b89b=_0xc253f[0x0];var _0x519a0c=_0xc253f[0x1];var _0x29630a=_[_0x6130('0x25')](_0x37b89b[_0x6130('0x26')],function(_0x372c53){return _0x372c53[_0x6130('0x27')]==_0x519a0c['id'];});return _0x49e3cf[_0x6130('0x1c')](0xc8)['json']({'count':_0x29630a['length'],'rows':_0x29630a});})[_0x6130('0x1f')](handleError(_0x49e3cf));};exports[_0x6130('0x48')]=function(_0x5c55cf,_0x442fee){logger[_0x6130('0x16')](_0x6130('0x49'),_0x5c55cf[_0x6130('0x2d')]);var _0x54c565=conferenceValidation[_0x6130('0x10')](_0x5c55cf[_0x6130('0x2d')]);if(_0x54c565[_0x6130('0x28')]>0x0){return _0x442fee[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x54c565);}var _0x198da8=_0x5c55cf[_0x6130('0x2d')][_0x6130('0x2f')];return getAgent(_0x198da8)['then'](function(_0x46f586){logger[_0x6130('0x16')](_0x6130('0x32'),_0x46f586[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x46f586['name']),_0x6130('0x4a'));return _0x442fee[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x4b')});})[_0x6130('0x1f')](handleError(_0x442fee));};exports[_0x6130('0x4c')]=function(_0x2d27e6,_0x31d20d){logger[_0x6130('0x16')](_0x6130('0x4d'),_0x2d27e6[_0x6130('0x2d')]);var _0x3a5876=transferValidation['validate'](_0x2d27e6['body']);if(_0x3a5876['length']>0x0){return _0x31d20d['status'](0x190)['json'](_0x3a5876);}var _0x101894=_0x2d27e6[_0x6130('0x2d')]['userId'];var _0x1d8286=_0x2d27e6['body'][_0x6130('0x37')];var _0xf82ecf=_0x2d27e6[_0x6130('0x2d')][_0x6130('0x4e')];return getAgent(_0x101894)[_0x6130('0x24')](function(_0x35f2df){logger[_0x6130('0x16')](_0x6130('0x32'),_0x35f2df['name']);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x35f2df['name']),_0x6130('0x4f'),{'sessionId':_0x1d8286,'transferNumber':_0xf82ecf});return _0x31d20d[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x50')});})['catch'](handleError(_0x31d20d));};
\ No newline at end of file
+var _0x01fe=['webbar:hangup','hangup\x20executed!','answer','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','VoiceChannels','all','conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','path','../../mysqldb','../../config/environment','jayson/promise','client','http','../../config/logger','ioredis','defaults','redis','localhost','socket.io-emitter','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','name','status','send','NotFound','request','then','code','message','result','catch','findOne','agent','filter','rows','UserId','length','\x20not\x20found!','originate','originate\x20fired:','validate','body','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','json','sessionId','user:%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x01fe,0x102));var _0xe01f=function(_0x10000c,_0x4e501f){_0x10000c=_0x10000c-0x0;var _0x39df6b=_0x01fe[_0x10000c];return _0x39df6b;};'use strict';var path=require(_0xe01f('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0xe01f('0x1'))['db'];var config=require(_0xe01f('0x2'));var util=require('util');var BPromise=require('bluebird');var jayson=require(_0xe01f('0x3'));var amiClient=jayson[_0xe01f('0x4')][_0xe01f('0x5')]({'port':0x232a});var logger=require(_0xe01f('0x6'))('webbarapi');var Redis=require(_0xe01f('0x7'));config['redis']=_[_0xe01f('0x8')](config[_0xe01f('0x9')],{'host':_0xe01f('0xa'),'port':0x18eb});var io=require(_0xe01f('0xb'))(new Redis(config[_0xe01f('0x9')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]},'callNumber':{'type':'string','required':[!![],_0xe01f('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xe01f('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':[!![],_0xe01f('0x10')]},'transferNumber':{'type':_0xe01f('0xf'),'required':[!![],_0xe01f('0x11')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x5e3877,_0x12540b,_0x14b05d){logger[_0xe01f('0x12')](_0x5e3877,_0x12540b,JSON[_0xe01f('0x13')](_0x14b05d));io['to'](_0x5e3877)[_0xe01f('0x14')](_0x12540b,_0x14b05d);}function handleError(_0x3fad9a){return function(_0x144eef){console[_0xe01f('0x15')](_0xe01f('0x16'),_0x144eef,_0x144eef instanceof RangeError);logger[_0xe01f('0x17')](_0x144eef['stack']);if(_0x144eef instanceof RangeError){if(_0x144eef[_0xe01f('0x18')]){delete _0x144eef['name'];}_0x3fad9a[_0xe01f('0x19')](0x194)[_0xe01f('0x1a')](_0x144eef);}else{if(_0x144eef[_0xe01f('0x18')]){delete _0x144eef[_0xe01f('0x18')];}_0x3fad9a['status'](0x1f4)[_0xe01f('0x1a')](_0x144eef);}};}function checkError(){return function(_0xb9343e){if(!_0xb9343e){throw new RangeError(_0xe01f('0x1b'));}return _0xb9343e;};}function respondWithRpcPromise(_0x1f0cfd,_0x369b7e){return new BPromise(function(_0x3c34fa,_0x570d48){var _0x1faeb8=amiClient;return _0x1faeb8[_0xe01f('0x1c')](_0x1f0cfd,_0x369b7e)[_0xe01f('0x1d')](function(_0xa6da95){if(_0xa6da95[_0xe01f('0x17')]){if(_0xa6da95[_0xe01f('0x17')][_0xe01f('0x1e')]===0x1f4){return _0x570d48(_0xa6da95[_0xe01f('0x17')][_0xe01f('0x1f')]);}return _0x3c34fa(_0xa6da95['error']['message']);}else{_0x3c34fa(_0xa6da95[_0xe01f('0x20')]);}})[_0xe01f('0x21')](function(_0x3f92ca){_0x570d48(_0x3f92ca);});});}function getAgent(_0x3ec80a){return db['User'][_0xe01f('0x22')]({'where':{'id':_0x3ec80a,'role':_0xe01f('0x23')}})['then'](checkError());}function getAgentCheckSession(_0x378c93,_0x5b9c5e){return new BPromise(function(_0x1b77c8,_0x387044){var _0x13dcd4=respondWithRpcPromise('VoiceChannels');var _0x940cb6=getAgent(_0x378c93);Promise['all']([_0x13dcd4,_0x940cb6])[_0xe01f('0x1d')](function(_0x232ad1){var _0x2e4568=_0x232ad1[0x0];var _0x2dbc94=_0x232ad1[0x1];var _0x35bd53=_[_0xe01f('0x24')](_0x2e4568[_0xe01f('0x25')],function(_0x41d13d){return _0x41d13d[_0xe01f('0x26')]==_0x2dbc94['id']&&_0x41d13d['sessionId']==_0x5b9c5e;});if(_0x35bd53[_0xe01f('0x27')]==0x1){_0x1b77c8(_0x2dbc94);}else{_0x387044(new RangeError('sessionId\x20'+_0x5b9c5e+_0xe01f('0x28')));}});});}exports[_0xe01f('0x29')]=function(_0x51fe9b,_0x15f98f){logger[_0xe01f('0x12')](_0xe01f('0x2a'),_0x51fe9b['body']);var _0x2e417b=originateValidation[_0xe01f('0x2b')](_0x51fe9b[_0xe01f('0x2c')]);if(_0x2e417b[_0xe01f('0x27')]>0x0){return _0x15f98f[_0xe01f('0x19')](0x190)['json'](_0x2e417b);}var _0x57aed0=_0x51fe9b['body'][_0xe01f('0x2d')];var _0x4c9f2e=_0x51fe9b[_0xe01f('0x2c')][_0xe01f('0x2e')];var _0x463687=_0x51fe9b[_0xe01f('0x2c')][_0xe01f('0x2f')];var _0x83c32=_0x51fe9b[_0xe01f('0x2c')][_0xe01f('0x30')];return getAgent(_0x57aed0)['then'](function(_0x53c309){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x53c309[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')]('user:%s',_0x53c309[_0xe01f('0x18')]),_0xe01f('0x33'),{'callNumber':_0x4c9f2e,'callerId':_0x463687,'callbackUrl':_0x83c32});return _0x15f98f[_0xe01f('0x19')](0xc8)['json']({'error':![],'message':_0xe01f('0x34')});})[_0xe01f('0x21')](handleError(_0x15f98f));};exports[_0xe01f('0x35')]=function(_0x2fcc0c,_0xddb14b){logger[_0xe01f('0x12')](_0xe01f('0x36'),_0x2fcc0c[_0xe01f('0x2c')]);var _0x29c47f=hangupValidation[_0xe01f('0x2b')](_0x2fcc0c[_0xe01f('0x2c')]);if(_0x29c47f[_0xe01f('0x27')]>0x0){return _0xddb14b[_0xe01f('0x19')](0x190)[_0xe01f('0x37')](_0x29c47f);}var _0x16ab3c=_0x2fcc0c['body'][_0xe01f('0x2d')];var _0x1643a4=_0x2fcc0c[_0xe01f('0x2c')][_0xe01f('0x38')];return getAgent(_0x16ab3c)['then'](function(_0x36783f){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x36783f[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0x36783f['name']),_0xe01f('0x3a'),{'sessionId':_0x1643a4});return _0xddb14b[_0xe01f('0x19')](0xc8)[_0xe01f('0x37')]({'error':![],'message':_0xe01f('0x3b')});})[_0xe01f('0x21')](handleError(_0xddb14b));};exports[_0xe01f('0x3c')]=function(_0x861971,_0x305659){logger[_0xe01f('0x12')]('answer\x20fired:',_0x861971['body']);var _0x3dd453=answerValidation[_0xe01f('0x2b')](_0x861971['body']);if(_0x3dd453[_0xe01f('0x27')]>0x0){return _0x305659[_0xe01f('0x19')](0x190)[_0xe01f('0x37')](_0x3dd453);}var _0x5625d8=_0x861971[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x56785b=_0x861971['body']['sessionId'];return getAgent(_0x5625d8)[_0xe01f('0x1d')](function(_0x53c81b){logger[_0xe01f('0x12')]('entityFound:',_0x53c81b[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0x53c81b[_0xe01f('0x18')]),_0xe01f('0x3d'),{'sessionId':_0x56785b});return _0x305659[_0xe01f('0x19')](0xc8)[_0xe01f('0x37')]({'error':![],'message':_0xe01f('0x3e')});})[_0xe01f('0x21')](handleError(_0x305659));};exports[_0xe01f('0x3f')]=function(_0x18bb53,_0x580df5){logger[_0xe01f('0x12')](_0xe01f('0x40'),_0x18bb53[_0xe01f('0x2c')]);var _0x3c3d64=holdValidation[_0xe01f('0x2b')](_0x18bb53['body']);if(_0x3c3d64[_0xe01f('0x27')]>0x0){return _0x580df5['status'](0x190)['json'](_0x3c3d64);}var _0x25437f=_0x18bb53[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x1d8614=_0x18bb53[_0xe01f('0x2c')]['sessionId'];return getAgent(_0x25437f)[_0xe01f('0x1d')](function(_0x337c5d){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x337c5d[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0x337c5d['name']),_0xe01f('0x41'),{'sessionId':_0x1d8614});return _0x580df5['status'](0xc8)[_0xe01f('0x37')]({'error':![],'message':_0xe01f('0x42')});})['catch'](handleError(_0x580df5));};exports[_0xe01f('0x43')]=function(_0x100742,_0x457bb0){logger[_0xe01f('0x12')](_0xe01f('0x44'),_0x100742[_0xe01f('0x2c')]);var _0x5b04b5=unholdValidation['validate'](_0x100742[_0xe01f('0x2c')]);if(_0x5b04b5[_0xe01f('0x27')]>0x0){return _0x457bb0['status'](0x190)[_0xe01f('0x37')](_0x5b04b5);}var _0x38c8ef=_0x100742[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x56d558=_0x100742[_0xe01f('0x2c')]['sessionId'];return getAgent(_0x38c8ef)[_0xe01f('0x1d')](function(_0xfbce52){logger['info'](_0xe01f('0x31'),_0xfbce52[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0xfbce52[_0xe01f('0x18')]),_0xe01f('0x45'),{'sessionId':_0x56d558});return _0x457bb0['status'](0xc8)[_0xe01f('0x37')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x457bb0));};exports[_0xe01f('0x46')]=function(_0x2d53cb,_0x2161b4){logger[_0xe01f('0x12')](_0xe01f('0x47'),_0x2161b4[_0xe01f('0x2c')]);var _0x3949e1=callsValidation[_0xe01f('0x2b')](_0x2d53cb['body']);if(_0x3949e1['length']>0x0){return _0x2161b4[_0xe01f('0x19')](0x190)['json'](_0x3949e1);}var _0x3ee275=_0x2d53cb[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x33a11b=respondWithRpcPromise(_0xe01f('0x48'));var _0x4dfb61=getAgent(_0x3ee275);return Promise[_0xe01f('0x49')]([_0x33a11b,_0x4dfb61])[_0xe01f('0x1d')](function(_0x4c6d3f){var _0x3bda53=_0x4c6d3f[0x0];var _0x4dd65c=_0x4c6d3f[0x1];var _0xfb20c6=_['filter'](_0x3bda53[_0xe01f('0x25')],function(_0xe1e5df){return _0xe1e5df[_0xe01f('0x26')]==_0x4dd65c['id'];});return _0x2161b4[_0xe01f('0x19')](0xc8)[_0xe01f('0x37')]({'count':_0xfb20c6[_0xe01f('0x27')],'rows':_0xfb20c6});})[_0xe01f('0x21')](handleError(_0x2161b4));};exports[_0xe01f('0x4a')]=function(_0x5d51e5,_0x1be0f4){logger[_0xe01f('0x12')]('conference\x20fired:',_0x5d51e5[_0xe01f('0x2c')]);var _0x5ca10d=conferenceValidation[_0xe01f('0x2b')](_0x5d51e5[_0xe01f('0x2c')]);if(_0x5ca10d['length']>0x0){return _0x1be0f4[_0xe01f('0x19')](0x190)['json'](_0x5ca10d);}var _0x41c750=_0x5d51e5['body'][_0xe01f('0x2d')];return getAgent(_0x41c750)[_0xe01f('0x1d')](function(_0x141140){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x141140[_0xe01f('0x18')]);emit(util['format']('user:%s',_0x141140[_0xe01f('0x18')]),'webbar:conference');return _0x1be0f4[_0xe01f('0x19')](0xc8)['json']({'error':![],'message':_0xe01f('0x4b')});})[_0xe01f('0x21')](handleError(_0x1be0f4));};exports[_0xe01f('0x4c')]=function(_0x5a28cc,_0x5e26cb){logger[_0xe01f('0x12')]('transfer\x20fired:',_0x5a28cc['body']);var _0x1a03c6=transferValidation[_0xe01f('0x2b')](_0x5a28cc[_0xe01f('0x2c')]);if(_0x1a03c6[_0xe01f('0x27')]>0x0){return _0x5e26cb[_0xe01f('0x19')](0x190)[_0xe01f('0x37')](_0x1a03c6);}var _0x19b448=_0x5a28cc[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x526d0a=_0x5a28cc['body']['sessionId'];var _0x47c632=_0x5a28cc[_0xe01f('0x2c')][_0xe01f('0x4d')];return getAgent(_0x19b448)[_0xe01f('0x1d')](function(_0x3e5cb2){logger[_0xe01f('0x12')]('entityFound:',_0x3e5cb2[_0xe01f('0x18')]);emit(util['format'](_0xe01f('0x39'),_0x3e5cb2[_0xe01f('0x18')]),_0xe01f('0x4e'),{'sessionId':_0x526d0a,'transferNumber':_0x47c632});return _0x5e26cb[_0xe01f('0x19')](0xc8)['json']({'error':![],'message':'transfer\x20executed!'});})[_0xe01f('0x21')](handleError(_0x5e26cb));};
\ No newline at end of file
index 6d94f7b..6ed44e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','addDisposition','addAnswer','/:id/notify','/:id/send','send','put','update','delete','removeAnswers'];(function(_0x5d0ef0,_0x1afa61){var _0x4d1913=function(_0x491be4){while(--_0x491be4){_0x5d0ef0['push'](_0x5d0ef0['shift']());}};_0x4d1913(++_0x1afa61);}(_0x2ef3,0xba));var _0x32ef=function(_0x4a2d9d,_0x259c7a){_0x4a2d9d=_0x4a2d9d-0x0;var _0x2462f4=_0x2ef3[_0x4a2d9d];return _0x2462f4;};'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['getDispositions']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['get'](_0x32ef('0x12'),auth['isAuthenticated'](),controller[_0x32ef('0x13')]);router['get'](_0x32ef('0x14'),auth[_0x32ef('0xb')](),controller['getApplications']);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x15')](_0x32ef('0xf'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x16')]);router['post']('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x32ef('0x17')]);router[_0x32ef('0x15')](_0x32ef('0x12'),auth['isAuthenticated'](),controller['addAgents']);router[_0x32ef('0x15')](_0x32ef('0x14'),auth[_0x32ef('0xb')](),controller['addApplications']);router[_0x32ef('0x15')](_0x32ef('0x18'),controller['notify']);router[_0x32ef('0x15')](_0x32ef('0x19'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x1a')]);router[_0x32ef('0x1b')](_0x32ef('0xd'),auth['isAuthenticated'](),controller[_0x32ef('0x1c')]);router['delete'](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller['destroy']);router[_0x32ef('0x1d')](_0x32ef('0xf'),auth[_0x32ef('0xb')](),controller['removeDispositions']);router['delete'](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x1e')]);router['delete']('/:id/users',auth[_0x32ef('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x14a0=['update','delete','destroy','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./whatsappAccount.controller','get','isAuthenticated','/describe','describe','getDispositions','/:id/canned_answers','/:id/users','getAgents','/:id/applications','getApplications','post','create','addDisposition','addAgents','addApplications','/:id/notify','notify','/:id/send','put','/:id'];(function(_0x54cfaa,_0x1875de){var _0x27f8b4=function(_0x33194c){while(--_0x33194c){_0x54cfaa['push'](_0x54cfaa['shift']());}};_0x27f8b4(++_0x1875de);}(_0x14a0,0x8e));var _0x014a=function(_0x561680,_0x5b9aea){_0x561680=_0x561680-0x0;var _0x4a196f=_0x14a0[_0x561680];return _0x4a196f;};'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['get']('/:id',auth[_0x014a('0x9')](),controller['show']);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x014a('0xc')]);router['get'](_0x014a('0xd'),auth[_0x014a('0x9')](),controller['getAnswers']);router[_0x014a('0x8')](_0x014a('0xe'),auth[_0x014a('0x9')](),controller[_0x014a('0xf')]);router[_0x014a('0x8')](_0x014a('0x10'),auth[_0x014a('0x9')](),controller[_0x014a('0x11')]);router[_0x014a('0x12')]('/',auth[_0x014a('0x9')](),controller[_0x014a('0x13')]);router[_0x014a('0x12')]('/:id/dispositions',auth[_0x014a('0x9')](),controller[_0x014a('0x14')]);router['post'](_0x014a('0xd'),auth[_0x014a('0x9')](),controller['addAnswer']);router[_0x014a('0x12')](_0x014a('0xe'),auth[_0x014a('0x9')](),controller[_0x014a('0x15')]);router[_0x014a('0x12')](_0x014a('0x10'),auth[_0x014a('0x9')](),controller[_0x014a('0x16')]);router[_0x014a('0x12')](_0x014a('0x17'),controller[_0x014a('0x18')]);router[_0x014a('0x12')](_0x014a('0x19'),auth[_0x014a('0x9')](),controller['send']);router[_0x014a('0x1a')](_0x014a('0x1b'),auth[_0x014a('0x9')](),controller[_0x014a('0x1c')]);router[_0x014a('0x1d')](_0x014a('0x1b'),auth[_0x014a('0x9')](),controller[_0x014a('0x1e')]);router[_0x014a('0x1d')]('/:id/dispositions',auth[_0x014a('0x9')](),controller['removeDispositions']);router[_0x014a('0x1d')](_0x014a('0xd'),auth[_0x014a('0x9')](),controller[_0x014a('0x1f')]);router[_0x014a('0x1d')](_0x014a('0xe'),auth[_0x014a('0x9')](),controller[_0x014a('0x20')]);module[_0x014a('0x21')]=router;
\ No newline at end of file
index fc5cdd3..605cdd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c25=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','generate','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x1ff40,_0x5f498e){var _0x303079=function(_0x1c531f){while(--_0x1c531f){_0x1ff40['push'](_0x1ff40['shift']());}};_0x303079(++_0x5f498e);}(_0x3c25,0xc8));var _0x53c2=function(_0x5877ce,_0x45a4bd){_0x5877ce=_0x5877ce-0x0;var _0x6d6d47=_0x3c25[_0x5877ce];return _0x6d6d47;};'use strict';var Sequelize=require(_0x53c2('0x0'));var rs=require('randomstring');module[_0x53c2('0x1')]={'name':{'type':Sequelize[_0x53c2('0x2')],'unique':_0x53c2('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x53c2('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x53c2('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x53c2('0x4')]();}},'phone':{'type':Sequelize[_0x53c2('0x2')]},'type':{'type':Sequelize['ENUM']('twilio',_0x53c2('0x5'))},'accountSid':{'type':Sequelize[_0x53c2('0x2')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x53c2('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x53c2('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x53c2('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x53c2('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x53c2('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x53c2('0x7')],'comment':_0x53c2('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x53c2('0x8')],'defaultValue':![],'comment':_0x53c2('0xa'),'set':function(_0x378839){if(!_0x378839){this[_0x53c2('0xb')](_0x53c2('0xc'),null);}this[_0x53c2('0xb')](_0x53c2('0xd'),_0x378839);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd032=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','sequelize','exports','STRING','generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0x13ac19,_0xab7647){var _0x3472bb=function(_0x37043e){while(--_0x37043e){_0x13ac19['push'](_0x13ac19['shift']());}};_0x3472bb(++_0xab7647);}(_0xd032,0x153));var _0x2d03=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xd032[_0x35885a];return _0xe86249;};'use strict';var Sequelize=require(_0x2d03('0x0'));var rs=require('randomstring');module[_0x2d03('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x2d03('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x2d03('0x3')]();}},'phone':{'type':Sequelize[_0x2d03('0x2')]},'type':{'type':Sequelize[_0x2d03('0x4')](_0x2d03('0x5'),_0x2d03('0x6'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0x2d03('0x2')]},'authToken':{'type':Sequelize[_0x2d03('0x2')]},'notificationTemplate':{'type':Sequelize[_0x2d03('0x7')],'defaultValue':function(){return _0x2d03('0x8');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x2d03('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2d03('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2d03('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2d03('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2d03('0xa')],'comment':_0x2d03('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x2d03('0x9')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x21c314){if(!_0x21c314){this[_0x2d03('0xc')](_0x2d03('0xd'),null);}this[_0x2d03('0xc')]('mandatoryDisposition',_0x21c314);}},'description':{'type':Sequelize[_0x2d03('0x2')]}};
\ No newline at end of file
index 3242618..e2a1016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dee=['push','close','ContactId','AttachmentId','UserId','unshift','*,*,*,*','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','DESC','out','dataValues','Messages','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','WhatsappAccounts','stack','name','index','Pause','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappAccount','includeAll','include','findAll','show','params','mandatoryDispositionPause','keys','find','create','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','findOne','Disposition','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','length','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','isArray','getAgents','User','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','WhatsappApplication','priority','finally','send','getApplications','notify','Applications','account','type','statuses','WhatsappMessage','message_id','applications','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','sinch','notifications','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','omit','Contacts','WhatsappInteraction','interaction','created','autoclose'];(function(_0x1f1719,_0xcc8e22){var _0x26dcd1=function(_0x503f5b){while(--_0x503f5b){_0x1f1719['push'](_0x1f1719['shift']());}};_0x26dcd1(++_0xcc8e22);}(_0x9dee,0xd9));var _0xe9de=function(_0x434783,_0xff395d){_0x434783=_0x434783-0x0;var _0x13efcf=_0x9dee[_0x434783];return _0x13efcf;};'use strict';var emlformat=require(_0xe9de('0x0'));var rimraf=require(_0xe9de('0x1'));var zipdir=require(_0xe9de('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe9de('0x3'));var moment=require(_0xe9de('0x4'));var BPromise=require(_0xe9de('0x5'));var Mustache=require('mustache');var util=require(_0xe9de('0x6'));var path=require('path');var sox=require(_0xe9de('0x7'));var csv=require(_0xe9de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9de('0x9'));var _=require(_0xe9de('0xa'));var squel=require(_0xe9de('0xb'));var crypto=require(_0xe9de('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9de('0xd'));var toCsv=require(_0xe9de('0x8'));var querystring=require(_0xe9de('0xe'));var Papa=require(_0xe9de('0xf'));var Redis=require(_0xe9de('0x10'));var authService=require(_0xe9de('0x11'));var qs=require(_0xe9de('0x12'));var as=require(_0xe9de('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe9de('0x14'));var utils=require(_0xe9de('0x15'));var config=require(_0xe9de('0x16'));var licenseUtil=require(_0xe9de('0x17'));var db=require(_0xe9de('0x18'))['db'];config[_0xe9de('0x19')]=_[_0xe9de('0x1a')](config['redis'],{'host':_0xe9de('0x1b'),'port':0x18eb});var socket=require(_0xe9de('0x1c'))(new Redis(config[_0xe9de('0x19')]));require(_0xe9de('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xe9de('0x1e')][_0xe9de('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x346e3c,_0x33f160,_0x19a5a6,_0x4925c3){return new BPromise(function(_0x575afc,_0x396dba){var _0x26ac71=_0x4925c3||client;return _0x26ac71[_0xe9de('0x20')](_0x346e3c,_0x19a5a6)[_0xe9de('0x21')](function(_0x5740c6){logger[_0xe9de('0x22')](_0xe9de('0x23'),_0x33f160,_0xe9de('0x24'));logger[_0xe9de('0x25')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x33f160,'request\x20sent',JSON[_0xe9de('0x26')](_0x5740c6));if(_0x5740c6[_0xe9de('0x27')]){if(_0x5740c6['error']['code']===0x1f4){logger[_0xe9de('0x27')](_0xe9de('0x23'),_0x33f160,_0x5740c6[_0xe9de('0x27')]['message']);return _0x396dba(_0x5740c6[_0xe9de('0x27')][_0xe9de('0x28')]);}logger[_0xe9de('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x33f160,_0x5740c6[_0xe9de('0x27')][_0xe9de('0x28')]);return _0x575afc(_0x5740c6[_0xe9de('0x27')][_0xe9de('0x28')]);}else{logger[_0xe9de('0x22')](_0xe9de('0x23'),_0x33f160,_0xe9de('0x24'));_0x575afc(_0x5740c6[_0xe9de('0x29')][_0xe9de('0x28')]);}})[_0xe9de('0x2a')](function(_0x2a11f6){logger[_0xe9de('0x27')](_0xe9de('0x23'),_0x33f160,_0x2a11f6);_0x396dba(_0x2a11f6);});});}function respondWithStatusCode(_0x372b32,_0x1dfe73){_0x1dfe73=_0x1dfe73||0xcc;return function(_0x5e2f9f){if(_0x5e2f9f){return _0x372b32[_0xe9de('0x2b')](_0x1dfe73);}return _0x372b32[_0xe9de('0x2c')](_0x1dfe73)[_0xe9de('0x2d')]();};}function respondWithResult(_0x34b86a,_0x4ddd7d){_0x4ddd7d=_0x4ddd7d||0xc8;return function(_0x2f5f37){if(_0x2f5f37){return _0x34b86a[_0xe9de('0x2c')](_0x4ddd7d)[_0xe9de('0x2e')](_0x2f5f37);}};}function respondWithFilteredResult(_0xc0fcf7,_0x56a707){return function(_0x5f5185){if(_0x5f5185){var _0x23e9db=typeof _0x56a707[_0xe9de('0x2f')]===_0xe9de('0x30')&&typeof _0x56a707[_0xe9de('0x31')]==='undefined';var _0x4ac8be=_0x5f5185[_0xe9de('0x32')];var _0x1da3c7=_0x23e9db?0x0:_0x56a707[_0xe9de('0x2f')];var _0x2134a6=_0x23e9db?_0x5f5185[_0xe9de('0x32')]:_0x56a707[_0xe9de('0x2f')]+_0x56a707[_0xe9de('0x31')];var _0x464f24;if(_0x2134a6>=_0x4ac8be){_0x2134a6=_0x4ac8be;_0x464f24=0xc8;}else{_0x464f24=0xce;}_0xc0fcf7['status'](_0x464f24);return _0xc0fcf7[_0xe9de('0x33')](_0xe9de('0x34'),_0x1da3c7+'-'+_0x2134a6+'/'+_0x4ac8be)[_0xe9de('0x2e')](_0x5f5185);}return null;};}function patchUpdates(_0x29d593){return function(_0x32294e){try{jsonpatch['apply'](_0x32294e,_0x29d593,!![]);}catch(_0x27326c){return BPromise[_0xe9de('0x35')](_0x27326c);}return _0x32294e[_0xe9de('0x36')]();};}function saveUpdates(_0x524f16,_0x20aa98){return function(_0x487df5){if(_0x487df5){return _0x487df5[_0xe9de('0x37')](_0x524f16)[_0xe9de('0x21')](function(_0x4079d2){return _0x4079d2;});}return null;};}function removeEntity(_0x28d24c,_0x266e7c){return function(_0x84d837){if(_0x84d837){return _0x84d837[_0xe9de('0x38')]()['then'](function(){var _0x19e56c=_0x84d837['get']({'plain':!![]});var _0x54a498=_0xe9de('0x39');return db['UserProfileResource'][_0xe9de('0x38')]({'where':{'type':_0x54a498,'resourceId':_0x19e56c['id']}})['then'](function(){return _0x84d837;});})[_0xe9de('0x21')](function(){_0x28d24c[_0xe9de('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe25a5b,_0x37c3a8){return function(_0x1253c4){if(!_0x1253c4){_0xe25a5b[_0xe9de('0x2b')](0x194);}return _0x1253c4;};}function handleError(_0x16b165,_0x16a2d2){_0x16a2d2=_0x16a2d2||0x1f4;return function(_0x3e8831){logger[_0xe9de('0x27')](_0x3e8831[_0xe9de('0x3a')]);if(_0x3e8831[_0xe9de('0x3b')]){delete _0x3e8831['name'];}_0x16b165['status'](_0x16a2d2)['send'](_0x3e8831);};}exports[_0xe9de('0x3c')]=function(_0x18a9e0,_0x508533){var _0x27b8be={'include':[{'model':db[_0xe9de('0x3d')],'as':'mandatoryDispositionPause'}]},_0x479da5={},_0x552e7b={'count':0x0,'rows':[]};var _0x24df70=_[_0xe9de('0x3e')](db['WhatsappAccount'][_0xe9de('0x3f')],function(_0x25d09d){return{'name':_0x25d09d[_0xe9de('0x40')],'type':_0x25d09d['type'][_0xe9de('0x41')]};});_0x479da5[_0xe9de('0x42')]=_[_0xe9de('0x3e')](_0x24df70,_0xe9de('0x3b'));_0x479da5[_0xe9de('0x43')]=_['keys'](_0x18a9e0[_0xe9de('0x43')]);_0x479da5[_0xe9de('0x44')]=_[_0xe9de('0x45')](_0x479da5[_0xe9de('0x42')],_0x479da5[_0xe9de('0x43')]);_0x27b8be[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x479da5[_0xe9de('0x42')],qs[_0xe9de('0x47')](_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x47')]));_0x27b8be['attributes']=_0x27b8be['attributes']['length']?_0x27b8be[_0xe9de('0x46')]:_0x479da5[_0xe9de('0x42')];if(!_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x48')](_0xe9de('0x49'))){_0x27b8be[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x31')]);_0x27b8be[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x18a9e0['query'][_0xe9de('0x2f')]);}_0x27b8be[_0xe9de('0x4a')]=qs['sort'](_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x4b')]);_0x27b8be[_0xe9de('0x4c')]=qs['filters'](_[_0xe9de('0x4d')](_0x18a9e0[_0xe9de('0x43')],_0x479da5[_0xe9de('0x44')]),_0x24df70);if(_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x4e')]){_0x27b8be['where']=_[_0xe9de('0x4f')](_0x27b8be[_0xe9de('0x4c')],{'$or':_[_0xe9de('0x3e')](_0x24df70,function(_0x822c6e){if(_0x822c6e['type']!==_0xe9de('0x50')){var _0x3f9a9e={};_0x3f9a9e[_0x822c6e[_0xe9de('0x3b')]]={'$like':'%'+_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x4e')]+'%'};return _0x3f9a9e;}})});}_0x27b8be=_[_0xe9de('0x4f')]({},_0x27b8be,_0x18a9e0[_0xe9de('0x51')]);var _0x515331={'where':_0x27b8be[_0xe9de('0x4c')]};return db[_0xe9de('0x52')][_0xe9de('0x32')](_0x515331)[_0xe9de('0x21')](function(_0xd05a90){_0x552e7b['count']=_0xd05a90;if(_0x18a9e0['query'][_0xe9de('0x53')]){_0x27b8be[_0xe9de('0x54')]=[{'all':!![]}];}return db[_0xe9de('0x52')][_0xe9de('0x55')](_0x27b8be);})[_0xe9de('0x21')](function(_0x211c84){_0x552e7b['rows']=_0x211c84;return _0x552e7b;})['then'](respondWithFilteredResult(_0x508533,_0x27b8be))[_0xe9de('0x2a')](handleError(_0x508533,null));};exports[_0xe9de('0x56')]=function(_0x1e8190,_0x58b296){var _0x4bc699={'raw':![],'where':{'id':_0x1e8190[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0x3d')],'as':_0xe9de('0x58')}]},_0x1624f2={};_0x1624f2[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x52')][_0xe9de('0x3f')]);_0x1624f2['query']=_[_0xe9de('0x59')](_0x1e8190[_0xe9de('0x43')]);_0x1624f2[_0xe9de('0x44')]=_['intersection'](_0x1624f2['model'],_0x1624f2['query']);_0x4bc699[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x1624f2[_0xe9de('0x42')],qs['fields'](_0x1e8190[_0xe9de('0x43')][_0xe9de('0x47')]));_0x4bc699[_0xe9de('0x46')]=_0x4bc699[_0xe9de('0x46')]['length']?_0x4bc699[_0xe9de('0x46')]:_0x1624f2[_0xe9de('0x42')];if(_0x1e8190[_0xe9de('0x43')][_0xe9de('0x53')]){_0x4bc699['include']=[{'all':!![]}];}_0x4bc699=_[_0xe9de('0x4f')]({},_0x4bc699,_0x1e8190[_0xe9de('0x51')]);return db['WhatsappAccount'][_0xe9de('0x5a')](_0x4bc699)[_0xe9de('0x21')](handleEntityNotFound(_0x58b296,null))[_0xe9de('0x21')](respondWithResult(_0x58b296,null))['catch'](handleError(_0x58b296,null));};exports[_0xe9de('0x5b')]=function(_0x194568,_0x186035){return db['WhatsappAccount'][_0xe9de('0x5b')](_0x194568[_0xe9de('0x5c')],{})['then'](function(_0x31f4f9){var _0x1e2065=_0x194568[_0xe9de('0x5d')][_0xe9de('0x5e')]({'plain':!![]});if(!_0x1e2065)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e2065[_0xe9de('0x5f')]===_0xe9de('0x5d')){var _0x7aa6f6=_0x31f4f9['get']({'plain':!![]});var _0x584f9f=_0xe9de('0x39');return db[_0xe9de('0x60')][_0xe9de('0x5a')]({'where':{'name':_0x584f9f,'userProfileId':_0x1e2065[_0xe9de('0x61')]},'raw':!![]})[_0xe9de('0x21')](function(_0x30a259){if(_0x30a259&&_0x30a259[_0xe9de('0x62')]===0x0){return db[_0xe9de('0x63')][_0xe9de('0x5b')]({'name':_0x7aa6f6[_0xe9de('0x3b')],'resourceId':_0x7aa6f6['id'],'type':_0x30a259[_0xe9de('0x3b')],'sectionId':_0x30a259['id']},{})['then'](function(){return _0x31f4f9;});}else{return _0x31f4f9;}})[_0xe9de('0x2a')](function(_0xeb67e4){logger['error'](_0xe9de('0x64'),_0xeb67e4);throw _0xeb67e4;});}return _0x31f4f9;})[_0xe9de('0x21')](respondWithResult(_0x186035,0xc9))['catch'](handleError(_0x186035,null));};exports[_0xe9de('0x37')]=function(_0x1d06a1,_0x404158){if(_0x1d06a1['body']['id']){delete _0x1d06a1[_0xe9de('0x5c')]['id'];}return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x1d06a1[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0x3d')],'as':_0xe9de('0x58')}]})['then'](handleEntityNotFound(_0x404158,null))['then'](saveUpdates(_0x1d06a1[_0xe9de('0x5c')],null))['then'](respondWithResult(_0x404158,null))[_0xe9de('0x2a')](handleError(_0x404158,null));};exports[_0xe9de('0x38')]=function(_0x52e9af,_0x374c9a){return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x52e9af[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x374c9a,null))[_0xe9de('0x21')](removeEntity(_0x374c9a,null))[_0xe9de('0x2a')](handleError(_0x374c9a,null));};exports[_0xe9de('0x65')]=function(_0x6ac4c2,_0x579110){return db[_0xe9de('0x52')][_0xe9de('0x65')]()['then'](respondWithResult(_0x579110,null))[_0xe9de('0x2a')](handleError(_0x579110,null));};exports[_0xe9de('0x66')]=function(_0x16d14a,_0x29be4e,_0x255746){if(_0x16d14a['body']['id']){delete _0x16d14a[_0xe9de('0x5c')]['id'];}return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x16d14a[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x29be4e,null))[_0xe9de('0x21')](function(_0x35be1e){if(_0x35be1e){_0x16d14a[_0xe9de('0x5c')][_0xe9de('0x67')]=_0x35be1e['id'];return db['Disposition'][_0xe9de('0x5b')](_0x16d14a[_0xe9de('0x5c')]);}})[_0xe9de('0x21')](respondWithResult(_0x29be4e,null))[_0xe9de('0x2a')](handleError(_0x29be4e,null));};exports['getDispositions']=function(_0x3659e9,_0x1670aa,_0x17c870){var _0x1ca2d2={'raw':![],'where':{}};var _0x2d66da={};var _0x5a57c4={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xe9de('0x68')]({'where':{'id':_0x3659e9['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x1670aa,null))[_0xe9de('0x21')](function(_0xc4d10c){if(_0xc4d10c){_0x2d66da[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x69')][_0xe9de('0x3f')]);_0x2d66da['query']=_[_0xe9de('0x59')](_0x3659e9[_0xe9de('0x43')]);_0x2d66da[_0xe9de('0x44')]=_['intersection'](_0x2d66da[_0xe9de('0x42')],_0x2d66da[_0xe9de('0x43')]);_0x1ca2d2[_0xe9de('0x46')]=_['intersection'](_0x2d66da[_0xe9de('0x42')],qs[_0xe9de('0x47')](_0x3659e9[_0xe9de('0x43')][_0xe9de('0x47')]));_0x1ca2d2[_0xe9de('0x46')]=_0x1ca2d2['attributes']['length']?_0x1ca2d2['attributes']:_0x2d66da[_0xe9de('0x42')];if(!_0x3659e9[_0xe9de('0x43')]['hasOwnProperty']('nolimit')){_0x1ca2d2[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x3659e9[_0xe9de('0x43')][_0xe9de('0x31')]);_0x1ca2d2[_0xe9de('0x2f')]=qs['offset'](_0x3659e9['query'][_0xe9de('0x2f')]);}_0x1ca2d2[_0xe9de('0x4a')]=qs[_0xe9de('0x4b')](_0x3659e9[_0xe9de('0x43')][_0xe9de('0x4b')]);_0x1ca2d2[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_[_0xe9de('0x4d')](_0x3659e9[_0xe9de('0x43')],_0x2d66da['filters']));_0x1ca2d2[_0xe9de('0x4c')][_0xe9de('0x67')]=_0xc4d10c['id'];if(_0x3659e9['query'][_0xe9de('0x4e')]){_0x1ca2d2[_0xe9de('0x4c')]=_[_0xe9de('0x4f')](_0x1ca2d2[_0xe9de('0x4c')],{'$or':_[_0xe9de('0x3e')](_0x1ca2d2['attributes'],function(_0x51d8f4){var _0x4460b2={};_0x4460b2[_0x51d8f4]={'$like':'%'+_0x3659e9[_0xe9de('0x43')]['filter']+'%'};return _0x4460b2;})});}_0x1ca2d2=_[_0xe9de('0x4f')]({},_0x1ca2d2,_0x3659e9[_0xe9de('0x51')]);return db[_0xe9de('0x69')][_0xe9de('0x32')]({'where':_0x1ca2d2[_0xe9de('0x4c')]})['then'](function(_0x400e3d){_0x5a57c4[_0xe9de('0x32')]=_0x400e3d;if(_0x3659e9['query']['includeAll']){_0x1ca2d2[_0xe9de('0x54')]=[{'all':!![]}];}return db[_0xe9de('0x69')]['findAll'](_0x1ca2d2);})[_0xe9de('0x21')](function(_0x4fd993){_0x5a57c4[_0xe9de('0x6a')]=_0x4fd993;return _0x5a57c4;});}})['then'](respondWithFilteredResult(_0x1670aa,_0x1ca2d2))[_0xe9de('0x2a')](handleError(_0x1670aa,null));};exports['removeDispositions']=function(_0x56c4d6,_0x25bce0,_0x3ca556){return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x56c4d6['params']['id']}})['then'](handleEntityNotFound(_0x25bce0,null))['then'](function(_0x50507e){if(_0x50507e){return _0x50507e[_0xe9de('0x6b')](_0x56c4d6[_0xe9de('0x43')][_0xe9de('0x6c')]);}})[_0xe9de('0x21')](respondWithStatusCode(_0x25bce0,null))[_0xe9de('0x2a')](handleError(_0x25bce0,null));};exports[_0xe9de('0x6d')]=function(_0x2d86a5,_0x1a9f02,_0x3d4551){if(_0x2d86a5['body']['id']){delete _0x2d86a5['body']['id'];}return db['WhatsappAccount'][_0xe9de('0x5a')]({'where':{'id':_0x2d86a5['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x1a9f02,null))[_0xe9de('0x21')](function(_0x346d30){if(_0x346d30){_0x2d86a5[_0xe9de('0x5c')]['WhatsappAccountId']=_0x346d30['id'];return db[_0xe9de('0x6e')][_0xe9de('0x5b')](_0x2d86a5['body']);}})['then'](respondWithResult(_0x1a9f02,null))[_0xe9de('0x2a')](handleError(_0x1a9f02,null));};exports[_0xe9de('0x6f')]=function(_0x22a9eb,_0x5b7e11,_0x33ebd5){var _0x5865fb={'raw':![],'where':{}};var _0xa36b5b={};var _0x4704e2={'count':0x0,'rows':[]};return db[_0xe9de('0x52')][_0xe9de('0x68')]({'where':{'id':_0x22a9eb[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x5b7e11,null))[_0xe9de('0x21')](function(_0xe00096){if(_0xe00096){_0xa36b5b['model']=_[_0xe9de('0x59')](db[_0xe9de('0x6e')][_0xe9de('0x3f')]);_0xa36b5b[_0xe9de('0x43')]=_[_0xe9de('0x59')](_0x22a9eb[_0xe9de('0x43')]);_0xa36b5b[_0xe9de('0x44')]=_[_0xe9de('0x45')](_0xa36b5b[_0xe9de('0x42')],_0xa36b5b['query']);_0x5865fb[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0xa36b5b['model'],qs[_0xe9de('0x47')](_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x47')]));_0x5865fb[_0xe9de('0x46')]=_0x5865fb[_0xe9de('0x46')][_0xe9de('0x70')]?_0x5865fb[_0xe9de('0x46')]:_0xa36b5b[_0xe9de('0x42')];if(!_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x48')](_0xe9de('0x49'))){_0x5865fb[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x31')]);_0x5865fb[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x22a9eb['query'][_0xe9de('0x2f')]);}_0x5865fb['order']=qs[_0xe9de('0x4b')](_0x22a9eb[_0xe9de('0x43')]['sort']);_0x5865fb[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_['pick'](_0x22a9eb[_0xe9de('0x43')],_0xa36b5b['filters']));_0x5865fb[_0xe9de('0x4c')][_0xe9de('0x67')]=_0xe00096['id'];if(_0x22a9eb['query']['filter']){_0x5865fb[_0xe9de('0x4c')]=_['merge'](_0x5865fb[_0xe9de('0x4c')],{'$or':_['map'](_0x5865fb[_0xe9de('0x46')],function(_0x593761){var _0x16fc05={};_0x16fc05[_0x593761]={'$like':'%'+_0x22a9eb['query'][_0xe9de('0x4e')]+'%'};return _0x16fc05;})});}_0x5865fb=_[_0xe9de('0x4f')]({},_0x5865fb,_0x22a9eb['options']);return db[_0xe9de('0x6e')][_0xe9de('0x32')]({'where':_0x5865fb[_0xe9de('0x4c')]})[_0xe9de('0x21')](function(_0x4913de){_0x4704e2[_0xe9de('0x32')]=_0x4913de;if(_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x53')]){_0x5865fb[_0xe9de('0x54')]=[{'all':!![]}];}return db[_0xe9de('0x6e')][_0xe9de('0x55')](_0x5865fb);})[_0xe9de('0x21')](function(_0x1366ae){_0x4704e2[_0xe9de('0x6a')]=_0x1366ae;return _0x4704e2;});}})[_0xe9de('0x21')](respondWithFilteredResult(_0x5b7e11,_0x5865fb))[_0xe9de('0x2a')](handleError(_0x5b7e11,null));};exports['removeAnswers']=function(_0x15b849,_0x1325db,_0x39ab5e){return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x15b849[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x1325db,null))[_0xe9de('0x21')](function(_0x5a4305){if(_0x5a4305){return _0x5a4305[_0xe9de('0x71')](_0x15b849[_0xe9de('0x43')][_0xe9de('0x6c')]);}})[_0xe9de('0x21')](respondWithStatusCode(_0x1325db,null))[_0xe9de('0x2a')](handleError(_0x1325db,null));};exports[_0xe9de('0x72')]=function(_0x39bd2c,_0x2ecf64,_0x596596){return db[_0xe9de('0x52')]['find']({'where':{'id':_0x39bd2c[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x2ecf64,null))[_0xe9de('0x21')](function(_0x20e8a1){if(_0x20e8a1){return _0x20e8a1[_0xe9de('0x72')](_0x39bd2c[_0xe9de('0x5c')][_0xe9de('0x6c')],_['omit'](_0x39bd2c['body'],['ids','id'])||{})[_0xe9de('0x73')](function(_0x55adab){for(var _0x37af8e=0x0;_0x37af8e<_0x39bd2c[_0xe9de('0x5c')][_0xe9de('0x6c')][_0xe9de('0x70')];_0x37af8e+=0x1){socket[_0xe9de('0x74')](_0xe9de('0x75'),{'UserId':Number(_0x39bd2c['body'][_0xe9de('0x6c')][_0x37af8e]),'WhatsappAccountId':Number(_0x39bd2c[_0xe9de('0x57')]['id'])});}return _0x55adab;});}})[_0xe9de('0x21')](respondWithResult(_0x2ecf64,null))[_0xe9de('0x2a')](handleError(_0x2ecf64,null));};exports[_0xe9de('0x76')]=function(_0xe7690d,_0x2204d6,_0x305cf0){return db['WhatsappAccount']['find']({'where':{'id':_0xe7690d['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x2204d6,null))[_0xe9de('0x21')](function(_0x4b2a34){if(_0x4b2a34){return _0x4b2a34[_0xe9de('0x76')](_0xe7690d['query'][_0xe9de('0x6c')])[_0xe9de('0x21')](function(){if(_[_0xe9de('0x77')](_0xe7690d[_0xe9de('0x43')][_0xe9de('0x6c')])){for(var _0x56c542=0x0;_0x56c542<_0xe7690d[_0xe9de('0x43')][_0xe9de('0x6c')][_0xe9de('0x70')];_0x56c542+=0x1){socket[_0xe9de('0x74')]('userWhatsappAccount:remove',{'UserId':Number(_0xe7690d['query'][_0xe9de('0x6c')][_0x56c542]),'WhatsappAccountId':Number(_0xe7690d[_0xe9de('0x57')]['id'])});}}else{socket[_0xe9de('0x74')]('userWhatsappAccount:remove',{'UserId':Number(_0xe7690d[_0xe9de('0x43')][_0xe9de('0x6c')]),'WhatsappAccountId':Number(_0xe7690d[_0xe9de('0x57')]['id'])});}});}})[_0xe9de('0x21')](respondWithStatusCode(_0x2204d6,null))['catch'](handleError(_0x2204d6,null));};exports[_0xe9de('0x78')]=function(_0x89536f,_0x3ea531,_0x41bc71){var _0x187b14={};var _0x49d9b4={};var _0xf58473;var _0x3b13d2;return db['WhatsappAccount'][_0xe9de('0x68')]({'where':{'id':_0x89536f['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x3ea531,null))[_0xe9de('0x21')](function(_0x11f4be){if(_0x11f4be){_0xf58473=_0x11f4be;_0x49d9b4[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x79')][_0xe9de('0x3f')]);_0x49d9b4[_0xe9de('0x43')]=_[_0xe9de('0x59')](_0x89536f[_0xe9de('0x43')]);_0x49d9b4['filters']=_[_0xe9de('0x45')](_0x49d9b4['model'],_0x49d9b4[_0xe9de('0x43')]);_0x187b14[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x49d9b4[_0xe9de('0x42')],qs['fields'](_0x89536f[_0xe9de('0x43')][_0xe9de('0x47')]));_0x187b14[_0xe9de('0x46')]=_0x187b14[_0xe9de('0x46')][_0xe9de('0x70')]?_0x187b14[_0xe9de('0x46')]:_0x49d9b4[_0xe9de('0x42')];_0x187b14[_0xe9de('0x4a')]=qs[_0xe9de('0x4b')](_0x89536f['query']['sort']);_0x187b14[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_[_0xe9de('0x4d')](_0x89536f[_0xe9de('0x43')],_0x49d9b4[_0xe9de('0x44')]));if(_0x89536f[_0xe9de('0x43')][_0xe9de('0x4e')]){_0x187b14[_0xe9de('0x4c')]=_[_0xe9de('0x4f')](_0x187b14['where'],{'$or':_[_0xe9de('0x3e')](_0x187b14['attributes'],function(_0x596bb8){var _0xaa6e4e={};_0xaa6e4e[_0x596bb8]={'$like':'%'+_0x89536f[_0xe9de('0x43')][_0xe9de('0x4e')]+'%'};return _0xaa6e4e;})});}_0x187b14=_['merge']({},_0x187b14,_0x89536f[_0xe9de('0x51')]);return _0xf58473[_0xe9de('0x78')](_0x187b14);}})[_0xe9de('0x21')](function(_0xa28aab){if(_0xa28aab){_0x3b13d2=_0xa28aab[_0xe9de('0x70')];if(!_0x89536f['query']['hasOwnProperty'](_0xe9de('0x49'))){_0x187b14['limit']=qs['limit'](_0x89536f['query'][_0xe9de('0x31')]);_0x187b14[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x89536f[_0xe9de('0x43')][_0xe9de('0x2f')]);}return _0xf58473[_0xe9de('0x78')](_0x187b14);}})['then'](function(_0x131e30){if(_0x131e30){return _0x131e30?{'count':_0x3b13d2,'rows':_0x131e30}:null;}})['then'](respondWithResult(_0x3ea531,null))['catch'](handleError(_0x3ea531,null));};exports[_0xe9de('0x7a')]=function(_0x537363,_0x20a65d){var _0x220b08=_0x537363['params']['id'];var _0x2c0532=_0x537363[_0xe9de('0x5c')];var _0x816c18=0xc8;var _0x19f861=null;return db[_0xe9de('0x7b')][_0xe9de('0x7c')]({'isolationLevel':db[_0xe9de('0x7b')]['Transaction'][_0xe9de('0x7d')][_0xe9de('0x7e')]},function(_0x43572b){return db[_0xe9de('0x52')]['findOne']({'where':{'id':_0x220b08},'transaction':_0x43572b})['then'](function(_0x53d34b){if(_0x53d34b){return db['WhatsappApplication'][_0xe9de('0x38')]({'where':{'WhatsappAccountId':_0x220b08},'transaction':_0x43572b})['then'](function(){var _0x496457=_[_0xe9de('0x3e')](_0x2c0532,function(_0x4df6dd){_0x4df6dd[_0xe9de('0x67')]=_0x220b08;return _0x4df6dd;});return db['WhatsappApplication'][_0xe9de('0x7f')](_0x496457,{'transaction':_0x43572b});});}else{_0x816c18=0x194;_0x19f861=[];}});})[_0xe9de('0x21')](function(){if(_0x816c18!==0x194){return db[_0xe9de('0x80')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x220b08},'order':_0xe9de('0x81')})['then'](function(_0x4ab0e8){_0x19f861=_0x4ab0e8;});}})[_0xe9de('0x2a')](function(_0x51b551){_0x816c18=0x1f4;logger[_0xe9de('0x27')](_0x51b551[_0xe9de('0x3a')]);if(_0x51b551[_0xe9de('0x3b')]){delete _0x51b551[_0xe9de('0x3b')];}_0x19f861=_0x51b551;})[_0xe9de('0x82')](function(){if(_0x19f861===null){_0x20a65d[_0xe9de('0x2b')](_0x816c18);}else{if(_0x816c18===0x1f4){_0x20a65d[_0xe9de('0x2c')](_0x816c18)[_0xe9de('0x83')](_0x19f861);}else{_0x20a65d[_0xe9de('0x2c')](_0x816c18)['json'](_0x19f861);}}});};exports['getApplications']=function(_0x57f9e8,_0x319e1e,_0x2fd9ca){var _0x90fcd5={};var _0x3fd9ee={};var _0x1e5008;var _0x289c5a;return db['WhatsappAccount'][_0xe9de('0x68')]({'where':{'id':_0x57f9e8['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x319e1e,null))[_0xe9de('0x21')](function(_0x6c40be){if(_0x6c40be){_0x1e5008=_0x6c40be;_0x3fd9ee[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x80')][_0xe9de('0x3f')]);_0x3fd9ee[_0xe9de('0x43')]=_['keys'](_0x57f9e8[_0xe9de('0x43')]);_0x3fd9ee[_0xe9de('0x44')]=_['intersection'](_0x3fd9ee[_0xe9de('0x42')],_0x3fd9ee['query']);_0x90fcd5[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x3fd9ee['model'],qs['fields'](_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x47')]));_0x90fcd5[_0xe9de('0x46')]=_0x90fcd5[_0xe9de('0x46')][_0xe9de('0x70')]?_0x90fcd5[_0xe9de('0x46')]:_0x3fd9ee[_0xe9de('0x42')];_0x90fcd5[_0xe9de('0x4a')]=qs[_0xe9de('0x4b')](_0x57f9e8['query'][_0xe9de('0x4b')]);_0x90fcd5[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_[_0xe9de('0x4d')](_0x57f9e8['query'],_0x3fd9ee[_0xe9de('0x44')]));if(_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x4e')]){_0x90fcd5[_0xe9de('0x4c')]=_['merge'](_0x90fcd5['where'],{'$or':_[_0xe9de('0x3e')](_0x90fcd5[_0xe9de('0x46')],function(_0x5e8e34){var _0x2a7dfa={};_0x2a7dfa[_0x5e8e34]={'$like':'%'+_0x57f9e8['query'][_0xe9de('0x4e')]+'%'};return _0x2a7dfa;})});}_0x90fcd5=_[_0xe9de('0x4f')]({},_0x90fcd5,_0x57f9e8[_0xe9de('0x51')]);return _0x1e5008[_0xe9de('0x84')](_0x90fcd5);}})[_0xe9de('0x21')](function(_0x7e0fa7){if(_0x7e0fa7){_0x289c5a=_0x7e0fa7[_0xe9de('0x70')];if(!_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x48')]('nolimit')){_0x90fcd5[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x31')]);_0x90fcd5[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x57f9e8['query'][_0xe9de('0x2f')]);}return _0x1e5008[_0xe9de('0x84')](_0x90fcd5);}})[_0xe9de('0x21')](function(_0x40b2b5){if(_0x40b2b5){return _0x40b2b5?{'count':_0x289c5a,'rows':_0x40b2b5}:null;}})[_0xe9de('0x21')](respondWithResult(_0x319e1e,null))[_0xe9de('0x2a')](handleError(_0x319e1e,null));};exports[_0xe9de('0x85')]=function(_0x249dd1,_0x1f15f7,_0x2b8cfe){var _0x4f3a31={'channel':'whatsapp'};var _0x106ae3=[];var _0x5c88f3=[];var _0x4124ad={};return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x249dd1[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0x80')],'as':_0xe9de('0x86')}]})['then'](handleEntityNotFound(_0x1f15f7,null))[_0xe9de('0x21')](function(_0x20aa69){_0x4f3a31[_0xe9de('0x87')]=_0x20aa69;if(_0x4f3a31[_0xe9de('0x87')]&&_0x4f3a31['account'][_0xe9de('0x88')]==='sinch'&&_0x249dd1['body'][_0xe9de('0x89')]){if(_0x249dd1[_0xe9de('0x5c')][_0xe9de('0x89')]['length']===0x0)return;if(_0x249dd1['body'][_0xe9de('0x89')][0x0]['state']!=='read')return;return db[_0xe9de('0x8a')]['update']({'read':!![],'readAt':_0x249dd1['body'][_0xe9de('0x89')][0x0]['timestamp']},{'where':{'messageId':_0x249dd1['body']['statuses'][0x0][_0xe9de('0x8b')]},'individualHooks':!![]})[_0xe9de('0x21')](function(_0x38e957){return _0x1f15f7[_0xe9de('0x2c')](0xc8)[_0xe9de('0x2e')](_0x38e957);});}_0x4f3a31[_0xe9de('0x8c')]=_['orderBy'](_0x20aa69['Applications'],['priority'],[_0xe9de('0x8d')]);if(_0x4f3a31[_0xe9de('0x87')]['Applications']){delete _0x4f3a31[_0xe9de('0x87')][_0xe9de('0x86')];}return db[_0xe9de('0x8e')][_0xe9de('0x65')]()['then'](function(_0x1b8c22){if(!_0x1b8c22){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0x91'));}_0x106ae3=_[_0xe9de('0x92')](_['keys'](_0x1b8c22),[_0xe9de('0x93'),_0xe9de('0x94')]);_0x5c88f3=_[_0xe9de('0x92')](_[_0xe9de('0x59')](_0x1b8c22),[_0xe9de('0x93'),_0xe9de('0x94'),_0xe9de('0x95'),_0xe9de('0x96')]);_0x4f3a31[_0xe9de('0x5c')]={'mapKey':_0xe9de('0x97')};if(_0x4f3a31['account']&&_0x4f3a31['account'][_0xe9de('0x88')]===_0xe9de('0x98')){_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')]=_0x249dd1['body'][_0xe9de('0x9a')][_0xe9de('0x9b')](_0xe9de('0x9c'),'');_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x5c')]=_0x249dd1[_0xe9de('0x5c')][_0xe9de('0x9d')];_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x9e')]=_0x249dd1['body'][_0xe9de('0x9f')];}if(_0x4f3a31['account']&&_0x4f3a31['account'][_0xe9de('0x88')]===_0xe9de('0xa0')){_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')]=_0x249dd1['body'][_0xe9de('0xa1')][0x0]['from'];_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x5c')]=_0x249dd1[_0xe9de('0x5c')][_0xe9de('0xa1')][0x0][_0xe9de('0x28')][_0xe9de('0x5c')];_0x4f3a31[_0xe9de('0x5c')]['messageId']=_0x249dd1[_0xe9de('0x5c')][_0xe9de('0xa1')][0x0][_0xe9de('0x8b')];}if(_0x4f3a31[_0xe9de('0x5c')]['id']){delete _0x4f3a31[_0xe9de('0x5c')]['id'];}if(_['isNil'](_0x4f3a31['body'][_0xe9de('0x99')])){throw new db[(_0xe9de('0x8f'))]['ValidationError'](_0xe9de('0xa2'));}if(_[_0xe9de('0xa3')](_0x4f3a31[_0xe9de('0x5c')]['body'])||_0x4f3a31['body'][_0xe9de('0x5c')]===''){throw new db[(_0xe9de('0x8f'))]['ValidationError'](_0xe9de('0xa4'));}if(_[_0xe9de('0xa3')](_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xa5')])){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0xa6')+_0x5c88f3);}if(!_[_0xe9de('0xa7')](_0x5c88f3,_0x4f3a31[_0xe9de('0x5c')]['mapKey'])){throw new db['Sequelize'][(_0xe9de('0x90'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5c88f3);}_0x4124ad[_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xa5')]]=_0x4f3a31['body'][_0xe9de('0x99')];return db[_0xe9de('0xa8')]['find']({'where':{'id':_0x4f3a31[_0xe9de('0x87')][_0xe9de('0x96')]},'include':[{'model':db[_0xe9de('0x8e')],'as':'Contacts','where':_0x4124ad,'limit':0x1,'order':[[_0xe9de('0x94'),'DESC']]}]});})[_0xe9de('0x21')](handleEntityNotFound(_0x1f15f7,null))[_0xe9de('0x21')](function(_0x447c64){if(_0x447c64){_0x4f3a31['list']=_[_0xe9de('0xa9')](_0x447c64,[_0xe9de('0xaa')]);if(_0x447c64[_0xe9de('0xaa')][_0xe9de('0x70')]){return _0x447c64[_0xe9de('0xaa')][0x0];}var _0x56d35b=_[_0xe9de('0x1a')](_0x4f3a31[_0xe9de('0x5c')],{'firstName':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')],'ListId':_0x447c64['id']});_0x56d35b[_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xa5')]]=_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')];return db[_0xe9de('0x8e')]['create'](_0x56d35b,{'fields':_0x106ae3,'raw':!![]});}})[_0xe9de('0x21')](handleEntityNotFound(_0x1f15f7,null))['then'](function(_0x1305f6){if(_0x1305f6){_0x4f3a31['contact']=_0x1305f6;var _0x5cef4c={'ContactId':_0x1305f6['id'],'phone':_0x4f3a31[_0xe9de('0x5c')]['from'],'WhatsappAccountId':_0x249dd1[_0xe9de('0x57')]['id']};var _0x2d7e7a={'ContactId':_0x1305f6['id'],'WhatsappAccountId':_0x249dd1['params']['id'],'closed':![]};return db[_0xe9de('0xab')][_0xe9de('0x5a')]({'where':_0x2d7e7a})[_0xe9de('0x21')](function(_0x1ecbd0){if(_0x1ecbd0){return[_0x1ecbd0,![]];}return db[_0xe9de('0xab')][_0xe9de('0x5b')](_0x5cef4c)[_0xe9de('0x21')](function(_0x526588){return[_0x526588,!![]];});});}})[_0xe9de('0x73')](function(_0x16b3c9,_0x25795b){_0x4f3a31[_0xe9de('0xac')]=_0x16b3c9[_0xe9de('0x5e')]({'plain':!![]});_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xad')]=![];if(_0x25795b){if(_0x4f3a31['account'][_0xe9de('0xae')]){_0x4f3a31[_0xe9de('0x8c')][_0xe9de('0xaf')]({'id':0x0,'priority':_0x4f3a31[_0xe9de('0x8c')]['length']+0x1,'app':_0xe9de('0xb0'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xad')]=!![];}return db['WhatsappMessage'][_0xe9de('0x5b')]({'phone':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')],'messageId':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x9e')],'body':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x5c')],'WhatsappAccountId':_0x249dd1['params']['id'],'WhatsappInteractionId':_0x16b3c9['id'],'direction':'in','ContactId':_0x16b3c9[_0xe9de('0xb1')],'AttachmentId':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xb2')]});})['then'](function(_0x1a9364){_0x4f3a31[_0xe9de('0x28')]=_0x1a9364;if(_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xb3')]){return db[_0xe9de('0x79')][_0xe9de('0x5a')]({'attributes':['id','name'],'where':{'id':_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xb3')]}})['then'](function(_0x4176a6){if(_0x4176a6){_0x4f3a31[_0xe9de('0x8c')][_0xe9de('0xb4')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4176a6['name']+','+(_0x4f3a31['account']['waitForTheAssignedAgent']||0xa),'interval':_0xe9de('0xb5')});}return respondWithRpcPromise('Start','startRouting',_0x4f3a31);});}return respondWithRpcPromise(_0xe9de('0xb6'),_0xe9de('0xb7'),_0x4f3a31);})[_0xe9de('0x21')](function(_0x4f9baa){if(_0x4f9baa){var _0x1bdabc=0xc8;var _0x539040=_0xe9de('0xb8');logger[_0xe9de('0x22')](_0xe9de('0xb9'),_0x539040,_0x1bdabc,_0xe9de('0xba'));logger[_0xe9de('0x25')](_0xe9de('0xbb'),_0x539040,_0x1bdabc,'entity\x20found',JSON[_0xe9de('0x26')](_0x4f9baa));if(_0x4f3a31['account'][_0xe9de('0x88')]===_0xe9de('0x98')){return _0x1f15f7[_0xe9de('0x2c')](_0x1bdabc)['set']('Content-Type',_0xe9de('0xbc'))[_0xe9de('0x83')](_0xe9de('0xbd'));}else{return _0x1f15f7[_0xe9de('0x2c')](_0x1bdabc)[_0xe9de('0x2e')](_0x4f9baa);}}});})[_0xe9de('0x2a')](handleError(_0x1f15f7,null));};exports[_0xe9de('0x83')]=function(_0x2b5a0f,_0x55f2cc,_0x3d9155){var _0xf7035f,_0x75695d,_0xf79882;if(_[_0xe9de('0xa3')](_0x2b5a0f[_0xe9de('0x5c')][_0xe9de('0x5c')])||_0x2b5a0f[_0xe9de('0x5c')][_0xe9de('0x5c')]===''){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0xa4'));}if(_[_0xe9de('0xa3')](_0x2b5a0f[_0xe9de('0x5c')]['to'])){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0xbe'));}_0xf7035f=_0x2b5a0f[_0xe9de('0x5c')]['to'];return db['WhatsappAccount'][_0xe9de('0x5a')]({'where':{'id':_0x2b5a0f[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0xa8')],'as':_0xe9de('0xbf'),'include':[{'model':db['CmContact'],'as':_0xe9de('0xaa'),'where':{'mobile':_0xf7035f},'limit':0x1,'order':[['updatedAt',_0xe9de('0xc0')]]}]}]})[_0xe9de('0x21')](handleEntityNotFound(_0x55f2cc,null))[_0xe9de('0x21')](function(_0x114446){if(_0x114446&&_0x114446[_0xe9de('0xbf')]){_0x75695d=_0x114446[_0xe9de('0x5e')]({'plain':!![]});if(_0x75695d[_0xe9de('0xbf')]&&_0x75695d[_0xe9de('0xbf')]['Contacts']['length']){return _0x75695d['List']['Contacts'][0x0];}return db['CmContact'][_0xe9de('0x5b')](_[_0xe9de('0x1a')](_0x2b5a0f[_0xe9de('0x5c')],{'firstName':_0xf7035f,'mobile':_0xf7035f,'phone':_0xf7035f,'ListId':_0x75695d[_0xe9de('0x96')]}));}})['then'](handleEntityNotFound(_0x55f2cc,null))[_0xe9de('0x21')](function(_0x59a99a){if(_0x59a99a){_0xf79882=_0x59a99a;return db[_0xe9de('0xab')][_0xe9de('0x5a')]({'where':{'ContactId':_0xf79882['id'],'closed':![],'WhatsappAccountId':_0x75695d['id']}})[_0xe9de('0x21')](function(_0x16f098){if(_0x16f098){return[_0x16f098,![]];}return db[_0xe9de('0xab')]['create']({'UserId':_0x2b5a0f[_0xe9de('0x5d')]['id'],'ContactId':_0xf79882['id'],'WhatsappAccountId':_0x75695d['id'],'phone':_0xf7035f,'firstMsgDirection':_0xe9de('0xc1'),'Messages':[_[_0xe9de('0x4f')](_0x2b5a0f[_0xe9de('0x5c')],{'read':![],'body':_0x2b5a0f[_0xe9de('0x5c')][_0xe9de('0x5c')],'phone':_0xf7035f,'WhatsappAccountId':_0x75695d['id'],'UserId':_0x2b5a0f[_0xe9de('0x5d')]['id'],'ContactId':_0xf79882['id']})]},{'include':[{'model':db[_0xe9de('0x8a')],'as':'Messages'}]})[_0xe9de('0x21')](function(_0x3a854c){return[_0x3a854c,!![]];});});}})['spread'](function(_0xaceec7,_0x1d3005){if(_0x1d3005){return _0xaceec7;}return db['WhatsappMessage'][_0xe9de('0x5b')](_['merge'](_0x2b5a0f[_0xe9de('0x5c')],{'read':![],'body':_0x2b5a0f['body'][_0xe9de('0x5c')],'phone':_0xf7035f,'WhatsappAccountId':_0x75695d['id'],'WhatsappInteractionId':_0xaceec7['id'],'UserId':_0x2b5a0f[_0xe9de('0x5d')]['id'],'ContactId':_0xf79882['id']}))[_0xe9de('0x21')](function(_0x19f98d){_0xaceec7[_0xe9de('0xc2')][_0xe9de('0xc3')]=[];_0xaceec7[_0xe9de('0xc2')]['Messages']['push'](_0x19f98d['dataValues']);return _0xaceec7;});})[_0xe9de('0x21')](respondWithResult(_0x55f2cc,null))[_0xe9de('0x2a')](handleError(_0x55f2cc,null));};
\ No newline at end of file
+var _0xa045=['receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','out','Messages','dataValues','push','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','get','WhatsappAccounts','destroy','stack','name','send','index','Pause','mandatoryDispositionPause','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','WhatsappAccount','findAll','show','includeAll','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','Disposition','getDispositions','findOne','WhatsappAccountId','removeDispositions','ids','CannedAnswer','getAnswers','rows','removeAnswers','addAgents','emit','userWhatsappAccount:save','removeAgents','getAgents','User','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','WhatsappApplication','priority','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','read','timestamp','message_id','applications','CmContact','difference','createdAt','updatedAt','CompanyId','mobile','from','From','replace','notifications','messageId','isNil','ValidationError','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','DESC','list','omit','contact','WhatsappInteraction','spread','interaction','created','autoclose','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','agent','Start','startRouting'];(function(_0x293499,_0x191b00){var _0x4a0fa7=function(_0x85aee2){while(--_0x85aee2){_0x293499['push'](_0x293499['shift']());}};_0x4a0fa7(++_0x191b00);}(_0xa045,0xd4));var _0x5a04=function(_0x479293,_0x25bba7){_0x479293=_0x479293-0x0;var _0x4aebe4=_0xa045[_0x479293];return _0x4aebe4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5a04('0x0'));var zipdir=require(_0x5a04('0x1'));var jsonpatch=require(_0x5a04('0x2'));var rp=require('request-promise');var moment=require(_0x5a04('0x3'));var BPromise=require(_0x5a04('0x4'));var Mustache=require(_0x5a04('0x5'));var util=require(_0x5a04('0x6'));var path=require(_0x5a04('0x7'));var sox=require('sox');var csv=require(_0x5a04('0x8'));var ejs=require(_0x5a04('0x9'));var fs=require('fs');var fs_extra=require(_0x5a04('0xa'));var _=require(_0x5a04('0xb'));var squel=require(_0x5a04('0xc'));var crypto=require(_0x5a04('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5a04('0xe'));var toCsv=require(_0x5a04('0x8'));var querystring=require(_0x5a04('0xf'));var Papa=require(_0x5a04('0x10'));var Redis=require(_0x5a04('0x11'));var authService=require(_0x5a04('0x12'));var qs=require(_0x5a04('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5a04('0x14'));var logger=require(_0x5a04('0x15'))(_0x5a04('0x16'));var utils=require(_0x5a04('0x17'));var config=require(_0x5a04('0x18'));var licenseUtil=require(_0x5a04('0x19'));var db=require(_0x5a04('0x1a'))['db'];config[_0x5a04('0x1b')]=_[_0x5a04('0x1c')](config[_0x5a04('0x1b')],{'host':_0x5a04('0x1d'),'port':0x18eb});var socket=require(_0x5a04('0x1e'))(new Redis(config[_0x5a04('0x1b')]));require(_0x5a04('0x1f'))[_0x5a04('0x20')](socket);var jayson=require(_0x5a04('0x21'));var client=jayson[_0x5a04('0x22')][_0x5a04('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x15d671,_0x3e1aa9,_0x2bde7d,_0x46a047){return new BPromise(function(_0x2af696,_0x2ec896){var _0x525c3f=_0x46a047||client;return _0x525c3f[_0x5a04('0x24')](_0x15d671,_0x2bde7d)[_0x5a04('0x25')](function(_0x5a08e9){logger[_0x5a04('0x26')](_0x5a04('0x27'),_0x3e1aa9,_0x5a04('0x28'));logger[_0x5a04('0x29')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x3e1aa9,_0x5a04('0x28'),JSON[_0x5a04('0x2a')](_0x5a08e9));if(_0x5a08e9[_0x5a04('0x2b')]){if(_0x5a08e9[_0x5a04('0x2b')][_0x5a04('0x2c')]===0x1f4){logger['error'](_0x5a04('0x27'),_0x3e1aa9,_0x5a08e9[_0x5a04('0x2b')]['message']);return _0x2ec896(_0x5a08e9['error'][_0x5a04('0x2d')]);}logger[_0x5a04('0x2b')](_0x5a04('0x27'),_0x3e1aa9,_0x5a08e9[_0x5a04('0x2b')][_0x5a04('0x2d')]);return _0x2af696(_0x5a08e9[_0x5a04('0x2b')][_0x5a04('0x2d')]);}else{logger[_0x5a04('0x26')](_0x5a04('0x27'),_0x3e1aa9,_0x5a04('0x28'));_0x2af696(_0x5a08e9[_0x5a04('0x2e')][_0x5a04('0x2d')]);}})[_0x5a04('0x2f')](function(_0x13ab04){logger[_0x5a04('0x2b')](_0x5a04('0x27'),_0x3e1aa9,_0x13ab04);_0x2ec896(_0x13ab04);});});}function respondWithStatusCode(_0x378460,_0x2716bf){_0x2716bf=_0x2716bf||0xcc;return function(_0x11239c){if(_0x11239c){return _0x378460[_0x5a04('0x30')](_0x2716bf);}return _0x378460[_0x5a04('0x31')](_0x2716bf)[_0x5a04('0x32')]();};}function respondWithResult(_0x5aab33,_0x40ca21){_0x40ca21=_0x40ca21||0xc8;return function(_0x388dbc){if(_0x388dbc){return _0x5aab33['status'](_0x40ca21)[_0x5a04('0x33')](_0x388dbc);}};}function respondWithFilteredResult(_0x14ee2b,_0xec6537){return function(_0x1e9baf){if(_0x1e9baf){var _0x481d46=typeof _0xec6537['offset']===_0x5a04('0x34')&&typeof _0xec6537[_0x5a04('0x35')]==='undefined';var _0x2a8a35=_0x1e9baf[_0x5a04('0x36')];var _0x3ebf19=_0x481d46?0x0:_0xec6537[_0x5a04('0x37')];var _0x16c710=_0x481d46?_0x1e9baf['count']:_0xec6537[_0x5a04('0x37')]+_0xec6537[_0x5a04('0x35')];var _0x3c852e;if(_0x16c710>=_0x2a8a35){_0x16c710=_0x2a8a35;_0x3c852e=0xc8;}else{_0x3c852e=0xce;}_0x14ee2b[_0x5a04('0x31')](_0x3c852e);return _0x14ee2b[_0x5a04('0x38')](_0x5a04('0x39'),_0x3ebf19+'-'+_0x16c710+'/'+_0x2a8a35)[_0x5a04('0x33')](_0x1e9baf);}return null;};}function patchUpdates(_0x88eac3){return function(_0xfd2de7){try{jsonpatch[_0x5a04('0x3a')](_0xfd2de7,_0x88eac3,!![]);}catch(_0x3805aa){return BPromise[_0x5a04('0x3b')](_0x3805aa);}return _0xfd2de7[_0x5a04('0x3c')]();};}function saveUpdates(_0x3a406f,_0x55e3b2){return function(_0x5055e4){if(_0x5055e4){return _0x5055e4[_0x5a04('0x3d')](_0x3a406f)[_0x5a04('0x25')](function(_0x1c3ddb){return _0x1c3ddb;});}return null;};}function removeEntity(_0x1145e2,_0x2779ba){return function(_0x5463c8){if(_0x5463c8){return _0x5463c8['destroy']()['then'](function(){var _0x10e128=_0x5463c8[_0x5a04('0x3e')]({'plain':!![]});var _0x2e15ea=_0x5a04('0x3f');return db['UserProfileResource'][_0x5a04('0x40')]({'where':{'type':_0x2e15ea,'resourceId':_0x10e128['id']}})[_0x5a04('0x25')](function(){return _0x5463c8;});})['then'](function(){_0x1145e2[_0x5a04('0x31')](0xcc)[_0x5a04('0x32')]();});}};}function handleEntityNotFound(_0x43281e,_0x4b9fa3){return function(_0x1a1fab){if(!_0x1a1fab){_0x43281e[_0x5a04('0x30')](0x194);}return _0x1a1fab;};}function handleError(_0x10bfa0,_0x2f55cc){_0x2f55cc=_0x2f55cc||0x1f4;return function(_0x4a6911){logger[_0x5a04('0x2b')](_0x4a6911[_0x5a04('0x41')]);if(_0x4a6911[_0x5a04('0x42')]){delete _0x4a6911['name'];}_0x10bfa0[_0x5a04('0x31')](_0x2f55cc)[_0x5a04('0x43')](_0x4a6911);};}exports[_0x5a04('0x44')]=function(_0x409d21,_0x22ec06){var _0x1690ee={'include':[{'model':db[_0x5a04('0x45')],'as':_0x5a04('0x46')}]},_0x5f35ec={},_0x53b6d1={'count':0x0,'rows':[]};var _0xd25bbd=_['map'](db['WhatsappAccount'][_0x5a04('0x47')],function(_0x181376){return{'name':_0x181376[_0x5a04('0x48')],'type':_0x181376[_0x5a04('0x49')][_0x5a04('0x4a')]};});_0x5f35ec['model']=_[_0x5a04('0x4b')](_0xd25bbd,_0x5a04('0x42'));_0x5f35ec[_0x5a04('0x4c')]=_[_0x5a04('0x4d')](_0x409d21[_0x5a04('0x4c')]);_0x5f35ec[_0x5a04('0x4e')]=_[_0x5a04('0x4f')](_0x5f35ec[_0x5a04('0x50')],_0x5f35ec[_0x5a04('0x4c')]);_0x1690ee['attributes']=_[_0x5a04('0x4f')](_0x5f35ec[_0x5a04('0x50')],qs[_0x5a04('0x51')](_0x409d21[_0x5a04('0x4c')][_0x5a04('0x51')]));_0x1690ee[_0x5a04('0x52')]=_0x1690ee[_0x5a04('0x52')][_0x5a04('0x53')]?_0x1690ee[_0x5a04('0x52')]:_0x5f35ec[_0x5a04('0x50')];if(!_0x409d21['query'][_0x5a04('0x54')](_0x5a04('0x55'))){_0x1690ee[_0x5a04('0x35')]=qs[_0x5a04('0x35')](_0x409d21['query'][_0x5a04('0x35')]);_0x1690ee[_0x5a04('0x37')]=qs[_0x5a04('0x37')](_0x409d21[_0x5a04('0x4c')][_0x5a04('0x37')]);}_0x1690ee[_0x5a04('0x56')]=qs[_0x5a04('0x57')](_0x409d21[_0x5a04('0x4c')][_0x5a04('0x57')]);_0x1690ee[_0x5a04('0x58')]=qs['filters'](_[_0x5a04('0x59')](_0x409d21[_0x5a04('0x4c')],_0x5f35ec[_0x5a04('0x4e')]),_0xd25bbd);if(_0x409d21[_0x5a04('0x4c')][_0x5a04('0x5a')]){_0x1690ee[_0x5a04('0x58')]=_[_0x5a04('0x5b')](_0x1690ee[_0x5a04('0x58')],{'$or':_[_0x5a04('0x4b')](_0xd25bbd,function(_0x2b5363){if(_0x2b5363[_0x5a04('0x49')]!=='VIRTUAL'){var _0x5daba2={};_0x5daba2[_0x2b5363[_0x5a04('0x42')]]={'$like':'%'+_0x409d21[_0x5a04('0x4c')][_0x5a04('0x5a')]+'%'};return _0x5daba2;}})});}_0x1690ee=_[_0x5a04('0x5b')]({},_0x1690ee,_0x409d21[_0x5a04('0x5c')]);var _0x4c50b5={'where':_0x1690ee[_0x5a04('0x58')]};return db['WhatsappAccount'][_0x5a04('0x36')](_0x4c50b5)[_0x5a04('0x25')](function(_0x474d22){_0x53b6d1[_0x5a04('0x36')]=_0x474d22;if(_0x409d21['query']['includeAll']){_0x1690ee['include']=[{'all':!![]}];}return db[_0x5a04('0x5d')][_0x5a04('0x5e')](_0x1690ee);})[_0x5a04('0x25')](function(_0x34e805){_0x53b6d1['rows']=_0x34e805;return _0x53b6d1;})[_0x5a04('0x25')](respondWithFilteredResult(_0x22ec06,_0x1690ee))[_0x5a04('0x2f')](handleError(_0x22ec06,null));};exports[_0x5a04('0x5f')]=function(_0x546fc6,_0x438fb7){var _0xb6aab8={'raw':![],'where':{'id':_0x546fc6['params']['id']},'include':[{'model':db['Pause'],'as':_0x5a04('0x46')}]},_0x4ecbdf={};_0x4ecbdf[_0x5a04('0x50')]=_['keys'](db[_0x5a04('0x5d')]['rawAttributes']);_0x4ecbdf[_0x5a04('0x4c')]=_['keys'](_0x546fc6[_0x5a04('0x4c')]);_0x4ecbdf['filters']=_['intersection'](_0x4ecbdf[_0x5a04('0x50')],_0x4ecbdf[_0x5a04('0x4c')]);_0xb6aab8['attributes']=_['intersection'](_0x4ecbdf[_0x5a04('0x50')],qs[_0x5a04('0x51')](_0x546fc6['query'][_0x5a04('0x51')]));_0xb6aab8['attributes']=_0xb6aab8['attributes'][_0x5a04('0x53')]?_0xb6aab8[_0x5a04('0x52')]:_0x4ecbdf[_0x5a04('0x50')];if(_0x546fc6[_0x5a04('0x4c')][_0x5a04('0x60')]){_0xb6aab8[_0x5a04('0x61')]=[{'all':!![]}];}_0xb6aab8=_['merge']({},_0xb6aab8,_0x546fc6['options']);return db['WhatsappAccount'][_0x5a04('0x62')](_0xb6aab8)[_0x5a04('0x25')](handleEntityNotFound(_0x438fb7,null))['then'](respondWithResult(_0x438fb7,null))[_0x5a04('0x2f')](handleError(_0x438fb7,null));};exports['create']=function(_0x596cac,_0xad903a){return db[_0x5a04('0x5d')][_0x5a04('0x63')](_0x596cac[_0x5a04('0x64')],{})[_0x5a04('0x25')](function(_0x45bfc8){var _0x3955e5=_0x596cac['user'][_0x5a04('0x3e')]({'plain':!![]});if(!_0x3955e5)throw new Error(_0x5a04('0x65'));if(_0x3955e5[_0x5a04('0x66')]===_0x5a04('0x67')){var _0x49d343=_0x45bfc8[_0x5a04('0x3e')]({'plain':!![]});var _0x272772=_0x5a04('0x3f');return db['UserProfileSection'][_0x5a04('0x62')]({'where':{'name':_0x272772,'userProfileId':_0x3955e5['userProfileId']},'raw':!![]})[_0x5a04('0x25')](function(_0x59cf78){if(_0x59cf78&&_0x59cf78['autoAssociation']===0x0){return db[_0x5a04('0x68')][_0x5a04('0x63')]({'name':_0x49d343[_0x5a04('0x42')],'resourceId':_0x49d343['id'],'type':_0x59cf78[_0x5a04('0x42')],'sectionId':_0x59cf78['id']},{})[_0x5a04('0x25')](function(){return _0x45bfc8;});}else{return _0x45bfc8;}})[_0x5a04('0x2f')](function(_0xfe6a13){logger[_0x5a04('0x2b')](_0x5a04('0x69'),_0xfe6a13);throw _0xfe6a13;});}return _0x45bfc8;})[_0x5a04('0x25')](respondWithResult(_0xad903a,0xc9))[_0x5a04('0x2f')](handleError(_0xad903a,null));};exports['update']=function(_0x2bcbc1,_0x5b2ee1){if(_0x2bcbc1['body']['id']){delete _0x2bcbc1[_0x5a04('0x64')]['id'];}return db[_0x5a04('0x5d')]['find']({'where':{'id':_0x2bcbc1[_0x5a04('0x6a')]['id']},'include':[{'model':db[_0x5a04('0x45')],'as':_0x5a04('0x46')}]})[_0x5a04('0x25')](handleEntityNotFound(_0x5b2ee1,null))[_0x5a04('0x25')](saveUpdates(_0x2bcbc1['body'],null))[_0x5a04('0x25')](respondWithResult(_0x5b2ee1,null))['catch'](handleError(_0x5b2ee1,null));};exports['destroy']=function(_0x3babba,_0xa1ad89){return db[_0x5a04('0x5d')]['find']({'where':{'id':_0x3babba[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0xa1ad89,null))['then'](removeEntity(_0xa1ad89,null))[_0x5a04('0x2f')](handleError(_0xa1ad89,null));};exports['describe']=function(_0xccdbc7,_0x1dae23){return db['WhatsappAccount'][_0x5a04('0x6b')]()[_0x5a04('0x25')](respondWithResult(_0x1dae23,null))[_0x5a04('0x2f')](handleError(_0x1dae23,null));};exports[_0x5a04('0x6c')]=function(_0x1f4ede,_0x363ffc,_0x314a99){if(_0x1f4ede[_0x5a04('0x64')]['id']){delete _0x1f4ede[_0x5a04('0x64')]['id'];}return db[_0x5a04('0x5d')][_0x5a04('0x62')]({'where':{'id':_0x1f4ede[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0x363ffc,null))[_0x5a04('0x25')](function(_0x33435f){if(_0x33435f){_0x1f4ede['body']['WhatsappAccountId']=_0x33435f['id'];return db[_0x5a04('0x6d')][_0x5a04('0x63')](_0x1f4ede[_0x5a04('0x64')]);}})[_0x5a04('0x25')](respondWithResult(_0x363ffc,null))[_0x5a04('0x2f')](handleError(_0x363ffc,null));};exports[_0x5a04('0x6e')]=function(_0x5ee516,_0x28034c,_0x27ec1e){var _0x2011dc={'raw':![],'where':{}};var _0x633981={};var _0x197d72={'count':0x0,'rows':[]};return db[_0x5a04('0x5d')][_0x5a04('0x6f')]({'where':{'id':_0x5ee516[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0x28034c,null))[_0x5a04('0x25')](function(_0x4547cd){if(_0x4547cd){_0x633981[_0x5a04('0x50')]=_['keys'](db['Disposition'][_0x5a04('0x47')]);_0x633981[_0x5a04('0x4c')]=_[_0x5a04('0x4d')](_0x5ee516[_0x5a04('0x4c')]);_0x633981['filters']=_['intersection'](_0x633981[_0x5a04('0x50')],_0x633981['query']);_0x2011dc[_0x5a04('0x52')]=_[_0x5a04('0x4f')](_0x633981[_0x5a04('0x50')],qs['fields'](_0x5ee516['query'][_0x5a04('0x51')]));_0x2011dc[_0x5a04('0x52')]=_0x2011dc[_0x5a04('0x52')][_0x5a04('0x53')]?_0x2011dc['attributes']:_0x633981[_0x5a04('0x50')];if(!_0x5ee516[_0x5a04('0x4c')][_0x5a04('0x54')](_0x5a04('0x55'))){_0x2011dc['limit']=qs[_0x5a04('0x35')](_0x5ee516[_0x5a04('0x4c')]['limit']);_0x2011dc['offset']=qs[_0x5a04('0x37')](_0x5ee516['query'][_0x5a04('0x37')]);}_0x2011dc['order']=qs[_0x5a04('0x57')](_0x5ee516['query'][_0x5a04('0x57')]);_0x2011dc[_0x5a04('0x58')]=qs[_0x5a04('0x4e')](_[_0x5a04('0x59')](_0x5ee516[_0x5a04('0x4c')],_0x633981[_0x5a04('0x4e')]));_0x2011dc['where'][_0x5a04('0x70')]=_0x4547cd['id'];if(_0x5ee516[_0x5a04('0x4c')][_0x5a04('0x5a')]){_0x2011dc[_0x5a04('0x58')]=_[_0x5a04('0x5b')](_0x2011dc['where'],{'$or':_[_0x5a04('0x4b')](_0x2011dc[_0x5a04('0x52')],function(_0x34fc19){var _0x556eb6={};_0x556eb6[_0x34fc19]={'$like':'%'+_0x5ee516[_0x5a04('0x4c')][_0x5a04('0x5a')]+'%'};return _0x556eb6;})});}_0x2011dc=_[_0x5a04('0x5b')]({},_0x2011dc,_0x5ee516[_0x5a04('0x5c')]);return db[_0x5a04('0x6d')][_0x5a04('0x36')]({'where':_0x2011dc['where']})[_0x5a04('0x25')](function(_0x39da2d){_0x197d72['count']=_0x39da2d;if(_0x5ee516[_0x5a04('0x4c')][_0x5a04('0x60')]){_0x2011dc[_0x5a04('0x61')]=[{'all':!![]}];}return db[_0x5a04('0x6d')][_0x5a04('0x5e')](_0x2011dc);})[_0x5a04('0x25')](function(_0x1922b3){_0x197d72['rows']=_0x1922b3;return _0x197d72;});}})['then'](respondWithFilteredResult(_0x28034c,_0x2011dc))[_0x5a04('0x2f')](handleError(_0x28034c,null));};exports['removeDispositions']=function(_0x45d043,_0x138ca4,_0x11c791){return db[_0x5a04('0x5d')][_0x5a04('0x62')]({'where':{'id':_0x45d043[_0x5a04('0x6a')]['id']}})['then'](handleEntityNotFound(_0x138ca4,null))['then'](function(_0x694b26){if(_0x694b26){return _0x694b26[_0x5a04('0x71')](_0x45d043[_0x5a04('0x4c')][_0x5a04('0x72')]);}})[_0x5a04('0x25')](respondWithStatusCode(_0x138ca4,null))[_0x5a04('0x2f')](handleError(_0x138ca4,null));};exports['addAnswer']=function(_0x3fda6a,_0xbf93c4,_0x29b7ec){if(_0x3fda6a[_0x5a04('0x64')]['id']){delete _0x3fda6a[_0x5a04('0x64')]['id'];}return db[_0x5a04('0x5d')]['find']({'where':{'id':_0x3fda6a[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0xbf93c4,null))[_0x5a04('0x25')](function(_0x3a6caa){if(_0x3a6caa){_0x3fda6a[_0x5a04('0x64')][_0x5a04('0x70')]=_0x3a6caa['id'];return db[_0x5a04('0x73')][_0x5a04('0x63')](_0x3fda6a[_0x5a04('0x64')]);}})['then'](respondWithResult(_0xbf93c4,null))[_0x5a04('0x2f')](handleError(_0xbf93c4,null));};exports[_0x5a04('0x74')]=function(_0xc03b3b,_0x216c0f,_0x344891){var _0x50962d={'raw':![],'where':{}};var _0x103917={};var _0x1a1f7f={'count':0x0,'rows':[]};return db[_0x5a04('0x5d')][_0x5a04('0x6f')]({'where':{'id':_0xc03b3b[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0x216c0f,null))[_0x5a04('0x25')](function(_0x2706b7){if(_0x2706b7){_0x103917['model']=_[_0x5a04('0x4d')](db[_0x5a04('0x73')][_0x5a04('0x47')]);_0x103917['query']=_['keys'](_0xc03b3b[_0x5a04('0x4c')]);_0x103917['filters']=_[_0x5a04('0x4f')](_0x103917[_0x5a04('0x50')],_0x103917[_0x5a04('0x4c')]);_0x50962d['attributes']=_[_0x5a04('0x4f')](_0x103917[_0x5a04('0x50')],qs['fields'](_0xc03b3b[_0x5a04('0x4c')][_0x5a04('0x51')]));_0x50962d['attributes']=_0x50962d[_0x5a04('0x52')][_0x5a04('0x53')]?_0x50962d[_0x5a04('0x52')]:_0x103917[_0x5a04('0x50')];if(!_0xc03b3b[_0x5a04('0x4c')]['hasOwnProperty'](_0x5a04('0x55'))){_0x50962d[_0x5a04('0x35')]=qs[_0x5a04('0x35')](_0xc03b3b[_0x5a04('0x4c')][_0x5a04('0x35')]);_0x50962d['offset']=qs[_0x5a04('0x37')](_0xc03b3b[_0x5a04('0x4c')]['offset']);}_0x50962d[_0x5a04('0x56')]=qs[_0x5a04('0x57')](_0xc03b3b[_0x5a04('0x4c')][_0x5a04('0x57')]);_0x50962d[_0x5a04('0x58')]=qs[_0x5a04('0x4e')](_[_0x5a04('0x59')](_0xc03b3b[_0x5a04('0x4c')],_0x103917[_0x5a04('0x4e')]));_0x50962d[_0x5a04('0x58')][_0x5a04('0x70')]=_0x2706b7['id'];if(_0xc03b3b[_0x5a04('0x4c')][_0x5a04('0x5a')]){_0x50962d[_0x5a04('0x58')]=_[_0x5a04('0x5b')](_0x50962d[_0x5a04('0x58')],{'$or':_[_0x5a04('0x4b')](_0x50962d[_0x5a04('0x52')],function(_0x259ec9){var _0x26ac69={};_0x26ac69[_0x259ec9]={'$like':'%'+_0xc03b3b[_0x5a04('0x4c')]['filter']+'%'};return _0x26ac69;})});}_0x50962d=_[_0x5a04('0x5b')]({},_0x50962d,_0xc03b3b[_0x5a04('0x5c')]);return db['CannedAnswer'][_0x5a04('0x36')]({'where':_0x50962d['where']})[_0x5a04('0x25')](function(_0x21ab00){_0x1a1f7f[_0x5a04('0x36')]=_0x21ab00;if(_0xc03b3b[_0x5a04('0x4c')][_0x5a04('0x60')]){_0x50962d[_0x5a04('0x61')]=[{'all':!![]}];}return db[_0x5a04('0x73')]['findAll'](_0x50962d);})[_0x5a04('0x25')](function(_0x1ae09f){_0x1a1f7f[_0x5a04('0x75')]=_0x1ae09f;return _0x1a1f7f;});}})[_0x5a04('0x25')](respondWithFilteredResult(_0x216c0f,_0x50962d))['catch'](handleError(_0x216c0f,null));};exports[_0x5a04('0x76')]=function(_0x45c653,_0x1169cd,_0xb42e59){return db[_0x5a04('0x5d')][_0x5a04('0x62')]({'where':{'id':_0x45c653[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0x1169cd,null))[_0x5a04('0x25')](function(_0x1443c3){if(_0x1443c3){return _0x1443c3['removeAnswers'](_0x45c653[_0x5a04('0x4c')]['ids']);}})[_0x5a04('0x25')](respondWithStatusCode(_0x1169cd,null))['catch'](handleError(_0x1169cd,null));};exports['addAgents']=function(_0x341155,_0x8629ff,_0x1e3c1d){return db['WhatsappAccount'][_0x5a04('0x62')]({'where':{'id':_0x341155['params']['id']}})['then'](handleEntityNotFound(_0x8629ff,null))['then'](function(_0x3a045c){if(_0x3a045c){return _0x3a045c[_0x5a04('0x77')](_0x341155[_0x5a04('0x64')][_0x5a04('0x72')],_['omit'](_0x341155[_0x5a04('0x64')],[_0x5a04('0x72'),'id'])||{})['spread'](function(_0x1ec4aa){for(var _0x2776cb=0x0;_0x2776cb<_0x341155[_0x5a04('0x64')][_0x5a04('0x72')][_0x5a04('0x53')];_0x2776cb+=0x1){socket[_0x5a04('0x78')](_0x5a04('0x79'),{'UserId':Number(_0x341155[_0x5a04('0x64')]['ids'][_0x2776cb]),'WhatsappAccountId':Number(_0x341155[_0x5a04('0x6a')]['id'])});}return _0x1ec4aa;});}})[_0x5a04('0x25')](respondWithResult(_0x8629ff,null))[_0x5a04('0x2f')](handleError(_0x8629ff,null));};exports[_0x5a04('0x7a')]=function(_0x26fb70,_0x44e599,_0x1cb41e){return db[_0x5a04('0x5d')][_0x5a04('0x62')]({'where':{'id':_0x26fb70[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0x44e599,null))[_0x5a04('0x25')](function(_0x3d83a5){if(_0x3d83a5){return _0x3d83a5[_0x5a04('0x7a')](_0x26fb70[_0x5a04('0x4c')]['ids'])['then'](function(){if(_['isArray'](_0x26fb70[_0x5a04('0x4c')][_0x5a04('0x72')])){for(var _0x48365c=0x0;_0x48365c<_0x26fb70[_0x5a04('0x4c')][_0x5a04('0x72')]['length'];_0x48365c+=0x1){socket[_0x5a04('0x78')]('userWhatsappAccount:remove',{'UserId':Number(_0x26fb70[_0x5a04('0x4c')][_0x5a04('0x72')][_0x48365c]),'WhatsappAccountId':Number(_0x26fb70['params']['id'])});}}else{socket[_0x5a04('0x78')]('userWhatsappAccount:remove',{'UserId':Number(_0x26fb70['query']['ids']),'WhatsappAccountId':Number(_0x26fb70[_0x5a04('0x6a')]['id'])});}});}})[_0x5a04('0x25')](respondWithStatusCode(_0x44e599,null))['catch'](handleError(_0x44e599,null));};exports[_0x5a04('0x7b')]=function(_0x539c9d,_0x37acdd,_0x369b23){var _0x24750e={};var _0x41c8ac={};var _0x421d86;var _0x181c8c;return db[_0x5a04('0x5d')][_0x5a04('0x6f')]({'where':{'id':_0x539c9d[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0x37acdd,null))[_0x5a04('0x25')](function(_0x974c07){if(_0x974c07){_0x421d86=_0x974c07;_0x41c8ac[_0x5a04('0x50')]=_['keys'](db[_0x5a04('0x7c')][_0x5a04('0x47')]);_0x41c8ac[_0x5a04('0x4c')]=_[_0x5a04('0x4d')](_0x539c9d[_0x5a04('0x4c')]);_0x41c8ac[_0x5a04('0x4e')]=_[_0x5a04('0x4f')](_0x41c8ac[_0x5a04('0x50')],_0x41c8ac[_0x5a04('0x4c')]);_0x24750e[_0x5a04('0x52')]=_[_0x5a04('0x4f')](_0x41c8ac['model'],qs[_0x5a04('0x51')](_0x539c9d['query'][_0x5a04('0x51')]));_0x24750e[_0x5a04('0x52')]=_0x24750e[_0x5a04('0x52')][_0x5a04('0x53')]?_0x24750e[_0x5a04('0x52')]:_0x41c8ac[_0x5a04('0x50')];_0x24750e[_0x5a04('0x56')]=qs['sort'](_0x539c9d[_0x5a04('0x4c')][_0x5a04('0x57')]);_0x24750e[_0x5a04('0x58')]=qs[_0x5a04('0x4e')](_[_0x5a04('0x59')](_0x539c9d['query'],_0x41c8ac[_0x5a04('0x4e')]));if(_0x539c9d[_0x5a04('0x4c')]['filter']){_0x24750e[_0x5a04('0x58')]=_[_0x5a04('0x5b')](_0x24750e[_0x5a04('0x58')],{'$or':_['map'](_0x24750e[_0x5a04('0x52')],function(_0x4c6ce6){var _0x19b43c={};_0x19b43c[_0x4c6ce6]={'$like':'%'+_0x539c9d['query'][_0x5a04('0x5a')]+'%'};return _0x19b43c;})});}_0x24750e=_[_0x5a04('0x5b')]({},_0x24750e,_0x539c9d['options']);return _0x421d86['getAgents'](_0x24750e);}})[_0x5a04('0x25')](function(_0x54d608){if(_0x54d608){_0x181c8c=_0x54d608[_0x5a04('0x53')];if(!_0x539c9d['query']['hasOwnProperty'](_0x5a04('0x55'))){_0x24750e[_0x5a04('0x35')]=qs[_0x5a04('0x35')](_0x539c9d['query'][_0x5a04('0x35')]);_0x24750e[_0x5a04('0x37')]=qs[_0x5a04('0x37')](_0x539c9d[_0x5a04('0x4c')][_0x5a04('0x37')]);}return _0x421d86[_0x5a04('0x7b')](_0x24750e);}})[_0x5a04('0x25')](function(_0x628eeb){if(_0x628eeb){return _0x628eeb?{'count':_0x181c8c,'rows':_0x628eeb}:null;}})[_0x5a04('0x25')](respondWithResult(_0x37acdd,null))['catch'](handleError(_0x37acdd,null));};exports[_0x5a04('0x7d')]=function(_0x2f37d0,_0x18a652){var _0x13dfca=_0x2f37d0['params']['id'];var _0x5b9efb=_0x2f37d0[_0x5a04('0x64')];var _0x3a0a3a=0xc8;var _0x31fde4=null;return db[_0x5a04('0x7e')][_0x5a04('0x7f')]({'isolationLevel':db[_0x5a04('0x7e')][_0x5a04('0x80')]['ISOLATION_LEVELS'][_0x5a04('0x81')]},function(_0xa3c92d){return db['WhatsappAccount'][_0x5a04('0x6f')]({'where':{'id':_0x13dfca},'transaction':_0xa3c92d})[_0x5a04('0x25')](function(_0x259d0c){if(_0x259d0c){return db[_0x5a04('0x82')]['destroy']({'where':{'WhatsappAccountId':_0x13dfca},'transaction':_0xa3c92d})[_0x5a04('0x25')](function(){var _0x414ae8=_['map'](_0x5b9efb,function(_0x507c44){_0x507c44['WhatsappAccountId']=_0x13dfca;return _0x507c44;});return db['WhatsappApplication']['bulkCreate'](_0x414ae8,{'transaction':_0xa3c92d});});}else{_0x3a0a3a=0x194;_0x31fde4=[];}});})[_0x5a04('0x25')](function(){if(_0x3a0a3a!==0x194){return db[_0x5a04('0x82')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x13dfca},'order':_0x5a04('0x83')})[_0x5a04('0x25')](function(_0x499569){_0x31fde4=_0x499569;});}})[_0x5a04('0x2f')](function(_0x50f808){_0x3a0a3a=0x1f4;logger['error'](_0x50f808[_0x5a04('0x41')]);if(_0x50f808[_0x5a04('0x42')]){delete _0x50f808[_0x5a04('0x42')];}_0x31fde4=_0x50f808;})[_0x5a04('0x84')](function(){if(_0x31fde4===null){_0x18a652[_0x5a04('0x30')](_0x3a0a3a);}else{if(_0x3a0a3a===0x1f4){_0x18a652[_0x5a04('0x31')](_0x3a0a3a)['send'](_0x31fde4);}else{_0x18a652['status'](_0x3a0a3a)['json'](_0x31fde4);}}});};exports[_0x5a04('0x85')]=function(_0x208da1,_0x27620b,_0x113f17){var _0x56edc7={};var _0x2f659c={};var _0x14aa85;var _0x379ec5;return db[_0x5a04('0x5d')][_0x5a04('0x6f')]({'where':{'id':_0x208da1[_0x5a04('0x6a')]['id']}})[_0x5a04('0x25')](handleEntityNotFound(_0x27620b,null))[_0x5a04('0x25')](function(_0x54a34f){if(_0x54a34f){_0x14aa85=_0x54a34f;_0x2f659c[_0x5a04('0x50')]=_['keys'](db[_0x5a04('0x82')]['rawAttributes']);_0x2f659c[_0x5a04('0x4c')]=_[_0x5a04('0x4d')](_0x208da1[_0x5a04('0x4c')]);_0x2f659c['filters']=_[_0x5a04('0x4f')](_0x2f659c['model'],_0x2f659c[_0x5a04('0x4c')]);_0x56edc7[_0x5a04('0x52')]=_[_0x5a04('0x4f')](_0x2f659c['model'],qs['fields'](_0x208da1[_0x5a04('0x4c')][_0x5a04('0x51')]));_0x56edc7[_0x5a04('0x52')]=_0x56edc7[_0x5a04('0x52')][_0x5a04('0x53')]?_0x56edc7['attributes']:_0x2f659c[_0x5a04('0x50')];_0x56edc7[_0x5a04('0x56')]=qs[_0x5a04('0x57')](_0x208da1[_0x5a04('0x4c')][_0x5a04('0x57')]);_0x56edc7[_0x5a04('0x58')]=qs[_0x5a04('0x4e')](_[_0x5a04('0x59')](_0x208da1[_0x5a04('0x4c')],_0x2f659c[_0x5a04('0x4e')]));if(_0x208da1['query'][_0x5a04('0x5a')]){_0x56edc7['where']=_['merge'](_0x56edc7[_0x5a04('0x58')],{'$or':_[_0x5a04('0x4b')](_0x56edc7['attributes'],function(_0x5c1e4f){var _0x2e1c66={};_0x2e1c66[_0x5c1e4f]={'$like':'%'+_0x208da1[_0x5a04('0x4c')][_0x5a04('0x5a')]+'%'};return _0x2e1c66;})});}_0x56edc7=_[_0x5a04('0x5b')]({},_0x56edc7,_0x208da1[_0x5a04('0x5c')]);return _0x14aa85[_0x5a04('0x85')](_0x56edc7);}})[_0x5a04('0x25')](function(_0x6e2588){if(_0x6e2588){_0x379ec5=_0x6e2588[_0x5a04('0x53')];if(!_0x208da1[_0x5a04('0x4c')][_0x5a04('0x54')](_0x5a04('0x55'))){_0x56edc7[_0x5a04('0x35')]=qs['limit'](_0x208da1['query'][_0x5a04('0x35')]);_0x56edc7['offset']=qs[_0x5a04('0x37')](_0x208da1['query'][_0x5a04('0x37')]);}return _0x14aa85[_0x5a04('0x85')](_0x56edc7);}})[_0x5a04('0x25')](function(_0x449fa7){if(_0x449fa7){return _0x449fa7?{'count':_0x379ec5,'rows':_0x449fa7}:null;}})[_0x5a04('0x25')](respondWithResult(_0x27620b,null))['catch'](handleError(_0x27620b,null));};exports[_0x5a04('0x86')]=function(_0x2f7c1f,_0x4ff8e6,_0x39e810){var _0x51950f={'channel':_0x5a04('0x87')};var _0x3bf7ad=[];var _0x2c5440=[];var _0x5e4f50={};return db['WhatsappAccount'][_0x5a04('0x62')]({'where':{'id':_0x2f7c1f[_0x5a04('0x6a')]['id']},'include':[{'model':db[_0x5a04('0x82')],'as':_0x5a04('0x88')}]})[_0x5a04('0x25')](handleEntityNotFound(_0x4ff8e6,null))[_0x5a04('0x25')](function(_0x1ece25){_0x51950f[_0x5a04('0x89')]=_0x1ece25;if(_0x51950f['account']&&_0x51950f[_0x5a04('0x89')][_0x5a04('0x49')]===_0x5a04('0x8a')&&_0x2f7c1f[_0x5a04('0x64')]['statuses']){if(_0x2f7c1f[_0x5a04('0x64')]['statuses'][_0x5a04('0x53')]===0x0)return;if(_0x2f7c1f[_0x5a04('0x64')][_0x5a04('0x8b')][0x0][_0x5a04('0x8c')]!==_0x5a04('0x8d'))return;return db['WhatsappMessage'][_0x5a04('0x3d')]({'read':!![],'readAt':_0x2f7c1f['body'][_0x5a04('0x8b')][0x0][_0x5a04('0x8e')]},{'where':{'messageId':_0x2f7c1f[_0x5a04('0x64')]['statuses'][0x0][_0x5a04('0x8f')]},'individualHooks':!![]})[_0x5a04('0x25')](function(_0x3cdf54){return _0x4ff8e6[_0x5a04('0x31')](0xc8)[_0x5a04('0x33')](_0x3cdf54);});}_0x51950f[_0x5a04('0x90')]=_['orderBy'](_0x1ece25['Applications'],[_0x5a04('0x83')],['asc']);if(_0x51950f['account'][_0x5a04('0x88')]){delete _0x51950f['account'][_0x5a04('0x88')];}return db[_0x5a04('0x91')]['describe']()[_0x5a04('0x25')](function(_0x5514c5){if(!_0x5514c5){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x3bf7ad=_[_0x5a04('0x92')](_['keys'](_0x5514c5),[_0x5a04('0x93'),_0x5a04('0x94')]);_0x2c5440=_[_0x5a04('0x92')](_['keys'](_0x5514c5),['createdAt','updatedAt',_0x5a04('0x95'),'ListId']);_0x51950f[_0x5a04('0x64')]={'mapKey':_0x5a04('0x96')};if(_0x51950f[_0x5a04('0x89')]&&_0x51950f[_0x5a04('0x89')][_0x5a04('0x49')]==='twilio'){_0x51950f[_0x5a04('0x64')][_0x5a04('0x97')]=_0x2f7c1f[_0x5a04('0x64')][_0x5a04('0x98')][_0x5a04('0x99')]('whatsapp:','');_0x51950f['body'][_0x5a04('0x64')]=_0x2f7c1f[_0x5a04('0x64')]['Body'];_0x51950f[_0x5a04('0x64')]['messageId']=_0x2f7c1f[_0x5a04('0x64')]['MessageSid'];}if(_0x51950f[_0x5a04('0x89')]&&_0x51950f['account'][_0x5a04('0x49')]===_0x5a04('0x8a')){_0x51950f[_0x5a04('0x64')][_0x5a04('0x97')]=_0x2f7c1f['body']['notifications'][0x0][_0x5a04('0x97')];_0x51950f[_0x5a04('0x64')][_0x5a04('0x64')]=_0x2f7c1f['body'][_0x5a04('0x9a')][0x0][_0x5a04('0x2d')]['body'];_0x51950f[_0x5a04('0x64')][_0x5a04('0x9b')]=_0x2f7c1f['body']['notifications'][0x0][_0x5a04('0x8f')];}if(_0x51950f[_0x5a04('0x64')]['id']){delete _0x51950f[_0x5a04('0x64')]['id'];}if(_[_0x5a04('0x9c')](_0x51950f[_0x5a04('0x64')]['from'])){throw new db['Sequelize'][(_0x5a04('0x9d'))]('from\x20is\x20mandatory');}if(_[_0x5a04('0x9c')](_0x51950f[_0x5a04('0x64')]['body'])||_0x51950f['body'][_0x5a04('0x64')]===''){throw new db[(_0x5a04('0x9e'))]['ValidationError'](_0x5a04('0x9f'));}if(_[_0x5a04('0x9c')](_0x51950f['body'][_0x5a04('0xa0')])){throw new db[(_0x5a04('0x9e'))][(_0x5a04('0x9d'))](_0x5a04('0xa1')+_0x2c5440);}if(!_['includes'](_0x2c5440,_0x51950f['body'][_0x5a04('0xa0')])){throw new db[(_0x5a04('0x9e'))]['ValidationError'](_0x5a04('0xa2')+_0x2c5440);}_0x5e4f50[_0x51950f[_0x5a04('0x64')][_0x5a04('0xa0')]]=_0x51950f['body']['from'];return db[_0x5a04('0xa3')]['find']({'where':{'id':_0x51950f[_0x5a04('0x89')][_0x5a04('0xa4')]},'include':[{'model':db['CmContact'],'as':_0x5a04('0xa5'),'where':_0x5e4f50,'limit':0x1,'order':[[_0x5a04('0x94'),_0x5a04('0xa6')]]}]});})['then'](handleEntityNotFound(_0x4ff8e6,null))[_0x5a04('0x25')](function(_0x378343){if(_0x378343){_0x51950f[_0x5a04('0xa7')]=_[_0x5a04('0xa8')](_0x378343,[_0x5a04('0xa5')]);if(_0x378343[_0x5a04('0xa5')][_0x5a04('0x53')]){return _0x378343[_0x5a04('0xa5')][0x0];}var _0x1fd6e1=_['defaults'](_0x51950f['body'],{'firstName':_0x51950f[_0x5a04('0x64')][_0x5a04('0x97')],'ListId':_0x378343['id']});_0x1fd6e1[_0x51950f[_0x5a04('0x64')][_0x5a04('0xa0')]]=_0x51950f[_0x5a04('0x64')][_0x5a04('0x97')];return db[_0x5a04('0x91')][_0x5a04('0x63')](_0x1fd6e1,{'fields':_0x3bf7ad,'raw':!![]});}})[_0x5a04('0x25')](handleEntityNotFound(_0x4ff8e6,null))['then'](function(_0x43ae9c){if(_0x43ae9c){_0x51950f[_0x5a04('0xa9')]=_0x43ae9c;var _0x5bdfbd={'ContactId':_0x43ae9c['id'],'phone':_0x51950f[_0x5a04('0x64')][_0x5a04('0x97')],'WhatsappAccountId':_0x2f7c1f['params']['id']};var _0x5bf220={'ContactId':_0x43ae9c['id'],'WhatsappAccountId':_0x2f7c1f[_0x5a04('0x6a')]['id'],'closed':![]};return db[_0x5a04('0xaa')][_0x5a04('0x62')]({'where':_0x5bf220})[_0x5a04('0x25')](function(_0x593c2d){if(_0x593c2d){return[_0x593c2d,![]];}return db[_0x5a04('0xaa')][_0x5a04('0x63')](_0x5bdfbd)[_0x5a04('0x25')](function(_0x39eed0){return[_0x39eed0,!![]];});});}})[_0x5a04('0xab')](function(_0x3ed51e,_0x3336c5){_0x51950f[_0x5a04('0xac')]=_0x3ed51e[_0x5a04('0x3e')]({'plain':!![]});_0x51950f[_0x5a04('0xac')][_0x5a04('0xad')]=![];if(_0x3336c5){if(_0x51950f[_0x5a04('0x89')][_0x5a04('0xae')]){_0x51950f[_0x5a04('0x90')]['push']({'id':0x0,'priority':_0x51950f['applications']['length']+0x1,'app':'close','appdata':_0x5a04('0xaf'),'interval':_0x5a04('0xb0')});}_0x51950f[_0x5a04('0xac')]['created']=!![];}return db[_0x5a04('0xb1')]['create']({'phone':_0x51950f[_0x5a04('0x64')][_0x5a04('0x97')],'messageId':_0x51950f[_0x5a04('0x64')][_0x5a04('0x9b')],'body':_0x51950f[_0x5a04('0x64')][_0x5a04('0x64')],'WhatsappAccountId':_0x2f7c1f[_0x5a04('0x6a')]['id'],'WhatsappInteractionId':_0x3ed51e['id'],'direction':'in','ContactId':_0x3ed51e[_0x5a04('0xb2')],'AttachmentId':_0x51950f[_0x5a04('0x64')][_0x5a04('0xb3')]});})[_0x5a04('0x25')](function(_0x2240b7){_0x51950f[_0x5a04('0x2d')]=_0x2240b7;if(_0x51950f[_0x5a04('0xac')][_0x5a04('0xb4')]){return db[_0x5a04('0x7c')]['find']({'attributes':['id',_0x5a04('0x42')],'where':{'id':_0x51950f[_0x5a04('0xac')]['UserId']}})[_0x5a04('0x25')](function(_0x558e32){if(_0x558e32){_0x51950f[_0x5a04('0x90')]['unshift']({'id':0x0,'priority':0x0,'app':_0x5a04('0xb5'),'appdata':_0x558e32[_0x5a04('0x42')]+','+(_0x51950f[_0x5a04('0x89')]['waitForTheAssignedAgent']||0xa),'interval':_0x5a04('0xb0')});}return respondWithRpcPromise('Start','startRouting',_0x51950f);});}return respondWithRpcPromise(_0x5a04('0xb6'),_0x5a04('0xb7'),_0x51950f);})[_0x5a04('0x25')](function(_0x3e7caa){if(_0x3e7caa){var _0x4a2d02=0xc8;var _0x248a03=_0x5a04('0xb8');logger[_0x5a04('0x26')](_0x5a04('0xb9'),_0x248a03,_0x4a2d02,_0x5a04('0xba'));logger[_0x5a04('0x29')](_0x5a04('0xbb'),_0x248a03,_0x4a2d02,_0x5a04('0xba'),JSON[_0x5a04('0x2a')](_0x3e7caa));if(_0x51950f[_0x5a04('0x89')][_0x5a04('0x49')]===_0x5a04('0xbc')){return _0x4ff8e6[_0x5a04('0x31')](_0x4a2d02)[_0x5a04('0x38')](_0x5a04('0xbd'),_0x5a04('0xbe'))[_0x5a04('0x43')](_0x5a04('0xbf'));}else{return _0x4ff8e6['status'](_0x4a2d02)[_0x5a04('0x33')](_0x3e7caa);}}});})['catch'](handleError(_0x4ff8e6,null));};exports[_0x5a04('0x43')]=function(_0x30227a,_0x4fe8ee,_0x432539){var _0x57e68a,_0x2d8e9a,_0x13a273;if(_[_0x5a04('0x9c')](_0x30227a[_0x5a04('0x64')][_0x5a04('0x64')])||_0x30227a[_0x5a04('0x64')]['body']===''){throw new db[(_0x5a04('0x9e'))][(_0x5a04('0x9d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x5a04('0x9c')](_0x30227a[_0x5a04('0x64')]['to'])){throw new db['Sequelize']['ValidationError'](_0x5a04('0xc0'));}_0x57e68a=_0x30227a['body']['to'];return db[_0x5a04('0x5d')]['find']({'where':{'id':_0x30227a[_0x5a04('0x6a')]['id']},'include':[{'model':db[_0x5a04('0xa3')],'as':_0x5a04('0xc1'),'include':[{'model':db[_0x5a04('0x91')],'as':_0x5a04('0xa5'),'where':{'mobile':_0x57e68a},'limit':0x1,'order':[[_0x5a04('0x94'),_0x5a04('0xa6')]]}]}]})[_0x5a04('0x25')](handleEntityNotFound(_0x4fe8ee,null))[_0x5a04('0x25')](function(_0x28cc8d){if(_0x28cc8d&&_0x28cc8d['List']){_0x2d8e9a=_0x28cc8d[_0x5a04('0x3e')]({'plain':!![]});if(_0x2d8e9a[_0x5a04('0xc1')]&&_0x2d8e9a[_0x5a04('0xc1')][_0x5a04('0xa5')][_0x5a04('0x53')]){return _0x2d8e9a[_0x5a04('0xc1')][_0x5a04('0xa5')][0x0];}return db['CmContact'][_0x5a04('0x63')](_[_0x5a04('0x1c')](_0x30227a[_0x5a04('0x64')],{'firstName':_0x57e68a,'mobile':_0x57e68a,'phone':_0x57e68a,'ListId':_0x2d8e9a[_0x5a04('0xa4')]}));}})[_0x5a04('0x25')](handleEntityNotFound(_0x4fe8ee,null))[_0x5a04('0x25')](function(_0x256f6e){if(_0x256f6e){_0x13a273=_0x256f6e;return db[_0x5a04('0xaa')][_0x5a04('0x62')]({'where':{'ContactId':_0x13a273['id'],'closed':![],'WhatsappAccountId':_0x2d8e9a['id']}})[_0x5a04('0x25')](function(_0x370918){if(_0x370918){return[_0x370918,![]];}return db[_0x5a04('0xaa')]['create']({'UserId':_0x30227a[_0x5a04('0x67')]['id'],'ContactId':_0x13a273['id'],'WhatsappAccountId':_0x2d8e9a['id'],'phone':_0x57e68a,'firstMsgDirection':_0x5a04('0xc2'),'Messages':[_[_0x5a04('0x5b')](_0x30227a[_0x5a04('0x64')],{'read':![],'body':_0x30227a[_0x5a04('0x64')][_0x5a04('0x64')],'phone':_0x57e68a,'WhatsappAccountId':_0x2d8e9a['id'],'UserId':_0x30227a['user']['id'],'ContactId':_0x13a273['id']})]},{'include':[{'model':db[_0x5a04('0xb1')],'as':_0x5a04('0xc3')}]})[_0x5a04('0x25')](function(_0x2d70c0){return[_0x2d70c0,!![]];});});}})[_0x5a04('0xab')](function(_0x383fe1,_0x5054ca){if(_0x5054ca){return _0x383fe1;}return db[_0x5a04('0xb1')]['create'](_[_0x5a04('0x5b')](_0x30227a['body'],{'read':![],'body':_0x30227a['body'][_0x5a04('0x64')],'phone':_0x57e68a,'WhatsappAccountId':_0x2d8e9a['id'],'WhatsappInteractionId':_0x383fe1['id'],'UserId':_0x30227a[_0x5a04('0x67')]['id'],'ContactId':_0x13a273['id']}))[_0x5a04('0x25')](function(_0x73ea06){_0x383fe1[_0x5a04('0xc4')][_0x5a04('0xc3')]=[];_0x383fe1[_0x5a04('0xc4')]['Messages'][_0x5a04('0xc5')](_0x73ea06['dataValues']);return _0x383fe1;});})['then'](respondWithResult(_0x4fe8ee,null))[_0x5a04('0x2f')](handleError(_0x4fe8ee,null));};
\ No newline at end of file
index a17b708..6ddddfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb26=['emit','hasOwnProperty','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners','update'];(function(_0x25a45a,_0x156e4b){var _0x237f87=function(_0x17c9e5){while(--_0x17c9e5){_0x25a45a['push'](_0x25a45a['shift']());}};_0x237f87(++_0x156e4b);}(_0xbb26,0xcb));var _0x6bb2=function(_0x3f7283,_0x59fb3f){_0x3f7283=_0x3f7283-0x0;var _0x241971=_0xbb26[_0x3f7283];return _0x241971;};'use strict';var EventEmitter=require(_0x6bb2('0x0'));var WhatsappAccount=require(_0x6bb2('0x1'))['db'][_0x6bb2('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x6bb2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6bb2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x25ff7a){return function(_0x105383,_0x1a64a9,_0x153f0f){WhatsappAccountEvents[_0x6bb2('0x5')](_0x25ff7a+':'+_0x105383['id'],_0x105383);WhatsappAccountEvents[_0x6bb2('0x5')](_0x25ff7a,_0x105383);_0x153f0f(null);};}for(var e in events){if(events[_0x6bb2('0x6')](e)){var event=events[e];WhatsappAccount[_0x6bb2('0x7')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0xbc95=['save','update','remove','emit','hasOwnProperty','hook','events','setMaxListeners'];(function(_0x13c22c,_0x170015){var _0x16237c=function(_0x2ef781){while(--_0x2ef781){_0x13c22c['push'](_0x13c22c['shift']());}};_0x16237c(++_0x170015);}(_0xbc95,0x186));var _0x5bc9=function(_0x7fabe1,_0x5d2150){_0x7fabe1=_0x7fabe1-0x0;var _0x43669e=_0xbc95[_0x7fabe1];return _0x43669e;};'use strict';var EventEmitter=require(_0x5bc9('0x0'));var WhatsappAccount=require('../../mysqldb')['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x5bc9('0x1')](0x0);var events={'afterCreate':_0x5bc9('0x2'),'afterUpdate':_0x5bc9('0x3'),'afterDestroy':_0x5bc9('0x4')};function emitEvent(_0x5f1eb5){return function(_0x48dc9e,_0x3e3d18,_0x45114b){WhatsappAccountEvents[_0x5bc9('0x5')](_0x5f1eb5+':'+_0x48dc9e['id'],_0x48dc9e);WhatsappAccountEvents['emit'](_0x5f1eb5,_0x48dc9e);_0x45114b(null);};}for(var e in events){if(events[_0x5bc9('0x6')](e)){var event=events[e];WhatsappAccount[_0x5bc9('0x7')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index ba2af1a..2ab0f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x967e=['path','exports','define','WhatsappAccount','whatsapp_accounts','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5ae9d6,_0x53eb0a){var _0x592881=function(_0x2af8c2){while(--_0x2af8c2){_0x5ae9d6['push'](_0x5ae9d6['shift']());}};_0x592881(++_0x53eb0a);}(_0x967e,0xcb));var _0xe967=function(_0x3e0265,_0x1cbed9){_0x3e0265=_0x3e0265-0x0;var _0x571ecf=_0x967e[_0x3e0265];return _0x571ecf;};'use strict';var _=require('lodash');var util=require(_0xe967('0x0'));var logger=require(_0xe967('0x1'))(_0xe967('0x2'));var moment=require(_0xe967('0x3'));var BPromise=require(_0xe967('0x4'));var rp=require(_0xe967('0x5'));var fs=require('fs');var path=require(_0xe967('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module[_0xe967('0x7')]=function(_0x15b6ec,_0x59bb83){return _0x15b6ec[_0xe967('0x8')](_0xe967('0x9'),attributes,{'tableName':_0xe967('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2965=['../../config/environment','./whatsappAccount.attributes','WhatsappAccount','lodash','util','moment','bluebird','request-promise','path'];(function(_0x18e0d1,_0xbca4cb){var _0x58db41=function(_0x5ccffd){while(--_0x5ccffd){_0x18e0d1['push'](_0x18e0d1['shift']());}};_0x58db41(++_0xbca4cb);}(_0x2965,0x93));var _0x5296=function(_0x46daa3,_0x12d283){_0x46daa3=_0x46daa3-0x0;var _0x23157e=_0x2965[_0x46daa3];return _0x23157e;};'use strict';var _=require(_0x5296('0x0'));var util=require(_0x5296('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x5296('0x2'));var BPromise=require(_0x5296('0x3'));var rp=require(_0x5296('0x4'));var fs=require('fs');var path=require(_0x5296('0x5'));var rimraf=require('rimraf');var config=require(_0x5296('0x6'));var attributes=require(_0x5296('0x7'));module['exports']=function(_0x4871c9,_0x4c0664){return _0x4871c9['define'](_0x5296('0x8'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 905113f..9e86982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84dc=['code','error','message','result','catch','WhatsappAccount','find','options','raw','where','attributes','map','include','model','info','ShowWhatsappAccount','lodash','../../mysqldb','../../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','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5cf0a4,_0x20ef87){var _0x5abd18=function(_0x50808c){while(--_0x50808c){_0x5cf0a4['push'](_0x5cf0a4['shift']());}};_0x5abd18(++_0x20ef87);}(_0x84dc,0x113));var _0xc84d=function(_0x328750,_0x58f152){_0x328750=_0x328750-0x0;var _0x2c625b=_0x84dc[_0x328750];return _0x2c625b;};'use strict';var _=require(_0xc84d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc84d('0x1'))['db'];var utils=require('../../config/utils');var logger=require(_0xc84d('0x2'))(_0xc84d('0x3'));var config=require(_0xc84d('0x4'));var jayson=require(_0xc84d('0x5'));var client=jayson[_0xc84d('0x6')][_0xc84d('0x7')]({'port':0x232a});config[_0xc84d('0x8')]=_[_0xc84d('0x9')](config[_0xc84d('0x8')],{'host':_0xc84d('0xa'),'port':0x18eb});var socket=require(_0xc84d('0xb'))(new Redis(config[_0xc84d('0x8')]));require(_0xc84d('0xc'))[_0xc84d('0xd')](socket);function respondWithRpcPromise(_0x262d9c,_0x9ef7f7,_0x587cad){return new BPromise(function(_0x329241,_0x22e499){return client[_0xc84d('0xe')](_0x262d9c,_0x587cad)[_0xc84d('0xf')](function(_0x186a9e){logger['info'](_0xc84d('0x10'),_0x9ef7f7,_0xc84d('0x11'));logger[_0xc84d('0x12')](_0xc84d('0x13'),_0x9ef7f7,'request\x20sent',JSON[_0xc84d('0x14')](_0x186a9e));if(_0x186a9e['error']){if(_0x186a9e['error'][_0xc84d('0x15')]===0x1f4){logger[_0xc84d('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x9ef7f7,_0x186a9e[_0xc84d('0x16')]['message']);return _0x22e499(_0x186a9e['error'][_0xc84d('0x17')]);}logger[_0xc84d('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x9ef7f7,_0x186a9e['error'][_0xc84d('0x17')]);return _0x329241(_0x186a9e[_0xc84d('0x16')][_0xc84d('0x17')]);}else{logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x9ef7f7,_0xc84d('0x11'));_0x329241(_0x186a9e[_0xc84d('0x18')][_0xc84d('0x17')]);}})[_0xc84d('0x19')](function(_0x3f0ab4){logger[_0xc84d('0x16')](_0xc84d('0x10'),_0x9ef7f7,_0x3f0ab4);_0x22e499(_0x3f0ab4);});});}exports['ShowWhatsappAccount']=function(_0x3d5a72){var _0x7e9598=this;return new Promise(function(_0x305565,_0x2fc852){return db[_0xc84d('0x1a')][_0xc84d('0x1b')]({'raw':_0x3d5a72['options']?_0x3d5a72[_0xc84d('0x1c')][_0xc84d('0x1d')]===undefined?!![]:![]:!![],'where':_0x3d5a72[_0xc84d('0x1c')]?_0x3d5a72['options'][_0xc84d('0x1e')]||null:null,'attributes':_0x3d5a72['options']?_0x3d5a72[_0xc84d('0x1c')][_0xc84d('0x1f')]||null:null,'include':_0x3d5a72[_0xc84d('0x1c')]?_0x3d5a72['options']['include']?_[_0xc84d('0x20')](_0x3d5a72[_0xc84d('0x1c')]['include'],function(_0x323ca5){return{'model':db[_0x323ca5['model']],'as':_0x323ca5['as'],'attributes':_0x323ca5['attributes'],'include':_0x323ca5[_0xc84d('0x21')]?_['map'](_0x323ca5[_0xc84d('0x21')],function(_0x2295d8){return{'model':db[_0x2295d8[_0xc84d('0x22')]],'as':_0x2295d8['as'],'attributes':_0x2295d8[_0xc84d('0x1f')],'include':_0x2295d8[_0xc84d('0x21')]?_[_0xc84d('0x20')](_0x2295d8[_0xc84d('0x21')],function(_0x4ecd84){return{'model':db[_0x4ecd84['model']],'as':_0x4ecd84['as'],'attributes':_0x4ecd84['attributes']};}):[]};}):[]};}):[]:[]})[_0xc84d('0xf')](function(_0x14634e){logger[_0xc84d('0x23')](_0xc84d('0x24'),_0x3d5a72);logger[_0xc84d('0x12')](_0xc84d('0x24'),_0x3d5a72,JSON['stringify'](_0x14634e));_0x305565(_0x14634e);})[_0xc84d('0x19')](function(_0x4e0b66){logger[_0xc84d('0x16')](_0xc84d('0x24'),_0x4e0b66['message'],_0x3d5a72);_0x2fc852(_0x7e9598[_0xc84d('0x16')](0x1f4,_0x4e0b66['message']));});});};
\ No newline at end of file
+var _0xc90c=['attributes','include','map','model','lodash','util','moment','bluebird','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where'];(function(_0x58aa05,_0x7333b5){var _0x5d16b9=function(_0x6804b9){while(--_0x6804b9){_0x58aa05['push'](_0x58aa05['shift']());}};_0x5d16b9(++_0x7333b5);}(_0xc90c,0x1a6));var _0xcc90=function(_0x5966a3,_0x4b823b){_0x5966a3=_0x5966a3-0x0;var _0x4e50c7=_0xc90c[_0x5966a3];return _0x4e50c7;};'use strict';var _=require(_0xcc90('0x0'));var util=require(_0xcc90('0x1'));var moment=require(_0xcc90('0x2'));var BPromise=require(_0xcc90('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcc90('0x4'))(_0xcc90('0x5'));var config=require(_0xcc90('0x6'));var jayson=require(_0xcc90('0x7'));var client=jayson[_0xcc90('0x8')][_0xcc90('0x9')]({'port':0x232a});config[_0xcc90('0xa')]=_[_0xcc90('0xb')](config[_0xcc90('0xa')],{'host':_0xcc90('0xc'),'port':0x18eb});var socket=require(_0xcc90('0xd'))(new Redis(config[_0xcc90('0xa')]));require(_0xcc90('0xe'))['register'](socket);function respondWithRpcPromise(_0x4122d1,_0x1b07af,_0x2f8cbd){return new BPromise(function(_0x2e8116,_0x11a559){return client[_0xcc90('0xf')](_0x4122d1,_0x2f8cbd)[_0xcc90('0x10')](function(_0x27e717){logger[_0xcc90('0x11')](_0xcc90('0x12'),_0x1b07af,_0xcc90('0x13'));logger[_0xcc90('0x14')](_0xcc90('0x15'),_0x1b07af,_0xcc90('0x13'),JSON[_0xcc90('0x16')](_0x27e717));if(_0x27e717[_0xcc90('0x17')]){if(_0x27e717['error'][_0xcc90('0x18')]===0x1f4){logger['error'](_0xcc90('0x12'),_0x1b07af,_0x27e717[_0xcc90('0x17')]['message']);return _0x11a559(_0x27e717[_0xcc90('0x17')]['message']);}logger[_0xcc90('0x17')](_0xcc90('0x12'),_0x1b07af,_0x27e717['error']['message']);return _0x2e8116(_0x27e717[_0xcc90('0x17')][_0xcc90('0x19')]);}else{logger['info'](_0xcc90('0x12'),_0x1b07af,_0xcc90('0x13'));_0x2e8116(_0x27e717[_0xcc90('0x1a')]['message']);}})[_0xcc90('0x1b')](function(_0x3c6853){logger[_0xcc90('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x1b07af,_0x3c6853);_0x11a559(_0x3c6853);});});}exports[_0xcc90('0x1c')]=function(_0x35c24e){var _0x43661c=this;return new Promise(function(_0x3180e9,_0x1510d0){return db[_0xcc90('0x1d')][_0xcc90('0x1e')]({'raw':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e[_0xcc90('0x1f')][_0xcc90('0x20')]===undefined?!![]:![]:!![],'where':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e[_0xcc90('0x1f')][_0xcc90('0x21')]||null:null,'attributes':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e['options'][_0xcc90('0x22')]||null:null,'include':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e[_0xcc90('0x1f')][_0xcc90('0x23')]?_[_0xcc90('0x24')](_0x35c24e[_0xcc90('0x1f')]['include'],function(_0x592956){return{'model':db[_0x592956[_0xcc90('0x25')]],'as':_0x592956['as'],'attributes':_0x592956['attributes'],'include':_0x592956[_0xcc90('0x23')]?_['map'](_0x592956[_0xcc90('0x23')],function(_0x49bdcc){return{'model':db[_0x49bdcc['model']],'as':_0x49bdcc['as'],'attributes':_0x49bdcc[_0xcc90('0x22')],'include':_0x49bdcc[_0xcc90('0x23')]?_[_0xcc90('0x24')](_0x49bdcc[_0xcc90('0x23')],function(_0x145c88){return{'model':db[_0x145c88['model']],'as':_0x145c88['as'],'attributes':_0x145c88[_0xcc90('0x22')]};}):[]};}):[]};}):[]:[]})[_0xcc90('0x10')](function(_0x2cc917){logger[_0xcc90('0x11')](_0xcc90('0x1c'),_0x35c24e);logger['debug'](_0xcc90('0x1c'),_0x35c24e,JSON[_0xcc90('0x16')](_0x2cc917));_0x3180e9(_0x2cc917);})['catch'](function(_0x2e297c){logger['error'](_0xcc90('0x1c'),_0x2e297c[_0xcc90('0x19')],_0x35c24e);_0x1510d0(_0x43661c[_0xcc90('0x17')](0x1f4,_0x2e297c[_0xcc90('0x19')]));});});};
\ No newline at end of file
index 2a20b04..7b250a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x492f=['./whatsappAccount.events','remove','update','removeListener','length','whatsappAccount:'];(function(_0x7b5141,_0x2e82a0){var _0xe1fd72=function(_0x4a7c9b){while(--_0x4a7c9b){_0x7b5141['push'](_0x7b5141['shift']());}};_0xe1fd72(++_0x2e82a0);}(_0x492f,0x192));var _0xf492=function(_0x1bf795,_0x8bee44){_0x1bf795=_0x1bf795-0x0;var _0x3b256a=_0x492f[_0x1bf795];return _0x3b256a;};'use strict';var WhatsappAccountEvents=require(_0xf492('0x0'));var events=['save',_0xf492('0x1'),_0xf492('0x2')];function createListener(_0x39c00a,_0x22de40){return function(_0x5dd35b){_0x22de40['emit'](_0x39c00a,_0x5dd35b);};}function removeListener(_0x488727,_0x461139){return function(){WhatsappAccountEvents[_0xf492('0x3')](_0x488727,_0x461139);};}exports['register']=function(_0x40e72b){for(var _0x49b1c7=0x0,_0x38bdcb=events[_0xf492('0x4')];_0x49b1c7<_0x38bdcb;_0x49b1c7++){var _0x2496ca=events[_0x49b1c7];var _0x3a45ce=createListener(_0xf492('0x5')+_0x2496ca,_0x40e72b);WhatsappAccountEvents['on'](_0x2496ca,_0x3a45ce);}};
\ No newline at end of file
+var _0x298e=['length','whatsappAccount:','./whatsappAccount.events','save','remove','update','emit','removeListener','register'];(function(_0x2f546a,_0x56002f){var _0x58003b=function(_0x47b01f){while(--_0x47b01f){_0x2f546a['push'](_0x2f546a['shift']());}};_0x58003b(++_0x56002f);}(_0x298e,0x1df));var _0xe298=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x298e[_0x4e676e];return _0x336a3c;};'use strict';var WhatsappAccountEvents=require(_0xe298('0x0'));var events=[_0xe298('0x1'),_0xe298('0x2'),_0xe298('0x3')];function createListener(_0x3490fe,_0x23c4b7){return function(_0x4120e4){_0x23c4b7[_0xe298('0x4')](_0x3490fe,_0x4120e4);};}function removeListener(_0x1dc892,_0x6dc0fc){return function(){WhatsappAccountEvents[_0xe298('0x5')](_0x1dc892,_0x6dc0fc);};}exports[_0xe298('0x6')]=function(_0x49d12f){for(var _0x290d97=0x0,_0x4df37d=events[_0xe298('0x7')];_0x290d97<_0x4df37d;_0x290d97++){var _0x2b8a0c=events[_0x290d97];var _0x493da2=createListener(_0xe298('0x8')+_0x2b8a0c,_0x49d12f);WhatsappAccountEvents['on'](_0x2b8a0c,_0x493da2);}};
\ No newline at end of file
index 49a211a..01a1eae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x384a=['post','create','put','update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get','isAuthenticated','index','/:id'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0x384a,0xf0));var _0xa384=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0x384a[_0x38a7ac];return _0x53061a;};'use strict';var multer=require(_0xa384('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa384('0x1'));var express=require(_0xa384('0x2'));var router=express[_0xa384('0x3')]();var fs_extra=require(_0xa384('0x4'));var auth=require(_0xa384('0x5'));var interaction=require(_0xa384('0x6'));var config=require('../../config/environment');var controller=require(_0xa384('0x7'));router[_0xa384('0x8')]('/',auth[_0xa384('0x9')](),controller[_0xa384('0xa')]);router[_0xa384('0x8')](_0xa384('0xb'),auth[_0xa384('0x9')](),controller['show']);router[_0xa384('0xc')]('/',auth[_0xa384('0x9')](),controller[_0xa384('0xd')]);router[_0xa384('0xe')](_0xa384('0xb'),auth[_0xa384('0x9')](),controller[_0xa384('0xf')]);router['delete'](_0xa384('0xb'),auth[_0xa384('0x9')](),controller[_0xa384('0x10')]);module[_0xa384('0x11')]=router;
\ No newline at end of file
+var _0x7527=['get','show','post','put','/:id','update','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x502048,_0x557de3){var _0x591dbf=function(_0x394e10){while(--_0x394e10){_0x502048['push'](_0x502048['shift']());}};_0x591dbf(++_0x557de3);}(_0x7527,0x19f));var _0x7752=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7527[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7752('0x0'));var util=require(_0x7752('0x1'));var path=require(_0x7752('0x2'));var timeout=require(_0x7752('0x3'));var express=require(_0x7752('0x4'));var router=express['Router']();var fs_extra=require(_0x7752('0x5'));var auth=require(_0x7752('0x6'));var interaction=require(_0x7752('0x7'));var config=require(_0x7752('0x8'));var controller=require('./whatsappApplication.controller');router['get']('/',auth[_0x7752('0x9')](),controller['index']);router[_0x7752('0xa')]('/:id',auth[_0x7752('0x9')](),controller[_0x7752('0xb')]);router[_0x7752('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7752('0xd')](_0x7752('0xe'),auth[_0x7752('0x9')](),controller[_0x7752('0xf')]);router['delete'](_0x7752('0xe'),auth[_0x7752('0x9')](),controller[_0x7752('0x10')]);module['exports']=router;
\ No newline at end of file
index c5d6fc3..3e8a2a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea4b=['*,*,*,*','INTEGER','STRING'];(function(_0x2459fd,_0x575d9b){var _0x364cd2=function(_0x4b22f6){while(--_0x4b22f6){_0x2459fd['push'](_0x2459fd['shift']());}};_0x364cd2(++_0x575d9b);}(_0xea4b,0xac));var _0xbea4=function(_0x269c23,_0x289264){_0x269c23=_0x269c23-0x0;var _0x184ecd=_0xea4b[_0x269c23];return _0x184ecd;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xbea4('0x0')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xbea4('0x1')],'defaultValue':_0xbea4('0x2')}};
\ No newline at end of file
+var _0x9bca=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x51ebc9,_0x1a0db1){var _0x4b7e0b=function(_0x34b202){while(--_0x34b202){_0x51ebc9['push'](_0x51ebc9['shift']());}};_0x4b7e0b(++_0x1a0db1);}(_0x9bca,0x163));var _0xa9bc=function(_0x32047a,_0x4b7ab2){_0x32047a=_0x32047a-0x0;var _0x4a85fa=_0x9bca[_0x32047a];return _0x4a85fa;};'use strict';var Sequelize=require(_0xa9bc('0x0'));module[_0xa9bc('0x1')]={'priority':{'type':Sequelize[_0xa9bc('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa9bc('0x3')],'allowNull':![],'defaultValue':_0xa9bc('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xa9bc('0x3')]},'interval':{'type':Sequelize[_0xa9bc('0x3')],'defaultValue':_0xa9bc('0x5')}};
\ No newline at end of file
index e520660..99ed4b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c71=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','catch','body','params'];(function(_0x1acc37,_0x248522){var _0x2372b7=function(_0x50ebe6){while(--_0x50ebe6){_0x1acc37['push'](_0x1acc37['shift']());}};_0x2372b7(++_0x248522);}(_0x7c71,0x177));var _0x17c7=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x7c71[_0x3305de];return _0x3b5a84;};'use strict';var emlformat=require(_0x17c7('0x0'));var rimraf=require(_0x17c7('0x1'));var zipdir=require(_0x17c7('0x2'));var jsonpatch=require(_0x17c7('0x3'));var rp=require('request-promise');var moment=require(_0x17c7('0x4'));var BPromise=require(_0x17c7('0x5'));var Mustache=require(_0x17c7('0x6'));var util=require('util');var path=require('path');var sox=require(_0x17c7('0x7'));var csv=require(_0x17c7('0x8'));var ejs=require(_0x17c7('0x9'));var fs=require('fs');var fs_extra=require(_0x17c7('0xa'));var _=require(_0x17c7('0xb'));var squel=require(_0x17c7('0xc'));var crypto=require(_0x17c7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x17c7('0xe'));var toCsv=require(_0x17c7('0x8'));var querystring=require(_0x17c7('0xf'));var Papa=require(_0x17c7('0x10'));var Redis=require(_0x17c7('0x11'));var authService=require(_0x17c7('0x12'));var qs=require(_0x17c7('0x13'));var as=require(_0x17c7('0x14'));var hardwareService=require(_0x17c7('0x15'));var logger=require(_0x17c7('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x17c7('0x17'));var licenseUtil=require(_0x17c7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x430506,_0x22ad50){_0x22ad50=_0x22ad50||0xcc;return function(_0x4fd6af){if(_0x4fd6af){return _0x430506[_0x17c7('0x19')](_0x22ad50);}return _0x430506[_0x17c7('0x1a')](_0x22ad50)['end']();};}function respondWithResult(_0x56ef3b,_0xfae300){_0xfae300=_0xfae300||0xc8;return function(_0x2d980d){if(_0x2d980d){return _0x56ef3b[_0x17c7('0x1a')](_0xfae300)[_0x17c7('0x1b')](_0x2d980d);}};}function respondWithFilteredResult(_0x3d0fb2,_0x2851){return function(_0x2c992f){if(_0x2c992f){var _0x295168=typeof _0x2851[_0x17c7('0x1c')]===_0x17c7('0x1d')&&typeof _0x2851[_0x17c7('0x1e')]===_0x17c7('0x1d');var _0x5470ab=_0x2c992f[_0x17c7('0x1f')];var _0x81d998=_0x295168?0x0:_0x2851['offset'];var _0x42d06c=_0x295168?_0x2c992f[_0x17c7('0x1f')]:_0x2851[_0x17c7('0x1c')]+_0x2851[_0x17c7('0x1e')];var _0x5b9e72;if(_0x42d06c>=_0x5470ab){_0x42d06c=_0x5470ab;_0x5b9e72=0xc8;}else{_0x5b9e72=0xce;}_0x3d0fb2['status'](_0x5b9e72);return _0x3d0fb2[_0x17c7('0x20')](_0x17c7('0x21'),_0x81d998+'-'+_0x42d06c+'/'+_0x5470ab)[_0x17c7('0x1b')](_0x2c992f);}return null;};}function patchUpdates(_0x86956b){return function(_0x2579b7){try{jsonpatch[_0x17c7('0x22')](_0x2579b7,_0x86956b,!![]);}catch(_0x357c27){return BPromise['reject'](_0x357c27);}return _0x2579b7[_0x17c7('0x23')]();};}function saveUpdates(_0x3885c8,_0x3c25ba){return function(_0x16700d){if(_0x16700d){return _0x16700d[_0x17c7('0x24')](_0x3885c8)[_0x17c7('0x25')](function(_0x29a4ac){return _0x29a4ac;});}return null;};}function removeEntity(_0x196e0e,_0x512c3c){return function(_0x312373){if(_0x312373){return _0x312373[_0x17c7('0x26')]()[_0x17c7('0x25')](function(){_0x196e0e[_0x17c7('0x1a')](0xcc)[_0x17c7('0x27')]();});}};}function handleEntityNotFound(_0xa6cfe5,_0x4eb516){return function(_0x36236d){if(!_0x36236d){_0xa6cfe5[_0x17c7('0x19')](0x194);}return _0x36236d;};}function handleError(_0x5e21ec,_0x30a3be){_0x30a3be=_0x30a3be||0x1f4;return function(_0x4d2460){logger[_0x17c7('0x28')](_0x4d2460[_0x17c7('0x29')]);if(_0x4d2460['name']){delete _0x4d2460[_0x17c7('0x2a')];}_0x5e21ec[_0x17c7('0x1a')](_0x30a3be)[_0x17c7('0x2b')](_0x4d2460);};}exports[_0x17c7('0x2c')]=function(_0xe6f177,_0xc6d7b2){var _0x3ca9d3={},_0x14ddac={},_0x3ccf3b={'count':0x0,'rows':[]};var _0x24a2cc=_[_0x17c7('0x2d')](db[_0x17c7('0x2e')][_0x17c7('0x2f')],function(_0xd38b0b){return{'name':_0xd38b0b['fieldName'],'type':_0xd38b0b[_0x17c7('0x30')]['key']};});_0x14ddac[_0x17c7('0x31')]=_[_0x17c7('0x2d')](_0x24a2cc,_0x17c7('0x2a'));_0x14ddac[_0x17c7('0x32')]=_[_0x17c7('0x33')](_0xe6f177['query']);_0x14ddac['filters']=_[_0x17c7('0x34')](_0x14ddac[_0x17c7('0x31')],_0x14ddac[_0x17c7('0x32')]);_0x3ca9d3[_0x17c7('0x35')]=_[_0x17c7('0x34')](_0x14ddac[_0x17c7('0x31')],qs[_0x17c7('0x36')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x36')]));_0x3ca9d3['attributes']=_0x3ca9d3[_0x17c7('0x35')][_0x17c7('0x37')]?_0x3ca9d3[_0x17c7('0x35')]:_0x14ddac['model'];if(!_0xe6f177[_0x17c7('0x32')][_0x17c7('0x38')](_0x17c7('0x39'))){_0x3ca9d3[_0x17c7('0x1e')]=qs[_0x17c7('0x1e')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x1e')]);_0x3ca9d3['offset']=qs['offset'](_0xe6f177['query'][_0x17c7('0x1c')]);}_0x3ca9d3['order']=qs[_0x17c7('0x3a')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3a')]);_0x3ca9d3['where']=qs[_0x17c7('0x3b')](_['pick'](_0xe6f177['query'],_0x14ddac[_0x17c7('0x3b')]),_0x24a2cc);if(_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3c')]){_0x3ca9d3[_0x17c7('0x3d')]=_[_0x17c7('0x3e')](_0x3ca9d3[_0x17c7('0x3d')],{'$or':_[_0x17c7('0x2d')](_0x24a2cc,function(_0x342b18){if(_0x342b18[_0x17c7('0x30')]!==_0x17c7('0x3f')){var _0x4ae7a6={};_0x4ae7a6[_0x342b18[_0x17c7('0x2a')]]={'$like':'%'+_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3c')]+'%'};return _0x4ae7a6;}})});}_0x3ca9d3=_[_0x17c7('0x3e')]({},_0x3ca9d3,_0xe6f177[_0x17c7('0x40')]);var _0xbd845c={'where':_0x3ca9d3['where']};return db[_0x17c7('0x2e')][_0x17c7('0x1f')](_0xbd845c)[_0x17c7('0x25')](function(_0x21f15d){_0x3ccf3b[_0x17c7('0x1f')]=_0x21f15d;if(_0xe6f177[_0x17c7('0x32')][_0x17c7('0x41')]){_0x3ca9d3['include']=[{'all':!![]}];}return db['WhatsappApplication'][_0x17c7('0x42')](_0x3ca9d3);})[_0x17c7('0x25')](function(_0xef91f1){_0x3ccf3b[_0x17c7('0x43')]=_0xef91f1;return _0x3ccf3b;})[_0x17c7('0x25')](respondWithFilteredResult(_0xc6d7b2,_0x3ca9d3))['catch'](handleError(_0xc6d7b2,null));};exports[_0x17c7('0x44')]=function(_0x2813ef,_0x5b45db){var _0x13420f={'raw':!![],'where':{'id':_0x2813ef['params']['id']}},_0x3d4f9d={};_0x3d4f9d[_0x17c7('0x31')]=_[_0x17c7('0x33')](db[_0x17c7('0x2e')]['rawAttributes']);_0x3d4f9d['query']=_[_0x17c7('0x33')](_0x2813ef[_0x17c7('0x32')]);_0x3d4f9d[_0x17c7('0x3b')]=_['intersection'](_0x3d4f9d[_0x17c7('0x31')],_0x3d4f9d['query']);_0x13420f[_0x17c7('0x35')]=_['intersection'](_0x3d4f9d[_0x17c7('0x31')],qs[_0x17c7('0x36')](_0x2813ef[_0x17c7('0x32')]['fields']));_0x13420f[_0x17c7('0x35')]=_0x13420f[_0x17c7('0x35')][_0x17c7('0x37')]?_0x13420f[_0x17c7('0x35')]:_0x3d4f9d[_0x17c7('0x31')];if(_0x2813ef[_0x17c7('0x32')][_0x17c7('0x41')]){_0x13420f[_0x17c7('0x45')]=[{'all':!![]}];}_0x13420f=_[_0x17c7('0x3e')]({},_0x13420f,_0x2813ef[_0x17c7('0x40')]);return db['WhatsappApplication'][_0x17c7('0x46')](_0x13420f)['then'](handleEntityNotFound(_0x5b45db,null))[_0x17c7('0x25')](respondWithResult(_0x5b45db,null))['catch'](handleError(_0x5b45db,null));};exports[_0x17c7('0x47')]=function(_0x48d0e5,_0x3b2e65){return db[_0x17c7('0x2e')]['create'](_0x48d0e5['body'],{})[_0x17c7('0x25')](respondWithResult(_0x3b2e65,0xc9))[_0x17c7('0x48')](handleError(_0x3b2e65,null));};exports[_0x17c7('0x24')]=function(_0x32d007,_0x2f1136){if(_0x32d007[_0x17c7('0x49')]['id']){delete _0x32d007[_0x17c7('0x49')]['id'];}return db[_0x17c7('0x2e')]['find']({'where':{'id':_0x32d007[_0x17c7('0x4a')]['id']}})[_0x17c7('0x25')](handleEntityNotFound(_0x2f1136,null))[_0x17c7('0x25')](saveUpdates(_0x32d007[_0x17c7('0x49')],null))[_0x17c7('0x25')](respondWithResult(_0x2f1136,null))[_0x17c7('0x48')](handleError(_0x2f1136,null));};exports[_0x17c7('0x26')]=function(_0x5166c0,_0xb2bb36){return db[_0x17c7('0x2e')]['find']({'where':{'id':_0x5166c0[_0x17c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0xb2bb36,null))[_0x17c7('0x25')](removeEntity(_0xb2bb36,null))[_0x17c7('0x48')](handleError(_0xb2bb36,null));};
\ No newline at end of file
+var _0x4c4a=['WhatsappApplication','include','findAll','rows','catch','show','length','includeAll','options','find','create','body','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','merge','map','VIRTUAL','filter'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x4c4a,0x1d0));var _0xa4c4=function(_0x45463c,_0x5988f8){_0x45463c=_0x45463c-0x0;var _0x240e9e=_0x4c4a[_0x45463c];return _0x240e9e;};'use strict';var emlformat=require(_0xa4c4('0x0'));var rimraf=require(_0xa4c4('0x1'));var zipdir=require(_0xa4c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa4c4('0x3'));var moment=require(_0xa4c4('0x4'));var BPromise=require(_0xa4c4('0x5'));var Mustache=require(_0xa4c4('0x6'));var util=require('util');var path=require(_0xa4c4('0x7'));var sox=require('sox');var csv=require(_0xa4c4('0x8'));var ejs=require(_0xa4c4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa4c4('0xa'));var crypto=require('crypto');var jsforce=require(_0xa4c4('0xb'));var deskjs=require(_0xa4c4('0xc'));var toCsv=require(_0xa4c4('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa4c4('0xd'));var authService=require(_0xa4c4('0xe'));var qs=require(_0xa4c4('0xf'));var as=require(_0xa4c4('0x10'));var hardwareService=require(_0xa4c4('0x11'));var logger=require('../../config/logger')(_0xa4c4('0x12'));var utils=require('../../config/utils');var config=require(_0xa4c4('0x13'));var licenseUtil=require(_0xa4c4('0x14'));var db=require(_0xa4c4('0x15'))['db'];function respondWithStatusCode(_0x2f6c71,_0x1d7750){_0x1d7750=_0x1d7750||0xcc;return function(_0x1f2051){if(_0x1f2051){return _0x2f6c71[_0xa4c4('0x16')](_0x1d7750);}return _0x2f6c71[_0xa4c4('0x17')](_0x1d7750)[_0xa4c4('0x18')]();};}function respondWithResult(_0x57ae15,_0x1abded){_0x1abded=_0x1abded||0xc8;return function(_0x35cc1f){if(_0x35cc1f){return _0x57ae15[_0xa4c4('0x17')](_0x1abded)[_0xa4c4('0x19')](_0x35cc1f);}};}function respondWithFilteredResult(_0x14a55c,_0x19033a){return function(_0x31cde0){if(_0x31cde0){var _0x5e8006=typeof _0x19033a[_0xa4c4('0x1a')]===_0xa4c4('0x1b')&&typeof _0x19033a['limit']===_0xa4c4('0x1b');var _0x451dfa=_0x31cde0[_0xa4c4('0x1c')];var _0x5f5ef=_0x5e8006?0x0:_0x19033a[_0xa4c4('0x1a')];var _0x40661e=_0x5e8006?_0x31cde0[_0xa4c4('0x1c')]:_0x19033a[_0xa4c4('0x1a')]+_0x19033a[_0xa4c4('0x1d')];var _0x157143;if(_0x40661e>=_0x451dfa){_0x40661e=_0x451dfa;_0x157143=0xc8;}else{_0x157143=0xce;}_0x14a55c[_0xa4c4('0x17')](_0x157143);return _0x14a55c[_0xa4c4('0x1e')](_0xa4c4('0x1f'),_0x5f5ef+'-'+_0x40661e+'/'+_0x451dfa)[_0xa4c4('0x19')](_0x31cde0);}return null;};}function patchUpdates(_0x19e17e){return function(_0x167502){try{jsonpatch[_0xa4c4('0x20')](_0x167502,_0x19e17e,!![]);}catch(_0x3cb3a7){return BPromise[_0xa4c4('0x21')](_0x3cb3a7);}return _0x167502['save']();};}function saveUpdates(_0x4e0249,_0x183bdf){return function(_0x3aa9a8){if(_0x3aa9a8){return _0x3aa9a8[_0xa4c4('0x22')](_0x4e0249)[_0xa4c4('0x23')](function(_0xd56b75){return _0xd56b75;});}return null;};}function removeEntity(_0x76b8f1,_0x5f1215){return function(_0x568b6a){if(_0x568b6a){return _0x568b6a['destroy']()[_0xa4c4('0x23')](function(){_0x76b8f1[_0xa4c4('0x17')](0xcc)[_0xa4c4('0x18')]();});}};}function handleEntityNotFound(_0x50bb08,_0x295c57){return function(_0x41f1ac){if(!_0x41f1ac){_0x50bb08[_0xa4c4('0x16')](0x194);}return _0x41f1ac;};}function handleError(_0x48a503,_0x40435d){_0x40435d=_0x40435d||0x1f4;return function(_0xfa33ec){logger[_0xa4c4('0x24')](_0xfa33ec[_0xa4c4('0x25')]);if(_0xfa33ec[_0xa4c4('0x26')]){delete _0xfa33ec['name'];}_0x48a503[_0xa4c4('0x17')](_0x40435d)[_0xa4c4('0x27')](_0xfa33ec);};}exports[_0xa4c4('0x28')]=function(_0x425fd8,_0x182335){var _0x5c3b3b={},_0x32af71={},_0x5688a6={'count':0x0,'rows':[]};var _0x4abddc=_['map'](db['WhatsappApplication'][_0xa4c4('0x29')],function(_0x1d852b){return{'name':_0x1d852b[_0xa4c4('0x2a')],'type':_0x1d852b[_0xa4c4('0x2b')][_0xa4c4('0x2c')]};});_0x32af71['model']=_['map'](_0x4abddc,'name');_0x32af71[_0xa4c4('0x2d')]=_[_0xa4c4('0x2e')](_0x425fd8['query']);_0x32af71[_0xa4c4('0x2f')]=_[_0xa4c4('0x30')](_0x32af71['model'],_0x32af71[_0xa4c4('0x2d')]);_0x5c3b3b[_0xa4c4('0x31')]=_['intersection'](_0x32af71[_0xa4c4('0x32')],qs[_0xa4c4('0x33')](_0x425fd8[_0xa4c4('0x2d')][_0xa4c4('0x33')]));_0x5c3b3b[_0xa4c4('0x31')]=_0x5c3b3b[_0xa4c4('0x31')]['length']?_0x5c3b3b[_0xa4c4('0x31')]:_0x32af71[_0xa4c4('0x32')];if(!_0x425fd8[_0xa4c4('0x2d')][_0xa4c4('0x34')](_0xa4c4('0x35'))){_0x5c3b3b[_0xa4c4('0x1d')]=qs[_0xa4c4('0x1d')](_0x425fd8[_0xa4c4('0x2d')]['limit']);_0x5c3b3b[_0xa4c4('0x1a')]=qs['offset'](_0x425fd8[_0xa4c4('0x2d')][_0xa4c4('0x1a')]);}_0x5c3b3b['order']=qs[_0xa4c4('0x36')](_0x425fd8[_0xa4c4('0x2d')][_0xa4c4('0x36')]);_0x5c3b3b[_0xa4c4('0x37')]=qs[_0xa4c4('0x2f')](_[_0xa4c4('0x38')](_0x425fd8['query'],_0x32af71[_0xa4c4('0x2f')]),_0x4abddc);if(_0x425fd8[_0xa4c4('0x2d')]['filter']){_0x5c3b3b[_0xa4c4('0x37')]=_[_0xa4c4('0x39')](_0x5c3b3b[_0xa4c4('0x37')],{'$or':_[_0xa4c4('0x3a')](_0x4abddc,function(_0x3193f8){if(_0x3193f8[_0xa4c4('0x2b')]!==_0xa4c4('0x3b')){var _0x2b9c17={};_0x2b9c17[_0x3193f8[_0xa4c4('0x26')]]={'$like':'%'+_0x425fd8[_0xa4c4('0x2d')][_0xa4c4('0x3c')]+'%'};return _0x2b9c17;}})});}_0x5c3b3b=_[_0xa4c4('0x39')]({},_0x5c3b3b,_0x425fd8['options']);var _0x2b02e0={'where':_0x5c3b3b[_0xa4c4('0x37')]};return db[_0xa4c4('0x3d')][_0xa4c4('0x1c')](_0x2b02e0)['then'](function(_0x588777){_0x5688a6['count']=_0x588777;if(_0x425fd8[_0xa4c4('0x2d')]['includeAll']){_0x5c3b3b[_0xa4c4('0x3e')]=[{'all':!![]}];}return db[_0xa4c4('0x3d')][_0xa4c4('0x3f')](_0x5c3b3b);})[_0xa4c4('0x23')](function(_0x379b5a){_0x5688a6[_0xa4c4('0x40')]=_0x379b5a;return _0x5688a6;})[_0xa4c4('0x23')](respondWithFilteredResult(_0x182335,_0x5c3b3b))[_0xa4c4('0x41')](handleError(_0x182335,null));};exports[_0xa4c4('0x42')]=function(_0x2a6e06,_0x4b6136){var _0x1c00b6={'raw':!![],'where':{'id':_0x2a6e06['params']['id']}},_0x7fea70={};_0x7fea70[_0xa4c4('0x32')]=_[_0xa4c4('0x2e')](db[_0xa4c4('0x3d')][_0xa4c4('0x29')]);_0x7fea70[_0xa4c4('0x2d')]=_[_0xa4c4('0x2e')](_0x2a6e06[_0xa4c4('0x2d')]);_0x7fea70['filters']=_[_0xa4c4('0x30')](_0x7fea70[_0xa4c4('0x32')],_0x7fea70[_0xa4c4('0x2d')]);_0x1c00b6[_0xa4c4('0x31')]=_[_0xa4c4('0x30')](_0x7fea70[_0xa4c4('0x32')],qs[_0xa4c4('0x33')](_0x2a6e06[_0xa4c4('0x2d')][_0xa4c4('0x33')]));_0x1c00b6[_0xa4c4('0x31')]=_0x1c00b6['attributes'][_0xa4c4('0x43')]?_0x1c00b6['attributes']:_0x7fea70[_0xa4c4('0x32')];if(_0x2a6e06[_0xa4c4('0x2d')][_0xa4c4('0x44')]){_0x1c00b6['include']=[{'all':!![]}];}_0x1c00b6=_[_0xa4c4('0x39')]({},_0x1c00b6,_0x2a6e06[_0xa4c4('0x45')]);return db[_0xa4c4('0x3d')][_0xa4c4('0x46')](_0x1c00b6)[_0xa4c4('0x23')](handleEntityNotFound(_0x4b6136,null))[_0xa4c4('0x23')](respondWithResult(_0x4b6136,null))[_0xa4c4('0x41')](handleError(_0x4b6136,null));};exports[_0xa4c4('0x47')]=function(_0x1157ff,_0x381092){return db[_0xa4c4('0x3d')][_0xa4c4('0x47')](_0x1157ff[_0xa4c4('0x48')],{})[_0xa4c4('0x23')](respondWithResult(_0x381092,0xc9))[_0xa4c4('0x41')](handleError(_0x381092,null));};exports[_0xa4c4('0x22')]=function(_0x197e84,_0x835f73){if(_0x197e84[_0xa4c4('0x48')]['id']){delete _0x197e84[_0xa4c4('0x48')]['id'];}return db[_0xa4c4('0x3d')]['find']({'where':{'id':_0x197e84[_0xa4c4('0x49')]['id']}})[_0xa4c4('0x23')](handleEntityNotFound(_0x835f73,null))['then'](saveUpdates(_0x197e84[_0xa4c4('0x48')],null))['then'](respondWithResult(_0x835f73,null))['catch'](handleError(_0x835f73,null));};exports[_0xa4c4('0x4a')]=function(_0xb812e5,_0x187cc0){return db[_0xa4c4('0x3d')][_0xa4c4('0x46')]({'where':{'id':_0xb812e5[_0xa4c4('0x49')]['id']}})[_0xa4c4('0x23')](handleEntityNotFound(_0x187cc0,null))[_0xa4c4('0x23')](removeEntity(_0x187cc0,null))[_0xa4c4('0x41')](handleError(_0x187cc0,null));};
\ No newline at end of file
index e2e80e5..0537c24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x36bf88,_0x15c459){var _0x332914=function(_0x512adf){while(--_0x512adf){_0x36bf88['push'](_0x36bf88['shift']());}};_0x332914(++_0x15c459);}(_0xb903,0x185));var _0x3b90=function(_0x1c6ffb,_0x2fde07){_0x1c6ffb=_0x1c6ffb-0x0;var _0x5a6e34=_0xb903[_0x1c6ffb];return _0x5a6e34;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var moment=require('moment');var BPromise=require(_0x3b90('0x4'));var rp=require(_0x3b90('0x5'));var fs=require('fs');var path=require(_0x3b90('0x6'));var rimraf=require(_0x3b90('0x7'));var config=require(_0x3b90('0x8'));var attributes=require(_0x3b90('0x9'));module[_0x3b90('0xa')]=function(_0x5acd76,_0x15b68f){return _0x5acd76['define']('WhatsappApplication',attributes,{'tableName':_0x3b90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3b90('0xc'),'collate':_0x3b90('0xd')});};
\ No newline at end of file
+var _0xf873=['bluebird','request-promise','path','rimraf','../../config/environment','exports','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xf873,0xb2));var _0x3f87=function(_0x45b2cf,_0x206e9c){_0x45b2cf=_0x45b2cf-0x0;var _0x263120=_0xf873[_0x45b2cf];return _0x263120;};'use strict';var _=require('lodash');var util=require(_0x3f87('0x0'));var logger=require(_0x3f87('0x1'))(_0x3f87('0x2'));var moment=require(_0x3f87('0x3'));var BPromise=require(_0x3f87('0x4'));var rp=require(_0x3f87('0x5'));var fs=require('fs');var path=require(_0x3f87('0x6'));var rimraf=require(_0x3f87('0x7'));var config=require(_0x3f87('0x8'));var attributes=require('./whatsappApplication.attributes');module[_0x3f87('0x9')]=function(_0x43c8e4,_0x27c03e){return _0x43c8e4['define'](_0x3f87('0xa'),attributes,{'tableName':_0x3f87('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3f87('0xc'),'collate':_0x3f87('0xd')});};
\ No newline at end of file
index 3a28276..c2424c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x5d8de7,_0x1cd195){var _0x55df29=function(_0x20e6d9){while(--_0x20e6d9){_0x5d8de7['push'](_0x5d8de7['shift']());}};_0x55df29(++_0x1cd195);}(_0xe14d,0x1ee));var _0xde14=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0xe14d[_0x6cf19c];return _0xce14f3;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var moment=require(_0xde14('0x2'));var BPromise=require(_0xde14('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xde14('0x4'));var db=require(_0xde14('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xde14('0x6'))(_0xde14('0x7'));var config=require(_0xde14('0x8'));var jayson=require(_0xde14('0x9'));var client=jayson[_0xde14('0xa')][_0xde14('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b1f6b,_0x5a1344,_0x1bd49d){return new BPromise(function(_0x115b7d,_0x2b0e7c){return client[_0xde14('0xc')](_0x4b1f6b,_0x1bd49d)[_0xde14('0xd')](function(_0x176909){logger[_0xde14('0xe')](_0xde14('0xf'),_0x5a1344,'request\x20sent');logger[_0xde14('0x10')](_0xde14('0x11'),_0x5a1344,_0xde14('0x12'),JSON[_0xde14('0x13')](_0x176909));if(_0x176909[_0xde14('0x14')]){if(_0x176909[_0xde14('0x14')][_0xde14('0x15')]===0x1f4){logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x176909[_0xde14('0x14')][_0xde14('0x16')]);return _0x2b0e7c(_0x176909[_0xde14('0x14')][_0xde14('0x16')]);}logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x176909['error']['message']);return _0x115b7d(_0x176909[_0xde14('0x14')][_0xde14('0x16')]);}else{logger[_0xde14('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x5a1344,_0xde14('0x12'));_0x115b7d(_0x176909[_0xde14('0x17')][_0xde14('0x16')]);}})[_0xde14('0x18')](function(_0x3de959){logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x3de959);_0x2b0e7c(_0x3de959);});});}
\ No newline at end of file
+var _0x0a9a=['WhatsappApplication,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x4a782b,_0x55584a){var _0x5cb5a0=function(_0x3010ed){while(--_0x3010ed){_0x4a782b['push'](_0x4a782b['shift']());}};_0x5cb5a0(++_0x55584a);}(_0x0a9a,0x183));var _0xa0a9=function(_0x4a968a,_0x43689e){_0x4a968a=_0x4a968a-0x0;var _0x5a3926=_0x0a9a[_0x4a968a];return _0x5a3926;};'use strict';var _=require('lodash');var util=require(_0xa0a9('0x0'));var moment=require('moment');var BPromise=require(_0xa0a9('0x1'));var rs=require(_0xa0a9('0x2'));var fs=require('fs');var Redis=require(_0xa0a9('0x3'));var db=require(_0xa0a9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa0a9('0x5'))(_0xa0a9('0x6'));var config=require('../../config/environment');var jayson=require(_0xa0a9('0x7'));var client=jayson[_0xa0a9('0x8')][_0xa0a9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x31d689,_0x499a29,_0x2b2eb4){return new BPromise(function(_0x520f42,_0x10aa8a){return client[_0xa0a9('0xa')](_0x31d689,_0x2b2eb4)[_0xa0a9('0xb')](function(_0x2d6ac0){logger['info'](_0xa0a9('0xc'),_0x499a29,_0xa0a9('0xd'));logger['debug']('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x499a29,_0xa0a9('0xd'),JSON[_0xa0a9('0xe')](_0x2d6ac0));if(_0x2d6ac0['error']){if(_0x2d6ac0[_0xa0a9('0xf')]['code']===0x1f4){logger[_0xa0a9('0xf')]('WhatsappApplication,\x20%s,\x20%s',_0x499a29,_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);return _0x10aa8a(_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);}logger[_0xa0a9('0xf')]('WhatsappApplication,\x20%s,\x20%s',_0x499a29,_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);return _0x520f42(_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);}else{logger[_0xa0a9('0x11')](_0xa0a9('0xc'),_0x499a29,'request\x20sent');_0x520f42(_0x2d6ac0[_0xa0a9('0x12')]['message']);}})['catch'](function(_0x347092){logger[_0xa0a9('0xf')](_0xa0a9('0xc'),_0x499a29,_0x347092);_0x10aa8a(_0x347092);});});}
\ No newline at end of file
index eee0655..2812f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x292c=['getMessages','download','post','create','addMessage','/:id/tags','whatsappinteraction:addtags','addTags','whatsapp','update','delete','tracked','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages'];(function(_0x4ca536,_0x57c8de){var _0x3bd35f=function(_0x26d91d){while(--_0x26d91d){_0x4ca536['push'](_0x4ca536['shift']());}};_0x3bd35f(++_0x57c8de);}(_0x292c,0x66));var _0xc292=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x292c[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xc292('0x0'));var util=require('util');var path=require(_0xc292('0x1'));var timeout=require(_0xc292('0x2'));var express=require(_0xc292('0x3'));var router=express[_0xc292('0x4')]();var fs_extra=require(_0xc292('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc292('0x6'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router[_0xc292('0x7')]('/',auth[_0xc292('0x8')](),controller[_0xc292('0x9')]);router[_0xc292('0x7')](_0xc292('0xa'),auth[_0xc292('0x8')](),controller[_0xc292('0xb')]);router[_0xc292('0x7')](_0xc292('0xc'),auth[_0xc292('0x8')](),controller['show']);router[_0xc292('0x7')](_0xc292('0xd'),auth[_0xc292('0x8')](),controller[_0xc292('0xe')]);router[_0xc292('0x7')]('/:id/download',auth[_0xc292('0x8')](),controller[_0xc292('0xf')]);router[_0xc292('0x10')]('/',auth[_0xc292('0x8')](),controller[_0xc292('0x11')]);router[_0xc292('0x10')]('/:id/messages',auth[_0xc292('0x8')](),controller[_0xc292('0x12')]);router[_0xc292('0x10')](_0xc292('0x13'),auth[_0xc292('0x8')](),interaction['tracked']('whatsapp',_0xc292('0x14')),controller[_0xc292('0x15')]);router['put'](_0xc292('0xc'),auth['isAuthenticated'](),interaction['tracked'](_0xc292('0x16'),'whatsappinteraction:update'),controller[_0xc292('0x17')]);router[_0xc292('0x18')](_0xc292('0xc'),auth['isAuthenticated'](),interaction[_0xc292('0x19')]('whatsapp','whatsappinteraction:destroy'),controller[_0xc292('0x1a')]);router[_0xc292('0x18')]('/:id/tags',auth[_0xc292('0x8')](),controller[_0xc292('0x1b')]);module[_0xc292('0x1c')]=router;
\ No newline at end of file
+var _0x23f4=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','removeTags','exports','util','express'];(function(_0x15644b,_0x467bf0){var _0x3f97b1=function(_0x19e6c2){while(--_0x19e6c2){_0x15644b['push'](_0x15644b['shift']());}};_0x3f97b1(++_0x467bf0);}(_0x23f4,0x1ee));var _0x423f=function(_0x5670b5,_0x3e29d6){_0x5670b5=_0x5670b5-0x0;var _0x5cf43b=_0x23f4[_0x5670b5];return _0x5cf43b;};'use strict';var multer=require('multer');var util=require(_0x423f('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x423f('0x1'));var router=express[_0x423f('0x2')]();var fs_extra=require(_0x423f('0x3'));var auth=require(_0x423f('0x4'));var interaction=require(_0x423f('0x5'));var config=require(_0x423f('0x6'));var controller=require(_0x423f('0x7'));router[_0x423f('0x8')]('/',auth[_0x423f('0x9')](),controller['index']);router[_0x423f('0x8')](_0x423f('0xa'),auth['isAuthenticated'](),controller[_0x423f('0xb')]);router[_0x423f('0x8')](_0x423f('0xc'),auth['isAuthenticated'](),controller['show']);router['get'](_0x423f('0xd'),auth['isAuthenticated'](),controller[_0x423f('0xe')]);router[_0x423f('0x8')](_0x423f('0xf'),auth[_0x423f('0x9')](),controller['download']);router[_0x423f('0x10')]('/',auth[_0x423f('0x9')](),controller[_0x423f('0x11')]);router[_0x423f('0x10')](_0x423f('0xd'),auth['isAuthenticated'](),controller[_0x423f('0x12')]);router[_0x423f('0x10')](_0x423f('0x13'),auth[_0x423f('0x9')](),interaction[_0x423f('0x14')](_0x423f('0x15'),_0x423f('0x16')),controller[_0x423f('0x17')]);router[_0x423f('0x18')](_0x423f('0xc'),auth[_0x423f('0x9')](),interaction[_0x423f('0x14')](_0x423f('0x15'),_0x423f('0x19')),controller[_0x423f('0x1a')]);router[_0x423f('0x1b')](_0x423f('0xc'),auth[_0x423f('0x9')](),interaction[_0x423f('0x14')]('whatsapp',_0x423f('0x1c')),controller['destroy']);router['delete'](_0x423f('0x13'),auth['isAuthenticated'](),controller[_0x423f('0x1d')]);module[_0x423f('0x1e')]=router;
\ No newline at end of file
index ce6ae01..2649d37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c46=['DATE','ENUM','out','sequelize','BOOLEAN','STRING'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x8c46,0x171));var _0x68c4=function(_0x3a7c38,_0x3e30cb){_0x3a7c38=_0x3a7c38-0x0;var _0x31b925=_0x8c46[_0x3a7c38];return _0x31b925;};'use strict';var Sequelize=require(_0x68c4('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0x68c4('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x68c4('0x2')]},'thirdDisposition':{'type':Sequelize[_0x68c4('0x2')]},'note':{'type':Sequelize[_0x68c4('0x2')]},'phone':{'type':Sequelize[_0x68c4('0x2')]},'read1stAt':{'type':Sequelize[_0x68c4('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x68c4('0x4')]('in',_0x68c4('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x68c4('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x68c4('0x4')]('in',_0x68c4('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xbc1c=['moment','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x1b4457,_0x3637e){var _0x4459b4=function(_0x15c6cf){while(--_0x15c6cf){_0x1b4457['push'](_0x1b4457['shift']());}};_0x4459b4(++_0x3637e);}(_0xbc1c,0xd8));var _0xcbc1=function(_0xbf8ec1,_0x9169c8){_0xbf8ec1=_0xbf8ec1-0x0;var _0xc84567=_0xbc1c[_0xbf8ec1];return _0xc84567;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xcbc1('0x0'));module['exports']={'closed':{'type':Sequelize[_0xcbc1('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xcbc1('0x2')]},'secondDisposition':{'type':Sequelize[_0xcbc1('0x2')]},'thirdDisposition':{'type':Sequelize[_0xcbc1('0x2')]},'note':{'type':Sequelize[_0xcbc1('0x2')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xcbc1('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xcbc1('0x4')]('in',_0xcbc1('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xcbc1('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xcbc1('0x4')]('in',_0xcbc1('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 0e4fc7d..550f201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6beb=['WhatsappMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','WhatsappInteractionId','filter','where','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','whatsappInteractionTags:save','removeTags','download','unix','toString','root','files','join','server','attachments','transcript-%d-%s.zip','push','User','fullname','firstName','Attachment','Messages','direction','secret','read','WhatsappAccount','Account','Owner','mkdirSync','Whatsapp','createdAt','closed','disposition','basename','existsSync','createReadStream','pipe','out','System','Contact','lastName','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','log','err','unlinkSync','rimraf','zip-dir','moment','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','json','offset','undefined','count','limit','status','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','WhatsappInteraction','rawAttributes','type','getOptions','findAll','whatsapp','query','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','find','catch','create','body','describe','addMessage'];(function(_0x510000,_0x3ad84a){var _0x38f83b=function(_0x1c5a25){while(--_0x1c5a25){_0x510000['push'](_0x510000['shift']());}};_0x38f83b(++_0x3ad84a);}(_0x6beb,0x1b2));var _0xb6be=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6beb[_0x2dafbe];return _0x58a45a;};'use strict';var rimraf=require(_0xb6be('0x0'));var zipdir=require(_0xb6be('0x1'));var moment=require(_0xb6be('0x2'));var BPromise=require('bluebird');var util=require(_0xb6be('0x3'));var path=require(_0xb6be('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xb6be('0x5'));var Redis=require('ioredis');var interaction=require(_0xb6be('0x6'));var qs=require(_0xb6be('0x7'));var pdf=require(_0xb6be('0x8'));var logger=require(_0xb6be('0x9'))(_0xb6be('0xa'));var config=require(_0xb6be('0xb'));var db=require(_0xb6be('0xc'))['db'];config['redis']=_[_0xb6be('0xd')](config[_0xb6be('0xe')],{'host':_0xb6be('0xf'),'port':0x18eb});var socket=require(_0xb6be('0x10'))(new Redis(config[_0xb6be('0xe')]));require(_0xb6be('0x11'))[_0xb6be('0x12')](socket);function respondWithStatusCode(_0x384409,_0x527e1d){_0x527e1d=_0x527e1d||0xcc;return function(_0x1518a2){if(_0x1518a2){return _0x384409[_0xb6be('0x13')](_0x527e1d);}return _0x384409['status'](_0x527e1d)['end']();};}function respondWithResult(_0x1803ec,_0x286a15){_0x286a15=_0x286a15||0xc8;return function(_0x59f242){if(_0x59f242){return _0x1803ec['status'](_0x286a15)[_0xb6be('0x14')](_0x59f242);}};}function respondWithFilteredResult(_0xa690fe,_0x29c71e){return function(_0x51039c){if(_0x51039c){var _0x3a41e3=typeof _0x29c71e[_0xb6be('0x15')]===_0xb6be('0x16')&&typeof _0x29c71e['limit']===_0xb6be('0x16');var _0x3a1b1b=_0x51039c[_0xb6be('0x17')];var _0x35e0d3=_0x3a41e3?0x0:_0x29c71e[_0xb6be('0x15')];var _0x335a70=_0x3a41e3?_0x51039c['count']:_0x29c71e[_0xb6be('0x15')]+_0x29c71e[_0xb6be('0x18')];var _0x3fb0bc;if(_0x335a70>=_0x3a1b1b){_0x335a70=_0x3a1b1b;_0x3fb0bc=0xc8;}else{_0x3fb0bc=0xce;}_0xa690fe[_0xb6be('0x19')](_0x3fb0bc);return _0xa690fe[_0xb6be('0x1a')](_0xb6be('0x1b'),_0x35e0d3+'-'+_0x335a70+'/'+_0x3a1b1b)[_0xb6be('0x14')](_0x51039c);}return null;};}function saveUpdates(_0x1304fb){return function(_0x483674){if(_0x483674){return _0x483674[_0xb6be('0x1c')](_0x1304fb)[_0xb6be('0x1d')](function(_0x12cd1f){return _0x12cd1f;});}return null;};}function removeEntity(_0x27c69d){return function(_0xf0048a){if(_0xf0048a){return _0xf0048a[_0xb6be('0x1e')]()['then'](function(){_0x27c69d[_0xb6be('0x19')](0xcc)[_0xb6be('0x1f')]();});}};}function handleEntityNotFound(_0x125468){return function(_0x3760f4){if(!_0x3760f4){_0x125468[_0xb6be('0x13')](0x194);}return _0x3760f4;};}function handleError(_0x51e172,_0x8c05d3){_0x8c05d3=_0x8c05d3||0x1f4;return function(_0x430853){logger['error'](_0x430853[_0xb6be('0x20')]);if(_0x430853[_0xb6be('0x21')]){delete _0x430853[_0xb6be('0x21')];}_0x51e172[_0xb6be('0x19')](_0x8c05d3)[_0xb6be('0x22')](_0x430853);};}exports[_0xb6be('0x23')]=function(_0x5308e4,_0x49e4db){var _0xf33f76={};var _0x46e4e1=_[_0xb6be('0x24')](db[_0xb6be('0x25')][_0xb6be('0x26')],function(_0x1ad990){return{'name':_0x1ad990['fieldName'],'type':_0x1ad990[_0xb6be('0x27')]['key']};});_0xf33f76=qs[_0xb6be('0x28')](_0x46e4e1,_0x5308e4);return interaction[_0xb6be('0x29')](_0xb6be('0x2a'),_0x5308e4[_0xb6be('0x2b')],_0x5308e4['user'],_0xf33f76,_0x46e4e1)['then'](respondWithFilteredResult(_0x49e4db,_0xf33f76))['catch'](handleError(_0x49e4db,null));};exports[_0xb6be('0x2c')]=function(_0x1d4d66,_0x236baa){var _0x543269={'raw':![],'where':{'id':_0x1d4d66[_0xb6be('0x2d')]['id']}},_0x2b74c8={};_0x2b74c8[_0xb6be('0x2e')]=_['keys'](db['WhatsappInteraction'][_0xb6be('0x26')]);_0x2b74c8[_0xb6be('0x2b')]=_[_0xb6be('0x2f')](_0x1d4d66[_0xb6be('0x2b')]);_0x2b74c8[_0xb6be('0x30')]=_[_0xb6be('0x31')](_0x2b74c8[_0xb6be('0x2e')],_0x2b74c8[_0xb6be('0x2b')]);_0x543269[_0xb6be('0x32')]=_[_0xb6be('0x31')](_0x2b74c8['model'],qs['fields'](_0x1d4d66['query'][_0xb6be('0x33')]));_0x543269['attributes']=_0x543269['attributes'][_0xb6be('0x34')]?_0x543269[_0xb6be('0x32')]:_0x2b74c8['model'];if(_0x1d4d66[_0xb6be('0x2b')][_0xb6be('0x35')]){_0x543269[_0xb6be('0x36')]=[{'all':!![]}];}_0x543269=_[_0xb6be('0x37')]({},_0x543269,_0x1d4d66['options']);return db[_0xb6be('0x25')][_0xb6be('0x38')](_0x543269)[_0xb6be('0x1d')](handleEntityNotFound(_0x236baa,null))[_0xb6be('0x1d')](respondWithResult(_0x236baa,null))[_0xb6be('0x39')](handleError(_0x236baa,null));};exports[_0xb6be('0x3a')]=function(_0x5567d4,_0x55e9fe){return db[_0xb6be('0x25')]['create'](_0x5567d4[_0xb6be('0x3b')],{})[_0xb6be('0x1d')](respondWithResult(_0x55e9fe,0xc9))[_0xb6be('0x39')](handleError(_0x55e9fe,null));};exports[_0xb6be('0x1c')]=function(_0x46a811,_0x3453ff){if(_0x46a811[_0xb6be('0x3b')]['id']){delete _0x46a811[_0xb6be('0x3b')]['id'];}return db[_0xb6be('0x25')][_0xb6be('0x38')]({'where':{'id':_0x46a811[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x3453ff,null))[_0xb6be('0x1d')](saveUpdates(_0x46a811[_0xb6be('0x3b')],null))['then'](respondWithResult(_0x3453ff,null))[_0xb6be('0x39')](handleError(_0x3453ff,null));};exports[_0xb6be('0x1e')]=function(_0x1c09c1,_0x3a485e){return db['WhatsappInteraction'][_0xb6be('0x38')]({'where':{'id':_0x1c09c1[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x3a485e,null))[_0xb6be('0x1d')](removeEntity(_0x3a485e,null))[_0xb6be('0x39')](handleError(_0x3a485e,null));};exports['describe']=function(_0x428a4f,_0x8c0c3d){return db[_0xb6be('0x25')][_0xb6be('0x3c')]()['then'](respondWithResult(_0x8c0c3d,null))[_0xb6be('0x39')](handleError(_0x8c0c3d,null));};exports[_0xb6be('0x3d')]=function(_0x4efe75,_0x4e0df0){return db[_0xb6be('0x3e')][_0xb6be('0x38')]({'where':{'id':_0x4efe75[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x4e0df0,null))[_0xb6be('0x1d')](function(_0x42f785){if(_0x42f785){return _0x42f785[_0xb6be('0x3d')](_0x4efe75[_0xb6be('0x3b')][_0xb6be('0x3f')],_[_0xb6be('0x40')](_0x4efe75[_0xb6be('0x3b')],[_0xb6be('0x3f'),'id'])||{});}})['then'](respondWithResult(_0x4e0df0,null))['catch'](handleError(_0x4e0df0,null));};exports[_0xb6be('0x41')]=function(_0x408326,_0x2213d3){var _0x27670e={'raw':![],'where':{}};var _0x1f245f={};var _0x38a939={'count':0x0,'rows':[]};return db[_0xb6be('0x25')][_0xb6be('0x42')]({'where':{'id':_0x408326[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x2213d3,null))['then'](function(_0x4683c6){if(_0x4683c6){_0x1f245f[_0xb6be('0x2e')]=_['keys'](db[_0xb6be('0x3e')][_0xb6be('0x26')]);_0x1f245f[_0xb6be('0x2b')]=_[_0xb6be('0x2f')](_0x408326[_0xb6be('0x2b')]);_0x1f245f['filters']=_[_0xb6be('0x31')](_0x1f245f[_0xb6be('0x2e')],_0x1f245f['query']);_0x27670e[_0xb6be('0x32')]=_[_0xb6be('0x31')](_0x1f245f[_0xb6be('0x2e')],qs['fields'](_0x408326['query']['fields']));_0x27670e[_0xb6be('0x32')]=_0x27670e[_0xb6be('0x32')][_0xb6be('0x34')]?_0x27670e[_0xb6be('0x32')]:_0x1f245f[_0xb6be('0x2e')];if(!_0x408326[_0xb6be('0x2b')][_0xb6be('0x43')](_0xb6be('0x44'))){_0x27670e[_0xb6be('0x18')]=qs[_0xb6be('0x18')](_0x408326[_0xb6be('0x2b')][_0xb6be('0x18')]);_0x27670e[_0xb6be('0x15')]=qs[_0xb6be('0x15')](_0x408326[_0xb6be('0x2b')]['offset']);}_0x27670e[_0xb6be('0x45')]=qs[_0xb6be('0x46')](_0x408326[_0xb6be('0x2b')][_0xb6be('0x46')]);_0x27670e['where']=qs['filters'](_['pick'](_0x408326[_0xb6be('0x2b')],_0x1f245f[_0xb6be('0x30')]));_0x27670e['where'][_0xb6be('0x47')]=_0x4683c6['id'];if(_0x408326[_0xb6be('0x2b')][_0xb6be('0x48')]){_0x27670e['where']=_[_0xb6be('0x37')](_0x27670e[_0xb6be('0x49')],{'$or':_[_0xb6be('0x24')](_0x27670e[_0xb6be('0x32')],function(_0x51b221){var _0x3de817={};_0x3de817[_0x51b221]={'$like':'%'+_0x408326[_0xb6be('0x2b')][_0xb6be('0x48')]+'%'};return _0x3de817;})});}if(_0x408326[_0xb6be('0x2b')][_0xb6be('0x4a')]){var _0x1b53c6=_0x408326['query'][_0xb6be('0x4a')]['split'](',');var _0x46e52={};_0x46e52[_0x1b53c6[0x0]]={'$gte':moment(_0x1b53c6[0x1])[_0xb6be('0x4b')](_0xb6be('0x4c'))};_0x27670e[_0xb6be('0x49')]=_['merge'](_0x27670e[_0xb6be('0x49')],_0x46e52);}_0x27670e=_[_0xb6be('0x37')]({},_0x27670e,_0x408326['options']);return db[_0xb6be('0x3e')][_0xb6be('0x17')]({'where':_0x27670e['where']})[_0xb6be('0x1d')](function(_0x46ddaf){_0x38a939[_0xb6be('0x17')]=_0x46ddaf;if(_0x408326[_0xb6be('0x2b')][_0xb6be('0x35')]){_0x27670e[_0xb6be('0x36')]=[{'all':!![]}];}return db[_0xb6be('0x3e')][_0xb6be('0x29')](_0x27670e);})[_0xb6be('0x1d')](function(_0x10ac1f){_0x38a939[_0xb6be('0x4d')]=_0x10ac1f;return _0x38a939;});}})[_0xb6be('0x1d')](respondWithFilteredResult(_0x2213d3,_0x27670e))[_0xb6be('0x39')](handleError(_0x2213d3,null));};exports[_0xb6be('0x4e')]=function(_0x61d75e,_0xcc63a4){return db[_0xb6be('0x25')][_0xb6be('0x38')]({'where':{'id':_0x61d75e[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0xcc63a4,null))[_0xb6be('0x1d')](function(_0x2e776c){if(_0x2e776c){return _0x2e776c['setTags'](_0x61d75e['body'][_0xb6be('0x3f')],_['omit'](_0x61d75e[_0xb6be('0x3b')],[_0xb6be('0x3f'),'id'])||{})['spread'](function(){return db['Tag'][_0xb6be('0x29')]({'attributes':['id','name','color'],'where':{'id':_0x61d75e[_0xb6be('0x3b')][_0xb6be('0x3f')]}});})['then'](function(_0x5390cd){socket['emit'](_0xb6be('0x4f'),{'id':Number(_0x61d75e[_0xb6be('0x2d')]['id']),'tags':_0x5390cd||[]});return{'id':Number(_0x61d75e['params']['id']),'tags':_0x5390cd||[]};});}})[_0xb6be('0x1d')](respondWithResult(_0xcc63a4,null))[_0xb6be('0x39')](handleError(_0xcc63a4,null));};exports[_0xb6be('0x50')]=function(_0x9085aa,_0x19b3e8){return db[_0xb6be('0x25')][_0xb6be('0x38')]({'where':{'id':_0x9085aa[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x19b3e8,null))[_0xb6be('0x1d')](function(_0x57aac9){if(_0x57aac9){return _0x57aac9['removeTags'](_0x9085aa['query'][_0xb6be('0x3f')]);}})[_0xb6be('0x1d')](respondWithStatusCode(_0x19b3e8,null))[_0xb6be('0x39')](handleError(_0x19b3e8,null));};exports[_0xb6be('0x51')]=function(_0x1535a5,_0x377293){var _0x9f1b89=moment()[_0xb6be('0x52')]()[_0xb6be('0x53')]();var _0x7dd1b0=path['join'](config[_0xb6be('0x54')],'server',_0xb6be('0x55'),'tmp');var _0x259769=path[_0xb6be('0x56')](config[_0xb6be('0x54')],_0xb6be('0x57'),'files',_0xb6be('0x58'));var _0x5732a0=path[_0xb6be('0x56')](_0x7dd1b0,_0x9f1b89);var _0x54333d=util[_0xb6be('0x4b')](_0xb6be('0x59'),_0x1535a5[_0xb6be('0x2d')]['id'],_0x9f1b89);var _0x5e5dd8=path[_0xb6be('0x56')](_0x7dd1b0,_0x54333d);var _0xadf46e=[];_0xadf46e[_0xb6be('0x5a')]({'model':db[_0xb6be('0x5b')],'as':'User','attributes':['id',_0xb6be('0x5c')],'raw':!![]});_0xadf46e[_0xb6be('0x5a')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xb6be('0x5d'),'lastName'],'raw':!![]});if(_0x1535a5[_0xb6be('0x2b')]['attachments']){_0xadf46e['push']({'model':db[_0xb6be('0x5e')],'as':'Attachment','raw':!![]});}var _0x55be96=[{'model':db[_0xb6be('0x3e')],'as':_0xb6be('0x5f'),'attributes':['id','body','createdAt',_0xb6be('0x60'),_0xb6be('0x61'),_0xb6be('0x62')],'include':_0xadf46e}];_0x55be96[_0xb6be('0x5a')]({'model':db[_0xb6be('0x63')],'as':_0xb6be('0x64'),'attributes':['id',_0xb6be('0x21')]});_0x55be96[_0xb6be('0x5a')]({'model':db[_0xb6be('0x5b')],'as':_0xb6be('0x65'),'attributes':['id',_0xb6be('0x5c')]});return db[_0xb6be('0x25')]['find']({'where':{'id':_0x1535a5[_0xb6be('0x2d')]['id']},'include':_0x55be96})[_0xb6be('0x1d')](handleEntityNotFound(_0x377293,null))[_0xb6be('0x1d')](function(_0x2613b2){if(_0x2613b2){var _0x1ed92a=_0x2613b2['get']({'plain':!![]});fs[_0xb6be('0x66')](_0x5732a0);var _0x500e5f={'channel':_0xb6be('0x67'),'account':_0x1ed92a[_0xb6be('0x64')]['name'],'agent':_0x1ed92a[_0xb6be('0x65')]?_0x1ed92a['Owner'][_0xb6be('0x5c')]:'N.A.','createdAt':moment(_0x1ed92a[_0xb6be('0x68')])[_0xb6be('0x4b')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x1ed92a[_0xb6be('0x69')]?moment(_0x1ed92a['closedAt'])['format'](_0xb6be('0x4c'))[_0xb6be('0x53')]():'','disposition':_0x1ed92a[_0xb6be('0x6a')],'messages':_(_0x1ed92a[_0xb6be('0x5f')])[_0xb6be('0x48')]({'secret':![]})[_0xb6be('0x24')](function(_0x35b8a3){if(_0x35b8a3[_0xb6be('0x5e')]){var _0xed6bbe=path['join'](_0x259769,_0x35b8a3['Attachment'][_0xb6be('0x6b')]);if(fs[_0xb6be('0x6c')](_0xed6bbe)){fs[_0xb6be('0x6d')](_0xed6bbe)[_0xb6be('0x6e')](fs['createWriteStream'](path['join'](_0x5732a0,_0x35b8a3['Attachment'][_0xb6be('0x6b')])));}}return{'date':moment(_0x35b8a3[_0xb6be('0x68')])[_0xb6be('0x4b')](_0xb6be('0x4c'))[_0xb6be('0x53')](),'sender':_0x35b8a3[_0xb6be('0x60')]===_0xb6be('0x6f')?_0x35b8a3[_0xb6be('0x5b')]?_0x35b8a3[_0xb6be('0x5b')]['fullname']:_0xb6be('0x70'):_0x35b8a3[_0xb6be('0x71')][_0xb6be('0x5d')]+(_0x35b8a3[_0xb6be('0x71')][_0xb6be('0x72')]?'\x20'+_0x35b8a3['Contact'][_0xb6be('0x72')]:''),'body':_0x35b8a3['Attachment']?_0x35b8a3['Attachment'][_0xb6be('0x6b')]:_0x35b8a3['body'],'direction':_0x35b8a3['direction']===_0xb6be('0x6f')?'A':'C','secret':_0x35b8a3[_0xb6be('0x61')],'read':_0x35b8a3[_0xb6be('0x62')],'attachment':_0x35b8a3[_0xb6be('0x5e')]};})[_0xb6be('0x73')]()};return ejs[_0xb6be('0x74')](path[_0xb6be('0x56')](config[_0xb6be('0x54')],_0xb6be('0x57'),_0xb6be('0x75'),_0xb6be('0x76')),{'interaction':_0x500e5f})['then'](function(_0xe7d1b8){var _0x5d2b94=path[_0xb6be('0x56')](_0x5732a0,_0xb6be('0x77')+_0x1ed92a['id']+'-'+_0x9f1b89+_0xb6be('0x78'));var _0x1998e7={'path':_0x5d2b94,'channel':_0xb6be('0x67'),'interactionId':_0x1ed92a['id']};return pdf['createPdfFromHTML'](_0xe7d1b8,_0x1998e7);})[_0xb6be('0x1d')](function(){return new BPromise(function(_0x14b182,_0x46b091){zipdir(_0x5732a0,{'saveTo':_0x5e5dd8},function(_0x59045e,_0x411625){if(_0x59045e)return _0x46b091(_0x59045e);return _0x14b182(_0x411625);});})[_0xb6be('0x1d')](function(){return new BPromise(function(_0x2e99e0,_0x1f0f3b){rimraf(_0x5732a0,function(_0x5d5d05){if(_0x5d5d05)_0x1f0f3b(_0x5d5d05);return _0x2e99e0();});});})[_0xb6be('0x1d')](function(){return _0x377293['download'](_0x5e5dd8,_0x54333d,function(_0x5c797a){if(_0x5c797a){console[_0xb6be('0x79')](_0xb6be('0x7a'),_0x5c797a);}else{fs[_0xb6be('0x7b')](_0x5e5dd8);}});});});}else{return _0x377293[_0xb6be('0x13')](0xc8);}})[_0xb6be('0x39')](handleError(_0x377293,null));};
\ No newline at end of file
+var _0xda27=['filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','secret','read','WhatsappAccount','Account','Owner','mkdirSync','Whatsapp','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','createdAt','out','System','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','rimraf','zip-dir','moment','bluebird','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','undefined','count','offset','limit','Content-Range','update','then','destroy','error','stack','name','send','index','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','whatsapp','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','describe','addMessage','WhatsappMessage','omit','ids','findOne','hasOwnProperty','nolimit','sort','where','pick','WhatsappInteractionId'];(function(_0x2b81be,_0x544bdf){var _0x8ed4a7=function(_0x4a7bf4){while(--_0x4a7bf4){_0x2b81be['push'](_0x2b81be['shift']());}};_0x8ed4a7(++_0x544bdf);}(_0xda27,0x1cf));var _0x7da2=function(_0x2ee62d,_0xeaba9d){_0x2ee62d=_0x2ee62d-0x0;var _0x5609cd=_0xda27[_0x2ee62d];return _0x5609cd;};'use strict';var rimraf=require(_0x7da2('0x0'));var zipdir=require(_0x7da2('0x1'));var moment=require(_0x7da2('0x2'));var BPromise=require(_0x7da2('0x3'));var util=require(_0x7da2('0x4'));var path=require(_0x7da2('0x5'));var ejs=require(_0x7da2('0x6'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x7da2('0x7'));var interaction=require(_0x7da2('0x8'));var qs=require(_0x7da2('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x7da2('0xa'))(_0x7da2('0xb'));var config=require(_0x7da2('0xc'));var db=require('../../mysqldb')['db'];config[_0x7da2('0xd')]=_[_0x7da2('0xe')](config[_0x7da2('0xd')],{'host':_0x7da2('0xf'),'port':0x18eb});var socket=require(_0x7da2('0x10'))(new Redis(config[_0x7da2('0xd')]));require(_0x7da2('0x11'))[_0x7da2('0x12')](socket);function respondWithStatusCode(_0xd454cd,_0x5e3880){_0x5e3880=_0x5e3880||0xcc;return function(_0x44143c){if(_0x44143c){return _0xd454cd[_0x7da2('0x13')](_0x5e3880);}return _0xd454cd[_0x7da2('0x14')](_0x5e3880)[_0x7da2('0x15')]();};}function respondWithResult(_0x2f15e7,_0x62229f){_0x62229f=_0x62229f||0xc8;return function(_0x3c5f5a){if(_0x3c5f5a){return _0x2f15e7['status'](_0x62229f)['json'](_0x3c5f5a);}};}function respondWithFilteredResult(_0x458131,_0x49357e){return function(_0x5d6862){if(_0x5d6862){var _0x4e22fc=typeof _0x49357e['offset']===_0x7da2('0x16')&&typeof _0x49357e['limit']===_0x7da2('0x16');var _0x2184c9=_0x5d6862[_0x7da2('0x17')];var _0x564fec=_0x4e22fc?0x0:_0x49357e[_0x7da2('0x18')];var _0x1b8a8a=_0x4e22fc?_0x5d6862[_0x7da2('0x17')]:_0x49357e[_0x7da2('0x18')]+_0x49357e[_0x7da2('0x19')];var _0x3d52be;if(_0x1b8a8a>=_0x2184c9){_0x1b8a8a=_0x2184c9;_0x3d52be=0xc8;}else{_0x3d52be=0xce;}_0x458131['status'](_0x3d52be);return _0x458131['set'](_0x7da2('0x1a'),_0x564fec+'-'+_0x1b8a8a+'/'+_0x2184c9)['json'](_0x5d6862);}return null;};}function saveUpdates(_0x40e307){return function(_0x3027eb){if(_0x3027eb){return _0x3027eb[_0x7da2('0x1b')](_0x40e307)[_0x7da2('0x1c')](function(_0x30134a){return _0x30134a;});}return null;};}function removeEntity(_0xff4f9f){return function(_0x5c205a){if(_0x5c205a){return _0x5c205a[_0x7da2('0x1d')]()['then'](function(){_0xff4f9f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f0848){return function(_0x421fdf){if(!_0x421fdf){_0x4f0848[_0x7da2('0x13')](0x194);}return _0x421fdf;};}function handleError(_0x427202,_0x1071a2){_0x1071a2=_0x1071a2||0x1f4;return function(_0x118734){logger[_0x7da2('0x1e')](_0x118734[_0x7da2('0x1f')]);if(_0x118734['name']){delete _0x118734[_0x7da2('0x20')];}_0x427202[_0x7da2('0x14')](_0x1071a2)[_0x7da2('0x21')](_0x118734);};}exports[_0x7da2('0x22')]=function(_0x5d68ab,_0x23b185){var _0x3f93e0={};var _0x3d6974=_['map'](db[_0x7da2('0x23')][_0x7da2('0x24')],function(_0x15928b){return{'name':_0x15928b[_0x7da2('0x25')],'type':_0x15928b[_0x7da2('0x26')][_0x7da2('0x27')]};});_0x3f93e0=qs[_0x7da2('0x28')](_0x3d6974,_0x5d68ab);return interaction['findAll'](_0x7da2('0x29'),_0x5d68ab[_0x7da2('0x2a')],_0x5d68ab[_0x7da2('0x2b')],_0x3f93e0,_0x3d6974)[_0x7da2('0x1c')](respondWithFilteredResult(_0x23b185,_0x3f93e0))[_0x7da2('0x2c')](handleError(_0x23b185,null));};exports[_0x7da2('0x2d')]=function(_0x42e4f2,_0x490378){var _0x1e715c={'raw':![],'where':{'id':_0x42e4f2[_0x7da2('0x2e')]['id']}},_0x32d5aa={};_0x32d5aa[_0x7da2('0x2f')]=_[_0x7da2('0x30')](db['WhatsappInteraction']['rawAttributes']);_0x32d5aa[_0x7da2('0x2a')]=_[_0x7da2('0x30')](_0x42e4f2[_0x7da2('0x2a')]);_0x32d5aa[_0x7da2('0x31')]=_[_0x7da2('0x32')](_0x32d5aa[_0x7da2('0x2f')],_0x32d5aa[_0x7da2('0x2a')]);_0x1e715c[_0x7da2('0x33')]=_[_0x7da2('0x32')](_0x32d5aa[_0x7da2('0x2f')],qs[_0x7da2('0x34')](_0x42e4f2[_0x7da2('0x2a')][_0x7da2('0x34')]));_0x1e715c[_0x7da2('0x33')]=_0x1e715c[_0x7da2('0x33')][_0x7da2('0x35')]?_0x1e715c[_0x7da2('0x33')]:_0x32d5aa[_0x7da2('0x2f')];if(_0x42e4f2[_0x7da2('0x2a')][_0x7da2('0x36')]){_0x1e715c[_0x7da2('0x37')]=[{'all':!![]}];}_0x1e715c=_[_0x7da2('0x38')]({},_0x1e715c,_0x42e4f2[_0x7da2('0x39')]);return db[_0x7da2('0x23')][_0x7da2('0x3a')](_0x1e715c)[_0x7da2('0x1c')](handleEntityNotFound(_0x490378,null))[_0x7da2('0x1c')](respondWithResult(_0x490378,null))[_0x7da2('0x2c')](handleError(_0x490378,null));};exports[_0x7da2('0x3b')]=function(_0x5d738e,_0x1e29ba){return db[_0x7da2('0x23')][_0x7da2('0x3b')](_0x5d738e[_0x7da2('0x3c')],{})[_0x7da2('0x1c')](respondWithResult(_0x1e29ba,0xc9))[_0x7da2('0x2c')](handleError(_0x1e29ba,null));};exports['update']=function(_0x32bc94,_0x3d2e42){if(_0x32bc94[_0x7da2('0x3c')]['id']){delete _0x32bc94[_0x7da2('0x3c')]['id'];}return db[_0x7da2('0x23')][_0x7da2('0x3a')]({'where':{'id':_0x32bc94[_0x7da2('0x2e')]['id']}})[_0x7da2('0x1c')](handleEntityNotFound(_0x3d2e42,null))[_0x7da2('0x1c')](saveUpdates(_0x32bc94[_0x7da2('0x3c')],null))[_0x7da2('0x1c')](respondWithResult(_0x3d2e42,null))[_0x7da2('0x2c')](handleError(_0x3d2e42,null));};exports['destroy']=function(_0x25f583,_0x2008ec){return db[_0x7da2('0x23')][_0x7da2('0x3a')]({'where':{'id':_0x25f583['params']['id']}})[_0x7da2('0x1c')](handleEntityNotFound(_0x2008ec,null))[_0x7da2('0x1c')](removeEntity(_0x2008ec,null))[_0x7da2('0x2c')](handleError(_0x2008ec,null));};exports[_0x7da2('0x3d')]=function(_0x4b50ee,_0x415cda){return db[_0x7da2('0x23')]['describe']()[_0x7da2('0x1c')](respondWithResult(_0x415cda,null))[_0x7da2('0x2c')](handleError(_0x415cda,null));};exports[_0x7da2('0x3e')]=function(_0x4b579c,_0xce5be4){return db[_0x7da2('0x3f')][_0x7da2('0x3a')]({'where':{'id':_0x4b579c['params']['id']}})[_0x7da2('0x1c')](handleEntityNotFound(_0xce5be4,null))[_0x7da2('0x1c')](function(_0x3b7e4d){if(_0x3b7e4d){return _0x3b7e4d['addMessage'](_0x4b579c['body']['ids'],_[_0x7da2('0x40')](_0x4b579c['body'],[_0x7da2('0x41'),'id'])||{});}})[_0x7da2('0x1c')](respondWithResult(_0xce5be4,null))[_0x7da2('0x2c')](handleError(_0xce5be4,null));};exports['getMessages']=function(_0x385bfc,_0x27ef3f){var _0x1c83e7={'raw':![],'where':{}};var _0xd5f2a9={};var _0x59c9cd={'count':0x0,'rows':[]};return db[_0x7da2('0x23')][_0x7da2('0x42')]({'where':{'id':_0x385bfc[_0x7da2('0x2e')]['id']}})['then'](handleEntityNotFound(_0x27ef3f,null))[_0x7da2('0x1c')](function(_0x4accde){if(_0x4accde){_0xd5f2a9['model']=_[_0x7da2('0x30')](db[_0x7da2('0x3f')][_0x7da2('0x24')]);_0xd5f2a9['query']=_['keys'](_0x385bfc[_0x7da2('0x2a')]);_0xd5f2a9[_0x7da2('0x31')]=_[_0x7da2('0x32')](_0xd5f2a9[_0x7da2('0x2f')],_0xd5f2a9['query']);_0x1c83e7[_0x7da2('0x33')]=_[_0x7da2('0x32')](_0xd5f2a9['model'],qs['fields'](_0x385bfc['query'][_0x7da2('0x34')]));_0x1c83e7[_0x7da2('0x33')]=_0x1c83e7[_0x7da2('0x33')][_0x7da2('0x35')]?_0x1c83e7[_0x7da2('0x33')]:_0xd5f2a9['model'];if(!_0x385bfc[_0x7da2('0x2a')][_0x7da2('0x43')](_0x7da2('0x44'))){_0x1c83e7[_0x7da2('0x19')]=qs[_0x7da2('0x19')](_0x385bfc[_0x7da2('0x2a')][_0x7da2('0x19')]);_0x1c83e7['offset']=qs['offset'](_0x385bfc['query'][_0x7da2('0x18')]);}_0x1c83e7['order']=qs[_0x7da2('0x45')](_0x385bfc[_0x7da2('0x2a')][_0x7da2('0x45')]);_0x1c83e7[_0x7da2('0x46')]=qs['filters'](_[_0x7da2('0x47')](_0x385bfc[_0x7da2('0x2a')],_0xd5f2a9[_0x7da2('0x31')]));_0x1c83e7[_0x7da2('0x46')][_0x7da2('0x48')]=_0x4accde['id'];if(_0x385bfc[_0x7da2('0x2a')][_0x7da2('0x49')]){_0x1c83e7[_0x7da2('0x46')]=_[_0x7da2('0x38')](_0x1c83e7['where'],{'$or':_[_0x7da2('0x4a')](_0x1c83e7['attributes'],function(_0x10416f){var _0x582add={};_0x582add[_0x10416f]={'$like':'%'+_0x385bfc[_0x7da2('0x2a')][_0x7da2('0x49')]+'%'};return _0x582add;})});}if(_0x385bfc[_0x7da2('0x2a')][_0x7da2('0x4b')]){var _0x3494f3=_0x385bfc[_0x7da2('0x2a')][_0x7da2('0x4b')][_0x7da2('0x4c')](',');var _0xf446f3={};_0xf446f3[_0x3494f3[0x0]]={'$gte':moment(_0x3494f3[0x1])[_0x7da2('0x4d')](_0x7da2('0x4e'))};_0x1c83e7['where']=_[_0x7da2('0x38')](_0x1c83e7[_0x7da2('0x46')],_0xf446f3);}_0x1c83e7=_[_0x7da2('0x38')]({},_0x1c83e7,_0x385bfc[_0x7da2('0x39')]);return db['WhatsappMessage']['count']({'where':_0x1c83e7[_0x7da2('0x46')]})['then'](function(_0x392eb3){_0x59c9cd['count']=_0x392eb3;if(_0x385bfc['query'][_0x7da2('0x36')]){_0x1c83e7[_0x7da2('0x37')]=[{'all':!![]}];}return db[_0x7da2('0x3f')][_0x7da2('0x4f')](_0x1c83e7);})[_0x7da2('0x1c')](function(_0x325097){_0x59c9cd['rows']=_0x325097;return _0x59c9cd;});}})['then'](respondWithFilteredResult(_0x27ef3f,_0x1c83e7))[_0x7da2('0x2c')](handleError(_0x27ef3f,null));};exports[_0x7da2('0x50')]=function(_0x53ef36,_0x5ce898){return db[_0x7da2('0x23')][_0x7da2('0x3a')]({'where':{'id':_0x53ef36[_0x7da2('0x2e')]['id']}})['then'](handleEntityNotFound(_0x5ce898,null))[_0x7da2('0x1c')](function(_0x110ccc){if(_0x110ccc){return _0x110ccc[_0x7da2('0x51')](_0x53ef36[_0x7da2('0x3c')]['ids'],_['omit'](_0x53ef36[_0x7da2('0x3c')],['ids','id'])||{})[_0x7da2('0x52')](function(){return db[_0x7da2('0x53')]['findAll']({'attributes':['id',_0x7da2('0x20'),_0x7da2('0x54')],'where':{'id':_0x53ef36[_0x7da2('0x3c')][_0x7da2('0x41')]}});})[_0x7da2('0x1c')](function(_0x27ac2f){socket[_0x7da2('0x55')](_0x7da2('0x56'),{'id':Number(_0x53ef36['params']['id']),'tags':_0x27ac2f||[]});return{'id':Number(_0x53ef36[_0x7da2('0x2e')]['id']),'tags':_0x27ac2f||[]};});}})[_0x7da2('0x1c')](respondWithResult(_0x5ce898,null))[_0x7da2('0x2c')](handleError(_0x5ce898,null));};exports[_0x7da2('0x57')]=function(_0x2a03f7,_0x42bd79){return db[_0x7da2('0x23')][_0x7da2('0x3a')]({'where':{'id':_0x2a03f7[_0x7da2('0x2e')]['id']}})[_0x7da2('0x1c')](handleEntityNotFound(_0x42bd79,null))[_0x7da2('0x1c')](function(_0x34eeb2){if(_0x34eeb2){return _0x34eeb2[_0x7da2('0x57')](_0x2a03f7[_0x7da2('0x2a')][_0x7da2('0x41')]);}})[_0x7da2('0x1c')](respondWithStatusCode(_0x42bd79,null))[_0x7da2('0x2c')](handleError(_0x42bd79,null));};exports[_0x7da2('0x58')]=function(_0x1c281b,_0x2d50fe){var _0x50bde2=moment()[_0x7da2('0x59')]()[_0x7da2('0x5a')]();var _0x45bcb6=path[_0x7da2('0x5b')](config[_0x7da2('0x5c')],_0x7da2('0x5d'),_0x7da2('0x5e'),_0x7da2('0x5f'));var _0x1a1735=path[_0x7da2('0x5b')](config[_0x7da2('0x5c')],_0x7da2('0x5d'),_0x7da2('0x5e'),_0x7da2('0x60'));var _0x24b508=path[_0x7da2('0x5b')](_0x45bcb6,_0x50bde2);var _0x1d30bc=util[_0x7da2('0x4d')]('transcript-%d-%s.zip',_0x1c281b[_0x7da2('0x2e')]['id'],_0x50bde2);var _0x50f07b=path['join'](_0x45bcb6,_0x1d30bc);var _0x4213e3=[];_0x4213e3[_0x7da2('0x61')]({'model':db[_0x7da2('0x62')],'as':'User','attributes':['id',_0x7da2('0x63')],'raw':!![]});_0x4213e3['push']({'model':db[_0x7da2('0x64')],'as':_0x7da2('0x65'),'attributes':['id',_0x7da2('0x66'),_0x7da2('0x67')],'raw':!![]});if(_0x1c281b[_0x7da2('0x2a')][_0x7da2('0x60')]){_0x4213e3[_0x7da2('0x61')]({'model':db[_0x7da2('0x68')],'as':_0x7da2('0x68'),'raw':!![]});}var _0x47821d=[{'model':db[_0x7da2('0x3f')],'as':_0x7da2('0x69'),'attributes':['id',_0x7da2('0x3c'),'createdAt',_0x7da2('0x6a'),_0x7da2('0x6b'),_0x7da2('0x6c')],'include':_0x4213e3}];_0x47821d[_0x7da2('0x61')]({'model':db[_0x7da2('0x6d')],'as':_0x7da2('0x6e'),'attributes':['id',_0x7da2('0x20')]});_0x47821d[_0x7da2('0x61')]({'model':db[_0x7da2('0x62')],'as':_0x7da2('0x6f'),'attributes':['id',_0x7da2('0x63')]});return db[_0x7da2('0x23')]['find']({'where':{'id':_0x1c281b['params']['id']},'include':_0x47821d})[_0x7da2('0x1c')](handleEntityNotFound(_0x2d50fe,null))['then'](function(_0x73dd07){if(_0x73dd07){var _0x4fd459=_0x73dd07['get']({'plain':!![]});fs[_0x7da2('0x70')](_0x24b508);var _0x5423ff={'channel':_0x7da2('0x71'),'account':_0x4fd459[_0x7da2('0x6e')][_0x7da2('0x20')],'agent':_0x4fd459[_0x7da2('0x6f')]?_0x4fd459[_0x7da2('0x6f')][_0x7da2('0x63')]:'N.A.','createdAt':moment(_0x4fd459['createdAt'])[_0x7da2('0x4d')](_0x7da2('0x4e'))['toString'](),'closedAt':_0x4fd459[_0x7da2('0x72')]?moment(_0x4fd459[_0x7da2('0x73')])[_0x7da2('0x4d')](_0x7da2('0x4e'))[_0x7da2('0x5a')]():'','disposition':_0x4fd459[_0x7da2('0x74')],'messages':_(_0x4fd459[_0x7da2('0x69')])['filter']({'secret':![]})['map'](function(_0x1d984b){if(_0x1d984b[_0x7da2('0x68')]){var _0x524325=path[_0x7da2('0x5b')](_0x1a1735,_0x1d984b[_0x7da2('0x68')][_0x7da2('0x75')]);if(fs[_0x7da2('0x76')](_0x524325)){fs[_0x7da2('0x77')](_0x524325)[_0x7da2('0x78')](fs[_0x7da2('0x79')](path[_0x7da2('0x5b')](_0x24b508,_0x1d984b[_0x7da2('0x68')][_0x7da2('0x75')])));}}return{'date':moment(_0x1d984b[_0x7da2('0x7a')])[_0x7da2('0x4d')](_0x7da2('0x4e'))[_0x7da2('0x5a')](),'sender':_0x1d984b['direction']===_0x7da2('0x7b')?_0x1d984b[_0x7da2('0x62')]?_0x1d984b[_0x7da2('0x62')]['fullname']:_0x7da2('0x7c'):_0x1d984b[_0x7da2('0x65')][_0x7da2('0x66')]+(_0x1d984b['Contact']['lastName']?'\x20'+_0x1d984b[_0x7da2('0x65')][_0x7da2('0x67')]:''),'body':_0x1d984b['Attachment']?_0x1d984b[_0x7da2('0x68')]['basename']:_0x1d984b['body'],'direction':_0x1d984b['direction']==='out'?'A':'C','secret':_0x1d984b[_0x7da2('0x6b')],'read':_0x1d984b[_0x7da2('0x6c')],'attachment':_0x1d984b['Attachment']};})[_0x7da2('0x7d')]()};return ejs[_0x7da2('0x7e')](path['join'](config[_0x7da2('0x5c')],_0x7da2('0x5d'),_0x7da2('0x7f'),_0x7da2('0x80')),{'interaction':_0x5423ff})[_0x7da2('0x1c')](function(_0x16f389){var _0x55d233=path['join'](_0x24b508,_0x7da2('0x81')+_0x4fd459['id']+'-'+_0x50bde2+_0x7da2('0x82'));var _0x233de2={'path':_0x55d233,'channel':_0x7da2('0x71'),'interactionId':_0x4fd459['id']};return pdf[_0x7da2('0x83')](_0x16f389,_0x233de2);})[_0x7da2('0x1c')](function(){return new BPromise(function(_0x518887,_0xa6429b){zipdir(_0x24b508,{'saveTo':_0x50f07b},function(_0xb0bf83,_0x55e295){if(_0xb0bf83)return _0xa6429b(_0xb0bf83);return _0x518887(_0x55e295);});})[_0x7da2('0x1c')](function(){return new BPromise(function(_0x2cb136,_0x47e540){rimraf(_0x24b508,function(_0xa5182d){if(_0xa5182d)_0x47e540(_0xa5182d);return _0x2cb136();});});})[_0x7da2('0x1c')](function(){return _0x2d50fe[_0x7da2('0x58')](_0x50f07b,_0x1d30bc,function(_0x1ba049){if(_0x1ba049){console[_0x7da2('0x84')](_0x7da2('0x85'),_0x1ba049);}else{fs['unlinkSync'](_0x50f07b);}});});});}else{return _0x2d50fe[_0x7da2('0x13')](0xc8);}})[_0x7da2('0x2c')](handleError(_0x2d50fe,null));};
\ No newline at end of file
index c92394a..219ee60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4157=['save','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage'];(function(_0x45acdb,_0x220bf2){var _0x3bbadd=function(_0x2a7903){while(--_0x2a7903){_0x45acdb['push'](_0x45acdb['shift']());}};_0x3bbadd(++_0x220bf2);}(_0x4157,0xf3));var _0x7415=function(_0x2590aa,_0x21217e){_0x2590aa=_0x2590aa-0x0;var _0x339f70=_0x4157[_0x2590aa];return _0x339f70;};'use strict';var EventEmitter=require(_0x7415('0x0'));var WhatsappInteraction=require(_0x7415('0x1'))['db'][_0x7415('0x2')];var WhatsappMessage=require(_0x7415('0x1'))['db'][_0x7415('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7415('0x4'),'afterUpdate':_0x7415('0x5'),'afterDestroy':_0x7415('0x6')};function emitEvent(_0x341b12){return function(_0x7e7a68,_0x6c6d0d,_0x23038f){_0x7e7a68[_0x7415('0x7')]({'attributes':['id'],'raw':!![]})[_0x7415('0x8')](function(_0x49b694){_0x7e7a68[_0x7415('0x9')]('Users',_0x49b694[_0x7415('0xa')](function(_0x5b0c6f){return{'id':_0x5b0c6f['id']};}));return WhatsappMessage[_0x7415('0xb')]({'where':{'WhatsappInteractionId':_0x7e7a68['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7415('0x8')](function(_0x30090b){_0x7e7a68[_0x7415('0x9')](_0x7415('0xc'),_0x30090b[_0x7415('0xd')]);WhatsappInteractionEvents[_0x7415('0xe')](_0x341b12+':'+_0x7e7a68['id'],_0x7e7a68);WhatsappInteractionEvents['emit'](_0x341b12,_0x7e7a68);_0x23038f(null);})[_0x7415('0xf')](_0x23038f(null));};}for(var e in events){if(events[_0x7415('0x10')](e)){var event=events[e];WhatsappInteraction[_0x7415('0x11')](e,emitEvent(event));}}module[_0x7415('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x851d=['emit','catch','exports','events','WhatsappInteraction','../../mysqldb','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','length'];(function(_0x81697e,_0x552c16){var _0x1f6e36=function(_0x2a6bbd){while(--_0x2a6bbd){_0x81697e['push'](_0x81697e['shift']());}};_0x1f6e36(++_0x552c16);}(_0x851d,0x69));var _0xd851=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x851d[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xd851('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0xd851('0x1')];var WhatsappMessage=require(_0xd851('0x2'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xd851('0x3')](0x0);var events={'afterCreate':_0xd851('0x4'),'afterUpdate':_0xd851('0x5'),'afterDestroy':_0xd851('0x6')};function emitEvent(_0x36eb20){return function(_0x456821,_0x4812ec,_0x578809){_0x456821[_0xd851('0x7')]({'attributes':['id'],'raw':!![]})[_0xd851('0x8')](function(_0x3d2383){_0x456821[_0xd851('0x9')](_0xd851('0xa'),_0x3d2383[_0xd851('0xb')](function(_0x599973){return{'id':_0x599973['id']};}));return WhatsappMessage[_0xd851('0xc')]({'where':{'WhatsappInteractionId':_0x456821['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x33e66a){_0x456821[_0xd851('0x9')]('unreadMessages',_0x33e66a[_0xd851('0xd')]);WhatsappInteractionEvents[_0xd851('0xe')](_0x36eb20+':'+_0x456821['id'],_0x456821);WhatsappInteractionEvents[_0xd851('0xe')](_0x36eb20,_0x456821);_0x578809(null);})[_0xd851('0xf')](_0x578809(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0xd851('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
index 640235f..7f9d54a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4aa=['path','../../config/environment','./whatsappInteraction.attributes','exports','WhatsappInteraction','whatsapp_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api'];(function(_0x497602,_0x49b60b){var _0xb4dbfd=function(_0x122198){while(--_0x122198){_0x497602['push'](_0x497602['shift']());}};_0xb4dbfd(++_0x49b60b);}(_0xb4aa,0xc0));var _0xab4a=function(_0x2c950e,_0x340c14){_0x2c950e=_0x2c950e-0x0;var _0x3c9a42=_0xb4aa[_0x2c950e];return _0x3c9a42;};'use strict';var _=require(_0xab4a('0x0'));var util=require(_0xab4a('0x1'));var logger=require('../../config/logger')(_0xab4a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xab4a('0x3'));var rimraf=require('rimraf');var config=require(_0xab4a('0x4'));var attributes=require(_0xab4a('0x5'));module[_0xab4a('0x6')]=function(_0x12f90d,_0x3536bf){return _0x12f90d['define'](_0xab4a('0x7'),attributes,{'tableName':_0xab4a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x261597,_0xad735f,_0x5850cb){if(_0x261597[_0xab4a('0x9')]('closed')){_0x261597[_0xab4a('0xa')]=moment()[_0xab4a('0xb')](_0xab4a('0xc'));}_0x5850cb(null,_0x261597);}}});};
\ No newline at end of file
+var _0x257c=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','whatsapp_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x317e30,_0x32ad66){var _0x203788=function(_0x264d38){while(--_0x264d38){_0x317e30['push'](_0x317e30['shift']());}};_0x203788(++_0x32ad66);}(_0x257c,0x111));var _0xc257=function(_0x545433,_0xe238b6){_0x545433=_0x545433-0x0;var _0x1d7243=_0x257c[_0x545433];return _0x1d7243;};'use strict';var _=require('lodash');var util=require(_0xc257('0x0'));var logger=require(_0xc257('0x1'))(_0xc257('0x2'));var moment=require(_0xc257('0x3'));var BPromise=require(_0xc257('0x4'));var rp=require(_0xc257('0x5'));var fs=require('fs');var path=require(_0xc257('0x6'));var rimraf=require('rimraf');var config=require(_0xc257('0x7'));var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0x49fd88,_0x2ee293){return _0x49fd88['define']('WhatsappInteraction',attributes,{'tableName':_0xc257('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x13d321,_0x3cd84e,_0x3c42f8){if(_0x13d321[_0xc257('0x9')](_0xc257('0xa'))){_0x13d321['closedAt']=moment()[_0xc257('0xb')](_0xc257('0xc'));}_0x3c42f8(null,_0x13d321);}}});};
\ No newline at end of file
index 92bb0a5..1f3b21f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebec=['debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','where','attributes','limit','stringify','AddTagsToWhatsappInteraction','find','addTags','omit','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s'];(function(_0x34a65c,_0x57a5c9){var _0x228735=function(_0x3a7980){while(--_0x3a7980){_0x34a65c['push'](_0x34a65c['shift']());}};_0x228735(++_0x57a5c9);}(_0xebec,0xf4));var _0xcebe=function(_0x3aa17a,_0x42e72c){_0x3aa17a=_0x3aa17a-0x0;var _0x3c8895=_0xebec[_0x3aa17a];return _0x3c8895;};'use strict';var _=require(_0xcebe('0x0'));var util=require(_0xcebe('0x1'));var moment=require(_0xcebe('0x2'));var BPromise=require(_0xcebe('0x3'));var rs=require(_0xcebe('0x4'));var fs=require('fs');var Redis=require(_0xcebe('0x5'));var db=require(_0xcebe('0x6'))['db'];var utils=require(_0xcebe('0x7'));var logger=require(_0xcebe('0x8'))('rpc');var config=require(_0xcebe('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xcebe('0xa')][_0xcebe('0xb')]({'port':0x232a});config[_0xcebe('0xc')]=_['defaults'](config['redis'],{'host':_0xcebe('0xd'),'port':0x18eb});var socket=require(_0xcebe('0xe'))(new Redis(config[_0xcebe('0xc')]));require('./whatsappInteraction.socket')[_0xcebe('0xf')](socket);function respondWithRpcPromise(_0x57160d,_0x42f187,_0x4b83a1){return new BPromise(function(_0x199f7e,_0x205229){return client[_0xcebe('0x10')](_0x57160d,_0x4b83a1)[_0xcebe('0x11')](function(_0x40d84c){logger[_0xcebe('0x12')](_0xcebe('0x13'),_0x42f187,'request\x20sent');logger[_0xcebe('0x14')](_0xcebe('0x15'),_0x42f187,_0xcebe('0x16'),JSON['stringify'](_0x40d84c));if(_0x40d84c[_0xcebe('0x17')]){if(_0x40d84c[_0xcebe('0x17')][_0xcebe('0x18')]===0x1f4){logger[_0xcebe('0x17')](_0xcebe('0x13'),_0x42f187,_0x40d84c['error'][_0xcebe('0x19')]);return _0x205229(_0x40d84c[_0xcebe('0x17')]['message']);}logger[_0xcebe('0x17')](_0xcebe('0x13'),_0x42f187,_0x40d84c[_0xcebe('0x17')][_0xcebe('0x19')]);return _0x199f7e(_0x40d84c[_0xcebe('0x17')][_0xcebe('0x19')]);}else{logger[_0xcebe('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x42f187,_0xcebe('0x16'));_0x199f7e(_0x40d84c[_0xcebe('0x1a')][_0xcebe('0x19')]);}})[_0xcebe('0x1b')](function(_0x12fe75){logger[_0xcebe('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x42f187,_0x12fe75);_0x205229(_0x12fe75);});});}exports[_0xcebe('0x1c')]=function(_0x14e289){var _0x501007=this;return new Promise(function(_0x5b8dd8,_0x2a52e7){return db[_0xcebe('0x1d')][_0xcebe('0x1e')](_0x14e289[_0xcebe('0x1f')],{'raw':_0x14e289[_0xcebe('0x20')]?_0x14e289['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14e289[_0xcebe('0x20')]?_0x14e289[_0xcebe('0x20')][_0xcebe('0x21')]||null:null,'attributes':_0x14e289[_0xcebe('0x20')]?_0x14e289[_0xcebe('0x20')][_0xcebe('0x22')]||null:null,'limit':_0x14e289[_0xcebe('0x20')]?_0x14e289[_0xcebe('0x20')][_0xcebe('0x23')]||null:null})[_0xcebe('0x11')](function(_0x2c27e8){logger[_0xcebe('0x12')](_0xcebe('0x1c'),_0x14e289);logger[_0xcebe('0x14')]('UpdateWhatsappInteraction',_0x14e289,JSON[_0xcebe('0x24')](_0x2c27e8));_0x5b8dd8(_0x2c27e8);})['catch'](function(_0x34c8b4){logger[_0xcebe('0x17')]('UpdateWhatsappInteraction',_0x34c8b4[_0xcebe('0x19')],_0x14e289);_0x2a52e7(_0x501007[_0xcebe('0x17')](0x1f4,_0x34c8b4[_0xcebe('0x19')]));});});};exports[_0xcebe('0x25')]=function(_0x3af074){return new Promise(function(_0x20632d,_0x47d424){return db[_0xcebe('0x1d')][_0xcebe('0x26')]({'where':_0x3af074['options']?_0x3af074[_0xcebe('0x20')]['where']||null:null})[_0xcebe('0x11')](function(_0x25053f){if(_0x25053f){return _0x25053f[_0xcebe('0x27')](_0x3af074['body']['ids'],_[_0xcebe('0x28')](_0x3af074[_0xcebe('0x1f')],[_0xcebe('0x29'),'id'])||{});}})[_0xcebe('0x2a')](function(_0x2afc66){logger[_0xcebe('0x12')]('AddTags',_0x3af074);logger['debug'](_0xcebe('0x2b'),_0x3af074,JSON[_0xcebe('0x24')](_0x2afc66));_0x20632d(_0x2afc66);})['catch'](function(_0x7d176){logger['error'](_0xcebe('0x2b'),_0x7d176[_0xcebe('0x19')],_0x3af074);_0x47d424(_this[_0xcebe('0x17')](0x1f4,_0x7d176[_0xcebe('0x19')]));});});};
\ No newline at end of file
+var _0x51ce=['attributes','limit','find','where','ids','omit','body','spread','AddTags','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','localhost','./whatsappInteraction.socket','register','request','then','WhatsappInteraction,\x20%s,\x20%s','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','raw'];(function(_0xc20f22,_0x49698f){var _0x1535d5=function(_0x5ce3f3){while(--_0x5ce3f3){_0xc20f22['push'](_0xc20f22['shift']());}};_0x1535d5(++_0x49698f);}(_0x51ce,0x171));var _0xe51c=function(_0x40f9a0,_0x3458cc){_0x40f9a0=_0x40f9a0-0x0;var _0x3e3144=_0x51ce[_0x40f9a0];return _0x3e3144;};'use strict';var _=require(_0xe51c('0x0'));var util=require(_0xe51c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe51c('0x2'));var db=require(_0xe51c('0x3'))['db'];var utils=require(_0xe51c('0x4'));var logger=require('../../config/logger')(_0xe51c('0x5'));var config=require(_0xe51c('0x6'));var jayson=require(_0xe51c('0x7'));var client=jayson[_0xe51c('0x8')]['http']({'port':0x232a});config[_0xe51c('0x9')]=_['defaults'](config[_0xe51c('0x9')],{'host':_0xe51c('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe51c('0x9')]));require(_0xe51c('0xb'))[_0xe51c('0xc')](socket);function respondWithRpcPromise(_0x50bef7,_0x4778ba,_0x4bf3bf){return new BPromise(function(_0x5d0b3d,_0x1b624d){return client[_0xe51c('0xd')](_0x50bef7,_0x4bf3bf)[_0xe51c('0xe')](function(_0x411207){logger['info'](_0xe51c('0xf'),_0x4778ba,'request\x20sent');logger[_0xe51c('0x10')](_0xe51c('0x11'),_0x4778ba,_0xe51c('0x12'),JSON[_0xe51c('0x13')](_0x411207));if(_0x411207[_0xe51c('0x14')]){if(_0x411207[_0xe51c('0x14')][_0xe51c('0x15')]===0x1f4){logger[_0xe51c('0x14')](_0xe51c('0xf'),_0x4778ba,_0x411207['error'][_0xe51c('0x16')]);return _0x1b624d(_0x411207[_0xe51c('0x14')][_0xe51c('0x16')]);}logger['error'](_0xe51c('0xf'),_0x4778ba,_0x411207[_0xe51c('0x14')][_0xe51c('0x16')]);return _0x5d0b3d(_0x411207[_0xe51c('0x14')][_0xe51c('0x16')]);}else{logger[_0xe51c('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x4778ba,'request\x20sent');_0x5d0b3d(_0x411207[_0xe51c('0x18')][_0xe51c('0x16')]);}})[_0xe51c('0x19')](function(_0x2d50e7){logger[_0xe51c('0x14')](_0xe51c('0xf'),_0x4778ba,_0x2d50e7);_0x1b624d(_0x2d50e7);});});}exports[_0xe51c('0x1a')]=function(_0x1e8ff6){var _0x5541b6=this;return new Promise(function(_0x4eac6e,_0x5439ca){return db[_0xe51c('0x1b')][_0xe51c('0x1c')](_0x1e8ff6['body'],{'raw':_0x1e8ff6[_0xe51c('0x1d')]?_0x1e8ff6[_0xe51c('0x1d')][_0xe51c('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e8ff6[_0xe51c('0x1d')]?_0x1e8ff6['options']['where']||null:null,'attributes':_0x1e8ff6[_0xe51c('0x1d')]?_0x1e8ff6[_0xe51c('0x1d')][_0xe51c('0x1f')]||null:null,'limit':_0x1e8ff6[_0xe51c('0x1d')]?_0x1e8ff6['options'][_0xe51c('0x20')]||null:null})[_0xe51c('0xe')](function(_0x483742){logger[_0xe51c('0x17')](_0xe51c('0x1a'),_0x1e8ff6);logger['debug'](_0xe51c('0x1a'),_0x1e8ff6,JSON[_0xe51c('0x13')](_0x483742));_0x4eac6e(_0x483742);})['catch'](function(_0x7a5f35){logger[_0xe51c('0x14')](_0xe51c('0x1a'),_0x7a5f35['message'],_0x1e8ff6);_0x5439ca(_0x5541b6['error'](0x1f4,_0x7a5f35[_0xe51c('0x16')]));});});};exports['AddTagsToWhatsappInteraction']=function(_0x55d1bc){return new Promise(function(_0x1c7cbe,_0x5e9cb5){return db[_0xe51c('0x1b')][_0xe51c('0x21')]({'where':_0x55d1bc[_0xe51c('0x1d')]?_0x55d1bc[_0xe51c('0x1d')][_0xe51c('0x22')]||null:null})[_0xe51c('0xe')](function(_0x2944bf){if(_0x2944bf){return _0x2944bf['addTags'](_0x55d1bc['body'][_0xe51c('0x23')],_[_0xe51c('0x24')](_0x55d1bc[_0xe51c('0x25')],[_0xe51c('0x23'),'id'])||{});}})[_0xe51c('0x26')](function(_0x13e70f){logger['info'](_0xe51c('0x27'),_0x55d1bc);logger['debug'](_0xe51c('0x27'),_0x55d1bc,JSON[_0xe51c('0x13')](_0x13e70f));_0x1c7cbe(_0x13e70f);})['catch'](function(_0x20e44a){logger[_0xe51c('0x14')](_0xe51c('0x27'),_0x20e44a[_0xe51c('0x16')],_0x55d1bc);_0x5e9cb5(_this[_0xe51c('0x14')](0x1f4,_0x20e44a['message']));});});};
\ No newline at end of file
index d024349..7ac1d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d51=['register','whatsappInteraction:','save','remove','update','emit','removeListener'];(function(_0x332354,_0x149358){var _0x4782bb=function(_0x4c2cbe){while(--_0x4c2cbe){_0x332354['push'](_0x332354['shift']());}};_0x4782bb(++_0x149358);}(_0x9d51,0x79));var _0x19d5=function(_0x3daf5b,_0x47920e){_0x3daf5b=_0x3daf5b-0x0;var _0x18415b=_0x9d51[_0x3daf5b];return _0x18415b;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x19d5('0x0'),_0x19d5('0x1'),_0x19d5('0x2')];function createListener(_0x2b864e,_0x22c223){return function(_0x337655){_0x22c223[_0x19d5('0x3')](_0x2b864e,_0x337655);};}function removeListener(_0x27d5b3,_0x280fca){return function(){WhatsappInteractionEvents[_0x19d5('0x4')](_0x27d5b3,_0x280fca);};}exports[_0x19d5('0x5')]=function(_0x43c6c0){for(var _0x27a596=0x0,_0x400161=events['length'];_0x27a596<_0x400161;_0x27a596++){var _0x51a083=events[_0x27a596];var _0x129728=createListener(_0x19d5('0x6')+_0x51a083,_0x43c6c0);WhatsappInteractionEvents['on'](_0x51a083,_0x129728);}};
\ No newline at end of file
+var _0x2203=['length','whatsappInteraction:','remove','update','emit','register'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x2203,0x140));var _0x3220=function(_0x22d53d,_0x339808){_0x22d53d=_0x22d53d-0x0;var _0x40dd91=_0x2203[_0x22d53d];return _0x40dd91;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=['save',_0x3220('0x0'),_0x3220('0x1')];function createListener(_0x15dc58,_0x2bde38){return function(_0x821636){_0x2bde38[_0x3220('0x2')](_0x15dc58,_0x821636);};}function removeListener(_0x3bcf76,_0x7bc860){return function(){WhatsappInteractionEvents['removeListener'](_0x3bcf76,_0x7bc860);};}exports[_0x3220('0x3')]=function(_0x2b2013){for(var _0x599686=0x0,_0x5e5882=events[_0x3220('0x4')];_0x599686<_0x5e5882;_0x599686++){var _0x391321=events[_0x599686];var _0x2dfbf1=createListener(_0x3220('0x5')+_0x391321,_0x2b2013);WhatsappInteractionEvents['on'](_0x391321,_0x2dfbf1);}};
\ No newline at end of file
index 01b61a7..54db639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9074=['../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','create','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x59af47,_0x2cb60e){var _0x5a02e5=function(_0x6d5831){while(--_0x6d5831){_0x59af47['push'](_0x59af47['shift']());}};_0x5a02e5(++_0x2cb60e);}(_0x9074,0x159));var _0x4907=function(_0x16ba88,_0x58e5fe){_0x16ba88=_0x16ba88-0x0;var _0x3d1272=_0x9074[_0x16ba88];return _0x3d1272;};'use strict';var multer=require(_0x4907('0x0'));var util=require('util');var path=require(_0x4907('0x1'));var timeout=require(_0x4907('0x2'));var express=require(_0x4907('0x3'));var router=express[_0x4907('0x4')]();var fs_extra=require(_0x4907('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4907('0x6'));var config=require(_0x4907('0x7'));var controller=require(_0x4907('0x8'));router[_0x4907('0x9')]('/',auth['isAuthenticated'](),controller[_0x4907('0xa')]);router[_0x4907('0x9')]('/describe',auth[_0x4907('0xb')](),controller[_0x4907('0xc')]);router[_0x4907('0x9')](_0x4907('0xd'),auth[_0x4907('0xb')](),controller['show']);router[_0x4907('0xe')]('/',auth['isAuthenticated'](),interaction[_0x4907('0xf')]('whatsapp','whatsappmessage:create'),controller[_0x4907('0x10')]);router['post']('/:id/status',controller[_0x4907('0x11')]);router[_0x4907('0x12')](_0x4907('0xd'),auth['isAuthenticated'](),controller[_0x4907('0x13')]);router[_0x4907('0x12')](_0x4907('0x14'),auth[_0x4907('0xb')](),controller[_0x4907('0x15')]);router[_0x4907('0x12')](_0x4907('0x16'),auth[_0x4907('0xb')](),controller[_0x4907('0x17')]);router[_0x4907('0x18')](_0x4907('0xd'),auth[_0x4907('0xb')](),controller[_0x4907('0x19')]);module[_0x4907('0x1a')]=router;
\ No newline at end of file
+var _0xd23c=['status','put','update','/:id/accept','accept','/:id/reject','delete','exports','multer','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status'];(function(_0x26dbfd,_0x4e1e05){var _0x4bbbe7=function(_0x4507ac){while(--_0x4507ac){_0x26dbfd['push'](_0x26dbfd['shift']());}};_0x4bbbe7(++_0x4e1e05);}(_0xd23c,0x78));var _0xcd23=function(_0x454a21,_0x12e741){_0x454a21=_0x454a21-0x0;var _0x2594b8=_0xd23c[_0x454a21];return _0x2594b8;};'use strict';var multer=require(_0xcd23('0x0'));var util=require('util');var path=require(_0xcd23('0x1'));var timeout=require(_0xcd23('0x2'));var express=require(_0xcd23('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcd23('0x4'));var config=require(_0xcd23('0x5'));var controller=require(_0xcd23('0x6'));router[_0xcd23('0x7')]('/',auth['isAuthenticated'](),controller[_0xcd23('0x8')]);router[_0xcd23('0x7')](_0xcd23('0x9'),auth[_0xcd23('0xa')](),controller[_0xcd23('0xb')]);router['get'](_0xcd23('0xc'),auth['isAuthenticated'](),controller[_0xcd23('0xd')]);router[_0xcd23('0xe')]('/',auth['isAuthenticated'](),interaction[_0xcd23('0xf')](_0xcd23('0x10'),_0xcd23('0x11')),controller[_0xcd23('0x12')]);router[_0xcd23('0xe')](_0xcd23('0x13'),controller[_0xcd23('0x14')]);router[_0xcd23('0x15')](_0xcd23('0xc'),auth[_0xcd23('0xa')](),controller[_0xcd23('0x16')]);router['put'](_0xcd23('0x17'),auth[_0xcd23('0xa')](),controller[_0xcd23('0x18')]);router[_0xcd23('0x15')](_0xcd23('0x19'),auth[_0xcd23('0xa')](),controller['reject']);router[_0xcd23('0x1a')](_0xcd23('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xcd23('0x1b')]=router;
\ No newline at end of file
index 5e520fa..273418f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0882=['sequelize','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x0882,0x1f0));var _0x2088=function(_0x2e7087,_0x112eec){_0x2e7087=_0x2e7087-0x0;var _0xb5b3a6=_0x0882[_0x2e7087];return _0xb5b3a6;};'use strict';var Sequelize=require(_0x2088('0x0'));module['exports']={'body':{'type':Sequelize[_0x2088('0x1')](_0x2088('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x2088('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2088('0x4')]('in',_0x2088('0x5')),'defaultValue':_0x2088('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x2088('0x6')](0xbe)},'phone':{'type':Sequelize[_0x2088('0x6')]},'readAt':{'type':Sequelize[_0x2088('0x7')]},'secret':{'type':Sequelize[_0x2088('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x2088('0x6')]},'providerResponse':{'type':Sequelize[_0x2088('0x1')]}};
\ No newline at end of file
+var _0xdf83=['TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x1f9395,_0x21f4ba){var _0x1fa1b1=function(_0x5b069f){while(--_0x5b069f){_0x1f9395['push'](_0x1f9395['shift']());}};_0x1fa1b1(++_0x21f4ba);}(_0xdf83,0x120));var _0x3df8=function(_0x833417,_0x2ea2f9){_0x833417=_0x833417-0x0;var _0x388395=_0xdf83[_0x833417];return _0x388395;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x3df8('0x0')),'allowNull':![]},'read':{'type':Sequelize[_0x3df8('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3df8('0x2')]('in',_0x3df8('0x3')),'defaultValue':_0x3df8('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3df8('0x4')](0xbe)},'phone':{'type':Sequelize[_0x3df8('0x4')]},'readAt':{'type':Sequelize[_0x3df8('0x5')]},'secret':{'type':Sequelize[_0x3df8('0x1')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3df8('0x4')]},'providerResponse':{'type':Sequelize[_0x3df8('0x6')]}};
\ No newline at end of file
index 5aa40ed..58a55ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ba=['socket.io-emitter','register','jayson/promise','client','http','request','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','catch','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','sendStatus','stack','name','send','index','map','WhatsappMessage','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','describe','../../config/logger','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','WhatsappInteraction','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','whatsapp-interactions','get','WhatsappInteractionId','role','RejectMessage','rejectMessage','ContactId','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','redis','defaults','localhost'];(function(_0x2a453b,_0x479c50){var _0x132f79=function(_0x5e3d83){while(--_0x5e3d83){_0x2a453b['push'](_0x2a453b['shift']());}};_0x132f79(++_0x479c50);}(_0xb9ba,0x102));var _0xab9b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb9ba[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xab9b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xab9b('0x1'));var jsonpatch=require(_0xab9b('0x2'));var rp=require('request-promise');var moment=require(_0xab9b('0x3'));var BPromise=require(_0xab9b('0x4'));var Mustache=require(_0xab9b('0x5'));var util=require(_0xab9b('0x6'));var path=require(_0xab9b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xab9b('0x8'));var fs=require('fs');var fs_extra=require(_0xab9b('0x9'));var _=require('lodash');var squel=require(_0xab9b('0xa'));var crypto=require(_0xab9b('0xb'));var jsforce=require(_0xab9b('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xab9b('0xd'));var Papa=require(_0xab9b('0xe'));var Redis=require(_0xab9b('0xf'));var authService=require(_0xab9b('0x10'));var qs=require(_0xab9b('0x11'));var as=require(_0xab9b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xab9b('0x13'));var utils=require('../../config/utils');var config=require(_0xab9b('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xab9b('0x15')]=_[_0xab9b('0x16')](config[_0xab9b('0x15')],{'host':_0xab9b('0x17'),'port':0x18eb});var socket=require(_0xab9b('0x18'))(new Redis(config[_0xab9b('0x15')]));require('./whatsappMessage.socket')[_0xab9b('0x19')](socket);var jayson=require(_0xab9b('0x1a'));var client=jayson[_0xab9b('0x1b')][_0xab9b('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0xab9b('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x2e6a5f,_0x1b2ddb,_0x409d23,_0x1e953b){return new BPromise(function(_0x4dc73d,_0x2caae0){var _0x55a3a7=_0x1e953b||client;return _0x55a3a7[_0xab9b('0x1d')](_0x2e6a5f,_0x409d23)['then'](function(_0x2ef05c){logger[_0xab9b('0x1e')]('WhatsappMessage,\x20%s,\x20%s',_0x1b2ddb,_0xab9b('0x1f'));logger[_0xab9b('0x20')](_0xab9b('0x21'),_0x1b2ddb,_0xab9b('0x1f'),JSON[_0xab9b('0x22')](_0x2ef05c));if(_0x2ef05c[_0xab9b('0x23')]){if(_0x2ef05c[_0xab9b('0x23')][_0xab9b('0x24')]===0x1f4){logger['error'](_0xab9b('0x25'),_0x1b2ddb,_0x2ef05c['error']['message']);return _0x2caae0(_0x2ef05c[_0xab9b('0x23')]['message']);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x1b2ddb,_0x2ef05c[_0xab9b('0x23')]['message']);return _0x4dc73d(_0x2ef05c[_0xab9b('0x23')][_0xab9b('0x26')]);}else{logger[_0xab9b('0x1e')](_0xab9b('0x25'),_0x1b2ddb,_0xab9b('0x1f'));_0x4dc73d(_0x2ef05c['result']['message']);}})[_0xab9b('0x27')](function(_0x3bf280){logger[_0xab9b('0x23')](_0xab9b('0x25'),_0x1b2ddb,_0x3bf280);_0x2caae0(_0x3bf280);});});}function respondWithStatusCode(_0x327673,_0x478df5){_0x478df5=_0x478df5||0xcc;return function(_0x543f08){if(_0x543f08){return _0x327673['sendStatus'](_0x478df5);}return _0x327673[_0xab9b('0x28')](_0x478df5)['end']();};}function respondWithResult(_0x4a6702,_0x3c5057){_0x3c5057=_0x3c5057||0xc8;return function(_0x9bf131){if(_0x9bf131){return _0x4a6702[_0xab9b('0x28')](_0x3c5057)[_0xab9b('0x29')](_0x9bf131);}};}function respondWithFilteredResult(_0x23910b,_0x1e441d){return function(_0x35770c){if(_0x35770c){var _0x3e0898=typeof _0x1e441d[_0xab9b('0x2a')]===_0xab9b('0x2b')&&typeof _0x1e441d[_0xab9b('0x2c')]===_0xab9b('0x2b');var _0xd660e2=_0x35770c[_0xab9b('0x2d')];var _0x49c48f=_0x3e0898?0x0:_0x1e441d[_0xab9b('0x2a')];var _0x1e084b=_0x3e0898?_0x35770c['count']:_0x1e441d['offset']+_0x1e441d[_0xab9b('0x2c')];var _0x2d1501;if(_0x1e084b>=_0xd660e2){_0x1e084b=_0xd660e2;_0x2d1501=0xc8;}else{_0x2d1501=0xce;}_0x23910b[_0xab9b('0x28')](_0x2d1501);return _0x23910b['set'](_0xab9b('0x2e'),_0x49c48f+'-'+_0x1e084b+'/'+_0xd660e2)[_0xab9b('0x29')](_0x35770c);}return null;};}function patchUpdates(_0x27c909){return function(_0x4dc314){try{jsonpatch[_0xab9b('0x2f')](_0x4dc314,_0x27c909,!![]);}catch(_0x290680){return BPromise[_0xab9b('0x30')](_0x290680);}return _0x4dc314[_0xab9b('0x31')]();};}function saveUpdates(_0x210aea,_0x807dc6){return function(_0x253ac9){if(_0x253ac9){return _0x253ac9[_0xab9b('0x32')](_0x210aea)['then'](function(_0xfa2438){return _0xfa2438;});}return null;};}function removeEntity(_0x238c9c,_0x350a92){return function(_0x30c3ea){if(_0x30c3ea){return _0x30c3ea[_0xab9b('0x33')]()[_0xab9b('0x34')](function(){_0x238c9c[_0xab9b('0x28')](0xcc)[_0xab9b('0x35')]();});}};}function handleEntityNotFound(_0xcd839d,_0x5b9239){return function(_0x46fe8d){if(!_0x46fe8d){_0xcd839d[_0xab9b('0x36')](0x194);}return _0x46fe8d;};}function handleError(_0x2ace43,_0x1e327d){_0x1e327d=_0x1e327d||0x1f4;return function(_0x58f9d1){logger[_0xab9b('0x23')](_0x58f9d1[_0xab9b('0x37')]);if(_0x58f9d1[_0xab9b('0x38')]){delete _0x58f9d1[_0xab9b('0x38')];}_0x2ace43[_0xab9b('0x28')](_0x1e327d)[_0xab9b('0x39')](_0x58f9d1);};}exports[_0xab9b('0x3a')]=function(_0x5f2ea4,_0x248b6d){var _0x31ec7f={},_0x4eabb3={},_0x33d826={'count':0x0,'rows':[]};var _0x2fbc95=_[_0xab9b('0x3b')](db[_0xab9b('0x3c')][_0xab9b('0x3d')],function(_0x39504a){return{'name':_0x39504a['fieldName'],'type':_0x39504a[_0xab9b('0x3e')][_0xab9b('0x3f')]};});_0x4eabb3[_0xab9b('0x40')]=_['map'](_0x2fbc95,_0xab9b('0x38'));_0x4eabb3[_0xab9b('0x41')]=_[_0xab9b('0x42')](_0x5f2ea4['query']);_0x4eabb3[_0xab9b('0x43')]=_[_0xab9b('0x44')](_0x4eabb3[_0xab9b('0x40')],_0x4eabb3['query']);_0x31ec7f['attributes']=_[_0xab9b('0x44')](_0x4eabb3['model'],qs[_0xab9b('0x45')](_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x45')]));_0x31ec7f['attributes']=_0x31ec7f[_0xab9b('0x46')][_0xab9b('0x47')]?_0x31ec7f['attributes']:_0x4eabb3[_0xab9b('0x40')];if(!_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x48')](_0xab9b('0x49'))){_0x31ec7f['limit']=qs['limit'](_0x5f2ea4['query'][_0xab9b('0x2c')]);_0x31ec7f[_0xab9b('0x2a')]=qs['offset'](_0x5f2ea4[_0xab9b('0x41')]['offset']);}_0x31ec7f['order']=qs[_0xab9b('0x4a')](_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x4a')]);_0x31ec7f['where']=qs[_0xab9b('0x43')](_[_0xab9b('0x4b')](_0x5f2ea4[_0xab9b('0x41')],_0x4eabb3[_0xab9b('0x43')]),_0x2fbc95);if(_0x5f2ea4[_0xab9b('0x41')]['filter']){_0x31ec7f[_0xab9b('0x4c')]=_[_0xab9b('0x4d')](_0x31ec7f[_0xab9b('0x4c')],{'$or':_[_0xab9b('0x3b')](_0x2fbc95,function(_0x31b55c){if(_0x31b55c[_0xab9b('0x3e')]!==_0xab9b('0x4e')){var _0x9939c8={};_0x9939c8[_0x31b55c[_0xab9b('0x38')]]={'$like':'%'+_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x4f')]+'%'};return _0x9939c8;}})});}_0x31ec7f=_[_0xab9b('0x4d')]({},_0x31ec7f,_0x5f2ea4[_0xab9b('0x50')]);var _0x87be5c={'where':_0x31ec7f[_0xab9b('0x4c')]};return db[_0xab9b('0x3c')]['count'](_0x87be5c)[_0xab9b('0x34')](function(_0x390404){_0x33d826[_0xab9b('0x2d')]=_0x390404;if(_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x51')]){_0x31ec7f[_0xab9b('0x52')]=[{'all':!![]}];}return db[_0xab9b('0x3c')][_0xab9b('0x53')](_0x31ec7f);})[_0xab9b('0x34')](function(_0x23c5f1){_0x33d826[_0xab9b('0x54')]=_0x23c5f1;return _0x33d826;})[_0xab9b('0x34')](respondWithFilteredResult(_0x248b6d,_0x31ec7f))['catch'](handleError(_0x248b6d,null));};exports[_0xab9b('0x55')]=function(_0x203d7c,_0x29609d){var _0x1a6c39={'raw':!![],'where':{'id':_0x203d7c[_0xab9b('0x56')]['id']}},_0x3e919a={};_0x3e919a[_0xab9b('0x40')]=_['keys'](db[_0xab9b('0x3c')][_0xab9b('0x3d')]);_0x3e919a[_0xab9b('0x41')]=_[_0xab9b('0x42')](_0x203d7c[_0xab9b('0x41')]);_0x3e919a[_0xab9b('0x43')]=_[_0xab9b('0x44')](_0x3e919a['model'],_0x3e919a[_0xab9b('0x41')]);_0x1a6c39[_0xab9b('0x46')]=_[_0xab9b('0x44')](_0x3e919a['model'],qs[_0xab9b('0x45')](_0x203d7c[_0xab9b('0x41')][_0xab9b('0x45')]));_0x1a6c39[_0xab9b('0x46')]=_0x1a6c39['attributes'][_0xab9b('0x47')]?_0x1a6c39[_0xab9b('0x46')]:_0x3e919a[_0xab9b('0x40')];if(_0x203d7c[_0xab9b('0x41')]['includeAll']){_0x1a6c39[_0xab9b('0x52')]=[{'all':!![]}];}_0x1a6c39=_[_0xab9b('0x4d')]({},_0x1a6c39,_0x203d7c['options']);return db[_0xab9b('0x3c')][_0xab9b('0x57')](_0x1a6c39)[_0xab9b('0x34')](handleEntityNotFound(_0x29609d,null))['then'](respondWithResult(_0x29609d,null))[_0xab9b('0x27')](handleError(_0x29609d,null));};exports['create']=function(_0x101cf4,_0xead1be){return db['WhatsappMessage'][_0xab9b('0x58')](_0x101cf4[_0xab9b('0x59')],{})[_0xab9b('0x34')](respondWithResult(_0xead1be,0xc9))[_0xab9b('0x27')](handleError(_0xead1be,null));};exports[_0xab9b('0x32')]=function(_0x327f3b,_0x7eb32e){if(_0x327f3b['body']['id']){delete _0x327f3b['body']['id'];}return db[_0xab9b('0x3c')][_0xab9b('0x57')]({'where':{'id':_0x327f3b[_0xab9b('0x56')]['id']}})[_0xab9b('0x34')](handleEntityNotFound(_0x7eb32e,null))[_0xab9b('0x34')](saveUpdates(_0x327f3b[_0xab9b('0x59')],null))['then'](respondWithResult(_0x7eb32e,null))[_0xab9b('0x27')](handleError(_0x7eb32e,null));};exports[_0xab9b('0x33')]=function(_0x1fd7de,_0x54db1a){return db[_0xab9b('0x3c')]['find']({'where':{'id':_0x1fd7de[_0xab9b('0x56')]['id']}})[_0xab9b('0x34')](handleEntityNotFound(_0x54db1a,null))[_0xab9b('0x34')](removeEntity(_0x54db1a,null))[_0xab9b('0x27')](handleError(_0x54db1a,null));};exports[_0xab9b('0x5a')]=function(_0x289405,_0x230b66){return db[_0xab9b('0x3c')][_0xab9b('0x5a')]()[_0xab9b('0x34')](respondWithResult(_0x230b66,null))[_0xab9b('0x27')](handleError(_0x230b66,null));};var interaction_log=require(_0xab9b('0x5b'))('whatsapp-interactions');exports[_0xab9b('0x5c')]=function(_0x5b6ae7,_0x3aa6d7,_0x2169c1){var _0x9448c0={'agent':{},'channel':_0xab9b('0x5d')};if(_0x5b6ae7['body']['id']){delete _0x5b6ae7[_0xab9b('0x59')]['id'];}_0x5b6ae7[_0xab9b('0x59')][_0xab9b('0x5e')]=!![];_0x5b6ae7[_0xab9b('0x59')][_0xab9b('0x5f')]=moment()[_0xab9b('0x60')](_0xab9b('0x61'));_0x5b6ae7['body'][_0xab9b('0x62')]=_0x5b6ae7[_0xab9b('0x59')]['UserId']||_0x5b6ae7[_0xab9b('0x63')]['id'];_0x9448c0[_0xab9b('0x64')]['id']=_0x5b6ae7['body'][_0xab9b('0x62')];return db[_0xab9b('0x3c')][_0xab9b('0x57')]({'where':{'id':_0x5b6ae7['params']['id'],'UserId':null}})[_0xab9b('0x34')](handleEntityNotFound(_0x3aa6d7,null))[_0xab9b('0x34')](saveUpdates(_0x5b6ae7[_0xab9b('0x59')],null))['then'](function(_0x4ff95f){if(_0x4ff95f){_0x9448c0[_0xab9b('0x26')]=_0x4ff95f['get']({'plain':!![]});return db[_0xab9b('0x65')][_0xab9b('0x57')]({'where':{'id':_0x4ff95f['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3aa6d7,null))[_0xab9b('0x34')](function(_0x4d87c4){if(_0x4d87c4){return _0x4d87c4['update']({'UserId':_0x5b6ae7[_0xab9b('0x59')][_0xab9b('0x62')],'read1stAt':_[_0xab9b('0x66')](_0x4d87c4[_0xab9b('0x67')])?moment()['format'](_0xab9b('0x61')):undefined});}return null;})[_0xab9b('0x34')](function(_0x534c19){if(_0x534c19){_0x9448c0[_0xab9b('0x68')]=_0x534c19['get']({'plain':!![]});interaction_log[_0xab9b('0x1e')](_0xab9b('0x69'),_0x5b6ae7['user']['id'],_0x5b6ae7[_0xab9b('0x63')][_0xab9b('0x38')],_0x5b6ae7[_0xab9b('0x63')]['role'],_0x9448c0[_0xab9b('0x68')]['id'],_0x5b6ae7[_0xab9b('0x59')]?JSON[_0xab9b('0x22')](_0x5b6ae7[_0xab9b('0x59')]):_0xab9b('0x6a'));return respondWithRpcPromise(_0xab9b('0x6b'),_0xab9b('0x6c'),_0x9448c0);}return null;})[_0xab9b('0x34')](function(_0x25bed6){var _0x48c787=_0xab9b('0x6d')+_0x25bed6[_0xab9b('0x26')]['ContactId'];return db[_0xab9b('0x6e')]['query'](_0x48c787,{'type':db[_0xab9b('0x6f')][_0xab9b('0x70')][_0xab9b('0x71')],'raw':!![]})['then'](function(_0x3628df){return _0x3628df;});})[_0xab9b('0x34')](function(_0x5e4621){if(_0x5e4621){_0x9448c0['message'][_0xab9b('0x72')]=_0x5e4621[0x0];if(!_0x5b6ae7[_0xab9b('0x59')]['UserId'])return;return db[_0xab9b('0x73')][_0xab9b('0x57')]({'where':{'id':_0x5b6ae7['body'][_0xab9b('0x62')],'role':_0xab9b('0x64')},'attributes':['id',_0xab9b('0x38'),_0xab9b('0x74'),'email','internal'],'raw':!![]});}return null;})[_0xab9b('0x34')](function(_0xea5197){if(!_0xea5197)return null;_0x9448c0[_0xab9b('0x26')][_0xab9b('0x64')]=_0xea5197;return _0x9448c0;})[_0xab9b('0x34')](function(_0x2ca936){if(_0x2ca936){if(_0x5b6ae7['body'][_0xab9b('0x75')]){_0x9448c0[_0xab9b('0x26')][_0xab9b('0x76')]=util[_0xab9b('0x60')](_0xab9b('0x77'),_0x5b6ae7[_0xab9b('0x63')][_0xab9b('0x38')]);_0x9448c0[_0xab9b('0x26')][_0xab9b('0x78')]=_0x9448c0[_0xab9b('0x78')];_0x9448c0[_0xab9b('0x26')][_0xab9b('0x79')]=_0x9448c0[_0xab9b('0x78')];_0x9448c0[_0xab9b('0x26')][_0xab9b('0x7a')]=_0xab9b('0x5c');return respondWithRpcPromise(_0xab9b('0x7b'),_0xab9b('0x7b'),{'event':_0xab9b('0x7c'),'message':_0x9448c0[_0xab9b('0x26')]},client9002)[_0xab9b('0x34')](function(){return _0x9448c0;});}return _0x9448c0;}return null;})[_0xab9b('0x34')](respondWithResult(_0x3aa6d7,null))['catch'](handleError(_0x3aa6d7,null));};var interaction_log=require(_0xab9b('0x5b'))(_0xab9b('0x7d'));exports[_0xab9b('0x30')]=function(_0x13f697,_0x358062,_0x29adfa){var _0x38d88c={'agent':{},'channel':'whatsapp'};if(_0x13f697['body']['id']){delete _0x13f697['body']['id'];}_0x13f697['body']['UserId']=_0x13f697[_0xab9b('0x59')]['UserId']||_0x13f697[_0xab9b('0x63')]['id'];_0x38d88c[_0xab9b('0x64')]['id']=_0x13f697['body']['UserId'];return db[_0xab9b('0x3c')][_0xab9b('0x57')]({'where':{'id':_0x13f697[_0xab9b('0x56')]['id'],'UserId':null}})[_0xab9b('0x34')](handleEntityNotFound(_0x358062,null))[_0xab9b('0x34')](function(_0x5e5981){if(_0x5e5981){_0x38d88c[_0xab9b('0x26')]=_0x5e5981[_0xab9b('0x7e')]({'plain':!![]});return db[_0xab9b('0x65')][_0xab9b('0x57')]({'where':{'id':_0x5e5981[_0xab9b('0x7f')]}});}return null;})[_0xab9b('0x34')](handleEntityNotFound(_0x358062,null))[_0xab9b('0x34')](function(_0x2ce1e7){if(_0x2ce1e7){_0x38d88c[_0xab9b('0x68')]=_0x2ce1e7['get']({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x13f697[_0xab9b('0x63')]['id'],_0x13f697[_0xab9b('0x63')][_0xab9b('0x38')],_0x13f697[_0xab9b('0x63')][_0xab9b('0x80')],_0x38d88c[_0xab9b('0x68')]['id'],_0x13f697[_0xab9b('0x59')]?JSON[_0xab9b('0x22')](_0x13f697[_0xab9b('0x59')]):'null');return respondWithRpcPromise(_0xab9b('0x81'),_0xab9b('0x82'),_0x38d88c);}return null;})['then'](function(_0x302707){var _0x2834dd=_0xab9b('0x6d')+_0x302707[_0xab9b('0x26')][_0xab9b('0x83')];return db[_0xab9b('0x6e')][_0xab9b('0x41')](_0x2834dd,{'type':db[_0xab9b('0x6f')]['QueryTypes'][_0xab9b('0x71')],'raw':!![]})[_0xab9b('0x34')](function(_0x4aa4ca){return _0x4aa4ca;});})['then'](function(_0x3d671b){if(_0x3d671b){_0x38d88c[_0xab9b('0x26')][_0xab9b('0x72')]=_0x3d671b[0x0];if(!_0x13f697[_0xab9b('0x59')][_0xab9b('0x62')])return;return db[_0xab9b('0x73')][_0xab9b('0x57')]({'where':{'id':_0x13f697[_0xab9b('0x59')][_0xab9b('0x62')],'role':_0xab9b('0x64')},'attributes':['id',_0xab9b('0x38'),_0xab9b('0x74'),'email','internal'],'raw':!![]});}return null;})[_0xab9b('0x34')](function(_0x202e1){if(!_0x202e1)return null;_0x38d88c[_0xab9b('0x26')][_0xab9b('0x64')]=_0x202e1;return _0x38d88c;})[_0xab9b('0x34')](function(_0x419d1f){if(_0x419d1f){_0x419d1f[_0xab9b('0x26')][_0xab9b('0x76')]=util[_0xab9b('0x60')]('SIP/%s',_0x13f697['user']['name']);_0x419d1f['message'][_0xab9b('0x78')]=_0x38d88c[_0xab9b('0x78')];_0x419d1f[_0xab9b('0x26')][_0xab9b('0x79')]=_0x38d88c[_0xab9b('0x78')];_0x419d1f[_0xab9b('0x26')][_0xab9b('0x7a')]=_0xab9b('0x30');respondWithRpcPromise('EventManager',_0xab9b('0x7b'),{'event':'rejectmessage','message':_0x419d1f['message']},client9002);return _0x38d88c;}return null;})[_0xab9b('0x34')](respondWithResult(_0x358062,null))[_0xab9b('0x27')](handleError(_0x358062,null));};exports['status']=function(_0x5dc737,_0x2a30ca,_0xb3aa3a){if(_0x5dc737[_0xab9b('0x59')]['id']){delete _0x5dc737[_0xab9b('0x59')]['id'];}var _0x16d55d;return db[_0xab9b('0x3c')]['find']({'where':{'id':_0x5dc737['params']['id']}})['then'](handleEntityNotFound(_0x2a30ca,null))[_0xab9b('0x34')](function(_0x3f0c49){if(_0x3f0c49){_0x16d55d=_0x3f0c49;return db[_0xab9b('0x84')]['find']({'where':{'id':_0x3f0c49['WhatsappAccountId']}});}})[_0xab9b('0x34')](handleEntityNotFound(_0x2a30ca,null))['then'](function(_0x3b6d8a){if(_0x3b6d8a){logger['debug'](_0xab9b('0x85'),'status',_0xab9b('0x86'),_0x3b6d8a[_0xab9b('0x3e')],util[_0xab9b('0x87')](_0x5dc737[_0xab9b('0x59')],{'showHidden':![],'depth':null}));switch(_0x3b6d8a[_0xab9b('0x3e')]){case _0xab9b('0x88'):if(_0x5dc737[_0xab9b('0x59')][_0xab9b('0x89')]&&_0x5dc737[_0xab9b('0x59')][_0xab9b('0x89')]===_0x16d55d[_0xab9b('0x8a')]&&_0x5dc737[_0xab9b('0x59')][_0xab9b('0x8b')]&&_0x5dc737['body'][_0xab9b('0x8b')]===_0xab9b('0x5e')){return _0x16d55d[_0xab9b('0x32')]({'read':!![]});}else{logger[_0xab9b('0x23')](_0xab9b('0x8c'),_0xab9b('0x28'),_0xab9b('0x88'),util[_0xab9b('0x87')](_0x5dc737[_0xab9b('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x16d55d;}})[_0xab9b('0x34')](respondWithResult(_0x2a30ca,null))[_0xab9b('0x27')](handleError(_0x2a30ca,null));};
\ No newline at end of file
+var _0x4142=['http','request','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','save','then','destroy','stack','name','send','index','WhatsappMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','keys','rawAttributes','includeAll','create','body','update','find','describe','whatsapp-interactions','accept','whatsapp','read','readAt','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','contact','agent','fullname','email','internal','manual','interface','format','SIP/%s','channel','motionChannel','EventManager','acceptmessage','reject','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','ContactId','event','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./whatsappMessage.socket','register','client'];(function(_0x55511c,_0x307bae){var _0x11881e=function(_0x980914){while(--_0x980914){_0x55511c['push'](_0x55511c['shift']());}};_0x11881e(++_0x307bae);}(_0x4142,0x182));var _0x2414=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4142[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2414('0x0'));var rp=require(_0x2414('0x1'));var moment=require(_0x2414('0x2'));var BPromise=require(_0x2414('0x3'));var Mustache=require(_0x2414('0x4'));var util=require(_0x2414('0x5'));var path=require(_0x2414('0x6'));var sox=require(_0x2414('0x7'));var csv=require(_0x2414('0x8'));var ejs=require(_0x2414('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2414('0xa'));var squel=require(_0x2414('0xb'));var crypto=require(_0x2414('0xc'));var jsforce=require(_0x2414('0xd'));var deskjs=require(_0x2414('0xe'));var toCsv=require(_0x2414('0x8'));var querystring=require('querystring');var Papa=require(_0x2414('0xf'));var Redis=require(_0x2414('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2414('0x11'));var as=require(_0x2414('0x12'));var hardwareService=require(_0x2414('0x13'));var logger=require(_0x2414('0x14'))(_0x2414('0x15'));var utils=require('../../config/utils');var config=require(_0x2414('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2414('0x17'))['db'];config['redis']=_[_0x2414('0x18')](config['redis'],{'host':_0x2414('0x19'),'port':0x18eb});var socket=require(_0x2414('0x1a'))(new Redis(config[_0x2414('0x1b')]));require(_0x2414('0x1c'))[_0x2414('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x2414('0x1e')][_0x2414('0x1f')]({'port':0x232c});var client9002=jayson[_0x2414('0x1e')][_0x2414('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2f43f3,_0xfabf66,_0x1e17ea,_0x2496ef){return new BPromise(function(_0x4dd651,_0x35322b){var _0x31fa89=_0x2496ef||client;return _0x31fa89[_0x2414('0x20')](_0x2f43f3,_0x1e17ea)['then'](function(_0x4eb0d6){logger[_0x2414('0x21')](_0x2414('0x22'),_0xfabf66,'request\x20sent');logger[_0x2414('0x23')](_0x2414('0x24'),_0xfabf66,_0x2414('0x25'),JSON[_0x2414('0x26')](_0x4eb0d6));if(_0x4eb0d6[_0x2414('0x27')]){if(_0x4eb0d6[_0x2414('0x27')][_0x2414('0x28')]===0x1f4){logger[_0x2414('0x27')](_0x2414('0x22'),_0xfabf66,_0x4eb0d6['error'][_0x2414('0x29')]);return _0x35322b(_0x4eb0d6[_0x2414('0x27')][_0x2414('0x29')]);}logger[_0x2414('0x27')]('WhatsappMessage,\x20%s,\x20%s',_0xfabf66,_0x4eb0d6[_0x2414('0x27')][_0x2414('0x29')]);return _0x4dd651(_0x4eb0d6[_0x2414('0x27')]['message']);}else{logger[_0x2414('0x21')](_0x2414('0x22'),_0xfabf66,_0x2414('0x25'));_0x4dd651(_0x4eb0d6[_0x2414('0x2a')]['message']);}})[_0x2414('0x2b')](function(_0x5545f7){logger[_0x2414('0x27')](_0x2414('0x22'),_0xfabf66,_0x5545f7);_0x35322b(_0x5545f7);});});}function respondWithStatusCode(_0x2f01b4,_0x1ec831){_0x1ec831=_0x1ec831||0xcc;return function(_0x2b7900){if(_0x2b7900){return _0x2f01b4[_0x2414('0x2c')](_0x1ec831);}return _0x2f01b4[_0x2414('0x2d')](_0x1ec831)[_0x2414('0x2e')]();};}function respondWithResult(_0x10062d,_0x507900){_0x507900=_0x507900||0xc8;return function(_0x1c313b){if(_0x1c313b){return _0x10062d[_0x2414('0x2d')](_0x507900)['json'](_0x1c313b);}};}function respondWithFilteredResult(_0x23a20c,_0x118f5b){return function(_0x39d5a5){if(_0x39d5a5){var _0x42f59d=typeof _0x118f5b[_0x2414('0x2f')]==='undefined'&&typeof _0x118f5b[_0x2414('0x30')]===_0x2414('0x31');var _0x3faec4=_0x39d5a5[_0x2414('0x32')];var _0x40f6e1=_0x42f59d?0x0:_0x118f5b[_0x2414('0x2f')];var _0x4bd5de=_0x42f59d?_0x39d5a5[_0x2414('0x32')]:_0x118f5b[_0x2414('0x2f')]+_0x118f5b[_0x2414('0x30')];var _0x197007;if(_0x4bd5de>=_0x3faec4){_0x4bd5de=_0x3faec4;_0x197007=0xc8;}else{_0x197007=0xce;}_0x23a20c[_0x2414('0x2d')](_0x197007);return _0x23a20c[_0x2414('0x33')](_0x2414('0x34'),_0x40f6e1+'-'+_0x4bd5de+'/'+_0x3faec4)['json'](_0x39d5a5);}return null;};}function patchUpdates(_0xfa8a85){return function(_0x3a371b){try{jsonpatch['apply'](_0x3a371b,_0xfa8a85,!![]);}catch(_0x491043){return BPromise['reject'](_0x491043);}return _0x3a371b[_0x2414('0x35')]();};}function saveUpdates(_0x56a33c,_0x1b1cd2){return function(_0x2c486d){if(_0x2c486d){return _0x2c486d['update'](_0x56a33c)[_0x2414('0x36')](function(_0xf4b9f3){return _0xf4b9f3;});}return null;};}function removeEntity(_0x5c2c3d,_0x54f9b3){return function(_0x57745f){if(_0x57745f){return _0x57745f[_0x2414('0x37')]()[_0x2414('0x36')](function(){_0x5c2c3d[_0x2414('0x2d')](0xcc)[_0x2414('0x2e')]();});}};}function handleEntityNotFound(_0xe29242,_0x1161d9){return function(_0x603fff){if(!_0x603fff){_0xe29242[_0x2414('0x2c')](0x194);}return _0x603fff;};}function handleError(_0x35593d,_0x16b955){_0x16b955=_0x16b955||0x1f4;return function(_0x2ccb23){logger[_0x2414('0x27')](_0x2ccb23[_0x2414('0x38')]);if(_0x2ccb23[_0x2414('0x39')]){delete _0x2ccb23['name'];}_0x35593d[_0x2414('0x2d')](_0x16b955)[_0x2414('0x3a')](_0x2ccb23);};}exports[_0x2414('0x3b')]=function(_0xef2108,_0x2adeba){var _0x3e69e1={},_0x122e72={},_0x14e874={'count':0x0,'rows':[]};var _0x30b238=_['map'](db[_0x2414('0x3c')]['rawAttributes'],function(_0x2b601d){return{'name':_0x2b601d[_0x2414('0x3d')],'type':_0x2b601d[_0x2414('0x3e')]['key']};});_0x122e72[_0x2414('0x3f')]=_[_0x2414('0x40')](_0x30b238,_0x2414('0x39'));_0x122e72[_0x2414('0x41')]=_['keys'](_0xef2108[_0x2414('0x41')]);_0x122e72[_0x2414('0x42')]=_[_0x2414('0x43')](_0x122e72['model'],_0x122e72[_0x2414('0x41')]);_0x3e69e1[_0x2414('0x44')]=_['intersection'](_0x122e72[_0x2414('0x3f')],qs[_0x2414('0x45')](_0xef2108['query'][_0x2414('0x45')]));_0x3e69e1[_0x2414('0x44')]=_0x3e69e1[_0x2414('0x44')][_0x2414('0x46')]?_0x3e69e1[_0x2414('0x44')]:_0x122e72[_0x2414('0x3f')];if(!_0xef2108[_0x2414('0x41')][_0x2414('0x47')]('nolimit')){_0x3e69e1['limit']=qs[_0x2414('0x30')](_0xef2108[_0x2414('0x41')][_0x2414('0x30')]);_0x3e69e1['offset']=qs[_0x2414('0x2f')](_0xef2108[_0x2414('0x41')][_0x2414('0x2f')]);}_0x3e69e1[_0x2414('0x48')]=qs[_0x2414('0x49')](_0xef2108[_0x2414('0x41')][_0x2414('0x49')]);_0x3e69e1[_0x2414('0x4a')]=qs[_0x2414('0x42')](_[_0x2414('0x4b')](_0xef2108[_0x2414('0x41')],_0x122e72[_0x2414('0x42')]),_0x30b238);if(_0xef2108[_0x2414('0x41')][_0x2414('0x4c')]){_0x3e69e1[_0x2414('0x4a')]=_[_0x2414('0x4d')](_0x3e69e1[_0x2414('0x4a')],{'$or':_[_0x2414('0x40')](_0x30b238,function(_0x5abf76){if(_0x5abf76[_0x2414('0x3e')]!==_0x2414('0x4e')){var _0x26d1db={};_0x26d1db[_0x5abf76[_0x2414('0x39')]]={'$like':'%'+_0xef2108[_0x2414('0x41')]['filter']+'%'};return _0x26d1db;}})});}_0x3e69e1=_[_0x2414('0x4d')]({},_0x3e69e1,_0xef2108[_0x2414('0x4f')]);var _0xd69cf5={'where':_0x3e69e1[_0x2414('0x4a')]};return db[_0x2414('0x3c')][_0x2414('0x32')](_0xd69cf5)[_0x2414('0x36')](function(_0x5881c0){_0x14e874['count']=_0x5881c0;if(_0xef2108[_0x2414('0x41')]['includeAll']){_0x3e69e1['include']=[{'all':!![]}];}return db['WhatsappMessage'][_0x2414('0x50')](_0x3e69e1);})[_0x2414('0x36')](function(_0x846a26){_0x14e874[_0x2414('0x51')]=_0x846a26;return _0x14e874;})[_0x2414('0x36')](respondWithFilteredResult(_0x2adeba,_0x3e69e1))[_0x2414('0x2b')](handleError(_0x2adeba,null));};exports[_0x2414('0x52')]=function(_0x40822c,_0x491999){var _0x1a15d6={'raw':!![],'where':{'id':_0x40822c[_0x2414('0x53')]['id']}},_0x1ba03f={};_0x1ba03f['model']=_[_0x2414('0x54')](db[_0x2414('0x3c')][_0x2414('0x55')]);_0x1ba03f[_0x2414('0x41')]=_[_0x2414('0x54')](_0x40822c[_0x2414('0x41')]);_0x1ba03f[_0x2414('0x42')]=_[_0x2414('0x43')](_0x1ba03f[_0x2414('0x3f')],_0x1ba03f[_0x2414('0x41')]);_0x1a15d6[_0x2414('0x44')]=_[_0x2414('0x43')](_0x1ba03f[_0x2414('0x3f')],qs[_0x2414('0x45')](_0x40822c['query']['fields']));_0x1a15d6['attributes']=_0x1a15d6[_0x2414('0x44')][_0x2414('0x46')]?_0x1a15d6[_0x2414('0x44')]:_0x1ba03f[_0x2414('0x3f')];if(_0x40822c['query'][_0x2414('0x56')]){_0x1a15d6['include']=[{'all':!![]}];}_0x1a15d6=_[_0x2414('0x4d')]({},_0x1a15d6,_0x40822c['options']);return db[_0x2414('0x3c')]['find'](_0x1a15d6)['then'](handleEntityNotFound(_0x491999,null))['then'](respondWithResult(_0x491999,null))[_0x2414('0x2b')](handleError(_0x491999,null));};exports[_0x2414('0x57')]=function(_0x146e06,_0x435770){return db['WhatsappMessage'][_0x2414('0x57')](_0x146e06[_0x2414('0x58')],{})[_0x2414('0x36')](respondWithResult(_0x435770,0xc9))[_0x2414('0x2b')](handleError(_0x435770,null));};exports[_0x2414('0x59')]=function(_0x242cb5,_0x550c8a){if(_0x242cb5[_0x2414('0x58')]['id']){delete _0x242cb5['body']['id'];}return db['WhatsappMessage'][_0x2414('0x5a')]({'where':{'id':_0x242cb5[_0x2414('0x53')]['id']}})[_0x2414('0x36')](handleEntityNotFound(_0x550c8a,null))['then'](saveUpdates(_0x242cb5['body'],null))['then'](respondWithResult(_0x550c8a,null))[_0x2414('0x2b')](handleError(_0x550c8a,null));};exports[_0x2414('0x37')]=function(_0x58cbf4,_0x1ad733){return db[_0x2414('0x3c')][_0x2414('0x5a')]({'where':{'id':_0x58cbf4[_0x2414('0x53')]['id']}})[_0x2414('0x36')](handleEntityNotFound(_0x1ad733,null))[_0x2414('0x36')](removeEntity(_0x1ad733,null))[_0x2414('0x2b')](handleError(_0x1ad733,null));};exports[_0x2414('0x5b')]=function(_0x4bdfa5,_0x5ee14e){return db[_0x2414('0x3c')][_0x2414('0x5b')]()[_0x2414('0x36')](respondWithResult(_0x5ee14e,null))[_0x2414('0x2b')](handleError(_0x5ee14e,null));};var interaction_log=require(_0x2414('0x14'))(_0x2414('0x5c'));exports[_0x2414('0x5d')]=function(_0x1b9faf,_0x2300a1,_0x209ad3){var _0x317483={'agent':{},'channel':_0x2414('0x5e')};if(_0x1b9faf[_0x2414('0x58')]['id']){delete _0x1b9faf['body']['id'];}_0x1b9faf[_0x2414('0x58')][_0x2414('0x5f')]=!![];_0x1b9faf[_0x2414('0x58')][_0x2414('0x60')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1b9faf[_0x2414('0x58')][_0x2414('0x61')]=_0x1b9faf['body']['UserId']||_0x1b9faf[_0x2414('0x62')]['id'];_0x317483['agent']['id']=_0x1b9faf[_0x2414('0x58')][_0x2414('0x61')];return db['WhatsappMessage'][_0x2414('0x5a')]({'where':{'id':_0x1b9faf['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2300a1,null))['then'](saveUpdates(_0x1b9faf['body'],null))['then'](function(_0x679182){if(_0x679182){_0x317483[_0x2414('0x29')]=_0x679182[_0x2414('0x63')]({'plain':!![]});return db[_0x2414('0x64')][_0x2414('0x5a')]({'where':{'id':_0x679182[_0x2414('0x65')]}});}return null;})[_0x2414('0x36')](handleEntityNotFound(_0x2300a1,null))['then'](function(_0x3f42ac){if(_0x3f42ac){return _0x3f42ac[_0x2414('0x59')]({'UserId':_0x1b9faf[_0x2414('0x58')]['UserId'],'read1stAt':_[_0x2414('0x66')](_0x3f42ac['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2414('0x36')](function(_0xebde94){if(_0xebde94){_0x317483[_0x2414('0x67')]=_0xebde94[_0x2414('0x63')]({'plain':!![]});interaction_log[_0x2414('0x21')](_0x2414('0x68'),_0x1b9faf[_0x2414('0x62')]['id'],_0x1b9faf[_0x2414('0x62')][_0x2414('0x39')],_0x1b9faf[_0x2414('0x62')][_0x2414('0x69')],_0x317483[_0x2414('0x67')]['id'],_0x1b9faf[_0x2414('0x58')]?JSON[_0x2414('0x26')](_0x1b9faf[_0x2414('0x58')]):_0x2414('0x6a'));return respondWithRpcPromise(_0x2414('0x6b'),_0x2414('0x6c'),_0x317483);}return null;})['then'](function(_0x101f17){var _0x1647c7=_0x2414('0x6d')+_0x101f17[_0x2414('0x29')]['ContactId'];return db['sequelize'][_0x2414('0x41')](_0x1647c7,{'type':db[_0x2414('0x6e')][_0x2414('0x6f')]['SELECT'],'raw':!![]})[_0x2414('0x36')](function(_0x2cf792){return _0x2cf792;});})[_0x2414('0x36')](function(_0x2e7621){if(_0x2e7621){_0x317483[_0x2414('0x29')][_0x2414('0x70')]=_0x2e7621[0x0];if(!_0x1b9faf[_0x2414('0x58')][_0x2414('0x61')])return;return db['User'][_0x2414('0x5a')]({'where':{'id':_0x1b9faf[_0x2414('0x58')]['UserId'],'role':_0x2414('0x71')},'attributes':['id',_0x2414('0x39'),_0x2414('0x72'),_0x2414('0x73'),_0x2414('0x74')],'raw':!![]});}return null;})[_0x2414('0x36')](function(_0x17b8c6){if(!_0x17b8c6)return null;_0x317483[_0x2414('0x29')]['agent']=_0x17b8c6;return _0x317483;})[_0x2414('0x36')](function(_0x45afff){if(_0x45afff){if(_0x1b9faf[_0x2414('0x58')][_0x2414('0x75')]){_0x317483['message'][_0x2414('0x76')]=util[_0x2414('0x77')](_0x2414('0x78'),_0x1b9faf[_0x2414('0x62')]['name']);_0x317483[_0x2414('0x29')][_0x2414('0x79')]=_0x317483[_0x2414('0x79')];_0x317483[_0x2414('0x29')][_0x2414('0x7a')]=_0x317483['channel'];_0x317483['message']['event']='accept';return respondWithRpcPromise(_0x2414('0x7b'),'EventManager',{'event':_0x2414('0x7c'),'message':_0x317483[_0x2414('0x29')]},client9002)[_0x2414('0x36')](function(){return _0x317483;});}return _0x317483;}return null;})[_0x2414('0x36')](respondWithResult(_0x2300a1,null))['catch'](handleError(_0x2300a1,null));};var interaction_log=require(_0x2414('0x14'))(_0x2414('0x5c'));exports[_0x2414('0x7d')]=function(_0x5d0b72,_0x29c06a,_0x458e32){var _0x56c44c={'agent':{},'channel':_0x2414('0x5e')};if(_0x5d0b72[_0x2414('0x58')]['id']){delete _0x5d0b72[_0x2414('0x58')]['id'];}_0x5d0b72[_0x2414('0x58')][_0x2414('0x61')]=_0x5d0b72[_0x2414('0x58')][_0x2414('0x61')]||_0x5d0b72[_0x2414('0x62')]['id'];_0x56c44c['agent']['id']=_0x5d0b72[_0x2414('0x58')][_0x2414('0x61')];return db['WhatsappMessage'][_0x2414('0x5a')]({'where':{'id':_0x5d0b72['params']['id'],'UserId':null}})[_0x2414('0x36')](handleEntityNotFound(_0x29c06a,null))[_0x2414('0x36')](function(_0x3427e8){if(_0x3427e8){_0x56c44c['message']=_0x3427e8['get']({'plain':!![]});return db['WhatsappInteraction'][_0x2414('0x5a')]({'where':{'id':_0x3427e8['WhatsappInteractionId']}});}return null;})[_0x2414('0x36')](handleEntityNotFound(_0x29c06a,null))[_0x2414('0x36')](function(_0x545ee4){if(_0x545ee4){_0x56c44c[_0x2414('0x67')]=_0x545ee4[_0x2414('0x63')]({'plain':!![]});interaction_log['info'](_0x2414('0x7e'),_0x5d0b72['user']['id'],_0x5d0b72[_0x2414('0x62')][_0x2414('0x39')],_0x5d0b72[_0x2414('0x62')][_0x2414('0x69')],_0x56c44c['interaction']['id'],_0x5d0b72[_0x2414('0x58')]?JSON[_0x2414('0x26')](_0x5d0b72['body']):'null');return respondWithRpcPromise(_0x2414('0x7f'),'rejectMessage',_0x56c44c);}return null;})[_0x2414('0x36')](function(_0x5eb98a){var _0x3a5848=_0x2414('0x6d')+_0x5eb98a['message'][_0x2414('0x80')];return db['sequelize'][_0x2414('0x41')](_0x3a5848,{'type':db['Sequelize'][_0x2414('0x6f')]['SELECT'],'raw':!![]})[_0x2414('0x36')](function(_0x2b2469){return _0x2b2469;});})[_0x2414('0x36')](function(_0x276056){if(_0x276056){_0x56c44c[_0x2414('0x29')]['contact']=_0x276056[0x0];if(!_0x5d0b72[_0x2414('0x58')][_0x2414('0x61')])return;return db['User'][_0x2414('0x5a')]({'where':{'id':_0x5d0b72[_0x2414('0x58')][_0x2414('0x61')],'role':_0x2414('0x71')},'attributes':['id',_0x2414('0x39'),_0x2414('0x72'),_0x2414('0x73'),_0x2414('0x74')],'raw':!![]});}return null;})['then'](function(_0x34e25f){if(!_0x34e25f)return null;_0x56c44c[_0x2414('0x29')][_0x2414('0x71')]=_0x34e25f;return _0x56c44c;})[_0x2414('0x36')](function(_0xfcadaa){if(_0xfcadaa){_0xfcadaa[_0x2414('0x29')][_0x2414('0x76')]=util[_0x2414('0x77')]('SIP/%s',_0x5d0b72[_0x2414('0x62')][_0x2414('0x39')]);_0xfcadaa[_0x2414('0x29')][_0x2414('0x79')]=_0x56c44c['channel'];_0xfcadaa[_0x2414('0x29')]['motionChannel']=_0x56c44c[_0x2414('0x79')];_0xfcadaa[_0x2414('0x29')][_0x2414('0x81')]=_0x2414('0x7d');respondWithRpcPromise(_0x2414('0x7b'),_0x2414('0x7b'),{'event':'rejectmessage','message':_0xfcadaa[_0x2414('0x29')]},client9002);return _0x56c44c;}return null;})['then'](respondWithResult(_0x29c06a,null))['catch'](handleError(_0x29c06a,null));};exports[_0x2414('0x2d')]=function(_0x57e4b2,_0x3cf3ce,_0x1a15c7){if(_0x57e4b2[_0x2414('0x58')]['id']){delete _0x57e4b2['body']['id'];}var _0x3053a7;return db['WhatsappMessage'][_0x2414('0x5a')]({'where':{'id':_0x57e4b2[_0x2414('0x53')]['id']}})[_0x2414('0x36')](handleEntityNotFound(_0x3cf3ce,null))['then'](function(_0x3b8ce5){if(_0x3b8ce5){_0x3053a7=_0x3b8ce5;return db[_0x2414('0x82')][_0x2414('0x5a')]({'where':{'id':_0x3b8ce5[_0x2414('0x83')]}});}})[_0x2414('0x36')](handleEntityNotFound(_0x3cf3ce,null))[_0x2414('0x36')](function(_0x3589cc){if(_0x3589cc){logger[_0x2414('0x23')](_0x2414('0x84'),_0x2414('0x2d'),'received\x20delivery\x20report\x20from',_0x3589cc[_0x2414('0x3e')],util[_0x2414('0x85')](_0x57e4b2[_0x2414('0x58')],{'showHidden':![],'depth':null}));switch(_0x3589cc[_0x2414('0x3e')]){case _0x2414('0x86'):if(_0x57e4b2['body'][_0x2414('0x87')]&&_0x57e4b2['body']['MessageSid']===_0x3053a7[_0x2414('0x88')]&&_0x57e4b2[_0x2414('0x58')][_0x2414('0x89')]&&_0x57e4b2[_0x2414('0x58')]['MessageStatus']===_0x2414('0x5f')){return _0x3053a7['update']({'read':!![]});}else{logger['error'](_0x2414('0x8a'),_0x2414('0x2d'),'twilio',util[_0x2414('0x85')](_0x57e4b2[_0x2414('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x3053a7;}})[_0x2414('0x36')](respondWithResult(_0x3cf3ce,null))['catch'](handleError(_0x3cf3ce,null));};
\ No newline at end of file
index 64d1878..10f497d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9e8=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x1f1511,_0x4ea911){var _0x1d9ab8=function(_0x53276a){while(--_0x53276a){_0x1f1511['push'](_0x1f1511['shift']());}};_0x1d9ab8(++_0x4ea911);}(_0xe9e8,0x6b));var _0x8e9e=function(_0x1eb572,_0x599e09){_0x1eb572=_0x1eb572-0x0;var _0x741426=_0xe9e8[_0x1eb572];return _0x741426;};'use strict';var EventEmitter=require(_0x8e9e('0x0'));var WhatsappMessage=require(_0x8e9e('0x1'))['db'][_0x8e9e('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x8e9e('0x3')](0x0);var events={'afterCreate':_0x8e9e('0x4'),'afterUpdate':_0x8e9e('0x5'),'afterDestroy':_0x8e9e('0x6')};function emitEvent(_0x48233f){return function(_0x103d8b,_0x2a1d41,_0x1c09c6){WhatsappMessageEvents['emit'](_0x48233f+':'+_0x103d8b['id'],_0x103d8b);WhatsappMessageEvents[_0x8e9e('0x7')](_0x48233f,_0x103d8b);_0x1c09c6(null);};}for(var e in events){if(events[_0x8e9e('0x8')](e)){var event=events[e];WhatsappMessage[_0x8e9e('0x9')](e,emitEvent(event));}}module[_0x8e9e('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x2547=['hasOwnProperty','exports','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','emit'];(function(_0x58dc03,_0x1c0b28){var _0x2f14bb=function(_0x29e209){while(--_0x29e209){_0x58dc03['push'](_0x58dc03['shift']());}};_0x2f14bb(++_0x1c0b28);}(_0x2547,0x1cd));var _0x7254=function(_0x2ec55e,_0x1d2ad3){_0x2ec55e=_0x2ec55e-0x0;var _0x3bc3ea=_0x2547[_0x2ec55e];return _0x3bc3ea;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x7254('0x0'))['db'][_0x7254('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x7254('0x2')](0x0);var events={'afterCreate':_0x7254('0x3'),'afterUpdate':_0x7254('0x4'),'afterDestroy':_0x7254('0x5')};function emitEvent(_0x9f3435){return function(_0x265ebf,_0x53a02f,_0x2ddeae){WhatsappMessageEvents[_0x7254('0x6')](_0x9f3435+':'+_0x265ebf['id'],_0x265ebf);WhatsappMessageEvents[_0x7254('0x6')](_0x9f3435,_0x265ebf);_0x2ddeae(null);};}for(var e in events){if(events[_0x7254('0x7')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x7254('0x8')]=WhatsappMessageEvents;
\ No newline at end of file
index 1667268..ceb536c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x949a=['whatsapp:','then','update','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','error','/whatsapp/v1/','/messages/','POST','Bearer\x20','application/json','statuses','err','WhatsappMessage,\x20%s','finally','utf8mb4_unicode_ci','lodash','api','moment','request-promise','node-fetch','path','rimraf','./whatsappMessage.attributes','exports','WhatsappMessage','whatsapp_messages','messageId','body','FULLTEXT','models','get','toLowerCase','direction','out','secret','isNil','UserId','WhatsappInteraction','findOne','catch','find','type','twilio','accountSid','authToken','phone','messages','create'];(function(_0x4d28a8,_0x160fa6){var _0x3d8ec2=function(_0x2c70a6){while(--_0x2c70a6){_0x4d28a8['push'](_0x4d28a8['shift']());}};_0x3d8ec2(++_0x160fa6);}(_0x949a,0x1d3));var _0xa949=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x949a[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xa949('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa949('0x1'));var moment=require(_0xa949('0x2'));var BPromise=require('bluebird');var rp=require(_0xa949('0x3'));var fetch=require(_0xa949('0x4'));var fs=require('fs');var path=require(_0xa949('0x5'));var rimraf=require(_0xa949('0x6'));var config=require('../../config/environment');var attributes=require(_0xa949('0x7'));module[_0xa949('0x8')]=function(_0x5bca3c,_0x4b0d73){return _0x5bca3c['define'](_0xa949('0x9'),attributes,{'tableName':_0xa949('0xa'),'paranoid':![],'indexes':[{'name':_0xa949('0xb'),'fields':[_0xa949('0xb')]},{'name':'fti_whatsapp_messages','fields':[_0xa949('0xc')],'type':_0xa949('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5876f3,_0x2725be,_0x31ec68){var _0x3d37f7=_0x5bca3c[_0xa949('0xe')];var _0x150a4c=_0x5876f3[_0xa949('0xf')]({'plain':!![]});if(_0x150a4c['direction'][_0xa949('0x10')]()==='in'||_0x150a4c[_0xa949('0x11')][_0xa949('0x10')]()===_0xa949('0x12')&&!_0x150a4c[_0xa949('0x13')]&&!_[_0xa949('0x14')](_0x150a4c[_0xa949('0x15')])){_0x3d37f7[_0xa949('0x16')][_0xa949('0x17')]({'where':{'id':_0x150a4c['WhatsappInteractionId']}})['then'](function(_0x567a39){if(_0x567a39){_0x567a39['update']({'lastMsgAt':_0x150a4c['createdAt'],'lastMsgDirection':_0x150a4c[_0xa949('0x11')][_0xa949('0x10')]()});}})[_0xa949('0x18')](function(_0x3242e7){console['error'](_0x3242e7);});}if(_0x150a4c[_0xa949('0x11')]===_0xa949('0x12')&&!_0x150a4c[_0xa949('0x13')]){var _0x1934c1;_0x3d37f7['WhatsappAccount'][_0xa949('0x19')]({'where':{'id':_0x150a4c['WhatsappAccountId']},'raw':!![]})['then'](function(_0x583c91){_0x1934c1=_0x583c91;if(_0x1934c1&&_0x1934c1[_0xa949('0x1a')]){switch(_0x1934c1[_0xa949('0x1a')]){case'twilio':var _0x50e115=require(_0xa949('0x1b'));if(_0x1934c1[_0xa949('0x1c')]&&_0x1934c1[_0xa949('0x1d')]&&_0x1934c1[_0xa949('0x1e')]){var _0x271d33=new _0x50e115(_0x1934c1[_0xa949('0x1c')],_0x1934c1[_0xa949('0x1d')]);_0x271d33[_0xa949('0x1f')][_0xa949('0x20')]({'body':_0x150a4c[_0xa949('0xc')],'to':_0xa949('0x21')+_0x150a4c[_0xa949('0x1e')],'from':_0xa949('0x21')+_0x1934c1['phone'],'statusCallback':_0x1934c1['remote']+'/api/whatsapp/messages/'+_0x150a4c['id']+'/status?token='+_0x1934c1['token']})[_0xa949('0x22')](function(_0x11d2f5){if(_0x11d2f5['sid']){return _0x5876f3[_0xa949('0x23')]({'messageId':_0x11d2f5[_0xa949('0x24')]});}})[_0xa949('0x18')](function(_0x1e5379){logger['error'](_0xa949('0x25'),_0xa949('0x26'),_0xa949('0x1b'),util['inspect'](_0x1e5379,{'showHidden':![],'depth':null}));});}else{logger[_0xa949('0x27')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xa949('0x26'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'sinch':var _0x532adc=_0x1934c1['accountSid'];var _0x17e7d7=_0x1934c1['authToken'];var _0xe596b7=_0x1934c1['baseUrl']+_0xa949('0x28')+_0x532adc+_0xa949('0x29');var _0xea158={'to':[_0x150a4c[_0xa949('0x1e')]],'message':{'type':'text','text':_0x150a4c[_0xa949('0xc')]}};var _0x5e6468={'method':_0xa949('0x2a'),'uri':_0xe596b7,'headers':{'Authorization':_0xa949('0x2b')+_0x17e7d7,'Content-Type':_0xa949('0x2c')},'body':_0xea158,'json':!![]};rp(_0x5e6468)[_0xa949('0x22')](function(_0x20d747){if(_0x20d747[_0xa949('0x2d')][0x0]['message_id']){return _0x5876f3[_0xa949('0x23')]({'messageId':_0x20d747[_0xa949('0x2d')][0x0]['message_id']});}})[_0xa949('0x18')](function(_0x53fd24){logger[_0xa949('0x2e')](_0xa949('0x2f'),_0x53fd24);});break;}}})[_0xa949('0x30')](function(){_0x31ec68();});}else{_0x31ec68();}}},'charset':'utf8mb4','collate':_0xa949('0x31')});};
\ No newline at end of file
+var _0xe273=['direction','toLowerCase','out','secret','isNil','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','WhatsappAccount','find','type','twilio','accountSid','authToken','create','whatsapp:','phone','remote','/api/whatsapp/messages/','/status?token=','token','sid','catch','error','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','sinch','baseUrl','/whatsapp/v1/','POST','Bearer\x20','application/json','message_id','statuses','err','WhatsappMessage,\x20%s','utf8mb4_unicode_ci','../../config/logger','moment','request-promise','node-fetch','path','rimraf','./whatsappMessage.attributes','exports','define','whatsapp_messages','messageId','body','FULLTEXT','models','get'];(function(_0x5a481d,_0x572672){var _0x2d2914=function(_0xf058a9){while(--_0xf058a9){_0x5a481d['push'](_0x5a481d['shift']());}};_0x2d2914(++_0x572672);}(_0xe273,0x1a9));var _0x3e27=function(_0x9c3c56,_0x169b56){_0x9c3c56=_0x9c3c56-0x0;var _0x2dd782=_0xe273[_0x9c3c56];return _0x2dd782;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3e27('0x0'))('api');var moment=require(_0x3e27('0x1'));var BPromise=require('bluebird');var rp=require(_0x3e27('0x2'));var fetch=require(_0x3e27('0x3'));var fs=require('fs');var path=require(_0x3e27('0x4'));var rimraf=require(_0x3e27('0x5'));var config=require('../../config/environment');var attributes=require(_0x3e27('0x6'));module[_0x3e27('0x7')]=function(_0x5b13f0,_0x26af3b){return _0x5b13f0[_0x3e27('0x8')]('WhatsappMessage',attributes,{'tableName':_0x3e27('0x9'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x3e27('0xa')]},{'name':'fti_whatsapp_messages','fields':[_0x3e27('0xb')],'type':_0x3e27('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x19aa7d,_0x2630f7,_0x49ac5e){var _0x4946f1=_0x5b13f0[_0x3e27('0xd')];var _0x2acb6d=_0x19aa7d[_0x3e27('0xe')]({'plain':!![]});if(_0x2acb6d[_0x3e27('0xf')][_0x3e27('0x10')]()==='in'||_0x2acb6d[_0x3e27('0xf')][_0x3e27('0x10')]()===_0x3e27('0x11')&&!_0x2acb6d[_0x3e27('0x12')]&&!_[_0x3e27('0x13')](_0x2acb6d['UserId'])){_0x4946f1[_0x3e27('0x14')][_0x3e27('0x15')]({'where':{'id':_0x2acb6d[_0x3e27('0x16')]}})[_0x3e27('0x17')](function(_0x336af6){if(_0x336af6){_0x336af6[_0x3e27('0x18')]({'lastMsgAt':_0x2acb6d['createdAt'],'lastMsgDirection':_0x2acb6d[_0x3e27('0xf')][_0x3e27('0x10')]()});}})['catch'](function(_0x489d4c){console['error'](_0x489d4c);});}if(_0x2acb6d['direction']==='out'&&!_0x2acb6d[_0x3e27('0x12')]){var _0x362c71;_0x4946f1[_0x3e27('0x19')][_0x3e27('0x1a')]({'where':{'id':_0x2acb6d['WhatsappAccountId']},'raw':!![]})[_0x3e27('0x17')](function(_0x4e8f78){_0x362c71=_0x4e8f78;if(_0x362c71&&_0x362c71[_0x3e27('0x1b')]){switch(_0x362c71[_0x3e27('0x1b')]){case _0x3e27('0x1c'):var _0x2ceab0=require(_0x3e27('0x1c'));if(_0x362c71[_0x3e27('0x1d')]&&_0x362c71[_0x3e27('0x1e')]&&_0x362c71['phone']){var _0x2b871a=new _0x2ceab0(_0x362c71['accountSid'],_0x362c71[_0x3e27('0x1e')]);_0x2b871a['messages'][_0x3e27('0x1f')]({'body':_0x2acb6d[_0x3e27('0xb')],'to':_0x3e27('0x20')+_0x2acb6d[_0x3e27('0x21')],'from':_0x3e27('0x20')+_0x362c71[_0x3e27('0x21')],'statusCallback':_0x362c71[_0x3e27('0x22')]+_0x3e27('0x23')+_0x2acb6d['id']+_0x3e27('0x24')+_0x362c71[_0x3e27('0x25')]})[_0x3e27('0x17')](function(_0x45b75c){if(_0x45b75c[_0x3e27('0x26')]){return _0x19aa7d[_0x3e27('0x18')]({'messageId':_0x45b75c['sid']});}})[_0x3e27('0x27')](function(_0x1fcebc){logger[_0x3e27('0x28')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x3e27('0x29'),_0x3e27('0x1c'),util[_0x3e27('0x2a')](_0x1fcebc,{'showHidden':![],'depth':null}));});}else{logger[_0x3e27('0x28')](_0x3e27('0x2b'),'afterCreate','twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x3e27('0x2c'):var _0x478c41=_0x362c71[_0x3e27('0x1d')];var _0xcf1498=_0x362c71[_0x3e27('0x1e')];var _0x3fb542=_0x362c71[_0x3e27('0x2d')]+_0x3e27('0x2e')+_0x478c41+'/messages/';var _0x409d87={'to':[_0x2acb6d['phone']],'message':{'type':'text','text':_0x2acb6d[_0x3e27('0xb')]}};var _0x4d81db={'method':_0x3e27('0x2f'),'uri':_0x3fb542,'headers':{'Authorization':_0x3e27('0x30')+_0xcf1498,'Content-Type':_0x3e27('0x31')},'body':_0x409d87,'json':!![]};rp(_0x4d81db)[_0x3e27('0x17')](function(_0x29b6e0){if(_0x29b6e0['statuses'][0x0][_0x3e27('0x32')]){return _0x19aa7d[_0x3e27('0x18')]({'messageId':_0x29b6e0[_0x3e27('0x33')][0x0]['message_id']});}})[_0x3e27('0x27')](function(_0x184afa){logger[_0x3e27('0x34')](_0x3e27('0x35'),_0x184afa);});break;}}})['finally'](function(){_0x49ac5e();});}else{_0x49ac5e();}}},'charset':'utf8mb4','collate':_0x3e27('0x36')});};
\ No newline at end of file
index cd3a6af..f430c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62c=['options','raw','CreateWhatsappMessage','stringify','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','WhatsappMessage','create'];(function(_0x1d2b70,_0x35d59b){var _0x28c608=function(_0x233b1f){while(--_0x233b1f){_0x1d2b70['push'](_0x1d2b70['shift']());}};_0x28c608(++_0x35d59b);}(_0xb62c,0x13a));var _0xcb62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb62c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xcb62('0x0'));var moment=require(_0xcb62('0x1'));var BPromise=require(_0xcb62('0x2'));var rs=require(_0xcb62('0x3'));var fs=require('fs');var Redis=require(_0xcb62('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcb62('0x5'));var logger=require('../../config/logger')(_0xcb62('0x6'));var config=require(_0xcb62('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcb62('0x8')]['http']({'port':0x232a});config['redis']=_[_0xcb62('0x9')](config[_0xcb62('0xa')],{'host':_0xcb62('0xb'),'port':0x18eb});var socket=require(_0xcb62('0xc'))(new Redis(config[_0xcb62('0xa')]));require('./whatsappMessage.socket')[_0xcb62('0xd')](socket);function respondWithRpcPromise(_0x11c05f,_0x61a64a,_0x5bbbc5){return new BPromise(function(_0x3a9d9e,_0x2c35cf){return client[_0xcb62('0xe')](_0x11c05f,_0x5bbbc5)[_0xcb62('0xf')](function(_0x3914fc){logger[_0xcb62('0x10')](_0xcb62('0x11'),_0x61a64a,_0xcb62('0x12'));logger['debug'](_0xcb62('0x13'),_0x61a64a,_0xcb62('0x12'),JSON['stringify'](_0x3914fc));if(_0x3914fc[_0xcb62('0x14')]){if(_0x3914fc[_0xcb62('0x14')][_0xcb62('0x15')]===0x1f4){logger[_0xcb62('0x14')](_0xcb62('0x11'),_0x61a64a,_0x3914fc[_0xcb62('0x14')]['message']);return _0x2c35cf(_0x3914fc[_0xcb62('0x14')][_0xcb62('0x16')]);}logger[_0xcb62('0x14')](_0xcb62('0x11'),_0x61a64a,_0x3914fc[_0xcb62('0x14')][_0xcb62('0x16')]);return _0x3a9d9e(_0x3914fc[_0xcb62('0x14')]['message']);}else{logger[_0xcb62('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x61a64a,_0xcb62('0x12'));_0x3a9d9e(_0x3914fc[_0xcb62('0x17')]['message']);}})[_0xcb62('0x18')](function(_0x35ab6d){logger[_0xcb62('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x61a64a,_0x35ab6d);_0x2c35cf(_0x35ab6d);});});}exports['CreateWhatsappMessage']=function(_0x2ef38a){var _0x725aae=this;return new Promise(function(_0x3879ee,_0x3f91aa){return db[_0xcb62('0x19')][_0xcb62('0x1a')](_0x2ef38a['body'],{'raw':_0x2ef38a['options']?_0x2ef38a[_0xcb62('0x1b')][_0xcb62('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0xdc7c39){logger['info'](_0xcb62('0x1d'),_0x2ef38a);logger['debug'](_0xcb62('0x1d'),_0x2ef38a,JSON[_0xcb62('0x1e')](_0xdc7c39));_0x3879ee(_0xdc7c39);})[_0xcb62('0x18')](function(_0x5b46cf){logger[_0xcb62('0x14')](_0xcb62('0x1d'),_0x5b46cf[_0xcb62('0x16')],_0x2ef38a);_0x3f91aa(_0x725aae[_0xcb62('0x14')](0x1f4,_0x5b46cf['message']));});});};
\ No newline at end of file
+var _0x11e2=['moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappMessage.socket','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateWhatsappMessage','WhatsappMessage','body','options','raw','lodash','util'];(function(_0x2bd537,_0x3c7217){var _0x17f131=function(_0x5ca7d2){while(--_0x5ca7d2){_0x2bd537['push'](_0x2bd537['shift']());}};_0x17f131(++_0x3c7217);}(_0x11e2,0xfe));var _0x211e=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x11e2[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x211e('0x0'));var util=require(_0x211e('0x1'));var moment=require(_0x211e('0x2'));var BPromise=require('bluebird');var rs=require(_0x211e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x211e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x211e('0x5'))(_0x211e('0x6'));var config=require(_0x211e('0x7'));var jayson=require(_0x211e('0x8'));var client=jayson[_0x211e('0x9')][_0x211e('0xa')]({'port':0x232a});config[_0x211e('0xb')]=_[_0x211e('0xc')](config[_0x211e('0xb')],{'host':_0x211e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x211e('0xb')]));require(_0x211e('0xe'))['register'](socket);function respondWithRpcPromise(_0x3a1cf3,_0x5b1832,_0x5cad46){return new BPromise(function(_0x293fe8,_0x20c569){return client[_0x211e('0xf')](_0x3a1cf3,_0x5cad46)[_0x211e('0x10')](function(_0xe1432e){logger[_0x211e('0x11')](_0x211e('0x12'),_0x5b1832,_0x211e('0x13'));logger[_0x211e('0x14')](_0x211e('0x15'),_0x5b1832,'request\x20sent',JSON[_0x211e('0x16')](_0xe1432e));if(_0xe1432e[_0x211e('0x17')]){if(_0xe1432e[_0x211e('0x17')]['code']===0x1f4){logger[_0x211e('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x5b1832,_0xe1432e['error'][_0x211e('0x18')]);return _0x20c569(_0xe1432e[_0x211e('0x17')][_0x211e('0x18')]);}logger[_0x211e('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x5b1832,_0xe1432e[_0x211e('0x17')]['message']);return _0x293fe8(_0xe1432e[_0x211e('0x17')][_0x211e('0x18')]);}else{logger[_0x211e('0x11')](_0x211e('0x12'),_0x5b1832,_0x211e('0x13'));_0x293fe8(_0xe1432e[_0x211e('0x19')]['message']);}})[_0x211e('0x1a')](function(_0x132cb2){logger[_0x211e('0x17')](_0x211e('0x12'),_0x5b1832,_0x132cb2);_0x20c569(_0x132cb2);});});}exports[_0x211e('0x1b')]=function(_0x474e7d){var _0x1fd1e3=this;return new Promise(function(_0x1700f0,_0x519c58){return db[_0x211e('0x1c')]['create'](_0x474e7d[_0x211e('0x1d')],{'raw':_0x474e7d[_0x211e('0x1e')]?_0x474e7d[_0x211e('0x1e')][_0x211e('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x2bb335){logger[_0x211e('0x11')](_0x211e('0x1b'),_0x474e7d);logger[_0x211e('0x14')](_0x211e('0x1b'),_0x474e7d,JSON[_0x211e('0x16')](_0x2bb335));_0x1700f0(_0x2bb335);})[_0x211e('0x1a')](function(_0x5452df){logger[_0x211e('0x17')](_0x211e('0x1b'),_0x5452df[_0x211e('0x18')],_0x474e7d);_0x519c58(_0x1fd1e3[_0x211e('0x17')](0x1f4,_0x5452df[_0x211e('0x18')]));});});};
\ No newline at end of file
index 02644c6..a8207a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e6a=['remove','emit','removeListener','whatsappMessage:','./whatsappMessage.events','save'];(function(_0x158498,_0x5b1e56){var _0x55f5a6=function(_0x2a4789){while(--_0x2a4789){_0x158498['push'](_0x158498['shift']());}};_0x55f5a6(++_0x5b1e56);}(_0x5e6a,0x15a));var _0xa5e6=function(_0x2a98fd,_0x5d13f7){_0x2a98fd=_0x2a98fd-0x0;var _0x45fce8=_0x5e6a[_0x2a98fd];return _0x45fce8;};'use strict';var WhatsappMessageEvents=require(_0xa5e6('0x0'));var events=[_0xa5e6('0x1'),_0xa5e6('0x2'),'update'];function createListener(_0x52a320,_0x1f50ed){return function(_0x4ed601){_0x1f50ed[_0xa5e6('0x3')](_0x52a320,_0x4ed601);};}function removeListener(_0x1da8b1,_0x86c6e3){return function(){WhatsappMessageEvents[_0xa5e6('0x4')](_0x1da8b1,_0x86c6e3);};}exports['register']=function(_0x377b7a){for(var _0x5197a8=0x0,_0x4d37c4=events['length'];_0x5197a8<_0x4d37c4;_0x5197a8++){var _0x27ac7b=events[_0x5197a8];var _0x3bacad=createListener(_0xa5e6('0x5')+_0x27ac7b,_0x377b7a);WhatsappMessageEvents['on'](_0x27ac7b,_0x3bacad);}};
\ No newline at end of file
+var _0x2e36=['whatsappMessage:','./whatsappMessage.events','save','update','emit','removeListener'];(function(_0x19ca86,_0x5808ff){var _0xb05445=function(_0x11e1f6){while(--_0x11e1f6){_0x19ca86['push'](_0x19ca86['shift']());}};_0xb05445(++_0x5808ff);}(_0x2e36,0xe5));var _0x62e3=function(_0x366cc3,_0x16da8f){_0x366cc3=_0x366cc3-0x0;var _0xa9c614=_0x2e36[_0x366cc3];return _0xa9c614;};'use strict';var WhatsappMessageEvents=require(_0x62e3('0x0'));var events=[_0x62e3('0x1'),'remove',_0x62e3('0x2')];function createListener(_0x1b4ea6,_0x1479ad){return function(_0x17bce4){_0x1479ad[_0x62e3('0x3')](_0x1b4ea6,_0x17bce4);};}function removeListener(_0x4bf684,_0x4d71ab){return function(){WhatsappMessageEvents[_0x62e3('0x4')](_0x4bf684,_0x4d71ab);};}exports['register']=function(_0x4a1945){for(var _0x21bfa7=0x0,_0x1113b1=events['length'];_0x21bfa7<_0x1113b1;_0x21bfa7++){var _0xaee9e6=events[_0x21bfa7];var _0x53279a=createListener(_0x62e3('0x5')+_0xaee9e6,_0x4a1945);WhatsappMessageEvents['on'](_0xaee9e6,_0x53279a);}};
\ No newline at end of file
index ec9fa24..3074f15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0d3=['getTeams','getAgents','post','/:id/users','addAgents','put','update','delete','destroy','removeTeams','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x55999a,_0x253086){var _0x472f68=function(_0x384629){while(--_0x384629){_0x55999a['push'](_0x55999a['shift']());}};_0x472f68(++_0x253086);}(_0xf0d3,0x15b));var _0x3f0d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf0d3[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require(_0x3f0d('0x0'));var path=require(_0x3f0d('0x1'));var timeout=require(_0x3f0d('0x2'));var express=require(_0x3f0d('0x3'));var router=express[_0x3f0d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3f0d('0x5'));var config=require(_0x3f0d('0x6'));var controller=require('./whatsappQueue.controller');router[_0x3f0d('0x7')]('/',auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x9')]);router[_0x3f0d('0x7')](_0x3f0d('0xa'),auth['isAuthenticated'](),controller[_0x3f0d('0xb')]);router[_0x3f0d('0x7')](_0x3f0d('0xc'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0xd')]);router['get'](_0x3f0d('0xe'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0xf')]);router[_0x3f0d('0x7')](_0x3f0d('0x10'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x11')]);router[_0x3f0d('0x7')]('/:id/users',auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x12')]);router[_0x3f0d('0x13')]('/',auth[_0x3f0d('0x8')](),controller['create']);router[_0x3f0d('0x13')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x3f0d('0x13')](_0x3f0d('0x14'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x15')]);router[_0x3f0d('0x16')](_0x3f0d('0xc'),auth['isAuthenticated'](),controller[_0x3f0d('0x17')]);router[_0x3f0d('0x18')](_0x3f0d('0xc'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x19')]);router[_0x3f0d('0x18')](_0x3f0d('0x10'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x1a')]);router['delete'](_0x3f0d('0x14'),auth[_0x3f0d('0x8')](),controller['removeAgents']);module[_0x3f0d('0x1b')]=router;
\ No newline at end of file
+var _0x64f6=['getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','update','delete','destroy','removeTeams','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','getMembers','/:id/teams'];(function(_0x3b0393,_0x4b0eb7){var _0x2ae662=function(_0x4af99d){while(--_0x4af99d){_0x3b0393['push'](_0x3b0393['shift']());}};_0x2ae662(++_0x4b0eb7);}(_0x64f6,0x11b));var _0x664f=function(_0x5ecc5d,_0x38d142){_0x5ecc5d=_0x5ecc5d-0x0;var _0x5b98a3=_0x64f6[_0x5ecc5d];return _0x5b98a3;};'use strict';var multer=require(_0x664f('0x0'));var util=require(_0x664f('0x1'));var path=require('path');var timeout=require(_0x664f('0x2'));var express=require(_0x664f('0x3'));var router=express[_0x664f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x664f('0x5'));var interaction=require(_0x664f('0x6'));var config=require('../../config/environment');var controller=require('./whatsappQueue.controller');router[_0x664f('0x7')]('/',auth[_0x664f('0x8')](),controller[_0x664f('0x9')]);router[_0x664f('0x7')](_0x664f('0xa'),auth[_0x664f('0x8')](),controller[_0x664f('0xb')]);router[_0x664f('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x664f('0x7')]('/:id/members',auth[_0x664f('0x8')](),controller[_0x664f('0xc')]);router[_0x664f('0x7')](_0x664f('0xd'),auth[_0x664f('0x8')](),controller[_0x664f('0xe')]);router[_0x664f('0x7')](_0x664f('0xf'),auth['isAuthenticated'](),controller[_0x664f('0x10')]);router[_0x664f('0x11')]('/',auth['isAuthenticated'](),controller[_0x664f('0x12')]);router['post'](_0x664f('0xd'),auth['isAuthenticated'](),controller[_0x664f('0x13')]);router[_0x664f('0x11')](_0x664f('0xf'),auth[_0x664f('0x8')](),controller[_0x664f('0x14')]);router[_0x664f('0x15')](_0x664f('0x16'),auth[_0x664f('0x8')](),controller[_0x664f('0x17')]);router[_0x664f('0x18')](_0x664f('0x16'),auth['isAuthenticated'](),controller[_0x664f('0x19')]);router[_0x664f('0x18')](_0x664f('0xd'),auth[_0x664f('0x8')](),controller[_0x664f('0x1a')]);router[_0x664f('0x18')](_0x664f('0xf'),auth[_0x664f('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 9f7699a..7a8611c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f38=['exports','STRING','name','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1f38,0xd7));var _0x81f3=function(_0x14a513,_0x3239f){_0x14a513=_0x14a513-0x0;var _0x47236c=_0x1f38[_0x14a513];return _0x47236c;};'use strict';var Sequelize=require(_0x81f3('0x0'));module[_0x81f3('0x1')]={'name':{'type':Sequelize[_0x81f3('0x2')],'unique':_0x81f3('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x81f3('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x81f3('0x5')]('rrmemory',_0x81f3('0x6'),_0x81f3('0x7'))},'description':{'type':Sequelize[_0x81f3('0x2')]}};
\ No newline at end of file
+var _0x584a=['sequelize','exports','name','INTEGER','ENUM','rrmemory','STRING'];(function(_0x3bdd65,_0x3d187e){var _0x4c7ec6=function(_0x447e50){while(--_0x447e50){_0x3bdd65['push'](_0x3bdd65['shift']());}};_0x4c7ec6(++_0x3d187e);}(_0x584a,0x1c0));var _0xa584=function(_0x3284cd,_0x2e10a2){_0x3284cd=_0x3284cd-0x0;var _0xe92280=_0x584a[_0x3284cd];return _0xe92280;};'use strict';var Sequelize=require(_0xa584('0x0'));module[_0xa584('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xa584('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xa584('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa584('0x4')](_0xa584('0x5'),'beepall','roundrobin')},'description':{'type':Sequelize[_0xa584('0x6')]}};
\ No newline at end of file
index d081820..632da47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8cd=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','offset','limit','undefined','count','set','apply','reject','update','then','get','WhatsappQueues','UserProfileResource','destroy','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','length','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','find','describe','getMembers','findOne','UserWhatsappQueue','WhatsappQueueId','UserId','agent','whatsappPause','updatedAt','format','SIP','createdAt','getTeams','Team','pick','addTeams','User','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','emit','userWhatsappQueue:save','removeTeams','ids','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','forEach','userWhatsappQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','papaparse'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0xd8cd,0x82));var _0xdd8c=function(_0x4ab7eb,_0x11653f){_0x4ab7eb=_0x4ab7eb-0x0;var _0x46860d=_0xd8cd[_0x4ab7eb];return _0x46860d;};'use strict';var emlformat=require(_0xdd8c('0x0'));var rimraf=require(_0xdd8c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdd8c('0x2'));var rp=require(_0xdd8c('0x3'));var moment=require(_0xdd8c('0x4'));var BPromise=require(_0xdd8c('0x5'));var Mustache=require('mustache');var util=require(_0xdd8c('0x6'));var path=require(_0xdd8c('0x7'));var sox=require('sox');var csv=require(_0xdd8c('0x8'));var ejs=require(_0xdd8c('0x9'));var fs=require('fs');var fs_extra=require(_0xdd8c('0xa'));var _=require('lodash');var squel=require(_0xdd8c('0xb'));var crypto=require(_0xdd8c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdd8c('0x8'));var querystring=require('querystring');var Papa=require(_0xdd8c('0xd'));var Redis=require(_0xdd8c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xdd8c('0xf'));var as=require(_0xdd8c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdd8c('0x11'))(_0xdd8c('0x12'));var utils=require(_0xdd8c('0x13'));var config=require(_0xdd8c('0x14'));var licenseUtil=require(_0xdd8c('0x15'));var db=require(_0xdd8c('0x16'))['db'];config[_0xdd8c('0x17')]=_[_0xdd8c('0x18')](config[_0xdd8c('0x17')],{'host':_0xdd8c('0x19'),'port':0x18eb});var socket=require(_0xdd8c('0x1a'))(new Redis(config['redis']));require(_0xdd8c('0x1b'))[_0xdd8c('0x1c')](socket);function respondWithStatusCode(_0x3e97ac,_0x176cbb){_0x176cbb=_0x176cbb||0xcc;return function(_0xc9f82d){if(_0xc9f82d){return _0x3e97ac[_0xdd8c('0x1d')](_0x176cbb);}return _0x3e97ac[_0xdd8c('0x1e')](_0x176cbb)[_0xdd8c('0x1f')]();};}function respondWithResult(_0x23ae22,_0x27725d){_0x27725d=_0x27725d||0xc8;return function(_0x136436){if(_0x136436){return _0x23ae22[_0xdd8c('0x1e')](_0x27725d)['json'](_0x136436);}};}function respondWithFilteredResult(_0x329d4b,_0x216f89){return function(_0x3031c8){if(_0x3031c8){var _0x8c85fc=typeof _0x216f89[_0xdd8c('0x20')]==='undefined'&&typeof _0x216f89[_0xdd8c('0x21')]===_0xdd8c('0x22');var _0x52f222=_0x3031c8[_0xdd8c('0x23')];var _0x2f4db3=_0x8c85fc?0x0:_0x216f89[_0xdd8c('0x20')];var _0x3c9ecb=_0x8c85fc?_0x3031c8[_0xdd8c('0x23')]:_0x216f89['offset']+_0x216f89[_0xdd8c('0x21')];var _0x5ad9bd;if(_0x3c9ecb>=_0x52f222){_0x3c9ecb=_0x52f222;_0x5ad9bd=0xc8;}else{_0x5ad9bd=0xce;}_0x329d4b[_0xdd8c('0x1e')](_0x5ad9bd);return _0x329d4b[_0xdd8c('0x24')]('Content-Range',_0x2f4db3+'-'+_0x3c9ecb+'/'+_0x52f222)['json'](_0x3031c8);}return null;};}function patchUpdates(_0x4be3dd){return function(_0x2f6f80){try{jsonpatch[_0xdd8c('0x25')](_0x2f6f80,_0x4be3dd,!![]);}catch(_0x548a24){return BPromise[_0xdd8c('0x26')](_0x548a24);}return _0x2f6f80['save']();};}function saveUpdates(_0x10eea1,_0x4464ab){return function(_0x52dbbf){if(_0x52dbbf){return _0x52dbbf[_0xdd8c('0x27')](_0x10eea1)[_0xdd8c('0x28')](function(_0xbdfa5b){return _0xbdfa5b;});}return null;};}function removeEntity(_0xca6a62,_0x56b49d){return function(_0x2610a9){if(_0x2610a9){return _0x2610a9['destroy']()[_0xdd8c('0x28')](function(){var _0x5e41d7=_0x2610a9[_0xdd8c('0x29')]({'plain':!![]});var _0x4ea8e0=_0xdd8c('0x2a');return db[_0xdd8c('0x2b')][_0xdd8c('0x2c')]({'where':{'type':_0x4ea8e0,'resourceId':_0x5e41d7['id']}})['then'](function(){return _0x2610a9;});})['then'](function(){_0xca6a62['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x590585,_0xc0d9b7){return function(_0x5e6024){if(!_0x5e6024){_0x590585[_0xdd8c('0x1d')](0x194);}return _0x5e6024;};}function handleError(_0x4b4c39,_0x1eb046){_0x1eb046=_0x1eb046||0x1f4;return function(_0x1f5c94){logger['error'](_0x1f5c94[_0xdd8c('0x2d')]);if(_0x1f5c94[_0xdd8c('0x2e')]){delete _0x1f5c94[_0xdd8c('0x2e')];}_0x4b4c39[_0xdd8c('0x1e')](_0x1eb046)[_0xdd8c('0x2f')](_0x1f5c94);};}exports[_0xdd8c('0x30')]=function(_0x3dd7eb,_0x58d4de){var _0x4140d9={},_0x39b6b3={},_0x3a2fbd={'count':0x0,'rows':[]};var _0x1b6deb=_['map'](db[_0xdd8c('0x31')][_0xdd8c('0x32')],function(_0xb48d9b){return{'name':_0xb48d9b[_0xdd8c('0x33')],'type':_0xb48d9b[_0xdd8c('0x34')][_0xdd8c('0x35')]};});_0x39b6b3[_0xdd8c('0x36')]=_[_0xdd8c('0x37')](_0x1b6deb,_0xdd8c('0x2e'));_0x39b6b3[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x3dd7eb[_0xdd8c('0x38')]);_0x39b6b3[_0xdd8c('0x3a')]=_['intersection'](_0x39b6b3[_0xdd8c('0x36')],_0x39b6b3[_0xdd8c('0x38')]);_0x4140d9[_0xdd8c('0x3b')]=_['intersection'](_0x39b6b3[_0xdd8c('0x36')],qs[_0xdd8c('0x3c')](_0x3dd7eb[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x4140d9['attributes']=_0x4140d9[_0xdd8c('0x3b')]['length']?_0x4140d9[_0xdd8c('0x3b')]:_0x39b6b3[_0xdd8c('0x36')];if(!_0x3dd7eb['query'][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x4140d9['limit']=qs['limit'](_0x3dd7eb[_0xdd8c('0x38')]['limit']);_0x4140d9['offset']=qs[_0xdd8c('0x20')](_0x3dd7eb[_0xdd8c('0x38')][_0xdd8c('0x20')]);}_0x4140d9[_0xdd8c('0x3f')]=qs[_0xdd8c('0x40')](_0x3dd7eb['query']['sort']);_0x4140d9[_0xdd8c('0x41')]=qs[_0xdd8c('0x3a')](_['pick'](_0x3dd7eb[_0xdd8c('0x38')],_0x39b6b3['filters']),_0x1b6deb);if(_0x3dd7eb[_0xdd8c('0x38')][_0xdd8c('0x42')]){_0x4140d9[_0xdd8c('0x41')]=_[_0xdd8c('0x43')](_0x4140d9[_0xdd8c('0x41')],{'$or':_['map'](_0x1b6deb,function(_0x4caf2a){if(_0x4caf2a[_0xdd8c('0x34')]!=='VIRTUAL'){var _0x25f5b1={};_0x25f5b1[_0x4caf2a[_0xdd8c('0x2e')]]={'$like':'%'+_0x3dd7eb['query']['filter']+'%'};return _0x25f5b1;}})});}_0x4140d9=_[_0xdd8c('0x43')]({},_0x4140d9,_0x3dd7eb[_0xdd8c('0x44')]);var _0x242986={'where':_0x4140d9[_0xdd8c('0x41')]};return db['WhatsappQueue'][_0xdd8c('0x23')](_0x242986)[_0xdd8c('0x28')](function(_0x917bbd){_0x3a2fbd[_0xdd8c('0x23')]=_0x917bbd;if(_0x3dd7eb['query'][_0xdd8c('0x45')]){_0x4140d9[_0xdd8c('0x46')]=[{'all':!![]}];}return db[_0xdd8c('0x31')][_0xdd8c('0x47')](_0x4140d9);})[_0xdd8c('0x28')](function(_0x4780cc){_0x3a2fbd[_0xdd8c('0x48')]=_0x4780cc;return _0x3a2fbd;})[_0xdd8c('0x28')](respondWithFilteredResult(_0x58d4de,_0x4140d9))[_0xdd8c('0x49')](handleError(_0x58d4de,null));};exports[_0xdd8c('0x4a')]=function(_0x412985,_0x25d69c){var _0x47d494={'raw':!![],'where':{'id':_0x412985[_0xdd8c('0x4b')]['id']}},_0x48dbee={};_0x48dbee[_0xdd8c('0x36')]=_['keys'](db[_0xdd8c('0x31')][_0xdd8c('0x32')]);_0x48dbee[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x412985['query']);_0x48dbee[_0xdd8c('0x3a')]=_[_0xdd8c('0x4c')](_0x48dbee[_0xdd8c('0x36')],_0x48dbee['query']);_0x47d494[_0xdd8c('0x3b')]=_['intersection'](_0x48dbee['model'],qs[_0xdd8c('0x3c')](_0x412985[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x47d494['attributes']=_0x47d494[_0xdd8c('0x3b')][_0xdd8c('0x4d')]?_0x47d494[_0xdd8c('0x3b')]:_0x48dbee[_0xdd8c('0x36')];if(_0x412985['query']['includeAll']){_0x47d494[_0xdd8c('0x46')]=[{'all':!![]}];}_0x47d494=_['merge']({},_0x47d494,_0x412985[_0xdd8c('0x44')]);return db[_0xdd8c('0x31')]['find'](_0x47d494)[_0xdd8c('0x28')](handleEntityNotFound(_0x25d69c,null))[_0xdd8c('0x28')](respondWithResult(_0x25d69c,null))['catch'](handleError(_0x25d69c,null));};exports[_0xdd8c('0x4e')]=function(_0x389643,_0x51bde2){return db[_0xdd8c('0x31')][_0xdd8c('0x4e')](_0x389643[_0xdd8c('0x4f')],{})[_0xdd8c('0x28')](function(_0x17f3e4){var _0x4d0d76=_0x389643['user'][_0xdd8c('0x29')]({'plain':!![]});if(!_0x4d0d76)throw new Error(_0xdd8c('0x50'));if(_0x4d0d76[_0xdd8c('0x51')]===_0xdd8c('0x52')){var _0x10dd48=_0x17f3e4[_0xdd8c('0x29')]({'plain':!![]});var _0x5c0f91=_0xdd8c('0x2a');return db[_0xdd8c('0x53')]['find']({'where':{'name':_0x5c0f91,'userProfileId':_0x4d0d76[_0xdd8c('0x54')]},'raw':!![]})[_0xdd8c('0x28')](function(_0x32633f){if(_0x32633f&&_0x32633f[_0xdd8c('0x55')]===0x0){return db[_0xdd8c('0x2b')]['create']({'name':_0x10dd48['name'],'resourceId':_0x10dd48['id'],'type':_0x32633f[_0xdd8c('0x2e')],'sectionId':_0x32633f['id']},{})[_0xdd8c('0x28')](function(){return _0x17f3e4;});}else{return _0x17f3e4;}})[_0xdd8c('0x49')](function(_0x443431){logger[_0xdd8c('0x56')](_0xdd8c('0x57'),_0x443431);throw _0x443431;});}return _0x17f3e4;})[_0xdd8c('0x28')](respondWithResult(_0x51bde2,0xc9))[_0xdd8c('0x49')](handleError(_0x51bde2,null));};exports['update']=function(_0x226429,_0x2ce39c){if(_0x226429[_0xdd8c('0x4f')]['id']){delete _0x226429[_0xdd8c('0x4f')]['id'];}return db['WhatsappQueue'][_0xdd8c('0x58')]({'where':{'id':_0x226429[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x2ce39c,null))[_0xdd8c('0x28')](saveUpdates(_0x226429[_0xdd8c('0x4f')],null))[_0xdd8c('0x28')](respondWithResult(_0x2ce39c,null))[_0xdd8c('0x49')](handleError(_0x2ce39c,null));};exports[_0xdd8c('0x2c')]=function(_0x5cf550,_0x29d1ea){return db[_0xdd8c('0x31')][_0xdd8c('0x58')]({'where':{'id':_0x5cf550[_0xdd8c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x29d1ea,null))[_0xdd8c('0x28')](removeEntity(_0x29d1ea,null))['catch'](handleError(_0x29d1ea,null));};exports[_0xdd8c('0x59')]=function(_0x279ee4,_0x5586dd){return db[_0xdd8c('0x31')][_0xdd8c('0x59')]()[_0xdd8c('0x28')](respondWithResult(_0x5586dd,null))[_0xdd8c('0x49')](handleError(_0x5586dd,null));};exports[_0xdd8c('0x5a')]=function(_0x3deeb3,_0x4882b1,_0x1d3e68){var _0x42b8cf={'raw':!![],'where':{}},_0x2e55be={},_0x268534;return db['WhatsappQueue'][_0xdd8c('0x5b')]({'where':{'id':_0x3deeb3[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x4882b1,null))[_0xdd8c('0x28')](function(_0x43da24){if(_0x43da24){_0x268534=_0x43da24[_0xdd8c('0x29')]({'plain':!![]});_0x2e55be[_0xdd8c('0x36')]=_['keys'](db[_0xdd8c('0x5c')][_0xdd8c('0x32')]);_0x2e55be[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x3deeb3[_0xdd8c('0x38')]);_0x2e55be[_0xdd8c('0x3a')]=_[_0xdd8c('0x4c')](_0x2e55be[_0xdd8c('0x36')],_0x2e55be[_0xdd8c('0x38')]);_0x42b8cf[_0xdd8c('0x3b')]=_[_0xdd8c('0x4c')](_0x2e55be['model'],qs[_0xdd8c('0x3c')](_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x42b8cf[_0xdd8c('0x3b')]=_0x42b8cf['attributes'][_0xdd8c('0x4d')]?_0x42b8cf[_0xdd8c('0x3b')]:_0x2e55be[_0xdd8c('0x36')];if(!_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x42b8cf['limit']=qs[_0xdd8c('0x21')](_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x21')]);_0x42b8cf[_0xdd8c('0x20')]=qs[_0xdd8c('0x20')](_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x20')]);}_0x42b8cf['order']=qs[_0xdd8c('0x40')](_0x3deeb3['query']['sort']);_0x42b8cf[_0xdd8c('0x41')]=qs[_0xdd8c('0x3a')](_['pick'](_0x3deeb3[_0xdd8c('0x38')],_0x2e55be[_0xdd8c('0x3a')]));_0x42b8cf[_0xdd8c('0x41')][_0xdd8c('0x5d')]=_0x43da24['id'];if(_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x42')]){_0x42b8cf[_0xdd8c('0x41')]=_[_0xdd8c('0x43')](_0x42b8cf[_0xdd8c('0x41')],{'$or':_[_0xdd8c('0x37')](_0x42b8cf[_0xdd8c('0x3b')],function(_0x441257){var _0x1e1d03={};_0x1e1d03[_0x441257]={'$like':'%'+_0x3deeb3['query'][_0xdd8c('0x42')]+'%'};return _0x1e1d03;})});}_0x42b8cf=_['merge']({},_0x42b8cf,_0x3deeb3['options']);return db[_0xdd8c('0x5c')]['findAll'](_0x42b8cf);}})[_0xdd8c('0x28')](function(_0x29c61f){if(_0x29c61f){return db['User']['findAndCountAll']({'where':{'id':_[_0xdd8c('0x37')](_0x29c61f,_0xdd8c('0x5e')),'role':_0xdd8c('0x5f')},'attributes':['id',_0xdd8c('0x2e'),_0xdd8c('0x60'),_0xdd8c('0x61'),'createdAt']});}})[_0xdd8c('0x28')](function(_0xf3ae10){if(_0xf3ae10){return{'count':_0xf3ae10[_0xdd8c('0x23')],'rows':_[_0xdd8c('0x37')](_0xf3ae10[_0xdd8c('0x48')],function(_0x53c86a){return{'membername':_0x53c86a[_0xdd8c('0x2e')],'UserId':_0x53c86a['id'],'queue_name':_0x268534[_0xdd8c('0x2e')],'WhatsappQueueId':_0x268534['id'],'interface':util[_0xdd8c('0x62')]('%s/%s',_0xdd8c('0x63'),_0x53c86a[_0xdd8c('0x2e')]),'penalty':0x0,'paused':_0x53c86a['whatsappPause'],'createdAt':_0x53c86a[_0xdd8c('0x64')],'updatedAt':_0x53c86a[_0xdd8c('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xdd8c('0x28')](respondWithFilteredResult(_0x4882b1,_0x42b8cf))[_0xdd8c('0x49')](handleError(_0x4882b1,null));};exports[_0xdd8c('0x65')]=function(_0x5058c2,_0x39ab87,_0x4752aa){var _0x5dfec3={};var _0x28b4e2={};var _0xc23507;var _0x2daa45;return db[_0xdd8c('0x31')][_0xdd8c('0x5b')]({'where':{'id':_0x5058c2[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x39ab87,null))[_0xdd8c('0x28')](function(_0x21a851){if(_0x21a851){_0xc23507=_0x21a851;_0x28b4e2[_0xdd8c('0x36')]=_[_0xdd8c('0x39')](db[_0xdd8c('0x66')]['rawAttributes']);_0x28b4e2[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x5058c2[_0xdd8c('0x38')]);_0x28b4e2[_0xdd8c('0x3a')]=_['intersection'](_0x28b4e2[_0xdd8c('0x36')],_0x28b4e2[_0xdd8c('0x38')]);_0x5dfec3[_0xdd8c('0x3b')]=_[_0xdd8c('0x4c')](_0x28b4e2[_0xdd8c('0x36')],qs['fields'](_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x5dfec3['attributes']=_0x5dfec3[_0xdd8c('0x3b')][_0xdd8c('0x4d')]?_0x5dfec3[_0xdd8c('0x3b')]:_0x28b4e2[_0xdd8c('0x36')];_0x5dfec3['order']=qs[_0xdd8c('0x40')](_0x5058c2['query'][_0xdd8c('0x40')]);_0x5dfec3[_0xdd8c('0x41')]=qs[_0xdd8c('0x3a')](_[_0xdd8c('0x67')](_0x5058c2[_0xdd8c('0x38')],_0x28b4e2[_0xdd8c('0x3a')]));if(_0x5058c2[_0xdd8c('0x38')]['filter']){_0x5dfec3['where']=_['merge'](_0x5dfec3['where'],{'$or':_[_0xdd8c('0x37')](_0x5dfec3[_0xdd8c('0x3b')],function(_0x3b64ab){var _0x723708={};_0x723708[_0x3b64ab]={'$like':'%'+_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x42')]+'%'};return _0x723708;})});}_0x5dfec3=_[_0xdd8c('0x43')]({},_0x5dfec3,_0x5058c2[_0xdd8c('0x44')]);return _0xc23507[_0xdd8c('0x65')](_0x5dfec3);}})[_0xdd8c('0x28')](function(_0x31dd1d){if(_0x31dd1d){_0x2daa45=_0x31dd1d['length'];if(!_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x5dfec3['limit']=qs[_0xdd8c('0x21')](_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x21')]);_0x5dfec3[_0xdd8c('0x20')]=qs[_0xdd8c('0x20')](_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x20')]);}return _0xc23507[_0xdd8c('0x65')](_0x5dfec3);}})[_0xdd8c('0x28')](function(_0x3e22d8){if(_0x3e22d8){return _0x3e22d8?{'count':_0x2daa45,'rows':_0x3e22d8}:null;}})['then'](respondWithResult(_0x39ab87,null))[_0xdd8c('0x49')](handleError(_0x39ab87,null));};exports[_0xdd8c('0x68')]=function(_0x783e8b,_0x5bc89a,_0x4f88d8){var _0x4f01e8=_0x783e8b['body']['ids'];return db[_0xdd8c('0x66')][_0xdd8c('0x47')]({'where':{'id':_0x4f01e8},'attributes':['id'],'include':[{'model':db[_0xdd8c('0x69')],'as':_0xdd8c('0x6a'),'attributes':['id','name',_0xdd8c('0x6b'),_0xdd8c('0x6c'),'interface'],'raw':!![]}]})[_0xdd8c('0x28')](function(_0x4deff8){if(_0x4deff8){var _0x4ed27f=_[_0xdd8c('0x6d')](_0x4deff8,function(_0x30da6d){var _0x6d5628=_0x30da6d[_0xdd8c('0x29')]({'plain':!![]});return _0x6d5628[_0xdd8c('0x6a')];});return db['WhatsappQueue'][_0xdd8c('0x58')]({'where':{'id':_0x783e8b[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](function(_0x1d1fb5){return db[_0xdd8c('0x6e')][_0xdd8c('0x6f')](function(_0x52044a){return _0x1d1fb5[_0xdd8c('0x68')](_0x4f01e8,{'transaction':_0x52044a})[_0xdd8c('0x28')](function(){return BPromise[_0xdd8c('0x70')](_0x4ed27f,function(_0x374a03){return db[_0xdd8c('0x5c')][_0xdd8c('0x71')]({'where':{'UserId':_0x374a03['id'],'WhatsappQueueId':_0x783e8b[_0xdd8c('0x4b')]['id']},'transaction':_0x52044a});});})[_0xdd8c('0x28')](function(){_0x4ed27f['forEach'](function(_0x55243d){socket[_0xdd8c('0x72')](_0xdd8c('0x73'),{'UserId':_0x55243d['id'],'WhatsappQueueId':_0x1d1fb5['id']});});});});});}})[_0xdd8c('0x28')](respondWithStatusCode(_0x5bc89a,null))[_0xdd8c('0x49')](handleError(_0x5bc89a,null));};exports[_0xdd8c('0x74')]=function(_0x511d03,_0x4a00fb,_0x3b07b7){return db[_0xdd8c('0x66')]['findAll']({'where':{'id':_0x511d03[_0xdd8c('0x38')][_0xdd8c('0x75')]},'attributes':['id'],'include':[{'model':db[_0xdd8c('0x69')],'as':_0xdd8c('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xdd8c('0x28')](handleEntityNotFound(_0x4a00fb,null))['then'](function(_0x49aa31){var _0x583464=_[_0xdd8c('0x37')](_0x49aa31,'id');var _0x3178cd=[];var _0x1e25bd=[];var _0x199237=squel[_0xdd8c('0x76')]();_0x199237[_0xdd8c('0x77')](_0xdd8c('0x78'))[_0xdd8c('0x79')]('team_has_whatsapp_queues','tq')[_0xdd8c('0x7a')](_0xdd8c('0x7b'),'ut',_0xdd8c('0x7c'))[_0xdd8c('0x41')](_0xdd8c('0x7d'),_0x511d03['params']['id']);for(var _0x5d656f=0x0;_0x5d656f<_0x49aa31[_0xdd8c('0x4d')];_0x5d656f+=0x1){let _0x52f3fa=_0x49aa31[_0x5d656f];for(var _0x1fb986=0x0;_0x1fb986<_0x52f3fa[_0xdd8c('0x6a')][_0xdd8c('0x4d')];_0x1fb986+=0x1){let _0x3c1ca8=_0x52f3fa['Agents'][_0x1fb986];var _0x55ae19=_0x199237['clone']();_0x55ae19[_0xdd8c('0x41')](_0xdd8c('0x7e'),_0x3c1ca8['id']);_0x1e25bd[_0xdd8c('0x7f')](db[_0xdd8c('0x6e')][_0xdd8c('0x38')](_0x55ae19['toString'](),{'type':db['sequelize']['QueryTypes'][_0xdd8c('0x80')]})['then'](function(_0x57c197){if(_0x57c197['length']===0x1){return _0x3c1ca8['id'];}else{var _0x145e08=_[_0xdd8c('0x81')](_[_0xdd8c('0x37')](_0x57c197,_0xdd8c('0x82')),function(_0x58a6b1){return _[_0xdd8c('0x83')](_0x583464,_0x58a6b1);});if(_0x145e08){return _0x3c1ca8['id'];}}}));}}return BPromise[_0xdd8c('0x84')](_0x1e25bd)['then'](function(_0x4cee07){_0x3178cd=_(_0x3178cd)[_0xdd8c('0x85')](_0x4cee07)[_0xdd8c('0x86')]()[_0xdd8c('0x87')]();return db[_0xdd8c('0x31')][_0xdd8c('0x58')]({'where':{'id':_0x511d03[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](function(_0x4355ad){return db[_0xdd8c('0x6e')][_0xdd8c('0x6f')](function(_0x1debcd){return _0x4355ad[_0xdd8c('0x74')](_0x511d03['query'][_0xdd8c('0x75')],{'transaction':_0x1debcd})[_0xdd8c('0x28')](function(){if(!_[_0xdd8c('0x88')](_0x3178cd)){return _0x4355ad[_0xdd8c('0x89')](_0x3178cd,{'transaction':_0x1debcd});}})['then'](function(){_0x3178cd[_0xdd8c('0x8a')](function(_0x34fab3){socket['emit'](_0xdd8c('0x8b'),{'UserId':_0x34fab3,'WhatsappQueueId':_0x4355ad['id']});});});});});});})[_0xdd8c('0x28')](respondWithStatusCode(_0x4a00fb,null))[_0xdd8c('0x49')](handleError(_0x4a00fb,null));};exports[_0xdd8c('0x8c')]=function(_0x61f1a,_0x542d5d,_0xb5531){return db[_0xdd8c('0x31')][_0xdd8c('0x58')]({'where':{'id':_0x61f1a[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x542d5d,null))[_0xdd8c('0x28')](function(_0x352ad0){if(_0x352ad0){return _0x352ad0[_0xdd8c('0x8c')](_0x61f1a[_0xdd8c('0x4f')][_0xdd8c('0x75')],_['omit'](_0x61f1a[_0xdd8c('0x4f')],['ids','id'])||{})[_0xdd8c('0x8d')](function(_0x22a2b8){for(var _0x261729=0x0;_0x261729<_0x61f1a[_0xdd8c('0x4f')]['ids']['length'];_0x261729+=0x1){socket[_0xdd8c('0x72')](_0xdd8c('0x73'),{'UserId':Number(_0x61f1a[_0xdd8c('0x4f')]['ids'][_0x261729]),'WhatsappQueueId':Number(_0x61f1a[_0xdd8c('0x4b')]['id'])});}return _0x22a2b8;});}})['then'](respondWithResult(_0x542d5d,null))[_0xdd8c('0x49')](handleError(_0x542d5d,null));};exports[_0xdd8c('0x89')]=function(_0x26ba26,_0xad50bf,_0xf73e0b){return db[_0xdd8c('0x31')]['find']({'where':{'id':_0x26ba26['params']['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0xad50bf,null))[_0xdd8c('0x28')](function(_0x569d3c){if(_0x569d3c){return _0x569d3c['removeAgents'](_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')])[_0xdd8c('0x28')](function(){if(_[_0xdd8c('0x8e')](_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')])){for(var _0x4cc073=0x0;_0x4cc073<_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')][_0xdd8c('0x4d')];_0x4cc073+=0x1){socket[_0xdd8c('0x72')](_0xdd8c('0x8b'),{'UserId':Number(_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')][_0x4cc073]),'WhatsappQueueId':Number(_0x26ba26[_0xdd8c('0x4b')]['id'])});}}else{socket[_0xdd8c('0x72')]('userWhatsappQueue:remove',{'UserId':Number(_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')]),'WhatsappQueueId':Number(_0x26ba26[_0xdd8c('0x4b')]['id'])});}});}})[_0xdd8c('0x28')](respondWithStatusCode(_0xad50bf,null))[_0xdd8c('0x49')](handleError(_0xad50bf,null));};exports[_0xdd8c('0x8f')]=function(_0x178490,_0x59dd45,_0xde908e){var _0x2f340c={};var _0x3c8fbe={};var _0x449a34;var _0x52ae52;return db[_0xdd8c('0x31')][_0xdd8c('0x5b')]({'where':{'id':_0x178490['params']['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x59dd45,null))[_0xdd8c('0x28')](function(_0x523463){if(_0x523463){_0x449a34=_0x523463;_0x3c8fbe[_0xdd8c('0x36')]=_['keys'](db[_0xdd8c('0x69')]['rawAttributes']);_0x3c8fbe['query']=_[_0xdd8c('0x39')](_0x178490['query']);_0x3c8fbe[_0xdd8c('0x3a')]=_[_0xdd8c('0x4c')](_0x3c8fbe[_0xdd8c('0x36')],_0x3c8fbe[_0xdd8c('0x38')]);_0x2f340c[_0xdd8c('0x3b')]=_[_0xdd8c('0x4c')](_0x3c8fbe[_0xdd8c('0x36')],qs['fields'](_0x178490[_0xdd8c('0x38')]['fields']));_0x2f340c[_0xdd8c('0x3b')]=_0x2f340c[_0xdd8c('0x3b')][_0xdd8c('0x4d')]?_0x2f340c[_0xdd8c('0x3b')]:_0x3c8fbe[_0xdd8c('0x36')];_0x2f340c['order']=qs['sort'](_0x178490[_0xdd8c('0x38')]['sort']);_0x2f340c['where']=qs[_0xdd8c('0x3a')](_[_0xdd8c('0x67')](_0x178490[_0xdd8c('0x38')],_0x3c8fbe[_0xdd8c('0x3a')]));if(_0x178490['query'][_0xdd8c('0x42')]){_0x2f340c[_0xdd8c('0x41')]=_[_0xdd8c('0x43')](_0x2f340c['where'],{'$or':_['map'](_0x2f340c[_0xdd8c('0x3b')],function(_0x2bb585){var _0x53768b={};_0x53768b[_0x2bb585]={'$like':'%'+_0x178490['query'][_0xdd8c('0x42')]+'%'};return _0x53768b;})});}_0x2f340c=_[_0xdd8c('0x43')]({},_0x2f340c,_0x178490[_0xdd8c('0x44')]);return _0x449a34[_0xdd8c('0x8f')](_0x2f340c);}})[_0xdd8c('0x28')](function(_0x37dc4e){if(_0x37dc4e){_0x52ae52=_0x37dc4e[_0xdd8c('0x4d')];if(!_0x178490[_0xdd8c('0x38')][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x2f340c[_0xdd8c('0x21')]=qs[_0xdd8c('0x21')](_0x178490[_0xdd8c('0x38')][_0xdd8c('0x21')]);_0x2f340c['offset']=qs[_0xdd8c('0x20')](_0x178490['query']['offset']);}return _0x449a34[_0xdd8c('0x8f')](_0x2f340c);}})[_0xdd8c('0x28')](function(_0x59099b){if(_0x59099b){return _0x59099b?{'count':_0x52ae52,'rows':_0x59099b}:null;}})['then'](respondWithResult(_0x59dd45,null))[_0xdd8c('0x49')](handleError(_0x59dd45,null));};
\ No newline at end of file
+var _0x7649=['limit','offset','set','Content-Range','apply','reject','save','update','destroy','then','get','WhatsappQueues','error','stack','name','index','map','WhatsappQueue','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','order','sort','where','pick','filter','merge','type','VIRTUAL','count','includeAll','include','findAll','show','params','length','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','WhatsappQueueId','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','format','%s/%s','SIP','Team','getTeams','hasOwnProperty','nolimit','addTeams','ids','Agents','interface','sequelize','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','includes','union','compact','value','transaction','isEmpty','userWhatsappQueue:remove','addAgents','omit','spread','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','register','sendStatus','status','end','json','undefined'];(function(_0x3e40b8,_0x27358a){var _0x456430=function(_0x3310f3){while(--_0x3310f3){_0x3e40b8['push'](_0x3e40b8['shift']());}};_0x456430(++_0x27358a);}(_0x7649,0xf9));var _0x9764=function(_0xbcf372,_0x51df05){_0xbcf372=_0xbcf372-0x0;var _0x343b43=_0x7649[_0xbcf372];return _0x343b43;};'use strict';var emlformat=require(_0x9764('0x0'));var rimraf=require(_0x9764('0x1'));var zipdir=require(_0x9764('0x2'));var jsonpatch=require(_0x9764('0x3'));var rp=require('request-promise');var moment=require(_0x9764('0x4'));var BPromise=require(_0x9764('0x5'));var Mustache=require('mustache');var util=require(_0x9764('0x6'));var path=require(_0x9764('0x7'));var sox=require('sox');var csv=require(_0x9764('0x8'));var ejs=require(_0x9764('0x9'));var fs=require('fs');var fs_extra=require(_0x9764('0xa'));var _=require(_0x9764('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9764('0xc'));var deskjs=require(_0x9764('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9764('0xe'));var Papa=require(_0x9764('0xf'));var Redis=require(_0x9764('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9764('0x11'));var hardwareService=require(_0x9764('0x12'));var logger=require('../../config/logger')(_0x9764('0x13'));var utils=require(_0x9764('0x14'));var config=require(_0x9764('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x9764('0x16'))['db'];config[_0x9764('0x17')]=_['defaults'](config[_0x9764('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x9764('0x18'))(new Redis(config[_0x9764('0x17')]));require('./whatsappQueue.socket')[_0x9764('0x19')](socket);function respondWithStatusCode(_0x2c9325,_0x588be5){_0x588be5=_0x588be5||0xcc;return function(_0x27e4c4){if(_0x27e4c4){return _0x2c9325[_0x9764('0x1a')](_0x588be5);}return _0x2c9325[_0x9764('0x1b')](_0x588be5)[_0x9764('0x1c')]();};}function respondWithResult(_0x2993e4,_0x1fe720){_0x1fe720=_0x1fe720||0xc8;return function(_0xa68eb2){if(_0xa68eb2){return _0x2993e4[_0x9764('0x1b')](_0x1fe720)[_0x9764('0x1d')](_0xa68eb2);}};}function respondWithFilteredResult(_0x534e02,_0x28e72b){return function(_0x57d1b5){if(_0x57d1b5){var _0x955c6d=typeof _0x28e72b['offset']===_0x9764('0x1e')&&typeof _0x28e72b[_0x9764('0x1f')]===_0x9764('0x1e');var _0x1ee0a3=_0x57d1b5['count'];var _0x1828c5=_0x955c6d?0x0:_0x28e72b[_0x9764('0x20')];var _0x53fcc4=_0x955c6d?_0x57d1b5['count']:_0x28e72b[_0x9764('0x20')]+_0x28e72b[_0x9764('0x1f')];var _0xdd076b;if(_0x53fcc4>=_0x1ee0a3){_0x53fcc4=_0x1ee0a3;_0xdd076b=0xc8;}else{_0xdd076b=0xce;}_0x534e02[_0x9764('0x1b')](_0xdd076b);return _0x534e02[_0x9764('0x21')](_0x9764('0x22'),_0x1828c5+'-'+_0x53fcc4+'/'+_0x1ee0a3)[_0x9764('0x1d')](_0x57d1b5);}return null;};}function patchUpdates(_0x51ce98){return function(_0x2b1eec){try{jsonpatch[_0x9764('0x23')](_0x2b1eec,_0x51ce98,!![]);}catch(_0x243274){return BPromise[_0x9764('0x24')](_0x243274);}return _0x2b1eec[_0x9764('0x25')]();};}function saveUpdates(_0xafdc71,_0x404f46){return function(_0x359368){if(_0x359368){return _0x359368[_0x9764('0x26')](_0xafdc71)['then'](function(_0x3170c3){return _0x3170c3;});}return null;};}function removeEntity(_0x4911f6,_0x1d6dce){return function(_0x4ed387){if(_0x4ed387){return _0x4ed387[_0x9764('0x27')]()[_0x9764('0x28')](function(){var _0x1f8833=_0x4ed387[_0x9764('0x29')]({'plain':!![]});var _0x42ae08=_0x9764('0x2a');return db['UserProfileResource'][_0x9764('0x27')]({'where':{'type':_0x42ae08,'resourceId':_0x1f8833['id']}})['then'](function(){return _0x4ed387;});})['then'](function(){_0x4911f6[_0x9764('0x1b')](0xcc)[_0x9764('0x1c')]();});}};}function handleEntityNotFound(_0x542e8c,_0x127cdd){return function(_0x37089c){if(!_0x37089c){_0x542e8c[_0x9764('0x1a')](0x194);}return _0x37089c;};}function handleError(_0x49112b,_0x3112ed){_0x3112ed=_0x3112ed||0x1f4;return function(_0x40c673){logger[_0x9764('0x2b')](_0x40c673[_0x9764('0x2c')]);if(_0x40c673[_0x9764('0x2d')]){delete _0x40c673[_0x9764('0x2d')];}_0x49112b[_0x9764('0x1b')](_0x3112ed)['send'](_0x40c673);};}exports[_0x9764('0x2e')]=function(_0x3a8702,_0x1d670b){var _0x4e618d={},_0x7b4a5b={},_0x28607e={'count':0x0,'rows':[]};var _0x32f491=_[_0x9764('0x2f')](db[_0x9764('0x30')][_0x9764('0x31')],function(_0xcb6f12){return{'name':_0xcb6f12[_0x9764('0x32')],'type':_0xcb6f12['type'][_0x9764('0x33')]};});_0x7b4a5b[_0x9764('0x34')]=_[_0x9764('0x2f')](_0x32f491,_0x9764('0x2d'));_0x7b4a5b['query']=_[_0x9764('0x35')](_0x3a8702[_0x9764('0x36')]);_0x7b4a5b[_0x9764('0x37')]=_['intersection'](_0x7b4a5b[_0x9764('0x34')],_0x7b4a5b[_0x9764('0x36')]);_0x4e618d[_0x9764('0x38')]=_[_0x9764('0x39')](_0x7b4a5b[_0x9764('0x34')],qs[_0x9764('0x3a')](_0x3a8702[_0x9764('0x36')][_0x9764('0x3a')]));_0x4e618d[_0x9764('0x38')]=_0x4e618d['attributes']['length']?_0x4e618d['attributes']:_0x7b4a5b['model'];if(!_0x3a8702[_0x9764('0x36')]['hasOwnProperty']('nolimit')){_0x4e618d[_0x9764('0x1f')]=qs[_0x9764('0x1f')](_0x3a8702['query'][_0x9764('0x1f')]);_0x4e618d[_0x9764('0x20')]=qs['offset'](_0x3a8702['query'][_0x9764('0x20')]);}_0x4e618d[_0x9764('0x3b')]=qs[_0x9764('0x3c')](_0x3a8702[_0x9764('0x36')][_0x9764('0x3c')]);_0x4e618d[_0x9764('0x3d')]=qs['filters'](_[_0x9764('0x3e')](_0x3a8702[_0x9764('0x36')],_0x7b4a5b[_0x9764('0x37')]),_0x32f491);if(_0x3a8702[_0x9764('0x36')][_0x9764('0x3f')]){_0x4e618d[_0x9764('0x3d')]=_[_0x9764('0x40')](_0x4e618d[_0x9764('0x3d')],{'$or':_[_0x9764('0x2f')](_0x32f491,function(_0x1604e1){if(_0x1604e1[_0x9764('0x41')]!==_0x9764('0x42')){var _0xda8ad6={};_0xda8ad6[_0x1604e1[_0x9764('0x2d')]]={'$like':'%'+_0x3a8702[_0x9764('0x36')][_0x9764('0x3f')]+'%'};return _0xda8ad6;}})});}_0x4e618d=_[_0x9764('0x40')]({},_0x4e618d,_0x3a8702['options']);var _0x5288c2={'where':_0x4e618d[_0x9764('0x3d')]};return db[_0x9764('0x30')][_0x9764('0x43')](_0x5288c2)[_0x9764('0x28')](function(_0x4e4e51){_0x28607e[_0x9764('0x43')]=_0x4e4e51;if(_0x3a8702[_0x9764('0x36')][_0x9764('0x44')]){_0x4e618d[_0x9764('0x45')]=[{'all':!![]}];}return db[_0x9764('0x30')][_0x9764('0x46')](_0x4e618d);})[_0x9764('0x28')](function(_0x5bfb16){_0x28607e['rows']=_0x5bfb16;return _0x28607e;})[_0x9764('0x28')](respondWithFilteredResult(_0x1d670b,_0x4e618d))['catch'](handleError(_0x1d670b,null));};exports[_0x9764('0x47')]=function(_0x5bbfa9,_0x3831b0){var _0x1520d1={'raw':!![],'where':{'id':_0x5bbfa9[_0x9764('0x48')]['id']}},_0xb7b026={};_0xb7b026[_0x9764('0x34')]=_['keys'](db[_0x9764('0x30')]['rawAttributes']);_0xb7b026[_0x9764('0x36')]=_[_0x9764('0x35')](_0x5bbfa9[_0x9764('0x36')]);_0xb7b026[_0x9764('0x37')]=_[_0x9764('0x39')](_0xb7b026[_0x9764('0x34')],_0xb7b026[_0x9764('0x36')]);_0x1520d1[_0x9764('0x38')]=_['intersection'](_0xb7b026['model'],qs[_0x9764('0x3a')](_0x5bbfa9['query']['fields']));_0x1520d1[_0x9764('0x38')]=_0x1520d1[_0x9764('0x38')][_0x9764('0x49')]?_0x1520d1[_0x9764('0x38')]:_0xb7b026[_0x9764('0x34')];if(_0x5bbfa9[_0x9764('0x36')][_0x9764('0x44')]){_0x1520d1['include']=[{'all':!![]}];}_0x1520d1=_[_0x9764('0x40')]({},_0x1520d1,_0x5bbfa9[_0x9764('0x4a')]);return db[_0x9764('0x30')][_0x9764('0x4b')](_0x1520d1)[_0x9764('0x28')](handleEntityNotFound(_0x3831b0,null))[_0x9764('0x28')](respondWithResult(_0x3831b0,null))[_0x9764('0x4c')](handleError(_0x3831b0,null));};exports[_0x9764('0x4d')]=function(_0x35343c,_0x30538f){return db['WhatsappQueue'][_0x9764('0x4d')](_0x35343c[_0x9764('0x4e')],{})[_0x9764('0x28')](function(_0xd53e4c){var _0x5df368=_0x35343c[_0x9764('0x4f')][_0x9764('0x29')]({'plain':!![]});if(!_0x5df368)throw new Error(_0x9764('0x50'));if(_0x5df368[_0x9764('0x51')]===_0x9764('0x4f')){var _0x235e8a=_0xd53e4c['get']({'plain':!![]});var _0x581c8f='WhatsappQueues';return db[_0x9764('0x52')][_0x9764('0x4b')]({'where':{'name':_0x581c8f,'userProfileId':_0x5df368[_0x9764('0x53')]},'raw':!![]})['then'](function(_0x492693){if(_0x492693&&_0x492693['autoAssociation']===0x0){return db['UserProfileResource'][_0x9764('0x4d')]({'name':_0x235e8a[_0x9764('0x2d')],'resourceId':_0x235e8a['id'],'type':_0x492693['name'],'sectionId':_0x492693['id']},{})['then'](function(){return _0xd53e4c;});}else{return _0xd53e4c;}})[_0x9764('0x4c')](function(_0x277686){logger['error'](_0x9764('0x54'),_0x277686);throw _0x277686;});}return _0xd53e4c;})['then'](respondWithResult(_0x30538f,0xc9))['catch'](handleError(_0x30538f,null));};exports[_0x9764('0x26')]=function(_0x5bbd85,_0x257261){if(_0x5bbd85[_0x9764('0x4e')]['id']){delete _0x5bbd85['body']['id'];}return db['WhatsappQueue']['find']({'where':{'id':_0x5bbd85[_0x9764('0x48')]['id']}})['then'](handleEntityNotFound(_0x257261,null))['then'](saveUpdates(_0x5bbd85['body'],null))['then'](respondWithResult(_0x257261,null))[_0x9764('0x4c')](handleError(_0x257261,null));};exports[_0x9764('0x27')]=function(_0x254232,_0x260aa7){return db['WhatsappQueue']['find']({'where':{'id':_0x254232[_0x9764('0x48')]['id']}})[_0x9764('0x28')](handleEntityNotFound(_0x260aa7,null))['then'](removeEntity(_0x260aa7,null))['catch'](handleError(_0x260aa7,null));};exports['describe']=function(_0x18b724,_0x30e221){return db[_0x9764('0x30')][_0x9764('0x55')]()[_0x9764('0x28')](respondWithResult(_0x30e221,null))['catch'](handleError(_0x30e221,null));};exports[_0x9764('0x56')]=function(_0x410496,_0x38af8f,_0x5cae4a){var _0x46a9f5={'raw':!![],'where':{}},_0x4f13b6={},_0x5079ee;return db[_0x9764('0x30')][_0x9764('0x57')]({'where':{'id':_0x410496[_0x9764('0x48')]['id']}})[_0x9764('0x28')](handleEntityNotFound(_0x38af8f,null))['then'](function(_0x55be24){if(_0x55be24){_0x5079ee=_0x55be24['get']({'plain':!![]});_0x4f13b6[_0x9764('0x34')]=_[_0x9764('0x35')](db[_0x9764('0x58')][_0x9764('0x31')]);_0x4f13b6[_0x9764('0x36')]=_['keys'](_0x410496['query']);_0x4f13b6[_0x9764('0x37')]=_[_0x9764('0x39')](_0x4f13b6[_0x9764('0x34')],_0x4f13b6[_0x9764('0x36')]);_0x46a9f5[_0x9764('0x38')]=_[_0x9764('0x39')](_0x4f13b6[_0x9764('0x34')],qs[_0x9764('0x3a')](_0x410496[_0x9764('0x36')]['fields']));_0x46a9f5[_0x9764('0x38')]=_0x46a9f5[_0x9764('0x38')][_0x9764('0x49')]?_0x46a9f5[_0x9764('0x38')]:_0x4f13b6[_0x9764('0x34')];if(!_0x410496[_0x9764('0x36')]['hasOwnProperty']('nolimit')){_0x46a9f5[_0x9764('0x1f')]=qs[_0x9764('0x1f')](_0x410496[_0x9764('0x36')]['limit']);_0x46a9f5[_0x9764('0x20')]=qs[_0x9764('0x20')](_0x410496[_0x9764('0x36')]['offset']);}_0x46a9f5[_0x9764('0x3b')]=qs[_0x9764('0x3c')](_0x410496[_0x9764('0x36')][_0x9764('0x3c')]);_0x46a9f5[_0x9764('0x3d')]=qs[_0x9764('0x37')](_[_0x9764('0x3e')](_0x410496[_0x9764('0x36')],_0x4f13b6['filters']));_0x46a9f5[_0x9764('0x3d')][_0x9764('0x59')]=_0x55be24['id'];if(_0x410496[_0x9764('0x36')]['filter']){_0x46a9f5[_0x9764('0x3d')]=_[_0x9764('0x40')](_0x46a9f5[_0x9764('0x3d')],{'$or':_[_0x9764('0x2f')](_0x46a9f5[_0x9764('0x38')],function(_0x1eeff6){var _0x142931={};_0x142931[_0x1eeff6]={'$like':'%'+_0x410496[_0x9764('0x36')]['filter']+'%'};return _0x142931;})});}_0x46a9f5=_['merge']({},_0x46a9f5,_0x410496[_0x9764('0x4a')]);return db['UserWhatsappQueue'][_0x9764('0x46')](_0x46a9f5);}})['then'](function(_0xfd73f){if(_0xfd73f){return db[_0x9764('0x5a')][_0x9764('0x5b')]({'where':{'id':_['map'](_0xfd73f,_0x9764('0x5c')),'role':_0x9764('0x5d')},'attributes':['id','name',_0x9764('0x5e'),_0x9764('0x5f'),'createdAt']});}})[_0x9764('0x28')](function(_0x513061){if(_0x513061){return{'count':_0x513061['count'],'rows':_['map'](_0x513061['rows'],function(_0x1ab0f2){return{'membername':_0x1ab0f2[_0x9764('0x2d')],'UserId':_0x1ab0f2['id'],'queue_name':_0x5079ee[_0x9764('0x2d')],'WhatsappQueueId':_0x5079ee['id'],'interface':util[_0x9764('0x60')](_0x9764('0x61'),_0x9764('0x62'),_0x1ab0f2[_0x9764('0x2d')]),'penalty':0x0,'paused':_0x1ab0f2[_0x9764('0x5e')],'createdAt':_0x1ab0f2['createdAt'],'updatedAt':_0x1ab0f2['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x9764('0x28')](respondWithFilteredResult(_0x38af8f,_0x46a9f5))[_0x9764('0x4c')](handleError(_0x38af8f,null));};exports['getTeams']=function(_0x4d9ec4,_0x186ee9,_0xc249ee){var _0x2e84a6={};var _0x447338={};var _0x33d333;var _0x3a60ed;return db[_0x9764('0x30')][_0x9764('0x57')]({'where':{'id':_0x4d9ec4['params']['id']}})['then'](handleEntityNotFound(_0x186ee9,null))[_0x9764('0x28')](function(_0x19f169){if(_0x19f169){_0x33d333=_0x19f169;_0x447338[_0x9764('0x34')]=_[_0x9764('0x35')](db[_0x9764('0x63')][_0x9764('0x31')]);_0x447338['query']=_[_0x9764('0x35')](_0x4d9ec4['query']);_0x447338['filters']=_['intersection'](_0x447338['model'],_0x447338[_0x9764('0x36')]);_0x2e84a6[_0x9764('0x38')]=_[_0x9764('0x39')](_0x447338[_0x9764('0x34')],qs['fields'](_0x4d9ec4['query'][_0x9764('0x3a')]));_0x2e84a6['attributes']=_0x2e84a6[_0x9764('0x38')][_0x9764('0x49')]?_0x2e84a6[_0x9764('0x38')]:_0x447338[_0x9764('0x34')];_0x2e84a6[_0x9764('0x3b')]=qs[_0x9764('0x3c')](_0x4d9ec4[_0x9764('0x36')][_0x9764('0x3c')]);_0x2e84a6['where']=qs['filters'](_['pick'](_0x4d9ec4[_0x9764('0x36')],_0x447338[_0x9764('0x37')]));if(_0x4d9ec4[_0x9764('0x36')][_0x9764('0x3f')]){_0x2e84a6['where']=_['merge'](_0x2e84a6[_0x9764('0x3d')],{'$or':_[_0x9764('0x2f')](_0x2e84a6[_0x9764('0x38')],function(_0x5b9f49){var _0xc6ba1d={};_0xc6ba1d[_0x5b9f49]={'$like':'%'+_0x4d9ec4[_0x9764('0x36')][_0x9764('0x3f')]+'%'};return _0xc6ba1d;})});}_0x2e84a6=_[_0x9764('0x40')]({},_0x2e84a6,_0x4d9ec4[_0x9764('0x4a')]);return _0x33d333[_0x9764('0x64')](_0x2e84a6);}})[_0x9764('0x28')](function(_0x105c52){if(_0x105c52){_0x3a60ed=_0x105c52[_0x9764('0x49')];if(!_0x4d9ec4[_0x9764('0x36')][_0x9764('0x65')](_0x9764('0x66'))){_0x2e84a6[_0x9764('0x1f')]=qs[_0x9764('0x1f')](_0x4d9ec4[_0x9764('0x36')][_0x9764('0x1f')]);_0x2e84a6[_0x9764('0x20')]=qs[_0x9764('0x20')](_0x4d9ec4[_0x9764('0x36')][_0x9764('0x20')]);}return _0x33d333['getTeams'](_0x2e84a6);}})[_0x9764('0x28')](function(_0x48fd68){if(_0x48fd68){return _0x48fd68?{'count':_0x3a60ed,'rows':_0x48fd68}:null;}})[_0x9764('0x28')](respondWithResult(_0x186ee9,null))[_0x9764('0x4c')](handleError(_0x186ee9,null));};exports[_0x9764('0x67')]=function(_0x3c7cf2,_0x3e6c9a,_0x5f0f1d){var _0x169d5e=_0x3c7cf2['body'][_0x9764('0x68')];return db[_0x9764('0x63')][_0x9764('0x46')]({'where':{'id':_0x169d5e},'attributes':['id'],'include':[{'model':db[_0x9764('0x5a')],'as':_0x9764('0x69'),'attributes':['id',_0x9764('0x2d'),'online','voicePause',_0x9764('0x6a')],'raw':!![]}]})[_0x9764('0x28')](function(_0x2c898b){if(_0x2c898b){var _0x351a87=_['flatMap'](_0x2c898b,function(_0x1e3428){var _0x185ef2=_0x1e3428['get']({'plain':!![]});return _0x185ef2[_0x9764('0x69')];});return db[_0x9764('0x30')][_0x9764('0x4b')]({'where':{'id':_0x3c7cf2[_0x9764('0x48')]['id']}})[_0x9764('0x28')](function(_0x51c45c){return db[_0x9764('0x6b')]['transaction'](function(_0x29e81c){return _0x51c45c[_0x9764('0x67')](_0x169d5e,{'transaction':_0x29e81c})[_0x9764('0x28')](function(){return BPromise[_0x9764('0x6c')](_0x351a87,function(_0x53576b){return db[_0x9764('0x58')][_0x9764('0x6d')]({'where':{'UserId':_0x53576b['id'],'WhatsappQueueId':_0x3c7cf2[_0x9764('0x48')]['id']},'transaction':_0x29e81c});});})[_0x9764('0x28')](function(){_0x351a87[_0x9764('0x6e')](function(_0x18feb9){socket[_0x9764('0x6f')](_0x9764('0x70'),{'UserId':_0x18feb9['id'],'WhatsappQueueId':_0x51c45c['id']});});});});});}})['then'](respondWithStatusCode(_0x3e6c9a,null))['catch'](handleError(_0x3e6c9a,null));};exports[_0x9764('0x71')]=function(_0x585dc9,_0x5866a3,_0xee1fff){return db[_0x9764('0x63')][_0x9764('0x46')]({'where':{'id':_0x585dc9[_0x9764('0x36')][_0x9764('0x68')]},'attributes':['id'],'include':[{'model':db[_0x9764('0x5a')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x9764('0x28')](handleEntityNotFound(_0x5866a3,null))[_0x9764('0x28')](function(_0x3f8847){var _0x2086e0=_['map'](_0x3f8847,'id');var _0x4f8896=[];var _0x435bf9=[];var _0x1b3d5c=squel['select']();_0x1b3d5c[_0x9764('0x72')](_0x9764('0x73'))[_0x9764('0x74')](_0x9764('0x75'),'tq')[_0x9764('0x76')](_0x9764('0x77'),'ut',_0x9764('0x78'))[_0x9764('0x3d')](_0x9764('0x79'),_0x585dc9[_0x9764('0x48')]['id']);for(var _0x438c43=0x0;_0x438c43<_0x3f8847[_0x9764('0x49')];_0x438c43+=0x1){let _0xbff22e=_0x3f8847[_0x438c43];for(var _0x38f631=0x0;_0x38f631<_0xbff22e['Agents']['length'];_0x38f631+=0x1){let _0x37770f=_0xbff22e[_0x9764('0x69')][_0x38f631];var _0x54f958=_0x1b3d5c[_0x9764('0x7a')]();_0x54f958[_0x9764('0x3d')](_0x9764('0x7b'),_0x37770f['id']);_0x435bf9[_0x9764('0x7c')](db['sequelize'][_0x9764('0x36')](_0x54f958['toString'](),{'type':db[_0x9764('0x6b')][_0x9764('0x7d')][_0x9764('0x7e')]})[_0x9764('0x28')](function(_0x13bb62){if(_0x13bb62[_0x9764('0x49')]===0x1){return _0x37770f['id'];}else{var _0x2c4d77=_[_0x9764('0x7f')](_[_0x9764('0x2f')](_0x13bb62,'TeamId'),function(_0x96da95){return _[_0x9764('0x80')](_0x2086e0,_0x96da95);});if(_0x2c4d77){return _0x37770f['id'];}}}));}}return BPromise['all'](_0x435bf9)[_0x9764('0x28')](function(_0x9b7392){_0x4f8896=_(_0x4f8896)[_0x9764('0x81')](_0x9b7392)[_0x9764('0x82')]()[_0x9764('0x83')]();return db['WhatsappQueue']['find']({'where':{'id':_0x585dc9[_0x9764('0x48')]['id']}})[_0x9764('0x28')](function(_0x1ae8fb){return db[_0x9764('0x6b')][_0x9764('0x84')](function(_0x34991c){return _0x1ae8fb[_0x9764('0x71')](_0x585dc9[_0x9764('0x36')][_0x9764('0x68')],{'transaction':_0x34991c})[_0x9764('0x28')](function(){if(!_[_0x9764('0x85')](_0x4f8896)){return _0x1ae8fb['removeAgents'](_0x4f8896,{'transaction':_0x34991c});}})[_0x9764('0x28')](function(){_0x4f8896[_0x9764('0x6e')](function(_0x50b118){socket[_0x9764('0x6f')](_0x9764('0x86'),{'UserId':_0x50b118,'WhatsappQueueId':_0x1ae8fb['id']});});});});});});})['then'](respondWithStatusCode(_0x5866a3,null))[_0x9764('0x4c')](handleError(_0x5866a3,null));};exports[_0x9764('0x87')]=function(_0x1e2929,_0x472b43,_0x183212){return db[_0x9764('0x30')][_0x9764('0x4b')]({'where':{'id':_0x1e2929['params']['id']}})[_0x9764('0x28')](handleEntityNotFound(_0x472b43,null))[_0x9764('0x28')](function(_0x223123){if(_0x223123){return _0x223123['addAgents'](_0x1e2929[_0x9764('0x4e')][_0x9764('0x68')],_[_0x9764('0x88')](_0x1e2929[_0x9764('0x4e')],[_0x9764('0x68'),'id'])||{})[_0x9764('0x89')](function(_0x27f6fa){for(var _0x5cd11c=0x0;_0x5cd11c<_0x1e2929['body'][_0x9764('0x68')]['length'];_0x5cd11c+=0x1){socket[_0x9764('0x6f')](_0x9764('0x70'),{'UserId':Number(_0x1e2929[_0x9764('0x4e')][_0x9764('0x68')][_0x5cd11c]),'WhatsappQueueId':Number(_0x1e2929[_0x9764('0x48')]['id'])});}return _0x27f6fa;});}})[_0x9764('0x28')](respondWithResult(_0x472b43,null))['catch'](handleError(_0x472b43,null));};exports[_0x9764('0x8a')]=function(_0x52a926,_0xe13472,_0x32efdd){return db['WhatsappQueue'][_0x9764('0x4b')]({'where':{'id':_0x52a926['params']['id']}})[_0x9764('0x28')](handleEntityNotFound(_0xe13472,null))['then'](function(_0x5e5b82){if(_0x5e5b82){return _0x5e5b82['removeAgents'](_0x52a926['query'][_0x9764('0x68')])[_0x9764('0x28')](function(){if(_['isArray'](_0x52a926['query'][_0x9764('0x68')])){for(var _0x390b4d=0x0;_0x390b4d<_0x52a926['query'][_0x9764('0x68')][_0x9764('0x49')];_0x390b4d+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x52a926[_0x9764('0x36')][_0x9764('0x68')][_0x390b4d]),'WhatsappQueueId':Number(_0x52a926[_0x9764('0x48')]['id'])});}}else{socket[_0x9764('0x6f')]('userWhatsappQueue:remove',{'UserId':Number(_0x52a926['query'][_0x9764('0x68')]),'WhatsappQueueId':Number(_0x52a926[_0x9764('0x48')]['id'])});}});}})[_0x9764('0x28')](respondWithStatusCode(_0xe13472,null))[_0x9764('0x4c')](handleError(_0xe13472,null));};exports['getAgents']=function(_0x387a9c,_0xfa757d,_0x446328){var _0x5815c7={};var _0x42b169={};var _0x4e399f;var _0x5b82fe;return db[_0x9764('0x30')][_0x9764('0x57')]({'where':{'id':_0x387a9c['params']['id']}})['then'](handleEntityNotFound(_0xfa757d,null))[_0x9764('0x28')](function(_0xac0e31){if(_0xac0e31){_0x4e399f=_0xac0e31;_0x42b169[_0x9764('0x34')]=_[_0x9764('0x35')](db[_0x9764('0x5a')][_0x9764('0x31')]);_0x42b169[_0x9764('0x36')]=_['keys'](_0x387a9c['query']);_0x42b169[_0x9764('0x37')]=_['intersection'](_0x42b169[_0x9764('0x34')],_0x42b169[_0x9764('0x36')]);_0x5815c7[_0x9764('0x38')]=_[_0x9764('0x39')](_0x42b169[_0x9764('0x34')],qs[_0x9764('0x3a')](_0x387a9c['query'][_0x9764('0x3a')]));_0x5815c7['attributes']=_0x5815c7[_0x9764('0x38')][_0x9764('0x49')]?_0x5815c7[_0x9764('0x38')]:_0x42b169[_0x9764('0x34')];_0x5815c7[_0x9764('0x3b')]=qs[_0x9764('0x3c')](_0x387a9c[_0x9764('0x36')][_0x9764('0x3c')]);_0x5815c7[_0x9764('0x3d')]=qs[_0x9764('0x37')](_['pick'](_0x387a9c[_0x9764('0x36')],_0x42b169[_0x9764('0x37')]));if(_0x387a9c[_0x9764('0x36')][_0x9764('0x3f')]){_0x5815c7[_0x9764('0x3d')]=_[_0x9764('0x40')](_0x5815c7['where'],{'$or':_[_0x9764('0x2f')](_0x5815c7[_0x9764('0x38')],function(_0x22ca56){var _0x53752a={};_0x53752a[_0x22ca56]={'$like':'%'+_0x387a9c[_0x9764('0x36')][_0x9764('0x3f')]+'%'};return _0x53752a;})});}_0x5815c7=_[_0x9764('0x40')]({},_0x5815c7,_0x387a9c[_0x9764('0x4a')]);return _0x4e399f[_0x9764('0x8b')](_0x5815c7);}})[_0x9764('0x28')](function(_0x555cc8){if(_0x555cc8){_0x5b82fe=_0x555cc8['length'];if(!_0x387a9c[_0x9764('0x36')][_0x9764('0x65')](_0x9764('0x66'))){_0x5815c7[_0x9764('0x1f')]=qs[_0x9764('0x1f')](_0x387a9c[_0x9764('0x36')][_0x9764('0x1f')]);_0x5815c7[_0x9764('0x20')]=qs[_0x9764('0x20')](_0x387a9c[_0x9764('0x36')]['offset']);}return _0x4e399f[_0x9764('0x8b')](_0x5815c7);}})[_0x9764('0x28')](function(_0x128393){if(_0x128393){return _0x128393?{'count':_0x5b82fe,'rows':_0x128393}:null;}})[_0x9764('0x28')](respondWithResult(_0xfa757d,null))[_0x9764('0x4c')](handleError(_0xfa757d,null));};
\ No newline at end of file
index bb88020..1fd12f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8be=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe8be,0x1cb));var _0xee8b=function(_0x69a451,_0x49fd37){_0x69a451=_0x69a451-0x0;var _0x3d6ef5=_0xe8be[_0x69a451];return _0x3d6ef5;};'use strict';var EventEmitter=require(_0xee8b('0x0'));var WhatsappQueue=require(_0xee8b('0x1'))['db'][_0xee8b('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xee8b('0x3')](0x0);var events={'afterCreate':_0xee8b('0x4'),'afterUpdate':_0xee8b('0x5'),'afterDestroy':_0xee8b('0x6')};function emitEvent(_0xe17d8){return function(_0xc61bd6,_0x54c0cf,_0x1875c3){WhatsappQueueEvents[_0xee8b('0x7')](_0xe17d8+':'+_0xc61bd6['id'],_0xc61bd6);WhatsappQueueEvents['emit'](_0xe17d8,_0xc61bd6);_0x1875c3(null);};}for(var e in events){if(events[_0xee8b('0x8')](e)){var event=events[e];WhatsappQueue[_0xee8b('0x9')](e,emitEvent(event));}}module[_0xee8b('0xa')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x6120=['hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappQueue','save','update','emit'];(function(_0x4259fb,_0x5e707b){var _0x39b86c=function(_0x5297db){while(--_0x5297db){_0x4259fb['push'](_0x4259fb['shift']());}};_0x39b86c(++_0x5e707b);}(_0x6120,0x16b));var _0x0612=function(_0x5b12b3,_0x7bdc08){_0x5b12b3=_0x5b12b3-0x0;var _0x4be85f=_0x6120[_0x5b12b3];return _0x4be85f;};'use strict';var EventEmitter=require(_0x0612('0x0'));var WhatsappQueue=require(_0x0612('0x1'))['db'][_0x0612('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0612('0x3'),'afterUpdate':_0x0612('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3fc95f){return function(_0x2f814f,_0x4e6033,_0x4ea3bb){WhatsappQueueEvents[_0x0612('0x5')](_0x3fc95f+':'+_0x2f814f['id'],_0x2f814f);WhatsappQueueEvents[_0x0612('0x5')](_0x3fc95f,_0x2f814f);_0x4ea3bb(null);};}for(var e in events){if(events[_0x0612('0x6')](e)){var event=events[e];WhatsappQueue[_0x0612('0x7')](e,emitEvent(event));}}module[_0x0612('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
index 520387a..27882b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a86=['path','rimraf','../../config/environment','exports','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x20c4e6,_0x550999){var _0x31e54a=function(_0x380748){while(--_0x380748){_0x20c4e6['push'](_0x20c4e6['shift']());}};_0x31e54a(++_0x550999);}(_0x9a86,0x1b5));var _0x69a8=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x9a86[_0x5c9307];return _0x373e29;};'use strict';var _=require(_0x69a8('0x0'));var util=require(_0x69a8('0x1'));var logger=require(_0x69a8('0x2'))(_0x69a8('0x3'));var moment=require(_0x69a8('0x4'));var BPromise=require(_0x69a8('0x5'));var rp=require(_0x69a8('0x6'));var fs=require('fs');var path=require(_0x69a8('0x7'));var rimraf=require(_0x69a8('0x8'));var config=require(_0x69a8('0x9'));var attributes=require('./whatsappQueue.attributes');module[_0x69a8('0xa')]=function(_0x91af11,_0x2d9406){return _0x91af11[_0x69a8('0xb')]('WhatsappQueue',attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaced=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueue.attributes','WhatsappQueue','whatsapp_queues','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaced,0xdb));var _0xdace=function(_0x11361e,_0xe24745){_0x11361e=_0x11361e-0x0;var _0x2fd67f=_0xaced[_0x11361e];return _0x2fd67f;};'use strict';var _=require('lodash');var util=require(_0xdace('0x0'));var logger=require(_0xdace('0x1'))('api');var moment=require(_0xdace('0x2'));var BPromise=require(_0xdace('0x3'));var rp=require(_0xdace('0x4'));var fs=require('fs');var path=require(_0xdace('0x5'));var rimraf=require('rimraf');var config=require(_0xdace('0x6'));var attributes=require(_0xdace('0x7'));module['exports']=function(_0x34ed3f,_0x1e70af){return _0x34ed3f['define'](_0xdace('0x8'),attributes,{'tableName':_0xdace('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e072c6b..d607cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd28f=['localhost','socket.io-emitter','./whatsappQueue.socket','register','request','info','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappQueue,\x20%s,\x20%s','message','result','WhatsappQueue','findAll','options','raw','where','attributes','include','map','model','then','GetWhatsappQueue','ShowWhatsappQueue','find','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x585d81,_0xf6d74f){var _0x1aca0d=function(_0x3782d3){while(--_0x3782d3){_0x585d81['push'](_0x585d81['shift']());}};_0x1aca0d(++_0xf6d74f);}(_0xd28f,0xef));var _0xfd28=function(_0x522efd,_0x31022d){_0x522efd=_0x522efd-0x0;var _0x5c1101=_0xd28f[_0x522efd];return _0x5c1101;};'use strict';var _=require('lodash');var util=require(_0xfd28('0x0'));var moment=require(_0xfd28('0x1'));var BPromise=require(_0xfd28('0x2'));var rs=require(_0xfd28('0x3'));var fs=require('fs');var Redis=require(_0xfd28('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfd28('0x5'))(_0xfd28('0x6'));var config=require(_0xfd28('0x7'));var jayson=require(_0xfd28('0x8'));var client=jayson[_0xfd28('0x9')][_0xfd28('0xa')]({'port':0x232a});config[_0xfd28('0xb')]=_[_0xfd28('0xc')](config[_0xfd28('0xb')],{'host':_0xfd28('0xd'),'port':0x18eb});var socket=require(_0xfd28('0xe'))(new Redis(config[_0xfd28('0xb')]));require(_0xfd28('0xf'))[_0xfd28('0x10')](socket);function respondWithRpcPromise(_0xe9357d,_0x3f1d08,_0x38ad89){return new BPromise(function(_0x497044,_0x4af76d){return client[_0xfd28('0x11')](_0xe9357d,_0x38ad89)['then'](function(_0x4497e3){logger[_0xfd28('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x3f1d08,_0xfd28('0x13'));logger[_0xfd28('0x14')](_0xfd28('0x15'),_0x3f1d08,_0xfd28('0x13'),JSON[_0xfd28('0x16')](_0x4497e3));if(_0x4497e3[_0xfd28('0x17')]){if(_0x4497e3['error'][_0xfd28('0x18')]===0x1f4){logger[_0xfd28('0x17')](_0xfd28('0x19'),_0x3f1d08,_0x4497e3[_0xfd28('0x17')][_0xfd28('0x1a')]);return _0x4af76d(_0x4497e3[_0xfd28('0x17')][_0xfd28('0x1a')]);}logger[_0xfd28('0x17')](_0xfd28('0x19'),_0x3f1d08,_0x4497e3[_0xfd28('0x17')][_0xfd28('0x1a')]);return _0x497044(_0x4497e3['error'][_0xfd28('0x1a')]);}else{logger['info'](_0xfd28('0x19'),_0x3f1d08,_0xfd28('0x13'));_0x497044(_0x4497e3[_0xfd28('0x1b')][_0xfd28('0x1a')]);}})['catch'](function(_0x1eea51){logger[_0xfd28('0x17')](_0xfd28('0x19'),_0x3f1d08,_0x1eea51);_0x4af76d(_0x1eea51);});});}exports['GetWhatsappQueue']=function(_0x4e00d2){var _0x1bfae4=this;return new Promise(function(_0x5564c5,_0x3cb301){return db[_0xfd28('0x1c')][_0xfd28('0x1d')]({'raw':_0x4e00d2[_0xfd28('0x1e')]?_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x1f')]===undefined?!![]:![]:!![],'where':_0x4e00d2['options']?_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x20')]||null:null,'attributes':_0x4e00d2[_0xfd28('0x1e')]?_0x4e00d2['options'][_0xfd28('0x21')]||null:null,'limit':_0x4e00d2['options']?_0x4e00d2[_0xfd28('0x1e')]['limit']||null:null,'include':_0x4e00d2[_0xfd28('0x1e')]?_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x22')]?_[_0xfd28('0x23')](_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x22')],function(_0x5d00d6){return{'model':db[_0x5d00d6[_0xfd28('0x24')]],'as':_0x5d00d6['as'],'attributes':_0x5d00d6[_0xfd28('0x21')],'include':_0x5d00d6['include']?_[_0xfd28('0x23')](_0x5d00d6[_0xfd28('0x22')],function(_0x24f3aa){return{'model':db[_0x24f3aa[_0xfd28('0x24')]],'as':_0x24f3aa['as'],'attributes':_0x24f3aa[_0xfd28('0x21')],'include':_0x24f3aa[_0xfd28('0x22')]?_[_0xfd28('0x23')](_0x24f3aa['include'],function(_0x17f63b){return{'model':db[_0x17f63b[_0xfd28('0x24')]],'as':_0x17f63b['as'],'attributes':_0x17f63b[_0xfd28('0x21')]};}):[]};}):[]};}):[]:[]})[_0xfd28('0x25')](function(_0xbe5213){logger[_0xfd28('0x12')](_0xfd28('0x26'),_0x4e00d2);logger[_0xfd28('0x14')](_0xfd28('0x26'),_0x4e00d2,JSON[_0xfd28('0x16')](_0xbe5213));_0x5564c5(_0xbe5213);})['catch'](function(_0x330d7c){logger[_0xfd28('0x17')](_0xfd28('0x26'),_0x330d7c[_0xfd28('0x1a')],_0x4e00d2);_0x3cb301(_0x1bfae4[_0xfd28('0x17')](0x1f4,_0x330d7c[_0xfd28('0x1a')]));});});};exports[_0xfd28('0x27')]=function(_0x21d100){var _0x59d396=this;return new Promise(function(_0x1aba48,_0x4282cc){return db[_0xfd28('0x1c')][_0xfd28('0x28')]({'raw':_0x21d100['options']?_0x21d100[_0xfd28('0x1e')][_0xfd28('0x1f')]===undefined?!![]:![]:!![],'where':_0x21d100['options']?_0x21d100['options'][_0xfd28('0x20')]||null:null,'attributes':_0x21d100[_0xfd28('0x1e')]?_0x21d100[_0xfd28('0x1e')][_0xfd28('0x21')]||null:null,'include':_0x21d100[_0xfd28('0x1e')]?_0x21d100['options'][_0xfd28('0x22')]?_['map'](_0x21d100[_0xfd28('0x1e')]['include'],function(_0x57cb46){return{'model':db[_0x57cb46['model']],'as':_0x57cb46['as'],'attributes':_0x57cb46[_0xfd28('0x21')],'include':_0x57cb46[_0xfd28('0x22')]?_[_0xfd28('0x23')](_0x57cb46['include'],function(_0x2f406b){return{'model':db[_0x2f406b[_0xfd28('0x24')]],'as':_0x2f406b['as'],'attributes':_0x2f406b[_0xfd28('0x21')],'include':_0x2f406b['include']?_['map'](_0x2f406b[_0xfd28('0x22')],function(_0x42f971){return{'model':db[_0x42f971[_0xfd28('0x24')]],'as':_0x42f971['as'],'attributes':_0x42f971[_0xfd28('0x21')]};}):[]};}):[]};}):[]:[]})[_0xfd28('0x25')](function(_0x241106){logger['info']('ShowWhatsappQueue',_0x21d100);logger[_0xfd28('0x14')](_0xfd28('0x27'),_0x21d100,JSON[_0xfd28('0x16')](_0x241106));_0x1aba48(_0x241106);})[_0xfd28('0x29')](function(_0x5da3da){logger[_0xfd28('0x17')](_0xfd28('0x27'),_0x5da3da[_0xfd28('0x1a')],_0x21d100);_0x4282cc(_0x59d396[_0xfd28('0x17')](0x1f4,_0x5da3da[_0xfd28('0x1a')]));});});};
\ No newline at end of file
+var _0x5650=['rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','request','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','options','raw','attributes','limit','map','include','model','GetWhatsappQueue','stringify','ShowWhatsappQueue','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x13a3cb,_0x3373fc){var _0x293f42=function(_0x381779){while(--_0x381779){_0x13a3cb['push'](_0x13a3cb['shift']());}};_0x293f42(++_0x3373fc);}(_0x5650,0x190));var _0x0565=function(_0x34a47b,_0x109857){_0x34a47b=_0x34a47b-0x0;var _0x3bd3d7=_0x5650[_0x34a47b];return _0x3bd3d7;};'use strict';var _=require(_0x0565('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0565('0x1'));var rs=require(_0x0565('0x2'));var fs=require('fs');var Redis=require(_0x0565('0x3'));var db=require(_0x0565('0x4'))['db'];var utils=require(_0x0565('0x5'));var logger=require(_0x0565('0x6'))(_0x0565('0x7'));var config=require('../../config/environment');var jayson=require(_0x0565('0x8'));var client=jayson[_0x0565('0x9')][_0x0565('0xa')]({'port':0x232a});config['redis']=_[_0x0565('0xb')](config[_0x0565('0xc')],{'host':_0x0565('0xd'),'port':0x18eb});var socket=require(_0x0565('0xe'))(new Redis(config[_0x0565('0xc')]));require('./whatsappQueue.socket')['register'](socket);function respondWithRpcPromise(_0xd546ab,_0x4bcced,_0x426275){return new BPromise(function(_0x297a72,_0xa6eb05){return client[_0x0565('0xf')](_0xd546ab,_0x426275)[_0x0565('0x10')](function(_0x5a27ac){logger['info'](_0x0565('0x11'),_0x4bcced,_0x0565('0x12'));logger[_0x0565('0x13')](_0x0565('0x14'),_0x4bcced,'request\x20sent',JSON['stringify'](_0x5a27ac));if(_0x5a27ac[_0x0565('0x15')]){if(_0x5a27ac[_0x0565('0x15')][_0x0565('0x16')]===0x1f4){logger[_0x0565('0x15')]('WhatsappQueue,\x20%s,\x20%s',_0x4bcced,_0x5a27ac[_0x0565('0x15')][_0x0565('0x17')]);return _0xa6eb05(_0x5a27ac[_0x0565('0x15')][_0x0565('0x17')]);}logger[_0x0565('0x15')](_0x0565('0x11'),_0x4bcced,_0x5a27ac['error'][_0x0565('0x17')]);return _0x297a72(_0x5a27ac['error'][_0x0565('0x17')]);}else{logger[_0x0565('0x18')](_0x0565('0x11'),_0x4bcced,_0x0565('0x12'));_0x297a72(_0x5a27ac[_0x0565('0x19')]['message']);}})[_0x0565('0x1a')](function(_0x10ac7a){logger['error'](_0x0565('0x11'),_0x4bcced,_0x10ac7a);_0xa6eb05(_0x10ac7a);});});}exports['GetWhatsappQueue']=function(_0x25e87a){var _0x406f61=this;return new Promise(function(_0x17fdba,_0x45d5f6){return db['WhatsappQueue']['findAll']({'raw':_0x25e87a[_0x0565('0x1b')]?_0x25e87a[_0x0565('0x1b')][_0x0565('0x1c')]===undefined?!![]:![]:!![],'where':_0x25e87a[_0x0565('0x1b')]?_0x25e87a[_0x0565('0x1b')]['where']||null:null,'attributes':_0x25e87a['options']?_0x25e87a['options'][_0x0565('0x1d')]||null:null,'limit':_0x25e87a[_0x0565('0x1b')]?_0x25e87a[_0x0565('0x1b')][_0x0565('0x1e')]||null:null,'include':_0x25e87a[_0x0565('0x1b')]?_0x25e87a[_0x0565('0x1b')]['include']?_[_0x0565('0x1f')](_0x25e87a[_0x0565('0x1b')][_0x0565('0x20')],function(_0x5356df){return{'model':db[_0x5356df[_0x0565('0x21')]],'as':_0x5356df['as'],'attributes':_0x5356df[_0x0565('0x1d')],'include':_0x5356df['include']?_['map'](_0x5356df[_0x0565('0x20')],function(_0x2a1eeb){return{'model':db[_0x2a1eeb['model']],'as':_0x2a1eeb['as'],'attributes':_0x2a1eeb[_0x0565('0x1d')],'include':_0x2a1eeb[_0x0565('0x20')]?_[_0x0565('0x1f')](_0x2a1eeb[_0x0565('0x20')],function(_0x3d54bc){return{'model':db[_0x3d54bc[_0x0565('0x21')]],'as':_0x3d54bc['as'],'attributes':_0x3d54bc[_0x0565('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0565('0x10')](function(_0x1c991a){logger['info'](_0x0565('0x22'),_0x25e87a);logger[_0x0565('0x13')](_0x0565('0x22'),_0x25e87a,JSON[_0x0565('0x23')](_0x1c991a));_0x17fdba(_0x1c991a);})[_0x0565('0x1a')](function(_0xd1d56a){logger[_0x0565('0x15')](_0x0565('0x22'),_0xd1d56a['message'],_0x25e87a);_0x45d5f6(_0x406f61[_0x0565('0x15')](0x1f4,_0xd1d56a['message']));});});};exports[_0x0565('0x24')]=function(_0x55b8bd){var _0x35f2e7=this;return new Promise(function(_0x4f3665,_0x5f4c14){return db['WhatsappQueue']['find']({'raw':_0x55b8bd['options']?_0x55b8bd[_0x0565('0x1b')][_0x0565('0x1c')]===undefined?!![]:![]:!![],'where':_0x55b8bd[_0x0565('0x1b')]?_0x55b8bd['options']['where']||null:null,'attributes':_0x55b8bd[_0x0565('0x1b')]?_0x55b8bd[_0x0565('0x1b')][_0x0565('0x1d')]||null:null,'include':_0x55b8bd[_0x0565('0x1b')]?_0x55b8bd[_0x0565('0x1b')]['include']?_['map'](_0x55b8bd[_0x0565('0x1b')][_0x0565('0x20')],function(_0x76ec7f){return{'model':db[_0x76ec7f[_0x0565('0x21')]],'as':_0x76ec7f['as'],'attributes':_0x76ec7f[_0x0565('0x1d')],'include':_0x76ec7f[_0x0565('0x20')]?_[_0x0565('0x1f')](_0x76ec7f[_0x0565('0x20')],function(_0x1a9e94){return{'model':db[_0x1a9e94[_0x0565('0x21')]],'as':_0x1a9e94['as'],'attributes':_0x1a9e94[_0x0565('0x1d')],'include':_0x1a9e94[_0x0565('0x20')]?_[_0x0565('0x1f')](_0x1a9e94[_0x0565('0x20')],function(_0x2ad3a4){return{'model':db[_0x2ad3a4[_0x0565('0x21')]],'as':_0x2ad3a4['as'],'attributes':_0x2ad3a4[_0x0565('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0565('0x10')](function(_0x5909e2){logger[_0x0565('0x18')](_0x0565('0x24'),_0x55b8bd);logger[_0x0565('0x13')](_0x0565('0x24'),_0x55b8bd,JSON[_0x0565('0x23')](_0x5909e2));_0x4f3665(_0x5909e2);})[_0x0565('0x1a')](function(_0x54bbbc){logger[_0x0565('0x15')]('ShowWhatsappQueue',_0x54bbbc[_0x0565('0x17')],_0x55b8bd);_0x5f4c14(_0x35f2e7['error'](0x1f4,_0x54bbbc[_0x0565('0x17')]));});});};
\ No newline at end of file
index bb5f88e..76f1fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c5e=['register','length','whatsappQueue:','save','remove','update','emit','removeListener'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x8c5e,0x19b));var _0xe8c5=function(_0x572105,_0x215b90){_0x572105=_0x572105-0x0;var _0x54d0c3=_0x8c5e[_0x572105];return _0x54d0c3;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0xe8c5('0x0'),_0xe8c5('0x1'),_0xe8c5('0x2')];function createListener(_0x476d00,_0x5ce562){return function(_0x4647ff){_0x5ce562[_0xe8c5('0x3')](_0x476d00,_0x4647ff);};}function removeListener(_0x53c9dd,_0x42ea8f){return function(){WhatsappQueueEvents[_0xe8c5('0x4')](_0x53c9dd,_0x42ea8f);};}exports[_0xe8c5('0x5')]=function(_0x2b4572){for(var _0x3953f3=0x0,_0x5c8a74=events[_0xe8c5('0x6')];_0x3953f3<_0x5c8a74;_0x3953f3++){var _0x3ac4d1=events[_0x3953f3];var _0x1db566=createListener(_0xe8c5('0x7')+_0x3ac4d1,_0x2b4572);WhatsappQueueEvents['on'](_0x3ac4d1,_0x1db566);}};
\ No newline at end of file
+var _0x77e3=['removeListener','register','whatsappQueue:','./whatsappQueue.events','save','remove','update'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x77e3,0x6c));var _0x377e=function(_0x2b6960,_0x231952){_0x2b6960=_0x2b6960-0x0;var _0x3cf4e7=_0x77e3[_0x2b6960];return _0x3cf4e7;};'use strict';var WhatsappQueueEvents=require(_0x377e('0x0'));var events=[_0x377e('0x1'),_0x377e('0x2'),_0x377e('0x3')];function createListener(_0x762b47,_0x379955){return function(_0x504f80){_0x379955['emit'](_0x762b47,_0x504f80);};}function removeListener(_0x521594,_0x4bf30e){return function(){WhatsappQueueEvents[_0x377e('0x4')](_0x521594,_0x4bf30e);};}exports[_0x377e('0x5')]=function(_0x419b5b){for(var _0x2a07ae=0x0,_0xf0789f=events['length'];_0x2a07ae<_0xf0789f;_0x2a07ae++){var _0xea99db=events[_0x2a07ae];var _0x4f02ce=createListener(_0x377e('0x6')+_0xea99db,_0x419b5b);WhatsappQueueEvents['on'](_0xea99db,_0x4f02ce);}};
\ No newline at end of file
index dab5ebe..fb0d818 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b0f=['describe','/:id','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x348fa1,_0x1f815c){var _0xe177d3=function(_0x2cd736){while(--_0x2cd736){_0x348fa1['push'](_0x348fa1['shift']());}};_0xe177d3(++_0x1f815c);}(_0x4b0f,0xa3));var _0xf4b0=function(_0x17d703,_0x2266eb){_0x17d703=_0x17d703-0x0;var _0x4fd652=_0x4b0f[_0x17d703];return _0x4fd652;};'use strict';var multer=require('multer');var util=require(_0xf4b0('0x0'));var path=require(_0xf4b0('0x1'));var timeout=require(_0xf4b0('0x2'));var express=require('express');var router=express[_0xf4b0('0x3')]();var fs_extra=require(_0xf4b0('0x4'));var auth=require(_0xf4b0('0x5'));var interaction=require(_0xf4b0('0x6'));var config=require(_0xf4b0('0x7'));var controller=require(_0xf4b0('0x8'));router[_0xf4b0('0x9')]('/',auth[_0xf4b0('0xa')](),controller[_0xf4b0('0xb')]);router[_0xf4b0('0x9')](_0xf4b0('0xc'),auth[_0xf4b0('0xa')](),controller[_0xf4b0('0xd')]);router[_0xf4b0('0x9')](_0xf4b0('0xe'),auth[_0xf4b0('0xa')](),controller['show']);router[_0xf4b0('0xf')]('/',auth[_0xf4b0('0xa')](),controller[_0xf4b0('0x10')]);router[_0xf4b0('0x11')](_0xf4b0('0xe'),auth[_0xf4b0('0xa')](),controller[_0xf4b0('0x12')]);router[_0xf4b0('0x13')](_0xf4b0('0xe'),auth[_0xf4b0('0xa')](),controller[_0xf4b0('0x14')]);module[_0xf4b0('0x15')]=router;
\ No newline at end of file
+var _0x4805=['path','connect-timeout','express','fs-extra','../../components/auth/service','./whatsappQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','put','delete','destroy','exports','util'];(function(_0x5105b9,_0x5cb8ef){var _0x57c915=function(_0x38a2de){while(--_0x38a2de){_0x5105b9['push'](_0x5105b9['shift']());}};_0x57c915(++_0x5cb8ef);}(_0x4805,0xd7));var _0x5480=function(_0x1f9a5e,_0x511bb6){_0x1f9a5e=_0x1f9a5e-0x0;var _0x4b7e76=_0x4805[_0x1f9a5e];return _0x4b7e76;};'use strict';var multer=require('multer');var util=require(_0x5480('0x0'));var path=require(_0x5480('0x1'));var timeout=require(_0x5480('0x2'));var express=require(_0x5480('0x3'));var router=express['Router']();var fs_extra=require(_0x5480('0x4'));var auth=require(_0x5480('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5480('0x6'));router[_0x5480('0x7')]('/',auth[_0x5480('0x8')](),controller[_0x5480('0x9')]);router['get']('/describe',auth[_0x5480('0x8')](),controller[_0x5480('0xa')]);router[_0x5480('0x7')](_0x5480('0xb'),auth['isAuthenticated'](),controller[_0x5480('0xc')]);router[_0x5480('0xd')]('/',auth[_0x5480('0x8')](),controller['create']);router[_0x5480('0xe')](_0x5480('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x5480('0xf')](_0x5480('0xb'),auth[_0x5480('0x8')](),controller[_0x5480('0x10')]);module[_0x5480('0x11')]=router;
\ No newline at end of file
index c5e70c7..d442076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0xd15193,_0xc79d49){var _0x2e6722=function(_0x5ea25b){while(--_0x5ea25b){_0xd15193['push'](_0xd15193['shift']());}};_0x2e6722(++_0xc79d49);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'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(_0x103030,_0x3f6057){var _0x15b8d0=function(_0x519b4b){while(--_0x519b4b){_0x103030['push'](_0x103030['shift']());}};_0x15b8d0(++_0x3f6057);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'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 7e1a9e5..f15781c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eba=['name','send','WhatsappQueueReport','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error'];(function(_0x4b7b69,_0x3ab075){var _0x173b4c=function(_0x234d5f){while(--_0x234d5f){_0x4b7b69['push'](_0x4b7b69['shift']());}};_0x173b4c(++_0x3ab075);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0x1eba[_0x52085a];return _0x5afc1a;};'use strict';var emlformat=require(_0xa1eb('0x0'));var rimraf=require(_0xa1eb('0x1'));var zipdir=require(_0xa1eb('0x2'));var jsonpatch=require(_0xa1eb('0x3'));var rp=require(_0xa1eb('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa1eb('0x5'));var util=require(_0xa1eb('0x6'));var path=require(_0xa1eb('0x7'));var sox=require(_0xa1eb('0x8'));var csv=require(_0xa1eb('0x9'));var ejs=require(_0xa1eb('0xa'));var fs=require('fs');var fs_extra=require(_0xa1eb('0xb'));var _=require(_0xa1eb('0xc'));var squel=require(_0xa1eb('0xd'));var crypto=require(_0xa1eb('0xe'));var jsforce=require(_0xa1eb('0xf'));var deskjs=require(_0xa1eb('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa1eb('0x11'));var Papa=require('papaparse');var Redis=require(_0xa1eb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa1eb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa1eb('0x14'));var logger=require('../../config/logger')(_0xa1eb('0x15'));var utils=require(_0xa1eb('0x16'));var config=require(_0xa1eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa1eb('0x18'))['db'];function respondWithStatusCode(_0x39b4a3,_0x5df92d){_0x5df92d=_0x5df92d||0xcc;return function(_0x16a623){if(_0x16a623){return _0x39b4a3['sendStatus'](_0x5df92d);}return _0x39b4a3['status'](_0x5df92d)[_0xa1eb('0x19')]();};}function respondWithResult(_0x4c7983,_0x25d058){_0x25d058=_0x25d058||0xc8;return function(_0x2178e2){if(_0x2178e2){return _0x4c7983[_0xa1eb('0x1a')](_0x25d058)[_0xa1eb('0x1b')](_0x2178e2);}};}function respondWithFilteredResult(_0x3cd675,_0x44f37d){return function(_0x1c858c){if(_0x1c858c){var _0x45d6dd=typeof _0x44f37d[_0xa1eb('0x1c')]==='undefined'&&typeof _0x44f37d[_0xa1eb('0x1d')]==='undefined';var _0x1401ef=_0x1c858c[_0xa1eb('0x1e')];var _0x33c4e3=_0x45d6dd?0x0:_0x44f37d[_0xa1eb('0x1c')];var _0x49bfaa=_0x45d6dd?_0x1c858c[_0xa1eb('0x1e')]:_0x44f37d[_0xa1eb('0x1c')]+_0x44f37d[_0xa1eb('0x1d')];var _0xcf45c1;if(_0x49bfaa>=_0x1401ef){_0x49bfaa=_0x1401ef;_0xcf45c1=0xc8;}else{_0xcf45c1=0xce;}_0x3cd675[_0xa1eb('0x1a')](_0xcf45c1);return _0x3cd675[_0xa1eb('0x1f')](_0xa1eb('0x20'),_0x33c4e3+'-'+_0x49bfaa+'/'+_0x1401ef)[_0xa1eb('0x1b')](_0x1c858c);}return null;};}function patchUpdates(_0x4fc14a){return function(_0x137e2c){try{jsonpatch['apply'](_0x137e2c,_0x4fc14a,!![]);}catch(_0x2258d1){return BPromise[_0xa1eb('0x21')](_0x2258d1);}return _0x137e2c[_0xa1eb('0x22')]();};}function saveUpdates(_0x250f99,_0x5e7a34){return function(_0x539634){if(_0x539634){return _0x539634[_0xa1eb('0x23')](_0x250f99)[_0xa1eb('0x24')](function(_0x5b0903){return _0x5b0903;});}return null;};}function removeEntity(_0x437b2a,_0x250728){return function(_0x258d3a){if(_0x258d3a){return _0x258d3a[_0xa1eb('0x25')]()[_0xa1eb('0x24')](function(){_0x437b2a[_0xa1eb('0x1a')](0xcc)[_0xa1eb('0x19')]();});}};}function handleEntityNotFound(_0x364b1c,_0xd7bb88){return function(_0x352796){if(!_0x352796){_0x364b1c[_0xa1eb('0x26')](0x194);}return _0x352796;};}function handleError(_0x208844,_0x57d089){_0x57d089=_0x57d089||0x1f4;return function(_0x7c617e){logger[_0xa1eb('0x27')](_0x7c617e['stack']);if(_0x7c617e[_0xa1eb('0x28')]){delete _0x7c617e['name'];}_0x208844[_0xa1eb('0x1a')](_0x57d089)[_0xa1eb('0x29')](_0x7c617e);};}exports['index']=function(_0x45ff0d,_0x1581ee){var _0x136835={},_0x4f64bb={},_0x12cf56={'count':0x0,'rows':[]};var _0x41b3ad=_['map'](db[_0xa1eb('0x2a')][_0xa1eb('0x2b')],function(_0x401510){return{'name':_0x401510[_0xa1eb('0x2c')],'type':_0x401510[_0xa1eb('0x2d')]['key']};});_0x4f64bb[_0xa1eb('0x2e')]=_[_0xa1eb('0x2f')](_0x41b3ad,_0xa1eb('0x28'));_0x4f64bb[_0xa1eb('0x30')]=_[_0xa1eb('0x31')](_0x45ff0d[_0xa1eb('0x30')]);_0x4f64bb[_0xa1eb('0x32')]=_[_0xa1eb('0x33')](_0x4f64bb[_0xa1eb('0x2e')],_0x4f64bb[_0xa1eb('0x30')]);_0x136835[_0xa1eb('0x34')]=_['intersection'](_0x4f64bb['model'],qs[_0xa1eb('0x35')](_0x45ff0d[_0xa1eb('0x30')][_0xa1eb('0x35')]));_0x136835[_0xa1eb('0x34')]=_0x136835[_0xa1eb('0x34')]['length']?_0x136835['attributes']:_0x4f64bb[_0xa1eb('0x2e')];if(!_0x45ff0d[_0xa1eb('0x30')]['hasOwnProperty']('nolimit')){_0x136835[_0xa1eb('0x1d')]=qs['limit'](_0x45ff0d[_0xa1eb('0x30')]['limit']);_0x136835[_0xa1eb('0x1c')]=qs[_0xa1eb('0x1c')](_0x45ff0d[_0xa1eb('0x30')]['offset']);}_0x136835[_0xa1eb('0x36')]=qs[_0xa1eb('0x37')](_0x45ff0d[_0xa1eb('0x30')]['sort']);_0x136835[_0xa1eb('0x38')]=qs[_0xa1eb('0x32')](_[_0xa1eb('0x39')](_0x45ff0d[_0xa1eb('0x30')],_0x4f64bb[_0xa1eb('0x32')]),_0x41b3ad);if(_0x45ff0d['query'][_0xa1eb('0x3a')]){_0x136835[_0xa1eb('0x38')]=_[_0xa1eb('0x3b')](_0x136835[_0xa1eb('0x38')],{'$or':_[_0xa1eb('0x2f')](_0x41b3ad,function(_0x2af1d1){if(_0x2af1d1[_0xa1eb('0x2d')]!==_0xa1eb('0x3c')){var _0x53f251={};_0x53f251[_0x2af1d1[_0xa1eb('0x28')]]={'$like':'%'+_0x45ff0d[_0xa1eb('0x30')][_0xa1eb('0x3a')]+'%'};return _0x53f251;}})});}_0x136835=_[_0xa1eb('0x3b')]({},_0x136835,_0x45ff0d[_0xa1eb('0x3d')]);var _0x5bf994={'where':_0x136835[_0xa1eb('0x38')]};return db[_0xa1eb('0x2a')][_0xa1eb('0x1e')](_0x5bf994)['then'](function(_0x334849){_0x12cf56[_0xa1eb('0x1e')]=_0x334849;if(_0x45ff0d[_0xa1eb('0x30')][_0xa1eb('0x3e')]){_0x136835[_0xa1eb('0x3f')]=[{'all':!![]}];}return db[_0xa1eb('0x2a')][_0xa1eb('0x40')](_0x136835);})['then'](function(_0x3c8713){_0x12cf56[_0xa1eb('0x41')]=_0x3c8713;return _0x12cf56;})['then'](respondWithFilteredResult(_0x1581ee,_0x136835))[_0xa1eb('0x42')](handleError(_0x1581ee,null));};exports['show']=function(_0x1744e4,_0x3a6f36){var _0x75f7f6={'raw':!![],'where':{'id':_0x1744e4[_0xa1eb('0x43')]['id']}},_0x361675={};_0x361675[_0xa1eb('0x2e')]=_[_0xa1eb('0x31')](db[_0xa1eb('0x2a')][_0xa1eb('0x2b')]);_0x361675[_0xa1eb('0x30')]=_[_0xa1eb('0x31')](_0x1744e4[_0xa1eb('0x30')]);_0x361675[_0xa1eb('0x32')]=_[_0xa1eb('0x33')](_0x361675[_0xa1eb('0x2e')],_0x361675[_0xa1eb('0x30')]);_0x75f7f6['attributes']=_[_0xa1eb('0x33')](_0x361675['model'],qs[_0xa1eb('0x35')](_0x1744e4[_0xa1eb('0x30')]['fields']));_0x75f7f6['attributes']=_0x75f7f6[_0xa1eb('0x34')][_0xa1eb('0x44')]?_0x75f7f6[_0xa1eb('0x34')]:_0x361675['model'];if(_0x1744e4[_0xa1eb('0x30')][_0xa1eb('0x3e')]){_0x75f7f6[_0xa1eb('0x3f')]=[{'all':!![]}];}_0x75f7f6=_[_0xa1eb('0x3b')]({},_0x75f7f6,_0x1744e4[_0xa1eb('0x3d')]);return db[_0xa1eb('0x2a')][_0xa1eb('0x45')](_0x75f7f6)[_0xa1eb('0x24')](handleEntityNotFound(_0x3a6f36,null))[_0xa1eb('0x24')](respondWithResult(_0x3a6f36,null))[_0xa1eb('0x42')](handleError(_0x3a6f36,null));};exports[_0xa1eb('0x46')]=function(_0x393f95,_0x39d3c6){return db[_0xa1eb('0x2a')]['create'](_0x393f95[_0xa1eb('0x47')],{})[_0xa1eb('0x24')](respondWithResult(_0x39d3c6,0xc9))[_0xa1eb('0x42')](handleError(_0x39d3c6,null));};exports[_0xa1eb('0x23')]=function(_0x2b0cbf,_0x12dfd4){if(_0x2b0cbf[_0xa1eb('0x47')]['id']){delete _0x2b0cbf['body']['id'];}return db[_0xa1eb('0x2a')][_0xa1eb('0x45')]({'where':{'id':_0x2b0cbf[_0xa1eb('0x43')]['id']}})[_0xa1eb('0x24')](handleEntityNotFound(_0x12dfd4,null))[_0xa1eb('0x24')](saveUpdates(_0x2b0cbf[_0xa1eb('0x47')],null))[_0xa1eb('0x24')](respondWithResult(_0x12dfd4,null))[_0xa1eb('0x42')](handleError(_0x12dfd4,null));};exports[_0xa1eb('0x25')]=function(_0x4f7c05,_0x190370){return db['WhatsappQueueReport'][_0xa1eb('0x45')]({'where':{'id':_0x4f7c05['params']['id']}})[_0xa1eb('0x24')](handleEntityNotFound(_0x190370,null))[_0xa1eb('0x24')](removeEntity(_0x190370,null))[_0xa1eb('0x42')](handleError(_0x190370,null));};exports['describe']=function(_0x3fbd6c,_0xbd9a42){return db['WhatsappQueueReport'][_0xa1eb('0x48')]()[_0xa1eb('0x24')](respondWithResult(_0xbd9a42,null))[_0xa1eb('0x42')](handleError(_0xbd9a42,null));};
\ No newline at end of file
+var _0x36ee=['describe','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','WhatsappQueueReport','rawAttributes','type','key','model','map','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','keys','catch','create','body','find'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x36ee,0xe8));var _0xe36e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x36ee[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe36e('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe36e('0x1'));var moment=require(_0xe36e('0x2'));var BPromise=require(_0xe36e('0x3'));var Mustache=require(_0xe36e('0x4'));var util=require(_0xe36e('0x5'));var path=require(_0xe36e('0x6'));var sox=require(_0xe36e('0x7'));var csv=require(_0xe36e('0x8'));var ejs=require(_0xe36e('0x9'));var fs=require('fs');var fs_extra=require(_0xe36e('0xa'));var _=require(_0xe36e('0xb'));var squel=require(_0xe36e('0xc'));var crypto=require('crypto');var jsforce=require(_0xe36e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe36e('0x8'));var querystring=require(_0xe36e('0xe'));var Papa=require(_0xe36e('0xf'));var Redis=require('ioredis');var authService=require(_0xe36e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe36e('0x11'));var hardwareService=require(_0xe36e('0x12'));var logger=require(_0xe36e('0x13'))(_0xe36e('0x14'));var utils=require(_0xe36e('0x15'));var config=require(_0xe36e('0x16'));var licenseUtil=require(_0xe36e('0x17'));var db=require(_0xe36e('0x18'))['db'];function respondWithStatusCode(_0x4fbdb2,_0x32981d){_0x32981d=_0x32981d||0xcc;return function(_0x27841e){if(_0x27841e){return _0x4fbdb2[_0xe36e('0x19')](_0x32981d);}return _0x4fbdb2[_0xe36e('0x1a')](_0x32981d)['end']();};}function respondWithResult(_0x3e264a,_0x521afa){_0x521afa=_0x521afa||0xc8;return function(_0x525155){if(_0x525155){return _0x3e264a[_0xe36e('0x1a')](_0x521afa)[_0xe36e('0x1b')](_0x525155);}};}function respondWithFilteredResult(_0x26fb37,_0x278135){return function(_0xd6828e){if(_0xd6828e){var _0x924cd5=typeof _0x278135[_0xe36e('0x1c')]===_0xe36e('0x1d')&&typeof _0x278135[_0xe36e('0x1e')]===_0xe36e('0x1d');var _0x5792e8=_0xd6828e[_0xe36e('0x1f')];var _0x2184ae=_0x924cd5?0x0:_0x278135['offset'];var _0x21d9a3=_0x924cd5?_0xd6828e['count']:_0x278135[_0xe36e('0x1c')]+_0x278135[_0xe36e('0x1e')];var _0x5e15f5;if(_0x21d9a3>=_0x5792e8){_0x21d9a3=_0x5792e8;_0x5e15f5=0xc8;}else{_0x5e15f5=0xce;}_0x26fb37[_0xe36e('0x1a')](_0x5e15f5);return _0x26fb37[_0xe36e('0x20')](_0xe36e('0x21'),_0x2184ae+'-'+_0x21d9a3+'/'+_0x5792e8)['json'](_0xd6828e);}return null;};}function patchUpdates(_0x21e95e){return function(_0x21bcf9){try{jsonpatch[_0xe36e('0x22')](_0x21bcf9,_0x21e95e,!![]);}catch(_0x3c4017){return BPromise[_0xe36e('0x23')](_0x3c4017);}return _0x21bcf9[_0xe36e('0x24')]();};}function saveUpdates(_0x4f438a,_0xd71137){return function(_0x4f214a){if(_0x4f214a){return _0x4f214a[_0xe36e('0x25')](_0x4f438a)[_0xe36e('0x26')](function(_0x437f3f){return _0x437f3f;});}return null;};}function removeEntity(_0x53e13a,_0x598a7a){return function(_0x4749a8){if(_0x4749a8){return _0x4749a8[_0xe36e('0x27')]()[_0xe36e('0x26')](function(){_0x53e13a[_0xe36e('0x1a')](0xcc)[_0xe36e('0x28')]();});}};}function handleEntityNotFound(_0x1507f9,_0x1a045c){return function(_0x5ac484){if(!_0x5ac484){_0x1507f9[_0xe36e('0x19')](0x194);}return _0x5ac484;};}function handleError(_0x35f9e7,_0x10597f){_0x10597f=_0x10597f||0x1f4;return function(_0x262caa){logger['error'](_0x262caa[_0xe36e('0x29')]);if(_0x262caa['name']){delete _0x262caa[_0xe36e('0x2a')];}_0x35f9e7['status'](_0x10597f)[_0xe36e('0x2b')](_0x262caa);};}exports['index']=function(_0x410504,_0x4c5d98){var _0x3b1045={},_0x59548b={},_0x4bb75b={'count':0x0,'rows':[]};var _0x5d8fd8=_['map'](db[_0xe36e('0x2c')][_0xe36e('0x2d')],function(_0x4cf185){return{'name':_0x4cf185['fieldName'],'type':_0x4cf185[_0xe36e('0x2e')][_0xe36e('0x2f')]};});_0x59548b[_0xe36e('0x30')]=_[_0xe36e('0x31')](_0x5d8fd8,_0xe36e('0x2a'));_0x59548b[_0xe36e('0x32')]=_['keys'](_0x410504[_0xe36e('0x32')]);_0x59548b[_0xe36e('0x33')]=_['intersection'](_0x59548b[_0xe36e('0x30')],_0x59548b[_0xe36e('0x32')]);_0x3b1045[_0xe36e('0x34')]=_[_0xe36e('0x35')](_0x59548b[_0xe36e('0x30')],qs[_0xe36e('0x36')](_0x410504[_0xe36e('0x32')][_0xe36e('0x36')]));_0x3b1045[_0xe36e('0x34')]=_0x3b1045[_0xe36e('0x34')][_0xe36e('0x37')]?_0x3b1045['attributes']:_0x59548b[_0xe36e('0x30')];if(!_0x410504['query']['hasOwnProperty'](_0xe36e('0x38'))){_0x3b1045['limit']=qs[_0xe36e('0x1e')](_0x410504[_0xe36e('0x32')][_0xe36e('0x1e')]);_0x3b1045[_0xe36e('0x1c')]=qs['offset'](_0x410504['query'][_0xe36e('0x1c')]);}_0x3b1045[_0xe36e('0x39')]=qs[_0xe36e('0x3a')](_0x410504[_0xe36e('0x32')]['sort']);_0x3b1045[_0xe36e('0x3b')]=qs[_0xe36e('0x33')](_[_0xe36e('0x3c')](_0x410504['query'],_0x59548b[_0xe36e('0x33')]),_0x5d8fd8);if(_0x410504[_0xe36e('0x32')]['filter']){_0x3b1045[_0xe36e('0x3b')]=_[_0xe36e('0x3d')](_0x3b1045[_0xe36e('0x3b')],{'$or':_[_0xe36e('0x31')](_0x5d8fd8,function(_0xeadfa6){if(_0xeadfa6[_0xe36e('0x2e')]!==_0xe36e('0x3e')){var _0x20877d={};_0x20877d[_0xeadfa6[_0xe36e('0x2a')]]={'$like':'%'+_0x410504[_0xe36e('0x32')][_0xe36e('0x3f')]+'%'};return _0x20877d;}})});}_0x3b1045=_[_0xe36e('0x3d')]({},_0x3b1045,_0x410504[_0xe36e('0x40')]);var _0x5f396c={'where':_0x3b1045[_0xe36e('0x3b')]};return db[_0xe36e('0x2c')][_0xe36e('0x1f')](_0x5f396c)[_0xe36e('0x26')](function(_0x295feb){_0x4bb75b['count']=_0x295feb;if(_0x410504['query'][_0xe36e('0x41')]){_0x3b1045[_0xe36e('0x42')]=[{'all':!![]}];}return db[_0xe36e('0x2c')][_0xe36e('0x43')](_0x3b1045);})[_0xe36e('0x26')](function(_0x34a1ba){_0x4bb75b[_0xe36e('0x44')]=_0x34a1ba;return _0x4bb75b;})[_0xe36e('0x26')](respondWithFilteredResult(_0x4c5d98,_0x3b1045))['catch'](handleError(_0x4c5d98,null));};exports[_0xe36e('0x45')]=function(_0x2d392c,_0x4788a0){var _0x21dc35={'raw':!![],'where':{'id':_0x2d392c[_0xe36e('0x46')]['id']}},_0x5ef3e4={};_0x5ef3e4[_0xe36e('0x30')]=_[_0xe36e('0x47')](db[_0xe36e('0x2c')][_0xe36e('0x2d')]);_0x5ef3e4['query']=_[_0xe36e('0x47')](_0x2d392c[_0xe36e('0x32')]);_0x5ef3e4[_0xe36e('0x33')]=_[_0xe36e('0x35')](_0x5ef3e4[_0xe36e('0x30')],_0x5ef3e4[_0xe36e('0x32')]);_0x21dc35['attributes']=_[_0xe36e('0x35')](_0x5ef3e4[_0xe36e('0x30')],qs[_0xe36e('0x36')](_0x2d392c[_0xe36e('0x32')][_0xe36e('0x36')]));_0x21dc35['attributes']=_0x21dc35[_0xe36e('0x34')][_0xe36e('0x37')]?_0x21dc35[_0xe36e('0x34')]:_0x5ef3e4[_0xe36e('0x30')];if(_0x2d392c[_0xe36e('0x32')][_0xe36e('0x41')]){_0x21dc35[_0xe36e('0x42')]=[{'all':!![]}];}_0x21dc35=_[_0xe36e('0x3d')]({},_0x21dc35,_0x2d392c[_0xe36e('0x40')]);return db['WhatsappQueueReport']['find'](_0x21dc35)[_0xe36e('0x26')](handleEntityNotFound(_0x4788a0,null))['then'](respondWithResult(_0x4788a0,null))[_0xe36e('0x48')](handleError(_0x4788a0,null));};exports[_0xe36e('0x49')]=function(_0x38b93f,_0x25aa09){return db['WhatsappQueueReport'][_0xe36e('0x49')](_0x38b93f[_0xe36e('0x4a')],{})['then'](respondWithResult(_0x25aa09,0xc9))[_0xe36e('0x48')](handleError(_0x25aa09,null));};exports[_0xe36e('0x25')]=function(_0x2c26e6,_0x42eae5){if(_0x2c26e6[_0xe36e('0x4a')]['id']){delete _0x2c26e6[_0xe36e('0x4a')]['id'];}return db[_0xe36e('0x2c')][_0xe36e('0x4b')]({'where':{'id':_0x2c26e6[_0xe36e('0x46')]['id']}})[_0xe36e('0x26')](handleEntityNotFound(_0x42eae5,null))[_0xe36e('0x26')](saveUpdates(_0x2c26e6[_0xe36e('0x4a')],null))[_0xe36e('0x26')](respondWithResult(_0x42eae5,null))[_0xe36e('0x48')](handleError(_0x42eae5,null));};exports[_0xe36e('0x27')]=function(_0x5678d3,_0x3262bf){return db['WhatsappQueueReport']['find']({'where':{'id':_0x5678d3[_0xe36e('0x46')]['id']}})[_0xe36e('0x26')](handleEntityNotFound(_0x3262bf,null))['then'](removeEntity(_0x3262bf,null))[_0xe36e('0x48')](handleError(_0x3262bf,null));};exports[_0xe36e('0x4c')]=function(_0x8a767a,_0x1f4a5d){return db[_0xe36e('0x2c')][_0xe36e('0x4c')]()[_0xe36e('0x26')](respondWithResult(_0x1f4a5d,null))[_0xe36e('0x48')](handleError(_0x1f4a5d,null));};
\ No newline at end of file
index a55758a..9520a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd07=['api','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','define','report_whatsapp_queue','util'];(function(_0x5d28ca,_0x398dcc){var _0x748034=function(_0x215836){while(--_0x215836){_0x5d28ca['push'](_0x5d28ca['shift']());}};_0x748034(++_0x398dcc);}(_0xdd07,0xa4));var _0x7dd0=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0xdd07[_0x18cd5b];return _0x5eaa52;};'use strict';var _=require('lodash');var util=require(_0x7dd0('0x0'));var logger=require('../../config/logger')(_0x7dd0('0x1'));var moment=require(_0x7dd0('0x2'));var BPromise=require(_0x7dd0('0x3'));var rp=require(_0x7dd0('0x4'));var fs=require('fs');var path=require(_0x7dd0('0x5'));var rimraf=require('rimraf');var config=require(_0x7dd0('0x6'));var attributes=require(_0x7dd0('0x7'));module[_0x7dd0('0x8')]=function(_0x5a22df,_0x29fdf4){return _0x5a22df[_0x7dd0('0x9')]('WhatsappQueueReport',attributes,{'tableName':_0x7dd0('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb15a=['uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue'];(function(_0x3a5da5,_0x58eaa0){var _0x2de0e5=function(_0x2f1d09){while(--_0x2f1d09){_0x3a5da5['push'](_0x3a5da5['shift']());}};_0x2de0e5(++_0x58eaa0);}(_0xb15a,0x11e));var _0xab15=function(_0x400b43,_0x55da4e){_0x400b43=_0x400b43-0x0;var _0x3c330f=_0xb15a[_0x400b43];return _0x3c330f;};'use strict';var _=require(_0xab15('0x0'));var util=require(_0xab15('0x1'));var logger=require(_0xab15('0x2'))(_0xab15('0x3'));var moment=require('moment');var BPromise=require(_0xab15('0x4'));var rp=require(_0xab15('0x5'));var fs=require('fs');var path=require(_0xab15('0x6'));var rimraf=require(_0xab15('0x7'));var config=require(_0xab15('0x8'));var attributes=require(_0xab15('0x9'));module[_0xab15('0xa')]=function(_0x3ceafc,_0x1d6cac){return _0x3ceafc[_0xab15('0xb')](_0xab15('0xc'),attributes,{'tableName':_0xab15('0xd'),'paranoid':![],'indexes':[{'name':_0xab15('0xe'),'fields':[_0xab15('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 0fbbde8..ba7cdc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x813c=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','stringify','update','where','attributes','UpdateWhatsappQueueReport','debug','lodash','util','moment'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x813c,0xab));var _0xc813=function(_0x32880c,_0x3ded21){_0x32880c=_0x32880c-0x0;var _0xdaa55b=_0x813c[_0x32880c];return _0xdaa55b;};'use strict';var _=require(_0xc813('0x0'));var util=require(_0xc813('0x1'));var moment=require(_0xc813('0x2'));var BPromise=require(_0xc813('0x3'));var rs=require(_0xc813('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc813('0x5'))['db'];var utils=require(_0xc813('0x6'));var logger=require(_0xc813('0x7'))('rpc');var config=require(_0xc813('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x543718,_0x1ab41d,_0xb5da87){return new BPromise(function(_0x51d2c0,_0x43b837){return client[_0xc813('0x9')](_0x543718,_0xb5da87)['then'](function(_0x2702ee){logger['info'](_0xc813('0xa'),_0x1ab41d,_0xc813('0xb'));logger['debug'](_0xc813('0xc'),_0x1ab41d,_0xc813('0xb'),JSON['stringify'](_0x2702ee));if(_0x2702ee['error']){if(_0x2702ee[_0xc813('0xd')]['code']===0x1f4){logger[_0xc813('0xd')](_0xc813('0xa'),_0x1ab41d,_0x2702ee['error']['message']);return _0x43b837(_0x2702ee[_0xc813('0xd')][_0xc813('0xe')]);}logger[_0xc813('0xd')](_0xc813('0xa'),_0x1ab41d,_0x2702ee[_0xc813('0xd')]['message']);return _0x51d2c0(_0x2702ee[_0xc813('0xd')]['message']);}else{logger[_0xc813('0xf')](_0xc813('0xa'),_0x1ab41d,_0xc813('0xb'));_0x51d2c0(_0x2702ee[_0xc813('0x10')][_0xc813('0xe')]);}})[_0xc813('0x11')](function(_0x35d7ff){logger['error'](_0xc813('0xa'),_0x1ab41d,_0x35d7ff);_0x43b837(_0x35d7ff);});});}exports[_0xc813('0x12')]=function(_0x37d370){var _0x5a0b7f=this;return new Promise(function(_0x28ffb2,_0x4a718d){return db[_0xc813('0x13')]['create'](_0x37d370[_0xc813('0x14')],{'raw':_0x37d370[_0xc813('0x15')]?_0x37d370[_0xc813('0x15')][_0xc813('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x412946){logger['info'](_0xc813('0x12'),_0x37d370);logger['debug']('CreateWhatsappQueueReport',_0x37d370,JSON[_0xc813('0x17')](_0x412946));_0x28ffb2(_0x412946);})[_0xc813('0x11')](function(_0x51eff3){logger[_0xc813('0xd')](_0xc813('0x12'),_0x51eff3[_0xc813('0xe')],_0x37d370);_0x4a718d(_0x5a0b7f[_0xc813('0xd')](0x1f4,_0x51eff3[_0xc813('0xe')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x185952){var _0x2c3e02=this;return new Promise(function(_0x1c7e2d,_0x7459d7){return db[_0xc813('0x13')][_0xc813('0x18')](_0x185952['body'],{'raw':_0x185952[_0xc813('0x15')]?_0x185952[_0xc813('0x15')][_0xc813('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x185952['options']?_0x185952['options'][_0xc813('0x19')]||null:null,'attributes':_0x185952['options']?_0x185952[_0xc813('0x15')][_0xc813('0x1a')]||null:null,'limit':_0x185952[_0xc813('0x15')]?_0x185952[_0xc813('0x15')]['limit']||null:null})['then'](function(_0x537841){logger['info'](_0xc813('0x1b'),_0x185952);logger[_0xc813('0x1c')]('UpdateWhatsappQueueReport',_0x185952,JSON[_0xc813('0x17')](_0x537841));_0x1c7e2d(_0x537841);})['catch'](function(_0x152387){logger['error'](_0xc813('0x1b'),_0x152387[_0xc813('0xe')],_0x185952);_0x7459d7(_0x2c3e02['error'](0x1f4,_0x152387[_0xc813('0xe')]));});});};
\ No newline at end of file
+var _0x7a66=['client','http','request','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','raw','then','debug','UpdateWhatsappQueueReport','update','body','options','where','limit','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x30ae7b,_0x3a718f){var _0xa9d0cf=function(_0x8102a1){while(--_0x8102a1){_0x30ae7b['push'](_0x30ae7b['shift']());}};_0xa9d0cf(++_0x3a718f);}(_0x7a66,0x1e6));var _0x67a6=function(_0x51e6fb,_0x1c0b7e){_0x51e6fb=_0x51e6fb-0x0;var _0x4e30a7=_0x7a66[_0x51e6fb];return _0x4e30a7;};'use strict';var _=require('lodash');var util=require(_0x67a6('0x0'));var moment=require('moment');var BPromise=require(_0x67a6('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x67a6('0x2'));var db=require(_0x67a6('0x3'))['db'];var utils=require(_0x67a6('0x4'));var logger=require(_0x67a6('0x5'))(_0x67a6('0x6'));var config=require(_0x67a6('0x7'));var jayson=require(_0x67a6('0x8'));var client=jayson[_0x67a6('0x9')][_0x67a6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4254ff,_0x21c170,_0x49c102){return new BPromise(function(_0x2db233,_0x5980e1){return client[_0x67a6('0xb')](_0x4254ff,_0x49c102)['then'](function(_0x3dacda){logger[_0x67a6('0xc')](_0x67a6('0xd'),_0x21c170,_0x67a6('0xe'));logger['debug'](_0x67a6('0xf'),_0x21c170,'request\x20sent',JSON[_0x67a6('0x10')](_0x3dacda));if(_0x3dacda['error']){if(_0x3dacda[_0x67a6('0x11')]['code']===0x1f4){logger[_0x67a6('0x11')](_0x67a6('0xd'),_0x21c170,_0x3dacda[_0x67a6('0x11')][_0x67a6('0x12')]);return _0x5980e1(_0x3dacda[_0x67a6('0x11')]['message']);}logger[_0x67a6('0x11')](_0x67a6('0xd'),_0x21c170,_0x3dacda[_0x67a6('0x11')][_0x67a6('0x12')]);return _0x2db233(_0x3dacda[_0x67a6('0x11')]['message']);}else{logger['info'](_0x67a6('0xd'),_0x21c170,_0x67a6('0xe'));_0x2db233(_0x3dacda[_0x67a6('0x13')][_0x67a6('0x12')]);}})[_0x67a6('0x14')](function(_0x281056){logger[_0x67a6('0x11')](_0x67a6('0xd'),_0x21c170,_0x281056);_0x5980e1(_0x281056);});});}exports[_0x67a6('0x15')]=function(_0x450783){var _0xc1d410=this;return new Promise(function(_0x3ab31a,_0x571765){return db[_0x67a6('0x16')][_0x67a6('0x17')](_0x450783['body'],{'raw':_0x450783['options']?_0x450783['options'][_0x67a6('0x18')]===undefined?!![]:![]:!![]})[_0x67a6('0x19')](function(_0x4cc4c7){logger[_0x67a6('0xc')]('CreateWhatsappQueueReport',_0x450783);logger[_0x67a6('0x1a')](_0x67a6('0x15'),_0x450783,JSON[_0x67a6('0x10')](_0x4cc4c7));_0x3ab31a(_0x4cc4c7);})[_0x67a6('0x14')](function(_0x3eba10){logger['error']('CreateWhatsappQueueReport',_0x3eba10[_0x67a6('0x12')],_0x450783);_0x571765(_0xc1d410[_0x67a6('0x11')](0x1f4,_0x3eba10[_0x67a6('0x12')]));});});};exports[_0x67a6('0x1b')]=function(_0x5712e8){var _0x3eeb70=this;return new Promise(function(_0x4033cc,_0x5e06e7){return db[_0x67a6('0x16')][_0x67a6('0x1c')](_0x5712e8[_0x67a6('0x1d')],{'raw':_0x5712e8[_0x67a6('0x1e')]?_0x5712e8['options'][_0x67a6('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5712e8[_0x67a6('0x1e')]?_0x5712e8[_0x67a6('0x1e')][_0x67a6('0x1f')]||null:null,'attributes':_0x5712e8[_0x67a6('0x1e')]?_0x5712e8[_0x67a6('0x1e')]['attributes']||null:null,'limit':_0x5712e8[_0x67a6('0x1e')]?_0x5712e8[_0x67a6('0x1e')][_0x67a6('0x20')]||null:null})[_0x67a6('0x19')](function(_0x29e19e){logger['info']('UpdateWhatsappQueueReport',_0x5712e8);logger[_0x67a6('0x1a')](_0x67a6('0x1b'),_0x5712e8,JSON[_0x67a6('0x10')](_0x29e19e));_0x4033cc(_0x29e19e);})['catch'](function(_0x4d99a6){logger[_0x67a6('0x11')]('UpdateWhatsappQueueReport',_0x4d99a6[_0x67a6('0x12')],_0x5712e8);_0x5e06e7(_0x3eeb70[_0x67a6('0x11')](0x1f4,_0x4d99a6[_0x67a6('0x12')]));});});};
\ No newline at end of file
index 29b362a..77c8e2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cfc=['./whatsappTransferReport.controller','get','isAuthenticated','/describe','/:id','create','put','update','delete','destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x5df59e,_0x4b5423){var _0x23ba82=function(_0xa9db26){while(--_0xa9db26){_0x5df59e['push'](_0x5df59e['shift']());}};_0x23ba82(++_0x4b5423);}(_0x5cfc,0xba));var _0xc5cf=function(_0x152121,_0x120c53){_0x152121=_0x152121-0x0;var _0x592a85=_0x5cfc[_0x152121];return _0x592a85;};'use strict';var multer=require(_0xc5cf('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc5cf('0x1'));var express=require(_0xc5cf('0x2'));var router=express['Router']();var fs_extra=require(_0xc5cf('0x3'));var auth=require(_0xc5cf('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc5cf('0x5'));var controller=require(_0xc5cf('0x6'));router[_0xc5cf('0x7')]('/',auth[_0xc5cf('0x8')](),controller['index']);router[_0xc5cf('0x7')](_0xc5cf('0x9'),auth[_0xc5cf('0x8')](),controller['describe']);router[_0xc5cf('0x7')](_0xc5cf('0xa'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xc5cf('0x8')](),controller[_0xc5cf('0xb')]);router[_0xc5cf('0xc')](_0xc5cf('0xa'),auth[_0xc5cf('0x8')](),controller[_0xc5cf('0xd')]);router[_0xc5cf('0xe')](_0xc5cf('0xa'),auth[_0xc5cf('0x8')](),controller[_0xc5cf('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x4408=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update','delete','destroy','exports','multer','util','path'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x4408,0x1f1));var _0x8440=function(_0x312fbd,_0x2c02a3){_0x312fbd=_0x312fbd-0x0;var _0x1584ab=_0x4408[_0x312fbd];return _0x1584ab;};'use strict';var multer=require(_0x8440('0x0'));var util=require(_0x8440('0x1'));var path=require(_0x8440('0x2'));var timeout=require(_0x8440('0x3'));var express=require(_0x8440('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8440('0x5'));var interaction=require(_0x8440('0x6'));var config=require('../../config/environment');var controller=require(_0x8440('0x7'));router[_0x8440('0x8')]('/',auth[_0x8440('0x9')](),controller[_0x8440('0xa')]);router['get'](_0x8440('0xb'),auth[_0x8440('0x9')](),controller[_0x8440('0xc')]);router['get'](_0x8440('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x8440('0xe')]('/',auth[_0x8440('0x9')](),controller['create']);router[_0x8440('0xf')](_0x8440('0xd'),auth[_0x8440('0x9')](),controller[_0x8440('0x10')]);router[_0x8440('0x11')](_0x8440('0xd'),auth[_0x8440('0x9')](),controller[_0x8440('0x12')]);module[_0x8440('0x13')]=router;
\ No newline at end of file
index c604c74..bdef84d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e2=['STRING','account','queue','sequelize'];(function(_0x29b02d,_0x3cfec9){var _0xe05de0=function(_0x33399a){while(--_0x33399a){_0x29b02d['push'](_0x29b02d['shift']());}};_0xe05de0(++_0x3cfec9);}(_0xb7e2,0x103));var _0x2b7e=function(_0x3a7519,_0x4fd98c){_0x3a7519=_0x3a7519-0x0;var _0x370fff=_0xb7e2[_0x3a7519];return _0x370fff;};'use strict';var Sequelize=require(_0x2b7e('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2b7e('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x2b7e('0x2'),'agent',_0x2b7e('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xd5fc=['account','agent','queue','DATE','sequelize'];(function(_0xf53937,_0x2bf512){var _0x33b67b=function(_0x133e15){while(--_0x133e15){_0xf53937['push'](_0xf53937['shift']());}};_0x33b67b(++_0x2bf512);}(_0xd5fc,0xae));var _0xcd5f=function(_0xfbf877,_0xc3fdc5){_0xfbf877=_0xfbf877-0x0;var _0x540e2c=_0xd5fc[_0xfbf877];return _0x540e2c;};'use strict';var Sequelize=require(_0xcd5f('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xcd5f('0x1'),_0xcd5f('0x2'),_0xcd5f('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xcd5f('0x4')]}};
\ No newline at end of file
index 40de7e1..ccbc443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ce=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','options','find','create','update','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','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','end','status','offset','limit','count','set','Content-Range','json','apply','reject','then','destroy','sendStatus','error','stack','name','send','map','WhatsappTransferReport','rawAttributes'];(function(_0x4474a9,_0x38167d){var _0x24b4dc=function(_0x4d811e){while(--_0x4d811e){_0x4474a9['push'](_0x4474a9['shift']());}};_0x24b4dc(++_0x38167d);}(_0x84ce,0x6d));var _0xe84c=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x84ce[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xe84c('0x0'));var rimraf=require(_0xe84c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe84c('0x2'));var moment=require(_0xe84c('0x3'));var BPromise=require(_0xe84c('0x4'));var Mustache=require(_0xe84c('0x5'));var util=require(_0xe84c('0x6'));var path=require(_0xe84c('0x7'));var sox=require(_0xe84c('0x8'));var csv=require(_0xe84c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe84c('0xa'));var squel=require(_0xe84c('0xb'));var crypto=require('crypto');var jsforce=require(_0xe84c('0xc'));var deskjs=require(_0xe84c('0xd'));var toCsv=require(_0xe84c('0x9'));var querystring=require(_0xe84c('0xe'));var Papa=require(_0xe84c('0xf'));var Redis=require('ioredis');var authService=require(_0xe84c('0x10'));var qs=require(_0xe84c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe84c('0x12'));var logger=require(_0xe84c('0x13'))(_0xe84c('0x14'));var utils=require(_0xe84c('0x15'));var config=require(_0xe84c('0x16'));var licenseUtil=require(_0xe84c('0x17'));var db=require(_0xe84c('0x18'))['db'];function respondWithStatusCode(_0x50be7f,_0x485f3d){_0x485f3d=_0x485f3d||0xcc;return function(_0x491914){if(_0x491914){return _0x50be7f['sendStatus'](_0x485f3d);}return _0x50be7f['status'](_0x485f3d)[_0xe84c('0x19')]();};}function respondWithResult(_0x5a30d6,_0x3d93ac){_0x3d93ac=_0x3d93ac||0xc8;return function(_0x157cd1){if(_0x157cd1){return _0x5a30d6[_0xe84c('0x1a')](_0x3d93ac)['json'](_0x157cd1);}};}function respondWithFilteredResult(_0xa90008,_0x16297f){return function(_0x796089){if(_0x796089){var _0x641309=typeof _0x16297f[_0xe84c('0x1b')]==='undefined'&&typeof _0x16297f[_0xe84c('0x1c')]==='undefined';var _0x4bbae6=_0x796089[_0xe84c('0x1d')];var _0x7c41d1=_0x641309?0x0:_0x16297f['offset'];var _0x41a81d=_0x641309?_0x796089[_0xe84c('0x1d')]:_0x16297f[_0xe84c('0x1b')]+_0x16297f[_0xe84c('0x1c')];var _0x2022e2;if(_0x41a81d>=_0x4bbae6){_0x41a81d=_0x4bbae6;_0x2022e2=0xc8;}else{_0x2022e2=0xce;}_0xa90008['status'](_0x2022e2);return _0xa90008[_0xe84c('0x1e')](_0xe84c('0x1f'),_0x7c41d1+'-'+_0x41a81d+'/'+_0x4bbae6)[_0xe84c('0x20')](_0x796089);}return null;};}function patchUpdates(_0x34e3c1){return function(_0x420128){try{jsonpatch[_0xe84c('0x21')](_0x420128,_0x34e3c1,!![]);}catch(_0x166fd4){return BPromise[_0xe84c('0x22')](_0x166fd4);}return _0x420128['save']();};}function saveUpdates(_0x715d1,_0x52240f){return function(_0x527e80){if(_0x527e80){return _0x527e80['update'](_0x715d1)[_0xe84c('0x23')](function(_0x3fc018){return _0x3fc018;});}return null;};}function removeEntity(_0x1d2447,_0x172272){return function(_0x40300f){if(_0x40300f){return _0x40300f[_0xe84c('0x24')]()[_0xe84c('0x23')](function(){_0x1d2447['status'](0xcc)[_0xe84c('0x19')]();});}};}function handleEntityNotFound(_0x5ceaca,_0x52a5b4){return function(_0x5e76d7){if(!_0x5e76d7){_0x5ceaca[_0xe84c('0x25')](0x194);}return _0x5e76d7;};}function handleError(_0x37ccd4,_0x58fb0b){_0x58fb0b=_0x58fb0b||0x1f4;return function(_0x2c255a){logger[_0xe84c('0x26')](_0x2c255a[_0xe84c('0x27')]);if(_0x2c255a[_0xe84c('0x28')]){delete _0x2c255a[_0xe84c('0x28')];}_0x37ccd4[_0xe84c('0x1a')](_0x58fb0b)[_0xe84c('0x29')](_0x2c255a);};}exports['index']=function(_0x36dda8,_0x48f0e2){var _0x3771c3={},_0x41fe6e={},_0x9ec47f={'count':0x0,'rows':[]};var _0x1b6d5e=_[_0xe84c('0x2a')](db[_0xe84c('0x2b')][_0xe84c('0x2c')],function(_0x216835){return{'name':_0x216835[_0xe84c('0x2d')],'type':_0x216835[_0xe84c('0x2e')][_0xe84c('0x2f')]};});_0x41fe6e[_0xe84c('0x30')]=_[_0xe84c('0x2a')](_0x1b6d5e,_0xe84c('0x28'));_0x41fe6e[_0xe84c('0x31')]=_[_0xe84c('0x32')](_0x36dda8['query']);_0x41fe6e[_0xe84c('0x33')]=_[_0xe84c('0x34')](_0x41fe6e[_0xe84c('0x30')],_0x41fe6e['query']);_0x3771c3[_0xe84c('0x35')]=_[_0xe84c('0x34')](_0x41fe6e['model'],qs['fields'](_0x36dda8[_0xe84c('0x31')][_0xe84c('0x36')]));_0x3771c3[_0xe84c('0x35')]=_0x3771c3['attributes'][_0xe84c('0x37')]?_0x3771c3[_0xe84c('0x35')]:_0x41fe6e[_0xe84c('0x30')];if(!_0x36dda8['query'][_0xe84c('0x38')](_0xe84c('0x39'))){_0x3771c3[_0xe84c('0x1c')]=qs[_0xe84c('0x1c')](_0x36dda8[_0xe84c('0x31')]['limit']);_0x3771c3['offset']=qs[_0xe84c('0x1b')](_0x36dda8[_0xe84c('0x31')][_0xe84c('0x1b')]);}_0x3771c3[_0xe84c('0x3a')]=qs[_0xe84c('0x3b')](_0x36dda8[_0xe84c('0x31')][_0xe84c('0x3b')]);_0x3771c3[_0xe84c('0x3c')]=qs['filters'](_[_0xe84c('0x3d')](_0x36dda8['query'],_0x41fe6e[_0xe84c('0x33')]),_0x1b6d5e);if(_0x36dda8[_0xe84c('0x31')][_0xe84c('0x3e')]){_0x3771c3[_0xe84c('0x3c')]=_[_0xe84c('0x3f')](_0x3771c3['where'],{'$or':_['map'](_0x1b6d5e,function(_0x2bf466){if(_0x2bf466['type']!==_0xe84c('0x40')){var _0x4c3104={};_0x4c3104[_0x2bf466['name']]={'$like':'%'+_0x36dda8[_0xe84c('0x31')][_0xe84c('0x3e')]+'%'};return _0x4c3104;}})});}_0x3771c3=_[_0xe84c('0x3f')]({},_0x3771c3,_0x36dda8['options']);var _0x2e2909={'where':_0x3771c3[_0xe84c('0x3c')]};return db[_0xe84c('0x2b')][_0xe84c('0x1d')](_0x2e2909)['then'](function(_0xab0cc3){_0x9ec47f[_0xe84c('0x1d')]=_0xab0cc3;if(_0x36dda8[_0xe84c('0x31')][_0xe84c('0x41')]){_0x3771c3[_0xe84c('0x42')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xe84c('0x43')](_0x3771c3);})['then'](function(_0x129fd5){_0x9ec47f['rows']=_0x129fd5;return _0x9ec47f;})['then'](respondWithFilteredResult(_0x48f0e2,_0x3771c3))[_0xe84c('0x44')](handleError(_0x48f0e2,null));};exports[_0xe84c('0x45')]=function(_0x159b70,_0x485179){var _0x436d18={'raw':!![],'where':{'id':_0x159b70['params']['id']}},_0x475d91={};_0x475d91[_0xe84c('0x30')]=_['keys'](db[_0xe84c('0x2b')]['rawAttributes']);_0x475d91[_0xe84c('0x31')]=_[_0xe84c('0x32')](_0x159b70[_0xe84c('0x31')]);_0x475d91[_0xe84c('0x33')]=_[_0xe84c('0x34')](_0x475d91[_0xe84c('0x30')],_0x475d91['query']);_0x436d18[_0xe84c('0x35')]=_['intersection'](_0x475d91[_0xe84c('0x30')],qs['fields'](_0x159b70['query'][_0xe84c('0x36')]));_0x436d18[_0xe84c('0x35')]=_0x436d18['attributes'][_0xe84c('0x37')]?_0x436d18[_0xe84c('0x35')]:_0x475d91[_0xe84c('0x30')];if(_0x159b70[_0xe84c('0x31')][_0xe84c('0x41')]){_0x436d18['include']=[{'all':!![]}];}_0x436d18=_[_0xe84c('0x3f')]({},_0x436d18,_0x159b70[_0xe84c('0x46')]);return db[_0xe84c('0x2b')][_0xe84c('0x47')](_0x436d18)[_0xe84c('0x23')](handleEntityNotFound(_0x485179,null))[_0xe84c('0x23')](respondWithResult(_0x485179,null))['catch'](handleError(_0x485179,null));};exports['create']=function(_0x160f74,_0x4c10cc){return db[_0xe84c('0x2b')][_0xe84c('0x48')](_0x160f74['body'],{})[_0xe84c('0x23')](respondWithResult(_0x4c10cc,0xc9))['catch'](handleError(_0x4c10cc,null));};exports[_0xe84c('0x49')]=function(_0x138895,_0x420e9c){if(_0x138895[_0xe84c('0x4a')]['id']){delete _0x138895[_0xe84c('0x4a')]['id'];}return db[_0xe84c('0x2b')]['find']({'where':{'id':_0x138895[_0xe84c('0x4b')]['id']}})[_0xe84c('0x23')](handleEntityNotFound(_0x420e9c,null))[_0xe84c('0x23')](saveUpdates(_0x138895[_0xe84c('0x4a')],null))[_0xe84c('0x23')](respondWithResult(_0x420e9c,null))[_0xe84c('0x44')](handleError(_0x420e9c,null));};exports[_0xe84c('0x24')]=function(_0x5a5bb0,_0x311e6a){return db[_0xe84c('0x2b')][_0xe84c('0x47')]({'where':{'id':_0x5a5bb0[_0xe84c('0x4b')]['id']}})[_0xe84c('0x23')](handleEntityNotFound(_0x311e6a,null))[_0xe84c('0x23')](removeEntity(_0x311e6a,null))[_0xe84c('0x44')](handleError(_0x311e6a,null));};exports[_0xe84c('0x4c')]=function(_0x51fbd0,_0xb06667){return db['WhatsappTransferReport']['describe']()['then'](respondWithResult(_0xb06667,null))['catch'](handleError(_0xb06667,null));};
\ No newline at end of file
+var _0x5a03=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','end','sendStatus','error','name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','rows','params','find','body','catch','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x5d1d7b,_0x31905a){var _0x96e1ca=function(_0x525796){while(--_0x525796){_0x5d1d7b['push'](_0x5d1d7b['shift']());}};_0x96e1ca(++_0x31905a);}(_0x5a03,0x1a8));var _0x35a0=function(_0x275bfe,_0x39d72c){_0x275bfe=_0x275bfe-0x0;var _0x5686fb=_0x5a03[_0x275bfe];return _0x5686fb;};'use strict';var emlformat=require(_0x35a0('0x0'));var rimraf=require(_0x35a0('0x1'));var zipdir=require(_0x35a0('0x2'));var jsonpatch=require(_0x35a0('0x3'));var rp=require(_0x35a0('0x4'));var moment=require(_0x35a0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x35a0('0x6'));var util=require(_0x35a0('0x7'));var path=require(_0x35a0('0x8'));var sox=require(_0x35a0('0x9'));var csv=require(_0x35a0('0xa'));var ejs=require(_0x35a0('0xb'));var fs=require('fs');var fs_extra=require(_0x35a0('0xc'));var _=require('lodash');var squel=require(_0x35a0('0xd'));var crypto=require(_0x35a0('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x35a0('0xa'));var querystring=require('querystring');var Papa=require(_0x35a0('0xf'));var Redis=require(_0x35a0('0x10'));var authService=require(_0x35a0('0x11'));var qs=require(_0x35a0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x35a0('0x13'));var logger=require(_0x35a0('0x14'))(_0x35a0('0x15'));var utils=require(_0x35a0('0x16'));var config=require(_0x35a0('0x17'));var licenseUtil=require(_0x35a0('0x18'));var db=require(_0x35a0('0x19'))['db'];function respondWithStatusCode(_0x3a29d3,_0x1de333){_0x1de333=_0x1de333||0xcc;return function(_0x2a7c25){if(_0x2a7c25){return _0x3a29d3['sendStatus'](_0x1de333);}return _0x3a29d3[_0x35a0('0x1a')](_0x1de333)['end']();};}function respondWithResult(_0x12836b,_0x5b945e){_0x5b945e=_0x5b945e||0xc8;return function(_0xbc6c67){if(_0xbc6c67){return _0x12836b[_0x35a0('0x1a')](_0x5b945e)[_0x35a0('0x1b')](_0xbc6c67);}};}function respondWithFilteredResult(_0x1ab469,_0x5991ac){return function(_0x489057){if(_0x489057){var _0x431c30=typeof _0x5991ac['offset']===_0x35a0('0x1c')&&typeof _0x5991ac[_0x35a0('0x1d')]===_0x35a0('0x1c');var _0xeee3f8=_0x489057[_0x35a0('0x1e')];var _0x156f00=_0x431c30?0x0:_0x5991ac[_0x35a0('0x1f')];var _0x21ed8f=_0x431c30?_0x489057['count']:_0x5991ac[_0x35a0('0x1f')]+_0x5991ac[_0x35a0('0x1d')];var _0x4cdb86;if(_0x21ed8f>=_0xeee3f8){_0x21ed8f=_0xeee3f8;_0x4cdb86=0xc8;}else{_0x4cdb86=0xce;}_0x1ab469['status'](_0x4cdb86);return _0x1ab469[_0x35a0('0x20')](_0x35a0('0x21'),_0x156f00+'-'+_0x21ed8f+'/'+_0xeee3f8)[_0x35a0('0x1b')](_0x489057);}return null;};}function patchUpdates(_0x4a6a66){return function(_0x192a09){try{jsonpatch[_0x35a0('0x22')](_0x192a09,_0x4a6a66,!![]);}catch(_0x56a556){return BPromise['reject'](_0x56a556);}return _0x192a09['save']();};}function saveUpdates(_0x241005,_0x22590b){return function(_0x4a79f1){if(_0x4a79f1){return _0x4a79f1[_0x35a0('0x23')](_0x241005)['then'](function(_0x224be8){return _0x224be8;});}return null;};}function removeEntity(_0x50163b,_0x49262b){return function(_0x2cbb22){if(_0x2cbb22){return _0x2cbb22['destroy']()[_0x35a0('0x24')](function(){_0x50163b[_0x35a0('0x1a')](0xcc)[_0x35a0('0x25')]();});}};}function handleEntityNotFound(_0x4ba521,_0x490288){return function(_0x550ffc){if(!_0x550ffc){_0x4ba521[_0x35a0('0x26')](0x194);}return _0x550ffc;};}function handleError(_0x37c012,_0x1d8378){_0x1d8378=_0x1d8378||0x1f4;return function(_0x4d0833){logger[_0x35a0('0x27')](_0x4d0833['stack']);if(_0x4d0833[_0x35a0('0x28')]){delete _0x4d0833['name'];}_0x37c012[_0x35a0('0x1a')](_0x1d8378)[_0x35a0('0x29')](_0x4d0833);};}exports[_0x35a0('0x2a')]=function(_0xc24232,_0xcf20b6){var _0x9ec740={},_0x415156={},_0x432bc9={'count':0x0,'rows':[]};var _0x48e652=_[_0x35a0('0x2b')](db[_0x35a0('0x2c')][_0x35a0('0x2d')],function(_0x3fdfc6){return{'name':_0x3fdfc6[_0x35a0('0x2e')],'type':_0x3fdfc6[_0x35a0('0x2f')]['key']};});_0x415156['model']=_[_0x35a0('0x2b')](_0x48e652,_0x35a0('0x28'));_0x415156['query']=_[_0x35a0('0x30')](_0xc24232[_0x35a0('0x31')]);_0x415156[_0x35a0('0x32')]=_[_0x35a0('0x33')](_0x415156[_0x35a0('0x34')],_0x415156['query']);_0x9ec740[_0x35a0('0x35')]=_[_0x35a0('0x33')](_0x415156[_0x35a0('0x34')],qs['fields'](_0xc24232['query'][_0x35a0('0x36')]));_0x9ec740[_0x35a0('0x35')]=_0x9ec740[_0x35a0('0x35')][_0x35a0('0x37')]?_0x9ec740[_0x35a0('0x35')]:_0x415156[_0x35a0('0x34')];if(!_0xc24232[_0x35a0('0x31')]['hasOwnProperty'](_0x35a0('0x38'))){_0x9ec740['limit']=qs[_0x35a0('0x1d')](_0xc24232[_0x35a0('0x31')][_0x35a0('0x1d')]);_0x9ec740[_0x35a0('0x1f')]=qs['offset'](_0xc24232['query']['offset']);}_0x9ec740[_0x35a0('0x39')]=qs[_0x35a0('0x3a')](_0xc24232[_0x35a0('0x31')][_0x35a0('0x3a')]);_0x9ec740[_0x35a0('0x3b')]=qs[_0x35a0('0x32')](_[_0x35a0('0x3c')](_0xc24232[_0x35a0('0x31')],_0x415156[_0x35a0('0x32')]),_0x48e652);if(_0xc24232[_0x35a0('0x31')]['filter']){_0x9ec740[_0x35a0('0x3b')]=_['merge'](_0x9ec740[_0x35a0('0x3b')],{'$or':_[_0x35a0('0x2b')](_0x48e652,function(_0x270411){if(_0x270411[_0x35a0('0x2f')]!==_0x35a0('0x3d')){var _0x4dcc64={};_0x4dcc64[_0x270411[_0x35a0('0x28')]]={'$like':'%'+_0xc24232['query'][_0x35a0('0x3e')]+'%'};return _0x4dcc64;}})});}_0x9ec740=_[_0x35a0('0x3f')]({},_0x9ec740,_0xc24232[_0x35a0('0x40')]);var _0x4bb920={'where':_0x9ec740[_0x35a0('0x3b')]};return db[_0x35a0('0x2c')]['count'](_0x4bb920)[_0x35a0('0x24')](function(_0x4e70ec){_0x432bc9[_0x35a0('0x1e')]=_0x4e70ec;if(_0xc24232['query'][_0x35a0('0x41')]){_0x9ec740[_0x35a0('0x42')]=[{'all':!![]}];}return db[_0x35a0('0x2c')]['findAll'](_0x9ec740);})[_0x35a0('0x24')](function(_0x53c56c){_0x432bc9[_0x35a0('0x43')]=_0x53c56c;return _0x432bc9;})[_0x35a0('0x24')](respondWithFilteredResult(_0xcf20b6,_0x9ec740))['catch'](handleError(_0xcf20b6,null));};exports['show']=function(_0x494cb8,_0x4fa5c0){var _0x354565={'raw':!![],'where':{'id':_0x494cb8[_0x35a0('0x44')]['id']}},_0x35607a={};_0x35607a[_0x35a0('0x34')]=_[_0x35a0('0x30')](db[_0x35a0('0x2c')][_0x35a0('0x2d')]);_0x35607a[_0x35a0('0x31')]=_[_0x35a0('0x30')](_0x494cb8[_0x35a0('0x31')]);_0x35607a[_0x35a0('0x32')]=_[_0x35a0('0x33')](_0x35607a[_0x35a0('0x34')],_0x35607a['query']);_0x354565[_0x35a0('0x35')]=_[_0x35a0('0x33')](_0x35607a['model'],qs[_0x35a0('0x36')](_0x494cb8[_0x35a0('0x31')]['fields']));_0x354565['attributes']=_0x354565[_0x35a0('0x35')][_0x35a0('0x37')]?_0x354565['attributes']:_0x35607a['model'];if(_0x494cb8['query']['includeAll']){_0x354565[_0x35a0('0x42')]=[{'all':!![]}];}_0x354565=_[_0x35a0('0x3f')]({},_0x354565,_0x494cb8['options']);return db[_0x35a0('0x2c')][_0x35a0('0x45')](_0x354565)[_0x35a0('0x24')](handleEntityNotFound(_0x4fa5c0,null))[_0x35a0('0x24')](respondWithResult(_0x4fa5c0,null))['catch'](handleError(_0x4fa5c0,null));};exports['create']=function(_0x215df6,_0x5971ff){return db[_0x35a0('0x2c')]['create'](_0x215df6[_0x35a0('0x46')],{})[_0x35a0('0x24')](respondWithResult(_0x5971ff,0xc9))[_0x35a0('0x47')](handleError(_0x5971ff,null));};exports[_0x35a0('0x23')]=function(_0xd19457,_0x299eb5){if(_0xd19457['body']['id']){delete _0xd19457[_0x35a0('0x46')]['id'];}return db[_0x35a0('0x2c')][_0x35a0('0x45')]({'where':{'id':_0xd19457[_0x35a0('0x44')]['id']}})[_0x35a0('0x24')](handleEntityNotFound(_0x299eb5,null))[_0x35a0('0x24')](saveUpdates(_0xd19457[_0x35a0('0x46')],null))[_0x35a0('0x24')](respondWithResult(_0x299eb5,null))[_0x35a0('0x47')](handleError(_0x299eb5,null));};exports[_0x35a0('0x48')]=function(_0x351398,_0x29af97){return db[_0x35a0('0x2c')][_0x35a0('0x45')]({'where':{'id':_0x351398[_0x35a0('0x44')]['id']}})[_0x35a0('0x24')](handleEntityNotFound(_0x29af97,null))['then'](removeEntity(_0x29af97,null))['catch'](handleError(_0x29af97,null));};exports[_0x35a0('0x49')]=function(_0x5e3642,_0x696df6){return db[_0x35a0('0x2c')]['describe']()[_0x35a0('0x24')](respondWithResult(_0x696df6,null))['catch'](handleError(_0x696df6,null));};
\ No newline at end of file
index 20a89cd..d3e5264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2cb=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api','moment','request-promise','../../config/environment','./whatsappTransferReport.attributes','exports','define'];(function(_0x4f096e,_0x30d3c3){var _0x4a33ce=function(_0x107ba6){while(--_0x107ba6){_0x4f096e['push'](_0x4f096e['shift']());}};_0x4a33ce(++_0x30d3c3);}(_0xb2cb,0x123));var _0xbb2c=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xb2cb[_0x1b6c6d];return _0x290d9d;};'use strict';var _=require(_0xbb2c('0x0'));var util=require(_0xbb2c('0x1'));var logger=require('../../config/logger')(_0xbb2c('0x2'));var moment=require(_0xbb2c('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb2c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xbb2c('0x5'));var attributes=require(_0xbb2c('0x6'));module[_0xbb2c('0x7')]=function(_0x24cfdc,_0x34ec64){return _0x24cfdc[_0xbb2c('0x8')](_0xbb2c('0x9'),attributes,{'tableName':_0xbb2c('0xa'),'paranoid':![],'indexes':[{'name':_0xbb2c('0xb'),'fields':[_0xbb2c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9a5=['util','api','bluebird','request-promise','path','exports','define','report_whatsapp_transfer','uniqueid','lodash'];(function(_0x44e4ba,_0x3c0508){var _0x3e18b3=function(_0x3f7746){while(--_0x3f7746){_0x44e4ba['push'](_0x44e4ba['shift']());}};_0x3e18b3(++_0x3c0508);}(_0xb9a5,0x1a3));var _0x5b9a=function(_0x2f8125,_0x260435){_0x2f8125=_0x2f8125-0x0;var _0x332dfb=_0xb9a5[_0x2f8125];return _0x332dfb;};'use strict';var _=require(_0x5b9a('0x0'));var util=require(_0x5b9a('0x1'));var logger=require('../../config/logger')(_0x5b9a('0x2'));var moment=require('moment');var BPromise=require(_0x5b9a('0x3'));var rp=require(_0x5b9a('0x4'));var fs=require('fs');var path=require(_0x5b9a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappTransferReport.attributes');module[_0x5b9a('0x6')]=function(_0x1ae1ef,_0x2b6f32){return _0x1ae1ef[_0x5b9a('0x7')]('WhatsappTransferReport',attributes,{'tableName':_0x5b9a('0x8'),'paranoid':![],'indexes':[{'name':_0x5b9a('0x9'),'fields':[_0x5b9a('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 3a0f266..35d12b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b62=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb'];(function(_0x450a0d,_0x2c019f){var _0x5904cd=function(_0x418fad){while(--_0x418fad){_0x450a0d['push'](_0x450a0d['shift']());}};_0x5904cd(++_0x2c019f);}(_0x8b62,0xe2));var _0x28b6=function(_0x137d1d,_0x35c663){_0x137d1d=_0x137d1d-0x0;var _0x485108=_0x8b62[_0x137d1d];return _0x485108;};'use strict';var _=require(_0x28b6('0x0'));var util=require(_0x28b6('0x1'));var moment=require(_0x28b6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x28b6('0x3'));var db=require(_0x28b6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x28b6('0x5'))(_0x28b6('0x6'));var config=require(_0x28b6('0x7'));var jayson=require(_0x28b6('0x8'));var client=jayson['client'][_0x28b6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59a71a,_0x496f69,_0x376658){return new BPromise(function(_0x22d39c,_0x407d5a){return client[_0x28b6('0xa')](_0x59a71a,_0x376658)[_0x28b6('0xb')](function(_0x3723be){logger[_0x28b6('0xc')](_0x28b6('0xd'),_0x496f69,_0x28b6('0xe'));logger['debug'](_0x28b6('0xf'),_0x496f69,'request\x20sent',JSON['stringify'](_0x3723be));if(_0x3723be['error']){if(_0x3723be[_0x28b6('0x10')][_0x28b6('0x11')]===0x1f4){logger[_0x28b6('0x10')](_0x28b6('0xd'),_0x496f69,_0x3723be[_0x28b6('0x10')][_0x28b6('0x12')]);return _0x407d5a(_0x3723be['error'][_0x28b6('0x12')]);}logger[_0x28b6('0x10')](_0x28b6('0xd'),_0x496f69,_0x3723be['error'][_0x28b6('0x12')]);return _0x22d39c(_0x3723be[_0x28b6('0x10')][_0x28b6('0x12')]);}else{logger[_0x28b6('0xc')](_0x28b6('0xd'),_0x496f69,_0x28b6('0xe'));_0x22d39c(_0x3723be[_0x28b6('0x13')]['message']);}})[_0x28b6('0x14')](function(_0x5e78c6){logger[_0x28b6('0x10')](_0x28b6('0xd'),_0x496f69,_0x5e78c6);_0x407d5a(_0x5e78c6);});});}
\ No newline at end of file
+var _0xbdb5=['jayson/promise','client','http','request','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xbdb5,0x1ac));var _0x5bdb=function(_0x483e31,_0xeb01b){_0x483e31=_0x483e31-0x0;var _0xd209a3=_0xbdb5[_0x483e31];return _0xd209a3;};'use strict';var _=require(_0x5bdb('0x0'));var util=require(_0x5bdb('0x1'));var moment=require(_0x5bdb('0x2'));var BPromise=require(_0x5bdb('0x3'));var rs=require(_0x5bdb('0x4'));var fs=require('fs');var Redis=require(_0x5bdb('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5bdb('0x6'))(_0x5bdb('0x7'));var config=require(_0x5bdb('0x8'));var jayson=require(_0x5bdb('0x9'));var client=jayson[_0x5bdb('0xa')][_0x5bdb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x107738,_0x2c01b3,_0x8ee71b){return new BPromise(function(_0x222684,_0x4df69c){return client[_0x5bdb('0xc')](_0x107738,_0x8ee71b)['then'](function(_0x7f7238){logger[_0x5bdb('0xd')](_0x5bdb('0xe'),_0x2c01b3,_0x5bdb('0xf'));logger['debug'](_0x5bdb('0x10'),_0x2c01b3,_0x5bdb('0xf'),JSON[_0x5bdb('0x11')](_0x7f7238));if(_0x7f7238['error']){if(_0x7f7238[_0x5bdb('0x12')][_0x5bdb('0x13')]===0x1f4){logger[_0x5bdb('0x12')](_0x5bdb('0xe'),_0x2c01b3,_0x7f7238[_0x5bdb('0x12')][_0x5bdb('0x14')]);return _0x4df69c(_0x7f7238[_0x5bdb('0x12')][_0x5bdb('0x14')]);}logger[_0x5bdb('0x12')](_0x5bdb('0xe'),_0x2c01b3,_0x7f7238['error'][_0x5bdb('0x14')]);return _0x222684(_0x7f7238[_0x5bdb('0x12')]['message']);}else{logger[_0x5bdb('0xd')](_0x5bdb('0xe'),_0x2c01b3,_0x5bdb('0xf'));_0x222684(_0x7f7238[_0x5bdb('0x15')]['message']);}})[_0x5bdb('0x16')](function(_0x5547c9){logger['error'](_0x5bdb('0xe'),_0x2c01b3,_0x5547c9);_0x4df69c(_0x5547c9);});});}
\ No newline at end of file
index febe753..74dcdbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd7b=['./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','then','default','start','number','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','filter','join','status','online','None','log','App\x20Ready!','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xfd7b,0x1df));var _0xbfd7=function(_0x1ca9e9,_0x1c4391){_0x1ca9e9=_0x1ca9e9-0x0;var _0x309f3c=_0xfd7b[_0x1ca9e9];return _0x309f3c;};'use strict';var _=require('lodash');var db=require(_0xbfd7('0x0'))['db'];var seedDb=require(_0xbfd7('0x1'));var checkLicense=require(_0xbfd7('0x2'));var rpc=require(_0xbfd7('0x3'));var config=require(_0xbfd7('0x4'));var logger=require(_0xbfd7('0x5'))(_0xbfd7('0x6'));var pm2=require(_0xbfd7('0x7'));var pm2Config=require(_0xbfd7('0x8'));var schedule=require(_0xbfd7('0x9'));var chat=require(_0xbfd7('0xa'));var whatsapp=require(_0xbfd7('0xb'));var transcribe=require(_0xbfd7('0xc'));var provider=require('./config/schedule/cloud-provider');function main(){return db[_0xbfd7('0xd')]['sync']()[_0xbfd7('0xe')](function(){if(config['seedDB']){return seedDb[_0xbfd7('0xf')]();}})[_0xbfd7('0xe')](function(){return checkLicense[_0xbfd7('0xf')]();})[_0xbfd7('0xe')](function(){return rpc['listen']();})[_0xbfd7('0xe')](function(_0x14c84b){logger['info'](_0x14c84b);return chat['start']();})[_0xbfd7('0xe')](function(){return whatsapp[_0xbfd7('0x10')]();})[_0xbfd7('0xe')](function(){return schedule[_0xbfd7('0x10')]();})[_0xbfd7('0xe')](function(){return transcribe['start']();})[_0xbfd7('0xe')](function(){return provider['start']();})[_0xbfd7('0xe')](function(_0x4e9bd7){logger['info'](_0x4e9bd7);return pm2[_0xbfd7('0x10')](pm2Config);})[_0xbfd7('0xe')](function(_0x3789b7){var _0x371592=_0x3789b7['filter'](function(_0x5efd54){return typeof _0x5efd54['exitCode']===_0xbfd7('0x11')&&_0x5efd54[_0xbfd7('0x12')]>=0x0;});if(_0x371592[_0xbfd7('0x13')]>0x0){throw new Error(_0x371592[_0xbfd7('0x13')]+_0xbfd7('0x14')+_[_0xbfd7('0x15')](_0x371592,function(_0x137d50){return'\x22'+_0x137d50[_0xbfd7('0x16')][_0xbfd7('0x17')]+'\x22';}));}logger['info']('Online\x20apps:',_[_0xbfd7('0x15')](_[_0xbfd7('0x18')](_0x3789b7,{'status':'online'}),'name')[_0xbfd7('0x19')]());logger['info']('Offline\x20apps:',_[_0xbfd7('0x15')](_['filter'](_0x3789b7,function(_0x594792){return _0x594792[_0xbfd7('0x1a')]!==_0xbfd7('0x1b');}),_0xbfd7('0x17'))['join']()||_0xbfd7('0x1c'));console[_0xbfd7('0x1d')](_0xbfd7('0x1e'));})[_0xbfd7('0x1f')](function(_0x229f2f){console[_0xbfd7('0x1d')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x229f2f);logger[_0xbfd7('0x20')](_0xbfd7('0x21'),_0x229f2f);process[_0xbfd7('0x22')](0x1);});}main();
\ No newline at end of file
+var _0x68f5=['status','None','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sync','then','seedDB','listen','info','start','filter','exitCode','number','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','Online\x20apps:','online','name','join','Offline\x20apps:'];(function(_0x6785af,_0xde5171){var _0x434651=function(_0x641d81){while(--_0x641d81){_0x6785af['push'](_0x6785af['shift']());}};_0x434651(++_0xde5171);}(_0x68f5,0x11a));var _0x568f=function(_0x1e12c1,_0x1598bd){_0x1e12c1=_0x1e12c1-0x0;var _0x1e9abf=_0x68f5[_0x1e12c1];return _0x1e9abf;};'use strict';var _=require(_0x568f('0x0'));var db=require(_0x568f('0x1'))['db'];var seedDb=require(_0x568f('0x2'));var checkLicense=require('./config/license');var rpc=require(_0x568f('0x3'));var config=require(_0x568f('0x4'));var logger=require(_0x568f('0x5'))(_0x568f('0x6'));var pm2=require(_0x568f('0x7'));var pm2Config=require('./config/pm2/config');var schedule=require(_0x568f('0x8'));var chat=require(_0x568f('0x9'));var whatsapp=require(_0x568f('0xa'));var transcribe=require(_0x568f('0xb'));var provider=require('./config/schedule/cloud-provider');function main(){return db['sequelize'][_0x568f('0xc')]()[_0x568f('0xd')](function(){if(config[_0x568f('0xe')]){return seedDb['default']();}})[_0x568f('0xd')](function(){return checkLicense['default']();})[_0x568f('0xd')](function(){return rpc[_0x568f('0xf')]();})['then'](function(_0x4378fc){logger[_0x568f('0x10')](_0x4378fc);return chat[_0x568f('0x11')]();})[_0x568f('0xd')](function(){return whatsapp[_0x568f('0x11')]();})[_0x568f('0xd')](function(){return schedule[_0x568f('0x11')]();})[_0x568f('0xd')](function(){return transcribe[_0x568f('0x11')]();})['then'](function(){return provider[_0x568f('0x11')]();})[_0x568f('0xd')](function(_0x67503e){logger[_0x568f('0x10')](_0x67503e);return pm2['start'](pm2Config);})[_0x568f('0xd')](function(_0x53c270){var _0x4c1504=_0x53c270[_0x568f('0x12')](function(_0x15a4e5){return typeof _0x15a4e5[_0x568f('0x13')]===_0x568f('0x14')&&_0x15a4e5[_0x568f('0x13')]>=0x0;});if(_0x4c1504[_0x568f('0x15')]>0x0){throw new Error(_0x4c1504[_0x568f('0x15')]+_0x568f('0x16')+_[_0x568f('0x17')](_0x4c1504,function(_0x3d9645){return'\x22'+_0x3d9645[_0x568f('0x18')]['name']+'\x22';}));}logger[_0x568f('0x10')](_0x568f('0x19'),_[_0x568f('0x17')](_[_0x568f('0x12')](_0x53c270,{'status':_0x568f('0x1a')}),_0x568f('0x1b'))[_0x568f('0x1c')]());logger[_0x568f('0x10')](_0x568f('0x1d'),_[_0x568f('0x17')](_[_0x568f('0x12')](_0x53c270,function(_0x22c4e0){return _0x22c4e0[_0x568f('0x1e')]!==_0x568f('0x1a');}),_0x568f('0x1b'))[_0x568f('0x1c')]()||_0x568f('0x1f'));console[_0x568f('0x20')](_0x568f('0x21'));})[_0x568f('0x22')](function(_0x2de331){console[_0x568f('0x20')](_0x568f('0x23'),_0x2de331);logger[_0x568f('0x24')](_0x568f('0x25'),_0x2de331);process[_0x568f('0x26')](0x1);});}main();
\ No newline at end of file
index 2655738..3904208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['role','redirect','/dashboards/general','send','retrieveApiKey','apiKeyIat','generateApiKey','regenerateApiKey','apiKeyNonce','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','test','ValidationError','validatePasswordHistory','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','Sequelize','decryptString','length','unshift','encryptString','promisify','payload','options','verify','randomBytes','toString','hex','now','../../mysqldb','../../config/environment','../../config/license/hardware','lodash','express-jwt','composable-middleware','basic-auth','crypto','bluebird','moment','secrets','session','name','userpic','permissions','md5secret','voicePause','chatPause','mailPause','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','phoneBarRemoteControlPort','interface','userProfileId','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','use','ChatInteraction','findOne','params','closed','disposition','then','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','startsWith','authorization','Basic','User','find','authenticate','pass','status','user','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blockedAt','add','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','isWebrtcLicence','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'];(function(_0x455f7e,_0x4e2f93){var _0x482a74=function(_0x537632){while(--_0x537632){_0x455f7e['push'](_0x455f7e['shift']());}};_0x482a74(++_0x4e2f93);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'use strict';var db=require(_0x0a9e('0x0'))['db'];var config=require(_0x0a9e('0x1'));var hardwareConf=require(_0x0a9e('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require('../encryptor');var _=require(_0x0a9e('0x3'));var jwt=require('jsonwebtoken');var expressJwt=require(_0x0a9e('0x4'));var compose=require(_0x0a9e('0x5'));var basicAuth=require(_0x0a9e('0x6'));var crypto=require(_0x0a9e('0x7'));var BPromise=require(_0x0a9e('0x8'));var util=require('util');var moment=require(_0x0a9e('0x9'));var validateJwt=expressJwt({'secret':config[_0x0a9e('0xa')][_0x0a9e('0xb')]});var userAttributes=['id','role','fullname',_0x0a9e('0xc'),'internal','email',_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),_0x0a9e('0x11'),_0x0a9e('0x12'),'faxPause','smsPause','openchannelPause','pauseType',_0x0a9e('0x13'),_0x0a9e('0x14'),_0x0a9e('0x15'),_0x0a9e('0x16'),_0x0a9e('0x17'),_0x0a9e('0x18'),'alias',_0x0a9e('0x19'),_0x0a9e('0x1a'),_0x0a9e('0x1b'),_0x0a9e('0x1c'),_0x0a9e('0x1d'),_0x0a9e('0x1e'),'phoneBarExpires',_0x0a9e('0x1f'),'phoneBarRemoteControl',_0x0a9e('0x20'),'hotdesk',_0x0a9e('0x21'),_0x0a9e('0x22'),'privacyEnabled',_0x0a9e('0x23'),'wssPort',_0x0a9e('0x24'),_0x0a9e('0x25'),_0x0a9e('0x26'),_0x0a9e('0x27'),_0x0a9e('0x28'),_0x0a9e('0x29'),_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x0a9e('0x2c'),_0x0a9e('0x2d'),_0x0a9e('0x2e'),_0x0a9e('0x2f'),'openchannelAutoanswerDelay',_0x0a9e('0x30'),_0x0a9e('0x31'),'whatsappAutoanswer',_0x0a9e('0x32')];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])[_0x0a9e('0x33')](function(_0x432e56,_0x38e7c4,_0x30bae6){if(_0x432e56['user']){_0x30bae6();}else{return db[_0x0a9e('0x34')][_0x0a9e('0x35')]({'where':{'id':_0x432e56[_0x0a9e('0x36')]['id']},'attributes':['id',_0x0a9e('0x37'),_0x0a9e('0x38')],'raw':!![]})[_0x0a9e('0x39')](function(_0x16b1ca){if(_0x16b1ca&&_0x16b1ca['closed']){return _0x38e7c4['status'](_0x16b1ca[_0x0a9e('0x38')]===_0x0a9e('0x3a')?0x195:0x193)[_0x0a9e('0x3b')]({'message':_0x16b1ca[_0x0a9e('0x38')]==='unmanaged'?_0x0a9e('0x3c'):'Forbidden.'});}else{_0x30bae6();}})[_0x0a9e('0x3d')](function(_0x5bfb33){_0x30bae6(_0x5bfb33);});}});};exports[_0x0a9e('0x3e')]=function isAuthenticated(_0x34dc65){return compose()[_0x0a9e('0x33')](function(_0x14433c,_0x140511,_0x1538a4){var _0x11c3b6;if(_0x14433c[_0x0a9e('0x3f')]['authorization']){if(_[_0x0a9e('0x40')](_0x14433c[_0x0a9e('0x3f')][_0x0a9e('0x41')],_0x0a9e('0x42'))){var _0x5c877d=basicAuth(_0x14433c);db[_0x0a9e('0x43')][_0x0a9e('0x44')]({'where':{'name':_0x5c877d[_0x0a9e('0xc')]}})[_0x0a9e('0x39')](function(_0x58b06f){if(!_0x58b06f||!_0x58b06f[_0x0a9e('0x45')](_0x5c877d[_0x0a9e('0x46')])){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':'Wrong\x20credentials.'});}_0x14433c[_0x0a9e('0x48')]={'id':_0x58b06f['id']};_0x1538a4();})['catch'](function(_0x2407f9){_0x1538a4(_0x2407f9);});}else if(_[_0x0a9e('0x40')](_0x14433c[_0x0a9e('0x3f')][_0x0a9e('0x41')],_0x0a9e('0x49'))){validateJwt(_0x14433c,_0x140511,_0x1538a4);}else{if(_0x34dc65){_0x1538a4();}else{return _0x140511['status'](0x193)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x4a')});}}}else if(_0x14433c[_0x0a9e('0x4b')][_0x0a9e('0x4c')]){try{var _0x2b45ea={'audience':hardwareConf[_0x0a9e('0x4d')](),'issuer':hardwareConf[_0x0a9e('0x4d')]()};verifyJwt(_0x14433c[_0x0a9e('0x4b')]['apikey'],_0x2b45ea)[_0x0a9e('0x39')](function(_0x5e7238){return db[_0x0a9e('0x43')][_0x0a9e('0x44')]({'where':{'id':_0x5e7238[_0x0a9e('0x4e')]}})[_0x0a9e('0x39')](function(_0x567193){_0x11c3b6=_0x567193;return db[_0x0a9e('0x4f')][_0x0a9e('0x35')]({'where':{'id':0x1},'attributes':[_0x0a9e('0x50'),_0x0a9e('0x51')],'raw':!![]});})['then'](function(_0x54135e){if(!_0x11c3b6||!_[_0x0a9e('0x52')](_0x11c3b6['apiKeyNonce'],_0x5e7238[_0x0a9e('0x53')])){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x54')});}if(_0x11c3b6['disabled']){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x55')});}if(_0x11c3b6['blocked']){if(_0x54135e[_0x0a9e('0x51')]>0x0){if(moment(_0x11c3b6[_0x0a9e('0x56')])[_0x0a9e('0x57')](_0x54135e['blockDuration'],'minutes')>moment()){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x55')});}}_0x14433c[_0x0a9e('0x48')]={'id':_0x11c3b6['id']};_0x1538a4();});})['catch'](function(){return _0x140511['status'](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x55')});});}catch(_0x53f3ee){_0x1538a4(_0x53f3ee);}}else if(_0x34dc65){_0x1538a4();}else{return _0x140511[_0x0a9e('0x47')](0x193)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x4a')});}})['use'](function(_0x316c8f,_0x2cfea9,_0x274e8e){if(_0x316c8f[_0x0a9e('0x48')]){db[_0x0a9e('0x43')][_0x0a9e('0x44')]({'where':{'id':_0x316c8f[_0x0a9e('0x48')]['id']},'attributes':userAttributes})[_0x0a9e('0x39')](function(_0x23b089){if(!_0x23b089){return _0x2cfea9[_0x0a9e('0x47')](0x194)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x58')});}_0x316c8f[_0x0a9e('0x48')]=_0x23b089;_0x274e8e();})[_0x0a9e('0x3d')](function(_0x37f6cc){_0x274e8e(_0x37f6cc);});}else if(_0x34dc65){_0x274e8e();}else{return _0x2cfea9['status'](0x194)['json']({'message':_0x0a9e('0x59')});}});};exports[_0x0a9e('0x5a')]=function canUpdate(){return compose()[_0x0a9e('0x33')](function(_0x315881,_0x1a69dd,_0xc9a702){return licenseUtil[_0x0a9e('0x5b')]()[_0x0a9e('0x39')](function(_0x432fcc){if(_0x432fcc[_0x0a9e('0x5c')]){_0xc9a702();}else{return _0x1a69dd[_0x0a9e('0x47')](0x193)[_0x0a9e('0x3b')]({'message':'Forbidden'});}})[_0x0a9e('0x3d')](function(_0x138b8b){_0xc9a702(_0x138b8b);});});};exports[_0x0a9e('0x5d')]=function isWebrtcLicence(){return compose()[_0x0a9e('0x33')](function(_0x2e8caf,_0xbe9d19,_0x21eb86){return licenseUtil[_0x0a9e('0x5b')]()['then'](function(_0x2e9d90){if(_0x2e9d90['webrtc']){_0x21eb86();}else{return _0xbe9d19[_0x0a9e('0x47')](0x193)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x5e')});}})['catch'](function(_0x14bec2){_0x21eb86(_0x14bec2);});});};exports[_0x0a9e('0x5f')]=function(_0x4774f4,_0x34aa5a,_0x45c845){_0x4774f4[_0x0a9e('0x5f')]=!![];return _0x45c845();};exports[_0x0a9e('0x60')]=function signToken(_0x5bbcde){return signJwt(_0x5bbcde);};exports[_0x0a9e('0x61')]=function(_0x1bde3c,_0x1b5e80){if(!_0x1bde3c[_0x0a9e('0x48')]){return _0x1b5e80[_0x0a9e('0x47')](0x194)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x62')});}var _0x19383e={'payload':{'id':_0x1bde3c[_0x0a9e('0x48')]['id'],'role':_0x1bde3c['user'][_0x0a9e('0x63')]},'options':{'expiresIn':0x15180}};return signJwt(_0x19383e)[_0x0a9e('0x39')](function(_0x4f7240){_0x1b5e80['cookie']('motion.token',_0x4f7240);_0x1b5e80[_0x0a9e('0x64')](_0x0a9e('0x65'));})[_0x0a9e('0x3d')](function(_0x11545a){return _0x1b5e80[_0x0a9e('0x47')](0x1f4)[_0x0a9e('0x66')](_0x11545a);});};exports[_0x0a9e('0x67')]=function(_0x375c18){if(_['isNil'](_0x375c18['apiKeyNonce'])||_['isNil'](_0x375c18[_0x0a9e('0x68')])){return null;}else{return createJwt(_0x375c18);}};exports[_0x0a9e('0x69')]=function(_0x14d602){_0x14d602['apiKeyNonce']=generateNonce();_0x14d602[_0x0a9e('0x68')]=generateIssuedAt();return createJwt(_0x14d602);};exports[_0x0a9e('0x6a')]=function(_0x53d113,_0x5a88da){var _0x2ef381=_0x53d113['query'][_0x0a9e('0x4c')];if(_0x2ef381){var _0x4c3845={'nonce':_0x5a88da[_0x0a9e('0x6b')],'iat':_0x5a88da[_0x0a9e('0x68')],'audience':hardwareConf[_0x0a9e('0x4d')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x2ef381,_0x4c3845)[_0x0a9e('0x39')](function(){return generateApiKey(_0x5a88da);});}else{throw{'message':_0x0a9e('0x6c')};}};exports['validatePasswordPattern']=function(_0x50f687){var _0x128aa6=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x128aa6[_0x0a9e('0x6d')](_0x50f687))throw new db['Sequelize'][(_0x0a9e('0x6e'))]('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[_0x0a9e('0x6f')]=function(_0x523cd2,_0xe22ccc,_0x4a6deb){var _0x5da27d=encryptor['decryptString'](_0xe22ccc)[_0x0a9e('0x70')](',');for(var _0x47de4c=0x0;_0x47de4c<_0x4a6deb;_0x47de4c++){if(!_0x5da27d[_0x47de4c])break;if(_0x523cd2[_0x0a9e('0x71')]()===_0x5da27d[_0x47de4c][_0x0a9e('0x71')]()){var _0x3cfd00=util[_0x0a9e('0x72')](_0x0a9e('0x73'),_0x4a6deb);if(_0x4a6deb===0x1){_0x3cfd00=_0x0a9e('0x74');}throw new db[(_0x0a9e('0x75'))][(_0x0a9e('0x6e'))](_0x3cfd00);}}return;};exports['updatePasswordsHistory']=function(_0x1c693e,_0x121cef){var _0x2642bb=_0x121cef?encryptor[_0x0a9e('0x76')](_0x121cef)[_0x0a9e('0x70')](','):[];if(_0x2642bb[_0x0a9e('0x77')]===0x5){_0x2642bb['splice'](-0x1,0x1);}_0x2642bb[_0x0a9e('0x78')](_0x1c693e);return encryptor[_0x0a9e('0x79')](_0x2642bb['join'](','));};function signJwt(_0x3649cc){var _0x5cc8fb=BPromise[_0x0a9e('0x7a')](jwt['sign'],{'context':jwt});var _0x4b3c1a=_0x3649cc['secret']||config[_0x0a9e('0xa')]['session'];return new BPromise(function(_0x2244d6,_0x1fc70e){_0x5cc8fb(_0x3649cc[_0x0a9e('0x7b')],_0x4b3c1a,_0x3649cc[_0x0a9e('0x7c')])[_0x0a9e('0x39')](function(_0x26d7db){_0x2244d6(_0x26d7db);})['catch'](function(_0x1627a7){_0x1fc70e(_0x1627a7);});});}function verifyJwt(_0x5854cc,_0xca4ade,_0x1f07cb){var _0x51aaf7=BPromise['promisify'](jwt[_0x0a9e('0x7d')],{'context':jwt});var _0x156f1c=_0x1f07cb||config[_0x0a9e('0xa')][_0x0a9e('0xb')];return new BPromise(function(_0x497d91,_0x1d0dc8){_0x51aaf7(_0x5854cc,_0x156f1c,_0xca4ade)[_0x0a9e('0x39')](function(_0x54327c){_0x497d91(_0x54327c);})[_0x0a9e('0x3d')](function(_0x17e88c){_0x1d0dc8(_0x17e88c);});});}function generateNonce(){return crypto[_0x0a9e('0x7e')](0x10)[_0x0a9e('0x7f')](_0x0a9e('0x80'));}function generateIssuedAt(){return Math['floor'](Date[_0x0a9e('0x81')]()/0x3e8)[_0x0a9e('0x7f')]();}function createJwt(_0x281c7d){var _0x47bb43={'payload':{'iat':_0x281c7d[_0x0a9e('0x68')],'nonce':_0x281c7d['apiKeyNonce']},'options':{'algorithm':'HS512','subject':_0x281c7d['id'][_0x0a9e('0x7f')](),'issuer':hardwareConf[_0x0a9e('0x4d')](),'audience':hardwareConf[_0x0a9e('0x4d')]()}};return signJwt(_0x47bb43)[_0x0a9e('0x39')](function(_0x186f39){return{'iat':_0x281c7d[_0x0a9e('0x68')],'nonce':_0x281c7d[_0x0a9e('0x6b')],'token':_0x186f39};});}
\ No newline at end of file
+var _0x9c44=['showWebBar','lastLoginAt','crudPermissions','allowmessenger','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','settingsEnabled','wssPort','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','user','ChatInteraction','findOne','params','then','status','disposition','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','authorization','startsWith','Basic','authenticate','pass','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','User','find','sub','Setting','allowedLoginAttempts','isEqual','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','minutes','use','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','setTokenCookie','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','sign','options','promisify','toString','hex','floor','now','HS512','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','crypto','util','moment','secrets','session','role','name','internal','email','userpic','voicePause','chatPause','faxPause','smsPause'];(function(_0x18b5e8,_0x51e875){var _0x25baed=function(_0x3fcdf9){while(--_0x3fcdf9){_0x18b5e8['push'](_0x18b5e8['shift']());}};_0x25baed(++_0x51e875);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'use strict';var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var hardwareConf=require(_0x49c4('0x0'));var licenseUtil=require(_0x49c4('0x1'));var encryptor=require(_0x49c4('0x2'));var _=require(_0x49c4('0x3'));var jwt=require(_0x49c4('0x4'));var expressJwt=require(_0x49c4('0x5'));var compose=require('composable-middleware');var basicAuth=require('basic-auth');var crypto=require(_0x49c4('0x6'));var BPromise=require('bluebird');var util=require(_0x49c4('0x7'));var moment=require(_0x49c4('0x8'));var validateJwt=expressJwt({'secret':config[_0x49c4('0x9')][_0x49c4('0xa')]});var userAttributes=['id',_0x49c4('0xb'),'fullname',_0x49c4('0xc'),_0x49c4('0xd'),_0x49c4('0xe'),_0x49c4('0xf'),'permissions','md5secret',_0x49c4('0x10'),_0x49c4('0x11'),'mailPause',_0x49c4('0x12'),_0x49c4('0x13'),'openchannelPause','pauseType',_0x49c4('0x14'),_0x49c4('0x15'),'lastPauseAt',_0x49c4('0x16'),_0x49c4('0x17'),'passwordResetAt',_0x49c4('0x18'),_0x49c4('0x19'),_0x49c4('0x1a'),_0x49c4('0x1b'),_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),'phoneBarPrefixRequired',_0x49c4('0x20'),_0x49c4('0x21'),_0x49c4('0x22'),_0x49c4('0x23'),_0x49c4('0x24'),'privacyEnabled',_0x49c4('0x25'),_0x49c4('0x26'),'downloadVoiceRecordings','downloadOmnichannelInteractions',_0x49c4('0x27'),_0x49c4('0x28'),_0x49c4('0x29'),'chatAutoanswer',_0x49c4('0x2a'),'emailAutoanswer',_0x49c4('0x2b'),_0x49c4('0x2c'),_0x49c4('0x2d'),_0x49c4('0x2e'),_0x49c4('0x2f'),_0x49c4('0x30'),_0x49c4('0x31'),_0x49c4('0x32'),_0x49c4('0x33')];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])['use'](function(_0x1c99b1,_0x4f0b62,_0x592bb8){if(_0x1c99b1[_0x49c4('0x34')]){_0x592bb8();}else{return db[_0x49c4('0x35')][_0x49c4('0x36')]({'where':{'id':_0x1c99b1[_0x49c4('0x37')]['id']},'attributes':['id','closed','disposition'],'raw':!![]})[_0x49c4('0x38')](function(_0x9cb797){if(_0x9cb797&&_0x9cb797['closed']){return _0x4f0b62[_0x49c4('0x39')](_0x9cb797[_0x49c4('0x3a')]===_0x49c4('0x3b')?0x195:0x193)[_0x49c4('0x3c')]({'message':_0x9cb797['disposition']==='unmanaged'?_0x49c4('0x3d'):'Forbidden.'});}else{_0x592bb8();}})[_0x49c4('0x3e')](function(_0x3852b2){_0x592bb8(_0x3852b2);});}});};exports[_0x49c4('0x3f')]=function isAuthenticated(_0x372a47){return compose()['use'](function(_0x889909,_0x2b2793,_0x46e04d){var _0x4f28a2;if(_0x889909[_0x49c4('0x40')][_0x49c4('0x41')]){if(_[_0x49c4('0x42')](_0x889909[_0x49c4('0x40')][_0x49c4('0x41')],_0x49c4('0x43'))){var _0x46f7ea=basicAuth(_0x889909);db['User']['find']({'where':{'name':_0x46f7ea['name']}})[_0x49c4('0x38')](function(_0x7ee704){if(!_0x7ee704||!_0x7ee704[_0x49c4('0x44')](_0x46f7ea[_0x49c4('0x45')])){return _0x2b2793[_0x49c4('0x39')](0x191)['json']({'message':_0x49c4('0x46')});}_0x889909[_0x49c4('0x34')]={'id':_0x7ee704['id']};_0x46e04d();})[_0x49c4('0x3e')](function(_0x24bba9){_0x46e04d(_0x24bba9);});}else if(_['startsWith'](_0x889909['headers'][_0x49c4('0x41')],_0x49c4('0x47'))){validateJwt(_0x889909,_0x2b2793,_0x46e04d);}else{if(_0x372a47){_0x46e04d();}else{return _0x2b2793[_0x49c4('0x39')](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x48')});}}}else if(_0x889909['query'][_0x49c4('0x49')]){try{var _0x84c621={'audience':hardwareConf[_0x49c4('0x4a')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x889909['query'][_0x49c4('0x49')],_0x84c621)[_0x49c4('0x38')](function(_0x3bec0a){return db[_0x49c4('0x4b')][_0x49c4('0x4c')]({'where':{'id':_0x3bec0a[_0x49c4('0x4d')]}})[_0x49c4('0x38')](function(_0x27ef5f){_0x4f28a2=_0x27ef5f;return db[_0x49c4('0x4e')]['findOne']({'where':{'id':0x1},'attributes':[_0x49c4('0x4f'),'blockDuration'],'raw':!![]});})[_0x49c4('0x38')](function(_0x349791){if(!_0x4f28a2||!_[_0x49c4('0x50')](_0x4f28a2[_0x49c4('0x51')],_0x3bec0a['nonce'])){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x52')});}if(_0x4f28a2['disabled']){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});}if(_0x4f28a2[_0x49c4('0x54')]){if(_0x349791[_0x49c4('0x55')]>0x0){if(moment(_0x4f28a2[_0x49c4('0x56')])[_0x49c4('0x57')](_0x349791[_0x49c4('0x55')],_0x49c4('0x58'))>moment()){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});}}_0x889909[_0x49c4('0x34')]={'id':_0x4f28a2['id']};_0x46e04d();});})[_0x49c4('0x3e')](function(){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});});}catch(_0x248c0a){_0x46e04d(_0x248c0a);}}else if(_0x372a47){_0x46e04d();}else{return _0x2b2793[_0x49c4('0x39')](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x48')});}})[_0x49c4('0x59')](function(_0x4e38bc,_0x212366,_0x49829e){if(_0x4e38bc[_0x49c4('0x34')]){db[_0x49c4('0x4b')][_0x49c4('0x4c')]({'where':{'id':_0x4e38bc[_0x49c4('0x34')]['id']},'attributes':userAttributes})[_0x49c4('0x38')](function(_0x281b83){if(!_0x281b83){return _0x212366['status'](0x194)['json']({'message':_0x49c4('0x5a')});}_0x4e38bc[_0x49c4('0x34')]=_0x281b83;_0x49829e();})[_0x49c4('0x3e')](function(_0x117151){_0x49829e(_0x117151);});}else if(_0x372a47){_0x49829e();}else{return _0x212366['status'](0x194)[_0x49c4('0x3c')]({'message':_0x49c4('0x5b')});}});};exports[_0x49c4('0x5c')]=function canUpdate(){return compose()[_0x49c4('0x59')](function(_0x81a674,_0x3bde49,_0x1a9593){return licenseUtil[_0x49c4('0x5d')]()[_0x49c4('0x38')](function(_0x5640d3){if(_0x5640d3[_0x49c4('0x5e')]){_0x1a9593();}else{return _0x3bde49['status'](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x5f')});}})[_0x49c4('0x3e')](function(_0x258abe){_0x1a9593(_0x258abe);});});};exports[_0x49c4('0x60')]=function isWebrtcLicence(){return compose()['use'](function(_0x592e8e,_0x15b674,_0x384862){return licenseUtil[_0x49c4('0x5d')]()[_0x49c4('0x38')](function(_0x5d4790){if(_0x5d4790[_0x49c4('0x61')]){_0x384862();}else{return _0x15b674['status'](0x193)[_0x49c4('0x3c')]({'message':'Forbidden'});}})[_0x49c4('0x3e')](function(_0x906d3){_0x384862(_0x906d3);});});};exports[_0x49c4('0x62')]=function(_0x27adfe,_0x2d8087,_0x30bea5){_0x27adfe[_0x49c4('0x62')]=!![];return _0x30bea5();};exports['signToken']=function signToken(_0x3b731f){return signJwt(_0x3b731f);};exports[_0x49c4('0x63')]=function(_0x4a5c34,_0x1e1ac4){if(!_0x4a5c34[_0x49c4('0x34')]){return _0x1e1ac4[_0x49c4('0x39')](0x194)[_0x49c4('0x3c')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x5d8bf0={'payload':{'id':_0x4a5c34[_0x49c4('0x34')]['id'],'role':_0x4a5c34['user'][_0x49c4('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x5d8bf0)[_0x49c4('0x38')](function(_0x3811b2){_0x1e1ac4[_0x49c4('0x64')](_0x49c4('0x65'),_0x3811b2);_0x1e1ac4[_0x49c4('0x66')](_0x49c4('0x67'));})['catch'](function(_0x1f26c2){return _0x1e1ac4[_0x49c4('0x39')](0x1f4)[_0x49c4('0x68')](_0x1f26c2);});};exports[_0x49c4('0x69')]=function(_0x17ef75){if(_[_0x49c4('0x6a')](_0x17ef75[_0x49c4('0x51')])||_[_0x49c4('0x6a')](_0x17ef75[_0x49c4('0x6b')])){return null;}else{return createJwt(_0x17ef75);}};exports[_0x49c4('0x6c')]=function(_0x5b822f){_0x5b822f['apiKeyNonce']=generateNonce();_0x5b822f[_0x49c4('0x6b')]=generateIssuedAt();return createJwt(_0x5b822f);};exports[_0x49c4('0x6d')]=function(_0x527e74,_0x59a8bc){var _0x77163d=_0x527e74['query']['apikey'];if(_0x77163d){var _0x3208c2={'nonce':_0x59a8bc[_0x49c4('0x51')],'iat':_0x59a8bc[_0x49c4('0x6b')],'audience':hardwareConf[_0x49c4('0x4a')](),'issuer':hardwareConf[_0x49c4('0x4a')]()};return verifyJwt(_0x77163d,_0x3208c2)[_0x49c4('0x38')](function(){return generateApiKey(_0x59a8bc);});}else{throw{'message':_0x49c4('0x6e')};}};exports['validatePasswordPattern']=function(_0x859dde){var _0xcc6a2b=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0xcc6a2b[_0x49c4('0x6f')](_0x859dde))throw new db[(_0x49c4('0x70'))][(_0x49c4('0x71'))](_0x49c4('0x72'));return;};exports['validatePasswordHistory']=function(_0x5c7ddd,_0x1ef0c1,_0x155c43){var _0x2a6308=encryptor[_0x49c4('0x73')](_0x1ef0c1)[_0x49c4('0x74')](',');for(var _0x6b2592=0x0;_0x6b2592<_0x155c43;_0x6b2592++){if(!_0x2a6308[_0x6b2592])break;if(_0x5c7ddd[_0x49c4('0x75')]()===_0x2a6308[_0x6b2592]['toLowerCase']()){var _0x45d715=util[_0x49c4('0x76')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x155c43);if(_0x155c43===0x1){_0x45d715=_0x49c4('0x77');}throw new db['Sequelize'][(_0x49c4('0x71'))](_0x45d715);}}return;};exports[_0x49c4('0x78')]=function(_0x9eaa84,_0x2fe89a){var _0x845f7e=_0x2fe89a?encryptor[_0x49c4('0x73')](_0x2fe89a)[_0x49c4('0x74')](','):[];if(_0x845f7e[_0x49c4('0x79')]===0x5){_0x845f7e['splice'](-0x1,0x1);}_0x845f7e[_0x49c4('0x7a')](_0x9eaa84);return encryptor[_0x49c4('0x7b')](_0x845f7e['join'](','));};function signJwt(_0x10dec7){var _0x299e74=BPromise['promisify'](jwt[_0x49c4('0x7c')],{'context':jwt});var _0x42e0e6=_0x10dec7['secret']||config['secrets']['session'];return new BPromise(function(_0x513879,_0xc43386){_0x299e74(_0x10dec7['payload'],_0x42e0e6,_0x10dec7[_0x49c4('0x7d')])[_0x49c4('0x38')](function(_0x515240){_0x513879(_0x515240);})[_0x49c4('0x3e')](function(_0xdb2b33){_0xc43386(_0xdb2b33);});});}function verifyJwt(_0x5ac9f0,_0x34272f,_0x3dcf4c){var _0x167e84=BPromise[_0x49c4('0x7e')](jwt['verify'],{'context':jwt});var _0x431921=_0x3dcf4c||config[_0x49c4('0x9')][_0x49c4('0xa')];return new BPromise(function(_0x20e97d,_0x5d3375){_0x167e84(_0x5ac9f0,_0x431921,_0x34272f)[_0x49c4('0x38')](function(_0x4a93bc){_0x20e97d(_0x4a93bc);})['catch'](function(_0x58259d){_0x5d3375(_0x58259d);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0x49c4('0x7f')](_0x49c4('0x80'));}function generateIssuedAt(){return Math[_0x49c4('0x81')](Date[_0x49c4('0x82')]()/0x3e8)['toString']();}function createJwt(_0x4daa6d){var _0x340523={'payload':{'iat':_0x4daa6d[_0x49c4('0x6b')],'nonce':_0x4daa6d[_0x49c4('0x51')]},'options':{'algorithm':_0x49c4('0x83'),'subject':_0x4daa6d['id'][_0x49c4('0x7f')](),'issuer':hardwareConf[_0x49c4('0x4a')](),'audience':hardwareConf[_0x49c4('0x4a')]()}};return signJwt(_0x340523)[_0x49c4('0x38')](function(_0x4d49e0){return{'iat':_0x4daa6d[_0x49c4('0x6b')],'nonce':_0x4daa6d['apiKeyNonce'],'token':_0x4d49e0};});}
\ No newline at end of file
index 1666323..e4c5116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x24c38e,_0x512304){var _0x5070ed=function(_0x572f4a){while(--_0x572f4a){_0x24c38e['push'](_0x24c38e['shift']());}};_0x5070ed(++_0x512304);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1c1d04,_0x270870){_0x1c1d04=_0x1c1d04-0x0;var _0x6f7e41=_0x5f2f[_0x1c1d04];return _0x6f7e41;};'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
+var _0x2032=['map','findOne','slice','all','length','fieldType','type','./sql-utils','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','search','where','user','ids','tag','countFilteredContacts','count','buildContactsQuery','clause','getFilteredContacts','rows','describe','CmContact','filter','startsWith','cf_'];(function(_0x4ad9c2,_0x4b1132){var _0xe5eb8c=function(_0x4f72c5){while(--_0x4f72c5){_0x4ad9c2['push'](_0x4ad9c2['shift']());}};_0xe5eb8c(++_0x4b1132);}(_0x2032,0xd9));var _0x2203=function(_0x46654e,_0x4a5d33){_0x46654e=_0x46654e-0x0;var _0x89237d=_0x2032[_0x46654e];return _0x89237d;};'use strict';var _=require('lodash');var sqlUtils=require(_0x2203('0x0'));var db=require(_0x2203('0x1'))['db'];exports[_0x2203('0x2')]=function(_0x4c28da,_0x486390,_0x228a29,_0x4b4c7f){var _0x46c49a={'count':0x0,'rows':[]};var _0x880dcd=sqlUtils[_0x2203('0x3')](_0x486390,_0x4c28da);if(_0x880dcd){return Promise[_0x2203('0x4')](_0x46c49a);}var _0x3f7ba1=sqlUtils[_0x2203('0x5')]();var _0x2e0f63={};var _0x2676aa=![];var _0x18c4d6=![];return Promise[_0x2203('0x4')]()[_0x2203('0x6')](function(){if(_0x4c28da['search']){return sqlUtils['parseAdvancedSearchFilter'](_0x4c28da[_0x2203('0x7')],_0x4b4c7f);}else{return sqlUtils['parseQueryParameters'](_0x4c28da,_0x4b4c7f);}})[_0x2203('0x6')](function(_0x2972f3){_0x3f7ba1[_0x2203('0x8')](_0x2972f3['default']);_0x3f7ba1[_0x2203('0x8')](_0x2972f3['fields']);_0x3f7ba1[_0x2203('0x8')](_0x2972f3['filter']);_0x3f7ba1[_0x2203('0x8')](_0x2972f3[_0x2203('0x9')]['clause']);_0x2e0f63=_0x2972f3['tags'];_0x18c4d6=_0x2972f3['user']['skip'];return sqlUtils['checkListsRestrictions'](_0x486390,_0x4c28da,_0x18c4d6);})[_0x2203('0x6')](function(_0x538b30){_0x3f7ba1['where'](_0x538b30);var _0x21a3af=_0x4c28da[_0x2203('0x7')]?_0x2e0f63[_0x2203('0xa')]:_0x4c28da[_0x2203('0xb')];_0x2676aa=_0x21a3af?!![]:![];return sqlUtils[_0x2203('0xc')](_0x3f7ba1,_0x21a3af);})[_0x2203('0x6')](function(_0x2c36e6){_0x46c49a[_0x2203('0xd')]=_0x2c36e6;if(_0x46c49a[_0x2203('0xd')]===0x0){return;}return sqlUtils[_0x2203('0xe')](_0x3f7ba1,_0x4c28da['fields'],_0x228a29,_0x2676aa,_0x2e0f63[_0x2203('0xf')],_0x18c4d6);})[_0x2203('0x6')](function(_0x4893ff){if(!_0x4893ff){return[];}return sqlUtils[_0x2203('0x10')](_0x4893ff,_0x4c28da,_0x228a29);})[_0x2203('0x6')](function(_0x4aeb9f){_0x46c49a[_0x2203('0x11')]=_0x4aeb9f;return _0x46c49a;})['catch'](function(_0x2904ba){throw _0x2904ba;});};exports[_0x2203('0x12')]=function(){var _0x3c8c34={};var _0x3b4034=[];return db[_0x2203('0x13')][_0x2203('0x12')]()['then'](function(_0x13d3f7){_0x3c8c34=_0x13d3f7;var _0x50822b=Object['keys'](_0x3c8c34)[_0x2203('0x14')](function(_0x496d82){return _[_0x2203('0x15')](_0x496d82,_0x2203('0x16'))?_0x496d82:undefined;});var _0x5d4c4e=_0x50822b[_0x2203('0x17')](function(_0x5e29cd){return db['CmCustomField'][_0x2203('0x18')]({'where':{'id':_0x5e29cd[_0x2203('0x19')](0x3)},'raw':!![]});});return Promise[_0x2203('0x1a')](_0x5d4c4e);})[_0x2203('0x6')](function(_0x1244f4){for(var _0x3114ef=0x0;_0x3114ef<_0x1244f4[_0x2203('0x1b')];_0x3114ef++){if(_0x1244f4[_0x3114ef]){var _0x250349='cf_'+_0x1244f4[_0x3114ef]['id'];_0x3c8c34[_0x250349][_0x2203('0x1c')]=_0x1244f4[_0x3114ef][_0x2203('0x1d')];}}_0x3b4034=_[_0x2203('0x17')](Object['keys'](_0x3c8c34),function(_0xb2071b){return{'name':_0xb2071b,'type':_0x3c8c34[_0xb2071b][_0x2203('0x1d')]};});return _0x3b4034;})['catch'](function(_0xd6e109){throw _0xd6e109;});};
\ No newline at end of file
index 5458cd2..f182b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7081=['deletedAt','includes','push','forEach','TagIds','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','datetime','castTo','DATE','buildExpression','default','text','value','end','split','map','tags','clause','and','User','user','skip','keys','compact','Contact','c.ListId\x20IN\x20?','concat','resolve','then','fields','tag','filter','role','getLists','c.ListId\x20IS\x20NULL','select','c.id','limit','offset','group','subqry.id','having','order','DESC','subqry.','Tag','color','keyBy','Sequelize','QueryTypes','CmContact','query','toString','Tags','isEmpty','where','t.id\x20IN\x20?','SELECT','sequelize','COUNT(*)','exports','squel','../parsers/qs','../interaction/utils','../../mysqldb','agent','search','ListId','autocomplete','true','from','cm_contacts','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','fax','email','CompanyId','createdAt'];(function(_0x1e95d6,_0x1d3723){var _0x182b24=function(_0x4c4d52){while(--_0x4c4d52){_0x1e95d6['push'](_0x1e95d6['shift']());}};_0x182b24(++_0x1d3723);}(_0x7081,0x123));var _0x1708=function(_0x209581,_0x11f596){_0x209581=_0x209581-0x0;var _0x2fed45=_0x7081[_0x209581];return _0x2fed45;};'use strict';var _=require('lodash');var squel=require(_0x1708('0x0'));var as=require('../parsers/advancedSearch');var qs=require(_0x1708('0x1'));var utils=require(_0x1708('0x2'));var db=require(_0x1708('0x3'))['db'];function skipContactsQuery(_0x38ca1a,_0x182185){var _0x43db43=![];if(_0x38ca1a['role']===_0x1708('0x4')&&!_0x182185[_0x1708('0x5')]&&!_0x182185[_0x1708('0x6')]&&_0x182185[_0x1708('0x7')]!==_0x1708('0x8')){_0x43db43=!![];}return _0x43db43;}function getContactsSubquery(){return squel['select']()[_0x1708('0x9')](_0x1708('0xa'),'c')['where'](_0x1708('0xb'));}function applyJoinClauses(_0x4a5702,_0x14c159){var _0x2ff341=_0x14c159?'c':_0x1708('0xc');_0x4a5702[_0x1708('0xd')](_0x1708('0xe'),'uc','uc.CmContactId\x20=\x20'+_0x2ff341+_0x1708('0xf'))[_0x1708('0xd')](_0x1708('0x10'),'ct',_0x1708('0x11')+_0x2ff341+_0x1708('0xf'))[_0x1708('0xd')]('tools_tags','t',_0x1708('0x12'));return _0x4a5702;}function addFieldsToQuery(_0x1e7b8b,_0x546ed4,_0x37973f,_0x1eb633,_0x41365a){var _0x2cb697=_0x41365a?'c':_0x1708('0xc');if(!_0x546ed4){_0x546ed4=['id',_0x1708('0x13'),_0x1708('0x14'),_0x1708('0x15'),_0x1708('0x16'),_0x1708('0x17'),_0x1708('0x18'),'ListId',_0x1708('0x19'),_0x1708('0x1a'),'updatedAt',_0x1708('0x1b'),'TagIds'];}else if(!_0x546ed4[_0x1708('0x1c')]('id')){_0x546ed4[_0x1708('0x1d')]('id');}var _0x1f0e1a=_0x37973f&&_0x41365a||!_0x37973f&&!_0x41365a;if(_0x1eb633){_0x1f0e1a=_0x1eb633&&_0x41365a||!_0x1eb633&&!_0x41365a;}_0x546ed4[_0x1708('0x1e')](function(_0x57bbad){if(_0x57bbad===_0x1708('0x1f')){if(_0x1f0e1a){_0x1e7b8b[_0x1708('0x20')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x57bbad);}else if(_0x37973f||_0x1eb633){_0x1e7b8b['field'](_0x2cb697+'.'+_0x57bbad);}}else{_0x1e7b8b[_0x1708('0x20')](_0x2cb697+'.'+_0x57bbad);}});return _0x1e7b8b;}function getSqlClauses(){var _0x1f9791={'default':squel[_0x1708('0x21')](),'fields':squel[_0x1708('0x21')](),'filter':squel[_0x1708('0x21')](),'tags':{'clause':squel[_0x1708('0x21')](),'ids':null},'user':{'clause':squel[_0x1708('0x21')](),'skip':![]}};return _0x1f9791;}function parseTagParameter(_0x1f4f4a){var _0xe9e863=squel[_0x1708('0x21')]();if(_0x1f4f4a){var _0x5baba4=utils[_0x1708('0x22')](_0x1f4f4a);_0x5baba4['forEach'](function(_0x909de4){_0xe9e863['or'](_0x1708('0x23'),'%,'+_0x909de4+',%');});}return _0xe9e863;}function parseSearchFilter(_0xd758e9){var _0x4093c8=squel[_0x1708('0x21')]();if(_0xd758e9){var _0x325219=_0xd758e9['replace']('\x5c','\x5c\x5c')[_0x1708('0x24')](/'/g,'\x27\x27');if(_0x325219['split']('\x20')[_0x1708('0x25')]>0x1){_0x4093c8['or'](_0x1708('0x26'),qs[_0x1708('0x27')](_0x325219),null);}else{if(qs[_0x1708('0x28')](_0x325219)){_0x4093c8['or']('c.id\x20LIKE\x20?',_0x325219+'%');_0x4093c8['or'](_0x1708('0x29'),_0x325219+'%');_0x4093c8['or']('c.mobile\x20LIKE\x20?',_0x325219+'%');_0x4093c8['or']('c.fax\x20LIKE\x20?',_0x325219+'%');}else if(qs[_0x1708('0x2a')](_0x325219)){_0x4093c8['or'](_0x1708('0x2b'),_0x325219+'%');}else{_0x4093c8['or'](_0x1708('0x2c'),'%'+_0x325219+'%');_0x4093c8['or'](_0x1708('0x2d'),'%'+_0x325219+'%');_0x4093c8['or']('c.email\x20LIKE\x20?','%'+_0x325219+'%');}}}return _0x4093c8;}function parseAdvancedSearchFilter(_0x2cb855,_0xdd47d8){var _0x1ad5f9=getSqlClauses();var _0x17b1a3=as[_0x1708('0x2e')](_0x2cb855);var _0x2d5916=_0x17b1a3['sqlOperator'];for(var _0x4c575e=0x0;_0x4c575e<_0x17b1a3[_0x1708('0x2f')][_0x1708('0x25')];_0x4c575e++){var _0x571127=_0x17b1a3[_0x1708('0x2f')][_0x4c575e];var _0x2771a9='c';var _0x251765=_[_0x1708('0x30')](_0xdd47d8,[_0x1708('0x31'),_0x571127['field']]);if(_0x251765){if(_0x571127[_0x1708('0x20')]===_0x1708('0x32')||_0x251765['fieldType']===_0x1708('0x33')){_0x571127[_0x1708('0x34')]=_0x1708('0x35');}var _0xee1c42=as[_0x1708('0x36')](_0x2771a9,_0x251765['type'],_0x571127);_0x1ad5f9[_0x1708('0x37')][_0x2d5916](_0xee1c42[_0x1708('0x38')],_0xee1c42[_0x1708('0x39')]['start'],_0xee1c42['value'][_0x1708('0x3a')]);}else{if(_0x571127[_0x1708('0x20')]==='Tag'){var _0x4f748f=_0x571127[_0x1708('0x39')][_0x1708('0x3b')](',')[_0x1708('0x3c')](function(_0x42ad58){return Number(_0x42ad58);});var _0x3f2e1a=parseTagParameter(_0x4f748f);_0x1ad5f9[_0x1708('0x3d')][_0x1708('0x3e')][_0x1708('0x3f')](_0x3f2e1a);_0x1ad5f9[_0x1708('0x3d')]['ids']=_0x4f748f;}else if(_0x571127[_0x1708('0x20')]===_0x1708('0x40')){_0x1ad5f9['user'][_0x1708('0x3e')][_0x1708('0x3f')]('uc.UserId\x20=\x20?',_0x571127[_0x1708('0x39')]);_0x1ad5f9[_0x1708('0x41')][_0x1708('0x42')]=!![];}}}return _0x1ad5f9;}function parseModelFields(_0x88cfde,_0x10bed4){var _0x5e90d9=squel[_0x1708('0x21')]();var _0x1bee8e=_(_0x88cfde)[_0x1708('0x43')]()[_0x1708('0x3c')](function(_0x1ca14b){return _['some'](_0x10bed4,[_0x1708('0x31'),_0x1ca14b])?_0x1ca14b:undefined;})[_0x1708('0x44')]()[_0x1708('0x39')]();if(_0x88cfde[_0x1708('0x45')]){_0x1bee8e[_0x1708('0x1d')](_0x1708('0x45'));}if(_0x1bee8e[_0x1708('0x25')]>0x0){_0x1bee8e[_0x1708('0x1e')](function(_0x46788f){if(_0x46788f===_0x1708('0x6')){_0x5e90d9[_0x1708('0x3f')](_0x1708('0x46'),[][_0x1708('0x47')](_0x88cfde[_0x46788f]));}else if(_0x46788f===_0x1708('0x45')){var _0x2d6015='%'+_0x88cfde[_0x46788f]+'%';_0x5e90d9[_0x1708('0x3f')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x2d6015);}else{_0x5e90d9[_0x1708('0x3f')]('c.'+_0x46788f+'\x20=\x20?',_0x88cfde[_0x46788f]);}});}return _0x5e90d9;}function parseQueryParameters(_0x37c488,_0x17316c){var _0x37189a=getSqlClauses();return Promise[_0x1708('0x48')]()[_0x1708('0x49')](function(){return parseModelFields(_0x37c488,_0x17316c);})[_0x1708('0x49')](function(_0x10f47b){_0x37189a[_0x1708('0x4a')][_0x1708('0x3f')](_0x10f47b);return parseTagParameter(_0x37c488[_0x1708('0x4b')]);})[_0x1708('0x49')](function(_0x6b44a8){_0x37189a[_0x1708('0x3d')][_0x1708('0x3e')]['and'](_0x6b44a8);return parseSearchFilter(_0x37c488[_0x1708('0x4c')]);})['then'](function(_0x6e907a){_0x37189a['filter']=_0x6e907a;return _0x37189a;});}function checkListsRestrictions(_0x3993ee,_0x5a4982,_0x17daaa){var _0x1abbdf=squel[_0x1708('0x21')]();return Promise[_0x1708('0x48')]()[_0x1708('0x49')](function(){if(_0x5a4982[_0x1708('0x5')]&&_0x3993ee[_0x1708('0x4d')]==='agent'&&!_0x17daaa){return _0x3993ee[_0x1708('0x4e')]({'attributes':['id'],'raw':!![]});}})[_0x1708('0x49')](function(_0x38b0eb){if(_0x38b0eb){if(_0x38b0eb[_0x1708('0x25')]===0x0){_0x1abbdf[_0x1708('0x3f')](_0x1708('0x4f'));}else{_0x1abbdf[_0x1708('0x3f')](_0x1708('0x46'),_[_0x1708('0x3c')](_0x38b0eb,'id'));}}})[_0x1708('0x49')](function(){return _0x1abbdf;});}function buildContactsQuery(_0x56c836,_0x5f077d,_0x310044,_0x4c6d0b,_0x5b5e3f,_0x2d3e4c){if(_0x5f077d){_0x5f077d=_0x310044['attributes'];}_0x56c836=addFieldsToQuery(_0x56c836,_0x5f077d,_0x4c6d0b,_0x2d3e4c,!![]);var _0x2fa9e7=squel[_0x1708('0x50')]();_0x2fa9e7=addFieldsToQuery(_0x2fa9e7,_0x5f077d,_0x4c6d0b,_0x2d3e4c,![]);if(_0x4c6d0b||_0x2d3e4c){_0x56c836=applyJoinClauses(_0x56c836,!![]);_0x56c836['group'](_0x1708('0x51'));if(_0x310044[_0x1708('0x52')]){_0x2fa9e7['limit'](_0x310044['limit']);}if(_0x310044[_0x1708('0x53')]){_0x2fa9e7['offset'](_0x310044[_0x1708('0x53')]);}}else{_0x2fa9e7=applyJoinClauses(_0x2fa9e7,![]);_0x2fa9e7[_0x1708('0x54')](_0x1708('0x55'));if(_0x310044['limit']){_0x56c836[_0x1708('0x52')](_0x310044['limit']);}if(_0x310044[_0x1708('0x53')]){_0x56c836['offset'](_0x310044[_0x1708('0x53')]);}}_0x2fa9e7[_0x1708('0x56')](_0x5b5e3f);if(_0x310044[_0x1708('0x57')]){_0x310044['order'][_0x1708('0x1e')](function(_0x3ae9c6){_0x56c836[_0x1708('0x57')]('c.'+_0x3ae9c6[0x0],_0x3ae9c6[0x1]===_0x1708('0x58')?![]:!![]);_0x2fa9e7[_0x1708('0x57')](_0x1708('0x59')+_0x3ae9c6[0x0],_0x3ae9c6[0x1]===_0x1708('0x58')?![]:!![]);});}_0x2fa9e7['from'](_0x56c836,_0x1708('0xc'));return _0x2fa9e7;}function getFilteredContacts(_0x486171){var _0x2d298f=[];return db[_0x1708('0x5a')]['findAll']({'attributes':['id',_0x1708('0x31'),_0x1708('0x5b')],'raw':!![]})[_0x1708('0x49')](function(_0x1e99be){_0x2d298f=_[_0x1708('0x5c')](_0x1e99be,'id');var _0x1db548={'type':db[_0x1708('0x5d')][_0x1708('0x5e')]['SELECT'],'model':db[_0x1708('0x5f')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0x1708('0x60')](_0x486171[_0x1708('0x61')](),_0x1db548);})[_0x1708('0x49')](function(_0xcf3bb5){_0xcf3bb5[_0x1708('0x1e')](function(_0x214c92){if(_0x214c92[_0x1708('0x1f')]){_0x214c92[_0x1708('0x62')]=[];_0x214c92[_0x1708('0x1f')][_0x1708('0x3b')](',')[_0x1708('0x1e')](function(_0x3009f6){_0x214c92['Tags'][_0x1708('0x1d')](_0x2d298f[_0x3009f6]);});}delete _0x214c92[_0x1708('0x1f')];});return _0xcf3bb5;});}function countFilteredContacts(_0x55f397,_0x467a09){var _0x441ff6=_0x55f397['clone']();_0x441ff6['field']('COUNT(*)');_0x441ff6=applyJoinClauses(_0x441ff6,!![]);_0x55f397[_0x1708('0x54')](_0x1708('0x51'));var _0x6b787a=utils['getSelectedTags'](_0x467a09);if(!_[_0x1708('0x63')](_0x6b787a)){_0x441ff6[_0x1708('0x64')](_0x1708('0x65'),_0x6b787a);}var _0x5460e9={'type':db['Sequelize'][_0x1708('0x5e')][_0x1708('0x66')],'raw':!![]};return db[_0x1708('0x67')]['query'](_0x441ff6[_0x1708('0x61')](),_0x5460e9)['then'](function(_0x19e722){return _0x19e722[0x0][_0x1708('0x68')];});}module[_0x1708('0x69')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0xde28=['fax','email','CompanyId','createdAt','updatedAt','deletedAt','forEach','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','parseSearch','conditions','length','find','dateOfBirth','fieldType','datetime','castTo','DATE','buildExpression','type','default','value','start','end','map','tags','clause','ids','User','user','uc.UserId\x20=\x20?','skip','some','Contact','push','c.ListId\x20IN\x20?','concat','and','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','role','c.ListId\x20IS\x20NULL','attributes','group','limit','offset','subqry.id','having','order','DESC','subqry.','Tag','findAll','name','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','Tags','COUNT(*)','isEmpty','t.id\x20IN\x20?','sequelize','toString','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','agent','ListId','autocomplete','true','select','from','cm_contacts','where','subqry','.id','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','lastName','phone'];(function(_0xb1e42f,_0x321a3f){var _0x513359=function(_0x2cf4a2){while(--_0x2cf4a2){_0xb1e42f['push'](_0xb1e42f['shift']());}};_0x513359(++_0x321a3f);}(_0xde28,0xc4));var _0x8de2=function(_0xb347b9,_0x3c4105){_0xb347b9=_0xb347b9-0x0;var _0x40091b=_0xde28[_0xb347b9];return _0x40091b;};'use strict';var _=require(_0x8de2('0x0'));var squel=require(_0x8de2('0x1'));var as=require(_0x8de2('0x2'));var qs=require(_0x8de2('0x3'));var utils=require(_0x8de2('0x4'));var db=require(_0x8de2('0x5'))['db'];function skipContactsQuery(_0x4601e8,_0x256ba2){var _0x1379e8=![];if(_0x4601e8['role']===_0x8de2('0x6')&&!_0x256ba2['search']&&!_0x256ba2[_0x8de2('0x7')]&&_0x256ba2[_0x8de2('0x8')]!==_0x8de2('0x9')){_0x1379e8=!![];}return _0x1379e8;}function getContactsSubquery(){return squel[_0x8de2('0xa')]()[_0x8de2('0xb')](_0x8de2('0xc'),'c')[_0x8de2('0xd')]('c.deletedAt\x20IS\x20NULL');}function applyJoinClauses(_0x12141f,_0x164c63){var _0x7038ee=_0x164c63?'c':_0x8de2('0xe');_0x12141f['left_join']('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20'+_0x7038ee+_0x8de2('0xf'))[_0x8de2('0x10')](_0x8de2('0x11'),'ct',_0x8de2('0x12')+_0x7038ee+'.id')[_0x8de2('0x10')](_0x8de2('0x13'),'t',_0x8de2('0x14'));return _0x12141f;}function addFieldsToQuery(_0x4b27e4,_0x387200,_0x123afd,_0x473811,_0xdec70b){var _0x601c7f=_0xdec70b?'c':_0x8de2('0xe');if(!_0x387200){_0x387200=['id',_0x8de2('0x15'),_0x8de2('0x16'),_0x8de2('0x17'),'mobile',_0x8de2('0x18'),_0x8de2('0x19'),_0x8de2('0x7'),_0x8de2('0x1a'),_0x8de2('0x1b'),_0x8de2('0x1c'),_0x8de2('0x1d'),'TagIds'];}else if(!_0x387200['includes']('id')){_0x387200['push']('id');}var _0x18c500=_0x123afd&&_0xdec70b||!_0x123afd&&!_0xdec70b;if(_0x473811){_0x18c500=_0x473811&&_0xdec70b||!_0x473811&&!_0xdec70b;}_0x387200[_0x8de2('0x1e')](function(_0xc998c6){if(_0xc998c6===_0x8de2('0x1f')){if(_0x18c500){_0x4b27e4[_0x8de2('0x20')](_0x8de2('0x21'),_0xc998c6);}else if(_0x123afd||_0x473811){_0x4b27e4[_0x8de2('0x20')](_0x601c7f+'.'+_0xc998c6);}}else{_0x4b27e4['field'](_0x601c7f+'.'+_0xc998c6);}});return _0x4b27e4;}function getSqlClauses(){var _0xf5f170={'default':squel['expr'](),'fields':squel[_0x8de2('0x22')](),'filter':squel[_0x8de2('0x22')](),'tags':{'clause':squel[_0x8de2('0x22')](),'ids':null},'user':{'clause':squel[_0x8de2('0x22')](),'skip':![]}};return _0xf5f170;}function parseTagParameter(_0x5125f1){var _0x333f94=squel[_0x8de2('0x22')]();if(_0x5125f1){var _0x1301a1=utils[_0x8de2('0x23')](_0x5125f1);_0x1301a1[_0x8de2('0x1e')](function(_0x1bdb9e){_0x333f94['or'](_0x8de2('0x24'),'%,'+_0x1bdb9e+',%');});}return _0x333f94;}function parseSearchFilter(_0x50d56c){var _0x328e6c=squel[_0x8de2('0x22')]();if(_0x50d56c){var _0x37bb5c=_0x50d56c['replace']('\x5c','\x5c\x5c')[_0x8de2('0x25')](/'/g,'\x27\x27');if(_0x37bb5c[_0x8de2('0x26')]('\x20')['length']>0x1){_0x328e6c['or'](_0x8de2('0x27'),qs[_0x8de2('0x28')](_0x37bb5c),null);}else{if(qs[_0x8de2('0x29')](_0x37bb5c)){_0x328e6c['or']('c.id\x20LIKE\x20?',_0x37bb5c+'%');_0x328e6c['or'](_0x8de2('0x2a'),_0x37bb5c+'%');_0x328e6c['or']('c.mobile\x20LIKE\x20?',_0x37bb5c+'%');_0x328e6c['or'](_0x8de2('0x2b'),_0x37bb5c+'%');}else if(qs[_0x8de2('0x2c')](_0x37bb5c)){_0x328e6c['or']('c.email\x20LIKE\x20?',_0x37bb5c+'%');}else{_0x328e6c['or']('c.firstName\x20LIKE\x20?','%'+_0x37bb5c+'%');_0x328e6c['or'](_0x8de2('0x2d'),'%'+_0x37bb5c+'%');_0x328e6c['or'](_0x8de2('0x2e'),'%'+_0x37bb5c+'%');}}}return _0x328e6c;}function parseAdvancedSearchFilter(_0x490863,_0x284e11){var _0x36f08a=getSqlClauses();var _0x485830=as[_0x8de2('0x2f')](_0x490863);var _0x4e33d8=_0x485830['sqlOperator'];for(var _0x3190d1=0x0;_0x3190d1<_0x485830[_0x8de2('0x30')][_0x8de2('0x31')];_0x3190d1++){var _0x45affa=_0x485830[_0x8de2('0x30')][_0x3190d1];var _0x5811b4='c';var _0x508004=_[_0x8de2('0x32')](_0x284e11,['name',_0x45affa['field']]);if(_0x508004){if(_0x45affa[_0x8de2('0x20')]===_0x8de2('0x33')||_0x508004[_0x8de2('0x34')]===_0x8de2('0x35')){_0x45affa[_0x8de2('0x36')]=_0x8de2('0x37');}var _0x5cf342=as[_0x8de2('0x38')](_0x5811b4,_0x508004[_0x8de2('0x39')],_0x45affa);_0x36f08a[_0x8de2('0x3a')][_0x4e33d8](_0x5cf342['text'],_0x5cf342[_0x8de2('0x3b')][_0x8de2('0x3c')],_0x5cf342['value'][_0x8de2('0x3d')]);}else{if(_0x45affa[_0x8de2('0x20')]==='Tag'){var _0x4fbc63=_0x45affa['value']['split'](',')[_0x8de2('0x3e')](function(_0x4fca6d){return Number(_0x4fca6d);});var _0x23defe=parseTagParameter(_0x4fbc63);_0x36f08a[_0x8de2('0x3f')][_0x8de2('0x40')]['and'](_0x23defe);_0x36f08a[_0x8de2('0x3f')][_0x8de2('0x41')]=_0x4fbc63;}else if(_0x45affa[_0x8de2('0x20')]===_0x8de2('0x42')){_0x36f08a[_0x8de2('0x43')][_0x8de2('0x40')]['and'](_0x8de2('0x44'),_0x45affa[_0x8de2('0x3b')]);_0x36f08a[_0x8de2('0x43')][_0x8de2('0x45')]=!![];}}}return _0x36f08a;}function parseModelFields(_0x2686b5,_0x53ff2b){var _0x3ad0bb=squel[_0x8de2('0x22')]();var _0x4c9300=_(_0x2686b5)['keys']()['map'](function(_0x5887c0){return _[_0x8de2('0x46')](_0x53ff2b,['name',_0x5887c0])?_0x5887c0:undefined;})['compact']()[_0x8de2('0x3b')]();if(_0x2686b5[_0x8de2('0x47')]){_0x4c9300[_0x8de2('0x48')]('Contact');}if(_0x4c9300[_0x8de2('0x31')]>0x0){_0x4c9300['forEach'](function(_0x387599){if(_0x387599==='ListId'){_0x3ad0bb['and'](_0x8de2('0x49'),[][_0x8de2('0x4a')](_0x2686b5[_0x387599]));}else if(_0x387599===_0x8de2('0x47')){var _0x23b1c0='%'+_0x2686b5[_0x387599]+'%';_0x3ad0bb[_0x8de2('0x4b')](_0x8de2('0x4c'),_0x23b1c0);}else{_0x3ad0bb[_0x8de2('0x4b')]('c.'+_0x387599+_0x8de2('0x4d'),_0x2686b5[_0x387599]);}});}return _0x3ad0bb;}function parseQueryParameters(_0x54c21f,_0x20c71c){var _0x1c73a1=getSqlClauses();return Promise[_0x8de2('0x4e')]()[_0x8de2('0x4f')](function(){return parseModelFields(_0x54c21f,_0x20c71c);})[_0x8de2('0x4f')](function(_0x561d19){_0x1c73a1[_0x8de2('0x50')][_0x8de2('0x4b')](_0x561d19);return parseTagParameter(_0x54c21f[_0x8de2('0x51')]);})[_0x8de2('0x4f')](function(_0x36db10){_0x1c73a1[_0x8de2('0x3f')][_0x8de2('0x40')][_0x8de2('0x4b')](_0x36db10);return parseSearchFilter(_0x54c21f[_0x8de2('0x52')]);})[_0x8de2('0x4f')](function(_0x5a4a95){_0x1c73a1[_0x8de2('0x52')]=_0x5a4a95;return _0x1c73a1;});}function checkListsRestrictions(_0x18706a,_0x4e9603,_0x4de835){var _0xb235e4=squel['expr']();return Promise[_0x8de2('0x4e')]()[_0x8de2('0x4f')](function(){if(_0x4e9603['search']&&_0x18706a[_0x8de2('0x53')]==='agent'&&!_0x4de835){return _0x18706a['getLists']({'attributes':['id'],'raw':!![]});}})[_0x8de2('0x4f')](function(_0x47457e){if(_0x47457e){if(_0x47457e[_0x8de2('0x31')]===0x0){_0xb235e4['and'](_0x8de2('0x54'));}else{_0xb235e4[_0x8de2('0x4b')](_0x8de2('0x49'),_[_0x8de2('0x3e')](_0x47457e,'id'));}}})[_0x8de2('0x4f')](function(){return _0xb235e4;});}function buildContactsQuery(_0x41c52a,_0x5193c3,_0x3bfcf5,_0x31977d,_0x35a78c,_0x136639){if(_0x5193c3){_0x5193c3=_0x3bfcf5[_0x8de2('0x55')];}_0x41c52a=addFieldsToQuery(_0x41c52a,_0x5193c3,_0x31977d,_0x136639,!![]);var _0x9d9dda=squel['select']();_0x9d9dda=addFieldsToQuery(_0x9d9dda,_0x5193c3,_0x31977d,_0x136639,![]);if(_0x31977d||_0x136639){_0x41c52a=applyJoinClauses(_0x41c52a,!![]);_0x41c52a[_0x8de2('0x56')]('c.id');if(_0x3bfcf5[_0x8de2('0x57')]){_0x9d9dda['limit'](_0x3bfcf5[_0x8de2('0x57')]);}if(_0x3bfcf5[_0x8de2('0x58')]){_0x9d9dda['offset'](_0x3bfcf5[_0x8de2('0x58')]);}}else{_0x9d9dda=applyJoinClauses(_0x9d9dda,![]);_0x9d9dda[_0x8de2('0x56')](_0x8de2('0x59'));if(_0x3bfcf5['limit']){_0x41c52a[_0x8de2('0x57')](_0x3bfcf5['limit']);}if(_0x3bfcf5[_0x8de2('0x58')]){_0x41c52a[_0x8de2('0x58')](_0x3bfcf5[_0x8de2('0x58')]);}}_0x9d9dda[_0x8de2('0x5a')](_0x35a78c);if(_0x3bfcf5[_0x8de2('0x5b')]){_0x3bfcf5[_0x8de2('0x5b')][_0x8de2('0x1e')](function(_0x15ad1c){_0x41c52a[_0x8de2('0x5b')]('c.'+_0x15ad1c[0x0],_0x15ad1c[0x1]===_0x8de2('0x5c')?![]:!![]);_0x9d9dda[_0x8de2('0x5b')](_0x8de2('0x5d')+_0x15ad1c[0x0],_0x15ad1c[0x1]==='DESC'?![]:!![]);});}_0x9d9dda[_0x8de2('0xb')](_0x41c52a,_0x8de2('0xe'));return _0x9d9dda;}function getFilteredContacts(_0x271586){var _0x4d778b=[];return db[_0x8de2('0x5e')][_0x8de2('0x5f')]({'attributes':['id',_0x8de2('0x60'),_0x8de2('0x61')],'raw':!![]})[_0x8de2('0x4f')](function(_0x33cf81){_0x4d778b=_[_0x8de2('0x62')](_0x33cf81,'id');var _0x45df00={'type':db[_0x8de2('0x63')][_0x8de2('0x64')][_0x8de2('0x65')],'model':db[_0x8de2('0x66')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize']['query'](_0x271586['toString'](),_0x45df00);})['then'](function(_0x3851c5){_0x3851c5[_0x8de2('0x1e')](function(_0x3d55c5){if(_0x3d55c5[_0x8de2('0x1f')]){_0x3d55c5[_0x8de2('0x67')]=[];_0x3d55c5[_0x8de2('0x1f')]['split'](',')['forEach'](function(_0x27bc73){_0x3d55c5[_0x8de2('0x67')][_0x8de2('0x48')](_0x4d778b[_0x27bc73]);});}delete _0x3d55c5[_0x8de2('0x1f')];});return _0x3851c5;});}function countFilteredContacts(_0x4c4494,_0x4f4f20){var _0x393f2=_0x4c4494['clone']();_0x393f2[_0x8de2('0x20')](_0x8de2('0x68'));_0x393f2=applyJoinClauses(_0x393f2,!![]);_0x4c4494[_0x8de2('0x56')]('c.id');var _0x5a8c01=utils['getSelectedTags'](_0x4f4f20);if(!_[_0x8de2('0x69')](_0x5a8c01)){_0x393f2[_0x8de2('0xd')](_0x8de2('0x6a'),_0x5a8c01);}var _0x129933={'type':db['Sequelize'][_0x8de2('0x64')][_0x8de2('0x65')],'raw':!![]};return db[_0x8de2('0x6b')]['query'](_0x393f2[_0x8de2('0x6c')](),_0x129933)[_0x8de2('0x4f')](function(_0x49eb83){return _0x49eb83[0x0][_0x8de2('0x68')];});}module[_0x8de2('0x6d')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 2e1e686..7cab8ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35fb=['base64','decryptString','utf8','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','session','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createReadStream','createWriteStream','createCipher','data','binary','write','final','end','close','unlink','decryptFile','createDecipher','update','encryptString'];(function(_0x3c2666,_0x15fd23){var _0x10c814=function(_0x4660c0){while(--_0x4660c0){_0x3c2666['push'](_0x3c2666['shift']());}};_0x10c814(++_0x15fd23);}(_0x35fb,0x69));var _0xb35f=function(_0x3a2118,_0x31fc3c){_0x3a2118=_0x3a2118-0x0;var _0x1d181d=_0x35fb[_0x3a2118];return _0x1d181d;};'use strict';var crypto=require(_0xb35f('0x0'));var fs=require('fs');var BPromise=require(_0xb35f('0x1'));var _=require(_0xb35f('0x2'));var config=require(_0xb35f('0x3'));var logger=require(_0xb35f('0x4'))(_0xb35f('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xb35f('0x6')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0xb35f('0x7')};if(config['encrypt']&&config[_0xb35f('0x8')][_0xb35f('0x9')]){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0xb35f('0x9')]=config[_0xb35f('0x8')][_0xb35f('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xb35f('0xa')](',\x20');logger['error'](config[_0xb35f('0x8')][_0xb35f('0x9')],_0xb35f('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x3cb2a4){return AES_SUPPORTED_RX[_0xb35f('0xc')](_0x3cb2a4);}function getSupportedCiphers(){return crypto[_0xb35f('0xd')]()[_0xb35f('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x458d22){return getSupportedCiphers()[_0xb35f('0xf')](_0x458d22)>-0x1;}function combineOptions(_0xdc8be0){var _0x14453d={};for(var _0x220475 in fileOptions){if(fileOptions[_0xb35f('0x10')](_0x220475)){_0x14453d[_0x220475]=fileOptions[_0x220475];}}if(_0xdc8be0){for(var _0x4030f6 in _0xdc8be0){if(_0xdc8be0[_0xb35f('0x10')](_0x4030f6)){_0x14453d[_0x4030f6]=_0xdc8be0[_0x4030f6];}}}return _0x14453d;}exports['encryptFile']=function(_0x4e95ef,_0x4132f7,_0x93bd0a,_0x45581e){return new BPromise(function(_0xd49a4f,_0x397bd2){_0x45581e=combineOptions(_0x45581e);var _0x55afb5=new Buffer(_0x93bd0a);var _0x335a9c=fs[_0xb35f('0x11')](_0x4e95ef);var _0x2efbd3=fs[_0xb35f('0x12')](_0x4132f7);var _0x476c44=crypto[_0xb35f('0x13')](_0x45581e[_0xb35f('0x9')],_0x55afb5);_0x335a9c['on'](_0xb35f('0x14'),function(_0x8d55af){var _0xb9ed6a=new Buffer(_0x476c44['update'](_0x8d55af),_0xb35f('0x15'));_0x2efbd3[_0xb35f('0x16')](_0xb9ed6a);});_0x335a9c['on']('end',function(){try{var _0x2945bf=new Buffer(_0x476c44[_0xb35f('0x17')](_0xb35f('0x15')),_0xb35f('0x15'));_0x2efbd3[_0xb35f('0x16')](_0x2945bf);_0x2efbd3[_0xb35f('0x18')]();_0x2efbd3['on'](_0xb35f('0x19'),function(){return _0xd49a4f(_0x4132f7);});}catch(_0x19955e){fs[_0xb35f('0x1a')](_0x4132f7);return _0x397bd2(_0x19955e);}});});};exports[_0xb35f('0x1b')]=function(_0x4f1e95,_0x5e41fa,_0x26a945,_0x5182f4){return new BPromise(function(_0x16ab77,_0x291cb2){_0x5182f4=combineOptions(_0x5182f4);var _0x9eeb1f=new Buffer(_0x26a945);var _0x5c7b3a=fs['createReadStream'](_0x4f1e95);var _0x2b17fc=fs[_0xb35f('0x12')](_0x5e41fa);var _0x4efeba=crypto[_0xb35f('0x1c')](_0x5182f4[_0xb35f('0x9')],_0x9eeb1f);_0x5c7b3a['on'](_0xb35f('0x14'),function(_0x537f70){var _0x5f0afc=new Buffer(_0x4efeba[_0xb35f('0x1d')](_0x537f70),'binary');_0x2b17fc[_0xb35f('0x16')](_0x5f0afc);});_0x5c7b3a['on']('end',function(){try{var _0x1b5df8=new Buffer(_0x4efeba[_0xb35f('0x17')](_0xb35f('0x15')),_0xb35f('0x15'));_0x2b17fc[_0xb35f('0x16')](_0x1b5df8);_0x2b17fc[_0xb35f('0x18')]();_0x2b17fc['on'](_0xb35f('0x19'),function(){return _0x16ab77(_0x5e41fa);});}catch(_0x108ec5){fs[_0xb35f('0x1a')](_0x5e41fa);return _0x291cb2(_0x108ec5);}});});};exports[_0xb35f('0x1e')]=function(_0x54a69e,_0x5d0877,_0x3d997b){var _0x4d1d92=_0x3d997b||stringOptions[_0xb35f('0x9')];var _0xc17bd1=_0x5d0877||stringOptions['secret'];var _0x23421c=crypto['createCipher'](_0x4d1d92,_0xc17bd1);var _0x3c5d32=_0x23421c[_0xb35f('0x1d')](_0x54a69e,'utf8',_0xb35f('0x1f'));_0x3c5d32+=_0x23421c['final'](_0xb35f('0x1f'));return _0x3c5d32;};exports[_0xb35f('0x20')]=function(_0x280a9a,_0x409cc3,_0x15acd9){var _0x2310e0=_0x15acd9||stringOptions[_0xb35f('0x9')];var _0x4ff5ee=_0x409cc3||stringOptions['secret'];var _0x14ea4d=crypto[_0xb35f('0x1c')](_0x2310e0,_0x4ff5ee);var _0x2deae9=_0x14ea4d[_0xb35f('0x1d')](_0x280a9a,'base64',_0xb35f('0x21'));_0x2deae9+=_0x14ea4d[_0xb35f('0x17')](_0xb35f('0x21'));return _0x2deae9;};
\ No newline at end of file
+var _0x5f52=['session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','data','update','binary','write','final','end','close','unlink','encryptString','createCipher','utf8','base64','secret','createDecipher','lodash','../../config/environment','../../config/logger','app','secrets'];(function(_0x37e832,_0x5e87ea){var _0x49694e=function(_0x160560){while(--_0x160560){_0x37e832['push'](_0x37e832['shift']());}};_0x49694e(++_0x5e87ea);}(_0x5f52,0xa5));var _0x25f5=function(_0x1d94d1,_0x347bb8){_0x1d94d1=_0x1d94d1-0x0;var _0x23c397=_0x5f52[_0x1d94d1];return _0x23c397;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x25f5('0x0'));var config=require(_0x25f5('0x1'));var logger=require(_0x25f5('0x2'))(_0x25f5('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x25f5('0x4')][_0x25f5('0x5')],'algorithm':_0x25f5('0x6')};const fileOptions={'algorithm':_0x25f5('0x7')};if(config[_0x25f5('0x8')]&&config[_0x25f5('0x8')][_0x25f5('0x9')]){var isSupported=isAlgorithmSupported(config['encrypt'][_0x25f5('0x9')]);if(isSupported){fileOptions[_0x25f5('0x9')]=config['encrypt'][_0x25f5('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x25f5('0xa')](',\x20');logger[_0x25f5('0xb')](config[_0x25f5('0x8')][_0x25f5('0x9')],_0x25f5('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x1a408a){return AES_SUPPORTED_RX[_0x25f5('0xd')](_0x1a408a);}function getSupportedCiphers(){return crypto[_0x25f5('0xe')]()[_0x25f5('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0x3e28c7){return getSupportedCiphers()[_0x25f5('0x10')](_0x3e28c7)>-0x1;}function combineOptions(_0x361237){var _0x38b6b3={};for(var _0x59f2ec in fileOptions){if(fileOptions[_0x25f5('0x11')](_0x59f2ec)){_0x38b6b3[_0x59f2ec]=fileOptions[_0x59f2ec];}}if(_0x361237){for(var _0x7af1e8 in _0x361237){if(_0x361237['hasOwnProperty'](_0x7af1e8)){_0x38b6b3[_0x7af1e8]=_0x361237[_0x7af1e8];}}}return _0x38b6b3;}exports[_0x25f5('0x12')]=function(_0x34862a,_0x32668a,_0x3fe70a,_0x3d37cd){return new BPromise(function(_0x121da6,_0x5ca560){_0x3d37cd=combineOptions(_0x3d37cd);var _0x58d413=new Buffer(_0x3fe70a);var _0x4e7aef=fs[_0x25f5('0x13')](_0x34862a);var _0x4fc84c=fs['createWriteStream'](_0x32668a);var _0x2e31cf=crypto['createCipher'](_0x3d37cd[_0x25f5('0x9')],_0x58d413);_0x4e7aef['on'](_0x25f5('0x14'),function(_0x2464fd){var _0xd8894b=new Buffer(_0x2e31cf[_0x25f5('0x15')](_0x2464fd),_0x25f5('0x16'));_0x4fc84c[_0x25f5('0x17')](_0xd8894b);});_0x4e7aef['on']('end',function(){try{var _0x14f9fa=new Buffer(_0x2e31cf[_0x25f5('0x18')](_0x25f5('0x16')),_0x25f5('0x16'));_0x4fc84c['write'](_0x14f9fa);_0x4fc84c[_0x25f5('0x19')]();_0x4fc84c['on'](_0x25f5('0x1a'),function(){return _0x121da6(_0x32668a);});}catch(_0x2a6166){fs['unlink'](_0x32668a);return _0x5ca560(_0x2a6166);}});});};exports['decryptFile']=function(_0x44d037,_0x23f9e4,_0x2b182f,_0x130370){return new BPromise(function(_0x540132,_0x463b91){_0x130370=combineOptions(_0x130370);var _0x32bf25=new Buffer(_0x2b182f);var _0x3f2e4e=fs[_0x25f5('0x13')](_0x44d037);var _0x3c41de=fs['createWriteStream'](_0x23f9e4);var _0x372e08=crypto['createDecipher'](_0x130370['algorithm'],_0x32bf25);_0x3f2e4e['on'](_0x25f5('0x14'),function(_0x9a2ea6){var _0x25acd3=new Buffer(_0x372e08[_0x25f5('0x15')](_0x9a2ea6),'binary');_0x3c41de['write'](_0x25acd3);});_0x3f2e4e['on'](_0x25f5('0x19'),function(){try{var _0x15758e=new Buffer(_0x372e08[_0x25f5('0x18')](_0x25f5('0x16')),_0x25f5('0x16'));_0x3c41de[_0x25f5('0x17')](_0x15758e);_0x3c41de['end']();_0x3c41de['on'](_0x25f5('0x1a'),function(){return _0x540132(_0x23f9e4);});}catch(_0x2165f7){fs[_0x25f5('0x1b')](_0x23f9e4);return _0x463b91(_0x2165f7);}});});};exports[_0x25f5('0x1c')]=function(_0x165e74,_0x317f63,_0xd7ad5){var _0x10b0b7=_0xd7ad5||stringOptions['algorithm'];var _0x46f31a=_0x317f63||stringOptions['secret'];var _0x2b8afe=crypto[_0x25f5('0x1d')](_0x10b0b7,_0x46f31a);var _0x5bf8d3=_0x2b8afe[_0x25f5('0x15')](_0x165e74,_0x25f5('0x1e'),'base64');_0x5bf8d3+=_0x2b8afe['final'](_0x25f5('0x1f'));return _0x5bf8d3;};exports['decryptString']=function(_0x4570a3,_0x5d2c69,_0x1b2784){var _0x1d16cc=_0x1b2784||stringOptions[_0x25f5('0x9')];var _0x9737c1=_0x5d2c69||stringOptions[_0x25f5('0x20')];var _0x5cbef5=crypto[_0x25f5('0x21')](_0x1d16cc,_0x9737c1);var _0x751a73=_0x5cbef5[_0x25f5('0x15')](_0x4570a3,_0x25f5('0x1f'),_0x25f5('0x1e'));_0x751a73+=_0x5cbef5['final']('utf8');return _0x751a73;};
\ No newline at end of file
index fde4b02..bdefdfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf634=['join','mkdirSync','length','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','path','lodash','to-csv','bluebird','rimraf','../../mysqldb','../../config/logger','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','range','isInteger','push','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.csv','existsSync'];(function(_0x49bf23,_0x1db15c){var _0xc1881c=function(_0x2cf44c){while(--_0x2cf44c){_0x49bf23['push'](_0x49bf23['shift']());}};_0xc1881c(++_0x1db15c);}(_0xf634,0x9f));var _0x4f63=function(_0x400a86,_0x3090ea){_0x400a86=_0x400a86-0x0;var _0x569c27=_0xf634[_0x400a86];return _0x569c27;};'use strict';var util=require('util');var path=require(_0x4f63('0x0'));var _=require(_0x4f63('0x1'));var csv=require(_0x4f63('0x2'));var fs=require('fs');var BPromise=require(_0x4f63('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x4f63('0x4'));var db=require(_0x4f63('0x5'))['db'];var dbH=require(_0x4f63('0x5'))['dbH'];var logger=require(_0x4f63('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x4f63('0x7')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x4f63('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5a6556,_0x49ae05){var _0xde2f44={'status':_0x5a6556};var _0x5f2f70={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x49ae05){_0xde2f44['savename']=_0x49ae05;}return db[_0x4f63('0x8')][_0x4f63('0x9')](_0xde2f44,_0x5f2f70);}function main(){var _0x3af537=0x1388;var _0xde9f25;logger[_0x4f63('0xa')](util[_0x4f63('0xb')](_0x4f63('0xc'),EXTRACTED_REPORT_ID,_0x4f63('0xd')));return db[_0x4f63('0xe')][_0x4f63('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4f63('0x10'),_0x4f63('0x11')]})[_0x4f63('0x12')](function(_0x2f06a8){if(_0x2f06a8){_0xde9f25=_0x2f06a8;_0x3af537=_0xde9f25[_0x4f63('0x11')]||0x1388;}})[_0x4f63('0x12')](function(){return dbH['sequelize'][_0x4f63('0x13')](util[_0x4f63('0xb')](_0x4f63('0x14'),QUERY),{'type':dbH['sequelize'][_0x4f63('0x15')][_0x4f63('0x16')]});})[_0x4f63('0x12')](function(_0x189f46){if(!_0x189f46[0x0][_0x4f63('0x17')]){return analyticExtractedReport(_0x4f63('0x18'));}var _0x444952=[];var _0x37f68b=0x0;if(_0xde9f25[_0x4f63('0x10')]){if(_0x189f46&&_0x189f46['length']){var _0x283963=_[_0x4f63('0x19')](_0x189f46[0x0][_0x4f63('0x17')]/_0x3af537);var _0x2d5a31=Number[_0x4f63('0x1a')](_0x189f46[0x0]['num']/_0x3af537)?_0x189f46[0x0][_0x4f63('0x17')]%_0x3af537:0x0;_0x283963['forEach'](function(_0x54f5f5){if(_0x54f5f5>0x0){_0x37f68b+=_0x3af537;}_0x444952[_0x4f63('0x1b')](dbH[_0x4f63('0x1c')][_0x4f63('0x13')](util['format'](_0x4f63('0x1d'),QUERY,_0x3af537,_0x37f68b),{'type':dbH[_0x4f63('0x1c')][_0x4f63('0x15')][_0x4f63('0x16')]}));});if(_0x2d5a31>0x0){_0x37f68b+=_0x3af537;_0x444952[_0x4f63('0x1b')](dbH[_0x4f63('0x1c')][_0x4f63('0x13')](util[_0x4f63('0xb')](_0x4f63('0x1d'),QUERY,_0x2d5a31,_0x37f68b),{'type':dbH[_0x4f63('0x1c')]['QueryTypes'][_0x4f63('0x16')]}));}}}else{_0x444952[_0x4f63('0x1b')](dbH[_0x4f63('0x1c')][_0x4f63('0x13')](QUERY,{'type':dbH[_0x4f63('0x1c')][_0x4f63('0x15')][_0x4f63('0x16')]}));}var _0x3fd8b0=path[_0x4f63('0x1e')](PATH);var _0x1fac2a=path['basename'](PATH,_0x4f63('0x1f'));var _0xdc6f8f=_0xde9f25[_0x4f63('0x10')]&&_0x444952['length']>0x1;var _0xdbef3b=[];if(!fs[_0x4f63('0x20')](path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a))&&_0xdc6f8f){fs[_0x4f63('0x22')](path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a));}return BPromise['each'](_0x444952,function(_0x158c47){_0xdbef3b['push'](_0x158c47);})[_0x4f63('0x12')](function(){for(var _0x48d58e=0x0;_0x48d58e<_0xdbef3b[_0x4f63('0x23')];_0x48d58e+=0x1){var _0x3eb4fe;var _0x3b2922=_0xdbef3b[_0x48d58e];if(_0xdc6f8f){_0x3eb4fe=path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a,util[_0x4f63('0xb')](_0x4f63('0x24'),_0x1fac2a,_0x48d58e,_0x4f63('0x25')));}else{_0x3eb4fe=path[_0x4f63('0x21')](_0x3fd8b0,util[_0x4f63('0xb')](_0x4f63('0x26'),_0x1fac2a,_0x4f63('0x25')));}fs[_0x4f63('0x27')](_0x3eb4fe,csv(_0x3b2922));}})[_0x4f63('0x12')](function(){if(_0xdc6f8f){return new Promise(function(_0x4b83a2){zipdir(path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a),{'saveTo':path[_0x4f63('0x21')](_0x3fd8b0,util['format'](_0x4f63('0x26'),_0x1fac2a,_0x4f63('0x28')))},function(_0x242ae4,_0x283148){rimraf(path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a),function(){});_0x4b83a2(_0x4f63('0x29'));});});}})['then'](function(){logger['info'](util[_0x4f63('0xb')](_0x4f63('0x2a'),EXTRACTED_REPORT_ID,_0x4f63('0xd')));return analyticExtractedReport('Completed',_0xdc6f8f?util[_0x4f63('0xb')]('%s.%s',_0x1fac2a,_0xdc6f8f?_0x4f63('0x28'):_0x4f63('0x25')):null);});})[_0x4f63('0x2b')](function(_0x4170c5){logger[_0x4f63('0xa')](util['format'](_0x4f63('0x2c'),EXTRACTED_REPORT_ID,_0x4f63('0xd')),util[_0x4f63('0x2d')](_0x4170c5,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x4f63('0x2e')](function(){process[_0x4f63('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x3d22=['update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','Empty','split','length','num','isInteger','forEach','push','format','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','existsSync','join','mkdirSync','each','%s%d.%s','csv','writeFileSync','%s.%s','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','path','lodash','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport'];(function(_0x5913ab,_0x41e645){var _0x4bb5b3=function(_0x342a60){while(--_0x342a60){_0x5913ab['push'](_0x5913ab['shift']());}};_0x4bb5b3(++_0x41e645);}(_0x3d22,0x1e0));var _0x23d2=function(_0xcf20b6,_0x1f4362){_0xcf20b6=_0xcf20b6-0x0;var _0x3a5de6=_0x3d22[_0xcf20b6];return _0x3a5de6;};'use strict';var util=require('util');var path=require(_0x23d2('0x0'));var _=require(_0x23d2('0x1'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x23d2('0x2'));var zipdir=require('zip-dir');var rimraf=require(_0x23d2('0x3'));var db=require('../../mysqldb')['db'];var dbH=require(_0x23d2('0x4'))[_0x23d2('0x5')];var logger=require(_0x23d2('0x6'))(_0x23d2('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x23d2('0x8')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x20d2e5,_0x1a0b99){var _0x585f65={'status':_0x20d2e5};var _0x494fa9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1a0b99){_0x585f65['savename']=_0x1a0b99;}return db[_0x23d2('0x9')][_0x23d2('0xa')](_0x585f65,_0x494fa9);}function main(){var _0x49b9d4=0x1388;var _0xe26e75;logger[_0x23d2('0xb')](util['format'](_0x23d2('0xc'),EXTRACTED_REPORT_ID,_0x23d2('0xd')));return db[_0x23d2('0xe')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x23d2('0xf')]})[_0x23d2('0x10')](function(_0x20e6eb){if(_0x20e6eb){_0xe26e75=_0x20e6eb;_0x49b9d4=_0xe26e75[_0x23d2('0xf')]||0x1388;}})[_0x23d2('0x10')](function(){return dbH[_0x23d2('0x11')][_0x23d2('0x12')](util['format'](_0x23d2('0x13'),QUERY),{'type':dbH['sequelize'][_0x23d2('0x14')][_0x23d2('0x15')]});})[_0x23d2('0x10')](function(_0x28037e){if(!_0x28037e[0x0]['num']){return analyticExtractedReport(_0x23d2('0x16'));}var _0x38a62e=[];var _0x9d88b7=0x0;if(_0xe26e75[_0x23d2('0x17')]){if(_0x28037e&&_0x28037e[_0x23d2('0x18')]){var _0x4e08c3=_['range'](_0x28037e[0x0][_0x23d2('0x19')]/_0x49b9d4);var _0x15469e=Number[_0x23d2('0x1a')](_0x28037e[0x0][_0x23d2('0x19')]/_0x49b9d4)?_0x28037e[0x0][_0x23d2('0x19')]%_0x49b9d4:0x0;_0x4e08c3[_0x23d2('0x1b')](function(_0x168312){if(_0x168312>0x0){_0x9d88b7+=_0x49b9d4;}_0x38a62e[_0x23d2('0x1c')](dbH[_0x23d2('0x11')]['query'](util[_0x23d2('0x1d')](_0x23d2('0x1e'),QUERY,_0x49b9d4,_0x9d88b7),{'type':dbH[_0x23d2('0x11')][_0x23d2('0x14')][_0x23d2('0x15')]}));});if(_0x15469e>0x0){_0x9d88b7+=_0x49b9d4;_0x38a62e[_0x23d2('0x1c')](dbH['sequelize']['query'](util[_0x23d2('0x1d')](_0x23d2('0x1e'),QUERY,_0x15469e,_0x9d88b7),{'type':dbH[_0x23d2('0x11')][_0x23d2('0x14')][_0x23d2('0x15')]}));}}}else{_0x38a62e[_0x23d2('0x1c')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x23d2('0x11')][_0x23d2('0x14')]['SELECT']}));}var _0x453819=path['dirname'](PATH);var _0x4c88ca=path[_0x23d2('0x1f')](PATH,'.csv');var _0x104422=_0xe26e75[_0x23d2('0x17')]&&_0x38a62e[_0x23d2('0x18')]>0x1;var _0x4cc08f=[];if(!fs[_0x23d2('0x20')](path[_0x23d2('0x21')](_0x453819,_0x4c88ca))&&_0x104422){fs[_0x23d2('0x22')](path[_0x23d2('0x21')](_0x453819,_0x4c88ca));}return BPromise[_0x23d2('0x23')](_0x38a62e,function(_0x59d2fd){_0x4cc08f[_0x23d2('0x1c')](_0x59d2fd);})['then'](function(){for(var _0x2223f6=0x0;_0x2223f6<_0x4cc08f[_0x23d2('0x18')];_0x2223f6+=0x1){var _0x530755;var _0x2fcc8f=_0x4cc08f[_0x2223f6];if(_0x104422){_0x530755=path['join'](_0x453819,_0x4c88ca,util[_0x23d2('0x1d')](_0x23d2('0x24'),_0x4c88ca,_0x2223f6,'csv'));}else{_0x530755=path[_0x23d2('0x21')](_0x453819,util['format']('%s.%s',_0x4c88ca,_0x23d2('0x25')));}fs[_0x23d2('0x26')](_0x530755,csv(_0x2fcc8f));}})['then'](function(){if(_0x104422){return new Promise(function(_0xdc6850){zipdir(path['join'](_0x453819,_0x4c88ca),{'saveTo':path[_0x23d2('0x21')](_0x453819,util[_0x23d2('0x1d')](_0x23d2('0x27'),_0x4c88ca,_0x23d2('0x28')))},function(_0x275cbf,_0x316735){rimraf(path[_0x23d2('0x21')](_0x453819,_0x4c88ca),function(){});_0xdc6850(_0x23d2('0x29'));});});}})['then'](function(){logger[_0x23d2('0xb')](util[_0x23d2('0x1d')](_0x23d2('0x2a'),EXTRACTED_REPORT_ID,_0x23d2('0xd')));return analyticExtractedReport(_0x23d2('0x2b'),_0x104422?util[_0x23d2('0x1d')](_0x23d2('0x27'),_0x4c88ca,_0x104422?'zip':_0x23d2('0x25')):null);});})[_0x23d2('0x2c')](function(_0x5e7d78){logger['info'](util['format'](_0x23d2('0x2d'),EXTRACTED_REPORT_ID,_0x23d2('0xd')),util[_0x23d2('0x2e')](_0x5e7d78,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x23d2('0x2f'));})['finally'](function(){process[_0x23d2('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index 7c0bd39..bfafe3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4c3=['name','endDate','pageBreak','before','margin','\x20/\x20','footer','Arial','right','num','find','splitSizePdf','then','split','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','dirname','basename','.pdf','existsSync','mkdirSync','flatten','createPdfKitDocument','join','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','center','Interaction\x20Transcript','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','jsdom','window','../../mysqldb','dbH','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','push','body','concat','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s'];(function(_0x21d797,_0x111a29){var _0x47602b=function(_0x4740f4){while(--_0x4740f4){_0x21d797['push'](_0x21d797['shift']());}};_0x47602b(++_0x111a29);}(_0xf4c3,0x196));var _0x3f4c=function(_0x28a5ca,_0x3ca6d5){_0x28a5ca=_0x28a5ca-0x0;var _0x1ac95e=_0xf4c3[_0x28a5ca];return _0x1ac95e;};'use strict';var _=require(_0x3f4c('0x0'));var fs=require('fs');var util=require(_0x3f4c('0x1'));var path=require(_0x3f4c('0x2'));var moment=require(_0x3f4c('0x3'));var htmlToPdfmake=require(_0x3f4c('0x4'));var PdfPrinter=require(_0x3f4c('0x5'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var JSDOM=require(_0x3f4c('0x6'))['JSDOM'];var window=new JSDOM('')[_0x3f4c('0x7')];var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var dbH=require(_0x3f4c('0x8'))[_0x3f4c('0x9')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x3f4c('0xa')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x3f4c('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3bf04c,_0x53e99c){var _0x235c39={'status':_0x3bf04c};var _0x4e90b3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x53e99c){_0x235c39[_0x3f4c('0xc')]=_0x53e99c;}return db[_0x3f4c('0xd')][_0x3f4c('0xe')](_0x235c39,_0x4e90b3);}function getHeaders(_0xae0cf8){return _[_0x3f4c('0xf')](_0xae0cf8,function(_0x5ce9bc){return{'text':_0x5ce9bc,'style':_0x3f4c('0x10')};});}function getRows(_0x4eed08,_0x3c785d){return _[_0x3f4c('0xf')](_0x3c785d,function(_0x29b104){return _(_0x29b104)['pick'](_0x4eed08)[_0x3f4c('0xf')](function(_0x287507){return _0x287507?_[_0x3f4c('0x11')](_0x287507):'';})[_0x3f4c('0x12')]();});}function createTable(_0xb3f216,_0x184e91){var _0x330ae3={'widths':_[_0x3f4c('0x13')](Array(_0xb3f216[_0x3f4c('0x14')]),0x91),'heights':function(_0x8e45e2){return _0x8e45e2===0x0?_0x3f4c('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1db27c=getHeaders(_0xb3f216);_0x330ae3['body'][_0x3f4c('0x16')](_0x1db27c);var _0x4b958b=getRows(_0xb3f216,_0x184e91);_0x330ae3['body']=_0x330ae3[_0x3f4c('0x17')][_0x3f4c('0x18')](_0x4b958b);return _0x330ae3;}function createTables(_0x1a416e){var _0x152053=[];var _0x253e61=_['chunk'](Object[_0x3f4c('0x19')](_0x1a416e[0x0]),0x5);_0x253e61[_0x3f4c('0x1a')](function(_0x1b5e93){_0x152053[_0x3f4c('0x16')](createTable(_0x1b5e93,_0x1a416e));});return _0x152053;}function getPDFDocDefinition(_0x295772){var _0x5a7c74=util[_0x3f4c('0x1b')](_0x3f4c('0x1c'),NAME,EXTRACTED_REPORT[_0x3f4c('0x1d')],moment(EXTRACTED_REPORT['startDate'])[_0x3f4c('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0x3f4c('0x1e')])[_0x3f4c('0x1b')](FORMAT));var _0x4aa16e=[];for(var _0x12cdd9=0x0;_0x12cdd9<_0x295772[_0x3f4c('0x14')];_0x12cdd9++){var _0x33c1a3=[];if(_0x12cdd9===0x0){_0x33c1a3[_0x3f4c('0x16')]({'text':_0x5a7c74,'style':'header'});}var _0x2ab22a={'table':_0x295772[_0x12cdd9]};if(_0x12cdd9>0x0){_0x2ab22a[_0x3f4c('0x1f')]=_0x3f4c('0x20');_0x2ab22a[_0x3f4c('0x21')]=[0x0,0x46,0x0,0x0];}_0x33c1a3['push'](_0x2ab22a);_0x4aa16e[_0x3f4c('0x16')](_0x33c1a3);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x4aa16e,'footer':function(_0x2df303,_0x331b52){return{'text':_0x2df303[_0x3f4c('0x11')]()+_0x3f4c('0x22')+_0x331b52,'style':_0x3f4c('0x23')};},'defaultStyle':{'font':_0x3f4c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x3f4c('0x25'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x2f48c3){var _0x499e17=0x1388;var _0x482211;if(!_0x2f48c3[0x0][_0x3f4c('0x26')]){return analyticExtractedReport('Empty');}return db['Setting'][_0x3f4c('0x27')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x3f4c('0x28')]})['then'](function(_0xb18f56){if(_0xb18f56){_0x482211=_0xb18f56;_0x499e17=_0x482211['splitSizePdf']||0x3e8;}})[_0x3f4c('0x29')](function(){var _0x142660=[];var _0x18e919=0x0;if(_0x482211[_0x3f4c('0x2a')]){if(_0x2f48c3&&_0x2f48c3[_0x3f4c('0x14')]){var _0x272e09=_[_0x3f4c('0x2b')](_0x2f48c3[0x0][_0x3f4c('0x26')]/_0x499e17);var _0x58b31a=Number[_0x3f4c('0x2c')](_0x2f48c3[0x0][_0x3f4c('0x26')]/_0x499e17)?_0x2f48c3[0x0][_0x3f4c('0x26')]%_0x499e17:0x0;_0x272e09[_0x3f4c('0x1a')](function(_0x3d0f78){if(_0x3d0f78>0x0){_0x18e919+=_0x499e17;}_0x142660[_0x3f4c('0x16')](dbH[_0x3f4c('0x2d')][_0x3f4c('0x2e')](util['format'](_0x3f4c('0x2f'),QUERY,_0x499e17,_0x18e919),{'type':dbH['sequelize']['QueryTypes'][_0x3f4c('0x30')]}));});if(_0x58b31a>0x0){_0x18e919+=_0x499e17;_0x142660['push'](dbH['sequelize'][_0x3f4c('0x2e')](util[_0x3f4c('0x1b')](_0x3f4c('0x2f'),QUERY,_0x58b31a,_0x18e919),{'type':dbH[_0x3f4c('0x2d')][_0x3f4c('0x31')]['SELECT']}));}}}else{_0x142660[_0x3f4c('0x16')](dbH[_0x3f4c('0x2d')][_0x3f4c('0x2e')](QUERY,{'type':dbH['sequelize'][_0x3f4c('0x31')][_0x3f4c('0x30')]}));}var _0x2915f9=path[_0x3f4c('0x32')](PATH);var _0x4c0637=path[_0x3f4c('0x33')](PATH,_0x3f4c('0x34'));var _0x41cd0a=_0x482211[_0x3f4c('0x2a')]&&_0x142660['length']>0x1;var _0x49b56e=[];if(!fs[_0x3f4c('0x35')](path['join'](_0x2915f9,_0x4c0637))&&_0x41cd0a){fs[_0x3f4c('0x36')](path['join'](_0x2915f9,_0x4c0637));}return BPromise['each'](_0x142660,function(_0x3ead20){_0x49b56e[_0x3f4c('0x16')](_0x3ead20);})['then'](function(){var _0xd80e1f=[];for(var _0x2be211=0x0;_0x2be211<_0x49b56e['length'];_0x2be211+=0x1){var _0x4ff9f4=_0x49b56e[_0x2be211];var _0x40018c=createTables(_[_0x3f4c('0x37')](_0x4ff9f4));var _0x616778;var _0x3c89e1=getPDFDocDefinition(_0x40018c);var _0x33b089=getPDFPrinter();var _0x3e94b3=_0x33b089[_0x3f4c('0x38')](_0x3c89e1);if(_0x41cd0a){_0x616778=path[_0x3f4c('0x39')](_0x2915f9,_0x4c0637,util[_0x3f4c('0x1b')](_0x3f4c('0x3a'),_0x4c0637,_0x2be211,_0x3f4c('0x3b')));}else{_0x616778=path['join'](_0x2915f9,util[_0x3f4c('0x1b')](_0x3f4c('0x3c'),_0x4c0637,_0x3f4c('0x3b')));}_0xd80e1f[_0x3f4c('0x16')](writePDFDocument(_0x3e94b3,_0x616778));}return Promise[_0x3f4c('0x3d')](_0xd80e1f);})['then'](function(){if(_0x41cd0a){return new Promise(function(_0x5e1406){zipdir(path['join'](_0x2915f9,_0x4c0637),{'saveTo':path[_0x3f4c('0x39')](_0x2915f9,util[_0x3f4c('0x1b')](_0x3f4c('0x3c'),_0x4c0637,_0x3f4c('0x3e')))},function(){rimraf(path[_0x3f4c('0x39')](_0x2915f9,_0x4c0637),function(){});_0x5e1406(_0x3f4c('0x3f'));});});}})[_0x3f4c('0x29')](function(){if(!_0x41cd0a)return;rimraf(path['join'](_0x2915f9,_0x4c0637),function(){});})[_0x3f4c('0x29')](function(){logger[_0x3f4c('0x40')](util[_0x3f4c('0x1b')](_0x3f4c('0x41'),EXTRACTED_REPORT_ID,_0x3f4c('0x42')));return analyticExtractedReport('Completed',_0x41cd0a?util[_0x3f4c('0x1b')](_0x3f4c('0x3c'),_0x4c0637,_0x41cd0a?_0x3f4c('0x3e'):_0x3f4c('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x3f4c('0x40')](util['format'](_0x3f4c('0x43'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x3f4c('0xd')][_0x3f4c('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x3f4c('0x29')](function(_0x309919){EXTRACTED_REPORT=_0x309919;return dbH['sequelize']['query'](util[_0x3f4c('0x1b')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x3f4c('0x2d')][_0x3f4c('0x31')][_0x3f4c('0x30')]});})['then'](extractReport)[_0x3f4c('0x45')](function(_0x48e28c){logger[_0x3f4c('0x40')](util[_0x3f4c('0x1b')](_0x3f4c('0x46'),EXTRACTED_REPORT_ID,_0x3f4c('0x42')),util[_0x3f4c('0x47')](_0x48e28c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x3f4c('0x48'));})['finally'](function(){process[_0x3f4c('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x406401=new PdfPrinter({'Arial':{'normal':__dirname+_0x3f4c('0x4a'),'bold':__dirname+_0x3f4c('0x4b'),'italics':__dirname+_0x3f4c('0x4c'),'bolditalics':__dirname+_0x3f4c('0x4d')}});return _0x406401;}function getPDFDocDefinitionFromHTML(_0x4f4701,_0x20619e){var _0x79bcf1=util[_0x3f4c('0x1b')](_0x3f4c('0x4e'),_0x20619e[_0x3f4c('0x4f')],_0x20619e[_0x3f4c('0x50')]);var _0x529ba0=moment()[_0x3f4c('0x1b')]('YYYY-MM-DD')[_0x3f4c('0x11')]();var _0xd029a7=htmlToPdfmake(_0x4f4701,{'window':window,'tableAutoSize':!![]});return{'content':[_0xd029a7],'defaultStyle':{'font':_0x3f4c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x3f4c('0x51')}},'header':function(){return[{'text':_0x3f4c('0x52'),'style':'header'}];},'footer':function(_0x1cde40,_0x304b49){return[{'text':util[_0x3f4c('0x1b')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x79bcf1,_0x1cde40,_0x304b49,_0x529ba0),'style':_0x3f4c('0x23')}];}};}function writePDFDocument(_0x103ca2,_0x45b312){return new Promise(function(_0x387904,_0x3be823){var _0x284118=_0x103ca2['pipe'](fs['createWriteStream'](_0x45b312));_0x284118['on']('finish',function(){_0x387904(_0x3f4c('0x53'));});_0x284118['on'](_0x3f4c('0x54'),function(_0x2b441b){_0x3be823(_0x2b441b);});_0x103ca2[_0x3f4c('0x55')]();});}exports[_0x3f4c('0x56')]=function(_0x19d3ef,_0x766ea0){var _0x567017=getPDFPrinter();var _0x831c9f=getPDFDocDefinitionFromHTML(_0x19d3ef,_0x766ea0);var _0x27949a=_0x567017['createPdfKitDocument'](_0x831c9f);return writePDFDocument(_0x27949a,_0x766ea0['path'])[_0x3f4c('0x45')](function(_0x3857e9){throw _0x3857e9;});};
\ No newline at end of file
+var _0x5976=['length','auto','push','body','concat','chunk','keys','forEach','name','startDate','format','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','right','num','Setting','split','splitSizePdf','then','range','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','mkdirSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','createPdfFromHTML','path','lodash','util','moment','pdfmake/src/printer','zip-dir','jsdom','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','tableHeader','map','pick','toString','value','fill'];(function(_0x277c86,_0x2e6784){var _0x685562=function(_0x1bfd2e){while(--_0x1bfd2e){_0x277c86['push'](_0x277c86['shift']());}};_0x685562(++_0x2e6784);}(_0x5976,0x162));var _0x6597=function(_0x68cf94,_0xfc8b8f){_0x68cf94=_0x68cf94-0x0;var _0x5b4dac=_0x5976[_0x68cf94];return _0x5b4dac;};'use strict';var _=require(_0x6597('0x0'));var fs=require('fs');var util=require(_0x6597('0x1'));var path=require('path');var moment=require(_0x6597('0x2'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x6597('0x3'));var zipdir=require(_0x6597('0x4'));var rimraf=require('rimraf');var JSDOM=require(_0x6597('0x5'))['JSDOM'];var window=new JSDOM('')[_0x6597('0x6')];var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var dbH=require(_0x6597('0x7'))[_0x6597('0x8')];var logger=require(_0x6597('0x9'))(_0x6597('0xa'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x6597('0xb')][0x3];var PATH=process[_0x6597('0xb')][0x4];var NAME=process[_0x6597('0xb')][0x5];var FORMAT=_0x6597('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x2f4672,_0x1fb320){var _0x4b7042={'status':_0x2f4672};var _0x245f99={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1fb320){_0x4b7042[_0x6597('0xd')]=_0x1fb320;}return db[_0x6597('0xe')][_0x6597('0xf')](_0x4b7042,_0x245f99);}function getHeaders(_0x1d5e28){return _['map'](_0x1d5e28,function(_0x310d96){return{'text':_0x310d96,'style':_0x6597('0x10')};});}function getRows(_0x4a69ed,_0x30cfb7){return _[_0x6597('0x11')](_0x30cfb7,function(_0x293fd2){return _(_0x293fd2)[_0x6597('0x12')](_0x4a69ed)[_0x6597('0x11')](function(_0x4e2ce4){return _0x4e2ce4?_[_0x6597('0x13')](_0x4e2ce4):'';})[_0x6597('0x14')]();});}function createTable(_0x3869e5,_0x54d60a){var _0x8d4b76={'widths':_[_0x6597('0x15')](Array(_0x3869e5[_0x6597('0x16')]),0x91),'heights':function(_0x503436){return _0x503436===0x0?_0x6597('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x51e5f7=getHeaders(_0x3869e5);_0x8d4b76['body'][_0x6597('0x18')](_0x51e5f7);var _0x44ad32=getRows(_0x3869e5,_0x54d60a);_0x8d4b76[_0x6597('0x19')]=_0x8d4b76['body'][_0x6597('0x1a')](_0x44ad32);return _0x8d4b76;}function createTables(_0x48dceb){var _0x781622=[];var _0x2344f1=_[_0x6597('0x1b')](Object[_0x6597('0x1c')](_0x48dceb[0x0]),0x5);_0x2344f1[_0x6597('0x1d')](function(_0x2994a1){_0x781622[_0x6597('0x18')](createTable(_0x2994a1,_0x48dceb));});return _0x781622;}function getPDFDocDefinition(_0x3cfba3){var _0x24bbcb=util['format']('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0x6597('0x1e')],moment(EXTRACTED_REPORT[_0x6597('0x1f')])[_0x6597('0x20')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x6597('0x20')](FORMAT));var _0x1e1be3=[];for(var _0x18019e=0x0;_0x18019e<_0x3cfba3['length'];_0x18019e++){var _0x2e6496=[];if(_0x18019e===0x0){_0x2e6496[_0x6597('0x18')]({'text':_0x24bbcb,'style':_0x6597('0x21')});}var _0x5d111b={'table':_0x3cfba3[_0x18019e]};if(_0x18019e>0x0){_0x5d111b[_0x6597('0x22')]=_0x6597('0x23');_0x5d111b[_0x6597('0x24')]=[0x0,0x46,0x0,0x0];}_0x2e6496[_0x6597('0x18')](_0x5d111b);_0x1e1be3[_0x6597('0x18')](_0x2e6496);}return{'pageSize':'A4','pageOrientation':_0x6597('0x25'),'content':_0x1e1be3,'footer':function(_0x28022d,_0x5b4c57){return{'text':_0x28022d['toString']()+_0x6597('0x26')+_0x5b4c57,'style':_0x6597('0x27')};},'defaultStyle':{'font':_0x6597('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x6597('0x29'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1245b2){var _0x58e778=0x1388;var _0x515ebc;if(!_0x1245b2[0x0][_0x6597('0x2a')]){return analyticExtractedReport('Empty');}return db[_0x6597('0x2b')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6597('0x2c'),_0x6597('0x2d')]})[_0x6597('0x2e')](function(_0x560d17){if(_0x560d17){_0x515ebc=_0x560d17;_0x58e778=_0x515ebc['splitSizePdf']||0x3e8;}})[_0x6597('0x2e')](function(){var _0x3afabd=[];var _0x111376=0x0;if(_0x515ebc['split']){if(_0x1245b2&&_0x1245b2[_0x6597('0x16')]){var _0x5509ac=_[_0x6597('0x2f')](_0x1245b2[0x0][_0x6597('0x2a')]/_0x58e778);var _0x5ba3a0=Number['isInteger'](_0x1245b2[0x0][_0x6597('0x2a')]/_0x58e778)?_0x1245b2[0x0][_0x6597('0x2a')]%_0x58e778:0x0;_0x5509ac[_0x6597('0x1d')](function(_0x1a982e){if(_0x1a982e>0x0){_0x111376+=_0x58e778;}_0x3afabd[_0x6597('0x18')](dbH[_0x6597('0x30')][_0x6597('0x31')](util[_0x6597('0x20')](_0x6597('0x32'),QUERY,_0x58e778,_0x111376),{'type':dbH['sequelize'][_0x6597('0x33')][_0x6597('0x34')]}));});if(_0x5ba3a0>0x0){_0x111376+=_0x58e778;_0x3afabd['push'](dbH[_0x6597('0x30')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x5ba3a0,_0x111376),{'type':dbH[_0x6597('0x30')][_0x6597('0x33')]['SELECT']}));}}}else{_0x3afabd[_0x6597('0x18')](dbH[_0x6597('0x30')][_0x6597('0x31')](QUERY,{'type':dbH['sequelize'][_0x6597('0x33')][_0x6597('0x34')]}));}var _0xa961be=path[_0x6597('0x35')](PATH);var _0x3bb512=path[_0x6597('0x36')](PATH,_0x6597('0x37'));var _0x59b0ea=_0x515ebc['split']&&_0x3afabd[_0x6597('0x16')]>0x1;var _0x2d8488=[];if(!fs[_0x6597('0x38')](path['join'](_0xa961be,_0x3bb512))&&_0x59b0ea){fs[_0x6597('0x39')](path[_0x6597('0x3a')](_0xa961be,_0x3bb512));}return BPromise[_0x6597('0x3b')](_0x3afabd,function(_0x5f58d7){_0x2d8488[_0x6597('0x18')](_0x5f58d7);})[_0x6597('0x2e')](function(){var _0x3a6ccc=[];for(var _0x3445f9=0x0;_0x3445f9<_0x2d8488[_0x6597('0x16')];_0x3445f9+=0x1){var _0x597fdf=_0x2d8488[_0x3445f9];var _0x35186d=createTables(_[_0x6597('0x3c')](_0x597fdf));var _0x508faf;var _0x879d2b=getPDFDocDefinition(_0x35186d);var _0x48446e=getPDFPrinter();var _0x1527b4=_0x48446e[_0x6597('0x3d')](_0x879d2b);if(_0x59b0ea){_0x508faf=path[_0x6597('0x3a')](_0xa961be,_0x3bb512,util['format'](_0x6597('0x3e'),_0x3bb512,_0x3445f9,_0x6597('0x3f')));}else{_0x508faf=path['join'](_0xa961be,util[_0x6597('0x20')](_0x6597('0x40'),_0x3bb512,'pdf'));}_0x3a6ccc['push'](writePDFDocument(_0x1527b4,_0x508faf));}return Promise['all'](_0x3a6ccc);})[_0x6597('0x2e')](function(){if(_0x59b0ea){return new Promise(function(_0x436b57){zipdir(path[_0x6597('0x3a')](_0xa961be,_0x3bb512),{'saveTo':path[_0x6597('0x3a')](_0xa961be,util[_0x6597('0x20')]('%s.%s',_0x3bb512,_0x6597('0x41')))},function(){rimraf(path['join'](_0xa961be,_0x3bb512),function(){});_0x436b57(_0x6597('0x42'));});});}})[_0x6597('0x2e')](function(){if(!_0x59b0ea)return;rimraf(path[_0x6597('0x3a')](_0xa961be,_0x3bb512),function(){});})['then'](function(){logger[_0x6597('0x43')](util[_0x6597('0x20')](_0x6597('0x44'),EXTRACTED_REPORT_ID,_0x6597('0x45')));return analyticExtractedReport(_0x6597('0x46'),_0x59b0ea?util['format'](_0x6597('0x40'),_0x3bb512,_0x59b0ea?_0x6597('0x41'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x6597('0x43')](util[_0x6597('0x20')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x6597('0x45')));return db['AnalyticExtractedReport'][_0x6597('0x47')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x6597('0x2e')](function(_0x3308e2){EXTRACTED_REPORT=_0x3308e2;return dbH[_0x6597('0x30')][_0x6597('0x31')](util[_0x6597('0x20')](_0x6597('0x48'),QUERY),{'type':dbH['sequelize'][_0x6597('0x33')][_0x6597('0x34')]});})[_0x6597('0x2e')](extractReport)[_0x6597('0x49')](function(_0x568bd5){logger[_0x6597('0x43')](util[_0x6597('0x20')](_0x6597('0x4a'),EXTRACTED_REPORT_ID,_0x6597('0x45')),util[_0x6597('0x4b')](_0x568bd5,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x6597('0x4c'));})[_0x6597('0x4d')](function(){process[_0x6597('0x4e')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5b9b74=new PdfPrinter({'Arial':{'normal':__dirname+_0x6597('0x4f'),'bold':__dirname+_0x6597('0x50'),'italics':__dirname+_0x6597('0x51'),'bolditalics':__dirname+_0x6597('0x52')}});return _0x5b9b74;}function getPDFDocDefinitionFromHTML(_0xf8fa26,_0x37fcf1){var _0x14ba6c=util[_0x6597('0x20')](_0x6597('0x53'),_0x37fcf1['channel'],_0x37fcf1[_0x6597('0x54')]);var _0xbf331a=moment()[_0x6597('0x20')](_0x6597('0x55'))[_0x6597('0x13')]();var _0x236263=htmlToPdfmake(_0xf8fa26,{'window':window,'tableAutoSize':!![]});return{'content':[_0x236263],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x6597('0x56'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x6597('0x57'),'style':_0x6597('0x21')}];},'footer':function(_0x3fe8dc,_0x332193){return[{'text':util[_0x6597('0x20')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x14ba6c,_0x3fe8dc,_0x332193,_0xbf331a),'style':'footer'}];}};}function writePDFDocument(_0x42bbf4,_0x4acdc6){return new Promise(function(_0x4bb55d,_0x3b16b0){var _0x409e03=_0x42bbf4[_0x6597('0x58')](fs[_0x6597('0x59')](_0x4acdc6));_0x409e03['on'](_0x6597('0x5a'),function(){_0x4bb55d('finish');});_0x409e03['on'](_0x6597('0x5b'),function(_0x12fedd){_0x3b16b0(_0x12fedd);});_0x42bbf4['end']();});}exports[_0x6597('0x5c')]=function(_0x167d71,_0x30ff2c){var _0x1dcd0e=getPDFPrinter();var _0x47701a=getPDFDocDefinitionFromHTML(_0x167d71,_0x30ff2c);var _0xb6229e=_0x1dcd0e[_0x6597('0x3d')](_0x47701a);return writePDFDocument(_0xb6229e,_0x30ff2c[_0x6597('0x5d')])[_0x6597('0x49')](function(_0x3b4a89){throw _0x3b4a89;});};
\ No newline at end of file
index e4bfe7a..f631dcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f1=['../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','length','range','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.xlsx','existsSync','join','mkdirSync','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','path','lodash','json2xls','rimraf'];(function(_0x4b8ab2,_0x3ce0e4){var _0x440bd9=function(_0x2238b2){while(--_0x2238b2){_0x4b8ab2['push'](_0x4b8ab2['shift']());}};_0x440bd9(++_0x3ce0e4);}(_0xf0f1,0x110));var _0x1f0f=function(_0xb3b452,_0x582e8e){_0xb3b452=_0xb3b452-0x0;var _0x238983=_0xf0f1[_0xb3b452];return _0x238983;};'use strict';var util=require('util');var path=require(_0x1f0f('0x0'));var _=require(_0x1f0f('0x1'));var fs=require('fs');var json2xls=require(_0x1f0f('0x2'));var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x1f0f('0x3'));var db=require('../../mysqldb')['db'];var dbH=require(_0x1f0f('0x4'))['dbH'];var logger=require(_0x1f0f('0x5'))(_0x1f0f('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x1f0f('0x7')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x1f0f('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x31266f,_0x368a4f){var _0x43e7fa={'status':_0x31266f};var _0x2aa60d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x368a4f){_0x43e7fa[_0x1f0f('0x8')]=_0x368a4f;}return db[_0x1f0f('0x9')]['update'](_0x43e7fa,_0x2aa60d);}function main(){var _0x54cd2c=0x1388;var _0x9a9c6b;logger[_0x1f0f('0xa')](util['format'](_0x1f0f('0xb'),EXTRACTED_REPORT_ID,_0x1f0f('0xc')));return db[_0x1f0f('0xd')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x1f0f('0xe')]})['then'](function(_0x3ff5da){if(_0x3ff5da){_0x9a9c6b=_0x3ff5da;_0x54cd2c=_0x9a9c6b[_0x1f0f('0xe')]||0x1388;}})[_0x1f0f('0xf')](function(){return dbH[_0x1f0f('0x10')][_0x1f0f('0x11')](util[_0x1f0f('0x12')](_0x1f0f('0x13'),QUERY),{'type':dbH[_0x1f0f('0x10')][_0x1f0f('0x14')][_0x1f0f('0x15')]});})[_0x1f0f('0xf')](function(_0x392ce2){if(!_0x392ce2[0x0][_0x1f0f('0x16')]){return analyticExtractedReport(_0x1f0f('0x17'));}var _0x1edcc3=[];var _0x4abdc4=0x0;if(_0x9a9c6b[_0x1f0f('0x18')]){if(_0x392ce2&&_0x392ce2[_0x1f0f('0x19')]){var _0xfd1fe5=_[_0x1f0f('0x1a')](_0x392ce2[0x0][_0x1f0f('0x16')]/_0x54cd2c);var _0x7a8297=Number[_0x1f0f('0x1b')](_0x392ce2[0x0][_0x1f0f('0x16')]/_0x54cd2c)?_0x392ce2[0x0]['num']%_0x54cd2c:0x0;_0xfd1fe5['forEach'](function(_0x2fcc02){if(_0x2fcc02>0x0){_0x4abdc4+=_0x54cd2c;}_0x1edcc3[_0x1f0f('0x1c')](dbH['sequelize']['query'](util[_0x1f0f('0x12')](_0x1f0f('0x1d'),QUERY,_0x54cd2c,_0x4abdc4),{'type':dbH[_0x1f0f('0x10')]['QueryTypes'][_0x1f0f('0x15')]}));});if(_0x7a8297>0x0){_0x4abdc4+=_0x54cd2c;_0x1edcc3[_0x1f0f('0x1c')](dbH[_0x1f0f('0x10')][_0x1f0f('0x11')](util[_0x1f0f('0x12')](_0x1f0f('0x1d'),QUERY,_0x7a8297,_0x4abdc4),{'type':dbH[_0x1f0f('0x10')][_0x1f0f('0x14')][_0x1f0f('0x15')]}));}}}else{_0x1edcc3[_0x1f0f('0x1c')](dbH[_0x1f0f('0x10')][_0x1f0f('0x11')](QUERY,{'type':dbH['sequelize'][_0x1f0f('0x14')][_0x1f0f('0x15')]}));}var _0xca1b4a=path['dirname'](PATH);var _0x2b8635=path[_0x1f0f('0x1e')](PATH,_0x1f0f('0x1f'));var _0x464c57=_0x9a9c6b[_0x1f0f('0x18')]&&_0x1edcc3[_0x1f0f('0x19')]>0x1;var _0x31887e=[];if(!fs[_0x1f0f('0x20')](path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635))&&_0x464c57){fs[_0x1f0f('0x22')](path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635));}return BPromise['each'](_0x1edcc3,function(_0x2a99f6){_0x31887e[_0x1f0f('0x1c')](_0x2a99f6);})[_0x1f0f('0xf')](function(){for(var _0xc959a6=0x0;_0xc959a6<_0x31887e[_0x1f0f('0x19')];_0xc959a6+=0x1){var _0x351eb6;var _0x3b7aaa=_0x31887e[_0xc959a6];if(_0x464c57){_0x351eb6=path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635,util[_0x1f0f('0x12')]('%s%d.%s',_0x2b8635,_0xc959a6,_0x1f0f('0x23')));}else{_0x351eb6=path[_0x1f0f('0x21')](_0xca1b4a,util[_0x1f0f('0x12')](_0x1f0f('0x24'),_0x2b8635,'xlsx'));}fs[_0x1f0f('0x25')](_0x351eb6,json2xls(_0x3b7aaa),_0x1f0f('0x26'));}})[_0x1f0f('0xf')](function(){if(_0x464c57){return new Promise(function(_0x1e45c0){zipdir(path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635),{'saveTo':path[_0x1f0f('0x21')](_0xca1b4a,util['format'](_0x1f0f('0x24'),_0x2b8635,_0x1f0f('0x27')))},function(_0x200306,_0xb515a5){rimraf(path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635),function(){});_0x1e45c0('zip\x20finished');});});}})[_0x1f0f('0xf')](function(){logger['info'](util[_0x1f0f('0x12')](_0x1f0f('0x28'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport('Completed',_0x464c57?util['format']('%s.%s',_0x2b8635,_0x464c57?_0x1f0f('0x27'):_0x1f0f('0x23')):null);});})[_0x1f0f('0x29')](function(_0x5cbe80){logger['info'](util[_0x1f0f('0x12')](_0x1f0f('0x2a'),EXTRACTED_REPORT_ID,_0x1f0f('0xc')),util[_0x1f0f('0x2b')](_0x5cbe80,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x1f0f('0x2c')](function(){process[_0x1f0f('0x2d')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x7df3=['exit','util','path','json2xls','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','XLSX','Setting','find','splitSizeXlsx','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','Empty','split','length','range','num','isInteger','forEach','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','.xlsx','existsSync','mkdirSync','join','each','%s%d.%s','xlsx','writeFileSync','binary','%s.%s','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','inspect','Failed','finally'];(function(_0x367b97,_0x116cb5){var _0x18fc7b=function(_0x234412){while(--_0x234412){_0x367b97['push'](_0x367b97['shift']());}};_0x18fc7b(++_0x116cb5);}(_0x7df3,0x1cc));var _0x37df=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x7df3[_0x1facfa];return _0x9ec701;};'use strict';var util=require(_0x37df('0x0'));var path=require(_0x37df('0x1'));var _=require('lodash');var fs=require('fs');var json2xls=require(_0x37df('0x2'));var BPromise=require('bluebird');var zipdir=require(_0x37df('0x3'));var rimraf=require('rimraf');var db=require(_0x37df('0x4'))['db'];var dbH=require('../../mysqldb')[_0x37df('0x5')];var logger=require(_0x37df('0x6'))(_0x37df('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x37df('0x8')][0x2]);var QUERY=process[_0x37df('0x8')][0x3];var PATH=process[_0x37df('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x579adf,_0x56eca4){var _0x559bb3={'status':_0x579adf};var _0x2d9c06={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x56eca4){_0x559bb3[_0x37df('0x9')]=_0x56eca4;}return db[_0x37df('0xa')][_0x37df('0xb')](_0x559bb3,_0x2d9c06);}function main(){var _0x5774fd=0x1388;var _0x1d0991;logger[_0x37df('0xc')](util[_0x37df('0xd')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x37df('0xe')));return db[_0x37df('0xf')][_0x37df('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x37df('0x11')]})[_0x37df('0x12')](function(_0xdae38c){if(_0xdae38c){_0x1d0991=_0xdae38c;_0x5774fd=_0x1d0991[_0x37df('0x11')]||0x1388;}})[_0x37df('0x12')](function(){return dbH['sequelize'][_0x37df('0x13')](util[_0x37df('0xd')](_0x37df('0x14'),QUERY),{'type':dbH['sequelize'][_0x37df('0x15')][_0x37df('0x16')]});})['then'](function(_0x50632c){if(!_0x50632c[0x0]['num']){return analyticExtractedReport(_0x37df('0x17'));}var _0x425c3b=[];var _0x3ed1fa=0x0;if(_0x1d0991[_0x37df('0x18')]){if(_0x50632c&&_0x50632c[_0x37df('0x19')]){var _0xcafa08=_[_0x37df('0x1a')](_0x50632c[0x0][_0x37df('0x1b')]/_0x5774fd);var _0x2ddebe=Number[_0x37df('0x1c')](_0x50632c[0x0][_0x37df('0x1b')]/_0x5774fd)?_0x50632c[0x0][_0x37df('0x1b')]%_0x5774fd:0x0;_0xcafa08[_0x37df('0x1d')](function(_0x9b502){if(_0x9b502>0x0){_0x3ed1fa+=_0x5774fd;}_0x425c3b['push'](dbH[_0x37df('0x1e')]['query'](util[_0x37df('0xd')](_0x37df('0x1f'),QUERY,_0x5774fd,_0x3ed1fa),{'type':dbH['sequelize'][_0x37df('0x15')][_0x37df('0x16')]}));});if(_0x2ddebe>0x0){_0x3ed1fa+=_0x5774fd;_0x425c3b[_0x37df('0x20')](dbH[_0x37df('0x1e')][_0x37df('0x13')](util[_0x37df('0xd')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2ddebe,_0x3ed1fa),{'type':dbH[_0x37df('0x1e')]['QueryTypes'][_0x37df('0x16')]}));}}}else{_0x425c3b['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x37df('0x1e')]['QueryTypes'][_0x37df('0x16')]}));}var _0x177de2=path[_0x37df('0x21')](PATH);var _0x4a28ed=path['basename'](PATH,_0x37df('0x22'));var _0x1323e1=_0x1d0991['split']&&_0x425c3b[_0x37df('0x19')]>0x1;var _0x43cd7e=[];if(!fs[_0x37df('0x23')](path['join'](_0x177de2,_0x4a28ed))&&_0x1323e1){fs[_0x37df('0x24')](path[_0x37df('0x25')](_0x177de2,_0x4a28ed));}return BPromise[_0x37df('0x26')](_0x425c3b,function(_0x443990){_0x43cd7e['push'](_0x443990);})[_0x37df('0x12')](function(){for(var _0x325870=0x0;_0x325870<_0x43cd7e[_0x37df('0x19')];_0x325870+=0x1){var _0x481251;var _0x5716a6=_0x43cd7e[_0x325870];if(_0x1323e1){_0x481251=path[_0x37df('0x25')](_0x177de2,_0x4a28ed,util['format'](_0x37df('0x27'),_0x4a28ed,_0x325870,_0x37df('0x28')));}else{_0x481251=path[_0x37df('0x25')](_0x177de2,util[_0x37df('0xd')]('%s.%s',_0x4a28ed,'xlsx'));}fs[_0x37df('0x29')](_0x481251,json2xls(_0x5716a6),_0x37df('0x2a'));}})[_0x37df('0x12')](function(){if(_0x1323e1){return new Promise(function(_0x93d921){zipdir(path[_0x37df('0x25')](_0x177de2,_0x4a28ed),{'saveTo':path[_0x37df('0x25')](_0x177de2,util[_0x37df('0xd')](_0x37df('0x2b'),_0x4a28ed,_0x37df('0x2c')))},function(_0x215ff9,_0x14aa31){rimraf(path[_0x37df('0x25')](_0x177de2,_0x4a28ed),function(){});_0x93d921(_0x37df('0x2d'));});});}})['then'](function(){logger[_0x37df('0xc')](util[_0x37df('0xd')](_0x37df('0x2e'),EXTRACTED_REPORT_ID,_0x37df('0xe')));return analyticExtractedReport('Completed',_0x1323e1?util[_0x37df('0xd')]('%s.%s',_0x4a28ed,_0x1323e1?'zip':_0x37df('0x28')):null);});})['catch'](function(_0x3227d2){logger[_0x37df('0xc')](util[_0x37df('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x37df('0xe')),util[_0x37df('0x2f')](_0x3227d2,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x37df('0x30'));})[_0x37df('0x31')](function(){process[_0x37df('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
index c83740e..e569238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe26f=['intervals','VoiceExtension','uniq','map','exten','filter','groupBy','hasOwnProperty','priority','extension','find','extensions','push','type','format','CDR(type)=%s','VoiceExtensionId','Set','CDR(routeid)=','context','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','updatedAt','interval','*,*,*,*','IntervalId','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','bulkCreate','rewrite','util','models','Interval','findAll','then'];(function(_0x11fc5b,_0x2e02e5){var _0x344e87=function(_0x216be8){while(--_0x216be8){_0x11fc5b['push'](_0x11fc5b['shift']());}};_0x344e87(++_0x2e02e5);}(_0xe26f,0x187));var _0xfe26=function(_0x514d78,_0x1adaaf){_0x514d78=_0x514d78-0x0;var _0x524895=_0xe26f[_0x514d78];return _0x524895;};'use strict';var _=require('lodash');var util=require(_0xfe26('0x0'));function rewrite(_0x35c26b,_0x4aa84a){var _0x5814be=this;return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x2')][_0xfe26('0x3')]({'raw':!![]})[_0xfe26('0x4')](function(_0x3d6e20){_0x5814be[_0xfe26('0x5')]=_0x3d6e20;return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x6')][_0xfe26('0x3')]({'where':{'IntervalId':_0x4aa84a['IntervalId']},'raw':!![]});})[_0xfe26('0x4')](function(_0x4cf3d7){return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x6')]['findAll']({'where':{'exten':{'$in':_[_0xfe26('0x7')](_[_0xfe26('0x8')](_0x4cf3d7,_0xfe26('0x9')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})['then'](function(_0x50af3e){var _0x2fea76=_[_0xfe26('0xa')](_0x50af3e,{'priority':'1'});var _0xff0388=_[_0xfe26('0xa')](_0x50af3e,{'isApp':0x1});var _0x4a3841=_[_0xfe26('0xb')](_0xff0388,_0xfe26('0x9'));var _0x162d57=['queue','playback'];var _0x44ee21=[];var _0x4d5803=[];for(var _0x4b82a0 in _0x4a3841){if(_0x4a3841[_0xfe26('0xc')](_0x4b82a0)){_0x5814be[_0xfe26('0xd')]=0x2;_0x5814be['extensions']=[];_0x5814be[_0xfe26('0xe')]=_[_0xfe26('0xf')](_0x2fea76,{'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')]});_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':'Set','appdata':util[_0xfe26('0x13')](_0xfe26('0x14'),_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')]),'context':_0x4a3841[_0x4b82a0][0x0]['context'],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});if(_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')]==='inbound'){_0x5814be[_0xfe26('0x10')]['push']({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x17')+_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')],'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be['priority']++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}else if(_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')]===_0xfe26('0x19')){if(_0x5814be[_0xfe26('0xe')]){_0x5814be[_0xfe26('0x10')]['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x1a')+(_0x5814be['extension'][_0xfe26('0x1b')]?_0xfe26('0x1c')+_0x5814be[_0xfe26('0xe')][_0xfe26('0x1b')]+'}':_0xfe26('0x1d')),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}_0x5814be['extensions']['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x17')+_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')],'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});var _0x48b549=_0x5814be[_0xfe26('0xd')]++;_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x1f')+(_0x48b549+0x2)+_0xfe26('0x20')+(_0x48b549+0x1)+')','context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x48b549,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});if(_0x5814be['extension']){_0x5814be[_0xfe26('0x10')]['push']({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':_0xfe26('0x16'),'appdata':_0x5814be[_0xfe26('0xe')]['cutdigits']?_0xfe26('0x21')+_0x5814be[_0xfe26('0xe')]['cutdigits']+'}':_0xfe26('0x22'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x23')+_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')],'context':_0x4a3841[_0x4b82a0][0x0]['context'],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});if(_0x5814be[_0xfe26('0xe')]&&_0x5814be['extension'][_0xfe26('0xc')]('recordingFormat')&&_0x5814be[_0xfe26('0xe')]['recordingFormat']!==_0xfe26('0x24')){_0x5814be['extensions']['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x25'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0]['VoiceExtensionId']});_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':'Set','appdata':_0xfe26('0x26')+_0x5814be[_0xfe26('0xe')][_0xfe26('0x27')]||_0xfe26('0x28'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be['priority']++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}}_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x29'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4a3841[_0x4b82a0][0x0]['context'],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});_0x5814be['extensions']['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x2a'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});for(var _0x1ad24d=0x0,_0x56d7d3=0x0;_0x1ad24d<_0x4a3841[_0x4b82a0][_0xfe26('0x2b')];_0x1ad24d+=0x1,_0x56d7d3=0x0){var _0x2b1e65=_0x4a3841[_0x4b82a0][_0x1ad24d];if(_0x2b1e65[_0xfe26('0x12')]){_0x2b1e65['type']=_0x2b1e65[_0xfe26('0x12')]['toLowerCase']();}var _0x3573a7=[];var _0x41679c=[];delete _0x2b1e65['id'];delete _0x2b1e65['createdAt'];delete _0x2b1e65[_0xfe26('0x2c')];var _0x2761d5=_0x2b1e65[_0xfe26('0x2d')]!==_0xfe26('0x2e')?[_0x2b1e65[_0xfe26('0x2d')]]:_0x2b1e65[_0xfe26('0x2f')]?_[_0xfe26('0x8')](_[_0xfe26('0xa')](_0x5814be[_0xfe26('0x5')],{'IntervalId':_0x2b1e65[_0xfe26('0x2f')]}),_0xfe26('0x2d')):[];if(_0x2b1e65['hasOwnProperty'](_0xfe26('0x30'))){if(_0x2b1e65[_0xfe26('0x30')]&&_0x2b1e65[_0xfe26('0x30')]!=='--'){_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':'CDR(tag)='+_0x2b1e65[_0xfe26('0x30')],'context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65['exten'],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65['VoiceExtensionId']});}}if(_0x2b1e65[_0xfe26('0x12')]==='outbound'&&_0x2b1e65[_0xfe26('0xc')](_0xfe26('0x31'))){if(_0x2b1e65['callerID']){_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':'ExecIf','appdata':_0xfe26('0x32')+_0x2b1e65[_0xfe26('0x31')]+')','context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65['exten'],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be[_0xfe26('0xd')]+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});}else{_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x33'),'context':_0x2b1e65['context'],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});}}if(_0x2b1e65[_0xfe26('0xc')](_0xfe26('0x34'))){if(_0x162d57['indexOf'](_0x2b1e65['app'][_0xfe26('0x35')]())>=0x0&&_0x2b1e65[_0xfe26('0x36')]!==_0xfe26('0x37')){if(_0x2b1e65[_0xfe26('0x34')]){_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x38'),'context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});_0x3573a7['push']({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5['length']+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});}else{_0x3573a7['push']({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x39'),'context':_0x2b1e65['context'],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be[_0xfe26('0xd')]+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});_0x3573a7['push']({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x3a'),'context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be[_0xfe26('0xd')]+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65['VoiceExtensionId']});}}}for(var _0x28c96d=0x0;_0x28c96d<_0x2761d5[_0xfe26('0x2b')];_0x28c96d+=0x1){var _0x1f2cc2=_0x5814be[_0xfe26('0xd')]+_0x2761d5['length'];var _0x284ae9=_0x28c96d===_0x2761d5[_0xfe26('0x2b')]-0x1?_0x5814be[_0xfe26('0xd')]+_0x3573a7[_0xfe26('0x2b')]+_0x41679c[_0xfe26('0x2b')]+0x2:_0x5814be[_0xfe26('0xd')]+_0x28c96d+0x1;_0x3573a7[_0xfe26('0x3b')](_0x28c96d,0x0,{'type':_0x2b1e65[_0xfe26('0x12')],'app':'GotoIfTime','appdata':_0x2761d5[_0x28c96d]+'?'+_0x2b1e65['context']+_0xfe26('0x3c')+_0x1f2cc2+':'+_0x2b1e65[_0xfe26('0x18')]+',${EXTEN},'+_0x284ae9,'exten':_0x2b1e65['exten'],'context':_0x2b1e65['context'],'priority':_0x5814be[_0xfe26('0xd')]+_0x28c96d,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0]['VoiceExtensionId']});}_0x2b1e65['priority']=_0x3573a7[_0xfe26('0x2b')]?_[_0xfe26('0x3d')](_0x3573a7)['priority']+0x1:_0x5814be[_0xfe26('0xd')];_0x5814be['priority']=(_0x41679c['length']?_['last'](_0x41679c)[_0xfe26('0xd')]:_0x2b1e65[_0xfe26('0xd')])+0x1;_0x5814be[_0xfe26('0x10')]=_[_0xfe26('0x3e')](_0x5814be[_0xfe26('0x10')],_0x3573a7,[_0x2b1e65],_0x41679c);}_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x3f'),'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'priority':_0x5814be['priority'],'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});_0x44ee21[_0xfe26('0x11')](_0x4a3841[_0x4b82a0][0x0]['VoiceExtensionId']);_0x4d5803=_[_0xfe26('0x3e')](_0x4d5803,_0x5814be['extensions']);}}return _0x35c26b['transaction'](function(_0x183d7a){return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x6')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x44ee21}},'transaction':_0x183d7a})['then'](function(_0x17ca82){return _0x35c26b['models'][_0xfe26('0x6')][_0xfe26('0x40')](_['sortBy'](_0x4d5803,'priority'),{'transaction':_0x183d7a});});});})['catch'](function(_0x488397){console['error'](_0x488397);});}exports[_0xfe26('0x41')]=rewrite;
\ No newline at end of file
+var _0x29cd=['ExecIf','):Goto(','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','createdAt','*,*,*,*','interval','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','destroy','bulkCreate','sortBy','catch','rewrite','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','uniq','CAST(priority\x20AS\x20UNSIGNED)','filter','exten','hasOwnProperty','priority','extensions','find','push','Set','format','type','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','CDR(destination)=','extension','cutdigits','${EXTEN:','${EXTEN}'];(function(_0xa04c5,_0xffb6df){var _0x18bf9b=function(_0x26c8f7){while(--_0x26c8f7){_0xa04c5['push'](_0xa04c5['shift']());}};_0x18bf9b(++_0xffb6df);}(_0x29cd,0xee));var _0xd29c=function(_0x223bbc,_0x432b03){_0x223bbc=_0x223bbc-0x0;var _0xf6df2c=_0x29cd[_0x223bbc];return _0xf6df2c;};'use strict';var _=require(_0xd29c('0x0'));var util=require(_0xd29c('0x1'));function rewrite(_0x44f886,_0x5885f0){var _0x36b59a=this;return _0x44f886[_0xd29c('0x2')][_0xd29c('0x3')][_0xd29c('0x4')]({'raw':!![]})[_0xd29c('0x5')](function(_0xfc09e4){_0x36b59a[_0xd29c('0x6')]=_0xfc09e4;return _0x44f886[_0xd29c('0x2')][_0xd29c('0x7')]['findAll']({'where':{'IntervalId':_0x5885f0['IntervalId']},'raw':!![]});})[_0xd29c('0x5')](function(_0x2bd166){return _0x44f886[_0xd29c('0x2')][_0xd29c('0x7')][_0xd29c('0x4')]({'where':{'exten':{'$in':_[_0xd29c('0x8')](_['map'](_0x2bd166,'exten'))}},'order':[{'raw':_0xd29c('0x9')}],'raw':!![]});})['then'](function(_0x4d331a){var _0x446752=_[_0xd29c('0xa')](_0x4d331a,{'priority':'1'});var _0x2f9200=_[_0xd29c('0xa')](_0x4d331a,{'isApp':0x1});var _0x4f2957=_['groupBy'](_0x2f9200,_0xd29c('0xb'));var _0x39b241=['queue','playback'];var _0x146ad2=[];var _0x11653c=[];for(var _0x573cad in _0x4f2957){if(_0x4f2957[_0xd29c('0xc')](_0x573cad)){_0x36b59a[_0xd29c('0xd')]=0x2;_0x36b59a[_0xd29c('0xe')]=[];_0x36b59a['extension']=_[_0xd29c('0xf')](_0x446752,{'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')]});_0x36b59a[_0xd29c('0xe')][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0]['type'],'app':_0xd29c('0x11'),'appdata':util[_0xd29c('0x12')]('CDR(type)=%s',_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')]),'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});if(_0x4f2957[_0x573cad][0x0]['type']===_0xd29c('0x16')){_0x36b59a['extensions'][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':'Set','appdata':_0xd29c('0x17')+_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')],'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});}else if(_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')]===_0xd29c('0x18')){if(_0x36b59a['extension']){_0x36b59a[_0xd29c('0xe')][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':_0xd29c('0x19')+(_0x36b59a[_0xd29c('0x1a')][_0xd29c('0x1b')]?_0xd29c('0x1c')+_0x36b59a[_0xd29c('0x1a')][_0xd29c('0x1b')]+'}':_0xd29c('0x1d')),'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0]['VoiceExtensionId']});}_0x36b59a['extensions']['push']({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':'Set','appdata':_0xd29c('0x17')+_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')],'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0]['exten'],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0]['VoiceExtensionId']});var _0x367017=_0x36b59a[_0xd29c('0xd')]++;_0x36b59a[_0xd29c('0xe')]['push']({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x1e'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x367017+0x2)+_0xd29c('0x1f')+(_0x367017+0x1)+')','context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x367017,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});if(_0x36b59a['extension']){_0x36b59a['extensions'][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':_0x36b59a[_0xd29c('0x1a')][_0xd29c('0x1b')]?'CDR(prefix)=${EXTEN:0:'+_0x36b59a[_0xd29c('0x1a')]['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a['priority']++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});}_0x36b59a[_0xd29c('0xe')][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':_0xd29c('0x20')+_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')],'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0]['exten'],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0]['VoiceExtensionId']});if(_0x36b59a['extension']&&_0x36b59a[_0xd29c('0x1a')][_0xd29c('0xc')](_0xd29c('0x21'))&&_0x36b59a[_0xd29c('0x1a')][_0xd29c('0x21')]!==_0xd29c('0x22')){_0x36b59a['extensions'][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':_0xd29c('0x23'),'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0]['exten'],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});_0x36b59a[_0xd29c('0xe')]['push']({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x36b59a[_0xd29c('0x1a')][_0xd29c('0x21')]||_0xd29c('0x24'),'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a['priority']++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});}}_0x36b59a[_0xd29c('0xe')][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0]['type'],'app':_0xd29c('0x11'),'appdata':_0xd29c('0x25'),'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a['priority']++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});_0x36b59a[_0xd29c('0xe')]['push']({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4f2957[_0x573cad][0x0]['context'],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0]['VoiceExtensionId']});_0x36b59a[_0xd29c('0xe')][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':_0xd29c('0x26'),'context':_0x4f2957[_0x573cad][0x0][_0xd29c('0x14')],'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'priority':_0x36b59a[_0xd29c('0xd')]++,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});for(var _0x4f40d3=0x0,_0x407d81=0x0;_0x4f40d3<_0x4f2957[_0x573cad][_0xd29c('0x27')];_0x4f40d3+=0x1,_0x407d81=0x0){var _0x1b027e=_0x4f2957[_0x573cad][_0x4f40d3];if(_0x1b027e['type']){_0x1b027e[_0xd29c('0x13')]=_0x1b027e[_0xd29c('0x13')]['toLowerCase']();}var _0xee4b74=[];var _0x337302=[];delete _0x1b027e['id'];delete _0x1b027e[_0xd29c('0x28')];delete _0x1b027e['updatedAt'];var _0x4f022d=_0x1b027e['interval']!==_0xd29c('0x29')?[_0x1b027e['interval']]:_0x1b027e['IntervalId']?_['map'](_[_0xd29c('0xa')](_0x36b59a['intervals'],{'IntervalId':_0x1b027e['IntervalId']}),_0xd29c('0x2a')):[];if(_0x1b027e[_0xd29c('0xc')]('tag')){if(_0x1b027e['tag']&&_0x1b027e[_0xd29c('0x2b')]!=='--'){_0xee4b74[_0xd29c('0x10')]({'type':_0x1b027e[_0xd29c('0x13')],'app':'Set','appdata':_0xd29c('0x2c')+_0x1b027e[_0xd29c('0x2b')],'context':_0x1b027e[_0xd29c('0x14')],'exten':_0x1b027e[_0xd29c('0xb')],'priority':_0x4f022d[_0xd29c('0x27')]+_0x36b59a[_0xd29c('0xd')]+_0x407d81++,'VoiceExtensionId':_0x1b027e[_0xd29c('0x15')]});}}if(_0x1b027e[_0xd29c('0x13')]===_0xd29c('0x18')&&_0x1b027e[_0xd29c('0xc')](_0xd29c('0x2d'))){if(_0x1b027e[_0xd29c('0x2d')]){_0xee4b74['push']({'type':_0x1b027e[_0xd29c('0x13')],'app':_0xd29c('0x1e'),'appdata':_0xd29c('0x2e')+_0x1b027e[_0xd29c('0x2d')]+')','context':_0x1b027e[_0xd29c('0x14')],'exten':_0x1b027e['exten'],'priority':_0x4f022d[_0xd29c('0x27')]+_0x36b59a[_0xd29c('0xd')]+_0x407d81++,'VoiceExtensionId':_0x1b027e[_0xd29c('0x15')]});}else{_0xee4b74[_0xd29c('0x10')]({'type':_0x1b027e[_0xd29c('0x13')],'app':_0xd29c('0x1e'),'appdata':_0xd29c('0x2f'),'context':_0x1b027e[_0xd29c('0x14')],'exten':_0x1b027e[_0xd29c('0xb')],'priority':_0x4f022d[_0xd29c('0x27')]+_0x36b59a[_0xd29c('0xd')]+_0x407d81++,'VoiceExtensionId':_0x1b027e[_0xd29c('0x15')]});}}if(_0x1b027e[_0xd29c('0xc')](_0xd29c('0x30'))){if(_0x39b241[_0xd29c('0x31')](_0x1b027e[_0xd29c('0x32')]['toLowerCase']())>=0x0&&_0x1b027e[_0xd29c('0x33')]!=='custom'){if(_0x1b027e[_0xd29c('0x30')]){_0xee4b74[_0xd29c('0x10')]({'type':_0x1b027e[_0xd29c('0x13')],'app':_0xd29c('0x1e'),'appdata':_0xd29c('0x34'),'context':_0x1b027e[_0xd29c('0x14')],'exten':_0x1b027e[_0xd29c('0xb')],'priority':_0x4f022d['length']+_0x36b59a[_0xd29c('0xd')]+_0x407d81++,'VoiceExtensionId':_0x1b027e[_0xd29c('0x15')]});_0xee4b74['push']({'type':_0x1b027e[_0xd29c('0x13')],'app':'Set','appdata':_0xd29c('0x35'),'context':_0x1b027e[_0xd29c('0x14')],'exten':_0x1b027e[_0xd29c('0xb')],'priority':_0x4f022d[_0xd29c('0x27')]+_0x36b59a['priority']+_0x407d81++,'VoiceExtensionId':_0x1b027e['VoiceExtensionId']});}else{_0xee4b74['push']({'type':_0x1b027e['type'],'app':_0xd29c('0x1e'),'appdata':_0xd29c('0x36'),'context':_0x1b027e[_0xd29c('0x14')],'exten':_0x1b027e[_0xd29c('0xb')],'priority':_0x4f022d[_0xd29c('0x27')]+_0x36b59a[_0xd29c('0xd')]+_0x407d81++,'VoiceExtensionId':_0x1b027e[_0xd29c('0x15')]});_0xee4b74[_0xd29c('0x10')]({'type':_0x1b027e[_0xd29c('0x13')],'app':_0xd29c('0x11'),'appdata':_0xd29c('0x37'),'context':_0x1b027e[_0xd29c('0x14')],'exten':_0x1b027e[_0xd29c('0xb')],'priority':_0x4f022d['length']+_0x36b59a[_0xd29c('0xd')]+_0x407d81++,'VoiceExtensionId':_0x1b027e[_0xd29c('0x15')]});}}}for(var _0x120029=0x0;_0x120029<_0x4f022d[_0xd29c('0x27')];_0x120029+=0x1){var _0x3dbfd9=_0x36b59a[_0xd29c('0xd')]+_0x4f022d[_0xd29c('0x27')];var _0x115036=_0x120029===_0x4f022d['length']-0x1?_0x36b59a[_0xd29c('0xd')]+_0xee4b74[_0xd29c('0x27')]+_0x337302['length']+0x2:_0x36b59a[_0xd29c('0xd')]+_0x120029+0x1;_0xee4b74[_0xd29c('0x38')](_0x120029,0x0,{'type':_0x1b027e[_0xd29c('0x13')],'app':_0xd29c('0x39'),'appdata':_0x4f022d[_0x120029]+'?'+_0x1b027e[_0xd29c('0x14')]+',${EXTEN},'+_0x3dbfd9+':'+_0x1b027e[_0xd29c('0x14')]+_0xd29c('0x3a')+_0x115036,'exten':_0x1b027e[_0xd29c('0xb')],'context':_0x1b027e[_0xd29c('0x14')],'priority':_0x36b59a[_0xd29c('0xd')]+_0x120029,'VoiceExtensionId':_0x4f2957[_0x573cad][0x0]['VoiceExtensionId']});}_0x1b027e[_0xd29c('0xd')]=_0xee4b74[_0xd29c('0x27')]?_['last'](_0xee4b74)[_0xd29c('0xd')]+0x1:_0x36b59a[_0xd29c('0xd')];_0x36b59a[_0xd29c('0xd')]=(_0x337302['length']?_[_0xd29c('0x3b')](_0x337302)['priority']:_0x1b027e[_0xd29c('0xd')])+0x1;_0x36b59a[_0xd29c('0xe')]=_[_0xd29c('0x3c')](_0x36b59a['extensions'],_0xee4b74,[_0x1b027e],_0x337302);}_0x36b59a[_0xd29c('0xe')][_0xd29c('0x10')]({'type':_0x4f2957[_0x573cad][0x0][_0xd29c('0x13')],'app':_0xd29c('0x3d'),'exten':_0x4f2957[_0x573cad][0x0][_0xd29c('0xb')],'context':_0x4f2957[_0x573cad][0x0]['context'],'priority':_0x36b59a['priority'],'VoiceExtensionId':_0x4f2957[_0x573cad][0x0][_0xd29c('0x15')]});_0x146ad2[_0xd29c('0x10')](_0x4f2957[_0x573cad][0x0]['VoiceExtensionId']);_0x11653c=_[_0xd29c('0x3c')](_0x11653c,_0x36b59a[_0xd29c('0xe')]);}}return _0x44f886['transaction'](function(_0xdc96fc){return _0x44f886[_0xd29c('0x2')][_0xd29c('0x7')][_0xd29c('0x3e')]({'where':{'VoiceExtensionId':{'$in':_0x146ad2}},'transaction':_0xdc96fc})[_0xd29c('0x5')](function(_0x235b1c){return _0x44f886[_0xd29c('0x2')][_0xd29c('0x7')][_0xd29c('0x3f')](_[_0xd29c('0x40')](_0x11653c,_0xd29c('0xd')),{'transaction':_0xdc96fc});});});})[_0xd29c('0x41')](function(_0x16611f){console['error'](_0x16611f);});}exports[_0xd29c('0x42')]=rewrite;
\ No newline at end of file
index a403647..2d51503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x000d=['all','VoiceQueue','BlackLists','Campaign','dialCheckDuplicateType','CmList','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resume','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','resolve','createReadStream','parse','duplicate','CSV\x20parsed\x20correctly!','info','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','redis','localhost','socket.io-emitter','register','argv','null','Missing\x20filepath\x20parameter!','undefined','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','index','test','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','CompanyId','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_contacts','id\x20IN\x20?','str','calleridnum','from','cm_hopper_final','\x20=\x20?','deletedAt\x20IS\x20NULL','cm_hopper_black','findAll','outbound','Lists','get','always','sequelize','query','VoiceQueueId'];(function(_0x2377ee,_0x489a62){var _0x1c32d9=function(_0x3499ff){while(--_0x3499ff){_0x2377ee['push'](_0x2377ee['shift']());}};_0x1c32d9(++_0x489a62);}(_0x000d,0x16d));var _0xd000=function(_0x49075c,_0x53e671){_0x49075c=_0x49075c-0x0;var _0x10a6e2=_0x000d[_0x49075c];return _0x10a6e2;};'use strict';var BPromise=require(_0xd000('0x0'));var util=require(_0xd000('0x1'));var _=require(_0xd000('0x2'));var fs=require('fs');var squel=require(_0xd000('0x3'));var Papa=require(_0xd000('0x4'));var Redis=require(_0xd000('0x5'));var db=require(_0xd000('0x6'))['db'];var config=require(_0xd000('0x7'));var logger=require(_0xd000('0x8'))(_0xd000('0x9'));config['redis']=_[_0xd000('0xa')](config[_0xd000('0xb')],{'host':_0xd000('0xc'),'port':0x18eb});var socket=require(_0xd000('0xd'))(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')[_0xd000('0xe')](socket);try{if(!process[_0xd000('0xf')][0x2]||process[_0xd000('0xf')][0x2]==='undefined'||process[_0xd000('0xf')][0x2]===_0xd000('0x10')){throw new Error(_0xd000('0x11'));}var FILEPATH=process[_0xd000('0xf')][0x2];if(!process[_0xd000('0xf')][0x3]||process['argv'][0x3]===_0xd000('0x12')||process[_0xd000('0xf')][0x3]==='null'||!process[_0xd000('0xf')][0x4]||process[_0xd000('0xf')][0x4]===_0xd000('0x12')||process[_0xd000('0xf')][0x4]==='null'){throw new Error(_0xd000('0x13'));}var FIELDS=_['zipObject'](process[_0xd000('0xf')][0x3][_0xd000('0x14')](','),process['argv'][0x4][_0xd000('0x14')](','));if(!process[_0xd000('0xf')][0x5]||process['argv'][0x5]===_0xd000('0x12')||process[_0xd000('0xf')][0x5]===_0xd000('0x10')){throw new Error(_0xd000('0x15'));}var LISTID=process[_0xd000('0xf')][0x5];var COMPANYID=process[_0xd000('0xf')][0x6]&&process[_0xd000('0xf')][0x6]!==_0xd000('0x12')&&process['argv'][0x6]!==_0xd000('0x10')?process[_0xd000('0xf')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xd000('0xf')][0x7]!==_0xd000('0x12')&&process[_0xd000('0xf')][0x7]!==_0xd000('0x10')?process[_0xd000('0xf')][0x7]:null;if(!process[_0xd000('0xf')][0x8]||process['argv'][0x8]==='undefined'||process['argv'][0x8]===_0xd000('0x10')){throw new Error(_0xd000('0x16'));}var SOCKET_TIMESTAMP=process[_0xd000('0xf')][0x8];}catch(_0xbaf987){logger[_0xd000('0x17')](_0xbaf987);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(_0x1201fd,_0xbeea87,_0x14baaa,_0x4aaff6){var _0x205b29={'message':_0xbeea87};_0x205b29[_0x1201fd]=!![];if(_0x14baaa){_0x205b29['contact']=_0x14baaa;}if(_0x4aaff6){_0x205b29[_0xd000('0x18')]=_0x4aaff6;}return _0x205b29;}function isEmail(_0x501206){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))*$/[_0xd000('0x19')](_0x501206);}function checkRow(_0x2d19fb,_0x17982a,_0xd5bd81){return new BPromise(function(_0x583b3d,_0x21ed2d){if(_['isNil'](_0x2d19fb)){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0xd5bd81));}if(_0x2d19fb[_0xd000('0x1a')]&&_0x2d19fb[_0xd000('0x1a')][_0xd000('0x1b')]){var _0x2c693a=_[_0xd000('0x1c')](_0x2d19fb['errors'],_0xd000('0x1d'))[_0xd000('0x1e')](';');return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),_0x2c693a,null,_0xd5bd81));}var _0x3ab44d={};for(var _0x29d5e8 in FIELDS){if(FIELDS[_0xd000('0x1f')](_0x29d5e8)&&FIELDS[_0x29d5e8]){_0x3ab44d[_0x29d5e8]=_0x2d19fb[_0xd000('0x20')][0x0][FIELDS[_0x29d5e8]]||_0x2d19fb[_0xd000('0x20')][0x0]['\ufeff'+FIELDS[_0x29d5e8]];}}if(!_0x3ab44d[_0xd000('0x21')]){return _0x21ed2d(handleCheckRowError('error',_0xd000('0x22'),null,_0xd5bd81));}if(!_0x3ab44d[_0xd000('0x23')]){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),_0xd000('0x24'),null,_0xd5bd81));}if(_0x3ab44d[_0xd000('0x25')]){var _0x4cfbe3=moment(_0x3ab44d[_0xd000('0x25')],_0xd000('0x26'));if(!_0x4cfbe3['isValid']()){return _0x21ed2d(handleCheckRowError('error',_0xd000('0x27'),null,_0xd5bd81));}}if(_0x3ab44d[_0xd000('0x28')]){if(!isEmail(_0x3ab44d[_0xd000('0x28')])){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),'email\x20format\x20is\x20not\x20valid!',null,_0xd5bd81));}}_0x3ab44d[_0xd000('0x29')]=LISTID;_0x3ab44d[_0xd000('0x2a')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xd000('0x1b')]&&_0x17982a){var _0x31913f={};for(var _0x5e56ea=0x0,_0x5a10ad=DUPLICATES[_0xd000('0x1b')];_0x5e56ea<_0x5a10ad;_0x5e56ea+=0x1){_0x31913f[DUPLICATES[_0x5e56ea]]=_0x3ab44d[DUPLICATES[_0x5e56ea]];}var _0x13c473=_['find'](_0x17982a,_0x31913f);if(_0x13c473){return _0x21ed2d(handleCheckRowError('duplicate',_0xd000('0x2b'),_0x13c473,_0xd5bd81));}}return db[_0xd000('0x2c')][_0xd000('0x2d')](_0x3ab44d,{'raw':!![],'hooks':![],'fields':_[_0xd000('0x2e')](_0x3ab44d)})[_0xd000('0x2f')](function(_0x33d2a5){if(DUPLICATES&&DUPLICATES[_0xd000('0x1b')]&&_0x17982a){_0x17982a[_0xd000('0x30')](_[_0xd000('0x31')](_0x3ab44d,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x33d2a5['id'];return _0x583b3d();})[_0xd000('0x32')](function(_0x575c32){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),_0xd000('0x33')+(_0x575c32[_0xd000('0x1d')]||JSON['stringify'](_0x575c32)),null,_0xd5bd81));});});}function checkHopper(){function _0x15d795(){return function(_0x318fb1){logger[_0xd000('0x17')](_0xd000('0x34'),_0xd000('0x35'),util['inspect'](_0x318fb1,{'showHidden':![],'depth':null}));};}var _0x47bb81=function(_0x4f8e0d,_0x6ffc2){var _0x30d1d3=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x38'))[_0xd000('0x39')]([_0xd000('0x23'),_0xd000('0x3a'),_0xd000('0x3b'),_0xd000('0x29'),_0x6ffc2,_0xd000('0x3c'),_0xd000('0x3d')],squel[_0xd000('0x3e')]()['field'](_0xd000('0x23'),'phone')[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3a'))['field']('id',_0xd000('0x3b'))[_0xd000('0x3f')](LISTID[_0xd000('0x41')](),_0xd000('0x29'))['field'](_0x4f8e0d['id']['toString'](),_0x6ffc2)[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3c'))[_0xd000('0x3f')](_0xd000('0x40'),'updatedAt')['from']('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0xd000('0x42')](_0xd000('0x43'),LISTID[_0xd000('0x41')]())[_0xd000('0x42')](_0xd000('0x44'))[_0xd000('0x42')](_0xd000('0x45'),squel[_0xd000('0x3e')]()[_0xd000('0x3f')]('phone')['from'](_0xd000('0x38'))[_0xd000('0x42')](_0x6ffc2+'\x20=\x20?',_0x4f8e0d['id'][_0xd000('0x41')]())))['toString']();return _0x30d1d3;};var _0xb567c8=function(_0x590eae,_0x8c2a41){var _0xd6c164=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x38'))[_0xd000('0x39')]([_0xd000('0x23'),_0xd000('0x3a'),'ContactId','ListId',_0x8c2a41,_0xd000('0x3c'),_0xd000('0x3d')],squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x23'),_0xd000('0x23'))[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3a'))[_0xd000('0x3f')]('id',_0xd000('0x3b'))[_0xd000('0x3f')](LISTID[_0xd000('0x41')](),_0xd000('0x29'))[_0xd000('0x3f')](_0x590eae['id'][_0xd000('0x41')](),_0x8c2a41)[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3c'))['field']('NOW()',_0xd000('0x3d'))['from'](_0xd000('0x46'))[_0xd000('0x42')]('deletedAt\x20IS\x20NULL')[_0xd000('0x42')]('ListId\x20=\x20?',LISTID[_0xd000('0x41')]())[_0xd000('0x42')](_0xd000('0x47'),squel[_0xd000('0x48')](hopperContacts))[_0xd000('0x42')](_0xd000('0x44'))[_0xd000('0x42')](_0xd000('0x45'),squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x49'))[_0xd000('0x4a')](_0xd000('0x4b'))['where'](_0x8c2a41+'\x20=\x20?',_0x590eae['id'][_0xd000('0x41')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xd000('0x3e')]()['field'](_0xd000('0x23'))[_0xd000('0x4a')](_0xd000('0x38'))[_0xd000('0x42')](_0x8c2a41+_0xd000('0x4c'),_0x590eae['id'][_0xd000('0x41')]())))[_0xd000('0x41')]();return _0xd6c164;};function _0x5934e7(_0x38b0c4,_0x1433d5){var _0x1f08c6=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x38'))['fromQuery']([_0xd000('0x23'),'scheduledAt',_0xd000('0x3b'),_0xd000('0x29'),_0x1433d5,_0xd000('0x3c'),_0xd000('0x3d')],squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x23'),_0xd000('0x23'))[_0xd000('0x3f')](_0xd000('0x40'),'scheduledAt')[_0xd000('0x3f')]('id','ContactId')[_0xd000('0x3f')](LISTID['toString'](),_0xd000('0x29'))[_0xd000('0x3f')](_0x38b0c4['id'][_0xd000('0x41')](),_0x1433d5)['field'](_0xd000('0x40'),_0xd000('0x3c'))[_0xd000('0x3f')](_0xd000('0x40'),'updatedAt')[_0xd000('0x4a')](_0xd000('0x46'))[_0xd000('0x42')](_0xd000('0x4d'))[_0xd000('0x42')](_0xd000('0x43'),LISTID[_0xd000('0x41')]())[_0xd000('0x42')](_0xd000('0x47'),squel[_0xd000('0x48')](hopperContacts))[_0xd000('0x42')]('phone\x20IS\x20NOT\x20NULL'))[_0xd000('0x41')]();return _0x1f08c6;}function _0x26694a(_0x1854cf,_0x483087){var _0x2144e8=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x4e'))['fromQuery']([_0xd000('0x23'),_0xd000('0x3b'),_0xd000('0x29'),_0x483087,'createdAt',_0xd000('0x3d')],squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x23'),_0xd000('0x23'))['field']('id',_0xd000('0x3b'))[_0xd000('0x3f')](LISTID[_0xd000('0x41')](),'ListId')[_0xd000('0x3f')](_0x1854cf['id'][_0xd000('0x41')](),_0x483087)[_0xd000('0x3f')]('NOW()',_0xd000('0x3c'))[_0xd000('0x3f')](_0xd000('0x40'),'updatedAt')[_0xd000('0x4a')](_0xd000('0x46'))['where']('deletedAt\x20IS\x20NULL')[_0xd000('0x42')]('ListId\x20=\x20?',LISTID['toString']())[_0xd000('0x42')]('id\x20IN\x20?',squel[_0xd000('0x48')](hopperContacts))[_0xd000('0x42')](_0xd000('0x44')))[_0xd000('0x41')]();return _0x2144e8;}return db['VoiceQueue'][_0xd000('0x4f')]({'where':{'type':_0xd000('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0xd000('0x51'),'where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x52aab1){var _0x2ead70=[];if(_0x52aab1){var _0x27fbb7;for(var _0x3a24c7=0x0,_0x8ab62a;_0x3a24c7<_0x52aab1[_0xd000('0x1b')];_0x3a24c7+=0x1){_0x8ab62a=_0x52aab1[_0x3a24c7][_0xd000('0x52')]({'plain':!![]});switch(_0x8ab62a['dialCheckDuplicateType']){case _0xd000('0x53'):_0x2ead70['push'](db[_0xd000('0x54')][_0xd000('0x55')](_0xb567c8(_0x8ab62a,'VoiceQueueId'))['then'](function(){})['catch'](_0x15d795()));break;case'onlyIfOpen':_0x2ead70[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0x47bb81(_0x8ab62a,_0xd000('0x56')))['then'](function(){})[_0xd000('0x32')](_0x15d795()));break;default:_0x2ead70[_0xd000('0x30')](db[_0xd000('0x54')]['query'](_0x5934e7(_0x8ab62a,_0xd000('0x56')))['then'](function(){})['catch'](_0x15d795()));}}}return _0x2ead70;})[_0xd000('0x57')]()[_0xd000('0x2f')](function(){return db[_0xd000('0x58')][_0xd000('0x4f')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xd000('0x59'),'where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x15fe6e){var _0x3b51e9=[];if(_0x15fe6e){var _0x5b4be4;for(var _0x2d1bfe=0x0,_0x53508a;_0x2d1bfe<_0x15fe6e[_0xd000('0x1b')];_0x2d1bfe+=0x1){_0x53508a=_0x15fe6e[_0x2d1bfe]['get']({'plain':!![]});_0x3b51e9[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0x26694a(_0x53508a,_0xd000('0x56')))[_0xd000('0x2f')](function(){})[_0xd000('0x32')](_0x15d795()));}}return _0x3b51e9;})[_0xd000('0x57')]();})[_0xd000('0x2f')](function(){return db[_0xd000('0x5a')][_0xd000('0x4f')]({'attributes':['id',_0xd000('0x5b')],'include':[{'model':db[_0xd000('0x5c')],'as':_0xd000('0x51'),'where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x3e043f){var _0xcd2895=[];if(_0x3e043f){for(var _0x3e7006=0x0,_0x3a7dde;_0x3e7006<_0x3e043f['length'];_0x3e7006+=0x1){_0x3a7dde=_0x3e043f[_0x3e7006][_0xd000('0x52')]({'plain':!![]});switch(_0x3a7dde[_0xd000('0x5b')]){case _0xd000('0x53'):_0xcd2895[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0xb567c8(_0x3a7dde,_0xd000('0x5d')))[_0xd000('0x2f')](function(){})[_0xd000('0x32')](_0x15d795()));break;case'onlyIfOpen':_0xcd2895['push'](db['sequelize']['query'](_0x47bb81(_0x3a7dde,_0xd000('0x5d')))[_0xd000('0x2f')](function(){})[_0xd000('0x32')](_0x15d795()));break;default:_0xcd2895[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0x5934e7(_0x3a7dde,_0xd000('0x5d')))['then'](function(){})['catch'](_0x15d795()));}}}return _0xcd2895;})['all']();})[_0xd000('0x2f')](function(){return db[_0xd000('0x5a')][_0xd000('0x4f')]({'attributes':['id'],'include':[{'model':db[_0xd000('0x5c')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x88bbf0){var _0x57e9e5=[];if(_0x88bbf0){for(var _0x53c36f=0x0,_0x4d2bee;_0x53c36f<_0x88bbf0[_0xd000('0x1b')];_0x53c36f+=0x1){_0x4d2bee=_0x88bbf0[_0x53c36f][_0xd000('0x52')]({'plain':!![]});_0x57e9e5['push'](db[_0xd000('0x54')][_0xd000('0x55')](_0x26694a(_0x4d2bee,'CampaignId'))['then'](function(){})[_0xd000('0x32')](_0x15d795()));}}return _0x57e9e5;})['all']();})[_0xd000('0x32')](function(_0x4c5fee){logger['error'](_0xd000('0x5e'),_0xd000('0x5f'),_0x4c5fee['message']);});}var processPromises=function(_0x59aea3){return BPromise[_0xd000('0x57')](promises)[_0xd000('0x2f')](function(_0x3529c6){})['catch'](function(_0x26f0b6){logger[_0xd000('0x17')](_0xd000('0x60'),JSON[_0xd000('0x61')](_0x26f0b6));})[_0xd000('0x62')](function(){socket[_0xd000('0x63')](_0xd000('0x64')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x59aea3){return _0x59aea3[_0xd000('0x65')]();}});};var endCsv=function(){return BPromise['resolve']()['then'](function(){if(hopperContacts){return checkHopper();}})[_0xd000('0x2f')](function(){socket[_0xd000('0x63')](_0xd000('0x64')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xd000('0x66')](FILEPATH);}catch(_0x4e090d){logger[_0xd000('0x17')](_0xd000('0x67'),JSON[_0xd000('0x61')](_0x4e090d));}finally{process[_0xd000('0x68')](0x0);}});};process['on'](_0xd000('0x69'),function(){logger['info']('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0xd000('0x6a')]()[_0xd000('0x2f')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xd000('0x14')](',');return db[_0xd000('0x2c')][_0xd000('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xd000('0x2f')](function(_0x572c4c){var _0x2e545d=fs[_0xd000('0x6b')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xd000('0x6c')](_0x2e545d,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2fd2b4,_0x57bf72){total+=0x1;var _0x22b9b2=total;promises[_0xd000('0x30')](checkRow(_0x2fd2b4,_0x572c4c,_0x22b9b2)[_0xd000('0x2f')](function(){success+=0x1;})['catch'](function(_0x4a4a4c){if(_0x4a4a4c[_0xd000('0x17')]){errors+=0x1;delete _0x4a4a4c['error'];}else if(_0x4a4a4c[_0xd000('0x6d')]){duplicates+=0x1;delete _0x4a4a4c[_0xd000('0x6d')];}rows[_0xd000('0x30')](_0x4a4a4c);}));if(total%0xc8===0x0){_0x57bf72['pause']();return processPromises(_0x57bf72);}},'complete':function(){return processPromises()[_0xd000('0x2f')](function(){logger['info'](_0xd000('0x6e'));endCsv();});},'error':function(_0x2b46d6,_0xfe2836){logger[_0xd000('0x6f')]('CSV\x20parse\x20error',JSON[_0xd000('0x61')](_0x2b46d6));endCsv();}});})['catch'](function(_0x45b91f){logger[_0xd000('0x17')](_0xd000('0x70'),JSON[_0xd000('0x61')](_0x45b91f));});}main();
\ No newline at end of file
+var _0x5245=['Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','cm_hopper','scheduledAt','ContactId','updatedAt','field','toString','NOW()','createdAt','from','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','fromQuery','select','str','calleridnum','cm_hopper_final','id\x20IN\x20?','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','get','sequelize','query','catch','onlyIfOpen','VoiceQueueId','all','BlackLists','Campaign','always','CampaignId','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','resolve','unlinkSync','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','api','redis','defaults','localhost','socket.io-emitter','argv','undefined','zipObject','split','null','Missing\x20ListId\x20parameter!','error','contact','isNil','errors','map','message','join','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','CompanyId','length','find','duplicate','Duplicate\x20Contact','CmContact','create','then','push','pick'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x5245,0x114));var _0x5524=function(_0x23055f,_0x22a833){_0x23055f=_0x23055f-0x0;var _0x31bd9d=_0x5245[_0x23055f];return _0x31bd9d;};'use strict';var BPromise=require(_0x5524('0x0'));var util=require(_0x5524('0x1'));var _=require(_0x5524('0x2'));var fs=require('fs');var squel=require(_0x5524('0x3'));var Papa=require(_0x5524('0x4'));var Redis=require(_0x5524('0x5'));var db=require(_0x5524('0x6'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x5524('0x7'));config[_0x5524('0x8')]=_[_0x5524('0x9')](config['redis'],{'host':_0x5524('0xa'),'port':0x18eb});var socket=require(_0x5524('0xb'))(new Redis(config[_0x5524('0x8')]));require('../../../api/cmContact/cmContact.socket')['register'](socket);try{if(!process[_0x5524('0xc')][0x2]||process[_0x5524('0xc')][0x2]==='undefined'||process['argv'][0x2]==='null'){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x5524('0xc')][0x2];if(!process[_0x5524('0xc')][0x3]||process[_0x5524('0xc')][0x3]===_0x5524('0xd')||process[_0x5524('0xc')][0x3]==='null'||!process[_0x5524('0xc')][0x4]||process[_0x5524('0xc')][0x4]===_0x5524('0xd')||process[_0x5524('0xc')][0x4]==='null'){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x5524('0xe')](process[_0x5524('0xc')][0x3][_0x5524('0xf')](','),process['argv'][0x4]['split'](','));if(!process[_0x5524('0xc')][0x5]||process[_0x5524('0xc')][0x5]==='undefined'||process[_0x5524('0xc')][0x5]===_0x5524('0x10')){throw new Error(_0x5524('0x11'));}var LISTID=process[_0x5524('0xc')][0x5];var COMPANYID=process[_0x5524('0xc')][0x6]&&process[_0x5524('0xc')][0x6]!==_0x5524('0xd')&&process['argv'][0x6]!=='null'?process[_0x5524('0xc')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x5524('0xc')][0x7]!=='undefined'&&process[_0x5524('0xc')][0x7]!==_0x5524('0x10')?process[_0x5524('0xc')][0x7]:null;if(!process[_0x5524('0xc')][0x8]||process[_0x5524('0xc')][0x8]===_0x5524('0xd')||process[_0x5524('0xc')][0x8]===_0x5524('0x10')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x5524('0xc')][0x8];}catch(_0x553c8d){logger[_0x5524('0x12')](_0x553c8d);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(_0x3283e7,_0x2e70f2,_0x2f00c1,_0x29bb14){var _0x8ad643={'message':_0x2e70f2};_0x8ad643[_0x3283e7]=!![];if(_0x2f00c1){_0x8ad643[_0x5524('0x13')]=_0x2f00c1;}if(_0x29bb14){_0x8ad643['index']=_0x29bb14;}return _0x8ad643;}function isEmail(_0xee1c2){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0xee1c2);}function checkRow(_0x27b258,_0x1270f7,_0x454b96){return new BPromise(function(_0x53c1db,_0x2daa2b){if(_[_0x5524('0x14')](_0x27b258)){return _0x2daa2b(handleCheckRowError(_0x5524('0x12'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x454b96));}if(_0x27b258['errors']&&_0x27b258[_0x5524('0x15')]['length']){var _0x2e55b7=_[_0x5524('0x16')](_0x27b258[_0x5524('0x15')],_0x5524('0x17'))[_0x5524('0x18')](';');return _0x2daa2b(handleCheckRowError(_0x5524('0x12'),_0x2e55b7,null,_0x454b96));}var _0x28d814={};for(var _0x448d01 in FIELDS){if(FIELDS['hasOwnProperty'](_0x448d01)&&FIELDS[_0x448d01]){_0x28d814[_0x448d01]=_0x27b258[_0x5524('0x19')][0x0][FIELDS[_0x448d01]]||_0x27b258[_0x5524('0x19')][0x0]['\ufeff'+FIELDS[_0x448d01]];}}if(!_0x28d814['firstName']){return _0x2daa2b(handleCheckRowError(_0x5524('0x12'),_0x5524('0x1a'),null,_0x454b96));}if(!_0x28d814[_0x5524('0x1b')]){return _0x2daa2b(handleCheckRowError('error',_0x5524('0x1c'),null,_0x454b96));}if(_0x28d814[_0x5524('0x1d')]){var _0x37240d=moment(_0x28d814[_0x5524('0x1d')],_0x5524('0x1e'));if(!_0x37240d[_0x5524('0x1f')]()){return _0x2daa2b(handleCheckRowError('error',_0x5524('0x20'),null,_0x454b96));}}if(_0x28d814[_0x5524('0x21')]){if(!isEmail(_0x28d814[_0x5524('0x21')])){return _0x2daa2b(handleCheckRowError(_0x5524('0x12'),'email\x20format\x20is\x20not\x20valid!',null,_0x454b96));}}_0x28d814[_0x5524('0x22')]=LISTID;_0x28d814[_0x5524('0x23')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x5524('0x24')]&&_0x1270f7){var _0x2aefab={};for(var _0x2a5751=0x0,_0x22a373=DUPLICATES['length'];_0x2a5751<_0x22a373;_0x2a5751+=0x1){_0x2aefab[DUPLICATES[_0x2a5751]]=_0x28d814[DUPLICATES[_0x2a5751]];}var _0x527bae=_[_0x5524('0x25')](_0x1270f7,_0x2aefab);if(_0x527bae){return _0x2daa2b(handleCheckRowError(_0x5524('0x26'),_0x5524('0x27'),_0x527bae,_0x454b96));}}return db[_0x5524('0x28')][_0x5524('0x29')](_0x28d814,{'raw':!![],'hooks':![],'fields':_['keys'](_0x28d814)})[_0x5524('0x2a')](function(_0xf0fc){if(DUPLICATES&&DUPLICATES['length']&&_0x1270f7){_0x1270f7[_0x5524('0x2b')](_[_0x5524('0x2c')](_0x28d814,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0xf0fc['id'];return _0x53c1db();})['catch'](function(_0x564f75){return _0x2daa2b(handleCheckRowError(_0x5524('0x12'),_0x5524('0x2d')+(_0x564f75[_0x5524('0x17')]||JSON[_0x5524('0x2e')](_0x564f75)),null,_0x454b96));});});}function checkHopper(){function _0x221314(){return function(_0x60d7c8){logger['error'](_0x5524('0x2f'),_0x5524('0x30'),util[_0x5524('0x31')](_0x60d7c8,{'showHidden':![],'depth':null}));};}var _0x45150c=function(_0x58aadf,_0xd209a5){var _0x2d9d9c=squel[_0x5524('0x32')]()[_0x5524('0x33')](_0x5524('0x34'))['fromQuery'](['phone',_0x5524('0x35'),_0x5524('0x36'),_0x5524('0x22'),_0xd209a5,'createdAt',_0x5524('0x37')],squel['select']()[_0x5524('0x38')](_0x5524('0x1b'),_0x5524('0x1b'))['field']('NOW()','scheduledAt')[_0x5524('0x38')]('id','ContactId')['field'](LISTID[_0x5524('0x39')](),_0x5524('0x22'))[_0x5524('0x38')](_0x58aadf['id'][_0x5524('0x39')](),_0xd209a5)[_0x5524('0x38')](_0x5524('0x3a'),_0x5524('0x3b'))['field']('NOW()',_0x5524('0x37'))[_0x5524('0x3c')](_0x5524('0x3d'))['where'](_0x5524('0x3e'))[_0x5524('0x3f')](_0x5524('0x40'),LISTID[_0x5524('0x39')]())['where'](_0x5524('0x41'))['where'](_0x5524('0x42'),squel['select']()[_0x5524('0x38')](_0x5524('0x1b'))[_0x5524('0x3c')](_0x5524('0x34'))[_0x5524('0x3f')](_0xd209a5+_0x5524('0x43'),_0x58aadf['id'][_0x5524('0x39')]())))['toString']();return _0x2d9d9c;};var _0x174b7d=function(_0x8ce620,_0x3706ba){var _0x4094e4=squel[_0x5524('0x32')]()[_0x5524('0x33')](_0x5524('0x34'))[_0x5524('0x44')]([_0x5524('0x1b'),_0x5524('0x35'),'ContactId',_0x5524('0x22'),_0x3706ba,'createdAt',_0x5524('0x37')],squel[_0x5524('0x45')]()[_0x5524('0x38')]('phone',_0x5524('0x1b'))[_0x5524('0x38')](_0x5524('0x3a'),_0x5524('0x35'))[_0x5524('0x38')]('id','ContactId')['field'](LISTID[_0x5524('0x39')](),_0x5524('0x22'))[_0x5524('0x38')](_0x8ce620['id']['toString'](),_0x3706ba)['field'](_0x5524('0x3a'),_0x5524('0x3b'))[_0x5524('0x38')]('NOW()',_0x5524('0x37'))['from'](_0x5524('0x3d'))[_0x5524('0x3f')](_0x5524('0x3e'))['where'](_0x5524('0x40'),LISTID[_0x5524('0x39')]())[_0x5524('0x3f')]('id\x20IN\x20?',squel[_0x5524('0x46')](hopperContacts))['where'](_0x5524('0x41'))[_0x5524('0x3f')](_0x5524('0x42'),squel[_0x5524('0x45')]()[_0x5524('0x38')](_0x5524('0x47'))[_0x5524('0x3c')](_0x5524('0x48'))[_0x5524('0x3f')](_0x3706ba+_0x5524('0x43'),_0x8ce620['id'][_0x5524('0x39')]()))[_0x5524('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0x5524('0x45')]()[_0x5524('0x38')](_0x5524('0x1b'))[_0x5524('0x3c')](_0x5524('0x34'))[_0x5524('0x3f')](_0x3706ba+'\x20=\x20?',_0x8ce620['id'][_0x5524('0x39')]())))[_0x5524('0x39')]();return _0x4094e4;};function _0x5555b2(_0x52fe20,_0x1fdeda){var _0x476e57=squel[_0x5524('0x32')]()[_0x5524('0x33')](_0x5524('0x34'))[_0x5524('0x44')]([_0x5524('0x1b'),_0x5524('0x35'),'ContactId','ListId',_0x1fdeda,_0x5524('0x3b'),_0x5524('0x37')],squel['select']()[_0x5524('0x38')](_0x5524('0x1b'),_0x5524('0x1b'))['field']('NOW()',_0x5524('0x35'))[_0x5524('0x38')]('id',_0x5524('0x36'))['field'](LISTID[_0x5524('0x39')](),_0x5524('0x22'))[_0x5524('0x38')](_0x52fe20['id'][_0x5524('0x39')](),_0x1fdeda)[_0x5524('0x38')]('NOW()',_0x5524('0x3b'))[_0x5524('0x38')](_0x5524('0x3a'),_0x5524('0x37'))['from'](_0x5524('0x3d'))[_0x5524('0x3f')]('deletedAt\x20IS\x20NULL')[_0x5524('0x3f')](_0x5524('0x40'),LISTID[_0x5524('0x39')]())['where'](_0x5524('0x49'),squel[_0x5524('0x46')](hopperContacts))[_0x5524('0x3f')](_0x5524('0x41')))['toString']();return _0x476e57;}function _0x4719b3(_0x5b1f3e,_0x263bc3){var _0x90cedb=squel[_0x5524('0x32')]()[_0x5524('0x33')](_0x5524('0x4a'))[_0x5524('0x44')]([_0x5524('0x1b'),_0x5524('0x36'),_0x5524('0x22'),_0x263bc3,_0x5524('0x3b'),'updatedAt'],squel[_0x5524('0x45')]()['field']('phone',_0x5524('0x1b'))[_0x5524('0x38')]('id','ContactId')['field'](LISTID['toString'](),_0x5524('0x22'))[_0x5524('0x38')](_0x5b1f3e['id'][_0x5524('0x39')](),_0x263bc3)[_0x5524('0x38')]('NOW()',_0x5524('0x3b'))[_0x5524('0x38')](_0x5524('0x3a'),_0x5524('0x37'))['from'](_0x5524('0x3d'))[_0x5524('0x3f')]('deletedAt\x20IS\x20NULL')[_0x5524('0x3f')](_0x5524('0x40'),LISTID[_0x5524('0x39')]())['where'](_0x5524('0x49'),squel['str'](hopperContacts))[_0x5524('0x3f')](_0x5524('0x41')))[_0x5524('0x39')]();return _0x90cedb;}return db[_0x5524('0x4b')][_0x5524('0x4c')]({'where':{'type':_0x5524('0x4d')},'attributes':['id',_0x5524('0x4e')],'include':[{'model':db[_0x5524('0x4f')],'as':'Lists','where':{'id':LISTID}}]})[_0x5524('0x2a')](function(_0x2a8b90){var _0x3e4c75=[];if(_0x2a8b90){var _0x36d2c1;for(var _0x5b07b6=0x0,_0x537b24;_0x5b07b6<_0x2a8b90[_0x5524('0x24')];_0x5b07b6+=0x1){_0x537b24=_0x2a8b90[_0x5b07b6][_0x5524('0x50')]({'plain':!![]});switch(_0x537b24['dialCheckDuplicateType']){case'always':_0x3e4c75[_0x5524('0x2b')](db[_0x5524('0x51')][_0x5524('0x52')](_0x174b7d(_0x537b24,'VoiceQueueId'))[_0x5524('0x2a')](function(){})[_0x5524('0x53')](_0x221314()));break;case _0x5524('0x54'):_0x3e4c75[_0x5524('0x2b')](db[_0x5524('0x51')][_0x5524('0x52')](_0x45150c(_0x537b24,_0x5524('0x55')))[_0x5524('0x2a')](function(){})['catch'](_0x221314()));break;default:_0x3e4c75[_0x5524('0x2b')](db[_0x5524('0x51')]['query'](_0x5555b2(_0x537b24,_0x5524('0x55')))[_0x5524('0x2a')](function(){})[_0x5524('0x53')](_0x221314()));}}}return _0x3e4c75;})[_0x5524('0x56')]()[_0x5524('0x2a')](function(){return db['VoiceQueue']['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x5524('0x57'),'where':{'id':LISTID}}]})['then'](function(_0x3cb2ba){var _0x13e618=[];if(_0x3cb2ba){var _0x42b2e5;for(var _0x1869a8=0x0,_0x442694;_0x1869a8<_0x3cb2ba[_0x5524('0x24')];_0x1869a8+=0x1){_0x442694=_0x3cb2ba[_0x1869a8][_0x5524('0x50')]({'plain':!![]});_0x13e618['push'](db[_0x5524('0x51')][_0x5524('0x52')](_0x4719b3(_0x442694,'VoiceQueueId'))[_0x5524('0x2a')](function(){})[_0x5524('0x53')](_0x221314()));}}return _0x13e618;})['all']();})[_0x5524('0x2a')](function(){return db[_0x5524('0x58')][_0x5524('0x4c')]({'attributes':['id',_0x5524('0x4e')],'include':[{'model':db[_0x5524('0x4f')],'as':'Lists','where':{'id':LISTID}}]})[_0x5524('0x2a')](function(_0xbc0ced){var _0x4d083b=[];if(_0xbc0ced){for(var _0x189660=0x0,_0x5ce59d;_0x189660<_0xbc0ced[_0x5524('0x24')];_0x189660+=0x1){_0x5ce59d=_0xbc0ced[_0x189660][_0x5524('0x50')]({'plain':!![]});switch(_0x5ce59d['dialCheckDuplicateType']){case _0x5524('0x59'):_0x4d083b['push'](db[_0x5524('0x51')][_0x5524('0x52')](_0x174b7d(_0x5ce59d,_0x5524('0x5a')))['then'](function(){})[_0x5524('0x53')](_0x221314()));break;case'onlyIfOpen':_0x4d083b[_0x5524('0x2b')](db[_0x5524('0x51')]['query'](_0x45150c(_0x5ce59d,_0x5524('0x5a')))['then'](function(){})[_0x5524('0x53')](_0x221314()));break;default:_0x4d083b['push'](db[_0x5524('0x51')]['query'](_0x5555b2(_0x5ce59d,_0x5524('0x5a')))[_0x5524('0x2a')](function(){})['catch'](_0x221314()));}}}return _0x4d083b;})[_0x5524('0x56')]();})[_0x5524('0x2a')](function(){return db[_0x5524('0x58')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x5524('0x4f')],'as':_0x5524('0x57'),'where':{'id':LISTID}}]})[_0x5524('0x2a')](function(_0x323284){var _0x2a96ef=[];if(_0x323284){for(var _0x2a9d3a=0x0,_0x8aef16;_0x2a9d3a<_0x323284['length'];_0x2a9d3a+=0x1){_0x8aef16=_0x323284[_0x2a9d3a][_0x5524('0x50')]({'plain':!![]});_0x2a96ef[_0x5524('0x2b')](db['sequelize']['query'](_0x4719b3(_0x8aef16,'CampaignId'))[_0x5524('0x2a')](function(){})[_0x5524('0x53')](_0x221314()));}}return _0x2a96ef;})[_0x5524('0x56')]();})[_0x5524('0x53')](function(_0x434113){logger[_0x5524('0x12')]('cmContact,\x20%s,\x20%s',_0x5524('0x5b'),_0x434113[_0x5524('0x17')]);});}var processPromises=function(_0x1c4068){return BPromise[_0x5524('0x56')](promises)[_0x5524('0x2a')](function(_0x5367ff){})[_0x5524('0x53')](function(_0x32e766){logger[_0x5524('0x12')](_0x5524('0x5c'),JSON[_0x5524('0x2e')](_0x32e766));})[_0x5524('0x5d')](function(){socket[_0x5524('0x5e')](_0x5524('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x1c4068){return _0x1c4068[_0x5524('0x60')]();}});};var endCsv=function(){return BPromise[_0x5524('0x61')]()[_0x5524('0x2a')](function(){if(hopperContacts){return checkHopper();}})[_0x5524('0x2a')](function(){socket['emit'](_0x5524('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x5524('0x62')](FILEPATH);}catch(_0xfded96){logger[_0x5524('0x12')]('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0xfded96));}finally{process['exit'](0x0);}});};process['on'](_0x5524('0x63'),function(){logger[_0x5524('0x64')](_0x5524('0x65'));endCsv();});function main(){return BPromise[_0x5524('0x61')]()[_0x5524('0x2a')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x5524('0xf')](',');return db[_0x5524('0x28')][_0x5524('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x5524('0x2a')](function(_0x5b8e1b){var _0x7443ee=fs[_0x5524('0x66')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x5524('0x67')](_0x7443ee,{'header':!![],'skipEmptyLines':!![],'step':function(_0x20e8f0,_0x1014c7){total+=0x1;var _0x33f35a=total;promises['push'](checkRow(_0x20e8f0,_0x5b8e1b,_0x33f35a)['then'](function(){success+=0x1;})[_0x5524('0x53')](function(_0x5ce1f7){if(_0x5ce1f7[_0x5524('0x12')]){errors+=0x1;delete _0x5ce1f7['error'];}else if(_0x5ce1f7[_0x5524('0x26')]){duplicates+=0x1;delete _0x5ce1f7['duplicate'];}rows['push'](_0x5ce1f7);}));if(total%0xc8===0x0){_0x1014c7[_0x5524('0x68')]();return processPromises(_0x1014c7);}},'complete':function(){return processPromises()[_0x5524('0x2a')](function(){logger[_0x5524('0x64')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x5d9c3f,_0x7b5add){logger[_0x5524('0x64')](_0x5524('0x69'),JSON[_0x5524('0x2e')](_0x5d9c3f));endCsv();}});})[_0x5524('0x53')](function(_0x5383ea){logger[_0x5524('0x12')](_0x5524('0x6a'),JSON[_0x5524('0x2e')](_0x5383ea));});}main();
\ No newline at end of file
index 3f8edf5..bbd6d78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafce=['.id\x20=\x20','where','\x20=\x20','CmContact','findAll','AdditionalPhones','then','length','all','split','push','CmContactHasItem','findOne','updated','create','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','UserId','recallme','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_hopper_black','createdAt','fields','.CmListId\x20=\x20?','ListId\x20=\x20?','toString','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.priority','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','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',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','info','error','message','exit','errors','sequelize','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','dialTimezone','utcOffset','set','main','stringify','send','start','binding','clone','.csv','keys','header','name','_description','writeFileSync','parse','createReadStream','rows','data','find','isNil','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','timezones','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','CREATE\x20TABLE\x20','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()','each','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','argv','root','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','uncaughtException','path','lodash','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment/shared','../../../config/logger','import','redis','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','join'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0xafce,0x9e));var _0xeafc=function(_0xdaaea1,_0x28a529){_0xdaaea1=_0xdaaea1-0x0;var _0xa0989b=_0xafce[_0xdaaea1];return _0xa0989b;};'use strict';var fs=require('fs');var path=require(_0xeafc('0x0'));var _=require(_0xeafc('0x1'));var Papa=require('papaparse');var util=require(_0xeafc('0x2'));var BPromise=require(_0xeafc('0x3'));var moment=require(_0xeafc('0x4'));var squel=require(_0xeafc('0x5'));var Redis=require(_0xeafc('0x6'));var db=require(_0xeafc('0x7'))['db'];var config=require('../../../config/environment');var shared=require(_0xeafc('0x8'));var logger=require(_0xeafc('0x9'))(_0xeafc('0xa'));config[_0xeafc('0xb')]=_[_0xeafc('0xc')](config[_0xeafc('0xb')],{'host':_0xeafc('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0xeafc('0xe')](_0xeafc('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xeafc('0xe')](_0xeafc('0xf'));function isEmail(_0xf8b717){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))*$/[_0xeafc('0x10')](_0xf8b717);}function selectNotIn(_0x528395,_0x1d087f,_0x153c7b,_0x12d122,_0x23fcd8){return squel[_0xeafc('0x11')]()[_0xeafc('0x12')](_0xeafc('0x13'))['from'](_0x12d122)[_0xeafc('0x14')](_0x1d087f,null,_0x1d087f+_0xeafc('0x15')+_0x12d122+'.'+_0x153c7b)[_0xeafc('0x16')](_0x12d122+'.'+_0x153c7b+_0xeafc('0x17')+_0x528395+'.'+_0x153c7b)['where'](_0x1d087f+'.dialCheckDuplicateType\x20IN\x20('+_0x23fcd8['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x5445b7,_0x1454bf){promisesAdditionalPhones=[];return db[_0xeafc('0x18')][_0xeafc('0x19')]({'raw':!![],'attributes':['id',_0xeafc('0x1a')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xeafc('0x1b')](function(_0x512811){if(_0x512811!==null){var _0x129ef1=[];for(var _0x525fb1=0x0;_0x525fb1<_0x512811[_0xeafc('0x1c')];_0x525fb1++){var _0x3d8ece=_0x512811[_0x525fb1];_0x129ef1['push'](insertAdditionalPhones(_0x3d8ece));}}Promise[_0xeafc('0x1d')](_0x129ef1)[_0xeafc('0x1b')](function(){_0x5445b7({'val':0x1});});});});}function insertAdditionalPhones(_0x16fc9e){return new Promise(function(_0x496a41,_0x53ec34){var _0x28b4b3=_0x16fc9e[_0xeafc('0x1a')];var _0x4094c2=_0x28b4b3[_0xeafc('0x1e')](';');var _0x28687f=[];orderBy=0x0;for(var _0x358709=0x0;_0x358709<_0x4094c2['length'];_0x358709++){_0x28687f[_0xeafc('0x1f')](splitAdditionalPhone(_0x16fc9e['id'],_0x4094c2[_0x358709]));}Promise['all'](_0x28687f)[_0xeafc('0x1b')](function(){_0x496a41({'val':_0x4094c2[_0xeafc('0x1c')]});});});}function splitAdditionalPhone(_0x3b5b2d,_0x5e55bf){return new Promise(function(_0x33ddfd,_0x555cb9){var _0x5a8a76=_0x5e55bf[_0xeafc('0x1e')](':');var _0x72cf1f=_0x5a8a76[0x0];var _0x4b6bb8=_0x5a8a76[0x1];if(!_['isNil'](_0x4b6bb8)){var _0x435a9d=_0x4b6bb8['split']('|');var _0x1857fb=[];for(var _0x1a4909=0x0;_0x1a4909<_0x435a9d[_0xeafc('0x1c')];_0x1a4909++){if(_0x435a9d[_0x1a4909]!==''){var _0x32684b=_['filter'](promisesAdditionalPhones,{'contactId':_0x3b5b2d,'phone':_0x435a9d[_0x1a4909]});if(_0x32684b[_0xeafc('0x1c')]==0x0){orderBy++;promisesAdditionalPhones[_0xeafc('0x1f')]({'contactId':_0x3b5b2d,'contactTypeId':_0x72cf1f,'phone':_0x435a9d[_0x1a4909],'orderBy':orderBy});}}}_0x33ddfd({'ok':0x1});}else _0x33ddfd({'res':0x0});});}function createAdditionalPhone(_0x12c81c,_0x595600,_0x39735d,_0x34b539){var _0x4b3224='';var _0x4e9ee5='';var _0xbeba85=_0x39735d[_0xeafc('0x1e')]('§');_0x4b3224=_0xbeba85[0x0];if(_0xbeba85[_0xeafc('0x1c')]==0x2)_0x4e9ee5=_0xbeba85[0x1];return new Promise(function(_0x548fbc,_0x1d1a76){return db[_0xeafc('0x20')][_0xeafc('0x21')]({'where':{'CmContactId':_0x12c81c,'item':_0x4b3224}})[_0xeafc('0x1b')](function(_0xdae449){if(_0xdae449){return db['CmContactHasItem']['update']({'ItemTypeId':_0x595600,'description':_0x4e9ee5,'OrderBy':_0x34b539},{'where':{'CmContactId':_0x12c81c,'item':_0x4b3224}})['then'](function(_0x554f57){_0x548fbc({'res':_0xeafc('0x22')});});}else{return db[_0xeafc('0x20')][_0xeafc('0x23')]({'CmContactId':_0x12c81c,'item':_0x4b3224,'description':_0x4e9ee5,'ItemTypeId':_0x595600,'OrderBy':_0x34b539,'ItemClass':'PHONE'})[_0xeafc('0x1b')](function(_0x56e028){_0x548fbc({'res':'inserted'});});}});});}function insertCmHopper(_0x37aa91,_0xf76a4,_0x1300cf,_0x480aaf,_0xa92694){var _0x5bef3f=[_0xeafc('0x24'),'cm_contacts.scheduledat',_0xeafc('0x25'),_0xeafc('0x26'),_0xf76a4+'.'+_0x480aaf,_0xeafc('0x27'),_0xeafc('0x28'),'cm_contacts.priority',_0xeafc('0x29'),'\x22'+_0xa92694+'\x22'];return squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0xeafc('0x2c'))[_0xeafc('0x2d')]([_0xeafc('0x13'),_0xeafc('0x2e'),_0xeafc('0x2f'),_0xeafc('0x30'),_0x480aaf,'createdAt',_0xeafc('0x31'),_0xeafc('0x32'),_0xeafc('0x33'),_0xeafc('0x34')],squel[_0xeafc('0x11')]()['fields'](_0x5bef3f)[_0xeafc('0x35')](_0xf76a4)[_0xeafc('0x14')](_0xeafc('0x36'),null,_0xeafc('0x37')+_0xf76a4+_0xeafc('0x38'))[_0xeafc('0x14')](_0x1300cf,null,_0x1300cf+_0xeafc('0x15')+_0xf76a4+'.'+_0x480aaf)['where'](_0xf76a4+'.CmListId\x20=\x20?',_0x37aa91)['where'](_0xeafc('0x39'),NOW)[_0xeafc('0x16')](_0xeafc('0x3a'),selectNotIn(_0xf76a4,_0x1300cf,_0x480aaf,_0xeafc('0x2c'),[_0xeafc('0x3b'),_0xeafc('0x3c')]))[_0xeafc('0x16')](_0xeafc('0x3a'),selectNotIn(_0xf76a4,_0x1300cf,_0x480aaf,'cm_hopper',[_0xeafc('0x3b')])))['toString']();}function insertCmHopperBlack(_0x80042e,_0x111a73,_0x4be232,_0x5925d8){var _0xa6da11=[_0xeafc('0x24'),_0xeafc('0x25'),_0xeafc('0x26'),_0x111a73+'.'+_0x5925d8,_0xeafc('0x27'),'cm_contacts.updatedAt'];return squel['insert']()[_0xeafc('0x2b')](_0xeafc('0x3d'))[_0xeafc('0x2d')]([_0xeafc('0x13'),'ContactId',_0xeafc('0x30'),_0x5925d8,_0xeafc('0x3e'),'updatedAt'],squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0xa6da11)[_0xeafc('0x35')](_0x111a73)[_0xeafc('0x14')](_0xeafc('0x36'),null,'cm_contacts.ListId\x20=\x20'+_0x111a73+'.CmListId')[_0xeafc('0x14')](_0x4be232,null,_0x4be232+_0xeafc('0x15')+_0x111a73+'.'+_0x5925d8)[_0xeafc('0x16')](_0x111a73+_0xeafc('0x40'),_0x80042e)[_0xeafc('0x16')](_0xeafc('0x39'),NOW)[_0xeafc('0x16')](_0xeafc('0x3a'),squel[_0xeafc('0x11')]()[_0xeafc('0x12')](_0xeafc('0x13'))[_0xeafc('0x35')](_0xeafc('0x3d'))[_0xeafc('0x16')](_0xeafc('0x41'),_0x80042e)[_0xeafc('0x16')](_0x5925d8+'\x20=\x20'+_0x111a73+'.'+_0x5925d8)))[_0xeafc('0x42')]();}function insertTzCmHopper(_0x369058,_0x28d67a,_0x5f5c24,_0x4bbb0e,_0x7b1892,_0x29d7c1){var _0x43d5c4=[_0xeafc('0x24'),_0xeafc('0x43')+_0x29d7c1+_0xeafc('0x44'),_0xeafc('0x25'),'cm_contacts.ListId',_0x28d67a+'.'+_0x4bbb0e,'cm_contacts.createdAt',_0xeafc('0x28'),_0xeafc('0x45'),_0xeafc('0x29'),'\x22'+_0x7b1892+'\x22'];var _0xba62c1=squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0xeafc('0x2c'))[_0xeafc('0x2d')]([_0xeafc('0x13'),_0xeafc('0x2e'),_0xeafc('0x2f'),'ListId',_0x4bbb0e,_0xeafc('0x3e'),_0xeafc('0x31'),'priority',_0xeafc('0x33'),_0xeafc('0x34')],squel['select']()[_0xeafc('0x3f')](_0x43d5c4)['from'](_0x28d67a)[_0xeafc('0x14')](_0xeafc('0x36'),null,_0xeafc('0x37')+_0x28d67a+_0xeafc('0x38'))[_0xeafc('0x14')](_0x5f5c24,null,_0x5f5c24+_0xeafc('0x15')+_0x28d67a+'.'+_0x4bbb0e)[_0xeafc('0x14')](_0x29d7c1,null,_0x29d7c1+_0xeafc('0x15')+_0x28d67a+'.'+_0x4bbb0e)['where'](_0x28d67a+_0xeafc('0x40'),_0x369058)[_0xeafc('0x16')](_0xeafc('0x39'),NOW)['where'](_0xeafc('0x3a'),selectNotIn(_0x28d67a,_0x5f5c24,_0x4bbb0e,_0xeafc('0x2c'),[_0xeafc('0x3b'),_0xeafc('0x3c')]))[_0xeafc('0x16')](_0xeafc('0x3a'),selectNotIn(_0x28d67a,_0x5f5c24,_0x4bbb0e,'cm_hopper',[_0xeafc('0x3b')])))[_0xeafc('0x42')]();return _0xba62c1;}function insertTzCmHopperBlack(_0x48c751,_0x45ef25,_0x382d18,_0x54baea){var _0x3fc39e=[_0xeafc('0x24'),_0xeafc('0x25'),_0xeafc('0x26'),_0x45ef25+'.'+_0x54baea,_0xeafc('0x27'),'cm_contacts.updatedAt'];return squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0xeafc('0x3d'))['fromQuery'](['phone',_0xeafc('0x2f'),_0xeafc('0x30'),_0x54baea,_0xeafc('0x3e'),_0xeafc('0x31')],squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x3fc39e)[_0xeafc('0x35')](_0x45ef25)[_0xeafc('0x14')]('cm_contacts',null,_0xeafc('0x37')+_0x45ef25+_0xeafc('0x38'))[_0xeafc('0x14')](_0x382d18,null,_0x382d18+_0xeafc('0x15')+_0x45ef25+'.'+_0x54baea)[_0xeafc('0x16')](_0x45ef25+_0xeafc('0x40'),_0x48c751)[_0xeafc('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xeafc('0x11')]()['field'](_0xeafc('0x13'))[_0xeafc('0x35')](_0xeafc('0x3d'))[_0xeafc('0x16')](_0xeafc('0x41'),_0x48c751)['where'](_0x54baea+'\x20=\x20'+_0x45ef25+'.'+_0x54baea)))[_0xeafc('0x42')]();}function insertCmHopperAdditionalPhones(_0x1f3c8b){var _0x419bfd=[_0xeafc('0x46'),'cm_contact_has_items.item',_0xeafc('0x47'),'cm_contact_has_items.createdAt',_0xeafc('0x48')];return squel['insert']()[_0xeafc('0x2b')](_0xeafc('0x49'))[_0xeafc('0x2d')]([_0xeafc('0x4a'),_0xeafc('0x13'),'OrderBy',_0xeafc('0x3e'),_0xeafc('0x31')],squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x419bfd)['from']('cm_hopper')[_0xeafc('0x14')](_0xeafc('0x36'),null,_0xeafc('0x4b'))[_0xeafc('0x14')](_0xeafc('0x4c'),null,_0xeafc('0x4d'))[_0xeafc('0x16')](_0xeafc('0x4e'),_0x1f3c8b)[_0xeafc('0x16')](_0xeafc('0x39'),NOW))[_0xeafc('0x42')]();}function insertCmContact(_0x1eb496,_0x2bc5b9,_0x5a7fbe,_0xb7b7cc){var _0x4a6a44=_[_0xeafc('0x4f')](_['keys'](_0xb7b7cc),[_0xeafc('0x30'),'CompanyId',_0xeafc('0x3e'),_0xeafc('0x31')]);return squel[_0xeafc('0x2a')]()['into'](_0xeafc('0x36'))[_0xeafc('0x2d')](_0x4a6a44,squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x4a6a44)[_0xeafc('0x35')](_0x2bc5b9)[_0xeafc('0x16')]('('+_0x5a7fbe['join'](',')+_0xeafc('0x50'),squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x5a7fbe)['from'](_0xeafc('0x36'))[_0xeafc('0x16')](_0xeafc('0x41'),_0x1eb496)[_0xeafc('0x16')]('deletedAt\x20IS\x20NULL'))['where'](_0xeafc('0x51'),squel[_0xeafc('0x11')]()[_0xeafc('0x12')](_0xeafc('0x52'),_0xeafc('0x53'))[_0xeafc('0x35')](_0x2bc5b9)['group'](_0x5a7fbe['join'](','))))[_0xeafc('0x42')]();}function handleStop(){logger[_0xeafc('0x54')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x5d71fa){logger[_0xeafc('0x55')](_0x5d71fa[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);}function handleError(_0x47fbf6,_0x1925ef){stats[_0xeafc('0x58')][_0xeafc('0x1f')]({'name':_0x1925ef['code'],'message':_0x1925ef['message'],'row':_0x47fbf6});}function handleQuery(_0x1eb6ba){logger[_0xeafc('0x54')](_0x1eb6ba);return db[_0xeafc('0x59')][_0xeafc('0x5a')](_0x1eb6ba)[_0xeafc('0x5b')](function(_0x5711f4){results['push'](_0x5711f4);})[_0xeafc('0x5c')](function(_0x39dc55){logger[_0xeafc('0x55')](_0x39dc55[_0xeafc('0x56')]);});}function updateTzCampaigns(_0x123d62){return new Promise(function(_0x439f3e,_0x357fb3){var _0xf39ead=squel[_0xeafc('0x11')]()[_0xeafc('0x3f')]([_0xeafc('0x5d'),_0xeafc('0x5e')])[_0xeafc('0x35')]('campaigns')[_0xeafc('0x14')](_0xeafc('0x5f'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0xeafc('0x16')](_0xeafc('0x60')+_0x123d62);db['sequelize'][_0xeafc('0x5a')](_0xf39ead[_0xeafc('0x42')]())[_0xeafc('0x5b')](function(_0x48fefd){var _0x50052a=[];for(var _0x4f7e98=0x0;_0x4f7e98<_0x48fefd[_0xeafc('0x1c')];_0x4f7e98++){_0x50052a[_0xeafc('0x1f')](getTimezoneData(_0x48fefd[_0x4f7e98],tmp_campaigns));}BPromise[_0xeafc('0x1d')](_0x50052a)['then'](function(){_0x439f3e({'val':0x1});});})[_0xeafc('0x5c')](function(_0x13e255){logger[_0xeafc('0x55')](_0x13e255[_0xeafc('0x56')]);_0x439f3e({'val':0x0});});});}function updateTzVoiceQueues(_0x20b224){return new Promise(function(_0x5ede92,_0x8b8e1b){var _0x4df434=squel[_0xeafc('0x11')]()[_0xeafc('0x3f')]([_0xeafc('0x61'),_0xeafc('0x62')])[_0xeafc('0x35')](_0xeafc('0x63'))[_0xeafc('0x14')]('voice_queues_has_cm_lists',null,_0xeafc('0x64'))['where']('voice_queues_has_cm_lists.CmListId='+_0x20b224);db['sequelize'][_0xeafc('0x5a')](_0x4df434[_0xeafc('0x42')]())[_0xeafc('0x5b')](function(_0x2adbf5){var _0x1b8768=[];for(var _0x2f9e47=0x0;_0x2f9e47<_0x2adbf5[_0xeafc('0x1c')];_0x2f9e47++){_0x1b8768[_0xeafc('0x1f')](getTimezoneData(_0x2adbf5[_0x2f9e47],tmp_voice_queues));}BPromise[_0xeafc('0x1d')](_0x1b8768)['then'](function(){_0x5ede92({'val':0x1});});})['catch'](function(_0x1d81c5){logger['error'](_0x1d81c5[_0xeafc('0x56')]);_0x5ede92({'val':0x0});});});}function getTimezoneData(_0x1fe1b9,_0x3d3935){return new Promise(function(_0x1179bd,_0xedff72){var _0x3ef177=shared['timezones'];var _0x5e59ff=_0x3ef177[_0x1fe1b9[_0xeafc('0x65')]];if(_['isNil'](_0x5e59ff)){_0x1179bd({'ret':0x1});}else{var _0x4b3da1=_0x5e59ff[_0xeafc('0x66')];var _0x318d18=squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0x3d3935)[_0xeafc('0x67')]('id',_0x1fe1b9['id'])[_0xeafc('0x67')]('offset',_0x4b3da1)[_0xeafc('0x67')](_0xeafc('0x65'),_0x1fe1b9[_0xeafc('0x65')])[_0xeafc('0x42')]();return db[_0xeafc('0x59')][_0xeafc('0x5a')](_0x318d18)[_0xeafc('0x5b')](function(_0x1b6f02){_0x1179bd({'ret':0x1});})[_0xeafc('0x5c')](function(_0x20e720){logger[_0xeafc('0x55')](_0x20e720[_0xeafc('0x56')]);_0xedff72({'ret':0x1});});}});}function handleTZQuery(_0x584430){logger['info'](_0x584430);return db['sequelize'][_0xeafc('0x5a')](_0x584430)[_0xeafc('0x5b')](function(_0xc3ceac){})[_0xeafc('0x5c')](function(_0x4e8132){logger[_0xeafc('0x55')](_0x4e8132[_0xeafc('0x56')]);});}function main(_0x201cd7,_0x28c8fc,_0x3b88f4,_0x1a9859){logger[_0xeafc('0x54')](_0xeafc('0x68'),_0x201cd7,JSON[_0xeafc('0x69')](_0x28c8fc));process[_0xeafc('0x6a')](_0xeafc('0x6b'));var _0x478008=_0x28c8fc[_0xeafc('0x6c')];var _0x1d7ed0=_[_0xeafc('0x6d')](_0x478008);var _0x430c14=_0x28c8fc['socket_timestamp'];var _0x2296e4=path[_0xeafc('0x14')](config['root'],'server/files/tmp',_0x430c14+_0xeafc('0x6e'));hasTZ=_[_0xeafc('0x6f')](_0x478008)['includes']('dialTimezone');var _0x17ca04=_[_0xeafc('0x6f')](_0x478008)[_0xeafc('0x14')]();logger['info'](_0xeafc('0x70'),_0x17ca04);db['ContactItemType'][_0xeafc('0x19')]({'raw':!![],'attributes':['id',_0xeafc('0x71')]})[_0xeafc('0x1b')](function(_0x2766ad){for(var _0x1f67c2=0x0;_0x1f67c2<_0x2766ad[_0xeafc('0x1c')];_0x1f67c2++){if(_0x2766ad[_0x1f67c2][_0xeafc('0x71')]in _0x478008){contactItemTypes['push'](_0x2766ad[_0x1f67c2]);delete _0x1d7ed0[_0x2766ad[_0x1f67c2][_0xeafc('0x71')]];hasAdditionalPhones=!![];}for(var _0x2de7ad in _0x478008){if(_0x2766ad[_0x1f67c2][_0xeafc('0x71')]+_0xeafc('0x72')===_0x2de7ad){phoneDescriptions[_0xeafc('0x1f')]({'itemTypeId':_0x2766ad[_0x1f67c2]['id'],'description':_0x2de7ad});delete _0x1d7ed0[_0x2de7ad];}}}if(hasAdditionalPhones)_0x1d7ed0['AdditionalPhones']='';var _0x4c044c=_[_0xeafc('0x6f')](_0x1d7ed0)[_0xeafc('0x14')]();logger[_0xeafc('0x54')](_0xeafc('0x70'),_0x4c044c);fs[_0xeafc('0x73')](_0x2296e4,_0x4c044c+'\x0a');Papa[_0xeafc('0x74')](fs[_0xeafc('0x75')](_0x201cd7),{'header':!![],'skipEmptyLines':!![],'step':function(_0x50c060,_0x211eb5){try{for(var _0x5a0cbb=0x0,_0x3c307a=[];_0x5a0cbb<_0x50c060['data'][_0xeafc('0x1c')];_0x5a0cbb++){stats[_0xeafc('0x76')]+=0x1;if(_0x50c060[_0xeafc('0x58')][_0x5a0cbb]){handleError(_0x50c060[_0xeafc('0x77')][_0x5a0cbb],_0x50c060['errors'][_0x5a0cbb]);}else{var _0x4eb1c8=[];var _0x1ceb19=[];var _0x39a3e7={};for(var _0x1c2631 in _0x478008){let _0x1c8a05=contactItemTypes[_0xeafc('0x78')](_0x254890=>_0x254890[_0xeafc('0x71')]===_0x1c2631);let _0xd6a5b=contactItemTypes[_0xeafc('0x78')](_0x4e8b0a=>_0x4e8b0a[_0xeafc('0x71')]+_0xeafc('0x72')===_0x1c2631);if(_['isNil'](_0x1c8a05)&&_[_0xeafc('0x79')](_0xd6a5b)){if(_0x478008['hasOwnProperty'](_0x1c2631)){if(_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x1c2631]]){var _0xe238e7=_[_0xeafc('0x7a')](_0x50c060['data'][_0x5a0cbb][_0x478008[_0x1c2631]][_0xeafc('0x7b')](/"/g,'\x27'));switch(_0x1c2631){case _0xeafc('0x2e'):var _0x4036a4=moment(_0xe238e7,_0xeafc('0xf'),!![]);if(_0x4036a4[_0xeafc('0x7c')]()){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')](_0xeafc('0x7d'));}break;case'priority':var _0x14e247=parseInt(_0xe238e7);_0xe238e7=_[_0xeafc('0x7e')](_0x14e247)||_0x14e247<0x0||_0x14e247>0x4?_0x1a9859?0x3:0x2:_0x14e247;_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');break;case'UserId':var _0x5772a9=parseInt(_0xe238e7);if(_[_0xeafc('0x7f')](_0x5772a9)&&_['includes'](_0x3b88f4,_0x5772a9)){_0x3c307a['push']('\x22'+_0x5772a9+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')](_0xeafc('0x80'));}break;case'email':if(isEmail(_0xe238e7)){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')]('email\x20wrong\x20format');}break;case _0xeafc('0x81'):var _0x5cc932=moment(_0xe238e7,'YYYY-MM-DD',!![]);if(_0x5cc932['isValid']()){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')](_0xeafc('0x82'));}break;case _0xeafc('0x65'):var _0x275602=shared[_0xeafc('0x83')];var _0x468f0a=_0x275602[_0xe238e7];if(!_[_0xeafc('0x79')](_0x468f0a)){var _0x10cee4=_0x468f0a[_0xeafc('0x66')];_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');_0x3c307a['push']('\x22'+_0x10cee4+'\x22');}break;default:_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}}else{switch(_0x1c2631){case _0xeafc('0x84'):case _0xeafc('0x13'):_0x4eb1c8[_0xeafc('0x1f')](_0x1c2631+_0xeafc('0x85'));break;default:_0x3c307a['push']('\x22\x22');}}}}else{var _0x1a48e3='';if(!_[_0xeafc('0x79')](_0x1c8a05)){if(!_0x39a3e7['hasOwnProperty'](_0x1c8a05['id'])){if(!_[_0xeafc('0x79')](_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x1c2631]])){var _0xe238e7=_[_0xeafc('0x7a')](_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x1c2631]][_0xeafc('0x7b')](/"/g,'\x27'));var _0x59b00a=phoneDescriptions[_0xeafc('0x78')](_0x504878=>_0x504878[_0xeafc('0x86')]===_0x1c8a05['id']);if(!_[_0xeafc('0x79')](_0x59b00a)){var _0x2866ea=_['trim'](_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x59b00a[_0xeafc('0x87')]]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x2866ea))_0xe238e7=_0xe238e7+'§'+_0x2866ea;}if(_0x1a48e3=='')_0x1a48e3=_0xe238e7;else _0x1a48e3+='|'+_0xe238e7;}_0x1ceb19['push'](_0x1c8a05['id']+':'+_0x1a48e3);_0x39a3e7[_0x1c8a05['id']]=0x1;}}}}if(hasAdditionalPhones){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0x1ceb19[_0xeafc('0x14')](';')+'\x22');}if(_0x4eb1c8[_0xeafc('0x1c')]){handleError(_0x50c060['data'][_0x5a0cbb],{'code':_0xeafc('0x88'),'message':_0x4eb1c8[_0xeafc('0x14')]()});}else{fs[_0xeafc('0x89')](_0x2296e4,_0x3c307a[_0xeafc('0x14')]()+'\x0a');}_0x3c307a=[];}if(!(stats['rows']%0xc8)){socket[_0xeafc('0x8a')](_0xeafc('0x8b')+_0x430c14,stats);stats['errors']=[];}}if(stopped){logger['info'](_0xeafc('0x8c'));_0x211eb5[_0xeafc('0x8d')]();}}catch(_0xfb2bdc){handleError(_0x50c060[_0xeafc('0x77')][_0x5a0cbb],{'code':_0xeafc('0x8e'),'message':_0xfb2bdc[_0xeafc('0x56')]});logger[_0xeafc('0x55')](_0xeafc('0x8f'),_0xfb2bdc[_0xeafc('0x56')]);}},'complete':function(){try{var _0x4475b2=[];var _0x2dc461=[];var _0x2813b1=_0xeafc('0x36');if(_0x28c8fc['duplicates']&&_0x28c8fc[_0xeafc('0x90')][_0xeafc('0x1c')]){_0x2813b1=_0xeafc('0x91')+_0x430c14;_0x4475b2['push']('CREATE\x20TABLE\x20'+_0x2813b1+_0xeafc('0x92'));}tmp_campaigns=_0xeafc('0x93')+_0x430c14;tmp_voice_queues=_0xeafc('0x94')+_0x430c14;_0x2dc461[_0xeafc('0x1f')]('CREATE\x20TABLE\x20'+tmp_campaigns+_0xeafc('0x95'));_0x2dc461[_0xeafc('0x1f')](_0xeafc('0x96')+tmp_voice_queues+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');BPromise['each'](_0x2dc461,handleTZQuery)[_0xeafc('0x1b')](function(_0x2895f6){updateTzCampaigns(_0x28c8fc[_0xeafc('0x30')])[_0xeafc('0x1b')](function(_0x3ce416){updateTzVoiceQueues(_0x28c8fc[_0xeafc('0x30')])[_0xeafc('0x1b')](function(_0x5b70bc){if(hasTZ)_0x4c044c=_0x4c044c[_0xeafc('0x7b')](_0xeafc('0x65'),'dialTimezone,utcOffset');var _0x4d5a14=util[_0xeafc('0xe')](_0xeafc('0x97'),_0x2296e4,_0x2813b1,_0x4c044c,_0x28c8fc[_0xeafc('0x30')],_0x28c8fc['CompanyId']||null,NOW,NOW);if(_[_0xeafc('0x79')](_0x478008[_0xeafc('0x2e')])){_0x4d5a14+=_0xeafc('0x98');}_0x4475b2[_0xeafc('0x1f')](_0x4d5a14);if(_0x28c8fc[_0xeafc('0x90')]&&_0x28c8fc[_0xeafc('0x90')]['length']){_0x4475b2['push'](insertCmContact(_0x28c8fc['ListId'],_0x2813b1,_0x28c8fc['duplicates'],_0x478008));_0x4475b2[_0xeafc('0x1f')]('DROP\x20TABLE\x20'+_0x2813b1+';');}BPromise[_0xeafc('0x99')](_0x4475b2,handleQuery)[_0xeafc('0x1b')](function(_0x2c0eca){BPromise[_0xeafc('0x1d')]([handleAdditionalPhones()])[_0xeafc('0x1b')](function(){_0x4475b2=[];for(var _0x140c8e=0x0;_0x140c8e<promisesAdditionalPhones['length'];_0x140c8e++){if(promisesAdditionalPhones[_0x140c8e][_0xeafc('0x13')]!='§'){_0x4475b2[_0xeafc('0x1f')](createAdditionalPhone(promisesAdditionalPhones[_0x140c8e][_0xeafc('0x9a')],promisesAdditionalPhones[_0x140c8e][_0xeafc('0x9b')],promisesAdditionalPhones[_0x140c8e][_0xeafc('0x13')],promisesAdditionalPhones[_0x140c8e][_0xeafc('0x9c')]));}}BPromise[_0xeafc('0x1d')](_0x4475b2)[_0xeafc('0x1b')](function(){_0x4475b2=[];if(hasTZ){_0x4475b2['push'](insertTzCmHopper(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0x9d'),_0xeafc('0x63'),_0xeafc('0x9e'),_0x1a9859,tmp_voice_queues));_0x4475b2['push'](insertTzCmHopperBlack(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0x9f'),_0xeafc('0x63'),'VoiceQueueId'));_0x4475b2[_0xeafc('0x1f')](insertTzCmHopper(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0x5f'),_0xeafc('0xa0'),_0xeafc('0xa1'),_0x1a9859,tmp_campaigns));_0x4475b2['push'](insertTzCmHopperBlack(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0xa2'),'campaigns',_0xeafc('0xa1')));_0x4475b2[_0xeafc('0x1f')](insertCmHopperAdditionalPhones(_0x28c8fc[_0xeafc('0x30')]));}else{_0x4475b2[_0xeafc('0x1f')](insertCmHopper(_0x28c8fc[_0xeafc('0x30')],'voice_queues_has_cm_lists',_0xeafc('0x63'),_0xeafc('0x9e'),_0x1a9859));_0x4475b2[_0xeafc('0x1f')](insertCmHopperBlack(_0x28c8fc['ListId'],_0xeafc('0x9f'),_0xeafc('0x63'),_0xeafc('0x9e')));_0x4475b2['push'](insertCmHopper(_0x28c8fc['ListId'],'campaigns_has_cm_lists',_0xeafc('0xa0'),_0xeafc('0xa1'),_0x1a9859));_0x4475b2['push'](insertCmHopperBlack(_0x28c8fc['ListId'],'campaigns_has_cm_blacklists',_0xeafc('0xa0'),_0xeafc('0xa1')));_0x4475b2[_0xeafc('0x1f')](insertCmHopperAdditionalPhones(_0x28c8fc[_0xeafc('0x30')]));}_0x4475b2['push'](_0xeafc('0xa3')+tmp_campaigns+';');_0x4475b2['push']('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0xeafc('0x99')](_0x4475b2,handleQuery)[_0xeafc('0x1b')](function(_0xbbd948){stats[_0xeafc('0xa4')]=!![];stats['affectedRows']=_0x28c8fc['duplicates']&&_0x28c8fc[_0xeafc('0x90')][_0xeafc('0x1c')]?results[0x2][_0xeafc('0xa5')]:results[0x0][_0xeafc('0xa5')];socket[_0xeafc('0x8a')](_0xeafc('0x8b')+_0x430c14,stats);fs[_0xeafc('0xa6')](_0x201cd7);fs[_0xeafc('0xa6')](_0x2296e4);process[_0xeafc('0x57')](0x0);})[_0xeafc('0x5c')](function(_0x4b9994){logger[_0xeafc('0x55')](_0x4b9994[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);});});});})[_0xeafc('0x5c')](function(_0x5a872f){logger['error'](_0x5a872f[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);});});});});}catch(_0x346a7a){logger['error'](_0xeafc('0xa7'),_0x346a7a[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);}},'error':function(_0x17fda5,_0x520195,_0x558faa,_0x2d75f5){throw new Error(_0x2d75f5);}});});}function validate(){if(process[_0xeafc('0xa8')]&&process['argv']['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x524892=path[_0xeafc('0x14')](config[_0xeafc('0xa9')],_0xeafc('0xaa'),process['argv'][0x2]);if(!fs[_0xeafc('0xab')](_0x524892)){throw new Error(_0xeafc('0xac'));}var _0x26e732={};try{_0x26e732=JSON['parse'](process[_0xeafc('0xa8')][0x3]);if(!_0x26e732['binding']){throw new Error(_0xeafc('0xad'));}if(!_0x26e732['binding'][_0xeafc('0x13')]){throw new Error(_0xeafc('0xae'));}if(!_0x26e732[_0xeafc('0x6c')]['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x4a5f61=0x0;if(_0x26e732[_0xeafc('0x6c')][_0xeafc('0x33')]){_0x4a5f61=0x1;}if(!_0x26e732[_0xeafc('0x30')]){throw new Error(_0xeafc('0xaf'));}}catch(_0x419820){throw new Error(_0xeafc('0xb0'));}var _0x38221b=[];try{_0x38221b=_['map'](JSON[_0xeafc('0x74')](process[_0xeafc('0xa8')][0x4]),'id');}catch(_0x180fa4){logger[_0xeafc('0x54')](_0xeafc('0xb1'));}main(_0x524892,_0x26e732,_0x38221b,_0x4a5f61);}validate();process['on']('SIGINT',handleStop);process['on'](_0xeafc('0xb2'),handleUncaughtException);
\ No newline at end of file
+var _0x966f=['affectedRows','unlink','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','UserId','ListId\x20is\x20mandatory','map','SIGINT','uncaughtException','path','lodash','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','import','redis','defaults','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','join','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','AdditionalPhones','then','push','all','length','split','isNil','CmContactHasItem','findOne','create','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','cm_hopper','fromQuery','ListId','createdAt','updatedAt','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','cm_contacts.createdAt\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_contacts.id','into','cm_hopper_black','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.UserId','ContactId','priority','.CmListId\x20=\x20?','toString','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','group','error','message','exit','errors','code','info','sequelize','spread','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','query','catch','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','main','start','binding','clone','socket_timestamp','root','server/files/tmp','.csv','includes','header','ContactItemType','findAll','name','_description','writeFileSync','parse','createReadStream','data','rows','find','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','email','email\x20wrong\x20format','dateOfBirth','isValid','firstName','hasOwnProperty','trim','replace','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','CREATE\x20TABLE\x20','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','scheduledat','DROP\x20TABLE\x20','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_blacklists','finish'];(function(_0x2b990b,_0x46e3a1){var _0xdf04b7=function(_0x1a03d9){while(--_0x1a03d9){_0x2b990b['push'](_0x2b990b['shift']());}};_0xdf04b7(++_0x46e3a1);}(_0x966f,0xbf));var _0xf966=function(_0x17e66a,_0x423449){_0x17e66a=_0x17e66a-0x0;var _0x5aa6ae=_0x966f[_0x17e66a];return _0x5aa6ae;};'use strict';var fs=require('fs');var path=require(_0xf966('0x0'));var _=require(_0xf966('0x1'));var Papa=require('papaparse');var util=require(_0xf966('0x2'));var BPromise=require(_0xf966('0x3'));var moment=require(_0xf966('0x4'));var squel=require(_0xf966('0x5'));var Redis=require(_0xf966('0x6'));var db=require(_0xf966('0x7'))['db'];var config=require(_0xf966('0x8'));var shared=require(_0xf966('0x9'));var logger=require(_0xf966('0xa'))(_0xf966('0xb'));config[_0xf966('0xc')]=_[_0xf966('0xd')](config[_0xf966('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xf966('0xe'))(new Redis(config[_0xf966('0xc')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0xf966('0xf')](_0xf966('0x10'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xf966('0xf')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x488cd4){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))*$/[_0xf966('0x11')](_0x488cd4);}function selectNotIn(_0x444791,_0x5d3101,_0x315446,_0x54369f,_0x112fd9){return squel[_0xf966('0x12')]()[_0xf966('0x13')](_0xf966('0x14'))['from'](_0x54369f)[_0xf966('0x15')](_0x5d3101,null,_0x5d3101+'.id\x20=\x20'+_0x54369f+'.'+_0x315446)['where'](_0x54369f+'.'+_0x315446+_0xf966('0x16')+_0x444791+'.'+_0x315446)[_0xf966('0x17')](_0x5d3101+_0xf966('0x18')+_0x112fd9[_0xf966('0x15')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x4ae0bf,_0x25ac8e){promisesAdditionalPhones=[];return db['CmContact']['findAll']({'raw':!![],'attributes':['id',_0xf966('0x19')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xf966('0x1a')](function(_0x396e71){if(_0x396e71!==null){var _0x24011c=[];for(var _0x2306a5=0x0;_0x2306a5<_0x396e71['length'];_0x2306a5++){var _0x26e5cf=_0x396e71[_0x2306a5];_0x24011c[_0xf966('0x1b')](insertAdditionalPhones(_0x26e5cf));}}Promise[_0xf966('0x1c')](_0x24011c)[_0xf966('0x1a')](function(){_0x4ae0bf({'val':0x1});});});});}function insertAdditionalPhones(_0x477c97){return new Promise(function(_0x11fe9f,_0x202ad3){var _0xe0be9a=_0x477c97[_0xf966('0x19')];var _0x3fd62b=_0xe0be9a['split'](';');var _0x3931e0=[];orderBy=0x0;for(var _0x1d3e87=0x0;_0x1d3e87<_0x3fd62b[_0xf966('0x1d')];_0x1d3e87++){_0x3931e0['push'](splitAdditionalPhone(_0x477c97['id'],_0x3fd62b[_0x1d3e87]));}Promise['all'](_0x3931e0)[_0xf966('0x1a')](function(){_0x11fe9f({'val':_0x3fd62b[_0xf966('0x1d')]});});});}function splitAdditionalPhone(_0x1d14aa,_0x15dfc2){return new Promise(function(_0x219ebe,_0x1b0746){var _0x295552=_0x15dfc2[_0xf966('0x1e')](':');var _0x4cda25=_0x295552[0x0];var _0x439ec5=_0x295552[0x1];if(!_[_0xf966('0x1f')](_0x439ec5)){var _0x33f188=_0x439ec5['split']('|');var _0x308616=[];for(var _0x140932=0x0;_0x140932<_0x33f188[_0xf966('0x1d')];_0x140932++){if(_0x33f188[_0x140932]!==''){var _0x4008d2=_['filter'](promisesAdditionalPhones,{'contactId':_0x1d14aa,'phone':_0x33f188[_0x140932]});if(_0x4008d2['length']==0x0){orderBy++;promisesAdditionalPhones[_0xf966('0x1b')]({'contactId':_0x1d14aa,'contactTypeId':_0x4cda25,'phone':_0x33f188[_0x140932],'orderBy':orderBy});}}}_0x219ebe({'ok':0x1});}else _0x219ebe({'res':0x0});});}function createAdditionalPhone(_0x5007c6,_0x4a5cf6,_0x2895b8,_0x386122){var _0xe3f5eb='';var _0x4d3be4='';var _0x53d9c5=_0x2895b8[_0xf966('0x1e')]('§');_0xe3f5eb=_0x53d9c5[0x0];if(_0x53d9c5[_0xf966('0x1d')]==0x2)_0x4d3be4=_0x53d9c5[0x1];return new Promise(function(_0x3010be,_0x506329){return db[_0xf966('0x20')][_0xf966('0x21')]({'where':{'CmContactId':_0x5007c6,'item':_0xe3f5eb}})[_0xf966('0x1a')](function(_0x37471c){if(_0x37471c){return db[_0xf966('0x20')]['update']({'ItemTypeId':_0x4a5cf6,'description':_0x4d3be4,'OrderBy':_0x386122},{'where':{'CmContactId':_0x5007c6,'item':_0xe3f5eb}})[_0xf966('0x1a')](function(_0x32c464){_0x3010be({'res':'updated'});});}else{return db[_0xf966('0x20')][_0xf966('0x22')]({'CmContactId':_0x5007c6,'item':_0xe3f5eb,'description':_0x4d3be4,'ItemTypeId':_0x4a5cf6,'OrderBy':_0x386122,'ItemClass':'PHONE'})[_0xf966('0x1a')](function(_0x27ea60){_0x3010be({'res':_0xf966('0x23')});});}});});}function insertCmHopper(_0x16cc0d,_0xc1a6d9,_0x333fc9,_0x4c4b11,_0x598302){var _0xe1e4db=[_0xf966('0x24'),_0xf966('0x25'),'cm_contacts.id',_0xf966('0x26'),_0xc1a6d9+'.'+_0x4c4b11,_0xf966('0x27'),_0xf966('0x28'),_0xf966('0x29'),'cm_contacts.UserId','\x22'+_0x598302+'\x22'];return squel[_0xf966('0x2a')]()['into'](_0xf966('0x2b'))[_0xf966('0x2c')](['phone','scheduledat','ContactId',_0xf966('0x2d'),_0x4c4b11,_0xf966('0x2e'),_0xf966('0x2f'),'priority','UserId',_0xf966('0x30')],squel[_0xf966('0x12')]()[_0xf966('0x31')](_0xe1e4db)[_0xf966('0x32')](_0xc1a6d9)['join'](_0xf966('0x33'),null,_0xf966('0x34')+_0xc1a6d9+_0xf966('0x35'))[_0xf966('0x15')](_0x333fc9,null,_0x333fc9+_0xf966('0x36')+_0xc1a6d9+'.'+_0x4c4b11)[_0xf966('0x17')](_0xc1a6d9+'.CmListId\x20=\x20?',_0x16cc0d)['where'](_0xf966('0x37'),NOW)[_0xf966('0x17')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0xc1a6d9,_0x333fc9,_0x4c4b11,_0xf966('0x2b'),[_0xf966('0x38'),_0xf966('0x39')]))[_0xf966('0x17')](_0xf966('0x3a'),selectNotIn(_0xc1a6d9,_0x333fc9,_0x4c4b11,_0xf966('0x2b'),[_0xf966('0x38')])))['toString']();}function insertCmHopperBlack(_0x20ae67,_0x4a2bd3,_0x5ece87,_0xc37698){var _0x2c2836=[_0xf966('0x24'),_0xf966('0x3b'),_0xf966('0x26'),_0x4a2bd3+'.'+_0xc37698,_0xf966('0x27'),_0xf966('0x28')];return squel[_0xf966('0x2a')]()[_0xf966('0x3c')]('cm_hopper_black')[_0xf966('0x2c')]([_0xf966('0x14'),'ContactId','ListId',_0xc37698,_0xf966('0x2e'),'updatedAt'],squel[_0xf966('0x12')]()[_0xf966('0x31')](_0x2c2836)[_0xf966('0x32')](_0x4a2bd3)[_0xf966('0x15')](_0xf966('0x33'),null,_0xf966('0x34')+_0x4a2bd3+_0xf966('0x35'))[_0xf966('0x15')](_0x5ece87,null,_0x5ece87+_0xf966('0x36')+_0x4a2bd3+'.'+_0xc37698)[_0xf966('0x17')](_0x4a2bd3+'.CmListId\x20=\x20?',_0x20ae67)[_0xf966('0x17')](_0xf966('0x37'),NOW)[_0xf966('0x17')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0xf966('0x14'))[_0xf966('0x32')](_0xf966('0x3d'))[_0xf966('0x17')]('ListId\x20=\x20?',_0x20ae67)[_0xf966('0x17')](_0xc37698+_0xf966('0x16')+_0x4a2bd3+'.'+_0xc37698)))['toString']();}function insertTzCmHopper(_0x53564a,_0x352bfd,_0x425317,_0x57845a,_0x4ef999,_0xa6cafa){var _0x65cbbf=[_0xf966('0x24'),_0xf966('0x3e')+_0xa6cafa+_0xf966('0x3f'),_0xf966('0x3b'),_0xf966('0x26'),_0x352bfd+'.'+_0x57845a,_0xf966('0x27'),'cm_contacts.updatedAt',_0xf966('0x29'),_0xf966('0x40'),'\x22'+_0x4ef999+'\x22'];var _0x5c5866=squel['insert']()['into'](_0xf966('0x2b'))[_0xf966('0x2c')]([_0xf966('0x14'),'scheduledat',_0xf966('0x41'),_0xf966('0x2d'),_0x57845a,_0xf966('0x2e'),_0xf966('0x2f'),_0xf966('0x42'),'UserId',_0xf966('0x30')],squel['select']()[_0xf966('0x31')](_0x65cbbf)['from'](_0x352bfd)['join']('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x352bfd+_0xf966('0x35'))[_0xf966('0x15')](_0x425317,null,_0x425317+_0xf966('0x36')+_0x352bfd+'.'+_0x57845a)[_0xf966('0x15')](_0xa6cafa,null,_0xa6cafa+_0xf966('0x36')+_0x352bfd+'.'+_0x57845a)['where'](_0x352bfd+_0xf966('0x43'),_0x53564a)['where'](_0xf966('0x37'),NOW)[_0xf966('0x17')](_0xf966('0x3a'),selectNotIn(_0x352bfd,_0x425317,_0x57845a,'cm_hopper',[_0xf966('0x38'),_0xf966('0x39')]))[_0xf966('0x17')](_0xf966('0x3a'),selectNotIn(_0x352bfd,_0x425317,_0x57845a,_0xf966('0x2b'),['\x22always\x22'])))[_0xf966('0x44')]();return _0x5c5866;}function insertTzCmHopperBlack(_0x55a174,_0x44b0b3,_0xf0cdc2,_0x455565){var _0x17a914=[_0xf966('0x24'),_0xf966('0x3b'),_0xf966('0x26'),_0x44b0b3+'.'+_0x455565,'cm_contacts.createdAt',_0xf966('0x28')];return squel[_0xf966('0x2a')]()['into'](_0xf966('0x3d'))[_0xf966('0x2c')]([_0xf966('0x14'),_0xf966('0x41'),_0xf966('0x2d'),_0x455565,_0xf966('0x2e'),_0xf966('0x2f')],squel[_0xf966('0x12')]()['fields'](_0x17a914)[_0xf966('0x32')](_0x44b0b3)[_0xf966('0x15')](_0xf966('0x33'),null,_0xf966('0x34')+_0x44b0b3+'.CmListId')['join'](_0xf0cdc2,null,_0xf0cdc2+_0xf966('0x36')+_0x44b0b3+'.'+_0x455565)[_0xf966('0x17')](_0x44b0b3+'.CmListId\x20=\x20?',_0x55a174)['where'](_0xf966('0x37'),NOW)[_0xf966('0x17')](_0xf966('0x3a'),squel[_0xf966('0x12')]()[_0xf966('0x13')]('phone')[_0xf966('0x32')](_0xf966('0x3d'))[_0xf966('0x17')]('ListId\x20=\x20?',_0x55a174)[_0xf966('0x17')](_0x455565+_0xf966('0x16')+_0x44b0b3+'.'+_0x455565)))[_0xf966('0x44')]();}function insertCmHopperAdditionalPhones(_0x2e2a7c){var _0x209af2=[_0xf966('0x45'),_0xf966('0x46'),'cm_contact_has_items.OrderBy',_0xf966('0x47'),'cm_contact_has_items.updatedAt'];return squel[_0xf966('0x2a')]()[_0xf966('0x3c')](_0xf966('0x48'))[_0xf966('0x2c')]([_0xf966('0x49'),_0xf966('0x14'),_0xf966('0x4a'),_0xf966('0x2e'),_0xf966('0x2f')],squel['select']()[_0xf966('0x31')](_0x209af2)[_0xf966('0x32')]('cm_hopper')[_0xf966('0x15')](_0xf966('0x33'),null,_0xf966('0x4b'))[_0xf966('0x15')]('cm_contact_has_items',null,_0xf966('0x4c'))[_0xf966('0x17')](_0xf966('0x4d'),_0x2e2a7c)[_0xf966('0x17')](_0xf966('0x37'),NOW))[_0xf966('0x44')]();}function insertCmContact(_0x216492,_0x599558,_0x41fdb7,_0x571ba6){var _0x7f904d=_[_0xf966('0x4e')](_[_0xf966('0x4f')](_0x571ba6),[_0xf966('0x2d'),_0xf966('0x50'),_0xf966('0x2e'),_0xf966('0x2f')]);return squel[_0xf966('0x2a')]()[_0xf966('0x3c')](_0xf966('0x33'))['fromQuery'](_0x7f904d,squel['select']()['fields'](_0x7f904d)[_0xf966('0x32')](_0x599558)[_0xf966('0x17')]('('+_0x41fdb7['join'](',')+_0xf966('0x51'),squel[_0xf966('0x12')]()['fields'](_0x41fdb7)[_0xf966('0x32')](_0xf966('0x33'))['where']('ListId\x20=\x20?',_0x216492)[_0xf966('0x17')](_0xf966('0x52')))[_0xf966('0x17')](_0xf966('0x53'),squel[_0xf966('0x12')]()[_0xf966('0x13')]('MIN(id)','min_id')[_0xf966('0x32')](_0x599558)[_0xf966('0x54')](_0x41fdb7[_0xf966('0x15')](','))))[_0xf966('0x44')]();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x22bc7a){logger[_0xf966('0x55')](_0x22bc7a[_0xf966('0x56')]);process[_0xf966('0x57')](0x1);}function handleError(_0x5448a0,_0x2a73e8){stats[_0xf966('0x58')][_0xf966('0x1b')]({'name':_0x2a73e8[_0xf966('0x59')],'message':_0x2a73e8['message'],'row':_0x5448a0});}function handleQuery(_0x1bba94){logger[_0xf966('0x5a')](_0x1bba94);return db[_0xf966('0x5b')]['query'](_0x1bba94)[_0xf966('0x5c')](function(_0x2b28cb){results[_0xf966('0x1b')](_0x2b28cb);})['catch'](function(_0x906513){logger[_0xf966('0x55')](_0x906513[_0xf966('0x56')]);});}function updateTzCampaigns(_0x54c29d){return new Promise(function(_0x347bad,_0x55f74a){var _0x2435ba=squel['select']()[_0xf966('0x31')]([_0xf966('0x5d'),_0xf966('0x5e')])[_0xf966('0x32')]('campaigns')[_0xf966('0x15')](_0xf966('0x5f'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0xf966('0x17')](_0xf966('0x60')+_0x54c29d);db[_0xf966('0x5b')][_0xf966('0x61')](_0x2435ba[_0xf966('0x44')]())['spread'](function(_0x23a4f9){var _0x5acb41=[];for(var _0x22ca49=0x0;_0x22ca49<_0x23a4f9[_0xf966('0x1d')];_0x22ca49++){_0x5acb41[_0xf966('0x1b')](getTimezoneData(_0x23a4f9[_0x22ca49],tmp_campaigns));}BPromise['all'](_0x5acb41)[_0xf966('0x1a')](function(){_0x347bad({'val':0x1});});})[_0xf966('0x62')](function(_0x15b17d){logger[_0xf966('0x55')](_0x15b17d[_0xf966('0x56')]);_0x347bad({'val':0x0});});});}function updateTzVoiceQueues(_0x50a876){return new Promise(function(_0x165c5c,_0x7a88b8){var _0xd0e786=squel[_0xf966('0x12')]()[_0xf966('0x31')]([_0xf966('0x63'),_0xf966('0x64')])['from'](_0xf966('0x65'))[_0xf966('0x15')](_0xf966('0x66'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0xf966('0x17')](_0xf966('0x67')+_0x50a876);db[_0xf966('0x5b')][_0xf966('0x61')](_0xd0e786['toString']())[_0xf966('0x5c')](function(_0x6d305c){var _0x9662c0=[];for(var _0x2f7d25=0x0;_0x2f7d25<_0x6d305c[_0xf966('0x1d')];_0x2f7d25++){_0x9662c0['push'](getTimezoneData(_0x6d305c[_0x2f7d25],tmp_voice_queues));}BPromise[_0xf966('0x1c')](_0x9662c0)['then'](function(){_0x165c5c({'val':0x1});});})['catch'](function(_0x9d598b){logger[_0xf966('0x55')](_0x9d598b['message']);_0x165c5c({'val':0x0});});});}function getTimezoneData(_0x168a32,_0xb920d7){return new Promise(function(_0x457e6c,_0x481353){var _0x1de68c=shared[_0xf966('0x68')];var _0x7cb858=_0x1de68c[_0x168a32[_0xf966('0x69')]];if(_[_0xf966('0x1f')](_0x7cb858)){_0x457e6c({'ret':0x1});}else{var _0xd1b675=_0x7cb858[_0xf966('0x6a')];var _0x3cbe6c=squel[_0xf966('0x2a')]()[_0xf966('0x3c')](_0xb920d7)[_0xf966('0x6b')]('id',_0x168a32['id'])[_0xf966('0x6b')]('offset',_0xd1b675)[_0xf966('0x6b')](_0xf966('0x69'),_0x168a32[_0xf966('0x69')])['toString']();return db[_0xf966('0x5b')][_0xf966('0x61')](_0x3cbe6c)[_0xf966('0x5c')](function(_0x558488){_0x457e6c({'ret':0x1});})[_0xf966('0x62')](function(_0x2d26c3){logger[_0xf966('0x55')](_0x2d26c3['message']);_0x481353({'ret':0x1});});}});}function handleTZQuery(_0x5ae9d9){logger['info'](_0x5ae9d9);return db['sequelize'][_0xf966('0x61')](_0x5ae9d9)[_0xf966('0x5c')](function(_0x6c9aef){})[_0xf966('0x62')](function(_0x5493cb){logger[_0xf966('0x55')](_0x5493cb[_0xf966('0x56')]);});}function main(_0x4cff16,_0xd10b82,_0x21b7e,_0x2067b1){logger['info'](_0xf966('0x6c'),_0x4cff16,JSON['stringify'](_0xd10b82));process['send'](_0xf966('0x6d'));var _0x2a0341=_0xd10b82[_0xf966('0x6e')];var _0x3b6cd2=_[_0xf966('0x6f')](_0x2a0341);var _0x6672e9=_0xd10b82[_0xf966('0x70')];var _0x31fff5=path[_0xf966('0x15')](config[_0xf966('0x71')],_0xf966('0x72'),_0x6672e9+_0xf966('0x73'));hasTZ=_[_0xf966('0x4f')](_0x2a0341)[_0xf966('0x74')]('dialTimezone');var _0x2f0fe4=_[_0xf966('0x4f')](_0x2a0341)['join']();logger[_0xf966('0x5a')](_0xf966('0x75'),_0x2f0fe4);db[_0xf966('0x76')][_0xf966('0x77')]({'raw':!![],'attributes':['id',_0xf966('0x78')]})['then'](function(_0x1653a1){for(var _0x4f38d3=0x0;_0x4f38d3<_0x1653a1[_0xf966('0x1d')];_0x4f38d3++){if(_0x1653a1[_0x4f38d3][_0xf966('0x78')]in _0x2a0341){contactItemTypes[_0xf966('0x1b')](_0x1653a1[_0x4f38d3]);delete _0x3b6cd2[_0x1653a1[_0x4f38d3][_0xf966('0x78')]];hasAdditionalPhones=!![];}for(var _0x2c9be6 in _0x2a0341){if(_0x1653a1[_0x4f38d3]['name']+_0xf966('0x79')===_0x2c9be6){phoneDescriptions[_0xf966('0x1b')]({'itemTypeId':_0x1653a1[_0x4f38d3]['id'],'description':_0x2c9be6});delete _0x3b6cd2[_0x2c9be6];}}}if(hasAdditionalPhones)_0x3b6cd2[_0xf966('0x19')]='';var _0x4c20b6=_[_0xf966('0x4f')](_0x3b6cd2)['join']();logger[_0xf966('0x5a')](_0xf966('0x75'),_0x4c20b6);fs[_0xf966('0x7a')](_0x31fff5,_0x4c20b6+'\x0a');Papa[_0xf966('0x7b')](fs[_0xf966('0x7c')](_0x4cff16),{'header':!![],'skipEmptyLines':!![],'step':function(_0x354f24,_0x4aab0d){try{for(var _0x2c2c7f=0x0,_0x498849=[];_0x2c2c7f<_0x354f24[_0xf966('0x7d')][_0xf966('0x1d')];_0x2c2c7f++){stats[_0xf966('0x7e')]+=0x1;if(_0x354f24['errors'][_0x2c2c7f]){handleError(_0x354f24[_0xf966('0x7d')][_0x2c2c7f],_0x354f24[_0xf966('0x58')][_0x2c2c7f]);}else{var _0x38a1d9=[];var _0x18d1d3=[];var _0x712c27={};for(var _0x575046 in _0x2a0341){let _0x55336d=contactItemTypes[_0xf966('0x7f')](_0x33080b=>_0x33080b[_0xf966('0x78')]===_0x575046);let _0x31cf1c=contactItemTypes[_0xf966('0x7f')](_0x418e3d=>_0x418e3d[_0xf966('0x78')]+'_description'===_0x575046);if(_[_0xf966('0x1f')](_0x55336d)&&_[_0xf966('0x1f')](_0x31cf1c)){if(_0x2a0341['hasOwnProperty'](_0x575046)){if(_0x354f24[_0xf966('0x7d')][_0x2c2c7f][_0x2a0341[_0x575046]]){var _0x2c296c=_['trim'](_0x354f24[_0xf966('0x7d')][_0x2c2c7f][_0x2a0341[_0x575046]]['replace'](/"/g,'\x27'));switch(_0x575046){case'scheduledat':var _0x5d56a8=moment(_0x2c296c,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x5d56a8['isValid']()){_0x498849[_0xf966('0x1b')]('\x22'+_0x2c296c+'\x22');}else{_0x38a1d9['push'](_0xf966('0x80'));}break;case'priority':var _0x1ef66a=parseInt(_0x2c296c);_0x2c296c=_['isNaN'](_0x1ef66a)||_0x1ef66a<0x0||_0x1ef66a>0x4?_0x2067b1?0x3:0x2:_0x1ef66a;_0x498849['push']('\x22'+_0x2c296c+'\x22');break;case'UserId':var _0x3e8d1d=parseInt(_0x2c296c);if(_[_0xf966('0x81')](_0x3e8d1d)&&_[_0xf966('0x74')](_0x21b7e,_0x3e8d1d)){_0x498849[_0xf966('0x1b')]('\x22'+_0x3e8d1d+'\x22');}else{_0x38a1d9[_0xf966('0x1b')]('agent\x20not\x20exists');}break;case _0xf966('0x82'):if(isEmail(_0x2c296c)){_0x498849['push']('\x22'+_0x2c296c+'\x22');}else{_0x38a1d9[_0xf966('0x1b')](_0xf966('0x83'));}break;case _0xf966('0x84'):var _0x6123b5=moment(_0x2c296c,'YYYY-MM-DD',!![]);if(_0x6123b5[_0xf966('0x85')]()){_0x498849[_0xf966('0x1b')]('\x22'+_0x2c296c+'\x22');}else{_0x38a1d9[_0xf966('0x1b')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;case _0xf966('0x69'):var _0x3d14da=shared['timezones'];var _0x24c511=_0x3d14da[_0x2c296c];if(!_[_0xf966('0x1f')](_0x24c511)){var _0x3b060d=_0x24c511[_0xf966('0x6a')];_0x498849[_0xf966('0x1b')]('\x22'+_0x2c296c+'\x22');_0x498849[_0xf966('0x1b')]('\x22'+_0x3b060d+'\x22');}break;default:_0x498849['push']('\x22'+_0x2c296c+'\x22');}}else{switch(_0x575046){case _0xf966('0x86'):case'phone':_0x38a1d9[_0xf966('0x1b')](_0x575046+'\x20not\x20specified');break;default:_0x498849[_0xf966('0x1b')]('\x22\x22');}}}}else{var _0x33557e='';if(!_[_0xf966('0x1f')](_0x55336d)){if(!_0x712c27[_0xf966('0x87')](_0x55336d['id'])){if(!_[_0xf966('0x1f')](_0x354f24['data'][_0x2c2c7f][_0x2a0341[_0x575046]])){var _0x2c296c=_[_0xf966('0x88')](_0x354f24['data'][_0x2c2c7f][_0x2a0341[_0x575046]][_0xf966('0x89')](/"/g,'\x27'));var _0xeec6d9=phoneDescriptions['find'](_0x9a3a36=>_0x9a3a36[_0xf966('0x8a')]===_0x55336d['id']);if(!_[_0xf966('0x1f')](_0xeec6d9)){var _0x1448b6=_[_0xf966('0x88')](_0x354f24[_0xf966('0x7d')][_0x2c2c7f][_0x2a0341[_0xeec6d9[_0xf966('0x8b')]]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x1448b6))_0x2c296c=_0x2c296c+'§'+_0x1448b6;}if(_0x33557e=='')_0x33557e=_0x2c296c;else _0x33557e+='|'+_0x2c296c;}_0x18d1d3[_0xf966('0x1b')](_0x55336d['id']+':'+_0x33557e);_0x712c27[_0x55336d['id']]=0x1;}}}}if(hasAdditionalPhones){_0x498849[_0xf966('0x1b')]('\x22'+_0x18d1d3[_0xf966('0x15')](';')+'\x22');}if(_0x38a1d9[_0xf966('0x1d')]){handleError(_0x354f24[_0xf966('0x7d')][_0x2c2c7f],{'code':_0xf966('0x8c'),'message':_0x38a1d9[_0xf966('0x15')]()});}else{fs[_0xf966('0x8d')](_0x31fff5,_0x498849[_0xf966('0x15')]()+'\x0a');}_0x498849=[];}if(!(stats[_0xf966('0x7e')]%0xc8)){socket[_0xf966('0x8e')](_0xf966('0x8f')+_0x6672e9,stats);stats['errors']=[];}}if(stopped){logger[_0xf966('0x5a')](_0xf966('0x90'));_0x4aab0d[_0xf966('0x91')]();}}catch(_0x21e020){handleError(_0x354f24['data'][_0x2c2c7f],{'code':_0xf966('0x92'),'message':_0x21e020[_0xf966('0x56')]});logger['error']('step',_0x21e020[_0xf966('0x56')]);}},'complete':function(){try{var _0x59f0e5=[];var _0x428772=[];var _0x2ab36d=_0xf966('0x33');if(_0xd10b82[_0xf966('0x93')]&&_0xd10b82[_0xf966('0x93')][_0xf966('0x1d')]){_0x2ab36d=_0xf966('0x94')+_0x6672e9;_0x59f0e5[_0xf966('0x1b')]('CREATE\x20TABLE\x20'+_0x2ab36d+_0xf966('0x95'));}tmp_campaigns=_0xf966('0x96')+_0x6672e9;tmp_voice_queues=_0xf966('0x97')+_0x6672e9;_0x428772[_0xf966('0x1b')](_0xf966('0x98')+tmp_campaigns+_0xf966('0x99'));_0x428772['push']('CREATE\x20TABLE\x20'+tmp_voice_queues+_0xf966('0x99'));BPromise[_0xf966('0x9a')](_0x428772,handleTZQuery)['then'](function(_0x3f16db){updateTzCampaigns(_0xd10b82[_0xf966('0x2d')])['then'](function(_0x4c1eda){updateTzVoiceQueues(_0xd10b82[_0xf966('0x2d')])[_0xf966('0x1a')](function(_0x101da2){if(hasTZ)_0x4c20b6=_0x4c20b6[_0xf966('0x89')](_0xf966('0x69'),'dialTimezone,utcOffset');var _0x347807=util[_0xf966('0xf')](_0xf966('0x9b'),_0x31fff5,_0x2ab36d,_0x4c20b6,_0xd10b82[_0xf966('0x2d')],_0xd10b82['CompanyId']||null,NOW,NOW);if(_[_0xf966('0x1f')](_0x2a0341[_0xf966('0x9c')])){_0x347807+=',\x20scheduledAt\x20=\x20NOW()';}_0x59f0e5[_0xf966('0x1b')](_0x347807);if(_0xd10b82[_0xf966('0x93')]&&_0xd10b82[_0xf966('0x93')][_0xf966('0x1d')]){_0x59f0e5[_0xf966('0x1b')](insertCmContact(_0xd10b82[_0xf966('0x2d')],_0x2ab36d,_0xd10b82[_0xf966('0x93')],_0x2a0341));_0x59f0e5[_0xf966('0x1b')](_0xf966('0x9d')+_0x2ab36d+';');}BPromise[_0xf966('0x9a')](_0x59f0e5,handleQuery)[_0xf966('0x1a')](function(_0x151265){BPromise[_0xf966('0x1c')]([handleAdditionalPhones()])[_0xf966('0x1a')](function(){_0x59f0e5=[];for(var _0x34cb13=0x0;_0x34cb13<promisesAdditionalPhones[_0xf966('0x1d')];_0x34cb13++){if(promisesAdditionalPhones[_0x34cb13][_0xf966('0x14')]!='§'){_0x59f0e5[_0xf966('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x34cb13]['contactId'],promisesAdditionalPhones[_0x34cb13]['contactTypeId'],promisesAdditionalPhones[_0x34cb13][_0xf966('0x14')],promisesAdditionalPhones[_0x34cb13][_0xf966('0x9e')]));}}BPromise['all'](_0x59f0e5)[_0xf966('0x1a')](function(){_0x59f0e5=[];if(hasTZ){_0x59f0e5['push'](insertTzCmHopper(_0xd10b82[_0xf966('0x2d')],'voice_queues_has_cm_lists',_0xf966('0x65'),_0xf966('0x9f'),_0x2067b1,tmp_voice_queues));_0x59f0e5[_0xf966('0x1b')](insertTzCmHopperBlack(_0xd10b82['ListId'],_0xf966('0xa0'),'voice_queues','VoiceQueueId'));_0x59f0e5[_0xf966('0x1b')](insertTzCmHopper(_0xd10b82['ListId'],_0xf966('0x5f'),_0xf966('0xa1'),_0xf966('0xa2'),_0x2067b1,tmp_campaigns));_0x59f0e5[_0xf966('0x1b')](insertTzCmHopperBlack(_0xd10b82[_0xf966('0x2d')],_0xf966('0xa3'),_0xf966('0xa1'),_0xf966('0xa2')));_0x59f0e5[_0xf966('0x1b')](insertCmHopperAdditionalPhones(_0xd10b82[_0xf966('0x2d')]));}else{_0x59f0e5[_0xf966('0x1b')](insertCmHopper(_0xd10b82[_0xf966('0x2d')],_0xf966('0x66'),_0xf966('0x65'),_0xf966('0x9f'),_0x2067b1));_0x59f0e5['push'](insertCmHopperBlack(_0xd10b82[_0xf966('0x2d')],'voice_queues_has_cm_blacklists','voice_queues',_0xf966('0x9f')));_0x59f0e5[_0xf966('0x1b')](insertCmHopper(_0xd10b82[_0xf966('0x2d')],'campaigns_has_cm_lists','campaigns',_0xf966('0xa2'),_0x2067b1));_0x59f0e5[_0xf966('0x1b')](insertCmHopperBlack(_0xd10b82[_0xf966('0x2d')],_0xf966('0xa3'),'campaigns',_0xf966('0xa2')));_0x59f0e5[_0xf966('0x1b')](insertCmHopperAdditionalPhones(_0xd10b82['ListId']));}_0x59f0e5[_0xf966('0x1b')](_0xf966('0x9d')+tmp_campaigns+';');_0x59f0e5['push']('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0xf966('0x9a')](_0x59f0e5,handleQuery)[_0xf966('0x1a')](function(_0x4ebc2f){stats[_0xf966('0xa4')]=!![];stats[_0xf966('0xa5')]=_0xd10b82[_0xf966('0x93')]&&_0xd10b82['duplicates'][_0xf966('0x1d')]?results[0x2][_0xf966('0xa5')]:results[0x0][_0xf966('0xa5')];socket[_0xf966('0x8e')](_0xf966('0x8f')+_0x6672e9,stats);fs[_0xf966('0xa6')](_0x4cff16);fs[_0xf966('0xa6')](_0x31fff5);process[_0xf966('0x57')](0x0);})[_0xf966('0x62')](function(_0x4a6cbc){logger[_0xf966('0x55')](_0x4a6cbc['message']);process[_0xf966('0x57')](0x1);});});});})['catch'](function(_0x8b5ef2){logger['error'](_0x8b5ef2[_0xf966('0x56')]);process['exit'](0x1);});});});});}catch(_0x496b07){logger['error']('complete',_0x496b07[_0xf966('0x56')]);process[_0xf966('0x57')](0x1);}},'error':function(_0x5467c9,_0x585ffd,_0x4e4045,_0x36796c){throw new Error(_0x36796c);}});});}function validate(){if(process[_0xf966('0xa7')]&&process[_0xf966('0xa7')][_0xf966('0x1d')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x3f6dcf=path['join'](config['root'],_0xf966('0x72'),process['argv'][0x2]);if(!fs[_0xf966('0xa8')](_0x3f6dcf)){throw new Error(_0xf966('0xa9'));}var _0x38cab6={};try{_0x38cab6=JSON[_0xf966('0x7b')](process[_0xf966('0xa7')][0x3]);if(!_0x38cab6[_0xf966('0x6e')]){throw new Error(_0xf966('0xaa'));}if(!_0x38cab6[_0xf966('0x6e')]['phone']){throw new Error(_0xf966('0xab'));}if(!_0x38cab6[_0xf966('0x6e')][_0xf966('0x86')]){throw new Error(_0xf966('0xac'));}var _0x352caa=0x0;if(_0x38cab6[_0xf966('0x6e')][_0xf966('0xad')]){_0x352caa=0x1;}if(!_0x38cab6['ListId']){throw new Error(_0xf966('0xae'));}}catch(_0x254101){throw new Error('body\x20id\x20mandatory');}var _0x50c9b4=[];try{_0x50c9b4=_[_0xf966('0xaf')](JSON['parse'](process[_0xf966('0xa7')][0x4]),'id');}catch(_0x464e50){logger[_0xf966('0x5a')]('No\x20agent\x20available');}main(_0x3f6dcf,_0x38cab6,_0x50c9b4,_0x352caa);}validate();process['on'](_0xf966('0xb0'),handleStop);process['on'](_0xf966('0xb1'),handleUncaughtException);
\ No newline at end of file
index d963cde..ad65145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f7b=['SIGINT','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','socket.io-emitter','format','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','field','phone','from','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','then','catch','message','split','filter','CmContactHasItem','updated','create','PHONE','inserted','update','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','updatedAt','priority','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','ContactId','ListId','createdAt','cm_hopper_black','ListId\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.OrderBy','insert','CmHopperId','OrderBy','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','CompanyId','MIN(id)','min_id','group','Received\x20SIGINT','error','exit','code','info','main','stringify','send','start','binding','clone','socket_timestamp','server/files/tmp','body','name','header','parse','data','errors','find','_description','hasOwnProperty','trim','replace','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','isNumber','includes','email','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','Abort\x20parser','abort','SystemError','step','\x20LIKE\x20cm_contacts;','CIS\x20len','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contact','orderBy','DROP\x20TABLE\x20','finish','affectedRows','emit','contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x4f7b,0x13e));var _0xb4f7=function(_0x1f98fa,_0x401ff){_0x1f98fa=_0x1f98fa-0x0;var _0x4f40ef=_0x4f7b[_0x1f98fa];return _0x4f40ef;};'use strict';var fs=require('fs');var path=require(_0xb4f7('0x0'));var _=require(_0xb4f7('0x1'));var Papa=require(_0xb4f7('0x2'));var util=require(_0xb4f7('0x3'));var BPromise=require('bluebird');var moment=require(_0xb4f7('0x4'));var squel=require(_0xb4f7('0x5'));var Redis=require(_0xb4f7('0x6'));var db=require(_0xb4f7('0x7'))['db'];var config=require(_0xb4f7('0x8'));var logger=require(_0xb4f7('0x9'))(_0xb4f7('0xa'));config[_0xb4f7('0xb')]=_['defaults'](config[_0xb4f7('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xb4f7('0xc'))(new Redis(config[_0xb4f7('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0xb4f7('0xd')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName=_0xb4f7('0xe')+moment()['format'](_0xb4f7('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0xa74c93){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))*$/[_0xb4f7('0x10')](_0xa74c93);}function selectNotIn(_0x5b372a,_0x38e537,_0x2b226f,_0x4698af,_0x436392){return squel[_0xb4f7('0x11')]()[_0xb4f7('0x12')](_0xb4f7('0x13'))[_0xb4f7('0x14')](_0x4698af)['join'](_0x38e537,null,_0x38e537+_0xb4f7('0x15')+_0x4698af+'.'+_0x2b226f)[_0xb4f7('0x16')](_0x4698af+'.'+_0x2b226f+_0xb4f7('0x17')+_0x5b372a+'.'+_0x2b226f)[_0xb4f7('0x16')](_0x38e537+_0xb4f7('0x18')+_0x436392[_0xb4f7('0x19')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x56c6a5,_0x2df636){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize'][_0xb4f7('0x1a')](_0xb4f7('0x1b')+tempTableName)[_0xb4f7('0x1c')](function(_0x2c304b){if(_0x2c304b!==null){var _0x33e473=[];for(var _0x35ce44=0x0;_0x35ce44<_0x2c304b[_0xb4f7('0x1d')];_0x35ce44++){var _0x40b3ac=_0x2c304b[_0x35ce44];if(!_[_0xb4f7('0x1e')](_0x40b3ac['phone'])){if(!_[_0xb4f7('0x1e')](_0x40b3ac[_0xb4f7('0x1f')]))_0x33e473[_0xb4f7('0x20')](insertAdditionalPhones(_0x40b3ac));promisesContact['push']({'contact':_0x40b3ac});}}}Promise[_0xb4f7('0x21')](_0x33e473)[_0xb4f7('0x22')](function(){_0x56c6a5({'val':0x1});});})[_0xb4f7('0x23')](function(_0x4c7883){logger['error'](_0x4c7883[_0xb4f7('0x24')]);});});}function insertAdditionalPhones(_0x35afd5){return new Promise(function(_0x5cc40e,_0x3ce52b){var _0x26e4d3=_0x35afd5[_0xb4f7('0x1f')];if(_[_0xb4f7('0x1e')](_0x26e4d3))_0x3ce52b({'val':0x0});else{var _0x58e948=_0x26e4d3[_0xb4f7('0x25')](';');var _0x56bac5=[];orderBy=0x0;for(var _0x1cec47=0x0;_0x1cec47<_0x58e948[_0xb4f7('0x1d')];_0x1cec47++){_0x56bac5[_0xb4f7('0x20')](splitAdditionalPhone(_0x35afd5['id'],_0x58e948[_0x1cec47]));}Promise[_0xb4f7('0x21')](_0x56bac5)[_0xb4f7('0x22')](function(){_0x5cc40e({'val':_0x58e948[_0xb4f7('0x1d')]});});}});}function splitAdditionalPhone(_0x493d81,_0x1fe0cf){return new Promise(function(_0x291166,_0x19e549){var _0x327b8f=_0x1fe0cf[_0xb4f7('0x25')](':');var _0x2705e3=_0x327b8f[0x0];var _0x57cf99=_0x327b8f[0x1];if(_0x57cf99!==''){var _0xd17524=_0x57cf99[_0xb4f7('0x25')]('|');var _0x3a3afa=[];for(var _0x1f385d=0x0;_0x1f385d<_0xd17524[_0xb4f7('0x1d')];_0x1f385d++){if(_0xd17524[_0x1f385d]!==''){var _0x594c04=_[_0xb4f7('0x26')](promisesAdditionalPhones,{'contactId':_0x493d81,'phone':_0xd17524[_0x1f385d]});if(_0x594c04[_0xb4f7('0x1d')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x493d81,'contactTypeId':_0x2705e3,'phone':_0xd17524[_0x1f385d],'orderBy':orderBy});}}}_0x291166({'ok':0x1});}else _0x291166({'res':0x0});});}function createAdditionalPhone(_0x18b1f3,_0x467541,_0x99a8bb,_0x35582a){var _0x47ba78='';var _0x2cb1b3='';var _0x1832bd=_0x99a8bb[_0xb4f7('0x25')]('§');_0x47ba78=_0x1832bd[0x0];if(_0x1832bd[_0xb4f7('0x1d')]==0x2)_0x2cb1b3=_0x1832bd[0x1];return new Promise(function(_0x54c714,_0x4ea802){return db[_0xb4f7('0x27')]['findOne']({'where':{'CmContactId':_0x18b1f3,'item':_0x47ba78}})[_0xb4f7('0x22')](function(_0x2d61f0){if(_0x2d61f0){return db['CmContactHasItem']['update']({'ItemTypeId':_0x467541,'description':_0x2cb1b3,'OrderBy':_0x35582a},{'where':{'CmContactId':_0x18b1f3,'item':_0x47ba78}})[_0xb4f7('0x22')](function(_0x5bf429){_0x54c714({'res':_0xb4f7('0x28')});});}else{return db[_0xb4f7('0x27')][_0xb4f7('0x29')]({'CmContactId':_0x18b1f3,'item':_0x47ba78,'ItemTypeId':_0x467541,'description':_0x2cb1b3,'OrderBy':_0x35582a,'ItemClass':_0xb4f7('0x2a')})[_0xb4f7('0x22')](function(_0x1f88da){_0x54c714({'res':_0xb4f7('0x2b')});});}});});}function updateContact(_0x4824f5){return new Promise(function(_0x554f69,_0x2d51c2){var _0x406f86=_0x4824f5['id'];delete _0x4824f5['id'];return db['CmContact'][_0xb4f7('0x2c')](_0x4824f5,{'where':{'id':_0x406f86}})['then'](function(_0x107940){updatedRows+=0x1;return db[_0xb4f7('0x2d')][_0xb4f7('0x2c')]({'phone':_0x4824f5[_0xb4f7('0x13')]},{'where':{'ContactId':_0x406f86}})[_0xb4f7('0x22')](function(_0x2c2ea4){_0x554f69({'ret':'OK'});});});});}function insertCmHopper(_0x1172c9,_0x9ac24c,_0x231f41,_0x13c36e,_0x4a0b1b){var _0x3996ff=[_0xb4f7('0x2e'),_0xb4f7('0x2f'),_0xb4f7('0x30'),_0xb4f7('0x31'),_0x9ac24c+'.'+_0x13c36e,_0xb4f7('0x32'),_0xb4f7('0x33'),_0xb4f7('0x34'),_0xb4f7('0x35'),'\x22'+_0x4a0b1b+'\x22'];return squel['insert']()[_0xb4f7('0x36')](_0xb4f7('0x37'))[_0xb4f7('0x38')]([_0xb4f7('0x13'),_0xb4f7('0x39'),'ContactId','ListId',_0x13c36e,'createdAt',_0xb4f7('0x3a'),_0xb4f7('0x3b'),'UserId',_0xb4f7('0x3c')],squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x3996ff)[_0xb4f7('0x14')](_0x9ac24c)['join'](_0xb4f7('0x3e'),null,_0xb4f7('0x3f')+_0x9ac24c+_0xb4f7('0x40'))[_0xb4f7('0x19')](_0x231f41,null,_0x231f41+'.id\x20=\x20'+_0x9ac24c+'.'+_0x13c36e)[_0xb4f7('0x16')](_0x9ac24c+_0xb4f7('0x41'),_0x1172c9)[_0xb4f7('0x16')](_0xb4f7('0x42'),NOW)[_0xb4f7('0x16')](_0xb4f7('0x43'),selectNotIn(_0x9ac24c,_0x231f41,_0x13c36e,_0xb4f7('0x37'),[_0xb4f7('0x44'),_0xb4f7('0x45')]))[_0xb4f7('0x16')](_0xb4f7('0x43'),selectNotIn(_0x9ac24c,_0x231f41,_0x13c36e,_0xb4f7('0x37'),[_0xb4f7('0x44')])))[_0xb4f7('0x46')]();}function insertCmHopperBlack(_0x1840ad,_0xff4236,_0x278b68,_0x799855){var _0x2ab808=[_0xb4f7('0x2e'),_0xb4f7('0x30'),_0xb4f7('0x31'),_0xff4236+'.'+_0x799855,_0xb4f7('0x32'),_0xb4f7('0x33')];return squel['insert']()[_0xb4f7('0x36')]('cm_hopper_black')[_0xb4f7('0x38')]([_0xb4f7('0x13'),_0xb4f7('0x47'),_0xb4f7('0x48'),_0x799855,_0xb4f7('0x49'),_0xb4f7('0x3a')],squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x2ab808)[_0xb4f7('0x14')](_0xff4236)[_0xb4f7('0x19')]('cm_contacts',null,_0xb4f7('0x3f')+_0xff4236+'.CmListId')[_0xb4f7('0x19')](_0x278b68,null,_0x278b68+_0xb4f7('0x15')+_0xff4236+'.'+_0x799855)['where'](_0xff4236+_0xb4f7('0x41'),_0x1840ad)[_0xb4f7('0x16')](_0xb4f7('0x42'),NOW)[_0xb4f7('0x16')](_0xb4f7('0x43'),squel[_0xb4f7('0x11')]()['field'](_0xb4f7('0x13'))[_0xb4f7('0x14')](_0xb4f7('0x4a'))[_0xb4f7('0x16')](_0xb4f7('0x4b'),_0x1840ad)[_0xb4f7('0x16')](_0x799855+'\x20=\x20?',_0xff4236+'.'+_0x799855)))['toString']();}function insertCmHopperAdditionalPhones(_0x18a324){var _0x2731d5=['cm_hopper.id',_0xb4f7('0x4c'),_0xb4f7('0x4d'),'cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt'];return squel[_0xb4f7('0x4e')]()[_0xb4f7('0x36')]('cm_hopper_additional_phones')[_0xb4f7('0x38')]([_0xb4f7('0x4f'),_0xb4f7('0x13'),_0xb4f7('0x50'),_0xb4f7('0x49'),'updatedAt'],squel[_0xb4f7('0x11')]()['fields'](_0x2731d5)['from'](_0xb4f7('0x37'))[_0xb4f7('0x19')](_0xb4f7('0x3e'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0xb4f7('0x19')](_0xb4f7('0x51'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0xb4f7('0x16')](_0xb4f7('0x52'),_0x18a324)[_0xb4f7('0x16')](_0xb4f7('0x42'),NOW))[_0xb4f7('0x46')]();}function insertCmContact(_0x35d06e,_0x2307d0,_0x1d9326,_0x5819dc){var _0x1d7495=_[_0xb4f7('0x53')](_['keys'](_0x5819dc),[_0xb4f7('0x48'),_0xb4f7('0x54'),'createdAt','updatedAt']);return squel[_0xb4f7('0x4e')]()[_0xb4f7('0x36')](_0xb4f7('0x3e'))[_0xb4f7('0x38')](_0x1d7495,squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x1d7495)[_0xb4f7('0x14')](_0x2307d0)[_0xb4f7('0x16')]('('+_0x1d9326[_0xb4f7('0x19')](',')+')\x20NOT\x20IN\x20?',squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x1d9326)[_0xb4f7('0x14')](_0xb4f7('0x3e'))[_0xb4f7('0x16')]('ListId\x20=\x20?',_0x35d06e))[_0xb4f7('0x16')]('id\x20IN\x20?',squel[_0xb4f7('0x11')]()['field'](_0xb4f7('0x55'),_0xb4f7('0x56'))[_0xb4f7('0x14')](_0x2307d0)[_0xb4f7('0x57')](_0x1d9326[_0xb4f7('0x19')](','))))[_0xb4f7('0x46')]();}function handleStop(){logger['info'](_0xb4f7('0x58'));stopped=!![];}function handleUncaughtException(_0x2786c7){logger[_0xb4f7('0x59')](_0x2786c7['message']);process[_0xb4f7('0x5a')](0x1);}function handleError(_0x13345e,_0x2422a2){stats['errors'][_0xb4f7('0x20')]({'name':_0x2422a2[_0xb4f7('0x5b')],'message':_0x2422a2['message'],'row':_0x13345e});}function handleQuery(_0x4c12b0){logger[_0xb4f7('0x5c')](_0x4c12b0);return db['sequelize']['query'](_0x4c12b0)[_0xb4f7('0x1c')](function(_0x5383ca){results['push'](_0x5383ca);})[_0xb4f7('0x23')](function(_0x5d2cf8){logger[_0xb4f7('0x59')](_0x5d2cf8[_0xb4f7('0x24')]);});}function main(_0x2522ff,_0x3731e3,_0x586c50,_0x59bf54){logger[_0xb4f7('0x5c')](_0xb4f7('0x5d'),_0x2522ff,JSON[_0xb4f7('0x5e')](_0x3731e3));process[_0xb4f7('0x5f')](_0xb4f7('0x60'));var _0x4f7340=_0x3731e3[_0xb4f7('0x61')];var _0x285821=_[_0xb4f7('0x62')](_0x4f7340);var _0x28b60b=_0x3731e3[_0xb4f7('0x63')];var _0x328413=path['join'](config['root'],_0xb4f7('0x64'),_0x28b60b+'.csv');logger[_0xb4f7('0x5c')](_0xb4f7('0x65'),_0x3731e3);db['ContactItemType']['findAll']({'raw':!![],'attributes':['id','name']})['then'](function(_0x30976f){for(var _0x24e613=0x0;_0x24e613<_0x30976f[_0xb4f7('0x1d')];_0x24e613++){if(_0x30976f[_0x24e613][_0xb4f7('0x66')]in _0x4f7340){contactItemTypes[_0xb4f7('0x20')](_0x30976f[_0x24e613]);delete _0x285821[_0x30976f[_0x24e613][_0xb4f7('0x66')]];hasAdditionalPhones=!![];}for(var _0x19d98f in _0x4f7340){if(_0x30976f[_0x24e613]['name']+'_description'===_0x19d98f){phoneDescriptions[_0xb4f7('0x20')]({'itemTypeId':_0x30976f[_0x24e613]['id'],'description':_0x19d98f});delete _0x285821[_0x19d98f];}}}if(hasAdditionalPhones)_0x285821[_0xb4f7('0x1f')]='';var _0x52b7ea=_['keys'](_0x285821)[_0xb4f7('0x19')]();logger[_0xb4f7('0x5c')](_0xb4f7('0x67'),_0x52b7ea);fs['writeFileSync'](_0x328413,_0x52b7ea+'\x0a');Papa[_0xb4f7('0x68')](fs['createReadStream'](_0x2522ff),{'header':!![],'skipEmptyLines':!![],'step':function(_0x30dfcb,_0x498761){try{for(var _0x43f849=0x0,_0x86a4d0=[];_0x43f849<_0x30dfcb[_0xb4f7('0x69')]['length'];_0x43f849++){stats['rows']+=0x1;if(_0x30dfcb[_0xb4f7('0x6a')][_0x43f849]){handleError(_0x30dfcb[_0xb4f7('0x69')][_0x43f849],_0x30dfcb[_0xb4f7('0x6a')][_0x43f849]);}else{var _0x101eae=[];var _0x28fa27=[];var _0x20e5ec={};for(var _0x372a50 in _0x4f7340){let _0x560f4c=contactItemTypes[_0xb4f7('0x6b')](_0x4ff54a=>_0x4ff54a[_0xb4f7('0x66')]===_0x372a50);let _0x3dab55=contactItemTypes[_0xb4f7('0x6b')](_0x414ed7=>_0x414ed7['name']+_0xb4f7('0x6c')===_0x372a50);if(_[_0xb4f7('0x1e')](_0x560f4c)&&_[_0xb4f7('0x1e')](_0x3dab55)){if(_0x4f7340[_0xb4f7('0x6d')](_0x372a50)){if(_0x30dfcb['data'][_0x43f849][_0x4f7340[_0x372a50]]){var _0x56f6c3=_[_0xb4f7('0x6e')](_0x30dfcb['data'][_0x43f849][_0x4f7340[_0x372a50]][_0xb4f7('0x6f')](/"/g,'\x27'));switch(_0x372a50){case _0xb4f7('0x39'):var _0xf537ea=moment(_0x56f6c3,_0xb4f7('0x70'),!![]);if(_0xf537ea[_0xb4f7('0x71')]()){_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');}else{_0x101eae[_0xb4f7('0x20')](_0xb4f7('0x72'));}break;case'priority':var _0x51e8fe=parseInt(_0x56f6c3);_0x56f6c3=_[_0xb4f7('0x73')](_0x51e8fe)||_0x51e8fe<0x0||_0x51e8fe>0x4?_0x59bf54?0x3:0x2:_0x51e8fe;_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');break;case _0xb4f7('0x74'):var _0x120c6b=parseInt(_0x56f6c3);if(_[_0xb4f7('0x75')](_0x120c6b)&&_[_0xb4f7('0x76')](_0x586c50,_0x120c6b)){_0x86a4d0['push']('\x22'+_0x120c6b+'\x22');}else{_0x101eae[_0xb4f7('0x20')]('agent\x20not\x20exists');}break;case _0xb4f7('0x77'):if(isEmail(_0x56f6c3)){_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');}else{_0x101eae[_0xb4f7('0x20')]('email\x20wrong\x20format');}break;case _0xb4f7('0x78'):var _0x463ddb=moment(_0x56f6c3,'YYYY-MM-DD',!![]);if(_0x463ddb[_0xb4f7('0x71')]()){_0x86a4d0['push']('\x22'+_0x56f6c3+'\x22');}else{_0x101eae[_0xb4f7('0x20')](_0xb4f7('0x79'));}break;default:_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');}}else{switch(_0x372a50){case _0xb4f7('0x7a'):case _0xb4f7('0x13'):_0x101eae['push'](_0x372a50+_0xb4f7('0x7b'));break;default:_0x86a4d0[_0xb4f7('0x20')]('\x22\x22');}}}}else{var _0x65835b='';if(!_[_0xb4f7('0x1e')](_0x560f4c)){if(!_0x20e5ec[_0xb4f7('0x6d')](_0x560f4c['id'])){for(var _0x591b90=0x0;_0x591b90<_0x4f7340[_0x372a50]['length'];_0x591b90++){var _0x56f6c3=_[_0xb4f7('0x6e')](_0x30dfcb[_0xb4f7('0x69')][_0x43f849][_0x4f7340[_0x372a50][_0x591b90]][_0xb4f7('0x6f')](/"/g,'\x27'));var _0x30e4ac=phoneDescriptions[_0xb4f7('0x6b')](_0x19c560=>_0x19c560[_0xb4f7('0x7c')]===_0x560f4c['id']);if(!_[_0xb4f7('0x1e')](_0x30e4ac)){var _0x23a9f6=_[_0xb4f7('0x6e')](_0x30dfcb['data'][_0x43f849][_0x4f7340[_0x30e4ac[_0xb4f7('0x7d')]][0x0]][_0xb4f7('0x6f')](/"/g,'\x27'));if(!_[_0xb4f7('0x1e')](_0x23a9f6))_0x56f6c3=_0x56f6c3+'§'+_0x23a9f6;}if(_0x65835b=='')_0x65835b=_0x56f6c3;else _0x65835b+='|'+_0x56f6c3;}_0x28fa27[_0xb4f7('0x20')](_0x560f4c['id']+':'+_0x65835b);_0x20e5ec[_0x560f4c['id']]=0x1;}}}}if(hasAdditionalPhones){_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x28fa27[_0xb4f7('0x19')](';')+'\x22');}if(_0x101eae['length']){handleError(_0x30dfcb[_0xb4f7('0x69')][_0x43f849],{'code':_0xb4f7('0x7e'),'message':_0x101eae[_0xb4f7('0x19')]()});}else{fs[_0xb4f7('0x7f')](_0x328413,_0x86a4d0[_0xb4f7('0x19')]()+'\x0a');}_0x86a4d0=[];}if(!(stats['rows']%0xc8)){socket['emit']('contact:import:'+_0x28b60b,stats);stats[_0xb4f7('0x6a')]=[];}}if(stopped){logger[_0xb4f7('0x5c')](_0xb4f7('0x80'));_0x498761[_0xb4f7('0x81')]();}}catch(_0x2698b0){handleError(_0x30dfcb[_0xb4f7('0x69')][_0x43f849],{'code':_0xb4f7('0x82'),'message':_0x2698b0[_0xb4f7('0x24')]});logger[_0xb4f7('0x59')](_0xb4f7('0x83'),_0x2698b0[_0xb4f7('0x24')]);}},'complete':function(){try{var _0x3c2c9a=[];var _0x2cab72=tempTableName;_0x3c2c9a[_0xb4f7('0x20')]('CREATE\x20TABLE\x20'+_0x2cab72+_0xb4f7('0x84'));logger[_0xb4f7('0x5c')](_0xb4f7('0x85'),contactItemTypes['length']);var _0x53e68e=util[_0xb4f7('0xd')](_0xb4f7('0x86'),_0x328413,_0x2cab72,_0x52b7ea,_0x3731e3['ListId'],_0x3731e3[_0xb4f7('0x54')]||null,NOW,NOW);if(_[_0xb4f7('0x1e')](_0x4f7340[_0xb4f7('0x39')])){_0x53e68e+=_0xb4f7('0x87');}_0x3c2c9a['push'](_0x53e68e);BPromise[_0xb4f7('0x88')](_0x3c2c9a,handleQuery)[_0xb4f7('0x22')](function(_0x336abc){BPromise[_0xb4f7('0x21')]([handleAdditionalPhones()])[_0xb4f7('0x22')](function(){_0x3c2c9a=[];for(var _0x2971fd=0x0;_0x2971fd<promisesContact[_0xb4f7('0x1d')];_0x2971fd++){_0x3c2c9a['push'](updateContact(promisesContact[_0x2971fd][_0xb4f7('0x89')]));}BPromise[_0xb4f7('0x21')](_0x3c2c9a)[_0xb4f7('0x22')](function(){_0x3c2c9a=[];for(var _0x34cc70=0x0;_0x34cc70<promisesAdditionalPhones[_0xb4f7('0x1d')];_0x34cc70++){_0x3c2c9a[_0xb4f7('0x20')](createAdditionalPhone(promisesAdditionalPhones[_0x34cc70]['contactId'],promisesAdditionalPhones[_0x34cc70]['contactTypeId'],promisesAdditionalPhones[_0x34cc70][_0xb4f7('0x13')],promisesAdditionalPhones[_0x34cc70][_0xb4f7('0x8a')]));}BPromise['all'](_0x3c2c9a)['then'](function(){_0x3c2c9a=[];_0x3c2c9a[_0xb4f7('0x20')](insertCmHopperAdditionalPhones(_0x3731e3[_0xb4f7('0x48')]));_0x3c2c9a[_0xb4f7('0x20')](_0xb4f7('0x8b')+_0x2cab72+';');BPromise[_0xb4f7('0x88')](_0x3c2c9a,handleQuery)[_0xb4f7('0x22')](function(_0x4f8bc8){stats[_0xb4f7('0x8c')]=!![];stats[_0xb4f7('0x8d')]=updatedRows;socket[_0xb4f7('0x8e')](_0xb4f7('0x8f')+_0x28b60b,stats);fs[_0xb4f7('0x90')](_0x2522ff);fs['unlink'](_0x328413);process[_0xb4f7('0x5a')](0x0);})[_0xb4f7('0x23')](function(_0xb87ce){logger[_0xb4f7('0x59')](_0xb87ce[_0xb4f7('0x24')]);process[_0xb4f7('0x5a')](0x1);});});});});})['catch'](function(_0x26dac3){logger[_0xb4f7('0x59')](_0x26dac3[_0xb4f7('0x24')]);process[_0xb4f7('0x5a')](0x1);});}catch(_0x234811){logger[_0xb4f7('0x59')](_0xb4f7('0x91'),_0x234811[_0xb4f7('0x24')]);process[_0xb4f7('0x5a')](0x1);}},'error':function(_0x537fb2,_0x18483b,_0x439fa9,_0x2160ed){throw new Error(_0x2160ed);}});});}function validate(){if(process['argv']&&process[_0xb4f7('0x92')][_0xb4f7('0x1d')]<0x4){throw new Error(_0xb4f7('0x93'));}var _0x2bfa9b=path[_0xb4f7('0x19')](config[_0xb4f7('0x94')],_0xb4f7('0x64'),process[_0xb4f7('0x92')][0x2]);if(!fs[_0xb4f7('0x95')](_0x2bfa9b)){throw new Error(_0xb4f7('0x96'));}var _0x5a869a={};try{_0x5a869a=JSON[_0xb4f7('0x68')](process[_0xb4f7('0x92')][0x3]);if(!_0x5a869a['binding']){throw new Error(_0xb4f7('0x97'));}var _0xfac190=0x0;if(_0x5a869a['binding'][_0xb4f7('0x74')]){_0xfac190=0x1;}if(!_0x5a869a[_0xb4f7('0x48')]){throw new Error(_0xb4f7('0x98'));}}catch(_0x1d0279){throw new Error(_0xb4f7('0x99'));}var _0x35f4b6=[];try{_0x35f4b6=_[_0xb4f7('0x9a')](JSON[_0xb4f7('0x68')](process[_0xb4f7('0x92')][0x4]),'id');}catch(_0x4c2e46){logger[_0xb4f7('0x5c')](_0xb4f7('0x9b'));}main(_0x2bfa9b,_0x5a869a,_0x35f4b6,_0xfac190);}validate();process['on'](_0xb4f7('0x9c'),handleStop);process['on'](_0xb4f7('0x9d'),handleUncaughtException);
\ No newline at end of file
+var _0x98d8=['body','ContactItemType','name','_description','AdditionalPhones','header','writeFileSync','parse','errors','data','find','hasOwnProperty','trim','replace','isNumber','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','itemTypeId','SystemRow','rows','emit','contact:import:','Abort\x20parser','abort','SystemError','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','CompanyId',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','UserId','body\x20id\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','squel','../../../config/environment','redis','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','field','phone','join','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','sequelize','select\x20*\x20from\x20','spread','length','isNil','push','all','then','catch','error','message','split','filter','CmContactHasItem','findOne','updated','create','PHONE','CmContact','update','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','updatedAt','priority','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.ListId','cm_hopper_black','createdAt','ListId\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','CmHopperId','OrderBy','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','ListId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','info','Received\x20SIGINT','exit','code','query','main','stringify','start','binding','clone'];(function(_0x64a30a,_0x5dce0b){var _0xb04a37=function(_0x5ee712){while(--_0x5ee712){_0x64a30a['push'](_0x64a30a['shift']());}};_0xb04a37(++_0x5dce0b);}(_0x98d8,0xce));var _0x898d=function(_0x4b4844,_0x2f0dfb){_0x4b4844=_0x4b4844-0x0;var _0x575192=_0x98d8[_0x4b4844];return _0x575192;};'use strict';var fs=require('fs');var path=require(_0x898d('0x0'));var _=require(_0x898d('0x1'));var Papa=require(_0x898d('0x2'));var util=require(_0x898d('0x3'));var BPromise=require(_0x898d('0x4'));var moment=require(_0x898d('0x5'));var squel=require(_0x898d('0x6'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0x898d('0x7'));var logger=require('../../../config/logger')('import');config[_0x898d('0x8')]=_['defaults'](config[_0x898d('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x898d('0x9'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x898d('0xa')](_0x898d('0xb'));var tempTableName=_0x898d('0xc')+moment()[_0x898d('0xa')](_0x898d('0xd'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x3c0a37){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))*$/[_0x898d('0xe')](_0x3c0a37);}function selectNotIn(_0x3d2669,_0x316b5a,_0x3f15f3,_0xf85d8c,_0x424a43){return squel[_0x898d('0xf')]()[_0x898d('0x10')](_0x898d('0x11'))['from'](_0xf85d8c)[_0x898d('0x12')](_0x316b5a,null,_0x316b5a+_0x898d('0x13')+_0xf85d8c+'.'+_0x3f15f3)['where'](_0xf85d8c+'.'+_0x3f15f3+_0x898d('0x14')+_0x3d2669+'.'+_0x3f15f3)[_0x898d('0x15')](_0x316b5a+_0x898d('0x16')+_0x424a43[_0x898d('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x8acf64,_0x17c699){promisesAdditionalPhones=[];promisesContact=[];return db[_0x898d('0x17')]['query'](_0x898d('0x18')+tempTableName)[_0x898d('0x19')](function(_0x5deafe){if(_0x5deafe!==null){var _0x575fb3=[];for(var _0x205372=0x0;_0x205372<_0x5deafe[_0x898d('0x1a')];_0x205372++){var _0x1ff50b=_0x5deafe[_0x205372];if(!_[_0x898d('0x1b')](_0x1ff50b[_0x898d('0x11')])){if(!_[_0x898d('0x1b')](_0x1ff50b['AdditionalPhones']))_0x575fb3['push'](insertAdditionalPhones(_0x1ff50b));promisesContact[_0x898d('0x1c')]({'contact':_0x1ff50b});}}}Promise[_0x898d('0x1d')](_0x575fb3)[_0x898d('0x1e')](function(){_0x8acf64({'val':0x1});});})[_0x898d('0x1f')](function(_0x46b323){logger[_0x898d('0x20')](_0x46b323[_0x898d('0x21')]);});});}function insertAdditionalPhones(_0x229d49){return new Promise(function(_0x12e72c,_0x2b9548){var _0x220d7b=_0x229d49['AdditionalPhones'];if(_[_0x898d('0x1b')](_0x220d7b))_0x2b9548({'val':0x0});else{var _0x1af006=_0x220d7b[_0x898d('0x22')](';');var _0x59b515=[];orderBy=0x0;for(var _0x5d18a3=0x0;_0x5d18a3<_0x1af006[_0x898d('0x1a')];_0x5d18a3++){_0x59b515[_0x898d('0x1c')](splitAdditionalPhone(_0x229d49['id'],_0x1af006[_0x5d18a3]));}Promise[_0x898d('0x1d')](_0x59b515)[_0x898d('0x1e')](function(){_0x12e72c({'val':_0x1af006[_0x898d('0x1a')]});});}});}function splitAdditionalPhone(_0x3fc201,_0x25c138){return new Promise(function(_0x3bf744,_0x30c415){var _0x493a60=_0x25c138['split'](':');var _0xd1b99b=_0x493a60[0x0];var _0x252887=_0x493a60[0x1];if(_0x252887!==''){var _0x308b13=_0x252887[_0x898d('0x22')]('|');var _0x244d3a=[];for(var _0xef200a=0x0;_0xef200a<_0x308b13[_0x898d('0x1a')];_0xef200a++){if(_0x308b13[_0xef200a]!==''){var _0x574249=_[_0x898d('0x23')](promisesAdditionalPhones,{'contactId':_0x3fc201,'phone':_0x308b13[_0xef200a]});if(_0x574249['length']==0x0){orderBy++;promisesAdditionalPhones[_0x898d('0x1c')]({'contactId':_0x3fc201,'contactTypeId':_0xd1b99b,'phone':_0x308b13[_0xef200a],'orderBy':orderBy});}}}_0x3bf744({'ok':0x1});}else _0x3bf744({'res':0x0});});}function createAdditionalPhone(_0x2d988c,_0x453564,_0x32da81,_0x28186b){var _0x3a57a0='';var _0x509e9f='';var _0x2e2092=_0x32da81[_0x898d('0x22')]('§');_0x3a57a0=_0x2e2092[0x0];if(_0x2e2092[_0x898d('0x1a')]==0x2)_0x509e9f=_0x2e2092[0x1];return new Promise(function(_0x47ea99,_0xfabc3e){return db[_0x898d('0x24')][_0x898d('0x25')]({'where':{'CmContactId':_0x2d988c,'item':_0x3a57a0}})[_0x898d('0x1e')](function(_0x5af430){if(_0x5af430){return db['CmContactHasItem']['update']({'ItemTypeId':_0x453564,'description':_0x509e9f,'OrderBy':_0x28186b},{'where':{'CmContactId':_0x2d988c,'item':_0x3a57a0}})[_0x898d('0x1e')](function(_0x41e979){_0x47ea99({'res':_0x898d('0x26')});});}else{return db['CmContactHasItem'][_0x898d('0x27')]({'CmContactId':_0x2d988c,'item':_0x3a57a0,'ItemTypeId':_0x453564,'description':_0x509e9f,'OrderBy':_0x28186b,'ItemClass':_0x898d('0x28')})[_0x898d('0x1e')](function(_0xf520fa){_0x47ea99({'res':'inserted'});});}});});}function updateContact(_0x1a5dc2){return new Promise(function(_0x5058a7,_0x41903d){var _0xe1bb3f=_0x1a5dc2['id'];delete _0x1a5dc2['id'];return db[_0x898d('0x29')][_0x898d('0x2a')](_0x1a5dc2,{'where':{'id':_0xe1bb3f}})[_0x898d('0x1e')](function(_0x4a7d20){updatedRows+=0x1;return db['CmHopper'][_0x898d('0x2a')]({'phone':_0x1a5dc2[_0x898d('0x11')]},{'where':{'ContactId':_0xe1bb3f}})['then'](function(_0x317988){_0x5058a7({'ret':'OK'});});});});}function insertCmHopper(_0x374b74,_0x1d130e,_0xae2ec0,_0x1712ab,_0x20d1fd){var _0x4e93af=[_0x898d('0x2b'),_0x898d('0x2c'),_0x898d('0x2d'),'cm_contacts.ListId',_0x1d130e+'.'+_0x1712ab,_0x898d('0x2e'),_0x898d('0x2f'),_0x898d('0x30'),'cm_contacts.UserId','\x22'+_0x20d1fd+'\x22'];return squel[_0x898d('0x31')]()[_0x898d('0x32')](_0x898d('0x33'))[_0x898d('0x34')]([_0x898d('0x11'),_0x898d('0x35'),_0x898d('0x36'),'ListId',_0x1712ab,'createdAt',_0x898d('0x37'),_0x898d('0x38'),'UserId',_0x898d('0x39')],squel[_0x898d('0xf')]()[_0x898d('0x3a')](_0x4e93af)[_0x898d('0x3b')](_0x1d130e)[_0x898d('0x12')](_0x898d('0x3c'),null,_0x898d('0x3d')+_0x1d130e+_0x898d('0x3e'))[_0x898d('0x12')](_0xae2ec0,null,_0xae2ec0+_0x898d('0x13')+_0x1d130e+'.'+_0x1712ab)[_0x898d('0x15')](_0x1d130e+_0x898d('0x3f'),_0x374b74)[_0x898d('0x15')](_0x898d('0x40'),NOW)['where'](_0x898d('0x41'),selectNotIn(_0x1d130e,_0xae2ec0,_0x1712ab,_0x898d('0x33'),['\x22always\x22',_0x898d('0x42')]))[_0x898d('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x1d130e,_0xae2ec0,_0x1712ab,_0x898d('0x33'),[_0x898d('0x43')])))[_0x898d('0x44')]();}function insertCmHopperBlack(_0x438973,_0x413b18,_0x56fae0,_0x29250d){var _0x441c0b=[_0x898d('0x2b'),_0x898d('0x2d'),_0x898d('0x45'),_0x413b18+'.'+_0x29250d,_0x898d('0x2e'),_0x898d('0x2f')];return squel[_0x898d('0x31')]()['into'](_0x898d('0x46'))['fromQuery']([_0x898d('0x11'),_0x898d('0x36'),'ListId',_0x29250d,_0x898d('0x47'),_0x898d('0x37')],squel[_0x898d('0xf')]()[_0x898d('0x3a')](_0x441c0b)[_0x898d('0x3b')](_0x413b18)[_0x898d('0x12')](_0x898d('0x3c'),null,_0x898d('0x3d')+_0x413b18+_0x898d('0x3e'))[_0x898d('0x12')](_0x56fae0,null,_0x56fae0+_0x898d('0x13')+_0x413b18+'.'+_0x29250d)[_0x898d('0x15')](_0x413b18+_0x898d('0x3f'),_0x438973)[_0x898d('0x15')](_0x898d('0x40'),NOW)[_0x898d('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x898d('0xf')]()['field'](_0x898d('0x11'))[_0x898d('0x3b')](_0x898d('0x46'))[_0x898d('0x15')](_0x898d('0x48'),_0x438973)[_0x898d('0x15')](_0x29250d+'\x20=\x20?',_0x413b18+'.'+_0x29250d)))[_0x898d('0x44')]();}function insertCmHopperAdditionalPhones(_0x12b03d){var _0x13e7a4=[_0x898d('0x49'),_0x898d('0x4a'),_0x898d('0x4b'),_0x898d('0x4c'),_0x898d('0x4d')];return squel[_0x898d('0x31')]()['into']('cm_hopper_additional_phones')['fromQuery']([_0x898d('0x4e'),_0x898d('0x11'),_0x898d('0x4f'),_0x898d('0x47'),'updatedAt'],squel[_0x898d('0xf')]()['fields'](_0x13e7a4)[_0x898d('0x3b')]('cm_hopper')[_0x898d('0x12')](_0x898d('0x3c'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x898d('0x12')](_0x898d('0x50'),null,_0x898d('0x51'))['where'](_0x898d('0x52'),_0x12b03d)[_0x898d('0x15')](_0x898d('0x40'),NOW))[_0x898d('0x44')]();}function insertCmContact(_0x47d0e6,_0x48679e,_0x2222e0,_0x1858e5){var _0x449a9c=_[_0x898d('0x53')](_['keys'](_0x1858e5),[_0x898d('0x54'),'CompanyId','createdAt',_0x898d('0x37')]);return squel[_0x898d('0x31')]()[_0x898d('0x32')]('cm_contacts')['fromQuery'](_0x449a9c,squel['select']()[_0x898d('0x3a')](_0x449a9c)[_0x898d('0x3b')](_0x48679e)[_0x898d('0x15')]('('+_0x2222e0[_0x898d('0x12')](',')+_0x898d('0x55'),squel['select']()[_0x898d('0x3a')](_0x2222e0)[_0x898d('0x3b')](_0x898d('0x3c'))[_0x898d('0x15')](_0x898d('0x48'),_0x47d0e6))[_0x898d('0x15')](_0x898d('0x56'),squel[_0x898d('0xf')]()['field'](_0x898d('0x57'),'min_id')[_0x898d('0x3b')](_0x48679e)['group'](_0x2222e0[_0x898d('0x12')](','))))[_0x898d('0x44')]();}function handleStop(){logger[_0x898d('0x58')](_0x898d('0x59'));stopped=!![];}function handleUncaughtException(_0x5da24){logger[_0x898d('0x20')](_0x5da24[_0x898d('0x21')]);process[_0x898d('0x5a')](0x1);}function handleError(_0x2dd525,_0x2cb7e2){stats['errors'][_0x898d('0x1c')]({'name':_0x2cb7e2[_0x898d('0x5b')],'message':_0x2cb7e2[_0x898d('0x21')],'row':_0x2dd525});}function handleQuery(_0x1e0724){logger['info'](_0x1e0724);return db['sequelize'][_0x898d('0x5c')](_0x1e0724)[_0x898d('0x19')](function(_0x2b26cc){results['push'](_0x2b26cc);})[_0x898d('0x1f')](function(_0x5741ae){logger['error'](_0x5741ae[_0x898d('0x21')]);});}function main(_0x54dbb7,_0x478a6b,_0x5b8bc3,_0x56ff24){logger['info'](_0x898d('0x5d'),_0x54dbb7,JSON[_0x898d('0x5e')](_0x478a6b));process['send'](_0x898d('0x5f'));var _0x36110f=_0x478a6b[_0x898d('0x60')];var _0x17eeff=_[_0x898d('0x61')](_0x36110f);var _0x122ad4=_0x478a6b['socket_timestamp'];var _0x1c2fa1=path[_0x898d('0x12')](config['root'],'server/files/tmp',_0x122ad4+'.csv');logger[_0x898d('0x58')](_0x898d('0x62'),_0x478a6b);db[_0x898d('0x63')]['findAll']({'raw':!![],'attributes':['id',_0x898d('0x64')]})[_0x898d('0x1e')](function(_0x2a66c4){for(var _0x2d8890=0x0;_0x2d8890<_0x2a66c4[_0x898d('0x1a')];_0x2d8890++){if(_0x2a66c4[_0x2d8890]['name']in _0x36110f){contactItemTypes[_0x898d('0x1c')](_0x2a66c4[_0x2d8890]);delete _0x17eeff[_0x2a66c4[_0x2d8890][_0x898d('0x64')]];hasAdditionalPhones=!![];}for(var _0x54b7c4 in _0x36110f){if(_0x2a66c4[_0x2d8890][_0x898d('0x64')]+_0x898d('0x65')===_0x54b7c4){phoneDescriptions[_0x898d('0x1c')]({'itemTypeId':_0x2a66c4[_0x2d8890]['id'],'description':_0x54b7c4});delete _0x17eeff[_0x54b7c4];}}}if(hasAdditionalPhones)_0x17eeff[_0x898d('0x66')]='';var _0x1fd4d9=_['keys'](_0x17eeff)['join']();logger[_0x898d('0x58')](_0x898d('0x67'),_0x1fd4d9);fs[_0x898d('0x68')](_0x1c2fa1,_0x1fd4d9+'\x0a');Papa[_0x898d('0x69')](fs['createReadStream'](_0x54dbb7),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3fc14b,_0x53457e){try{for(var _0x19d7a6=0x0,_0x514c7e=[];_0x19d7a6<_0x3fc14b['data'][_0x898d('0x1a')];_0x19d7a6++){stats['rows']+=0x1;if(_0x3fc14b[_0x898d('0x6a')][_0x19d7a6]){handleError(_0x3fc14b[_0x898d('0x6b')][_0x19d7a6],_0x3fc14b[_0x898d('0x6a')][_0x19d7a6]);}else{var _0x43878d=[];var _0x45f8d0=[];var _0x4f54c8={};for(var _0x398a99 in _0x36110f){let _0x24d300=contactItemTypes[_0x898d('0x6c')](_0x221d54=>_0x221d54[_0x898d('0x64')]===_0x398a99);let _0x4d7524=contactItemTypes['find'](_0x1dd7d6=>_0x1dd7d6['name']+_0x898d('0x65')===_0x398a99);if(_[_0x898d('0x1b')](_0x24d300)&&_['isNil'](_0x4d7524)){if(_0x36110f[_0x898d('0x6d')](_0x398a99)){if(_0x3fc14b['data'][_0x19d7a6][_0x36110f[_0x398a99]]){var _0x4100dd=_[_0x898d('0x6e')](_0x3fc14b['data'][_0x19d7a6][_0x36110f[_0x398a99]][_0x898d('0x6f')](/"/g,'\x27'));switch(_0x398a99){case _0x898d('0x35'):var _0x364d78=moment(_0x4100dd,_0x898d('0xb'),!![]);if(_0x364d78['isValid']()){_0x514c7e['push']('\x22'+_0x4100dd+'\x22');}else{_0x43878d['push']('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x898d('0x38'):var _0x3dd4c5=parseInt(_0x4100dd);_0x4100dd=_['isNaN'](_0x3dd4c5)||_0x3dd4c5<0x0||_0x3dd4c5>0x4?_0x56ff24?0x3:0x2:_0x3dd4c5;_0x514c7e['push']('\x22'+_0x4100dd+'\x22');break;case'UserId':var _0x5bb72f=parseInt(_0x4100dd);if(_[_0x898d('0x70')](_0x5bb72f)&&_['includes'](_0x5b8bc3,_0x5bb72f)){_0x514c7e['push']('\x22'+_0x5bb72f+'\x22');}else{_0x43878d[_0x898d('0x1c')]('agent\x20not\x20exists');}break;case'email':if(isEmail(_0x4100dd)){_0x514c7e['push']('\x22'+_0x4100dd+'\x22');}else{_0x43878d[_0x898d('0x1c')](_0x898d('0x71'));}break;case _0x898d('0x72'):var _0x35e20f=moment(_0x4100dd,_0x898d('0x73'),!![]);if(_0x35e20f[_0x898d('0x74')]()){_0x514c7e[_0x898d('0x1c')]('\x22'+_0x4100dd+'\x22');}else{_0x43878d[_0x898d('0x1c')](_0x898d('0x75'));}break;default:_0x514c7e['push']('\x22'+_0x4100dd+'\x22');}}else{switch(_0x398a99){case _0x898d('0x76'):case'phone':_0x43878d[_0x898d('0x1c')](_0x398a99+_0x898d('0x77'));break;default:_0x514c7e[_0x898d('0x1c')]('\x22\x22');}}}}else{var _0xd8bd46='';if(!_[_0x898d('0x1b')](_0x24d300)){if(!_0x4f54c8['hasOwnProperty'](_0x24d300['id'])){for(var _0x58f7fc=0x0;_0x58f7fc<_0x36110f[_0x398a99][_0x898d('0x1a')];_0x58f7fc++){var _0x4100dd=_[_0x898d('0x6e')](_0x3fc14b[_0x898d('0x6b')][_0x19d7a6][_0x36110f[_0x398a99][_0x58f7fc]][_0x898d('0x6f')](/"/g,'\x27'));var _0x32a413=phoneDescriptions[_0x898d('0x6c')](_0x46d148=>_0x46d148[_0x898d('0x78')]===_0x24d300['id']);if(!_[_0x898d('0x1b')](_0x32a413)){var _0x33c766=_['trim'](_0x3fc14b[_0x898d('0x6b')][_0x19d7a6][_0x36110f[_0x32a413['description']][0x0]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x33c766))_0x4100dd=_0x4100dd+'§'+_0x33c766;}if(_0xd8bd46=='')_0xd8bd46=_0x4100dd;else _0xd8bd46+='|'+_0x4100dd;}_0x45f8d0[_0x898d('0x1c')](_0x24d300['id']+':'+_0xd8bd46);_0x4f54c8[_0x24d300['id']]=0x1;}}}}if(hasAdditionalPhones){_0x514c7e[_0x898d('0x1c')]('\x22'+_0x45f8d0['join'](';')+'\x22');}if(_0x43878d[_0x898d('0x1a')]){handleError(_0x3fc14b[_0x898d('0x6b')][_0x19d7a6],{'code':_0x898d('0x79'),'message':_0x43878d[_0x898d('0x12')]()});}else{fs['appendFileSync'](_0x1c2fa1,_0x514c7e[_0x898d('0x12')]()+'\x0a');}_0x514c7e=[];}if(!(stats[_0x898d('0x7a')]%0xc8)){socket[_0x898d('0x7b')](_0x898d('0x7c')+_0x122ad4,stats);stats[_0x898d('0x6a')]=[];}}if(stopped){logger[_0x898d('0x58')](_0x898d('0x7d'));_0x53457e[_0x898d('0x7e')]();}}catch(_0x390d78){handleError(_0x3fc14b['data'][_0x19d7a6],{'code':_0x898d('0x7f'),'message':_0x390d78[_0x898d('0x21')]});logger['error']('step',_0x390d78[_0x898d('0x21')]);}},'complete':function(){try{var _0x581732=[];var _0x2b9a3f=tempTableName;_0x581732[_0x898d('0x1c')](_0x898d('0x80')+_0x2b9a3f+_0x898d('0x81'));logger[_0x898d('0x58')](_0x898d('0x82'),contactItemTypes['length']);var _0x36aa2f=util['format'](_0x898d('0x83'),_0x1c2fa1,_0x2b9a3f,_0x1fd4d9,_0x478a6b[_0x898d('0x54')],_0x478a6b[_0x898d('0x84')]||null,NOW,NOW);if(_[_0x898d('0x1b')](_0x36110f[_0x898d('0x35')])){_0x36aa2f+=_0x898d('0x85');}_0x581732[_0x898d('0x1c')](_0x36aa2f);BPromise[_0x898d('0x86')](_0x581732,handleQuery)[_0x898d('0x1e')](function(_0x230863){BPromise[_0x898d('0x1d')]([handleAdditionalPhones()])['then'](function(){_0x581732=[];for(var _0x8c5d60=0x0;_0x8c5d60<promisesContact[_0x898d('0x1a')];_0x8c5d60++){_0x581732[_0x898d('0x1c')](updateContact(promisesContact[_0x8c5d60][_0x898d('0x87')]));}BPromise[_0x898d('0x1d')](_0x581732)[_0x898d('0x1e')](function(){_0x581732=[];for(var _0x25dccf=0x0;_0x25dccf<promisesAdditionalPhones[_0x898d('0x1a')];_0x25dccf++){_0x581732[_0x898d('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x25dccf][_0x898d('0x88')],promisesAdditionalPhones[_0x25dccf]['contactTypeId'],promisesAdditionalPhones[_0x25dccf][_0x898d('0x11')],promisesAdditionalPhones[_0x25dccf]['orderBy']));}BPromise[_0x898d('0x1d')](_0x581732)[_0x898d('0x1e')](function(){_0x581732=[];_0x581732[_0x898d('0x1c')](insertCmHopperAdditionalPhones(_0x478a6b['ListId']));_0x581732[_0x898d('0x1c')](_0x898d('0x89')+_0x2b9a3f+';');BPromise['each'](_0x581732,handleQuery)[_0x898d('0x1e')](function(_0x3cd90e){stats[_0x898d('0x8a')]=!![];stats[_0x898d('0x8b')]=updatedRows;socket[_0x898d('0x7b')](_0x898d('0x7c')+_0x122ad4,stats);fs[_0x898d('0x8c')](_0x54dbb7);fs[_0x898d('0x8c')](_0x1c2fa1);process[_0x898d('0x5a')](0x0);})[_0x898d('0x1f')](function(_0xef8029){logger[_0x898d('0x20')](_0xef8029['message']);process['exit'](0x1);});});});});})[_0x898d('0x1f')](function(_0x39799e){logger['error'](_0x39799e[_0x898d('0x21')]);process[_0x898d('0x5a')](0x1);});}catch(_0x3a3cf7){logger[_0x898d('0x20')](_0x898d('0x8d'),_0x3a3cf7[_0x898d('0x21')]);process[_0x898d('0x5a')](0x1);}},'error':function(_0x2b7998,_0x309bce,_0x1512ae,_0x5dca3d){throw new Error(_0x5dca3d);}});});}function validate(){if(process[_0x898d('0x8e')]&&process[_0x898d('0x8e')][_0x898d('0x1a')]<0x4){throw new Error(_0x898d('0x8f'));}var _0x29ad65=path[_0x898d('0x12')](config['root'],_0x898d('0x90'),process[_0x898d('0x8e')][0x2]);if(!fs[_0x898d('0x91')](_0x29ad65)){throw new Error(_0x898d('0x92'));}var _0x198f8a={};try{_0x198f8a=JSON[_0x898d('0x69')](process[_0x898d('0x8e')][0x3]);if(!_0x198f8a[_0x898d('0x60')]){throw new Error('binding\x20doesn\x27t\x20exists');}var _0x300421=0x0;if(_0x198f8a['binding'][_0x898d('0x93')]){_0x300421=0x1;}if(!_0x198f8a[_0x898d('0x54')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x4a5bc1){throw new Error(_0x898d('0x94'));}var _0x2a6e65=[];try{_0x2a6e65=_[_0x898d('0x95')](JSON['parse'](process[_0x898d('0x8e')][0x4]),'id');}catch(_0x214256){logger[_0x898d('0x58')]('No\x20agent\x20available');}main(_0x29ad65,_0x198f8a,_0x2a6e65,_0x300421);}validate();process['on'](_0x898d('0x96'),handleStop);process['on'](_0x898d('0x97'),handleUncaughtException);
\ No newline at end of file
index d3e93c0..d6fa2d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x888f=['holdtime','talktime','Called\x20Number','membername','starttime','Answer\x20Time','answertime','endtime','Duration','duration','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','inbound','push','variable','queue','calleridnum','outbound','destcalleridnum','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time'];(function(_0x249d99,_0x16b584){var _0x5bfb05=function(_0x4f4d67){while(--_0x4f4d67){_0x249d99['push'](_0x249d99['shift']());}};_0x5bfb05(++_0x16b584);}(_0x888f,0x163));var _0xf888=function(_0x10c714,_0x521a19){_0x10c714=_0x10c714-0x0;var _0x203459=_0x888f[_0x10c714];return _0x203459;};'use strict';exports[_0xf888('0x0')]=function(_0x1d0240,_0x54dd3b){var _0x47d50a=[{'type':_0xf888('0x1'),'content':_0xf888('0x2'),'variableName':null}];switch(_0x1d0240[_0xf888('0x3')]()){case'voice':switch(_0x54dd3b[_0xf888('0x3')]()){case _0xf888('0x4'):_0x47d50a[_0xf888('0x5')]({'type':_0xf888('0x6'),'content':'','variableName':_0xf888('0x7')});_0x47d50a[_0xf888('0x5')]({'type':_0xf888('0x6'),'content':'','variableName':_0xf888('0x8')});break;case _0xf888('0x9'):_0x47d50a[_0xf888('0x5')]({'type':_0xf888('0x1'),'content':'Outbound\x20Call','variableName':null});_0x47d50a[_0xf888('0x5')]({'type':'variable','content':'','variableName':_0xf888('0xa')});break;}}return _0x47d50a;};exports['getDescriptions']=function(_0x289c86,_0x9b6b4d){var _0x409888=[];switch(_0x289c86['toLowerCase']()){case _0xf888('0xb'):switch(_0x9b6b4d['toLowerCase']()){case _0xf888('0x4'):_0x409888=[{'type':_0xf888('0x1'),'content':_0xf888('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0xe'),'keyType':'variable','variableName':'calleridnum'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0xf'),'keyType':_0xf888('0x6'),'variableName':'calleridname'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x10'),'keyType':'variable','variableName':_0xf888('0x11')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x12'),'keyType':'variable','variableName':_0xf888('0x7')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x13'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x14')},{'type':'keyValue','content':'','key':_0xf888('0x15'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x16')},{'type':_0xf888('0x1'),'content':_0xf888('0x17'),'key':null,'keyType':null,'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x18'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x19')},{'type':_0xf888('0xd'),'content':'','key':'Agent\x20Number','keyType':'variable','variableName':'destcalleridnum'},{'type':_0xf888('0x1'),'content':_0xf888('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x1b'),'keyType':_0xf888('0x6'),'variableName':'agentcalledAt'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x1c'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x1d')},{'type':_0xf888('0xd'),'content':'','key':'Agent\x20Complete','keyType':_0xf888('0x6'),'variableName':_0xf888('0x1e')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x1f'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x20')},{'type':_0xf888('0xd'),'content':'','key':'Talk\x20Time','keyType':_0xf888('0x6'),'variableName':_0xf888('0x21')}];break;case _0xf888('0x9'):_0x409888=[{'type':_0xf888('0x1'),'content':_0xf888('0xc'),'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x22'),'keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0xa')},{'type':_0xf888('0xd'),'content':'','key':'Member\x20Name','keyType':'variable','keyContent':'','variableName':_0xf888('0x23')},{'type':_0xf888('0xd'),'content':'','key':'UniqueId','keyType':_0xf888('0x6'),'keyContent':'','variableName':'uniqueid'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x15'),'keyType':'variable','keyContent':'','variableName':_0xf888('0x24')},{'type':_0xf888('0x1'),'content':_0xf888('0x1a')},{'type':'keyValue','content':'','key':_0xf888('0x25'),'keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0x26')},{'type':_0xf888('0xd'),'content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0xf888('0x27')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x28'),'keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0x29')},{'type':'keyValue','content':'','key':'Billable\x20Time','keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0x2a')}];break;}}return _0x409888;};
\ No newline at end of file
+var _0x8b41=['Duration','duration','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','queue','variable','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','keyValue','Caller\x20Number','calleridnum','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','agentcalledAt','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','***\x20Call\x20Info\x20***','Called\x20Number','Member\x20Name','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime'];(function(_0x4978ac,_0xeb60b7){var _0x24a1eb=function(_0x118c69){while(--_0x118c69){_0x4978ac['push'](_0x4978ac['shift']());}};_0x24a1eb(++_0xeb60b7);}(_0x8b41,0x1a1));var _0x18b4=function(_0x182f45,_0x4cd7bf){_0x182f45=_0x182f45-0x0;var _0x3f48fc=_0x8b41[_0x182f45];return _0x3f48fc;};'use strict';exports[_0x18b4('0x0')]=function(_0x4fa3ee,_0x5350a8){var _0x4cf910=[{'type':_0x18b4('0x1'),'content':_0x18b4('0x2'),'variableName':null}];switch(_0x4fa3ee[_0x18b4('0x3')]()){case _0x18b4('0x4'):switch(_0x5350a8[_0x18b4('0x3')]()){case _0x18b4('0x5'):_0x4cf910[_0x18b4('0x6')]({'type':'variable','content':'','variableName':_0x18b4('0x7')});_0x4cf910[_0x18b4('0x6')]({'type':_0x18b4('0x8'),'content':'','variableName':'calleridnum'});break;case _0x18b4('0x9'):_0x4cf910['push']({'type':_0x18b4('0x1'),'content':_0x18b4('0xa'),'variableName':null});_0x4cf910['push']({'type':'variable','content':'','variableName':_0x18b4('0xb')});break;}}return _0x4cf910;};exports[_0x18b4('0xc')]=function(_0x42bf14,_0x5c9817){var _0x310173=[];switch(_0x42bf14['toLowerCase']()){case'voice':switch(_0x5c9817[_0x18b4('0x3')]()){case _0x18b4('0x5'):_0x310173=[{'type':_0x18b4('0x1'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0xe'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0xf')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x10'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x11')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x12'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x13')},{'type':'keyValue','content':'','key':_0x18b4('0x14'),'keyType':'variable','variableName':_0x18b4('0x7')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x15'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x16')},{'type':_0x18b4('0xd'),'content':'','key':'Date','keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x17')},{'type':_0x18b4('0x1'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x18b4('0xd'),'content':'','key':'Agent\x20Name','keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x18')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x19'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0xb')},{'type':_0x18b4('0x1'),'content':_0x18b4('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x18b4('0x1b'),'keyType':'variable','variableName':'agentcalledAt'},{'type':_0x18b4('0xd'),'content':'','key':'Agent\x20Connect','keyType':_0x18b4('0x8'),'variableName':'agentconnectAt'},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x1c'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x1d')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x1e'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x1f')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x20'),'keyType':_0x18b4('0x8'),'variableName':_0x18b4('0x21')}];break;case _0x18b4('0x9'):_0x310173=[{'type':_0x18b4('0x1'),'content':_0x18b4('0x22'),'variableName':null},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x23'),'keyType':'variable','keyContent':'','variableName':_0x18b4('0xb')},{'type':'keyValue','content':'','key':_0x18b4('0x24'),'keyType':_0x18b4('0x8'),'keyContent':'','variableName':_0x18b4('0x25')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x15'),'keyType':_0x18b4('0x8'),'keyContent':'','variableName':_0x18b4('0x16')},{'type':'keyValue','content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0x18b4('0x26')},{'type':_0x18b4('0x1'),'content':_0x18b4('0x1a')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x27'),'keyType':_0x18b4('0x8'),'keyContent':'','variableName':_0x18b4('0x28')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x29'),'keyType':_0x18b4('0x8'),'keyContent':'','variableName':_0x18b4('0x2a')},{'type':_0x18b4('0xd'),'content':'','key':_0x18b4('0x2b'),'keyType':'variable','keyContent':'','variableName':_0x18b4('0x2c')},{'type':_0x18b4('0xd'),'content':'','key':'Billable\x20Time','keyType':_0x18b4('0x8'),'keyContent':'','variableName':_0x18b4('0x2d')}];break;}}return _0x310173;};
\ No newline at end of file
index 22c6896..10e40af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef84=['findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','body','where','contact','default','fields','filter','user','having','read','tags','checkAccountsRestrictions','group','i.id','ids','tag','countFilteredInteractions','length','order','forEach','DESC','closed','getClosedOrderClause','rows','catch','tracked','query','clone','omit','html','phone','fax','updateUser','lodash','./sql-utils','./utils'];(function(_0x532112,_0x37d94b){var _0x23e5fb=function(_0x690ac8){while(--_0x690ac8){_0x532112['push'](_0x532112['shift']());}};_0x23e5fb(++_0x37d94b);}(_0xef84,0x78));var _0x4ef8=function(_0x265be4,_0xb82560){_0x265be4=_0x265be4-0x0;var _0x40560f=_0xef84[_0x265be4];return _0x40560f;};'use strict';var _=require(_0x4ef8('0x0'));var sqlUtils=require(_0x4ef8('0x1'));var utils=require(_0x4ef8('0x2'));exports[_0x4ef8('0x3')]=function(_0x5e787b,_0x3a5dd7,_0x5b90e2,_0x21bafc,_0x40ebe2){var _0x2944d8={'count':0x0,'rows':[]};var _0x1bbde0=sqlUtils[_0x4ef8('0x4')](_0x5e787b,_0x5b90e2,_0x3a5dd7);if(_0x1bbde0){return Promise[_0x4ef8('0x5')](_0x2944d8);}var _0x376fce=sqlUtils['getInteractionsQuery'](_0x5e787b);var _0x3f6324={};return Promise[_0x4ef8('0x5')]()[_0x4ef8('0x6')](function(){if(_0x3a5dd7[_0x4ef8('0x7')]){return sqlUtils[_0x4ef8('0x8')](_0x3a5dd7[_0x4ef8('0x7')],_0x40ebe2);}else{return sqlUtils['parseQueryParameters'](_0x5e787b,_0x3a5dd7,_0x40ebe2);}})[_0x4ef8('0x6')](function(_0x5ef559){_0x376fce['where'](_0x5ef559[_0x4ef8('0x9')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xb')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xc')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xd')]);_0x376fce['where'](_0x5ef559[_0x4ef8('0xe')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xf')]);_0x376fce[_0x4ef8('0x10')](_0x5ef559[_0x4ef8('0x11')]);_0x3f6324=_0x5ef559[_0x4ef8('0x12')];return sqlUtils[_0x4ef8('0x13')](_0x5e787b,_0x5b90e2,_0x3a5dd7);})['then'](function(_0x2bc6f1){_0x376fce['where'](_0x2bc6f1);_0x376fce[_0x4ef8('0x14')](_0x4ef8('0x15'));var _0x35aca3=_0x3a5dd7[_0x4ef8('0x7')]?_0x3f6324[_0x4ef8('0x16')]:_0x3a5dd7[_0x4ef8('0x17')];return sqlUtils[_0x4ef8('0x18')](_0x376fce,_0x35aca3);})[_0x4ef8('0x6')](function(_0x5cbf87){_0x2944d8['count']=_0x5cbf87[_0x4ef8('0x19')];if(_0x2944d8['count']===0x0){return[];}_0x376fce[_0x4ef8('0x10')](_0x3f6324['clause']);if(_0x21bafc[_0x4ef8('0x1a')]){_0x21bafc['order'][_0x4ef8('0x1b')](function(_0x393a01){var _0x5823b8=_0x393a01[0x0]==='contactName'?_0x393a01[0x0]:'i.'+_0x393a01[0x0];_0x376fce['order'](_0x5823b8,_0x393a01[0x1]===_0x4ef8('0x1c')?![]:!![]);if(_0x393a01[0x0]===_0x4ef8('0x1d')){var _0x33829f=sqlUtils[_0x4ef8('0x1e')](_0x5e787b,_0x3a5dd7);_0x376fce['order'](_0x33829f,_0x393a01[0x1]===_0x4ef8('0x1c')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x5e787b,_0x376fce,_0x3a5dd7,_0x21bafc);})[_0x4ef8('0x6')](function(_0x2af9dc){_0x2944d8[_0x4ef8('0x1f')]=_0x2af9dc;return _0x2944d8;})[_0x4ef8('0x20')](function(_0x4d5a96){throw _0x4d5a96;});};exports[_0x4ef8('0x21')]=function(_0x413c7d,_0x5cc723){return function(_0x4c2fa4,_0x19cc1b,_0x17a05c){var _0x111d97=_0x4c2fa4['user'];var _0x1163e6={};var _0x1cbfa5=_0x4c2fa4[_0x4ef8('0x22')];if(_0x1163e6){_0x1163e6=_[_0x4ef8('0x23')](_0x4c2fa4['body']);_0x1163e6=_[_0x4ef8('0x24')](_0x1163e6,[_0x4ef8('0x9'),_0x4ef8('0x25'),_0x4ef8('0x26'),_0x4ef8('0x27'),'mobile']);}utils[_0x4ef8('0x28')](_0x111d97,_0x1163e6,_0x1cbfa5,_0x413c7d,_0x5cc723);_0x17a05c(null);};};
\ No newline at end of file
+var _0x2150=['group','i.id','ids','tag','countFilteredInteractions','count','order','forEach','DESC','getClosedOrderClause','rows','tracked','query','clone','omit','body','html','phone','fax','mobile','lodash','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','then','search','where','contact','default','fields','filter','user','having','read','tags','checkAccountsRestrictions'];(function(_0x3cc6b4,_0x58b1aa){var _0x1c07b8=function(_0x156458){while(--_0x156458){_0x3cc6b4['push'](_0x3cc6b4['shift']());}};_0x1c07b8(++_0x58b1aa);}(_0x2150,0x1ab));var _0x0215=function(_0xd70515,_0x50cfb3){_0xd70515=_0xd70515-0x0;var _0x1e9a3a=_0x2150[_0xd70515];return _0x1e9a3a;};'use strict';var _=require(_0x0215('0x0'));var sqlUtils=require('./sql-utils');var utils=require('./utils');exports[_0x0215('0x1')]=function(_0xc29ccf,_0x5b2a48,_0xb58b7,_0x5b5ab6,_0x1986ee){var _0x5cfe32={'count':0x0,'rows':[]};var _0x599acd=sqlUtils[_0x0215('0x2')](_0xc29ccf,_0xb58b7,_0x5b2a48);if(_0x599acd){return Promise[_0x0215('0x3')](_0x5cfe32);}var _0x28bb81=sqlUtils[_0x0215('0x4')](_0xc29ccf);var _0x20c35e={};return Promise[_0x0215('0x3')]()[_0x0215('0x5')](function(){if(_0x5b2a48[_0x0215('0x6')]){return sqlUtils['parseAdvancedSearchFilter'](_0x5b2a48[_0x0215('0x6')],_0x1986ee);}else{return sqlUtils['parseQueryParameters'](_0xc29ccf,_0x5b2a48,_0x1986ee);}})[_0x0215('0x5')](function(_0x2fc1c9){_0x28bb81[_0x0215('0x7')](_0x2fc1c9['body']);_0x28bb81[_0x0215('0x7')](_0x2fc1c9[_0x0215('0x8')]);_0x28bb81[_0x0215('0x7')](_0x2fc1c9[_0x0215('0x9')]);_0x28bb81['where'](_0x2fc1c9[_0x0215('0xa')]);_0x28bb81[_0x0215('0x7')](_0x2fc1c9[_0x0215('0xb')]);_0x28bb81[_0x0215('0x7')](_0x2fc1c9[_0x0215('0xc')]);_0x28bb81[_0x0215('0xd')](_0x2fc1c9[_0x0215('0xe')]);_0x20c35e=_0x2fc1c9[_0x0215('0xf')];return sqlUtils[_0x0215('0x10')](_0xc29ccf,_0xb58b7,_0x5b2a48);})[_0x0215('0x5')](function(_0x335fb5){_0x28bb81[_0x0215('0x7')](_0x335fb5);_0x28bb81[_0x0215('0x11')](_0x0215('0x12'));var _0x2b4bf5=_0x5b2a48[_0x0215('0x6')]?_0x20c35e[_0x0215('0x13')]:_0x5b2a48[_0x0215('0x14')];return sqlUtils[_0x0215('0x15')](_0x28bb81,_0x2b4bf5);})[_0x0215('0x5')](function(_0x389eaf){_0x5cfe32[_0x0215('0x16')]=_0x389eaf['length'];if(_0x5cfe32[_0x0215('0x16')]===0x0){return[];}_0x28bb81[_0x0215('0xd')](_0x20c35e['clause']);if(_0x5b5ab6[_0x0215('0x17')]){_0x5b5ab6[_0x0215('0x17')][_0x0215('0x18')](function(_0x175a57){var _0x38558e=_0x175a57[0x0]==='contactName'?_0x175a57[0x0]:'i.'+_0x175a57[0x0];_0x28bb81[_0x0215('0x17')](_0x38558e,_0x175a57[0x1]===_0x0215('0x19')?![]:!![]);if(_0x175a57[0x0]==='closed'){var _0x1aa94a=sqlUtils[_0x0215('0x1a')](_0xc29ccf,_0x5b2a48);_0x28bb81[_0x0215('0x17')](_0x1aa94a,_0x175a57[0x1]===_0x0215('0x19')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0xc29ccf,_0x28bb81,_0x5b2a48,_0x5b5ab6);})[_0x0215('0x5')](function(_0xc508a7){_0x5cfe32[_0x0215('0x1b')]=_0xc508a7;return _0x5cfe32;})['catch'](function(_0x354aa6){throw _0x354aa6;});};exports[_0x0215('0x1c')]=function(_0x424159,_0x435425){return function(_0x431880,_0x278da1,_0x54bef5){var _0x32d647=_0x431880['user'];var _0x12a742={};var _0x130de7=_0x431880[_0x0215('0x1d')];if(_0x12a742){_0x12a742=_[_0x0215('0x1e')](_0x431880['body']);_0x12a742=_[_0x0215('0x1f')](_0x12a742,[_0x0215('0x20'),_0x0215('0x21'),_0x0215('0x22'),_0x0215('0x23'),_0x0215('0x24')]);}utils['updateUser'](_0x32d647,_0x12a742,_0x130de7,_0x424159,_0x435425);_0x54bef5(null);};};
\ No newline at end of file
index 40a772b..4897f7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf72b=['offset','toString','Setting','findOne','clone','COUNT(*)','t.id\x20IN\x20?','exports','lodash','../parsers/advancedSearch','./update-interaction','updateInteraction','../../mysqldb','role','agent','search','select','field','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id','u.fullname','ui.','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','map','getInteractionsTables','getAccountFK','interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','accounts','a.id\x20=\x20i.','messages','\x20=\x20i.id','it.','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','openchannel','i.from\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','sqlOperator','conditions','name','buildExpression','default','text','start','and','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','value','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','end','ids','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','type','user','body','some','compact','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','resolve','then','read','tags','Websites','Accounts','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','capitalize','Interaction','QueryTypes','SELECT','sequelize','query','merge','fields','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','Account.key','Account.mandatoryDisposition','a.email','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.lastMsgDirection','i.to','i.ContactId','i.MailAccountId','i.UserId','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.internal','TagIds','limit'];(function(_0x1ebe53,_0x35cc29){var _0x56cb47=function(_0x1fc9fc){while(--_0x1fc9fc){_0x1ebe53['push'](_0x1ebe53['shift']());}};_0x56cb47(++_0x35cc29);}(_0xf72b,0x1d9));var _0xbf72=function(_0xade692,_0x2886c3){_0xade692=_0xade692-0x0;var _0x41ddaa=_0xf72b[_0xade692];return _0x41ddaa;};'use strict';var _=require(_0xbf72('0x0'));var squel=require('squel');var as=require(_0xbf72('0x1'));var qs=require('../parsers/qs');var updateInteraction=require(_0xbf72('0x2'))[_0xbf72('0x3')];var utils=require('./utils');var db=require(_0xbf72('0x4'))['db'];function skipInteractionsQuery(_0x550a9e,_0x37afc8,_0x3d3a6f){var _0x3b2fa6=![];var _0x2b8440=utils['getAccountFK'](_0x550a9e);if(_0x37afc8[_0xbf72('0x5')]===_0xbf72('0x6')&&!_0x3d3a6f[_0xbf72('0x7')]&&!_0x3d3a6f[_0x2b8440]){_0x3b2fa6=!![];}return _0x3b2fa6;}function getTagsQuery(){return squel[_0xbf72('0x8')]()[_0xbf72('0x9')]('id')[_0xbf72('0x9')]('name')[_0xbf72('0x9')]('color')[_0xbf72('0xa')](_0xbf72('0xb'));}function getUsersQuery(_0x4d211c,_0xaec095){var _0x1c3453=utils[_0xbf72('0xc')](_0x4d211c);var _0x145acb=_0xbf72('0xd')+_0x4d211c+_0xbf72('0xe');var _0x14f6e6=squel[_0xbf72('0x8')]()['field'](_0xbf72('0xf'))[_0xbf72('0x9')](_0xbf72('0x10'))['field'](_0xbf72('0x11')+_0x1c3453)['from'](_0x145acb,'ui')['left_join']('users','u',_0xbf72('0x12'));if(_0xaec095[_0xbf72('0x13')]>0x0){_0x14f6e6[_0xbf72('0x14')](_0xbf72('0x11')+_0x1c3453+_0xbf72('0x15'),_[_0xbf72('0x16')](_0xaec095,'id'));}return _0x14f6e6;}function getInteractionsQuery(_0x566075){var _0x266ce2=utils[_0xbf72('0x17')](_0x566075);var _0x2a8609=utils[_0xbf72('0x18')](_0x566075);var _0x27dadc=utils['getInteractionFK'](_0x566075);return squel['select']()[_0xbf72('0xa')](_0x266ce2[_0xbf72('0x19')],'i')[_0xbf72('0x1a')](_0xbf72('0x1b'),'c',_0xbf72('0x1c'))[_0xbf72('0x1a')](_0xbf72('0x1d'),'o','o.id\x20=\x20i.UserId')[_0xbf72('0x1a')](_0x266ce2[_0xbf72('0x1e')],'a',_0xbf72('0x1f')+_0x2a8609)[_0xbf72('0x1a')](_0x266ce2[_0xbf72('0x20')],'me','me.'+_0x27dadc+_0xbf72('0x21'))[_0xbf72('0x1a')](_0x266ce2['interactionsTags'],'it',_0xbf72('0x22')+_0x27dadc+_0xbf72('0x21'))[_0xbf72('0x1a')]('tools_tags','t',_0xbf72('0x23'));}function getSqlClauses(){var _0x428361={'body':squel[_0xbf72('0x24')](),'contact':squel[_0xbf72('0x24')](),'default':squel['expr'](),'fields':squel[_0xbf72('0x24')](),'filter':squel[_0xbf72('0x24')](),'read':squel[_0xbf72('0x24')](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0xbf72('0x24')]()};return _0x428361;}function parseTagParameter(_0xd8fefc){var _0x3df816=squel[_0xbf72('0x24')]();if(_0xd8fefc){var _0x15d60d=utils[_0xbf72('0x25')](_0xd8fefc);_0x15d60d[_0xbf72('0x26')](function(_0x25ecdf){_0x3df816['or'](_0xbf72('0x27'),'%,'+_0x25ecdf+',%');});}return _0x3df816;}function parseReadParameter(_0x92307f){var _0x280d7a='';if(_0x92307f){_0x280d7a=_0xbf72('0x28');if(_0x92307f==='1'){_0x280d7a=_0x280d7a[_0xbf72('0x29')](_0xbf72('0x2a'),'=');}else{_0x280d7a=_0x280d7a[_0xbf72('0x29')]('{OPERATOR}','>');}}return _0x280d7a;}function parseSearchFilter(_0x708fcb,_0x475a54){var _0x30f606=squel[_0xbf72('0x24')]();if(_0x475a54){var _0xb1ee4e=_0x475a54[_0xbf72('0x29')]('\x5c','\x5c\x5c')[_0xbf72('0x29')](/'/g,'\x27\x27');if(qs[_0xbf72('0x2b')](_0xb1ee4e)){_0x30f606['or'](_0xbf72('0x2c'),_0xb1ee4e+'%');if([_0xbf72('0x2d'),_0xbf72('0x2e')][_0xbf72('0x2f')](_0x708fcb)){_0x30f606['or'](_0xbf72('0x30'),_0xb1ee4e+'%');}else if(_0x708fcb===_0xbf72('0x31')){_0x30f606['or']('i.fax\x20LIKE\x20?',_0xb1ee4e+'%');}else if(_0x708fcb===_0xbf72('0x32')){_0x30f606['or'](_0xbf72('0x33'),_0xb1ee4e+'%');}}else if(_0x708fcb===_0xbf72('0x34')&&qs['isEmail'](_0xb1ee4e)){_0x30f606['or']('c.email\x20LIKE\x20?',_0xb1ee4e+'%');}else{if(_0x708fcb==='mail'){_0x30f606['or'](_0xbf72('0x35'),qs[_0xbf72('0x36')](_0xb1ee4e))['or'](_0xbf72('0x37'),qs['getFullTextValue'](_0xb1ee4e));}else{if(_0x708fcb!==_0xbf72('0x31')){_0x30f606['or'](_0xbf72('0x38'),qs['getFullTextValue'](_0xb1ee4e));}_0x30f606['or'](_0xbf72('0x39'),_0xb1ee4e+'%');}}}return _0x30f606;}function parseAdvancedSearchFilter(_0x500fee,_0x13ab4f){var _0x202497=getSqlClauses();var _0x5c2f60=as['parseSearch'](_0x500fee);var _0x424669=_0x5c2f60[_0xbf72('0x3a')];for(var _0x509aa7=0x0;_0x509aa7<_0x5c2f60[_0xbf72('0x3b')][_0xbf72('0x13')];_0x509aa7++){var _0x26c91c=_0x5c2f60[_0xbf72('0x3b')][_0x509aa7];var _0x19b5ba='i';var _0x269b8e=_['find'](_0x13ab4f,[_0xbf72('0x3c'),_0x26c91c[_0xbf72('0x9')]]);if(_0x269b8e){var _0x46d590=as[_0xbf72('0x3d')](_0x19b5ba,_0x269b8e['type'],_0x26c91c);_0x202497[_0xbf72('0x3e')][_0x424669](_0x46d590[_0xbf72('0x3f')],_0x46d590['value'][_0xbf72('0x40')],_0x46d590['value']['end']);}else{switch(_0x26c91c['field']){case'unreadMessages':var _0x2a94b4=parseReadParameter(_0x26c91c['value']);_0x202497['read'][_0xbf72('0x41')](_0x2a94b4);break;case'Contact':if(_0x26c91c[_0xbf72('0x42')]===_0xbf72('0x43')){if(_0x26c91c['value'][_0xbf72('0x44')]('\x20')['length']>0x1){_0x202497['contact'][_0x424669](_0xbf72('0x45'),qs[_0xbf72('0x36')](_0x26c91c[_0xbf72('0x46')]),null);}else{var _0x259c7d='%'+_0x26c91c[_0xbf72('0x46')]+'%';_0x202497[_0xbf72('0x47')][_0x424669](_0xbf72('0x48'),_0x259c7d,_0x259c7d,_0x259c7d);}}else{_0x269b8e=_[_0xbf72('0x49')](_0x13ab4f,['name',_0xbf72('0x4a')]);_0x26c91c[_0xbf72('0x9')]='ContactId';_0x46d590=as[_0xbf72('0x3d')](_0x19b5ba,_0x269b8e['type'],_0x26c91c);_0x202497['contact'][_0x424669](_0x46d590[_0xbf72('0x3f')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x40')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x4b')]);}break;case'Tag':var _0x58769f=_0x26c91c['value'][_0xbf72('0x44')](',')[_0xbf72('0x16')](function(_0x3871d0){return Number(_0x3871d0);});var _0x2a679a=parseTagParameter(_0x58769f);_0x202497['tags']['clause'][_0xbf72('0x41')](_0x2a679a);_0x202497['tags'][_0xbf72('0x4c')]=_0x58769f;break;case _0xbf72('0x4d'):if(_0x26c91c[_0xbf72('0x42')]===_0xbf72('0x43')){_0x202497['user'][_0x424669](_0xbf72('0x4e'),'%'+_0x26c91c[_0xbf72('0x46')]+'%',null);}else{_0x269b8e=_[_0xbf72('0x49')](_0x13ab4f,[_0xbf72('0x3c'),'UserId']);_0x26c91c[_0xbf72('0x9')]=_0xbf72('0x4f');_0x46d590=as['buildExpression'](_0x19b5ba,_0x269b8e[_0xbf72('0x50')],_0x26c91c);_0x202497[_0xbf72('0x51')][_0x424669](_0x46d590[_0xbf72('0x3f')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x40')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x4b')]);}break;case'body':case'plainBody':_0x46d590=as['buildExpression']('me',null,_0x26c91c);_0x202497[_0xbf72('0x52')][_0x424669](_0x46d590['text'],_0x46d590[_0xbf72('0x46')]['start'],_0x46d590['value']['end']);break;}}}return _0x202497;}function parseModelFields(_0x9f94ea,_0x15a271,_0x15e94f){var _0x3304b1=utils[_0xbf72('0x18')](_0x9f94ea);var _0x2f7f22=squel['expr']();var _0x3ffa72=_(_0x15a271)['keys']()[_0xbf72('0x16')](function(_0x5afd24){return _[_0xbf72('0x53')](_0x15e94f,[_0xbf72('0x3c'),_0x5afd24])?_0x5afd24:undefined;})[_0xbf72('0x54')]()[_0xbf72('0x46')]();if(_0x3ffa72[_0xbf72('0x13')]>0x0){_0x3ffa72[_0xbf72('0x26')](function(_0x578b07){if(_0x578b07===_0x3304b1){_0x2f7f22[_0xbf72('0x41')]('i.'+_0x3304b1+_0xbf72('0x15'),[]['concat'](_0x15a271[_0x578b07]));}else if(_0x578b07===_0xbf72('0x55')){var _0x2f9816=JSON[_0xbf72('0x56')](_0x15a271[_0x578b07])['$gte'];var _0x312eb6=JSON[_0xbf72('0x56')](_0x15a271[_0x578b07])[_0xbf72('0x57')];_0x2f7f22[_0xbf72('0x41')](_0xbf72('0x58'),_0x2f9816,_0x312eb6);}else{if(_0x15a271[_0x578b07]==='null'){_0x2f7f22[_0xbf72('0x41')]('i.'+_0x578b07+_0xbf72('0x59'));}else{_0x2f7f22['and']('i.'+_0x578b07+_0xbf72('0x5a'),_0x15a271[_0x578b07]);}}});}return _0x2f7f22;}function parseQueryParameters(_0x5e2dcd,_0x58080b,_0xf00ac2){var _0x25386f=getSqlClauses();return Promise[_0xbf72('0x5b')]()[_0xbf72('0x5c')](function(){return parseModelFields(_0x5e2dcd,_0x58080b,_0xf00ac2);})[_0xbf72('0x5c')](function(_0x527061){_0x25386f['fields']['and'](_0x527061);return parseReadParameter(_0x58080b[_0xbf72('0x5d')]);})[_0xbf72('0x5c')](function(_0x4573fe){_0x25386f[_0xbf72('0x5d')]['and'](_0x4573fe);return parseTagParameter(_0x58080b['tag']);})[_0xbf72('0x5c')](function(_0x18ecf7){_0x25386f[_0xbf72('0x5e')]['clause'][_0xbf72('0x41')](_0x18ecf7);return parseSearchFilter(_0x5e2dcd,_0x58080b['filter']);})[_0xbf72('0x5c')](function(_0x3da80c){_0x25386f['filter']=_0x3da80c;return _0x25386f;});}function checkAccountsRestrictions(_0x2b3c34,_0x441908,_0x55ac06){var _0x3c3e31=utils[_0xbf72('0x18')](_0x2b3c34);var _0xa50217='get'+_['capitalize'](_0x2b3c34)+(_0x2b3c34==='chat'?_0xbf72('0x5f'):_0xbf72('0x60'));var _0x28eb87=squel[_0xbf72('0x24')]();return Promise[_0xbf72('0x5b')]()[_0xbf72('0x5c')](function(){if(_0x55ac06[_0xbf72('0x7')]&&_0x441908[_0xbf72('0x5')]===_0xbf72('0x6')){return _0x441908[_0xa50217]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x39d694){if(_0x39d694){if(_0x39d694[_0xbf72('0x13')]===0x0){_0x28eb87['and']('i.'+_0x3c3e31+_0xbf72('0x59'));}else{_0x28eb87[_0xbf72('0x41')]('i.'+_0x3c3e31+_0xbf72('0x15'),_[_0xbf72('0x16')](_0x39d694,'id'));}}else if(!_0x55ac06[_0x3c3e31]){_0x28eb87[_0xbf72('0x41')]('i.'+_0x3c3e31+_0xbf72('0x61'));}})[_0xbf72('0x5c')](function(){return _0x28eb87;});}function getClosedOrderClause(_0x433d32,_0x26e2ec){var _0x537398='';var _0x56cfe1=[_0xbf72('0x62'),_0xbf72('0x63'),_0xbf72('0x64')];if(_0x433d32===_0xbf72('0x34')){_0x56cfe1[_0xbf72('0x65')](_0xbf72('0x66'));}if(_0x26e2ec[_0xbf72('0x67')]==='0'&&_0x433d32===_0xbf72('0x34')){_0x537398='i.substatus';}else{if(_0x26e2ec[_0xbf72('0x67')]==='1'){_0x56cfe1[_0xbf72('0x68')]();}_0x537398=_0xbf72('0x69')+_0x56cfe1[_0xbf72('0x6a')](',\x20')+')';}return _0x537398;}function getFilteredInteractions(_0x3d51a9,_0x41c207,_0x1ba67d,_0x59495b){var _0x428902=utils[_0xbf72('0xc')](_0x3d51a9);var _0x23550f=_[_0xbf72('0x6b')](_0x3d51a9)+_0xbf72('0x6c');var _0x107391=[];var _0x872fa7=getTagsQuery();var _0x25b7ea={'type':db['Sequelize'][_0xbf72('0x6d')][_0xbf72('0x6e')],'raw':!![]};var _0x17ab12=[];var _0x5472db=[];return db[_0xbf72('0x6f')][_0xbf72('0x70')](_0x872fa7['toString'](),_0x25b7ea)[_0xbf72('0x5c')](function(_0x287198){_0x107391=_['keyBy'](_0x287198,'id');_0x25b7ea=_[_0xbf72('0x71')](_0x25b7ea,{'model':db[_0x23550f],'mapToModel':!![],'nest':!![]});if(_0x1ba67d[_0xbf72('0x72')]){_0x59495b['attributes'][_0xbf72('0x26')](function(_0x19d741){_0x41c207[_0xbf72('0x9')]('i.'+_0x19d741);});}else{_0x41c207[_0xbf72('0x9')](_0xbf72('0x73'),_0xbf72('0x74'));_0x41c207[_0xbf72('0x9')]('a.key',_0xbf72('0x75'));_0x41c207[_0xbf72('0x9')]('a.mandatoryDisposition',_0xbf72('0x76'));if(_0x3d51a9==='mail'){_0x41c207['field'](_0xbf72('0x77'),_0xbf72('0x78'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x79'),_0xbf72('0x7a'));_0x41c207[_0xbf72('0x9')]('i.id');_0x41c207[_0xbf72('0x9')](_0xbf72('0x7b'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x7c'));_0x41c207['field'](_0xbf72('0x7d'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x7e'));_0x41c207[_0xbf72('0x9')]('i.attach');_0x41c207[_0xbf72('0x9')]('i.lastMsgAt');_0x41c207[_0xbf72('0x9')](_0xbf72('0x7f'));_0x41c207[_0xbf72('0x9')]('i.subject');_0x41c207[_0xbf72('0x9')](_0xbf72('0x64'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x63'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x62'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x66'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x80'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x81'));_0x41c207['field'](_0xbf72('0x82'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x83'));}else if(_0x3d51a9==='openchannel'){_0x41c207[_0xbf72('0x9')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xbf72('0x7a'));}else{_0x41c207[_0xbf72('0x9')](_0xbf72('0x84'),_0xbf72('0x7a'));}if(_0x3d51a9!==_0xbf72('0x34')){_0x41c207[_0xbf72('0x9')]('i.*');}_0x41c207[_0xbf72('0x9')]('c.firstName',_0xbf72('0x85'));_0x41c207['field'](_0xbf72('0x86'),_0xbf72('0x87'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x88'),_0xbf72('0x89'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x8a'),_0xbf72('0x8b'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x8c'),_0xbf72('0x8d'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x8e'),_0xbf72('0x8f'));_0x41c207[_0xbf72('0x9')]('o.fullname','Owner.fullname');_0x41c207[_0xbf72('0x9')]('o.internal',_0xbf72('0x90'));_0x41c207[_0xbf72('0x9')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xbf72('0x91'));}if(_0x59495b[_0xbf72('0x92')]){_0x41c207[_0xbf72('0x92')](_0x59495b['limit']);}if(_0x59495b[_0xbf72('0x93')]){_0x41c207['offset'](_0x59495b[_0xbf72('0x93')]);}return db[_0xbf72('0x6f')]['query'](_0x41c207[_0xbf72('0x94')](),_0x25b7ea);})[_0xbf72('0x5c')](function(_0x33870e){_0x17ab12=_0x33870e;var _0x5d7c8f=getUsersQuery(_0x3d51a9,_0x17ab12);return db[_0xbf72('0x6f')][_0xbf72('0x70')](_0x5d7c8f[_0xbf72('0x94')](),_0x25b7ea);})[_0xbf72('0x5c')](function(_0x55b183){_0x5472db=_['groupBy'](_0x55b183,_0x428902);if(_0x3d51a9===_0xbf72('0x34')){return db[_0xbf72('0x95')][_0xbf72('0x96')]({'attributes':['enableEmailPreview'],'raw':!![]});}})[_0xbf72('0x5c')](function(_0x47a484){var _0x444330=_0x47a484?_0x47a484['enableEmailPreview']:undefined;var _0x3d12ca=_0x17ab12[_0xbf72('0x16')](function(_0x1618ec){return updateInteraction(_0x1618ec,_0x107391,_0x5472db,_0x444330);});return Promise['all'](_0x3d12ca);});}function countFilteredInteractions(_0x311478,_0x242e07){var _0x4c82c4=_0x311478[_0xbf72('0x97')]();_0x4c82c4['field'](_0xbf72('0x98'));_0x4c82c4[_0xbf72('0x9')](_0xbf72('0x73'),_0xbf72('0x74'));var _0x464ef0=utils[_0xbf72('0x25')](_0x242e07);if(!_['isEmpty'](_0x464ef0)){_0x4c82c4[_0xbf72('0x14')](_0xbf72('0x99'),_0x464ef0);}var _0x13aa56={'type':db['Sequelize'][_0xbf72('0x6d')][_0xbf72('0x6e')],'raw':!![]};return db['sequelize']['query'](_0x4c82c4['toString'](),_0x13aa56);}module[_0xbf72('0x9a')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0x7341=['parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','resolve','fields','then','get','capitalize','chat','Websites','Accounts','role','\x20IS\x20NULL','\x20IS\x20NOT\x20NULL','i.secondDisposition','unshift','i.substatus','closed','CONCAT_WS(\x27\x27,\x20','join','Interaction','Sequelize','SELECT','sequelize','query','toString','keyBy','attributes','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','a.email','Account.email','contactName','i.id','i.updatedAt','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.disposition','i.thirdDisposition','i.ContactId','i.MailAccountId','i.UserId','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.email','Contact.phone','c.mobile','c.fax','o.fullname','Owner.fullname','o.internal','TagIds','limit','offset','groupBy','enableEmailPreview','all','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','QueryTypes','exports','../parsers/advancedSearch','./update-interaction','updateInteraction','../../mysqldb','getAccountFK','agent','search','select','field','color','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','map','getInteractionsTables','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','me.','interactionsTags','it.','\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','getSelectedTags','unreadMessages\x20{OPERATOR}\x200','{OPERATOR}','replace','isNumeric','sms','whatsapp','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','buildExpression','type','text','value','start','end','unreadMessages','read','Contact','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?','tags','clause','and','ids','User','user','UserId','body','plainBody','keys','compact','forEach','concat','createdAt','$gte'];(function(_0x33bcdb,_0x11846b){var _0x18a9bf=function(_0x34417a){while(--_0x34417a){_0x33bcdb['push'](_0x33bcdb['shift']());}};_0x18a9bf(++_0x11846b);}(_0x7341,0xe4));var _0x1734=function(_0x446399,_0xf73169){_0x446399=_0x446399-0x0;var _0x7a8c65=_0x7341[_0x446399];return _0x7a8c65;};'use strict';var _=require('lodash');var squel=require('squel');var as=require(_0x1734('0x0'));var qs=require('../parsers/qs');var updateInteraction=require(_0x1734('0x1'))[_0x1734('0x2')];var utils=require('./utils');var db=require(_0x1734('0x3'))['db'];function skipInteractionsQuery(_0x42c26d,_0x3010fd,_0x17c3d7){var _0x2de514=![];var _0x21efd9=utils[_0x1734('0x4')](_0x42c26d);if(_0x3010fd['role']===_0x1734('0x5')&&!_0x17c3d7[_0x1734('0x6')]&&!_0x17c3d7[_0x21efd9]){_0x2de514=!![];}return _0x2de514;}function getTagsQuery(){return squel[_0x1734('0x7')]()['field']('id')[_0x1734('0x8')]('name')['field'](_0x1734('0x9'))[_0x1734('0xa')](_0x1734('0xb'));}function getUsersQuery(_0x23d8d2,_0x16a4ff){var _0x22afe0=utils[_0x1734('0xc')](_0x23d8d2);var _0x24c9b7=_0x1734('0xd')+_0x23d8d2+_0x1734('0xe');var _0x59830b=squel[_0x1734('0x7')]()[_0x1734('0x8')](_0x1734('0xf'))[_0x1734('0x8')](_0x1734('0x10'))[_0x1734('0x8')](_0x1734('0x11')+_0x22afe0)[_0x1734('0xa')](_0x24c9b7,'ui')[_0x1734('0x12')](_0x1734('0x13'),'u',_0x1734('0x14'));if(_0x16a4ff[_0x1734('0x15')]>0x0){_0x59830b[_0x1734('0x16')](_0x1734('0x11')+_0x22afe0+_0x1734('0x17'),_[_0x1734('0x18')](_0x16a4ff,'id'));}return _0x59830b;}function getInteractionsQuery(_0x2b375d){var _0x1ea188=utils[_0x1734('0x19')](_0x2b375d);var _0x56756c=utils['getAccountFK'](_0x2b375d);var _0x1fa9c0=utils[_0x1734('0xc')](_0x2b375d);return squel['select']()[_0x1734('0xa')](_0x1ea188['interactions'],'i')['left_join']('cm_contacts','c',_0x1734('0x1a'))['left_join'](_0x1734('0x13'),'o',_0x1734('0x1b'))['left_join'](_0x1ea188['accounts'],'a','a.id\x20=\x20i.'+_0x56756c)[_0x1734('0x12')](_0x1ea188['messages'],'me',_0x1734('0x1c')+_0x1fa9c0+'\x20=\x20i.id')[_0x1734('0x12')](_0x1ea188[_0x1734('0x1d')],'it',_0x1734('0x1e')+_0x1fa9c0+_0x1734('0x1f'))[_0x1734('0x12')](_0x1734('0xb'),'t',_0x1734('0x20'));}function getSqlClauses(){var _0x44e420={'body':squel[_0x1734('0x21')](),'contact':squel['expr'](),'default':squel[_0x1734('0x21')](),'fields':squel['expr'](),'filter':squel['expr'](),'read':squel[_0x1734('0x21')](),'tags':{'clause':squel[_0x1734('0x21')](),'ids':null},'user':squel[_0x1734('0x21')]()};return _0x44e420;}function parseTagParameter(_0x157e35){var _0x4435ac=squel[_0x1734('0x21')]();if(_0x157e35){var _0x3616c1=utils[_0x1734('0x22')](_0x157e35);_0x3616c1['forEach'](function(_0x381960){_0x4435ac['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x381960+',%');});}return _0x4435ac;}function parseReadParameter(_0x17e068){var _0x16a35f='';if(_0x17e068){_0x16a35f=_0x1734('0x23');if(_0x17e068==='1'){_0x16a35f=_0x16a35f['replace'](_0x1734('0x24'),'=');}else{_0x16a35f=_0x16a35f[_0x1734('0x25')](_0x1734('0x24'),'>');}}return _0x16a35f;}function parseSearchFilter(_0x50efce,_0x2b1352){var _0xb5e574=squel['expr']();if(_0x2b1352){var _0x1bd659=_0x2b1352[_0x1734('0x25')]('\x5c','\x5c\x5c')[_0x1734('0x25')](/'/g,'\x27\x27');if(qs[_0x1734('0x26')](_0x1bd659)){_0xb5e574['or']('i.id\x20LIKE\x20?',_0x1bd659+'%');if([_0x1734('0x27'),_0x1734('0x28')]['includes'](_0x50efce)){_0xb5e574['or']('i.phone\x20LIKE\x20?',_0x1bd659+'%');}else if(_0x50efce===_0x1734('0x29')){_0xb5e574['or'](_0x1734('0x2a'),_0x1bd659+'%');}else if(_0x50efce===_0x1734('0x2b')){_0xb5e574['or'](_0x1734('0x2c'),_0x1bd659+'%');}}else if(_0x50efce===_0x1734('0x2d')&&qs[_0x1734('0x2e')](_0x1bd659)){_0xb5e574['or'](_0x1734('0x2f'),_0x1bd659+'%');}else{if(_0x50efce===_0x1734('0x2d')){_0xb5e574['or'](_0x1734('0x30'),qs[_0x1734('0x31')](_0x1bd659))['or'](_0x1734('0x32'),qs[_0x1734('0x31')](_0x1bd659));}else{if(_0x50efce!==_0x1734('0x29')){_0xb5e574['or'](_0x1734('0x33'),qs[_0x1734('0x31')](_0x1bd659));}_0xb5e574['or'](_0x1734('0x34'),_0x1bd659+'%');}}}return _0xb5e574;}function parseAdvancedSearchFilter(_0x1e9d12,_0x5d26dc){var _0x1e7134=getSqlClauses();var _0x4ab5b2=as[_0x1734('0x35')](_0x1e9d12);var _0x462373=_0x4ab5b2[_0x1734('0x36')];for(var _0x21a855=0x0;_0x21a855<_0x4ab5b2[_0x1734('0x37')][_0x1734('0x15')];_0x21a855++){var _0x14760f=_0x4ab5b2[_0x1734('0x37')][_0x21a855];var _0x546af1='i';var _0x16475d=_[_0x1734('0x38')](_0x5d26dc,[_0x1734('0x39'),_0x14760f[_0x1734('0x8')]]);if(_0x16475d){var _0x30817d=as[_0x1734('0x3a')](_0x546af1,_0x16475d[_0x1734('0x3b')],_0x14760f);_0x1e7134['default'][_0x462373](_0x30817d[_0x1734('0x3c')],_0x30817d[_0x1734('0x3d')][_0x1734('0x3e')],_0x30817d[_0x1734('0x3d')][_0x1734('0x3f')]);}else{switch(_0x14760f[_0x1734('0x8')]){case _0x1734('0x40'):var _0x4680d1=parseReadParameter(_0x14760f['value']);_0x1e7134[_0x1734('0x41')]['and'](_0x4680d1);break;case _0x1734('0x42'):if(_0x14760f[_0x1734('0x43')]===_0x1734('0x44')){if(_0x14760f[_0x1734('0x3d')][_0x1734('0x45')]('\x20')[_0x1734('0x15')]>0x1){_0x1e7134[_0x1734('0x46')][_0x462373](_0x1734('0x47'),qs[_0x1734('0x31')](_0x14760f[_0x1734('0x3d')]),null);}else{var _0x453bf5='%'+_0x14760f['value']+'%';_0x1e7134[_0x1734('0x46')][_0x462373](_0x1734('0x48'),_0x453bf5,_0x453bf5,_0x453bf5);}}else{_0x16475d=_[_0x1734('0x38')](_0x5d26dc,[_0x1734('0x39'),'ContactId']);_0x14760f[_0x1734('0x8')]='ContactId';_0x30817d=as['buildExpression'](_0x546af1,_0x16475d[_0x1734('0x3b')],_0x14760f);_0x1e7134[_0x1734('0x46')][_0x462373](_0x30817d[_0x1734('0x3c')],_0x30817d[_0x1734('0x3d')]['start'],_0x30817d[_0x1734('0x3d')][_0x1734('0x3f')]);}break;case'Tag':var _0x1e8e71=_0x14760f[_0x1734('0x3d')]['split'](',')[_0x1734('0x18')](function(_0x4bfc67){return Number(_0x4bfc67);});var _0x9f585d=parseTagParameter(_0x1e8e71);_0x1e7134[_0x1734('0x49')][_0x1734('0x4a')][_0x1734('0x4b')](_0x9f585d);_0x1e7134[_0x1734('0x49')][_0x1734('0x4c')]=_0x1e8e71;break;case _0x1734('0x4d'):if(_0x14760f['operator']===_0x1734('0x44')){_0x1e7134[_0x1734('0x4e')][_0x462373]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x14760f[_0x1734('0x3d')]+'%',null);}else{_0x16475d=_[_0x1734('0x38')](_0x5d26dc,[_0x1734('0x39'),_0x1734('0x4f')]);_0x14760f['field']=_0x1734('0x4f');_0x30817d=as[_0x1734('0x3a')](_0x546af1,_0x16475d[_0x1734('0x3b')],_0x14760f);_0x1e7134['user'][_0x462373](_0x30817d[_0x1734('0x3c')],_0x30817d[_0x1734('0x3d')][_0x1734('0x3e')],_0x30817d[_0x1734('0x3d')][_0x1734('0x3f')]);}break;case _0x1734('0x50'):case _0x1734('0x51'):_0x30817d=as[_0x1734('0x3a')]('me',null,_0x14760f);_0x1e7134[_0x1734('0x50')][_0x462373](_0x30817d[_0x1734('0x3c')],_0x30817d[_0x1734('0x3d')][_0x1734('0x3e')],_0x30817d[_0x1734('0x3d')][_0x1734('0x3f')]);break;}}}return _0x1e7134;}function parseModelFields(_0x470110,_0x121c8c,_0x255b75){var _0x1b4ea1=utils['getAccountFK'](_0x470110);var _0xe8e0b8=squel['expr']();var _0xfc42f3=_(_0x121c8c)[_0x1734('0x52')]()[_0x1734('0x18')](function(_0x2aaa6e){return _['some'](_0x255b75,['name',_0x2aaa6e])?_0x2aaa6e:undefined;})[_0x1734('0x53')]()[_0x1734('0x3d')]();if(_0xfc42f3['length']>0x0){_0xfc42f3[_0x1734('0x54')](function(_0x1c5d2f){if(_0x1c5d2f===_0x1b4ea1){_0xe8e0b8[_0x1734('0x4b')]('i.'+_0x1b4ea1+_0x1734('0x17'),[][_0x1734('0x55')](_0x121c8c[_0x1c5d2f]));}else if(_0x1c5d2f===_0x1734('0x56')){var _0x1c27e6=JSON['parse'](_0x121c8c[_0x1c5d2f])[_0x1734('0x57')];var _0x466899=JSON[_0x1734('0x58')](_0x121c8c[_0x1c5d2f])['$lte'];_0xe8e0b8[_0x1734('0x4b')](_0x1734('0x59'),_0x1c27e6,_0x466899);}else{if(_0x121c8c[_0x1c5d2f]===_0x1734('0x5a')){_0xe8e0b8[_0x1734('0x4b')]('i.'+_0x1c5d2f+'\x20IS\x20NULL');}else{_0xe8e0b8[_0x1734('0x4b')]('i.'+_0x1c5d2f+_0x1734('0x5b'),_0x121c8c[_0x1c5d2f]);}}});}return _0xe8e0b8;}function parseQueryParameters(_0x19ceed,_0xac0441,_0x33b805){var _0x529b8a=getSqlClauses();return Promise[_0x1734('0x5c')]()['then'](function(){return parseModelFields(_0x19ceed,_0xac0441,_0x33b805);})['then'](function(_0x456808){_0x529b8a[_0x1734('0x5d')]['and'](_0x456808);return parseReadParameter(_0xac0441['read']);})[_0x1734('0x5e')](function(_0x30bc47){_0x529b8a['read']['and'](_0x30bc47);return parseTagParameter(_0xac0441['tag']);})[_0x1734('0x5e')](function(_0x6fbdf0){_0x529b8a[_0x1734('0x49')][_0x1734('0x4a')]['and'](_0x6fbdf0);return parseSearchFilter(_0x19ceed,_0xac0441['filter']);})[_0x1734('0x5e')](function(_0x7872f5){_0x529b8a['filter']=_0x7872f5;return _0x529b8a;});}function checkAccountsRestrictions(_0x349b6a,_0x192951,_0x1cbeb4){var _0x553daf=utils[_0x1734('0x4')](_0x349b6a);var _0x371a48=_0x1734('0x5f')+_[_0x1734('0x60')](_0x349b6a)+(_0x349b6a===_0x1734('0x61')?_0x1734('0x62'):_0x1734('0x63'));var _0x2491eb=squel[_0x1734('0x21')]();return Promise['resolve']()[_0x1734('0x5e')](function(){if(_0x1cbeb4[_0x1734('0x6')]&&_0x192951[_0x1734('0x64')]===_0x1734('0x5')){return _0x192951[_0x371a48]({'attributes':['id'],'raw':!![]});}})[_0x1734('0x5e')](function(_0x3d04df){if(_0x3d04df){if(_0x3d04df[_0x1734('0x15')]===0x0){_0x2491eb[_0x1734('0x4b')]('i.'+_0x553daf+_0x1734('0x65'));}else{_0x2491eb[_0x1734('0x4b')]('i.'+_0x553daf+_0x1734('0x17'),_['map'](_0x3d04df,'id'));}}else if(!_0x1cbeb4[_0x553daf]){_0x2491eb[_0x1734('0x4b')]('i.'+_0x553daf+_0x1734('0x66'));}})[_0x1734('0x5e')](function(){return _0x2491eb;});}function getClosedOrderClause(_0x1e646d,_0x112265){var _0xa43585='';var _0x3ba5d2=['i.thirdDisposition',_0x1734('0x67'),'i.disposition'];if(_0x1e646d===_0x1734('0x2d')){_0x3ba5d2[_0x1734('0x68')](_0x1734('0x69'));}if(_0x112265[_0x1734('0x6a')]==='0'&&_0x1e646d==='mail'){_0xa43585='i.substatus';}else{if(_0x112265[_0x1734('0x6a')]==='1'){_0x3ba5d2['shift']();}_0xa43585=_0x1734('0x6b')+_0x3ba5d2[_0x1734('0x6c')](',\x20')+')';}return _0xa43585;}function getFilteredInteractions(_0x1590ab,_0x3ce57f,_0x532c6a,_0x586418){var _0x52e5e2=utils[_0x1734('0xc')](_0x1590ab);var _0x314023=_[_0x1734('0x60')](_0x1590ab)+_0x1734('0x6d');var _0x387aac=[];var _0x2303d2=getTagsQuery();var _0x17c177={'type':db[_0x1734('0x6e')]['QueryTypes'][_0x1734('0x6f')],'raw':!![]};var _0x4fd501=[];var _0x5dc7ba=[];return db[_0x1734('0x70')][_0x1734('0x71')](_0x2303d2[_0x1734('0x72')](),_0x17c177)['then'](function(_0x3220b2){_0x387aac=_[_0x1734('0x73')](_0x3220b2,'id');_0x17c177=_['merge'](_0x17c177,{'model':db[_0x314023],'mapToModel':!![],'nest':!![]});if(_0x532c6a[_0x1734('0x5d')]){_0x586418[_0x1734('0x74')][_0x1734('0x54')](function(_0x18d421){_0x3ce57f[_0x1734('0x8')]('i.'+_0x18d421);});}else{_0x3ce57f['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x3ce57f['field'](_0x1734('0x75'),'Account.key');_0x3ce57f[_0x1734('0x8')](_0x1734('0x76'),_0x1734('0x77'));if(_0x1590ab===_0x1734('0x2d')){_0x3ce57f[_0x1734('0x8')](_0x1734('0x78'),_0x1734('0x79'));_0x3ce57f[_0x1734('0x8')]('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',_0x1734('0x7a'));_0x3ce57f['field'](_0x1734('0x7b'));_0x3ce57f[_0x1734('0x8')]('i.createdAt');_0x3ce57f[_0x1734('0x8')](_0x1734('0x7c'));_0x3ce57f['field']('i.closed');_0x3ce57f[_0x1734('0x8')](_0x1734('0x7d'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x7e'));_0x3ce57f['field'](_0x1734('0x7f'));_0x3ce57f['field'](_0x1734('0x80'));_0x3ce57f[_0x1734('0x8')]('i.subject');_0x3ce57f['field'](_0x1734('0x81'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x67'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x82'));_0x3ce57f[_0x1734('0x8')]('i.substatus');_0x3ce57f[_0x1734('0x8')]('i.to');_0x3ce57f['field'](_0x1734('0x83'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x84'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x85'));}else if(_0x1590ab==='openchannel'){_0x3ce57f[_0x1734('0x8')](_0x1734('0x86'),_0x1734('0x7a'));}else{_0x3ce57f[_0x1734('0x8')](_0x1734('0x87'),_0x1734('0x7a'));}if(_0x1590ab!==_0x1734('0x2d')){_0x3ce57f[_0x1734('0x8')]('i.*');}_0x3ce57f[_0x1734('0x8')](_0x1734('0x88'),_0x1734('0x89'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x8a'),'Contact.lastName');_0x3ce57f['field']('c.email',_0x1734('0x8b'));_0x3ce57f['field']('c.phone',_0x1734('0x8c'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x8d'),'Contact.mobile');_0x3ce57f['field'](_0x1734('0x8e'),'Contact.fax');_0x3ce57f['field'](_0x1734('0x8f'),_0x1734('0x90'));_0x3ce57f[_0x1734('0x8')](_0x1734('0x91'),'Owner.internal');_0x3ce57f[_0x1734('0x8')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x1734('0x92'));}if(_0x586418['limit']){_0x3ce57f[_0x1734('0x93')](_0x586418[_0x1734('0x93')]);}if(_0x586418[_0x1734('0x94')]){_0x3ce57f[_0x1734('0x94')](_0x586418[_0x1734('0x94')]);}return db['sequelize']['query'](_0x3ce57f[_0x1734('0x72')](),_0x17c177);})[_0x1734('0x5e')](function(_0x4054ed){_0x4fd501=_0x4054ed;var _0x21d2e6=getUsersQuery(_0x1590ab,_0x4fd501);return db[_0x1734('0x70')][_0x1734('0x71')](_0x21d2e6[_0x1734('0x72')](),_0x17c177);})[_0x1734('0x5e')](function(_0x548f62){_0x5dc7ba=_[_0x1734('0x95')](_0x548f62,_0x52e5e2);if(_0x1590ab===_0x1734('0x2d')){return db['Setting']['findOne']({'attributes':[_0x1734('0x96')],'raw':!![]});}})[_0x1734('0x5e')](function(_0x197449){var _0x3d3e82=_0x197449?_0x197449[_0x1734('0x96')]:undefined;var _0x1220f5=_0x4fd501[_0x1734('0x18')](function(_0x2185d8){return updateInteraction(_0x2185d8,_0x387aac,_0x5dc7ba,_0x3d3e82);});return Promise[_0x1734('0x97')](_0x1220f5);});}function countFilteredInteractions(_0x3af073,_0x37fc5d){var _0x300a8d=_0x3af073[_0x1734('0x98')]();_0x300a8d[_0x1734('0x8')](_0x1734('0x99'));_0x300a8d[_0x1734('0x8')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x1734('0x40'));var _0x3d4830=utils[_0x1734('0x22')](_0x37fc5d);if(!_[_0x1734('0x9a')](_0x3d4830)){_0x300a8d[_0x1734('0x16')](_0x1734('0x9b'),_0x3d4830);}var _0xd39881={'type':db[_0x1734('0x6e')][_0x1734('0x9c')][_0x1734('0x6f')],'raw':!![]};return db['sequelize'][_0x1734('0x71')](_0x300a8d[_0x1734('0x72')](),_0xd39881);}module[_0x1734('0x9d')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 4493949..b89a812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6db=['findOne','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags','lodash','../../mysqldb','map','fullname','forEach','waiting','talking','unmanaged','abandoned','total','closed','UserId','answered','MailMessage'];(function(_0x29f2bb,_0x14a078){var _0x9b7a7e=function(_0x3ac1e4){while(--_0x3ac1e4){_0x29f2bb['push'](_0x29f2bb['shift']());}};_0x9b7a7e(++_0x14a078);}(_0xb6db,0x178));var _0xbb6d=function(_0x29ce46,_0x4827cb){_0x29ce46=_0x29ce46-0x0;var _0x2c7718=_0xb6db[_0x29ce46];return _0x2c7718;};'use strict';var _=require(_0xbb6d('0x0'));var db=require(_0xbb6d('0x1'))['db'];function getInteractionUsers(_0x3fb691,_0x672790){return new Promise(function(_0x190438,_0x8782ff){try{var _0x18dce6=[];if(_0x672790[_0x3fb691]){_0x18dce6=_0x672790[_0x3fb691][_0xbb6d('0x2')](function(_0x12d4f6){return{'id':_0x12d4f6['id'],'fullname':_0x12d4f6[_0xbb6d('0x3')]};});}return _0x190438(_0x18dce6);}catch(_0x1d8f7b){_0x8782ff(_0x1d8f7b);}});}function getInteractionTags(_0x2a0686,_0x50aa48){var _0x27d7b7=[];if(_0x2a0686){_0x2a0686['split'](',')[_0xbb6d('0x4')](function(_0x2ea0f0){_0x27d7b7['push'](_0x50aa48[_0x2ea0f0]);});}return _0x27d7b7;}function updateWaitingCounter(_0x5dffa5){if(_0x5dffa5[_0xbb6d('0x5')]){_0x5dffa5[_0xbb6d('0x5')]-=0x1;}}function updateInteractionCounters(_0x2065aa){_0x2065aa[_0xbb6d('0x5')]=0x0;_0x2065aa[_0xbb6d('0x6')]=0x0;_0x2065aa['answered']=0x0;_0x2065aa[_0xbb6d('0x7')]=0x0;_0x2065aa[_0xbb6d('0x8')]=0x0;_0x2065aa[_0xbb6d('0x9')]=0x0;if(_0x2065aa[_0xbb6d('0xa')]){if(_0x2065aa['disposition']===_0xbb6d('0x8')){_0x2065aa[_0xbb6d('0x8')]+=0x1;updateWaitingCounter(_0x2065aa);}if(_0x2065aa[_0xbb6d('0xb')]){_0x2065aa[_0xbb6d('0xc')]+=0x1;if(_0x2065aa[_0xbb6d('0x6')]){_0x2065aa[_0xbb6d('0x6')]-=0x1;}}else{if(_0x2065aa['disposition']){_0x2065aa[_0xbb6d('0x7')]+=0x1;updateWaitingCounter(_0x2065aa);}}}else{if(!_0x2065aa['UserId']){_0x2065aa[_0xbb6d('0x5')]+=0x1;}if(_0x2065aa[_0xbb6d('0xb')]){_0x2065aa[_0xbb6d('0x6')]+=0x1;updateWaitingCounter(_0x2065aa);}}_0x2065aa['total']+=0x1;return _0x2065aa;}function getLastMessageText(_0x5818ae){return db[_0xbb6d('0xd')][_0xbb6d('0xe')]({'where':{'$and':[{'MailInteractionId':_0x5818ae['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb6d('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xbb6d('0x10')],'order':_0xbb6d('0x11'),'raw':!![]})[_0xbb6d('0x12')](function(_0x127bf6){if(_0x127bf6&&_0x127bf6[_0xbb6d('0x10')]){_0x5818ae[_0xbb6d('0x13')]=_[_0xbb6d('0x14')](_0x127bf6[_0xbb6d('0x10')]);}return _0x5818ae;})[_0xbb6d('0x15')](function(_0x134693){throw _0x134693;});}exports[_0xbb6d('0x16')]=function(_0x23116d,_0x421976,_0x404cba,_0x2e51c4){return new Promise(function(_0x39f3f7,_0x29381c){return getInteractionUsers(_0x23116d['id'],_0x404cba)[_0xbb6d('0x12')](function(_0x54ca0f){_0x23116d[_0xbb6d('0x17')]=_0x54ca0f;return getInteractionTags(_0x23116d[_0xbb6d('0x18')],_0x421976);})[_0xbb6d('0x12')](function(_0x518ace){_0x23116d[_0xbb6d('0x19')]=_0x518ace;delete _0x23116d[_0xbb6d('0x18')];return updateInteractionCounters(_0x23116d);})[_0xbb6d('0x12')](function(_0x401973){if(_0x2e51c4){return getLastMessageText(_0x401973);}else{return _0x401973;}})['then'](function(_0x5e5ae1){_0x39f3f7(_0x5e5ae1);})[_0xbb6d('0x15')](function(_0x43e724){_0x29381c(_0x43e724);});});};
\ No newline at end of file
+var _0x9b9e=['../../mysqldb','map','fullname','split','forEach','push','waiting','answered','unmanaged','total','closed','abandoned','disposition','UserId','talking','MailMessage','findOne','out','plainBody','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags','lodash'];(function(_0x2d2663,_0x4fd308){var _0x8b9c63=function(_0x286a2c){while(--_0x286a2c){_0x2d2663['push'](_0x2d2663['shift']());}};_0x8b9c63(++_0x4fd308);}(_0x9b9e,0x1a3));var _0xe9b9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9b9e[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xe9b9('0x0'));var db=require(_0xe9b9('0x1'))['db'];function getInteractionUsers(_0x5d5c57,_0x1181af){return new Promise(function(_0x5f179e,_0x57553b){try{var _0x492adf=[];if(_0x1181af[_0x5d5c57]){_0x492adf=_0x1181af[_0x5d5c57][_0xe9b9('0x2')](function(_0x2585e3){return{'id':_0x2585e3['id'],'fullname':_0x2585e3[_0xe9b9('0x3')]};});}return _0x5f179e(_0x492adf);}catch(_0x45cc23){_0x57553b(_0x45cc23);}});}function getInteractionTags(_0xccfc,_0x231284){var _0x481fff=[];if(_0xccfc){_0xccfc[_0xe9b9('0x4')](',')[_0xe9b9('0x5')](function(_0x3bd5d8){_0x481fff[_0xe9b9('0x6')](_0x231284[_0x3bd5d8]);});}return _0x481fff;}function updateWaitingCounter(_0x569c6a){if(_0x569c6a['waiting']){_0x569c6a[_0xe9b9('0x7')]-=0x1;}}function updateInteractionCounters(_0x55011d){_0x55011d['waiting']=0x0;_0x55011d['talking']=0x0;_0x55011d[_0xe9b9('0x8')]=0x0;_0x55011d[_0xe9b9('0x9')]=0x0;_0x55011d['abandoned']=0x0;_0x55011d[_0xe9b9('0xa')]=0x0;if(_0x55011d[_0xe9b9('0xb')]){if(_0x55011d['disposition']==='abandoned'){_0x55011d[_0xe9b9('0xc')]+=0x1;updateWaitingCounter(_0x55011d);}if(_0x55011d['UserId']){_0x55011d[_0xe9b9('0x8')]+=0x1;if(_0x55011d['talking']){_0x55011d['talking']-=0x1;}}else{if(_0x55011d[_0xe9b9('0xd')]){_0x55011d['unmanaged']+=0x1;updateWaitingCounter(_0x55011d);}}}else{if(!_0x55011d[_0xe9b9('0xe')]){_0x55011d[_0xe9b9('0x7')]+=0x1;}if(_0x55011d[_0xe9b9('0xe')]){_0x55011d[_0xe9b9('0xf')]+=0x1;updateWaitingCounter(_0x55011d);}}_0x55011d[_0xe9b9('0xa')]+=0x1;return _0x55011d;}function getLastMessageText(_0x4f101d){return db[_0xe9b9('0x10')][_0xe9b9('0x11')]({'where':{'$and':[{'MailInteractionId':_0x4f101d['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xe9b9('0x12')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xe9b9('0x13')],'order':'-id','raw':!![]})[_0xe9b9('0x14')](function(_0x5baccf){if(_0x5baccf&&_0x5baccf[_0xe9b9('0x13')]){_0x4f101d[_0xe9b9('0x15')]=_[_0xe9b9('0x16')](_0x5baccf['plainBody']);}return _0x4f101d;})[_0xe9b9('0x17')](function(_0xdefb5a){throw _0xdefb5a;});}exports[_0xe9b9('0x18')]=function(_0x5ac7fd,_0x5b5140,_0x3e9f8e,_0x19f477){return new Promise(function(_0x4187ef,_0x5a0c32){return getInteractionUsers(_0x5ac7fd['id'],_0x3e9f8e)[_0xe9b9('0x14')](function(_0xe9bac0){_0x5ac7fd[_0xe9b9('0x19')]=_0xe9bac0;return getInteractionTags(_0x5ac7fd[_0xe9b9('0x1a')],_0x5b5140);})[_0xe9b9('0x14')](function(_0x102a98){_0x5ac7fd[_0xe9b9('0x1b')]=_0x102a98;delete _0x5ac7fd[_0xe9b9('0x1a')];return updateInteractionCounters(_0x5ac7fd);})[_0xe9b9('0x14')](function(_0x357e80){if(_0x19f477){return getLastMessageText(_0x357e80);}else{return _0x357e80;}})['then'](function(_0xcc29b3){_0x4187ef(_0xcc29b3);})[_0xe9b9('0x17')](function(_0x242593){_0x5a0c32(_0x242593);});});};
\ No newline at end of file
index bff7923..7b9e4df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddce=['name','role','stringify','null','findOne','then','info','catch','error','exports','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','whatsapp-interactions','Website','Account','capitalize','InteractionId','upperFirst','unknown','chat','accounts','_interaction_has_tags','_messages','user_has_','_interactions','toUpperCase'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xddce,0xdc));var _0xeddc=function(_0x149068,_0x5d816f){_0x149068=_0x149068-0x0;var _0x14a01c=_0xddce[_0x149068];return _0x14a01c;};'use strict';var _=require(_0xeddc('0x0'));var db=require(_0xeddc('0x1'))['db'];var loggers={'openchannel':require(_0xeddc('0x2'))(_0xeddc('0x3')),'mail':require(_0xeddc('0x2'))(_0xeddc('0x4')),'fax':require(_0xeddc('0x2'))('fax-interactions'),'sms':require(_0xeddc('0x2'))(_0xeddc('0x5')),'chat':require(_0xeddc('0x2'))('chat-interactions'),'whatsapp':require(_0xeddc('0x2'))(_0xeddc('0x6'))};function getAccountFK(_0x22f377){return _['capitalize'](_0x22f377)+(_0x22f377==='chat'?_0xeddc('0x7'):_0xeddc('0x8'))+'Id';}function getInteractionFK(_0x645d52){return _[_0xeddc('0x9')](_0x645d52)+_0xeddc('0xa');}function getInteractionId(_0x3f4004,_0x5e14aa,_0x1b5c17){if(_0x3f4004&&_0x3f4004[_['upperFirst'](_0x1b5c17)+'InteractionId']){return _0x3f4004[_[_0xeddc('0xb')](_0x1b5c17)+_0xeddc('0xa')];}else if(_0x3f4004&&_0x3f4004['id']){return _0x3f4004['id'];}else if(_0x5e14aa&&_0x5e14aa['id']){return _0x5e14aa['id'];}else{return _0xeddc('0xc');}}function getInteractionsTables(_0x15b05c){return{'accounts':_0x15b05c+'_'+(_0x15b05c===_0xeddc('0xd')?'websites':_0xeddc('0xe')),'interactions':_0x15b05c+'_interactions','interactionsTags':_0x15b05c+_0xeddc('0xf'),'messages':_0x15b05c+_0xeddc('0x10'),'userInteractions':_0xeddc('0x11')+_0x15b05c+_0xeddc('0x12')};}function getSelectedTags(_0x30c512){var _0x5bf0ca=[];if(_0x30c512){_0x5bf0ca=Array['isArray'](_0x30c512)?_0x30c512:[_0x30c512];}return _0x5bf0ca;}function log(_0x5bf434,_0x30c5e0,_0x134229,_0x3c7c2e,_0x3925b1,_0x407975){loggers[_0x3925b1['toLowerCase']()][_0x5bf434]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x407975[_0xeddc('0x13')](),_0x30c5e0?_0x30c5e0['id']:null,_0x30c5e0?_0x30c5e0[_0xeddc('0x14')]:null,_0x30c5e0?_0x30c5e0[_0xeddc('0x15')]:null,getInteractionId(_0x134229,_0x3c7c2e,_0x3925b1),_0x134229?JSON[_0xeddc('0x16')](_0x134229):_0xeddc('0x17'));}function updateUser(_0x2b670d,_0x489ede,_0x45d2b9,_0x217945,_0x240f41){db[_[_0xeddc('0xb')](_0x217945)+'Interaction'][_0xeddc('0x18')]({'where':{'id':getInteractionId(_0x489ede,_0x45d2b9,_0x217945)}})[_0xeddc('0x19')](function(_0x1c320e){if(_0x1c320e){return _0x1c320e['update']({'UserId':_0x2b670d?_0x2b670d['id']:null});}})[_0xeddc('0x19')](function(_0x247846){if(_0x247846){log(_0xeddc('0x1a'),_0x2b670d,_0x489ede,_0x45d2b9,_0x217945,_0x240f41);}})[_0xeddc('0x1b')](function(){log(_0xeddc('0x1c'),_0x2b670d,_0x489ede,_0x45d2b9,_0x217945,_0x240f41);});}module[_0xeddc('0x1d')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0xab0b=['_messages','user_has_','isArray','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','null','findOne','update','then','info','error','exports','../../mysqldb','../../config/logger','mail-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','Account','upperFirst','InteractionId','unknown','accounts','_interactions'];(function(_0x18a81a,_0x4fc65b){var _0x114027=function(_0x1b7e0f){while(--_0x1b7e0f){_0x18a81a['push'](_0x18a81a['shift']());}};_0x114027(++_0x4fc65b);}(_0xab0b,0x82));var _0xbab0=function(_0x1e46a5,_0x5b094e){_0x1e46a5=_0x1e46a5-0x0;var _0x35a2cf=_0xab0b[_0x1e46a5];return _0x35a2cf;};'use strict';var _=require('lodash');var db=require(_0xbab0('0x0'))['db'];var loggers={'openchannel':require(_0xbab0('0x1'))('openchannel-interactions'),'mail':require(_0xbab0('0x1'))(_0xbab0('0x2')),'fax':require(_0xbab0('0x1'))('fax-interactions'),'sms':require('../../config/logger')(_0xbab0('0x3')),'chat':require(_0xbab0('0x1'))(_0xbab0('0x4')),'whatsapp':require('../../config/logger')(_0xbab0('0x5'))};function getAccountFK(_0x2626f4){return _[_0xbab0('0x6')](_0x2626f4)+(_0x2626f4===_0xbab0('0x7')?_0xbab0('0x8'):_0xbab0('0x9'))+'Id';}function getInteractionFK(_0x3aa89d){return _[_0xbab0('0x6')](_0x3aa89d)+'InteractionId';}function getInteractionId(_0x19e5d4,_0xf18217,_0x28db5e){if(_0x19e5d4&&_0x19e5d4[_[_0xbab0('0xa')](_0x28db5e)+_0xbab0('0xb')]){return _0x19e5d4[_[_0xbab0('0xa')](_0x28db5e)+_0xbab0('0xb')];}else if(_0x19e5d4&&_0x19e5d4['id']){return _0x19e5d4['id'];}else if(_0xf18217&&_0xf18217['id']){return _0xf18217['id'];}else{return _0xbab0('0xc');}}function getInteractionsTables(_0x29f6e0){return{'accounts':_0x29f6e0+'_'+(_0x29f6e0===_0xbab0('0x7')?'websites':_0xbab0('0xd')),'interactions':_0x29f6e0+_0xbab0('0xe'),'interactionsTags':_0x29f6e0+'_interaction_has_tags','messages':_0x29f6e0+_0xbab0('0xf'),'userInteractions':_0xbab0('0x10')+_0x29f6e0+_0xbab0('0xe')};}function getSelectedTags(_0x2ef01d){var _0x1584ce=[];if(_0x2ef01d){_0x1584ce=Array[_0xbab0('0x11')](_0x2ef01d)?_0x2ef01d:[_0x2ef01d];}return _0x1584ce;}function log(_0x492f3a,_0x5e12c2,_0x1df013,_0x24c895,_0x57ac3e,_0x58d04b){loggers[_0x57ac3e['toLowerCase']()][_0x492f3a](_0xbab0('0x12'),_0x58d04b[_0xbab0('0x13')](),_0x5e12c2?_0x5e12c2['id']:null,_0x5e12c2?_0x5e12c2[_0xbab0('0x14')]:null,_0x5e12c2?_0x5e12c2['role']:null,getInteractionId(_0x1df013,_0x24c895,_0x57ac3e),_0x1df013?JSON[_0xbab0('0x15')](_0x1df013):_0xbab0('0x16'));}function updateUser(_0x3f7f12,_0xfe4bcb,_0xb72068,_0xd99fa1,_0x1e1fd2){db[_['upperFirst'](_0xd99fa1)+'Interaction'][_0xbab0('0x17')]({'where':{'id':getInteractionId(_0xfe4bcb,_0xb72068,_0xd99fa1)}})['then'](function(_0x2b9ea7){if(_0x2b9ea7){return _0x2b9ea7[_0xbab0('0x18')]({'UserId':_0x3f7f12?_0x3f7f12['id']:null});}})[_0xbab0('0x19')](function(_0xc46bce){if(_0xc46bce){log(_0xbab0('0x1a'),_0x3f7f12,_0xfe4bcb,_0xb72068,_0xd99fa1,_0x1e1fd2);}})['catch'](function(){log(_0xbab0('0x1b'),_0x3f7f12,_0xfe4bcb,_0xb72068,_0xd99fa1,_0x1e1fd2);});}module[_0xbab0('0x1c')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 41a3445..8b10cee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x140d=['findOne','then','count','status','json','catch','users','User','admin','isUserLimit','crypto','composable-middleware','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','hasOwnProperty','use','License'];(function(_0x467570,_0x408aa8){var _0x3f7f52=function(_0x367d18){while(--_0x367d18){_0x467570['push'](_0x467570['shift']());}};_0x3f7f52(++_0x408aa8);}(_0x140d,0x1d5));var _0xd140=function(_0x408fe1,_0x4de068){_0x408fe1=_0x408fe1-0x0;var _0x193750=_0x140d[_0x408fe1];return _0x193750;};'use strict';var crypto=require(_0xd140('0x0'));var util=require('util');var compose=require(_0xd140('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xd140('0x2'));function getValueFromLicense(_0x53bfd6,_0x3f51c9){if(_0x53bfd6&&_0x3f51c9){if(_0x3f51c9[_0xd140('0x3')]&&_0x3f51c9[_0xd140('0x4')]){var _0x19d928=_0x3f51c9[_0xd140('0x3')];var _0x1baf9c=_0x3f51c9[_0xd140('0x4')];var _0x397083=_0x19d928[_0xd140('0x5')]('-')[0x4];var _0x2a0585=_0x19d928['split']('-')[0x0];var _0x1fffa7=crypto[_0xd140('0x6')](_0xd140('0x7'),util[_0xd140('0x8')](_0xd140('0x9'),_0x397083,_0x19d928,_0x2a0585));var _0x4df616=_0x1fffa7[_0xd140('0xa')](_0x1baf9c,_0xd140('0xb'),_0xd140('0xc'));_0x4df616+=_0x1fffa7[_0xd140('0xd')]('utf8');var _0x5e6648=JSON['parse'](_0x4df616);return _0x5e6648[_0xd140('0xe')](_0x53bfd6)?_0x5e6648[_0x53bfd6]:null;}}return null;}function isLimit(_0x4c0afd,_0x12a3be,_0x5af175,_0x5f1ecd){var _0x3311be=_0x12a3be;return compose()[_0xd140('0xf')](function(_0x454eba,_0x219018,_0x2513ce){return db[_0xd140('0x10')][_0xd140('0x11')]({'where':{'id':0x1},'raw':!![]})[_0xd140('0x12')](function(_0x2c735f){var _0x355b4b=getValueFromLicense(_0x4c0afd,_0x2c735f);return _0x355b4b?_0x355b4b:_0x3311be;})[_0xd140('0x12')](function(_0x420840){_0x3311be=_0x420840;return _0x5af175[_0xd140('0x13')](_0x5f1ecd);})['then'](function(_0x59ae67){if(_0x59ae67>=_0x3311be){return _0x219018[_0xd140('0x14')](0x193)[_0xd140('0x15')]({'message':util[_0xd140('0x8')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x4c0afd)});}_0x2513ce();})[_0xd140('0x16')](function(_0x2903eb){_0x2513ce(_0x2903eb);});});}function isUserLimit(){return isLimit(_0xd140('0x17'),0x1,db[_0xd140('0x18')],{'where':{'$or':[{'role':_0xd140('0x19')},{'role':'user'}]}});}exports[_0xd140('0x1a')]=isUserLimit;
\ No newline at end of file
+var _0xd350=['../../config/environment','license','data1','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','hasOwnProperty','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xd350,0x1f4));var _0x0d35=function(_0x38fb0d,_0x52b5db){_0x38fb0d=_0x38fb0d-0x0;var _0x30a5d6=_0xd350[_0x38fb0d];return _0x30a5d6;};'use strict';var crypto=require(_0x0d35('0x0'));var util=require(_0x0d35('0x1'));var compose=require(_0x0d35('0x2'));var db=require(_0x0d35('0x3'))['db'];var config=require(_0x0d35('0x4'));function getValueFromLicense(_0x552f1b,_0x237d39){if(_0x552f1b&&_0x237d39){if(_0x237d39['data1']&&_0x237d39[_0x0d35('0x5')]){var _0x176169=_0x237d39[_0x0d35('0x6')];var _0x20e04e=_0x237d39['license'];var _0x2caf6f=_0x176169[_0x0d35('0x7')]('-')[0x4];var _0x37f86d=_0x176169[_0x0d35('0x7')]('-')[0x0];var _0x129652=crypto[_0x0d35('0x8')](_0x0d35('0x9'),util[_0x0d35('0xa')](_0x0d35('0xb'),_0x2caf6f,_0x176169,_0x37f86d));var _0x3da941=_0x129652[_0x0d35('0xc')](_0x20e04e,_0x0d35('0xd'),_0x0d35('0xe'));_0x3da941+=_0x129652[_0x0d35('0xf')]('utf8');var _0x3a71b2=JSON['parse'](_0x3da941);return _0x3a71b2[_0x0d35('0x10')](_0x552f1b)?_0x3a71b2[_0x552f1b]:null;}}return null;}function isLimit(_0x3ca61f,_0x46a5ef,_0x440fb6,_0x5cf652){var _0xc0e4eb=_0x46a5ef;return compose()['use'](function(_0x4dc9da,_0x557738,_0x3d6e75){return db[_0x0d35('0x11')][_0x0d35('0x12')]({'where':{'id':0x1},'raw':!![]})[_0x0d35('0x13')](function(_0x164630){var _0x3866e7=getValueFromLicense(_0x3ca61f,_0x164630);return _0x3866e7?_0x3866e7:_0xc0e4eb;})[_0x0d35('0x13')](function(_0x257208){_0xc0e4eb=_0x257208;return _0x440fb6[_0x0d35('0x14')](_0x5cf652);})[_0x0d35('0x13')](function(_0xe69ee3){if(_0xe69ee3>=_0xc0e4eb){return _0x557738[_0x0d35('0x15')](0x193)[_0x0d35('0x16')]({'message':util[_0x0d35('0xa')](_0x0d35('0x17'),_0x3ca61f)});}_0x3d6e75();})[_0x0d35('0x18')](function(_0x41ea24){_0x3d6e75(_0x41ea24);});});}function isUserLimit(){return isLimit('users',0x1,db[_0x0d35('0x19')],{'where':{'$or':[{'role':'admin'},{'role':_0x0d35('0x1a')}]}});}exports[_0x0d35('0x1b')]=isUserLimit;
\ No newline at end of file
index 8d106cb..2a063e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2d2=['\x20IS\x20NULL)','$in','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','BETWEEN\x20?\x20AND\x20?','start','$startsWith','DATE','utcOffset','add','seconds','parseSearch','sqlOperator','and','replace','[$and]','split','length','slice','shift','match','indexOf','map','conditions','push','buildExpression','operator','$eq','$between','value','includes','$gt','$lte','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn'];(function(_0x301d61,_0x4f2eca){var _0x55b76d=function(_0x537a5c){while(--_0x537a5c){_0x301d61['push'](_0x301d61['shift']());}};_0x55b76d(++_0x4f2eca);}(_0xb2d2,0x1a3));var _0x2b2d=function(_0x4dbc0a,_0x50ed74){_0x4dbc0a=_0x4dbc0a-0x0;var _0x4187ab=_0xb2d2[_0x4dbc0a];return _0x4187ab;};'use strict';var _=require('lodash');var moment=require('moment');exports[_0x2b2d('0x0')]=function(_0x4e6e20){var _0x584f35={'conditions':[]};_0x584f35[_0x2b2d('0x1')]=_['startsWith'](_0x4e6e20,'[$or]')?'or':_0x2b2d('0x2');var _0x76f8d9=_0x4e6e20[_0x2b2d('0x3')](_0x2b2d('0x4'),'')[_0x2b2d('0x3')]('[$or]','')[_0x2b2d('0x5')]('||');for(var _0x5a8192=0x0;_0x5a8192<_0x76f8d9[_0x2b2d('0x6')];_0x5a8192++){var _0x842062=_0x76f8d9[_0x5a8192]['split'](':=');var _0x175710=_0x842062[0x0];var _0x43fb68=_0x842062[_0x2b2d('0x7')](0x1);_0x43fb68['forEach'](function(_0x44fe76){var _0x436ae1=_0x44fe76[_0x2b2d('0x5')]('[')[_0x2b2d('0x8')]();var _0x743445=_0x44fe76[_0x2b2d('0x9')](/\[(.*?)\]/g);_0x743445['forEach'](function(_0x376298){var _0x469ffe=_0x376298['split']('[')['filter'](function(_0x5f3b6e){return _0x5f3b6e[_0x2b2d('0xa')](']')>-0x1;})[_0x2b2d('0xb')](function(_0x18faa9){return _0x18faa9[_0x2b2d('0x5')](']')[0x0];})[0x0];_0x584f35[_0x2b2d('0xc')][_0x2b2d('0xd')]({'field':_0x175710,'operator':_0x436ae1,'value':_0x469ffe});});});}return _0x584f35;};exports[_0x2b2d('0xe')]=function(_0x4faf5c,_0xffc0b9,_0x399651){var _0x3122d1={};if(_0xffc0b9==='DATE'){if(_0x399651[_0x2b2d('0xf')]===_0x2b2d('0x10')){_0x399651[_0x2b2d('0xf')]=_0x2b2d('0x11');_0x399651[_0x2b2d('0x12')]+=','+_0x399651['value'];}else if(_[_0x2b2d('0x13')]([_0x2b2d('0x14'),_0x2b2d('0x15')],_0x399651['operator'])){_0x399651['value']=moment(_0x399651[_0x2b2d('0x12')])['add'](0x1,'days')[_0x2b2d('0x16')](_0x2b2d('0x17'));}}if(_0x399651['castTo']){_0xffc0b9=_0x399651[_0x2b2d('0x18')];_0x3122d1[_0x2b2d('0x19')]=_0x2b2d('0x1a')+_0x4faf5c+'.'+_0x399651[_0x2b2d('0x1b')]+_0x2b2d('0x1c')+_0x399651[_0x2b2d('0x18')]+')\x20'+parseOperator(_0x399651[_0x2b2d('0xf')]);}else{_0x3122d1[_0x2b2d('0x19')]=_0x4faf5c+'.'+_0x399651['field']+'\x20'+parseOperator(_0x399651[_0x2b2d('0xf')]);}if(_['includes']([_0x2b2d('0x1d'),_0x2b2d('0x1e')],_0x399651[_0x2b2d('0xf')]))_0x3122d1['text']='('+_0x3122d1[_0x2b2d('0x19')]+'\x20OR\x20'+_0x4faf5c+'.'+_0x399651[_0x2b2d('0x1b')]+_0x2b2d('0x1f');_0x3122d1[_0x2b2d('0x12')]=parseValue(_0xffc0b9,_0x399651[_0x2b2d('0xf')],_0x399651[_0x2b2d('0x12')]);return _0x3122d1;};function parseOperator(_0x317787){var _0x4dc115;switch(_0x317787){case _0x2b2d('0x20'):_0x4dc115='IN\x20?';break;case'$notIn':_0x4dc115=_0x2b2d('0x21');break;case _0x2b2d('0x10'):_0x4dc115=_0x2b2d('0x22');break;case'$ne':_0x4dc115=_0x2b2d('0x23');break;case _0x2b2d('0x24'):case'$startsWith':case _0x2b2d('0x25'):_0x4dc115=_0x2b2d('0x26');break;case _0x2b2d('0x27'):_0x4dc115=_0x2b2d('0x28');break;case _0x2b2d('0x14'):_0x4dc115=_0x2b2d('0x29');break;case _0x2b2d('0x15'):_0x4dc115=_0x2b2d('0x2a');break;case'$gte':_0x4dc115='>=\x20?';break;case _0x2b2d('0x11'):_0x4dc115=_0x2b2d('0x2b');break;}return _0x4dc115;}function parseValue(_0x45ed84,_0x33c467,_0x36efd3){var _0x36fbac={'start':undefined,'end':undefined};switch(_0x33c467){case _0x2b2d('0x20'):case'$notIn':_0x36fbac[_0x2b2d('0x2c')]=_0x36efd3['split'](',');break;case _0x2b2d('0x24'):_0x36fbac[_0x2b2d('0x2c')]='%'+_0x36efd3+'%';break;case _0x2b2d('0x2d'):_0x36fbac[_0x2b2d('0x2c')]=_0x36efd3+'%';break;case _0x2b2d('0x25'):_0x36fbac[_0x2b2d('0x2c')]='%'+_0x36efd3;break;case _0x2b2d('0x11'):var _0xe54272=_0x36efd3[_0x2b2d('0x5')](',');var _0x36efd3=_0xe54272[_0x2b2d('0x8')]();var _0x2556bb=_0xe54272['pop']();if(_0x45ed84===_0x2b2d('0x2e')){_0x36efd3=moment(_0x36efd3)[_0x2b2d('0x2f')](0x0,!![])[_0x2b2d('0x16')]();_0x2556bb=moment(_0x2556bb)[_0x2b2d('0x2f')](0x0,!![])['add'](0x17,'hours')[_0x2b2d('0x30')](0x3b,'minutes')[_0x2b2d('0x30')](0x3b,_0x2b2d('0x31'))[_0x2b2d('0x16')]();}_0x36fbac={'start':_0x36efd3,'end':_0x2556bb};break;default:_0x36fbac['start']=_0x36efd3;break;}return _0x36fbac;}
\ No newline at end of file
+var _0x6d83=['CAST(','field','\x20AS\x20','text','$ne','\x20OR\x20','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$startsWith','$endsWith','$lt','>\x20?','<=\x20?','$gte','BETWEEN\x20?\x20AND\x20?','$notIn','start','pop','utcOffset','minutes','lodash','parseSearch','sqlOperator','startsWith','[$or]','replace','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','conditions','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6d83,0x1c7));var _0x36d8=function(_0x2ddf87,_0x3abd99){_0x2ddf87=_0x2ddf87-0x0;var _0x3f5262=_0x6d83[_0x2ddf87];return _0x3f5262;};'use strict';var _=require(_0x36d8('0x0'));var moment=require('moment');exports[_0x36d8('0x1')]=function(_0x10c375){var _0x445c38={'conditions':[]};_0x445c38[_0x36d8('0x2')]=_[_0x36d8('0x3')](_0x10c375,_0x36d8('0x4'))?'or':'and';var _0xa2eb02=_0x10c375[_0x36d8('0x5')](_0x36d8('0x6'),'')[_0x36d8('0x5')](_0x36d8('0x4'),'')[_0x36d8('0x7')]('||');for(var _0x2f128b=0x0;_0x2f128b<_0xa2eb02[_0x36d8('0x8')];_0x2f128b++){var _0x3a7607=_0xa2eb02[_0x2f128b]['split'](':=');var _0xa17b05=_0x3a7607[0x0];var _0x5cef1b=_0x3a7607[_0x36d8('0x9')](0x1);_0x5cef1b[_0x36d8('0xa')](function(_0x395531){var _0x15499e=_0x395531['split']('[')[_0x36d8('0xb')]();var _0x47a80f=_0x395531[_0x36d8('0xc')](/\[(.*?)\]/g);_0x47a80f['forEach'](function(_0x299d7c){var _0x1aebef=_0x299d7c[_0x36d8('0x7')]('[')[_0x36d8('0xd')](function(_0x449bfa){return _0x449bfa[_0x36d8('0xe')](']')>-0x1;})['map'](function(_0x5d3a86){return _0x5d3a86[_0x36d8('0x7')](']')[0x0];})[0x0];_0x445c38[_0x36d8('0xf')][_0x36d8('0x10')]({'field':_0xa17b05,'operator':_0x15499e,'value':_0x1aebef});});});}return _0x445c38;};exports[_0x36d8('0x11')]=function(_0x51c927,_0x46ac05,_0x1daff7){var _0x521a58={};if(_0x46ac05===_0x36d8('0x12')){if(_0x1daff7[_0x36d8('0x13')]===_0x36d8('0x14')){_0x1daff7[_0x36d8('0x13')]=_0x36d8('0x15');_0x1daff7['value']+=','+_0x1daff7[_0x36d8('0x16')];}else if(_[_0x36d8('0x17')]([_0x36d8('0x18'),_0x36d8('0x19')],_0x1daff7[_0x36d8('0x13')])){_0x1daff7['value']=moment(_0x1daff7[_0x36d8('0x16')])[_0x36d8('0x1a')](0x1,_0x36d8('0x1b'))[_0x36d8('0x1c')](_0x36d8('0x1d'));}}if(_0x1daff7[_0x36d8('0x1e')]){_0x46ac05=_0x1daff7[_0x36d8('0x1e')];_0x521a58['text']=_0x36d8('0x1f')+_0x51c927+'.'+_0x1daff7[_0x36d8('0x20')]+_0x36d8('0x21')+_0x1daff7[_0x36d8('0x1e')]+')\x20'+parseOperator(_0x1daff7[_0x36d8('0x13')]);}else{_0x521a58[_0x36d8('0x22')]=_0x51c927+'.'+_0x1daff7[_0x36d8('0x20')]+'\x20'+parseOperator(_0x1daff7['operator']);}if(_[_0x36d8('0x17')]([_0x36d8('0x23'),'$notIn'],_0x1daff7[_0x36d8('0x13')]))_0x521a58['text']='('+_0x521a58[_0x36d8('0x22')]+_0x36d8('0x24')+_0x51c927+'.'+_0x1daff7['field']+'\x20IS\x20NULL)';_0x521a58['value']=parseValue(_0x46ac05,_0x1daff7[_0x36d8('0x13')],_0x1daff7[_0x36d8('0x16')]);return _0x521a58;};function parseOperator(_0x11a523){var _0x5ac329;switch(_0x11a523){case _0x36d8('0x25'):_0x5ac329=_0x36d8('0x26');break;case'$notIn':_0x5ac329=_0x36d8('0x27');break;case _0x36d8('0x14'):_0x5ac329=_0x36d8('0x28');break;case _0x36d8('0x23'):_0x5ac329=_0x36d8('0x29');break;case'$substring':case _0x36d8('0x2a'):case _0x36d8('0x2b'):_0x5ac329='LIKE\x20?';break;case _0x36d8('0x2c'):_0x5ac329='<\x20?';break;case'$gt':_0x5ac329=_0x36d8('0x2d');break;case _0x36d8('0x19'):_0x5ac329=_0x36d8('0x2e');break;case _0x36d8('0x2f'):_0x5ac329='>=\x20?';break;case _0x36d8('0x15'):_0x5ac329=_0x36d8('0x30');break;}return _0x5ac329;}function parseValue(_0x3ab22a,_0x1bae83,_0x2df07b){var _0x35c05a={'start':undefined,'end':undefined};switch(_0x1bae83){case'$in':case _0x36d8('0x31'):_0x35c05a[_0x36d8('0x32')]=_0x2df07b[_0x36d8('0x7')](',');break;case'$substring':_0x35c05a[_0x36d8('0x32')]='%'+_0x2df07b+'%';break;case'$startsWith':_0x35c05a[_0x36d8('0x32')]=_0x2df07b+'%';break;case'$endsWith':_0x35c05a[_0x36d8('0x32')]='%'+_0x2df07b;break;case _0x36d8('0x15'):var _0x5040b6=_0x2df07b[_0x36d8('0x7')](',');var _0x2df07b=_0x5040b6[_0x36d8('0xb')]();var _0x1ca3e5=_0x5040b6[_0x36d8('0x33')]();if(_0x3ab22a===_0x36d8('0x12')){_0x2df07b=moment(_0x2df07b)[_0x36d8('0x34')](0x0,!![])[_0x36d8('0x1c')]();_0x1ca3e5=moment(_0x1ca3e5)['utcOffset'](0x0,!![])[_0x36d8('0x1a')](0x17,'hours')[_0x36d8('0x1a')](0x3b,_0x36d8('0x35'))[_0x36d8('0x1a')](0x3b,'seconds')[_0x36d8('0x1c')]();}_0x35c05a={'start':_0x2df07b,'end':_0x1ca3e5};break;default:_0x35c05a[_0x36d8('0x32')]=_0x2df07b;break;}return _0x35c05a;}
\ No newline at end of file
index 4a03e89..4fbc128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bde=['pick','filter','columns','where','lower','merge','options','sequelize','parse','includes','keys','fields','split','filters','type','DATE','$gte','format','YYYY-MM-DD','utc','$lte','name','uniqueid','isArray','limit','offset','map','indexOf','cast','col','priority','substr','unsigned','ASC','omit','isEmpty','isObject','length','unset','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','query','$id','model','intersection','attributes','hasOwnProperty','order','sort'];(function(_0x5c4d19,_0x519cce){var _0x3b8d16=function(_0x2547cb){while(--_0x2547cb){_0x5c4d19['push'](_0x5c4d19['shift']());}};_0x3b8d16(++_0x519cce);}(_0x0bde,0xe7));var _0xe0bd=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0bde[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var sequelize=require(_0xe0bd('0x0'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x3fb344){var _0x3dc984=['ne'];try{var _0x1d8922=JSON[_0xe0bd('0x1')](_0x3fb344);var _0x2da4bd=Object['keys'](_0x1d8922)[0x0];return _0x3dc984[_0xe0bd('0x2')](_0x2da4bd);}catch(_0x124139){return![];}}function getOperatorValue(_0x2b9812){var _0x3b712a=JSON[_0xe0bd('0x1')](_0x2b9812);var _0x26393f=Object[_0xe0bd('0x3')](_0x3b712a)[0x0];var _0x491dc7=_0x3b712a[_0x26393f];return{['$'+_0x26393f]:_0x491dc7};}exports[_0xe0bd('0x4')]=function(_0x44cb0b){var _0xb17265=null;if(_0x44cb0b){_0xb17265=_0x44cb0b[_0xe0bd('0x5')](',');}return _0xb17265;};exports[_0xe0bd('0x6')]=function(_0x3c47c4,_0x475265){var _0x58d892={};if(!_['isEmpty'](_0x3c47c4)){_['forOwn'](_0x3c47c4,function(_0x47f96d,_0x44ffa9){try{if(_0x475265){var _0x5e2a24=_['find'](_0x475265,{'name':_0x44ffa9})||{};if(hasSequelizeOperator(_0x47f96d)){_0x58d892[_0x44ffa9]=getOperatorValue(_0x47f96d);}else if(_0x5e2a24[_0xe0bd('0x7')]===_0xe0bd('0x8')&&_['isPlainObject'](_0x47f96d)){var _0xc492b4=JSON['parse'](_0x47f96d);var _0x1bf268={'$gte':moment(moment(_0xc492b4[_0xe0bd('0x9')])[_0xe0bd('0xa')](_0xe0bd('0xb')))[_0xe0bd('0xc')]()[_0xe0bd('0xa')](),'$lte':moment(moment(_0xc492b4[_0xe0bd('0xd')])[_0xe0bd('0xa')]('YYYY-MM-DD'))['utc']()['subtract'](0x1,'s')[_0xe0bd('0xa')]()};_0x58d892[_0x44ffa9]=_0x1bf268;}else if(_0x5e2a24[_0xe0bd('0xe')]===_0xe0bd('0xf')){_0x58d892[_0x44ffa9]=_0x47f96d;}else{_0x58d892[_0x44ffa9]=_[_0xe0bd('0x10')](_0x47f96d)?_0x47f96d:JSON[_0xe0bd('0x1')](_0x47f96d);}}else{_0x58d892[_0x44ffa9]=_['isArray'](_0x47f96d)?_0x47f96d:JSON['parse'](_0x47f96d);}}catch(_0x1becc8){_0x58d892[_0x44ffa9]=_0x47f96d['split'](',');}});}return _0x58d892;};exports[_0xe0bd('0x11')]=function(_0x418d64){_0x418d64=parseInt(_0x418d64,0xa);if(!_0x418d64||_0x418d64<0x0){_0x418d64=LIMIT_VALUE;}return _0x418d64;};exports[_0xe0bd('0x12')]=function(_0x20157b){_0x20157b=parseInt(_0x20157b,0xa);if(!_0x20157b||_0x20157b<0x0){_0x20157b=0x0;}return _0x20157b;};exports['sort']=function(_0x1311b1){var _0xe1d808,_0x2b9f93=null;if(_0x1311b1){_0xe1d808=_0x1311b1['split'](',');_0x2b9f93=_[_0xe0bd('0x13')](_0xe1d808,function(_0x25f595){if(_0x25f595[_0xe0bd('0x14')]('-')===0x0){return[_0x25f595==='priority'?sequelize[_0xe0bd('0x15')](sequelize[_0xe0bd('0x16')](_0xe0bd('0x17')),'unsigned'):_0x25f595[_0xe0bd('0x18')](0x1),'DESC'];}else{return[_0x25f595===_0xe0bd('0x17')?sequelize[_0xe0bd('0x15')](sequelize['col'](_0xe0bd('0x17')),_0xe0bd('0x19')):_0x25f595,_0xe0bd('0x1a')];}});}return _0x2b9f93;};exports[_0xe0bd('0x1b')]=function(_0x2a1f92,_0x30e9d3){if(_[_0xe0bd('0x1c')](_0x2a1f92)){return _0x2a1f92;}if(_[_0xe0bd('0x10')](_0x2a1f92)){for(var _0x537708=0x0;_0x537708<_0x2a1f92['length'];_0x537708+=0x1){_0x2a1f92[_0x537708]=this[_0xe0bd('0x1b')](_0x2a1f92[_0x537708],_0x30e9d3);}return _0x2a1f92;}if(!_[_0xe0bd('0x1d')](_0x2a1f92)){return _0x2a1f92;}if(_['isString'](_0x30e9d3)){_0x30e9d3=[_0x30e9d3];}if(!_['isArray'](_0x30e9d3)){return _0x2a1f92;}for(var _0x3bac51=0x0;_0x3bac51<_0x30e9d3[_0xe0bd('0x1e')];_0x3bac51+=0x1){_[_0xe0bd('0x1f')](_0x2a1f92,_0x30e9d3[_0x3bac51]);}for(var _0x1b5861 in _0x2a1f92){if(_0x2a1f92['hasOwnProperty'](_0x1b5861)){_0x2a1f92[_0x1b5861]=this[_0xe0bd('0x1b')](_0x2a1f92[_0x1b5861],_0x30e9d3);}}return _0x2a1f92;};exports['isNumeric']=function(_0x9146fe){return _0x9146fe[_0xe0bd('0x20')](RegExp(_0xe0bd('0x21')))?!![]:![];};exports[_0xe0bd('0x22')]=function(_0x1e2020){return _0x1e2020[_0xe0bd('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0xe0bd('0x23')]=function(_0x2d31e9){var _0x25d515=[];_0x2d31e9[_0xe0bd('0x5')](/[ ,]+/)[_0xe0bd('0x24')](function(_0x12d506){_0x12d506=_0x12d506[_0xe0bd('0x25')](/([^:]")"+/g,'$1');_0x12d506='+'+_0x12d506+'*';var _0x56f310=/[ `!@#$%^&*()_\-?~]/;if(_0x12d506[_0xe0bd('0x20')](_0x56f310))_0x12d506='\x22'+_0x12d506+'\x22';_0x25d515[_0xe0bd('0x26')](_0x12d506);});return _0x25d515[_0xe0bd('0x27')]('\x20');};exports[_0xe0bd('0x28')]=function(_0x8c9de3,_0x380c13,_0x56b770){var _0x507c7a={},_0x35019d={};if(_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x2a')]){_0x380c13[_0xe0bd('0x29')]['id']=_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x2a')];delete _0x380c13[_0xe0bd('0x29')]['$id'];}_0x507c7a[_0xe0bd('0x2b')]=_[_0xe0bd('0x13')](_0x8c9de3,_0xe0bd('0xe'));_0x507c7a[_0xe0bd('0x29')]=_[_0xe0bd('0x3')](_0x380c13[_0xe0bd('0x29')]);_0x507c7a['filters']=_[_0xe0bd('0x2c')](_0x507c7a[_0xe0bd('0x2b')],_0x507c7a[_0xe0bd('0x29')]);_0x35019d[_0xe0bd('0x2d')]=_[_0xe0bd('0x2c')](_0x507c7a['model'],this['fields'](_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x4')]));_0x35019d[_0xe0bd('0x2d')]=_0x35019d['attributes'][_0xe0bd('0x1e')]?_0x35019d['attributes']:_0x507c7a['model'];if(!_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x2e')]('nolimit')){_0x35019d['limit']=this['limit'](_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x11')]);_0x35019d[_0xe0bd('0x12')]=this['offset'](_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x12')]);}_0x35019d[_0xe0bd('0x2f')]=this['sort'](_0x380c13['query'][_0xe0bd('0x30')]);_0x35019d['where']=this[_0xe0bd('0x6')](_[_0xe0bd('0x31')](_0x380c13['query'],_0x507c7a[_0xe0bd('0x6')]),_0x8c9de3);if(_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x32')]){var _0xb65059=_0x8c9de3;var _0x2a7782=_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x32')];if(typeof _0x2a7782==='object'){_0xb65059=_[_0xe0bd('0x32')](_0x8c9de3,function(_0x39b832){return _[_0xe0bd('0x2')](_0x2a7782[_0xe0bd('0x33')],_0x39b832[_0xe0bd('0xe')]);});_0x2a7782=_0x2a7782['value'];}_0x35019d['where']=_['merge'](_0x35019d[_0xe0bd('0x34')],{'$or':_[_0xe0bd('0x13')](_0xb65059,function(_0x15de49){if(_0x15de49[_0xe0bd('0x7')]!=='VIRTUAL'){if(_0x56b770){return sequelize['where'](sequelize['fn'](_0xe0bd('0x35'),sequelize[_0xe0bd('0x16')](_0x15de49[_0xe0bd('0xe')])),{'$like':sequelize['fn'](_0xe0bd('0x35'),'%'+_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x32')]+'%')});}else{var _0x3d218d={};_0x3d218d[_0x15de49['name']]={'$like':'%'+_0x380c13[_0xe0bd('0x29')]['filter']+'%'};return _0x3d218d;}}})});}_0x35019d=_[_0xe0bd('0x36')]({},_0x35019d,_0x380c13[_0xe0bd('0x37')]);return _0x35019d;};
\ No newline at end of file
+var _0x1db9=['lower','options','lodash','sequelize','moment','keys','fields','split','forOwn','find','type','parse','$gte','format','utc','$lte','YYYY-MM-DD','subtract','name','uniqueid','isArray','limit','offset','indexOf','priority','cast','col','unsigned','substr','DESC','omit','isEmpty','isObject','isString','length','unset','isNumeric','^[+]?[0-9]*$','isEmail','match','getFullTextValue','forEach','replace','push','getOptions','query','$id','model','map','filters','intersection','attributes','hasOwnProperty','order','sort','where','pick','filter','object','columns','value','merge'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0x1db9,0x176));var _0x91db=function(_0x4df175,_0x50adfb){_0x4df175=_0x4df175-0x0;var _0x1af636=_0x1db9[_0x4df175];return _0x1af636;};'use strict';var _=require(_0x91db('0x0'));var sequelize=require(_0x91db('0x1'));var moment=require(_0x91db('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x340fb6){var _0xcdfaed=['ne'];try{var _0xb6de0b=JSON['parse'](_0x340fb6);var _0x95a17d=Object[_0x91db('0x3')](_0xb6de0b)[0x0];return _0xcdfaed['includes'](_0x95a17d);}catch(_0x4c9f59){return![];}}function getOperatorValue(_0x379fa9){var _0x4b3f5c=JSON['parse'](_0x379fa9);var _0x433c75=Object[_0x91db('0x3')](_0x4b3f5c)[0x0];var _0x45fea0=_0x4b3f5c[_0x433c75];return{['$'+_0x433c75]:_0x45fea0};}exports[_0x91db('0x4')]=function(_0x2d89a1){var _0x55fe3e=null;if(_0x2d89a1){_0x55fe3e=_0x2d89a1[_0x91db('0x5')](',');}return _0x55fe3e;};exports['filters']=function(_0x39e939,_0xad8dd7){var _0x177e5c={};if(!_['isEmpty'](_0x39e939)){_[_0x91db('0x6')](_0x39e939,function(_0x549be2,_0x4ac257){try{if(_0xad8dd7){var _0x55fcef=_[_0x91db('0x7')](_0xad8dd7,{'name':_0x4ac257})||{};if(hasSequelizeOperator(_0x549be2)){_0x177e5c[_0x4ac257]=getOperatorValue(_0x549be2);}else if(_0x55fcef[_0x91db('0x8')]==='DATE'&&_['isPlainObject'](_0x549be2)){var _0x2b9b98=JSON[_0x91db('0x9')](_0x549be2);var _0x1f55f5={'$gte':moment(moment(_0x2b9b98[_0x91db('0xa')])[_0x91db('0xb')]('YYYY-MM-DD'))[_0x91db('0xc')]()[_0x91db('0xb')](),'$lte':moment(moment(_0x2b9b98[_0x91db('0xd')])[_0x91db('0xb')](_0x91db('0xe')))[_0x91db('0xc')]()[_0x91db('0xf')](0x1,'s')[_0x91db('0xb')]()};_0x177e5c[_0x4ac257]=_0x1f55f5;}else if(_0x55fcef[_0x91db('0x10')]===_0x91db('0x11')){_0x177e5c[_0x4ac257]=_0x549be2;}else{_0x177e5c[_0x4ac257]=_[_0x91db('0x12')](_0x549be2)?_0x549be2:JSON[_0x91db('0x9')](_0x549be2);}}else{_0x177e5c[_0x4ac257]=_['isArray'](_0x549be2)?_0x549be2:JSON[_0x91db('0x9')](_0x549be2);}}catch(_0x23d125){_0x177e5c[_0x4ac257]=_0x549be2[_0x91db('0x5')](',');}});}return _0x177e5c;};exports[_0x91db('0x13')]=function(_0xeb51b0){_0xeb51b0=parseInt(_0xeb51b0,0xa);if(!_0xeb51b0||_0xeb51b0<0x0){_0xeb51b0=LIMIT_VALUE;}return _0xeb51b0;};exports[_0x91db('0x14')]=function(_0x5c15ef){_0x5c15ef=parseInt(_0x5c15ef,0xa);if(!_0x5c15ef||_0x5c15ef<0x0){_0x5c15ef=0x0;}return _0x5c15ef;};exports['sort']=function(_0x4158f5){var _0x137edf,_0x2c3915=null;if(_0x4158f5){_0x137edf=_0x4158f5[_0x91db('0x5')](',');_0x2c3915=_['map'](_0x137edf,function(_0x168dea){if(_0x168dea[_0x91db('0x15')]('-')===0x0){return[_0x168dea===_0x91db('0x16')?sequelize[_0x91db('0x17')](sequelize[_0x91db('0x18')](_0x91db('0x16')),_0x91db('0x19')):_0x168dea[_0x91db('0x1a')](0x1),_0x91db('0x1b')];}else{return[_0x168dea===_0x91db('0x16')?sequelize['cast'](sequelize['col'](_0x91db('0x16')),_0x91db('0x19')):_0x168dea,'ASC'];}});}return _0x2c3915;};exports[_0x91db('0x1c')]=function(_0x16efa4,_0x39ae31){if(_[_0x91db('0x1d')](_0x16efa4)){return _0x16efa4;}if(_[_0x91db('0x12')](_0x16efa4)){for(var _0x4e2a8f=0x0;_0x4e2a8f<_0x16efa4['length'];_0x4e2a8f+=0x1){_0x16efa4[_0x4e2a8f]=this[_0x91db('0x1c')](_0x16efa4[_0x4e2a8f],_0x39ae31);}return _0x16efa4;}if(!_[_0x91db('0x1e')](_0x16efa4)){return _0x16efa4;}if(_[_0x91db('0x1f')](_0x39ae31)){_0x39ae31=[_0x39ae31];}if(!_['isArray'](_0x39ae31)){return _0x16efa4;}for(var _0x3b38f2=0x0;_0x3b38f2<_0x39ae31[_0x91db('0x20')];_0x3b38f2+=0x1){_[_0x91db('0x21')](_0x16efa4,_0x39ae31[_0x3b38f2]);}for(var _0x1bb4f8 in _0x16efa4){if(_0x16efa4['hasOwnProperty'](_0x1bb4f8)){_0x16efa4[_0x1bb4f8]=this[_0x91db('0x1c')](_0x16efa4[_0x1bb4f8],_0x39ae31);}}return _0x16efa4;};exports[_0x91db('0x22')]=function(_0x1805ef){return _0x1805ef['match'](RegExp(_0x91db('0x23')))?!![]:![];};exports[_0x91db('0x24')]=function(_0x2d3ebd){return _0x2d3ebd[_0x91db('0x25')](/^\S+@\S+$/)?!![]:![];};exports[_0x91db('0x26')]=function(_0x1e865e){var _0x2e6a27=[];_0x1e865e[_0x91db('0x5')](/[ ,]+/)[_0x91db('0x27')](function(_0x1b27f9){_0x1b27f9=_0x1b27f9[_0x91db('0x28')](/([^:]")"+/g,'$1');_0x1b27f9='+'+_0x1b27f9+'*';var _0x5b24b2=/[ `!@#$%^&*()_\-?~]/;if(_0x1b27f9[_0x91db('0x25')](_0x5b24b2))_0x1b27f9='\x22'+_0x1b27f9+'\x22';_0x2e6a27[_0x91db('0x29')](_0x1b27f9);});return _0x2e6a27['join']('\x20');};exports[_0x91db('0x2a')]=function(_0x1368b9,_0x73d4f4,_0x431bf6){var _0x370934={},_0x593920={};if(_0x73d4f4[_0x91db('0x2b')][_0x91db('0x2c')]){_0x73d4f4[_0x91db('0x2b')]['id']=_0x73d4f4['query'][_0x91db('0x2c')];delete _0x73d4f4['query'][_0x91db('0x2c')];}_0x370934[_0x91db('0x2d')]=_[_0x91db('0x2e')](_0x1368b9,_0x91db('0x10'));_0x370934['query']=_[_0x91db('0x3')](_0x73d4f4[_0x91db('0x2b')]);_0x370934[_0x91db('0x2f')]=_['intersection'](_0x370934[_0x91db('0x2d')],_0x370934[_0x91db('0x2b')]);_0x593920['attributes']=_[_0x91db('0x30')](_0x370934[_0x91db('0x2d')],this['fields'](_0x73d4f4[_0x91db('0x2b')]['fields']));_0x593920[_0x91db('0x31')]=_0x593920[_0x91db('0x31')]['length']?_0x593920['attributes']:_0x370934['model'];if(!_0x73d4f4[_0x91db('0x2b')][_0x91db('0x32')]('nolimit')){_0x593920[_0x91db('0x13')]=this[_0x91db('0x13')](_0x73d4f4[_0x91db('0x2b')][_0x91db('0x13')]);_0x593920[_0x91db('0x14')]=this[_0x91db('0x14')](_0x73d4f4[_0x91db('0x2b')][_0x91db('0x14')]);}_0x593920[_0x91db('0x33')]=this[_0x91db('0x34')](_0x73d4f4[_0x91db('0x2b')]['sort']);_0x593920[_0x91db('0x35')]=this['filters'](_[_0x91db('0x36')](_0x73d4f4[_0x91db('0x2b')],_0x370934['filters']),_0x1368b9);if(_0x73d4f4[_0x91db('0x2b')][_0x91db('0x37')]){var _0x16a7e9=_0x1368b9;var _0x12e86f=_0x73d4f4[_0x91db('0x2b')]['filter'];if(typeof _0x12e86f===_0x91db('0x38')){_0x16a7e9=_[_0x91db('0x37')](_0x1368b9,function(_0x1effb3){return _['includes'](_0x12e86f[_0x91db('0x39')],_0x1effb3[_0x91db('0x10')]);});_0x12e86f=_0x12e86f[_0x91db('0x3a')];}_0x593920['where']=_[_0x91db('0x3b')](_0x593920[_0x91db('0x35')],{'$or':_[_0x91db('0x2e')](_0x16a7e9,function(_0x3d73a7){if(_0x3d73a7[_0x91db('0x8')]!=='VIRTUAL'){if(_0x431bf6){return sequelize[_0x91db('0x35')](sequelize['fn']('lower',sequelize[_0x91db('0x18')](_0x3d73a7[_0x91db('0x10')])),{'$like':sequelize['fn'](_0x91db('0x3c'),'%'+_0x73d4f4[_0x91db('0x2b')][_0x91db('0x37')]+'%')});}else{var _0x2fcf33={};_0x2fcf33[_0x3d73a7[_0x91db('0x10')]]={'$like':'%'+_0x73d4f4[_0x91db('0x2b')][_0x91db('0x37')]+'%'};return _0x2fcf33;}}})});}_0x593920=_[_0x91db('0x3b')]({},_0x593920,_0x73d4f4[_0x91db('0x3d')]);return _0x593920;};
\ No newline at end of file
index bf65958..c6dcaa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6385=['whatsappStatusTime','faxStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','filterAgentAttributes','lodash','../../mysqldb','client','http','chatPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','length','idle','unknown','unavailable','isNil','pause','faxStatus','openchannelStatus','smsStatus','voiceStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','catch','getRealtimeAgents','busy','getAgentStatus','isArray','startCase','findOne','getAgents','flatten','value','getAgentIdsByQueues','filter','includes','getAgentIdsByStatus','resolve','User','name','fullname','faxPause','pauseType','map','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','DESC','ASC','substring','indexOf','validateSortParameter','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','internal','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','mailStatus','chatStatusTime','openchannelStatusTime','mailStatusTime'];(function(_0x52acad,_0x297dd3){var _0x1eedf1=function(_0x35a7c2){while(--_0x35a7c2){_0x52acad['push'](_0x52acad['shift']());}};_0x1eedf1(++_0x297dd3);}(_0x6385,0x17a));var _0x5638=function(_0x38841c,_0x1af0bf){_0x38841c=_0x38841c-0x0;var _0x500610=_0x6385[_0x38841c];return _0x500610;};'use strict';var _=require(_0x5638('0x0'));var jayson=require('jayson/promise');var db=require(_0x5638('0x1'))['db'];var amiClient=jayson[_0x5638('0x2')][_0x5638('0x3')]({'port':0x232a});var routingClient=jayson[_0x5638('0x2')]['http']({'port':0x232c});function isAgentPaused(_0x1a5525,_0x4f0032){var _0x476814=[_0x1a5525[_0x5638('0x4')],_0x1a5525['faxPause'],_0x1a5525[_0x5638('0x5')],_0x1a5525[_0x5638('0x6')],_0x1a5525[_0x5638('0x7')],_0x1a5525[_0x5638('0x8')],_0x1a5525[_0x5638('0x9')]];if(!_0x4f0032)return _[_0x5638('0xa')](_0x476814);var _0xa2cbc=_['filter'](_0x476814);return _0xa2cbc[_0x5638('0xb')]>0x0&&_0xa2cbc['length']<_0x476814[_0x5638('0xb')]?!![]:![];}function isIdle(_0x4a6f14){return _0x4a6f14===_0x5638('0xc')||_0x4a6f14===_0x5638('0xd')||_0x4a6f14===_0x5638('0xe')||_0x4a6f14==='ringing'||_[_0x5638('0xf')](_0x4a6f14);}function isAgentIdle(_0x18864a){if(_0x18864a['voiceStatus']!==_0x5638('0xc')&&_0x18864a[_0x5638('0x8')]){_0x18864a['voiceStatus']=_0x5638('0x10');return![];}return _[_0x5638('0xa')]([_0x18864a['chatStatus'],_0x18864a[_0x5638('0x11')],_0x18864a['mailStatus'],_0x18864a[_0x5638('0x12')],_0x18864a[_0x5638('0x13')],_0x18864a[_0x5638('0x14')],_0x18864a['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0x5638('0x15')](_0x5638('0x16'),{})[_0x5638('0x17')](function(_0x13afc8){if(_0x13afc8[_0x5638('0x18')]){throw new Error(_0x5638('0x19'));}var _0x907e77=_0x13afc8[_0x5638('0x1a')];return routingClient['request'](_0x5638('0x16'),{})[_0x5638('0x17')](function(_0x4ecb3a){if(_0x4ecb3a[_0x5638('0x18')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x30f6c2=_0x4ecb3a[_0x5638('0x1a')];return _[_0x5638('0x1b')]({},_0x907e77,_0x30f6c2);});})[_0x5638('0x1c')](function(_0x379875){throw _0x379875;});}exports[_0x5638('0x1d')]=getRealtimeAgents;function getAgentStatus(_0x522684){var _0xc4b1f5=_0x5638('0xd');if(isAgentPaused(_0x522684))_0xc4b1f5='pause';else if(isAgentPaused(_0x522684,!![]))_0xc4b1f5='*pause';else if(isAgentIdle(_0x522684))_0xc4b1f5='idle';else _0xc4b1f5=_0x5638('0x1e');return _0xc4b1f5;}exports[_0x5638('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x23e520,_0x385b6b){var _0x5910e3=_[_0x5638('0x20')](_0x23e520)?_0x23e520:[_0x23e520];var _0x241f51=_[_0x5638('0x21')](_0x385b6b)+'Queue';var _0x5ee560=_['map'](_0x5910e3,function(_0xbac93f){return db[_0x241f51][_0x5638('0x22')]({'where':{'id':_0xbac93f}})[_0x5638('0x17')](function(_0x5e25f5){if(!_0x5e25f5)return[];return _0x5e25f5[_0x5638('0x23')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x5ee560)[_0x5638('0x17')](function(_0x473c8d){var _0x27d729=_(_0x473c8d)[_0x5638('0x24')]()['map']('id')['uniq']()[_0x5638('0x25')]();return _0x27d729;});}exports[_0x5638('0x26')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x2f064c,_0x254321,_0x4f2a54){try{if(_0x254321[_0x5638('0xb')]>0x0){_0x2f064c=_0x2f064c[_0x5638('0x27')](function(_0x200b7c){return _0x254321[_0x5638('0x28')](_0x200b7c['id']);});}var _0x298d7a=_0x2f064c[_0x5638('0x27')](function(_0x2f48c9){var _0x270666=_0x5638('0x1e');if(isAgentIdle(_0x2f48c9)){_0x270666='idle';}return _0x270666===_0x4f2a54;});return _['map'](_0x298d7a,'id');}catch(_0x55cd94){throw _0x55cd94;}}exports[_0x5638('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x28c0c8,_0xe46462,_0x466064){return Promise[_0x5638('0x2a')]()[_0x5638('0x17')](function(){if(_0xe46462[_0x5638('0xb')]>0x0){_0x28c0c8=_0x28c0c8[_0x5638('0x27')](function(_0xc2711){return _0xe46462[_0x5638('0x28')](_0xc2711['id']);});}return _0x28c0c8;})[_0x5638('0x17')](function(){return db[_0x5638('0x2b')]['findAll']({'attributes':['id',_0x5638('0x2c'),_0x5638('0x2d'),'chatPause',_0x5638('0x2e'),_0x5638('0x5'),_0x5638('0x6'),_0x5638('0x7'),_0x5638('0x8'),_0x5638('0x9'),_0x5638('0x2f')],'where':{'id':{'$in':_[_0x5638('0x30')](_0x28c0c8,'id')}},'raw':!![]});})[_0x5638('0x17')](function(_0x3e6bad){return _0x3e6bad[_0x5638('0x30')](function(_0x2116a4){var _0x344950=_[_0x5638('0x31')](_0x28c0c8,['id',_0x2116a4['id']]);var _0x584ae3=filterAgentAttributes(_0x344950);_['merge'](_0x2116a4,_0x584ae3);_0x2116a4[_0x5638('0x32')]=getAgentStatus(_0x2116a4);return _0x2116a4;});})[_0x5638('0x17')](function(_0x3fcac4){var _0x4154c9=sortAgentsByStatus(_0x3fcac4,_0x466064);return _[_0x5638('0x30')](_0x4154c9,'id');})[_0x5638('0x1c')](function(_0x3a1b14){throw _0x3a1b14;});}exports[_0x5638('0x33')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0xdc02bd){var _0x4531e2={'fields':[],'order':null};var _0x590a49=_0xdc02bd[_0x5638('0x34')](',');_0x4531e2[_0x5638('0x35')]=_['filter'](_0x590a49,function(_0x22c7dd){if(!_0x22c7dd[_0x5638('0x28')]('globalStatus')){return!![];}_0x4531e2[_0x5638('0x36')]=_['startsWith'](_0x22c7dd,'-')?_0x5638('0x37'):_0x5638('0x38');return![];});return _0x4531e2;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x3a615f){if(_0x3a615f['includes'](_0x5638('0x2d'))&&!_0x3a615f[_0x5638('0x28')]('internal')){var _0x2f9e8b=_0x3a615f[_0x5638('0x39')](0x0,_0x3a615f[_0x5638('0x3a')]('fullname'));_0x3a615f+=','+_0x2f9e8b+'internal';}return _0x3a615f;}exports[_0x5638('0x3b')]=validateSortParameter;function sortAgentsByStatus(_0x426348,_0x369879){var _0x49c3c5=_0x426348[_0x5638('0x3c')](function(_0x48bc8f,_0x458df5){if(_0x48bc8f[_0x5638('0x32')]===_0x458df5['globalStatus']){if(_0x48bc8f['globalStatus']===_0x5638('0x10')){if(_0x369879===_0x5638('0x37')){return(_0x48bc8f[_0x5638('0x2f')]||'')<(_0x458df5[_0x5638('0x2f')]||'')||_0x48bc8f[_0x5638('0x2d')][_0x5638('0x3d')]()>_0x458df5[_0x5638('0x2d')][_0x5638('0x3d')]()?0x1:-0x1;}else{return(_0x48bc8f[_0x5638('0x2f')]||'')<(_0x458df5[_0x5638('0x2f')]||'')||_0x48bc8f[_0x5638('0x2d')]['toLowerCase']()>_0x458df5['fullname'][_0x5638('0x3d')]()?-0x1:0x1;}}else{if(_0x369879===_0x5638('0x37')){return _0x48bc8f[_0x5638('0x2d')]['toLowerCase']()<_0x458df5[_0x5638('0x2d')][_0x5638('0x3d')]()?0x1:-0x1;}else{return _0x48bc8f['fullname'][_0x5638('0x3d')]()<_0x458df5[_0x5638('0x2d')][_0x5638('0x3d')]()?-0x1:0x1;}}}else{if(_0x369879===_0x5638('0x37')){return _0x48bc8f[_0x5638('0x32')]<_0x458df5['globalStatus']?0x1:-0x1;}else{return _0x48bc8f[_0x5638('0x32')]<_0x458df5['globalStatus']?-0x1:0x1;}}});return _0x49c3c5;}exports[_0x5638('0x3e')]=sortAgentsByStatus;function filterAgentAttributes(_0x494d43){var _0x503f32=[_0x5638('0x3f'),_0x5638('0x40'),_0x5638('0x41'),_0x5638('0x42'),_0x5638('0x2f'),_0x5638('0x42'),_0x5638('0x43'),_0x5638('0x44'),'chatPause',_0x5638('0x6'),_0x5638('0x5'),_0x5638('0x7'),_0x5638('0x9'),'faxPause',_0x5638('0x8'),_0x5638('0x45'),_0x5638('0x46'),_0x5638('0x47'),_0x5638('0x48'),_0x5638('0x49'),_0x5638('0x4a'),'chatCurrentCapacity','openchannelCurrentCapacity',_0x5638('0x4b'),_0x5638('0x4c'),_0x5638('0x4d'),'faxCurrentCapacity','chatStatus',_0x5638('0x12'),_0x5638('0x4e'),_0x5638('0x13'),'whatsappStatus',_0x5638('0x11'),_0x5638('0x14'),_0x5638('0x4f'),_0x5638('0x50'),_0x5638('0x51'),'smsStatusTime',_0x5638('0x52'),_0x5638('0x53'),'voiceStatusTime',_0x5638('0x54'),_0x5638('0x55'),_0x5638('0x56'),'phoneBarEnableScreenRecordingByAgent',_0x5638('0x57'),_0x5638('0x58')];var _0x5f336f=[_0x5638('0x4'),_0x5638('0x6'),_0x5638('0x5'),_0x5638('0x7'),_0x5638('0x9'),_0x5638('0x2e'),_0x5638('0x8'),'online'];var _0x11e2e3=_(_0x494d43)[_0x5638('0x59')](_0x5f336f)[_0x5638('0x5a')](_0x503f32)['value']();return _0x11e2e3;}exports[_0x5638('0x5b')]=filterAgentAttributes;
\ No newline at end of file
+var _0xa9ef=['openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','online','omit','pick','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','pause','faxStatus','mailStatus','openchannelStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','*pause','busy','isArray','startCase','Queue','map','getAgents','all','flatten','uniq','value','getAgentIdsByStatus','resolve','User','name','fullname','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','includes','order','startsWith','DESC','ASC','getUpdatedSortOptions','internal','indexOf','validateSortParameter','sort','toLowerCase','sortAgentsByStatus','userpic','lastPauseAt','chatCapacity'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0xa9ef,0x1ec));var _0xfa9e=function(_0x4ddd8c,_0x2cae93){_0x4ddd8c=_0x4ddd8c-0x0;var _0x123a7a=_0xa9ef[_0x4ddd8c];return _0x123a7a;};'use strict';var _=require('lodash');var jayson=require(_0xfa9e('0x0'));var db=require(_0xfa9e('0x1'))['db'];var amiClient=jayson[_0xfa9e('0x2')][_0xfa9e('0x3')]({'port':0x232a});var routingClient=jayson[_0xfa9e('0x2')][_0xfa9e('0x3')]({'port':0x232c});function isAgentPaused(_0x597341,_0x2b0c4f){var _0x2bfb03=[_0x597341[_0xfa9e('0x4')],_0x597341[_0xfa9e('0x5')],_0x597341[_0xfa9e('0x6')],_0x597341[_0xfa9e('0x7')],_0x597341[_0xfa9e('0x8')],_0x597341[_0xfa9e('0x9')],_0x597341[_0xfa9e('0xa')]];if(!_0x2b0c4f)return _[_0xfa9e('0xb')](_0x2bfb03);var _0x29cf47=_[_0xfa9e('0xc')](_0x2bfb03);return _0x29cf47[_0xfa9e('0xd')]>0x0&&_0x29cf47[_0xfa9e('0xd')]<_0x2bfb03[_0xfa9e('0xd')]?!![]:![];}function isIdle(_0x381e38){return _0x381e38===_0xfa9e('0xe')||_0x381e38===_0xfa9e('0xf')||_0x381e38===_0xfa9e('0x10')||_0x381e38===_0xfa9e('0x11')||_[_0xfa9e('0x12')](_0x381e38);}function isAgentIdle(_0x549dcd){if(_0x549dcd['voiceStatus']!=='idle'&&_0x549dcd['voicePause']){_0x549dcd[_0xfa9e('0x13')]=_0xfa9e('0x14');return![];}return _[_0xfa9e('0xb')]([_0x549dcd['chatStatus'],_0x549dcd[_0xfa9e('0x15')],_0x549dcd[_0xfa9e('0x16')],_0x549dcd[_0xfa9e('0x17')],_0x549dcd['smsStatus'],_0x549dcd[_0xfa9e('0x13')],_0x549dcd[_0xfa9e('0x18')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xfa9e('0x19')](_0xfa9e('0x1a'),{})[_0xfa9e('0x1b')](function(_0x4b7cc5){if(_0x4b7cc5[_0xfa9e('0x1c')]){throw new Error(_0xfa9e('0x1d'));}var _0x40a9c7=_0x4b7cc5[_0xfa9e('0x1e')];return routingClient[_0xfa9e('0x19')](_0xfa9e('0x1a'),{})['then'](function(_0x17f25c){if(_0x17f25c['error']){throw new Error(_0xfa9e('0x1f'));}var _0x4f8644=_0x17f25c[_0xfa9e('0x1e')];return _[_0xfa9e('0x20')]({},_0x40a9c7,_0x4f8644);});})[_0xfa9e('0x21')](function(_0x1336fb){throw _0x1336fb;});}exports[_0xfa9e('0x22')]=getRealtimeAgents;function getAgentStatus(_0x2abe2e){var _0x6922a2=_0xfa9e('0xf');if(isAgentPaused(_0x2abe2e))_0x6922a2='pause';else if(isAgentPaused(_0x2abe2e,!![]))_0x6922a2=_0xfa9e('0x23');else if(isAgentIdle(_0x2abe2e))_0x6922a2='idle';else _0x6922a2=_0xfa9e('0x24');return _0x6922a2;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x300b66,_0x14f023){var _0x3b1f1e=_[_0xfa9e('0x25')](_0x300b66)?_0x300b66:[_0x300b66];var _0x171c3e=_[_0xfa9e('0x26')](_0x14f023)+_0xfa9e('0x27');var _0x48eee3=_[_0xfa9e('0x28')](_0x3b1f1e,function(_0x566f74){return db[_0x171c3e]['findOne']({'where':{'id':_0x566f74}})['then'](function(_0x1a5385){if(!_0x1a5385)return[];return _0x1a5385[_0xfa9e('0x29')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xfa9e('0x2a')](_0x48eee3)['then'](function(_0x3327e3){var _0x7bcc8a=_(_0x3327e3)[_0xfa9e('0x2b')]()[_0xfa9e('0x28')]('id')[_0xfa9e('0x2c')]()[_0xfa9e('0x2d')]();return _0x7bcc8a;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x10bb68,_0x2e82a4,_0x27039e){try{if(_0x2e82a4[_0xfa9e('0xd')]>0x0){_0x10bb68=_0x10bb68['filter'](function(_0x3d97a6){return _0x2e82a4['includes'](_0x3d97a6['id']);});}var _0xcb4dd4=_0x10bb68[_0xfa9e('0xc')](function(_0x3a9c1c){var _0x3fa30c=_0xfa9e('0x24');if(isAgentIdle(_0x3a9c1c)){_0x3fa30c=_0xfa9e('0xe');}return _0x3fa30c===_0x27039e;});return _[_0xfa9e('0x28')](_0xcb4dd4,'id');}catch(_0x2bd88f){throw _0x2bd88f;}}exports[_0xfa9e('0x2e')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x4b4171,_0x1ed6b2,_0x40b239){return Promise[_0xfa9e('0x2f')]()[_0xfa9e('0x1b')](function(){if(_0x1ed6b2[_0xfa9e('0xd')]>0x0){_0x4b4171=_0x4b4171['filter'](function(_0x46ed87){return _0x1ed6b2['includes'](_0x46ed87['id']);});}return _0x4b4171;})[_0xfa9e('0x1b')](function(){return db[_0xfa9e('0x30')]['findAll']({'attributes':['id',_0xfa9e('0x31'),_0xfa9e('0x32'),_0xfa9e('0x4'),_0xfa9e('0x5'),'mailPause',_0xfa9e('0x7'),_0xfa9e('0x8'),_0xfa9e('0x9'),_0xfa9e('0xa'),_0xfa9e('0x33')],'where':{'id':{'$in':_[_0xfa9e('0x28')](_0x4b4171,'id')}},'raw':!![]});})['then'](function(_0x58c49a){return _0x58c49a['map'](function(_0x91998a){var _0x38e6ef=_[_0xfa9e('0x34')](_0x4b4171,['id',_0x91998a['id']]);var _0x511c42=filterAgentAttributes(_0x38e6ef);_[_0xfa9e('0x20')](_0x91998a,_0x511c42);_0x91998a[_0xfa9e('0x35')]=getAgentStatus(_0x91998a);return _0x91998a;});})[_0xfa9e('0x1b')](function(_0x4c5fad){var _0x54f697=sortAgentsByStatus(_0x4c5fad,_0x40b239);return _[_0xfa9e('0x28')](_0x54f697,'id');})[_0xfa9e('0x21')](function(_0x1c8f30){throw _0x1c8f30;});}exports[_0xfa9e('0x36')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x5458eb){var _0x1a5e09={'fields':[],'order':null};var _0x3763e4=_0x5458eb[_0xfa9e('0x37')](',');_0x1a5e09[_0xfa9e('0x38')]=_[_0xfa9e('0xc')](_0x3763e4,function(_0x1e9e5b){if(!_0x1e9e5b[_0xfa9e('0x39')](_0xfa9e('0x35'))){return!![];}_0x1a5e09[_0xfa9e('0x3a')]=_[_0xfa9e('0x3b')](_0x1e9e5b,'-')?_0xfa9e('0x3c'):_0xfa9e('0x3d');return![];});return _0x1a5e09;}exports[_0xfa9e('0x3e')]=getUpdatedSortOptions;function validateSortParameter(_0x5ab4d6){if(_0x5ab4d6['includes'](_0xfa9e('0x32'))&&!_0x5ab4d6['includes'](_0xfa9e('0x3f'))){var _0x5de674=_0x5ab4d6['substring'](0x0,_0x5ab4d6[_0xfa9e('0x40')](_0xfa9e('0x32')));_0x5ab4d6+=','+_0x5de674+_0xfa9e('0x3f');}return _0x5ab4d6;}exports[_0xfa9e('0x41')]=validateSortParameter;function sortAgentsByStatus(_0x43a2ca,_0x12fe64){var _0x2d20df=_0x43a2ca[_0xfa9e('0x42')](function(_0x10f58a,_0x3193ef){if(_0x10f58a[_0xfa9e('0x35')]===_0x3193ef['globalStatus']){if(_0x10f58a[_0xfa9e('0x35')]==='pause'){if(_0x12fe64===_0xfa9e('0x3c')){return(_0x10f58a[_0xfa9e('0x33')]||'')<(_0x3193ef[_0xfa9e('0x33')]||'')||_0x10f58a[_0xfa9e('0x32')]['toLowerCase']()>_0x3193ef[_0xfa9e('0x32')]['toLowerCase']()?0x1:-0x1;}else{return(_0x10f58a['pauseType']||'')<(_0x3193ef['pauseType']||'')||_0x10f58a[_0xfa9e('0x32')]['toLowerCase']()>_0x3193ef[_0xfa9e('0x32')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x12fe64==='DESC'){return _0x10f58a['fullname'][_0xfa9e('0x43')]()<_0x3193ef[_0xfa9e('0x32')]['toLowerCase']()?0x1:-0x1;}else{return _0x10f58a[_0xfa9e('0x32')][_0xfa9e('0x43')]()<_0x3193ef[_0xfa9e('0x32')][_0xfa9e('0x43')]()?-0x1:0x1;}}}else{if(_0x12fe64===_0xfa9e('0x3c')){return _0x10f58a[_0xfa9e('0x35')]<_0x3193ef[_0xfa9e('0x35')]?0x1:-0x1;}else{return _0x10f58a[_0xfa9e('0x35')]<_0x3193ef[_0xfa9e('0x35')]?-0x1:0x1;}}});return _0x2d20df;}exports[_0xfa9e('0x44')]=sortAgentsByStatus;function filterAgentAttributes(_0x3fb985){var _0x4019fc=[_0xfa9e('0x45'),'online','lastLoginAt',_0xfa9e('0x46'),'pauseType','lastPauseAt',_0xfa9e('0x3f'),'address','chatPause',_0xfa9e('0x7'),_0xfa9e('0x6'),_0xfa9e('0x8'),_0xfa9e('0xa'),'faxPause','voicePause',_0xfa9e('0x47'),_0xfa9e('0x48'),_0xfa9e('0x49'),_0xfa9e('0x4a'),_0xfa9e('0x4b'),_0xfa9e('0x4c'),_0xfa9e('0x4d'),_0xfa9e('0x4e'),'mailCurrentCapacity','smsCurrentCapacity',_0xfa9e('0x4f'),_0xfa9e('0x50'),_0xfa9e('0x51'),_0xfa9e('0x17'),'mailStatus','smsStatus',_0xfa9e('0x18'),_0xfa9e('0x15'),_0xfa9e('0x13'),_0xfa9e('0x52'),_0xfa9e('0x53'),_0xfa9e('0x54'),_0xfa9e('0x55'),_0xfa9e('0x56'),'faxStatusTime',_0xfa9e('0x57'),_0xfa9e('0x58'),'destconnectedlinenum',_0xfa9e('0x59'),_0xfa9e('0x5a'),'phoneBarEnableAutomaticScreenRecording','routealias'];var _0x555593=['chatPause',_0xfa9e('0x7'),_0xfa9e('0x6'),_0xfa9e('0x8'),'whatsappPause','faxPause',_0xfa9e('0x9'),_0xfa9e('0x5b')];var _0x34bd61=_(_0x3fb985)[_0xfa9e('0x5c')](_0x555593)[_0xfa9e('0x5d')](_0x4019fc)[_0xfa9e('0x2d')]();return _0x34bd61;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
diff --git a/server/components/realtime/queues.js b/server/components/realtime/queues.js
deleted file mode 100644 (file)
index ed860fa..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x5752=['merge','pick','client','http','available','loggedIn','paused','waiting','busy','inUse','onHold','ringing','ringInUse','talking','unavailable','unknown','pTalking','message','dialActive','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','request','startCase','Queues','then','catch','getRealtimeQueues','voice','outbound','map','get','loggedInDb'];(function(_0x4aadd1,_0x540098){var _0x10ac15=function(_0x6706b2){while(--_0x6706b2){_0x4aadd1['push'](_0x4aadd1['shift']());}};_0x10ac15(++_0x540098);}(_0x5752,0x144));var _0x2575=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x5752[_0x209941];return _0x1e8729;};'use strict';var _=require('lodash');var jayson=require('jayson/promise');var util=require('util');var amiClient=jayson['client']['http']({'port':0x232a});var routingClient=jayson[_0x2575('0x0')][_0x2575('0x1')]({'port':0x232c});var QUEUE_DEFAULT_ATTRIBUTES=[_0x2575('0x2'),_0x2575('0x3'),_0x2575('0x4'),_0x2575('0x5')];var INBOUND_VOICE_QUEUE_ATTRIBUTES=[_0x2575('0x6'),_0x2575('0x7'),'invalid','loggedInDb','notInUse',_0x2575('0x8'),_0x2575('0x9'),_0x2575('0xa'),_0x2575('0xb'),_0x2575('0xc'),_0x2575('0xd')];var OUTBOUND_VOICE_QUEUE_ATTRIBUTES=[_0x2575('0xe'),'originated',_0x2575('0xf'),_0x2575('0x10'),'dialMethod',_0x2575('0x11'),_0x2575('0x12'),_0x2575('0x13'),_0x2575('0x14'),_0x2575('0x15'),_0x2575('0x16'),_0x2575('0x17'),_0x2575('0x18'),_0x2575('0x19'),_0x2575('0x1a'),_0x2575('0x1b'),_0x2575('0x1c'),_0x2575('0x1d'),'predictiveIntervalDroppedCallsTimeout',_0x2575('0x1e'),_0x2575('0x1f'),_0x2575('0x20')];function getRealtimeQueues(_0x2fa357,_0x26b310){var _0x68ebc7=_0x26b310==='voice'?amiClient:routingClient;return _0x68ebc7[_0x2575('0x21')](_[_0x2575('0x22')](_0x26b310)+_0x2575('0x23'),_0x2fa357)[_0x2575('0x24')](function(_0x4a69bf){if(_0x4a69bf['error'])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x26b310));return _0x4a69bf['result'];})[_0x2575('0x25')](function(_0x27856c){throw _0x27856c;});}exports[_0x2575('0x26')]=getRealtimeQueues;function initializeQueues(_0x14a234,_0x3f1c91,_0x6bc019,_0x4d25d1){var _0x6216fc=QUEUE_DEFAULT_ATTRIBUTES;if(_0x6bc019===_0x2575('0x27')){if(_0x4d25d1===_0x2575('0x28')){_0x6216fc=_0x6216fc['concat'](OUTBOUND_VOICE_QUEUE_ATTRIBUTES);}else{_0x6216fc=_0x6216fc['concat'](INBOUND_VOICE_QUEUE_ATTRIBUTES);}}return _0x14a234[_0x2575('0x29')](function(_0x27b776){var _0x445ff4=_0x27b776[_0x2575('0x2a')]({'plain':!![]});_0x445ff4['paused']=0x0;_0x445ff4[_0x2575('0x2b')]=0x0;_0x445ff4['loggedIn']=0x0;_0x445ff4['available']=0x0;_0x445ff4[_0x2575('0x5')]=0x0;if(_0x6bc019==='voice'){_0x445ff4[_0x2575('0xb')]=0x0;_0x445ff4[_0x2575('0x6')]=0x0;if(_0x4d25d1===_0x2575('0x28')){_0x445ff4[_0x2575('0xe')]=0x0;_0x445ff4['originated']=0x0;}}var _0x13889c=_['find'](_0x3f1c91,['id',_0x445ff4['id']]);if(_0x13889c){_[_0x2575('0x2c')](_0x445ff4,_[_0x2575('0x2d')](_0x13889c,_0x6216fc));}return _0x445ff4;});}exports['initializeQueues']=initializeQueues;
\ No newline at end of file
index fe8d18b..937a7fb 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(_0x2536ee,_0x38153b){var _0x318b70=function(_0x2be0f4){while(--_0x2be0f4){_0x2536ee['push'](_0x2536ee['shift']());}};_0x318b70(++_0x38153b);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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(_0x27cbf1,_0x14613c){var _0x1cfb81=function(_0x2c001a){while(--_0x2c001a){_0x27cbf1['push'](_0x27cbf1['shift']());}};_0x1cfb81(++_0x14613c);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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 6680f1b..1ca7831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd1=['00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','cpus','map','model','join','createHash','update','hex','getUuid','platform','test','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','ipAddress','md5','digest','substring','lodash','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','keys','length','filter','IPv4','internal','concat','head','mac'];(function(_0x104a33,_0x390c26){var _0x2b0737=function(_0xbb853d){while(--_0xbb853d){_0x104a33['push'](_0x104a33['shift']());}};_0x2b0737(++_0x390c26);}(_0xfdd1,0x19f));var _0x1fdd=function(_0x4d1cc5,_0x5cf765){_0x4d1cc5=_0x4d1cc5-0x0;var _0x5e3fe5=_0xfdd1[_0x4d1cc5];return _0x5e3fe5;};'use strict';var _=require(_0x1fdd('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0x1fdd('0x1'));var exec=require(_0x1fdd('0x2'))[_0x1fdd('0x3')];var config=require(_0x1fdd('0x4'));function getInterfaces(){var _0x340449=[];var _0x2c9381=os[_0x1fdd('0x5')]();var _0x3c32a7=_['orderBy'](_[_0x1fdd('0x6')](_0x2c9381));for(var _0x17c348=0x0;_0x17c348<_0x3c32a7[_0x1fdd('0x7')];_0x17c348++){var _0x3bab03=_0x2c9381[_0x3c32a7[_0x17c348]][_0x1fdd('0x8')](function(_0x31ac5f){return _0x31ac5f['family']===_0x1fdd('0x9')&&_0x31ac5f[_0x1fdd('0xa')]===![];});_0x340449=_0x340449[_0x1fdd('0xb')](_0x3bab03);}return _0x340449;}function getFirstInterface(){var _0x3cab2b=_[_0x1fdd('0xc')](getInterfaces());return{'macAddress':_0x3cab2b&&_0x3cab2b[_0x1fdd('0xd')]?_0x3cab2b[_0x1fdd('0xd')]:_0x1fdd('0xe'),'ipAddress':_0x3cab2b&&_0x3cab2b[_0x1fdd('0xf')]?_0x3cab2b[_0x1fdd('0xf')]:_0x1fdd('0x10')};}exports[_0x1fdd('0x11')]=getFirstInterface;function getCPUhash(){var _0x2eae23=_[_0x1fdd('0x12')](os[_0x1fdd('0x13')]()[_0x1fdd('0x14')](function(_0x3e9fdd){return _0x3e9fdd[_0x1fdd('0x15')];}))[_0x1fdd('0x16')](':');return crypto[_0x1fdd('0x17')]('md5')[_0x1fdd('0x18')](_0x2eae23)['digest'](_0x1fdd('0x19'));}exports[_0x1fdd('0x1a')]=function(){var _0x1d7673=os[_0x1fdd('0x1b')]();var _0x20d6eb=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x20d6eb[_0x1fdd('0x1c')](config[_0x1fdd('0x1d')])){return config['licenseToken'];}else if(_0x1d7673===_0x1fdd('0x1e')){return exec(_0x1fdd('0x1f'),{'encoding':_0x1fdd('0x20')})[_0x1fdd('0x21')]('\x0d\x0a','');}else{var _0x310692=getFirstInterface();var _0x20c7b8=getCPUhash();var _0x5d288c=_0x20c7b8+'|'+os[_0x1fdd('0x22')]()+'|'+_0x310692['macAddress']+'|'+_0x310692[_0x1fdd('0x23')];var _0x118a61=crypto[_0x1fdd('0x17')](_0x1fdd('0x24'))['update'](_0x5d288c)[_0x1fdd('0x25')](_0x1fdd('0x19'));return _0x118a61[_0x1fdd('0x26')](0x0,0x8)+'-'+_0x118a61[_0x1fdd('0x26')](0x8,0xc)+'-'+_0x118a61[_0x1fdd('0x26')](0xc,0x10)+'-'+_0x118a61['substring'](0x10,0x14)+'-'+_0x118a61[_0x1fdd('0x26')](0x14);}};
\ No newline at end of file
+var _0xb9fb=['replace','macAddress','ipAddress','digest','substring','lodash','crypto','child_process','../environment','networkInterfaces','orderBy','length','filter','family','internal','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','model','join','createHash','update','hex','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid'];(function(_0x1add3e,_0xd9efce){var _0xe2662d=function(_0x416085){while(--_0x416085){_0x1add3e['push'](_0x1add3e['shift']());}};_0xe2662d(++_0xd9efce);}(_0xb9fb,0xaa));var _0xbb9f=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0xb9fb[_0xc4001c];return _0x49f7bc;};'use strict';var _=require(_0xbb9f('0x0'));var os=require('os');var crypto=require(_0xbb9f('0x1'));var machine=require('bimedia-machine-uuid');var exec=require(_0xbb9f('0x2'))['execSync'];var config=require(_0xbb9f('0x3'));function getInterfaces(){var _0x19149f=[];var _0x241a59=os[_0xbb9f('0x4')]();var _0x42122d=_[_0xbb9f('0x5')](_['keys'](_0x241a59));for(var _0x2f67d1=0x0;_0x2f67d1<_0x42122d[_0xbb9f('0x6')];_0x2f67d1++){var _0x5ad2e8=_0x241a59[_0x42122d[_0x2f67d1]][_0xbb9f('0x7')](function(_0x404c44){return _0x404c44[_0xbb9f('0x8')]==='IPv4'&&_0x404c44[_0xbb9f('0x9')]===![];});_0x19149f=_0x19149f['concat'](_0x5ad2e8);}return _0x19149f;}function getFirstInterface(){var _0x11d275=_[_0xbb9f('0xa')](getInterfaces());return{'macAddress':_0x11d275&&_0x11d275[_0xbb9f('0xb')]?_0x11d275[_0xbb9f('0xb')]:_0xbb9f('0xc'),'ipAddress':_0x11d275&&_0x11d275[_0xbb9f('0xd')]?_0x11d275['address']:_0xbb9f('0xe')};}exports[_0xbb9f('0xf')]=getFirstInterface;function getCPUhash(){var _0x47341e=_['orderBy'](os[_0xbb9f('0x10')]()['map'](function(_0x43214d){return _0x43214d[_0xbb9f('0x11')];}))[_0xbb9f('0x12')](':');return crypto[_0xbb9f('0x13')]('md5')[_0xbb9f('0x14')](_0x47341e)['digest'](_0xbb9f('0x15'));}exports[_0xbb9f('0x16')]=function(){var _0x5b3fc6=os[_0xbb9f('0x17')]();var _0x4e54ac=/[0-9a-f-]{36}/;if(config[_0xbb9f('0x18')]&&_0x4e54ac[_0xbb9f('0x19')](config['licenseToken'])){return config[_0xbb9f('0x18')];}else if(_0x5b3fc6===_0xbb9f('0x1a')){return exec(_0xbb9f('0x1b'),{'encoding':'utf8'})[_0xbb9f('0x1c')]('\x0d\x0a','');}else{var _0x4bf6a7=getFirstInterface();var _0x1456e6=getCPUhash();var _0x4ae4bd=_0x1456e6+'|'+os['hostname']()+'|'+_0x4bf6a7[_0xbb9f('0x1d')]+'|'+_0x4bf6a7[_0xbb9f('0x1e')];var _0x29c358=crypto[_0xbb9f('0x13')]('md5')[_0xbb9f('0x14')](_0x4ae4bd)[_0xbb9f('0x1f')](_0xbb9f('0x15'));return _0x29c358[_0xbb9f('0x20')](0x0,0x8)+'-'+_0x29c358[_0xbb9f('0x20')](0x8,0xc)+'-'+_0x29c358[_0xbb9f('0x20')](0xc,0x10)+'-'+_0x29c358[_0xbb9f('0x20')](0x10,0x14)+'-'+_0x29c358[_0xbb9f('0x20')](0x14);}};
\ No newline at end of file
index 31cef8a..187a936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83f5=['exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','get','data1','data2','then','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','catch','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s'];(function(_0x48db34,_0x2a6ec9){var _0x3d625d=function(_0x4169b6){while(--_0x4169b6){_0x48db34['push'](_0x48db34['shift']());}};_0x3d625d(++_0x2a6ec9);}(_0x83f5,0x106));var _0x583f=function(_0x1a87cd,_0x2a244f){_0x1a87cd=_0x1a87cd-0x0;var _0x4af60e=_0x83f5[_0x1a87cd];return _0x4af60e;};'use strict';var util=require(_0x583f('0x0'));var moment=require(_0x583f('0x1'));var rp=require(_0x583f('0x2'));var BPromise=require(_0x583f('0x3'));var pkginfo=require(_0x583f('0x4'))(module,_0x583f('0x5'));var db=require(_0x583f('0x6'))['db'];var encryptor=require(_0x583f('0x7'));var hardware=require(_0x583f('0x8'));var logger=require(_0x583f('0x9'))(_0x583f('0xa'));var HOST=_0x583f('0xb');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x35d863){return new BPromise(function(_0x1f7b42,_0x512c25){var _0x40dfd0=util[_0x583f('0xc')](_0x583f('0xd'),HOST,_0x35d863,module[_0x583f('0xe')][_0x583f('0x5')]);if(oldToken){_0x40dfd0=util['format'](_0x583f('0xf'),HOST,_0x35d863,module[_0x583f('0xe')]['version'],oldToken);}var _0xca2c6d={'uri':_0x40dfd0,'method':_0x583f('0x10'),'timeout':0xea60,'json':!![]};return rp(_0xca2c6d)['then'](function(_0x559172){_0x1f7b42(_0x559172);})['catch'](function(_0x448d0d){_0x512c25(_0x448d0d);});});}function manageLicense(_0x5d4e9c,_0x1e33ee){var _0x4c7f0d=_0x1e33ee[_0x583f('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x4c7f0d[_0x583f('0x12')]!==_0x5d4e9c&&!_0x4c7f0d[_0x583f('0x13')]){oldToken=_0x4c7f0d[_0x583f('0x12')];}httpRequest(_0x5d4e9c)[_0x583f('0x14')](function(_0x263195){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x263195['active']){isOldTokenSent=![];if(!_0x4c7f0d['license']&&_0x4c7f0d[_0x583f('0xa')]!=_0x263195['license']||_0x4c7f0d[_0x583f('0xa')]&&_0x4c7f0d[_0x583f('0x13')]){logger[_0x583f('0x15')](_0x583f('0x16'));}if(_0x4c7f0d['license']&&!_0x4c7f0d[_0x583f('0x13')]&&_0x4c7f0d[_0x583f('0xa')]!=_0x263195['license']){logger[_0x583f('0x15')](_0x583f('0x17'));}if(_0x4c7f0d[_0x583f('0xa')]&&!_0x4c7f0d['data2']&&_0x4c7f0d[_0x583f('0xa')]==_0x263195[_0x583f('0xa')]){return _0x1e33ee;}return _0x1e33ee[_0x583f('0x18')]({'data1':_0x5d4e9c,'data2':null,'license':_0x263195[_0x583f('0xa')]});}else{if(_0x263195[_0x583f('0xa')]||_0x4c7f0d['license']){if(!_0x4c7f0d[_0x583f('0x13')]){if(_0x4c7f0d[_0x583f('0x12')]==_0x5d4e9c){GRAY_PERIOD_REASON='Disabled';logger[_0x583f('0x15')](_0x583f('0x19'));}else{GRAY_PERIOD_REASON=_0x583f('0x1a');logger['info'](_0x583f('0x1b'),_0x4c7f0d[_0x583f('0x12')],_0x5d4e9c);}logger[_0x583f('0x15')](_0x583f('0x1c'),GRAY_PERIOD_REASON[_0x583f('0x1d')](),moment()[_0x583f('0xc')](_0x583f('0x1e')));return _0x1e33ee['update']({'data2':encryptor[_0x583f('0x1f')](moment()[_0x583f('0xc')](_0x583f('0x1e')))});}else{if(moment()[_0x583f('0x20')](encryptor[_0x583f('0x21')](_0x4c7f0d[_0x583f('0x13')]),_0x583f('0x22'))>DAYS){logger[_0x583f('0x15')](_0x583f('0x23'),moment()[_0x583f('0xc')](_0x583f('0x1e')));isOldTokenSent=![];return _0x1e33ee[_0x583f('0x18')]({'data1':_0x5d4e9c,'data2':null,'license':null});}}}else{if(_0x4c7f0d[_0x583f('0x12')]!=_0x5d4e9c){logger[_0x583f('0x15')](_0x583f('0x1b'),_0x4c7f0d['data1'],_0x5d4e9c);return _0x1e33ee[_0x583f('0x18')]({'data1':_0x5d4e9c,'data2':null,'license':null});}}}return _0x1e33ee;})[_0x583f('0x14')](function(_0x57d19d){_0x1e33ee=_0x57d19d;})[_0x583f('0x24')](function(_0x240049){logger['error'](_0x240049[_0x583f('0x25')]);})[_0x583f('0x26')](function(){setTimeout(function(){manageLicense(hardware[_0x583f('0x27')](),_0x1e33ee);},TIME);});}function defaultLicense(){var _0x39fddb=hardware['getUuid']();if(_0x39fddb){return db[_0x583f('0x28')][_0x583f('0x29')]({'where':{'id':0x1},'defaults':{'data1':_0x39fddb}})[_0x583f('0x2a')](function(_0x3b06a6,_0x458212){logger[_0x583f('0x15')](_0x583f('0x2b'),_0x39fddb);manageLicense(_0x39fddb,_0x3b06a6);})['catch'](function(_0x33a9c4){logger[_0x583f('0x2c')](_0x33a9c4[_0x583f('0x25')]);});}}exports[_0x583f('0x2d')]=defaultLicense;
\ No newline at end of file
+var _0xaf82=['YYYY-MM-DD\x20HH:mm','days','error','message','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo','version','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','then','catch','get','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','encryptString'];(function(_0x36316a,_0x56181b){var _0x378bd5=function(_0x4c98ac){while(--_0x4c98ac){_0x36316a['push'](_0x36316a['shift']());}};_0x378bd5(++_0x56181b);}(_0xaf82,0x1dd));var _0x2af8=function(_0x5449fc,_0xfe9f54){_0x5449fc=_0x5449fc-0x0;var _0x17565c=_0xaf82[_0x5449fc];return _0x17565c;};'use strict';var util=require(_0x2af8('0x0'));var moment=require(_0x2af8('0x1'));var rp=require(_0x2af8('0x2'));var BPromise=require(_0x2af8('0x3'));var pkginfo=require(_0x2af8('0x4'))(module,_0x2af8('0x5'));var db=require('../../mysqldb')['db'];var encryptor=require(_0x2af8('0x6'));var hardware=require(_0x2af8('0x7'));var logger=require(_0x2af8('0x8'))(_0x2af8('0x9'));var HOST=_0x2af8('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x28908b){return new BPromise(function(_0x855f44,_0x85aaad){var _0x745a8=util[_0x2af8('0xb')](_0x2af8('0xc'),HOST,_0x28908b,module[_0x2af8('0xd')]['version']);if(oldToken){_0x745a8=util[_0x2af8('0xb')](_0x2af8('0xe'),HOST,_0x28908b,module[_0x2af8('0xd')][_0x2af8('0x5')],oldToken);}var _0x4d6d6c={'uri':_0x745a8,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x4d6d6c)[_0x2af8('0xf')](function(_0x566f06){_0x855f44(_0x566f06);})[_0x2af8('0x10')](function(_0x49982e){_0x85aaad(_0x49982e);});});}function manageLicense(_0x1488b2,_0x4215c5){var _0x45790d=_0x4215c5[_0x2af8('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x45790d[_0x2af8('0x12')]!==_0x1488b2&&!_0x45790d[_0x2af8('0x13')]){oldToken=_0x45790d[_0x2af8('0x12')];}httpRequest(_0x1488b2)[_0x2af8('0xf')](function(_0x5ef4eb){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x5ef4eb['active']){isOldTokenSent=![];if(!_0x45790d[_0x2af8('0x9')]&&_0x45790d[_0x2af8('0x9')]!=_0x5ef4eb['license']||_0x45790d[_0x2af8('0x9')]&&_0x45790d[_0x2af8('0x13')]){logger[_0x2af8('0x14')](_0x2af8('0x15'));}if(_0x45790d[_0x2af8('0x9')]&&!_0x45790d[_0x2af8('0x13')]&&_0x45790d['license']!=_0x5ef4eb[_0x2af8('0x9')]){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x45790d[_0x2af8('0x9')]&&!_0x45790d['data2']&&_0x45790d[_0x2af8('0x9')]==_0x5ef4eb['license']){return _0x4215c5;}return _0x4215c5[_0x2af8('0x16')]({'data1':_0x1488b2,'data2':null,'license':_0x5ef4eb[_0x2af8('0x9')]});}else{if(_0x5ef4eb[_0x2af8('0x9')]||_0x45790d[_0x2af8('0x9')]){if(!_0x45790d[_0x2af8('0x13')]){if(_0x45790d[_0x2af8('0x12')]==_0x1488b2){GRAY_PERIOD_REASON=_0x2af8('0x17');logger['info'](_0x2af8('0x18'));}else{GRAY_PERIOD_REASON=_0x2af8('0x19');logger[_0x2af8('0x14')](_0x2af8('0x1a'),_0x45790d[_0x2af8('0x12')],_0x1488b2);}logger[_0x2af8('0x14')](_0x2af8('0x1b'),GRAY_PERIOD_REASON[_0x2af8('0x1c')](),moment()[_0x2af8('0xb')]('YYYY-MM-DD\x20HH:mm'));return _0x4215c5[_0x2af8('0x16')]({'data2':encryptor[_0x2af8('0x1d')](moment()['format'](_0x2af8('0x1e')))});}else{if(moment()['diff'](encryptor['decryptString'](_0x45790d['data2']),_0x2af8('0x1f'))>DAYS){logger[_0x2af8('0x14')]('DEMO\x20START\x20AT\x20%s',moment()[_0x2af8('0xb')](_0x2af8('0x1e')));isOldTokenSent=![];return _0x4215c5[_0x2af8('0x16')]({'data1':_0x1488b2,'data2':null,'license':null});}}}else{if(_0x45790d['data1']!=_0x1488b2){logger[_0x2af8('0x14')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x45790d[_0x2af8('0x12')],_0x1488b2);return _0x4215c5['update']({'data1':_0x1488b2,'data2':null,'license':null});}}}return _0x4215c5;})[_0x2af8('0xf')](function(_0x5f0081){_0x4215c5=_0x5f0081;})['catch'](function(_0x5ba357){logger[_0x2af8('0x20')](_0x5ba357[_0x2af8('0x21')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x2af8('0x22')](),_0x4215c5);},TIME);});}function defaultLicense(){var _0x25409e=hardware[_0x2af8('0x22')]();if(_0x25409e){return db['License'][_0x2af8('0x23')]({'where':{'id':0x1},'defaults':{'data1':_0x25409e}})[_0x2af8('0x24')](function(_0x2388db,_0x15532a){logger[_0x2af8('0x14')](_0x2af8('0x25'),_0x25409e);manageLicense(_0x25409e,_0x2388db);})['catch'](function(_0x1f235d){logger['error'](_0x1f235d['message']);});}}exports[_0x2af8('0x26')]=defaultLicense;
\ No newline at end of file
index bfcded6..a5521c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x722c=['pick','countBy','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','lodash','moment','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','License','find','defaults','then','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','demo','uuid','machineUuid','getUuid','deadline','add','days','grayReason','changed','disabled','message','User','findAll','role','sequelize','col','count','admin','user','telephones','forEach','catch'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0x722c,0xc6));var _0xc722=function(_0x408e15,_0x5e4957){_0x408e15=_0x408e15-0x0;var _0x4059c5=_0x722c[_0x408e15];return _0x4059c5;};'use strict';var util=require('util');var _=require(_0xc722('0x0'));var moment=require(_0xc722('0x1'));var BPromise=require('bluebird');var hardware=require(_0xc722('0x2'));var encryptor=require(_0xc722('0x3'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc722('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xc722('0x5'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc722('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xc722('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x47169f){return new BPromise(function(_0x22d462,_0x2fe88e){return db[_0xc722('0x7')][_0xc722('0x8')](_[_0xc722('0x9')](_0x47169f,{'raw':!![],'where':{'id':0x1}}))[_0xc722('0xa')](function(_0x2078d7){return checkLicense(_0x2078d7,null);})[_0xc722('0xa')](function(_0x45908e){_0x22d462(_0x45908e);return;})['catch'](function(_0x742d36){_0x2fe88e(_0x742d36);});});}function checkLicense(_0x512062,_0x30ba8d){if(!_0x512062){demoLicense['uuid']=_0x512062[_0xc722('0xb')];return demoLicense;}try{var _0x24a0f3=_0x30ba8d||_0x512062['license'];if(_[_0xc722('0xc')](_0x24a0f3)){throw new Error(_0xc722('0xd'));}var _0x3815e9=_0x512062[_0xc722('0xb')];var _0x343083=_0x512062[_0xc722('0xe')];var _0x4ddc87=_0x3815e9[_0xc722('0xf')]('-')[0x4];var _0x459ecd=_0x3815e9[_0xc722('0xf')]('-')[0x0];var _0x30b113=encryptor[_0xc722('0x10')](_0x24a0f3,util[_0xc722('0x11')](_0xc722('0x12'),_0x4ddc87,_0x3815e9,_0x459ecd));var _0x5166ae=JSON[_0xc722('0x13')](_0x30b113);_0x5166ae[_0xc722('0x14')]=![];_0x5166ae[_0xc722('0x15')]=_0x3815e9;_0x5166ae[_0xc722('0x16')]=hardware[_0xc722('0x17')]();if(_0x343083){var _0xf36d4b=encryptor[_0xc722('0x10')](_0x343083);_0x5166ae['gray']=_0xf36d4b;_0x5166ae[_0xc722('0x18')]=moment(_0xf36d4b)[_0xc722('0x19')](0x7,_0xc722('0x1a'))[_0xc722('0x11')]();_0x5166ae[_0xc722('0x1b')]=_0x5166ae[_0xc722('0x15')]!=_0x5166ae[_0xc722('0x16')]?_0xc722('0x1c'):_0xc722('0x1d');}return _0x5166ae;}catch(_0x39f524){breakingLicense[_0xc722('0x15')]=_0x512062[_0xc722('0xb')];breakingLicense[_0xc722('0x1e')]=_0x39f524['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x137012,_0x3042f6){getLicense()[_0xc722('0xa')](function(_0x3d72e9){return db[_0xc722('0x1f')][_0xc722('0x20')]({'attributes':[_0xc722('0x21'),[db[_0xc722('0x22')]['fn']('COUNT',db[_0xc722('0x22')][_0xc722('0x23')]('role')),_0xc722('0x24')]],'group':_0xc722('0x21'),'where':{'role':{'$or':[_0xc722('0x25'),_0xc722('0x26'),'telephone']}},'raw':!![]})[_0xc722('0xa')](function(_0x3d7067){var _0x38cfdb={'user':_0x3d72e9['users']||0x0,'telephone':_0x3d72e9[_0xc722('0x27')]||0x0};_0x3d7067[_0xc722('0x28')](function(_0x27b3f7){var _0x142d54=_0x27b3f7['role']===_0xc722('0x25')?'user':_0x27b3f7[_0xc722('0x21')];_0x38cfdb[_0x142d54]-=_0x27b3f7[_0xc722('0x24')];if(_0x38cfdb[_0x142d54]<0x0)_0x38cfdb[_0x142d54]=0x0;});_0x137012(_0x38cfdb);return;});})[_0xc722('0x29')](function(_0x2e45e5){_0x3042f6(_0x2e45e5);});});}function checkUserLimits(_0x54c68d){return new BPromise(function(_0x197d54,_0x2b60e1){getLimits()[_0xc722('0xa')](function(_0x565aa0){var _0x4b4bc6=_[_0xc722('0x2a')](_[_0xc722('0x2b')](_0x54c68d,'role'),[_0xc722('0x25'),'user','telephone']);var _0x244ec3=(_0x4b4bc6['admin']||0x0)+(_0x4b4bc6[_0xc722('0x26')]||0x0);var _0xc79735=_0x4b4bc6[_0xc722('0x2c')]||0x0;if(_0x244ec3>_0x565aa0['user'])return _0x2b60e1(_0xc722('0x2d'));if(_0xc79735>_0x565aa0['telephone'])return _0x2b60e1(_0xc722('0x2e'));return _0x197d54();})['catch'](function(_0x4e71eb){_0x2b60e1(_0x4e71eb);});});}module[_0xc722('0x2f')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x3191=['days','grayReason','message','findAll','role','sequelize','col','admin','user','telephone','users','telephones','forEach','count','pick','countBy','License\x20limit\x20reached\x20for\x20users','exports','util','lodash','moment','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','getUuid','License','find','defaults','then','catch','uuid','license','isEmpty','License\x20key\x20value\x20not\x20found','data1','split','decryptString','format','%s:%s:%s','parse','machineUuid','gray','deadline','add'];(function(_0xa61109,_0x5a526a){var _0x1e8796=function(_0x5e1e55){while(--_0x5e1e55){_0xa61109['push'](_0xa61109['shift']());}};_0x1e8796(++_0x5a526a);}(_0x3191,0x9c));var _0x1319=function(_0x1dca10,_0x1e05f1){_0x1dca10=_0x1dca10-0x0;var _0x5d26cf=_0x3191[_0x1dca10];return _0x5d26cf;};'use strict';var util=require(_0x1319('0x0'));var _=require(_0x1319('0x1'));var moment=require(_0x1319('0x2'));var BPromise=require('bluebird');var hardware=require(_0x1319('0x3'));var encryptor=require('../../components/encryptor');var db=require(_0x1319('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x1319('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x1319('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x1319('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x1319('0x7'),'machineUuid':hardware[_0x1319('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x3812bc){return new BPromise(function(_0x4936c6,_0x5c5c62){return db[_0x1319('0x9')][_0x1319('0xa')](_[_0x1319('0xb')](_0x3812bc,{'raw':!![],'where':{'id':0x1}}))[_0x1319('0xc')](function(_0xdc19ba){return checkLicense(_0xdc19ba,null);})[_0x1319('0xc')](function(_0x305ddf){_0x4936c6(_0x305ddf);return;})[_0x1319('0xd')](function(_0x3406cf){_0x5c5c62(_0x3406cf);});});}function checkLicense(_0x3801c0,_0x52fc54){if(!_0x3801c0){demoLicense[_0x1319('0xe')]=_0x3801c0['data1'];return demoLicense;}try{var _0x406568=_0x52fc54||_0x3801c0[_0x1319('0xf')];if(_[_0x1319('0x10')](_0x406568)){throw new Error(_0x1319('0x11'));}var _0x3f3333=_0x3801c0[_0x1319('0x12')];var _0x75f16=_0x3801c0['data2'];var _0xa36b3d=_0x3f3333[_0x1319('0x13')]('-')[0x4];var _0x35ff3c=_0x3f3333['split']('-')[0x0];var _0x4388ed=encryptor[_0x1319('0x14')](_0x406568,util[_0x1319('0x15')](_0x1319('0x16'),_0xa36b3d,_0x3f3333,_0x35ff3c));var _0x35ec7e=JSON[_0x1319('0x17')](_0x4388ed);_0x35ec7e['demo']=![];_0x35ec7e['uuid']=_0x3f3333;_0x35ec7e[_0x1319('0x18')]=hardware[_0x1319('0x8')]();if(_0x75f16){var _0x2e716b=encryptor[_0x1319('0x14')](_0x75f16);_0x35ec7e[_0x1319('0x19')]=_0x2e716b;_0x35ec7e[_0x1319('0x1a')]=moment(_0x2e716b)[_0x1319('0x1b')](0x7,_0x1319('0x1c'))[_0x1319('0x15')]();_0x35ec7e[_0x1319('0x1d')]=_0x35ec7e[_0x1319('0xe')]!=_0x35ec7e[_0x1319('0x18')]?'changed':'disabled';}return _0x35ec7e;}catch(_0x2a0429){breakingLicense['uuid']=_0x3801c0[_0x1319('0x12')];breakingLicense[_0x1319('0x1e')]=_0x2a0429['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x4be2c3,_0x22f92e){getLicense()[_0x1319('0xc')](function(_0xecc59){return db['User'][_0x1319('0x1f')]({'attributes':[_0x1319('0x20'),[db[_0x1319('0x21')]['fn']('COUNT',db[_0x1319('0x21')][_0x1319('0x22')](_0x1319('0x20'))),'count']],'group':_0x1319('0x20'),'where':{'role':{'$or':[_0x1319('0x23'),_0x1319('0x24'),_0x1319('0x25')]}},'raw':!![]})[_0x1319('0xc')](function(_0x252b7b){var _0x3ca7bd={'user':_0xecc59[_0x1319('0x26')]||0x0,'telephone':_0xecc59[_0x1319('0x27')]||0x0};_0x252b7b[_0x1319('0x28')](function(_0x1b2e51){var _0x573000=_0x1b2e51['role']==='admin'?_0x1319('0x24'):_0x1b2e51[_0x1319('0x20')];_0x3ca7bd[_0x573000]-=_0x1b2e51[_0x1319('0x29')];if(_0x3ca7bd[_0x573000]<0x0)_0x3ca7bd[_0x573000]=0x0;});_0x4be2c3(_0x3ca7bd);return;});})[_0x1319('0xd')](function(_0x284e9d){_0x22f92e(_0x284e9d);});});}function checkUserLimits(_0x55a279){return new BPromise(function(_0x185750,_0x4e1d92){getLimits()[_0x1319('0xc')](function(_0x399a2e){var _0x198de4=_[_0x1319('0x2a')](_[_0x1319('0x2b')](_0x55a279,_0x1319('0x20')),[_0x1319('0x23'),_0x1319('0x24'),'telephone']);var _0x298693=(_0x198de4[_0x1319('0x23')]||0x0)+(_0x198de4[_0x1319('0x24')]||0x0);var _0x49aa6b=_0x198de4['telephone']||0x0;if(_0x298693>_0x399a2e[_0x1319('0x24')])return _0x4e1d92(_0x1319('0x2c'));if(_0x49aa6b>_0x399a2e[_0x1319('0x25')])return _0x4e1d92('License\x20limit\x20reached\x20for\x20telephones');return _0x185750();})['catch'](function(_0xb41a35){_0x4e1d92(_0xb41a35);});});}module[_0x1319('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 684af34..c0b2901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd824=['http://localhost:9000','secret','exports'];(function(_0x4d88f6,_0x52f758){var _0x2041c8=function(_0x16f556){while(--_0x16f556){_0x4d88f6['push'](_0x4d88f6['shift']());}};_0x2041c8(++_0x52f758);}(_0xd824,0xc2));var _0x4d82=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd824[_0x321bb2];return _0x9c12ed;};'use strict';module[_0x4d82('0x0')]={'DOMAIN':_0x4d82('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x4d82('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0xb62e=['myappanuglar-secret','app-id','exports','http://localhost:9000'];(function(_0x1f8e49,_0x12af6c){var _0x51596e=function(_0x199fc0){while(--_0x199fc0){_0x1f8e49['push'](_0x1f8e49['shift']());}};_0x51596e(++_0x12af6c);}(_0xb62e,0x1de));var _0xeb62=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xb62e[_0x1ac595];return _0x455fff;};'use strict';module[_0xeb62('0x0')]={'DOMAIN':_0xeb62('0x1'),'SESSION_SECRET':_0xeb62('0x2'),'GOOGLE_ID':_0xeb62('0x3'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
index a1bc06d..47c945e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fa=['exports','../utils/loggers','fileLogger'];(function(_0x2573b0,_0xae9635){var _0x4f8649=function(_0x1a4123){while(--_0x1a4123){_0x2573b0['push'](_0x2573b0['shift']());}};_0x4f8649(++_0xae9635);}(_0xc7fa,0x106));var _0xac7f=function(_0x522627,_0x2eea2b){_0x522627=_0x522627-0x0;var _0x42e49a=_0xc7fa[_0x522627];return _0x42e49a;};'use strict';var fileLogger=require(_0xac7f('0x0'))[_0xac7f('0x1')];module[_0xac7f('0x2')]=fileLogger;
\ No newline at end of file
+var _0x8cf3=['fileLogger','../utils/loggers'];(function(_0x55cbf9,_0x5dc59a){var _0x551663=function(_0x472ed4){while(--_0x472ed4){_0x55cbf9['push'](_0x55cbf9['shift']());}};_0x551663(++_0x5dc59a);}(_0x8cf3,0x97));var _0x38cf=function(_0x4f6fee,_0x4d9445){_0x4f6fee=_0x4f6fee-0x0;var _0xaa30e4=_0x8cf3[_0x4f6fee];return _0xaa30e4;};'use strict';var fileLogger=require(_0x38cf('0x0'))[_0x38cf('0x1')];module['exports']=fileLogger;
\ No newline at end of file
index 168ae65..278d8da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0bb=['exports','path','join','ami','../../services/ami/index.js','agi','email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x51ca32,_0x13ceea){var _0x1a1cea=function(_0x33553b){while(--_0x33553b){_0x51ca32['push'](_0x51ca32['shift']());}};_0x1a1cea(++_0x13ceea);}(_0xf0bb,0xfe));var _0xbf0b=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xf0bb[_0x167cc1];return _0x10bc4b;};'use strict';var path=require(_0xbf0b('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path[_0xbf0b('0x1')](__dirname,'../../services/express/index.js')},{'name':_0xbf0b('0x2'),'script':path[_0xbf0b('0x1')](__dirname,_0xbf0b('0x3'))},{'name':_0xbf0b('0x4'),'script':path[_0xbf0b('0x1')](__dirname,'../../services/agi/index.js')},{'name':_0xbf0b('0x5'),'script':path['join'](__dirname,'../../services/email/index.js')},{'name':_0xbf0b('0x6'),'script':path[_0xbf0b('0x1')](__dirname,_0xbf0b('0x7'))},{'name':_0xbf0b('0x8'),'script':path[_0xbf0b('0x1')](__dirname,_0xbf0b('0x9'))}]};module[_0xbf0b('0xa')]=config;
\ No newline at end of file
+var _0x84d7=['../../services/ami/index.js','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','path','express','join','../../services/express/index.js','ami'];(function(_0x22356f,_0x59464a){var _0x413ad3=function(_0x2b98c0){while(--_0x2b98c0){_0x22356f['push'](_0x22356f['shift']());}};_0x413ad3(++_0x59464a);}(_0x84d7,0xff));var _0x784d=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x84d7[_0xac151d];return _0x111dba;};'use strict';var path=require(_0x784d('0x0'));var os=require('os');var config={'apps':[{'name':_0x784d('0x1'),'script':path[_0x784d('0x2')](__dirname,_0x784d('0x3'))},{'name':_0x784d('0x4'),'script':path[_0x784d('0x2')](__dirname,_0x784d('0x5'))},{'name':_0x784d('0x6'),'script':path[_0x784d('0x2')](__dirname,_0x784d('0x7'))},{'name':_0x784d('0x8'),'script':path['join'](__dirname,_0x784d('0x9'))},{'name':_0x784d('0xa'),'script':path[_0x784d('0x2')](__dirname,_0x784d('0xb'))},{'name':_0x784d('0xc'),'script':path['join'](__dirname,'../../services/xdr/index.js')}]};module['exports']=config;
\ No newline at end of file
index 1503645..86a9b53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb27=['describe','delete','dump','saved','pm2','bluebird','connected','stop','restart','list','then','disconnect'];(function(_0x2e1065,_0x182d99){var _0xd0af3c=function(_0x4e1f0b){while(--_0x4e1f0b){_0x2e1065['push'](_0x2e1065['shift']());}};_0xd0af3c(++_0x182d99);}(_0xfb27,0x178));var _0x7fb2=function(_0x8f7d2b,_0x1bebaf){_0x8f7d2b=_0x8f7d2b-0x0;var _0x13c298=_0xfb27[_0x8f7d2b];return _0x13c298;};'use strict';var pm2=require(_0x7fb2('0x0'));var BPromise=require(_0x7fb2('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x228513,_0x320991){return pm2['connect'](function(_0x499b9f){if(_0x499b9f){return _0x320991(_0x499b9f);}return _0x228513(_0x7fb2('0x2'));});});};exports['start']=function(_0x48005c){return connect()['then'](function(){return new BPromise(function(_0x333ca2,_0x293ccd){return pm2['start'](_0x48005c,function(_0x12561f,_0x1a4e50){if(_0x12561f){return _0x293ccd(_0x12561f);}pm2['disconnect']();return _0x333ca2(_0x1a4e50);});});});};exports[_0x7fb2('0x3')]=function(_0x57952d){return connect()['then'](function(){return new BPromise(function(_0x199dd7,_0x2ccaae){return pm2['stop'](_0x57952d,function(_0x2f379a,_0x2f17af){if(_0x2f379a){return _0x2ccaae(_0x2f379a);}pm2['disconnect']();return _0x199dd7(_0x2f17af);});});});};exports[_0x7fb2('0x4')]=function(_0x89221c){return connect()['then'](function(){return new BPromise(function(_0x123a47,_0x72e7e5){return pm2['restart'](_0x89221c,function(_0x37a63,_0x206d0f){if(_0x37a63){return _0x72e7e5(_0x37a63);}pm2['disconnect']();return _0x123a47(_0x206d0f);});});});};exports[_0x7fb2('0x5')]=function(){return connect()[_0x7fb2('0x6')](function(){return new BPromise(function(_0x35bbba,_0x32ebd2){return pm2[_0x7fb2('0x5')](function(_0x21c344,_0x130bdd){if(_0x21c344){return _0x32ebd2(_0x21c344);}pm2[_0x7fb2('0x7')]();return _0x35bbba(_0x130bdd);});});});};exports[_0x7fb2('0x8')]=function(_0x329457){return connect()[_0x7fb2('0x6')](function(){return new BPromise(function(_0x5f42b4,_0x143e3a){return pm2[_0x7fb2('0x8')](_0x329457,function(_0x5b94a0,_0x6bf2e7){if(_0x5b94a0){return _0x143e3a(_0x5b94a0);}pm2[_0x7fb2('0x7')]();return _0x5f42b4(_0x6bf2e7);});});});};exports[_0x7fb2('0x9')]=function(_0x5c3082){return connect()[_0x7fb2('0x6')](function(){return new BPromise(function(_0x4e51fa,_0x5c2fe2){return pm2[_0x7fb2('0x9')](_0x5c3082,function(_0x5ae2aa,_0x3e52cc){if(_0x5ae2aa){return _0x5c2fe2(_0x5ae2aa);}pm2['disconnect']();return _0x4e51fa(_0x3e52cc);});});});};exports[_0x7fb2('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x129f5a,_0x3d6406){return pm2[_0x7fb2('0xa')](function(_0x1dbfdb){if(_0x1dbfdb){return _0x3d6406(_0x1dbfdb);}return _0x129f5a(_0x7fb2('0xb'));});});});};
\ No newline at end of file
+var _0x7ba2=['then','disconnect','restart','list','describe','delete','dump','pm2','bluebird','start','stop'];(function(_0x46d263,_0x2e7448){var _0x474711=function(_0x2a8d5d){while(--_0x2a8d5d){_0x46d263['push'](_0x46d263['shift']());}};_0x474711(++_0x2e7448);}(_0x7ba2,0x1e0));var _0x27ba=function(_0x14e393,_0x5ef7b3){_0x14e393=_0x14e393-0x0;var _0x5b5ffa=_0x7ba2[_0x14e393];return _0x5b5ffa;};'use strict';var pm2=require(_0x27ba('0x0'));var BPromise=require(_0x27ba('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x4e21d1,_0x19fea7){return pm2['connect'](function(_0x467eae){if(_0x467eae){return _0x19fea7(_0x467eae);}return _0x4e21d1('connected');});});};exports['start']=function(_0x5020bd){return connect()['then'](function(){return new BPromise(function(_0x579c27,_0x35f8d0){return pm2[_0x27ba('0x2')](_0x5020bd,function(_0x25e087,_0x24df58){if(_0x25e087){return _0x35f8d0(_0x25e087);}pm2['disconnect']();return _0x579c27(_0x24df58);});});});};exports[_0x27ba('0x3')]=function(_0x45eee0){return connect()[_0x27ba('0x4')](function(){return new BPromise(function(_0x7983c1,_0x1acc5f){return pm2['stop'](_0x45eee0,function(_0x36a45f,_0x1f0451){if(_0x36a45f){return _0x1acc5f(_0x36a45f);}pm2[_0x27ba('0x5')]();return _0x7983c1(_0x1f0451);});});});};exports[_0x27ba('0x6')]=function(_0x100590){return connect()[_0x27ba('0x4')](function(){return new BPromise(function(_0x243f12,_0x1fb169){return pm2[_0x27ba('0x6')](_0x100590,function(_0x27f3aa,_0x1fa1e7){if(_0x27f3aa){return _0x1fb169(_0x27f3aa);}pm2['disconnect']();return _0x243f12(_0x1fa1e7);});});});};exports[_0x27ba('0x7')]=function(){return connect()[_0x27ba('0x4')](function(){return new BPromise(function(_0x3ada61,_0x42f254){return pm2[_0x27ba('0x7')](function(_0x304e00,_0x39cf65){if(_0x304e00){return _0x42f254(_0x304e00);}pm2[_0x27ba('0x5')]();return _0x3ada61(_0x39cf65);});});});};exports[_0x27ba('0x8')]=function(_0x3e21eb){return connect()[_0x27ba('0x4')](function(){return new BPromise(function(_0x59d485,_0x4aa403){return pm2[_0x27ba('0x8')](_0x3e21eb,function(_0x3e96cf,_0x4a3386){if(_0x3e96cf){return _0x4aa403(_0x3e96cf);}pm2['disconnect']();return _0x59d485(_0x4a3386);});});});};exports[_0x27ba('0x9')]=function(_0x519488){return connect()['then'](function(){return new BPromise(function(_0x37a88f,_0x38456c){return pm2[_0x27ba('0x9')](_0x519488,function(_0x496022,_0x260e59){if(_0x496022){return _0x38456c(_0x496022);}pm2[_0x27ba('0x5')]();return _0x37a88f(_0x260e59);});});});};exports[_0x27ba('0xa')]=function(){return connect()[_0x27ba('0x4')](function(){return new BPromise(function(_0x4d3108,_0x58fbf8){return pm2[_0x27ba('0xa')](function(_0x46edf1){if(_0x46edf1){return _0x58fbf8(_0x46edf1);}return _0x4d3108('saved');});});});};
\ No newline at end of file
index a61e21f..1e75b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x149e=['socket.io-emitter','Setting','find','chatTimeout','ChatInteraction','findAll','subtract','then','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','start','lodash','moment','../../config/environment','../../mysqldb','../logger','redis','localhost'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x149e,0x94));var _0xe149=function(_0x117f3e,_0x22cf77){_0x117f3e=_0x117f3e-0x0;var _0x5f5337=_0x149e[_0x117f3e];return _0x5f5337;};'use strict';var _=require(_0xe149('0x0'));var moment=require(_0xe149('0x1'));var Redis=require('ioredis');var util=require('util');var config=require(_0xe149('0x2'));var db=require(_0xe149('0x3'))['db'];var logger=require(_0xe149('0x4'))('schedule');config['redis']=_['defaults'](config[_0xe149('0x5')],{'host':_0xe149('0x6'),'port':0x18eb});var io=require(_0xe149('0x7'))(new Redis(config['redis']));function closeInteractions(){var _0x2b5061=0x0;var _0x7ce218=[];return db[_0xe149('0x8')][_0xe149('0x9')]({'raw':!![],'attributes':['id',_0xe149('0xa')],'where':{'id':0x1}})['then'](function(_0x35d49f){_0x2b5061=_0x35d49f['chatTimeout'];if(_0x2b5061){return db[_0xe149('0xb')][_0xe149('0xc')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xe149('0xd')](_0x35d49f[_0xe149('0xa')],'minutes')}}});}else{return[];}})[_0xe149('0xe')](function(_0x15bd95){if(_0x15bd95&&_0x15bd95[_0xe149('0xf')]){_0x7ce218=_[_0xe149('0x10')](_0x15bd95||[],'id');logger[_0xe149('0x11')](_0xe149('0x12'),_0x7ce218['join']());return db[_0xe149('0xb')][_0xe149('0x13')]({'closeReason':_0xe149('0x14'),'disposition':_0xe149('0x15'),'closed':!![],'closedAt':moment()[_0xe149('0x16')](_0xe149('0x17'))},{'where':{'id':_0x7ce218}});}})[_0xe149('0xe')](function(){if(_0x7ce218&&_0x7ce218['length']){logger[_0xe149('0x11')](_0xe149('0x18'),_0x7ce218[_0xe149('0x19')]());for(var _0x216880=0x0;_0x216880<_0x7ce218[_0xe149('0xf')];_0x216880++){io['emit'](_0xe149('0x1a'),{'id':_0x7ce218[_0x216880],'closed':!![]});}}})[_0xe149('0x1b')](function(_0x383a90){logger[_0xe149('0x1c')](_0xe149('0x1d'),_0x383a90?util['inspect'](_0x383a90,{'showHidden':![],'depth':null}):'');});}exports[_0xe149('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xf0ab=['Setting','chatTimeout','then','ChatInteraction','lastMsgAt','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','format','YYYY-MM-DD\x20HH:mm:ss','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis','redis','defaults','socket.io-emitter'];(function(_0x24092c,_0x171263){var _0x5f2cfc=function(_0x1fe393){while(--_0x1fe393){_0x24092c['push'](_0x24092c['shift']());}};_0x5f2cfc(++_0x171263);}(_0xf0ab,0x192));var _0xbf0a=function(_0x2df5b6,_0x272dd1){_0x2df5b6=_0x2df5b6-0x0;var _0x1c1010=_0xf0ab[_0x2df5b6];return _0x1c1010;};'use strict';var _=require(_0xbf0a('0x0'));var moment=require(_0xbf0a('0x1'));var Redis=require(_0xbf0a('0x2'));var util=require('util');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require('../logger')('schedule');config[_0xbf0a('0x3')]=_[_0xbf0a('0x4')](config[_0xbf0a('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xbf0a('0x5'))(new Redis(config[_0xbf0a('0x3')]));function closeInteractions(){var _0x47a679=0x0;var _0x196bea=[];return db[_0xbf0a('0x6')]['find']({'raw':!![],'attributes':['id',_0xbf0a('0x7')],'where':{'id':0x1}})[_0xbf0a('0x8')](function(_0x4f3c67){_0x47a679=_0x4f3c67['chatTimeout'];if(_0x47a679){return db[_0xbf0a('0x9')]['findAll']({'raw':!![],'attributes':['id',_0xbf0a('0xa')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x4f3c67[_0xbf0a('0x7')],'minutes')}}});}else{return[];}})[_0xbf0a('0x8')](function(_0x1ca109){if(_0x1ca109&&_0x1ca109[_0xbf0a('0xb')]){_0x196bea=_[_0xbf0a('0xc')](_0x1ca109||[],'id');logger[_0xbf0a('0xd')](_0xbf0a('0xe'),_0x196bea[_0xbf0a('0xf')]());return db[_0xbf0a('0x9')][_0xbf0a('0x10')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0xbf0a('0x11')](_0xbf0a('0x12'))},{'where':{'id':_0x196bea}});}})['then'](function(){if(_0x196bea&&_0x196bea[_0xbf0a('0xb')]){logger[_0xbf0a('0xd')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x196bea[_0xbf0a('0xf')]());for(var _0x340081=0x0;_0x340081<_0x196bea['length'];_0x340081++){io['emit'](_0xbf0a('0x13'),{'id':_0x196bea[_0x340081],'closed':!![]});}}})[_0xbf0a('0x14')](function(_0x221637){logger[_0xbf0a('0x15')](_0xbf0a('0x16'),_0x221637?util['inspect'](_0x221637,{'showHidden':![],'depth':null}):'');});}exports[_0xbf0a('0x17')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 70682ba..a7351a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb54f=['startAllRefreshIntervals','exports'];(function(_0x7f8dec,_0x240dc){var _0x28e6bd=function(_0x44e832){while(--_0x44e832){_0x7f8dec['push'](_0x7f8dec['shift']());}};_0x28e6bd(++_0x240dc);}(_0xb54f,0x14a));var _0xfb54=function(_0x52bcad,_0x82d5c5){_0x52bcad=_0x52bcad-0x0;var _0x36640b=_0xb54f[_0x52bcad];return _0x36640b;};'use strict';function start(){var _0x45c934=require('../../api/cloudProvider/cloudProvider.oauth.js');return _0x45c934[_0xfb54('0x0')]();}module[_0xfb54('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0xc6ee=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x255aaf,_0x282056){var _0x145bd2=function(_0x6e8c61){while(--_0x6e8c61){_0x255aaf['push'](_0x255aaf['shift']());}};_0x145bd2(++_0x282056);}(_0xc6ee,0xb2));var _0xec6e=function(_0x253099,_0x4761b5){_0x253099=_0x253099-0x0;var _0x1f0861=_0xc6ee[_0x253099];return _0x1f0861;};'use strict';function start(){var _0x5bab8d=require(_0xec6e('0x0'));return _0x5bab8d[_0xec6e('0x1')]();}module[_0xec6e('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index fc24a80..a6142fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb14a=['../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','zip','status','Sent','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','existsSync','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','catch','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','jobs','map','toString','keyBy','difference','intersection','exists','deleteJob','delete\x20cron','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','start','add\x20cron','stop','stop\x20cron','startAt','update','run','util','path','lodash','moment','bluebird','schedule'];(function(_0x1aaf09,_0x150dd7){var _0x35b335=function(_0x3d22d5){while(--_0x3d22d5){_0x1aaf09['push'](_0x1aaf09['shift']());}};_0x35b335(++_0x150dd7);}(_0xb14a,0xfc));var _0xab14=function(_0x361b01,_0x563f1c){_0x361b01=_0x361b01-0x0;var _0x35b74e=_0xb14a[_0x361b01];return _0x35b74e;};'use strict';var fs=require('fs');var util=require(_0xab14('0x0'));var path=require(_0xab14('0x1'));var _=require(_0xab14('0x2'));var moment=require(_0xab14('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require('jayson/promise');var BPromise=require(_0xab14('0x4'));var logger=require('../logger')(_0xab14('0x5'));var db=require(_0xab14('0x6'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xab14('0x7'));var client=jayson[_0xab14('0x8')][_0xab14('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x45db6e,_0x408365){return function(){logger[_0xab14('0xa')](_0xab14('0xb'),_0x45db6e[_0xab14('0xc')]);var _0x3b67e9=!![];var _0x27801b=_0x45db6e['MailAccount'][_0xab14('0xd')]();var _0x3df36a={'account':_0x27801b,'message':{'from':util[_0xab14('0xe')](_0xab14('0xf'),_0x45db6e[_0xab14('0x10')][_0xab14('0x11')],_0x45db6e[_0xab14('0x10')][_0xab14('0xc')]||_0x45db6e[_0xab14('0x10')][_0xab14('0x12')][_0xab14('0x13')]),'to':_0x45db6e[_0xab14('0xc')],'cc':_0x45db6e['cc'],'bcc':_0x45db6e['bcc'],'subject':util[_0xab14('0xe')](_0xab14('0x14'),_0x408365[_0xab14('0x11')],_0x45db6e[_0xab14('0x15')],_0x45db6e[_0xab14('0x16')])}};var _0x1ee80f=path[_0xab14('0x17')](__dirname,'../../files/reports');var _0x37201b=_0x408365[_0xab14('0x18')];var _0x3fb0cc=util[_0xab14('0xe')](_0xab14('0x19'),path[_0xab14('0x1a')](_0x408365[_0xab14('0x18')],path[_0xab14('0x1b')](_0x408365['savename'])),_0xab14('0x1c'));var _0xc48660=path[_0xab14('0x17')](_0x1ee80f,_0x37201b);var _0x5b8a5e=path[_0xab14('0x17')](_0x1ee80f,_0x3fb0cc);if(fs['existsSync'](_0xc48660)){_0x408365[_0xab14('0x1d')]=_0xab14('0x1e');_0x3df36a['message'][_0xab14('0x1f')]=[{'filename':_0x37201b,'path':_0xc48660}];_0x3df36a['message'][_0xab14('0x20')]=util[_0xab14('0xe')](_0xab14('0x21'),JSON[_0xab14('0x22')](_0x408365,null,0x2));}else if(fs[_0xab14('0x23')](_0x5b8a5e)){_0x408365[_0xab14('0x1d')]=_0xab14('0x1e');_0x3df36a['message'][_0xab14('0x1f')]=[{'filename':_0x3fb0cc,'path':_0x5b8a5e}];}else{_0x3df36a[_0xab14('0x24')][_0xab14('0x20')]=_0xab14('0x25');if(!_0x45db6e[_0xab14('0x26')]){_0x3b67e9=![];logger[_0xab14('0xa')](_0xab14('0x27'));}}if(_0x3b67e9){return client[_0xab14('0x28')](_0xab14('0x29'),_0x3df36a)[_0xab14('0x2a')](function(_0x35257d){if(_0x35257d[_0xab14('0x2b')]){return logger['error'](_0xab14('0x2c'),JSON[_0xab14('0x22')](_0x35257d));}return logger[_0xab14('0xa')](_0xab14('0x2d'));})['catch'](function(_0x5b6049){return logger[_0xab14('0x2b')](_0xab14('0x2c'),JSON['stringify'](_0x5b6049));});}};}function handleError(){return function(_0x44dd53){return logger[_0xab14('0x2b')](JSON[_0xab14('0x22')](_0x44dd53));};}function handleResult(_0x174efe){return function(_0x308adc){logger[_0xab14('0xa')](_0xab14('0x2e'),JSON[_0xab14('0x22')](_0x308adc));if(_0x174efe[_0xab14('0x10')]&&_0x174efe['MailAccount'][_0xab14('0x12')]&&!_[_0xab14('0x2f')](_0x174efe['email'])){setTimeout(handleSendEmail(_0x174efe,_0x308adc),0x3c*0x3e8);}};}function handleJob(_0x511e6){return function(){try{if(_[_0xab14('0x2f')](_0x511e6[_0xab14('0x15')])){return logger[_0xab14('0xa')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x511e6[_0xab14('0x16')])){return logger[_0xab14('0xa')](_0xab14('0x30'));}var _0x1fe577={'startDate':moment()[_0xab14('0x31')](_0x511e6[_0xab14('0x15')],_0x511e6['subtractUnit'])[_0xab14('0xe')](_0xab14('0x32')),'endDate':moment()[_0xab14('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x511e6[_0xab14('0x33')],'name':_0x511e6['name']};if(!_[_0xab14('0x2f')](_0x511e6['DefaultReportId'])){logger[_0xab14('0xa')]('exec\x20defaul\x20report\x20id:%s',_0x511e6[_0xab14('0x34')]);return analyticDefaultReportController[_0xab14('0x35')]({'id':_0x511e6[_0xab14('0x34')]},_0x1fe577)[_0xab14('0x2a')](handleResult(_0x511e6))[_0xab14('0x36')](handleError());}if(!_[_0xab14('0x2f')](_0x511e6['CustomReportId'])){logger[_0xab14('0xa')](_0xab14('0x37'),_0x511e6['CustomReportId']);return analyticCustomReportController[_0xab14('0x35')]({'id':_0x511e6['CustomReportId']},_0x1fe577)[_0xab14('0x2a')](handleResult(_0x511e6))[_0xab14('0x36')](handleError());}}catch(_0x506b53){logger[_0xab14('0x2b')](JSON[_0xab14('0x22')](_0x506b53));}return logger[_0xab14('0xa')](_0xab14('0x38'));};}function getJobs(_0x4325ae){var _0x57f85d={};if(_0x4325ae){_0x57f85d['id']=_0x4325ae;}return db[_0xab14('0x39')][_0xab14('0x3a')]({'where':_0x57f85d,'include':[{'model':db['MailAccount'],'attributes':['id',_0xab14('0x11'),_0xab14('0xc')],'include':[{'model':db[_0xab14('0x3b')],'as':_0xab14('0x12'),'include':[{'model':db['CloudProvider'],'as':_0xab14('0x3c')}]}]}]})[_0xab14('0x2a')](function(_0x279ef0){var _0x2f99be=_['keys'](manager[_0xab14('0x3d')]);var _0x1b70e9=_[_0xab14('0x3e')](_0x279ef0,function(_0x32f991){return _0x32f991['id'][_0xab14('0x3f')]();});var _0x9ba6b7=_[_0xab14('0x40')](_0x279ef0,function(_0x5bdb7f){return _0x5bdb7f['id']['toString']();});var _0x1756d4=_0x4325ae?_0x1b70e9:_[_0xab14('0x41')](_0x1b70e9,_0x2f99be);var _0x1e8c43=_[_0xab14('0x42')](_0x1b70e9,_0x2f99be);var _0x37343c=_['difference'](_0x2f99be,_0x1b70e9);var _0x552339;var _0x47e676;for(_0x552339=0x0;_0x552339<_0x37343c['length']&&!_0x4325ae;_0x552339+=0x1){_0x47e676=_0x37343c[_0x552339]['toString']();if(manager[_0xab14('0x43')](_0x47e676)){manager['stop'](_0x47e676);manager[_0xab14('0x44')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x45'),_0x47e676);}}logger[_0xab14('0xa')]('toRun',JSON[_0xab14('0x22')](_0x1756d4));for(_0x552339=0x0;_0x552339<_0x1756d4[_0xab14('0x46')];_0x552339+=0x1){_0x47e676=_0x1756d4[_0x552339][_0xab14('0x3f')]();logger[_0xab14('0xa')](_0xab14('0x47'),_0x47e676);if(_0x4325ae){logger[_0xab14('0xa')](_0xab14('0x48'),_0x4325ae);logger[_0xab14('0xa')](JSON[_0xab14('0x22')](_0x9ba6b7[_0x47e676]));BPromise[_0xab14('0x49')]()[_0xab14('0x2a')](handleJob(_0x9ba6b7[_0x47e676]));logger[_0xab14('0xa')](_0xab14('0x4a'),_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676]['cron']);}else if(_0x9ba6b7[_0x47e676][_0xab14('0x4b')]&&_0x9ba6b7[_0x47e676][_0xab14('0x4c')]&&moment()[_0xab14('0x4d')](_0x9ba6b7[_0x47e676]['startAt'],_0x9ba6b7[_0x47e676][_0xab14('0x4e')])){manager['add'](_0x47e676,_0x9ba6b7[_0x47e676][_0xab14('0x4b')],handleJob(_0x9ba6b7[_0x47e676]));manager[_0xab14('0x4f')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x50'),_0x9ba6b7[_0x47e676]['name'],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}else if(manager[_0xab14('0x43')](_0x47e676)){manager[_0xab14('0x51')](_0x47e676);manager[_0xab14('0x44')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x52'),_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}}for(_0x552339=0x0,_0x47e676;_0x552339<_0x1e8c43['length']&&!_0x4325ae;_0x552339+=0x1){_0x47e676=_0x1e8c43[_0x552339][_0xab14('0x3f')]();if(manager[_0xab14('0x43')](_0x47e676)){if(_0x9ba6b7[_0x47e676]['cron']&&_0x9ba6b7[_0x47e676]['active']&&moment()[_0xab14('0x4d')](_0x9ba6b7[_0x47e676][_0xab14('0x53')],_0x9ba6b7[_0x47e676][_0xab14('0x4e')])){manager[_0xab14('0x54')](_0x47e676,_0x9ba6b7[_0x47e676]['cron'],handleJob(_0x9ba6b7[_0x47e676]));logger[_0xab14('0xa')]('update\x20cron',_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}else{manager['stop'](_0x47e676);manager[_0xab14('0x44')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x52'),_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}}}})[_0xab14('0x36')](function(_0x3734a4){logger[_0xab14('0x2b')](JSON[_0xab14('0x22')](_0x3734a4));});}exports[_0xab14('0x55')]=function(_0x2faee3){return getJobs(_0x2faee3);};exports[_0xab14('0x4f')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xcfca=['length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','active','isBetween','startAt','add','cron','endAt','update','update\x20cron','start','util','path','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','MailAccount','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','subtractUnit','join','../../files/reports','%s.%s','basename','savename','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','error\x20mail','catch','stringify','data','isNil','subtractNumber\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','CloudProvider','jobs','toString','keyBy','intersection','difference'];(function(_0x55dbd4,_0x281067){var _0x38f690=function(_0x529876){while(--_0x529876){_0x55dbd4['push'](_0x55dbd4['shift']());}};_0x38f690(++_0x281067);}(_0xcfca,0x6a));var _0xacfc=function(_0x6e459a,_0x2b648f){_0x6e459a=_0x6e459a-0x0;var _0x519335=_0xcfca[_0x6e459a];return _0x519335;};'use strict';var fs=require('fs');var util=require(_0xacfc('0x0'));var path=require(_0xacfc('0x1'));var _=require('lodash');var moment=require(_0xacfc('0x2'));var CronJobManager=require(_0xacfc('0x3'));var jayson=require(_0xacfc('0x4'));var BPromise=require(_0xacfc('0x5'));var logger=require(_0xacfc('0x6'))(_0xacfc('0x7'));var db=require(_0xacfc('0x8'))['db'];var analyticCustomReportController=require(_0xacfc('0x9'));var analyticDefaultReportController=require(_0xacfc('0xa'));var client=jayson[_0xacfc('0xb')][_0xacfc('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x23c2a0,_0x213cca){return function(){logger['info'](_0xacfc('0xd'),_0x23c2a0[_0xacfc('0xe')]);var _0x52bf19=!![];var _0x196b0d=_0x23c2a0['MailAccount'][_0xacfc('0xf')]();var _0x49be8e={'account':_0x196b0d,'message':{'from':util[_0xacfc('0x10')]('\x22%s\x22\x20<%s>',_0x23c2a0[_0xacfc('0x11')]['name'],_0x23c2a0[_0xacfc('0x11')][_0xacfc('0xe')]||_0x23c2a0[_0xacfc('0x11')][_0xacfc('0x12')][_0xacfc('0x13')]),'to':_0x23c2a0[_0xacfc('0xe')],'cc':_0x23c2a0['cc'],'bcc':_0x23c2a0[_0xacfc('0x14')],'subject':util[_0xacfc('0x10')](_0xacfc('0x15'),_0x213cca[_0xacfc('0x16')],_0x23c2a0[_0xacfc('0x17')],_0x23c2a0[_0xacfc('0x18')])}};var _0x2590f0=path[_0xacfc('0x19')](__dirname,_0xacfc('0x1a'));var _0x56e606=_0x213cca['savename'];var _0x2fb7a7=util['format'](_0xacfc('0x1b'),path[_0xacfc('0x1c')](_0x213cca[_0xacfc('0x1d')],path[_0xacfc('0x1e')](_0x213cca['savename'])),_0xacfc('0x1f'));var _0x5ed1b7=path[_0xacfc('0x19')](_0x2590f0,_0x56e606);var _0x15cd1c=path[_0xacfc('0x19')](_0x2590f0,_0x2fb7a7);if(fs[_0xacfc('0x20')](_0x5ed1b7)){_0x213cca[_0xacfc('0x21')]=_0xacfc('0x22');_0x49be8e[_0xacfc('0x23')][_0xacfc('0x24')]=[{'filename':_0x56e606,'path':_0x5ed1b7}];_0x49be8e[_0xacfc('0x23')][_0xacfc('0x25')]=util[_0xacfc('0x10')](_0xacfc('0x26'),JSON['stringify'](_0x213cca,null,0x2));}else if(fs[_0xacfc('0x20')](_0x15cd1c)){_0x213cca['status']=_0xacfc('0x22');_0x49be8e[_0xacfc('0x23')][_0xacfc('0x24')]=[{'filename':_0x2fb7a7,'path':_0x15cd1c}];}else{_0x49be8e[_0xacfc('0x23')][_0xacfc('0x25')]=_0xacfc('0x27');if(!_0x23c2a0[_0xacfc('0x28')]){_0x52bf19=![];logger[_0xacfc('0x29')](_0xacfc('0x2a'));}}if(_0x52bf19){return client[_0xacfc('0x2b')](_0xacfc('0x2c'),_0x49be8e)[_0xacfc('0x2d')](function(_0x287f25){if(_0x287f25[_0xacfc('0x2e')]){return logger[_0xacfc('0x2e')](_0xacfc('0x2f'),JSON['stringify'](_0x287f25));}return logger['info']('email\x20sent');})[_0xacfc('0x30')](function(_0x310fd9){return logger[_0xacfc('0x2e')]('error\x20mail',JSON[_0xacfc('0x31')](_0x310fd9));});}};}function handleError(){return function(_0x27be3a){return logger[_0xacfc('0x2e')](JSON[_0xacfc('0x31')](_0x27be3a));};}function handleResult(_0x41de71){return function(_0x5b4f17){logger['info'](_0xacfc('0x32'),JSON[_0xacfc('0x31')](_0x5b4f17));if(_0x41de71['MailAccount']&&_0x41de71['MailAccount'][_0xacfc('0x12')]&&!_['isNil'](_0x41de71[_0xacfc('0xe')])){setTimeout(handleSendEmail(_0x41de71,_0x5b4f17),0x3c*0x3e8);}};}function handleJob(_0x2f99b1){return function(){try{if(_[_0xacfc('0x33')](_0x2f99b1['subtractNumber'])){return logger[_0xacfc('0x29')](_0xacfc('0x34'));}if(_[_0xacfc('0x33')](_0x2f99b1['subtractUnit'])){return logger[_0xacfc('0x29')]('subtractUnit\x20null\x20or\x20undefined');}var _0x8fab={'startDate':moment()['subtract'](_0x2f99b1[_0xacfc('0x17')],_0x2f99b1[_0xacfc('0x18')])[_0xacfc('0x10')](_0xacfc('0x35')),'endDate':moment()[_0xacfc('0x10')](_0xacfc('0x35')),'type':_0xacfc('0x36'),'output':_0x2f99b1[_0xacfc('0x37')],'name':_0x2f99b1[_0xacfc('0x16')]};if(!_['isNil'](_0x2f99b1[_0xacfc('0x38')])){logger[_0xacfc('0x29')]('exec\x20defaul\x20report\x20id:%s',_0x2f99b1[_0xacfc('0x38')]);return analyticDefaultReportController['runReport']({'id':_0x2f99b1[_0xacfc('0x38')]},_0x8fab)[_0xacfc('0x2d')](handleResult(_0x2f99b1))['catch'](handleError());}if(!_[_0xacfc('0x33')](_0x2f99b1[_0xacfc('0x39')])){logger[_0xacfc('0x29')](_0xacfc('0x3a'),_0x2f99b1[_0xacfc('0x39')]);return analyticCustomReportController[_0xacfc('0x3b')]({'id':_0x2f99b1[_0xacfc('0x39')]},_0x8fab)[_0xacfc('0x2d')](handleResult(_0x2f99b1))[_0xacfc('0x30')](handleError());}}catch(_0x46087f){logger[_0xacfc('0x2e')](JSON[_0xacfc('0x31')](_0x46087f));}return logger[_0xacfc('0x29')](_0xacfc('0x3c'));};}function getJobs(_0x555442){var _0x283fe2={};if(_0x555442){_0x283fe2['id']=_0x555442;}return db[_0xacfc('0x3d')]['findAll']({'where':_0x283fe2,'include':[{'model':db[_0xacfc('0x11')],'attributes':['id',_0xacfc('0x16'),_0xacfc('0xe')],'include':[{'model':db['MailServerOut'],'as':_0xacfc('0x12'),'include':[{'model':db[_0xacfc('0x3e')],'as':_0xacfc('0x3e')}]}]}]})[_0xacfc('0x2d')](function(_0x1adbb4){var _0x36c610=_['keys'](manager[_0xacfc('0x3f')]);var _0x4af54f=_['map'](_0x1adbb4,function(_0x19907b){return _0x19907b['id'][_0xacfc('0x40')]();});var _0x506517=_[_0xacfc('0x41')](_0x1adbb4,function(_0x53ecf2){return _0x53ecf2['id'][_0xacfc('0x40')]();});var _0x3c1e31=_0x555442?_0x4af54f:_['difference'](_0x4af54f,_0x36c610);var _0xf78c60=_[_0xacfc('0x42')](_0x4af54f,_0x36c610);var _0x4ffe68=_[_0xacfc('0x43')](_0x36c610,_0x4af54f);var _0x182486;var _0x1503e9;for(_0x182486=0x0;_0x182486<_0x4ffe68[_0xacfc('0x44')]&&!_0x555442;_0x182486+=0x1){_0x1503e9=_0x4ffe68[_0x182486][_0xacfc('0x40')]();if(manager[_0xacfc('0x45')](_0x1503e9)){manager[_0xacfc('0x46')](_0x1503e9);manager[_0xacfc('0x47')](_0x1503e9);logger[_0xacfc('0x29')](_0xacfc('0x48'),_0x1503e9);}}logger[_0xacfc('0x29')](_0xacfc('0x49'),JSON[_0xacfc('0x31')](_0x3c1e31));for(_0x182486=0x0;_0x182486<_0x3c1e31['length'];_0x182486+=0x1){_0x1503e9=_0x3c1e31[_0x182486][_0xacfc('0x40')]();logger[_0xacfc('0x29')](_0xacfc('0x4a'),_0x1503e9);if(_0x555442){logger[_0xacfc('0x29')](_0xacfc('0x4b'),_0x555442);logger['info'](JSON[_0xacfc('0x31')](_0x506517[_0x1503e9]));BPromise[_0xacfc('0x4c')]()['then'](handleJob(_0x506517[_0x1503e9]));logger[_0xacfc('0x29')](_0xacfc('0x4d'),_0x506517[_0x1503e9][_0xacfc('0x16')],_0x506517[_0x1503e9]['cron']);}else if(_0x506517[_0x1503e9]['cron']&&_0x506517[_0x1503e9][_0xacfc('0x4e')]&&moment()[_0xacfc('0x4f')](_0x506517[_0x1503e9][_0xacfc('0x50')],_0x506517[_0x1503e9]['endAt'])){manager[_0xacfc('0x51')](_0x1503e9,_0x506517[_0x1503e9][_0xacfc('0x52')],handleJob(_0x506517[_0x1503e9]));manager['start'](_0x1503e9);logger[_0xacfc('0x29')]('add\x20cron',_0x506517[_0x1503e9][_0xacfc('0x16')],_0x506517[_0x1503e9][_0xacfc('0x52')]);}else if(manager['exists'](_0x1503e9)){manager[_0xacfc('0x46')](_0x1503e9);manager[_0xacfc('0x47')](_0x1503e9);logger[_0xacfc('0x29')]('stop\x20cron',_0x506517[_0x1503e9]['name'],_0x506517[_0x1503e9][_0xacfc('0x52')]);}}for(_0x182486=0x0,_0x1503e9;_0x182486<_0xf78c60['length']&&!_0x555442;_0x182486+=0x1){_0x1503e9=_0xf78c60[_0x182486]['toString']();if(manager[_0xacfc('0x45')](_0x1503e9)){if(_0x506517[_0x1503e9][_0xacfc('0x52')]&&_0x506517[_0x1503e9][_0xacfc('0x4e')]&&moment()['isBetween'](_0x506517[_0x1503e9]['startAt'],_0x506517[_0x1503e9][_0xacfc('0x53')])){manager[_0xacfc('0x54')](_0x1503e9,_0x506517[_0x1503e9][_0xacfc('0x52')],handleJob(_0x506517[_0x1503e9]));logger[_0xacfc('0x29')](_0xacfc('0x55'),_0x506517[_0x1503e9]['name'],_0x506517[_0x1503e9][_0xacfc('0x52')]);}else{manager[_0xacfc('0x46')](_0x1503e9);manager[_0xacfc('0x47')](_0x1503e9);logger['info']('stop\x20cron',_0x506517[_0x1503e9][_0xacfc('0x16')],_0x506517[_0x1503e9][_0xacfc('0x52')]);}}}})['catch'](function(_0x436625){logger['error'](JSON[_0xacfc('0x31')](_0x436625));});}exports['run']=function(_0x21a5d0){return getJobs(_0x21a5d0);};exports[_0xacfc('0x56')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 8f38b63..5e00d5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffe1=['sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','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\x20Analysis\x20not\x20requested','findOne','Neutral','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','SequelizeValidationError','start','lodash','aws-sdk','util','../../mysqldb','transcribe','TranscribeService','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','length','results','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId'];(function(_0x261be8,_0x453c74){var _0x428dcd=function(_0x3e9c2d){while(--_0x3e9c2d){_0x261be8['push'](_0x261be8['shift']());}};_0x428dcd(++_0x453c74);}(_0xffe1,0x187));var _0x1ffe=function(_0x55591e,_0x3a032d){_0x55591e=_0x55591e-0x0;var _0x5475eb=_0xffe1[_0x55591e];return _0x5475eb;};var _=require(_0x1ffe('0x0'));var AWS=require(_0x1ffe('0x1'));var rp=require('request-promise');var util=require(_0x1ffe('0x2'));var BPromise=require('bluebird');var db=require(_0x1ffe('0x3'))['db'];var logger=require('../../config/logger')(_0x1ffe('0x4'));function getTranscriptionJob(_0x15e0d1,_0x394f56,_0x16af19,_0x33623a){return new Promise(function(_0x378bbc,_0xb5517d){var _0x37df04=new AWS[(_0x1ffe('0x5'))]({'accessKeyId':_0x394f56,'secretAccessKey':_0x15e0d1,'region':_0x16af19});_0x37df04['getTranscriptionJob']({'TranscriptionJobName':_0x33623a},function(_0x1c6bdb,_0x4c125e){if(_0x1c6bdb){return _0xb5517d(_0x1c6bdb);}else{return _0x378bbc(_0x4c125e);}});});}function sentiment(_0x3a2a88,_0x5cb212,_0x29f784,_0x5b21eb,_0x3acf97){return new Promise(function(_0x1fc0b9,_0x51be1e){var _0x45bfb9=new AWS[(_0x1ffe('0x6'))]({'accessKeyId':_0x5cb212,'secretAccessKey':_0x3a2a88,'region':_0x29f784});_0x45bfb9[_0x1ffe('0x7')]({'Text':_0x5b21eb,'LanguageCode':_0x3acf97[_0x1ffe('0x8')](0x0,0x2)},function(_0x33b02b,_0x280dfe){if(_0x33b02b){return _0x51be1e(_0x33b02b);}else{return _0x1fc0b9(_0x280dfe);}});});}function checkTranscribeJob(_0x4d8280,_0x5ebb12,_0x3b925b){var _0x32c382;return new BPromise(function(_0x4669e4,_0x2e585f){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0xb'),_0x4d8280['id'],_0x4d8280['transcribeName']));return getTranscriptionJob(_0x3b925b[_0x1ffe('0xc')],_0x3b925b[_0x1ffe('0xd')],_0x5ebb12[_0x1ffe('0xe')],_0x4d8280[_0x1ffe('0xf')])[_0x1ffe('0x10')](function(_0x45459f){logger[_0x1ffe('0x9')](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x4d8280['id'],_0x4d8280['transcribeName'],_0x45459f[_0x1ffe('0x11')]['TranscriptionJobStatus']));if(!_0x4d8280[_0x1ffe('0x12')]){switch(_0x45459f[_0x1ffe('0x11')][_0x1ffe('0x13')]){case _0x1ffe('0x14'):var _0x1cc248={'transcribeStatus':_0x45459f['TranscriptionJob'][_0x1ffe('0x13')],'fileUri':_0x45459f[_0x1ffe('0x11')][_0x1ffe('0x15')][_0x1ffe('0x16')]};logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x17'),_0x4d8280['id']));return rp({'uri':_0x45459f[_0x1ffe('0x11')][_0x1ffe('0x15')]['TranscriptFileUri'],'json':!![]})['then'](function(_0x161c9e){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x18'),_0x4d8280['id']));if(_0x161c9e&&_0x161c9e['results']&&_0x161c9e['results'][_0x1ffe('0x19')]&&_0x161c9e['results']['transcripts'][_0x1ffe('0x1a')]){_0x1cc248[_0x1ffe('0x12')]='';for(var _0x5215db=0x0;_0x5215db<_0x161c9e['results']['transcripts'][_0x1ffe('0x1a')];_0x5215db++){_0x1cc248[_0x1ffe('0x12')]+=_0x161c9e[_0x1ffe('0x1b')][_0x1ffe('0x19')][_0x5215db]['transcript']+'';}}return _0x4d8280[_0x1ffe('0x1c')](_0x1cc248);})['then'](function(){logger[_0x1ffe('0x9')](util['format'](_0x1ffe('0x1d'),_0x4d8280['id']));if(!_0x4d8280[_0x1ffe('0x1e')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5ebb12[_0x1ffe('0x21')]||!_0x5ebb12[_0x1ffe('0x22')]||!_0x5ebb12[_0x1ffe('0x23')]||!_0x5ebb12[_0x1ffe('0x24')]||!_0x5ebb12[_0x1ffe('0x25')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x26'));}if(!_0x1cc248[_0x1ffe('0x12')]){throw new Error(_0x1ffe('0x27'));}if(_0x5ebb12[_0x1ffe('0x22')]===_0x3b925b['id']){return _0x3b925b;}else{return db[_0x1ffe('0x28')]['findOne']({'where':{'id':_settings[_0x1ffe('0x22')]}});}})[_0x1ffe('0x10')](function(_0x1bc50b){if(!_0x1bc50b){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x29'));}if(!_0x1bc50b[_0x1ffe('0xc')]||!_0x1bc50b[_0x1ffe('0xd')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x2a'));}_0x32c382=_0x1bc50b;logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x2b'),_0x4d8280['id']));return sentiment(_0x32c382[_0x1ffe('0xc')],_0x32c382['data2'],_0x5ebb12[_0x1ffe('0x23')],_0x1cc248[_0x1ffe('0x12')],_0x5ebb12['language']);})['then'](function(_0x553aec){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x2c'),_0x4d8280['id']));return _0x4d8280['update']({'sentiment':_0x553aec[_0x1ffe('0x2d')],'sPositive':_0x553aec[_0x1ffe('0x2e')][_0x1ffe('0x2f')],'sNegative':_0x553aec[_0x1ffe('0x2e')][_0x1ffe('0x30')],'sMixed':_0x553aec[_0x1ffe('0x2e')][_0x1ffe('0x31')],'sNeutral':_0x553aec[_0x1ffe('0x2e')]['Neutral']});})[_0x1ffe('0x10')](function(){logger[_0x1ffe('0x9')](util['format'](_0x1ffe('0x1d'),_0x4d8280['id']));_0x4669e4();});case _0x1ffe('0x32'):return _0x4d8280[_0x1ffe('0x1c')]({'transcribeStatus':_0x1ffe('0x32'),'failureReason':_0x45459f[_0x1ffe('0x11')]['FailureReason']})[_0x1ffe('0x10')](function(){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x1d'),_0x4d8280['id']));_0x4669e4();});default:logger[_0x1ffe('0x9')](util['format'](_0x1ffe('0x33'),_0x4d8280['id']));break;}}else{return BPromise[_0x1ffe('0x34')]()[_0x1ffe('0x10')](function(){if(!_0x4d8280[_0x1ffe('0x1e')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x35'));}if(!_0x5ebb12[_0x1ffe('0x21')]||!_0x5ebb12[_0x1ffe('0x22')]||!_0x5ebb12[_0x1ffe('0x23')]||!_0x5ebb12[_0x1ffe('0x24')]||!_0x5ebb12[_0x1ffe('0x25')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x26'));}if(!_0x4d8280[_0x1ffe('0x12')]){throw new Error(_0x1ffe('0x27'));}if(_0x5ebb12[_0x1ffe('0x22')]===_0x3b925b['id']){return _0x3b925b;}else{return db[_0x1ffe('0x28')][_0x1ffe('0x36')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x1ffe('0x10')](function(_0x373ee2){if(!_0x373ee2){throw new db[(_0x1ffe('0x1f'))]['ValidationError'](_0x1ffe('0x29'));}if(!_0x373ee2[_0x1ffe('0xc')]||!_0x373ee2[_0x1ffe('0xd')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x2a'));}_0x32c382=_0x373ee2;logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x2b'),_0x4d8280['id']));return sentiment(_0x32c382[_0x1ffe('0xc')],_0x32c382['data2'],_0x5ebb12[_0x1ffe('0x23')],_0x4d8280[_0x1ffe('0x12')],_0x5ebb12[_0x1ffe('0x24')]);})[_0x1ffe('0x10')](function(_0x4546cd){logger[_0x1ffe('0x9')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x4d8280['id']));return _0x4d8280[_0x1ffe('0x1c')]({'sentiment':_0x4546cd[_0x1ffe('0x2d')],'sPositive':_0x4546cd[_0x1ffe('0x2e')][_0x1ffe('0x2f')],'sNegative':_0x4546cd[_0x1ffe('0x2e')]['Negative'],'sMixed':_0x4546cd['SentimentScore'][_0x1ffe('0x31')],'sNeutral':_0x4546cd[_0x1ffe('0x2e')][_0x1ffe('0x37')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x1d'),_0x4d8280['id']));_0x4669e4();});}})[_0x1ffe('0x38')](function(_0x258a79){if(_0x258a79){if(!_0x258a79[_0x1ffe('0x39')]||_0x258a79[_0x1ffe('0x39')]!=='SequelizeValidationError'){logger[_0x1ffe('0x3a')](util['format'](_0x1ffe('0x3b'),_0x4d8280['id']),util[_0x1ffe('0x3c')](_0x258a79,{'showHidden':![],'depth':null}));}}_0x4669e4();});});}function checkTranscribe(){var _0x2757b8;var _0x3c08fe;var _0x306238;return db[_0x1ffe('0x3d')][_0x1ffe('0x3e')]({'where':{'transcribeStatus':_0x1ffe('0x3f')}})[_0x1ffe('0x10')](function(_0x4c4134){if(!_0x4c4134||!_0x4c4134['length']){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))]('No\x20transcribe\x20job\x20to\x20check');}_0x2757b8=_0x4c4134;return db[_0x1ffe('0x40')][_0x1ffe('0x36')]({'where':{'id':0x1}});})[_0x1ffe('0x10')](function(_0x49e8f2){if(!_0x49e8f2){throw new db['Sequelize'][(_0x1ffe('0x20'))](_0x1ffe('0x41'));}_0x3c08fe=_0x49e8f2;if(!_0x3c08fe['transcribe']||!_0x3c08fe['transcribeAccountId']||!_0x3c08fe[_0x1ffe('0xe')]||!_0x3c08fe['language']||!_0x3c08fe[_0x1ffe('0x25')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))]('Transcribe\x20not\x20configured');}return db[_0x1ffe('0x28')][_0x1ffe('0x36')]({'where':{'id':_0x3c08fe[_0x1ffe('0x42')]}});})[_0x1ffe('0x10')](function(_0x319e6b){if(!_0x319e6b){throw new db[(_0x1ffe('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x319e6b[_0x1ffe('0xc')]||!_0x319e6b[_0x1ffe('0xd')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x2a'));}_0x306238=_0x319e6b;var _0x4f96b0=[];_0x2757b8[_0x1ffe('0x43')](function(_0x144165){_0x4f96b0[_0x1ffe('0x44')](checkTranscribeJob(_0x144165,_0x3c08fe,_0x306238));});return BPromise['all'](_0x4f96b0);})[_0x1ffe('0x38')](function(_0x2c4fc2){if(_0x2c4fc2){if(!_0x2c4fc2[_0x1ffe('0x39')]||_0x2c4fc2[_0x1ffe('0x39')]!==_0x1ffe('0x45')){logger[_0x1ffe('0x3a')](util['inspect'](_0x2c4fc2,{'showHidden':![],'depth':null}));}}});}exports[_0x1ffe('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xc7ea=['resolve','tempSentiment','sentiment','Negative','COMPLETED','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','transcribeAccountId','Transcribe\x20not\x20configured','Cloud\x20Provider\x20not\x20configured','forEach','push','all','catch','SequelizeValidationError','inspect','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed'];(function(_0x4d8bf8,_0x1e046e){var _0x2ef669=function(_0x39e0d5){while(--_0x39e0d5){_0x4d8bf8['push'](_0x4d8bf8['shift']());}};_0x2ef669(++_0x1e046e);}(_0xc7ea,0x171));var _0xac7e=function(_0x17ec58,_0x5726fe){_0x17ec58=_0x17ec58-0x0;var _0x3d4a9f=_0xc7ea[_0x17ec58];return _0x3d4a9f;};var _=require(_0xac7e('0x0'));var AWS=require(_0xac7e('0x1'));var rp=require('request-promise');var util=require(_0xac7e('0x2'));var BPromise=require(_0xac7e('0x3'));var db=require(_0xac7e('0x4'))['db'];var logger=require(_0xac7e('0x5'))('transcribe');function getTranscriptionJob(_0x134a3d,_0x39bf60,_0x1c15cf,_0x3ca05f){return new Promise(function(_0x26b1c5,_0x45e73f){var _0x447bfe=new AWS[(_0xac7e('0x6'))]({'accessKeyId':_0x39bf60,'secretAccessKey':_0x134a3d,'region':_0x1c15cf});_0x447bfe[_0xac7e('0x7')]({'TranscriptionJobName':_0x3ca05f},function(_0x1cb874,_0x4d83fb){if(_0x1cb874){return _0x45e73f(_0x1cb874);}else{return _0x26b1c5(_0x4d83fb);}});});}function sentiment(_0x114e82,_0x446f88,_0x2efbf4,_0x173b59,_0x39d2e3){return new Promise(function(_0x260889,_0x10873d){var _0x240869=new AWS[(_0xac7e('0x8'))]({'accessKeyId':_0x446f88,'secretAccessKey':_0x114e82,'region':_0x2efbf4});_0x240869[_0xac7e('0x9')]({'Text':_0x173b59,'LanguageCode':_0x39d2e3[_0xac7e('0xa')](0x0,0x2)},function(_0xe9d96a,_0x4efc1d){if(_0xe9d96a){return _0x10873d(_0xe9d96a);}else{return _0x260889(_0x4efc1d);}});});}function checkTranscribeJob(_0x9cd7c,_0x13e126,_0x5d4537){var _0x617cf9;return new BPromise(function(_0x24d5e9,_0x37839d){logger[_0xac7e('0xb')](util[_0xac7e('0xc')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x9cd7c['id'],_0x9cd7c[_0xac7e('0xd')]));return getTranscriptionJob(_0x5d4537[_0xac7e('0xe')],_0x5d4537[_0xac7e('0xf')],_0x13e126[_0xac7e('0x10')],_0x9cd7c[_0xac7e('0xd')])[_0xac7e('0x11')](function(_0x7ee114){logger[_0xac7e('0xb')](util['format'](_0xac7e('0x12'),_0x9cd7c['id'],_0x9cd7c[_0xac7e('0xd')],_0x7ee114[_0xac7e('0x13')][_0xac7e('0x14')]));if(!_0x9cd7c[_0xac7e('0x15')]){switch(_0x7ee114['TranscriptionJob'][_0xac7e('0x14')]){case'COMPLETED':var _0xba3d01={'transcribeStatus':_0x7ee114['TranscriptionJob'][_0xac7e('0x14')],'fileUri':_0x7ee114[_0xac7e('0x13')][_0xac7e('0x16')][_0xac7e('0x17')]};logger[_0xac7e('0xb')](util[_0xac7e('0xc')]('[RECORDING:%d]\x20Get\x20transcript',_0x9cd7c['id']));return rp({'uri':_0x7ee114[_0xac7e('0x13')][_0xac7e('0x16')]['TranscriptFileUri'],'json':!![]})[_0xac7e('0x11')](function(_0x2ebc78){logger[_0xac7e('0xb')](util[_0xac7e('0xc')](_0xac7e('0x18'),_0x9cd7c['id']));if(_0x2ebc78&&_0x2ebc78[_0xac7e('0x19')]&&_0x2ebc78[_0xac7e('0x19')][_0xac7e('0x1a')]&&_0x2ebc78[_0xac7e('0x19')][_0xac7e('0x1a')][_0xac7e('0x1b')]){_0xba3d01['fileText']='';for(var _0x57c945=0x0;_0x57c945<_0x2ebc78[_0xac7e('0x19')][_0xac7e('0x1a')][_0xac7e('0x1b')];_0x57c945++){_0xba3d01['fileText']+=_0x2ebc78[_0xac7e('0x19')][_0xac7e('0x1a')][_0x57c945][_0xac7e('0x1c')]+'';}}return _0x9cd7c[_0xac7e('0x1d')](_0xba3d01);})['then'](function(){logger['info'](util[_0xac7e('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x9cd7c['id']));if(!_0x9cd7c['tempSentiment']){throw new db[(_0xac7e('0x1e'))][(_0xac7e('0x1f'))](_0xac7e('0x20'));}if(!_0x13e126['sentiment']||!_0x13e126[_0xac7e('0x21')]||!_0x13e126[_0xac7e('0x22')]||!_0x13e126[_0xac7e('0x23')]||!_0x13e126[_0xac7e('0x24')]){throw new db['Sequelize'][(_0xac7e('0x1f'))](_0xac7e('0x25'));}if(!_0xba3d01[_0xac7e('0x15')]){throw new Error('Transcript\x20not\x20available');}if(_0x13e126[_0xac7e('0x21')]===_0x5d4537['id']){return _0x5d4537;}else{return db[_0xac7e('0x26')][_0xac7e('0x27')]({'where':{'id':_settings[_0xac7e('0x21')]}});}})['then'](function(_0x282a26){if(!_0x282a26){throw new db['Sequelize'][(_0xac7e('0x1f'))](_0xac7e('0x28'));}if(!_0x282a26[_0xac7e('0xe')]||!_0x282a26['data2']){throw new db[(_0xac7e('0x1e'))][(_0xac7e('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x617cf9=_0x282a26;logger['info'](util[_0xac7e('0xc')](_0xac7e('0x29'),_0x9cd7c['id']));return sentiment(_0x617cf9[_0xac7e('0xe')],_0x617cf9[_0xac7e('0xf')],_0x13e126[_0xac7e('0x22')],_0xba3d01[_0xac7e('0x15')],_0x13e126[_0xac7e('0x23')]);})[_0xac7e('0x11')](function(_0x38bfb1){logger['info'](util[_0xac7e('0xc')](_0xac7e('0x2a'),_0x9cd7c['id']));return _0x9cd7c[_0xac7e('0x1d')]({'sentiment':_0x38bfb1[_0xac7e('0x2b')],'sPositive':_0x38bfb1[_0xac7e('0x2c')][_0xac7e('0x2d')],'sNegative':_0x38bfb1['SentimentScore']['Negative'],'sMixed':_0x38bfb1[_0xac7e('0x2c')][_0xac7e('0x2e')],'sNeutral':_0x38bfb1[_0xac7e('0x2c')][_0xac7e('0x2f')]});})[_0xac7e('0x11')](function(){logger[_0xac7e('0xb')](util[_0xac7e('0xc')](_0xac7e('0x30'),_0x9cd7c['id']));_0x24d5e9();});case _0xac7e('0x31'):return _0x9cd7c['update']({'transcribeStatus':_0xac7e('0x31'),'failureReason':_0x7ee114[_0xac7e('0x13')]['FailureReason']})[_0xac7e('0x11')](function(){logger[_0xac7e('0xb')](util['format'](_0xac7e('0x30'),_0x9cd7c['id']));_0x24d5e9();});default:logger[_0xac7e('0xb')](util[_0xac7e('0xc')](_0xac7e('0x32'),_0x9cd7c['id']));break;}}else{return BPromise[_0xac7e('0x33')]()[_0xac7e('0x11')](function(){if(!_0x9cd7c[_0xac7e('0x34')]){throw new db[(_0xac7e('0x1e'))]['ValidationError'](_0xac7e('0x20'));}if(!_0x13e126[_0xac7e('0x35')]||!_0x13e126['sentimentAccountId']||!_0x13e126[_0xac7e('0x22')]||!_0x13e126[_0xac7e('0x23')]||!_0x13e126[_0xac7e('0x24')]){throw new db['Sequelize']['ValidationError'](_0xac7e('0x25'));}if(!_0x9cd7c[_0xac7e('0x15')]){throw new Error('Transcript\x20not\x20available');}if(_0x13e126[_0xac7e('0x21')]===_0x5d4537['id']){return _0x5d4537;}else{return db[_0xac7e('0x26')][_0xac7e('0x27')]({'where':{'id':_settings[_0xac7e('0x21')]}});}})[_0xac7e('0x11')](function(_0x21e628){if(!_0x21e628){throw new db[(_0xac7e('0x1e'))][(_0xac7e('0x1f'))](_0xac7e('0x28'));}if(!_0x21e628[_0xac7e('0xe')]||!_0x21e628[_0xac7e('0xf')]){throw new db[(_0xac7e('0x1e'))][(_0xac7e('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x617cf9=_0x21e628;logger[_0xac7e('0xb')](util[_0xac7e('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x9cd7c['id']));return sentiment(_0x617cf9[_0xac7e('0xe')],_0x617cf9[_0xac7e('0xf')],_0x13e126[_0xac7e('0x22')],_0x9cd7c[_0xac7e('0x15')],_0x13e126['language']);})[_0xac7e('0x11')](function(_0xc23c3e){logger['info'](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x9cd7c['id']));return _0x9cd7c[_0xac7e('0x1d')]({'sentiment':_0xc23c3e['Sentiment'],'sPositive':_0xc23c3e[_0xac7e('0x2c')][_0xac7e('0x2d')],'sNegative':_0xc23c3e['SentimentScore'][_0xac7e('0x36')],'sMixed':_0xc23c3e[_0xac7e('0x2c')][_0xac7e('0x2e')],'sNeutral':_0xc23c3e[_0xac7e('0x2c')][_0xac7e('0x2f')],'transcribeStatus':_0xac7e('0x37')});})['then'](function(){logger[_0xac7e('0xb')](util[_0xac7e('0xc')](_0xac7e('0x30'),_0x9cd7c['id']));_0x24d5e9();});}})['catch'](function(_0x227673){if(_0x227673){if(!_0x227673[_0xac7e('0x38')]||_0x227673['name']!=='SequelizeValidationError'){logger['error'](util['format'](_0xac7e('0x39'),_0x9cd7c['id']),util['inspect'](_0x227673,{'showHidden':![],'depth':null}));}}_0x24d5e9();});});}function checkTranscribe(){var _0x47ae4e;var _0x5b3929;var _0x4cd8f6;return db[_0xac7e('0x3a')]['findAll']({'where':{'transcribeStatus':_0xac7e('0x3b')}})[_0xac7e('0x11')](function(_0x2b9ffb){if(!_0x2b9ffb||!_0x2b9ffb['length']){throw new db['Sequelize'][(_0xac7e('0x1f'))]('No\x20transcribe\x20job\x20to\x20check');}_0x47ae4e=_0x2b9ffb;return db['Setting'][_0xac7e('0x27')]({'where':{'id':0x1}});})[_0xac7e('0x11')](function(_0x319429){if(!_0x319429){throw new db['Sequelize']['ValidationError']('Settings\x20not\x20available');}_0x5b3929=_0x319429;if(!_0x5b3929['transcribe']||!_0x5b3929[_0xac7e('0x3c')]||!_0x5b3929[_0xac7e('0x10')]||!_0x5b3929[_0xac7e('0x23')]||!_0x5b3929[_0xac7e('0x24')]){throw new db[(_0xac7e('0x1e'))][(_0xac7e('0x1f'))](_0xac7e('0x3d'));}return db[_0xac7e('0x26')][_0xac7e('0x27')]({'where':{'id':_0x5b3929['transcribeAccountId']}});})[_0xac7e('0x11')](function(_0x188f59){if(!_0x188f59){throw new db[(_0xac7e('0x1e'))]['ValidationError'](_0xac7e('0x28'));}if(!_0x188f59[_0xac7e('0xe')]||!_0x188f59[_0xac7e('0xf')]){throw new db[(_0xac7e('0x1e'))][(_0xac7e('0x1f'))](_0xac7e('0x3e'));}_0x4cd8f6=_0x188f59;var _0x43cad3=[];_0x47ae4e[_0xac7e('0x3f')](function(_0xbbef){_0x43cad3[_0xac7e('0x40')](checkTranscribeJob(_0xbbef,_0x5b3929,_0x4cd8f6));});return BPromise[_0xac7e('0x41')](_0x43cad3);})[_0xac7e('0x42')](function(_0x482f27){if(_0x482f27){if(!_0x482f27[_0xac7e('0x38')]||_0x482f27['name']!==_0xac7e('0x43')){logger['error'](util[_0xac7e('0x44')](_0x482f27,{'showHidden':![],'depth':null}));}}});}exports[_0xac7e('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index bfc7192..fc3698e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x802d=['inspect','start','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','lastMsgAt','subtract','hours','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','update','system','format','YYYY-MM-DD\x20HH:mm:ss','then','join','whatsappInteraction:update','catch','error'];(function(_0xd0a847,_0x72562b){var _0x2536ec=function(_0x20e4db){while(--_0x20e4db){_0xd0a847['push'](_0xd0a847['shift']());}};_0x2536ec(++_0x72562b);}(_0x802d,0xb0));var _0xd802=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x802d[_0xf71120];return _0xbe2fd3;};'use strict';var _=require('lodash');var moment=require(_0xd802('0x0'));var Redis=require(_0xd802('0x1'));var util=require(_0xd802('0x2'));var config=require(_0xd802('0x3'));var db=require(_0xd802('0x4'))['db'];var logger=require(_0xd802('0x5'))('schedule');config[_0xd802('0x6')]=_[_0xd802('0x7')](config['redis'],{'host':_0xd802('0x8'),'port':0x18eb});var io=require(_0xd802('0x9'))(new Redis(config[_0xd802('0x6')]));function closeInteractions(){var _0x5f4764=[];return db[_0xd802('0xa')]['findAll']({'raw':!![],'attributes':['id',_0xd802('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xd802('0xc')](0x18,_0xd802('0xd'))}}})['then'](function(_0x48d4ad){if(_0x48d4ad&&_0x48d4ad[_0xd802('0xe')]){_0x5f4764=_[_0xd802('0xf')](_0x48d4ad||[],'id');logger[_0xd802('0x10')](_0xd802('0x11'),_0x5f4764['join']());return db[_0xd802('0xa')][_0xd802('0x12')]({'closeReason':_0xd802('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xd802('0x14')](_0xd802('0x15'))},{'where':{'id':_0x5f4764}});}})[_0xd802('0x16')](function(){if(_0x5f4764&&_0x5f4764[_0xd802('0xe')]){logger[_0xd802('0x10')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x5f4764[_0xd802('0x17')]());for(var _0x239bce=0x0;_0x239bce<_0x5f4764[_0xd802('0xe')];_0x239bce++){io['emit'](_0xd802('0x18'),{'id':_0x5f4764[_0x239bce],'closed':!![]});}}})[_0xd802('0x19')](function(_0x246626){logger[_0xd802('0x1a')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x246626?util[_0xd802('0x1b')](_0x246626,{'showHidden':![],'depth':null}):'');});}exports[_0xd802('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x3b33=['catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','../../config/environment','../../mysqldb','schedule','redis','localhost','socket.io-emitter','findAll','lastMsgAt','hours','then','length','info','WhatsappInteraction','system','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join','emit','whatsappInteraction:update'];(function(_0x24f5da,_0x2f6105){var _0x52e2ef=function(_0x4e4283){while(--_0x4e4283){_0x24f5da['push'](_0x24f5da['shift']());}};_0x52e2ef(++_0x2f6105);}(_0x3b33,0x13c));var _0x33b3=function(_0x21978c,_0x2c5e6f){_0x21978c=_0x21978c-0x0;var _0x20fb79=_0x3b33[_0x21978c];return _0x20fb79;};'use strict';var _=require(_0x33b3('0x0'));var moment=require(_0x33b3('0x1'));var Redis=require(_0x33b3('0x2'));var util=require('util');var config=require(_0x33b3('0x3'));var db=require(_0x33b3('0x4'))['db'];var logger=require('../logger')(_0x33b3('0x5'));config[_0x33b3('0x6')]=_['defaults'](config[_0x33b3('0x6')],{'host':_0x33b3('0x7'),'port':0x18eb});var io=require(_0x33b3('0x8'))(new Redis(config['redis']));function closeInteractions(){var _0x3904f0=[];return db['WhatsappInteraction'][_0x33b3('0x9')]({'raw':!![],'attributes':['id',_0x33b3('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x33b3('0xb'))}}})[_0x33b3('0xc')](function(_0x4a7d76){if(_0x4a7d76&&_0x4a7d76[_0x33b3('0xd')]){_0x3904f0=_['map'](_0x4a7d76||[],'id');logger[_0x33b3('0xe')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x3904f0['join']());return db[_0x33b3('0xf')]['update']({'closeReason':_0x33b3('0x10'),'disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0x33b3('0x11'))},{'where':{'id':_0x3904f0}});}})['then'](function(){if(_0x3904f0&&_0x3904f0[_0x33b3('0xd')]){logger[_0x33b3('0xe')](_0x33b3('0x12'),_0x3904f0[_0x33b3('0x13')]());for(var _0x4384b1=0x0;_0x4384b1<_0x3904f0[_0x33b3('0xd')];_0x4384b1++){io[_0x33b3('0x14')](_0x33b3('0x15'),{'id':_0x3904f0[_0x4384b1],'closed':!![]});}}})[_0x33b3('0x16')](function(_0x48716d){logger['error'](_0x33b3('0x17'),_0x48716d?util[_0x33b3('0x18')](_0x48716d,{'showHidden':![],'depth':null}):'');});}exports[_0x33b3('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 7428807..531b3dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0e4=['bulkCreate','log','CmHopper','finished\x20populating','contacts2','catch','util','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','push','CmContact','destroy','then'];(function(_0x254bb1,_0x1220d3){var _0x5b13f8=function(_0x174b8d){while(--_0x174b8d){_0x254bb1['push'](_0x254bb1['shift']());}};_0x5b13f8(++_0x1220d3);}(_0xb0e4,0xe6));var _0x4b0e=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xb0e4[_0x243b59];return _0x3e1676;};'use strict';var util=require(_0x4b0e('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x4b0e('0x1')+i,'lastName':_0x4b0e('0x2')+i,'phone':0xf879fb460+i,'email':_0x4b0e('0x3')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x4b0e('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x4b0e('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x4b0e('0x1')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x4b0e('0x3')+i+_0x4b0e('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x4b0e('0x6')]({'id':i,'active':![],'scheduledat':Date[_0x4b0e('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0x4b0e('0x7')][_0x4b0e('0x8')]({'where':{}})[_0x4b0e('0x9')](function(){return db[_0x4b0e('0x7')][_0x4b0e('0xa')](contacts);})['then'](function(){console[_0x4b0e('0xb')]('finished\x20populating','contacts1');return db[_0x4b0e('0xc')]['destroy']({'where':{}});})['then'](function(){return db[_0x4b0e('0xc')][_0x4b0e('0xa')](hopper);})[_0x4b0e('0x9')](function(){console[_0x4b0e('0xb')](_0x4b0e('0xd'),'hopper1');return db[_0x4b0e('0x7')][_0x4b0e('0xa')](contacts2);})[_0x4b0e('0x9')](function(){console[_0x4b0e('0xb')](_0x4b0e('0xd'),_0x4b0e('0xe'));return db[_0x4b0e('0xc')][_0x4b0e('0xa')](hopper2);})[_0x4b0e('0x9')](function(){console[_0x4b0e('0xb')](_0x4b0e('0xd'),'hopper2');})[_0x4b0e('0xf')](function(_0x3dcc32){console[_0x4b0e('0xb')](_0x3dcc32);});
\ No newline at end of file
+var _0xf972=['contacts1','CmHopper','hopper1','hopper2','catch','../mysqldb','push','Innocenzo','innocenzo.biondo','@xcally.com','now','Biondo','destroy','then','bulkCreate','log','finished\x20populating'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf972,0x7c));var _0x2f97=function(_0x57a0df,_0x58dfbc){_0x57a0df=_0x57a0df-0x0;var _0x5da734=_0xf972[_0x57a0df];return _0x5da734;};'use strict';var util=require('util');var db=require(_0x2f97('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x2f97('0x1')]({'id':i,'firstName':_0x2f97('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x2f97('0x3')+i+_0x2f97('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x2f97('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x2f97('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2f97('0x5')](),'updatedAt':Date[_0x2f97('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x2f97('0x1')]({'id':i,'firstName':_0x2f97('0x2')+i,'lastName':_0x2f97('0x6')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x2f97('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x2f97('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2f97('0x5')](),'updatedAt':Date[_0x2f97('0x5')]()});}db['CmContact'][_0x2f97('0x7')]({'where':{}})[_0x2f97('0x8')](function(){return db['CmContact'][_0x2f97('0x9')](contacts);})[_0x2f97('0x8')](function(){console[_0x2f97('0xa')](_0x2f97('0xb'),_0x2f97('0xc'));return db[_0x2f97('0xd')][_0x2f97('0x7')]({'where':{}});})[_0x2f97('0x8')](function(){return db[_0x2f97('0xd')][_0x2f97('0x9')](hopper);})['then'](function(){console[_0x2f97('0xa')]('finished\x20populating',_0x2f97('0xe'));return db['CmContact'][_0x2f97('0x9')](contacts2);})[_0x2f97('0x8')](function(){console['log'](_0x2f97('0xb'),'contacts2');return db[_0x2f97('0xd')][_0x2f97('0x9')](hopper2);})[_0x2f97('0x8')](function(){console[_0x2f97('0xa')](_0x2f97('0xb'),_0x2f97('0xf'));})[_0x2f97('0x10')](function(_0x5b0962){console[_0x2f97('0xa')](_0x5b0962);});
\ No newline at end of file
index 57fceee..1119baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb61d=['User','bulkCreate','log','add\x20user','catch','util','../mysqldb','format','%s%s','agent','password','friend','udp','all','yes','actpass','\x22%s\x22\x20<%s>'];(function(_0x26110b,_0x2a1fb2){var _0xd3644e=function(_0x6e596d){while(--_0x6e596d){_0x26110b['push'](_0x26110b['shift']());}};_0xd3644e(++_0x2a1fb2);}(_0xb61d,0xf3));var _0xdb61=function(_0x5bca11,_0x1abc72){_0x5bca11=_0x5bca11-0x0;var _0x2f3b25=_0xb61d[_0x5bca11];return _0x2f3b25;};'use strict';var util=require(_0xdb61('0x0'));var db=require(_0xdb61('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xdb61('0x2')](_0xdb61('0x3'),_0xdb61('0x4'),i),'fullname':util[_0xdb61('0x2')]('%s%s',_0xdb61('0x4'),i),'email':util[_0xdb61('0x2')]('%s%s@xcally.com',_0xdb61('0x4'),i),'role':_0xdb61('0x4'),'password':_0xdb61('0x5'),'internal':0xfa0+i,'type':_0xdb61('0x6'),'transport':[_0xdb61('0x7'),'ws','wss'],'disallow':[_0xdb61('0x8')],'allow':['ulaw'],'defaultuser':util[_0xdb61('0x2')](_0xdb61('0x3'),_0xdb61('0x4'),i),'encryption':_0xdb61('0x9'),'avpf':_0xdb61('0x9'),'force_avp':_0xdb61('0x9'),'icesupport':_0xdb61('0x9'),'dtlsenable':_0xdb61('0x9'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0xdb61('0xa'),'callerid':util[_0xdb61('0x2')](_0xdb61('0xb'),util[_0xdb61('0x2')](_0xdb61('0x3'),_0xdb61('0x4'),i),0xfa0+i)});}db[_0xdb61('0xc')][_0xdb61('0xd')](users)['then'](function(){console[_0xdb61('0xe')](_0xdb61('0xf'));})[_0xdb61('0x10')](function(_0x32fc8d){console['log'](_0x32fc8d);});
\ No newline at end of file
+var _0x234e=['udp','wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','../mysqldb','format','%s%s','agent','%s%s@xcally.com','password','friend'];(function(_0x4b1032,_0x36952e){var _0x5a1d55=function(_0x282e9b){while(--_0x282e9b){_0x4b1032['push'](_0x4b1032['shift']());}};_0x5a1d55(++_0x36952e);}(_0x234e,0xe0));var _0xe234=function(_0x263bc2,_0x3ace27){_0x263bc2=_0x263bc2-0x0;var _0x31cdff=_0x234e[_0x263bc2];return _0x31cdff;};'use strict';var util=require('util');var db=require(_0xe234('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xe234('0x1')](_0xe234('0x2'),'agent',i),'fullname':util[_0xe234('0x1')](_0xe234('0x2'),_0xe234('0x3'),i),'email':util[_0xe234('0x1')](_0xe234('0x4'),'agent',i),'role':_0xe234('0x3'),'password':_0xe234('0x5'),'internal':0xfa0+i,'type':_0xe234('0x6'),'transport':[_0xe234('0x7'),'ws',_0xe234('0x8')],'disallow':[_0xe234('0x9')],'allow':[_0xe234('0xa')],'defaultuser':util[_0xe234('0x1')](_0xe234('0x2'),_0xe234('0x3'),i),'encryption':'yes','avpf':_0xe234('0xb'),'force_avp':'yes','icesupport':_0xe234('0xb'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0xe234('0xc'),'dtlssetup':_0xe234('0xd'),'callerid':util['format'](_0xe234('0xe'),util[_0xe234('0x1')]('%s%s',_0xe234('0x3'),i),0xfa0+i)});}db[_0xe234('0xf')][_0xe234('0x10')](users)[_0xe234('0x11')](function(){console[_0xe234('0x12')](_0xe234('0x13'));})[_0xe234('0x14')](function(_0x4fdc7d){console[_0xe234('0x12')](_0x4fdc7d);});
\ No newline at end of file
index 16add6a..2fead9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['OpenchannelInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','request','remotePort','connectedAt','SocketIO\x20','nsp','address','DISCONNECTED','lodash','../mysqldb','./environment','name','Agents','role','telephone','agent','type','findOne','autoAssociation','VoiceQueues','MailQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','User','where','Campaign','ivr','then','format','%s:queue:%s','handshake','query','userProfileId','ChatInteractions','MailInteraction','MailInteractions','SmsInteractions','OpenchannelInteraction','WhatsappInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueue','getVoiceQueues','getFaxQueues','getSmsQueues','all','length','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove'];(function(_0x290fa6,_0x16d017){var _0x47f1f3=function(_0x2b5eb8){while(--_0x2b5eb8){_0x290fa6['push'](_0x290fa6['shift']());}};_0x47f1f3(++_0x16d017);}(_0xeec6,0x125));var _0x6eec=function(_0x4801a0,_0x252c24){_0x4801a0=_0x4801a0-0x0;var _0x338e26=_0xeec6[_0x4801a0];return _0x338e26;};'use strict';var _=require(_0x6eec('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x6eec('0x1'))['db'];var config=require(_0x6eec('0x2'));var queryQueues={'attributes':['id',_0x6eec('0x3')],'include':[{'as':_0x6eec('0x4'),'model':db['User'],'attributes':['id',_0x6eec('0x3'),_0x6eec('0x5')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x6eec('0x3')],'where':{'role':_0x6eec('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x6eec('0x3')],'where':{'role':_0x6eec('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6eec('0x3'),_0x6eec('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x1205a7,_0x392e0a,_0x422d71){return db['UserProfileSection'][_0x6eec('0x9')]({'where':{'name':_0x1205a7,'userProfileId':_0x392e0a},'raw':!![]})['then'](function(_0x13d892){if(_0x13d892){if(_0x13d892[_0x6eec('0xa')]){switch(_0x1205a7){case _0x6eec('0xb'):case'ChatQueues':case'FaxQueues':case'SmsQueues':case _0x6eec('0xc'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x422d71]['findAll'](queryQueues);case _0x6eec('0xd'):return db[_0x422d71][_0x6eec('0xe')](queryTelephones);case _0x6eec('0xf'):return db[_0x422d71]['findAll'](queryTrunks);case _0x6eec('0x10'):return db[_0x422d71][_0x6eec('0xe')](queryCampaigns);}}else{return db[_0x6eec('0x11')][_0x6eec('0xe')]({'attributes':['resourceId'],'where':{'sectionId':_0x13d892['id']},'raw':!![]})['then'](function(_0x3fb003){if(_0x3fb003){var _0x43947e={'where':{'id':_[_0x6eec('0x12')](_0x3fb003,_0x6eec('0x13'))},'raw':!![]};switch(_0x422d71){case _0x6eec('0x14'):_0x43947e[_0x6eec('0x15')][_0x6eec('0x5')]=_0x6eec('0x6');break;case _0x6eec('0x16'):_0x43947e[_0x6eec('0x15')]['type']=_0x6eec('0x17');break;}return db[_0x422d71][_0x6eec('0xe')](_0x43947e);}else{return[];}});}}else{return[];}})[_0x6eec('0x18')](function(_0x5f3b6d){return _0x5f3b6d;});}function joinOrLeaveQueues(_0x5af05a,_0xd2927c,_0x5f3704,_0x389457){_0x5af05a[_0xd2927c](util[_0x6eec('0x19')](_0x6eec('0x1a'),_0x5f3704,_0x389457[_0x6eec('0x3')]));if(_0x389457[_0x6eec('0x4')]){for(var _0x240030=0x0;_0x240030<_0x389457['Agents']['length'];_0x240030+=0x1){_0x5af05a[_0xd2927c](util['format']('user:%s',_0x389457[_0x6eec('0x4')][_0x240030][_0x6eec('0x3')]));}}}function joinOrLeave(_0x59fcbe,_0x2489c2,_0x4d91d9){var _0x36cd69;if(_0x59fcbe[_0x6eec('0x1b')][_0x6eec('0x1c')]['id']){db['User']['find']({'attributes':['id',_0x6eec('0x3'),'role',_0x6eec('0x1d')],'where':{'id':_0x59fcbe[_0x6eec('0x1b')][_0x6eec('0x1c')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x6eec('0x1e'),'attributes':['id'],'raw':!![]},{'model':db[_0x6eec('0x1f')],'as':_0x6eec('0x20'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x6eec('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x6eec('0x22')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x6eec('0x23'),'attributes':['id'],'raw':!![]}]})[_0x6eec('0x18')](function(_0x4b862c){if(_0x4b862c){_0x36cd69=_0x4b862c;_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')](_0x6eec('0x24'),_0x4b862c[_0x6eec('0x3')]));var _0x1759d2=[];switch(_0x4b862c[_0x6eec('0x5')]){case'admin':_0x59fcbe[_0x2489c2](_0x6eec('0x25'));_0x59fcbe[_0x2489c2](_0x6eec('0x26'));if(queryQueues[_0x6eec('0x27')](_0x6eec('0x28'))){delete queryQueues[_0x6eec('0x28')];}_0x1759d2['push'](db[_0x6eec('0x29')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2b')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2c')]['findAll'](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2d')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2e')]['findAll'](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2f')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db['WhatsappQueue'][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x14')][_0x6eec('0xe')](queryTelephones));_0x1759d2['push'](db[_0x6eec('0x30')][_0x6eec('0xe')](queryTrunks));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x16')]['findAll'](queryCampaigns));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x14')]['findAll'](queryAgents));break;case'user':_0x59fcbe[_0x2489c2]('voice:inbound');_0x59fcbe[_0x2489c2](_0x6eec('0x26'));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xb'),_0x4b862c[_0x6eec('0x1d')],'VoiceQueue'));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x31'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x2b')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x32'),_0x4b862c[_0x6eec('0x1d')],'FaxQueue'));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x33'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x2d')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xc'),_0x4b862c['userProfileId'],_0x6eec('0x2e')));_0x1759d2['push'](getAssociatedResources(_0x6eec('0x34'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x2f')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources('WhatsappQueues',_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x35')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xd'),_0x4b862c['userProfileId'],_0x6eec('0x14')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xf'),_0x4b862c['userProfileId'],_0x6eec('0x30')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x10'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x16')));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x14')][_0x6eec('0xe')](queryAgents));break;case'agent':_0x59fcbe[_0x2489c2](_0x6eec('0x25'));_0x59fcbe[_0x2489c2](_0x6eec('0x26'));_0x1759d2[_0x6eec('0x2a')](_0x4b862c[_0x6eec('0x36')]({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c['getChatQueues']({'attributes':['id','name']}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c[_0x6eec('0x37')]({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c[_0x6eec('0x38')]({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c['getMailQueues']({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2['push'](_0x4b862c['getOpenchannelQueues']({'attributes':['id','name']}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0x6eec('0x39')](_0x1759d2);}})['then'](function(_0x2b9c21){if(_0x2b9c21&&_0x2b9c21[_0x6eec('0x3a')]){for(var _0x3e31cb=0x0;_0x3e31cb<_0x2b9c21[_0x6eec('0x3a')];_0x3e31cb+=0x1){for(var _0x400cf5=0x0;_0x400cf5<_0x2b9c21[_0x3e31cb]['length'];_0x400cf5+=0x1){switch(_0x3e31cb){case 0x0:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3b'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x1:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3c'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x2:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3d'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x3:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3e'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x4:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3f'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x5:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x40'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x6:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x41'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x7:if(_0x36cd69['role']!=='agent')_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')](_0x6eec('0x42'),_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;case 0x8:if(_0x36cd69[_0x6eec('0x5')]!==_0x6eec('0x7'))_0x59fcbe[_0x2489c2](util['format'](_0x6eec('0x43'),_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;case 0x9:if(_0x36cd69[_0x6eec('0x5')]!==_0x6eec('0x7'))_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')](_0x6eec('0x44'),_0x2b9c21[_0x3e31cb][_0x400cf5]['type'],_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;case 0xa:_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')]('user:%s',_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;}}}}})[_0x6eec('0x18')](function(){if(_0x2489c2===_0x6eec('0x45')){var _0x4a2bd2=_[_0x6eec('0x12')](_0x36cd69[_0x6eec('0x1e')],'id');return _0x36cd69[_0x6eec('0x46')](_0x4a2bd2)[_0x6eec('0x18')](function(){for(var _0x4779fd=0x0;_0x4779fd<_0x4a2bd2[_0x6eec('0x3a')];_0x4779fd+=0x1){_0x4d91d9[_0x6eec('0x47')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4a2bd2[_0x4779fd]),'UserId':Number(_0x36cd69['id'])});}});}})['then'](function(){if(_0x2489c2==='leave'){var _0x5700d0=_['map'](_0x36cd69[_0x6eec('0x20')],'id');return _0x36cd69[_0x6eec('0x48')](_0x5700d0)[_0x6eec('0x18')](function(){for(var _0x196af0=0x0;_0x196af0<_0x5700d0[_0x6eec('0x3a')];_0x196af0+=0x1){_0x4d91d9[_0x6eec('0x47')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5700d0[_0x196af0]),'UserId':Number(_0x36cd69['id'])});}});}})['then'](function(){if(_0x2489c2===_0x6eec('0x45')){var _0x1e4515=_[_0x6eec('0x12')](_0x36cd69['FaxInteractions'],'id');return _0x36cd69['removeFaxInteractions'](_0x1e4515)['then'](function(){for(var _0x526bf4=0x0;_0x526bf4<_0x1e4515[_0x6eec('0x3a')];_0x526bf4+=0x1){_0x4d91d9['emit'](_0x6eec('0x49'),{'FaxInteractionId':Number(_0x1e4515[_0x526bf4]),'UserId':Number(_0x36cd69['id'])});}});}})[_0x6eec('0x18')](function(){if(_0x2489c2==='leave'){var _0x172be8=_[_0x6eec('0x12')](_0x36cd69['SmsInteractions'],'id');return _0x36cd69['removeSmsInteractions'](_0x172be8)[_0x6eec('0x18')](function(){for(var _0x3c95fb=0x0;_0x3c95fb<_0x172be8[_0x6eec('0x3a')];_0x3c95fb+=0x1){_0x4d91d9[_0x6eec('0x47')](_0x6eec('0x4a'),{'SmsInteractionId':Number(_0x172be8[_0x3c95fb]),'UserId':Number(_0x36cd69['id'])});}});}})[_0x6eec('0x18')](function(){if(_0x2489c2==='leave'){var _0x3d5882=_[_0x6eec('0x12')](_0x36cd69[_0x6eec('0x4b')],'id');return _0x36cd69[_0x6eec('0x4c')](_0x3d5882)[_0x6eec('0x18')](function(){for(var _0xc87dfb=0x0;_0xc87dfb<_0x3d5882['length'];_0xc87dfb+=0x1){_0x4d91d9[_0x6eec('0x47')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x3d5882[_0xc87dfb]),'UserId':Number(_0x36cd69['id'])});}});}})['then'](function(){if(_0x2489c2===_0x6eec('0x45')){var _0x57d38d=_[_0x6eec('0x12')](_0x36cd69['WhatsappInteractions'],'id');return _0x36cd69[_0x6eec('0x4d')](_0x57d38d)['then'](function(){for(var _0x286c49=0x0;_0x286c49<_0x57d38d[_0x6eec('0x3a')];_0x286c49+=0x1){_0x4d91d9[_0x6eec('0x47')](_0x6eec('0x4e'),{'WhatsappInteractionId':Number(_0x57d38d[_0x286c49]),'UserId':Number(_0x36cd69['id'])});}});}})[_0x6eec('0x4f')](function(_0x2df25f){_0x59fcbe[_0x6eec('0x50')](_0x2df25f);});}}function onDisconnect(_0x4dc248,_0x311e0c){joinOrLeave(_0x4dc248,'leave',_0x311e0c);}function onConnect(_0x2ebb11){joinOrLeave(_0x2ebb11,_0x6eec('0x51'));}exports[_0x6eec('0x52')]=function(_0x2577f7){_0x2577f7['on'](_0x6eec('0x53'),function(_0x567a48){_0x567a48[_0x6eec('0x54')](0x0);_0x567a48['address']=_0x567a48[_0x6eec('0x55')][_0x6eec('0x53')]['remoteAddress']+':'+_0x567a48[_0x6eec('0x55')][_0x6eec('0x53')][_0x6eec('0x56')];_0x567a48[_0x6eec('0x57')]=new Date();_0x567a48[_0x6eec('0x50')]=function(_0x1c86cf){console['log'](_0x6eec('0x58')+_0x567a48[_0x6eec('0x59')]['name']+'['+_0x567a48[_0x6eec('0x5a')]+']',_0x1c86cf);};_0x567a48['on']('disconnect',function(){onDisconnect(_0x567a48,_0x2577f7);_0x567a48[_0x6eec('0x50')](_0x6eec('0x5b'));});onConnect(_0x567a48);_0x567a48[_0x6eec('0x50')]('CONNECTED');});};
\ No newline at end of file
+var _0x5532=['mail','whatsapp','telephone:%s','campaign:%s:%s','leave','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection','setMaxListeners','address','remoteAddress','request','remotePort','connectedAt','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','util','bluebird','./environment','Agents','User','name','agent','type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','Telephones','Trunks','findAll','IvrCampaigns','resourceId','map','where','telephone','Campaign','length','format','user:%s','handshake','query','find','userProfileId','ChatInteractions','MailInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','role','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','MailQueue','WhatsappQueues','Trunk','getVoiceQueues','getMailQueues','getWhatsappQueues','all','voice','chat','fax','sms'];(function(_0x1ac072,_0x5efcc4){var _0x46e3a6=function(_0x5a9071){while(--_0x5a9071){_0x1ac072['push'](_0x1ac072['shift']());}};_0x46e3a6(++_0x5efcc4);}(_0x5532,0x19a));var _0x2553=function(_0x512b6d,_0xa881ac){_0x512b6d=_0x512b6d-0x0;var _0x49dd13=_0x5532[_0x512b6d];return _0x49dd13;};'use strict';var _=require(_0x2553('0x0'));var util=require(_0x2553('0x1'));var BPromise=require(_0x2553('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x2553('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x2553('0x4'),'model':db[_0x2553('0x5')],'attributes':['id',_0x2553('0x6'),'role'],'raw':!![],'where':{'role':_0x2553('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x2553('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0x2553('0x6')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x2553('0x6'),_0x2553('0x8')],'where':{'type':_0x2553('0x9')}};function getAssociatedResources(_0x3360d9,_0xd28dbb,_0x183d20){return db[_0x2553('0xa')][_0x2553('0xb')]({'where':{'name':_0x3360d9,'userProfileId':_0xd28dbb},'raw':!![]})[_0x2553('0xc')](function(_0xf589a5){if(_0xf589a5){if(_0xf589a5['autoAssociation']){switch(_0x3360d9){case _0x2553('0xd'):case _0x2553('0xe'):case _0x2553('0xf'):case'SmsQueues':case _0x2553('0x10'):case _0x2553('0x11'):case'WhatsappQueues':return db[_0x183d20]['findAll'](queryQueues);case _0x2553('0x12'):return db[_0x183d20]['findAll'](queryTelephones);case _0x2553('0x13'):return db[_0x183d20][_0x2553('0x14')](queryTrunks);case _0x2553('0x15'):return db[_0x183d20]['findAll'](queryCampaigns);}}else{return db['UserProfileResource'][_0x2553('0x14')]({'attributes':[_0x2553('0x16')],'where':{'sectionId':_0xf589a5['id']},'raw':!![]})[_0x2553('0xc')](function(_0x77477d){if(_0x77477d){var _0x241dfe={'where':{'id':_[_0x2553('0x17')](_0x77477d,'resourceId')},'raw':!![]};switch(_0x183d20){case _0x2553('0x5'):_0x241dfe[_0x2553('0x18')]['role']=_0x2553('0x19');break;case _0x2553('0x1a'):_0x241dfe['where'][_0x2553('0x8')]=_0x2553('0x9');break;}return db[_0x183d20][_0x2553('0x14')](_0x241dfe);}else{return[];}});}}else{return[];}})[_0x2553('0xc')](function(_0x4970de){return _0x4970de;});}function joinOrLeaveQueues(_0x4abc05,_0x5b875b,_0x3eba0d,_0x15ced9){_0x4abc05[_0x5b875b](util['format']('%s:queue:%s',_0x3eba0d,_0x15ced9[_0x2553('0x6')]));if(_0x15ced9[_0x2553('0x4')]){for(var _0x36f27c=0x0;_0x36f27c<_0x15ced9['Agents'][_0x2553('0x1b')];_0x36f27c+=0x1){_0x4abc05[_0x5b875b](util[_0x2553('0x1c')](_0x2553('0x1d'),_0x15ced9['Agents'][_0x36f27c][_0x2553('0x6')]));}}}function joinOrLeave(_0x3d7445,_0xe152e1,_0xc91f02){var _0x49d4d1;if(_0x3d7445[_0x2553('0x1e')][_0x2553('0x1f')]['id']){db['User'][_0x2553('0x20')]({'attributes':['id',_0x2553('0x6'),'role',_0x2553('0x21')],'where':{'id':_0x3d7445[_0x2553('0x1e')][_0x2553('0x1f')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x2553('0x22'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x2553('0x23'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x2553('0x24')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x2553('0x25')],'as':_0x2553('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x2553('0x27')],'as':_0x2553('0x28'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x19fec3){if(_0x19fec3){_0x49d4d1=_0x19fec3;_0x3d7445[_0xe152e1](util[_0x2553('0x1c')](_0x2553('0x1d'),_0x19fec3[_0x2553('0x6')]));var _0x931982=[];switch(_0x19fec3[_0x2553('0x29')]){case _0x2553('0x2a'):_0x3d7445[_0xe152e1](_0x2553('0x2b'));_0x3d7445[_0xe152e1](_0x2553('0x2c'));if(queryQueues[_0x2553('0x2d')](_0x2553('0x2e'))){delete queryQueues[_0x2553('0x2e')];}_0x931982[_0x2553('0x2f')](db[_0x2553('0x30')]['findAll'](queryQueues));_0x931982[_0x2553('0x2f')](db[_0x2553('0x31')]['findAll'](queryQueues));_0x931982[_0x2553('0x2f')](db[_0x2553('0x32')]['findAll'](queryQueues));_0x931982[_0x2553('0x2f')](db[_0x2553('0x33')][_0x2553('0x14')](queryQueues));_0x931982[_0x2553('0x2f')](db['MailQueue'][_0x2553('0x14')](queryQueues));_0x931982[_0x2553('0x2f')](db[_0x2553('0x34')][_0x2553('0x14')](queryQueues));_0x931982[_0x2553('0x2f')](db[_0x2553('0x35')][_0x2553('0x14')](queryQueues));_0x931982[_0x2553('0x2f')](db[_0x2553('0x5')]['findAll'](queryTelephones));_0x931982[_0x2553('0x2f')](db['Trunk'][_0x2553('0x14')](queryTrunks));_0x931982[_0x2553('0x2f')](db[_0x2553('0x1a')]['findAll'](queryCampaigns));_0x931982[_0x2553('0x2f')](db['User']['findAll'](queryAgents));break;case'user':_0x3d7445[_0xe152e1](_0x2553('0x2b'));_0x3d7445[_0xe152e1](_0x2553('0x2c'));_0x931982[_0x2553('0x2f')](getAssociatedResources(_0x2553('0xd'),_0x19fec3['userProfileId'],_0x2553('0x30')));_0x931982[_0x2553('0x2f')](getAssociatedResources(_0x2553('0xe'),_0x19fec3['userProfileId'],_0x2553('0x31')));_0x931982[_0x2553('0x2f')](getAssociatedResources(_0x2553('0xf'),_0x19fec3[_0x2553('0x21')],_0x2553('0x32')));_0x931982[_0x2553('0x2f')](getAssociatedResources('SmsQueues',_0x19fec3[_0x2553('0x21')],_0x2553('0x33')));_0x931982[_0x2553('0x2f')](getAssociatedResources(_0x2553('0x10'),_0x19fec3[_0x2553('0x21')],_0x2553('0x36')));_0x931982['push'](getAssociatedResources('OpenchannelQueues',_0x19fec3[_0x2553('0x21')],_0x2553('0x34')));_0x931982[_0x2553('0x2f')](getAssociatedResources(_0x2553('0x37'),_0x19fec3['userProfileId'],_0x2553('0x35')));_0x931982['push'](getAssociatedResources(_0x2553('0x12'),_0x19fec3[_0x2553('0x21')],_0x2553('0x5')));_0x931982[_0x2553('0x2f')](getAssociatedResources(_0x2553('0x13'),_0x19fec3['userProfileId'],_0x2553('0x38')));_0x931982[_0x2553('0x2f')](getAssociatedResources(_0x2553('0x15'),_0x19fec3[_0x2553('0x21')],'Campaign'));_0x931982[_0x2553('0x2f')](db['User']['findAll'](queryAgents));break;case _0x2553('0x7'):_0x3d7445[_0xe152e1]('voice:inbound');_0x3d7445[_0xe152e1](_0x2553('0x2c'));_0x931982[_0x2553('0x2f')](_0x19fec3[_0x2553('0x39')]({'attributes':['id',_0x2553('0x6')]}));_0x931982['push'](_0x19fec3['getChatQueues']({'attributes':['id',_0x2553('0x6')]}));_0x931982[_0x2553('0x2f')](_0x19fec3['getFaxQueues']({'attributes':['id','name']}));_0x931982['push'](_0x19fec3['getSmsQueues']({'attributes':['id','name']}));_0x931982[_0x2553('0x2f')](_0x19fec3[_0x2553('0x3a')]({'attributes':['id',_0x2553('0x6')]}));_0x931982[_0x2553('0x2f')](_0x19fec3['getOpenchannelQueues']({'attributes':['id','name']}));_0x931982['push'](_0x19fec3[_0x2553('0x3b')]({'attributes':['id',_0x2553('0x6')]}));break;}return BPromise[_0x2553('0x3c')](_0x931982);}})[_0x2553('0xc')](function(_0x27d307){if(_0x27d307&&_0x27d307[_0x2553('0x1b')]){for(var _0x5bfcf0=0x0;_0x5bfcf0<_0x27d307[_0x2553('0x1b')];_0x5bfcf0+=0x1){for(var _0x15e519=0x0;_0x15e519<_0x27d307[_0x5bfcf0][_0x2553('0x1b')];_0x15e519+=0x1){switch(_0x5bfcf0){case 0x0:joinOrLeaveQueues(_0x3d7445,_0xe152e1,_0x2553('0x3d'),_0x27d307[_0x5bfcf0][_0x15e519]);break;case 0x1:joinOrLeaveQueues(_0x3d7445,_0xe152e1,_0x2553('0x3e'),_0x27d307[_0x5bfcf0][_0x15e519]);break;case 0x2:joinOrLeaveQueues(_0x3d7445,_0xe152e1,_0x2553('0x3f'),_0x27d307[_0x5bfcf0][_0x15e519]);break;case 0x3:joinOrLeaveQueues(_0x3d7445,_0xe152e1,_0x2553('0x40'),_0x27d307[_0x5bfcf0][_0x15e519]);break;case 0x4:joinOrLeaveQueues(_0x3d7445,_0xe152e1,_0x2553('0x41'),_0x27d307[_0x5bfcf0][_0x15e519]);break;case 0x5:joinOrLeaveQueues(_0x3d7445,_0xe152e1,'openchannel',_0x27d307[_0x5bfcf0][_0x15e519]);break;case 0x6:joinOrLeaveQueues(_0x3d7445,_0xe152e1,_0x2553('0x42'),_0x27d307[_0x5bfcf0][_0x15e519]);break;case 0x7:if(_0x49d4d1[_0x2553('0x29')]!=='agent')_0x3d7445[_0xe152e1](util[_0x2553('0x1c')](_0x2553('0x43'),_0x27d307[_0x5bfcf0][_0x15e519]['name']));break;case 0x8:if(_0x49d4d1[_0x2553('0x29')]!=='agent')_0x3d7445[_0xe152e1](util[_0x2553('0x1c')]('trunk:%s',_0x27d307[_0x5bfcf0][_0x15e519]['name']));break;case 0x9:if(_0x49d4d1['role']!==_0x2553('0x7'))_0x3d7445[_0xe152e1](util[_0x2553('0x1c')](_0x2553('0x44'),_0x27d307[_0x5bfcf0][_0x15e519][_0x2553('0x8')],_0x27d307[_0x5bfcf0][_0x15e519]['name']));break;case 0xa:_0x3d7445[_0xe152e1](util['format']('user:%s',_0x27d307[_0x5bfcf0][_0x15e519][_0x2553('0x6')]));break;}}}}})['then'](function(){if(_0xe152e1===_0x2553('0x45')){var _0x3c0a84=_[_0x2553('0x17')](_0x49d4d1[_0x2553('0x22')],'id');return _0x49d4d1['removeChatInteractions'](_0x3c0a84)[_0x2553('0xc')](function(){for(var _0x3f2ee8=0x0;_0x3f2ee8<_0x3c0a84[_0x2553('0x1b')];_0x3f2ee8+=0x1){_0xc91f02[_0x2553('0x46')](_0x2553('0x47'),{'ChatInteractionId':Number(_0x3c0a84[_0x3f2ee8]),'UserId':Number(_0x49d4d1['id'])});}});}})[_0x2553('0xc')](function(){if(_0xe152e1===_0x2553('0x45')){var _0x54e924=_[_0x2553('0x17')](_0x49d4d1['MailInteractions'],'id');return _0x49d4d1[_0x2553('0x48')](_0x54e924)[_0x2553('0xc')](function(){for(var _0x364c85=0x0;_0x364c85<_0x54e924[_0x2553('0x1b')];_0x364c85+=0x1){_0xc91f02[_0x2553('0x46')](_0x2553('0x49'),{'MailInteractionId':Number(_0x54e924[_0x364c85]),'UserId':Number(_0x49d4d1['id'])});}});}})[_0x2553('0xc')](function(){if(_0xe152e1==='leave'){var _0x311b66=_[_0x2553('0x17')](_0x49d4d1[_0x2553('0x4a')],'id');return _0x49d4d1[_0x2553('0x4b')](_0x311b66)['then'](function(){for(var _0x3b8a33=0x0;_0x3b8a33<_0x311b66['length'];_0x3b8a33+=0x1){_0xc91f02[_0x2553('0x46')](_0x2553('0x4c'),{'FaxInteractionId':Number(_0x311b66[_0x3b8a33]),'UserId':Number(_0x49d4d1['id'])});}});}})[_0x2553('0xc')](function(){if(_0xe152e1==='leave'){var _0x2f3ca4=_[_0x2553('0x17')](_0x49d4d1['SmsInteractions'],'id');return _0x49d4d1[_0x2553('0x4d')](_0x2f3ca4)[_0x2553('0xc')](function(){for(var _0xfc91c8=0x0;_0xfc91c8<_0x2f3ca4[_0x2553('0x1b')];_0xfc91c8+=0x1){_0xc91f02[_0x2553('0x46')](_0x2553('0x4e'),{'SmsInteractionId':Number(_0x2f3ca4[_0xfc91c8]),'UserId':Number(_0x49d4d1['id'])});}});}})[_0x2553('0xc')](function(){if(_0xe152e1===_0x2553('0x45')){var _0x54aae9=_['map'](_0x49d4d1['OpenchannelInteractions'],'id');return _0x49d4d1['removeOpenchannelInteractions'](_0x54aae9)[_0x2553('0xc')](function(){for(var _0x133773=0x0;_0x133773<_0x54aae9['length'];_0x133773+=0x1){_0xc91f02[_0x2553('0x46')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x54aae9[_0x133773]),'UserId':Number(_0x49d4d1['id'])});}});}})[_0x2553('0xc')](function(){if(_0xe152e1===_0x2553('0x45')){var _0x176d8a=_[_0x2553('0x17')](_0x49d4d1[_0x2553('0x28')],'id');return _0x49d4d1[_0x2553('0x4f')](_0x176d8a)[_0x2553('0xc')](function(){for(var _0x1a1059=0x0;_0x1a1059<_0x176d8a[_0x2553('0x1b')];_0x1a1059+=0x1){_0xc91f02[_0x2553('0x46')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x176d8a[_0x1a1059]),'UserId':Number(_0x49d4d1['id'])});}});}})[_0x2553('0x50')](function(_0x281044){_0x3d7445[_0x2553('0x51')](_0x281044);});}}function onDisconnect(_0x2e35d7,_0x1844f9){joinOrLeave(_0x2e35d7,_0x2553('0x45'),_0x1844f9);}function onConnect(_0x3b672f){joinOrLeave(_0x3b672f,_0x2553('0x52'));}exports[_0x2553('0x53')]=function(_0x4c5aee){_0x4c5aee['on'](_0x2553('0x54'),function(_0x3dd0ef){_0x3dd0ef[_0x2553('0x55')](0x0);_0x3dd0ef[_0x2553('0x56')]=_0x3dd0ef['request']['connection'][_0x2553('0x57')]+':'+_0x3dd0ef[_0x2553('0x58')][_0x2553('0x54')][_0x2553('0x59')];_0x3dd0ef[_0x2553('0x5a')]=new Date();_0x3dd0ef[_0x2553('0x51')]=function(_0x3ee25a){console[_0x2553('0x51')](_0x2553('0x5b')+_0x3dd0ef[_0x2553('0x5c')]['name']+'['+_0x3dd0ef[_0x2553('0x56')]+']',_0x3ee25a);};_0x3dd0ef['on']('disconnect',function(){onDisconnect(_0x3dd0ef,_0x4c5aee);_0x3dd0ef[_0x2553('0x51')](_0x2553('0x5d'));});onConnect(_0x3dd0ef);_0x3dd0ef['log'](_0x2553('0x5e'));});};
\ No newline at end of file
index 476148f..c5ca554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd0=['code','catch','get','channel','event','direction','resolve','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','UserId','interface','format','SIP/%s','agent','incomingmessage','outgoingmessage','AfterCreateMessage','motionChannel','offlineMessage','opened','query','name','changed','closed','substatus','undefined','AfterUpdate','User','find','fullname','email','internal','default','length','model','hook','callback','condition','util','jayson/promise','../logger','triggers','client','http','afterCreate','newinteraction','ChatInteraction','afterUpdate','ChatMessage','newmessage','Chat','ChatOfflineMessage','Sms','SmsInteraction','closedinteraction','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error'];(function(_0x36bbaa,_0x4e2489){var _0x46253c=function(_0x4cc244){while(--_0x4cc244){_0x36bbaa['push'](_0x36bbaa['shift']());}};_0x46253c(++_0x4e2489);}(_0x4bd0,0x1f3));var _0x04bd=function(_0x8c318b,_0x309481){_0x8c318b=_0x8c318b-0x0;var _0x3c000a=_0x4bd0[_0x8c318b];return _0x3c000a;};'use strict';var util=require(_0x04bd('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0x04bd('0x1'));var logger=require(_0x04bd('0x2'))(_0x04bd('0x3'));var client=jayson[_0x04bd('0x4')][_0x04bd('0x5')]({'port':0x232a});var triggers=[{'channel':'Chat','model':'ChatInteraction','event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':'Chat','model':_0x04bd('0x8'),'event':_0x04bd('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Chat','model':_0x04bd('0xa'),'event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0xc'),'model':_0x04bd('0xd'),'event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0x04bd('0xe'),'model':_0x04bd('0xf'),'event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':_0x04bd('0xe'),'model':_0x04bd('0xf'),'event':_0x04bd('0x9'),'condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':_0x04bd('0xe'),'model':'SmsMessage','event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0x11'),'model':_0x04bd('0x12'),'event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':_0x04bd('0x11'),'model':_0x04bd('0x12'),'event':_0x04bd('0x9'),'condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':_0x04bd('0x11'),'model':'WhatsappMessage','event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x04bd('0x13'),'model':'FaxInteraction','event':'afterCreate','condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':'Fax','model':_0x04bd('0x14'),'event':'afterUpdate','condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':'Fax','model':_0x04bd('0x15'),'event':'afterCreate','condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0x16'),'model':_0x04bd('0x17'),'event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':_0x04bd('0x16'),'model':_0x04bd('0x17'),'event':_0x04bd('0x9'),'condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':_0x04bd('0x16'),'model':'MailMessage','event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0x18'),'model':_0x04bd('0x19'),'event':_0x04bd('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x04bd('0x18'),'model':_0x04bd('0x19'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x04bd('0x18'),'model':_0x04bd('0x1a'),'event':_0x04bd('0x6'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x46c516){return client[_0x04bd('0x1b')](_0x04bd('0x1c'),_0x46c516)[_0x04bd('0x1d')](function(_0x39509a){logger[_0x04bd('0x1e')](_0x04bd('0x1f'),_0x04bd('0x1c'),_0x39509a);if(_0x39509a[_0x04bd('0x20')]){if(_0x39509a[_0x04bd('0x20')][_0x04bd('0x21')]===0x1f4){logger[_0x04bd('0x20')]('Trigger,\x20%s',_0x04bd('0x1c'),_0x39509a[_0x04bd('0x20')]);}}})[_0x04bd('0x22')](function(_0x5d6331){logger['error'](_0x04bd('0x1f'),_0x04bd('0x1c'),_0x5d6331);});}function afterCreateMessage(_0xe43a09){return function(_0x2c73c8){_0x2c73c8=_0x2c73c8[_0x04bd('0x23')]({'plain':!![]});_0x2c73c8[_0x04bd('0x24')]=_0xe43a09;_0x2c73c8['motionChannel']=_0xe43a09;_0x2c73c8[_0x04bd('0x25')]=_0x2c73c8[_0x04bd('0x26')];Promise[_0x04bd('0x27')]()[_0x04bd('0x1d')](function(){if(typeof _0x2c73c8[_0x04bd('0x28')]==='undefined')return null;var _0x3159bb=_0x04bd('0x29')+_0x2c73c8[_0x04bd('0x28')];return db[_0x04bd('0x2a')]['query'](_0x3159bb,{'type':db[_0x04bd('0x2b')][_0x04bd('0x2c')][_0x04bd('0x2d')],'raw':!![]});})[_0x04bd('0x1d')](function(_0x3abf32){if(_0x3abf32){_0x2c73c8[_0x04bd('0x2e')]=_0x3abf32[0x0];}if(typeof _0x2c73c8[_0x04bd('0x2f')]==='undefined')return;return getAgent(_0x2c73c8[_0x04bd('0x2f')]);})['then'](function(_0x555ea1){if(_0x555ea1){_0x2c73c8[_0x04bd('0x30')]=util[_0x04bd('0x31')](_0x04bd('0x32'),_0x555ea1['name']);_0x2c73c8[_0x04bd('0x33')]=_0x555ea1;_0x2c73c8[_0x04bd('0x24')]=_0xe43a09;return request({'event':_0x04bd('0x34'),'message':_0x2c73c8});}else{return request({'event':_0x04bd('0x35'),'message':_0x2c73c8});}})[_0x04bd('0x22')](function(_0x567b08){logger['error'](_0x04bd('0x1f'),_0x04bd('0x36'),_0x567b08);});};}function afterCreateOfflineMessage(_0x169ff4){return function(_0x5c1985){_0x5c1985=_0x5c1985[_0x04bd('0x23')]({'plain':!![]});_0x5c1985[_0x04bd('0x24')]=_0x169ff4;_0x5c1985[_0x04bd('0x37')]=_0x169ff4;_0x5c1985[_0x04bd('0x25')]=_0x04bd('0x38');return request({'event':_0x5c1985[_0x04bd('0x25')],'message':_0x5c1985});};}function afterCreate(_0x4bc4e4,_0x1df42b){return function(_0x5b3ac9){_0x5b3ac9=_0x5b3ac9[_0x04bd('0x23')]({'plain':!![]});_0x5b3ac9['channel']=_0x4bc4e4;_0x5b3ac9[_0x04bd('0x37')]=_0x4bc4e4;_0x5b3ac9[_0x04bd('0x25')]=_0x04bd('0x39');Promise[_0x04bd('0x27')]()[_0x04bd('0x1d')](function(){var _0x47992a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5b3ac9[_0x04bd('0x28')];return db[_0x04bd('0x2a')][_0x04bd('0x3a')](_0x47992a,{'type':db[_0x04bd('0x2b')]['QueryTypes'][_0x04bd('0x2d')],'raw':!![]});})[_0x04bd('0x1d')](function(_0x1c42e5){if(_0x1c42e5){_0x5b3ac9[_0x04bd('0x2e')]=_0x1c42e5[0x0];}if(typeof _0x5b3ac9[_0x04bd('0x2f')]==='undefined')return;return getAgent(_0x5b3ac9[_0x04bd('0x2f')]);})[_0x04bd('0x1d')](function(_0x55d5b6){if(_0x55d5b6){_0x5b3ac9[_0x04bd('0x30')]=util[_0x04bd('0x31')](_0x04bd('0x32'),_0x55d5b6[_0x04bd('0x3b')]);_0x5b3ac9[_0x04bd('0x33')]=_0x55d5b6;}return request({'event':_0x1df42b,'message':_0x5b3ac9});})[_0x04bd('0x22')](function(_0x39ad29){logger[_0x04bd('0x20')](_0x04bd('0x1f'),'AfterCreate',_0x39ad29);});};}function afterUpdate(_0x3db6c9){return function(_0x2ac3d4){var _0x14003b=_0x2ac3d4[_0x04bd('0x3c')]('closed')&&_0x2ac3d4[_0x04bd('0x3d')];var _0x640a09=_0x2ac3d4['changed'](_0x04bd('0x3e'));if(_0x14003b||_0x640a09){var _0x3137fe=_0x14003b?_0x04bd('0x10'):'substatus';var _0x218fb2=_0x2ac3d4[_0x04bd('0x23')]({'plain':!![]});_0x218fb2[_0x04bd('0x24')]=_0x3db6c9;_0x218fb2[_0x04bd('0x37')]=_0x3db6c9;_0x218fb2['event']=_0x14003b?_0x04bd('0x3d'):_0x04bd('0x3e');var _0x1854aa=_0x04bd('0x29')+_0x218fb2[_0x04bd('0x28')];return db[_0x04bd('0x2a')][_0x04bd('0x3a')](_0x1854aa,{'type':db[_0x04bd('0x2b')][_0x04bd('0x2c')]['SELECT'],'raw':!![]})[_0x04bd('0x1d')](function(_0x4cfce9){if(_0x4cfce9){_0x218fb2[_0x04bd('0x2e')]=_0x4cfce9[0x0];}if(typeof _0x218fb2[_0x04bd('0x2f')]===_0x04bd('0x3f'))return;return getAgent(_0x218fb2[_0x04bd('0x2f')]);})[_0x04bd('0x1d')](function(_0x373fba){if(_0x373fba){_0x218fb2[_0x04bd('0x30')]=util[_0x04bd('0x31')](_0x04bd('0x32'),_0x373fba[_0x04bd('0x3b')]);_0x218fb2[_0x04bd('0x33')]=_0x373fba;}return request({'event':_0x3137fe,'message':_0x218fb2});})[_0x04bd('0x22')](function(_0x458d8b){logger[_0x04bd('0x20')](_0x04bd('0x1f'),_0x04bd('0x40'),_0x458d8b);});}};}function getAgent(_0x482d2b){return db[_0x04bd('0x41')][_0x04bd('0x42')]({'where':{'id':_0x482d2b},'attributes':['id',_0x04bd('0x3b'),_0x04bd('0x43'),_0x04bd('0x44'),_0x04bd('0x45')],'raw':!![]})[_0x04bd('0x1d')](function(_0x22f421){return _0x22f421;});}exports[_0x04bd('0x46')]=function(){for(var _0x114e51=0x0;_0x114e51<triggers[_0x04bd('0x47')];_0x114e51+=0x1){if(db['hasOwnProperty'](triggers[_0x114e51][_0x04bd('0x48')])){db[triggers[_0x114e51]['model']][_0x04bd('0x49')](triggers[_0x114e51][_0x04bd('0x25')],triggers[_0x114e51][_0x04bd('0x4a')](triggers[_0x114e51][_0x04bd('0x24')]['toLowerCase'](),triggers[_0x114e51][_0x04bd('0x4b')]));}}};
\ No newline at end of file
+var _0x15a5=['hook','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','triggers','client','http','afterCreate','newinteraction','ChatInteraction','closedinteraction','Chat','ChatOfflineMessage','newmessage','SmsInteraction','Sms','afterUpdate','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','OpenchannelInteraction','Openchannel','request','EventManager','then','Trigger,\x20%s','error','code','channel','motionChannel','event','direction','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','query','Sequelize','SELECT','UserId','format','SIP/%s','name','incomingmessage','catch','AfterCreateMessage','offlineMessage','get','opened','sequelize','QueryTypes','contact','interface','agent','changed','closed','substatus','AfterUpdate','User','find','fullname','email','internal','default','length','hasOwnProperty','model'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x15a5,0x9d));var _0x515a=function(_0x38d81f,_0xe84cce){_0x38d81f=_0x38d81f-0x0;var _0x2f0c86=_0x15a5[_0x38d81f];return _0x2f0c86;};'use strict';var util=require(_0x515a('0x0'));var db=require(_0x515a('0x1'))['db'];var jayson=require(_0x515a('0x2'));var logger=require(_0x515a('0x3'))(_0x515a('0x4'));var client=jayson[_0x515a('0x5')][_0x515a('0x6')]({'port':0x232a});var triggers=[{'channel':'Chat','model':'ChatInteraction','event':_0x515a('0x7'),'condition':_0x515a('0x8'),'callback':afterCreate},{'channel':'Chat','model':_0x515a('0x9'),'event':'afterUpdate','condition':_0x515a('0xa'),'callback':afterUpdate},{'channel':_0x515a('0xb'),'model':'ChatMessage','event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x515a('0xb'),'model':_0x515a('0xc'),'event':_0x515a('0x7'),'condition':_0x515a('0xd'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0x515a('0xe'),'event':'afterCreate','condition':_0x515a('0x8'),'callback':afterCreate},{'channel':_0x515a('0xf'),'model':'SmsInteraction','event':_0x515a('0x10'),'condition':_0x515a('0xa'),'callback':afterUpdate},{'channel':_0x515a('0xf'),'model':_0x515a('0x11'),'event':_0x515a('0x7'),'condition':_0x515a('0xd'),'callback':afterCreateMessage},{'channel':_0x515a('0x12'),'model':_0x515a('0x13'),'event':_0x515a('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x515a('0x12'),'model':_0x515a('0x13'),'event':_0x515a('0x10'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x515a('0x12'),'model':_0x515a('0x14'),'event':_0x515a('0x7'),'condition':_0x515a('0xd'),'callback':afterCreateMessage},{'channel':_0x515a('0x15'),'model':'FaxInteraction','event':_0x515a('0x7'),'condition':_0x515a('0x8'),'callback':afterCreate},{'channel':_0x515a('0x15'),'model':_0x515a('0x16'),'event':_0x515a('0x10'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0x515a('0x17'),'event':_0x515a('0x7'),'condition':_0x515a('0xd'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x515a('0x18'),'event':_0x515a('0x7'),'condition':_0x515a('0x8'),'callback':afterCreate},{'channel':_0x515a('0x19'),'model':_0x515a('0x18'),'event':_0x515a('0x10'),'condition':_0x515a('0xa'),'callback':afterUpdate},{'channel':_0x515a('0x19'),'model':_0x515a('0x1a'),'event':_0x515a('0x7'),'condition':_0x515a('0xd'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x515a('0x1b'),'event':_0x515a('0x7'),'condition':_0x515a('0x8'),'callback':afterCreate},{'channel':_0x515a('0x1c'),'model':_0x515a('0x1b'),'event':_0x515a('0x10'),'condition':_0x515a('0xa'),'callback':afterUpdate},{'channel':_0x515a('0x1c'),'model':'OpenchannelMessage','event':_0x515a('0x7'),'condition':_0x515a('0xd'),'callback':afterCreateMessage}];function request(_0x4062ff){return client[_0x515a('0x1d')](_0x515a('0x1e'),_0x4062ff)[_0x515a('0x1f')](function(_0x2a75b4){logger['info'](_0x515a('0x20'),_0x515a('0x1e'),_0x2a75b4);if(_0x2a75b4[_0x515a('0x21')]){if(_0x2a75b4[_0x515a('0x21')][_0x515a('0x22')]===0x1f4){logger[_0x515a('0x21')]('Trigger,\x20%s',_0x515a('0x1e'),_0x2a75b4[_0x515a('0x21')]);}}})['catch'](function(_0x285bc3){logger[_0x515a('0x21')](_0x515a('0x20'),'EventManager',_0x285bc3);});}function afterCreateMessage(_0x228001){return function(_0x6b3051){_0x6b3051=_0x6b3051['get']({'plain':!![]});_0x6b3051[_0x515a('0x23')]=_0x228001;_0x6b3051[_0x515a('0x24')]=_0x228001;_0x6b3051[_0x515a('0x25')]=_0x6b3051[_0x515a('0x26')];Promise[_0x515a('0x27')]()[_0x515a('0x1f')](function(){if(typeof _0x6b3051[_0x515a('0x28')]===_0x515a('0x29'))return null;var _0x52bae5=_0x515a('0x2a')+_0x6b3051[_0x515a('0x28')];return db['sequelize'][_0x515a('0x2b')](_0x52bae5,{'type':db[_0x515a('0x2c')]['QueryTypes'][_0x515a('0x2d')],'raw':!![]});})['then'](function(_0x4a8953){if(_0x4a8953){_0x6b3051['contact']=_0x4a8953[0x0];}if(typeof _0x6b3051['UserId']===_0x515a('0x29'))return;return getAgent(_0x6b3051[_0x515a('0x2e')]);})[_0x515a('0x1f')](function(_0x4374dd){if(_0x4374dd){_0x6b3051['interface']=util[_0x515a('0x2f')](_0x515a('0x30'),_0x4374dd[_0x515a('0x31')]);_0x6b3051['agent']=_0x4374dd;_0x6b3051['channel']=_0x228001;return request({'event':_0x515a('0x32'),'message':_0x6b3051});}else{return request({'event':'outgoingmessage','message':_0x6b3051});}})[_0x515a('0x33')](function(_0x302a26){logger['error'](_0x515a('0x20'),_0x515a('0x34'),_0x302a26);});};}function afterCreateOfflineMessage(_0x2a36a5){return function(_0x1c5105){_0x1c5105=_0x1c5105['get']({'plain':!![]});_0x1c5105[_0x515a('0x23')]=_0x2a36a5;_0x1c5105[_0x515a('0x24')]=_0x2a36a5;_0x1c5105['event']=_0x515a('0x35');return request({'event':_0x1c5105[_0x515a('0x25')],'message':_0x1c5105});};}function afterCreate(_0x2a7e38,_0x460ff2){return function(_0x6dbf0){_0x6dbf0=_0x6dbf0[_0x515a('0x36')]({'plain':!![]});_0x6dbf0[_0x515a('0x23')]=_0x2a7e38;_0x6dbf0[_0x515a('0x24')]=_0x2a7e38;_0x6dbf0['event']=_0x515a('0x37');Promise[_0x515a('0x27')]()[_0x515a('0x1f')](function(){var _0x4f20f8='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x6dbf0['ContactId'];return db[_0x515a('0x38')][_0x515a('0x2b')](_0x4f20f8,{'type':db[_0x515a('0x2c')][_0x515a('0x39')][_0x515a('0x2d')],'raw':!![]});})[_0x515a('0x1f')](function(_0x1818e4){if(_0x1818e4){_0x6dbf0[_0x515a('0x3a')]=_0x1818e4[0x0];}if(typeof _0x6dbf0[_0x515a('0x2e')]==='undefined')return;return getAgent(_0x6dbf0[_0x515a('0x2e')]);})['then'](function(_0x2f8dcb){if(_0x2f8dcb){_0x6dbf0[_0x515a('0x3b')]=util[_0x515a('0x2f')](_0x515a('0x30'),_0x2f8dcb[_0x515a('0x31')]);_0x6dbf0[_0x515a('0x3c')]=_0x2f8dcb;}return request({'event':_0x460ff2,'message':_0x6dbf0});})['catch'](function(_0x2d0b88){logger[_0x515a('0x21')](_0x515a('0x20'),'AfterCreate',_0x2d0b88);});};}function afterUpdate(_0x3fb9ce){return function(_0x151c5d){var _0x25229e=_0x151c5d[_0x515a('0x3d')](_0x515a('0x3e'))&&_0x151c5d[_0x515a('0x3e')];var _0x40a6aa=_0x151c5d[_0x515a('0x3d')](_0x515a('0x3f'));if(_0x25229e||_0x40a6aa){var _0x1a42aa=_0x25229e?_0x515a('0xa'):'substatus';var _0x9153bc=_0x151c5d[_0x515a('0x36')]({'plain':!![]});_0x9153bc[_0x515a('0x23')]=_0x3fb9ce;_0x9153bc[_0x515a('0x24')]=_0x3fb9ce;_0x9153bc[_0x515a('0x25')]=_0x25229e?_0x515a('0x3e'):_0x515a('0x3f');var _0x33078e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x9153bc[_0x515a('0x28')];return db['sequelize'][_0x515a('0x2b')](_0x33078e,{'type':db['Sequelize'][_0x515a('0x39')]['SELECT'],'raw':!![]})['then'](function(_0x24cbd3){if(_0x24cbd3){_0x9153bc[_0x515a('0x3a')]=_0x24cbd3[0x0];}if(typeof _0x9153bc[_0x515a('0x2e')]===_0x515a('0x29'))return;return getAgent(_0x9153bc[_0x515a('0x2e')]);})[_0x515a('0x1f')](function(_0x597b9e){if(_0x597b9e){_0x9153bc[_0x515a('0x3b')]=util[_0x515a('0x2f')]('SIP/%s',_0x597b9e['name']);_0x9153bc[_0x515a('0x3c')]=_0x597b9e;}return request({'event':_0x1a42aa,'message':_0x9153bc});})[_0x515a('0x33')](function(_0x267179){logger['error'](_0x515a('0x20'),_0x515a('0x40'),_0x267179);});}};}function getAgent(_0x5a74b2){return db[_0x515a('0x41')][_0x515a('0x42')]({'where':{'id':_0x5a74b2},'attributes':['id','name',_0x515a('0x43'),_0x515a('0x44'),_0x515a('0x45')],'raw':!![]})[_0x515a('0x1f')](function(_0x1c0acd){return _0x1c0acd;});}exports[_0x515a('0x46')]=function(){for(var _0x335848=0x0;_0x335848<triggers[_0x515a('0x47')];_0x335848+=0x1){if(db[_0x515a('0x48')](triggers[_0x335848][_0x515a('0x49')])){db[triggers[_0x335848][_0x515a('0x49')]][_0x515a('0x4a')](triggers[_0x335848][_0x515a('0x25')],triggers[_0x335848]['callback'](triggers[_0x335848][_0x515a('0x23')][_0x515a('0x4b')](),triggers[_0x335848][_0x515a('0x4c')]));}}};
\ No newline at end of file
index 7efcb82..848782e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x913c=['agents','lodash','./license/util','voice','sms','whatsapp','openchannel','isValidChannel','clearBlockUser','isUndefined','blockedAt','getLicense','role','User','agent','then'];(function(_0x118278,_0x5e64a1){var _0x1f47f3=function(_0x46671d){while(--_0x46671d){_0x118278['push'](_0x118278['shift']());}};_0x1f47f3(++_0x5e64a1);}(_0x913c,0x131));var _0xc913=function(_0x312deb,_0x25f392){_0x312deb=_0x312deb-0x0;var _0x4225fd=_0x913c[_0x312deb];return _0x4225fd;};'use strict';var _=require(_0xc913('0x0'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require(_0xc913('0x1'));var channels=[_0xc913('0x2'),'mail','chat','fax',_0xc913('0x3'),_0xc913('0x4'),_0xc913('0x5')];exports['getChannels']=function(){return channels;};exports[_0xc913('0x6')]=function(_0x58f4da){_0x58f4da=_0x58f4da['toLowerCase']();return _['includes'](channels,_0x58f4da);};exports[_0xc913('0x7')]=function(_0x2cdb77,_0x28a3c3,_0xb75c45,_0x1d85a8){var _0x51974d={'loginAttempts':_0x28a3c3,'blocked':_0xb75c45};if(!_[_0xc913('0x8')](_0x1d85a8)){_0x51974d[_0xc913('0x9')]=_0x1d85a8;}return _0x2cdb77['updateAttributes'](_0x51974d);};exports[_0xc913('0xa')]=function(_0x5663fa){return new BPromise(function(_0x5da40d,_0x5ec5ee){var _0x41b533=0x0;if(_0x5663fa[_0xc913('0xb')]!=='agent'){_0x5da40d(_0x5663fa);}db[_0xc913('0xc')]['count']({'where':{'role':_0xc913('0xd'),'online':!![],'id':{'$ne':_0x5663fa['id']}}})['then'](function(_0x5459a1){_0x41b533=_0x5459a1;return util[_0xc913('0xa')]();})[_0xc913('0xe')](function(_0x5f0d7a){if(_0x5f0d7a&&_0x5f0d7a['agents']&&_0x41b533>=_0x5f0d7a[_0xc913('0xf')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x5da40d(_0x5663fa);})['catch'](function(_0x2489bd){_0x5ec5ee(_0x2489bd);});});};
\ No newline at end of file
+var _0x5838=['updateAttributes','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','bluebird','../mysqldb','./license/util','voice','mail','chat','sms','openchannel','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x5838,0x1a2));var _0x8583=function(_0x39ce43,_0x133c51){_0x39ce43=_0x39ce43-0x0;var _0xf122d4=_0x5838[_0x39ce43];return _0xf122d4;};'use strict';var _=require('lodash');var BPromise=require(_0x8583('0x0'));var db=require(_0x8583('0x1'))['db'];var util=require(_0x8583('0x2'));var channels=[_0x8583('0x3'),_0x8583('0x4'),_0x8583('0x5'),'fax',_0x8583('0x6'),'whatsapp',_0x8583('0x7')];exports['getChannels']=function(){return channels;};exports[_0x8583('0x8')]=function(_0xea16ed){_0xea16ed=_0xea16ed[_0x8583('0x9')]();return _[_0x8583('0xa')](channels,_0xea16ed);};exports[_0x8583('0xb')]=function(_0x4b211a,_0x4107a1,_0x283a32,_0x3ca520){var _0xfa2d34={'loginAttempts':_0x4107a1,'blocked':_0x283a32};if(!_[_0x8583('0xc')](_0x3ca520)){_0xfa2d34[_0x8583('0xd')]=_0x3ca520;}return _0x4b211a[_0x8583('0xe')](_0xfa2d34);};exports[_0x8583('0xf')]=function(_0x497eb9){return new BPromise(function(_0x3fb637,_0x5475cf){var _0x5e3be4=0x0;if(_0x497eb9[_0x8583('0x10')]!==_0x8583('0x11')){_0x3fb637(_0x497eb9);}db[_0x8583('0x12')][_0x8583('0x13')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x497eb9['id']}}})[_0x8583('0x14')](function(_0x1e7192){_0x5e3be4=_0x1e7192;return util[_0x8583('0xf')]();})['then'](function(_0x32f370){if(_0x32f370&&_0x32f370[_0x8583('0x15')]&&_0x5e3be4>=_0x32f370['agents']){throw Error(_0x8583('0x16'));}_0x3fb637(_0x497eb9);})[_0x8583('0x17')](function(_0x48212b){_0x5475cf(_0x48212b);});});};
\ No newline at end of file
index c165505..1950307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['inherits','Bad\x20Request','Entity\x20not\x20found','Not\x20Found','Forbidden','OutOfInterval','stack','status','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error'];(function(_0x16a4b8,_0x42f23b){var _0x48cc58=function(_0x1534d3){while(--_0x1534d3){_0x16a4b8['push'](_0x16a4b8['shift']());}};_0x48cc58(++_0x42f23b);}(_0xe706,0xa3));var _0x6e70=function(_0x5599aa,_0x1b9ffe){_0x5599aa=_0x5599aa-0x0;var _0x4b0f34=_0xe706[_0x5599aa];return _0x4b0f34;};'use strict';var util=require(_0x6e70('0x0'));var logger=require(_0x6e70('0x1'))(_0x6e70('0x2'));var APIError=function(_0x5e8446,_0x2cae77){this[_0x6e70('0x3')]=_0x5e8446||_0x6e70('0x4');this[_0x6e70('0x5')]=_0x2cae77||_0x6e70('0x6');util[_0x6e70('0x7')](APIError,Error);};var APIBadRequestError=function(_0x376a8d){this[_0x6e70('0x3')]=_0x376a8d||_0x6e70('0x8');this[_0x6e70('0x5')]=_0x6e70('0x8');util[_0x6e70('0x7')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x45a2d4){this[_0x6e70('0x3')]=_0x45a2d4||_0x6e70('0x9');this[_0x6e70('0x5')]=_0x6e70('0xa');util[_0x6e70('0x7')](APINotFoundError,APIError);};function getStatusCode(_0x100eb7){switch(_0x100eb7){case _0x6e70('0x8'):return 0x190;case _0x6e70('0xb'),_0x6e70('0xc'):return 0x193;case _0x6e70('0xa'):return 0x194;default:return 0x1f4;}}function handleError(_0x4600f9){return function(_0x5b3d07){logger['error'](_0x5b3d07[_0x6e70('0xd')]);var _0x15a1a5=getStatusCode(_0x5b3d07[_0x6e70('0x5')]);if(_0x5b3d07[_0x6e70('0x5')])delete _0x5b3d07[_0x6e70('0x5')];return _0x4600f9[_0x6e70('0xe')](_0x15a1a5)[_0x6e70('0xf')](_0x5b3d07);};}module[_0x6e70('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0xda3f=['inherits','message','Bad\x20Request','Entity\x20not\x20found','name','Not\x20Found','Forbidden','OutOfInterval','error','stack','send','exports','../config/logger','api','Internal\x20Server\x20Error','Error'];(function(_0x191c3e,_0x424520){var _0x2d9440=function(_0xb7f464){while(--_0xb7f464){_0x191c3e['push'](_0x191c3e['shift']());}};_0x2d9440(++_0x424520);}(_0xda3f,0xec));var _0xfda3=function(_0x5d08b4,_0x2352f8){_0x5d08b4=_0x5d08b4-0x0;var _0x34d7c3=_0xda3f[_0x5d08b4];return _0x34d7c3;};'use strict';var util=require('util');var logger=require(_0xfda3('0x0'))(_0xfda3('0x1'));var APIError=function(_0x534697,_0x5299b0){this['message']=_0x534697||_0xfda3('0x2');this['name']=_0x5299b0||_0xfda3('0x3');util[_0xfda3('0x4')](APIError,Error);};var APIBadRequestError=function(_0x516500){this[_0xfda3('0x5')]=_0x516500||_0xfda3('0x6');this['name']='Bad\x20Request';util[_0xfda3('0x4')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x42476a){this[_0xfda3('0x5')]=_0x42476a||_0xfda3('0x7');this[_0xfda3('0x8')]=_0xfda3('0x9');util[_0xfda3('0x4')](APINotFoundError,APIError);};function getStatusCode(_0x1b1ea6){switch(_0x1b1ea6){case _0xfda3('0x6'):return 0x190;case _0xfda3('0xa'),_0xfda3('0xb'):return 0x193;case _0xfda3('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x4d7841){return function(_0xe933f5){logger[_0xfda3('0xc')](_0xe933f5[_0xfda3('0xd')]);var _0x11afc1=getStatusCode(_0xe933f5[_0xfda3('0x8')]);if(_0xe933f5['name'])delete _0xe933f5[_0xfda3('0x8')];return _0x4d7841['status'](_0x11afc1)[_0xfda3('0xe')](_0xe933f5);};}module[_0xfda3('0xf')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 3f75bbb..9e28d9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb35=['404','status','render','json','send','exports'];(function(_0x3c2442,_0x3ed5d1){var _0x3b99c2=function(_0xc4ad01){while(--_0xc4ad01){_0x3c2442['push'](_0x3c2442['shift']());}};_0x3b99c2(++_0x3ed5d1);}(_0xdb35,0x8f));var _0x5db3=function(_0x372915,_0x2dbd58){_0x372915=_0x372915-0x0;var _0x42ea51=_0xdb35[_0x372915];return _0x42ea51;};'use strict';module[_0x5db3('0x0')][0x194]=function pageNotFound(_0x9a2b2e,_0x5019e6){var _0x4a1ed1=_0x5db3('0x1');var _0x298414=0x194;var _0x1d0826={'status':_0x298414};_0x5019e6['status'](_0x1d0826[_0x5db3('0x2')]);_0x5019e6[_0x5db3('0x3')](_0x4a1ed1,{},function(_0x53c652,_0xc89064){if(_0x53c652){return _0x5019e6[_0x5db3('0x2')](_0x1d0826[_0x5db3('0x2')])[_0x5db3('0x4')](_0x1d0826);}_0x5019e6[_0x5db3('0x5')](_0xc89064);});};
\ No newline at end of file
+var _0x05b1=['status','render'];(function(_0x4ccc6c,_0x528ee6){var _0x2c7616=function(_0x40b9d0){while(--_0x40b9d0){_0x4ccc6c['push'](_0x4ccc6c['shift']());}};_0x2c7616(++_0x528ee6);}(_0x05b1,0x188));var _0x105b=function(_0x27907d,_0x2e7ba8){_0x27907d=_0x27907d-0x0;var _0x24d02b=_0x05b1[_0x27907d];return _0x24d02b;};'use strict';module['exports'][0x194]=function pageNotFound(_0x4f8a8e,_0x1dac9f){var _0x19fd9f='404';var _0x12fe15=0x194;var _0x521512={'status':_0x12fe15};_0x1dac9f[_0x105b('0x0')](_0x521512[_0x105b('0x0')]);_0x1dac9f[_0x105b('0x1')](_0x19fd9f,{},function(_0x287629,_0xfca01a){if(_0x287629){return _0x1dac9f[_0x105b('0x0')](_0x521512[_0x105b('0x0')])['json'](_0x521512);}_0x1dac9f['send'](_0xfca01a);});};
\ No newline at end of file
index 4484ba1..ec7e1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa76e=['../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmField/intSugarcrmField.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/integration/integration.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','Campaign','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','userSetting','Recordings','hasMany','VoiceQueuesRt','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','FaxInteractions','MailInteractions','UserNotifications','belongsTo','userProfileId','belongsToMany','Groups','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','MailInteraction','user_has_mail_interactions','user_has_fax_interactions','user_has_sms_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoicePrefixes','ChatQueues','FaxQueues','SmsQueue','SmsQueues','OpenchannelQueues','WhatsappQueue','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','Applications','VoiceMusicOnHold','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperHistories','CmHopperBlack','HopperBlacks','JscriptySessionReport','JscriptySessions','Trunk','TrunkId','TrunkBackup','Interval','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','ContactId','restrict','MailAccountId','CloudProviderId','Imap','Smtp','Disposition','Answers','Interactions','List','ListId','TemplateId','team_has_mail_queues','MailInteractionId','mail_interaction_has_tags','Tags','Tag','Users','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','TagId','DashboardItem','Items','Dispositions','FaxAccountId','Exntensions','FaxInteractionId','Owner','fax_interaction_has_tags','ThroughTags','AttachmentId','team_has_fax_queues','Teams','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','ProactiveActions','ChatMessage','Agent','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','team_has_chat_queues','ChatGroupId','chat_group_has_users','CompanyId','Phones','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Queue','CampaignId','OwnerId','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Action','Actions','AutomationId','ParentId','Extensions','MailApplications','ChatApplications','FaxApplications','SmsApplications','AnalyticDefaultReport','DefaultReportId','CustomReportId','Mohs','ItemType','ItemTypeId','Hopper','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','Configurations','AccountId','SalesforceField','Subjects','Descriptions','DescriptionId','FieldId','Subject','SubjectId','Description','Field','VariableId','SugarcrmField','DeskAccount','int_desk_configuration_has_tags','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','FromId','ToId','SessionId','ProjectId','user_has_teams','VoiceQueues','team_has_whatsapp_queues','WhatsappQueues','campaigns_has_cm_lists','FromAccount','FromUserId','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','ToAgent','ToChatWebsiteId','ToAccount','FromFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','Queues','UserProfileSection','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','whatsapp_interaction_has_tags','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','../config/environment','sequelize','lodash','jstz','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8_general_ci','defaultsDeep','utf8','database','sequelizeHistory','username','password','options','User','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','import','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceQueue','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','MailServerIn','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/cmCustomField/cmCustomField.model','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','ContactItemType','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','../api/trigger/trigger.model','Variable','Integration','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric'];(function(_0x246148,_0x1358ee){var _0x453d94=function(_0x59920e){while(--_0x59920e){_0x246148['push'](_0x246148['shift']());}};_0x453d94(++_0x1358ee);}(_0xa76e,0x165));var _0xea76=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xa76e[_0x4b055c];return _0x4b62bb;};'use strict';var config=require(_0xea76('0x0'));var Sequelize=require(_0xea76('0x1'));var _=require(_0xea76('0x2'));var jstz=require(_0xea76('0x3'));var timezone=jstz['determine']();config[_0xea76('0x1')]=_['defaultsDeep'](config[_0xea76('0x1')],{'database':_0xea76('0x4'),'username':_0xea76('0x5'),'password':_0xea76('0x6'),'options':{'host':_0xea76('0x7'),'port':0xcea,'dialect':_0xea76('0x8'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0xea76('0x9')}}});config['sequelizeHistory']=_[_0xea76('0xa')](config['sequelizeHistory'],{'database':_0xea76('0x4'),'username':'xcall','password':_0xea76('0x6'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xea76('0xb'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xea76('0x1')][_0xea76('0xc')],config[_0xea76('0x1')]['username'],config[_0xea76('0x1')]['password'],config[_0xea76('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xea76('0xd')]['database'],config[_0xea76('0xd')][_0xea76('0xe')],config['sequelizeHistory'][_0xea76('0xf')],config['sequelizeHistory'][_0xea76('0x10')])};db[_0xea76('0x11')]=db[_0xea76('0x1')]['import'](_0xea76('0x12'));db['VoiceChanSpy']=db[_0xea76('0x1')]['import'](_0xea76('0x13'));db[_0xea76('0x14')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x16'));db[_0xea76('0x17')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x18'));db['VoiceMusicOnHold']=db['sequelize']['import']('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0xea76('0x19')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/voiceQueue/voiceQueue.model');db[_0xea76('0x1a')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x1b'));db[_0xea76('0x1c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x1d'));db[_0xea76('0x1e')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x1f'));db[_0xea76('0x20')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x21'));db[_0xea76('0x22')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x23'));db[_0xea76('0x24')]=db[_0xea76('0x1')]['import'](_0xea76('0x25'));db['VoiceAgentReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x26'));db[_0xea76('0x27')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x28'));db[_0xea76('0x29')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x2a'));db['Trunk']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x2b'));db[_0xea76('0x2c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x2d'));db[_0xea76('0x2e')]=db[_0xea76('0x1')]['import'](_0xea76('0x2f'));db[_0xea76('0x30')]=db[_0xea76('0x1')]['import'](_0xea76('0x31'));db[_0xea76('0x32')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x33'));db[_0xea76('0x34')]=db['sequelize']['import'](_0xea76('0x35'));db[_0xea76('0x36')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x37'));db[_0xea76('0x38')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x39'));db[_0xea76('0x3a')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x3b'));db[_0xea76('0x3c')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xea76('0x3d')]=db['sequelize'][_0xea76('0x15')]('../api/mailServerIn/mailServerIn.model');db[_0xea76('0x3e')]=db['sequelize']['import'](_0xea76('0x3f'));db[_0xea76('0x40')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x41'));db[_0xea76('0x42')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x43'));db[_0xea76('0x44')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x45'));db['MailInteraction']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x46'));db[_0xea76('0x47')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x48'));db[_0xea76('0x49')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/mailApplication/mailApplication.model');db[_0xea76('0x4a')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x4b'));db[_0xea76('0x4c')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/dashboard/dashboard.model');db['DashboardItem']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x4d'));db[_0xea76('0x4e')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x4f'));db[_0xea76('0x50')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x51'));db['FaxInteraction']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x52'));db[_0xea76('0x53')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x54'));db[_0xea76('0x55')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x56'));db[_0xea76('0x57')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/faxQueueReport/faxQueueReport.model');db[_0xea76('0x58')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x59'));db[_0xea76('0x5a')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x5b'));db[_0xea76('0x5c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x5d'));db[_0xea76('0x5e')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x5f'));db['SmsQueue']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x60'));db[_0xea76('0x61')]=db['sequelize'][_0xea76('0x15')]('../api/openchannelAccount/openchannelAccount.model');db[_0xea76('0x62')]=db['sequelize']['import'](_0xea76('0x63'));db[_0xea76('0x64')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x65'));db[_0xea76('0x66')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/openchannelMessage/openchannelMessage.model');db[_0xea76('0x67')]=db[_0xea76('0x1')]['import'](_0xea76('0x68'));db[_0xea76('0x69')]=db['sequelize']['import'](_0xea76('0x6a'));db[_0xea76('0x6b')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x6c'));db[_0xea76('0x6d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x6e'));db[_0xea76('0x6f')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x70'));db['ChatMessage']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x71'));db['ChatOfflineMessage']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x72'));db[_0xea76('0x73')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x74'));db[_0xea76('0x75')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x76'));db[_0xea76('0x77')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x78'));db[_0xea76('0x79')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x7a'));db[_0xea76('0x7b')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/cmContact/cmContact.model');db[_0xea76('0x7c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x7d'));db['CmHopperBlack']=db['sequelize'][_0xea76('0x15')](_0xea76('0x7e'));db[_0xea76('0x7f')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x80'));db[_0xea76('0x81')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x82'));db[_0xea76('0x83')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x84'));db['Action']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x85'));db[_0xea76('0x86')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x87'));db[_0xea76('0x88')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x89'));db['Disposition']=db[_0xea76('0x1')]['import'](_0xea76('0x8a'));db[_0xea76('0x8b')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x8c'));db['Interval']=db['sequelize'][_0xea76('0x15')]('../api/interval/interval.model');db[_0xea76('0x8d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x8e'));db[_0xea76('0x8f')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x90'));db[_0xea76('0x91')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x92'));db[_0xea76('0x93')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x94'));db[_0xea76('0x95')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/sound/sound.model');db['Tag']=db[_0xea76('0x1')][_0xea76('0x15')]('../api/tag/tag.model');db[_0xea76('0x96')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/contactItemType/contactItemType.model');db[_0xea76('0x97')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x98'));db['CmHopperAdditionalPhone']=db[_0xea76('0x1')]['import']('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0xea76('0x99')]=db[_0xea76('0x1')]['import'](_0xea76('0x9a'));db['Trigger']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x9b'));db[_0xea76('0x9c')]=db['sequelize'][_0xea76('0x15')]('../api/variable/variable.model');db[_0xea76('0x9d')]=db['sequelize'][_0xea76('0x15')]('../api/integration/integration.model');db[_0xea76('0x9e')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x9f'));db[_0xea76('0xa0')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xa1'));db['AnalyticDefaultReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xa2'));db[_0xea76('0xa3')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xa4'));db[_0xea76('0xa5')]=db[_0xea76('0x1')]['import'](_0xea76('0xa6'));db[_0xea76('0xa7')]=db[_0xea76('0x1')]['import']('../api/analyticFieldReport/analyticFieldReport.model');db[_0xea76('0xa8')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xa9'));db[_0xea76('0xaa')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xab'));db[_0xea76('0xac')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xad'));db['SalesforceField']=db[_0xea76('0x1')]['import'](_0xea76('0xae'));db[_0xea76('0xaf')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xb0'));db[_0xea76('0xb1')]=db[_0xea76('0x1')]['import']('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db['SugarcrmField']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xb2'));db['DeskAccount']=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intDeskAccount/intDeskAccount.model');db[_0xea76('0xb3')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xb4'));db[_0xea76('0xb5')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xb6'));db[_0xea76('0xb7')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xb8'));db[_0xea76('0xb9')]=db[_0xea76('0x1')]['import'](_0xea76('0xba'));db[_0xea76('0xbb')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xbc'));db[_0xea76('0xbd')]=db['sequelize'][_0xea76('0x15')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0xea76('0xbe')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xbf'));db[_0xea76('0xc0')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intZendeskField/intZendeskField.model');db[_0xea76('0xc1')]=db[_0xea76('0x1')]['import'](_0xea76('0xc2'));db['FreshdeskConfiguration']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xc3'));db[_0xea76('0xc4')]=db[_0xea76('0x1')]['import'](_0xea76('0xc5'));db[_0xea76('0xc6')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xc7'));db[_0xea76('0xc8')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xc9'));db[_0xea76('0xca')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xcb'));db[_0xea76('0xcc')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xcd'));db[_0xea76('0xce')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xcf'));db[_0xea76('0xd0')]=db['sequelize'][_0xea76('0x15')]('../api/intServicenowField/intServicenowField.model');db[_0xea76('0xd1')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0xea76('0xd2')]=db[_0xea76('0x1')]['import'](_0xea76('0xd3'));db[_0xea76('0xd4')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xd5'));db[_0xea76('0xd6')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0xea76('0xd7')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xd8'));db[_0xea76('0xd9')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xda'));db[_0xea76('0x9d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xdb'));db[_0xea76('0xdc')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xdd'));db[_0xea76('0xde')]=db['sequelize']['import'](_0xea76('0xdf'));db[_0xea76('0xe0')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe1'));db[_0xea76('0xe2')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe3'));db['JscriptyQuestionReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe4'));db['JscriptySessionReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe5'));db[_0xea76('0xe6')]=db[_0xea76('0x1')]['import'](_0xea76('0xe7'));db['SquareReport']=db['sequelize'][_0xea76('0x15')](_0xea76('0xe8'));db[_0xea76('0xe9')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xea'));db[_0xea76('0xeb')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xec'));db[_0xea76('0xed')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/setting/setting.model');db[_0xea76('0xee')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xef'));db[_0xea76('0xf0')]=db[_0xea76('0x1')]['import'](_0xea76('0xf1'));db[_0xea76('0xf2')]=db[_0xea76('0x1')]['import'](_0xea76('0xf3'));db[_0xea76('0xf4')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xf5'));db[_0xea76('0xf6')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xf7'));db[_0xea76('0xf8')]=db[_0xea76('0x1')]['import']('../api/license/license.model');db[_0xea76('0xf9')]=db[_0xea76('0x1')]['import']('../api/campaign/campaign.model');db['Migration']=db[_0xea76('0x1')]['import']('../api/migration/migration.model');db[_0xea76('0xfa')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/attachment/attachment.model');db[_0xea76('0xfb')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xfc'));db[_0xea76('0xfd')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xfe'));db[_0xea76('0xff')]=db['sequelize'][_0xea76('0x15')]('../api/chatTransferReport/chatTransferReport.model');db[_0xea76('0x100')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x101'));db['OpenchannelTransferReport']=db[_0xea76('0x1')][_0xea76('0x15')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xea76('0x102')]=db[_0xea76('0x1')]['import'](_0xea76('0x103'));db[_0xea76('0x104')]=db[_0xea76('0x1')]['import'](_0xea76('0x105'));db[_0xea76('0x106')]=db[_0xea76('0x1')]['import']('../api/voicePrefix/voicePrefix.model');db[_0xea76('0x107')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x108'));db['UserProfileSection']=db[_0xea76('0x1')]['import'](_0xea76('0x109'));db[_0xea76('0x10a')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/userProfileResource/userProfileResource.model');db[_0xea76('0x10b')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x10c'));db[_0xea76('0x10d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x10e'));db['WhatsappApplication']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x10f'));db[_0xea76('0x110')]=db['sequelize']['import'](_0xea76('0x111'));db[_0xea76('0x112')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x113'));db[_0xea76('0x114')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x115'));db['WhatsappQueue']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x116'));db[_0xea76('0x117')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x118'));db[_0xea76('0x119')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x11a'));db[_0xea76('0x11b')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x11c'));db[_0xea76('0x11d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x11e'));db[_0xea76('0x11f')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x120'));db['User'][_0xea76('0x121')](db[_0xea76('0x1e')],{'as':'VoiceMail','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x121')](db['UserSetting'],{'as':_0xea76('0x124'),'onDelete':_0xea76('0x122'),'foreignKey':'UserId'});db[_0xea76('0x11')]['hasMany'](db[_0xea76('0x1a')],{'as':_0xea76('0x125'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x2e')],{'as':_0xea76('0x127'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x17')],{'as':'Extensions','onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x123')});db['User']['hasMany'](db[_0xea76('0x81')],{'as':_0xea76('0x129'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':_0xea76('0x83'),'foreignKey':'UserId'});db[_0xea76('0x11')]['hasMany'](db[_0xea76('0x64')],{'as':_0xea76('0x12a'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x6f')],{'as':_0xea76('0x12b'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')]['hasMany'](db[_0xea76('0x5c')],{'as':_0xea76('0x12c'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x12d')],{'as':_0xea76('0x12e'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db['MailInteraction'],{'as':_0xea76('0x12f'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x110')],{'as':'WhatsappInteractions','foreignKey':_0xea76('0x123')});db['User']['hasMany'](db[_0xea76('0x10b')],{'as':_0xea76('0x130'),'foreignKey':'SenderId'});db[_0xea76('0x11')][_0xea76('0x131')](db[_0xea76('0x107')],{'as':_0xea76('0x107'),'foreignKey':_0xea76('0x132')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x75')],{'as':_0xea76('0x134'),'through':'chat_group_has_users'});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x7b')],{'as':_0xea76('0x135'),'through':_0xea76('0x136')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x104')],{'as':_0xea76('0x137'),'through':_0xea76('0x138')});db[_0xea76('0x11')][_0xea76('0x133')](db['Team'],{'through':'user_has_teams'});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x139')],{'as':_0xea76('0x12f'),'through':_0xea76('0x13a')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x6f')],{'as':_0xea76('0x12b'),'through':'user_has_chat_interactions'});db[_0xea76('0x11')][_0xea76('0x133')](db['FaxInteraction'],{'as':'FaxInteractions','through':_0xea76('0x13b')});db[_0xea76('0x11')][_0xea76('0x133')](db['SmsInteraction'],{'as':_0xea76('0x12c'),'through':_0xea76('0x13c')});db['User'][_0xea76('0x133')](db[_0xea76('0x64')],{'as':_0xea76('0x12a'),'through':'user_has_openchannel_interactions'});db['User']['belongsToMany'](db[_0xea76('0x110')],{'as':_0xea76('0x13d'),'through':_0xea76('0x13e')});db[_0xea76('0x11')][_0xea76('0x133')](db['VoiceQueue'],{'as':'VoiceQueues','through':'UserVoiceQueue','required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x106')],{'as':_0xea76('0x13f'),'through':_0xea76('0x11d'),'required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x42')],{'as':'MailQueues','through':_0xea76('0x34'),'required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db['ChatQueue'],{'as':_0xea76('0x140'),'through':_0xea76('0x32'),'required':![],'hooks':!![]});db['User']['belongsToMany'](db[_0xea76('0x55')],{'as':_0xea76('0x141'),'through':_0xea76('0x36'),'required':![]});db[_0xea76('0x11')]['belongsToMany'](db[_0xea76('0x142')],{'as':_0xea76('0x143'),'through':_0xea76('0x38'),'required':![]});db[_0xea76('0x11')]['belongsToMany'](db[_0xea76('0x67')],{'as':_0xea76('0x144'),'through':'UserOpenchannelQueue','required':![]});db[_0xea76('0x11')]['belongsToMany'](db[_0xea76('0x145')],{'as':'WhatsappQueues','through':_0xea76('0x3c'),'required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x104')],{'through':_0xea76('0x138')});db['User'][_0xea76('0x133')](db[_0xea76('0x69')],{'as':_0xea76('0x146'),'through':_0xea76('0x147')});db[_0xea76('0x11')][_0xea76('0x133')](db['FaxAccount'],{'as':_0xea76('0x148'),'through':_0xea76('0x149')});db['User'][_0xea76('0x133')](db[_0xea76('0x40')],{'as':_0xea76('0x14a'),'through':'user_has_mail_accounts'});db['User'][_0xea76('0x133')](db[_0xea76('0x61')],{'as':'OpenchannelAccounts','through':_0xea76('0x14b')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x58')],{'as':_0xea76('0x14c'),'through':_0xea76('0x14d')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x10d')],{'as':_0xea76('0x14e'),'through':_0xea76('0x14f')});db['VoiceChanSpy'][_0xea76('0x126')](db[_0xea76('0x17')],{'as':_0xea76('0x150'),'onDelete':'cascade','foreignKey':'ChanSpyId'});db[_0xea76('0x14')]['hasMany'](db[_0xea76('0x17')],{'onDelete':'cascade'});db[_0xea76('0x17')]['hasMany'](db[_0xea76('0x17')],{'as':_0xea76('0x151'),'onDelete':_0xea76('0x122')});db[_0xea76('0x152')]['belongsToMany'](db['Sound'],{'as':_0xea76('0x153'),'through':_0xea76('0x154')});db['VoiceQueue'][_0xea76('0x126')](db['UserVoiceQueueRt'],{'as':_0xea76('0x155'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')]['hasMany'](db[_0xea76('0x7c')],{'as':_0xea76('0x157'),'foreignKey':'VoiceQueueId'});db[_0xea76('0x19')]['hasMany'](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x81')],{'as':_0xea76('0x158'),'foreignKey':'VoiceQueueId'});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':_0xea76('0x83'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x159')],{'as':_0xea76('0x15a'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x15b')],{'as':_0xea76('0x15c'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x131')](db['Trunk'],{'as':_0xea76('0x15d'),'foreignKey':_0xea76('0x15e')});db['VoiceQueue'][_0xea76('0x131')](db[_0xea76('0x15d')],{'as':_0xea76('0x15f'),'foreignKey':'TrunkBackupId'});db[_0xea76('0x19')][_0xea76('0x131')](db[_0xea76('0x160')],{'as':_0xea76('0x160'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x19')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db[_0xea76('0x19')]['belongsToMany'](db[_0xea76('0x104')],{'as':_0xea76('0x137'),'through':_0xea76('0x164')});db[_0xea76('0x19')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x30')});db['VoiceQueue'][_0xea76('0x133')](db[_0xea76('0xf6')],{'as':'Teams','through':_0xea76('0x119')});db['VoiceQueue'][_0xea76('0x133')](db['CmList'],{'as':_0xea76('0x166'),'through':_0xea76('0x167')});db['VoiceRecording'][_0xea76('0x131')](db['User'],{'as':'User','foreignKey':_0xea76('0x123')});db[_0xea76('0x1c')]['belongsTo'](db['User'],{'as':_0xea76('0x11'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x1e')][_0xea76('0x126')](db[_0xea76('0x20')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x169'),'sourceKey':_0xea76('0x16a')});db[_0xea76('0x20')][_0xea76('0x131')](db[_0xea76('0x1e')],{'foreignKey':_0xea76('0x169'),'targetKey':_0xea76('0x16a')});db[_0xea76('0x22')]['hasMany'](db[_0xea76('0x27')],{'as':_0xea76('0x16b'),'foreignKey':_0xea76('0x16c'),'constraints':![]});db['VoiceCallReport'][_0xea76('0x126')](db[_0xea76('0x16d')],{'as':_0xea76('0x16e'),'foreignKey':_0xea76('0x16c'),'constraints':![]});db[_0xea76('0x22')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x11'),'foreignKey':_0xea76('0x123')});db['VoiceCallReport'][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x3d')][_0xea76('0x131')](db['MailAccount'],{'as':_0xea76('0x40'),'foreignKey':'MailAccountId'});db[_0xea76('0x3d')]['belongsTo'](db[_0xea76('0x117')],{'as':_0xea76('0x117'),'foreignKey':'CloudProviderId','onDelete':_0xea76('0x171')});db[_0xea76('0x3e')][_0xea76('0x131')](db[_0xea76('0x40')],{'as':_0xea76('0x40'),'foreignKey':_0xea76('0x172')});db[_0xea76('0x3e')][_0xea76('0x131')](db[_0xea76('0x117')],{'as':_0xea76('0x117'),'foreignKey':_0xea76('0x173'),'onDelete':_0xea76('0x171')});db[_0xea76('0x40')][_0xea76('0x121')](db[_0xea76('0x3d')],{'as':_0xea76('0x174'),'onDelete':_0xea76('0x122')});db[_0xea76('0x40')][_0xea76('0x121')](db[_0xea76('0x3e')],{'as':_0xea76('0x175'),'onDelete':_0xea76('0x122')});db[_0xea76('0x40')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':'Dispositions','foreignKey':'MailAccountId','onDelete':_0xea76('0x122')});db[_0xea76('0x40')][_0xea76('0x126')](db['CannedAnswer'],{'as':_0xea76('0x177'),'foreignKey':_0xea76('0x172')});db[_0xea76('0x40')][_0xea76('0x126')](db['MailMessage'],{'as':'Messages','foreignKey':_0xea76('0x172')});db[_0xea76('0x40')]['hasMany'](db['MailInteraction'],{'as':_0xea76('0x178')});db[_0xea76('0x40')][_0xea76('0x126')](db[_0xea76('0x49')],{'as':'Applications'});db[_0xea76('0x40')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x40')][_0xea76('0x131')](db[_0xea76('0x99')],{'as':_0xea76('0x99'),'foreignKey':_0xea76('0x17b')});db[_0xea76('0x40')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db['MailAccount'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':'user_has_mail_accounts'});db['MailQueue'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x34')});db[_0xea76('0x42')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x17c'),'as':'Teams'});db['MailInteraction'][_0xea76('0x126')](db[_0xea76('0x47')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x17d')});db[_0xea76('0x139')][_0xea76('0x131')](db[_0xea76('0x40')],{'as':'Account','foreignKey':_0xea76('0x172')});db['MailInteraction'][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':'ContactId'});db[_0xea76('0x139')]['belongsTo'](db[_0xea76('0x11')],{'as':'Owner','foreignKey':_0xea76('0x123')});db[_0xea76('0x139')][_0xea76('0x133')](db['Tag'],{'through':_0xea76('0x17e'),'as':_0xea76('0x17f')});db['MailInteraction'][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x17e'),'as':'ThroughTags'});db[_0xea76('0x139')]['belongsToMany'](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x13a'),'foreignKey':'MailInteractionId'});db[_0xea76('0x47')][_0xea76('0x126')](db['Attachment'],{'as':_0xea76('0x182'),'onDelete':_0xea76('0x122')});db['MailMessage'][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x11')});db['MailMessage'][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x16f')});db['MailMessage'][_0xea76('0x131')](db[_0xea76('0x139')],{'as':_0xea76('0x183'),'foreignKey':_0xea76('0x17d')});db[_0xea76('0x47')][_0xea76('0x131')](db['MailAccount'],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x172')});db[_0xea76('0x47')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':'ChatWebsite','foreignKey':_0xea76('0x185')});db[_0xea76('0x47')]['belongsTo'](db[_0xea76('0x186')],{'as':_0xea76('0x186'),'foreignKey':_0xea76('0x187')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x42')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x40')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x160')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x180')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x188')});db['MailQueueReport'][_0xea76('0x131')](db[_0xea76('0x40')],{});db[_0xea76('0x4a')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x4a')]['belongsTo'](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':'ContactId'});db[_0xea76('0x4a')][_0xea76('0x131')](db[_0xea76('0x139')],{});db['MailQueueReport'][_0xea76('0x131')](db[_0xea76('0x47')],{});db[_0xea76('0x4a')][_0xea76('0x131')](db['User'],{});db[_0xea76('0x4a')][_0xea76('0x131')](db['MailQueue'],{});db[_0xea76('0x4c')][_0xea76('0x126')](db[_0xea76('0x189')],{'as':_0xea76('0x18a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':_0xea76('0x18b'),'foreignKey':'FaxAccountId','onDelete':'cascade'});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':_0xea76('0x177'),'foreignKey':_0xea76('0x18c')});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x12d')],{'as':'Interactions'});db['FaxAccount'][_0xea76('0x126')](db[_0xea76('0x50')],{'as':_0xea76('0x151')});db[_0xea76('0x4e')]['hasMany'](db[_0xea76('0x17')],{'as':_0xea76('0x18d'),'onDelete':_0xea76('0x122')});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x53')],{'as':'Messages'});db[_0xea76('0x4e')][_0xea76('0x131')](db[_0xea76('0x15d')],{'as':_0xea76('0x15d')});db[_0xea76('0x4e')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x4e')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db[_0xea76('0x4e')]['belongsToMany'](db[_0xea76('0x11')],{'as':'Agents','through':_0xea76('0x149')});db['FaxApplication'][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x50')][_0xea76('0x131')](db[_0xea76('0x55')],{'onDelete':'restrict'});db[_0xea76('0x50')][_0xea76('0x131')](db[_0xea76('0x4e')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x50')][_0xea76('0x131')](db[_0xea76('0x180')],{'onDelete':_0xea76('0x171'),'foreignKey':'TagId'});db[_0xea76('0x12d')]['hasMany'](db['FaxMessage'],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x18e')});db['FaxInteraction'][_0xea76('0x131')](db[_0xea76('0x4e')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x18c')});db['FaxInteraction']['belongsTo'](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x12d')][_0xea76('0x131')](db['User'],{'as':_0xea76('0x18f'),'foreignKey':'UserId'});db[_0xea76('0x12d')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x190'),'as':_0xea76('0x17f')});db[_0xea76('0x12d')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':'fax_interaction_has_tags','as':_0xea76('0x191')});db[_0xea76('0x12d')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x181'),'through':_0xea76('0x13b'),'foreignKey':_0xea76('0x18e')});db[_0xea76('0x53')]['belongsTo'](db[_0xea76('0x11')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x11')});db[_0xea76('0x53')][_0xea76('0x131')](db['FaxInteraction'],{'as':_0xea76('0x183'),'foreignKey':_0xea76('0x18e')});db[_0xea76('0x53')]['belongsTo'](db[_0xea76('0x7b')],{'onDelete':'cascade','as':'Contact'});db['FaxMessage']['belongsTo'](db['Attachment'],{'as':_0xea76('0xfa'),'foreignKey':_0xea76('0x192')});db[_0xea76('0x53')][_0xea76('0x131')](db[_0xea76('0x4e')],{'as':_0xea76('0x184'),'foreignKey':'FaxAccountId'});db[_0xea76('0x55')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x36')});db[_0xea76('0x55')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x193'),'as':_0xea76('0x194')});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x4e')],{});db[_0xea76('0x57')]['belongsTo'](db['CmList'],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':'ContactId'});db[_0xea76('0x57')]['belongsTo'](db[_0xea76('0x12d')],{});db[_0xea76('0x57')][_0xea76('0x131')](db['FaxMessage'],{});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x11')],{});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x55')],{});db[_0xea76('0x58')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':'Dispositions','foreignKey':'SmsAccountId','onDelete':'cascade'});db[_0xea76('0x58')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':'Answers','foreignKey':_0xea76('0x195')});db['SmsAccount']['hasMany'](db['SmsMessage'],{'as':_0xea76('0x168'),'foreignKey':_0xea76('0x195')});db[_0xea76('0x58')][_0xea76('0x126')](db[_0xea76('0x5c')],{'as':_0xea76('0x178')});db[_0xea76('0x58')]['hasMany'](db[_0xea76('0x5a')],{'as':'Applications'});db[_0xea76('0x58')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x58')]['belongsTo'](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db[_0xea76('0x58')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':'user_has_sms_accounts'});db['SmsApplication'][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':'restrict'});db['SmsApplication'][_0xea76('0x131')](db[_0xea76('0x142')],{'onDelete':_0xea76('0x171')});db['SmsApplication']['belongsTo'](db[_0xea76('0x58')],{'onDelete':_0xea76('0x171')});db['SmsApplication']['belongsTo'](db[_0xea76('0x160')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x5a')][_0xea76('0x131')](db['Tag'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x188')});db[_0xea76('0x5c')][_0xea76('0x126')](db[_0xea76('0x5e')],{'as':_0xea76('0x168'),'onDelete':'cascade','foreignKey':_0xea76('0x196')});db[_0xea76('0x5c')][_0xea76('0x131')](db[_0xea76('0x58')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x195')});db[_0xea76('0x5c')]['belongsTo'](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':_0xea76('0x170')});db[_0xea76('0x5c')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':'Owner','foreignKey':_0xea76('0x123')});db[_0xea76('0x5c')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x197'),'as':_0xea76('0x17f')});db[_0xea76('0x5c')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x197'),'as':_0xea76('0x191')});db[_0xea76('0x5c')]['belongsToMany'](db[_0xea76('0x11')],{'as':'Users','through':'user_has_sms_interactions','foreignKey':_0xea76('0x196')});db[_0xea76('0x5e')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':'User'});db[_0xea76('0x5e')][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':'cascade','as':'Contact'});db[_0xea76('0x5e')]['belongsTo'](db[_0xea76('0x5c')],{'onDelete':_0xea76('0x122'),'as':'Interaction','foreignKey':_0xea76('0x196')});db[_0xea76('0x5e')][_0xea76('0x131')](db[_0xea76('0x58')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x195')});db[_0xea76('0x142')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x38'),'foreignKey':_0xea76('0x198')});db[_0xea76('0x142')][_0xea76('0x133')](db['Team'],{'through':'team_has_sms_queues','as':'Teams'});db['OpenchannelAccount'][_0xea76('0x126')](db[_0xea76('0x176')],{'as':'Dispositions','foreignKey':_0xea76('0x199'),'onDelete':_0xea76('0x122')});db[_0xea76('0x61')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':'Answers','foreignKey':_0xea76('0x199')});db[_0xea76('0x61')][_0xea76('0x126')](db['OpenchannelInteraction'],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0xea76('0x126')](db['OpenchannelMessage'],{'as':'Messages','foreignKey':_0xea76('0x199')});db[_0xea76('0x61')]['hasMany'](db[_0xea76('0x62')],{'as':_0xea76('0x151'),'foreignKey':'OpenchannelAccountId'});db[_0xea76('0x61')][_0xea76('0x131')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0xea76('0x61')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db['OpenchannelAccount'][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x14b')});db[_0xea76('0x62')][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x62')]['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x19a')});db[_0xea76('0x62')][_0xea76('0x131')](db[_0xea76('0x61')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x199')});db[_0xea76('0x62')][_0xea76('0x131')](db['Interval'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x62')]['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':_0xea76('0x188')});db[_0xea76('0x64')][_0xea76('0x126')](db[_0xea76('0x66')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x19b')});db[_0xea76('0x64')][_0xea76('0x131')](db['OpenchannelAccount'],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x199')});db[_0xea76('0x64')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x64')][_0xea76('0x131')](db['User'],{'as':'Owner','foreignKey':'UserId'});db[_0xea76('0x64')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x19c'),'as':_0xea76('0x17f')});db['OpenchannelInteraction'][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x19c'),'as':_0xea76('0x191')});db[_0xea76('0x64')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x19d'),'foreignKey':_0xea76('0x19b')});db['OpenchannelMessage'][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x11')});db[_0xea76('0x66')][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x16f')});db[_0xea76('0x66')][_0xea76('0x131')](db[_0xea76('0x64')],{'onDelete':'cascade','as':'Interaction','foreignKey':'OpenchannelInteractionId'});db[_0xea76('0x66')]['belongsTo'](db[_0xea76('0xfa')],{'as':_0xea76('0xfa'),'foreignKey':_0xea76('0x192')});db[_0xea76('0x66')][_0xea76('0x131')](db[_0xea76('0x61')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x199')});db[_0xea76('0x67')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x3a'),'foreignKey':_0xea76('0x19a')});db[_0xea76('0x67')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x19e'),'as':'Teams'});db[_0xea76('0x69')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':_0xea76('0x18b'),'foreignKey':_0xea76('0x185'),'onDelete':_0xea76('0x122')});db[_0xea76('0x69')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':_0xea76('0x177'),'foreignKey':_0xea76('0x185')});db['ChatWebsite']['hasMany'](db[_0xea76('0x77')],{'as':_0xea76('0x19f')});db[_0xea76('0x69')]['hasMany'](db[_0xea76('0x6f')],{'as':'Interactions'});db[_0xea76('0x69')][_0xea76('0x126')](db[_0xea76('0x6d')],{'as':_0xea76('0x151')});db['ChatWebsite']['hasMany'](db[_0xea76('0x1a0')],{'as':_0xea76('0x168')});db[_0xea76('0x69')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x69')]['belongsTo'](db[_0xea76('0x160')],{'as':_0xea76('0x160'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x69')][_0xea76('0x131')](db[_0xea76('0x40')],{'as':_0xea76('0x40'),'foreignKey':_0xea76('0x172')});db['ChatWebsite'][_0xea76('0x131')](db['Pause'],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db['ChatWebsite'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':_0xea76('0x147')});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x61')],{});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':'ContactId'});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x64')],{});db[_0xea76('0x6b')][_0xea76('0x131')](db['OpenchannelMessage'],{});db[_0xea76('0x6b')]['belongsTo'](db['User'],{});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x67')],{});db[_0xea76('0x6d')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x1a1'),'foreignKey':_0xea76('0x123'),'onDelete':_0xea76('0x171')});db['ChatApplication'][_0xea76('0x131')](db['ChatQueue'],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0xea76('0x171')});db[_0xea76('0x6d')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':_0xea76('0x1a2'),'foreignKey':_0xea76('0x185'),'onDelete':_0xea76('0x171')});db[_0xea76('0x6d')]['belongsTo'](db['Tag'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x188')});db['ChatInteraction'][_0xea76('0x126')](db[_0xea76('0x1a0')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1a3')});db[_0xea76('0x6f')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':_0xea76('0x184'),'foreignKey':'ChatWebsiteId'});db[_0xea76('0x6f')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x6f')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x18f'),'foreignKey':'UserId'});db['ChatInteraction']['belongsToMany'](db[_0xea76('0x180')],{'through':'chat_interaction_has_tags','as':_0xea76('0x17f')});db['ChatInteraction']['belongsToMany'](db[_0xea76('0x180')],{'through':_0xea76('0x1a4'),'as':_0xea76('0x191')});db['ChatInteraction'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x1a5'),'foreignKey':'ChatInteractionId'});db[_0xea76('0x1a0')][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x122'),'as':'User'});db['ChatMessage'][_0xea76('0x131')](db['CmContact'],{'onDelete':'cascade','as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x1a0')][_0xea76('0x131')](db[_0xea76('0x6f')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x183'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0xea76('0x131')](db['Attachment'],{'as':_0xea76('0xfa'),'foreignKey':_0xea76('0x192')});db[_0xea76('0x1a0')]['belongsTo'](db[_0xea76('0x69')],{'as':_0xea76('0x184'),'foreignKey':'ChatWebsiteId'});db['ChatOfflineMessage'][_0xea76('0x126')](db[_0xea76('0xfa')],{'as':'Attachments','foreignKey':_0xea76('0x187'),'onDelete':_0xea76('0x122'),'hooks':!![]});db['ChatOfflineMessage'][_0xea76('0x131')](db['CmContact'],{'onDelete':_0xea76('0x122'),'as':'Contact','foreignKey':_0xea76('0x170')});db[_0xea76('0x186')]['belongsTo'](db[_0xea76('0x69')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x185')});db[_0xea76('0x73')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x32'),'hooks':!![]});db[_0xea76('0x73')]['belongsToMany'](db['Team'],{'through':_0xea76('0x1a6'),'as':_0xea76('0x194')});db[_0xea76('0x75')][_0xea76('0x126')](db[_0xea76('0xe0')],{'as':_0xea76('0x168'),'foreignKey':_0xea76('0x1a7'),'onDelete':_0xea76('0x122')});db[_0xea76('0x75')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x155'),'through':_0xea76('0x1a8')});db[_0xea76('0x77')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':_0xea76('0x1a2'),'foreignKey':_0xea76('0x185')});db[_0xea76('0x79')]['hasMany'](db[_0xea76('0x7b')],{'as':'Contacts','foreignKey':_0xea76('0x1a9')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x97')],{'as':_0xea76('0x1aa'),'foreignKey':'CmContactId'});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x7c')],{'as':_0xea76('0x157'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x81')],{'as':_0xea76('0x158'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':'ReportAgentPreview','foreignKey':'ContactId'});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x15b')],{'as':_0xea76('0x15c'),'foreignKey':_0xea76('0x170')});db['CmContact'][_0xea76('0x126')](db[_0xea76('0x64')],{'as':'OpenchannelInteractions','foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x6f')],{'as':'ChatInteractions','foreignKey':'ContactId','onDelete':'restrict'});db[_0xea76('0x7b')][_0xea76('0x126')](db['SmsInteraction'],{'as':_0xea76('0x12c'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db[_0xea76('0x7b')]['hasMany'](db[_0xea76('0x12d')],{'as':_0xea76('0x12e'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db['CmContact']['hasMany'](db[_0xea76('0x139')],{'as':_0xea76('0x12f'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db[_0xea76('0x7b')][_0xea76('0x131')](db[_0xea76('0x79')],{'as':_0xea76('0x1ab'),'foreignKey':_0xea76('0x1a9')});db['CmContact']['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x7b')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':'cm_user_has_contacts'});db[_0xea76('0x7b')][_0xea76('0x133')](db[_0xea76('0x180')],{'as':_0xea76('0x17f'),'through':'cm_contact_has_tags'});db[_0xea76('0x7b')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x1ac'),'as':_0xea76('0x191')});db[_0xea76('0x7c')][_0xea76('0x126')](db[_0xea76('0x1ad')],{'as':_0xea76('0x1ae'),'foreignKey':_0xea76('0x1af')});db[_0xea76('0x7c')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x122')});db['CmHopper'][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x7c')][_0xea76('0x131')](db['User'],{'as':_0xea76('0x1a1'),'foreignKey':_0xea76('0x123')});db['CmHopper']['belongsTo'](db[_0xea76('0x19')],{'as':_0xea76('0x1b0'),'foreignKey':_0xea76('0x156'),'onDelete':_0xea76('0x122')});db['CmHopper']['belongsTo'](db['Campaign'],{'as':_0xea76('0xf9'),'foreignKey':_0xea76('0x1b1'),'onDelete':_0xea76('0x122')});db[_0xea76('0x7c')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x18f'),'foreignKey':_0xea76('0x1b2')});db[_0xea76('0x159')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x122')});db[_0xea76('0x159')][_0xea76('0x131')](db['CmList'],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x159')][_0xea76('0x131')](db[_0xea76('0x19')],{'as':'Queue','foreignKey':_0xea76('0x156'),'onDelete':_0xea76('0x122')});db[_0xea76('0x159')][_0xea76('0x131')](db[_0xea76('0xf9')],{'as':_0xea76('0xf9'),'foreignKey':_0xea76('0x1b1'),'onDelete':_0xea76('0x122')});db[_0xea76('0x86')][_0xea76('0x126')](db['Condition'],{'as':{'plural':'All','singular':_0xea76('0x1b3')},'foreignKey':_0xea76('0x1b4'),'onDelete':'cascade','hooks':!![]});db[_0xea76('0x86')][_0xea76('0x126')](db[_0xea76('0x8b')],{'as':{'plural':_0xea76('0x1b5'),'singular':_0xea76('0x1b6')},'foreignKey':_0xea76('0x1b7'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x86')][_0xea76('0x126')](db[_0xea76('0x1b8')],{'as':_0xea76('0x1b9'),'foreignKey':_0xea76('0x1ba'),'onDelete':_0xea76('0x122'),'hooks':!![]});db['Disposition'][_0xea76('0x126')](db[_0xea76('0x176')],{'as':_0xea76('0x18b'),'foreignKey':_0xea76('0x1bb'),'onDelete':_0xea76('0x122')});db[_0xea76('0x160')][_0xea76('0x126')](db[_0xea76('0x160')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0xea76('0x122'),'hooks':!![],'required':![]});db[_0xea76('0x160')]['hasMany'](db['VoiceExtension'],{'as':_0xea76('0x1bc'),'foreignKey':_0xea76('0x161'),'onDelete':_0xea76('0x171')});db[_0xea76('0x160')]['hasMany'](db[_0xea76('0x49')],{'as':_0xea76('0x1bd'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x160')][_0xea76('0x126')](db[_0xea76('0x6d')],{'as':_0xea76('0x1be'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x160')][_0xea76('0x126')](db[_0xea76('0x50')],{'as':_0xea76('0x1bf'),'foreignKey':'IntervalId'});db[_0xea76('0x160')][_0xea76('0x126')](db['SmsApplication'],{'as':_0xea76('0x1c0'),'foreignKey':'IntervalId'});db[_0xea76('0x93')][_0xea76('0x131')](db[_0xea76('0x40')],{});db[_0xea76('0x93')]['belongsTo'](db[_0xea76('0x1c1')],{'foreignKey':_0xea76('0x1c2')});db[_0xea76('0x93')][_0xea76('0x131')](db[_0xea76('0xa0')],{'foreignKey':_0xea76('0x1c3')});db[_0xea76('0x95')][_0xea76('0x133')](db[_0xea76('0x152')],{'as':_0xea76('0x1c4'),'through':'moh_has_sounds','onDelete':'restrict'});db['Tag']['belongsToMany'](db[_0xea76('0x7b')],{'through':_0xea76('0x1ac')});db[_0xea76('0x180')]['belongsToMany'](db[_0xea76('0x6f')],{'through':_0xea76('0x1a4')});db[_0xea76('0x180')][_0xea76('0x133')](db['MailInteraction'],{'through':_0xea76('0x17e')});db['Tag'][_0xea76('0x133')](db[_0xea76('0x5c')],{'through':_0xea76('0x197')});db[_0xea76('0x180')][_0xea76('0x133')](db[_0xea76('0x12d')],{'through':_0xea76('0x190')});db['Tag']['belongsToMany'](db[_0xea76('0x64')],{'through':_0xea76('0x19c')});db[_0xea76('0x180')]['belongsToMany'](db['WhatsappInteraction'],{'through':'whatsapp_interaction_has_tags'});db[_0xea76('0x97')][_0xea76('0x131')](db[_0xea76('0x96')],{'as':_0xea76('0x1c5'),'foreignKey':_0xea76('0x1c6')});db[_0xea76('0x1ad')][_0xea76('0x131')](db[_0xea76('0x7c')],{'as':_0xea76('0x1c7'),'foreignKey':_0xea76('0x1af')});db[_0xea76('0x97')][_0xea76('0x131')](db['CmContact'],{'as':_0xea76('0x16f'),'foreignKey':'CmContactId'});db[_0xea76('0x1c8')][_0xea76('0x126')](db[_0xea76('0x8b')],{'as':{'plural':_0xea76('0x1c9'),'singular':_0xea76('0x1ca')},'foreignKey':_0xea76('0x1cb'),'onDelete':'cascade','hooks':!![]});db['Trigger'][_0xea76('0x126')](db[_0xea76('0x8b')],{'as':{'plural':_0xea76('0x1cc'),'singular':_0xea76('0x1cd')},'foreignKey':_0xea76('0x1ce'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x1c8')][_0xea76('0x126')](db['Action'],{'as':'Actions','foreignKey':_0xea76('0x1cf'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0xa0')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1c3'),'hooks':!![]});db[_0xea76('0x1c1')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1c2')});db[_0xea76('0xa5')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d1')});db[_0xea76('0xa7')]['belongsTo'](db[_0xea76('0xa5')],{'foreignKey':_0xea76('0x1d1')});db[_0xea76('0xaa')]['hasMany'](db['SalesforceConfiguration'],{'as':_0xea76('0x1d2'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xac')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':_0xea76('0x1d5'),'onDelete':_0xea76('0x122'),'foreignKey':'SubjectId'});db[_0xea76('0xac')]['hasMany'](db[_0xea76('0x1d4')],{'as':_0xea76('0x1d6'),'onDelete':'cascade','foreignKey':_0xea76('0x1d7')});db[_0xea76('0xac')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':'Fields','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xac')][_0xea76('0x131')](db[_0xea76('0xaa')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0x1d4')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0x1d4')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':_0xea76('0x1db'),'foreignKey':'DescriptionId'});db[_0xea76('0x1d4')][_0xea76('0x126')](db['SalesforceField'],{'as':_0xea76('0x1dc'),'foreignKey':'FieldId'});db[_0xea76('0x1d4')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xaf')]['hasMany'](db['SugarcrmConfiguration'],{'as':_0xea76('0x1d2'),'onDelete':'cascade','foreignKey':_0xea76('0x1d3')});db[_0xea76('0xb1')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':'Subjects','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xb1')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1d6'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d7')});db['SugarcrmConfiguration'][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xb1')]['belongsTo'](db[_0xea76('0xaf')],{'as':_0xea76('0x184'),'foreignKey':'AccountId'});db[_0xea76('0x1de')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0x1de')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1db'),'foreignKey':'DescriptionId'});db[_0xea76('0x1de')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':'Field','foreignKey':_0xea76('0x1d8')});db[_0xea76('0x1de')][_0xea76('0x131')](db['Variable'],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db['DeskAccount']['hasMany'](db[_0xea76('0xb3')],{'as':_0xea76('0x1d2'),'onDelete':_0xea76('0x122'),'foreignKey':'AccountId'});db['DeskConfiguration'][_0xea76('0x126')](db['DeskField'],{'as':_0xea76('0x1d5'),'onDelete':_0xea76('0x122'),'foreignKey':'SubjectId'});db['DeskConfiguration'][_0xea76('0x126')](db[_0xea76('0xb5')],{'as':_0xea76('0x1d6'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xb3')][_0xea76('0x126')](db[_0xea76('0xb5')],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db['DeskConfiguration']['belongsTo'](db[_0xea76('0x1df')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xb3')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x1e0')});db[_0xea76('0xb5')][_0xea76('0x126')](db['DeskField'],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db['DeskField'][_0xea76('0x126')](db[_0xea76('0xb5')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xb5')][_0xea76('0x126')](db['DeskField'],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xb5')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xb7')]['hasMany'](db[_0xea76('0xb9')],{'as':_0xea76('0x1d2'),'onDelete':'cascade','foreignKey':_0xea76('0x1d3')});db['ZohoConfiguration'][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':_0xea76('0x1d5'),'onDelete':'cascade','foreignKey':_0xea76('0x1da')});db[_0xea76('0xb9')][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':'Descriptions','onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xea76('0xb9')][_0xea76('0x126')](db['ZohoField'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xb9')][_0xea76('0x131')](db[_0xea76('0xb7')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db['ZohoField'][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':'Subject','foreignKey':'SubjectId'});db['ZohoField'][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xbb')][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xbb')]['belongsTo'](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xbd')]['hasMany'](db['ZendeskConfiguration'],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0xea76('0x126')](db[_0xea76('0xc0')],{'as':_0xea76('0x1d5'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xbe')]['hasMany'](db['ZendeskField'],{'as':_0xea76('0x1d6'),'foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0xea76('0x126')](db['ZendeskField'],{'as':_0xea76('0x1d0'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xbe')]['belongsTo'](db[_0xea76('0xbd')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xbe')]['belongsToMany'](db[_0xea76('0x180')],{'through':'int_zendesk_configuration_has_tags'});db[_0xea76('0xc0')][_0xea76('0x126')](db['ZendeskField'],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xc0')][_0xea76('0x126')](db[_0xea76('0xc0')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xc0')][_0xea76('0x126')](db[_0xea76('0xc0')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xc0')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':'Variable','foreignKey':_0xea76('0x1dd')});db['FreshdeskAccount'][_0xea76('0x126')](db[_0xea76('0x1e1')],{'as':_0xea76('0x1d2'),'onDelete':'cascade','foreignKey':_0xea76('0x1d3')});db[_0xea76('0x1e1')][_0xea76('0x126')](db[_0xea76('0xc4')],{'as':_0xea76('0x1d5'),'onDelete':'cascade','foreignKey':_0xea76('0x1da')});db[_0xea76('0x1e1')]['hasMany'](db[_0xea76('0xc4')],{'as':_0xea76('0x1d6'),'onDelete':'cascade','foreignKey':_0xea76('0x1d7')});db[_0xea76('0x1e1')][_0xea76('0x126')](db[_0xea76('0xc4')],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0x1e1')][_0xea76('0x131')](db[_0xea76('0xc1')],{'as':'Account','foreignKey':_0xea76('0x1d3')});db[_0xea76('0x1e1')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x1e2')});db[_0xea76('0xc4')][_0xea76('0x126')](db[_0xea76('0xc4')],{'as':_0xea76('0x1d9'),'foreignKey':'SubjectId'});db['FreshdeskField'][_0xea76('0x126')](db['FreshdeskField'],{'as':'Description','foreignKey':_0xea76('0x1d7')});db['FreshdeskField'][_0xea76('0x126')](db['FreshdeskField'],{'as':'Field','foreignKey':_0xea76('0x1d8')});db[_0xea76('0xc4')]['belongsTo'](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xc6')][_0xea76('0x126')](db[_0xea76('0xc8')],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':'AccountId'});db[_0xea76('0xc8')][_0xea76('0x126')](db[_0xea76('0xca')],{'as':_0xea76('0x1d5'),'foreignKey':'SubjectId'});db[_0xea76('0xc8')]['hasMany'](db['VtigerField'],{'as':_0xea76('0x1d6'),'foreignKey':'DescriptionId'});db[_0xea76('0xc8')][_0xea76('0x126')](db[_0xea76('0xca')],{'as':'Fields','foreignKey':_0xea76('0x1d8')});db[_0xea76('0xc8')][_0xea76('0x131')](db['VtigerAccount'],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xca')]['hasMany'](db[_0xea76('0xca')],{'as':'Subject','foreignKey':'SubjectId'});db['VtigerField'][_0xea76('0x126')](db[_0xea76('0xca')],{'as':'Description','foreignKey':_0xea76('0x1d7')});db['VtigerField'][_0xea76('0x126')](db['VtigerField'],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db['VtigerField'][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':'Variable','foreignKey':_0xea76('0x1dd')});db[_0xea76('0xcc')][_0xea76('0x126')](db[_0xea76('0xce')],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xce')]['hasMany'](db[_0xea76('0xd0')],{'as':_0xea76('0x1d5'),'foreignKey':_0xea76('0x1da')});db['ServicenowConfiguration'][_0xea76('0x126')](db[_0xea76('0xd0')],{'as':_0xea76('0x1d6'),'foreignKey':'DescriptionId'});db[_0xea76('0xce')][_0xea76('0x126')](db['ServicenowField'],{'as':_0xea76('0x1d0'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xce')][_0xea76('0x131')](db[_0xea76('0xcc')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd0')][_0xea76('0x126')](db[_0xea76('0xd0')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db['ServicenowField'][_0xea76('0x126')](db['ServicenowField'],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db['ServicenowField']['hasMany'](db[_0xea76('0xd0')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xd0')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db['Dynamics365Account'][_0xea76('0x126')](db[_0xea76('0xd2')],{'as':_0xea76('0x1d2'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd1')][_0xea76('0x131')](db['CloudProvider'],{'as':'CloudProvider','foreignKey':_0xea76('0x173')});db[_0xea76('0xd2')][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':'Subjects','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xd2')]['hasMany'](db[_0xea76('0xd4')],{'as':_0xea76('0x1d6'),'onDelete':_0xea76('0x122'),'foreignKey':'DescriptionId'});db['Dynamics365Configuration'][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':_0xea76('0x1d0'),'onDelete':'cascade','foreignKey':_0xea76('0x1d8')});db['Dynamics365Configuration'][_0xea76('0x131')](db[_0xea76('0xd1')],{'as':'Account','foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd4')][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':'Subject','foreignKey':_0xea76('0x1da')});db[_0xea76('0xd4')][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db['Dynamics365Field'][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db['Dynamics365Field'][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xd6')][_0xea76('0x126')](db[_0xea76('0xd7')],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db['FreshsalesConfiguration'][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Subjects','foreignKey':_0xea76('0x1da')});db[_0xea76('0xd7')][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Descriptions','foreignKey':_0xea76('0x1d7')});db[_0xea76('0xd7')]['hasMany'](db[_0xea76('0xd9')],{'as':_0xea76('0x1d0'),'foreignKey':_0xea76('0x1d8')});db['FreshsalesConfiguration'][_0xea76('0x131')](db[_0xea76('0xd6')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd9')]['hasMany'](db[_0xea76('0xd9')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xd9')][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Description','foreignKey':_0xea76('0x1d7')});db[_0xea76('0xd9')][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Field','foreignKey':_0xea76('0x1d8')});db[_0xea76('0xd9')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':'Variable','foreignKey':_0xea76('0x1dd')});db['ChatQueueReport'][_0xea76('0x131')](db[_0xea76('0x69')],{});db['ChatQueueReport'][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0xde')]['belongsTo'](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':'ContactId'});db[_0xea76('0xde')][_0xea76('0x131')](db[_0xea76('0x6f')],{});db[_0xea76('0xde')][_0xea76('0x131')](db[_0xea76('0x1a0')],{});db[_0xea76('0xde')][_0xea76('0x131')](db['User'],{});db[_0xea76('0xde')][_0xea76('0x131')](db[_0xea76('0x73')],{});db[_0xea76('0xe0')]['belongsTo'](db['User'],{'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1e3')});db[_0xea76('0xe0')]['belongsTo'](db[_0xea76('0x11')],{'onDelete':'cascade','foreignKey':_0xea76('0x1e4')});db[_0xea76('0x15b')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0xea76('0x1e5'),'onDelete':_0xea76('0x122')});db['JscriptySessionReport'][_0xea76('0x126')](db['JscriptyAnswerReport'],{'foreignKey':_0xea76('0x1e5'),'onDelete':'cascade'});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x58')],{});db[_0xea76('0xe6')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db['SmsQueueReport'][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db['SmsQueueReport'][_0xea76('0x131')](db[_0xea76('0x5c')],{});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x5e')],{});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x11')],{});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x142')],{});db[_0xea76('0xeb')][_0xea76('0x126')](db[_0xea76('0x15b')],{'foreignKey':_0xea76('0x1e6')});db['JscriptyProject'][_0xea76('0x126')](db['JscriptyQuestionReport'],{'foreignKey':_0xea76('0x1e6')});db[_0xea76('0xeb')][_0xea76('0x126')](db[_0xea76('0xe2')],{'foreignKey':_0xea76('0x1e6')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x1e7')});db['Team'][_0xea76('0x133')](db['VoiceQueue'],{'through':'TeamVoiceQueue','as':_0xea76('0x1e8')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x42')],{'through':'team_has_mail_queues','as':'MailQueues'});db[_0xea76('0xf6')]['belongsToMany'](db['ChatQueue'],{'through':'team_has_chat_queues','as':_0xea76('0x140')});db[_0xea76('0xf6')]['belongsToMany'](db[_0xea76('0x55')],{'through':_0xea76('0x193'),'as':'FaxQueues'});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x142')],{'through':'team_has_sms_queues','as':_0xea76('0x143')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x67')],{'through':_0xea76('0x19e'),'as':_0xea76('0x144')});db['Team'][_0xea76('0x133')](db[_0xea76('0x145')],{'through':_0xea76('0x1e9'),'as':_0xea76('0x1ea')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x106')],{'through':_0xea76('0x11b'),'as':_0xea76('0x13f')});db[_0xea76('0xf9')]['hasMany'](db[_0xea76('0x7c')],{'as':_0xea76('0x157'),'foreignKey':_0xea76('0x1b1')});db[_0xea76('0xf9')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':'CampaignId'});db[_0xea76('0xf9')]['hasMany'](db[_0xea76('0x81')],{'as':'HopperHistories','foreignKey':'CampaignId'});db[_0xea76('0xf9')][_0xea76('0x126')](db[_0xea76('0x159')],{'as':_0xea76('0x15a'),'foreignKey':_0xea76('0x1b1')});db[_0xea76('0xf9')]['belongsTo'](db[_0xea76('0x15d')],{'as':_0xea76('0x15d'),'foreignKey':_0xea76('0x15e')});db[_0xea76('0xf9')][_0xea76('0x131')](db[_0xea76('0x15d')],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db[_0xea76('0xf9')][_0xea76('0x131')](db['Interval'],{'as':_0xea76('0x160'),'foreignKey':'IntervalId'});db[_0xea76('0xf9')][_0xea76('0x131')](db['SquareProject'],{'as':_0xea76('0xf0'),'foreignKey':'SquareProjectId'});db['Campaign'][_0xea76('0x133')](db[_0xea76('0x104')],{'as':_0xea76('0x137'),'through':_0xea76('0x1eb')});db['Campaign'][_0xea76('0x133')](db['CmList'],{'as':'BlackLists','through':'campaigns_has_cm_blacklists'});db['Attachment']['belongsTo'](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':_0xea76('0x187')});db['MailTransferReport'][_0xea76('0x131')](db[_0xea76('0x47')],{});db['MailTransferReport'][_0xea76('0x131')](db['MailInteraction'],{});db[_0xea76('0xfd')][_0xea76('0x131')](db[_0xea76('0x40')],{'foreignKey':'FromMailAccountId','as':_0xea76('0x1ec')});db[_0xea76('0xfd')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':_0xea76('0x1ee')});db[_0xea76('0xfd')]['belongsTo'](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ef'),'as':'ToAgent'});db[_0xea76('0xfd')][_0xea76('0x131')](db[_0xea76('0x42')],{'foreignKey':_0xea76('0x1f0'),'as':_0xea76('0x1f1')});db[_0xea76('0xfd')][_0xea76('0x131')](db['MailAccount'],{'foreignKey':_0xea76('0x1f2'),'as':'ToAccount'});db['ChatTransferReport'][_0xea76('0x131')](db['ChatMessage'],{});db['ChatTransferReport'][_0xea76('0x131')](db['ChatInteraction'],{});db['ChatTransferReport'][_0xea76('0x131')](db['ChatWebsite'],{'foreignKey':'FromChatWebsiteId','as':'FromAccount'});db['ChatTransferReport'][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':'FromAgent'});db[_0xea76('0xff')]['belongsTo'](db['User'],{'foreignKey':_0xea76('0x1ef'),'as':_0xea76('0x1f3')});db[_0xea76('0xff')][_0xea76('0x131')](db[_0xea76('0x73')],{'foreignKey':'ToChatQueueId','as':'ToQueue'});db[_0xea76('0xff')][_0xea76('0x131')](db[_0xea76('0x69')],{'foreignKey':_0xea76('0x1f4'),'as':_0xea76('0x1f5')});db[_0xea76('0x100')]['belongsTo'](db[_0xea76('0x53')],{});db[_0xea76('0x100')][_0xea76('0x131')](db[_0xea76('0x12d')],{});db['FaxTransferReport'][_0xea76('0x131')](db[_0xea76('0x4e')],{'foreignKey':_0xea76('0x1f6'),'as':'FromAccount'});db[_0xea76('0x100')]['belongsTo'](db['User'],{'foreignKey':_0xea76('0x1ed'),'as':_0xea76('0x1ee')});db[_0xea76('0x100')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ef'),'as':'ToAgent'});db[_0xea76('0x100')][_0xea76('0x131')](db['FaxQueue'],{'foreignKey':'ToFaxQueueId','as':_0xea76('0x1f1')});db[_0xea76('0x100')][_0xea76('0x131')](db[_0xea76('0x4e')],{'foreignKey':'ToFaxAccountId','as':_0xea76('0x1f5')});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x66')],{});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x64')],{});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x61')],{'foreignKey':_0xea76('0x1f8'),'as':_0xea76('0x1ec')});db[_0xea76('0x1f7')][_0xea76('0x131')](db['User'],{'foreignKey':'FromUserId','as':_0xea76('0x1ee')});db['OpenchannelTransferReport'][_0xea76('0x131')](db['User'],{'foreignKey':_0xea76('0x1ef'),'as':'ToAgent'});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x67')],{'foreignKey':'ToOpenchannelQueueId','as':_0xea76('0x1f1')});db['OpenchannelTransferReport']['belongsTo'](db[_0xea76('0x61')],{'foreignKey':_0xea76('0x1f9'),'as':_0xea76('0x1f5')});db['SmsTransferReport'][_0xea76('0x131')](db[_0xea76('0x5e')],{});db['SmsTransferReport'][_0xea76('0x131')](db[_0xea76('0x5c')],{});db[_0xea76('0x102')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0xea76('0x1fa'),'as':'FromAccount'});db[_0xea76('0x102')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':_0xea76('0x1ee')});db[_0xea76('0x102')][_0xea76('0x131')](db['User'],{'foreignKey':'ToUserId','as':_0xea76('0x1f3')});db[_0xea76('0x102')]['belongsTo'](db['SmsQueue'],{'foreignKey':_0xea76('0x1fb'),'as':_0xea76('0x1f1')});db[_0xea76('0x102')][_0xea76('0x131')](db[_0xea76('0x58')],{'foreignKey':_0xea76('0x1fc'),'as':_0xea76('0x1f5')});db[_0xea76('0x104')][_0xea76('0x126')](db['Disposition'],{'as':_0xea76('0x18b'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x1fd')],{'as':_0xea76('0x1fe'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x7b')],{'as':_0xea76('0x135'),'onDelete':_0xea76('0x122'),'foreignKey':'ListId'});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x17a')});db['CmList'][_0xea76('0x126')](db[_0xea76('0x81')],{'as':'HopperHistory','foreignKey':_0xea76('0x17a')});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':'ReportAgentPreview','foreignKey':_0xea76('0x17a')});db[_0xea76('0x104')][_0xea76('0x133')](db[_0xea76('0x19')],{'as':_0xea76('0x1ff'),'through':_0xea76('0x164')});db[_0xea76('0x104')]['belongsToMany'](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x138')});db[_0xea76('0x106')]['hasMany'](db[_0xea76('0x17')],{'as':'Extensions','onDelete':_0xea76('0x122')});db[_0xea76('0x106')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x11d')});db[_0xea76('0x106')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x11b'),'as':_0xea76('0x194')});db[_0xea76('0x107')][_0xea76('0x126')](db['User'],{'as':_0xea76('0x181'),'foreignKey':_0xea76('0x132')});db[_0xea76('0x107')]['hasMany'](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':_0xea76('0x132'),'onDelete':'cascade'});db[_0xea76('0x200')]['hasMany'](db['UserProfileResource'],{'as':'Resources','foreignKey':'sectionId','onDelete':'cascade'});db[_0xea76('0x10d')][_0xea76('0x126')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xea76('0x201'),'onDelete':_0xea76('0x122')});db[_0xea76('0x10d')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':'Answers','foreignKey':_0xea76('0x201')});db['WhatsappAccount'][_0xea76('0x126')](db[_0xea76('0x112')],{'as':_0xea76('0x168'),'foreignKey':_0xea76('0x201')});db[_0xea76('0x10d')][_0xea76('0x126')](db[_0xea76('0x110')],{'as':_0xea76('0x178')});db[_0xea76('0x10d')][_0xea76('0x126')](db['WhatsappApplication'],{'as':_0xea76('0x151')});db[_0xea76('0x10d')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x10d')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xea76('0x10d')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':_0xea76('0x14f')});db[_0xea76('0x202')]['belongsTo'](db['User'],{'onDelete':_0xea76('0x171')});db[_0xea76('0x202')][_0xea76('0x131')](db[_0xea76('0x145')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x202')][_0xea76('0x131')](db[_0xea76('0x10d')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x202')][_0xea76('0x131')](db['Interval'],{'onDelete':'restrict','foreignKey':_0xea76('0x161')});db['WhatsappApplication'][_0xea76('0x131')](db[_0xea76('0x180')],{'onDelete':_0xea76('0x171'),'foreignKey':'TagId'});db[_0xea76('0x110')][_0xea76('0x126')](db[_0xea76('0x112')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x203')});db[_0xea76('0x110')][_0xea76('0x131')](db[_0xea76('0x10d')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x201')});db[_0xea76('0x110')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':_0xea76('0x170')});db['WhatsappInteraction'][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x18f'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x110')][_0xea76('0x133')](db['Tag'],{'through':_0xea76('0x204'),'as':_0xea76('0x17f')});db['WhatsappInteraction'][_0xea76('0x133')](db[_0xea76('0x180')],{'through':'whatsapp_interaction_has_tags','as':_0xea76('0x191')});db[_0xea76('0x110')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x13e'),'foreignKey':_0xea76('0x203')});db[_0xea76('0x112')][_0xea76('0x131')](db['User'],{'as':_0xea76('0x11')});db[_0xea76('0x112')][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x16f')});db[_0xea76('0x112')]['belongsTo'](db[_0xea76('0x110')],{'onDelete':'cascade','as':_0xea76('0x183'),'foreignKey':_0xea76('0x203')});db[_0xea76('0x112')][_0xea76('0x131')](db[_0xea76('0x10d')],{'as':'Account','foreignKey':_0xea76('0x201')});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x10d')],{});db[_0xea76('0x114')][_0xea76('0x131')](db['CmList'],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x110')],{});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x145')],{});db[_0xea76('0x114')][_0xea76('0x131')](db['WhatsappMessage'],{});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x11')],{});db['WhatsappTransferReport']['belongsTo'](db[_0xea76('0x112')],{});db[_0xea76('0x205')][_0xea76('0x131')](db['WhatsappInteraction'],{});db[_0xea76('0x205')]['belongsTo'](db[_0xea76('0x10d')],{'foreignKey':_0xea76('0x206'),'as':'FromAccount'});db[_0xea76('0x205')][_0xea76('0x131')](db[_0xea76('0x10d')],{'foreignKey':_0xea76('0x207'),'as':_0xea76('0x1f5')});db[_0xea76('0x205')][_0xea76('0x131')](db[_0xea76('0x145')],{'foreignKey':_0xea76('0x208'),'as':_0xea76('0x1f1')});db['WhatsappTransferReport'][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':'FromAgent'});db[_0xea76('0x205')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ef'),'as':_0xea76('0x1f3')});db[_0xea76('0x145')]['belongsToMany'](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x3c'),'foreignKey':_0xea76('0x209')});db[_0xea76('0x145')]['belongsToMany'](db[_0xea76('0xf6')],{'through':_0xea76('0x1e9'),'as':_0xea76('0x194')});db['UserSetting']['belongsTo'](db[_0xea76('0x11')],{'as':'user','foreignKey':_0xea76('0x123'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x117')]['hasOne'](db['Dynamics365Account'],{'as':_0xea76('0xd1'),'onDelete':'restrict'});db[_0xea76('0x117')][_0xea76('0x121')](db[_0xea76('0x3d')],{'as':'Imap','onDelete':_0xea76('0x171')});db[_0xea76('0x117')][_0xea76('0x121')](db[_0xea76('0x3e')],{'as':_0xea76('0x175'),'onDelete':_0xea76('0x171')});module[_0xea76('0x20a')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x8935=['Imap','Smtp','Answers','Messages','Interactions','MailApplication','List','ListId','TemplateId','user_has_mail_accounts','team_has_mail_queues','MailInteractionId','Account','ContactId','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachment','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','TagId','Dashboard','Items','Dispositions','FaxAccountId','Exntensions','FaxInteractionId','fax_interaction_has_tags','user_has_fax_interactions','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','OpenchannelQueueId','team_has_openchannel_queues','ProactiveActions','ChatMessage','Agent','ChatApplication','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatGroupId','CmCompany','CompanyId','CmContactId','Company','cm_contact_has_tags','AdditionalPhones','CmHopperId','Campaign','CampaignId','OwnerId','Automation','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','MailApplications','FaxApplications','AnalyticCustomReport','Mohs','moh_has_sounds','whatsapp_interaction_has_tags','ItemType','ItemTypeId','Hopper','AllCondition','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','DefaultReportId','MetricId','Configurations','AccountId','SalesforceField','Descriptions','DescriptionId','FieldId','Subject','SubjectId','Description','Field','VariableId','SugarcrmConfiguration','Subjects','int_desk_configuration_has_tags','ZendeskField','FreshdeskField','int_freshdesk_configuration_has_tags','ServicenowAccount','FreshsalesConfiguration','FreshsalesField','FromId','ToId','ProjectId','TeamVoiceQueue','VoiceQueues','SmsQueues','team_has_whatsapp_queues','SquareProject','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToAccount','FromAccount','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','ToSmsAccountId','CustomFields','Queues','voice_queues_has_cm_lists','UserProfileSection','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','user_has_whatsapp_interactions','WhatsappTransferReport','ToQueueId','exports','../config/environment','sequelize','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','database','username','password','options','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailQueueReport','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/chatApplication/chatApplication.model','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmContact','../api/cmContact/cmContact.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','CmContactHasItem','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/campaign/campaign.model','Migration','../api/migration/migration.model','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','CloudProvider','../api/cloudProvider/cloudProvider.model','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','User','hasOne','cascade','UserId','userSetting','hasMany','Recordings','VoiceQueuesRt','Extensions','CmHopperFinal','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteraction','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotification','UserNotifications','SenderId','belongsTo','userProfileId','Groups','belongsToMany','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_sms_interactions','VoiceQueue','UserVoiceQueue','VoicePrefixes','MailQueues','ChatQueues','UserChatQueue','OpenchannelQueues','WhatsappQueue','WhatsappQueues','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','OpenchannelAccount','user_has_openchannel_accounts','SmsAccount','SmsAccounts','user_has_sms_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','Applications','Sounds','Members','VoiceQueueId','CmHopper','Hoppers','HopperHistories','HopperBlacks','Trunk','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','Agents','Teams','mailboxuser','mailbox','VoiceCallReport','QueueCalls','uniqueid','AgentReports','Contact','MailServerIn','MailAccountId','CloudProviderId','restrict'];(function(_0x3f4cd0,_0x303070){var _0x3f9f01=function(_0x6ced93){while(--_0x6ced93){_0x3f4cd0['push'](_0x3f4cd0['shift']());}};_0x3f9f01(++_0x303070);}(_0x8935,0x9d));var _0x5893=function(_0x70841e,_0x1e002d){_0x70841e=_0x70841e-0x0;var _0x4f15a8=_0x8935[_0x70841e];return _0x4f15a8;};'use strict';var config=require(_0x5893('0x0'));var Sequelize=require(_0x5893('0x1'));var _=require('lodash');var jstz=require(_0x5893('0x2'));var timezone=jstz[_0x5893('0x3')]();config[_0x5893('0x1')]=_[_0x5893('0x4')](config[_0x5893('0x1')],{'database':_0x5893('0x5'),'username':_0x5893('0x6'),'password':_0x5893('0x7'),'options':{'host':_0x5893('0x8'),'port':0xcea,'dialect':_0x5893('0x9'),'dialectOptions':{'charset':_0x5893('0xa')},'logging':![],'timezone':timezone[_0x5893('0xb')](),'define':{'charset':_0x5893('0xc'),'collate':_0x5893('0xd')}}});config['sequelizeHistory']=_[_0x5893('0x4')](config[_0x5893('0xe')],{'database':_0x5893('0x5'),'username':'xcall','password':_0x5893('0x7'),'options':{'host':_0x5893('0x8'),'port':0xcea,'dialect':_0x5893('0x9'),'dialectOptions':{'charset':_0x5893('0xa')},'logging':![],'timezone':timezone[_0x5893('0xb')](),'define':{'charset':_0x5893('0xc'),'collate':_0x5893('0xd')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0x5893('0xf')],config[_0x5893('0x1')][_0x5893('0x10')],config[_0x5893('0x1')][_0x5893('0x11')],config[_0x5893('0x1')][_0x5893('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x5893('0xe')][_0x5893('0xf')],config['sequelizeHistory']['username'],config['sequelizeHistory'][_0x5893('0x11')],config[_0x5893('0xe')][_0x5893('0x12')])};db['User']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x14'));db['VoiceChanSpy']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x15'));db[_0x5893('0x16')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x17'));db[_0x5893('0x18')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x19'));db[_0x5893('0x1a')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x1b'));db['VoiceQueue']=db[_0x5893('0x1')][_0x5893('0x13')]('../api/voiceQueue/voiceQueue.model');db[_0x5893('0x1c')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x1d'));db[_0x5893('0x1e')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x1f'));db[_0x5893('0x20')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x21'));db[_0x5893('0x22')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/voiceMailMessage/voiceMailMessage.model');db['VoiceCallReport']=db[_0x5893('0x1')][_0x5893('0x13')]('../api/voiceCallReport/voiceCallReport.model');db[_0x5893('0x23')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x24'));db[_0x5893('0x25')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0x5893('0x26')]=db[_0x5893('0x1')]['import'](_0x5893('0x27'));db['MemberReport']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x28'));db['Trunk']=db[_0x5893('0x1')]['import'](_0x5893('0x29'));db['VoiceTransferReport']=db[_0x5893('0x1')]['import'](_0x5893('0x2a'));db[_0x5893('0x2b')]=db[_0x5893('0x1')]['import'](_0x5893('0x2c'));db['UserVoiceQueue']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x2d'));db['UserChatQueue']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x2e'));db[_0x5893('0x2f')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x30'));db[_0x5893('0x31')]=db['sequelize']['import']('../api/userFaxQueue/userFaxQueue.model');db[_0x5893('0x32')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x33'));db[_0x5893('0x34')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x35'));db[_0x5893('0x36')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x37'));db['MailServerIn']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x38'));db[_0x5893('0x39')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x3a'));db[_0x5893('0x3b')]=db['sequelize']['import'](_0x5893('0x3c'));db[_0x5893('0x3d')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/mailQueue/mailQueue.model');db[_0x5893('0x3e')]=db['sequelize']['import'](_0x5893('0x3f'));db[_0x5893('0x40')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x41'));db[_0x5893('0x42')]=db[_0x5893('0x1')]['import'](_0x5893('0x43'));db['MailApplication']=db[_0x5893('0x1')]['import']('../api/mailApplication/mailApplication.model');db[_0x5893('0x44')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/mailQueueReport/mailQueueReport.model');db['Dashboard']=db[_0x5893('0x1')][_0x5893('0x13')]('../api/dashboard/dashboard.model');db[_0x5893('0x45')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x46'));db[_0x5893('0x47')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x48'));db[_0x5893('0x49')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x4a'));db[_0x5893('0x4b')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/faxInteraction/faxInteraction.model');db[_0x5893('0x4c')]=db[_0x5893('0x1')]['import'](_0x5893('0x4d'));db[_0x5893('0x4e')]=db['sequelize']['import'](_0x5893('0x4f'));db[_0x5893('0x50')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x51'));db['SmsAccount']=db['sequelize'][_0x5893('0x13')](_0x5893('0x52'));db[_0x5893('0x53')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x54'));db[_0x5893('0x55')]=db[_0x5893('0x1')]['import'](_0x5893('0x56'));db[_0x5893('0x57')]=db[_0x5893('0x1')]['import'](_0x5893('0x58'));db[_0x5893('0x59')]=db[_0x5893('0x1')]['import'](_0x5893('0x5a'));db['OpenchannelAccount']=db[_0x5893('0x1')]['import'](_0x5893('0x5b'));db[_0x5893('0x5c')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x5d'));db[_0x5893('0x5e')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/openchannelInteraction/openchannelInteraction.model');db['OpenchannelMessage']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x5f'));db[_0x5893('0x60')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x61'));db['ChatWebsite']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x62'));db[_0x5893('0x63')]=db['sequelize'][_0x5893('0x13')]('../api/openchannelQueueReport/openchannelQueueReport.model');db['ChatApplication']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x64'));db['ChatInteraction']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x65'));db['ChatMessage']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x66'));db['ChatOfflineMessage']=db['sequelize']['import']('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x5893('0x67')]=db[_0x5893('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x5893('0x68')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x69'));db[_0x5893('0x6a')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x6b'));db['CmCompany']=db[_0x5893('0x1')][_0x5893('0x13')]('../api/cmCompany/cmCompany.model');db[_0x5893('0x6c')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x6d'));db['CmHopper']=db[_0x5893('0x1')][_0x5893('0x13')]('../api/cmHopper/cmHopper.model');db[_0x5893('0x6e')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x6f'));db['CmHopperFinal']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x70'));db[_0x5893('0x71')]=db[_0x5893('0x1')]['import'](_0x5893('0x72'));db[_0x5893('0x73')]=db['sequelize']['import'](_0x5893('0x74'));db[_0x5893('0x75')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x76'));db[_0x5893('0x77')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x78'));db['Automation']=db[_0x5893('0x1')]['import'](_0x5893('0x79'));db[_0x5893('0x7a')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x7b'));db[_0x5893('0x7c')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x7d'));db[_0x5893('0x7e')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x7f'));db[_0x5893('0x80')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/interval/interval.model');db[_0x5893('0x81')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x82'));db[_0x5893('0x83')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x84'));db[_0x5893('0x85')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x86'));db[_0x5893('0x87')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x88'));db[_0x5893('0x89')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x8a'));db[_0x5893('0x8b')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x8c'));db[_0x5893('0x8d')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/contactItemType/contactItemType.model');db[_0x5893('0x8e')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/cmContactHasItem/cmContactHasItem.model');db[_0x5893('0x8f')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x90'));db[_0x5893('0x91')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x92'));db[_0x5893('0x93')]=db['sequelize'][_0x5893('0x13')]('../api/trigger/trigger.model');db[_0x5893('0x94')]=db[_0x5893('0x1')]['import'](_0x5893('0x95'));db[_0x5893('0x96')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x97'));db[_0x5893('0x98')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x99'));db['AnalyticCustomReport']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x9a'));db[_0x5893('0x9b')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x5893('0x9c')]=db['sequelize']['import'](_0x5893('0x9d'));db[_0x5893('0x9e')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x9f'));db[_0x5893('0xa0')]=db[_0x5893('0x1')]['import'](_0x5893('0xa1'));db[_0x5893('0xa2')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xa3'));db[_0x5893('0xa4')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xa5'));db[_0x5893('0xa6')]=db['sequelize'][_0x5893('0x13')](_0x5893('0xa7'));db['SalesforceField']=db['sequelize'][_0x5893('0x13')]('../api/intSalesforceField/intSalesforceField.model');db[_0x5893('0xa8')]=db['sequelize']['import'](_0x5893('0xa9'));db['SugarcrmConfiguration']=db['sequelize']['import'](_0x5893('0xaa'));db[_0x5893('0xab')]=db[_0x5893('0x1')]['import'](_0x5893('0xac'));db[_0x5893('0xad')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/intDeskAccount/intDeskAccount.model');db[_0x5893('0xae')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xaf'));db[_0x5893('0xb0')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xb1'));db[_0x5893('0xb2')]=db[_0x5893('0x1')]['import']('../api/intZohoAccount/intZohoAccount.model');db[_0x5893('0xb3')]=db[_0x5893('0x1')]['import'](_0x5893('0xb4'));db[_0x5893('0xb5')]=db[_0x5893('0x1')]['import'](_0x5893('0xb6'));db[_0x5893('0xb7')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xb8'));db[_0x5893('0xb9')]=db['sequelize'][_0x5893('0x13')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db['ZendeskField']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xba'));db[_0x5893('0xbb')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x5893('0xbc')]=db['sequelize']['import'](_0x5893('0xbd'));db['FreshdeskField']=db['sequelize'][_0x5893('0x13')](_0x5893('0xbe'));db[_0x5893('0xbf')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xc0'));db[_0x5893('0xc1')]=db[_0x5893('0x1')]['import'](_0x5893('0xc2'));db[_0x5893('0xc3')]=db['sequelize'][_0x5893('0x13')]('../api/intVtigerField/intVtigerField.model');db['ServicenowAccount']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xc4'));db[_0x5893('0xc5')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xc6'));db[_0x5893('0xc7')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/intServicenowField/intServicenowField.model');db[_0x5893('0xc8')]=db['sequelize']['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0x5893('0xc9')]=db[_0x5893('0x1')]['import'](_0x5893('0xca'));db[_0x5893('0xcb')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xcc'));db[_0x5893('0xcd')]=db['sequelize']['import'](_0x5893('0xce'));db['FreshsalesConfiguration']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xcf'));db['FreshsalesField']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xd0'));db[_0x5893('0x96')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x97'));db[_0x5893('0xd1')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xd2'));db[_0x5893('0xd3')]=db[_0x5893('0x1')]['import'](_0x5893('0xd4'));db[_0x5893('0xd5')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xd6'));db[_0x5893('0xd7')]=db['sequelize']['import'](_0x5893('0xd8'));db[_0x5893('0xd9')]=db['sequelize'][_0x5893('0x13')](_0x5893('0xda'));db[_0x5893('0xdb')]=db[_0x5893('0x1')]['import'](_0x5893('0xdc'));db[_0x5893('0xdd')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xde'));db[_0x5893('0xdf')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/squareReport/squareReport.model');db[_0x5893('0xe0')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xe1'));db[_0x5893('0xe2')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xe3'));db[_0x5893('0xe4')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xe5'));db[_0x5893('0xe6')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xe7'));db['SquareProject']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xe8'));db[_0x5893('0xe9')]=db[_0x5893('0x1')]['import'](_0x5893('0xea'));db[_0x5893('0xeb')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xec'));db[_0x5893('0xed')]=db['sequelize'][_0x5893('0x13')](_0x5893('0xee'));db[_0x5893('0xef')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/license/license.model');db['Campaign']=db[_0x5893('0x1')]['import'](_0x5893('0xf0'));db[_0x5893('0xf1')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xf2'));db['Attachment']=db[_0x5893('0x1')]['import'](_0x5893('0xf3'));db[_0x5893('0xf4')]=db['sequelize'][_0x5893('0x13')]('../api/plugin/plugin.model');db[_0x5893('0xf5')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xf6'));db[_0x5893('0xf7')]=db[_0x5893('0x1')]['import'](_0x5893('0xf8'));db[_0x5893('0xf9')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xfa'));db[_0x5893('0xfb')]=db[_0x5893('0x1')]['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x5893('0xfc')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0xfd'));db[_0x5893('0xfe')]=db['sequelize'][_0x5893('0x13')](_0x5893('0xff'));db[_0x5893('0x100')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x101'));db[_0x5893('0x102')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x103'));db['UserProfileSection']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x104'));db[_0x5893('0x105')]=db[_0x5893('0x1')][_0x5893('0x13')]('../api/userProfileResource/userProfileResource.model');db['UserNotification']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x106'));db['WhatsappAccount']=db['sequelize'][_0x5893('0x13')](_0x5893('0x107'));db[_0x5893('0x108')]=db[_0x5893('0x1')]['import'](_0x5893('0x109'));db[_0x5893('0x10a')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x10b'));db[_0x5893('0x10c')]=db[_0x5893('0x1')]['import'](_0x5893('0x10d'));db[_0x5893('0x10e')]=db['sequelize'][_0x5893('0x13')](_0x5893('0x10f'));db['WhatsappTransferReport']=db['sequelize'][_0x5893('0x13')](_0x5893('0x110'));db['WhatsappQueue']=db[_0x5893('0x1')]['import']('../api/whatsappQueue/whatsappQueue.model');db[_0x5893('0x111')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x112'));db['TeamVoiceQueue']=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x113'));db[_0x5893('0x114')]=db[_0x5893('0x1')]['import']('../api/teamVoicePrefix/teamVoicePrefix.model');db[_0x5893('0x115')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x116'));db[_0x5893('0x117')]=db[_0x5893('0x1')][_0x5893('0x13')](_0x5893('0x118'));db[_0x5893('0x119')][_0x5893('0x11a')](db[_0x5893('0x20')],{'as':_0x5893('0x20'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x11c')});db['User'][_0x5893('0x11a')](db[_0x5893('0x117')],{'as':_0x5893('0x11d'),'onDelete':'cascade','foreignKey':_0x5893('0x11c')});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x1c')],{'as':_0x5893('0x11f'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x119')][_0x5893('0x11e')](db['UserVoiceQueueRt'],{'as':_0x5893('0x120'),'foreignKey':_0x5893('0x11c')});db['User'][_0x5893('0x11e')](db['VoiceExtension'],{'as':_0x5893('0x121'),'onDelete':_0x5893('0x11b'),'hooks':!![]});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x122')],{'as':_0x5893('0x123'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x71')],{'as':_0x5893('0x124'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x73')],{'as':'ReportAgentPreview','foreignKey':'UserId'});db[_0x5893('0x119')]['hasMany'](db[_0x5893('0x5e')],{'as':_0x5893('0x125'),'foreignKey':'UserId'});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x126')],{'as':_0x5893('0x127'),'foreignKey':_0x5893('0x11c')});db['User']['hasMany'](db[_0x5893('0x55')],{'as':_0x5893('0x128'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x4b')],{'as':_0x5893('0x129'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x40')],{'as':_0x5893('0x12a'),'foreignKey':'UserId'});db[_0x5893('0x119')][_0x5893('0x11e')](db['WhatsappInteraction'],{'as':_0x5893('0x12b'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x119')][_0x5893('0x11e')](db[_0x5893('0x12c')],{'as':_0x5893('0x12d'),'foreignKey':_0x5893('0x12e')});db[_0x5893('0x119')][_0x5893('0x12f')](db['UserProfile'],{'as':'UserProfile','foreignKey':_0x5893('0x130')});db[_0x5893('0x119')]['belongsToMany'](db[_0x5893('0x68')],{'as':_0x5893('0x131'),'through':'chat_group_has_users'});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x6c')],{'as':_0x5893('0x133'),'through':_0x5893('0x134')});db[_0x5893('0x119')][_0x5893('0x132')](db['CmList'],{'as':_0x5893('0x135'),'through':_0x5893('0x136')});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0xed')],{'through':_0x5893('0x137')});db[_0x5893('0x119')][_0x5893('0x132')](db['MailInteraction'],{'as':'MailInteractions','through':_0x5893('0x138')});db['User'][_0x5893('0x132')](db[_0x5893('0x126')],{'as':'ChatInteractions','through':_0x5893('0x139')});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x4b')],{'as':_0x5893('0x129'),'through':'user_has_fax_interactions'});db['User'][_0x5893('0x132')](db[_0x5893('0x55')],{'as':_0x5893('0x128'),'through':_0x5893('0x13a')});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x5e')],{'as':_0x5893('0x125'),'through':'user_has_openchannel_interactions'});db['User'][_0x5893('0x132')](db[_0x5893('0x10a')],{'as':_0x5893('0x12b'),'through':'user_has_whatsapp_interactions'});db['User'][_0x5893('0x132')](db[_0x5893('0x13b')],{'as':'VoiceQueues','through':_0x5893('0x13c'),'required':![]});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x100')],{'as':_0x5893('0x13d'),'through':_0x5893('0x115'),'required':![]});db[_0x5893('0x119')][_0x5893('0x132')](db['MailQueue'],{'as':_0x5893('0x13e'),'through':'UserMailQueue','required':![]});db[_0x5893('0x119')][_0x5893('0x132')](db['ChatQueue'],{'as':_0x5893('0x13f'),'through':_0x5893('0x140'),'required':![],'hooks':!![]});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x4e')],{'as':'FaxQueues','through':_0x5893('0x31'),'required':![]});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x59')],{'as':'SmsQueues','through':_0x5893('0x32'),'required':![]});db['User']['belongsToMany'](db['OpenchannelQueue'],{'as':_0x5893('0x141'),'through':_0x5893('0x34'),'required':![]});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x142')],{'as':_0x5893('0x143'),'through':_0x5893('0x36'),'required':![]});db[_0x5893('0x119')]['belongsToMany'](db['CmList'],{'through':_0x5893('0x136')});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x144')],{'as':_0x5893('0x145'),'through':_0x5893('0x146')});db['User'][_0x5893('0x132')](db[_0x5893('0x47')],{'as':_0x5893('0x147'),'through':_0x5893('0x148')});db[_0x5893('0x119')][_0x5893('0x132')](db['MailAccount'],{'as':_0x5893('0x149'),'through':'user_has_mail_accounts'});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x14a')],{'as':'OpenchannelAccounts','through':_0x5893('0x14b')});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x14c')],{'as':_0x5893('0x14d'),'through':_0x5893('0x14e')});db[_0x5893('0x119')][_0x5893('0x132')](db[_0x5893('0x14f')],{'as':_0x5893('0x150'),'through':_0x5893('0x151')});db['VoiceChanSpy'][_0x5893('0x11e')](db[_0x5893('0x18')],{'as':_0x5893('0x152'),'onDelete':_0x5893('0x11b'),'foreignKey':'ChanSpyId'});db[_0x5893('0x16')][_0x5893('0x11e')](db['VoiceExtension'],{'onDelete':_0x5893('0x11b')});db[_0x5893('0x18')]['hasMany'](db[_0x5893('0x18')],{'as':_0x5893('0x153'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x1a')][_0x5893('0x132')](db[_0x5893('0x89')],{'as':_0x5893('0x154'),'through':'moh_has_sounds'});db[_0x5893('0x13b')]['hasMany'](db[_0x5893('0x2b')],{'as':_0x5893('0x155'),'foreignKey':_0x5893('0x156')});db[_0x5893('0x13b')][_0x5893('0x11e')](db[_0x5893('0x157')],{'as':_0x5893('0x158'),'foreignKey':_0x5893('0x156')});db['VoiceQueue'][_0x5893('0x11e')](db[_0x5893('0x122')],{'as':'HopperFinals','foreignKey':_0x5893('0x156')});db[_0x5893('0x13b')]['hasMany'](db['CmHopperHistory'],{'as':_0x5893('0x159'),'foreignKey':'VoiceQueueId'});db[_0x5893('0x13b')][_0x5893('0x11e')](db[_0x5893('0x73')],{'as':_0x5893('0x73'),'foreignKey':_0x5893('0x156')});db[_0x5893('0x13b')][_0x5893('0x11e')](db[_0x5893('0x6e')],{'as':_0x5893('0x15a'),'foreignKey':_0x5893('0x156')});db['VoiceQueue']['hasMany'](db['JscriptySessionReport'],{'as':'JscriptySessions','foreignKey':'VoiceQueueId'});db[_0x5893('0x13b')][_0x5893('0x12f')](db[_0x5893('0x15b')],{'as':_0x5893('0x15b'),'foreignKey':_0x5893('0x15c')});db[_0x5893('0x13b')][_0x5893('0x12f')](db['Trunk'],{'as':_0x5893('0x15d'),'foreignKey':_0x5893('0x15e')});db[_0x5893('0x13b')][_0x5893('0x12f')](db[_0x5893('0x80')],{'as':'Interval','foreignKey':_0x5893('0x15f')});db[_0x5893('0x13b')][_0x5893('0x12f')](db[_0x5893('0x81')],{'as':_0x5893('0x160'),'foreignKey':_0x5893('0x161')});db[_0x5893('0x13b')][_0x5893('0x132')](db['CmList'],{'as':_0x5893('0x135'),'through':'voice_queues_has_cm_lists'});db[_0x5893('0x13b')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':'UserVoiceQueue'});db[_0x5893('0x13b')][_0x5893('0x132')](db['Team'],{'as':_0x5893('0x163'),'through':'TeamVoiceQueue'});db[_0x5893('0x13b')]['belongsToMany'](db[_0x5893('0xfe')],{'as':'BlackLists','through':'voice_queues_has_cm_blacklists'});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x5893('0x119'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x1e')][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':_0x5893('0x119'),'foreignKey':'UserId'});db[_0x5893('0x20')]['hasMany'](db[_0x5893('0x22')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x5893('0x164'),'sourceKey':_0x5893('0x165')});db[_0x5893('0x22')][_0x5893('0x12f')](db[_0x5893('0x20')],{'foreignKey':_0x5893('0x164'),'targetKey':_0x5893('0x165')});db[_0x5893('0x166')][_0x5893('0x11e')](db[_0x5893('0x26')],{'as':_0x5893('0x167'),'foreignKey':_0x5893('0x168'),'constraints':![]});db['VoiceCallReport'][_0x5893('0x11e')](db[_0x5893('0x25')],{'as':_0x5893('0x169'),'foreignKey':_0x5893('0x168'),'constraints':![]});db[_0x5893('0x166')][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':'User','foreignKey':_0x5893('0x11c')});db[_0x5893('0x166')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':'ContactId'});db[_0x5893('0x16b')]['belongsTo'](db[_0x5893('0x3b')],{'as':_0x5893('0x3b'),'foreignKey':_0x5893('0x16c')});db[_0x5893('0x16b')]['belongsTo'](db['CloudProvider'],{'as':_0x5893('0x111'),'foreignKey':_0x5893('0x16d'),'onDelete':'restrict'});db[_0x5893('0x39')]['belongsTo'](db['MailAccount'],{'as':_0x5893('0x3b'),'foreignKey':'MailAccountId'});db[_0x5893('0x39')]['belongsTo'](db[_0x5893('0x111')],{'as':_0x5893('0x111'),'foreignKey':_0x5893('0x16d'),'onDelete':_0x5893('0x16e')});db[_0x5893('0x3b')]['hasOne'](db['MailServerIn'],{'as':_0x5893('0x16f'),'onDelete':_0x5893('0x11b')});db['MailAccount'][_0x5893('0x11a')](db['MailServerOut'],{'as':_0x5893('0x170'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x3b')][_0x5893('0x11e')](db[_0x5893('0x7c')],{'as':'Dispositions','foreignKey':_0x5893('0x16c'),'onDelete':'cascade'});db[_0x5893('0x3b')][_0x5893('0x11e')](db[_0x5893('0x7a')],{'as':_0x5893('0x171'),'foreignKey':_0x5893('0x16c')});db[_0x5893('0x3b')]['hasMany'](db[_0x5893('0x42')],{'as':_0x5893('0x172'),'foreignKey':_0x5893('0x16c')});db[_0x5893('0x3b')][_0x5893('0x11e')](db[_0x5893('0x40')],{'as':_0x5893('0x173')});db['MailAccount'][_0x5893('0x11e')](db[_0x5893('0x174')],{'as':_0x5893('0x153')});db[_0x5893('0x3b')][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0x3b')][_0x5893('0x12f')](db['Template'],{'as':_0x5893('0x91'),'foreignKey':_0x5893('0x177')});db[_0x5893('0x3b')][_0x5893('0x12f')](db[_0x5893('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0x5893('0x161')});db['MailAccount'][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x178')});db['MailQueue'][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x2f')});db['MailQueue'][_0x5893('0x132')](db['Team'],{'through':_0x5893('0x179'),'as':_0x5893('0x163')});db[_0x5893('0x40')][_0x5893('0x11e')](db[_0x5893('0x42')],{'as':_0x5893('0x172'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x17a')});db['MailInteraction'][_0x5893('0x12f')](db['MailAccount'],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x16c')});db[_0x5893('0x40')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0x40')][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':_0x5893('0x17d'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x40')][_0x5893('0x132')](db['Tag'],{'through':_0x5893('0x17e'),'as':_0x5893('0x17f')});db['MailInteraction'][_0x5893('0x132')](db['Tag'],{'through':_0x5893('0x17e'),'as':_0x5893('0x180')});db[_0x5893('0x40')]['belongsToMany'](db['User'],{'as':_0x5893('0x181'),'through':_0x5893('0x138'),'foreignKey':_0x5893('0x17a')});db['MailMessage'][_0x5893('0x11e')](db[_0x5893('0x182')],{'as':_0x5893('0x183'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x42')][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':_0x5893('0x119')});db[_0x5893('0x42')][_0x5893('0x12f')](db['CmContact'],{'onDelete':'cascade','as':'Contact'});db[_0x5893('0x42')]['belongsTo'](db[_0x5893('0x40')],{'as':_0x5893('0x184'),'foreignKey':_0x5893('0x17a')});db[_0x5893('0x42')]['belongsTo'](db[_0x5893('0x3b')],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x16c')});db[_0x5893('0x42')][_0x5893('0x12f')](db['ChatWebsite'],{'as':_0x5893('0x144'),'foreignKey':_0x5893('0x185')});db['MailMessage']['belongsTo'](db[_0x5893('0x186')],{'as':_0x5893('0x186'),'foreignKey':_0x5893('0x187')});db['MailApplication']['belongsTo'](db[_0x5893('0x119')],{'onDelete':'restrict'});db[_0x5893('0x174')][_0x5893('0x12f')](db['MailQueue'],{'onDelete':_0x5893('0x16e')});db['MailApplication'][_0x5893('0x12f')](db[_0x5893('0x3b')],{'onDelete':'restrict'});db[_0x5893('0x174')][_0x5893('0x12f')](db[_0x5893('0x80')],{'onDelete':_0x5893('0x16e'),'foreignKey':_0x5893('0x15f')});db[_0x5893('0x174')][_0x5893('0x12f')](db['Tag'],{'onDelete':_0x5893('0x16e'),'foreignKey':_0x5893('0x188')});db[_0x5893('0x44')]['belongsTo'](db[_0x5893('0x3b')],{});db['MailQueueReport'][_0x5893('0x12f')](db['CmList'],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0x44')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':'ContactId'});db[_0x5893('0x44')][_0x5893('0x12f')](db[_0x5893('0x40')],{});db['MailQueueReport'][_0x5893('0x12f')](db[_0x5893('0x42')],{});db[_0x5893('0x44')][_0x5893('0x12f')](db[_0x5893('0x119')],{});db[_0x5893('0x44')]['belongsTo'](db[_0x5893('0x3d')],{});db[_0x5893('0x189')][_0x5893('0x11e')](db[_0x5893('0x45')],{'as':_0x5893('0x18a'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x47')]['hasMany'](db[_0x5893('0x7c')],{'as':_0x5893('0x18b'),'foreignKey':_0x5893('0x18c'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x47')][_0x5893('0x11e')](db[_0x5893('0x7a')],{'as':_0x5893('0x171'),'foreignKey':_0x5893('0x18c')});db[_0x5893('0x47')][_0x5893('0x11e')](db[_0x5893('0x4b')],{'as':'Interactions'});db['FaxAccount'][_0x5893('0x11e')](db[_0x5893('0x49')],{'as':_0x5893('0x153')});db[_0x5893('0x47')][_0x5893('0x11e')](db['VoiceExtension'],{'as':_0x5893('0x18d'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x47')][_0x5893('0x11e')](db[_0x5893('0x4c')],{'as':'Messages'});db[_0x5893('0x47')][_0x5893('0x12f')](db['Trunk'],{'as':'Trunk'});db['FaxAccount'][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db['FaxAccount'][_0x5893('0x12f')](db[_0x5893('0x81')],{'as':_0x5893('0x160'),'foreignKey':_0x5893('0x161')});db['FaxAccount'][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':'user_has_fax_accounts'});db[_0x5893('0x49')]['belongsTo'](db[_0x5893('0x119')],{'onDelete':'restrict'});db['FaxApplication']['belongsTo'](db[_0x5893('0x4e')],{'onDelete':'restrict'});db[_0x5893('0x49')][_0x5893('0x12f')](db['FaxAccount'],{'onDelete':_0x5893('0x16e')});db['FaxApplication']['belongsTo'](db[_0x5893('0x8b')],{'onDelete':_0x5893('0x16e'),'foreignKey':'TagId'});db[_0x5893('0x4b')]['hasMany'](db[_0x5893('0x4c')],{'as':_0x5893('0x172'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x18e')});db['FaxInteraction'][_0x5893('0x12f')](db[_0x5893('0x47')],{'as':_0x5893('0x17b'),'foreignKey':'FaxAccountId'});db[_0x5893('0x4b')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db['FaxInteraction'][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':_0x5893('0x17d'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x4b')][_0x5893('0x132')](db[_0x5893('0x8b')],{'through':_0x5893('0x18f'),'as':_0x5893('0x17f')});db[_0x5893('0x4b')][_0x5893('0x132')](db['Tag'],{'through':'fax_interaction_has_tags','as':_0x5893('0x180')});db[_0x5893('0x4b')][_0x5893('0x132')](db['User'],{'as':'Users','through':_0x5893('0x190'),'foreignKey':'FaxInteractionId'});db[_0x5893('0x4c')][_0x5893('0x12f')](db[_0x5893('0x119')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x119')});db[_0x5893('0x4c')][_0x5893('0x12f')](db['FaxInteraction'],{'as':_0x5893('0x184'),'foreignKey':_0x5893('0x18e')});db['FaxMessage'][_0x5893('0x12f')](db[_0x5893('0x6c')],{'onDelete':'cascade','as':'Contact'});db['FaxMessage']['belongsTo'](db['Attachment'],{'as':_0x5893('0x182'),'foreignKey':_0x5893('0x191')});db['FaxMessage']['belongsTo'](db[_0x5893('0x47')],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x18c')});db[_0x5893('0x4e')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':'UserFaxQueue'});db['FaxQueue']['belongsToMany'](db[_0x5893('0xed')],{'through':_0x5893('0x192'),'as':_0x5893('0x163')});db[_0x5893('0x50')]['belongsTo'](db[_0x5893('0x47')],{});db[_0x5893('0x50')][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0x50')][_0x5893('0x12f')](db['CmContact'],{'as':'Contact','foreignKey':_0x5893('0x17c')});db[_0x5893('0x50')][_0x5893('0x12f')](db['FaxInteraction'],{});db['FaxQueueReport'][_0x5893('0x12f')](db[_0x5893('0x4c')],{});db['FaxQueueReport'][_0x5893('0x12f')](db[_0x5893('0x119')],{});db['FaxQueueReport'][_0x5893('0x12f')](db['FaxQueue'],{});db[_0x5893('0x14c')][_0x5893('0x11e')](db[_0x5893('0x7c')],{'as':_0x5893('0x18b'),'foreignKey':_0x5893('0x193'),'onDelete':'cascade'});db[_0x5893('0x14c')][_0x5893('0x11e')](db[_0x5893('0x7a')],{'as':'Answers','foreignKey':_0x5893('0x193')});db[_0x5893('0x14c')][_0x5893('0x11e')](db[_0x5893('0x57')],{'as':_0x5893('0x172'),'foreignKey':_0x5893('0x193')});db['SmsAccount'][_0x5893('0x11e')](db[_0x5893('0x55')],{'as':_0x5893('0x173')});db[_0x5893('0x14c')][_0x5893('0x11e')](db['SmsApplication'],{'as':_0x5893('0x153')});db[_0x5893('0x14c')]['belongsTo'](db[_0x5893('0xfe')],{'as':_0x5893('0x175'),'foreignKey':'ListId'});db['SmsAccount'][_0x5893('0x12f')](db[_0x5893('0x81')],{'as':_0x5893('0x160'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x5893('0x14c')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':'Agents','through':_0x5893('0x14e')});db[_0x5893('0x53')]['belongsTo'](db[_0x5893('0x119')],{'onDelete':'restrict'});db[_0x5893('0x53')][_0x5893('0x12f')](db['SmsQueue'],{'onDelete':'restrict'});db[_0x5893('0x53')]['belongsTo'](db['SmsAccount'],{'onDelete':_0x5893('0x16e')});db[_0x5893('0x53')]['belongsTo'](db['Interval'],{'onDelete':_0x5893('0x16e'),'foreignKey':'IntervalId'});db['SmsApplication'][_0x5893('0x12f')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x5893('0x188')});db['SmsInteraction']['hasMany'](db['SmsMessage'],{'as':'Messages','onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x194')});db[_0x5893('0x55')]['belongsTo'](db['SmsAccount'],{'as':'Account','foreignKey':_0x5893('0x193')});db['SmsInteraction'][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db['SmsInteraction'][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':_0x5893('0x17d'),'foreignKey':_0x5893('0x11c')});db[_0x5893('0x55')][_0x5893('0x132')](db[_0x5893('0x8b')],{'through':_0x5893('0x195'),'as':'Tags'});db[_0x5893('0x55')][_0x5893('0x132')](db[_0x5893('0x8b')],{'through':_0x5893('0x195'),'as':_0x5893('0x180')});db[_0x5893('0x55')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x181'),'through':'user_has_sms_interactions','foreignKey':_0x5893('0x194')});db[_0x5893('0x57')][_0x5893('0x12f')](db['User'],{'as':'User'});db[_0x5893('0x57')]['belongsTo'](db[_0x5893('0x6c')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x16a')});db[_0x5893('0x57')]['belongsTo'](db[_0x5893('0x55')],{'onDelete':_0x5893('0x11b'),'as':'Interaction','foreignKey':'SmsInteractionId'});db[_0x5893('0x57')][_0x5893('0x12f')](db[_0x5893('0x14c')],{'as':'Account','foreignKey':_0x5893('0x193')});db[_0x5893('0x59')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x32'),'foreignKey':_0x5893('0x196')});db[_0x5893('0x59')][_0x5893('0x132')](db[_0x5893('0xed')],{'through':_0x5893('0x197'),'as':_0x5893('0x163')});db[_0x5893('0x14a')]['hasMany'](db['Disposition'],{'as':_0x5893('0x18b'),'foreignKey':_0x5893('0x198'),'onDelete':'cascade'});db[_0x5893('0x14a')][_0x5893('0x11e')](db[_0x5893('0x7a')],{'as':_0x5893('0x171'),'foreignKey':_0x5893('0x198')});db[_0x5893('0x14a')][_0x5893('0x11e')](db['OpenchannelInteraction'],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db[_0x5893('0x14a')]['hasMany'](db['OpenchannelMessage'],{'as':_0x5893('0x172'),'foreignKey':_0x5893('0x198')});db[_0x5893('0x14a')][_0x5893('0x11e')](db['OpenchannelApplication'],{'as':'Applications','foreignKey':_0x5893('0x198')});db[_0x5893('0x14a')][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':'List','foreignKey':_0x5893('0x176')});db[_0x5893('0x14a')][_0x5893('0x12f')](db[_0x5893('0x81')],{'as':_0x5893('0x160'),'foreignKey':_0x5893('0x161')});db['OpenchannelAccount'][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x14b')});db[_0x5893('0x5c')][_0x5893('0x12f')](db[_0x5893('0x119')],{'onDelete':_0x5893('0x16e')});db[_0x5893('0x5c')][_0x5893('0x12f')](db['OpenchannelQueue'],{'onDelete':_0x5893('0x16e'),'foreignKey':'OpenchannelQueueId'});db[_0x5893('0x5c')][_0x5893('0x12f')](db[_0x5893('0x14a')],{'onDelete':_0x5893('0x16e'),'foreignKey':_0x5893('0x198')});db[_0x5893('0x5c')]['belongsTo'](db[_0x5893('0x80')],{'onDelete':_0x5893('0x16e'),'foreignKey':_0x5893('0x15f')});db['OpenchannelApplication'][_0x5893('0x12f')](db[_0x5893('0x8b')],{'onDelete':_0x5893('0x16e'),'foreignKey':'TagId'});db['OpenchannelInteraction'][_0x5893('0x11e')](db[_0x5893('0x199')],{'as':_0x5893('0x172'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x19a')});db[_0x5893('0x5e')]['belongsTo'](db[_0x5893('0x14a')],{'as':'Account','foreignKey':_0x5893('0x198')});db[_0x5893('0x5e')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0x5e')][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':_0x5893('0x17d'),'foreignKey':_0x5893('0x11c')});db['OpenchannelInteraction'][_0x5893('0x132')](db[_0x5893('0x8b')],{'through':'openchannel_interaction_has_tags','as':'Tags'});db['OpenchannelInteraction'][_0x5893('0x132')](db['Tag'],{'through':_0x5893('0x19b'),'as':_0x5893('0x180')});db['OpenchannelInteraction']['belongsToMany'](db[_0x5893('0x119')],{'as':'Users','through':_0x5893('0x19c'),'foreignKey':_0x5893('0x19a')});db[_0x5893('0x199')][_0x5893('0x12f')](db[_0x5893('0x119')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x119')});db[_0x5893('0x199')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x16a')});db[_0x5893('0x199')][_0x5893('0x12f')](db[_0x5893('0x5e')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x184'),'foreignKey':_0x5893('0x19a')});db[_0x5893('0x199')][_0x5893('0x12f')](db[_0x5893('0x182')],{'as':_0x5893('0x182'),'foreignKey':_0x5893('0x191')});db[_0x5893('0x199')][_0x5893('0x12f')](db[_0x5893('0x14a')],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x198')});db[_0x5893('0x60')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':'UserOpenchannelQueue','foreignKey':_0x5893('0x19d')});db['OpenchannelQueue'][_0x5893('0x132')](db[_0x5893('0xed')],{'through':_0x5893('0x19e'),'as':_0x5893('0x163')});db[_0x5893('0x144')][_0x5893('0x11e')](db[_0x5893('0x7c')],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0x5893('0x11b')});db[_0x5893('0x144')][_0x5893('0x11e')](db['CannedAnswer'],{'as':_0x5893('0x171'),'foreignKey':_0x5893('0x185')});db[_0x5893('0x144')][_0x5893('0x11e')](db[_0x5893('0x6a')],{'as':_0x5893('0x19f')});db[_0x5893('0x144')][_0x5893('0x11e')](db['ChatInteraction'],{'as':_0x5893('0x173')});db['ChatWebsite'][_0x5893('0x11e')](db['ChatApplication'],{'as':_0x5893('0x153')});db[_0x5893('0x144')][_0x5893('0x11e')](db[_0x5893('0x1a0')],{'as':_0x5893('0x172')});db['ChatWebsite'][_0x5893('0x12f')](db['CmList'],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0x144')]['belongsTo'](db['Interval'],{'as':_0x5893('0x80'),'foreignKey':_0x5893('0x15f')});db['ChatWebsite']['belongsTo'](db[_0x5893('0x3b')],{'as':_0x5893('0x3b'),'foreignKey':_0x5893('0x16c')});db[_0x5893('0x144')][_0x5893('0x12f')](db[_0x5893('0x81')],{'as':_0x5893('0x160'),'foreignKey':_0x5893('0x161')});db[_0x5893('0x144')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x146')});db['OpenchannelQueueReport']['belongsTo'](db[_0x5893('0x14a')],{});db[_0x5893('0x63')][_0x5893('0x12f')](db['CmList'],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0x63')]['belongsTo'](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0x63')][_0x5893('0x12f')](db['OpenchannelInteraction'],{});db['OpenchannelQueueReport'][_0x5893('0x12f')](db[_0x5893('0x199')],{});db['OpenchannelQueueReport'][_0x5893('0x12f')](db[_0x5893('0x119')],{});db[_0x5893('0x63')][_0x5893('0x12f')](db[_0x5893('0x60')],{});db['ChatApplication']['belongsTo'](db[_0x5893('0x119')],{'as':_0x5893('0x1a1'),'foreignKey':_0x5893('0x11c'),'onDelete':_0x5893('0x16e')});db[_0x5893('0x1a2')][_0x5893('0x12f')](db['ChatQueue'],{'as':_0x5893('0x1a3'),'foreignKey':_0x5893('0x1a4'),'onDelete':'restrict'});db[_0x5893('0x1a2')]['belongsTo'](db['ChatWebsite'],{'as':_0x5893('0x1a5'),'foreignKey':_0x5893('0x185'),'onDelete':_0x5893('0x16e')});db[_0x5893('0x1a2')][_0x5893('0x12f')](db[_0x5893('0x8b')],{'onDelete':_0x5893('0x16e'),'foreignKey':_0x5893('0x188')});db[_0x5893('0x126')][_0x5893('0x11e')](db[_0x5893('0x1a0')],{'as':'Messages','onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1a6')});db[_0x5893('0x126')]['belongsTo'](db[_0x5893('0x144')],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x185')});db['ChatInteraction']['belongsTo'](db['CmContact'],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0x126')][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':_0x5893('0x17d'),'foreignKey':_0x5893('0x11c')});db['ChatInteraction'][_0x5893('0x132')](db['Tag'],{'through':_0x5893('0x1a7'),'as':_0x5893('0x17f')});db[_0x5893('0x126')][_0x5893('0x132')](db[_0x5893('0x8b')],{'through':_0x5893('0x1a7'),'as':'ThroughTags'});db['ChatInteraction'][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x181'),'through':_0x5893('0x139'),'foreignKey':'ChatInteractionId'});db[_0x5893('0x1a0')][_0x5893('0x12f')](db[_0x5893('0x119')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x119')});db[_0x5893('0x1a0')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'onDelete':'cascade','as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0x1a0')][_0x5893('0x12f')](db[_0x5893('0x126')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x184'),'foreignKey':_0x5893('0x1a6')});db[_0x5893('0x1a0')][_0x5893('0x12f')](db[_0x5893('0x182')],{'as':'Attachment','foreignKey':_0x5893('0x191')});db[_0x5893('0x1a0')][_0x5893('0x12f')](db[_0x5893('0x144')],{'as':'Account','foreignKey':_0x5893('0x185')});db[_0x5893('0x186')]['hasMany'](db['Attachment'],{'as':_0x5893('0x183'),'foreignKey':_0x5893('0x187'),'onDelete':_0x5893('0x11b'),'hooks':!![]});db['ChatOfflineMessage'][_0x5893('0x12f')](db[_0x5893('0x6c')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x16a'),'foreignKey':'ContactId'});db[_0x5893('0x186')][_0x5893('0x12f')](db[_0x5893('0x144')],{'as':'Account','foreignKey':_0x5893('0x185')});db[_0x5893('0x67')]['belongsToMany'](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x140'),'hooks':!![]});db['ChatQueue'][_0x5893('0x132')](db[_0x5893('0xed')],{'through':_0x5893('0x1a8'),'as':_0x5893('0x163')});db[_0x5893('0x68')][_0x5893('0x11e')](db[_0x5893('0xd5')],{'as':_0x5893('0x172'),'foreignKey':_0x5893('0x1a9'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x68')]['belongsToMany'](db['User'],{'as':'Members','through':'chat_group_has_users'});db['ChatProactiveAction'][_0x5893('0x12f')](db[_0x5893('0x144')],{'as':_0x5893('0x1a5'),'foreignKey':_0x5893('0x185')});db[_0x5893('0x1aa')][_0x5893('0x11e')](db[_0x5893('0x6c')],{'as':_0x5893('0x133'),'foreignKey':_0x5893('0x1ab')});db[_0x5893('0x6c')]['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x5893('0x1ac')});db[_0x5893('0x6c')]['hasMany'](db[_0x5893('0x157')],{'as':_0x5893('0x158'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0x6c')][_0x5893('0x11e')](db[_0x5893('0x122')],{'as':_0x5893('0x123'),'foreignKey':_0x5893('0x17c')});db['CmContact'][_0x5893('0x11e')](db[_0x5893('0x71')],{'as':'HopperHistories','foreignKey':'ContactId'});db[_0x5893('0x6c')][_0x5893('0x11e')](db['ReportAgentPreview'],{'as':_0x5893('0x73'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0x6c')][_0x5893('0x11e')](db['JscriptySessionReport'],{'as':'JscriptySessions','foreignKey':'ContactId'});db['CmContact'][_0x5893('0x11e')](db[_0x5893('0x5e')],{'as':'OpenchannelInteractions','foreignKey':_0x5893('0x17c'),'onDelete':_0x5893('0x16e')});db['CmContact'][_0x5893('0x11e')](db[_0x5893('0x126')],{'as':_0x5893('0x127'),'foreignKey':_0x5893('0x17c'),'onDelete':'restrict'});db[_0x5893('0x6c')][_0x5893('0x11e')](db[_0x5893('0x55')],{'as':'SmsInteractions','foreignKey':_0x5893('0x17c'),'onDelete':'restrict'});db[_0x5893('0x6c')]['hasMany'](db[_0x5893('0x4b')],{'as':'FaxInteractions','foreignKey':_0x5893('0x17c'),'onDelete':_0x5893('0x16e')});db[_0x5893('0x6c')][_0x5893('0x11e')](db[_0x5893('0x40')],{'as':'MailInteractions','foreignKey':_0x5893('0x17c'),'onDelete':_0x5893('0x16e')});db['CmContact'][_0x5893('0x12f')](db[_0x5893('0x1aa')],{'as':_0x5893('0x1ad'),'foreignKey':_0x5893('0x1ab')});db['CmContact'][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':'List','foreignKey':_0x5893('0x176'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x6c')][_0x5893('0x132')](db['User'],{'as':_0x5893('0x181'),'through':'cm_user_has_contacts'});db[_0x5893('0x6c')]['belongsToMany'](db['Tag'],{'as':_0x5893('0x17f'),'through':_0x5893('0x1ae')});db[_0x5893('0x6c')]['belongsToMany'](db[_0x5893('0x8b')],{'through':'cm_contact_has_tags','as':_0x5893('0x180')});db[_0x5893('0x157')][_0x5893('0x11e')](db[_0x5893('0x8f')],{'as':_0x5893('0x1af'),'foreignKey':_0x5893('0x1b0')});db[_0x5893('0x157')][_0x5893('0x12f')](db['CmContact'],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x157')][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':'List','foreignKey':_0x5893('0x176'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x157')][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':'Agent','foreignKey':_0x5893('0x11c')});db[_0x5893('0x157')][_0x5893('0x12f')](db[_0x5893('0x13b')],{'as':_0x5893('0x1a3'),'foreignKey':_0x5893('0x156'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x157')][_0x5893('0x12f')](db['Campaign'],{'as':_0x5893('0x1b1'),'foreignKey':_0x5893('0x1b2'),'onDelete':_0x5893('0x11b')});db['CmHopper'][_0x5893('0x12f')](db['User'],{'as':_0x5893('0x17d'),'foreignKey':_0x5893('0x1b3')});db['CmHopperBlack'][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c'),'onDelete':'cascade'});db['CmHopperBlack']['belongsTo'](db[_0x5893('0xfe')],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176'),'onDelete':'cascade'});db['CmHopperBlack'][_0x5893('0x12f')](db[_0x5893('0x13b')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':'cascade'});db['CmHopperBlack'][_0x5893('0x12f')](db[_0x5893('0x1b1')],{'as':'Campaign','foreignKey':_0x5893('0x1b2'),'onDelete':'cascade'});db[_0x5893('0x1b4')]['hasMany'](db[_0x5893('0x7e')],{'as':{'plural':_0x5893('0x1b5'),'singular':_0x5893('0x1b6')},'foreignKey':_0x5893('0x1b7'),'onDelete':'cascade','hooks':!![]});db['Automation']['hasMany'](db[_0x5893('0x7e')],{'as':{'plural':_0x5893('0x1b8'),'singular':_0x5893('0x1b9')},'foreignKey':_0x5893('0x1ba'),'onDelete':_0x5893('0x11b'),'hooks':!![]});db['Automation'][_0x5893('0x11e')](db[_0x5893('0x77')],{'as':_0x5893('0x1bb'),'foreignKey':_0x5893('0x1bc'),'onDelete':_0x5893('0x11b'),'hooks':!![]});db[_0x5893('0x7c')][_0x5893('0x11e')](db[_0x5893('0x7c')],{'as':_0x5893('0x18b'),'foreignKey':'ParentId','onDelete':_0x5893('0x11b')});db[_0x5893('0x80')][_0x5893('0x11e')](db[_0x5893('0x80')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0x5893('0x11b'),'hooks':!![],'required':![]});db[_0x5893('0x80')][_0x5893('0x11e')](db[_0x5893('0x18')],{'as':_0x5893('0x121'),'foreignKey':_0x5893('0x15f'),'onDelete':_0x5893('0x16e')});db['Interval'][_0x5893('0x11e')](db[_0x5893('0x174')],{'as':_0x5893('0x1bd'),'foreignKey':_0x5893('0x15f')});db[_0x5893('0x80')][_0x5893('0x11e')](db[_0x5893('0x1a2')],{'as':'ChatApplications','foreignKey':'IntervalId'});db[_0x5893('0x80')][_0x5893('0x11e')](db[_0x5893('0x49')],{'as':_0x5893('0x1be'),'foreignKey':'IntervalId'});db[_0x5893('0x80')][_0x5893('0x11e')](db[_0x5893('0x53')],{'as':'SmsApplications','foreignKey':'IntervalId'});db[_0x5893('0x87')][_0x5893('0x12f')](db[_0x5893('0x3b')],{});db['Schedule']['belongsTo'](db[_0x5893('0x9b')],{'foreignKey':'DefaultReportId'});db['Schedule']['belongsTo'](db[_0x5893('0x1bf')],{'foreignKey':'CustomReportId'});db[_0x5893('0x89')][_0x5893('0x132')](db[_0x5893('0x1a')],{'as':_0x5893('0x1c0'),'through':_0x5893('0x1c1'),'onDelete':_0x5893('0x16e')});db[_0x5893('0x8b')][_0x5893('0x132')](db[_0x5893('0x6c')],{'through':_0x5893('0x1ae')});db[_0x5893('0x8b')][_0x5893('0x132')](db[_0x5893('0x126')],{'through':'chat_interaction_has_tags'});db['Tag']['belongsToMany'](db[_0x5893('0x40')],{'through':'mail_interaction_has_tags'});db[_0x5893('0x8b')][_0x5893('0x132')](db[_0x5893('0x55')],{'through':_0x5893('0x195')});db['Tag'][_0x5893('0x132')](db['FaxInteraction'],{'through':_0x5893('0x18f')});db[_0x5893('0x8b')][_0x5893('0x132')](db[_0x5893('0x5e')],{'through':_0x5893('0x19b')});db[_0x5893('0x8b')]['belongsToMany'](db['WhatsappInteraction'],{'through':_0x5893('0x1c2')});db['CmContactHasItem'][_0x5893('0x12f')](db[_0x5893('0x8d')],{'as':_0x5893('0x1c3'),'foreignKey':_0x5893('0x1c4')});db[_0x5893('0x8f')][_0x5893('0x12f')](db[_0x5893('0x157')],{'as':_0x5893('0x1c5'),'foreignKey':_0x5893('0x1b0')});db[_0x5893('0x8e')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':'Contact','foreignKey':'CmContactId'});db[_0x5893('0x93')]['hasMany'](db[_0x5893('0x7e')],{'as':{'plural':'AllConditions','singular':_0x5893('0x1c6')},'foreignKey':'TriggerAllId','onDelete':'cascade','hooks':!![]});db[_0x5893('0x93')]['hasMany'](db[_0x5893('0x7e')],{'as':{'plural':_0x5893('0x1c7'),'singular':_0x5893('0x1c8')},'foreignKey':_0x5893('0x1c9'),'onDelete':_0x5893('0x11b'),'hooks':!![]});db[_0x5893('0x93')][_0x5893('0x11e')](db[_0x5893('0x77')],{'as':_0x5893('0x1bb'),'foreignKey':_0x5893('0x1ca'),'onDelete':_0x5893('0x11b'),'hooks':!![]});db[_0x5893('0x1bf')][_0x5893('0x11e')](db[_0x5893('0xa0')],{'as':_0x5893('0x1cb'),'onDelete':_0x5893('0x11b'),'foreignKey':'CustomReportId','hooks':!![]});db[_0x5893('0x9b')]['hasMany'](db[_0x5893('0xa0')],{'as':_0x5893('0x1cb'),'onDelete':'cascade','foreignKey':_0x5893('0x1cc')});db[_0x5893('0x9e')][_0x5893('0x11e')](db['AnalyticFieldReport'],{'as':_0x5893('0x1cb'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cd')});db[_0x5893('0xa0')]['belongsTo'](db[_0x5893('0x9e')],{'foreignKey':'MetricId'});db[_0x5893('0xa4')][_0x5893('0x11e')](db[_0x5893('0xa6')],{'as':_0x5893('0x1ce'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xa6')][_0x5893('0x11e')](db[_0x5893('0x1d0')],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db['SalesforceConfiguration'][_0x5893('0x11e')](db[_0x5893('0x1d0')],{'as':_0x5893('0x1d1'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xa6')]['hasMany'](db['SalesforceField'],{'as':_0x5893('0x1cb'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0xa6')][_0x5893('0x12f')](db[_0x5893('0xa4')],{'as':'Account','foreignKey':'AccountId'});db[_0x5893('0x1d0')][_0x5893('0x11e')](db[_0x5893('0x1d0')],{'as':_0x5893('0x1d4'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0x1d0')][_0x5893('0x11e')](db[_0x5893('0x1d0')],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db['SalesforceField']['hasMany'](db[_0x5893('0x1d0')],{'as':_0x5893('0x1d7'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0x1d0')][_0x5893('0x12f')](db[_0x5893('0x94')],{'as':_0x5893('0x94'),'foreignKey':_0x5893('0x1d8')});db[_0x5893('0xa8')][_0x5893('0x11e')](db['SugarcrmConfiguration'],{'as':_0x5893('0x1ce'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x5893('0x1d9')]['hasMany'](db['SugarcrmField'],{'as':_0x5893('0x1da'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0x1d9')]['hasMany'](db[_0x5893('0xab')],{'as':_0x5893('0x1d1'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0x1d9')][_0x5893('0x11e')](db[_0x5893('0xab')],{'as':_0x5893('0x1cb'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0x1d9')][_0x5893('0x12f')](db[_0x5893('0xa8')],{'as':_0x5893('0x17b'),'foreignKey':'AccountId'});db[_0x5893('0xab')][_0x5893('0x11e')](db[_0x5893('0xab')],{'as':_0x5893('0x1d4'),'foreignKey':'SubjectId'});db['SugarcrmField']['hasMany'](db[_0x5893('0xab')],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xab')][_0x5893('0x11e')](db['SugarcrmField'],{'as':_0x5893('0x1d7'),'foreignKey':_0x5893('0x1d3')});db['SugarcrmField']['belongsTo'](db[_0x5893('0x94')],{'as':_0x5893('0x94'),'foreignKey':_0x5893('0x1d8')});db[_0x5893('0xad')][_0x5893('0x11e')](db[_0x5893('0xae')],{'as':'Configurations','onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xae')][_0x5893('0x11e')](db[_0x5893('0xb0')],{'as':_0x5893('0x1da'),'onDelete':'cascade','foreignKey':_0x5893('0x1d5')});db[_0x5893('0xae')][_0x5893('0x11e')](db[_0x5893('0xb0')],{'as':_0x5893('0x1d1'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xae')]['hasMany'](db['DeskField'],{'as':_0x5893('0x1cb'),'onDelete':'cascade','foreignKey':'FieldId'});db['DeskConfiguration'][_0x5893('0x12f')](db[_0x5893('0xad')],{'as':_0x5893('0x17b'),'foreignKey':'AccountId'});db[_0x5893('0xae')]['belongsToMany'](db[_0x5893('0x8b')],{'through':_0x5893('0x1db')});db[_0x5893('0xb0')][_0x5893('0x11e')](db[_0x5893('0xb0')],{'as':_0x5893('0x1d4'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0xb0')][_0x5893('0x11e')](db['DeskField'],{'as':'Description','foreignKey':_0x5893('0x1d2')});db[_0x5893('0xb0')][_0x5893('0x11e')](db[_0x5893('0xb0')],{'as':_0x5893('0x1d7'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0xb0')][_0x5893('0x12f')](db[_0x5893('0x94')],{'as':'Variable','foreignKey':_0x5893('0x1d8')});db['ZohoAccount'][_0x5893('0x11e')](db['ZohoConfiguration'],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x5893('0x1cf')});db[_0x5893('0xb3')][_0x5893('0x11e')](db[_0x5893('0xb5')],{'as':_0x5893('0x1da'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0xb3')][_0x5893('0x11e')](db[_0x5893('0xb5')],{'as':_0x5893('0x1d1'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xb3')][_0x5893('0x11e')](db[_0x5893('0xb5')],{'as':_0x5893('0x1cb'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0xb3')][_0x5893('0x12f')](db[_0x5893('0xb2')],{'as':'Account','foreignKey':_0x5893('0x1cf')});db[_0x5893('0xb5')][_0x5893('0x11e')](db[_0x5893('0xb5')],{'as':_0x5893('0x1d4'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0xb5')][_0x5893('0x11e')](db['ZohoField'],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xb5')][_0x5893('0x11e')](db['ZohoField'],{'as':_0x5893('0x1d7'),'foreignKey':'FieldId'});db['ZohoField'][_0x5893('0x12f')](db[_0x5893('0x94')],{'as':_0x5893('0x94'),'foreignKey':_0x5893('0x1d8')});db[_0x5893('0xb7')][_0x5893('0x11e')](db[_0x5893('0xb9')],{'as':'Configurations','onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xb9')][_0x5893('0x11e')](db[_0x5893('0x1dc')],{'as':_0x5893('0x1da'),'foreignKey':_0x5893('0x1d5')});db['ZendeskConfiguration'][_0x5893('0x11e')](db[_0x5893('0x1dc')],{'as':_0x5893('0x1d1'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xb9')]['hasMany'](db[_0x5893('0x1dc')],{'as':_0x5893('0x1cb'),'foreignKey':'FieldId'});db[_0x5893('0xb9')][_0x5893('0x12f')](db[_0x5893('0xb7')],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x1cf')});db['ZendeskConfiguration']['belongsToMany'](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0x5893('0x1dc')][_0x5893('0x11e')](db['ZendeskField'],{'as':_0x5893('0x1d4'),'foreignKey':_0x5893('0x1d5')});db['ZendeskField'][_0x5893('0x11e')](db[_0x5893('0x1dc')],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db['ZendeskField']['hasMany'](db[_0x5893('0x1dc')],{'as':_0x5893('0x1d7'),'foreignKey':'FieldId'});db[_0x5893('0x1dc')]['belongsTo'](db['Variable'],{'as':_0x5893('0x94'),'foreignKey':'VariableId'});db[_0x5893('0xbb')][_0x5893('0x11e')](db[_0x5893('0xbc')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x5893('0x1cf')});db[_0x5893('0xbc')]['hasMany'](db['FreshdeskField'],{'as':_0x5893('0x1da'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0xbc')][_0x5893('0x11e')](db[_0x5893('0x1dd')],{'as':'Descriptions','onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xbc')][_0x5893('0x11e')](db[_0x5893('0x1dd')],{'as':_0x5893('0x1cb'),'onDelete':_0x5893('0x11b'),'foreignKey':'FieldId'});db[_0x5893('0xbc')]['belongsTo'](db['FreshdeskAccount'],{'as':'Account','foreignKey':_0x5893('0x1cf')});db['FreshdeskConfiguration'][_0x5893('0x132')](db[_0x5893('0x8b')],{'through':_0x5893('0x1de')});db[_0x5893('0x1dd')][_0x5893('0x11e')](db[_0x5893('0x1dd')],{'as':_0x5893('0x1d4'),'foreignKey':_0x5893('0x1d5')});db['FreshdeskField'][_0x5893('0x11e')](db['FreshdeskField'],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db['FreshdeskField'][_0x5893('0x11e')](db[_0x5893('0x1dd')],{'as':_0x5893('0x1d7'),'foreignKey':'FieldId'});db[_0x5893('0x1dd')]['belongsTo'](db[_0x5893('0x94')],{'as':_0x5893('0x94'),'foreignKey':_0x5893('0x1d8')});db[_0x5893('0xbf')][_0x5893('0x11e')](db[_0x5893('0xc1')],{'as':_0x5893('0x1ce'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xc1')][_0x5893('0x11e')](db['VtigerField'],{'as':_0x5893('0x1da'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0xc1')]['hasMany'](db[_0x5893('0xc3')],{'as':_0x5893('0x1d1'),'foreignKey':_0x5893('0x1d2')});db['VtigerConfiguration'][_0x5893('0x11e')](db[_0x5893('0xc3')],{'as':_0x5893('0x1cb'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0xc1')][_0x5893('0x12f')](db['VtigerAccount'],{'as':_0x5893('0x17b'),'foreignKey':'AccountId'});db[_0x5893('0xc3')][_0x5893('0x11e')](db['VtigerField'],{'as':'Subject','foreignKey':_0x5893('0x1d5')});db[_0x5893('0xc3')][_0x5893('0x11e')](db[_0x5893('0xc3')],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xc3')][_0x5893('0x11e')](db[_0x5893('0xc3')],{'as':_0x5893('0x1d7'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0xc3')][_0x5893('0x12f')](db[_0x5893('0x94')],{'as':_0x5893('0x94'),'foreignKey':'VariableId'});db[_0x5893('0x1df')][_0x5893('0x11e')](db[_0x5893('0xc5')],{'as':'Configurations','onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xc5')][_0x5893('0x11e')](db['ServicenowField'],{'as':_0x5893('0x1da'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0xc5')][_0x5893('0x11e')](db[_0x5893('0xc7')],{'as':_0x5893('0x1d1'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xc5')][_0x5893('0x11e')](db[_0x5893('0xc7')],{'as':_0x5893('0x1cb'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0xc5')][_0x5893('0x12f')](db[_0x5893('0x1df')],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xc7')][_0x5893('0x11e')](db[_0x5893('0xc7')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x5893('0xc7')][_0x5893('0x11e')](db[_0x5893('0xc7')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x5893('0xc7')]['hasMany'](db['ServicenowField'],{'as':_0x5893('0x1d7'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0xc7')][_0x5893('0x12f')](db[_0x5893('0x94')],{'as':'Variable','foreignKey':'VariableId'});db['Dynamics365Account'][_0x5893('0x11e')](db[_0x5893('0xc9')],{'as':_0x5893('0x1ce'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xc8')][_0x5893('0x12f')](db['CloudProvider'],{'as':_0x5893('0x111'),'foreignKey':_0x5893('0x16d')});db[_0x5893('0xc9')][_0x5893('0x11e')](db[_0x5893('0xcb')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x5893('0x1d5')});db[_0x5893('0xc9')][_0x5893('0x11e')](db[_0x5893('0xcb')],{'as':_0x5893('0x1d1'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xc9')][_0x5893('0x11e')](db[_0x5893('0xcb')],{'as':'Fields','onDelete':_0x5893('0x11b'),'foreignKey':'FieldId'});db[_0x5893('0xc9')][_0x5893('0x12f')](db['Dynamics365Account'],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0xcb')]['hasMany'](db[_0x5893('0xcb')],{'as':_0x5893('0x1d4'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0xcb')][_0x5893('0x11e')](db[_0x5893('0xcb')],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0xcb')]['hasMany'](db[_0x5893('0xcb')],{'as':'Field','foreignKey':_0x5893('0x1d3')});db['Dynamics365Field'][_0x5893('0x12f')](db[_0x5893('0x94')],{'as':_0x5893('0x94'),'foreignKey':_0x5893('0x1d8')});db['FreshsalesAccount'][_0x5893('0x11e')](db['FreshsalesConfiguration'],{'as':_0x5893('0x1ce'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0x1e0')]['hasMany'](db[_0x5893('0x1e1')],{'as':_0x5893('0x1da'),'foreignKey':_0x5893('0x1d5')});db[_0x5893('0x1e0')][_0x5893('0x11e')](db[_0x5893('0x1e1')],{'as':_0x5893('0x1d1'),'foreignKey':'DescriptionId'});db[_0x5893('0x1e0')][_0x5893('0x11e')](db[_0x5893('0x1e1')],{'as':_0x5893('0x1cb'),'foreignKey':_0x5893('0x1d3')});db[_0x5893('0x1e0')][_0x5893('0x12f')](db['FreshsalesAccount'],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x1cf')});db[_0x5893('0x1e1')][_0x5893('0x11e')](db['FreshsalesField'],{'as':_0x5893('0x1d4'),'foreignKey':'SubjectId'});db[_0x5893('0x1e1')]['hasMany'](db['FreshsalesField'],{'as':_0x5893('0x1d6'),'foreignKey':_0x5893('0x1d2')});db[_0x5893('0x1e1')][_0x5893('0x11e')](db[_0x5893('0x1e1')],{'as':'Field','foreignKey':_0x5893('0x1d3')});db[_0x5893('0x1e1')][_0x5893('0x12f')](db[_0x5893('0x94')],{'as':_0x5893('0x94'),'foreignKey':_0x5893('0x1d8')});db['ChatQueueReport']['belongsTo'](db['ChatWebsite'],{});db[_0x5893('0xd3')][_0x5893('0x12f')](db['CmList'],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0xd3')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0xd3')][_0x5893('0x12f')](db[_0x5893('0x126')],{});db[_0x5893('0xd3')][_0x5893('0x12f')](db[_0x5893('0x1a0')],{});db[_0x5893('0xd3')][_0x5893('0x12f')](db[_0x5893('0x119')],{});db[_0x5893('0xd3')][_0x5893('0x12f')](db[_0x5893('0x67')],{});db[_0x5893('0xd5')]['belongsTo'](db[_0x5893('0x119')],{'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1e2')});db[_0x5893('0xd5')]['belongsTo'](db[_0x5893('0x119')],{'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x1e3')});db['JscriptySessionReport'][_0x5893('0x11e')](db[_0x5893('0xd9')],{'foreignKey':'SessionId','onDelete':'cascade'});db['JscriptySessionReport'][_0x5893('0x11e')](db['JscriptyAnswerReport'],{'foreignKey':'SessionId','onDelete':_0x5893('0x11b')});db[_0x5893('0xdd')][_0x5893('0x12f')](db[_0x5893('0x14c')],{});db[_0x5893('0xdd')][_0x5893('0x12f')](db['CmList'],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0xdd')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':_0x5893('0x17c')});db[_0x5893('0xdd')]['belongsTo'](db[_0x5893('0x55')],{});db[_0x5893('0xdd')]['belongsTo'](db[_0x5893('0x57')],{});db[_0x5893('0xdd')]['belongsTo'](db[_0x5893('0x119')],{});db[_0x5893('0xdd')]['belongsTo'](db[_0x5893('0x59')],{});db[_0x5893('0xe2')][_0x5893('0x11e')](db[_0x5893('0xdb')],{'foreignKey':_0x5893('0x1e4')});db[_0x5893('0xe2')][_0x5893('0x11e')](db[_0x5893('0xd9')],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0x5893('0x11e')](db[_0x5893('0xd7')],{'foreignKey':_0x5893('0x1e4')});db[_0x5893('0xed')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x5893('0x137')});db[_0x5893('0xed')]['belongsToMany'](db[_0x5893('0x13b')],{'through':_0x5893('0x1e5'),'as':_0x5893('0x1e6')});db[_0x5893('0xed')][_0x5893('0x132')](db[_0x5893('0x3d')],{'through':_0x5893('0x179'),'as':_0x5893('0x13e')});db[_0x5893('0xed')]['belongsToMany'](db[_0x5893('0x67')],{'through':_0x5893('0x1a8'),'as':_0x5893('0x13f')});db[_0x5893('0xed')]['belongsToMany'](db['FaxQueue'],{'through':_0x5893('0x192'),'as':'FaxQueues'});db['Team'][_0x5893('0x132')](db[_0x5893('0x59')],{'through':'team_has_sms_queues','as':_0x5893('0x1e7')});db[_0x5893('0xed')][_0x5893('0x132')](db[_0x5893('0x60')],{'through':_0x5893('0x19e'),'as':'OpenchannelQueues'});db[_0x5893('0xed')][_0x5893('0x132')](db[_0x5893('0x142')],{'through':_0x5893('0x1e8'),'as':_0x5893('0x143')});db['Team'][_0x5893('0x132')](db['VoicePrefix'],{'through':_0x5893('0x114'),'as':'VoicePrefixes'});db[_0x5893('0x1b1')][_0x5893('0x11e')](db[_0x5893('0x157')],{'as':_0x5893('0x158'),'foreignKey':_0x5893('0x1b2')});db[_0x5893('0x1b1')]['hasMany'](db['CmHopperFinal'],{'as':_0x5893('0x123'),'foreignKey':_0x5893('0x1b2')});db[_0x5893('0x1b1')][_0x5893('0x11e')](db['CmHopperHistory'],{'as':_0x5893('0x159'),'foreignKey':_0x5893('0x1b2')});db[_0x5893('0x1b1')][_0x5893('0x11e')](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0x5893('0x1b2')});db[_0x5893('0x1b1')]['belongsTo'](db[_0x5893('0x15b')],{'as':_0x5893('0x15b'),'foreignKey':_0x5893('0x15c')});db['Campaign'][_0x5893('0x12f')](db['Trunk'],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db[_0x5893('0x1b1')][_0x5893('0x12f')](db[_0x5893('0x80')],{'as':_0x5893('0x80'),'foreignKey':_0x5893('0x15f')});db['Campaign']['belongsTo'](db[_0x5893('0x1e9')],{'as':_0x5893('0x1e9'),'foreignKey':_0x5893('0x1ea')});db[_0x5893('0x1b1')][_0x5893('0x132')](db[_0x5893('0xfe')],{'as':'Lists','through':_0x5893('0x1eb')});db[_0x5893('0x1b1')][_0x5893('0x132')](db['CmList'],{'as':_0x5893('0x1ec'),'through':_0x5893('0x1ed')});db['Attachment'][_0x5893('0x12f')](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':_0x5893('0x187')});db[_0x5893('0xf5')][_0x5893('0x12f')](db['MailMessage'],{});db['MailTransferReport'][_0x5893('0x12f')](db[_0x5893('0x40')],{});db[_0x5893('0xf5')][_0x5893('0x12f')](db[_0x5893('0x3b')],{'foreignKey':_0x5893('0x1ee'),'as':'FromAccount'});db[_0x5893('0xf5')][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1ef'),'as':_0x5893('0x1f0')});db[_0x5893('0xf5')][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1f1'),'as':_0x5893('0x1f2')});db['MailTransferReport'][_0x5893('0x12f')](db['MailQueue'],{'foreignKey':_0x5893('0x1f3'),'as':_0x5893('0x1f4')});db[_0x5893('0xf5')]['belongsTo'](db['MailAccount'],{'foreignKey':'ToMailAccountId','as':_0x5893('0x1f5')});db['ChatTransferReport'][_0x5893('0x12f')](db[_0x5893('0x1a0')],{});db[_0x5893('0xf7')][_0x5893('0x12f')](db['ChatInteraction'],{});db['ChatTransferReport'][_0x5893('0x12f')](db[_0x5893('0x144')],{'foreignKey':'FromChatWebsiteId','as':_0x5893('0x1f6')});db[_0x5893('0xf7')]['belongsTo'](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1ef'),'as':_0x5893('0x1f0')});db['ChatTransferReport'][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1f1'),'as':_0x5893('0x1f2')});db['ChatTransferReport'][_0x5893('0x12f')](db[_0x5893('0x67')],{'foreignKey':_0x5893('0x1f7'),'as':_0x5893('0x1f4')});db[_0x5893('0xf7')][_0x5893('0x12f')](db[_0x5893('0x144')],{'foreignKey':_0x5893('0x1f8'),'as':_0x5893('0x1f5')});db['FaxTransferReport'][_0x5893('0x12f')](db[_0x5893('0x4c')],{});db['FaxTransferReport'][_0x5893('0x12f')](db[_0x5893('0x4b')],{});db[_0x5893('0xf9')]['belongsTo'](db[_0x5893('0x47')],{'foreignKey':_0x5893('0x1f9'),'as':_0x5893('0x1f6')});db[_0x5893('0xf9')][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1ef'),'as':_0x5893('0x1f0')});db[_0x5893('0xf9')][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1f1'),'as':_0x5893('0x1f2')});db[_0x5893('0xf9')][_0x5893('0x12f')](db[_0x5893('0x4e')],{'foreignKey':_0x5893('0x1fa'),'as':'ToQueue'});db[_0x5893('0xf9')]['belongsTo'](db[_0x5893('0x47')],{'foreignKey':_0x5893('0x1fb'),'as':'ToAccount'});db['OpenchannelTransferReport'][_0x5893('0x12f')](db[_0x5893('0x199')],{});db[_0x5893('0xfb')]['belongsTo'](db[_0x5893('0x5e')],{});db[_0x5893('0xfb')][_0x5893('0x12f')](db['OpenchannelAccount'],{'foreignKey':_0x5893('0x1fc'),'as':'FromAccount'});db[_0x5893('0xfb')]['belongsTo'](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1ef'),'as':'FromAgent'});db[_0x5893('0xfb')][_0x5893('0x12f')](db['User'],{'foreignKey':_0x5893('0x1f1'),'as':_0x5893('0x1f2')});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelQueue'],{'foreignKey':_0x5893('0x1fd'),'as':_0x5893('0x1f4')});db[_0x5893('0xfb')][_0x5893('0x12f')](db['OpenchannelAccount'],{'foreignKey':_0x5893('0x1fe'),'as':_0x5893('0x1f5')});db[_0x5893('0xfc')]['belongsTo'](db[_0x5893('0x57')],{});db[_0x5893('0xfc')][_0x5893('0x12f')](db['SmsInteraction'],{});db[_0x5893('0xfc')][_0x5893('0x12f')](db[_0x5893('0x14c')],{'foreignKey':'FromSmsAccountId','as':'FromAccount'});db['SmsTransferReport'][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1ef'),'as':'FromAgent'});db[_0x5893('0xfc')][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1f1'),'as':_0x5893('0x1f2')});db[_0x5893('0xfc')]['belongsTo'](db[_0x5893('0x59')],{'foreignKey':'ToSmsQueueId','as':'ToQueue'});db['SmsTransferReport'][_0x5893('0x12f')](db['SmsAccount'],{'foreignKey':_0x5893('0x1ff'),'as':_0x5893('0x1f5')});db[_0x5893('0xfe')][_0x5893('0x11e')](db['Disposition'],{'as':_0x5893('0x18b'),'foreignKey':_0x5893('0x176'),'onDelete':_0x5893('0x11b')});db[_0x5893('0xfe')][_0x5893('0x11e')](db['CmCustomField'],{'as':_0x5893('0x200'),'foreignKey':_0x5893('0x176')});db['CmList'][_0x5893('0x11e')](db[_0x5893('0x6c')],{'as':'Contacts','onDelete':_0x5893('0x11b'),'foreignKey':'ListId'});db[_0x5893('0xfe')][_0x5893('0x11e')](db[_0x5893('0x122')],{'as':_0x5893('0x123'),'foreignKey':'ListId'});db['CmList'][_0x5893('0x11e')](db[_0x5893('0x71')],{'as':'HopperHistory','foreignKey':_0x5893('0x176')});db[_0x5893('0xfe')][_0x5893('0x11e')](db[_0x5893('0x73')],{'as':'ReportAgentPreview','foreignKey':_0x5893('0x176')});db[_0x5893('0xfe')]['belongsToMany'](db['VoiceQueue'],{'as':_0x5893('0x201'),'through':_0x5893('0x202')});db[_0x5893('0xfe')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':'Agents','through':'cm_user_has_lists'});db[_0x5893('0x100')]['hasMany'](db[_0x5893('0x18')],{'as':_0x5893('0x121'),'onDelete':_0x5893('0x11b')});db['VoicePrefix'][_0x5893('0x132')](db[_0x5893('0x119')],{'as':'Agents','through':_0x5893('0x115')});db['VoicePrefix'][_0x5893('0x132')](db[_0x5893('0xed')],{'through':_0x5893('0x114'),'as':'Teams'});db[_0x5893('0x102')][_0x5893('0x11e')](db[_0x5893('0x119')],{'as':'Users','foreignKey':_0x5893('0x130')});db[_0x5893('0x102')][_0x5893('0x11e')](db[_0x5893('0x203')],{'as':'UserProfileSections','foreignKey':_0x5893('0x130'),'onDelete':'cascade'});db[_0x5893('0x203')]['hasMany'](db[_0x5893('0x105')],{'as':_0x5893('0x204'),'foreignKey':_0x5893('0x205'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x14f')][_0x5893('0x11e')](db[_0x5893('0x7c')],{'as':_0x5893('0x18b'),'foreignKey':_0x5893('0x206'),'onDelete':_0x5893('0x11b')});db[_0x5893('0x14f')]['hasMany'](db[_0x5893('0x7a')],{'as':_0x5893('0x171'),'foreignKey':_0x5893('0x206')});db[_0x5893('0x14f')][_0x5893('0x11e')](db[_0x5893('0x10c')],{'as':'Messages','foreignKey':_0x5893('0x206')});db['WhatsappAccount']['hasMany'](db[_0x5893('0x10a')],{'as':_0x5893('0x173')});db[_0x5893('0x14f')][_0x5893('0x11e')](db[_0x5893('0x108')],{'as':_0x5893('0x153')});db['WhatsappAccount'][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':'List','foreignKey':_0x5893('0x176')});db[_0x5893('0x14f')][_0x5893('0x12f')](db[_0x5893('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0x5893('0x161')});db[_0x5893('0x14f')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x151')});db[_0x5893('0x108')]['belongsTo'](db[_0x5893('0x119')],{'onDelete':_0x5893('0x16e')});db[_0x5893('0x108')][_0x5893('0x12f')](db[_0x5893('0x142')],{'onDelete':_0x5893('0x16e')});db[_0x5893('0x108')]['belongsTo'](db[_0x5893('0x14f')],{'onDelete':_0x5893('0x16e')});db['WhatsappApplication'][_0x5893('0x12f')](db[_0x5893('0x80')],{'onDelete':_0x5893('0x16e'),'foreignKey':_0x5893('0x15f')});db[_0x5893('0x108')][_0x5893('0x12f')](db['Tag'],{'onDelete':_0x5893('0x16e'),'foreignKey':_0x5893('0x188')});db['WhatsappInteraction']['hasMany'](db['WhatsappMessage'],{'as':_0x5893('0x172'),'onDelete':_0x5893('0x11b'),'foreignKey':_0x5893('0x207')});db[_0x5893('0x10a')][_0x5893('0x12f')](db[_0x5893('0x14f')],{'as':_0x5893('0x17b'),'foreignKey':_0x5893('0x206')});db[_0x5893('0x10a')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':'ContactId'});db[_0x5893('0x10a')][_0x5893('0x12f')](db['User'],{'as':_0x5893('0x17d'),'foreignKey':_0x5893('0x11c')});db['WhatsappInteraction'][_0x5893('0x132')](db[_0x5893('0x8b')],{'through':_0x5893('0x1c2'),'as':_0x5893('0x17f')});db[_0x5893('0x10a')][_0x5893('0x132')](db['Tag'],{'through':_0x5893('0x1c2'),'as':_0x5893('0x180')});db['WhatsappInteraction'][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x181'),'through':_0x5893('0x208'),'foreignKey':_0x5893('0x207')});db[_0x5893('0x10c')]['belongsTo'](db[_0x5893('0x119')],{'as':_0x5893('0x119')});db[_0x5893('0x10c')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'onDelete':_0x5893('0x11b'),'as':_0x5893('0x16a')});db[_0x5893('0x10c')]['belongsTo'](db[_0x5893('0x10a')],{'onDelete':_0x5893('0x11b'),'as':'Interaction','foreignKey':_0x5893('0x207')});db['WhatsappMessage']['belongsTo'](db['WhatsappAccount'],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0x5893('0x10e')][_0x5893('0x12f')](db['WhatsappAccount'],{});db[_0x5893('0x10e')][_0x5893('0x12f')](db[_0x5893('0xfe')],{'as':_0x5893('0x175'),'foreignKey':_0x5893('0x176')});db[_0x5893('0x10e')][_0x5893('0x12f')](db[_0x5893('0x6c')],{'as':_0x5893('0x16a'),'foreignKey':'ContactId'});db[_0x5893('0x10e')][_0x5893('0x12f')](db['WhatsappInteraction'],{});db['WhatsappQueueReport'][_0x5893('0x12f')](db[_0x5893('0x142')],{});db['WhatsappQueueReport'][_0x5893('0x12f')](db['WhatsappMessage'],{});db[_0x5893('0x10e')][_0x5893('0x12f')](db[_0x5893('0x119')],{});db[_0x5893('0x209')][_0x5893('0x12f')](db[_0x5893('0x10c')],{});db['WhatsappTransferReport']['belongsTo'](db['WhatsappInteraction'],{});db[_0x5893('0x209')]['belongsTo'](db[_0x5893('0x14f')],{'foreignKey':'FromWhatsappAccountId','as':'FromAccount'});db[_0x5893('0x209')][_0x5893('0x12f')](db[_0x5893('0x14f')],{'foreignKey':'ToWhatsappAccountId','as':_0x5893('0x1f5')});db['WhatsappTransferReport'][_0x5893('0x12f')](db[_0x5893('0x142')],{'foreignKey':_0x5893('0x20a'),'as':_0x5893('0x1f4')});db[_0x5893('0x209')][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1ef'),'as':_0x5893('0x1f0')});db[_0x5893('0x209')][_0x5893('0x12f')](db[_0x5893('0x119')],{'foreignKey':_0x5893('0x1f1'),'as':_0x5893('0x1f2')});db[_0x5893('0x142')][_0x5893('0x132')](db[_0x5893('0x119')],{'as':_0x5893('0x162'),'through':_0x5893('0x36'),'foreignKey':'WhatsappQueueId'});db[_0x5893('0x142')][_0x5893('0x132')](db['Team'],{'through':_0x5893('0x1e8'),'as':_0x5893('0x163')});db['UserSetting'][_0x5893('0x12f')](db[_0x5893('0x119')],{'as':'user','foreignKey':_0x5893('0x11c'),'onDelete':_0x5893('0x11b'),'hooks':!![]});db[_0x5893('0x111')][_0x5893('0x11a')](db[_0x5893('0xc8')],{'as':_0x5893('0xc8'),'onDelete':_0x5893('0x16e')});db[_0x5893('0x111')][_0x5893('0x11a')](db[_0x5893('0x16b')],{'as':_0x5893('0x16f'),'onDelete':_0x5893('0x16e')});db['CloudProvider'][_0x5893('0x11a')](db['MailServerOut'],{'as':_0x5893('0x170'),'onDelete':_0x5893('0x16e')});module[_0x5893('0x20b')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 69728c3..7db70d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff42=['./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/conditions','./api/condition','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/schedules','./api/sound','./api/tag','./api/contactItemType','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','./api/trigger','/api/integrations','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','./api/squareMessage','/api/teams','./api/team','/api/license','/api/campaigns','/api/migrations','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','./api/realtime','/api/user-settings','./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/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','join','root','/www','static','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','appPath','/index.html','path','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','use','/api/users','./api/user','/api/voice/chanspy','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','/api/voice/queues/reports','/api/members/reports','./api/memberReport','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages'];(function(_0xd0d5ae,_0x1d506d){var _0xa090b8=function(_0x4b566c){while(--_0x4b566c){_0xd0d5ae['push'](_0xd0d5ae['shift']());}};_0xa090b8(++_0x1d506d);}(_0xff42,0xd1));var _0x2ff4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xff42[_0x20a584];return _0x4b41a8;};'use strict';var path=require(_0x2ff4('0x0'));var express=require(_0x2ff4('0x1'));var errors=require(_0x2ff4('0x2'));var config=require(_0x2ff4('0x3'));var setupLoggers=require(_0x2ff4('0x4'))[_0x2ff4('0x5')];var clientSideLogs=require(_0x2ff4('0x6'));exports[_0x2ff4('0x7')]=function(_0x4d87a5){return setupLoggers(_0x4d87a5)['then'](function(){_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x9'),require(_0x2ff4('0xa')));_0x4d87a5['use'](_0x2ff4('0xb'),require('./api/voiceChanSpy'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc'),require(_0x2ff4('0xd')));_0x4d87a5[_0x2ff4('0x8')]('/api/voice/extensions',require(_0x2ff4('0xe')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf'),require(_0x2ff4('0x10')));_0x4d87a5['use']('/api/voice/queues',require(_0x2ff4('0x11')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x12'),require(_0x2ff4('0x13')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x14'),require(_0x2ff4('0x15')));_0x4d87a5[_0x2ff4('0x8')]('/api/voice/mails',require('./api/voiceMail'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x16'),require(_0x2ff4('0x17')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x18'),require(_0x2ff4('0x19')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x1a'),require(_0x2ff4('0x1b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x1c'),require('./api/voiceAgentReport'));_0x4d87a5['use'](_0x2ff4('0x1d'),require('./api/voiceQueueReport'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x1e'),require(_0x2ff4('0x1f')));_0x4d87a5[_0x2ff4('0x8')]('/api/trunks',require(_0x2ff4('0x20')));_0x4d87a5['use']('/api/voice/transfers/reports',require(_0x2ff4('0x21')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x22'),require('./api/mailServerOut'));_0x4d87a5['use']('/api/mail/accounts',require(_0x2ff4('0x23')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x24'),require(_0x2ff4('0x25')));_0x4d87a5['use'](_0x2ff4('0x26'),require(_0x2ff4('0x27')));_0x4d87a5['use'](_0x2ff4('0x28'),require(_0x2ff4('0x29')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x2a'),require(_0x2ff4('0x2b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x2c'),require(_0x2ff4('0x2d')));_0x4d87a5[_0x2ff4('0x8')]('/api/mail/reports/queue',require(_0x2ff4('0x2e')));_0x4d87a5[_0x2ff4('0x8')]('/api/dashboards',require(_0x2ff4('0x2f')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x30'),require(_0x2ff4('0x31')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x32'),require('./api/faxAccount'));_0x4d87a5[_0x2ff4('0x8')]('/api/fax/applications',require(_0x2ff4('0x33')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x34'),require(_0x2ff4('0x35')));_0x4d87a5['use'](_0x2ff4('0x36'),require(_0x2ff4('0x37')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x38'),require(_0x2ff4('0x39')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x3a'),require(_0x2ff4('0x3b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x3c'),require(_0x2ff4('0x3d')));_0x4d87a5[_0x2ff4('0x8')]('/api/sms/applications',require(_0x2ff4('0x3e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x3f'),require(_0x2ff4('0x40')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x41'),require(_0x2ff4('0x42')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x43'),require(_0x2ff4('0x44')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x45'),require(_0x2ff4('0x46')));_0x4d87a5[_0x2ff4('0x8')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x47'),require(_0x2ff4('0x48')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x49'),require(_0x2ff4('0x4a')));_0x4d87a5['use']('/api/openchannel/queues',require('./api/openchannelQueue'));_0x4d87a5['use'](_0x2ff4('0x4b'),require(_0x2ff4('0x4c')));_0x4d87a5['use'](_0x2ff4('0x4d'),require(_0x2ff4('0x4e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x4f'),require(_0x2ff4('0x50')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x51'),require('./api/chatInteraction'));_0x4d87a5['use'](_0x2ff4('0x52'),require('./api/chatMessage'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x53'),require(_0x2ff4('0x54')));_0x4d87a5['use'](_0x2ff4('0x55'),require(_0x2ff4('0x56')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x57'),require(_0x2ff4('0x58')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x59'),require('./api/chatProactiveAction'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x5a'),require(_0x2ff4('0x5b')));_0x4d87a5['use'](_0x2ff4('0x5c'),require(_0x2ff4('0x5d')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x5e'),require(_0x2ff4('0x5f')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x60'),require(_0x2ff4('0x61')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x62'),require(_0x2ff4('0x63')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm/hopper_history',require(_0x2ff4('0x64')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm/custom_fields',require('./api/cmCustomField'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x65'),require(_0x2ff4('0x66')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x67'),require(_0x2ff4('0x68')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x69'),require(_0x2ff4('0x6a')));_0x4d87a5['use']('/api/dispositions',require('./api/disposition'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x6b'),require(_0x2ff4('0x6c')));_0x4d87a5[_0x2ff4('0x8')]('/api/intervals',require('./api/interval'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x6d'),require(_0x2ff4('0x6e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x6f'),require(_0x2ff4('0x70')));_0x4d87a5[_0x2ff4('0x8')]('/api/voiceQueuesLog',require('./api/voiceQueuesLog'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x71'),require('./api/schedule'));_0x4d87a5['use']('/api/sounds',require(_0x2ff4('0x72')));_0x4d87a5[_0x2ff4('0x8')]('/api/tags',require(_0x2ff4('0x73')));_0x4d87a5[_0x2ff4('0x8')]('/api/contact_item_types',require(_0x2ff4('0x74')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm_contact_has_items',require(_0x2ff4('0x75')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x76'),require(_0x2ff4('0x77')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x78'),require(_0x2ff4('0x79')));_0x4d87a5['use'](_0x2ff4('0x7a'),require(_0x2ff4('0x7b')));_0x4d87a5[_0x2ff4('0x8')]('/api/variables',require('./api/variable'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x7c'),require('./api/integration'));_0x4d87a5['use'](_0x2ff4('0x7d'),require(_0x2ff4('0x7e')));_0x4d87a5[_0x2ff4('0x8')]('/api/analytics/custom_reports',require(_0x2ff4('0x7f')));_0x4d87a5['use'](_0x2ff4('0x80'),require(_0x2ff4('0x81')));_0x4d87a5['use'](_0x2ff4('0x82'),require('./api/analyticExtractedReport'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x83'),require('./api/analyticMetric'));_0x4d87a5['use'](_0x2ff4('0x84'),require('./api/analyticFieldReport'));_0x4d87a5[_0x2ff4('0x8')]('/api/analytics/tree_reports',require(_0x2ff4('0x85')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/salesforce/accounts',require(_0x2ff4('0x86')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x87'),require(_0x2ff4('0x88')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/salesforce/fields',require(_0x2ff4('0x89')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8a'),require(_0x2ff4('0x8b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8c'),require('./api/intSugarcrmConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8d'),require('./api/intSugarcrmField'));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/desk/accounts',require(_0x2ff4('0x8e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8f'),require(_0x2ff4('0x90')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x91'),require(_0x2ff4('0x92')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/zoho/accounts',require(_0x2ff4('0x93')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x94'),require('./api/intZohoConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x95'),require('./api/intZohoField'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x96'),require(_0x2ff4('0x97')));_0x4d87a5['use']('/api/integrations/zendesk/configurations',require(_0x2ff4('0x98')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x99'),require(_0x2ff4('0x9a')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/freshdesk/accounts',require(_0x2ff4('0x9b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x9c'),require(_0x2ff4('0x9d')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x9e'),require(_0x2ff4('0x9f')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa0'),require(_0x2ff4('0xa1')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa2'),require(_0x2ff4('0xa3')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/vtiger/fields',require('./api/intVtigerField'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa4'),require(_0x2ff4('0xa5')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa6'),require('./api/intServicenowConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa7'),require(_0x2ff4('0xa8')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa9'),require(_0x2ff4('0xaa')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xab'),require(_0x2ff4('0xac')));_0x4d87a5['use']('/api/integrations/dynamics365/fields',require(_0x2ff4('0xad')));_0x4d87a5['use']('/api/integrations/freshsales/accounts',require(_0x2ff4('0xae')));_0x4d87a5['use'](_0x2ff4('0xaf'),require('./api/intFreshsalesConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb0'),require(_0x2ff4('0xb1')));_0x4d87a5[_0x2ff4('0x8')]('/api/networks',require(_0x2ff4('0xb2')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb3'),require('./api/chatQueueReport'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb4'),require(_0x2ff4('0xb5')));_0x4d87a5['use']('/api/jscripty/answers/reports',require(_0x2ff4('0xb6')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb7'),require('./api/jscriptyQuestionReport'));_0x4d87a5['use'](_0x2ff4('0xb8'),require(_0x2ff4('0xb9')));_0x4d87a5['use'](_0x2ff4('0xba'),require(_0x2ff4('0xbb')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xbc'),require(_0x2ff4('0xbd')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xbe'),require('./api/squareReportDetail'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xbf'),require(_0x2ff4('0xc0')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc1'),require('./api/setting'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc2'),require(_0x2ff4('0xc3')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc4'),require('./api/squareProject'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc5'),require(_0x2ff4('0xc6')));_0x4d87a5['use']('/api/square/messages',require(_0x2ff4('0xc7')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc8'),require(_0x2ff4('0xc9')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xca'),require('./api/license'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcb'),require('./api/campaign'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcc'),require('./api/migration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcd'),require(_0x2ff4('0xce')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcf'),require(_0x2ff4('0xd0')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd1'),require(_0x2ff4('0xd2')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd3'),require(_0x2ff4('0xd4')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd5'),require(_0x2ff4('0xd6')));_0x4d87a5['use']('/api/openchannel/reports/transfer',require(_0x2ff4('0xd7')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd8'),require(_0x2ff4('0xd9')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm/lists',require(_0x2ff4('0xda')));_0x4d87a5[_0x2ff4('0x8')]('/api/voice/prefixes',require(_0x2ff4('0xdb')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xdc'),require(_0x2ff4('0xdd')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xde'),require(_0x2ff4('0xdf')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe0'),require(_0x2ff4('0xe1')));_0x4d87a5['use'](_0x2ff4('0xe2'),require(_0x2ff4('0xe3')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe4'),require('./api/whatsappAccount'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe5'),require('./api/whatsappApplication'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe6'),require(_0x2ff4('0xe7')));_0x4d87a5['use']('/api/whatsapp/messages',require(_0x2ff4('0xe8')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe9'),require(_0x2ff4('0xea')));_0x4d87a5[_0x2ff4('0x8')]('/api/whatsapp/reports/transfer',require(_0x2ff4('0xeb')));_0x4d87a5[_0x2ff4('0x8')]('/api/whatsapp/queues',require(_0x2ff4('0xec')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xed'),require(_0x2ff4('0xee')));_0x4d87a5['use']('/api/realtime',require(_0x2ff4('0xef')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf0'),require('./api/user-setting'));_0x4d87a5[_0x2ff4('0x8')]('/api/auth/local',require(_0x2ff4('0xf1')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf2'),require(_0x2ff4('0xf3')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf4'),require(_0x2ff4('0xf5')));_0x4d87a5[_0x2ff4('0x8')]('/api/jira',require(_0x2ff4('0xf6')));_0x4d87a5['use'](_0x2ff4('0xf7'),require(_0x2ff4('0xf8')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf9'),require(_0x2ff4('0xfa')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xfb'),require(_0x2ff4('0xfc')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xfd'),require(_0x2ff4('0xfe')));_0x4d87a5['use'](_0x2ff4('0xff'),require(_0x2ff4('0x100')));_0x4d87a5['use'](_0x2ff4('0x101'),clientSideLogs);_0x4d87a5['use'](_0x2ff4('0x102'),express['static'](path[_0x2ff4('0x103')](config[_0x2ff4('0x104')],_0x2ff4('0x102'))));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x105'),express[_0x2ff4('0x106')](path[_0x2ff4('0x103')](config[_0x2ff4('0x104')],_0x2ff4('0x105'))));_0x4d87a5['use'](_0x2ff4('0x107'),express['static'](path[_0x2ff4('0x103')](config[_0x2ff4('0x104')],_0x2ff4('0x107'))));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x108'),express[_0x2ff4('0x106')](path[_0x2ff4('0x103')](config['root'],_0x2ff4('0x109'),_0x2ff4('0x10a'))));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x10b'),express[_0x2ff4('0x106')](path['join'](config[_0x2ff4('0x104')],_0x2ff4('0x10c'))));_0x4d87a5[_0x2ff4('0x10d')](_0x2ff4('0x10e'))[_0x2ff4('0x10f')](errors[0x194]);_0x4d87a5[_0x2ff4('0x10d')]('/*')[_0x2ff4('0x10f')](function(_0x11bbc8,_0x49aaa4){_0x49aaa4['sendFile'](path[_0x2ff4('0x110')](_0x4d87a5['get'](_0x2ff4('0x111'))+_0x2ff4('0x112')));});return _0x4d87a5;});};
\ No newline at end of file
+var _0xce58=['./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/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/pauses','./api/pause','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/schedule','/api/tags','./api/tag','/api/contact_item_types','/api/cm_contact_has_items','./api/cmContactHasItem','./api/cmHopperAdditionalPhone','/api/templates','/api/triggers','/api/variables','./api/variable','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','./api/license','/api/campaigns','/api/migrations','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/resources','/api/userNotifications','./api/whatsappAccount','./api/whatsappApplication','/api/whatsapp/messages','./api/whatsappMessage','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','./api/user-setting','/api/auth/local','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','./api/rpc','/api/version','./api/version','/api/pm2','./api/pm2','./api/webbar','/api/logs','/apidoc','static','join','/www','root','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','get','route','appPath','/index.html','path','./config/environment','./utils/client-side-logger','setupLoggers','default','then','use','/api/users','./api/user','/api/voice/contexts','/api/voice/mohs','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/trunks','./api/trunk','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','/api/dashboards','./api/dashboard','/api/dashboards/items','/api/fax/accounts','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','./api/faxQueue','/api/fax/reports/queue','./api/smsAccount','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue'];(function(_0x367e53,_0x4e725a){var _0x1bb547=function(_0x16d097){while(--_0x16d097){_0x367e53['push'](_0x367e53['shift']());}};_0x1bb547(++_0x4e725a);}(_0xce58,0xbe));var _0x8ce5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce58[_0x3dd15e];return _0x231fd0;};'use strict';var path=require(_0x8ce5('0x0'));var express=require('express');var errors=require('./errors');var config=require(_0x8ce5('0x1'));var setupLoggers=require(_0x8ce5('0x2'))[_0x8ce5('0x3')];var clientSideLogs=require('./api/client-side-logs');exports[_0x8ce5('0x4')]=function(_0x4f1d5b){return setupLoggers(_0x4f1d5b)[_0x8ce5('0x5')](function(){_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x7'),require(_0x8ce5('0x8')));_0x4f1d5b[_0x8ce5('0x6')]('/api/voice/chanspy',require('./api/voiceChanSpy'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x9'),require('./api/voiceContext'));_0x4f1d5b[_0x8ce5('0x6')]('/api/voice/extensions',require('./api/voiceExtension'));_0x4f1d5b['use'](_0x8ce5('0xa'),require('./api/voiceMusicOnHold'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xb'),require(_0x8ce5('0xc')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xd'),require('./api/voiceRecording'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xe'),require('./api/screenRecording'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xf'),require(_0x8ce5('0x10')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x11'),require(_0x8ce5('0x12')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x13'),require(_0x8ce5('0x14')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x15'),require('./api/voiceDialReport'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x16'),require(_0x8ce5('0x17')));_0x4f1d5b['use'](_0x8ce5('0x18'),require(_0x8ce5('0x19')));_0x4f1d5b[_0x8ce5('0x6')]('/api/members/reports',require('./api/memberReport'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x1a'),require(_0x8ce5('0x1b')));_0x4f1d5b[_0x8ce5('0x6')]('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x1c'),require(_0x8ce5('0x1d')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x1e'),require(_0x8ce5('0x1f')));_0x4f1d5b['use'](_0x8ce5('0x20'),require(_0x8ce5('0x21')));_0x4f1d5b[_0x8ce5('0x6')]('/api/mail/substatuses',require(_0x8ce5('0x22')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x23'),require(_0x8ce5('0x24')));_0x4f1d5b['use']('/api/mail/messages',require(_0x8ce5('0x25')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x26'),require(_0x8ce5('0x27')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x28'),require('./api/mailQueueReport'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x29'),require(_0x8ce5('0x2a')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x2b'),require('./api/dashboardItem'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x2c'),require('./api/faxAccount'));_0x4f1d5b[_0x8ce5('0x6')]('/api/fax/applications',require(_0x8ce5('0x2d')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x2e'),require(_0x8ce5('0x2f')));_0x4f1d5b['use'](_0x8ce5('0x30'),require(_0x8ce5('0x31')));_0x4f1d5b[_0x8ce5('0x6')]('/api/fax/queues',require(_0x8ce5('0x32')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x33'),require('./api/faxQueueReport'));_0x4f1d5b['use']('/api/sms/accounts',require(_0x8ce5('0x34')));_0x4f1d5b[_0x8ce5('0x6')]('/api/sms/applications',require(_0x8ce5('0x35')));_0x4f1d5b[_0x8ce5('0x6')]('/api/sms/interactions',require(_0x8ce5('0x36')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x37'),require(_0x8ce5('0x38')));_0x4f1d5b['use'](_0x8ce5('0x39'),require(_0x8ce5('0x3a')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x3b'),require('./api/openchannelAccount'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x3c'),require(_0x8ce5('0x3d')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x3e'),require(_0x8ce5('0x3f')));_0x4f1d5b[_0x8ce5('0x6')]('/api/openchannel/messages',require(_0x8ce5('0x40')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x41'),require(_0x8ce5('0x42')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x43'),require(_0x8ce5('0x44')));_0x4f1d5b['use'](_0x8ce5('0x45'),require(_0x8ce5('0x46')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x47'),require(_0x8ce5('0x48')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x49'),require('./api/chatInteraction'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x4a'),require(_0x8ce5('0x4b')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x4c'),require('./api/chatOfflineMessage'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x4d'),require('./api/chatQueue'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x4e'),require(_0x8ce5('0x4f')));_0x4f1d5b[_0x8ce5('0x6')]('/api/chat/proactive_actions',require('./api/chatProactiveAction'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x50'),require(_0x8ce5('0x51')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x52'),require(_0x8ce5('0x53')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x54'),require('./api/cmHopper'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x55'),require(_0x8ce5('0x56')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x57'),require(_0x8ce5('0x58')));_0x4f1d5b[_0x8ce5('0x6')]('/api/cm/hopper_history',require('./api/cmHopperHistory'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x59'),require(_0x8ce5('0x5a')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x5b'),require(_0x8ce5('0x5c')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x5d'),require(_0x8ce5('0x5e')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x5f'),require(_0x8ce5('0x60')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x61'),require(_0x8ce5('0x62')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x63'),require(_0x8ce5('0x64')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x65'),require('./api/interval'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x66'),require(_0x8ce5('0x67')));_0x4f1d5b[_0x8ce5('0x6')]('/api/cdr',require(_0x8ce5('0x68')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x69'),require(_0x8ce5('0x6a')));_0x4f1d5b[_0x8ce5('0x6')]('/api/schedules',require(_0x8ce5('0x6b')));_0x4f1d5b[_0x8ce5('0x6')]('/api/sounds',require('./api/sound'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x6c'),require(_0x8ce5('0x6d')));_0x4f1d5b['use'](_0x8ce5('0x6e'),require('./api/contactItemType'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x6f'),require(_0x8ce5('0x70')));_0x4f1d5b[_0x8ce5('0x6')]('/api/cm_hopper_additional_phones',require(_0x8ce5('0x71')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x72'),require('./api/template'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x73'),require('./api/trigger'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x74'),require(_0x8ce5('0x75')));_0x4f1d5b['use']('/api/integrations',require(_0x8ce5('0x76')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x77'),require(_0x8ce5('0x78')));_0x4f1d5b['use'](_0x8ce5('0x79'),require('./api/analyticCustomReport'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x7a'),require(_0x8ce5('0x7b')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x7c'),require(_0x8ce5('0x7d')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x7e'),require('./api/analyticMetric'));_0x4f1d5b['use'](_0x8ce5('0x7f'),require(_0x8ce5('0x80')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x81'),require(_0x8ce5('0x82')));_0x4f1d5b[_0x8ce5('0x6')]('/api/integrations/salesforce/accounts',require(_0x8ce5('0x83')));_0x4f1d5b[_0x8ce5('0x6')]('/api/integrations/salesforce/configurations',require('./api/intSalesforceConfiguration'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x84'),require('./api/intSalesforceField'));_0x4f1d5b['use'](_0x8ce5('0x85'),require('./api/intSugarcrmAccount'));_0x4f1d5b['use']('/api/integrations/sugarcrm/configurations',require('./api/intSugarcrmConfiguration'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x86'),require(_0x8ce5('0x87')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x88'),require(_0x8ce5('0x89')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x8a'),require(_0x8ce5('0x8b')));_0x4f1d5b['use']('/api/integrations/desk/fields',require(_0x8ce5('0x8c')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x8d'),require(_0x8ce5('0x8e')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x8f'),require(_0x8ce5('0x90')));_0x4f1d5b['use'](_0x8ce5('0x91'),require(_0x8ce5('0x92')));_0x4f1d5b['use'](_0x8ce5('0x93'),require('./api/intZendeskAccount'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x94'),require(_0x8ce5('0x95')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x96'),require('./api/intZendeskField'));_0x4f1d5b[_0x8ce5('0x6')]('/api/integrations/freshdesk/accounts',require('./api/intFreshdeskAccount'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x97'),require('./api/intFreshdeskConfiguration'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x98'),require('./api/intFreshdeskField'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x99'),require(_0x8ce5('0x9a')));_0x4f1d5b[_0x8ce5('0x6')]('/api/integrations/vtiger/configurations',require(_0x8ce5('0x9b')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x9c'),require(_0x8ce5('0x9d')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0x9e'),require(_0x8ce5('0x9f')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xa0'),require(_0x8ce5('0xa1')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xa2'),require(_0x8ce5('0xa3')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xa4'),require(_0x8ce5('0xa5')));_0x4f1d5b[_0x8ce5('0x6')]('/api/integrations/dynamics365/configurations',require(_0x8ce5('0xa6')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xa7'),require('./api/intDynamics365Field'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xa8'),require(_0x8ce5('0xa9')));_0x4f1d5b[_0x8ce5('0x6')]('/api/integrations/freshsales/configurations',require(_0x8ce5('0xaa')));_0x4f1d5b[_0x8ce5('0x6')]('/api/integrations/freshsales/fields',require(_0x8ce5('0xab')));_0x4f1d5b[_0x8ce5('0x6')]('/api/networks',require(_0x8ce5('0xac')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xad'),require(_0x8ce5('0xae')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xaf'),require('./api/chatInternalMessage'));_0x4f1d5b[_0x8ce5('0x6')]('/api/jscripty/answers/reports',require(_0x8ce5('0xb0')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xb1'),require('./api/jscriptyQuestionReport'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xb2'),require(_0x8ce5('0xb3')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xb4'),require(_0x8ce5('0xb5')));_0x4f1d5b['use'](_0x8ce5('0xb6'),require(_0x8ce5('0xb7')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xb8'),require(_0x8ce5('0xb9')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xba'),require(_0x8ce5('0xbb')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xbc'),require(_0x8ce5('0xbd')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xbe'),require(_0x8ce5('0xbf')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xc0'),require(_0x8ce5('0xc1')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xc2'),require(_0x8ce5('0xc3')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xc4'),require(_0x8ce5('0xc5')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xc6'),require(_0x8ce5('0xc7')));_0x4f1d5b[_0x8ce5('0x6')]('/api/license',require(_0x8ce5('0xc8')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xc9'),require('./api/campaign'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xca'),require('./api/migration'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xcb'),require(_0x8ce5('0xcc')));_0x4f1d5b[_0x8ce5('0x6')]('/api/plugins',require(_0x8ce5('0xcd')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xce'),require(_0x8ce5('0xcf')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xd0'),require(_0x8ce5('0xd1')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xd2'),require('./api/faxTransferReport'));_0x4f1d5b[_0x8ce5('0x6')]('/api/openchannel/reports/transfer',require(_0x8ce5('0xd3')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xd4'),require(_0x8ce5('0xd5')));_0x4f1d5b['use'](_0x8ce5('0xd6'),require('./api/cmList'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xd7'),require('./api/voicePrefix'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xd8'),require(_0x8ce5('0xd9')));_0x4f1d5b[_0x8ce5('0x6')]('/api/userProfile/sections',require('./api/userProfileSection'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xda'),require('./api/userProfileResource'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xdb'),require('./api/userNotification'));_0x4f1d5b['use']('/api/whatsapp/accounts',require(_0x8ce5('0xdc')));_0x4f1d5b['use']('/api/whatsapp/applications',require(_0x8ce5('0xdd')));_0x4f1d5b[_0x8ce5('0x6')]('/api/whatsapp/interactions',require('./api/whatsappInteraction'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xde'),require(_0x8ce5('0xdf')));_0x4f1d5b[_0x8ce5('0x6')]('/api/whatsapp/reports/queue',require('./api/whatsappQueueReport'));_0x4f1d5b[_0x8ce5('0x6')]('/api/whatsapp/reports/transfer',require(_0x8ce5('0xe0')));_0x4f1d5b['use'](_0x8ce5('0xe1'),require(_0x8ce5('0xe2')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xe3'),require(_0x8ce5('0xe4')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xe5'),require(_0x8ce5('0xe6')));_0x4f1d5b[_0x8ce5('0x6')]('/api/user-settings',require(_0x8ce5('0xe7')));_0x4f1d5b['use'](_0x8ce5('0xe8'),require('./api/authLocal'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xe9'),require(_0x8ce5('0xea')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xeb'),require(_0x8ce5('0xec')));_0x4f1d5b[_0x8ce5('0x6')]('/api/jira',require(_0x8ce5('0xed')));_0x4f1d5b['use']('/api/rpc',require(_0x8ce5('0xee')));_0x4f1d5b['use'](_0x8ce5('0xef'),require(_0x8ce5('0xf0')));_0x4f1d5b['use']('/api/system',require('./api/system'));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xf1'),require(_0x8ce5('0xf2')));_0x4f1d5b[_0x8ce5('0x6')]('/api/webbar',require(_0x8ce5('0xf3')));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xf4'),clientSideLogs);_0x4f1d5b['use'](_0x8ce5('0xf5'),express[_0x8ce5('0xf6')](path[_0x8ce5('0xf7')](config['root'],'/apidoc')));_0x4f1d5b['use'](_0x8ce5('0xf8'),express[_0x8ce5('0xf6')](path[_0x8ce5('0xf7')](config[_0x8ce5('0xf9')],_0x8ce5('0xf8'))));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xfa'),express[_0x8ce5('0xf6')](path[_0x8ce5('0xf7')](config[_0x8ce5('0xf9')],_0x8ce5('0xfa'))));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xfb'),express[_0x8ce5('0xf6')](path[_0x8ce5('0xf7')](config[_0x8ce5('0xf9')],_0x8ce5('0xfc'),_0x8ce5('0xfd'))));_0x4f1d5b[_0x8ce5('0x6')](_0x8ce5('0xfe'),express[_0x8ce5('0xf6')](path[_0x8ce5('0xf7')](config['root'],_0x8ce5('0xff'))));_0x4f1d5b['route']('/:url(api|auth|components|app|bower_components|assets)/*')[_0x8ce5('0x100')](errors[0x194]);_0x4f1d5b[_0x8ce5('0x101')]('/*')[_0x8ce5('0x100')](function(_0x1cade1,_0x4ea89f){_0x4ea89f['sendFile'](path['resolve'](_0x4f1d5b[_0x8ce5('0x100')](_0x8ce5('0x102'))+_0x8ce5('0x103')));});return _0x4f1d5b;});};
\ No newline at end of file
index f90abab..5f654e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b97=['../api/intZohoAccount/intZohoAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','../config/environment','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailApplication/mailApplication.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/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc'];(function(_0x923991,_0x481465){var _0x191cfc=function(_0x6412e1){while(--_0x6412e1){_0x923991['push'](_0x923991['shift']());}};_0x191cfc(++_0x481465);}(_0x9b97,0x11e));var _0x79b9=function(_0x144f65,_0x4e4677){_0x144f65=_0x144f65-0x0;var _0x324bf0=_0x9b97[_0x144f65];return _0x324bf0;};'use strict';var jayson=require(_0x79b9('0x0'));var _=require('lodash');var config=require(_0x79b9('0x1'));exports[_0x79b9('0x2')]=function(){return new Promise(function(_0x20beff,_0x3079b4){var _0x512f1e={};_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/user/user.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x4')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x5')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x6')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x7')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x8')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x9')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xa')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xb')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xc')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xd')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xe')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0xf')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/mailInteraction/mailInteraction.rpc'));_0x512f1e=_['merge'](_0x512f1e,require('../api/mailMessage/mailMessage.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x10')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x11')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/faxAccount/faxAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x12')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x13')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x14')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x15')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x16')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/smsAccount/smsAccount.rpc'));_0x512f1e=_['merge'](_0x512f1e,require('../api/smsInteraction/smsInteraction.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x17')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x18')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x19')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1a')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1b')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1c')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/chatInteraction/chatInteraction.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1d')));_0x512f1e=_['merge'](_0x512f1e,require('../api/chatQueue/chatQueue.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1e')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1f')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x20')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x21')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x22')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x23')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x24')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x25')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x26')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x27')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x28')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x29')));_0x512f1e=_['merge'](_0x512f1e,require('../api/variable/variable.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x2a')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2b')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x2c')));_0x512f1e=_['merge'](_0x512f1e,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2d')));_0x512f1e=_['merge'](_0x512f1e,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2e')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2f')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x512f1e=_['merge'](_0x512f1e,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x30')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x31')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x32')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/squareOdbc/squareOdbc.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/squareProject/squareProject.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x33')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/squareMessage/squareMessage.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x34')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x35')));_0x512f1e=_['merge'](_0x512f1e,require('../api/plugin/plugin.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x36')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x37')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x38')));_0x512f1e=_['merge'](_0x512f1e,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x39')));var _0x4d5187=jayson[_0x79b9('0x3a')](_0x512f1e)[_0x79b9('0x3b')]();var _0x396d63=config[_0x79b9('0x3c')][_0x79b9('0x3d')]||config['port']+0x1;var _0x139edb=config[_0x79b9('0x3c')]['ip']||'localhost';_0x4d5187['on']('error',function(_0x2eab0d){return _0x3079b4(_0x2eab0d);});_0x4d5187[_0x79b9('0x2')](_0x396d63,_0x139edb,function(){console['log'](_0x79b9('0x3e'),_0x139edb,_0x396d63);require(_0x79b9('0x3f'))[_0x79b9('0x40')]();return _0x20beff(_0x79b9('0x41')+_0x139edb+':'+_0x396d63);});});};
\ No newline at end of file
+var _0x0dd6=['merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','server','http','rpc','port','localhost','error','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','../config/environment','listen'];(function(_0x380e9c,_0x3a7675){var _0x56a468=function(_0x5f0408){while(--_0x5f0408){_0x380e9c['push'](_0x380e9c['shift']());}};_0x56a468(++_0x3a7675);}(_0x0dd6,0xca));var _0x60dd=function(_0x564cf3,_0x595b52){_0x564cf3=_0x564cf3-0x0;var _0x9cd21e=_0x0dd6[_0x564cf3];return _0x9cd21e;};'use strict';var jayson=require('jayson/promise');var _=require('lodash');var config=require(_0x60dd('0x0'));exports[_0x60dd('0x1')]=function(){return new Promise(function(_0x292e8,_0x200bcf){var _0x1cf933={};_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x3')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x4')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x5')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x6')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x7')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x8')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x9')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0xa')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/memberReport/memberReport.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0xb')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0xc')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0xd')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0xe')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/mailAccount/mailAccount.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0xf')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x10')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/mailMessage/mailMessage.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x11')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x12')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/faxAccount/faxAccount.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x13')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x14')));_0x1cf933=_['merge'](_0x1cf933,require('../api/faxMessage/faxMessage.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x15')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x16')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x17')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x18')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x19')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x1a')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x1b')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x1c')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x1d')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/chatInteraction/chatInteraction.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x1e')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x1f')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x20')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/cmHopper/cmHopper.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x21')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x22')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x23')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x24')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x25')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x26')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x27')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x28')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/trigger/trigger.rpc'));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x29')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x2a')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x2b')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x2c')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x1cf933=_['merge'](_0x1cf933,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x2d')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x2e')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x2f')));_0x1cf933=_['merge'](_0x1cf933,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x30')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x31')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x32')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/setting/setting.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/squareOdbc/squareOdbc.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x33')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/squareRecording/squareRecording.rpc'));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x34')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/campaign/campaign.rpc'));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x35')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x36')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require(_0x60dd('0x37')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x38')));_0x1cf933=_['merge'](_0x1cf933,require(_0x60dd('0x39')));_0x1cf933=_[_0x60dd('0x2')](_0x1cf933,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x514ea6=jayson[_0x60dd('0x3a')](_0x1cf933)[_0x60dd('0x3b')]();var _0x18a313=config[_0x60dd('0x3c')][_0x60dd('0x3d')]||config[_0x60dd('0x3d')]+0x1;var _0x367098=config[_0x60dd('0x3c')]['ip']||_0x60dd('0x3e');_0x514ea6['on'](_0x60dd('0x3f'),function(_0xc0f02d){return _0x200bcf(_0xc0f02d);});_0x514ea6['listen'](_0x18a313,_0x367098,function(){console['log'](_0x60dd('0x40'),_0x367098,_0x18a313);require(_0x60dd('0x41'))[_0x60dd('0x42')]();return _0x292e8(_0x60dd('0x43')+_0x367098+':'+_0x18a313);});});};
\ No newline at end of file
index 65142ea..d074950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe49a=['length','match','error','code','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','command','inherits','prototype','sendRequest','sync','answer','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','isNumber','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','getVariable','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','label','exports','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','split'];(function(_0x466895,_0x43f6c6){var _0x27807c=function(_0x3c9958){while(--_0x3c9958){_0x466895['push'](_0x466895['shift']());}};_0x27807c(++_0x43f6c6);}(_0xe49a,0x6f));var _0xae49=function(_0x50ae46,_0x38abe6){_0x50ae46=_0x50ae46-0x0;var _0x57586a=_0xe49a[_0x50ae46];return _0x57586a;};'use strict';var util=require('util');var _=require('lodash');var EventEmitter=require('events')[_0xae49('0x0')];var AGIReply=require(_0xae49('0x1'));var AGIError=require(_0xae49('0x2'));function AGIChannel(_0x17b1b8){var _0x5a9ac6=this,_0x1753e6=new AGIReply(),_0x48372c=![],_0x582869={};EventEmitter[_0xae49('0x3')](_0x5a9ac6);_0x17b1b8[_0xae49('0x4')](_0xae49('0x5'));_0x17b1b8[_0xae49('0x6')](0x8*0x3c*0x3c*0x3e8);_0x1753e6[_0xae49('0x4')]('utf8');_0x1753e6['on']('headers',function(_0x59de5a){for(var _0x8f1013 in _0x59de5a){_0x5a9ac6[_0x8f1013]=_0x59de5a[_0x8f1013];}_0x5a9ac6[_0xae49('0x7')](_0xae49('0x8'));});_0x1753e6['on'](_0xae49('0x9'),function(_0x5184fb){if(_0x5184fb[_0xae49('0xa')]()==_0xae49('0xb')){_0x5a9ac6[_0xae49('0x7')](_0xae49('0xb'));return;}if(_0x5184fb[_0xae49('0xc')](0x0,0xb)==_0xae49('0xd')){_0x48372c=!![];}if(_0x48372c){_0x582869['rx']+=_0x5184fb+'\x0a';if(_0x5184fb[_0xae49('0xe')](_0xae49('0xf'))!=-0x1){_0x48372c=![];}}else{_0x582869['rx']=_0x5184fb;}if(_0x48372c){return;}if(typeof _0x582869['cb']==_0xae49('0x10')){var _0x2dda5c=_0x582869['rx'][_0xae49('0xc')](0x0,0x3),_0x4c45f6=null,_0x4a09b1=null;_0x2dda5c=parseInt(_0x2dda5c);if(isNaN(_0x2dda5c)){_0x582869['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xae49('0x11')});return;}if(_0x2dda5c!=0xc8){_0x582869['cb'](null,{'code':_0x2dda5c,'result':-0x1,'extra':'KO'});return;}_0x4c45f6=_0x582869['rx'][_0xae49('0xc')](0x4)[_0xae49('0x12')](_0xae49('0x13'),'');if(_0x4c45f6['indexOf']('\x20')!=-0x1){_0x4c45f6=_0x4c45f6[_0xae49('0x14')](0x0,_0x4c45f6[_0xae49('0x15')]('\x20'));}if(_['startsWith'](_0x4c45f6,'-1')){_0x4c45f6=parseInt(_0x4c45f6);}_0x4a09b1=_0x582869['rx'][_0xae49('0x16')]('\x20');if(_0x4a09b1[_0xae49('0x17')]==0x3){_0x4a09b1=_0x4a09b1[0x2][_0xae49('0xc')](0x1,_0x4a09b1[0x2]['length']-0x1);}else if(_0x4a09b1[_0xae49('0x17')]>0x3){var _0x7a5e33=/\((.+)\)/;var _0x229c5d=_0x582869['rx'][_0xae49('0x18')](_0x7a5e33);if(_0x229c5d){_0x4a09b1=_0x229c5d[0x1];}else{_0x4a09b1=null;}}else{_0x4a09b1=null;}_0x582869['cb'](null,{'code':_0x2dda5c,'result':_0x4c45f6,'extra':_0x4a09b1});}});_0x17b1b8['on'](_0xae49('0x19'),function(_0xc93cee){_0x5a9ac6[_0xae49('0x7')](_0xae49('0x19'),new AGIError('E_AGI_SOCKET_ERROR',_0xc93cee[_0xae49('0x1a')]));});_0x17b1b8['on'](_0xae49('0x1b'),function(){_0x5a9ac6[_0xae49('0x7')]('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x17b1b8['on'](_0xae49('0x1c'),function(){_0x5a9ac6[_0xae49('0x7')]('timeout',new AGIError(_0xae49('0x1d')));_0x17b1b8[_0xae49('0x1e')]();});_0x17b1b8['pipe'](_0x1753e6);this[_0xae49('0x1f')]=function(_0xdb696c,_0x59ad45){var _0xdb696c=_0xdb696c||'',_0x59ad45=typeof _0x59ad45==_0xae49('0x10')?_0x59ad45:new Function();_0x582869={'tx':_0xdb696c,'rx':'','cb':_0x59ad45};_0x17b1b8['write'](_0xdb696c+'\x0a');},this[_0xae49('0x1b')]=function(){_0x17b1b8[_0xae49('0x1e')]();};}util[_0xae49('0x20')](AGIChannel,EventEmitter);AGIChannel[_0xae49('0x21')][_0xae49('0x22')]=function(_0x256b5f){return this['command'][_0xae49('0x23')](this,_0x256b5f);};AGIChannel['prototype'][_0xae49('0x24')]=function(){return this[_0xae49('0x22')]('ANSWER');};AGIChannel[_0xae49('0x21')][_0xae49('0x25')]=function(_0xdbe2c2,_0x204ee0,_0x21fca5){_0xdbe2c2=_0xdbe2c2===undefined?'beep':_0xdbe2c2;_0x204ee0=_0x204ee0===undefined?'5':_0x204ee0;_0x21fca5=_0x21fca5===undefined?'1':_0x21fca5;return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x27'),_0xdbe2c2,_0x204ee0*0x3e8,_0x21fca5));};AGIChannel[_0xae49('0x21')][_0xae49('0x28')]=function(_0x67578c){_0x67578c=_0x67578c||'NO\x20MESSAGE';return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x29'),_0x67578c));};AGIChannel[_0xae49('0x21')][_0xae49('0x2a')]=function(_0x5c4638,_0x184b69){if(_[_0xae49('0x2b')](_0x184b69)){return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x2c'),_0x5c4638,_0x184b69['join'](',')));}return this[_0xae49('0x22')](util['format'](_0xae49('0x2c'),_0x5c4638,_0x184b69));};AGIChannel[_0xae49('0x21')][_0xae49('0x2d')]=function(_0x86fdc3){return this[_0xae49('0x22')](util['format'](_0xae49('0x2e'),_0x86fdc3));};AGIChannel[_0xae49('0x21')][_0xae49('0x2f')]=function(_0x1dd7f6){return this[_0xae49('0x22')](util[_0xae49('0x26')]('SET\x20EXTENSION\x20%s',_0x1dd7f6));};AGIChannel[_0xae49('0x21')][_0xae49('0x30')]=function(_0x3bdae1){return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x31'),_0x3bdae1));};AGIChannel[_0xae49('0x21')][_0xae49('0xb')]=function(){return this[_0xae49('0x22')]('HANGUP');};AGIChannel[_0xae49('0x21')]['setVariable']=function(_0x2b4e77,_0x5a2e9a){var _0x56c465=_['isBoolean'](_0x5a2e9a)||_[_0xae49('0x32')](_0x5a2e9a)?_0x5a2e9a[_0xae49('0x33')]():_0x5a2e9a;return this[_0xae49('0x22')](util[_0xae49('0x26')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x2b4e77,_0x56c465?_0x56c465[_0xae49('0x33')]()[_0xae49('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xae49('0x21')][_0xae49('0x34')]=function(_0x5d7356,_0x413aa5){return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x35'),_0x5d7356,_0x413aa5));};AGIChannel['prototype'][_0xae49('0x36')]=function(_0x1694ca,_0x214f09){return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x37'),_0x1694ca,_0x214f09));};AGIChannel[_0xae49('0x21')][_0xae49('0x38')]=function(_0x1896c7,_0x5e0417){return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x39'),_0x1896c7,_0x5e0417));};AGIChannel[_0xae49('0x21')]['continueAt']=function(_0x5a3578,_0x5143e3,_0x588de2){_0x5143e3=_0x5143e3||this['extension'];_0x588de2=_0x588de2||0x1;this['setContext'](_0x5a3578);this[_0xae49('0x2f')](_0x5143e3);this[_0xae49('0x30')](_0x588de2);return this[_0xae49('0x28')](util['format']('GOTO\x20%s\x20%s\x20%s',_0x5a3578,_0x5143e3,_0x588de2));};AGIChannel['prototype'][_0xae49('0x3a')]=function(_0x552e13){return this[_0xae49('0x22')](util[_0xae49('0x26')]('GET\x20VARIABLE\x20\x22%s\x22',_0x552e13));};AGIChannel[_0xae49('0x21')][_0xae49('0x3b')]=function(_0x457c90,_0x9aec5,_0x3ee7ed,_0x44b415,_0x5650d1,_0x149680){_0x9aec5=_0x9aec5||_0xae49('0x3c');_0x3ee7ed=_0x3ee7ed||'';_0x44b415=_0x44b415===undefined?-0x1:_0x44b415==='-1'?-0x1:_0x44b415*0x3e8;_0x5650d1=_0x5650d1===undefined?'':'s='+_0x5650d1;_0x149680=_0x149680?_0xae49('0x3d'):'';return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x3e'),_0x457c90,_0x9aec5,_0x3ee7ed,_0x44b415,_0x149680,_0x5650d1));};AGIChannel['prototype'][_0xae49('0x3f')]=function(_0x5790f6,_0x5493fd){_0x5493fd=_0x5493fd||'';return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x40'),_0x5790f6,_0x5493fd));};AGIChannel[_0xae49('0x21')]['agi']=function(_0x1b51e5){return this[_0xae49('0x2a')]('AGI',_0x1b51e5);};AGIChannel[_0xae49('0x21')]['wait']=function(_0x37da2f){return this[_0xae49('0x2a')]('WAIT',_0x37da2f);};AGIChannel[_0xae49('0x21')]['error']=function(_0x591cc0,_0x4626ed){this[_0xae49('0x28')](util[_0xae49('0x26')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x591cc0['id'],_0x591cc0[_0xae49('0x41')],_0x4626ed));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xae49('0x42')]=AGIChannel;
\ No newline at end of file
+var _0x6e4d=['result=','substr','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','prototype','sendRequest','sync','ANSWER','getData','beep','format','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','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','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setExtension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','agi','AGI','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./reply','call','utf8','setTimeout','setEncoding','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace'];(function(_0x1e65f6,_0x3615c9){var _0x5205f1=function(_0x1fecc2){while(--_0x1fecc2){_0x1e65f6['push'](_0x1e65f6['shift']());}};_0x5205f1(++_0x3615c9);}(_0x6e4d,0x1cb));var _0xd6e4=function(_0x57fca6,_0x497213){_0x57fca6=_0x57fca6-0x0;var _0x1f2800=_0x6e4d[_0x57fca6];return _0x1f2800;};'use strict';var util=require(_0xd6e4('0x0'));var _=require(_0xd6e4('0x1'));var EventEmitter=require('events')[_0xd6e4('0x2')];var AGIReply=require(_0xd6e4('0x3'));var AGIError=require('./error');function AGIChannel(_0x1177a4){var _0x2c0410=this,_0x252011=new AGIReply(),_0x52f622=![],_0x5bde1a={};EventEmitter[_0xd6e4('0x4')](_0x2c0410);_0x1177a4['setEncoding'](_0xd6e4('0x5'));_0x1177a4[_0xd6e4('0x6')](0x8*0x3c*0x3c*0x3e8);_0x252011[_0xd6e4('0x7')](_0xd6e4('0x5'));_0x252011['on'](_0xd6e4('0x8'),function(_0x2ea2e2){for(var _0x21b000 in _0x2ea2e2){_0x2c0410[_0x21b000]=_0x2ea2e2[_0x21b000];}_0x2c0410[_0xd6e4('0x9')](_0xd6e4('0xa'));});_0x252011['on'](_0xd6e4('0xb'),function(_0xa413f6){if(_0xa413f6[_0xd6e4('0xc')]()==_0xd6e4('0xd')){_0x2c0410['emit'](_0xd6e4('0xd'));return;}if(_0xa413f6[_0xd6e4('0xe')](0x0,0xb)==_0xd6e4('0xf')){_0x52f622=!![];}if(_0x52f622){_0x5bde1a['rx']+=_0xa413f6+'\x0a';if(_0xa413f6[_0xd6e4('0x10')](_0xd6e4('0x11'))!=-0x1){_0x52f622=![];}}else{_0x5bde1a['rx']=_0xa413f6;}if(_0x52f622){return;}if(typeof _0x5bde1a['cb']==_0xd6e4('0x12')){var _0x75dab=_0x5bde1a['rx'][_0xd6e4('0xe')](0x0,0x3),_0x57c10a=null,_0x1e41f7=null;_0x75dab=parseInt(_0x75dab);if(isNaN(_0x75dab)){_0x5bde1a['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xd6e4('0x13')});return;}if(_0x75dab!=0xc8){_0x5bde1a['cb'](null,{'code':_0x75dab,'result':-0x1,'extra':'KO'});return;}_0x57c10a=_0x5bde1a['rx'][_0xd6e4('0xe')](0x4)[_0xd6e4('0x14')](_0xd6e4('0x15'),'');if(_0x57c10a['indexOf']('\x20')!=-0x1){_0x57c10a=_0x57c10a[_0xd6e4('0x16')](0x0,_0x57c10a[_0xd6e4('0x17')]('\x20'));}if(_[_0xd6e4('0x18')](_0x57c10a,'-1')){_0x57c10a=parseInt(_0x57c10a);}_0x1e41f7=_0x5bde1a['rx'][_0xd6e4('0x19')]('\x20');if(_0x1e41f7[_0xd6e4('0x1a')]==0x3){_0x1e41f7=_0x1e41f7[0x2][_0xd6e4('0xe')](0x1,_0x1e41f7[0x2][_0xd6e4('0x1a')]-0x1);}else if(_0x1e41f7[_0xd6e4('0x1a')]>0x3){var _0x270b25=/\((.+)\)/;var _0x566c97=_0x5bde1a['rx'][_0xd6e4('0x1b')](_0x270b25);if(_0x566c97){_0x1e41f7=_0x566c97[0x1];}else{_0x1e41f7=null;}}else{_0x1e41f7=null;}_0x5bde1a['cb'](null,{'code':_0x75dab,'result':_0x57c10a,'extra':_0x1e41f7});}});_0x1177a4['on'](_0xd6e4('0x1c'),function(_0x316637){_0x2c0410[_0xd6e4('0x9')](_0xd6e4('0x1c'),new AGIError(_0xd6e4('0x1d'),_0x316637[_0xd6e4('0x1e')]));});_0x1177a4['on'](_0xd6e4('0x1f'),function(){_0x2c0410[_0xd6e4('0x9')]('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x1177a4['on'](_0xd6e4('0x20'),function(){_0x2c0410[_0xd6e4('0x9')](_0xd6e4('0x20'),new AGIError(_0xd6e4('0x21')));_0x1177a4[_0xd6e4('0x22')]();});_0x1177a4[_0xd6e4('0x23')](_0x252011);this[_0xd6e4('0x24')]=function(_0x217fe6,_0x269e7e){var _0x217fe6=_0x217fe6||'',_0x269e7e=typeof _0x269e7e==_0xd6e4('0x12')?_0x269e7e:new Function();_0x5bde1a={'tx':_0x217fe6,'rx':'','cb':_0x269e7e};_0x1177a4[_0xd6e4('0x25')](_0x217fe6+'\x0a');},this[_0xd6e4('0x1f')]=function(){_0x1177a4[_0xd6e4('0x22')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x27')]=function(_0x22a3c4){return this[_0xd6e4('0x24')][_0xd6e4('0x28')](this,_0x22a3c4);};AGIChannel[_0xd6e4('0x26')]['answer']=function(){return this[_0xd6e4('0x27')](_0xd6e4('0x29'));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x2a')]=function(_0x41b06f,_0x249ef3,_0x4e6575){_0x41b06f=_0x41b06f===undefined?_0xd6e4('0x2b'):_0x41b06f;_0x249ef3=_0x249ef3===undefined?'5':_0x249ef3;_0x4e6575=_0x4e6575===undefined?'1':_0x4e6575;return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x41b06f,_0x249ef3*0x3e8,_0x4e6575));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x2d')]=function(_0x72d0a9){_0x72d0a9=_0x72d0a9||_0xd6e4('0x2e');return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x2f'),_0x72d0a9));};AGIChannel[_0xd6e4('0x26')]['exec']=function(_0x5d9a2e,_0x1ec9ce){if(_[_0xd6e4('0x30')](_0x1ec9ce)){return this[_0xd6e4('0x27')](util['format']('EXEC\x20%s\x20%s',_0x5d9a2e,_0x1ec9ce['join'](',')));}return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x31'),_0x5d9a2e,_0x1ec9ce));};AGIChannel['prototype'][_0xd6e4('0x32')]=function(_0x339fac){return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x33'),_0x339fac));};AGIChannel[_0xd6e4('0x26')]['setExtension']=function(_0x10ff85){return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x34'),_0x10ff85));};AGIChannel['prototype']['setPriority']=function(_0x5db7e8){return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x35'),_0x5db7e8));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0xd')]=function(){return this[_0xd6e4('0x27')]('HANGUP');};AGIChannel['prototype'][_0xd6e4('0x36')]=function(_0x254104,_0x20cd60){var _0xf78011=_[_0xd6e4('0x37')](_0x20cd60)||_[_0xd6e4('0x38')](_0x20cd60)?_0x20cd60[_0xd6e4('0x39')]():_0x20cd60;return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x3a'),_0x254104,_0xf78011?_0xf78011['toString']()[_0xd6e4('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xd6e4('0x26')]['sayNumber']=function(_0x2d1e83,_0x10aa79){return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x3b'),_0x2d1e83,_0x10aa79));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x3c')]=function(_0x46aee8,_0x2f991c){return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x3d'),_0x46aee8,_0x2f991c));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x3e')]=function(_0x8715d9,_0x523b7a){return this['sendRequest'](util['format'](_0xd6e4('0x3f'),_0x8715d9,_0x523b7a));};AGIChannel['prototype'][_0xd6e4('0x40')]=function(_0x184d0e,_0x5ec6b0,_0x63c1e5){_0x5ec6b0=_0x5ec6b0||this['extension'];_0x63c1e5=_0x63c1e5||0x1;this['setContext'](_0x184d0e);this[_0xd6e4('0x41')](_0x5ec6b0);this[_0xd6e4('0x42')](_0x63c1e5);return this[_0xd6e4('0x2d')](util[_0xd6e4('0x2c')](_0xd6e4('0x43'),_0x184d0e,_0x5ec6b0,_0x63c1e5));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x44')]=function(_0x1dafd5){return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x45'),_0x1dafd5));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x46')]=function(_0x15aa33,_0x3eed47,_0xd5cc6e,_0x55d36c,_0x25aa90,_0x55fd56){_0x3eed47=_0x3eed47||_0xd6e4('0x47');_0xd5cc6e=_0xd5cc6e||'';_0x55d36c=_0x55d36c===undefined?-0x1:_0x55d36c==='-1'?-0x1:_0x55d36c*0x3e8;_0x25aa90=_0x25aa90===undefined?'':'s='+_0x25aa90;_0x55fd56=_0x55fd56?'BEEP':'';return this[_0xd6e4('0x27')](util[_0xd6e4('0x2c')](_0xd6e4('0x48'),_0x15aa33,_0x3eed47,_0xd5cc6e,_0x55d36c,_0x55fd56,_0x25aa90));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x49')]=function(_0x3487da,_0x22cfca){_0x22cfca=_0x22cfca||'';return this['sendRequest'](util['format']('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x3487da,_0x22cfca));};AGIChannel[_0xd6e4('0x26')][_0xd6e4('0x4a')]=function(_0xc3569c){return this['exec'](_0xd6e4('0x4b'),_0xc3569c);};AGIChannel[_0xd6e4('0x26')]['wait']=function(_0x1e1e0a){return this['exec'](_0xd6e4('0x4c'),_0x1e1e0a);};AGIChannel['prototype'][_0xd6e4('0x1c')]=function(_0x7f0289,_0x2f25b6){this[_0xd6e4('0x2d')](util['format'](_0xd6e4('0x4d'),_0x7f0289['id'],_0x7f0289[_0xd6e4('0x4e')],_0x2f25b6));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xd6e4('0x4f')]=AGIChannel;
\ No newline at end of file
index 02f43fd..e27bd5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00cf=['Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.'];(function(_0x2d6c61,_0x2a4bc2){var _0x19e4fd=function(_0xaa9f35){while(--_0xaa9f35){_0x2d6c61['push'](_0x2d6c61['shift']());}};_0x19e4fd(++_0x2a4bc2);}(_0x00cf,0x1b8));var _0xf00c=function(_0x5e6204,_0x96018e){_0x5e6204=_0x5e6204-0x0;var _0x35a0cd=_0x00cf[_0x5e6204];return _0x35a0cd;};'use strict';var util=require(_0xf00c('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xf00c('0x1'),'E_AGI_SERVER_ERROR':_0xf00c('0x2'),'E_AGI_SERVER_CLOSE':_0xf00c('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xf00c('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xf00c('0x5'),'E_AGI_SOCKET_ERROR':_0xf00c('0x6'),'E_AGI_SOCKET_CLOSE':_0xf00c('0x7'),'E_AGI_SOCKET_TIMEOUT':_0xf00c('0x8'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xf00c('0x9'),'E_AGI_IVR_ENTRY':_0xf00c('0xa')};function AGIError(_0x16529a){var _0x16529a=_0x16529a||null,_0x219a22=_0x219a22||[],_0x295e85=0x1,_0x1754c1='';if(!error[_0x16529a]){_0x16529a=_0xf00c('0xb');}_0x219a22['push'](error[_0x16529a]);while(arguments[_0x295e85]){_0x219a22[_0xf00c('0xc')](arguments[_0x295e85]);_0x295e85++;}_0x1754c1=util['format'][_0xf00c('0xd')](util,_0x219a22);this['message']=_0x1754c1;this['name']=_0x16529a;}module['exports']=AGIError;
\ No newline at end of file
+var _0x0aeb=['apply','message','name','util','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push'];(function(_0x2424f4,_0x489983){var _0x53bed1=function(_0xadc602){while(--_0xadc602){_0x2424f4['push'](_0x2424f4['shift']());}};_0x53bed1(++_0x489983);}(_0x0aeb,0xa3));var _0xb0ae=function(_0x3918e2,_0x24d29b){_0x3918e2=_0x3918e2-0x0;var _0x31edab=_0x0aeb[_0x3918e2];return _0x31edab;};'use strict';var util=require(_0xb0ae('0x0'));var error={'E_AGI_UNDEFINED':_0xb0ae('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0xb0ae('0x2'),'E_AGI_SERVER_CLOSE':_0xb0ae('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xb0ae('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xb0ae('0x5'),'E_AGI_SOCKET_ERROR':_0xb0ae('0x6'),'E_AGI_SOCKET_CLOSE':_0xb0ae('0x7'),'E_AGI_SOCKET_TIMEOUT':_0xb0ae('0x8'),'E_AGI_COMMAND_EMPTY':_0xb0ae('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xb0ae('0xa'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x53cfdc){var _0x53cfdc=_0x53cfdc||null,_0x170d37=_0x170d37||[],_0x42cdeb=0x1,_0x2b394d='';if(!error[_0x53cfdc]){_0x53cfdc=_0xb0ae('0xb');}_0x170d37[_0xb0ae('0xc')](error[_0x53cfdc]);while(arguments[_0x42cdeb]){_0x170d37[_0xb0ae('0xc')](arguments[_0x42cdeb]);_0x42cdeb++;}_0x2b394d=util['format'][_0xb0ae('0xd')](util,_0x170d37);this[_0xb0ae('0xe')]=_0x2b394d;this[_0xb0ae('0xf')]=_0x53cfdc;}module['exports']=AGIError;
\ No newline at end of file
index 35b5e25..ef63a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b8=['exports','events','ioredis','./error','../../config/environment','redis','defaults','agi','emit','error','message','parse','projectUpdate','E_AGI_SERVER_ERROR'];(function(_0x3ea19f,_0x52d205){var _0x351803=function(_0x32e604){while(--_0x32e604){_0x3ea19f['push'](_0x3ea19f['shift']());}};_0x351803(++_0x52d205);}(_0x14b8,0xc5));var _0x814b=function(_0x22a2c1,_0x1321ce){_0x22a2c1=_0x22a2c1-0x0;var _0x3d3d1c=_0x14b8[_0x22a2c1];return _0x3d3d1c;};'use strict';var _=require('lodash');var EventEmitter=require(_0x814b('0x0'))['EventEmitter'];var Redis=require(_0x814b('0x1'));var AGIError=require(_0x814b('0x2'));var config=require(_0x814b('0x3'));config[_0x814b('0x4')]=_[_0x814b('0x5')](config[_0x814b('0x4')],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub['subscribe'](_0x814b('0x6'),function(_0x5eb3f6){if(_0x5eb3f6)return eventEmitter[_0x814b('0x7')](_0x814b('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x5eb3f6));});sub['on'](_0x814b('0x9'),function(_0x1c56ba,_0x159f44){if(_0x1c56ba!=='agi')return;try{var _0x30c107=JSON[_0x814b('0xa')](_0x159f44);eventEmitter[_0x814b('0x7')](_0x814b('0xb'),_0x30c107);}catch(_0x123bb8){eventEmitter[_0x814b('0x7')](_0x814b('0x8'),new AGIError(_0x814b('0xc'),_0x123bb8));}});module[_0x814b('0xd')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x869b=['defaults','localhost','agi','E_AGI_SERVER_ERROR','parse','emit','projectUpdate','error','exports','lodash','events','EventEmitter','ioredis','./error','../../config/environment','redis'];(function(_0x3e5f6d,_0x121db6){var _0x1bea6e=function(_0x435c7c){while(--_0x435c7c){_0x3e5f6d['push'](_0x3e5f6d['shift']());}};_0x1bea6e(++_0x121db6);}(_0x869b,0x1b9));var _0xb869=function(_0x6e6fe9,_0x2d398e){_0x6e6fe9=_0x6e6fe9-0x0;var _0x216f91=_0x869b[_0x6e6fe9];return _0x216f91;};'use strict';var _=require(_0xb869('0x0'));var EventEmitter=require(_0xb869('0x1'))[_0xb869('0x2')];var Redis=require(_0xb869('0x3'));var AGIError=require(_0xb869('0x4'));var config=require(_0xb869('0x5'));config[_0xb869('0x6')]=_[_0xb869('0x7')](config['redis'],{'host':_0xb869('0x8'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xb869('0x6')]);sub['subscribe'](_0xb869('0x9'),function(_0x2f225b){if(_0x2f225b)return eventEmitter['emit']('error',new AGIError(_0xb869('0xa'),_0x2f225b));});sub['on']('message',function(_0x2b58e0,_0x2cef8f){if(_0x2b58e0!==_0xb869('0x9'))return;try{var _0x5c81d8=JSON[_0xb869('0xb')](_0x2cef8f);eventEmitter[_0xb869('0xc')](_0xb869('0xd'),_0x5c81d8);}catch(_0x135c72){eventEmitter[_0xb869('0xc')](_0xb869('0xe'),new AGIError(_0xb869('0xa'),_0x135c72));}});module[_0xb869('0xf')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 2f332a2..2d8ba3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x856e=['push','size','vertices','relations','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','condition','split','agicommand','vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','lodash','../../../config/logger','menu','getdigits','edges','numberOfEdges','addVertex','prototype'];(function(_0x381159,_0x2d07fb){var _0x2f35e4=function(_0x239985){while(--_0x239985){_0x381159['push'](_0x381159['shift']());}};_0x2f35e4(++_0x2d07fb);}(_0x856e,0xa0));var _0xe856=function(_0x2d1971,_0x20b764){_0x2d1971=_0x2d1971-0x0;var _0x4d7759=_0x856e[_0x2d1971];return _0x4d7759;};'use strict';var _=require(_0xe856('0x0'));var logger=require(_0xe856('0x1'))('agi');var verticesWithRetry=[_0xe856('0x2'),_0xe856('0x3'),'getsecretdigits'];var Graph=function(){this['vertices']={};this[_0xe856('0x4')]={};this[_0xe856('0x5')]=0x0;};Graph['prototype'][_0xe856('0x6')]=function(_0x1caadf){this['vertices'][_0x1caadf['id']]=_0x1caadf;this[_0xe856('0x4')][_0x1caadf['id']]=[];};Graph[_0xe856('0x7')]['addEdge']=function(_0x30279c,_0xd1773,_0x5e78a2){this[_0xe856('0x4')][_0x30279c][_0xe856('0x8')]({'target':_0xd1773,'condition':_0x5e78a2});this[_0xe856('0x5')]+=0x1;};Graph['prototype'][_0xe856('0x9')]=function(){return _[_0xe856('0x9')](this[_0xe856('0xa')]);};Graph['prototype'][_0xe856('0xb')]=function(){return this[_0xe856('0x5')];};Graph[_0xe856('0x7')][_0xe856('0xc')]=function(_0x5ea3bd){return this[_0xe856('0xa')][_0x5ea3bd];};Graph['prototype'][_0xe856('0xd')]=function(_0x11c749,_0x44baa5){if(!this[_0xe856('0xa')][_0x11c749]){return logger['info'](_0xe856('0xe'));}var _0x2ba4cb=_0x44baa5(this['vertices'][_0x11c749]);if(!_0x2ba4cb){return logger[_0xe856('0xf')](_0xe856('0x10'));}if(this['edges'][_0x11c749][_0xe856('0x11')]===0x0){return logger['info']('no\x20edge/s\x20available');}for(var _0x304840=0x0,_0x10282f=[],_0x50c8c4=![];_0x304840<this[_0xe856('0x4')][_0x11c749][_0xe856('0x11')];_0x304840+=0x1){if(this['edges'][_0x11c749][_0x304840][_0xe856('0x12')]){_0x10282f=this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x12')][_0xe856('0x13')](',');for(var _0x2b39e5=0x0;_0x2b39e5<_0x10282f['length'];_0x2b39e5+=0x1){if(this[_0xe856('0xa')][_0x11c749][_0xe856('0x14')]===_0xe856('0x15')&&_0x10282f[_0x2b39e5]==='-'){_0x50c8c4=this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x16')];logger[_0xe856('0xf')](_0xe856('0x17'),_0x10282f[_0x2b39e5],this[_0xe856('0x4')][_0x11c749][_0x304840]['target']);}else if(this[_0xe856('0xa')][_0x11c749][_0xe856('0x14')]==='menu'&&_0x10282f[_0x2b39e5]==='i'){_0x50c8c4=this[_0xe856('0x4')][_0x11c749][_0x304840]['target'];logger[_0xe856('0xf')](_0xe856('0x18'),_0x10282f[_0x2b39e5],this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x16')]);}if(_0x10282f[_0x2b39e5]===_0x2ba4cb){return this['traverseBFS'](this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x16')],_0x44baa5);}}}else{return this['traverseBFS'](this['edges'][_0x11c749][_0x304840][_0xe856('0x16')],_0x44baa5);}}if(_0x10282f[_0xe856('0x11')]){if(this['vertices'][_0x11c749][_0xe856('0x14')]===_0xe856('0x15')){if(_0x50c8c4){return this[_0xe856('0xd')](_0x50c8c4,_0x44baa5);}return logger[_0xe856('0xf')](_0xe856('0x19'));}else if(_[_0xe856('0x1a')](verticesWithRetry,this[_0xe856('0xa')][_0x11c749]['agicommand'])){if(_0x2ba4cb==='-'){return logger[_0xe856('0xf')](_0xe856('0x1b'));}if(_0x50c8c4&&_0x2ba4cb!=='t'){return this[_0xe856('0xd')](_0x50c8c4,_0x44baa5);}return this[_0xe856('0xd')](_0x11c749,_0x44baa5);}return logger[_0xe856('0xf')]('condition\x20not\x20found');}};module['exports']=Graph;
\ No newline at end of file
+var _0x5604=['agicommand','target','default','menu','vswitch','includes','max\x20retry\x20reach','lodash','../../../config/logger','agi','getdigits','getsecretdigits','edges','numberOfEdges','prototype','addVertex','vertices','push','relations','getVertex','traverseBFS','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split'];(function(_0x3b6f46,_0x404426){var _0x48a29d=function(_0x30bbe1){while(--_0x30bbe1){_0x3b6f46['push'](_0x3b6f46['shift']());}};_0x48a29d(++_0x404426);}(_0x5604,0xfa));var _0x4560=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x5604[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x4560('0x0'));var logger=require(_0x4560('0x1'))(_0x4560('0x2'));var verticesWithRetry=['menu',_0x4560('0x3'),_0x4560('0x4')];var Graph=function(){this['vertices']={};this[_0x4560('0x5')]={};this[_0x4560('0x6')]=0x0;};Graph[_0x4560('0x7')][_0x4560('0x8')]=function(_0x5b21f8){this[_0x4560('0x9')][_0x5b21f8['id']]=_0x5b21f8;this['edges'][_0x5b21f8['id']]=[];};Graph['prototype']['addEdge']=function(_0x1608ac,_0x56b5e9,_0x350680){this[_0x4560('0x5')][_0x1608ac][_0x4560('0xa')]({'target':_0x56b5e9,'condition':_0x350680});this[_0x4560('0x6')]+=0x1;};Graph[_0x4560('0x7')]['size']=function(){return _['size'](this[_0x4560('0x9')]);};Graph[_0x4560('0x7')][_0x4560('0xb')]=function(){return this[_0x4560('0x6')];};Graph[_0x4560('0x7')][_0x4560('0xc')]=function(_0x2af5d8){return this[_0x4560('0x9')][_0x2af5d8];};Graph[_0x4560('0x7')][_0x4560('0xd')]=function(_0xb4fe38,_0x19fd31){if(!this[_0x4560('0x9')][_0xb4fe38]){return logger[_0x4560('0xe')]('no\x20vertex\x20found');}var _0x950ca9=_0x19fd31(this[_0x4560('0x9')][_0xb4fe38]);if(!_0x950ca9){return logger[_0x4560('0xe')](_0x4560('0xf'));}if(this[_0x4560('0x5')][_0xb4fe38][_0x4560('0x10')]===0x0){return logger[_0x4560('0xe')](_0x4560('0x11'));}for(var _0x3e8c6d=0x0,_0x802588=[],_0x26a464=![];_0x3e8c6d<this[_0x4560('0x5')][_0xb4fe38][_0x4560('0x10')];_0x3e8c6d+=0x1){if(this[_0x4560('0x5')][_0xb4fe38][_0x3e8c6d][_0x4560('0x12')]){_0x802588=this['edges'][_0xb4fe38][_0x3e8c6d]['condition'][_0x4560('0x13')](',');for(var _0x1f8aef=0x0;_0x1f8aef<_0x802588[_0x4560('0x10')];_0x1f8aef+=0x1){if(this[_0x4560('0x9')][_0xb4fe38][_0x4560('0x14')]==='vswitch'&&_0x802588[_0x1f8aef]==='-'){_0x26a464=this['edges'][_0xb4fe38][_0x3e8c6d][_0x4560('0x15')];logger[_0x4560('0xe')](_0x4560('0x16'),_0x802588[_0x1f8aef],this[_0x4560('0x5')][_0xb4fe38][_0x3e8c6d][_0x4560('0x15')]);}else if(this[_0x4560('0x9')][_0xb4fe38]['agicommand']===_0x4560('0x17')&&_0x802588[_0x1f8aef]==='i'){_0x26a464=this[_0x4560('0x5')][_0xb4fe38][_0x3e8c6d][_0x4560('0x15')];logger['info']('invalid',_0x802588[_0x1f8aef],this[_0x4560('0x5')][_0xb4fe38][_0x3e8c6d][_0x4560('0x15')]);}if(_0x802588[_0x1f8aef]===_0x950ca9){return this[_0x4560('0xd')](this['edges'][_0xb4fe38][_0x3e8c6d][_0x4560('0x15')],_0x19fd31);}}}else{return this[_0x4560('0xd')](this[_0x4560('0x5')][_0xb4fe38][_0x3e8c6d]['target'],_0x19fd31);}}if(_0x802588[_0x4560('0x10')]){if(this[_0x4560('0x9')][_0xb4fe38][_0x4560('0x14')]===_0x4560('0x18')){if(_0x26a464){return this[_0x4560('0xd')](_0x26a464,_0x19fd31);}return logger['info']('default\x20on\x20switch\x20not\x20found');}else if(_[_0x4560('0x19')](verticesWithRetry,this[_0x4560('0x9')][_0xb4fe38][_0x4560('0x14')])){if(_0x950ca9==='-'){return logger[_0x4560('0xe')](_0x4560('0x1a'));}if(_0x26a464&&_0x950ca9!=='t'){return this[_0x4560('0xd')](_0x26a464,_0x19fd31);}return this['traverseBFS'](_0xb4fe38,_0x19fd31);}return logger[_0x4560('0xe')]('condition\x20not\x20found');}};module['exports']=Graph;
\ No newline at end of file
index a4ac6aa..c2937ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x499c=['push','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[ERROR]\x20%s','arg_1','calleridname','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','catch','hasOwnProperty','indexOf','agi_','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','timeout','hangup','find','handleUnpublished','initialize','getLicense','then','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','close','lodash','util','../../config/logger','agi','../../config/license/util','./rpc','./project','./events','127.0.0.1','projectUpdate','nextTick','stack','findIndex','deleted'];(function(_0x5019fb,_0x2200db){var _0x4c49eb=function(_0x4c9112){while(--_0x4c9112){_0x5019fb['push'](_0x5019fb['shift']());}};_0x4c49eb(++_0x2200db);}(_0x499c,0x15a));var _0xc499=function(_0x236501,_0x3fbc72){_0x236501=_0x236501-0x0;var _0x4b4c38=_0x499c[_0x236501];return _0x4b4c38;};'use strict';var _=require(_0xc499('0x0'));var syncho=require('syncho');var util=require(_0xc499('0x1'));var config=require('../../config/environment');var logger=require(_0xc499('0x2'))(_0xc499('0x3'));var utilLicense=require(_0xc499('0x4'));var rpc=require(_0xc499('0x5'));var Project=require(_0xc499('0x6'));var AGIEmitter=require(_0xc499('0x7'))['EventEmitter'];var projects=[];config[_0xc499('0x3')]=_['defaults'](config['agi'],{'ip':_0xc499('0x8'),'port':0x11dd});AGIEmitter['on'](_0xc499('0x9'),projectUpdateHandler);function connectionHandler(_0x16e55b){process[_0xc499('0xa')](function(){syncho(function(){try{setChannelVariables(_0x16e55b);agiHandler(_0x16e55b);}catch(_0x41f8be){logger['error'](_0x41f8be[_0xc499('0xb')]);}});});}function projectUpdateHandler(_0x4243f9){try{var _0x47db1c=_[_0xc499('0xc')](projects,['id',_0x4243f9['id']]);if(_0x47db1c>-0x1){if(_0x4243f9[_0xc499('0xd')]===!![]){projects['splice'](_0x47db1c,0x1);}else{projects[_0x47db1c]=_0x4243f9;}}else{projects[_0xc499('0xe')](_0x4243f9);}}catch(_0x70f2ff){logger[_0xc499('0xf')](_0x70f2ff['stack']);}}function listeningHandler(){console[_0xc499('0x10')](_0xc499('0x11'),config[_0xc499('0x3')][_0xc499('0x12')]);logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x15'),config[_0xc499('0x3')]['ip'],config[_0xc499('0x3')][_0xc499('0x12')]));}function errorHandler(_0x515230){if(_0x515230&&_0x515230[_0xc499('0x16')]&&_0x515230['message']){logger['error'](util['format']('[%s]\x20%s',_0x515230[_0xc499('0x16')],_0x515230[_0xc499('0x17')]));}else{logger[_0xc499('0xf')](util['format'](_0xc499('0x18'),_0x515230[_0xc499('0xb')]));}}function closeHandler(){logger[_0xc499('0x13')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xc499('0x19')],this[_0xc499('0x1a')],this[_0xc499('0x1b')],this[_0xc499('0x1c')],this['uniqueid']));try{createSquareReport(this);}catch(_0x270663){logger['error'](_0x270663[_0xc499('0xb')]);}}function timeoutHandler(){logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x1d'),this[_0xc499('0x19')],this['calleridname'],this[_0xc499('0x1b')],this[_0xc499('0x1c')],this['uniqueid']));}function hangupHandler(){logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x1e'),this[_0xc499('0x19')],this['calleridname'],this[_0xc499('0x1b')],this[_0xc499('0x1c')],this['uniqueid']));this[_0xc499('0x1f')]=!![];}function createSquareReport(_0x347a97,_0x24a6d3){rpc[_0xc499('0x20')](_0x347a97)['then'](function(_0x2dec7c){if(_0x24a6d3){_0x24a6d3(null,_0x2dec7c);}})[_0xc499('0x21')](function(_0x46c72f){if(_0x24a6d3){_0x24a6d3(null,_0x46c72f);}});}function setChannelVariables(_0x4f19a6){for(var _0x2388a2 in _0x4f19a6){if(_0x4f19a6[_0xc499('0x22')](_0x2388a2)){if(_0x2388a2[_0xc499('0x23')](_0xc499('0x24'))===0x0){_0x4f19a6[_0x2388a2[_0xc499('0x25')](0x4)]=_0x4f19a6[_0x2388a2];delete _0x4f19a6[_0x2388a2];}}}}function agiHandler(_0x4a381a){logger[_0xc499('0x26')](_0xc499('0x27'),JSON['stringify'](_0x4a381a,null,0x2));logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x28'),_0x4a381a[_0xc499('0x19')],_0x4a381a['calleridname'],_0x4a381a[_0xc499('0x1b')],_0x4a381a[_0xc499('0x1c')],_0x4a381a[_0xc499('0x29')]));_0x4a381a['on'](_0xc499('0xf'),errorHandler);_0x4a381a['on']('close',closeHandler);_0x4a381a['on'](_0xc499('0x2a'),timeoutHandler);_0x4a381a['evtHangup']=![];_0x4a381a['on'](_0xc499('0x2b'),hangupHandler);var _0x4e7826=_[_0xc499('0x2c')](projects,[_0xc499('0x16'),_0x4a381a[_0xc499('0x19')]]);if(!_0x4e7826)return Project['handleNotFound'](_0x4a381a);if(!_0x4e7826['production'])return Project[_0xc499('0x2d')](_0x4a381a);return Project[_0xc499('0x2e')](_0x4e7826,_0x4a381a);}function main(){var _0x14df92;return utilLicense[_0xc499('0x2f')]()[_0xc499('0x30')](function(_0x240e47){if(!_0x240e47)return;if(_0x240e47[_0xc499('0x31')]){if(_0x240e47[_0xc499('0x32')]&&_0x240e47['callysquare']>0x0){logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x33'),_0x240e47[_0xc499('0x32')]));_0x14df92=_0x240e47[_0xc499('0x32')];}else{logger['info'](_0xc499('0x34'));}}else{logger[_0xc499('0x13')](_0xc499('0x35'));_0x14df92=-0x1;}})['then'](function(){return Project[_0xc499('0x36')]();})[_0xc499('0x30')](function(_0x83b893){projects=_0x83b893;return;})[_0xc499('0x21')](function(_0x2f5247){logger[_0xc499('0xf')](_0xc499('0x37'),_0x2f5247[_0xc499('0xb')]);})[_0xc499('0x38')](function(){var _0x2e9cfe=require(_0xc499('0x39'))(config[_0xc499('0x3')][_0xc499('0x12')],config[_0xc499('0x3')]['ip'],_0x14df92);_0x2e9cfe['on']('error',errorHandler);_0x2e9cfe['on'](_0xc499('0x3a'),listeningHandler);_0x2e9cfe['on']('connection',connectionHandler);_0x2e9cfe['on'](_0xc499('0x3b'),closeHandler);});}main();
\ No newline at end of file
+var _0xcca9=['[LICENSE]\x20CHANNELS:\x20UNLIMITED','getAll','[LICENSE]','finally','./server','lodash','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','defaults','127.0.0.1','projectUpdate','error','stack','findIndex','deleted','splice','push','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','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','uniqueid','arg_1','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','then','catch','agi_','substring','debug','variables','stringify','close','hangup','find','handleNotFound','production','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s'];(function(_0x5a5313,_0x1ca221){var _0x11761f=function(_0x2f9950){while(--_0x2f9950){_0x5a5313['push'](_0x5a5313['shift']());}};_0x11761f(++_0x1ca221);}(_0xcca9,0xe9));var _0x9cca=function(_0x5db313,_0x3c8f0c){_0x5db313=_0x5db313-0x0;var _0x36d503=_0xcca9[_0x5db313];return _0x36d503;};'use strict';var _=require(_0x9cca('0x0'));var syncho=require('syncho');var util=require(_0x9cca('0x1'));var config=require(_0x9cca('0x2'));var logger=require(_0x9cca('0x3'))(_0x9cca('0x4'));var utilLicense=require(_0x9cca('0x5'));var rpc=require(_0x9cca('0x6'));var Project=require('./project');var AGIEmitter=require('./events')['EventEmitter'];var projects=[];config[_0x9cca('0x4')]=_[_0x9cca('0x7')](config[_0x9cca('0x4')],{'ip':_0x9cca('0x8'),'port':0x11dd});AGIEmitter['on'](_0x9cca('0x9'),projectUpdateHandler);function connectionHandler(_0x44797f){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x44797f);agiHandler(_0x44797f);}catch(_0x51d05a){logger[_0x9cca('0xa')](_0x51d05a[_0x9cca('0xb')]);}});});}function projectUpdateHandler(_0x47d78a){try{var _0x5b27db=_[_0x9cca('0xc')](projects,['id',_0x47d78a['id']]);if(_0x5b27db>-0x1){if(_0x47d78a[_0x9cca('0xd')]===!![]){projects[_0x9cca('0xe')](_0x5b27db,0x1);}else{projects[_0x5b27db]=_0x47d78a;}}else{projects[_0x9cca('0xf')](_0x47d78a);}}catch(_0x169672){logger[_0x9cca('0xa')](_0x169672[_0x9cca('0xb')]);}}function listeningHandler(){console[_0x9cca('0x10')](_0x9cca('0x11'),config[_0x9cca('0x4')][_0x9cca('0x12')]);logger[_0x9cca('0x13')](util[_0x9cca('0x14')](_0x9cca('0x15'),config['agi']['ip'],config[_0x9cca('0x4')]['port']));}function errorHandler(_0x3966b7){if(_0x3966b7&&_0x3966b7[_0x9cca('0x16')]&&_0x3966b7[_0x9cca('0x17')]){logger[_0x9cca('0xa')](util[_0x9cca('0x14')](_0x9cca('0x18'),_0x3966b7[_0x9cca('0x16')],_0x3966b7[_0x9cca('0x17')]));}else{logger[_0x9cca('0xa')](util[_0x9cca('0x14')](_0x9cca('0x19'),_0x3966b7[_0x9cca('0xb')]));}}function closeHandler(){logger[_0x9cca('0x13')](util[_0x9cca('0x14')](_0x9cca('0x1a'),this['arg_1'],this[_0x9cca('0x1b')],this[_0x9cca('0x1c')],this['dnid'],this[_0x9cca('0x1d')]));try{createSquareReport(this);}catch(_0x489c3d){logger[_0x9cca('0xa')](_0x489c3d[_0x9cca('0xb')]);}}function timeoutHandler(){logger[_0x9cca('0x13')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x9cca('0x1e')],this[_0x9cca('0x1b')],this[_0x9cca('0x1c')],this[_0x9cca('0x1f')],this['uniqueid']));}function hangupHandler(){logger[_0x9cca('0x13')](util[_0x9cca('0x14')](_0x9cca('0x20'),this[_0x9cca('0x1e')],this[_0x9cca('0x1b')],this[_0x9cca('0x1c')],this[_0x9cca('0x1f')],this[_0x9cca('0x1d')]));this[_0x9cca('0x21')]=!![];}function createSquareReport(_0x224877,_0x34517b){rpc['createSquareReport'](_0x224877)[_0x9cca('0x22')](function(_0x9aa6c5){if(_0x34517b){_0x34517b(null,_0x9aa6c5);}})[_0x9cca('0x23')](function(_0x2ec373){if(_0x34517b){_0x34517b(null,_0x2ec373);}});}function setChannelVariables(_0x40ad88){for(var _0x92b4ce in _0x40ad88){if(_0x40ad88['hasOwnProperty'](_0x92b4ce)){if(_0x92b4ce['indexOf'](_0x9cca('0x24'))===0x0){_0x40ad88[_0x92b4ce[_0x9cca('0x25')](0x4)]=_0x40ad88[_0x92b4ce];delete _0x40ad88[_0x92b4ce];}}}}function agiHandler(_0x57e483){logger[_0x9cca('0x26')](_0x9cca('0x27'),JSON[_0x9cca('0x28')](_0x57e483,null,0x2));logger[_0x9cca('0x13')](util[_0x9cca('0x14')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x57e483['arg_1'],_0x57e483[_0x9cca('0x1b')],_0x57e483['callerid'],_0x57e483[_0x9cca('0x1f')],_0x57e483[_0x9cca('0x1d')]));_0x57e483['on'](_0x9cca('0xa'),errorHandler);_0x57e483['on'](_0x9cca('0x29'),closeHandler);_0x57e483['on']('timeout',timeoutHandler);_0x57e483[_0x9cca('0x21')]=![];_0x57e483['on'](_0x9cca('0x2a'),hangupHandler);var _0x1ad9a3=_[_0x9cca('0x2b')](projects,[_0x9cca('0x16'),_0x57e483[_0x9cca('0x1e')]]);if(!_0x1ad9a3)return Project[_0x9cca('0x2c')](_0x57e483);if(!_0x1ad9a3[_0x9cca('0x2d')])return Project[_0x9cca('0x2e')](_0x57e483);return Project[_0x9cca('0x2f')](_0x1ad9a3,_0x57e483);}function main(){var _0xca552b;return utilLicense[_0x9cca('0x30')]()[_0x9cca('0x22')](function(_0x587b5e){if(!_0x587b5e)return;if(_0x587b5e[_0x9cca('0x31')]){if(_0x587b5e[_0x9cca('0x32')]&&_0x587b5e[_0x9cca('0x32')]>0x0){logger[_0x9cca('0x13')](util['format'](_0x9cca('0x33'),_0x587b5e[_0x9cca('0x32')]));_0xca552b=_0x587b5e[_0x9cca('0x32')];}else{logger[_0x9cca('0x13')](_0x9cca('0x34'));}}else{logger[_0x9cca('0x13')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0xca552b=-0x1;}})[_0x9cca('0x22')](function(){return Project[_0x9cca('0x35')]();})['then'](function(_0x1c6dc0){projects=_0x1c6dc0;return;})[_0x9cca('0x23')](function(_0x54e21a){logger['error'](_0x9cca('0x36'),_0x54e21a[_0x9cca('0xb')]);})[_0x9cca('0x37')](function(){var _0x16ce59=require(_0x9cca('0x38'))(config[_0x9cca('0x4')][_0x9cca('0x12')],config[_0x9cca('0x4')]['ip'],_0xca552b);_0x16ce59['on'](_0x9cca('0xa'),errorHandler);_0x16ce59['on']('listening',listeningHandler);_0x16ce59['on']('connection',connectionHandler);_0x16ce59['on'](_0x9cca('0x29'),closeHandler);});}main();
\ No newline at end of file
index 5098c61..9cd55e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c87=['error','message','result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request'];(function(_0xba0c2,_0x54cc50){var _0x5a9fa0=function(_0x577bcb){while(--_0x577bcb){_0xba0c2['push'](_0xba0c2['shift']());}};_0x5a9fa0(++_0x54cc50);}(_0x1c87,0x1df));var _0x71c8=function(_0x446a62,_0x32bb6d){_0x446a62=_0x446a62-0x0;var _0x16a711=_0x1c87[_0x446a62];return _0x16a711;};'use strict';var BPromise=require(_0x71c8('0x0'));var jayson=require(_0x71c8('0x1'));var client=jayson[_0x71c8('0x2')][_0x71c8('0x3')]({'port':0x232b});function request(_0x2145ec,_0x2ed59f){return new BPromise(function(_0x5a30fc,_0x21157f){return client[_0x71c8('0x4')](_0x2145ec,_0x2ed59f)['then'](function(_0x43c3a8){if(_0x43c3a8[_0x71c8('0x5')]){return _0x21157f(_0x43c3a8['error'][_0x71c8('0x6')]);}else{return _0x5a30fc(_0x43c3a8[_0x71c8('0x7')]);}})[_0x71c8('0x8')](function(_0x56a827){return _0x21157f(_0x56a827);});});}exports[_0x71c8('0x9')]=function(_0x52209c,_0x42caf6){return request(_0x71c8('0xa'),{'account':_0x52209c,'message':_0x42caf6});};
\ No newline at end of file
+var _0x3ee4=['SendMail','bluebird','client','http','request','then','error','catch'];(function(_0xd4d9e7,_0x278e5e){var _0x5790fd=function(_0x3bd4da){while(--_0x3bd4da){_0xd4d9e7['push'](_0xd4d9e7['shift']());}};_0x5790fd(++_0x278e5e);}(_0x3ee4,0xa1));var _0x43ee=function(_0x422a1d,_0x3b06e9){_0x422a1d=_0x422a1d-0x0;var _0x1ce743=_0x3ee4[_0x422a1d];return _0x1ce743;};'use strict';var BPromise=require(_0x43ee('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x43ee('0x1')][_0x43ee('0x2')]({'port':0x232b});function request(_0x3742d1,_0x30f671){return new BPromise(function(_0x2ac12a,_0x1b04a2){return client[_0x43ee('0x3')](_0x3742d1,_0x30f671)[_0x43ee('0x4')](function(_0x3c9e07){if(_0x3c9e07[_0x43ee('0x5')]){return _0x1b04a2(_0x3c9e07[_0x43ee('0x5')]['message']);}else{return _0x2ac12a(_0x3c9e07['result']);}})[_0x43ee('0x6')](function(_0x47e1c2){return _0x1b04a2(_0x47e1c2);});});}exports['sendMailMessage']=function(_0x35731d,_0x7796e8){return request(_0x43ee('0x7'),{'account':_0x35731d,'message':_0x7796e8});};
\ No newline at end of file
index 1d8aca7..00b5832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x173a=['error','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','isUndefined','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','priority','close','Project\x20%s\x20not\x20found','continueAt','Project\x20%s\x20not\x20published','exports','lodash','moment','util','agi','./rpc','./mailRpc','./graph','./vertices','getSquareProjects','catch','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','retry','addVertex','omit','mxCell','hasOwnProperty','isArray','length','target','addEdge','source','value','toJson','mxGraphModel','root','inspect','production','debug','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','traverseBFS','start','clear','stringify','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','response','code','result','evtHangup','toString'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x173a,0x116));var _0xa173=function(_0x566fe2,_0x2e72d2){_0x566fe2=_0x566fe2-0x0;var _0x283802=_0x173a[_0x566fe2];return _0x283802;};'use strict';var _=require(_0xa173('0x0'));var moment=require(_0xa173('0x1'));var parser=require('xml2json');var util=require(_0xa173('0x2'));var logger=require('../../config/logger')(_0xa173('0x3'));var rpc=require(_0xa173('0x4'));var mailRpc=require(_0xa173('0x5'));var Graph=require(_0xa173('0x6'));var Vertices=require(_0xa173('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xa173('0x8')]()[_0xa173('0x9')](function(_0x1847f8){logger['error'](_0xa173('0xa'),_0x1847f8[_0xa173('0xb')]);return[];});}function addVertex(_0x2cbfdf,_0x54966d,_0x4dbaca){_0x54966d[_0xa173('0xc')]=_0x4dbaca;if(_0x54966d['hasOwnProperty'](_0xa173('0xd'))){_0x54966d['maxRetry']=parseInt(_0x54966d['retry'],0xa);}_0x2cbfdf[_0xa173('0xe')](_[_0xa173('0xf')](_0x54966d,_0xa173('0x10')));}function initGraph(_0x36bed7,_0x1822af){var _0x581ff5=new Graph();for(var _0x57b9de in _0x36bed7){if(_0x36bed7[_0xa173('0x11')](_0x57b9de)){if(_[_0xa173('0x12')](_0x36bed7[_0x57b9de])){for(var _0x572b5b=0x0;_0x572b5b<_0x36bed7[_0x57b9de][_0xa173('0x13')];_0x572b5b+=0x1){addVertex(_0x581ff5,_0x36bed7[_0x57b9de][_0x572b5b],_0x57b9de);}}else{addVertex(_0x581ff5,_0x36bed7[_0x57b9de],_0x57b9de);}}}for(var _0x1f64ab=0x0;_0x1f64ab<_0x1822af[_0xa173('0x13')];_0x1f64ab+=0x1){if(_0x1822af[_0x1f64ab]['source']&&_0x1822af[_0x1f64ab][_0xa173('0x14')]){_0x581ff5[_0xa173('0x15')](_0x1822af[_0x1f64ab][_0xa173('0x16')],_0x1822af[_0x1f64ab]['target'],_0x1822af[_0x1f64ab][_0xa173('0x17')]);}}return _0x581ff5;}function getRoot(_0x5d28d7){return parser[_0xa173('0x18')](_0x5d28d7,{'object':!![]})[_0xa173('0x19')][_0xa173('0x1a')];}function inspect(_0xf7d6d3){return util[_0xa173('0x1b')](_0xf7d6d3,{'showHidden':![],'depth':null});}function initialize(_0x269fb9,_0x564285){var _0xe72179=getRoot(_0x269fb9[_0xa173('0x1c')]);if(!_0xe72179||!_0xe72179['start'])return;var _0xbd7d07,_0x5d991a,_0x352dd0;logger[_0xa173('0x1d')](_0xa173('0x1a'),JSON['stringify'](_0xe72179,null,0x2));_0x564285[_0xa173('0x1e')]=moment()[_0xa173('0x1f')](_0xa173('0x20'));_0xbd7d07=initGraph(_[_0xa173('0xf')](_0xe72179,_0xa173('0x10')),_0xe72179[_0xa173('0x10')]);_0x5d991a=new Vertices(_0x564285,rpc,mailRpc);logger[_0xa173('0x21')](util[_0xa173('0x1f')](_0xa173('0x22'),_0x564285['arg_1'],_0x564285[_0xa173('0x23')],_0x564285[_0xa173('0x24')],_0x564285[_0xa173('0x25')],_0x564285[_0xa173('0x26')]));_0xbd7d07[_0xa173('0x27')](_0xe72179[_0xa173('0x28')]['id'],function(_0xe91dae){try{_0xe91dae=_0x5d991a[_0xa173('0x29')](_0xe91dae);logger['debug']('vertex',JSON[_0xa173('0x2a')](_0xe91dae,null,0x2));if(_0xe91dae['agicommand']===_0xa173('0x2b')){logger[_0xa173('0x21')](_0xa173('0x2c'));_0x564285[_0xa173('0x2d')]=_0xe91dae['context']||_0x564285[_0xa173('0x2d')];_0x564285[_0xa173('0x2e')]=_0xe91dae[_0xa173('0x2e')];_0x564285['priority']=_0xe91dae['priority']?_0xe91dae['priority']-0x1:0x1;return null;}else if(_0xe91dae&&_0x5d991a[_0xe91dae[_0xa173('0xc')]]){_0x352dd0=_0x5d991a[_0xe91dae['agicommand']](_0xe91dae);logger[_0xa173('0x21')](_0xa173('0x2f'),JSON['stringify'](_0x352dd0,null,0x2));if(_0x352dd0&&_0x352dd0[_0xa173('0x30')]===AGI_CODE_SUCCESS&&_0x352dd0[_0xa173('0x31')]!==AGI_RESULT_ERROR&&!_0x564285[_0xa173('0x32')]){logger[_0xa173('0x1d')](_0xa173('0x2f'),inspect(_0x352dd0));return _['isUndefined'](_0x352dd0[_0xa173('0x31')])?null:_0x352dd0[_0xa173('0x31')][_0xa173('0x33')]();}else{logger[_0xa173('0x34')]('response',inspect(_0x352dd0));return null;}}else{logger[_0xa173('0x34')](_0xa173('0x35'));return null;}}catch(_0x154fbd){logger[_0xa173('0x34')](_0x154fbd[_0xa173('0xb')]);return null;}});if(_0xe72179['finally']){logger[_0xa173('0x21')](util[_0xa173('0x1f')](_0xa173('0x36'),_0x564285['arg_1'],_0x564285['calleridname'],_0x564285[_0xa173('0x24')],_0x564285[_0xa173('0x25')],_0x564285['uniqueid']));_0xbd7d07['traverseBFS'](_0xe72179[_0xa173('0x37')]['id'],function(_0x56975a){try{_0x56975a=_0x5d991a['clear'](_0x56975a);logger['debug']('vertex',JSON['stringify'](_0x56975a,null,0x2));if(_0x56975a&&_0x5d991a[_0x56975a[_0xa173('0xc')]]){_0x352dd0=_0x5d991a[_0x56975a['agicommand']](_0x56975a);if(_0x352dd0){logger[_0xa173('0x1d')](_0xa173('0x2f'),inspect(_0x352dd0));return _[_0xa173('0x38')](_0x352dd0[_0xa173('0x31')])?null:_0x352dd0[_0xa173('0x31')][_0xa173('0x33')]();}else{logger['error'](_0xa173('0x2f'),inspect(_0x352dd0));return null;}}else{logger['error'](_0xa173('0x35'));return null;}}catch(_0x53749b){logger[_0xa173('0x34')](_0x53749b[_0xa173('0xb')]);return null;}});}logger[_0xa173('0x21')](util['format'](_0xa173('0x39'),_0x564285[_0xa173('0x3a')],_0x564285[_0xa173('0x23')],_0x564285[_0xa173('0x24')],_0x564285[_0xa173('0x25')],_0x564285['uniqueid']));logger[_0xa173('0x21')](util[_0xa173('0x1f')](_0xa173('0x3b'),_0x564285['context'],_0x564285[_0xa173('0x2e')],parseInt(_0x564285[_0xa173('0x3c')],0xa)+0x1));_0x564285['continueAt'](_0x564285['context'],_0x564285[_0xa173('0x2e')],parseInt(_0x564285[_0xa173('0x3c')],0xa)+0x1);_0x564285[_0xa173('0x3d')]();}function handleNotFound(_0x20c9e9){logger[_0xa173('0x34')](util[_0xa173('0x1f')](_0xa173('0x3e'),_0x20c9e9[_0xa173('0x3a')]));_0x20c9e9[_0xa173('0x3f')](_0x20c9e9[_0xa173('0x2d')],_0x20c9e9[_0xa173('0x2e')],parseInt(_0x20c9e9[_0xa173('0x3c')],0xa)+0x1);_0x20c9e9[_0xa173('0x3d')]();}function handleUnpublished(_0x46f693){logger['error'](util['format'](_0xa173('0x40'),_0x46f693[_0xa173('0x3a')]));_0x46f693[_0xa173('0x3f')](_0x46f693[_0xa173('0x2d')],_0x46f693['extension'],parseInt(_0x46f693[_0xa173('0x3c')],0xa)+0x1);_0x46f693[_0xa173('0x3d')]();}module[_0xa173('0x41')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x8cf6=['Project\x20%s\x20not\x20published','close','exports','lodash','moment','xml2json','../../config/logger','agi','./rpc','./graph','getSquareProjects','catch','error','stack','retry','maxRetry','addVertex','mxCell','hasOwnProperty','isArray','length','source','target','value','toJson','mxGraphModel','root','inspect','production','debug','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','agicommand','response','code','result','evtHangup','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','uniqueid','isUndefined','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found'];(function(_0x2ba92f,_0xcd3f6){var _0xba13c=function(_0xc93d37){while(--_0xc93d37){_0x2ba92f['push'](_0x2ba92f['shift']());}};_0xba13c(++_0xcd3f6);}(_0x8cf6,0x7f));var _0x68cf=function(_0x2c0ded,_0x3de22c){_0x2c0ded=_0x2c0ded-0x0;var _0x4473e5=_0x8cf6[_0x2c0ded];return _0x4473e5;};'use strict';var _=require(_0x68cf('0x0'));var moment=require(_0x68cf('0x1'));var parser=require(_0x68cf('0x2'));var util=require('util');var logger=require(_0x68cf('0x3'))(_0x68cf('0x4'));var rpc=require(_0x68cf('0x5'));var mailRpc=require('./mailRpc');var Graph=require(_0x68cf('0x6'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x68cf('0x7')]()[_0x68cf('0x8')](function(_0x4709b6){logger[_0x68cf('0x9')]('Unable\x20to\x20download\x20CallySquare\x20projects',_0x4709b6[_0x68cf('0xa')]);return[];});}function addVertex(_0x1f75f5,_0x5c2725,_0x732630){_0x5c2725['agicommand']=_0x732630;if(_0x5c2725['hasOwnProperty'](_0x68cf('0xb'))){_0x5c2725[_0x68cf('0xc')]=parseInt(_0x5c2725[_0x68cf('0xb')],0xa);}_0x1f75f5[_0x68cf('0xd')](_['omit'](_0x5c2725,_0x68cf('0xe')));}function initGraph(_0x4f32d2,_0x5b07d1){var _0x2e7b60=new Graph();for(var _0x1fa03e in _0x4f32d2){if(_0x4f32d2[_0x68cf('0xf')](_0x1fa03e)){if(_[_0x68cf('0x10')](_0x4f32d2[_0x1fa03e])){for(var _0x5959d0=0x0;_0x5959d0<_0x4f32d2[_0x1fa03e][_0x68cf('0x11')];_0x5959d0+=0x1){addVertex(_0x2e7b60,_0x4f32d2[_0x1fa03e][_0x5959d0],_0x1fa03e);}}else{addVertex(_0x2e7b60,_0x4f32d2[_0x1fa03e],_0x1fa03e);}}}for(var _0x1fbba4=0x0;_0x1fbba4<_0x5b07d1[_0x68cf('0x11')];_0x1fbba4+=0x1){if(_0x5b07d1[_0x1fbba4][_0x68cf('0x12')]&&_0x5b07d1[_0x1fbba4][_0x68cf('0x13')]){_0x2e7b60['addEdge'](_0x5b07d1[_0x1fbba4][_0x68cf('0x12')],_0x5b07d1[_0x1fbba4][_0x68cf('0x13')],_0x5b07d1[_0x1fbba4][_0x68cf('0x14')]);}}return _0x2e7b60;}function getRoot(_0x30d553){return parser[_0x68cf('0x15')](_0x30d553,{'object':!![]})[_0x68cf('0x16')][_0x68cf('0x17')];}function inspect(_0x167eb1){return util[_0x68cf('0x18')](_0x167eb1,{'showHidden':![],'depth':null});}function initialize(_0x5da2af,_0x3782a4){var _0x2c6fa7=getRoot(_0x5da2af[_0x68cf('0x19')]);if(!_0x2c6fa7||!_0x2c6fa7['start'])return;var _0x21b7ae,_0x2d4286,_0x4840b4;logger[_0x68cf('0x1a')](_0x68cf('0x17'),JSON[_0x68cf('0x1b')](_0x2c6fa7,null,0x2));_0x3782a4[_0x68cf('0x1c')]=moment()[_0x68cf('0x1d')](_0x68cf('0x1e'));_0x21b7ae=initGraph(_['omit'](_0x2c6fa7,_0x68cf('0xe')),_0x2c6fa7[_0x68cf('0xe')]);_0x2d4286=new Vertices(_0x3782a4,rpc,mailRpc);logger[_0x68cf('0x1f')](util[_0x68cf('0x1d')](_0x68cf('0x20'),_0x3782a4[_0x68cf('0x21')],_0x3782a4[_0x68cf('0x22')],_0x3782a4[_0x68cf('0x23')],_0x3782a4['dnid'],_0x3782a4['uniqueid']));_0x21b7ae[_0x68cf('0x24')](_0x2c6fa7['start']['id'],function(_0x436282){try{_0x436282=_0x2d4286[_0x68cf('0x25')](_0x436282);logger[_0x68cf('0x1a')](_0x68cf('0x26'),JSON[_0x68cf('0x1b')](_0x436282,null,0x2));if(_0x436282['agicommand']===_0x68cf('0x27')){logger[_0x68cf('0x1f')](_0x68cf('0x28'));_0x3782a4[_0x68cf('0x29')]=_0x436282[_0x68cf('0x29')]||_0x3782a4['context'];_0x3782a4['extension']=_0x436282[_0x68cf('0x2a')];_0x3782a4['priority']=_0x436282[_0x68cf('0x2b')]?_0x436282[_0x68cf('0x2b')]-0x1:0x1;return null;}else if(_0x436282&&_0x2d4286[_0x436282[_0x68cf('0x2c')]]){_0x4840b4=_0x2d4286[_0x436282[_0x68cf('0x2c')]](_0x436282);logger[_0x68cf('0x1f')](_0x68cf('0x2d'),JSON[_0x68cf('0x1b')](_0x4840b4,null,0x2));if(_0x4840b4&&_0x4840b4[_0x68cf('0x2e')]===AGI_CODE_SUCCESS&&_0x4840b4[_0x68cf('0x2f')]!==AGI_RESULT_ERROR&&!_0x3782a4[_0x68cf('0x30')]){logger[_0x68cf('0x1a')](_0x68cf('0x2d'),inspect(_0x4840b4));return _['isUndefined'](_0x4840b4[_0x68cf('0x2f')])?null:_0x4840b4['result'][_0x68cf('0x31')]();}else{logger[_0x68cf('0x9')]('response',inspect(_0x4840b4));return null;}}else{logger[_0x68cf('0x9')](_0x68cf('0x32'));return null;}}catch(_0x242dba){logger[_0x68cf('0x9')](_0x242dba['stack']);return null;}});if(_0x2c6fa7[_0x68cf('0x33')]){logger[_0x68cf('0x1f')](util['format'](_0x68cf('0x34'),_0x3782a4[_0x68cf('0x21')],_0x3782a4['calleridname'],_0x3782a4[_0x68cf('0x23')],_0x3782a4[_0x68cf('0x35')],_0x3782a4[_0x68cf('0x36')]));_0x21b7ae[_0x68cf('0x24')](_0x2c6fa7['finally']['id'],function(_0x5672d4){try{_0x5672d4=_0x2d4286[_0x68cf('0x25')](_0x5672d4);logger[_0x68cf('0x1a')](_0x68cf('0x26'),JSON[_0x68cf('0x1b')](_0x5672d4,null,0x2));if(_0x5672d4&&_0x2d4286[_0x5672d4[_0x68cf('0x2c')]]){_0x4840b4=_0x2d4286[_0x5672d4[_0x68cf('0x2c')]](_0x5672d4);if(_0x4840b4){logger[_0x68cf('0x1a')]('response',inspect(_0x4840b4));return _[_0x68cf('0x37')](_0x4840b4[_0x68cf('0x2f')])?null:_0x4840b4[_0x68cf('0x2f')][_0x68cf('0x31')]();}else{logger['error'](_0x68cf('0x2d'),inspect(_0x4840b4));return null;}}else{logger[_0x68cf('0x9')](_0x68cf('0x32'));return null;}}catch(_0x3c2139){logger[_0x68cf('0x9')](_0x3c2139[_0x68cf('0xa')]);return null;}});}logger[_0x68cf('0x1f')](util[_0x68cf('0x1d')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3782a4[_0x68cf('0x21')],_0x3782a4[_0x68cf('0x22')],_0x3782a4[_0x68cf('0x23')],_0x3782a4[_0x68cf('0x35')],_0x3782a4['uniqueid']));logger[_0x68cf('0x1f')](util[_0x68cf('0x1d')](_0x68cf('0x38'),_0x3782a4[_0x68cf('0x29')],_0x3782a4[_0x68cf('0x2a')],parseInt(_0x3782a4[_0x68cf('0x2b')],0xa)+0x1));_0x3782a4[_0x68cf('0x39')](_0x3782a4[_0x68cf('0x29')],_0x3782a4[_0x68cf('0x2a')],parseInt(_0x3782a4[_0x68cf('0x2b')],0xa)+0x1);_0x3782a4['close']();}function handleNotFound(_0x5c1199){logger[_0x68cf('0x9')](util[_0x68cf('0x1d')](_0x68cf('0x3a'),_0x5c1199['arg_1']));_0x5c1199[_0x68cf('0x39')](_0x5c1199[_0x68cf('0x29')],_0x5c1199['extension'],parseInt(_0x5c1199[_0x68cf('0x2b')],0xa)+0x1);_0x5c1199['close']();}function handleUnpublished(_0x41250f){logger[_0x68cf('0x9')](util[_0x68cf('0x1d')](_0x68cf('0x3b'),_0x41250f['arg_1']));_0x41250f[_0x68cf('0x39')](_0x41250f[_0x68cf('0x29')],_0x41250f['extension'],parseInt(_0x41250f[_0x68cf('0x2b')],0xa)+0x1);_0x41250f[_0x68cf('0x3c')]();}module[_0x68cf('0x3d')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index 9e3c456..0b99c5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb59d=['substring','split','slice','trim','length','emit','headers','line','exports','util','stream','Transform','call','_localBuffer','_inBody','inherits','_transform','\x0d\x0a\x0d\x0a','toString','indexOf'];(function(_0xda8e46,_0x2c0428){var _0x2dcd9f=function(_0x42ee6e){while(--_0x42ee6e){_0xda8e46['push'](_0xda8e46['shift']());}};_0x2dcd9f(++_0x2c0428);}(_0xb59d,0x6d));var _0xdb59=function(_0x2efdb8,_0x1fc808){_0x2efdb8=_0x2efdb8-0x0;var _0x5d4d16=_0xb59d[_0x2efdb8];return _0x5d4d16;};'use strict';var util=require(_0xdb59('0x0'));var Transform=require(_0xdb59('0x1'))[_0xdb59('0x2')];function AGIReply(_0x3d9222){Transform[_0xdb59('0x3')](this,_0x3d9222);this[_0xdb59('0x4')]='';this[_0xdb59('0x5')]=![];}util[_0xdb59('0x6')](AGIReply,Transform);AGIReply['prototype'][_0xdb59('0x7')]=function(_0x4ebc5a,_0x437ac2,_0x3cb2a9){var _0x3257a7='\x0a',_0x4f5ea7=['\x0a\x0a',_0xdb59('0x8')],_0x1e7afe=-0x1,_0x108fbe=-0x1,_0x4ba29a='',_0x4fea77=0x0,_0x50e332='',_0x296f42='';this[_0xdb59('0x4')]+=_0x4ebc5a[_0xdb59('0x9')]();_0x50e332=this[_0xdb59('0x4')];if(!this[_0xdb59('0x5')]){_0x4fea77=0x0;while(_0x4f5ea7[_0x4fea77]){while((_0x108fbe=_0x50e332[_0xdb59('0xa')](_0x4f5ea7[_0x4fea77]))!=-0x1){_0x4ba29a=_0x4f5ea7[_0x4fea77];_0x296f42=_0x50e332[_0xdb59('0xb')](0x0,_0x108fbe);_0x50e332=_0x50e332[_0xdb59('0xb')](_0x108fbe+_0x4ba29a['length']);var _0x487da4=_0x296f42[_0xdb59('0xc')](_0x3257a7),_0x2f3e64=0x0,_0x5d72a7={},_0x5b5eb1='',_0x1b25d9='',_0xec2968=-0x1;while(_0x487da4[_0x2f3e64]){_0xec2968=_0x487da4[_0x2f3e64][_0xdb59('0xa')](':');if(_0xec2968!=-0x1){_0x5b5eb1=_0x487da4[_0x2f3e64][_0xdb59('0xd')](0x0,_0xec2968)['trim']();_0x1b25d9=_0x487da4[_0x2f3e64][_0xdb59('0xd')](_0xec2968+0x1)[_0xdb59('0xe')]();if(_0x5b5eb1[_0xdb59('0xf')]>0x0){_0x5d72a7[_0x5b5eb1]=_0x1b25d9;}}else{}_0x2f3e64++;}this[_0xdb59('0x10')](_0xdb59('0x11'),_0x5d72a7);this[_0xdb59('0x5')]=!![];}_0x4fea77++;}this[_0xdb59('0x4')]=_0x50e332;}else{while((_0x1e7afe=_0x50e332[_0xdb59('0xa')](_0x3257a7))!=-0x1){_0x296f42=_0x50e332[_0xdb59('0xb')](0x0,_0x1e7afe);this[_0xdb59('0x10')](_0xdb59('0x12'),_0x296f42);_0x50e332=_0x50e332[_0xdb59('0xb')](_0x1e7afe+_0x3257a7[_0xdb59('0xf')]);}this['_localBuffer']=_0x50e332;}_0x3cb2a9();};module[_0xdb59('0x13')]=AGIReply;
\ No newline at end of file
+var _0x4241=['slice','trim','headers','emit','Transform','call','_localBuffer','inherits','prototype','_transform','_inBody','indexOf','substring'];(function(_0x2b3f10,_0x14dc06){var _0xb80d5b=function(_0x5ec971){while(--_0x5ec971){_0x2b3f10['push'](_0x2b3f10['shift']());}};_0xb80d5b(++_0x14dc06);}(_0x4241,0x17d));var _0x1424=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x4241[_0x1969a7];return _0x3d665f;};'use strict';var util=require('util');var Transform=require('stream')[_0x1424('0x0')];function AGIReply(_0x3eba7e){Transform[_0x1424('0x1')](this,_0x3eba7e);this[_0x1424('0x2')]='';this['_inBody']=![];}util[_0x1424('0x3')](AGIReply,Transform);AGIReply[_0x1424('0x4')][_0x1424('0x5')]=function(_0x114d20,_0x155593,_0x1edd66){var _0x2e44b5='\x0a',_0x30706e=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x22ec29=-0x1,_0x3d6283=-0x1,_0x1ebe5b='',_0x4b5503=0x0,_0x2dba36='',_0x4d1196='';this[_0x1424('0x2')]+=_0x114d20['toString']();_0x2dba36=this[_0x1424('0x2')];if(!this[_0x1424('0x6')]){_0x4b5503=0x0;while(_0x30706e[_0x4b5503]){while((_0x3d6283=_0x2dba36[_0x1424('0x7')](_0x30706e[_0x4b5503]))!=-0x1){_0x1ebe5b=_0x30706e[_0x4b5503];_0x4d1196=_0x2dba36[_0x1424('0x8')](0x0,_0x3d6283);_0x2dba36=_0x2dba36['substring'](_0x3d6283+_0x1ebe5b['length']);var _0x1fe442=_0x4d1196['split'](_0x2e44b5),_0x56002a=0x0,_0x45986f={},_0x85d9a0='',_0x4bcd30='',_0x1004c9=-0x1;while(_0x1fe442[_0x56002a]){_0x1004c9=_0x1fe442[_0x56002a]['indexOf'](':');if(_0x1004c9!=-0x1){_0x85d9a0=_0x1fe442[_0x56002a][_0x1424('0x9')](0x0,_0x1004c9)[_0x1424('0xa')]();_0x4bcd30=_0x1fe442[_0x56002a][_0x1424('0x9')](_0x1004c9+0x1)[_0x1424('0xa')]();if(_0x85d9a0['length']>0x0){_0x45986f[_0x85d9a0]=_0x4bcd30;}}else{}_0x56002a++;}this['emit'](_0x1424('0xb'),_0x45986f);this[_0x1424('0x6')]=!![];}_0x4b5503++;}this[_0x1424('0x2')]=_0x2dba36;}else{while((_0x22ec29=_0x2dba36[_0x1424('0x7')](_0x2e44b5))!=-0x1){_0x4d1196=_0x2dba36[_0x1424('0x8')](0x0,_0x22ec29);this[_0x1424('0xc')]('line',_0x4d1196);_0x2dba36=_0x2dba36[_0x1424('0x8')](_0x22ec29+_0x2e44b5['length']);}this[_0x1424('0x2')]=_0x2dba36;}_0x1edd66();};module['exports']=AGIReply;
\ No newline at end of file
index 22e07cc..da95179 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x495e=['ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','getSoundById','ShowSound','getIntervalById','ShowInterval','Intervals','getSmsAccountById','ShowSmsAccount','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','format','createSquareMessage','ShowCmHopper','ListId','CreateCmContact','getPauseById','agentLogin','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','lodash','client','http','request','then','error','message','getSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','Smtp','CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','getUserById'];(function(_0x27650b,_0x438264){var _0x19c7a1=function(_0x3f26e9){while(--_0x3f26e9){_0x27650b['push'](_0x27650b['shift']());}};_0x19c7a1(++_0x438264);}(_0x495e,0xfb));var _0xe495=function(_0x46ef1d,_0x24926){_0x46ef1d=_0x46ef1d-0x0;var _0x49ce69=_0x495e[_0x46ef1d];return _0x49ce69;};'use strict';var _=require(_0xe495('0x0'));var moment=require('moment');var jayson=require('jayson/promise');var client=jayson[_0xe495('0x1')][_0xe495('0x2')]({'port':0x2329});function request(_0x3fe3a3,_0x2c85b8){return new Promise(function(_0x4e5ce9,_0x3f119c){return client[_0xe495('0x3')](_0x3fe3a3,_0x2c85b8)[_0xe495('0x4')](function(_0x3da4aa){if(_0x3da4aa[_0xe495('0x5')]){return _0x3f119c(_0x3da4aa[_0xe495('0x5')][_0xe495('0x6')]);}else{return _0x4e5ce9(_0x3da4aa['result']);}})['catch'](function(_0x5c17d0){return _0x3f119c(_0x5c17d0);});});}exports[_0xe495('0x7')]=function(){return request('GetSquareProjects',{'options':{'raw':![],'attributes':['id',_0xe495('0x8'),_0xe495('0x9')]}});};exports[_0xe495('0xa')]=function(_0x41983d){return request(_0xe495('0xb'),{'options':{'raw':![],'where':{'name':_0x41983d},'attributes':['production']}});};exports[_0xe495('0xc')]=function(_0x4047e8){return request(_0xe495('0xd'),{'options':{'raw':![],'where':{'id':_0x4047e8},'include':[{'model':'MailServerOut','as':_0xe495('0xe'),'include':[{'model':_0xe495('0xf'),'as':'CloudProvider'}]}],'attributes':['id','name',_0xe495('0x10')],'smtp':!![]}});};exports[_0xe495('0x11')]=function(_0x5df017){return request(_0xe495('0xb'),{'options':{'where':{'id':_0x5df017},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x12')]=function(_0x14744d){return request(_0xe495('0x13'),{'options':{'where':{'id':_0x14744d},'attributes':['name']}});};exports[_0xe495('0x14')]=function(_0x103c25){return request(_0xe495('0x15'),{'options':{'where':{'id':_0x103c25},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x16')]=function(_0x48864f){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x48864f},'attributes':['dsn']}});};exports[_0xe495('0x17')]=function(_0x142978){return request(_0xe495('0x18'),{'options':{'where':{'id':_0x142978},'attributes':['name']}});};exports[_0xe495('0x19')]=function(_0x302ca0){return request(_0xe495('0x1a'),{'options':{'where':{'phone':_0x302ca0[_0xe495('0x1b')]},'attributes':['id']}});};exports[_0xe495('0x1c')]=function(_0x525953){return request('ShowTrunk',{'options':{'where':{'id':_0x525953},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x1d')]=function(_0x108eb3){return request(_0xe495('0x1e'),{'options':{'where':{'id':_0x108eb3},'attributes':['save_name']}});};exports[_0xe495('0x1f')]=function(_0x46ec15){return request(_0xe495('0x20'),{'options':{'raw':![],'where':{'id':_0x46ec15},'include':[{'model':'Interval','as':_0xe495('0x21')}]}});};exports[_0xe495('0x22')]=function(_0x475a7e){return request(_0xe495('0x23'),{'options':{'where':{'id':_0x475a7e},'attributes':['id',_0xe495('0x8')]}});};exports['createSmsMessage']=function(_0x33f19){return request('CreateSmsMessage',{'body':_0x33f19});};exports[_0xe495('0x24')]=function(_0x39cff4){return request(_0xe495('0x25'),{'body':_0x39cff4});};exports['createSquareReport']=function(_0x2e8e76){return request(_0xe495('0x26'),{'body':_[_0xe495('0x27')](_0x2e8e76,{'project_name':_0x2e8e76[_0xe495('0x28')],'prev_project_name':_0x2e8e76[_0xe495('0x29')]||'','is_subproject':_0x2e8e76[_0xe495('0x29')]?!![]:![],'leaveAt':moment()[_0xe495('0x2a')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x2506f7){return request('CreateSquareRecording',{'body':_0x2506f7});};exports[_0xe495('0x2b')]=function(_0x3dd5df){return request('CreateSquareMessage',{'body':_0x3dd5df});};exports['createCmContact']=function(_0xd6585c){return request(_0xe495('0x2c'),{'options':{'raw':![],'where':{'phone':_0xd6585c[_0xe495('0x1b')],'ListId':_0xd6585c[_0xe495('0x2d')]}}})[_0xe495('0x4')](function(_0x258d9c){if(_0x258d9c){return _0x258d9c;}return request(_0xe495('0x2e'),{'body':_0xd6585c});});};exports[_0xe495('0x2f')]=function(_0x535d23){return request('ShowPause',{'options':{'where':{'id':_0x535d23},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x30')]=function(_0x389177,_0x40d3a3){return request('LoginUser',{'body':{'interface':_0x40d3a3},'options':{'where':_0x389177}});};exports[_0xe495('0x31')]=function(_0x1d0c2f,_0x227019,_0xba78e9){return request(_0xe495('0x32'),{'body':{'type':_0x227019,'uniqueid':_0xba78e9},'options':{'where':_0x1d0c2f}});};exports[_0xe495('0x33')]=function(_0x2ffb33){return request(_0xe495('0x34'),{'body':{},'options':{'where':_0x2ffb33}});};exports[_0xe495('0x35')]=function(_0xb08f46){return request(_0xe495('0x36'),{'body':{},'options':{'where':_0xb08f46}});};
\ No newline at end of file
+var _0xe64a=['lodash','moment','jayson/promise','client','http','error','message','result','catch','getSquareProjects','GetSquareProjects','name','production','getSquareProject','ShowSquareProject','ShowMailAccount','MailServerOut','Smtp','CloudProvider','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','ShowTrunk','getSoundById','ShowSound','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','createSquareRecording','createSquareMessage','CreateSquareMessage','then','CreateCmContact','agentLogin','LoginUser','agentPause','agentUnpause','UnpauseUser','agentLogout','LogoutUser'];(function(_0x53d934,_0x346ce2){var _0x190dfc=function(_0x397328){while(--_0x397328){_0x53d934['push'](_0x53d934['shift']());}};_0x190dfc(++_0x346ce2);}(_0xe64a,0x1e0));var _0xae64=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe64a[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xae64('0x0'));var moment=require(_0xae64('0x1'));var jayson=require(_0xae64('0x2'));var client=jayson[_0xae64('0x3')][_0xae64('0x4')]({'port':0x2329});function request(_0xae1542,_0x80d46f){return new Promise(function(_0x275ae7,_0x5c8e95){return client['request'](_0xae1542,_0x80d46f)['then'](function(_0x527d9c){if(_0x527d9c[_0xae64('0x5')]){return _0x5c8e95(_0x527d9c[_0xae64('0x5')][_0xae64('0x6')]);}else{return _0x275ae7(_0x527d9c[_0xae64('0x7')]);}})[_0xae64('0x8')](function(_0x65a9d1){return _0x5c8e95(_0x65a9d1);});});}exports[_0xae64('0x9')]=function(){return request(_0xae64('0xa'),{'options':{'raw':![],'attributes':['id',_0xae64('0xb'),_0xae64('0xc')]}});};exports[_0xae64('0xd')]=function(_0x55dbe1){return request(_0xae64('0xe'),{'options':{'raw':![],'where':{'name':_0x55dbe1},'attributes':['production']}});};exports['getMailAccountById']=function(_0x111e51){return request(_0xae64('0xf'),{'options':{'raw':![],'where':{'id':_0x111e51},'include':[{'model':_0xae64('0x10'),'as':_0xae64('0x11'),'include':[{'model':'CloudProvider','as':_0xae64('0x12')}]}],'attributes':['id','name','email'],'smtp':!![]}});};exports[_0xae64('0x13')]=function(_0x15a9bf){return request(_0xae64('0xe'),{'options':{'where':{'id':_0x15a9bf},'attributes':['name']}});};exports[_0xae64('0x14')]=function(_0x760b31){return request(_0xae64('0x15'),{'options':{'where':{'id':_0x760b31},'attributes':[_0xae64('0xb')]}});};exports[_0xae64('0x16')]=function(_0x4c7d1c){return request(_0xae64('0x17'),{'options':{'where':{'id':_0x4c7d1c},'attributes':[_0xae64('0xb')]}});};exports[_0xae64('0x18')]=function(_0x285a48){return request(_0xae64('0x19'),{'options':{'where':{'id':_0x285a48},'attributes':['dsn']}});};exports[_0xae64('0x1a')]=function(_0x21c285){return request(_0xae64('0x1b'),{'options':{'where':{'id':_0x21c285},'attributes':[_0xae64('0xb')]}});};exports[_0xae64('0x1c')]=function(_0x227223){return request(_0xae64('0x1d'),{'options':{'where':{'phone':_0x227223[_0xae64('0x1e')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x3cdd98){return request(_0xae64('0x1f'),{'options':{'where':{'id':_0x3cdd98},'attributes':[_0xae64('0xb')]}});};exports[_0xae64('0x20')]=function(_0x42a4b4){return request(_0xae64('0x21'),{'options':{'where':{'id':_0x42a4b4},'attributes':['save_name']}});};exports[_0xae64('0x22')]=function(_0x4a4c4e){return request(_0xae64('0x23'),{'options':{'raw':![],'where':{'id':_0x4a4c4e},'include':[{'model':_0xae64('0x24'),'as':_0xae64('0x25')}]}});};exports[_0xae64('0x26')]=function(_0x4406dc){return request(_0xae64('0x27'),{'options':{'where':{'id':_0x4406dc},'attributes':['id',_0xae64('0xb')]}});};exports[_0xae64('0x28')]=function(_0x24a35f){return request(_0xae64('0x29'),{'body':_0x24a35f});};exports[_0xae64('0x2a')]=function(_0x134c0c){return request(_0xae64('0x2b'),{'body':_0x134c0c});};exports['createSquareReport']=function(_0x5bb2da){return request(_0xae64('0x2c'),{'body':_[_0xae64('0x2d')](_0x5bb2da,{'project_name':_0x5bb2da[_0xae64('0x2e')],'prev_project_name':_0x5bb2da[_0xae64('0x2f')]||'','is_subproject':_0x5bb2da[_0xae64('0x2f')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0xae64('0x30')]=function(_0x3e9046){return request('CreateSquareRecording',{'body':_0x3e9046});};exports[_0xae64('0x31')]=function(_0x1fd9c8){return request(_0xae64('0x32'),{'body':_0x1fd9c8});};exports['createCmContact']=function(_0x3b946c){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x3b946c['phone'],'ListId':_0x3b946c['ListId']}}})[_0xae64('0x33')](function(_0x4ea1b3){if(_0x4ea1b3){return _0x4ea1b3;}return request(_0xae64('0x34'),{'body':_0x3b946c});});};exports['getPauseById']=function(_0x50ef06){return request('ShowPause',{'options':{'where':{'id':_0x50ef06},'attributes':[_0xae64('0xb')]}});};exports[_0xae64('0x35')]=function(_0x1982d9,_0x119a18){return request(_0xae64('0x36'),{'body':{'interface':_0x119a18},'options':{'where':_0x1982d9}});};exports[_0xae64('0x37')]=function(_0x32e92a,_0x993e4,_0x2509e2){return request('PauseUser',{'body':{'type':_0x993e4,'uniqueid':_0x2509e2},'options':{'where':_0x32e92a}});};exports[_0xae64('0x38')]=function(_0x1ccfd2){return request(_0xae64('0x39'),{'body':{},'options':{'where':_0x1ccfd2}});};exports[_0xae64('0x3a')]=function(_0x1900d8){return request(_0xae64('0x3b'),{'body':{},'options':{'where':_0x1900d8}});};
\ No newline at end of file
index d94ae9c..22232e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc029=['./lex','exports','./polly'];(function(_0x3286b0,_0x4c2e95){var _0xd1f2df=function(_0x5a0113){while(--_0x5a0113){_0x3286b0['push'](_0x3286b0['shift']());}};_0xd1f2df(++_0x4c2e95);}(_0xc029,0x1df));var _0x9c02=function(_0x1be3b3,_0x4335ee){_0x1be3b3=_0x1be3b3-0x0;var _0x4f8b2d=_0xc029[_0x1be3b3];return _0x4f8b2d;};var polly=require(_0x9c02('0x0'));var lex=require(_0x9c02('0x1'));module[_0x9c02('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x5078=['exports','./polly','./lex'];(function(_0x528fc0,_0x108799){var _0x3954e2=function(_0x25d3ba){while(--_0x25d3ba){_0x528fc0['push'](_0x528fc0['shift']());}};_0x3954e2(++_0x108799);}(_0x5078,0x148));var _0x8507=function(_0x57d500,_0xf52c67){_0x57d500=_0x57d500-0x0;var _0x142c14=_0x5078[_0x57d500];return _0x142c14;};var polly=require(_0x8507('0x0'));var lex=require(_0x8507('0x1'));module[_0x8507('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index e2f272f..1273693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['exports','./lib/api'];(function(_0x231ccd,_0x5ef818){var _0xcfd716=function(_0x38b122){while(--_0x38b122){_0x231ccd['push'](_0x231ccd['shift']());}};_0xcfd716(++_0x5ef818);}(_0x41bb,0xc5));var _0xb41b=function(_0x524c2e,_0x165d16){_0x524c2e=_0x524c2e-0x0;var _0x4ce75d=_0x41bb[_0x524c2e];return _0x4ce75d;};'use strict';var lex=require(_0xb41b('0x0'));module[_0xb41b('0x1')]=function(_0x4ef2f1,_0x428431,_0x4d5578,_0x30ea75,_0x1c9d36,_0x148333){return lex(_0x4ef2f1,_0x428431,_0x4d5578,_0x30ea75,_0x1c9d36,_0x148333);};
\ No newline at end of file
+'use strict';var lex=require('./lib/api');module['exports']=function(_0x3d5d4e,_0x33a55d,_0x5527b3,_0x175deb,_0xd002ca,_0x200b2a){return lex(_0x3d5d4e,_0x33a55d,_0x5527b3,_0x175deb,_0xd002ca,_0x200b2a);};
\ No newline at end of file
index a441252..fcc3cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x1b96c8,_0x5bc3e7){var _0x593982=function(_0x495633){while(--_0x495633){_0x1b96c8['push'](_0x1b96c8['shift']());}};_0x593982(++_0x5bc3e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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(_0x5c5227,_0x1b7b53){var _0x39b7ca=function(_0x57c275){while(--_0x57c275){_0x5c5227['push'](_0x5c5227['shift']());}};_0x39b7ca(++_0x1b7b53);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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 c2a5d40..c305d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5e6=['exports','./lib/api'];(function(_0x417cf5,_0x2738e4){var _0x153e03=function(_0x26f1d8){while(--_0x26f1d8){_0x417cf5['push'](_0x417cf5['shift']());}};_0x153e03(++_0x2738e4);}(_0xe5e6,0x155));var _0x6e5e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe5e6[_0x321bb2];return _0x9c12ed;};'use strict';var polly=require(_0x6e5e('0x0'));module[_0x6e5e('0x1')]=function(_0x277f1a,_0x5359f6,_0x3ced47,_0x112dab,_0x328af2,_0x3da4a6,_0x23bf07){return polly(_0x277f1a,_0x5359f6,_0x3ced47,_0x112dab,_0x328af2,_0x3da4a6,_0x23bf07);};
\ No newline at end of file
+var _0x2323=['./lib/api','exports'];(function(_0x2f8805,_0x3734aa){var _0x82fa2d=function(_0x410095){while(--_0x410095){_0x2f8805['push'](_0x2f8805['shift']());}};_0x82fa2d(++_0x3734aa);}(_0x2323,0x186));var _0x3232=function(_0x139cc0,_0x1c67f3){_0x139cc0=_0x139cc0-0x0;var _0x11dc1a=_0x2323[_0x139cc0];return _0x11dc1a;};'use strict';var polly=require(_0x3232('0x0'));module[_0x3232('0x1')]=function(_0x31b52a,_0x1f0d6e,_0x423b4f,_0x8d98fa,_0x4daa99,_0x3d4c73,_0x18e2ef){return polly(_0x31b52a,_0x1f0d6e,_0x423b4f,_0x8d98fa,_0x4daa99,_0x3d4c73,_0x18e2ef);};
\ No newline at end of file
index 3b4c398..df7da1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26e5=['exports','Polly','text','mp3','bluebird','randomstring','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x28e194,_0x1f7e9c){var _0xe74396=function(_0x39b6df){while(--_0x39b6df){_0x28e194['push'](_0x28e194['shift']());}};_0xe74396(++_0x1f7e9c);}(_0x26e5,0x9e));var _0x526e=function(_0x15797a,_0x16274f){_0x15797a=_0x15797a-0x0;var _0x3e2618=_0x26e5[_0x15797a];return _0x3e2618;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x526e('0x0'));var rs=require(_0x526e('0x1'));var AWS=require('aws-sdk');function pollyResult(_0x32a132,_0x3d07b6,_0x502cff){return new BPromise(function(_0x6b4fb9,_0x50952d){_0x32a132[_0x526e('0x2')](_0x3d07b6,function(_0x58e584,_0x426b1d){if(_0x58e584){_0x50952d(_0x58e584);}else if(_0x426b1d){if(_0x426b1d[_0x526e('0x3')]instanceof Buffer){fs[_0x526e('0x4')](_0x502cff,_0x426b1d['AudioStream'],function(_0x40892e){if(_0x40892e){_0x50952d(_0x40892e);}else{_0x6b4fb9();}});}else{_0x50952d(new Error(_0x526e('0x5')));}}else{_0x50952d(new Error(_0x526e('0x6')));}});});}module[_0x526e('0x7')]=function(_0x1fe4a3,_0x48d21b,_0x105201,_0x1929ca,_0x26c517,_0x279b77,_0x38ef5e){var _0x565ba7=new AWS[(_0x526e('0x8'))]({'accessKeyId':_0x1fe4a3,'secretAccessKey':_0x48d21b,'region':_0x105201});var _0x12363f={'Text':_0x26c517,'TextType':_0x279b77||_0x526e('0x9'),'OutputFormat':_0x526e('0xa'),'VoiceId':_0x1929ca};return pollyResult(_0x565ba7,_0x12363f,_0x38ef5e);};
\ No newline at end of file
+var _0x0741=['bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3'];(function(_0x5dd0b5,_0x151387){var _0x4953f7=function(_0x59acd2){while(--_0x59acd2){_0x5dd0b5['push'](_0x5dd0b5['shift']());}};_0x4953f7(++_0x151387);}(_0x0741,0xdc));var _0x1074=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x0741[_0x13ea00];return _0x1f7347;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x1074('0x0'));var rs=require(_0x1074('0x1'));var AWS=require(_0x1074('0x2'));function pollyResult(_0x194de2,_0x34c752,_0x181345){return new BPromise(function(_0x4a4c1c,_0x28ecc3){_0x194de2[_0x1074('0x3')](_0x34c752,function(_0x42ef8b,_0x24e392){if(_0x42ef8b){_0x28ecc3(_0x42ef8b);}else if(_0x24e392){if(_0x24e392[_0x1074('0x4')]instanceof Buffer){fs['writeFile'](_0x181345,_0x24e392[_0x1074('0x4')],function(_0x2e565e){if(_0x2e565e){_0x28ecc3(_0x2e565e);}else{_0x4a4c1c();}});}else{_0x28ecc3(new Error(_0x1074('0x5')));}}else{_0x28ecc3(new Error(_0x1074('0x6')));}});});}module[_0x1074('0x7')]=function(_0xce0213,_0x3519ef,_0x27c4be,_0x339bb6,_0x3dc60a,_0x151696,_0x4e2347){var _0x4d06ec=new AWS[(_0x1074('0x8'))]({'accessKeyId':_0xce0213,'secretAccessKey':_0x3519ef,'region':_0x27c4be});var _0x4a2777={'Text':_0x3dc60a,'TextType':_0x151696||'text','OutputFormat':_0x1074('0x9'),'VoiceId':_0x339bb6};return pollyResult(_0x4d06ec,_0x4a2777,_0x4e2347);};
\ No newline at end of file
index e84b658..d053064 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1cb=['./lib/api'];(function(_0x4d7c38,_0x10654e){var _0x22353a=function(_0x349893){while(--_0x349893){_0x4d7c38['push'](_0x4d7c38['shift']());}};_0x22353a(++_0x10654e);}(_0xc1cb,0x78));var _0xbc1c=function(_0x223e70,_0x744e6a){_0x223e70=_0x223e70-0x0;var _0xb946f8=_0xc1cb[_0x223e70];return _0xb946f8;};'use strict';var asr=require(_0xbc1c('0x0'));module['exports']=function(_0x3cd022,_0x5d4c16,_0x3c5175,_0x173cbf){return asr(_0x3cd022,_0x5d4c16,_0x3c5175);};
\ No newline at end of file
+var _0xa097=['exports','./lib/api'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa097,0x131));var _0x7a09=function(_0x4555c2,_0x138d83){_0x4555c2=_0x4555c2-0x0;var _0x492d1d=_0xa097[_0x4555c2];return _0x492d1d;};'use strict';var asr=require(_0x7a09('0x0'));module[_0x7a09('0x1')]=function(_0x41869a,_0x12f0dc,_0x5993c0,_0x2977d5){return asr(_0x41869a,_0x12f0dc,_0x5993c0);};
\ No newline at end of file
index 68e0e4b..620d6ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc2=['readFileSync','base64','POST','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0x0fc2,0x6e));var _0x20fc=function(_0x19aa23,_0x42a0d9){_0x19aa23=_0x19aa23-0x0;var _0x224c6d=_0x0fc2[_0x19aa23];return _0x224c6d;};'use strict';var url=require(_0x20fc('0x0'));var BPromise=require(_0x20fc('0x1'));var fs=require('fs');var host=_0x20fc('0x2');module[_0x20fc('0x3')]=function(_0x51d2ab,_0x46b3ae,_0xba56f5){return new BPromise(function(_0x4765f2,_0x2b95b8){var _0x14a9af;if(typeof _0x51d2ab!==_0x20fc('0x4')||_0x51d2ab[_0x20fc('0x5')]===0x0){return _0x2b95b8(_0x20fc('0x6'));}if(typeof _0x46b3ae!==_0x20fc('0x4')||_0x46b3ae[_0x20fc('0x5')]===0x0){return _0x2b95b8(_0x20fc('0x7'));}if(typeof _0xba56f5!==_0x20fc('0x8')&&(typeof _0xba56f5!==_0x20fc('0x4')||_0xba56f5[_0x20fc('0x5')]===0x0)){return _0x2b95b8(_0x20fc('0x9'));}try{_0x14a9af=fs[_0x20fc('0xa')](_0x51d2ab)['toString'](_0x20fc('0xb'));}catch(_0x3f25d1){return _0x2b95b8(_0x3f25d1);}return _0x4765f2({'method':_0x20fc('0xc'),'uri':host+'/v1/speech:recognize?key='+_0x46b3ae,'body':{'config':{'encoding':_0x20fc('0xd'),'sampleRateHertz':_0x20fc('0xe'),'languageCode':_0xba56f5},'audio':{'content':_0x14a9af}},'json':!![]});});};
\ No newline at end of file
+var _0xf46a=['length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','readFileSync','POST','/v1/speech:recognize?key=','8000','url','https://speech.googleapis.com','exports','string'];(function(_0x30734a,_0x594b0a){var _0x303af1=function(_0x3c4d23){while(--_0x3c4d23){_0x30734a['push'](_0x30734a['shift']());}};_0x303af1(++_0x594b0a);}(_0xf46a,0xa4));var _0xaf46=function(_0x45782e,_0x2a08bf){_0x45782e=_0x45782e-0x0;var _0x2c4522=_0xf46a[_0x45782e];return _0x2c4522;};'use strict';var url=require(_0xaf46('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host=_0xaf46('0x1');module[_0xaf46('0x2')]=function(_0x571132,_0xf4ff9e,_0x3a7936){return new BPromise(function(_0x53059e,_0x14a6b6){var _0x34c69d;if(typeof _0x571132!==_0xaf46('0x3')||_0x571132[_0xaf46('0x4')]===0x0){return _0x14a6b6(_0xaf46('0x5'));}if(typeof _0xf4ff9e!==_0xaf46('0x3')||_0xf4ff9e[_0xaf46('0x4')]===0x0){return _0x14a6b6(_0xaf46('0x6'));}if(typeof _0x3a7936!==_0xaf46('0x7')&&(typeof _0x3a7936!==_0xaf46('0x3')||_0x3a7936[_0xaf46('0x4')]===0x0)){return _0x14a6b6('lang\x20should\x20be\x20a\x20string');}try{_0x34c69d=fs[_0xaf46('0x8')](_0x571132)['toString']('base64');}catch(_0x51f679){return _0x14a6b6(_0x51f679);}return _0x53059e({'method':_0xaf46('0x9'),'uri':host+_0xaf46('0xa')+_0xf4ff9e,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0xaf46('0xb'),'languageCode':_0x3a7936},'audio':{'content':_0x34c69d}},'json':!![]});});};
\ No newline at end of file
index 8903f75..da5b14a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x341b=['exports'];(function(_0x246f5a,_0x43afb4){var _0x566ee8=function(_0x1a1995){while(--_0x1a1995){_0x246f5a['push'](_0x246f5a['shift']());}};_0x566ee8(++_0x43afb4);}(_0x341b,0x1ac));var _0xb341=function(_0x46f2f8,_0x236f6e){_0x46f2f8=_0x46f2f8-0x0;var _0x931c1=_0x341b[_0x46f2f8];return _0x931c1;};var asr=require('./asr');module[_0xb341('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x3680=['exports'];(function(_0x498b52,_0x172050){var _0x19152f=function(_0x43cbfb){while(--_0x43cbfb){_0x498b52['push'](_0x498b52['shift']());}};_0x19152f(++_0x172050);}(_0x3680,0x13a));var _0x0368=function(_0x56337f,_0x1d0d12){_0x56337f=_0x56337f-0x0;var _0x1b0eec=_0x3680[_0x56337f];return _0x1b0eec;};var asr=require('./asr');module[_0x0368('0x0')]={'asr':asr};
\ No newline at end of file
index defc98d..3d56a86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x651b=['wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','writeFileSync','then','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','generate','.mp3','base64','writeFile','.wav','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','POST','jQ1olc','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','map','alternatives','transcript','join','results','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','textRequest','source','result','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','get','error','statusCode','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','protocol','WHAT_EVER','request\x20to\x20','data','transcode'];(function(_0x30bd66,_0x36a93d){var _0x74c9dd=function(_0x2cd660){while(--_0x2cd660){_0x30bd66['push'](_0x30bd66['shift']());}};_0x74c9dd(++_0x36a93d);}(_0x651b,0xef));var _0xb651=function(_0x3fd6f6,_0x19be53){_0x3fd6f6=_0x3fd6f6-0x0;var _0x5331ef=_0x651b[_0x3fd6f6];return _0x5331ef;};'use strict';var apiai=require(_0xb651('0x0'));var BPromise=require(_0xb651('0x1'));var dialogflow=require(_0xb651('0x2'));var fs=require('fs');var http=require(_0xb651('0x3'));var https=require(_0xb651('0x4'));var md5=require(_0xb651('0x5'));var path=require(_0xb651('0x6'));var querystring=require(_0xb651('0x7'));var rp=require(_0xb651('0x8'));var rs=require(_0xb651('0x9'));var sox=require('sox');var tts=require(_0xb651('0xa'));var urlParse=require(_0xb651('0xb'))[_0xb651('0xc')];var util=require(_0xb651('0xd'));var aws=require(_0xb651('0xe'));var google=require('./google');var sestek=require(_0xb651('0xf'));var tilde=require(_0xb651('0x10'));var logger=require(_0xb651('0x11'))(_0xb651('0x12'));var ISPEECH_API=_0xb651('0x13');function downloadFile(_0x4e8bb8,_0x53146d){return new BPromise(function(_0x52c9ff,_0xa3d698){var _0x5c50e9=urlParse(_0x4e8bb8);var _0x20b8ae=_0x5c50e9['protocol']===_0xb651('0x14')?https:http;var _0x1c6650={'host':_0x5c50e9[_0xb651('0x15')],'path':_0x5c50e9[_0xb651('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x20b8ae[_0xb651('0x16')](_0x1c6650,function(_0x10caa6){if(_0x10caa6['statusCode']!==0xc8){logger[_0xb651('0x17')]('request\x20to\x20'+_0x4e8bb8+'\x20failed,\x20status\x20code\x20=\x20'+_0x10caa6[_0xb651('0x18')]+'\x20('+_0x10caa6[_0xb651('0x19')]+')');_0xa3d698(new Error('request\x20to\x20'+_0x4e8bb8+_0xb651('0x1a')+_0x10caa6['statusCode']+'\x20('+_0x10caa6[_0xb651('0x19')]+')'));return;}var _0x2b06b7=fs[_0xb651('0x1b')](_0x53146d);_0x2b06b7['on'](_0xb651('0x1c'),function(){logger[_0xb651('0x1d')](_0xb651('0x1e'));_0x2b06b7[_0xb651('0x1f')](_0x52c9ff);});_0x2b06b7['on'](_0xb651('0x17'),function(_0x48cd8d){fs[_0xb651('0x20')](_0x53146d);logger[_0xb651('0x17')](_0xb651('0x21'),_0x48cd8d);_0xa3d698(_0x48cd8d);});_0x10caa6[_0xb651('0x22')](_0x2b06b7);})['on'](_0xb651('0x17'),function(_0x3678b4){logger[_0xb651('0x17')](_0x3678b4);_0xa3d698(_0x3678b4);})[_0xb651('0x23')]();});}function uploadFile(_0x179980){return new BPromise(function(_0x5b7f9b,_0x347765){var _0x23823f=urlParse(_0x179980);var _0x2f07b3=_0x23823f[_0xb651('0x24')]==='https:'?https:http;var _0x51fe75={'host':_0x23823f['host'],'path':_0x23823f[_0xb651('0x6')],'headers':{'user-agent':_0xb651('0x25')}};_0x2f07b3[_0xb651('0x16')](_0x51fe75,function(_0x19e5c4){if(_0x19e5c4['statusCode']!==0xc8){_0x347765(new Error(_0xb651('0x26')+_0x179980+'\x20failed,\x20status\x20code\x20=\x20'+_0x19e5c4[_0xb651('0x18')]+'\x20('+_0x19e5c4['statusMessage']+')'));return;}var _0xb48f40='';_0x19e5c4['on'](_0xb651('0x27'),function(_0x12a59d){_0xb48f40+=_0x12a59d;});_0x19e5c4['on']('end',function(){_0x5b7f9b(_0xb48f40);});})['on'](_0xb651('0x17'),function(_0x8781ff){_0x347765(_0x8781ff);})[_0xb651('0x23')]();});}function convertFile(_0xbe941e,_0x530a3b){return new BPromise(function(_0x2445ec,_0x37e29a){var _0x1ecf1e=sox[_0xb651('0x28')](_0xbe941e,_0x530a3b,{'sampleRate':0x1f40,'format':_0xb651('0x29'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1ecf1e['on'](_0xb651('0x17'),function(_0x14d824){logger[_0xb651('0x17')](_0xb651('0x2a'),_0x14d824);_0x37e29a(_0x14d824);});_0x1ecf1e['on'](_0xb651('0x23'),function(){logger[_0xb651('0x1d')](_0xb651('0x2b'));_0x2445ec();});_0x1ecf1e[_0xb651('0x2c')]();});}function base64Decode(_0x3c4624,_0x13e0d0){var _0x39d425=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs['generate'](0x4)+'.wav');fs[_0xb651('0x2f')](_0x39d425,_0x3c4624,'base64');return convertFile(_0x39d425,_0x13e0d0)[_0xb651('0x30')](function(){try{fs[_0xb651('0x20')](_0x39d425);fs[_0xb651('0x31')](_0x13e0d0,_0xb651('0x32'));}catch(_0x442e32){logger['error'](_0x442e32);}return _0x13e0d0[_0xb651('0x33')]('.')[0x0];});}function base64Encode(_0x3a6321){var _0xbb6423=fs[_0xb651('0x34')](_0x3a6321);return new Buffer(_0xbb6423)[_0xb651('0x35')]('base64');}exports['googleCloudTTS']=function(_0x2ff671,_0x2a8a03,_0x52cc16,_0x265589,_0x4d423f,_0x30ace9){var _0x3093bc,_0x1ccc56;var _0x1749df=_0xb651('0x36');var _0x55b067=_0xb651('0x37')+_0x2ff671;var _0x130460={};if(_0x2a8a03===_0xb651('0x38')){_0x130460['input']={'ssml':_0x52cc16};}else{_0x130460[_0xb651('0x39')]={'text':_0x52cc16};};_0x130460[_0xb651('0x3a')]={'languageCode':_0x265589,'ssmlGender':_0x4d423f};_0x130460[_0xb651('0x3b')]={'audioEncoding':_0xb651('0x3c'),'sampleRateHertz':0x1f40};var _0x5a6447={'url':_0x1749df+'text:synthesize'+_0x55b067,'method':'POST','json':!![],'body':_0x130460};return rp(_0x5a6447)['then'](function(_0x3ccbb3){return new BPromise(function(_0x174e64,_0x53bb3a){_0x3093bc=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x3e'));var _0x28f14a=Buffer['from'](_0x3ccbb3['audioContent'],_0xb651('0x3f'));return fs[_0xb651('0x40')](_0x3093bc,_0x28f14a,function(_0x43a4cd){_0x53bb3a(_0x43a4cd);},function(_0x47dc59){fs[_0xb651('0x31')](_0x3093bc,_0xb651('0x32'));_0x174e64(_0x47dc59);});});})[_0xb651('0x30')](function(_0x5cf1d6){_0x1ccc56=path[_0xb651('0x2d')](__dirname,'tmp',rs[_0xb651('0x3d')](0x4)+_0xb651('0x41'));return convertFile(_0x3093bc,_0x1ccc56);})['then'](function(){try{fs['unlink'](_0x3093bc);fs['chmodSync'](_0x1ccc56,_0xb651('0x32'));}catch(_0x4e84d9){logger[_0xb651('0x17')](_0x4e84d9);}logger[_0xb651('0x1d')]('googleCloudTTS\x20path',_0x1ccc56[_0xb651('0x33')]('.')[0x0]);return _0x1ccc56[_0xb651('0x33')]('.')[0x0];});};exports['googleTTS']=function(_0x184cef,_0x238167){var _0x26cb8e=_0xb651('0x42');var _0xc3923f,_0x8c2b1f;var _0x471516;var _0x53c161={'encoding':'utf8','method':_0xb651('0x43'),'timeout':0x2710,'url':_0x26cb8e,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0xb651('0x44'),JSON[_0xb651('0x45')]([_0x184cef,_0x238167||'en',![],_0xb651('0x46')]),null,_0xb651('0x47')]]]))};return rp(_0x53c161)[_0xb651('0x30')](function(_0x27557c){try{_0x471516=eval(_0x27557c[_0xb651('0x48')](0x5))[0x0][0x2];}catch(_0x243697){throw new Error(_0xb651('0x49')+_0x27557c[_0xb651('0x27')]);}if(!_0x471516){if(_0x184cef[_0xb651('0x4a')]>0xc8){throw new Error(_0xb651('0x4b'));}else{throw new Error('lang\x20\x22'+_0x238167+_0xb651('0x4c'));}}try{_0x471516=eval(_0x471516)[0x0];}catch(_0x4c4f54){throw new Error(_0xb651('0x49')+res[_0xb651('0x27')]);}const _0x5868dd=_0x471516;_0xc3923f=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs['generate'](0x4)+_0xb651('0x3e'));fs[_0xb651('0x2f')](_0xc3923f,_0x471516,{'encoding':_0xb651('0x3f')});_0x8c2b1f=path[_0xb651('0x2d')](__dirname,'tmp',rs['generate'](0x4)+_0xb651('0x41'));return convertFile(_0xc3923f,_0x8c2b1f);})[_0xb651('0x30')](function(){try{fs[_0xb651('0x20')](_0xc3923f);fs[_0xb651('0x31')](_0x8c2b1f,_0xb651('0x32'));}catch(_0x11478b){logger['error'](_0x11478b);}logger[_0xb651('0x1d')](_0xb651('0x4d'),_0x8c2b1f[_0xb651('0x33')]('.')[0x0]);return _0x8c2b1f[_0xb651('0x33')]('.')[0x0];});};exports[_0xb651('0x4e')]=function(_0x5f9092,_0x283802,_0x2341cb){return google[_0xb651('0x4f')](_0x5f9092,_0x283802,_0x2341cb)[_0xb651('0x30')](function(_0x5abec3){logger[_0xb651('0x1d')](_0x5abec3[_0xb651('0x50')]);return rp(_0x5abec3);})['then'](function(_0x42e6c0){var _0x4410ac='';var _0x44e53c=0x0;try{fs[_0xb651('0x20')](_0x5f9092);}catch(_0x2a4528){logger['error'](_0x2a4528);}if(_0x42e6c0&&_0x42e6c0['results']){_0x4410ac=_0x42e6c0['results'][_0xb651('0x51')](function(_0x5a116f){return _0x5a116f&&_0x5a116f[_0xb651('0x52')][0x0]&&_0x5a116f['alternatives'][0x0][_0xb651('0x53')]?_0x5a116f[_0xb651('0x52')][0x0][_0xb651('0x53')]:'';})[_0xb651('0x54')]('\x0a');_0x44e53c=_0x42e6c0[_0xb651('0x55')][_0xb651('0x51')](function(_0x3b3929){return _0x3b3929&&_0x3b3929[_0xb651('0x52')][0x0]&&_0x3b3929[_0xb651('0x52')][0x0][_0xb651('0x56')]?_0x3b3929['alternatives'][0x0][_0xb651('0x56')]:0x0;})[_0xb651('0x54')]('\x0a');}logger[_0xb651('0x1d')](_0xb651('0x57'),_0x4410ac);logger[_0xb651('0x1d')]('googleASR\x20confidence',_0x44e53c);return{'transcript':_0x4410ac,'confidence':_0x44e53c};})[_0xb651('0x58')](function(_0xbf37a9){logger[_0xb651('0x17')](_0xb651('0x59'),_0xbf37a9[_0xb651('0x18')],_0xbf37a9[_0xb651('0x5a')],_0xbf37a9[_0xb651('0x5b')]);});};exports['googleDialogflow']=function(_0x831b81,_0xc78313,_0x2b0eb1,_0x3a7031){var _0x226968=apiai(_0xc78313,{'language':_0x3a7031||'en'});return _0x226968[_0xb651('0x5c')](_0x2b0eb1,{'sessionId':md5(_0x831b81)})[_0xb651('0x30')](function(_0x6fc32d){logger[_0xb651('0x1d')](JSON[_0xb651('0x45')](_0x6fc32d));return{'source':_0x6fc32d['result'][_0xb651('0x5d')],'resolvedQuery':_0x6fc32d[_0xb651('0x5e')]['resolvedQuery'],'action':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x5f')],'actionIncomplete':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x60')],'speech':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x61')][_0xb651('0x62')],'score':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x63')],'statusCode':_0x6fc32d[_0xb651('0x64')][_0xb651('0x65')],'endConversation':_0x6fc32d['result'][_0xb651('0x66')][_0xb651('0x67')]||![],'isFallbackIntent':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x66')][_0xb651('0x68')]};});};exports['googleDialogflowV2']=function(_0x4be51f,_0x3c805d,_0x144b3d,_0x26f9bd,_0x309856,_0x306956){var _0x1ae4bb=_0x26f9bd['replace'](/\\n/g,'\x0a');var _0x262efb={'credentials':{'private_key':_0x1ae4bb,'client_email':_0x144b3d}};var _0x4e21b3=new dialogflow['SessionsClient'](_0x262efb);var _0x5561ae=_0x4e21b3[_0xb651('0x69')](_0x3c805d,md5(_0x4be51f));var _0x35979e={'session':_0x5561ae,'queryInput':{'text':{'text':_0x309856,'languageCode':_0x306956}}};return _0x4e21b3[_0xb651('0x6a')](_0x35979e)[_0xb651('0x30')](function(_0x2c23be){if(_0x2c23be&&_0x2c23be[_0xb651('0x4a')]){logger[_0xb651('0x1d')](_0xb651('0x6b'),JSON['stringify'](_0x2c23be));var _0x27a76=_0x2c23be[0x0];if(_0x27a76){var _0x34fbf2={'action':_0x27a76[_0xb651('0x6c')]['action'],'allRequiredParamsPresent':_0x27a76[_0xb651('0x6c')][_0xb651('0x6d')],'endConversation':_0x27a76['queryResult'][_0xb651('0x6e')]&&_0x27a76[_0xb651('0x6c')][_0xb651('0x6e')][_0xb651('0x6f')]?_0x27a76['queryResult'][_0xb651('0x6e')]['fields']['end_conversation'][_0xb651('0x70')]:![],'fulfillmentText':_0x27a76['queryResult'][_0xb651('0x71')],'intentName':_0x27a76[_0xb651('0x6c')][_0xb651('0x72')][_0xb651('0x5a')],'intentDisplayName':_0x27a76[_0xb651('0x6c')]['intent'][_0xb651('0x73')],'isFallbackIntent':_0x27a76[_0xb651('0x6c')][_0xb651('0x72')][_0xb651('0x74')],'languageCode':_0x27a76['queryResult'][_0xb651('0x75')],'queryText':_0x27a76[_0xb651('0x6c')][_0xb651('0x76')],'responseId':_0x27a76['responseId'],'score':_0x27a76['queryResult'][_0xb651('0x77')],'speech':_0x27a76[_0xb651('0x6c')]['fulfillmentText'],'providerResponse':JSON[_0xb651('0x45')](_0x2c23be)};return _0x34fbf2;}}});};exports[_0xb651('0x78')]=function(_0x13cca8,_0x4049f4,_0x33ae9c,_0x1de13e){return tilde['asr'](_0x13cca8,_0x4049f4,_0x33ae9c,_0x1de13e)['then'](function(_0x5eda29){try{fs['unlink'](_0x13cca8);}catch(_0x428e2d){logger[_0xb651('0x17')](_0x428e2d);}logger['info'](_0xb651('0x79'),_0x5eda29[_0xb651('0x53')]);logger[_0xb651('0x1d')](_0xb651('0x7a'),_0x5eda29[_0xb651('0x56')]);return _0x5eda29;});};exports[_0xb651('0x7b')]=function(_0x5ed105,_0x6f1217,_0x10c8eb,_0x35c5b4,_0xb9dcfb,_0x5ba511){var _0x2c2699=path['resolve'](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x3e'));var _0x2ff0fb;return aws[_0xb651('0x7c')](_0x5ed105,_0x6f1217,_0x10c8eb,_0x35c5b4,_0xb9dcfb,_0x5ba511,_0x2c2699)['then'](function(){_0x2ff0fb=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x41'));return convertFile(_0x2c2699,_0x2ff0fb);})[_0xb651('0x30')](function(){try{fs['unlink'](_0x2c2699);fs[_0xb651('0x31')](_0x2ff0fb,'777');}catch(_0x5026e1){logger[_0xb651('0x17')](_0x5026e1);}return _0x2ff0fb[_0xb651('0x33')]('.')[0x0];});};exports[_0xb651('0x7d')]=function(_0x3849cd,_0x47197f,_0x39d3db,_0x4faebc,_0x55fd5f,_0x45a8cc){return aws[_0xb651('0x7e')](_0x3849cd,_0x47197f,_0x39d3db,_0x4faebc,_0x55fd5f,_0x45a8cc)['then'](function(_0x52742a){logger[_0xb651('0x1d')](JSON['stringify'](_0x52742a));return _0x52742a;});};exports[_0xb651('0x7f')]=function(_0x57ecbc,_0x2b7e18,_0xbdbf85,_0x10738c){var _0x3cb4f2=util[_0xb651('0x80')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x57ecbc,encodeURIComponent(_0x2b7e18),_0xbdbf85,_0x10738c);var _0x25235f=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x3e'));var _0x2ff0c5;return downloadFile(_0x3cb4f2,_0x25235f)[_0xb651('0x30')](function(){_0x2ff0c5=path['resolve'](__dirname,'tmp',rs[_0xb651('0x3d')](0x4)+_0xb651('0x41'));return convertFile(_0x25235f,_0x2ff0c5);})[_0xb651('0x30')](function(){try{fs[_0xb651('0x20')](_0x25235f);fs['chmodSync'](_0x2ff0c5,_0xb651('0x32'));}catch(_0x485bf0){logger[_0xb651('0x17')](_0x485bf0);}return _0x2ff0c5['split']('.')[0x0];});};exports['ispeechASR']=function(_0x508239,_0x5aeadd,_0x4ca922,_0x1a3a5e){var _0x5307dc=util[_0xb651('0x80')](_0xb651('0x81'),ISPEECH_API,_0x5aeadd,_0x4ca922,base64Encode(_0x508239),_0x1a3a5e?util['format']('model=%s',encodeURIComponent(_0x1a3a5e)):_0xb651('0x82'));return uploadFile(_0x5307dc)['then'](function(_0x292530){return querystring[_0xb651('0xc')](_0x292530);});};exports[_0xb651('0x83')]=function(_0x4e562c,_0x28b2f3){return sestek[_0xb651('0x84')](_0x4e562c,_0x28b2f3)['then'](function(_0x44e40a){logger['info'](JSON[_0xb651('0x45')](_0x44e40a));var _0x3d2225={'speech':_0x44e40a[_0xb651('0x85')],'action':_0x44e40a[_0xb651('0x86')]?_0x44e40a[_0xb651('0x86')][_0xb651('0x87')]:undefined,'actiondata':_0x44e40a[_0xb651('0x86')]?_0x44e40a[_0xb651('0x86')][_0xb651('0x88')]:undefined};if(_0x44e40a[_0xb651('0x86')]&&_0x44e40a['channelData'][_0xb651('0x89')]){return base64Decode(_0x44e40a[_0xb651('0x86')]['AudioFromTts']['Data'],path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x41')))[_0xb651('0x30')](function(_0x47c600){_0x3d2225[_0xb651('0x8a')]=_0x47c600;return _0x3d2225;});}return _0x3d2225;});};exports[_0xb651('0x8b')]=function(){return __dirname;};
\ No newline at end of file
+var _0xa4ba=['https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','stringify','jQ1olc','generic','slice','parse\x20response\x20failed:\x0a','data','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','resolvedQuery','action','status','code','endConversation','metadata','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','Data','dirName','apiai-promise','dialogflow','https','md5','path','request-promise','randomstring','google-tts-api','url','parse','./aws','./google','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','finish\x20download\x20file','close','download\x20error','pipe','host','end','transcode','wav','error\x20convert','info','start','resolve','.wav','writeFileSync','base64','chmodSync','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','then','tmp','from','writeFile','generate','unlink','777','googleCloudTTS\x20path'];(function(_0x4eed17,_0x27f081){var _0x479134=function(_0x31c9ed){while(--_0x31c9ed){_0x4eed17['push'](_0x4eed17['shift']());}};_0x479134(++_0x27f081);}(_0xa4ba,0xd1));var _0xaa4b=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xa4ba[_0x4b055c];return _0x4b62bb;};'use strict';var apiai=require(_0xaa4b('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0xaa4b('0x1'));var fs=require('fs');var http=require('http');var https=require(_0xaa4b('0x2'));var md5=require(_0xaa4b('0x3'));var path=require(_0xaa4b('0x4'));var querystring=require('querystring');var rp=require(_0xaa4b('0x5'));var rs=require(_0xaa4b('0x6'));var sox=require('sox');var tts=require(_0xaa4b('0x7'));var urlParse=require(_0xaa4b('0x8'))[_0xaa4b('0x9')];var util=require('util');var aws=require(_0xaa4b('0xa'));var google=require(_0xaa4b('0xb'));var sestek=require(_0xaa4b('0xc'));var tilde=require('./tilde');var logger=require(_0xaa4b('0xd'))(_0xaa4b('0xe'));var ISPEECH_API=_0xaa4b('0xf');function downloadFile(_0x4d4359,_0x10a30d){return new BPromise(function(_0x36e8f8,_0x4e65ed){var _0x288378=urlParse(_0x4d4359);var _0x304bc3=_0x288378[_0xaa4b('0x10')]===_0xaa4b('0x11')?https:http;var _0x4bc542={'host':_0x288378['host'],'path':_0x288378['path'],'headers':{'user-agent':_0xaa4b('0x12')}};_0x304bc3[_0xaa4b('0x13')](_0x4bc542,function(_0x5b76e6){if(_0x5b76e6[_0xaa4b('0x14')]!==0xc8){logger[_0xaa4b('0x15')](_0xaa4b('0x16')+_0x4d4359+'\x20failed,\x20status\x20code\x20=\x20'+_0x5b76e6[_0xaa4b('0x14')]+'\x20('+_0x5b76e6['statusMessage']+')');_0x4e65ed(new Error(_0xaa4b('0x16')+_0x4d4359+_0xaa4b('0x17')+_0x5b76e6[_0xaa4b('0x14')]+'\x20('+_0x5b76e6[_0xaa4b('0x18')]+')'));return;}var _0x5578fa=fs[_0xaa4b('0x19')](_0x10a30d);_0x5578fa['on'](_0xaa4b('0x1a'),function(){logger['info'](_0xaa4b('0x1b'));_0x5578fa[_0xaa4b('0x1c')](_0x36e8f8);});_0x5578fa['on']('error',function(_0x40f16f){fs['unlink'](_0x10a30d);logger[_0xaa4b('0x15')](_0xaa4b('0x1d'),_0x40f16f);_0x4e65ed(_0x40f16f);});_0x5b76e6[_0xaa4b('0x1e')](_0x5578fa);})['on'](_0xaa4b('0x15'),function(_0x1504af){logger['error'](_0x1504af);_0x4e65ed(_0x1504af);})['end']();});}function uploadFile(_0x5e3fc9){return new BPromise(function(_0xf9bb28,_0x498085){var _0x5c8161=urlParse(_0x5e3fc9);var _0x39087d=_0x5c8161['protocol']===_0xaa4b('0x11')?https:http;var _0x560fc3={'host':_0x5c8161[_0xaa4b('0x1f')],'path':_0x5c8161[_0xaa4b('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x39087d[_0xaa4b('0x13')](_0x560fc3,function(_0x5e08f0){if(_0x5e08f0[_0xaa4b('0x14')]!==0xc8){_0x498085(new Error(_0xaa4b('0x16')+_0x5e3fc9+'\x20failed,\x20status\x20code\x20=\x20'+_0x5e08f0[_0xaa4b('0x14')]+'\x20('+_0x5e08f0[_0xaa4b('0x18')]+')'));return;}var _0x3c6968='';_0x5e08f0['on']('data',function(_0x341a71){_0x3c6968+=_0x341a71;});_0x5e08f0['on'](_0xaa4b('0x20'),function(){_0xf9bb28(_0x3c6968);});})['on'](_0xaa4b('0x15'),function(_0x3b6d2d){_0x498085(_0x3b6d2d);})[_0xaa4b('0x20')]();});}function convertFile(_0x2a1934,_0x13aa83){return new BPromise(function(_0x3ffd70,_0x51e7bd){var _0x412149=sox[_0xaa4b('0x21')](_0x2a1934,_0x13aa83,{'sampleRate':0x1f40,'format':_0xaa4b('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x412149['on']('error',function(_0x276c10){logger[_0xaa4b('0x15')](_0xaa4b('0x23'),_0x276c10);_0x51e7bd(_0x276c10);});_0x412149['on'](_0xaa4b('0x20'),function(){logger[_0xaa4b('0x24')]('finish\x20to\x20convert');_0x3ffd70();});_0x412149[_0xaa4b('0x25')]();});}function base64Decode(_0xd58628,_0x263fa8){var _0x4e43aa=path[_0xaa4b('0x26')](__dirname,'tmp',rs['generate'](0x4)+_0xaa4b('0x27'));fs[_0xaa4b('0x28')](_0x4e43aa,_0xd58628,_0xaa4b('0x29'));return convertFile(_0x4e43aa,_0x263fa8)['then'](function(){try{fs['unlink'](_0x4e43aa);fs[_0xaa4b('0x2a')](_0x263fa8,'777');}catch(_0x3d043d){logger[_0xaa4b('0x15')](_0x3d043d);}return _0x263fa8[_0xaa4b('0x2b')]('.')[0x0];});}function base64Encode(_0x242908){var _0x5e75cf=fs[_0xaa4b('0x2c')](_0x242908);return new Buffer(_0x5e75cf)[_0xaa4b('0x2d')](_0xaa4b('0x29'));}exports[_0xaa4b('0x2e')]=function(_0xc2c3c5,_0x19d31f,_0x3560ec,_0x1107db,_0x5c4fb8,_0x23f6d3){var _0x48c464,_0x417866;var _0x3a47dc=_0xaa4b('0x2f');var _0x12a3d9=_0xaa4b('0x30')+_0xc2c3c5;var _0x3fa38b={};if(_0x19d31f===_0xaa4b('0x31')){_0x3fa38b['input']={'ssml':_0x3560ec};}else{_0x3fa38b[_0xaa4b('0x32')]={'text':_0x3560ec};};_0x3fa38b[_0xaa4b('0x33')]={'languageCode':_0x1107db,'ssmlGender':_0x5c4fb8};_0x3fa38b[_0xaa4b('0x34')]={'audioEncoding':_0xaa4b('0x35'),'sampleRateHertz':0x1f40};var _0x329f7e={'url':_0x3a47dc+_0xaa4b('0x36')+_0x12a3d9,'method':'POST','json':!![],'body':_0x3fa38b};return rp(_0x329f7e)[_0xaa4b('0x37')](function(_0x24501d){return new BPromise(function(_0x6d3ac2,_0x2aa2c4){_0x48c464=path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs['generate'](0x4)+'.mp3');var _0x3dc1ea=Buffer[_0xaa4b('0x39')](_0x24501d['audioContent'],'base64');return fs[_0xaa4b('0x3a')](_0x48c464,_0x3dc1ea,function(_0x194e1e){_0x2aa2c4(_0x194e1e);},function(_0xdbfaae){fs[_0xaa4b('0x2a')](_0x48c464,'777');_0x6d3ac2(_0xdbfaae);});});})[_0xaa4b('0x37')](function(_0xb071b6){_0x417866=path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs[_0xaa4b('0x3b')](0x4)+_0xaa4b('0x27'));return convertFile(_0x48c464,_0x417866);})['then'](function(){try{fs[_0xaa4b('0x3c')](_0x48c464);fs['chmodSync'](_0x417866,_0xaa4b('0x3d'));}catch(_0x19242f){logger['error'](_0x19242f);}logger[_0xaa4b('0x24')](_0xaa4b('0x3e'),_0x417866[_0xaa4b('0x2b')]('.')[0x0]);return _0x417866[_0xaa4b('0x2b')]('.')[0x0];});};exports['googleTTS']=function(_0x190217,_0x3c482d){var _0x60945=_0xaa4b('0x3f');var _0xb646e8,_0x12b396;var _0x1a86db;var _0x4195a9={'encoding':_0xaa4b('0x40'),'method':'POST','timeout':0x2710,'url':_0x60945,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON[_0xaa4b('0x41')]([[[_0xaa4b('0x42'),JSON[_0xaa4b('0x41')]([_0x190217,_0x3c482d||'en',![],'null']),null,_0xaa4b('0x43')]]]))};return rp(_0x4195a9)['then'](function(_0x1bdfc2){try{_0x1a86db=eval(_0x1bdfc2[_0xaa4b('0x44')](0x5))[0x0][0x2];}catch(_0x5eba7c){throw new Error(_0xaa4b('0x45')+_0x1bdfc2[_0xaa4b('0x46')]);}if(!_0x1a86db){if(_0x190217['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xaa4b('0x47')+_0x3c482d+_0xaa4b('0x48'));}}try{_0x1a86db=eval(_0x1a86db)[0x0];}catch(_0x5260da){throw new Error(_0xaa4b('0x45')+res[_0xaa4b('0x46')]);}const _0x54a0c7=_0x1a86db;_0xb646e8=path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs[_0xaa4b('0x3b')](0x4)+_0xaa4b('0x49'));fs[_0xaa4b('0x28')](_0xb646e8,_0x1a86db,{'encoding':_0xaa4b('0x29')});_0x12b396=path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs[_0xaa4b('0x3b')](0x4)+_0xaa4b('0x27'));return convertFile(_0xb646e8,_0x12b396);})['then'](function(){try{fs[_0xaa4b('0x3c')](_0xb646e8);fs[_0xaa4b('0x2a')](_0x12b396,'777');}catch(_0x31540c){logger[_0xaa4b('0x15')](_0x31540c);}logger[_0xaa4b('0x24')](_0xaa4b('0x4a'),_0x12b396[_0xaa4b('0x2b')]('.')[0x0]);return _0x12b396[_0xaa4b('0x2b')]('.')[0x0];});};exports[_0xaa4b('0x4b')]=function(_0x1bfaa5,_0x3013ca,_0x1d3c74){return google[_0xaa4b('0x4c')](_0x1bfaa5,_0x3013ca,_0x1d3c74)['then'](function(_0x2b6b59){logger[_0xaa4b('0x24')](_0x2b6b59[_0xaa4b('0x4d')]);return rp(_0x2b6b59);})[_0xaa4b('0x37')](function(_0x1c1ee9){var _0x5b4d9b='';var _0xf84b0e=0x0;try{fs[_0xaa4b('0x3c')](_0x1bfaa5);}catch(_0x207e2f){logger[_0xaa4b('0x15')](_0x207e2f);}if(_0x1c1ee9&&_0x1c1ee9['results']){_0x5b4d9b=_0x1c1ee9[_0xaa4b('0x4e')][_0xaa4b('0x4f')](function(_0x5511d0){return _0x5511d0&&_0x5511d0[_0xaa4b('0x50')][0x0]&&_0x5511d0['alternatives'][0x0]['transcript']?_0x5511d0[_0xaa4b('0x50')][0x0][_0xaa4b('0x51')]:'';})[_0xaa4b('0x52')]('\x0a');_0xf84b0e=_0x1c1ee9[_0xaa4b('0x4e')][_0xaa4b('0x4f')](function(_0x99f196){return _0x99f196&&_0x99f196['alternatives'][0x0]&&_0x99f196[_0xaa4b('0x50')][0x0][_0xaa4b('0x53')]?_0x99f196[_0xaa4b('0x50')][0x0]['confidence']:0x0;})[_0xaa4b('0x52')]('\x0a');}logger['info'](_0xaa4b('0x54'),_0x5b4d9b);logger[_0xaa4b('0x24')]('googleASR\x20confidence',_0xf84b0e);return{'transcript':_0x5b4d9b,'confidence':_0xf84b0e};})['catch'](function(_0x6e045b){logger[_0xaa4b('0x15')](_0xaa4b('0x55'),_0x6e045b[_0xaa4b('0x14')],_0x6e045b[_0xaa4b('0x56')],_0x6e045b[_0xaa4b('0x57')]);});};exports[_0xaa4b('0x58')]=function(_0x4e9faf,_0x34ebec,_0x1d7c92,_0x18da79){var _0x2dca41=apiai(_0x34ebec,{'language':_0x18da79||'en'});return _0x2dca41[_0xaa4b('0x59')](_0x1d7c92,{'sessionId':md5(_0x4e9faf)})[_0xaa4b('0x37')](function(_0x740cb0){logger[_0xaa4b('0x24')](JSON['stringify'](_0x740cb0));return{'source':_0x740cb0[_0xaa4b('0x5a')]['source'],'resolvedQuery':_0x740cb0['result'][_0xaa4b('0x5b')],'action':_0x740cb0[_0xaa4b('0x5a')][_0xaa4b('0x5c')],'actionIncomplete':_0x740cb0[_0xaa4b('0x5a')]['actionIncomplete'],'speech':_0x740cb0[_0xaa4b('0x5a')]['fulfillment']['speech'],'score':_0x740cb0[_0xaa4b('0x5a')]['score'],'statusCode':_0x740cb0[_0xaa4b('0x5d')][_0xaa4b('0x5e')],'endConversation':_0x740cb0[_0xaa4b('0x5a')]['metadata'][_0xaa4b('0x5f')]||![],'isFallbackIntent':_0x740cb0['result'][_0xaa4b('0x60')]['isFallbackIntent']};});};exports[_0xaa4b('0x61')]=function(_0x55e4c2,_0x82052a,_0x1a20a5,_0x4ba042,_0x5224d5,_0x1b911e){var _0x447131=_0x4ba042[_0xaa4b('0x62')](/\\n/g,'\x0a');var _0x1b05f5={'credentials':{'private_key':_0x447131,'client_email':_0x1a20a5}};var _0x116139=new dialogflow[(_0xaa4b('0x63'))](_0x1b05f5);var _0x5dc8ed=_0x116139[_0xaa4b('0x64')](_0x82052a,md5(_0x55e4c2));var _0x247cef={'session':_0x5dc8ed,'queryInput':{'text':{'text':_0x5224d5,'languageCode':_0x1b911e}}};return _0x116139[_0xaa4b('0x65')](_0x247cef)[_0xaa4b('0x37')](function(_0x80b228){if(_0x80b228&&_0x80b228[_0xaa4b('0x66')]){logger[_0xaa4b('0x24')](_0xaa4b('0x67'),JSON[_0xaa4b('0x41')](_0x80b228));var _0xebb150=_0x80b228[0x0];if(_0xebb150){var _0x56052b={'action':_0xebb150[_0xaa4b('0x68')]['action'],'allRequiredParamsPresent':_0xebb150[_0xaa4b('0x68')][_0xaa4b('0x69')],'endConversation':_0xebb150[_0xaa4b('0x68')][_0xaa4b('0x6a')]&&_0xebb150[_0xaa4b('0x68')][_0xaa4b('0x6a')][_0xaa4b('0x6b')]?_0xebb150['queryResult'][_0xaa4b('0x6a')]['fields'][_0xaa4b('0x6c')][_0xaa4b('0x6d')]:![],'fulfillmentText':_0xebb150[_0xaa4b('0x68')][_0xaa4b('0x6e')],'intentName':_0xebb150[_0xaa4b('0x68')]['intent'][_0xaa4b('0x56')],'intentDisplayName':_0xebb150[_0xaa4b('0x68')][_0xaa4b('0x6f')][_0xaa4b('0x70')],'isFallbackIntent':_0xebb150[_0xaa4b('0x68')]['intent'][_0xaa4b('0x71')],'languageCode':_0xebb150[_0xaa4b('0x68')]['languageCode'],'queryText':_0xebb150[_0xaa4b('0x68')][_0xaa4b('0x72')],'responseId':_0xebb150['responseId'],'score':_0xebb150[_0xaa4b('0x68')][_0xaa4b('0x73')],'speech':_0xebb150[_0xaa4b('0x68')]['fulfillmentText'],'providerResponse':JSON[_0xaa4b('0x41')](_0x80b228)};return _0x56052b;}}});};exports[_0xaa4b('0x74')]=function(_0x977fe9,_0x40aab8,_0x642c41,_0x3d2133){return tilde[_0xaa4b('0x4c')](_0x977fe9,_0x40aab8,_0x642c41,_0x3d2133)[_0xaa4b('0x37')](function(_0x500b40){try{fs[_0xaa4b('0x3c')](_0x977fe9);}catch(_0xff1016){logger[_0xaa4b('0x15')](_0xff1016);}logger[_0xaa4b('0x24')](_0xaa4b('0x75'),_0x500b40['transcript']);logger['info']('Tilde\x20ASR\x20confidence',_0x500b40[_0xaa4b('0x53')]);return _0x500b40;});};exports[_0xaa4b('0x76')]=function(_0x2d2a4e,_0x29a4ce,_0x353aaa,_0x41d8bf,_0x28922f,_0x6d5772){var _0x53e64f=path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs['generate'](0x4)+_0xaa4b('0x49'));var _0x113790;return aws[_0xaa4b('0x77')](_0x2d2a4e,_0x29a4ce,_0x353aaa,_0x41d8bf,_0x28922f,_0x6d5772,_0x53e64f)['then'](function(){_0x113790=path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs['generate'](0x4)+_0xaa4b('0x27'));return convertFile(_0x53e64f,_0x113790);})['then'](function(){try{fs[_0xaa4b('0x3c')](_0x53e64f);fs[_0xaa4b('0x2a')](_0x113790,_0xaa4b('0x3d'));}catch(_0x4ff9f5){logger[_0xaa4b('0x15')](_0x4ff9f5);}return _0x113790[_0xaa4b('0x2b')]('.')[0x0];});};exports[_0xaa4b('0x78')]=function(_0x3d46bd,_0x171529,_0x4c4a6a,_0x340744,_0x199bbd,_0x3b634e){return aws['lex'](_0x3d46bd,_0x171529,_0x4c4a6a,_0x340744,_0x199bbd,_0x3b634e)[_0xaa4b('0x37')](function(_0xe00160){logger[_0xaa4b('0x24')](JSON['stringify'](_0xe00160));return _0xe00160;});};exports[_0xaa4b('0x79')]=function(_0x2ed08b,_0x37e551,_0x29185f,_0x6d7c27){var _0x40039e=util[_0xaa4b('0x7a')](_0xaa4b('0x7b'),ISPEECH_API,_0x2ed08b,encodeURIComponent(_0x37e551),_0x29185f,_0x6d7c27);var _0x31d888=path['resolve'](__dirname,_0xaa4b('0x38'),rs[_0xaa4b('0x3b')](0x4)+_0xaa4b('0x49'));var _0x360264;return downloadFile(_0x40039e,_0x31d888)[_0xaa4b('0x37')](function(){_0x360264=path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs[_0xaa4b('0x3b')](0x4)+'.wav');return convertFile(_0x31d888,_0x360264);})[_0xaa4b('0x37')](function(){try{fs['unlink'](_0x31d888);fs[_0xaa4b('0x2a')](_0x360264,_0xaa4b('0x3d'));}catch(_0xbebedd){logger[_0xaa4b('0x15')](_0xbebedd);}return _0x360264['split']('.')[0x0];});};exports[_0xaa4b('0x7c')]=function(_0x574769,_0x4cd1cb,_0x398859,_0x51827c){var _0x286d27=util[_0xaa4b('0x7a')](_0xaa4b('0x7d'),ISPEECH_API,_0x4cd1cb,_0x398859,base64Encode(_0x574769),_0x51827c?util['format'](_0xaa4b('0x7e'),encodeURIComponent(_0x51827c)):_0xaa4b('0x7f'));return uploadFile(_0x286d27)['then'](function(_0x375bf5){return querystring['parse'](_0x375bf5);});};exports[_0xaa4b('0x80')]=function(_0x419d5a,_0x536bcc){return sestek[_0xaa4b('0x81')](_0x419d5a,_0x536bcc)['then'](function(_0x229bd4){logger[_0xaa4b('0x24')](JSON[_0xaa4b('0x41')](_0x229bd4));var _0x61bc75={'speech':_0x229bd4[_0xaa4b('0x82')],'action':_0x229bd4[_0xaa4b('0x83')]?_0x229bd4[_0xaa4b('0x83')][_0xaa4b('0x84')]:undefined,'actiondata':_0x229bd4['channelData']?_0x229bd4[_0xaa4b('0x83')][_0xaa4b('0x85')]:undefined};if(_0x229bd4[_0xaa4b('0x83')]&&_0x229bd4[_0xaa4b('0x83')]['AudioFromTts']){return base64Decode(_0x229bd4[_0xaa4b('0x83')]['AudioFromTts'][_0xaa4b('0x86')],path[_0xaa4b('0x26')](__dirname,_0xaa4b('0x38'),rs[_0xaa4b('0x3b')](0x4)+_0xaa4b('0x27')))[_0xaa4b('0x37')](function(_0xcea7f3){_0x61bc75['audiofile']=_0xcea7f3;return _0x61bc75;});}return _0x61bc75;});};exports[_0xaa4b('0x87')]=function(){return __dirname;};
\ No newline at end of file
index 7c13675..a8318d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7026=['exports','./nda'];(function(_0x3bc7f4,_0x51a4e1){var _0x10c47c=function(_0x231199){while(--_0x231199){_0x3bc7f4['push'](_0x3bc7f4['shift']());}};_0x10c47c(++_0x51a4e1);}(_0x7026,0x11d));var _0x6702=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x7026[_0x17d9e3];return _0x14192d;};var nda=require(_0x6702('0x0'));module[_0x6702('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x1cbb=['exports'];(function(_0x38de33,_0x4361bb){var _0x40f16d=function(_0x25975c){while(--_0x25975c){_0x38de33['push'](_0x38de33['shift']());}};_0x40f16d(++_0x4361bb);}(_0x1cbb,0x1c4));var _0xb1cb=function(_0x5e878c,_0x4e5c6a){_0x5e878c=_0x5e878c-0x0;var _0x218ef7=_0x1cbb[_0x5e878c];return _0x218ef7;};var nda=require('./nda');module[_0xb1cb('0x0')]={'nda':nda};
\ No newline at end of file
index 6e89f1f..acdd2f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c4b=['exports','POST','resolve','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','uniqueid','callerid','calleridname','dnid','text','Bearer\x20','access_token','project','body','channelData','ProjectName','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger'];(function(_0x38eb23,_0x196e8b){var _0x48506a=function(_0x36edb0){while(--_0x36edb0){_0x38eb23['push'](_0x38eb23['shift']());}};_0x48506a(++_0x196e8b);}(_0x6c4b,0x93));var _0xb6c4=function(_0x59a542,_0x412c68){_0x59a542=_0x59a542-0x0;var _0x656aa3=_0x6c4b[_0x59a542];return _0x656aa3;};'use strict';var rp=require(_0xb6c4('0x0'));var url=require(_0xb6c4('0x1'));var logger=require(_0xb6c4('0x2'))('agi');module[_0xb6c4('0x3')]=function(_0x2a1872,_0x235930){var _0x794568={'method':_0xb6c4('0x4'),'uri':url[_0xb6c4('0x5')](_0x235930['ndauth_url'],'/token'),'form':{'grant_type':_0xb6c4('0x6'),'username':_0x235930['username'],'password':_0x235930[_0xb6c4('0x6')]},'json':!![]};return rp(_0x794568)[_0xb6c4('0x7')](function(_0x554935){var _0x312141={'method':_0xb6c4('0x4'),'uri':url[_0xb6c4('0x5')](_0x235930[_0xb6c4('0x8')],_0xb6c4('0x9')),'body':{'type':_0x235930[_0xb6c4('0xa')]||_0xb6c4('0xb'),'channelId':'Nda','conversation':{'id':_0x2a1872[_0xb6c4('0xc')]},'from':{'id':_0x2a1872[_0xb6c4('0xd')],'name':_0x2a1872[_0xb6c4('0xe')]},'recipient':{'id':_0x2a1872[_0xb6c4('0xf')],'name':_0x2a1872['extension']},'text':_0x235930[_0xb6c4('0x10')],'channelData':{}},'headers':{'Authorization':_0xb6c4('0x11')+_0x554935[_0xb6c4('0x12')]},'json':!![]};if(_0x235930[_0xb6c4('0x13')]){_0x312141[_0xb6c4('0x14')][_0xb6c4('0x15')][_0xb6c4('0x16')]=_0x235930[_0xb6c4('0x13')];}if(_0x235930['ndagenerate_audio']=='1'){_0x312141['body'][_0xb6c4('0x15')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xb6c4('0x17')};}if(_0x235930[_0xb6c4('0x18')]){_0x312141[_0xb6c4('0x14')]['channelData'][_0xb6c4('0x19')]=_0x235930[_0xb6c4('0x18')];if(_0x235930[_0xb6c4('0x1a')]){_0x312141['body'][_0xb6c4('0x15')][_0xb6c4('0x1b')]=_0x235930[_0xb6c4('0x1a')];}}logger[_0xb6c4('0x1c')](JSON[_0xb6c4('0x1d')](_0x312141));return rp(_0x312141);});};
\ No newline at end of file
+var _0x24b3=['/token','then','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','Bearer\x20','access_token','body','channelData','ProjectName','project','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','exports','POST','resolve'];(function(_0xb43605,_0x24f6ea){var _0x164866=function(_0x4245d6){while(--_0x4245d6){_0xb43605['push'](_0xb43605['shift']());}};_0x164866(++_0x24f6ea);}(_0x24b3,0xd3));var _0x324b=function(_0x3e2002,_0x498a1f){_0x3e2002=_0x3e2002-0x0;var _0x389cc7=_0x24b3[_0x3e2002];return _0x389cc7;};'use strict';var rp=require(_0x324b('0x0'));var url=require(_0x324b('0x1'));var logger=require(_0x324b('0x2'))('agi');module[_0x324b('0x3')]=function(_0x5691ab,_0x49ce20){var _0x51f113={'method':_0x324b('0x4'),'uri':url[_0x324b('0x5')](_0x49ce20['ndauth_url'],_0x324b('0x6')),'form':{'grant_type':'password','username':_0x49ce20['username'],'password':_0x49ce20['password']},'json':!![]};return rp(_0x51f113)[_0x324b('0x7')](function(_0x39d42c){var _0x7da7d0={'method':'POST','uri':url['resolve'](_0x49ce20['ndassistant_url'],_0x324b('0x8')),'body':{'type':_0x49ce20['ndaactivity_type']||_0x324b('0x9'),'channelId':_0x324b('0xa'),'conversation':{'id':_0x5691ab[_0x324b('0xb')]},'from':{'id':_0x5691ab[_0x324b('0xc')],'name':_0x5691ab[_0x324b('0xd')]},'recipient':{'id':_0x5691ab[_0x324b('0xe')],'name':_0x5691ab[_0x324b('0xf')]},'text':_0x49ce20[_0x324b('0x10')],'channelData':{}},'headers':{'Authorization':_0x324b('0x11')+_0x39d42c[_0x324b('0x12')]},'json':!![]};if(_0x49ce20['project']){_0x7da7d0[_0x324b('0x13')][_0x324b('0x14')][_0x324b('0x15')]=_0x49ce20[_0x324b('0x16')];}if(_0x49ce20[_0x324b('0x17')]=='1'){_0x7da7d0[_0x324b('0x13')][_0x324b('0x14')][_0x324b('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x324b('0x19')};}if(_0x49ce20[_0x324b('0x1a')]){_0x7da7d0['body'][_0x324b('0x14')]['CustomAction']=_0x49ce20[_0x324b('0x1a')];if(_0x49ce20[_0x324b('0x1b')]){_0x7da7d0['body'][_0x324b('0x14')][_0x324b('0x1c')]=_0x49ce20[_0x324b('0x1b')];}}logger[_0x324b('0x1d')](JSON[_0x324b('0x1e')](_0x7da7d0));return rp(_0x7da7d0);});};
\ No newline at end of file
index 45ff653..50bdeca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63b0=['exports'];(function(_0x1e6486,_0x566f39){var _0x185011=function(_0x2c6f3c){while(--_0x2c6f3c){_0x1e6486['push'](_0x1e6486['shift']());}};_0x185011(++_0x566f39);}(_0x63b0,0x102));var _0x063b=function(_0x99cbb5,_0x11266c){_0x99cbb5=_0x99cbb5-0x0;var _0x2e3f8f=_0x63b0[_0x99cbb5];return _0x2e3f8f;};'use strict';var asr=require('./lib/api');module[_0x063b('0x0')]=function(_0x901d02,_0x4ed2dd,_0x5960c4,_0x1d198d){return asr(_0x901d02,_0x4ed2dd,_0x5960c4,_0x1d198d);};
\ No newline at end of file
+var _0x8183=['./lib/api'];(function(_0x1475a6,_0x56628c){var _0x3c0d07=function(_0xf4e6f3){while(--_0xf4e6f3){_0x1475a6['push'](_0x1475a6['shift']());}};_0x3c0d07(++_0x56628c);}(_0x8183,0x98));var _0x3818=function(_0x48d6a3,_0x37c848){_0x48d6a3=_0x48d6a3-0x0;var _0x38bfa0=_0x8183[_0x48d6a3];return _0x38bfa0;};'use strict';var asr=require(_0x3818('0x0'));module['exports']=function(_0x2d415d,_0x5d1176,_0x58eca8,_0x4cd4a8){return asr(_0x2d415d,_0x5d1176,_0x58eca8,_0x4cd4a8);};
\ No newline at end of file
index 42f25de..b7a0ff0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a7d=['Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','open','message','lodash','moment','crypto','../../../../../../config/logger','agi','exports','info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood'];(function(_0x50bd42,_0x2564d0){var _0x3faa93=function(_0x3c455a){while(--_0x3c455a){_0x50bd42['push'](_0x50bd42['shift']());}};_0x3faa93(++_0x2564d0);}(_0x2a7d,0x141));var _0xd2a7=function(_0x53179e,_0x93b545){_0x53179e=_0x53179e-0x0;var _0x20ccd1=_0x2a7d[_0x53179e];return _0x20ccd1;};'use strict';var BPromise=require('bluebird');var _=require(_0xd2a7('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xd2a7('0x1'));var crypto=require(_0xd2a7('0x2'));var logger=require(_0xd2a7('0x3'))(_0xd2a7('0x4'));module[_0xd2a7('0x5')]=function(_0x586f34,_0x4503c6,_0x8a25ca,_0x554945){return new BPromise(function(_0x1325cb,_0x340a1c){logger[_0xd2a7('0x6')]('Tilde\x20URI',_0x554945||_0xd2a7('0x7'));var _0x39433d=new WebSocket(_0x554945||_0xd2a7('0x7'),{'perMessageDeflate':![]});var _0x2760d6='';var _0x146001='0';var _0xfb30ae='1';var _0x3ef5b8=_0xd2a7('0x8');function _0x5ecc20(_0x26e6b9){var _0x4112d9=crypto[_0xd2a7('0x9')](_0xd2a7('0xa'));_0x4112d9[_0xd2a7('0xb')](_0x26e6b9);return _0x4112d9[_0xd2a7('0xc')]('hex');}function _0x531296(){try{logger['info'](_0xd2a7('0xd'));var _0x1e6801=moment()['unix']();var _0x25f661=_0x5ecc20(_0x1e6801+_0x4503c6+_0x8a25ca);_0x39433d[_0xd2a7('0xe')](JSON[_0xd2a7('0xf')]({'appID':_0x4503c6,'timestamp':_0x1e6801,'appKey':_0x25f661}));var _0x54277f=fs[_0xd2a7('0x10')](_0x586f34);_0x54277f['on'](_0xd2a7('0x11'),function(_0x56c55f){_0x39433d['send'](_0x56c55f);});_0x54277f['on'](_0xd2a7('0x12'),function(){_0x39433d[_0xd2a7('0xe')]('EOS');});}catch(_0x1f816f){logger[_0xd2a7('0x13')](_0xd2a7('0x14'),JSON[_0xd2a7('0xf')](_0x1f816f));_0x39433d[_0xd2a7('0x15')]();}}function _0x123dcb(_0x42d660){try{if(_0x42d660){var _0x409db2=JSON[_0xd2a7('0x16')](_0x42d660);switch(_0x409db2[_0xd2a7('0x17')]){case 0x0:if(_0x409db2[_0xd2a7('0x18')]){if(_0x409db2[_0xd2a7('0x18')][_0xd2a7('0x19')]){logger[_0xd2a7('0x6')](_0xd2a7('0x1a'),JSON[_0xd2a7('0xf')](_0x409db2[_0xd2a7('0x18')]['hypotheses']));_0x2760d6=_0x409db2[_0xd2a7('0x18')][_0xd2a7('0x1b')][0x0][_0xd2a7('0x1c')];_0x146001=_0x409db2['result'][_0xd2a7('0x1b')][0x0][_0xd2a7('0x1d')];_0xfb30ae='0';_0x3ef5b8=_0xd2a7('0x1e');_0x39433d['terminate']();}}break;case 0x1:logger[_0xd2a7('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0xfb30ae='1';_0x3ef5b8=_0xd2a7('0x8');break;case 0x2:logger[_0xd2a7('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0xfb30ae='2';_0x3ef5b8=_0xd2a7('0x1f');break;case 0x9:logger[_0xd2a7('0x6')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0xfb30ae='9';_0x3ef5b8='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0xd2a7('0x6')](_0xd2a7('0x20'));_0xfb30ae='10';_0x3ef5b8=_0xd2a7('0x20');break;case 0xb:logger['info']('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0xfb30ae='11';_0x3ef5b8=_0xd2a7('0x21');}}}catch(_0x15a6f8){logger[_0xd2a7('0x13')](_0xd2a7('0x22'),JSON[_0xd2a7('0xf')](_0x15a6f8));_0x39433d[_0xd2a7('0x15')]();}}function _0x52acfe(){logger[_0xd2a7('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x1325cb({'transcript':_0x2760d6,'confidence':_0x146001,'status':_0xfb30ae,'status_message':_0x3ef5b8});}function _0x52d41f(_0x1fe30d){logger[_0xd2a7('0x13')](_0xd2a7('0x23'));if(!_[_0xd2a7('0x24')](_0x1fe30d)){logger['error'](_['isObject'](_0x1fe30d)?JSON[_0xd2a7('0xf')](_0x1fe30d):_0x1fe30d);}}_0x39433d['on'](_0xd2a7('0x25'),_0x531296);_0x39433d['on'](_0xd2a7('0x26'),_0x123dcb);_0x39433d['on'](_0xd2a7('0x12'),_0x52acfe);_0x39433d['on'](_0xd2a7('0x13'),_0x52d41f);});};
\ No newline at end of file
+var _0xc6a7=['result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','close','bluebird','moment','crypto','../../../../../../config/logger','agi','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','EOS','error','terminate','status'];(function(_0x427cb4,_0x3c154b){var _0x43f775=function(_0x213c11){while(--_0x213c11){_0x427cb4['push'](_0x427cb4['shift']());}};_0x43f775(++_0x3c154b);}(_0xc6a7,0x1da));var _0x7c6a=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xc6a7[_0x87b0ff];return _0x3bc0b2;};'use strict';var BPromise=require(_0x7c6a('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x7c6a('0x1'));var crypto=require(_0x7c6a('0x2'));var logger=require(_0x7c6a('0x3'))(_0x7c6a('0x4'));module['exports']=function(_0x390bc7,_0x4c5aae,_0xf96341,_0x39483e){return new BPromise(function(_0xa8e2cc,_0x48ef1d){logger[_0x7c6a('0x5')](_0x7c6a('0x6'),_0x39483e||_0x7c6a('0x7'));var _0x14d1f6=new WebSocket(_0x39483e||_0x7c6a('0x7'),{'perMessageDeflate':![]});var _0x105d47='';var _0x24c1a6='0';var _0x3ee79d='1';var _0x4b2862='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x5e06fa(_0x2f56c9){var _0x4f5d2a=crypto[_0x7c6a('0x8')](_0x7c6a('0x9'));_0x4f5d2a['update'](_0x2f56c9);return _0x4f5d2a['digest']('hex');}function _0x5676df(){try{logger[_0x7c6a('0x5')](_0x7c6a('0xa'));var _0x331a50=moment()[_0x7c6a('0xb')]();var _0x5c032f=_0x5e06fa(_0x331a50+_0x4c5aae+_0xf96341);_0x14d1f6[_0x7c6a('0xc')](JSON[_0x7c6a('0xd')]({'appID':_0x4c5aae,'timestamp':_0x331a50,'appKey':_0x5c032f}));var _0x5297cb=fs[_0x7c6a('0xe')](_0x390bc7);_0x5297cb['on'](_0x7c6a('0xf'),function(_0x5333e5){_0x14d1f6['send'](_0x5333e5);});_0x5297cb['on']('close',function(){_0x14d1f6['send'](_0x7c6a('0x10'));});}catch(_0x2c56ce){logger[_0x7c6a('0x11')]('Tilde\x20ASR\x20send\x20error',JSON[_0x7c6a('0xd')](_0x2c56ce));_0x14d1f6[_0x7c6a('0x12')]();}}function _0x3d87ef(_0x784ad){try{if(_0x784ad){var _0xb56855=JSON['parse'](_0x784ad);switch(_0xb56855[_0x7c6a('0x13')]){case 0x0:if(_0xb56855[_0x7c6a('0x14')]){if(_0xb56855[_0x7c6a('0x14')][_0x7c6a('0x15')]){logger[_0x7c6a('0x5')](_0x7c6a('0x16'),JSON[_0x7c6a('0xd')](_0xb56855[_0x7c6a('0x14')][_0x7c6a('0x17')]));_0x105d47=_0xb56855[_0x7c6a('0x14')][_0x7c6a('0x17')][0x0][_0x7c6a('0x18')];_0x24c1a6=_0xb56855[_0x7c6a('0x14')]['hypotheses'][0x0][_0x7c6a('0x19')];_0x3ee79d='0';_0x4b2862=_0x7c6a('0x1a');_0x14d1f6[_0x7c6a('0x12')]();}}break;case 0x1:logger[_0x7c6a('0x5')](_0x7c6a('0x1b'));_0x3ee79d='1';_0x4b2862=_0x7c6a('0x1b');break;case 0x2:logger[_0x7c6a('0x5')](_0x7c6a('0x1c'));_0x3ee79d='2';_0x4b2862=_0x7c6a('0x1c');break;case 0x9:logger[_0x7c6a('0x5')](_0x7c6a('0x1d'));_0x3ee79d='9';_0x4b2862='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x7c6a('0x5')](_0x7c6a('0x1e'));_0x3ee79d='10';_0x4b2862=_0x7c6a('0x1e');break;case 0xb:logger[_0x7c6a('0x5')](_0x7c6a('0x1f'));_0x3ee79d='11';_0x4b2862=_0x7c6a('0x1f');}}}catch(_0x1ca2ef){logger[_0x7c6a('0x11')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x7c6a('0xd')](_0x1ca2ef));_0x14d1f6[_0x7c6a('0x12')]();}}function _0x530a3b(){logger[_0x7c6a('0x5')](_0x7c6a('0x20'));_0xa8e2cc({'transcript':_0x105d47,'confidence':_0x24c1a6,'status':_0x3ee79d,'status_message':_0x4b2862});}function _0x1f3451(_0x4146a9){logger['error']('Error\x20Tilde\x20ASR\x20socket');if(!_[_0x7c6a('0x21')](_0x4146a9)){logger['error'](_[_0x7c6a('0x22')](_0x4146a9)?JSON[_0x7c6a('0xd')](_0x4146a9):_0x4146a9);}}_0x14d1f6['on'](_0x7c6a('0x23'),_0x5676df);_0x14d1f6['on'](_0x7c6a('0x24'),_0x3d87ef);_0x14d1f6['on'](_0x7c6a('0x25'),_0x530a3b);_0x14d1f6['on'](_0x7c6a('0x11'),_0x1f3451);});};
\ No newline at end of file
index aa2c537..239fb5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f32=['exports'];(function(_0x4586da,_0x12c862){var _0x14a825=function(_0x2862f3){while(--_0x2862f3){_0x4586da['push'](_0x4586da['shift']());}};_0x14a825(++_0x12c862);}(_0x2f32,0x13f));var _0x22f3=function(_0x455cc2,_0x5bf423){_0x455cc2=_0x455cc2-0x0;var _0x7403f9=_0x2f32[_0x455cc2];return _0x7403f9;};var asr=require('./asr');module[_0x22f3('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xdeac=['exports','./asr'];(function(_0xe86217,_0xbdf22f){var _0x10a94f=function(_0x2fcb68){while(--_0x2fcb68){_0xe86217['push'](_0xe86217['shift']());}};_0x10a94f(++_0xbdf22f);}(_0xdeac,0x155));var _0xcdea=function(_0x48401,_0x428f78){_0x48401=_0x48401-0x0;var _0x54834=_0xdeac[_0x48401];return _0x54834;};var asr=require(_0xcdea('0x0'));module[_0xcdea('0x1')]={'asr':asr};
\ No newline at end of file
index 01be057..d5558a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','./channel','127.0.0.1','call','error','E_AGI_ARGUMENT_PORT','listen','listening','emit','connection'];(function(_0x1435d0,_0x90fded){var _0x53b16f=function(_0x3de81d){while(--_0x3de81d){_0x1435d0['push'](_0x1435d0['shift']());}};_0x53b16f(++_0x90fded);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var util=require(_0x0d8b('0x0'));var net=require(_0x0d8b('0x1'));var EventEmitter=require('events')['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x0d8b('0x2'));var AGIServer=function(_0x5b9b89,_0x43bca1,_0x364286){var _0x8196ed=this;var _0x577834=null;var _0x5e15e6=0x0;if(!_0x5b9b89)_0x5b9b89=0x11dd;if(!_0x43bca1)_0x43bca1=_0x0d8b('0x3');EventEmitter[_0x0d8b('0x4')](_0x8196ed);function _0x39f43a(){if(!_0x5b9b89){_0x8196ed['emit'](_0x0d8b('0x5'),new AGIError(_0x0d8b('0x6')));return![];}_0x577834=net['createServer']();_0x577834[_0x0d8b('0x7')](_0x5b9b89,_0x43bca1);_0x577834['on'](_0x0d8b('0x8'),function(){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x8'));});_0x577834['on'](_0x0d8b('0xa'),function(_0x1cac62){_0x577834[_0x0d8b('0xb')](function(_0x28f87c,_0x48fa16){if(_0x28f87c){_0x8196ed[_0x0d8b('0x9')]('error',new AGIError(_0x0d8b('0xc'),_0x28f87c));}else if(_0x364286&&_0x364286<0x0){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x5'),new AGIError(_0x0d8b('0xd')));_0x1cac62[_0x0d8b('0xe')]();}else if(_0x364286&&_0x364286>0x0&&_0x364286<_0x48fa16){_0x5e15e6+=0x1;_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x5'),new AGIError(_0x0d8b('0xf'),_0x5e15e6));_0x1cac62[_0x0d8b('0xe')]();}else{var _0x2ce75e=new AGIChannel(_0x1cac62);_0x2ce75e['on'](_0x0d8b('0x10'),function(){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0xa'),_0x2ce75e);});}});});_0x577834['on'](_0x0d8b('0x5'),function(_0x4f6f21){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x5'),new AGIError(_0x0d8b('0xc'),_0x4f6f21[_0x0d8b('0x11')]));});_0x577834['on'](_0x0d8b('0x12'),function(){_0x8196ed['emit'](_0x0d8b('0x12'),new AGIError(_0x0d8b('0x13')));});}process[_0x0d8b('0x14')](function(){_0x39f43a();});};util[_0x0d8b('0x15')](AGIServer,EventEmitter);module[_0x0d8b('0x16')]=function(_0x18dd2d,_0x264b39,_0xa3612a){return new AGIServer(_0x18dd2d,_0x264b39,_0xa3612a);};
\ No newline at end of file
+var _0xa9e0=['ready','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','inherits','exports','util','net','events','./channel','call','emit','createServer','listening','connection','getConnections','error','E_AGI_SERVER_VOICE_DISABLED','destroy'];(function(_0x3f25b2,_0x412bd4){var _0xd8caeb=function(_0x52d252){while(--_0x52d252){_0x3f25b2['push'](_0x3f25b2['shift']());}};_0xd8caeb(++_0x412bd4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'use strict';var util=require(_0x0a9e('0x0'));var net=require(_0x0a9e('0x1'));var EventEmitter=require(_0x0a9e('0x2'))['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x0a9e('0x3'));var AGIServer=function(_0x4ce2f1,_0x333808,_0x432180){var _0x2ab90b=this;var _0x991246=null;var _0x981158=0x0;if(!_0x4ce2f1)_0x4ce2f1=0x11dd;if(!_0x333808)_0x333808='127.0.0.1';EventEmitter[_0x0a9e('0x4')](_0x2ab90b);function _0x441e3a(){if(!_0x4ce2f1){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x991246=net[_0x0a9e('0x6')]();_0x991246['listen'](_0x4ce2f1,_0x333808);_0x991246['on']('listening',function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x7'));});_0x991246['on'](_0x0a9e('0x8'),function(_0x3ab53f){_0x991246[_0x0a9e('0x9')](function(_0xbd1168,_0x4a4c56){if(_0xbd1168){_0x2ab90b['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0xbd1168));}else if(_0x432180&&_0x432180<0x0){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError(_0x0a9e('0xb')));_0x3ab53f[_0x0a9e('0xc')]();}else if(_0x432180&&_0x432180>0x0&&_0x432180<_0x4a4c56){_0x981158+=0x1;_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x981158));_0x3ab53f[_0x0a9e('0xc')]();}else{var _0x239b12=new AGIChannel(_0x3ab53f);_0x239b12['on'](_0x0a9e('0xd'),function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x8'),_0x239b12);});}});});_0x991246['on'](_0x0a9e('0xa'),function(_0x52a03d){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError(_0x0a9e('0xe'),_0x52a03d['code']));});_0x991246['on'](_0x0a9e('0xf'),function(){_0x2ab90b[_0x0a9e('0x5')]('close',new AGIError(_0x0a9e('0x10')));});}process['nextTick'](function(){_0x441e3a();});};util[_0x0a9e('0x11')](AGIServer,EventEmitter);module[_0x0a9e('0x12')]=function(_0x106033,_0x205fd6,_0x31b1ca){return new AGIServer(_0x106033,_0x205fd6,_0x31b1ca);};
\ No newline at end of file
index 7f3f3ff..d96623d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0565=['replace','query:\x20%s','getQueryOdbc','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20selected','getUser','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','Trying\x20DialogflowV2:\x20%s','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','bot','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','awspolly','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','no\x20key\x20configured','%s/recordings/%s','beep','NOBEEP','recordFile','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','intKey','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','extension','gotoif','condition','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','menu','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','toLowerCase','macro','gosub','position','Executed\x20command\x20%s\x20%s','QUEUE','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','Response:','inspect','200','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','account_id','getMailAccount','Smtp','no\x20mail\x20account\x20found','email','subject','sendMail\x20message','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','vswitch','join','exports','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawHeaders','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariable','then','getVoiceQueue','getVoiceQueueById','name','catch','getSquareProject','getSquareProjectById','getSquareOdbcById','dsn','prototype','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','format','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','info','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','createSquareRecording','callerid','calleridname','context','priority','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agent','agentLogout','internal','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','exec','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','PUT','toUpperCase','body','rawBody','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appsecret','clear','clone','hasOwnProperty','replaceAllVariables','isPlainObject','recursiveNodeIndex','length','isString','saveRestApiResult','isArray','%s.%s','setVariable','replaceObjectAllVariables','split','replaceAll','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','mrcpsynth','noop','no\x20text\x20configured','MRCPSynth','result','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','getSquareOdbc','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query'];(function(_0xea35d1,_0x302471){var _0x1d7a7c=function(_0x1bc101){while(--_0x1bc101){_0xea35d1['push'](_0xea35d1['shift']());}};_0x1d7a7c(++_0x302471);}(_0x0565,0xf2));var _0x5056=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x0565[_0x1beef3];return _0x5af964;};'use strict';var fs=require('fs');var util=require(_0x5056('0x0'));var _=require(_0x5056('0x1'));var sh=require(_0x5056('0x2'));var odbc=require(_0x5056('0x3'))();var rs=require(_0x5056('0x4'));var moment=require(_0x5056('0x5'));var Mustache=require(_0x5056('0x6'));var rp=require(_0x5056('0x7'));var logger=require(_0x5056('0x8'))(_0x5056('0x9'));var config=require('../../config/environment');var shared=require(_0x5056('0xa'));var scripts=require(_0x5056('0xb'));var FILES_PATH=_0x5056('0xc');var recursiveMapAttributes=[_0x5056('0xd'),'rawBody'];var verticesWithRetry=['menu',_0x5056('0xe'),_0x5056('0xf')];var AGIVertices=function(_0x417065,_0x2e6f18,_0x2144a9){this[_0x5056('0x10')]=_0x417065;this[_0x5056('0x11')]=_0x2e6f18;this[_0x5056('0x12')]=_0x2144a9;};AGIVertices['prototype'][_0x5056('0x13')]=function(_0xf04ea3,_0x3ba611){this['rpc']['getVariableById'](_0xf04ea3)[_0x5056('0x14')](function(_0x504a47){_0x3ba611(null,_0x504a47?_0x504a47['name']:![]);})['catch'](function(_0x2d44fb){_0x3ba611(_0x2d44fb);});};AGIVertices['prototype'][_0x5056('0x15')]=function(_0x26edc1,_0x7af76b){this['rpc'][_0x5056('0x16')](_0x26edc1)[_0x5056('0x14')](function(_0x15f52d){_0x7af76b(null,_0x15f52d?_0x15f52d[_0x5056('0x17')]:![]);})[_0x5056('0x18')](function(_0x6a044a){_0x7af76b(_0x6a044a);});};AGIVertices['prototype'][_0x5056('0x19')]=function(_0x560d1e,_0x43db77){this[_0x5056('0x11')][_0x5056('0x1a')](_0x560d1e)[_0x5056('0x14')](function(_0x4056ce){_0x43db77(null,_0x4056ce?_0x4056ce['name']:![]);})[_0x5056('0x18')](function(_0x56537e){_0x43db77(_0x56537e);});};AGIVertices['prototype']['getSquareOdbc']=function(_0x20776c,_0x517bf3){this[_0x5056('0x11')][_0x5056('0x1b')](_0x20776c)[_0x5056('0x14')](function(_0xf04e08){_0x517bf3(null,_0xf04e08?_0xf04e08[_0x5056('0x1c')]:![]);})['catch'](function(_0x13b363){_0x517bf3(_0x13b363);});};AGIVertices[_0x5056('0x1d')]['getUser']=function(_0x271efc,_0x1bccef){this[_0x5056('0x11')]['getUserById'](_0x271efc)[_0x5056('0x14')](function(_0x26a3c2){_0x1bccef(null,_0x26a3c2?_0x26a3c2['name']:![]);})['catch'](function(_0x29e166){_0x1bccef(_0x29e166);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x1e')]=function(_0x37f7b5,_0x537b07){this[_0x5056('0x11')][_0x5056('0x1f')](_0x37f7b5)['then'](function(_0x2c4290){_0x537b07(null,_0x2c4290?_0x2c4290['name']:![]);})[_0x5056('0x18')](function(_0x39d539){_0x537b07(_0x39d539);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x20')]=function(_0x45f600,_0x50f2a8){var _0x18b7cf=this;this[_0x5056('0x11')][_0x5056('0x21')](_0x45f600)[_0x5056('0x14')](function(_0x53e6db){_0x50f2a8(null,_0x53e6db?_0x18b7cf[_0x5056('0x22')](_0x53e6db['save_name']):![]);})[_0x5056('0x18')](function(_0x49fe67){_0x50f2a8(_0x49fe67);});};AGIVertices['prototype']['getMailAccount']=function(_0x113be0,_0x252f75){this['rpc'][_0x5056('0x23')](_0x113be0)[_0x5056('0x14')](function(_0x9e2986){_0x252f75(null,_0x9e2986?_0x9e2986:![]);})[_0x5056('0x18')](function(_0xec2a33){_0x252f75(_0xec2a33);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x24')]=function(_0x3f292e,_0xd1aa24,_0x2f66d3){this[_0x5056('0x12')]['sendMailMessage'](_0x3f292e,_0xd1aa24)['then'](function(){_0x2f66d3(null);})[_0x5056('0x18')](function(_0x2d57d4){_0x2f66d3(_0x2d57d4);});};AGIVertices['prototype'][_0x5056('0x25')]=function(_0x1f94e5,_0x54cf9c){this[_0x5056('0x11')][_0x5056('0x26')](_0x1f94e5)[_0x5056('0x14')](function(_0xa31596){if(_0xa31596){if(_0xa31596[_0x5056('0x27')]){_0x54cf9c(null,[_0xa31596[_0x5056('0x28')]]);}else{_0x54cf9c(null,_[_0x5056('0x29')](_0xa31596[_0x5056('0x2a')],_0x5056('0x28')));}}else{_0x54cf9c(null,![]);}})[_0x5056('0x18')](function(_0x199129){_0x54cf9c(_0x199129);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x22')]=function(_0x3d7d78){return util[_0x5056('0x2b')]('%s/sounds/converted/%s',FILES_PATH,_0x3d7d78);};AGIVertices[_0x5056('0x1d')]['getQueryOdbc']=function(_0xc49a60,_0x46ffe1,_0x432ff7){odbc[_0x5056('0x2c')](_0xc49a60,function(_0x5b6441){if(_0x5b6441){logger[_0x5056('0x2d')](_0x5056('0x2e'),_0x5b6441);_0x432ff7(_0x5b6441);}else{logger['info'](_0x5056('0x2f'));odbc['query'](_0x46ffe1,function(_0x3006ca,_0x349318){if(_0x3006ca){logger[_0x5056('0x30')]('Error\x20executing\x20query\x20%s',_0x46ffe1);_0x432ff7(_0x3006ca);}else{logger[_0x5056('0x30')](_0x5056('0x31'),_0x46ffe1);odbc[_0x5056('0x32')](function(_0x4424f2){if(_0x4424f2){logger[_0x5056('0x2d')](_0x5056('0x33'),_0x4424f2);}_0x432ff7(null,_0x349318);});}});}});};AGIVertices[_0x5056('0x1d')][_0x5056('0x34')]=function(_0x15553e,_0x430db0){this[_0x5056('0x11')][_0x5056('0x35')](_0x15553e)[_0x5056('0x14')](function(_0x1e28f4){_0x430db0(null,_0x1e28f4?_0x1e28f4:![]);})[_0x5056('0x18')](function(_0x351ebd){_0x430db0(_0x351ebd);});};AGIVertices['prototype']['createSmsMessage']=function(_0x25f3fc,_0xc89e71){this[_0x5056('0x11')][_0x5056('0x36')](_0x25f3fc)[_0x5056('0x14')](function(_0x1e2693){_0xc89e71(null,_0x1e2693);})[_0x5056('0x18')](function(_0x2bf472){_0xc89e71(_0x2bf472);});};AGIVertices['prototype']['createSquareDetailsReport']=function(_0x68a385,_0x1b3a5e,_0x21aa8a){this['rpc'][_0x5056('0x37')]({'uniqueid':this['channel'][_0x5056('0x38')],'node':_0x68a385[_0x5056('0x39')],'application':_0x68a385[_0x5056('0x3a')],'data':_0x1b3a5e||null,'project_name':this[_0x5056('0x10')][_0x5056('0x3b')],'callerid':this[_0x5056('0x10')]['callerid']})[_0x5056('0x14')](function(_0x2ab162){if(_0x21aa8a){_0x21aa8a(null,_0x2ab162);}})[_0x5056('0x18')](function(_0x5e1677){if(_0x21aa8a){_0x21aa8a(_0x5e1677);}});};AGIVertices['prototype']['createSquareRecording']=function(_0x4e1641,_0x4553eb,_0x5a9181,_0x220816){this[_0x5056('0x11')][_0x5056('0x3c')]({'uniqueid':this['channel']['uniqueid'],'callerid':this[_0x5056('0x10')][_0x5056('0x3d')],'calleridname':this[_0x5056('0x10')][_0x5056('0x3e')],'context':this[_0x5056('0x10')][_0x5056('0x3f')],'extension':this[_0x5056('0x10')]['extension'],'priority':this['channel'][_0x5056('0x40')],'accountcode':this[_0x5056('0x10')]['accountcode'],'dnid':this[_0x5056('0x10')][_0x5056('0x41')],'projectName':this['channel']['arg_1'],'saveName':_0x4553eb,'filename':_0x4e1641[_0x5056('0x42')]||_0x4553eb,'savePath':_0x5a9181})[_0x5056('0x14')](function(_0x50aa03){_0x220816(null,_0x50aa03);})['catch'](function(_0x460c5c){_0x220816(_0x460c5c);});};AGIVertices[_0x5056('0x1d')]['createSquareMessage']=function(_0x5c3f73,_0x181be7,_0x931656,_0x96eaf1,_0x189a76){this[_0x5056('0x11')][_0x5056('0x43')]({'uniqueid':this[_0x5056('0x10')][_0x5056('0x38')],'body':_0x5c3f73,'direction':_0x181be7,'providerName':_0x931656,'providerResponse':_0x96eaf1})[_0x5056('0x14')](function(_0x162217){if(_0x189a76){_0x189a76(null,_0x162217);}})[_0x5056('0x18')](function(_0x2a7e05){if(_0x189a76){_0x189a76(_0x2a7e05);}});};AGIVertices[_0x5056('0x1d')][_0x5056('0x44')]=function(_0x34e86e,_0x4bf758){this['rpc'][_0x5056('0x44')]({'firstName':_[_0x5056('0x45')](_0x34e86e[_0x5056('0x17')])||_[_0x5056('0x46')](_0x34e86e[_0x5056('0x17')])?_0x5056('0x47')+Math['random']():_0x34e86e[_0x5056('0x17')],'lastName':_[_0x5056('0x45')](_0x34e86e[_0x5056('0x48')])||_[_0x5056('0x46')](_0x34e86e[_0x5056('0x48')])?null:_0x34e86e[_0x5056('0x48')],'phone':_0x34e86e[_0x5056('0x49')],'ListId':_0x34e86e[_0x5056('0x4a')],'scheduledat':_0x34e86e[_0x5056('0x4b')],'callbackUniqueid':this[_0x5056('0x10')][_0x5056('0x38')],'tags':_0x5056('0x4c'),'description':_0x5056('0x4d')+_0x34e86e['scheduledAt'][_0x5056('0x4e')](),'priority':_0x34e86e[_0x5056('0x4f')]})[_0x5056('0x14')](function(_0x5363fd){_0x4bf758(null,_0x5363fd);})[_0x5056('0x18')](function(_0x93c032){_0x4bf758(_0x93c032);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x50')]=function(_0x582e02,_0x51a2e8){this['rpc'][_0x5056('0x51')](_0x582e02)['then'](function(_0x1934e1){_0x51a2e8(null,_0x1934e1?_0x1934e1[_0x5056('0x17')]:![]);})[_0x5056('0x18')](function(_0x352cd8){_0x51a2e8(_0x352cd8);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x52')]=function(_0x5330b4,_0x48568b,_0x25da13){var _0x333d22={'role':'agent'};_0x333d22[_0x5330b4]=this[_0x5056('0x10')][_0x5056('0x3d')];this[_0x5056('0x11')][_0x5056('0x52')](_0x333d22,_0x48568b,this[_0x5056('0x10')]['uniqueid'])[_0x5056('0x14')](function(_0x318f96){_0x25da13(null,_['isNil'](_0x318f96)?![]:!![]);})[_0x5056('0x18')](function(_0x43efb7){logger[_0x5056('0x2d')](_0x43efb7);_0x25da13(null,![]);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x53')]=function(_0x1df38b,_0x27ec10){var _0xc5038b={'role':_0x5056('0x54')};_0xc5038b[_0x1df38b]=this[_0x5056('0x10')][_0x5056('0x3d')];this[_0x5056('0x11')][_0x5056('0x53')](_0xc5038b)['then'](function(_0x118733){_0x27ec10(null,_[_0x5056('0x46')](_0x118733)?![]:!![]);})[_0x5056('0x18')](function(_0x47203d){logger[_0x5056('0x2d')](_0x47203d);_0x27ec10(null,![]);});};AGIVertices[_0x5056('0x1d')]['agentLogout']=function(_0x1159fd,_0x4e343e){var _0x1c3684={'role':_0x5056('0x54')};_0x1c3684[_0x1159fd]=this['channel']['callerid'];this[_0x5056('0x11')][_0x5056('0x55')](_0x1c3684)[_0x5056('0x14')](function(_0x38fbcf){_0x4e343e(null,_['isNil'](_0x38fbcf)?![]:!![]);})['catch'](function(_0x25fe6f){logger[_0x5056('0x2d')](_0x25fe6f);_0x4e343e(null,![]);});};AGIVertices[_0x5056('0x1d')]['agentLogin']=function(_0x3b24d1,_0x5b022f){var _0x57cb62={'role':_0x5056('0x54')};_0x57cb62[_0x3b24d1]=this[_0x5056('0x10')]['callerid'];var _0x2d0bbf=_0x3b24d1!=_0x5056('0x56')?util[_0x5056('0x2b')](_0x5056('0x57'),_0x5056('0x58'),this[_0x5056('0x10')][_0x5056('0x3d')]):undefined;this['rpc'][_0x5056('0x59')](_0x57cb62,_0x2d0bbf)[_0x5056('0x14')](function(_0x2679a8){_0x5b022f(null,_['isNil'](_0x2679a8)?![]:!![]);})[_0x5056('0x18')](function(_0x4ea1c5){logger[_0x5056('0x2d')](_0x4ea1c5);_0x5b022f(null,![]);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x5a')]=function(_0x45eac9,_0x5639a1){sh[_0x5056('0x5b')](_[_0x5056('0x5c')](_0x45eac9),function(_0x50b7f2,_0x244186){var _0x5afdf5=_0x244186['replace'](/(\r\n|\n|\r)/gm,'');_0x5639a1(null,_0x5afdf5);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x5d')]=function(_0x1ca623,_0x32bce8){scripts[_0x5056('0x5d')](_0x1ca623[_0x5056('0x5e')],_0x1ca623[_0x5056('0x5f')]||_0x5056('0x60'),_0x1ca623[_0x5056('0x60')],_0x1ca623[_0x5056('0x61')]||_0x5056('0x62'),_0x1ca623[_0x5056('0x63')]||'MALE',_0x1ca623[_0x5056('0x64')]||'MP3')[_0x5056('0x14')](function(_0x24069a){_0x32bce8(null,_0x24069a);})['catch'](function(_0x35a892){_0x32bce8(_0x35a892);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x65')]=function(_0x113f44,_0x3a83aa){scripts[_0x5056('0x65')](_0x113f44[_0x5056('0x60')],_0x113f44[_0x5056('0x66')]||'en',0x1)['then'](function(_0x226105){_0x3a83aa(null,_0x226105);})[_0x5056('0x18')](function(_0x32d5f1){_0x3a83aa(_0x32d5f1);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x67')]=function(_0x4e6045,_0x3bf1ae){var _0x4db5a6={'uri':_0x4e6045[_0x5056('0x68')],'method':_0x4e6045[_0x5056('0x69')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x4e6045[_0x5056('0x6a')])===_0x5056('0x6b')&&parseInt(_0x4e6045[_0x5056('0x6a')])>=0x1?parseInt(_0x4e6045[_0x5056('0x6a')])*0x3e8:0x5*0x3e8};if(_[_0x5056('0x6c')](['POST',_0x5056('0x6d')],_0x4db5a6[_0x5056('0x69')][_0x5056('0x6e')]())){try{_0x4db5a6[_0x5056('0x6f')]=_0x4e6045[_0x5056('0x70')]?JSON[_0x5056('0x71')](_0x4e6045[_0x5056('0x70')]):{};}catch(_0x5c72aa){logger['error']('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5c72aa);}}try{_0x4db5a6[_0x5056('0x72')]=_0x4e6045['rawHeaders']?JSON[_0x5056('0x71')](_0x4e6045[_0x5056('0xd')]):{};}catch(_0x41d04f){logger['error'](_0x5056('0x73'),_0x41d04f);}if(_0x4e6045['computedVariables']){try{var _0x895e06=require(_0x4e6045[_0x5056('0x74')])[_0x5056('0x75')](this,_0x4db5a6);_0x4db5a6['uri']=Mustache[_0x5056('0x76')](_0x4e6045['url'],_0x895e06,{},['$$','$$']);if(_0x4db5a6['headers']){_0x4db5a6[_0x5056('0x72')]=JSON[_0x5056('0x71')](Mustache['render'](JSON[_0x5056('0x77')](_0x4db5a6['headers']),_0x895e06,{},['$$','$$']));}if(_0x4db5a6[_0x5056('0x6f')]){_0x4db5a6[_0x5056('0x6f')]=JSON[_0x5056('0x71')](Mustache[_0x5056('0x76')](JSON[_0x5056('0x77')](_0x4db5a6[_0x5056('0x6f')]),_0x895e06,{},['$$','$$']));}}catch(_0x5748c4){logger[_0x5056('0x2d')](_0x5056('0x78'),_0x5748c4);}}rp(_0x4db5a6)[_0x5056('0x14')](function(_0x18bcf1){var _0x406865={'statusCode':_0x18bcf1[_0x5056('0x79')]||0xc8,'statusMessage':_0x18bcf1['statusMessage']||'OK','headers':_0x18bcf1[_0x5056('0x72')]||{},'body':_0x18bcf1['body']||{}};_0x3bf1ae(null,_0x406865);})[_0x5056('0x18')](function(_0x9138f6){var _0x26ba6a={'statusCode':_0x9138f6[_0x5056('0x79')]||0x1f4,'statusMessage':_0x9138f6[_0x5056('0x7a')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x9138f6[_0x5056('0x7b')][_0x5056('0x72')]||{},'body':_0x9138f6[_0x5056('0x7b')][_0x5056('0x6f')]||{}};_0x3bf1ae(null,_0x26ba6a);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x7c')]=function(_0x87010e,_0x39e2a2){scripts[_0x5056('0x7c')](this[_0x5056('0x10')][_0x5056('0x38')],_0x87010e[_0x5056('0x7d')],_0x87010e[_0x5056('0x60')],_0x87010e[_0x5056('0x7e')]||'en')[_0x5056('0x14')](function(_0x46a227){_0x39e2a2(null,_0x46a227);})[_0x5056('0x18')](function(_0x3a7776){_0x39e2a2(_0x3a7776);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x7f')]=function(_0x17e41e,_0x55b356){scripts[_0x5056('0x7f')](this['channel'][_0x5056('0x38')],_0x17e41e[_0x5056('0x80')],_0x17e41e[_0x5056('0x81')],_0x17e41e[_0x5056('0x82')],_0x17e41e['text'],_0x17e41e[_0x5056('0x83')]||'en')[_0x5056('0x14')](function(_0x1e20a7){_0x55b356(null,_0x1e20a7);})[_0x5056('0x18')](function(_0x9a7d18){_0x55b356(_0x9a7d18);});};AGIVertices['prototype'][_0x5056('0x84')]=function(_0x3991a2,_0x2a7d5e){scripts['sestekNDA'](this[_0x5056('0x10')],_0x3991a2)[_0x5056('0x14')](function(_0x41d42d){_0x2a7d5e(null,_0x41d42d);})[_0x5056('0x18')](function(_0x353892){_0x2a7d5e(_0x353892);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x85')]=function(_0x21759d,_0x31463f){scripts[_0x5056('0x85')](_0x21759d[_0x5056('0x7d')],_0x21759d[_0x5056('0x60')],_0x21759d[_0x5056('0x86')]||_0x5056('0x62'),_0x21759d[_0x5056('0x87')])[_0x5056('0x14')](function(_0x49e4b5){_0x31463f(null,_0x49e4b5);})['catch'](function(_0x46462e){_0x31463f(_0x46462e);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x88')]=function(_0x226d21,_0x2d635d,_0x1891ab){scripts[_0x5056('0x88')](_0x2d635d,_0x226d21[_0x5056('0x7d')],_0x226d21[_0x5056('0x89')]||'en-US',this[_0x5056('0x8a')](_0x226d21[_0x5056('0x8b')])?_0x226d21['model']:undefined)[_0x5056('0x14')](function(_0x4e2e7d){_0x1891ab(null,_0x4e2e7d);})[_0x5056('0x18')](function(_0x273cc8){_0x1891ab(_0x273cc8);});};AGIVertices[_0x5056('0x1d')]['awsPolly']=function(_0x284c76,_0x679a24){scripts[_0x5056('0x8c')](_0x284c76[_0x5056('0x8d')],_0x284c76[_0x5056('0x8e')],_0x284c76[_0x5056('0x8f')],_0x284c76[_0x5056('0x90')]||_0x5056('0x91'),_0x284c76[_0x5056('0x60')],_0x284c76[_0x5056('0x92')]||_0x5056('0x60'))[_0x5056('0x14')](function(_0x517b73){_0x679a24(null,_0x517b73);})[_0x5056('0x18')](function(_0x5752fd){_0x679a24(_0x5752fd);});};AGIVertices[_0x5056('0x1d')]['awsLex']=function(_0x1657f2,_0x4d86d7){scripts[_0x5056('0x93')](this[_0x5056('0x10')][_0x5056('0x38')],_0x1657f2['aws_access_key_id'],_0x1657f2['aws_secret_access_key'],_0x1657f2[_0x5056('0x94')],_0x1657f2[_0x5056('0x60')],_0x1657f2[_0x5056('0x95')])[_0x5056('0x14')](function(_0x3ac15f){_0x4d86d7(null,_0x3ac15f);})[_0x5056('0x18')](function(_0xa4bab0){_0x4d86d7(_0xa4bab0);});};AGIVertices['prototype']['googleASR']=function(_0x16ab8c,_0x128546,_0x2c02ca){scripts[_0x5056('0x96')](_0x128546,_0x16ab8c[_0x5056('0x7d')],_0x16ab8c['google_asr_language']||_0x5056('0x62'))[_0x5056('0x14')](function(_0x5cb351){_0x2c02ca(null,_0x5cb351);})[_0x5056('0x18')](function(_0x14d4a9){_0x2c02ca(_0x14d4a9);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x97')]=function(_0x1385b9,_0xdec19b,_0x278780){scripts[_0x5056('0x97')](_0xdec19b,_0x1385b9['appid'],_0x1385b9[_0x5056('0x98')],_0x1385b9['uri'])[_0x5056('0x14')](function(_0x2d0a04){_0x278780(null,_0x2d0a04);})[_0x5056('0x18')](function(_0xa55e38){_0x278780(_0xa55e38);});};AGIVertices['prototype'][_0x5056('0x99')]=function(_0x3a86ab){var _0x2d4aba=_[_0x5056('0x6c')](verticesWithRetry,_0x3a86ab[_0x5056('0x3a')])?_0x3a86ab:_[_0x5056('0x9a')](_0x3a86ab);for(var _0x2e065e in _0x2d4aba){if(_0x2d4aba[_0x5056('0x9b')](_0x2e065e)){if(_0x2d4aba[_0x2e065e]&&_['isString'](_0x2d4aba[_0x2e065e])){if(_[_0x5056('0x6c')](recursiveMapAttributes,_0x2e065e)){_0x2d4aba[_0x2e065e]=this['replaceObjectAllVariables'](_0x2d4aba[_0x2e065e]);}else{_0x2d4aba[_0x2e065e]=this[_0x5056('0x9c')](_0x2d4aba[_0x2e065e]);}}}}return _0x2d4aba;};AGIVertices['prototype']['recursiveNodeIndex']=function(_0x100958){for(var _0x3c4577 in _0x100958){if(_0x100958[_0x5056('0x9b')](_0x3c4577)){if(_[_0x5056('0x9d')](_0x100958[_0x3c4577])){this[_0x5056('0x9e')](_0x100958[_0x3c4577]);}else if(_['isArray'](_0x100958[_0x3c4577])){for(var _0x193ce3=0x0;_0x193ce3<_0x100958[_0x3c4577][_0x5056('0x9f')];_0x193ce3++){this[_0x5056('0x9e')](_0x100958[_0x3c4577][_0x193ce3]);}}else if(_[_0x5056('0xa0')](_0x100958[_0x3c4577])){_0x100958[_0x3c4577]=this['replaceAllVariables'](_0x100958[_0x3c4577]);}}}};AGIVertices[_0x5056('0x1d')][_0x5056('0xa1')]=function(_0x50210f,_0x321cde){for(var _0x518f0c in _0x50210f){if(_0x50210f[_0x5056('0x9b')](_0x518f0c)){if(_[_0x5056('0x9d')](_0x50210f[_0x518f0c])){if(!_[_0x5056('0x45')](_0x50210f[_0x518f0c])){this[_0x5056('0xa1')](_0x50210f[_0x518f0c],util[_0x5056('0x2b')]('%s.%s',_0x321cde,_0x518f0c));}}else if(_[_0x5056('0xa2')](_0x50210f[_0x518f0c])){for(var _0x2b0f02=0x0;_0x2b0f02<_0x50210f[_0x518f0c][_0x5056('0x9f')];_0x2b0f02++){this[_0x5056('0xa1')](_0x50210f[_0x518f0c][_0x2b0f02],util[_0x5056('0x2b')](_0x5056('0xa3'),_0x321cde,_0x518f0c+'['+_0x2b0f02+']'));}}else{if(!_[_0x5056('0x46')](_0x50210f[_0x518f0c])){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0xa3'),_0x321cde,_0x518f0c),_0x50210f[_0x518f0c]);}}}}};AGIVertices[_0x5056('0x1d')][_0x5056('0xa5')]=function(_0x1b55d2){try{var _0x11f923=JSON[_0x5056('0x71')](_0x1b55d2);this[_0x5056('0x9e')](_0x11f923);return JSON[_0x5056('0x77')](_0x11f923);}catch(_0x578fd5){return this[_0x5056('0x9c')](_0x1b55d2);}};AGIVertices['prototype'][_0x5056('0x9c')]=function(_0x19d95f){var _0x33037d=_0x19d95f[_0x5056('0xa6')]('{');for(var _0x4d0a45=0x1;_0x4d0a45<_0x33037d[_0x5056('0x9f')];_0x4d0a45+=0x1){var _0x1ef886=_0x33037d[_0x4d0a45][_0x5056('0xa6')]('}');if(_0x1ef886[_0x5056('0x9f')]>0x1){_0x19d95f=_0x19d95f[_0x5056('0xa7')]('{'+_0x1ef886[0x0]+'}',this['channel']['getVariable'](_0x1ef886[0x0])[_0x5056('0xa8')]||_0x1ef886[0x0]);}}if(_0x33037d['length']===0x1){return _0x19d95f['toString']();}return this[_0x5056('0x9c')](_0x19d95f);};AGIVertices[_0x5056('0x1d')][_0x5056('0xa9')]=function(_0x397f0e,_0x3b50fe){var _0x325669=this[_0x5056('0x10')][_0x5056('0x13')](_0x397f0e);if(_0x325669['result']===-0x1){return _0x325669;}logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xaa'),_0x3b50fe,_0x325669[_0x5056('0xa8')]));return this[_0x5056('0x10')][_0x5056('0xa4')](_0x3b50fe,_0x325669[_0x5056('0xa8')]);};AGIVertices['prototype']['isConfigured']=function(_0x34cca5){return _0x34cca5&&_0x34cca5!=='0'&&_0x34cca5!=='-1'&&_0x34cca5!=='';};AGIVertices[_0x5056('0x1d')][_0x5056('0xab')]=function(_0x392a31){this[_0x5056('0x37')][_0x5056('0x75')](this,_0x392a31,'-');_0x392a31['retry']=_0x392a31[_0x5056('0xab')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x5056('0x1d')][_0x5056('0xac')]=function(_0x1067e1){logger['info'](util[_0x5056('0x2b')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x1067e1[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x1067e1['text'])){return this['channel'][_0x5056('0xad')](_0x5056('0xae'));}var _0x5dd174='\x22'+_0x1067e1[_0x5056('0x60')]+'\x22';if(this[_0x5056('0x8a')](_0x1067e1[_0x5056('0x7b')])){_0x5dd174+=','+_0x1067e1[_0x5056('0x7b')];}var _0x23387a=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0xaf'),_0x5dd174);if(_0x23387a[_0x5056('0xb0')]===-0x1){return _0x23387a;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xb1'),_0x5dd174));};AGIVertices[_0x5056('0x1d')][_0x5056('0xb2')]=function(_0x4d040a){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xb3'),_0x4d040a[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x4d040a[_0x5056('0xb4')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xb5'));}var _0x5ae178=_0x4d040a[_0x5056('0xb4')];if(this[_0x5056('0x8a')](_0x4d040a[_0x5056('0x7b')])){_0x5ae178+=','+_0x4d040a['options'];}var _0x30e35d=this[_0x5056('0x10')]['exec'](_0x5056('0xb6'),_0x5ae178);if(_0x30e35d['result']===-0x1){return _0x30e35d;}var _0x2ac3ce=this['getAndSetVariable'](_0x5056('0xb7'),'MRCP_RECOG_CONFIDENCE');if(_0x2ac3ce[_0x5056('0xb0')]===-0x1){return _0x2ac3ce;}var _0x3a6000=this[_0x5056('0xa9')](_0x5056('0xb8'),_0x5056('0xb9'));if(_0x3a6000[_0x5056('0xb0')]===-0x1){return _0x3a6000;}var _0x5c9d71=this[_0x5056('0xa9')](_0x5056('0xba'),'MRCP_RECOG_INSTANCE');if(_0x5c9d71['result']===-0x1){return _0x5c9d71;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5ae178));};AGIVertices[_0x5056('0x1d')][_0x5056('0x9')]=function(_0x8f240){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x8f240[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x9')]([_0x8f240[_0x5056('0xbb')],_0x8f240[_0x5056('0xbc')]]);};AGIVertices['prototype'][_0x5056('0xbd')]=function(_0x111848){logger[_0x5056('0x30')](util['format'](_0x5056('0xbe'),_0x111848[_0x5056('0x39')]));if(this[_0x5056('0x8a')](_0x111848[_0x5056('0x6a')])){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x111848[_0x5056('0x6a')]));var _0x5da6ad=this[_0x5056('0x10')][_0x5056('0xbf')](_0x111848[_0x5056('0x6a')]);if(_0x5da6ad['result']===-0x1){return _0x5da6ad;}}return this[_0x5056('0x10')][_0x5056('0xbd')]();};AGIVertices[_0x5056('0x1d')][_0x5056('0x4c')]=function(_0x221b6c){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xc0'),_0x221b6c['label']));if(!this[_0x5056('0x8a')](_0x221b6c[_0x5056('0x4a')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x221b6c,_0x5056('0xc1'));}_0x221b6c['scheduledAt']=moment();if(this[_0x5056('0x8a')](_0x221b6c[_0x5056('0xc2')])){_0x221b6c[_0x5056('0x4b')]=moment()[_0x5056('0xc3')](_0x221b6c[_0x5056('0xc2')],_0x5056('0xc4'));}if(!this['isConfigured'](_0x221b6c[_0x5056('0x4f')])){_0x221b6c['callback_priority']=0x2;}this[_0x5056('0x44')][_0x5056('0x75')](this,_0x221b6c);return this['channel'][_0x5056('0xad')](util['format'](_0x5056('0xc5'),_0x221b6c['phone'],_0x221b6c['list_id'],_0x221b6c['scheduledAt']));};AGIVertices[_0x5056('0x1d')][_0x5056('0xc6')]=function(_0x3bccba){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x3bccba[_0x5056('0x39')]));var _0x4a5440=this[_0x5056('0x10')][_0x5056('0x5b')](_0x3bccba[_0x5056('0xc7')],_0x3bccba[_0x5056('0x7b')]);if(_0x4a5440[_0x5056('0xb0')]===-0x1){return _0x4a5440;}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')]('Executed\x20command\x20%s\x20%s',_0x3bccba[_0x5056('0xc7')],_0x3bccba[_0x5056('0x7b')]));};AGIVertices[_0x5056('0x1d')][_0x5056('0xc8')]=function(_0x1eb7b2){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xc9'),_0x1eb7b2[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x1eb7b2[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}var _0x25f38b='\x22'+_0x1eb7b2['text']+'\x22';if(this[_0x5056('0x8a')](_0x1eb7b2[_0x5056('0x7b')])){_0x25f38b+=','+_0x1eb7b2[_0x5056('0x7b')];}var _0x2e7386=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0xaf'),_0x25f38b);if(_0x2e7386[_0x5056('0xb0')]===-0x1){return _0x2e7386;}return this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0xb1'),_0x25f38b));};AGIVertices[_0x5056('0x1d')][_0x5056('0xca')]=function(_0x7cf9b8){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xcb'),_0x7cf9b8['label']));if(!this[_0x5056('0x8a')](_0x7cf9b8[_0x5056('0x60')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xae'));}var _0x5c60cb='\x22'+_0x7cf9b8['text']+'\x22';if(this['isConfigured'](_0x7cf9b8[_0x5056('0x7b')])){_0x5c60cb+=','+_0x7cf9b8[_0x5056('0x7b')];}var _0x1b3a40=this['channel'][_0x5056('0x5b')](_0x5056('0xaf'),_0x5c60cb);if(_0x1b3a40[_0x5056('0xb0')]===-0x1){return _0x1b3a40;}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0xb1'),_0x5c60cb));};AGIVertices[_0x5056('0x1d')]['lumenvoxasr']=function(_0x42249e){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xcc'),_0x42249e[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x42249e[_0x5056('0xb4')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xb5'));}var _0x5ab174=_0x42249e[_0x5056('0xb4')];if(this[_0x5056('0x8a')](_0x42249e['options'])){_0x5ab174+=','+_0x42249e['options'];}var _0x202fb5=this[_0x5056('0x10')][_0x5056('0x5b')]('MRCPRecog',_0x5ab174);if(_0x202fb5[_0x5056('0xb0')]===-0x1){return _0x202fb5;}var _0x338f3f=this[_0x5056('0xa9')](_0x5056('0xb7'),_0x5056('0xcd'));if(_0x338f3f[_0x5056('0xb0')]===-0x1){return _0x338f3f;}var _0xdfa44c=this[_0x5056('0xa9')]('RECOG_INPUT()',_0x5056('0xce'));if(_0xdfa44c[_0x5056('0xb0')]===-0x1){return _0xdfa44c;}var _0x185bb8=this[_0x5056('0xa9')](_0x5056('0xba'),'LUMENVOX_ASR_INSTANCE');if(_0x185bb8[_0x5056('0xb0')]===-0x1){return _0x185bb8;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xcf'),_0x5ab174));};AGIVertices['prototype']['sestekasr']=function(_0x515716){logger[_0x5056('0x30')](util['format']('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x515716[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x515716[_0x5056('0xb4')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xb5'));}var _0x270ad2=_0x515716[_0x5056('0xb4')];if(this[_0x5056('0x8a')](_0x515716[_0x5056('0x7b')])){_0x270ad2+=','+_0x515716[_0x5056('0x7b')];}var _0x33352f=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0xb6'),_0x270ad2);if(_0x33352f[_0x5056('0xb0')]===-0x1){return _0x33352f;}var _0x3d1d44=this['getAndSetVariable'](_0x5056('0xb7'),'SESTEK_ASR_CONFIDENCE');if(_0x3d1d44['result']===-0x1){return _0x3d1d44;}var _0x282517=this[_0x5056('0xa9')](_0x5056('0xb8'),_0x5056('0xd0'));if(_0x282517['result']===-0x1){return _0x282517;}var _0x39ed85=this[_0x5056('0xa9')]('RECOG_INSTANCE()',_0x5056('0xd1'));if(_0x39ed85[_0x5056('0xb0')]===-0x1){return _0x39ed85;}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0xcf'),_0x270ad2));};AGIVertices[_0x5056('0x1d')][_0x5056('0xd2')]=function(_0x16675f){logger['info'](util['format'](_0x5056('0xd3'),_0x16675f[_0x5056('0x39')]));if(!this['isConfigured'](_0x16675f['odbc_id'])){return this['channel'][_0x5056('0x2d')](_0x16675f,_0x5056('0xd4'));}var _0x5aaea8=this[_0x5056('0xd5')][_0x5056('0x75')](this,_0x16675f[_0x5056('0xd6')]);if(!_0x5aaea8){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x16675f,_0x5056('0xd7'));}if(!this[_0x5056('0x8a')](_0x16675f['query'])){return this['channel'][_0x5056('0x2d')](_0x16675f,_0x5056('0xd8'));}var _0x20930d=_0x16675f[_0x5056('0xd9')][_0x5056('0xda')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xdb'),_0x20930d));var _0x1e6b42=this[_0x5056('0xdc')][_0x5056('0x75')](this,_0x5aaea8,_0x20930d);this[_0x5056('0x37')]['sync'](this,_0x16675f,_0x20930d);if(!this['isConfigured'](_0x16675f['variable_id'])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xdd'));}var _0x2a06b0=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x16675f[_0x5056('0xde')]);if(!_0x2a06b0){return this['channel'][_0x5056('0x2d')](_0x16675f,_0x5056('0xdf'));}var _0x2d9943=this;_0x1e6b42[_0x5056('0xe0')](function(_0x5b49f6,_0x25780c){Object[_0x5056('0xe1')](_0x5b49f6)[_0x5056('0xe0')](function(_0x11dcd1){_0x2d9943['channel'][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0xe2'),_0x2a06b0,_0x25780c,_0x11dcd1),_0x5b49f6[_0x11dcd1]);});});this['channel']['setVariable'](util[_0x5056('0x2b')]('%s_ROWS_COUNT',_0x2a06b0),_0x1e6b42[_0x5056('0x9f')]);return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xe3'),_0x2a06b0));};AGIVertices[_0x5056('0x1d')][_0x5056('0xe4')]=function(_0x129e8d){logger[_0x5056('0xe5')](util[_0x5056('0x2b')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x129e8d[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x129e8d[_0x5056('0xe6')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x129e8d,_0x5056('0xe7'));}var _0x637dd1=this[_0x5056('0xe8')][_0x5056('0x75')](this,_0x129e8d['sip_id']);if(!_0x637dd1){return this[_0x5056('0x10')]['error'](_0x129e8d,_0x5056('0xe9'));}var _0xe6a342=this[_0x5056('0x10')]['exec'](_0x5056('0xea'),[util[_0x5056('0x2b')](_0x5056('0xeb'),_0x637dd1),_0x129e8d[_0x5056('0x6a')],_0x129e8d[_0x5056('0xec')],_0x129e8d['url']]);if(_0xe6a342[_0x5056('0xb0')]===-0x1){return _0xe6a342;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xed'),_0x5056('0xea')));};AGIVertices[_0x5056('0x1d')][_0x5056('0xee')]=function(_0x2c5a84){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xef'),_0x2c5a84[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x2c5a84[_0x5056('0x7d')])){return this['channel'][_0x5056('0xad')]('no\x20key\x20configured');}if(!this['isConfigured'](_0x2c5a84[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')]['bot']=!![];this[_0x5056('0x37')](_0x2c5a84);this[_0x5056('0x43')](_0x2c5a84[_0x5056('0x60')],'in','','');this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xf0'),_0x2c5a84[_0x5056('0x60')]));var _0x2d470f=this[_0x5056('0x7c')][_0x5056('0x75')](this,_0x2c5a84);if(_0x2d470f){for(var _0x257547 in _0x2d470f){if(_0x2d470f[_0x5056('0x9b')](_0x257547)){this[_0x5056('0x10')]['setVariable'](util['format'](_0x5056('0xf1'),_0x257547[_0x5056('0x6e')]()),_0x2d470f[_0x257547]);}}this['createSquareMessage'](_0x2d470f[_0x5056('0xf2')],_0x5056('0xf3'),'dialogflow','');return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xf4'),_0x2d470f['speech']));}return this[_0x5056('0x10')]['error'](_0x2c5a84,_0x5056('0xf5'));};AGIVertices[_0x5056('0x1d')][_0x5056('0xf6')]=function(_0x291cb6){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xf7'),_0x291cb6['label']));if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x80')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xf8'));}if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x81')])){return this['channel']['noop'](_0x5056('0xf9'));}if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x82')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xfa'));}if(!this['isConfigured'](_0x291cb6['dialogflowV2_language'])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20anguage\x20configured');}if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20text\x20configured');}this[_0x5056('0x10')]['bot']=!![];this[_0x5056('0x37')](_0x291cb6);this[_0x5056('0x43')](_0x291cb6[_0x5056('0x60')],'in','','');this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xfb'),_0x291cb6['text']));var _0x2b6b3e=this['googleDialogflowV2'][_0x5056('0x75')](this,_0x291cb6);if(_0x2b6b3e){for(var _0x243017 in _0x2b6b3e){if(_0x2b6b3e['hasOwnProperty'](_0x243017)){if(_0x243017!=='providerResponse'){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0xf1'),_0x243017[_0x5056('0x6e')]()),_0x2b6b3e[_0x243017]);}}}this[_0x5056('0x43')](_0x2b6b3e[_0x5056('0xf2')],_0x5056('0xf3'),_0x5056('0xf6'),_0x2b6b3e['providerResponse']);return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xfc'),_0x2b6b3e[_0x5056('0xf2')]));}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x291cb6,_0x5056('0xfd'));};AGIVertices[_0x5056('0x1d')][_0x5056('0xfe')]=function(_0x5eff4f){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xff'),_0x5eff4f[_0x5056('0x39')]));if(!this['isConfigured'](_0x5eff4f[_0x5056('0x100')])){return this[_0x5056('0x10')]['noop'](_0x5056('0x101'));}if(!this['isConfigured'](_0x5eff4f[_0x5056('0x102')])){return this['channel'][_0x5056('0xad')](_0x5056('0x103'));}if(!this['isConfigured'](_0x5eff4f[_0x5056('0x104')])){return this[_0x5056('0x10')]['noop'](_0x5056('0x105'));}if(!this[_0x5056('0x8a')](_0x5eff4f[_0x5056('0x106')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0x107')]=!![];this['createSquareDetailsReport'](_0x5eff4f);this[_0x5056('0x43')](_0x5eff4f[_0x5056('0x60')],'in','','');this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Trying\x20SestekNDA:\x20%s',_0x5eff4f[_0x5056('0x60')]));var _0x4234af=this[_0x5056('0x84')][_0x5056('0x75')](this,_0x5eff4f);if(_0x4234af){for(var _0x5394e6 in _0x4234af){if(_0x4234af[_0x5056('0x9b')](_0x5394e6)){this[_0x5056('0x10')][_0x5056('0xa4')](util['format'](_0x5056('0x108'),_0x5394e6[_0x5056('0x6e')]()),_0x4234af[_0x5394e6]);}}this[_0x5056('0x43')](_0x4234af[_0x5056('0xf2')],_0x5056('0xf3'),_0x5056('0xfe'),'');if(_0x4234af[_0x5056('0x109')]){this['channel'][_0x5056('0xad')](util['format'](_0x5056('0x10a'),_0x4234af[_0x5056('0x109')]));var _0x304b3f=this['channel'][_0x5056('0x10b')](_0x4234af[_0x5056('0x109')]);try{fs[_0x5056('0x10c')](_0x4234af[_0x5056('0x109')]+_0x5056('0x10d'));}catch(_0x537819){logger[_0x5056('0x2d')](_0x537819);}return _0x304b3f;}else{return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0x10e'),_0x4234af[_0x5056('0xf2')]));}}return this[_0x5056('0x10')]['error'](_0x5eff4f,_0x5056('0x10f'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x110')]=function(_0x435973){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20END\x20(%s)\x20block',_0x435973[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x110'));};AGIVertices['prototype'][_0x5056('0x111')]=function(_0x564236){logger['info'](util[_0x5056('0x2b')](_0x5056('0x112'),_0x564236[_0x5056('0x39')]));var _0x3256cc='';if(_0x564236[_0x5056('0x113')]){if(!this['isConfigured'](_0x564236[_0x5056('0x113')])){return this['channel'][_0x5056('0x2d')](_0x564236,_0x5056('0x114'));}else{var _0x1a9be7=parseInt(_0x564236[_0x5056('0x113')],0xa);if(isNaN(_0x1a9be7)){_0x3256cc=_0x564236[_0x5056('0x113')];}else{_0x3256cc=this['getTrunk']['sync'](this,_0x564236[_0x5056('0x113')]);if(!_0x3256cc){return this['channel']['error'](_0x564236,_0x5056('0x115'));}}}}else if(_0x564236['trunk_name']){_0x3256cc=_0x564236['trunk_name'];}else{return this[_0x5056('0x10')][_0x5056('0x2d')](_0x564236,_0x5056('0x114'));}var _0x5552b5=this['channel']['exec'](_0x5056('0xea'),[util[_0x5056('0x2b')](_0x5056('0x116'),_0x3256cc,_0x564236[_0x5056('0x49')]),_0x564236[_0x5056('0x6a')],_0x564236['opts'],_0x564236['url']]);if(_0x5552b5[_0x5056('0xb0')]===-0x1){return _0x5552b5;}return this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xed'),_0x5056('0xea')));};AGIVertices[_0x5056('0x1d')][_0x5056('0x117')]=function(_0x4ec105){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x118'),_0x4ec105[_0x5056('0x39')]));return this[_0x5056('0x10')]['noop'](_0x5056('0x117'));};AGIVertices[_0x5056('0x1d')]['getdigits']=function(_0x23ffa1){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x119'),_0x23ffa1['label']));if(_0x23ffa1[_0x5056('0x11a')]===0x0){return this[_0x5056('0xab')](_0x23ffa1);}_0x23ffa1[_0x5056('0x11a')]-=0x1;if(!this[_0x5056('0x8a')](_0x23ffa1[_0x5056('0x11b')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x23ffa1,'no\x20file\x20audio\x20selected');}var _0x5ab9c8=this[_0x5056('0x20')][_0x5056('0x75')](this,_0x23ffa1[_0x5056('0x11b')]);if(!_0x5ab9c8){return this['channel']['error'](_0x23ffa1,_0x5056('0x11c'));}if(!this[_0x5056('0x8a')](_0x23ffa1[_0x5056('0xde')])){return this['channel'][_0x5056('0x2d')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x317c53=this[_0x5056('0x10')][_0x5056('0x11d')](_0x5ab9c8,_0x23ffa1[_0x5056('0x11e')],_0x23ffa1['maxdigit']);var _0x2b8700=_0x317c53[_0x5056('0xb0')]?_0x317c53['result'][_0x5056('0x4e')]():'';logger[_0x5056('0x30')](_0x5056('0x11f'),JSON['stringify'](_0x317c53));if(_0x317c53['result']===-0x1){this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x23ffa1,_0x2b8700);return _0x317c53;}else if(_0x317c53[_0x5056('0xa8')]==='timeout'){_0x317c53['result']=_0x2b8700[_0x5056('0x9f')]>=parseInt(_0x23ffa1[_0x5056('0x120')])?'x':'i';}else{_0x317c53[_0x5056('0xb0')]=_0x2b8700['length']>=parseInt(_0x23ffa1[_0x5056('0x120')])&&_0x2b8700[_0x5056('0x9f')]<=parseInt(_0x23ffa1[_0x5056('0x121')])?'x':'i';}var _0x1954c0=this['getVariable'][_0x5056('0x75')](this,_0x23ffa1[_0x5056('0xde')]);if(!_0x1954c0){return this[_0x5056('0x10')]['error'](_0x23ffa1,'no\x20variable\x20found');}this[_0x5056('0x10')][_0x5056('0xa4')](_0x1954c0,_0x2b8700);if(this[_0x5056('0x8a')](_0x23ffa1[_0x5056('0x122')])){var _0x495e68=parseInt(_0x23ffa1[_0x5056('0x122')],0xa);var _0x9ba88d=rs[_0x5056('0x123')]({'charset':'*','length':_0x495e68});var _0x140a05=_0x2b8700[_0x5056('0x9f')];if(_0x140a05>0x0){if(_0x140a05>_0x495e68){this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x23ffa1,_0x23ffa1[_0x5056('0x124')]===_0x5056('0x125')?_0x9ba88d+_0x2b8700[_0x5056('0x126')](_0x495e68):_0x2b8700[_0x5056('0x126')](0x0,_0x140a05-_0x495e68)+_0x9ba88d);}else{this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x23ffa1,rs[_0x5056('0x123')]({'charset':'*','length':_0x140a05}));}}else{this[_0x5056('0x37')][_0x5056('0x75')](this,_0x23ffa1,'');}}else{this[_0x5056('0x37')][_0x5056('0x75')](this,_0x23ffa1,_0x2b8700);}return _0x317c53;};AGIVertices[_0x5056('0x1d')][_0x5056('0xf')]=function(_0x48f419){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x127'),_0x48f419[_0x5056('0x39')]));return this[_0x5056('0xe')](_0x48f419);};AGIVertices[_0x5056('0x1d')][_0x5056('0x128')]=function(_0x2f8e8a){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x2f8e8a[_0x5056('0x39')]));this[_0x5056('0x37')][_0x5056('0x75')](this,_0x2f8e8a,_0x2f8e8a[_0x5056('0x129')]);return this[_0x5056('0x10')][_0x5056('0xad')](util['format']('GOAL\x20%s',_0x2f8e8a[_0x5056('0x129')]));};AGIVertices['prototype'][_0x5056('0x12a')]=function(_0x3c710a){logger[_0x5056('0x30')](util['format']('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x3c710a[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x3c710a[_0x5056('0x8d')])||!this[_0x5056('0x8a')](_0x3c710a[_0x5056('0x8e')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x12b'));}if(!this[_0x5056('0x8a')](_0x3c710a['text'])){return this['channel'][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Trying\x20aws\x20Polly\x20%s',_0x3c710a[_0x5056('0x60')]));var _0x15644a=this['awsPolly'][_0x5056('0x75')](this,_0x3c710a);if(_0x15644a){this['channel'][_0x5056('0xad')](util['format'](_0x5056('0x12c'),_0x15644a));var _0xc00506=this['channel'][_0x5056('0x10b')](_0x15644a);try{fs[_0x5056('0x10c')](_0x15644a+'.wav');}catch(_0x370164){logger[_0x5056('0x2d')](_0x370164);}return _0xc00506;}return this['channel']['error'](_0x3c710a,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype'][_0x5056('0x12d')]=function(_0x117a91){logger['info'](util[_0x5056('0x2b')](_0x5056('0x12e'),_0x117a91[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x117a91[_0x5056('0x8d')])||!this[_0x5056('0x8a')](_0x117a91['aws_secret_access_key'])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x12b'));}if(!this[_0x5056('0x8a')](_0x117a91['aws_bot_name'])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20bot\x20name\x20configured');}if(!this[_0x5056('0x8a')](_0x117a91[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20text\x20configured');}this[_0x5056('0x10')][_0x5056('0x107')]=!![];this[_0x5056('0x37')](_0x117a91);this[_0x5056('0x43')](_0x117a91[_0x5056('0x60')],'in','','');this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x12f'),_0x117a91[_0x5056('0x60')]));var _0x41464d=this[_0x5056('0x93')][_0x5056('0x75')](this,_0x117a91);if(_0x41464d){for(var _0xfb47e in _0x41464d){if(_0x41464d[_0x5056('0x9b')](_0xfb47e)&&_[_0x5056('0xa0')](_0x41464d[_0xfb47e])){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x130'),_0xfb47e['toUpperCase']()),_0x41464d[_0xfb47e]);}}if(_[_0x5056('0x46')](_0x41464d[_0x5056('0x7a')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x131'));}else{this['createSquareMessage'](_0x41464d['message'],_0x5056('0xf3'),'amazonlex','');return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0x132'),_0x41464d[_0x5056('0x7a')]));}}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x117a91,_0x5056('0x133'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x134')]=function(_0x1f7462){logger['info'](util['format']('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x1f7462[_0x5056('0x39')],_0x1f7462[_0x5056('0x6a')]));if(!this[_0x5056('0x8a')](_0x1f7462['key'])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x135'));}var _0x29902b='wav';var _0x3a84cf=util[_0x5056('0x2b')](_0x5056('0x136'),FILES_PATH,rs[_0x5056('0x123')](0x4));var _0x5d0d16=util['format']('%s.%s',_0x3a84cf,_0x29902b);var _0x3c8945=!![];if(_0x1f7462[_0x5056('0x137')]===_0x5056('0x138')){_0x3c8945=![];}var _0x34dc3a=this[_0x5056('0x10')][_0x5056('0x139')](_0x3a84cf,_0x29902b,_0x1f7462['intKey'],_0x1f7462[_0x5056('0x6a')],undefined,_0x3c8945);if(_0x34dc3a[_0x5056('0xb0')]!==-0x1){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('google\x20%s\x20file\x20created',_0x5d0d16));var _0x3c74bd=this['googleASR'][_0x5056('0x75')](this,_0x1f7462,_0x5d0d16);if(_0x3c74bd){for(var _0xf9fe3d in _0x3c74bd){if(_0x3c74bd[_0x5056('0x9b')](_0xf9fe3d)){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x13a'),_0xf9fe3d[_0x5056('0x6e')]()),_0x3c74bd[_0xf9fe3d]);}}return this[_0x5056('0x10')]['noop'](util['format'](_0x5056('0x13b'),JSON[_0x5056('0x77')](_0x3c74bd)));}}return _0x34dc3a;};AGIVertices[_0x5056('0x1d')][_0x5056('0x13c')]=function(_0x251e29){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x13d'),_0x251e29['label']));if(!this[_0x5056('0x8a')](_0x251e29[_0x5056('0x13e')])){return this['channel'][_0x5056('0xad')](_0x5056('0x13f'));}if(!this[_0x5056('0x8a')](_0x251e29[_0x5056('0x98')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x140'));}var _0x57d7ae=_0x5056('0x141');var _0x324d45=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x5056('0x123')](0x4));var _0x4e1bca=util[_0x5056('0x2b')]('%s.%s',_0x324d45,_0x57d7ae);var _0xc7766a=!![];if(_0x251e29[_0x5056('0x137')]==='NOBEEP'){_0xc7766a=![];}var _0x1bf44b=this[_0x5056('0x10')][_0x5056('0x139')](_0x324d45,_0x57d7ae,_0x251e29[_0x5056('0x142')],_0x251e29[_0x5056('0x6a')],undefined,_0xc7766a);if(_0x1bf44b[_0x5056('0xb0')]!==-0x1){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('tilde\x20%s\x20file\x20created',_0x4e1bca));var _0x44bc50=this[_0x5056('0x97')][_0x5056('0x75')](this,_0x251e29,_0x4e1bca);if(_0x44bc50){for(var _0x3e2fc0 in _0x44bc50){if(_0x44bc50[_0x5056('0x9b')](_0x3e2fc0)){this['channel'][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x143'),_0x3e2fc0[_0x5056('0x6e')]()),_0x44bc50[_0x3e2fc0]);}}return this['channel'][_0x5056('0xad')](util['format'](_0x5056('0x144'),JSON[_0x5056('0x77')](_0x44bc50)));}}return _0x1bf44b;};AGIVertices[_0x5056('0x1d')][_0x5056('0x145')]=function(_0x131a00){logger[_0x5056('0x30')](util['format'](_0x5056('0x146'),_0x131a00[_0x5056('0x39')]));return this['channel']['continueAt'](_0x131a00[_0x5056('0x3f')],_0x131a00[_0x5056('0x147')],_0x131a00[_0x5056('0x40')]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x148')]=function(_0x358dee){logger[_0x5056('0x30')](util['format']('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x358dee['label']));if(!this[_0x5056('0x8a')](_0x358dee[_0x5056('0x149')])){return this[_0x5056('0x10')]['error'](_0x358dee,'no\x20condition\x20configured');}try{var _0x24a1ab=eval(_0x358dee[_0x5056('0x149')])?_0x5056('0x14a'):_0x5056('0x14b');this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')]('EVAL\x20CONDITION\x20%s\x20%s',_0x358dee[_0x5056('0x149')],_0x24a1ab));return{'code':0xc8,'result':_0x24a1ab};}catch(_0x3f113c){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x14c')]=function(_0x5ba5a5){logger['info'](util[_0x5056('0x2b')](_0x5056('0x14d'),_0x5ba5a5[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x5ba5a5['interval_id'])){return this[_0x5056('0x10')]['error'](_0x5ba5a5,_0x5056('0x14e'));}var _0x557b7a=this[_0x5056('0x25')][_0x5056('0x75')](this,_0x5ba5a5['interval_id']);if(!_0x557b7a){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x5ba5a5,_0x5056('0x14f'));}for(var _0x4d16ef=0x0;_0x4d16ef<_0x557b7a['length'];_0x4d16ef+=0x1){var _0x2c3a1f=this['channel'][_0x5056('0x13')](util[_0x5056('0x2b')](_0x5056('0x150'),_0x557b7a[_0x4d16ef]));if(_0x2c3a1f[_0x5056('0xb0')]===-0x1){return _0x2c3a1f;}logger[_0x5056('0x30')](util['format']('IFTIME\x20%s\x20%s',_0x557b7a[_0x4d16ef],_0x2c3a1f[_0x5056('0xa8')]));if(_0x2c3a1f[_0x5056('0xa8')]==='true'){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x151'),_0x557b7a[_0x4d16ef],_0x5056('0x14a')));this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x151'),_0x557b7a[_0x4d16ef],_0x5056('0x14a')));return{'code':0xc8,'result':'true'};}else{logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x151'),_0x557b7a[_0x4d16ef],_0x5056('0x14b')));this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')]('IFTIME\x20%s\x20%s',_0x557b7a[_0x4d16ef],_0x5056('0x14b')));}}return{'code':0xc8,'result':_0x5056('0x14b')};};AGIVertices[_0x5056('0x1d')][_0x5056('0x152')]=function(_0x1c5ac5){logger['info'](util[_0x5056('0x2b')](_0x5056('0x153'),_0x1c5ac5[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x152')]();};AGIVertices[_0x5056('0x1d')][_0x5056('0x154')]=function(_0x5e5e1e){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x155'),_0x5e5e1e[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x5e5e1e[_0x5056('0x7d')])){return this['channel'][_0x5056('0xad')](_0x5056('0x135'));}var _0x24eb29='wav';var _0x31f1d2=util[_0x5056('0x2b')](_0x5056('0x136'),FILES_PATH,rs['generate'](0x4));var _0x40a387=util[_0x5056('0x2b')]('%s.%s',_0x31f1d2,_0x24eb29);var _0x460bda=!![];if(_0x5e5e1e[_0x5056('0x137')]==='NOBEEP'){_0x460bda=![];}var _0x39cd96=this[_0x5056('0x10')][_0x5056('0x139')](_0x31f1d2,_0x24eb29,_0x5e5e1e[_0x5056('0x142')],_0x5e5e1e['timeout'],undefined,_0x460bda);if(_0x39cd96[_0x5056('0xb0')]!==-0x1){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x156'),_0x40a387));var _0x3f304b=this[_0x5056('0x88')][_0x5056('0x75')](this,_0x5e5e1e,_0x40a387);if(_0x3f304b){for(var _0x133e63 in _0x3f304b){if(_0x3f304b['hasOwnProperty'](_0x133e63)){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x157'),_0x133e63[_0x5056('0x6e')]()),_0x3f304b[_0x133e63]);}}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x158'),JSON[_0x5056('0x77')](_0x3f304b)));}}return _0x39cd96;};AGIVertices[_0x5056('0x1d')][_0x5056('0x159')]=function(_0x88ec6){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x15a'),_0x88ec6['label']));if(!this[_0x5056('0x8a')](_0x88ec6[_0x5056('0x7d')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x135'));}if(!this[_0x5056('0x8a')](_0x88ec6[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x15b'),_0x88ec6[_0x5056('0x60')]));var _0xfefb72=this[_0x5056('0x85')][_0x5056('0x75')](this,_0x88ec6);if(_0xfefb72){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('ispeech\x20%s\x20file\x20created',_0xfefb72));var _0x14ce1a=this[_0x5056('0x10')][_0x5056('0x10b')](_0xfefb72,_0x88ec6[_0x5056('0x142')]);try{fs[_0x5056('0x10c')](_0xfefb72+_0x5056('0x10d'));}catch(_0x15eba8){logger[_0x5056('0x2d')](_0x15eba8);}return _0x14ce1a;}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x88ec6,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x5056('0x1d')][_0x5056('0x15c')]=function(_0x19ec2d){logger['info'](util[_0x5056('0x2b')](_0x5056('0x15d'),_0x19ec2d['label']));if(!this['isConfigured'](_0x19ec2d[_0x5056('0x15e')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x19ec2d,_0x5056('0x15f'));}logger[_0x5056('0x30')](util['format'](_0x5056('0x160'),this[_0x5056('0x10')]['callerid'],_0x19ec2d[_0x5056('0x15e')]));var _0x1d9a14=this[_0x5056('0x59')][_0x5056('0x75')](this,_0x19ec2d[_0x5056('0x15e')]);if(_0x1d9a14){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x5056('0x10')]['callerid'],_0x19ec2d['findBy']));this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0x161'),this['channel'][_0x5056('0x3d')],_0x19ec2d[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x162')};}else{logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x163'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x19ec2d[_0x5056('0x15e')]));this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x19ec2d[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x164')};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x165')]=function(_0x217fd5){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x166'),_0x217fd5[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x217fd5['findBy'])){return this[_0x5056('0x10')]['error'](_0x217fd5,_0x5056('0x15f'));}logger[_0x5056('0x30')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));var _0x53fe3f=this[_0x5056('0x55')]['sync'](this,_0x217fd5[_0x5056('0x15e')]);if(_0x53fe3f){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x161'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x161'),this[_0x5056('0x10')]['callerid'],_0x217fd5['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x5056('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x163'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x164')};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x167')]=function(_0x59b855){logger['info'](util[_0x5056('0x2b')](_0x5056('0x168'),_0x59b855[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x59b855[_0x5056('0x169')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x59b855,'no\x20operation\x20configured');}this['channel']['noop'](util['format'](_0x5056('0x16a'),_0x59b855[_0x5056('0x169')]));var _0xa6372d=eval(_0x59b855[_0x5056('0x169')]);if(!this[_0x5056('0x8a')](_0x59b855[_0x5056('0xde')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xdd'));}var _0x31b4bb=this['getVariable']['sync'](this,_0x59b855[_0x5056('0xde')]);if(!_0x31b4bb){return this[_0x5056('0x10')]['error'](_0x59b855,'no\x20variable\x20found');}if(_['isArray'](_0xa6372d)){var _0x57996c=this;_0xa6372d[_0x5056('0xe0')](function(_0x64561d,_0x21933d){_0x57996c['channel'][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x16b'),_0x31b4bb,_0x21933d),_0x64561d);});return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x16c'),_0x31b4bb));}else{return this[_0x5056('0x10')][_0x5056('0xa4')](_0x31b4bb,_0xa6372d);}};AGIVertices[_0x5056('0x1d')][_0x5056('0x16d')]=function(_0x24963f){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x16e'),_0x24963f['label']));if(_0x24963f['retry']===0x0){return this[_0x5056('0xab')](_0x24963f);}_0x24963f['retry']-=0x1;if(!this[_0x5056('0x8a')](_0x24963f['file_id'])){return this['channel'][_0x5056('0x2d')](_0x24963f,_0x5056('0x16f'));}var _0x227068=this[_0x5056('0x20')][_0x5056('0x75')](this,_0x24963f['file_id']);if(!_0x227068){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x24963f,'no\x20file\x20audio\x20found');}var _0x49217e=this['channel'][_0x5056('0x11d')](_0x227068,_0x24963f['response'],_0x24963f[_0x5056('0x170')]);var _0x584d62=_0x49217e['result'];if(_0x49217e[_0x5056('0xb0')]===-0x1){this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x24963f,'-1');return _0x49217e;}else if(_0x49217e['extra']===_0x5056('0x6a')){_0x49217e[_0x5056('0xb0')]=_0x49217e[_0x5056('0xb0')][_0x5056('0x9f')]>0x0?_0x49217e[_0x5056('0xb0')]:'t';}else if(_[_0x5056('0x45')](_0x49217e[_0x5056('0xb0')])){_0x49217e[_0x5056('0xb0')]='#';_0x584d62='#';}if(!this[_0x5056('0x8a')](_0x24963f[_0x5056('0xde')])){this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xdd'));}else{var _0x480308=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x24963f[_0x5056('0xde')]);if(!_0x480308){return this['channel'][_0x5056('0x2d')](_0x24963f,_0x5056('0xdf'));}this[_0x5056('0x10')][_0x5056('0xa4')](_0x480308,_0x584d62);}this[_0x5056('0x37')][_0x5056('0x75')](this,_0x24963f,_0x584d62);return _0x49217e;};AGIVertices[_0x5056('0x1d')]['noop']=function(_0x4873a9){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x171'),_0x4873a9[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0xad')](_0x4873a9['output']||_0x4873a9[_0x5056('0x39')]);};AGIVertices['prototype']['pause']=function(_0x1a9860){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x1a9860[_0x5056('0x39')]));if(!this['isConfigured'](_0x1a9860[_0x5056('0x15e')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x1a9860,_0x5056('0x15f'));}logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x160'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x1a9860[_0x5056('0x15e')]));var _0x2be21b=this[_0x5056('0x50')][_0x5056('0x75')](this,_0x1a9860[_0x5056('0x172')]);var _0x4b3595=this[_0x5056('0x52')][_0x5056('0x75')](this,_0x1a9860[_0x5056('0x15e')],_0x2be21b);if(_0x4b3595){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x1a9860[_0x5056('0x15e')]));this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0x161'),this[_0x5056('0x10')]['callerid'],_0x1a9860[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x162')};}else{logger[_0x5056('0x30')](util['format'](_0x5056('0x163'),this[_0x5056('0x10')]['callerid'],_0x1a9860[_0x5056('0x15e')]));this['channel']['noop'](util[_0x5056('0x2b')](_0x5056('0x161'),this['channel']['callerid'],_0x1a9860[_0x5056('0x15e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x5056('0x1d')]['playback']=function(_0x289805){logger['info'](util['format'](_0x5056('0x173'),_0x289805[_0x5056('0x39')]));if(!this['isConfigured'](_0x289805[_0x5056('0x11b')])){return this['channel'][_0x5056('0x2d')](_0x289805,_0x5056('0x16f'));}var _0x1b1ca4=this['getSound'][_0x5056('0x75')](this,_0x289805[_0x5056('0x11b')]);if(!_0x1b1ca4){return this[_0x5056('0x10')]['error'](_0x289805,_0x5056('0x11c'));}var _0x3b004e=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0x174'),[_0x1b1ca4,_0x289805[_0x5056('0xec')]]);if(_0x3b004e['result']===-0x1){return _0x3b004e;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Executed\x20command\x20%s\x20%s',_0x5056('0x174'),_0x1b1ca4));};AGIVertices[_0x5056('0x1d')]['queue']=function(_0x55da83){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x175'),_0x55da83[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x55da83[_0x5056('0x176')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x55da83,_0x5056('0x177'));}var _0x183b50='';var _0x552b62=parseInt(_0x55da83[_0x5056('0x176')],0xa);if(isNaN(_0x552b62)){_0x183b50=_0x55da83['queue_id'];}else{_0x183b50=this['getVoiceQueue'][_0x5056('0x75')](this,_0x55da83[_0x5056('0x176')]);if(!_0x183b50){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x55da83,'no\x20queue\x20found');}}var _0x20a1b2='';if(this[_0x5056('0x8a')](_0x55da83[_0x5056('0x11b')])){var _0xf0eb4c=this[_0x5056('0x20')][_0x5056('0x75')](this,_0x55da83[_0x5056('0x11b')]);if(_0xf0eb4c){_0x20a1b2=_0xf0eb4c;}}this[_0x5056('0x37')][_0x5056('0x75')](this,_0x55da83,_0x183b50);if(_0x55da83['opts']['indexOf']('x')<0x0){_0x55da83[_0x5056('0xec')]+='x';}if(_0x55da83[_0x5056('0xec')]['indexOf']('X')<0x0){_0x55da83[_0x5056('0xec')]+='X';}this[_0x5056('0x10')][_0x5056('0xa4')]('XMCS-QUEUE',_0x183b50?_0x183b50[_0x5056('0x178')]():'');var _0x39d73a=this[_0x5056('0x10')][_0x5056('0x5b')]('QUEUE',[_0x183b50,_0x55da83[_0x5056('0xec')],_0x55da83[_0x5056('0x68')],_0x20a1b2,_0x55da83[_0x5056('0x6a')],_0x55da83[_0x5056('0x9')],_0x55da83[_0x5056('0x179')],_0x55da83[_0x5056('0x17a')],'',_0x55da83[_0x5056('0x17b')]]);if(_0x39d73a[_0x5056('0xb0')]===-0x1){return _0x39d73a;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x17c'),_0x5056('0x17d'),_0x183b50));};AGIVertices[_0x5056('0x1d')]['record']=function(_0x28f861){logger[_0x5056('0x30')](util['format'](_0x5056('0x17e'),_0x28f861['label']));var _0x28b282=_0x28f861[_0x5056('0x17f')]||'wav';var _0x2392b5=util[_0x5056('0x2b')](_0x5056('0x180'),this[_0x5056('0x10')][_0x5056('0x38')],rs[_0x5056('0x123')](0x5));var _0x20497e=util[_0x5056('0x2b')](_0x5056('0x181'),FILES_PATH,_0x2392b5,_0x28b282);var _0x33f830=util[_0x5056('0x2b')](_0x5056('0x136'),FILES_PATH,_0x2392b5);this[_0x5056('0x3c')][_0x5056('0x75')](this,_0x28f861,_0x2392b5,_0x20497e);this[_0x5056('0x10')][_0x5056('0xa4')](_0x5056('0x182'),_0x2392b5);logger['info'](_0x5056('0x183'),_0x33f830,_0x28b282,_0x28f861[_0x5056('0x184')],_0x28f861[_0x5056('0x6a')]);return this[_0x5056('0x10')][_0x5056('0x139')](_0x33f830,_0x28b282,_0x28f861[_0x5056('0x184')],_0x28f861[_0x5056('0x6a')],undefined,!![]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x185')]=function(_0x2026ec){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x186'),_0x2026ec[_0x5056('0x39')]));if(!this['isConfigured'](_0x2026ec[_0x5056('0x68')])){return this['channel']['noop']('no\x20url\x20configured');}var _0x4e087a=this[_0x5056('0x67')][_0x5056('0x75')](this,_0x2026ec);logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x187'),util[_0x5056('0x188')](_0x4e087a,{'showHidden':![],'depth':null})));if(!this[_0x5056('0x8a')](_0x2026ec['variable_id'])){return this['channel'][_0x5056('0xad')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x5f23bd=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x2026ec['variable_id']);if(!_0x5f23bd){return this['channel'][_0x5056('0x2d')](_0x2026ec,_0x5056('0xdf'));}this[_0x5056('0x10')]['setVariable'](util['format']('%s_STATUS_CODE',_0x5f23bd),_0x4e087a[_0x5056('0x79')]?_0x4e087a['statusCode']:_0x5056('0x189'));this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')]('%s_STATUS_MESSAGE',_0x5f23bd),_0x4e087a[_0x5056('0x18a')]?_0x4e087a['statusMessage']:'OK');if(_0x4e087a[_0x5056('0x6f')]){try{this[_0x5056('0xa1')](_0x4e087a['body'],_0x5f23bd);}catch(_0x4d8c23){logger[_0x5056('0x2d')](util[_0x5056('0x2b')](_0x5056('0x18b'),_0x5f23bd));}}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')]('variable\x20%s\x20set',_0x5f23bd));};AGIVertices[_0x5056('0x1d')][_0x5056('0x18c')]=function(_0x2548bf){logger['info'](util[_0x5056('0x2b')](_0x5056('0x18d'),_0x2548bf[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x18e')](_0x2548bf[_0x5056('0x18f')][_0x5056('0xda')](/\s+/g,''),_0x2548bf[_0x5056('0x184')]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x190')]=function(_0xdc0ffb){logger['info'](util[_0x5056('0x2b')](_0x5056('0x191'),_0xdc0ffb[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x192')](_0xdc0ffb[_0x5056('0x6b')][_0x5056('0xda')](/\s+/g,''),_0xdc0ffb['escape_digits']);};AGIVertices[_0x5056('0x1d')]['sayphonetic']=function(_0x1a2940){logger['info'](util[_0x5056('0x2b')](_0x5056('0x193'),_0x1a2940[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x194')](_0x1a2940[_0x5056('0x60')],_0x1a2940[_0x5056('0x184')]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x195')]=function(_0x18a121){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x18a121[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x18a121[_0x5056('0x196')])){return this[_0x5056('0x10')]['noop']('no\x20mail\x20account\x20configured');}var _0x499b4e=this[_0x5056('0x197')][_0x5056('0x75')](this,_0x18a121['account_id']);if(!_0x499b4e||!_0x499b4e[_0x5056('0x198')]){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x18a121,_0x5056('0x199'));}var _0x2382b4={'from':util[_0x5056('0x2b')]('\x22%s\x22\x20<%s>',_0x499b4e[_0x5056('0x17')],_0x499b4e[_0x5056('0x19a')]||_0x499b4e[_0x5056('0x198')]['user']),'to':_0x18a121['to']||'','cc':_0x18a121['cc']||'','bcc':_0x18a121['bcc']||'','subject':_0x18a121[_0x5056('0x19b')],'html':_0x18a121[_0x5056('0x60')],'text':_0x18a121[_0x5056('0x60')]};if(this['isConfigured'](_0x18a121['template_id'])){}logger['debug'](_0x5056('0x19c'),JSON[_0x5056('0x77')](_0x2382b4));this[_0x5056('0x37')][_0x5056('0x75')](this,_0x18a121,_0x18a121['account_id']);this[_0x5056('0x10')]['noop'](util['format']('Trying\x20SendMail\x20with\x20account\x20%s',_0x499b4e['name']));this[_0x5056('0x24')][_0x5056('0x75')](this,_0x499b4e[_0x5056('0x19d')],_0x2382b4);return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x19e'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x19f')]=function(_0x38fa30){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1a0'),_0x38fa30[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x1a1'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1a2')]=function(_0x25d701){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1a3'),_0x25d701[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x25d701[_0x5056('0x1a4')])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20sms\x20account\x20configured');}var _0x44c716=this[_0x5056('0x34')][_0x5056('0x75')](this,_0x25d701[_0x5056('0x1a4')]);if(!_0x44c716){return this['channel'][_0x5056('0x2d')](_0x25d701,_0x5056('0x1a5'));}var _0x584102={'body':_0x25d701[_0x5056('0x1a6')],'phone':_0x25d701['to']||'','SmsAccountId':_0x44c716['id']};logger[_0x5056('0xe5')](_0x5056('0x1a7'),JSON['stringify'](_0x584102));this[_0x5056('0x37')][_0x5056('0x75')](this,_0x25d701,_0x25d701[_0x5056('0x1a4')]);this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Trying\x20SendSMS\x20with\x20account\x20%s',_0x44c716[_0x5056('0x17')]));this['createSmsMessage'][_0x5056('0x75')](this,_0x584102);return this[_0x5056('0x10')]['noop'](_0x5056('0x1a8'));};AGIVertices[_0x5056('0x1d')]['set']=function(_0x41f45b){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1a9'),_0x41f45b['label']));if(!this[_0x5056('0x8a')](_0x41f45b['variable_id'])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x41f45b,_0x5056('0x1aa'));}var _0x138baa=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x41f45b[_0x5056('0xde')]);if(!_0x138baa){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x41f45b,_0x5056('0xdf'));}return this['channel'][_0x5056('0xa4')](_0x138baa,_0x41f45b[_0x5056('0x1ab')]);};AGIVertices[_0x5056('0x1d')]['start']=function(_0x1471b5){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1ac'),_0x1471b5[_0x5056('0x39')]));this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x1ad'));if(_0x1471b5[_0x5056('0xbd')]==='yes'){this[_0x5056('0x10')]['noop'](_0x5056('0x1ae'));return this[_0x5056('0x10')][_0x5056('0xbd')]();}return this[_0x5056('0x10')]['noop'](_0x5056('0x1af'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1b0')]=function(_0x327cab){logger['info'](util['format'](_0x5056('0x1b1'),_0x327cab[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x327cab[_0x5056('0x1b2')])){return this[_0x5056('0x10')]['error'](_0x327cab,_0x5056('0x1b3'));}var _0xb6fc93=this['getSquareProject'][_0x5056('0x75')](this,_0x327cab['project_id']);if(!this['isConfigured'](_0xb6fc93)){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x327cab,util[_0x5056('0x2b')](_0x5056('0x1b4'),_0x327cab[_0x5056('0x1b2')]));}if(_0xb6fc93===this[_0x5056('0x10')]['arg_1']){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x327cab,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x5056('0x37')][_0x5056('0x75')](this,_0x327cab,_0xb6fc93);var _0x23a966=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0x1b5'),util[_0x5056('0x2b')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x5056('0x9')][_0x5056('0x1b6')]||_0x5056('0x1b7'),_0xb6fc93,this[_0x5056('0x10')]['arg_1']));if(_0x23a966[_0x5056('0xb0')]===-0x1){return _0x23a966;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Executed\x20command\x20%s\x20%s',_0x5056('0x1b5'),_0xb6fc93));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1b8')]=function(_0x43aa25){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1b9'),_0x43aa25[_0x5056('0x39')]));var _0x2374af=this[_0x5056('0x5a')]['sync'](this,_0x43aa25[_0x5056('0xbb')]);this[_0x5056('0x37')]['sync'](this,_0x43aa25,_0x43aa25['command']);if(this['isConfigured'](_0x43aa25[_0x5056('0xde')])){var _0x1b1c0b=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x43aa25[_0x5056('0xde')]);if(_0x1b1c0b){this[_0x5056('0x10')][_0x5056('0xa4')](_0x1b1c0b,_0x2374af);return this['channel'][_0x5056('0xad')](util['format']('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x43aa25[_0x5056('0xbb')],_0x1b1c0b));}}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1ba'),_0x43aa25[_0x5056('0xbb')]));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1bb')]=function(_0x21c458){logger[_0x5056('0x30')](util['format'](_0x5056('0x1bc'),_0x21c458[_0x5056('0x39')]));_0x21c458[_0x5056('0x60')]=_0x21c458['text'][_0x5056('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x21c458['apiKey'])){return this[_0x5056('0x10')]['noop'](_0x5056('0x1bd'));}if(!this[_0x5056('0x8a')](_0x21c458['text'])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20text\x20configured');}this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1be'),_0x21c458[_0x5056('0x60')]));var _0x370bbc=this['googleCloudTTS']['sync'](this,_0x21c458);if(_0x370bbc){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1bf'),_0x370bbc));var _0xeb7172=this[_0x5056('0x10')]['streamFile'](_0x370bbc);try{fs[_0x5056('0x10c')](_0x370bbc+'.wav');}catch(_0x4c6be3){logger[_0x5056('0x2d')](_0x4c6be3);}return _0xeb7172;}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x21c458,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x5056('0x1d')][_0x5056('0x1c0')]=function(_0x163e9d){logger[_0x5056('0x30')](util['format'](_0x5056('0x1c1'),_0x163e9d['label']));_0x163e9d[_0x5056('0x60')]=_0x163e9d['text'][_0x5056('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x163e9d[_0x5056('0x60')])){return this['channel'][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0x1c2'),_0x163e9d[_0x5056('0x60')]));var _0x113ebc=this[_0x5056('0x65')][_0x5056('0x75')](this,_0x163e9d);if(_0x113ebc){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1c3'),_0x113ebc));var _0x207f20=this[_0x5056('0x10')]['streamFile'](_0x113ebc);try{fs['unlink'](_0x113ebc+_0x5056('0x10d'));}catch(_0x5578f7){logger[_0x5056('0x2d')](_0x5578f7);}return _0x207f20;}return this['channel'][_0x5056('0x2d')](_0x163e9d,_0x5056('0x1c4'));};AGIVertices[_0x5056('0x1d')]['unpause']=function(_0x371974){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1c5'),_0x371974[_0x5056('0x39')]));if(!this['isConfigured'](_0x371974[_0x5056('0x15e')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x371974,_0x5056('0x15f'));}logger['info'](util[_0x5056('0x2b')](_0x5056('0x160'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));var _0x121748=this['agentUnpause']['sync'](this,_0x371974[_0x5056('0x15e')]);if(_0x121748){logger[_0x5056('0x30')](util['format'](_0x5056('0x161'),this['channel'][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x162')};}else{logger[_0x5056('0x30')](util['format'](_0x5056('0x163'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x371974['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x1c6')]=function(_0x2ef51a){logger['info'](util[_0x5056('0x2b')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x2ef51a['label']));var _0xaebcdc=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0x1c7'),[_0x2ef51a[_0x5056('0x1c8')],_0x2ef51a[_0x5056('0x7b')]]);if(_0xaebcdc[_0x5056('0xb0')]===-0x1){return _0xaebcdc;}return this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x17c'),_0x5056('0x1c7'),_0x2ef51a[_0x5056('0x1c8')]));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1c9')]=function(_0x371261){logger[_0x5056('0x30')](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x371261[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x371261[_0x5056('0xde')])){return this[_0x5056('0x10')]['error'](_0x371261,'no\x20variable\x20selected');}var _0x28ce18=this['getVariable'][_0x5056('0x75')](this,_0x371261[_0x5056('0xde')]);if(!_0x28ce18){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x371261,_0x5056('0xdf'));}var _0x3d376d=this[_0x5056('0x10')][_0x5056('0x13')](_0x28ce18);return{'code':0xc8,'result':_0x3d376d[_0x5056('0xa8')]?_0x3d376d[_0x5056('0xa8')]:'-'};};String[_0x5056('0x1d')][_0x5056('0xa7')]=function(_0x438b39,_0x4e8a1b){return this[_0x5056('0xa6')](_0x438b39)[_0x5056('0x1ca')](_0x4e8a1b);};module[_0x5056('0x1cb')]=AGIVertices;
\ No newline at end of file
+var _0xf12a=['Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','intKey','GOOGLE_ASR_%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','recordFile','TILDE_ASR_%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','condition','no\x20condition\x20configured','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','IFTIME\x20%s\x20%s','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','failure','Enter\x20in\x20LOGOUT\x20(%s)\x20block','AGENT\x20%s\x20NOT\x20FOUND\x20BY','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','output','pause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','Response:','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','account_id','no\x20mail\x20account\x20configured','getMailAccount','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','getSquareProject','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20is\x20unreachable','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','util','lodash','shelljs','odbc','randomstring','moment','mustache','agi','../../config/environment/shared','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','channel','mailRpc','getVariable','then','name','catch','prototype','getVoiceQueue','rpc','getVoiceQueueById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','%s/sounds/converted/%s','getQueryOdbc','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','callerid','calleridname','context','extension','priority','arg_1','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','callback','toString','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','internal','format','%s/%s@from-sip/n','agentLogin','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','en-US','ssmlGender','MALE','googleTTS','google_tts_language','restAPI','url','timeout','number','includes','POST','PUT','method','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','dialogflowV2_language','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','Amy','awsLex','aws_lex_region','googleASR','google_asr_language','tildeASR','appsecret','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','length','recursiveNodeIndex','saveRestApiResult','%s.%s','isArray','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','MRCPSynth','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','MRCPRecog','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','SESTEK_ASR_TRANSCRIPT','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','client_email','no\x20client_email\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','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','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0xf12a,0x8e));var _0xaf12=function(_0xbc3542,_0x4de021){_0xbc3542=_0xbc3542-0x0;var _0x1c88ff=_0xf12a[_0xbc3542];return _0x1c88ff;};'use strict';var fs=require('fs');var util=require(_0xaf12('0x0'));var _=require(_0xaf12('0x1'));var sh=require(_0xaf12('0x2'));var odbc=require(_0xaf12('0x3'))();var rs=require(_0xaf12('0x4'));var moment=require(_0xaf12('0x5'));var Mustache=require(_0xaf12('0x6'));var rp=require('request-promise');var logger=require('../../config/logger')(_0xaf12('0x7'));var config=require('../../config/environment');var shared=require(_0xaf12('0x8'));var scripts=require('./scripts');var FILES_PATH=_0xaf12('0x9');var recursiveMapAttributes=['rawHeaders',_0xaf12('0xa')];var verticesWithRetry=[_0xaf12('0xb'),_0xaf12('0xc'),_0xaf12('0xd')];var AGIVertices=function(_0x16e152,_0x2ef7a5,_0x3d733d){this[_0xaf12('0xe')]=_0x16e152;this['rpc']=_0x2ef7a5;this[_0xaf12('0xf')]=_0x3d733d;};AGIVertices['prototype'][_0xaf12('0x10')]=function(_0x4c97a6,_0x21710e){this['rpc']['getVariableById'](_0x4c97a6)[_0xaf12('0x11')](function(_0x2b2676){_0x21710e(null,_0x2b2676?_0x2b2676[_0xaf12('0x12')]:![]);})[_0xaf12('0x13')](function(_0x400dd1){_0x21710e(_0x400dd1);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x15')]=function(_0x29b14c,_0xae61cb){this[_0xaf12('0x16')][_0xaf12('0x17')](_0x29b14c)[_0xaf12('0x11')](function(_0x1e0304){_0xae61cb(null,_0x1e0304?_0x1e0304[_0xaf12('0x12')]:![]);})[_0xaf12('0x13')](function(_0x3205ae){_0xae61cb(_0x3205ae);});};AGIVertices[_0xaf12('0x14')]['getSquareProject']=function(_0x245cf5,_0x31a420){this['rpc']['getSquareProjectById'](_0x245cf5)['then'](function(_0xd0c5f){_0x31a420(null,_0xd0c5f?_0xd0c5f['name']:![]);})[_0xaf12('0x13')](function(_0x516bad){_0x31a420(_0x516bad);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x18')]=function(_0x3752a6,_0x215ff5){this['rpc'][_0xaf12('0x19')](_0x3752a6)[_0xaf12('0x11')](function(_0x3e81ce){_0x215ff5(null,_0x3e81ce?_0x3e81ce[_0xaf12('0x1a')]:![]);})[_0xaf12('0x13')](function(_0xeb8bc9){_0x215ff5(_0xeb8bc9);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x1b')]=function(_0x402e51,_0x41f9f7){this[_0xaf12('0x16')][_0xaf12('0x1c')](_0x402e51)[_0xaf12('0x11')](function(_0x4cb01b){_0x41f9f7(null,_0x4cb01b?_0x4cb01b[_0xaf12('0x12')]:![]);})['catch'](function(_0x576fd4){_0x41f9f7(_0x576fd4);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x1d')]=function(_0x1b66bc,_0x5f28e9){this[_0xaf12('0x16')][_0xaf12('0x1e')](_0x1b66bc)['then'](function(_0x439409){_0x5f28e9(null,_0x439409?_0x439409[_0xaf12('0x12')]:![]);})[_0xaf12('0x13')](function(_0x2ed53d){_0x5f28e9(_0x2ed53d);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x1f')]=function(_0x43eaa5,_0x344976){var _0x34fb64=this;this['rpc'][_0xaf12('0x20')](_0x43eaa5)['then'](function(_0x39b12f){_0x344976(null,_0x39b12f?_0x34fb64[_0xaf12('0x21')](_0x39b12f[_0xaf12('0x22')]):![]);})['catch'](function(_0x4f0a8b){_0x344976(_0x4f0a8b);});};AGIVertices['prototype']['getMailAccount']=function(_0x5484c8,_0x53401b){this[_0xaf12('0x16')][_0xaf12('0x23')](_0x5484c8)[_0xaf12('0x11')](function(_0x4092d5){_0x53401b(null,_0x4092d5?_0x4092d5:![]);})['catch'](function(_0x4362cb){_0x53401b(_0x4362cb);});};AGIVertices[_0xaf12('0x14')]['sendMailMessage']=function(_0x384cad,_0x5f4c30,_0x269b70){this[_0xaf12('0xf')][_0xaf12('0x24')](_0x384cad,_0x5f4c30)[_0xaf12('0x11')](function(){_0x269b70(null);})[_0xaf12('0x13')](function(_0x562132){_0x269b70(_0x562132);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x25')]=function(_0x27658b,_0x173bfb){this[_0xaf12('0x16')][_0xaf12('0x26')](_0x27658b)[_0xaf12('0x11')](function(_0xe5def6){if(_0xe5def6){if(_0xe5def6[_0xaf12('0x27')]){_0x173bfb(null,[_0xe5def6[_0xaf12('0x28')]]);}else{_0x173bfb(null,_['map'](_0xe5def6['Intervals'],_0xaf12('0x28')));}}else{_0x173bfb(null,![]);}})['catch'](function(_0x4a907b){_0x173bfb(_0x4a907b);});};AGIVertices['prototype'][_0xaf12('0x21')]=function(_0x54248c){return util['format'](_0xaf12('0x29'),FILES_PATH,_0x54248c);};AGIVertices['prototype'][_0xaf12('0x2a')]=function(_0x4b6186,_0x3307bb,_0x62339d){odbc['open'](_0x4b6186,function(_0x1b39af){if(_0x1b39af){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x1b39af);_0x62339d(_0x1b39af);}else{logger[_0xaf12('0x2b')](_0xaf12('0x2c'));odbc[_0xaf12('0x2d')](_0x3307bb,function(_0x14b036,_0x1dafbc){if(_0x14b036){logger[_0xaf12('0x2b')](_0xaf12('0x2e'),_0x3307bb);_0x62339d(_0x14b036);}else{logger[_0xaf12('0x2b')](_0xaf12('0x2f'),_0x3307bb);odbc['close'](function(_0x5a0f09){if(_0x5a0f09){logger[_0xaf12('0x30')](_0xaf12('0x31'),_0x5a0f09);}_0x62339d(null,_0x1dafbc);});}});}});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x32')]=function(_0x3017d9,_0xb29037){this[_0xaf12('0x16')]['getSmsAccountById'](_0x3017d9)[_0xaf12('0x11')](function(_0x33795b){_0xb29037(null,_0x33795b?_0x33795b:![]);})[_0xaf12('0x13')](function(_0x1511da){_0xb29037(_0x1511da);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x33')]=function(_0xc171b9,_0x5fe11a){this[_0xaf12('0x16')][_0xaf12('0x33')](_0xc171b9)['then'](function(_0x3313bb){_0x5fe11a(null,_0x3313bb);})[_0xaf12('0x13')](function(_0x5b7641){_0x5fe11a(_0x5b7641);});};AGIVertices['prototype'][_0xaf12('0x34')]=function(_0x387c96,_0x309532,_0x5ddd2d){this[_0xaf12('0x16')][_0xaf12('0x34')]({'uniqueid':this[_0xaf12('0xe')][_0xaf12('0x35')],'node':_0x387c96[_0xaf12('0x36')],'application':_0x387c96[_0xaf12('0x37')],'data':_0x309532||null,'project_name':this[_0xaf12('0xe')]['arg_1'],'callerid':this[_0xaf12('0xe')][_0xaf12('0x38')]})[_0xaf12('0x11')](function(_0xeadc5b){if(_0x5ddd2d){_0x5ddd2d(null,_0xeadc5b);}})[_0xaf12('0x13')](function(_0x33dacc){if(_0x5ddd2d){_0x5ddd2d(_0x33dacc);}});};AGIVertices[_0xaf12('0x14')]['createSquareRecording']=function(_0x5dcf9c,_0xb832ed,_0x29ddb2,_0x1fed3c){this[_0xaf12('0x16')]['createSquareRecording']({'uniqueid':this[_0xaf12('0xe')][_0xaf12('0x35')],'callerid':this[_0xaf12('0xe')][_0xaf12('0x38')],'calleridname':this['channel'][_0xaf12('0x39')],'context':this[_0xaf12('0xe')][_0xaf12('0x3a')],'extension':this['channel'][_0xaf12('0x3b')],'priority':this[_0xaf12('0xe')][_0xaf12('0x3c')],'accountcode':this[_0xaf12('0xe')]['accountcode'],'dnid':this[_0xaf12('0xe')]['dnid'],'projectName':this[_0xaf12('0xe')][_0xaf12('0x3d')],'saveName':_0xb832ed,'filename':_0x5dcf9c[_0xaf12('0x3e')]||_0xb832ed,'savePath':_0x29ddb2})[_0xaf12('0x11')](function(_0x362e2c){_0x1fed3c(null,_0x362e2c);})[_0xaf12('0x13')](function(_0x418004){_0x1fed3c(_0x418004);});};AGIVertices['prototype'][_0xaf12('0x3f')]=function(_0x483902,_0x52b2c3,_0x3fd0fc,_0x453f98,_0x5ee78d){this[_0xaf12('0x16')][_0xaf12('0x3f')]({'uniqueid':this[_0xaf12('0xe')]['uniqueid'],'body':_0x483902,'direction':_0x52b2c3,'providerName':_0x3fd0fc,'providerResponse':_0x453f98})[_0xaf12('0x11')](function(_0x3a984a){if(_0x5ee78d){_0x5ee78d(null,_0x3a984a);}})['catch'](function(_0x348170){if(_0x5ee78d){_0x5ee78d(_0x348170);}});};AGIVertices['prototype'][_0xaf12('0x40')]=function(_0x5094f7,_0x2ca730){this[_0xaf12('0x16')][_0xaf12('0x40')]({'firstName':_[_0xaf12('0x41')](_0x5094f7[_0xaf12('0x12')])||_[_0xaf12('0x42')](_0x5094f7[_0xaf12('0x12')])?_0xaf12('0x43')+Math[_0xaf12('0x44')]():_0x5094f7[_0xaf12('0x12')],'lastName':_[_0xaf12('0x41')](_0x5094f7[_0xaf12('0x45')])||_[_0xaf12('0x42')](_0x5094f7['lastName'])?null:_0x5094f7['lastName'],'phone':_0x5094f7[_0xaf12('0x46')],'ListId':_0x5094f7[_0xaf12('0x47')],'scheduledat':_0x5094f7[_0xaf12('0x48')],'callbackUniqueid':this[_0xaf12('0xe')][_0xaf12('0x35')],'tags':_0xaf12('0x49'),'description':'Callback\x20scheduled\x20at\x20'+_0x5094f7[_0xaf12('0x48')][_0xaf12('0x4a')](),'priority':_0x5094f7['callback_priority']})[_0xaf12('0x11')](function(_0x178aba){_0x2ca730(null,_0x178aba);})[_0xaf12('0x13')](function(_0x431f9c){_0x2ca730(_0x431f9c);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x4b')]=function(_0x4ead59,_0x1e35e4){this['rpc'][_0xaf12('0x4c')](_0x4ead59)[_0xaf12('0x11')](function(_0xf5cdb6){_0x1e35e4(null,_0xf5cdb6?_0xf5cdb6[_0xaf12('0x12')]:![]);})[_0xaf12('0x13')](function(_0x5263aa){_0x1e35e4(_0x5263aa);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x4d')]=function(_0x1bc14a,_0x6a9dab,_0x50ccd4){var _0x141ee2={'role':_0xaf12('0x4e')};_0x141ee2[_0x1bc14a]=this[_0xaf12('0xe')][_0xaf12('0x38')];this[_0xaf12('0x16')]['agentPause'](_0x141ee2,_0x6a9dab,this[_0xaf12('0xe')]['uniqueid'])[_0xaf12('0x11')](function(_0x1ac4e0){_0x50ccd4(null,_['isNil'](_0x1ac4e0)?![]:!![]);})['catch'](function(_0x3b5229){logger[_0xaf12('0x30')](_0x3b5229);_0x50ccd4(null,![]);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x4f')]=function(_0x33d523,_0x2f8afd){var _0x5ce25c={'role':_0xaf12('0x4e')};_0x5ce25c[_0x33d523]=this['channel']['callerid'];this[_0xaf12('0x16')][_0xaf12('0x4f')](_0x5ce25c)[_0xaf12('0x11')](function(_0x2f6781){_0x2f8afd(null,_[_0xaf12('0x42')](_0x2f6781)?![]:!![]);})[_0xaf12('0x13')](function(_0x1b6b1f){logger[_0xaf12('0x30')](_0x1b6b1f);_0x2f8afd(null,![]);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x50')]=function(_0x3e16f2,_0xc2efce){var _0x351326={'role':'agent'};_0x351326[_0x3e16f2]=this[_0xaf12('0xe')][_0xaf12('0x38')];this[_0xaf12('0x16')][_0xaf12('0x50')](_0x351326)[_0xaf12('0x11')](function(_0x321934){_0xc2efce(null,_[_0xaf12('0x42')](_0x321934)?![]:!![]);})[_0xaf12('0x13')](function(_0x11a6b3){logger['error'](_0x11a6b3);_0xc2efce(null,![]);});};AGIVertices[_0xaf12('0x14')]['agentLogin']=function(_0x2c1e77,_0x2a7ca4){var _0x26eafb={'role':_0xaf12('0x4e')};_0x26eafb[_0x2c1e77]=this[_0xaf12('0xe')][_0xaf12('0x38')];var _0x5456f1=_0x2c1e77!=_0xaf12('0x51')?util[_0xaf12('0x52')](_0xaf12('0x53'),'LOCAL',this[_0xaf12('0xe')][_0xaf12('0x38')]):undefined;this[_0xaf12('0x16')][_0xaf12('0x54')](_0x26eafb,_0x5456f1)[_0xaf12('0x11')](function(_0x187a97){_0x2a7ca4(null,_[_0xaf12('0x42')](_0x187a97)?![]:!![]);})['catch'](function(_0x48ae6c){logger[_0xaf12('0x30')](_0x48ae6c);_0x2a7ca4(null,![]);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x55')]=function(_0x24465f,_0x19d8a5){sh[_0xaf12('0x56')](_[_0xaf12('0x57')](_0x24465f),function(_0x96bfad,_0x333081){var _0x475992=_0x333081[_0xaf12('0x58')](/(\r\n|\n|\r)/gm,'');_0x19d8a5(null,_0x475992);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x59')]=function(_0x76693e,_0x19b129){scripts['googleCloudTTS'](_0x76693e[_0xaf12('0x5a')],_0x76693e[_0xaf12('0x5b')]||'text',_0x76693e[_0xaf12('0x5c')],_0x76693e['languageCode']||_0xaf12('0x5d'),_0x76693e[_0xaf12('0x5e')]||_0xaf12('0x5f'),_0x76693e['audioEncoding']||'MP3')[_0xaf12('0x11')](function(_0x37bb52){_0x19b129(null,_0x37bb52);})[_0xaf12('0x13')](function(_0x282233){_0x19b129(_0x282233);});};AGIVertices['prototype'][_0xaf12('0x60')]=function(_0x165e46,_0x5605d6){scripts[_0xaf12('0x60')](_0x165e46[_0xaf12('0x5c')],_0x165e46[_0xaf12('0x61')]||'en',0x1)['then'](function(_0x642836){_0x5605d6(null,_0x642836);})[_0xaf12('0x13')](function(_0x15e38e){_0x5605d6(_0x15e38e);});};AGIVertices['prototype'][_0xaf12('0x62')]=function(_0x295baf,_0x514279){var _0x2508cf={'uri':_0x295baf[_0xaf12('0x63')],'method':_0x295baf['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x295baf[_0xaf12('0x64')])===_0xaf12('0x65')&&parseInt(_0x295baf['timeout'])>=0x1?parseInt(_0x295baf[_0xaf12('0x64')])*0x3e8:0x5*0x3e8};if(_[_0xaf12('0x66')]([_0xaf12('0x67'),_0xaf12('0x68')],_0x2508cf[_0xaf12('0x69')][_0xaf12('0x6a')]())){try{_0x2508cf[_0xaf12('0x6b')]=_0x295baf[_0xaf12('0xa')]?JSON[_0xaf12('0x6c')](_0x295baf['rawBody']):{};}catch(_0x5956c6){logger[_0xaf12('0x30')](_0xaf12('0x6d'),_0x5956c6);}}try{_0x2508cf[_0xaf12('0x6e')]=_0x295baf[_0xaf12('0x6f')]?JSON[_0xaf12('0x6c')](_0x295baf[_0xaf12('0x6f')]):{};}catch(_0x4274e6){logger[_0xaf12('0x30')](_0xaf12('0x70'),_0x4274e6);}if(_0x295baf[_0xaf12('0x71')]){try{var _0x34debf=require(_0x295baf['computedVariables'])[_0xaf12('0x72')](this,_0x2508cf);_0x2508cf[_0xaf12('0x73')]=Mustache['render'](_0x295baf['url'],_0x34debf,{},['$$','$$']);if(_0x2508cf['headers']){_0x2508cf['headers']=JSON['parse'](Mustache[_0xaf12('0x74')](JSON[_0xaf12('0x75')](_0x2508cf[_0xaf12('0x6e')]),_0x34debf,{},['$$','$$']));}if(_0x2508cf[_0xaf12('0x6b')]){_0x2508cf[_0xaf12('0x6b')]=JSON[_0xaf12('0x6c')](Mustache[_0xaf12('0x74')](JSON['stringify'](_0x2508cf['body']),_0x34debf,{},['$$','$$']));}}catch(_0x4cbd7e){logger[_0xaf12('0x30')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x4cbd7e);}}rp(_0x2508cf)[_0xaf12('0x11')](function(_0x5f46e1){var _0x5e60fb={'statusCode':_0x5f46e1[_0xaf12('0x76')]||0xc8,'statusMessage':_0x5f46e1[_0xaf12('0x77')]||'OK','headers':_0x5f46e1[_0xaf12('0x6e')]||{},'body':_0x5f46e1['body']||{}};_0x514279(null,_0x5e60fb);})[_0xaf12('0x13')](function(_0x5961f3){var _0x5e3fa0={'statusCode':_0x5961f3[_0xaf12('0x76')]||0x1f4,'statusMessage':_0x5961f3[_0xaf12('0x78')]||_0xaf12('0x79'),'headers':_0x5961f3[_0xaf12('0x7a')][_0xaf12('0x6e')]||{},'body':_0x5961f3[_0xaf12('0x7a')]['body']||{}};_0x514279(null,_0x5e3fa0);});};AGIVertices['prototype']['googleDialogflow']=function(_0x54206f,_0x2c7ac3){scripts[_0xaf12('0x7b')](this[_0xaf12('0xe')][_0xaf12('0x35')],_0x54206f[_0xaf12('0x7c')],_0x54206f[_0xaf12('0x5c')],_0x54206f[_0xaf12('0x7d')]||'en')[_0xaf12('0x11')](function(_0x24094a){_0x2c7ac3(null,_0x24094a);})[_0xaf12('0x13')](function(_0x7df54c){_0x2c7ac3(_0x7df54c);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x7e')]=function(_0x1a4184,_0x6e13ed){scripts[_0xaf12('0x7e')](this[_0xaf12('0xe')][_0xaf12('0x35')],_0x1a4184[_0xaf12('0x7f')],_0x1a4184['client_email'],_0x1a4184['private_key'],_0x1a4184[_0xaf12('0x5c')],_0x1a4184[_0xaf12('0x80')]||'en')[_0xaf12('0x11')](function(_0x5c40a9){_0x6e13ed(null,_0x5c40a9);})['catch'](function(_0x4d18ef){_0x6e13ed(_0x4d18ef);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x81')]=function(_0xe52844,_0x3da929){scripts[_0xaf12('0x81')](this[_0xaf12('0xe')],_0xe52844)['then'](function(_0x52a756){_0x3da929(null,_0x52a756);})[_0xaf12('0x13')](function(_0x3370de){_0x3da929(_0x3370de);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x82')]=function(_0x3084ee,_0x1119ee){scripts[_0xaf12('0x82')](_0x3084ee[_0xaf12('0x7c')],_0x3084ee[_0xaf12('0x5c')],_0x3084ee['ispeech_tts_language']||_0xaf12('0x5d'),_0x3084ee[_0xaf12('0x83')])['then'](function(_0x39045c){_0x1119ee(null,_0x39045c);})['catch'](function(_0x587778){_0x1119ee(_0x587778);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x84')]=function(_0x381580,_0x21957e,_0x56ca2b){scripts[_0xaf12('0x84')](_0x21957e,_0x381580[_0xaf12('0x7c')],_0x381580[_0xaf12('0x85')]||'en-US',this[_0xaf12('0x86')](_0x381580['model'])?_0x381580[_0xaf12('0x87')]:undefined)[_0xaf12('0x11')](function(_0x1bf6d8){_0x56ca2b(null,_0x1bf6d8);})[_0xaf12('0x13')](function(_0xed8de2){_0x56ca2b(_0xed8de2);});};AGIVertices[_0xaf12('0x14')]['awsPolly']=function(_0x5888af,_0x8da8e7){scripts[_0xaf12('0x88')](_0x5888af[_0xaf12('0x89')],_0x5888af[_0xaf12('0x8a')],_0x5888af['aws_polly_region'],_0x5888af['aws_polly_voice']||_0xaf12('0x8b'),_0x5888af[_0xaf12('0x5c')],_0x5888af['aws_text_type']||_0xaf12('0x5c'))[_0xaf12('0x11')](function(_0x3690db){_0x8da8e7(null,_0x3690db);})[_0xaf12('0x13')](function(_0x265aa1){_0x8da8e7(_0x265aa1);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x8c')]=function(_0x1a5a75,_0x5764c3){scripts['awsLex'](this[_0xaf12('0xe')][_0xaf12('0x35')],_0x1a5a75[_0xaf12('0x89')],_0x1a5a75[_0xaf12('0x8a')],_0x1a5a75[_0xaf12('0x8d')],_0x1a5a75[_0xaf12('0x5c')],_0x1a5a75['aws_bot_name'])['then'](function(_0x1a225c){_0x5764c3(null,_0x1a225c);})[_0xaf12('0x13')](function(_0x3e4bb5){_0x5764c3(_0x3e4bb5);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x8e')]=function(_0x581e61,_0xba79ba,_0x47ee02){scripts[_0xaf12('0x8e')](_0xba79ba,_0x581e61[_0xaf12('0x7c')],_0x581e61[_0xaf12('0x8f')]||'en-US')[_0xaf12('0x11')](function(_0x266bff){_0x47ee02(null,_0x266bff);})[_0xaf12('0x13')](function(_0x27c8ba){_0x47ee02(_0x27c8ba);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x90')]=function(_0x258dee,_0xdb0862,_0x1229c1){scripts['tildeASR'](_0xdb0862,_0x258dee['appid'],_0x258dee[_0xaf12('0x91')],_0x258dee['uri'])[_0xaf12('0x11')](function(_0x5ba3b4){_0x1229c1(null,_0x5ba3b4);})['catch'](function(_0x77da41){_0x1229c1(_0x77da41);});};AGIVertices[_0xaf12('0x14')][_0xaf12('0x92')]=function(_0x389807){var _0x402eb0=_[_0xaf12('0x66')](verticesWithRetry,_0x389807[_0xaf12('0x37')])?_0x389807:_[_0xaf12('0x93')](_0x389807);for(var _0x3a2127 in _0x402eb0){if(_0x402eb0[_0xaf12('0x94')](_0x3a2127)){if(_0x402eb0[_0x3a2127]&&_[_0xaf12('0x95')](_0x402eb0[_0x3a2127])){if(_[_0xaf12('0x66')](recursiveMapAttributes,_0x3a2127)){_0x402eb0[_0x3a2127]=this[_0xaf12('0x96')](_0x402eb0[_0x3a2127]);}else{_0x402eb0[_0x3a2127]=this[_0xaf12('0x97')](_0x402eb0[_0x3a2127]);}}}}return _0x402eb0;};AGIVertices[_0xaf12('0x14')]['recursiveNodeIndex']=function(_0x1b44e2){for(var _0x384819 in _0x1b44e2){if(_0x1b44e2[_0xaf12('0x94')](_0x384819)){if(_[_0xaf12('0x98')](_0x1b44e2[_0x384819])){this['recursiveNodeIndex'](_0x1b44e2[_0x384819]);}else if(_['isArray'](_0x1b44e2[_0x384819])){for(var _0x305064=0x0;_0x305064<_0x1b44e2[_0x384819][_0xaf12('0x99')];_0x305064++){this[_0xaf12('0x9a')](_0x1b44e2[_0x384819][_0x305064]);}}else if(_[_0xaf12('0x95')](_0x1b44e2[_0x384819])){_0x1b44e2[_0x384819]=this[_0xaf12('0x97')](_0x1b44e2[_0x384819]);}}}};AGIVertices['prototype'][_0xaf12('0x9b')]=function(_0x3f41f1,_0x3a03ad){for(var _0x29f49f in _0x3f41f1){if(_0x3f41f1['hasOwnProperty'](_0x29f49f)){if(_[_0xaf12('0x98')](_0x3f41f1[_0x29f49f])){if(!_[_0xaf12('0x41')](_0x3f41f1[_0x29f49f])){this[_0xaf12('0x9b')](_0x3f41f1[_0x29f49f],util[_0xaf12('0x52')](_0xaf12('0x9c'),_0x3a03ad,_0x29f49f));}}else if(_[_0xaf12('0x9d')](_0x3f41f1[_0x29f49f])){for(var _0x32fd46=0x0;_0x32fd46<_0x3f41f1[_0x29f49f]['length'];_0x32fd46++){this[_0xaf12('0x9b')](_0x3f41f1[_0x29f49f][_0x32fd46],util['format']('%s.%s',_0x3a03ad,_0x29f49f+'['+_0x32fd46+']'));}}else{if(!_[_0xaf12('0x42')](_0x3f41f1[_0x29f49f])){this[_0xaf12('0xe')][_0xaf12('0x9e')](util['format'](_0xaf12('0x9c'),_0x3a03ad,_0x29f49f),_0x3f41f1[_0x29f49f]);}}}}};AGIVertices[_0xaf12('0x14')][_0xaf12('0x96')]=function(_0x257a37){try{var _0x11df8a=JSON[_0xaf12('0x6c')](_0x257a37);this[_0xaf12('0x9a')](_0x11df8a);return JSON[_0xaf12('0x75')](_0x11df8a);}catch(_0x14c1d7){return this[_0xaf12('0x97')](_0x257a37);}};AGIVertices[_0xaf12('0x14')][_0xaf12('0x97')]=function(_0x1e896b){var _0x1f9c5a=_0x1e896b[_0xaf12('0x9f')]('{');for(var _0xe495c2=0x1;_0xe495c2<_0x1f9c5a['length'];_0xe495c2+=0x1){var _0x4bf7a5=_0x1f9c5a[_0xe495c2][_0xaf12('0x9f')]('}');if(_0x4bf7a5['length']>0x1){_0x1e896b=_0x1e896b[_0xaf12('0xa0')]('{'+_0x4bf7a5[0x0]+'}',this['channel'][_0xaf12('0x10')](_0x4bf7a5[0x0])[_0xaf12('0xa1')]||_0x4bf7a5[0x0]);}}if(_0x1f9c5a[_0xaf12('0x99')]===0x1){return _0x1e896b[_0xaf12('0x4a')]();}return this[_0xaf12('0x97')](_0x1e896b);};AGIVertices[_0xaf12('0x14')][_0xaf12('0xa2')]=function(_0x4c651b,_0x4ccdad){var _0x23adc1=this['channel']['getVariable'](_0x4c651b);if(_0x23adc1[_0xaf12('0xa3')]===-0x1){return _0x23adc1;}logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xa4'),_0x4ccdad,_0x23adc1[_0xaf12('0xa1')]));return this[_0xaf12('0xe')][_0xaf12('0x9e')](_0x4ccdad,_0x23adc1[_0xaf12('0xa1')]);};AGIVertices[_0xaf12('0x14')][_0xaf12('0x86')]=function(_0x517b53){return _0x517b53&&_0x517b53!=='0'&&_0x517b53!=='-1'&&_0x517b53!=='';};AGIVertices['prototype'][_0xaf12('0xa5')]=function(_0x204edf){this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x204edf,'-');_0x204edf[_0xaf12('0xa6')]=_0x204edf[_0xaf12('0xa5')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xaf12('0x14')][_0xaf12('0xa7')]=function(_0x4e82f3){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xa8'),_0x4e82f3['label']));if(!this[_0xaf12('0x86')](_0x4e82f3['text'])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xaa'));}var _0x2b7a16='\x22'+_0x4e82f3[_0xaf12('0x5c')]+'\x22';if(this[_0xaf12('0x86')](_0x4e82f3['options'])){_0x2b7a16+=','+_0x4e82f3[_0xaf12('0x7a')];}var _0x147785=this[_0xaf12('0xe')][_0xaf12('0x56')](_0xaf12('0xab'),_0x2b7a16);if(_0x147785['result']===-0x1){return _0x147785;}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x2b7a16));};AGIVertices['prototype']['mrcprecog']=function(_0x55d189){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xac'),_0x55d189['label']));if(!this[_0xaf12('0x86')](_0x55d189[_0xaf12('0xad')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x249f43=_0x55d189[_0xaf12('0xad')];if(this[_0xaf12('0x86')](_0x55d189['options'])){_0x249f43+=','+_0x55d189[_0xaf12('0x7a')];}var _0x1237e4=this[_0xaf12('0xe')][_0xaf12('0x56')]('MRCPRecog',_0x249f43);if(_0x1237e4[_0xaf12('0xa3')]===-0x1){return _0x1237e4;}var _0x45b54c=this[_0xaf12('0xa2')](_0xaf12('0xae'),'MRCP_RECOG_CONFIDENCE');if(_0x45b54c[_0xaf12('0xa3')]===-0x1){return _0x45b54c;}var _0x365510=this[_0xaf12('0xa2')](_0xaf12('0xaf'),_0xaf12('0xb0'));if(_0x365510[_0xaf12('0xa3')]===-0x1){return _0x365510;}var _0x174151=this[_0xaf12('0xa2')](_0xaf12('0xb1'),'MRCP_RECOG_INSTANCE');if(_0x174151[_0xaf12('0xa3')]===-0x1){return _0x174151;}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('Executed\x20command\x20MRCPRecog\x20%s',_0x249f43));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x7')]=function(_0x3928ae){logger['info'](util[_0xaf12('0x52')](_0xaf12('0xb2'),_0x3928ae[_0xaf12('0x36')]));return this[_0xaf12('0xe')][_0xaf12('0x7')]([_0x3928ae['command'],_0x3928ae[_0xaf12('0xb3')]]);};AGIVertices[_0xaf12('0x14')][_0xaf12('0xb4')]=function(_0x3b3e4c){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xb5'),_0x3b3e4c[_0xaf12('0x36')]));if(this[_0xaf12('0x86')](_0x3b3e4c[_0xaf12('0x64')])){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xb6'),_0x3b3e4c['timeout']));var _0x34c271=this[_0xaf12('0xe')]['wait'](_0x3b3e4c['timeout']);if(_0x34c271[_0xaf12('0xa3')]===-0x1){return _0x34c271;}}return this[_0xaf12('0xe')]['answer']();};AGIVertices[_0xaf12('0x14')]['callback']=function(_0x266d1a){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xb7'),_0x266d1a['label']));if(!this['isConfigured'](_0x266d1a['list_id'])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x266d1a,_0xaf12('0xb8'));}_0x266d1a[_0xaf12('0x48')]=moment();if(this['isConfigured'](_0x266d1a['delay'])){_0x266d1a[_0xaf12('0x48')]=moment()[_0xaf12('0xb9')](_0x266d1a['delay'],'minutes');}if(!this[_0xaf12('0x86')](_0x266d1a[_0xaf12('0xba')])){_0x266d1a[_0xaf12('0xba')]=0x2;}this[_0xaf12('0x40')]['sync'](this,_0x266d1a);return this[_0xaf12('0xe')][_0xaf12('0xa9')](util['format'](_0xaf12('0xbb'),_0x266d1a[_0xaf12('0x46')],_0x266d1a[_0xaf12('0x47')],_0x266d1a[_0xaf12('0x48')]));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xbc')]=function(_0x545c4c){logger['info'](util[_0xaf12('0x52')](_0xaf12('0xbd'),_0x545c4c['label']));var _0x26ac41=this['channel'][_0xaf12('0x56')](_0x545c4c['application'],_0x545c4c[_0xaf12('0x7a')]);if(_0x26ac41[_0xaf12('0xa3')]===-0x1){return _0x26ac41;}return this['channel'][_0xaf12('0xa9')](util['format'](_0xaf12('0xbe'),_0x545c4c[_0xaf12('0xbf')],_0x545c4c['options']));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xc0')]=function(_0x39f807){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x39f807[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x39f807[_0xaf12('0x5c')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xaa'));}var _0x1284b9='\x22'+_0x39f807[_0xaf12('0x5c')]+'\x22';if(this[_0xaf12('0x86')](_0x39f807['options'])){_0x1284b9+=','+_0x39f807[_0xaf12('0x7a')];}var _0x1aa10e=this[_0xaf12('0xe')][_0xaf12('0x56')](_0xaf12('0xab'),_0x1284b9);if(_0x1aa10e[_0xaf12('0xa3')]===-0x1){return _0x1aa10e;}return this[_0xaf12('0xe')]['noop'](util['format'](_0xaf12('0xc1'),_0x1284b9));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xc2')]=function(_0x44e692){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xc3'),_0x44e692[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x44e692['text'])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xaa'));}var _0xda9b8d='\x22'+_0x44e692[_0xaf12('0x5c')]+'\x22';if(this[_0xaf12('0x86')](_0x44e692[_0xaf12('0x7a')])){_0xda9b8d+=','+_0x44e692[_0xaf12('0x7a')];}var _0x1df711=this[_0xaf12('0xe')][_0xaf12('0x56')]('MRCPSynth',_0xda9b8d);if(_0x1df711['result']===-0x1){return _0x1df711;}return this[_0xaf12('0xe')]['noop'](util[_0xaf12('0x52')](_0xaf12('0xc1'),_0xda9b8d));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xc4')]=function(_0x218097){logger['info'](util[_0xaf12('0x52')](_0xaf12('0xc5'),_0x218097[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x218097[_0xaf12('0xad')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xc6'));}var _0x28b161=_0x218097[_0xaf12('0xad')];if(this[_0xaf12('0x86')](_0x218097[_0xaf12('0x7a')])){_0x28b161+=','+_0x218097[_0xaf12('0x7a')];}var _0x9789fd=this[_0xaf12('0xe')][_0xaf12('0x56')](_0xaf12('0xc7'),_0x28b161);if(_0x9789fd[_0xaf12('0xa3')]===-0x1){return _0x9789fd;}var _0x483e1c=this[_0xaf12('0xa2')](_0xaf12('0xae'),'LUMENVOX_ASR_CONFIDENCE');if(_0x483e1c[_0xaf12('0xa3')]===-0x1){return _0x483e1c;}var _0x36ffaa=this[_0xaf12('0xa2')]('RECOG_INPUT()',_0xaf12('0xc8'));if(_0x36ffaa['result']===-0x1){return _0x36ffaa;}var _0x486b06=this[_0xaf12('0xa2')]('RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE');if(_0x486b06[_0xaf12('0xa3')]===-0x1){return _0x486b06;}return this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xc9'),_0x28b161));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xca')]=function(_0x103159){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x103159[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x103159[_0xaf12('0xad')])){return this['channel'][_0xaf12('0xa9')](_0xaf12('0xc6'));}var _0x5a4dc9=_0x103159[_0xaf12('0xad')];if(this[_0xaf12('0x86')](_0x103159[_0xaf12('0x7a')])){_0x5a4dc9+=','+_0x103159[_0xaf12('0x7a')];}var _0x4cf936=this[_0xaf12('0xe')][_0xaf12('0x56')](_0xaf12('0xc7'),_0x5a4dc9);if(_0x4cf936[_0xaf12('0xa3')]===-0x1){return _0x4cf936;}var _0x40772f=this[_0xaf12('0xa2')](_0xaf12('0xae'),'SESTEK_ASR_CONFIDENCE');if(_0x40772f[_0xaf12('0xa3')]===-0x1){return _0x40772f;}var _0x546659=this[_0xaf12('0xa2')](_0xaf12('0xaf'),_0xaf12('0xcb'));if(_0x546659[_0xaf12('0xa3')]===-0x1){return _0x546659;}var _0x279ce1=this[_0xaf12('0xa2')](_0xaf12('0xb1'),'SESTEK_ASR_INSTANCE');if(_0x279ce1[_0xaf12('0xa3')]===-0x1){return _0x279ce1;}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5a4dc9));};AGIVertices['prototype']['database']=function(_0x2b4eb7){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x2b4eb7[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x2b4eb7[_0xaf12('0xcc')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x2b4eb7,_0xaf12('0xcd'));}var _0x4cb0bd=this[_0xaf12('0x18')]['sync'](this,_0x2b4eb7[_0xaf12('0xcc')]);if(!_0x4cb0bd){return this['channel'][_0xaf12('0x30')](_0x2b4eb7,_0xaf12('0xce'));}if(!this[_0xaf12('0x86')](_0x2b4eb7[_0xaf12('0x2d')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x2b4eb7,_0xaf12('0xcf'));}var _0x2f5e0a=_0x2b4eb7['query'][_0xaf12('0x58')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xd0'),_0x2f5e0a));var _0x49ddc0=this[_0xaf12('0x2a')]['sync'](this,_0x4cb0bd,_0x2f5e0a);this[_0xaf12('0x34')]['sync'](this,_0x2b4eb7,_0x2f5e0a);if(!this['isConfigured'](_0x2b4eb7[_0xaf12('0xd1')])){return this['channel'][_0xaf12('0xa9')](_0xaf12('0xd2'));}var _0x12d24f=this[_0xaf12('0x10')][_0xaf12('0x72')](this,_0x2b4eb7[_0xaf12('0xd1')]);if(!_0x12d24f){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x2b4eb7,_0xaf12('0xd3'));}var _0x1b3d52=this;_0x49ddc0[_0xaf12('0xd4')](function(_0x274f74,_0x25b61d){Object[_0xaf12('0xd5')](_0x274f74)[_0xaf12('0xd4')](function(_0x2eb76d){_0x1b3d52[_0xaf12('0xe')]['setVariable'](util['format']('%s[%s][%s]',_0x12d24f,_0x25b61d,_0x2eb76d),_0x274f74[_0x2eb76d]);});});this['channel'][_0xaf12('0x9e')](util[_0xaf12('0x52')](_0xaf12('0xd6'),_0x12d24f),_0x49ddc0['length']);return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xd7'),_0x12d24f));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xd8')]=function(_0x5dc966){logger[_0xaf12('0xd9')](util[_0xaf12('0x52')](_0xaf12('0xda'),_0x5dc966[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x5dc966[_0xaf12('0xdb')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x5dc966,_0xaf12('0xdc'));}var _0x3f6687=this[_0xaf12('0x1b')][_0xaf12('0x72')](this,_0x5dc966[_0xaf12('0xdb')]);if(!_0x3f6687){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x5dc966,_0xaf12('0xdd'));}var _0x249463=this['channel'][_0xaf12('0x56')](_0xaf12('0xde'),[util['format'](_0xaf12('0xdf'),_0x3f6687),_0x5dc966[_0xaf12('0x64')],_0x5dc966[_0xaf12('0xe0')],_0x5dc966['url']]);if(_0x249463[_0xaf12('0xa3')]===-0x1){return _0x249463;}return this['channel']['noop'](util['format'](_0xaf12('0xe1'),_0xaf12('0xde')));};AGIVertices['prototype'][_0xaf12('0xe2')]=function(_0x554563){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x554563[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x554563[_0xaf12('0x7c')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xe3'));}if(!this[_0xaf12('0x86')](_0x554563[_0xaf12('0x5c')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xaa'));}this[_0xaf12('0xe')][_0xaf12('0xe4')]=!![];this[_0xaf12('0x34')](_0x554563);this['createSquareMessage'](_0x554563[_0xaf12('0x5c')],'in','','');this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xe5'),_0x554563[_0xaf12('0x5c')]));var _0x31a9f7=this[_0xaf12('0x7b')]['sync'](this,_0x554563);if(_0x31a9f7){for(var _0x4781bb in _0x31a9f7){if(_0x31a9f7[_0xaf12('0x94')](_0x4781bb)){this['channel']['setVariable'](util['format'](_0xaf12('0xe6'),_0x4781bb['toUpperCase']()),_0x31a9f7[_0x4781bb]);}}this['createSquareMessage'](_0x31a9f7['speech'],_0xaf12('0xe7'),'dialogflow','');return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xe8'),_0x31a9f7[_0xaf12('0xe9')]));}return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x554563,_0xaf12('0xea'));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xeb')]=function(_0x473ab0){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0xec'),_0x473ab0['label']));if(!this[_0xaf12('0x86')](_0x473ab0['dialogflowV2_project_id'])){return this['channel'][_0xaf12('0xa9')](_0xaf12('0xed'));}if(!this[_0xaf12('0x86')](_0x473ab0[_0xaf12('0xee')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xef'));}if(!this[_0xaf12('0x86')](_0x473ab0[_0xaf12('0xf0')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xf1'));}if(!this[_0xaf12('0x86')](_0x473ab0['dialogflowV2_language'])){return this['channel']['noop'](_0xaf12('0xf2'));}if(!this['isConfigured'](_0x473ab0[_0xaf12('0x5c')])){return this[_0xaf12('0xe')]['noop'](_0xaf12('0xaa'));}this['channel'][_0xaf12('0xe4')]=!![];this['createSquareDetailsReport'](_0x473ab0);this[_0xaf12('0x3f')](_0x473ab0['text'],'in','','');this[_0xaf12('0xe')]['noop'](util['format'](_0xaf12('0xf3'),_0x473ab0[_0xaf12('0x5c')]));var _0x326bdf=this[_0xaf12('0x7e')][_0xaf12('0x72')](this,_0x473ab0);if(_0x326bdf){for(var _0x418662 in _0x326bdf){if(_0x326bdf['hasOwnProperty'](_0x418662)){if(_0x418662!==_0xaf12('0xf4')){this['channel'][_0xaf12('0x9e')](util[_0xaf12('0x52')](_0xaf12('0xe6'),_0x418662[_0xaf12('0x6a')]()),_0x326bdf[_0x418662]);}}}this[_0xaf12('0x3f')](_0x326bdf['speech'],_0xaf12('0xe7'),'dialogflowV2',_0x326bdf[_0xaf12('0xf4')]);return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xf5'),_0x326bdf['speech']));}return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x473ab0,_0xaf12('0xf6'));};AGIVertices['prototype'][_0xaf12('0xf7')]=function(_0x3e99f9){logger['info'](util['format'](_0xaf12('0xf8'),_0x3e99f9[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x3e99f9[_0xaf12('0xf9')])){return this[_0xaf12('0xe')]['noop'](_0xaf12('0xfa'));}if(!this[_0xaf12('0x86')](_0x3e99f9[_0xaf12('0xfb')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xfc'));}if(!this[_0xaf12('0x86')](_0x3e99f9['password'])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xfd'));}if(!this[_0xaf12('0x86')](_0x3e99f9[_0xaf12('0xfe')])){return this['channel'][_0xaf12('0xa9')]('no\x20text\x20configured');}this[_0xaf12('0xe')][_0xaf12('0xe4')]=!![];this[_0xaf12('0x34')](_0x3e99f9);this['createSquareMessage'](_0x3e99f9['text'],'in','','');this[_0xaf12('0xe')]['noop'](util[_0xaf12('0x52')](_0xaf12('0xff'),_0x3e99f9[_0xaf12('0x5c')]));var _0x1b92a6=this[_0xaf12('0x81')][_0xaf12('0x72')](this,_0x3e99f9);if(_0x1b92a6){for(var _0xb63628 in _0x1b92a6){if(_0x1b92a6[_0xaf12('0x94')](_0xb63628)){this[_0xaf12('0xe')]['setVariable'](util[_0xaf12('0x52')](_0xaf12('0x100'),_0xb63628[_0xaf12('0x6a')]()),_0x1b92a6[_0xb63628]);}}this[_0xaf12('0x3f')](_0x1b92a6[_0xaf12('0xe9')],_0xaf12('0xe7'),'sesteknda','');if(_0x1b92a6[_0xaf12('0x101')]){this['channel'][_0xaf12('0xa9')](util['format'](_0xaf12('0x102'),_0x1b92a6[_0xaf12('0x101')]));var _0x54223e=this[_0xaf12('0xe')][_0xaf12('0x103')](_0x1b92a6[_0xaf12('0x101')]);try{fs[_0xaf12('0x104')](_0x1b92a6[_0xaf12('0x101')]+_0xaf12('0x105'));}catch(_0x1165ea){logger[_0xaf12('0x30')](_0x1165ea);}return _0x54223e;}else{return this[_0xaf12('0xe')][_0xaf12('0xa9')](util['format'](_0xaf12('0x106'),_0x1b92a6[_0xaf12('0xe9')]));}}return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x3e99f9,'SestekNDA\x20is\x20unreachable');};AGIVertices['prototype'][_0xaf12('0x107')]=function(_0x1019e7){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x108'),_0x1019e7['label']));return this[_0xaf12('0xe')]['noop']('end');};AGIVertices[_0xaf12('0x14')][_0xaf12('0x109')]=function(_0x1afe39){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x10a'),_0x1afe39['label']));var _0x4b3ccb='';if(_0x1afe39[_0xaf12('0x10b')]){if(!this[_0xaf12('0x86')](_0x1afe39[_0xaf12('0x10b')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x1afe39,_0xaf12('0x10c'));}else{var _0x4ccbcd=parseInt(_0x1afe39[_0xaf12('0x10b')],0xa);if(isNaN(_0x4ccbcd)){_0x4b3ccb=_0x1afe39['trunk_id'];}else{_0x4b3ccb=this[_0xaf12('0x1d')][_0xaf12('0x72')](this,_0x1afe39['trunk_id']);if(!_0x4b3ccb){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x1afe39,'no\x20trunk\x20found');}}}}else if(_0x1afe39[_0xaf12('0x10d')]){_0x4b3ccb=_0x1afe39[_0xaf12('0x10d')];}else{return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x1afe39,_0xaf12('0x10c'));}var _0x1f7b0d=this[_0xaf12('0xe')][_0xaf12('0x56')]('DIAL',[util[_0xaf12('0x52')](_0xaf12('0x10e'),_0x4b3ccb,_0x1afe39['phone']),_0x1afe39['timeout'],_0x1afe39[_0xaf12('0xe0')],_0x1afe39[_0xaf12('0x63')]]);if(_0x1f7b0d[_0xaf12('0xa3')]===-0x1){return _0x1f7b0d;}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xe1'),_0xaf12('0xde')));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x10f')]=function(_0x37dac9){logger['info'](util[_0xaf12('0x52')](_0xaf12('0x110'),_0x37dac9[_0xaf12('0x36')]));return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x10f'));};AGIVertices[_0xaf12('0x14')][_0xaf12('0xc')]=function(_0x3e61f4){logger['info'](util[_0xaf12('0x52')](_0xaf12('0x111'),_0x3e61f4[_0xaf12('0x36')]));if(_0x3e61f4[_0xaf12('0xa6')]===0x0){return this[_0xaf12('0xa5')](_0x3e61f4);}_0x3e61f4['retry']-=0x1;if(!this['isConfigured'](_0x3e61f4[_0xaf12('0x112')])){return this[_0xaf12('0xe')]['error'](_0x3e61f4,_0xaf12('0x113'));}var _0x19b4d7=this[_0xaf12('0x1f')][_0xaf12('0x72')](this,_0x3e61f4[_0xaf12('0x112')]);if(!_0x19b4d7){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x3e61f4,_0xaf12('0x114'));}if(!this[_0xaf12('0x86')](_0x3e61f4[_0xaf12('0xd1')])){return this['channel']['error']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x58e3bc=this[_0xaf12('0xe')][_0xaf12('0x115')](_0x19b4d7,_0x3e61f4[_0xaf12('0x116')],_0x3e61f4[_0xaf12('0x117')]);var _0x1291ad=_0x58e3bc[_0xaf12('0xa3')]?_0x58e3bc[_0xaf12('0xa3')]['toString']():'';logger[_0xaf12('0x2b')](_0xaf12('0x118'),JSON['stringify'](_0x58e3bc));if(_0x58e3bc[_0xaf12('0xa3')]===-0x1){this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x3e61f4,_0x1291ad);return _0x58e3bc;}else if(_0x58e3bc[_0xaf12('0xa1')]===_0xaf12('0x64')){_0x58e3bc[_0xaf12('0xa3')]=_0x1291ad['length']>=parseInt(_0x3e61f4['mindigit'])?'x':'i';}else{_0x58e3bc[_0xaf12('0xa3')]=_0x1291ad[_0xaf12('0x99')]>=parseInt(_0x3e61f4[_0xaf12('0x119')])&&_0x1291ad[_0xaf12('0x99')]<=parseInt(_0x3e61f4[_0xaf12('0x117')])?'x':'i';}var _0x4faf19=this[_0xaf12('0x10')]['sync'](this,_0x3e61f4['variable_id']);if(!_0x4faf19){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x3e61f4,_0xaf12('0xd3'));}this[_0xaf12('0xe')][_0xaf12('0x9e')](_0x4faf19,_0x1291ad);if(this[_0xaf12('0x86')](_0x3e61f4['hiddendigitsnum'])){var _0x15ecb9=parseInt(_0x3e61f4['hiddendigitsnum'],0xa);var _0x3b1d49=rs[_0xaf12('0x11a')]({'charset':'*','length':_0x15ecb9});var _0x247fe4=_0x1291ad[_0xaf12('0x99')];if(_0x247fe4>0x0){if(_0x247fe4>_0x15ecb9){this['createSquareDetailsReport'][_0xaf12('0x72')](this,_0x3e61f4,_0x3e61f4[_0xaf12('0x11b')]===_0xaf12('0x11c')?_0x3b1d49+_0x1291ad[_0xaf12('0x11d')](_0x15ecb9):_0x1291ad[_0xaf12('0x11d')](0x0,_0x247fe4-_0x15ecb9)+_0x3b1d49);}else{this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x3e61f4,rs[_0xaf12('0x11a')]({'charset':'*','length':_0x247fe4}));}}else{this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x3e61f4,'');}}else{this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x3e61f4,_0x1291ad);}return _0x58e3bc;};AGIVertices[_0xaf12('0x14')]['getsecretdigits']=function(_0x451231){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x11e'),_0x451231['label']));return this['getdigits'](_0x451231);};AGIVertices['prototype']['goal']=function(_0x18a632){logger[_0xaf12('0x2b')](util['format'](_0xaf12('0x11f'),_0x18a632[_0xaf12('0x36')]));this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x18a632,_0x18a632[_0xaf12('0x120')]);return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x121'),_0x18a632[_0xaf12('0x120')]));};AGIVertices[_0xaf12('0x14')]['awspolly']=function(_0x28e24c){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x122'),_0x28e24c[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x28e24c[_0xaf12('0x89')])||!this['isConfigured'](_0x28e24c['aws_secret_access_key'])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x123'));}if(!this[_0xaf12('0x86')](_0x28e24c[_0xaf12('0x5c')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xaa'));}this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('Trying\x20aws\x20Polly\x20%s',_0x28e24c['text']));var _0x504801=this[_0xaf12('0x88')][_0xaf12('0x72')](this,_0x28e24c);if(_0x504801){this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x124'),_0x504801));var _0x30e409=this[_0xaf12('0xe')][_0xaf12('0x103')](_0x504801);try{fs[_0xaf12('0x104')](_0x504801+_0xaf12('0x105'));}catch(_0x55918f){logger[_0xaf12('0x30')](_0x55918f);}return _0x30e409;}return this['channel'][_0xaf12('0x30')](_0x28e24c,_0xaf12('0x125'));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x126')]=function(_0x2bdce3){logger[_0xaf12('0x2b')](util['format'](_0xaf12('0x127'),_0x2bdce3[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x2bdce3[_0xaf12('0x89')])||!this[_0xaf12('0x86')](_0x2bdce3[_0xaf12('0x8a')])){return this['channel'][_0xaf12('0xa9')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x2bdce3[_0xaf12('0x128')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x129'));}if(!this[_0xaf12('0x86')](_0x2bdce3['text'])){return this[_0xaf12('0xe')]['noop'](_0xaf12('0xaa'));}this[_0xaf12('0xe')][_0xaf12('0xe4')]=!![];this[_0xaf12('0x34')](_0x2bdce3);this['createSquareMessage'](_0x2bdce3['text'],'in','','');this[_0xaf12('0xe')][_0xaf12('0xa9')](util['format'](_0xaf12('0x12a'),_0x2bdce3[_0xaf12('0x5c')]));var _0x3d927f=this['awsLex'][_0xaf12('0x72')](this,_0x2bdce3);if(_0x3d927f){for(var _0x1f1e90 in _0x3d927f){if(_0x3d927f[_0xaf12('0x94')](_0x1f1e90)&&_['isString'](_0x3d927f[_0x1f1e90])){this[_0xaf12('0xe')]['setVariable'](util[_0xaf12('0x52')](_0xaf12('0x12b'),_0x1f1e90[_0xaf12('0x6a')]()),_0x3d927f[_0x1f1e90]);}}if(_[_0xaf12('0x42')](_0x3d927f[_0xaf12('0x78')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x12c'));}else{this['createSquareMessage'](_0x3d927f[_0xaf12('0x78')],_0xaf12('0xe7'),_0xaf12('0x12d'),'');return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x12e'),_0x3d927f['message']));}}return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x2bdce3,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0xaf12('0x14')][_0xaf12('0x12f')]=function(_0x112c21){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x130'),_0x112c21[_0xaf12('0x36')],_0x112c21[_0xaf12('0x64')]));if(!this[_0xaf12('0x86')](_0x112c21['key'])){return this[_0xaf12('0xe')]['noop']('no\x20key\x20configured');}var _0xf5a2a4=_0xaf12('0x131');var _0x3733a5=util[_0xaf12('0x52')](_0xaf12('0x132'),FILES_PATH,rs[_0xaf12('0x11a')](0x4));var _0x5d5491=util['format'](_0xaf12('0x9c'),_0x3733a5,_0xf5a2a4);var _0x23ebda=!![];if(_0x112c21[_0xaf12('0x133')]===_0xaf12('0x134')){_0x23ebda=![];}var _0x3d837f=this[_0xaf12('0xe')]['recordFile'](_0x3733a5,_0xf5a2a4,_0x112c21[_0xaf12('0x135')],_0x112c21[_0xaf12('0x64')],undefined,_0x23ebda);if(_0x3d837f[_0xaf12('0xa3')]!==-0x1){this[_0xaf12('0xe')]['noop'](util[_0xaf12('0x52')]('google\x20%s\x20file\x20created',_0x5d5491));var _0x4de933=this['googleASR'][_0xaf12('0x72')](this,_0x112c21,_0x5d5491);if(_0x4de933){for(var _0x58dbbe in _0x4de933){if(_0x4de933['hasOwnProperty'](_0x58dbbe)){this[_0xaf12('0xe')][_0xaf12('0x9e')](util[_0xaf12('0x52')](_0xaf12('0x136'),_0x58dbbe[_0xaf12('0x6a')]()),_0x4de933[_0x58dbbe]);}}return this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')]('GoogleASR\x20Result\x20%s',JSON['stringify'](_0x4de933)));}}return _0x3d837f;};AGIVertices['prototype'][_0xaf12('0x137')]=function(_0x557051){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x138'),_0x557051['label']));if(!this[_0xaf12('0x86')](_0x557051['appid'])){return this['channel'][_0xaf12('0xa9')](_0xaf12('0x139'));}if(!this[_0xaf12('0x86')](_0x557051['appsecret'])){return this['channel'][_0xaf12('0xa9')](_0xaf12('0x13a'));}var _0x18bee3=_0xaf12('0x131');var _0x390860=util[_0xaf12('0x52')](_0xaf12('0x132'),FILES_PATH,rs[_0xaf12('0x11a')](0x4));var _0x2a60fc=util[_0xaf12('0x52')](_0xaf12('0x9c'),_0x390860,_0x18bee3);var _0x3f3f04=!![];if(_0x557051[_0xaf12('0x133')]===_0xaf12('0x134')){_0x3f3f04=![];}var _0x12d1b6=this[_0xaf12('0xe')][_0xaf12('0x13b')](_0x390860,_0x18bee3,_0x557051[_0xaf12('0x135')],_0x557051['timeout'],undefined,_0x3f3f04);if(_0x12d1b6[_0xaf12('0xa3')]!==-0x1){this['channel']['noop'](util[_0xaf12('0x52')]('tilde\x20%s\x20file\x20created',_0x2a60fc));var _0x4a84d4=this[_0xaf12('0x90')][_0xaf12('0x72')](this,_0x557051,_0x2a60fc);if(_0x4a84d4){for(var _0x13e114 in _0x4a84d4){if(_0x4a84d4[_0xaf12('0x94')](_0x13e114)){this[_0xaf12('0xe')]['setVariable'](util[_0xaf12('0x52')](_0xaf12('0x13c'),_0x13e114[_0xaf12('0x6a')]()),_0x4a84d4[_0x13e114]);}}return this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')]('TildeASR\x20Result\x20%s',JSON[_0xaf12('0x75')](_0x4a84d4)));}}return _0x12d1b6;};AGIVertices['prototype']['gotoc']=function(_0x109e18){logger[_0xaf12('0x2b')](util['format'](_0xaf12('0x13d'),_0x109e18[_0xaf12('0x36')]));return this[_0xaf12('0xe')][_0xaf12('0x13e')](_0x109e18[_0xaf12('0x3a')],_0x109e18[_0xaf12('0x3b')],_0x109e18['priority']);};AGIVertices[_0xaf12('0x14')][_0xaf12('0x13f')]=function(_0x1473d5){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x1473d5[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x1473d5[_0xaf12('0x140')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x1473d5,_0xaf12('0x141'));}try{var _0x332b7f=eval(_0x1473d5[_0xaf12('0x140')])?_0xaf12('0x142'):_0xaf12('0x143');this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')]('EVAL\x20CONDITION\x20%s\x20%s',_0x1473d5[_0xaf12('0x140')],_0x332b7f));return{'code':0xc8,'result':_0x332b7f};}catch(_0x1305a3){return{'code':0xc8,'result':_0xaf12('0x143')};}};AGIVertices[_0xaf12('0x14')][_0xaf12('0x144')]=function(_0x269289){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x145'),_0x269289[_0xaf12('0x36')]));if(!this['isConfigured'](_0x269289['interval_id'])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x269289,'no\x20interval\x20configured');}var _0x463062=this['getIntervals'][_0xaf12('0x72')](this,_0x269289[_0xaf12('0x146')]);if(!_0x463062){return this[_0xaf12('0xe')]['error'](_0x269289,'no\x20intervals\x20found');}for(var _0x6600c1=0x0;_0x6600c1<_0x463062['length'];_0x6600c1+=0x1){var _0x38202d=this['channel']['getVariable'](util[_0xaf12('0x52')]('IFTIME(%s?true:false)',_0x463062[_0x6600c1]));if(_0x38202d[_0xaf12('0xa3')]===-0x1){return _0x38202d;}logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x147'),_0x463062[_0x6600c1],_0x38202d['extra']));if(_0x38202d[_0xaf12('0xa1')]===_0xaf12('0x142')){logger[_0xaf12('0x2b')](util['format'](_0xaf12('0x147'),_0x463062[_0x6600c1],_0xaf12('0x142')));this[_0xaf12('0xe')][_0xaf12('0xa9')](util['format']('IFTIME\x20%s\x20%s',_0x463062[_0x6600c1],'true'));return{'code':0xc8,'result':_0xaf12('0x142')};}else{logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('IFTIME\x20%s\x20%s',_0x463062[_0x6600c1],_0xaf12('0x143')));this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x147'),_0x463062[_0x6600c1],_0xaf12('0x143')));}}return{'code':0xc8,'result':_0xaf12('0x143')};};AGIVertices['prototype']['hangup']=function(_0x43c182){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x43c182[_0xaf12('0x36')]));return this['channel']['hangup']();};AGIVertices[_0xaf12('0x14')][_0xaf12('0x148')]=function(_0x520ff9){logger['info'](util['format'](_0xaf12('0x149'),_0x520ff9[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x520ff9[_0xaf12('0x7c')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')]('no\x20key\x20configured');}var _0x4316b8=_0xaf12('0x131');var _0xa9f8d5=util['format'](_0xaf12('0x132'),FILES_PATH,rs['generate'](0x4));var _0x11fe17=util[_0xaf12('0x52')]('%s.%s',_0xa9f8d5,_0x4316b8);var _0x488731=!![];if(_0x520ff9[_0xaf12('0x133')]==='NOBEEP'){_0x488731=![];}var _0x3e9f1d=this[_0xaf12('0xe')]['recordFile'](_0xa9f8d5,_0x4316b8,_0x520ff9[_0xaf12('0x135')],_0x520ff9[_0xaf12('0x64')],undefined,_0x488731);if(_0x3e9f1d[_0xaf12('0xa3')]!==-0x1){this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x14a'),_0x11fe17));var _0x401b13=this[_0xaf12('0x84')][_0xaf12('0x72')](this,_0x520ff9,_0x11fe17);if(_0x401b13){for(var _0x499b5b in _0x401b13){if(_0x401b13[_0xaf12('0x94')](_0x499b5b)){this[_0xaf12('0xe')][_0xaf12('0x9e')](util['format'](_0xaf12('0x14b'),_0x499b5b['toUpperCase']()),_0x401b13[_0x499b5b]);}}return this['channel']['noop'](util['format'](_0xaf12('0x14c'),JSON['stringify'](_0x401b13)));}}return _0x3e9f1d;};AGIVertices[_0xaf12('0x14')][_0xaf12('0x14d')]=function(_0x5c35c9){logger['info'](util[_0xaf12('0x52')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x5c35c9[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x5c35c9['key'])){return this['channel'][_0xaf12('0xa9')](_0xaf12('0xe3'));}if(!this[_0xaf12('0x86')](_0x5c35c9[_0xaf12('0x5c')])){return this[_0xaf12('0xe')]['noop']('no\x20text\x20configured');}this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x14e'),_0x5c35c9[_0xaf12('0x5c')]));var _0x50b8d2=this[_0xaf12('0x82')][_0xaf12('0x72')](this,_0x5c35c9);if(_0x50b8d2){this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('ispeech\x20%s\x20file\x20created',_0x50b8d2));var _0x478038=this[_0xaf12('0xe')][_0xaf12('0x103')](_0x50b8d2,_0x5c35c9[_0xaf12('0x135')]);try{fs[_0xaf12('0x104')](_0x50b8d2+_0xaf12('0x105'));}catch(_0x573d73){logger[_0xaf12('0x30')](_0x573d73);}return _0x478038;}return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x5c35c9,_0xaf12('0x14f'));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x150')]=function(_0x157839){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x151'),_0x157839[_0xaf12('0x36')]));if(!this['isConfigured'](_0x157839[_0xaf12('0x152')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x157839,_0xaf12('0x153'));}logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x154'),this[_0xaf12('0xe')]['callerid'],_0x157839[_0xaf12('0x152')]));var _0x3df0d7=this[_0xaf12('0x54')][_0xaf12('0x72')](this,_0x157839[_0xaf12('0x152')]);if(_0x3df0d7){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xaf12('0xe')][_0xaf12('0x38')],_0x157839[_0xaf12('0x152')]));this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x155'),this['channel'][_0xaf12('0x38')],_0x157839[_0xaf12('0x152')]));return{'code':0xc8,'result':_0xaf12('0x156')};}else{logger['info'](util[_0xaf12('0x52')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xaf12('0x38')],_0x157839['findBy']));this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xaf12('0xe')][_0xaf12('0x38')],_0x157839[_0xaf12('0x152')]));return{'code':0xc8,'result':_0xaf12('0x157')};}};AGIVertices['prototype']['logout']=function(_0x1467a6){logger['info'](util[_0xaf12('0x52')](_0xaf12('0x158'),_0x1467a6['label']));if(!this['isConfigured'](_0x1467a6[_0xaf12('0x152')])){return this['channel'][_0xaf12('0x30')](_0x1467a6,_0xaf12('0x153'));}logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x154'),this['channel'][_0xaf12('0x38')],_0x1467a6[_0xaf12('0x152')]));var _0x1c93d9=this[_0xaf12('0x50')][_0xaf12('0x72')](this,_0x1467a6[_0xaf12('0x152')]);if(_0x1c93d9){logger[_0xaf12('0x2b')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xaf12('0xe')]['callerid'],_0x1467a6[_0xaf12('0x152')]));this[_0xaf12('0xe')][_0xaf12('0xa9')](util['format'](_0xaf12('0x155'),this[_0xaf12('0xe')]['callerid'],_0x1467a6[_0xaf12('0x152')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format'](_0xaf12('0x159'),this[_0xaf12('0xe')][_0xaf12('0x38')],_0x1467a6[_0xaf12('0x152')]));this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xaf12('0x38')],_0x1467a6[_0xaf12('0x152')]));return{'code':0xc8,'result':_0xaf12('0x157')};}};AGIVertices['prototype']['math']=function(_0x1049d2){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x1049d2['label']));if(!this[_0xaf12('0x86')](_0x1049d2[_0xaf12('0x15a')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x1049d2,'no\x20operation\x20configured');}this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x15b'),_0x1049d2[_0xaf12('0x15a')]));var _0x42b42d=eval(_0x1049d2[_0xaf12('0x15a')]);if(!this[_0xaf12('0x86')](_0x1049d2['variable_id'])){return this[_0xaf12('0xe')]['noop'](_0xaf12('0xd2'));}var _0x8afc55=this[_0xaf12('0x10')][_0xaf12('0x72')](this,_0x1049d2[_0xaf12('0xd1')]);if(!_0x8afc55){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x1049d2,'no\x20variable\x20found');}if(_[_0xaf12('0x9d')](_0x42b42d)){var _0x490360=this;_0x42b42d[_0xaf12('0xd4')](function(_0x30b013,_0x1849a0){_0x490360['channel'][_0xaf12('0x9e')](util[_0xaf12('0x52')](_0xaf12('0x15c'),_0x8afc55,_0x1849a0),_0x30b013);});return this[_0xaf12('0xe')][_0xaf12('0xa9')](util['format'](_0xaf12('0x15d'),_0x8afc55));}else{return this['channel']['setVariable'](_0x8afc55,_0x42b42d);}};AGIVertices[_0xaf12('0x14')][_0xaf12('0xb')]=function(_0xa0146f){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x15e'),_0xa0146f[_0xaf12('0x36')]));if(_0xa0146f[_0xaf12('0xa6')]===0x0){return this[_0xaf12('0xa5')](_0xa0146f);}_0xa0146f[_0xaf12('0xa6')]-=0x1;if(!this[_0xaf12('0x86')](_0xa0146f[_0xaf12('0x112')])){return this['channel']['error'](_0xa0146f,_0xaf12('0x113'));}var _0x1857c8=this['getSound'][_0xaf12('0x72')](this,_0xa0146f['file_id']);if(!_0x1857c8){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0xa0146f,_0xaf12('0x114'));}var _0x32b4f1=this['channel']['getData'](_0x1857c8,_0xa0146f[_0xaf12('0x116')],_0xa0146f['digit']);var _0x4c2aa2=_0x32b4f1[_0xaf12('0xa3')];if(_0x32b4f1[_0xaf12('0xa3')]===-0x1){this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0xa0146f,'-1');return _0x32b4f1;}else if(_0x32b4f1[_0xaf12('0xa1')]===_0xaf12('0x64')){_0x32b4f1[_0xaf12('0xa3')]=_0x32b4f1[_0xaf12('0xa3')]['length']>0x0?_0x32b4f1[_0xaf12('0xa3')]:'t';}else if(_[_0xaf12('0x41')](_0x32b4f1['result'])){_0x32b4f1[_0xaf12('0xa3')]='#';_0x4c2aa2='#';}if(!this[_0xaf12('0x86')](_0xa0146f[_0xaf12('0xd1')])){this[_0xaf12('0xe')]['noop'](_0xaf12('0xd2'));}else{var _0x10c13c=this[_0xaf12('0x10')][_0xaf12('0x72')](this,_0xa0146f[_0xaf12('0xd1')]);if(!_0x10c13c){return this['channel'][_0xaf12('0x30')](_0xa0146f,_0xaf12('0xd3'));}this[_0xaf12('0xe')][_0xaf12('0x9e')](_0x10c13c,_0x4c2aa2);}this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0xa0146f,_0x4c2aa2);return _0x32b4f1;};AGIVertices[_0xaf12('0x14')][_0xaf12('0xa9')]=function(_0x4f98d9){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x4f98d9[_0xaf12('0x36')]));return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0x4f98d9[_0xaf12('0x15f')]||_0x4f98d9[_0xaf12('0x36')]);};AGIVertices[_0xaf12('0x14')][_0xaf12('0x160')]=function(_0x5e202e){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x5e202e[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x5e202e[_0xaf12('0x152')])){return this['channel'][_0xaf12('0x30')](_0x5e202e,_0xaf12('0x153'));}logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xaf12('0xe')][_0xaf12('0x38')],_0x5e202e[_0xaf12('0x152')]));var _0x4bce59=this[_0xaf12('0x4b')]['sync'](this,_0x5e202e[_0xaf12('0x161')]);var _0x53ffec=this[_0xaf12('0x4d')][_0xaf12('0x72')](this,_0x5e202e[_0xaf12('0x152')],_0x4bce59);if(_0x53ffec){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x155'),this[_0xaf12('0xe')]['callerid'],_0x5e202e[_0xaf12('0x152')]));this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x5e202e[_0xaf12('0x152')]));return{'code':0xc8,'result':_0xaf12('0x156')};}else{logger[_0xaf12('0x2b')](util['format'](_0xaf12('0x159'),this[_0xaf12('0xe')][_0xaf12('0x38')],_0x5e202e[_0xaf12('0x152')]));this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x155'),this['channel']['callerid'],_0x5e202e[_0xaf12('0x152')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xaf12('0x14')][_0xaf12('0x162')]=function(_0x7ca841){logger['info'](util[_0xaf12('0x52')](_0xaf12('0x163'),_0x7ca841['label']));if(!this[_0xaf12('0x86')](_0x7ca841[_0xaf12('0x112')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x7ca841,'no\x20file\x20audio\x20selected');}var _0x4daa2b=this[_0xaf12('0x1f')][_0xaf12('0x72')](this,_0x7ca841[_0xaf12('0x112')]);if(!_0x4daa2b){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x7ca841,_0xaf12('0x114'));}var _0x3f8c72=this[_0xaf12('0xe')][_0xaf12('0x56')](_0xaf12('0x164'),[_0x4daa2b,_0x7ca841[_0xaf12('0xe0')]]);if(_0x3f8c72[_0xaf12('0xa3')]===-0x1){return _0x3f8c72;}return this[_0xaf12('0xe')]['noop'](util[_0xaf12('0x52')]('Executed\x20command\x20%s\x20%s','PLAYBACK',_0x4daa2b));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x165')]=function(_0xe5e91b){logger['info'](util[_0xaf12('0x52')](_0xaf12('0x166'),_0xe5e91b[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0xe5e91b[_0xaf12('0x167')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0xe5e91b,'no\x20queue\x20selected');}var _0x22406e='';var _0x200152=parseInt(_0xe5e91b[_0xaf12('0x167')],0xa);if(isNaN(_0x200152)){_0x22406e=_0xe5e91b[_0xaf12('0x167')];}else{_0x22406e=this[_0xaf12('0x15')][_0xaf12('0x72')](this,_0xe5e91b[_0xaf12('0x167')]);if(!_0x22406e){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0xe5e91b,_0xaf12('0x168'));}}var _0x1b1058='';if(this['isConfigured'](_0xe5e91b[_0xaf12('0x112')])){var _0x5efa34=this[_0xaf12('0x1f')][_0xaf12('0x72')](this,_0xe5e91b[_0xaf12('0x112')]);if(_0x5efa34){_0x1b1058=_0x5efa34;}}this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0xe5e91b,_0x22406e);if(_0xe5e91b[_0xaf12('0xe0')][_0xaf12('0x169')]('x')<0x0){_0xe5e91b[_0xaf12('0xe0')]+='x';}if(_0xe5e91b[_0xaf12('0xe0')][_0xaf12('0x169')]('X')<0x0){_0xe5e91b[_0xaf12('0xe0')]+='X';}this[_0xaf12('0xe')][_0xaf12('0x9e')](_0xaf12('0x16a'),_0x22406e?_0x22406e[_0xaf12('0x16b')]():'');var _0x3fe890=this[_0xaf12('0xe')]['exec'](_0xaf12('0x16c'),[_0x22406e,_0xe5e91b[_0xaf12('0xe0')],_0xe5e91b[_0xaf12('0x63')],_0x1b1058,_0xe5e91b['timeout'],_0xe5e91b['agi'],_0xe5e91b[_0xaf12('0x16d')],_0xe5e91b[_0xaf12('0x16e')],'',_0xe5e91b[_0xaf12('0x16f')]]);if(_0x3fe890[_0xaf12('0xa3')]===-0x1){return _0x3fe890;}return this['channel'][_0xaf12('0xa9')](util[_0xaf12('0x52')]('Executed\x20command\x20%s\x20%s',_0xaf12('0x16c'),_0x22406e));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x170')]=function(_0x597ba3){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x171'),_0x597ba3[_0xaf12('0x36')]));var _0x470909=_0x597ba3['recordingFormat']||_0xaf12('0x131');var _0x2a8d30=util['format'](_0xaf12('0x172'),this[_0xaf12('0xe')][_0xaf12('0x35')],rs[_0xaf12('0x11a')](0x5));var _0x2be2ae=util[_0xaf12('0x52')](_0xaf12('0x173'),FILES_PATH,_0x2a8d30,_0x470909);var _0x5b3d75=util['format'](_0xaf12('0x132'),FILES_PATH,_0x2a8d30);this['createSquareRecording']['sync'](this,_0x597ba3,_0x2a8d30,_0x2be2ae);this[_0xaf12('0xe')][_0xaf12('0x9e')]('RECORDING_SAVENAME',_0x2a8d30);logger[_0xaf12('0x2b')](_0xaf12('0x174'),_0x5b3d75,_0x470909,_0x597ba3[_0xaf12('0x175')],_0x597ba3[_0xaf12('0x64')]);return this[_0xaf12('0xe')][_0xaf12('0x13b')](_0x5b3d75,_0x470909,_0x597ba3[_0xaf12('0x175')],_0x597ba3[_0xaf12('0x64')],undefined,!![]);};AGIVertices[_0xaf12('0x14')]['restapi']=function(_0xef5f8c){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x176'),_0xef5f8c[_0xaf12('0x36')]));if(!this['isConfigured'](_0xef5f8c['url'])){return this[_0xaf12('0xe')][_0xaf12('0xa9')]('no\x20url\x20configured');}var _0x258760=this[_0xaf12('0x62')]['sync'](this,_0xef5f8c);logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x177'),util['inspect'](_0x258760,{'showHidden':![],'depth':null})));if(!this[_0xaf12('0x86')](_0xef5f8c[_0xaf12('0xd1')])){return this['channel']['noop'](_0xaf12('0x178'));}var _0x55b476=this[_0xaf12('0x10')]['sync'](this,_0xef5f8c[_0xaf12('0xd1')]);if(!_0x55b476){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0xef5f8c,_0xaf12('0xd3'));}this[_0xaf12('0xe')][_0xaf12('0x9e')](util['format'](_0xaf12('0x179'),_0x55b476),_0x258760[_0xaf12('0x76')]?_0x258760[_0xaf12('0x76')]:_0xaf12('0x17a'));this[_0xaf12('0xe')][_0xaf12('0x9e')](util[_0xaf12('0x52')](_0xaf12('0x17b'),_0x55b476),_0x258760[_0xaf12('0x77')]?_0x258760[_0xaf12('0x77')]:'OK');if(_0x258760[_0xaf12('0x6b')]){try{this[_0xaf12('0x9b')](_0x258760[_0xaf12('0x6b')],_0x55b476);}catch(_0x4c9eb7){logger['error'](util[_0xaf12('0x52')](_0xaf12('0x17c'),_0x55b476));}}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xd7'),_0x55b476));};AGIVertices[_0xaf12('0x14')]['saydigits']=function(_0x5b6778){logger['info'](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x5b6778['label']));return this[_0xaf12('0xe')]['sayDigits'](_0x5b6778['digits'][_0xaf12('0x58')](/\s+/g,''),_0x5b6778['escape_digits']);};AGIVertices[_0xaf12('0x14')]['saynumber']=function(_0x1a2b4d){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x1a2b4d[_0xaf12('0x36')]));return this[_0xaf12('0xe')][_0xaf12('0x17d')](_0x1a2b4d[_0xaf12('0x65')][_0xaf12('0x58')](/\s+/g,''),_0x1a2b4d[_0xaf12('0x175')]);};AGIVertices[_0xaf12('0x14')][_0xaf12('0x17e')]=function(_0x31e1e0){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x17f'),_0x31e1e0[_0xaf12('0x36')]));return this['channel'][_0xaf12('0x180')](_0x31e1e0[_0xaf12('0x5c')],_0x31e1e0['escape_digits']);};AGIVertices[_0xaf12('0x14')]['sendMail']=function(_0x24326e){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x24326e[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x24326e[_0xaf12('0x181')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x182'));}var _0x4068a6=this[_0xaf12('0x183')][_0xaf12('0x72')](this,_0x24326e[_0xaf12('0x181')]);if(!_0x4068a6||!_0x4068a6[_0xaf12('0x184')]){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x24326e,_0xaf12('0x185'));}var _0x360ff1={'from':util['format'](_0xaf12('0x186'),_0x4068a6['name'],_0x4068a6[_0xaf12('0x187')]||_0x4068a6['Smtp'][_0xaf12('0x188')]),'to':_0x24326e['to']||'','cc':_0x24326e['cc']||'','bcc':_0x24326e[_0xaf12('0x189')]||'','subject':_0x24326e[_0xaf12('0x18a')],'html':_0x24326e[_0xaf12('0x5c')],'text':_0x24326e[_0xaf12('0x5c')]};if(this[_0xaf12('0x86')](_0x24326e['template_id'])){}logger[_0xaf12('0xd9')](_0xaf12('0x18b'),JSON[_0xaf12('0x75')](_0x360ff1));this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x24326e,_0x24326e[_0xaf12('0x181')]);this[_0xaf12('0xe')]['noop'](util[_0xaf12('0x52')](_0xaf12('0x18c'),_0x4068a6[_0xaf12('0x12')]));this['sendMailMessage'][_0xaf12('0x72')](this,_0x4068a6[_0xaf12('0x18d')],_0x360ff1);return this[_0xaf12('0xe')][_0xaf12('0xa9')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype']['sendFax']=function(_0x180bcb){logger[_0xaf12('0x2b')](util['format']('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x180bcb[_0xaf12('0x36')]));return this['channel']['noop'](_0xaf12('0x18e'));};AGIVertices['prototype']['sendSMS']=function(_0x35775c){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x18f'),_0x35775c[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x35775c[_0xaf12('0x190')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')]('no\x20sms\x20account\x20configured');}var _0x1b004b=this['getSmsAccount'][_0xaf12('0x72')](this,_0x35775c[_0xaf12('0x190')]);if(!_0x1b004b){return this['channel']['error'](_0x35775c,_0xaf12('0x191'));}var _0x52a039={'body':_0x35775c[_0xaf12('0x192')],'phone':_0x35775c['to']||'','SmsAccountId':_0x1b004b['id']};logger[_0xaf12('0xd9')](_0xaf12('0x193'),JSON[_0xaf12('0x75')](_0x52a039));this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x35775c,_0x35775c[_0xaf12('0x190')]);this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x194'),_0x1b004b[_0xaf12('0x12')]));this[_0xaf12('0x33')]['sync'](this,_0x52a039);return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x195'));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x196')]=function(_0x5a5454){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x5a5454[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x5a5454['variable_id'])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x5a5454,_0xaf12('0x197'));}var _0x154068=this[_0xaf12('0x10')][_0xaf12('0x72')](this,_0x5a5454[_0xaf12('0xd1')]);if(!_0x154068){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x5a5454,_0xaf12('0xd3'));}return this['channel'][_0xaf12('0x9e')](_0x154068,_0x5a5454[_0xaf12('0x198')]);};AGIVertices[_0xaf12('0x14')][_0xaf12('0x199')]=function(_0xfca54c){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x19a'),_0xfca54c[_0xaf12('0x36')]));this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x19b'));if(_0xfca54c[_0xaf12('0xb4')]==='yes'){this[_0xaf12('0xe')]['noop']('Answer');return this['channel'][_0xaf12('0xb4')]();}return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0x19c'));};AGIVertices[_0xaf12('0x14')]['subproject']=function(_0x677e8d){logger['info'](util['format'](_0xaf12('0x19d'),_0x677e8d[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0x677e8d['project_id'])){return this[_0xaf12('0xe')]['error'](_0x677e8d,_0xaf12('0x19e'));}var _0xcba90a=this[_0xaf12('0x19f')]['sync'](this,_0x677e8d[_0xaf12('0x1a0')]);if(!this[_0xaf12('0x86')](_0xcba90a)){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x677e8d,util['format'](_0xaf12('0x1a1'),_0x677e8d[_0xaf12('0x1a0')]));}if(_0xcba90a===this[_0xaf12('0xe')][_0xaf12('0x3d')]){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x677e8d,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x677e8d,_0xcba90a);var _0x4a43d5=this[_0xaf12('0xe')][_0xaf12('0x56')](_0xaf12('0x1a2'),util[_0xaf12('0x52')](_0xaf12('0x1a3'),config['agi'][_0xaf12('0x1a4')]||'127.0.0.1',_0xcba90a,this[_0xaf12('0xe')]['arg_1']));if(_0x4a43d5[_0xaf12('0xa3')]===-0x1){return _0x4a43d5;}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('Executed\x20command\x20%s\x20%s','AGI',_0xcba90a));};AGIVertices[_0xaf12('0x14')]['system']=function(_0x462e87){logger['info'](util[_0xaf12('0x52')](_0xaf12('0x1a5'),_0x462e87['label']));var _0x49fa32=this[_0xaf12('0x55')][_0xaf12('0x72')](this,_0x462e87[_0xaf12('0x1a6')]);this[_0xaf12('0x34')][_0xaf12('0x72')](this,_0x462e87,_0x462e87['command']);if(this[_0xaf12('0x86')](_0x462e87[_0xaf12('0xd1')])){var _0x219ede=this[_0xaf12('0x10')][_0xaf12('0x72')](this,_0x462e87['variable_id']);if(_0x219ede){this['channel'][_0xaf12('0x9e')](_0x219ede,_0x49fa32);return this['channel']['noop'](util[_0xaf12('0x52')](_0xaf12('0x1a7'),_0x462e87[_0xaf12('0x1a6')],_0x219ede));}}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x462e87['command']));};AGIVertices[_0xaf12('0x14')]['google_cloud_tts']=function(_0x1d007a){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x1a8'),_0x1d007a[_0xaf12('0x36')]));_0x1d007a['text']=_0x1d007a['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x1d007a[_0xaf12('0x5a')])){return this[_0xaf12('0xe')]['noop'](_0xaf12('0x1a9'));}if(!this[_0xaf12('0x86')](_0x1d007a[_0xaf12('0x5c')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xaa'));}this[_0xaf12('0xe')]['noop'](util['format'](_0xaf12('0x1aa'),_0x1d007a['text']));var _0x44af3c=this[_0xaf12('0x59')][_0xaf12('0x72')](this,_0x1d007a);if(_0x44af3c){this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x1ab'),_0x44af3c));var _0x1d7fd3=this[_0xaf12('0xe')]['streamFile'](_0x44af3c);try{fs[_0xaf12('0x104')](_0x44af3c+_0xaf12('0x105'));}catch(_0x3c70c4){logger[_0xaf12('0x30')](_0x3c70c4);}return _0x1d7fd3;}return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x1d007a,_0xaf12('0x1ac'));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x1ad')]=function(_0x411e2d){logger[_0xaf12('0x2b')](util['format'](_0xaf12('0x1ae'),_0x411e2d[_0xaf12('0x36')]));_0x411e2d[_0xaf12('0x5c')]=_0x411e2d['text'][_0xaf12('0x58')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x411e2d[_0xaf12('0x5c')])){return this[_0xaf12('0xe')][_0xaf12('0xa9')](_0xaf12('0xaa'));}this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')]('Trying\x20Google\x20TTS\x20%s',_0x411e2d[_0xaf12('0x5c')]));var _0x2bcde8=this[_0xaf12('0x60')][_0xaf12('0x72')](this,_0x411e2d);if(_0x2bcde8){this['channel'][_0xaf12('0xa9')](util['format']('Google\x20TTS\x20%s\x20file\x20created',_0x2bcde8));var _0x59d8ff=this[_0xaf12('0xe')][_0xaf12('0x103')](_0x2bcde8);try{fs[_0xaf12('0x104')](_0x2bcde8+_0xaf12('0x105'));}catch(_0x16a5b1){logger[_0xaf12('0x30')](_0x16a5b1);}return _0x59d8ff;}return this[_0xaf12('0xe')]['error'](_0x411e2d,_0xaf12('0x1af'));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x1b0')]=function(_0x548309){logger['info'](util[_0xaf12('0x52')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x548309['label']));if(!this[_0xaf12('0x86')](_0x548309[_0xaf12('0x152')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0x548309,_0xaf12('0x153'));}logger['info'](util[_0xaf12('0x52')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xaf12('0xe')][_0xaf12('0x38')],_0x548309[_0xaf12('0x152')]));var _0x515280=this[_0xaf12('0x4f')][_0xaf12('0x72')](this,_0x548309['findBy']);if(_0x515280){logger['info'](util['format'](_0xaf12('0x155'),this['channel'][_0xaf12('0x38')],_0x548309[_0xaf12('0x152')]));this[_0xaf12('0xe')]['noop'](util[_0xaf12('0x52')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xaf12('0x38')],_0x548309['findBy']));return{'code':0xc8,'result':_0xaf12('0x156')};}else{logger[_0xaf12('0x2b')](util['format'](_0xaf12('0x159'),this[_0xaf12('0xe')][_0xaf12('0x38')],_0x548309['findBy']));this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0x159'),this[_0xaf12('0xe')][_0xaf12('0x38')],_0x548309[_0xaf12('0x152')]));return{'code':0xc8,'result':_0xaf12('0x157')};}};AGIVertices['prototype'][_0xaf12('0x1b1')]=function(_0x313da3){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x1b2'),_0x313da3[_0xaf12('0x36')]));var _0x105d6b=this[_0xaf12('0xe')][_0xaf12('0x56')]('VOICEMAIL',[_0x313da3[_0xaf12('0x1b3')],_0x313da3[_0xaf12('0x7a')]]);if(_0x105d6b['result']===-0x1){return _0x105d6b;}return this[_0xaf12('0xe')][_0xaf12('0xa9')](util[_0xaf12('0x52')](_0xaf12('0xbe'),'VOICEMAIL',_0x313da3[_0xaf12('0x1b3')]));};AGIVertices[_0xaf12('0x14')][_0xaf12('0x1b4')]=function(_0xa86051){logger[_0xaf12('0x2b')](util[_0xaf12('0x52')](_0xaf12('0x1b5'),_0xa86051[_0xaf12('0x36')]));if(!this[_0xaf12('0x86')](_0xa86051[_0xaf12('0xd1')])){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0xa86051,'no\x20variable\x20selected');}var _0x1c607a=this[_0xaf12('0x10')][_0xaf12('0x72')](this,_0xa86051[_0xaf12('0xd1')]);if(!_0x1c607a){return this[_0xaf12('0xe')][_0xaf12('0x30')](_0xa86051,_0xaf12('0xd3'));}var _0x2b4d37=this[_0xaf12('0xe')][_0xaf12('0x10')](_0x1c607a);return{'code':0xc8,'result':_0x2b4d37[_0xaf12('0xa1')]?_0x2b4d37[_0xaf12('0xa1')]:'-'};};String[_0xaf12('0x14')][_0xaf12('0xa0')]=function(_0x25af47,_0xbb4836){return this[_0xaf12('0x9f')](_0x25af47)[_0xaf12('0x1b6')](_0xbb4836);};module[_0xaf12('0x1b7')]=AGIVertices;
\ No newline at end of file
index 1ad3b74..c893d92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe07a=['error','[%s][UPDATE][ERRORS:%s]','startAcw','channels','mandatoryDisposition','name','Action','QueuePause','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','createTimer','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','message','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','interface','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereeuniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','stringify','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','queue','updateAcw','uniqueid','then','[%s][UPDATE][ACWTIME:%s]','catch'];(function(_0x2ea6d7,_0xbde5e6){var _0xaf3e16=function(_0x243fa4){while(--_0x243fa4){_0x2ea6d7['push'](_0x2ea6d7['shift']());}};_0xaf3e16(++_0xbde5e6);}(_0xe07a,0x86));var _0xae07=function(_0x37836d,_0x3480b5){_0x37836d=_0x37836d-0x0;var _0x4cac5c=_0xe07a[_0x37836d];return _0x4cac5c;};'use strict';var _=require('lodash');var moment=require(_0xae07('0x0'));var ami=require('../ami');var logger=require(_0xae07('0x1'))(_0xae07('0x2'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xae07('0x3'));function Acw(_0x5ade76){this[_0xae07('0x4')]=_0x5ade76[_0xae07('0x4')];this['agents']=_0x5ade76[_0xae07('0x5')];this[_0xae07('0x6')]=_0x5ade76[_0xae07('0x6')];this['channels']={};ami['on'](_0xae07('0x7'),this['syncAgentConnect'][_0xae07('0x8')](this));ami['on'](_0xae07('0x9'),this['syncHangupRequest'][_0xae07('0x8')](this));ami['on'](_0xae07('0xa'),this[_0xae07('0xb')][_0xae07('0x8')](this));ami['on'](_0xae07('0xc'),this[_0xae07('0xd')][_0xae07('0x8')](this));ami['on'](_0xae07('0xe'),this[_0xae07('0xf')][_0xae07('0x8')](this));ami['on'](_0xae07('0x10'),this[_0xae07('0x11')][_0xae07('0x8')](this));ami['on'](_0xae07('0x12'),this[_0xae07('0x13')][_0xae07('0x8')](this));}function getDiff(_0x18ccf8){var _0x4a4cfe=moment()[_0xae07('0x14')](0x0);var _0x4461aa=moment(_0x18ccf8)[_0xae07('0x14')](0x0);return _0x4a4cfe[_0xae07('0x15')](_0x4461aa,_0xae07('0x16'));}Acw[_0xae07('0x17')]['createTimer']=function(_0x297354,_0x53fedd,_0x5d4320){this['timers'][_0x297354]={};logger[_0xae07('0x18')](_0xae07('0x19'),_0x53fedd,this['voiceQueues'][_0x5d4320][_0xae07('0x1a')],_0x297354,_0x5d4320);this['timers'][_0x297354][_0xae07('0x1b')]=setTimeout(this[_0xae07('0x1c')][_0xae07('0x8')](this,_0x297354),this[_0xae07('0x4')][_0x5d4320][_0xae07('0x1a')]*0x3e8);this[_0xae07('0x6')][_0x297354][_0xae07('0x1d')]=moment()[_0xae07('0x1e')](_0xae07('0x1f'));this[_0xae07('0x6')][_0x297354]['uniqueid']=_0x53fedd;this['timers'][_0x297354][_0xae07('0x20')]=_0x5d4320;this['timers'][_0x297354][_0xae07('0x21')]=function(){var _0x57df18=getDiff(this[_0xae07('0x6')][_0x297354][_0xae07('0x1d')]);clearTimeout(this[_0xae07('0x6')][_0x297354][_0xae07('0x1b')]);this[_0xae07('0x6')][_0x297354][_0xae07('0x1b')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x57df18},this[_0xae07('0x6')][_0x297354][_0xae07('0x22')],_0x297354)[_0xae07('0x23')](function(_0x25d981){logger[_0xae07('0x18')](_0xae07('0x24'),_0x53fedd,_0x57df18,_0x25d981);})[_0xae07('0x25')](function(_0x14618d){logger[_0xae07('0x26')](_0xae07('0x27'),_0x53fedd,_0x14618d);});delete this[_0xae07('0x6')][_0x297354];};};Acw[_0xae07('0x17')][_0xae07('0x28')]=function(_0x47c042){try{var _0x367072=this;var _0x43accf=this[_0xae07('0x29')][_0x47c042]['interface'];var _0x114cb9=this[_0xae07('0x29')][_0x47c042][_0xae07('0x20')];var _0x4ae54a=this[_0xae07('0x4')][_0x114cb9];var _0x36030a=![];var _0x7830cd='ACW';if(_0x4ae54a[_0xae07('0x2a')]){if(_0x4ae54a['mandatoryDispositionPause'][_0xae07('0x2b')]){_0x36030a=!![];_0x7830cd=_0x4ae54a['mandatoryDispositionPause'][_0xae07('0x2b')];}}return ami[_0xae07('0x2c')]({'action':_0xae07('0x2d'),'interface':_0x43accf,'paused':!![],'reason':_0x7830cd})['then'](function(){if(_0x367072['agents'][_0x43accf]){return RpcUser['getAgent'](_0x367072[_0xae07('0x5')][_0x43accf]['id'])['then'](function(_0x303fc8){if(_0x303fc8&&!_0x303fc8[_0xae07('0x2e')]){logger[_0xae07('0x18')](_0xae07('0x2f'),_0x47c042,_0x43accf,_0x114cb9);var _0x257791=_0x367072[_0xae07('0x29')][_0x47c042][_0xae07('0x30')]&&_0x367072[_0xae07('0x29')][_0x47c042][_0xae07('0x31')]?_0x367072['channels'][_0x47c042][_0xae07('0x31')]:_0x47c042;return RpcUser['savePause'](_0x367072[_0xae07('0x5')][_0x43accf],_0x7830cd,_0x257791)['then'](function(){if(!_0x36030a){_0x367072[_0xae07('0x32')](_0x43accf,_0x47c042,_0x114cb9);}});}else{logger['info'](_0xae07('0x33'),_0x47c042,_0x43accf,_0x114cb9);if((_0x367072['timers'][_0x43accf]===undefined||_0x367072[_0xae07('0x6')][_0x43accf][_0xae07('0x1b')]===![])&&!_0x36030a){_0x367072[_0xae07('0x32')](_0x43accf,_0x47c042,_0x114cb9);}}});}})['catch'](function(){logger[_0xae07('0x26')](_0xae07('0x19'),_0x47c042,_0x367072[_0xae07('0x4')][_0x114cb9][_0xae07('0x1a')],_0x43accf,_0x114cb9);})['finally'](function(){delete _0x367072[_0xae07('0x29')][_0x47c042];});}catch(_0xf9e5bb){logger[_0xae07('0x26')](_0xae07('0x34'),_0xf9e5bb['message']);}};Acw[_0xae07('0x17')][_0xae07('0x1c')]=function(_0x18d0f8){try{var _0x19ee77=this;if(_0x19ee77[_0xae07('0x6')][_0x18d0f8]){_0x19ee77[_0xae07('0x6')][_0x18d0f8][_0xae07('0x1b')]=![];var _0x3480ce=_0x19ee77[_0xae07('0x6')][_0x18d0f8][_0xae07('0x22')];var _0x374534=_0x19ee77['timers'][_0x18d0f8][_0xae07('0x20')];var _0xe9381c=_0x19ee77[_0xae07('0x4')][_0x374534][_0xae07('0x1a')];logger[_0xae07('0x18')](_0xae07('0x35'),_0x3480ce,_0x18d0f8);RpcUser['saveUnpause'](this['agents'][_0x18d0f8]);RpcVoiceAgentReport['update']({'acwtime':_0xe9381c,'agentacw':!![]},_0x3480ce,_0x18d0f8)['then'](function(_0x5ab894){logger[_0xae07('0x18')]('[%s][UPDATE][ACWTIME:%s]',_0x3480ce,_0xe9381c,_0x5ab894);})[_0xae07('0x25')](function(_0x2393ac){logger[_0xae07('0x26')](_0xae07('0x27'),_0x3480ce,_0x2393ac);});}else{logger[_0xae07('0x26')](_0xae07('0x36'),_0x18d0f8);if(_0x19ee77['timers']){logger[_0xae07('0x18')](_0xae07('0x37'),JSON['stringify'](_0x19ee77[_0xae07('0x6')]));}}}catch(_0x6e97ef){logger[_0xae07('0x26')](_0xae07('0x38'),_0x6e97ef[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0x3a')]=function(_0x3375e4){try{if(this[_0xae07('0x4')][_0x3375e4[_0xae07('0x20')]]&&(this[_0xae07('0x4')][_0x3375e4['queue']][_0xae07('0x2')]||this[_0xae07('0x4')][_0x3375e4['queue']]['mandatoryDisposition'])){if(this[_0xae07('0x5')][_0x3375e4['interface']]){this[_0xae07('0x29')][_0x3375e4[_0xae07('0x22')]]={'queue':_0x3375e4[_0xae07('0x20')],'interface':_0x3375e4['interface'],'destlinkedid':_0x3375e4[_0xae07('0x31')]};}}}catch(_0x4958d4){logger[_0xae07('0x26')](_0xae07('0x3b'),_0x4958d4[_0xae07('0x39')]);}};Acw[_0xae07('0x17')]['syncAgentConnectPreview']=function(_0x5d4285){try{if(this[_0xae07('0x4')][_0x5d4285[_0xae07('0x20')]]&&(this['voiceQueues'][_0x5d4285['queue']][_0xae07('0x2')]||this[_0xae07('0x4')][_0x5d4285[_0xae07('0x20')]][_0xae07('0x2a')])){if(this['agents'][_0x5d4285[_0xae07('0x3c')]]){this[_0xae07('0x29')][_0x5d4285['uniqueid']]={'queue':_0x5d4285[_0xae07('0x20')],'interface':_0x5d4285[_0xae07('0x3c')]};}}}catch(_0xc6cebe){logger[_0xae07('0x26')](_0xae07('0x3d'),_0xc6cebe[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0x3e')]=function(_0x24dc21){try{if(this[_0xae07('0x29')][_0x24dc21['uniqueid']]&&_[_0xae07('0x3f')](this[_0xae07('0x29')][_0x24dc21[_0xae07('0x22')]][_0xae07('0x30')])){logger[_0xae07('0x18')](_0xae07('0x40'),_0x24dc21['uniqueid']);this[_0xae07('0x28')](_0x24dc21[_0xae07('0x22')]);}else if(this['channels'][_0x24dc21['linkedid']]&&_[_0xae07('0x3f')](this[_0xae07('0x29')][_0x24dc21['linkedid']][_0xae07('0x30')])){logger[_0xae07('0x18')](_0xae07('0x41'),_0x24dc21[_0xae07('0x42')]);this[_0xae07('0x28')](_0x24dc21[_0xae07('0x42')]);}}catch(_0x4c3b48){logger['error'](_0xae07('0x43'),_0x4c3b48[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0xb')]=function(_0x13940d){try{if(this[_0xae07('0x29')][_0x13940d['uniqueid']]&&this[_0xae07('0x29')][_0x13940d[_0xae07('0x22')]][_0xae07('0x30')]){logger[_0xae07('0x18')](_0xae07('0x44'),_0x13940d[_0xae07('0x22')]);this[_0xae07('0x28')](_0x13940d[_0xae07('0x22')]);}else if(this['channels'][_0x13940d[_0xae07('0x42')]]&&this['channels'][_0x13940d['linkedid']][_0xae07('0x30')]){logger[_0xae07('0x18')](_0xae07('0x45'),_0x13940d['linkedid']);this['startAcw'](_0x13940d[_0xae07('0x42')]);}}catch(_0x29b709){logger[_0xae07('0x26')]('[ACW][syncHangup]\x20%s',_0x29b709[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0xf')]=function(_0x467271){try{if(!_[_0xae07('0x46')](this[_0xae07('0x29')][_0x467271['transfereeuniqueid']])){this['startAcw'](_0x467271['transfereeuniqueid']);if(this[_0xae07('0x29')][_0x467271[_0xae07('0x47')]]){this[_0xae07('0x29')][_0x467271[_0xae07('0x47')]][_0xae07('0x30')]=!![];this['channels'][_0x467271[_0xae07('0x48')]]=this[_0xae07('0x29')][_0x467271['secondtransfereruniqueid']];delete this[_0xae07('0x29')][_0x467271[_0xae07('0x47')]];}}else if(!_[_0xae07('0x46')](this[_0xae07('0x29')][_0x467271[_0xae07('0x48')]])){this[_0xae07('0x28')](_0x467271[_0xae07('0x48')]);if(this[_0xae07('0x29')][_0x467271[_0xae07('0x49')]]){this[_0xae07('0x29')][_0x467271['origtransfereruniqueid']][_0xae07('0x30')]=!![];this['channels'][_0x467271[_0xae07('0x4a')]]=this['channels'][_0x467271[_0xae07('0x49')]];delete this[_0xae07('0x29')][_0x467271[_0xae07('0x49')]];}}}catch(_0x5a18c9){logger[_0xae07('0x26')]('[ACW][syncAttendedTransfer]\x20%s',_0x5a18c9[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0x11')]=function(_0x21b177){try{if(this['channels'][_0x21b177[_0xae07('0x4b')]]){logger[_0xae07('0x18')](_0xae07('0x4c'),JSON['stringify'](_0x21b177[_0xae07('0x4b')]));this[_0xae07('0x28')](_0x21b177[_0xae07('0x4b')]);}else if(this['channels'][_0x21b177[_0xae07('0x4d')]]){logger[_0xae07('0x18')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xae07('0x4e')](_0x21b177[_0xae07('0x4d')]));this[_0xae07('0x28')](_0x21b177[_0xae07('0x4d')]);}}catch(_0x12db4c){logger[_0xae07('0x26')](_0xae07('0x4f'),_0x12db4c['message']);}};Acw['prototype'][_0xae07('0xd')]=function(_0x3080fe){try{if(this[_0xae07('0x4')][_0x3080fe[_0xae07('0x20')]]&&this[_0xae07('0x4')][_0x3080fe[_0xae07('0x20')]][_0xae07('0x50')]===_0xae07('0x51')){if(this[_0xae07('0x5')][_0x3080fe[_0xae07('0x3c')]]){logger[_0xae07('0x18')](_0xae07('0x52'),_0x3080fe[_0xae07('0x22')],_0x3080fe['interface'],_0x3080fe[_0xae07('0x20')]);return RpcUser[_0xae07('0x53')](this[_0xae07('0x5')][_0x3080fe['interface']],_0xae07('0x54'),_0x3080fe['uniqueid']);}}}catch(_0x5f2359){logger[_0xae07('0x26')](_0xae07('0x55'),_0x5f2359[_0xae07('0x39')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xbe15=['Auto-Pause','exports','util','lodash','moment','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','hanguprequest','syncHangupRequest','bind','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','[ACW][STOP]\x20%s','acw','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause'];(function(_0x3a3c43,_0x3f7f95){var _0xa140a2=function(_0x2adff9){while(--_0x2adff9){_0x3a3c43['push'](_0x3a3c43['shift']());}};_0xa140a2(++_0x3f7f95);}(_0xbe15,0xb0));var _0x5be1=function(_0x1c5f5a,_0x5a0a16){_0x1c5f5a=_0x1c5f5a-0x0;var _0x99549f=_0xbe15[_0x1c5f5a];return _0x99549f;};'use strict';var util=require(_0x5be1('0x0'));var _=require(_0x5be1('0x1'));var moment=require(_0x5be1('0x2'));var ami=require('../ami');var logger=require(_0x5be1('0x3'))('acw');var RpcUser=require(_0x5be1('0x4'));var RpcVoiceAgentReport=require(_0x5be1('0x5'));function Acw(_0x54918d){this[_0x5be1('0x6')]=_0x54918d[_0x5be1('0x6')];this['agents']=_0x54918d[_0x5be1('0x7')];this[_0x5be1('0x8')]=_0x54918d[_0x5be1('0x8')];this[_0x5be1('0x9')]={};ami['on']('agentconnect',this[_0x5be1('0xa')]['bind'](this));ami['on'](_0x5be1('0xb'),this[_0x5be1('0xc')][_0x5be1('0xd')](this));ami['on']('hangup',this[_0x5be1('0xe')][_0x5be1('0xd')](this));ami['on'](_0x5be1('0xf'),this[_0x5be1('0x10')][_0x5be1('0xd')](this));ami['on'](_0x5be1('0x11'),this[_0x5be1('0x12')][_0x5be1('0xd')](this));ami['on'](_0x5be1('0x13'),this[_0x5be1('0x14')][_0x5be1('0xd')](this));ami['on'](_0x5be1('0x15'),this[_0x5be1('0x16')][_0x5be1('0xd')](this));}function getDiff(_0x81f5c2){var _0x310da2=moment()[_0x5be1('0x17')](0x0);var _0x3360fc=moment(_0x81f5c2)['milliseconds'](0x0);return _0x310da2[_0x5be1('0x18')](_0x3360fc,_0x5be1('0x19'));}Acw[_0x5be1('0x1a')]['startAcw']=function(_0x249322){try{var _0x45ed44=this;var _0x1c8fd5=this['channels'][_0x249322][_0x5be1('0x1b')];var _0x30fc33=this[_0x5be1('0x9')][_0x249322][_0x5be1('0x1c')];var _0xa7e6ff=this['voiceQueues'][_0x30fc33];var _0x1589ed=![];var _0x440c91=_0x5be1('0x1d');if(_0xa7e6ff[_0x5be1('0x1e')]){if(_0xa7e6ff['mandatoryDispositionPause']['name']){_0x1589ed=!![];_0x440c91=_0xa7e6ff[_0x5be1('0x1f')][_0x5be1('0x20')];}}ami[_0x5be1('0x21')]({'action':_0x5be1('0x22'),'interface':_0x1c8fd5,'paused':!![],'reason':_0x440c91})[_0x5be1('0x23')](function(_0x3b095d){if(_0x45ed44[_0x5be1('0x7')][_0x1c8fd5]){return RpcUser[_0x5be1('0x24')](_0x45ed44[_0x5be1('0x7')][_0x1c8fd5]['id'])[_0x5be1('0x23')](function(_0x3245f7){if(_0x3245f7&&!_0x3245f7[_0x5be1('0x25')]){logger[_0x5be1('0x26')](_0x5be1('0x27'),_0x249322,_0x1c8fd5,_0x30fc33);var _0x1f2953=_0x45ed44[_0x5be1('0x9')][_0x249322][_0x5be1('0x28')]&&_0x45ed44[_0x5be1('0x9')][_0x249322][_0x5be1('0x29')]?_0x45ed44[_0x5be1('0x9')][_0x249322][_0x5be1('0x29')]:_0x249322;return RpcUser[_0x5be1('0x2a')](_0x45ed44[_0x5be1('0x7')][_0x1c8fd5],_0x440c91,_0x1f2953)[_0x5be1('0x23')](function(_0x2b689c){if(!_0x1589ed){_0x45ed44['timers'][_0x1c8fd5]={};logger[_0x5be1('0x26')](_0x5be1('0x2b'),_0x249322,_0x45ed44[_0x5be1('0x6')][_0x30fc33][_0x5be1('0x2c')],_0x1c8fd5,_0x30fc33);_0x45ed44['timers'][_0x1c8fd5][_0x5be1('0x2d')]=setTimeout(_0x45ed44[_0x5be1('0x2e')]['bind'](_0x45ed44,_0x1c8fd5),_0x45ed44[_0x5be1('0x6')][_0x30fc33][_0x5be1('0x2c')]*0x3e8);_0x45ed44['timers'][_0x1c8fd5][_0x5be1('0x2f')]=moment()[_0x5be1('0x30')](_0x5be1('0x31'));_0x45ed44[_0x5be1('0x8')][_0x1c8fd5][_0x5be1('0x32')]=_0x249322;_0x45ed44[_0x5be1('0x8')][_0x1c8fd5][_0x5be1('0x1c')]=_0x30fc33;_0x45ed44[_0x5be1('0x8')][_0x1c8fd5][_0x5be1('0x33')]=function(){var _0x39e263=getDiff(_0x45ed44[_0x5be1('0x8')][_0x1c8fd5][_0x5be1('0x2f')]);clearTimeout(_0x45ed44[_0x5be1('0x8')][_0x1c8fd5]['timer']);_0x45ed44[_0x5be1('0x8')][_0x1c8fd5]['timer']=![];RpcVoiceAgentReport[_0x5be1('0x34')]({'acwtime':_0x39e263},_0x45ed44[_0x5be1('0x8')][_0x1c8fd5][_0x5be1('0x32')],_0x1c8fd5)[_0x5be1('0x23')](function(_0x4ed37b){logger[_0x5be1('0x26')](_0x5be1('0x35'),_0x249322,_0x39e263,_0x4ed37b);})[_0x5be1('0x36')](function(_0x455523){logger['error'](_0x5be1('0x37'),_0x249322,_0x455523);});delete _0x45ed44['timers'][_0x1c8fd5];};}});}else{logger[_0x5be1('0x26')](_0x5be1('0x38'),_0x249322,_0x1c8fd5,_0x30fc33);}});}})[_0x5be1('0x36')](function(_0x137b7b){logger[_0x5be1('0x39')](_0x5be1('0x2b'),_0x249322,_0x45ed44[_0x5be1('0x6')][_0x30fc33][_0x5be1('0x2c')],_0x1c8fd5,_0x30fc33);})[_0x5be1('0x3a')](function(){delete _0x45ed44[_0x5be1('0x9')][_0x249322];});}catch(_0x3821d6){logger[_0x5be1('0x39')](_0x5be1('0x3b'),_0x3821d6[_0x5be1('0x3c')]);}};Acw['prototype'][_0x5be1('0x2e')]=function(_0x1e4859){try{var _0x73f068=this;if(_0x73f068[_0x5be1('0x8')][_0x1e4859]){_0x73f068[_0x5be1('0x8')][_0x1e4859]['timer']=![];var _0x33d60a=_0x73f068[_0x5be1('0x8')][_0x1e4859][_0x5be1('0x32')];var _0x41c083=_0x73f068['timers'][_0x1e4859]['queue'];var _0x32ff28=_0x73f068[_0x5be1('0x6')][_0x41c083][_0x5be1('0x2c')];logger[_0x5be1('0x26')](_0x5be1('0x3d'),_0x33d60a,_0x1e4859);RpcUser[_0x5be1('0x3e')](this[_0x5be1('0x7')][_0x1e4859]);RpcVoiceAgentReport[_0x5be1('0x34')]({'acwtime':_0x32ff28,'agentacw':!![]},_0x33d60a,_0x1e4859)[_0x5be1('0x23')](function(_0x47fd27){logger['info'](_0x5be1('0x35'),_0x33d60a,_0x32ff28,_0x47fd27);})['catch'](function(_0x136448){logger[_0x5be1('0x39')](_0x5be1('0x37'),_0x33d60a,_0x136448);});}else{logger[_0x5be1('0x39')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x1e4859);if(_0x73f068['timers']){logger['info'](_0x5be1('0x3f'),JSON['stringify'](_0x73f068[_0x5be1('0x8')]));}}}catch(_0x49f2ca){logger['error'](_0x5be1('0x40'),_0x49f2ca[_0x5be1('0x3c')]);}};Acw['prototype'][_0x5be1('0xa')]=function(_0x25dbdb){try{if(this[_0x5be1('0x6')][_0x25dbdb[_0x5be1('0x1c')]]&&(this['voiceQueues'][_0x25dbdb[_0x5be1('0x1c')]]['acw']||this[_0x5be1('0x6')][_0x25dbdb[_0x5be1('0x1c')]][_0x5be1('0x1e')])){if(this['agents'][_0x25dbdb[_0x5be1('0x1b')]]){this[_0x5be1('0x9')][_0x25dbdb['uniqueid']]={'queue':_0x25dbdb[_0x5be1('0x1c')],'interface':_0x25dbdb[_0x5be1('0x1b')],'destlinkedid':_0x25dbdb[_0x5be1('0x29')]};}}}catch(_0x21cd4a){logger[_0x5be1('0x39')]('[ACW][syncAgentConnect]\x20%s',_0x21cd4a['message']);}};Acw[_0x5be1('0x1a')][_0x5be1('0x16')]=function(_0x2f971d){try{if(this['voiceQueues'][_0x2f971d[_0x5be1('0x1c')]]&&(this['voiceQueues'][_0x2f971d['queue']][_0x5be1('0x41')]||this[_0x5be1('0x6')][_0x2f971d['queue']]['mandatoryDisposition'])){if(this[_0x5be1('0x7')][_0x2f971d[_0x5be1('0x1b')]]){this[_0x5be1('0x9')][_0x2f971d[_0x5be1('0x32')]]={'queue':_0x2f971d['queue'],'interface':_0x2f971d[_0x5be1('0x1b')]};}}}catch(_0x2a9813){logger[_0x5be1('0x39')](_0x5be1('0x42'),_0x2a9813[_0x5be1('0x3c')]);}};Acw[_0x5be1('0x1a')][_0x5be1('0xc')]=function(_0x8041d7){try{if(this[_0x5be1('0x9')][_0x8041d7[_0x5be1('0x32')]]&&_[_0x5be1('0x43')](this['channels'][_0x8041d7['uniqueid']]['attended'])){logger[_0x5be1('0x26')](_0x5be1('0x44'),_0x8041d7['uniqueid']);this[_0x5be1('0x45')](_0x8041d7[_0x5be1('0x32')]);}else if(this[_0x5be1('0x9')][_0x8041d7[_0x5be1('0x46')]]&&_[_0x5be1('0x43')](this[_0x5be1('0x9')][_0x8041d7[_0x5be1('0x46')]][_0x5be1('0x28')])){logger[_0x5be1('0x26')](_0x5be1('0x47'),_0x8041d7[_0x5be1('0x46')]);this[_0x5be1('0x45')](_0x8041d7[_0x5be1('0x46')]);}}catch(_0x21deb4){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x21deb4[_0x5be1('0x3c')]);}};Acw[_0x5be1('0x1a')][_0x5be1('0xe')]=function(_0x5c9db7){try{if(this['channels'][_0x5c9db7[_0x5be1('0x32')]]&&this[_0x5be1('0x9')][_0x5c9db7[_0x5be1('0x32')]][_0x5be1('0x28')]){logger[_0x5be1('0x26')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x5c9db7[_0x5be1('0x32')]);this['startAcw'](_0x5c9db7[_0x5be1('0x32')]);}else if(this[_0x5be1('0x9')][_0x5c9db7[_0x5be1('0x46')]]&&this[_0x5be1('0x9')][_0x5c9db7['linkedid']][_0x5be1('0x28')]){logger[_0x5be1('0x26')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x5c9db7['linkedid']);this['startAcw'](_0x5c9db7[_0x5be1('0x46')]);}}catch(_0x3f9eb9){logger[_0x5be1('0x39')](_0x5be1('0x48'),_0x3f9eb9['message']);}};Acw[_0x5be1('0x1a')]['syncAttendedTransfer']=function(_0x4333ab){try{if(!_[_0x5be1('0x49')](this[_0x5be1('0x9')][_0x4333ab[_0x5be1('0x4a')]])){this[_0x5be1('0x45')](_0x4333ab[_0x5be1('0x4a')]);if(this[_0x5be1('0x9')][_0x4333ab[_0x5be1('0x4b')]]){this['channels'][_0x4333ab[_0x5be1('0x4b')]][_0x5be1('0x28')]=!![];this[_0x5be1('0x9')][_0x4333ab[_0x5be1('0x4c')]]=this[_0x5be1('0x9')][_0x4333ab[_0x5be1('0x4b')]];delete this[_0x5be1('0x9')][_0x4333ab[_0x5be1('0x4b')]];}}else if(!_[_0x5be1('0x49')](this['channels'][_0x4333ab[_0x5be1('0x4c')]])){this[_0x5be1('0x45')](_0x4333ab['transfertargetuniqueid']);if(this['channels'][_0x4333ab[_0x5be1('0x4d')]]){this['channels'][_0x4333ab[_0x5be1('0x4d')]][_0x5be1('0x28')]=!![];this[_0x5be1('0x9')][_0x4333ab['transfereeuniqueid']]=this[_0x5be1('0x9')][_0x4333ab['origtransfereruniqueid']];delete this[_0x5be1('0x9')][_0x4333ab[_0x5be1('0x4d')]];}}}catch(_0x5e1721){logger[_0x5be1('0x39')](_0x5be1('0x4e'),_0x5e1721[_0x5be1('0x3c')]);}};Acw[_0x5be1('0x1a')][_0x5be1('0x14')]=function(_0x3b1ef4){try{if(this[_0x5be1('0x9')][_0x3b1ef4[_0x5be1('0x4f')]]){logger['info'](_0x5be1('0x50'),JSON[_0x5be1('0x51')](_0x3b1ef4[_0x5be1('0x4f')]));this[_0x5be1('0x45')](_0x3b1ef4[_0x5be1('0x4f')]);}else if(this[_0x5be1('0x9')][_0x3b1ef4[_0x5be1('0x52')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x5be1('0x51')](_0x3b1ef4['transfererlinkedid']));this[_0x5be1('0x45')](_0x3b1ef4[_0x5be1('0x52')]);}}catch(_0x40e824){logger['error'](_0x5be1('0x53'),_0x40e824[_0x5be1('0x3c')]);}};Acw[_0x5be1('0x1a')][_0x5be1('0x10')]=function(_0x64db1e){try{if(this['voiceQueues'][_0x64db1e['queue']]&&this[_0x5be1('0x6')][_0x64db1e[_0x5be1('0x1c')]][_0x5be1('0x54')]==='all'){if(this[_0x5be1('0x7')][_0x64db1e['interface']]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x64db1e['uniqueid'],_0x64db1e[_0x5be1('0x1b')],_0x64db1e[_0x5be1('0x1c')]);return RpcUser[_0x5be1('0x2a')](this[_0x5be1('0x7')][_0x64db1e[_0x5be1('0x1b')]],_0x5be1('0x55'),_0x64db1e[_0x5be1('0x32')]);}}}catch(_0x191752){logger['error']('[ACW][syncAgentRingNoAnswer]\x20%s',_0x191752['message']);}};module[_0x5be1('0x56')]=Acw;
\ No newline at end of file
index b30b85c..7dafdee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde58=['exports','util','../../config/logger','ami','../../config/environment','port','asterisk','username','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','fullybooted','resolve','then','actionDeviceStateList','actionQueueSummary'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xde58,0x12a));var _0x8de5=function(_0x37dec6,_0x1264d7){_0x37dec6=_0x37dec6-0x0;var _0x2f9ee0=_0xde58[_0x37dec6];return _0x2f9ee0;};'use strict';var Manager=require('asterisk-manager');var BPromise=require('bluebird');var util=require(_0x8de5('0x0'));var logger=require(_0x8de5('0x1'))(_0x8de5('0x2'));var config=require(_0x8de5('0x3'));var ami=new Manager(config['asterisk'][_0x8de5('0x4')],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['password'],!![]);ami['keepConnected']();ami[_0x8de5('0x7')]=BPromise[_0x8de5('0x8')](ami[_0x8de5('0x9')]);function error(_0x4a00de){logger[_0x8de5('0xa')](util['format'](_0x8de5('0xb'),config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['ip'],config['asterisk']['port'],util[_0x8de5('0xc')](_0x4a00de,![],null)));}function close(){logger[_0x8de5('0xa')](util[_0x8de5('0xd')](_0x8de5('0xe'),config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')]));}ami[_0x8de5('0xf')]=function(){return function(){return ami['Action']({'action':_0x8de5('0x10')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x8de5('0x7')]({'action':'devicestatelist'});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x8de5('0x7')]({'action':_0x8de5('0x11')});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x8de5('0x7')]({'action':_0x8de5('0x12')});};};ami[_0x8de5('0x13')]=function(){return function(){return ami[_0x8de5('0x7')]({'action':_0x8de5('0x14')});};};function connect(){logger[_0x8de5('0x15')](util[_0x8de5('0xd')](_0x8de5('0x16'),config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')]));ami['once'](_0x8de5('0xa'),error);ami[_0x8de5('0x17')](_0x8de5('0x18'),close);}ami['on'](_0x8de5('0x19'),connect);ami['on'](_0x8de5('0x1a'),function(_0x2b99e4){logger[_0x8de5('0x15')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x8de5('0x5')]['username'],config['asterisk']['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')],util[_0x8de5('0xc')](_0x2b99e4,![],null)));});ami['on'](_0x8de5('0x1b'),function(){logger[_0x8de5('0x15')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x8de5('0x5')]['username'],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')]));return Promise[_0x8de5('0x1c')]()[_0x8de5('0x1d')](ami[_0x8de5('0xf')]())[_0x8de5('0x1d')](ami[_0x8de5('0x1e')]())[_0x8de5('0x1d')](ami['actionSipPeerStatus']())['then'](ami[_0x8de5('0x1f')]())[_0x8de5('0x1d')](ami[_0x8de5('0x13')]())['catch'](function(_0x256ae9){logger[_0x8de5('0xa')]('[ami.js][fullybooted]',util[_0x8de5('0xc')](_0x256ae9,{'showHidden':![],'depth':null}));});});ami['once'](_0x8de5('0xa'),error);ami[_0x8de5('0x17')](_0x8de5('0x18'),close);module[_0x8de5('0x20')]=ami;
\ No newline at end of file
+var _0x0b0e=['../../config/environment','asterisk','port','username','password','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Action','sipshowregistry','actionDeviceStateList','devicestatelist','actionQueueSummary','actionCoreShowChannels','coreshowchannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','close','shutdown','info','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','then','actionSipPeerStatus','catch','[ami.js][fullybooted]','once','asterisk-manager','moment','lodash','../../config/logger','ami'];(function(_0x329002,_0x5a2640){var _0x177655=function(_0x45ee0c){while(--_0x45ee0c){_0x329002['push'](_0x329002['shift']());}};_0x177655(++_0x5a2640);}(_0x0b0e,0x187));var _0xe0b0=function(_0x3b7a0c,_0xf1a4c2){_0x3b7a0c=_0x3b7a0c-0x0;var _0x3bb70f=_0x0b0e[_0x3b7a0c];return _0x3bb70f;};'use strict';var Manager=require(_0xe0b0('0x0'));var BPromise=require('bluebird');var moment=require(_0xe0b0('0x1'));var util=require('util');var _=require(_0xe0b0('0x2'));var logger=require(_0xe0b0('0x3'))(_0xe0b0('0x4'));var config=require(_0xe0b0('0x5'));var ami=new Manager(config[_0xe0b0('0x6')][_0xe0b0('0x7')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')][_0xe0b0('0x9')],!![]);ami['keepConnected']();ami['Action']=BPromise[_0xe0b0('0xa')](ami[_0xe0b0('0xb')]);function error(_0xc4a085){logger[_0xe0b0('0xc')](util['format'](_0xe0b0('0xd'),config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')]['port'],util[_0xe0b0('0xe')](_0xc4a085,![],null)));}function close(){logger[_0xe0b0('0xc')](util[_0xe0b0('0xf')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x11')});};};ami[_0xe0b0('0x12')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x13')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'sippeerstatus'});};};ami[_0xe0b0('0x14')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'queuesummary'});};};ami[_0xe0b0('0x15')]=function(){return function(){return ami['Action']({'action':_0xe0b0('0x16')});};};function connect(_0x100204){logger['info'](util['format'](_0xe0b0('0x17'),config['asterisk']['username'],config['asterisk']['ip'],config[_0xe0b0('0x6')]['port']));ami['once'](_0xe0b0('0xc'),error);ami['once'](_0xe0b0('0x18'),close);}ami['on']('connect',connect);ami['on'](_0xe0b0('0x19'),function(_0x1cd7c4){logger[_0xe0b0('0x1a')](util[_0xe0b0('0xf')](_0xe0b0('0x1b'),config['asterisk']['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')],util[_0xe0b0('0xe')](_0x1cd7c4,![],null)));});ami['on']('fullybooted',function(_0x170ad8){logger['info'](util[_0xe0b0('0xf')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')]));return BPromise['resolve']()[_0xe0b0('0x1c')](ami['actionSipShowRegistry']())[_0xe0b0('0x1c')](ami[_0xe0b0('0x12')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x1d')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x14')]())['then'](ami[_0xe0b0('0x15')]())[_0xe0b0('0x1e')](function(_0x5b7a64){logger[_0xe0b0('0xc')](_0xe0b0('0x1f'),util[_0xe0b0('0xe')](_0x5b7a64,{'showHidden':![],'depth':null}));});});ami[_0xe0b0('0x20')](_0xe0b0('0xc'),error);ami[_0xe0b0('0x20')](_0xe0b0('0x18'),close);module['exports']=ami;
\ No newline at end of file
index 958e2a9..0181264 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(_0x1ca4c3,_0x554126){var _0x4426a6=function(_0x11e9b0){while(--_0x11e9b0){_0x1ca4c3['push'](_0x1ca4c3['shift']());}};_0x4426a6(++_0x554126);}(_0xb7e7,0x121));var _0x7b7e=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xb7e7[_0x580576];return _0x3f55a0;};'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 _0xe706=['result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','debug','rpc','memberReport','error','message'];(function(_0x242a98,_0x13988e){var _0x580999=function(_0x341927){while(--_0x341927){_0x242a98['push'](_0x242a98['shift']());}};_0x580999(++_0x13988e);}(_0xe706,0xa3));var _0x6e70=function(_0x1e8219,_0x31b4a0){_0x1e8219=_0x1e8219-0x0;var _0x37d537=_0xe706[_0x1e8219];return _0x37d537;};'use strict';var jayson=require(_0x6e70('0x0'));var BPromise=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('ami');var client=jayson[_0x6e70('0x3')][_0x6e70('0x4')]({'port':0x2329});client[_0x6e70('0x5')]=function(_0x7dfbc3,_0x142c27){return new BPromise(function(_0x2164a4,_0x376a8d){return client[_0x6e70('0x6')](_0x7dfbc3,_0x142c27)[_0x6e70('0x7')](function(_0x4381d1){logger[_0x6e70('0x8')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x142c27,_0x4381d1);if(_0x4381d1[_0x6e70('0xb')]){logger[_0x6e70('0xb')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')],_0x142c27);return _0x376a8d(_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')]);}else{return _0x2164a4(_0x4381d1[_0x6e70('0xd')]);}})[_0x6e70('0xe')](function(_0x4600f9){logger['error']('rpc',_0x6e70('0xa'),_0x7dfbc3,_0x4600f9,_0x142c27);return _0x376a8d(_0x4600f9);});});};module[_0x6e70('0xf')]=client;
\ No newline at end of file
index 5d91608..782f37a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e53=['firstName','lastName','number','phone','queue','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util','isNil','voiceQueue','uniqueid','name','Contact'];(function(_0x3c9be6,_0x19e7fc){var _0x3540e6=function(_0x514cd1){while(--_0x514cd1){_0x3c9be6['push'](_0x3c9be6['shift']());}};_0x3540e6(++_0x19e7fc);}(_0x3e53,0xcc));var _0x33e5=function(_0xc6a162,_0x19f54f){_0xc6a162=_0xc6a162-0x0;var _0x1c75ce=_0x3e53[_0xc6a162];return _0x1c75ce;};'use strict';var util=require(_0x33e5('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x1cb991,_0x4a737d,_0x1bc2f5){var _0x405b43='';if(!_[_0x33e5('0x1')](_0x4a737d)&&'string'===typeof _0x4a737d){_0x405b43+=_0x4a737d;}if(!_[_0x33e5('0x1')](_0x1bc2f5)&&'string'===typeof _0x1bc2f5){_0x405b43+='\x20'+_0x1bc2f5;}if(_0x405b43!==''){return _0x405b43;}return _0x1cb991;}function Action(_0x36bd68,_0x4ddec8,_0x37e966){this[_0x33e5('0x2')]=_0x36bd68;this[_0x33e5('0x3')]=_0x37e966||undefined;this[_0x33e5('0x4')]=checkNameSurname(_0x4ddec8[_0x33e5('0x5')]['phone'],_0x4ddec8['Contact'][_0x33e5('0x6')],_0x4ddec8['Contact'][_0x33e5('0x7')]);this[_0x33e5('0x8')]=_0x4ddec8[_0x33e5('0x9')];this[_0x33e5('0xa')]=_0x36bd68[_0x33e5('0x4')];this['active']=_0x4ddec8['active']||![];this[_0x33e5('0xb')]=_0x36bd68['type'];this['dialQueueTimeout']=_0x36bd68[_0x33e5('0xc')]||0x3;this[_0x33e5('0xd')]=_0x4ddec8[_0x33e5('0xd')];this[_0x33e5('0xe')]=_0x4ddec8[_0x33e5('0xe')];this[_0x33e5('0xf')]=_0x4ddec8['countcongestionretry'];this['countnoanswerretry']=_0x4ddec8[_0x33e5('0x10')];this[_0x33e5('0x11')]=_0x4ddec8[_0x33e5('0x11')];this[_0x33e5('0x12')]=_0x4ddec8[_0x33e5('0x12')];this['countabandonedretry']=_0x4ddec8['countabandonedretry'];this['countmachineretry']=_0x4ddec8[_0x33e5('0x13')];this[_0x33e5('0x14')]=_0x4ddec8['countagentrejectretry'];this[_0x33e5('0x15')]=_0x4ddec8[_0x33e5('0x15')];this['ListId']=_0x4ddec8[_0x33e5('0x16')];this[_0x33e5('0x17')]=_0x4ddec8[_0x33e5('0x17')];this[_0x33e5('0x18')]=_0x4ddec8['VoiceQueueId'];this[_0x33e5('0x19')]=_0x4ddec8[_0x33e5('0x19')];this[_0x33e5('0x1a')]=_0x4ddec8['id'];this[_0x33e5('0x1b')]=_0x4ddec8[_0x33e5('0x5')][_0x33e5('0x6')]||'';this['starttime']=moment()[_0x33e5('0x1c')](_0x33e5('0x1d'));this[_0x33e5('0x1e')]=_0x4ddec8[_0x33e5('0x1e')];this[_0x33e5('0x1f')]=_0x4ddec8[_0x33e5('0x1f')];this[_0x33e5('0x20')]=_0x4ddec8[_0x33e5('0x20')];this[_0x33e5('0x21')]=_0x4ddec8[_0x33e5('0x21')];this[_0x33e5('0x22')]='';this[_0x33e5('0x23')]='';}Action[_0x33e5('0x24')][_0x33e5('0x25')]=function(){return util[_0x33e5('0x1c')](_0x33e5('0x26'),this['name'],this[_0x33e5('0x2')][_0x33e5('0x27')]>0x0?this[_0x33e5('0x8')][_0x33e5('0x28')](this[_0x33e5('0x2')][_0x33e5('0x27')]):this[_0x33e5('0x8')]);};Action[_0x33e5('0x24')]['getQueue']=function(){return this['queue'];};module[_0x33e5('0x29')]=Action;
\ No newline at end of file
+var _0x566a=['substring','getQueue','queue','util','moment','isNil','string','voiceQueue','uniqueid','name','phone','Contact','firstName','lastName','active','type','dialQueueTimeout','scheduledat','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','number'];(function(_0x50bb41,_0x4da1d6){var _0x512809=function(_0x5019f8){while(--_0x5019f8){_0x50bb41['push'](_0x50bb41['shift']());}};_0x512809(++_0x4da1d6);}(_0x566a,0xe4));var _0xa566=function(_0x28e4a3,_0x271bad){_0x28e4a3=_0x28e4a3-0x0;var _0x43b001=_0x566a[_0x28e4a3];return _0x43b001;};'use strict';var util=require(_0xa566('0x0'));var _=require('lodash');var moment=require(_0xa566('0x1'));function checkNameSurname(_0x44a2f4,_0x525067,_0x30fcb3){var _0x4b9a83='';if(!_[_0xa566('0x2')](_0x525067)&&_0xa566('0x3')===typeof _0x525067){_0x4b9a83+=_0x525067;}if(!_[_0xa566('0x2')](_0x30fcb3)&&_0xa566('0x3')===typeof _0x30fcb3){_0x4b9a83+='\x20'+_0x30fcb3;}if(_0x4b9a83!==''){return _0x4b9a83;}return _0x44a2f4;}function Action(_0x1fdd45,_0x1423a4,_0x2d5d75){this[_0xa566('0x4')]=_0x1fdd45;this[_0xa566('0x5')]=_0x2d5d75||undefined;this[_0xa566('0x6')]=checkNameSurname(_0x1423a4['Contact'][_0xa566('0x7')],_0x1423a4[_0xa566('0x8')][_0xa566('0x9')],_0x1423a4[_0xa566('0x8')][_0xa566('0xa')]);this['number']=_0x1423a4[_0xa566('0x7')];this['queue']=_0x1fdd45[_0xa566('0x6')];this[_0xa566('0xb')]=_0x1423a4[_0xa566('0xb')]||![];this['type']=_0x1fdd45[_0xa566('0xc')];this[_0xa566('0xd')]=_0x1fdd45['dialQueueTimeout']||0x3;this[_0xa566('0xe')]=_0x1423a4['scheduledat'];this[_0xa566('0xf')]=_0x1423a4[_0xa566('0xf')];this['countcongestionretry']=_0x1423a4['countcongestionretry'];this[_0xa566('0x10')]=_0x1423a4['countnoanswerretry'];this['countnosuchnumberretry']=_0x1423a4[_0xa566('0x11')];this[_0xa566('0x12')]=_0x1423a4[_0xa566('0x12')];this['countabandonedretry']=_0x1423a4[_0xa566('0x13')];this[_0xa566('0x14')]=_0x1423a4[_0xa566('0x14')];this['countagentrejectretry']=_0x1423a4[_0xa566('0x15')];this['ContactId']=_0x1423a4[_0xa566('0x16')];this['ListId']=_0x1423a4[_0xa566('0x17')];this[_0xa566('0x18')]=_0x1423a4['UserId'];this[_0xa566('0x19')]=_0x1423a4[_0xa566('0x19')];this[_0xa566('0x1a')]=_0x1423a4[_0xa566('0x1a')];this[_0xa566('0x1b')]=_0x1423a4['id'];this[_0xa566('0x1c')]=_0x1423a4[_0xa566('0x8')][_0xa566('0x9')]||'';this[_0xa566('0x1d')]=moment()[_0xa566('0x1e')](_0xa566('0x1f'));this[_0xa566('0x20')]=_0x1423a4[_0xa566('0x20')];this['callbackuniqueid']=_0x1423a4[_0xa566('0x21')];this['callbackat']=_0x1423a4['callbackat'];this[_0xa566('0x22')]=_0x1423a4['recallme'];this[_0xa566('0x23')]='';this[_0xa566('0x24')]='';}Action[_0xa566('0x25')][_0xa566('0x26')]=function(){return util[_0xa566('0x1e')](_0xa566('0x27'),this[_0xa566('0x6')],this['voiceQueue'][_0xa566('0x28')]>0x0?this[_0xa566('0x29')][_0xa566('0x2a')](this[_0xa566('0x4')]['dialCutDigit']):this[_0xa566('0x29')]);};Action[_0xa566('0x25')][_0xa566('0x2b')]=function(){return this[_0xa566('0x2c')];};module['exports']=Action;
\ No newline at end of file
index b83f4d4..af67da1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x674a=['holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','state','statedesc','scheduledat','type','campaigntype','queue','countcongestionretry','countnoanswerretry','countbusyretry','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x674a,0x111));var _0xa674=function(_0x409723,_0x354a6d){_0x409723=_0x409723-0x0;var _0x4c62c1=_0x674a[_0x409723];return _0x4c62c1;};'use strict';var util=require(_0xa674('0x0'));var _=require('lodash');var moment=require(_0xa674('0x1'));function getSeconds(_0x1f86e3,_0x139276){var _0xad4cd4=moment(_0x1f86e3)[_0xa674('0x2')](0x0);var _0x1b306d=moment(_0x139276)[_0xa674('0x2')](0x0);return _0xad4cd4['diff'](_0x1b306d,'seconds');}function AgentComplete(_0x44cee7,_0x54a40a){this[_0xa674('0x3')]=0x4;this[_0xa674('0x4')]='Answer';this[_0xa674('0x5')]=_0x44cee7['scheduledat'];this[_0xa674('0x6')]=_0x44cee7[_0xa674('0x6')];this[_0xa674('0x7')]=_0x44cee7[_0xa674('0x6')]==='outbound'?_0xa674('0x8'):_0x44cee7['type'];this['countbusyretry']=_0x44cee7['countbusyretry'];this[_0xa674('0x9')]=_0x44cee7[_0xa674('0x9')];this[_0xa674('0xa')]=_0x44cee7['countnoanswerretry'];this['countglobal']=_0x44cee7[_0xa674('0xb')]+_0x44cee7[_0xa674('0x9')]+_0x44cee7[_0xa674('0xa')]+_0x44cee7[_0xa674('0xc')]+_0x44cee7[_0xa674('0xd')]+_0x44cee7['countabandonedretry']+_0x44cee7['countmachineretry']+_0x44cee7[_0xa674('0xe')];this['countnosuchnumberretry']=_0x44cee7[_0xa674('0xc')];this[_0xa674('0xd')]=_0x44cee7[_0xa674('0xd')];this[_0xa674('0xf')]=_0x44cee7['countabandonedretry'];this['countmachineretry']=_0x44cee7[_0xa674('0x10')];this[_0xa674('0xe')]=_0x44cee7[_0xa674('0xe')];this[_0xa674('0x11')]=_0x54a40a[_0xa674('0x11')];this[_0xa674('0x12')]=_0x44cee7[_0xa674('0x13')];this['calleridnum']=_0x44cee7[_0xa674('0x14')];this['starttime']=_0x44cee7[_0xa674('0x15')];this['responsetime']=_0x44cee7[_0xa674('0x16')];this[_0xa674('0x17')]=_0x44cee7[_0xa674('0x17')];this[_0xa674('0x18')]=moment()[_0xa674('0x19')](_0xa674('0x1a'));this[_0xa674('0x1b')]=getSeconds(_0x44cee7['responsetime'],_0x44cee7[_0xa674('0x15')]);this[_0xa674('0x1c')]=getSeconds(_0x44cee7[_0xa674('0x17')],_0x44cee7['responsetime']);this[_0xa674('0x1d')]=getSeconds(this[_0xa674('0x18')],_0x44cee7[_0xa674('0x17')]);this[_0xa674('0x8')]=_0x54a40a[_0xa674('0x8')];this['membername']=_0x54a40a[_0xa674('0x1e')];this[_0xa674('0x1f')]=_0x54a40a[_0xa674('0x1f')];this['callback']=_0x44cee7[_0xa674('0x20')];this[_0xa674('0x21')]=_0x44cee7[_0xa674('0x21')];this[_0xa674('0x22')]=_0x44cee7[_0xa674('0x22')];this[_0xa674('0x23')]=_0x44cee7[_0xa674('0x23')];this[_0xa674('0x24')]=_0x44cee7[_0xa674('0x24')];this['ListId']=_0x44cee7['ListId'];this[_0xa674('0x25')]=_0x44cee7[_0xa674('0x25')];this[_0xa674('0x26')]=_0x44cee7[_0xa674('0x26')];this[_0xa674('0x27')]=_0x44cee7['CampaignId'];this[_0xa674('0x28')]=_0x44cee7['originatecalleridnum']||'';this[_0xa674('0x29')]=_0x44cee7[_0xa674('0x29')]||'';}module[_0xa674('0x2a')]=AgentComplete;
\ No newline at end of file
+var _0xd1f1=['responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','answertime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','state','statedesc','Answer','type','campaigntype','outbound','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridname','starttime'];(function(_0x3fa3f7,_0x985562){var _0x4bbaa0=function(_0x1b21eb){while(--_0x1b21eb){_0x3fa3f7['push'](_0x3fa3f7['shift']());}};_0x4bbaa0(++_0x985562);}(_0xd1f1,0xbc));var _0x1d1f=function(_0x2b2b33,_0x56606f){_0x2b2b33=_0x2b2b33-0x0;var _0x229157=_0xd1f1[_0x2b2b33];return _0x229157;};'use strict';var util=require(_0x1d1f('0x0'));var _=require(_0x1d1f('0x1'));var moment=require('moment');function getSeconds(_0x3c29ba,_0x28750f){var _0x346c36=moment(_0x3c29ba)[_0x1d1f('0x2')](0x0);var _0x402c84=moment(_0x28750f)[_0x1d1f('0x2')](0x0);return _0x346c36[_0x1d1f('0x3')](_0x402c84,'seconds');}function AgentComplete(_0x11f303,_0x246882){this[_0x1d1f('0x4')]=0x4;this[_0x1d1f('0x5')]=_0x1d1f('0x6');this['scheduledat']=_0x11f303['scheduledat'];this['type']=_0x11f303[_0x1d1f('0x7')];this[_0x1d1f('0x8')]=_0x11f303[_0x1d1f('0x7')]===_0x1d1f('0x9')?'queue':_0x11f303[_0x1d1f('0x7')];this[_0x1d1f('0xa')]=_0x11f303[_0x1d1f('0xa')];this[_0x1d1f('0xb')]=_0x11f303[_0x1d1f('0xb')];this['countnoanswerretry']=_0x11f303['countnoanswerretry'];this[_0x1d1f('0xc')]=_0x11f303[_0x1d1f('0xa')]+_0x11f303['countcongestionretry']+_0x11f303[_0x1d1f('0xd')]+_0x11f303[_0x1d1f('0xe')]+_0x11f303[_0x1d1f('0xf')]+_0x11f303[_0x1d1f('0x10')]+_0x11f303['countmachineretry']+_0x11f303[_0x1d1f('0x11')];this[_0x1d1f('0xe')]=_0x11f303[_0x1d1f('0xe')];this[_0x1d1f('0xf')]=_0x11f303[_0x1d1f('0xf')];this[_0x1d1f('0x10')]=_0x11f303[_0x1d1f('0x10')];this[_0x1d1f('0x12')]=_0x11f303[_0x1d1f('0x12')];this[_0x1d1f('0x11')]=_0x11f303[_0x1d1f('0x11')];this[_0x1d1f('0x13')]=_0x246882[_0x1d1f('0x13')];this[_0x1d1f('0x14')]=_0x11f303['name'];this['calleridnum']=_0x11f303['number'];this[_0x1d1f('0x15')]=_0x11f303['starttime'];this[_0x1d1f('0x16')]=_0x11f303['responsetime'];this['answertime']=_0x11f303['answertime'];this[_0x1d1f('0x17')]=moment()['format'](_0x1d1f('0x18'));this[_0x1d1f('0x19')]=getSeconds(_0x11f303[_0x1d1f('0x16')],_0x11f303[_0x1d1f('0x15')]);this['holdtime']=getSeconds(_0x11f303['answertime'],_0x11f303[_0x1d1f('0x16')]);this['talktime']=getSeconds(this[_0x1d1f('0x17')],_0x11f303[_0x1d1f('0x1a')]);this[_0x1d1f('0x1b')]=_0x246882[_0x1d1f('0x1b')];this[_0x1d1f('0x1c')]=_0x246882[_0x1d1f('0x1c')];this['reason']=_0x246882[_0x1d1f('0x1d')];this[_0x1d1f('0x1e')]=_0x11f303['callback'];this[_0x1d1f('0x1f')]=_0x11f303[_0x1d1f('0x1f')];this[_0x1d1f('0x20')]=_0x11f303['callbackat'];this[_0x1d1f('0x21')]=_0x11f303[_0x1d1f('0x21')];this[_0x1d1f('0x22')]=_0x11f303['ContactId'];this[_0x1d1f('0x23')]=_0x11f303[_0x1d1f('0x23')];this[_0x1d1f('0x24')]=_0x11f303['UserId'];this[_0x1d1f('0x25')]=_0x11f303[_0x1d1f('0x25')];this[_0x1d1f('0x26')]=_0x11f303[_0x1d1f('0x26')];this[_0x1d1f('0x27')]=_0x11f303['originatecalleridnum']||'';this['originatecalleridname']=_0x11f303[_0x1d1f('0x28')]||'';}module[_0x1d1f('0x29')]=AgentComplete;
\ No newline at end of file
index d3d6a89..3154653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','lodash','milliseconds','diff','seconds','uniqueid','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x5881b8,_0x2878ec){var _0xf69526=function(_0x1740a3){while(--_0x1740a3){_0x5881b8['push'](_0x5881b8['shift']());}};_0xf69526(++_0x2878ec);}(_0xa41a,0x6b));var _0xaa41=function(_0xac3187,_0x13735b){_0xac3187=_0xac3187-0x0;var _0x760809=_0xa41a[_0xac3187];return _0x760809;};'use strict';var util=require(_0xaa41('0x0'));var _=require(_0xaa41('0x1'));var moment=require('moment');function getSeconds(_0x1612c4,_0x2a96ba){var _0x43654a=moment(_0x1612c4)[_0xaa41('0x2')](0x0);var _0x37c7a1=moment(_0x2a96ba)[_0xaa41('0x2')](0x0);return _0x43654a[_0xaa41('0x3')](_0x37c7a1,_0xaa41('0x4'));}function Final(_0x5dad7c){this[_0xaa41('0x5')]=_0x5dad7c[_0xaa41('0x5')];this['scheduledat']=_0x5dad7c['scheduledat'];this[_0xaa41('0x6')]=_0x5dad7c[_0xaa41('0x6')];this['campaigntype']=_0x5dad7c[_0xaa41('0x6')]===_0xaa41('0x7')?_0xaa41('0x8'):_0x5dad7c[_0xaa41('0x6')];this[_0xaa41('0x9')]=_0x5dad7c[_0xaa41('0x9')];this[_0xaa41('0xa')]=_0x5dad7c[_0xaa41('0xa')];this[_0xaa41('0xb')]=_0x5dad7c['countnoanswerretry'];this[_0xaa41('0xc')]=_0x5dad7c[_0xaa41('0x9')]+_0x5dad7c['countcongestionretry']+_0x5dad7c['countnoanswerretry']+_0x5dad7c[_0xaa41('0xd')]+_0x5dad7c['countdropretry']+_0x5dad7c[_0xaa41('0xe')]+_0x5dad7c[_0xaa41('0xf')]+_0x5dad7c[_0xaa41('0x10')];this[_0xaa41('0xd')]=_0x5dad7c[_0xaa41('0xd')];this['countdropretry']=_0x5dad7c[_0xaa41('0x11')];this[_0xaa41('0xe')]=_0x5dad7c[_0xaa41('0xe')];this[_0xaa41('0xf')]=_0x5dad7c[_0xaa41('0xf')];this[_0xaa41('0x10')]=_0x5dad7c[_0xaa41('0x10')];this['queue']=_0x5dad7c[_0xaa41('0x8')];this[_0xaa41('0x12')]=_0x5dad7c[_0xaa41('0x12')];this[_0xaa41('0x13')]=_0x5dad7c[_0xaa41('0x13')];this[_0xaa41('0x14')]=_0x5dad7c[_0xaa41('0x14')];this[_0xaa41('0x15')]=_0x5dad7c[_0xaa41('0x15')];this['endtime']=_0x5dad7c['responsetime'];this[_0xaa41('0x16')]=_0x5dad7c[_0xaa41('0x16')]||0x0;this[_0xaa41('0x17')]=_0x5dad7c['holdtime']||0x0;this[_0xaa41('0x18')]=_0x5dad7c[_0xaa41('0x18')]||0x0;this['callback']=_0x5dad7c['callback'];this[_0xaa41('0x19')]=_0x5dad7c['callbackuniqueid'];this[_0xaa41('0x1a')]=_0x5dad7c[_0xaa41('0x1a')];this[_0xaa41('0x1b')]=_0x5dad7c[_0xaa41('0x1b')];this[_0xaa41('0x1c')]=_0x5dad7c['ContactId'];this[_0xaa41('0x1d')]=_0x5dad7c[_0xaa41('0x1d')];this[_0xaa41('0x1e')]=_0x5dad7c[_0xaa41('0x1e')];this[_0xaa41('0x1f')]=_0x5dad7c[_0xaa41('0x1f')];this['CampaignId']=_0x5dad7c['CampaignId'];this[_0xaa41('0x20')]=_0x5dad7c['originatecalleridnum']||'';this['originatecalleridname']=_0x5dad7c[_0xaa41('0x21')]||'';}module['exports']=Final;
\ No newline at end of file
+var _0x885a=['scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','uniqueid'];(function(_0x2d1f85,_0x1d5827){var _0x2ef9fd=function(_0x53161a){while(--_0x53161a){_0x2d1f85['push'](_0x2d1f85['shift']());}};_0x2ef9fd(++_0x1d5827);}(_0x885a,0x180));var _0xa885=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x885a[_0x178e48];return _0x440d7e;};'use strict';var util=require('util');var _=require(_0xa885('0x0'));var moment=require(_0xa885('0x1'));function getSeconds(_0x35456c,_0x2e4bc8){var _0x573a2b=moment(_0x35456c)[_0xa885('0x2')](0x0);var _0x1c41b5=moment(_0x2e4bc8)[_0xa885('0x2')](0x0);return _0x573a2b[_0xa885('0x3')](_0x1c41b5,_0xa885('0x4'));}function Final(_0x33f18b){this['uniqueid']=_0x33f18b[_0xa885('0x5')];this[_0xa885('0x6')]=_0x33f18b[_0xa885('0x6')];this['type']=_0x33f18b[_0xa885('0x7')];this[_0xa885('0x8')]=_0x33f18b[_0xa885('0x7')]==='outbound'?_0xa885('0x9'):_0x33f18b[_0xa885('0x7')];this[_0xa885('0xa')]=_0x33f18b[_0xa885('0xa')];this[_0xa885('0xb')]=_0x33f18b[_0xa885('0xb')];this[_0xa885('0xc')]=_0x33f18b['countnoanswerretry'];this[_0xa885('0xd')]=_0x33f18b[_0xa885('0xa')]+_0x33f18b[_0xa885('0xb')]+_0x33f18b[_0xa885('0xc')]+_0x33f18b[_0xa885('0xe')]+_0x33f18b[_0xa885('0xf')]+_0x33f18b[_0xa885('0x10')]+_0x33f18b['countmachineretry']+_0x33f18b[_0xa885('0x11')];this[_0xa885('0xe')]=_0x33f18b[_0xa885('0xe')];this[_0xa885('0xf')]=_0x33f18b[_0xa885('0xf')];this['countabandonedretry']=_0x33f18b[_0xa885('0x10')];this[_0xa885('0x12')]=_0x33f18b['countmachineretry'];this[_0xa885('0x11')]=_0x33f18b[_0xa885('0x11')];this['queue']=_0x33f18b[_0xa885('0x9')];this[_0xa885('0x13')]=_0x33f18b['calleridname'];this[_0xa885('0x14')]=_0x33f18b['calleridnum'];this[_0xa885('0x15')]=_0x33f18b[_0xa885('0x15')];this[_0xa885('0x16')]=_0x33f18b['responsetime'];this[_0xa885('0x17')]=_0x33f18b['responsetime'];this[_0xa885('0x18')]=_0x33f18b[_0xa885('0x18')]||0x0;this[_0xa885('0x19')]=_0x33f18b['holdtime']||0x0;this[_0xa885('0x1a')]=_0x33f18b[_0xa885('0x1a')]||0x0;this[_0xa885('0x1b')]=_0x33f18b['callback'];this[_0xa885('0x1c')]=_0x33f18b[_0xa885('0x1c')];this[_0xa885('0x1d')]=_0x33f18b['callbackat'];this[_0xa885('0x1e')]=_0x33f18b['recallme'];this[_0xa885('0x1f')]=_0x33f18b[_0xa885('0x1f')];this['ListId']=_0x33f18b[_0xa885('0x20')];this[_0xa885('0x21')]=_0x33f18b[_0xa885('0x21')];this['VoiceQueueId']=_0x33f18b[_0xa885('0x22')];this[_0xa885('0x23')]=_0x33f18b['CampaignId'];this[_0xa885('0x24')]=_0x33f18b['originatecalleridnum']||'';this[_0xa885('0x25')]=_0x33f18b['originatecalleridname']||'';}module[_0xa885('0x26')]=Final;
\ No newline at end of file
index f56d01b..30a915f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x338b=['countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','IVR','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','campaigntype','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal'];(function(_0x597722,_0x205dc4){var _0x1d096b=function(_0x3a6834){while(--_0x3a6834){_0x597722['push'](_0x597722['shift']());}};_0x1d096b(++_0x205dc4);}(_0x338b,0xab));var _0xb338=function(_0x16db8a,_0x2a34e1){_0x16db8a=_0x16db8a-0x0;var _0x126cae=_0x338b[_0x16db8a];return _0x126cae;};'use strict';var util=require('util');var _=require(_0xb338('0x0'));var moment=require(_0xb338('0x1'));function getSeconds(_0xd22759,_0x362ac5){var _0x4759a4=moment(_0xd22759)[_0xb338('0x2')](0x0);var _0x5197aa=moment(_0x362ac5)[_0xb338('0x2')](0x0);return _0x4759a4[_0xb338('0x3')](_0x5197aa,_0xb338('0x4'));}function Hangup(_0x30929e,_0x56e7c7){this[_0xb338('0x5')]=0x4;this[_0xb338('0x6')]=_0xb338('0x7');this[_0xb338('0x8')]=_0x30929e[_0xb338('0x8')];this['type']=_0x30929e['type'];this[_0xb338('0x9')]=_0x30929e[_0xb338('0xa')]===_0xb338('0xb')?_0xb338('0xc'):_0x30929e['type'];this[_0xb338('0xd')]=_0x30929e[_0xb338('0xd')];this['countcongestionretry']=_0x30929e[_0xb338('0xe')];this[_0xb338('0xf')]=_0x30929e[_0xb338('0xf')];this[_0xb338('0x10')]=_0x30929e[_0xb338('0xd')]+_0x30929e['countcongestionretry']+_0x30929e[_0xb338('0xf')]+_0x30929e[_0xb338('0x11')]+_0x30929e[_0xb338('0x12')]+_0x30929e[_0xb338('0x13')]+_0x30929e[_0xb338('0x14')]+_0x30929e[_0xb338('0x15')];this['countnosuchnumberretry']=_0x30929e[_0xb338('0x11')];this[_0xb338('0x12')]=_0x30929e[_0xb338('0x12')];this[_0xb338('0x13')]=_0x30929e['countabandonedretry'];this[_0xb338('0x14')]=_0x30929e[_0xb338('0x14')];this[_0xb338('0x15')]=_0x30929e['countagentrejectretry'];this['uniqueid']=_0x56e7c7[_0xb338('0x16')];this[_0xb338('0x17')]=_0x30929e[_0xb338('0x18')];this[_0xb338('0x19')]=_0x30929e[_0xb338('0x1a')];this[_0xb338('0x1b')]=_0x30929e[_0xb338('0x1b')];this[_0xb338('0x1c')]=_0x30929e[_0xb338('0x1c')];this[_0xb338('0x1d')]=moment()[_0xb338('0x1e')](_0xb338('0x1f'));this[_0xb338('0x20')]=getSeconds(_0x30929e['responsetime'],_0x30929e['starttime']);this[_0xb338('0x21')]=0x0;this[_0xb338('0x22')]=getSeconds(this[_0xb338('0x1d')],_0x30929e['responsetime']);this[_0xb338('0xc')]=_0x30929e[_0xb338('0xc')];this[_0xb338('0x23')]=_0xb338('0x24');this[_0xb338('0x25')]=_0x56e7c7['cause-txt'];this[_0xb338('0x26')]=_0x30929e[_0xb338('0x26')];this['callbackuniqueid']=_0x30929e[_0xb338('0x27')];this[_0xb338('0x28')]=_0x30929e[_0xb338('0x28')];this[_0xb338('0x29')]=_0x30929e[_0xb338('0x29')];this[_0xb338('0x2a')]=_0x30929e[_0xb338('0x2a')];this['ListId']=_0x30929e[_0xb338('0x2b')];this[_0xb338('0x2c')]=_0x30929e[_0xb338('0x2c')];this['VoiceQueueId']=_0x30929e[_0xb338('0x2d')];this[_0xb338('0x2e')]=_0x30929e[_0xb338('0x2e')];}module['exports']=Hangup;
\ No newline at end of file
+var _0x771e=['ListId','UserId','VoiceQueueId','CampaignId','exports','lodash','moment','milliseconds','diff','state','statedesc','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','reason','cause-txt','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x771e,0x124));var _0xe771=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x771e[_0x3ab51d];return _0x29a04e;};'use strict';var util=require('util');var _=require(_0xe771('0x0'));var moment=require(_0xe771('0x1'));function getSeconds(_0x4d98aa,_0x31f5df){var _0x5b07af=moment(_0x4d98aa)[_0xe771('0x2')](0x0);var _0x437698=moment(_0x31f5df)['milliseconds'](0x0);return _0x5b07af[_0xe771('0x3')](_0x437698,'seconds');}function Hangup(_0x36d64c,_0x38772e){this[_0xe771('0x4')]=0x4;this[_0xe771('0x5')]='Answer';this['scheduledat']=_0x36d64c[_0xe771('0x6')];this[_0xe771('0x7')]=_0x36d64c['type'];this[_0xe771('0x8')]=_0x36d64c[_0xe771('0x7')]==='outbound'?_0xe771('0x9'):_0x36d64c[_0xe771('0x7')];this['countbusyretry']=_0x36d64c[_0xe771('0xa')];this[_0xe771('0xb')]=_0x36d64c[_0xe771('0xb')];this['countnoanswerretry']=_0x36d64c[_0xe771('0xc')];this['countglobal']=_0x36d64c[_0xe771('0xa')]+_0x36d64c[_0xe771('0xb')]+_0x36d64c[_0xe771('0xc')]+_0x36d64c[_0xe771('0xd')]+_0x36d64c[_0xe771('0xe')]+_0x36d64c[_0xe771('0xf')]+_0x36d64c[_0xe771('0x10')]+_0x36d64c['countagentrejectretry'];this[_0xe771('0xd')]=_0x36d64c['countnosuchnumberretry'];this[_0xe771('0xe')]=_0x36d64c[_0xe771('0xe')];this[_0xe771('0xf')]=_0x36d64c[_0xe771('0xf')];this['countmachineretry']=_0x36d64c[_0xe771('0x10')];this[_0xe771('0x11')]=_0x36d64c[_0xe771('0x11')];this['uniqueid']=_0x38772e[_0xe771('0x12')];this['calleridname']=_0x36d64c[_0xe771('0x13')];this[_0xe771('0x14')]=_0x36d64c[_0xe771('0x15')];this['starttime']=_0x36d64c[_0xe771('0x16')];this[_0xe771('0x17')]=_0x36d64c[_0xe771('0x17')];this[_0xe771('0x18')]=moment()['format'](_0xe771('0x19'));this[_0xe771('0x1a')]=getSeconds(_0x36d64c[_0xe771('0x17')],_0x36d64c['starttime']);this[_0xe771('0x1b')]=0x0;this[_0xe771('0x1c')]=getSeconds(this[_0xe771('0x18')],_0x36d64c['responsetime']);this[_0xe771('0x9')]=_0x36d64c[_0xe771('0x9')];this[_0xe771('0x1d')]='IVR';this[_0xe771('0x1e')]=_0x38772e[_0xe771('0x1f')];this['callback']=_0x36d64c['callback'];this['callbackuniqueid']=_0x36d64c[_0xe771('0x20')];this[_0xe771('0x21')]=_0x36d64c['callbackat'];this['recallme']=_0x36d64c[_0xe771('0x22')];this['ContactId']=_0x36d64c[_0xe771('0x23')];this['ListId']=_0x36d64c[_0xe771('0x24')];this[_0xe771('0x25')]=_0x36d64c[_0xe771('0x25')];this[_0xe771('0x26')]=_0x36d64c[_0xe771('0x26')];this[_0xe771('0x27')]=_0x36d64c['CampaignId'];}module[_0xe771('0x28')]=Hangup;
\ No newline at end of file
index cb3ed30..47c9c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd7f=['UserId','VoiceQueueId','CampaignId','originatecalleridnum','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','name','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId'];(function(_0x107d8c,_0x25dc05){var _0x41811d=function(_0x2d00a3){while(--_0x2d00a3){_0x107d8c['push'](_0x107d8c['shift']());}};_0x41811d(++_0x25dc05);}(_0xdd7f,0x134));var _0xfdd7=function(_0x3ccf3f,_0x203b39){_0x3ccf3f=_0x3ccf3f-0x0;var _0x4d7caa=_0xdd7f[_0x3ccf3f];return _0x4d7caa;};'use strict';var util=require(_0xfdd7('0x0'));var _=require(_0xfdd7('0x1'));var moment=require(_0xfdd7('0x2'));function getSeconds(_0x24fea1,_0x2113d8){var _0x3a6ece=moment(_0x24fea1)[_0xfdd7('0x3')](0x0);var _0x4bc4fc=moment(_0x2113d8)[_0xfdd7('0x3')](0x0);return _0x3a6ece['diff'](_0x4bc4fc,_0xfdd7('0x4'));}function History(_0x403c60){this[_0xfdd7('0x5')]=_0x403c60[_0xfdd7('0x5')];this[_0xfdd7('0x6')]=_0x403c60[_0xfdd7('0x6')]||undefined;this[_0xfdd7('0x7')]=_0x403c60[_0xfdd7('0x7')];this[_0xfdd7('0x8')]=_0x403c60[_0xfdd7('0x7')]===_0xfdd7('0x9')?_0xfdd7('0xa'):_0x403c60[_0xfdd7('0x7')];this['countbusyretry']=_0x403c60[_0xfdd7('0xb')];this[_0xfdd7('0xc')]=_0x403c60[_0xfdd7('0xc')];this[_0xfdd7('0xd')]=_0x403c60['countnoanswerretry'];this[_0xfdd7('0xe')]=_0x403c60[_0xfdd7('0xb')]+_0x403c60['countcongestionretry']+_0x403c60['countnoanswerretry']+_0x403c60[_0xfdd7('0xf')]+_0x403c60['countdropretry']+_0x403c60[_0xfdd7('0x10')]+_0x403c60[_0xfdd7('0x11')]+_0x403c60[_0xfdd7('0x12')];this['countnosuchnumberretry']=_0x403c60[_0xfdd7('0xf')];this[_0xfdd7('0x13')]=_0x403c60['countdropretry'];this['countabandonedretry']=_0x403c60[_0xfdd7('0x10')];this[_0xfdd7('0x11')]=_0x403c60[_0xfdd7('0x11')];this[_0xfdd7('0x12')]=_0x403c60[_0xfdd7('0x12')];this[_0xfdd7('0xa')]=_0x403c60[_0xfdd7('0xa')];this[_0xfdd7('0x14')]=_0x403c60[_0xfdd7('0x15')];this[_0xfdd7('0x16')]=_0x403c60['number'];this[_0xfdd7('0x17')]=_0x403c60[_0xfdd7('0x17')];this[_0xfdd7('0x18')]=_0x403c60[_0xfdd7('0x18')];this['endtime']=_0x403c60['responsetime'];this[_0xfdd7('0x19')]=getSeconds(_0x403c60[_0xfdd7('0x18')],_0x403c60[_0xfdd7('0x17')]);this[_0xfdd7('0x1a')]=0x0;this[_0xfdd7('0x1b')]=0x0;this[_0xfdd7('0x1c')]=_0x403c60[_0xfdd7('0x1c')];this[_0xfdd7('0x1d')]=_0x403c60[_0xfdd7('0x1d')];this['callbackat']=_0x403c60[_0xfdd7('0x1e')];this[_0xfdd7('0x1f')]=_0x403c60['recallme'];this['ContactId']=_0x403c60[_0xfdd7('0x20')];this['ListId']=_0x403c60[_0xfdd7('0x21')];this[_0xfdd7('0x22')]=_0x403c60['UserId'];this[_0xfdd7('0x23')]=_0x403c60[_0xfdd7('0x23')];this['CampaignId']=_0x403c60[_0xfdd7('0x24')];this[_0xfdd7('0x25')]=_0x403c60[_0xfdd7('0x25')]||'';this['originatecalleridname']=_0x403c60['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
+var _0x458e=['seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','number','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff'];(function(_0x45e80f,_0x51fe00){var _0x280287=function(_0x1d2e06){while(--_0x1d2e06){_0x45e80f['push'](_0x45e80f['shift']());}};_0x280287(++_0x51fe00);}(_0x458e,0x106));var _0xe458=function(_0x5d266b,_0x1e0f4d){_0x5d266b=_0x5d266b-0x0;var _0x27674f=_0x458e[_0x5d266b];return _0x27674f;};'use strict';var util=require(_0xe458('0x0'));var _=require('lodash');var moment=require(_0xe458('0x1'));function getSeconds(_0x252024,_0x3916f8){var _0x45afa3=moment(_0x252024)[_0xe458('0x2')](0x0);var _0x178518=moment(_0x3916f8)['milliseconds'](0x0);return _0x45afa3[_0xe458('0x3')](_0x178518,_0xe458('0x4'));}function History(_0x11c997){this['uniqueid']=_0x11c997[_0xe458('0x5')];this[_0xe458('0x6')]=_0x11c997[_0xe458('0x6')]||undefined;this[_0xe458('0x7')]=_0x11c997[_0xe458('0x7')];this[_0xe458('0x8')]=_0x11c997[_0xe458('0x7')]==='outbound'?_0xe458('0x9'):_0x11c997[_0xe458('0x7')];this[_0xe458('0xa')]=_0x11c997[_0xe458('0xa')];this['countcongestionretry']=_0x11c997[_0xe458('0xb')];this['countnoanswerretry']=_0x11c997[_0xe458('0xc')];this[_0xe458('0xd')]=_0x11c997[_0xe458('0xa')]+_0x11c997[_0xe458('0xb')]+_0x11c997[_0xe458('0xc')]+_0x11c997[_0xe458('0xe')]+_0x11c997[_0xe458('0xf')]+_0x11c997['countabandonedretry']+_0x11c997['countmachineretry']+_0x11c997['countagentrejectretry'];this[_0xe458('0xe')]=_0x11c997['countnosuchnumberretry'];this[_0xe458('0xf')]=_0x11c997[_0xe458('0xf')];this['countabandonedretry']=_0x11c997[_0xe458('0x10')];this[_0xe458('0x11')]=_0x11c997['countmachineretry'];this[_0xe458('0x12')]=_0x11c997[_0xe458('0x12')];this['queue']=_0x11c997['queue'];this[_0xe458('0x13')]=_0x11c997['name'];this[_0xe458('0x14')]=_0x11c997[_0xe458('0x15')];this['starttime']=_0x11c997[_0xe458('0x16')];this[_0xe458('0x17')]=_0x11c997[_0xe458('0x17')];this['endtime']=_0x11c997['responsetime'];this[_0xe458('0x18')]=getSeconds(_0x11c997[_0xe458('0x17')],_0x11c997[_0xe458('0x16')]);this[_0xe458('0x19')]=0x0;this[_0xe458('0x1a')]=0x0;this[_0xe458('0x1b')]=_0x11c997[_0xe458('0x1b')];this[_0xe458('0x1c')]=_0x11c997['callbackuniqueid'];this[_0xe458('0x1d')]=_0x11c997[_0xe458('0x1d')];this[_0xe458('0x1e')]=_0x11c997[_0xe458('0x1e')];this[_0xe458('0x1f')]=_0x11c997['ContactId'];this[_0xe458('0x20')]=_0x11c997[_0xe458('0x20')];this[_0xe458('0x21')]=_0x11c997[_0xe458('0x21')];this['VoiceQueueId']=_0x11c997['VoiceQueueId'];this[_0xe458('0x22')]=_0x11c997[_0xe458('0x22')];this[_0xe458('0x23')]=_0x11c997['originatecalleridnum']||'';this[_0xe458('0x24')]=_0x11c997[_0xe458('0x24')]||'';}module[_0xe458('0x25')]=History;
\ No newline at end of file
index f8ebd8c..6236826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','Interval','stringify','format','voice:queue:%s','voice_queue:save','ivr','-----\x20Stats\x20Predictive\x20---','info','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','pTalking','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Queue:\x20','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','endtime','starttime','prototype','clearZombieChannels','[uniqueid]','[actions]','undefined','isNil','Action','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','countReScheduled','resolve','[countReScheduled]\x20','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isSuccess','Success','isTrunkReachable','SIP/%s','status','reachable','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','HANGUP','HangupInAMD','AMD','buildObj','amd','[syncHangupInAMD][createHistory]','value','Machine','membername','countmachineretry','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','dialMachineRetryFrequency','[syncHangupInAMDIvr][createHistory]','MACHINE','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AGI','[syncHangupIvr][createHistory]','cause-txt','agiafterat','dialQueueProject2','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','predictiveIntervalErlangCallsDroppedCalls','Drop','callAdditionalPhoneAfterMin','voiceQueue','dialDropMaxRetry','additional','countdropretry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','swapAdditionalPhones','CALLEREXIT','dialAbandonedRetryFrequency','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','Abandoned','calleridnum','[syncAgentComplete][createHistory][11]','syncQueueMember','actionid','strategy','locked','paused','stateinterface','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','syncQueueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[booked][RR][finaly]','contactAgent-idHopper:\x20','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','indexOf','true','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:%s','launchHandleIvr','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','filter','dialPreviewRecallmeReminder','map','user:dialPreviewRecallReminder','syncCampaigns','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialAgiAfterHangupAgent','getCaller','ACTIVE','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','createdAt','updatedAt','%s%s','XMD-','toUpper','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','dialCutDigit','substring','trim','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','Error','originate\x20action\x20Error','getQueue','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countnosuchnumberretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','object','entity\x20is\x20undefine','[callProgressDetecting]','reason','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','createStateFinal','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','buildNoAnswerEventPayload','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','reason\x2020\x20agentreject','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','checkContactBlack','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','actionOriginate','scheduledat','dialRecallMeTimeout','dialRecallInQueue','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','handleIvr','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','[actionOriginateIvr]\x20','floor','dialLimitQueue','not_inuse','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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]','----\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','[busyFactor]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/setting','./action','./history','./final','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','varset','syncVarSet','queuemember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','getSettings','then','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','name','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','[ifTime][Action]','milliseconds','diff','seconds','emit','outbound','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber'];(function(_0x51f6f5,_0x10bd57){var _0x3b637f=function(_0x5d8880){while(--_0x5d8880){_0x51f6f5['push'](_0x51f6f5['shift']());}};_0x3b637f(++_0x10bd57);}(_0xe3da,0x1cd));var _0xae3d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe3da[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0xae3d('0x0'));var _=require(_0xae3d('0x1'));var uuid=require(_0xae3d('0x2'));var moment=require(_0xae3d('0x3'));var rr=require('rr');var md5=require(_0xae3d('0x4'));var Redis=require(_0xae3d('0x5'));var ut=require(_0xae3d('0x6'));var config=require(_0xae3d('0x7'));var logger=require(_0xae3d('0x8'))(_0xae3d('0x9'));var loggerBooked=require(_0xae3d('0x8'))(_0xae3d('0xa'));var loggerPredictive=require(_0xae3d('0x8'))(_0xae3d('0xb'));var loggerPredictiveCalls=require(_0xae3d('0x8'))(_0xae3d('0xc'));var loggerSyncQueueSummary=require('../../../config/logger')(_0xae3d('0xd'));var ami=require(_0xae3d('0xe'));config['redis']=_['defaults'](config[_0xae3d('0xf')],{'host':_0xae3d('0x10'),'port':0x18eb});var io=require(_0xae3d('0x11'))(new Redis(config[_0xae3d('0xf')]));var cmHopper=require(_0xae3d('0x12'));var cmHopperHistory=require(_0xae3d('0x13'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0xae3d('0x14'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0xae3d('0x15'));var Action=require(_0xae3d('0x16'));var History=require(_0xae3d('0x17'));var Final=require(_0xae3d('0x18'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0xae3d('0x19'));var Hangup=require(_0xae3d('0x1a'));var ipAgi=process[_0xae3d('0x1b')][_0xae3d('0x1c')]||_0xae3d('0x1d');var strategy={'rrmemory':_0xae3d('0x1e'),'roundrobin':_0xae3d('0x1f')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0xae3d('0x20')]=function(_0x42f4b4){this[_0xae3d('0x21')]=this[_0xae3d('0x21')]?this[_0xae3d('0x21')][_0xae3d('0x22')](_0x42f4b4):_0x42f4b4();};function Dialer(_0x585160,_0xe925fd){this[_0xae3d('0x23')]=new Sequence();this[_0xae3d('0x24')]=_0xe925fd;this['voiceQueues']=_0x585160[_0xae3d('0x25')];this[_0xae3d('0x26')]=_0x585160['campaigns'];this['agents']=_0x585160[_0xae3d('0x27')];this[_0xae3d('0x28')]=_0x585160[_0xae3d('0x28')];this[_0xae3d('0x29')]=config[_0xae3d('0x29')]||0x2;this['channels']={};this[_0xae3d('0x2a')]={};this['contactsId']={};this[_0xae3d('0x2b')]={};this[_0xae3d('0x2c')]={};this[_0xae3d('0x2d')]={};this[_0xae3d('0x2e')]={};this[_0xae3d('0x2f')]={};this[_0xae3d('0x30')]={};this[_0xae3d('0x31')]={};ami['on'](_0xae3d('0x32'),this[_0xae3d('0x33')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x35'),this[_0xae3d('0x36')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x37'),this[_0xae3d('0x38')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x39'),this[_0xae3d('0x3a')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x3b'),this['syncQueueSummary'][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x3c'),this[_0xae3d('0x3d')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x3e'),this[_0xae3d('0x3f')][_0xae3d('0x34')](this));ami['on']('newexten',this['syncNewExten'][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x40'),this[_0xae3d('0x41')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x42'),this['syncQueueMember'][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x43'),this['syncQueueStatusComplete'][_0xae3d('0x34')](this));this[_0xae3d('0x44')]();this[_0xae3d('0x45')]();RpcSetting[_0xae3d('0x46')]()[_0xae3d('0x47')](function(_0x6ef13c){previewRecallmeReminderInterval=_0x6ef13c['previewRecallmeReminderInterval'];});}function isNotNull(_0x49125f){return _0x49125f!==null&&!_['isUndefined'](_0x49125f);}function checkIsLoggedIn(_0x5cfdae,_0x90b62a){return function(){if(_0x90b62a<=0x0){_0x5cfdae[_0xae3d('0x48')]=_0xae3d('0x49');throw _0x5cfdae['name']+_0xae3d('0x4a');}};}function isActive(_0x276183){return _0x276183;}function checkIsActive(_0x10ccd4,_0x3748d2){return function(){if(!isActive(_0x3748d2)){_0x10ccd4[_0xae3d('0x48')]=_0xae3d('0x4b');throw _0x10ccd4[_0xae3d('0x4c')]+'\x20NOT\x20Active';}};}function checkInterval(_0x8827c3){return function(){if(!isNotNull(_0x8827c3['Interval'])){_0x8827c3['message']=_0xae3d('0x4d');throw _0x8827c3['name']+_0xae3d('0x4e');}if(!isNotNull(_0x8827c3['Interval']['Intervals'])){_0x8827c3[_0xae3d('0x48')]=_0xae3d('0x4d');throw _0x8827c3[_0xae3d('0x4c')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0xae3d('0x4f')](_0x8827c3['Interval'][_0xae3d('0x50')]))){_0x8827c3[_0xae3d('0x48')]=_0xae3d('0x4d');throw _0x8827c3[_0xae3d('0x4c')]+_0xae3d('0x4e');}};}function msgResponse(_0x3fc3c0,_0x33a319,_0x21d84d){return{'action':_0x3fc3c0,'response':_0x33a319,'message':_0x21d84d,'stack':_0x21d84d};}function myreject(_0x267dff){return function(_0x3a3423){return _0x267dff(msgResponse(_0xae3d('0x51'),'Error',JSON['stringify'](_0x3a3423)));};}function getSeconds(_0x3992eb,_0x4b32b9){var _0x3fa738=moment(_0x3992eb)[_0xae3d('0x52')](0x0);var _0x1db3c1=moment(_0x4b32b9)[_0xae3d('0x52')](0x0);return _0x3fa738[_0xae3d('0x53')](_0x1db3c1,_0xae3d('0x54'));}function emit(_0x238e65,_0x15350d,_0x26de54){io['to'](_0x238e65)[_0xae3d('0x55')](_0x15350d,_0x26de54);}function emitVoiceQueueSummary(_0x1de8da){if(_0x1de8da['type']===_0xae3d('0x56')){var _0x3ab6a6={'id':_0x1de8da['id'],'name':_0x1de8da[_0xae3d('0x4c')],'strategy':_0x1de8da['strategy'],'answered':_0x1de8da['answered'],'available':_0x1de8da[_0xae3d('0x57')],'loggedIn':_0x1de8da[_0xae3d('0x58')],'pTalking':_0x1de8da['pTalking'],'sumBillable':_0x1de8da[_0xae3d('0x59')],'sumDuration':_0x1de8da[_0xae3d('0x5a')],'sumHoldTime':_0x1de8da[_0xae3d('0x5b')]||0x0,'talking':_0x1de8da[_0xae3d('0x5c')],'total':_0x1de8da[_0xae3d('0x5d')],'type':_0x1de8da[_0xae3d('0x5e')],'unmanaged':_0x1de8da['unmanaged'],'abandoned':_0x1de8da[_0xae3d('0x5f')],'waiting':_0x1de8da[_0xae3d('0x60')],'loggedInDb':_0x1de8da[_0xae3d('0x61')],'dialActive':_0x1de8da[_0xae3d('0x62')],'dialMethod':_0x1de8da[_0xae3d('0x63')],'dialOriginateCallerIdName':_0x1de8da['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1de8da[_0xae3d('0x64')],'dialOriginateTimeout':_0x1de8da['dialOriginateTimeout'],'dialPrefix':_0x1de8da[_0xae3d('0x65')],'outboundAnswerAgiCallsDay':_0x1de8da[_0xae3d('0x66')],'outboundAnswerCallsDay':_0x1de8da[_0xae3d('0x67')],'outboundBlacklistCallsDay':_0x1de8da[_0xae3d('0x68')],'outboundBusyCallsDay':_0x1de8da['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x1de8da['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x1de8da['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1de8da[_0xae3d('0x69')],'outboundDropCallsDayTimeout':_0x1de8da[_0xae3d('0x6a')],'outboundNoAnswerCallsDay':_0x1de8da['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1de8da['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x1de8da['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x1de8da[_0xae3d('0x6b')],'outboundRejectCallsDay':_0x1de8da[_0xae3d('0x6c')],'outboundUnknownCallsDay':_0x1de8da[_0xae3d('0x6d')],'predictiveIntervalAnsweredCalls':_0x1de8da[_0xae3d('0x6e')],'predictiveIntervalAvgHoldtime':_0x1de8da[_0xae3d('0x6f')],'predictiveIntervalAvgTalktime':_0x1de8da[_0xae3d('0x70')],'predictiveIntervalDroppedCallsCallersExit':_0x1de8da[_0xae3d('0x71')],'predictiveIntervalDroppedCallsTimeout':_0x1de8da['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x1de8da['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x1de8da['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x1de8da[_0xae3d('0x72')],'predictiveIntervalMultiplicativeFactor':_0x1de8da['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x1de8da[_0xae3d('0x73')],'predictiveIntervalAvailable':_0x1de8da[_0xae3d('0x74')],'predictiveIntervalTotalCalls':_0x1de8da[_0xae3d('0x75')],'message':_0x1de8da[_0xae3d('0x48')],'originated':_0x1de8da[_0xae3d('0x76')],'erlangCalls':_0x1de8da[_0xae3d('0x77')],'erlangCallToSecond':_0x1de8da[_0xae3d('0x78')],'erlangAbandonmentRate':_0x1de8da[_0xae3d('0x79')],'erlangBusyFactor':_0x1de8da[_0xae3d('0x7a')],'startPredictive':_0x1de8da[_0xae3d('0x2d')],'startProgressive':_0x1de8da[_0xae3d('0x2e')]};if(_0x1de8da['Trunk']){_0x3ab6a6['Trunk']={'id':_0x1de8da['Trunk']['id'],'name':_0x1de8da[_0xae3d('0x7b')][_0xae3d('0x4c')],'active':_0x1de8da[_0xae3d('0x7b')][_0xae3d('0x7c')],'callerid':_0x1de8da['Trunk']['callerid']};}if(_0x1de8da[_0xae3d('0x7d')]){_0x3ab6a6[_0xae3d('0x7d')]={'id':_0x1de8da[_0xae3d('0x7d')]['id'],'name':_0x1de8da[_0xae3d('0x7d')]['name']};}var _0x3e7662=md5(JSON[_0xae3d('0x7e')](_0x3ab6a6));if(_0x1de8da[_0xae3d('0x4')]!==_0x3e7662){_0x1de8da[_0xae3d('0x4')]=_0x3e7662;emit(util[_0xae3d('0x7f')](_0xae3d('0x80'),_0x3ab6a6[_0xae3d('0x4c')]),_0xae3d('0x81'),_0x3ab6a6);}}}function emitCampaignSummary(_0x22f7d9){if(_0x22f7d9[_0xae3d('0x5e')]===_0xae3d('0x82')){emit(util[_0xae3d('0x7f')]('campaign:ivr:%s',_0x22f7d9['name']),'campaign:save',_0x22f7d9);}}function checkGetDataPredictive(_0xb46d7){if(isNotNull(_0xb46d7)&&!_[_0xae3d('0x4f')](_0xb46d7)){loggerPredictive['info'](_0xae3d('0x83'));loggerPredictive['info']('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xb46d7[_0xae3d('0x75')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x85'),_0xb46d7[_0xae3d('0x6e')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x86'),_0xb46d7[_0xae3d('0x87')]);loggerPredictive['info'](_0xae3d('0x88'),_0xb46d7[_0xae3d('0x71')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x89'),_0xb46d7['predictiveIntervalAvgHoldtime']);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x8a'),_0xb46d7[_0xae3d('0x70')]);loggerPredictive[_0xae3d('0x84')]('---------------------------');if(_0xb46d7['predictiveIntervalTotalCalls']>0x0){if(!_['isUndefined'](_0xb46d7[_0xae3d('0x70')])&&_0xb46d7['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive['info'](_0xae3d('0x8b'));if(!_[_0xae3d('0x8c')](_0xb46d7[_0xae3d('0x6f')])&&_0xb46d7[_0xae3d('0x6f')]>0x0){return!![];}loggerPredictive[_0xae3d('0x84')](_0xae3d('0x8d'));}else{loggerPredictive['info'](_0xae3d('0x8e'));}}else{loggerPredictive[_0xae3d('0x84')](_0xae3d('0x8f'));}return![];}function mergeDataErlangB(_0x32b524){return function(_0x285889){loggerPredictive[_0xae3d('0x84')]('---------\x20ErlangB\x20---------');loggerPredictive[_0xae3d('0x84')](_0xae3d('0x90'),_0x285889[_0xae3d('0x77')]);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x285889['erlangCallToSecond']);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x91'),_0x285889['erlangAbandonmentRate']);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x92'),_0x285889[_0xae3d('0x7a')]);loggerPredictive['info'](_0xae3d('0x91'),_0x285889[_0xae3d('0x79')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x93'));_[_0xae3d('0x94')](_0x32b524,_0x285889);};}function getDiff(_0x18973d){var _0x39dff1=moment()[_0xae3d('0x52')](0x0);var _0x4c8b7b=moment(_0x18973d)['milliseconds'](0x0);return _0x39dff1[_0xae3d('0x53')](_0x4c8b7b,_0xae3d('0x54'));}function ifInterval(_0x3d0a1a,_0x529d2d){if(_['isUndefined'](_0x529d2d)){return![];}return getDiff(_0x529d2d)<_0x3d0a1a*0x3c;}function freeVariablesPredictive(_0x138bf5){if(isNotNull(_0x138bf5)){if(!_[_0xae3d('0x8c')](_0x138bf5[_0xae3d('0x2e')])){_0x138bf5[_0xae3d('0x2e')]=undefined;loggerPredictive['info'](_0x138bf5[_0xae3d('0x4c')],_0xae3d('0x95'));}if(!_['isUndefined'](_0x138bf5[_0xae3d('0x2d')])){_0x138bf5[_0xae3d('0x2d')]=undefined;loggerPredictive[_0xae3d('0x84')](_0x138bf5[_0xae3d('0x4c')],_0xae3d('0x96'));}if(!_[_0xae3d('0x8c')](_0x138bf5[_0xae3d('0x97')])){clearInterval(_0x138bf5['handlePredictive']);_0x138bf5[_0xae3d('0x97')]=undefined;loggerPredictive[_0xae3d('0x84')](_0x138bf5[_0xae3d('0x4c')],_0xae3d('0x98'));}}}function erlangb(_0x2641d3,_0x5b8333){if(_0x5b8333===0x0){return 0x0;}var _0x18c9b0=0x1;for(var _0xf61534=0x1;_0xf61534<=_0x5b8333;_0xf61534+=0x1){_0x18c9b0=0x1+_0x18c9b0*_0xf61534/_0x2641d3;}return 0x1/_0x18c9b0;}function isVoiceQueueOutbound(_0x2dba59){return _0x2dba59===_0xae3d('0x56');}function isNotPreview(_0x1864b6){return _0x1864b6!==_0xae3d('0x24');}function isCampaignIvr(_0x53f91b){return _0x53f91b===_0xae3d('0x82');}function getCallerId(_0x18ab27,_0x51a078,_0x292b03){if(!_[_0xae3d('0x8c')](_0x292b03)&&typeof _0x292b03===_0xae3d('0x99')&&!_['isEmpty'](_0x292b03)){if(!_['isUndefined'](_0x51a078)&&typeof _0x51a078===_0xae3d('0x99')&&!_[_0xae3d('0x4f')](_0x51a078)){return util[_0xae3d('0x7f')](_0xae3d('0x9a'),_0x51a078,_0x292b03);}return util[_0xae3d('0x7f')](_0xae3d('0x9a'),_0x292b03,_0x292b03);}if(!_[_0xae3d('0x8c')](_0x18ab27)&&typeof _0x18ab27==='string'&&!_[_0xae3d('0x4f')](_0x18ab27)){return _0x18ab27;}return _0xae3d('0x9b');}function loggerCatchQueueSummary(_0x4e3161,_0x4380ae){return function(_0x518da8){freeVariablesPredictive(_0x4380ae);emitVoiceQueueSummary(_0x4380ae);emitCampaignSummary(_0x4380ae);loggerSyncQueueSummary[_0xae3d('0x9c')](_0x4e3161,util[_0xae3d('0x9d')](_0x518da8,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x26c409,_0x4709ea){return function(_0x21923a){loggerPredictive['error'](_0x4709ea[_0xae3d('0x4c')],_0x26c409);loggerPredictive[_0xae3d('0x9e')](_0x21923a[_0xae3d('0x9f')]);freeVariablesPredictive(_0x4709ea);};}function loggerCatch(_0x5f1e9c){return function(_0x546991){logger[_0xae3d('0x9e')](_0x5f1e9c,util[_0xae3d('0x9d')](_0x546991,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x53122a){return _0x53122a&&!_['isUndefined'](_0x53122a)&&_0x53122a[_0xae3d('0xa0')]>0x0;}function decremetOriginate(_0x5785d8){if(!_[_0xae3d('0x8c')](_0x5785d8)&&_0x5785d8!==null){if(typeof _0x5785d8['originated']!=='undefined'){if(_0x5785d8['originated']>0x0){_0x5785d8['originated']-=0x1;}else{logger[_0xae3d('0x9e')](_0xae3d('0xa1'));}}}else{logger['error']('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x37acdb,_0x3be0e7,_0x982c31){if(_0x3be0e7>_0x982c31){for(var _0x21f4d6=0x0;_0x21f4d6<_0x3be0e7-_0x982c31;_0x21f4d6+=0x1){decremetOriginate(_0x37acdb);}}}function loggerGetContactDialer(_0x46a9ef,_0x170cfc,_0x3971db){return function(_0x5e1744){checkContactLowerLimitOriginate(_0x170cfc,_0x3971db,0x0);logger[_0xae3d('0x9e')](_0x46a9ef,util[_0xae3d('0x9d')](_0x5e1744,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x199993){return function(_0x1ab2e7){if(isNotNull(_0x1ab2e7)&&isNotNull(_0x1ab2e7[0x0])){if(_0x1ab2e7[0x0][_0xae3d('0xa2')]>0x0){_0x199993[_0xae3d('0x48')]='RESCHEDULED_CONTACTS';logger[_0xae3d('0x84')](_0xae3d('0xa3')+_0x199993['name'],_0x1ab2e7[0x0]['contactsRescheduled'],_0xae3d('0xa4'));}else{_0x199993[_0xae3d('0x48')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xae3d('0x84')](_0xae3d('0xa5')+_0x199993[_0xae3d('0x4c')]);}}};}function notSendMessagesQueue(_0x4f1ad1){if(_0x4f1ad1[_0xae3d('0xa6')]){freeVariablesPredictive(_0x4f1ad1);if(_0x4f1ad1[_0xae3d('0x76')]===0x0&&_0x4f1ad1['talking']===0x0&&_0x4f1ad1['waiting']===0x0&&(_0x4f1ad1[_0xae3d('0xa7')]||0x0)===0x0){_0x4f1ad1[_0xae3d('0xa6')]=![];_0x4f1ad1[_0xae3d('0x57')]=0x0;_0x4f1ad1['message']=_0xae3d('0x4b');loggerSyncQueueSummary[_0xae3d('0x9c')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x4f1ad1[_0xae3d('0x4c')],_0xae3d('0xa8'));}else{_0x4f1ad1[_0xae3d('0x48')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xae3d('0x9c')](_0xae3d('0xa9'),_0x4f1ad1[_0xae3d('0x4c')],'is\x20disactive');}emitVoiceQueueSummary(_0x4f1ad1);}}function notSendMessagesCampaign(_0x3a8d20){if(_0x3a8d20['sendMessageOneNotActive']){if(_0x3a8d20[_0xae3d('0x76')]===0x0){_0x3a8d20['sendMessageOneNotActive']=![];_0x3a8d20['message']=_0xae3d('0x4b');loggerSyncQueueSummary['debug'](_0xae3d('0xaa'),_0x3a8d20[_0xae3d('0x4c')],_0xae3d('0xa8'));}else{_0x3a8d20[_0xae3d('0x48')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xae3d('0x9c')](_0xae3d('0xaa'),_0x3a8d20[_0xae3d('0x4c')],_0xae3d('0xab'));}emitCampaignSummary(_0x3a8d20);}}function createObjHistory(_0x6afe2e,_0x1dcaf3,_0x1c5f67,_0xa083d0,_0x26e422){_0x6afe2e[_0xae3d('0x48')]=_0x1c5f67;var _0x18b439=new Action(_0x6afe2e,_0x1dcaf3);var _0x331dbb=new History(_0x18b439);_0x331dbb[_0xae3d('0xac')]=_0xa083d0;_0x331dbb[_0xae3d('0xad')]=_0x26e422;_0x331dbb[_0xae3d('0xae')]=_0x18b439[_0xae3d('0xaf')];return _0x331dbb;}Dialer[_0xae3d('0xb0')]['loopClearZombieChannels']=function(){var _0x1914e0=this;setInterval(function(){_0x1914e0[_0xae3d('0xb1')](_0x1914e0[_0xae3d('0x2b')],_0xae3d('0xb2'));_0x1914e0[_0xae3d('0xb1')](_0x1914e0['actions'],_0xae3d('0xb3'));},0x32c8);};Dialer[_0xae3d('0xb0')][_0xae3d('0xb1')]=function(_0x27b969,_0x860d6e){var _0x1163b6=this;for(var _0xf9a9b6 in _0x27b969){if(typeof _0x27b969[_0xf9a9b6]!==_0xae3d('0xb4')){this['sequence'][_0xae3d('0x20')](function(){if(!_[_0xae3d('0xb5')](_0x27b969[_0xf9a9b6])){return ami[_0xae3d('0xb6')]({'action':'status','channel':_0x27b969[_0xf9a9b6][_0xae3d('0xb7')]})[_0xae3d('0xb8')](function(_0x95a92e){if(_0x95a92e['message']===_0xae3d('0xb9')){setTimeout(function(){if(_0x27b969[_0xf9a9b6]&&_0x27b969[_0xf9a9b6][_0xae3d('0x5e')]!=='ivr'){_0x1163b6[_0xae3d('0xba')](_0x1163b6['voiceQueues'][_0x27b969[_0xf9a9b6][_0xae3d('0xbb')]]);logger['error'](_0xae3d('0xbc'),_0x860d6e,_0xf9a9b6,_0x27b969[_0xf9a9b6][_0xae3d('0xbb')]);delete _0x27b969[_0xf9a9b6];}if(_0x27b969[_0xf9a9b6]&&_0x27b969[_0xf9a9b6][_0xae3d('0x5e')]===_0xae3d('0x82')){_0x1163b6[_0xae3d('0xba')](_0x1163b6['campaigns'][_0x27b969[_0xf9a9b6][_0xae3d('0xbb')]]);logger[_0xae3d('0x9e')]('[Dialer][checkChannel][ivr]',_0x860d6e,_0xf9a9b6,_0x27b969[_0xf9a9b6]['queue']);delete _0x27b969[_0xf9a9b6];}},0x2328);}});}});}}};Dialer[_0xae3d('0xb0')][_0xae3d('0xbd')]=function(_0x23eb6c){return Promise[_0xae3d('0xbe')]()['then'](cmHopper[_0xae3d('0xbd')](_0x23eb6c))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xbf')));};Dialer['prototype']['checkIsBlackList']=function(_0x3c1415){return Promise['resolve']()[_0xae3d('0x47')](cmHopperBlack['checkIsBlackList'](_0x3c1415))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc0')));};Dialer[_0xae3d('0xb0')][_0xae3d('0xc1')]=function(_0x5b1d20,_0x1f3ee8,_0x1a2106){return Promise[_0xae3d('0xbe')]()['then'](cmHopperAdditionalPhone[_0xae3d('0xc1')](_0x5b1d20,_0x1f3ee8,_0x1a2106))['catch'](loggerCatch(_0xae3d('0xc2')));};Dialer[_0xae3d('0xb0')]['swapAdditionalPhones']=function(_0x5e5b14,_0x27205c,_0x4d5fba){return Promise['resolve']()[_0xae3d('0x47')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x5e5b14,_0x27205c,_0x4d5fba))[_0xae3d('0xb8')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer[_0xae3d('0xb0')]['checkIsBlackListIvr']=function(_0x27c0ff){return Promise['resolve']()[_0xae3d('0x47')](cmHopperBlack['checkIsBlackListIvr'](_0x27c0ff))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc3')));};Dialer[_0xae3d('0xb0')][_0xae3d('0xc4')]=function(_0x125687){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopperHistory[_0xae3d('0xc5')](_0x125687))[_0xae3d('0xb8')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0xae3d('0xb0')][_0xae3d('0xc6')]=function(_0xca73b8){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper['rescheduleContact'](_0xca73b8))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc7')));};Dialer[_0xae3d('0xb0')]['unlockContact']=function(_0x242f09,_0x5c53b8,_0x52e98e){return Promise[_0xae3d('0xbe')]()['then'](cmHopper[_0xae3d('0xc8')](_0x242f09,_0x5c53b8,_0x52e98e))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc9')));};Dialer[_0xae3d('0xb0')][_0xae3d('0xca')]=function(_0x5d1e8e,_0xab43da,_0x4230eb,_0xa6621b,_0x40a137){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper['getContactDialer'](_0x5d1e8e,_0xab43da,_0x4230eb,_0xa6621b))['catch'](function(_0x50cb45){_0x40a137['temp']-=_0x4230eb;_0x40a137['temp']=_0x40a137[_0xae3d('0xcb')]>0x0?_0x40a137['temp']:0x0;loggerCatch('[getContactDialer]\x20')(_0x50cb45);});};Dialer[_0xae3d('0xb0')][_0xae3d('0xcc')]=function(_0x59f763,_0x47b90a,_0x255cc8,_0x30ccf4){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper[_0xae3d('0xcc')](_0x59f763,_0x47b90a,_0x255cc8))[_0xae3d('0xb8')](function(_0x376a4c){_0x30ccf4[_0xae3d('0xcb')]-=_0x47b90a;_0x30ccf4[_0xae3d('0xcb')]=_0x30ccf4[_0xae3d('0xcb')]>0x0?_0x30ccf4[_0xae3d('0xcb')]:0x0;loggerCatch(_0xae3d('0xcd'))(_0x376a4c);});};Dialer[_0xae3d('0xb0')]['getVoiceQueueRtPauses']=function(_0x4f59df){return Promise[_0xae3d('0xbe')]()['then'](voiceQueueRt[_0xae3d('0xce')](_0x4f59df))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xcf')));};Dialer[_0xae3d('0xb0')]['moveContactManagedDialer']=function(_0x3bdda2){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper[_0xae3d('0xd0')](_0x3bdda2))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer['prototype']['createHistory']=function(_0x5573b1){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopperHistory[_0xae3d('0xd1')](_0x5573b1))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xd2')));};Dialer['prototype'][_0xae3d('0xba')]=function(_0x4974f8){if(!_[_0xae3d('0x8c')](_0x4974f8)&&_0x4974f8!==null){if(typeof _0x4974f8[_0xae3d('0x76')]!==_0xae3d('0xb4')){if(_0x4974f8[_0xae3d('0x76')]>0x0){_0x4974f8['originated']-=0x1;}else{logger['error'](_0xae3d('0xd3'));}}}else{logger[_0xae3d('0x9e')](_0xae3d('0xd4'));}};Dialer[_0xae3d('0xb0')][_0xae3d('0xd5')]=function(_0x8fe774,_0x284e02){var _0x3ce3f2=this;return function(_0x4d902c){_0x3ce3f2[_0xae3d('0xba')](_0x284e02);logger[_0xae3d('0x9e')](_0x8fe774,util['inspect'](_0x4d902c,{'showHidden':![],'depth':null}));};};Dialer[_0xae3d('0xb0')][_0xae3d('0xd6')]=function(_0x3ba3c3,_0x412005,_0x26e845){var _0xfe304f={'state':0x19,'statedesc':'notFound'};this[_0xae3d('0xba')](_0x412005);this[_0xae3d('0xd7')](_[_0xae3d('0x94')](_0xfe304f,_[_0xae3d('0xd8')](_0x26e845,[_0xae3d('0xd9'),_0xae3d('0xda'),_0xae3d('0xdb'),_0xae3d('0xdc'),_0xae3d('0xdd')])),_0xae3d('0xde'),'[emptyContact]');logger['error'](_0x3ba3c3);};Dialer[_0xae3d('0xb0')][_0xae3d('0xdf')]=function(_0x3a54ad){return _0x3a54ad===_0xae3d('0xe0');};Dialer['prototype'][_0xae3d('0xe1')]=function(_0x5ee764){return!_['isUndefined'](_0x5ee764)&&_0x5ee764&&!_[_0xae3d('0x8c')](_0x5ee764[_0xae3d('0x4c')])&&!_[_0xae3d('0x8c')](_0x5ee764[_0xae3d('0x7c')])&&_0x5ee764['active']&&(this[_0xae3d('0x28')][util[_0xae3d('0x7f')](_0xae3d('0xe2'),_0x5ee764['name'])][_0xae3d('0xe3')]===_0xae3d('0xe4')||this[_0xae3d('0x28')][util['format']('SIP/%s',_0x5ee764[_0xae3d('0x4c')])][_0xae3d('0xe3')]==='unmonitored');};Dialer[_0xae3d('0xb0')][_0xae3d('0xd7')]=function(_0x2a6d74,_0x2945dc,_0x50f68d){this['createHistory'](_0x2a6d74)['catch'](loggerCatch(_0x2945dc));this[_0xae3d('0xd0')](_0x2a6d74)[_0xae3d('0xb8')](loggerCatch(_0x50f68d));};Dialer['prototype'][_0xae3d('0x41')]=function(_0x2d8648){var _0x35b418=this;var _0x56c143=this[_0xae3d('0x2b')][_0x2d8648[_0xae3d('0xe5')]];var _0x12c96c;if(!_[_0xae3d('0xb5')](_0x2d8648)&&!_[_0xae3d('0xb5')](_0x2d8648[_0xae3d('0xe6')])&&!_[_0xae3d('0xb5')](_0x2d8648['variable'][_0xae3d('0xe7')])&&_0x2d8648[_0xae3d('0xe8')]===_0xae3d('0xe9')&&_0x56c143){if(_0x56c143[_0xae3d('0x5e')]!==_0xae3d('0x82')&&this[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0xea')]&&_0x2d8648['value']===_0xae3d('0xeb')){delete this[_0xae3d('0x2b')][_0x2d8648['uniqueid']];this[_0xae3d('0xba')](this['voiceQueues'][_0x56c143['queue']]);this['voiceQueues'][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;this[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]]['outboundAnswerAgiCallsDay']+=0x1;_0x12c96c=new Hangup(_0x56c143,_0x2d8648);_0x12c96c['state']=0x12;_0x12c96c[_0xae3d('0xad')]=_0xae3d('0xec');_0x12c96c['membername']=_0xae3d('0xed');ami['emit']('custom:amd',ut[_0xae3d('0xee')](_0x12c96c,_0xae3d('0xef')));this[_0xae3d('0xd7')](_0x12c96c,_0xae3d('0xf0'),'[syncHangupInAMD]');}if(_0x56c143[_0xae3d('0x5e')]!==_0xae3d('0x82')&&this['voiceQueues'][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0xea')]&&_0x2d8648[_0xae3d('0xf1')]==='MACHINE'){return new Promise(function(_0x3f1592,_0x2b913c){delete _0x35b418[_0xae3d('0x2b')][_0x2d8648[_0xae3d('0xe5')]];_0x35b418['updateOriginated'](_0x35b418['voiceQueues'][_0x56c143[_0xae3d('0xbb')]]);_0x35b418['voiceQueues'][_0x56c143['queue']][_0xae3d('0x67')]+=0x1;_0x35b418[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0x66')]+=0x1;var _0x8d7031=_0x35b418[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]];var _0x195ff9=new Hangup(_0x56c143,_0x2d8648);_0x195ff9['state']=0x13;_0x195ff9[_0xae3d('0xad')]=_0xae3d('0xf2');_0x195ff9[_0xae3d('0xf3')]='AMD';_0x195ff9[_0xae3d('0xf4')]+=0x1;_0x195ff9[_0xae3d('0xf5')]+=0x1;_0x195ff9['amd']=!![];ami[_0xae3d('0x55')](_0xae3d('0xf6'),ut[_0xae3d('0xee')](_0x195ff9,_0xae3d('0xef')));_0x35b418[_0xae3d('0xd1')](_0x195ff9)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xf7')));if(_0x195ff9[_0xae3d('0xf8')]+_0x195ff9[_0xae3d('0xf9')]+_0x195ff9[_0xae3d('0xfa')]+_0x195ff9['countnosuchnumberretry']+_0x195ff9['countdropretry']+_0x195ff9[_0xae3d('0xfb')]+_0x195ff9[_0xae3d('0xf4')]+_0x195ff9[_0xae3d('0xfc')]>=_0x8d7031[_0xae3d('0xfd')]){_0x35b418[_0xae3d('0xfe')](_0x195ff9,_0x3f1592,_0x2b913c,_0xae3d('0xff'));}else{if(_0x195ff9['countmachineretry']>=_0x8d7031[_0xae3d('0x100')]){_0x35b418['createStateFinal'](_0x195ff9,_0x3f1592,_0x2b913c,_0xae3d('0x101'));}else{_0x35b418['rescheduleContact']({'active':![],'countmachineretry':_0x195ff9[_0xae3d('0xf4')],'scheduledat':moment()[_0xae3d('0x102')](_0x8d7031[_0xae3d('0x103')],'minutes')[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x195ff9['ContactId'],'ListId':_0x195ff9['ListId'],'VoiceQueueId':_0x195ff9[_0xae3d('0xdc')]||undefined,'CampaignId':_0x195ff9[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch('[rescheduleContact][Machine]'));_0x3f1592({'reschedule':0x1});}}});}if(_0x56c143[_0xae3d('0x5e')]===_0xae3d('0x82')&&this[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0xea')]&&_0x2d8648[_0xae3d('0xf1')]===_0xae3d('0xeb')){delete this['uniqueId'][_0x2d8648['uniqueid']];this['updateOriginated'](this[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]]);_0x12c96c=new Hangup(_0x56c143,_0x2d8648);_0x12c96c[_0xae3d('0xac')]=0x12;_0x12c96c['statedesc']=_0xae3d('0xec');_0x12c96c[_0xae3d('0xf3')]=_0xae3d('0xed');ami[_0xae3d('0x55')](_0xae3d('0xf6'),ut[_0xae3d('0xee')](_0x12c96c,'amd'));this[_0xae3d('0xd7')](_0x12c96c,_0xae3d('0x104'),'[syncHangupInAMDIvr]');}if(_0x56c143['type']===_0xae3d('0x82')&&this[_0xae3d('0x26')][_0x56c143['queue']]['dialAMDActive']&&_0x2d8648[_0xae3d('0xf1')]===_0xae3d('0x105')){return new Promise(function(_0xd2e6bd,_0x3d81a4){delete _0x35b418['uniqueId'][_0x2d8648['uniqueid']];_0x35b418[_0xae3d('0xba')](_0x35b418[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]]);_0x35b418['campaigns'][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;_0x35b418[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x11a4c9=_0x35b418[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]];var _0x2bb6fe=new Hangup(_0x56c143,_0x2d8648);_0x2bb6fe[_0xae3d('0xac')]=0x13;_0x2bb6fe[_0xae3d('0xad')]=_0xae3d('0xf2');_0x2bb6fe['membername']=_0xae3d('0xed');_0x2bb6fe[_0xae3d('0xf4')]+=0x1;_0x2bb6fe[_0xae3d('0xf5')]+=0x1;_0x2bb6fe[_0xae3d('0xef')]=!![];ami['emit'](_0xae3d('0xf6'),ut[_0xae3d('0xee')](_0x2bb6fe,_0xae3d('0xef')));_0x35b418[_0xae3d('0xd1')](_0x2bb6fe)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xf7')));if(_0x2bb6fe[_0xae3d('0xf8')]+_0x2bb6fe['countcongestionretry']+_0x2bb6fe[_0xae3d('0xfa')]+_0x2bb6fe['countnosuchnumberretry']+_0x2bb6fe['countdropretry']+_0x2bb6fe['countabandonedretry']+_0x2bb6fe[_0xae3d('0xf4')]+_0x2bb6fe[_0xae3d('0xfc')]>=_0x11a4c9[_0xae3d('0xfd')]){_0x35b418[_0xae3d('0xfe')](_0x2bb6fe,_0xd2e6bd,_0x3d81a4,_0xae3d('0xff'));}else{if(_0x2bb6fe[_0xae3d('0xf4')]>=_0x11a4c9['dialMachineMaxRetry']){_0x35b418['createStateFinal'](_0x2bb6fe,_0xd2e6bd,_0x3d81a4,_0xae3d('0x101'));}else{_0x35b418[_0xae3d('0xc6')]({'active':![],'countmachineretry':_0x2bb6fe[_0xae3d('0xf4')],'scheduledat':moment()['add'](_0x11a4c9[_0xae3d('0x103')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x2bb6fe[_0xae3d('0xd9')],'ListId':_0x2bb6fe[_0xae3d('0xda')],'VoiceQueueId':_0x2bb6fe[_0xae3d('0xdc')]||undefined,'CampaignId':_0x2bb6fe[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x108')));_0xd2e6bd({'reschedule':0x1});}}});}}};Dialer[_0xae3d('0xb0')][_0xae3d('0x3f')]=function(_0x1a01eb){var _0x44dfbc=this[_0xae3d('0x2b')][_0x1a01eb['uniqueid']];var _0x4e9730;if(_0x44dfbc&&_0x44dfbc['type']===_0xae3d('0x82')){delete this[_0xae3d('0x2b')][_0x1a01eb[_0xae3d('0xe5')]];this[_0xae3d('0xba')](this[_0xae3d('0x26')][_0x44dfbc[_0xae3d('0xbb')]]);this[_0xae3d('0x26')][_0x44dfbc['queue']][_0xae3d('0x109')]+=0x1;_0x4e9730=new Hangup(_0x44dfbc,_0x1a01eb);this[_0xae3d('0xd1')](_0x4e9730)[_0xae3d('0xb8')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xae3d('0xd0')](_0x4e9730)['catch'](loggerCatch(_0xae3d('0x10a')));}if(_0x44dfbc&&_0x44dfbc[_0xae3d('0x5e')]!==_0xae3d('0x82')&&isNotNull(this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x10b')])){delete this[_0xae3d('0x2b')][_0x1a01eb['uniqueid']];this['updateOriginated'](this[_0xae3d('0x25')][_0x44dfbc['queue']]);this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;this[_0xae3d('0x25')][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x66')]+=0x1;_0x4e9730=new Hangup(_0x44dfbc,_0x1a01eb);_0x4e9730['state']=0x10;_0x4e9730['statedesc']='AnswerAGI';_0x4e9730[_0xae3d('0xf3')]=_0xae3d('0x10c');this['createHistory'](_0x4e9730)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x10d')));this[_0xae3d('0xd0')](_0x4e9730)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x10a')));}if(_0x44dfbc&&_0x44dfbc['type']!==_0xae3d('0x82')&&!isNotNull(this['voiceQueues'][_0x44dfbc['queue']][_0xae3d('0x10b')])){delete this['uniqueId'][_0x1a01eb[_0xae3d('0xe5')]];this[_0xae3d('0xba')](this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]]);this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x6d')]+=0x1;_0x4e9730=new Hangup(_0x44dfbc,_0x1a01eb);_0x4e9730['state']=0xc;_0x4e9730[_0xae3d('0xad')]=_0x1a01eb[_0xae3d('0x10e')];_0x4e9730['membername']='Unknow';this[_0xae3d('0xd1')](_0x4e9730)['catch'](loggerCatch(_0xae3d('0x10d')));this[_0xae3d('0xd0')](_0x4e9730)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x10a')));}};Dialer[_0xae3d('0xb0')][_0xae3d('0x3a')]=function(_0x26180e){var _0x223697=this['uniqueId'][_0x26180e[_0xae3d('0xe5')]];if(this[_0xae3d('0x25')][_0x26180e['queue']]){if(_0x223697&&_0x223697[_0xae3d('0x5e')]!=='ivr'){delete this[_0xae3d('0x2b')][_0x26180e[_0xae3d('0xe5')]];this[_0xae3d('0x25')][_0x26180e[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;var _0x59db15=new AgentComplete(_0x223697,_0x26180e);if(_0x26180e['reason']==='agent'){_0x59db15[_0xae3d('0x10f')]=this[_0xae3d('0x25')][_0x26180e[_0xae3d('0xbb')]][_0xae3d('0x110')]&&this[_0xae3d('0x25')][_0x26180e[_0xae3d('0xbb')]]['dialAgiAfterHangupAgent']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0xae3d('0xd1')](_0x59db15)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x111')));this[_0xae3d('0xd0')](_0x59db15)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0xae3d('0xb0')][_0xae3d('0x33')]=function(_0x366ccc){if(this['voiceQueues'][_0x366ccc[_0xae3d('0xbb')]]){if(this[_0xae3d('0x2b')][_0x366ccc[_0xae3d('0xe5')]]&&this[_0xae3d('0x2b')][_0x366ccc[_0xae3d('0xe5')]]['type']!=='ivr'){this[_0xae3d('0xba')](this[_0xae3d('0x25')][_0x366ccc[_0xae3d('0xbb')]]);this[_0xae3d('0x2b')][_0x366ccc[_0xae3d('0xe5')]][_0xae3d('0x112')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));}}};Dialer[_0xae3d('0xb0')][_0xae3d('0x113')]=function(_0x24588d,_0x19bd45){this[_0xae3d('0xd1')](_0x24588d)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x111')));if(_0x19bd45==0x0){this[_0xae3d('0xd0')](_0x24588d)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x114')));}};Dialer['prototype'][_0xae3d('0x36')]=function(_0x5af592){var _0x21da31=this[_0xae3d('0x2b')][_0x5af592[_0xae3d('0xe5')]];var _0x343b57=this;var _0x5c0eae=![];var _0x9f5481;var _0x2c0ede;if(this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]]){if(_0x21da31&&_0x21da31[_0xae3d('0x5e')]!==_0xae3d('0x82')){delete this[_0xae3d('0x2b')][_0x5af592[_0xae3d('0xe5')]];this['updateOriginated'](this['voiceQueues'][_0x5af592[_0xae3d('0xbb')]]);_0x21da31[_0xae3d('0x115')]=moment()[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss');var _0x22e5e4=new QueueCallerAbandon(_0x21da31,_0x5af592);if(getSeconds(_0x21da31['droptime'],_0x21da31[_0xae3d('0x116')])>=_0x21da31['dialQueueTimeout']){this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this['voiceQueues'][_0x5af592['queue']]['outboundDropCallsDayTimeout']+=0x1;this[_0xae3d('0x25')][_0x5af592['queue']][_0xae3d('0x117')]+=0x1;_0x22e5e4[_0xae3d('0xac')]=0xa;_0x22e5e4[_0xae3d('0xad')]=_0xae3d('0x118');_0x22e5e4['dropreason']='TIMEOUT';_0x22e5e4[_0xae3d('0x10f')]=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x110')]?moment()[_0xae3d('0x7f')](_0xae3d('0x107')):undefined;_0x22e5e4['countdropretry']+=0x1;_0x22e5e4[_0xae3d('0xf5')]+=0x1;_0x9f5481=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]]['dialDropRetryFrequency'];_0x2c0ede=this[_0xae3d('0x25')][_0x5af592['queue']][_0xae3d('0x119')];_0x343b57['verifyAdditionalPhones'](_0x22e5e4,_0x22e5e4[_0xae3d('0xac')],_0x21da31[_0xae3d('0x11a')])[_0xae3d('0x47')](function(_0x3f523a){_0x5c0eae=_0x3f523a['additional']==0x1;if(_0x22e5e4['countdropretry']>=_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x11b')]){_0x343b57[_0xae3d('0x113')](_0x22e5e4,_0x3f523a[_0xae3d('0x11c')]);}else{_0x343b57['rescheduleContact']({'active':![],'countdropretry':_0x22e5e4[_0xae3d('0x11d')],'scheduledat':moment()['add'](_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x11e')],'minutes')[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x21da31['ContactId'],'ListId':_0x21da31[_0xae3d('0xda')],'VoiceQueueId':_0x21da31[_0xae3d('0xdc')]||undefined,'CampaignId':_0x21da31['CampaignId']||undefined})['catch'](loggerCatch(_0xae3d('0x11f')));var _0x4db5d9=new History(_0x22e5e4);_0x4db5d9[_0xae3d('0xac')]=0xa;_0x4db5d9['statedesc']=_0xae3d('0x118');_0x4db5d9['starttime']=moment()['format'](_0xae3d('0x107'));_0x4db5d9[_0xae3d('0xae')]=_0x4db5d9[_0xae3d('0xaf')];_0x4db5d9['calleridname']=_0x22e5e4[_0xae3d('0x120')];_0x4db5d9['calleridnum']=_0x22e5e4['calleridnum'];_0x343b57[_0xae3d('0xd1')](_0x4db5d9)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}})['then'](function(){if(_0x5c0eae)_0x343b57[_0xae3d('0x121')](_0x22e5e4,_0x9f5481,_0x2c0ede)[_0xae3d('0x47')](function(){return 0x1;});});}else{this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x71')]+=0x1;this['voiceQueues'][_0x5af592[_0xae3d('0xbb')]]['outboundDropCallsDayCallersExit']+=0x1;_0x22e5e4[_0xae3d('0xac')]=0xb;_0x22e5e4['statedesc']='Abandoned';_0x22e5e4['dropreason']=_0xae3d('0x122');_0x22e5e4[_0xae3d('0xfb')]+=0x1;_0x22e5e4[_0xae3d('0xf5')]+=0x1;_0x9f5481=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x123')];_0x2c0ede=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x119')];_0x343b57[_0xae3d('0xc1')](_0x22e5e4,_0x22e5e4[_0xae3d('0xac')],_0x21da31[_0xae3d('0x11a')])['then'](function(_0x4e0cb6){if(_0x22e5e4[_0xae3d('0xfb')]>=_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x124')]){_0x343b57[_0xae3d('0x113')](_0x22e5e4,_0x4e0cb6[_0xae3d('0x11c')]);}else{_0x343b57[_0xae3d('0xc6')]({'active':![],'countabandonedretry':_0x22e5e4[_0xae3d('0xfb')],'scheduledat':moment()[_0xae3d('0x102')](_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x123')],_0xae3d('0x106'))[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x21da31[_0xae3d('0xd9')],'ListId':_0x21da31[_0xae3d('0xda')],'VoiceQueueId':_0x21da31['VoiceQueueId']||undefined,'CampaignId':_0x21da31[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x125')));var _0x43e030=new History(_0x22e5e4);_0x43e030['state']=0xb;_0x43e030[_0xae3d('0xad')]=_0xae3d('0x126');_0x43e030[_0xae3d('0xaf')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));_0x43e030[_0xae3d('0xae')]=_0x43e030[_0xae3d('0xaf')];_0x43e030[_0xae3d('0x120')]=_0x22e5e4[_0xae3d('0x120')];_0x43e030[_0xae3d('0x127')]=_0x22e5e4[_0xae3d('0x127')];_0x343b57[_0xae3d('0xd1')](_0x43e030)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x128')));}})[_0xae3d('0x47')](function(){if(_0x5c0eae)_0x343b57[_0xae3d('0x121')](_0x22e5e4,_0x9f5481,_0x2c0ede)[_0xae3d('0x47')](function(){return 0x1;});});}}}};Dialer['prototype']['syncNewExten']=function(_0x2d8e07){if(this[_0xae3d('0x2a')][_0x2d8e07[_0xae3d('0xe5')]]){this[_0xae3d('0x2a')][_0x2d8e07['uniqueid']][_0xae3d('0xb7')]=_0x2d8e07['channel'];}if(this[_0xae3d('0x2b')][_0x2d8e07['uniqueid']]){this[_0xae3d('0x2b')][_0x2d8e07[_0xae3d('0xe5')]]['channel']=_0x2d8e07[_0xae3d('0xb7')];}};Dialer[_0xae3d('0xb0')][_0xae3d('0x129')]=function(_0x2a03c2){if(!this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]){return;}if(strategy[this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a03c2['actionid']]['queue']][_0xae3d('0x12b')]]===_0xae3d('0x1f')){if(this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]&&_[_0xae3d('0xb5')](this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0x12c')])&&_0x2a03c2[_0xae3d('0xe3')]==='1'&&_0x2a03c2[_0xae3d('0x12d')]==='0'){if(this[_0xae3d('0x27')][_0x2a03c2[_0xae3d('0x12e')]]){if(!this[_0xae3d('0x27')][_0x2a03c2[_0xae3d('0x12e')]]['locked']){this['agents'][_0x2a03c2[_0xae3d('0x12e')]][_0xae3d('0x12c')]=!![];this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0x12c')]=!![];this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]['stateinterface']=_0x2a03c2[_0xae3d('0x12e')];}}}}else if((strategy[this['voiceQueues'][this['actions'][_0x2a03c2['actionid']][_0xae3d('0xbb')]][_0xae3d('0x12b')]]||_0xae3d('0x1e'))===_0xae3d('0x1e')){if(this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]){if(this[_0xae3d('0x27')][_0x2a03c2[_0xae3d('0x12e')]]){this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]['stateinterface']=_0x2a03c2[_0xae3d('0x12e')];if(_[_0xae3d('0xb5')](this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0xbb')]])){this[_0xae3d('0x30')][this['actions'][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0xbb')]]=[];}this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a03c2['actionid']]['queue']][_0xae3d('0x12f')](_[_0xae3d('0x94')](_['pick'](this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]],[_0xae3d('0x130'),_0xae3d('0x12e')]),{'status':_0x2a03c2[_0xae3d('0xe3')],'paused':_0x2a03c2[_0xae3d('0x12d')]}));}}}};function unlockQueueStatus(_0x3a6028,_0x361d9e){setTimeout(function(){if(_['isUndefined'](_0x3a6028[_0xae3d('0x131')])){loggerBooked[_0xae3d('0x9e')](_0xae3d('0x132'),_0x361d9e);}_0x3a6028[_0xae3d('0x131')]=!![];loggerBooked['info'](_0xae3d('0x133'),_0x361d9e,JSON[_0xae3d('0x7e')](_[_0xae3d('0xd8')](_0x3a6028,['name','queueStatusComplete'])));},0x1f3);}Dialer[_0xae3d('0xb0')][_0xae3d('0x134')]=function(_0x2a3155){if(!this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]){return;}var _0x4ac798=this;var _0x18880a=_0x4ac798[_0xae3d('0x25')][_0x4ac798[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0xbb')]];if(strategy[this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']][_0xae3d('0x12b')]]===_0xae3d('0x1f')){if(this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]&&this[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0x12e')]){this['preview'][_0xae3d('0x135')](this['actions'][_0x2a3155['actionid']]['idHopper'],this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0x12e')])['catch'](function(_0x36e915){logger['error'](_0xae3d('0x136'),util[_0xae3d('0x9d')](_0x36e915,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4ac798['updateOriginated'](_0x4ac798[_0xae3d('0x25')][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);_0x4ac798['agents'][_0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0x12e')]]['locked']=![];delete _0x4ac798[_0xae3d('0x2a')][_0x2a3155['actionid']];unlockQueueStatus(_0x18880a);});}else{this[_0xae3d('0xba')](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xd9')],'ListId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdd')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a);}}else if((strategy[this[_0xae3d('0x25')][this['actions'][_0x2a3155['actionid']][_0xae3d('0xbb')]][_0xae3d('0x12b')]]||_0xae3d('0x1e'))===_0xae3d('0x1e')){var _0x16b597;if(this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]&&!_['isEmpty'](this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]])){if(this[_0xae3d('0x31')][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]){this[_0xae3d('0x31')][_0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]=this[_0xae3d('0x31')][this['actions'][_0x2a3155['actionid']][_0xae3d('0xbb')]]?this[_0xae3d('0x31')][this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]:this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0xbb')]]?this['queueBooked'][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]][_0xae3d('0x137')]||0x0:0x0;}this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']][_0xae3d('0x137')]=this[_0xae3d('0x31')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]];for(var _0x1930d1=0x0;_0x1930d1<this[_0xae3d('0x30')][this['actions'][_0x2a3155[_0xae3d('0x12a')]]['queue']][_0xae3d('0xa0')];_0x1930d1+=0x1){_0x16b597=rr(this['queueBooked'][this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0x31')][_0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]=this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0xbb')]][_0xae3d('0x137')];if(_0x16b597[_0xae3d('0xe3')]==='1'&&_0x16b597[_0xae3d('0x12d')]==='0'){break;}}if(!_[_0xae3d('0xb5')](_0x16b597)){this[_0xae3d('0x27')][_0x16b597['stateinterface']][_0xae3d('0x138')]=_[_0xae3d('0x8c')](this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')])?!![]:this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')];}loggerBooked['info'](_0xae3d('0x139'),_0x2a3155[_0xae3d('0x12a')],_0xae3d('0x13a'),JSON[_0xae3d('0x7e')](_[_0xae3d('0xd8')](this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]],[_0xae3d('0x4c'),'unlockRR'])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x16b597[_0xae3d('0x130')]));if(!_['isNil'](_0x16b597)&&_0x16b597[_0xae3d('0xe3')]==='1'&&_0x16b597[_0xae3d('0x12d')]==='0'&&this['agents'][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')]){this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]]['unlockRR']=![];this['queueBooked'][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']]=[];this['preview']['run'](_0x16b597[_0xae3d('0x130')],_0x16b597[_0xae3d('0x12e')])[_0xae3d('0xb8')](function(_0x2ba9d3){logger[_0xae3d('0x9e')](_0xae3d('0x136'),util[_0xae3d('0x9d')](_0x2ba9d3,{'showHidden':![],'depth':null}));})[_0xae3d('0x22')](function(){_0x4ac798[_0xae3d('0xba')](_0x4ac798['voiceQueues'][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']]);setTimeout(function(){_0x4ac798['agents'][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')]=!![];loggerBooked[_0xae3d('0x84')](_0xae3d('0x13b'),_0x2a3155[_0xae3d('0x12a')],'Agent:\x20',JSON[_0xae3d('0x7e')](_['pick'](_0x4ac798[_0xae3d('0x27')][_0x16b597['stateinterface']],[_0xae3d('0x4c'),_0xae3d('0x138')])),_0xae3d('0x13c'),JSON[_0xae3d('0x7e')](_0x16b597[_0xae3d('0x130')]));},0xc7);delete _0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a,_0x2a3155[_0xae3d('0x12a')]);});}else{loggerBooked[_0xae3d('0x84')]('[booked][unlock]');this['updateOriginated'](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this['actions'][_0x2a3155[_0xae3d('0x12a')]]['ContactId'],'ListId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['CampaignId']||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x13d')));delete this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a);}}else{loggerBooked[_0xae3d('0x84')](_0xae3d('0x13e'));this['updateOriginated'](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xd9')],'ListId':this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this[_0xae3d('0x2a')][_0x2a3155['actionid']]['CampaignId']||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x13f')));delete this[_0xae3d('0x2a')][_0x2a3155['actionid']];unlockQueueStatus(_0x18880a);}}else{loggerBooked['info'](_0xae3d('0x140'));this[_0xae3d('0xba')](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xd9')],'ListId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this['actions'][_0x2a3155['actionid']][_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x141')));delete this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a);}};Dialer[_0xae3d('0xb0')]['loopCampaigns']=function(){var _0x272f16=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0xae3d('0x47')](function(){setInterval(function(){_0x272f16['syncCampaigns']();},0x3e8);});};Dialer[_0xae3d('0xb0')]['checkIsTrunkReachable']=function(_0x26bf23){var _0x3a6246=this;return function(){if(!_0x3a6246['isTrunkReachable'](_0x26bf23['Trunk'])){if(!_0x3a6246['isTrunkReachable'](_0x26bf23['TrunkBackup'])){_0x26bf23['message']=_0xae3d('0x142');throw _0x26bf23[_0xae3d('0x4c')]+_0xae3d('0x143');}}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x144')]=function(_0x7c302,_0x1116fa,_0x15093a,_0x33352e){var _0x5d5911=this;return function(){var _0x36d818=!![];return _0x5d5911['ifTime'](_0x7c302,_0x1116fa,_0x15093a,_0x33352e,_0x36d818);};};Dialer['prototype']['checkIfTimeIntervals']=function(_0x8bbf91,_0x4a14f5,_0x2e0ba2,_0xfccd78){var _0x4350fd=this;return function(){var _0x44ba28=![];return _0x4350fd[_0xae3d('0x145')](_0x8bbf91[_0xae3d('0x50')],_0x4a14f5,_0x2e0ba2,_0xfccd78,_0x44ba28);};};Dialer['prototype']['ifTime']=function(_0x46b6ab,_0x3c6515,_0x106dba,_0x23c8e5,_0x49f235){var _0x5da88e=[];return new Promise(function(_0x31b2ef,_0x14964f){if(!isNotNull(_0x46b6ab)){_0x23c8e5[_0xae3d('0x48')]='INTERVAL_IS_NULL';return _0x14964f(msgResponse(_0xae3d('0x145'),_0xae3d('0x146'),_0x106dba+_0xae3d('0x147')));}if(_['isEmpty'](_0x46b6ab)){_0x23c8e5['message']=_0xae3d('0x148');return _0x14964f(msgResponse('ifTime',_0xae3d('0x146'),_0x106dba+_0xae3d('0x149')));}if(_0x3c6515&&_['isUndefined'](config[_0xae3d('0x14a')][_0x3c6515])){_0x23c8e5[_0xae3d('0x48')]=_0xae3d('0x14b');return _0x14964f(msgResponse('ifTime',_0xae3d('0x146'),_0x106dba+_0xae3d('0x14c')+_0x3c6515));}if(_[_0xae3d('0x14d')](_0x46b6ab)){for(var _0xa03352=0x0;_0xa03352<_0x46b6ab[_0xae3d('0xa0')];_0xa03352+=0x1){_0x5da88e['push'](ami[_0xae3d('0xb6')]({'action':_0xae3d('0x14e'),'command':util[_0xae3d('0x7f')](_0xae3d('0x14f'),_0x46b6ab[_0xa03352]['interval'],!_[_0xae3d('0x8c')](config[_0xae3d('0x14a')][_0x3c6515])?_0x3c6515:'')})[_0xae3d('0x47')](function(_0x48b4e1){return _0x48b4e1['content'][_0xae3d('0x150')](_0xae3d('0x151'))>=0x0;})[_0xae3d('0xb8')](myreject(_0x14964f)));}}else{_0x5da88e[_0xae3d('0x12f')](ami[_0xae3d('0xb6')]({'action':_0xae3d('0x14e'),'command':util[_0xae3d('0x7f')](_0xae3d('0x14f'),_0x46b6ab,!_[_0xae3d('0x8c')](config[_0xae3d('0x14a')][_0x3c6515])?_0x3c6515:'')})[_0xae3d('0x47')](function(_0x4e3f37){return _0x4e3f37[_0xae3d('0x152')]['indexOf'](_0xae3d('0x151'))>=0x0;})['catch'](myreject(_0x14964f)));}Promise[_0xae3d('0x153')](_0x5da88e)[_0xae3d('0x47')](function(_0x529f3d){var _0x1823a7=_[_0xae3d('0x154')](_0x529f3d);if(_0x1823a7){return _0x31b2ef(_0x1823a7);}else{_0x23c8e5['message']=_0x49f235?_0xae3d('0x155'):_0xae3d('0x156');return _0x14964f(msgResponse(_0xae3d('0x157'),'Failure','Global:\x20'+_0x49f235+'\x20'+_0x106dba+_0xae3d('0x158')+util[_0xae3d('0x9d')](_0x46b6ab,{'showHidden':![],'depth':null})+_0xae3d('0x159')+_0x3c6515));}})[_0xae3d('0xb8')](function(_0x430b33){return _0x14964f(msgResponse('ifTime','Failure',JSON[_0xae3d('0x7e')](_0x430b33)));});});};Dialer[_0xae3d('0xb0')][_0xae3d('0x15a')]=function(_0x2a82d7){var _0x33a87a=this;return function(){switch(_0x2a82d7[_0xae3d('0x63')]){case _0xae3d('0x15b'):freeVariablesPredictive(_0x2a82d7);_0x33a87a[_0xae3d('0x15c')](_0x2a82d7,0x1);break;case _0xae3d('0x15d'):freeVariablesPredictive(_0x2a82d7);_0x33a87a[_0xae3d('0x15c')](_0x2a82d7,_0x2a82d7[_0xae3d('0x15e')]);break;case _0xae3d('0xb'):_0x33a87a[_0xae3d('0xb')](_0x2a82d7);break;case'booked':freeVariablesPredictive(_0x2a82d7);_0x33a87a['handlePower'](_0x2a82d7,0x1);break;default:freeVariablesPredictive(_0x2a82d7);logger[_0xae3d('0x9e')](_0xae3d('0x15f'),_0x2a82d7['name'],_0xae3d('0x160'));}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x161')]=function(_0x3f309e){return Promise['resolve']()[_0xae3d('0x47')](cmHopper[_0xae3d('0x162')](_0x3f309e['id'],previewRecallmeReminderInterval))[_0xae3d('0x47')](function(_0x44a4b3){for(var _0x44de3c=0x0;_0x44de3c<_0x44a4b3[_0xae3d('0xa0')];_0x44de3c++){var _0x3398a6=_0x44a4b3[_0x44de3c][_0xae3d('0x163')][_0xae3d('0x4c')];if(_0x3398a6)io['to'](util[_0xae3d('0x7f')](_0xae3d('0x164'),_0x3398a6))['emit']('user:dialPreviewRecallReminder',{'hopper':_0x44a4b3[_0x44de3c]});}})['catch'](function(){});};Dialer[_0xae3d('0xb0')][_0xae3d('0x165')]=function(_0x4a9d1c){var _0x5db935=this;return function(){_0x5db935['handleIvr'](_0x4a9d1c);};};Dialer['prototype']['syncQueueSummary']=function(_0x9b4741){var _0x3ee1d1=this;if(isNotPreview(_0x9b4741[_0xae3d('0x63')])){if(isVoiceQueueOutbound(_0x9b4741[_0xae3d('0x5e')])&&isActive(_0x9b4741[_0xae3d('0x62')])){_0x9b4741['sendMessageOneNotActive']=!![];Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](checkIsLoggedIn(_0x9b4741,_0x9b4741[_0xae3d('0x58')]))[_0xae3d('0x47')](checkIsActive(_0x9b4741,_0x9b4741[_0xae3d('0x62')]))[_0xae3d('0x47')](checkInterval(_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x166')](_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x144')](_0x9b4741[_0xae3d('0x167')],_0x9b4741[_0xae3d('0x168')],_0x9b4741[_0xae3d('0x4c')],_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x169')](_0x9b4741[_0xae3d('0x7d')],_0x9b4741['dialTimezone'],_0x9b4741[_0xae3d('0x4c')],_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x15a')](_0x9b4741))[_0xae3d('0xb8')](loggerCatchQueueSummary('[syncQueueSummary]',_0x9b4741));}else{notSendMessagesQueue(_0x9b4741);}}else{freeVariablesPredictive(_0x9b4741);}};Dialer[_0xae3d('0xb0')][_0xae3d('0x3d')]=_['throttle'](function(){var _0x366555=_[_0xae3d('0x16a')](this[_0xae3d('0x25')],function(_0x336868){return _0x336868[_0xae3d('0x16b')];});var _0x5d3336=_[_0xae3d('0x16a')](this[_0xae3d('0x27')],function(_0x3b5fa9){return _0x3b5fa9['online']&&_0x3b5fa9[_0xae3d('0xe3')]===_0xae3d('0xe4');});if(_0x366555[_0xae3d('0xa0')]>0x0&&_0x5d3336[_0xae3d('0xa0')]>0x0){return Promise[_0xae3d('0xbe')]()['then'](cmHopper['handlePreviewRecallNotifications'](_[_0xae3d('0x16c')](_0x366555,'id'),previewRecallmeReminderInterval,_[_0xae3d('0x16c')](_0x5d3336,'id')))[_0xae3d('0x47')](function(_0x118709){for(var _0x53615c=0x0;_0x53615c<_0x118709[_0xae3d('0xa0')];_0x53615c++){var _0x24c5e9=_0x118709[_0x53615c][_0xae3d('0x163')][_0xae3d('0x4c')];if(_0x24c5e9)io['to'](util[_0xae3d('0x7f')](_0xae3d('0x164'),_0x24c5e9))[_0xae3d('0x55')](_0xae3d('0x16d'),{'hopper':_0x118709[_0x53615c]});}})['catch'](function(_0xc81cd2){logger[_0xae3d('0x9e')]('checkPreviewRecallReminder',_0xc81cd2);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xae3d('0xb0')][_0xae3d('0x16e')]=function(){var _0x1e3db3=this;var _0x339330;for(var _0x3eb779 in this[_0xae3d('0x26')]){if(typeof this[_0xae3d('0x26')][_0x3eb779]!==_0xae3d('0xb4')){_0x339330=this['campaigns'][_0x3eb779];if(isCampaignIvr(_0x339330[_0xae3d('0x5e')])&&isActive(_0x339330[_0xae3d('0x7c')])){_0x339330[_0xae3d('0xa6')]=!![];Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](checkIsActive(_0x339330,_0x339330[_0xae3d('0x7c')]))[_0xae3d('0x47')](checkInterval(_0x339330))[_0xae3d('0x47')](_0x1e3db3[_0xae3d('0x166')](_0x339330))['then'](_0x1e3db3['checkIfTime'](_0x339330['dialGlobalInterval'],_0x339330[_0xae3d('0x168')],_0x339330[_0xae3d('0x4c')],_0x339330))[_0xae3d('0x47')](_0x1e3db3[_0xae3d('0x169')](_0x339330[_0xae3d('0x7d')],_0x339330['dialTimezone'],_0x339330[_0xae3d('0x4c')],_0x339330))[_0xae3d('0x47')](_0x1e3db3[_0xae3d('0x165')](_0x339330))[_0xae3d('0xb8')](loggerCatchQueueSummary(_0xae3d('0x16f'),_0x339330));}else{notSendMessagesCampaign(_0x339330);}}}};function getCallerIdRandom(_0x3d33dc,_0x5171a6){var _0x79fbb1;var _0x32eeaa;var _0x1f167f;if(_0x5171a6<=0x0){_0x5171a6=0x1;}_0x79fbb1=new RegExp(_0xae3d('0x170')+_0x5171a6+'}$');_0x32eeaa=Math['pow'](0xa,_0x5171a6-0x1);_0x1f167f=Math[_0xae3d('0x171')](0xa,_0x5171a6)-0x1;return util[_0xae3d('0x7f')]('%s',_[_0xae3d('0x172')](_0x3d33dc,_0x79fbb1,_[_0xae3d('0x173')](_0x32eeaa,_0x1f167f)));}function extractCalleridName(_0x24dcf7){var _0x111531=_0x24dcf7[_0xae3d('0x174')](/"(.*?)"/);return _0x111531?_0x111531[0x1]:_0x24dcf7;}Dialer[_0xae3d('0xb0')]['actionOriginate']=function(_0x773679,_0x17518f){var _0x46cc7d=this;var _0x33f68a=uuid['v4']();this[_0xae3d('0x2a')][_0x33f68a]=new Action(_0x773679,_0x17518f,_0x33f68a);return new Promise(function(_0x1fc58e,_0x25cddd){if(_[_0xae3d('0x8c')](_0x773679)&&typeof _0x773679!=='object'){return _0x25cddd(msgResponse(_0xae3d('0x175'),'Failure',_0xae3d('0x176')));}if(_[_0xae3d('0x8c')](_0x17518f[_0xae3d('0x177')])||_0x17518f[_0xae3d('0x177')]===null){return _0x25cddd(msgResponse('originate',_0xae3d('0x146'),_0xae3d('0x178')));}var _0x3025e8={'XMD-CALLERID':_0x46cc7d['actions'][_0x33f68a]['getCaller'](),'XMD-AGI':_0x773679['dialQueueProject']?util[_0xae3d('0x7f')](_0xae3d('0x179'),ipAgi,_0x773679[_0xae3d('0x10b')]):_0xae3d('0x17a'),'XMD-AGIAFTER':_0x773679[_0xae3d('0x110')]?util['format'](_0xae3d('0x179'),ipAgi,_0x773679['dialQueueProject2']):_0xae3d('0x17a'),'XMD-QUEUE':_0x773679[_0xae3d('0x5e')]===_0xae3d('0x56')?util[_0xae3d('0x7f')](_0xae3d('0x17b'),_0x773679[_0xae3d('0x4c')],_0x773679['dialQueueOptions']||'',_0x773679[_0xae3d('0x17c')]?'c':'',_0x773679['dialQueueTimeout']||0x3):'NONE','XMD-CONTACTID':_0x17518f['ContactId'],'XMD-CDRTYPE':_0xae3d('0x9'),'CALLERID(all)':_0x46cc7d[_0xae3d('0x2a')][_0x33f68a][_0xae3d('0x17d')](),'XMD-AMD':_0x773679[_0xae3d('0xea')]?_0xae3d('0x17e'):_0xae3d('0x17a'),'XMD-DESTINATION':_0xae3d('0xe9')};if(_0x773679[_0xae3d('0xea')]){_0x3025e8['XMD-AMDINITIALSILENCE']=_0x773679['dialAMDInitialSilence']||0x9c4;_0x3025e8[_0xae3d('0x17f')]=_0x773679[_0xae3d('0x180')]||0x5dc;_0x3025e8[_0xae3d('0x181')]=_0x773679[_0xae3d('0x182')]||0x320;_0x3025e8[_0xae3d('0x183')]=_0x773679['dialAMDTotalAnalysisTime']||0x1388;_0x3025e8[_0xae3d('0x184')]=_0x773679[_0xae3d('0x185')]||0x64;_0x3025e8[_0xae3d('0x186')]=_0x773679[_0xae3d('0x187')]||0x32;_0x3025e8['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x773679[_0xae3d('0x188')]||0x3;_0x3025e8[_0xae3d('0x189')]=_0x773679['dialAMDSilenceThreshold']||0x100;_0x3025e8['XMD-AMDMAXIMUMWORDLENGTH']=_0x773679[_0xae3d('0x18a')]||0x1388;}if(_0x773679[_0xae3d('0x5e')]===_0xae3d('0x56')){_0x3025e8[_0xae3d('0x18b')]=_0x17518f['VoiceQueueId'];}else{_0x3025e8[_0xae3d('0x18c')]=_0x17518f['CampaignId'];}for(var _0x1e5cdb in _0x17518f[_0xae3d('0x18d')]){if(typeof _0x17518f[_0xae3d('0x18d')][_0x1e5cdb]!==_0xae3d('0xb4')){if(isNotNull(_0x17518f[_0xae3d('0x18d')][_0x1e5cdb])&&_0x1e5cdb!=='id'&&_0x1e5cdb!=='tags'&&_0x1e5cdb!==_0xae3d('0x18e')&&_0x1e5cdb!==_0xae3d('0x18f')){_0x3025e8[util['format'](_0xae3d('0x190'),_0xae3d('0x191'),_[_0xae3d('0x192')](_0x1e5cdb))]=_0x17518f[_0xae3d('0x18d')][_0x1e5cdb];}}}var _0x134ba1=_0x46cc7d[_0xae3d('0xe1')](_0x773679[_0xae3d('0x7b')])?getCallerId(_0x773679[_0xae3d('0x7b')][_0xae3d('0x193')],_0x773679[_0xae3d('0x194')],_0x773679[_0xae3d('0x195')]>0x0?getCallerIdRandom(_0x773679[_0xae3d('0x64')],_0x773679['dialRandomLastDigitCallerIdNumber']):_0x773679[_0xae3d('0x64')]):getCallerId(_[_0xae3d('0xb5')](_0x773679['TrunkBackup'])?_0x773679[_0xae3d('0x7b')][_0xae3d('0x193')]:_0x773679[_0xae3d('0x196')][_0xae3d('0x193')],_0x773679[_0xae3d('0x194')],_0x773679[_0xae3d('0x195')]>0x0?getCallerIdRandom(_0x773679[_0xae3d('0x64')],_0x773679[_0xae3d('0x195')]):_0x773679[_0xae3d('0x64')]);if(_0x134ba1){_0x3025e8[_0xae3d('0x197')]=_0x46cc7d[_0xae3d('0x2a')][_0x33f68a][_0xae3d('0x198')]=extractCalleridName(_0x134ba1);_0x3025e8[_0xae3d('0x199')]=_0x17518f[_0xae3d('0x177')];}_0x773679[_0xae3d('0x19a')]=_0x3025e8;return ami[_0xae3d('0xb6')]({'actionid':_0x33f68a,'action':_0xae3d('0x175'),'channel':_0x46cc7d[_0xae3d('0xe1')](_0x773679['Trunk'])?util[_0xae3d('0x7f')](_0xae3d('0x19b'),_0x773679[_0xae3d('0x7b')][_0xae3d('0x4c')],isNotNull(_0x773679['dialPrefix'])?_0x773679[_0xae3d('0x65')]['trim']()||'':'',_0x773679[_0xae3d('0x19c')]>0x0?_0x17518f[_0xae3d('0x177')][_0xae3d('0x19d')](_0x773679[_0xae3d('0x19c')]):_0x17518f[_0xae3d('0x177')]):util['format'](_0xae3d('0x19b'),_[_0xae3d('0xb5')](_0x773679[_0xae3d('0x196')])?_0x773679[_0xae3d('0x7b')][_0xae3d('0x4c')]:_0x773679['TrunkBackup'][_0xae3d('0x4c')],isNotNull(_0x773679[_0xae3d('0x65')])?_0x773679['dialPrefix'][_0xae3d('0x19e')]()||'':'',_0x773679[_0xae3d('0x19c')]>0x0?_0x17518f[_0xae3d('0x177')][_0xae3d('0x19d')](_0x773679[_0xae3d('0x19c')]):_0x17518f[_0xae3d('0x177')]),'callerid':_0x134ba1,'Exten':_0xae3d('0xe9'),'Context':_0xae3d('0x19f'),'Priority':'1','variable':_0x3025e8,'timeout':(_0x773679[_0xae3d('0x1a0')]||0x1e)*0x3e8,'async':!![],'channelid':_0x33f68a})[_0xae3d('0x47')](function(_0x2634cf){return _0x1fc58e(_0x2634cf);})[_0xae3d('0xb8')](function(_0x54bf98){_0x773679[_0xae3d('0x1a1')]+=0x1;var _0x58aeac=new History(_0x46cc7d[_0xae3d('0x2a')][_0x33f68a]);logger[_0xae3d('0x9e')](util[_0xae3d('0x7f')](_0xae3d('0x1a2'),JSON[_0xae3d('0x7e')](_0x54bf98)));_0x58aeac[_0xae3d('0xac')]=0xe;_0x58aeac[_0xae3d('0xad')]=_0xae3d('0x1a3');_0x58aeac[_0xae3d('0xaf')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));_0x58aeac[_0xae3d('0xae')]=_0x58aeac[_0xae3d('0xaf')];_0x46cc7d[_0xae3d('0xd1')](_0x58aeac)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1a4')));_0x46cc7d['moveContactManagedDialer'](_0x58aeac)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1a4')))[_0xae3d('0x22')](function(){delete _0x46cc7d['actions'][_0x33f68a];return _0x25cddd(msgResponse(_0xae3d('0x175'),_0xae3d('0x1a5'),_0xae3d('0x1a6')));});});});};Dialer[_0xae3d('0xb0')][_0xae3d('0x38')]=function(_0x29f093){var _0x5211c7=this[_0xae3d('0x2a')][_0x29f093['actionid']];if(_0x5211c7){delete this[_0xae3d('0x2a')][_0x29f093[_0xae3d('0x12a')]];_0x5211c7[_0xae3d('0x116')]=moment()[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss');var _0x55cee9=_0x5211c7[_0xae3d('0x5e')]===_0xae3d('0x82')?this[_0xae3d('0x26')][_0x5211c7[_0xae3d('0xbb')]]:this['voiceQueues'][_0x5211c7[_0xae3d('0x1a7')]()];if(!this['isSuccess'](_0x29f093['response'])){this[_0xae3d('0xba')](_0x55cee9);return this[_0xae3d('0x1a8')](_0x5211c7,_0x55cee9,_0x29f093)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1a9')));}this[_0xae3d('0x2b')][_0x29f093[_0xae3d('0xe5')]]=_0x5211c7;}};Dialer[_0xae3d('0xb0')][_0xae3d('0x1aa')]=function(_0x1b0bd0,_0x3acbc1,_0x23dbcd){var _0x3b028e=new History(_0x3acbc1);if(_0x3b028e[_0xae3d('0xf8')]+_0x3b028e['countcongestionretry']+_0x3b028e['countnoanswerretry']+_0x3b028e[_0xae3d('0x1ab')]+_0x3b028e[_0xae3d('0x11d')]+_0x3b028e[_0xae3d('0xfb')]+_0x3b028e[_0xae3d('0xf4')]+_0x3b028e[_0xae3d('0xfc')]>=_0x23dbcd['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x1b0bd0){case 0x3:if(_0x3b028e[_0xae3d('0xfa')]>=_0x23dbcd[_0xae3d('0x1ac')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x3b028e[_0xae3d('0xfa')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x1ad')],_0xae3d('0x106'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e['ListId'],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x1ae')));break;case 0x5:if(_0x3b028e[_0xae3d('0xf8')]>=_0x23dbcd[_0xae3d('0x1af')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countbusyretry':_0x3b028e[_0xae3d('0xf8')]+=0x1,'scheduledat':moment()['add'](_0x23dbcd['dialBusyRetryFrequency'],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e['ContactId'],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x1b0')));break;case 0x8:if(_0x3b028e['countcongestionretry']>=_0x23dbcd[_0xae3d('0x1b1')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countcongestionretry':_0x3b028e[_0xae3d('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x23dbcd[_0xae3d('0x1b2')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e['VoiceQueueId']||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x1b3')));break;case 0x0:if(_0x3b028e[_0xae3d('0x1ab')]>=_0x23dbcd[_0xae3d('0x1b4')]-0x1){return!![];}else{this[_0xae3d('0xc6')]({'active':![],'countnosuchnumberretry':_0x3b028e[_0xae3d('0x1ab')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x1b5')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e['ContactId'],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1b6')));}break;case 0xa:if(_0x3b028e[_0xae3d('0x11d')]>=_0x23dbcd[_0xae3d('0x11b')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countdropretry':_0x3b028e['countdropretry']+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x11e')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e['CampaignId']||undefined})['catch'](loggerCatch(_0xae3d('0x11f')));break;case 0xb:if(_0x3b028e[_0xae3d('0xfb')]>=_0x23dbcd['dialAbandonedMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x3b028e[_0xae3d('0xfb')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x123')],_0xae3d('0x106'))['format'](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e['VoiceQueueId']||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x125')));break;case 0x13:if(_0x3b028e['countmachineretry']>=_0x23dbcd[_0xae3d('0x100')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x3b028e['countmachineretry']+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x103')],'minutes')[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e['ContactId'],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e['VoiceQueueId']||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x108')));break;case 0x14:if(_0x3b028e['countagentrejectretry']>=_0x23dbcd[_0xae3d('0x1b7')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countagentrejectretry':_0x3b028e[_0xae3d('0xfc')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x1b8')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1b9')));break;default:return!![];}};Dialer[_0xae3d('0xb0')]['callProgressDetecting']=function(_0x2e992a,_0x3974bd,_0x582cbf){var _0x52b51d=this;var _0x17c3a1=new History(_0x2e992a);var _0x53fdb8=![];var _0x9d0795;var _0x4c277c;return new Promise(function(_0x4e49d1,_0x58caa8){if(_[_0xae3d('0x8c')](_0x3974bd)&&typeof _0x3974bd!==_0xae3d('0x1ba')){return _0x58caa8(msgResponse('[callProgressDetecting]',_0xae3d('0x146'),_0xae3d('0x1bb')));}if(_[_0xae3d('0x8c')](_0x582cbf)&&typeof _0x582cbf!==_0xae3d('0x1ba')){return _0x58caa8(msgResponse(_0xae3d('0x1bc'),'Failure','evt\x20is\x20undefine'));}_0x52b51d['verifyAdditionalPhones'](_0x17c3a1,_0x582cbf[_0xae3d('0x1bd')],_0x3974bd)[_0xae3d('0x47')](function(_0x3cc8f4){if(_0x3cc8f4[_0xae3d('0x11c')]==0x1)_0x53fdb8=!![];switch(_0x582cbf[_0xae3d('0x1bd')]){case'0':_0x3974bd['outboundNoSuchCallsDay']+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x0;_0x17c3a1[_0xae3d('0xad')]=_0xae3d('0x1be');_0x17c3a1[_0xae3d('0x1ab')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;ami[_0xae3d('0x55')](_0xae3d('0x1bf'),ut[_0xae3d('0xee')](_0x2e992a,_0xae3d('0x1c0')));_0x9d0795=_0x3974bd['dialNoSuchNumberRetryFrequency'];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xf7')));if(_0x52b51d[_0xae3d('0x1aa')](0x0,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0x1ab')]>=_0x3974bd[_0xae3d('0x1b4')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1c2'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1c2'));}}break;case'3':_0x3974bd[_0xae3d('0x1c3')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x3;_0x17c3a1['statedesc']=_0xae3d('0x1c4');_0x17c3a1[_0xae3d('0xfa')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;var _0xb30639=ut[_0xae3d('0x1c5')](_0x2e992a,_0x3974bd);ami[_0xae3d('0x55')]('custom:agentnoanswer',_0xb30639);_0x9d0795=_0x3974bd[_0xae3d('0x1ad')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d['createHistory'](_0x17c3a1)['catch'](loggerCatch(_0xae3d('0x1c6')));if(_0x52b51d[_0xae3d('0x1aa')](0x3,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xfa')]>=_0x3974bd[_0xae3d('0x1ac')]){_0x52b51d['createStateFinal'](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1c7'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x3974bd[_0xae3d('0x1c8')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x5;_0x17c3a1[_0xae3d('0xad')]=_0xae3d('0x1c9');_0x17c3a1[_0xae3d('0xf8')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;ami['emit'](_0xae3d('0x1ca'),ut[_0xae3d('0xee')](_0x2e992a,_0xae3d('0x1cb')));_0x9d0795=_0x3974bd[_0xae3d('0x1cc')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d['createHistory'](_0x17c3a1)['catch'](loggerCatch(_0xae3d('0x1cd')));if(_0x52b51d[_0xae3d('0x1aa')](0x5,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xf8')]>=_0x3974bd['dialBusyMaxRetry']){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1ce'));}else{_0x52b51d['stateGlobal'](_0x17c3a1,_0x4e49d1,_0x58caa8,'reason\x205\x20busy');}}break;case'8':_0x3974bd['outboundCongestionCallsDay']+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x8;_0x17c3a1[_0xae3d('0xad')]='Congestion';_0x17c3a1['countcongestionretry']+=0x1;_0x17c3a1['countglobal']+=0x1;_0x9d0795=_0x3974bd[_0xae3d('0x1b2')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];ami[_0xae3d('0x55')]('custom:agentcongestion',ut['buildObj'](_0x2e992a,_0xae3d('0x1cf')));_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)['catch'](loggerCatch(_0xae3d('0x1d0')));if(_0x52b51d['checkRetriveMax'](0x8,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1['countcongestionretry']>=_0x3974bd[_0xae3d('0x1b1')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,'reason\x208\x20congestion');}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d1'));}}break;case'11':_0x3974bd[_0xae3d('0x1d2')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0xb;_0x17c3a1['statedesc']=_0xae3d('0x126');_0x17c3a1[_0xae3d('0xfb')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;_0x9d0795=_0x3974bd[_0xae3d('0x123')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x52b51d[_0xae3d('0x1aa')](0xb,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xfb')]>=_0x3974bd[_0xae3d('0x124')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d3'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d3'));}}break;case'20':_0x3974bd['outboundRejectCallsDay']+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x14;_0x17c3a1[_0xae3d('0xad')]=_0xae3d('0x1d4');_0x17c3a1[_0xae3d('0xfc')]+=0x1;_0x17c3a1['countglobal']+=0x1;_0x9d0795=_0x3974bd[_0xae3d('0x1b8')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];ami[_0xae3d('0x55')](_0xae3d('0x1d5'),ut['buildObj'](_0x2e992a,'agentreject'));_0x52b51d['createHistory'](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x52b51d[_0xae3d('0x1aa')](0x14,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xfc')]>=_0x3974bd[_0xae3d('0x1b7')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d6'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d6'));}}break;default:_0x3974bd[_0xae3d('0x6d')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0xc;_0x17c3a1[_0xae3d('0xad')]=_0x582cbf[_0xae3d('0x1bd')];_0x9d0795=_0x3974bd[_0xae3d('0x1b8')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x52b51d[_0xae3d('0x1aa')](_0x582cbf[_0xae3d('0x1bd')],_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1['countbusyretry']+_0x17c3a1[_0xae3d('0xf9')]+_0x17c3a1['countnoanswerretry']+_0x17c3a1[_0xae3d('0x1ab')]+_0x17c3a1['countdropretry']+_0x17c3a1[_0xae3d('0xfb')]+_0x17c3a1[_0xae3d('0xf4')]+_0x17c3a1['countagentrejectretry']>=_0x3974bd[_0xae3d('0xfd')]){_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0x582cbf[_0xae3d('0x1bd')]);}else{_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0x582cbf['reason']);}}}})[_0xae3d('0x47')](function(){if(_0x53fdb8){_0x52b51d[_0xae3d('0x121')](_0x17c3a1,_0x9d0795,_0x4c277c)[_0xae3d('0x47')](function(){return _0x4e49d1(0x1);});}});});};Dialer['prototype'][_0xae3d('0xfe')]=function(_0x32abba,_0x3d7b5e,_0x2ff105,_0xc4ae24){var _0x4cd6f7=new Final(_0x32abba);_0x4cd6f7['state']=0xf;_0x4cd6f7[_0xae3d('0xad')]=_0xae3d('0x1d7');this[_0xae3d('0x1c1')](_0x4cd6f7,_0x3d7b5e,_0x2ff105,_0xc4ae24);};Dialer[_0xae3d('0xb0')][_0xae3d('0x1c1')]=function(_0x489045,_0x1110a8,_0x14b8fd,_0x57ff38){this[_0xae3d('0xd0')](_0x489045)[_0xae3d('0x47')](function(){return _0x1110a8(msgResponse(_0xae3d('0x1bc'),_0xae3d('0xe0'),_0x57ff38));})[_0xae3d('0xb8')](function(){return _0x14b8fd(msgResponse(_0xae3d('0x1d8'),_0xae3d('0x146'),_0xae3d('0x1d9')));});};Dialer[_0xae3d('0xb0')]['predictive']=function(_0x8ddfc7){var _0x437d15=_0x8ddfc7[_0xae3d('0x1da')]/0x64;var _0x210dc3=_0x8ddfc7[_0xae3d('0x6a')]/(_0x8ddfc7['outboundDropCallsDayTimeout']+_0x8ddfc7[_0xae3d('0x67')]);var _0xab28f0=Math[_0xae3d('0x1db')](_0x8ddfc7[_0xae3d('0x74')]*(_0x8ddfc7[_0xae3d('0x1dc')]/0x64));var _0x3155e2=Math[_0xae3d('0x1db')](_0x8ddfc7['predictiveIntervalAvailable']*(_0x8ddfc7[_0xae3d('0x1dd')]/0x64));var _0x47f11b=_0x8ddfc7['available']+_0x8ddfc7[_0xae3d('0x5c')];var _0x2be9f5=Math['floor'](_0x8ddfc7['erlangCalls']*_0x8ddfc7['erlangAbandonmentRate']*_0x8ddfc7[_0xae3d('0x72')]*_0x8ddfc7[_0xae3d('0x1de')]);if(_['isUndefined'](_0x8ddfc7[_0xae3d('0x2e')])){if(!_[_0xae3d('0x8c')](_0x8ddfc7['startPredictive'])){_0x8ddfc7[_0xae3d('0x2d')]=undefined;loggerPredictive['error'](_0xae3d('0x1df'),_0xae3d('0x1e0'));}if(!_['isUndefined'](_0x8ddfc7[_0xae3d('0x97')])){loggerPredictive['error'](_0xae3d('0x1df'),_0xae3d('0x1e1'));clearInterval(_0x8ddfc7[_0xae3d('0x97')]);_0x8ddfc7['handlePredictive']=undefined;}_0x8ddfc7['startProgressive']=moment()[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],'collection\x20data\x20in\x20progressive\x20at',_0x8ddfc7[_0xae3d('0x2e')]);this[_0xae3d('0x15c')](_0x8ddfc7,0x1);}else if(ifInterval(_0x8ddfc7[_0xae3d('0x1e2')],_0x8ddfc7['startProgressive'])){this[_0xae3d('0x15c')](_0x8ddfc7,0x1);loggerPredictiveCalls['info'](_0xae3d('0x1e3'),_0x8ddfc7[_0xae3d('0x2e')],_0x8ddfc7[_0xae3d('0x4c')]);_0x8ddfc7['erlangCalls']=0x0;_0x8ddfc7[_0xae3d('0x117')]=0x0;}else if(_0x437d15<_0x210dc3&&_0x8ddfc7[_0xae3d('0x1e4')]===_0xae3d('0x1e5')){freeVariablesPredictive(_0x8ddfc7);loggerPredictive['info'](_0xae3d('0x1e6'),_0xae3d('0x1e7'),_0x210dc3,_0xae3d('0x2e'),_0x8ddfc7[_0xae3d('0x4c')]);}else if(_0x2be9f5<_0x8ddfc7[_0xae3d('0x117')]&&_0x8ddfc7[_0xae3d('0x1e4')]===_0xae3d('0x1e5')){freeVariablesPredictive(_0x8ddfc7);loggerPredictive[_0xae3d('0x84')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0xae3d('0x1e8'),_0x2be9f5,_0xae3d('0x1e9'),_0x8ddfc7[_0xae3d('0x117')],_0xae3d('0x2e'),_0x8ddfc7[_0xae3d('0x4c')]);}else if(!ifInterval(_0x8ddfc7[_0xae3d('0x1e2')],_0x8ddfc7[_0xae3d('0x2e')])&&_[_0xae3d('0x8c')](_0x8ddfc7[_0xae3d('0x2d')])&&!_[_0xae3d('0x8c')](_0x8ddfc7[_0xae3d('0x2e')])){_0x8ddfc7['startPredictive']=moment()['format'](_0xae3d('0x107'));loggerPredictive[_0xae3d('0x84')](_0x8ddfc7['name'],_0xae3d('0x1ea'),_0x8ddfc7[_0xae3d('0x2d')]);this[_0xae3d('0xc4')](_0x8ddfc7[_0xae3d('0x1e2')])[_0xae3d('0x47')](this[_0xae3d('0x1eb')](_0x8ddfc7))[_0xae3d('0x47')](mergeDataErlangB(_0x8ddfc7))[_0xae3d('0x47')](this[_0xae3d('0x1ec')](_0x8ddfc7))[_0xae3d('0xb8')](loggerCatchPredictive(_0xae3d('0x1ed'),_0x8ddfc7));}else if(!ifInterval(_0x8ddfc7[_0xae3d('0x1e2')],_0x8ddfc7[_0xae3d('0x2d')])){_0x8ddfc7[_0xae3d('0x117')]=0x0;_0x8ddfc7[_0xae3d('0x2d')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],_0xae3d('0x1ee'),_0x8ddfc7[_0xae3d('0x2d')]);clearInterval(_0x8ddfc7[_0xae3d('0x97')]);_0x8ddfc7['handlePredictive']=undefined;this[_0xae3d('0xc4')](_0x8ddfc7[_0xae3d('0x1e2')])[_0xae3d('0x47')](this['getDataPredictive'](_0x8ddfc7))['then'](mergeDataErlangB(_0x8ddfc7))[_0xae3d('0x47')](this[_0xae3d('0x1ec')](_0x8ddfc7))[_0xae3d('0xb8')](loggerCatchPredictive(_0xae3d('0x1ef'),_0x8ddfc7));}else if(_0x8ddfc7[_0xae3d('0x74')]&&_0x47f11b<_0x8ddfc7['predictiveIntervalAvailable']-_0x3155e2){freeVariablesPredictive(_0x8ddfc7);loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],_0xae3d('0x1f0'),_0x47f11b,_0xae3d('0x1f1'),_0x8ddfc7[_0xae3d('0x74')],'-',_0x3155e2,'=',_0x8ddfc7[_0xae3d('0x74')]-_0x3155e2,')');}else if(_0x8ddfc7[_0xae3d('0x74')]&&_0x47f11b>_0x8ddfc7[_0xae3d('0x74')]+_0xab28f0){freeVariablesPredictive(_0x8ddfc7);loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],_0xae3d('0x1f0'),_0x47f11b,_0xae3d('0x1f2'),_0x8ddfc7[_0xae3d('0x74')],'+',_0xab28f0,'=',_0x8ddfc7[_0xae3d('0x74')]+_0xab28f0,')');}};Dialer[_0xae3d('0xb0')][_0xae3d('0x1eb')]=function(_0x3f35ae){var _0x2d30f5=this;return function(_0x1af371){return new Promise(function(_0x105b5e,_0x264a4b){_[_0xae3d('0x94')](_0x3f35ae,_0x1af371[0x0]);if(checkGetDataPredictive(_0x1af371[0x0])){var _0x4d3d79=_0x3f35ae[_0xae3d('0x74')]=_0x3f35ae[_0xae3d('0x5c')]+_0x3f35ae[_0xae3d('0x57')];var _0x4e0745=_0x3f35ae[_0xae3d('0x1e2')]*0x3c;var _0x4e2774=_0x1af371[0x0][_0xae3d('0x70')]+_0x1af371[0x0][_0xae3d('0x6f')];var _0x2b5560=(_0x1af371[0x0]['predictiveIntervalAnsweredCalls']+_0x1af371[0x0][_0xae3d('0x87')]+_0x1af371[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1af371[0x0][_0xae3d('0x75')];_0x3f35ae[_0xae3d('0x72')]=_0x2b5560>0x0?_0x2b5560:0x1;switch(_0x3f35ae['dialPredictiveOptimization']){case _0xae3d('0x1e5'):var _0x4f1f89=_0x3f35ae[_0xae3d('0x1da')]/0x64;return _0x2d30f5[_0xae3d('0x1f3')](_0x4d3d79,_0x4e0745,_0x4e2774,_0x2b5560,_0x4f1f89)[_0xae3d('0x47')](function(_0x319a93){return _0x105b5e(_0x319a93);});case _0xae3d('0x1f4'):var _0x41193b=_0x3f35ae['dialPredictiveOptimizationPercentage']/0x64;return _0x2d30f5[_0xae3d('0x1f5')](_0x4d3d79,_0x4e0745,_0x4e2774,_0x2b5560,_0x41193b)[_0xae3d('0x47')](function(_0x183b46){return _0x105b5e(_0x183b46);});default:return _0x264a4b(msgResponse('[getDataPredictive]',_0xae3d('0x146'),_0xae3d('0x1f6')));}}else{return _0x264a4b(msgResponse(_0xae3d('0x1f7'),_0xae3d('0x146'),_0xae3d('0x1f8')));}});};};Dialer[_0xae3d('0xb0')]['getDataPredictiveOld']=function(_0x320d66){var _0xf5fecd=this;return function(_0x4f0077){return new Promise(function(_0x2a5fc3,_0x24ce34){_[_0xae3d('0x94')](_0x320d66,_0x4f0077[0x0]);if(checkGetDataPredictive(_0x4f0077[0x0])){loggerPredictive[_0xae3d('0x84')](JSON[_0xae3d('0x7e')](_0x4f0077[0x0]));if(_0x320d66[_0xae3d('0x1e4')]===_0xae3d('0x1e5')){return _0xf5fecd[_0xae3d('0xce')](_0x320d66['id'])[_0xae3d('0x47')](function(_0x1a3944){var _0x4b2482=_0x320d66[_0xae3d('0x58')]-_0x1a3944[0x0]['outboundQueuePauses'];var _0x1dda65=_0x320d66[_0xae3d('0x1e2')]*0x3c;var _0xc9d350=_0x4f0077[0x0][_0xae3d('0x70')]+_0x4f0077[0x0][_0xae3d('0x6f')];var _0x2307b7=(_0x4f0077[0x0]['predictiveIntervalAnsweredCalls']+_0x4f0077[0x0][_0xae3d('0x87')]+_0x4f0077[0x0][_0xae3d('0x71')])/_0x4f0077[0x0]['predictiveIntervalTotalCalls'];var _0x4ee8e7=_0x320d66['dialPredictiveOptimizationPercentage']/0x64;_0x320d66[_0xae3d('0x73')]=_0x1a3944[0x0][_0xae3d('0x1f9')]||0x0;_0x320d66[_0xae3d('0x72')]=_0x2307b7>0x0?_0x2307b7:0x1;return _0xf5fecd['abandonmentRate'](_0x4b2482,_0x1dda65,_0xc9d350,_0x2307b7,_0x4ee8e7);})[_0xae3d('0x47')](function(_0x2fce92){return _0x2a5fc3(_0x2fce92);})[_0xae3d('0xb8')](function(_0x143131){return _0x24ce34(msgResponse(_0xae3d('0x1fa'),'Failure',JSON[_0xae3d('0x7e')](_0x143131)));});}if(_0x320d66[_0xae3d('0x1e4')]===_0xae3d('0x1f4')){return _0xf5fecd[_0xae3d('0xce')](_0x320d66['id'])[_0xae3d('0x47')](function(_0x3e973a){var _0x13080f=_0x320d66['loggedIn']-_0x3e973a[0x0][_0xae3d('0x1f9')];var _0x3de2ed=_0x320d66[_0xae3d('0x1e2')]*0x3c;var _0x197836=_0x4f0077[0x0][_0xae3d('0x70')]+_0x4f0077[0x0][_0xae3d('0x6f')];var _0x1de963=(_0x4f0077[0x0][_0xae3d('0x6e')]+_0x4f0077[0x0][_0xae3d('0x87')]+_0x4f0077[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x4f0077[0x0][_0xae3d('0x75')];var _0x3d7583=_0x320d66[_0xae3d('0x1da')]/0x64;_0x320d66[_0xae3d('0x73')]=_0x3e973a[0x0]['outboundQueuePauses']||0x0;_0x320d66[_0xae3d('0x72')]=_0x1de963>0x0?_0x1de963:0x1;return _0xf5fecd['busyFactor'](_0x13080f,_0x3de2ed,_0x197836,_0x1de963,_0x3d7583);})[_0xae3d('0x47')](function(_0x31965b){return _0x2a5fc3(_0x31965b);})[_0xae3d('0xb8')](function(_0x15e0e7){return _0x24ce34(msgResponse(_0xae3d('0x1fa'),_0xae3d('0x146'),JSON[_0xae3d('0x7e')](_0x15e0e7)));});}}else{return _0x24ce34(msgResponse('[getDataPredictive]',_0xae3d('0x146'),'check\x20failure'));}});};};Dialer[_0xae3d('0xb0')][_0xae3d('0x1ec')]=function(_0x311c7b){var _0xdbff77=this;return function(){var _0x488f69=0x0;var _0x7aa993=Math['floor'](_0x311c7b[_0xae3d('0x78')]*0x3e8);if(_0x7aa993>0x0){_0x7aa993=_0x7aa993<0x64?0x64:_0x7aa993;loggerPredictive[_0xae3d('0x84')](_0x311c7b['name'],_0xae3d('0x1fb'),_0x7aa993,_0xae3d('0x52'));_0x311c7b['handlePredictive']=setInterval(function(){_0xdbff77[_0xae3d('0x97')](_0x311c7b);loggerPredictiveCalls[_0xae3d('0x84')](_0xae3d('0x1fc'),_0x488f69+=0x1);},_0x7aa993);}else{loggerPredictive['info'](_0x311c7b[_0xae3d('0x4c')],'fail\x20to\x20scheduled\x20calls');}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x1fd')]=function(_0x965124,_0x38f855){var _0x5a26d8=this;return function(_0x561ad8){if(_['isEmpty'](_0x561ad8)){if(_['isNil'](_0x38f855[_0xae3d('0xdb')])||!_0x38f855['recallme']){if(_0x965124[_0xae3d('0x63')]===_0xae3d('0xa')){_0x965124[_0xae3d('0x131')]=_[_0xae3d('0x8c')](_0x965124[_0xae3d('0x131')])?!![]:_0x965124['queueStatusComplete'];var _0x14cabc=uuid['v4']();_0x5a26d8[_0xae3d('0x2a')][_0x14cabc]=new Action(_0x965124,_0x38f855,_0x14cabc);loggerBooked['info']('[booked][checkContactBlack]',_0x14cabc,_0xae3d('0x1fe'),JSON[_0xae3d('0x7e')](_0x965124[_0xae3d('0x131')]),_0xae3d('0x1ff'),_0x965124[_0xae3d('0x4c')]);if(_0x965124[_0xae3d('0x131')]){_0x965124[_0xae3d('0x131')]=![];_0x5a26d8[_0xae3d('0x30')][_0x5a26d8['actions'][_0x14cabc][_0xae3d('0xbb')]]=[];ami['Action']({'actionid':_0x14cabc,'action':_0xae3d('0x200'),'queue':_0x965124[_0xae3d('0x4c')]})['catch'](function(){_0x5a26d8[_0xae3d('0xba')](_0x965124);_0x5a26d8[_0xae3d('0xc6')]({'active':![],'ContactId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xd9')],'ListId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xda')],'VoiceQueueId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xdc')]||undefined,'CampaignId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc]['CampaignId']||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x201')));delete _0x5a26d8[_0xae3d('0x2a')][_0x14cabc];});}else{loggerBooked[_0xae3d('0x84')](_0xae3d('0x202'),JSON['stringify'](_0x965124[_0xae3d('0x131')]),'Queue:\x20',_0x965124['name']);_0x5a26d8[_0xae3d('0xba')](_0x965124);_0x5a26d8[_0xae3d('0xc6')]({'active':![],'ContactId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xd9')],'ListId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xda')],'VoiceQueueId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xdc')]||undefined,'CampaignId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x201')));delete _0x5a26d8[_0xae3d('0x2a')][_0x14cabc];}}else{return _0x5a26d8[_0xae3d('0x203')](_0x965124,_0x38f855);}}else{if(getDiff(_0x38f855[_0xae3d('0x204')])<_0x965124[_0xae3d('0x205')]*0x3c){if(_0x38f855[_0xae3d('0x163')]&&!_0x38f855[_0xae3d('0x163')]['voicePause']){_0x5a26d8['preview'][_0xae3d('0x135')](_0x38f855['id'])['finally'](function(){_0x5a26d8[_0xae3d('0xba')](_0x965124);});}else{_0x5a26d8[_0xae3d('0xc8')]({'active':![]},_0x38f855['id'],0x1)[_0xae3d('0x22')](function(){_0x5a26d8[_0xae3d('0xba')](_0x965124);});}}else{_0x965124[_0xae3d('0x6b')]+=0x1;_0x5a26d8['updateOriginated'](_0x965124);if(_0x965124[_0xae3d('0x206')]){_0x5a26d8[_0xae3d('0xc6')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x38f855[_0xae3d('0xd9')],'ListId':_0x38f855[_0xae3d('0xda')],'VoiceQueueId':_0x38f855['VoiceQueueId']||undefined,'CampaignId':_0x38f855[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x5a26d8[_0xae3d('0xd1')](createObjHistory(_0x965124,_0x38f855,_0xae3d('0x207'),0x17,_0xae3d('0x208')))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x209')));}else{_0x5a26d8[_0xae3d('0xd7')](createObjHistory(_0x965124,_0x38f855,_0xae3d('0x20a'),0x16,_0xae3d('0x20b')),_0xae3d('0x20c'),_0xae3d('0x20d'));}}}}else{_0x965124[_0xae3d('0x68')]+=0x1;_0x5a26d8[_0xae3d('0xd7')](createObjHistory(_0x965124,_0x38f855,_0xae3d('0x20e'),0xd,_0xae3d('0x20f')),_0xae3d('0x210'),_0xae3d('0x211'));throw _0xae3d('0x212');}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x213')]=function(_0xad62b2){var _0x486026=this;var _0x46b205=_0xad62b2[_0xae3d('0x214')]-_0xad62b2[_0xae3d('0x76')]-_0xad62b2[_0xae3d('0xcb')];emitCampaignSummary(_0xad62b2);if(_0x46b205>0x0){if(_0x46b205>this[_0xae3d('0x29')]){_0x46b205=this[_0xae3d('0x29')];}_0xad62b2[_0xae3d('0xcb')]+=_0x46b205;this[_0xae3d('0xcc')](_0xad62b2['id'],_0x46b205,_0xad62b2[_0xae3d('0x215')],_0xad62b2)[_0xae3d('0x47')](function(_0x14cfae){_0xad62b2[_0xae3d('0xcb')]-=_0x46b205;_0xad62b2[_0xae3d('0xcb')]=_0xad62b2[_0xae3d('0xcb')]>0x0?_0xad62b2[_0xae3d('0xcb')]:0x0;if(!checkContactEmpty(_0x14cfae)){_0xad62b2[_0xae3d('0x48')]=_0xae3d('0x216');logger[_0xae3d('0x84')]('[getContactCampaign2][Empty]'+_0xad62b2[_0xae3d('0x4c')]);}else{_0xad62b2[_0xae3d('0x76')]+=_0x14cfae['length'];_0xad62b2['message']=_0xae3d('0x217');for(var _0x9612de=0x0;_0x9612de<_0x14cfae[_0xae3d('0xa0')];_0x9612de+=0x1){_0xad62b2[_0xae3d('0x218')]+=0x1;if(_[_0xae3d('0xb5')](_0x14cfae[_0x9612de])||_[_0xae3d('0xb5')](_0x14cfae[_0x9612de]['Contact'])||_[_0xae3d('0xb5')](_0x14cfae[_0x9612de][_0xae3d('0x177')])){_0x486026[_0xae3d('0xd6')](_0xae3d('0x219'),_0xad62b2,_0x14cfae[_0x9612de]);}else{_0x486026[_0xae3d('0x21a')](_[_0xae3d('0xd8')](_0x14cfae[_0x9612de],[_0xae3d('0xdd'),'phone']))[_0xae3d('0x47')](_0x486026['checkContactBlack'](_0xad62b2,_0x14cfae[_0x9612de]))[_0xae3d('0xb8')](_0x486026[_0xae3d('0xd5')](_0xae3d('0x21b'),_0xad62b2));}}}})['catch'](loggerGetContactDialer('[getContactCampaign2]',_0xad62b2,_0x46b205));}};Dialer[_0xae3d('0xb0')][_0xae3d('0x15c')]=function(_0x386f0c,_0x5c2239){var _0x45e9fa=this;var _0x462307=[];var _0x62da87=_0x5c2239>=0x1?_0x5c2239:0x1;if(_0x386f0c[_0xae3d('0x63')]===_0xae3d('0xa')){_0x62da87=0x1;}var _0x2128a6=Math[_0xae3d('0x21c')](_0x386f0c['available']*_0x62da87)-_0x386f0c[_0xae3d('0x76')]-_0x386f0c[_0xae3d('0xcb')];emitVoiceQueueSummary(_0x386f0c);if(_0x386f0c[_0xae3d('0x21d')]>0x0){var _0x14daf7=_0x386f0c[_0xae3d('0x21d')]-_0x386f0c[_0xae3d('0x76')]-_0x386f0c['talking']-_0x386f0c['temp']-_0x386f0c[_0xae3d('0xa7')];if(_0x2128a6>_0x14daf7){_0x2128a6=_0x14daf7;}}if(_0x2128a6>0x0){if(_0x386f0c['dialMethod']===_0xae3d('0xa')){_0x2128a6=0x1;}if(_0x2128a6>this[_0xae3d('0x29')]){_0x2128a6=this[_0xae3d('0x29')];}_0x386f0c['temp']+=_0x2128a6;for(var _0x1300a9 in this[_0xae3d('0x27')]){if(typeof this[_0xae3d('0x27')][_0x1300a9]!==_0xae3d('0xb4')){if(this[_0xae3d('0x27')][_0x1300a9][_0xae3d('0xac')]===_0xae3d('0x21e')&&this[_0xae3d('0x27')][_0x1300a9][_0xae3d('0xe3')]===_0xae3d('0xe4')){_0x462307[_0xae3d('0x12f')](this[_0xae3d('0x27')][_0x1300a9]['id']);}}}this['getContactDialer'](_0x386f0c['id'],_0x462307,_0x2128a6,_0x386f0c[_0xae3d('0x215')],_0x386f0c)['then'](function(_0x4014a2){_0x386f0c[_0xae3d('0xcb')]-=_0x2128a6;_0x386f0c[_0xae3d('0xcb')]=_0x386f0c[_0xae3d('0xcb')]>0x0?_0x386f0c[_0xae3d('0xcb')]:0x0;if(!checkContactEmpty(_0x4014a2)){_0x45e9fa['countReScheduled'](_0x386f0c)['then'](sendMessageReschedule(_0x386f0c))['catch'](loggerCatch(_0xae3d('0xbf')));}else{_0x386f0c[_0xae3d('0x76')]+=_0x4014a2[_0xae3d('0xa0')];_0x386f0c[_0xae3d('0x48')]=_0x386f0c[_0xae3d('0x63')]===_0xae3d('0xa')?'ACTIVE':_0xae3d('0x217');for(var _0x177a0e=0x0;_0x177a0e<_0x4014a2[_0xae3d('0xa0')];_0x177a0e+=0x1){if(_[_0xae3d('0xb5')](_0x4014a2[_0x177a0e])||_[_0xae3d('0xb5')](_0x4014a2[_0x177a0e][_0xae3d('0x18d')])||_[_0xae3d('0xb5')](_0x4014a2[_0x177a0e][_0xae3d('0x177')])){_0x45e9fa[_0xae3d('0xd6')](_0xae3d('0x219'),_0x386f0c,_0x4014a2[_0x177a0e]);}else{_0x45e9fa[_0xae3d('0x21f')](_['pick'](_0x4014a2[_0x177a0e],[_0xae3d('0xdc'),_0xae3d('0x177')]))[_0xae3d('0x47')](_0x45e9fa[_0xae3d('0x1fd')](_0x386f0c,_0x4014a2[_0x177a0e]))[_0xae3d('0xb8')](_0x45e9fa[_0xae3d('0xd5')](_0xae3d('0x219'),_0x386f0c));}}}})['catch'](loggerGetContactDialer(_0xae3d('0x220'),_0x386f0c,_0x2128a6));}};Dialer[_0xae3d('0xb0')]['handlePredictive']=function(_0x5a3fca){if(_0x5a3fca[_0xae3d('0x21d')]>0x0){var _0x5323bc=_0x5a3fca[_0xae3d('0x21d')]-_0x5a3fca[_0xae3d('0x76')]-_0x5a3fca[_0xae3d('0x5c')];if(_0x5323bc>0x0){this[_0xae3d('0x221')](_0x5a3fca);}else{loggerPredictiveCalls[_0xae3d('0x84')](_0xae3d('0x222'));}}else{this[_0xae3d('0x221')](_0x5a3fca);}};Dialer[_0xae3d('0xb0')][_0xae3d('0x221')]=function(_0x5ce55d){var _0x498b73=this;var _0x29f119=[];_0x5ce55d[_0xae3d('0x76')]+=0x1;for(var _0x30e551 in this['agents']){if(typeof this[_0xae3d('0x27')][_0x30e551]!==_0xae3d('0xb4')){if(this['agents'][_0x30e551][_0xae3d('0xac')]===_0xae3d('0x21e')&&this[_0xae3d('0x27')][_0x30e551][_0xae3d('0xe3')]===_0xae3d('0xe4')){_0x29f119[_0xae3d('0x12f')](this['agents'][_0x30e551]['id']);}}}this[_0xae3d('0xca')](_0x5ce55d['id'],_0x29f119,0x1,_0x5ce55d[_0xae3d('0x215')],_0x5ce55d)[_0xae3d('0x47')](function(_0x6ac50e){if(!checkContactEmpty(_0x6ac50e)){checkContactLowerLimitOriginate(_0x5ce55d,0x1,0x0);_0x498b73['countReScheduled'](_0x5ce55d)[_0xae3d('0x47')](sendMessageReschedule(_0x5ce55d))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x5ce55d[_0xae3d('0x48')]=_0xae3d('0x217');if(_['isNil'](_0x6ac50e[0x0])||_[_0xae3d('0xb5')](_0x6ac50e[0x0]['Contact'])||_[_0xae3d('0xb5')](_0x6ac50e[0x0][_0xae3d('0x177')])){_0x498b73[_0xae3d('0xd6')]('[actionOriginate]\x20',_0x5ce55d,_0x6ac50e[0x0]);}else{_0x498b73[_0xae3d('0x21f')](_[_0xae3d('0xd8')](_0x6ac50e[0x0],[_0xae3d('0xdc'),'phone']))['then'](_0x498b73[_0xae3d('0x1fd')](_0x5ce55d,_0x6ac50e[0x0]))[_0xae3d('0xb8')](_0x498b73[_0xae3d('0xd5')](_0xae3d('0x223'),_0x5ce55d));}}})[_0xae3d('0xb8')](loggerGetContactDialer(_0xae3d('0x224'),_0x5ce55d,0x1));emitVoiceQueueSummary(_0x5ce55d);};Dialer[_0xae3d('0xb0')][_0xae3d('0x1f3')]=function(_0x386006,_0x29af88,_0x3ebcbb,_0x3a12fc,_0x1c98f4,_0x384477){loggerPredictive['info'](_0xae3d('0x225'));loggerPredictive[_0xae3d('0x84')](_0xae3d('0x226'),_0x386006);loggerPredictive[_0xae3d('0x84')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29af88);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x227'),_0x3ebcbb);loggerPredictive[_0xae3d('0x84')]('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',_0x3a12fc);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x228'),_0x1c98f4);loggerPredictive['info'](_0xae3d('0x93'));return new Promise(function(_0x46b4c6,_0x4f8669){if(_0x386006<=0x0||isNaN(_0x386006)){return _0x4f8669(msgResponse('[abandonmentRate]',_0xae3d('0x1a5'),'m\x20=\x20'+_0x386006));}if(_0x3ebcbb<=0x0||isNaN(_0x3ebcbb)){return _0x4f8669(msgResponse('[abandonmentRate]',_0xae3d('0x1a5'),'Ts\x20=\x20'+_0x3ebcbb));}if(_0x3a12fc<=0x0||isNaN(_0x3a12fc)){return _0x4f8669(msgResponse(_0xae3d('0x229'),_0xae3d('0x1a5'),'p\x20=\x20'+_0x3a12fc));}if(_0x29af88<=0x0||isNaN(_0x29af88)){return _0x4f8669(msgResponse('[abandonmentRate]',_0xae3d('0x1a5'),'interval\x20=\x20'+_0x29af88));}if(_0x1c98f4<=0x0||isNaN(_0x1c98f4)){return _0x4f8669(msgResponse(_0xae3d('0x229'),_0xae3d('0x1a5'),'Amax\x20=\x20'+_0x1c98f4));}_0x384477=_0x384477||0x0;var _0x410743=0x1/_0x3ebcbb;var _0x76d9ae=0x0;var _0x322e29=0x0;var _0x50f9f1=0x0;var _0x2d65de=0x0;for(var _0x12d20b=0x0;_0x50f9f1<_0x1c98f4;_0x12d20b+=0x1){_0x322e29=_0x12d20b/_0x29af88;_0x76d9ae=(_0x3a12fc*_0x322e29+_0x384477)/_0x410743;_0x50f9f1=erlangb(_0x76d9ae,_0x386006);_0x2d65de=_0x76d9ae/_0x386006*(0x1-erlangb(_0x76d9ae,_0x386006));}return _0x46b4c6({'erlangCalls':_0x12d20b,'erlangCallToSecond':_0x29af88/_0x12d20b,'erlangAbandonmentRate':_0x50f9f1,'erlangBusyFactor':_0x2d65de});});};Dialer[_0xae3d('0xb0')]['busyFactor']=function(_0x345cec,_0x5857a9,_0x36ab54,_0x240137,_0x29c59a,_0x392397){loggerPredictive[_0xae3d('0x84')](_0xae3d('0x22a'));loggerPredictive[_0xae3d('0x84')](_0xae3d('0x226'),_0x345cec);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5857a9);loggerPredictive[_0xae3d('0x84')]('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',_0x36ab54);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x22b'),_0x240137);loggerPredictive[_0xae3d('0x84')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29c59a);loggerPredictive[_0xae3d('0x84')]('---------------------------');return new Promise(function(_0x44c1c2,_0x52b04a){if(_0x345cec<=0x0||isNaN(_0x345cec)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),_0xae3d('0x22d')+_0x345cec));}if(_0x36ab54<=0x0||isNaN(_0x36ab54)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),_0xae3d('0x22e')+_0x36ab54));}if(_0x240137<=0x0||isNaN(_0x240137)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),'p\x20=\x20'+_0x240137));}if(_0x5857a9<=0x0||isNaN(_0x5857a9)){return _0x52b04a(msgResponse('[busyFactor]','Error',_0xae3d('0x22f')+_0x5857a9));}if(_0x29c59a<=0x0||isNaN(_0x29c59a)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),_0xae3d('0x230')+_0x29c59a));}_0x392397=_0x392397||0x0;var _0x56236e=0x1/_0x36ab54;var _0x28f694=0x0;var _0x4faf13=0x0;var _0x4dea3b=0x0;var _0x3e8262=0x0;for(var _0x2dc7ee=0x0;_0x3e8262<_0x29c59a;_0x2dc7ee+=0x1){_0x4faf13=_0x2dc7ee/_0x5857a9;_0x28f694=(_0x240137*_0x4faf13+_0x392397)/_0x56236e;_0x4dea3b=erlangb(_0x28f694,_0x345cec);_0x3e8262=_0x28f694/_0x345cec*(0x1-erlangb(_0x28f694,_0x345cec));}return _0x44c1c2({'erlangCalls':_0x2dc7ee,'erlangCallToSecond':_0x5857a9/_0x2dc7ee,'erlangAbandonmentRate':_0x4dea3b,'erlangBusyFactor':_0x3e8262});});};module[_0xae3d('0x231')]=Dialer;
\ No newline at end of file
+var _0xa26c=['message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','name','\x20NOT\x20Active','\x20INTERVAL_IS_NULL','Interval','Intervals','INTERVAL_IS_NULL','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','strategy','answered','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','ivr','campaign:ivr:%s','campaign:save','isEmpty','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','predictiveIntervalAvgTalktime','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','merge','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','[getContactDialer2][ReScheduled]','sendMessageOneNotActive','pTalking','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Queue:\x20','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','endtime','starttime','prototype','clearZombieChannels','[uniqueid]','sequence','isNil','Action','status','channel','catch','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','[countReScheduled]\x20','checkIsBlackList','swapAdditionalPhones','[swapAdditionalPhone]\x20','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','notFound','saveInDb','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isSuccess','Success','isTrunkReachable','SIP/%s','reachable','trunks','unmonitored','syncVarSet','uniqueid','variable','xcally-motion-dialer','dialAMDActive','value','HANGUP','HangupInAMD','membername','AMD','custom:amd','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','statedesc','countglobal','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','dialGlobalMaxRetry','reason19\x20machine....','createStateFinal','add','dialMachineRetryFrequency','YYYY-MM-DD\x20HH:mm:ss','ContactId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','Machine','countdropretry','countabandonedretry','countagentrejectretry','dialMachineMaxRetry','reason\x2019\x20machine....','minutes','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr]','cause-txt','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','Drop','dropreason','TIMEOUT','dialQueueProject2','dialDropRetryFrequency','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','additional','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','rrmemory','pick','idHopper','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','queueStatusComplete','syncQueueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','\x20Intervals\x20is\x20null\x20','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','isArray','push','command','iftime\x20%s,%s','true','content','indexOf','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','handlePreviewRecallNotifications','user:%s','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','dialTimezone','throttle','filter','online','map','Agent','checkPreviewRecallReminder','checkIsTrunkReachable','dialGlobalInterval','\x5cw{0,','pow','replace','actionOriginate','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','SIP/%s/%s%s','trim','substring','dialCutDigit','[originateError]:\x20%s','OriginateError','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','nosuchnumber','reason\x200\x20no\x20such\x20number....','stateGlobal','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','Busy','custom:agentbusy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','dialAgentRejectRetryFrequency','custom:agentreject','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','outboundDropCallsDayTimeout','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','available','floor','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','predictiveIntervalErlangCallsDroppedCalls','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimizationPercentage','abandonmentRate','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','loggerHandler','[actionOriginateIvr]\x20','dialLimitQueue','not_inuse','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','Umin\x20=\x20','exports','lodash','uuid','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/setting','./action','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','roundrobin','enqueue','tail','finally','preview','voiceQueues','campaigns','agents','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','queueBooked','queueBookedRR','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','syncHangup','newexten','syncNewExten','varset','syncQueueMember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','isUndefined'];(function(_0x166ad6,_0x27b368){var _0x6f2a2c=function(_0x485936){while(--_0x485936){_0x166ad6['push'](_0x166ad6['shift']());}};_0x6f2a2c(++_0x27b368);}(_0xa26c,0x1e1));var _0xca26=function(_0x18b1a4,_0x426396){_0x18b1a4=_0x18b1a4-0x0;var _0x207792=_0xa26c[_0x18b1a4];return _0x207792;};'use strict';var util=require('util');var _=require(_0xca26('0x0'));var uuid=require(_0xca26('0x1'));var moment=require('moment');var rr=require('rr');var md5=require(_0xca26('0x2'));var Redis=require(_0xca26('0x3'));var ut=require(_0xca26('0x4'));var config=require(_0xca26('0x5'));var logger=require(_0xca26('0x6'))(_0xca26('0x7'));var loggerBooked=require(_0xca26('0x6'))(_0xca26('0x8'));var loggerPredictive=require(_0xca26('0x6'))(_0xca26('0x9'));var loggerPredictiveCalls=require(_0xca26('0x6'))(_0xca26('0xa'));var loggerSyncQueueSummary=require('../../../config/logger')(_0xca26('0xb'));var ami=require(_0xca26('0xc'));config[_0xca26('0xd')]=_[_0xca26('0xe')](config[_0xca26('0xd')],{'host':_0xca26('0xf'),'port':0x18eb});var io=require(_0xca26('0x10'))(new Redis(config[_0xca26('0xd')]));var cmHopper=require(_0xca26('0x11'));var cmHopperHistory=require(_0xca26('0x12'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0xca26('0x13'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0xca26('0x14'));var Action=require(_0xca26('0x15'));var History=require('./history');var Final=require(_0xca26('0x16'));var AgentComplete=require(_0xca26('0x17'));var QueueCallerAbandon=require(_0xca26('0x18'));var Hangup=require(_0xca26('0x19'));var ipAgi=process[_0xca26('0x1a')][_0xca26('0x1b')]||_0xca26('0x1c');var strategy={'rrmemory':'rrmemory','roundrobin':_0xca26('0x1d')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0xca26('0x1e')]=function(_0x1ef2c1){this[_0xca26('0x1f')]=this[_0xca26('0x1f')]?this[_0xca26('0x1f')][_0xca26('0x20')](_0x1ef2c1):_0x1ef2c1();};function Dialer(_0x5bb706,_0x5b1524){this['sequence']=new Sequence();this[_0xca26('0x21')]=_0x5b1524;this[_0xca26('0x22')]=_0x5bb706[_0xca26('0x22')];this[_0xca26('0x23')]=_0x5bb706[_0xca26('0x23')];this[_0xca26('0x24')]=_0x5bb706[_0xca26('0x24')];this['trunks']=_0x5bb706['trunks'];this[_0xca26('0x25')]=config[_0xca26('0x25')]||0x2;this[_0xca26('0x26')]={};this[_0xca26('0x27')]={};this[_0xca26('0x28')]={};this[_0xca26('0x29')]={};this[_0xca26('0x2a')]={};this[_0xca26('0x2b')]={};this[_0xca26('0x2c')]={};this['ivrOriginated']={};this[_0xca26('0x2d')]={};this[_0xca26('0x2e')]={};ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0xca26('0x2f'),this[_0xca26('0x30')][_0xca26('0x31')](this));ami['on']('originateresponse',this[_0xca26('0x32')]['bind'](this));ami['on']('agentcomplete',this[_0xca26('0x33')][_0xca26('0x31')](this));ami['on'](_0xca26('0x34'),this[_0xca26('0xb')][_0xca26('0x31')](this));ami['on'](_0xca26('0x35'),this[_0xca26('0x36')][_0xca26('0x31')](this));ami['on']('hangup',this[_0xca26('0x37')][_0xca26('0x31')](this));ami['on'](_0xca26('0x38'),this[_0xca26('0x39')]['bind'](this));ami['on'](_0xca26('0x3a'),this['syncVarSet'][_0xca26('0x31')](this));ami['on']('queuemember',this[_0xca26('0x3b')][_0xca26('0x31')](this));ami['on'](_0xca26('0x3c'),this['syncQueueStatusComplete']['bind'](this));this[_0xca26('0x3d')]();this[_0xca26('0x3e')]();RpcSetting[_0xca26('0x3f')]()[_0xca26('0x40')](function(_0x5bf05f){previewRecallmeReminderInterval=_0x5bf05f[_0xca26('0x41')];});}function isNotNull(_0x3d591b){return _0x3d591b!==null&&!_[_0xca26('0x42')](_0x3d591b);}function checkIsLoggedIn(_0x4d7b57,_0x5b132c){return function(){if(_0x5b132c<=0x0){_0x4d7b57[_0xca26('0x43')]=_0xca26('0x44');throw _0x4d7b57['name']+_0xca26('0x45');}};}function isActive(_0x1ef083){return _0x1ef083;}function checkIsActive(_0x1af108,_0x4b67e3){return function(){if(!isActive(_0x4b67e3)){_0x1af108[_0xca26('0x43')]=_0xca26('0x46');throw _0x1af108[_0xca26('0x47')]+_0xca26('0x48');}};}function checkInterval(_0x56377e){return function(){if(!isNotNull(_0x56377e['Interval'])){_0x56377e['message']='INTERVAL_IS_NULL';throw _0x56377e[_0xca26('0x47')]+_0xca26('0x49');}if(!isNotNull(_0x56377e[_0xca26('0x4a')][_0xca26('0x4b')])){_0x56377e[_0xca26('0x43')]=_0xca26('0x4c');throw _0x56377e['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_['isEmpty'](_0x56377e['Interval'][_0xca26('0x4b')]))){_0x56377e['message']=_0xca26('0x4c');throw _0x56377e[_0xca26('0x47')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x1d8efa,_0x547dd0,_0xc9bb08){return{'action':_0x1d8efa,'response':_0x547dd0,'message':_0xc9bb08,'stack':_0xc9bb08};}function myreject(_0x6b6f6b){return function(_0x68282a){return _0x6b6f6b(msgResponse(_0xca26('0x4d'),_0xca26('0x4e'),JSON[_0xca26('0x4f')](_0x68282a)));};}function getSeconds(_0x57766b,_0x53f03f){var _0x4c1c48=moment(_0x57766b)[_0xca26('0x50')](0x0);var _0x2ebf82=moment(_0x53f03f)[_0xca26('0x50')](0x0);return _0x4c1c48[_0xca26('0x51')](_0x2ebf82,_0xca26('0x52'));}function emit(_0x4bd428,_0x3d45a5,_0x47e1e6){io['to'](_0x4bd428)[_0xca26('0x53')](_0x3d45a5,_0x47e1e6);}function emitVoiceQueueSummary(_0x46e65f){if(_0x46e65f[_0xca26('0x54')]==='outbound'){var _0x4b3c47={'id':_0x46e65f['id'],'name':_0x46e65f[_0xca26('0x47')],'strategy':_0x46e65f[_0xca26('0x55')],'answered':_0x46e65f[_0xca26('0x56')],'available':_0x46e65f['available'],'loggedIn':_0x46e65f[_0xca26('0x57')],'pTalking':_0x46e65f['pTalking'],'sumBillable':_0x46e65f[_0xca26('0x58')],'sumDuration':_0x46e65f[_0xca26('0x59')],'sumHoldTime':_0x46e65f[_0xca26('0x5a')]||0x0,'talking':_0x46e65f[_0xca26('0x5b')],'total':_0x46e65f[_0xca26('0x5c')],'type':_0x46e65f[_0xca26('0x54')],'unmanaged':_0x46e65f[_0xca26('0x5d')],'abandoned':_0x46e65f[_0xca26('0x5e')],'waiting':_0x46e65f[_0xca26('0x5f')],'loggedInDb':_0x46e65f[_0xca26('0x60')],'dialActive':_0x46e65f[_0xca26('0x61')],'dialMethod':_0x46e65f[_0xca26('0x62')],'dialOriginateCallerIdName':_0x46e65f[_0xca26('0x63')],'dialOriginateCallerIdNumber':_0x46e65f[_0xca26('0x64')],'dialOriginateTimeout':_0x46e65f[_0xca26('0x65')],'dialPrefix':_0x46e65f[_0xca26('0x66')],'outboundAnswerAgiCallsDay':_0x46e65f[_0xca26('0x67')],'outboundAnswerCallsDay':_0x46e65f[_0xca26('0x68')],'outboundBlacklistCallsDay':_0x46e65f['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x46e65f[_0xca26('0x69')],'outboundCongestionCallsDay':_0x46e65f[_0xca26('0x6a')],'outboundDropCallsDayACS':_0x46e65f[_0xca26('0x6b')],'outboundDropCallsDayCallersExit':_0x46e65f[_0xca26('0x6c')],'outboundDropCallsDayTimeout':_0x46e65f['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x46e65f[_0xca26('0x6d')],'outboundNoSuchCallsDay':_0x46e65f[_0xca26('0x6e')],'outboundOriginateFailureCallsDay':_0x46e65f[_0xca26('0x6f')],'outboundReCallsDay':_0x46e65f[_0xca26('0x70')],'outboundRejectCallsDay':_0x46e65f[_0xca26('0x71')],'outboundUnknownCallsDay':_0x46e65f[_0xca26('0x72')],'predictiveIntervalAnsweredCalls':_0x46e65f[_0xca26('0x73')],'predictiveIntervalAvgHoldtime':_0x46e65f[_0xca26('0x74')],'predictiveIntervalAvgTalktime':_0x46e65f['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x46e65f[_0xca26('0x75')],'predictiveIntervalDroppedCallsTimeout':_0x46e65f[_0xca26('0x76')],'predictiveIntervalErlangCalls':_0x46e65f[_0xca26('0x77')],'predictiveIntervalErlangCallsDroppedCalls':_0x46e65f['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x46e65f[_0xca26('0x78')],'predictiveIntervalMultiplicativeFactor':_0x46e65f[_0xca26('0x79')],'predictiveIntervalPauses':_0x46e65f[_0xca26('0x7a')],'predictiveIntervalAvailable':_0x46e65f['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x46e65f[_0xca26('0x7b')],'message':_0x46e65f[_0xca26('0x43')],'originated':_0x46e65f[_0xca26('0x7c')],'erlangCalls':_0x46e65f[_0xca26('0x7d')],'erlangCallToSecond':_0x46e65f[_0xca26('0x7e')],'erlangAbandonmentRate':_0x46e65f['erlangAbandonmentRate'],'erlangBusyFactor':_0x46e65f[_0xca26('0x7f')],'startPredictive':_0x46e65f['startPredictive'],'startProgressive':_0x46e65f[_0xca26('0x2c')]};if(_0x46e65f[_0xca26('0x80')]){_0x4b3c47[_0xca26('0x80')]={'id':_0x46e65f['Trunk']['id'],'name':_0x46e65f[_0xca26('0x80')]['name'],'active':_0x46e65f[_0xca26('0x80')][_0xca26('0x81')],'callerid':_0x46e65f['Trunk'][_0xca26('0x82')]};}if(_0x46e65f[_0xca26('0x4a')]){_0x4b3c47[_0xca26('0x4a')]={'id':_0x46e65f[_0xca26('0x4a')]['id'],'name':_0x46e65f[_0xca26('0x4a')][_0xca26('0x47')]};}var _0x1e9dd4=md5(JSON[_0xca26('0x4f')](_0x4b3c47));if(_0x46e65f[_0xca26('0x2')]!==_0x1e9dd4){_0x46e65f['md5']=_0x1e9dd4;emit(util[_0xca26('0x83')](_0xca26('0x84'),_0x4b3c47[_0xca26('0x47')]),'voice_queue:save',_0x4b3c47);}}}function emitCampaignSummary(_0x4f56d5){if(_0x4f56d5[_0xca26('0x54')]===_0xca26('0x85')){emit(util[_0xca26('0x83')](_0xca26('0x86'),_0x4f56d5[_0xca26('0x47')]),_0xca26('0x87'),_0x4f56d5);}}function checkGetDataPredictive(_0x106094){if(isNotNull(_0x106094)&&!_[_0xca26('0x88')](_0x106094)){loggerPredictive[_0xca26('0x89')](_0xca26('0x8a'));loggerPredictive[_0xca26('0x89')](_0xca26('0x8b'),_0x106094[_0xca26('0x7b')]);loggerPredictive[_0xca26('0x89')](_0xca26('0x8c'),_0x106094[_0xca26('0x73')]);loggerPredictive[_0xca26('0x89')](_0xca26('0x8d'),_0x106094['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0xca26('0x89')](_0xca26('0x8e'),_0x106094['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xca26('0x89')](_0xca26('0x8f'),_0x106094[_0xca26('0x74')]);loggerPredictive[_0xca26('0x89')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x106094[_0xca26('0x90')]);loggerPredictive[_0xca26('0x89')](_0xca26('0x91'));if(_0x106094[_0xca26('0x7b')]>0x0){if(!_[_0xca26('0x42')](_0x106094[_0xca26('0x90')])&&_0x106094[_0xca26('0x90')]>0x0){return!![];}loggerPredictive[_0xca26('0x89')](_0xca26('0x92'));if(!_[_0xca26('0x42')](_0x106094['predictiveIntervalAvgHoldtime'])&&_0x106094[_0xca26('0x74')]>0x0){return!![];}loggerPredictive['info'](_0xca26('0x93'));}else{loggerPredictive[_0xca26('0x89')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xca26('0x89')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x803566){return function(_0x5842b2){loggerPredictive[_0xca26('0x89')]('---------\x20ErlangB\x20---------');loggerPredictive['info'](_0xca26('0x94'),_0x5842b2[_0xca26('0x7d')]);loggerPredictive['info'](_0xca26('0x95'),_0x5842b2[_0xca26('0x7e')]);loggerPredictive['info'](_0xca26('0x96'),_0x5842b2['erlangAbandonmentRate']);loggerPredictive[_0xca26('0x89')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5842b2['erlangBusyFactor']);loggerPredictive[_0xca26('0x89')](_0xca26('0x96'),_0x5842b2[_0xca26('0x97')]);loggerPredictive[_0xca26('0x89')]('---------------------------');_[_0xca26('0x98')](_0x803566,_0x5842b2);};}function getDiff(_0x2d41f3){var _0x3f18d0=moment()[_0xca26('0x50')](0x0);var _0xf74422=moment(_0x2d41f3)[_0xca26('0x50')](0x0);return _0x3f18d0[_0xca26('0x51')](_0xf74422,_0xca26('0x52'));}function ifInterval(_0x2f8c6a,_0x178654){if(_['isUndefined'](_0x178654)){return![];}return getDiff(_0x178654)<_0x2f8c6a*0x3c;}function freeVariablesPredictive(_0x3f3947){if(isNotNull(_0x3f3947)){if(!_[_0xca26('0x42')](_0x3f3947[_0xca26('0x2c')])){_0x3f3947[_0xca26('0x2c')]=undefined;loggerPredictive[_0xca26('0x89')](_0x3f3947[_0xca26('0x47')],'clearing\x20variable\x20start\x20progressive');}if(!_['isUndefined'](_0x3f3947[_0xca26('0x2b')])){_0x3f3947[_0xca26('0x2b')]=undefined;loggerPredictive['info'](_0x3f3947[_0xca26('0x47')],_0xca26('0x99'));}if(!_[_0xca26('0x42')](_0x3f3947[_0xca26('0x9a')])){clearInterval(_0x3f3947[_0xca26('0x9a')]);_0x3f3947[_0xca26('0x9a')]=undefined;loggerPredictive['info'](_0x3f3947['name'],_0xca26('0x9b'));}}}function erlangb(_0x292c18,_0x54a394){if(_0x54a394===0x0){return 0x0;}var _0x1b856f=0x1;for(var _0x1421ed=0x1;_0x1421ed<=_0x54a394;_0x1421ed+=0x1){_0x1b856f=0x1+_0x1b856f*_0x1421ed/_0x292c18;}return 0x1/_0x1b856f;}function isVoiceQueueOutbound(_0x3390f7){return _0x3390f7==='outbound';}function isNotPreview(_0x50c3a8){return _0x50c3a8!==_0xca26('0x21');}function isCampaignIvr(_0x489570){return _0x489570==='ivr';}function getCallerId(_0x172b77,_0x3c4388,_0x410b6d){if(!_[_0xca26('0x42')](_0x410b6d)&&typeof _0x410b6d==='string'&&!_[_0xca26('0x88')](_0x410b6d)){if(!_[_0xca26('0x42')](_0x3c4388)&&typeof _0x3c4388===_0xca26('0x9c')&&!_['isEmpty'](_0x3c4388)){return util[_0xca26('0x83')]('\x22%s\x22\x20<%s>',_0x3c4388,_0x410b6d);}return util[_0xca26('0x83')](_0xca26('0x9d'),_0x410b6d,_0x410b6d);}if(!_[_0xca26('0x42')](_0x172b77)&&typeof _0x172b77===_0xca26('0x9c')&&!_[_0xca26('0x88')](_0x172b77)){return _0x172b77;}return _0xca26('0x9e');}function loggerCatchQueueSummary(_0x216791,_0x29329d){return function(_0x539201){freeVariablesPredictive(_0x29329d);emitVoiceQueueSummary(_0x29329d);emitCampaignSummary(_0x29329d);loggerSyncQueueSummary[_0xca26('0x9f')](_0x216791,util[_0xca26('0xa0')](_0x539201,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x12f36c,_0x307e92){return function(_0x55a213){loggerPredictive['error'](_0x307e92[_0xca26('0x47')],_0x12f36c);loggerPredictive[_0xca26('0xa1')](_0x55a213['stack']);freeVariablesPredictive(_0x307e92);};}function loggerCatch(_0x436c81){return function(_0x77c0f3){logger['error'](_0x436c81,util['inspect'](_0x77c0f3,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x58e050){return _0x58e050&&!_[_0xca26('0x42')](_0x58e050)&&_0x58e050[_0xca26('0xa2')]>0x0;}function decremetOriginate(_0x9b4eca){if(!_[_0xca26('0x42')](_0x9b4eca)&&_0x9b4eca!==null){if(typeof _0x9b4eca[_0xca26('0x7c')]!==_0xca26('0xa3')){if(_0x9b4eca[_0xca26('0x7c')]>0x0){_0x9b4eca[_0xca26('0x7c')]-=0x1;}else{logger[_0xca26('0xa1')](_0xca26('0xa4'));}}}else{logger[_0xca26('0xa1')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x5b1817,_0x5c5c6a,_0x79aeec){if(_0x5c5c6a>_0x79aeec){for(var _0x1a2d81=0x0;_0x1a2d81<_0x5c5c6a-_0x79aeec;_0x1a2d81+=0x1){decremetOriginate(_0x5b1817);}}}function loggerGetContactDialer(_0x4e00e0,_0xe27ec4,_0xd1ffad){return function(_0x1b77b8){checkContactLowerLimitOriginate(_0xe27ec4,_0xd1ffad,0x0);logger[_0xca26('0xa1')](_0x4e00e0,util[_0xca26('0xa0')](_0x1b77b8,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x4de699){return function(_0x121726){if(isNotNull(_0x121726)&&isNotNull(_0x121726[0x0])){if(_0x121726[0x0][_0xca26('0xa5')]>0x0){_0x4de699['message']='RESCHEDULED_CONTACTS';logger[_0xca26('0x89')](_0xca26('0xa6')+_0x4de699['name'],_0x121726[0x0][_0xca26('0xa5')],'contacts');}else{_0x4de699[_0xca26('0x43')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xca26('0x89')]('[getContactDialer2][Empty]'+_0x4de699['name']);}}};}function notSendMessagesQueue(_0x1212a0){if(_0x1212a0[_0xca26('0xa7')]){freeVariablesPredictive(_0x1212a0);if(_0x1212a0[_0xca26('0x7c')]===0x0&&_0x1212a0[_0xca26('0x5b')]===0x0&&_0x1212a0[_0xca26('0x5f')]===0x0&&(_0x1212a0[_0xca26('0xa8')]||0x0)===0x0){_0x1212a0[_0xca26('0xa7')]=![];_0x1212a0['available']=0x0;_0x1212a0['message']='NOT_ACTIVE';loggerSyncQueueSummary[_0xca26('0x9f')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x1212a0[_0xca26('0x47')],_0xca26('0xa9'));}else{_0x1212a0[_0xca26('0x43')]=_0xca26('0xaa');loggerSyncQueueSummary[_0xca26('0x9f')](_0xca26('0xab'),_0x1212a0[_0xca26('0x47')],'is\x20disactive');}emitVoiceQueueSummary(_0x1212a0);}}function notSendMessagesCampaign(_0x2c0ae0){if(_0x2c0ae0[_0xca26('0xa7')]){if(_0x2c0ae0[_0xca26('0x7c')]===0x0){_0x2c0ae0['sendMessageOneNotActive']=![];_0x2c0ae0[_0xca26('0x43')]=_0xca26('0x46');loggerSyncQueueSummary[_0xca26('0x9f')](_0xca26('0xac'),_0x2c0ae0[_0xca26('0x47')],_0xca26('0xa9'));}else{_0x2c0ae0[_0xca26('0x43')]=_0xca26('0xaa');loggerSyncQueueSummary[_0xca26('0x9f')](_0xca26('0xac'),_0x2c0ae0[_0xca26('0x47')],'is\x20disactive');}emitCampaignSummary(_0x2c0ae0);}}function createObjHistory(_0x3f66fc,_0x4cba73,_0x588359,_0x55f230,_0x42eb81){_0x3f66fc[_0xca26('0x43')]=_0x588359;var _0xc17c70=new Action(_0x3f66fc,_0x4cba73);var _0x39df28=new History(_0xc17c70);_0x39df28[_0xca26('0xad')]=_0x55f230;_0x39df28['statedesc']=_0x42eb81;_0x39df28[_0xca26('0xae')]=_0xc17c70[_0xca26('0xaf')];return _0x39df28;}Dialer[_0xca26('0xb0')][_0xca26('0x3e')]=function(){var _0x4b87d1=this;setInterval(function(){_0x4b87d1[_0xca26('0xb1')](_0x4b87d1['uniqueId'],_0xca26('0xb2'));_0x4b87d1[_0xca26('0xb1')](_0x4b87d1['actions'],'[actions]');},0x32c8);};Dialer['prototype'][_0xca26('0xb1')]=function(_0x3302ee,_0x1b7380){var _0x4c9106=this;for(var _0x160c28 in _0x3302ee){if(typeof _0x3302ee[_0x160c28]!==_0xca26('0xa3')){this[_0xca26('0xb3')]['enqueue'](function(){if(!_[_0xca26('0xb4')](_0x3302ee[_0x160c28])){return ami[_0xca26('0xb5')]({'action':_0xca26('0xb6'),'channel':_0x3302ee[_0x160c28][_0xca26('0xb7')]})[_0xca26('0xb8')](function(_0x2c6e75){if(_0x2c6e75[_0xca26('0x43')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x3302ee[_0x160c28]&&_0x3302ee[_0x160c28][_0xca26('0x54')]!=='ivr'){_0x4c9106[_0xca26('0xb9')](_0x4c9106[_0xca26('0x22')][_0x3302ee[_0x160c28][_0xca26('0xba')]]);logger[_0xca26('0xa1')]('[Dialer][checkChannel]',_0x1b7380,_0x160c28,_0x3302ee[_0x160c28][_0xca26('0xba')]);delete _0x3302ee[_0x160c28];}if(_0x3302ee[_0x160c28]&&_0x3302ee[_0x160c28][_0xca26('0x54')]===_0xca26('0x85')){_0x4c9106[_0xca26('0xb9')](_0x4c9106[_0xca26('0x23')][_0x3302ee[_0x160c28]['queue']]);logger['error'](_0xca26('0xbb'),_0x1b7380,_0x160c28,_0x3302ee[_0x160c28]['queue']);delete _0x3302ee[_0x160c28];}},0x2328);}});}});}}};Dialer['prototype'][_0xca26('0xbc')]=function(_0xa3a8bb){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopper[_0xca26('0xbc')](_0xa3a8bb))[_0xca26('0xb8')](loggerCatch(_0xca26('0xbe')));};Dialer[_0xca26('0xb0')][_0xca26('0xbf')]=function(_0x4f3d7e){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopperBlack[_0xca26('0xbf')](_0x4f3d7e))[_0xca26('0xb8')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0xca26('0xb0')]['verifyAdditionalPhones']=function(_0x34d87d,_0x3d05b0,_0x261915){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x34d87d,_0x3d05b0,_0x261915))[_0xca26('0xb8')](loggerCatch('[verifyAdditionalPhone]\x20'));};Dialer[_0xca26('0xb0')]['swapAdditionalPhones']=function(_0x47aa49,_0x139eff,_0x9fb081){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopperAdditionalPhone[_0xca26('0xc0')](_0x47aa49,_0x139eff,_0x9fb081))[_0xca26('0xb8')](loggerCatch(_0xca26('0xc1')));};Dialer[_0xca26('0xb0')]['checkIsBlackListIvr']=function(_0x45c4aa){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopperBlack['checkIsBlackListIvr'](_0x45c4aa))[_0xca26('0xb8')](loggerCatch(_0xca26('0xc2')));};Dialer[_0xca26('0xb0')][_0xca26('0xc3')]=function(_0x1e037f){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopperHistory['avgHandleTime'](_0x1e037f))['catch'](loggerCatch(_0xca26('0xc4')));};Dialer['prototype']['rescheduleContact']=function(_0x5ec84f){return Promise[_0xca26('0xbd')]()['then'](cmHopper[_0xca26('0xc5')](_0x5ec84f))[_0xca26('0xb8')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0xca26('0xb0')][_0xca26('0xc6')]=function(_0x327d57,_0x2b8622,_0x517cdb){return Promise[_0xca26('0xbd')]()['then'](cmHopper['unlockContact'](_0x327d57,_0x2b8622,_0x517cdb))[_0xca26('0xb8')](loggerCatch(_0xca26('0xc7')));};Dialer[_0xca26('0xb0')][_0xca26('0xc8')]=function(_0x3daef3,_0x2b8aef,_0x22b787,_0x223f1b,_0x36f2d4){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopper[_0xca26('0xc8')](_0x3daef3,_0x2b8aef,_0x22b787,_0x223f1b))[_0xca26('0xb8')](function(_0x5c6b38){_0x36f2d4[_0xca26('0xc9')]-=_0x22b787;_0x36f2d4['temp']=_0x36f2d4[_0xca26('0xc9')]>0x0?_0x36f2d4[_0xca26('0xc9')]:0x0;loggerCatch(_0xca26('0xca'))(_0x5c6b38);});};Dialer['prototype'][_0xca26('0xcb')]=function(_0xfebbf6,_0x5f216a,_0x392f0b,_0x3ab961){return Promise[_0xca26('0xbd')]()['then'](cmHopper[_0xca26('0xcb')](_0xfebbf6,_0x5f216a,_0x392f0b))[_0xca26('0xb8')](function(_0x43a64b){_0x3ab961[_0xca26('0xc9')]-=_0x5f216a;_0x3ab961[_0xca26('0xc9')]=_0x3ab961[_0xca26('0xc9')]>0x0?_0x3ab961[_0xca26('0xc9')]:0x0;loggerCatch(_0xca26('0xcc'))(_0x43a64b);});};Dialer[_0xca26('0xb0')][_0xca26('0xcd')]=function(_0x288ded){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](voiceQueueRt['getVoiceQueueRtPauses'](_0x288ded))[_0xca26('0xb8')](loggerCatch(_0xca26('0xce')));};Dialer[_0xca26('0xb0')][_0xca26('0xcf')]=function(_0x3dc2f9){return Promise['resolve']()[_0xca26('0x40')](cmHopper['moveContactManagedDialer'](_0x3dc2f9))[_0xca26('0xb8')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0xca26('0xb0')][_0xca26('0xd0')]=function(_0x45c368){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopperHistory['createHistory'](_0x45c368))[_0xca26('0xb8')](loggerCatch(_0xca26('0xd1')));};Dialer[_0xca26('0xb0')][_0xca26('0xb9')]=function(_0x29dcbe){if(!_['isUndefined'](_0x29dcbe)&&_0x29dcbe!==null){if(typeof _0x29dcbe[_0xca26('0x7c')]!=='undefined'){if(_0x29dcbe['originated']>0x0){_0x29dcbe[_0xca26('0x7c')]-=0x1;}else{logger['error']('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xca26('0xa1')](_0xca26('0xd2'));}};Dialer[_0xca26('0xb0')]['loggerHandler']=function(_0x4a167f,_0x46e1a6){var _0x95d756=this;return function(_0xdcf905){_0x95d756['updateOriginated'](_0x46e1a6);logger[_0xca26('0xa1')](_0x4a167f,util[_0xca26('0xa0')](_0xdcf905,{'showHidden':![],'depth':null}));};};Dialer[_0xca26('0xb0')]['emptyContact']=function(_0x258213,_0x288761,_0x474e87){var _0x39bcea={'state':0x19,'statedesc':_0xca26('0xd3')};this[_0xca26('0xb9')](_0x288761);this[_0xca26('0xd4')](_[_0xca26('0x98')](_0x39bcea,_['pick'](_0x474e87,['ContactId',_0xca26('0xd5'),_0xca26('0xd6'),_0xca26('0xd7'),_0xca26('0xd8')])),_0xca26('0xd9'),'[emptyContact]');logger[_0xca26('0xa1')](_0x258213);};Dialer[_0xca26('0xb0')][_0xca26('0xda')]=function(_0x296103){return _0x296103===_0xca26('0xdb');};Dialer[_0xca26('0xb0')][_0xca26('0xdc')]=function(_0x1316bb){return!_[_0xca26('0x42')](_0x1316bb)&&_0x1316bb&&!_[_0xca26('0x42')](_0x1316bb[_0xca26('0x47')])&&!_[_0xca26('0x42')](_0x1316bb[_0xca26('0x81')])&&_0x1316bb[_0xca26('0x81')]&&(this['trunks'][util[_0xca26('0x83')](_0xca26('0xdd'),_0x1316bb[_0xca26('0x47')])]['status']===_0xca26('0xde')||this[_0xca26('0xdf')][util[_0xca26('0x83')](_0xca26('0xdd'),_0x1316bb[_0xca26('0x47')])][_0xca26('0xb6')]===_0xca26('0xe0'));};Dialer['prototype']['saveInDb']=function(_0x55c37c,_0x267022,_0x250e57){this[_0xca26('0xd0')](_0x55c37c)[_0xca26('0xb8')](loggerCatch(_0x267022));this[_0xca26('0xcf')](_0x55c37c)['catch'](loggerCatch(_0x250e57));};Dialer[_0xca26('0xb0')][_0xca26('0xe1')]=function(_0x52437d){var _0x23269f=this;var _0x3e7346=this[_0xca26('0x29')][_0x52437d[_0xca26('0xe2')]];var _0x502461;if(!_['isNil'](_0x52437d)&&!_['isNil'](_0x52437d[_0xca26('0xe3')])&&!_[_0xca26('0xb4')](_0x52437d[_0xca26('0xe3')]['amdstatus'])&&_0x52437d['exten']===_0xca26('0xe4')&&_0x3e7346){if(_0x3e7346[_0xca26('0x54')]!==_0xca26('0x85')&&this['voiceQueues'][_0x3e7346['queue']][_0xca26('0xe5')]&&_0x52437d[_0xca26('0xe6')]===_0xca26('0xe7')){delete this[_0xca26('0x29')][_0x52437d[_0xca26('0xe2')]];this[_0xca26('0xb9')](this[_0xca26('0x22')][_0x3e7346[_0xca26('0xba')]]);this[_0xca26('0x22')][_0x3e7346[_0xca26('0xba')]]['outboundAnswerCallsDay']+=0x1;this[_0xca26('0x22')][_0x3e7346[_0xca26('0xba')]][_0xca26('0x67')]+=0x1;_0x502461=new Hangup(_0x3e7346,_0x52437d);_0x502461[_0xca26('0xad')]=0x12;_0x502461['statedesc']=_0xca26('0xe8');_0x502461[_0xca26('0xe9')]=_0xca26('0xea');ami['emit'](_0xca26('0xeb'),ut['buildObj'](_0x502461,_0xca26('0xec')));this[_0xca26('0xd4')](_0x502461,_0xca26('0xed'),_0xca26('0xee'));}if(_0x3e7346[_0xca26('0x54')]!==_0xca26('0x85')&&this[_0xca26('0x22')][_0x3e7346[_0xca26('0xba')]][_0xca26('0xe5')]&&_0x52437d[_0xca26('0xe6')]===_0xca26('0xef')){return new Promise(function(_0x355cf1,_0x597b60){delete _0x23269f[_0xca26('0x29')][_0x52437d[_0xca26('0xe2')]];_0x23269f[_0xca26('0xb9')](_0x23269f[_0xca26('0x22')][_0x3e7346[_0xca26('0xba')]]);_0x23269f[_0xca26('0x22')][_0x3e7346['queue']]['outboundAnswerCallsDay']+=0x1;_0x23269f['voiceQueues'][_0x3e7346[_0xca26('0xba')]][_0xca26('0x67')]+=0x1;var _0x313a90=_0x23269f[_0xca26('0x22')][_0x3e7346[_0xca26('0xba')]];var _0x4214ad=new Hangup(_0x3e7346,_0x52437d);_0x4214ad[_0xca26('0xad')]=0x13;_0x4214ad[_0xca26('0xf0')]='Machine';_0x4214ad[_0xca26('0xe9')]='AMD';_0x4214ad['countmachineretry']+=0x1;_0x4214ad[_0xca26('0xf1')]+=0x1;_0x4214ad[_0xca26('0xec')]=!![];ami['emit']('custom:amd',ut[_0xca26('0xf2')](_0x4214ad,_0xca26('0xec')));_0x23269f[_0xca26('0xd0')](_0x4214ad)[_0xca26('0xb8')](loggerCatch(_0xca26('0xf3')));if(_0x4214ad[_0xca26('0xf4')]+_0x4214ad[_0xca26('0xf5')]+_0x4214ad[_0xca26('0xf6')]+_0x4214ad[_0xca26('0xf7')]+_0x4214ad['countdropretry']+_0x4214ad['countabandonedretry']+_0x4214ad[_0xca26('0xf8')]+_0x4214ad['countagentrejectretry']>=_0x313a90[_0xca26('0xf9')]){_0x23269f['stateGlobal'](_0x4214ad,_0x355cf1,_0x597b60,_0xca26('0xfa'));}else{if(_0x4214ad[_0xca26('0xf8')]>=_0x313a90['dialMachineMaxRetry']){_0x23269f[_0xca26('0xfb')](_0x4214ad,_0x355cf1,_0x597b60,'reason\x2019\x20machine....');}else{_0x23269f[_0xca26('0xc5')]({'active':![],'countmachineretry':_0x4214ad[_0xca26('0xf8')],'scheduledat':moment()[_0xca26('0xfc')](_0x313a90[_0xca26('0xfd')],'minutes')['format'](_0xca26('0xfe')),'ContactId':_0x4214ad[_0xca26('0xff')],'ListId':_0x4214ad['ListId'],'VoiceQueueId':_0x4214ad['VoiceQueueId']||undefined,'CampaignId':_0x4214ad[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch(_0xca26('0x100')));_0x355cf1({'reschedule':0x1});}}});}if(_0x3e7346[_0xca26('0x54')]===_0xca26('0x85')&&this[_0xca26('0x23')][_0x3e7346[_0xca26('0xba')]][_0xca26('0xe5')]&&_0x52437d[_0xca26('0xe6')]===_0xca26('0xe7')){delete this['uniqueId'][_0x52437d[_0xca26('0xe2')]];this[_0xca26('0xb9')](this['campaigns'][_0x3e7346['queue']]);_0x502461=new Hangup(_0x3e7346,_0x52437d);_0x502461['state']=0x12;_0x502461[_0xca26('0xf0')]='HangupInAMD';_0x502461[_0xca26('0xe9')]=_0xca26('0xea');ami['emit']('custom:amd',ut[_0xca26('0xf2')](_0x502461,_0xca26('0xec')));this[_0xca26('0xd4')](_0x502461,_0xca26('0x101'),_0xca26('0x102'));}if(_0x3e7346['type']===_0xca26('0x85')&&this['campaigns'][_0x3e7346['queue']][_0xca26('0xe5')]&&_0x52437d[_0xca26('0xe6')]===_0xca26('0xef')){return new Promise(function(_0x2a8516,_0x51f6a9){delete _0x23269f[_0xca26('0x29')][_0x52437d['uniqueid']];_0x23269f[_0xca26('0xb9')](_0x23269f[_0xca26('0x23')][_0x3e7346['queue']]);_0x23269f[_0xca26('0x23')][_0x3e7346[_0xca26('0xba')]][_0xca26('0x68')]+=0x1;_0x23269f[_0xca26('0x23')][_0x3e7346[_0xca26('0xba')]][_0xca26('0x67')]+=0x1;var _0xff3f66=_0x23269f[_0xca26('0x23')][_0x3e7346[_0xca26('0xba')]];var _0x2c5713=new Hangup(_0x3e7346,_0x52437d);_0x2c5713[_0xca26('0xad')]=0x13;_0x2c5713['statedesc']=_0xca26('0x103');_0x2c5713['membername']='AMD';_0x2c5713['countmachineretry']+=0x1;_0x2c5713[_0xca26('0xf1')]+=0x1;_0x2c5713[_0xca26('0xec')]=!![];ami[_0xca26('0x53')](_0xca26('0xeb'),ut[_0xca26('0xf2')](_0x2c5713,_0xca26('0xec')));_0x23269f['createHistory'](_0x2c5713)[_0xca26('0xb8')](loggerCatch(_0xca26('0xf3')));if(_0x2c5713[_0xca26('0xf4')]+_0x2c5713[_0xca26('0xf5')]+_0x2c5713['countnoanswerretry']+_0x2c5713[_0xca26('0xf7')]+_0x2c5713[_0xca26('0x104')]+_0x2c5713[_0xca26('0x105')]+_0x2c5713[_0xca26('0xf8')]+_0x2c5713[_0xca26('0x106')]>=_0xff3f66[_0xca26('0xf9')]){_0x23269f['stateGlobal'](_0x2c5713,_0x2a8516,_0x51f6a9,'reason19\x20machine....');}else{if(_0x2c5713['countmachineretry']>=_0xff3f66[_0xca26('0x107')]){_0x23269f[_0xca26('0xfb')](_0x2c5713,_0x2a8516,_0x51f6a9,_0xca26('0x108'));}else{_0x23269f['rescheduleContact']({'active':![],'countmachineretry':_0x2c5713[_0xca26('0xf8')],'scheduledat':moment()[_0xca26('0xfc')](_0xff3f66['dialMachineRetryFrequency'],_0xca26('0x109'))[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x2c5713['ContactId'],'ListId':_0x2c5713[_0xca26('0xd5')],'VoiceQueueId':_0x2c5713[_0xca26('0xd7')]||undefined,'CampaignId':_0x2c5713[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch('[rescheduleContact][Machine]'));_0x2a8516({'reschedule':0x1});}}});}}};Dialer['prototype'][_0xca26('0x37')]=function(_0x5f0885){var _0x258e0b=this['uniqueId'][_0x5f0885[_0xca26('0xe2')]];var _0x341bc0;if(_0x258e0b&&_0x258e0b[_0xca26('0x54')]===_0xca26('0x85')){delete this[_0xca26('0x29')][_0x5f0885['uniqueid']];this[_0xca26('0xb9')](this[_0xca26('0x23')][_0x258e0b['queue']]);this[_0xca26('0x23')][_0x258e0b[_0xca26('0xba')]]['ivrAnswerCallsDay']+=0x1;_0x341bc0=new Hangup(_0x258e0b,_0x5f0885);this[_0xca26('0xd0')](_0x341bc0)[_0xca26('0xb8')](loggerCatch(_0xca26('0x10a')));this[_0xca26('0xcf')](_0x341bc0)[_0xca26('0xb8')](loggerCatch('[syncHangupIvr]'));}if(_0x258e0b&&_0x258e0b[_0xca26('0x54')]!==_0xca26('0x85')&&isNotNull(this[_0xca26('0x22')][_0x258e0b['queue']][_0xca26('0x10b')])){delete this[_0xca26('0x29')][_0x5f0885['uniqueid']];this[_0xca26('0xb9')](this['voiceQueues'][_0x258e0b[_0xca26('0xba')]]);this[_0xca26('0x22')][_0x258e0b[_0xca26('0xba')]][_0xca26('0x68')]+=0x1;this[_0xca26('0x22')][_0x258e0b['queue']][_0xca26('0x67')]+=0x1;_0x341bc0=new Hangup(_0x258e0b,_0x5f0885);_0x341bc0[_0xca26('0xad')]=0x10;_0x341bc0[_0xca26('0xf0')]=_0xca26('0x10c');_0x341bc0[_0xca26('0xe9')]=_0xca26('0x10d');this[_0xca26('0xd0')](_0x341bc0)[_0xca26('0xb8')](loggerCatch(_0xca26('0x10a')));this[_0xca26('0xcf')](_0x341bc0)[_0xca26('0xb8')](loggerCatch(_0xca26('0x10e')));}if(_0x258e0b&&_0x258e0b[_0xca26('0x54')]!==_0xca26('0x85')&&!isNotNull(this[_0xca26('0x22')][_0x258e0b[_0xca26('0xba')]][_0xca26('0x10b')])){delete this[_0xca26('0x29')][_0x5f0885[_0xca26('0xe2')]];this['updateOriginated'](this[_0xca26('0x22')][_0x258e0b[_0xca26('0xba')]]);this[_0xca26('0x22')][_0x258e0b[_0xca26('0xba')]]['outboundUnknownCallsDay']+=0x1;_0x341bc0=new Hangup(_0x258e0b,_0x5f0885);_0x341bc0[_0xca26('0xad')]=0xc;_0x341bc0[_0xca26('0xf0')]=_0x5f0885[_0xca26('0x10f')];_0x341bc0[_0xca26('0xe9')]='Unknow';this[_0xca26('0xd0')](_0x341bc0)['catch'](loggerCatch(_0xca26('0x10a')));this[_0xca26('0xcf')](_0x341bc0)[_0xca26('0xb8')](loggerCatch('[syncHangupIvr]'));}};Dialer['prototype'][_0xca26('0x33')]=function(_0x21ae6b){var _0x29003d=this['uniqueId'][_0x21ae6b[_0xca26('0xe2')]];if(this[_0xca26('0x22')][_0x21ae6b['queue']]){if(_0x29003d&&_0x29003d[_0xca26('0x54')]!==_0xca26('0x85')){delete this[_0xca26('0x29')][_0x21ae6b[_0xca26('0xe2')]];this['voiceQueues'][_0x21ae6b[_0xca26('0xba')]][_0xca26('0x68')]+=0x1;var _0x430938=new AgentComplete(_0x29003d,_0x21ae6b);if(_0x21ae6b[_0xca26('0x110')]===_0xca26('0x111')){_0x430938[_0xca26('0x112')]=this[_0xca26('0x22')][_0x21ae6b[_0xca26('0xba')]]['dialQueueProject2']&&this[_0xca26('0x22')][_0x21ae6b[_0xca26('0xba')]][_0xca26('0x113')]?moment()[_0xca26('0x83')](_0xca26('0xfe')):undefined;}this[_0xca26('0xd0')](_0x430938)[_0xca26('0xb8')](loggerCatch(_0xca26('0x114')));this[_0xca26('0xcf')](_0x430938)[_0xca26('0xb8')](loggerCatch(_0xca26('0x115')));}}};Dialer['prototype'][_0xca26('0x116')]=function(_0x4cd40e){if(this[_0xca26('0x22')][_0x4cd40e['queue']]){if(this[_0xca26('0x29')][_0x4cd40e['uniqueid']]&&this['uniqueId'][_0x4cd40e['uniqueid']][_0xca26('0x54')]!==_0xca26('0x85')){this[_0xca26('0xb9')](this['voiceQueues'][_0x4cd40e[_0xca26('0xba')]]);this[_0xca26('0x29')][_0x4cd40e['uniqueid']][_0xca26('0x117')]=moment()[_0xca26('0x83')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xca26('0xb0')][_0xca26('0x118')]=function(_0x5f2195,_0x204fa5){this[_0xca26('0xd0')](_0x5f2195)[_0xca26('0xb8')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x204fa5==0x0){this[_0xca26('0xcf')](_0x5f2195)[_0xca26('0xb8')](loggerCatch(_0xca26('0x119')));}};Dialer[_0xca26('0xb0')][_0xca26('0x30')]=function(_0x27f7f5){var _0x529c0e=this[_0xca26('0x29')][_0x27f7f5['uniqueid']];var _0xb804bc=this;var _0x445c4d=![];var _0x2aeb30;var _0x54eced;if(this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]]){if(_0x529c0e&&_0x529c0e['type']!==_0xca26('0x85')){delete this[_0xca26('0x29')][_0x27f7f5[_0xca26('0xe2')]];this[_0xca26('0xb9')](this['voiceQueues'][_0x27f7f5[_0xca26('0xba')]]);_0x529c0e['droptime']=moment()[_0xca26('0x83')](_0xca26('0xfe'));var _0x1ffb38=new QueueCallerAbandon(_0x529c0e,_0x27f7f5);if(getSeconds(_0x529c0e[_0xca26('0x11a')],_0x529c0e[_0xca26('0x11b')])>=_0x529c0e['dialQueueTimeout']){this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]][_0xca26('0x76')]+=0x1;this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]]['outboundDropCallsDayTimeout']+=0x1;this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x1ffb38[_0xca26('0xad')]=0xa;_0x1ffb38['statedesc']=_0xca26('0x11c');_0x1ffb38[_0xca26('0x11d')]=_0xca26('0x11e');_0x1ffb38['agiafterat']=this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]][_0xca26('0x11f')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x1ffb38[_0xca26('0x104')]+=0x1;_0x1ffb38['countglobal']+=0x1;_0x2aeb30=this[_0xca26('0x22')][_0x27f7f5['queue']][_0xca26('0x120')];_0x54eced=this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]][_0xca26('0x121')];_0xb804bc[_0xca26('0x122')](_0x1ffb38,_0x1ffb38[_0xca26('0xad')],_0x529c0e[_0xca26('0x123')])['then'](function(_0x65cd1){_0x445c4d=_0x65cd1[_0xca26('0x124')]==0x1;if(_0x1ffb38[_0xca26('0x104')]>=_0xb804bc[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]][_0xca26('0x125')]){_0xb804bc['queueCallerAbandonCreateState'](_0x1ffb38,_0x65cd1[_0xca26('0x124')]);}else{_0xb804bc['rescheduleContact']({'active':![],'countdropretry':_0x1ffb38[_0xca26('0x104')],'scheduledat':moment()['add'](_0xb804bc['voiceQueues'][_0x27f7f5['queue']][_0xca26('0x120')],_0xca26('0x109'))[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x529c0e[_0xca26('0xff')],'ListId':_0x529c0e['ListId'],'VoiceQueueId':_0x529c0e[_0xca26('0xd7')]||undefined,'CampaignId':_0x529c0e[_0xca26('0xd8')]||undefined})['catch'](loggerCatch(_0xca26('0x126')));var _0x34ce6b=new History(_0x1ffb38);_0x34ce6b[_0xca26('0xad')]=0xa;_0x34ce6b[_0xca26('0xf0')]=_0xca26('0x11c');_0x34ce6b[_0xca26('0xaf')]=moment()[_0xca26('0x83')](_0xca26('0xfe'));_0x34ce6b[_0xca26('0xae')]=_0x34ce6b[_0xca26('0xaf')];_0x34ce6b[_0xca26('0x127')]=_0x1ffb38[_0xca26('0x127')];_0x34ce6b[_0xca26('0x128')]=_0x1ffb38[_0xca26('0x128')];_0xb804bc['createHistory'](_0x34ce6b)[_0xca26('0xb8')](loggerCatch(_0xca26('0x129')));}})[_0xca26('0x40')](function(){if(_0x445c4d)_0xb804bc['swapAdditionalPhones'](_0x1ffb38,_0x2aeb30,_0x54eced)[_0xca26('0x40')](function(){return 0x1;});});}else{this[_0xca26('0x22')][_0x27f7f5['queue']][_0xca26('0x75')]+=0x1;this['voiceQueues'][_0x27f7f5['queue']][_0xca26('0x6c')]+=0x1;_0x1ffb38['state']=0xb;_0x1ffb38['statedesc']=_0xca26('0x12a');_0x1ffb38[_0xca26('0x11d')]=_0xca26('0x12b');_0x1ffb38[_0xca26('0x105')]+=0x1;_0x1ffb38[_0xca26('0xf1')]+=0x1;_0x2aeb30=this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]]['dialAbandonedRetryFrequency'];_0x54eced=this[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]][_0xca26('0x121')];_0xb804bc[_0xca26('0x122')](_0x1ffb38,_0x1ffb38['state'],_0x529c0e[_0xca26('0x123')])[_0xca26('0x40')](function(_0x5ee01d){if(_0x1ffb38['countabandonedretry']>=_0xb804bc[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]][_0xca26('0x12c')]){_0xb804bc[_0xca26('0x118')](_0x1ffb38,_0x5ee01d['additional']);}else{_0xb804bc[_0xca26('0xc5')]({'active':![],'countabandonedretry':_0x1ffb38[_0xca26('0x105')],'scheduledat':moment()[_0xca26('0xfc')](_0xb804bc[_0xca26('0x22')][_0x27f7f5[_0xca26('0xba')]][_0xca26('0x12d')],'minutes')[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x529c0e[_0xca26('0xff')],'ListId':_0x529c0e[_0xca26('0xd5')],'VoiceQueueId':_0x529c0e[_0xca26('0xd7')]||undefined,'CampaignId':_0x529c0e[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch(_0xca26('0x12e')));var _0x366fda=new History(_0x1ffb38);_0x366fda[_0xca26('0xad')]=0xb;_0x366fda[_0xca26('0xf0')]=_0xca26('0x12a');_0x366fda['starttime']=moment()['format'](_0xca26('0xfe'));_0x366fda[_0xca26('0xae')]=_0x366fda['starttime'];_0x366fda[_0xca26('0x127')]=_0x1ffb38[_0xca26('0x127')];_0x366fda[_0xca26('0x128')]=_0x1ffb38[_0xca26('0x128')];_0xb804bc[_0xca26('0xd0')](_0x366fda)[_0xca26('0xb8')](loggerCatch(_0xca26('0x12f')));}})[_0xca26('0x40')](function(){if(_0x445c4d)_0xb804bc[_0xca26('0xc0')](_0x1ffb38,_0x2aeb30,_0x54eced)['then'](function(){return 0x1;});});}}}};Dialer['prototype'][_0xca26('0x39')]=function(_0x540086){if(this[_0xca26('0x27')][_0x540086[_0xca26('0xe2')]]){this[_0xca26('0x27')][_0x540086['uniqueid']][_0xca26('0xb7')]=_0x540086[_0xca26('0xb7')];}if(this[_0xca26('0x29')][_0x540086[_0xca26('0xe2')]]){this[_0xca26('0x29')][_0x540086[_0xca26('0xe2')]][_0xca26('0xb7')]=_0x540086[_0xca26('0xb7')];}};Dialer[_0xca26('0xb0')][_0xca26('0x3b')]=function(_0x333259){if(strategy[this[_0xca26('0x22')][this[_0xca26('0x27')][_0x333259[_0xca26('0x130')]]['queue']][_0xca26('0x55')]]==='roundrobin'){if(this['actions'][_0x333259['actionid']]&&_[_0xca26('0xb4')](this[_0xca26('0x27')][_0x333259[_0xca26('0x130')]][_0xca26('0x131')])&&_0x333259['status']==='1'&&_0x333259[_0xca26('0x132')]==='0'){if(this[_0xca26('0x24')][_0x333259[_0xca26('0x133')]]){if(!this[_0xca26('0x24')][_0x333259['stateinterface']][_0xca26('0x131')]){this[_0xca26('0x24')][_0x333259[_0xca26('0x133')]][_0xca26('0x131')]=!![];this[_0xca26('0x27')][_0x333259[_0xca26('0x130')]]['locked']=!![];this[_0xca26('0x27')][_0x333259['actionid']]['stateinterface']=_0x333259[_0xca26('0x133')];}}}}else if((strategy[this[_0xca26('0x22')][this[_0xca26('0x27')][_0x333259[_0xca26('0x130')]][_0xca26('0xba')]][_0xca26('0x55')]]||'rrmemory')===_0xca26('0x134')){if(this[_0xca26('0x27')][_0x333259['actionid']]){if(this[_0xca26('0x24')][_0x333259[_0xca26('0x133')]]){this[_0xca26('0x27')][_0x333259['actionid']][_0xca26('0x133')]=_0x333259[_0xca26('0x133')];if(_['isNil'](this[_0xca26('0x2d')][this['actions'][_0x333259['actionid']][_0xca26('0xba')]])){this['queueBooked'][this[_0xca26('0x27')][_0x333259[_0xca26('0x130')]][_0xca26('0xba')]]=[];}this[_0xca26('0x2d')][this[_0xca26('0x27')][_0x333259[_0xca26('0x130')]][_0xca26('0xba')]]['push'](_[_0xca26('0x98')](_[_0xca26('0x135')](this[_0xca26('0x27')][_0x333259['actionid']],[_0xca26('0x136'),_0xca26('0x133')]),{'status':_0x333259[_0xca26('0xb6')],'paused':_0x333259[_0xca26('0x132')]}));}}}};function unlockQueueStatus(_0x36c759,_0x45c3b3){setTimeout(function(){if(_[_0xca26('0x42')](_0x36c759['queueStatusComplete'])){loggerBooked[_0xca26('0xa1')](_0xca26('0x137'),_0x45c3b3);}_0x36c759['queueStatusComplete']=!![];loggerBooked['info'](_0xca26('0x138'),_0x45c3b3,JSON[_0xca26('0x4f')](_[_0xca26('0x135')](_0x36c759,[_0xca26('0x47'),_0xca26('0x139')])));},0x1f3);}Dialer[_0xca26('0xb0')][_0xca26('0x13a')]=function(_0x309364){var _0x7ebb0a=this;var _0x1cde42=_0x7ebb0a[_0xca26('0x22')][_0x7ebb0a[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]];if(strategy[this[_0xca26('0x22')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['queue']][_0xca26('0x55')]]==='roundrobin'){if(this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]&&this['actions'][_0x309364[_0xca26('0x130')]][_0xca26('0x133')]){this['preview'][_0xca26('0x13b')](this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['idHopper'],this['actions'][_0x309364[_0xca26('0x130')]][_0xca26('0x133')])[_0xca26('0xb8')](function(_0x32fcae){logger['error'](_0xca26('0x13c'),util[_0xca26('0xa0')](_0x32fcae,{'showHidden':![],'depth':null}));})[_0xca26('0x20')](function(){_0x7ebb0a[_0xca26('0xb9')](_0x7ebb0a[_0xca26('0x22')][_0x7ebb0a[_0xca26('0x27')][_0x309364['actionid']][_0xca26('0xba')]]);_0x7ebb0a[_0xca26('0x24')][_0x7ebb0a['actions'][_0x309364[_0xca26('0x130')]][_0xca26('0x133')]][_0xca26('0x131')]=![];delete _0x7ebb0a[_0xca26('0x27')][_0x309364['actionid']];unlockQueueStatus(_0x1cde42);});}else{this['updateOriginated'](this['voiceQueues'][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['ContactId'],'ListId':this['actions'][_0x309364[_0xca26('0x130')]][_0xca26('0xd5')],'VoiceQueueId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xd7')]||undefined,'CampaignId':this[_0xca26('0x27')][_0x309364['actionid']][_0xca26('0xd8')]||undefined})['catch'](loggerCatch(_0xca26('0x13d')));delete this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]];unlockQueueStatus(_0x1cde42);}}else if((strategy[this[_0xca26('0x22')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['queue']]['strategy']]||'rrmemory')===_0xca26('0x134')){var _0x4427e6;if(this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]&&!_[_0xca26('0x88')](this['queueBooked'][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]])){if(this[_0xca26('0x2e')][_0x7ebb0a[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]]){this['queueBookedRR'][_0x7ebb0a[_0xca26('0x27')][_0x309364['actionid']][_0xca26('0xba')]]=this[_0xca26('0x2e')][this['actions'][_0x309364[_0xca26('0x130')]]['queue']]?this[_0xca26('0x2e')][this[_0xca26('0x27')][_0x309364['actionid']]['queue']]:this[_0xca26('0x2d')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]]?this[_0xca26('0x2d')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]]['_rr']||0x0:0x0;}this[_0xca26('0x2d')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]]['_rr']=this[_0xca26('0x2e')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['queue']];for(var _0x39cbc2=0x0;_0x39cbc2<this[_0xca26('0x2d')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['queue']][_0xca26('0xa2')];_0x39cbc2+=0x1){_0x4427e6=rr(this[_0xca26('0x2d')][this[_0xca26('0x27')][_0x309364['actionid']][_0xca26('0xba')]]);this[_0xca26('0x2e')][_0x7ebb0a[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]]=this[_0xca26('0x2d')][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['queue']][_0xca26('0x13e')];if(_0x4427e6['status']==='1'&&_0x4427e6[_0xca26('0x132')]==='0'){break;}}if(!_['isNil'](_0x4427e6)){this[_0xca26('0x24')][_0x4427e6[_0xca26('0x133')]][_0xca26('0x13f')]=_[_0xca26('0x42')](this['agents'][_0x4427e6[_0xca26('0x133')]][_0xca26('0x13f')])?!![]:this[_0xca26('0x24')][_0x4427e6[_0xca26('0x133')]][_0xca26('0x13f')];}loggerBooked['info']('[booked][RR]',_0x309364['actionid'],_0xca26('0x140'),JSON[_0xca26('0x4f')](_[_0xca26('0x135')](this[_0xca26('0x24')][_0x4427e6[_0xca26('0x133')]],['name',_0xca26('0x13f')])),_0xca26('0x141'),JSON[_0xca26('0x4f')](_0x4427e6['idHopper']));if(!_[_0xca26('0xb4')](_0x4427e6)&&_0x4427e6[_0xca26('0xb6')]==='1'&&_0x4427e6[_0xca26('0x132')]==='0'&&this[_0xca26('0x24')][_0x4427e6['stateinterface']][_0xca26('0x13f')]){this['agents'][_0x4427e6[_0xca26('0x133')]][_0xca26('0x13f')]=![];this['queueBooked'][_0x7ebb0a['actions'][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]]=[];this[_0xca26('0x21')][_0xca26('0x13b')](_0x4427e6['idHopper'],_0x4427e6['stateinterface'])[_0xca26('0xb8')](function(_0x28ba92){logger[_0xca26('0xa1')]('[Catch][Preview][syncQueueStatusComplete]',util[_0xca26('0xa0')](_0x28ba92,{'showHidden':![],'depth':null}));})['finally'](function(){_0x7ebb0a[_0xca26('0xb9')](_0x7ebb0a[_0xca26('0x22')][_0x7ebb0a[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['queue']]);setTimeout(function(){_0x7ebb0a[_0xca26('0x24')][_0x4427e6['stateinterface']]['unlockRR']=!![];loggerBooked[_0xca26('0x89')](_0xca26('0x142'),_0x309364['actionid'],_0xca26('0x140'),JSON['stringify'](_[_0xca26('0x135')](_0x7ebb0a[_0xca26('0x24')][_0x4427e6[_0xca26('0x133')]],[_0xca26('0x47'),_0xca26('0x13f')])),_0xca26('0x141'),JSON[_0xca26('0x4f')](_0x4427e6['idHopper']));},0xc7);delete _0x7ebb0a['actions'][_0x309364[_0xca26('0x130')]];unlockQueueStatus(_0x1cde42,_0x309364[_0xca26('0x130')]);});}else{loggerBooked[_0xca26('0x89')](_0xca26('0x143'));this[_0xca26('0xb9')](this[_0xca26('0x22')][this[_0xca26('0x27')][_0x309364['actionid']][_0xca26('0xba')]]);this[_0xca26('0xc5')]({'active':![],'ContactId':this[_0xca26('0x27')][_0x309364['actionid']]['ContactId'],'ListId':this[_0xca26('0x27')][_0x309364['actionid']][_0xca26('0xd5')],'VoiceQueueId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xd7')]||undefined,'CampaignId':this['actions'][_0x309364[_0xca26('0x130')]][_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]];unlockQueueStatus(_0x1cde42);}}else{loggerBooked[_0xca26('0x89')](_0xca26('0x144'));this[_0xca26('0xb9')](this['voiceQueues'][this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xba')]]);this[_0xca26('0xc5')]({'active':![],'ContactId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xff')],'ListId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xd5')],'VoiceQueueId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xd7')]||undefined,'CampaignId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['CampaignId']||undefined})[_0xca26('0xb8')](loggerCatch(_0xca26('0x145')));delete this['actions'][_0x309364[_0xca26('0x130')]];unlockQueueStatus(_0x1cde42);}}else{loggerBooked[_0xca26('0x89')]('[booked][unlock3]');this[_0xca26('0xb9')](this['voiceQueues'][this['actions'][_0x309364['actionid']]['queue']]);this[_0xca26('0xc5')]({'active':![],'ContactId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]][_0xca26('0xff')],'ListId':this[_0xca26('0x27')][_0x309364['actionid']]['ListId'],'VoiceQueueId':this['actions'][_0x309364['actionid']][_0xca26('0xd7')]||undefined,'CampaignId':this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]]['CampaignId']||undefined})[_0xca26('0xb8')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0xca26('0x27')][_0x309364[_0xca26('0x130')]];unlockQueueStatus(_0x1cde42);}};Dialer[_0xca26('0xb0')][_0xca26('0x3d')]=function(){var _0x4a822b=this;return cmHopper[_0xca26('0x146')]({'active':![]},{'where':{'active':!![]}})['then'](function(){setInterval(function(){_0x4a822b[_0xca26('0x147')]();},0x3e8);});};Dialer[_0xca26('0xb0')]['checkIsTrunkReachable']=function(_0x43efd0){var _0x3a21af=this;return function(){if(!_0x3a21af[_0xca26('0xdc')](_0x43efd0[_0xca26('0x80')])){if(!_0x3a21af[_0xca26('0xdc')](_0x43efd0['TrunkBackup'])){_0x43efd0[_0xca26('0x43')]=_0xca26('0x148');throw _0x43efd0['name']+_0xca26('0x149');}}};};Dialer[_0xca26('0xb0')][_0xca26('0x14a')]=function(_0x4ad4fb,_0x5ccf98,_0x362c3f,_0x498854){var _0x278256=this;return function(){var _0x2ddcd5=!![];return _0x278256[_0xca26('0x14b')](_0x4ad4fb,_0x5ccf98,_0x362c3f,_0x498854,_0x2ddcd5);};};Dialer[_0xca26('0xb0')][_0xca26('0x14c')]=function(_0x4df4dc,_0x38696e,_0x2ee280,_0x4f62f4){var _0x5b15f2=this;return function(){var _0x9baa09=![];return _0x5b15f2[_0xca26('0x14b')](_0x4df4dc[_0xca26('0x4b')],_0x38696e,_0x2ee280,_0x4f62f4,_0x9baa09);};};Dialer[_0xca26('0xb0')][_0xca26('0x14b')]=function(_0x70a10f,_0x3ab33b,_0x2c5895,_0x3d6556,_0x59103a){var _0x2ff869=[];return new Promise(function(_0x21b9b2,_0x31e008){if(!isNotNull(_0x70a10f)){_0x3d6556[_0xca26('0x43')]=_0xca26('0x4c');return _0x31e008(msgResponse(_0xca26('0x14b'),'Failure',_0x2c5895+_0xca26('0x14d')));}if(_[_0xca26('0x88')](_0x70a10f)){_0x3d6556[_0xca26('0x43')]='INTERVAL_IS_EMPTY';return _0x31e008(msgResponse(_0xca26('0x14b'),_0xca26('0x14e'),_0x2c5895+_0xca26('0x14f')));}if(_0x3ab33b&&_[_0xca26('0x42')](config[_0xca26('0x150')][_0x3ab33b])){_0x3d6556[_0xca26('0x43')]=_0xca26('0x151');return _0x31e008(msgResponse(_0xca26('0x14b'),_0xca26('0x14e'),_0x2c5895+'\x20Timezone\x20unknow\x20'+_0x3ab33b));}if(_[_0xca26('0x152')](_0x70a10f)){for(var _0xce59dd=0x0;_0xce59dd<_0x70a10f[_0xca26('0xa2')];_0xce59dd+=0x1){_0x2ff869[_0xca26('0x153')](ami[_0xca26('0xb5')]({'action':_0xca26('0x154'),'command':util[_0xca26('0x83')](_0xca26('0x155'),_0x70a10f[_0xce59dd]['interval'],!_['isUndefined'](config[_0xca26('0x150')][_0x3ab33b])?_0x3ab33b:'')})[_0xca26('0x40')](function(_0x3f789c){return _0x3f789c['content']['indexOf'](_0xca26('0x156'))>=0x0;})[_0xca26('0xb8')](myreject(_0x31e008)));}}else{_0x2ff869[_0xca26('0x153')](ami['Action']({'action':_0xca26('0x154'),'command':util['format']('iftime\x20%s,%s',_0x70a10f,!_[_0xca26('0x42')](config[_0xca26('0x150')][_0x3ab33b])?_0x3ab33b:'')})[_0xca26('0x40')](function(_0x51889b){return _0x51889b[_0xca26('0x157')][_0xca26('0x158')]('true')>=0x0;})[_0xca26('0xb8')](myreject(_0x31e008)));}Promise[_0xca26('0x159')](_0x2ff869)[_0xca26('0x40')](function(_0x1748f1){var _0x53790a=_[_0xca26('0x15a')](_0x1748f1);if(_0x53790a){return _0x21b9b2(_0x53790a);}else{_0x3d6556[_0xca26('0x43')]=_0x59103a?_0xca26('0x15b'):_0xca26('0x15c');return _0x31e008(msgResponse(_0xca26('0x15d'),_0xca26('0x14e'),'Global:\x20'+_0x59103a+'\x20'+_0x2c5895+_0xca26('0x15e')+util[_0xca26('0xa0')](_0x70a10f,{'showHidden':![],'depth':null})+_0xca26('0x15f')+_0x3ab33b));}})[_0xca26('0xb8')](function(_0x28aea9){return _0x31e008(msgResponse(_0xca26('0x14b'),_0xca26('0x14e'),JSON['stringify'](_0x28aea9)));});});};Dialer[_0xca26('0xb0')][_0xca26('0x160')]=function(_0x3fac82){var _0x5cfb7f=this;return function(){switch(_0x3fac82[_0xca26('0x62')]){case _0xca26('0x161'):freeVariablesPredictive(_0x3fac82);_0x5cfb7f[_0xca26('0x162')](_0x3fac82,0x1);break;case _0xca26('0x163'):freeVariablesPredictive(_0x3fac82);_0x5cfb7f[_0xca26('0x162')](_0x3fac82,_0x3fac82[_0xca26('0x164')]);break;case _0xca26('0x9'):_0x5cfb7f[_0xca26('0x9')](_0x3fac82);break;case _0xca26('0x8'):freeVariablesPredictive(_0x3fac82);_0x5cfb7f['handlePower'](_0x3fac82,0x1);break;default:freeVariablesPredictive(_0x3fac82);logger[_0xca26('0xa1')](_0xca26('0x165'),_0x3fac82[_0xca26('0x47')],_0xca26('0x166'));}};};Dialer[_0xca26('0xb0')]['checkPreviewRecallReminder']=function(_0x293b4e){return Promise[_0xca26('0xbd')]()['then'](cmHopper[_0xca26('0x167')](_0x293b4e['id'],previewRecallmeReminderInterval))[_0xca26('0x40')](function(_0x4697a8){for(var _0x57a1cc=0x0;_0x57a1cc<_0x4697a8[_0xca26('0xa2')];_0x57a1cc++){var _0x59160f=_0x4697a8[_0x57a1cc]['Agent'][_0xca26('0x47')];if(_0x59160f)io['to'](util[_0xca26('0x83')](_0xca26('0x168'),_0x59160f))[_0xca26('0x53')](_0xca26('0x169'),{'hopper':_0x4697a8[_0x57a1cc]});}})[_0xca26('0xb8')](function(){});};Dialer['prototype'][_0xca26('0x16a')]=function(_0x347914){var _0x53dbb4=this;return function(){_0x53dbb4[_0xca26('0x16b')](_0x347914);};};Dialer[_0xca26('0xb0')][_0xca26('0xb')]=function(_0x1d9f8e){var _0x91b8e7=this;if(isNotPreview(_0x1d9f8e[_0xca26('0x62')])){if(isVoiceQueueOutbound(_0x1d9f8e[_0xca26('0x54')])&&isActive(_0x1d9f8e['dialActive'])){_0x1d9f8e[_0xca26('0xa7')]=!![];Promise[_0xca26('0xbd')]()[_0xca26('0x40')](checkIsLoggedIn(_0x1d9f8e,_0x1d9f8e[_0xca26('0x57')]))[_0xca26('0x40')](checkIsActive(_0x1d9f8e,_0x1d9f8e[_0xca26('0x61')]))[_0xca26('0x40')](checkInterval(_0x1d9f8e))[_0xca26('0x40')](_0x91b8e7['checkIsTrunkReachable'](_0x1d9f8e))[_0xca26('0x40')](_0x91b8e7[_0xca26('0x14a')](_0x1d9f8e['dialGlobalInterval'],_0x1d9f8e[_0xca26('0x16c')],_0x1d9f8e[_0xca26('0x47')],_0x1d9f8e))[_0xca26('0x40')](_0x91b8e7['checkIfTimeIntervals'](_0x1d9f8e[_0xca26('0x4a')],_0x1d9f8e[_0xca26('0x16c')],_0x1d9f8e[_0xca26('0x47')],_0x1d9f8e))[_0xca26('0x40')](_0x91b8e7[_0xca26('0x160')](_0x1d9f8e))[_0xca26('0xb8')](loggerCatchQueueSummary('[syncQueueSummary]',_0x1d9f8e));}else{notSendMessagesQueue(_0x1d9f8e);}}else{freeVariablesPredictive(_0x1d9f8e);}};Dialer[_0xca26('0xb0')][_0xca26('0x36')]=_[_0xca26('0x16d')](function(){var _0x4639f2=_[_0xca26('0x16e')](this[_0xca26('0x22')],function(_0x36ad42){return _0x36ad42['dialPreviewRecallmeReminder'];});var _0x5a90fe=_[_0xca26('0x16e')](this[_0xca26('0x24')],function(_0x794f91){return _0x794f91[_0xca26('0x16f')]&&_0x794f91['status']===_0xca26('0xde');});if(_0x4639f2['length']>0x0&&_0x5a90fe[_0xca26('0xa2')]>0x0){return Promise[_0xca26('0xbd')]()[_0xca26('0x40')](cmHopper['handlePreviewRecallNotifications'](_['map'](_0x4639f2,'id'),previewRecallmeReminderInterval,_[_0xca26('0x170')](_0x5a90fe,'id')))['then'](function(_0x120e88){for(var _0x39ee8f=0x0;_0x39ee8f<_0x120e88['length'];_0x39ee8f++){var _0x28bafd=_0x120e88[_0x39ee8f][_0xca26('0x171')][_0xca26('0x47')];if(_0x28bafd)io['to'](util['format'](_0xca26('0x168'),_0x28bafd))['emit']('user:dialPreviewRecallReminder',{'hopper':_0x120e88[_0x39ee8f]});}})[_0xca26('0xb8')](function(_0x10e50e){logger['error'](_0xca26('0x172'),_0x10e50e);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xca26('0xb0')][_0xca26('0x147')]=function(){var _0x29eaf8=this;var _0xc18d57;for(var _0x1dfd5b in this[_0xca26('0x23')]){if(typeof this[_0xca26('0x23')][_0x1dfd5b]!=='undefined'){_0xc18d57=this[_0xca26('0x23')][_0x1dfd5b];if(isCampaignIvr(_0xc18d57[_0xca26('0x54')])&&isActive(_0xc18d57[_0xca26('0x81')])){_0xc18d57['sendMessageOneNotActive']=!![];Promise[_0xca26('0xbd')]()[_0xca26('0x40')](checkIsActive(_0xc18d57,_0xc18d57[_0xca26('0x81')]))[_0xca26('0x40')](checkInterval(_0xc18d57))['then'](_0x29eaf8[_0xca26('0x173')](_0xc18d57))['then'](_0x29eaf8[_0xca26('0x14a')](_0xc18d57[_0xca26('0x174')],_0xc18d57[_0xca26('0x16c')],_0xc18d57[_0xca26('0x47')],_0xc18d57))[_0xca26('0x40')](_0x29eaf8['checkIfTimeIntervals'](_0xc18d57[_0xca26('0x4a')],_0xc18d57[_0xca26('0x16c')],_0xc18d57[_0xca26('0x47')],_0xc18d57))[_0xca26('0x40')](_0x29eaf8[_0xca26('0x16a')](_0xc18d57))['catch'](loggerCatchQueueSummary('[syncCampaigns]',_0xc18d57));}else{notSendMessagesCampaign(_0xc18d57);}}}};function getCallerIdRandom(_0x3e550b,_0x2ddb10){var _0x33f64d;var _0x428ae3;var _0x2590dc;if(_0x2ddb10<=0x0){_0x2ddb10=0x1;}_0x33f64d=new RegExp(_0xca26('0x175')+_0x2ddb10+'}$');_0x428ae3=Math[_0xca26('0x176')](0xa,_0x2ddb10-0x1);_0x2590dc=Math[_0xca26('0x176')](0xa,_0x2ddb10)-0x1;return util['format']('%s',_[_0xca26('0x177')](_0x3e550b,_0x33f64d,_['random'](_0x428ae3,_0x2590dc)));}function extractCalleridName(_0x1c8e65){var _0xce5e47=_0x1c8e65['match'](/"(.*?)"/);return _0xce5e47?_0xce5e47[0x1]:_0x1c8e65;}Dialer['prototype'][_0xca26('0x178')]=function(_0x2da006,_0x19e508){var _0x5b0a03=this;var _0xc6c3ea=uuid['v4']();this[_0xca26('0x27')][_0xc6c3ea]=new Action(_0x2da006,_0x19e508,_0xc6c3ea);return new Promise(function(_0xbed2f6,_0x4fb8ef){if(_[_0xca26('0x42')](_0x2da006)&&typeof _0x2da006!=='object'){return _0x4fb8ef(msgResponse(_0xca26('0x179'),'Failure',_0xca26('0x17a')));}if(_[_0xca26('0x42')](_0x19e508[_0xca26('0x17b')])||_0x19e508[_0xca26('0x17b')]===null){return _0x4fb8ef(msgResponse(_0xca26('0x179'),'Failure',_0xca26('0x17c')));}var _0x3c9f83={'XMD-CALLERID':_0x5b0a03[_0xca26('0x27')][_0xc6c3ea][_0xca26('0x17d')](),'XMD-AGI':_0x2da006[_0xca26('0x10b')]?util[_0xca26('0x83')](_0xca26('0x17e'),ipAgi,_0x2da006[_0xca26('0x10b')]):_0xca26('0x17f'),'XMD-AGIAFTER':_0x2da006[_0xca26('0x11f')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x2da006[_0xca26('0x11f')]):_0xca26('0x17f'),'XMD-QUEUE':_0x2da006[_0xca26('0x54')]==='outbound'?util[_0xca26('0x83')](_0xca26('0x180'),_0x2da006[_0xca26('0x47')],_0x2da006[_0xca26('0x181')]||'',_0x2da006[_0xca26('0x113')]?'c':'',_0x2da006['dialQueueTimeout']||0x3):_0xca26('0x17f'),'XMD-CONTACTID':_0x19e508[_0xca26('0xff')],'XMD-CDRTYPE':_0xca26('0x7'),'CALLERID(all)':_0x5b0a03['actions'][_0xc6c3ea][_0xca26('0x17d')](),'XMD-AMD':_0x2da006[_0xca26('0xe5')]?_0xca26('0x182'):_0xca26('0x17f'),'XMD-DESTINATION':_0xca26('0xe4')};if(_0x2da006[_0xca26('0xe5')]){_0x3c9f83['XMD-AMDINITIALSILENCE']=_0x2da006[_0xca26('0x183')]||0x9c4;_0x3c9f83[_0xca26('0x184')]=_0x2da006[_0xca26('0x185')]||0x5dc;_0x3c9f83[_0xca26('0x186')]=_0x2da006[_0xca26('0x187')]||0x320;_0x3c9f83['XMD-AMDTOTALANALYSISTIME']=_0x2da006['dialAMDTotalAnalysisTime']||0x1388;_0x3c9f83['XMD-AMDMINWORDLENGTH']=_0x2da006[_0xca26('0x188')]||0x64;_0x3c9f83[_0xca26('0x189')]=_0x2da006['dialAMDBetweenWordsSilence']||0x32;_0x3c9f83[_0xca26('0x18a')]=_0x2da006['dialAMDMaximumNumberOfWords']||0x3;_0x3c9f83[_0xca26('0x18b')]=_0x2da006['dialAMDSilenceThreshold']||0x100;_0x3c9f83[_0xca26('0x18c')]=_0x2da006[_0xca26('0x18d')]||0x1388;}if(_0x2da006[_0xca26('0x54')]==='outbound'){_0x3c9f83[_0xca26('0x18e')]=_0x19e508['VoiceQueueId'];}else{_0x3c9f83['XMD-CAMPAIGNID']=_0x19e508[_0xca26('0xd8')];}for(var _0x1a8a1e in _0x19e508[_0xca26('0x18f')]){if(typeof _0x19e508[_0xca26('0x18f')][_0x1a8a1e]!=='undefined'){if(isNotNull(_0x19e508[_0xca26('0x18f')][_0x1a8a1e])&&_0x1a8a1e!=='id'&&_0x1a8a1e!==_0xca26('0x190')&&_0x1a8a1e!==_0xca26('0x191')&&_0x1a8a1e!==_0xca26('0x192')){_0x3c9f83[util[_0xca26('0x83')](_0xca26('0x193'),_0xca26('0x194'),_[_0xca26('0x195')](_0x1a8a1e))]=_0x19e508[_0xca26('0x18f')][_0x1a8a1e];}}}var _0x31d53a=_0x5b0a03[_0xca26('0xdc')](_0x2da006['Trunk'])?getCallerId(_0x2da006[_0xca26('0x80')][_0xca26('0x82')],_0x2da006['dialOriginateCallerIdName'],_0x2da006[_0xca26('0x196')]>0x0?getCallerIdRandom(_0x2da006[_0xca26('0x64')],_0x2da006[_0xca26('0x196')]):_0x2da006['dialOriginateCallerIdNumber']):getCallerId(_[_0xca26('0xb4')](_0x2da006[_0xca26('0x197')])?_0x2da006[_0xca26('0x80')][_0xca26('0x82')]:_0x2da006[_0xca26('0x197')][_0xca26('0x82')],_0x2da006[_0xca26('0x63')],_0x2da006[_0xca26('0x196')]>0x0?getCallerIdRandom(_0x2da006[_0xca26('0x64')],_0x2da006[_0xca26('0x196')]):_0x2da006[_0xca26('0x64')]);if(_0x31d53a){_0x3c9f83[_0xca26('0x198')]=_0x5b0a03['actions'][_0xc6c3ea]['originatecalleridname']=extractCalleridName(_0x31d53a);_0x3c9f83['XMD-ORIGINATECALLERIDNUM']=_0x19e508[_0xca26('0x17b')];}_0x2da006['variables']=_0x3c9f83;return ami[_0xca26('0xb5')]({'actionid':_0xc6c3ea,'action':'originate','channel':_0x5b0a03['isTrunkReachable'](_0x2da006['Trunk'])?util[_0xca26('0x83')](_0xca26('0x199'),_0x2da006['Trunk'][_0xca26('0x47')],isNotNull(_0x2da006['dialPrefix'])?_0x2da006[_0xca26('0x66')][_0xca26('0x19a')]()||'':'',_0x2da006['dialCutDigit']>0x0?_0x19e508['phone'][_0xca26('0x19b')](_0x2da006['dialCutDigit']):_0x19e508['phone']):util[_0xca26('0x83')]('SIP/%s/%s%s',_[_0xca26('0xb4')](_0x2da006[_0xca26('0x197')])?_0x2da006['Trunk'][_0xca26('0x47')]:_0x2da006[_0xca26('0x197')]['name'],isNotNull(_0x2da006[_0xca26('0x66')])?_0x2da006['dialPrefix'][_0xca26('0x19a')]()||'':'',_0x2da006[_0xca26('0x19c')]>0x0?_0x19e508[_0xca26('0x17b')][_0xca26('0x19b')](_0x2da006[_0xca26('0x19c')]):_0x19e508[_0xca26('0x17b')]),'callerid':_0x31d53a,'Exten':'xcally-motion-dialer','Context':'from-sip','Priority':'1','variable':_0x3c9f83,'timeout':(_0x2da006[_0xca26('0x65')]||0x1e)*0x3e8,'async':!![],'channelid':_0xc6c3ea})[_0xca26('0x40')](function(_0xd2c556){return _0xbed2f6(_0xd2c556);})[_0xca26('0xb8')](function(_0x322d3e){_0x2da006[_0xca26('0x6f')]+=0x1;var _0x372d19=new History(_0x5b0a03[_0xca26('0x27')][_0xc6c3ea]);logger[_0xca26('0xa1')](util[_0xca26('0x83')](_0xca26('0x19d'),JSON[_0xca26('0x4f')](_0x322d3e)));_0x372d19[_0xca26('0xad')]=0xe;_0x372d19[_0xca26('0xf0')]=_0xca26('0x19e');_0x372d19[_0xca26('0xaf')]=moment()[_0xca26('0x83')](_0xca26('0xfe'));_0x372d19[_0xca26('0xae')]=_0x372d19[_0xca26('0xaf')];_0x5b0a03[_0xca26('0xd0')](_0x372d19)[_0xca26('0xb8')](loggerCatch('[originate][error]'));_0x5b0a03[_0xca26('0xcf')](_0x372d19)['catch'](loggerCatch('[originate][error]'))['finally'](function(){delete _0x5b0a03[_0xca26('0x27')][_0xc6c3ea];return _0x4fb8ef(msgResponse(_0xca26('0x179'),_0xca26('0x4e'),_0xca26('0x19f')));});});});};Dialer['prototype']['syncOriginateResponse']=function(_0x5275a8){var _0x3c5ffa=this[_0xca26('0x27')][_0x5275a8[_0xca26('0x130')]];if(_0x3c5ffa){delete this['actions'][_0x5275a8[_0xca26('0x130')]];_0x3c5ffa[_0xca26('0x11b')]=moment()[_0xca26('0x83')](_0xca26('0xfe'));var _0x3f63db=_0x3c5ffa[_0xca26('0x54')]===_0xca26('0x85')?this[_0xca26('0x23')][_0x3c5ffa[_0xca26('0xba')]]:this[_0xca26('0x22')][_0x3c5ffa[_0xca26('0x1a0')]()];if(!this[_0xca26('0xda')](_0x5275a8[_0xca26('0x1a1')])){this[_0xca26('0xb9')](_0x3f63db);return this[_0xca26('0x1a2')](_0x3c5ffa,_0x3f63db,_0x5275a8)[_0xca26('0xb8')](loggerCatch(_0xca26('0x1a3')));}this['uniqueId'][_0x5275a8[_0xca26('0xe2')]]=_0x3c5ffa;}};Dialer[_0xca26('0xb0')][_0xca26('0x1a4')]=function(_0x18b274,_0xd2ebac,_0x30e3be){var _0x334155=new History(_0xd2ebac);if(_0x334155[_0xca26('0xf4')]+_0x334155[_0xca26('0xf5')]+_0x334155[_0xca26('0xf6')]+_0x334155[_0xca26('0xf7')]+_0x334155[_0xca26('0x104')]+_0x334155[_0xca26('0x105')]+_0x334155[_0xca26('0xf8')]+_0x334155[_0xca26('0x106')]>=_0x30e3be[_0xca26('0xf9')]-0x1){return!![];}switch(_0x18b274){case 0x3:if(_0x334155[_0xca26('0xf6')]>=_0x30e3be[_0xca26('0x1a5')]-0x1){return!![];}this[_0xca26('0xc5')]({'active':![],'countnoanswerretry':_0x334155['countnoanswerretry']+=0x1,'scheduledat':moment()[_0xca26('0xfc')](_0x30e3be[_0xca26('0x1a6')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x334155['ContactId'],'ListId':_0x334155[_0xca26('0xd5')],'VoiceQueueId':_0x334155[_0xca26('0xd7')]||undefined,'CampaignId':_0x334155['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x334155[_0xca26('0xf4')]>=_0x30e3be[_0xca26('0x1a7')]-0x1){return!![];}this[_0xca26('0xc5')]({'active':![],'countbusyretry':_0x334155[_0xca26('0xf4')]+=0x1,'scheduledat':moment()['add'](_0x30e3be['dialBusyRetryFrequency'],_0xca26('0x109'))['format'](_0xca26('0xfe')),'ContactId':_0x334155[_0xca26('0xff')],'ListId':_0x334155['ListId'],'VoiceQueueId':_0x334155[_0xca26('0xd7')]||undefined,'CampaignId':_0x334155[_0xca26('0xd8')]||undefined})['catch'](loggerCatch(_0xca26('0x1a8')));break;case 0x8:if(_0x334155['countcongestionretry']>=_0x30e3be[_0xca26('0x1a9')]-0x1){return!![];}this[_0xca26('0xc5')]({'active':![],'countcongestionretry':_0x334155[_0xca26('0xf5')]+=0x1,'scheduledat':moment()['add'](_0x30e3be[_0xca26('0x1aa')],'minutes')[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x334155['ContactId'],'ListId':_0x334155[_0xca26('0xd5')],'VoiceQueueId':_0x334155[_0xca26('0xd7')]||undefined,'CampaignId':_0x334155[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch(_0xca26('0x1ab')));break;case 0x0:if(_0x334155[_0xca26('0xf7')]>=_0x30e3be[_0xca26('0x1ac')]-0x1){return!![];}else{this[_0xca26('0xc5')]({'active':![],'countnosuchnumberretry':_0x334155[_0xca26('0xf7')]+=0x1,'scheduledat':moment()[_0xca26('0xfc')](_0x30e3be[_0xca26('0x1ad')],'minutes')[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x334155[_0xca26('0xff')],'ListId':_0x334155[_0xca26('0xd5')],'VoiceQueueId':_0x334155['VoiceQueueId']||undefined,'CampaignId':_0x334155[_0xca26('0xd8')]||undefined})['catch'](loggerCatch(_0xca26('0x1ae')));}break;case 0xa:if(_0x334155[_0xca26('0x104')]>=_0x30e3be[_0xca26('0x125')]-0x1){return!![];}this[_0xca26('0xc5')]({'active':![],'countdropretry':_0x334155[_0xca26('0x104')]+=0x1,'scheduledat':moment()[_0xca26('0xfc')](_0x30e3be[_0xca26('0x120')],_0xca26('0x109'))[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x334155[_0xca26('0xff')],'ListId':_0x334155[_0xca26('0xd5')],'VoiceQueueId':_0x334155[_0xca26('0xd7')]||undefined,'CampaignId':_0x334155[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x334155[_0xca26('0x105')]>=_0x30e3be[_0xca26('0x12c')]-0x1){return!![];}this[_0xca26('0xc5')]({'active':![],'countabandonedretry':_0x334155['countabandonedretry']+=0x1,'scheduledat':moment()[_0xca26('0xfc')](_0x30e3be['dialAbandonedRetryFrequency'],_0xca26('0x109'))[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x334155[_0xca26('0xff')],'ListId':_0x334155[_0xca26('0xd5')],'VoiceQueueId':_0x334155[_0xca26('0xd7')]||undefined,'CampaignId':_0x334155[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch(_0xca26('0x12e')));break;case 0x13:if(_0x334155[_0xca26('0xf8')]>=_0x30e3be[_0xca26('0x107')]-0x1){return!![];}this[_0xca26('0xc5')]({'active':![],'countmachineretry':_0x334155[_0xca26('0xf8')]+=0x1,'scheduledat':moment()['add'](_0x30e3be[_0xca26('0xfd')],_0xca26('0x109'))[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x334155['ContactId'],'ListId':_0x334155[_0xca26('0xd5')],'VoiceQueueId':_0x334155[_0xca26('0xd7')]||undefined,'CampaignId':_0x334155[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x334155[_0xca26('0x106')]>=_0x30e3be[_0xca26('0x1af')]-0x1){return!![];}this[_0xca26('0xc5')]({'active':![],'countagentrejectretry':_0x334155[_0xca26('0x106')]+=0x1,'scheduledat':moment()[_0xca26('0xfc')](_0x30e3be['dialAgentRejectRetryFrequency'],_0xca26('0x109'))[_0xca26('0x83')](_0xca26('0xfe')),'ContactId':_0x334155[_0xca26('0xff')],'ListId':_0x334155[_0xca26('0xd5')],'VoiceQueueId':_0x334155['VoiceQueueId']||undefined,'CampaignId':_0x334155[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0xca26('0xb0')][_0xca26('0x1a2')]=function(_0x480969,_0x492d86,_0x5db069){var _0x46ae85=this;var _0x1915db=new History(_0x480969);var _0x2bea40=![];var _0x1a7678;var _0x6696d7;return new Promise(function(_0x5b9dff,_0x4116e0){if(_[_0xca26('0x42')](_0x492d86)&&typeof _0x492d86!==_0xca26('0x1b0')){return _0x4116e0(msgResponse(_0xca26('0x1b1'),_0xca26('0x14e'),_0xca26('0x1b2')));}if(_['isUndefined'](_0x5db069)&&typeof _0x5db069!==_0xca26('0x1b0')){return _0x4116e0(msgResponse(_0xca26('0x1b1'),_0xca26('0x14e'),_0xca26('0x1b3')));}_0x46ae85['verifyAdditionalPhones'](_0x1915db,_0x5db069[_0xca26('0x110')],_0x492d86)[_0xca26('0x40')](function(_0x38aac4){if(_0x38aac4[_0xca26('0x124')]==0x1)_0x2bea40=!![];switch(_0x5db069[_0xca26('0x110')]){case'0':_0x492d86[_0xca26('0x6e')]+=0x1;_0x1915db[_0xca26('0xad')]=0x0;_0x1915db[_0xca26('0xf0')]='NoSuchNumber';_0x1915db[_0xca26('0xf7')]+=0x1;_0x1915db[_0xca26('0xf1')]+=0x1;ami['emit']('custom:agentnosuchnumber',ut['buildObj'](_0x480969,_0xca26('0x1b4')));_0x1a7678=_0x492d86['dialNoSuchNumberRetryFrequency'];_0x6696d7=_0x492d86[_0xca26('0x121')];_0x46ae85['createHistory'](_0x1915db)[_0xca26('0xb8')](loggerCatch(_0xca26('0xf3')));if(_0x46ae85[_0xca26('0x1a4')](0x0,_0x480969,_0x492d86)&&!_0x2bea40){if(_0x1915db[_0xca26('0xf7')]>=_0x492d86[_0xca26('0x1ac')]){_0x46ae85[_0xca26('0xfb')](_0x1915db,_0x5b9dff,_0x4116e0,_0xca26('0x1b5'));}else{_0x46ae85[_0xca26('0x1b6')](_0x1915db,_0x5b9dff,_0x4116e0,_0xca26('0x1b5'));}}break;case'3':_0x492d86[_0xca26('0x6d')]+=0x1;_0x1915db[_0xca26('0xad')]=0x3;_0x1915db[_0xca26('0xf0')]=_0xca26('0x1b7');_0x1915db[_0xca26('0xf6')]+=0x1;_0x1915db[_0xca26('0xf1')]+=0x1;var _0x4cb983=ut['buildNoAnswerEventPayload'](_0x480969,_0x492d86);ami[_0xca26('0x53')](_0xca26('0x1b8'),_0x4cb983);_0x1a7678=_0x492d86['dialNoAnswerRetryFrequency'];_0x6696d7=_0x492d86[_0xca26('0x121')];_0x46ae85['createHistory'](_0x1915db)[_0xca26('0xb8')](loggerCatch(_0xca26('0x1b9')));if(_0x46ae85[_0xca26('0x1a4')](0x3,_0x480969,_0x492d86)&&!_0x2bea40){if(_0x1915db[_0xca26('0xf6')]>=_0x492d86[_0xca26('0x1a5')]){_0x46ae85[_0xca26('0xfb')](_0x1915db,_0x5b9dff,_0x4116e0,'reason\x203\x20ringing\x20no\x20answer');}else{_0x46ae85['stateGlobal'](_0x1915db,_0x5b9dff,_0x4116e0,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x492d86[_0xca26('0x69')]+=0x1;_0x1915db['state']=0x5;_0x1915db['statedesc']=_0xca26('0x1ba');_0x1915db[_0xca26('0xf4')]+=0x1;_0x1915db[_0xca26('0xf1')]+=0x1;ami[_0xca26('0x53')](_0xca26('0x1bb'),ut[_0xca26('0xf2')](_0x480969,'busy'));_0x1a7678=_0x492d86[_0xca26('0x1bc')];_0x6696d7=_0x492d86[_0xca26('0x121')];_0x46ae85['createHistory'](_0x1915db)['catch'](loggerCatch(_0xca26('0x1bd')));if(_0x46ae85['checkRetriveMax'](0x5,_0x480969,_0x492d86)&&!_0x2bea40){if(_0x1915db[_0xca26('0xf4')]>=_0x492d86['dialBusyMaxRetry']){_0x46ae85[_0xca26('0xfb')](_0x1915db,_0x5b9dff,_0x4116e0,'reason\x205\x20busy');}else{_0x46ae85[_0xca26('0x1b6')](_0x1915db,_0x5b9dff,_0x4116e0,'reason\x205\x20busy');}}break;case'8':_0x492d86[_0xca26('0x6a')]+=0x1;_0x1915db[_0xca26('0xad')]=0x8;_0x1915db['statedesc']=_0xca26('0x1be');_0x1915db[_0xca26('0xf5')]+=0x1;_0x1915db[_0xca26('0xf1')]+=0x1;_0x1a7678=_0x492d86[_0xca26('0x1aa')];_0x6696d7=_0x492d86['callAdditionalPhoneAfterMin'];ami['emit'](_0xca26('0x1bf'),ut[_0xca26('0xf2')](_0x480969,_0xca26('0x1c0')));_0x46ae85['createHistory'](_0x1915db)[_0xca26('0xb8')](loggerCatch(_0xca26('0x1c1')));if(_0x46ae85[_0xca26('0x1a4')](0x8,_0x480969,_0x492d86)&&!_0x2bea40){if(_0x1915db[_0xca26('0xf5')]>=_0x492d86['dialCongestionMaxRetry']){_0x46ae85[_0xca26('0xfb')](_0x1915db,_0x5b9dff,_0x4116e0,'reason\x208\x20congestion');}else{_0x46ae85[_0xca26('0x1b6')](_0x1915db,_0x5b9dff,_0x4116e0,_0xca26('0x1c2'));}}break;case'11':_0x492d86['outboundAbandonedCallsDay']+=0x1;_0x1915db[_0xca26('0xad')]=0xb;_0x1915db[_0xca26('0xf0')]='Abandoned';_0x1915db[_0xca26('0x105')]+=0x1;_0x1915db['countglobal']+=0x1;_0x1a7678=_0x492d86['dialAbandonedRetryFrequency'];_0x6696d7=_0x492d86[_0xca26('0x121')];_0x46ae85[_0xca26('0xd0')](_0x1915db)[_0xca26('0xb8')](loggerCatch(_0xca26('0x12f')));if(_0x46ae85[_0xca26('0x1a4')](0xb,_0x480969,_0x492d86)&&!_0x2bea40){if(_0x1915db[_0xca26('0x105')]>=_0x492d86['dialAbandonedMaxRetry']){_0x46ae85[_0xca26('0xfb')](_0x1915db,_0x5b9dff,_0x4116e0,_0xca26('0x1c3'));}else{_0x46ae85[_0xca26('0x1b6')](_0x1915db,_0x5b9dff,_0x4116e0,_0xca26('0x1c3'));}}break;case'20':_0x492d86['outboundRejectCallsDay']+=0x1;_0x1915db['state']=0x14;_0x1915db[_0xca26('0xf0')]='AgentReject';_0x1915db['countagentrejectretry']+=0x1;_0x1915db['countglobal']+=0x1;_0x1a7678=_0x492d86[_0xca26('0x1c4')];_0x6696d7=_0x492d86[_0xca26('0x121')];ami[_0xca26('0x53')](_0xca26('0x1c5'),ut[_0xca26('0xf2')](_0x480969,'agentreject'));_0x46ae85['createHistory'](_0x1915db)['catch'](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x46ae85[_0xca26('0x1a4')](0x14,_0x480969,_0x492d86)&&!_0x2bea40){if(_0x1915db[_0xca26('0x106')]>=_0x492d86[_0xca26('0x1af')]){_0x46ae85['createStateFinal'](_0x1915db,_0x5b9dff,_0x4116e0,'reason\x2020\x20agentreject');}else{_0x46ae85[_0xca26('0x1b6')](_0x1915db,_0x5b9dff,_0x4116e0,_0xca26('0x1c6'));}}break;default:_0x492d86[_0xca26('0x72')]+=0x1;_0x1915db[_0xca26('0xad')]=0xc;_0x1915db[_0xca26('0xf0')]=_0x5db069[_0xca26('0x110')];_0x1a7678=_0x492d86[_0xca26('0x1c4')];_0x6696d7=_0x492d86[_0xca26('0x121')];_0x46ae85[_0xca26('0xd0')](_0x1915db)[_0xca26('0xb8')](loggerCatch(_0xca26('0x1c7')));if(_0x46ae85[_0xca26('0x1a4')](_0x5db069['reason'],_0x480969,_0x492d86)&&!_0x2bea40){if(_0x1915db['countbusyretry']+_0x1915db[_0xca26('0xf5')]+_0x1915db[_0xca26('0xf6')]+_0x1915db['countnosuchnumberretry']+_0x1915db[_0xca26('0x104')]+_0x1915db[_0xca26('0x105')]+_0x1915db[_0xca26('0xf8')]+_0x1915db['countagentrejectretry']>=_0x492d86[_0xca26('0xf9')]){_0x46ae85[_0xca26('0x1b6')](_0x1915db,_0x5b9dff,_0x4116e0,_0x5db069[_0xca26('0x110')]);}else{_0x46ae85[_0xca26('0xfb')](_0x1915db,_0x5b9dff,_0x4116e0,_0x5db069[_0xca26('0x110')]);}}}})[_0xca26('0x40')](function(){if(_0x2bea40){_0x46ae85[_0xca26('0xc0')](_0x1915db,_0x1a7678,_0x6696d7)[_0xca26('0x40')](function(){return _0x5b9dff(0x1);});}});});};Dialer[_0xca26('0xb0')][_0xca26('0x1b6')]=function(_0x358832,_0x4f3b97,_0x402c20,_0x413ff4){var _0x4765b0=new Final(_0x358832);_0x4765b0[_0xca26('0xad')]=0xf;_0x4765b0['statedesc']=_0xca26('0x1c8');this[_0xca26('0xfb')](_0x4765b0,_0x4f3b97,_0x402c20,_0x413ff4);};Dialer[_0xca26('0xb0')]['createStateFinal']=function(_0x5881b6,_0x167c8d,_0x430165,_0x1106eb){this[_0xca26('0xcf')](_0x5881b6)[_0xca26('0x40')](function(){return _0x167c8d(msgResponse(_0xca26('0x1b1'),'Success',_0x1106eb));})[_0xca26('0xb8')](function(){return _0x430165(msgResponse(_0xca26('0x1c9'),'Failure',_0xca26('0x1ca')));});};Dialer['prototype'][_0xca26('0x9')]=function(_0x54051b){var _0x3a84f7=_0x54051b['dialPredictiveOptimizationPercentage']/0x64;var _0x4a3575=_0x54051b['outboundDropCallsDayTimeout']/(_0x54051b[_0xca26('0x1cb')]+_0x54051b['outboundAnswerCallsDay']);var _0x18b0e8=Math[_0xca26('0x1cc')](_0x54051b[_0xca26('0x1cd')]*(_0x54051b[_0xca26('0x1ce')]/0x64));var _0x179658=Math['round'](_0x54051b['predictiveIntervalAvailable']*(_0x54051b[_0xca26('0x1cf')]/0x64));var _0x1eacd0=_0x54051b[_0xca26('0x1d0')]+_0x54051b['talking'];var _0x19a4e6=Math[_0xca26('0x1d1')](_0x54051b['erlangCalls']*_0x54051b['erlangAbandonmentRate']*_0x54051b[_0xca26('0x78')]*_0x54051b[_0xca26('0x79')]);if(_[_0xca26('0x42')](_0x54051b[_0xca26('0x2c')])){if(!_[_0xca26('0x42')](_0x54051b[_0xca26('0x2b')])){_0x54051b[_0xca26('0x2b')]=undefined;loggerPredictive[_0xca26('0xa1')](_0xca26('0x1d2'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0xca26('0x42')](_0x54051b[_0xca26('0x9a')])){loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0xca26('0x1d3'));clearInterval(_0x54051b[_0xca26('0x9a')]);_0x54051b['handlePredictive']=undefined;}_0x54051b['startProgressive']=moment()[_0xca26('0x83')](_0xca26('0xfe'));loggerPredictive[_0xca26('0x89')](_0x54051b[_0xca26('0x47')],_0xca26('0x1d4'),_0x54051b[_0xca26('0x2c')]);this[_0xca26('0x162')](_0x54051b,0x1);}else if(ifInterval(_0x54051b[_0xca26('0x1d5')],_0x54051b[_0xca26('0x2c')])){this[_0xca26('0x162')](_0x54051b,0x1);loggerPredictiveCalls[_0xca26('0x89')](_0xca26('0x1d6'),_0x54051b['startProgressive'],_0x54051b[_0xca26('0x47')]);_0x54051b[_0xca26('0x7d')]=0x0;_0x54051b['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x3a84f7<_0x4a3575&&_0x54051b[_0xca26('0x1d7')]===_0xca26('0x1d8')){freeVariablesPredictive(_0x54051b);loggerPredictive[_0xca26('0x89')](_0xca26('0x1d9'),_0xca26('0x1da'),_0x4a3575,_0xca26('0x2c'),_0x54051b[_0xca26('0x47')]);}else if(_0x19a4e6<_0x54051b['predictiveIntervalErlangCallsDroppedCalls']&&_0x54051b['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x54051b);loggerPredictive[_0xca26('0x89')](_0xca26('0x1db'),'Max\x20Drop\x20',_0x19a4e6,_0xca26('0x1dc'),_0x54051b[_0xca26('0x1dd')],_0xca26('0x2c'),_0x54051b[_0xca26('0x47')]);}else if(!ifInterval(_0x54051b[_0xca26('0x1d5')],_0x54051b[_0xca26('0x2c')])&&_[_0xca26('0x42')](_0x54051b[_0xca26('0x2b')])&&!_['isUndefined'](_0x54051b['startProgressive'])){_0x54051b[_0xca26('0x2b')]=moment()[_0xca26('0x83')](_0xca26('0xfe'));loggerPredictive[_0xca26('0x89')](_0x54051b['name'],_0xca26('0x1de'),_0x54051b[_0xca26('0x2b')]);this['averageHandleTime'](_0x54051b[_0xca26('0x1d5')])['then'](this[_0xca26('0x1df')](_0x54051b))[_0xca26('0x40')](mergeDataErlangB(_0x54051b))[_0xca26('0x40')](this[_0xca26('0x1e0')](_0x54051b))[_0xca26('0xb8')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x54051b));}else if(!ifInterval(_0x54051b['dialPredictiveInterval'],_0x54051b[_0xca26('0x2b')])){_0x54051b['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x54051b[_0xca26('0x2b')]=moment()[_0xca26('0x83')](_0xca26('0xfe'));loggerPredictive[_0xca26('0x89')](_0x54051b[_0xca26('0x47')],_0xca26('0x1e1'),_0x54051b[_0xca26('0x2b')]);clearInterval(_0x54051b[_0xca26('0x9a')]);_0x54051b[_0xca26('0x9a')]=undefined;this['averageHandleTime'](_0x54051b[_0xca26('0x1d5')])['then'](this[_0xca26('0x1df')](_0x54051b))[_0xca26('0x40')](mergeDataErlangB(_0x54051b))[_0xca26('0x40')](this['startMethodPredictive'](_0x54051b))['catch'](loggerCatchPredictive(_0xca26('0x1e2'),_0x54051b));}else if(_0x54051b['predictiveIntervalAvailable']&&_0x1eacd0<_0x54051b[_0xca26('0x1cd')]-_0x179658){freeVariablesPredictive(_0x54051b);loggerPredictive[_0xca26('0x89')](_0x54051b[_0xca26('0x47')],_0xca26('0x1e3'),_0x1eacd0,')\x20are\x20less\x20than\x20threshold\x20(',_0x54051b[_0xca26('0x1cd')],'-',_0x179658,'=',_0x54051b[_0xca26('0x1cd')]-_0x179658,')');}else if(_0x54051b[_0xca26('0x1cd')]&&_0x1eacd0>_0x54051b[_0xca26('0x1cd')]+_0x18b0e8){freeVariablesPredictive(_0x54051b);loggerPredictive[_0xca26('0x89')](_0x54051b[_0xca26('0x47')],_0xca26('0x1e3'),_0x1eacd0,_0xca26('0x1e4'),_0x54051b[_0xca26('0x1cd')],'+',_0x18b0e8,'=',_0x54051b[_0xca26('0x1cd')]+_0x18b0e8,')');}};Dialer[_0xca26('0xb0')][_0xca26('0x1df')]=function(_0x5dfaf){var _0x1e5d53=this;return function(_0x50d9fd){return new Promise(function(_0x53011c,_0x430a34){_[_0xca26('0x98')](_0x5dfaf,_0x50d9fd[0x0]);if(checkGetDataPredictive(_0x50d9fd[0x0])){var _0x2bfa2b=_0x5dfaf['predictiveIntervalAvailable']=_0x5dfaf[_0xca26('0x5b')]+_0x5dfaf[_0xca26('0x1d0')];var _0x4ca7f8=_0x5dfaf[_0xca26('0x1d5')]*0x3c;var _0x39d458=_0x50d9fd[0x0][_0xca26('0x90')]+_0x50d9fd[0x0][_0xca26('0x74')];var _0x2d586b=(_0x50d9fd[0x0][_0xca26('0x73')]+_0x50d9fd[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x50d9fd[0x0][_0xca26('0x75')])/_0x50d9fd[0x0][_0xca26('0x7b')];_0x5dfaf[_0xca26('0x78')]=_0x2d586b>0x0?_0x2d586b:0x1;switch(_0x5dfaf['dialPredictiveOptimization']){case _0xca26('0x1d8'):var _0x2f2ac3=_0x5dfaf[_0xca26('0x1e5')]/0x64;return _0x1e5d53[_0xca26('0x1e6')](_0x2bfa2b,_0x4ca7f8,_0x39d458,_0x2d586b,_0x2f2ac3)[_0xca26('0x40')](function(_0x36273d){return _0x53011c(_0x36273d);});case'agentBusyFactor':var _0x33a9a3=_0x5dfaf['dialPredictiveOptimizationPercentage']/0x64;return _0x1e5d53[_0xca26('0x1e7')](_0x2bfa2b,_0x4ca7f8,_0x39d458,_0x2d586b,_0x33a9a3)[_0xca26('0x40')](function(_0x58b1a5){return _0x53011c(_0x58b1a5);});default:return _0x430a34(msgResponse(_0xca26('0x1e8'),_0xca26('0x14e'),_0xca26('0x1e9')));}}else{return _0x430a34(msgResponse(_0xca26('0x1e8'),_0xca26('0x14e'),_0xca26('0x1ea')));}});};};Dialer[_0xca26('0xb0')][_0xca26('0x1eb')]=function(_0x467c84){var _0x165f10=this;return function(_0x3697c9){return new Promise(function(_0x3f1f24,_0x49e704){_[_0xca26('0x98')](_0x467c84,_0x3697c9[0x0]);if(checkGetDataPredictive(_0x3697c9[0x0])){loggerPredictive['info'](JSON[_0xca26('0x4f')](_0x3697c9[0x0]));if(_0x467c84[_0xca26('0x1d7')]===_0xca26('0x1d8')){return _0x165f10[_0xca26('0xcd')](_0x467c84['id'])[_0xca26('0x40')](function(_0x242274){var _0x564260=_0x467c84[_0xca26('0x57')]-_0x242274[0x0]['outboundQueuePauses'];var _0x9d982c=_0x467c84['dialPredictiveInterval']*0x3c;var _0x569e5c=_0x3697c9[0x0][_0xca26('0x90')]+_0x3697c9[0x0][_0xca26('0x74')];var _0x290567=(_0x3697c9[0x0][_0xca26('0x73')]+_0x3697c9[0x0][_0xca26('0x76')]+_0x3697c9[0x0][_0xca26('0x75')])/_0x3697c9[0x0]['predictiveIntervalTotalCalls'];var _0x288b2b=_0x467c84[_0xca26('0x1e5')]/0x64;_0x467c84['predictiveIntervalPauses']=_0x242274[0x0][_0xca26('0x1ec')]||0x0;_0x467c84['predictiveIntervalHitRate']=_0x290567>0x0?_0x290567:0x1;return _0x165f10[_0xca26('0x1e6')](_0x564260,_0x9d982c,_0x569e5c,_0x290567,_0x288b2b);})['then'](function(_0x5c09fb){return _0x3f1f24(_0x5c09fb);})[_0xca26('0xb8')](function(_0xa5ee8b){return _0x49e704(msgResponse('[CatchErlangB]','Failure',JSON['stringify'](_0xa5ee8b)));});}if(_0x467c84[_0xca26('0x1d7')]==='agentBusyFactor'){return _0x165f10['getVoiceQueueRtPauses'](_0x467c84['id'])[_0xca26('0x40')](function(_0x575733){var _0x1f2cbe=_0x467c84[_0xca26('0x57')]-_0x575733[0x0][_0xca26('0x1ec')];var _0x492796=_0x467c84[_0xca26('0x1d5')]*0x3c;var _0x159d11=_0x3697c9[0x0][_0xca26('0x90')]+_0x3697c9[0x0][_0xca26('0x74')];var _0x1e265c=(_0x3697c9[0x0][_0xca26('0x73')]+_0x3697c9[0x0][_0xca26('0x76')]+_0x3697c9[0x0][_0xca26('0x75')])/_0x3697c9[0x0][_0xca26('0x7b')];var _0x4c40cc=_0x467c84[_0xca26('0x1e5')]/0x64;_0x467c84['predictiveIntervalPauses']=_0x575733[0x0][_0xca26('0x1ec')]||0x0;_0x467c84[_0xca26('0x78')]=_0x1e265c>0x0?_0x1e265c:0x1;return _0x165f10['busyFactor'](_0x1f2cbe,_0x492796,_0x159d11,_0x1e265c,_0x4c40cc);})['then'](function(_0x79d614){return _0x3f1f24(_0x79d614);})['catch'](function(_0x4b68db){return _0x49e704(msgResponse('[CatchErlangB]','Failure',JSON[_0xca26('0x4f')](_0x4b68db)));});}}else{return _0x49e704(msgResponse(_0xca26('0x1e8'),'Failure',_0xca26('0x1ea')));}});};};Dialer[_0xca26('0xb0')][_0xca26('0x1e0')]=function(_0x233dba){var _0x127194=this;return function(){var _0x37fd0d=0x0;var _0x55b71b=Math['floor'](_0x233dba['erlangCallToSecond']*0x3e8);if(_0x55b71b>0x0){_0x55b71b=_0x55b71b<0x64?0x64:_0x55b71b;loggerPredictive[_0xca26('0x89')](_0x233dba['name'],_0xca26('0x1ed'),_0x55b71b,_0xca26('0x50'));_0x233dba[_0xca26('0x9a')]=setInterval(function(){_0x127194[_0xca26('0x9a')](_0x233dba);loggerPredictiveCalls[_0xca26('0x89')]('[handlePredictive]',_0x37fd0d+=0x1);},_0x55b71b);}else{loggerPredictive[_0xca26('0x89')](_0x233dba[_0xca26('0x47')],_0xca26('0x1ee'));}};};Dialer['prototype'][_0xca26('0x1ef')]=function(_0x40212c,_0x16b6a0){var _0x4d0136=this;return function(_0x4e472a){if(_[_0xca26('0x88')](_0x4e472a)){if(_[_0xca26('0xb4')](_0x16b6a0[_0xca26('0xd6')])||!_0x16b6a0[_0xca26('0x1f0')]){if(_0x40212c[_0xca26('0x62')]==='booked'){_0x40212c[_0xca26('0x139')]=_[_0xca26('0x42')](_0x40212c[_0xca26('0x139')])?!![]:_0x40212c['queueStatusComplete'];var _0x1c1530=uuid['v4']();_0x4d0136[_0xca26('0x27')][_0x1c1530]=new Action(_0x40212c,_0x16b6a0,_0x1c1530);loggerBooked['info']('[booked][checkContactBlack]',_0x1c1530,_0xca26('0x1f1'),JSON[_0xca26('0x4f')](_0x40212c[_0xca26('0x139')]),_0xca26('0x1f2'),_0x40212c[_0xca26('0x47')]);if(_0x40212c[_0xca26('0x139')]){_0x40212c[_0xca26('0x139')]=![];_0x4d0136[_0xca26('0x2d')][_0x4d0136[_0xca26('0x27')][_0x1c1530][_0xca26('0xba')]]=[];ami[_0xca26('0xb5')]({'actionid':_0x1c1530,'action':_0xca26('0x1f3'),'queue':_0x40212c[_0xca26('0x47')]})[_0xca26('0xb8')](function(){_0x4d0136[_0xca26('0xb9')](_0x40212c);_0x4d0136[_0xca26('0xc5')]({'active':![],'ContactId':_0x4d0136['actions'][_0x1c1530][_0xca26('0xff')],'ListId':_0x4d0136[_0xca26('0x27')][_0x1c1530]['ListId'],'VoiceQueueId':_0x4d0136[_0xca26('0x27')][_0x1c1530]['VoiceQueueId']||undefined,'CampaignId':_0x4d0136[_0xca26('0x27')][_0x1c1530][_0xca26('0xd8')]||undefined})['catch'](loggerCatch(_0xca26('0x1f4')));delete _0x4d0136['actions'][_0x1c1530];});}else{loggerBooked[_0xca26('0x89')]('[booked][checkContactBlack][else]',JSON[_0xca26('0x4f')](_0x40212c[_0xca26('0x139')]),_0xca26('0x1f2'),_0x40212c[_0xca26('0x47')]);_0x4d0136['updateOriginated'](_0x40212c);_0x4d0136[_0xca26('0xc5')]({'active':![],'ContactId':_0x4d0136[_0xca26('0x27')][_0x1c1530][_0xca26('0xff')],'ListId':_0x4d0136['actions'][_0x1c1530][_0xca26('0xd5')],'VoiceQueueId':_0x4d0136[_0xca26('0x27')][_0x1c1530][_0xca26('0xd7')]||undefined,'CampaignId':_0x4d0136[_0xca26('0x27')][_0x1c1530][_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch(_0xca26('0x1f4')));delete _0x4d0136['actions'][_0x1c1530];}}else{return _0x4d0136[_0xca26('0x178')](_0x40212c,_0x16b6a0);}}else{if(getDiff(_0x16b6a0[_0xca26('0x1f5')])<_0x40212c[_0xca26('0x1f6')]*0x3c){if(_0x16b6a0['Agent']&&!_0x16b6a0['Agent'][_0xca26('0x1f7')]){_0x4d0136['preview']['run'](_0x16b6a0['id'])[_0xca26('0x20')](function(){_0x4d0136[_0xca26('0xb9')](_0x40212c);});}else{_0x4d0136[_0xca26('0xc6')]({'active':![]},_0x16b6a0['id'],0x1)[_0xca26('0x20')](function(){_0x4d0136[_0xca26('0xb9')](_0x40212c);});}}else{_0x40212c[_0xca26('0x70')]+=0x1;_0x4d0136[_0xca26('0xb9')](_0x40212c);if(_0x40212c[_0xca26('0x1f8')]){_0x4d0136['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x16b6a0[_0xca26('0xff')],'ListId':_0x16b6a0[_0xca26('0xd5')],'VoiceQueueId':_0x16b6a0[_0xca26('0xd7')]||undefined,'CampaignId':_0x16b6a0[_0xca26('0xd8')]||undefined})[_0xca26('0xb8')](loggerCatch(_0xca26('0x1f9')));_0x4d0136['createHistory'](createObjHistory(_0x40212c,_0x16b6a0,'RECALLINQUEUE',0x17,_0xca26('0x1fa')))[_0xca26('0xb8')](loggerCatch(_0xca26('0x1fb')));}else{_0x4d0136[_0xca26('0xd4')](createObjHistory(_0x40212c,_0x16b6a0,_0xca26('0x1fc'),0x16,_0xca26('0x1fd')),'[Originate][HistoryRecallClose][historyCatch]',_0xca26('0x1fe'));}}}}else{_0x40212c[_0xca26('0x1ff')]+=0x1;_0x4d0136['saveInDb'](createObjHistory(_0x40212c,_0x16b6a0,_0xca26('0x200'),0xd,_0xca26('0x201')),_0xca26('0x202'),_0xca26('0x203'));throw _0xca26('0x204');}};};Dialer['prototype'][_0xca26('0x16b')]=function(_0x26eed4){var _0x3677d9=this;var _0x180cb2=_0x26eed4[_0xca26('0x205')]-_0x26eed4['originated']-_0x26eed4[_0xca26('0xc9')];emitCampaignSummary(_0x26eed4);if(_0x180cb2>0x0){if(_0x180cb2>this[_0xca26('0x25')]){_0x180cb2=this[_0xca26('0x25')];}_0x26eed4['temp']+=_0x180cb2;this[_0xca26('0xcb')](_0x26eed4['id'],_0x180cb2,_0x26eed4[_0xca26('0x206')],_0x26eed4)['then'](function(_0xa353cf){_0x26eed4[_0xca26('0xc9')]-=_0x180cb2;_0x26eed4['temp']=_0x26eed4[_0xca26('0xc9')]>0x0?_0x26eed4[_0xca26('0xc9')]:0x0;if(!checkContactEmpty(_0xa353cf)){_0x26eed4[_0xca26('0x43')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xca26('0x89')]('[getContactCampaign2][Empty]'+_0x26eed4[_0xca26('0x47')]);}else{_0x26eed4['originated']+=_0xa353cf[_0xca26('0xa2')];_0x26eed4['message']=_0xca26('0x207');for(var _0x41d646=0x0;_0x41d646<_0xa353cf[_0xca26('0xa2')];_0x41d646+=0x1){_0x26eed4[_0xca26('0x208')]+=0x1;if(_['isNil'](_0xa353cf[_0x41d646])||_[_0xca26('0xb4')](_0xa353cf[_0x41d646][_0xca26('0x18f')])||_['isNil'](_0xa353cf[_0x41d646][_0xca26('0x17b')])){_0x3677d9[_0xca26('0x209')](_0xca26('0x20a'),_0x26eed4,_0xa353cf[_0x41d646]);}else{_0x3677d9['checkIsBlackListIvr'](_[_0xca26('0x135')](_0xa353cf[_0x41d646],[_0xca26('0xd8'),'phone']))['then'](_0x3677d9['checkContactBlack'](_0x26eed4,_0xa353cf[_0x41d646]))[_0xca26('0xb8')](_0x3677d9[_0xca26('0x20b')](_0xca26('0x20c'),_0x26eed4));}}}})[_0xca26('0xb8')](loggerGetContactDialer('[getContactCampaign2]',_0x26eed4,_0x180cb2));}};Dialer[_0xca26('0xb0')]['handlePower']=function(_0x145a1e,_0x475801){var _0x132779=this;var _0x525abf=[];var _0x4cb86d=_0x475801>=0x1?_0x475801:0x1;if(_0x145a1e[_0xca26('0x62')]==='booked'){_0x4cb86d=0x1;}var _0x2a250d=Math[_0xca26('0x1d1')](_0x145a1e[_0xca26('0x1d0')]*_0x4cb86d)-_0x145a1e[_0xca26('0x7c')]-_0x145a1e[_0xca26('0xc9')];emitVoiceQueueSummary(_0x145a1e);if(_0x145a1e['dialLimitQueue']>0x0){var _0x2ecba4=_0x145a1e[_0xca26('0x20d')]-_0x145a1e[_0xca26('0x7c')]-_0x145a1e['talking']-_0x145a1e[_0xca26('0xc9')]-_0x145a1e[_0xca26('0xa8')];if(_0x2a250d>_0x2ecba4){_0x2a250d=_0x2ecba4;}}if(_0x2a250d>0x0){if(_0x145a1e[_0xca26('0x62')]===_0xca26('0x8')){_0x2a250d=0x1;}if(_0x2a250d>this['maxNumberOriginate']){_0x2a250d=this[_0xca26('0x25')];}_0x145a1e[_0xca26('0xc9')]+=_0x2a250d;for(var _0x285651 in this[_0xca26('0x24')]){if(typeof this[_0xca26('0x24')][_0x285651]!=='undefined'){if(this[_0xca26('0x24')][_0x285651][_0xca26('0xad')]===_0xca26('0x20e')&&this['agents'][_0x285651]['status']===_0xca26('0xde')){_0x525abf[_0xca26('0x153')](this[_0xca26('0x24')][_0x285651]['id']);}}}this[_0xca26('0xc8')](_0x145a1e['id'],_0x525abf,_0x2a250d,_0x145a1e[_0xca26('0x206')],_0x145a1e)[_0xca26('0x40')](function(_0x3d089c){_0x145a1e[_0xca26('0xc9')]-=_0x2a250d;_0x145a1e[_0xca26('0xc9')]=_0x145a1e['temp']>0x0?_0x145a1e['temp']:0x0;if(!checkContactEmpty(_0x3d089c)){_0x132779[_0xca26('0xbc')](_0x145a1e)[_0xca26('0x40')](sendMessageReschedule(_0x145a1e))[_0xca26('0xb8')](loggerCatch(_0xca26('0xbe')));}else{_0x145a1e[_0xca26('0x7c')]+=_0x3d089c[_0xca26('0xa2')];_0x145a1e['message']=_0x145a1e['dialMethod']===_0xca26('0x8')?_0xca26('0x182'):'RUNNING';for(var _0x137ee2=0x0;_0x137ee2<_0x3d089c[_0xca26('0xa2')];_0x137ee2+=0x1){if(_[_0xca26('0xb4')](_0x3d089c[_0x137ee2])||_[_0xca26('0xb4')](_0x3d089c[_0x137ee2]['Contact'])||_[_0xca26('0xb4')](_0x3d089c[_0x137ee2][_0xca26('0x17b')])){_0x132779['emptyContact'](_0xca26('0x20a'),_0x145a1e,_0x3d089c[_0x137ee2]);}else{_0x132779[_0xca26('0xbf')](_['pick'](_0x3d089c[_0x137ee2],[_0xca26('0xd7'),_0xca26('0x17b')]))[_0xca26('0x40')](_0x132779['checkContactBlack'](_0x145a1e,_0x3d089c[_0x137ee2]))[_0xca26('0xb8')](_0x132779[_0xca26('0x20b')](_0xca26('0x20a'),_0x145a1e));}}}})[_0xca26('0xb8')](loggerGetContactDialer(_0xca26('0x20f'),_0x145a1e,_0x2a250d));}};Dialer[_0xca26('0xb0')][_0xca26('0x9a')]=function(_0x1c0091){if(_0x1c0091['dialLimitQueue']>0x0){var _0x25a30a=_0x1c0091[_0xca26('0x20d')]-_0x1c0091[_0xca26('0x7c')]-_0x1c0091[_0xca26('0x5b')];if(_0x25a30a>0x0){this[_0xca26('0x210')](_0x1c0091);}else{loggerPredictiveCalls[_0xca26('0x89')](_0xca26('0x211'));}}else{this[_0xca26('0x210')](_0x1c0091);}};Dialer['prototype'][_0xca26('0x210')]=function(_0x11eb03){var _0x3d588b=this;var _0xdf288d=[];_0x11eb03[_0xca26('0x7c')]+=0x1;for(var _0xf65086 in this[_0xca26('0x24')]){if(typeof this[_0xca26('0x24')][_0xf65086]!==_0xca26('0xa3')){if(this[_0xca26('0x24')][_0xf65086][_0xca26('0xad')]==='not_inuse'&&this['agents'][_0xf65086][_0xca26('0xb6')]===_0xca26('0xde')){_0xdf288d[_0xca26('0x153')](this[_0xca26('0x24')][_0xf65086]['id']);}}}this['getContactDialer'](_0x11eb03['id'],_0xdf288d,0x1,_0x11eb03[_0xca26('0x206')],_0x11eb03)[_0xca26('0x40')](function(_0x33c58a){if(!checkContactEmpty(_0x33c58a)){checkContactLowerLimitOriginate(_0x11eb03,0x1,0x0);_0x3d588b['countReScheduled'](_0x11eb03)['then'](sendMessageReschedule(_0x11eb03))[_0xca26('0xb8')](loggerCatch(_0xca26('0xbe')));}else{_0x11eb03[_0xca26('0x43')]=_0xca26('0x207');if(_[_0xca26('0xb4')](_0x33c58a[0x0])||_[_0xca26('0xb4')](_0x33c58a[0x0][_0xca26('0x18f')])||_['isNil'](_0x33c58a[0x0][_0xca26('0x17b')])){_0x3d588b[_0xca26('0x209')](_0xca26('0x20a'),_0x11eb03,_0x33c58a[0x0]);}else{_0x3d588b[_0xca26('0xbf')](_[_0xca26('0x135')](_0x33c58a[0x0],[_0xca26('0xd7'),'phone']))[_0xca26('0x40')](_0x3d588b[_0xca26('0x1ef')](_0x11eb03,_0x33c58a[0x0]))[_0xca26('0xb8')](_0x3d588b[_0xca26('0x20b')](_0xca26('0x212'),_0x11eb03));}}})[_0xca26('0xb8')](loggerGetContactDialer(_0xca26('0x213'),_0x11eb03,0x1));emitVoiceQueueSummary(_0x11eb03);};Dialer[_0xca26('0xb0')]['abandonmentRate']=function(_0x48f4d9,_0x2d314b,_0x45fffe,_0x41ae19,_0x238896,_0x492618){loggerPredictive[_0xca26('0x89')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xca26('0x89')]('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',_0x48f4d9);loggerPredictive['info'](_0xca26('0x214'),_0x2d314b);loggerPredictive['info'](_0xca26('0x215'),_0x45fffe);loggerPredictive[_0xca26('0x89')](_0xca26('0x216'),_0x41ae19);loggerPredictive['info'](_0xca26('0x217'),_0x238896);loggerPredictive['info'](_0xca26('0x91'));return new Promise(function(_0x182585,_0x5e5e4a){if(_0x48f4d9<=0x0||isNaN(_0x48f4d9)){return _0x5e5e4a(msgResponse(_0xca26('0x218'),_0xca26('0x4e'),_0xca26('0x219')+_0x48f4d9));}if(_0x45fffe<=0x0||isNaN(_0x45fffe)){return _0x5e5e4a(msgResponse('[abandonmentRate]','Error','Ts\x20=\x20'+_0x45fffe));}if(_0x41ae19<=0x0||isNaN(_0x41ae19)){return _0x5e5e4a(msgResponse(_0xca26('0x218'),'Error',_0xca26('0x21a')+_0x41ae19));}if(_0x2d314b<=0x0||isNaN(_0x2d314b)){return _0x5e5e4a(msgResponse(_0xca26('0x218'),_0xca26('0x4e'),_0xca26('0x21b')+_0x2d314b));}if(_0x238896<=0x0||isNaN(_0x238896)){return _0x5e5e4a(msgResponse(_0xca26('0x218'),'Error',_0xca26('0x21c')+_0x238896));}_0x492618=_0x492618||0x0;var _0x22085f=0x1/_0x45fffe;var _0x46f5f4=0x0;var _0x29308f=0x0;var _0x27e55a=0x0;var _0x23b08e=0x0;for(var _0x2690ff=0x0;_0x27e55a<_0x238896;_0x2690ff+=0x1){_0x29308f=_0x2690ff/_0x2d314b;_0x46f5f4=(_0x41ae19*_0x29308f+_0x492618)/_0x22085f;_0x27e55a=erlangb(_0x46f5f4,_0x48f4d9);_0x23b08e=_0x46f5f4/_0x48f4d9*(0x1-erlangb(_0x46f5f4,_0x48f4d9));}return _0x182585({'erlangCalls':_0x2690ff,'erlangCallToSecond':_0x2d314b/_0x2690ff,'erlangAbandonmentRate':_0x27e55a,'erlangBusyFactor':_0x23b08e});});};Dialer[_0xca26('0xb0')][_0xca26('0x1e7')]=function(_0x151a0e,_0x14fabf,_0x609134,_0x573d3e,_0x86121a,_0x301fd0){loggerPredictive[_0xca26('0x89')](_0xca26('0x21d'));loggerPredictive['info'](_0xca26('0x21e'),_0x151a0e);loggerPredictive[_0xca26('0x89')](_0xca26('0x214'),_0x14fabf);loggerPredictive[_0xca26('0x89')]('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',_0x609134);loggerPredictive[_0xca26('0x89')](_0xca26('0x216'),_0x573d3e);loggerPredictive[_0xca26('0x89')](_0xca26('0x21f'),_0x86121a);loggerPredictive[_0xca26('0x89')]('---------------------------');return new Promise(function(_0x423413,_0x34648b){if(_0x151a0e<=0x0||isNaN(_0x151a0e)){return _0x34648b(msgResponse(_0xca26('0x220'),_0xca26('0x4e'),'m\x20=\x20'+_0x151a0e));}if(_0x609134<=0x0||isNaN(_0x609134)){return _0x34648b(msgResponse('[busyFactor]',_0xca26('0x4e'),_0xca26('0x221')+_0x609134));}if(_0x573d3e<=0x0||isNaN(_0x573d3e)){return _0x34648b(msgResponse(_0xca26('0x220'),_0xca26('0x4e'),_0xca26('0x21a')+_0x573d3e));}if(_0x14fabf<=0x0||isNaN(_0x14fabf)){return _0x34648b(msgResponse(_0xca26('0x220'),'Error','interval\x20=\x20'+_0x14fabf));}if(_0x86121a<=0x0||isNaN(_0x86121a)){return _0x34648b(msgResponse('[busyFactor]',_0xca26('0x4e'),_0xca26('0x222')+_0x86121a));}_0x301fd0=_0x301fd0||0x0;var _0x254c69=0x1/_0x609134;var _0x38ad39=0x0;var _0x372daa=0x0;var _0x5f6eae=0x0;var _0x4c1472=0x0;for(var _0x549b41=0x0;_0x4c1472<_0x86121a;_0x549b41+=0x1){_0x372daa=_0x549b41/_0x14fabf;_0x38ad39=(_0x573d3e*_0x372daa+_0x301fd0)/_0x254c69;_0x5f6eae=erlangb(_0x38ad39,_0x151a0e);_0x4c1472=_0x38ad39/_0x151a0e*(0x1-erlangb(_0x38ad39,_0x151a0e));}return _0x423413({'erlangCalls':_0x549b41,'erlangCallToSecond':_0x14fabf/_0x549b41,'erlangAbandonmentRate':_0x5f6eae,'erlangBusyFactor':_0x4c1472});});};module[_0xca26('0x223')]=Dialer;
\ No newline at end of file
index 461feb6..02bfaf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7299=['lodash','milliseconds','diff','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','droptime','ringtime','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util'];(function(_0xe59621,_0x5c3bfd){var _0x2a443e=function(_0x59bd9f){while(--_0x59bd9f){_0xe59621['push'](_0xe59621['shift']());}};_0x2a443e(++_0x5c3bfd);}(_0x7299,0x1ac));var _0x9729=function(_0x1e71b7,_0x74a443){_0x1e71b7=_0x1e71b7-0x0;var _0x42c3a0=_0x7299[_0x1e71b7];return _0x42c3a0;};'use strict';var util=require(_0x9729('0x0'));var _=require(_0x9729('0x1'));var moment=require('moment');function getSeconds(_0x1001a3,_0x122d54){var _0x5dad07=moment(_0x1001a3)[_0x9729('0x2')](0x0);var _0x351b4a=moment(_0x122d54)[_0x9729('0x2')](0x0);return _0x5dad07[_0x9729('0x3')](_0x351b4a,'seconds');}function QueueCallerAbandon(_0x23aa82,_0x486c5d){this[_0x9729('0x4')]=_0x23aa82['scheduledat'];this[_0x9729('0x5')]=_0x23aa82[_0x9729('0x5')];this['campaigntype']=_0x23aa82[_0x9729('0x5')]===_0x9729('0x6')?_0x9729('0x7'):_0x23aa82[_0x9729('0x5')];this[_0x9729('0x8')]=_0x23aa82['countbusyretry'];this[_0x9729('0x9')]=_0x23aa82[_0x9729('0x9')];this['countnoanswerretry']=_0x23aa82[_0x9729('0xa')];this[_0x9729('0xb')]=_0x23aa82[_0x9729('0x8')]+_0x23aa82[_0x9729('0x9')]+_0x23aa82['countnoanswerretry']+_0x23aa82[_0x9729('0xc')]+_0x23aa82[_0x9729('0xd')]+_0x23aa82[_0x9729('0xe')]+_0x23aa82[_0x9729('0xf')]+_0x23aa82['countagentrejectretry'];this[_0x9729('0xc')]=_0x23aa82['countnosuchnumberretry'];this[_0x9729('0xd')]=_0x23aa82[_0x9729('0xd')];this[_0x9729('0xe')]=_0x23aa82[_0x9729('0xe')];this[_0x9729('0xf')]=_0x23aa82[_0x9729('0xf')];this[_0x9729('0x10')]=_0x23aa82[_0x9729('0x10')];this[_0x9729('0x11')]=_0x486c5d['uniqueid'];this[_0x9729('0x12')]=_0x23aa82[_0x9729('0x13')];this['calleridnum']=_0x23aa82[_0x9729('0x14')];this[_0x9729('0x15')]=_0x23aa82['starttime'];this[_0x9729('0x16')]=_0x23aa82[_0x9729('0x16')];this[_0x9729('0x17')]=_0x23aa82[_0x9729('0x17')];this['endtime']=this['droptime'];this[_0x9729('0x18')]=getSeconds(_0x23aa82[_0x9729('0x16')],_0x23aa82[_0x9729('0x15')]);this['holdtime']=getSeconds(this['droptime'],_0x23aa82[_0x9729('0x16')]);this['talktime']=0x0;this['queue']=_0x486c5d['queue'];this['membername']=_0x486c5d[_0x9729('0x19')];this[_0x9729('0x1a')]=_0x486c5d[_0x9729('0x1a')];this[_0x9729('0x1b')]=_0x23aa82[_0x9729('0x1b')];this['callbackuniqueid']=_0x23aa82[_0x9729('0x1c')];this['callbackat']=_0x23aa82[_0x9729('0x1d')];this[_0x9729('0x1e')]=_0x23aa82[_0x9729('0x1e')];this[_0x9729('0x1f')]=_0x23aa82[_0x9729('0x1f')];this[_0x9729('0x20')]=_0x23aa82[_0x9729('0x20')];this[_0x9729('0x21')]=_0x23aa82[_0x9729('0x21')];this[_0x9729('0x22')]=_0x23aa82[_0x9729('0x22')];this[_0x9729('0x23')]=_0x23aa82[_0x9729('0x23')];this[_0x9729('0x24')]=_0x23aa82[_0x9729('0x24')]||'';this['originatecalleridname']=_0x23aa82[_0x9729('0x25')]||'';}module[_0x9729('0x26')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x6955=['countglobal','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','number','starttime','responsetime','droptime','holdtime','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry'];(function(_0xcb62,_0x1da81b){var _0x3b56b4=function(_0x3ebbc7){while(--_0x3ebbc7){_0xcb62['push'](_0xcb62['shift']());}};_0x3b56b4(++_0x1da81b);}(_0x6955,0x12c));var _0x5695=function(_0x31f004,_0x105612){_0x31f004=_0x31f004-0x0;var _0x2ba90e=_0x6955[_0x31f004];return _0x2ba90e;};'use strict';var util=require('util');var _=require(_0x5695('0x0'));var moment=require(_0x5695('0x1'));function getSeconds(_0x14dcc9,_0x9e5956){var _0x136f23=moment(_0x14dcc9)[_0x5695('0x2')](0x0);var _0x24859d=moment(_0x9e5956)[_0x5695('0x2')](0x0);return _0x136f23[_0x5695('0x3')](_0x24859d,_0x5695('0x4'));}function QueueCallerAbandon(_0x114f2c,_0x267965){this[_0x5695('0x5')]=_0x114f2c[_0x5695('0x5')];this[_0x5695('0x6')]=_0x114f2c['type'];this[_0x5695('0x7')]=_0x114f2c[_0x5695('0x6')]===_0x5695('0x8')?_0x5695('0x9'):_0x114f2c[_0x5695('0x6')];this[_0x5695('0xa')]=_0x114f2c['countbusyretry'];this[_0x5695('0xb')]=_0x114f2c[_0x5695('0xb')];this['countnoanswerretry']=_0x114f2c['countnoanswerretry'];this[_0x5695('0xc')]=_0x114f2c[_0x5695('0xa')]+_0x114f2c[_0x5695('0xb')]+_0x114f2c[_0x5695('0xd')]+_0x114f2c[_0x5695('0xe')]+_0x114f2c[_0x5695('0xf')]+_0x114f2c[_0x5695('0x10')]+_0x114f2c[_0x5695('0x11')]+_0x114f2c[_0x5695('0x12')];this[_0x5695('0xe')]=_0x114f2c[_0x5695('0xe')];this[_0x5695('0xf')]=_0x114f2c[_0x5695('0xf')];this[_0x5695('0x10')]=_0x114f2c[_0x5695('0x10')];this[_0x5695('0x11')]=_0x114f2c[_0x5695('0x11')];this['countagentrejectretry']=_0x114f2c[_0x5695('0x12')];this[_0x5695('0x13')]=_0x267965[_0x5695('0x13')];this[_0x5695('0x14')]=_0x114f2c['name'];this['calleridnum']=_0x114f2c[_0x5695('0x15')];this[_0x5695('0x16')]=_0x114f2c['starttime'];this[_0x5695('0x17')]=_0x114f2c['responsetime'];this[_0x5695('0x18')]=_0x114f2c['droptime'];this['endtime']=this[_0x5695('0x18')];this['ringtime']=getSeconds(_0x114f2c[_0x5695('0x17')],_0x114f2c[_0x5695('0x16')]);this[_0x5695('0x19')]=getSeconds(this[_0x5695('0x18')],_0x114f2c[_0x5695('0x17')]);this['talktime']=0x0;this['queue']=_0x267965[_0x5695('0x9')];this['membername']=_0x267965[_0x5695('0x1a')];this[_0x5695('0x1b')]=_0x267965[_0x5695('0x1b')];this[_0x5695('0x1c')]=_0x114f2c[_0x5695('0x1c')];this[_0x5695('0x1d')]=_0x114f2c[_0x5695('0x1d')];this['callbackat']=_0x114f2c[_0x5695('0x1e')];this[_0x5695('0x1f')]=_0x114f2c[_0x5695('0x1f')];this[_0x5695('0x20')]=_0x114f2c[_0x5695('0x20')];this[_0x5695('0x21')]=_0x114f2c['ListId'];this['UserId']=_0x114f2c[_0x5695('0x22')];this[_0x5695('0x23')]=_0x114f2c[_0x5695('0x23')];this[_0x5695('0x24')]=_0x114f2c[_0x5695('0x24')];this[_0x5695('0x25')]=_0x114f2c[_0x5695('0x25')]||'';this['originatecalleridname']=_0x114f2c[_0x5695('0x26')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index 9a4d259..ae9fcd9 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(_0x3f5843,_0x591edd){var _0x3b7314=function(_0x2521e0){while(--_0x2521e0){_0x3f5843['push'](_0x3f5843['shift']());}};_0x3b7314(++_0x591edd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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(_0xf4e992,_0x33bf5a){var _0x1a737e=function(_0x442d4c){while(--_0x442d4c){_0xf4e992['push'](_0xf4e992['shift']());}};_0x1a737e(++_0x33bf5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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 37d5c22..889fa86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a58=['filename','info','syncReceiveFax','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','syncOriginateResponse','merge','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','updateStatus','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','format','%s/%s.tif','dir','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','Empty\x20path','Is\x20Valid','exports','util','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','receivefax','hangup','syncHangup','originateresponse','prototype','hasOwnProperty','exten','uniqueid','channel','name','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','syncFaxStatus','operation','status','localstationid'];(function(_0x1a11a2,_0x59cef8){var _0x44bb3d=function(_0x29e458){while(--_0x29e458){_0x1a11a2['push'](_0x1a11a2['shift']());}};_0x44bb3d(++_0x59cef8);}(_0x1a58,0x1b6));var _0x81a5=function(_0x159a96,_0x1629f9){_0x159a96=_0x159a96-0x0;var _0x55bcb7=_0x1a58[_0x159a96];return _0x55bcb7;};'use strict';var util=require(_0x81a5('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0x81a5('0x1'));var path=require(_0x81a5('0x2'));var tiff2pdf=require(_0x81a5('0x3'));var gs=require(_0x81a5('0x4'));var logger=require(_0x81a5('0x5'))(_0x81a5('0x6'));var ami=require(_0x81a5('0x7'));var rpcDb=require('./rpcDb');var Channel=require(_0x81a5('0x8'));var ut=require(_0x81a5('0x9'));var Action=require(_0x81a5('0xa'));var faxAccount=require(_0x81a5('0xb'));var attachment=require(_0x81a5('0xc'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x2dafee){this[_0x81a5('0xd')]={};this[_0x81a5('0xe')]=_0x2dafee[_0x81a5('0xe')];this[_0x81a5('0xf')]=_0x2dafee[_0x81a5('0xf')];this[_0x81a5('0x10')]={};ami['on'](_0x81a5('0x11'),this[_0x81a5('0x12')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x14'),this[_0x81a5('0x15')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x16'),this[_0x81a5('0x17')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x18'),this[_0x81a5('0x19')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1a'),this['syncFaxStatus'][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1b'),this['syncReceiveFax'][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1c'),this[_0x81a5('0x1d')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1e'),this['syncOriginateResponse']['bind'](this));}Fax[_0x81a5('0x1f')][_0x81a5('0x12')]=function(_0x282d0e){if(_0x282d0e['context']==='from-voip-provider'){for(var _0x2c4cff in this['faxAccounts']){if(this[_0x81a5('0xe')][_0x81a5('0x20')](_0x2c4cff)){if(_0x282d0e[_0x81a5('0x21')]===this[_0x81a5('0xe')][_0x2c4cff]['localstationid']){this[_0x81a5('0xd')][_0x282d0e['uniqueid']]={};this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]][_0x81a5('0x23')]=_0x282d0e[_0x81a5('0x23')];this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]]['id']=this[_0x81a5('0xe')][_0x2c4cff]['id'];this['channels'][_0x282d0e[_0x81a5('0x22')]][_0x81a5('0x24')]=this[_0x81a5('0xe')][_0x2c4cff]['name'];logger['info'](_0x282d0e['uniqueid'],_0x81a5('0x25'));}}}}if(this[_0x81a5('0x10')][_0x282d0e[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]]={};this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]][_0x81a5('0x23')]=_0x282d0e['channel'];logger['info'](_0x282d0e[_0x81a5('0x22')],_0x81a5('0x25'));}};Fax[_0x81a5('0x1f')]['syncVarSet']=function(_0x169410){if(this[_0x81a5('0xd')][_0x169410[_0x81a5('0x22')]]){for(var _0x8aae64 in _0x169410['variable']){if(_0x169410[_0x81a5('0x26')]['hasOwnProperty'](_0x8aae64)){this['channels'][_0x169410[_0x81a5('0x22')]][_0x8aae64]=_0x169410[_0x81a5('0x27')];}}}};Fax[_0x81a5('0x1f')][_0x81a5('0x17')]=function(_0x17d286){if(this['channels'][_0x17d286[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x17d286['uniqueid']][_0x81a5('0x28')]=_0x17d286[_0x81a5('0x28')];this[_0x81a5('0xd')][_0x17d286['uniqueid']][_0x81a5('0x29')]=_0x17d286[_0x81a5('0x29')];}};Fax[_0x81a5('0x1f')][_0x81a5('0x19')]=function(_0x432aee){if(this[_0x81a5('0xd')][_0x432aee[_0x81a5('0x22')]]){for(var _0x4cafeb in _0x432aee[_0x81a5('0x26')]){if(_0x432aee[_0x81a5('0x26')][_0x81a5('0x20')](_0x4cafeb)){this[_0x81a5('0xd')][_0x432aee[_0x81a5('0x22')]][_0x4cafeb]=_0x432aee[_0x81a5('0x27')];}}}};Fax[_0x81a5('0x1f')][_0x81a5('0x2a')]=function(_0x16d652){if(this[_0x81a5('0xd')][_0x16d652[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x16d652['uniqueid']]['operation']=_0x16d652[_0x81a5('0x2b')];this[_0x81a5('0xd')][_0x16d652[_0x81a5('0x22')]][_0x81a5('0x2c')]=_0x16d652['status'];this['channels'][_0x16d652[_0x81a5('0x22')]][_0x81a5('0x2d')]=_0x16d652[_0x81a5('0x2d')];this[_0x81a5('0xd')][_0x16d652[_0x81a5('0x22')]][_0x81a5('0x2e')]=_0x16d652[_0x81a5('0x2e')];logger[_0x81a5('0x2f')](_0x16d652[_0x81a5('0x22')],'\x20syncFaxStatus\x20');}};Fax[_0x81a5('0x1f')][_0x81a5('0x30')]=function(_0x4c87d5){var _0x1a7382=this;if(this[_0x81a5('0xd')][_0x4c87d5['uniqueid']]){var _0x4012e8=this[_0x81a5('0xd')][_0x4c87d5['uniqueid']]['id'];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]]['remotestationid']=_0x4c87d5['remotestationid'];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]][_0x81a5('0x31')]=_0x4c87d5[_0x81a5('0x31')];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]]['localstationid']=_0x4c87d5[_0x81a5('0x2d')];this['channels'][_0x4c87d5[_0x81a5('0x22')]]['resolution']=_0x4c87d5[_0x81a5('0x32')];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]][_0x81a5('0x33')]=_0x4c87d5['transferrate'];this[_0x81a5('0xd')][_0x4c87d5['uniqueid']][_0x81a5('0x2e')]=_0x4c87d5['filename'];this[_0x81a5('0xd')][_0x4c87d5['uniqueid']][_0x81a5('0x34')]=_0x4c87d5['calleridnum'];if(this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]]['pagestransferred']>0x0){tiff2pdf(_0x4c87d5[_0x81a5('0x2e')],_0x81a5('0x35'),function(_0x590de2){logger[_0x81a5('0x2f')](_0x4c87d5[_0x81a5('0x22')],_0x81a5('0x36'),_0x590de2[_0x81a5('0x37')]);attachment[_0x81a5('0x38')]({'name':path[_0x81a5('0x39')](_0x4c87d5[_0x81a5('0x2e')])[_0x81a5('0x24')],'basename':path[_0x81a5('0x39')](_0x4c87d5[_0x81a5('0x2e')])['name']+_0x81a5('0x3a'),'type':_0x81a5('0x3b')})[_0x81a5('0x3c')](function(_0x285548){faxAccount[_0x81a5('0x3d')](_0x4012e8,{'from':_0x4c87d5[_0x81a5('0x34')],'mapKey':_0x81a5('0x6'),'body':path[_0x81a5('0x39')](_0x4c87d5[_0x81a5('0x2e')])[_0x81a5('0x24')]+_0x81a5('0x3a'),'AttachmentId':_0x285548['id']})[_0x81a5('0x3e')](function(_0x4bf3f5){logger[_0x81a5('0x3f')](_0x4c87d5[_0x81a5('0x22')],_0x81a5('0x40'),JSON['stringify'](_0x4bf3f5));});})[_0x81a5('0x3e')](function(_0xd29efe){logger['error'](_0x4c87d5[_0x81a5('0x22')],_0x81a5('0x41'),JSON[_0x81a5('0x42')](_0xd29efe));});});}logger[_0x81a5('0x2f')](_0x4c87d5['uniqueid'],'\x20receiveFax\x20');}};Fax[_0x81a5('0x1f')][_0x81a5('0x43')]=function(_0x5c3a96){if(this[_0x81a5('0x10')][_0x5c3a96[_0x81a5('0x22')]]){_[_0x81a5('0x44')](this[_0x81a5('0xd')][_0x5c3a96['uniqueid']],_['pick'](_0x5c3a96,[_0x81a5('0x45'),_0x81a5('0x46')]));}};function updateStatus(_0x35a968){if(_0x35a968[_0x81a5('0x47')]){faxMessage[_0x81a5('0x48')](_0x35a968[_0x81a5('0x47')],{'failMessage':_0x81a5('0x49')})[_0x81a5('0x3c')](function(_0x2a6b9a){ut[_0x81a5('0x4a')](_0x81a5('0x4b'),_0x2a6b9a);})[_0x81a5('0x3e')](function(_0x1393c3){ut['logger'](_0x81a5('0x4c'),_0x1393c3);});}else{ut[_0x81a5('0x4a')](_0x81a5('0x4d'));}}Fax[_0x81a5('0x1f')]['updateStatus']=function(_0x3e3883,_0x2d8d03,_0xad38a9){var _0x5c0cb9=this;var _0x19ed1c={};if(_0x2d8d03){_0x19ed1c={'read':_0x2d8d03};}else{_0x19ed1c={'failMessage':_0xad38a9};}if(this[_0x81a5('0x10')][_0x3e3883][_0x81a5('0x47')]){faxMessage[_0x81a5('0x48')](this['actions'][_0x3e3883][_0x81a5('0x47')],_0x19ed1c)[_0x81a5('0x3c')](function(_0x573f0e){ut[_0x81a5('0x4a')](_0x81a5('0x4e'),_0x573f0e);})[_0x81a5('0x3e')](function(_0x21c067){ut[_0x81a5('0x4a')]('[Fax][Message][NoUpdate1]',_0x21c067);})[_0x81a5('0x4f')](function(){delete _0x5c0cb9[_0x81a5('0xd')][_0x3e3883];delete _0x5c0cb9[_0x81a5('0x10')][_0x3e3883];});}else{ut[_0x81a5('0x4a')]('[Fax][Message][NoUpdate2]');delete this[_0x81a5('0xd')][_0x3e3883];delete this[_0x81a5('0x10')][_0x3e3883];}};Fax[_0x81a5('0x1f')][_0x81a5('0x1d')]=function(_0x59d716){var _0x597dc3=this;if(this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]]){if(this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]]['id']=this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]['id'];this['channels'][_0x59d716[_0x81a5('0x22')]][_0x81a5('0x24')]=this['actions'][_0x59d716[_0x81a5('0x22')]][_0x81a5('0x24')];}logger[_0x81a5('0x2f')](_0x59d716[_0x81a5('0x22')],this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]?_0x81a5('0x50'):_0x81a5('0x51'),JSON['stringify'](this['channels'][_0x59d716['uniqueid']]));if(this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]){if(this['channels'][_0x59d716['uniqueid']][_0x81a5('0x52')]>0x0&&this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]][_0x81a5('0x1a')]===_0x81a5('0x53')){this[_0x81a5('0x54')](_0x59d716[_0x81a5('0x22')],!![]);}else{this[_0x81a5('0x54')](_0x59d716[_0x81a5('0x22')],![],this['channels'][_0x59d716['uniqueid']][_0x81a5('0x55')]?_0x81a5('0x56')+this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]]['faxstatusstring']:_0x81a5('0x57'));}}}};Fax[_0x81a5('0x1f')][_0x81a5('0x58')]=function(_0x2f5ca1){var _0x3f26b4=this;return new BPromise(function(_0x2d7f28,_0x14bc06){_0x3f26b4[_0x81a5('0x59')](_0x2f5ca1,_0x3f26b4[_0x81a5('0xe')][_0x2f5ca1[_0x81a5('0x5a')]])[_0x81a5('0x3c')](function(_0x4ab6b7){ut[_0x81a5('0x4a')](_0x81a5('0x5b'),_0x4ab6b7);_0x2d7f28(ut[_0x81a5('0x37')](_0x81a5('0x5c')));})['catch'](function(_0x27d335){ut[_0x81a5('0x4a')](_0x81a5('0x5d'),_0x27d335);updateStatus(_0x2f5ca1);_0x14bc06(ut[_0x81a5('0x37')](_0x81a5('0x5e')));});});};Fax[_0x81a5('0x1f')][_0x81a5('0x5f')]=function(_0x223e35){var _0x5a1c2a=this;return new BPromise(function(_0x3fadd6,_0x29c80a){var _0x48d6de=_0x5a1c2a[_0x81a5('0x60')](_0x5a1c2a[_0x81a5('0xe')][_0x223e35[_0x81a5('0x5a')]][_0x81a5('0x61')],_0x223e35);if(_0x48d6de[_0x81a5('0x62')]){_0x3fadd6(ut['message'](_0x81a5('0x63')));}else{_0x29c80a(ut['message'](_0x48d6de[_0x81a5('0x37')]));}});};function originate(_0x51c4ca,_0x7cb236,_0x2a584f){return new BPromise(function(_0x3f8db7,_0x31192d){if(_0x2a584f){var _0x28a6a0=util['format'](_0x81a5('0x64'),path[_0x81a5('0x39')](_0x51c4ca['path'])['name'],_0x51c4ca['path']);gs[_0x81a5('0x65')](_0x28a6a0)[_0x81a5('0x3c')](function(){_0x51c4ca['path']=util[_0x81a5('0x66')](_0x81a5('0x67'),path['parse'](_0x51c4ca['path'])[_0x81a5('0x68')],path['parse'](_0x51c4ca[_0x81a5('0x2')])['name']);_0x7cb236[_0x81a5('0x69')]=_0x51c4ca['path'];ut['logger']('Convert\x20pdf\x20to\x20tif','');ami[_0x81a5('0x6a')](ut[_0x81a5('0x6b')](_0x51c4ca,_0x7cb236))['then'](function(_0x48ad2b){_0x3f8db7(_0x48ad2b);})[_0x81a5('0x3e')](function(_0x231673){_0x31192d(_0x231673);});})['catch'](function(_0x4ee6fd){_0x31192d(_0x4ee6fd);});}else{ami[_0x81a5('0x6a')](ut[_0x81a5('0x6b')](_0x51c4ca,_0x7cb236))[_0x81a5('0x3c')](function(_0x48ab18){_0x3f8db7(_0x48ab18);})[_0x81a5('0x3e')](function(_0x321232){_0x31192d(_0x321232);});}});}Fax['prototype']['execOriginate']=function(_0x2ad80c,_0x36ca3e){var _0x267480=this;return new BPromise(function(_0x615d0e,_0x575b28){var _0x4dbab4=uuid['v4']();var _0x434a7a=ut[_0x81a5('0x6c')](_0x2ad80c,_0x36ca3e);_0x267480[_0x81a5('0x10')][_0x4dbab4]=new Action(_0x4dbab4,_0x36ca3e,_0x2ad80c);var _0x3ab94f=_0x267480[_0x81a5('0x10')][_0x4dbab4];if(path['parse'](_0x2ad80c[_0x81a5('0x2')])[_0x81a5('0x6d')]===_0x81a5('0x3a')){originate(_0x3ab94f,_0x434a7a,!![])[_0x81a5('0x3c')](function(_0x1c55c8){_0x615d0e(_0x1c55c8);})[_0x81a5('0x3e')](function(_0x6393b6){_0x575b28(_0x6393b6);});}else{originate(_0x3ab94f,_0x434a7a,![])[_0x81a5('0x3c')](function(_0x1df8d9){_0x615d0e(_0x1df8d9);})[_0x81a5('0x3e')](function(_0x4441d2){_0x575b28(_0x4441d2);});}});};Fax[_0x81a5('0x1f')][_0x81a5('0x6e')]=function(_0x252d41){return!_['isNil'](_0x252d41)&&!_[_0x81a5('0x6f')](_0x252d41[_0x81a5('0x24')])&&!_[_0x81a5('0x6f')](_0x252d41['active'])&&_0x252d41[_0x81a5('0x70')]&&!_[_0x81a5('0x6f')](this[_0x81a5('0xf')][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41[_0x81a5('0x24')])])&&!_[_0x81a5('0x6f')](this['trunks'][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41[_0x81a5('0x24')])][_0x81a5('0x2c')])&&(this['trunks'][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41['name'])][_0x81a5('0x2c')]===_0x81a5('0x72')||this['trunks'][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41[_0x81a5('0x24')])][_0x81a5('0x2c')]==='unmonitored');};Fax[_0x81a5('0x1f')][_0x81a5('0x60')]=function(_0x1a7e2c,_0x4981a6){if(!this['isTrunkReachable'](_0x1a7e2c)){ut[_0x81a5('0x4a')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_['isNil'](_0x1a7e2c)?'':_0x1a7e2c[_0x81a5('0x24')]+_0x81a5('0x73'));return{'isValid':![],'message':_0x81a5('0x74')};}if(_[_0x81a5('0x6f')](_0x4981a6[_0x81a5('0x6')])){ut[_0x81a5('0x4a')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x81a5('0x42')](_0x4981a6));return{'isValid':![],'message':_0x81a5('0x75')};}if(_[_0x81a5('0x6f')](_0x4981a6['path'])){ut[_0x81a5('0x4a')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x81a5('0x42')](_0x4981a6));return{'isValid':![],'message':_0x81a5('0x76')};}return{'isValid':!![],'message':_0x81a5('0x77')};};module[_0x81a5('0x78')]=Fax;
\ No newline at end of file
+var _0x237f=['gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','addVariables','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','checkTrunk','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./channel','./util/util','../rpc/faxMessage','faxAccounts','trunks','actions','newchannel','varset','syncVarSet','bind','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','prototype','syncNewchannel','hasOwnProperty','exten','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','message','create','parse','notify','.pdf','catch','error','stringify','\x20receiveFax\x20','syncOriginateResponse','pick','response','reason','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','AttachmentId','update','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20faxRiceive\x20','faxpages','faxstatusstring','SENDING\x20FAILED:\x20','send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','Trunk','isValid','Trunk\x20Reachable','format'];(function(_0x5f0501,_0x19196e){var _0x3c2c45=function(_0x107fe6){while(--_0x107fe6){_0x5f0501['push'](_0x5f0501['shift']());}};_0x3c2c45(++_0x19196e);}(_0x237f,0x104));var _0xf237=function(_0x43b08,_0x15f967){_0x43b08=_0x43b08-0x0;var _0x5e05f4=_0x237f[_0x43b08];return _0x5e05f4;};'use strict';var util=require(_0xf237('0x0'));var _=require(_0xf237('0x1'));var BPromise=require(_0xf237('0x2'));var uuid=require(_0xf237('0x3'));var moment=require(_0xf237('0x4'));var path=require(_0xf237('0x5'));var tiff2pdf=require(_0xf237('0x6'));var gs=require(_0xf237('0x7'));var logger=require(_0xf237('0x8'))(_0xf237('0x9'));var ami=require(_0xf237('0xa'));var rpcDb=require('./rpcDb');var Channel=require(_0xf237('0xb'));var ut=require(_0xf237('0xc'));var Action=require('./action');var faxAccount=require('../rpc/faxAccount');var attachment=require('../rpc/attachment');var faxMessage=require(_0xf237('0xd'));function Fax(_0x1c0f6c){this['channels']={};this[_0xf237('0xe')]=_0x1c0f6c[_0xf237('0xe')];this[_0xf237('0xf')]=_0x1c0f6c[_0xf237('0xf')];this[_0xf237('0x10')]={};ami['on'](_0xf237('0x11'),this['syncNewchannel']['bind'](this));ami['on'](_0xf237('0x12'),this[_0xf237('0x13')][_0xf237('0x14')](this));ami['on']('newstate',this['syncNewState']['bind'](this));ami['on'](_0xf237('0x15'),this[_0xf237('0x16')][_0xf237('0x14')](this));ami['on'](_0xf237('0x17'),this[_0xf237('0x18')][_0xf237('0x14')](this));ami['on'](_0xf237('0x19'),this[_0xf237('0x1a')]['bind'](this));ami['on'](_0xf237('0x1b'),this[_0xf237('0x1c')][_0xf237('0x14')](this));ami['on'](_0xf237('0x1d'),this['syncOriginateResponse'][_0xf237('0x14')](this));}Fax[_0xf237('0x1e')][_0xf237('0x1f')]=function(_0x2894aa){if(_0x2894aa['context']==='from-voip-provider'){for(var _0x10ee5c in this[_0xf237('0xe')]){if(this[_0xf237('0xe')][_0xf237('0x20')](_0x10ee5c)){if(_0x2894aa[_0xf237('0x21')]===this['faxAccounts'][_0x10ee5c][_0xf237('0x22')]){this[_0xf237('0x23')][_0x2894aa[_0xf237('0x24')]]={};this[_0xf237('0x23')][_0x2894aa[_0xf237('0x24')]]['channel']=_0x2894aa[_0xf237('0x25')];this[_0xf237('0x23')][_0x2894aa[_0xf237('0x24')]]['id']=this[_0xf237('0xe')][_0x10ee5c]['id'];this[_0xf237('0x23')][_0x2894aa['uniqueid']][_0xf237('0x26')]=this[_0xf237('0xe')][_0x10ee5c][_0xf237('0x26')];logger[_0xf237('0x27')](_0x2894aa[_0xf237('0x24')],_0xf237('0x28'));}}}}if(this['actions'][_0x2894aa[_0xf237('0x24')]]){this[_0xf237('0x23')][_0x2894aa[_0xf237('0x24')]]={};this[_0xf237('0x23')][_0x2894aa['uniqueid']]['channel']=_0x2894aa[_0xf237('0x25')];logger[_0xf237('0x27')](_0x2894aa['uniqueid'],_0xf237('0x28'));}};Fax[_0xf237('0x1e')][_0xf237('0x13')]=function(_0xde9723){if(this[_0xf237('0x23')][_0xde9723['uniqueid']]){for(var _0x375fac in _0xde9723[_0xf237('0x29')]){if(_0xde9723['variable'][_0xf237('0x20')](_0x375fac)){this[_0xf237('0x23')][_0xde9723['uniqueid']][_0x375fac]=_0xde9723[_0xf237('0x2a')];}}}};Fax[_0xf237('0x1e')][_0xf237('0x2b')]=function(_0x5eb6d9){if(this[_0xf237('0x23')][_0x5eb6d9[_0xf237('0x24')]]){this[_0xf237('0x23')][_0x5eb6d9[_0xf237('0x24')]][_0xf237('0x2c')]=_0x5eb6d9[_0xf237('0x2c')];this[_0xf237('0x23')][_0x5eb6d9[_0xf237('0x24')]][_0xf237('0x2d')]=_0x5eb6d9['channelstatedesc'];}};Fax['prototype']['syncNewExten']=function(_0x52f572){if(this[_0xf237('0x23')][_0x52f572[_0xf237('0x24')]]){for(var _0x4af04b in _0x52f572[_0xf237('0x29')]){if(_0x52f572[_0xf237('0x29')][_0xf237('0x20')](_0x4af04b)){this['channels'][_0x52f572[_0xf237('0x24')]][_0x4af04b]=_0x52f572['value'];}}}};Fax['prototype'][_0xf237('0x18')]=function(_0x3b9af8){if(this[_0xf237('0x23')][_0x3b9af8[_0xf237('0x24')]]){this[_0xf237('0x23')][_0x3b9af8[_0xf237('0x24')]]['operation']=_0x3b9af8['operation'];this[_0xf237('0x23')][_0x3b9af8['uniqueid']][_0xf237('0x2e')]=_0x3b9af8[_0xf237('0x2e')];this['channels'][_0x3b9af8[_0xf237('0x24')]][_0xf237('0x22')]=_0x3b9af8['localstationid'];this[_0xf237('0x23')][_0x3b9af8[_0xf237('0x24')]][_0xf237('0x2f')]=_0x3b9af8[_0xf237('0x2f')];logger[_0xf237('0x27')](_0x3b9af8[_0xf237('0x24')],_0xf237('0x30'));}};Fax['prototype'][_0xf237('0x1a')]=function(_0x4e4313){var _0x935cf2=this;if(this[_0xf237('0x23')][_0x4e4313[_0xf237('0x24')]]){var _0x4f22a6=this[_0xf237('0x23')][_0x4e4313[_0xf237('0x24')]]['id'];this[_0xf237('0x23')][_0x4e4313['uniqueid']][_0xf237('0x31')]=_0x4e4313[_0xf237('0x31')];this[_0xf237('0x23')][_0x4e4313[_0xf237('0x24')]][_0xf237('0x32')]=_0x4e4313[_0xf237('0x32')];this[_0xf237('0x23')][_0x4e4313[_0xf237('0x24')]]['localstationid']=_0x4e4313[_0xf237('0x22')];this[_0xf237('0x23')][_0x4e4313[_0xf237('0x24')]][_0xf237('0x33')]=_0x4e4313[_0xf237('0x33')];this[_0xf237('0x23')][_0x4e4313[_0xf237('0x24')]][_0xf237('0x34')]=_0x4e4313[_0xf237('0x34')];this['channels'][_0x4e4313['uniqueid']][_0xf237('0x2f')]=_0x4e4313[_0xf237('0x2f')];this[_0xf237('0x23')][_0x4e4313['uniqueid']][_0xf237('0x35')]=_0x4e4313['calleridnum'];if(this[_0xf237('0x23')][_0x4e4313[_0xf237('0x24')]][_0xf237('0x32')]>0x0){tiff2pdf(_0x4e4313[_0xf237('0x2f')],'/var/opt/motion2/server/files/attachments/',function(_0xce6aff){logger['info'](_0x4e4313['uniqueid'],'\x20result\x20conversion\x20file\x20',_0xce6aff[_0xf237('0x36')]);attachment[_0xf237('0x37')]({'name':path['parse'](_0x4e4313['filename'])['name'],'basename':path[_0xf237('0x38')](_0x4e4313[_0xf237('0x2f')])[_0xf237('0x26')]+'.pdf','type':'application/pdf'})['then'](function(_0x9cb3ad){faxAccount[_0xf237('0x39')](_0x4f22a6,{'from':_0x4e4313['calleridnum'],'mapKey':'fax','body':path['parse'](_0x4e4313[_0xf237('0x2f')])['name']+_0xf237('0x3a'),'AttachmentId':_0x9cb3ad['id']})[_0xf237('0x3b')](function(_0x214d13){logger[_0xf237('0x3c')](_0x4e4313['uniqueid'],'\x20notify\x20',JSON[_0xf237('0x3d')](_0x214d13));});})[_0xf237('0x3b')](function(_0x351701){logger[_0xf237('0x3c')](_0x4e4313['uniqueid'],'\x20receiveFax\x20',JSON['stringify'](_0x351701));});});}logger[_0xf237('0x27')](_0x4e4313['uniqueid'],_0xf237('0x3e'));}};Fax['prototype'][_0xf237('0x3f')]=function(_0xabdef1){if(this['actions'][_0xabdef1[_0xf237('0x24')]]){_['merge'](this[_0xf237('0x23')][_0xabdef1[_0xf237('0x24')]],_[_0xf237('0x40')](_0xabdef1,[_0xf237('0x41'),_0xf237('0x42')]));}};function updateStatus(_0x1cf210){if(_0x1cf210['AttachmentId']){faxMessage['update'](_0x1cf210['AttachmentId'],{'failMessage':_0xf237('0x43')})[_0xf237('0x44')](function(_0x4637fa){ut[_0xf237('0x45')](_0xf237('0x46'),_0x4637fa);})[_0xf237('0x3b')](function(_0x52ff85){ut[_0xf237('0x45')](_0xf237('0x47'),_0x52ff85);});}else{ut['logger'](_0xf237('0x48'));}}Fax['prototype'][_0xf237('0x49')]=function(_0x27ca29,_0x27d898,_0x414b39){var _0x161f54=this;var _0x137e77={};if(_0x27d898){_0x137e77={'read':_0x27d898};}else{_0x137e77={'failMessage':_0x414b39};}if(this['actions'][_0x27ca29][_0xf237('0x4a')]){faxMessage[_0xf237('0x4b')](this[_0xf237('0x10')][_0x27ca29][_0xf237('0x4a')],_0x137e77)[_0xf237('0x44')](function(_0x163181){ut[_0xf237('0x45')](_0xf237('0x4c'),_0x163181);})['catch'](function(_0xc31a0b){ut['logger']('[Fax][Message][NoUpdate1]',_0xc31a0b);})[_0xf237('0x4d')](function(){delete _0x161f54[_0xf237('0x23')][_0x27ca29];delete _0x161f54['actions'][_0x27ca29];});}else{ut[_0xf237('0x45')](_0xf237('0x4e'));delete this[_0xf237('0x23')][_0x27ca29];delete this[_0xf237('0x10')][_0x27ca29];}};Fax['prototype'][_0xf237('0x1c')]=function(_0x29bd5b){var _0x1ee1d1=this;if(this[_0xf237('0x23')][_0x29bd5b[_0xf237('0x24')]]){if(this[_0xf237('0x10')][_0x29bd5b[_0xf237('0x24')]]){this[_0xf237('0x23')][_0x29bd5b[_0xf237('0x24')]]['id']=this['actions'][_0x29bd5b['uniqueid']]['id'];this[_0xf237('0x23')][_0x29bd5b['uniqueid']][_0xf237('0x26')]=this[_0xf237('0x10')][_0x29bd5b[_0xf237('0x24')]]['name'];}logger[_0xf237('0x27')](_0x29bd5b[_0xf237('0x24')],this[_0xf237('0x10')][_0x29bd5b[_0xf237('0x24')]]?'\x20hangup\x20sendFile\x20':_0xf237('0x4f'),JSON['stringify'](this[_0xf237('0x23')][_0x29bd5b[_0xf237('0x24')]]));if(this[_0xf237('0x10')][_0x29bd5b[_0xf237('0x24')]]){if(this[_0xf237('0x23')][_0x29bd5b['uniqueid']][_0xf237('0x50')]>0x0&&this['channels'][_0x29bd5b['uniqueid']][_0xf237('0x17')]==='SUCCESS'){this[_0xf237('0x49')](_0x29bd5b[_0xf237('0x24')],!![]);}else{this[_0xf237('0x49')](_0x29bd5b['uniqueid'],![],this['channels'][_0x29bd5b[_0xf237('0x24')]][_0xf237('0x51')]?_0xf237('0x52')+this[_0xf237('0x23')][_0x29bd5b['uniqueid']][_0xf237('0x51')]:'SENDING\x20FAILED');}}}};Fax[_0xf237('0x1e')][_0xf237('0x53')]=function(_0x8242ed){var _0x5b0da3=this;return new BPromise(function(_0x5a668d,_0x13db07){_0x5b0da3['execOriginate'](_0x8242ed,_0x5b0da3['faxAccounts'][_0x8242ed[_0xf237('0x54')]])[_0xf237('0x44')](function(_0x41dc00){ut[_0xf237('0x45')](_0xf237('0x55'),_0x41dc00);_0x5a668d(ut[_0xf237('0x36')](_0xf237('0x56')));})[_0xf237('0x3b')](function(_0x1479c2){ut['logger'](_0xf237('0x57'),_0x1479c2);updateStatus(_0x8242ed);_0x13db07(ut[_0xf237('0x36')](_0xf237('0x58')));});});};Fax[_0xf237('0x1e')][_0xf237('0x59')]=function(_0x3f9792){var _0x2a0e48=this;return new BPromise(function(_0x10b8b7,_0x3f88bc){var _0x2ba2af=_0x2a0e48['checkTrunk'](_0x2a0e48[_0xf237('0xe')][_0x3f9792[_0xf237('0x54')]][_0xf237('0x5a')],_0x3f9792);if(_0x2ba2af[_0xf237('0x5b')]){_0x10b8b7(ut[_0xf237('0x36')](_0xf237('0x5c')));}else{_0x3f88bc(ut[_0xf237('0x36')](_0x2ba2af[_0xf237('0x36')]));}});};function originate(_0x1dac90,_0xa66fab,_0x2e1c9b){return new BPromise(function(_0x19e517,_0x3bf375){if(_0x2e1c9b){var _0x192d1c=util[_0xf237('0x5d')](_0xf237('0x5e'),path['parse'](_0x1dac90['path'])[_0xf237('0x26')],_0x1dac90[_0xf237('0x5')]);gs[_0xf237('0x5f')](_0x192d1c)['then'](function(){_0x1dac90[_0xf237('0x5')]=util['format'](_0xf237('0x60'),path[_0xf237('0x38')](_0x1dac90[_0xf237('0x5')])[_0xf237('0x61')],path[_0xf237('0x38')](_0x1dac90['path'])[_0xf237('0x26')]);_0xa66fab[_0xf237('0x62')]=_0x1dac90[_0xf237('0x5')];ut[_0xf237('0x45')](_0xf237('0x63'),'');ami[_0xf237('0x64')](ut['variablesAction'](_0x1dac90,_0xa66fab))[_0xf237('0x44')](function(_0x1cc1e1){_0x19e517(_0x1cc1e1);})[_0xf237('0x3b')](function(_0xcd7441){_0x3bf375(_0xcd7441);});})[_0xf237('0x3b')](function(_0x594e27){_0x3bf375(_0x594e27);});}else{ami[_0xf237('0x64')](ut[_0xf237('0x65')](_0x1dac90,_0xa66fab))[_0xf237('0x44')](function(_0xbb2919){_0x19e517(_0xbb2919);})[_0xf237('0x3b')](function(_0x48800a){_0x3bf375(_0x48800a);});}});}Fax['prototype'][_0xf237('0x66')]=function(_0x191ae5,_0x258d4d){var _0x30a276=this;return new BPromise(function(_0x50cbeb,_0x33f3f1){var _0x41b1ef=uuid['v4']();var _0x39571e=ut[_0xf237('0x67')](_0x191ae5,_0x258d4d);_0x30a276[_0xf237('0x10')][_0x41b1ef]=new Action(_0x41b1ef,_0x258d4d,_0x191ae5);var _0x2f48d7=_0x30a276[_0xf237('0x10')][_0x41b1ef];if(path['parse'](_0x191ae5['path'])['ext']===_0xf237('0x3a')){originate(_0x2f48d7,_0x39571e,!![])[_0xf237('0x44')](function(_0x20e900){_0x50cbeb(_0x20e900);})[_0xf237('0x3b')](function(_0x44434b){_0x33f3f1(_0x44434b);});}else{originate(_0x2f48d7,_0x39571e,![])['then'](function(_0x595e59){_0x50cbeb(_0x595e59);})[_0xf237('0x3b')](function(_0x5ef563){_0x33f3f1(_0x5ef563);});}});};Fax['prototype'][_0xf237('0x68')]=function(_0x555934){return!_['isNil'](_0x555934)&&!_[_0xf237('0x69')](_0x555934[_0xf237('0x26')])&&!_[_0xf237('0x69')](_0x555934[_0xf237('0x6a')])&&_0x555934[_0xf237('0x6a')]&&!_[_0xf237('0x69')](this[_0xf237('0xf')][util[_0xf237('0x5d')](_0xf237('0x6b'),_0x555934['name'])])&&!_[_0xf237('0x69')](this[_0xf237('0xf')][util['format'](_0xf237('0x6b'),_0x555934['name'])][_0xf237('0x2e')])&&(this[_0xf237('0xf')][util[_0xf237('0x5d')](_0xf237('0x6b'),_0x555934[_0xf237('0x26')])][_0xf237('0x2e')]===_0xf237('0x6c')||this[_0xf237('0xf')][util['format'](_0xf237('0x6b'),_0x555934[_0xf237('0x26')])][_0xf237('0x2e')]===_0xf237('0x6d'));};Fax[_0xf237('0x1e')][_0xf237('0x6e')]=function(_0x5046b0,_0x3c424d){if(!this[_0xf237('0x68')](_0x5046b0)){ut['logger']('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_['isNil'](_0x5046b0)?'':_0x5046b0['name']+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0xf237('0x6f')};}if(_[_0xf237('0x69')](_0x3c424d[_0xf237('0x9')])){ut[_0xf237('0x45')](_0xf237('0x70'),JSON['stringify'](_0x3c424d));return{'isValid':![],'message':_0xf237('0x71')};}if(_[_0xf237('0x69')](_0x3c424d['path'])){ut[_0xf237('0x45')](_0xf237('0x72'),JSON[_0xf237('0x3d')](_0x3c424d));return{'isValid':![],'message':_0xf237('0x73')};}return{'isValid':!![],'message':_0xf237('0x74')};};module[_0xf237('0x75')]=Fax;
\ No newline at end of file
index b8a9f62..71fc590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf495=['../../../config/logger','preview','../rpc/faxAccount','error','inspect','notify','then','catch','[Notify]\x20','bluebird'];(function(_0x1ffe26,_0x2d501a){var _0x420940=function(_0x22033f){while(--_0x22033f){_0x1ffe26['push'](_0x1ffe26['shift']());}};_0x420940(++_0x2d501a);}(_0xf495,0x77));var _0x5f49=function(_0x591641,_0x3be9ba){_0x591641=_0x591641-0x0;var _0x420907=_0xf495[_0x591641];return _0x420907;};'use strict';var util=require('util');var BPromise=require(_0x5f49('0x0'));var logger=require(_0x5f49('0x1'))(_0x5f49('0x2'));var _=require('lodash');var faxAccount=require(_0x5f49('0x3'));function loggerCatch(_0x3817f4){return function(_0x20a934){logger[_0x5f49('0x4')](_0x3817f4,util[_0x5f49('0x5')](_0x20a934,{'showHidden':![],'depth':null}));};}exports[_0x5f49('0x6')]=function(_0x460af5,_0x2bc534){return BPromise['resolve']()[_0x5f49('0x7')](faxAccount[_0x5f49('0x6')](_0x460af5,_0x2bc534))[_0x5f49('0x8')](loggerCatch(_0x5f49('0x9')));};
\ No newline at end of file
+var _0x3a45=['then','catch','[Notify]\x20','util','bluebird','../../../config/logger','lodash','../rpc/faxAccount','error','inspect','notify','resolve'];(function(_0x3457b4,_0x4cd8f9){var _0xaa8fa9=function(_0x51897a){while(--_0x51897a){_0x3457b4['push'](_0x3457b4['shift']());}};_0xaa8fa9(++_0x4cd8f9);}(_0x3a45,0xe7));var _0x53a4=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x3a45[_0x49b207];return _0x2dc8fa;};'use strict';var util=require(_0x53a4('0x0'));var BPromise=require(_0x53a4('0x1'));var logger=require(_0x53a4('0x2'))('preview');var _=require(_0x53a4('0x3'));var faxAccount=require(_0x53a4('0x4'));function loggerCatch(_0x4df5f7){return function(_0x5b298f){logger[_0x53a4('0x5')](_0x4df5f7,util[_0x53a4('0x6')](_0x5b298f,{'showHidden':![],'depth':null}));};}exports[_0x53a4('0x7')]=function(_0x23a8cb,_0x4ac03d){return BPromise[_0x53a4('0x8')]()[_0x53a4('0x9')](faxAccount[_0x53a4('0x7')](_0x23a8cb,_0x4ac03d))[_0x53a4('0xa')](loggerCatch(_0x53a4('0xb')));};
\ No newline at end of file
index a7d5843..a2df364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x595a=['inspect','util','fax','bluebird','child_process','exec','info','Exec\x20gs','\x20Error\x20:'];(function(_0x991306,_0x48e218){var _0x5874fc=function(_0x10df6a){while(--_0x10df6a){_0x991306['push'](_0x991306['shift']());}};_0x5874fc(++_0x48e218);}(_0x595a,0xe2));var _0xa595=function(_0x112db5,_0x38a06d){_0x112db5=_0x112db5-0x0;var _0x1d7d06=_0x595a[_0x112db5];return _0x1d7d06;};'use strict';var util=require(_0xa595('0x0'));var logger=require('../../../../config/logger')(_0xa595('0x1'));var BPromise=require(_0xa595('0x2'));var exec=require(_0xa595('0x3'))[_0xa595('0x4')];exports['execute']=function(_0x9b1995){return new BPromise(function(_0x397882,_0x501722){exec(_0x9b1995,function(_0x239707,_0xeace11,_0x2577f0){logger[_0xa595('0x5')](_0xa595('0x6'),_0xeace11);if(_0x239707){logger[_0xa595('0x5')](_0xa595('0x6'),_0xa595('0x7'),util[_0xa595('0x8')](_0x239707,{'showHidden':![],'depth':null}),_0xeace11,_0x2577f0);_0x501722(_0x239707);}_0x397882(_0xeace11);});});};
\ No newline at end of file
+var _0xf0df=['exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax','bluebird'];(function(_0x229a9d,_0x4d3229){var _0x5bd600=function(_0x5f5af9){while(--_0x5f5af9){_0x229a9d['push'](_0x229a9d['shift']());}};_0x5bd600(++_0x4d3229);}(_0xf0df,0xf6));var _0xff0d=function(_0x319132,_0x16a669){_0x319132=_0x319132-0x0;var _0x31500b=_0xf0df[_0x319132];return _0x31500b;};'use strict';var util=require(_0xff0d('0x0'));var logger=require(_0xff0d('0x1'))(_0xff0d('0x2'));var BPromise=require(_0xff0d('0x3'));var exec=require('child_process')[_0xff0d('0x4')];exports[_0xff0d('0x5')]=function(_0x441c6f){return new BPromise(function(_0x298594,_0x9d7ffe){exec(_0x441c6f,function(_0x93055c,_0x5585c9,_0x13d656){logger[_0xff0d('0x6')](_0xff0d('0x7'),_0x5585c9);if(_0x93055c){logger[_0xff0d('0x6')](_0xff0d('0x7'),_0xff0d('0x8'),util[_0xff0d('0x9')](_0x93055c,{'showHidden':![],'depth':null}),_0x5585c9,_0x13d656);_0x9d7ffe(_0x93055c);}_0x298594(_0x5585c9);});});};
\ No newline at end of file
index eea172a..3c56948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa73c=['uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','../../../../config/logger','fax','message','logger','info','inspect','addVariables','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','localstationid','variablesAction'];(function(_0x49dd11,_0x3c69fd){var _0x2ae82c=function(_0x579ac2){while(--_0x579ac2){_0x49dd11['push'](_0x49dd11['shift']());}};_0x2ae82c(++_0x3c69fd);}(_0xa73c,0x18d));var _0xca73=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa73c[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xca73('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0xca73('0x1'))(_0xca73('0x2'));exports[_0xca73('0x3')]=function(_0x18bb65){return{'message':_0x18bb65};};exports[_0xca73('0x4')]=function(_0x38ce49,_0x3ffb7e){logger[_0xca73('0x5')](_0x38ce49,util[_0xca73('0x6')](_0x3ffb7e,{'showHidden':![],'depth':null}));};exports[_0xca73('0x7')]=function(_0x2304e3,_0x4003a7){var _0x22008a={'XMF-ECM':_0x4003a7['ecm'],'XMF-HEADERINFO':_0x4003a7['headerinfo'],'XMF-MINRATE':_0x4003a7['minrate'],'XMF-MAXRATE':_0x4003a7[_0xca73('0x8')],'XMF-MODEM':util[_0xca73('0x9')](_0xca73('0xa'),_0x4003a7[_0xca73('0xb')]),'XMF-GATEWAY':_0x4003a7[_0xca73('0xc')],'XMF-FAXDETECT':_0x4003a7[_0xca73('0xd')],'XMF-T38TIMEOUT':_0x4003a7[_0xca73('0xe')],'XMF-LOCALSTATIONID':_0x4003a7[_0xca73('0xf')],'XMF-PATH':_0x2304e3['path']};return _0x22008a;};exports[_0xca73('0x10')]=function(_0x3021ee,_0x5c1ce0){return{'actionid':_0x3021ee[_0xca73('0x11')],'action':_0xca73('0x12'),'channel':_0x3021ee[_0xca73('0x13')],'Exten':_0xca73('0x14'),'Context':_0xca73('0x15'),'Priority':'1','callerid':util['format'](_0xca73('0x16'),_0x3021ee['headerinfo']?_0x3021ee['headerinfo']:'',_0x3021ee[_0xca73('0xf')]),'variable':_0x5c1ce0,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3021ee[_0xca73('0x11')]};};
\ No newline at end of file
+var _0x9bcd=['maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','headerinfo','localstationid','util','lodash','fax','logger','inspect','addVariables','ecm','minrate'];(function(_0x571240,_0x572d08){var _0x212c45=function(_0x2dd349){while(--_0x2dd349){_0x571240['push'](_0x571240['shift']());}};_0x212c45(++_0x572d08);}(_0x9bcd,0x100));var _0xd9bc=function(_0x2aa73a,_0x2efe44){_0x2aa73a=_0x2aa73a-0x0;var _0xeb23f6=_0x9bcd[_0x2aa73a];return _0xeb23f6;};'use strict';var util=require(_0xd9bc('0x0'));var _=require(_0xd9bc('0x1'));var moment=require('moment');var logger=require('../../../../config/logger')(_0xd9bc('0x2'));exports['message']=function(_0x33612c){return{'message':_0x33612c};};exports[_0xd9bc('0x3')]=function(_0x45a856,_0x29fdac){logger['info'](_0x45a856,util[_0xd9bc('0x4')](_0x29fdac,{'showHidden':![],'depth':null}));};exports[_0xd9bc('0x5')]=function(_0x2f2cf1,_0x4e4bf2){var _0x2d0fc8={'XMF-ECM':_0x4e4bf2[_0xd9bc('0x6')],'XMF-HEADERINFO':_0x4e4bf2['headerinfo'],'XMF-MINRATE':_0x4e4bf2[_0xd9bc('0x7')],'XMF-MAXRATE':_0x4e4bf2[_0xd9bc('0x8')],'XMF-MODEM':util[_0xd9bc('0x9')](_0xd9bc('0xa'),_0x4e4bf2[_0xd9bc('0xb')]),'XMF-GATEWAY':_0x4e4bf2[_0xd9bc('0xc')],'XMF-FAXDETECT':_0x4e4bf2[_0xd9bc('0xd')],'XMF-T38TIMEOUT':_0x4e4bf2[_0xd9bc('0xe')],'XMF-LOCALSTATIONID':_0x4e4bf2['localstationid'],'XMF-PATH':_0x2f2cf1[_0xd9bc('0xf')]};return _0x2d0fc8;};exports[_0xd9bc('0x10')]=function(_0x469225,_0x10d0ce){return{'actionid':_0x469225[_0xd9bc('0x11')],'action':_0xd9bc('0x12'),'channel':_0x469225[_0xd9bc('0x13')],'Exten':_0xd9bc('0x14'),'Context':'from-sip','Priority':'1','callerid':util[_0xd9bc('0x9')](_0xd9bc('0x15'),_0x469225['headerinfo']?_0x469225[_0xd9bc('0x16')]:'',_0x469225[_0xd9bc('0x17')]),'variable':_0x10d0ce,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x469225[_0xd9bc('0x11')]};};
\ No newline at end of file
index 70cd455..603ee8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf702=['getServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initCampaignHopperHistory','getVoiceCallReports','[index.js][initParams]','inspect','listen','catch','error','[index.js][main]','./realtime','./report','./acw','./trigger','./preview','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','then','getAgents','initAgents','getTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts'];(function(_0x48f463,_0x111546){var _0x56a8f5=function(_0x97aae7){while(--_0x97aae7){_0x48f463['push'](_0x48f463['shift']());}};_0x56a8f5(++_0x111546);}(_0xf702,0x19e));var _0x2f70=function(_0x3fcfbe,_0x580dbf){_0x3fcfbe=_0x3fcfbe-0x0;var _0x55a545=_0xf702[_0x3fcfbe];return _0x55a545;};'use strict';var util=require('util');var moment=require('moment');var server=require('./server');var Realtime=require(_0x2f70('0x0'));var Report=require(_0x2f70('0x1'));var Acw=require(_0x2f70('0x2'));var Trigger=require(_0x2f70('0x3'));var Dialer=require('./dialer');var Preview=require(_0x2f70('0x4'));var Fax=require(_0x2f70('0x5'));var user=require('./rpc/user');var voiceQueue=require(_0x2f70('0x6'));var voiceQueueReport=require(_0x2f70('0x7'));var voiceCallReport=require(_0x2f70('0x8'));var trunk=require(_0x2f70('0x9'));var trigger=require(_0x2f70('0xa'));var template=require(_0x2f70('0xb'));var cmHopperHistory=require(_0x2f70('0xc'));var campaign=require(_0x2f70('0xd'));var voiceExtension=require(_0x2f70('0xe'));var faxAccount=require(_0x2f70('0xf'));var zendesk=require(_0x2f70('0x10'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x2f70('0x11'));var freshdesk=require(_0x2f70('0x12'));var desk=require(_0x2f70('0x13'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x2f70('0x14'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x2f70('0x15'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x2f70('0x16'))(_0x2f70('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x2f70('0x18')](_0x2f70('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x2f70('0x18')](_0x2f70('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise['resolve']()[_0x2f70('0x1a')](user[_0x2f70('0x1b')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x1c')]())[_0x2f70('0x1a')](user[_0x2f70('0x1d')]())['then'](realtime['initTelephones']())[_0x2f70('0x1a')](trunk[_0x2f70('0x1e')]())['then'](realtime[_0x2f70('0x1f')]())[_0x2f70('0x1a')](voiceQueue[_0x2f70('0x20')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x21')]())[_0x2f70('0x1a')](trigger[_0x2f70('0x22')]())[_0x2f70('0x1a')](realtime['initTriggers']())[_0x2f70('0x1a')](template['getTemplates']())[_0x2f70('0x1a')](realtime[_0x2f70('0x23')]())[_0x2f70('0x1a')](zendesk['getZendeskAccounts']())[_0x2f70('0x1a')](realtime[_0x2f70('0x24')]())[_0x2f70('0x1a')](salesforce[_0x2f70('0x25')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x26')]())[_0x2f70('0x1a')](sugarcrm[_0x2f70('0x27')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x28')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x2f70('0x1a')](realtime[_0x2f70('0x29')]())['then'](desk['getDeskAccounts']())[_0x2f70('0x1a')](realtime[_0x2f70('0x2a')]())[_0x2f70('0x1a')](zoho[_0x2f70('0x2b')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x2c')]())[_0x2f70('0x1a')](vtiger[_0x2f70('0x2d')]())['then'](realtime[_0x2f70('0x2e')]())[_0x2f70('0x1a')](freshsales['getFreshsalesAccounts']())['then'](realtime[_0x2f70('0x2f')]())[_0x2f70('0x1a')](servicenow[_0x2f70('0x30')]())[_0x2f70('0x1a')](realtime['initServicenowAccounts']())[_0x2f70('0x1a')](dynamics365[_0x2f70('0x31')]())[_0x2f70('0x1a')](realtime['initDynamics365Accounts']())[_0x2f70('0x1a')](campaign[_0x2f70('0x32')]())['then'](realtime[_0x2f70('0x33')]())[_0x2f70('0x1a')](voiceExtension[_0x2f70('0x34')]())['then'](realtime[_0x2f70('0x35')]())['then'](faxAccount[_0x2f70('0x36')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x37')]())[_0x2f70('0x1a')](function(){return realtime;});}function initParams(){return Promise['resolve']()['then'](voiceQueueReport[_0x2f70('0x38')]())['then'](realtime[_0x2f70('0x39')]())[_0x2f70('0x1a')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x2f70('0x1a')](realtime['initVoiceQueueHopperHistory']())['then'](cmHopperHistory['getCampaignHopperHistory']())['then'](realtime[_0x2f70('0x3a')]())['then'](voiceCallReport[_0x2f70('0x3b')]())[_0x2f70('0x1a')](realtime['initVoiceCallReports']())['catch'](function(_0x5938b3){logger['error'](_0x2f70('0x3c'),util[_0x2f70('0x3d')](_0x5938b3,{'showHidden':![],'depth':null}));});}function main(){return server[_0x2f70('0x3e')](realtime,preview,fax)[_0x2f70('0x1a')](function(){return initRealtime();})['then'](function(){return initParams();})[_0x2f70('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x2f70('0x3f')](function(_0x415d4a){logger[_0x2f70('0x40')](_0x2f70('0x41'),util[_0x2f70('0x3d')](_0x415d4a,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x2ff1=['getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initSalesforceAccounts','getFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','[index.js][initParams]','inspect','listen','sync','error','[index.js][main]','util','./realtime','./trigger','./dialer','./fax','./rpc/user','./rpc/voiceQueue','./rpc/trunk','./rpc/cmHopperHistory','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','resolve','getAgents','then','getVoiceQueues','initVoiceQueues'];(function(_0x21a9fc,_0xda2726){var _0x26496c=function(_0x223213){while(--_0x223213){_0x21a9fc['push'](_0x21a9fc['shift']());}};_0x26496c(++_0xda2726);}(_0x2ff1,0xd9));var _0x12ff=function(_0xe7d1fd,_0x460a1e){_0xe7d1fd=_0xe7d1fd-0x0;var _0x24b18b=_0x2ff1[_0xe7d1fd];return _0x24b18b;};'use strict';var BPromise=require('bluebird');var util=require(_0x12ff('0x0'));var moment=require('moment');var server=require('./server');var Realtime=require(_0x12ff('0x1'));var Report=require('./report');var Acw=require('./acw');var Trigger=require(_0x12ff('0x2'));var Dialer=require(_0x12ff('0x3'));var Preview=require('./preview');var Fax=require(_0x12ff('0x4'));var user=require(_0x12ff('0x5'));var voiceQueue=require(_0x12ff('0x6'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x12ff('0x7'));var trigger=require('./rpc/trigger');var template=require('./rpc/template');var cmHopperHistory=require(_0x12ff('0x8'));var campaign=require(_0x12ff('0x9'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0x12ff('0xa'));var zendesk=require(_0x12ff('0xb'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x12ff('0xc'));var zoho=require(_0x12ff('0xd'));var vtiger=require(_0x12ff('0xe'));var freshsales=require(_0x12ff('0xf'));var servicenow=require(_0x12ff('0x10'));var dynamics365=require(_0x12ff('0x11'));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(_0x12ff('0x12'))(_0x12ff('0x13'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x12ff('0x14')](_0x12ff('0x15'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x12ff('0x14')](_0x12ff('0x15'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x12ff('0x16')]()['then'](user[_0x12ff('0x17')]())[_0x12ff('0x18')](realtime['initAgents']())[_0x12ff('0x18')](user['getTelephones']())[_0x12ff('0x18')](realtime['initTelephones']())[_0x12ff('0x18')](trunk['getTrunks']())[_0x12ff('0x18')](realtime['initTrunks']())['then'](voiceQueue[_0x12ff('0x19')]())[_0x12ff('0x18')](realtime[_0x12ff('0x1a')]())[_0x12ff('0x18')](trigger[_0x12ff('0x1b')]())['then'](realtime[_0x12ff('0x1c')]())[_0x12ff('0x18')](template[_0x12ff('0x1d')]())[_0x12ff('0x18')](realtime[_0x12ff('0x1e')]())[_0x12ff('0x18')](zendesk[_0x12ff('0x1f')]())['then'](realtime['initZendeskAccounts']())[_0x12ff('0x18')](salesforce['getSalesforceAccounts']())[_0x12ff('0x18')](realtime[_0x12ff('0x20')]())['then'](sugarcrm['getSugarcrmAccounts']())[_0x12ff('0x18')](realtime['initSugarcrmAccounts']())['then'](freshdesk[_0x12ff('0x21')]())[_0x12ff('0x18')](realtime['initFreshdeskAccounts']())[_0x12ff('0x18')](desk[_0x12ff('0x22')]())[_0x12ff('0x18')](realtime['initDeskAccounts']())[_0x12ff('0x18')](zoho[_0x12ff('0x23')]())[_0x12ff('0x18')](realtime[_0x12ff('0x24')]())[_0x12ff('0x18')](vtiger[_0x12ff('0x25')]())[_0x12ff('0x18')](realtime[_0x12ff('0x26')]())[_0x12ff('0x18')](freshsales['getFreshsalesAccounts']())[_0x12ff('0x18')](realtime[_0x12ff('0x27')]())[_0x12ff('0x18')](servicenow[_0x12ff('0x28')]())['then'](realtime[_0x12ff('0x29')]())[_0x12ff('0x18')](dynamics365[_0x12ff('0x2a')]())['then'](realtime[_0x12ff('0x2b')]())[_0x12ff('0x18')](campaign[_0x12ff('0x2c')]())[_0x12ff('0x18')](realtime['initCampaigns']())[_0x12ff('0x18')](voiceExtension[_0x12ff('0x2d')]())[_0x12ff('0x18')](realtime[_0x12ff('0x2e')]())[_0x12ff('0x18')](faxAccount['getFaxAccounts']())[_0x12ff('0x18')](realtime['initFaxAccounts']())[_0x12ff('0x18')](function(){return realtime;});}function initParams(){return BPromise[_0x12ff('0x16')]()[_0x12ff('0x18')](voiceQueueReport[_0x12ff('0x2f')]())['then'](realtime[_0x12ff('0x30')]())[_0x12ff('0x18')](cmHopperHistory[_0x12ff('0x31')]())['then'](realtime[_0x12ff('0x32')]())[_0x12ff('0x18')](cmHopperHistory['getCampaignHopperHistory']())[_0x12ff('0x18')](realtime[_0x12ff('0x33')]())[_0x12ff('0x18')](voiceCallReport[_0x12ff('0x34')]())['then'](realtime[_0x12ff('0x35')]())[_0x12ff('0x36')](function(_0x48517b){logger['error'](_0x12ff('0x37'),util[_0x12ff('0x38')](_0x48517b,{'showHidden':![],'depth':null}));});}function main(){return server[_0x12ff('0x39')](realtime,preview,fax)[_0x12ff('0x18')](function(_0x3aebf8){return initRealtime();})['then'](function(){return initParams();})[_0x12ff('0x18')](function(){report[_0x12ff('0x3a')]();setInterval(initRealtime,0x1388);})[_0x12ff('0x36')](function(_0x2b76ba){logger[_0x12ff('0x3b')](_0x12ff('0x3c'),util[_0x12ff('0x38')](_0x2b76ba,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 03ad926..0343676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cda=['status','online','format','emit','user:save','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','stateTime','unknown','address','mobile','interface','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','prototype','state','toLowerCase','inuse','talking','statePause','toNumber'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8cda,0x1db));var _0xa8cd=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8cda[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xa8cd('0x0'));var moment=require(_0xa8cd('0x1'));var md5=require(_0xa8cd('0x2'));var Redis=require(_0xa8cd('0x3'));var config=require(_0xa8cd('0x4'));config[_0xa8cd('0x5')]=_['defaults'](config[_0xa8cd('0x5')],{'host':_0xa8cd('0x6'),'port':0x18eb});var io=require(_0xa8cd('0x7'))(new Redis(config['redis']));function Agent(_0x80c199){this['id']=_0x80c199['id']||0x0;this[_0xa8cd('0x8')]=_0x80c199[_0xa8cd('0x8')]||'';this[_0xa8cd('0x9')]=_0x80c199[_0xa8cd('0x9')]||'';this[_0xa8cd('0xa')]=_0x80c199[_0xa8cd('0xa')]||'';this[_0xa8cd('0xb')]=_0x80c199['fullname']||'';this['state']='unknown';this[_0xa8cd('0xc')]=0x0;this['status']=_0xa8cd('0xd');this[_0xa8cd('0xe')]='';this['phone']='';this[_0xa8cd('0xf')]='';this[_0xa8cd('0x10')]='';this['online']=_0x80c199['online']||![];this[_0xa8cd('0x11')]=_0xa8cd('0xd');this[_0xa8cd('0x12')]=0x0;this[_0xa8cd('0x13')]='';this[_0xa8cd('0x14')]='';this['onhold']=![];this[_0xa8cd('0x15')]=![];this['md5']='';}Agent[_0xa8cd('0x16')]['updateStatusRealtime']=function(_0x213e36){var _0x52d73b;if(_0x213e36&&_0x213e36[_0xa8cd('0x17')]){_0x52d73b=_0x213e36[_0xa8cd('0x17')][_0xa8cd('0x18')]();switch(_0x52d73b){case'not_inuse':_0x52d73b='idle';break;case _0xa8cd('0x19'):_0x52d73b=_0xa8cd('0x1a');break;}}if(_0x52d73b&&this[_0xa8cd('0x11')]!==_0x52d73b||_0x213e36[_0xa8cd('0x1b')]){this['voiceStatusTime']=_[_0xa8cd('0x1c')](moment()['format']('x'));}if(_0x52d73b){this[_0xa8cd('0x11')]=_0x52d73b;}var _0x2ef224={'id':this['id'],'name':this['name'],'email':this[_0xa8cd('0x9')],'accountcode':this[_0xa8cd('0xa')],'fullname':this['fullname'],'state':this[_0xa8cd('0x17')],'stateTime':this[_0xa8cd('0xc')],'status':this[_0xa8cd('0x1d')],'address':this[_0xa8cd('0xe')],'online':this[_0xa8cd('0x1e')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0xa8cd('0x12')],'voiceStatusCallerIdNumber':this[_0xa8cd('0x13')],'voiceStatusQueue':this[_0xa8cd('0x14')],'interface':this[_0xa8cd('0x10')],'onhold':this['onhold']};var _0x1f15c0=md5(JSON['stringify'](_0x2ef224));if(this['md5']!==_0x1f15c0){this[_0xa8cd('0x2')]=_0x1f15c0;io['to'](util[_0xa8cd('0x1f')]('user:%s',_0x2ef224[_0xa8cd('0x8')]))[_0xa8cd('0x20')](_0xa8cd('0x21'),_0x2ef224);io[_0xa8cd('0x20')](_0xa8cd('0x22'),_0x2ef224);}};module[_0xa8cd('0x23')]=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(_0x50aa2e,_0xfbd6f0){var _0x5e07f0=function(_0x3ed540){while(--_0x3ed540){_0x50aa2e['push'](_0x50aa2e['shift']());}};_0x5e07f0(++_0xfbd6f0);}(_0x9c44,0x178));var _0x49c4=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9c44[_0x3bf83f];return _0x22c4a9;};'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 cfe5235..d509015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb8f=['dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdNumber','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'];(function(_0x335d41,_0x54477b){var _0x24fd53=function(_0x50c1b0){while(--_0x50c1b0){_0x335d41['push'](_0x335d41['shift']());}};_0x24fd53(++_0x54477b);}(_0xdb8f,0x1a3));var _0xfdb8=function(_0x119ded,_0x497e72){_0x119ded=_0x119ded-0x0;var _0x22108b=_0xdb8f[_0x119ded];return _0x22108b;};'use strict';function Campaign(_0x5b2c4b){this['id']=_0x5b2c4b['id']||0x0;this[_0xfdb8('0x0')]=_0x5b2c4b[_0xfdb8('0x0')]||'';this[_0xfdb8('0x1')]=_0x5b2c4b['type']||_0xfdb8('0x2');this[_0xfdb8('0x3')]=0x0;this[_0xfdb8('0x4')]=0x0;this[_0xfdb8('0x5')]=0x0;this[_0xfdb8('0x6')]=0x0;this[_0xfdb8('0x7')]='';this[_0xfdb8('0x8')]=!![];this[_0xfdb8('0x9')]=_0x5b2c4b[_0xfdb8('0x9')];this[_0xfdb8('0xa')]=_0x5b2c4b[_0xfdb8('0xa')];this[_0xfdb8('0xb')]=_0x5b2c4b[_0xfdb8('0xb')]||null;this[_0xfdb8('0xc')]=_0x5b2c4b['dialGlobalInterval']?_0x5b2c4b[_0xfdb8('0xc')]:null;this['dialOriginateCallerIdName']=_0x5b2c4b['dialOriginateCallerIdName'];this[_0xfdb8('0xd')]=_0x5b2c4b[_0xfdb8('0xd')];this['dialOriginateTimeout']=_0x5b2c4b['dialOriginateTimeout']||0x1e;this['dialCongestionMaxRetry']=_0x5b2c4b['dialCongestionMaxRetry'];this[_0xfdb8('0xe')]=_0x5b2c4b[_0xfdb8('0xe')];this[_0xfdb8('0xf')]=_0x5b2c4b[_0xfdb8('0xf')];this[_0xfdb8('0x10')]=_0x5b2c4b[_0xfdb8('0x10')];this[_0xfdb8('0x11')]=_0x5b2c4b[_0xfdb8('0x11')];this['dialNoAnswerRetryFrequency']=_0x5b2c4b[_0xfdb8('0x12')];this[_0xfdb8('0x13')]=_0x5b2c4b['dialGlobalMaxRetry'];this[_0xfdb8('0x14')]=_0x5b2c4b[_0xfdb8('0x14')]||0x3;this[_0xfdb8('0x15')]=_0x5b2c4b['dialNoSuchNumberRetryFrequency']||0x96;this[_0xfdb8('0x16')]=_0x5b2c4b[_0xfdb8('0x16')]||0x3;this[_0xfdb8('0x17')]=_0x5b2c4b['dialDropRetryFrequency']||0x96;this[_0xfdb8('0x18')]=_0x5b2c4b[_0xfdb8('0x18')]||0x3;this['dialAbandonedRetryFrequency']=_0x5b2c4b[_0xfdb8('0x19')]||0x96;this[_0xfdb8('0x1a')]=_0x5b2c4b[_0xfdb8('0x1a')]||0x3;this['dialMachineRetryFrequency']=_0x5b2c4b[_0xfdb8('0x1b')]||0x96;this[_0xfdb8('0x1c')]=_0x5b2c4b[_0xfdb8('0x1c')]||0x3;this[_0xfdb8('0x1d')]=_0x5b2c4b['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0x5b2c4b[_0xfdb8('0x1e')]||_0xfdb8('0x1f');this[_0xfdb8('0x20')]=_0x5b2c4b['dialPrefix']||undefined;this[_0xfdb8('0x21')]=_0x5b2c4b[_0xfdb8('0x21')]||undefined;this[_0xfdb8('0x22')]=_0x5b2c4b[_0xfdb8('0x22')]||undefined;this[_0xfdb8('0x23')]=_0x5b2c4b[_0xfdb8('0x23')]?_0x5b2c4b[_0xfdb8('0x23')]:undefined;this[_0xfdb8('0x24')]=_0x5b2c4b['Trunk']?_0x5b2c4b[_0xfdb8('0x24')]:undefined;this[_0xfdb8('0x25')]=_0x5b2c4b[_0xfdb8('0x25')]?_0x5b2c4b['Interval']:undefined;this['SquareProject']=_0x5b2c4b['SquareProject']?_0x5b2c4b[_0xfdb8('0x26')]:undefined;this[_0xfdb8('0x27')]=_0x5b2c4b[_0xfdb8('0x26')]?_0x5b2c4b[_0xfdb8('0x26')][_0xfdb8('0x0')]:undefined;this[_0xfdb8('0x28')]=_0x5b2c4b[_0xfdb8('0x28')]||![];this[_0xfdb8('0x29')]=_0x5b2c4b['dialAMDInitialSilence'];this[_0xfdb8('0x2a')]=_0x5b2c4b[_0xfdb8('0x2a')];this[_0xfdb8('0x2b')]=_0x5b2c4b['dialAMDAfterGreetingSilence'];this[_0xfdb8('0x2c')]=_0x5b2c4b[_0xfdb8('0x2c')];this[_0xfdb8('0x2d')]=_0x5b2c4b[_0xfdb8('0x2d')];this[_0xfdb8('0x2e')]=_0x5b2c4b[_0xfdb8('0x2e')];this['dialAMDMaximumNumberOfWords']=_0x5b2c4b[_0xfdb8('0x2f')];this[_0xfdb8('0x30')]=_0x5b2c4b[_0xfdb8('0x30')];this[_0xfdb8('0x31')]=_0x5b2c4b[_0xfdb8('0x31')];}module[_0xfdb8('0x32')]=Campaign;
\ No newline at end of file
+var _0xc6c5=['ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','temp'];(function(_0x5a3364,_0x1a50a6){var _0x1bf09a=function(_0x4ff4e7){while(--_0x4ff4e7){_0x5a3364['push'](_0x5a3364['shift']());}};_0x1bf09a(++_0x1a50a6);}(_0xc6c5,0x14c));var _0x5c6c=function(_0x494525,_0x42e87a){_0x494525=_0x494525-0x0;var _0x2d1610=_0xc6c5[_0x494525];return _0x2d1610;};'use strict';function Campaign(_0x410b8e){this['id']=_0x410b8e['id']||0x0;this[_0x5c6c('0x0')]=_0x410b8e[_0x5c6c('0x0')]||'';this['type']=_0x410b8e[_0x5c6c('0x1')]||_0x5c6c('0x2');this['originated']=0x0;this[_0x5c6c('0x3')]=0x0;this[_0x5c6c('0x4')]=0x0;this[_0x5c6c('0x5')]=0x0;this['message']='';this[_0x5c6c('0x6')]=!![];this[_0x5c6c('0x7')]=_0x410b8e[_0x5c6c('0x7')];this[_0x5c6c('0x8')]=_0x410b8e[_0x5c6c('0x8')];this[_0x5c6c('0x9')]=_0x410b8e['dialTimezone']||null;this[_0x5c6c('0xa')]=_0x410b8e[_0x5c6c('0xa')]?_0x410b8e['dialGlobalInterval']:null;this[_0x5c6c('0xb')]=_0x410b8e['dialOriginateCallerIdName'];this[_0x5c6c('0xc')]=_0x410b8e[_0x5c6c('0xc')];this[_0x5c6c('0xd')]=_0x410b8e[_0x5c6c('0xd')]||0x1e;this[_0x5c6c('0xe')]=_0x410b8e[_0x5c6c('0xe')];this[_0x5c6c('0xf')]=_0x410b8e['dialCongestionRetryFrequency'];this['dialBusyMaxRetry']=_0x410b8e['dialBusyMaxRetry'];this[_0x5c6c('0x10')]=_0x410b8e[_0x5c6c('0x10')];this[_0x5c6c('0x11')]=_0x410b8e[_0x5c6c('0x11')];this[_0x5c6c('0x12')]=_0x410b8e['dialNoAnswerRetryFrequency'];this[_0x5c6c('0x13')]=_0x410b8e[_0x5c6c('0x13')];this['dialNoSuchNumberMaxRetry']=_0x410b8e[_0x5c6c('0x14')]||0x3;this[_0x5c6c('0x15')]=_0x410b8e[_0x5c6c('0x15')]||0x96;this[_0x5c6c('0x16')]=_0x410b8e['dialDropMaxRetry']||0x3;this[_0x5c6c('0x17')]=_0x410b8e[_0x5c6c('0x17')]||0x96;this[_0x5c6c('0x18')]=_0x410b8e['dialAbandonedMaxRetry']||0x3;this[_0x5c6c('0x19')]=_0x410b8e[_0x5c6c('0x19')]||0x96;this[_0x5c6c('0x1a')]=_0x410b8e['dialMachineMaxRetry']||0x3;this[_0x5c6c('0x1b')]=_0x410b8e[_0x5c6c('0x1b')]||0x96;this[_0x5c6c('0x1c')]=_0x410b8e[_0x5c6c('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x410b8e['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0x410b8e[_0x5c6c('0x1d')]||'DESC';this[_0x5c6c('0x1e')]=_0x410b8e[_0x5c6c('0x1e')]||undefined;this[_0x5c6c('0x1f')]=_0x410b8e['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x5c6c('0x20')]=_0x410b8e[_0x5c6c('0x20')]||undefined;this['TrunkBackup']=_0x410b8e[_0x5c6c('0x21')]?_0x410b8e[_0x5c6c('0x21')]:undefined;this[_0x5c6c('0x22')]=_0x410b8e[_0x5c6c('0x22')]?_0x410b8e['Trunk']:undefined;this[_0x5c6c('0x23')]=_0x410b8e[_0x5c6c('0x23')]?_0x410b8e[_0x5c6c('0x23')]:undefined;this[_0x5c6c('0x24')]=_0x410b8e[_0x5c6c('0x24')]?_0x410b8e[_0x5c6c('0x24')]:undefined;this[_0x5c6c('0x25')]=_0x410b8e[_0x5c6c('0x24')]?_0x410b8e[_0x5c6c('0x24')][_0x5c6c('0x0')]:undefined;this['dialAMDActive']=_0x410b8e[_0x5c6c('0x26')]||![];this['dialAMDInitialSilence']=_0x410b8e[_0x5c6c('0x27')];this['dialAMDGreeting']=_0x410b8e[_0x5c6c('0x28')];this[_0x5c6c('0x29')]=_0x410b8e[_0x5c6c('0x29')];this[_0x5c6c('0x2a')]=_0x410b8e[_0x5c6c('0x2a')];this['dialAMDMinWordLength']=_0x410b8e['dialAMDMinWordLength'];this[_0x5c6c('0x2b')]=_0x410b8e[_0x5c6c('0x2b')];this[_0x5c6c('0x2c')]=_0x410b8e[_0x5c6c('0x2c')];this[_0x5c6c('0x2d')]=_0x410b8e[_0x5c6c('0x2d')];this['dialAMDMaximumWordLength']=_0x410b8e[_0x5c6c('0x2e')];}module[_0x5c6c('0x2f')]=Campaign;
\ No newline at end of file
index bacd71e..75648f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc401=['holdtime','type','disposition','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','exten','answered','unmanaged','abandoned','lastdata','duration'];(function(_0xceb25d,_0x8b481f){var _0x418984=function(_0x3c3561){while(--_0x3c3561){_0xceb25d['push'](_0xceb25d['shift']());}};_0x418984(++_0x8b481f);}(_0xc401,0x15d));var _0x1c40=function(_0x289f22,_0x53ac92){_0x289f22=_0x289f22-0x0;var _0x4a63ae=_0xc401[_0x289f22];return _0x4a63ae;};'use strict';function Channel(){this['starttime']=null;this[_0x1c40('0x0')]='';this[_0x1c40('0x1')]='';this[_0x1c40('0x2')]=0x0;this[_0x1c40('0x3')]='';this[_0x1c40('0x4')]=undefined;this[_0x1c40('0x5')]=undefined;this[_0x1c40('0x6')]=0x0;this[_0x1c40('0x7')]='';this[_0x1c40('0x8')]=0x0;this['linkedid']=0x0;this[_0x1c40('0x9')]=0x0;this[_0x1c40('0xa')]=![];this['answertime']=null;this['endtime']=null;this[_0x1c40('0xb')]=![];this[_0x1c40('0xc')]=![];this['lastapplication']='';this[_0x1c40('0xd')]='';this[_0x1c40('0xe')]=0x0;this['billableseconds']=0x0;this[_0x1c40('0xf')]=0x0;this[_0x1c40('0x10')]=null;this['tag']=null;this[_0x1c40('0x11')]=null;this['monitor']=![];this[_0x1c40('0x12')]=null;this[_0x1c40('0x13')]=null;this[_0x1c40('0x14')]=[];this[_0x1c40('0x15')]=undefined;this[_0x1c40('0x16')]=undefined;this[_0x1c40('0x17')]=undefined;this[_0x1c40('0x18')]=0x0;}module[_0x1c40('0x19')]=Channel;
\ No newline at end of file
+var _0x2deb=['transferconnectedlinenum','transferType','exports','starttime','channel','destinationchannel','calleridnum','connectedlinename','accountcode','context','uniqueid','answered','answertime','endtime','abandoned','lastapplication','duration','billableseconds','holdtime','tag','disposition','monitor','monitorFilename','transfercalleridnum'];(function(_0x45edaa,_0x5be33a){var _0x3592f7=function(_0xfdaf26){while(--_0xfdaf26){_0x45edaa['push'](_0x45edaa['shift']());}};_0x3592f7(++_0x5be33a);}(_0x2deb,0xdb));var _0xb2de=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2deb[_0x3dd15e];return _0x231fd0;};'use strict';function Channel(){this[_0xb2de('0x0')]=null;this[_0xb2de('0x1')]='';this[_0xb2de('0x2')]='';this[_0xb2de('0x3')]=0x0;this['calleridname']='';this['connectedlinenum']=undefined;this[_0xb2de('0x4')]=undefined;this[_0xb2de('0x5')]=0x0;this[_0xb2de('0x6')]='';this[_0xb2de('0x7')]=0x0;this['linkedid']=0x0;this['exten']=0x0;this[_0xb2de('0x8')]=![];this[_0xb2de('0x9')]=null;this[_0xb2de('0xa')]=null;this['unmanaged']=![];this[_0xb2de('0xb')]=![];this[_0xb2de('0xc')]='';this['lastdata']='';this[_0xb2de('0xd')]=0x0;this[_0xb2de('0xe')]=0x0;this[_0xb2de('0xf')]=0x0;this['type']=null;this[_0xb2de('0x10')]=null;this[_0xb2de('0x11')]=null;this[_0xb2de('0x12')]=![];this[_0xb2de('0x13')]=null;this['queue']=null;this['monitors']=[];this[_0xb2de('0x14')]=undefined;this[_0xb2de('0x15')]=undefined;this[_0xb2de('0x16')]=undefined;this['mohtime']=0x0;}module[_0xb2de('0x17')]=Channel;
\ No newline at end of file
index 3ea9ab1..8d12a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x171f=['tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x171f,0x1b2));var _0xf171=function(_0x28d225,_0x43be18){_0x28d225=_0x28d225-0x0;var _0x1f79e1=_0x171f[_0x28d225];return _0x1f79e1;};'use strict';function DeskAccount(_0x2e7acf){this['id']=_0x2e7acf['id']||0x0;this[_0xf171('0x0')]=_0x2e7acf['name']||'';this[_0xf171('0x1')]=_0x2e7acf[_0xf171('0x1')]||'';this['remoteUri']=_0x2e7acf[_0xf171('0x2')]||'';this[_0xf171('0x3')]=_0x2e7acf[_0xf171('0x3')]||'';this[_0xf171('0x4')]=_0x2e7acf[_0xf171('0x4')]||'';this[_0xf171('0x5')]=_0x2e7acf[_0xf171('0x5')]||'';this[_0xf171('0x6')]=_0x2e7acf[_0xf171('0x6')]||'';this['token']=_0x2e7acf[_0xf171('0x7')]||'';this[_0xf171('0x8')]=_0x2e7acf[_0xf171('0x8')]||'';this[_0xf171('0x9')]=_0x2e7acf[_0xf171('0x9')]||'';this[_0xf171('0xa')]=_0x2e7acf[_0xf171('0xa')]||'';this[_0xf171('0xb')]=_0x2e7acf[_0xf171('0xb')]||{};}module[_0xf171('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x0287=['Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x47615c,_0x2536db){var _0x2d797c=function(_0x290b49){while(--_0x290b49){_0x47615c['push'](_0x47615c['shift']());}};_0x2d797c(++_0x2536db);}(_0x0287,0xd2));var _0x7028=function(_0x2f7cc0,_0xa7ddc9){_0x2f7cc0=_0x2f7cc0-0x0;var _0x42ac73=_0x0287[_0x2f7cc0];return _0x42ac73;};'use strict';function DeskAccount(_0x510df5){this['id']=_0x510df5['id']||0x0;this[_0x7028('0x0')]=_0x510df5[_0x7028('0x0')]||'';this[_0x7028('0x1')]=_0x510df5[_0x7028('0x1')]||'';this[_0x7028('0x2')]=_0x510df5[_0x7028('0x2')]||'';this[_0x7028('0x3')]=_0x510df5['authType']||'';this[_0x7028('0x4')]=_0x510df5[_0x7028('0x4')]||'';this[_0x7028('0x5')]=_0x510df5[_0x7028('0x5')]||'';this[_0x7028('0x6')]=_0x510df5[_0x7028('0x6')]||'';this[_0x7028('0x7')]=_0x510df5[_0x7028('0x7')]||'';this['tokenSecret']=_0x510df5[_0x7028('0x8')]||'';this[_0x7028('0x9')]=_0x510df5[_0x7028('0x9')]||'';this[_0x7028('0xa')]=_0x510df5['serverUrl']||'';this[_0x7028('0xb')]=_0x510df5[_0x7028('0xb')]||{};}module[_0x7028('0xc')]=DeskAccount;
\ No newline at end of file
index 02865b6..10ec7d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e72=['clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','name','username','password','remoteUri','tenantId'];(function(_0x405a1f,_0x446aa3){var _0x4fd010=function(_0xc2ed83){while(--_0xc2ed83){_0x405a1f['push'](_0x405a1f['shift']());}};_0x4fd010(++_0x446aa3);}(_0x9e72,0x150));var _0x29e7=function(_0x475053,_0x2144ac){_0x475053=_0x475053-0x0;var _0x1a7b9d=_0x9e72[_0x475053];return _0x1a7b9d;};'use strict';function Dynamics365Account(_0x198f57){this['id']=_0x198f57['id']||0x0;this[_0x29e7('0x0')]=_0x198f57[_0x29e7('0x0')]||'';this[_0x29e7('0x1')]=_0x198f57['username']||'';this[_0x29e7('0x2')]=_0x198f57['password']||'';this['remoteUri']=_0x198f57[_0x29e7('0x3')]||'';this[_0x29e7('0x4')]=_0x198f57[_0x29e7('0x4')]||'';this[_0x29e7('0x5')]=_0x198f57[_0x29e7('0x5')]||'';this[_0x29e7('0x6')]=_0x198f57[_0x29e7('0x6')]||{};this[_0x29e7('0x7')]=_0x198f57[_0x29e7('0x7')]||'';this['modernAuthentication']=_0x198f57[_0x29e7('0x8')]||![];this[_0x29e7('0x9')]=_0x198f57[_0x29e7('0x9')]||{};this['CloudProvider']=_0x198f57[_0x29e7('0xa')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0x0a9b=['name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports'];(function(_0x2e1879,_0x25c62a){var _0x5d2cc3=function(_0x881805){while(--_0x881805){_0x2e1879['push'](_0x2e1879['shift']());}};_0x5d2cc3(++_0x25c62a);}(_0x0a9b,0x1a4));var _0xb0a9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0a9b[_0x3dd15e];return _0x231fd0;};'use strict';function Dynamics365Account(_0x1188f9){this['id']=_0x1188f9['id']||0x0;this[_0xb0a9('0x0')]=_0x1188f9[_0xb0a9('0x0')]||'';this[_0xb0a9('0x1')]=_0x1188f9[_0xb0a9('0x1')]||'';this['password']=_0x1188f9[_0xb0a9('0x2')]||'';this[_0xb0a9('0x3')]=_0x1188f9['remoteUri']||'';this[_0xb0a9('0x4')]=_0x1188f9[_0xb0a9('0x4')]||'';this[_0xb0a9('0x5')]=_0x1188f9[_0xb0a9('0x5')]||'';this[_0xb0a9('0x6')]=_0x1188f9[_0xb0a9('0x6')]||{};this[_0xb0a9('0x7')]=_0x1188f9[_0xb0a9('0x7')]||'';this[_0xb0a9('0x8')]=_0x1188f9[_0xb0a9('0x8')]||![];this[_0xb0a9('0x9')]=_0x1188f9[_0xb0a9('0x9')]||{};this['CloudProvider']=_0x1188f9[_0xb0a9('0xa')]||{};}module[_0xb0a9('0xb')]=Dynamics365Account;
\ No newline at end of file
index 47d842e..3288a8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fb9=['ecm','headerinfo','localstationid','minrate','maxrate','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','name','description'];(function(_0x4e9861,_0x25fe5f){var _0x49802f=function(_0x76932){while(--_0x76932){_0x4e9861['push'](_0x4e9861['shift']());}};_0x49802f(++_0x25fe5f);}(_0x7fb9,0x1ae));var _0x97fb=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x7fb9[_0x5e3b04];return _0x1fc44d;};'use strict';function FaxAccount(_0x52db8c){this['id']=_0x52db8c['id']||0x0;this['name']=_0x52db8c[_0x97fb('0x0')]||'';this[_0x97fb('0x1')]=_0x52db8c[_0x97fb('0x1')];this['ecm']=_0x52db8c[_0x97fb('0x2')];this[_0x97fb('0x3')]=_0x52db8c[_0x97fb('0x3')];this[_0x97fb('0x4')]=_0x52db8c[_0x97fb('0x4')];this[_0x97fb('0x5')]=_0x52db8c[_0x97fb('0x5')]||0x960;this['maxrate']=_0x52db8c[_0x97fb('0x6')]||0x3840;this['modem']=_0x52db8c['modem']||_0x97fb('0x7');this[_0x97fb('0x8')]=_0x52db8c[_0x97fb('0x8')]||'no';this[_0x97fb('0x9')]=_0x52db8c['faxdetect']||'no';this['t38timeout']=_0x52db8c[_0x97fb('0xa')]||0x1388;this[_0x97fb('0xb')]=_0x52db8c[_0x97fb('0xb')]||_0x97fb('0xc');this['Trunk']=_0x52db8c[_0x97fb('0xd')]?_0x52db8c['Trunk']:undefined;this[_0x97fb('0xe')]=_0x52db8c['ListId'];this[_0x97fb('0xf')]=_0x52db8c[_0x97fb('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0xdc30=['ecm','headerinfo','localstationid','minrate','maxrate','gateway','t38timeout','tech','Trunk','ListId','key','exports','name','description'];(function(_0x10b2c4,_0x4b10ed){var _0xb10a8e=function(_0x58ff68){while(--_0x58ff68){_0x10b2c4['push'](_0x10b2c4['shift']());}};_0xb10a8e(++_0x4b10ed);}(_0xdc30,0x194));var _0x0dc3=function(_0x570496,_0x26a150){_0x570496=_0x570496-0x0;var _0x1d4204=_0xdc30[_0x570496];return _0x1d4204;};'use strict';function FaxAccount(_0x42fe69){this['id']=_0x42fe69['id']||0x0;this[_0x0dc3('0x0')]=_0x42fe69[_0x0dc3('0x0')]||'';this[_0x0dc3('0x1')]=_0x42fe69[_0x0dc3('0x1')];this[_0x0dc3('0x2')]=_0x42fe69[_0x0dc3('0x2')];this[_0x0dc3('0x3')]=_0x42fe69[_0x0dc3('0x3')];this[_0x0dc3('0x4')]=_0x42fe69[_0x0dc3('0x4')];this[_0x0dc3('0x5')]=_0x42fe69[_0x0dc3('0x5')]||0x960;this['maxrate']=_0x42fe69[_0x0dc3('0x6')]||0x3840;this['modem']=_0x42fe69['modem']||'v17,v27,v29';this[_0x0dc3('0x7')]=_0x42fe69[_0x0dc3('0x7')]||'no';this['faxdetect']=_0x42fe69['faxdetect']||'no';this[_0x0dc3('0x8')]=_0x42fe69['t38timeout']||0x1388;this[_0x0dc3('0x9')]=_0x42fe69[_0x0dc3('0x9')]||'SIP';this[_0x0dc3('0xa')]=_0x42fe69[_0x0dc3('0xa')]?_0x42fe69['Trunk']:undefined;this[_0x0dc3('0xb')]=_0x42fe69[_0x0dc3('0xb')];this[_0x0dc3('0xc')]=_0x42fe69[_0x0dc3('0xc')];}module[_0x0dc3('0xd')]=FaxAccount;
\ No newline at end of file
index 007c3af..1dfc947 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5eb=['Configurations','exports','name','username','apiKey','remoteUri','serverUrl'];(function(_0x17e38a,_0x100748){var _0x60c392=function(_0x8ac392){while(--_0x8ac392){_0x17e38a['push'](_0x17e38a['shift']());}};_0x60c392(++_0x100748);}(_0xf5eb,0x17c));var _0xbf5e=function(_0x599e7d,_0x19581e){_0x599e7d=_0x599e7d-0x0;var _0x156564=_0xf5eb[_0x599e7d];return _0x156564;};'use strict';function FreshdeskAccount(_0x18d78a){this['id']=_0x18d78a['id']||0x0;this['name']=_0x18d78a[_0xbf5e('0x0')]||'';this[_0xbf5e('0x1')]=_0x18d78a[_0xbf5e('0x1')]||'';this[_0xbf5e('0x2')]=_0x18d78a['token']||'';this[_0xbf5e('0x3')]=_0x18d78a[_0xbf5e('0x3')]||'';this[_0xbf5e('0x4')]=_0x18d78a[_0xbf5e('0x4')]||'';this[_0xbf5e('0x5')]=_0x18d78a[_0xbf5e('0x5')]||{};}module[_0xbf5e('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0x25c0=['username','apiKey','token','remoteUri','serverUrl','Configurations','name'];(function(_0x4800c4,_0x13b31e){var _0x5bd103=function(_0x57b08a){while(--_0x57b08a){_0x4800c4['push'](_0x4800c4['shift']());}};_0x5bd103(++_0x13b31e);}(_0x25c0,0xb5));var _0x025c=function(_0x5af903,_0x258d63){_0x5af903=_0x5af903-0x0;var _0x6b0e75=_0x25c0[_0x5af903];return _0x6b0e75;};'use strict';function FreshdeskAccount(_0x424bc9){this['id']=_0x424bc9['id']||0x0;this[_0x025c('0x0')]=_0x424bc9[_0x025c('0x0')]||'';this[_0x025c('0x1')]=_0x424bc9[_0x025c('0x1')]||'';this[_0x025c('0x2')]=_0x424bc9[_0x025c('0x3')]||'';this[_0x025c('0x4')]=_0x424bc9['remoteUri']||'';this[_0x025c('0x5')]=_0x424bc9[_0x025c('0x5')]||'';this[_0x025c('0x6')]=_0x424bc9[_0x025c('0x6')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index 423169e..02eb9ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa992=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x115001,_0x5ead11){var _0x201665=function(_0x530009){while(--_0x530009){_0x115001['push'](_0x115001['shift']());}};_0x201665(++_0x5ead11);}(_0xa992,0x18c));var _0x2a99=function(_0x3297c1,_0x47e45d){_0x3297c1=_0x3297c1-0x0;var _0x58c956=_0xa992[_0x3297c1];return _0x58c956;};'use strict';function FreshsalesAccount(_0x90172){this['id']=_0x90172['id']||0x0;this[_0x2a99('0x0')]=_0x90172[_0x2a99('0x0')]||'';this[_0x2a99('0x1')]=_0x90172['username']||'';this[_0x2a99('0x2')]=_0x90172[_0x2a99('0x3')]||'';this[_0x2a99('0x4')]=_0x90172[_0x2a99('0x4')]||'';this[_0x2a99('0x5')]=_0x90172[_0x2a99('0x5')]||'';this[_0x2a99('0x6')]=_0x90172[_0x2a99('0x6')]||{};}module[_0x2a99('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0xdb94=['token','remoteUri','serverUrl','Configurations','exports','name','username','apiKey'];(function(_0x395499,_0x4fecf1){var _0x2d8024=function(_0x104b9e){while(--_0x104b9e){_0x395499['push'](_0x395499['shift']());}};_0x2d8024(++_0x4fecf1);}(_0xdb94,0xe5));var _0x4db9=function(_0x11d30f,_0x235b86){_0x11d30f=_0x11d30f-0x0;var _0x118d60=_0xdb94[_0x11d30f];return _0x118d60;};'use strict';function FreshsalesAccount(_0x247e6b){this['id']=_0x247e6b['id']||0x0;this[_0x4db9('0x0')]=_0x247e6b[_0x4db9('0x0')]||'';this['username']=_0x247e6b[_0x4db9('0x1')]||'';this[_0x4db9('0x2')]=_0x247e6b[_0x4db9('0x3')]||'';this[_0x4db9('0x4')]=_0x247e6b[_0x4db9('0x4')]||'';this['serverUrl']=_0x247e6b[_0x4db9('0x5')]||'';this['Configurations']=_0x247e6b[_0x4db9('0x6')]||{};}module[_0x4db9('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 0ded0b0..c9fbb0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91fa=['queuecallerexit','channel','connectedlinenum','connectedlinename','context','exten','priority','assigned','motionChannel','voice','mohtime','variables','exports','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x91fa,0xa3));var _0xa91f=function(_0x4bb593,_0x272ed0){_0x4bb593=_0x4bb593-0x0;var _0x2da2d8=_0x91fa[_0x4bb593];return _0x2da2d8;};'use strict';function QueueReport(){this['type']=_0xa91f('0x0');this[_0xa91f('0x1')]='';this[_0xa91f('0x2')]='';this[_0xa91f('0x3')]='';this[_0xa91f('0x4')]='';this[_0xa91f('0x5')]=null;this[_0xa91f('0x6')]=null;this[_0xa91f('0x7')]=0x1;this['count']=0x1;this[_0xa91f('0x8')]=![];this[_0xa91f('0x9')]=null;this[_0xa91f('0xa')]=![];this[_0xa91f('0xb')]=null;this[_0xa91f('0xc')]=![];this['queuecallerexitAt']=null;this['originalposition']=0x1;this[_0xa91f('0xd')]='';this[_0xa91f('0xe')]='';this[_0xa91f('0xf')]='';this['accountcode']='';this[_0xa91f('0x10')]='';this[_0xa91f('0x11')]='';this[_0xa91f('0x12')]='';this['holdtime']=0x0;this[_0xa91f('0x13')]=![];this['lastAssignedTo']='';this[_0xa91f('0x14')]=_0xa91f('0x15');this['routealias']=null;this[_0xa91f('0x16')]=0x0;this[_0xa91f('0x17')]={};}module[_0xa91f('0x18')]=QueueReport;
\ No newline at end of file
+var _0x3d18=['exports','type','uniqueid','queue','queuecallerjoinAt','queuecallerleaveAt','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','holdtime','lastAssignedTo','voice','mohtime','variables'];(function(_0x3d3130,_0x3f17a6){var _0x3b43b6=function(_0x5ae389){while(--_0x5ae389){_0x3d3130['push'](_0x3d3130['shift']());}};_0x3b43b6(++_0x3f17a6);}(_0x3d18,0x6a));var _0x83d1=function(_0x1e691f,_0x215f5f){_0x1e691f=_0x1e691f-0x0;var _0x5b37cb=_0x3d18[_0x1e691f];return _0x5b37cb;};'use strict';function QueueReport(){this[_0x83d1('0x0')]='inbound';this[_0x83d1('0x1')]='';this['calleridnum']='';this['calleridname']='';this[_0x83d1('0x2')]='';this[_0x83d1('0x3')]=null;this[_0x83d1('0x4')]=null;this['position']=0x1;this['count']=0x1;this[_0x83d1('0x5')]=![];this[_0x83d1('0x6')]=null;this[_0x83d1('0x7')]=![];this['queuecallercompleteAt']=null;this[_0x83d1('0x8')]=![];this[_0x83d1('0x9')]=null;this[_0x83d1('0xa')]=0x1;this[_0x83d1('0xb')]='';this[_0x83d1('0xc')]='';this[_0x83d1('0xd')]='';this[_0x83d1('0xe')]='';this['context']='';this['exten']='';this['priority']='';this[_0x83d1('0xf')]=0x0;this['assigned']=![];this[_0x83d1('0x10')]='';this['motionChannel']=_0x83d1('0x11');this[_0x83d1('0x12')]=0x0;this[_0x83d1('0x13')]={};}module[_0x83d1('0x14')]=QueueReport;
\ No newline at end of file
index e072948..f8cc240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f1a=['username','remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl','Configurations','exports','name'];(function(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0x8f1a,0xba));var _0xa8f1=function(_0x5e5319,_0xeb938e){_0x5e5319=_0x5e5319-0x0;var _0x5636f7=_0x8f1a[_0x5e5319];return _0x5636f7;};'use strict';function SalesforceAccount(_0x1941f7){this['id']=_0x1941f7['id']||0x0;this[_0xa8f1('0x0')]=_0x1941f7[_0xa8f1('0x0')]||'';this[_0xa8f1('0x1')]=_0x1941f7['username']||'';this['remoteUri']=_0x1941f7[_0xa8f1('0x2')]||'';this[_0xa8f1('0x3')]=_0x1941f7[_0xa8f1('0x3')]||'';this[_0xa8f1('0x4')]=_0x1941f7[_0xa8f1('0x4')]||'';this[_0xa8f1('0x5')]=_0x1941f7[_0xa8f1('0x5')]||'';this[_0xa8f1('0x6')]=_0x1941f7[_0xa8f1('0x6')]||'';this['type']=_0x1941f7[_0xa8f1('0x7')]||'integrationTab';this[_0xa8f1('0x8')]=_0x1941f7[_0xa8f1('0x8')]||'';this[_0xa8f1('0x9')]=_0x1941f7['Configurations']||{};}module[_0xa8f1('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0x8069=['remoteUri','clientId','clientSecret','securityToken','type','serverUrl','Configurations','name','username'];(function(_0x22e817,_0x55df1f){var _0x47f160=function(_0x2fbbac){while(--_0x2fbbac){_0x22e817['push'](_0x22e817['shift']());}};_0x47f160(++_0x55df1f);}(_0x8069,0xbb));var _0x9806=function(_0x3bc626,_0x3dcc09){_0x3bc626=_0x3bc626-0x0;var _0x569023=_0x8069[_0x3bc626];return _0x569023;};'use strict';function SalesforceAccount(_0xffb06){this['id']=_0xffb06['id']||0x0;this[_0x9806('0x0')]=_0xffb06[_0x9806('0x0')]||'';this[_0x9806('0x1')]=_0xffb06['username']||'';this[_0x9806('0x2')]=_0xffb06[_0x9806('0x2')]||'';this['password']=_0xffb06['password']||'';this[_0x9806('0x3')]=_0xffb06[_0x9806('0x3')]||'';this['clientSecret']=_0xffb06[_0x9806('0x4')]||'';this[_0x9806('0x5')]=_0xffb06['securityToken']||'';this['type']=_0xffb06[_0x9806('0x6')]||'integrationTab';this[_0x9806('0x7')]=_0xffb06[_0x9806('0x7')]||'';this[_0x9806('0x8')]=_0xffb06['Configurations']||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index 30b486a..cfb1376 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c6f=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x6c6f,0xf8));var _0xf6c6=function(_0x6110f8,_0x57b72c){_0x6110f8=_0x6110f8-0x0;var _0x2a5037=_0x6c6f[_0x6110f8];return _0x2a5037;};'use strict';function ServicenowAccount(_0x132ce2){this['id']=_0x132ce2['id']||0x0;this['name']=_0x132ce2[_0xf6c6('0x0')]||'';this[_0xf6c6('0x1')]=_0x132ce2[_0xf6c6('0x1')]||'';this[_0xf6c6('0x2')]=_0x132ce2['password']||'';this[_0xf6c6('0x3')]=_0x132ce2[_0xf6c6('0x3')]||'';this['serverUrl']=_0x132ce2[_0xf6c6('0x4')]||'';this['Configurations']=_0x132ce2[_0xf6c6('0x5')]||{};}module[_0xf6c6('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0xb5be=['name','username','password','serverUrl','Configurations'];(function(_0x2c7fc0,_0x48d943){var _0x2e8516=function(_0x5c0f50){while(--_0x5c0f50){_0x2c7fc0['push'](_0x2c7fc0['shift']());}};_0x2e8516(++_0x48d943);}(_0xb5be,0xa0));var _0xeb5b=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xb5be[_0x53ccf2];return _0x5a2964;};'use strict';function ServicenowAccount(_0x53dd3c){this['id']=_0x53dd3c['id']||0x0;this[_0xeb5b('0x0')]=_0x53dd3c[_0xeb5b('0x0')]||'';this['username']=_0x53dd3c[_0xeb5b('0x1')]||'';this[_0xeb5b('0x2')]=_0x53dd3c[_0xeb5b('0x2')]||'';this['remoteUri']=_0x53dd3c['remoteUri']||'';this[_0xeb5b('0x3')]=_0x53dd3c[_0xeb5b('0x3')]||'';this[_0xeb5b('0x4')]=_0x53dd3c[_0xeb5b('0x4')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index c194dc9..e14c861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27d4=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x27d4,0x1cc));var _0x427d=function(_0x19069d,_0x46921e){_0x19069d=_0x19069d-0x0;var _0x39463a=_0x27d4[_0x19069d];return _0x39463a;};'use strict';function SugarcrmAccount(_0x59c110){this['id']=_0x59c110['id']||0x0;this[_0x427d('0x0')]=_0x59c110['name']||'';this[_0x427d('0x1')]=_0x59c110['username']||'';this['password']=_0x59c110[_0x427d('0x2')]||'';this[_0x427d('0x3')]=_0x59c110[_0x427d('0x3')]||'';this[_0x427d('0x4')]=_0x59c110['serverUrl']||'';this[_0x427d('0x5')]=_0x59c110[_0x427d('0x5')]||{};}module[_0x427d('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x7b8b=['serverUrl','Configurations','name','username','password','remoteUri'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x7b8b,0xd4));var _0xb7b8=function(_0x3da832,_0x2133f1){_0x3da832=_0x3da832-0x0;var _0xe602f2=_0x7b8b[_0x3da832];return _0xe602f2;};'use strict';function SugarcrmAccount(_0xd04930){this['id']=_0xd04930['id']||0x0;this[_0xb7b8('0x0')]=_0xd04930['name']||'';this[_0xb7b8('0x1')]=_0xd04930['username']||'';this['password']=_0xd04930[_0xb7b8('0x2')]||'';this[_0xb7b8('0x3')]=_0xd04930['remoteUri']||'';this[_0xb7b8('0x4')]=_0xd04930[_0xb7b8('0x4')]||'';this[_0xb7b8('0x5')]=_0xd04930[_0xb7b8('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index 839d44d..d79bc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa530=['stateTime','status','exports','name','accountcode','state','unknown'];(function(_0x3a7b88,_0x22abc2){var _0x45fc51=function(_0xc7d0ec){while(--_0xc7d0ec){_0x3a7b88['push'](_0x3a7b88['shift']());}};_0x45fc51(++_0x22abc2);}(_0xa530,0x7a));var _0x0a53=function(_0x16bd44,_0x3c91ba){_0x16bd44=_0x16bd44-0x0;var _0x368a61=_0xa530[_0x16bd44];return _0x368a61;};'use strict';function Telephone(_0x4b0855){this['id']=_0x4b0855['id']||0x0;this[_0x0a53('0x0')]=_0x4b0855['name']||'';this[_0x0a53('0x1')]=_0x4b0855[_0x0a53('0x1')]||'';this[_0x0a53('0x2')]=_0x0a53('0x3');this[_0x0a53('0x4')]=0x0;this[_0x0a53('0x5')]='unknown';this['address']='';}module[_0x0a53('0x6')]=Telephone;
\ No newline at end of file
+var _0x3e74=['stateTime','status','address','exports','name','accountcode','state','unknown'];(function(_0x75044a,_0x244082){var _0x3400c3=function(_0x51f0d6){while(--_0x51f0d6){_0x75044a['push'](_0x75044a['shift']());}};_0x3400c3(++_0x244082);}(_0x3e74,0x1e4));var _0x43e7=function(_0x31e5a7,_0xa6774d){_0x31e5a7=_0x31e5a7-0x0;var _0x39bc5e=_0x3e74[_0x31e5a7];return _0x39bc5e;};'use strict';function Telephone(_0x573a04){this['id']=_0x573a04['id']||0x0;this['name']=_0x573a04[_0x43e7('0x0')]||'';this[_0x43e7('0x1')]=_0x573a04['accountcode']||'';this[_0x43e7('0x2')]=_0x43e7('0x3');this[_0x43e7('0x4')]=0x0;this[_0x43e7('0x5')]=_0x43e7('0x3');this[_0x43e7('0x6')]='';}module[_0x43e7('0x7')]=Telephone;
\ No newline at end of file
index ba1df18..eb1d320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x2867e7,_0x411657){var _0x5dbcad=function(_0x395883){while(--_0x395883){_0x2867e7['push'](_0x2867e7['shift']());}};_0x5dbcad(++_0x411657);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x53100f,_0x1bf485){var _0x154306=function(_0x3dba57){while(--_0x3dba57){_0x53100f['push'](_0x53100f['shift']());}};_0x154306(++_0x1bf485);}(_0xb10b,0x12a));var _0xbb10=function(_0x244cef,_0xbce3ec){_0x244cef=_0x244cef-0x0;var _0x32139b=_0xb10b[_0x244cef];return _0x32139b;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index 0f2acb2..9ea8d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x4d479c,_0x374518){var _0x322f7f=function(_0x146df6){while(--_0x146df6){_0x4d479c['push'](_0x4d479c['shift']());}};_0x322f7f(++_0x374518);}(_0x4fc2,0x111));var _0x24fc=function(_0x5e8935,_0x3d1365){_0x5e8935=_0x5e8935-0x0;var _0x417bc8=_0x4fc2[_0x5e8935];return _0x417bc8;};'use strict';function Trigger(_0x5ea3ab){this['id']=_0x5ea3ab['id']||0x0;this[_0x24fc('0x0')]=_0x5ea3ab[_0x24fc('0x0')]||'';this[_0x24fc('0x1')]=_0x5ea3ab['channel']||_0x24fc('0x2');this[_0x24fc('0x3')]=_0x5ea3ab[_0x24fc('0x3')]||![];this['AllConditions']=_0x5ea3ab[_0x24fc('0x4')]||[];this[_0x24fc('0x5')]=_0x5ea3ab['AnyConditions']||[];this[_0x24fc('0x6')]=_0x5ea3ab[_0x24fc('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0x5f66=['AllConditions','AnyConditions','Actions','name','channel','voice','status'];(function(_0x2ed8f3,_0x4aa12f){var _0x525a55=function(_0x4cfb58){while(--_0x4cfb58){_0x2ed8f3['push'](_0x2ed8f3['shift']());}};_0x525a55(++_0x4aa12f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x5f66[_0x4243a3];return _0x1b2a33;};'use strict';function Trigger(_0x253044){this['id']=_0x253044['id']||0x0;this[_0x65f6('0x0')]=_0x253044['name']||'';this[_0x65f6('0x1')]=_0x253044[_0x65f6('0x1')]||_0x65f6('0x2');this[_0x65f6('0x3')]=_0x253044[_0x65f6('0x3')]||![];this['AllConditions']=_0x253044[_0x65f6('0x4')]||[];this['AnyConditions']=_0x253044[_0x65f6('0x5')]||[];this[_0x65f6('0x6')]=_0x253044['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
index bb2da9c..6ea8b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd67=['exports','active','name','state','stateTime','status','unknown','registry','indexOf','split','host','domain','stateRegistry','defaultuser'];(function(_0x243f2e,_0x4b32dd){var _0x1400c0=function(_0x4b3823){while(--_0x4b3823){_0x243f2e['push'](_0x243f2e['shift']());}};_0x1400c0(++_0x4b32dd);}(_0xcd67,0x197));var _0x7cd6=function(_0x40e0cc,_0x30ef05){_0x40e0cc=_0x40e0cc-0x0;var _0x591d5e=_0xcd67[_0x40e0cc];return _0x591d5e;};'use strict';function Trunk(_0x4da9dd){this['id']=_0x4da9dd['id']||0x0;this[_0x7cd6('0x0')]=_0x4da9dd[_0x7cd6('0x0')]||![];this[_0x7cd6('0x1')]=_0x4da9dd[_0x7cd6('0x1')]||'';this[_0x7cd6('0x2')]='unknown';this[_0x7cd6('0x3')]=0x0;this[_0x7cd6('0x4')]=_0x7cd6('0x5');this[_0x7cd6('0x6')]=_0x4da9dd[_0x7cd6('0x6')]&&_0x4da9dd['registry'][_0x7cd6('0x7')](':')?_0x4da9dd[_0x7cd6('0x6')][_0x7cd6('0x8')](':')[0x0]:'';this[_0x7cd6('0x9')]='';this['port']='';this[_0x7cd6('0xa')]='';this['domainport']='';this['refresh']='';this[_0x7cd6('0xb')]=_0x7cd6('0x5');this['registrationtime']='';this['address']='';this[_0x7cd6('0xc')]=_0x4da9dd[_0x7cd6('0xc')]||'';}module[_0x7cd6('0xd')]=Trunk;
\ No newline at end of file
+var _0x0fd9=['active','name','state','unknown','stateTime','status','registry','indexOf','split','host','port','domain','domainport','refresh','stateRegistry','address','defaultuser','exports'];(function(_0x1de7d3,_0x50fb04){var _0x10de57=function(_0x4647d1){while(--_0x4647d1){_0x1de7d3['push'](_0x1de7d3['shift']());}};_0x10de57(++_0x50fb04);}(_0x0fd9,0x7e));var _0x90fd=function(_0x11d95f,_0x34f442){_0x11d95f=_0x11d95f-0x0;var _0x2b1a14=_0x0fd9[_0x11d95f];return _0x2b1a14;};'use strict';function Trunk(_0x38c346){this['id']=_0x38c346['id']||0x0;this[_0x90fd('0x0')]=_0x38c346[_0x90fd('0x0')]||![];this[_0x90fd('0x1')]=_0x38c346[_0x90fd('0x1')]||'';this[_0x90fd('0x2')]=_0x90fd('0x3');this[_0x90fd('0x4')]=0x0;this[_0x90fd('0x5')]=_0x90fd('0x3');this[_0x90fd('0x6')]=_0x38c346[_0x90fd('0x6')]&&_0x38c346['registry'][_0x90fd('0x7')](':')?_0x38c346[_0x90fd('0x6')][_0x90fd('0x8')](':')[0x0]:'';this[_0x90fd('0x9')]='';this[_0x90fd('0xa')]='';this[_0x90fd('0xb')]='';this[_0x90fd('0xc')]='';this[_0x90fd('0xd')]='';this[_0x90fd('0xe')]=_0x90fd('0x3');this['registrationtime']='';this[_0x90fd('0xf')]='';this[_0x90fd('0x10')]=_0x38c346[_0x90fd('0x10')]||'';}module[_0x90fd('0x11')]=Trunk;
\ No newline at end of file
index 5868855..9288799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b4b=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x5d7ae8,_0x48a800){var _0x680da3=function(_0xbe3fa0){while(--_0xbe3fa0){_0x5d7ae8['push'](_0x5d7ae8['shift']());}};_0x680da3(++_0x48a800);}(_0x7b4b,0x10d));var _0xb7b4=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x7b4b[_0x4e9d3c];return _0x2d0825;};'use strict';function voiceExtension(_0xb75822){this['id']=_0xb75822['id']||0x0;this[_0xb7b4('0x0')]=_0xb75822['exten']||'';this[_0xb7b4('0x1')]=_0xb75822['recordingFormat']||_0xb7b4('0x2');this[_0xb7b4('0x3')]=_0xb75822['mandatoryDisposition']||![];}module[_0xb7b4('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x24a8=['exports','exten','recordingFormat','mandatoryDisposition'];(function(_0x1a09f3,_0x55835f){var _0x4bf28c=function(_0x543041){while(--_0x543041){_0x1a09f3['push'](_0x1a09f3['shift']());}};_0x4bf28c(++_0x55835f);}(_0x24a8,0xa9));var _0x824a=function(_0x2eb895,_0x519fce){_0x2eb895=_0x2eb895-0x0;var _0x4b2733=_0x24a8[_0x2eb895];return _0x4b2733;};'use strict';function voiceExtension(_0x3e1aa2){this['id']=_0x3e1aa2['id']||0x0;this[_0x824a('0x0')]=_0x3e1aa2[_0x824a('0x0')]||'';this[_0x824a('0x1')]=_0x3e1aa2[_0x824a('0x1')]||'none';this[_0x824a('0x2')]=_0x3e1aa2['mandatoryDisposition']||![];}module[_0x824a('0x3')]=voiceExtension;
\ No newline at end of file
index d44795b..dab7645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','wav','wav49','gsm','fewestcalls','leastrecent','linear','rrmemory','rrordered','wrandom','name','monitor_format','inbound','waiting','total','sumDuration','sumHoldTime','sumBillable','abandoned','busy','invalid','loggedIn','notInUse','paused','ringing','ringInUse','talking','unavailable','unknown','acw','acwTimeout','autopause','message','originated','temp','dialTimezone','dialGlobalInterval','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix'];(function(_0x4114dd,_0x2ad862){var _0x26f44c=function(_0xad2246){while(--_0xad2246){_0x4114dd['push'](_0x4114dd['shift']());}};_0x26f44c(++_0x2ad862);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xc4aa[_0x8c43de];return _0xa6591b;};'use strict';var monitorFormat={'wav':_0xac4a('0x0'),'wav49':_0xac4a('0x1'),'gsm':_0xac4a('0x2')};var strategy={'fewestcalls':_0xac4a('0x3'),'leastrecent':_0xac4a('0x4'),'linear':_0xac4a('0x5'),'random':'random','ringall':'ringall','rr':'roundrobin','rrmemory':_0xac4a('0x6'),'rrordered':_0xac4a('0x7'),'wrandom':_0xac4a('0x8')};function VoiceQueue(_0x215f39){this['id']=_0x215f39['id']||0x0;this[_0xac4a('0x9')]=_0x215f39[_0xac4a('0x9')]||'';this[_0xac4a('0xa')]=_0x215f39[_0xac4a('0xa')]||'';this['type']=_0x215f39['type']||_0xac4a('0xb');this[_0xac4a('0xc')]=0x0;this[_0xac4a('0xd')]=0x0;this['answered']=0x0;this[_0xac4a('0xe')]=0x0;this[_0xac4a('0xf')]=0x0;this[_0xac4a('0x10')]=0x0;this['unmanaged']=0x0;this[_0xac4a('0x11')]=0x0;this['available']=0x0;this[_0xac4a('0x12')]=0x0;this['inUse']=0x0;this[_0xac4a('0x13')]=0x0;this[_0xac4a('0x14')]=0x0;this[_0xac4a('0x15')]=0x0;this['onHold']=0x0;this[_0xac4a('0x16')]=0x0;this[_0xac4a('0x17')]=0x0;this[_0xac4a('0x18')]=0x0;this[_0xac4a('0x19')]=0x0;this[_0xac4a('0x1a')]=0x0;this[_0xac4a('0x1b')]=0x0;this[_0xac4a('0x1c')]=_0x215f39[_0xac4a('0x1c')]||![];this[_0xac4a('0x1d')]=_0x215f39[_0xac4a('0x1d')]||0xa;this[_0xac4a('0x1e')]=_0x215f39[_0xac4a('0x1e')]||'no';this['sendMessageOneNotActive']=!![];this[_0xac4a('0x1f')]='';this[_0xac4a('0x20')]=0x0;this[_0xac4a('0x21')]=0x0;this[_0xac4a('0x22')]=_0x215f39[_0xac4a('0x22')]||null;this[_0xac4a('0x23')]=_0x215f39[_0xac4a('0x23')]?_0x215f39[_0xac4a('0x23')]:null;this['dialActive']=_0x215f39['dialActive'];this[_0xac4a('0x24')]=_0x215f39[_0xac4a('0x24')]||_0xac4a('0x25');this['dialLimitChannel']=_0x215f39[_0xac4a('0x26')]||0x0;this[_0xac4a('0x27')]=_0x215f39[_0xac4a('0x27')]||0x0;this[_0xac4a('0x28')]=_0x215f39[_0xac4a('0x28')]||0x1;this[_0xac4a('0x29')]=_0x215f39[_0xac4a('0x29')]||_0xac4a('0x2a');this['dialPredictiveOptimizationPercentage']=_0x215f39[_0xac4a('0x2b')]||0.03;this[_0xac4a('0x2c')]=_0x215f39['dialPredictiveInterval']||0x258;this[_0xac4a('0x2d')]=_0x215f39[_0xac4a('0x2d')]||_0xac4a('0x2e');this[_0xac4a('0x2f')]=_0x215f39['dialOriginateCallerIdNumber']||_0xac4a('0x2e');this[_0xac4a('0x30')]=_0x215f39[_0xac4a('0x30')]||0x1e;this[_0xac4a('0x31')]=_0x215f39[_0xac4a('0x31')]||_0xac4a('0x32');this[_0xac4a('0x33')]=_0x215f39[_0xac4a('0x33')]||0x3;this[_0xac4a('0x34')]=_0x215f39[_0xac4a('0x34')]||undefined;this[_0xac4a('0x35')]=_0x215f39[_0xac4a('0x35')]||0x3;this[_0xac4a('0x36')]=_0x215f39[_0xac4a('0x36')]||0x96;this[_0xac4a('0x37')]=_0x215f39[_0xac4a('0x37')]||0x3;this['dialBusyRetryFrequency']=_0x215f39[_0xac4a('0x38')]||0x96;this[_0xac4a('0x39')]=_0x215f39[_0xac4a('0x39')]||0x3;this[_0xac4a('0x3a')]=_0x215f39[_0xac4a('0x3a')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x215f39['dialNoSuchNumberMaxRetry']||0x3;this[_0xac4a('0x3b')]=_0x215f39[_0xac4a('0x3b')]||0x96;this[_0xac4a('0x3c')]=_0x215f39['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x215f39[_0xac4a('0x3d')]||0x96;this[_0xac4a('0x3e')]=_0x215f39[_0xac4a('0x3e')]||0x3;this[_0xac4a('0x3f')]=_0x215f39[_0xac4a('0x3f')]||0x96;this['dialMachineMaxRetry']=_0x215f39[_0xac4a('0x40')]||0x3;this['dialMachineRetryFrequency']=_0x215f39[_0xac4a('0x41')]||0x96;this['dialAgentRejectMaxRetry']=_0x215f39[_0xac4a('0x42')]||0x3;this[_0xac4a('0x43')]=_0x215f39[_0xac4a('0x43')]||0x96;this[_0xac4a('0x44')]=_0x215f39[_0xac4a('0x44')]||0x3;this[_0xac4a('0x45')]=_0x215f39[_0xac4a('0x45')]||0x4;this[_0xac4a('0x46')]=_0x215f39[_0xac4a('0x46')]?_0x215f39[_0xac4a('0x46')]:undefined;this[_0xac4a('0x47')]=_0x215f39[_0xac4a('0x47')]?_0x215f39[_0xac4a('0x47')]:undefined;this[_0xac4a('0x48')]=_0x215f39['dialPrefix']||undefined;this[_0xac4a('0x49')]=_0x215f39[_0xac4a('0x49')]?_0x215f39['Interval']:undefined;this[_0xac4a('0x4a')]=_0x215f39[_0xac4a('0x4a')]||'DESC';this['dialRandomLastDigitCallerIdNumber']=_0x215f39[_0xac4a('0x4b')]||undefined;this[_0xac4a('0x4c')]=_0x215f39[_0xac4a('0x4c')]||undefined;this[_0xac4a('0x4d')]=strategy[_0x215f39['strategy']]||_0xac4a('0x6');this[_0xac4a('0x4e')]=!![];this['dialAMDActive']=_0x215f39[_0xac4a('0x4f')]||![];this[_0xac4a('0x50')]=_0x215f39[_0xac4a('0x50')];this['dialAMDGreeting']=_0x215f39[_0xac4a('0x51')];this[_0xac4a('0x52')]=_0x215f39[_0xac4a('0x52')];this['dialAMDTotalAnalysisTime']=_0x215f39[_0xac4a('0x53')];this[_0xac4a('0x54')]=_0x215f39['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x215f39[_0xac4a('0x55')];this['dialAMDMaximumNumberOfWords']=_0x215f39['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x215f39['dialAMDSilenceThreshold'];this[_0xac4a('0x56')]=_0x215f39[_0xac4a('0x56')];this[_0xac4a('0x57')]=0x0;this[_0xac4a('0x58')]=0x0;this[_0xac4a('0x59')]=_0x215f39[_0xac4a('0x59')];this[_0xac4a('0x5a')]=0x0;this[_0xac4a('0x5b')]=0x0;this[_0xac4a('0x5c')]=0x0;this[_0xac4a('0x5d')]=0x0;this[_0xac4a('0x5e')]=0x0;this[_0xac4a('0x5f')]=0x0;this['outboundUnknownCallsDay']=0x0;this['outboundBlacklistCallsDay']=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0xac4a('0x60')]=0x0;this[_0xac4a('0x61')]=0x0;this[_0xac4a('0x62')]=0x0;this[_0xac4a('0x63')]=0x0;this[_0xac4a('0x64')]=0x0;this[_0xac4a('0x65')]=undefined;this[_0xac4a('0x66')]=undefined;this[_0xac4a('0x67')]=undefined;this[_0xac4a('0x68')]=1.05;this[_0xac4a('0x69')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0xac4a('0x6a')]=0x0;this[_0xac4a('0x6b')]=0x0;this[_0xac4a('0x6c')]=0x0;this[_0xac4a('0x6d')]=0x0;this[_0xac4a('0x6e')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0xac4a('0x6f')]=_0x215f39[_0xac4a('0x70')]||0x14;this['predictiveIntervalMinThreshold']=_0x215f39[_0xac4a('0x70')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0xac4a('0x71')]=0x0;this[_0xac4a('0x72')]=0x1;this[_0xac4a('0x73')]=0x0;this[_0xac4a('0x74')]=0x0;this[_0xac4a('0x75')]=0x0;this[_0xac4a('0x76')]=0x0;this[_0xac4a('0x77')]=_0x215f39[_0xac4a('0x77')]||0x1e;this[_0xac4a('0x78')]=_0x215f39[_0xac4a('0x78')]||![];this[_0xac4a('0x79')]=!!_0x215f39[_0xac4a('0x79')]||![];this['dialPreviewRecallmeReminder']=!!_0x215f39[_0xac4a('0x7a')]||![];this[_0xac4a('0x7b')]=_0x215f39[_0xac4a('0x7b')]||undefined;this['dialAgiAfterHangupClient']=_0x215f39[_0xac4a('0x7c')]||![];this[_0xac4a('0x7d')]=_0x215f39['dialAgiAfterHangupAgent']||![];this[_0xac4a('0xa')]=monitorFormat[_0x215f39['monitor_format']]?monitorFormat[_0x215f39[_0xac4a('0xa')]]:undefined;this[_0xac4a('0x7e')]=_0x215f39[_0xac4a('0x7e')]||![];this['mandatoryDispositionPause']=_0x215f39['mandatoryDispositionPause']?_0x215f39[_0xac4a('0x7f')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0x903b=['outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','inuse','busy','unavailable','ringing','ringinuse','onhold','wav','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','loggedIn','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit'];(function(_0x1316fa,_0x3aadc3){var _0xd12a71=function(_0xe199eb){while(--_0xe199eb){_0x1316fa['push'](_0x1316fa['shift']());}};_0xd12a71(++_0x3aadc3);}(_0x903b,0x1f0));var _0xb903=function(_0x476b80,_0x4e3d09){_0x476b80=_0x476b80-0x0;var _0x12c49c=_0x903b[_0x476b80];return _0x12c49c;};'use strict';var statusDesc=[_0xb903('0x0'),'not_inuse',_0xb903('0x1'),_0xb903('0x2'),'invalid',_0xb903('0x3'),_0xb903('0x4'),_0xb903('0x5'),_0xb903('0x6')];var monitorFormat={'wav':_0xb903('0x7'),'wav49':'wav49','gsm':'gsm'};var strategy={'rrmemory':_0xb903('0x8'),'roundrobin':_0xb903('0x9')};function VoiceQueue(_0x24b785){this['id']=_0x24b785['id']||0x0;this[_0xb903('0xa')]=_0x24b785['name']||'';this['monitor_format']=_0x24b785[_0xb903('0xb')]||'';this[_0xb903('0xc')]=_0x24b785[_0xb903('0xc')]||_0xb903('0xd');this[_0xb903('0xe')]=0x0;this['talking']=0x0;this[_0xb903('0xf')]=0x0;this[_0xb903('0x10')]=0x0;this[_0xb903('0x11')]=0x0;this[_0xb903('0x12')]=0x0;this[_0xb903('0x13')]=0x0;this[_0xb903('0x14')]=0x0;this['abandoned']=0x0;this[_0xb903('0x15')]=0x0;this['available']=0x0;this['acw']=_0x24b785['acw']||![];this[_0xb903('0x16')]=_0x24b785['acwTimeout']||0xa;this['autopause']=_0x24b785[_0xb903('0x17')]||'no';this[_0xb903('0x18')]=!![];this[_0xb903('0x19')]='';this[_0xb903('0x1a')]=0x0;this[_0xb903('0x1b')]=0x0;this[_0xb903('0x1c')]=_0x24b785[_0xb903('0x1c')]||null;this[_0xb903('0x1d')]=_0x24b785[_0xb903('0x1d')]?_0x24b785['dialGlobalInterval']:null;this[_0xb903('0x1e')]=_0x24b785[_0xb903('0x1e')];this[_0xb903('0x1f')]=_0x24b785[_0xb903('0x1f')]||'progressive';this['dialLimitChannel']=_0x24b785['dialLimitChannel']||0x0;this['dialLimitQueue']=_0x24b785['dialLimitQueue']||0x0;this[_0xb903('0x20')]=_0x24b785[_0xb903('0x20')]||0x1;this[_0xb903('0x21')]=_0x24b785['dialPredictiveOptimization']||_0xb903('0x22');this[_0xb903('0x23')]=_0x24b785[_0xb903('0x23')]||0.03;this[_0xb903('0x24')]=_0x24b785['dialPredictiveInterval']||0x258;this[_0xb903('0x25')]=_0x24b785[_0xb903('0x25')]||_0xb903('0x26');this[_0xb903('0x27')]=_0x24b785[_0xb903('0x27')]||_0xb903('0x26');this[_0xb903('0x28')]=_0x24b785['dialOriginateTimeout']||0x1e;this[_0xb903('0x29')]=_0x24b785[_0xb903('0x29')]||_0xb903('0x2a');this[_0xb903('0x2b')]=_0x24b785['dialQueueTimeout']||0x3;this['dialQueueProject']=_0x24b785[_0xb903('0x2c')]||undefined;this[_0xb903('0x2d')]=_0x24b785[_0xb903('0x2d')]||0x3;this[_0xb903('0x2e')]=_0x24b785['dialCongestionRetryFrequency']||0x96;this[_0xb903('0x2f')]=_0x24b785[_0xb903('0x2f')]||0x3;this[_0xb903('0x30')]=_0x24b785[_0xb903('0x30')]||0x96;this['dialNoAnswerMaxRetry']=_0x24b785['dialNoAnswerMaxRetry']||0x3;this[_0xb903('0x31')]=_0x24b785[_0xb903('0x31')]||0x96;this[_0xb903('0x32')]=_0x24b785[_0xb903('0x32')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x24b785[_0xb903('0x33')]||0x96;this[_0xb903('0x34')]=_0x24b785['dialDropMaxRetry']||0x3;this[_0xb903('0x35')]=_0x24b785[_0xb903('0x35')]||0x96;this[_0xb903('0x36')]=_0x24b785[_0xb903('0x36')]||0x3;this[_0xb903('0x37')]=_0x24b785['dialAbandonedRetryFrequency']||0x96;this[_0xb903('0x38')]=_0x24b785[_0xb903('0x38')]||0x3;this[_0xb903('0x39')]=_0x24b785[_0xb903('0x39')]||0x96;this[_0xb903('0x3a')]=_0x24b785[_0xb903('0x3a')]||0x3;this[_0xb903('0x3b')]=_0x24b785[_0xb903('0x3b')]||0x96;this[_0xb903('0x3c')]=_0x24b785[_0xb903('0x3c')]||0x3;this[_0xb903('0x3d')]=_0x24b785[_0xb903('0x3d')]||0x4;this[_0xb903('0x3e')]=_0x24b785['Trunk']?_0x24b785[_0xb903('0x3e')]:undefined;this[_0xb903('0x3f')]=_0x24b785[_0xb903('0x3f')]?_0x24b785['TrunkBackup']:undefined;this[_0xb903('0x40')]=_0x24b785[_0xb903('0x40')]||undefined;this['Interval']=_0x24b785[_0xb903('0x41')]?_0x24b785['Interval']:undefined;this['dialOrderByScheduledAt']=_0x24b785[_0xb903('0x42')]||'DESC';this[_0xb903('0x43')]=_0x24b785['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xb903('0x44')]=_0x24b785[_0xb903('0x44')]||undefined;this[_0xb903('0x45')]=strategy[_0x24b785[_0xb903('0x45')]]||'rrmemory';this['queueStatusComplete']=!![];this[_0xb903('0x46')]=_0x24b785[_0xb903('0x46')]||![];this[_0xb903('0x47')]=_0x24b785[_0xb903('0x47')];this['dialAMDGreeting']=_0x24b785['dialAMDGreeting'];this[_0xb903('0x48')]=_0x24b785['dialAMDAfterGreetingSilence'];this[_0xb903('0x49')]=_0x24b785[_0xb903('0x49')];this['dialAMDMinWordLength']=_0x24b785[_0xb903('0x4a')];this[_0xb903('0x4b')]=_0x24b785[_0xb903('0x4b')];this[_0xb903('0x4c')]=_0x24b785[_0xb903('0x4c')];this[_0xb903('0x4d')]=_0x24b785[_0xb903('0x4d')];this[_0xb903('0x4e')]=_0x24b785['dialAMDMaximumWordLength'];this[_0xb903('0x4f')]=0x0;this['pTalking']=0x0;this[_0xb903('0x50')]=_0x24b785[_0xb903('0x50')];this['outboundAnswerCallsDay']=0x0;this[_0xb903('0x51')]=0x0;this[_0xb903('0x52')]=0x0;this[_0xb903('0x53')]=0x0;this[_0xb903('0x54')]=0x0;this[_0xb903('0x55')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0xb903('0x56')]=0x0;this[_0xb903('0x57')]=0x0;this[_0xb903('0x58')]=0x0;this[_0xb903('0x59')]=0x0;this[_0xb903('0x5a')]=0x0;this[_0xb903('0x5b')]=0x0;this[_0xb903('0x5c')]=0x0;this[_0xb903('0x5d')]=undefined;this['startPredictive']=undefined;this[_0xb903('0x5e')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0xb903('0x5f')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xb903('0x60')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0xb903('0x61')]=0x0;this[_0xb903('0x62')]=0x0;this[_0xb903('0x63')]=0x0;this[_0xb903('0x64')]=_0x24b785['dialPredictiveIntervalMaxThreshold']||0x14;this[_0xb903('0x65')]=_0x24b785['dialPredictiveIntervalMaxThreshold']||0xa;this[_0xb903('0x66')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xb903('0x67')]=0x1;this[_0xb903('0x68')]=0x0;this[_0xb903('0x69')]=0x0;this[_0xb903('0x6a')]=0x0;this[_0xb903('0x6b')]=0x0;this[_0xb903('0x6c')]=_0x24b785['dialRecallMeTimeout']||0x1e;this[_0xb903('0x6d')]=_0x24b785[_0xb903('0x6d')]||![];this[_0xb903('0x6e')]=!!_0x24b785[_0xb903('0x6e')]||![];this[_0xb903('0x6f')]=!!_0x24b785[_0xb903('0x6f')]||![];this[_0xb903('0x70')]=_0x24b785[_0xb903('0x70')]||undefined;this['dialAgiAfterHangupClient']=_0x24b785[_0xb903('0x71')]||![];this[_0xb903('0x72')]=_0x24b785[_0xb903('0x72')]||![];this[_0xb903('0xb')]=monitorFormat[_0x24b785[_0xb903('0xb')]]?monitorFormat[_0x24b785[_0xb903('0xb')]]:undefined;this['mandatoryDisposition']=_0x24b785[_0xb903('0x73')]||![];this['mandatoryDispositionPause']=_0x24b785[_0xb903('0x74')]?_0x24b785['mandatoryDispositionPause']:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
diff --git a/server/services/ami/model/voiceQueueSummary.js b/server/services/ami/model/voiceQueueSummary.js
deleted file mode 100644 (file)
index 105a176..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xb39a=['unavailable','unknown','unmanaged','waiting','outbound','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','exports','name','strategy','abandoned','answered','available','busy','inUse','loggedIn','loggedInDb','onHold','notInUse','paused','pTalking','ringing','ringInUse','sumBillable','sumDuration','sumHoldTime','talking','total','type'];(function(_0x30b60a,_0x42eaa1){var _0xa15dc2=function(_0x492e04){while(--_0x492e04){_0x30b60a['push'](_0x30b60a['shift']());}};_0xa15dc2(++_0x42eaa1);}(_0xb39a,0xb1));var _0xab39=function(_0x374305,_0x3bf2b1){_0x374305=_0x374305-0x0;var _0x48f9c6=_0xb39a[_0x374305];return _0x48f9c6;};'use strict';function VoiceQueueSummary(_0x13a4c9){this['id']=_0x13a4c9['id'];this['name']=_0x13a4c9[_0xab39('0x0')];this[_0xab39('0x1')]=_0x13a4c9[_0xab39('0x1')];this[_0xab39('0x2')]=_0x13a4c9[_0xab39('0x2')]||0x0;this[_0xab39('0x3')]=_0x13a4c9[_0xab39('0x3')]||0x0;this[_0xab39('0x4')]=_0x13a4c9[_0xab39('0x4')]||0x0;this[_0xab39('0x5')]=_0x13a4c9[_0xab39('0x5')]||0x0;this[_0xab39('0x6')]=_0x13a4c9[_0xab39('0x6')]||0x0;this['invalid']=_0x13a4c9['invalid']||0x0;this[_0xab39('0x7')]=_0x13a4c9[_0xab39('0x7')]||0x0;this[_0xab39('0x8')]=_0x13a4c9[_0xab39('0x8')]||0x0;this['onHold']=_0x13a4c9[_0xab39('0x9')]||0x0;this[_0xab39('0xa')]=_0x13a4c9['notInUse']||0x0;this[_0xab39('0xb')]=_0x13a4c9['paused']||0x0;this[_0xab39('0xc')]=_0x13a4c9[_0xab39('0xc')]||0x0;this[_0xab39('0xd')]=_0x13a4c9[_0xab39('0xd')]||0x0;this[_0xab39('0xe')]=_0x13a4c9[_0xab39('0xe')];this['sumBillable']=_0x13a4c9[_0xab39('0xf')];this[_0xab39('0x10')]=_0x13a4c9['sumDuration'];this[_0xab39('0x11')]=_0x13a4c9[_0xab39('0x11')]||0x0;this[_0xab39('0x12')]=_0x13a4c9['talking']||0x0;this[_0xab39('0x13')]=_0x13a4c9[_0xab39('0x13')]||0x0;this[_0xab39('0x14')]=_0x13a4c9[_0xab39('0x14')];this[_0xab39('0x15')]=_0x13a4c9['unavailable']||0x0;this[_0xab39('0x16')]=_0x13a4c9[_0xab39('0x16')]||0x0;this[_0xab39('0x17')]=_0x13a4c9['unmanaged']||0x0;this[_0xab39('0x18')]=_0x13a4c9[_0xab39('0x18')]||0x0;if(_0x13a4c9[_0xab39('0x14')]===_0xab39('0x19')){this[_0xab39('0x1a')]=_0x13a4c9['dialActive'];this['dialMethod']=_0x13a4c9['dialMethod'];this['dialOriginateCallerIdName']=_0x13a4c9[_0xab39('0x1b')];this[_0xab39('0x1c')]=_0x13a4c9['dialOriginateCallerIdNumber'];this[_0xab39('0x1d')]=_0x13a4c9[_0xab39('0x1d')];this['dialPrefix']=_0x13a4c9['dialPrefix'];this[_0xab39('0x1e')]=_0x13a4c9[_0xab39('0x1e')];this[_0xab39('0x1f')]=_0x13a4c9[_0xab39('0x1f')];this[_0xab39('0x20')]=_0x13a4c9[_0xab39('0x20')];this[_0xab39('0x21')]=_0x13a4c9[_0xab39('0x21')];this[_0xab39('0x22')]=_0x13a4c9[_0xab39('0x22')];this[_0xab39('0x23')]=_0x13a4c9[_0xab39('0x23')];this[_0xab39('0x24')]=_0x13a4c9[_0xab39('0x24')];this[_0xab39('0x25')]=_0x13a4c9[_0xab39('0x25')];this[_0xab39('0x26')]=_0x13a4c9[_0xab39('0x26')];this['outboundNoAnswerCallsDay']=_0x13a4c9[_0xab39('0x27')];this['outboundNoSuchCallsDay']=_0x13a4c9['outboundNoSuchCallsDay'];this[_0xab39('0x28')]=_0x13a4c9[_0xab39('0x28')];this[_0xab39('0x29')]=_0x13a4c9['outboundReCallsDay'];this[_0xab39('0x2a')]=_0x13a4c9[_0xab39('0x2a')];this[_0xab39('0x2b')]=_0x13a4c9[_0xab39('0x2b')];this[_0xab39('0x2c')]=_0x13a4c9[_0xab39('0x2c')];this[_0xab39('0x2d')]=_0x13a4c9['predictiveIntervalAvgHoldtime'];this['predictiveIntervalAvgTalktime']=_0x13a4c9['predictiveIntervalAvgTalktime'];this['predictiveIntervalDroppedCallsCallersExit']=_0x13a4c9[_0xab39('0x2e')];this[_0xab39('0x2f')]=_0x13a4c9[_0xab39('0x2f')];this[_0xab39('0x30')]=_0x13a4c9[_0xab39('0x30')];this[_0xab39('0x31')]=_0x13a4c9['predictiveIntervalErlangCallsDroppedCalls'];this['predictiveIntervalHitRate']=_0x13a4c9[_0xab39('0x32')];this[_0xab39('0x33')]=_0x13a4c9[_0xab39('0x33')];this[_0xab39('0x34')]=_0x13a4c9[_0xab39('0x34')];this[_0xab39('0x35')]=_0x13a4c9[_0xab39('0x35')];this[_0xab39('0x36')]=_0x13a4c9[_0xab39('0x36')];this[_0xab39('0x37')]=_0x13a4c9[_0xab39('0x37')];this[_0xab39('0x38')]=_0x13a4c9[_0xab39('0x38')];this[_0xab39('0x39')]=_0x13a4c9[_0xab39('0x39')];this['erlangCallToSecond']=_0x13a4c9['erlangCallToSecond'];this[_0xab39('0x3a')]=_0x13a4c9[_0xab39('0x3a')];this[_0xab39('0x3b')]=_0x13a4c9[_0xab39('0x3b')];this[_0xab39('0x3c')]=_0x13a4c9[_0xab39('0x3c')];this[_0xab39('0x3d')]=_0x13a4c9[_0xab39('0x3d')];}if(_0x13a4c9['Trunk']){this[_0xab39('0x3e')]={'id':_0x13a4c9[_0xab39('0x3e')]['id'],'name':_0x13a4c9[_0xab39('0x3e')][_0xab39('0x0')],'active':_0x13a4c9[_0xab39('0x3e')]['active'],'callerid':_0x13a4c9[_0xab39('0x3e')][_0xab39('0x3f')]};}if(_0x13a4c9[_0xab39('0x40')]){this[_0xab39('0x40')]={'id':_0x13a4c9[_0xab39('0x40')]['id'],'name':_0x13a4c9[_0xab39('0x40')]['name']};}}module[_0xab39('0x41')]=VoiceQueueSummary;
\ No newline at end of file
index 687196f..6de9f07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa13e=['serverUrl','Configurations','exports','name','username','accessKey','remoteUri'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0xa13e,0xc7));var _0xea13=function(_0x48c990,_0x59adf2){_0x48c990=_0x48c990-0x0;var _0x31420a=_0xa13e[_0x48c990];return _0x31420a;};'use strict';function VtigerAccount(_0x26a348){this['id']=_0x26a348['id']||0x0;this[_0xea13('0x0')]=_0x26a348[_0xea13('0x0')]||'';this[_0xea13('0x1')]=_0x26a348['username']||'';this[_0xea13('0x2')]=_0x26a348[_0xea13('0x2')]||'';this[_0xea13('0x3')]=_0x26a348[_0xea13('0x3')]||'';this['serverUrl']=_0x26a348[_0xea13('0x4')]||'';this['Configurations']=_0x26a348[_0xea13('0x5')]||{};}module[_0xea13('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x9494=['remoteUri','serverUrl','Configurations','name','username'];(function(_0x4c5b1e,_0x535dc6){var _0x44f446=function(_0x3fec0e){while(--_0x3fec0e){_0x4c5b1e['push'](_0x4c5b1e['shift']());}};_0x44f446(++_0x535dc6);}(_0x9494,0x1a7));var _0x4949=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9494[_0x3dd15e];return _0x231fd0;};'use strict';function VtigerAccount(_0x159a20){this['id']=_0x159a20['id']||0x0;this[_0x4949('0x0')]=_0x159a20['name']||'';this[_0x4949('0x1')]=_0x159a20[_0x4949('0x1')]||'';this['accessKey']=_0x159a20['accessKey']||'';this[_0x4949('0x2')]=_0x159a20['remoteUri']||'';this[_0x4949('0x3')]=_0x159a20['serverUrl']||'';this[_0x4949('0x4')]=_0x159a20[_0x4949('0x4')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index 2337b9d..7074474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf73b=['authType','type','integrationTab','serverUrl','name','username','password','token','remoteUri'];(function(_0x3c233d,_0x5c2e25){var _0x515f7b=function(_0x8b5e26){while(--_0x8b5e26){_0x3c233d['push'](_0x3c233d['shift']());}};_0x515f7b(++_0x5c2e25);}(_0xf73b,0xf7));var _0xbf73=function(_0x20c452,_0x93678){_0x20c452=_0x20c452-0x0;var _0x1cebc1=_0xf73b[_0x20c452];return _0x1cebc1;};'use strict';function ZendeskAccount(_0xacd9b2){this['id']=_0xacd9b2['id']||0x0;this[_0xbf73('0x0')]=_0xacd9b2[_0xbf73('0x0')]||'';this[_0xbf73('0x1')]=_0xacd9b2[_0xbf73('0x1')]||'';this[_0xbf73('0x2')]=_0xacd9b2[_0xbf73('0x2')]||'';this[_0xbf73('0x3')]=_0xacd9b2['token']||'';this[_0xbf73('0x4')]=_0xacd9b2[_0xbf73('0x4')]||'';this['authType']=_0xacd9b2[_0xbf73('0x5')]||'';this[_0xbf73('0x6')]=_0xacd9b2[_0xbf73('0x6')]||_0xbf73('0x7');this[_0xbf73('0x8')]=_0xacd9b2[_0xbf73('0x8')]||'';this['Configurations']=_0xacd9b2['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
+var _0x1db2=['password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','name','username'];(function(_0x1b1e01,_0x1eb3e7){var _0x51e835=function(_0x592f69){while(--_0x592f69){_0x1b1e01['push'](_0x1b1e01['shift']());}};_0x51e835(++_0x1eb3e7);}(_0x1db2,0x1e8));var _0x21db=function(_0x12a6bd,_0x22f026){_0x12a6bd=_0x12a6bd-0x0;var _0x32446a=_0x1db2[_0x12a6bd];return _0x32446a;};'use strict';function ZendeskAccount(_0x3e250d){this['id']=_0x3e250d['id']||0x0;this[_0x21db('0x0')]=_0x3e250d[_0x21db('0x0')]||'';this[_0x21db('0x1')]=_0x3e250d[_0x21db('0x1')]||'';this[_0x21db('0x2')]=_0x3e250d[_0x21db('0x2')]||'';this[_0x21db('0x3')]=_0x3e250d['token']||'';this[_0x21db('0x4')]=_0x3e250d[_0x21db('0x4')]||'';this[_0x21db('0x5')]=_0x3e250d[_0x21db('0x5')]||'';this['type']=_0x3e250d[_0x21db('0x6')]||_0x21db('0x7');this[_0x21db('0x8')]=_0x3e250d[_0x21db('0x8')]||'';this[_0x21db('0x9')]=_0x3e250d[_0x21db('0x9')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index c88530f..7cfd960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f2c=['refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl','code'];(function(_0x36e83b,_0x52d409){var _0x5dc436=function(_0x55e9fe){while(--_0x55e9fe){_0x36e83b['push'](_0x36e83b['shift']());}};_0x5dc436(++_0x52d409);}(_0x8f2c,0x1b0));var _0xc8f2=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x8f2c[_0x4e676e];return _0x336a3c;};'use strict';function ZohoAccount(_0x2aa07f){this['id']=_0x2aa07f['id']||0x0;this['name']=_0x2aa07f[_0xc8f2('0x0')]||'';this[_0xc8f2('0x1')]=_0x2aa07f[_0xc8f2('0x1')]||'';this[_0xc8f2('0x2')]=_0x2aa07f[_0xc8f2('0x2')]||'';this[_0xc8f2('0x3')]=_0x2aa07f[_0xc8f2('0x3')]||'';this[_0xc8f2('0x4')]=_0x2aa07f['clientId']||'';this[_0xc8f2('0x5')]=_0x2aa07f[_0xc8f2('0x5')]||'';this[_0xc8f2('0x6')]=_0x2aa07f[_0xc8f2('0x6')]||'';this[_0xc8f2('0x7')]=_0x2aa07f[_0xc8f2('0x7')]||'';this[_0xc8f2('0x8')]=_0x2aa07f[_0xc8f2('0x8')]||'';this[_0xc8f2('0x9')]=_0x2aa07f[_0xc8f2('0x9')]||{};}module[_0xc8f2('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x1205=['exports','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations'];(function(_0x362438,_0x5d5208){var _0x699be5=function(_0x977ca1){while(--_0x977ca1){_0x362438['push'](_0x362438['shift']());}};_0x699be5(++_0x5d5208);}(_0x1205,0x1eb));var _0x5120=function(_0x4249ef,_0x1aa911){_0x4249ef=_0x4249ef-0x0;var _0x5e1c4=_0x1205[_0x4249ef];return _0x5e1c4;};'use strict';function ZohoAccount(_0x1add5f){this['id']=_0x1add5f['id']||0x0;this['name']=_0x1add5f['name']||'';this[_0x5120('0x0')]=_0x1add5f[_0x5120('0x0')]||'';this[_0x5120('0x1')]=_0x1add5f[_0x5120('0x1')]||'';this[_0x5120('0x2')]=_0x1add5f[_0x5120('0x2')]||'';this[_0x5120('0x3')]=_0x1add5f[_0x5120('0x3')]||'';this[_0x5120('0x4')]=_0x1add5f['clientSecret']||'';this[_0x5120('0x5')]=_0x1add5f[_0x5120('0x5')]||'';this['code']=_0x1add5f[_0x5120('0x6')]||'';this[_0x5120('0x7')]=_0x1add5f['refreshToken']||'';this[_0x5120('0x8')]=_0x1add5f['Configurations']||{};}module[_0x5120('0x9')]=ZohoAccount;
\ No newline at end of file
index 3188ac6..c9b8b88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4325=['type','membername','Agent','format','calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','getCaller','util','lodash','string','isNil','idContact','queue','name'];(function(_0x5685b3,_0x2f3adb){var _0x381680=function(_0x411cd2){while(--_0x411cd2){_0x5685b3['push'](_0x5685b3['shift']());}};_0x381680(++_0x2f3adb);}(_0x4325,0x1da));var _0x5432=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4325[_0x2641f9];return _0x585741;};'use strict';var util=require(_0x5432('0x0'));var _=require(_0x5432('0x1'));var moment=require('moment');function checkNameSurname(_0x3f491f,_0x533c92,_0x12c8d8){var _0x480fb7='';if(!_['isNil'](_0x533c92)&&_0x5432('0x2')===typeof _0x533c92){_0x480fb7+=_0x533c92;}if(!_[_0x5432('0x3')](_0x12c8d8)&&_0x5432('0x2')===typeof _0x12c8d8){_0x480fb7+='\x20'+_0x12c8d8;}if(_0x480fb7!==''){return _0x480fb7;}return _0x3f491f;}function Action(_0x4acbe4,_0x209e2e,_0xbb0075,_0x4a6e76,_0x106ec9){this['uniqueid']=_0xbb0075||undefined;this[_0x5432('0x4')]=_0x4acbe4['id'];this[_0x5432('0x5')]=_0x209e2e[_0x5432('0x6')];this[_0x5432('0x7')]=_0x209e2e[_0x5432('0x7')];this['campaigntype']=_0x5432('0x5');this['dialAnswer']=![];this[_0x5432('0x8')]=_[_0x5432('0x3')](_0x4acbe4[_0x5432('0x9')])?undefined:_0x4acbe4[_0x5432('0x9')]['name'];this['channelAgent']=this[_0x5432('0x8')]?util[_0x5432('0xa')]('SIP/%s',this[_0x5432('0x8')]):_0x4a6e76||undefined;this[_0x5432('0xb')]=checkNameSurname(_0x4acbe4[_0x5432('0xc')][_0x5432('0xd')],_0x4acbe4[_0x5432('0xc')][_0x5432('0xe')],_0x4acbe4['Contact']['lastName']);this[_0x5432('0xf')]=_0x4acbe4[_0x5432('0xf')]||![];this[_0x5432('0x10')]=_0x4acbe4[_0x5432('0xd')];this[_0x5432('0x11')]=_0x4acbe4[_0x5432('0x11')];this['countbusyretry']=_0x4acbe4[_0x5432('0x12')]||0x0;this['countcongestionretry']=_0x4acbe4[_0x5432('0x13')]||0x0;this[_0x5432('0x14')]=_0x4acbe4[_0x5432('0x14')]||0x0;this[_0x5432('0x15')]=(_0x4acbe4[_0x5432('0x12')]||0x0)+(_0x4acbe4['countcongestionretry']||0x0)+(_0x4acbe4[_0x5432('0x14')]||0x0)+(_0x4acbe4[_0x5432('0x16')]||0x0)+(_0x4acbe4[_0x5432('0x17')]||0x0)+(_0x4acbe4[_0x5432('0x18')]||0x0)+(_0x4acbe4[_0x5432('0x19')]||0x0)+(_0x4acbe4[_0x5432('0x1a')]||0x0);this[_0x5432('0x16')]=_0x4acbe4['countnosuchnumberretry']||0x0;this[_0x5432('0x17')]=_0x4acbe4[_0x5432('0x17')]||0x0;this[_0x5432('0x18')]=_0x4acbe4[_0x5432('0x18')]||0x0;this[_0x5432('0x19')]=_0x4acbe4['countmachineretry']||0x0;this['countagentrejectretry']=_0x4acbe4['countagentrejectretry']||0x0;this[_0x5432('0x1b')]=_0x4acbe4[_0x5432('0x1b')];this[_0x5432('0x1c')]=_0x4acbe4[_0x5432('0x1c')];this['callbackat']=_0x4acbe4['callbackat'];this[_0x5432('0x1d')]=_0x4acbe4[_0x5432('0x1d')];this['ContactId']=_0x4acbe4[_0x5432('0x1e')];this[_0x5432('0x1f')]=_0x4acbe4[_0x5432('0x1f')];this['UserId']=_[_0x5432('0x3')](_0x4acbe4[_0x5432('0x9')])?_0x4acbe4[_0x5432('0x20')]:_0x4acbe4['Agent']['id'];this['VoiceQueueId']=_0x4acbe4[_0x5432('0x21')];this[_0x5432('0x22')]='';this['originatecalleridname']='';}Action[_0x5432('0x23')][_0x5432('0x24')]=function(){return util[_0x5432('0xa')]('\x22%s\x22\x20<%s>',this[_0x5432('0xb')],this['number']);};module['exports']=Action;
\ No newline at end of file
+var _0xd824=['countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','getCaller','format','\x22%s\x22\x20<%s>','exports','util','lodash','isNil','string','uniqueid','idContact','name','campaigntype','queue','dialAnswer','Agent','channelAgent','SIP/%s','membername','calleridname','Contact','firstName','active','calleridnum','scheduledat','countbusyretry'];(function(_0x48bdab,_0x3f824d){var _0x2597ce=function(_0x267040){while(--_0x267040){_0x48bdab['push'](_0x48bdab['shift']());}};_0x2597ce(++_0x3f824d);}(_0xd824,0xc2));var _0x4d82=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd824[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x4d82('0x0'));var _=require(_0x4d82('0x1'));var moment=require('moment');function checkNameSurname(_0x53fe9a,_0x223217,_0x42badb){var _0x3f13e4='';if(!_[_0x4d82('0x2')](_0x223217)&&_0x4d82('0x3')===typeof _0x223217){_0x3f13e4+=_0x223217;}if(!_[_0x4d82('0x2')](_0x42badb)&&'string'===typeof _0x42badb){_0x3f13e4+='\x20'+_0x42badb;}if(_0x3f13e4!==''){return _0x3f13e4;}return _0x53fe9a;}function Action(_0x57850a,_0xd00023,_0x583c7c,_0x4b842f,_0x464caf){this[_0x4d82('0x4')]=_0x583c7c||undefined;this[_0x4d82('0x5')]=_0x57850a['id'];this['queue']=_0xd00023[_0x4d82('0x6')];this['type']=_0xd00023['type'];this[_0x4d82('0x7')]=_0x4d82('0x8');this[_0x4d82('0x9')]=![];this['membername']=_[_0x4d82('0x2')](_0x57850a['Agent'])?undefined:_0x57850a[_0x4d82('0xa')][_0x4d82('0x6')];this[_0x4d82('0xb')]=this['membername']?util['format'](_0x4d82('0xc'),this[_0x4d82('0xd')]):_0x4b842f||undefined;this[_0x4d82('0xe')]=checkNameSurname(_0x57850a[_0x4d82('0xf')]['phone'],_0x57850a[_0x4d82('0xf')][_0x4d82('0x10')],_0x57850a[_0x4d82('0xf')]['lastName']);this[_0x4d82('0x11')]=_0x57850a['active']||![];this[_0x4d82('0x12')]=_0x57850a['phone'];this[_0x4d82('0x13')]=_0x57850a['scheduledat'];this[_0x4d82('0x14')]=_0x57850a[_0x4d82('0x14')]||0x0;this[_0x4d82('0x15')]=_0x57850a[_0x4d82('0x15')]||0x0;this[_0x4d82('0x16')]=_0x57850a[_0x4d82('0x16')]||0x0;this[_0x4d82('0x17')]=(_0x57850a[_0x4d82('0x14')]||0x0)+(_0x57850a[_0x4d82('0x15')]||0x0)+(_0x57850a['countnoanswerretry']||0x0)+(_0x57850a[_0x4d82('0x18')]||0x0)+(_0x57850a[_0x4d82('0x19')]||0x0)+(_0x57850a[_0x4d82('0x1a')]||0x0)+(_0x57850a[_0x4d82('0x1b')]||0x0)+(_0x57850a[_0x4d82('0x1c')]||0x0);this[_0x4d82('0x18')]=_0x57850a[_0x4d82('0x18')]||0x0;this[_0x4d82('0x19')]=_0x57850a[_0x4d82('0x19')]||0x0;this[_0x4d82('0x1a')]=_0x57850a[_0x4d82('0x1a')]||0x0;this['countmachineretry']=_0x57850a[_0x4d82('0x1b')]||0x0;this[_0x4d82('0x1c')]=_0x57850a['countagentrejectretry']||0x0;this[_0x4d82('0x1d')]=_0x57850a[_0x4d82('0x1d')];this[_0x4d82('0x1e')]=_0x57850a[_0x4d82('0x1e')];this[_0x4d82('0x1f')]=_0x57850a[_0x4d82('0x1f')];this[_0x4d82('0x20')]=_0x57850a[_0x4d82('0x20')];this[_0x4d82('0x21')]=_0x57850a[_0x4d82('0x21')];this[_0x4d82('0x22')]=_0x57850a[_0x4d82('0x22')];this[_0x4d82('0x23')]=_[_0x4d82('0x2')](_0x57850a[_0x4d82('0xa')])?_0x57850a['UserId']:_0x57850a['Agent']['id'];this[_0x4d82('0x24')]=_0x57850a[_0x4d82('0x24')];this[_0x4d82('0x25')]='';this[_0x4d82('0x26')]='';}Action['prototype'][_0x4d82('0x27')]=function(){return util[_0x4d82('0x28')](_0x4d82('0x29'),this[_0x4d82('0xe')],this['number']);};module[_0x4d82('0x2a')]=Action;
\ No newline at end of file
index 4334960..c56cd12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4a=['custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','countbusyretry','Busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','unlockAgent','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerMaxRetry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','countcongestionretry','CANCEL','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','cause-txt','dialstatus','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','\x20Queue','ANSWER','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','logAgent','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','run','execRun','unlock','getContactPreview','recallme','validateContact','isValid','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','campaign\x20Name:\x20','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','originatecalleridnum','addVariables','merge','toLowerVariables','YYYY-MM-DD\x20HH:mm:ss','variables','variablesAction','[originated][increment]','syncNewExten','syncOriginateResponse','actionid','lookAgent','rejected','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','channelstate','transfer','unlockContact','[syncHangup][talking][transfer]','syncDialEnd','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','util','uuid','moment','md5','../../../config/environment','preview','actionPreview','./rpcDb','./action','./util/util','redis','localhost','prototype','enqueue','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','clockClearZombieChannels','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','varset','syncVarSet','attendedtransfer','blindtransfer','loopCampaigns','emit','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','message','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','callerid','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','originated','sendMessageOneNotActive','available','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','DEACTIVATED','syncCampaigns','hasOwnProperty','clearZombieChannels','outbound','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','ListId','Action','status','catch','No\x20such\x20channel','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','getContactRecallMe','agentReadyId','agents','then','length','scheduledat','Agent','voicePause','logger2','[RecallMe]','disableContact','starttime','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','IsNotLoggedIn','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','custom:agentnosuchnumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','activeContact','linkedid','idContact','incrementPreviewCounters','swapAdditionalPhones','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw'];(function(_0x4e82be,_0x36d848){var _0x465945=function(_0x1af156){while(--_0x1af156){_0x4e82be['push'](_0x4e82be['shift']());}};_0x465945(++_0x36d848);}(_0xee4a,0x9e));var _0xaee4=function(_0x1b6460,_0x34824a){_0x1b6460=_0x1b6460-0x0;var _0xe4353f=_0xee4a[_0x1b6460];return _0xe4353f;};'use strict';var util=require(_0xaee4('0x0'));var _=require('lodash');var uuid=require(_0xaee4('0x1'));var moment=require(_0xaee4('0x2'));var md5=require(_0xaee4('0x3'));var Redis=require('ioredis');var config=require(_0xaee4('0x4'));var logger=require('../../../config/logger')(_0xaee4('0x5'));var loggerAction=require('../../../config/logger')(_0xaee4('0x6'));var ami=require('../ami');var rpcDb=require(_0xaee4('0x7'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0xaee4('0x8'));var ut=require(_0xaee4('0x9'));config[_0xaee4('0xa')]=_['defaults'](config[_0xaee4('0xa')],{'host':_0xaee4('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xaee4('0xa')]));var Sequence=function(){};Sequence[_0xaee4('0xc')][_0xaee4('0xd')]=function(_0x3c75a7){this['tail']=this['tail']?this['tail'][_0xaee4('0xe')](_0x3c75a7):_0x3c75a7();};function Preview(_0x38524f){this[_0xaee4('0xf')]=new Sequence();this[_0xaee4('0x10')]=_0x38524f[_0xaee4('0x11')];this[_0xaee4('0x12')]=_0x38524f[_0xaee4('0x12')];this[_0xaee4('0x13')]={};this['agents']=_0x38524f['agents'];this[_0xaee4('0x14')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x16'),this[_0xaee4('0x17')][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x18'),this[_0xaee4('0x19')][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1a'),this['syncDialEnd'][_0xaee4('0x15')](this));ami['on']('newexten',this['syncNewExten'][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1b'),this[_0xaee4('0x1c')][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1d'),this['syncAttendedTransfer'][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1e'),this['syncBlindTransfer'][_0xaee4('0x15')](this));this[_0xaee4('0x1f')](this['campaignsPreview']);}function emit(_0x506725,_0x4e93e7,_0x27d73f){io['to'](_0x506725)[_0xaee4('0x20')](_0x4e93e7,_0x27d73f);}function emitCampaignPreview(_0x3f58c1){if(_0x3f58c1['type']==='outbound'){var _0x14091f={'id':_0x3f58c1['id'],'name':_0x3f58c1['name'],'strategy':_0x3f58c1[_0xaee4('0x21')],'answered':_0x3f58c1[_0xaee4('0x22')],'available':_0x3f58c1['available'],'loggedIn':_0x3f58c1[_0xaee4('0x23')],'pTalking':_0x3f58c1[_0xaee4('0x24')],'sumBillable':_0x3f58c1[_0xaee4('0x25')],'sumDuration':_0x3f58c1[_0xaee4('0x26')],'sumHoldTime':_0x3f58c1[_0xaee4('0x27')]||0x0,'talking':_0x3f58c1[_0xaee4('0x28')],'total':_0x3f58c1[_0xaee4('0x29')],'type':_0x3f58c1[_0xaee4('0x2a')],'unmanaged':_0x3f58c1[_0xaee4('0x2b')],'abandoned':_0x3f58c1[_0xaee4('0x2c')],'waiting':_0x3f58c1[_0xaee4('0x2d')],'loggedInDb':_0x3f58c1[_0xaee4('0x2e')],'dialActive':_0x3f58c1[_0xaee4('0x2f')],'dialMethod':_0x3f58c1[_0xaee4('0x30')],'dialOriginateCallerIdName':_0x3f58c1[_0xaee4('0x31')],'dialOriginateCallerIdNumber':_0x3f58c1['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x3f58c1[_0xaee4('0x32')],'dialPrefix':_0x3f58c1[_0xaee4('0x33')],'outboundAnswerAgiCallsDay':_0x3f58c1[_0xaee4('0x34')],'outboundAnswerCallsDay':_0x3f58c1['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x3f58c1[_0xaee4('0x35')],'outboundBusyCallsDay':_0x3f58c1[_0xaee4('0x36')],'outboundCongestionCallsDay':_0x3f58c1[_0xaee4('0x37')],'outboundDropCallsDayACS':_0x3f58c1[_0xaee4('0x38')],'outboundDropCallsDayCallersExit':_0x3f58c1[_0xaee4('0x39')],'outboundDropCallsDayTimeout':_0x3f58c1[_0xaee4('0x3a')],'outboundNoAnswerCallsDay':_0x3f58c1['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3f58c1['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x3f58c1[_0xaee4('0x3b')],'outboundReCallsDay':_0x3f58c1[_0xaee4('0x3c')],'outboundRejectCallsDay':_0x3f58c1[_0xaee4('0x3d')],'outboundUnknownCallsDay':_0x3f58c1[_0xaee4('0x3e')],'outboundAbandonedCallsDay':_0x3f58c1[_0xaee4('0x3f')],'predictiveIntervalAnsweredCalls':_0x3f58c1['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x3f58c1[_0xaee4('0x40')],'predictiveIntervalAvgTalktime':_0x3f58c1[_0xaee4('0x41')],'predictiveIntervalDroppedCallsCallersExit':_0x3f58c1[_0xaee4('0x42')],'predictiveIntervalDroppedCallsTimeout':_0x3f58c1[_0xaee4('0x43')],'predictiveIntervalErlangCalls':_0x3f58c1[_0xaee4('0x44')],'predictiveIntervalErlangCallsDroppedCalls':_0x3f58c1[_0xaee4('0x45')],'predictiveIntervalHitRate':_0x3f58c1[_0xaee4('0x46')],'predictiveIntervalMultiplicativeFactor':_0x3f58c1['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x3f58c1[_0xaee4('0x47')],'predictiveIntervalAvailable':_0x3f58c1[_0xaee4('0x48')],'predictiveIntervalTotalCalls':_0x3f58c1['predictiveIntervalTotalCalls'],'message':_0x3f58c1[_0xaee4('0x49')],'originated':_0x3f58c1['originated'],'erlangCalls':_0x3f58c1[_0xaee4('0x4a')],'erlangCallToSecond':_0x3f58c1['erlangCallToSecond'],'erlangAbandonmentRate':_0x3f58c1[_0xaee4('0x4b')],'erlangBusyFactor':_0x3f58c1[_0xaee4('0x4c')],'startPredictive':_0x3f58c1[_0xaee4('0x4d')],'startProgressive':_0x3f58c1[_0xaee4('0x4e')]};if(_0x3f58c1['Trunk']){_0x14091f[_0xaee4('0x4f')]={'id':_0x3f58c1[_0xaee4('0x4f')]['id'],'name':_0x3f58c1[_0xaee4('0x4f')][_0xaee4('0x50')],'active':_0x3f58c1[_0xaee4('0x4f')]['active'],'callerid':_0x3f58c1[_0xaee4('0x4f')][_0xaee4('0x51')]};}if(_0x3f58c1[_0xaee4('0x52')]){_0x14091f[_0xaee4('0x52')]={'id':_0x3f58c1[_0xaee4('0x52')]['id'],'name':_0x3f58c1['Interval'][_0xaee4('0x50')]};}var _0x3e1946=md5(JSON[_0xaee4('0x53')](_0x14091f));if(_0x3f58c1['md5']!==_0x3e1946){_0x3f58c1[_0xaee4('0x3')]=_0x3e1946;emit(util[_0xaee4('0x54')](_0xaee4('0x55'),_0x14091f['name']),_0xaee4('0x56'),_0x14091f);}}}function emitVoiceQueueChannelRemove(_0x5e00d0){logger[_0xaee4('0x57')](_0xaee4('0x58'),JSON[_0xaee4('0x53')](_0x5e00d0));emit(util['format'](_0xaee4('0x55'),_0x5e00d0[_0xaee4('0x50')]),_0xaee4('0x59'),_0x5e00d0);io[_0xaee4('0x20')](_0xaee4('0x5a'),_0x5e00d0);}function notSendMessagesQueue(_0x364e62){if(_0x364e62['sendMessageOneNotActive']){if(_0x364e62[_0xaee4('0x5b')]===0x0&&_0x364e62['pTalking']===0x0){_0x364e62[_0xaee4('0x5c')]=![];_0x364e62[_0xaee4('0x5d')]=0x0;_0x364e62[_0xaee4('0x5e')]=0x0;_0x364e62['message']=_0xaee4('0x5f');ut[_0xaee4('0x60')](_0xaee4('0x61'),_0x364e62[_0xaee4('0x50')]+'\x20is\x20not\x20active');}else{_0x364e62[_0xaee4('0x49')]=_0xaee4('0x62');ut['logger'](_0xaee4('0x61'),_0x364e62[_0xaee4('0x50')]+'\x20is\x20deactivated');}emitCampaignPreview(_0x364e62);}}Preview[_0xaee4('0xc')]['loopCampaigns']=function(){var _0x489c10=this;setInterval(function(){_0x489c10[_0xaee4('0x63')]();},0x7cf);};Preview[_0xaee4('0xc')]['syncCampaigns']=function(){var _0x30558d=this[_0xaee4('0x10')];this[_0xaee4('0x14')]+=0x1;for(var _0x57275a in _0x30558d){if(_0x30558d[_0xaee4('0x64')](_0x57275a)&&(_0x30558d[_0x57275a]['dialMethod']===_0xaee4('0x5')||_0x30558d[_0x57275a]['dialMethod']==='booked')&&_0x30558d[_0x57275a][_0xaee4('0x2a')]==='outbound'){if(this['clockClearZombieChannels']>0x7){this[_0xaee4('0x14')]=0x0;this[_0xaee4('0x65')]();}}if(_0x30558d['hasOwnProperty'](_0x57275a)&&_0x30558d[_0x57275a][_0xaee4('0x30')]===_0xaee4('0x5')&&_0x30558d[_0x57275a][_0xaee4('0x2a')]===_0xaee4('0x66')){if(_0x30558d[_0x57275a][_0xaee4('0x2f')]){this[_0xaee4('0x67')](_0x30558d[_0x57275a]);if(_0x30558d[_0x57275a][_0xaee4('0x68')])this[_0xaee4('0x69')](_0x30558d[_0x57275a]);}else{notSendMessagesQueue(_0x30558d[_0x57275a]);}}}};Preview[_0xaee4('0xc')][_0xaee4('0x6a')]=function(_0x5cccbf){var _0x12046f=this;this[_0xaee4('0xf')][_0xaee4('0xd')](function(){if(!_[_0xaee4('0x6b')](_0x12046f[_0xaee4('0x13')][_0x5cccbf])){loggerAction[_0xaee4('0x57')](_0xaee4('0x6c'),_0x5cccbf,_0xaee4('0x6d'),_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')],_0xaee4('0x6f'),JSON[_0xaee4('0x53')](_0x12046f['campaignsPreview'][_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]][_0xaee4('0x5b')]),_0xaee4('0x70'),JSON[_0xaee4('0x53')](_0x12046f[_0xaee4('0x10')][_0x12046f[_0xaee4('0x13')][_0x5cccbf]['queue']][_0xaee4('0x24')]),JSON[_0xaee4('0x53')](_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x71')]),JSON['stringify'](_[_0xaee4('0x72')](_0x12046f[_0xaee4('0x13')][_0x5cccbf],[_0xaee4('0x73'),'UserId','VoiceQueueId',_0xaee4('0x74')])));return ami[_0xaee4('0x75')]({'action':_0xaee4('0x76'),'channel':_0x12046f['actions'][_0x5cccbf]['channel']})[_0xaee4('0x77')](function(_0xed77fc){if(_0xed77fc['message']===_0xaee4('0x78')){setTimeout(function(){if(_0x12046f['actions'][_0x5cccbf]){ut['updateOriginated'](_0x12046f[_0xaee4('0x10')][_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]],_0xaee4('0x79'));if(_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x71')]===!![]){ut[_0xaee4('0x7a')](_0x12046f[_0xaee4('0x10')][_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]],'[clearZombieChannel]');ut[_0xaee4('0x7b')](_0xaee4('0x7c')+_0x5cccbf,_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x5cccbf,_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]);delete _0x12046f['actions'][_0x5cccbf];}},0x2328);}});}});};Preview['prototype'][_0xaee4('0x65')]=function(){var _0x18a15f=this;loggerAction['info'](_0xaee4('0x7d'),_['size'](this['actions']));for(var _0x17a46f in this['actions']){if(_0x18a15f['actions'][_0xaee4('0x64')](_0x17a46f)){_0x18a15f[_0xaee4('0x6a')](_0x17a46f);}}};Preview['prototype'][_0xaee4('0x69')]=function(_0xce46f9){var _0x591295=this;rpcDb[_0xaee4('0x7e')](_0xce46f9['id'],ut[_0xaee4('0x7f')](this[_0xaee4('0x80')]))[_0xaee4('0x81')](function(_0x305c98){if(!_['isNil'](_0x305c98)){for(var _0x3efd15=0x0;_0x3efd15<_0x305c98[_0xaee4('0x82')];_0x3efd15+=0x1){if(ut['getDiff'](_0x305c98[_0x3efd15][_0xaee4('0x83')])<_0xce46f9['dialRecallMeTimeout']*0x3c){if(_0x305c98[_0x3efd15][_0xaee4('0x84')]&&!_0x305c98[_0x3efd15][_0xaee4('0x84')][_0xaee4('0x85')]){_0x591295['run'](_0x305c98[_0x3efd15]['id'])[_0xaee4('0x81')](ut[_0xaee4('0x86')](_0xaee4('0x87')))[_0xaee4('0x77')](ut['logger2'](_0xaee4('0x87')));}else{rpcDb[_0xaee4('0x88')](_0x305c98[_0x3efd15]['id']);}}else{var _0x2fe666=new Action(_0x305c98[_0x3efd15],_0xce46f9);_0x2fe666[_0xaee4('0x89')]=moment()[_0xaee4('0x54')]('YYYY-MM-DD\x20HH:mm:ss');_0xce46f9[_0xaee4('0x3c')]+=0x1;ut[_0xaee4('0x8a')](_0x2fe666,0x17,_0xaee4('0x8b'));if(_0xce46f9[_0xaee4('0x8c')]){rpcDb[_0xaee4('0x8d')](ut[_0xaee4('0x8e')](_0x305c98[_0x3efd15]));rpcDb[_0xaee4('0x8f')](_0x2fe666,_0xaee4('0x90'));}else{ut[_0xaee4('0x8a')](_0x2fe666,0x16,'RecallFailedTimeout');rpcDb[_0xaee4('0x8f')](_0x2fe666,_0xaee4('0x91'));rpcDb['createCustomerFinal'](_0x2fe666,_0xaee4('0x91'));}}}}})[_0xaee4('0x77')](ut[_0xaee4('0x86')]('[getContactRecallMe]'));};Preview[_0xaee4('0xc')][_0xaee4('0x67')]=function(_0x1e1d3d){_0x1e1d3d[_0xaee4('0x5c')]=!![];if(ut[_0xaee4('0x92')](_0x1e1d3d[_0xaee4('0x23')])){_0x1e1d3d[_0xaee4('0x49')]='AGENTS_NOT_LOGGED';}else if(!ut[_0xaee4('0x93')](_0x1e1d3d['dialActive'])){_0x1e1d3d[_0xaee4('0x49')]=_0xaee4('0x5f');}else if(!this[_0xaee4('0x94')](_0x1e1d3d[_0xaee4('0x4f')])){if(!this['isTrunkReachable'](_0x1e1d3d[_0xaee4('0x95')])){_0x1e1d3d['message']=_0xaee4('0x96');}else{_0x1e1d3d['message']=_0xaee4('0x97');}}else{_0x1e1d3d[_0xaee4('0x49')]=_0xaee4('0x97');}emitCampaignPreview(_0x1e1d3d);};Preview['prototype'][_0xaee4('0x98')]=function(_0x17f21b,_0x5142d3,_0x29801c){var _0x5abad7=this;var _0x2504a1=this[_0xaee4('0x13')][_0x5142d3];var _0x9f0d7e=this[_0xaee4('0x10')][_0x2504a1[_0xaee4('0x6e')]];var _0xb6846;var _0x259b0e=![];var _0x4a2d09=0x2;var _0x4cfcde=0x3;if(_0x9f0d7e){switch(_0x29801c){case'1':_0x9f0d7e['outboundNoSuchCallsDay']+=0x1;_0x2504a1[_0xaee4('0x99')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut['logCustomer'](_0x2504a1,0x0,'NoSuchNumber');ami[_0xaee4('0x20')](_0xaee4('0x9c'),ut[_0xaee4('0x9d')](_0x2504a1,'nosuchnumber'));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0x9e'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'0',_0x9f0d7e)[_0xaee4('0x81')](function(_0x5ebb79){_0x259b0e=_0x5ebb79[_0xaee4('0xa0')]==0x1;_0x4a2d09=_0x9f0d7e[_0xaee4('0xa1')];_0x4cfcde=_0x9f0d7e['callAdditionalPhoneAfterMin'];if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xa6'));}else{if(_0x2504a1['countnosuchnumberretry']>=_0x9f0d7e[_0xaee4('0xa7')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xa6'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0x99'),_0x9f0d7e[_0xaee4('0xa1')]),_0x2504a1['unlockAgent'],_0x2504a1[_0xaee4('0xaa')]);}}delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];}else{_0x2504a1[_0xaee4('0x99')]++;logger[_0xaee4('0x57')]('actioncountonusuch',_0x2504a1[_0xaee4('0x99')]);logger[_0xaee4('0x57')]('id',_0x2504a1[_0xaee4('0xac')]);_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnosuchnumberretry':_0x2504a1[_0xaee4('0x99')]}})['then'](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case'ANSWER':var _0xeab2b6=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2504a1[_0xaee4('0xaf')]=_0xeab2b6;_0x2504a1[_0xaee4('0xb0')]=_0xeab2b6;_0x2504a1[_0xaee4('0x71')]=!![];_0x9f0d7e[_0xaee4('0x24')]+=0x1;logger['info'](_0xaee4('0xb1'),_0x2504a1[_0xaee4('0xb2')],'\x20Queue',_0x9f0d7e['name'],_0xaee4('0x70'),_0x9f0d7e[_0xaee4('0x24')]);ami[_0xaee4('0x20')](_0xaee4('0xb3'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xb4'),this[_0xaee4('0x10')][_0x2504a1[_0xaee4('0x6e')]]));if(_0x9f0d7e[_0xaee4('0xb5')]){ami[_0xaee4('0x20')](_0xaee4('0xb6'),ut[_0xaee4('0xb7')](_0x2504a1));}break;case'16':ami[_0xaee4('0x20')](_0xaee4('0xb8'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xb9'),this[_0xaee4('0x10')][_0x2504a1[_0xaee4('0x6e')]]));emitVoiceQueueChannelRemove(ut[_0xaee4('0x9d')](_0x2504a1,'complete'));_0x9f0d7e['outboundAnswerCallsDay']+=0x1;_0x9f0d7e[_0xaee4('0x29')]+=0x1;_0x9f0d7e[_0xaee4('0x22')]+=0x1;ut['decrementTalkink'](_0x9f0d7e,_0xaee4('0xba'));_0x2504a1[_0xaee4('0x9a')]=ut['totalGlobal'](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x4,_0xaee4('0xbb'));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xbc'));rpcDb['createCustomerFinal'](_0x2504a1,_0xaee4('0xbd'));rpcDb[_0xaee4('0xbe')](_0x2504a1);_0x9f0d7e[_0xaee4('0x26')]+=_0x2504a1[_0xaee4('0xbf')];_0x9f0d7e[_0xaee4('0x25')]+=_0x2504a1[_0xaee4('0xbf')];logger['info'](_0xaee4('0xc0'),_0x2504a1[_0xaee4('0xb2')],'\x20Queue',_0x9f0d7e[_0xaee4('0x50')],_0xaee4('0x70'),_0x9f0d7e['pTalking']);delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];break;case'BUSY':_0x9f0d7e[_0xaee4('0x36')]+=0x1;_0x2504a1[_0xaee4('0xc1')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x5,_0xaee4('0xc2'));_0x4a2d09=_0x9f0d7e[_0xaee4('0xc3')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];ami['emit'](_0xaee4('0xc5'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xc6')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xc7'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'5',_0x9f0d7e)[_0xaee4('0x81')](function(_0x3190ea){_0x259b0e=_0x3190ea[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x2504a1[_0xaee4('0xc1')]>=_0x9f0d7e['dialBusyMaxRetry']){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xc7'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0xc1'),_0x9f0d7e[_0xaee4('0xc3')]),_0x2504a1[_0xaee4('0xc8')],_0x2504a1[_0xaee4('0xaa')]);}}}else{_0x2504a1[_0xaee4('0xc1')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countbusyretry':_0x2504a1[_0xaee4('0xc1')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)['then'](function(){});});}});break;case _0xaee4('0xc9'):_0x9f0d7e[_0xaee4('0xca')]+=0x1;_0x2504a1[_0xaee4('0xcb')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut['logCustomer'](_0x2504a1,0x3,_0xaee4('0xcc'));_0x4a2d09=_0x9f0d7e[_0xaee4('0xcd')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];var _0x2aee91=ut['buildNoAnswerEventPayload'](_0x2504a1,_0x9f0d7e);ami[_0xaee4('0x20')]('custom:agentnoanswer',_0x2aee91);rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xce'));_0x5abad7['verifyAdditionalPhones'](_0x2504a1,'3',_0x9f0d7e)[_0xaee4('0x81')](function(_0x323b74){_0x259b0e=_0x323b74[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e['dialGlobalMaxRetry']){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x2504a1[_0xaee4('0xcb')]>=_0x9f0d7e[_0xaee4('0xcf')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xce'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0xcb'),_0x9f0d7e['dialNoAnswerRetryFrequency']),_0x2504a1[_0xaee4('0xc8')],_0x2504a1[_0xaee4('0xaa')]);}}}else{_0x2504a1['countnoanswerretry']++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1[_0xaee4('0xcb')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case'CONGESTION':_0x9f0d7e['outboundCongestionCallsDay']+=0x1;_0x2504a1['countcongestionretry']+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x8,_0xaee4('0xd0'));_0x4a2d09=_0x9f0d7e[_0xaee4('0xd1')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];ami[_0xaee4('0x20')](_0xaee4('0xd2'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xd3')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xd4'));_0x5abad7['verifyAdditionalPhones'](_0x2504a1,'8',_0x9f0d7e)[_0xaee4('0x81')](function(_0xeb6c7){_0x259b0e=_0xeb6c7[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut['totalGlobal'](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,'Global');rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x2504a1['countcongestionretry']>=_0x9f0d7e[_0xaee4('0xd5')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xd4'));}else{rpcDb['rescheduleContact'](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0xd6'),_0x9f0d7e[_0xaee4('0xc3')]),_0x2504a1[_0xaee4('0xc8')],_0x2504a1['activeContact']);}}}else{_0x2504a1[_0xaee4('0xd6')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1['idContact'],'field':{'countcongestionretry':_0x2504a1[_0xaee4('0xd6')]}})[_0xaee4('0x81')](function(){_0x5abad7['swapAdditionalPhones'](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case _0xaee4('0xd7'):_0x9f0d7e[_0xaee4('0x3d')]+=0x1;_0x2504a1['countagentrejectretry']+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x14,'AgentReject');_0x4a2d09=_0x9f0d7e['dialAgentRejectRetryFrequency'];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];ami[_0xaee4('0x20')](_0xaee4('0xd8'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xd9')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xda'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'20',_0x9f0d7e)[_0xaee4('0x81')](function(_0xdf21d1){_0x259b0e=_0xdf21d1[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut['totalGlobal'](_0x2504a1)>=_0x9f0d7e['dialGlobalMaxRetry']){_0xb6846=ut['cloneAction'](_0x2504a1,0x14,_0xaee4('0xdb'));rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xdc'));}else{if(_0x2504a1['countagentrejectretry']>=_0x9f0d7e['dialAgentRejectMaxRetry']){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xdc'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2504a1,_0xaee4('0xdd'),_0x9f0d7e[_0xaee4('0xde')]),_0x2504a1['unlockAgent'],_0x2504a1['activeContact']);}}}else{_0x2504a1[_0xaee4('0xcb')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1[_0xaee4('0xcb')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case _0xaee4('0xdf'):_0x9f0d7e[_0xaee4('0x3f')]+=0x1;_0x2504a1[_0xaee4('0xe0')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0xb,_0xaee4('0xe1'));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xe2'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'11',_0x9f0d7e)[_0xaee4('0x81')](function(_0xf4b97c){_0x259b0e=_0xf4b97c[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut['totalGlobal'](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xe2'));}else{if(_0x2504a1[_0xaee4('0xe3')]>=_0x9f0d7e[_0xaee4('0xe4')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xe2'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,'countabandonedretry',_0x9f0d7e['dialAbandonedRetryFrequency']),_0x2504a1[_0xaee4('0xc8')],_0x2504a1['activeContact']);}}}else{_0x2504a1[_0xaee4('0xcb')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1['countnoanswerretry']}})['then'](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case'18':_0x9f0d7e['outboundUnknownCallsDay']+=0x1;_0x2504a1['countmachineretry']+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut['totalGlobal'](_0x2504a1);ut['logCustomer'](_0x2504a1,0x12,_0x17f21b[_0xaee4('0xe5')]||_0x17f21b[_0xaee4('0xe6')]);ami[_0xaee4('0x20')]('custom:amd',ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xe7')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xe8'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'18',_0x9f0d7e)[_0xaee4('0x81')](function(_0x1f264a){_0x259b0e=_0x1f264a[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0x12,'Global');rpcDb['createCustomerFinal'](_0xb6846,_0xaee4('0xe8'));}else{rpcDb['createCustomerFinal'](_0x2504a1,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x2504a1['countnoanswerretry']++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1['countnoanswerretry']}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)['then'](function(){});});}});delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];break;case'19':_0x9f0d7e[_0xaee4('0x3e')]+=0x1;_0x2504a1['countglobal']=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x13,_0x17f21b[_0xaee4('0xe5')]||_0x17f21b[_0xaee4('0xe6')]);ami[_0xaee4('0x20')]('custom:amd',ut['buildObj'](_0x2504a1,_0xaee4('0xe7')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xe9'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'18',_0x9f0d7e)[_0xaee4('0x81')](function(_0x1c1cb9){_0x259b0e=_0x1c1cb9[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x2504a1,_0xaee4('0xe9'));}}else{_0x2504a1[_0xaee4('0xcb')]++;_0x5abad7['incrementPreviewCounters']({'id':_0x2504a1['idContact'],'field':{'countnoanswerretry':_0x2504a1[_0xaee4('0xcb')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});delete this['actions'][_0x17f21b[_0xaee4('0xab')]];break;default:if(_0x2504a1['dialAnswer']){ut['decrementTalkink'](_0x9f0d7e,_0xaee4('0xea'));ut[_0xaee4('0x7b')](_0xaee4('0xeb')+_0x9f0d7e[_0xaee4('0x50')],_0x17f21b);}_0x9f0d7e[_0xaee4('0x3e')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0xc,_0x17f21b[_0xaee4('0xe5')]||_0x17f21b['dialstatus']);_0x4a2d09=_0x9f0d7e[_0xaee4('0xde')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];rpcDb[_0xaee4('0x8f')](_0x2504a1,'[callProgressDetectingCustomer][logUnknown]');_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'20',_0x9f0d7e)[_0xaee4('0x81')](function(_0x2d2180){_0x259b0e=_0x2d2180[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut['cloneAction'](_0x2504a1,0xf,'Global');rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xec'));}else{rpcDb[_0xaee4('0xa5')](_0x2504a1,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];}else{_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});}});}if(!(_0x2504a1['dialAnswer']&&_0x29801c==='16')){ut[_0xaee4('0xed')](_0x9f0d7e,'[callProgressDetectingCustomer]');logger['info']('[originated][decrement][callProgressDetectingCustomer]',_0x2504a1[_0xaee4('0xb2')],_0xaee4('0xee'),_0x9f0d7e[_0xaee4('0x50')],_0xaee4('0x6f'),_0x9f0d7e[_0xaee4('0x5b')]);}if(_0x29801c!==_0xaee4('0xef')){delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];delete this['actions'][_0x17f21b[_0xaee4('0xf0')]];}}};Preview[_0xaee4('0xc')][_0xaee4('0xf1')]=function(_0x53f76e,_0x16783c,_0x4b06b0){if(_[_0xaee4('0xf2')](_0x16783c)&&_0xaee4('0xf3')!==typeof _0x16783c){return;}if(_[_0xaee4('0xf2')](_0x4b06b0)&&'object'!==typeof _0x4b06b0){return;}switch(_0x4b06b0[_0xaee4('0xf4')]){case'0':ut['logAgent'](_0x53f76e,0x0,_0xaee4('0xf5'));rpcDb[_0xaee4('0xf6')](_0x53f76e,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x53f76e,0x3,_0xaee4('0xcc'));rpcDb['createAgentHistory'](_0x53f76e,_0xaee4('0xf7'));break;case'5':ut['logAgent'](_0x53f76e,0x5,'Busy');rpcDb[_0xaee4('0xf6')](_0x53f76e,_0xaee4('0xf8'));break;case'8':ut[_0xaee4('0xf9')](_0x53f76e,0x8,_0xaee4('0xd0'));rpcDb[_0xaee4('0xf6')](_0x53f76e,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0xaee4('0xf9')](_0x53f76e,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x53f76e,_0xaee4('0xfa'));break;default:ut['logAgent'](_0x53f76e,0xc,_0x4b06b0[_0xaee4('0xf4')]);rpcDb[_0xaee4('0xf6')](_0x53f76e,_0xaee4('0xfb'));}ut[_0xaee4('0xed')](_0x16783c,_0xaee4('0xfc'));logger[_0xaee4('0x57')](_0xaee4('0xfd'),_0x53f76e['uniqueid'],_0xaee4('0xee'),_0x16783c[_0xaee4('0x50')],_0xaee4('0x6f'),_0x16783c['originated']);delete this['actions'][_0x53f76e[_0xaee4('0xb2')]];};Preview[_0xaee4('0xc')][_0xaee4('0x9f')]=function(_0x457419,_0x10e417,_0x347084){return Promise[_0xaee4('0xfe')]()[_0xaee4('0x81')](cmHopperAdditionalPhone[_0xaee4('0x9f')](_0x457419,_0x10e417,_0x347084))[_0xaee4('0x77')](logger[_0xaee4('0x57')](_0xaee4('0xff')));};Preview['prototype'][_0xaee4('0xae')]=function(_0x2cffcc,_0x2f7061,_0x3baf40){return Promise[_0xaee4('0xfe')]()[_0xaee4('0x81')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x2cffcc,_0x2f7061,_0x3baf40))[_0xaee4('0x77')](logger[_0xaee4('0x57')](_0xaee4('0x100')));};Preview[_0xaee4('0xc')][_0xaee4('0xad')]=function(_0x4bd009){return Promise[_0xaee4('0xfe')]()[_0xaee4('0x81')](cmHopperAdditionalPhone[_0xaee4('0xad')](_0x4bd009))['catch'](logger[_0xaee4('0x57')](_0xaee4('0x101')));};Preview[_0xaee4('0xc')][_0xaee4('0x102')]=function(_0x413b45,_0x301471,_0x3b976d,_0x5751b4,_0x4f8675){var _0x362056=this;return new Promise(function(_0x1a2fe2,_0x1ba16c){if(_['isNil'](_0x301471)||_[_0xaee4('0x6b')](_0x301471[_0xaee4('0x103')])||_['isNil'](_0x301471[_0xaee4('0x104')])||_[_0xaee4('0x6b')](_0x301471[_0xaee4('0x105')])){_0x1ba16c(ut['message'](_0xaee4('0x106'),_0x5751b4,_0x4f8675));return;}var _0x395c1d=uuid['v4']();var _0x1e18f1=_0x362056[_0xaee4('0x10')][_0x301471['Queue'][_0xaee4('0x50')]];var _0x4a8714=_0x3b976d?_0x362056[_0xaee4('0x80')][_0x3b976d]['id']:undefined;_0x362056[_0xaee4('0x13')][_0x395c1d]=new Action(_0x301471,_0x1e18f1,_0x395c1d,_0x3b976d,_0x4a8714);var _0xf0e8f1=_0x362056[_0xaee4('0x13')][_0x395c1d];_0xf0e8f1[_0xaee4('0xc8')]=_0x5751b4;_0xf0e8f1[_0xaee4('0xaa')]=_0x4f8675;_0xf0e8f1['lookAgent']=_0x3b976d;if(_[_0xaee4('0x107')](_0x413b45)){_0x362056[_0xaee4('0x108')](_0xf0e8f1,_0x1e18f1,_0x301471,_0x3b976d)[_0xaee4('0x81')](function(_0x58c00d){logger[_0xaee4('0x57')](_0xaee4('0x109'),_0xaee4('0x10a')+_0xf0e8f1['queue']+_0xaee4('0x10b')+_0xf0e8f1[_0xaee4('0xac')],JSON[_0xaee4('0x53')](_0x58c00d));ami['emit'](_0xaee4('0x10c'),ut[_0xaee4('0x9d')](_0xf0e8f1,_0xaee4('0x10d'),_0x362056[_0xaee4('0x10')][_0xf0e8f1['queue']]));_0x1a2fe2(ut[_0xaee4('0x49')]('Calling'));})[_0xaee4('0x77')](function(_0x41e367){ut['logger'](_0xaee4('0x10e'),_0x41e367);_0x1ba16c(ut[_0xaee4('0x49')](_0xaee4('0x10f'),_0x5751b4,_0x4f8675));});}else{_0x1e18f1[_0xaee4('0x35')]+=0x1;ut[_0xaee4('0x110')](_0xf0e8f1);rpcDb[_0xaee4('0x111')](_0xf0e8f1,_0xaee4('0x112'));delete _0x362056[_0xaee4('0x13')][_0x395c1d];_0x1ba16c(ut[_0xaee4('0x49')](_0xaee4('0x113'),_0x5751b4,_0x4f8675));}});};Preview['prototype'][_0xaee4('0x94')]=function(_0x3b1c5f){return!_[_0xaee4('0x6b')](_0x3b1c5f)&&!_['isNil'](_0x3b1c5f[_0xaee4('0x50')])&&!_['isNil'](_0x3b1c5f[_0xaee4('0x114')])&&_0x3b1c5f[_0xaee4('0x114')]&&!_[_0xaee4('0x6b')](this[_0xaee4('0x12')][util[_0xaee4('0x54')](_0xaee4('0x115'),_0x3b1c5f['name'])])&&!_[_0xaee4('0x6b')](this[_0xaee4('0x12')][util[_0xaee4('0x54')](_0xaee4('0x115'),_0x3b1c5f[_0xaee4('0x50')])][_0xaee4('0x76')])&&(this[_0xaee4('0x12')][util['format']('SIP/%s',_0x3b1c5f[_0xaee4('0x50')])][_0xaee4('0x76')]==='reachable'||this['trunks'][util[_0xaee4('0x54')]('SIP/%s',_0x3b1c5f['name'])][_0xaee4('0x76')]==='unmonitored');};Preview[_0xaee4('0xc')][_0xaee4('0x116')]=function(_0x259069,_0x5054a0){return this[_0xaee4('0x117')](_0x259069,_0x5054a0)['then'](function(_0x4d0378){return _[_0xaee4('0x72')](_0x4d0378,[_0xaee4('0x49')]);})[_0xaee4('0x77')](function(_0x9dedf5){if(_0x9dedf5[_0xaee4('0x118')]){rpcDb['unlockContact'](_0x259069);}if(_0x9dedf5[_0xaee4('0x114')]){rpcDb[_0xaee4('0x88')](_0x259069);}throw _[_0xaee4('0x72')](_0x9dedf5,['message']);});};Preview[_0xaee4('0xc')][_0xaee4('0x117')]=function(_0x32c8f6,_0x5c2176){var _0x24d2dc=this;var _0x359f17,_0x2af92d;return rpcDb[_0xaee4('0x119')](_0x32c8f6)[_0xaee4('0x81')](function(_0x164cbf){if(!_[_0xaee4('0x6b')](_0x164cbf[0x0])){_0x2af92d=_0x164cbf[0x0][_0xaee4('0x11a')]?![]:!![];_0x359f17=_0x164cbf[0x0][_0xaee4('0x11a')]?!![]:![];_0x359f17=_0x5c2176?!![]:_0x359f17;}var _0x328daf=_0x24d2dc[_0xaee4('0x11b')](_0x164cbf);if(_0x328daf[_0xaee4('0x11c')]){rpcDb['checkIsBlackList'](_[_0xaee4('0x72')](_0x164cbf[0x0],[_0xaee4('0x105'),_0xaee4('0x104')]))[_0xaee4('0x81')](function(_0x5042e5){_0x24d2dc[_0xaee4('0x102')](_0x5042e5,_0x164cbf[0x0],_0x5c2176,_0x2af92d,_0x359f17)[_0xaee4('0x81')](function(_0x57b443){return _0x57b443;})[_0xaee4('0x77')](function(_0xaf12c3){throw _0xaf12c3;});})['catch'](function(_0x5ed6f7){ut['logger'](_0xaee4('0x11d'),_0x5ed6f7);throw ut[_0xaee4('0x49')](_0xaee4('0x11e'),_0x2af92d,_0x359f17);});}else{throw ut['message'](_0x328daf[_0xaee4('0x49')],_0x2af92d,_0x359f17);}})['catch'](function(_0x492c42){ut[_0xaee4('0x60')](_0xaee4('0x11f'),_0x492c42);throw ut[_0xaee4('0x49')](_0xaee4('0x11e'),![],!![]);});};Preview[_0xaee4('0xc')][_0xaee4('0x11b')]=function(_0x13cd45){if(_['isNil'](_0x13cd45)||_[_0xaee4('0x107')](_0x13cd45)||!_[_0xaee4('0x6b')](_0x13cd45[0x0][_0xaee4('0x84')])&&_[_0xaee4('0x6b')](_0x13cd45[0x0][_0xaee4('0x84')][_0xaee4('0x50')])){ut['logger'](_0xaee4('0x120'),_0x13cd45);return{'isValid':![],'message':_0xaee4('0x121')};}var _0x41d06f=this[_0xaee4('0x10')][_0x13cd45[0x0][_0xaee4('0x6d')][_0xaee4('0x50')]];_0x41d06f['message']=_0xaee4('0x97');if(_['isNil'](_0x41d06f)){ut[_0xaee4('0x60')](_0xaee4('0x122'),_0x41d06f);return{'isValid':![],'message':_0xaee4('0x123')};}if(!this[_0xaee4('0x94')](_0x41d06f[_0xaee4('0x4f')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0xaee4('0x124')+_0x41d06f[_0xaee4('0x50')]+'\x20Trunk\x20is\x20not\x20active');if(!this[_0xaee4('0x94')](_0x41d06f[_0xaee4('0x95')])){ut[_0xaee4('0x60')](_0xaee4('0x125'),_0x41d06f['name']+_0xaee4('0x126'));return{'isValid':![],'message':_0xaee4('0x127')};}}if(!ut[_0xaee4('0x93')](_0x41d06f[_0xaee4('0x2f')])){ut['logger'](_0xaee4('0x128'),_0x41d06f['name']+_0xaee4('0x129'));return{'isValid':![],'message':_0xaee4('0x124')+_0x41d06f['name']+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xaee4('0x12a')};};Preview['prototype'][_0xaee4('0x108')]=function(_0x1f77e9,_0x4d1417,_0x5c9630,_0x2b0000){var _0x50c6fb=this;return new Promise(function(_0x1932e7,_0x3d1d8b){var _0x128e34=_0x1f77e9[_0xaee4('0xb2')];var _0x5d0d8e=_0x50c6fb[_0xaee4('0x94')](_0x4d1417[_0xaee4('0x4f')])?util['format'](_0xaee4('0x12b'),_0x4d1417['Trunk'][_0xaee4('0x50')],_['isNil'](_0x4d1417[_0xaee4('0x33')])?'':_0x4d1417[_0xaee4('0x33')][_0xaee4('0x12c')]()||'',_0x4d1417[_0xaee4('0x12d')]>0x0?_0x5c9630['phone'][_0xaee4('0x12e')](_0x4d1417[_0xaee4('0x12d')]):_0x5c9630[_0xaee4('0x104')]):util[_0xaee4('0x54')](_0xaee4('0x12b'),_[_0xaee4('0x6b')](_0x4d1417[_0xaee4('0x95')])?_0x4d1417[_0xaee4('0x4f')]['name']:_0x4d1417[_0xaee4('0x95')][_0xaee4('0x50')],_[_0xaee4('0x6b')](_0x4d1417['dialPrefix'])?'':_0x4d1417[_0xaee4('0x33')][_0xaee4('0x12c')]()||'',_0x4d1417[_0xaee4('0x12d')]>0x0?_0x5c9630[_0xaee4('0x104')][_0xaee4('0x12e')](_0x4d1417[_0xaee4('0x12d')]):_0x5c9630[_0xaee4('0x104')]);var _0x228a80=_0x50c6fb[_0xaee4('0x94')](_0x4d1417[_0xaee4('0x4f')])?ut[_0xaee4('0x12f')](_0x4d1417[_0xaee4('0x4f')][_0xaee4('0x51')],_0x4d1417[_0xaee4('0x31')],_0x4d1417[_0xaee4('0x130')]>0x0?ut[_0xaee4('0x131')](_0x4d1417[_0xaee4('0x132')],_0x4d1417[_0xaee4('0x130')]):_0x4d1417[_0xaee4('0x132')]):ut[_0xaee4('0x12f')](_[_0xaee4('0x6b')](_0x4d1417['TrunkBackup'])?_0x4d1417[_0xaee4('0x4f')][_0xaee4('0x51')]:_0x4d1417[_0xaee4('0x95')][_0xaee4('0x51')],_0x4d1417['dialOriginateCallerIdName'],_0x4d1417[_0xaee4('0x130')]>0x0?ut[_0xaee4('0x131')](_0x4d1417[_0xaee4('0x132')],_0x4d1417[_0xaee4('0x130')]):_0x4d1417[_0xaee4('0x132')]);if(_0x228a80){_0x1f77e9['originatecalleridname']=ut[_0xaee4('0x133')](_0x228a80);_0x1f77e9[_0xaee4('0x134')]=ut['extractCalleridNumber'](_0x228a80);}var _0x596e8e=ut[_0xaee4('0x135')](_0x4d1417,_0x5c9630,_0x5d0d8e,_0x228a80,_0x128e34,_0x1f77e9);_[_0xaee4('0x136')](_0x1f77e9,ut[_0xaee4('0x137')](_0x596e8e));_0x1f77e9[_0xaee4('0x89')]=moment()[_0xaee4('0x54')](_0xaee4('0x138'));_0x4d1417[_0xaee4('0x139')]=_0x596e8e;ami[_0xaee4('0x75')](ut[_0xaee4('0x13a')](_0x1f77e9,_0x4d1417,_0x596e8e,_0x1f77e9['activeContact'],_0x2b0000))[_0xaee4('0x81')](function(_0x2c05cd){_0x4d1417[_0xaee4('0x5b')]+=0x1;logger['info'](_0xaee4('0x13b'),_0x128e34,_0xaee4('0xee'),_0x4d1417[_0xaee4('0x50')],_0xaee4('0x6f'),_0x4d1417['originated']);_0x1932e7(_0x2c05cd);})[_0xaee4('0x77')](function(_0x46a3cc){ut[_0xaee4('0xf9')](_0x1f77e9,0xe,'OriginateError');rpcDb['createAgentHistory'](_0x1f77e9,'[originateFailure][logOriginateFailure]');_0x3d1d8b(_0x46a3cc);});});};Preview[_0xaee4('0xc')][_0xaee4('0x13c')]=function(_0x4f2d1d){if(this['actions'][_0x4f2d1d[_0xaee4('0xab')]]){this[_0xaee4('0x13')][_0x4f2d1d[_0xaee4('0xab')]]['channel']=_0x4f2d1d['channel'];}};Preview['prototype'][_0xaee4('0x13d')]=function(_0xef1aa3){var _0x56331c=this;var _0x38682b=this['actions'][_0xef1aa3[_0xaee4('0x13e')]];if(_0x38682b){if(_0x38682b['lookAgent']&&this[_0xaee4('0x80')][_0x38682b[_0xaee4('0x13f')]]){ut['logLookAgent'](_0x38682b,this[_0xaee4('0x80')][_0x38682b['lookAgent']][_0xaee4('0x50')],this[_0xaee4('0x80')][_0x38682b[_0xaee4('0x13f')]]['id']);}var _0x3d7267=_['clone'](_0x38682b);_0x3d7267[_0xaee4('0xaf')]=moment()['format'](_0xaee4('0x138'));var _0x5d5011=_0x56331c[_0xaee4('0x10')][_0x38682b[_0xaee4('0x6e')]];if(ut['isFailure'](_0xef1aa3['response'])){if(_0x38682b[_0xaee4('0xc8')]){rpcDb['unlockContact'](_0x38682b[_0xaee4('0xac')]);}if(_0x38682b[_0xaee4('0xaa')]){rpcDb[_0xaee4('0x88')](_0x38682b[_0xaee4('0xac')]);}ami[_0xaee4('0x20')]('custom:agentringnoanswer',ut['buildObj'](_0x38682b,_0xaee4('0x140'),this[_0xaee4('0x10')][_0x38682b[_0xaee4('0x6e')]]));this['callProgressDetectingAgent'](_0x3d7267,_0x5d5011,_0xef1aa3);}else{_0x38682b[_0xaee4('0x89')]=moment()[_0xaee4('0x54')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0xaee4('0xf9')](_0x3d7267,0x4,_0xaee4('0xbb'));rpcDb[_0xaee4('0xf6')](_0x3d7267,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xaee4('0xc')]['syncHangup']=function(_0x5a45df){var _0x3d056c=this[_0xaee4('0x13')][_0x5a45df[_0xaee4('0xab')]];var _0x3dff99;if(_0x3d056c){_0x3dff99=this['campaignsPreview'][_0x3d056c[_0xaee4('0x6e')]];logger[_0xaee4('0x57')](_0xaee4('0x141'),_0x5a45df[_0xaee4('0xab')],_0xaee4('0xee'),_0x3dff99['name'],_0xaee4('0x70'),_0x3dff99[_0xaee4('0x24')]);}if(this[_0xaee4('0x13')][_0x5a45df[_0xaee4('0xab')]]&&_0x5a45df[_0xaee4('0xab')]!==_0x5a45df['uniqueid']){if(_0x5a45df[_0xaee4('0x142')]==='16'&&this[_0xaee4('0x13')][_0x5a45df['linkedid']][_0xaee4('0x71')]){this['callProgressDetectingCustomer'](_0x5a45df,_0x5a45df[_0xaee4('0xab')],_0x5a45df['cause']);}else if(this[_0xaee4('0x13')][_0x5a45df['linkedid']][_0xaee4('0x71')]){logger[_0xaee4('0x57')](_0xaee4('0x143'),_0x5a45df['linkedid'],_0x5a45df[_0xaee4('0x142')],_0xaee4('0xee'),_0x3dff99[_0xaee4('0x50')],_0xaee4('0x70'),_0x3dff99[_0xaee4('0x24')]);this[_0xaee4('0x98')](_0x5a45df,_0x5a45df[_0xaee4('0xab')],_0x5a45df[_0xaee4('0x142')]);}}else if(_0x3d056c&&_[_0xaee4('0x6b')](_0x3d056c[_0xaee4('0x144')])&&_0x3dff99['dialQueueProject']&&_0x5a45df['linkedid']===_0x5a45df[_0xaee4('0xb2')]&&_[_0xaee4('0x6b')](_0x5a45df[_0xaee4('0xf4')])&&_0x5a45df['cause']==='16'&&_0x5a45df[_0xaee4('0x145')]==='6'&&_[_0xaee4('0xf2')](_0x3d056c[_0xaee4('0x146')])){if(_0x3d056c[_0xaee4('0xc8')]){rpcDb[_0xaee4('0x147')](_0x3d056c[_0xaee4('0xac')]);}if(_0x3d056c[_0xaee4('0xaa')]){rpcDb['disableContact'](_0x3d056c[_0xaee4('0xac')]);}_0x5a45df[_0xaee4('0xf4')]='22';this[_0xaee4('0xf1')](_0x3d056c,_0x3dff99,_0x5a45df);}else if(_0x3d056c&&_0x3d056c[_0xaee4('0x146')]){if(_0x5a45df[_0xaee4('0x142')]==='16'&&this[_0xaee4('0x13')][_0x5a45df['linkedid']][_0xaee4('0x71')]){logger['info'](_0xaee4('0x148'),_0x5a45df[_0xaee4('0xab')],_0x5a45df[_0xaee4('0x142')],_0xaee4('0xee'),_0x3dff99['name'],'pTalking:\x20',_0x3dff99[_0xaee4('0x24')]);this[_0xaee4('0x98')](_0x5a45df,_0x5a45df['linkedid'],_0x5a45df['cause']);}else if(this[_0xaee4('0x13')][_0x5a45df[_0xaee4('0xab')]][_0xaee4('0x71')]){logger[_0xaee4('0x57')](_0xaee4('0x143'),_0x5a45df['linkedid'],_0x5a45df[_0xaee4('0x142')],_0xaee4('0xee'),_0x3dff99[_0xaee4('0x50')],_0xaee4('0x70'),_0x3dff99['pTalking']);this[_0xaee4('0x98')](_0x5a45df,_0x5a45df[_0xaee4('0xab')],_0x5a45df[_0xaee4('0x142')]);}}};Preview[_0xaee4('0xc')][_0xaee4('0x149')]=function(_0x18981a){if(this[_0xaee4('0x13')][_0x18981a[_0xaee4('0xf0')]]&&_0x18981a[_0xaee4('0xf0')]!==_0x18981a[_0xaee4('0x14a')]){this[_0xaee4('0x98')](_0x18981a,_0x18981a[_0xaee4('0xf0')],_0x18981a[_0xaee4('0xe6')]);}};Preview[_0xaee4('0xc')]['syncHangupRequest']=function(_0x296aa5){if(this[_0xaee4('0x13')][_0x296aa5[_0xaee4('0xab')]]&&_0x296aa5[_0xaee4('0xab')]!==_0x296aa5[_0xaee4('0xb2')]&&!this[_0xaee4('0x13')][_0x296aa5[_0xaee4('0xab')]][_0xaee4('0x71')]){if(_0x296aa5[_0xaee4('0x142')]==='1'){this[_0xaee4('0x98')](_0x296aa5,_0x296aa5['linkedid'],_0x296aa5[_0xaee4('0x142')]);}}};Preview[_0xaee4('0xc')][_0xaee4('0x14b')]=function(_0x3e9218,_0x452581,_0x58551b){if(this[_0xaee4('0x13')][_0x3e9218]){if(_['isNil'](this['actions'][_0x3e9218][_0xaee4('0x139')])){this[_0xaee4('0x13')][_0x3e9218][_0xaee4('0x139')]={};}this[_0xaee4('0x13')][_0x3e9218][_0xaee4('0x139')][_0x452581]=_0x58551b;}};Preview[_0xaee4('0xc')][_0xaee4('0x1c')]=function(_0x142dc6){try{if(!_['isNil'](_0x142dc6)){if(ut[_0xaee4('0x14c')](_[_0xaee4('0x14d')](_0x142dc6[_0xaee4('0x14e')])[0x0])){this[_0xaee4('0x14b')](_0x142dc6['uniqueid'],_[_0xaee4('0x14d')](_0x142dc6[_0xaee4('0x14e')])[0x0],_0x142dc6[_0xaee4('0x14f')]);}}}catch(_0x4f5c49){logger[_0xaee4('0x150')](_0xaee4('0x151'),util['inspect'](_0x4f5c49,{'showHidden':![],'depth':null}));}};Preview['prototype']['syncAttendedTransfer']=function(_0x21f455){if(_0x21f455){if(this[_0xaee4('0x13')][_0x21f455[_0xaee4('0x152')]]){this[_0xaee4('0x13')][_0x21f455[_0xaee4('0x152')]][_0xaee4('0x146')]=!![];}}};Preview[_0xaee4('0xc')][_0xaee4('0x153')]=function(_0x1b35ae){if(_0x1b35ae){if(this['actions'][_0x1b35ae[_0xaee4('0x154')]]){this[_0xaee4('0x13')][_0x1b35ae['transfererlinkedid']][_0xaee4('0x146')]=!![];}}};module[_0xaee4('0x155')]=Preview;
\ No newline at end of file
+var _0x8daf=['isFailure','response','custom:agentringnoanswer','[syncHangup][talking]','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','statedesc','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','filterKey','addVariable','keys','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','md5','ioredis','../../../config/logger','preview','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','defaults','localhost','prototype','enqueue','tail','finally','campaignsPreview','voiceQueues','trunks','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','syncNewExten','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','available','loggedIn','talking','total','unmanaged','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','callerid','Interval','stringify','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice_queue_presence:remove','originated','pTalking','paused','message','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','syncCampaigns','booked','clearZombieChannels','hasOwnProperty','dialMethod','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','sequence','Queue','queue','originated:\x20','actions','pTalking:\x20','dialAnswer','VoiceQueueId','ListId','channel','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','length','dialRecallMeTimeout','Agent','voicePause','run','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','dialRecallInQueue','rescheduleContactInQueue','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerHistory','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','setMessage','sendMessageOneNotActive','IsNotLoggedIn','isActive','NOT_ACTIVE','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','linkedid','idContact','incrementPreviewCounters','swapAdditionalPhones','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','buildObj','connect','acw','custom:agentConnectPreview','buildAcw','complete','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','sumDuration','talktime','[syncHangup][talking][decrement]','countbusyretry','Busy','callAdditionalPhoneAfterMin','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','cloneAction','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','activeContact','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','dialCongestionRetryFrequency','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countmachineretry','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','cause-txt','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','ANSWER','destlinkedid','callProgressDetectingAgent','isUndefined','logAgent','createAgentHistory','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','reason','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','resolve','[incrementPreviewCounters]\x20','checkInBlack','isNil','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','execRun','pick','unlock','unlockContact','getContactPreview','recallme','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','substring','dialCutDigit','getCallerId','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','extractCalleridName','merge','toLowerVariables','variables','Action','variablesAction','OriginateError','actionid'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8daf,0x15c));var _0xf8da=function(_0x2666de,_0x41ce04){_0x2666de=_0x2666de-0x0;var _0x55704f=_0x8daf[_0x2666de];return _0x55704f;};'use strict';var util=require('util');var _=require('lodash');var uuid=require('uuid');var moment=require('moment');var md5=require(_0xf8da('0x0'));var Redis=require(_0xf8da('0x1'));var config=require('../../../config/environment');var logger=require(_0xf8da('0x2'))(_0xf8da('0x3'));var loggerAction=require(_0xf8da('0x2'))(_0xf8da('0x4'));var ami=require(_0xf8da('0x5'));var rpcDb=require(_0xf8da('0x6'));var cmHopperAdditionalPhone=require(_0xf8da('0x7'));var Action=require(_0xf8da('0x8'));var ut=require(_0xf8da('0x9'));config['redis']=_[_0xf8da('0xa')](config['redis'],{'host':_0xf8da('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xf8da('0xc')][_0xf8da('0xd')]=function(_0xbd4f48){this[_0xf8da('0xe')]=this[_0xf8da('0xe')]?this[_0xf8da('0xe')][_0xf8da('0xf')](_0xbd4f48):_0xbd4f48();};function Preview(_0x31193e){this['sequence']=new Sequence();this[_0xf8da('0x10')]=_0x31193e[_0xf8da('0x11')];this[_0xf8da('0x12')]=_0x31193e[_0xf8da('0x12')];this['actions']={};this[_0xf8da('0x13')]=_0x31193e['agents'];this[_0xf8da('0x14')]=0x0;ami['on'](_0xf8da('0x15'),this[_0xf8da('0x16')][_0xf8da('0x17')](this));ami['on'](_0xf8da('0x18'),this['syncHangup'][_0xf8da('0x17')](this));ami['on'](_0xf8da('0x19'),this[_0xf8da('0x1a')][_0xf8da('0x17')](this));ami['on'](_0xf8da('0x1b'),this[_0xf8da('0x1c')][_0xf8da('0x17')](this));ami['on']('newexten',this[_0xf8da('0x1d')]['bind'](this));ami['on']('varset',this[_0xf8da('0x1e')][_0xf8da('0x17')](this));ami['on']('attendedtransfer',this[_0xf8da('0x1f')][_0xf8da('0x17')](this));ami['on'](_0xf8da('0x20'),this[_0xf8da('0x21')][_0xf8da('0x17')](this));this[_0xf8da('0x22')](this[_0xf8da('0x10')]);}function emit(_0xfe5c73,_0x5acd3f,_0x27f5a4){io['to'](_0xfe5c73)[_0xf8da('0x23')](_0x5acd3f,_0x27f5a4);}function emitCampaignPreview(_0x53ad22){if(_0x53ad22[_0xf8da('0x24')]===_0xf8da('0x25')){var _0x4ca909={'id':_0x53ad22['id'],'name':_0x53ad22['name'],'strategy':_0x53ad22[_0xf8da('0x26')],'answered':_0x53ad22[_0xf8da('0x27')],'available':_0x53ad22[_0xf8da('0x28')],'loggedIn':_0x53ad22[_0xf8da('0x29')],'pTalking':_0x53ad22['pTalking'],'sumBillable':_0x53ad22['sumBillable'],'sumDuration':_0x53ad22['sumDuration'],'sumHoldTime':_0x53ad22['sumHoldTime']||0x0,'talking':_0x53ad22[_0xf8da('0x2a')],'total':_0x53ad22[_0xf8da('0x2b')],'type':_0x53ad22[_0xf8da('0x24')],'unmanaged':_0x53ad22[_0xf8da('0x2c')],'abandoned':_0x53ad22['abandoned'],'waiting':_0x53ad22[_0xf8da('0x2d')],'loggedInDb':_0x53ad22[_0xf8da('0x2e')],'dialActive':_0x53ad22[_0xf8da('0x2f')],'dialMethod':_0x53ad22['dialMethod'],'dialOriginateCallerIdName':_0x53ad22[_0xf8da('0x30')],'dialOriginateCallerIdNumber':_0x53ad22['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x53ad22[_0xf8da('0x31')],'dialPrefix':_0x53ad22[_0xf8da('0x32')],'outboundAnswerAgiCallsDay':_0x53ad22[_0xf8da('0x33')],'outboundAnswerCallsDay':_0x53ad22[_0xf8da('0x34')],'outboundBlacklistCallsDay':_0x53ad22[_0xf8da('0x35')],'outboundBusyCallsDay':_0x53ad22[_0xf8da('0x36')],'outboundCongestionCallsDay':_0x53ad22[_0xf8da('0x37')],'outboundDropCallsDayACS':_0x53ad22[_0xf8da('0x38')],'outboundDropCallsDayCallersExit':_0x53ad22['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x53ad22[_0xf8da('0x39')],'outboundNoAnswerCallsDay':_0x53ad22['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x53ad22['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x53ad22[_0xf8da('0x3a')],'outboundReCallsDay':_0x53ad22[_0xf8da('0x3b')],'outboundRejectCallsDay':_0x53ad22[_0xf8da('0x3c')],'outboundUnknownCallsDay':_0x53ad22[_0xf8da('0x3d')],'outboundAbandonedCallsDay':_0x53ad22[_0xf8da('0x3e')],'predictiveIntervalAnsweredCalls':_0x53ad22['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x53ad22[_0xf8da('0x3f')],'predictiveIntervalAvgTalktime':_0x53ad22['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x53ad22['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x53ad22['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x53ad22['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x53ad22['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x53ad22[_0xf8da('0x40')],'predictiveIntervalMultiplicativeFactor':_0x53ad22['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x53ad22[_0xf8da('0x41')],'predictiveIntervalAvailable':_0x53ad22[_0xf8da('0x42')],'predictiveIntervalTotalCalls':_0x53ad22[_0xf8da('0x43')],'message':_0x53ad22['message'],'originated':_0x53ad22['originated'],'erlangCalls':_0x53ad22[_0xf8da('0x44')],'erlangCallToSecond':_0x53ad22[_0xf8da('0x45')],'erlangAbandonmentRate':_0x53ad22[_0xf8da('0x46')],'erlangBusyFactor':_0x53ad22[_0xf8da('0x47')],'startPredictive':_0x53ad22[_0xf8da('0x48')],'startProgressive':_0x53ad22[_0xf8da('0x49')]};if(_0x53ad22['Trunk']){_0x4ca909[_0xf8da('0x4a')]={'id':_0x53ad22[_0xf8da('0x4a')]['id'],'name':_0x53ad22[_0xf8da('0x4a')][_0xf8da('0x4b')],'active':_0x53ad22[_0xf8da('0x4a')][_0xf8da('0x4c')],'callerid':_0x53ad22['Trunk'][_0xf8da('0x4d')]};}if(_0x53ad22[_0xf8da('0x4e')]){_0x4ca909[_0xf8da('0x4e')]={'id':_0x53ad22[_0xf8da('0x4e')]['id'],'name':_0x53ad22['Interval'][_0xf8da('0x4b')]};}var _0x4fc59f=md5(JSON[_0xf8da('0x4f')](_0x4ca909));if(_0x53ad22['md5']!==_0x4fc59f){_0x53ad22[_0xf8da('0x0')]=_0x4fc59f;emit(util['format'](_0xf8da('0x50'),_0x4ca909[_0xf8da('0x4b')]),_0xf8da('0x51'),_0x4ca909);}}}function emitVoiceQueueChannelRemove(_0x2197bd){logger[_0xf8da('0x52')](_0xf8da('0x53'),JSON['stringify'](_0x2197bd));emit(util[_0xf8da('0x54')](_0xf8da('0x50'),_0x2197bd[_0xf8da('0x4b')]),'voice_queue_channel:remove',_0x2197bd);io[_0xf8da('0x23')](_0xf8da('0x55'),_0x2197bd);}function notSendMessagesQueue(_0x9b370e){if(_0x9b370e['sendMessageOneNotActive']){if(_0x9b370e[_0xf8da('0x56')]===0x0&&_0x9b370e[_0xf8da('0x57')]===0x0){_0x9b370e['sendMessageOneNotActive']=![];_0x9b370e[_0xf8da('0x28')]=0x0;_0x9b370e[_0xf8da('0x58')]=0x0;_0x9b370e[_0xf8da('0x59')]='NOT_ACTIVE';ut[_0xf8da('0x5a')](_0xf8da('0x5b'),_0x9b370e[_0xf8da('0x4b')]+_0xf8da('0x5c'));}else{_0x9b370e[_0xf8da('0x59')]=_0xf8da('0x5d');ut['logger'](_0xf8da('0x5b'),_0x9b370e[_0xf8da('0x4b')]+'\x20is\x20deactivated');}emitCampaignPreview(_0x9b370e);}}Preview['prototype'][_0xf8da('0x22')]=function(){var _0x32bc20=this;setInterval(function(){_0x32bc20[_0xf8da('0x5e')]();},0x7cf);};Preview[_0xf8da('0xc')]['syncCampaigns']=function(){var _0x246192=this[_0xf8da('0x10')];this[_0xf8da('0x14')]+=0x1;for(var _0x2fd0db in _0x246192){if(_0x246192['hasOwnProperty'](_0x2fd0db)&&(_0x246192[_0x2fd0db]['dialMethod']===_0xf8da('0x3')||_0x246192[_0x2fd0db]['dialMethod']===_0xf8da('0x5f'))&&_0x246192[_0x2fd0db]['type']===_0xf8da('0x25')){if(this[_0xf8da('0x14')]>0x7){this[_0xf8da('0x14')]=0x0;this[_0xf8da('0x60')]();}}if(_0x246192[_0xf8da('0x61')](_0x2fd0db)&&_0x246192[_0x2fd0db][_0xf8da('0x62')]===_0xf8da('0x3')&&_0x246192[_0x2fd0db]['type']===_0xf8da('0x25')){if(_0x246192[_0x2fd0db][_0xf8da('0x2f')]){this['setMessage'](_0x246192[_0x2fd0db]);if(_0x246192[_0x2fd0db][_0xf8da('0x63')])this[_0xf8da('0x64')](_0x246192[_0x2fd0db]);}else{notSendMessagesQueue(_0x246192[_0x2fd0db]);}}}};Preview['prototype'][_0xf8da('0x65')]=function(_0x5285a6){var _0x1fe8d1=this;this[_0xf8da('0x66')][_0xf8da('0xd')](function(){if(!_['isNil'](_0x1fe8d1['actions'][_0x5285a6])){loggerAction[_0xf8da('0x52')]('[clearZombieChannels][talking]',_0x5285a6,_0xf8da('0x67'),_0x1fe8d1['actions'][_0x5285a6][_0xf8da('0x68')],_0xf8da('0x69'),JSON[_0xf8da('0x4f')](_0x1fe8d1[_0xf8da('0x10')][_0x1fe8d1[_0xf8da('0x6a')][_0x5285a6][_0xf8da('0x68')]][_0xf8da('0x56')]),_0xf8da('0x6b'),JSON['stringify'](_0x1fe8d1[_0xf8da('0x10')][_0x1fe8d1[_0xf8da('0x6a')][_0x5285a6]['queue']][_0xf8da('0x57')]),JSON[_0xf8da('0x4f')](_0x1fe8d1[_0xf8da('0x6a')][_0x5285a6][_0xf8da('0x6c')]),JSON[_0xf8da('0x4f')](_['pick'](_0x1fe8d1['actions'][_0x5285a6],['contactId','UserId',_0xf8da('0x6d'),_0xf8da('0x6e')])));return ami['Action']({'action':'status','channel':_0x1fe8d1[_0xf8da('0x6a')][_0x5285a6][_0xf8da('0x6f')]})[_0xf8da('0x70')](function(_0x35f920){if(_0x35f920[_0xf8da('0x59')]===_0xf8da('0x71')){setTimeout(function(){if(_0x1fe8d1[_0xf8da('0x6a')][_0x5285a6]){ut[_0xf8da('0x72')](_0x1fe8d1[_0xf8da('0x10')][_0x1fe8d1['actions'][_0x5285a6]['queue']],'[clearZombieChannel]');if(_0x1fe8d1['actions'][_0x5285a6][_0xf8da('0x6c')]===!![]){ut[_0xf8da('0x73')](_0x1fe8d1[_0xf8da('0x10')][_0x1fe8d1[_0xf8da('0x6a')][_0x5285a6][_0xf8da('0x68')]],'[clearZombieChannel]');ut['loggerError'](_0xf8da('0x74')+_0x5285a6,_0x1fe8d1[_0xf8da('0x6a')][_0x5285a6][_0xf8da('0x68')]);}ut[_0xf8da('0x75')](_0xf8da('0x76')+_0x5285a6,_0x1fe8d1['actions'][_0x5285a6][_0xf8da('0x68')]);delete _0x1fe8d1[_0xf8da('0x6a')][_0x5285a6];}},0x2328);}});}});};Preview[_0xf8da('0xc')][_0xf8da('0x60')]=function(){var _0x464827=this;loggerAction[_0xf8da('0x52')](_0xf8da('0x77'),_[_0xf8da('0x78')](this[_0xf8da('0x6a')]));for(var _0x35d666 in this['actions']){if(_0x464827[_0xf8da('0x6a')][_0xf8da('0x61')](_0x35d666)){_0x464827['clearZombieChannel'](_0x35d666);}}};Preview['prototype'][_0xf8da('0x64')]=function(_0x5e0f70){var _0x5c6236=this;rpcDb[_0xf8da('0x79')](_0x5e0f70['id'],ut[_0xf8da('0x7a')](this[_0xf8da('0x13')]))[_0xf8da('0x7b')](function(_0xd58654){if(!_['isNil'](_0xd58654)){for(var _0x2da398=0x0;_0x2da398<_0xd58654[_0xf8da('0x7c')];_0x2da398+=0x1){if(ut['getDiff'](_0xd58654[_0x2da398]['scheduledat'])<_0x5e0f70[_0xf8da('0x7d')]*0x3c){if(_0xd58654[_0x2da398][_0xf8da('0x7e')]&&!_0xd58654[_0x2da398][_0xf8da('0x7e')][_0xf8da('0x7f')]){_0x5c6236[_0xf8da('0x80')](_0xd58654[_0x2da398]['id'])[_0xf8da('0x7b')](ut['logger2'](_0xf8da('0x81')))['catch'](ut['logger2']('[RecallMe]'));}else{rpcDb[_0xf8da('0x82')](_0xd58654[_0x2da398]['id']);}}else{var _0x1df5fd=new Action(_0xd58654[_0x2da398],_0x5e0f70);_0x1df5fd[_0xf8da('0x83')]=moment()[_0xf8da('0x54')](_0xf8da('0x84'));_0x5e0f70[_0xf8da('0x3b')]+=0x1;ut[_0xf8da('0x85')](_0x1df5fd,0x17,'RecallInQueue');if(_0x5e0f70[_0xf8da('0x86')]){rpcDb[_0xf8da('0x87')](ut['createBody'](_0xd58654[_0x2da398]));rpcDb['createCustomerHistory'](_0x1df5fd,_0xf8da('0x88'));}else{ut[_0xf8da('0x85')](_0x1df5fd,0x16,_0xf8da('0x89'));rpcDb[_0xf8da('0x8a')](_0x1df5fd,_0xf8da('0x8b'));rpcDb[_0xf8da('0x8c')](_0x1df5fd,'[HistoryRecallClose]');}}}}})[_0xf8da('0x70')](ut['logger2'](_0xf8da('0x8d')));};Preview[_0xf8da('0xc')][_0xf8da('0x8e')]=function(_0xca622a){_0xca622a[_0xf8da('0x8f')]=!![];if(ut[_0xf8da('0x90')](_0xca622a[_0xf8da('0x29')])){_0xca622a['message']='AGENTS_NOT_LOGGED';}else if(!ut[_0xf8da('0x91')](_0xca622a[_0xf8da('0x2f')])){_0xca622a[_0xf8da('0x59')]=_0xf8da('0x92');}else if(!this[_0xf8da('0x93')](_0xca622a[_0xf8da('0x4a')])){if(!this[_0xf8da('0x93')](_0xca622a[_0xf8da('0x94')])){_0xca622a[_0xf8da('0x59')]=_0xf8da('0x95');}else{_0xca622a[_0xf8da('0x59')]='ACTIVE';}}else{_0xca622a[_0xf8da('0x59')]=_0xf8da('0x96');}emitCampaignPreview(_0xca622a);};Preview['prototype']['callProgressDetectingCustomer']=function(_0x1c3558,_0x3b7560,_0x363b66){var _0x47a56e=this;var _0x5239b7=this[_0xf8da('0x6a')][_0x3b7560];var _0x35598a=this['campaignsPreview'][_0x5239b7[_0xf8da('0x68')]];var _0x49467b;var _0x305320=![];var _0x4d0cfe=0x2;var _0x3df92b=0x3;if(_0x35598a){switch(_0x363b66){case'1':_0x35598a['outboundNoSuchCallsDay']+=0x1;_0x5239b7[_0xf8da('0x97')]+=0x1;_0x5239b7[_0xf8da('0x98')]=ut[_0xf8da('0x99')](_0x5239b7);ut[_0xf8da('0x85')](_0x5239b7,0x0,_0xf8da('0x9a'));ami[_0xf8da('0x23')](_0xf8da('0x9b'),ut['buildObj'](_0x5239b7,_0xf8da('0x9c')));rpcDb[_0xf8da('0x8a')](_0x5239b7,_0xf8da('0x9d'));_0x47a56e[_0xf8da('0x9e')](_0x5239b7,'0',_0x35598a)[_0xf8da('0x7b')](function(_0x3112dc){_0x305320=_0x3112dc[_0xf8da('0x9f')]==0x1;_0x4d0cfe=_0x35598a[_0xf8da('0xa0')];_0x3df92b=_0x35598a['callAdditionalPhoneAfterMin'];if(!_0x305320){if(ut['totalGlobal'](_0x5239b7)>=_0x35598a['dialGlobalMaxRetry']){_0x49467b=ut['cloneAction'](_0x5239b7,0xf,_0xf8da('0xa1'));rpcDb['createCustomerFinal'](_0x49467b,_0xf8da('0xa2'));}else{if(_0x5239b7['countnosuchnumberretry']>=_0x35598a[_0xf8da('0xa3')]){rpcDb[_0xf8da('0x8c')](_0x5239b7,_0xf8da('0xa2'));}else{rpcDb[_0xf8da('0xa4')](ut[_0xf8da('0xa5')](_0x5239b7,_0xf8da('0x97'),_0x35598a[_0xf8da('0xa0')]),_0x5239b7[_0xf8da('0xa6')],_0x5239b7['activeContact']);}}delete this[_0xf8da('0x6a')][_0x1c3558[_0xf8da('0xa7')]];}else{_0x5239b7['countnosuchnumberretry']++;logger[_0xf8da('0x52')]('actioncountonusuch',_0x5239b7['countnosuchnumberretry']);logger['info']('id',_0x5239b7[_0xf8da('0xa8')]);_0x47a56e[_0xf8da('0xa9')]({'id':_0x5239b7['idContact'],'field':{'countnosuchnumberretry':_0x5239b7[_0xf8da('0x97')]}})[_0xf8da('0x7b')](function(){_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)[_0xf8da('0x7b')](function(){});});}});break;case'ANSWER':var _0x4f9075=moment()[_0xf8da('0x54')]('YYYY-MM-DD\x20HH:mm:ss');_0x5239b7[_0xf8da('0xab')]=_0x4f9075;_0x5239b7['answertime']=_0x4f9075;_0x5239b7['dialAnswer']=!![];_0x35598a[_0xf8da('0x57')]+=0x1;logger['info'](_0xf8da('0xac'),_0x5239b7[_0xf8da('0xad')],_0xf8da('0xae'),_0x35598a[_0xf8da('0x4b')],_0xf8da('0x6b'),_0x35598a['pTalking']);ami['emit']('custom:agentconnect',ut[_0xf8da('0xaf')](_0x5239b7,_0xf8da('0xb0'),this[_0xf8da('0x10')][_0x5239b7[_0xf8da('0x68')]]));if(_0x35598a[_0xf8da('0xb1')]){ami[_0xf8da('0x23')](_0xf8da('0xb2'),ut[_0xf8da('0xb3')](_0x5239b7));}break;case'16':ami['emit']('custom:agentcomplete',ut[_0xf8da('0xaf')](_0x5239b7,_0xf8da('0xb4'),this[_0xf8da('0x10')][_0x5239b7[_0xf8da('0x68')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x5239b7,'complete'));_0x35598a['outboundAnswerCallsDay']+=0x1;_0x35598a[_0xf8da('0x2b')]+=0x1;_0x35598a['answered']+=0x1;ut[_0xf8da('0x73')](_0x35598a,'[16]');_0x5239b7[_0xf8da('0x98')]=ut['totalGlobal'](_0x5239b7);ut[_0xf8da('0x85')](_0x5239b7,0x4,_0xf8da('0xb5'));rpcDb['createCustomerHistory'](_0x5239b7,_0xf8da('0xb6'));rpcDb['createCustomerFinal'](_0x5239b7,_0xf8da('0xb7'));rpcDb['crateCustomerReportQueue'](_0x5239b7);_0x35598a[_0xf8da('0xb8')]+=_0x5239b7[_0xf8da('0xb9')];_0x35598a['sumBillable']+=_0x5239b7[_0xf8da('0xb9')];logger[_0xf8da('0x52')](_0xf8da('0xba'),_0x5239b7['uniqueid'],'\x20Queue',_0x35598a[_0xf8da('0x4b')],_0xf8da('0x6b'),_0x35598a[_0xf8da('0x57')]);delete this[_0xf8da('0x6a')][_0x1c3558['linkedid']];break;case'BUSY':_0x35598a[_0xf8da('0x36')]+=0x1;_0x5239b7[_0xf8da('0xbb')]+=0x1;_0x5239b7[_0xf8da('0x98')]=ut[_0xf8da('0x99')](_0x5239b7);ut['logCustomer'](_0x5239b7,0x5,_0xf8da('0xbc'));_0x4d0cfe=_0x35598a['dialBusyRetryFrequency'];_0x3df92b=_0x35598a[_0xf8da('0xbd')];ami[_0xf8da('0x23')](_0xf8da('0xbe'),ut['buildObj'](_0x5239b7,_0xf8da('0xbf')));rpcDb['createCustomerHistory'](_0x5239b7,_0xf8da('0xc0'));_0x47a56e[_0xf8da('0x9e')](_0x5239b7,'5',_0x35598a)[_0xf8da('0x7b')](function(_0x433458){_0x305320=_0x433458[_0xf8da('0x9f')]==0x1;if(!_0x305320){if(ut[_0xf8da('0x99')](_0x5239b7)>=_0x35598a['dialGlobalMaxRetry']){_0x49467b=ut[_0xf8da('0xc1')](_0x5239b7,0xf,_0xf8da('0xa1'));rpcDb[_0xf8da('0x8c')](_0x49467b,_0xf8da('0xc2'));}else{if(_0x5239b7[_0xf8da('0xbb')]>=_0x35598a[_0xf8da('0xc3')]){rpcDb['createCustomerFinal'](_0x5239b7,_0xf8da('0xc0'));}else{rpcDb[_0xf8da('0xa4')](ut[_0xf8da('0xa5')](_0x5239b7,_0xf8da('0xbb'),_0x35598a[_0xf8da('0xc4')]),_0x5239b7['unlockAgent'],_0x5239b7[_0xf8da('0xc5')]);}}}else{_0x5239b7[_0xf8da('0xbb')]++;_0x47a56e[_0xf8da('0xa9')]({'id':_0x5239b7[_0xf8da('0xa8')],'field':{'countbusyretry':_0x5239b7[_0xf8da('0xbb')]}})['then'](function(){_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)[_0xf8da('0x7b')](function(){});});}});break;case _0xf8da('0xc6'):_0x35598a[_0xf8da('0xc7')]+=0x1;_0x5239b7[_0xf8da('0xc8')]+=0x1;_0x5239b7[_0xf8da('0x98')]=ut[_0xf8da('0x99')](_0x5239b7);ut[_0xf8da('0x85')](_0x5239b7,0x3,_0xf8da('0xc9'));_0x4d0cfe=_0x35598a['dialNoAnswerRetryFrequency'];_0x3df92b=_0x35598a[_0xf8da('0xbd')];var _0xbaaada=ut[_0xf8da('0xca')](_0x5239b7,_0x35598a);ami['emit'](_0xf8da('0xcb'),_0xbaaada);rpcDb[_0xf8da('0x8a')](_0x5239b7,'[callProgressDetectingCustomer][logNoAnswer]');_0x47a56e['verifyAdditionalPhones'](_0x5239b7,'3',_0x35598a)[_0xf8da('0x7b')](function(_0x48e2c1){_0x305320=_0x48e2c1[_0xf8da('0x9f')]==0x1;if(!_0x305320){if(ut[_0xf8da('0x99')](_0x5239b7)>=_0x35598a[_0xf8da('0xcc')]){_0x49467b=ut[_0xf8da('0xc1')](_0x5239b7,0xf,_0xf8da('0xa1'));rpcDb['createCustomerFinal'](_0x49467b,_0xf8da('0xcd'));}else{if(_0x5239b7[_0xf8da('0xc8')]>=_0x35598a[_0xf8da('0xce')]){rpcDb['createCustomerFinal'](_0x5239b7,_0xf8da('0xcf'));}else{rpcDb[_0xf8da('0xa4')](ut['scheduledAt'](_0x5239b7,_0xf8da('0xc8'),_0x35598a[_0xf8da('0xd0')]),_0x5239b7[_0xf8da('0xa6')],_0x5239b7[_0xf8da('0xc5')]);}}}else{_0x5239b7['countnoanswerretry']++;_0x47a56e[_0xf8da('0xa9')]({'id':_0x5239b7['idContact'],'field':{'countnoanswerretry':_0x5239b7[_0xf8da('0xc8')]}})['then'](function(){_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)['then'](function(){});});}});break;case _0xf8da('0xd1'):_0x35598a[_0xf8da('0x37')]+=0x1;_0x5239b7[_0xf8da('0xd2')]+=0x1;_0x5239b7['countglobal']=ut[_0xf8da('0x99')](_0x5239b7);ut[_0xf8da('0x85')](_0x5239b7,0x8,_0xf8da('0xd3'));_0x4d0cfe=_0x35598a[_0xf8da('0xd4')];_0x3df92b=_0x35598a[_0xf8da('0xbd')];ami['emit']('custom:agentcongestion',ut[_0xf8da('0xaf')](_0x5239b7,_0xf8da('0xd5')));rpcDb[_0xf8da('0x8a')](_0x5239b7,_0xf8da('0xd6'));_0x47a56e[_0xf8da('0x9e')](_0x5239b7,'8',_0x35598a)[_0xf8da('0x7b')](function(_0x49646d){_0x305320=_0x49646d[_0xf8da('0x9f')]==0x1;if(!_0x305320){if(ut[_0xf8da('0x99')](_0x5239b7)>=_0x35598a[_0xf8da('0xcc')]){_0x49467b=ut[_0xf8da('0xc1')](_0x5239b7,0xf,'Global');rpcDb[_0xf8da('0x8c')](_0x49467b,_0xf8da('0xd7'));}else{if(_0x5239b7[_0xf8da('0xd2')]>=_0x35598a['dialCongestionMaxRetry']){rpcDb[_0xf8da('0x8c')](_0x5239b7,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0xf8da('0xa5')](_0x5239b7,'countcongestionretry',_0x35598a[_0xf8da('0xc4')]),_0x5239b7[_0xf8da('0xa6')],_0x5239b7['activeContact']);}}}else{_0x5239b7[_0xf8da('0xd2')]++;_0x47a56e[_0xf8da('0xa9')]({'id':_0x5239b7[_0xf8da('0xa8')],'field':{'countcongestionretry':_0x5239b7[_0xf8da('0xd2')]}})[_0xf8da('0x7b')](function(){_0x47a56e['swapAdditionalPhones'](_0x5239b7,_0x4d0cfe,_0x3df92b)['then'](function(){});});}});break;case _0xf8da('0xd8'):_0x35598a[_0xf8da('0x3c')]+=0x1;_0x5239b7[_0xf8da('0xd9')]+=0x1;_0x5239b7[_0xf8da('0x98')]=ut['totalGlobal'](_0x5239b7);ut[_0xf8da('0x85')](_0x5239b7,0x14,_0xf8da('0xda'));_0x4d0cfe=_0x35598a[_0xf8da('0xdb')];_0x3df92b=_0x35598a[_0xf8da('0xbd')];ami[_0xf8da('0x23')](_0xf8da('0xdc'),ut[_0xf8da('0xaf')](_0x5239b7,_0xf8da('0xdd')));rpcDb[_0xf8da('0x8a')](_0x5239b7,'[syncHangupRequest][logAgentReject]');_0x47a56e[_0xf8da('0x9e')](_0x5239b7,'20',_0x35598a)[_0xf8da('0x7b')](function(_0x343eed){_0x305320=_0x343eed[_0xf8da('0x9f')]==0x1;if(!_0x305320){if(ut[_0xf8da('0x99')](_0x5239b7)>=_0x35598a['dialGlobalMaxRetry']){_0x49467b=ut['cloneAction'](_0x5239b7,0x14,'AgentReject');rpcDb[_0xf8da('0x8c')](_0x49467b,_0xf8da('0xde'));}else{if(_0x5239b7[_0xf8da('0xd9')]>=_0x35598a['dialAgentRejectMaxRetry']){rpcDb[_0xf8da('0x8c')](_0x5239b7,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x5239b7,_0xf8da('0xd9'),_0x35598a['dialAgentRejectRetryFrequency']),_0x5239b7[_0xf8da('0xa6')],_0x5239b7[_0xf8da('0xc5')]);}}}else{_0x5239b7[_0xf8da('0xc8')]++;_0x47a56e['incrementPreviewCounters']({'id':_0x5239b7[_0xf8da('0xa8')],'field':{'countnoanswerretry':_0x5239b7[_0xf8da('0xc8')]}})[_0xf8da('0x7b')](function(){_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)[_0xf8da('0x7b')](function(){});});}});break;case'ABANDONED':_0x35598a[_0xf8da('0x3e')]+=0x1;_0x5239b7[_0xf8da('0xdf')]+=0x1;_0x5239b7[_0xf8da('0x98')]=ut['totalGlobal'](_0x5239b7);ut['logCustomer'](_0x5239b7,0xb,_0xf8da('0xe0'));rpcDb[_0xf8da('0x8a')](_0x5239b7,_0xf8da('0xe1'));_0x47a56e[_0xf8da('0x9e')](_0x5239b7,'11',_0x35598a)[_0xf8da('0x7b')](function(_0x467fa2){_0x305320=_0x467fa2[_0xf8da('0x9f')]==0x1;if(!_0x305320){if(ut[_0xf8da('0x99')](_0x5239b7)>=_0x35598a[_0xf8da('0xcc')]){_0x49467b=ut[_0xf8da('0xc1')](_0x5239b7,0xf,_0xf8da('0xa1'));rpcDb[_0xf8da('0x8c')](_0x49467b,_0xf8da('0xe1'));}else{if(_0x5239b7[_0xf8da('0xe2')]>=_0x35598a[_0xf8da('0xe3')]){rpcDb[_0xf8da('0x8c')](_0x5239b7,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb['rescheduleContact'](ut[_0xf8da('0xa5')](_0x5239b7,'countabandonedretry',_0x35598a['dialAbandonedRetryFrequency']),_0x5239b7[_0xf8da('0xa6')],_0x5239b7[_0xf8da('0xc5')]);}}}else{_0x5239b7[_0xf8da('0xc8')]++;_0x47a56e[_0xf8da('0xa9')]({'id':_0x5239b7['idContact'],'field':{'countnoanswerretry':_0x5239b7[_0xf8da('0xc8')]}})[_0xf8da('0x7b')](function(){_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)[_0xf8da('0x7b')](function(){});});}});break;case'18':_0x35598a[_0xf8da('0x3d')]+=0x1;_0x5239b7[_0xf8da('0xe4')]+=0x1;_0x5239b7[_0xf8da('0x98')]=ut[_0xf8da('0x99')](_0x5239b7);ut['logCustomer'](_0x5239b7,0x12,_0x1c3558['cause-txt']||_0x1c3558[_0xf8da('0xe5')]);ami[_0xf8da('0x23')](_0xf8da('0xe6'),ut['buildObj'](_0x5239b7,_0xf8da('0xe7')));rpcDb['createCustomerHistory'](_0x5239b7,_0xf8da('0xe8'));_0x47a56e['verifyAdditionalPhones'](_0x5239b7,'18',_0x35598a)['then'](function(_0x492f23){_0x305320=_0x492f23[_0xf8da('0x9f')]==0x1;if(!_0x305320){if(ut['totalGlobal'](_0x5239b7)>=_0x35598a[_0xf8da('0xcc')]){_0x49467b=ut['cloneAction'](_0x5239b7,0x12,'Global');rpcDb[_0xf8da('0x8c')](_0x49467b,_0xf8da('0xe8'));}else{rpcDb['createCustomerFinal'](_0x5239b7,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x5239b7[_0xf8da('0xc8')]++;_0x47a56e[_0xf8da('0xa9')]({'id':_0x5239b7['idContact'],'field':{'countnoanswerretry':_0x5239b7[_0xf8da('0xc8')]}})[_0xf8da('0x7b')](function(){_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)[_0xf8da('0x7b')](function(){});});}});delete this[_0xf8da('0x6a')][_0x1c3558[_0xf8da('0xa7')]];break;case'19':_0x35598a['outboundUnknownCallsDay']+=0x1;_0x5239b7[_0xf8da('0x98')]=ut[_0xf8da('0x99')](_0x5239b7);ut[_0xf8da('0x85')](_0x5239b7,0x13,_0x1c3558['cause-txt']||_0x1c3558[_0xf8da('0xe5')]);ami[_0xf8da('0x23')](_0xf8da('0xe6'),ut[_0xf8da('0xaf')](_0x5239b7,_0xf8da('0xe7')));rpcDb[_0xf8da('0x8a')](_0x5239b7,_0xf8da('0xe9'));_0x47a56e['verifyAdditionalPhones'](_0x5239b7,'18',_0x35598a)['then'](function(_0x1dd7ea){_0x305320=_0x1dd7ea[_0xf8da('0x9f')]==0x1;if(!_0x305320){if(ut[_0xf8da('0x99')](_0x5239b7)>=_0x35598a[_0xf8da('0xcc')]){_0x49467b=ut[_0xf8da('0xc1')](_0x5239b7,0xf,_0xf8da('0xa1'));rpcDb['createCustomerFinal'](_0x49467b,_0xf8da('0xe9'));}else{rpcDb[_0xf8da('0x8c')](_0x5239b7,_0xf8da('0xe9'));}}else{_0x5239b7[_0xf8da('0xc8')]++;_0x47a56e[_0xf8da('0xa9')]({'id':_0x5239b7[_0xf8da('0xa8')],'field':{'countnoanswerretry':_0x5239b7[_0xf8da('0xc8')]}})[_0xf8da('0x7b')](function(){_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)[_0xf8da('0x7b')](function(){});});}});delete this[_0xf8da('0x6a')][_0x1c3558['linkedid']];break;default:if(_0x5239b7[_0xf8da('0x6c')]){ut['decrementTalkink'](_0x35598a,'[default]');ut[_0xf8da('0x75')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x35598a[_0xf8da('0x4b')],_0x1c3558);}_0x35598a[_0xf8da('0x3d')]+=0x1;_0x5239b7[_0xf8da('0x98')]=ut[_0xf8da('0x99')](_0x5239b7);ut['logCustomer'](_0x5239b7,0xc,_0x1c3558[_0xf8da('0xea')]||_0x1c3558['dialstatus']);_0x4d0cfe=_0x35598a[_0xf8da('0xdb')];_0x3df92b=_0x35598a[_0xf8da('0xbd')];rpcDb[_0xf8da('0x8a')](_0x5239b7,_0xf8da('0xeb'));_0x47a56e[_0xf8da('0x9e')](_0x5239b7,'20',_0x35598a)[_0xf8da('0x7b')](function(_0x246162){_0x305320=_0x246162['additional']==0x1;if(!_0x305320){if(ut[_0xf8da('0x99')](_0x5239b7)>=_0x35598a[_0xf8da('0xcc')]){_0x49467b=ut[_0xf8da('0xc1')](_0x5239b7,0xf,_0xf8da('0xa1'));rpcDb[_0xf8da('0x8c')](_0x49467b,_0xf8da('0xec'));}else{rpcDb[_0xf8da('0x8c')](_0x5239b7,_0xf8da('0xec'));}delete this['actions'][_0x1c3558[_0xf8da('0xa7')]];}else{_0x47a56e[_0xf8da('0xaa')](_0x5239b7,_0x4d0cfe,_0x3df92b)[_0xf8da('0x7b')](function(){});}});}if(!(_0x5239b7[_0xf8da('0x6c')]&&_0x363b66==='16')){ut[_0xf8da('0x72')](_0x35598a,_0xf8da('0xed'));logger['info']('[originated][decrement][callProgressDetectingCustomer]',_0x5239b7[_0xf8da('0xad')],_0xf8da('0xae'),_0x35598a[_0xf8da('0x4b')],_0xf8da('0x69'),_0x35598a[_0xf8da('0x56')]);}if(_0x363b66!==_0xf8da('0xee')){delete this[_0xf8da('0x6a')][_0x1c3558[_0xf8da('0xa7')]];delete this[_0xf8da('0x6a')][_0x1c3558[_0xf8da('0xef')]];}}};Preview[_0xf8da('0xc')][_0xf8da('0xf0')]=function(_0x2c7796,_0x5eb554,_0x329547){if(_[_0xf8da('0xf1')](_0x5eb554)&&'object'!==typeof _0x5eb554){return;}if(_[_0xf8da('0xf1')](_0x329547)&&'object'!==typeof _0x329547){return;}switch(_0x329547['reason']){case'0':ut[_0xf8da('0xf2')](_0x2c7796,0x0,'NoSuchNumber');rpcDb[_0xf8da('0xf3')](_0x2c7796,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0xf8da('0xf2')](_0x2c7796,0x3,_0xf8da('0xc9'));rpcDb['createAgentHistory'](_0x2c7796,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xf8da('0xf2')](_0x2c7796,0x5,_0xf8da('0xbc'));rpcDb[_0xf8da('0xf3')](_0x2c7796,_0xf8da('0xf4'));break;case'8':ut[_0xf8da('0xf2')](_0x2c7796,0x8,'Congestion');rpcDb[_0xf8da('0xf3')](_0x2c7796,_0xf8da('0xf5'));break;case'22':ut['logAgent'](_0x2c7796,0x16,_0xf8da('0xf6'));rpcDb[_0xf8da('0xf3')](_0x2c7796,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut['logAgent'](_0x2c7796,0xc,_0x329547[_0xf8da('0xf7')]);rpcDb[_0xf8da('0xf3')](_0x2c7796,_0xf8da('0xf5'));}ut[_0xf8da('0x72')](_0x5eb554,'[callProgressDetectingAgent]');logger[_0xf8da('0x52')](_0xf8da('0xf8'),_0x2c7796['uniqueid'],_0xf8da('0xae'),_0x5eb554[_0xf8da('0x4b')],_0xf8da('0x69'),_0x5eb554[_0xf8da('0x56')]);delete this['actions'][_0x2c7796[_0xf8da('0xad')]];};Preview[_0xf8da('0xc')][_0xf8da('0x9e')]=function(_0xf10f07,_0x42bcf9,_0x1f8a94){return Promise['resolve']()[_0xf8da('0x7b')](cmHopperAdditionalPhone[_0xf8da('0x9e')](_0xf10f07,_0x42bcf9,_0x1f8a94))['catch'](logger['info'](_0xf8da('0xf9')));};Preview[_0xf8da('0xc')][_0xf8da('0xaa')]=function(_0x275b1c,_0x57d921,_0x3dade4){return Promise[_0xf8da('0xfa')]()['then'](cmHopperAdditionalPhone[_0xf8da('0xaa')](_0x275b1c,_0x57d921,_0x3dade4))[_0xf8da('0x70')](logger[_0xf8da('0x52')]('[swapAdditionalPhone]\x20'));};Preview[_0xf8da('0xc')]['incrementPreviewCounters']=function(_0x5264b7){return Promise[_0xf8da('0xfa')]()['then'](cmHopperAdditionalPhone[_0xf8da('0xa9')](_0x5264b7))[_0xf8da('0x70')](logger[_0xf8da('0x52')](_0xf8da('0xfb')));};Preview[_0xf8da('0xc')][_0xf8da('0xfc')]=function(_0x544379,_0x33c9c5,_0x20404a,_0x2e0e05,_0x39d377){var _0x4415bc=this;return new Promise(function(_0x431f87,_0x15bd91){if(_[_0xf8da('0xfd')](_0x33c9c5)||_[_0xf8da('0xfd')](_0x33c9c5['Contact'])||_[_0xf8da('0xfd')](_0x33c9c5[_0xf8da('0xfe')])||_[_0xf8da('0xfd')](_0x33c9c5[_0xf8da('0x6d')])){_0x15bd91(ut['message'](_0xf8da('0xff'),_0x2e0e05,_0x39d377));return;}var _0x36025f=uuid['v4']();var _0x42382d=_0x4415bc['campaignsPreview'][_0x33c9c5['Queue'][_0xf8da('0x4b')]];var _0x9dd3e7=_0x20404a?_0x4415bc[_0xf8da('0x13')][_0x20404a]['id']:undefined;_0x4415bc[_0xf8da('0x6a')][_0x36025f]=new Action(_0x33c9c5,_0x42382d,_0x36025f,_0x20404a,_0x9dd3e7);var _0x530500=_0x4415bc['actions'][_0x36025f];_0x530500['unlockAgent']=_0x2e0e05;_0x530500['activeContact']=_0x39d377;_0x530500[_0xf8da('0x100')]=_0x20404a;if(_[_0xf8da('0x101')](_0x544379)){_0x4415bc[_0xf8da('0x102')](_0x530500,_0x42382d,_0x33c9c5,_0x20404a)[_0xf8da('0x7b')](function(_0x2faf12){logger['info'](_0xf8da('0x103'),'Queue:\x20'+_0x530500[_0xf8da('0x68')]+_0xf8da('0x104')+_0x530500[_0xf8da('0xa8')],JSON['stringify'](_0x2faf12));ami[_0xf8da('0x23')](_0xf8da('0x105'),ut[_0xf8da('0xaf')](_0x530500,_0xf8da('0x106'),_0x4415bc[_0xf8da('0x10')][_0x530500['queue']]));_0x431f87(ut['message'](_0xf8da('0x107')));})['catch'](function(_0x600861){ut[_0xf8da('0x5a')](_0xf8da('0x108'),_0x600861);_0x15bd91(ut[_0xf8da('0x59')]('Call\x20failed',_0x2e0e05,_0x39d377));});}else{_0x42382d[_0xf8da('0x35')]+=0x1;ut['logBlacklist'](_0x530500);rpcDb[_0xf8da('0x109')](_0x530500,_0xf8da('0x10a'));delete _0x4415bc[_0xf8da('0x6a')][_0x36025f];_0x15bd91(ut[_0xf8da('0x59')](_0xf8da('0x10b'),_0x2e0e05,_0x39d377));}});};Preview['prototype'][_0xf8da('0x93')]=function(_0x26f149){return!_[_0xf8da('0xfd')](_0x26f149)&&!_[_0xf8da('0xfd')](_0x26f149[_0xf8da('0x4b')])&&!_[_0xf8da('0xfd')](_0x26f149[_0xf8da('0x4c')])&&_0x26f149['active']&&!_[_0xf8da('0xfd')](this[_0xf8da('0x12')][util[_0xf8da('0x54')](_0xf8da('0x10c'),_0x26f149[_0xf8da('0x4b')])])&&!_[_0xf8da('0xfd')](this[_0xf8da('0x12')][util[_0xf8da('0x54')](_0xf8da('0x10c'),_0x26f149[_0xf8da('0x4b')])]['status'])&&(this[_0xf8da('0x12')][util['format']('SIP/%s',_0x26f149[_0xf8da('0x4b')])][_0xf8da('0x10d')]===_0xf8da('0x10e')||this['trunks'][util['format'](_0xf8da('0x10c'),_0x26f149[_0xf8da('0x4b')])]['status']==='unmonitored');};Preview[_0xf8da('0xc')]['run']=function(_0x35f5ed,_0x335a6c){return this[_0xf8da('0x10f')](_0x35f5ed,_0x335a6c)[_0xf8da('0x7b')](function(_0x14c3cd){return _[_0xf8da('0x110')](_0x14c3cd,['message']);})[_0xf8da('0x70')](function(_0x383594){if(_0x383594[_0xf8da('0x111')]){rpcDb[_0xf8da('0x112')](_0x35f5ed);}if(_0x383594[_0xf8da('0x4c')]){rpcDb[_0xf8da('0x82')](_0x35f5ed);}throw _[_0xf8da('0x110')](_0x383594,[_0xf8da('0x59')]);});};Preview[_0xf8da('0xc')][_0xf8da('0x10f')]=function(_0x4c370c,_0x3ca50f){var _0x12bd8a=this;var _0x18de0c,_0x3e3bd0;return rpcDb[_0xf8da('0x113')](_0x4c370c)['then'](function(_0x70a88b){if(!_['isNil'](_0x70a88b[0x0])){_0x3e3bd0=_0x70a88b[0x0]['recallme']?![]:!![];_0x18de0c=_0x70a88b[0x0][_0xf8da('0x114')]?!![]:![];_0x18de0c=_0x3ca50f?!![]:_0x18de0c;}var _0x5c3862=_0x12bd8a['validateContact'](_0x70a88b);if(_0x5c3862['isValid']){rpcDb[_0xf8da('0x115')](_[_0xf8da('0x110')](_0x70a88b[0x0],[_0xf8da('0x6d'),'phone']))['then'](function(_0x32c0df){_0x12bd8a[_0xf8da('0xfc')](_0x32c0df,_0x70a88b[0x0],_0x3ca50f,_0x3e3bd0,_0x18de0c)[_0xf8da('0x7b')](function(_0x215672){return _0x215672;})['catch'](function(_0x2422e6){throw _0x2422e6;});})[_0xf8da('0x70')](function(_0x1b8d23){ut[_0xf8da('0x5a')](_0xf8da('0x116'),_0x1b8d23);throw ut[_0xf8da('0x59')](_0xf8da('0x117'),_0x3e3bd0,_0x18de0c);});}else{throw ut[_0xf8da('0x59')](_0x5c3862[_0xf8da('0x59')],_0x3e3bd0,_0x18de0c);}})[_0xf8da('0x70')](function(_0x339e7f){ut[_0xf8da('0x5a')]('[Preview][getContactPreview]',_0x339e7f);throw ut['message'](_0xf8da('0x117'),![],!![]);});};Preview[_0xf8da('0xc')][_0xf8da('0x118')]=function(_0x437901){if(_[_0xf8da('0xfd')](_0x437901)||_[_0xf8da('0x101')](_0x437901)||!_[_0xf8da('0xfd')](_0x437901[0x0]['Agent'])&&_[_0xf8da('0xfd')](_0x437901[0x0][_0xf8da('0x7e')][_0xf8da('0x4b')])){ut[_0xf8da('0x5a')](_0xf8da('0x119'),_0x437901);return{'isValid':![],'message':_0xf8da('0x11a')};}var _0x300226=this['campaignsPreview'][_0x437901[0x0]['Queue']['name']];_0x300226[_0xf8da('0x59')]=_0xf8da('0x96');if(_[_0xf8da('0xfd')](_0x300226)){ut['logger'](_0xf8da('0x11b'),_0x300226);return{'isValid':![],'message':_0xf8da('0x11c')};}if(!this[_0xf8da('0x93')](_0x300226['Trunk'])){ut['logger'](_0xf8da('0x11d'),_0xf8da('0x11e')+_0x300226[_0xf8da('0x4b')]+_0xf8da('0x11f'));if(!this[_0xf8da('0x93')](_0x300226[_0xf8da('0x94')])){ut[_0xf8da('0x5a')](_0xf8da('0x11d'),_0x300226[_0xf8da('0x4b')]+_0xf8da('0x120'));return{'isValid':![],'message':_0xf8da('0x121')};}}if(!ut[_0xf8da('0x91')](_0x300226['dialActive'])){ut[_0xf8da('0x5a')]('[Preview][validateContact][Campaign\x20Active]',_0x300226[_0xf8da('0x4b')]+_0xf8da('0x122'));return{'isValid':![],'message':_0xf8da('0x11e')+_0x300226[_0xf8da('0x4b')]+_0xf8da('0x122')};}return{'isValid':!![],'message':_0xf8da('0x123')};};Preview[_0xf8da('0xc')][_0xf8da('0x102')]=function(_0x270c73,_0x4e5a21,_0x62c029,_0x2c4155){var _0x7e83ce=this;return new Promise(function(_0x158602,_0x4a5058){var _0x1faaa2=_0x270c73[_0xf8da('0xad')];var _0x42dc30=_0x7e83ce[_0xf8da('0x93')](_0x4e5a21[_0xf8da('0x4a')])?util[_0xf8da('0x54')](_0xf8da('0x124'),_0x4e5a21[_0xf8da('0x4a')][_0xf8da('0x4b')],_[_0xf8da('0xfd')](_0x4e5a21[_0xf8da('0x32')])?'':_0x4e5a21[_0xf8da('0x32')][_0xf8da('0x125')]()||'',_0x4e5a21['dialCutDigit']>0x0?_0x62c029[_0xf8da('0xfe')][_0xf8da('0x126')](_0x4e5a21[_0xf8da('0x127')]):_0x62c029[_0xf8da('0xfe')]):util['format']('SIP/%s/%s%s',_[_0xf8da('0xfd')](_0x4e5a21['TrunkBackup'])?_0x4e5a21[_0xf8da('0x4a')][_0xf8da('0x4b')]:_0x4e5a21[_0xf8da('0x94')][_0xf8da('0x4b')],_['isNil'](_0x4e5a21[_0xf8da('0x32')])?'':_0x4e5a21['dialPrefix'][_0xf8da('0x125')]()||'',_0x4e5a21[_0xf8da('0x127')]>0x0?_0x62c029['phone'][_0xf8da('0x126')](_0x4e5a21[_0xf8da('0x127')]):_0x62c029[_0xf8da('0xfe')]);var _0x2da77a=_0x7e83ce[_0xf8da('0x93')](_0x4e5a21['Trunk'])?ut[_0xf8da('0x128')](_0x4e5a21['Trunk']['callerid'],_0x4e5a21[_0xf8da('0x30')],_0x4e5a21['dialRandomLastDigitCallerIdNumber']>0x0?ut['getCallerIdRandom'](_0x4e5a21[_0xf8da('0x129')],_0x4e5a21[_0xf8da('0x12a')]):_0x4e5a21[_0xf8da('0x129')]):ut['getCallerId'](_[_0xf8da('0xfd')](_0x4e5a21['TrunkBackup'])?_0x4e5a21[_0xf8da('0x4a')][_0xf8da('0x4d')]:_0x4e5a21[_0xf8da('0x94')][_0xf8da('0x4d')],_0x4e5a21[_0xf8da('0x30')],_0x4e5a21[_0xf8da('0x12a')]>0x0?ut[_0xf8da('0x12b')](_0x4e5a21[_0xf8da('0x129')],_0x4e5a21[_0xf8da('0x12a')]):_0x4e5a21['dialOriginateCallerIdNumber']);if(_0x2da77a){_0x270c73['originatecalleridname']=ut[_0xf8da('0x12c')](_0x2da77a);_0x270c73['originatecalleridnum']=ut['extractCalleridNumber'](_0x2da77a);}var _0x3a9cbc=ut['addVariables'](_0x4e5a21,_0x62c029,_0x42dc30,_0x2da77a,_0x1faaa2,_0x270c73);_[_0xf8da('0x12d')](_0x270c73,ut[_0xf8da('0x12e')](_0x3a9cbc));_0x270c73[_0xf8da('0x83')]=moment()[_0xf8da('0x54')](_0xf8da('0x84'));_0x4e5a21[_0xf8da('0x12f')]=_0x3a9cbc;ami[_0xf8da('0x130')](ut[_0xf8da('0x131')](_0x270c73,_0x4e5a21,_0x3a9cbc,_0x270c73[_0xf8da('0xc5')],_0x2c4155))[_0xf8da('0x7b')](function(_0x4be59f){_0x4e5a21[_0xf8da('0x56')]+=0x1;logger[_0xf8da('0x52')]('[originated][increment]',_0x1faaa2,_0xf8da('0xae'),_0x4e5a21['name'],'originated:\x20',_0x4e5a21[_0xf8da('0x56')]);_0x158602(_0x4be59f);})[_0xf8da('0x70')](function(_0x38b8a3){ut[_0xf8da('0xf2')](_0x270c73,0xe,_0xf8da('0x132'));rpcDb['createAgentHistory'](_0x270c73,'[originateFailure][logOriginateFailure]');_0x4a5058(_0x38b8a3);});});};Preview[_0xf8da('0xc')][_0xf8da('0x1d')]=function(_0x1809ac){if(this[_0xf8da('0x6a')][_0x1809ac[_0xf8da('0xa7')]]){this['actions'][_0x1809ac[_0xf8da('0xa7')]][_0xf8da('0x6f')]=_0x1809ac[_0xf8da('0x6f')];}};Preview[_0xf8da('0xc')][_0xf8da('0x16')]=function(_0x875f25){var _0x105a5c=this;var _0x278601=this[_0xf8da('0x6a')][_0x875f25[_0xf8da('0x133')]];if(_0x278601){if(_0x278601['lookAgent']&&this['agents'][_0x278601[_0xf8da('0x100')]]){ut['logLookAgent'](_0x278601,this['agents'][_0x278601[_0xf8da('0x100')]][_0xf8da('0x4b')],this[_0xf8da('0x13')][_0x278601[_0xf8da('0x100')]]['id']);}var _0x1d9781=_['clone'](_0x278601);_0x1d9781[_0xf8da('0xab')]=moment()[_0xf8da('0x54')]('YYYY-MM-DD\x20HH:mm:ss');var _0x35af11=_0x105a5c[_0xf8da('0x10')][_0x278601[_0xf8da('0x68')]];if(ut[_0xf8da('0x134')](_0x875f25[_0xf8da('0x135')])){if(_0x278601[_0xf8da('0xa6')]){rpcDb['unlockContact'](_0x278601[_0xf8da('0xa8')]);}if(_0x278601[_0xf8da('0xc5')]){rpcDb[_0xf8da('0x82')](_0x278601[_0xf8da('0xa8')]);}ami[_0xf8da('0x23')](_0xf8da('0x136'),ut['buildObj'](_0x278601,'rejected',this[_0xf8da('0x10')][_0x278601['queue']]));this['callProgressDetectingAgent'](_0x1d9781,_0x35af11,_0x875f25);}else{_0x278601[_0xf8da('0x83')]=moment()[_0xf8da('0x54')](_0xf8da('0x84'));ut['logAgent'](_0x1d9781,0x4,_0xf8da('0xb5'));rpcDb[_0xf8da('0xf3')](_0x1d9781,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xf8da('0xc')]['syncHangup']=function(_0x492f3e){var _0x2f9fbe=this[_0xf8da('0x6a')][_0x492f3e[_0xf8da('0xa7')]];var _0x1a0c72;if(_0x2f9fbe){_0x1a0c72=this[_0xf8da('0x10')][_0x2f9fbe[_0xf8da('0x68')]];logger[_0xf8da('0x52')](_0xf8da('0x137'),_0x492f3e['linkedid'],_0xf8da('0xae'),_0x1a0c72['name'],'pTalking:\x20',_0x1a0c72[_0xf8da('0x57')]);}if(this[_0xf8da('0x6a')][_0x492f3e['linkedid']]&&_0x492f3e['linkedid']!==_0x492f3e[_0xf8da('0xad')]){if(_0x492f3e[_0xf8da('0x138')]==='16'&&this[_0xf8da('0x6a')][_0x492f3e[_0xf8da('0xa7')]][_0xf8da('0x6c')]){this[_0xf8da('0x139')](_0x492f3e,_0x492f3e[_0xf8da('0xa7')],_0x492f3e[_0xf8da('0x138')]);}else if(this[_0xf8da('0x6a')][_0x492f3e[_0xf8da('0xa7')]][_0xf8da('0x6c')]){logger[_0xf8da('0x52')](_0xf8da('0x13a'),_0x492f3e[_0xf8da('0xa7')],_0x492f3e['cause'],'\x20Queue',_0x1a0c72[_0xf8da('0x4b')],_0xf8da('0x6b'),_0x1a0c72[_0xf8da('0x57')]);this[_0xf8da('0x139')](_0x492f3e,_0x492f3e[_0xf8da('0xa7')],_0x492f3e[_0xf8da('0x138')]);}}else if(_0x2f9fbe&&_[_0xf8da('0xfd')](_0x2f9fbe[_0xf8da('0x13b')])&&_0x1a0c72['dialQueueProject']&&_0x492f3e[_0xf8da('0xa7')]===_0x492f3e[_0xf8da('0xad')]&&_['isNil'](_0x492f3e[_0xf8da('0xf7')])&&_0x492f3e[_0xf8da('0x138')]==='16'&&_0x492f3e[_0xf8da('0x13c')]==='6'&&_[_0xf8da('0xf1')](_0x2f9fbe['transfer'])){if(_0x2f9fbe[_0xf8da('0xa6')]){rpcDb['unlockContact'](_0x2f9fbe[_0xf8da('0xa8')]);}if(_0x2f9fbe[_0xf8da('0xc5')]){rpcDb[_0xf8da('0x82')](_0x2f9fbe[_0xf8da('0xa8')]);}_0x492f3e[_0xf8da('0xf7')]='22';this[_0xf8da('0xf0')](_0x2f9fbe,_0x1a0c72,_0x492f3e);}else if(_0x2f9fbe&&_0x2f9fbe[_0xf8da('0x13d')]){if(_0x492f3e['cause']==='16'&&this['actions'][_0x492f3e[_0xf8da('0xa7')]]['dialAnswer']){logger['info'](_0xf8da('0x13e'),_0x492f3e[_0xf8da('0xa7')],_0x492f3e['cause'],_0xf8da('0xae'),_0x1a0c72['name'],'pTalking:\x20',_0x1a0c72[_0xf8da('0x57')]);this[_0xf8da('0x139')](_0x492f3e,_0x492f3e[_0xf8da('0xa7')],_0x492f3e[_0xf8da('0x138')]);}else if(this['actions'][_0x492f3e[_0xf8da('0xa7')]][_0xf8da('0x6c')]){logger['info'](_0xf8da('0x13a'),_0x492f3e[_0xf8da('0xa7')],_0x492f3e[_0xf8da('0x138')],_0xf8da('0xae'),_0x1a0c72[_0xf8da('0x4b')],_0xf8da('0x6b'),_0x1a0c72['pTalking']);this[_0xf8da('0x139')](_0x492f3e,_0x492f3e[_0xf8da('0xa7')],_0x492f3e['cause']);}}};Preview['prototype'][_0xf8da('0x1c')]=function(_0x1a2af4){if(this[_0xf8da('0x6a')][_0x1a2af4['destlinkedid']]&&_0x1a2af4[_0xf8da('0xef')]!==_0x1a2af4[_0xf8da('0x13f')]){this[_0xf8da('0x139')](_0x1a2af4,_0x1a2af4[_0xf8da('0xef')],_0x1a2af4['dialstatus']);}};Preview[_0xf8da('0xc')][_0xf8da('0x1a')]=function(_0x2a1c0c){if(this[_0xf8da('0x6a')][_0x2a1c0c[_0xf8da('0xa7')]]&&_0x2a1c0c[_0xf8da('0xa7')]!==_0x2a1c0c['uniqueid']&&!this['actions'][_0x2a1c0c[_0xf8da('0xa7')]][_0xf8da('0x6c')]){if(_0x2a1c0c[_0xf8da('0x138')]==='1'){this[_0xf8da('0x139')](_0x2a1c0c,_0x2a1c0c[_0xf8da('0xa7')],_0x2a1c0c['cause']);}}};Preview[_0xf8da('0xc')]['addVariable']=function(_0x454f66,_0x552f31,_0x565e00){if(this[_0xf8da('0x6a')][_0x454f66]){if(_['isNil'](this['actions'][_0x454f66][_0xf8da('0x12f')])){this[_0xf8da('0x6a')][_0x454f66][_0xf8da('0x12f')]={};}this[_0xf8da('0x6a')][_0x454f66][_0xf8da('0x12f')][_0x552f31]=_0x565e00;}};Preview[_0xf8da('0xc')]['syncVarSet']=function(_0x9712d2){try{if(!_[_0xf8da('0xfd')](_0x9712d2)){if(ut[_0xf8da('0x140')](_['keys'](_0x9712d2['variable'])[0x0])){this[_0xf8da('0x141')](_0x9712d2['uniqueid'],_[_0xf8da('0x142')](_0x9712d2['variable'])[0x0],_0x9712d2['value']);}}}catch(_0x7db38c){logger[_0xf8da('0x143')](_0xf8da('0x144'),util['inspect'](_0x7db38c,{'showHidden':![],'depth':null}));}};Preview['prototype']['syncAttendedTransfer']=function(_0x26337d){if(_0x26337d){if(this[_0xf8da('0x6a')][_0x26337d['transfertargetlinkedid']]){this['actions'][_0x26337d[_0xf8da('0x145')]][_0xf8da('0x13d')]=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0x18fee7){if(_0x18fee7){if(this[_0xf8da('0x6a')][_0x18fee7[_0xf8da('0x146')]]){this[_0xf8da('0x6a')][_0x18fee7[_0xf8da('0x146')]][_0xf8da('0x13d')]=!![];}}};module[_0xf8da('0x147')]=Preview;
\ No newline at end of file
index 15ddddf..7a39781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb5=['type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','endtime','membername','context','exten','holdtime','queuecallerexitreason','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','bluebird','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','resolve','then','createHistory','[createHistory]\x20','catch','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20'];(function(_0x428296,_0x2598f7){var _0x4972fb=function(_0x556d2a){while(--_0x556d2a){_0x428296['push'](_0x428296['shift']());}};_0x4972fb(++_0x2598f7);}(_0x6cb5,0xdc));var _0x56cb=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x6cb5[_0x2dea24];return _0x309d58;};'use strict';var util=require('util');var BPromise=require(_0x56cb('0x0'));var logger=require('../../../config/logger')(_0x56cb('0x1'));var _=require(_0x56cb('0x2'));var cmHopper=require(_0x56cb('0x3'));var cmHopperFinal=require(_0x56cb('0x4'));var cmHopperHistory=require(_0x56cb('0x5'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x56cb('0x6'));var agentReportPreview=require(_0x56cb('0x7'));var voiceQueueReport=require(_0x56cb('0x8'));function loggerCatch(_0x496120){return function(_0xd07eea){logger['error'](_0x496120,util[_0x56cb('0x9')](_0xd07eea,{'showHidden':![],'depth':null}));};}function create(_0x4f46b5){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopperHistory[_0x56cb('0xc')](_0x4f46b5))['catch'](loggerCatch(_0x56cb('0xd')));}function createAgent(_0x248fe4){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](agentReportPreview['createHistory'](_0x248fe4))[_0x56cb('0xe')](loggerCatch(_0x56cb('0xd')));}function moveContact(_0x398038){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['moveContactManagedDialer'](_0x398038,!![]))[_0x56cb('0xe')](loggerCatch(_0x56cb('0xf')));}exports[_0x56cb('0x10')]=function(_0x543194){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopperBlack[_0x56cb('0x10')](_0x543194))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x11')));};exports[_0x56cb('0x12')]=function(_0xf64a43){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['getContactPreview'](_0xf64a43))[_0x56cb('0xe')](loggerCatch('[getContactPreview]\x20'));};exports['createHistory']=function(_0xa76acf,_0x1b6458){create(_0xa76acf)[_0x56cb('0xe')](loggerCatch(_0x1b6458));moveContact(_0xa76acf)[_0x56cb('0xe')](loggerCatch(_0x1b6458));};exports[_0x56cb('0x13')]=function(_0x451699,_0x3f7742){createAgent(_0x451699)[_0x56cb('0xe')](loggerCatch(_0x3f7742));};exports['createCustomerHistory']=function(_0x42996c,_0x2dd6e5){create(_0x42996c)[_0x56cb('0xe')](loggerCatch(_0x2dd6e5));};exports[_0x56cb('0x14')]=function(_0x4ba676,_0x146cc4){moveContact(_0x4ba676)[_0x56cb('0xe')](loggerCatch(_0x146cc4));};exports[_0x56cb('0x15')]=function(_0x320a40,_0x2f6ccb,_0x348ba5){if(_0x2f6ccb){_0x320a40[_0x56cb('0x16')]=null;}if(_0x348ba5){_0x320a40[_0x56cb('0x17')]=![];}return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper[_0x56cb('0x15')](_0x320a40))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x18')));};exports[_0x56cb('0x19')]=function(_0x55d579){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['countReScheduled'](_0x55d579))[_0x56cb('0xe')](loggerCatch('[countReScheduled]\x20'));};exports[_0x56cb('0x1a')]=function(_0x3197bb){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper[_0x56cb('0x1a')]({'UserId':null},_0x3197bb,0x1))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x1b')));};exports[_0x56cb('0x1c')]=function(_0x42ab50){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['unlockContact']({'active':![]},_0x42ab50,0x1))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x1d')));};exports['crateCustomerReportQueue']=function(_0x55fabe){var _0x49d953={};_0x49d953[_0x56cb('0x1e')]=_0x55fabe[_0x56cb('0x1e')];_0x49d953[_0x56cb('0x1f')]=_0x55fabe[_0x56cb('0x1f')];_0x49d953[_0x56cb('0x20')]=_0x55fabe[_0x56cb('0x20')];_0x49d953[_0x56cb('0x21')]=_0x55fabe[_0x56cb('0x21')];_0x49d953[_0x56cb('0x22')]=_0x55fabe['queue'];_0x49d953[_0x56cb('0x23')]=_0x55fabe[_0x56cb('0x24')];_0x49d953[_0x56cb('0x25')]=_0x55fabe[_0x56cb('0x24')];_0x49d953['queuecallercomplete']=0x1;_0x49d953['queuecallercompleteAt']=_0x55fabe[_0x56cb('0x26')];_0x49d953['connectedlinename']=_0x55fabe[_0x56cb('0x27')];_0x49d953[_0x56cb('0x28')]='from-sip';_0x49d953[_0x56cb('0x29')]='xcally-motion-preview';_0x49d953[_0x56cb('0x2a')]=0x0;_0x49d953['assigned']=0x1;_0x49d953['lastAssignedTo']=_0x55fabe[_0x56cb('0x27')];_0x49d953[_0x56cb('0x2b')]=_0x56cb('0x2c');return BPromise['resolve']()[_0x56cb('0xb')](voiceQueueReport['create'](_0x49d953))['catch'](loggerCatch(_0x56cb('0x2d')));};exports[_0x56cb('0x2e')]=function(_0x4cc93d,_0x2b3205){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper[_0x56cb('0x2e')](_0x4cc93d,_0x2b3205))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x2f')));};exports[_0x56cb('0x30')]=function(_0x7377c9){return BPromise['resolve']()[_0x56cb('0xb')](cmHopper['rescheduleContact'](_0x7377c9,!![],!![]))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x31')));};
\ No newline at end of file
+var _0xa9af=['../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','resolve','createHistory','catch','[createHistory]\x20','then','moveContactManagedDialer','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercomplete','queuecallercompleteAt','connectedlinename','context','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory'];(function(_0xc16cd8,_0x5c93af){var _0x517d1d=function(_0x2fc214){while(--_0x2fc214){_0xc16cd8['push'](_0xc16cd8['shift']());}};_0x517d1d(++_0x5c93af);}(_0xa9af,0x1c0));var _0xfa9a=function(_0x4d2111,_0x24c83d){_0x4d2111=_0x4d2111-0x0;var _0x5f00a0=_0xa9af[_0x4d2111];return _0x5f00a0;};'use strict';var util=require(_0xfa9a('0x0'));var BPromise=require(_0xfa9a('0x1'));var logger=require(_0xfa9a('0x2'))(_0xfa9a('0x3'));var _=require(_0xfa9a('0x4'));var cmHopper=require(_0xfa9a('0x5'));var cmHopperFinal=require(_0xfa9a('0x6'));var cmHopperHistory=require(_0xfa9a('0x7'));var cmHopperBlack=require(_0xfa9a('0x8'));var voiceQueueRt=require(_0xfa9a('0x9'));var agentReportPreview=require(_0xfa9a('0xa'));var voiceQueueReport=require(_0xfa9a('0xb'));function loggerCatch(_0x5edff6){return function(_0x425c8d){logger['error'](_0x5edff6,util['inspect'](_0x425c8d,{'showHidden':![],'depth':null}));};}function create(_0x55b2c2){return BPromise[_0xfa9a('0xc')]()['then'](cmHopperHistory[_0xfa9a('0xd')](_0x55b2c2))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0xf')));}function createAgent(_0x22eae7){return BPromise[_0xfa9a('0xc')]()[_0xfa9a('0x10')](agentReportPreview[_0xfa9a('0xd')](_0x22eae7))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0xf')));}function moveContact(_0x1cb4ea){return BPromise['resolve']()[_0xfa9a('0x10')](cmHopper[_0xfa9a('0x11')](_0x1cb4ea,!![]))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0xfa9a('0x12')]=function(_0x3213e7){return BPromise[_0xfa9a('0xc')]()[_0xfa9a('0x10')](cmHopperBlack[_0xfa9a('0x12')](_0x3213e7))[_0xfa9a('0xe')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0xfa9a('0x13')]=function(_0x16f9b3){return BPromise[_0xfa9a('0xc')]()['then'](cmHopper[_0xfa9a('0x13')](_0x16f9b3))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0x14')));};exports[_0xfa9a('0xd')]=function(_0x41525d,_0x3db8f7){create(_0x41525d)[_0xfa9a('0xe')](loggerCatch(_0x3db8f7));moveContact(_0x41525d)['catch'](loggerCatch(_0x3db8f7));};exports[_0xfa9a('0x15')]=function(_0x1cd1c4,_0x327aba){createAgent(_0x1cd1c4)['catch'](loggerCatch(_0x327aba));};exports['createCustomerHistory']=function(_0x355977,_0x430866){create(_0x355977)['catch'](loggerCatch(_0x430866));};exports[_0xfa9a('0x16')]=function(_0x5114c0,_0x5b5cd9){moveContact(_0x5114c0)[_0xfa9a('0xe')](loggerCatch(_0x5b5cd9));};exports[_0xfa9a('0x17')]=function(_0x23b05f,_0x59da1a,_0x5e95ee){if(_0x59da1a){_0x23b05f[_0xfa9a('0x18')]=null;}if(_0x5e95ee){_0x23b05f[_0xfa9a('0x19')]=![];}return BPromise[_0xfa9a('0xc')]()[_0xfa9a('0x10')](cmHopper[_0xfa9a('0x17')](_0x23b05f))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0x1a')));};exports[_0xfa9a('0x1b')]=function(_0x10c923){return BPromise['resolve']()[_0xfa9a('0x10')](cmHopper[_0xfa9a('0x1b')](_0x10c923))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0x1c')));};exports[_0xfa9a('0x1d')]=function(_0x52af38){return BPromise['resolve']()[_0xfa9a('0x10')](cmHopper[_0xfa9a('0x1d')]({'UserId':null},_0x52af38,0x1))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0x1e')));};exports['disableContact']=function(_0x3a9c3c){return BPromise[_0xfa9a('0xc')]()['then'](cmHopper[_0xfa9a('0x1d')]({'active':![]},_0x3a9c3c,0x1))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0x1f')));};exports[_0xfa9a('0x20')]=function(_0x4728a0){var _0x203927={};_0x203927['type']=_0x4728a0[_0xfa9a('0x21')];_0x203927['uniqueid']=_0x4728a0[_0xfa9a('0x22')];_0x203927[_0xfa9a('0x23')]=_0x4728a0['calleridnum'];_0x203927[_0xfa9a('0x24')]=_0x4728a0[_0xfa9a('0x24')];_0x203927[_0xfa9a('0x25')]=_0x4728a0[_0xfa9a('0x25')];_0x203927[_0xfa9a('0x26')]=_0x4728a0['answertime'];_0x203927[_0xfa9a('0x27')]=_0x4728a0[_0xfa9a('0x28')];_0x203927[_0xfa9a('0x29')]=0x1;_0x203927[_0xfa9a('0x2a')]=_0x4728a0['endtime'];_0x203927[_0xfa9a('0x2b')]=_0x4728a0['membername'];_0x203927[_0xfa9a('0x2c')]='from-sip';_0x203927['exten']=_0xfa9a('0x2d');_0x203927[_0xfa9a('0x2e')]=0x0;_0x203927[_0xfa9a('0x2f')]=0x1;_0x203927[_0xfa9a('0x30')]=_0x4728a0['membername'];_0x203927[_0xfa9a('0x31')]=_0xfa9a('0x32');return BPromise[_0xfa9a('0xc')]()[_0xfa9a('0x10')](voiceQueueReport[_0xfa9a('0x33')](_0x203927))['catch'](loggerCatch(_0xfa9a('0x34')));};exports[_0xfa9a('0x35')]=function(_0x1c81be,_0x26ae35){return BPromise['resolve']()[_0xfa9a('0x10')](cmHopper['getContactRecallMe'](_0x1c81be,_0x26ae35))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0x36')));};exports[_0xfa9a('0x37')]=function(_0x212b0e){return BPromise[_0xfa9a('0xc')]()[_0xfa9a('0x10')](cmHopper[_0xfa9a('0x17')](_0x212b0e,!![],!![]))[_0xfa9a('0xe')](loggerCatch(_0xfa9a('0x38')));};
\ No newline at end of file
index a61cb9a..9b611bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe06a=['rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','rtpaudioqoslossbridged','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','random','extractCalleridName','match','noanswer','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload','util','lodash','../../../../config/logger','preview','env','127.0.0.1','milliseconds','seconds','info','inspect','logger2','message','getCallerId','isEmpty','isUndefined','string','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','calleridname','ContactId','dialOriginateTimeout','dialQueueProject2','U(xcally-mixmonitor-context)','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','monitor_format','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','originated','error','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','state','ringtime','logLookAgent','membername','UserId','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','calleridnum','from-sip','timeout','totalGlobal','countnoanswerretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','name','queue','interface','voice','mandatoryDisposition','buildObj','buildAcw','agentReadyId','status','reachable','push','getDiff','diff','createBody','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','countcongestionretry','countglobal','callback','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqos'];(function(_0x28ce93,_0x4e4af9){var _0x692cf3=function(_0x58bfc9){while(--_0x58bfc9){_0x28ce93['push'](_0x28ce93['shift']());}};_0x692cf3(++_0x4e4af9);}(_0xe06a,0x1df));var _0xae06=function(_0x582764,_0x232f39){_0x582764=_0x582764-0x0;var _0x58a6e3=_0xe06a[_0x582764];return _0x58a6e3;};'use strict';var util=require(_0xae06('0x0'));var _=require(_0xae06('0x1'));var moment=require('moment');var logger=require(_0xae06('0x2'))(_0xae06('0x3'));var ipAgi=process[_0xae06('0x4')]['XCALLY_IP_AGI']||_0xae06('0x5');function getSeconds(_0x4b84e8,_0x4150ed){var _0x3616ca=moment(_0x4b84e8)[_0xae06('0x6')](0x0);var _0x46dd9f=moment(_0x4150ed)[_0xae06('0x6')](0x0);return _0x3616ca['diff'](_0x46dd9f,_0xae06('0x7'));}exports['loggerCatch']=function(_0x13ed11){return function(_0x2ac057){logger['error'](_0x13ed11,util['inspect'](_0x2ac057,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x8ce61e,_0x29b10d){logger[_0xae06('0x8')](_0x8ce61e,util[_0xae06('0x9')](_0x29b10d,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x500240,_0x3d3c43){logger['error'](_0x500240,util[_0xae06('0x9')](_0x3d3c43,{'showHidden':![],'depth':null}));};exports[_0xae06('0xa')]=function(_0x13b628){return function(_0x1b3cde){logger['info'](_0x13b628,util['inspect'](_0x1b3cde,{'showHidden':![],'depth':null}));};};exports[_0xae06('0xb')]=function(_0x301473,_0x568280,_0x1d3825){return{'message':_0x301473,'unlock':_0x568280,'active':_0x1d3825};};exports[_0xae06('0xc')]=function(_0x40f8b0,_0x5ddb09,_0x39751b){if(!_['isUndefined'](_0x39751b)&&'string'===typeof _0x39751b&&!_[_0xae06('0xd')](_0x39751b)){if(!_[_0xae06('0xe')](_0x5ddb09)&&_0xae06('0xf')===typeof _0x5ddb09&&!_[_0xae06('0xd')](_0x5ddb09)){return util[_0xae06('0x10')](_0xae06('0x11'),_0x5ddb09,_0x39751b);}return util[_0xae06('0x10')](_0xae06('0x11'),_0x39751b,_0x39751b);}if(!_[_0xae06('0xe')](_0x40f8b0)&&_0xae06('0xf')===typeof _0x40f8b0&&!_[_0xae06('0xd')](_0x40f8b0)){return _0x40f8b0;}return _0xae06('0x12');};exports[_0xae06('0x13')]=function(_0x1d65b7){if(_['isNil'](_0x1d65b7)){return![];}return _0x1d65b7;};exports[_0xae06('0x14')]=function(_0x4afb86,_0x7155a2,_0x5dfb15,_0x350f46,_0x3debc1,_0x2af6e3){var _0x311906={'XMD-QUEUE':_0x7155a2[_0xae06('0x15')]?_0x7155a2[_0xae06('0x15')]['name']:'','XMD-CALLERID':_0x350f46,'XMD-CALLERID-PREVIEW':_0x2af6e3?util[_0xae06('0x10')](_0xae06('0x11'),_0x2af6e3[_0xae06('0x16')],_0x2af6e3['calleridnum']):_0x350f46,'XMD-DIALID':_0x3debc1,'XMD-CONTACTID':_0x7155a2[_0xae06('0x17')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x350f46,'XMD-VOICEQUEUEID':_0x7155a2['VoiceQueueId'],'XMD-DIALCHANNEL':_0x5dfb15,'XMD-DIALTIMEOUT':_0x4afb86[_0xae06('0x18')]||0x1e,'XMD-DIALOPTIONS':util[_0xae06('0x10')]('\x22rtTxX%s%s\x22',_0x4afb86[_0xae06('0x19')]?'g':'',_[_0xae06('0xd')](_0x4afb86['monitor_format'])?'':_0xae06('0x1a')),'XMD-DIALURL':_0x4afb86['dialPreviewUrl']||'','XMD-AGI':_0x4afb86[_0xae06('0x1b')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x4afb86[_0xae06('0x1b')]):_0xae06('0x1c'),'XMD-AGIAFTER':_0x4afb86[_0xae06('0x19')]?util['format'](_0xae06('0x1d'),ipAgi,_0x4afb86[_0xae06('0x19')]):_0xae06('0x1c'),'XMD-ORIGINATECALLERIDNUM':_0x2af6e3?_0x2af6e3[_0xae06('0x1e')]:'','XMD-ORIGINATECALLERIDNAME':_0x2af6e3?_0x2af6e3[_0xae06('0x1f')]:'','XMD-DESTINATION':_0xae06('0x20'),'SIPADDHEADER':_0xae06('0x21')};if(!_[_0xae06('0xd')](_0x4afb86['monitor_format'])){_0x311906[util[_0xae06('0x10')]('%s',_0xae06('0x22'))]=_0x4afb86[_0xae06('0x23')];_0x311906[util['format']('%s',_0xae06('0x24'))]=_0x3debc1;}if(_0x7155a2&&_0x7155a2[_0xae06('0x25')]){for(var _0xaf5f6a in _0x7155a2['Contact']){if(_0x7155a2[_0xae06('0x25')][_0xae06('0x26')](_0xaf5f6a)){if(!_[_0xae06('0x27')](_0x7155a2[_0xae06('0x25')][_0xaf5f6a])&&_0xaf5f6a!=='id'&&_0xaf5f6a!==_0xae06('0x28')&&_0xaf5f6a!=='createdAt'&&_0xaf5f6a!==_0xae06('0x29')){_0x311906[util[_0xae06('0x10')](_0xae06('0x2a'),_0xae06('0x2b'),_[_0xae06('0x2c')](_0xaf5f6a))]=_0x7155a2[_0xae06('0x25')][_0xaf5f6a];}}}}return _0x311906;};exports[_0xae06('0x2d')]=function(_0x3ced34){var _0x2d1987={};for(var _0x51f99e in _0x3ced34){if(_0x3ced34['hasOwnProperty'](_0x51f99e)){_0x2d1987[util[_0xae06('0x10')]('%s',_['toLower'](_0x51f99e))]=_0x3ced34[_0x51f99e];}}return{'variables':_0x2d1987};};exports['updateOriginated']=function(_0x5bb2f6,_0x5a9379){if(!_[_0xae06('0x27')](_0x5bb2f6)){if(_0x5bb2f6[_0xae06('0x26')]('originated')){if(_0x5bb2f6[_0xae06('0x2e')]>0x0){_0x5bb2f6[_0xae06('0x2e')]-=0x1;}else{logger[_0xae06('0x2f')](_0xae06('0x30'),_0x5a9379);}}}else{logger[_0xae06('0x2f')](_0xae06('0x31'),_0x5a9379);}};exports[_0xae06('0x32')]=function(_0x191b1d){var _0x241712=moment()['format'](_0xae06('0x33'));_0x191b1d['state']=0xd;_0x191b1d[_0xae06('0x34')]=_0xae06('0x35');_0x191b1d[_0xae06('0x36')]=_0x241712;_0x191b1d[_0xae06('0x37')]=_0x241712;_0x191b1d[_0xae06('0x38')]=_0x241712;};exports[_0xae06('0x39')]=function(_0x2487e3,_0xa23009,_0x507de4){var _0x592092=moment()[_0xae06('0x10')](_0xae06('0x33'));_0x2487e3[_0xae06('0x3a')]=_0xa23009;_0x2487e3[_0xae06('0x34')]=_0x507de4;_0x2487e3['responsetime']=_0x592092;_0x2487e3[_0xae06('0x3b')]=getSeconds(_0x2487e3[_0xae06('0x37')],_0x2487e3[_0xae06('0x36')]);};exports[_0xae06('0x3c')]=function(_0x533e7e,_0x555be5,_0x3b0488){_0x533e7e[_0xae06('0x3d')]=_0x555be5;_0x533e7e[_0xae06('0x3e')]=_0x3b0488;};exports['logCustomer']=function(_0x18282b,_0x1216a7,_0x42a4fa){var _0x5904af=moment()[_0xae06('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x18282b['state']=_0x1216a7;_0x18282b[_0xae06('0x34')]=_0x42a4fa;_0x18282b[_0xae06('0x37')]=_0x18282b[_0xae06('0x37')]?_0x18282b[_0xae06('0x37')]:_0x5904af;_0x18282b[_0xae06('0x38')]=_0x18282b[_0xae06('0x38')]?_0x18282b[_0xae06('0x38')]:_0x5904af;_0x18282b[_0xae06('0x3b')]=getSeconds(_0x18282b[_0xae06('0x37')]||0x0,_0x18282b[_0xae06('0x36')]||0x0);_0x18282b[_0xae06('0x3f')]=_0x18282b[_0xae06('0x40')]?getSeconds(_0x18282b['endtime'],_0x18282b[_0xae06('0x40')]):0x0;};exports[_0xae06('0x41')]=function(_0x17513d){return _0x17513d===_0xae06('0x42');};exports[_0xae06('0x43')]=function(_0x4f8652,_0x57e17a,_0x1b5cc3,_0x27194f,_0x132b04){var _0x3fcf8d=_0x27194f?_0xae06('0x44'):_0x4f8652[_0xae06('0x16')];_0x3fcf8d=_0x132b04?_0xae06('0x45'):_0x3fcf8d;return{'actionid':_0x4f8652[_0xae06('0x46')],'action':_0xae06('0x47'),'channel':_0x4f8652[_0xae06('0x48')],'callerid':util['format'](_0xae06('0x11'),_0x3fcf8d,_0x4f8652[_0xae06('0x49')]),'Exten':_0xae06('0x20'),'Context':_0xae06('0x4a'),'Priority':'1','variable':_0x1b5cc3,'timeout':(_0x57e17a[_0xae06('0x4b')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4f8652[_0xae06('0x46')]};};exports[_0xae06('0x4c')]=function(_0x3d072b){return _0x3d072b['countbusyretry']+_0x3d072b['countcongestionretry']+_0x3d072b[_0xae06('0x4d')]+_0x3d072b['countagentrejectretry']+_0x3d072b[_0xae06('0x4e')];};exports[_0xae06('0x4f')]=function(_0x9ecb36){var _0x1f41b2=_[_0xae06('0x50')](_0x9ecb36);_0x1f41b2[_0xae06('0x3a')]=0xf;_0x1f41b2[_0xae06('0x34')]=_0xae06('0x51');return _0x1f41b2;};exports[_0xae06('0x52')]=function(_0xa3aa87,_0x17ca48,_0x37a87d){var _0x272ac0={};_0x272ac0[_0x17ca48]=_0xa3aa87[_0x17ca48];_0x272ac0[_0xae06('0x53')]=![];_0x272ac0['scheduledat']=moment()[_0xae06('0x54')](_0x37a87d,_0xae06('0x55'))[_0xae06('0x10')](_0xae06('0x33'));_0x272ac0[_0xae06('0x17')]=_0xa3aa87['ContactId'];_0x272ac0['ListId']=_0xa3aa87[_0xae06('0x56')];_0x272ac0[_0xae06('0x57')]=_0xa3aa87['VoiceQueueId']||undefined;return _0x272ac0;};exports[_0xae06('0x58')]=function(_0x5782f2,_0x4d4079){if(!_[_0xae06('0x27')](_0x5782f2)){if(_0x5782f2[_0xae06('0x59')]>0x0){_0x5782f2[_0xae06('0x59')]-=0x1;}else{logger[_0xae06('0x2f')](_0x4d4079,_0xae06('0x5a'));}}else{logger['error'](_0x4d4079,_0xae06('0x5b'));}};exports[_0xae06('0x5c')]=function(_0x47d6e8){if(_0x47d6e8<=0x0){return!![];}return![];};function buildObj(_0x2cb8a0,_0x5d639f,_0xc31568){_0x2cb8a0[_0xae06('0x5d')]=_0x5d639f;_0x2cb8a0[_0xae06('0x5e')]=_0x2cb8a0[_0xae06('0x5f')];_0x2cb8a0[_0xae06('0x60')]=_0x2cb8a0[_0xae06('0x48')];_0x2cb8a0['motionChannel']=_0xae06('0x61');if(_0xc31568){_0x2cb8a0['mandatoryDisposition']=_0xc31568[_0xae06('0x62')];}return _0x2cb8a0;}exports[_0xae06('0x63')]=buildObj;exports[_0xae06('0x64')]=function(_0x36edda){var _0x1cf190={};_0x1cf190['queue']=_0x36edda[_0xae06('0x5f')];_0x1cf190[_0xae06('0x60')]=_0x36edda[_0xae06('0x48')];_0x1cf190[_0xae06('0x46')]=_0x36edda[_0xae06('0x46')];return _0x1cf190;};exports[_0xae06('0x65')]=function(_0x360873){var _0x3648da=[];for(var _0x34cf6a in _0x360873){if(_0x360873['hasOwnProperty'](_0x34cf6a)){if(!_['isNil'](_0x360873[_0x34cf6a])&&_0x360873[_0x34cf6a]['state']==='not_inuse'&&_0x360873[_0x34cf6a][_0xae06('0x66')]===_0xae06('0x67')){_0x3648da[_0xae06('0x68')](_0x360873[_0x34cf6a]['id']);}}}return _0x3648da;};exports[_0xae06('0x69')]=function(_0x4fad0c){var _0x2d0974=moment()[_0xae06('0x6')](0x0);var _0x48156f=moment(_0x4fad0c)[_0xae06('0x6')](0x0);return _0x2d0974[_0xae06('0x6a')](_0x48156f,_0xae06('0x7'));};exports[_0xae06('0x6b')]=function(_0x1db74d){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x1db74d['ContactId'],'ListId':_0x1db74d[_0xae06('0x56')],'VoiceQueueId':_0x1db74d[_0xae06('0x57')]||undefined,'CampaignId':_0x1db74d[_0xae06('0x6c')]||undefined};};exports[_0xae06('0x6d')]=function(_0x207320){if(_0x207320==='uniqueid'||_0x207320===_0xae06('0x6e')||_0x207320==='queue'||_0x207320===_0xae06('0x6f')||_0x207320===_0xae06('0x70')||_0x207320===_0xae06('0x71')||_0x207320===_0xae06('0x3d')||_0x207320===_0xae06('0x48')||_0x207320===_0xae06('0x16')||_0x207320===_0xae06('0x53')||_0x207320===_0xae06('0x49')||_0x207320==='scheduledat'||_0x207320==='countbusyretry'||_0x207320===_0xae06('0x72')||_0x207320==='countnoanswerretry'||_0x207320===_0xae06('0x73')||_0x207320===_0xae06('0x74')||_0x207320==='callbackuniqueid'||_0x207320===_0xae06('0x75')||_0x207320===_0xae06('0x76')||_0x207320===_0xae06('0x17')||_0x207320==='ListId'||_0x207320===_0xae06('0x3e')||_0x207320==='VoiceQueueId'||_0x207320===_0xae06('0x77')||_0x207320===_0xae06('0x78')||_0x207320===_0xae06('0x79')||_0x207320===_0xae06('0x7a')||_0x207320===_0xae06('0x7b')||_0x207320===_0xae06('0x7c')||_0x207320===_0xae06('0x7d')||_0x207320==='xmd-dialoptions'||_0x207320===_0xae06('0x7e')||_0x207320===_0xae06('0x7f')||_0x207320===_0xae06('0x80')||_0x207320===_0xae06('0x81')||_0x207320==='xmd-callerid'||_0x207320===_0xae06('0x82')||_0x207320===_0xae06('0x83')||_0x207320===_0xae06('0x84')||_0x207320==='rtpaudioqosbridged'||_0x207320===_0xae06('0x85')||_0x207320===_0xae06('0x86')||_0x207320===_0xae06('0x87')||_0x207320==='rtpaudioqoslossbridged'||_0x207320===_0xae06('0x88')||_0x207320===_0xae06('0x89')||_0x207320===_0xae06('0x84')||_0x207320===_0xae06('0x8a')||_0x207320===_0xae06('0x85')||_0x207320===_0xae06('0x86')||_0x207320==='rtpaudioqosloss'||_0x207320===_0xae06('0x8b')||_0x207320==='rtpaudioqosrtt'||_0x207320===_0xae06('0x89')||_0x207320===_0xae06('0x8c')||_0x207320==='bridgepvtcallid'||_0x207320===_0xae06('0x3a')||_0x207320===_0xae06('0x34')){return![];}return!![];};exports[_0xae06('0x8d')]=function(_0xbf2d50,_0x3db7a1){var _0x4f4a7f,_0x24b2eb,_0x452226;if(_0x3db7a1<=0x0){_0x3db7a1=0x1;}_0x4f4a7f=new RegExp(_0xae06('0x8e')+_0x3db7a1+'}$');_0x24b2eb=Math[_0xae06('0x8f')](0xa,_0x3db7a1-0x1);_0x452226=Math[_0xae06('0x8f')](0xa,_0x3db7a1)-0x1;return util[_0xae06('0x10')]('%s',_['replace'](_0xbf2d50,_0x4f4a7f,_[_0xae06('0x90')](_0x24b2eb,_0x452226)));};exports[_0xae06('0x91')]=function(_0x201fbd){var _0x4f727b=_0x201fbd[_0xae06('0x92')](/"(.*?)"/);return _0x4f727b?_0x4f727b[0x1]:_0x201fbd;};exports['extractCalleridNumber']=function(_0x5489d3){var _0x54fa0a=_0x5489d3[_0xae06('0x92')](/<(.*?)>/);return _0x54fa0a?_0x54fa0a[0x1]:_0x5489d3;};function buildNoAnswerEventPayload(_0x5562e7,_0x4cc5a4){var _0x31d911=buildObj(_0x5562e7,_0xae06('0x93'));if(!_[_0xae06('0xd')](_0x4cc5a4[_0xae06('0x94')])){Object[_0xae06('0x95')](_0x4cc5a4[_0xae06('0x94')])[_0xae06('0x96')](function(_0x183ac9){_0x31d911[_0x183ac9[_0xae06('0x97')]()]=_0x4cc5a4['variables'][_0x183ac9];});}return _0x31d911;}exports[_0xae06('0x98')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0x22af=['countbusyretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','add','minutes','ContactId','ListId','decrementTalkink','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','interface','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','seconds','createBody','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','countcongestionretry','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','\x5cw{0,','pow','replace','extractCalleridName','match','noanswer','keys','variables','toLowerCase','buildNoAnswerEventPayload','lodash','moment','../../../../config/logger','milliseconds','diff','loggerCatch','error','logger','inspect','loggerError','logger2','info','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','name','calleridname','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','logLookAgent','membername','logCustomer','ringtime','talktime','answertime','Failure','variablesAction','BOOKED','uniqueid','originate','channelAgent','calleridnum','xcally-motion-preview','timeout','totalGlobal'];(function(_0x4d3f88,_0x3ee5dd){var _0x47350c=function(_0x2fb09f){while(--_0x2fb09f){_0x4d3f88['push'](_0x4d3f88['shift']());}};_0x47350c(++_0x3ee5dd);}(_0x22af,0x16a));var _0xf22a=function(_0x1be790,_0x112549){_0x1be790=_0x1be790-0x0;var _0x7668c8=_0x22af[_0x1be790];return _0x7668c8;};'use strict';var util=require('util');var _=require(_0xf22a('0x0'));var moment=require(_0xf22a('0x1'));var logger=require(_0xf22a('0x2'))('preview');var ipAgi=process['env']['XCALLY_IP_AGI']||'127.0.0.1';function getSeconds(_0x3878b9,_0x427d57){var _0x239d79=moment(_0x3878b9)[_0xf22a('0x3')](0x0);var _0x3fdded=moment(_0x427d57)['milliseconds'](0x0);return _0x239d79[_0xf22a('0x4')](_0x3fdded,'seconds');}exports[_0xf22a('0x5')]=function(_0x40febb){return function(_0x1a5286){logger[_0xf22a('0x6')](_0x40febb,util['inspect'](_0x1a5286,{'showHidden':![],'depth':null}));};};exports[_0xf22a('0x7')]=function(_0x435317,_0xd37f8){logger['info'](_0x435317,util[_0xf22a('0x8')](_0xd37f8,{'showHidden':![],'depth':null}));};exports[_0xf22a('0x9')]=function(_0x4b7f71,_0x943f8f){logger[_0xf22a('0x6')](_0x4b7f71,util['inspect'](_0x943f8f,{'showHidden':![],'depth':null}));};exports[_0xf22a('0xa')]=function(_0x26d685){return function(_0x4e2fc6){logger[_0xf22a('0xb')](_0x26d685,util[_0xf22a('0x8')](_0x4e2fc6,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x286a54,_0x5bfada,_0x1fc4b6){return{'message':_0x286a54,'unlock':_0x5bfada,'active':_0x1fc4b6};};exports[_0xf22a('0xc')]=function(_0x3474cd,_0x336a7c,_0x2e971c){if(!_[_0xf22a('0xd')](_0x2e971c)&&_0xf22a('0xe')===typeof _0x2e971c&&!_[_0xf22a('0xf')](_0x2e971c)){if(!_[_0xf22a('0xd')](_0x336a7c)&&_0xf22a('0xe')===typeof _0x336a7c&&!_['isEmpty'](_0x336a7c)){return util[_0xf22a('0x10')](_0xf22a('0x11'),_0x336a7c,_0x2e971c);}return util['format'](_0xf22a('0x11'),_0x2e971c,_0x2e971c);}if(!_[_0xf22a('0xd')](_0x3474cd)&&_0xf22a('0xe')===typeof _0x3474cd&&!_[_0xf22a('0xf')](_0x3474cd)){return _0x3474cd;}return'\x22\x22\x20<>';};exports[_0xf22a('0x12')]=function(_0x6663d7){if(_[_0xf22a('0x13')](_0x6663d7)){return![];}return _0x6663d7;};exports[_0xf22a('0x14')]=function(_0x2cb649,_0x1cc3ad,_0x4aeaa1,_0x266fec,_0x639946,_0x4f1547){var _0x46c6aa={'XMD-QUEUE':_0x1cc3ad[_0xf22a('0x15')]?_0x1cc3ad[_0xf22a('0x15')][_0xf22a('0x16')]:'','XMD-CALLERID':_0x266fec,'XMD-CALLERID-PREVIEW':_0x4f1547?util['format'](_0xf22a('0x11'),_0x4f1547[_0xf22a('0x17')],_0x4f1547['calleridnum']):_0x266fec,'XMD-DIALID':_0x639946,'XMD-CONTACTID':_0x1cc3ad['ContactId'],'XMD-CDRTYPE':_0xf22a('0x18'),'CALLERID(all)':_0x266fec,'XMD-VOICEQUEUEID':_0x1cc3ad[_0xf22a('0x19')],'XMD-DIALCHANNEL':_0x4aeaa1,'XMD-DIALTIMEOUT':_0x2cb649['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0xf22a('0x10')](_0xf22a('0x1a'),_0x2cb649[_0xf22a('0x1b')]?'g':'',_[_0xf22a('0xf')](_0x2cb649[_0xf22a('0x1c')])?'':_0xf22a('0x1d')),'XMD-DIALURL':_0x2cb649['dialPreviewUrl']||'','XMD-AGI':_0x2cb649[_0xf22a('0x1e')]?util[_0xf22a('0x10')]('\x22agi://%s/square,%s\x22',ipAgi,_0x2cb649[_0xf22a('0x1e')]):_0xf22a('0x1f'),'XMD-AGIAFTER':_0x2cb649[_0xf22a('0x1b')]?util[_0xf22a('0x10')](_0xf22a('0x20'),ipAgi,_0x2cb649['dialQueueProject2']):_0xf22a('0x1f'),'XMD-ORIGINATECALLERIDNUM':_0x4f1547?_0x4f1547['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x4f1547?_0x4f1547['originatecalleridname']:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0xf22a('0x21')};if(!_[_0xf22a('0xf')](_0x2cb649['monitor_format'])){_0x46c6aa[util[_0xf22a('0x10')]('%s',_0xf22a('0x22'))]=_0x2cb649[_0xf22a('0x1c')];_0x46c6aa[util['format']('%s',_0xf22a('0x23'))]=_0x639946;}if(_0x1cc3ad&&_0x1cc3ad[_0xf22a('0x24')]){for(var _0x55986c in _0x1cc3ad[_0xf22a('0x24')]){if(_0x1cc3ad[_0xf22a('0x24')][_0xf22a('0x25')](_0x55986c)){if(!_['isNil'](_0x1cc3ad['Contact'][_0x55986c])&&_0x55986c!=='id'&&_0x55986c!==_0xf22a('0x26')&&_0x55986c!==_0xf22a('0x27')&&_0x55986c!==_0xf22a('0x28')){_0x46c6aa[util[_0xf22a('0x10')](_0xf22a('0x29'),_0xf22a('0x2a'),_[_0xf22a('0x2b')](_0x55986c))]=_0x1cc3ad[_0xf22a('0x24')][_0x55986c];}}}}return _0x46c6aa;};exports['toLowerVariables']=function(_0x4d7ded){var _0x6e356d={};for(var _0x4eccf7 in _0x4d7ded){if(_0x4d7ded[_0xf22a('0x25')](_0x4eccf7)){_0x6e356d[util['format']('%s',_['toLower'](_0x4eccf7))]=_0x4d7ded[_0x4eccf7];}}return{'variables':_0x6e356d};};exports[_0xf22a('0x2c')]=function(_0x4028a4,_0x4267e6){if(!_[_0xf22a('0x13')](_0x4028a4)){if(_0x4028a4['hasOwnProperty'](_0xf22a('0x2d'))){if(_0x4028a4[_0xf22a('0x2d')]>0x0){_0x4028a4[_0xf22a('0x2d')]-=0x1;}else{logger['error'](_0xf22a('0x2e'),_0x4267e6);}}}else{logger[_0xf22a('0x6')](_0xf22a('0x2f'),_0x4267e6);}};exports[_0xf22a('0x30')]=function(_0x87a752){var _0x29e990=moment()[_0xf22a('0x10')](_0xf22a('0x31'));_0x87a752[_0xf22a('0x32')]=0xd;_0x87a752[_0xf22a('0x33')]=_0xf22a('0x34');_0x87a752[_0xf22a('0x35')]=_0x29e990;_0x87a752[_0xf22a('0x36')]=_0x29e990;_0x87a752[_0xf22a('0x37')]=_0x29e990;};exports[_0xf22a('0x38')]=function(_0x2a94dc,_0x3c8b50,_0x554014){var _0x57361b=moment()['format'](_0xf22a('0x31'));_0x2a94dc[_0xf22a('0x32')]=_0x3c8b50;_0x2a94dc[_0xf22a('0x33')]=_0x554014;_0x2a94dc[_0xf22a('0x36')]=_0x57361b;_0x2a94dc['ringtime']=getSeconds(_0x2a94dc[_0xf22a('0x36')],_0x2a94dc['starttime']);};exports[_0xf22a('0x39')]=function(_0x13af9c,_0x346f27,_0x33a77d){_0x13af9c[_0xf22a('0x3a')]=_0x346f27;_0x13af9c['UserId']=_0x33a77d;};exports[_0xf22a('0x3b')]=function(_0xe48314,_0x4a6e80,_0x38cf40){var _0x45df12=moment()[_0xf22a('0x10')](_0xf22a('0x31'));_0xe48314[_0xf22a('0x32')]=_0x4a6e80;_0xe48314[_0xf22a('0x33')]=_0x38cf40;_0xe48314[_0xf22a('0x36')]=_0xe48314[_0xf22a('0x36')]?_0xe48314[_0xf22a('0x36')]:_0x45df12;_0xe48314[_0xf22a('0x37')]=_0xe48314[_0xf22a('0x37')]?_0xe48314[_0xf22a('0x37')]:_0x45df12;_0xe48314[_0xf22a('0x3c')]=getSeconds(_0xe48314['responsetime']||0x0,_0xe48314['starttime']||0x0);_0xe48314[_0xf22a('0x3d')]=_0xe48314[_0xf22a('0x3e')]?getSeconds(_0xe48314[_0xf22a('0x37')],_0xe48314[_0xf22a('0x3e')]):0x0;};exports['isFailure']=function(_0x87df7f){return _0x87df7f===_0xf22a('0x3f');};exports[_0xf22a('0x40')]=function(_0x1f8bc8,_0xd1338a,_0x3fd4b5,_0x11b608,_0x3bfe92){var _0x3db6f7=_0x11b608?'RECALL':_0x1f8bc8[_0xf22a('0x17')];_0x3db6f7=_0x3bfe92?_0xf22a('0x41'):_0x3db6f7;return{'actionid':_0x1f8bc8[_0xf22a('0x42')],'action':_0xf22a('0x43'),'channel':_0x1f8bc8[_0xf22a('0x44')],'callerid':util['format'](_0xf22a('0x11'),_0x3db6f7,_0x1f8bc8[_0xf22a('0x45')]),'Exten':_0xf22a('0x46'),'Context':'from-sip','Priority':'1','variable':_0x3fd4b5,'timeout':(_0xd1338a[_0xf22a('0x47')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1f8bc8[_0xf22a('0x42')]};};exports[_0xf22a('0x48')]=function(_0x3b7ce8){return _0x3b7ce8[_0xf22a('0x49')]+_0x3b7ce8['countcongestionretry']+_0x3b7ce8[_0xf22a('0x4a')]+_0x3b7ce8[_0xf22a('0x4b')]+_0x3b7ce8[_0xf22a('0x4c')];};exports[_0xf22a('0x4d')]=function(_0x38dd7f){var _0x816668=_[_0xf22a('0x4e')](_0x38dd7f);_0x816668[_0xf22a('0x32')]=0xf;_0x816668[_0xf22a('0x33')]=_0xf22a('0x4f');return _0x816668;};exports[_0xf22a('0x50')]=function(_0x45d1e2,_0x58a959,_0x293fe3){var _0x7a615e={};_0x7a615e[_0x58a959]=_0x45d1e2[_0x58a959];_0x7a615e[_0xf22a('0x51')]=![];_0x7a615e['scheduledat']=moment()[_0xf22a('0x52')](_0x293fe3,_0xf22a('0x53'))[_0xf22a('0x10')](_0xf22a('0x31'));_0x7a615e[_0xf22a('0x54')]=_0x45d1e2[_0xf22a('0x54')];_0x7a615e[_0xf22a('0x55')]=_0x45d1e2['ListId'];_0x7a615e[_0xf22a('0x19')]=_0x45d1e2[_0xf22a('0x19')]||undefined;return _0x7a615e;};exports[_0xf22a('0x56')]=function(_0x51666b,_0xec6539){if(!_['isNil'](_0x51666b)){if(_0x51666b['pTalking']>0x0){_0x51666b['pTalking']-=0x1;}else{logger[_0xf22a('0x6')](_0xec6539,_0xf22a('0x57'));}}else{logger[_0xf22a('0x6')](_0xec6539,_0xf22a('0x58'));}};exports[_0xf22a('0x59')]=function(_0x1f3457){if(_0x1f3457<=0x0){return!![];}return![];};function buildObj(_0x18e010,_0x4f63de,_0x28c9ce){_0x18e010[_0xf22a('0x5a')]=_0x4f63de;_0x18e010[_0xf22a('0x16')]=_0x18e010[_0xf22a('0x5b')];_0x18e010[_0xf22a('0x5c')]=_0x18e010[_0xf22a('0x44')];_0x18e010[_0xf22a('0x5d')]=_0xf22a('0x5e');if(_0x28c9ce){_0x18e010['mandatoryDisposition']=_0x28c9ce[_0xf22a('0x5f')];}return _0x18e010;}exports[_0xf22a('0x60')]=buildObj;exports[_0xf22a('0x61')]=function(_0x146788){var _0x634ae0={};_0x634ae0[_0xf22a('0x5b')]=_0x146788[_0xf22a('0x5b')];_0x634ae0[_0xf22a('0x5c')]=_0x146788[_0xf22a('0x44')];_0x634ae0[_0xf22a('0x42')]=_0x146788['uniqueid'];return _0x634ae0;};exports[_0xf22a('0x62')]=function(_0x181a9d){var _0x139846=[];for(var _0x102f7b in _0x181a9d){if(_0x181a9d[_0xf22a('0x25')](_0x102f7b)){if(!_[_0xf22a('0x13')](_0x181a9d[_0x102f7b])&&_0x181a9d[_0x102f7b]['state']===_0xf22a('0x63')&&_0x181a9d[_0x102f7b][_0xf22a('0x64')]===_0xf22a('0x65')){_0x139846[_0xf22a('0x66')](_0x181a9d[_0x102f7b]['id']);}}}return _0x139846;};exports[_0xf22a('0x67')]=function(_0x589c36){var _0x4f9eee=moment()[_0xf22a('0x3')](0x0);var _0x3e5f12=moment(_0x589c36)[_0xf22a('0x3')](0x0);return _0x4f9eee[_0xf22a('0x4')](_0x3e5f12,_0xf22a('0x68'));};exports[_0xf22a('0x69')]=function(_0x409ea2){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x409ea2['ContactId'],'ListId':_0x409ea2[_0xf22a('0x55')],'VoiceQueueId':_0x409ea2[_0xf22a('0x19')]||undefined,'CampaignId':_0x409ea2[_0xf22a('0x6a')]||undefined};};exports[_0xf22a('0x6b')]=function(_0x12f206){if(_0x12f206==='uniqueid'||_0x12f206===_0xf22a('0x6c')||_0x12f206===_0xf22a('0x5b')||_0x12f206===_0xf22a('0x6d')||_0x12f206===_0xf22a('0x6e')||_0x12f206===_0xf22a('0x6f')||_0x12f206==='membername'||_0x12f206==='channelAgent'||_0x12f206===_0xf22a('0x17')||_0x12f206===_0xf22a('0x51')||_0x12f206==='calleridnum'||_0x12f206==='scheduledat'||_0x12f206===_0xf22a('0x49')||_0x12f206===_0xf22a('0x70')||_0x12f206==='countnoanswerretry'||_0x12f206==='countglobal'||_0x12f206===_0xf22a('0x71')||_0x12f206===_0xf22a('0x72')||_0x12f206===_0xf22a('0x73')||_0x12f206===_0xf22a('0x74')||_0x12f206===_0xf22a('0x54')||_0x12f206===_0xf22a('0x55')||_0x12f206==='UserId'||_0x12f206===_0xf22a('0x19')||_0x12f206===_0xf22a('0x75')||_0x12f206===_0xf22a('0x76')||_0x12f206===_0xf22a('0x77')||_0x12f206==='xmd-phone'||_0x12f206==='xmd-listid'||_0x12f206==='xmd-dialurl'||_0x12f206===_0xf22a('0x78')||_0x12f206==='xmd-dialoptions'||_0x12f206===_0xf22a('0x79')||_0x12f206===_0xf22a('0x7a')||_0x12f206==='xmd-contactid'||_0x12f206===_0xf22a('0x7b')||_0x12f206===_0xf22a('0x7c')||_0x12f206===_0xf22a('0x7d')||_0x12f206===_0xf22a('0x7e')||_0x12f206===_0xf22a('0x7f')||_0x12f206===_0xf22a('0x80')||_0x12f206===_0xf22a('0x81')||_0x12f206===_0xf22a('0x82')||_0x12f206===_0xf22a('0x83')||_0x12f206===_0xf22a('0x84')||_0x12f206===_0xf22a('0x85')||_0x12f206===_0xf22a('0x86')||_0x12f206===_0xf22a('0x7f')||_0x12f206===_0xf22a('0x80')||_0x12f206==='rtpaudioqosjitter'||_0x12f206==='rtpaudioqosjitterbridged'||_0x12f206===_0xf22a('0x83')||_0x12f206===_0xf22a('0x84')||_0x12f206==='rtpaudioqosrtt'||_0x12f206===_0xf22a('0x86')||_0x12f206==='bridgepeer'||_0x12f206==='bridgepvtcallid'||_0x12f206===_0xf22a('0x32')||_0x12f206==='statedesc'){return![];}return!![];};exports['getCallerIdRandom']=function(_0x53346f,_0x5c0dab){var _0x31a5ab,_0x549d9a,_0x3f2b78;if(_0x5c0dab<=0x0){_0x5c0dab=0x1;}_0x31a5ab=new RegExp(_0xf22a('0x87')+_0x5c0dab+'}$');_0x549d9a=Math[_0xf22a('0x88')](0xa,_0x5c0dab-0x1);_0x3f2b78=Math[_0xf22a('0x88')](0xa,_0x5c0dab)-0x1;return util[_0xf22a('0x10')]('%s',_[_0xf22a('0x89')](_0x53346f,_0x31a5ab,_['random'](_0x549d9a,_0x3f2b78)));};exports[_0xf22a('0x8a')]=function(_0xf15b55){var _0x311a1b=_0xf15b55[_0xf22a('0x8b')](/"(.*?)"/);return _0x311a1b?_0x311a1b[0x1]:_0xf15b55;};exports['extractCalleridNumber']=function(_0x3a6f74){var _0x5ca22e=_0x3a6f74[_0xf22a('0x8b')](/<(.*?)>/);return _0x5ca22e?_0x5ca22e[0x1]:_0x3a6f74;};function buildNoAnswerEventPayload(_0x84e6e5,_0xcefd60){var _0x432f09=buildObj(_0x84e6e5,_0xf22a('0x8c'));if(!_[_0xf22a('0xf')](_0xcefd60['variables'])){Object[_0xf22a('0x8d')](_0xcefd60[_0xf22a('0x8e')])['forEach'](function(_0x26a15a){_0x432f09[_0x26a15a[_0xf22a('0x8f')]()]=_0xcefd60[_0xf22a('0x8e')][_0x26a15a];});}return _0x432f09;}exports[_0xf22a('0x90')]=buildNoAnswerEventPayload;
\ No newline at end of file
index d66aa0a..8a32031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8f1=['voicequeuechannel','voicequeuechannelredirect','string','queuepause','boolean'];(function(_0x2902cc,_0x4d1d00){var _0x5f418f=function(_0x5e3846){while(--_0x5e3846){_0x2902cc['push'](_0x2902cc['shift']());}};_0x5f418f(++_0x4d1d00);}(_0xb8f1,0x89));var _0x1b8f=function(_0x40bab2,_0x179993){_0x40bab2=_0x40bab2-0x0;var _0x101246=_0xb8f1[_0x40bab2];return _0x101246;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':_0x1b8f('0x0'),'required':!![]}};exports[_0x1b8f('0x1')]={'interface':{'type':_0x1b8f('0x0'),'required':!![]},'paused':{'type':_0x1b8f('0x2')},'reason':{'type':_0x1b8f('0x0'),'required':![]}};exports['reload']={'module':{'type':_0x1b8f('0x0'),'required':![]}};exports[_0x1b8f('0x3')]={'uniqueid':{'type':_0x1b8f('0x0'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x1b8f('0x0')},'format':{'type':'string'},'mixmonitorid':{'type':_0x1b8f('0x0')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':'string','required':!![]}};exports[_0x1b8f('0x4')]={'uniqueid':{'type':_0x1b8f('0x0'),'required':!![]},'exten':{'type':_0x1b8f('0x0'),'required':!![]},'context':{'type':_0x1b8f('0x0')}};
\ No newline at end of file
+var _0x1aa9=['boolean','queuepause','reload','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','string','number'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1aa9,0x7e));var _0x91aa=function(_0x43dd40,_0x431145){_0x43dd40=_0x43dd40-0x0;var _0x200de4=_0x1aa9[_0x43dd40];return _0x200de4;};'use strict';exports['queueadd']={'queue':{'type':_0x91aa('0x0'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x91aa('0x0'),'required':!![]},'penalty':{'type':_0x91aa('0x1'),'required':![]},'paused':{'type':_0x91aa('0x2'),'required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':_0x91aa('0x0'),'required':!![]}};exports[_0x91aa('0x3')]={'interface':{'type':_0x91aa('0x0'),'required':!![]},'paused':{'type':_0x91aa('0x2')},'reason':{'type':_0x91aa('0x0'),'required':![]}};exports[_0x91aa('0x4')]={'module':{'type':'string','required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0x91aa('0x0'),'required':!![]}};exports[_0x91aa('0x5')]={'uniqueid':{'type':_0x91aa('0x0'),'required':!![]},'filename':{'type':_0x91aa('0x0')},'format':{'type':'string'},'mixmonitorid':{'type':_0x91aa('0x0')}};exports[_0x91aa('0x6')]={'uniqueid':{'type':_0x91aa('0x0'),'required':!![]}};exports[_0x91aa('0x7')]={'uniqueid':{'type':_0x91aa('0x0'),'required':!![]},'exten':{'type':_0x91aa('0x0'),'required':!![]},'context':{'type':_0x91aa('0x0')}};
\ No newline at end of file
index 5cb02f3..fa9e556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['diff','seconds','disposition','ANSWERED','outbound','duration','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','initVoiceQueues','exports','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','telephones','trunks','voiceQueues','triggers','templates','channels','outboundChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','hasOwnProperty','isNil','format','interface','total','answered','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','agents','length','name','isUndefined','initTelephones','SIP/%s','initTriggers','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','groupBy','queuecallerexit','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','sumDuration','queuecallercompleteAt','queuecallerexitAt'];(function(_0x35ced9,_0x4835a6){var _0x1f67b2=function(_0xd01301){while(--_0xd01301){_0x35ced9['push'](_0x35ced9['shift']());}};_0x1f67b2(++_0x4835a6);}(_0x5f66,0x1a0));var _0x65f6=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x5f66[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var moment=require(_0x65f6('0x0'));var util=require('util');var Agent=require(_0x65f6('0x1'));var Telephone=require(_0x65f6('0x2'));var Trunk=require(_0x65f6('0x3'));var VoiceQueue=require(_0x65f6('0x4'));var Trigger=require(_0x65f6('0x5'));var Template=require('../model/template');var Campaign=require(_0x65f6('0x6'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x65f6('0x7'));var SalesforceAccount=require(_0x65f6('0x8'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x65f6('0x9'));var DeskAccount=require(_0x65f6('0xa'));var VtigerAccount=require(_0x65f6('0xb'));var ServicenowAccount=require(_0x65f6('0xc'));var Dynamics365Account=require(_0x65f6('0xd'));var FreshsalesAccount=require(_0x65f6('0xe'));var FaxAccount=require('../model/faxAccount');function Realtime(){this['agents']={};this[_0x65f6('0xf')]={};this[_0x65f6('0x10')]={};this[_0x65f6('0x11')]={};this[_0x65f6('0x12')]={};this['campaigns']={};this[_0x65f6('0x13')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x65f6('0x14')]={};this['queueChannels']={};this[_0x65f6('0x15')]={};this['timers']={};this[_0x65f6('0x16')]={};this[_0x65f6('0x17')]={};this[_0x65f6('0x18')]={};this[_0x65f6('0x19')]={};this[_0x65f6('0x1a')]={};this[_0x65f6('0x1b')]={};this[_0x65f6('0x1c')]={};this[_0x65f6('0x1d')]={};this[_0x65f6('0x1e')]={};this[_0x65f6('0x1f')]={};this['freshsalesAccounts']={};this[_0x65f6('0x20')]={};}function freeIsNotKey(_0x49a913,_0x5dd324,_0x1693e6){var _0x5c69f8=_[_0x65f6('0x21')](_0x49a913,function(_0x1c955c){return _0x1c955c[_0x1693e6];});for(var _0x1b1cbb in _0x5dd324){if(_0x5dd324[_0x65f6('0x22')](_0x1b1cbb)){if(!_0x5c69f8[_0x1b1cbb]){delete _0x5dd324[_0x1b1cbb];}}}}function freeIsNotKeySip(_0xc8660c,_0x18380e){var _0x495dd6=_['mapKeys'](_0xc8660c,function(_0x2d538c){return util['format']('SIP/%s',_0x2d538c['name']);});for(var _0x365159 in _0x18380e){if(_0x18380e[_0x65f6('0x22')](_0x365159)){if(!_0x495dd6[_0x365159]){delete _0x18380e[_0x365159];}}}}function freeIsNotKeyAgent(_0x5114a4,_0x39e19f){var _0x270893=_[_0x65f6('0x21')](_0x5114a4,function(_0x3876ed){var _0x219ab2=_[_0x65f6('0x23')](_0x3876ed['interface'])?util[_0x65f6('0x24')]('SIP/%s',_0x3876ed['name']):_0x3876ed[_0x65f6('0x25')];return _0x219ab2;});for(var _0xd173f4 in _0x39e19f){if(_0x39e19f['hasOwnProperty'](_0xd173f4)){if(!_0x270893[_0xd173f4]){delete _0x39e19f[_0xd173f4];}}}}function clearVoiceCallReports(_0x1eeaaa){_0x1eeaaa[_0x65f6('0x26')]=0x0;_0x1eeaaa[_0x65f6('0x27')]=0x0;_0x1eeaaa[_0x65f6('0x28')]=0x0;_0x1eeaaa['sumDuration']=0x0;_0x1eeaaa[_0x65f6('0x29')]=0x0;}function clearCampaigns(_0x59ea32){if(!_[_0x65f6('0x2a')](_0x59ea32)){for(var _0x5963e0 in _0x59ea32){if(_0x59ea32['hasOwnProperty'](_0x5963e0)){_0x59ea32[_0x5963e0]['ivrTotalCallsDays']=0x0;_0x59ea32[_0x5963e0][_0x65f6('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x16cde8){if(!_['isEmpty'](_0x16cde8)){for(var _0x296cd9 in _0x16cde8){if(_0x16cde8[_0x65f6('0x22')](_0x296cd9)){_0x16cde8[_0x296cd9]['total']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x27')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2c')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2d')]=0x0;_0x16cde8[_0x296cd9]['sumHoldTime']=0x0;_0x16cde8[_0x296cd9]['sumDuration']=0x0;_0x16cde8[_0x296cd9]['sumBillable']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2e')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2f')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x30')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x31')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x32')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x33')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x34')]=0x0;_0x16cde8[_0x296cd9]['outboundDropCallsDayCallersExit']=0x0;_0x16cde8[_0x296cd9]['outboundBlacklistCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x35')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x36')]=0x0;_0x16cde8[_0x296cd9]['outboundReCallsDay']=0x0;_0x16cde8[_0x296cd9]['outboundAnswerAgiCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x37')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x38')]=!![];}}}}Realtime[_0x65f6('0x39')][_0x65f6('0x3a')]=function(_0x1217fd,_0x2d32be){for(var _0x5792a0 in _0x2d32be){if(_0x1217fd[_0x65f6('0x22')](_0x5792a0)){_0x1217fd[_0x5792a0]=_0x2d32be[_0x5792a0];}}};Realtime[_0x65f6('0x39')][_0x65f6('0x3b')]=function(){var _0x4bc037=this;return function(_0x217f35){if(_0x217f35){freeIsNotKeyAgent(_0x217f35,_0x4bc037[_0x65f6('0x3c')]);for(var _0xbaed3c=0x0,_0x45510a={};_0xbaed3c<_0x217f35[_0x65f6('0x3d')];_0xbaed3c+=0x1){_0x45510a=_0x217f35[_0xbaed3c];var _0x2f054c=_['isNil'](_0x45510a[_0x65f6('0x25')])?util[_0x65f6('0x24')]('SIP/%s',_0x45510a[_0x65f6('0x3e')]):_0x45510a['interface'];if(_[_0x65f6('0x3f')](_0x4bc037['agents'][_0x2f054c])){_0x4bc037[_0x65f6('0x3c')][_0x2f054c]=new Agent(_0x45510a);}else{_0x4bc037[_0x65f6('0x3a')](_0x4bc037['agents'][_0x2f054c],_0x45510a);}}}return _0x4bc037[_0x65f6('0x3c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x40')]=function(){var _0x515648=this;return function(_0x582c7e){if(_0x582c7e){freeIsNotKeySip(_0x582c7e,_0x515648[_0x65f6('0xf')]);for(var _0x4c0df4=0x0,_0x26de30={};_0x4c0df4<_0x582c7e['length'];_0x4c0df4+=0x1){_0x26de30=_0x582c7e[_0x4c0df4];if(_[_0x65f6('0x3f')](_0x515648[_0x65f6('0xf')][util['format'](_0x65f6('0x41'),_0x26de30['name'])])){_0x515648['telephones'][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])]=new Telephone(_0x26de30);}else{_0x515648[_0x65f6('0x3a')](_0x515648[_0x65f6('0xf')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])],_0x26de30);}}}return _0x515648['telephones'];};};Realtime[_0x65f6('0x39')]['initTrunks']=function(){var _0x12a589=this;return function(_0xa4394a){if(_0xa4394a){freeIsNotKeySip(_0xa4394a,_0x12a589[_0x65f6('0x10')]);for(var _0x2ea7f7=0x0,_0x5ef5c2={};_0x2ea7f7<_0xa4394a[_0x65f6('0x3d')];_0x2ea7f7+=0x1){_0x5ef5c2=_0xa4394a[_0x2ea7f7];if(_[_0x65f6('0x3f')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])])){_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2['name'])]=new Trunk(_0x5ef5c2);}else{_0x12a589[_0x65f6('0x3a')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])],_0x5ef5c2);}}}return _0x12a589[_0x65f6('0x10')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x42')]=function(){var _0x461393=this;return function(_0x2abbed){if(_0x2abbed){freeIsNotKey(_0x2abbed,_0x461393[_0x65f6('0x12')],'id');for(var _0x2c008a=0x0,_0x6c4d94={};_0x2c008a<_0x2abbed[_0x65f6('0x3d')];_0x2c008a+=0x1){_0x6c4d94=_0x2abbed[_0x2c008a];if(_[_0x65f6('0x3f')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']])){_0x461393['triggers'][_0x6c4d94['id']]=new Trigger(_0x6c4d94);}else{_0x461393[_0x65f6('0x3a')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']],_0x6c4d94);}}}return _0x461393[_0x65f6('0x12')];};};Realtime[_0x65f6('0x39')]['initTemplates']=function(){var _0x1bf5bf=this;return function(_0x2d0dac){if(_0x2d0dac){freeIsNotKey(_0x2d0dac,_0x1bf5bf[_0x65f6('0x13')],'id');for(var _0x5e69b4=0x0,_0x2dbab3={};_0x5e69b4<_0x2d0dac[_0x65f6('0x3d')];_0x5e69b4+=0x1){_0x2dbab3=_0x2d0dac[_0x5e69b4];if(_[_0x65f6('0x3f')](_0x1bf5bf[_0x65f6('0x13')][_0x2dbab3['id']])){_0x1bf5bf['templates'][_0x2dbab3['id']]=new Template(_0x2dbab3);}else{_0x1bf5bf[_0x65f6('0x3a')](_0x1bf5bf['templates'][_0x2dbab3['id']],_0x2dbab3);}}}return _0x1bf5bf[_0x65f6('0x13')];};};Realtime[_0x65f6('0x39')]['initZendeskAccounts']=function(){var _0xf754ee=this;return function(_0x5085db){if(_0x5085db){freeIsNotKey(_0x5085db,_0xf754ee[_0x65f6('0x17')],'id');for(var _0x4d9b76=0x0,_0x2d1706={};_0x4d9b76<_0x5085db[_0x65f6('0x3d')];_0x4d9b76+=0x1){_0x2d1706=_0x5085db[_0x4d9b76];if(_[_0x65f6('0x3f')](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']])){_0xf754ee['zendeskAccounts'][_0x2d1706['id']]=new ZendeskAccount(_0x2d1706);}else{_0xf754ee['mergeFromDatabase'](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']],_0x2d1706);}}}return _0xf754ee[_0x65f6('0x17')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x43')]=function(){var _0x3b907c=this;return function(_0x2d6ab9){if(_0x2d6ab9){freeIsNotKey(_0x2d6ab9,_0x3b907c[_0x65f6('0x18')],'id');for(var _0x41690c=0x0,_0x414f49={};_0x41690c<_0x2d6ab9['length'];_0x41690c+=0x1){_0x414f49=_0x2d6ab9[_0x41690c];if(_[_0x65f6('0x3f')](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']])){_0x3b907c[_0x65f6('0x18')][_0x414f49['id']]=new SalesforceAccount(_0x414f49);}else{_0x3b907c['mergeFromDatabase'](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']],_0x414f49);}}}return _0x3b907c[_0x65f6('0x18')];};};Realtime['prototype'][_0x65f6('0x44')]=function(){var _0x253d52=this;return function(_0x57eb04){if(_0x57eb04){freeIsNotKey(_0x57eb04,_0x253d52[_0x65f6('0x1a')],'id');for(var _0x4f96c4=0x0,_0x247be3={};_0x4f96c4<_0x57eb04[_0x65f6('0x3d')];_0x4f96c4+=0x1){_0x247be3=_0x57eb04[_0x4f96c4];if(_[_0x65f6('0x3f')](_0x253d52['freshdeskAccounts'][_0x247be3['id']])){_0x253d52[_0x65f6('0x1a')][_0x247be3['id']]=new FreshdeskAccount(_0x247be3);}else{_0x253d52[_0x65f6('0x3a')](_0x253d52['freshdeskAccounts'][_0x247be3['id']],_0x247be3);}}}return _0x253d52[_0x65f6('0x1a')];};};Realtime[_0x65f6('0x39')]['initZohoAccounts']=function(){var _0x34d6a9=this;return function(_0x344c0e){if(_0x344c0e){freeIsNotKey(_0x344c0e,_0x34d6a9[_0x65f6('0x1b')],'id');for(var _0x25d504=0x0,_0x234fa7={};_0x25d504<_0x344c0e[_0x65f6('0x3d')];_0x25d504+=0x1){_0x234fa7=_0x344c0e[_0x25d504];if(_[_0x65f6('0x3f')](_0x34d6a9[_0x65f6('0x1b')][_0x234fa7['id']])){_0x34d6a9['zohoAccounts'][_0x234fa7['id']]=new ZohoAccount(_0x234fa7);}else{_0x34d6a9['mergeFromDatabase'](_0x34d6a9['zohoAccounts'][_0x234fa7['id']],_0x234fa7);}}}return _0x34d6a9[_0x65f6('0x1b')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x45')]=function(){var _0x20c322=this;return function(_0x545445){if(_0x545445){freeIsNotKey(_0x545445,_0x20c322[_0x65f6('0x1c')],'id');for(var _0x2032b9=0x0,_0x9ff849={};_0x2032b9<_0x545445['length'];_0x2032b9+=0x1){_0x9ff849=_0x545445[_0x2032b9];if(_[_0x65f6('0x3f')](_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']])){_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']]=new DeskAccount(_0x9ff849);}else{_0x20c322['mergeFromDatabase'](_0x20c322['deskAccounts'][_0x9ff849['id']],_0x9ff849);}}}return _0x20c322[_0x65f6('0x1c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x46')]=function(){var _0x39364f=this;return function(_0x2a76b3){if(_0x2a76b3){freeIsNotKey(_0x2a76b3,_0x39364f[_0x65f6('0x19')],'id');for(var _0x35d77f=0x0,_0x138334={};_0x35d77f<_0x2a76b3[_0x65f6('0x3d')];_0x35d77f+=0x1){_0x138334=_0x2a76b3[_0x35d77f];if(_[_0x65f6('0x3f')](_0x39364f[_0x65f6('0x19')][_0x138334['id']])){_0x39364f[_0x65f6('0x19')][_0x138334['id']]=new SugarcrmAccount(_0x138334);}else{_0x39364f[_0x65f6('0x3a')](_0x39364f[_0x65f6('0x19')][_0x138334['id']],_0x138334);}}}return _0x39364f['sugarcrmAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x47')]=function(){var _0x42a805=this;return function(_0x4b4efe){if(_0x4b4efe){freeIsNotKey(_0x4b4efe,_0x42a805[_0x65f6('0x1d')],'id');for(var _0x16dec0=0x0,_0x4638c9={};_0x16dec0<_0x4b4efe[_0x65f6('0x3d')];_0x16dec0+=0x1){_0x4638c9=_0x4b4efe[_0x16dec0];if(_['isUndefined'](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']])){_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']]=new VtigerAccount(_0x4638c9);}else{_0x42a805[_0x65f6('0x3a')](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']],_0x4638c9);}}}return _0x42a805['vtigerAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x48')]=function(){var _0x5c55e4=this;return function(_0x28682b){if(_0x28682b){freeIsNotKey(_0x28682b,_0x5c55e4[_0x65f6('0x1e')],'id');for(var _0x36c316=0x0,_0x51549d={};_0x36c316<_0x28682b[_0x65f6('0x3d')];_0x36c316+=0x1){_0x51549d=_0x28682b[_0x36c316];if(_[_0x65f6('0x3f')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']])){_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']]=new ServicenowAccount(_0x51549d);}else{_0x5c55e4[_0x65f6('0x3a')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']],_0x51549d);}}}return _0x5c55e4['servicenowAccounts'];};};Realtime['prototype']['initDynamics365Accounts']=function(){var _0x336a7d=this;return function(_0x367d95){if(_0x367d95){freeIsNotKey(_0x367d95,_0x336a7d[_0x65f6('0x1f')],'id');for(var _0x471bec=0x0,_0xab6f0={};_0x471bec<_0x367d95[_0x65f6('0x3d')];_0x471bec+=0x1){_0xab6f0=_0x367d95[_0x471bec];if(_['isUndefined'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']])){_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']]=new Dynamics365Account(_0xab6f0);}else{_0x336a7d['mergeFromDatabase'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']],_0xab6f0);}}}return _0x336a7d[_0x65f6('0x1f')];};};Realtime[_0x65f6('0x39')]['initFreshsalesAccounts']=function(){var _0x23c441=this;return function(_0x448c9a){if(_0x448c9a){freeIsNotKey(_0x448c9a,_0x23c441['freshsalesAccounts'],'id');for(var _0x271d76=0x0,_0x3edc6b={};_0x271d76<_0x448c9a[_0x65f6('0x3d')];_0x271d76+=0x1){_0x3edc6b=_0x448c9a[_0x271d76];if(_[_0x65f6('0x3f')](_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']])){_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']]=new FreshsalesAccount(_0x3edc6b);}else{_0x23c441[_0x65f6('0x3a')](_0x23c441['freshsalesAccounts'][_0x3edc6b['id']],_0x3edc6b);}}}return _0x23c441['freshsalesAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4a')]=function(){var _0x4a9524=this;return function(_0x417ba5){for(var _0x5f3df9=0x0;_0x5f3df9<_0x417ba5[_0x65f6('0x3d')];_0x5f3df9+=0x1){_['merge'](_0x4a9524[_0x65f6('0x11')][_0x417ba5[_0x5f3df9][_0x65f6('0x3e')]],_0x417ba5[_0x5f3df9]);}return _0x4a9524[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4b')]=function(){var _0x264e6c=this;return function(_0x1aaf75){clearVoiceQueues(_0x264e6c[_0x65f6('0x11')]);if(_0x1aaf75){_0x1aaf75=_[_0x65f6('0x4c')](_0x1aaf75,'uniqueid');for(var _0x480190 in _0x1aaf75){if(_0x1aaf75[_0x65f6('0x22')](_0x480190)){for(var _0x13ee4b=0x0;_0x13ee4b<_0x1aaf75[_0x480190][_0x65f6('0x3d')];_0x13ee4b+=0x1){var _0x51497f=_0x1aaf75[_0x480190][_0x13ee4b]['queue'];if(_0x264e6c[_0x65f6('0x11')][_0x51497f]){if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4d')]){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x2c')]+=0x1;}if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4e')]){_0x264e6c[_0x65f6('0x11')][_0x51497f]['abandoned']+=0x1;}_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4f')])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;if(_0x13ee4b===_0x1aaf75[_0x480190][_0x65f6('0x3d')]-0x1){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x52')]||_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerabandonAt']||_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x53')])[_0x65f6('0x54')](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x26')]+=0x1;if(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercomplete']){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x27')]+=0x1;_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x29')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercompleteAt'])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerleaveAt']),_0x65f6('0x55'))||0x0;}}else{_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]||0x0;}}}}}}return _0x264e6c[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')]['initVoiceCallReports']=function(){var _0x40d0f7=this;return function(_0x15809e){clearVoiceCallReports(_0x40d0f7['outbound']);if(_0x15809e){for(var _0x758e80=0x0;_0x758e80<_0x15809e[_0x65f6('0x3d')];_0x758e80+=0x1){_0x40d0f7['outbound'][_0x65f6('0x26')]+=0x1;_0x40d0f7['outbound'][_0x65f6('0x51')]+=_0x15809e[_0x758e80]['duration'];if(_0x15809e[_0x758e80][_0x65f6('0x56')]===_0x65f6('0x57')){_0x40d0f7['outbound'][_0x65f6('0x27')]+=0x1;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x28')]+=_0x15809e[_0x758e80][_0x65f6('0x59')]-_0x15809e[_0x758e80][_0x65f6('0x5a')]||0x0;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x29')]+=_0x15809e[_0x758e80][_0x65f6('0x5a')];}}}return _0x40d0f7[_0x65f6('0x58')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x5b')]=function(){var _0x574d84=this;return function(_0x10a661){if(_0x10a661){freeIsNotKey(_0x10a661,_0x574d84[_0x65f6('0x5c')],_0x65f6('0x3e'));for(var _0x219e42=0x0,_0x5694f9={};_0x219e42<_0x10a661[_0x65f6('0x3d')];_0x219e42+=0x1){_0x5694f9=_0x10a661[_0x219e42];if(_[_0x65f6('0x3f')](_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]])){_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]]=new Campaign(_0x5694f9);}else{_0x574d84['mergeFromDatabase'](_0x574d84[_0x65f6('0x5c')][_0x5694f9[_0x65f6('0x3e')]],_0x5694f9);_0x574d84['campaigns'][_0x5694f9['name']][_0x65f6('0x5d')]=_0x5694f9[_0x65f6('0x5e')]?_0x5694f9['SquareProject'][_0x65f6('0x3e')]:undefined;}}}return _0x574d84[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')]['initVoiceExtensions']=function(){var _0x1348ec=this;return function(_0x246510){if(_0x246510){freeIsNotKey(_0x246510,_0x1348ec['voiceExtensions'],'id');for(var _0x36b8de=0x0,_0x504b39={};_0x36b8de<_0x246510[_0x65f6('0x3d')];_0x36b8de+=0x1){_0x504b39=_0x246510[_0x36b8de];if(_['isUndefined'](_0x1348ec['voiceExtensions'][_0x504b39['id']])){_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']]=new VoiceExtension(_0x504b39);}else{_0x1348ec[_0x65f6('0x3a')](_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']],_0x504b39);}}}return _0x1348ec[_0x65f6('0x5f')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x60')]=function(){var _0x1ac46f=this;return function(_0x1f4e2c){clearCampaigns(_0x1ac46f['campaigns']);for(var _0x494904=0x0;_0x494904<_0x1f4e2c[_0x65f6('0x3d')];_0x494904+=0x1){_['merge'](_0x1ac46f[_0x65f6('0x5c')][_0x1f4e2c[_0x494904][_0x65f6('0x3e')]],_0x1f4e2c[_0x494904]);}return _0x1ac46f[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x61')]=function(){var _0x56bd9d=this;return function(_0x398cac){if(_0x398cac){freeIsNotKey(_0x398cac,_0x56bd9d[_0x65f6('0x20')],'id');for(var _0x14c908=0x0,_0x576ecd={};_0x14c908<_0x398cac[_0x65f6('0x3d')];_0x14c908+=0x1){_0x576ecd=_0x398cac[_0x14c908];if(_[_0x65f6('0x3f')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']])){_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']]=new FaxAccount(_0x576ecd);}else{_0x56bd9d[_0x65f6('0x3a')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']],_0x576ecd);}}}return _0x56bd9d['faxAccounts'];};};Realtime['prototype'][_0x65f6('0x62')]=function(){var _0x10d744=this;return function(_0x10c916){if(_0x10c916){freeIsNotKey(_0x10c916,_0x10d744[_0x65f6('0x11')],'name');for(var _0x4bda86=0x0,_0x336076={};_0x4bda86<_0x10c916[_0x65f6('0x3d')];_0x4bda86+=0x1){_0x336076=_0x10c916[_0x4bda86];if(_[_0x65f6('0x3f')](_0x10d744[_0x65f6('0x11')][_0x336076[_0x65f6('0x3e')]])){_0x10d744[_0x65f6('0x11')][_0x336076['name']]=new VoiceQueue(_0x336076);}else{_0x10d744['mergeFromDatabase'](_0x10d744['voiceQueues'][_0x336076[_0x65f6('0x3e')]],_0x336076);}}}return _0x10d744[_0x65f6('0x11')];};};module[_0x65f6('0x63')]=Realtime;
\ No newline at end of file
+var _0x6b1b=['ivrTotalCallsDays','ivrAnswerCallsDay','answered','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','isUndefined','initTelephones','telephones','length','initTrunks','trunks','initVoiceQueues','voiceQueues','initTriggers','triggers','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initServicenowAccounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','uniqueid','queuecallerexit','unmanaged','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','queuecallerabandonAt','queuecallerexitAt','seconds','queuecallercompleteAt','diff','initVoiceCallReports','outbound','duration','disposition','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','faxAccounts','exports','lodash','moment','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','../model/freshsalesAccount','agents','campaigns','templates','voiceExtensions','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','mapKeys','format','hasOwnProperty','isNil','interface','SIP/%s','name','total','sumHoldTime','sumBillable','isEmpty'];(function(_0x39321e,_0x38a59c){var _0x27d3c8=function(_0x5cbeec){while(--_0x5cbeec){_0x39321e['push'](_0x39321e['shift']());}};_0x27d3c8(++_0x38a59c);}(_0x6b1b,0x1e7));var _0xb6b1=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x6b1b[_0xf50820];return _0x2a9b10;};'use strict';var util=require('util');var _=require(_0xb6b1('0x0'));var moment=require(_0xb6b1('0x1'));var Agent=require(_0xb6b1('0x2'));var Telephone=require('../model/telephone');var Trunk=require(_0xb6b1('0x3'));var VoiceQueue=require(_0xb6b1('0x4'));var Trigger=require(_0xb6b1('0x5'));var Template=require(_0xb6b1('0x6'));var Campaign=require(_0xb6b1('0x7'));var VoiceExtension=require(_0xb6b1('0x8'));var ZendeskAccount=require(_0xb6b1('0x9'));var SalesforceAccount=require(_0xb6b1('0xa'));var FreshdeskAccount=require(_0xb6b1('0xb'));var SugarcrmAccount=require(_0xb6b1('0xc'));var ZohoAccount=require(_0xb6b1('0xd'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xb6b1('0xe'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xb6b1('0xf'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xb6b1('0x10')]={};this['telephones']={};this['trunks']={};this['voiceQueues']={};this['triggers']={};this[_0xb6b1('0x11')]={};this[_0xb6b1('0x12')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xb6b1('0x13')]={};this['channels']={};this['queueChannels']={};this[_0xb6b1('0x14')]={};this[_0xb6b1('0x15')]={};this[_0xb6b1('0x16')]={};this[_0xb6b1('0x17')]={};this[_0xb6b1('0x18')]={};this[_0xb6b1('0x19')]={};this[_0xb6b1('0x1a')]={};this[_0xb6b1('0x1b')]={};this[_0xb6b1('0x1c')]={};this[_0xb6b1('0x1d')]={};this[_0xb6b1('0x1e')]={};this[_0xb6b1('0x1f')]={};this['freshsalesAccounts']={};this['faxAccounts']={};};function freeIsNotKey(_0x513207,_0x51f25f,_0xee229d){var _0x12c595=_[_0xb6b1('0x20')](_0x513207,function(_0x2b72e5,_0x32e395){return _0x2b72e5[_0xee229d];});for(var _0x51fb33 in _0x51f25f){if(_0x51f25f['hasOwnProperty'](_0x51fb33)){if(!_0x12c595[_0x51fb33]){delete _0x51f25f[_0x51fb33];}}}}function freeIsNotKeySip(_0x581e28,_0x1bdf63){var _0x15456d=_[_0xb6b1('0x20')](_0x581e28,function(_0x11e8ae,_0x45d9e6){return util[_0xb6b1('0x21')]('SIP/%s',_0x11e8ae['name']);});for(var _0x43312e in _0x1bdf63){if(_0x1bdf63[_0xb6b1('0x22')](_0x43312e)){if(!_0x15456d[_0x43312e]){delete _0x1bdf63[_0x43312e];}}}}function freeIsNotKeyAgent(_0x5ce41c,_0x5ced4c){var _0xfc247a=_['mapKeys'](_0x5ce41c,function(_0x509c55,_0x232157){var _0x2086ea=_[_0xb6b1('0x23')](_0x509c55[_0xb6b1('0x24')])?util[_0xb6b1('0x21')](_0xb6b1('0x25'),_0x509c55[_0xb6b1('0x26')]):_0x509c55[_0xb6b1('0x24')];return _0x2086ea;});for(var _0x472585 in _0x5ced4c){if(_0x5ced4c[_0xb6b1('0x22')](_0x472585)){if(!_0xfc247a[_0x472585]){delete _0x5ced4c[_0x472585];}}}}function clearVoiceCallReports(_0x5069cd){_0x5069cd[_0xb6b1('0x27')]=0x0;_0x5069cd['answered']=0x0;_0x5069cd[_0xb6b1('0x28')]=0x0;_0x5069cd['sumDuration']=0x0;_0x5069cd[_0xb6b1('0x29')]=0x0;}function clearCampaigns(_0x48c1d2){if(!_[_0xb6b1('0x2a')](_0x48c1d2)){for(var _0x387603 in _0x48c1d2){if(_0x48c1d2[_0xb6b1('0x22')](_0x387603)){_0x48c1d2[_0x387603][_0xb6b1('0x2b')]=0x0;_0x48c1d2[_0x387603][_0xb6b1('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x188627){if(!_[_0xb6b1('0x2a')](_0x188627)){for(var _0xd3c6da in _0x188627){if(_0x188627[_0xb6b1('0x22')](_0xd3c6da)){_0x188627[_0xd3c6da]['total']=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x2d')]=0x0;_0x188627[_0xd3c6da]['unmanaged']=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x2e')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x28')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x2f')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x29')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x30')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x31')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x32')]=0x0;_0x188627[_0xd3c6da]['outboundCongestionCallsDay']=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x33')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x34')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x35')]=0x0;_0x188627[_0xd3c6da]['outboundDropCallsDayCallersExit']=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x36')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x37')]=0x0;_0x188627[_0xd3c6da]['outboundRejectCallsDay']=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x38')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x30')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x39')]=0x0;_0x188627[_0xd3c6da][_0xb6b1('0x3a')]=!![];}}}}Realtime[_0xb6b1('0x3b')][_0xb6b1('0x3c')]=function(_0x4d29e4,_0x3cca75){for(var _0xff1d43 in _0x3cca75){if(_0x4d29e4['hasOwnProperty'](_0xff1d43)){_0x4d29e4[_0xff1d43]=_0x3cca75[_0xff1d43];}}};Realtime[_0xb6b1('0x3b')]['initAgents']=function(){var _0x448382=this;return function(_0x242ec3){if(_0x242ec3){freeIsNotKeyAgent(_0x242ec3,_0x448382[_0xb6b1('0x10')]);for(var _0x4cad81=0x0,_0x127481={},_0x2dd9e2={};_0x4cad81<_0x242ec3['length'];_0x4cad81+=0x1){_0x127481=_0x242ec3[_0x4cad81];var _0x203d8e=_[_0xb6b1('0x23')](_0x127481[_0xb6b1('0x24')])?util[_0xb6b1('0x21')]('SIP/%s',_0x127481['name']):_0x127481['interface'];if(_[_0xb6b1('0x3d')](_0x448382[_0xb6b1('0x10')][_0x203d8e])){_0x448382[_0xb6b1('0x10')][_0x203d8e]=new Agent(_0x127481);}else{_0x448382[_0xb6b1('0x3c')](_0x448382[_0xb6b1('0x10')][_0x203d8e],_0x127481);}}}return _0x448382[_0xb6b1('0x10')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x3e')]=function(){var _0x206008=this;return function(_0x25d6a2){if(_0x25d6a2){freeIsNotKeySip(_0x25d6a2,_0x206008[_0xb6b1('0x3f')]);for(var _0x1bc661=0x0,_0x5b8a57={},_0x17f529={};_0x1bc661<_0x25d6a2[_0xb6b1('0x40')];_0x1bc661+=0x1){_0x5b8a57=_0x25d6a2[_0x1bc661];if(_[_0xb6b1('0x3d')](_0x206008[_0xb6b1('0x3f')][util[_0xb6b1('0x21')](_0xb6b1('0x25'),_0x5b8a57[_0xb6b1('0x26')])])){_0x206008[_0xb6b1('0x3f')][util[_0xb6b1('0x21')](_0xb6b1('0x25'),_0x5b8a57[_0xb6b1('0x26')])]=new Telephone(_0x5b8a57);}else{_0x206008['mergeFromDatabase'](_0x206008[_0xb6b1('0x3f')][util[_0xb6b1('0x21')](_0xb6b1('0x25'),_0x5b8a57[_0xb6b1('0x26')])],_0x5b8a57);}}}return _0x206008[_0xb6b1('0x3f')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x41')]=function(){var _0x22be21=this;return function(_0x51e68c){if(_0x51e68c){freeIsNotKeySip(_0x51e68c,_0x22be21['trunks']);for(var _0x46070c=0x0,_0x19853f={},_0x1f43fe={};_0x46070c<_0x51e68c['length'];_0x46070c+=0x1){_0x19853f=_0x51e68c[_0x46070c];if(_[_0xb6b1('0x3d')](_0x22be21[_0xb6b1('0x42')][util[_0xb6b1('0x21')](_0xb6b1('0x25'),_0x19853f[_0xb6b1('0x26')])])){_0x22be21[_0xb6b1('0x42')][util[_0xb6b1('0x21')](_0xb6b1('0x25'),_0x19853f['name'])]=new Trunk(_0x19853f);}else{_0x22be21[_0xb6b1('0x3c')](_0x22be21['trunks'][util[_0xb6b1('0x21')](_0xb6b1('0x25'),_0x19853f[_0xb6b1('0x26')])],_0x19853f);}}}return _0x22be21[_0xb6b1('0x42')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x43')]=function(){var _0x571214=this;return function(_0x1d1c92){if(_0x1d1c92){freeIsNotKey(_0x1d1c92,_0x571214[_0xb6b1('0x44')],'name');for(var _0x27bf19=0x0,_0x4ff402={},_0x2f64ab={};_0x27bf19<_0x1d1c92[_0xb6b1('0x40')];_0x27bf19+=0x1){_0x4ff402=_0x1d1c92[_0x27bf19];if(_[_0xb6b1('0x3d')](_0x571214[_0xb6b1('0x44')][_0x4ff402[_0xb6b1('0x26')]])){_0x571214[_0xb6b1('0x44')][_0x4ff402[_0xb6b1('0x26')]]=new VoiceQueue(_0x4ff402);}else{_0x571214[_0xb6b1('0x3c')](_0x571214[_0xb6b1('0x44')][_0x4ff402['name']],_0x4ff402);}}}return _0x571214['voiceQueues'];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x45')]=function(){var _0x5959ca=this;return function(_0x29cf46){if(_0x29cf46){freeIsNotKey(_0x29cf46,_0x5959ca[_0xb6b1('0x46')],'id');for(var _0x6f7b41=0x0,_0x1a95cf={},_0x7cebdc={};_0x6f7b41<_0x29cf46['length'];_0x6f7b41+=0x1){_0x1a95cf=_0x29cf46[_0x6f7b41];if(_[_0xb6b1('0x3d')](_0x5959ca[_0xb6b1('0x46')][_0x1a95cf['id']])){_0x5959ca[_0xb6b1('0x46')][_0x1a95cf['id']]=new Trigger(_0x1a95cf);}else{_0x5959ca[_0xb6b1('0x3c')](_0x5959ca['triggers'][_0x1a95cf['id']],_0x1a95cf);}}}return _0x5959ca['triggers'];};};Realtime[_0xb6b1('0x3b')]['initTemplates']=function(){var _0x2be9e7=this;return function(_0x3f09dc){if(_0x3f09dc){freeIsNotKey(_0x3f09dc,_0x2be9e7['templates'],'id');for(var _0x1de68b=0x0,_0x48d4ff={},_0x2191f0={};_0x1de68b<_0x3f09dc[_0xb6b1('0x40')];_0x1de68b+=0x1){_0x48d4ff=_0x3f09dc[_0x1de68b];if(_[_0xb6b1('0x3d')](_0x2be9e7[_0xb6b1('0x12')][_0x48d4ff['id']])){_0x2be9e7[_0xb6b1('0x12')][_0x48d4ff['id']]=new Template(_0x48d4ff);}else{_0x2be9e7[_0xb6b1('0x3c')](_0x2be9e7[_0xb6b1('0x12')][_0x48d4ff['id']],_0x48d4ff);}}}return _0x2be9e7[_0xb6b1('0x12')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x47')]=function(){var _0x4a9c9b=this;return function(_0x144cc7){if(_0x144cc7){freeIsNotKey(_0x144cc7,_0x4a9c9b[_0xb6b1('0x17')],'id');for(var _0x367679=0x0,_0x39c0d9={},_0x46c4ef={};_0x367679<_0x144cc7[_0xb6b1('0x40')];_0x367679+=0x1){_0x39c0d9=_0x144cc7[_0x367679];if(_[_0xb6b1('0x3d')](_0x4a9c9b[_0xb6b1('0x17')][_0x39c0d9['id']])){_0x4a9c9b[_0xb6b1('0x17')][_0x39c0d9['id']]=new ZendeskAccount(_0x39c0d9);}else{_0x4a9c9b['mergeFromDatabase'](_0x4a9c9b[_0xb6b1('0x17')][_0x39c0d9['id']],_0x39c0d9);}}}return _0x4a9c9b['zendeskAccounts'];};};Realtime['prototype'][_0xb6b1('0x48')]=function(){var _0x2123f5=this;return function(_0x5be7bf){if(_0x5be7bf){freeIsNotKey(_0x5be7bf,_0x2123f5[_0xb6b1('0x18')],'id');for(var _0x323231=0x0,_0x3b218a={},_0x4e8d80={};_0x323231<_0x5be7bf[_0xb6b1('0x40')];_0x323231+=0x1){_0x3b218a=_0x5be7bf[_0x323231];if(_['isUndefined'](_0x2123f5['salesforceAccounts'][_0x3b218a['id']])){_0x2123f5[_0xb6b1('0x18')][_0x3b218a['id']]=new SalesforceAccount(_0x3b218a);}else{_0x2123f5[_0xb6b1('0x3c')](_0x2123f5['salesforceAccounts'][_0x3b218a['id']],_0x3b218a);}}}return _0x2123f5['salesforceAccounts'];};};Realtime['prototype'][_0xb6b1('0x49')]=function(){var _0x5da982=this;return function(_0x54c88f){if(_0x54c88f){freeIsNotKey(_0x54c88f,_0x5da982['freshdeskAccounts'],'id');for(var _0x37591c=0x0,_0x345849={},_0x15aefa={};_0x37591c<_0x54c88f[_0xb6b1('0x40')];_0x37591c+=0x1){_0x345849=_0x54c88f[_0x37591c];if(_[_0xb6b1('0x3d')](_0x5da982[_0xb6b1('0x1a')][_0x345849['id']])){_0x5da982['freshdeskAccounts'][_0x345849['id']]=new FreshdeskAccount(_0x345849);}else{_0x5da982[_0xb6b1('0x3c')](_0x5da982[_0xb6b1('0x1a')][_0x345849['id']],_0x345849);}}}return _0x5da982['freshdeskAccounts'];};};Realtime['prototype'][_0xb6b1('0x4a')]=function(){var _0x15acdd=this;return function(_0x575823){if(_0x575823){freeIsNotKey(_0x575823,_0x15acdd['zohoAccounts'],'id');for(var _0x167a03=0x0,_0x484afc={},_0x463482={};_0x167a03<_0x575823[_0xb6b1('0x40')];_0x167a03+=0x1){_0x484afc=_0x575823[_0x167a03];if(_['isUndefined'](_0x15acdd[_0xb6b1('0x1b')][_0x484afc['id']])){_0x15acdd[_0xb6b1('0x1b')][_0x484afc['id']]=new ZohoAccount(_0x484afc);}else{_0x15acdd[_0xb6b1('0x3c')](_0x15acdd[_0xb6b1('0x1b')][_0x484afc['id']],_0x484afc);}}}return _0x15acdd[_0xb6b1('0x1b')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x4b')]=function(){var _0x35aae0=this;return function(_0x10ef87){if(_0x10ef87){freeIsNotKey(_0x10ef87,_0x35aae0[_0xb6b1('0x1c')],'id');for(var _0x4de50b=0x0,_0x1d6dc1={},_0xe4e416={};_0x4de50b<_0x10ef87[_0xb6b1('0x40')];_0x4de50b+=0x1){_0x1d6dc1=_0x10ef87[_0x4de50b];if(_[_0xb6b1('0x3d')](_0x35aae0['deskAccounts'][_0x1d6dc1['id']])){_0x35aae0[_0xb6b1('0x1c')][_0x1d6dc1['id']]=new DeskAccount(_0x1d6dc1);}else{_0x35aae0[_0xb6b1('0x3c')](_0x35aae0[_0xb6b1('0x1c')][_0x1d6dc1['id']],_0x1d6dc1);}}}return _0x35aae0[_0xb6b1('0x1c')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x4c')]=function(){var _0x122796=this;return function(_0x4e34ef){if(_0x4e34ef){freeIsNotKey(_0x4e34ef,_0x122796['sugarcrmAccounts'],'id');for(var _0x18d264=0x0,_0x51c2ed={},_0x2e91fa={};_0x18d264<_0x4e34ef[_0xb6b1('0x40')];_0x18d264+=0x1){_0x51c2ed=_0x4e34ef[_0x18d264];if(_[_0xb6b1('0x3d')](_0x122796['sugarcrmAccounts'][_0x51c2ed['id']])){_0x122796[_0xb6b1('0x19')][_0x51c2ed['id']]=new SugarcrmAccount(_0x51c2ed);}else{_0x122796[_0xb6b1('0x3c')](_0x122796[_0xb6b1('0x19')][_0x51c2ed['id']],_0x51c2ed);}}}return _0x122796[_0xb6b1('0x19')];};};Realtime[_0xb6b1('0x3b')]['initVtigerAccounts']=function(){var _0x4ddcf3=this;return function(_0x11e94e){if(_0x11e94e){freeIsNotKey(_0x11e94e,_0x4ddcf3[_0xb6b1('0x1d')],'id');for(var _0x872397=0x0,_0x28b4c9={},_0x3824de={};_0x872397<_0x11e94e[_0xb6b1('0x40')];_0x872397+=0x1){_0x28b4c9=_0x11e94e[_0x872397];if(_[_0xb6b1('0x3d')](_0x4ddcf3[_0xb6b1('0x1d')][_0x28b4c9['id']])){_0x4ddcf3[_0xb6b1('0x1d')][_0x28b4c9['id']]=new VtigerAccount(_0x28b4c9);}else{_0x4ddcf3[_0xb6b1('0x3c')](_0x4ddcf3[_0xb6b1('0x1d')][_0x28b4c9['id']],_0x28b4c9);}}}return _0x4ddcf3[_0xb6b1('0x1d')];};};Realtime['prototype'][_0xb6b1('0x4d')]=function(){var _0x49ace7=this;return function(_0x158af7){if(_0x158af7){freeIsNotKey(_0x158af7,_0x49ace7[_0xb6b1('0x1e')],'id');for(var _0xc831ce=0x0,_0x5720bf={},_0x2239b2={};_0xc831ce<_0x158af7['length'];_0xc831ce+=0x1){_0x5720bf=_0x158af7[_0xc831ce];if(_['isUndefined'](_0x49ace7[_0xb6b1('0x1e')][_0x5720bf['id']])){_0x49ace7['servicenowAccounts'][_0x5720bf['id']]=new ServicenowAccount(_0x5720bf);}else{_0x49ace7[_0xb6b1('0x3c')](_0x49ace7[_0xb6b1('0x1e')][_0x5720bf['id']],_0x5720bf);}}}return _0x49ace7['servicenowAccounts'];};};Realtime[_0xb6b1('0x3b')]['initDynamics365Accounts']=function(){var _0x1a40c7=this;return function(_0x43e884){if(_0x43e884){freeIsNotKey(_0x43e884,_0x1a40c7[_0xb6b1('0x1f')],'id');for(var _0x53a85e=0x0,_0x309982={},_0x4ef26a={};_0x53a85e<_0x43e884[_0xb6b1('0x40')];_0x53a85e+=0x1){_0x309982=_0x43e884[_0x53a85e];if(_[_0xb6b1('0x3d')](_0x1a40c7[_0xb6b1('0x1f')][_0x309982['id']])){_0x1a40c7[_0xb6b1('0x1f')][_0x309982['id']]=new Dynamics365Account(_0x309982);}else{_0x1a40c7['mergeFromDatabase'](_0x1a40c7[_0xb6b1('0x1f')][_0x309982['id']],_0x309982);}}}return _0x1a40c7[_0xb6b1('0x1f')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x4e')]=function(){var _0x381793=this;return function(_0x2aa294){if(_0x2aa294){freeIsNotKey(_0x2aa294,_0x381793['freshsalesAccounts'],'id');for(var _0x168c21=0x0,_0x26fbd8={},_0x9fa359={};_0x168c21<_0x2aa294[_0xb6b1('0x40')];_0x168c21+=0x1){_0x26fbd8=_0x2aa294[_0x168c21];if(_['isUndefined'](_0x381793[_0xb6b1('0x4f')][_0x26fbd8['id']])){_0x381793[_0xb6b1('0x4f')][_0x26fbd8['id']]=new FreshsalesAccount(_0x26fbd8);}else{_0x381793['mergeFromDatabase'](_0x381793['freshsalesAccounts'][_0x26fbd8['id']],_0x26fbd8);}}}return _0x381793['freshsalesAccounts'];};};Realtime['prototype'][_0xb6b1('0x50')]=function(){var _0x439b23=this;return function(_0x17ce08){for(var _0xc203ce=0x0;_0xc203ce<_0x17ce08[_0xb6b1('0x40')];_0xc203ce+=0x1){_[_0xb6b1('0x51')](_0x439b23[_0xb6b1('0x44')][_0x17ce08[_0xc203ce]['name']],_0x17ce08[_0xc203ce]);}return _0x439b23[_0xb6b1('0x44')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x15a64f=this;return function(_0x28213e){clearVoiceQueues(_0x15a64f['voiceQueues']);if(_0x28213e){_0x28213e=_[_0xb6b1('0x52')](_0x28213e,_0xb6b1('0x53'));for(var _0x60f433 in _0x28213e){if(_0x28213e[_0xb6b1('0x22')](_0x60f433)){var _0x26a342={};for(var _0x5516c7=0x0;_0x5516c7<_0x28213e[_0x60f433][_0xb6b1('0x40')];_0x5516c7+=0x1){var _0x3af3e2=_0x28213e[_0x60f433][_0x5516c7]['queue'];if(_0x15a64f['voiceQueues'][_0x3af3e2]){if(_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x54')]){_0x15a64f[_0xb6b1('0x44')][_0x3af3e2][_0xb6b1('0x55')]+=0x1;}if(_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x56')]){_0x15a64f[_0xb6b1('0x44')][_0x3af3e2][_0xb6b1('0x2e')]+=0x1;}_0x15a64f[_0xb6b1('0x44')][_0x3af3e2][_0xb6b1('0x28')]+=moment(_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x57')])['diff'](moment(_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x58')]),'seconds')||0x0;if(_0x5516c7===_0x28213e[_0x60f433][_0xb6b1('0x40')]-0x1){_0x15a64f[_0xb6b1('0x44')][_0x3af3e2][_0xb6b1('0x2f')]+=moment(_0x28213e[_0x60f433][_0x5516c7]['queuecallercompleteAt']||_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x59')]||_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x5a')])['diff'](moment(_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x58')]),_0xb6b1('0x5b'))||0x0;_0x15a64f['voiceQueues'][_0x3af3e2][_0xb6b1('0x27')]+=0x1;if(_0x28213e[_0x60f433][_0x5516c7]['queuecallercomplete']){_0x15a64f[_0xb6b1('0x44')][_0x3af3e2]['answered']+=0x1;_0x15a64f[_0xb6b1('0x44')][_0x3af3e2][_0xb6b1('0x29')]+=moment(_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x5c')])[_0xb6b1('0x5d')](moment(_0x28213e[_0x60f433][_0x5516c7][_0xb6b1('0x57')]),'seconds')||0x0;}}else{_0x15a64f[_0xb6b1('0x44')][_0x3af3e2][_0xb6b1('0x2f')]+=_0x15a64f[_0xb6b1('0x44')][_0x3af3e2][_0xb6b1('0x28')]||0x0;}}}}}}return _0x15a64f[_0xb6b1('0x44')];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x5e')]=function(){var _0x1936d4=this;return function(_0x8e1139){clearVoiceCallReports(_0x1936d4[_0xb6b1('0x5f')]);if(_0x8e1139){for(var _0x326133=0x0;_0x326133<_0x8e1139[_0xb6b1('0x40')];_0x326133+=0x1){_0x1936d4['outbound'][_0xb6b1('0x27')]+=0x1;_0x1936d4[_0xb6b1('0x5f')]['sumDuration']+=_0x8e1139[_0x326133][_0xb6b1('0x60')];if(_0x8e1139[_0x326133][_0xb6b1('0x61')]==='ANSWERED'){_0x1936d4[_0xb6b1('0x5f')]['answered']+=0x1;_0x1936d4[_0xb6b1('0x5f')]['sumHoldTime']+=_0x8e1139[_0x326133][_0xb6b1('0x60')]-_0x8e1139[_0x326133]['billableseconds']||0x0;_0x1936d4['outbound'][_0xb6b1('0x29')]+=_0x8e1139[_0x326133][_0xb6b1('0x62')];}}}return _0x1936d4['outbound'];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x63')]=function(){var _0x12ebb3=this;return function(_0xac8b8a){if(_0xac8b8a){freeIsNotKey(_0xac8b8a,_0x12ebb3[_0xb6b1('0x11')],_0xb6b1('0x26'));for(var _0x3e7949=0x0,_0x46e4e1={};_0x3e7949<_0xac8b8a[_0xb6b1('0x40')];_0x3e7949+=0x1){_0x46e4e1=_0xac8b8a[_0x3e7949];if(_[_0xb6b1('0x3d')](_0x12ebb3[_0xb6b1('0x11')][_0x46e4e1[_0xb6b1('0x26')]])){_0x12ebb3['campaigns'][_0x46e4e1[_0xb6b1('0x26')]]=new Campaign(_0x46e4e1);}else{_0x12ebb3[_0xb6b1('0x3c')](_0x12ebb3[_0xb6b1('0x11')][_0x46e4e1[_0xb6b1('0x26')]],_0x46e4e1);_0x12ebb3['campaigns'][_0x46e4e1[_0xb6b1('0x26')]][_0xb6b1('0x64')]=_0x46e4e1[_0xb6b1('0x65')]?_0x46e4e1[_0xb6b1('0x65')][_0xb6b1('0x26')]:undefined;}}}return _0x12ebb3[_0xb6b1('0x11')];};};Realtime['prototype'][_0xb6b1('0x66')]=function(){var _0x2c0509=this;return function(_0xe96200){if(_0xe96200){freeIsNotKey(_0xe96200,_0x2c0509[_0xb6b1('0x13')],'id');for(var _0x176461=0x0,_0x101a04={};_0x176461<_0xe96200[_0xb6b1('0x40')];_0x176461+=0x1){_0x101a04=_0xe96200[_0x176461];if(_[_0xb6b1('0x3d')](_0x2c0509[_0xb6b1('0x13')][_0x101a04['id']])){_0x2c0509[_0xb6b1('0x13')][_0x101a04['id']]=new VoiceExtension(_0x101a04);}else{_0x2c0509[_0xb6b1('0x3c')](_0x2c0509[_0xb6b1('0x13')][_0x101a04['id']],_0x101a04);}}}return _0x2c0509['voiceExtensions'];};};Realtime[_0xb6b1('0x3b')][_0xb6b1('0x67')]=function(){var _0x10d789=this;return function(_0x4175f7){clearCampaigns(_0x10d789[_0xb6b1('0x11')]);for(var _0x32b89e=0x0;_0x32b89e<_0x4175f7[_0xb6b1('0x40')];_0x32b89e+=0x1){_[_0xb6b1('0x51')](_0x10d789['campaigns'][_0x4175f7[_0x32b89e][_0xb6b1('0x26')]],_0x4175f7[_0x32b89e]);}return _0x10d789[_0xb6b1('0x11')];};};Realtime[_0xb6b1('0x3b')]['initFaxAccounts']=function(){var _0x8f27ea=this;return function(_0x5ed18d){if(_0x5ed18d){freeIsNotKey(_0x5ed18d,_0x8f27ea['faxAccounts'],'id');for(var _0x13f438=0x0,_0x320c96={},_0xa7b8d2={};_0x13f438<_0x5ed18d[_0xb6b1('0x40')];_0x13f438+=0x1){_0x320c96=_0x5ed18d[_0x13f438];if(_[_0xb6b1('0x3d')](_0x8f27ea[_0xb6b1('0x68')][_0x320c96['id']])){_0x8f27ea['faxAccounts'][_0x320c96['id']]=new FaxAccount(_0x320c96);}else{_0x8f27ea[_0xb6b1('0x3c')](_0x8f27ea[_0xb6b1('0x68')][_0x320c96['id']],_0x320c96);}}}return _0x8f27ea[_0xb6b1('0x68')];};};module[_0xb6b1('0x69')]=Realtime;
\ No newline at end of file
diff --git a/server/services/ami/realtime/utils.js b/server/services/ami/realtime/utils.js
deleted file mode 100644 (file)
index bf2d631..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x4409=['assign','hasOwnProperty','mergeDBDataToRealtime'];(function(_0x1c99cf,_0x38cb27){var _0x55ce14=function(_0xd660ca){while(--_0xd660ca){_0x1c99cf['push'](_0x1c99cf['shift']());}};_0x55ce14(++_0x38cb27);}(_0x4409,0x117));var _0x9440=function(_0x40f6a0,_0x11c0cc){_0x40f6a0=_0x40f6a0-0x0;var _0x14d898=_0x4409[_0x40f6a0];return _0x14d898;};'use strict';function mergeDBDataToRealtime(_0x8fbe0e,_0x3efebe){var _0x2a4ed5=Object[_0x9440('0x0')]({},_0x8fbe0e);for(var _0x14912d in _0x3efebe){if(_0x2a4ed5[_0x9440('0x1')](_0x14912d)){_0x2a4ed5[_0x14912d]=_0x3efebe[_0x14912d];}}return _0x2a4ed5;}exports[_0x9440('0x2')]=mergeDBDataToRealtime;
\ No newline at end of file
index cea2490..4c51604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf79=['transfererlinkedid','lodash','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./userReport','realtime','agents','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','name','isNil','telephones','interface','format','SIP/%s','length','connectedlinenum','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','create','getAgentByInternal','keys','getCallType','channel','split','calleridnum','outbound','destination','exten','type','dialer','lastapplication','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','ANSWERED','transfers','linkedid','transfereelinkedid','blindTransfer','UserId','membername','monitor','monitors','monitorFilename','createdAt','calleridname','connectedlinename','xcally-motion-dialer','voiceAgentReport','isArray','forEach','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf'];(function(_0x39dd1b,_0x79eef5){var _0x57d9f5=function(_0x2cfd5c){while(--_0x2cfd5c){_0x39dd1b['push'](_0x39dd1b['shift']());}};_0x57d9f5(++_0x79eef5);}(_0xbf79,0x171));var _0x9bf7=function(_0x37d676,_0x4c3d12){_0x37d676=_0x37d676-0x0;var _0x1c0608=_0xbf79[_0x37d676];return _0x1c0608;};'use strict';var _=require(_0x9bf7('0x0'));var moment=require('moment');var util=require(_0x9bf7('0x1'));var config=require(_0x9bf7('0x2'));var ami=require(_0x9bf7('0x3'));var RpcVoiceAgentReport=require(_0x9bf7('0x4'));var RpcVoiceCallReport=require(_0x9bf7('0x5'));var RpcVoiceDialReport=require(_0x9bf7('0x6'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0x9bf7('0x7'));var RpcVoiceRecording=require(_0x9bf7('0x8'));var RpcVoiceTransferReport=require(_0x9bf7('0x9'));var VoiceQueueReport=require(_0x9bf7('0xa'));var VoiceCallReport=require(_0x9bf7('0xb'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x9bf7('0xc'));function Report(_0x48a204){this[_0x9bf7('0xd')]=_0x48a204;this[_0x9bf7('0xe')]=_0x48a204['agents'];this['telephones']=_0x48a204['telephones'];}Report['prototype']['sync']=function(_0x530d5d){var _0x32f147=new VoiceQueueReport(this['realtime']);var _0x1af4cd=new VoiceAgentReport(this['realtime']);var _0x1b51f3=new VoiceDialReport(this[_0x9bf7('0xd')]);var _0x3a375f=new VoiceCallReport(this[_0x9bf7('0xd')]);var _0x1d280c=new UserReport(this[_0x9bf7('0xd')]);if(config[_0x9bf7('0xf')]&&config[_0x9bf7('0xf')][_0x9bf7('0x10')]){ami['on'](_0x9bf7('0x11'),this[_0x9bf7('0x12')][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x14'),this[_0x9bf7('0x15')]['bind'](this));ami['on'](_0x9bf7('0x16'),this['voiceAgentReport'][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x17'),this[_0x9bf7('0x18')][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x19'),this['blindTransfer'][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x1a'),this[_0x9bf7('0x1b')]['bind'](this));}};Report[_0x9bf7('0x1c')][_0x9bf7('0x1d')]=function(_0x359697){var _0x23c427;_0x23c427=_[_0x9bf7('0x1e')](this['agents'],function(_0x9fe6e0){return _0x9fe6e0[_0x9bf7('0x1f')]==_0x359697||_0x9fe6e0[_0x9bf7('0x20')]==_0x359697;});if(_[_0x9bf7('0x21')](_0x23c427)){var _0x39a8af=_[_0x9bf7('0x1e')](this[_0x9bf7('0x22')],function(_0x191117){return _0x191117[_0x9bf7('0x1f')]==_0x359697||_0x191117['name']==_0x359697;});if(_0x39a8af){_0x23c427=_[_0x9bf7('0x1e')](this[_0x9bf7('0xe')],function(_0x46f936){return _0x46f936[_0x9bf7('0x23')]==util[_0x9bf7('0x24')](_0x9bf7('0x25'),_0x39a8af['name']);});}}return _0x23c427;};Report[_0x9bf7('0x1c')][_0x9bf7('0x12')]=function(_0x486157){for(var _0x46c5a2=0x0;_0x46c5a2<_0x486157[_0x9bf7('0x26')];_0x46c5a2+=0x1){var _0x1163fd=this[_0x9bf7('0x1d')](_0x486157[_0x46c5a2][_0x9bf7('0x27')]);if(_0x1163fd){_0x486157[_0x46c5a2]['accountcode']=_0x1163fd[_0x9bf7('0x1f')];_0x486157[_0x46c5a2][_0x9bf7('0x28')]=!![];_0x486157[_0x46c5a2][_0x9bf7('0x29')]=_0x1163fd['name'];_0x486157[_0x46c5a2][_0x9bf7('0x23')]=_[_0x9bf7('0x21')](_0x1163fd['interface'])?util['format']('SIP/%s',_0x1163fd[_0x9bf7('0x20')]):_0x1163fd[_0x9bf7('0x23')];if(_0x486157[_0x46c5a2][_0x9bf7('0x2a')]){_0x486157[_0x46c5a2][_0x9bf7('0x2b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x486157[_0x46c5a2]['queuecallerexit']){_0x486157[_0x46c5a2]['queuecallerexitAt']=moment()[_0x9bf7('0x24')](_0x9bf7('0x2c'));}RpcMemberReport[_0x9bf7('0x12')](_0x486157[_0x46c5a2]);}RpcVoiceQueueReport[_0x9bf7('0x2d')](_0x486157[_0x46c5a2]);}};function extractCalleridNumber(_0x1af95b){var _0x23c982=_0x1af95b['match'](/<(.*?)>/);return _0x23c982?_0x23c982[0x1]:_0x1af95b;}Report[_0x9bf7('0x1c')][_0x9bf7('0x2e')]=function(_0x3a0fe3){for(var _0x35ead4=0x0;_0x35ead4<Object[_0x9bf7('0x2f')](this[_0x9bf7('0xe')])[_0x9bf7('0x26')];_0x35ead4++){var _0x51eae4=Object[_0x9bf7('0x2f')](this[_0x9bf7('0xe')])[_0x35ead4];var _0x132dcd=this[_0x9bf7('0xe')][_0x51eae4];if(_0x132dcd[_0x9bf7('0x1f')]===Number(_0x3a0fe3))return _0x132dcd;}return null;};Report[_0x9bf7('0x1c')][_0x9bf7('0x30')]=function(_0x26db13){var _0x3a9f11=_0x26db13[_0x9bf7('0x31')][_0x9bf7('0x32')]('-')[0x0];var _0x7fb7eb=this[_0x9bf7('0xe')][_0x3a9f11];if(!_0x7fb7eb)_0x7fb7eb=this[_0x9bf7('0x2e')](_0x26db13[_0x9bf7('0x33')]);return!_0x7fb7eb?_0x9bf7('0x34'):'internal';};Report[_0x9bf7('0x1c')][_0x9bf7('0x15')]=function(_0x22c978){_0x22c978[_0x9bf7('0x35')]=_0x22c978[_0x9bf7('0x35')]||_0x22c978[_0x9bf7('0x36')];if(_0x22c978[_0x9bf7('0x37')]==_0x9bf7('0x38')){_0x22c978[_0x9bf7('0x39')]=_0x9bf7('0x3a');_0x22c978['lastdata']=_0x22c978[_0x9bf7('0x3a')];if(_0x22c978[_0x9bf7('0x3b')]==_0x9bf7('0x3c')){_0x22c978[_0x9bf7('0x1f')]='';_0x22c978['destination']=extractCalleridNumber(_0x22c978[_0x9bf7('0x3d')]);}else if(_0x22c978[_0x9bf7('0x3b')]==_0x9bf7('0x3e')){if(_0x22c978['destination']==_0x9bf7('0x3f')){_0x22c978['destination']=extractCalleridNumber(_0x22c978[_0x9bf7('0x40')]);_0x22c978['calleridnum']=_0x22c978[_0x9bf7('0x41')];_0x22c978['destinationchannel']=[_0x22c978[_0x9bf7('0x31')],_0x22c978[_0x9bf7('0x31')]=_0x22c978[_0x9bf7('0x42')]][0x0];_0x22c978[_0x9bf7('0x3d')]=_0x22c978[_0x9bf7('0x40')];}else{_0x22c978[_0x9bf7('0x35')]=_0x22c978[_0x9bf7('0x33')];_0x22c978['calleridnum']=_0x22c978[_0x9bf7('0x41')];if(_0x22c978['disposition']==_0x9bf7('0x43')){_0x22c978[_0x9bf7('0x1f')]=_0x22c978[_0x9bf7('0x27')];}else{_0x22c978[_0x9bf7('0x1f')]='';}}}}else{_0x22c978['callerid']=util[_0x9bf7('0x24')]('\x22%s\x22\x20<%s>',_0x22c978['calleridname'],_0x22c978[_0x9bf7('0x33')]);}if(RpcVoiceTransferReport[_0x9bf7('0x44')][_0x22c978['linkedid']]){var _0x393960=RpcVoiceTransferReport[_0x9bf7('0x44')][_0x22c978[_0x9bf7('0x45')]];_0x393960[_0x9bf7('0x46')]=_0x22c978['uniqueid'];RpcVoiceTransferReport[_0x9bf7('0x47')](_0x393960);delete RpcVoiceTransferReport[_0x9bf7('0x44')][_0x22c978[_0x9bf7('0x45')]];}if(_[_0x9bf7('0x21')](_0x22c978[_0x9bf7('0x37')])){_0x22c978[_0x9bf7('0x37')]=this[_0x9bf7('0x30')](_0x22c978);}if(_[_0x9bf7('0x21')](_0x22c978[_0x9bf7('0x48')])){var _0x41b03c=_0x22c978['channel'][_0x9bf7('0x32')]('-')[0x0];var _0x33793f=this[_0x9bf7('0xe')][_0x41b03c];if(!_0x33793f)_0x33793f=this[_0x9bf7('0x2e')](_0x22c978[_0x9bf7('0x1f')]);if(_0x33793f){_0x22c978[_0x9bf7('0x48')]=_0x33793f['id'];_0x22c978[_0x9bf7('0x49')]=_0x33793f['name'];}}RpcVoiceCallReport['create'](_0x22c978);if(_0x22c978[_0x9bf7('0x4a')]){for(var _0x587095=0x0;_0x587095<_0x22c978[_0x9bf7('0x4b')][_0x9bf7('0x26')];_0x587095+=0x1){_0x22c978[_0x9bf7('0x4c')]=_0x22c978[_0x9bf7('0x4b')][_0x587095]['filename'];_0x22c978[_0x9bf7('0x4d')]=_0x22c978[_0x9bf7('0x4b')][_0x587095]['createdAt'];if(_0x22c978[_0x9bf7('0x36')]=='xcally-motion-preview'){_0x22c978['calleridnum']=_0x22c978['connectedlinenum'];_0x22c978[_0x9bf7('0x4e')]=_0x22c978[_0x9bf7('0x4f')];_0x22c978[_0x9bf7('0x27')]=_0x22c978[_0x9bf7('0x1f')];_0x22c978['connectedlinename']=_0x22c978[_0x9bf7('0x49')];_0x22c978[_0x9bf7('0x36')]=_0x22c978['originatecalleridnum'];}else if(_0x22c978[_0x9bf7('0x36')]==_0x9bf7('0x50')){_0x22c978[_0x9bf7('0x33')]=_0x22c978[_0x9bf7('0x35')];_0x22c978[_0x9bf7('0x36')]=_0x22c978[_0x9bf7('0x41')];}RpcVoiceRecording['create'](_0x22c978);}}};Report[_0x9bf7('0x1c')][_0x9bf7('0x51')]=function(_0x4e53d0){if(_[_0x9bf7('0x52')](_0x4e53d0)){_0x4e53d0[_0x9bf7('0x53')](function(_0x161867){RpcVoiceAgentReport[_0x9bf7('0x2d')](_0x161867);});}else{RpcVoiceAgentReport[_0x9bf7('0x2d')](_0x4e53d0);}};Report[_0x9bf7('0x1c')][_0x9bf7('0x18')]=function(_0x3d913c){RpcVoiceDialReport[_0x9bf7('0x2d')](_0x3d913c);var _0x39c7bc;var _0x1bd31c;var _0x25d465=_0x3d913c['channel'];if(_[_0x9bf7('0x54')](_0x25d465,_0x9bf7('0x55'))){_0x1bd31c=_0x25d465[_0x9bf7('0x56')](_0x25d465[_0x9bf7('0x57')]('/')+0x1,_0x25d465[_0x9bf7('0x57')]('@'));_0x39c7bc=_[_0x9bf7('0x1e')](this[_0x9bf7('0xe')],function(_0xe0c0af){return _0xe0c0af[_0x9bf7('0x58')]==_0x1bd31c||_0xe0c0af[_0x9bf7('0x59')]==_0x1bd31c||_0xe0c0af[_0x9bf7('0x1f')]==_0x1bd31c;});}else{_0x1bd31c=_0x25d465['substring'](_0x25d465['indexOf']('/')+0x1,_0x25d465[_0x9bf7('0x5a')]('-'));_0x39c7bc=this[_0x9bf7('0x1d')](_0x1bd31c);}if(_0x39c7bc){_0x3d913c[_0x9bf7('0x23')]=_[_0x9bf7('0x21')](_0x39c7bc['interface'])?util[_0x9bf7('0x24')](_0x9bf7('0x25'),_0x39c7bc[_0x9bf7('0x20')]):_0x39c7bc[_0x9bf7('0x23')];_0x3d913c[_0x9bf7('0x49')]=_0x39c7bc['name'];_0x3d913c[_0x9bf7('0x1f')]=_0x39c7bc[_0x9bf7('0x1f')];RpcMemberReport['voiceDialReport'](_0x3d913c);}};Report[_0x9bf7('0x1c')][_0x9bf7('0x47')]=function(_0x57b9d8){RpcVoiceTransferReport[_0x9bf7('0x44')][_0x57b9d8[_0x9bf7('0x5b')]]=_0x57b9d8;};Report[_0x9bf7('0x1c')][_0x9bf7('0x1b')]=function(_0x16d863){RpcVoiceTransferReport[_0x9bf7('0x1b')](_0x16d863);};module['exports']=Report;
\ No newline at end of file
+var _0x856f=['split','membername','monitor','monitorFilename','monitors','filename','connectedlinename','xcally-motion-dialer','forEach','startsWith','Local','indexOf','mobile','phone','substring','SIP/%s','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','telephones','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','custom:voiceCallReport','bind','voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','name','interface','connectedlinenum','assigned','isNil','format','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','keys','length','getCallType','channel','getAgentByInternal','calleridnum','internal','destination','exten','type','dialer','lastapplication','queue','lastdata','from-voip-provider','callerid','context','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','linkedid','transfereelinkedid','uniqueid','transfers','UserId'];(function(_0x167db1,_0x2ac8ef){var _0x3d5ef7=function(_0x43fb32){while(--_0x43fb32){_0x167db1['push'](_0x167db1['shift']());}};_0x3d5ef7(++_0x2ac8ef);}(_0x856f,0x135));var _0xf856=function(_0x285571,_0x5ac9fd){_0x285571=_0x285571-0x0;var _0x225054=_0x856f[_0x285571];return _0x225054;};'use strict';var _=require(_0xf856('0x0'));var moment=require(_0xf856('0x1'));var util=require(_0xf856('0x2'));var config=require(_0xf856('0x3'));var ami=require(_0xf856('0x4'));var RpcVoiceAgentReport=require(_0xf856('0x5'));var RpcVoiceCallReport=require(_0xf856('0x6'));var RpcVoiceDialReport=require(_0xf856('0x7'));var RpcMemberReport=require(_0xf856('0x8'));var RpcVoiceQueueReport=require(_0xf856('0x9'));var RpcVoiceRecording=require(_0xf856('0xa'));var RpcVoiceTransferReport=require(_0xf856('0xb'));var VoiceQueueReport=require(_0xf856('0xc'));var VoiceCallReport=require(_0xf856('0xd'));var VoiceAgentReport=require(_0xf856('0xe'));var VoiceDialReport=require(_0xf856('0xf'));var UserReport=require('./userReport');function Report(_0x45a382){this[_0xf856('0x10')]=_0x45a382;this[_0xf856('0x11')]=_0x45a382[_0xf856('0x11')];this[_0xf856('0x12')]=_0x45a382['telephones'];}Report['prototype'][_0xf856('0x13')]=function(_0x245597){var _0x50c296=new VoiceQueueReport(this['realtime']);var _0x578a28=new VoiceAgentReport(this[_0xf856('0x10')]);var _0x4958eb=new VoiceDialReport(this[_0xf856('0x10')]);var _0x55af48=new VoiceCallReport(this[_0xf856('0x10')]);var _0x2d29eb=new UserReport(this[_0xf856('0x10')]);if(config[_0xf856('0x14')]&&config[_0xf856('0x14')][_0xf856('0x15')]){ami['on'](_0xf856('0x16'),this[_0xf856('0x17')]['bind'](this));ami['on'](_0xf856('0x18'),this['voiceCallReport'][_0xf856('0x19')](this));ami['on']('custom:voiceAgentReport',this[_0xf856('0x1a')][_0xf856('0x19')](this));ami['on']('custom:voiceDialReport',this[_0xf856('0x1b')][_0xf856('0x19')](this));ami['on'](_0xf856('0x1c'),this[_0xf856('0x1d')][_0xf856('0x19')](this));ami['on'](_0xf856('0x1e'),this[_0xf856('0x1f')][_0xf856('0x19')](this));}};Report[_0xf856('0x20')][_0xf856('0x21')]=function(_0x57a4fa){var _0x5069dd;_0x5069dd=_[_0xf856('0x22')](this[_0xf856('0x11')],function(_0xa43286){return _0xa43286[_0xf856('0x23')]==_0x57a4fa||_0xa43286[_0xf856('0x24')]==_0x57a4fa;});if(_['isNil'](_0x5069dd)){var _0x367427=_[_0xf856('0x22')](this[_0xf856('0x12')],function(_0x348a1e){return _0x348a1e[_0xf856('0x23')]==_0x57a4fa||_0x348a1e['name']==_0x57a4fa;});if(_0x367427){_0x5069dd=_[_0xf856('0x22')](this[_0xf856('0x11')],function(_0x294089){return _0x294089[_0xf856('0x25')]==util['format']('SIP/%s',_0x367427[_0xf856('0x24')]);});}}return _0x5069dd;};Report[_0xf856('0x20')][_0xf856('0x17')]=function(_0x2e34ac){for(var _0x5892c8=0x0;_0x5892c8<_0x2e34ac['length'];_0x5892c8+=0x1){var _0x3d1546=this[_0xf856('0x21')](_0x2e34ac[_0x5892c8][_0xf856('0x26')]);if(_0x3d1546){_0x2e34ac[_0x5892c8]['accountcode']=_0x3d1546['accountcode'];_0x2e34ac[_0x5892c8][_0xf856('0x27')]=!![];_0x2e34ac[_0x5892c8]['lastAssignedTo']=_0x3d1546[_0xf856('0x24')];_0x2e34ac[_0x5892c8]['interface']=_[_0xf856('0x28')](_0x3d1546[_0xf856('0x25')])?util[_0xf856('0x29')]('SIP/%s',_0x3d1546['name']):_0x3d1546[_0xf856('0x25')];if(_0x2e34ac[_0x5892c8][_0xf856('0x2a')]){_0x2e34ac[_0x5892c8]['queuecallercompleteAt']=moment()[_0xf856('0x29')](_0xf856('0x2b'));}if(_0x2e34ac[_0x5892c8][_0xf856('0x2c')]){_0x2e34ac[_0x5892c8][_0xf856('0x2d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport['voiceQueueReport'](_0x2e34ac[_0x5892c8]);}RpcVoiceQueueReport[_0xf856('0x2e')](_0x2e34ac[_0x5892c8]);}};function extractCalleridNumber(_0xa294d){var _0x3faa83=_0xa294d[_0xf856('0x2f')](/<(.*?)>/);return _0x3faa83?_0x3faa83[0x1]:_0xa294d;}Report[_0xf856('0x20')]['getAgentByInternal']=function(_0x27e78b){for(var _0x213714=0x0;_0x213714<Object[_0xf856('0x30')](this[_0xf856('0x11')])[_0xf856('0x31')];_0x213714++){var _0x5be8a7=Object['keys'](this['agents'])[_0x213714];var _0x447fb3=this[_0xf856('0x11')][_0x5be8a7];if(_0x447fb3[_0xf856('0x23')]===Number(_0x27e78b))return _0x447fb3;}return null;};Report[_0xf856('0x20')][_0xf856('0x32')]=function(_0x2fbe9f){var _0x24981c=_0x2fbe9f[_0xf856('0x33')]['split']('-')[0x0];var _0x40d356=this[_0xf856('0x11')][_0x24981c];if(!_0x40d356)_0x40d356=this[_0xf856('0x34')](_0x2fbe9f[_0xf856('0x35')]);return!_0x40d356?'outbound':_0xf856('0x36');};Report['prototype']['voiceCallReport']=function(_0x408031){_0x408031[_0xf856('0x37')]=_0x408031[_0xf856('0x37')]||_0x408031[_0xf856('0x38')];if(_0x408031[_0xf856('0x39')]==_0xf856('0x3a')){_0x408031[_0xf856('0x3b')]=_0xf856('0x3c');_0x408031[_0xf856('0x3d')]=_0x408031[_0xf856('0x3c')];if(_0x408031['context']==_0xf856('0x3e')){_0x408031['accountcode']='';_0x408031[_0xf856('0x37')]=extractCalleridNumber(_0x408031[_0xf856('0x3f')]);}else if(_0x408031[_0xf856('0x40')]==_0xf856('0x41')){if(_0x408031[_0xf856('0x37')]==_0xf856('0x42')){_0x408031[_0xf856('0x37')]=extractCalleridNumber(_0x408031[_0xf856('0x43')]);_0x408031['calleridnum']=_0x408031[_0xf856('0x44')];_0x408031[_0xf856('0x45')]=[_0x408031[_0xf856('0x33')],_0x408031[_0xf856('0x33')]=_0x408031['destinationchannel']][0x0];_0x408031[_0xf856('0x3f')]=_0x408031[_0xf856('0x43')];}else{_0x408031['destination']=_0x408031[_0xf856('0x35')];_0x408031[_0xf856('0x35')]=_0x408031[_0xf856('0x44')];if(_0x408031[_0xf856('0x46')]==_0xf856('0x47')){_0x408031[_0xf856('0x23')]=_0x408031[_0xf856('0x26')];}else{_0x408031[_0xf856('0x23')]='';}}}}else{_0x408031['callerid']=util[_0xf856('0x29')](_0xf856('0x48'),_0x408031[_0xf856('0x49')],_0x408031[_0xf856('0x35')]);}if(RpcVoiceTransferReport['transfers'][_0x408031['linkedid']]){var _0x3ca129=RpcVoiceTransferReport['transfers'][_0x408031[_0xf856('0x4a')]];_0x3ca129[_0xf856('0x4b')]=_0x408031[_0xf856('0x4c')];RpcVoiceTransferReport[_0xf856('0x1d')](_0x3ca129);delete RpcVoiceTransferReport[_0xf856('0x4d')][_0x408031[_0xf856('0x4a')]];}if(_['isNil'](_0x408031['type'])){_0x408031[_0xf856('0x39')]=this[_0xf856('0x32')](_0x408031);}if(_[_0xf856('0x28')](_0x408031[_0xf856('0x4e')])){var _0x1d74bd=_0x408031[_0xf856('0x33')][_0xf856('0x4f')]('-')[0x0];var _0xb91191=this['agents'][_0x1d74bd];if(!_0xb91191)_0xb91191=this[_0xf856('0x34')](_0x408031[_0xf856('0x23')]);if(_0xb91191){_0x408031[_0xf856('0x4e')]=_0xb91191['id'];_0x408031[_0xf856('0x50')]=_0xb91191['name'];}}RpcVoiceCallReport[_0xf856('0x2e')](_0x408031);if(_0x408031[_0xf856('0x51')]){for(var _0x28bb4a=0x0;_0x28bb4a<_0x408031['monitors'][_0xf856('0x31')];_0x28bb4a+=0x1){_0x408031[_0xf856('0x52')]=_0x408031[_0xf856('0x53')][_0x28bb4a][_0xf856('0x54')];_0x408031['createdAt']=_0x408031[_0xf856('0x53')][_0x28bb4a]['createdAt'];if(_0x408031[_0xf856('0x38')]==_0xf856('0x42')){_0x408031[_0xf856('0x35')]=_0x408031[_0xf856('0x26')];_0x408031[_0xf856('0x49')]=_0x408031['connectedlinename'];_0x408031[_0xf856('0x26')]=_0x408031['accountcode'];_0x408031[_0xf856('0x55')]=_0x408031['membername'];_0x408031[_0xf856('0x38')]=_0x408031[_0xf856('0x44')];}else if(_0x408031[_0xf856('0x38')]==_0xf856('0x56')){_0x408031['calleridnum']=_0x408031[_0xf856('0x37')];_0x408031[_0xf856('0x38')]=_0x408031[_0xf856('0x44')];}RpcVoiceRecording[_0xf856('0x2e')](_0x408031);}}};Report[_0xf856('0x20')][_0xf856('0x1a')]=function(_0x5f3c55){if(_['isArray'](_0x5f3c55)){_0x5f3c55[_0xf856('0x57')](function(_0x5eb42e){RpcVoiceAgentReport[_0xf856('0x2e')](_0x5eb42e);});}else{RpcVoiceAgentReport[_0xf856('0x2e')](_0x5f3c55);}};Report[_0xf856('0x20')][_0xf856('0x1b')]=function(_0x4e4627){RpcVoiceDialReport['create'](_0x4e4627);var _0x4ca35a;var _0x44a639;var _0x5ab65a=_0x4e4627[_0xf856('0x33')];if(_[_0xf856('0x58')](_0x5ab65a,_0xf856('0x59'))){_0x44a639=_0x5ab65a['substring'](_0x5ab65a[_0xf856('0x5a')]('/')+0x1,_0x5ab65a[_0xf856('0x5a')]('@'));_0x4ca35a=_[_0xf856('0x22')](this[_0xf856('0x11')],function(_0x159caf){return _0x159caf[_0xf856('0x5b')]==_0x44a639||_0x159caf[_0xf856('0x5c')]==_0x44a639||_0x159caf[_0xf856('0x23')]==_0x44a639;});}else{_0x44a639=_0x5ab65a[_0xf856('0x5d')](_0x5ab65a[_0xf856('0x5a')]('/')+0x1,_0x5ab65a['lastIndexOf']('-'));_0x4ca35a=this[_0xf856('0x21')](_0x44a639);}if(_0x4ca35a){_0x4e4627[_0xf856('0x25')]=_['isNil'](_0x4ca35a['interface'])?util[_0xf856('0x29')](_0xf856('0x5e'),_0x4ca35a[_0xf856('0x24')]):_0x4ca35a[_0xf856('0x25')];_0x4e4627[_0xf856('0x50')]=_0x4ca35a[_0xf856('0x24')];_0x4e4627[_0xf856('0x23')]=_0x4ca35a[_0xf856('0x23')];RpcMemberReport[_0xf856('0x1b')](_0x4e4627);}};Report[_0xf856('0x20')][_0xf856('0x1d')]=function(_0x111766){RpcVoiceTransferReport[_0xf856('0x4d')][_0x111766[_0xf856('0x5f')]]=_0x111766;};Report['prototype'][_0xf856('0x1f')]=function(_0xd71e35){RpcVoiceTransferReport['attendedTransfer'](_0xd71e35);};module[_0xf856('0x60')]=Report;
\ No newline at end of file
index 474b4c3..363164d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf09f=['toNumber','updateStatusRealtime','stateTime','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','trunk:save','startsWith','Local','substring','indexOf','phone','accountcode','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','exports','moment','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','inspect','actionDeviceStateList','[userReport][devicestatelist]','error','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry','state','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','name','info','device','local','toLowerCase'];(function(_0xdf8b52,_0x426eb9){var _0xc4d5ef=function(_0x3f1548){while(--_0x3f1548){_0xdf8b52['push'](_0xdf8b52['shift']());}};_0xc4d5ef(++_0x426eb9);}(_0xf09f,0x1cf));var _0xff09=function(_0x303847,_0x36592d){_0x303847=_0x303847-0x0;var _0x56f99d=_0xf09f[_0x303847];return _0x56f99d;};'use strict';var _=require('lodash');var moment=require(_0xff09('0x0'));var util=require('util');var Redis=require(_0xff09('0x1'));var BPromise=require(_0xff09('0x2'));var config=require(_0xff09('0x3'));var logger=require(_0xff09('0x4'))(_0xff09('0x5'));var ami=require(_0xff09('0x6'));config['redis']=_[_0xff09('0x7')](config[_0xff09('0x8')],{'host':_0xff09('0x9'),'port':0x18eb});var io=require(_0xff09('0xa'))(new Redis(config[_0xff09('0x8')]));function UserReport(_0x290419){this['trunks']=_0x290419[_0xff09('0xb')];this['agents']=_0x290419[_0xff09('0xc')];this[_0xff09('0xd')]=_0x290419[_0xff09('0xd')];ami['on'](_0xff09('0xe'),this[_0xff09('0xf')][_0xff09('0x10')](this));ami['on']('registry',this['syncRegistry'][_0xff09('0x10')](this));ami['on']('devicestatechange',this[_0xff09('0x11')][_0xff09('0x10')](this));ami['on'](_0xff09('0x12'),this['syncPeerStatus']['bind'](this));return this[_0xff09('0x13')]();}function showSipRegistrations(){Promise[_0xff09('0x14')]()[_0xff09('0x15')](ami['actionSipShowRegistry']())['catch'](function(_0xde7b06){logger['error']('[userReport][sipshowregistry]',util[_0xff09('0x16')](_0xde7b06,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xff09('0x14')]()[_0xff09('0x15')](ami[_0xff09('0x17')]())['catch'](function(_0x4576d3){logger['error'](_0xff09('0x18'),util[_0xff09('0x16')](_0x4576d3,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xff09('0x15')](ami['actionSipPeerStatus']())['catch'](function(_0x1c2c5b){logger[_0xff09('0x19')](_0xff09('0x1a'),util[_0xff09('0x16')](_0x1c2c5b,{'showHidden':![],'depth':null}));});}UserReport[_0xff09('0x1b')][_0xff09('0x13')]=function(){setInterval(function(){BPromise[_0xff09('0x14')]()[_0xff09('0x15')](showSipRegistrations())['then'](listDeviceStates())[_0xff09('0x15')](showPeersStatus());},0x32c8);};UserReport[_0xff09('0x1b')][_0xff09('0x1c')]=function(_0x58226c){return _0x58226c!==null&&!_[_0xff09('0x1d')](_0x58226c);};UserReport[_0xff09('0x1b')][_0xff09('0x1e')]=function(_0x2edad2,_0x559e6e,_0xdd82e7){io['to'](_0x2edad2)[_0xff09('0x1e')](_0x559e6e,_0xdd82e7);};UserReport['prototype']['syncRegistry']=function(_0x1be7f2){try{if(this[_0xff09('0x1c')](_0x1be7f2)){logger['info'](_0xff09('0x1f'),_0x1be7f2[_0xff09('0x20')],_0x1be7f2['state']);logger[_0xff09('0x21')](_0xff09('0x22'),util['inspect'](_0x1be7f2,{'showHidden':![],'depth':null}));var _0x5deff9=_[_0xff09('0x23')](this[_0xff09('0xb')],{'defaultuser':_0x1be7f2[_0xff09('0x20')]});if(_0x5deff9){_0x1be7f2[_0xff09('0x24')]=_0x1be7f2[_0xff09('0x25')];_[_0xff09('0x26')](_0x5deff9,_[_0xff09('0x27')](_0x1be7f2,[_0xff09('0x28'),_0xff09('0x29'),'username','state']));logger[_0xff09('0x21')](_0xff09('0x2a'),util[_0xff09('0x16')](_0x5deff9,{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',_0x5deff9[_0xff09('0x2b')]),'trunk:save',_0x5deff9);}}}catch(_0x292542){logger[_0xff09('0x19')](_0xff09('0x22'),util[_0xff09('0x16')](_0x292542,{'showHidden':![],'depth':null}));}};UserReport[_0xff09('0x1b')]['syncDeviceState']=function(_0x46c856){try{if(this[_0xff09('0x1c')](_0x46c856)){logger[_0xff09('0x2c')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x46c856[_0xff09('0x2d')],_0x46c856[_0xff09('0x25')]);logger[_0xff09('0x21')]('[userReport][devicestatechange]',util['inspect'](_0x46c856,{'showHidden':![],'depth':null}));if(this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]]){if(!this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x2e')]||_0x46c856[_0xff09('0x25')][_0xff09('0x2f')]()=='inuse'){this[_0xff09('0xc')][_0x46c856['device']][_0xff09('0x2e')]=![];if(this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x25')]!==_0x46c856[_0xff09('0x25')]['toLowerCase']()){this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]]['stateTime']=_[_0xff09('0x30')](moment()['format']('x'));}this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]]['state']=_0x46c856[_0xff09('0x25')]['toLowerCase']();this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x31')](_0x46c856);}}else if(this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]]){if(this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]]['state']!==_0x46c856['state'][_0xff09('0x2f')]()){this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x32')]=_[_0xff09('0x30')](moment()[_0xff09('0x33')]('x'));}this['telephones'][_0x46c856['device']][_0xff09('0x25')]=_0x46c856[_0xff09('0x25')]['toLowerCase']();logger[_0xff09('0x21')](_0xff09('0x34'),util[_0xff09('0x16')](this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')](_0xff09('0x35'),this[_0xff09('0xd')][_0x46c856['device']][_0xff09('0x2b')]),_0xff09('0x36'),this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]]);}else if(this['trunks'][_0x46c856['device']]){if(this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]]['state']!==_0x46c856['state'][_0xff09('0x2f')]()){this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x32')]=_['toNumber'](moment()[_0xff09('0x33')]('x'));}this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x25')]=_0x46c856[_0xff09('0x25')][_0xff09('0x2f')]();logger[_0xff09('0x21')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')]('trunk:%s',this['trunks'][_0x46c856[_0xff09('0x2d')]][_0xff09('0x2b')]),_0xff09('0x37'),this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]]);}else if(_[_0xff09('0x38')](_0x46c856[_0xff09('0x2d')],_0xff09('0x39'))){var _0x32868f=_0x46c856['device'];var _0x5cc512=_0x32868f[_0xff09('0x3a')](_0x32868f[_0xff09('0x3b')]('/')+0x1,_0x32868f[_0xff09('0x3b')]('@'));var _0x1fb57c=_['find'](this[_0xff09('0xc')],function(_0x3d3d3){return _0x3d3d3['mobile']==_0x5cc512||_0x3d3d3[_0xff09('0x3c')]==_0x5cc512||_0x3d3d3[_0xff09('0x3d')]==_0x5cc512;});if(_0x1fb57c){if(_0x1fb57c[_0xff09('0x25')]!==_0x46c856[_0xff09('0x25')][_0xff09('0x2f')]()){_0x1fb57c[_0xff09('0x32')]=_['toNumber'](moment()[_0xff09('0x33')]('x'));}_0x1fb57c[_0xff09('0x25')]=_0x46c856[_0xff09('0x25')]['toLowerCase']();_0x1fb57c[_0xff09('0x2e')]=!![];_0x1fb57c['updateStatusRealtime'](_0x46c856);}}}}catch(_0x207e5f){logger[_0xff09('0x19')]('[userReport][devicestatechange]',util['inspect'](_0x207e5f,{'showHidden':![],'depth':null}));}};UserReport[_0xff09('0x1b')][_0xff09('0x3e')]=function(_0x4e6bd7){try{if(this[_0xff09('0x1c')](_0x4e6bd7)&&this[_0xff09('0x1c')](_0x4e6bd7[_0xff09('0x12')])){logger['info'](_0xff09('0x3f'),_0x4e6bd7['peer'],_0x4e6bd7[_0xff09('0x40')],_0x4e6bd7[_0xff09('0x12')]);logger[_0xff09('0x21')](_0xff09('0x41'),util[_0xff09('0x16')](_0x4e6bd7,{'showHidden':![],'depth':null}));if(this[_0xff09('0xc')][_0x4e6bd7[_0xff09('0x42')]]){if(!this[_0xff09('0xc')][_0x4e6bd7['peer']][_0xff09('0x2e')]||_0x4e6bd7['peerstatus'][_0xff09('0x2f')]()==_0xff09('0x43')){this[_0xff09('0xc')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x2e')]=![];this[_0xff09('0xc')][_0x4e6bd7['peer']][_0xff09('0x44')]=_0x4e6bd7[_0xff09('0x12')][_0xff09('0x2f')]();this[_0xff09('0xc')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x40')]=_0x4e6bd7['address'];this['agents'][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x31')](_0x4e6bd7);}}else if(this['telephones'][_0x4e6bd7[_0xff09('0x42')]]){this[_0xff09('0xd')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x44')]=_0x4e6bd7[_0xff09('0x12')]['toLowerCase']();this['telephones'][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x40')]=_0x4e6bd7[_0xff09('0x40')];logger[_0xff09('0x21')](_0xff09('0x45'),util[_0xff09('0x16')](this['telephones'][_0x4e6bd7['peer']],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')](_0xff09('0x35'),this[_0xff09('0xd')][_0x4e6bd7['peer']]['name']),_0xff09('0x36'),this[_0xff09('0xd')][_0x4e6bd7[_0xff09('0x42')]]);}else if(this[_0xff09('0xb')][_0x4e6bd7['peer']]){this['trunks'][_0x4e6bd7[_0xff09('0x42')]]['status']=_0x4e6bd7[_0xff09('0x12')]['toLowerCase']();this[_0xff09('0xb')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x40')]=_0x4e6bd7[_0xff09('0x40')];logger[_0xff09('0x21')](_0xff09('0x46'),util[_0xff09('0x16')](this[_0xff09('0xb')][_0x4e6bd7[_0xff09('0x42')]],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')](_0xff09('0x47'),this['trunks'][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x2b')]),_0xff09('0x37'),this[_0xff09('0xb')][_0x4e6bd7[_0xff09('0x42')]]);}}}catch(_0x56c82e){logger[_0xff09('0x19')]('[userReport][peerstatus]',util[_0xff09('0x16')](_0x56c82e,{'showHidden':![],'depth':null}));}};module[_0xff09('0x48')]=UserReport;
\ No newline at end of file
+var _0x61a2=['socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','devicestatechange','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','catch','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isUndefined','emit','syncRegistry','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','find','stateRegistry','merge','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','updateStatusRealtime','toNumber','telephone:%s','telephone:save','startsWith','indexOf','mobile','phone','accountcode','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','util','ioredis','bluebird','../../../config/logger','ami','../ami','redis','defaults','localhost'];(function(_0x4e72a5,_0x59d207){var _0x5c608f=function(_0x5e0632){while(--_0x5e0632){_0x4e72a5['push'](_0x4e72a5['shift']());}};_0x5c608f(++_0x59d207);}(_0x61a2,0x1b8));var _0x261a=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x61a2[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x261a('0x0'));var moment=require('moment');var util=require(_0x261a('0x1'));var Redis=require(_0x261a('0x2'));var BPromise=require(_0x261a('0x3'));var config=require('../../../config/environment');var logger=require(_0x261a('0x4'))(_0x261a('0x5'));var ami=require(_0x261a('0x6'));config[_0x261a('0x7')]=_[_0x261a('0x8')](config[_0x261a('0x7')],{'host':_0x261a('0x9'),'port':0x18eb});var io=require(_0x261a('0xa'))(new Redis(config[_0x261a('0x7')]));function UserReport(_0x224e6f){this[_0x261a('0xb')]=_0x224e6f[_0x261a('0xb')];this['agents']=_0x224e6f[_0x261a('0xc')];this['telephones']=_0x224e6f[_0x261a('0xd')];ami['on'](_0x261a('0xe'),this['syncRegistry'][_0x261a('0xf')](this));ami['on'](_0x261a('0x10'),this['syncRegistry'][_0x261a('0xf')](this));ami['on'](_0x261a('0x11'),this['syncDeviceState']['bind'](this));ami['on']('peerstatus',this[_0x261a('0x12')][_0x261a('0xf')](this));return this[_0x261a('0x13')]();}function showSipRegistrations(){Promise[_0x261a('0x14')]()[_0x261a('0x15')](ami[_0x261a('0x16')]())['catch'](function(_0x4056ce){logger[_0x261a('0x17')](_0x261a('0x18'),util[_0x261a('0x19')](_0x4056ce,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x261a('0x15')](ami['actionDeviceStateList']())[_0x261a('0x1a')](function(_0x1e7a2b){logger[_0x261a('0x17')](_0x261a('0x1b'),util[_0x261a('0x19')](_0x1e7a2b,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x261a('0x14')]()[_0x261a('0x15')](ami['actionSipPeerStatus']())['catch'](function(_0x43788c){logger[_0x261a('0x17')](_0x261a('0x1c'),util[_0x261a('0x19')](_0x43788c,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x261a('0x13')]=function(){setInterval(function(){BPromise['resolve']()[_0x261a('0x15')](showSipRegistrations())[_0x261a('0x15')](listDeviceStates())[_0x261a('0x15')](showPeersStatus());},0x32c8);};UserReport[_0x261a('0x1d')]['isNotNull']=function(_0x41da86){return _0x41da86!==null&&!_[_0x261a('0x1e')](_0x41da86);};UserReport[_0x261a('0x1d')]['emit']=function(_0x3b6925,_0x1e8d17,_0x7eddbd){io['to'](_0x3b6925)[_0x261a('0x1f')](_0x1e8d17,_0x7eddbd);};UserReport[_0x261a('0x1d')][_0x261a('0x20')]=function(_0x23aff0){try{if(this[_0x261a('0x21')](_0x23aff0)){logger[_0x261a('0x22')](_0x261a('0x23'),_0x23aff0[_0x261a('0x24')],_0x23aff0[_0x261a('0x25')]);logger['debug']('[userReport][registry]',util[_0x261a('0x19')](_0x23aff0,{'showHidden':![],'depth':null}));var _0x49403d=_[_0x261a('0x26')](this[_0x261a('0xb')],{'defaultuser':_0x23aff0[_0x261a('0x24')]});if(_0x49403d){_0x23aff0[_0x261a('0x27')]=_0x23aff0[_0x261a('0x25')];_[_0x261a('0x28')](_0x49403d,_['omit'](_0x23aff0,[_0x261a('0x29'),_0x261a('0x2a'),_0x261a('0x24'),_0x261a('0x25')]));logger[_0x261a('0x2b')](_0x261a('0x2c'),util[_0x261a('0x19')](_0x49403d,{'showHidden':![],'depth':null}));this[_0x261a('0x1f')](util[_0x261a('0x2d')](_0x261a('0x2e'),_0x49403d[_0x261a('0x2f')]),_0x261a('0x30'),_0x49403d);}}}catch(_0x551040){logger[_0x261a('0x17')](_0x261a('0x31'),util[_0x261a('0x19')](_0x551040,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x5d957b){try{if(this[_0x261a('0x21')](_0x5d957b)){logger[_0x261a('0x22')](_0x261a('0x32'),_0x5d957b[_0x261a('0x33')],_0x5d957b[_0x261a('0x25')]);logger[_0x261a('0x2b')](_0x261a('0x34'),util[_0x261a('0x19')](_0x5d957b,{'showHidden':![],'depth':null}));if(this[_0x261a('0xc')][_0x5d957b['device']]){if(!this['agents'][_0x5d957b[_0x261a('0x33')]][_0x261a('0x35')]||_0x5d957b[_0x261a('0x25')][_0x261a('0x36')]()==_0x261a('0x37')){this[_0x261a('0xc')][_0x5d957b['device']][_0x261a('0x35')]=![];if(this[_0x261a('0xc')][_0x5d957b['device']]['state']!==_0x5d957b[_0x261a('0x25')]['toLowerCase']()){this['agents'][_0x5d957b[_0x261a('0x33')]][_0x261a('0x38')]=_['toNumber'](moment()[_0x261a('0x2d')]('x'));}this[_0x261a('0xc')][_0x5d957b[_0x261a('0x33')]][_0x261a('0x25')]=_0x5d957b[_0x261a('0x25')][_0x261a('0x36')]();this['agents'][_0x5d957b[_0x261a('0x33')]][_0x261a('0x39')](_0x5d957b);}}else if(this[_0x261a('0xd')][_0x5d957b[_0x261a('0x33')]]){if(this[_0x261a('0xd')][_0x5d957b[_0x261a('0x33')]]['state']!==_0x5d957b[_0x261a('0x25')][_0x261a('0x36')]()){this['telephones'][_0x5d957b[_0x261a('0x33')]][_0x261a('0x38')]=_[_0x261a('0x3a')](moment()[_0x261a('0x2d')]('x'));}this[_0x261a('0xd')][_0x5d957b[_0x261a('0x33')]][_0x261a('0x25')]=_0x5d957b[_0x261a('0x25')]['toLowerCase']();logger[_0x261a('0x2b')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x261a('0x19')](this[_0x261a('0xd')][_0x5d957b[_0x261a('0x33')]],{'showHidden':![],'depth':null}));this[_0x261a('0x1f')](util[_0x261a('0x2d')](_0x261a('0x3b'),this[_0x261a('0xd')][_0x5d957b[_0x261a('0x33')]][_0x261a('0x2f')]),_0x261a('0x3c'),this['telephones'][_0x5d957b[_0x261a('0x33')]]);}else if(this['trunks'][_0x5d957b[_0x261a('0x33')]]){if(this[_0x261a('0xb')][_0x5d957b[_0x261a('0x33')]][_0x261a('0x25')]!==_0x5d957b['state'][_0x261a('0x36')]()){this[_0x261a('0xb')][_0x5d957b[_0x261a('0x33')]][_0x261a('0x38')]=_[_0x261a('0x3a')](moment()[_0x261a('0x2d')]('x'));}this[_0x261a('0xb')][_0x5d957b[_0x261a('0x33')]]['state']=_0x5d957b['state'][_0x261a('0x36')]();logger[_0x261a('0x2b')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x261a('0x19')](this[_0x261a('0xb')][_0x5d957b[_0x261a('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x261a('0x2d')](_0x261a('0x2e'),this[_0x261a('0xb')][_0x5d957b[_0x261a('0x33')]][_0x261a('0x2f')]),_0x261a('0x30'),this['trunks'][_0x5d957b[_0x261a('0x33')]]);}else if(_[_0x261a('0x3d')](_0x5d957b[_0x261a('0x33')],'Local')){var _0x1d476b=_0x5d957b['device'];var _0xced4fb=_0x1d476b['substring'](_0x1d476b[_0x261a('0x3e')]('/')+0x1,_0x1d476b['indexOf']('@'));var _0x1acf2a=_[_0x261a('0x26')](this[_0x261a('0xc')],function(_0x4246d2){return _0x4246d2[_0x261a('0x3f')]==_0xced4fb||_0x4246d2[_0x261a('0x40')]==_0xced4fb||_0x4246d2[_0x261a('0x41')]==_0xced4fb;});if(_0x1acf2a){if(_0x1acf2a['state']!==_0x5d957b[_0x261a('0x25')][_0x261a('0x36')]()){_0x1acf2a[_0x261a('0x38')]=_[_0x261a('0x3a')](moment()['format']('x'));}_0x1acf2a[_0x261a('0x25')]=_0x5d957b['state']['toLowerCase']();_0x1acf2a[_0x261a('0x35')]=!![];_0x1acf2a[_0x261a('0x39')](_0x5d957b);}}}}catch(_0x5175a2){logger['error'](_0x261a('0x34'),util[_0x261a('0x19')](_0x5175a2,{'showHidden':![],'depth':null}));}};UserReport[_0x261a('0x1d')][_0x261a('0x12')]=function(_0xec8f8a){try{if(this[_0x261a('0x21')](_0xec8f8a)&&this[_0x261a('0x21')](_0xec8f8a[_0x261a('0x42')])){logger[_0x261a('0x22')](_0x261a('0x43'),_0xec8f8a[_0x261a('0x44')],_0xec8f8a[_0x261a('0x45')],_0xec8f8a['peerstatus']);logger[_0x261a('0x2b')](_0x261a('0x46'),util[_0x261a('0x19')](_0xec8f8a,{'showHidden':![],'depth':null}));if(this[_0x261a('0xc')][_0xec8f8a['peer']]){if(!this[_0x261a('0xc')][_0xec8f8a[_0x261a('0x44')]]['local']||_0xec8f8a[_0x261a('0x42')][_0x261a('0x36')]()==_0x261a('0x47')){this['agents'][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x35')]=![];this['agents'][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x48')]=_0xec8f8a[_0x261a('0x42')][_0x261a('0x36')]();this[_0x261a('0xc')][_0xec8f8a[_0x261a('0x44')]]['address']=_0xec8f8a[_0x261a('0x45')];this[_0x261a('0xc')][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x39')](_0xec8f8a);}}else if(this[_0x261a('0xd')][_0xec8f8a[_0x261a('0x44')]]){this[_0x261a('0xd')][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x48')]=_0xec8f8a[_0x261a('0x42')][_0x261a('0x36')]();this[_0x261a('0xd')][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x45')]=_0xec8f8a[_0x261a('0x45')];logger[_0x261a('0x2b')](_0x261a('0x49'),util[_0x261a('0x19')](this[_0x261a('0xd')][_0xec8f8a[_0x261a('0x44')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x261a('0x2d')]('telephone:%s',this[_0x261a('0xd')][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x2f')]),_0x261a('0x3c'),this[_0x261a('0xd')][_0xec8f8a['peer']]);}else if(this['trunks'][_0xec8f8a[_0x261a('0x44')]]){this[_0x261a('0xb')][_0xec8f8a[_0x261a('0x44')]]['status']=_0xec8f8a[_0x261a('0x42')]['toLowerCase']();this[_0x261a('0xb')][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x45')]=_0xec8f8a[_0x261a('0x45')];logger[_0x261a('0x2b')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x261a('0x19')](this[_0x261a('0xb')][_0xec8f8a[_0x261a('0x44')]],{'showHidden':![],'depth':null}));this[_0x261a('0x1f')](util[_0x261a('0x2d')]('trunk:%s',this[_0x261a('0xb')][_0xec8f8a[_0x261a('0x44')]][_0x261a('0x2f')]),_0x261a('0x30'),this['trunks'][_0xec8f8a[_0x261a('0x44')]]);}}}catch(_0x3809c1){logger[_0x261a('0x17')](_0x261a('0x46'),util[_0x261a('0x19')](_0x3809c1,{'showHidden':![],'depth':null}));}};module[_0x261a('0x4a')]=UserReport;
\ No newline at end of file
index 60fea86..b208153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a55=['syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','membername','agentconnectAt','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','split','name','exten','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','transfer','agent','acw','acwtime','acwTimeout','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','variable','value','[%s][voiceAgentReport][varset]','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%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','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','talktime','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','substring','channel','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','bind','agentconnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','prototype','isNotNull','isUndefined','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','interface','queue','format','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','inbound','voice','merge','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]'];(function(_0x2968ed,_0x4ef2c2){var _0x4e49e1=function(_0x546016){while(--_0x546016){_0x2968ed['push'](_0x2968ed['shift']());}};_0x4e49e1(++_0x4ef2c2);}(_0x1a55,0x1a7));var _0x51a5=function(_0xd9342d,_0x144da3){_0xd9342d=_0xd9342d-0x0;var _0x51d018=_0x1a55[_0xd9342d];return _0x51d018;};'use strict';var _=require('lodash');var moment=require(_0x51a5('0x0'));var util=require(_0x51a5('0x1'));var Redis=require(_0x51a5('0x2'));var config=require(_0x51a5('0x3'));var logger=require(_0x51a5('0x4'))(_0x51a5('0x5'));var ami=require(_0x51a5('0x6'));config[_0x51a5('0x7')]=_[_0x51a5('0x8')](config['redis'],{'host':_0x51a5('0x9'),'port':0x18eb});var io=require(_0x51a5('0xa'))(new Redis(config[_0x51a5('0x7')]));function VoiceAgentReport(_0x4d1aca){this[_0x51a5('0xb')]={};this[_0x51a5('0xc')]=_0x4d1aca[_0x51a5('0xb')];this[_0x51a5('0xd')]=_0x4d1aca[_0x51a5('0xd')];this[_0x51a5('0xe')]=_0x4d1aca['agents'];this[_0x51a5('0xf')]={};ami['on']('agentcalled',this['syncAgentCalled'][_0x51a5('0x10')](this));ami['on'](_0x51a5('0x11'),this['syncAgentConnect'][_0x51a5('0x10')](this));ami['on'](_0x51a5('0x12'),this[_0x51a5('0x13')][_0x51a5('0x10')](this));ami['on']('queuecallerabandon',this[_0x51a5('0x14')]['bind'](this));ami['on'](_0x51a5('0x15'),this['syncAgentComplete']['bind'](this));ami['on'](_0x51a5('0x16'),this[_0x51a5('0x17')]['bind'](this));ami['on'](_0x51a5('0x18'),this[_0x51a5('0x19')][_0x51a5('0x10')](this));ami['on']('musiconholdstart',this[_0x51a5('0x1a')]['bind'](this));ami['on'](_0x51a5('0x1b'),this[_0x51a5('0x1c')]['bind'](this));ami['on'](_0x51a5('0x1d'),this[_0x51a5('0x1e')][_0x51a5('0x10')](this));ami['on'](_0x51a5('0x1f'),this[_0x51a5('0x20')][_0x51a5('0x10')](this));}VoiceAgentReport['prototype'][_0x51a5('0x21')]=function(_0x280aa8,_0x120ed6,_0x324787){io['to'](_0x280aa8)['emit'](_0x120ed6,_0x324787);};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x23')]=function(_0x4012f0){return _0x4012f0!==null&&!_[_0x51a5('0x24')](_0x4012f0);};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x25')]=function(_0x4d613d){try{if(this[_0x51a5('0x23')](_0x4d613d)){logger[_0x51a5('0x26')](_0x51a5('0x27'),_0x4d613d[_0x51a5('0x28')],_0x4d613d['membername'],_0x4d613d[_0x51a5('0x29')]);logger[_0x51a5('0x2a')](_0x51a5('0x2b'),_0x4d613d[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x4d613d,{'showHidden':![],'depth':null}));if(_[_0x51a5('0x24')](this[_0x51a5('0xb')][_0x4d613d[_0x51a5('0x28')]])){this[_0x51a5('0xb')][_0x4d613d[_0x51a5('0x28')]]={};}var _0x4350a8=this[_0x51a5('0xe')][_0x4d613d[_0x51a5('0x2d')]];var _0x33249f=this['channels'][_0x4d613d['uniqueid']][_0x4d613d[_0x51a5('0x29')]];var _0x4fa945=this[_0x51a5('0xd')][_0x4d613d[_0x51a5('0x2e')]];var _0xbfdc10=this[_0x51a5('0xf')][_0x4d613d[_0x51a5('0x28')]];if(_[_0x51a5('0x24')](_0x33249f)){_0x33249f={'agentcalledAt':moment()[_0x51a5('0x2f')](_0x51a5('0x30')),'lastevent':_0x51a5('0x31'),'mandatoryDisposition':_0x4fa945&&_0x4fa945[_0x51a5('0x32')]?_0x4fa945[_0x51a5('0x32')]:![],'type':_0x4fa945&&_0x4fa945[_0x51a5('0x33')]?_0x4fa945[_0x51a5('0x33')]:_0x51a5('0x34'),'variables':_0xbfdc10,'motionChannel':_0x51a5('0x35')};}_[_0x51a5('0x36')](_0x33249f,_['omit'](_0x4d613d,[_0x51a5('0x37'),'privilege']));logger[_0x51a5('0x2a')](_0x51a5('0x38'),_0x4d613d['uniqueid'],util[_0x51a5('0x2c')](_0x33249f,{'showHidden':![],'depth':null}));ami['emit']('custom:agentcalled',_0x33249f);var _0x34d6bc={'id':_0x4350a8['id'],'calleridnum':_0x33249f[_0x51a5('0x39')],'queue':_0x33249f[_0x51a5('0x2e')],'variables':_0x33249f['variables'],'uniqueid':_0x4d613d['uniqueid']};logger[_0x51a5('0x2a')](_0x51a5('0x3a'),_0x4d613d[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x34d6bc,{'showHidden':![],'depth':null}));this[_0x51a5('0x21')](util[_0x51a5('0x2f')](_0x51a5('0x3b'),_0x4d613d['membername']),_0x51a5('0x3c'),_0x34d6bc);}}catch(_0x153cea){logger[_0x51a5('0x3d')](_0x51a5('0x3e'),_0x4d613d[_0x51a5('0x28')],util['inspect'](_0x153cea,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x3f')]=function(_0x1cd4a2){try{if(this[_0x51a5('0x23')](_0x1cd4a2)){if(this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]]){logger[_0x51a5('0x2a')](_0x51a5('0x40'),_0x1cd4a2[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x1cd4a2,{'showHidden':![],'depth':null}));for(var _0x4ebbef in this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x51a5('0x41')](_0x4ebbef)){if(_0x1cd4a2[_0x51a5('0x29')]===_0x4ebbef){logger[_0x51a5('0x26')](_0x51a5('0x42'),_0x1cd4a2[_0x51a5('0x28')],_0x1cd4a2[_0x51a5('0x43')],_0x1cd4a2[_0x51a5('0x29')]);this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x44')]=moment()['format'](_0x51a5('0x30'));this['channels'][_0x1cd4a2['uniqueid']][_0x4ebbef]['connectedlinename']=_0x1cd4a2['connectedlinename'];this[_0x51a5('0xb')][_0x1cd4a2['uniqueid']][_0x4ebbef]['connectedlinenum']=_0x1cd4a2[_0x51a5('0x45')];this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x46')]=_0x1cd4a2[_0x51a5('0x46')];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef]['destchannelstatedesc']=_0x1cd4a2[_0x51a5('0x47')];this[_0x51a5('0xb')][_0x1cd4a2['uniqueid']][_0x4ebbef]['holdtime']=_0x1cd4a2[_0x51a5('0x48')];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x49')]=_0x51a5('0x4a');if(this[_0x51a5('0xc')][this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x28')]]){var _0x46ec05=this[_0x51a5('0xc')][this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x28')]][_0x51a5('0x4b')];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x4b')]=_0x46ec05;_0x1cd4a2[_0x51a5('0x4b')]=_0x46ec05;}_['merge'](this[_0x51a5('0xe')][_0x1cd4a2[_0x51a5('0x2d')]],_['pick'](_0x1cd4a2,['queue','destconnectedlinenum','routealias']));var _0x1bac05=this[_0x51a5('0xe')][_0x1cd4a2['channel'][_0x51a5('0x4c')]('-')[0x0]];var _0xe0744e={'id':_0x1bac05['id'],'name':_0x1bac05[_0x51a5('0x4d')],'agentconnected':!![],'destaccountcode':_0x1bac05['accountcode'],'destconnectedlinenum':this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2['destuniqueid']][_0x51a5('0x4e')],'queue':this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2['destuniqueid']][_0x51a5('0x2e')],'routealias':this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2[_0x51a5('0x29')]][_0x51a5('0x4b')],'uniqueid':this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2[_0x51a5('0x29')]]['uniqueid']};logger[_0x51a5('0x2a')](_0x51a5('0x4f'),_0x1cd4a2['uniqueid'],util['inspect'](_0xe0744e,{'showHidden':![],'depth':null}));ami[_0x51a5('0x21')](_0x51a5('0x50'),_0xe0744e);logger[_0x51a5('0x2a')](_0x51a5('0x51'),_0x1cd4a2[_0x51a5('0x28')],util['inspect'](_0xe0744e,{'showHidden':![],'depth':null}));this['emit'](util[_0x51a5('0x2f')]('user:%s',_0x1cd4a2[_0x51a5('0x43')]),_0x51a5('0x52'),_0xe0744e);}else if(!this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x12')]&&!this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x15')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x1cd4a2[_0x51a5('0x28')],this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x43')],_0x4ebbef);this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x12')]=!![];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x53')]=moment()[_0x51a5('0x2f')](_0x51a5('0x30'));this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x54')]=_0x1cd4a2['destuniqueid'];this['channels'][_0x1cd4a2['uniqueid']][_0x4ebbef]['answeredelsewheremembername']=_0x1cd4a2['membername'];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef]['lastevent']=_0x51a5('0x55');this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x56')]=_0x51a5('0x55');logger[_0x51a5('0x2a')](_0x51a5('0x57'),_0x1cd4a2[_0x51a5('0x28')],util['inspect'](this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef],{'showHidden':![],'depth':null}));ami['emit'](_0x51a5('0x58'),this[_0x51a5('0xb')][_0x1cd4a2['uniqueid']][_0x4ebbef]);}}}}}}catch(_0x1e0bc3){logger[_0x51a5('0x3d')]('[%s][voiceAgentReport][agentconnect]',_0x1cd4a2['uniqueid'],util[_0x51a5('0x2c')](_0x1e0bc3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x13')]=function(_0x40f0b3){try{if(this['isNotNull'](_0x40f0b3)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x40f0b3[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x40f0b3,{'showHidden':![],'depth':null}));if(this[_0x51a5('0xb')][_0x40f0b3[_0x51a5('0x28')]]&&this['channels'][_0x40f0b3[_0x51a5('0x28')]][_0x40f0b3[_0x51a5('0x29')]]){logger['info'](_0x51a5('0x59'),_0x40f0b3[_0x51a5('0x28')],_0x40f0b3[_0x51a5('0x43')],_0x40f0b3[_0x51a5('0x29')]);var _0x55a94c=this[_0x51a5('0xe')][_0x40f0b3[_0x51a5('0x2d')]];var _0x5aa40b=this['channels'][_0x40f0b3[_0x51a5('0x28')]][_0x40f0b3[_0x51a5('0x29')]];_0x5aa40b[_0x51a5('0x12')]=!![];_0x5aa40b[_0x51a5('0x53')]=moment()['format'](_0x51a5('0x30'));_0x5aa40b['lastevent']='rejected';_0x5aa40b['reason']=_0x51a5('0x5a');var _0x85585d={'id':_0x55a94c['id'],'name':_0x55a94c[_0x51a5('0x4d')],'queue':_0x5aa40b[_0x51a5('0x2e')],'uniqueid':_0x5aa40b[_0x51a5('0x28')]};logger[_0x51a5('0x2a')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x40f0b3['uniqueid'],util[_0x51a5('0x2c')](_0x85585d,{'showHidden':![],'depth':null}));this[_0x51a5('0x21')](util['format'](_0x51a5('0x3b'),_0x55a94c[_0x51a5('0x4d')]),_0x51a5('0x5b'),_0x85585d);ami['emit'](_0x51a5('0x5c'),_0x5aa40b);}}}catch(_0x3bb899){logger[_0x51a5('0x3d')](_0x51a5('0x5d'),_0x40f0b3['uniqueid'],util[_0x51a5('0x2c')](_0x3bb899,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x14')]=function(_0x42c0b0){try{if(this[_0x51a5('0x23')](_0x42c0b0)){logger['debug'](_0x51a5('0x5e'),_0x42c0b0[_0x51a5('0x28')],util['inspect'](_0x42c0b0,{'showHidden':![],'depth':null}));if(this['channels'][_0x42c0b0['uniqueid']]){for(var _0x688f0 in this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x42c0b0['uniqueid']][_0x51a5('0x41')](_0x688f0)&&!this['channels'][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x12')]&&!this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x15')]){logger[_0x51a5('0x26')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x42c0b0[_0x51a5('0x28')],this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x43')],_0x688f0);this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x12')]=!![];this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x53')]=moment()[_0x51a5('0x2f')](_0x51a5('0x30'));this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0]['lastevent']=_0x51a5('0x5f');this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x56')]='abandoned';logger[_0x51a5('0x2a')](_0x51a5('0x60'),_0x42c0b0[_0x51a5('0x28')],util[_0x51a5('0x2c')](this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0],{'showHidden':![],'depth':null}));ami[_0x51a5('0x21')](_0x51a5('0x61'),this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0]);}}}}}catch(_0x1ed07b){logger['error'](_0x51a5('0x62'),_0x42c0b0[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x1ed07b,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x51a5('0x63')]=function(_0x40ead8){try{if(this[_0x51a5('0x23')](_0x40ead8)){logger[_0x51a5('0x2a')](_0x51a5('0x64'),_0x40ead8['uniqueid'],util[_0x51a5('0x2c')](_0x40ead8,{'showHidden':![],'depth':null}));if(this['channels'][_0x40ead8[_0x51a5('0x28')]]){for(var _0x6429ce in this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x51a5('0x41')](_0x6429ce)){if(this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x44')]&&!this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x15')]){logger[_0x51a5('0x26')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40ead8[_0x51a5('0x28')],this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x43')],_0x6429ce);this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x15')]=!![];this['channels'][_0x40ead8['uniqueid']][_0x6429ce][_0x51a5('0x65')]=moment()[_0x51a5('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x51a5('0xb')][_0x40ead8['uniqueid']][_0x6429ce]['lastevent']='complete';this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x56')]=_0x40ead8['reason']==_0x51a5('0x66')?_0x51a5('0x67'):_0x40ead8[_0x51a5('0x56')];this[_0x51a5('0xb')][_0x40ead8['uniqueid']][_0x6429ce]['talktime']=_0x40ead8['talktime'];if(this[_0x51a5('0xd')][_0x40ead8['queue']]&&this['voiceQueues'][_0x40ead8[_0x51a5('0x2e')]][_0x51a5('0x68')]){this['channels'][_0x40ead8['uniqueid']][_0x6429ce][_0x51a5('0x69')]=this[_0x51a5('0xd')][_0x40ead8[_0x51a5('0x2e')]][_0x51a5('0x6a')];this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce]['agentacw']=!![];}this[_0x51a5('0xe')][_0x40ead8[_0x51a5('0x2d')]]=_['omit'](this[_0x51a5('0xe')][_0x40ead8[_0x51a5('0x2d')]],[_0x51a5('0x2e'),'destconnectedlinenum']);logger[_0x51a5('0x2a')](_0x51a5('0x6b'),_0x40ead8[_0x51a5('0x28')],util[_0x51a5('0x2c')](this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce],{'showHidden':![],'depth':null}));ami[_0x51a5('0x21')]('custom:agentcomplete',this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce]);logger[_0x51a5('0x2a')](_0x51a5('0x6c'),_0x40ead8['uniqueid'],util[_0x51a5('0x2c')]({'id':this['agents'][_0x40ead8[_0x51a5('0x2d')]]['id'],'destaccountcode':_0x40ead8[_0x51a5('0x6d')]},{'showHidden':![],'depth':null}));this[_0x51a5('0x21')](util[_0x51a5('0x2f')](_0x51a5('0x3b'),_0x40ead8['membername']),_0x51a5('0x6e'),{'id':this[_0x51a5('0xe')][_0x40ead8[_0x51a5('0x2d')]]['id'],'destaccountcode':Number(_0x40ead8[_0x51a5('0x6d')])});}}}}}}catch(_0x14ff3e){logger[_0x51a5('0x3d')](_0x51a5('0x6f'),_0x40ead8[_0x51a5('0x28')],util['inspect'](_0x14ff3e,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncVarSet']=function(_0x2c0796){try{if(this['isNotNull'](_0x2c0796)){logger[_0x51a5('0x2a')](_0x51a5('0x70'),_0x2c0796[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x2c0796,{'showHidden':![],'depth':null}));this[_0x51a5('0x71')](_0x2c0796['uniqueid'],_[_0x51a5('0x72')](_0x2c0796['variable'])[0x0],_0x2c0796['value']);if(this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]]){for(var _0x5df420 in this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x51a5('0x41')](_0x5df420)){logger[_0x51a5('0x26')](_0x51a5('0x73'),_0x2c0796[_0x51a5('0x28')],_0x5df420,_[_0x51a5('0x72')](_0x2c0796[_0x51a5('0x74')])[0x0],_0x2c0796[_0x51a5('0x75')]);if(_[_0x51a5('0x24')](this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x5df420]['variables'])){this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x5df420][_0x51a5('0xf')]={};}this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x5df420][_0x51a5('0xf')]=this[_0x51a5('0xf')][_0x2c0796[_0x51a5('0x28')]];}}}}}catch(_0x5447ae){logger[_0x51a5('0x3d')](_0x51a5('0x76'),_0x2c0796['uniqueid'],util[_0x51a5('0x2c')](_0x5447ae,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x71')]=function(_0x341656,_0x38ad7d,_0x489457){var _0x55dd75=['rtpaudioqos','rtpaudioqosbridged',_0x51a5('0x77'),'rtpaudioqosjitterbridged',_0x51a5('0x78'),_0x51a5('0x79'),_0x51a5('0x7a'),_0x51a5('0x7b'),'sipcallid','sipuri',_0x51a5('0x7c'),'bridgepvtcallid',_0x51a5('0x7d'),_0x51a5('0x7e'),_0x51a5('0x7f'),_0x51a5('0x80'),_0x51a5('0x43'),'memberpenalty',_0x51a5('0x81')];if(!_[_0x51a5('0x82')](_0x38ad7d)&&!_[_0x51a5('0x83')](_0x55dd75,_0x38ad7d)){if(_['isUndefined'](this[_0x51a5('0xf')][_0x341656])){this[_0x51a5('0xf')][_0x341656]={};}this['variables'][_0x341656][_0x38ad7d]=_0x489457;}};VoiceAgentReport['prototype'][_0x51a5('0x19')]=function(_0x34f231){try{if(this['isNotNull'](_0x34f231)){logger['debug'](_0x51a5('0x84'),_0x34f231['uniqueid'],util[_0x51a5('0x2c')](_0x34f231,{'showHidden':![],'depth':null}));if(this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]]){for(var _0x5bc19a in this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]]){if(this['channels'][_0x34f231[_0x51a5('0x28')]][_0x51a5('0x41')](_0x5bc19a)){if(this[_0x51a5('0xb')][_0x34f231['uniqueid']][_0x5bc19a]['reason']==_0x51a5('0x66')&&this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]][_0x5bc19a][_0x51a5('0x15')]){logger[_0x51a5('0x26')](_0x51a5('0x85'),_0x34f231[_0x51a5('0x28')],_0x5bc19a);this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]][_0x5bc19a][_0x51a5('0x65')]=moment()[_0x51a5('0x2f')](_0x51a5('0x30'));}}}logger[_0x51a5('0x2a')](_0x51a5('0x86'),_0x34f231[_0x51a5('0x28')],util['inspect'](_[_0x51a5('0x87')](this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x51a5('0x88'),_[_0x51a5('0x87')](this['channels'][_0x34f231[_0x51a5('0x28')]]));delete this['channels'][_0x34f231[_0x51a5('0x28')]];}if(this[_0x51a5('0xf')][_0x34f231[_0x51a5('0x28')]]){delete this[_0x51a5('0xf')][_0x34f231[_0x51a5('0x28')]];}}}catch(_0x5d7590){logger[_0x51a5('0x3d')](_0x51a5('0x89'),_0x34f231[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x5d7590,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x51a5('0x1e')]=function(_0x390fb7){try{if(this[_0x51a5('0x23')](_0x390fb7)){logger[_0x51a5('0x2a')](_0x51a5('0x8a'),_0x390fb7[_0x51a5('0x28')],util['inspect'](_0x390fb7,{'showHidden':![],'depth':null}));if(this['channels'][_0x390fb7[_0x51a5('0x8b')]]){for(var _0x57227c in this['channels'][_0x390fb7[_0x51a5('0x8b')]]){if(this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x51a5('0x41')](_0x57227c)){if(_0x390fb7[_0x51a5('0x8c')]===_0x57227c){logger['info'](_0x51a5('0x8d'),_0x390fb7[_0x51a5('0x28')],this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x57227c]['membername'],_0x57227c);var _0x1d594a=moment();this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x57227c][_0x51a5('0x15')]=!![];this[_0x51a5('0xb')][_0x390fb7['transfereeuniqueid']][_0x57227c][_0x51a5('0x65')]=moment()['format'](_0x51a5('0x30'));this['channels'][_0x390fb7['transfereeuniqueid']][_0x57227c][_0x51a5('0x49')]=_0x51a5('0x8e');this['channels'][_0x390fb7[_0x51a5('0x8b')]][_0x57227c][_0x51a5('0x56')]='transfer';this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x57227c][_0x51a5('0x8f')]=_0x1d594a[_0x51a5('0x90')](this[_0x51a5('0xb')][_0x390fb7['transfereeuniqueid']][_0x57227c][_0x51a5('0x44')],_0x51a5('0x91'));}}}}if(this['channels'][_0x390fb7['secondtransfereruniqueid']]){var _0xb20da3=this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x92')]];this[_0x51a5('0xb')][_0x390fb7['secondtransfereruniqueid']]=this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]];this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]]=_0xb20da3;}}}catch(_0x476051){logger[_0x51a5('0x3d')]('[%s][voiceAgentReport][attendedtransfer]',_0x390fb7[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x476051,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x20')]=function(_0x51e3ac){try{if(this[_0x51a5('0x23')](_0x51e3ac)){logger[_0x51a5('0x2a')](_0x51a5('0x93'),_0x51e3ac[_0x51a5('0x28')],util['inspect'](_0x51e3ac,{'showHidden':![],'depth':null}));if(this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]]){for(var _0x2d19bb in this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']]){if(this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x51a5('0x41')](_0x2d19bb)){if(_0x51e3ac[_0x51a5('0x94')]===_0x2d19bb){logger[_0x51a5('0x26')](_0x51a5('0x95'),_0x51e3ac['uniqueid'],this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x43')],_0x2d19bb);var _0x725684=moment();this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x2d19bb]['agentcomplete']=!![];this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x65')]=_0x725684;this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x49')]=_0x51a5('0x8e');this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x56')]=_0x51a5('0x66');this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x2d19bb][_0x51a5('0x8f')]=_0x725684[_0x51a5('0x90')](this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x2d19bb][_0x51a5('0x44')],_0x51a5('0x91'));}}}}}}catch(_0x94ed77){logger[_0x51a5('0x3d')](_0x51a5('0x96'),_0x51e3ac[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x94ed77,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x1a')]=function(_0x434166){var _0x536c70='';try{if(this['isNotNull'](_0x434166)){logger[_0x51a5('0x2a')](_0x51a5('0x97'),_0x434166['uniqueid'],util[_0x51a5('0x2c')](_0x434166,{'showHidden':![],'depth':null}));if(_0x434166['channel']){_0x536c70=_0x434166['channel'][_0x51a5('0x98')](0x0,_0x434166[_0x51a5('0x99')][_0x51a5('0x9a')]('-'));if(this['agents'][_0x536c70]){logger['info'](_0x51a5('0x9b'),_0x434166[_0x51a5('0x28')],_0x536c70);this[_0x51a5('0xe')][_0x536c70][_0x51a5('0x9c')]=!![];}}}}catch(_0x59ec20){logger[_0x51a5('0x3d')](_0x51a5('0x9d'),_0x434166['uniqueid'],util['inspect'](_0x59ec20,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x1c')]=function(_0x4327b4){var _0x9537e9='';try{if(this['isNotNull'](_0x4327b4)){logger[_0x51a5('0x2a')](_0x51a5('0x9e'),_0x4327b4[_0x51a5('0x28')],util['inspect'](_0x4327b4,{'showHidden':![],'depth':null}));if(_0x4327b4[_0x51a5('0x99')]){_0x9537e9=_0x4327b4[_0x51a5('0x99')][_0x51a5('0x98')](0x0,_0x4327b4['channel'][_0x51a5('0x9a')]('-'));if(this[_0x51a5('0xe')][_0x9537e9]){logger['info'](_0x51a5('0x9f'),_0x4327b4[_0x51a5('0x28')],_0x9537e9);this[_0x51a5('0xe')][_0x9537e9][_0x51a5('0x9c')]=![];}}}}catch(_0x519f0a){logger['error'](_0x51a5('0xa0'),_0x4327b4[_0x51a5('0x28')],util['inspect'](_0x519f0a,{'showHidden':![],'depth':null}));}};module[_0x51a5('0xa1')]=VoiceAgentReport;
\ No newline at end of file
+var _0xb212=['mandatoryDisposition','inbound','variables','voice','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','inspect','custom:agentcalled','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','membername','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','routealias','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','lastevent','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','error','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent: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','reason','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcomplete','agentcompleteAt','transfer','agent','talktime','acw','acwTimeout','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','variable','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','varset','syncVarSet','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','destuniqueid','debug','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','queue'];(function(_0x2f7c4e,_0x12dfeb){var _0xd1b287=function(_0x3d6f12){while(--_0x3d6f12){_0x2f7c4e['push'](_0x2f7c4e['shift']());}};_0xd1b287(++_0x12dfeb);}(_0xb212,0x115));var _0x2b21=function(_0x128bd8,_0x5bea24){_0x128bd8=_0x128bd8-0x0;var _0x44108c=_0xb212[_0x128bd8];return _0x44108c;};'use strict';var _=require(_0x2b21('0x0'));var moment=require(_0x2b21('0x1'));var util=require('util');var Redis=require(_0x2b21('0x2'));var config=require(_0x2b21('0x3'));var logger=require(_0x2b21('0x4'))(_0x2b21('0x5'));var ami=require(_0x2b21('0x6'));config[_0x2b21('0x7')]=_[_0x2b21('0x8')](config[_0x2b21('0x7')],{'host':_0x2b21('0x9'),'port':0x18eb});var io=require(_0x2b21('0xa'))(new Redis(config[_0x2b21('0x7')]));function VoiceAgentReport(_0x343987){this[_0x2b21('0xb')]={};this[_0x2b21('0xc')]=_0x343987['channels'];this[_0x2b21('0xd')]=_0x343987[_0x2b21('0xd')];this[_0x2b21('0xe')]=_0x343987[_0x2b21('0xe')];this['variables']={};ami['on'](_0x2b21('0xf'),this[_0x2b21('0x10')][_0x2b21('0x11')](this));ami['on'](_0x2b21('0x12'),this[_0x2b21('0x13')][_0x2b21('0x11')](this));ami['on'](_0x2b21('0x14'),this[_0x2b21('0x15')]['bind'](this));ami['on'](_0x2b21('0x16'),this[_0x2b21('0x17')][_0x2b21('0x11')](this));ami['on']('agentcomplete',this[_0x2b21('0x18')][_0x2b21('0x11')](this));ami['on'](_0x2b21('0x19'),this[_0x2b21('0x1a')][_0x2b21('0x11')](this));ami['on']('hangup',this['syncHangup'][_0x2b21('0x11')](this));ami['on'](_0x2b21('0x1b'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x2b21('0x1c'),this[_0x2b21('0x1d')][_0x2b21('0x11')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x2b21('0x11')](this));ami['on'](_0x2b21('0x1e'),this[_0x2b21('0x1f')][_0x2b21('0x11')](this));}VoiceAgentReport[_0x2b21('0x20')][_0x2b21('0x21')]=function(_0x160574,_0x30540d,_0x41a362){io['to'](_0x160574)[_0x2b21('0x21')](_0x30540d,_0x41a362);};VoiceAgentReport['prototype'][_0x2b21('0x22')]=function(_0x3aa01a){return _0x3aa01a!==null&&!_[_0x2b21('0x23')](_0x3aa01a);};VoiceAgentReport[_0x2b21('0x20')][_0x2b21('0x10')]=function(_0x1ac491){try{if(this[_0x2b21('0x22')](_0x1ac491)){logger[_0x2b21('0x24')](_0x2b21('0x25'),_0x1ac491['uniqueid'],_0x1ac491['membername'],_0x1ac491[_0x2b21('0x26')]);logger[_0x2b21('0x27')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x1ac491[_0x2b21('0x28')],util['inspect'](_0x1ac491,{'showHidden':![],'depth':null}));if(_[_0x2b21('0x23')](this[_0x2b21('0xb')][_0x1ac491[_0x2b21('0x28')]])){this[_0x2b21('0xb')][_0x1ac491[_0x2b21('0x28')]]={};}if(_[_0x2b21('0x23')](this['channels'][_0x1ac491[_0x2b21('0x28')]][_0x1ac491[_0x2b21('0x26')]])){this[_0x2b21('0xb')][_0x1ac491[_0x2b21('0x28')]][_0x1ac491[_0x2b21('0x26')]]={'agentcalledAt':moment()[_0x2b21('0x29')](_0x2b21('0x2a')),'lastevent':_0x2b21('0x2b'),'mandatoryDisposition':this[_0x2b21('0xd')][_0x1ac491[_0x2b21('0x2c')]]?this['voiceQueues'][_0x1ac491[_0x2b21('0x2c')]][_0x2b21('0x2d')]||![]:![],'type':this[_0x2b21('0xd')][_0x1ac491[_0x2b21('0x2c')]]?this[_0x2b21('0xd')][_0x1ac491[_0x2b21('0x2c')]]['type']||_0x2b21('0x2e'):_0x2b21('0x2e'),'variables':this[_0x2b21('0x2f')][_0x1ac491['uniqueid']],'motionChannel':_0x2b21('0x30')};}_[_0x2b21('0x31')](this[_0x2b21('0xb')][_0x1ac491[_0x2b21('0x28')]][_0x1ac491['destuniqueid']],_[_0x2b21('0x32')](_0x1ac491,[_0x2b21('0x33'),_0x2b21('0x34')]));logger['debug'](_0x2b21('0x35'),_0x1ac491[_0x2b21('0x28')],util[_0x2b21('0x36')](this[_0x2b21('0xb')][_0x1ac491[_0x2b21('0x28')]][_0x1ac491[_0x2b21('0x26')]],{'showHidden':![],'depth':null}));ami[_0x2b21('0x21')](_0x2b21('0x37'),this[_0x2b21('0xb')][_0x1ac491[_0x2b21('0x28')]][_0x1ac491[_0x2b21('0x26')]]);var _0x56138d={'id':this[_0x2b21('0xe')][_0x1ac491[_0x2b21('0x38')]]['id'],'calleridnum':this[_0x2b21('0xb')][_0x1ac491[_0x2b21('0x28')]][_0x1ac491[_0x2b21('0x26')]][_0x2b21('0x39')],'queue':this['channels'][_0x1ac491[_0x2b21('0x28')]][_0x1ac491[_0x2b21('0x26')]][_0x2b21('0x2c')],'variables':this[_0x2b21('0xb')][_0x1ac491['uniqueid']][_0x1ac491[_0x2b21('0x26')]]['variables']};logger[_0x2b21('0x27')](_0x2b21('0x3a'),_0x1ac491[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x56138d,{'showHidden':![],'depth':null}));this[_0x2b21('0x21')](util[_0x2b21('0x29')](_0x2b21('0x3b'),_0x1ac491[_0x2b21('0x3c')]),'user:called',_0x56138d);}}catch(_0x59b2eb){logger['error'](_0x2b21('0x3d'),_0x1ac491[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x59b2eb,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2b21('0x20')]['syncAgentConnect']=function(_0x2eef13){try{if(this[_0x2b21('0x22')](_0x2eef13)){if(this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]]){logger[_0x2b21('0x27')](_0x2b21('0x3e'),_0x2eef13[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x2eef13,{'showHidden':![],'depth':null}));for(var _0x3774b8 in this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]]){if(this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x2b21('0x3f')](_0x3774b8)){if(_0x2eef13[_0x2b21('0x26')]===_0x3774b8){logger['info'](_0x2b21('0x40'),_0x2eef13[_0x2b21('0x28')],_0x2eef13[_0x2b21('0x3c')],_0x2eef13[_0x2b21('0x26')]);this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x41')]=moment()[_0x2b21('0x29')](_0x2b21('0x2a'));this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8]['connectedlinename']=_0x2eef13['connectedlinename'];this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x42')]=_0x2eef13[_0x2b21('0x42')];this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8]['destchannelstate']=_0x2eef13[_0x2b21('0x43')];this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x44')]=_0x2eef13[_0x2b21('0x44')];this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x45')]=_0x2eef13[_0x2b21('0x45')];this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8]['lastevent']=_0x2b21('0x46');if(this[_0x2b21('0xc')][this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x28')]]){var _0x503d4f=this[_0x2b21('0xc')][this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x28')]][_0x2b21('0x47')];this[_0x2b21('0xb')][_0x2eef13['uniqueid']][_0x3774b8][_0x2b21('0x47')]=_0x503d4f;_0x2eef13[_0x2b21('0x47')]=_0x503d4f;}_[_0x2b21('0x31')](this[_0x2b21('0xe')][_0x2eef13['interface']],_[_0x2b21('0x48')](_0x2eef13,['queue',_0x2b21('0x49'),_0x2b21('0x47')]));logger[_0x2b21('0x27')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x2eef13['uniqueid'],util[_0x2b21('0x36')](this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x2eef13[_0x2b21('0x26')]],{'showHidden':![],'depth':null}));ami[_0x2b21('0x21')](_0x2b21('0x4a'),this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x2eef13[_0x2b21('0x26')]]);logger[_0x2b21('0x27')](_0x2b21('0x4b'),_0x2eef13[_0x2b21('0x28')],util[_0x2b21('0x36')](this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x2eef13[_0x2b21('0x26')]],{'showHidden':![],'depth':null}));this[_0x2b21('0x21')](util[_0x2b21('0x29')](_0x2b21('0x3b'),_0x2eef13['membername']),_0x2b21('0x4c'),this[_0x2b21('0xb')][_0x2eef13['uniqueid']][_0x2eef13['destuniqueid']]);}else if(!this[_0x2b21('0xb')][_0x2eef13['uniqueid']][_0x3774b8]['agentringnoanswer']&&!this[_0x2b21('0xb')][_0x2eef13['uniqueid']][_0x3774b8]['agentcomplete']){logger[_0x2b21('0x24')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x2eef13['uniqueid'],this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x3c')],_0x3774b8);this[_0x2b21('0xb')][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x14')]=!![];this[_0x2b21('0xb')][_0x2eef13['uniqueid']][_0x3774b8][_0x2b21('0x4d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x4e')]=_0x2eef13[_0x2b21('0x26')];this[_0x2b21('0xb')][_0x2eef13['uniqueid']][_0x3774b8][_0x2b21('0x4f')]=_0x2eef13['membername'];this['channels'][_0x2eef13[_0x2b21('0x28')]][_0x3774b8][_0x2b21('0x50')]=_0x2b21('0x51');this['channels'][_0x2eef13[_0x2b21('0x28')]][_0x3774b8]['reason']='answered_elsewhere';logger[_0x2b21('0x27')](_0x2b21('0x52'),_0x2eef13[_0x2b21('0x28')],util[_0x2b21('0x36')](this['channels'][_0x2eef13['uniqueid']][_0x3774b8],{'showHidden':![],'depth':null}));ami['emit']('custom:agentansweredelsewhere',this[_0x2b21('0xb')][_0x2eef13['uniqueid']][_0x3774b8]);}}}}}}catch(_0x5d189f){logger[_0x2b21('0x53')]('[%s][voiceAgentReport][agentconnect]',_0x2eef13['uniqueid'],util[_0x2b21('0x36')](_0x5d189f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2b21('0x20')][_0x2b21('0x15')]=function(_0x3adb58){try{if(this[_0x2b21('0x22')](_0x3adb58)){logger['debug'](_0x2b21('0x54'),_0x3adb58[_0x2b21('0x28')],util['inspect'](_0x3adb58,{'showHidden':![],'depth':null}));if(this[_0x2b21('0xb')][_0x3adb58[_0x2b21('0x28')]]&&this[_0x2b21('0xb')][_0x3adb58['uniqueid']][_0x3adb58['destuniqueid']]){logger[_0x2b21('0x24')](_0x2b21('0x55'),_0x3adb58['uniqueid'],_0x3adb58[_0x2b21('0x3c')],_0x3adb58[_0x2b21('0x26')]);this[_0x2b21('0xb')][_0x3adb58[_0x2b21('0x28')]][_0x3adb58[_0x2b21('0x26')]]['agentringnoanswer']=!![];this[_0x2b21('0xb')][_0x3adb58[_0x2b21('0x28')]][_0x3adb58[_0x2b21('0x26')]][_0x2b21('0x4d')]=moment()['format'](_0x2b21('0x2a'));this[_0x2b21('0xb')][_0x3adb58[_0x2b21('0x28')]][_0x3adb58[_0x2b21('0x26')]][_0x2b21('0x50')]='rejected';this['channels'][_0x3adb58[_0x2b21('0x28')]][_0x3adb58[_0x2b21('0x26')]]['reason']='rejected';logger[_0x2b21('0x27')](_0x2b21('0x56'),_0x3adb58['uniqueid'],util[_0x2b21('0x36')](this[_0x2b21('0xb')][_0x3adb58['uniqueid']][_0x3adb58[_0x2b21('0x26')]],{'showHidden':![],'depth':null}));ami['emit'](_0x2b21('0x57'),this['channels'][_0x3adb58[_0x2b21('0x28')]][_0x3adb58[_0x2b21('0x26')]]);}}}catch(_0x765602){logger[_0x2b21('0x53')](_0x2b21('0x58'),_0x3adb58[_0x2b21('0x28')],util['inspect'](_0x765602,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2b21('0x17')]=function(_0x4b3818){try{if(this['isNotNull'](_0x4b3818)){logger[_0x2b21('0x27')](_0x2b21('0x59'),_0x4b3818[_0x2b21('0x28')],util['inspect'](_0x4b3818,{'showHidden':![],'depth':null}));if(this['channels'][_0x4b3818['uniqueid']]){for(var _0x46f2be in this[_0x2b21('0xb')][_0x4b3818['uniqueid']]){if(this[_0x2b21('0xb')][_0x4b3818[_0x2b21('0x28')]][_0x2b21('0x3f')](_0x46f2be)&&!this['channels'][_0x4b3818[_0x2b21('0x28')]][_0x46f2be][_0x2b21('0x14')]&&!this[_0x2b21('0xb')][_0x4b3818[_0x2b21('0x28')]][_0x46f2be]['agentcomplete']){logger[_0x2b21('0x24')](_0x2b21('0x5a'),_0x4b3818[_0x2b21('0x28')],this[_0x2b21('0xb')][_0x4b3818[_0x2b21('0x28')]][_0x46f2be]['membername'],_0x46f2be);this['channels'][_0x4b3818[_0x2b21('0x28')]][_0x46f2be][_0x2b21('0x14')]=!![];this[_0x2b21('0xb')][_0x4b3818[_0x2b21('0x28')]][_0x46f2be][_0x2b21('0x4d')]=moment()[_0x2b21('0x29')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x4b3818[_0x2b21('0x28')]][_0x46f2be]['lastevent']=_0x2b21('0x5b');this[_0x2b21('0xb')][_0x4b3818['uniqueid']][_0x46f2be][_0x2b21('0x5c')]=_0x2b21('0x5b');logger[_0x2b21('0x27')](_0x2b21('0x5d'),_0x4b3818['uniqueid'],util[_0x2b21('0x36')](this['channels'][_0x4b3818[_0x2b21('0x28')]][_0x46f2be],{'showHidden':![],'depth':null}));ami[_0x2b21('0x21')](_0x2b21('0x5e'),this[_0x2b21('0xb')][_0x4b3818[_0x2b21('0x28')]][_0x46f2be]);}}}}}catch(_0x51b67b){logger[_0x2b21('0x53')](_0x2b21('0x5f'),_0x4b3818[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x51b67b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2b21('0x20')][_0x2b21('0x18')]=function(_0x2d27c7){try{if(this[_0x2b21('0x22')](_0x2d27c7)){logger['debug'](_0x2b21('0x60'),_0x2d27c7[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x2d27c7,{'showHidden':![],'depth':null}));if(this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]]){for(var _0xec6b74 in this['channels'][_0x2d27c7[_0x2b21('0x28')]]){if(this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]][_0x2b21('0x3f')](_0xec6b74)){if(this['channels'][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74]['agentconnectAt']&&!this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74]['agentcomplete']){logger[_0x2b21('0x24')](_0x2b21('0x61'),_0x2d27c7[_0x2b21('0x28')],this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74][_0x2b21('0x3c')],_0xec6b74);this[_0x2b21('0xb')][_0x2d27c7['uniqueid']][_0xec6b74][_0x2b21('0x62')]=!![];this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74][_0x2b21('0x63')]=moment()[_0x2b21('0x29')](_0x2b21('0x2a'));this['channels'][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74][_0x2b21('0x50')]='complete';this[_0x2b21('0xb')][_0x2d27c7['uniqueid']][_0xec6b74][_0x2b21('0x5c')]=_0x2d27c7['reason']==_0x2b21('0x64')?_0x2b21('0x65'):_0x2d27c7[_0x2b21('0x5c')];this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74][_0x2b21('0x66')]=_0x2d27c7['talktime'];if(this['voiceQueues'][_0x2d27c7[_0x2b21('0x2c')]]&&this[_0x2b21('0xd')][_0x2d27c7['queue']][_0x2b21('0x67')]){this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74]['acwtime']=this['voiceQueues'][_0x2d27c7[_0x2b21('0x2c')]][_0x2b21('0x68')];this['channels'][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74][_0x2b21('0x69')]=!![];}this[_0x2b21('0xe')][_0x2d27c7[_0x2b21('0x38')]]=_['omit'](this[_0x2b21('0xe')][_0x2d27c7[_0x2b21('0x38')]],[_0x2b21('0x2c'),_0x2b21('0x49')]);logger[_0x2b21('0x27')](_0x2b21('0x6a'),_0x2d27c7[_0x2b21('0x28')],util[_0x2b21('0x36')](this[_0x2b21('0xb')][_0x2d27c7[_0x2b21('0x28')]][_0xec6b74],{'showHidden':![],'depth':null}));ami[_0x2b21('0x21')](_0x2b21('0x6b'),this[_0x2b21('0xb')][_0x2d27c7['uniqueid']][_0xec6b74]);logger['debug']('[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:',_0x2d27c7['uniqueid'],util['inspect']({'id':this[_0x2b21('0xe')][_0x2d27c7[_0x2b21('0x38')]]['id'],'destaccountcode':_0x2d27c7[_0x2b21('0x6c')]},{'showHidden':![],'depth':null}));this[_0x2b21('0x21')](util[_0x2b21('0x29')](_0x2b21('0x3b'),_0x2d27c7['membername']),_0x2b21('0x6d'),{'id':this[_0x2b21('0xe')][_0x2d27c7[_0x2b21('0x38')]]['id'],'destaccountcode':_0x2d27c7[_0x2b21('0x6c')]});}}}}}}catch(_0x331154){logger[_0x2b21('0x53')](_0x2b21('0x6e'),_0x2d27c7[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x331154,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2b21('0x20')][_0x2b21('0x1a')]=function(_0x142a36){try{if(this[_0x2b21('0x22')](_0x142a36)){logger[_0x2b21('0x27')](_0x2b21('0x6f'),_0x142a36[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x142a36,{'showHidden':![],'depth':null}));this[_0x2b21('0x70')](_0x142a36[_0x2b21('0x28')],_[_0x2b21('0x71')](_0x142a36['variable'])[0x0],_0x142a36[_0x2b21('0x72')]);if(this[_0x2b21('0xb')][_0x142a36['uniqueid']]){for(var _0x7377d1 in this[_0x2b21('0xb')][_0x142a36[_0x2b21('0x28')]]){if(this['channels'][_0x142a36[_0x2b21('0x28')]][_0x2b21('0x3f')](_0x7377d1)){logger[_0x2b21('0x24')](_0x2b21('0x73'),_0x142a36[_0x2b21('0x28')],_0x7377d1,_[_0x2b21('0x71')](_0x142a36[_0x2b21('0x74')])[0x0],_0x142a36['value']);if(_[_0x2b21('0x23')](this[_0x2b21('0xb')][_0x142a36['uniqueid']][_0x7377d1][_0x2b21('0x2f')])){this['channels'][_0x142a36[_0x2b21('0x28')]][_0x7377d1]['variables']={};}this[_0x2b21('0xb')][_0x142a36[_0x2b21('0x28')]][_0x7377d1]['variables']=this[_0x2b21('0x2f')][_0x142a36[_0x2b21('0x28')]];}}}}}catch(_0x1e0322){logger[_0x2b21('0x53')](_0x2b21('0x75'),_0x142a36[_0x2b21('0x28')],util['inspect'](_0x1e0322,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['addVariable']=function(_0x472966,_0x2b8040,_0x5bfb9f){var _0x524ccc=[_0x2b21('0x76'),_0x2b21('0x77'),_0x2b21('0x78'),_0x2b21('0x79'),'rtpaudioqosloss',_0x2b21('0x7a'),_0x2b21('0x7b'),_0x2b21('0x7c'),_0x2b21('0x7d'),_0x2b21('0x7e'),_0x2b21('0x7f'),'bridgepvtcallid',_0x2b21('0x80'),_0x2b21('0x81'),_0x2b21('0x82'),'memberlastcall',_0x2b21('0x3c'),_0x2b21('0x83'),_0x2b21('0x84')];if(!_[_0x2b21('0x85')](_0x2b8040)&&!_[_0x2b21('0x86')](_0x524ccc,_0x2b8040)){if(_[_0x2b21('0x23')](this[_0x2b21('0x2f')][_0x472966])){this[_0x2b21('0x2f')][_0x472966]={};}this[_0x2b21('0x2f')][_0x472966][_0x2b8040]=_0x5bfb9f;}};VoiceAgentReport[_0x2b21('0x20')][_0x2b21('0x87')]=function(_0x165a80){try{if(this[_0x2b21('0x22')](_0x165a80)){logger[_0x2b21('0x27')](_0x2b21('0x88'),_0x165a80[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x165a80,{'showHidden':![],'depth':null}));if(this[_0x2b21('0xb')][_0x165a80[_0x2b21('0x28')]]){for(var _0x1c297f in this[_0x2b21('0xb')][_0x165a80[_0x2b21('0x28')]]){if(this['channels'][_0x165a80[_0x2b21('0x28')]][_0x2b21('0x3f')](_0x1c297f)){if(this[_0x2b21('0xb')][_0x165a80[_0x2b21('0x28')]][_0x1c297f][_0x2b21('0x5c')]==_0x2b21('0x64')&&this['channels'][_0x165a80['uniqueid']][_0x1c297f][_0x2b21('0x62')]){logger['info'](_0x2b21('0x89'),_0x165a80[_0x2b21('0x28')],_0x1c297f);this['channels'][_0x165a80['uniqueid']][_0x1c297f][_0x2b21('0x63')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x2b21('0x27')]('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x165a80[_0x2b21('0x28')],util['inspect'](_[_0x2b21('0x8a')](this[_0x2b21('0xb')][_0x165a80[_0x2b21('0x28')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x2b21('0x8b'),_['values'](this[_0x2b21('0xb')][_0x165a80[_0x2b21('0x28')]]));delete this[_0x2b21('0xb')][_0x165a80[_0x2b21('0x28')]];}if(this[_0x2b21('0x2f')][_0x165a80[_0x2b21('0x28')]]){delete this[_0x2b21('0x2f')][_0x165a80[_0x2b21('0x28')]];}}}catch(_0xbbb4a3){logger[_0x2b21('0x53')]('[%s][voiceAgentReport][hangup]',_0x165a80[_0x2b21('0x28')],util[_0x2b21('0x36')](_0xbbb4a3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2b21('0x20')][_0x2b21('0x8c')]=function(_0x16b65f){try{if(this[_0x2b21('0x22')](_0x16b65f)){logger[_0x2b21('0x27')](_0x2b21('0x8d'),_0x16b65f['uniqueid'],util[_0x2b21('0x36')](_0x16b65f,{'showHidden':![],'depth':null}));if(this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x8e')]]){for(var _0x412970 in this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x8e')]]){if(this[_0x2b21('0xb')][_0x16b65f['transfereeuniqueid']][_0x2b21('0x3f')](_0x412970)){if(_0x16b65f['origtransfereruniqueid']===_0x412970){logger[_0x2b21('0x24')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x16b65f['uniqueid'],this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x8e')]][_0x412970][_0x2b21('0x3c')],_0x412970);var _0x3e3326=moment();this[_0x2b21('0xb')][_0x16b65f['transfereeuniqueid']][_0x412970]['agentcomplete']=!![];this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x8e')]][_0x412970][_0x2b21('0x63')]=moment()[_0x2b21('0x29')](_0x2b21('0x2a'));this[_0x2b21('0xb')][_0x16b65f['transfereeuniqueid']][_0x412970][_0x2b21('0x50')]=_0x2b21('0x8f');this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x8e')]][_0x412970][_0x2b21('0x5c')]=_0x2b21('0x64');this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x8e')]][_0x412970][_0x2b21('0x66')]=_0x3e3326['diff'](this[_0x2b21('0xb')][_0x16b65f['transfereeuniqueid']][_0x412970]['agentconnectAt'],_0x2b21('0x90'));}}}}if(this['channels'][_0x16b65f[_0x2b21('0x91')]]){var _0xa9ddec=this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x91')]];this['channels'][_0x16b65f[_0x2b21('0x91')]]=this['channels'][_0x16b65f[_0x2b21('0x8e')]];this[_0x2b21('0xb')][_0x16b65f[_0x2b21('0x8e')]]=_0xa9ddec;}}}catch(_0x585148){logger[_0x2b21('0x53')](_0x2b21('0x92'),_0x16b65f[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x585148,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncBlindTransfer']=function(_0x3cbe06){try{if(this['isNotNull'](_0x3cbe06)){logger[_0x2b21('0x27')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x3cbe06[_0x2b21('0x28')],util['inspect'](_0x3cbe06,{'showHidden':![],'depth':null}));if(this[_0x2b21('0xb')][_0x3cbe06[_0x2b21('0x8e')]]){for(var _0x304a6c in this['channels'][_0x3cbe06[_0x2b21('0x8e')]]){if(this[_0x2b21('0xb')][_0x3cbe06[_0x2b21('0x8e')]][_0x2b21('0x3f')](_0x304a6c)){if(_0x3cbe06[_0x2b21('0x93')]===_0x304a6c){logger[_0x2b21('0x24')](_0x2b21('0x94'),_0x3cbe06[_0x2b21('0x28')],this[_0x2b21('0xb')][_0x3cbe06[_0x2b21('0x8e')]][_0x304a6c]['membername'],_0x304a6c);var _0x302302=moment();this[_0x2b21('0xb')][_0x3cbe06[_0x2b21('0x8e')]][_0x304a6c][_0x2b21('0x62')]=!![];this['channels'][_0x3cbe06[_0x2b21('0x8e')]][_0x304a6c]['agentcompleteAt']=_0x302302;this['channels'][_0x3cbe06[_0x2b21('0x8e')]][_0x304a6c][_0x2b21('0x50')]=_0x2b21('0x8f');this[_0x2b21('0xb')][_0x3cbe06[_0x2b21('0x8e')]][_0x304a6c]['reason']='transfer';this[_0x2b21('0xb')][_0x3cbe06[_0x2b21('0x8e')]][_0x304a6c][_0x2b21('0x66')]=_0x302302['diff'](this[_0x2b21('0xb')][_0x3cbe06['transfereeuniqueid']][_0x304a6c][_0x2b21('0x41')],_0x2b21('0x90'));}}}}}}catch(_0x3bce04){logger[_0x2b21('0x53')](_0x2b21('0x95'),_0x3cbe06['uniqueid'],util['inspect'](_0x3bce04,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2b21('0x20')]['syncMusicOnHoldStart']=function(_0x30c95f){var _0x4ed31b='';try{if(this[_0x2b21('0x22')](_0x30c95f)){logger[_0x2b21('0x27')](_0x2b21('0x96'),_0x30c95f['uniqueid'],util[_0x2b21('0x36')](_0x30c95f,{'showHidden':![],'depth':null}));if(_0x30c95f[_0x2b21('0x97')]){_0x4ed31b=_0x30c95f[_0x2b21('0x97')]['substring'](0x0,_0x30c95f[_0x2b21('0x97')][_0x2b21('0x98')]('-'));if(this[_0x2b21('0xe')][_0x4ed31b]){logger[_0x2b21('0x24')](_0x2b21('0x99'),_0x30c95f[_0x2b21('0x28')],_0x4ed31b);this[_0x2b21('0xe')][_0x4ed31b][_0x2b21('0x9a')]=!![];}}}}catch(_0x1cd8e6){logger[_0x2b21('0x53')](_0x2b21('0x9b'),_0x30c95f[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x1cd8e6,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2b21('0x1d')]=function(_0x3b174b){var _0x503bc1='';try{if(this[_0x2b21('0x22')](_0x3b174b)){logger[_0x2b21('0x27')](_0x2b21('0x9c'),_0x3b174b[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x3b174b,{'showHidden':![],'depth':null}));if(_0x3b174b['channel']){_0x503bc1=_0x3b174b[_0x2b21('0x97')][_0x2b21('0x9d')](0x0,_0x3b174b['channel'][_0x2b21('0x98')]('-'));if(this[_0x2b21('0xe')][_0x503bc1]){logger[_0x2b21('0x24')](_0x2b21('0x9e'),_0x3b174b[_0x2b21('0x28')],_0x503bc1);this[_0x2b21('0xe')][_0x503bc1]['onhold']=![];}}}}catch(_0x2073d8){logger[_0x2b21('0x53')](_0x2b21('0x9f'),_0x3b174b[_0x2b21('0x28')],util[_0x2b21('0x36')](_0x2073d8,{'showHidden':![],'depth':null}));}};module[_0x2b21('0xa0')]=VoiceAgentReport;
\ No newline at end of file
index 06718c3..f1591b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e77=['[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','set','queue','dial','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','newexten','bind','newchannel','syncNewChannel','newstate','varset','syncVarSet','newcallerid','syncNewCallerId','syncAttendedTransfer','syncBlindTransfer','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','inspect','isNotNull','isUndefined','emit','prototype','uniqueid','calleridname','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','format','name','user:agentconnect','accountcode','error','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','undefined','user:%s','[%s][voiceCallReport][newchannel]','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','includes','lastapplication','startsWith','cdr(','match','type','isNil','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinenum','destinationchannel','toNumber','UserId','membername','holdtime','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]','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','xmd-callerid','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','transferType','resolve','then','isEmpty','getSettings','StopMixMonitor','catch','Action','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:'];(function(_0x113af6,_0x4f12e4){var _0x1cff97=function(_0x54ab79){while(--_0x54ab79){_0x113af6['push'](_0x113af6['shift']());}};_0x1cff97(++_0x4f12e4);}(_0x6e77,0x1af));var _0x76e7=function(_0x593310,_0x17b9e9){_0x593310=_0x593310-0x0;var _0x1ea007=_0x6e77[_0x593310];return _0x1ea007;};'use strict';var _=require('lodash');var moment=require(_0x76e7('0x0'));var util=require(_0x76e7('0x1'));var path=require('path');var Redis=require(_0x76e7('0x2'));var config=require(_0x76e7('0x3'));var logger=require(_0x76e7('0x4'))(_0x76e7('0x5'));var ami=require('../ami');var Channel=require(_0x76e7('0x6'));var RpcSetting=require(_0x76e7('0x7'));var applications=[_0x76e7('0x8'),_0x76e7('0x9'),'agi',_0x76e7('0xa'),'playback',_0x76e7('0xb')];var dispositions=[_0x76e7('0xc'),_0x76e7('0xd'),_0x76e7('0xd'),_0x76e7('0xc'),'NO\x20ANSWER',_0x76e7('0xc'),_0x76e7('0xe'),_0x76e7('0xf'),_0x76e7('0xd'),_0x76e7('0xd'),_0x76e7('0xd')];config['redis']=_[_0x76e7('0x10')](config[_0x76e7('0x11')],{'host':_0x76e7('0x12'),'port':0x18eb});var io=require(_0x76e7('0x13'))(new Redis(config['redis']));function VoiceCallReport(_0x299457){this[_0x76e7('0x14')]=_0x299457['channels'];this[_0x76e7('0x15')]=_0x299457['agents'];this[_0x76e7('0x16')]={};ami['on']('coreshowchannel',this[_0x76e7('0x17')]['bind'](this));ami['on'](_0x76e7('0x18'),this['syncNewExten'][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1a'),this[_0x76e7('0x1b')][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1c'),this['syncNewState'][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1d'),this[_0x76e7('0x1e')][_0x76e7('0x19')](this));ami['on']('hangup',this['syncHangup'][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1f'),this[_0x76e7('0x20')][_0x76e7('0x19')](this));ami['on']('attendedtransfer',this[_0x76e7('0x21')][_0x76e7('0x19')](this));ami['on']('blindtransfer',this[_0x76e7('0x22')][_0x76e7('0x19')](this));ami['on']('musiconholdstart',this[_0x76e7('0x23')][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x24'),this[_0x76e7('0x25')]['bind'](this));try{logger[_0x76e7('0x26')](_0x76e7('0x27'));ami[_0x76e7('0x28')]();}catch(_0x473929){logger['error']('[voiceCallReport][coreshowchannels]',util[_0x76e7('0x29')](_0x473929,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x76e7('0x2a')]=function(_0x438bfa){return _0x438bfa!==null&&!_[_0x76e7('0x2b')](_0x438bfa);};VoiceCallReport['prototype'][_0x76e7('0x2c')]=function(_0x1f601f,_0x1d6fee,_0x5f0acb){io['to'](_0x1f601f)[_0x76e7('0x2c')](_0x1d6fee,_0x5f0acb);};VoiceCallReport[_0x76e7('0x2d')]['syncNewCallerId']=function(_0x2451ba){try{if(this['isNotNull'](_0x2451ba)){logger[_0x76e7('0x26')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x2451ba[_0x76e7('0x2e')],_0x2451ba[_0x76e7('0x2f')],_0x2451ba['calleridnum']);logger[_0x76e7('0x30')](_0x76e7('0x31'),_0x2451ba[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x2451ba,{'showHidden':![],'depth':null}));if(_0x2451ba[_0x76e7('0x2e')]===_0x2451ba[_0x76e7('0x32')]){if(!_[_0x76e7('0x2b')](this[_0x76e7('0x14')][_0x2451ba['uniqueid']])){_[_0x76e7('0x33')](this['channels'][_0x2451ba[_0x76e7('0x2e')]],_[_0x76e7('0x34')](_0x2451ba,_[_0x76e7('0x35')](this[_0x76e7('0x14')][_0x2451ba[_0x76e7('0x2e')]])));}}if(_0x2451ba[_0x76e7('0x36')]===_0x76e7('0x37')){if(this['agents'][_0x2451ba[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]){if(_0x2451ba[_0x76e7('0x3a')]==_0x76e7('0x3b')){this[_0x76e7('0x15')][_0x2451ba[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x3c')]=_0x2451ba['connectedlinenum'];this[_0x76e7('0x2c')](util[_0x76e7('0x3d')]('user:%s',this[_0x76e7('0x15')][_0x2451ba[_0x76e7('0x38')]['split']('-')[0x0]][_0x76e7('0x3e')]),_0x76e7('0x3f'),{'destaccountcode':this['agents'][_0x2451ba[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x40')],'destconnectedlinenum':_0x2451ba['connectedlinenum']});}}}}}catch(_0x4d157b){logger[_0x76e7('0x41')]('[%s][voiceCallReport][newcallerid]',_0x2451ba[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x4d157b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x76e7('0x1b')]=function(_0x420a7f){try{if(this[_0x76e7('0x2a')](_0x420a7f)){logger[_0x76e7('0x30')](_0x76e7('0x42'),_0x420a7f[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x420a7f,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]]){return;}if(_0x420a7f[_0x76e7('0x38')]===_0x76e7('0x43')){return;}if(_0x420a7f[_0x76e7('0x2e')]!==_0x420a7f[_0x76e7('0x32')]&&!this[_0x76e7('0x16')][_0x420a7f[_0x76e7('0x32')]]){return;}logger[_0x76e7('0x26')](_0x76e7('0x44'),_0x420a7f['uniqueid'],_0x420a7f['context'],_0x420a7f[_0x76e7('0x3a')]);this[_0x76e7('0x14')][_0x420a7f['uniqueid']]=new Channel();this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]][_0x76e7('0x45')]=moment()['format'](_0x76e7('0x46'));this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]][_0x76e7('0x47')]=dispositions[_['toNumber'](_0x420a7f[_0x76e7('0x48')])];_[_0x76e7('0x33')](this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]],_[_0x76e7('0x34')](_0x420a7f,_['keys'](this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]])));if(_0x420a7f[_0x76e7('0x36')]==='from-sip'){var _0x47d6c7=this[_0x76e7('0x15')][_0x420a7f[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]];if(_0x47d6c7&&typeof _0x47d6c7['destconnectedlinenum']===_0x76e7('0x49')){_0x47d6c7[_0x76e7('0x3c')]=_0x420a7f[_0x76e7('0x3a')];logger[_0x76e7('0x30')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x420a7f[_0x76e7('0x2e')],util[_0x76e7('0x29')]({'id':_0x47d6c7['id'],'destaccountcode':_0x47d6c7[_0x76e7('0x40')],'destconnectedlinenum':_0x420a7f['exten']},{'showHidden':![],'depth':null}));this['emit'](util[_0x76e7('0x3d')](_0x76e7('0x4a'),_0x47d6c7[_0x76e7('0x3e')]),_0x76e7('0x3f'),{'id':_0x47d6c7['id'],'destaccountcode':_0x47d6c7['accountcode'],'destconnectedlinenum':_0x420a7f[_0x76e7('0x3a')]});}}}}catch(_0x5669a0){logger[_0x76e7('0x41')](_0x76e7('0x4b'),_0x420a7f[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x5669a0,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x76e7('0x17')]=function(_0x3a2039){try{if(this[_0x76e7('0x2a')](_0x3a2039)){logger[_0x76e7('0x30')]('[%s][voiceCallReport][newexten]\x20event:',_0x3a2039[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x3a2039,{'showHidden':![],'depth':null}));if(_0x3a2039[_0x76e7('0x38')]===_0x76e7('0x43')||_0x3a2039[_0x76e7('0x3a')]==='h')return;if(_0x3a2039[_0x76e7('0x2e')]===_0x3a2039[_0x76e7('0x32')]||this['blindTransfers'][_0x3a2039[_0x76e7('0x32')]]){_0x3a2039[_0x76e7('0x4c')]=_0x3a2039[_0x76e7('0x4c')][_0x76e7('0x4d')]();_0x3a2039[_0x76e7('0x4e')]=_0x3a2039['appdata']||_0x3a2039[_0x76e7('0x4e')];if(_0x3a2039[_0x76e7('0x4f')]&&!_0x3a2039[_0x76e7('0x4f')]['startsWith'](_0x76e7('0x50'))&&_0x3a2039[_0x76e7('0x4c')]!==_0x76e7('0x9')){_0x3a2039['applicationdata']=_0x3a2039[_0x76e7('0x4e')]['toLowerCase']();}logger[_0x76e7('0x26')](_0x76e7('0x51'),_0x3a2039['uniqueid'],_0x3a2039[_0x76e7('0x4c')],_0x3a2039[_0x76e7('0x4e')]);if(_[_0x76e7('0x2b')](this['channels'][_0x3a2039[_0x76e7('0x2e')]])){this['channels'][_0x3a2039[_0x76e7('0x2e')]]=new Channel();this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]][_0x76e7('0x45')]=_0x3a2039['duration']?moment()['subtract'](moment[_0x76e7('0x52')](_0x3a2039[_0x76e7('0x52')])[_0x76e7('0x53')](),_0x76e7('0x53'))['format'](_0x76e7('0x46')):moment()[_0x76e7('0x3d')](_0x76e7('0x46'));this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]][_0x76e7('0x47')]='NO\x20ANSWER';}_['merge'](this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]],_['pick'](_0x3a2039,_[_0x76e7('0x35')](this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]])));if(_[_0x76e7('0x54')](applications,_0x3a2039[_0x76e7('0x4c')])){this[_0x76e7('0x14')][_0x3a2039['uniqueid']][_0x76e7('0x55')]=_0x3a2039[_0x76e7('0x4c')];this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]]['lastdata']=_0x3a2039[_0x76e7('0x4e')];if(_0x3a2039[_0x76e7('0x4c')]===_0x76e7('0x8')&&_[_0x76e7('0x56')](_0x3a2039[_0x76e7('0x4e')][_0x76e7('0x4d')](),_0x76e7('0x57'))){var _0x541eb2=_0x3a2039[_0x76e7('0x4e')][_0x76e7('0x39')]('=');var _0x3430f2=_0x541eb2[0x0][_0x76e7('0x4d')]()[_0x76e7('0x58')](/cdr\((.*)\)/);if(_0x3430f2){if(_0x3430f2[0x1]===_0x76e7('0x59')&&!_[_0x76e7('0x5a')](this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]][_0x3430f2[0x1]]))return;this['channels'][_0x3a2039[_0x76e7('0x2e')]][_0x3430f2[0x1]]=_0x541eb2[0x1];}}else if(_0x3a2039[_0x76e7('0x4c')]==='queue'){this['channels'][_0x3a2039[_0x76e7('0x2e')]]['queue']=_0x3a2039[_0x76e7('0x4e')][_0x76e7('0x39')](',')[0x0];}}}}}catch(_0x117dc9){logger[_0x76e7('0x41')]('[%s][voiceCallReport][newexten]',_0x3a2039[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x117dc9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x5b')]=function(_0xb36fc4){try{if(this[_0x76e7('0x2a')](_0xb36fc4)){logger[_0x76e7('0x26')](_0x76e7('0x5c'),_0xb36fc4[_0x76e7('0x2e')],_0xb36fc4[_0x76e7('0x32')],_0xb36fc4[_0x76e7('0x2f')],_0xb36fc4[_0x76e7('0x5d')]);logger[_0x76e7('0x30')](_0x76e7('0x5e'),_0xb36fc4[_0x76e7('0x2e')],util['inspect'](_0xb36fc4,{'showHidden':![],'depth':null}));if(_0xb36fc4[_0x76e7('0x48')]!=='6')return;var _0x5559d5=this['agents'][_0xb36fc4[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]];if(_0xb36fc4[_0x76e7('0x2e')]!==_0xb36fc4['linkedid']){var _0x2b8d46=moment();if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]){if(!this['channels'][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x5f')]){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x5f')]=!![];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x60')]=_0x2b8d46[_0x76e7('0x3d')](_0x76e7('0x46'));if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]['starttime']){this[_0x76e7('0x14')][_0xb36fc4['linkedid']]['holdtime']=_0x2b8d46[_0x76e7('0x61')](this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x45')],_0x76e7('0x53'));}}this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x32')]=_0xb36fc4[_0x76e7('0x2e')];if(_0xb36fc4[_0x76e7('0x5d')]!==_0x76e7('0x3b')){this['channels'][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x62')]=_0xb36fc4[_0x76e7('0x5d')];}this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]['connectedlinename']=_0xb36fc4[_0x76e7('0x2f')];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x63')]=_0xb36fc4[_0x76e7('0x38')];this[_0x76e7('0x14')][_0xb36fc4['linkedid']]['disposition']=dispositions[_[_0x76e7('0x64')](_0xb36fc4[_0x76e7('0x48')])];if(_0x5559d5){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x65')]=_0x5559d5['id'];this[_0x76e7('0x14')][_0xb36fc4['linkedid']][_0x76e7('0x66')]=_0x5559d5['name'];}}if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]]){if(!this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x5f')]){this[_0x76e7('0x14')][_0xb36fc4['uniqueid']][_0x76e7('0x5f')]=!![];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]]['answertime']=_0x2b8d46[_0x76e7('0x3d')](_0x76e7('0x46'));if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x45')]){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x67')]=_0x2b8d46[_0x76e7('0x61')](this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x45')],_0x76e7('0x53'));}}if(_0xb36fc4[_0x76e7('0x5d')]!==_0x76e7('0x3b')){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x62')]=_0xb36fc4[_0x76e7('0x5d')];}this['channels'][_0xb36fc4[_0x76e7('0x2e')]]['connectedlinename']=_0xb36fc4[_0x76e7('0x2f')];this['channels'][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x63')]=_0xb36fc4['channel'];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x47')]=dispositions[_['toNumber'](_0xb36fc4[_0x76e7('0x48')])];}}else{if(this['channels'][_0xb36fc4[_0x76e7('0x2e')]]){if(_0x5559d5){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x65')]=_0x5559d5['id'];this[_0x76e7('0x14')][_0xb36fc4['uniqueid']][_0x76e7('0x66')]=_0x5559d5['name'];}}}if(_0xb36fc4['context']===_0x76e7('0x37')){if(_0x5559d5){_0x5559d5[_0x76e7('0x3c')]=_0xb36fc4['exten'];var _0x1f6acc,_0x12a002;if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]]){_0x1f6acc=this[_0x76e7('0x14')][_0xb36fc4['uniqueid']][_0x76e7('0x68')];_0x12a002=this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x9')];}else if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]){_0x1f6acc=this[_0x76e7('0x14')][_0xb36fc4['linkedid']][_0x76e7('0x68')];_0x12a002=this[_0x76e7('0x14')][_0xb36fc4['linkedid']][_0x76e7('0x9')];}_0x5559d5[_0x76e7('0x9')]=_0x12a002;_0x5559d5['routealias']=_0x1f6acc;var _0x147392={'id':_0x5559d5['id'],'name':_0x5559d5[_0x76e7('0x3e')],'agentconnected':!![],'destaccountcode':_0x5559d5[_0x76e7('0x40')],'destconnectedlinenum':_0xb36fc4['exten'],'queue':_0x12a002||undefined,'routealias':_0x1f6acc,'uniqueid':_0xb36fc4[_0x76e7('0x32')]};logger['debug'](_0x76e7('0x69'),_0xb36fc4[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x147392,{'showHidden':![],'depth':null}));this[_0x76e7('0x2c')](util[_0x76e7('0x3d')](_0x76e7('0x4a'),_0x5559d5[_0x76e7('0x3e')]),_0x76e7('0x3f'),_0x147392);}}}}catch(_0x30fb2e){logger[_0x76e7('0x41')](_0x76e7('0x6a'),_0xb36fc4[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x30fb2e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x6b')]=function(_0x31b877,_0x3f13a1){try{if(this[_0x76e7('0x14')][_0x31b877]){logger[_0x76e7('0x26')](_0x76e7('0x6c'),_0x31b877,_0x3f13a1);this[_0x76e7('0x14')][_0x31b877][_0x76e7('0x6d')]=!![];if(_[_0x76e7('0x6e')](_0x3f13a1,_0x76e7('0x6f'))){_0x3f13a1=_0x3f13a1['replace']('.wav49',_0x76e7('0x70'));}this[_0x76e7('0x14')][_0x31b877][_0x76e7('0x71')]=_0x3f13a1;var _0x25363b=_[_0x76e7('0x72')](this['channels'][_0x31b877][_0x76e7('0x73')],{'filename':_0x3f13a1});if(_[_0x76e7('0x5a')](_0x25363b)){this['channels'][_0x31b877]['monitors'][_0x76e7('0x74')]({'filename':_0x3f13a1,'createdAt':moment()['format'](_0x76e7('0x46')),'mixmonitorid':'','status':_0x76e7('0x75')});}}}catch(_0x5202d3){logger['error'](_0x76e7('0x76'),_0x31b877,util[_0x76e7('0x29')](_0x5202d3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')]['syncVarSet']=function(_0x3a81b1){try{if(this['isNotNull'](_0x3a81b1)){logger[_0x76e7('0x30')]('[%s][voiceCallReport][varset]\x20event:',_0x3a81b1[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x3a81b1,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x3a81b1['uniqueid']]&&_0x3a81b1['channel']!='OutgoingSpoolFailed'){if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')])){if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')]['mixmonitor_filename'])){logger[_0x76e7('0x26')](_0x76e7('0x78'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this['syncMixMonitorFilename'](_0x3a81b1['uniqueid'],_0x3a81b1[_0x76e7('0x79')]);}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x7a')])){logger[_0x76e7('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1['uniqueid']][_0x76e7('0x5d')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1['variable'][_0x76e7('0x7b')])){logger[_0x76e7('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x3a81b1['uniqueid'],_0x3a81b1['value']);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x7c')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x7d')])){logger[_0x76e7('0x26')](_0x76e7('0x7e'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1['uniqueid']][_0x76e7('0x59')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x7f')])){logger[_0x76e7('0x26')](_0x76e7('0x80'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]['split'](',')[0x0]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x9')]=_0x3a81b1['value'][_0x76e7('0x39')](',')[0x0];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x81')])){logger[_0x76e7('0x26')](_0x76e7('0x82'),_0x3a81b1['uniqueid'],_0x3a81b1[_0x76e7('0x79')]);this['channels'][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x83')]=_0x3a81b1['value'];}else if(this['isNotNull'](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x84')])){logger['info'](_0x76e7('0x85'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x86')]=_0x3a81b1[_0x76e7('0x79')];}else if(this[_0x76e7('0x2a')](_0x3a81b1['variable'][_0x76e7('0x87')])){logger[_0x76e7('0x26')](_0x76e7('0x88'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1['value']);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x89')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x8a')])){logger[_0x76e7('0x26')](_0x76e7('0x8b'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]]['queue']=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')]['sipcallid'])){logger[_0x76e7('0x26')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x8c')]=_0x3a81b1[_0x76e7('0x79')];}}}else if(this['isNotNull'](_0x3a81b1[_0x76e7('0x77')]['mixmonitor_filename'])){if(_0x3a81b1[_0x76e7('0x79')]){var _0x26a8c6=path[_0x76e7('0x8d')](_0x3a81b1[_0x76e7('0x79')])[_0x76e7('0x3e')];logger[_0x76e7('0x26')](_0x76e7('0x78'),_0x26a8c6,_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x6b')](_0x26a8c6,_0x3a81b1[_0x76e7('0x79')]);}}else if(this['channels'][_0x3a81b1[_0x76e7('0x32')]]){if(this[_0x76e7('0x2a')](_0x3a81b1['variable'])){if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')]['sipcallid'])){logger[_0x76e7('0x26')](_0x76e7('0x8e'),_0x3a81b1[_0x76e7('0x32')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x32')]]['sipcalllinkedid']=_0x3a81b1['value'];}}}}}catch(_0xdbc008){logger[_0x76e7('0x41')](_0x76e7('0x8f'),_0x3a81b1[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0xdbc008,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x90')]=function(_0x151e29){try{if(this[_0x76e7('0x2a')](_0x151e29)){logger[_0x76e7('0x30')](_0x76e7('0x91'),_0x151e29[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x151e29,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x151e29[_0x76e7('0x32')]]){if(this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]]){this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]]['uniqueid']=_0x151e29['uniqueid'];this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x32')]]['answered']=this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x5f')];this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x32')]][_0x76e7('0x60')]=this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x60')];this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]][_0x76e7('0x63')]=this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]]['linkedid']][_0x76e7('0x38')];this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']]['linkedid']][_0x76e7('0x47')]=this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['disposition'];this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]=this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]];delete this[_0x76e7('0x14')][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]];}else if(this['channels'][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x2e')]]){this[_0x76e7('0x14')][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x2e')]=[this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]]['linkedid'],this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x2e')]][_0x76e7('0x32')]=this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x2e')]][0x0];this['channels'][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x2e')]][_0x76e7('0x5f')]=this[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x5f')];this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x60')]=this[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x60')];this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x63')]=this['channels'][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x38')];this['channels'][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x47')]=this['channels'][_0x151e29['uniqueid']][_0x76e7('0x47')];this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]=this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]];delete this[_0x76e7('0x14')][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]];}}if(this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]){logger[_0x76e7('0x26')](_0x76e7('0x92'),_0x151e29[_0x76e7('0x2e')],_0x151e29['cause-txt']);var _0x28f2ff=moment();this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x93')]=_0x28f2ff[_0x76e7('0x3d')](_0x76e7('0x46'));this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x52')]=_0x28f2ff[_0x76e7('0x61')](this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x45')],_0x76e7('0x53'));if(this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['answered']){this[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x94')]=_0x28f2ff[_0x76e7('0x61')](this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['answertime'],_0x76e7('0x53'));this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x67')]=this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x52')]-this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x94')];}if(_0x151e29[_0x76e7('0x36')]==='from-sip'){if(this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]){this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]=_[_0x76e7('0x95')](this['agents'][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]],[_0x76e7('0x3c')]);logger[_0x76e7('0x30')](_0x76e7('0x96'),_0x151e29[_0x76e7('0x2e')],util[_0x76e7('0x29')]({'id':this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x151e29['channel'][_0x76e7('0x39')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x76e7('0x2c')](util[_0x76e7('0x3d')](_0x76e7('0x4a'),this['agents'][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x3e')]),_0x76e7('0x97'),{'id':this['agents'][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x40')]});for(var _0x13aedf=0x0;_0x13aedf<Object[_0x76e7('0x35')](this[_0x76e7('0x15')])['length'];_0x13aedf++){var _0x45d38c=Object[_0x76e7('0x35')](this['agents'])[_0x13aedf];var _0x339540=this['agents'][_0x45d38c];if(_0x339540[_0x76e7('0x40')]===Number(this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['connectedlinenum'])){this[_0x76e7('0x2c')](util[_0x76e7('0x3d')](_0x76e7('0x4a'),_0x339540[_0x76e7('0x3e')]),_0x76e7('0x97'),{'id':_0x339540['id'],'destaccountcode':_0x339540['accountcode'],'transfer':this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x98')]});break;}}}}var _0x42b1d1=this;Promise[_0x76e7('0x99')]()[_0x76e7('0x9a')](function(){var _0x248f2d=_0x42b1d1['channels'][_0x151e29[_0x76e7('0x2e')]];if(typeof _0x248f2d['transferType']===_0x76e7('0x49'))return;if(_[_0x76e7('0x9b')](_0x248f2d[_0x76e7('0x73')]))return;return RpcSetting[_0x76e7('0x9c')]()['then'](function(_0x5c1121){if(!_0x5c1121['stopRecordingOnTransfer'])return;return Promise[_0x76e7('0x99')]()[_0x76e7('0x9a')](function(){return ami['Action']({'action':_0x76e7('0x9d'),'channel':_0x248f2d[_0x76e7('0x38')]})[_0x76e7('0x9e')](function(){});})['then'](function(){return ami[_0x76e7('0x9f')]({'action':'StopMixMonitor','channel':_0x248f2d[_0x76e7('0x63')]})[_0x76e7('0x9e')](function(){})[_0x76e7('0xa0')](function(){var _0xf785c9=_0x42b1d1[_0x76e7('0x15')][_0x248f2d[_0x76e7('0x63')][_0x76e7('0x39')]('-')[0x0]];if(!_0xf785c9)return;io[_0x76e7('0x2c')](_0x76e7('0xa1'),{'agentId':_0xf785c9['id'],'uniqueid':_0x248f2d[_0x76e7('0x2e')]});});});});})['then'](function(){if(_0x151e29[_0x76e7('0xa2')]===_0x76e7('0xa3')){_0x42b1d1[_0x76e7('0x16')][_0x151e29[_0x76e7('0x2e')]]=_0x151e29;}else{if(_0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['type']===_0x76e7('0xa4')&&_0x42b1d1['blindTransfers'][_0x151e29[_0x76e7('0x2e')]]){_0x42b1d1[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x2e')]=[_0x42b1d1[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x32')],_0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['linkedid']=_0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['uniqueid']][0x0];delete _0x42b1d1['blindTransfers'][_0x151e29[_0x76e7('0x2e')]];}}logger[_0x76e7('0x30')](_0x76e7('0xa5'),_0x151e29[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x42b1d1[_0x76e7('0x14')][_0x151e29['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x76e7('0x2c')]('custom:voiceCallReport',_0x42b1d1['channels'][_0x151e29[_0x76e7('0x2e')]]);delete _0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]];});}}}catch(_0x2a60b1){logger[_0x76e7('0x41')](_0x76e7('0xa6'),_0x151e29['uniqueid'],util[_0x76e7('0x29')](_0x2a60b1,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x76e7('0x21')]=function(_0x5da5b8){try{if(this[_0x76e7('0x2a')](_0x5da5b8)){logger[_0x76e7('0x26')](_0x76e7('0xa7'),_0x5da5b8[_0x76e7('0x2e')],_0x5da5b8[_0x76e7('0xa8')],_0x5da5b8['transfertargetcalleridnum']);logger[_0x76e7('0x30')](_0x76e7('0xa9'),_0x5da5b8['uniqueid'],util[_0x76e7('0x29')](_0x5da5b8,{'showHidden':![],'depth':null}));var _0x559870;if(this['channels'][_0x5da5b8[_0x76e7('0xaa')]]){this['channels'][_0x5da5b8[_0x76e7('0xaa')]][_0x76e7('0xab')]=_0x5da5b8[_0x76e7('0xa8')];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xaa')]][_0x76e7('0xac')]=_0x5da5b8[_0x76e7('0xad')];if(this[_0x76e7('0x14')][_0x5da5b8['secondtransfereruniqueid']]){_0x559870=this[_0x76e7('0x14')][_0x5da5b8['secondtransfereruniqueid']];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]]=this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xaa')]];this[_0x76e7('0x14')][_0x5da5b8['transfereeuniqueid']]=_0x559870;}this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]][_0x76e7('0x98')]=_0x76e7('0xaf');}else if(this['channels'][_0x5da5b8['transfertargetuniqueid']]){this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb0')]]['transfercalleridnum']=_0x5da5b8['origtransferercalleridnum'];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb0')]][_0x76e7('0xac')]=_0x5da5b8[_0x76e7('0xad')];if(this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]]){_0x559870=this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]];this['channels'][_0x5da5b8[_0x76e7('0xb1')]]=this[_0x76e7('0x14')][_0x5da5b8['transfertargetuniqueid']];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb0')]]=_0x559870;}this[_0x76e7('0x14')][_0x5da5b8['transfertargetuniqueid']][_0x76e7('0x98')]=_0x76e7('0xaf');}if((this['channels'][_0x5da5b8[_0x76e7('0xb1')]]||this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]])&&this[_0x76e7('0x14')][_0x5da5b8['secondtransfereruniqueid']]){var _0x1f64ff=_[_0x76e7('0xb3')]([this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]],this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]],this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]]],function(_0x266642){return _0x266642&&_0x266642[_0x76e7('0x59')]===_0x76e7('0xa4')&&_0x266642['routeid'];});if(_0x1f64ff){if(this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]])this['channels'][_0x5da5b8['origtransfereruniqueid']]['transferType']=_0x76e7('0xaf');if(this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]])this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]][_0x76e7('0x98')]=_0x76e7('0xaf');this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]][_0x76e7('0x98')]=_0x76e7('0xaf');}}}}catch(_0x396b3c){logger[_0x76e7('0x41')](_0x76e7('0xb4'),_0x5da5b8['uniqueid'],util[_0x76e7('0x29')](_0x396b3c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x22')]=function(_0x13e595){try{if(this[_0x76e7('0x2a')](_0x13e595)){logger[_0x76e7('0x26')](_0x76e7('0xb5'),_0x13e595[_0x76e7('0x2e')],_0x13e595[_0x76e7('0xb6')],_0x13e595['extension']);logger[_0x76e7('0x30')](_0x76e7('0xb7'),_0x13e595['uniqueid'],util['inspect'](_0x13e595,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x13e595[_0x76e7('0xaa')]]){this[_0x76e7('0x14')][_0x13e595[_0x76e7('0xaa')]][_0x76e7('0xab')]=_0x13e595[_0x76e7('0xb6')];this['channels'][_0x13e595['transfereeuniqueid']][_0x76e7('0xac')]=_0x13e595[_0x76e7('0xb8')];this[_0x76e7('0x14')][_0x13e595[_0x76e7('0xaa')]][_0x76e7('0x98')]=_0x76e7('0xb9');this[_0x76e7('0x90')]({'event':_0x76e7('0xa3'),'uniqueid':_0x13e595['transfereeuniqueid'],'linkedid':_0x13e595[_0x76e7('0xba')],'context':_0x13e595[_0x76e7('0x36')],'channel':_0x13e595[_0x76e7('0xbb')]});}else{this[_0x76e7('0x14')][_0x13e595['transfereruniqueid']][_0x76e7('0x98')]=_0x76e7('0xb9');this[_0x76e7('0x90')]({'event':_0x76e7('0xa3'),'uniqueid':_0x13e595[_0x76e7('0xba')],'linkedid':_0x13e595[_0x76e7('0xaa')],'context':_0x13e595['context'],'channel':_0x13e595[_0x76e7('0xbb')]});}}}catch(_0xd1d1d9){logger[_0x76e7('0x41')](_0x76e7('0xbc'),_0x13e595[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0xd1d1d9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x23')]=function(_0x51a806){try{if(this[_0x76e7('0x2a')](_0x51a806)){logger[_0x76e7('0x30')](_0x76e7('0xbd'),_0x51a806['uniqueid'],util[_0x76e7('0x29')](_0x51a806,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]]){if(!_['isNil'](this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]][_0x76e7('0x60')])){this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]]['mohstarttime']=moment()['format'](_0x76e7('0x46'));logger[_0x76e7('0x26')](_0x76e7('0xbe'),_0x51a806[_0x76e7('0x2e')],this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]][_0x76e7('0xbf')]);}}}}catch(_0x181c07){logger[_0x76e7('0x41')](_0x76e7('0xc0'),_0x51a806['uniqueid'],util[_0x76e7('0x29')](_0x181c07,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x25')]=function(_0x330263){try{if(this['isNotNull'](_0x330263)){logger['debug'](_0x76e7('0xc1'),_0x330263['uniqueid'],util[_0x76e7('0x29')](_0x330263,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x330263[_0x76e7('0x2e')]]){if(!_[_0x76e7('0x5a')](this[_0x76e7('0x14')][_0x330263['uniqueid']][_0x76e7('0xbf')])){this[_0x76e7('0x14')][_0x330263[_0x76e7('0x2e')]][_0x76e7('0xc2')]+=moment()[_0x76e7('0xc3')](0x0)[_0x76e7('0x61')](this[_0x76e7('0x14')][_0x330263[_0x76e7('0x2e')]][_0x76e7('0xbf')],_0x76e7('0x53'));logger['info'](_0x76e7('0xc4'),_0x330263[_0x76e7('0x2e')],this['channels'][_0x330263[_0x76e7('0x2e')]][_0x76e7('0xc2')]);delete this[_0x76e7('0x14')][_0x330263['uniqueid']][_0x76e7('0xbf')];}}}}catch(_0x362067){logger[_0x76e7('0x41')](_0x76e7('0xc5'),_0x330263[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x362067,{'showHidden':![],'depth':null}));}};module[_0x76e7('0xc6')]=VoiceCallReport;
\ No newline at end of file
+var _0x4d61=['BUSY','defaults','redis','socket.io-emitter','channels','agents','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','hangup','newcallerid','syncNewCallerId','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','linkedid','merge','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','accountcode','[%s][voiceCallReport][newcallerid]','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','disposition','toNumber','pick','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','user:agentconnect','[%s][voiceCallReport][newexten]\x20event:','blindTransfers','application','toLowerCase','applicationdata','appdata','startsWith','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastapplication','lastdata','set','cdr(','match','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','answertime','holdtime','diff','membername','connectedlinename','destinationchannel','UserId','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.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','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','undefined','isEmpty','stopRecordingOnTransfer','Action','catch','StopMixMonitor','webbar:stopmonitors','BlindTransfer','type','[%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','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','ATTENDED','origtransfererlinkedid','some','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','ioredis','../../../config/environment','ami','../ami','../model/channel','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED'];(function(_0x2fb711,_0x1517c1){var _0x5a7672=function(_0x2f0744){while(--_0x2f0744){_0x2fb711['push'](_0x2fb711['shift']());}};_0x5a7672(++_0x1517c1);}(_0x4d61,0xb9));var _0x14d6=function(_0x4f6d16,_0xec3008){_0x4f6d16=_0x4f6d16-0x0;var _0x1b1014=_0x4d61[_0x4f6d16];return _0x1b1014;};'use strict';var _=require(_0x14d6('0x0'));var moment=require(_0x14d6('0x1'));var util=require('util');var path=require('path');var Redis=require(_0x14d6('0x2'));var config=require(_0x14d6('0x3'));var logger=require('../../../config/logger')(_0x14d6('0x4'));var ami=require(_0x14d6('0x5'));var Channel=require(_0x14d6('0x6'));var RpcSetting=require('../rpc/setting');var applications=['set',_0x14d6('0x7'),_0x14d6('0x8'),_0x14d6('0x9'),_0x14d6('0xa'),_0x14d6('0xb')];var dispositions=[_0x14d6('0xc'),_0x14d6('0xd'),_0x14d6('0xd'),_0x14d6('0xc'),_0x14d6('0xc'),_0x14d6('0xc'),'ANSWERED',_0x14d6('0xe'),_0x14d6('0xd'),'FAILED',_0x14d6('0xd')];config['redis']=_[_0x14d6('0xf')](config[_0x14d6('0x10')],{'host':'localhost','port':0x18eb});var io=require(_0x14d6('0x11'))(new Redis(config[_0x14d6('0x10')]));function VoiceCallReport(_0x58b704){this['channels']=_0x58b704[_0x14d6('0x12')];this[_0x14d6('0x13')]=_0x58b704[_0x14d6('0x13')];this['blindTransfers']={};ami['on']('coreshowchannel',this[_0x14d6('0x14')][_0x14d6('0x15')](this));ami['on'](_0x14d6('0x16'),this[_0x14d6('0x14')][_0x14d6('0x15')](this));ami['on'](_0x14d6('0x17'),this[_0x14d6('0x18')][_0x14d6('0x15')](this));ami['on'](_0x14d6('0x19'),this[_0x14d6('0x1a')]['bind'](this));ami['on'](_0x14d6('0x1b'),this[_0x14d6('0x1c')][_0x14d6('0x15')](this));ami['on'](_0x14d6('0x1d'),this['syncHangup'][_0x14d6('0x15')](this));ami['on'](_0x14d6('0x1e'),this[_0x14d6('0x1f')][_0x14d6('0x15')](this));ami['on']('attendedtransfer',this[_0x14d6('0x20')][_0x14d6('0x15')](this));ami['on']('blindtransfer',this[_0x14d6('0x21')][_0x14d6('0x15')](this));ami['on'](_0x14d6('0x22'),this['syncMusicOnHoldStart'][_0x14d6('0x15')](this));ami['on'](_0x14d6('0x23'),this[_0x14d6('0x24')][_0x14d6('0x15')](this));try{logger[_0x14d6('0x25')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x14d6('0x26')]();}catch(_0x1c47f7){logger[_0x14d6('0x27')](_0x14d6('0x28'),util[_0x14d6('0x29')](_0x1c47f7,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0x2b')]=function(_0x20c23c){return _0x20c23c!==null&&!_[_0x14d6('0x2c')](_0x20c23c);};VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0x2d')]=function(_0x54d342,_0x28681d,_0xe98217){io['to'](_0x54d342)[_0x14d6('0x2d')](_0x28681d,_0xe98217);};VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0x1f')]=function(_0x4b220e){try{if(this['isNotNull'](_0x4b220e)){logger[_0x14d6('0x25')](_0x14d6('0x2e'),_0x4b220e[_0x14d6('0x2f')],_0x4b220e[_0x14d6('0x30')],_0x4b220e[_0x14d6('0x31')]);logger[_0x14d6('0x32')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x4b220e['uniqueid'],util[_0x14d6('0x29')](_0x4b220e,{'showHidden':![],'depth':null}));if(_0x4b220e[_0x14d6('0x2f')]===_0x4b220e[_0x14d6('0x33')]){if(!_[_0x14d6('0x2c')](this['channels'][_0x4b220e[_0x14d6('0x2f')]])){_[_0x14d6('0x34')](this['channels'][_0x4b220e[_0x14d6('0x2f')]],_['pick'](_0x4b220e,_[_0x14d6('0x35')](this[_0x14d6('0x12')][_0x4b220e[_0x14d6('0x2f')]])));}}if(_0x4b220e[_0x14d6('0x36')]===_0x14d6('0x37')){if(this[_0x14d6('0x13')][_0x4b220e[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]){if(_0x4b220e[_0x14d6('0x3a')]==_0x14d6('0x3b')){this[_0x14d6('0x13')][_0x4b220e[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x3c')]=_0x4b220e[_0x14d6('0x3d')];this['emit'](util[_0x14d6('0x3e')](_0x14d6('0x3f'),this[_0x14d6('0x13')][_0x4b220e[_0x14d6('0x38')]['split']('-')[0x0]]['name']),'user:agentconnect',{'destaccountcode':this['agents'][_0x4b220e[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x40')],'destconnectedlinenum':_0x4b220e['connectedlinenum']});}}}}}catch(_0x5dc1e3){logger[_0x14d6('0x27')](_0x14d6('0x41'),_0x4b220e['uniqueid'],util[_0x14d6('0x29')](_0x5dc1e3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0x18')]=function(_0x2abe1b){try{if(this[_0x14d6('0x2b')](_0x2abe1b)){logger['debug']('[%s][voiceCallReport][newchannel]\x20event:',_0x2abe1b[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x2abe1b,{'showHidden':![],'depth':null}));if(this[_0x14d6('0x12')][_0x2abe1b[_0x14d6('0x2f')]])return;if(_0x2abe1b[_0x14d6('0x38')]===_0x14d6('0x42'))return;if(_0x2abe1b[_0x14d6('0x2f')]!==_0x2abe1b[_0x14d6('0x33')]&&!this['blindTransfers'][_0x2abe1b['linkedid']])return;logger[_0x14d6('0x25')](_0x14d6('0x43'),_0x2abe1b[_0x14d6('0x2f')],_0x2abe1b[_0x14d6('0x36')],_0x2abe1b['exten']);this[_0x14d6('0x12')][_0x2abe1b[_0x14d6('0x2f')]]=new Channel();this['channels'][_0x2abe1b[_0x14d6('0x2f')]][_0x14d6('0x44')]=moment()[_0x14d6('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x14d6('0x12')][_0x2abe1b[_0x14d6('0x2f')]][_0x14d6('0x45')]=dispositions[_[_0x14d6('0x46')](_0x2abe1b['channelstate'])];_[_0x14d6('0x34')](this[_0x14d6('0x12')][_0x2abe1b[_0x14d6('0x2f')]],_[_0x14d6('0x47')](_0x2abe1b,_[_0x14d6('0x35')](this[_0x14d6('0x12')][_0x2abe1b[_0x14d6('0x2f')]])));if(_0x2abe1b[_0x14d6('0x36')]==='from-sip'){if(this[_0x14d6('0x13')][_0x2abe1b[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]){if(_[_0x14d6('0x2c')](this['agents'][_0x2abe1b[_0x14d6('0x38')]['split']('-')[0x0]][_0x14d6('0x3c')])){this['agents'][_0x2abe1b[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x3c')]=_0x2abe1b[_0x14d6('0x3a')];logger[_0x14d6('0x32')](_0x14d6('0x48'),_0x2abe1b[_0x14d6('0x2f')],util[_0x14d6('0x29')]({'id':this[_0x14d6('0x13')][_0x2abe1b[_0x14d6('0x38')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x14d6('0x13')][_0x2abe1b[_0x14d6('0x38')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x2abe1b[_0x14d6('0x3a')]},{'showHidden':![],'depth':null}));this[_0x14d6('0x2d')](util[_0x14d6('0x3e')](_0x14d6('0x3f'),this['agents'][_0x2abe1b['channel'][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x49')]),_0x14d6('0x4a'),{'id':this[_0x14d6('0x13')][_0x2abe1b['channel']['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2abe1b['channel'][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x40')],'destconnectedlinenum':_0x2abe1b[_0x14d6('0x3a')]});}}}}}catch(_0x82eae9){logger[_0x14d6('0x27')]('[%s][voiceCallReport][newchannel]',_0x2abe1b[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x82eae9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x14d6('0x2a')]['syncNewExten']=function(_0x2e3bd3){try{if(this['isNotNull'](_0x2e3bd3)){logger[_0x14d6('0x32')](_0x14d6('0x4b'),_0x2e3bd3[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x2e3bd3,{'showHidden':![],'depth':null}));if(_0x2e3bd3[_0x14d6('0x38')]===_0x14d6('0x42')||_0x2e3bd3[_0x14d6('0x3a')]==='h')return;if(_0x2e3bd3[_0x14d6('0x2f')]===_0x2e3bd3['linkedid']||this[_0x14d6('0x4c')][_0x2e3bd3[_0x14d6('0x33')]]){_0x2e3bd3[_0x14d6('0x4d')]=_0x2e3bd3[_0x14d6('0x4d')][_0x14d6('0x4e')]();_0x2e3bd3[_0x14d6('0x4f')]=_0x2e3bd3[_0x14d6('0x50')]||_0x2e3bd3['applicationdata'];if(_0x2e3bd3[_0x14d6('0x50')]&&!_0x2e3bd3[_0x14d6('0x50')][_0x14d6('0x51')]('CDR(routeAlias)')&&_0x2e3bd3[_0x14d6('0x4d')]!==_0x14d6('0x7')){_0x2e3bd3[_0x14d6('0x4f')]=_0x2e3bd3[_0x14d6('0x4f')][_0x14d6('0x4e')]();}logger[_0x14d6('0x25')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x2e3bd3['uniqueid'],_0x2e3bd3['application'],_0x2e3bd3['applicationdata']);if(_[_0x14d6('0x2c')](this[_0x14d6('0x12')][_0x2e3bd3[_0x14d6('0x2f')]])){this[_0x14d6('0x12')][_0x2e3bd3['uniqueid']]=new Channel();this[_0x14d6('0x12')][_0x2e3bd3[_0x14d6('0x2f')]]['starttime']=_0x2e3bd3['duration']?moment()['subtract'](moment['duration'](_0x2e3bd3[_0x14d6('0x52')])[_0x14d6('0x53')](),_0x14d6('0x53'))[_0x14d6('0x3e')](_0x14d6('0x54')):moment()[_0x14d6('0x3e')](_0x14d6('0x54'));this['channels'][_0x2e3bd3[_0x14d6('0x2f')]]['disposition']=_0x14d6('0xc');}_[_0x14d6('0x34')](this['channels'][_0x2e3bd3[_0x14d6('0x2f')]],_[_0x14d6('0x47')](_0x2e3bd3,_[_0x14d6('0x35')](this['channels'][_0x2e3bd3[_0x14d6('0x2f')]])));if(_[_0x14d6('0x55')](applications,_0x2e3bd3['application'])){this[_0x14d6('0x12')][_0x2e3bd3[_0x14d6('0x2f')]][_0x14d6('0x56')]=_0x2e3bd3[_0x14d6('0x4d')];this['channels'][_0x2e3bd3[_0x14d6('0x2f')]][_0x14d6('0x57')]=_0x2e3bd3[_0x14d6('0x4f')];if(_0x2e3bd3['application']===_0x14d6('0x58')&&_[_0x14d6('0x51')](_0x2e3bd3[_0x14d6('0x4f')][_0x14d6('0x4e')](),_0x14d6('0x59'))){var _0x380fd=_0x2e3bd3['applicationdata']['split']('=');var _0x5132f3=_0x380fd[0x0][_0x14d6('0x4e')]()[_0x14d6('0x5a')](/cdr\((.*)\)/);if(_0x5132f3){if(_0x5132f3[0x1]==='type'&&!_[_0x14d6('0x5b')](this['channels'][_0x2e3bd3['uniqueid']][_0x5132f3[0x1]]))return;this[_0x14d6('0x12')][_0x2e3bd3[_0x14d6('0x2f')]][_0x5132f3[0x1]]=_0x380fd[0x1];}}else if(_0x2e3bd3[_0x14d6('0x4d')]===_0x14d6('0x7')){this['channels'][_0x2e3bd3[_0x14d6('0x2f')]][_0x14d6('0x7')]=_0x2e3bd3[_0x14d6('0x4f')][_0x14d6('0x39')](',')[0x0];}}}}}catch(_0x2bca78){logger[_0x14d6('0x27')](_0x14d6('0x5c'),_0x2e3bd3[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x2bca78,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x14d6('0x2a')]['syncNewState']=function(_0x563a5a){try{if(this['isNotNull'](_0x563a5a)){logger['info'](_0x14d6('0x5d'),_0x563a5a[_0x14d6('0x2f')],_0x563a5a[_0x14d6('0x33')],_0x563a5a[_0x14d6('0x30')],_0x563a5a[_0x14d6('0x31')]);logger[_0x14d6('0x32')](_0x14d6('0x5e'),_0x563a5a[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x563a5a,{'showHidden':![],'depth':null}));if(_0x563a5a[_0x14d6('0x5f')]!=='6')return;if(_0x563a5a[_0x14d6('0x2f')]!==_0x563a5a['linkedid']){var _0x359d9e=moment();if(this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]]){if(!this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x60')]){this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x60')]=!![];this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x61')]=_0x359d9e[_0x14d6('0x3e')](_0x14d6('0x54'));if(this['channels'][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x44')]){this['channels'][_0x563a5a['linkedid']][_0x14d6('0x62')]=_0x359d9e[_0x14d6('0x63')](this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x44')],'seconds');}}this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x33')]=_0x563a5a[_0x14d6('0x2f')];if(_0x563a5a['calleridnum']!==_0x14d6('0x3b')){this['channels'][_0x563a5a[_0x14d6('0x33')]]['connectedlinenum']=_0x563a5a[_0x14d6('0x31')];}this[_0x14d6('0x12')][_0x563a5a['linkedid']]['connectedlinename']=_0x563a5a['calleridname'];this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]]['destinationchannel']=_0x563a5a[_0x14d6('0x38')];this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x45')]=dispositions[_[_0x14d6('0x46')](_0x563a5a['channelstate'])];if(this['agents'][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]){this[_0x14d6('0x12')][_0x563a5a['linkedid']]['UserId']=this[_0x14d6('0x13')][_0x563a5a['channel'][_0x14d6('0x39')]('-')[0x0]]['id'];this[_0x14d6('0x12')][_0x563a5a['linkedid']][_0x14d6('0x64')]=this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]['name'];}}if(this[_0x14d6('0x12')][_0x563a5a['uniqueid']]){if(!this[_0x14d6('0x12')][_0x563a5a['uniqueid']][_0x14d6('0x60')]){this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x60')]=!![];this['channels'][_0x563a5a[_0x14d6('0x2f')]]['answertime']=_0x359d9e['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x44')]){this['channels'][_0x563a5a[_0x14d6('0x2f')]]['holdtime']=_0x359d9e[_0x14d6('0x63')](this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x44')],_0x14d6('0x53'));}}if(_0x563a5a[_0x14d6('0x31')]!==_0x14d6('0x3b')){this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x3d')]=_0x563a5a[_0x14d6('0x31')];}this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x65')]=_0x563a5a['calleridname'];this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x66')]=_0x563a5a[_0x14d6('0x38')];this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]]['disposition']=dispositions[_[_0x14d6('0x46')](_0x563a5a[_0x14d6('0x5f')])];}}else{if(this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]]){if(this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]){this[_0x14d6('0x12')][_0x563a5a['uniqueid']][_0x14d6('0x67')]=this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]['id'];this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x64')]=this['agents'][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x49')];}}}if(_0x563a5a['context']===_0x14d6('0x37')){if(this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]){this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x3c')]=_0x563a5a[_0x14d6('0x3a')];var _0x3d42a4,_0x2427ba;if(this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]]){_0x3d42a4=this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x68')];_0x2427ba=this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x2f')]][_0x14d6('0x7')];}else if(this['channels'][_0x563a5a['linkedid']]){_0x3d42a4=this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x68')];_0x2427ba=this[_0x14d6('0x12')][_0x563a5a[_0x14d6('0x33')]][_0x14d6('0x7')];}this[_0x14d6('0x13')][_0x563a5a['channel']['split']('-')[0x0]][_0x14d6('0x7')]=_0x2427ba;this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x68')]=_0x3d42a4;logger[_0x14d6('0x32')](_0x14d6('0x69'),_0x563a5a[_0x14d6('0x2f')],util[_0x14d6('0x29')]({'id':this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x40')],'destconnectedlinenum':_0x563a5a[_0x14d6('0x3a')],'routealias':_0x3d42a4,'queue':_0x2427ba||undefined},{'showHidden':![],'depth':null}));this[_0x14d6('0x2d')](util[_0x14d6('0x3e')](_0x14d6('0x3f'),this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x49')]),_0x14d6('0x4a'),{'id':this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x14d6('0x13')][_0x563a5a[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x40')],'destconnectedlinenum':_0x563a5a[_0x14d6('0x3a')],'routealias':_0x3d42a4,'queue':_0x2427ba||undefined});}}}}catch(_0x4c1c0a){logger[_0x14d6('0x27')](_0x14d6('0x6a'),_0x563a5a[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x4c1c0a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0x6b')]=function(_0x3f30c7,_0x62f001){try{if(this['channels'][_0x3f30c7]){logger[_0x14d6('0x25')](_0x14d6('0x6c'),_0x3f30c7,_0x62f001);this[_0x14d6('0x12')][_0x3f30c7][_0x14d6('0x6d')]=!![];if(_[_0x14d6('0x6e')](_0x62f001,_0x14d6('0x6f'))){_0x62f001=_0x62f001[_0x14d6('0x70')](_0x14d6('0x6f'),_0x14d6('0x71'));}this[_0x14d6('0x12')][_0x3f30c7][_0x14d6('0x72')]=_0x62f001;var _0x2957db=_[_0x14d6('0x73')](this[_0x14d6('0x12')][_0x3f30c7]['monitors'],{'filename':_0x62f001});if(_[_0x14d6('0x5b')](_0x2957db)){this['channels'][_0x3f30c7][_0x14d6('0x74')][_0x14d6('0x75')]({'filename':_0x62f001,'createdAt':moment()['format'](_0x14d6('0x54')),'mixmonitorid':'','status':_0x14d6('0x76')});}}}catch(_0x4706a3){logger[_0x14d6('0x27')](_0x14d6('0x77'),_0x3f30c7,util['inspect'](_0x4706a3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0x1c')]=function(_0x15b64d){try{if(this['isNotNull'](_0x15b64d)){logger[_0x14d6('0x32')](_0x14d6('0x78'),_0x15b64d[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x15b64d,{'showHidden':![],'depth':null}));if(this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x2f')]]&&_0x15b64d[_0x14d6('0x38')]!='OutgoingSpoolFailed'){if(this[_0x14d6('0x2b')](_0x15b64d['variable'])){if(this[_0x14d6('0x2b')](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x7a')])){logger[_0x14d6('0x25')](_0x14d6('0x7b'),_0x15b64d['uniqueid'],_0x15b64d['value']);this['syncMixMonitorFilename'](_0x15b64d[_0x14d6('0x2f')],_0x15b64d[_0x14d6('0x7c')]);}else if(this[_0x14d6('0x2b')](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x7d')])){logger[_0x14d6('0x25')](_0x14d6('0x7e'),_0x15b64d[_0x14d6('0x2f')],_0x15b64d[_0x14d6('0x7c')]);this[_0x14d6('0x12')][_0x15b64d['uniqueid']][_0x14d6('0x31')]=_0x15b64d[_0x14d6('0x7c')];}else if(this[_0x14d6('0x2b')](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x7f')])){logger[_0x14d6('0x25')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x15b64d[_0x14d6('0x2f')],_0x15b64d['value']);this[_0x14d6('0x12')][_0x15b64d['uniqueid']][_0x14d6('0x80')]=_0x15b64d[_0x14d6('0x7c')];}else if(this['isNotNull'](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x81')])){logger[_0x14d6('0x25')](_0x14d6('0x82'),_0x15b64d[_0x14d6('0x2f')],_0x15b64d[_0x14d6('0x7c')]);this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x2f')]]['type']=_0x15b64d[_0x14d6('0x7c')];}else if(this['isNotNull'](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x83')])){logger['info'](_0x14d6('0x84'),_0x15b64d['uniqueid'],_0x15b64d[_0x14d6('0x7c')][_0x14d6('0x39')](',')[0x0]);this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x2f')]]['queue']=_0x15b64d[_0x14d6('0x7c')][_0x14d6('0x39')](',')[0x0];}else if(this[_0x14d6('0x2b')](_0x15b64d['variable'][_0x14d6('0x85')])){logger[_0x14d6('0x25')](_0x14d6('0x86'),_0x15b64d['uniqueid'],_0x15b64d[_0x14d6('0x7c')]);this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x2f')]][_0x14d6('0x87')]=_0x15b64d[_0x14d6('0x7c')];}else if(this[_0x14d6('0x2b')](_0x15b64d['variable'][_0x14d6('0x88')])){logger[_0x14d6('0x25')](_0x14d6('0x89'),_0x15b64d[_0x14d6('0x2f')],_0x15b64d['value']);this['channels'][_0x15b64d[_0x14d6('0x2f')]][_0x14d6('0x8a')]=_0x15b64d['value'];}else if(this[_0x14d6('0x2b')](_0x15b64d['variable']['xmd-callerid-preview'])){logger[_0x14d6('0x25')](_0x14d6('0x8b'),_0x15b64d['uniqueid'],_0x15b64d[_0x14d6('0x7c')]);this['channels'][_0x15b64d['uniqueid']]['calleridpreview']=_0x15b64d[_0x14d6('0x7c')];}else if(this[_0x14d6('0x2b')](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x8c')])){logger[_0x14d6('0x25')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x15b64d[_0x14d6('0x2f')],_0x15b64d[_0x14d6('0x7c')]);this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x2f')]][_0x14d6('0x7')]=_0x15b64d['value'];}else if(this['isNotNull'](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x8d')])){logger['info'](_0x14d6('0x8e'),_0x15b64d[_0x14d6('0x2f')],_0x15b64d['value']);this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x2f')]][_0x14d6('0x8f')]=_0x15b64d['value'];}}}else if(this[_0x14d6('0x2b')](_0x15b64d['variable'][_0x14d6('0x7a')])){if(_0x15b64d[_0x14d6('0x7c')]){var _0x1326a0=path[_0x14d6('0x90')](_0x15b64d['value'])[_0x14d6('0x49')];logger[_0x14d6('0x25')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x1326a0,_0x15b64d[_0x14d6('0x7c')]);this[_0x14d6('0x6b')](_0x1326a0,_0x15b64d['value']);}}else if(this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x33')]]){if(this[_0x14d6('0x2b')](_0x15b64d['variable'])){if(this['isNotNull'](_0x15b64d[_0x14d6('0x79')][_0x14d6('0x8d')])){logger[_0x14d6('0x25')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x15b64d[_0x14d6('0x33')],_0x15b64d[_0x14d6('0x7c')]);this[_0x14d6('0x12')][_0x15b64d[_0x14d6('0x33')]][_0x14d6('0x91')]=_0x15b64d['value'];}}}}}catch(_0x2f0563){logger['error'](_0x14d6('0x92'),_0x15b64d[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x2f0563,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x14d6('0x93')]=function(_0x19ab3d){try{if(this[_0x14d6('0x2b')](_0x19ab3d)){logger['debug']('[%s][voiceCallReport][hangup]\x20event:',_0x19ab3d[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x19ab3d,{'showHidden':![],'depth':null}));if(this[_0x14d6('0x4c')][_0x19ab3d['linkedid']]){if(this[_0x14d6('0x12')][this['blindTransfers'][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x33')]]){this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x33')]][_0x14d6('0x2f')]=_0x19ab3d[_0x14d6('0x2f')];this[_0x14d6('0x12')][this['blindTransfers'][_0x19ab3d['linkedid']][_0x14d6('0x33')]][_0x14d6('0x60')]=this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x60')];this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x33')]][_0x14d6('0x61')]=this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x61')];this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d['linkedid']]['linkedid']][_0x14d6('0x66')]=this['channels'][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x33')]]['channel'];this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d['linkedid']][_0x14d6('0x33')]][_0x14d6('0x45')]=this[_0x14d6('0x12')][_0x19ab3d['uniqueid']][_0x14d6('0x45')];this[_0x14d6('0x12')][_0x19ab3d['uniqueid']]=this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d['linkedid']][_0x14d6('0x33')]];delete this['channels'][this['blindTransfers'][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x33')]];}else if(this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]]){this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]][_0x14d6('0x2f')]=[this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d['linkedid']][_0x14d6('0x2f')]][_0x14d6('0x33')],this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d['linkedid']][_0x14d6('0x2f')]][_0x14d6('0x33')]=this[_0x14d6('0x12')][this['blindTransfers'][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]]['uniqueid']][0x0];this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]][_0x14d6('0x60')]=this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x60')];this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]]['uniqueid']]['answertime']=this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x61')];this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]][_0x14d6('0x66')]=this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]][_0x14d6('0x38')];this['channels'][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]][_0x14d6('0x45')]=this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x45')];this[_0x14d6('0x12')][_0x19ab3d['uniqueid']]=this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]];delete this[_0x14d6('0x12')][this[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x33')]][_0x14d6('0x2f')]];}}if(this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]]){logger[_0x14d6('0x25')](_0x14d6('0x94'),_0x19ab3d[_0x14d6('0x2f')],_0x19ab3d['cause-txt']);var _0x4fd7e2=moment();this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x95')]=_0x4fd7e2['format'](_0x14d6('0x54'));this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]]['duration']=_0x4fd7e2[_0x14d6('0x63')](this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]]['starttime'],_0x14d6('0x53'));if(this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x60')]){this['channels'][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x96')]=_0x4fd7e2[_0x14d6('0x63')](this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x61')],_0x14d6('0x53'));this['channels'][_0x19ab3d['uniqueid']][_0x14d6('0x62')]=this['channels'][_0x19ab3d['uniqueid']][_0x14d6('0x52')]-this[_0x14d6('0x12')][_0x19ab3d['uniqueid']][_0x14d6('0x96')];}if(_0x19ab3d['context']===_0x14d6('0x37')){if(this['agents'][_0x19ab3d['channel']['split']('-')[0x0]]){this[_0x14d6('0x13')][_0x19ab3d[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]]=_[_0x14d6('0x97')](this['agents'][_0x19ab3d[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]],[_0x14d6('0x3c')]);logger[_0x14d6('0x32')](_0x14d6('0x98'),_0x19ab3d[_0x14d6('0x2f')],util[_0x14d6('0x29')]({'id':this['agents'][_0x19ab3d[_0x14d6('0x38')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x14d6('0x13')][_0x19ab3d[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x40')]},{'showHidden':![],'depth':null}));this[_0x14d6('0x2d')](util[_0x14d6('0x3e')](_0x14d6('0x3f'),this['agents'][_0x19ab3d[_0x14d6('0x38')][_0x14d6('0x39')]('-')[0x0]][_0x14d6('0x49')]),_0x14d6('0x99'),{'id':this[_0x14d6('0x13')][_0x19ab3d[_0x14d6('0x38')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x14d6('0x13')][_0x19ab3d['channel']['split']('-')[0x0]][_0x14d6('0x40')]});for(var _0x340123=0x0;_0x340123<Object[_0x14d6('0x35')](this['agents'])[_0x14d6('0x9a')];_0x340123++){var _0x55ff3c=Object['keys'](this[_0x14d6('0x13')])[_0x340123];var _0x2ffce5=this[_0x14d6('0x13')][_0x55ff3c];if(_0x2ffce5[_0x14d6('0x40')]===Number(_0x19ab3d['connectedlinenum'])){this['emit'](util['format'](_0x14d6('0x3f'),_0x2ffce5['name']),_0x14d6('0x99'),{'id':_0x2ffce5['id'],'destaccountcode':_0x2ffce5[_0x14d6('0x40')],'transfer':this[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x9b')]});break;}}}}var _0x494d71=this;Promise[_0x14d6('0x9c')]()[_0x14d6('0x9d')](function(){var _0x374d8b=_0x494d71['channels'][_0x19ab3d['uniqueid']];if(typeof _0x374d8b[_0x14d6('0x9b')]===_0x14d6('0x9e'))return;if(_[_0x14d6('0x9f')](_0x374d8b[_0x14d6('0x74')]))return;return RpcSetting['getSettings']()[_0x14d6('0x9d')](function(_0x243813){if(!_0x243813[_0x14d6('0xa0')])return;return Promise[_0x14d6('0x9c')]()['then'](function(){return ami[_0x14d6('0xa1')]({'action':'StopMixMonitor','channel':_0x374d8b[_0x14d6('0x38')]})[_0x14d6('0xa2')](function(){});})[_0x14d6('0x9d')](function(){return ami[_0x14d6('0xa1')]({'action':_0x14d6('0xa3'),'channel':_0x374d8b[_0x14d6('0x66')]})[_0x14d6('0xa2')](function(){})['finally'](function(){var _0x207106=_0x494d71[_0x14d6('0x13')][_0x374d8b[_0x14d6('0x66')][_0x14d6('0x39')]('-')[0x0]];if(!_0x207106)return;io[_0x14d6('0x2d')](_0x14d6('0xa4'),{'agentId':_0x207106['id'],'uniqueid':_0x374d8b['uniqueid']});});});});})[_0x14d6('0x9d')](function(){if(_0x19ab3d['event']===_0x14d6('0xa5')){_0x494d71[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x2f')]]=_0x19ab3d;}else{if(_0x494d71[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0xa6')]==='outbound'&&_0x494d71[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x2f')]]){_0x494d71['channels'][_0x19ab3d['uniqueid']]['uniqueid']=[_0x494d71[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x33')],_0x494d71[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]][_0x14d6('0x33')]=_0x494d71[_0x14d6('0x12')][_0x19ab3d['uniqueid']][_0x14d6('0x2f')]][0x0];delete _0x494d71[_0x14d6('0x4c')][_0x19ab3d[_0x14d6('0x2f')]];}}logger[_0x14d6('0x32')](_0x14d6('0xa7'),_0x19ab3d[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x494d71[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]],{'showHidden':![],'depth':null}));ami[_0x14d6('0x2d')](_0x14d6('0xa8'),_0x494d71[_0x14d6('0x12')][_0x19ab3d['uniqueid']]);delete _0x494d71[_0x14d6('0x12')][_0x19ab3d[_0x14d6('0x2f')]];});}}}catch(_0x451a85){logger[_0x14d6('0x27')](_0x14d6('0xa9'),_0x19ab3d[_0x14d6('0x2f')],util['inspect'](_0x451a85,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0x20')]=function(_0x31a772){try{if(this['isNotNull'](_0x31a772)){logger[_0x14d6('0x25')](_0x14d6('0xaa'),_0x31a772[_0x14d6('0x2f')],_0x31a772[_0x14d6('0xab')],_0x31a772[_0x14d6('0xac')]);logger['debug'](_0x14d6('0xad'),_0x31a772[_0x14d6('0x2f')],util['inspect'](_0x31a772,{'showHidden':![],'depth':null}));var _0xaae551;if(this['channels'][_0x31a772[_0x14d6('0xae')]]){this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xae')]][_0x14d6('0xaf')]=_0x31a772[_0x14d6('0xab')];this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xae')]][_0x14d6('0xb0')]=_0x31a772[_0x14d6('0xac')];if(this[_0x14d6('0x12')][_0x31a772['secondtransfereruniqueid']]){_0xaae551=this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb1')]];this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb1')]]=this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xae')]];this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xae')]]=_0xaae551;}this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb1')]]['transferType']='ATTENDED';}else if(this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb2')]]){this[_0x14d6('0x12')][_0x31a772['transfertargetuniqueid']][_0x14d6('0xaf')]=_0x31a772[_0x14d6('0xab')];this['channels'][_0x31a772[_0x14d6('0xb2')]]['transferconnectedlinenum']=_0x31a772[_0x14d6('0xac')];if(this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb3')]]){_0xaae551=this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb3')]];this['channels'][_0x31a772[_0x14d6('0xb3')]]=this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb2')]];this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb2')]]=_0xaae551;}this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb2')]][_0x14d6('0x9b')]=_0x14d6('0xb4');}if((this['channels'][_0x31a772['origtransfereruniqueid']]||this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb5')]])&&this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb1')]]){var _0x38451c=_[_0x14d6('0xb6')]([this[_0x14d6('0x12')][_0x31a772['origtransfereruniqueid']],this['channels'][_0x31a772[_0x14d6('0xb5')]],this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb1')]]],function(_0x4bf4d9){return _0x4bf4d9&&_0x4bf4d9[_0x14d6('0xa6')]==='outbound'&&_0x4bf4d9['routeid'];});if(_0x38451c){if(this[_0x14d6('0x12')][_0x31a772['origtransfereruniqueid']])this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb3')]][_0x14d6('0x9b')]='ATTENDED';if(this['channels'][_0x31a772[_0x14d6('0xb5')]])this[_0x14d6('0x12')][_0x31a772['origtransfererlinkedid']][_0x14d6('0x9b')]=_0x14d6('0xb4');this[_0x14d6('0x12')][_0x31a772[_0x14d6('0xb1')]]['transferType']='ATTENDED';}}}}catch(_0x39ce4e){logger['error'](_0x14d6('0xb7'),_0x31a772[_0x14d6('0x2f')],util['inspect'](_0x39ce4e,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncBlindTransfer']=function(_0x697e63){try{if(this[_0x14d6('0x2b')](_0x697e63)){logger[_0x14d6('0x25')](_0x14d6('0xb8'),_0x697e63['uniqueid'],_0x697e63[_0x14d6('0xb9')],_0x697e63[_0x14d6('0xba')]);logger['debug'](_0x14d6('0xbb'),_0x697e63['uniqueid'],util[_0x14d6('0x29')](_0x697e63,{'showHidden':![],'depth':null}));if(this[_0x14d6('0x12')][_0x697e63[_0x14d6('0xae')]]){this['channels'][_0x697e63[_0x14d6('0xae')]][_0x14d6('0xaf')]=_0x697e63[_0x14d6('0xb9')];this['channels'][_0x697e63['transfereeuniqueid']][_0x14d6('0xb0')]=_0x697e63['extension'];this[_0x14d6('0x12')][_0x697e63[_0x14d6('0xae')]]['transferType']=_0x14d6('0xbc');this[_0x14d6('0x93')]({'event':_0x14d6('0xa5'),'uniqueid':_0x697e63['transfereeuniqueid'],'linkedid':_0x697e63[_0x14d6('0xbd')],'context':_0x697e63[_0x14d6('0x36')],'channel':_0x697e63['transfererchannel']});}else{this[_0x14d6('0x12')][_0x697e63[_0x14d6('0xbd')]][_0x14d6('0x9b')]=_0x14d6('0xbc');this[_0x14d6('0x93')]({'event':_0x14d6('0xa5'),'uniqueid':_0x697e63[_0x14d6('0xbd')],'linkedid':_0x697e63[_0x14d6('0xae')],'context':_0x697e63['context'],'channel':_0x697e63[_0x14d6('0xbe')]});}}}catch(_0x214a7d){logger[_0x14d6('0x27')](_0x14d6('0xbf'),_0x697e63['uniqueid'],util[_0x14d6('0x29')](_0x214a7d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x14d6('0x2a')][_0x14d6('0xc0')]=function(_0x5a4848){try{if(this['isNotNull'](_0x5a4848)){logger[_0x14d6('0x32')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x5a4848['uniqueid'],util[_0x14d6('0x29')](_0x5a4848,{'showHidden':![],'depth':null}));if(this[_0x14d6('0x12')][_0x5a4848[_0x14d6('0x2f')]]){if(!_[_0x14d6('0x5b')](this[_0x14d6('0x12')][_0x5a4848[_0x14d6('0x2f')]][_0x14d6('0x61')])){this['channels'][_0x5a4848['uniqueid']][_0x14d6('0xc1')]=moment()[_0x14d6('0x3e')](_0x14d6('0x54'));logger[_0x14d6('0x25')](_0x14d6('0xc2'),_0x5a4848[_0x14d6('0x2f')],this[_0x14d6('0x12')][_0x5a4848[_0x14d6('0x2f')]]['mohstarttime']);}}}}catch(_0x1bbbd0){logger[_0x14d6('0x27')]('[%s][voiceCallReport][musiconholdstart]',_0x5a4848[_0x14d6('0x2f')],util['inspect'](_0x1bbbd0,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMusicOnHoldStop']=function(_0x4a153c){try{if(this[_0x14d6('0x2b')](_0x4a153c)){logger[_0x14d6('0x32')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x4a153c[_0x14d6('0x2f')],util[_0x14d6('0x29')](_0x4a153c,{'showHidden':![],'depth':null}));if(this['channels'][_0x4a153c[_0x14d6('0x2f')]]){if(!_['isNil'](this[_0x14d6('0x12')][_0x4a153c[_0x14d6('0x2f')]][_0x14d6('0xc1')])){this[_0x14d6('0x12')][_0x4a153c[_0x14d6('0x2f')]][_0x14d6('0xc3')]+=moment()['milliseconds'](0x0)[_0x14d6('0x63')](this['channels'][_0x4a153c[_0x14d6('0x2f')]]['mohstarttime'],_0x14d6('0x53'));logger[_0x14d6('0x25')](_0x14d6('0xc4'),_0x4a153c[_0x14d6('0x2f')],this[_0x14d6('0x12')][_0x4a153c[_0x14d6('0x2f')]][_0x14d6('0xc3')]);delete this[_0x14d6('0x12')][_0x4a153c[_0x14d6('0x2f')]][_0x14d6('0xc1')];}}}}catch(_0x18470b){logger['error'](_0x14d6('0xc5'),_0x4a153c['uniqueid'],util[_0x14d6('0x29')](_0x18470b,{'showHidden':![],'depth':null}));}};module[_0x14d6('0xc6')]=VoiceCallReport;
\ No newline at end of file
index 614ef89..99365e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','error','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','socket.io-emitter','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','channels','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','keys','value','variable','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','memberrealtime','isNil','includes','cause-txt','duration','endtime','diff','starttime','seconds','complete','total','answertime','answered','holdtime','billableseconds','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:'];(function(_0x413d74,_0x5bab1b){var _0x177f90=function(_0x15e9de){while(--_0x15e9de){_0x413d74['push'](_0x413d74['shift']());}};_0x177f90(++_0x5bab1b);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x44d71e,_0x2867de){_0x44d71e=_0x44d71e-0x0;var _0x9dde2e=_0xb4c7[_0x44d71e];return _0x9dde2e;};'use strict';var _=require(_0x7b4c('0x0'));var moment=require(_0x7b4c('0x1'));var util=require(_0x7b4c('0x2'));var Redis=require(_0x7b4c('0x3'));var config=require(_0x7b4c('0x4'));var logger=require('../../../config/logger')(_0x7b4c('0x5'));var ami=require(_0x7b4c('0x6'));config[_0x7b4c('0x7')]=_[_0x7b4c('0x8')](config[_0x7b4c('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x7b4c('0x9'))(new Redis(config[_0x7b4c('0x7')]));function VoiceDialReport(_0x2dd5c7){this['channels']=_0x2dd5c7[_0x7b4c('0xa')];this[_0x7b4c('0xb')]=_0x2dd5c7['outbound'];this[_0x7b4c('0xc')]={};this[_0x7b4c('0xd')]={};ami['on'](_0x7b4c('0xe'),this[_0x7b4c('0xf')][_0x7b4c('0x10')](this));ami['on'](_0x7b4c('0x11'),this[_0x7b4c('0x12')][_0x7b4c('0x10')](this));ami['on'](_0x7b4c('0x13'),this[_0x7b4c('0x14')]['bind'](this));ami['on']('hangup',this[_0x7b4c('0x15')][_0x7b4c('0x10')](this));}VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x17')]=function(_0x3e1558){return _0x3e1558!==null&&!_[_0x7b4c('0x18')](_0x3e1558);};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x19')]=function(_0x25b90b,_0x387488,_0x593a19){io['to'](_0x25b90b)[_0x7b4c('0x19')](_0x387488,_0x593a19);};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0xf')]=function(_0x2a0e2f){try{if(this[_0x7b4c('0x17')](_0x2a0e2f)){logger[_0x7b4c('0x1a')](_0x7b4c('0x1b'),_0x2a0e2f[_0x7b4c('0x1c')],util['inspect'](_0x2a0e2f,{'showHidden':![],'depth':null}));if(this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]]){_[_0x7b4c('0x1e')](this[_0x7b4c('0x1d')][_0x2a0e2f['uniqueid']],{'starttime':moment()[_0x7b4c('0x1f')](_0x7b4c('0x20')),'lastevent':_0x7b4c('0x21'),'interface':_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x23')](0x0,_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x24')]('-')),'membername':_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x23')](_0x2a0e2f['channel'][_0x7b4c('0x24')]('/')+0x1,_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x24')]('-'))},_[_0x7b4c('0x25')](_0x2a0e2f,[_0x7b4c('0x26'),_0x7b4c('0x27')]));logger[_0x7b4c('0x28')](_0x7b4c('0x29'),_0x2a0e2f[_0x7b4c('0x1c')],this[_0x7b4c('0x1d')][_0x2a0e2f['uniqueid']][_0x7b4c('0x2a')],this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]][_0x7b4c('0x2b')]);logger[_0x7b4c('0x1a')](_0x7b4c('0x2c'),_0x2a0e2f[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));if(this[_0x7b4c('0xc')][_0x2a0e2f[_0x7b4c('0x1c')]])_[_0x7b4c('0x1e')](this['channels'][_0x2a0e2f[_0x7b4c('0x1c')]],this[_0x7b4c('0xc')][_0x2a0e2f[_0x7b4c('0x1c')]]);this[_0x7b4c('0x19')](_0x7b4c('0x2e'),_0x7b4c('0x2f'),this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]]);logger[_0x7b4c('0x1a')](_0x7b4c('0x30'),_0x2a0e2f[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')](_0x7b4c('0x31'),this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]]);}}}catch(_0x9d3d31){logger['error']('[%s][voiceDialReport][dialbegin]',_0x2a0e2f['uniqueid'],util[_0x7b4c('0x2d')](_0x9d3d31,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x12')]=function(_0x66e770){try{if(this['isNotNull'](_0x66e770)){logger[_0x7b4c('0x1a')](_0x7b4c('0x32'),_0x66e770['uniqueid'],util[_0x7b4c('0x2d')](_0x66e770,{'showHidden':![],'depth':null}));if(this['channels'][_0x66e770[_0x7b4c('0x1c')]]){this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]]['dialstatus']=_0x66e770[_0x7b4c('0x33')];if(_0x66e770[_0x7b4c('0x33')]==='ANSWER'){this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]][_0x7b4c('0x34')]=_0x66e770[_0x7b4c('0x34')];this['channels'][_0x66e770['uniqueid']][_0x7b4c('0x35')]=_0x66e770[_0x7b4c('0x35')];this['channels'][_0x66e770[_0x7b4c('0x1c')]]['answertime']=moment()['format'](_0x7b4c('0x20'));this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]][_0x7b4c('0x36')]='connect';logger[_0x7b4c('0x28')](_0x7b4c('0x37'),_0x66e770[_0x7b4c('0x1c')],_0x66e770[_0x7b4c('0x22')][_0x7b4c('0x23')](_0x66e770[_0x7b4c('0x22')][_0x7b4c('0x24')]('/')+0x1,_0x66e770['channel']['lastIndexOf']('-')));logger[_0x7b4c('0x1a')](_0x7b4c('0x38'),_0x66e770[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x66e770['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')](_0x7b4c('0x39'),this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]]);}logger[_0x7b4c('0x1a')](_0x7b4c('0x3a'),_0x66e770[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x66e770['uniqueid']],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')]('voice:outbound',_0x7b4c('0x2f'),this['channels'][_0x66e770[_0x7b4c('0x1c')]]);}}}catch(_0x46a23d){logger['error']('[%s][voiceDialReport][dialend]',_0x66e770[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x46a23d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x14')]=function(_0x57abb5){try{if(this[_0x7b4c('0x17')](_0x57abb5)){logger[_0x7b4c('0x1a')](_0x7b4c('0x3b'),_0x57abb5['uniqueid'],util[_0x7b4c('0x2d')](_0x57abb5,{'showHidden':![],'depth':null}));this['addVariable'](_0x57abb5['uniqueid'],_[_0x7b4c('0x3c')](_0x57abb5['variable'])[0x0],_0x57abb5[_0x7b4c('0x3d')]);if(this[_0x7b4c('0x17')](_0x57abb5[_0x7b4c('0x3e')])&&this[_0x7b4c('0x17')](_0x57abb5[_0x7b4c('0x3e')][_0x7b4c('0x3f')])){if(_[_0x7b4c('0x18')](this[_0x7b4c('0x1d')][_0x57abb5[_0x7b4c('0x1c')]])){this['channels'][_0x57abb5[_0x7b4c('0x1c')]]={'routeId':_0x57abb5['value'],'variables':this['variables'][_0x57abb5[_0x7b4c('0x1c')]],'motionChannel':_0x7b4c('0x40')};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x57abb5[_0x7b4c('0x1c')],_0x57abb5[_0x7b4c('0x3e')][_0x7b4c('0x3f')],_[_0x7b4c('0x3c')](_0x57abb5[_0x7b4c('0x3e')])[0x0],_0x57abb5[_0x7b4c('0x3d')]);logger[_0x7b4c('0x1a')](_0x7b4c('0x41'),_0x57abb5['uniqueid'],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x57abb5[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')](_0x7b4c('0x2e'),_0x7b4c('0x2f'),this[_0x7b4c('0x1d')][_0x57abb5[_0x7b4c('0x1c')]]);}}}}catch(_0x45957d){logger['error']('[%s][voiceDialReport][varset]',_0x57abb5[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x45957d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')]['addVariable']=function(_0xfd4074,_0x2684e1,_0x5ddf41){var _0x1d82ee=['rtpaudioqos',_0x7b4c('0x42'),'rtpaudioqosjitter',_0x7b4c('0x43'),'rtpaudioqosloss',_0x7b4c('0x44'),_0x7b4c('0x45'),'rtpaudioqosrttbridged','sipcallid',_0x7b4c('0x46'),_0x7b4c('0x47'),_0x7b4c('0x48'),'membercalls','memberdynamic',_0x7b4c('0x49'),_0x7b4c('0x4a'),'membername','memberpenalty',_0x7b4c('0x4b')];if(!_[_0x7b4c('0x4c')](_0x2684e1)&&!_[_0x7b4c('0x4d')](_0x1d82ee,_0x2684e1)){if(_['isUndefined'](this[_0x7b4c('0xd')][_0xfd4074])){this[_0x7b4c('0xd')][_0xfd4074]={};}this['variables'][_0xfd4074][_0x2684e1]=_0x5ddf41;}};VoiceDialReport['prototype'][_0x7b4c('0x15')]=function(_0x4d8491){try{if(this['isNotNull'](_0x4d8491)){logger[_0x7b4c('0x1a')]('[%s][voiceDialReport][hangup]\x20event:',_0x4d8491['uniqueid'],util[_0x7b4c('0x2d')](_0x4d8491,{'showHidden':![],'depth':null}));if(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]){logger[_0x7b4c('0x28')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x4d8491['uniqueid'],_0x4d8491[_0x7b4c('0x4e')]);this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]['endtime']=moment()[_0x7b4c('0x1f')](_0x7b4c('0x20'));this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x4f')]=moment(this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x50')])[_0x7b4c('0x51')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]][_0x7b4c('0x52')],_0x7b4c('0x53'));this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x36')]=_0x7b4c('0x54');this['outbound'][_0x7b4c('0x55')]+=0x1;if(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]][_0x7b4c('0x56')]){this['outbound'][_0x7b4c('0x57')]+=0x1;this['channels'][_0x4d8491['uniqueid']][_0x7b4c('0x58')]=moment(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]][_0x7b4c('0x56')])[_0x7b4c('0x51')](this['channels'][_0x4d8491['uniqueid']][_0x7b4c('0x52')],_0x7b4c('0x53'));this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x59')]=moment(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]['endtime'])[_0x7b4c('0x51')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]['answertime'],_0x7b4c('0x53'));this[_0x7b4c('0xb')]['sumHoldTime']+=this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x58')]||0x0;this[_0x7b4c('0xb')][_0x7b4c('0x5a')]+=this['channels'][_0x4d8491['uniqueid']][_0x7b4c('0x59')];}this[_0x7b4c('0xb')][_0x7b4c('0x5b')]+=this['channels'][_0x4d8491[_0x7b4c('0x1c')]]['duration'];logger[_0x7b4c('0x1a')](_0x7b4c('0x5c'),_0x4d8491[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')](_0x7b4c('0x5d'),this['channels'][_0x4d8491[_0x7b4c('0x1c')]]);logger[_0x7b4c('0x1a')](_0x7b4c('0x5e'),_0x4d8491[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')]('custom:dialend',this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]);logger[_0x7b4c('0x1a')](_0x7b4c('0x5f'),_0x4d8491[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')](_0x7b4c('0x2e'),_0x7b4c('0x60'),this[_0x7b4c('0xb')]);logger[_0x7b4c('0x28')](_0x7b4c('0x61'),JSON[_0x7b4c('0x62')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]));logger[_0x7b4c('0x1a')](_0x7b4c('0x63'),_0x4d8491[_0x7b4c('0x1c')],util['inspect'](this['channels'][_0x4d8491[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')]('voice:outbound',_0x7b4c('0x64'),this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]);delete this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]];}else if(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x65')]]){this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x65')]]['uniqueid']=this[_0x7b4c('0x1d')][_0x4d8491['linkedid']][_0x7b4c('0x66')];}if(this['variables'][_0x4d8491['uniqueid']]){delete this[_0x7b4c('0xd')][_0x4d8491['uniqueid']];}}}catch(_0x5d34d9){logger[_0x7b4c('0x67')](_0x7b4c('0x68'),_0x4d8491[_0x7b4c('0x1c')],util['inspect'](_0x5d34d9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x69')]=function(_0x10e789){try{if(this[_0x7b4c('0x17')](_0x10e789)){logger[_0x7b4c('0x1a')](_0x7b4c('0x6a'),_0x10e789[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x10e789,{'showHidden':![],'depth':null}));if(_0x10e789[_0x7b4c('0x6b')][_0x7b4c('0x6c')]()===_0x7b4c('0x6d')){_0x10e789[_0x7b4c('0x6e')]=(_0x10e789[_0x7b4c('0x6f')]||_0x10e789[_0x7b4c('0x6e')])['toLowerCase']();if(_[_0x7b4c('0x70')](_0x10e789[_0x7b4c('0x6e')],_0x7b4c('0x71'))){if(_[_0x7b4c('0x18')](this['applications'][_0x10e789[_0x7b4c('0x1c')]]))this[_0x7b4c('0xc')][_0x10e789[_0x7b4c('0x1c')]]={};logger[_0x7b4c('0x28')](_0x7b4c('0x72'),_0x10e789[_0x7b4c('0x1c')],_0x10e789[_0x7b4c('0x6b')],_0x10e789['applicationdata']);var _0x11c809=_0x10e789[_0x7b4c('0x6e')]['split']('=');var _0x4a9cf6=_0x11c809[0x0]['match'](/cdr\((.*)\)/);if(_0x4a9cf6)this[_0x7b4c('0xc')][_0x10e789[_0x7b4c('0x1c')]][_0x4a9cf6[0x1]]=_0x11c809[0x1];}}}}catch(_0x24d4f9){logger[_0x7b4c('0x67')](_0x7b4c('0x73'),_0x10e789[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x24d4f9,{'showHidden':![],'depth':null}));}};module[_0x7b4c('0x74')]=VoiceDialReport;
\ No newline at end of file
+var _0x5075=['redis','defaults','outboundChannels','outbound','dialbegin','syncDialBegin','bind','dialend','varset','hangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','channels','merge','format','called','channel','substring','lastIndexOf','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','variables','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','holdtime','billableseconds','sumHoldTime','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','applications','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami'];(function(_0x30bdf0,_0x492c5e){var _0x1fcdad=function(_0x10cd37){while(--_0x10cd37){_0x30bdf0['push'](_0x30bdf0['shift']());}};_0x1fcdad(++_0x492c5e);}(_0x5075,0x73));var _0x5507=function(_0x3f3f40,_0x4e745f){_0x3f3f40=_0x3f3f40-0x0;var _0x32c366=_0x5075[_0x3f3f40];return _0x32c366;};'use strict';var _=require(_0x5507('0x0'));var moment=require(_0x5507('0x1'));var util=require(_0x5507('0x2'));var Redis=require(_0x5507('0x3'));var config=require(_0x5507('0x4'));var logger=require(_0x5507('0x5'))(_0x5507('0x6'));var ami=require('../ami');config[_0x5507('0x7')]=_[_0x5507('0x8')](config[_0x5507('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5507('0x7')]));function VoiceDialReport(_0x773559){this['channels']=_0x773559[_0x5507('0x9')];this[_0x5507('0xa')]=_0x773559[_0x5507('0xa')];this['applications']={};this['variables']={};ami['on'](_0x5507('0xb'),this[_0x5507('0xc')][_0x5507('0xd')](this));ami['on'](_0x5507('0xe'),this['syncDialEnd'][_0x5507('0xd')](this));ami['on'](_0x5507('0xf'),this['syncVarSet'][_0x5507('0xd')](this));ami['on'](_0x5507('0x10'),this['syncHangup'][_0x5507('0xd')](this));}VoiceDialReport[_0x5507('0x11')][_0x5507('0x12')]=function(_0x267f27){return _0x267f27!==null&&!_[_0x5507('0x13')](_0x267f27);};VoiceDialReport[_0x5507('0x11')]['emit']=function(_0x9cc3f9,_0x2b7c43,_0xc828e5){io['to'](_0x9cc3f9)[_0x5507('0x14')](_0x2b7c43,_0xc828e5);};VoiceDialReport['prototype'][_0x5507('0xc')]=function(_0x10d7b9){try{if(this[_0x5507('0x12')](_0x10d7b9)){logger[_0x5507('0x15')](_0x5507('0x16'),_0x10d7b9[_0x5507('0x17')],util[_0x5507('0x18')](_0x10d7b9,{'showHidden':![],'depth':null}));if(this[_0x5507('0x19')][_0x10d7b9[_0x5507('0x17')]]){_[_0x5507('0x1a')](this[_0x5507('0x19')][_0x10d7b9[_0x5507('0x17')]],{'starttime':moment()[_0x5507('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x5507('0x1c'),'interface':_0x10d7b9[_0x5507('0x1d')][_0x5507('0x1e')](0x0,_0x10d7b9[_0x5507('0x1d')]['lastIndexOf']('-')),'membername':_0x10d7b9[_0x5507('0x1d')][_0x5507('0x1e')](_0x10d7b9[_0x5507('0x1d')][_0x5507('0x1f')]('/')+0x1,_0x10d7b9[_0x5507('0x1d')][_0x5507('0x1f')]('-'))},_['omit'](_0x10d7b9,[_0x5507('0x20'),_0x5507('0x21')]));logger[_0x5507('0x22')](_0x5507('0x23'),_0x10d7b9[_0x5507('0x17')],this[_0x5507('0x19')][_0x10d7b9[_0x5507('0x17')]][_0x5507('0x24')],this[_0x5507('0x19')][_0x10d7b9[_0x5507('0x17')]][_0x5507('0x25')]);logger[_0x5507('0x15')](_0x5507('0x26'),_0x10d7b9[_0x5507('0x17')],util[_0x5507('0x18')](this['channels'][_0x10d7b9[_0x5507('0x17')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x10d7b9[_0x5507('0x17')]])_['merge'](this[_0x5507('0x19')][_0x10d7b9[_0x5507('0x17')]],this['applications'][_0x10d7b9['uniqueid']]);this[_0x5507('0x14')](_0x5507('0x27'),'voice_outbound_channel:save',this[_0x5507('0x19')][_0x10d7b9[_0x5507('0x17')]]);logger[_0x5507('0x15')](_0x5507('0x28'),_0x10d7b9[_0x5507('0x17')],util[_0x5507('0x18')](this['channels'][_0x10d7b9[_0x5507('0x17')]],{'showHidden':![],'depth':null}));ami[_0x5507('0x14')](_0x5507('0x29'),this[_0x5507('0x19')][_0x10d7b9[_0x5507('0x17')]]);}}}catch(_0x495bbe){logger['error'](_0x5507('0x2a'),_0x10d7b9[_0x5507('0x17')],util[_0x5507('0x18')](_0x495bbe,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x5507('0x11')]['syncDialEnd']=function(_0x777eb7){try{if(this[_0x5507('0x12')](_0x777eb7)){logger[_0x5507('0x15')](_0x5507('0x2b'),_0x777eb7[_0x5507('0x17')],util[_0x5507('0x18')](_0x777eb7,{'showHidden':![],'depth':null}));if(this[_0x5507('0x19')][_0x777eb7[_0x5507('0x17')]]){this['channels'][_0x777eb7[_0x5507('0x17')]][_0x5507('0x2c')]=_0x777eb7[_0x5507('0x2c')];if(_0x777eb7['dialstatus']==='ANSWER'){this[_0x5507('0x19')][_0x777eb7[_0x5507('0x17')]][_0x5507('0x2d')]=_0x777eb7[_0x5507('0x2d')];this[_0x5507('0x19')][_0x777eb7['uniqueid']]['connectedlinename']=_0x777eb7[_0x5507('0x2e')];this[_0x5507('0x19')][_0x777eb7[_0x5507('0x17')]][_0x5507('0x2f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x5507('0x19')][_0x777eb7['uniqueid']][_0x5507('0x30')]=_0x5507('0x31');logger[_0x5507('0x22')](_0x5507('0x32'),_0x777eb7[_0x5507('0x17')],_0x777eb7[_0x5507('0x1d')][_0x5507('0x1e')](_0x777eb7[_0x5507('0x1d')][_0x5507('0x1f')]('/')+0x1,_0x777eb7[_0x5507('0x1d')]['lastIndexOf']('-')));logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x777eb7['uniqueid'],util[_0x5507('0x18')](this[_0x5507('0x19')][_0x777eb7[_0x5507('0x17')]],{'showHidden':![],'depth':null}));ami[_0x5507('0x14')](_0x5507('0x33'),this[_0x5507('0x19')][_0x777eb7[_0x5507('0x17')]]);}logger[_0x5507('0x15')](_0x5507('0x34'),_0x777eb7[_0x5507('0x17')],util[_0x5507('0x18')](this[_0x5507('0x19')][_0x777eb7[_0x5507('0x17')]],{'showHidden':![],'depth':null}));this[_0x5507('0x14')]('voice:outbound','voice_outbound_channel:save',this['channels'][_0x777eb7[_0x5507('0x17')]]);}}}catch(_0x41283f){logger[_0x5507('0x35')](_0x5507('0x36'),_0x777eb7[_0x5507('0x17')],util[_0x5507('0x18')](_0x41283f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x5507('0x11')][_0x5507('0x37')]=function(_0x3dd253){try{if(this[_0x5507('0x12')](_0x3dd253)){logger[_0x5507('0x15')](_0x5507('0x38'),_0x3dd253[_0x5507('0x17')],util[_0x5507('0x18')](_0x3dd253,{'showHidden':![],'depth':null}));this[_0x5507('0x39')](_0x3dd253[_0x5507('0x17')],_[_0x5507('0x3a')](_0x3dd253[_0x5507('0x3b')])[0x0],_0x3dd253[_0x5507('0x3c')]);if(this['isNotNull'](_0x3dd253[_0x5507('0x3b')])&&this[_0x5507('0x12')](_0x3dd253['variable']['outboundrouteid'])){if(_[_0x5507('0x13')](this[_0x5507('0x19')][_0x3dd253[_0x5507('0x17')]])){this[_0x5507('0x19')][_0x3dd253[_0x5507('0x17')]]={'routeId':_0x3dd253['value'],'variables':this[_0x5507('0x3d')][_0x3dd253[_0x5507('0x17')]],'motionChannel':_0x5507('0x3e')};logger['info'](_0x5507('0x3f'),_0x3dd253[_0x5507('0x17')],_0x3dd253[_0x5507('0x3b')][_0x5507('0x40')],_[_0x5507('0x3a')](_0x3dd253['variable'])[0x0],_0x3dd253[_0x5507('0x3c')]);logger['debug'](_0x5507('0x41'),_0x3dd253[_0x5507('0x17')],util[_0x5507('0x18')](this[_0x5507('0x19')][_0x3dd253[_0x5507('0x17')]],{'showHidden':![],'depth':null}));this[_0x5507('0x14')](_0x5507('0x27'),_0x5507('0x42'),this['channels'][_0x3dd253[_0x5507('0x17')]]);}}}}catch(_0x22e63b){logger['error']('[%s][voiceDialReport][varset]',_0x3dd253['uniqueid'],util[_0x5507('0x18')](_0x22e63b,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x5507('0x39')]=function(_0x4e53fa,_0x754595,_0x55f8c2){var _0x5ef341=[_0x5507('0x43'),_0x5507('0x44'),_0x5507('0x45'),_0x5507('0x46'),_0x5507('0x47'),_0x5507('0x48'),'rtpaudioqosrtt',_0x5507('0x49'),_0x5507('0x4a'),_0x5507('0x4b'),'bridgepeer',_0x5507('0x4c'),_0x5507('0x4d'),_0x5507('0x4e'),_0x5507('0x4f'),_0x5507('0x50'),_0x5507('0x24'),_0x5507('0x51'),_0x5507('0x52')];if(!_[_0x5507('0x53')](_0x754595)&&!_[_0x5507('0x54')](_0x5ef341,_0x754595)){if(_[_0x5507('0x13')](this['variables'][_0x4e53fa])){this['variables'][_0x4e53fa]={};}this[_0x5507('0x3d')][_0x4e53fa][_0x754595]=_0x55f8c2;}};VoiceDialReport[_0x5507('0x11')][_0x5507('0x55')]=function(_0x1b34c8){try{if(this[_0x5507('0x12')](_0x1b34c8)){logger[_0x5507('0x15')](_0x5507('0x56'),_0x1b34c8[_0x5507('0x17')],util[_0x5507('0x18')](_0x1b34c8,{'showHidden':![],'depth':null}));if(this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]]){logger[_0x5507('0x22')](_0x5507('0x57'),_0x1b34c8[_0x5507('0x17')],_0x1b34c8[_0x5507('0x58')]);this[_0x5507('0x19')][_0x1b34c8['uniqueid']][_0x5507('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x5a')]=moment(this[_0x5507('0x19')][_0x1b34c8['uniqueid']][_0x5507('0x59')])[_0x5507('0x5b')](this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x5c')],_0x5507('0x5d'));this['channels'][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x30')]=_0x5507('0x5e');this['outbound']['total']+=0x1;if(this[_0x5507('0x19')][_0x1b34c8['uniqueid']][_0x5507('0x2f')]){this[_0x5507('0xa')]['answered']+=0x1;this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x5f')]=moment(this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x2f')])[_0x5507('0x5b')](this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x5c')],_0x5507('0x5d'));this[_0x5507('0x19')][_0x1b34c8['uniqueid']][_0x5507('0x60')]=moment(this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x59')])[_0x5507('0x5b')](this['channels'][_0x1b34c8[_0x5507('0x17')]]['answertime'],_0x5507('0x5d'));this[_0x5507('0xa')][_0x5507('0x61')]+=this['channels'][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x5f')]||0x0;this[_0x5507('0xa')]['sumBillable']+=this[_0x5507('0x19')][_0x1b34c8['uniqueid']][_0x5507('0x60')];}this['outbound']['sumDuration']+=this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]][_0x5507('0x5a')];logger[_0x5507('0x15')](_0x5507('0x62'),_0x1b34c8[_0x5507('0x17')],util['inspect'](this['channels'][_0x1b34c8[_0x5507('0x17')]],{'showHidden':![],'depth':null}));ami[_0x5507('0x14')](_0x5507('0x63'),this[_0x5507('0x19')][_0x1b34c8['uniqueid']]);logger[_0x5507('0x15')](_0x5507('0x64'),_0x1b34c8[_0x5507('0x17')],util[_0x5507('0x18')](this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]],{'showHidden':![],'depth':null}));ami[_0x5507('0x14')]('custom:dialend',this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]]);logger[_0x5507('0x15')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x1b34c8[_0x5507('0x17')],util['inspect'](this['channels'][_0x1b34c8['uniqueid']],{'showHidden':![],'depth':null}));this[_0x5507('0x14')](_0x5507('0x27'),_0x5507('0x65'),this[_0x5507('0xa')]);logger[_0x5507('0x22')](_0x5507('0x66'),JSON[_0x5507('0x67')](this['channels'][_0x1b34c8[_0x5507('0x17')]]));logger['debug'](_0x5507('0x68'),_0x1b34c8[_0x5507('0x17')],util[_0x5507('0x18')](this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]],{'showHidden':![],'depth':null}));this[_0x5507('0x14')](_0x5507('0x27'),_0x5507('0x69'),this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x17')]]);delete this[_0x5507('0x19')][_0x1b34c8['uniqueid']];}else if(this[_0x5507('0x19')][_0x1b34c8[_0x5507('0x6a')]]){this[_0x5507('0x19')][_0x1b34c8['linkedid']][_0x5507('0x17')]=this[_0x5507('0x19')][_0x1b34c8['linkedid']][_0x5507('0x6b')];}if(this['variables'][_0x1b34c8['uniqueid']]){delete this[_0x5507('0x3d')][_0x1b34c8['uniqueid']];}}}catch(_0xb92deb){logger[_0x5507('0x35')](_0x5507('0x6c'),_0x1b34c8[_0x5507('0x17')],util[_0x5507('0x18')](_0xb92deb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x5507('0x11')]['syncNewExten']=function(_0x43fccf){try{if(this[_0x5507('0x12')](_0x43fccf)){logger[_0x5507('0x15')](_0x5507('0x6d'),_0x43fccf[_0x5507('0x17')],util[_0x5507('0x18')](_0x43fccf,{'showHidden':![],'depth':null}));if(_0x43fccf[_0x5507('0x6e')][_0x5507('0x6f')]()===_0x5507('0x70')){_0x43fccf[_0x5507('0x71')]=(_0x43fccf[_0x5507('0x72')]||_0x43fccf[_0x5507('0x71')])['toLowerCase']();if(_[_0x5507('0x73')](_0x43fccf[_0x5507('0x71')],_0x5507('0x74'))){if(_[_0x5507('0x13')](this[_0x5507('0x75')][_0x43fccf[_0x5507('0x17')]]))this['applications'][_0x43fccf[_0x5507('0x17')]]={};logger['info'](_0x5507('0x76'),_0x43fccf['uniqueid'],_0x43fccf['application'],_0x43fccf[_0x5507('0x71')]);var _0x20274e=_0x43fccf[_0x5507('0x71')][_0x5507('0x77')]('=');var _0x447e8d=_0x20274e[0x0]['match'](/cdr\((.*)\)/);if(_0x447e8d)this[_0x5507('0x75')][_0x43fccf['uniqueid']][_0x447e8d[0x1]]=_0x20274e[0x1];}}}}catch(_0x410c16){logger[_0x5507('0x35')](_0x5507('0x78'),_0x43fccf[_0x5507('0x17')],util['inspect'](_0x410c16,{'showHidden':![],'depth':null}));}};module[_0x5507('0x79')]=VoiceDialReport;
\ No newline at end of file
index bacff4e..c2af051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ff=['[%s][voiceQueueReport][queuecallerleave]','last','queuecallerleaveAt','connectedlinenum','connectedlinename','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','startsWith','channel','toLowerCase','local/','queuecallerjoinAt','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','linkedid','COMPLETEDBY','toUpperCase','addVariable','variable','value','CONTINUE','TIMEOUT','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','length','unmanaged','abandoned','sumHoldTime','diff','sumDuration','milliseconds','seconds','total','sumBillable','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','syncHangup','cause-txt','cause','handleHangup','transferid','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','origtransfererexten','origtransfereruniqueid','transfertargetuniqueid','[%s][voiceQueueReport][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','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','queueReports','realtime','agents','queueChannels','voiceQueues','campaigns','summary','variables','queuesummary','syncQueueSummary','bind','syncQueueSummaryComplete','queuemember','syncQueueStatusComplete','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','waiting','queueStatusComplete','unlockRR','loggedIn','loggedInDb','paused','ringing','talking','channels','switch','sequence','isNil','Action','status','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','format','voice_queue:save','isUndefined','clearZombieChannels','queues','[voiceQueueReport][queues]','isRunning','then','actionid','createQueueSummaryReport','summaryEvent','available','loggedin','callers','forEach','incall','includes','unknown','notInUse','inUse','invalid','unavailable','ringInUse','queuestatus','assign','statusRequests','syncQueueMember','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','[voiceQueueReport][queuesummary]','completeEvent','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]'];(function(_0x15d8f3,_0x58eaf9){var _0x563fc8=function(_0xd97656){while(--_0xd97656){_0x15d8f3['push'](_0x15d8f3['shift']());}};_0x563fc8(++_0x58eaf9);}(_0xe3ff,0x6e));var _0xfe3f=function(_0x3946ab,_0x31626d){_0x3946ab=_0x3946ab-0x0;var _0x2defa9=_0xe3ff[_0x3946ab];return _0x2defa9;};'use strict';var _=require(_0xfe3f('0x0'));var moment=require(_0xfe3f('0x1'));var util=require(_0xfe3f('0x2'));var md5=require(_0xfe3f('0x3'));var Redis=require('ioredis');var config=require(_0xfe3f('0x4'));var logger=require(_0xfe3f('0x5'))(_0xfe3f('0x6'));var ami=require(_0xfe3f('0x7'));var QueueReport=require(_0xfe3f('0x8'));var VoiceQueueSummary=require(_0xfe3f('0x9'));config[_0xfe3f('0xa')]=_[_0xfe3f('0xb')](config[_0xfe3f('0xa')],{'host':_0xfe3f('0xc'),'port':0x18eb});var io=require(_0xfe3f('0xd'))(new Redis(config[_0xfe3f('0xa')]));var Sequence=function(){};Sequence[_0xfe3f('0xe')][_0xfe3f('0xf')]=function(_0x2cfa14){this[_0xfe3f('0x10')]=this['tail']?this[_0xfe3f('0x10')][_0xfe3f('0x11')](_0x2cfa14):_0x2cfa14();};function VoiceQueueReport(_0x1503a0){this['sequence']=new Sequence();this[_0xfe3f('0x12')]={};this[_0xfe3f('0x13')]=_0x1503a0;this[_0xfe3f('0x14')]=_0x1503a0[_0xfe3f('0x14')];this['channels']=_0x1503a0[_0xfe3f('0x15')];this['voiceQueues']=_0x1503a0[_0xfe3f('0x16')];this[_0xfe3f('0x17')]=_0x1503a0[_0xfe3f('0x17')];this[_0xfe3f('0x18')]=initializeSummary();this[_0xfe3f('0x19')]={};ami['on'](_0xfe3f('0x1a'),this[_0xfe3f('0x1b')][_0xfe3f('0x1c')](this));ami['on']('queuesummarycomplete',this[_0xfe3f('0x1d')]['bind'](this));ami['on'](_0xfe3f('0x1e'),this['syncQueueMember'][_0xfe3f('0x1c')](this));ami['on']('queuestatuscomplete',this[_0xfe3f('0x1f')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x20'),this['syncQueueCallerJoin']['bind'](this));ami['on'](_0xfe3f('0x21'),this[_0xfe3f('0x22')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x23'),this['syncQueueCallerLeave']['bind'](this));ami['on'](_0xfe3f('0x24'),this['syncAgentComplete'][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x25'),this[_0xfe3f('0x26')]['bind'](this));ami['on'](_0xfe3f('0x27'),this[_0xfe3f('0x28')]['bind'](this));ami['on'](_0xfe3f('0x29'),this['syncHangup'][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x2a'),this[_0xfe3f('0x2b')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x2c'),this[_0xfe3f('0x2d')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x2e'),this[_0xfe3f('0x2f')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x30'),this[_0xfe3f('0x31')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x32'),this[_0xfe3f('0x33')][_0xfe3f('0x1c')](this));this[_0xfe3f('0x34')]();this[_0xfe3f('0x35')]();}function clearChannels(_0x42d85f){if(!_[_0xfe3f('0x36')](_0x42d85f)){for(var _0x1a04e5 in _0x42d85f){if(_0x42d85f['hasOwnProperty'](_0x1a04e5)){delete _0x42d85f[_0x1a04e5];}}}}function clearCampaigns(_0xbed590){if(!_[_0xfe3f('0x36')](_0xbed590)){for(var _0x1331a7 in _0xbed590){if(_0xbed590[_0xfe3f('0x37')](_0x1331a7)){_0xbed590[_0x1331a7][_0xfe3f('0x38')]=0x0;}}}}function clearVoiceQueues(_0xca8c1f){if(!_['isEmpty'](_0xca8c1f)){for(var _0x3884f7 in _0xca8c1f){if(_0xca8c1f['hasOwnProperty'](_0x3884f7)){_0xca8c1f[_0x3884f7][_0xfe3f('0x38')]=0x0;_0xca8c1f[_0x3884f7]['talking']=0x0;_0xca8c1f[_0x3884f7]['pTalking']=0x0;_0xca8c1f[_0x3884f7][_0xfe3f('0x39')]=0x0;_0xca8c1f[_0x3884f7][_0xfe3f('0x3a')]=!![];}}}}function clearAgentBooked(_0x3e574c){if(!_[_0xfe3f('0x36')](_0x3e574c)){for(var _0x3b083f in _0x3e574c){if(_0x3e574c[_0xfe3f('0x37')](_0x3b083f)){_0x3e574c[_0x3b083f][_0xfe3f('0x3b')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasQueueCountersChanged(_0x585d5d,_0x569be2){return _0x585d5d['available']!==_0x569be2['available']||_0x585d5d[_0xfe3f('0x3c')]!==_0x569be2[_0xfe3f('0x3c')]||_0x585d5d[_0xfe3f('0x3d')]!==_0x569be2[_0xfe3f('0x3d')]||_0x585d5d['paused']!==_0x569be2[_0xfe3f('0x3e')]||_0x585d5d[_0xfe3f('0x3f')]!==_0x569be2[_0xfe3f('0x3f')]||_0x585d5d['talking']!==_0x569be2[_0xfe3f('0x40')]||_0x585d5d[_0xfe3f('0x39')]!==_0x569be2['waiting'];}VoiceQueueReport[_0xfe3f('0xe')]['clearZombieChannels']=function(){var _0x71074f=this;for(var _0x23ce11 in this['channels']){if(this[_0xfe3f('0x41')][_0xfe3f('0x37')](_0x23ce11)&&!this[_0xfe3f('0x41')][_0x23ce11][_0xfe3f('0x42')]){this[_0xfe3f('0x43')][_0xfe3f('0xf')](function(){if(!_[_0xfe3f('0x44')](_0x71074f[_0xfe3f('0x41')][_0x23ce11])){return ami[_0xfe3f('0x45')]({'action':_0xfe3f('0x46'),'channel':_0x71074f[_0xfe3f('0x41')][_0x23ce11]['channel']})[_0xfe3f('0x47')](function(_0x165af6){if(_0x165af6[_0xfe3f('0x48')]===_0xfe3f('0x49')){setTimeout(function(){if(_0x71074f[_0xfe3f('0x41')][_0x23ce11]){delete _0x71074f[_0xfe3f('0x41')][_0x23ce11];logger[_0xfe3f('0x4a')]('[%s][voiceQueueReport][checkChannel]',_0x23ce11,util[_0xfe3f('0x4b')](_0x165af6,{'showHidden':![],'depth':null}));}if(_0x71074f[_0xfe3f('0x12')][_0x23ce11]){delete _0x71074f['queueReports'][_0x23ce11];logger[_0xfe3f('0x4a')](_0xfe3f('0x4c'),_0x23ce11,util[_0xfe3f('0x4b')](_0x165af6,{'showHidden':![],'depth':null}));}if(_0x71074f[_0xfe3f('0x19')][_0x23ce11]){delete _0x71074f[_0xfe3f('0x19')][_0x23ce11];logger[_0xfe3f('0x4a')](_0xfe3f('0x4d'),_0x23ce11,util['inspect'](_0x165af6,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0xfe3f('0x2b')]=function(){logger[_0xfe3f('0x4a')](_0xfe3f('0x4e'));clearChannels(this[_0xfe3f('0x41')]);this[_0xfe3f('0x4f')](this[_0xfe3f('0x12')]);clearAgentBooked(this['agents']);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0xfe3f('0x17')]);this[_0xfe3f('0x18')]=initializeSummary();};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x4f')]=function(_0x327bb2){var _0x13b34d=this;if(!_['isEmpty'](_0x327bb2)){for(var _0x4c1414 in _0x327bb2){if(_0x327bb2[_0xfe3f('0x37')](_0x4c1414)){_0x13b34d[_0xfe3f('0x50')](_0x327bb2[_0x4c1414],_0xfe3f('0x51'));delete _0x327bb2[_0x4c1414];}}}};VoiceQueueReport['prototype'][_0xfe3f('0x52')]=function(_0x54abcf,_0xd087d2,_0x1a4bb8){io['to'](_0x54abcf)[_0xfe3f('0x52')](_0xd087d2,_0x1a4bb8);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x53')]=function(_0x496cde,_0x2fd93b){logger[_0xfe3f('0x54')](_0xfe3f('0x55')+_0x2fd93b+_0xfe3f('0x56'),_0x496cde['uniqueid'],util[_0xfe3f('0x4b')](_0x496cde,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xfe3f('0x57'),_0x496cde[_0xfe3f('0x58')]),_0xfe3f('0x59'),_0x496cde);io['emit'](_0xfe3f('0x5a'),_0x496cde);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x50')]=function(_0x47b413,_0x4e080d){logger[_0xfe3f('0x54')](_0xfe3f('0x55')+_0x4e080d+_0xfe3f('0x5b'),_0x47b413[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x47b413,{'showHidden':![],'depth':null}));if(_0x47b413[_0xfe3f('0x5d')]===_0xfe3f('0x5e')){return;}this[_0xfe3f('0x52')](util['format']('voice:queue:%s',_0x47b413['name']),_0xfe3f('0x5f'),_0x47b413);io[_0xfe3f('0x52')](_0xfe3f('0x60'),_0x47b413);};VoiceQueueReport['prototype'][_0xfe3f('0x61')]=function(_0x1cb014,_0x2158f0){if(_0x1cb014[_0xfe3f('0x62')]===_0xfe3f('0x63')){var _0x19348f=new VoiceQueueSummary(_0x1cb014);var _0x323822=md5(JSON[_0xfe3f('0x64')](_0x19348f));if(_0x1cb014[_0xfe3f('0x3')]!==_0x323822){_0x1cb014[_0xfe3f('0x3')]=_0x323822;logger[_0xfe3f('0x54')](_0xfe3f('0x65')+_0x2158f0+_0xfe3f('0x66'),util[_0xfe3f('0x4b')](_0x19348f,{'showHidden':![],'depth':null}));this[_0xfe3f('0x52')](util[_0xfe3f('0x67')](_0xfe3f('0x57'),_0x19348f[_0xfe3f('0x58')]),_0xfe3f('0x68'),_0x19348f);}}};VoiceQueueReport[_0xfe3f('0xe')]['isNotNull']=function(_0x2f9756){return _0x2f9756!==null&&!_[_0xfe3f('0x69')](_0x2f9756);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x35')]=function(){var _0x514a3b=this;setInterval(function(){_0x514a3b[_0xfe3f('0x6a')]();ami['Action']({'action':_0xfe3f('0x6b')})[_0xfe3f('0x47')](function(_0x300304){logger[_0xfe3f('0x4a')](_0xfe3f('0x6c'),util['inspect'](_0x300304,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x34')]=function(){var _0x16b34e=this;setInterval(function(){if(!_0x16b34e[_0xfe3f('0x18')][_0xfe3f('0x6d')]){return ami[_0xfe3f('0x45')]({'action':_0xfe3f('0x1a')})[_0xfe3f('0x6e')](function(_0x52066e){_0x16b34e[_0xfe3f('0x18')]['id']=_0x52066e[_0xfe3f('0x6f')];_0x16b34e['summary'][_0xfe3f('0x6d')]=!![];_0x16b34e['summary']['queuestatus'][_0x52066e[_0xfe3f('0x6f')]]={};})[_0xfe3f('0x47')](function(_0x20d2b3){logger[_0xfe3f('0x4a')]('[voiceQueueReport][queuesummary]',util['inspect'](_0x20d2b3,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x70')]=function(_0x5dd1e4,_0x883338){var _0xe2598f=this[_0xfe3f('0x14')];var _0x11c590=this[_0xfe3f('0x18')][_0xfe3f('0x6b')][_0x5dd1e4['name']][_0xfe3f('0x71')];var _0x3c1653={'available':Number(_0x11c590[_0xfe3f('0x72')]),'busy':0x0,'inUse':0x0,'invalid':0x0,'loggedIn':Number(_0x11c590[_0xfe3f('0x73')]),'loggedInDb':0x0,'notInUse':0x0,'onHold':0x0,'paused':0x0,'ringing':0x0,'ringInUse':0x0,'talking':0x0,'unavailable':0x0,'unknown':0x0,'waiting':Number(_0x11c590[_0xfe3f('0x74')])};if(_0x5dd1e4){_0x883338[_0xfe3f('0x75')](function(_0x5e1d86){var _0x1a5adb=_0xe2598f['SIP/'+_0x5e1d86['name']];if(_0x1a5adb&&_0x1a5adb['online']){_0x3c1653[_0xfe3f('0x3d')]+=0x1;}if(_0x5e1d86[_0xfe3f('0x76')]==='1'){_0x3c1653['talking']+=0x1;}if(_0x5e1d86[_0xfe3f('0x3e')]==='1'&&!['2','7','8'][_0xfe3f('0x77')](_0x5e1d86['status'])){_0x3c1653[_0xfe3f('0x3e')]+=0x1;}switch(_0x5e1d86['status']){case'0':_0x3c1653[_0xfe3f('0x78')]+=0x1;break;case'1':_0x3c1653[_0xfe3f('0x79')]+=0x1;break;case'2':_0x3c1653[_0xfe3f('0x7a')]+=0x1;break;case'3':_0x3c1653['busy']+=0x1;break;case'4':_0x3c1653[_0xfe3f('0x7b')]+=0x1;break;case'5':_0x3c1653[_0xfe3f('0x7c')]+=0x1;break;case'6':_0x3c1653[_0xfe3f('0x3f')]+=0x1;break;case'7':_0x3c1653[_0xfe3f('0x7d')]+=0x1;break;case'8':_0x3c1653['onHold']+=0x1;break;}});}return _0x3c1653;};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x1f')]=function(_0x5ced36){var _0x119fc7=null;var _0x3bb978=this[_0xfe3f('0x18')]['id'];if(this['summary'][_0xfe3f('0x7e')][_0x3bb978]){_0x119fc7=this['summary'][_0xfe3f('0x7e')][_0x3bb978][_0x5ced36[_0xfe3f('0x6f')]];}if(!_0x119fc7){this[_0xfe3f('0x18')]=initializeSummary();return;}var _0x17afd3=this[_0xfe3f('0x16')][_0x119fc7['queue']];var _0x30dbb0=this['createQueueSummaryReport'](_0x17afd3,_0x119fc7['agents']);var _0x37adb6=hasQueueCountersChanged(_0x17afd3,_0x30dbb0);if(_0x37adb6){var _0x31c257=Object[_0xfe3f('0x7f')](_0x17afd3,_0x30dbb0);this[_0xfe3f('0x13')][_0xfe3f('0x16')][_0x17afd3[_0xfe3f('0x58')]]=_0x17afd3;this[_0xfe3f('0x61')](_0x31c257,_0xfe3f('0x1a'));}ami[_0xfe3f('0x52')]('custom:queuesummary',_0x17afd3);this['summary'][_0xfe3f('0x80')]-=0x1;var _0x12259c=this[_0xfe3f('0x18')][_0xfe3f('0x80')]>0x0?!![]:![];if(!_0x12259c){return this[_0xfe3f('0x1d')](this[_0xfe3f('0x18')]['completeEvent']);}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x81')]=function(_0x18b4db){var _0x5ad57d=this['summary']['id'];if(this['summary'][_0xfe3f('0x7e')][_0x5ad57d]&&this['summary'][_0xfe3f('0x7e')][_0x5ad57d][_0x18b4db[_0xfe3f('0x6f')]]){this[_0xfe3f('0x18')]['queuestatus'][_0x5ad57d][_0x18b4db[_0xfe3f('0x6f')]][_0xfe3f('0x14')]['push'](_0x18b4db);}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x1b')]=function(_0x5a0275){var _0x3aba8d=this;try{if(this[_0xfe3f('0x82')](_0x5a0275)&&this['isNotNull'](_0x5a0275[_0xfe3f('0x83')])){logger['debug'](_0xfe3f('0x84'),util[_0xfe3f('0x4b')](_0x5a0275,{'showHidden':![],'depth':null}));var _0x1c689b=this['voiceQueues'][_0x5a0275[_0xfe3f('0x83')]];if(_0x1c689b){logger[_0xfe3f('0x85')](_0xfe3f('0x86'),_0x1c689b[_0xfe3f('0x58')]);this[_0xfe3f('0x18')][_0xfe3f('0x6b')][_0x1c689b[_0xfe3f('0x58')]]={'summaryEvent':_0x5a0275};this['summary']['statusRequests']+=0x1;if(!this[_0xfe3f('0x18')]['queuestatus'][_0x5a0275[_0xfe3f('0x6f')]]){this[_0xfe3f('0x18')][_0xfe3f('0x7e')][_0x5a0275[_0xfe3f('0x6f')]]={};}return ami[_0xfe3f('0x45')]({'action':_0xfe3f('0x7e'),'queue':_0x1c689b['name']})[_0xfe3f('0x6e')](function(_0x4c59d5){_0x3aba8d['summary'][_0xfe3f('0x7e')][_0x5a0275[_0xfe3f('0x6f')]][_0x4c59d5[_0xfe3f('0x6f')]]={'queue':_0x1c689b[_0xfe3f('0x58')],'agents':[]};})[_0xfe3f('0x47')](function(_0x1a32c8){throw _0x1a32c8;});}}}catch(_0x51953c){logger[_0xfe3f('0x4a')](_0xfe3f('0x87'),util['inspect'](_0x51953c,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xfe3f('0x1d')]=function(_0x61e009){if(this[_0xfe3f('0x18')]['statusRequests']>0x0){this['summary'][_0xfe3f('0x88')]=_0x61e009;return;}logger[_0xfe3f('0x54')](_0xfe3f('0x89'),util[_0xfe3f('0x4b')](_0x61e009,{'showHidden':![],'depth':null}));this[_0xfe3f('0x18')]=initializeSummary();ami[_0xfe3f('0x52')](_0xfe3f('0x8a'),{});};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x8b')]=function(_0x33eeac){try{if(this['isNotNull'](_0x33eeac)){logger[_0xfe3f('0x54')](_0xfe3f('0x8c'),_0x33eeac[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x33eeac,{'showHidden':![],'depth':null}));if(_[_0xfe3f('0x69')](this[_0xfe3f('0x12')][_0x33eeac[_0xfe3f('0x5c')]])){this[_0xfe3f('0x12')][_0x33eeac[_0xfe3f('0x5c')]]=[];}if(_[_0xfe3f('0x69')](this[_0xfe3f('0x41')][_0x33eeac['uniqueid']])){this[_0xfe3f('0x41')][_0x33eeac[_0xfe3f('0x5c')]]={};}var _0x235fa4=new QueueReport();_0x235fa4[_0xfe3f('0x83')]=_0x33eeac[_0xfe3f('0x83')];_0x235fa4[_0xfe3f('0x62')]=this[_0xfe3f('0x16')][_0x235fa4[_0xfe3f('0x83')]]&&this[_0xfe3f('0x16')][_0x235fa4[_0xfe3f('0x83')]][_0xfe3f('0x62')]?this['voiceQueues'][_0x235fa4[_0xfe3f('0x83')]][_0xfe3f('0x62')]||_0xfe3f('0x63'):_0xfe3f('0x63');_0x235fa4['queuecallerjoinAt']=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x235fa4[_0xfe3f('0x8e')]=_0x33eeac[_0xfe3f('0x8e')];_0x235fa4[_0xfe3f('0x8f')]=_0x33eeac[_0xfe3f('0x8f')];_0x235fa4[_0xfe3f('0x5c')]=_0x33eeac[_0xfe3f('0x5c')];_0x235fa4[_0xfe3f('0x90')]=this[_0xfe3f('0x41')][_0x33eeac['uniqueid']][_0xfe3f('0x90')];logger[_0xfe3f('0x85')](_0xfe3f('0x91'),_0x235fa4[_0xfe3f('0x83')],_0x235fa4['type']);_[_0xfe3f('0x92')](_0x235fa4,_['pick'](_0x33eeac,_[_0xfe3f('0x93')](_0x235fa4)));this[_0xfe3f('0x12')][_0x33eeac[_0xfe3f('0x5c')]]['push'](_0x235fa4);this[_0xfe3f('0x41')][_0x33eeac[_0xfe3f('0x5c')]]=_0x235fa4;this['emitVoiceQueueChannelSave'](_0x235fa4,_0xfe3f('0x20'));}}catch(_0xaa99ba){logger[_0xfe3f('0x4a')](_0xfe3f('0x8c'),_0x33eeac[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0xaa99ba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x22')]=function(_0x3eacf3){try{if(this[_0xfe3f('0x82')](_0x3eacf3)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][queuecallerabandon]',_0x3eacf3[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x3eacf3,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3eacf3[_0xfe3f('0x5c')]]){var _0x40e813=_['last'](this[_0xfe3f('0x12')][_0x3eacf3[_0xfe3f('0x5c')]]);_0x40e813['queuecallercomplete']=![];_0x40e813[_0xfe3f('0x94')]=null;_0x40e813['holdtime']=_0x3eacf3[_0xfe3f('0x95')];_0x40e813[_0xfe3f('0x96')]=_0x3eacf3[_0xfe3f('0x96')];_0x40e813[_0xfe3f('0x21')]=!![];_0x40e813[_0xfe3f('0x97')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x40e813[_0xfe3f('0x5d')]=_0xfe3f('0x98');_0x40e813[_0xfe3f('0x99')]=null;logger['info'](_0xfe3f('0x9a'),_0x40e813[_0xfe3f('0x83')],_0x40e813[_0xfe3f('0x62')]);this[_0xfe3f('0x41')][_0x3eacf3['uniqueid']]=_0x40e813;this[_0xfe3f('0x50')](_0x40e813,'queuecallerabandon');}}}catch(_0x60da6){logger[_0xfe3f('0x4a')](_0xfe3f('0x9b'),_0x3eacf3['uniqueid'],util[_0xfe3f('0x4b')](_0x60da6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')]['syncQueueCallerLeave']=function(_0x5e9822){try{if(this['isNotNull'](_0x5e9822)){logger[_0xfe3f('0x54')](_0xfe3f('0x9c'),_0x5e9822[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x5e9822,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x5e9822[_0xfe3f('0x5c')]]){var _0x2e2270=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x5e9822[_0xfe3f('0x5c')]]);_0x2e2270[_0xfe3f('0x9e')]=moment()['format'](_0xfe3f('0x8d'));_0x2e2270[_0xfe3f('0x9f')]=_0x5e9822[_0xfe3f('0x9f')];_0x2e2270[_0xfe3f('0xa0')]=_0x5e9822['connectedlinename'];logger[_0xfe3f('0x85')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x2e2270['queue'],_0x2e2270[_0xfe3f('0x62')],_0x5e9822[_0xfe3f('0x9f')],_0x5e9822[_0xfe3f('0xa0')]);this[_0xfe3f('0x41')][_0x5e9822[_0xfe3f('0x5c')]]=_0x2e2270;this[_0xfe3f('0x53')](_0x2e2270,_0xfe3f('0x23'));}}}catch(_0x579748){logger[_0xfe3f('0x4a')]('[%s][voiceQueueReport][queuecallerleave]',_0x5e9822[_0xfe3f('0x5c')],util['inspect'](_0x579748,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x242322){try{if(this[_0xfe3f('0x82')](_0x242322)){logger[_0xfe3f('0x54')](_0xfe3f('0xa1'),_0x242322[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x242322,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x242322[_0xfe3f('0x5c')]]){var _0x3b55f4=_['last'](this[_0xfe3f('0x12')][_0x242322[_0xfe3f('0x5c')]]);_0x3b55f4[_0xfe3f('0xa2')]=!![];_0x3b55f4[_0xfe3f('0x5d')]=_0xfe3f('0xa3');logger[_0xfe3f('0x85')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x3b55f4[_0xfe3f('0x83')],_0x3b55f4[_0xfe3f('0x62')]);}}}catch(_0x2274a3){logger['error'](_0xfe3f('0xa1'),_0x242322[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x2274a3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')]['syncAgentComplete']=function(_0x53a973){try{if(this['isNotNull'](_0x53a973)){logger['debug']('[%s][voiceQueueReport][agentcomplete]',_0x53a973[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x53a973,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x53a973[_0xfe3f('0x5c')]]){var _0x5d0757=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x53a973[_0xfe3f('0x5c')]]);_0x5d0757['queuecallerabandon']=![];_0x5d0757[_0xfe3f('0x97')]=null;_0x5d0757[_0xfe3f('0xa4')]=!![];_0x5d0757[_0xfe3f('0x99')]=_0x53a973[_0xfe3f('0xa5')];_0x5d0757[_0xfe3f('0x95')]=_0x53a973['holdtime'];_0x5d0757[_0xfe3f('0xa2')]=!![];_0x5d0757[_0xfe3f('0xa6')]=![];_0x5d0757[_0xfe3f('0xa7')]=null;if(!_0x5d0757[_0xfe3f('0xa8')]){if(_0x53a973[_0xfe3f('0xa9')]==_0xfe3f('0xa8')){_0x5d0757[_0xfe3f('0x5d')]=_0xfe3f('0xaa');logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x5d0757['queue'],_0x5d0757['type']);}else{if(_[_0xfe3f('0xab')](_0x53a973[_0xfe3f('0xac')][_0xfe3f('0xad')](),_0xfe3f('0xae'))){if(this[_0xfe3f('0x12')][_0x53a973['linkedid']]){var _0x32291a=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x53a973['linkedid']]);_0x32291a[_0xfe3f('0xa2')]=![];_0x32291a[_0xfe3f('0xa6')]=!![];_0x32291a['queuecallerexitAt']=moment(_0x5d0757[_0xfe3f('0xaf')])['add'](_0x53a973[_0xfe3f('0x95')],'seconds')[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x32291a[_0xfe3f('0x5d')]=_0xfe3f('0xb0');_0x32291a[_0xfe3f('0xa8')]=!![];_0x32291a[_0xfe3f('0xb1')]=_0xfe3f('0xb2');_0x32291a[_0xfe3f('0xb3')]=_0x53a973[_0xfe3f('0xb4')];_0x32291a[_0xfe3f('0xb5')]=_0x53a973['uniqueid'];logger[_0xfe3f('0x85')](_0xfe3f('0xb6'),_0x32291a[_0xfe3f('0x58')],_0x32291a['type']);var _0x5883bd=this['queueReports'][_0x53a973[_0xfe3f('0xb7')]];this[_0xfe3f('0x12')][_0x53a973['linkedid']]=this[_0xfe3f('0x12')][_0x53a973[_0xfe3f('0x5c')]];this['queueReports'][_0x53a973[_0xfe3f('0x5c')]]=_0x5883bd;}}else{_0x5d0757[_0xfe3f('0x5d')]=_0xfe3f('0xb8')+_0x53a973[_0xfe3f('0xa9')][_0xfe3f('0xb9')]();logger[_0xfe3f('0x85')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x5d0757[_0xfe3f('0x83')],_0x5d0757[_0xfe3f('0x62')],_0x5d0757[_0xfe3f('0x5d')]);}}}this['channels'][_0x53a973[_0xfe3f('0x5c')]]=_0x5d0757;this[_0xfe3f('0x50')](_0x5d0757,_0xfe3f('0x24'));}}}catch(_0x4b7dd7){logger[_0xfe3f('0x4a')]('[%s][voiceQueueReport][agentcomplete]',_0x53a973['uniqueid'],util[_0xfe3f('0x4b')](_0x4b7dd7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x28')]=function(_0x4dee96){try{if(this['isNotNull'](_0x4dee96)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][varset]',_0x4dee96[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x4dee96,{'showHidden':![],'depth':null}));this[_0xfe3f('0xba')](_0x4dee96[_0xfe3f('0x5c')],_[_0xfe3f('0x93')](_0x4dee96[_0xfe3f('0xbb')])[0x0],_0x4dee96[_0xfe3f('0xbc')]);if(this['queueReports'][_0x4dee96[_0xfe3f('0x5c')]]){var _0xbc9c45=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x4dee96['uniqueid']]);if(_0xbc9c45){if(this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')])&&this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')][_0xfe3f('0x7e')])){switch(_0x4dee96['value']){case _0xfe3f('0xbd'):_0xbc9c45[_0xfe3f('0xa6')]=![];_0xbc9c45[_0xfe3f('0xa7')]=null;break;case _0xfe3f('0xbe'):_0xbc9c45[_0xfe3f('0xbf')]='timeout';_0xbc9c45['queuecallerexit']=!![];_0xbc9c45[_0xfe3f('0xa7')]=moment()['format'](_0xfe3f('0x8d'));_0xbc9c45[_0xfe3f('0x9e')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));logger[_0xfe3f('0x54')](_0xfe3f('0xc0'),_0x4dee96['uniqueid'],util['inspect'](_0xbc9c45,{'showHidden':![],'depth':null}));ami[_0xfe3f('0x52')](_0xfe3f('0xc1'),_0xbc9c45);break;default:_0xbc9c45['queuecallerexit']=!![];_0xbc9c45[_0xfe3f('0xa7')]=moment()[_0xfe3f('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0xbc9c45[_0xfe3f('0x9e')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));}_0xbc9c45['queuecallerabandon']=![];_0xbc9c45[_0xfe3f('0x97')]=null;_0xbc9c45[_0xfe3f('0x5d')]=_0x4dee96[_0xfe3f('0xbc')];this[_0xfe3f('0x41')][_0x4dee96[_0xfe3f('0x5c')]]=_0xbc9c45;this[_0xfe3f('0x50')](_0xbc9c45,_0xfe3f('0x27'));}else if(this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')])&&this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')][_0xfe3f('0xc2')])){if(!_0xbc9c45[_0xfe3f('0x21')]){_0xbc9c45[_0xfe3f('0xa6')]=!![];_0xbc9c45['queuecallerexitAt']=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0xbc9c45[_0xfe3f('0x5d')]=_0xfe3f('0xc3');_0xbc9c45[_0xfe3f('0x9e')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));this['channels'][_0x4dee96[_0xfe3f('0x5c')]]=_0xbc9c45;}}logger[_0xfe3f('0x85')](_0xfe3f('0xc4'),_0x4dee96[_0xfe3f('0x5c')],_0xbc9c45[_0xfe3f('0x83')],_0xbc9c45['type'],_['keys'](_0x4dee96[_0xfe3f('0xbb')])[0x0],_0x4dee96[_0xfe3f('0xbc')]);_0xbc9c45['variables']=this[_0xfe3f('0x19')][_0x4dee96['uniqueid']];}}}}catch(_0x4f4c34){logger[_0xfe3f('0x4a')](_0xfe3f('0xc5'),_0x4dee96[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x4f4c34,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0xba')]=function(_0x557511,_0x5a3dfc,_0x50bd79){var _0x3dc67b=['rtpaudioqos','rtpaudioqosbridged',_0xfe3f('0xc6'),'rtpaudioqosjitterbridged',_0xfe3f('0xc7'),_0xfe3f('0xc8'),_0xfe3f('0xc9'),_0xfe3f('0xca'),_0xfe3f('0xcb'),_0xfe3f('0xcc'),_0xfe3f('0xcd'),_0xfe3f('0xce'),_0xfe3f('0xcf'),_0xfe3f('0xd0'),_0xfe3f('0xd1'),_0xfe3f('0xd2'),_0xfe3f('0xa5'),'memberpenalty',_0xfe3f('0xd3')];if(!_[_0xfe3f('0x44')](_0x5a3dfc)&&!_['includes'](_0x3dc67b,_0x5a3dfc)){if(_[_0xfe3f('0x69')](this['variables'][_0x557511])){this[_0xfe3f('0x19')][_0x557511]={};}this[_0xfe3f('0x19')][_0x557511][_0x5a3dfc]=_0x50bd79;}};VoiceQueueReport['prototype']['handleHangup']=function(_0x4dfd02,_0x375fe7,_0x50a8bf){var _0x57e8b3={};for(var _0x1360c9=0x0;_0x1360c9<this['queueReports'][_0x4dfd02][_0xfe3f('0xd4')];_0x1360c9+=0x1){_0x57e8b3=this[_0xfe3f('0x12')][_0x4dfd02][_0x1360c9];if(this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]]){if(_0x57e8b3[_0xfe3f('0xa6')]&&_0x57e8b3['transfer']!=!![]){this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd5')]+=0x1;}if(_0x57e8b3['queuecallerabandon']){this['voiceQueues'][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd6')]+=0x1;}this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd7')]+=moment(_0x57e8b3[_0xfe3f('0x9e')])[_0xfe3f('0xd8')](_0x57e8b3[_0xfe3f('0xaf')],'seconds')||0x0;if(_0x1360c9===this['queueReports'][_0x4dfd02][_0xfe3f('0xd4')]-0x1){this[_0xfe3f('0x16')][_0x57e8b3['queue']][_0xfe3f('0xd9')]+=moment()[_0xfe3f('0xda')](0x0)[_0xfe3f('0xd8')](_0x57e8b3[_0xfe3f('0xaf')],_0xfe3f('0xdb'));this[_0xfe3f('0x16')][_0x57e8b3['queue']][_0xfe3f('0xdc')]+=0x1;if(_0x57e8b3[_0xfe3f('0xa2')]){this[_0xfe3f('0x16')][_0x57e8b3['queue']]['answered']+=0x1;this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xdd')]+=moment()[_0xfe3f('0xda')](0x0)[_0xfe3f('0xd8')](_0x57e8b3['queuecallerleaveAt'],'seconds');_0x57e8b3[_0xfe3f('0x94')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x57e8b3['queuecallerexit']=![];_0x57e8b3['queuecallerexitAt']=null;}if(_0x57e8b3['queuecallerexit']&&_0x57e8b3[_0xfe3f('0xa8')]!=!![]){_0x57e8b3['lastevent']=_0xfe3f('0xd5');logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x4dfd02,util[_0xfe3f('0x4b')](_0x57e8b3,{'showHidden':![],'depth':null}));ami['emit'](_0xfe3f('0xde'),_0x57e8b3);}if(_0x57e8b3['queuecallerabandon']){_0x57e8b3[_0xfe3f('0xbf')]=_0xfe3f('0xd6');logger[_0xfe3f('0x54')](_0xfe3f('0xdf'),_0x4dfd02,util[_0xfe3f('0x4b')](_0x57e8b3,{'showHidden':![],'depth':null}));ami[_0xfe3f('0x52')](_0xfe3f('0xe0'),_0x57e8b3);}}else{this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd9')]+=this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]]['sumHoldTime'];}logger[_0xfe3f('0x85')](_0xfe3f('0xe1'),_0x4dfd02,_0x57e8b3[_0xfe3f('0x83')],_0x57e8b3[_0xfe3f('0x62')],_0x375fe7);if(_0x50a8bf&&_0x57e8b3[_0xfe3f('0x5d')]===_0xfe3f('0x5e')){_0x57e8b3['queuecallerexitreason']=_0xfe3f('0xa3');}this[_0xfe3f('0x41')][_0x4dfd02]=_0x57e8b3;this[_0xfe3f('0x50')](_0x57e8b3,'hangup');}}logger[_0xfe3f('0x54')](_0xfe3f('0xe2'),_0x4dfd02,util[_0xfe3f('0x4b')](this[_0xfe3f('0x12')][_0x4dfd02],{'showHidden':![],'depth':null}));ami['emit'](_0xfe3f('0xe3'),this[_0xfe3f('0x12')][_0x4dfd02]);if(_0x57e8b3[_0xfe3f('0x5d')]===_0xfe3f('0x5e')){return;}if(_0x57e8b3[_0xfe3f('0xa6')]||_0x57e8b3[_0xfe3f('0x21')]||_0x57e8b3[_0xfe3f('0xa2')]){delete this[_0xfe3f('0x12')][_0x4dfd02];delete this[_0xfe3f('0x41')][_0x4dfd02];if(this[_0xfe3f('0x19')][_0x4dfd02]){delete this[_0xfe3f('0x19')][_0x4dfd02];}}};VoiceQueueReport['prototype'][_0xfe3f('0xe4')]=function(_0x444dbe){try{if(this[_0xfe3f('0x82')](_0x444dbe)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][hangup]',_0x444dbe['uniqueid'],util[_0xfe3f('0x4b')](_0x444dbe,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x444dbe[_0xfe3f('0x5c')]]){return this['handleHangup'](_0x444dbe['uniqueid'],_0x444dbe[_0xfe3f('0xe5')],![]);}if(this[_0xfe3f('0x12')][_0x444dbe[_0xfe3f('0xb7')]]){if(_0x444dbe[_0xfe3f('0xe6')]==='21'){return;}return this[_0xfe3f('0xe7')](_0x444dbe[_0xfe3f('0xb7')],_0x444dbe['cause-txt'],!![]);}var _0x1c1ebe=Object['keys'](this[_0xfe3f('0x12')]);for(var _0x114b44=0x0;_0x114b44<_0x1c1ebe['length'];_0x114b44++){var _0x2a9937=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x1c1ebe[_0x114b44]]);if(_0x2a9937&&_0x2a9937[_0xfe3f('0xe8')]===_0x444dbe['uniqueid']){return this[_0xfe3f('0xe7')](_0x2a9937[_0xfe3f('0x5c')],_0x444dbe['cause-txt'],!![]);}}}}catch(_0xddc652){logger[_0xfe3f('0x4a')](_0xfe3f('0xe9'),_0x444dbe['uniqueid'],util[_0xfe3f('0x4b')](_0xddc652,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAttendedTransfer']=function(_0x52d33d){try{if(this[_0xfe3f('0x82')](_0x52d33d)){logger['debug'](_0xfe3f('0xea'),_0x52d33d[_0xfe3f('0x5c')],util['inspect'](_0x52d33d,{'showHidden':![],'depth':null}));var _0x11aa2b;var _0x51b252;var _0x5f2221;if(this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xeb')]]){_0x11aa2b=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xeb')]]);_0x11aa2b[_0xfe3f('0xb3')]=_0x52d33d[_0xfe3f('0xec')];_0x11aa2b[_0xfe3f('0xb5')]=_0x52d33d['secondtransfereruniqueid'];_0x11aa2b['queuecallerexitreason']='ATTENDEDTRANSFER';_0x11aa2b['transfer']=!![];_0x11aa2b['transfertype']=_0xfe3f('0xed');if(this['queueReports'][_0x52d33d[_0xfe3f('0xee')]]){_0x5f2221=this['queueReports'][_0x52d33d[_0xfe3f('0xee')]];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xee')]]=this[_0xfe3f('0x12')][_0x52d33d['transfereeuniqueid']];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xeb')]]=_0x5f2221;_0x51b252=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d['transfereeuniqueid']]);_0x51b252[_0xfe3f('0x42')]=!![];}logger['info'](_0xfe3f('0xef'),_0x52d33d[_0xfe3f('0x5c')],_0x11aa2b[_0xfe3f('0x83')],_0x11aa2b[_0xfe3f('0x62')],_0x11aa2b[_0xfe3f('0xb3')],_0x11aa2b[_0xfe3f('0xb5')]);}else if(this[_0xfe3f('0x12')][_0x52d33d['transfertargetuniqueid']]){_0x11aa2b=_['last'](this[_0xfe3f('0x12')][_0x52d33d['transfertargetuniqueid']]);_0x11aa2b['transferexten']=_0x52d33d[_0xfe3f('0xf0')];_0x11aa2b['transferuniqueid']=_0x52d33d[_0xfe3f('0xf1')];_0x11aa2b[_0xfe3f('0x5d')]=_0xfe3f('0x5e');_0x11aa2b['transfer']=!![];_0x11aa2b[_0xfe3f('0xb1')]='ATTENDED';if(this['queueReports'][_0x52d33d[_0xfe3f('0xf1')]]){_0x5f2221=this[_0xfe3f('0x12')][_0x52d33d['origtransfereruniqueid']];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf1')]]=this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf2')]];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf2')]]=_0x5f2221;_0x51b252=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf2')]]);_0x51b252[_0xfe3f('0x42')]=!![];}logger[_0xfe3f('0x85')](_0xfe3f('0xef'),_0x52d33d[_0xfe3f('0x5c')],_0x11aa2b[_0xfe3f('0x83')],_0x11aa2b['type'],_0x11aa2b[_0xfe3f('0xb3')],_0x11aa2b[_0xfe3f('0xb5')]);}else if(this['queueReports'][_0x52d33d[_0xfe3f('0xf1')]]){_0x11aa2b=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf1')]]);_0x11aa2b[_0xfe3f('0xb3')]=_0x52d33d[_0xfe3f('0xf0')];_0x11aa2b[_0xfe3f('0xb5')]=_0x52d33d['origtransfereruniqueid'];_0x11aa2b[_0xfe3f('0x5d')]='ATTENDEDTRANSFER';_0x11aa2b[_0xfe3f('0xa8')]=!![];_0x11aa2b['transfertype']=_0xfe3f('0xed');_0x11aa2b[_0xfe3f('0x42')]=!![];_0x11aa2b[_0xfe3f('0xe8')]=_0x52d33d['transfereeuniqueid'];}else if(this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xee')]]){_0x11aa2b=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xee')]]);_0x11aa2b[_0xfe3f('0xb3')]=_0x52d33d[_0xfe3f('0xec')];_0x11aa2b[_0xfe3f('0xb5')]=_0x52d33d[_0xfe3f('0xee')];_0x11aa2b['queuecallerexitreason']=_0xfe3f('0x5e');_0x11aa2b[_0xfe3f('0xa8')]=!![];_0x11aa2b[_0xfe3f('0xb1')]='ATTENDED';_0x11aa2b[_0xfe3f('0x42')]=!![];_0x11aa2b[_0xfe3f('0xe8')]=_0x52d33d['transfertargetuniqueid'];}}}catch(_0x417dda){logger[_0xfe3f('0x4a')](_0xfe3f('0xea'),_0x52d33d[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x417dda,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')]['syncBlindTransfer']=function(_0x390de0){try{if(this[_0xfe3f('0x82')](_0x390de0)){logger['debug'](_0xfe3f('0xf3'),_0x390de0[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x390de0,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x390de0[_0xfe3f('0xeb')]]){var _0x53af73=_[_0xfe3f('0x9d')](this['queueReports'][_0x390de0[_0xfe3f('0xeb')]]);_0x53af73[_0xfe3f('0x5d')]='BLINDTRANSFER';_0x53af73[_0xfe3f('0xa8')]=!![];_0x53af73[_0xfe3f('0xb1')]=_0xfe3f('0xf4');_0x53af73['transferexten']=_0x390de0[_0xfe3f('0xf5')];_0x53af73[_0xfe3f('0xb5')]=_0x390de0[_0xfe3f('0xeb')];logger[_0xfe3f('0x85')](_0xfe3f('0xf6'),_0x390de0[_0xfe3f('0x5c')],_0x53af73['queue'],_0x53af73['type'],_0x53af73['transferexten'],_0x53af73[_0xfe3f('0xb5')]);this[_0xfe3f('0xe4')]({'event':_0xfe3f('0xf7'),'uniqueid':_0x390de0[_0xfe3f('0xeb')],'context':_0x390de0[_0xfe3f('0xf8')],'channel':_0x390de0['transfererchannel']});}}}catch(_0x2a65a9){logger[_0xfe3f('0x4a')](_0xfe3f('0xf3'),_0x390de0[_0xfe3f('0x5c')],util['inspect'](_0x2a65a9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x2d')]=function(_0x1c7805){try{if(this[_0xfe3f('0x82')](_0x1c7805)){logger[_0xfe3f('0x54')](_0xfe3f('0xf9'),_0x1c7805[_0xfe3f('0x5c')],util['inspect'](_0x1c7805,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x1c7805[_0xfe3f('0x5c')]]){var _0x587470=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x1c7805['uniqueid']]);if(!_[_0xfe3f('0x44')](_0x587470[_0xfe3f('0x9e')])){_0x587470[_0xfe3f('0xfa')]=moment()['format'](_0xfe3f('0x8d'));logger[_0xfe3f('0x85')](_0xfe3f('0xfb'),_0x1c7805['uniqueid'],_0x587470['mohstarttime']);}}}}catch(_0x330151){logger[_0xfe3f('0x4a')](_0xfe3f('0xf9'),_0x1c7805[_0xfe3f('0x5c')],util['inspect'](_0x330151,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x2f')]=function(_0x48fa46){try{if(this[_0xfe3f('0x82')](_0x48fa46)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][musiconholdstop]',_0x48fa46[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x48fa46,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x48fa46[_0xfe3f('0x5c')]]){var _0x126173=_[_0xfe3f('0x9d')](this['queueReports'][_0x48fa46[_0xfe3f('0x5c')]]);if(!_[_0xfe3f('0x44')](_0x126173[_0xfe3f('0xfa')])){_0x126173[_0xfe3f('0xfc')]+=moment()['milliseconds'](0x0)['diff'](_0x126173[_0xfe3f('0xfa')],_0xfe3f('0xdb'));logger[_0xfe3f('0x85')](_0xfe3f('0xfd'),_0x48fa46['uniqueid'],_0x126173['mohtime']);delete _0x126173[_0xfe3f('0xfa')];}}}}catch(_0x56db42){logger[_0xfe3f('0x4a')](_0xfe3f('0xfe'),_0x48fa46[_0xfe3f('0x5c')],util['inspect'](_0x56db42,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xfe3f('0xff')]=function(_0x3c1300){try{if(this[_0xfe3f('0x82')](_0x3c1300)){logger['debug'](_0xfe3f('0x100'),_0x3c1300[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x3c1300,{'showHidden':![],'depth':null}));if(_0x3c1300[_0xfe3f('0x101')][_0xfe3f('0xad')]()===_0xfe3f('0x102')){_0x3c1300[_0xfe3f('0x103')]=_0x3c1300['appdata']&&_0x3c1300[_0xfe3f('0x104')]['startsWith'](_0xfe3f('0x105'))?_0x3c1300[_0xfe3f('0x104')]:(_0x3c1300['appdata']||_0x3c1300[_0xfe3f('0x103')])[_0xfe3f('0xad')]();if(_['startsWith'](_0x3c1300[_0xfe3f('0x103')][_0xfe3f('0xad')](),'cdr(')){logger[_0xfe3f('0x85')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x3c1300[_0xfe3f('0x5c')],_0x3c1300[_0xfe3f('0x101')],_0x3c1300['applicationdata']);if(_['isUndefined'](this['channels'][_0x3c1300[_0xfe3f('0x5c')]]))this['channels'][_0x3c1300[_0xfe3f('0x5c')]]={};var _0x4f8acb=_0x3c1300[_0xfe3f('0x103')][_0xfe3f('0x106')]('=');var _0x5131fa=_0x4f8acb[0x0][_0xfe3f('0xad')]()[_0xfe3f('0x107')](/cdr\((.*)\)/);if(_0x5131fa)this[_0xfe3f('0x41')][_0x3c1300['uniqueid']][_0x5131fa[0x1]]=_0x4f8acb[0x1];}}}}catch(_0x2dcdf9){logger[_0xfe3f('0x4a')](_0xfe3f('0x108'),_0x3c1300[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x2dcdf9,{'showHidden':![],'depth':null}));}};module[_0xfe3f('0x109')]=VoiceQueueReport;
\ No newline at end of file
+var _0x7e07=['loggedIn','sumHoldTime','total','type','unmanaged','abandoned','Trunk','active','callerid','Interval','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','isNotNull','isUndefined','queues','error','[voiceQueueReport][queues]','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','queue','countBy','callers','toNumber','loggedin','available','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','push','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][queuecallerleave]','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','last','queuecallerabandonAt','assigned','membername','queuecallerexit','queuecallerexitAt','reason','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','local/','linkedid','FORWARDTRANSFER','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','variable','value','queuestatus','TIMEOUT','lastevent','timeout','EXITWITHKEY','keys','[%s][voiceQueueReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','handleHangup','length','diff','seconds','sumDuration','sumBillable','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','cause-txt','transferid','syncAttendedTransfer','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','switch','secondtransfererexten','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','CDR(routeAlias)','cdr(','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','md5','ioredis','../../../config/environment','../model/queueReport','defaults','redis','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerleave','syncQueueCallerLeave','agentcomplete','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','syncMusicOnHoldStart','attendedtransfer','syncBlindTransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','clearZombieChannels','isNil','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','ATTENDEDTRANSFER','emitVoiceQueueSummary','inbound','strategy'];(function(_0x3cc651,_0x32f10e){var _0x372a5a=function(_0x4cebca){while(--_0x4cebca){_0x3cc651['push'](_0x3cc651['shift']());}};_0x372a5a(++_0x32f10e);}(_0x7e07,0xa0));var _0x77e0=function(_0x17e38c,_0x21ae4f){_0x17e38c=_0x17e38c-0x0;var _0x4d64df=_0x7e07[_0x17e38c];return _0x4d64df;};'use strict';var _=require(_0x77e0('0x0'));var moment=require(_0x77e0('0x1'));var util=require('util');var md5=require(_0x77e0('0x2'));var Redis=require(_0x77e0('0x3'));var config=require(_0x77e0('0x4'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0x77e0('0x5'));config['redis']=_[_0x77e0('0x6')](config[_0x77e0('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x77e0('0x8'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x77e0('0x9')][_0x77e0('0xa')]=function(_0x3e8434){this[_0x77e0('0xb')]=this['tail']?this[_0x77e0('0xb')][_0x77e0('0xc')](_0x3e8434):_0x3e8434();};function VoiceQueueReport(_0x3707c4){this[_0x77e0('0xd')]=new Sequence();this[_0x77e0('0xe')]={};this['agents']=_0x3707c4[_0x77e0('0xf')];this[_0x77e0('0x10')]=_0x3707c4[_0x77e0('0x11')];this[_0x77e0('0x12')]=_0x3707c4[_0x77e0('0x12')];this[_0x77e0('0x13')]=!![];this[_0x77e0('0x14')]=_0x3707c4['campaigns'];this[_0x77e0('0x15')]={};ami['on'](_0x77e0('0x16'),this[_0x77e0('0x17')][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x19'),this[_0x77e0('0x1a')][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x1b'),this[_0x77e0('0x1c')]['bind'](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x1d'),this[_0x77e0('0x1e')][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x1f'),this['syncAgentComplete'][_0x77e0('0x18')](this));ami['on']('agentconnect',this['syncAgentConnect'][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x20'),this[_0x77e0('0x21')][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x22'),this[_0x77e0('0x23')][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x24'),this[_0x77e0('0x25')][_0x77e0('0x18')](this));ami['on']('musiconholdstart',this[_0x77e0('0x26')][_0x77e0('0x18')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop'][_0x77e0('0x18')](this));ami['on'](_0x77e0('0x27'),this['syncAttendedTransfer'][_0x77e0('0x18')](this));ami['on']('blindtransfer',this[_0x77e0('0x28')][_0x77e0('0x18')](this));this[_0x77e0('0x29')]();this['loopQueueShow']();}function clearChannels(_0x40cf28){if(!_[_0x77e0('0x2a')](_0x40cf28)){for(var _0x382180 in _0x40cf28){if(_0x40cf28[_0x77e0('0x2b')](_0x382180)){delete _0x40cf28[_0x382180];}}}}function clearCampaigns(_0x75f309){if(!_[_0x77e0('0x2a')](_0x75f309)){for(var _0x24c2d8 in _0x75f309){if(_0x75f309['hasOwnProperty'](_0x24c2d8)){_0x75f309[_0x24c2d8][_0x77e0('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x3e9c4e){if(!_[_0x77e0('0x2a')](_0x3e9c4e)){for(var _0x5ae1a8 in _0x3e9c4e){if(_0x3e9c4e[_0x77e0('0x2b')](_0x5ae1a8)){_0x3e9c4e[_0x5ae1a8][_0x77e0('0x2c')]=0x0;_0x3e9c4e[_0x5ae1a8][_0x77e0('0x2d')]=0x0;_0x3e9c4e[_0x5ae1a8][_0x77e0('0x2e')]=0x0;_0x3e9c4e[_0x5ae1a8][_0x77e0('0x2f')]=0x0;_0x3e9c4e[_0x5ae1a8][_0x77e0('0x30')]=!![];}}}}function clearAgentBooked(_0x497043){if(!_[_0x77e0('0x2a')](_0x497043)){for(var _0x107bde in _0x497043){if(_0x497043[_0x77e0('0x2b')](_0x107bde)){_0x497043[_0x107bde]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0x77e0('0x31')]=function(){var _0x3f29a9=this;for(var _0x47fbe4 in this[_0x77e0('0x10')]){if(this[_0x77e0('0x10')][_0x77e0('0x2b')](_0x47fbe4)&&!this[_0x77e0('0x10')][_0x47fbe4]['switch']){this[_0x77e0('0xd')][_0x77e0('0xa')](function(){if(!_[_0x77e0('0x32')](_0x3f29a9[_0x77e0('0x10')][_0x47fbe4])){return ami[_0x77e0('0x33')]({'action':_0x77e0('0x34'),'channel':_0x3f29a9[_0x77e0('0x10')][_0x47fbe4]['channel']})[_0x77e0('0x35')](function(_0x22fb7f){if(_0x22fb7f[_0x77e0('0x36')]===_0x77e0('0x37')){setTimeout(function(){if(_0x3f29a9['channels'][_0x47fbe4]){delete _0x3f29a9[_0x77e0('0x10')][_0x47fbe4];logger['error'](_0x77e0('0x38'),_0x47fbe4,util[_0x77e0('0x39')](_0x22fb7f,{'showHidden':![],'depth':null}));}if(_0x3f29a9[_0x77e0('0xe')][_0x47fbe4]){delete _0x3f29a9[_0x77e0('0xe')][_0x47fbe4];logger['error'](_0x77e0('0x3a'),_0x47fbe4,util[_0x77e0('0x39')](_0x22fb7f,{'showHidden':![],'depth':null}));}if(_0x3f29a9[_0x77e0('0x15')][_0x47fbe4]){delete _0x3f29a9['variables'][_0x47fbe4];logger['error'](_0x77e0('0x3b'),_0x47fbe4,util[_0x77e0('0x39')](_0x22fb7f,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x25')]=function(){logger['error'](_0x77e0('0x3c'));clearChannels(this[_0x77e0('0x10')]);this[_0x77e0('0x3d')](this[_0x77e0('0xe')]);clearAgentBooked(this[_0x77e0('0xf')]);clearVoiceQueues(this[_0x77e0('0x12')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x77e0('0x3d')]=function(_0x40b6bb){var _0x5b217b=this;if(!_[_0x77e0('0x2a')](_0x40b6bb)){for(var _0x1f7517 in _0x40b6bb){if(_0x40b6bb['hasOwnProperty'](_0x1f7517)){_0x5b217b[_0x77e0('0x3e')](_0x40b6bb[_0x1f7517],_0x77e0('0x3f'));delete _0x40b6bb[_0x1f7517];}}}};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x40')]=function(_0x3ace43,_0x25f1b4,_0x3aabb9){io['to'](_0x3ace43)['emit'](_0x25f1b4,_0x3aabb9);};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x41')]=function(_0x4c4e27,_0x5b889a){logger[_0x77e0('0x42')](_0x77e0('0x43')+_0x5b889a+']\x20sending\x20voice_queue_channel:save\x20event:',_0x4c4e27[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x4c4e27,{'showHidden':![],'depth':null}));this['emit'](util[_0x77e0('0x45')](_0x77e0('0x46'),_0x4c4e27[_0x77e0('0x47')]),_0x77e0('0x48'),_0x4c4e27);io[_0x77e0('0x40')](_0x77e0('0x49'),_0x4c4e27);};VoiceQueueReport['prototype']['emitVoiceQueueChannelRemove']=function(_0x532f74,_0x5359ad){logger[_0x77e0('0x42')](_0x77e0('0x43')+_0x5359ad+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x532f74[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x532f74,{'showHidden':![],'depth':null}));if(_0x532f74['queuecallerexitreason']===_0x77e0('0x4a'))return;this[_0x77e0('0x40')](util['format'](_0x77e0('0x46'),_0x532f74[_0x77e0('0x47')]),'voice_queue_channel:remove',_0x532f74);io[_0x77e0('0x40')]('voice_queue_presence:remove',_0x532f74);};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x4b')]=function(_0x49d604,_0x2ad8ca){if(_0x49d604['type']===_0x77e0('0x4c')){var _0x58abac={'id':_0x49d604['id'],'name':_0x49d604['name'],'strategy':_0x49d604[_0x77e0('0x4d')],'answered':_0x49d604['answered'],'available':_0x49d604['available'],'loggedIn':_0x49d604[_0x77e0('0x4e')],'pTalking':_0x49d604[_0x77e0('0x2e')],'sumBillable':_0x49d604['sumBillable'],'sumDuration':_0x49d604['sumDuration'],'sumHoldTime':_0x49d604[_0x77e0('0x4f')]||0x0,'talking':_0x49d604[_0x77e0('0x2d')],'total':_0x49d604[_0x77e0('0x50')],'type':_0x49d604[_0x77e0('0x51')],'unmanaged':_0x49d604[_0x77e0('0x52')],'abandoned':_0x49d604[_0x77e0('0x53')],'waiting':_0x49d604[_0x77e0('0x2f')]};if(_0x49d604[_0x77e0('0x54')]){_0x58abac['Trunk']={'id':_0x49d604[_0x77e0('0x54')]['id'],'name':_0x49d604['Trunk'][_0x77e0('0x47')],'active':_0x49d604['Trunk'][_0x77e0('0x55')],'callerid':_0x49d604['Trunk'][_0x77e0('0x56')]};}if(_0x49d604[_0x77e0('0x57')]){_0x58abac[_0x77e0('0x57')]={'id':_0x49d604[_0x77e0('0x57')]['id'],'name':_0x49d604[_0x77e0('0x57')][_0x77e0('0x47')]};}var _0x268669=md5(JSON['stringify'](_0x58abac));if(_0x49d604[_0x77e0('0x2')]!==_0x268669){_0x49d604[_0x77e0('0x2')]=_0x268669;logger[_0x77e0('0x42')](_0x77e0('0x58')+_0x2ad8ca+_0x77e0('0x59'),util[_0x77e0('0x39')](_0x58abac,{'showHidden':![],'depth':null}));this[_0x77e0('0x40')](util['format'](_0x77e0('0x46'),_0x58abac[_0x77e0('0x47')]),'voice_queue:save',_0x58abac);}}};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x5a')]=function(_0x22ca49){return _0x22ca49!==null&&!_[_0x77e0('0x5b')](_0x22ca49);};VoiceQueueReport[_0x77e0('0x9')]['loopQueueShow']=function(){var _0x14eb10=this;setInterval(function(){_0x14eb10[_0x77e0('0x31')]();ami[_0x77e0('0x33')]({'action':_0x77e0('0x5c')})[_0x77e0('0x35')](function(_0x447a9e){logger[_0x77e0('0x5d')](_0x77e0('0x5e'),util[_0x77e0('0x39')](_0x447a9e,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x77e0('0x29')]=function(){var _0x2cdbfc=this;setInterval(function(){if(_0x2cdbfc['flagQueueSummary']){return ami[_0x77e0('0x33')]({'action':_0x77e0('0x16')})['then'](function(){_0x2cdbfc[_0x77e0('0x13')]=![];})[_0x77e0('0x35')](function(_0x22f118){logger[_0x77e0('0x5d')](_0x77e0('0x5f'),util[_0x77e0('0x39')](_0x22f118,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x77e0('0x17')]=function(_0x1871c8){try{if(this['isNotNull'](_0x1871c8)&&this[_0x77e0('0x5a')](_0x1871c8['queue'])){logger['debug'](_0x77e0('0x60'),util[_0x77e0('0x39')](_0x1871c8,{'showHidden':![],'depth':null}));if(this[_0x77e0('0x12')][_0x1871c8['queue']]){logger[_0x77e0('0x61')](_0x77e0('0x62'),_0x1871c8[_0x77e0('0x63')]);var _0x1a8071=_[_0x77e0('0x64')](this[_0x77e0('0x10')],_0x77e0('0x63'))[_0x1871c8['queue']]||0x0;var _0x345d84=_0x1a8071-_0x1871c8[_0x77e0('0x65')];if(this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]]['waiting']!==_[_0x77e0('0x66')](_0x1871c8[_0x77e0('0x65')])||this['voiceQueues'][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x4e')]!==_['toNumber'](_0x1871c8[_0x77e0('0x67')])||this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x68')]!==_[_0x77e0('0x66')](_0x1871c8[_0x77e0('0x68')])||this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x2d')]!==_0x345d84){this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x2f')]=_['toNumber'](_0x1871c8[_0x77e0('0x65')]);this['voiceQueues'][_0x1871c8[_0x77e0('0x63')]]['loggedIn']=_['toNumber'](_0x1871c8[_0x77e0('0x67')]);this['voiceQueues'][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x68')]=_[_0x77e0('0x66')](_0x1871c8[_0x77e0('0x68')]);this[_0x77e0('0x12')][_0x1871c8['queue']][_0x77e0('0x2d')]=_0x345d84>0x0?_0x345d84:0x0;this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x2d')]=this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x2d')]>_[_0x77e0('0x66')](_0x1871c8[_0x77e0('0x67')])?_[_0x77e0('0x66')](_0x1871c8['loggedin']):this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]][_0x77e0('0x2d')];this[_0x77e0('0x4b')](this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]],_0x77e0('0x16'));}logger[_0x77e0('0x42')](_0x77e0('0x69'),util[_0x77e0('0x39')](this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]],{'showHidden':![],'depth':null}));ami[_0x77e0('0x40')](_0x77e0('0x6a'),this[_0x77e0('0x12')][_0x1871c8[_0x77e0('0x63')]]);}}}catch(_0x154c20){logger[_0x77e0('0x5d')](_0x77e0('0x5f'),util['inspect'](_0x154c20,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x77e0('0x1a')]=function(_0x539239){logger[_0x77e0('0x42')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x77e0('0x39')](_0x539239,{'showHidden':![],'depth':null}));ami[_0x77e0('0x40')]('custom:queuesummarycomplete',{});this[_0x77e0('0x13')]=!![];};VoiceQueueReport[_0x77e0('0x9')]['syncQueueCallerJoin']=function(_0x21c208){try{if(this[_0x77e0('0x5a')](_0x21c208)){logger[_0x77e0('0x42')](_0x77e0('0x6b'),_0x21c208[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x21c208,{'showHidden':![],'depth':null}));if(_[_0x77e0('0x5b')](this[_0x77e0('0xe')][_0x21c208[_0x77e0('0x44')]]))this[_0x77e0('0xe')][_0x21c208[_0x77e0('0x44')]]=[];if(_[_0x77e0('0x5b')](this[_0x77e0('0x10')][_0x21c208[_0x77e0('0x44')]]))this[_0x77e0('0x10')][_0x21c208[_0x77e0('0x44')]]={};var _0x447ce9=new QueueReport();_0x447ce9[_0x77e0('0x47')]=_0x21c208[_0x77e0('0x63')];_0x447ce9[_0x77e0('0x51')]=this['voiceQueues'][_0x447ce9[_0x77e0('0x47')]]&&this[_0x77e0('0x12')][_0x447ce9[_0x77e0('0x47')]][_0x77e0('0x51')]?this[_0x77e0('0x12')][_0x447ce9[_0x77e0('0x47')]]['type']||_0x77e0('0x4c'):_0x77e0('0x4c');_0x447ce9[_0x77e0('0x63')]=_0x21c208['queue'];_0x447ce9[_0x77e0('0x6c')]=moment()[_0x77e0('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x447ce9[_0x77e0('0x6d')]=_0x21c208[_0x77e0('0x6d')];_0x447ce9[_0x77e0('0x6e')]=_0x21c208[_0x77e0('0x6e')];_0x447ce9[_0x77e0('0x44')]=_0x21c208['uniqueid'];_0x447ce9['routealias']=this['channels'][_0x21c208[_0x77e0('0x44')]][_0x77e0('0x6f')];logger['info'](_0x77e0('0x70'),_0x447ce9[_0x77e0('0x47')],_0x447ce9[_0x77e0('0x51')]);_[_0x77e0('0x71')](_0x447ce9,_[_0x77e0('0x72')](_0x21c208,_['keys'](_0x447ce9)));this[_0x77e0('0xe')][_0x21c208[_0x77e0('0x44')]][_0x77e0('0x73')](_0x447ce9);this[_0x77e0('0x10')][_0x21c208[_0x77e0('0x44')]]=_0x447ce9;this[_0x77e0('0x41')](_0x447ce9,'queuecallerjoin');}}catch(_0x51d61e){logger['error'](_0x77e0('0x6b'),_0x21c208[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x51d61e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x77e0('0x9')]['syncQueueCallerAbandon']=function(_0xf92af){try{if(this['isNotNull'](_0xf92af)){logger[_0x77e0('0x42')]('[%s][voiceQueueReport][queuecallerabandon]',_0xf92af[_0x77e0('0x44')],util[_0x77e0('0x39')](_0xf92af,{'showHidden':![],'depth':null}));if(this[_0x77e0('0xe')][_0xf92af['uniqueid']]){var _0x5db81e=_['last'](this[_0x77e0('0xe')][_0xf92af[_0x77e0('0x44')]]);_0x5db81e['queuecallercomplete']=![];_0x5db81e[_0x77e0('0x74')]=null;_0x5db81e[_0x77e0('0x75')]=_0xf92af[_0x77e0('0x75')];_0x5db81e[_0x77e0('0x76')]=_0xf92af[_0x77e0('0x76')];_0x5db81e[_0x77e0('0x77')]=!![];_0x5db81e['queuecallerabandonAt']=moment()[_0x77e0('0x45')](_0x77e0('0x78'));_0x5db81e[_0x77e0('0x79')]=_0x77e0('0x7a');_0x5db81e[_0x77e0('0x7b')]=null;logger[_0x77e0('0x61')](_0x77e0('0x7c'),_0x5db81e[_0x77e0('0x47')],_0x5db81e[_0x77e0('0x51')]);this[_0x77e0('0x10')][_0xf92af['uniqueid']]=_0x5db81e;this[_0x77e0('0x3e')](_0x5db81e,_0x77e0('0x77'));}}}catch(_0x1d888a){logger[_0x77e0('0x5d')](_0x77e0('0x7d'),_0xf92af[_0x77e0('0x44')],util['inspect'](_0x1d888a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x77e0('0x9')]['syncQueueCallerLeave']=function(_0x2e849d){try{if(this[_0x77e0('0x5a')](_0x2e849d)){logger[_0x77e0('0x42')]('[%s][voiceQueueReport][queuecallerleave]',_0x2e849d[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x2e849d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2e849d['uniqueid']]){var _0x3c5a5e=_['last'](this['queueReports'][_0x2e849d[_0x77e0('0x44')]]);_0x3c5a5e[_0x77e0('0x7e')]=moment()[_0x77e0('0x45')](_0x77e0('0x78'));_0x3c5a5e[_0x77e0('0x7f')]=_0x2e849d[_0x77e0('0x7f')];_0x3c5a5e[_0x77e0('0x80')]=_0x2e849d[_0x77e0('0x80')];logger[_0x77e0('0x61')](_0x77e0('0x81'),_0x3c5a5e[_0x77e0('0x47')],_0x3c5a5e[_0x77e0('0x51')],_0x2e849d[_0x77e0('0x7f')],_0x2e849d[_0x77e0('0x80')]);this[_0x77e0('0x10')][_0x2e849d[_0x77e0('0x44')]]=_0x3c5a5e;this[_0x77e0('0x41')](_0x3c5a5e,_0x77e0('0x1d'));}}}catch(_0x4c4d63){logger['error'](_0x77e0('0x82'),_0x2e849d[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x4c4d63,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x77e0('0x9')]['syncAgentConnect']=function(_0x2451a0){try{if(this[_0x77e0('0x5a')](_0x2451a0)){logger[_0x77e0('0x42')](_0x77e0('0x83'),_0x2451a0[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x2451a0,{'showHidden':![],'depth':null}));if(this[_0x77e0('0xe')][_0x2451a0[_0x77e0('0x44')]]){var _0x44a737=_['last'](this[_0x77e0('0xe')][_0x2451a0[_0x77e0('0x44')]]);_0x44a737[_0x77e0('0x84')]=!![];_0x44a737[_0x77e0('0x79')]=_0x77e0('0x85');logger[_0x77e0('0x61')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x44a737[_0x77e0('0x47')],_0x44a737[_0x77e0('0x51')]);}}}catch(_0x5c0534){logger['error'](_0x77e0('0x83'),_0x2451a0[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x5c0534,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x77e0('0x9')]['syncAgentComplete']=function(_0x36e15d){try{if(this[_0x77e0('0x5a')](_0x36e15d)){logger[_0x77e0('0x42')](_0x77e0('0x86'),_0x36e15d[_0x77e0('0x44')],util['inspect'](_0x36e15d,{'showHidden':![],'depth':null}));if(this[_0x77e0('0xe')][_0x36e15d[_0x77e0('0x44')]]){var _0x1b627b=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x36e15d[_0x77e0('0x44')]]);_0x1b627b['queuecallerabandon']=![];_0x1b627b[_0x77e0('0x88')]=null;_0x1b627b[_0x77e0('0x89')]=!![];_0x1b627b[_0x77e0('0x7b')]=_0x36e15d[_0x77e0('0x8a')];_0x1b627b['holdtime']=_0x36e15d[_0x77e0('0x75')];_0x1b627b['queuecallercomplete']=!![];_0x1b627b[_0x77e0('0x8b')]=![];_0x1b627b[_0x77e0('0x8c')]=null;if(!_0x1b627b['transfer']){if(_0x36e15d[_0x77e0('0x8d')]==_0x77e0('0x8e')){_0x1b627b[_0x77e0('0x79')]=_0x77e0('0x8f');logger[_0x77e0('0x61')](_0x77e0('0x90'),_0x1b627b[_0x77e0('0x47')],_0x1b627b['type']);}else{if(_[_0x77e0('0x91')](_0x36e15d[_0x77e0('0x92')]['toLowerCase'](),_0x77e0('0x93'))){if(this[_0x77e0('0xe')][_0x36e15d[_0x77e0('0x94')]]){var _0x3f9807=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x36e15d[_0x77e0('0x94')]]);_0x3f9807[_0x77e0('0x84')]=![];_0x3f9807[_0x77e0('0x8b')]=!![];_0x3f9807[_0x77e0('0x8c')]=moment(_0x1b627b[_0x77e0('0x6c')])['add'](_0x36e15d[_0x77e0('0x75')],'seconds')[_0x77e0('0x45')](_0x77e0('0x78'));_0x3f9807['queuecallerexitreason']=_0x77e0('0x95');_0x3f9807[_0x77e0('0x8e')]=!![];_0x3f9807[_0x77e0('0x96')]='FORWARD';_0x3f9807[_0x77e0('0x97')]=_0x36e15d[_0x77e0('0x98')];_0x3f9807[_0x77e0('0x99')]=_0x36e15d[_0x77e0('0x44')];logger[_0x77e0('0x61')](_0x77e0('0x9a'),_0x3f9807[_0x77e0('0x47')],_0x3f9807['type']);var _0x38fdbd=this[_0x77e0('0xe')][_0x36e15d[_0x77e0('0x94')]];this['queueReports'][_0x36e15d[_0x77e0('0x94')]]=this['queueReports'][_0x36e15d[_0x77e0('0x44')]];this[_0x77e0('0xe')][_0x36e15d[_0x77e0('0x44')]]=_0x38fdbd;}}else{_0x1b627b[_0x77e0('0x79')]=_0x77e0('0x9b')+_0x36e15d[_0x77e0('0x8d')][_0x77e0('0x9c')]();logger['info'](_0x77e0('0x9d'),_0x1b627b[_0x77e0('0x47')],_0x1b627b[_0x77e0('0x51')],_0x1b627b[_0x77e0('0x79')]);}}}this[_0x77e0('0x10')][_0x36e15d[_0x77e0('0x44')]]=_0x1b627b;this['emitVoiceQueueChannelRemove'](_0x1b627b,'agentcomplete');}}}catch(_0x9c3cef){logger[_0x77e0('0x5d')](_0x77e0('0x86'),_0x36e15d['uniqueid'],util[_0x77e0('0x39')](_0x9c3cef,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x21')]=function(_0xf63c6f){try{if(this[_0x77e0('0x5a')](_0xf63c6f)){logger['debug']('[%s][voiceQueueReport][varset]',_0xf63c6f['uniqueid'],util[_0x77e0('0x39')](_0xf63c6f,{'showHidden':![],'depth':null}));this['addVariable'](_0xf63c6f[_0x77e0('0x44')],_['keys'](_0xf63c6f[_0x77e0('0x9e')])[0x0],_0xf63c6f[_0x77e0('0x9f')]);if(this[_0x77e0('0xe')][_0xf63c6f[_0x77e0('0x44')]]){var _0x4b7183=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0xf63c6f[_0x77e0('0x44')]]);if(_0x4b7183){if(this[_0x77e0('0x5a')](_0xf63c6f['variable'])&&this[_0x77e0('0x5a')](_0xf63c6f[_0x77e0('0x9e')][_0x77e0('0xa0')])){switch(_0xf63c6f[_0x77e0('0x9f')]){case'CONTINUE':_0x4b7183[_0x77e0('0x8b')]=![];_0x4b7183[_0x77e0('0x8c')]=null;break;case _0x77e0('0xa1'):_0x4b7183[_0x77e0('0xa2')]=_0x77e0('0xa3');_0x4b7183[_0x77e0('0x8b')]=!![];_0x4b7183[_0x77e0('0x8c')]=moment()[_0x77e0('0x45')](_0x77e0('0x78'));_0x4b7183[_0x77e0('0x7e')]=moment()[_0x77e0('0x45')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x77e0('0x42')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0xf63c6f[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x4b7183,{'showHidden':![],'depth':null}));ami[_0x77e0('0x40')]('custom:timeout',_0x4b7183);break;default:_0x4b7183[_0x77e0('0x8b')]=!![];_0x4b7183[_0x77e0('0x8c')]=moment()[_0x77e0('0x45')](_0x77e0('0x78'));_0x4b7183[_0x77e0('0x7e')]=moment()[_0x77e0('0x45')](_0x77e0('0x78'));}_0x4b7183['queuecallerabandon']=![];_0x4b7183[_0x77e0('0x88')]=null;_0x4b7183['queuecallerexitreason']=_0xf63c6f[_0x77e0('0x9f')];this[_0x77e0('0x10')][_0xf63c6f['uniqueid']]=_0x4b7183;this[_0x77e0('0x3e')](_0x4b7183,_0x77e0('0x20'));}else if(this[_0x77e0('0x5a')](_0xf63c6f[_0x77e0('0x9e')])&&this['isNotNull'](_0xf63c6f[_0x77e0('0x9e')]['queueposition'])){if(!_0x4b7183[_0x77e0('0x77')]){_0x4b7183[_0x77e0('0x8b')]=!![];_0x4b7183['queuecallerexitAt']=moment()['format'](_0x77e0('0x78'));_0x4b7183['queuecallerexitreason']=_0x77e0('0xa4');_0x4b7183[_0x77e0('0x7e')]=moment()[_0x77e0('0x45')](_0x77e0('0x78'));this[_0x77e0('0x10')][_0xf63c6f[_0x77e0('0x44')]]=_0x4b7183;}}logger[_0x77e0('0x61')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0xf63c6f[_0x77e0('0x44')],_0x4b7183['name'],_0x4b7183[_0x77e0('0x51')],_[_0x77e0('0xa5')](_0xf63c6f[_0x77e0('0x9e')])[0x0],_0xf63c6f[_0x77e0('0x9f')]);_0x4b7183[_0x77e0('0x15')]=this[_0x77e0('0x15')][_0xf63c6f[_0x77e0('0x44')]];}}}}catch(_0x3cea78){logger[_0x77e0('0x5d')](_0x77e0('0xa6'),_0xf63c6f['uniqueid'],util[_0x77e0('0x39')](_0x3cea78,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x77e0('0xa7')]=function(_0x2b40a9,_0x1747e2,_0x1e3489){var _0x4dd22d=[_0x77e0('0xa8'),_0x77e0('0xa9'),_0x77e0('0xaa'),_0x77e0('0xab'),'rtpaudioqosloss',_0x77e0('0xac'),_0x77e0('0xad'),_0x77e0('0xae'),_0x77e0('0xaf'),_0x77e0('0xb0'),_0x77e0('0xb1'),_0x77e0('0xb2'),_0x77e0('0xb3'),_0x77e0('0xb4'),'memberinterface',_0x77e0('0xb5'),_0x77e0('0x8a'),_0x77e0('0xb6'),_0x77e0('0xb7')];if(!_['isNil'](_0x1747e2)&&!_[_0x77e0('0xb8')](_0x4dd22d,_0x1747e2)){if(_['isUndefined'](this[_0x77e0('0x15')][_0x2b40a9])){this[_0x77e0('0x15')][_0x2b40a9]={};}this[_0x77e0('0x15')][_0x2b40a9][_0x1747e2]=_0x1e3489;}};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0xb9')]=function(_0x78e332,_0x44b008,_0x2a5e23){var _0x26cae5={};for(var _0x507fca=0x0;_0x507fca<this[_0x77e0('0xe')][_0x78e332][_0x77e0('0xba')];_0x507fca+=0x1){_0x26cae5=this['queueReports'][_0x78e332][_0x507fca];if(this[_0x77e0('0x12')][_0x26cae5['queue']]){if(_0x26cae5[_0x77e0('0x8b')]&&_0x26cae5[_0x77e0('0x8e')]!=!![]){this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]][_0x77e0('0x52')]+=0x1;}if(_0x26cae5[_0x77e0('0x77')]){this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]][_0x77e0('0x53')]+=0x1;}this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]][_0x77e0('0x4f')]+=moment(_0x26cae5['queuecallerleaveAt'])[_0x77e0('0xbb')](_0x26cae5[_0x77e0('0x6c')],_0x77e0('0xbc'))||0x0;if(_0x507fca===this[_0x77e0('0xe')][_0x78e332][_0x77e0('0xba')]-0x1){this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]][_0x77e0('0xbd')]+=moment()['milliseconds'](0x0)[_0x77e0('0xbb')](_0x26cae5[_0x77e0('0x6c')],'seconds');this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]]['total']+=0x1;if(_0x26cae5[_0x77e0('0x84')]){this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]]['answered']+=0x1;this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]][_0x77e0('0xbe')]+=moment()[_0x77e0('0xbf')](0x0)[_0x77e0('0xbb')](_0x26cae5[_0x77e0('0x7e')],_0x77e0('0xbc'));_0x26cae5[_0x77e0('0x74')]=moment()[_0x77e0('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x26cae5[_0x77e0('0x8b')]=![];_0x26cae5[_0x77e0('0x8c')]=null;}if(_0x26cae5[_0x77e0('0x8b')]&&_0x26cae5[_0x77e0('0x8e')]!=!![]){_0x26cae5[_0x77e0('0xa2')]=_0x77e0('0x52');logger[_0x77e0('0x42')](_0x77e0('0xc0'),_0x78e332,util['inspect'](_0x26cae5,{'showHidden':![],'depth':null}));ami[_0x77e0('0x40')](_0x77e0('0xc1'),_0x26cae5);}if(_0x26cae5[_0x77e0('0x77')]){_0x26cae5['lastevent']='abandoned';logger[_0x77e0('0x42')](_0x77e0('0xc2'),_0x78e332,util['inspect'](_0x26cae5,{'showHidden':![],'depth':null}));ami[_0x77e0('0x40')](_0x77e0('0xc3'),_0x26cae5);}}else{this['voiceQueues'][_0x26cae5['queue']]['sumDuration']+=this[_0x77e0('0x12')][_0x26cae5[_0x77e0('0x63')]][_0x77e0('0x4f')];}logger[_0x77e0('0x61')](_0x77e0('0xc4'),_0x78e332,_0x26cae5[_0x77e0('0x47')],_0x26cae5[_0x77e0('0x51')],_0x44b008);if(_0x2a5e23&&_0x26cae5[_0x77e0('0x79')]===_0x77e0('0x4a')){_0x26cae5[_0x77e0('0x79')]=_0x77e0('0x85');}this['channels'][_0x78e332]=_0x26cae5;this[_0x77e0('0x3e')](_0x26cae5,'hangup');this[_0x77e0('0x4b')](this[_0x77e0('0x12')][_0x26cae5['queue']],_0x77e0('0x22'));}}logger[_0x77e0('0x42')](_0x77e0('0xc5'),_0x78e332,util[_0x77e0('0x39')](this['queueReports'][_0x78e332],{'showHidden':![],'depth':null}));ami[_0x77e0('0x40')](_0x77e0('0xc6'),this[_0x77e0('0xe')][_0x78e332]);if(_0x26cae5[_0x77e0('0x79')]==='ATTENDEDTRANSFER')return;delete this[_0x77e0('0xe')][_0x78e332];delete this['channels'][_0x78e332];if(this['variables'][_0x78e332]){delete this['variables'][_0x78e332];}};VoiceQueueReport[_0x77e0('0x9')]['syncHangup']=function(_0x2e823e){try{if(this[_0x77e0('0x5a')](_0x2e823e)){logger[_0x77e0('0x42')](_0x77e0('0xc7'),_0x2e823e[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x2e823e,{'showHidden':![],'depth':null}));if(this[_0x77e0('0xe')][_0x2e823e[_0x77e0('0x44')]]){return this[_0x77e0('0xb9')](_0x2e823e[_0x77e0('0x44')],_0x2e823e[_0x77e0('0xc8')]);}if(this[_0x77e0('0xe')][_0x2e823e[_0x77e0('0x94')]]){if(_0x2e823e['cause']==='21'){return;}return this['handleHangup'](_0x2e823e['linkedid'],_0x2e823e[_0x77e0('0xc8')],!![]);}var _0xfe3197=Object[_0x77e0('0xa5')](this[_0x77e0('0xe')]);for(var _0x264e30=0x0;_0x264e30<_0xfe3197[_0x77e0('0xba')];_0x264e30++){var _0x107ccb=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0xfe3197[_0x264e30]]);if(_0x107ccb&&_0x107ccb[_0x77e0('0xc9')]===_0x2e823e[_0x77e0('0x44')]){return this[_0x77e0('0xb9')](_0x107ccb['uniqueid'],_0x2e823e[_0x77e0('0xc8')],!![]);}}}}catch(_0x3210b7){logger['error'](_0x77e0('0xc7'),_0x2e823e[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x3210b7,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x77e0('0xca')]=function(_0x5ba07f){try{if(this[_0x77e0('0x5a')](_0x5ba07f)){logger[_0x77e0('0x42')](_0x77e0('0xcb'),_0x5ba07f[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x5ba07f,{'showHidden':![],'depth':null}));var _0x6a2adc;var _0x322063;var _0xe3f846;if(this[_0x77e0('0xe')][_0x5ba07f['transfereeuniqueid']]){_0x6a2adc=_['last'](this['queueReports'][_0x5ba07f[_0x77e0('0xcc')]]);_0x6a2adc[_0x77e0('0x97')]=_0x5ba07f['secondtransfererexten'];_0x6a2adc['transferuniqueid']=_0x5ba07f[_0x77e0('0xcd')];_0x6a2adc[_0x77e0('0x79')]=_0x77e0('0x4a');_0x6a2adc[_0x77e0('0x8e')]=!![];_0x6a2adc[_0x77e0('0x96')]=_0x77e0('0xce');if(this['queueReports'][_0x5ba07f[_0x77e0('0xcd')]]){_0xe3f846=this['queueReports'][_0x5ba07f[_0x77e0('0xcd')]];this['queueReports'][_0x5ba07f[_0x77e0('0xcd')]]=this['queueReports'][_0x5ba07f[_0x77e0('0xcc')]];this['queueReports'][_0x5ba07f[_0x77e0('0xcc')]]=_0xe3f846;_0x322063=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xcc')]]);_0x322063['switch']=!![];}logger[_0x77e0('0x61')](_0x77e0('0xcf'),_0x5ba07f['uniqueid'],_0x6a2adc[_0x77e0('0x47')],_0x6a2adc[_0x77e0('0x51')],_0x6a2adc[_0x77e0('0x97')],_0x6a2adc[_0x77e0('0x99')]);}else if(this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xd0')]]){_0x6a2adc=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x5ba07f['transfertargetuniqueid']]);_0x6a2adc['transferexten']=_0x5ba07f[_0x77e0('0xd1')];_0x6a2adc[_0x77e0('0x99')]=_0x5ba07f[_0x77e0('0xd2')];_0x6a2adc[_0x77e0('0x79')]='ATTENDEDTRANSFER';_0x6a2adc['transfer']=!![];_0x6a2adc[_0x77e0('0x96')]=_0x77e0('0xce');if(this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xd2')]]){_0xe3f846=this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xd2')]];this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xd2')]]=this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xd0')]];this['queueReports'][_0x5ba07f[_0x77e0('0xd0')]]=_0xe3f846;_0x322063=_[_0x77e0('0x87')](this['queueReports'][_0x5ba07f['transfertargetuniqueid']]);_0x322063[_0x77e0('0xd3')]=!![];}logger[_0x77e0('0x61')](_0x77e0('0xcf'),_0x5ba07f[_0x77e0('0x44')],_0x6a2adc['name'],_0x6a2adc['type'],_0x6a2adc['transferexten'],_0x6a2adc[_0x77e0('0x99')]);}else if(this['queueReports'][_0x5ba07f[_0x77e0('0xd2')]]){_0x6a2adc=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xd2')]]);_0x6a2adc[_0x77e0('0x97')]=_0x5ba07f[_0x77e0('0xd1')];_0x6a2adc[_0x77e0('0x99')]=_0x5ba07f[_0x77e0('0xd2')];_0x6a2adc[_0x77e0('0x79')]=_0x77e0('0x4a');_0x6a2adc[_0x77e0('0x8e')]=!![];_0x6a2adc['transfertype']=_0x77e0('0xce');_0x6a2adc[_0x77e0('0xd3')]=!![];_0x6a2adc[_0x77e0('0xc9')]=_0x5ba07f[_0x77e0('0xcc')];}else if(this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xcd')]]){_0x6a2adc=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x5ba07f[_0x77e0('0xcd')]]);_0x6a2adc[_0x77e0('0x97')]=_0x5ba07f[_0x77e0('0xd4')];_0x6a2adc['transferuniqueid']=_0x5ba07f[_0x77e0('0xcd')];_0x6a2adc['queuecallerexitreason']=_0x77e0('0x4a');_0x6a2adc['transfer']=!![];_0x6a2adc['transfertype']=_0x77e0('0xce');_0x6a2adc[_0x77e0('0xd3')]=!![];_0x6a2adc['transferid']=_0x5ba07f['transfertargetuniqueid'];}}}catch(_0x207bdf){logger[_0x77e0('0x5d')](_0x77e0('0xcb'),_0x5ba07f[_0x77e0('0x44')],util['inspect'](_0x207bdf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x28')]=function(_0x9cdde4){try{if(this[_0x77e0('0x5a')](_0x9cdde4)){logger[_0x77e0('0x42')](_0x77e0('0xd5'),_0x9cdde4[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x9cdde4,{'showHidden':![],'depth':null}));if(this[_0x77e0('0xe')][_0x9cdde4[_0x77e0('0xcc')]]){var _0x1f9813=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x9cdde4['transfereeuniqueid']]);_0x1f9813['queuecallerexitreason']=_0x77e0('0xd6');_0x1f9813[_0x77e0('0x8e')]=!![];_0x1f9813[_0x77e0('0x96')]=_0x77e0('0xd7');_0x1f9813[_0x77e0('0x97')]=_0x9cdde4['extension'];_0x1f9813[_0x77e0('0x99')]=_0x9cdde4[_0x77e0('0xcc')];logger['info'](_0x77e0('0xd8'),_0x9cdde4[_0x77e0('0x44')],_0x1f9813[_0x77e0('0x47')],_0x1f9813[_0x77e0('0x51')],_0x1f9813[_0x77e0('0x97')],_0x1f9813['transferuniqueid']);this[_0x77e0('0x23')]({'event':_0x77e0('0xd9'),'uniqueid':_0x9cdde4[_0x77e0('0xcc')],'context':_0x9cdde4['context'],'channel':_0x9cdde4[_0x77e0('0xda')]});}}}catch(_0x42969d){logger[_0x77e0('0x5d')](_0x77e0('0xd5'),_0x9cdde4[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x42969d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x77e0('0x9')][_0x77e0('0x26')]=function(_0x4008c9){try{if(this['isNotNull'](_0x4008c9)){logger['debug'](_0x77e0('0xdb'),_0x4008c9[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x4008c9,{'showHidden':![],'depth':null}));if(this[_0x77e0('0xe')][_0x4008c9['uniqueid']]){var _0x35aae7=_[_0x77e0('0x87')](this[_0x77e0('0xe')][_0x4008c9['uniqueid']]);if(!_['isNil'](_0x35aae7[_0x77e0('0x7e')])){_0x35aae7[_0x77e0('0xdc')]=moment()[_0x77e0('0x45')](_0x77e0('0x78'));logger['info'](_0x77e0('0xdd'),_0x4008c9['uniqueid'],_0x35aae7['mohstarttime']);}}}}catch(_0x53b18f){logger[_0x77e0('0x5d')](_0x77e0('0xdb'),_0x4008c9[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x53b18f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x77e0('0xde')]=function(_0x1a1a15){try{if(this['isNotNull'](_0x1a1a15)){logger[_0x77e0('0x42')](_0x77e0('0xdf'),_0x1a1a15[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x1a1a15,{'showHidden':![],'depth':null}));if(this[_0x77e0('0xe')][_0x1a1a15[_0x77e0('0x44')]]){var _0x1475c4=_['last'](this[_0x77e0('0xe')][_0x1a1a15[_0x77e0('0x44')]]);if(!_[_0x77e0('0x32')](_0x1475c4[_0x77e0('0xdc')])){_0x1475c4[_0x77e0('0xe0')]+=moment()[_0x77e0('0xbf')](0x0)['diff'](_0x1475c4[_0x77e0('0xdc')],_0x77e0('0xbc'));logger[_0x77e0('0x61')](_0x77e0('0xe1'),_0x1a1a15[_0x77e0('0x44')],_0x1475c4[_0x77e0('0xe0')]);delete _0x1475c4[_0x77e0('0xdc')];}}}}catch(_0x3fac29){logger['error'](_0x77e0('0xdf'),_0x1a1a15[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x3fac29,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x77e0('0xe2')]=function(_0x3a8a0e){try{if(this[_0x77e0('0x5a')](_0x3a8a0e)){logger[_0x77e0('0x42')](_0x77e0('0xe3'),_0x3a8a0e[_0x77e0('0x44')],util[_0x77e0('0x39')](_0x3a8a0e,{'showHidden':![],'depth':null}));if(_0x3a8a0e[_0x77e0('0xe4')][_0x77e0('0xe5')]()===_0x77e0('0xe6')){_0x3a8a0e[_0x77e0('0xe7')]=_0x3a8a0e[_0x77e0('0xe8')]&&_0x3a8a0e[_0x77e0('0xe8')][_0x77e0('0x91')](_0x77e0('0xe9'))?_0x3a8a0e[_0x77e0('0xe8')]:(_0x3a8a0e['appdata']||_0x3a8a0e['applicationdata'])[_0x77e0('0xe5')]();if(_['startsWith'](_0x3a8a0e[_0x77e0('0xe7')][_0x77e0('0xe5')](),_0x77e0('0xea'))){logger[_0x77e0('0x61')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x3a8a0e[_0x77e0('0x44')],_0x3a8a0e[_0x77e0('0xe4')],_0x3a8a0e[_0x77e0('0xe7')]);if(_[_0x77e0('0x5b')](this[_0x77e0('0x10')][_0x3a8a0e[_0x77e0('0x44')]]))this[_0x77e0('0x10')][_0x3a8a0e[_0x77e0('0x44')]]={};var _0x447cc5=_0x3a8a0e[_0x77e0('0xe7')]['split']('=');var _0x1a138d=_0x447cc5[0x0]['toLowerCase']()[_0x77e0('0xeb')](/cdr\((.*)\)/);if(_0x1a138d)this[_0x77e0('0x10')][_0x3a8a0e['uniqueid']][_0x1a138d[0x1]]=_0x447cc5[0x1];}}}}catch(_0xfecf3a){logger[_0x77e0('0x5d')](_0x77e0('0xec'),_0x3a8a0e[_0x77e0('0x44')],util[_0x77e0('0x39')](_0xfecf3a,{'showHidden':![],'depth':null}));}};module[_0x77e0('0xed')]=VoiceQueueReport;
\ No newline at end of file
index 5ffa837..3c60af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce69=['createHistory','campaign','queue','Request','CreateReportAgentPreview'];(function(_0x3727ae,_0x165f88){var _0x1c3f01=function(_0x5cd5a5){while(--_0x5cd5a5){_0x3727ae['push'](_0x3727ae['shift']());}};_0x1c3f01(++_0x165f88);}(_0xce69,0x122));var _0x9ce6=function(_0x34df4a,_0x209d10){_0x34df4a=_0x34df4a-0x0;var _0x145c69=_0xce69[_0x34df4a];return _0x145c69;};'use strict';var client=require('../client');exports[_0x9ce6('0x0')]=function(_0x2b7a4a){return function(){_0x2b7a4a[_0x9ce6('0x1')]=_0x2b7a4a[_0x9ce6('0x2')];return client[_0x9ce6('0x3')](_0x9ce6('0x4'),{'body':_0x2b7a4a,'log':_0x9ce6('0x4')});};};
\ No newline at end of file
+var _0x1ded=['createHistory','campaign','queue','Request','CreateReportAgentPreview','../client'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x1ded,0x185));var _0xd1de=function(_0x25a8c2,_0x1e94c0){_0x25a8c2=_0x25a8c2-0x0;var _0x339ee2=_0x1ded[_0x25a8c2];return _0x339ee2;};'use strict';var client=require(_0xd1de('0x0'));exports[_0xd1de('0x1')]=function(_0xc926bf){return function(){_0xc926bf[_0xd1de('0x2')]=_0xc926bf[_0xd1de('0x3')];return client[_0xd1de('0x4')](_0xd1de('0x5'),{'body':_0xc926bf,'log':_0xd1de('0x5')});};};
\ No newline at end of file
index 2ab7706..d02fa1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd827=['Request','CreateAttachment','../client'];(function(_0x2b342c,_0x3ebd85){var _0x5d9692=function(_0x46624b){while(--_0x46624b){_0x2b342c['push'](_0x2b342c['shift']());}};_0x5d9692(++_0x3ebd85);}(_0xd827,0x1d6));var _0x7d82=function(_0x4d7a61,_0x3fb6e6){_0x4d7a61=_0x4d7a61-0x0;var _0x186f73=_0xd827[_0x4d7a61];return _0x186f73;};'use strict';var client=require(_0x7d82('0x0'));exports['create']=function(_0x10825f){return client[_0x7d82('0x1')]('CreateAttachment',{'body':_0x10825f,'log':_0x7d82('0x2')});};
\ No newline at end of file
+var _0xdae9=['create','CreateAttachment'];(function(_0x2abbe5,_0x42d977){var _0xf50047=function(_0x5ecf5a){while(--_0x5ecf5a){_0x2abbe5['push'](_0x2abbe5['shift']());}};_0xf50047(++_0x42d977);}(_0xdae9,0x182));var _0x9dae=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xdae9[_0x397e5f];return _0x5302b8;};'use strict';var client=require('../client');exports[_0x9dae('0x0')]=function(_0x303512){return client['Request'](_0x9dae('0x1'),{'body':_0x303512,'log':_0x9dae('0x1')});};
\ No newline at end of file
index 1f0f5e9..33f8ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x607cf1,_0x3ca1af){var _0x56fdbe=function(_0x3155a6){while(--_0x3155a6){_0x607cf1['push'](_0x607cf1['shift']());}};_0x56fdbe(++_0x3ca1af);}(_0x1261,0x144));var _0x1126=function(_0x244f5d,_0x3c98c6){_0x244f5d=_0x244f5d-0x0;var _0x1a3886=_0x1261[_0x244f5d];return _0x1a3886;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x124778,_0x12f9b6){var _0x50bb7b=function(_0x112aff){while(--_0x112aff){_0x124778['push'](_0x124778['shift']());}};_0x50bb7b(++_0x12f9b6);}(_0x1261,0x144));var _0x1126=function(_0xea2f6,_0xae7361){_0xea2f6=_0xea2f6-0x0;var _0x4b113c=_0x1261[_0xea2f6];return _0x4b113c;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index dacdfa5..da57d86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ecb=['Request','CreateCmContact','GetCmContact','../client'];(function(_0x3bd778,_0x4c8d9e){var _0x579664=function(_0x2d5040){while(--_0x2d5040){_0x3bd778['push'](_0x3bd778['shift']());}};_0x579664(++_0x4c8d9e);}(_0x8ecb,0x6b));var _0xb8ec=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x8ecb[_0x3bf83f];return _0x22c4a9;};'use strict';var client=require(_0xb8ec('0x0'));exports['createContact']=function(_0x43a565){return function(){return client[_0xb8ec('0x1')](_0xb8ec('0x2'),{'body':_0x43a565,'log':_0xb8ec('0x2')});};};exports['getContacts']=function(_0x51fefc){return function(){return client[_0xb8ec('0x1')](_0xb8ec('0x3'),{'options':_0x51fefc,'log':_0xb8ec('0x3')});};};
\ No newline at end of file
+var _0xf96c=['createContact','CreateCmContact','getContacts','Request','GetCmContact'];(function(_0xdae459,_0x58de0e){var _0x249b5b=function(_0x208228){while(--_0x208228){_0xdae459['push'](_0xdae459['shift']());}};_0x249b5b(++_0x58de0e);}(_0xf96c,0x109));var _0xcf96=function(_0x1cb665,_0x4169f3){_0x1cb665=_0x1cb665-0x0;var _0x16f1d4=_0xf96c[_0x1cb665];return _0x16f1d4;};'use strict';var client=require('../client');exports[_0xcf96('0x0')]=function(_0x2cb307){return function(){return client['Request'](_0xcf96('0x1'),{'body':_0x2cb307,'log':'CreateCmContact'});};};exports[_0xcf96('0x2')]=function(_0xa36975){return function(){return client[_0xcf96('0x3')](_0xcf96('0x4'),{'options':_0xa36975,'log':_0xcf96('0x4')});};};
\ No newline at end of file
index 2689293..6301463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7012=['resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','Request','GetCmHopper','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','priority','DESC','GetContactDialer','getContactDialerIvr','CmContact','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','Contact','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7012,0xdb));var _0x2701=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x7012[_0x5cb1af];return _0x8d7940;};'use strict';var client=require(_0x2701('0x0'));var moment=require(_0x2701('0x1'));exports['getContacts']=function(_0x36f0ed,_0xa1feba){return function(){return client[_0x2701('0x2')](_0x2701('0x3'),{'options':{'where':{'VoiceQueueId':_0x36f0ed},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0xa1feba,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x1308d0,_0x5070c9,_0x5a74a9){return function(){return client[_0x2701('0x2')](_0x2701('0x4'),{'body':_0x1308d0,'options':{'where':{'VoiceQueueId':_0x5070c9,'scheduledat':{'$lte':moment()[_0x2701('0x5')](_0x2701('0x6'))}},'limit':_0x5a74a9},'log':_0x2701('0x4')});};};exports[_0x2701('0x7')]=function(_0x383abf){return function(){return client['Request'](_0x2701('0x4'),{'body':_0x383abf,'options':{'where':{'ContactId':_0x383abf[_0x2701('0x8')],'ListId':_0x383abf[_0x2701('0x9')],'VoiceQueueId':_0x383abf[_0x2701('0xa')],'CampaignId':_0x383abf[_0x2701('0xb')]}},'log':_0x2701('0x7')});};};exports[_0x2701('0xc')]=function(_0x2fe0ca,_0x35f628,_0x55c229){return function(){return client[_0x2701('0x2')](_0x2701('0xd'),{'options':{'where':{'VoiceQueueId':_0x2fe0ca,'ListId':_0x35f628,'ContactId':_0x55c229}},'log':_0x2701('0xd')});};};exports['getContactDialer']=function(_0x294a7b,_0x2d7d64,_0xa6ff69,_0x11a183){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x294a7b,'active':![],'scheduledat':{'$lte':moment()[_0x2701('0x5')](_0x2701('0x6'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x2d7d64}}]},'order':[[_0x2701('0xe'),_0x2701('0xf')],['scheduledat',_0x11a183],['id','ASC']],'raw':!![],'limit':_0xa6ff69},'log':_0x2701('0x10')});};};exports[_0x2701('0x11')]=function(_0x1db7a0,_0x5f71f,_0x3828ef){return function(){return client['Request'](_0x2701('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x1db7a0,'active':![],'scheduledat':{'$lte':moment()[_0x2701('0x5')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x2701('0x12'),'as':'Contact'}],'order':[[_0x2701('0xe'),_0x2701('0xf')],[_0x2701('0x13'),_0x3828ef],['id',_0x2701('0x14')]],'raw':!![],'limit':_0x5f71f},'log':_0x2701('0x15')});};};exports[_0x2701('0x16')]=function(_0x26e412,_0x425d67){return function(){_0x26e412[_0x2701('0x17')]=_0x26e412[_0x2701('0x18')];return client['Request'](_0x2701('0x19'),{'body':_0x26e412,'options':{'where':{'ContactId':_0x26e412[_0x2701('0x8')],'ListId':_0x26e412[_0x2701('0x9')],'VoiceQueueId':_0x26e412[_0x2701('0xa')],'CampaignId':_0x26e412[_0x2701('0xb')],'active':_0x425d67?undefined:!![]}},'log':_0x2701('0x19')});};};exports[_0x2701('0x1a')]=function(_0x156cf2){return function(){return client[_0x2701('0x2')](_0x2701('0x1b'),{'options':{'where':{'VoiceQueueId':_0x156cf2['id']?_0x156cf2['id']||null:null}},'log':_0x2701('0x1a')});};};exports[_0x2701('0x1c')]=function(_0x10a925){return function(){return client[_0x2701('0x2')]('GetCmHopperPreview',{'options':{'where':{'id':_0x10a925},'include':[{'model':'CmContact','as':_0x2701('0x1d')},{'model':'User','as':_0x2701('0x1e'),'attributes':['id',_0x2701('0x1f')]},{'model':_0x2701('0x20'),'as':_0x2701('0x21'),'attributes':['id',_0x2701('0x1f')]}],'raw':!![]},'log':_0x2701('0x22')});};};exports[_0x2701('0x23')]=function(_0xe31a06,_0x36df82,_0x44f173){return function(){return client['Request']('UpdateCmHopper',{'body':_0xe31a06,'options':{'where':{'id':_0x36df82},'limit':_0x44f173},'log':_0x2701('0x4')});};};exports[_0x2701('0x24')]=function(_0x138c77,_0xa55c7f){return function(){return client[_0x2701('0x2')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x138c77,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2701('0x5')](_0x2701('0x6'))},'UserId':{'$in':_0xa55c7f}},'order':[[_0x2701('0xe'),_0x2701('0xf')],[_0x2701('0x13'),_0x2701('0xf')],['id',_0x2701('0x14')]],'include':[{'model':'CmContact','as':'Contact'},{'model':'User','as':_0x2701('0x1e'),'attributes':['id','name',_0x2701('0x25')]}],'group':_0x2701('0x26'),'raw':!![]},'log':_0x2701('0x10')});};};exports[_0x2701('0x27')]=function(_0x28951d,_0x21f1ec){return client[_0x2701('0x2')](_0x2701('0x28'),{'body':_0x28951d,'options':_0x21f1ec||{},'log':_0x2701('0x28')});};exports[_0x2701('0x29')]=function(_0x175882,_0x2c235e,_0x596abb){return function(){return client[_0x2701('0x2')](_0x2701('0x2a'),{'body':{'where':{'voiceQueueIds':_0x175882,'interval':_0x2c235e,'availableAgentsIds':_0x596abb}},'log':_0x2701('0x29')});};};
\ No newline at end of file
+var _0xbd7d=['getContactRecallMe','GetContactRecallMe','voicePause','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','moment','getContacts','Request','GetCmHopper','CmContact','Contact','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','getContactDialer','GetContactDialer','priority','DESC','scheduledat','getContactDialerIvr','ASC','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','countReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact'];(function(_0x32604d,_0x1be357){var _0x54b579=function(_0x3de1ce){while(--_0x3de1ce){_0x32604d['push'](_0x32604d['shift']());}};_0x54b579(++_0x1be357);}(_0xbd7d,0x1bf));var _0xdbd7=function(_0x2beefe,_0x3e5ca9){_0x2beefe=_0x2beefe-0x0;var _0x2629d1=_0xbd7d[_0x2beefe];return _0x2629d1;};'use strict';var client=require('../client');var moment=require(_0xdbd7('0x0'));exports[_0xdbd7('0x1')]=function(_0x40d89a,_0x4256ed){return function(){return client[_0xdbd7('0x2')](_0xdbd7('0x3'),{'options':{'where':{'VoiceQueueId':_0x40d89a},'include':[{'model':_0xdbd7('0x4'),'as':_0xdbd7('0x5')}],'limit':_0x4256ed,'raw':![]},'log':'getCmHopper'});};};exports[_0xdbd7('0x6')]=function(_0x4b8f03,_0x2a1c80,_0x4c661c){return function(){return client['Request'](_0xdbd7('0x7'),{'body':_0x4b8f03,'options':{'where':{'VoiceQueueId':_0x2a1c80,'scheduledat':{'$lte':moment()[_0xdbd7('0x8')](_0xdbd7('0x9'))}},'limit':_0x4c661c},'log':_0xdbd7('0x7')});};};exports[_0xdbd7('0xa')]=function(_0x3cfc9a){return function(){return client[_0xdbd7('0x2')]('UpdateCmHopper',{'body':_0x3cfc9a,'options':{'where':{'ContactId':_0x3cfc9a[_0xdbd7('0xb')],'ListId':_0x3cfc9a[_0xdbd7('0xc')],'VoiceQueueId':_0x3cfc9a[_0xdbd7('0xd')],'CampaignId':_0x3cfc9a[_0xdbd7('0xe')]}},'log':_0xdbd7('0xa')});};};exports[_0xdbd7('0xf')]=function(_0x9563dd,_0x539642,_0x2db266){return function(){return client[_0xdbd7('0x2')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x9563dd,'ListId':_0x539642,'ContactId':_0x2db266}},'log':'DestroyCmHopper'});};};exports[_0xdbd7('0x10')]=function(_0x5a724d,_0x17f814,_0x4d5e72,_0x2035e9){return function(){return client[_0xdbd7('0x2')](_0xdbd7('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5a724d,'active':![],'scheduledat':{'$lte':moment()[_0xdbd7('0x8')](_0xdbd7('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x17f814}}]},'order':[[_0xdbd7('0x12'),_0xdbd7('0x13')],[_0xdbd7('0x14'),_0x2035e9],['id','ASC']],'raw':!![],'limit':_0x4d5e72},'log':_0xdbd7('0x11')});};};exports[_0xdbd7('0x15')]=function(_0x514621,_0x374d81,_0x33e0c2){return function(){return client[_0xdbd7('0x2')](_0xdbd7('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x514621,'active':![],'scheduledat':{'$lte':moment()[_0xdbd7('0x8')](_0xdbd7('0x9'))}},'include':[{'model':'CmContact','as':_0xdbd7('0x5')}],'order':[['priority',_0xdbd7('0x13')],['scheduledat',_0x33e0c2],['id',_0xdbd7('0x16')]],'raw':!![],'limit':_0x374d81},'log':_0xdbd7('0x17')});};};exports['moveContactManagedDialer']=function(_0x111046,_0x1619a8){return function(){_0x111046[_0xdbd7('0x18')]=_0x111046[_0xdbd7('0x19')];return client[_0xdbd7('0x2')]('MoveContactManagedDialer',{'body':_0x111046,'options':{'where':{'ContactId':_0x111046[_0xdbd7('0xb')],'ListId':_0x111046[_0xdbd7('0xc')],'VoiceQueueId':_0x111046['VoiceQueueId'],'CampaignId':_0x111046['CampaignId'],'active':_0x1619a8?undefined:!![]}},'log':_0xdbd7('0x1a')});};};exports['countReScheduled']=function(_0x233ac4){return function(){return client[_0xdbd7('0x2')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x233ac4['id']?_0x233ac4['id']||null:null}},'log':_0xdbd7('0x1b')});};};exports[_0xdbd7('0x1c')]=function(_0x20fcd0){return function(){return client[_0xdbd7('0x2')](_0xdbd7('0x1d'),{'options':{'where':{'id':_0x20fcd0},'include':[{'model':_0xdbd7('0x4'),'as':_0xdbd7('0x5')},{'model':_0xdbd7('0x1e'),'as':_0xdbd7('0x1f'),'attributes':['id',_0xdbd7('0x20')]},{'model':_0xdbd7('0x21'),'as':_0xdbd7('0x22'),'attributes':['id','name']}],'raw':!![]},'log':_0xdbd7('0x23')});};};exports[_0xdbd7('0x24')]=function(_0x1edede,_0x3bcb4a,_0x3a539c){return function(){return client[_0xdbd7('0x2')](_0xdbd7('0x7'),{'body':_0x1edede,'options':{'where':{'id':_0x3bcb4a},'limit':_0x3a539c},'log':_0xdbd7('0x7')});};};exports[_0xdbd7('0x25')]=function(_0x245ca0,_0x50def6){return function(){return client[_0xdbd7('0x2')](_0xdbd7('0x26'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x245ca0,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xdbd7('0x9'))},'UserId':{'$in':_0x50def6}},'order':[[_0xdbd7('0x12'),_0xdbd7('0x13')],['scheduledat',_0xdbd7('0x13')],['id',_0xdbd7('0x16')]],'include':[{'model':'CmContact','as':_0xdbd7('0x5')},{'model':'User','as':_0xdbd7('0x1f'),'attributes':['id',_0xdbd7('0x20'),_0xdbd7('0x27')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':'GetContactDialer'});};};exports[_0xdbd7('0x28')]=function(_0x38590e,_0x3e1881){return client[_0xdbd7('0x2')](_0xdbd7('0x29'),{'body':_0x38590e,'options':_0x3e1881||{},'log':_0xdbd7('0x29')});};exports[_0xdbd7('0x2a')]=function(_0x1b842f,_0x168df5,_0x22de59){return function(){return client[_0xdbd7('0x2')](_0xdbd7('0x2b'),{'body':{'where':{'voiceQueueIds':_0x1b842f,'interval':_0x168df5,'availableAgentsIds':_0x22de59}},'log':_0xdbd7('0x2a')});};};
\ No newline at end of file
index ad90cc8..8ff49c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbe4=['SwapAdditionalPhones','IncrementPreviewCounters','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x55d5dc,_0x25958d){var _0x375e59=function(_0x764315){while(--_0x764315){_0x55d5dc['push'](_0x55d5dc['shift']());}};_0x375e59(++_0x25958d);}(_0xdbe4,0x7a));var _0x4dbe=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xdbe4[_0x46698a];return _0x356db0;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x4dbe('0x0')]=function(_0x1de7b3,_0x1abdb1,_0x241514){return function(){return client[_0x4dbe('0x1')](_0x4dbe('0x2'),{'body':_0x1de7b3,'reason':_0x1abdb1,'entity':_0x241514,'log':_0x4dbe('0x2')});};};exports[_0x4dbe('0x3')]=function(_0x189765,_0x1221e8,_0x19e87f){return function(){return client[_0x4dbe('0x1')]('SwapAdditionalPhones',{'body':_0x189765,'duration':_0x1221e8,'waitTime':_0x19e87f,'log':_0x4dbe('0x4')});};};exports['incrementPreviewCounters']=function(_0x2a7741){return function(){return client[_0x4dbe('0x1')](_0x4dbe('0x5'),{'body':_0x2a7741,'log':_0x4dbe('0x5')});};};
\ No newline at end of file
+var _0x2eab=['Request','VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','moment','verifyAdditionalPhones'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x2eab,0x114));var _0xb2ea=function(_0x10a757,_0x5d6f64){_0x10a757=_0x10a757-0x0;var _0x5a743d=_0x2eab[_0x10a757];return _0x5a743d;};'use strict';var client=require(_0xb2ea('0x0'));var moment=require(_0xb2ea('0x1'));exports[_0xb2ea('0x2')]=function(_0x456d64,_0x386791,_0x3a206e){return function(){return client[_0xb2ea('0x3')](_0xb2ea('0x4'),{'body':_0x456d64,'reason':_0x386791,'entity':_0x3a206e,'log':_0xb2ea('0x4')});};};exports[_0xb2ea('0x5')]=function(_0x3ff77d,_0x221578,_0x4a20ec){return function(){return client[_0xb2ea('0x3')]('SwapAdditionalPhones',{'body':_0x3ff77d,'duration':_0x221578,'waitTime':_0x4a20ec,'log':_0xb2ea('0x6')});};};exports[_0xb2ea('0x7')]=function(_0x309e0c){return function(){return client[_0xb2ea('0x3')](_0xb2ea('0x8'),{'body':_0x309e0c,'log':_0xb2ea('0x8')});};};
\ No newline at end of file
index 1701569..313fb8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9730=['phone','CampaignId','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x13ba5d,_0x450488){var _0x2b3aef=function(_0x42d524){while(--_0x42d524){_0x13ba5d['push'](_0x13ba5d['shift']());}};_0x2b3aef(++_0x450488);}(_0x9730,0x75));var _0x0973=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9730[_0x20a584];return _0x4b41a8;};'use strict';var client=require('../client');exports[_0x0973('0x0')]=function(_0xd08e21){return function(){return client[_0x0973('0x1')](_0x0973('0x2'),{'options':{'where':{'VoiceQueueId':_0xd08e21['VoiceQueueId'],'phone':_0xd08e21[_0x0973('0x3')]},'raw':![]},'log':_0x0973('0x2')});};};exports['checkIsBlackListIvr']=function(_0x5a2763){return function(){return client[_0x0973('0x1')](_0x0973('0x2'),{'options':{'where':{'CampaignId':_0x5a2763[_0x0973('0x4')],'phone':_0x5a2763['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0x9bbe=['GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','phone','checkIsBlackListIvr','CampaignId'];(function(_0x13bcab,_0x59a9f6){var _0x400f52=function(_0x4ff326){while(--_0x4ff326){_0x13bcab['push'](_0x13bcab['shift']());}};_0x400f52(++_0x59a9f6);}(_0x9bbe,0x1e7));var _0xe9bb=function(_0x23b014,_0x4ca019){_0x23b014=_0x23b014-0x0;var _0x23399d=_0x9bbe[_0x23b014];return _0x23399d;};'use strict';var client=require(_0xe9bb('0x0'));exports[_0xe9bb('0x1')]=function(_0x4f34f7){return function(){return client[_0xe9bb('0x2')](_0xe9bb('0x3'),{'options':{'where':{'VoiceQueueId':_0x4f34f7[_0xe9bb('0x4')],'phone':_0x4f34f7[_0xe9bb('0x5')]},'raw':![]},'log':_0xe9bb('0x3')});};};exports[_0xe9bb('0x6')]=function(_0x175646){return function(){return client[_0xe9bb('0x2')](_0xe9bb('0x3'),{'options':{'where':{'CampaignId':_0x175646[_0xe9bb('0x7')],'phone':_0x175646[_0xe9bb('0x5')]},'raw':![]},'log':_0xe9bb('0x8')});};};
\ No newline at end of file
index bf2ed82..db86b88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea52=['../client','Request','CreateCmHopperFinal'];(function(_0x366cc0,_0x5b902a){var _0x2e00fa=function(_0x4a2465){while(--_0x4a2465){_0x366cc0['push'](_0x366cc0['shift']());}};_0x2e00fa(++_0x5b902a);}(_0xea52,0x168));var _0x2ea5=function(_0x2fa93a,_0xf57adf){_0x2fa93a=_0x2fa93a-0x0;var _0x4c9ea8=_0xea52[_0x2fa93a];return _0x4c9ea8;};'use strict';var client=require(_0x2ea5('0x0'));exports['createContact']=function(_0x52c1aa){return function(){_0x52c1aa['campaign']=_0x52c1aa['queue'];return client[_0x2ea5('0x1')](_0x2ea5('0x2'),{'body':_0x52c1aa,'log':_0x2ea5('0x2')});};};
\ No newline at end of file
+var _0xce34=['CreateCmHopperFinal','../client','createContact','campaign','Request'];(function(_0x18d20a,_0x23a1a8){var _0x25eb99=function(_0x49bcce){while(--_0x49bcce){_0x18d20a['push'](_0x18d20a['shift']());}};_0x25eb99(++_0x23a1a8);}(_0xce34,0x8d));var _0x4ce3=function(_0x3bc967,_0x5d5b1f){_0x3bc967=_0x3bc967-0x0;var _0x275825=_0xce34[_0x3bc967];return _0x275825;};'use strict';var client=require(_0x4ce3('0x0'));exports[_0x4ce3('0x1')]=function(_0x1f7e3c){return function(){_0x1f7e3c[_0x4ce3('0x2')]=_0x1f7e3c['queue'];return client[_0x4ce3('0x3')](_0x4ce3('0x4'),{'body':_0x1f7e3c,'log':_0x4ce3('0x4')});};};
\ No newline at end of file
index 675fc2b..0286fed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7f1=['startOf','day','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','queue','Request','AvgHandleTime','subtract','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory'];(function(_0x5d09f0,_0x3d9d1e){var _0x1e5c40=function(_0x255c33){while(--_0x255c33){_0x5d09f0['push'](_0x5d09f0['shift']());}};_0x1e5c40(++_0x3d9d1e);}(_0xe7f1,0x1e2));var _0x1e7f=function(_0x250074,_0x22c235){_0x250074=_0x250074-0x0;var _0x448486=_0xe7f1[_0x250074];return _0x448486;};'use strict';var client=require(_0x1e7f('0x0'));var moment=require(_0x1e7f('0x1'));exports[_0x1e7f('0x2')]=function(_0x44ecbd){return function(){_0x44ecbd[_0x1e7f('0x3')]=_0x44ecbd[_0x1e7f('0x4')];return client[_0x1e7f('0x5')]('CreateCmHopperHistory',{'body':_0x44ecbd,'log':'CreateCmHopperHistory'});};};exports['avgHandleTime']=function(_0x56dd0f){return function(){return client[_0x1e7f('0x5')](_0x1e7f('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x1e7f('0x7')](_0x56dd0f,'minutes')[_0x1e7f('0x8')](_0x1e7f('0x9')),moment()[_0x1e7f('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0x1e7f('0xa')});};};exports[_0x1e7f('0xb')]=function(_0x464121){return function(){return client[_0x1e7f('0x5')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x1e7f('0xc')](_0x1e7f('0xd'))[_0x1e7f('0x8')](_0x1e7f('0x9')),moment()[_0x1e7f('0xe')]('day')[_0x1e7f('0x8')](_0x1e7f('0x9'))]},'campaigntype':_0x1e7f('0x4')},'raw':![]},'log':_0x1e7f('0xf')});};};exports[_0x1e7f('0x10')]=function(_0x127706){return function(){return client[_0x1e7f('0x5')](_0x1e7f('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x1e7f('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0x1e7f('0xd'))[_0x1e7f('0x8')](_0x1e7f('0x9'))]},'campaigntype':_0x1e7f('0x12')},'raw':![]},'log':_0x1e7f('0x11')});};};
\ No newline at end of file
+var _0x1b74=['avgHandleTime','AvgHandleTime','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','day','getCampaignHopperHistory','GetCampaignHopperHistory','endOf','ivr','../client','campaign','queue','Request','CreateCmHopperHistory'];(function(_0x52fe72,_0x557120){var _0x33c6f4=function(_0x4c75b4){while(--_0x4c75b4){_0x52fe72['push'](_0x52fe72['shift']());}};_0x33c6f4(++_0x557120);}(_0x1b74,0x19f));var _0x41b7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x1b74[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x41b7('0x0'));var moment=require('moment');exports['createHistory']=function(_0x2b3d13){return function(){_0x2b3d13[_0x41b7('0x1')]=_0x2b3d13[_0x41b7('0x2')];return client[_0x41b7('0x3')](_0x41b7('0x4'),{'body':_0x2b3d13,'log':_0x41b7('0x4')});};};exports[_0x41b7('0x5')]=function(_0x547f42){return function(){return client[_0x41b7('0x3')](_0x41b7('0x6'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x547f42,'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x41b7('0x7')](_0x41b7('0x8'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x41b7('0x9')]=function(_0x380bd3){return function(){return client[_0x41b7('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x41b7('0xa'))[_0x41b7('0x7')](_0x41b7('0x8')),moment()['endOf']('day')[_0x41b7('0x7')](_0x41b7('0x8'))]},'campaigntype':_0x41b7('0x2')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x41b7('0xb')]=function(_0x14d882){return function(){return client[_0x41b7('0x3')](_0x41b7('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x41b7('0xa'))[_0x41b7('0x7')](_0x41b7('0x8')),moment()[_0x41b7('0xd')](_0x41b7('0xa'))[_0x41b7('0x7')](_0x41b7('0x8'))]},'campaigntype':_0x41b7('0xe')},'raw':![]},'log':_0x41b7('0xc')});};};
\ No newline at end of file
index 87dfe92..4d4c029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa25=['localstationid','modem','gateway','tech','ListId','key','Trunk','callerid','active','notify','NotifyFaxAccount','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo'];(function(_0x35d775,_0x25431e){var _0x59384d=function(_0x1a0c15){while(--_0x1a0c15){_0x35d775['push'](_0x35d775['shift']());}};_0x59384d(++_0x25431e);}(_0xfa25,0xd1));var _0x5fa2=function(_0x12ba3d,_0x31e0fa){_0x12ba3d=_0x12ba3d-0x0;var _0x545f7d=_0xfa25[_0x12ba3d];return _0x545f7d;};'use strict';var client=require('../client');exports[_0x5fa2('0x0')]=function(){return function(){return client[_0x5fa2('0x1')](_0x5fa2('0x2'),{'options':{'raw':![],'attributes':['id',_0x5fa2('0x3'),_0x5fa2('0x4'),_0x5fa2('0x5'),_0x5fa2('0x6'),_0x5fa2('0x7'),'minrate','maxrate',_0x5fa2('0x8'),_0x5fa2('0x9'),'faxdetect','t38timeout',_0x5fa2('0xa'),'TrunkId',_0x5fa2('0xb'),_0x5fa2('0xc')],'include':[{'model':_0x5fa2('0xd'),'as':'Trunk','attributes':['id',_0x5fa2('0x3'),_0x5fa2('0xe'),_0x5fa2('0xf')]}]},'log':'getFaxAccount'});};};exports[_0x5fa2('0x10')]=function(_0x4ab368,_0x54a14a){return client[_0x5fa2('0x1')](_0x5fa2('0x11'),{'account':{'id':_0x4ab368},'body':_0x54a14a,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0xf4c9=['NotifyFaxAccount','../client','getFaxAccounts','Request','name','ecm','headerinfo','localstationid','maxrate','gateway','TrunkId','ListId','key','Trunk','active','getFaxAccount','notify'];(function(_0x3afdeb,_0x353457){var _0x36017e=function(_0x64c533){while(--_0x64c533){_0x3afdeb['push'](_0x3afdeb['shift']());}};_0x36017e(++_0x353457);}(_0xf4c9,0x1aa));var _0x9f4c=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0xf4c9[_0x26462c];return _0x509a42;};'use strict';var client=require(_0x9f4c('0x0'));exports[_0x9f4c('0x1')]=function(){return function(){return client[_0x9f4c('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0x9f4c('0x3'),'description',_0x9f4c('0x4'),_0x9f4c('0x5'),_0x9f4c('0x6'),'minrate',_0x9f4c('0x7'),'modem',_0x9f4c('0x8'),'faxdetect','t38timeout','tech',_0x9f4c('0x9'),_0x9f4c('0xa'),_0x9f4c('0xb')],'include':[{'model':_0x9f4c('0xc'),'as':_0x9f4c('0xc'),'attributes':['id',_0x9f4c('0x3'),'callerid',_0x9f4c('0xd')]}]},'log':_0x9f4c('0xe')});};};exports[_0x9f4c('0xf')]=function(_0x700e2d,_0xd0da22){return client[_0x9f4c('0x2')](_0x9f4c('0x10'),{'account':{'id':_0x700e2d},'body':_0xd0da22,'log':_0x9f4c('0x10')});};
\ No newline at end of file
index dbca3ba..04b1d43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35b7=['../client','Request','UpdateFaxMessage'];(function(_0x180967,_0x764e9c){var _0x4cb1e2=function(_0x14da92){while(--_0x14da92){_0x180967['push'](_0x180967['shift']());}};_0x4cb1e2(++_0x764e9c);}(_0x35b7,0x9c));var _0x735b=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0x35b7[_0x5ddaac];return _0x2a9c58;};'use strict';var client=require(_0x735b('0x0'));exports['update']=function(_0x40b55f,_0x5b6fd7){return client[_0x735b('0x1')](_0x735b('0x2'),{'body':_0x5b6fd7,'options':{'where':{'AttachmentId':_0x40b55f}},'log':_0x735b('0x2')});};
\ No newline at end of file
+var _0x98b0=['update','Request','../client'];(function(_0xc0daaa,_0x2ece3f){var _0x4374ef=function(_0x512f9d){while(--_0x512f9d){_0xc0daaa['push'](_0xc0daaa['shift']());}};_0x4374ef(++_0x2ece3f);}(_0x98b0,0x1be));var _0x098b=function(_0x354164,_0x4c30de){_0x354164=_0x354164-0x0;var _0x5db9a8=_0x98b0[_0x354164];return _0x5db9a8;};'use strict';var client=require(_0x098b('0x0'));exports[_0x098b('0x1')]=function(_0x1160f2,_0x217207){return client[_0x098b('0x2')]('UpdateFaxMessage',{'body':_0x217207,'options':{'where':{'AttachmentId':_0x1160f2}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index b9aaf79..9d380fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d4f=['authType','serverUrl','DeskConfiguration','Configurations','type','content','variableName','Variable','DeskField','Descriptions','keyContent','idField','nameField','customField','Tags','GetDeskAccount','../../client','getDeskAccounts','Request','name','description','password','remoteUri'];(function(_0x308146,_0x5f1584){var _0x4c8984=function(_0x3e7d7d){while(--_0x3e7d7d){_0x308146['push'](_0x308146['shift']());}};_0x4c8984(++_0x5f1584);}(_0x3d4f,0x83));var _0xf3d4=function(_0x266098,_0x10fbbb){_0x266098=_0x266098-0x0;var _0x492415=_0x3d4f[_0x266098];return _0x492415;};'use strict';var client=require(_0xf3d4('0x0'));exports[_0xf3d4('0x1')]=function(){return function(_0x170d37){return client[_0xf3d4('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0xf3d4('0x3'),_0xf3d4('0x4'),'username',_0xf3d4('0x5'),_0xf3d4('0x6'),_0xf3d4('0x7'),'type',_0xf3d4('0x8')],'include':[{'model':_0xf3d4('0x9'),'as':_0xf3d4('0xa'),'attributes':['id',_0xf3d4('0x3')],'include':[{'model':'DeskField','as':'Subjects','attributes':['id',_0xf3d4('0xb'),_0xf3d4('0xc'),_0xf3d4('0xd')],'include':[{'model':_0xf3d4('0xe'),'as':_0xf3d4('0xe'),'attributes':['id',_0xf3d4('0x3')]}]},{'model':_0xf3d4('0xf'),'as':_0xf3d4('0x10'),'attributes':['id',_0xf3d4('0xb'),_0xf3d4('0xc'),'key','keyType',_0xf3d4('0x11'),'variableName'],'include':[{'model':'Variable','as':_0xf3d4('0xe'),'attributes':['id','name']}]},{'model':_0xf3d4('0xf'),'as':'Fields','attributes':['id','type','content',_0xf3d4('0x12'),_0xf3d4('0x13'),_0xf3d4('0x14'),_0xf3d4('0xd')],'include':[{'model':_0xf3d4('0xe'),'as':_0xf3d4('0xe'),'attributes':['id',_0xf3d4('0x3')]}]},{'model':'Tag','as':_0xf3d4('0x15'),'attributes':['id',_0xf3d4('0x3')]}]}]},'log':_0xf3d4('0x16')});};};
\ No newline at end of file
+var _0xe89f=['DeskConfiguration','Configurations','DeskField','Subjects','type','variableName','Variable','Descriptions','key','keyType','Fields','idField','nameField','customField','Tag','Tags','Request','GetDeskAccount','name','description','username','remoteUri','authType','serverUrl'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xe89f,0x1f0));var _0xfe89=function(_0x1f9db6,_0x39bb55){_0x1f9db6=_0x1f9db6-0x0;var _0x46661c=_0xe89f[_0x1f9db6];return _0x46661c;};'use strict';var client=require('../../client');exports['getDeskAccounts']=function(){return function(_0x37c508){return client[_0xfe89('0x0')](_0xfe89('0x1'),{'options':{'raw':![],'attributes':['id',_0xfe89('0x2'),_0xfe89('0x3'),_0xfe89('0x4'),'password',_0xfe89('0x5'),_0xfe89('0x6'),'type',_0xfe89('0x7')],'include':[{'model':_0xfe89('0x8'),'as':_0xfe89('0x9'),'attributes':['id','name'],'include':[{'model':_0xfe89('0xa'),'as':_0xfe89('0xb'),'attributes':['id',_0xfe89('0xc'),'content',_0xfe89('0xd')],'include':[{'model':'Variable','as':_0xfe89('0xe'),'attributes':['id',_0xfe89('0x2')]}]},{'model':_0xfe89('0xa'),'as':_0xfe89('0xf'),'attributes':['id','type','content',_0xfe89('0x10'),_0xfe89('0x11'),'keyContent',_0xfe89('0xd')],'include':[{'model':_0xfe89('0xe'),'as':_0xfe89('0xe'),'attributes':['id',_0xfe89('0x2')]}]},{'model':_0xfe89('0xa'),'as':_0xfe89('0x12'),'attributes':['id',_0xfe89('0xc'),'content',_0xfe89('0x13'),_0xfe89('0x14'),_0xfe89('0x15'),_0xfe89('0xd')],'include':[{'model':'Variable','as':_0xfe89('0xe'),'attributes':['id',_0xfe89('0x2')]}]},{'model':_0xfe89('0x16'),'as':_0xfe89('0x17'),'attributes':['id',_0xfe89('0x2')]}]}]},'log':_0xfe89('0x1')});};};
\ No newline at end of file
index 0a4219d..6262cb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ab=['Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','type','content','variableName','Variable','Descriptions','Fields','idField','nameField','customField','CloudProvider','data2','data5','data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','password','clientId','clientSecret','serverUrl','modernAuthentication'];(function(_0x32b993,_0x1c5989){var _0x482780=function(_0x404179){while(--_0x404179){_0x32b993['push'](_0x32b993['shift']());}};_0x482780(++_0x1c5989);}(_0x34ab,0x169));var _0xb34a=function(_0xab9f3d,_0xb336fa){_0xab9f3d=_0xab9f3d-0x0;var _0x5283bf=_0x34ab[_0xab9f3d];return _0x5283bf;};'use strict';var client=require(_0xb34a('0x0'));exports[_0xb34a('0x1')]=function(){return function(_0x3af990){return client[_0xb34a('0x2')](_0xb34a('0x3'),{'options':{'raw':![],'attributes':['id',_0xb34a('0x4'),_0xb34a('0x5'),_0xb34a('0x6'),'remoteUri','tenantId',_0xb34a('0x7'),_0xb34a('0x8'),_0xb34a('0x9'),'description',_0xb34a('0xa')],'include':[{'model':_0xb34a('0xb'),'as':_0xb34a('0xc'),'attributes':['id',_0xb34a('0x4'),_0xb34a('0xd'),_0xb34a('0xe'),_0xb34a('0xf'),_0xb34a('0x10')],'include':[{'model':_0xb34a('0x11'),'as':'Subjects','attributes':['id',_0xb34a('0x12'),_0xb34a('0x13'),_0xb34a('0x14')],'include':[{'model':'Variable','as':_0xb34a('0x15'),'attributes':['id',_0xb34a('0x4')]}]},{'model':_0xb34a('0x11'),'as':_0xb34a('0x16'),'attributes':['id',_0xb34a('0x12'),_0xb34a('0x13'),'key','keyType','keyContent','variableName'],'include':[{'model':_0xb34a('0x15'),'as':'Variable','attributes':['id','name']}]},{'model':_0xb34a('0x11'),'as':_0xb34a('0x17'),'attributes':['id',_0xb34a('0x12'),'content',_0xb34a('0x18'),_0xb34a('0x19'),_0xb34a('0x1a'),'variableName'],'include':[{'model':_0xb34a('0x15'),'as':'Variable','attributes':['id',_0xb34a('0x4')]}]}]},{'model':_0xb34a('0x1b'),'as':_0xb34a('0x1b'),'attributes':['id',_0xb34a('0x1c'),_0xb34a('0x1d'),_0xb34a('0x1e')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0x63a5=['remoteUri','tenantId','serverUrl','modernAuthentication','Dynamics365Configuration','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','content','variableName','Variable','name','Descriptions','key','keyType','keyContent','Fields','nameField','customField','CloudProvider','data5','data7','../../client','getDynamics365Accounts','GetDynamics365Account','username','password'];(function(_0x3c4bad,_0x38ab73){var _0x8b6ebf=function(_0x252bc4){while(--_0x252bc4){_0x3c4bad['push'](_0x3c4bad['shift']());}};_0x8b6ebf(++_0x38ab73);}(_0x63a5,0x18e));var _0x563a=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0x63a5[_0x20589d];return _0x422de9;};'use strict';var client=require(_0x563a('0x0'));exports[_0x563a('0x1')]=function(){return function(_0x91178){return client['Request'](_0x563a('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x563a('0x3'),_0x563a('0x4'),_0x563a('0x5'),_0x563a('0x6'),'clientId','clientSecret',_0x563a('0x7'),'description',_0x563a('0x8')],'include':[{'model':_0x563a('0x9'),'as':'Configurations','attributes':['id','name',_0x563a('0xa'),_0x563a('0xb'),_0x563a('0xc'),_0x563a('0xd')],'include':[{'model':_0x563a('0xe'),'as':_0x563a('0xf'),'attributes':['id',_0x563a('0x10'),_0x563a('0x11'),_0x563a('0x12')],'include':[{'model':_0x563a('0x13'),'as':_0x563a('0x13'),'attributes':['id',_0x563a('0x14')]}]},{'model':_0x563a('0xe'),'as':_0x563a('0x15'),'attributes':['id','type',_0x563a('0x11'),_0x563a('0x16'),_0x563a('0x17'),_0x563a('0x18'),_0x563a('0x12')],'include':[{'model':_0x563a('0x13'),'as':'Variable','attributes':['id',_0x563a('0x14')]}]},{'model':_0x563a('0xe'),'as':_0x563a('0x19'),'attributes':['id',_0x563a('0x10'),'content','idField',_0x563a('0x1a'),_0x563a('0x1b'),'variableName'],'include':[{'model':_0x563a('0x13'),'as':_0x563a('0x13'),'attributes':['id',_0x563a('0x14')]}]}]},{'model':_0x563a('0x1c'),'as':'CloudProvider','attributes':['id','data2',_0x563a('0x1d'),_0x563a('0x1e')]}]},'log':_0x563a('0x2')});};};
\ No newline at end of file
index 7ffe999..1804733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e3=['key','keyType','keyContent','variableName','Fields','idField','nameField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','name','username','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','Subjects','type','content','Variable'];(function(_0x15e48c,_0x32e779){var _0x73f34a=function(_0x2ce8a2){while(--_0x2ce8a2){_0x15e48c['push'](_0x15e48c['shift']());}};_0x73f34a(++_0x32e779);}(_0x05e3,0x86));var _0x305e=function(_0x305528,_0x263ca6){_0x305528=_0x305528-0x0;var _0x2531f0=_0x05e3[_0x305528];return _0x2531f0;};'use strict';var client=require(_0x305e('0x0'));exports[_0x305e('0x1')]=function(){return function(_0x138210){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x305e('0x2'),_0x305e('0x3'),'apiKey',_0x305e('0x4'),_0x305e('0x5')],'include':[{'model':'FreshdeskConfiguration','as':_0x305e('0x6'),'attributes':['id',_0x305e('0x2')],'include':[{'model':_0x305e('0x7'),'attributes':['id',_0x305e('0x2')]},{'model':_0x305e('0x8'),'as':_0x305e('0x9'),'attributes':['id',_0x305e('0xa'),_0x305e('0xb'),'variableName'],'include':[{'model':_0x305e('0xc'),'as':'Variable','attributes':['id',_0x305e('0x2')]}]},{'model':_0x305e('0x8'),'as':'Descriptions','attributes':['id',_0x305e('0xa'),_0x305e('0xb'),_0x305e('0xd'),_0x305e('0xe'),_0x305e('0xf'),_0x305e('0x10')],'include':[{'model':_0x305e('0xc'),'as':_0x305e('0xc'),'attributes':['id',_0x305e('0x2')]}]},{'model':_0x305e('0x8'),'as':_0x305e('0x11'),'attributes':['id',_0x305e('0xa'),'content',_0x305e('0x12'),_0x305e('0x13'),'customField',_0x305e('0x10')],'include':[{'model':_0x305e('0xc'),'as':_0x305e('0xc'),'attributes':['id',_0x305e('0x2')]}]}]}]},'log':_0x305e('0x14')});};};
\ No newline at end of file
+var _0x4bde=['Configurations','Tag','Subjects','type','content','variableName','Variable','key','keyContent','FreshdeskField','idField','nameField','customField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','username','apiKey','serverUrl','FreshdeskConfiguration'];(function(_0xd95728,_0x50c48b){var _0x4df1d4=function(_0x1b486a){while(--_0x1b486a){_0xd95728['push'](_0xd95728['shift']());}};_0x4df1d4(++_0x50c48b);}(_0x4bde,0x1b1));var _0xe4bd=function(_0x42323f,_0x1d8f16){_0x42323f=_0x42323f-0x0;var _0x517fd3=_0x4bde[_0x42323f];return _0x517fd3;};'use strict';var client=require(_0xe4bd('0x0'));exports[_0xe4bd('0x1')]=function(){return function(_0x611407){return client['Request'](_0xe4bd('0x2'),{'options':{'raw':![],'attributes':['id',_0xe4bd('0x3'),_0xe4bd('0x4'),_0xe4bd('0x5'),'remoteUri',_0xe4bd('0x6')],'include':[{'model':_0xe4bd('0x7'),'as':_0xe4bd('0x8'),'attributes':['id',_0xe4bd('0x3')],'include':[{'model':_0xe4bd('0x9'),'attributes':['id',_0xe4bd('0x3')]},{'model':'FreshdeskField','as':_0xe4bd('0xa'),'attributes':['id',_0xe4bd('0xb'),_0xe4bd('0xc'),_0xe4bd('0xd')],'include':[{'model':_0xe4bd('0xe'),'as':_0xe4bd('0xe'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0xe4bd('0xb'),_0xe4bd('0xc'),_0xe4bd('0xf'),'keyType',_0xe4bd('0x10'),_0xe4bd('0xd')],'include':[{'model':_0xe4bd('0xe'),'as':_0xe4bd('0xe'),'attributes':['id','name']}]},{'model':_0xe4bd('0x11'),'as':'Fields','attributes':['id',_0xe4bd('0xb'),'content',_0xe4bd('0x12'),_0xe4bd('0x13'),_0xe4bd('0x14'),_0xe4bd('0xd')],'include':[{'model':_0xe4bd('0xe'),'as':_0xe4bd('0xe'),'attributes':['id',_0xe4bd('0x3')]}]}]}]},'log':_0xe4bd('0x2')});};};
\ No newline at end of file
index 288554b..7151fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['key','keyType','name','../../client','getFreshsalesAccounts','Request','apiKey','remoteUri','FreshsalesConfiguration','Configurations','FreshsalesField','type','variableName','Variable','Descriptions'];(function(_0x41f876,_0x3d8c4e){var _0x2e6159=function(_0x543364){while(--_0x543364){_0x41f876['push'](_0x41f876['shift']());}};_0x2e6159(++_0x3d8c4e);}(_0xd8fb,0x99));var _0xbd8f=function(_0x23698a,_0x2f3e9a){_0x23698a=_0x23698a-0x0;var _0x4b6360=_0xd8fb[_0x23698a];return _0x4b6360;};'use strict';var client=require(_0xbd8f('0x0'));exports[_0xbd8f('0x1')]=function(){return function(_0x1024c1){return client[_0xbd8f('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id','name','username',_0xbd8f('0x3'),_0xbd8f('0x4'),'serverUrl'],'include':[{'model':_0xbd8f('0x5'),'as':_0xbd8f('0x6'),'attributes':['id','name'],'include':[{'model':_0xbd8f('0x7'),'as':'Subjects','attributes':['id',_0xbd8f('0x8'),'content',_0xbd8f('0x9')],'include':[{'model':_0xbd8f('0xa'),'as':'Variable','attributes':['id','name']}]},{'model':_0xbd8f('0x7'),'as':_0xbd8f('0xb'),'attributes':['id',_0xbd8f('0x8'),'content',_0xbd8f('0xc'),_0xbd8f('0xd'),'keyContent','variableName'],'include':[{'model':_0xbd8f('0xa'),'as':_0xbd8f('0xa'),'attributes':['id',_0xbd8f('0xe')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x9fe7=['FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','variableName','Variable','content','keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','name','username','apiKey','serverUrl'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9fe7,0x1df));var _0x79fe=function(_0x1d0eda,_0x54bea1){_0x1d0eda=_0x1d0eda-0x0;var _0x35fb40=_0x9fe7[_0x1d0eda];return _0x35fb40;};'use strict';var client=require(_0x79fe('0x0'));exports[_0x79fe('0x1')]=function(){return function(_0x50cf90){return client[_0x79fe('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x79fe('0x3'),_0x79fe('0x4'),_0x79fe('0x5'),'remoteUri',_0x79fe('0x6')],'include':[{'model':_0x79fe('0x7'),'as':_0x79fe('0x8'),'attributes':['id','name'],'include':[{'model':_0x79fe('0x9'),'as':_0x79fe('0xa'),'attributes':['id',_0x79fe('0xb'),'content',_0x79fe('0xc')],'include':[{'model':_0x79fe('0xd'),'as':_0x79fe('0xd'),'attributes':['id',_0x79fe('0x3')]}]},{'model':_0x79fe('0x9'),'as':'Descriptions','attributes':['id',_0x79fe('0xb'),_0x79fe('0xe'),'key',_0x79fe('0xf'),_0x79fe('0x10'),_0x79fe('0xc')],'include':[{'model':_0x79fe('0xd'),'as':'Variable','attributes':['id',_0x79fe('0x3')]}]}]}]},'log':_0x79fe('0x11')});};};
\ No newline at end of file
index 173e6ea..6ae8fa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7529=['serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchContact','Subjects','Variable','SalesforceField','Descriptions','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','password','remoteUri','clientId'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0x7529,0x1c6));var _0x9752=function(_0x247f2d,_0x270167){_0x247f2d=_0x247f2d-0x0;var _0x2eb510=_0x7529[_0x247f2d];return _0x2eb510;};'use strict';var client=require(_0x9752('0x0'));exports[_0x9752('0x1')]=function(){return function(_0x3c28e5){return client[_0x9752('0x2')](_0x9752('0x3'),{'options':{'raw':![],'attributes':['id',_0x9752('0x4'),'username',_0x9752('0x5'),_0x9752('0x6'),_0x9752('0x7'),'clientSecret','securityToken',_0x9752('0x8'),_0x9752('0x9')],'include':[{'model':_0x9752('0xa'),'as':_0x9752('0xb'),'attributes':['id',_0x9752('0x4'),_0x9752('0xc'),_0x9752('0xd'),_0x9752('0xe'),_0x9752('0xf'),'additionalSearchAccount',_0x9752('0x10'),'additionalSearchLead'],'include':[{'model':'SalesforceField','as':_0x9752('0x11'),'include':[{'model':_0x9752('0x12'),'as':_0x9752('0x12'),'attributes':['id',_0x9752('0x4')]}]},{'model':_0x9752('0x13'),'as':_0x9752('0x14'),'include':[{'model':_0x9752('0x12'),'as':_0x9752('0x12'),'attributes':['id','name']}]},{'model':'SalesforceField','as':'Fields','include':[{'model':_0x9752('0x12'),'as':_0x9752('0x12'),'attributes':['id',_0x9752('0x4')]}]}]}]},'log':_0x9752('0x3')});};};
\ No newline at end of file
+var _0x9a28=['Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','name','password','remoteUri','clientId','clientSecret','serverUrl','Configurations','moduleSearch','ticketType','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Variable','Descriptions'];(function(_0x44afa4,_0x5be27b){var _0xcad289=function(_0x206272){while(--_0x206272){_0x44afa4['push'](_0x44afa4['shift']());}};_0xcad289(++_0x5be27b);}(_0x9a28,0x16a));var _0x89a2=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x9a28[_0x1e3c16];return _0x47a0c9;};'use strict';var client=require(_0x89a2('0x0'));exports[_0x89a2('0x1')]=function(){return function(_0x4bc2b3){return client['Request'](_0x89a2('0x2'),{'options':{'raw':![],'attributes':['id',_0x89a2('0x3'),'username',_0x89a2('0x4'),_0x89a2('0x5'),_0x89a2('0x6'),_0x89a2('0x7'),'securityToken',_0x89a2('0x8'),'type'],'include':[{'model':'SalesforceConfiguration','as':_0x89a2('0x9'),'attributes':['id','name',_0x89a2('0xa'),'moduleCreate',_0x89a2('0xb'),'leadId',_0x89a2('0xc'),_0x89a2('0xd'),_0x89a2('0xe')],'include':[{'model':_0x89a2('0xf'),'as':'Subjects','include':[{'model':_0x89a2('0x10'),'as':_0x89a2('0x10'),'attributes':['id',_0x89a2('0x3')]}]},{'model':_0x89a2('0xf'),'as':_0x89a2('0x11'),'include':[{'model':'Variable','as':_0x89a2('0x10'),'attributes':['id',_0x89a2('0x3')]}]},{'model':_0x89a2('0xf'),'as':_0x89a2('0x12'),'include':[{'model':_0x89a2('0x10'),'as':_0x89a2('0x10'),'attributes':['id','name']}]}]}]},'log':_0x89a2('0x2')});};};
\ No newline at end of file
index 13fea5e..e6cf9eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields','nameField','customField','GetServicenowkAccount'];(function(_0x2dfed5,_0x4d2a06){var _0x594e9f=function(_0x3fa48f){while(--_0x3fa48f){_0x2dfed5['push'](_0x2dfed5['shift']());}};_0x594e9f(++_0x4d2a06);}(_0x46ed,0x168));var _0xd46e=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x46ed[_0x2070da];return _0x4f9fe1;};'use strict';var client=require(_0xd46e('0x0'));exports[_0xd46e('0x1')]=function(){return function(_0x493012){return client[_0xd46e('0x2')](_0xd46e('0x3'),{'options':{'raw':![],'attributes':['id',_0xd46e('0x4'),'description',_0xd46e('0x5'),_0xd46e('0x6'),'email',_0xd46e('0x7'),_0xd46e('0x8')],'include':[{'model':_0xd46e('0x9'),'as':_0xd46e('0xa'),'attributes':['id',_0xd46e('0x4')],'include':[{'model':_0xd46e('0xb'),'as':_0xd46e('0xc'),'attributes':['id',_0xd46e('0xd'),_0xd46e('0xe'),_0xd46e('0xf')],'include':[{'model':_0xd46e('0x10'),'as':'Variable','attributes':['id',_0xd46e('0x4')]}]},{'model':_0xd46e('0xb'),'as':'Descriptions','attributes':['id',_0xd46e('0xd'),_0xd46e('0xe'),_0xd46e('0x11'),_0xd46e('0x12'),_0xd46e('0x13'),_0xd46e('0xf')],'include':[{'model':'Variable','as':_0xd46e('0x10'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xd46e('0x14'),'attributes':['id',_0xd46e('0xd'),'content','idField',_0xd46e('0x15'),_0xd46e('0x16'),_0xd46e('0xf')],'include':[{'model':_0xd46e('0x10'),'as':'Variable','attributes':['id',_0xd46e('0x4')]}]}]}]},'log':_0xd46e('0x17')});};};
\ No newline at end of file
+var _0x31f0=['remoteUri','Subjects','type','content','variableName','Variable','ServicenowField','Descriptions','key','keyType','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','GetServicenowAccount','name','description','username','email'];(function(_0x409cc8,_0x17cf5e){var _0x110f7a=function(_0x14cb33){while(--_0x14cb33){_0x409cc8['push'](_0x409cc8['shift']());}};_0x110f7a(++_0x17cf5e);}(_0x31f0,0xb7));var _0x031f=function(_0x1b902b,_0x588629){_0x1b902b=_0x1b902b-0x0;var _0x23b391=_0x31f0[_0x1b902b];return _0x23b391;};'use strict';var client=require(_0x031f('0x0'));exports['getServicenowAccounts']=function(){return function(_0xc4ca54){return client['Request'](_0x031f('0x1'),{'options':{'raw':![],'attributes':['id',_0x031f('0x2'),_0x031f('0x3'),_0x031f('0x4'),'password',_0x031f('0x5'),_0x031f('0x6'),'serverUrl'],'include':[{'model':'ServicenowConfiguration','as':'Configurations','attributes':['id',_0x031f('0x2')],'include':[{'model':'ServicenowField','as':_0x031f('0x7'),'attributes':['id',_0x031f('0x8'),_0x031f('0x9'),_0x031f('0xa')],'include':[{'model':'Variable','as':_0x031f('0xb'),'attributes':['id',_0x031f('0x2')]}]},{'model':_0x031f('0xc'),'as':_0x031f('0xd'),'attributes':['id',_0x031f('0x8'),_0x031f('0x9'),_0x031f('0xe'),_0x031f('0xf'),'keyContent',_0x031f('0xa')],'include':[{'model':_0x031f('0xb'),'as':_0x031f('0xb'),'attributes':['id',_0x031f('0x2')]}]},{'model':_0x031f('0xc'),'as':_0x031f('0x10'),'attributes':['id',_0x031f('0x8'),'content',_0x031f('0x11'),_0x031f('0x12'),_0x031f('0x13'),_0x031f('0xa')],'include':[{'model':_0x031f('0xb'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x031f('0x14')});};};
\ No newline at end of file
index f4379e0..21d1eb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['remoteUri','serverUrl','SugarcrmConfiguration','Configurations','name','SugarcrmField','Subjects','Variable','Descriptions','content','key','keyType','variableName','Fields','customField','GetSugarcrmAccount','../../client','Request','username','password'];(function(_0x25f5b8,_0x1619f1){var _0x4415aa=function(_0xe45ba6){while(--_0xe45ba6){_0x25f5b8['push'](_0x25f5b8['shift']());}};_0x4415aa(++_0x1619f1);}(_0x0295,0x1f0));var _0x5029=function(_0x71ae3c,_0x49c7a8){_0x71ae3c=_0x71ae3c-0x0;var _0x267933=_0x0295[_0x71ae3c];return _0x267933;};'use strict';var client=require(_0x5029('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0x5e71d0){return client[_0x5029('0x1')]('GetSugarcrmAccount',{'options':{'raw':![],'attributes':['id','name',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5')],'include':[{'model':_0x5029('0x6'),'as':_0x5029('0x7'),'attributes':['id',_0x5029('0x8')],'include':[{'model':_0x5029('0x9'),'as':_0x5029('0xa'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x5029('0xb'),'as':'Variable','attributes':['id',_0x5029('0x8')]}]},{'model':'SugarcrmField','as':_0x5029('0xc'),'attributes':['id','type',_0x5029('0xd'),_0x5029('0xe'),_0x5029('0xf'),'keyContent',_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id','name']}]},{'model':_0x5029('0x9'),'as':_0x5029('0x11'),'attributes':['id','type','content','idField','nameField',_0x5029('0x12'),_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id',_0x5029('0x8')]}]}]}]},'log':_0x5029('0x13')});};};
\ 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(_0x4111f8,_0x2c6325){var _0x4ac8d8=function(_0x8898bf){while(--_0x8898bf){_0x4111f8['push'](_0x4111f8['shift']());}};_0x4ac8d8(++_0x2c6325);}(_0x0b0e,0x187));var _0xe0b0=function(_0x33ebf5,_0x258ec6){_0x33ebf5=_0x33ebf5-0x0;var _0x66957b=_0x0b0e[_0x33ebf5];return _0x66957b;};'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 2047065..95630e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d77=['description','serverUrl','VtigerConfiguration','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetVtigerAccount','name'];(function(_0x35062e,_0x45cc55){var _0xe72891=function(_0x56b126){while(--_0x56b126){_0x35062e['push'](_0x35062e['shift']());}};_0xe72891(++_0x45cc55);}(_0x0d77,0x12d));var _0x70d7=function(_0xcfd4ae,_0x94892f){_0xcfd4ae=_0xcfd4ae-0x0;var _0x196069=_0x0d77[_0xcfd4ae];return _0x196069;};'use strict';var client=require('../../client');exports['getVtigerAccounts']=function(){return function(_0x5b5870){return client[_0x70d7('0x0')](_0x70d7('0x1'),{'options':{'raw':![],'attributes':['id',_0x70d7('0x2'),_0x70d7('0x3'),'username','accessKey','remoteUri',_0x70d7('0x4')],'include':[{'model':_0x70d7('0x5'),'as':'Configurations','attributes':['id',_0x70d7('0x2')],'include':[{'model':_0x70d7('0x6'),'as':_0x70d7('0x7'),'attributes':['id',_0x70d7('0x8'),_0x70d7('0x9'),_0x70d7('0xa')],'include':[{'model':_0x70d7('0xb'),'as':_0x70d7('0xb'),'attributes':['id',_0x70d7('0x2')]}]},{'model':_0x70d7('0x6'),'as':_0x70d7('0xc'),'attributes':['id','type','content',_0x70d7('0xd'),_0x70d7('0xe'),_0x70d7('0xf'),_0x70d7('0xa')],'include':[{'model':_0x70d7('0xb'),'as':_0x70d7('0xb'),'attributes':['id','name']}]},{'model':_0x70d7('0x6'),'as':_0x70d7('0x10'),'attributes':['id',_0x70d7('0x8'),_0x70d7('0x9'),_0x70d7('0x11'),_0x70d7('0x12'),'customField',_0x70d7('0xa')],'include':[{'model':_0x70d7('0xb'),'as':_0x70d7('0xb'),'attributes':['id',_0x70d7('0x2')]}]}]}]},'log':_0x70d7('0x1')});};};
\ No newline at end of file
+var _0xf6c3=['idField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','serverUrl','VtigerConfiguration','Configurations','Subjects','type','content','variableName','Variable','VtigerField','Descriptions','key','keyContent','Fields'];(function(_0x3b7198,_0x542aa0){var _0x1cf0fe=function(_0x3e0f55){while(--_0x3e0f55){_0x3b7198['push'](_0x3b7198['shift']());}};_0x1cf0fe(++_0x542aa0);}(_0xf6c3,0xf4));var _0x3f6c=function(_0x189b3f,_0x281b9c){_0x189b3f=_0x189b3f-0x0;var _0x207ecd=_0xf6c3[_0x189b3f];return _0x207ecd;};'use strict';var client=require(_0x3f6c('0x0'));exports[_0x3f6c('0x1')]=function(){return function(_0x4cdd12){return client[_0x3f6c('0x2')](_0x3f6c('0x3'),{'options':{'raw':![],'attributes':['id',_0x3f6c('0x4'),_0x3f6c('0x5'),'username',_0x3f6c('0x6'),'remoteUri',_0x3f6c('0x7')],'include':[{'model':_0x3f6c('0x8'),'as':_0x3f6c('0x9'),'attributes':['id',_0x3f6c('0x4')],'include':[{'model':'VtigerField','as':_0x3f6c('0xa'),'attributes':['id',_0x3f6c('0xb'),_0x3f6c('0xc'),_0x3f6c('0xd')],'include':[{'model':'Variable','as':_0x3f6c('0xe'),'attributes':['id','name']}]},{'model':_0x3f6c('0xf'),'as':_0x3f6c('0x10'),'attributes':['id','type',_0x3f6c('0xc'),_0x3f6c('0x11'),'keyType',_0x3f6c('0x12'),_0x3f6c('0xd')],'include':[{'model':_0x3f6c('0xe'),'as':_0x3f6c('0xe'),'attributes':['id',_0x3f6c('0x4')]}]},{'model':'VtigerField','as':_0x3f6c('0x13'),'attributes':['id',_0x3f6c('0xb'),_0x3f6c('0xc'),_0x3f6c('0x14'),'nameField',_0x3f6c('0x15'),_0x3f6c('0xd')],'include':[{'model':_0x3f6c('0xe'),'as':_0x3f6c('0xe'),'attributes':['id',_0x3f6c('0x4')]}]}]}]},'log':_0x3f6c('0x3')});};};
\ No newline at end of file
index 392eade..5c8cec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c83=['../../client','getZendeskAccounts','Request','name','username','password','remoteUri','serverUrl','type','ZendeskConfiguration','Configurations','Tag','Subjects','content','variableName','Variable','ZendeskField','Descriptions','key','keyContent','Fields','idField','nameField','GetZendeskAccount'];(function(_0x49b6ef,_0x4a85fe){var _0x50b568=function(_0x4ee95){while(--_0x4ee95){_0x49b6ef['push'](_0x49b6ef['shift']());}};_0x50b568(++_0x4a85fe);}(_0x0c83,0x138));var _0x30c8=function(_0x54b9dc,_0x36004e){_0x54b9dc=_0x54b9dc-0x0;var _0x5b9bd7=_0x0c83[_0x54b9dc];return _0x5b9bd7;};'use strict';var client=require(_0x30c8('0x0'));exports[_0x30c8('0x1')]=function(){return function(_0x4cd9ff){return client[_0x30c8('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x30c8('0x3'),_0x30c8('0x4'),_0x30c8('0x5'),'token',_0x30c8('0x6'),'authType',_0x30c8('0x7'),_0x30c8('0x8')],'include':[{'model':_0x30c8('0x9'),'as':_0x30c8('0xa'),'attributes':['id','name'],'include':[{'model':_0x30c8('0xb'),'attributes':['id','name']},{'model':'ZendeskField','as':_0x30c8('0xc'),'attributes':['id',_0x30c8('0x8'),_0x30c8('0xd'),_0x30c8('0xe')],'include':[{'model':'Variable','as':_0x30c8('0xf'),'attributes':['id',_0x30c8('0x3')]}]},{'model':_0x30c8('0x10'),'as':_0x30c8('0x11'),'attributes':['id','type','content',_0x30c8('0x12'),'keyType',_0x30c8('0x13'),_0x30c8('0xe')],'include':[{'model':_0x30c8('0xf'),'as':_0x30c8('0xf'),'attributes':['id',_0x30c8('0x3')]}]},{'model':'ZendeskField','as':_0x30c8('0x14'),'attributes':['id',_0x30c8('0x8'),_0x30c8('0xd'),_0x30c8('0x15'),_0x30c8('0x16'),'customField',_0x30c8('0xe')],'include':[{'model':_0x30c8('0xf'),'as':_0x30c8('0xf'),'attributes':['id',_0x30c8('0x3')]}]}]}]},'log':_0x30c8('0x17')});};};
\ No newline at end of file
+var _0x01ce=['token','remoteUri','serverUrl','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','key','keyType','keyContent','Fields','nameField','GetZendeskAccount','../../client','getZendeskAccounts','Request','name','password'];(function(_0x267382,_0x101697){var _0x342ec1=function(_0x50b9c1){while(--_0x50b9c1){_0x267382['push'](_0x267382['shift']());}};_0x342ec1(++_0x101697);}(_0x01ce,0x154));var _0xe01c=function(_0x3a7837,_0x141f31){_0x3a7837=_0x3a7837-0x0;var _0x4317ab=_0x01ce[_0x3a7837];return _0x4317ab;};'use strict';var client=require(_0xe01c('0x0'));exports[_0xe01c('0x1')]=function(){return function(_0x471d4b){return client[_0xe01c('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0xe01c('0x3'),'username',_0xe01c('0x4'),_0xe01c('0x5'),_0xe01c('0x6'),'authType',_0xe01c('0x7'),_0xe01c('0x8')],'include':[{'model':_0xe01c('0x9'),'as':_0xe01c('0xa'),'attributes':['id','name'],'include':[{'model':_0xe01c('0xb'),'attributes':['id',_0xe01c('0x3')]},{'model':_0xe01c('0xc'),'as':_0xe01c('0xd'),'attributes':['id','type',_0xe01c('0xe'),_0xe01c('0xf')],'include':[{'model':_0xe01c('0x10'),'as':_0xe01c('0x10'),'attributes':['id',_0xe01c('0x3')]}]},{'model':_0xe01c('0xc'),'as':'Descriptions','attributes':['id',_0xe01c('0x8'),'content',_0xe01c('0x11'),_0xe01c('0x12'),_0xe01c('0x13'),_0xe01c('0xf')],'include':[{'model':_0xe01c('0x10'),'as':_0xe01c('0x10'),'attributes':['id',_0xe01c('0x3')]}]},{'model':'ZendeskField','as':_0xe01c('0x14'),'attributes':['id',_0xe01c('0x8'),_0xe01c('0xe'),'idField',_0xe01c('0x15'),'customField',_0xe01c('0xf')],'include':[{'model':_0xe01c('0x10'),'as':_0xe01c('0x10'),'attributes':['id',_0xe01c('0x3')]}]}]}]},'log':_0xe01c('0x16')});};};
\ No newline at end of file
index 7fd1005..c7fb004 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0def=['Configurations','name','moduleCreate','moduleSearch','description','ZohoField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','idField','customField','GetZohoAccount','../../client','getZohoAccounts','host','zone','clientId','clientSecret','serverUrl','refreshToken','ZohoConfiguration'];(function(_0x2cbb74,_0x241c10){var _0xa6d18=function(_0x5a2940){while(--_0x5a2940){_0x2cbb74['push'](_0x2cbb74['shift']());}};_0xa6d18(++_0x241c10);}(_0x0def,0xd7));var _0xf0de=function(_0x37ffea,_0x25b006){_0x37ffea=_0x37ffea-0x0;var _0x2e2615=_0x0def[_0x37ffea];return _0x2e2615;};'use strict';var client=require(_0xf0de('0x0'));exports[_0xf0de('0x1')]=function(){return function(_0x524f4c){return client['Request']('GetZohoAccount',{'options':{'raw':![],'attributes':['id','name','description',_0xf0de('0x2'),_0xf0de('0x3'),_0xf0de('0x4'),_0xf0de('0x5'),_0xf0de('0x6'),'code',_0xf0de('0x7')],'include':[{'model':_0xf0de('0x8'),'as':_0xf0de('0x9'),'attributes':['id',_0xf0de('0xa'),_0xf0de('0xb'),_0xf0de('0xc'),_0xf0de('0xd')],'include':[{'model':_0xf0de('0xe'),'as':_0xf0de('0xf'),'attributes':['id',_0xf0de('0x10'),'content',_0xf0de('0x11')],'include':[{'model':'Variable','as':_0xf0de('0x12'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0xf0de('0x13'),'attributes':['id',_0xf0de('0x10'),_0xf0de('0x14'),_0xf0de('0x15'),_0xf0de('0x16'),_0xf0de('0x17'),'variableName'],'include':[{'model':'Variable','as':_0xf0de('0x12'),'attributes':['id',_0xf0de('0xa')]}]},{'model':'ZohoField','as':_0xf0de('0x18'),'attributes':['id',_0xf0de('0x10'),_0xf0de('0x14'),_0xf0de('0x19'),'nameField',_0xf0de('0x1a'),_0xf0de('0x11')],'include':[{'model':'Variable','as':_0xf0de('0x12'),'attributes':['id',_0xf0de('0xa')]}]}]}]},'log':_0xf0de('0x1b')});};};
\ No newline at end of file
+var _0xb4d9=['zone','clientId','clientSecret','code','refreshToken','Configurations','moduleCreate','moduleSearch','Subjects','type','content','Descriptions','key','keyType','variableName','Variable','ZohoField','Fields','idField','customField','getZohoAccounts','GetZohoAccount','name','description','host'];(function(_0x48ac84,_0x57e151){var _0x42734a=function(_0x5dc42d){while(--_0x5dc42d){_0x48ac84['push'](_0x48ac84['shift']());}};_0x42734a(++_0x57e151);}(_0xb4d9,0x127));var _0x9b4d=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xb4d9[_0x59ee6f];return _0x4c0979;};'use strict';var client=require('../../client');exports[_0x9b4d('0x0')]=function(){return function(_0x36bbad){return client['Request'](_0x9b4d('0x1'),{'options':{'raw':![],'attributes':['id',_0x9b4d('0x2'),_0x9b4d('0x3'),_0x9b4d('0x4'),_0x9b4d('0x5'),_0x9b4d('0x6'),_0x9b4d('0x7'),'serverUrl',_0x9b4d('0x8'),_0x9b4d('0x9')],'include':[{'model':'ZohoConfiguration','as':_0x9b4d('0xa'),'attributes':['id',_0x9b4d('0x2'),_0x9b4d('0xb'),_0x9b4d('0xc'),_0x9b4d('0x3')],'include':[{'model':'ZohoField','as':_0x9b4d('0xd'),'attributes':['id',_0x9b4d('0xe'),_0x9b4d('0xf'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x9b4d('0x2')]}]},{'model':'ZohoField','as':_0x9b4d('0x10'),'attributes':['id',_0x9b4d('0xe'),'content',_0x9b4d('0x11'),_0x9b4d('0x12'),'keyContent',_0x9b4d('0x13')],'include':[{'model':_0x9b4d('0x14'),'as':_0x9b4d('0x14'),'attributes':['id',_0x9b4d('0x2')]}]},{'model':_0x9b4d('0x15'),'as':_0x9b4d('0x16'),'attributes':['id','type','content',_0x9b4d('0x17'),'nameField',_0x9b4d('0x18'),'variableName'],'include':[{'model':_0x9b4d('0x14'),'as':_0x9b4d('0x14'),'attributes':['id','name']}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 56e2c3e..69078c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0a=['starttime','outbound','dialstring','lodash','util','../client','queuecallercompleteAt','queuecallerexitAt','Request','voice','isNil','interface','format','SIP/%s','lastAssignedTo','TALKING','queuecallerleaveAt','seconds','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','membername','endtime','diff'];(function(_0x381c62,_0x5462e3){var _0x36d06e=function(_0x7b850b){while(--_0x7b850b){_0x381c62['push'](_0x381c62['shift']());}};_0x36d06e(++_0x5462e3);}(_0x0b0a,0xb7));var _0xa0b0=function(_0x2f0c1a,_0x259a11){_0x2f0c1a=_0x2f0c1a-0x0;var _0x254a78=_0x0b0a[_0x2f0c1a];return _0x254a78;};'use strict';var moment=require('moment');var _=require(_0xa0b0('0x0'));var util=require(_0xa0b0('0x1'));var client=require(_0xa0b0('0x2'));exports['voiceQueueReport']=function(_0x59200d){var _0x262230=_0x59200d[_0xa0b0('0x3')]||_0x59200d[_0xa0b0('0x4')];return client[_0xa0b0('0x5')]('CreateMemberReport',{'body':{'channel':_0xa0b0('0x6'),'membername':_0x59200d['lastAssignedTo'],'interface':_[_0xa0b0('0x7')](_0x59200d[_0xa0b0('0x8')])?util[_0xa0b0('0x9')](_0xa0b0('0xa'),_0x59200d[_0xa0b0('0xb')]):_0x59200d[_0xa0b0('0x8')],'type':_0xa0b0('0xc'),'enterAt':_0x59200d[_0xa0b0('0xd')],'exitAt':_0x262230,'duration':moment(_0x262230)['diff'](_0x59200d[_0xa0b0('0xd')],_0xa0b0('0xe')),'data1':'inbound','data2':_0x59200d[_0xa0b0('0xf')],'data3':_0x59200d[_0xa0b0('0x10')],'data4':null,'data5':_0x59200d[_0xa0b0('0x11')],'role':_0xa0b0('0x12'),'internal':_0x59200d[_0xa0b0('0x13')]?_[_0xa0b0('0x14')](_0x59200d['accountcode']):undefined,'uniqueid':_0x59200d[_0xa0b0('0x15')]},'log':_0xa0b0('0x16')});};exports[_0xa0b0('0x17')]=function(_0x2f9933){return client[_0xa0b0('0x5')](_0xa0b0('0x16'),{'body':{'channel':_0xa0b0('0x6'),'membername':_0x2f9933[_0xa0b0('0x18')],'interface':_0x2f9933['interface'],'type':_0xa0b0('0xc'),'enterAt':_0x2f9933['starttime'],'exitAt':_0x2f9933[_0xa0b0('0x19')],'duration':moment(_0x2f9933[_0xa0b0('0x19')])[_0xa0b0('0x1a')](_0x2f9933['starttime'],'seconds')>=0x0?moment(_0x2f9933[_0xa0b0('0x19')])[_0xa0b0('0x1a')](_0x2f9933[_0xa0b0('0x1b')],_0xa0b0('0xe')):null,'data1':_0xa0b0('0x1c'),'data2':_0x2f9933['accountcode'],'data3':_0x2f9933[_0xa0b0('0x10')],'data4':_0x2f9933[_0xa0b0('0x1d')]||null,'role':'agent','internal':_0x2f9933['accountcode']?_[_0xa0b0('0x14')](_0x2f9933[_0xa0b0('0x13')]):undefined,'uniqueid':_0x2f9933['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0xefb2=['../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','format','SIP/%s','TALKING','queuecallerleaveAt','diff','inbound','calleridnum','queue','agent','accountcode','uniqueid','voiceDialReport','voice','membername','interface','starttime','endtime','seconds','outbound','exten','dialstring','moment','lodash','util'];(function(_0x598d48,_0x5137d8){var _0x3daf49=function(_0x337e78){while(--_0x337e78){_0x598d48['push'](_0x598d48['shift']());}};_0x3daf49(++_0x5137d8);}(_0xefb2,0x129));var _0x2efb=function(_0x1a61c1,_0x2f064d){_0x1a61c1=_0x1a61c1-0x0;var _0x2240bf=_0xefb2[_0x1a61c1];return _0x2240bf;};'use strict';var moment=require(_0x2efb('0x0'));var _=require(_0x2efb('0x1'));var util=require(_0x2efb('0x2'));var client=require(_0x2efb('0x3'));exports[_0x2efb('0x4')]=function(_0x38a94a){var _0x460a2f=_0x38a94a['queuecallercompleteAt']||_0x38a94a[_0x2efb('0x5')];return client[_0x2efb('0x6')](_0x2efb('0x7'),{'body':{'channel':'voice','membername':_0x38a94a[_0x2efb('0x8')],'interface':_['isNil'](_0x38a94a['interface'])?util[_0x2efb('0x9')](_0x2efb('0xa'),_0x38a94a['lastAssignedTo']):_0x38a94a['interface'],'type':_0x2efb('0xb'),'enterAt':_0x38a94a[_0x2efb('0xc')],'exitAt':_0x460a2f,'duration':moment(_0x460a2f)[_0x2efb('0xd')](_0x38a94a[_0x2efb('0xc')],'seconds'),'data1':_0x2efb('0xe'),'data2':_0x38a94a[_0x2efb('0xf')],'data3':_0x38a94a['exten'],'data4':null,'data5':_0x38a94a[_0x2efb('0x10')],'role':_0x2efb('0x11'),'internal':_0x38a94a['accountcode']?_['toNumber'](_0x38a94a[_0x2efb('0x12')]):undefined,'uniqueid':_0x38a94a[_0x2efb('0x13')]},'log':_0x2efb('0x7')});};exports[_0x2efb('0x14')]=function(_0x3c7383){return client['Request']('CreateMemberReport',{'body':{'channel':_0x2efb('0x15'),'membername':_0x3c7383[_0x2efb('0x16')],'interface':_0x3c7383[_0x2efb('0x17')],'type':_0x2efb('0xb'),'enterAt':_0x3c7383[_0x2efb('0x18')],'exitAt':_0x3c7383[_0x2efb('0x19')],'duration':moment(_0x3c7383[_0x2efb('0x19')])['diff'](_0x3c7383[_0x2efb('0x18')],_0x2efb('0x1a'))>=0x0?moment(_0x3c7383[_0x2efb('0x19')])['diff'](_0x3c7383[_0x2efb('0x18')],'seconds'):null,'data1':_0x2efb('0x1b'),'data2':_0x3c7383[_0x2efb('0x12')],'data3':_0x3c7383[_0x2efb('0x1c')],'data4':_0x3c7383[_0x2efb('0x1d')]||null,'role':'agent','internal':_0x3c7383['accountcode']?_['toNumber'](_0x3c7383[_0x2efb('0x12')]):undefined,'uniqueid':_0x3c7383['uniqueid']},'log':_0x2efb('0x7')});};
\ No newline at end of file
index 01a9c55..e3abe62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['../client','Request','stopRecordingOnTransfer','previewRecallmeReminderInterval'];(function(_0x751ce6,_0x360bfc){var _0x472985=function(_0x401eb9){while(--_0x401eb9){_0x751ce6['push'](_0x751ce6['shift']());}};_0x472985(++_0x360bfc);}(_0xfef3,0x118));var _0x3fef=function(_0x1d7c31,_0x1c7d35){_0x1d7c31=_0x1d7c31-0x0;var _0xfbe999=_0xfef3[_0x1d7c31];return _0xfbe999;};'use strict';var client=require(_0x3fef('0x0'));exports['getSettings']=function(){return client[_0x3fef('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x3fef('0x2'),_0x3fef('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x3d45=['Request','ShowSetting','stopRecordingOnTransfer','GetSettings','../client','getSettings'];(function(_0x379090,_0x2f27dd){var _0x465d1b=function(_0x57bcd3){while(--_0x57bcd3){_0x379090['push'](_0x379090['shift']());}};_0x465d1b(++_0x2f27dd);}(_0x3d45,0x1d2));var _0x53d4=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x3d45[_0x110c3d];return _0x226d67;};'use strict';var client=require(_0x53d4('0x0'));exports[_0x53d4('0x1')]=function(){return client[_0x53d4('0x2')](_0x53d4('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x53d4('0x4'),'previewRecallmeReminderInterval']},'log':_0x53d4('0x5')});};
\ No newline at end of file
index 21c63d0..6fd5870 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b1=['Request','GetTemplate','../client','getTemplates'];(function(_0x217dcb,_0x32bb50){var _0x3a2710=function(_0x40f1d7){while(--_0x40f1d7){_0x217dcb['push'](_0x217dcb['shift']());}};_0x3a2710(++_0x32bb50);}(_0x68b1,0x13a));var _0x168b=function(_0x2d48cc,_0x580ac2){_0x2d48cc=_0x2d48cc-0x0;var _0xadc2e9=_0x68b1[_0x2d48cc];return _0xadc2e9;};'use strict';var client=require(_0x168b('0x0'));exports[_0x168b('0x1')]=function(_0x266229){return function(_0x118ab0){return client[_0x168b('0x2')](_0x168b('0x3'),{'options':{'raw':!![],'attributes':['id','name','html']},'log':_0x168b('0x3')});};};
\ No newline at end of file
+var _0x830c=['html','../client','getTemplates','Request','GetTemplate','name'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x830c,0xf7));var _0xc830=function(_0x534412,_0x25125e){_0x534412=_0x534412-0x0;var _0x5bc2d5=_0x830c[_0x534412];return _0x5bc2d5;};'use strict';var client=require(_0xc830('0x0'));exports[_0xc830('0x1')]=function(_0x26b520){return function(_0xe81911){return client[_0xc830('0x2')](_0xc830('0x3'),{'options':{'raw':!![],'attributes':['id',_0xc830('0x4'),_0xc830('0x5')]},'log':_0xc830('0x3')});};};
\ No newline at end of file
index 685fef6..7ca0842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3db=['data3','data4','data6','data7','../client','getTriggers','Request','GetTrigger','channel','Condition','field','operator','value','AnyConditions','Actions','data2'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0xf3db,0x104));var _0xbf3d=function(_0x35e85a,_0x475893){_0x35e85a=_0x35e85a-0x0;var _0x2199e3=_0xf3db[_0x35e85a];return _0x2199e3;};'use strict';var client=require(_0xbf3d('0x0'));exports[_0xbf3d('0x1')]=function(_0x4028d8){return function(_0x107dd5){return client[_0xbf3d('0x2')](_0xbf3d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xbf3d('0x4'),'status'],'include':[{'model':_0xbf3d('0x5'),'as':'AllConditions','attributes':['id',_0xbf3d('0x6'),_0xbf3d('0x7'),_0xbf3d('0x8')]},{'model':_0xbf3d('0x5'),'as':_0xbf3d('0x9'),'attributes':['id',_0xbf3d('0x6'),'operator',_0xbf3d('0x8')]},{'model':'Action','as':_0xbf3d('0xa'),'attributes':['id','action','data1',_0xbf3d('0xb'),_0xbf3d('0xc'),_0xbf3d('0xd'),'data5',_0xbf3d('0xe'),_0xbf3d('0xf')]}]},'log':_0xbf3d('0x3')});};};
\ No newline at end of file
+var _0x1462=['Condition','AllConditions','field','operator','AnyConditions','value','Actions','action','data1','data2','data3','data5','getTriggers','Request','GetTrigger','name','channel','status'];(function(_0x3a8b9b,_0x4b1728){var _0x1a3bba=function(_0x37a74e){while(--_0x37a74e){_0x3a8b9b['push'](_0x3a8b9b['shift']());}};_0x1a3bba(++_0x4b1728);}(_0x1462,0xc0));var _0x2146=function(_0x15682b,_0x315ac1){_0x15682b=_0x15682b-0x0;var _0x5188b0=_0x1462[_0x15682b];return _0x5188b0;};'use strict';var client=require('../client');exports[_0x2146('0x0')]=function(_0xcc041c){return function(_0xe84429){return client[_0x2146('0x1')](_0x2146('0x2'),{'options':{'raw':![],'attributes':['id',_0x2146('0x3'),_0x2146('0x4'),_0x2146('0x5')],'include':[{'model':_0x2146('0x6'),'as':_0x2146('0x7'),'attributes':['id',_0x2146('0x8'),_0x2146('0x9'),'value']},{'model':_0x2146('0x6'),'as':_0x2146('0xa'),'attributes':['id',_0x2146('0x8'),_0x2146('0x9'),_0x2146('0xb')]},{'model':'Action','as':_0x2146('0xc'),'attributes':['id',_0x2146('0xd'),_0x2146('0xe'),_0x2146('0xf'),_0x2146('0x10'),'data4',_0x2146('0x11'),'data6','data7']}]},'log':_0x2146('0x2')});};};
\ No newline at end of file
index 3c7d919..f2d76de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7762=['defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0x2fee96,_0x2f735d){var _0x2e6ad1=function(_0x2c55ad){while(--_0x2c55ad){_0x2fee96['push'](_0x2fee96['shift']());}};_0x2e6ad1(++_0x2f735d);}(_0x7762,0x17b));var _0x2776=function(_0x5773e7,_0x435e69){_0x5773e7=_0x5773e7-0x0;var _0x5e6621=_0x7762[_0x5773e7];return _0x5e6621;};'use strict';var client=require(_0x2776('0x0'));exports[_0x2776('0x1')]=function(_0x3030fe){return function(_0x567bc4){return client[_0x2776('0x2')](_0x2776('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x2776('0x4'),'registry',_0x2776('0x5')]},'log':_0x2776('0x3')});};};
\ No newline at end of file
+var _0x1666=['Request','GetTrunk','name','registry','defaultuser','../client','getTrunks'];(function(_0x2ee65e,_0x1f97fc){var _0x5975d6=function(_0x691d6e){while(--_0x691d6e){_0x2ee65e['push'](_0x2ee65e['shift']());}};_0x5975d6(++_0x1f97fc);}(_0x1666,0x75));var _0x6166=function(_0xd8efd7,_0x2e064f){_0xd8efd7=_0xd8efd7-0x0;var _0x167526=_0x1666[_0xd8efd7];return _0x167526;};'use strict';var client=require(_0x6166('0x0'));exports[_0x6166('0x1')]=function(_0x4f60ad){return function(_0x18af67){return client[_0x6166('0x2')](_0x6166('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x6166('0x4'),_0x6166('0x5'),_0x6166('0x6')]},'log':_0x6166('0x3')});};};
\ No newline at end of file
index 9cdbab2..534ef54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
+var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x72300f,_0x88f9f1){var _0x501d14=function(_0x465444){while(--_0x465444){_0x72300f['push'](_0x72300f['shift']());}};_0x501d14(++_0x88f9f1);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x48ec91,_0x212edc){_0x48ec91=_0x48ec91-0x0;var _0x22766c=_0xcb91[_0x48ec91];return _0x22766c;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
index 2e87c7b..9da319d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x389b=['UpdateVoiceAgentReport','create','Request','CreateVoiceAgentReport','update'];(function(_0x553bf0,_0xb07bc5){var _0x443764=function(_0x46c525){while(--_0x46c525){_0x553bf0['push'](_0x553bf0['shift']());}};_0x443764(++_0xb07bc5);}(_0x389b,0x1e1));var _0xb389=function(_0x1d34e3,_0x4f5844){_0x1d34e3=_0x1d34e3-0x0;var _0x34266b=_0x389b[_0x1d34e3];return _0x34266b;};'use strict';var client=require('../client');exports[_0xb389('0x0')]=function(_0x5cc11e){return client[_0xb389('0x1')]('CreateVoiceAgentReport',{'body':_0x5cc11e,'log':_0xb389('0x2')});};exports[_0xb389('0x3')]=function(_0xc3ecc,_0x208278,_0x5f32b8){return client[_0xb389('0x1')]('UpdateVoiceAgentReport',{'body':_0xc3ecc,'options':{'where':{'uniqueid':_0x208278,'interface':_0x5f32b8,'agentcomplete':!![]}},'log':_0xb389('0x4')});};
\ No newline at end of file
+var _0x75c8=['Request','update','UpdateVoiceAgentReport','../client','create'];(function(_0x17aa7a,_0x2be8e4){var _0x2321f8=function(_0x2324fc){while(--_0x2324fc){_0x17aa7a['push'](_0x17aa7a['shift']());}};_0x2321f8(++_0x2be8e4);}(_0x75c8,0x1c5));var _0x875c=function(_0x3e28d8,_0x15dc27){_0x3e28d8=_0x3e28d8-0x0;var _0x40d50d=_0x75c8[_0x3e28d8];return _0x40d50d;};'use strict';var client=require(_0x875c('0x0'));exports[_0x875c('0x1')]=function(_0x2e9b07){return client[_0x875c('0x2')]('CreateVoiceAgentReport',{'body':_0x2e9b07,'log':'CreateVoiceAgentReport'});};exports[_0x875c('0x3')]=function(_0x411fee,_0x1fb87,_0x2f35f5){return client[_0x875c('0x2')](_0x875c('0x4'),{'body':_0x411fee,'options':{'where':{'uniqueid':_0x1fb87,'interface':_0x2f35f5,'agentcomplete':!![]}},'log':_0x875c('0x4')});};
\ No newline at end of file
index 6baea9b..93fcefc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f2e=['util','lodash','create','Request','merge','context','getVoiceCallReports','GetVoiceCallReport','startOf','day','YYYY-MM-DD\x20HH:mm:ss','endOf','format','type','disposition','duration','billableseconds','GetVoiceCallReports','moment'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x0f2e,0x142));var _0xe0f2=function(_0x502ca3,_0x36be36){_0x502ca3=_0x502ca3-0x0;var _0x27f42c=_0x0f2e[_0x502ca3];return _0x27f42c;};'use strict';var moment=require(_0xe0f2('0x0'));var util=require(_0xe0f2('0x1'));var _=require(_0xe0f2('0x2'));var client=require('../client');exports[_0xe0f2('0x3')]=function(_0x2aa076){return client[_0xe0f2('0x4')]('CreateVoiceCallReport',{'body':_[_0xe0f2('0x5')](_0x2aa076,{'source':_0x2aa076['calleridnum'],'destinationcontext':_0x2aa076[_0xe0f2('0x6')],'callerid':_0x2aa076['callerid'],'amaflags':'DOCUMENTATION'}),'log':'CreateVoiceCallReport'});};exports[_0xe0f2('0x7')]=function(){return function(){return client[_0xe0f2('0x4')](_0xe0f2('0x8'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0xe0f2('0x9')](_0xe0f2('0xa'))['format'](_0xe0f2('0xb')),moment()[_0xe0f2('0xc')](_0xe0f2('0xa'))[_0xe0f2('0xd')](_0xe0f2('0xb'))]}},'attributes':[_0xe0f2('0xe'),_0xe0f2('0xf'),_0xe0f2('0x10'),_0xe0f2('0x11')]},'log':_0xe0f2('0x12')});};};
\ No newline at end of file
+var _0xcd25=['day','format','endOf','type','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','Request','CreateVoiceCallReport','merge','context','callerid','DOCUMENTATION','getVoiceCallReports','outbound'];(function(_0x391a42,_0x34f07f){var _0x268d09=function(_0x1ae080){while(--_0x1ae080){_0x391a42['push'](_0x391a42['shift']());}};_0x268d09(++_0x34f07f);}(_0xcd25,0x133));var _0x5cd2=function(_0x3488f2,_0x445819){_0x3488f2=_0x3488f2-0x0;var _0x307105=_0xcd25[_0x3488f2];return _0x307105;};'use strict';var moment=require(_0x5cd2('0x0'));var util=require(_0x5cd2('0x1'));var _=require(_0x5cd2('0x2'));var client=require(_0x5cd2('0x3'));exports[_0x5cd2('0x4')]=function(_0x8892da){return client[_0x5cd2('0x5')](_0x5cd2('0x6'),{'body':_[_0x5cd2('0x7')](_0x8892da,{'source':_0x8892da['calleridnum'],'destinationcontext':_0x8892da[_0x5cd2('0x8')],'callerid':_0x8892da[_0x5cd2('0x9')],'amaflags':_0x5cd2('0xa')}),'log':_0x5cd2('0x6')});};exports[_0x5cd2('0xb')]=function(){return function(){return client[_0x5cd2('0x5')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x5cd2('0xc')],'createdAt':{'$between':[moment()['startOf'](_0x5cd2('0xd'))[_0x5cd2('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x5cd2('0xf')](_0x5cd2('0xd'))[_0x5cd2('0xe')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x5cd2('0x10'),'disposition',_0x5cd2('0x11'),_0x5cd2('0x12')]},'log':_0x5cd2('0x13')});};};
\ No newline at end of file
index 92c8f7c..be4de43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d3=['create','CreateVoiceDialReport'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x20d3,0xde));var _0x320d=function(_0x56eba5,_0x53e6c3){_0x56eba5=_0x56eba5-0x0;var _0x479d30=_0x20d3[_0x56eba5];return _0x479d30;};'use strict';var client=require('../client');exports[_0x320d('0x0')]=function(_0x1d28de){return client['Request'](_0x320d('0x1'),{'body':_0x1d28de,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x3c9a=['CreateVoiceDialReport','Request'];(function(_0xc955bb,_0x3fd222){var _0x3c296f=function(_0x4f6372){while(--_0x4f6372){_0xc955bb['push'](_0xc955bb['shift']());}};_0x3c296f(++_0x3fd222);}(_0x3c9a,0x1cb));var _0xa3c9=function(_0x5e8917,_0x3a1df5){_0x5e8917=_0x5e8917-0x0;var _0x20374a=_0x3c9a[_0x5e8917];return _0x20374a;};'use strict';var client=require('../client');exports['create']=function(_0x60fe79){return client[_0xa3c9('0x0')](_0xa3c9('0x1'),{'body':_0x60fe79,'log':_0xa3c9('0x1')});};
\ No newline at end of file
index 30151cc..2411038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aea=['recordingFormat','../client','Request','exten'];(function(_0x33c9f8,_0x5aedbb){var _0x2d7004=function(_0x4f4f43){while(--_0x4f4f43){_0x33c9f8['push'](_0x33c9f8['shift']());}};_0x2d7004(++_0x5aedbb);}(_0x9aea,0xdd));var _0xa9ae=function(_0xd2af0f,_0x5ade6d){_0xd2af0f=_0xd2af0f-0x0;var _0x567078=_0x9aea[_0xd2af0f];return _0x567078;};'use strict';var client=require(_0xa9ae('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0xa9ae('0x1')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0xa9ae('0x2'),_0xa9ae('0x3')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0xa699=['getVoiceExtensions','Request','GetVoiceExtension','exten','recordingFormat','../client'];(function(_0x5a95fa,_0x4a2fc9){var _0x1a61b8=function(_0x59f119){while(--_0x59f119){_0x5a95fa['push'](_0x5a95fa['shift']());}};_0x1a61b8(++_0x4a2fc9);}(_0xa699,0x6b));var _0x9a69=function(_0x3598bb,_0x24befa){_0x3598bb=_0x3598bb-0x0;var _0x13c837=_0xa699[_0x3598bb];return _0x13c837;};'use strict';var client=require(_0x9a69('0x0'));exports[_0x9a69('0x1')]=function(){return function(){return client[_0x9a69('0x2')](_0x9a69('0x3'),{'options':{'raw':!![],'attributes':['id',_0x9a69('0x4'),_0x9a69('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x9a69('0x1')});};};
\ No newline at end of file
index 9901922..615a0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c8d=['Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialActive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDGreeting','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','active','mandatoryDispositionPause','callerid'];(function(_0x334c50,_0x1f11d0){var _0x524766=function(_0x5066de){while(--_0x5066de){_0x334c50['push'](_0x334c50['shift']());}};_0x524766(++_0x1f11d0);}(_0x9c8d,0x177));var _0xd9c8=function(_0xb36565,_0x2bc9b0){_0xb36565=_0xb36565-0x0;var _0x82bb87=_0x9c8d[_0xb36565];return _0x82bb87;};'use strict';var client=require(_0xd9c8('0x0'));exports[_0xd9c8('0x1')]=function(){return function(){return client[_0xd9c8('0x2')](_0xd9c8('0x3'),{'options':{'raw':![],'attributes':['id',_0xd9c8('0x4'),_0xd9c8('0x5'),_0xd9c8('0x6'),'autopause',_0xd9c8('0x7'),_0xd9c8('0x8'),_0xd9c8('0x9'),'dialMethod',_0xd9c8('0xa'),_0xd9c8('0xb'),_0xd9c8('0xc'),_0xd9c8('0xd'),_0xd9c8('0xe'),'dialPredictiveInterval',_0xd9c8('0xf'),_0xd9c8('0x10'),'dialOriginateTimeout',_0xd9c8('0x11'),_0xd9c8('0x12'),_0xd9c8('0x13'),_0xd9c8('0x14'),'dialCongestionRetryFrequency',_0xd9c8('0x15'),_0xd9c8('0x16'),'dialNoAnswerMaxRetry',_0xd9c8('0x17'),'dialGlobalMaxRetry',_0xd9c8('0x18'),_0xd9c8('0x19'),_0xd9c8('0x1a'),_0xd9c8('0x1b'),'dialAMDActive',_0xd9c8('0x1c'),_0xd9c8('0x1d'),'dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime',_0xd9c8('0x1e'),_0xd9c8('0x1f'),_0xd9c8('0x20'),_0xd9c8('0x21'),_0xd9c8('0x22'),_0xd9c8('0x23'),_0xd9c8('0x24'),_0xd9c8('0x25'),'dialOrderByScheduledAt','dialAgiAfterHangupAgent',_0xd9c8('0x26'),_0xd9c8('0x27'),_0xd9c8('0x7'),_0xd9c8('0x28'),_0xd9c8('0x29'),_0xd9c8('0x2a'),_0xd9c8('0x2b'),_0xd9c8('0x2c'),_0xd9c8('0x2d'),_0xd9c8('0x2e'),'dialAbandonedMaxRetry',_0xd9c8('0x2f'),'dialMachineMaxRetry',_0xd9c8('0x30'),_0xd9c8('0x31'),'dialAgentRejectRetryFrequency',_0xd9c8('0x32'),_0xd9c8('0x33'),_0xd9c8('0x34'),_0xd9c8('0x35'),_0xd9c8('0x36')],'include':[{'model':_0xd9c8('0x37'),'as':_0xd9c8('0x37'),'attributes':['id',_0xd9c8('0x4'),'callerid',_0xd9c8('0x38')]},{'model':'Pause','as':_0xd9c8('0x39'),'attributes':['id',_0xd9c8('0x4')]},{'model':_0xd9c8('0x37'),'as':'TrunkBackup','attributes':['id',_0xd9c8('0x4'),_0xd9c8('0x3a'),_0xd9c8('0x38')]},{'model':_0xd9c8('0x3b'),'as':'Interval','attributes':['id',_0xd9c8('0x4')],'include':[{'model':'Interval','as':_0xd9c8('0x3c'),'attributes':['id','name',_0xd9c8('0x3d')]}]}]},'log':_0xd9c8('0x1')});};};
\ No newline at end of file
+var _0xe79d=['dialAgiAfterHangupClient','dialQueueProject2','strategy','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','name','acw','monitor_format','type','dialMethod','dialLimitQueue','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt'];(function(_0x8686c9,_0x305a8f){var _0x1dc90c=function(_0x4f9da1){while(--_0x4f9da1){_0x8686c9['push'](_0x8686c9['shift']());}};_0x1dc90c(++_0x305a8f);}(_0xe79d,0x90));var _0xde79=function(_0x3352d4,_0xe5cf04){_0x3352d4=_0x3352d4-0x0;var _0x1931db=_0xe79d[_0x3352d4];return _0x1931db;};'use strict';var client=require(_0xde79('0x0'));exports[_0xde79('0x1')]=function(){return function(){return client[_0xde79('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0xde79('0x3'),_0xde79('0x4'),'acwTimeout','autopause',_0xde79('0x5'),_0xde79('0x6'),'dialActive',_0xde79('0x7'),'dialLimitChannel',_0xde79('0x8'),_0xde79('0x9'),'dialPredictiveOptimization',_0xde79('0xa'),_0xde79('0xb'),_0xde79('0xc'),'dialOriginateCallerIdNumber',_0xde79('0xd'),'dialQueueOptions',_0xde79('0xe'),'dialQueueProject',_0xde79('0xf'),_0xde79('0x10'),_0xde79('0x11'),_0xde79('0x12'),_0xde79('0x13'),'dialNoAnswerRetryFrequency',_0xde79('0x14'),'dialTimezone',_0xde79('0x15'),_0xde79('0x16'),'dialCheckDuplicateType',_0xde79('0x17'),_0xde79('0x18'),_0xde79('0x19'),_0xde79('0x1a'),_0xde79('0x1b'),_0xde79('0x1c'),_0xde79('0x1d'),_0xde79('0x1e'),'dialAMDSilenceThreshold',_0xde79('0x1f'),_0xde79('0x20'),_0xde79('0x21'),_0xde79('0x22'),_0xde79('0x23'),'dialAgiAfterHangupAgent',_0xde79('0x24'),_0xde79('0x25'),_0xde79('0x5'),_0xde79('0x26'),'dialRandomLastDigitCallerIdNumber',_0xde79('0x27'),_0xde79('0x28'),_0xde79('0x29'),_0xde79('0x2a'),_0xde79('0x2b'),_0xde79('0x2c'),'dialAbandonedRetryFrequency',_0xde79('0x2d'),_0xde79('0x2e'),_0xde79('0x2f'),_0xde79('0x30'),_0xde79('0x31'),_0xde79('0x32'),_0xde79('0x33'),'dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin'],'include':[{'model':'Trunk','as':_0xde79('0x34'),'attributes':['id',_0xde79('0x3'),_0xde79('0x35'),_0xde79('0x36')]},{'model':'Pause','as':_0xde79('0x37'),'attributes':['id',_0xde79('0x3')]},{'model':_0xde79('0x34'),'as':_0xde79('0x38'),'attributes':['id',_0xde79('0x3'),_0xde79('0x35'),_0xde79('0x36')]},{'model':_0xde79('0x39'),'as':_0xde79('0x39'),'attributes':['id',_0xde79('0x3')],'include':[{'model':_0xde79('0x39'),'as':_0xde79('0x3a'),'attributes':['id',_0xde79('0x3'),_0xde79('0x3b')]}]}]},'log':_0xde79('0x1')});};};
\ No newline at end of file
index eba9be1..3dc0ea3 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(_0x4626c6,_0x5a7b78){var _0x3a9f4d=function(_0x6adac1){while(--_0x6adac1){_0x4626c6['push'](_0x4626c6['shift']());}};_0x3a9f4d(++_0x5a7b78);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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(_0x3f8961,_0x44acc2){var _0x3b3d5c=function(_0x93cde6){while(--_0x93cde6){_0x3f8961['push'](_0x3f8961['shift']());}};_0x3b3d5c(++_0x44acc2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 795a5f8..ed31fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacbc=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0xd32f1a,_0x3bdea6){var _0x2c0f54=function(_0x37554f){while(--_0x37554f){_0xd32f1a['push'](_0xd32f1a['shift']());}};_0x2c0f54(++_0x3bdea6);}(_0xacbc,0x78));var _0xcacb=function(_0x9d14e3,_0x5a6072){_0x9d14e3=_0x9d14e3-0x0;var _0x19bf32=_0xacbc[_0x9d14e3];return _0x19bf32;};'use strict';var client=require('../client');exports[_0xcacb('0x0')]=function(_0x30e6b0){return function(){return client[_0xcacb('0x1')](_0xcacb('0x2'),{'options':{'where':{'VoiceQueueId':_0x30e6b0,'paused':!![]},'raw':!![]},'log':_0xcacb('0x0')});};};
\ No newline at end of file
+var _0x55b9=['../client','Request','GetVoiceQueueRtPauses','getVoiceQueueRtPauses'];(function(_0x788c48,_0x5c0e5e){var _0x299c14=function(_0x6be4c){while(--_0x6be4c){_0x788c48['push'](_0x788c48['shift']());}};_0x299c14(++_0x5c0e5e);}(_0x55b9,0x8c));var _0x955b=function(_0x5b1de0,_0x5af2b2){_0x5b1de0=_0x5b1de0-0x0;var _0x698a86=_0x55b9[_0x5b1de0];return _0x698a86;};'use strict';var client=require(_0x955b('0x0'));exports['getVoiceQueueRtPauses']=function(_0x3e191e){return function(){return client[_0x955b('0x1')](_0x955b('0x2'),{'options':{'where':{'VoiceQueueId':_0x3e191e,'paused':!![]},'raw':!![]},'log':_0x955b('0x3')});};};
\ No newline at end of file
index 61d9650..de7c5fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x3c9ce9,_0x36a004){var _0x526d4b=function(_0x573dda){while(--_0x573dda){_0x3c9ce9['push'](_0x3c9ce9['shift']());}};_0x526d4b(++_0x36a004);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'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(_0x155f92,_0x56666f){var _0xb810b8=function(_0x4dbd79){while(--_0x4dbd79){_0x155f92['push'](_0x155f92['shift']());}};_0xb810b8(++_0x56666f);}(_0x7a54,0x106));var _0x47a5=function(_0x57fedd,_0x2c0bcb){_0x57fedd=_0x57fedd-0x0;var _0x155dbd=_0x7a54[_0x57fedd];return _0x155dbd;};'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 0c91858..d42b703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb05f=['transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','context','blind','CreateVoiceTransferReport','attendedTransfer','result','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetaccountcode','transfertargetcontext','isexternal','origtransferercontext','transfers','blindTransfer','Request','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum'];(function(_0x383946,_0x455c99){var _0x19bb4b=function(_0xfe4e83){while(--_0xfe4e83){_0x383946['push'](_0x383946['shift']());}};_0x19bb4b(++_0x455c99);}(_0xb05f,0x8b));var _0xfb05=function(_0x4bbdb2,_0x2fb1be){_0x4bbdb2=_0x4bbdb2-0x0;var _0x331e7a=_0xb05f[_0x4bbdb2];return _0x331e7a;};'use strict';var client=require('../client');exports[_0xfb05('0x0')]={};exports[_0xfb05('0x1')]=function(_0x4c2891){return client[_0xfb05('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x4c2891['result'],'transfererchannel':_0x4c2891[_0xfb05('0x3')],'transferercalleridnum':_0x4c2891[_0xfb05('0x4')],'transferercalleridname':_0x4c2891[_0xfb05('0x5')],'transfererconnectedlinenum':_0x4c2891['transfererconnectedlinenum'],'transfererconnectedlinename':_0x4c2891[_0xfb05('0x6')],'transfereraccountcode':_0x4c2891['transfereraccountcode'],'transferercontext':_0x4c2891[_0xfb05('0x7')],'transfererexten':_0x4c2891[_0xfb05('0x8')],'transfererlinkedid':_0x4c2891[_0xfb05('0x9')],'transfereechannel':_0x4c2891[_0xfb05('0xa')],'transfereecalleridnum':_0x4c2891[_0xfb05('0xb')],'transfereecalleridname':_0x4c2891['transfereecalleridname'],'transfereeconnectedlinenum':_0x4c2891[_0xfb05('0xc')],'transfereeconnectedlinename':_0x4c2891[_0xfb05('0xd')],'transfereeaccountcode':_0x4c2891[_0xfb05('0xe')],'transfereecontext':_0x4c2891[_0xfb05('0xf')],'transfereeexten':_0x4c2891['transfereeexten'],'transfereelinkedid':_0x4c2891[_0xfb05('0x10')],'isexternal':_0x4c2891['isexternal'],'context':_0x4c2891[_0xfb05('0x11')],'extension':_0x4c2891['extension'],'type':_0xfb05('0x12')},'log':_0xfb05('0x13')});};exports[_0xfb05('0x14')]=function(_0x543d99){return client[_0xfb05('0x2')](_0xfb05('0x13'),{'body':{'result':_0x543d99[_0xfb05('0x15')],'transfererchannel':_0x543d99[_0xfb05('0x16')],'transferercalleridnum':_0x543d99[_0xfb05('0x17')],'transferercalleridname':_0x543d99[_0xfb05('0x18')],'transfererconnectedlinenum':_0x543d99[_0xfb05('0x19')],'transfererconnectedlinename':_0x543d99[_0xfb05('0x1a')],'transfereraccountcode':_0x543d99[_0xfb05('0x1b')],'transferercontext':_0x543d99[_0xfb05('0x1c')],'transfererexten':_0x543d99[_0xfb05('0x1d')],'transfererlinkedid':_0x543d99[_0xfb05('0x1e')],'transfereechannel':_0x543d99[_0xfb05('0x1f')],'transfereecalleridnum':_0x543d99[_0xfb05('0x20')],'transfereecalleridname':_0x543d99[_0xfb05('0x21')],'transfereeconnectedlinenum':_0x543d99['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x543d99['transfertargetconnectedlinename'],'transfereeaccountcode':_0x543d99[_0xfb05('0x22')],'transfereecontext':_0x543d99[_0xfb05('0x23')],'transfereeexten':_0x543d99['transfertargetexten'],'transfereelinkedid':_0x543d99['transfertargetlinkedid'],'isexternal':_0x543d99[_0xfb05('0x24')],'context':_0x543d99[_0xfb05('0x25')],'extension':_0x543d99['origtransfererexten'],'type':'attended'},'log':_0xfb05('0x13')});};
\ No newline at end of file
+var _0x2c89=['transfereeexten','isexternal','context','blind','result','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridnum','transfertargetconnectedlinename','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','transfers','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeaccountcode','transfereecontext'];(function(_0xaa3653,_0x1d9f02){var _0x146ef2=function(_0x21b7b1){while(--_0x21b7b1){_0xaa3653['push'](_0xaa3653['shift']());}};_0x146ef2(++_0x1d9f02);}(_0x2c89,0x17d));var _0x92c8=function(_0x9c161f,_0x3fe043){_0x9c161f=_0x9c161f-0x0;var _0x163fd8=_0x2c89[_0x9c161f];return _0x163fd8;};'use strict';var client=require('../client');exports[_0x92c8('0x0')]={};exports['blindTransfer']=function(_0x1fe546){return client[_0x92c8('0x1')](_0x92c8('0x2'),{'body':{'result':_0x1fe546['result'],'transfererchannel':_0x1fe546[_0x92c8('0x3')],'transferercalleridnum':_0x1fe546[_0x92c8('0x4')],'transferercalleridname':_0x1fe546[_0x92c8('0x5')],'transfererconnectedlinenum':_0x1fe546[_0x92c8('0x6')],'transfererconnectedlinename':_0x1fe546[_0x92c8('0x7')],'transfereraccountcode':_0x1fe546['transfereraccountcode'],'transferercontext':_0x1fe546[_0x92c8('0x8')],'transfererexten':_0x1fe546['transfererexten'],'transfererlinkedid':_0x1fe546[_0x92c8('0x9')],'transfereechannel':_0x1fe546[_0x92c8('0xa')],'transfereecalleridnum':_0x1fe546[_0x92c8('0xb')],'transfereecalleridname':_0x1fe546[_0x92c8('0xc')],'transfereeconnectedlinenum':_0x1fe546['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x1fe546['transfereeconnectedlinename'],'transfereeaccountcode':_0x1fe546[_0x92c8('0xd')],'transfereecontext':_0x1fe546[_0x92c8('0xe')],'transfereeexten':_0x1fe546[_0x92c8('0xf')],'transfereelinkedid':_0x1fe546['transfereelinkedid'],'isexternal':_0x1fe546[_0x92c8('0x10')],'context':_0x1fe546[_0x92c8('0x11')],'extension':_0x1fe546['extension'],'type':_0x92c8('0x12')},'log':_0x92c8('0x2')});};exports['attendedTransfer']=function(_0x7476c1){return client[_0x92c8('0x1')]('CreateVoiceTransferReport',{'body':{'result':_0x7476c1[_0x92c8('0x13')],'transfererchannel':_0x7476c1[_0x92c8('0x14')],'transferercalleridnum':_0x7476c1['origtransferercalleridnum'],'transferercalleridname':_0x7476c1[_0x92c8('0x15')],'transfererconnectedlinenum':_0x7476c1['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x7476c1[_0x92c8('0x16')],'transfereraccountcode':_0x7476c1[_0x92c8('0x17')],'transferercontext':_0x7476c1['secondtransferercontext'],'transfererexten':_0x7476c1[_0x92c8('0x18')],'transfererlinkedid':_0x7476c1[_0x92c8('0x19')],'transfereechannel':_0x7476c1['transfertargetchannel'],'transfereecalleridnum':_0x7476c1[_0x92c8('0x1a')],'transfereecalleridname':_0x7476c1['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x7476c1['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x7476c1[_0x92c8('0x1b')],'transfereeaccountcode':_0x7476c1['transfertargetaccountcode'],'transfereecontext':_0x7476c1['transfertargetcontext'],'transfereeexten':_0x7476c1[_0x92c8('0x1c')],'transfereelinkedid':_0x7476c1[_0x92c8('0x1d')],'isexternal':_0x7476c1[_0x92c8('0x10')],'context':_0x7476c1[_0x92c8('0x1e')],'extension':_0x7476c1[_0x92c8('0x1f')],'type':_0x92c8('0x20')},'log':_0x92c8('0x2')});};
\ No newline at end of file
index bba9f87..dbd3a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x247b=['validate','map','find','uniqueid','channel','format','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','status','stop','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','Hangup','exten','context','telephones','trunks','outboundChannels','outbound','campaigns','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','checkAfterSend','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','../../../config/environment','../properties','../ami','../model/voiceQueueSummary','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','keys','reload','module','action','Reload','Action','message','catch','join','pick','command','then','content','voiceQueues','hasOwnProperty','push','length','omit','undefined','values','channels','voicechannel'];(function(_0x4370ad,_0xe8e404){var _0xa16b6=function(_0x34a1c6){while(--_0x34a1c6){_0x4370ad['push'](_0x4370ad['shift']());}};_0xa16b6(++_0xe8e404);}(_0x247b,0xe2));var _0xb247=function(_0x39d9ce,_0x172a7a){_0x39d9ce=_0x39d9ce-0x0;var _0x219153=_0x247b[_0x39d9ce];return _0x219153;};'use strict';var _=require('lodash');var util=require('util');var jayson=require(_0xb247('0x0'));var schema=require('validate');var moment=require('moment');var config=require(_0xb247('0x1'));var properties=require(_0xb247('0x2'));var ami=require(_0xb247('0x3'));var VoiceQueueSummary=require(_0xb247('0x4'));exports['listen']=function(_0x4cfecc,_0x5461a1,_0x1a2390){return new Promise(function(_0x3cddeb,_0x452df8){var _0xfcc2e1={'QueuePause':function(_0x9a5716){return new Promise(function(_0x58084d){var _0x2cadb2=util['format']('%s/%s',_0xb247('0x5'),_0x9a5716[_0xb247('0x6')]);if(_0x4cfecc[_0xb247('0x7')]&&_0x4cfecc[_0xb247('0x7')][_0x2cadb2]&&_0x4cfecc[_0xb247('0x7')][_0x2cadb2][_0xb247('0x8')]){_0x4cfecc[_0xb247('0x7')][_0x2cadb2][_0xb247('0x9')]();}if(_0x4cfecc[_0xb247('0xa')][_0x2cadb2]){_0x4cfecc[_0xb247('0xa')][_0x2cadb2][_0xb247('0xb')]({'statePause':_0x9a5716[_0xb247('0xc')]?!![]:![]});}_0x58084d({'code':0xc8,'message':_0xb247('0xd')});});},'Reload':function(_0x2c7137){var _0x413b6b=this;return new Promise(function(_0x13a083,_0x420a8d){if(ami[_0xb247('0xe')]()==![]){return _0x420a8d(_0x413b6b[_0xb247('0xf')](0x1f4,[config['asterisk']['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')]['join']('\x20')));}_0x2c7137=_['pick'](_0x2c7137,_[_0xb247('0x13')](properties[_0xb247('0x14')][_0xb247('0x15')]));_0x2c7137[_0xb247('0x16')]=_0xb247('0x17');return ami[_0xb247('0x18')](_0x2c7137)['then'](function(_0x104d42){_0x13a083({'code':0xc8,'message':_0x104d42[_0xb247('0x19')]});})[_0xb247('0x1a')](function(_0x5ca0a7){_0x420a8d(_0x413b6b['error'](0x1f5,_0x5ca0a7['message']));});});},'Command':function(_0x3a1e73){var _0x45252c=this;return new Promise(function(_0x4802bb,_0x14c3cd){if(ami[_0xb247('0xe')]()==![]){return _0x14c3cd(_0x45252c[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}_0x3a1e73=_[_0xb247('0x1c')](_0x3a1e73,_0xb247('0x1d'));_0x3a1e73[_0xb247('0x16')]='Command';return ami[_0xb247('0x18')](_0x3a1e73)[_0xb247('0x1e')](function(_0x583827){_0x4802bb({'code':0xc8,'message':_0x583827[_0xb247('0x1f')]});})[_0xb247('0x1a')](function(_0x2a5abc){_0x14c3cd(_0x45252c[_0xb247('0xf')](0x1f5,_0x2a5abc[_0xb247('0x19')]));});});},'VoiceQueues':function(){return new Promise(function(_0x2670f0){var _0x62bef=[];for(var _0x3ce8f2 in _0x4cfecc[_0xb247('0x20')]){if(_0x4cfecc['voiceQueues'][_0xb247('0x21')](_0x3ce8f2)){var _0x3b71a7=_0x4cfecc[_0xb247('0x20')][_0x3ce8f2];var _0x1e3199=new VoiceQueueSummary(_0x3b71a7);_0x62bef[_0xb247('0x22')](_0x1e3199);}}_0x2670f0({'count':_0x62bef[_0xb247('0x23')],'rows':_0x62bef});});},'UpdateVoiceQueue':function(_0x135b47){return new Promise(function(_0x47325d,_0x27210f){var _0x4a0c9d=_['find'](_0x4cfecc[_0xb247('0x20')],{'id':parseInt(_0x135b47['id'])});var _0x28dd9c=_[_0xb247('0x24')](_0x135b47,['id']);if(_0x4a0c9d){for(var _0x1ec09f in _0x28dd9c){if(typeof _0x28dd9c[_0x1ec09f]!==_0xb247('0x25')&&typeof _0x4a0c9d[_0x1ec09f]!=='undefined'){_0x4a0c9d[_0x1ec09f]=_0x28dd9c[_0x1ec09f];}}_0x47325d(_0x4a0c9d);}else{_0x27210f();}});},'VoiceChannels':function(){return new Promise(function(_0x1c027a){var _0x541a00=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x27')]);_0x1c027a({'count':_0x541a00['length'],'rows':_0x541a00});});},'VoiceChannelMixMonitor':function(_0x1e3e4d){var _0x28fb2d=this;return new Promise(function(_0x35fc93,_0x563998){if(ami[_0xb247('0xe')]()==![]){return _0x563998(_0x28fb2d['error'](0x1f4,[config['asterisk']['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}var _0x338004=schema(properties[_0xb247('0x28')])[_0xb247('0x29')](_0x1e3e4d);if(_0x338004['length']>0x0){return _0x563998(_0x28fb2d[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x338004,'message')[_0xb247('0x1b')](',\x20')));}var _0x24b46f=_[_0xb247('0x2b')](_0x4cfecc[_0xb247('0x27')],{'uniqueid':_0x1e3e4d[_0xb247('0x2c')]});if(_0x24b46f&&_0x24b46f[_0xb247('0x2d')]){var _0x223ea9=util[_0xb247('0x2e')](_0xb247('0x2f'),_0x1e3e4d[_0xb247('0x30')]||_0x1e3e4d[_0xb247('0x2c')],_0x1e3e4d['format']||_0xb247('0x31'));return ami[_0xb247('0x18')]({'action':_0xb247('0x32'),'channel':_0x24b46f[_0xb247('0x2d')],'file':_0x223ea9,'options':_0xb247('0x33')})['then'](function(_0x5df23a){var _0x5884d0=_[_0xb247('0x2b')](_0x24b46f[_0xb247('0x34')],{'filename':_0xb247('0x35')+_0x223ea9[_0xb247('0x36')]()});if(_[_0xb247('0x37')](_0x5884d0)){_0x24b46f['monitors'][_0xb247('0x22')]({'filename':'/var/spool/asterisk/monitor/'+_0x223ea9[_0xb247('0x36')](),'createdAt':moment()[_0xb247('0x2e')](_0xb247('0x38')),'mixmonitorid':_0x5df23a[_0xb247('0x39')],'status':'rec'});}else{_0x5884d0[_0xb247('0x39')]=_0x5df23a[_0xb247('0x39')];_0x5884d0['status']='rec';}_0x35fc93({'code':0xc8,'message':[_0x1e3e4d[_0xb247('0x2c')],_0xb247('0x3a'),_0x5df23a['mixmonitorid']]['join']('\x20'),'mixmonitorid':_0x5df23a[_0xb247('0x39')]});})['catch'](function(_0x4d4e75){_0x563998(_0x28fb2d[_0xb247('0xf')](0x1f5,[_0x1e3e4d[_0xb247('0x2c')],_0x4d4e75[_0xb247('0x19')][_0xb247('0x36')]()][_0xb247('0x1b')]('\x20')));});}else{return _0x563998(_0x28fb2d[_0xb247('0xf')](0x1f5,_0xb247('0x3b')));}});},'VoiceChannelStopMixMonitor':function(_0x50fb12){var _0x2d3ef1=this;return new Promise(function(_0x36307c,_0xfb9e8e){if(ami[_0xb247('0xe')]()==![]){return _0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}var _0x36411d=schema(properties[_0xb247('0x28')])['validate'](_0x50fb12);if(_0x36411d[_0xb247('0x23')]>0x0){return _0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x36411d,_0xb247('0x19'))[_0xb247('0x1b')](',\x20')));}var _0x411fa3=_[_0xb247('0x2b')](_0x4cfecc[_0xb247('0x27')],{'uniqueid':_0x50fb12[_0xb247('0x2c')]});if(_0x411fa3){return Promise[_0xb247('0x3c')]()[_0xb247('0x1e')](function(){if(_0x411fa3[_0xb247('0x2d')]){return ami[_0xb247('0x18')]({'action':_0xb247('0x3d'),'channel':_0x411fa3['channel'],'mixmonitorid':_0x50fb12['mixmonitorid']})[_0xb247('0x1a')](function(){});}})[_0xb247('0x1e')](function(){if(_0x411fa3['destinationchannel']){return ami[_0xb247('0x18')]({'action':'StopMixMonitor','channel':_0x411fa3[_0xb247('0x3e')],'mixmonitorid':_0x50fb12[_0xb247('0x39')]})[_0xb247('0x1a')](function(){});}})[_0xb247('0x1e')](function(){var _0x30edab=_['find'](_0x411fa3[_0xb247('0x34')],{'mixmonitorid':_0x50fb12[_0xb247('0x39')]});if(_0x30edab){_0x30edab[_0xb247('0x3f')]=_0xb247('0x40');}})[_0xb247('0x1e')](function(){var _0xe7af04=util[_0xb247('0x2e')]('%s.%s',_0x50fb12[_0xb247('0x30')]||_0x50fb12[_0xb247('0x2c')],_0x50fb12[_0xb247('0x2e')]||_0xb247('0x31'));var _0x506a86=_['find'](_0x411fa3['monitors'],{'filename':_0xb247('0x35')+_0xe7af04[_0xb247('0x36')]()});if(_0x506a86){_0x506a86['status']=_0xb247('0x40');}})[_0xb247('0x1e')](function(){_0x36307c({'code':0xc8,'message':[_0x50fb12[_0xb247('0x2c')],_0xb247('0x41')][_0xb247('0x1b')]('\x20')});})[_0xb247('0x1a')](function(_0x587f23){_0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f5,[_0x50fb12[_0xb247('0x2c')],_0x587f23[_0xb247('0x19')][_0xb247('0x36')]()]['join']('\x20')));});}else{return _0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f5,_0xb247('0x3b')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x10a35d){var _0x25dd13=_[_0xb247('0x26')](_0x4cfecc['queueChannels']);_0x10a35d({'count':_0x25dd13[_0xb247('0x23')],'rows':_0x25dd13});});},'VoiceQueuesChannel':function(_0x1f1f15){var _0x2e061e=this;return new Promise(function(_0x10919b,_0x353566){var _0x398549=schema(properties[_0xb247('0x42')])[_0xb247('0x29')](_0x1f1f15);if(_0x398549[_0xb247('0x23')]>0x0){return _0x353566(_0x2e061e[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x398549,_0xb247('0x19'))['join'](',\x20')));}var _0x328d4e=_[_0xb247('0x2b')](_0x4cfecc[_0xb247('0x43')],{'uniqueid':_0x1f1f15[_0xb247('0x2c')]});if(_0x328d4e){_0x10919b(_0x328d4e);}else{return _0x353566(_0x2e061e[_0xb247('0xf')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x2dfc65){var _0x5178f7=this;return new Promise(function(_0x33580b,_0x470add){if(ami['isConnected']()==![]){return _0x470add(_0x5178f7[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}var _0x515777=schema(properties['voicequeuechannelhangup'])[_0xb247('0x29')](_0x2dfc65);if(_0x515777[_0xb247('0x23')]>0x0){return _0x470add(_0x5178f7[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x515777,_0xb247('0x19'))[_0xb247('0x1b')](',\x20')));}var _0x5ef2ad=_[_0xb247('0x2b')](_0x4cfecc['queueChannels'],{'uniqueid':_0x2dfc65[_0xb247('0x2c')]});if(_0x5ef2ad&&_0x5ef2ad[_0xb247('0x2d')]){return ami[_0xb247('0x18')]({'action':_0xb247('0x44'),'channel':_0x5ef2ad['channel']})[_0xb247('0x1e')](function(_0xb3d44b){_0x33580b({'code':0xc8,'message':[_0x2dfc65[_0xb247('0x2c')],_0xb3d44b[_0xb247('0x19')][_0xb247('0x36')]()][_0xb247('0x1b')]('\x20')});})['catch'](function(_0x15cfa8){_0x470add(_0x5178f7[_0xb247('0xf')](0x1f5,[_0x2dfc65[_0xb247('0x2c')],_0x15cfa8[_0xb247('0x19')]['toLowerCase']()]['join']('\x20')));});}else{return _0x470add(_0x5178f7['error'](0x1f5,_0xb247('0x3b')));}});},'VoiceQueuesChannelRedirect':function(_0x59052e){var _0xe769ca=this;return new Promise(function(_0x1a8e25,_0x20ae2d){if(ami[_0xb247('0xe')]()==![]){return _0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config['asterisk'][_0xb247('0x11')],'ami\x20disconnected'][_0xb247('0x1b')]('\x20')));}var _0x10aeef=schema(properties['voicequeuechannelredirect'])[_0xb247('0x29')](_0x59052e);if(_0x10aeef[_0xb247('0x23')]>0x0){return _0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x10aeef,_0xb247('0x19'))['join'](',\x20')));}var _0x420e15=_[_0xb247('0x2b')](_0x4cfecc['queueChannels'],{'uniqueid':_0x59052e[_0xb247('0x2c')]});if(_0x420e15&&_0x420e15[_0xb247('0x2d')]){return ami[_0xb247('0x18')]({'action':'Redirect','channel':_0x420e15[_0xb247('0x2d')],'exten':_0x59052e[_0xb247('0x45')],'context':_0x59052e[_0xb247('0x46')]||_0x420e15['context'],'priority':0x1})[_0xb247('0x1e')](function(_0x4f65fa){_0x1a8e25({'code':0xc8,'message':[_0x59052e['uniqueid'],_0x4f65fa['message'][_0xb247('0x36')]()][_0xb247('0x1b')]('\x20')});})[_0xb247('0x1a')](function(_0x25f8d0){_0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f5,[_0x59052e['uniqueid'],_0x25f8d0[_0xb247('0x19')]['toLowerCase']()]['join']('\x20')));});}else{return _0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f5,_0xb247('0x3b')));}});},'Agents':function(_0x5df804){return new Promise(function(_0x19677a){var _0x3019bf=_['values'](_0x4cfecc['agents']);if(_0x5df804&&_0x5df804['id']){var _0x47a322=_['find'](_0x3019bf,function(_0x153eb8){return _0x153eb8['id']===_0x5df804['id'];});_0x19677a(_0x47a322);}else{_0x19677a({'count':_0x3019bf['length'],'rows':_0x3019bf});}});},'Telephones':function(){return new Promise(function(_0x3dea0a){var _0x2d0203=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x47')]);_0x3dea0a({'count':_0x2d0203[_0xb247('0x23')],'rows':_0x2d0203});});},'Trunks':function(){return new Promise(function(_0x5b7133){var _0x535cee=_['values'](_0x4cfecc[_0xb247('0x48')]);_0x5b7133({'count':_0x535cee['length'],'rows':_0x535cee});});},'OutboundChannels':function(){return new Promise(function(_0x583ff4){var _0x223e81=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x49')]);_0x583ff4({'count':_0x223e81[_0xb247('0x23')],'rows':_0x223e81});});},'Outbound':function(){return new Promise(function(_0x1a43f0){_0x1a43f0(_0x4cfecc[_0xb247('0x4a')]);});},'Campaigns':function(){return new Promise(function(_0x2941bd){var _0x25ede2=_['values'](_0x4cfecc[_0xb247('0x4b')]);_0x2941bd({'count':_0x25ede2['length'],'rows':_0x25ede2});});},'VoiceQueuesPreview':function(_0x4ad3a2){var _0x51ad35=this;return new Promise(function(_0x2a0400,_0x22d767){_0x5461a1['run'](_0x4ad3a2['id'])[_0xb247('0x1e')](function(_0x533b24){_0x2a0400({'code':0xc8,'message':_0x533b24[_0xb247('0x19')]});})[_0xb247('0x1a')](function(_0x538584){_0x22d767(_0x51ad35[_0xb247('0xf')](0x1f4,_0x538584[_0xb247('0x19')]));});});},'EventManager':function(_0x7472ee){var _0x23a75e=this;return new Promise(function(_0x385eea,_0x36eb73){if(!_0x7472ee[_0xb247('0x4c')]){return _0x36eb73(_0x23a75e[_0xb247('0xf')](0x1f4,_0xb247('0x4d')));}ami[_0xb247('0x4e')](_0xb247('0x4f')+_0x7472ee[_0xb247('0x4c')],_0x7472ee[_0xb247('0x19')]);_0x385eea({'code':0xc8,'message':_0x7472ee});});},'FaxAccounts':function(){return new Promise(function(_0x2ec44d){var _0x9b5557=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x50')]);_0x2ec44d({'count':_0x9b5557[_0xb247('0x23')],'rows':_0x9b5557});});},'SendFax':function(_0x3da8db){var _0x22d19e=this;return new Promise(function(_0x142794,_0x32a4ce){_0x1a2390[_0xb247('0x51')](_0x3da8db)['then'](function(_0x3d2f3a){_0x142794({'code':0xc8,'message':_0x3d2f3a['message']});})[_0xb247('0x1a')](function(_0x38852a){_0x32a4ce(_0x22d19e[_0xb247('0xf')](0x1f4,_0x38852a[_0xb247('0x19')]));});});},'CheckAfterSend':function(_0x5c6669){var _0x7b6788=this;return new Promise(function(_0x374d2c,_0x9c5ed6){_0x1a2390[_0xb247('0x52')](_0x5c6669)[_0xb247('0x1e')](function(_0x254850){_0x374d2c({'code':0xc8,'message':_0x254850['message']});})[_0xb247('0x1a')](function(_0x434fab){_0x9c5ed6(_0x7b6788['error'](0x1f4,_0x434fab[_0xb247('0x19')]));});});}};var _0x478277=jayson['server'](_0xfcc2e1)[_0xb247('0x53')]();_0x478277['on']('error',function(_0x683ac8){return _0x452df8(_0x683ac8);});_0x478277[_0xb247('0x54')](0x232a,_0xb247('0x55'),function(){console[_0xb247('0x56')](_0xb247('0x57'),0x232a);return _0x3cddeb(_0xb247('0x58')+0x232a);});});};
\ No newline at end of file
+var _0xab40=['outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','push','length','omit','undefined','channels','voicechannel','validate','map','find','channel','%s.%s','format','wav','ai(mixmonitorid)','monitors','toLowerCase','/var/spool/asterisk/monitor/','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','uniqueid','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','StopMixMonitor','destinationchannel','stop','filename','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','values','telephones','trunks','outbound','campaigns','run','event','emit','custom:','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','../../../config/environment','../properties','../ami','listen','name','timers','timer','updateAcw','agents','pause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','then','message','command','Command','catch','voiceQueues','available','pTalking','sumBillable','total','type','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay'];(function(_0x426192,_0x47cf62){var _0x38f134=function(_0x1eb0fc){while(--_0x1eb0fc){_0x426192['push'](_0x426192['shift']());}};_0x38f134(++_0x47cf62);}(_0xab40,0xcd));var _0x0ab4=function(_0x64ad1c,_0x31f3c5){_0x64ad1c=_0x64ad1c-0x0;var _0x5ee769=_0xab40[_0x64ad1c];return _0x5ee769;};'use strict';var _=require(_0x0ab4('0x0'));var util=require(_0x0ab4('0x1'));var jayson=require('jayson/promise');var schema=require('validate');var moment=require('moment');var config=require(_0x0ab4('0x2'));var properties=require(_0x0ab4('0x3'));var ami=require(_0x0ab4('0x4'));exports[_0x0ab4('0x5')]=function(_0x14634a,_0x57fac1,_0x5f01aa){return new Promise(function(_0x28b17a,_0x4ba9d2){var _0x10d92b={'QueuePause':function(_0x46d16a){return new Promise(function(_0x11e99f){var _0x6d135d=util['format']('%s/%s','SIP',_0x46d16a[_0x0ab4('0x6')]);if(_0x14634a[_0x0ab4('0x7')]&&_0x14634a[_0x0ab4('0x7')][_0x6d135d]&&_0x14634a[_0x0ab4('0x7')][_0x6d135d][_0x0ab4('0x8')]){_0x14634a[_0x0ab4('0x7')][_0x6d135d][_0x0ab4('0x9')]();}if(_0x14634a[_0x0ab4('0xa')][_0x6d135d]){_0x14634a['agents'][_0x6d135d]['updateStatusRealtime']({'statePause':_0x46d16a[_0x0ab4('0xb')]?!![]:![]});}_0x11e99f({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x249dc3){var _0x45e6fd=this;return new Promise(function(_0x1e7555,_0x1e2b56){if(ami[_0x0ab4('0xc')]()==![]){return _0x1e2b56(_0x45e6fd[_0x0ab4('0xd')](0x1f4,[config[_0x0ab4('0xe')]['ip'],config[_0x0ab4('0xe')][_0x0ab4('0xf')],_0x0ab4('0x10')][_0x0ab4('0x11')]('\x20')));}_0x249dc3=_[_0x0ab4('0x12')](_0x249dc3,_[_0x0ab4('0x13')](properties[_0x0ab4('0x14')]));_0x249dc3[_0x0ab4('0x15')]=_0x0ab4('0x16');return ami[_0x0ab4('0x17')](_0x249dc3)[_0x0ab4('0x18')](function(_0x4f37b6){_0x1e7555({'code':0xc8,'message':_0x4f37b6['message']});})['catch'](function(_0x17422f){_0x1e2b56(_0x45e6fd[_0x0ab4('0xd')](0x1f5,_0x17422f[_0x0ab4('0x19')]));});});},'Command':function(_0x53723c){var _0x1e3fe2=this;return new Promise(function(_0x13ea9f,_0x212ebd){if(ami[_0x0ab4('0xc')]()==![]){return _0x212ebd(_0x1e3fe2['error'](0x1f4,[config['asterisk']['ip'],config[_0x0ab4('0xe')]['username'],_0x0ab4('0x10')][_0x0ab4('0x11')]('\x20')));}_0x53723c=_['pick'](_0x53723c,_0x0ab4('0x1a'));_0x53723c[_0x0ab4('0x15')]=_0x0ab4('0x1b');return ami[_0x0ab4('0x17')](_0x53723c)[_0x0ab4('0x18')](function(_0x52d7d3){_0x13ea9f({'code':0xc8,'message':_0x52d7d3['content']});})[_0x0ab4('0x1c')](function(_0x14087f){_0x212ebd(_0x1e3fe2[_0x0ab4('0xd')](0x1f5,_0x14087f[_0x0ab4('0x19')]));});});},'VoiceQueues':function(){return new Promise(function(_0x4e4b80){var _0x42d2dd=[];for(var _0x3caa9d in _0x14634a[_0x0ab4('0x1d')]){if(_0x14634a['voiceQueues']['hasOwnProperty'](_0x3caa9d)){var _0x176ff1=_0x14634a[_0x0ab4('0x1d')][_0x3caa9d];var _0x1a17ce={'id':_0x176ff1['id'],'name':_0x176ff1['name'],'strategy':_0x176ff1['strategy'],'answered':_0x176ff1['answered'],'available':_0x176ff1[_0x0ab4('0x1e')],'loggedIn':_0x176ff1['loggedIn'],'pTalking':_0x176ff1[_0x0ab4('0x1f')],'sumBillable':_0x176ff1[_0x0ab4('0x20')],'sumDuration':_0x176ff1['sumDuration'],'sumHoldTime':_0x176ff1['sumHoldTime']||0x0,'talking':_0x176ff1['talking'],'total':_0x176ff1[_0x0ab4('0x21')],'type':_0x176ff1[_0x0ab4('0x22')],'unmanaged':_0x176ff1[_0x0ab4('0x23')],'abandoned':_0x176ff1[_0x0ab4('0x24')],'waiting':_0x176ff1[_0x0ab4('0x25')],'loggedInDb':_0x176ff1['loggedInDb']};if(_0x176ff1['type']==='outbound'){_0x1a17ce[_0x0ab4('0x26')]=_0x176ff1[_0x0ab4('0x26')];_0x1a17ce[_0x0ab4('0x27')]=_0x176ff1[_0x0ab4('0x27')];_0x1a17ce[_0x0ab4('0x28')]=_0x176ff1['dialOriginateCallerIdName'];_0x1a17ce['dialOriginateCallerIdNumber']=_0x176ff1[_0x0ab4('0x29')];_0x1a17ce[_0x0ab4('0x2a')]=_0x176ff1[_0x0ab4('0x2a')];_0x1a17ce['dialPrefix']=_0x176ff1['dialPrefix'];_0x1a17ce[_0x0ab4('0x2b')]=_0x176ff1['temp'];_0x1a17ce[_0x0ab4('0x2c')]=_0x176ff1[_0x0ab4('0x2c')];_0x1a17ce[_0x0ab4('0x2d')]=_0x176ff1[_0x0ab4('0x2d')];_0x1a17ce[_0x0ab4('0x2e')]=_0x176ff1[_0x0ab4('0x2e')];_0x1a17ce['outboundBusyCallsDay']=_0x176ff1[_0x0ab4('0x2f')];_0x1a17ce[_0x0ab4('0x30')]=_0x176ff1[_0x0ab4('0x30')];_0x1a17ce[_0x0ab4('0x31')]=_0x176ff1['outboundDropCallsDayACS'];_0x1a17ce['outboundDropCallsDayCallersExit']=_0x176ff1[_0x0ab4('0x32')];_0x1a17ce[_0x0ab4('0x33')]=_0x176ff1[_0x0ab4('0x33')];_0x1a17ce['outboundNoAnswerCallsDay']=_0x176ff1['outboundNoAnswerCallsDay'];_0x1a17ce['outboundNoSuchCallsDay']=_0x176ff1[_0x0ab4('0x34')];_0x1a17ce[_0x0ab4('0x35')]=_0x176ff1[_0x0ab4('0x35')];_0x1a17ce['outboundReCallsDay']=_0x176ff1['outboundReCallsDay'];_0x1a17ce['outboundRejectCallsDay']=_0x176ff1[_0x0ab4('0x36')];_0x1a17ce[_0x0ab4('0x37')]=_0x176ff1[_0x0ab4('0x37')];_0x1a17ce[_0x0ab4('0x38')]=_0x176ff1[_0x0ab4('0x38')];_0x1a17ce[_0x0ab4('0x39')]=_0x176ff1[_0x0ab4('0x39')];_0x1a17ce[_0x0ab4('0x3a')]=_0x176ff1[_0x0ab4('0x3a')];_0x1a17ce[_0x0ab4('0x3b')]=_0x176ff1['predictiveIntervalDroppedCallsCallersExit'];_0x1a17ce[_0x0ab4('0x3c')]=_0x176ff1[_0x0ab4('0x3c')];_0x1a17ce[_0x0ab4('0x3d')]=_0x176ff1[_0x0ab4('0x3d')];_0x1a17ce[_0x0ab4('0x3e')]=_0x176ff1[_0x0ab4('0x3e')];_0x1a17ce[_0x0ab4('0x3f')]=_0x176ff1[_0x0ab4('0x3f')];_0x1a17ce[_0x0ab4('0x40')]=_0x176ff1[_0x0ab4('0x40')];_0x1a17ce[_0x0ab4('0x41')]=_0x176ff1[_0x0ab4('0x41')];_0x1a17ce['predictiveIntervalAvailable']=_0x176ff1[_0x0ab4('0x42')];_0x1a17ce[_0x0ab4('0x43')]=_0x176ff1[_0x0ab4('0x43')];_0x1a17ce[_0x0ab4('0x19')]=_0x176ff1['message'];_0x1a17ce[_0x0ab4('0x44')]=_0x176ff1['originated'];_0x1a17ce[_0x0ab4('0x45')]=_0x176ff1[_0x0ab4('0x45')];_0x1a17ce[_0x0ab4('0x46')]=_0x176ff1[_0x0ab4('0x46')];_0x1a17ce[_0x0ab4('0x47')]=_0x176ff1[_0x0ab4('0x47')];_0x1a17ce['erlangBusyFactor']=_0x176ff1[_0x0ab4('0x48')];_0x1a17ce[_0x0ab4('0x49')]=_0x176ff1[_0x0ab4('0x49')];_0x1a17ce['startProgressive']=_0x176ff1[_0x0ab4('0x4a')];}if(_0x176ff1[_0x0ab4('0x4b')]){_0x1a17ce[_0x0ab4('0x4b')]={'id':_0x176ff1[_0x0ab4('0x4b')]['id'],'name':_0x176ff1[_0x0ab4('0x4b')]['name'],'active':_0x176ff1['Trunk']['active'],'callerid':_0x176ff1[_0x0ab4('0x4b')][_0x0ab4('0x4c')]};}if(_0x176ff1['Interval']){_0x1a17ce[_0x0ab4('0x4d')]={'id':_0x176ff1['Interval']['id'],'name':_0x176ff1[_0x0ab4('0x4d')]['name']};}_0x42d2dd[_0x0ab4('0x4e')](_0x1a17ce);}}_0x4e4b80({'count':_0x42d2dd[_0x0ab4('0x4f')],'rows':_0x42d2dd});});},'UpdateVoiceQueue':function(_0x2872b0){return new Promise(function(_0x188eb7,_0x1e01a7){var _0x14dc1d=_['find'](_0x14634a[_0x0ab4('0x1d')],{'id':parseInt(_0x2872b0['id'])});var _0xfb61b8=_[_0x0ab4('0x50')](_0x2872b0,['id']);if(_0x14dc1d){for(var _0xe022e2 in _0xfb61b8){if(typeof _0xfb61b8[_0xe022e2]!==_0x0ab4('0x51')&&typeof _0x14dc1d[_0xe022e2]!==_0x0ab4('0x51')){_0x14dc1d[_0xe022e2]=_0xfb61b8[_0xe022e2];}}_0x188eb7(_0x14dc1d);}else{_0x1e01a7();}});},'VoiceChannels':function(){return new Promise(function(_0x54c201){var _0x9b2c74=_['values'](_0x14634a[_0x0ab4('0x52')]);_0x54c201({'count':_0x9b2c74[_0x0ab4('0x4f')],'rows':_0x9b2c74});});},'VoiceChannelMixMonitor':function(_0x117079){var _0x518762=this;return new Promise(function(_0x5b09e,_0x1fcc3b){if(ami[_0x0ab4('0xc')]()==![]){return _0x1fcc3b(_0x518762[_0x0ab4('0xd')](0x1f4,[config[_0x0ab4('0xe')]['ip'],config[_0x0ab4('0xe')]['username'],_0x0ab4('0x10')][_0x0ab4('0x11')]('\x20')));}var _0x302894=schema(properties[_0x0ab4('0x53')])[_0x0ab4('0x54')](_0x117079);if(_0x302894[_0x0ab4('0x4f')]>0x0){return _0x1fcc3b(_0x518762[_0x0ab4('0xd')](0x1f4,_[_0x0ab4('0x55')](_0x302894,_0x0ab4('0x19'))[_0x0ab4('0x11')](',\x20')));}var _0x1a9675=_[_0x0ab4('0x56')](_0x14634a[_0x0ab4('0x52')],{'uniqueid':_0x117079['uniqueid']});if(_0x1a9675&&_0x1a9675[_0x0ab4('0x57')]){var _0x354bc=util['format'](_0x0ab4('0x58'),_0x117079['filename']||_0x117079['uniqueid'],_0x117079[_0x0ab4('0x59')]||_0x0ab4('0x5a'));return ami[_0x0ab4('0x17')]({'action':'MixMonitor','channel':_0x1a9675[_0x0ab4('0x57')],'file':_0x354bc,'options':_0x0ab4('0x5b')})[_0x0ab4('0x18')](function(_0xaed2d){var _0x30ba95=_[_0x0ab4('0x56')](_0x1a9675[_0x0ab4('0x5c')],{'filename':'/var/spool/asterisk/monitor/'+_0x354bc[_0x0ab4('0x5d')]()});if(_['isNil'](_0x30ba95)){_0x1a9675[_0x0ab4('0x5c')]['push']({'filename':_0x0ab4('0x5e')+_0x354bc['toLowerCase'](),'createdAt':moment()['format'](_0x0ab4('0x5f')),'mixmonitorid':_0xaed2d[_0x0ab4('0x60')],'status':_0x0ab4('0x61')});}else{_0x30ba95[_0x0ab4('0x60')]=_0xaed2d['mixmonitorid'];_0x30ba95[_0x0ab4('0x62')]=_0x0ab4('0x61');}_0x5b09e({'code':0xc8,'message':[_0x117079[_0x0ab4('0x63')],_0x0ab4('0x64'),_0xaed2d[_0x0ab4('0x60')]][_0x0ab4('0x11')]('\x20'),'mixmonitorid':_0xaed2d[_0x0ab4('0x60')]});})[_0x0ab4('0x1c')](function(_0x2be6df){_0x1fcc3b(_0x518762[_0x0ab4('0xd')](0x1f5,[_0x117079[_0x0ab4('0x63')],_0x2be6df[_0x0ab4('0x19')][_0x0ab4('0x5d')]()][_0x0ab4('0x11')]('\x20')));});}else{return _0x1fcc3b(_0x518762[_0x0ab4('0xd')](0x1f5,_0x0ab4('0x65')));}});},'VoiceChannelStopMixMonitor':function(_0x340558){var _0xd55047=this;return new Promise(function(_0x41f85b,_0x59705f){if(ami[_0x0ab4('0xc')]()==![]){return _0x59705f(_0xd55047[_0x0ab4('0xd')](0x1f4,[config[_0x0ab4('0xe')]['ip'],config[_0x0ab4('0xe')][_0x0ab4('0xf')],_0x0ab4('0x10')][_0x0ab4('0x11')]('\x20')));}var _0x251e4d=schema(properties['voicechannel'])[_0x0ab4('0x54')](_0x340558);if(_0x251e4d[_0x0ab4('0x4f')]>0x0){return _0x59705f(_0xd55047['error'](0x1f4,_['map'](_0x251e4d,_0x0ab4('0x19'))[_0x0ab4('0x11')](',\x20')));}var _0x538a59=_['find'](_0x14634a[_0x0ab4('0x52')],{'uniqueid':_0x340558['uniqueid']});if(_0x538a59){return Promise['resolve']()[_0x0ab4('0x18')](function(){if(_0x538a59[_0x0ab4('0x57')]){return ami[_0x0ab4('0x17')]({'action':_0x0ab4('0x66'),'channel':_0x538a59[_0x0ab4('0x57')],'mixmonitorid':_0x340558[_0x0ab4('0x60')]})[_0x0ab4('0x1c')](function(){});}})['then'](function(){if(_0x538a59[_0x0ab4('0x67')]){return ami[_0x0ab4('0x17')]({'action':_0x0ab4('0x66'),'channel':_0x538a59[_0x0ab4('0x67')],'mixmonitorid':_0x340558[_0x0ab4('0x60')]})[_0x0ab4('0x1c')](function(){});}})['then'](function(){var _0x1b8bf5=_[_0x0ab4('0x56')](_0x538a59['monitors'],{'mixmonitorid':_0x340558[_0x0ab4('0x60')]});if(_0x1b8bf5){_0x1b8bf5['status']=_0x0ab4('0x68');}})['then'](function(){var _0x268b23=util[_0x0ab4('0x59')](_0x0ab4('0x58'),_0x340558[_0x0ab4('0x69')]||_0x340558['uniqueid'],_0x340558['format']||_0x0ab4('0x5a'));var _0x4477ba=_['find'](_0x538a59[_0x0ab4('0x5c')],{'filename':_0x0ab4('0x5e')+_0x268b23[_0x0ab4('0x5d')]()});if(_0x4477ba){_0x4477ba['status']=_0x0ab4('0x68');}})[_0x0ab4('0x18')](function(){_0x41f85b({'code':0xc8,'message':[_0x340558[_0x0ab4('0x63')],_0x0ab4('0x6a')][_0x0ab4('0x11')]('\x20')});})[_0x0ab4('0x1c')](function(_0x413817){_0x59705f(_0xd55047[_0x0ab4('0xd')](0x1f5,[_0x340558['uniqueid'],_0x413817['message'][_0x0ab4('0x5d')]()][_0x0ab4('0x11')]('\x20')));});}else{return _0x59705f(_0xd55047[_0x0ab4('0xd')](0x1f5,_0x0ab4('0x65')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x58c611){var _0x417926=_['values'](_0x14634a[_0x0ab4('0x6b')]);_0x58c611({'count':_0x417926[_0x0ab4('0x4f')],'rows':_0x417926});});},'VoiceQueuesChannel':function(_0x18308f){var _0x3e5f11=this;return new Promise(function(_0x340129,_0x41b65f){var _0x46a008=schema(properties[_0x0ab4('0x6c')])[_0x0ab4('0x54')](_0x18308f);if(_0x46a008['length']>0x0){return _0x41b65f(_0x3e5f11[_0x0ab4('0xd')](0x1f4,_['map'](_0x46a008,_0x0ab4('0x19'))[_0x0ab4('0x11')](',\x20')));}var _0x3a0e36=_[_0x0ab4('0x56')](_0x14634a[_0x0ab4('0x6b')],{'uniqueid':_0x18308f[_0x0ab4('0x63')]});if(_0x3a0e36){_0x340129(_0x3a0e36);}else{return _0x41b65f(_0x3e5f11[_0x0ab4('0xd')](0x1f5,_0x0ab4('0x65')));}});},'VoiceQueuesChannelHangup':function(_0x29839c){var _0x51b0ad=this;return new Promise(function(_0x1d2d2d,_0x9b1a87){if(ami['isConnected']()==![]){return _0x9b1a87(_0x51b0ad[_0x0ab4('0xd')](0x1f4,[config[_0x0ab4('0xe')]['ip'],config[_0x0ab4('0xe')]['username'],_0x0ab4('0x10')][_0x0ab4('0x11')]('\x20')));}var _0x1ed886=schema(properties[_0x0ab4('0x6d')])['validate'](_0x29839c);if(_0x1ed886['length']>0x0){return _0x9b1a87(_0x51b0ad[_0x0ab4('0xd')](0x1f4,_[_0x0ab4('0x55')](_0x1ed886,_0x0ab4('0x19'))[_0x0ab4('0x11')](',\x20')));}var _0x4ef894=_[_0x0ab4('0x56')](_0x14634a[_0x0ab4('0x6b')],{'uniqueid':_0x29839c[_0x0ab4('0x63')]});if(_0x4ef894&&_0x4ef894['channel']){return ami['Action']({'action':_0x0ab4('0x6e'),'channel':_0x4ef894[_0x0ab4('0x57')]})[_0x0ab4('0x18')](function(_0x16ec79){_0x1d2d2d({'code':0xc8,'message':[_0x29839c[_0x0ab4('0x63')],_0x16ec79[_0x0ab4('0x19')][_0x0ab4('0x5d')]()]['join']('\x20')});})[_0x0ab4('0x1c')](function(_0x57ed73){_0x9b1a87(_0x51b0ad['error'](0x1f5,[_0x29839c[_0x0ab4('0x63')],_0x57ed73['message'][_0x0ab4('0x5d')]()][_0x0ab4('0x11')]('\x20')));});}else{return _0x9b1a87(_0x51b0ad[_0x0ab4('0xd')](0x1f5,_0x0ab4('0x65')));}});},'VoiceQueuesChannelRedirect':function(_0x1eec8e){var _0x4bffd4=this;return new Promise(function(_0x586bd6,_0x88787f){if(ami[_0x0ab4('0xc')]()==![]){return _0x88787f(_0x4bffd4['error'](0x1f4,[config['asterisk']['ip'],config[_0x0ab4('0xe')][_0x0ab4('0xf')],'ami\x20disconnected'][_0x0ab4('0x11')]('\x20')));}var _0x142fd9=schema(properties[_0x0ab4('0x6f')])['validate'](_0x1eec8e);if(_0x142fd9[_0x0ab4('0x4f')]>0x0){return _0x88787f(_0x4bffd4[_0x0ab4('0xd')](0x1f4,_[_0x0ab4('0x55')](_0x142fd9,_0x0ab4('0x19'))['join'](',\x20')));}var _0x2936d0=_[_0x0ab4('0x56')](_0x14634a[_0x0ab4('0x6b')],{'uniqueid':_0x1eec8e[_0x0ab4('0x63')]});if(_0x2936d0&&_0x2936d0[_0x0ab4('0x57')]){return ami[_0x0ab4('0x17')]({'action':_0x0ab4('0x70'),'channel':_0x2936d0[_0x0ab4('0x57')],'exten':_0x1eec8e[_0x0ab4('0x71')],'context':_0x1eec8e[_0x0ab4('0x72')]||_0x2936d0['context'],'priority':0x1})[_0x0ab4('0x18')](function(_0x19f0eb){_0x586bd6({'code':0xc8,'message':[_0x1eec8e[_0x0ab4('0x63')],_0x19f0eb[_0x0ab4('0x19')][_0x0ab4('0x5d')]()]['join']('\x20')});})[_0x0ab4('0x1c')](function(_0x88676f){_0x88787f(_0x4bffd4[_0x0ab4('0xd')](0x1f5,[_0x1eec8e[_0x0ab4('0x63')],_0x88676f[_0x0ab4('0x19')][_0x0ab4('0x5d')]()][_0x0ab4('0x11')]('\x20')));});}else{return _0x88787f(_0x4bffd4[_0x0ab4('0xd')](0x1f5,_0x0ab4('0x65')));}});},'Agents':function(_0x23968d){return new Promise(function(_0x34ded4){var _0x1989fd=_[_0x0ab4('0x73')](_0x14634a[_0x0ab4('0xa')]);if(_0x23968d&&_0x23968d['id']){var _0x57bf78=_[_0x0ab4('0x56')](_0x1989fd,function(_0x23040c){return _0x23040c['id']===_0x23968d['id'];});_0x34ded4(_0x57bf78);}else{_0x34ded4({'count':_0x1989fd[_0x0ab4('0x4f')],'rows':_0x1989fd});}});},'Telephones':function(){return new Promise(function(_0x87fee){var _0x51aaa1=_['values'](_0x14634a[_0x0ab4('0x74')]);_0x87fee({'count':_0x51aaa1[_0x0ab4('0x4f')],'rows':_0x51aaa1});});},'Trunks':function(){return new Promise(function(_0x58863e){var _0x4598bb=_[_0x0ab4('0x73')](_0x14634a[_0x0ab4('0x75')]);_0x58863e({'count':_0x4598bb[_0x0ab4('0x4f')],'rows':_0x4598bb});});},'OutboundChannels':function(){return new Promise(function(_0x261700){var _0xc022dd=_[_0x0ab4('0x73')](_0x14634a['outboundChannels']);_0x261700({'count':_0xc022dd[_0x0ab4('0x4f')],'rows':_0xc022dd});});},'Outbound':function(){return new Promise(function(_0x5e0bcd){_0x5e0bcd(_0x14634a[_0x0ab4('0x76')]);});},'Campaigns':function(){return new Promise(function(_0x3ba040){var _0x29982e=_[_0x0ab4('0x73')](_0x14634a[_0x0ab4('0x77')]);_0x3ba040({'count':_0x29982e[_0x0ab4('0x4f')],'rows':_0x29982e});});},'VoiceQueuesPreview':function(_0x16079a){var _0x5eabaf=this;return new Promise(function(_0x11457b,_0x5c1e26){_0x57fac1[_0x0ab4('0x78')](_0x16079a['id'])[_0x0ab4('0x18')](function(_0x33be6){_0x11457b({'code':0xc8,'message':_0x33be6[_0x0ab4('0x19')]});})[_0x0ab4('0x1c')](function(_0x76fa2){_0x5c1e26(_0x5eabaf['error'](0x1f4,_0x76fa2['message']));});});},'EventManager':function(_0x222125){var _0x436189=this;return new Promise(function(_0x5dc6e9,_0x4e2f43){if(!_0x222125[_0x0ab4('0x79')]){return _0x4e2f43(_0x436189[_0x0ab4('0xd')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x0ab4('0x7a')](_0x0ab4('0x7b')+_0x222125[_0x0ab4('0x79')],_0x222125[_0x0ab4('0x19')]);_0x5dc6e9({'code':0xc8,'message':_0x222125});});},'FaxAccounts':function(){return new Promise(function(_0x48012a){var _0x3fefff=_['values'](_0x14634a['faxAccounts']);_0x48012a({'count':_0x3fefff[_0x0ab4('0x4f')],'rows':_0x3fefff});});},'SendFax':function(_0x4c7b6a){var _0xb19c94=this;return new Promise(function(_0x383855,_0xb1cac2){_0x5f01aa['send'](_0x4c7b6a)[_0x0ab4('0x18')](function(_0x8980c0){_0x383855({'code':0xc8,'message':_0x8980c0[_0x0ab4('0x19')]});})[_0x0ab4('0x1c')](function(_0x2bf00c){_0xb1cac2(_0xb19c94[_0x0ab4('0xd')](0x1f4,_0x2bf00c[_0x0ab4('0x19')]));});});},'CheckAfterSend':function(_0x51f02a){var _0x2a25d5=this;return new Promise(function(_0x5c9992,_0x3638d1){_0x5f01aa['checkAfterSend'](_0x51f02a)['then'](function(_0x3ad9d1){_0x5c9992({'code':0xc8,'message':_0x3ad9d1[_0x0ab4('0x19')]});})[_0x0ab4('0x1c')](function(_0x3f1479){_0x3638d1(_0x2a25d5[_0x0ab4('0xd')](0x1f4,_0x3f1479['message']));});});}};var _0x48ad72=jayson[_0x0ab4('0x7c')](_0x10d92b)[_0x0ab4('0x7d')]();_0x48ad72['on']('error',function(_0x1f0aef){return _0x4ba9d2(_0x1f0aef);});_0x48ad72['listen'](0x232a,_0x0ab4('0x7e'),function(){console[_0x0ab4('0x7f')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x28b17a(_0x0ab4('0x80')+0x232a);});});};
\ No newline at end of file
index 331d028..e4111c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c77=['Unknown','destcalleridname','<unknown>','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','format','trigger:%s','action','toLowerCase','merge','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','stringify','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','routeId','destcalleridnum','calleridnum','mobile','fax','createdAt','scheduledAt','updatedAt','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','data4','[CM][%s][%s]\x20Autocreate\x20enabled','firstName','calleridname'];(function(_0x3efb42,_0x1fde53){var _0x129faa=function(_0x5d61d7){while(--_0x5d61d7){_0x3efb42['push'](_0x3efb42['shift']());}};_0x129faa(++_0x1fde53);}(_0x1c77,0xed));var _0x71c7=function(_0x2ac4af,_0x288c53){_0x2ac4af=_0x2ac4af-0x0;var _0x3a36df=_0x1c77[_0x2ac4af];return _0x3a36df;};'use strict';var _=require('lodash');var BPromise=require(_0x71c7('0x0'));var Redis=require(_0x71c7('0x1'));var util=require(_0x71c7('0x2'));var config=require(_0x71c7('0x3'));var logger=require(_0x71c7('0x4'))('trigger');var cmContactRpc=require(_0x71c7('0x5'));config[_0x71c7('0x6')]=_[_0x71c7('0x7')](config[_0x71c7('0x6')],{'host':_0x71c7('0x8'),'port':0x18eb});var io=require(_0x71c7('0x9'))(new Redis(config[_0x71c7('0x6')]));function emit(_0x57fb10,_0x57bbb6,_0x2c25a4,_0x244867,_0x229b00){logger[_0x71c7('0xa')]('[CM][%s][%s]',_0x57fb10,_0x57bbb6['id'],_0x2c25a4,_0x244867,JSON[_0x71c7('0xb')](_0x229b00));io['to'](_0x2c25a4)['emit'](_0x244867,_0x229b00);}exports['exec']=function(_0x34600f,_0x302f14,_0x1cba95,_0x22147c){var _0x9adfea,_0x5d0455;var _0x1d10f9={};var _0x26ec15;var _0x389fd0=Number(_0x1cba95[_0x71c7('0xc')]);var _0x4ce94a=_0x1cba95[_0x71c7('0xd')]?Boolean(Number(_0x1cba95[_0x71c7('0xd')])):![];var _0x608fe;var _0x3d216e=![];if(!_[_0x71c7('0xe')](_0x1cba95[_0x71c7('0xf')])){if(_0x1cba95['data5']=='1')_0x3d216e=!![];}if(!_0x3d216e){if(_0x22147c['xmd-contactid']){_0x1d10f9['id']=_0x22147c[_0x71c7('0x10')];}}if(!_0x1d10f9['id']){_0x1d10f9[_0x71c7('0x11')]=_0x389fd0;_0x608fe=_0x1cba95[_0x71c7('0x12')]&&_0x1cba95[_0x71c7('0x12')]!=='0'?_0x1cba95[_0x71c7('0x12')][_0x71c7('0x13')](','):[_0x71c7('0x14')];_0x1d10f9[_0x71c7('0x15')]=_['map'](_0x608fe,function(_0x16f92f){var _0x301801={};_0x301801[_0x16f92f]=_0x22147c[_0x71c7('0x16')]?_0x22147c[_0x71c7('0x17')]:_0x22147c[_0x71c7('0x18')];return _0x301801;});_0x26ec15=_0x22147c['routeId']?_0x22147c['destcalleridnum']:_0x22147c[_0x71c7('0x18')];}var _0x1c2fc7=['id','firstName','lastName',_0x71c7('0x14'),_0x71c7('0x19'),_0x71c7('0x1a'),_0x71c7('0x11'),_0x71c7('0x1b'),_0x71c7('0x1c'),_0x71c7('0x1d')];var _0x5344ce=_['union'](_0x1c2fc7,_0x608fe);BPromise[_0x71c7('0x1e')]()[_0x71c7('0x1f')](cmContactRpc[_0x71c7('0x20')]({'attributes':_0x5344ce,'where':_0x1d10f9,'phone':_0x26ec15}))[_0x71c7('0x1f')](function(_0x3e3498){_0x5d0455=_0x3e3498;if(!_[_0x71c7('0x21')](_0x5d0455)){if(_0x5d0455[_0x71c7('0x22')]===0x1){_0x9adfea=_0x5d0455[0x0];logger[_0x71c7('0xa')](_0x71c7('0x23'),_0x22147c[_0x71c7('0x24')],_0x302f14['id'],_0x9adfea['id']);}else{logger[_0x71c7('0xa')](_0x71c7('0x25'),_0x22147c[_0x71c7('0x24')],_0x302f14['id'],_[_0x71c7('0x26')](_0x5d0455,'id')['join'](','));}return;}else{logger[_0x71c7('0xa')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x22147c[_0x71c7('0x24')],_0x302f14['id']);var _0x3bebc0={'ListId':_0x389fd0};var _0x3b2f37=_0x1cba95['data4']&&_0x1cba95['data4']!=='0'?_0x1cba95[_0x71c7('0x27')]:_0x71c7('0x14');if(_0x4ce94a){logger[_0x71c7('0xa')](_0x71c7('0x28'),_0x22147c[_0x71c7('0x24')],_0x302f14['id']);_0x3bebc0[_0x3b2f37]=_[_0x71c7('0xe')](_0x22147c[_0x71c7('0x16')])?_0x22147c['calleridnum']:_0x22147c[_0x71c7('0x17')];if(_[_0x71c7('0xe')](_0x22147c['routeId'])){_0x3bebc0[_0x71c7('0x29')]=_0x22147c[_0x71c7('0x2a')]&&_0x22147c[_0x71c7('0x2a')]!=='<unknown>'?_0x22147c[_0x71c7('0x2a')]:_0x71c7('0x2b');}else{_0x3bebc0[_0x71c7('0x29')]=_0x22147c[_0x71c7('0x2c')]&&_0x22147c[_0x71c7('0x2c')]!==_0x71c7('0x2d')?_0x22147c['destcalleridname']:_0x71c7('0x2b');}return BPromise[_0x71c7('0x1e')]()[_0x71c7('0x1f')](cmContactRpc[_0x71c7('0x2e')](_0x3bebc0))[_0x71c7('0x1f')](function(_0xfba4e0){_0x9adfea=_0xfba4e0;_0x5d0455[_0x71c7('0x2f')](_0xfba4e0);if(_0x9adfea){logger[_0x71c7('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x22147c[_0x71c7('0x24')],_0x302f14['id'],_0x9adfea['id']);}return;});}else{logger['info'](_0x71c7('0x30'),_0x22147c[_0x71c7('0x24')],_0x302f14['id']);_0x3bebc0[_0x3b2f37]=_[_0x71c7('0xe')](_0x22147c[_0x71c7('0x16')])?_0x22147c[_0x71c7('0x18')]:_0x22147c[_0x71c7('0x17')];if(_[_0x71c7('0xe')](_0x22147c[_0x71c7('0x16')])){_0x3bebc0[_0x71c7('0x29')]=_0x22147c[_0x71c7('0x2a')]&&_0x22147c[_0x71c7('0x2a')]!==_0x71c7('0x2d')?_0x22147c['calleridname']:'Unknown';}else{_0x3bebc0['firstName']=_0x22147c[_0x71c7('0x2c')]&&_0x22147c['destcalleridname']!==_0x71c7('0x2d')?_0x22147c[_0x71c7('0x2c')]:'Unknown';}_0x9adfea=_0x3bebc0;_0x5d0455[_0x71c7('0x2f')](_0x3bebc0);return;}}})[_0x71c7('0x1f')](function(){if(_0x34600f){emit(_0x22147c[_0x71c7('0x24')],_0x302f14,util['format'](_0x71c7('0x31'),_0x34600f[_0x71c7('0x32')]),util[_0x71c7('0x33')](_0x71c7('0x34'),_0x1cba95[_0x71c7('0x35')][_0x71c7('0x36')]()),{'evt':_[_0x71c7('0x37')](_0x22147c,{'autoCreate':_0x4ce94a}),'contact':_0x9adfea===undefined?{}:_0x9adfea,'contacts':_0x5d0455[_0x71c7('0x22')]===0x0?undefined:_0x5d0455});}});};
\ No newline at end of file
+var _0xbaaa=['length','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','destcalleridname','Unknown','resolve','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','trigger:%s','action','toLowerCase','merge','lodash','ioredis','util','../../../../config/environment','trigger','../../rpc/cmContact','redis','localhost','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','map','routeId','destcalleridnum','calleridnum','firstName','lastName','mobile','fax','createdAt','scheduledAt','updatedAt','union','then','getContacts','isEmpty'];(function(_0x341b90,_0x52271e){var _0x5aee18=function(_0x55e43c){while(--_0x55e43c){_0x341b90['push'](_0x341b90['shift']());}};_0x5aee18(++_0x52271e);}(_0xbaaa,0x137));var _0xabaa=function(_0x1cb18a,_0x33167a){_0x1cb18a=_0x1cb18a-0x0;var _0x22442e=_0xbaaa[_0x1cb18a];return _0x22442e;};'use strict';var _=require(_0xabaa('0x0'));var BPromise=require('bluebird');var Redis=require(_0xabaa('0x1'));var util=require(_0xabaa('0x2'));var config=require(_0xabaa('0x3'));var logger=require('../../../../config/logger')(_0xabaa('0x4'));var cmContactRpc=require(_0xabaa('0x5'));config[_0xabaa('0x6')]=_['defaults'](config[_0xabaa('0x6')],{'host':_0xabaa('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xabaa('0x6')]));function emit(_0x4b4960,_0x413554,_0x4e4d67,_0x2f249,_0x3a5789){logger[_0xabaa('0x8')](_0xabaa('0x9'),_0x4b4960,_0x413554['id'],_0x4e4d67,_0x2f249,JSON[_0xabaa('0xa')](_0x3a5789));io['to'](_0x4e4d67)[_0xabaa('0xb')](_0x2f249,_0x3a5789);}exports[_0xabaa('0xc')]=function(_0x318120,_0x20f760,_0x56a533,_0x178f41){var _0x615cb8,_0xf2fe42;var _0x29b78d={};var _0x53fd17;var _0x4a7875=Number(_0x56a533[_0xabaa('0xd')]);var _0x3fed03=_0x56a533['data2']?Boolean(Number(_0x56a533[_0xabaa('0xe')])):![];var _0x5c0bf0;var _0xf452c7=![];if(!_[_0xabaa('0xf')](_0x56a533['data5'])){if(_0x56a533[_0xabaa('0x10')]=='1')_0xf452c7=!![];}if(!_0xf452c7){if(_0x178f41['xmd-contactid']){_0x29b78d['id']=_0x178f41[_0xabaa('0x11')];}}if(!_0x29b78d['id']){_0x29b78d[_0xabaa('0x12')]=_0x4a7875;_0x5c0bf0=_0x56a533[_0xabaa('0x13')]&&_0x56a533[_0xabaa('0x13')]!=='0'?_0x56a533['data3'][_0xabaa('0x14')](','):[_0xabaa('0x15')];_0x29b78d['$or']=_[_0xabaa('0x16')](_0x5c0bf0,function(_0x5a9f2e){var _0x3d0c8a={};_0x3d0c8a[_0x5a9f2e]=_0x178f41[_0xabaa('0x17')]?_0x178f41[_0xabaa('0x18')]:_0x178f41[_0xabaa('0x19')];return _0x3d0c8a;});_0x53fd17=_0x178f41[_0xabaa('0x17')]?_0x178f41[_0xabaa('0x18')]:_0x178f41['calleridnum'];}var _0x3335cf=['id',_0xabaa('0x1a'),_0xabaa('0x1b'),_0xabaa('0x15'),_0xabaa('0x1c'),_0xabaa('0x1d'),_0xabaa('0x12'),_0xabaa('0x1e'),_0xabaa('0x1f'),_0xabaa('0x20')];var _0x3ee7c1=_[_0xabaa('0x21')](_0x3335cf,_0x5c0bf0);BPromise['resolve']()[_0xabaa('0x22')](cmContactRpc[_0xabaa('0x23')]({'attributes':_0x3ee7c1,'where':_0x29b78d,'phone':_0x53fd17}))[_0xabaa('0x22')](function(_0x5040fc){_0xf2fe42=_0x5040fc;if(!_[_0xabaa('0x24')](_0xf2fe42)){if(_0xf2fe42[_0xabaa('0x25')]===0x1){_0x615cb8=_0xf2fe42[0x0];logger[_0xabaa('0x8')](_0xabaa('0x26'),_0x178f41['uniqueid'],_0x20f760['id'],_0x615cb8['id']);}else{logger['info'](_0xabaa('0x27'),_0x178f41[_0xabaa('0x28')],_0x20f760['id'],_['map'](_0xf2fe42,'id')[_0xabaa('0x29')](','));}return;}else{logger[_0xabaa('0x8')](_0xabaa('0x2a'),_0x178f41[_0xabaa('0x28')],_0x20f760['id']);var _0x386ec1={'ListId':_0x4a7875};var _0x2042f3=_0x56a533[_0xabaa('0x2b')]&&_0x56a533[_0xabaa('0x2b')]!=='0'?_0x56a533[_0xabaa('0x2b')]:_0xabaa('0x15');if(_0x3fed03){logger[_0xabaa('0x8')](_0xabaa('0x2c'),_0x178f41[_0xabaa('0x28')],_0x20f760['id']);_0x386ec1[_0x2042f3]=_[_0xabaa('0xf')](_0x178f41[_0xabaa('0x17')])?_0x178f41['calleridnum']:_0x178f41['destcalleridnum'];if(_[_0xabaa('0xf')](_0x178f41[_0xabaa('0x17')])){_0x386ec1[_0xabaa('0x1a')]=_0x178f41[_0xabaa('0x2d')]&&_0x178f41['calleridname']!==_0xabaa('0x2e')?_0x178f41['calleridname']:'Unknown';}else{_0x386ec1['firstName']=_0x178f41[_0xabaa('0x2f')]&&_0x178f41[_0xabaa('0x2f')]!=='<unknown>'?_0x178f41[_0xabaa('0x2f')]:_0xabaa('0x30');}return BPromise[_0xabaa('0x31')]()[_0xabaa('0x22')](cmContactRpc[_0xabaa('0x32')](_0x386ec1))[_0xabaa('0x22')](function(_0x2bfaa8){_0x615cb8=_0x2bfaa8;_0xf2fe42[_0xabaa('0x33')](_0x2bfaa8);if(_0x615cb8){logger[_0xabaa('0x8')](_0xabaa('0x34'),_0x178f41[_0xabaa('0x28')],_0x20f760['id'],_0x615cb8['id']);}return;});}else{logger[_0xabaa('0x8')](_0xabaa('0x35'),_0x178f41[_0xabaa('0x28')],_0x20f760['id']);_0x386ec1[_0x2042f3]=_[_0xabaa('0xf')](_0x178f41['routeId'])?_0x178f41['calleridnum']:_0x178f41[_0xabaa('0x18')];if(_[_0xabaa('0xf')](_0x178f41[_0xabaa('0x17')])){_0x386ec1['firstName']=_0x178f41['calleridname']&&_0x178f41[_0xabaa('0x2d')]!==_0xabaa('0x2e')?_0x178f41[_0xabaa('0x2d')]:_0xabaa('0x30');}else{_0x386ec1[_0xabaa('0x1a')]=_0x178f41[_0xabaa('0x2f')]&&_0x178f41['destcalleridname']!==_0xabaa('0x2e')?_0x178f41[_0xabaa('0x2f')]:_0xabaa('0x30');}_0x615cb8=_0x386ec1;_0xf2fe42[_0xabaa('0x33')](_0x386ec1);return;}}})['then'](function(){if(_0x318120){emit(_0x178f41[_0xabaa('0x28')],_0x20f760,util['format']('user:%s',_0x318120['name']),util['format'](_0xabaa('0x36'),_0x56a533[_0xabaa('0x37')][_0xabaa('0x38')]()),{'evt':_[_0xabaa('0x39')](_0x178f41,{'autoCreate':_0x3fed03}),'contact':_0x615cb8===undefined?{}:_0x615cb8,'contacts':_0xf2fe42[_0xabaa('0x25')]===0x0?undefined:_0xf2fe42});}});};
\ No newline at end of file
index 4f17f14..2761949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ac=['voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','info','emit','clone','undefined','voice','checkTriggers','agents','interface','hasOwnProperty','status','checkTrigger','merge','Actions','length','contactmanager','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','600','render','winArguments','format','user:%s','name','action','toLowerCase','jscripty','trigger:%s','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','channel','motionChannel','AllConditions','AnyConditions','some','checkConditions','field','ChatWebsiteId','operator','upperFirst','AccountId','value','interaction','message','event','membername','lastevent','mailSubstatus','null','substatus','created','exports','lodash','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','localhost','popup','url','winapp','triggers','voiceQueues','templates'];(function(_0x18d665,_0x2f65ab){var _0x4abe5c=function(_0x199e11){while(--_0x199e11){_0x18d665['push'](_0x18d665['shift']());}};_0x4abe5c(++_0x2f65ab);}(_0x33ac,0x1f2));var _0xc33a=function(_0x4af4d1,_0x4245cb){_0x4af4d1=_0x4af4d1-0x0;var _0x911e40=_0x33ac[_0x4af4d1];return _0x911e40;};'use strict';var util=require('util');var _=require(_0xc33a('0x0'));var url=require('url');var Mustache=require('mustache');var Redis=require(_0xc33a('0x1'));var urlforward=require(_0xc33a('0x2'));var integration=require(_0xc33a('0x3'));var cmContact=require(_0xc33a('0x4'));var script=require(_0xc33a('0x5'));var config=require(_0xc33a('0x6'));var logger=require(_0xc33a('0x7'))(_0xc33a('0x8'));var ami=require(_0xc33a('0x9'));config['redis']=_['defaults'](config[_0xc33a('0xa')],{'host':_0xc33a('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc33a('0xa')]));var operators={'equals':function(_0x5d55b8,_0x3a598a){return _0x5d55b8==_0x3a598a;},'not_equals':function(_0x2dc672,_0x288e87){return _0x2dc672!=_0x288e87;}};var barAndWebActions=[_0xc33a('0xc'),_0xc33a('0xd'),_0xc33a('0xe')];function Trigger(_0x2a6228){this[_0xc33a('0xf')]=_0x2a6228[_0xc33a('0xf')];this['agents']=_0x2a6228['agents'];this[_0xc33a('0x10')]=_0x2a6228['voiceQueues'];this['templates']=_0x2a6228[_0xc33a('0x11')];this[_0xc33a('0x12')]=_0x2a6228[_0xc33a('0x12')];this[_0xc33a('0x13')]=_0x2a6228[_0xc33a('0x13')];this[_0xc33a('0x14')]=_0x2a6228['freshdeskAccounts'];this[_0xc33a('0x15')]=_0x2a6228[_0xc33a('0x15')];this[_0xc33a('0x16')]=_0x2a6228['sugarcrmAccounts'];this[_0xc33a('0x17')]=_0x2a6228['zohoAccounts'];this[_0xc33a('0x18')]=_0x2a6228[_0xc33a('0x18')];this[_0xc33a('0x19')]=_0x2a6228[_0xc33a('0x19')];this[_0xc33a('0x1a')]=_0x2a6228['servicenowAccounts'];this['dynamics365Accounts']=_0x2a6228[_0xc33a('0x1b')];this[_0xc33a('0x1c')]=_0x2a6228[_0xc33a('0x1c')];this[_0xc33a('0x1d')]={'zendesk':this[_0xc33a('0x13')],'salesforce':this[_0xc33a('0x15')],'freshdesk':this[_0xc33a('0x14')],'sugarcrm':this[_0xc33a('0x16')],'zoho':this['zohoAccounts'],'desk':this[_0xc33a('0x18')],'vtiger':this[_0xc33a('0x19')],'dynamics365':this[_0xc33a('0x1b')],'freshsales':this[_0xc33a('0x1c')],'servicenow':this['servicenowAccounts']};ami['on'](_0xc33a('0x1e'),this[_0xc33a('0x1f')]['bind'](this));ami['on'](_0xc33a('0x20'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x22'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x23'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x24'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x25'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x26'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x27'),this['syncCustomEvent'][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x28'),this[_0xc33a('0x1f')]['bind'](this));ami['on'](_0xc33a('0x29'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2a'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on']('custom:timeout',this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2b'),this['syncAgentDial']['bind'](this));ami['on'](_0xc33a('0x2c'),this[_0xc33a('0x2d')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2e'),this[_0xc33a('0x2d')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2f'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on']('custom:closedinteraction',this['syncCustomEvent']['bind'](this));ami['on'](_0xc33a('0x30'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x31'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on']('custom:outgoingmessage',this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x32'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x33'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x34'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));}Trigger[_0xc33a('0x35')]['emit']=function(_0x254de4,_0x583bae,_0x58965a){logger[_0xc33a('0x36')](_0x254de4,_0x583bae,JSON['stringify'](_0x58965a));io['to'](_0x254de4)[_0xc33a('0x37')](_0x583bae,_0x58965a);};Trigger[_0xc33a('0x35')][_0xc33a('0x1f')]=function(_0x2bfc2f){var _0x14db10=_[_0xc33a('0x38')](_0x2bfc2f);if(typeof _0x14db10['motionChannel']===_0xc33a('0x39')){_0x14db10['motionChannel']=_0xc33a('0x3a');}this[_0xc33a('0x3b')](_0x14db10);};Trigger[_0xc33a('0x35')][_0xc33a('0x2d')]=function(_0x424b44){if(this[_0xc33a('0x3c')][_0x424b44[_0xc33a('0x3d')]]){this[_0xc33a('0x1f')](_0x424b44);}};Trigger[_0xc33a('0x35')][_0xc33a('0x3b')]=function(_0x4a68c2){var _0xc0b878;for(var _0x3c16bf in this[_0xc33a('0xf')]){if(this['triggers'][_0xc33a('0x3e')](_0x3c16bf)){if(this[_0xc33a('0xf')][_0x3c16bf][_0xc33a('0x3f')]){_0xc0b878=this[_0xc33a('0x40')](this['triggers'][_0x3c16bf],_0x4a68c2);if(_0xc0b878){_[_0xc33a('0x41')](_0x4a68c2,_0x4a68c2['variables']);for(var _0x573f88=0x0,_0x103a1c,_0x31e94f,_0x3586e1;_0x573f88<this['triggers'][_0x3c16bf][_0xc33a('0x42')][_0xc33a('0x43')];_0x573f88+=0x1){_0x103a1c=this[_0xc33a('0xf')][_0x3c16bf][_0xc33a('0x42')][_0x573f88];if(this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]]){switch(_0x103a1c['action']['toLowerCase']()){case _0xc33a('0x44'):break;case _0xc33a('0x45'):case _0xc33a('0x46'):var _0xb9accd={};switch(barAndWebActions[_0x103a1c[_0xc33a('0x47')]]){case _0xc33a('0xc'):_0xb9accd[_0xc33a('0x48')]=_0x103a1c[_0xc33a('0x49')];_0xb9accd[_0xc33a('0x4a')]=this['templates'][_0x103a1c[_0xc33a('0x49')]]?Mustache['render'](this[_0xc33a('0x11')][_0x103a1c[_0xc33a('0x49')]][_0xc33a('0x4a')],_0x4a68c2):_0xc33a('0x4b');break;case _0xc33a('0xd'):_0xb9accd[_0xc33a('0x4c')]=this['buildUri'](_0x103a1c[_0xc33a('0x49')],_0x4a68c2,_[_0xc33a('0x4d')](_0x103a1c[_0xc33a('0x4e')])?!![]:parseInt(_0x103a1c[_0xc33a('0x4e')],0xa));if(_[_0xc33a('0x4d')](_0x103a1c[_0xc33a('0x4f')])){_0xb9accd[_0xc33a('0x50')]='0';}else{_0xb9accd[_0xc33a('0x51')]=_0x103a1c[_0xc33a('0x4f')];_0xb9accd[_0xc33a('0x52')]=_['isNil'](_0x103a1c[_0xc33a('0x53')])?_0xc33a('0x54'):_0x103a1c[_0xc33a('0x53')];_0xb9accd[_0xc33a('0x55')]=_[_0xc33a('0x4d')](_0x103a1c[_0xc33a('0x56')])?_0xc33a('0x57'):_0x103a1c[_0xc33a('0x56')];}break;case _0xc33a('0xe'):_0xb9accd['winApplication']=_0x103a1c[_0xc33a('0x49')]?Mustache[_0xc33a('0x58')](_0x103a1c['data2'],_0x4a68c2):'';_0xb9accd[_0xc33a('0x59')]=_0x103a1c[_0xc33a('0x4e')]?Mustache[_0xc33a('0x58')](_0x103a1c[_0xc33a('0x4e')],_0x4a68c2):'';break;}this[_0xc33a('0x37')](util[_0xc33a('0x5a')](_0xc33a('0x5b'),this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]][_0xc33a('0x5c')]),util[_0xc33a('0x5a')]('trigger:%s:%s',_0x103a1c[_0xc33a('0x5d')][_0xc33a('0x5e')](),barAndWebActions[_0x103a1c[_0xc33a('0x47')]]),_[_0xc33a('0x41')](_0xb9accd,_0x4a68c2));break;case _0xc33a('0x5f'):this['emit'](util['format'](_0xc33a('0x5b'),this[_0xc33a('0x3c')][_0x4a68c2['interface']]['name']),util[_0xc33a('0x5a')](_0xc33a('0x60'),_0x103a1c[_0xc33a('0x5d')][_0xc33a('0x5e')]()),_[_0xc33a('0x41')]({'ProjectId':parseInt(_0x103a1c[_0xc33a('0x47')],0xa)},_0x4a68c2));break;default:this[_0xc33a('0x37')](util[_0xc33a('0x5a')](_0xc33a('0x5b'),this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]][_0xc33a('0x5c')]),util[_0xc33a('0x5a')](_0xc33a('0x60'),_0x103a1c[_0xc33a('0x5d')][_0xc33a('0x5e')]()),_[_0xc33a('0x41')]({},_0x103a1c,_0x4a68c2));}}switch(_0x103a1c['action'][_0xc33a('0x5e')]()){case _0xc33a('0x44'):cmContact[_0xc33a('0x61')](this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]],this[_0xc33a('0xf')][_0x3c16bf],_0x103a1c,_0x4a68c2);break;case _0xc33a('0x62'):integration[_0xc33a('0x61')](_0x103a1c,_0x4a68c2,this[_0xc33a('0x1d')],this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]],this['voiceQueues'][_0x4a68c2[_0xc33a('0x63')]],this[_0xc33a('0x12')][_0x4a68c2[_0xc33a('0x64')]]);break;case _0xc33a('0x65'):urlforward['exec'](_0x103a1c,_0x4a68c2);break;case _0xc33a('0x66'):script[_0xc33a('0x61')](_0x103a1c,_0x4a68c2);break;}}}}}}};Trigger[_0xc33a('0x35')]['buildUri']=function(_0x541d89,_0x34cc7f,_0x56c1b8){var _0x2d9f69=url[_0xc33a('0x67')](Mustache['render'](_0x541d89,_0x34cc7f),!![]);if(_0x56c1b8){_[_0xc33a('0x41')](_0x2d9f69[_0xc33a('0x68')],_0x34cc7f);}delete _0x2d9f69[_0xc33a('0x69')];var _0x309336=url[_0xc33a('0x5a')](_0x2d9f69);_0x309336=_0x309336[_0xc33a('0x6a')](/\/\?/g,'?');return _0x309336;};Trigger[_0xc33a('0x35')][_0xc33a('0x40')]=function(_0x3e8be8,_0x265f61){var _0x3f5624=!![];var _0xd444e=!![];var _0x385ecd=![];if(_0x3e8be8[_0xc33a('0x6b')]===_0x265f61[_0xc33a('0x6c')]){_0x385ecd=!![];}if(_0x3e8be8[_0xc33a('0x6d')][_0xc33a('0x43')]){_0x3f5624=_['every'](_0x3e8be8[_0xc33a('0x6d')],this['checkConditions'](_0x265f61,_0x3e8be8[_0xc33a('0x6b')]));}if(_0x3e8be8[_0xc33a('0x6e')][_0xc33a('0x43')]){_0xd444e=_[_0xc33a('0x6f')](_0x3e8be8['AnyConditions'],this[_0xc33a('0x70')](_0x265f61,_0x3e8be8['channel']));}return _0x385ecd&&_0x3f5624&&_0xd444e;};Trigger[_0xc33a('0x35')]['checkConditions']=function(_0x5a339d,_0x469277){return function(_0x25f070){switch(_0x25f070[_0xc33a('0x71')]){case'account':if(_0x5a339d['channel']===_0x469277){if(_0x469277==='chat'){return _0x5a339d[_0xc33a('0x72')]?operators[_0x25f070[_0xc33a('0x73')]](Number(_0x25f070['value']),_0x5a339d[_0xc33a('0x72')]):![];}else{return _0x5a339d[_[_0xc33a('0x74')](_0x469277)+_0xc33a('0x75')]?operators[_0x25f070[_0xc33a('0x73')]](Number(_0x25f070[_0xc33a('0x76')]),_0x5a339d[_[_0xc33a('0x74')](_0x469277)+_0xc33a('0x75')]):![];}}break;case _0xc33a('0x77'):case _0xc33a('0x78'):if(_0x5a339d['channel']===_0x469277){return _0x5a339d[_0xc33a('0x79')]?operators[_0x25f070[_0xc33a('0x73')]](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x79')]):![];}break;case _0xc33a('0x63'):return _0x5a339d[_0xc33a('0x63')]?operators[_0x25f070['operator']](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x63')]):![];case'agent':return _0x5a339d[_0xc33a('0x7a')]?operators[_0x25f070['operator']](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x7a')]):![];case _0xc33a('0x7b'):return _0x5a339d['lastevent']?operators[_0x25f070[_0xc33a('0x73')]](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x7b')]):![];case _0xc33a('0x64'):return _0x5a339d[_0xc33a('0x64')]?operators[_0x25f070['operator']](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x64')]):![];case _0xc33a('0x7c'):if(_0x25f070[_0xc33a('0x76')]===_0xc33a('0x7d'))_0x25f070[_0xc33a('0x76')]=null;return typeof _0x5a339d[_0xc33a('0x7e')]!==_0xc33a('0x39')?operators[_0x25f070[_0xc33a('0x73')]](_0x25f070['value'],_0x5a339d['substatus']):![];case'offlineMessage':if(_0x5a339d[_0xc33a('0x6b')]===_0x469277){return _0x25f070[_0xc33a('0x76')]===_0xc33a('0x7f')&&_0x25f070[_0xc33a('0x73')]==='equals'?!![]:![];}break;}return![];};};module[_0xc33a('0x80')]=Trigger;
\ No newline at end of file
+var _0x3e4d=['lastevent','substatus','offlineMessage','equals','exports','util','url','./integration','./cmContact','./script','../../../config/logger','redis','defaults','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:offlineMessage','emit','stringify','prototype','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','Actions','length','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','buildUri','isNil','data3','location','uriLocation','data4','800','data5','windowHeight','data6','winapp','render','format','user:%s','name','trigger:%s:%s','action','merge','trigger:%s','toLowerCase','contactmanager','integration','exec','queue','routeId','script','parse','query','search','replace','checkTrigger','channel','AllConditions','every','AnyConditions','checkConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','membername'];(function(_0x433dcc,_0x24a9bb){var _0x36444c=function(_0x39ceed){while(--_0x39ceed){_0x433dcc['push'](_0x433dcc['shift']());}};_0x36444c(++_0x24a9bb);}(_0x3e4d,0x16d));var _0xd3e4=function(_0x370f27,_0x180767){_0x370f27=_0x370f27-0x0;var _0x275ddf=_0x3e4d[_0x370f27];return _0x275ddf;};'use strict';var util=require(_0xd3e4('0x0'));var _=require('lodash');var url=require(_0xd3e4('0x1'));var Mustache=require('mustache');var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require(_0xd3e4('0x2'));var cmContact=require(_0xd3e4('0x3'));var script=require(_0xd3e4('0x4'));var config=require('../../../config/environment');var logger=require(_0xd3e4('0x5'))('trigger');var ami=require('../ami');config[_0xd3e4('0x6')]=_[_0xd3e4('0x7')](config[_0xd3e4('0x6')],{'host':_0xd3e4('0x8'),'port':0x18eb});var io=require(_0xd3e4('0x9'))(new Redis(config['redis']));var operators={'equals':function(_0x68d3a8,_0x42d997){return _0x68d3a8==_0x42d997;},'not_equals':function(_0x279f4c,_0x4eead9){return _0x279f4c!=_0x4eead9;}};var barAndWebActions=[_0xd3e4('0xa'),_0xd3e4('0x1'),'winapp'];function Trigger(_0x591359){this[_0xd3e4('0xb')]=_0x591359[_0xd3e4('0xb')];this[_0xd3e4('0xc')]=_0x591359[_0xd3e4('0xc')];this[_0xd3e4('0xd')]=_0x591359[_0xd3e4('0xd')];this[_0xd3e4('0xe')]=_0x591359['templates'];this[_0xd3e4('0xf')]=_0x591359[_0xd3e4('0xf')];this[_0xd3e4('0x10')]=_0x591359['zendeskAccounts'];this['freshdeskAccounts']=_0x591359[_0xd3e4('0x11')];this['salesforceAccounts']=_0x591359[_0xd3e4('0x12')];this[_0xd3e4('0x13')]=_0x591359['sugarcrmAccounts'];this[_0xd3e4('0x14')]=_0x591359[_0xd3e4('0x14')];this['deskAccounts']=_0x591359['deskAccounts'];this['vtigerAccounts']=_0x591359[_0xd3e4('0x15')];this[_0xd3e4('0x16')]=_0x591359[_0xd3e4('0x16')];this[_0xd3e4('0x17')]=_0x591359[_0xd3e4('0x17')];this['freshsalesAccounts']=_0x591359[_0xd3e4('0x18')];this[_0xd3e4('0x19')]={'zendesk':this[_0xd3e4('0x10')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xd3e4('0x11')],'sugarcrm':this[_0xd3e4('0x13')],'zoho':this[_0xd3e4('0x14')],'desk':this['deskAccounts'],'vtiger':this[_0xd3e4('0x15')],'dynamics365':this[_0xd3e4('0x17')],'freshsales':this[_0xd3e4('0x18')],'servicenow':this[_0xd3e4('0x16')]};ami['on'](_0xd3e4('0x1a'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x1d'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on']('custom:agentringnoanswer',this[_0xd3e4('0x1b')]['bind'](this));ami['on'](_0xd3e4('0x1e'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x1f'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x20'),this['syncCustomEvent']['bind'](this));ami['on'](_0xd3e4('0x21'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x22'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x23'),this['syncCustomEvent']['bind'](this));ami['on']('custom:amd',this[_0xd3e4('0x1b')]['bind'](this));ami['on'](_0xd3e4('0x24'),this[_0xd3e4('0x1b')]['bind'](this));ami['on'](_0xd3e4('0x25'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x26'),this[_0xd3e4('0x27')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x28'),this[_0xd3e4('0x27')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x29'),this['syncAgentDial'][_0xd3e4('0x1c')](this));ami['on']('custom:newinteraction',this[_0xd3e4('0x1b')]['bind'](this));ami['on']('custom:closedinteraction',this['syncCustomEvent'][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x2a'),this[_0xd3e4('0x1b')]['bind'](this));ami['on'](_0xd3e4('0x2b'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x2c'),this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on']('custom:acceptmessage',this['syncCustomEvent'][_0xd3e4('0x1c')](this));ami['on']('custom:rejectmessage',this[_0xd3e4('0x1b')][_0xd3e4('0x1c')](this));ami['on'](_0xd3e4('0x2d'),this['syncCustomEvent'][_0xd3e4('0x1c')](this));}Trigger['prototype'][_0xd3e4('0x2e')]=function(_0x361699,_0x47131c,_0x132bbe){logger['info'](_0x361699,_0x47131c,JSON[_0xd3e4('0x2f')](_0x132bbe));io['to'](_0x361699)['emit'](_0x47131c,_0x132bbe);};Trigger[_0xd3e4('0x30')][_0xd3e4('0x1b')]=function(_0x1d4898){var _0x5cd56b=_[_0xd3e4('0x31')](_0x1d4898);if(typeof _0x5cd56b[_0xd3e4('0x32')]===_0xd3e4('0x33')){_0x5cd56b[_0xd3e4('0x32')]=_0xd3e4('0x34');}this[_0xd3e4('0x35')](_0x5cd56b);};Trigger[_0xd3e4('0x30')][_0xd3e4('0x27')]=function(_0x478369){if(this[_0xd3e4('0xc')][_0x478369[_0xd3e4('0x36')]]){this[_0xd3e4('0x1b')](_0x478369);}};Trigger['prototype'][_0xd3e4('0x35')]=function(_0x3458c2){var _0xbb425a;for(var _0x3c79f9 in this[_0xd3e4('0xb')]){if(this[_0xd3e4('0xb')][_0xd3e4('0x37')](_0x3c79f9)){if(this[_0xd3e4('0xb')][_0x3c79f9][_0xd3e4('0x38')]){_0xbb425a=this['checkTrigger'](this[_0xd3e4('0xb')][_0x3c79f9],_0x3458c2);if(_0xbb425a){_['merge'](_0x3458c2,_0x3458c2['variables']);for(var _0x267d11=0x0,_0x518363,_0x33134b,_0x52f496;_0x267d11<this[_0xd3e4('0xb')][_0x3c79f9][_0xd3e4('0x39')][_0xd3e4('0x3a')];_0x267d11+=0x1){_0x518363=this[_0xd3e4('0xb')][_0x3c79f9][_0xd3e4('0x39')][_0x267d11];if(this[_0xd3e4('0xc')][_0x3458c2[_0xd3e4('0x36')]]){switch(_0x518363['action']['toLowerCase']()){case'contactmanager':break;case _0xd3e4('0x3b'):case _0xd3e4('0x3c'):var _0x4023bd={};switch(barAndWebActions[_0x518363[_0xd3e4('0x3d')]]){case _0xd3e4('0xa'):_0x4023bd[_0xd3e4('0x3e')]=_0x518363[_0xd3e4('0x3f')];_0x4023bd[_0xd3e4('0x40')]=this[_0xd3e4('0xe')][_0x518363[_0xd3e4('0x3f')]]?Mustache['render'](this[_0xd3e4('0xe')][_0x518363[_0xd3e4('0x3f')]][_0xd3e4('0x40')],_0x3458c2):_0xd3e4('0x41');break;case _0xd3e4('0x1'):_0x4023bd[_0xd3e4('0x42')]=this[_0xd3e4('0x43')](_0x518363[_0xd3e4('0x3f')],_0x3458c2,_[_0xd3e4('0x44')](_0x518363[_0xd3e4('0x45')])?!![]:parseInt(_0x518363[_0xd3e4('0x45')],0xa));if(_[_0xd3e4('0x44')](_0x518363['data4'])){_0x4023bd[_0xd3e4('0x46')]='0';}else{_0x4023bd[_0xd3e4('0x47')]=_0x518363[_0xd3e4('0x48')];_0x4023bd['windowWidth']=_[_0xd3e4('0x44')](_0x518363['data5'])?_0xd3e4('0x49'):_0x518363[_0xd3e4('0x4a')];_0x4023bd[_0xd3e4('0x4b')]=_[_0xd3e4('0x44')](_0x518363[_0xd3e4('0x4c')])?'600':_0x518363[_0xd3e4('0x4c')];}break;case _0xd3e4('0x4d'):_0x4023bd['winApplication']=_0x518363[_0xd3e4('0x3f')]?Mustache[_0xd3e4('0x4e')](_0x518363[_0xd3e4('0x3f')],_0x3458c2):'';_0x4023bd['winArguments']=_0x518363[_0xd3e4('0x45')]?Mustache[_0xd3e4('0x4e')](_0x518363[_0xd3e4('0x45')],_0x3458c2):'';break;}this[_0xd3e4('0x2e')](util[_0xd3e4('0x4f')](_0xd3e4('0x50'),this[_0xd3e4('0xc')][_0x3458c2['interface']][_0xd3e4('0x51')]),util[_0xd3e4('0x4f')](_0xd3e4('0x52'),_0x518363[_0xd3e4('0x53')]['toLowerCase'](),barAndWebActions[_0x518363[_0xd3e4('0x3d')]]),_[_0xd3e4('0x54')](_0x4023bd,_0x3458c2));break;case'jscripty':this['emit'](util[_0xd3e4('0x4f')](_0xd3e4('0x50'),this[_0xd3e4('0xc')][_0x3458c2[_0xd3e4('0x36')]]['name']),util[_0xd3e4('0x4f')](_0xd3e4('0x55'),_0x518363[_0xd3e4('0x53')]['toLowerCase']()),_[_0xd3e4('0x54')]({'ProjectId':parseInt(_0x518363[_0xd3e4('0x3d')],0xa)},_0x3458c2));break;default:this[_0xd3e4('0x2e')](util[_0xd3e4('0x4f')](_0xd3e4('0x50'),this['agents'][_0x3458c2[_0xd3e4('0x36')]][_0xd3e4('0x51')]),util[_0xd3e4('0x4f')](_0xd3e4('0x55'),_0x518363['action']['toLowerCase']()),_['merge']({},_0x518363,_0x3458c2));}}switch(_0x518363[_0xd3e4('0x53')][_0xd3e4('0x56')]()){case _0xd3e4('0x57'):cmContact['exec'](this['agents'][_0x3458c2[_0xd3e4('0x36')]],this[_0xd3e4('0xb')][_0x3c79f9],_0x518363,_0x3458c2);break;case _0xd3e4('0x58'):integration[_0xd3e4('0x59')](_0x518363,_0x3458c2,this[_0xd3e4('0x19')],this[_0xd3e4('0xc')][_0x3458c2['interface']],this[_0xd3e4('0xd')][_0x3458c2[_0xd3e4('0x5a')]],this['voiceExtensions'][_0x3458c2[_0xd3e4('0x5b')]]);break;case'urlforward':urlforward['exec'](_0x518363,_0x3458c2);break;case _0xd3e4('0x5c'):script[_0xd3e4('0x59')](_0x518363,_0x3458c2);break;}}}}}}};Trigger[_0xd3e4('0x30')][_0xd3e4('0x43')]=function(_0xc5948,_0x117f37,_0x143a47){var _0x3bd816=url[_0xd3e4('0x5d')](Mustache[_0xd3e4('0x4e')](_0xc5948,_0x117f37),!![]);if(_0x143a47){_[_0xd3e4('0x54')](_0x3bd816[_0xd3e4('0x5e')],_0x117f37);}delete _0x3bd816[_0xd3e4('0x5f')];var _0x38a285=url[_0xd3e4('0x4f')](_0x3bd816);_0x38a285=_0x38a285[_0xd3e4('0x60')](/\/\?/g,'?');return _0x38a285;};Trigger[_0xd3e4('0x30')][_0xd3e4('0x61')]=function(_0x2f8efe,_0x4255d2){var _0x464076=!![];var _0x31fe8d=!![];var _0x5ecab7=![];if(_0x2f8efe[_0xd3e4('0x62')]===_0x4255d2[_0xd3e4('0x32')]){_0x5ecab7=!![];}if(_0x2f8efe[_0xd3e4('0x63')]['length']){_0x464076=_[_0xd3e4('0x64')](_0x2f8efe['AllConditions'],this['checkConditions'](_0x4255d2,_0x2f8efe[_0xd3e4('0x62')]));}if(_0x2f8efe[_0xd3e4('0x65')][_0xd3e4('0x3a')]){_0x31fe8d=_['some'](_0x2f8efe[_0xd3e4('0x65')],this['checkConditions'](_0x4255d2,_0x2f8efe[_0xd3e4('0x62')]));}return _0x5ecab7&&_0x464076&&_0x31fe8d;};Trigger[_0xd3e4('0x30')][_0xd3e4('0x66')]=function(_0x5b2a92,_0x31d4c9){return function(_0x873704){switch(_0x873704[_0xd3e4('0x67')]){case _0xd3e4('0x68'):if(_0x5b2a92[_0xd3e4('0x62')]===_0x31d4c9){if(_0x31d4c9===_0xd3e4('0x69')){return _0x5b2a92[_0xd3e4('0x6a')]?operators[_0x873704[_0xd3e4('0x6b')]](Number(_0x873704[_0xd3e4('0x6c')]),_0x5b2a92['ChatWebsiteId']):![];}else{return _0x5b2a92[_[_0xd3e4('0x6d')](_0x31d4c9)+_0xd3e4('0x6e')]?operators[_0x873704[_0xd3e4('0x6b')]](Number(_0x873704[_0xd3e4('0x6c')]),_0x5b2a92[_['upperFirst'](_0x31d4c9)+_0xd3e4('0x6e')]):![];}}break;case _0xd3e4('0x6f'):case _0xd3e4('0x70'):if(_0x5b2a92[_0xd3e4('0x62')]===_0x31d4c9){return _0x5b2a92[_0xd3e4('0x71')]?operators[_0x873704[_0xd3e4('0x6b')]](_0x873704[_0xd3e4('0x6c')],_0x5b2a92[_0xd3e4('0x71')]):![];}break;case _0xd3e4('0x5a'):return _0x5b2a92['queue']?operators[_0x873704[_0xd3e4('0x6b')]](_0x873704[_0xd3e4('0x6c')],_0x5b2a92[_0xd3e4('0x5a')]):![];case'agent':return _0x5b2a92[_0xd3e4('0x72')]?operators[_0x873704[_0xd3e4('0x6b')]](_0x873704[_0xd3e4('0x6c')],_0x5b2a92['membername']):![];case'lastevent':return _0x5b2a92[_0xd3e4('0x73')]?operators[_0x873704['operator']](_0x873704['value'],_0x5b2a92[_0xd3e4('0x73')]):![];case _0xd3e4('0x5b'):return _0x5b2a92[_0xd3e4('0x5b')]?operators[_0x873704[_0xd3e4('0x6b')]](_0x873704[_0xd3e4('0x6c')],_0x5b2a92[_0xd3e4('0x5b')]):![];case'mailSubstatus':if(_0x873704[_0xd3e4('0x6c')]==='null')_0x873704[_0xd3e4('0x6c')]=null;return typeof _0x5b2a92['substatus']!==_0xd3e4('0x33')?operators[_0x873704[_0xd3e4('0x6b')]](_0x873704['value'],_0x5b2a92[_0xd3e4('0x74')]):![];case _0xd3e4('0x75'):if(_0x5b2a92[_0xd3e4('0x62')]===_0x31d4c9){return _0x873704['value']==='created'&&_0x873704[_0xd3e4('0x6b')]===_0xd3e4('0x76')?!![]:![];}break;}return![];};};module[_0xd3e4('0x77')]=Trigger;
\ No newline at end of file
index 5538512..bf3c72b 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(_0x43b790,_0x272aa5){var _0x1d7311=function(_0x3d1d86){while(--_0x3d1d86){_0x43b790['push'](_0x43b790['shift']());}};_0x1d7311(++_0x272aa5);}(_0x55ca,0x126));var _0xa55c=function(_0x330723,_0x8de382){_0x330723=_0x330723-0x0;var _0x60c546=_0x55ca[_0x330723];return _0x60c546;};'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 _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe14b,0x93));var _0xbe14=function(_0x3766a2,_0x3f5516){_0x3766a2=_0x3766a2-0x0;var _0x5b299d=_0xe14b[_0x3766a2];return _0x5b299d;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
index d476e2b..c8a19c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a5=['CloudProvider','data7','tenantId','resolve','data5','POST','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','username','toLowerCase','outbound','calleridnum','contacts','Bearer\x20','body','headers','lastIndexOf','enduserId','destcalleridnum','telephone1','&$filter=','replace','%2b','value','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','includes','string','picklist','type','nameField','customField','idField','substring','indexOf','content','ticketType','incident','incidents','assign','getString','Descriptions','/contacts(','/systemusers(','callDirection','queue','phonecalls','Fields','odata-entityid','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','%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:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','ioredis','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri'];(function(_0x10dc64,_0x11bb29){var _0x9cf98d=function(_0x558d71){while(--_0x558d71){_0x10dc64['push'](_0x10dc64['shift']());}};_0x9cf98d(++_0x11bb29);}(_0xa0a5,0x1ad));var _0x5a0a=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa0a5[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x5a0a('0x0'));var rp=require(_0x5a0a('0x1'));var util=require(_0x5a0a('0x2'));var intUtil=require(_0x5a0a('0x3'));var md5=require(_0x5a0a('0x4'));var Redis=require(_0x5a0a('0x5'));var logger=require('../../../../config/logger')('dynamics365');var config=require('../../../../config/environment');config[_0x5a0a('0x6')]=_['defaults'](config[_0x5a0a('0x6')],{'host':_0x5a0a('0x7'),'port':0x18eb});var io=require(_0x5a0a('0x8'))(new Redis(config[_0x5a0a('0x6')]));function getAuthToken(_0x29dee0,_0x32051a,_0x24546d){if(_0x29dee0[_0x5a0a('0x9')]){_0x29dee0[_0x5a0a('0xa')]=_0x29dee0[_0x5a0a('0xb')][_0x5a0a('0xc')];_0x29dee0[_0x5a0a('0xd')]=_0x29dee0[_0x5a0a('0xb')]['data2'];return Promise[_0x5a0a('0xe')](_0x29dee0[_0x5a0a('0xb')][_0x5a0a('0xf')]);}var _0x27155b={'method':_0x5a0a('0x10'),'uri':_0x32051a,'form':{'client_id':_0x29dee0['clientId'],'resource':_0x29dee0['remoteUri'],'username':_0x29dee0['username'],'password':_0x29dee0[_0x5a0a('0x11')],'grant_type':_0x5a0a('0x11'),'client_secret':_0x29dee0[_0x5a0a('0x12')]},'json':!![]};return rp(_0x27155b)['then'](function(_0x435fa7){return _0x435fa7[_0x5a0a('0x13')];})[_0x5a0a('0x14')](function(_0x146a51){logger[_0x5a0a('0x15')]('['+[_0x24546d[_0x5a0a('0x16')]()]+_0x5a0a('0x17'));return _0x146a51[_0x5a0a('0x18')];});}function getUser(_0x369fb4,_0x3fb743,_0x3fd73b,_0x583877,_0x589df7,_0x5e93e6){return new Promise(function(_0x1fed65,_0x407c6a){return getAuthToken(_0x3fb743,_0x583877,_0x5e93e6)[_0x5a0a('0x19')](function(_0x1cd147){var _0x36d335={'method':_0x5a0a('0x1a'),'uri':_0x589df7+_0x5a0a('0x1b'),'headers':{'Authorization':'Bearer\x20'+_0x1cd147,'OData-Version':_0x5a0a('0x1c')},'json':!![]};return rp(_0x36d335);})['then'](function(_0x1a4afc){var _0x308846=_0x1a4afc['value'];var _0x361659=![];var _0x1f4165=null;if(!_['isNil'](_0x3fd73b)){if(intUtil[_0x5a0a('0x1d')](_0x3fd73b[_0x5a0a('0x1e')])){_0x369fb4[_0x5a0a('0x1f')]=_0x3fd73b[_0x5a0a('0x1e')];for(_0x1f4165=0x0;_0x1f4165<_0x308846[_0x5a0a('0x20')];_0x1f4165++){if(_0x308846[_0x1f4165][_0x5a0a('0x21')]===_0x3fd73b['email']&&!_0x308846[_0x1f4165][_0x5a0a('0x22')]){_0x361659=!![];logger[_0x5a0a('0x23')]('['+[_0x5e93e6[_0x5a0a('0x16')]()]+_0x5a0a('0x24')+_0x308846[_0x1f4165][_0x5a0a('0x25')]+'!');_0x369fb4[_0x5a0a('0x26')]=_0x308846[_0x1f4165][_0x5a0a('0x25')];}}}}if(!_0x361659){logger[_0x5a0a('0x23')]('['+[_0x5e93e6[_0x5a0a('0x16')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x369fb4[_0x5a0a('0x1f')]=_0x3fb743[_0x5a0a('0x27')];for(_0x1f4165=0x0;_0x1f4165<_0x308846[_0x5a0a('0x20')];_0x1f4165++){if(_0x308846[_0x1f4165][_0x5a0a('0x21')]===_0x3fb743[_0x5a0a('0x27')]){_0x369fb4[_0x5a0a('0x26')]=_0x308846[_0x1f4165][_0x5a0a('0x25')];}}}_0x1fed65(_0x369fb4);})['catch'](function(_0x17cc5e){_0x407c6a(_0x17cc5e[_0x5a0a('0x18')]);});});}function createEndUser(_0x493f24,_0x5f06ee,_0x42cae2,_0x3a5aa4,_0x151ba4,_0x1b371d,_0x10ff45){return new Promise(function(_0x4c34ce,_0x3fa483){return getAuthToken(_0x5f06ee,_0x42cae2,_0x1b371d)['then'](function(_0x5cdc23){var _0x4bb2a2=_0x1b371d[_0x5a0a('0x28')]()===_0x5a0a('0x29')?_0x151ba4['destcalleridnum']:_0x151ba4[_0x5a0a('0x2a')];var _0x3a5f2c={'method':_0x5a0a('0x10'),'uri':_0x3a5aa4+_0x5a0a('0x2b'),'body':{'fullname':_0x4bb2a2,'firstname':_0x4bb2a2,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x493f24[_0x5a0a('0x26')]+')'},'headers':{'Authorization':_0x5a0a('0x2c')+_0x5cdc23,'OData-Version':_0x5a0a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x3a5f2c[_0x5a0a('0x2d')][_0x10ff45]=_0x4bb2a2;return rp(_0x3a5f2c);})[_0x5a0a('0x19')](function(_0x28a717){var _0x432e2e=_0x28a717[_0x5a0a('0x2e')]['odata-entityid'];var _0x28f9ec=_0x432e2e['substring'](_0x432e2e[_0x5a0a('0x2f')]('(')+0x1,_0x432e2e[_0x5a0a('0x2f')](')'));_0x493f24[_0x5a0a('0x30')]=_0x28f9ec;_0x4c34ce(_0x493f24);})[_0x5a0a('0x14')](function(_0x4251a4){_0x3fa483(_0x4251a4[_0x5a0a('0x18')]);});});}function getEndUser(_0x593a6b,_0x49eed0,_0x43de3c,_0x127be2,_0x14f626,_0x1f3d23,_0x3c842c,_0x262ad3){var _0x20eba2=_0x1f3d23[_0x5a0a('0x28')]()===_0x5a0a('0x29')?_0x14f626[_0x5a0a('0x31')]:_0x14f626[_0x5a0a('0x2a')];return getAuthToken(_0x49eed0,_0x43de3c,_0x1f3d23)[_0x5a0a('0x19')](function(_0x28064f){_0x262ad3=_0x262ad3?_0x262ad3:_0x5a0a('0x32');var _0x20cc72={'method':'GET','uri':_0x127be2+'contacts?$select='+_0x262ad3+_0x5a0a('0x33')+_0x262ad3+'\x20eq\x20\x27'+_0x20eba2[_0x5a0a('0x34')]('+',_0x5a0a('0x35'))+'\x27','headers':{'Authorization':_0x5a0a('0x2c')+_0x28064f,'If-None-Match':null,'OData-Version':_0x5a0a('0x1c')},'json':!![]};return rp(_0x20cc72);})[_0x5a0a('0x19')](function(_0x20f54b){var _0x2e26be=![];if(!_0x20f54b)return _0x2e26be;var _0x37616d=_0x20f54b[_0x5a0a('0x36')];for(var _0x2562d9=0x0;_0x2562d9<_0x37616d[_0x5a0a('0x20')];_0x2562d9++){if(_0x37616d[_0x2562d9][_0x262ad3]===_0x20eba2){_0x2e26be=!![];_0x593a6b[_0x5a0a('0x30')]=_0x37616d[_0x2562d9][_0x5a0a('0x37')];}}return _0x2e26be;})[_0x5a0a('0x19')](function(_0x2e698c){if(_0x2e698c)return _0x593a6b;if(_0x3c842c==='nothing'){logger[_0x5a0a('0x23')]('['+[_0x1f3d23[_0x5a0a('0x16')]()]+_0x5a0a('0x38'));return _0x593a6b;}return createEndUser(_0x593a6b,_0x49eed0,_0x43de3c,_0x127be2,_0x14f626,_0x1f3d23,_0x262ad3)[_0x5a0a('0x19')](function(_0x436c2a){logger[_0x5a0a('0x23')]('['+[_0x1f3d23['toUpperCase']()]+_0x5a0a('0x39'),_0x436c2a[_0x5a0a('0x30')]);return _0x436c2a;});});}function getCustomFields(_0x169472,_0x45c8bd,_0x31065d){var _0x2c9794={};if(_0x169472['length']>0x0){_['forEach'](_0x169472,function(_0x47acf9){if(_[_0x5a0a('0x3a')]([_0x5a0a('0x3b'),_0x5a0a('0x3c')],_0x47acf9[_0x5a0a('0x3d')])&&_0x47acf9[_0x5a0a('0x3e')]&&!_0x47acf9[_0x5a0a('0x3f')]){var _0x26c565=_0x47acf9[_0x5a0a('0x40')][_0x5a0a('0x28')]();var _0x3ff829=_0x26c565[_0x5a0a('0x41')](0x0,_0x26c565[_0x5a0a('0x42')]('_'));var _0x427250=_0x26c565[_0x5a0a('0x41')](_0x26c565['indexOf']('_')+0x1);if(_0x3ff829===_0x31065d){_0x2c9794[_0x427250]=_0x47acf9[_0x5a0a('0x43')];}}});}return _0x2c9794;}function getTicket(_0x59d727,_0x379e94,_0x7a5c06,_0x2da244,_0x3ffc3e,_0x14b3ca,_0x8f3294){return new Promise(function(_0x5d3b9a,_0x4800cc){var _0x39b552;return getAuthToken(_0x379e94,_0x7a5c06,_0x8f3294)['then'](function(_0x23065c){if(_0x14b3ca[_0x5a0a('0x44')]===_0x5a0a('0x45')){_0x39b552={'method':_0x5a0a('0x10'),'uri':_0x2da244+_0x5a0a('0x46'),'body':Object[_0x5a0a('0x47')]({},{'title':intUtil[_0x5a0a('0x48')](_0x14b3ca['Subjects'],_0x3ffc3e,'\x20'),'description':intUtil[_0x5a0a('0x48')](_0x14b3ca[_0x5a0a('0x49')],_0x3ffc3e,'\x0a'),'customerid_contact@odata.bind':_0x59d727[_0x5a0a('0x30')]?_0x5a0a('0x4a')+_0x59d727['enduserId']+')':undefined,'ownerid@odata.bind':_0x5a0a('0x4b')+_0x59d727[_0x5a0a('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x14b3ca['Fields'],_0x3ffc3e,_0x14b3ca['ticketType'])),'headers':{'Authorization':_0x5a0a('0x2c')+_0x23065c,'OData-Version':_0x5a0a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x14b3ca[_0x5a0a('0x44')]==='phonecall'){var _0x49eba6=_0x59d727['enduserId']?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x59d727[_0x5a0a('0x26')]+')','participationtypemask':_0x59d727[_0x5a0a('0x4c')]===_0x5a0a('0x4d')?0x2:0x1},{'partyid_contact@odata.bind':_0x5a0a('0x4a')+_0x59d727[_0x5a0a('0x30')]+')','participationtypemask':_0x59d727[_0x5a0a('0x4c')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x5a0a('0x4b')+_0x59d727['userId']+')','participationtypemask':_0x59d727[_0x5a0a('0x4c')]===_0x5a0a('0x4d')?0x2:0x1}];_0x39b552={'method':_0x5a0a('0x10'),'uri':_0x2da244+_0x5a0a('0x4e'),'body':Object[_0x5a0a('0x47')]({},{'subject':intUtil[_0x5a0a('0x48')](_0x14b3ca['Subjects'],_0x3ffc3e,'\x20'),'phonenumber':String(_0x3ffc3e[_0x5a0a('0x2a')]),'description':intUtil[_0x5a0a('0x48')](_0x14b3ca[_0x5a0a('0x49')],_0x3ffc3e,'\x0a'),'regardingobjectid_contact@odata.bind':_0x59d727[_0x5a0a('0x30')]?_0x5a0a('0x4a')+_0x59d727[_0x5a0a('0x30')]+')':undefined,'ownerid@odata.bind':_0x5a0a('0x4b')+_0x59d727[_0x5a0a('0x26')]+')','directioncode':_0x59d727[_0x5a0a('0x4c')]===_0x5a0a('0x4d')?![]:!![],'phonecall_activity_parties':_0x49eba6},getCustomFields(_0x14b3ca[_0x5a0a('0x4f')],_0x3ffc3e,_0x14b3ca[_0x5a0a('0x44')])),'headers':{'Authorization':_0x5a0a('0x2c')+_0x23065c,'OData-Version':_0x5a0a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x39b552);})['then'](function(_0xed4029){var _0x4f354f=_0xed4029[_0x5a0a('0x2e')][_0x5a0a('0x50')];var _0x5980ee=_0x4f354f[_0x5a0a('0x41')](_0x4f354f[_0x5a0a('0x2f')]('(')+0x1,_0x4f354f[_0x5a0a('0x2f')](')'));_0x59d727[_0x5a0a('0x51')]=_0x5980ee;_0x5d3b9a(_0x59d727);})['catch'](function(_0x2c56e5){_0x4800cc(_0x2c56e5[_0x5a0a('0x18')]);});});}function emit(_0x5a2549,_0x1290da,_0x5ba4b5,_0x23ea1f){var _0xb3215e={'uri':util['format'](_0x5a0a('0x52'),_0x5a2549,_0x5ba4b5,_0x23ea1f)};io['to'](util[_0x5a0a('0x53')](_0x5a0a('0x54'),_0x1290da))[_0x5a0a('0x55')](_0x5a0a('0x56'),_0xb3215e);}exports['cs']=function(_0x1cab28,_0x4555b5,_0x2924b3,_0x4ffca3,_0xd9b722,_0x5c6949,_0x5ce0d3,_0x4c5d73){var _0x53bd72={};_0x5c6949[_0x5a0a('0xa')]=_0x5c6949['modernAuthentication']?intUtil[_0x5a0a('0x57')](_0x5c6949[_0x5a0a('0xb')]['data7']):intUtil['stripTrailingSlash'](_0x5c6949[_0x5a0a('0xa')]);_0x5c6949['serverUrl']=intUtil[_0x5a0a('0x57')](_0x5c6949[_0x5a0a('0x58')]);_0x53bd72[_0x5a0a('0x4c')]=_0x4c5d73===_0x5a0a('0x4d')||_0x4c5d73==='unmanaged'?_0x5a0a('0x4d'):_0x5a0a('0x29');var _0xf7e741=_0x5c6949[_0x5a0a('0x9')]?util[_0x5a0a('0x53')](_0x5a0a('0x59'),_0x5c6949[_0x5a0a('0xb')][_0x5a0a('0xc')]):util[_0x5a0a('0x53')](_0x5a0a('0x59'),_0x5c6949[_0x5a0a('0xa')]);var _0x7e7690=util[_0x5a0a('0x53')]('https://login.microsoftonline.com/%s/oauth2/token',_0x5c6949['tenantId']);var _0x3b0590=util[_0x5a0a('0x53')](_0x5a0a('0x5a'),_0x5c6949[_0x5a0a('0x58')],_0x4555b5[_0x5a0a('0x5b')],md5(_0x4555b5[_0x5a0a('0x5b')]));if(_0xd9b722&&_0xd9b722[_0x5a0a('0x5c')]){logger[_0x5a0a('0x23')](_0x5a0a('0x5d'),_0x5a0a('0x5e'));_0x4555b5['recordingURL']=_0x3b0590;}else if(_0x5ce0d3&&_0x5ce0d3[_0x5a0a('0x5f')]&&_0x5ce0d3[_0x5a0a('0x5f')]!==_0x5a0a('0x60')){logger['info'](_0x5a0a('0x61'),_0x5a0a('0x5e'));_0x4555b5[_0x5a0a('0x62')]=_0x3b0590;}else{_0x4555b5['recordingURL']='';}return getUser(_0x53bd72,_0x5c6949,_0x4ffca3,_0x7e7690,_0xf7e741,_0x4c5d73)[_0x5a0a('0x19')](function(_0x2f0b05){logger['info']('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x63'),_0x2f0b05[_0x5a0a('0x26')]);logger['info']('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x64'),_0x2f0b05[_0x5a0a('0x1f')]);return getEndUser(_0x2f0b05,_0x5c6949,_0x7e7690,_0xf7e741,_0x4555b5,_0x4c5d73,_0x2924b3[_0x5a0a('0x65')],_0x2924b3[_0x5a0a('0x66')]);})[_0x5a0a('0x19')](function(_0x103369){logger[_0x5a0a('0x23')]('['+_0x4c5d73[_0x5a0a('0x16')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x103369['enduserId']);logger[_0x5a0a('0x23')]('['+_0x4c5d73['toUpperCase']()+_0x5a0a('0x67'),_0x4555b5[_0x5a0a('0x2a')]);return getTicket(_0x103369,_0x5c6949,_0x7e7690,_0xf7e741,_0x4555b5,_0x2924b3,_0x4c5d73);})[_0x5a0a('0x19')](function(_0xa7f39d){logger[_0x5a0a('0x23')](util[_0x5a0a('0x53')]('['+_0x4c5d73['toUpperCase']()+_0x5a0a('0x68'),_0x2924b3[_0x5a0a('0x44')],_0xa7f39d['ticketId']));logger['info'](util[_0x5a0a('0x53')]('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x69'),_0x4c5d73));if(_0x4c5d73!=='unmanaged'&&_0x2924b3[_0x5a0a('0x6a')]){logger[_0x5a0a('0x23')]('['+_0x4c5d73[_0x5a0a('0x16')]()+']',_0x5a0a('0x6b'));emit(_0x5c6949[_0x5a0a('0xa')],_0x4ffca3['name'],_0x2924b3[_0x5a0a('0x44')],_0xa7f39d[_0x5a0a('0x51')]);}})[_0x5a0a('0x14')](function(_0x1e1371){logger[_0x5a0a('0x15')]('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x6c'),_0x1e1371[_0x5a0a('0x18')]);console[_0x5a0a('0x15')](_0x5a0a('0x6d'),_0x1e1371);});};
\ No newline at end of file
+var _0x8f41=['toLowerCase','calleridnum','telephone1','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','toUpperCase',']\x20Enduser\x20created!','string','picklist','type','nameField','customField','idField','indexOf','content','incident','incidents','getString','Subjects','/contacts(','Fields','ticketType','phonecall','/systemusers(','queue','callDirection','Descriptions','odata-entityid','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingFormat','Recording\x20is\x20enabled!','recordingURL','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','modernAuthentication','remoteUri','CloudProvider','data7','data2','resolve','POST','clientId','username','password','then','access_token','catch',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','value','isNil','validateEmail','userEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','destcalleridnum','contacts','4.0','body','headers','substring','lastIndexOf','enduserId'];(function(_0x3e7a79,_0x3aba6a){var _0xfb7240=function(_0x3e4eb6){while(--_0x3e4eb6){_0x3e7a79['push'](_0x3e7a79['shift']());}};_0xfb7240(++_0x3aba6a);}(_0x8f41,0x1e0));var _0x18f4=function(_0x31b936,_0x1a05a6){_0x31b936=_0x31b936-0x0;var _0x5d5f19=_0x8f41[_0x31b936];return _0x5d5f19;};'use strict';var _=require(_0x18f4('0x0'));var rp=require(_0x18f4('0x1'));var util=require(_0x18f4('0x2'));var intUtil=require(_0x18f4('0x3'));var md5=require(_0x18f4('0x4'));var Redis=require('ioredis');var logger=require(_0x18f4('0x5'))(_0x18f4('0x6'));var config=require(_0x18f4('0x7'));config[_0x18f4('0x8')]=_[_0x18f4('0x9')](config['redis'],{'host':_0x18f4('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAuthToken(_0x1b44f1,_0xc85e06,_0x8d2392){if(_0x1b44f1[_0x18f4('0xb')]){_0x1b44f1[_0x18f4('0xc')]=_0x1b44f1[_0x18f4('0xd')][_0x18f4('0xe')];_0x1b44f1['tenantId']=_0x1b44f1['CloudProvider'][_0x18f4('0xf')];return Promise[_0x18f4('0x10')](_0x1b44f1['CloudProvider']['data5']);}var _0x4e8601={'method':_0x18f4('0x11'),'uri':_0xc85e06,'form':{'client_id':_0x1b44f1[_0x18f4('0x12')],'resource':_0x1b44f1['remoteUri'],'username':_0x1b44f1[_0x18f4('0x13')],'password':_0x1b44f1[_0x18f4('0x14')],'grant_type':_0x18f4('0x14'),'client_secret':_0x1b44f1['clientSecret']},'json':!![]};return rp(_0x4e8601)[_0x18f4('0x15')](function(_0x3c4fd4){return _0x3c4fd4[_0x18f4('0x16')];})[_0x18f4('0x17')](function(_0x5ec0d3){logger['error']('['+[_0x8d2392['toUpperCase']()]+_0x18f4('0x18'));return _0x5ec0d3[_0x18f4('0x19')];});}function getUser(_0x39a30c,_0x1ed6d6,_0x218d5d,_0x3e1c82,_0x3fe5ff,_0x2e9ddd){return new Promise(function(_0x8300dc,_0x53d14b){return getAuthToken(_0x1ed6d6,_0x3e1c82,_0x2e9ddd)[_0x18f4('0x15')](function(_0x23bd5f){var _0x4fbc51={'method':_0x18f4('0x1a'),'uri':_0x3fe5ff+_0x18f4('0x1b'),'headers':{'Authorization':_0x18f4('0x1c')+_0x23bd5f,'OData-Version':'4.0'},'json':!![]};return rp(_0x4fbc51);})['then'](function(_0x35eee2){var _0x5eb01c=_0x35eee2[_0x18f4('0x1d')];var _0x592616=![];var _0x251e04=null;if(!_[_0x18f4('0x1e')](_0x218d5d)){if(intUtil[_0x18f4('0x1f')](_0x218d5d['email'])){_0x39a30c[_0x18f4('0x20')]=_0x218d5d[_0x18f4('0x21')];for(_0x251e04=0x0;_0x251e04<_0x5eb01c[_0x18f4('0x22')];_0x251e04++){if(_0x5eb01c[_0x251e04][_0x18f4('0x23')]===_0x218d5d[_0x18f4('0x21')]&&!_0x5eb01c[_0x251e04][_0x18f4('0x24')]){_0x592616=!![];logger[_0x18f4('0x25')]('['+[_0x2e9ddd['toUpperCase']()]+_0x18f4('0x26')+_0x5eb01c[_0x251e04][_0x18f4('0x27')]+'!');_0x39a30c['userId']=_0x5eb01c[_0x251e04][_0x18f4('0x27')];}}}}if(!_0x592616){logger[_0x18f4('0x25')]('['+[_0x2e9ddd['toUpperCase']()]+_0x18f4('0x28'));_0x39a30c[_0x18f4('0x20')]=_0x1ed6d6[_0x18f4('0x13')];for(_0x251e04=0x0;_0x251e04<_0x5eb01c[_0x18f4('0x22')];_0x251e04++){if(_0x5eb01c[_0x251e04][_0x18f4('0x23')]===_0x1ed6d6[_0x18f4('0x13')]){_0x39a30c[_0x18f4('0x29')]=_0x5eb01c[_0x251e04]['systemuserid'];}}}_0x8300dc(_0x39a30c);})['catch'](function(_0x147718){_0x53d14b(_0x147718['message']);});});}function createEndUser(_0x1e4c68,_0x55ab89,_0x4d0564,_0x583f80,_0x15da91,_0x45d8a4,_0x187d57){return new Promise(function(_0x325710,_0x5c98b8){return getAuthToken(_0x55ab89,_0x4d0564,_0x45d8a4)[_0x18f4('0x15')](function(_0xb277c7){var _0x161a28=_0x45d8a4['toLowerCase']()==='outbound'?_0x15da91[_0x18f4('0x2a')]:_0x15da91['calleridnum'];var _0x56512a={'method':'POST','uri':_0x583f80+_0x18f4('0x2b'),'body':{'fullname':_0x161a28,'firstname':_0x161a28,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x1e4c68[_0x18f4('0x29')]+')'},'headers':{'Authorization':_0x18f4('0x1c')+_0xb277c7,'OData-Version':_0x18f4('0x2c')},'json':!![],'resolveWithFullResponse':!![]};_0x56512a[_0x18f4('0x2d')][_0x187d57]=_0x161a28;return rp(_0x56512a);})[_0x18f4('0x15')](function(_0x1ad22c){var _0xa848ae=_0x1ad22c[_0x18f4('0x2e')]['odata-entityid'];var _0x453873=_0xa848ae[_0x18f4('0x2f')](_0xa848ae[_0x18f4('0x30')]('(')+0x1,_0xa848ae[_0x18f4('0x30')](')'));_0x1e4c68[_0x18f4('0x31')]=_0x453873;_0x325710(_0x1e4c68);})[_0x18f4('0x17')](function(_0x152308){_0x5c98b8(_0x152308['message']);});});}function getEndUser(_0x4ae52e,_0x2f611a,_0x2970de,_0x1d42ea,_0x56a633,_0x5cd0af,_0x28f72b,_0x290d74){var _0x530a03=_0x5cd0af[_0x18f4('0x32')]()==='outbound'?_0x56a633[_0x18f4('0x2a')]:_0x56a633[_0x18f4('0x33')];return getAuthToken(_0x2f611a,_0x2970de,_0x5cd0af)['then'](function(_0x47533b){_0x290d74=_0x290d74?_0x290d74:_0x18f4('0x34');var _0x1e4865={'method':_0x18f4('0x1a'),'uri':_0x1d42ea+'contacts?$select='+_0x290d74+'&$filter='+_0x290d74+_0x18f4('0x35')+_0x530a03[_0x18f4('0x36')]('+',_0x18f4('0x37'))+'\x27','headers':{'Authorization':_0x18f4('0x1c')+_0x47533b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1e4865);})['then'](function(_0x41b163){var _0x186648=![];if(!_0x41b163)return _0x186648;var _0x4ad808=_0x41b163[_0x18f4('0x1d')];for(var _0x3ef924=0x0;_0x3ef924<_0x4ad808[_0x18f4('0x22')];_0x3ef924++){if(_0x4ad808[_0x3ef924][_0x290d74]===_0x530a03){_0x186648=!![];_0x4ae52e['enduserId']=_0x4ad808[_0x3ef924][_0x18f4('0x38')];}}return _0x186648;})[_0x18f4('0x15')](function(_0x6c7429){if(_0x6c7429)return _0x4ae52e;if(_0x28f72b===_0x18f4('0x39')){logger[_0x18f4('0x25')]('['+[_0x5cd0af['toUpperCase']()]+_0x18f4('0x3a'));return _0x4ae52e;}return createEndUser(_0x4ae52e,_0x2f611a,_0x2970de,_0x1d42ea,_0x56a633,_0x5cd0af,_0x290d74)['then'](function(_0x48ac34){logger[_0x18f4('0x25')]('['+[_0x5cd0af[_0x18f4('0x3b')]()]+_0x18f4('0x3c'),_0x48ac34['enduserId']);return _0x48ac34;});});}function getCustomFields(_0x42e88d,_0xc23f52,_0xd0efc0){var _0x1d5669={};if(_0x42e88d[_0x18f4('0x22')]>0x0){_['forEach'](_0x42e88d,function(_0x18a5ef){if(_['includes']([_0x18f4('0x3d'),_0x18f4('0x3e')],_0x18a5ef[_0x18f4('0x3f')])&&_0x18a5ef[_0x18f4('0x40')]&&!_0x18a5ef[_0x18f4('0x41')]){var _0x317084=_0x18a5ef[_0x18f4('0x42')][_0x18f4('0x32')]();var _0x51a100=_0x317084[_0x18f4('0x2f')](0x0,_0x317084[_0x18f4('0x43')]('_'));var _0x5b8fad=_0x317084['substring'](_0x317084[_0x18f4('0x43')]('_')+0x1);if(_0x51a100===_0xd0efc0){_0x1d5669[_0x5b8fad]=_0x18a5ef[_0x18f4('0x44')];}}});}return _0x1d5669;}function getTicket(_0x19956e,_0x10feb7,_0x192b7e,_0x44e914,_0x4e0b89,_0x45b3e0,_0x568362){return new Promise(function(_0x31c061,_0x4915a9){var _0x12f9e3;return getAuthToken(_0x10feb7,_0x192b7e,_0x568362)[_0x18f4('0x15')](function(_0x4635a7){if(_0x45b3e0['ticketType']===_0x18f4('0x45')){_0x12f9e3={'method':_0x18f4('0x11'),'uri':_0x44e914+_0x18f4('0x46'),'body':Object['assign']({},{'title':intUtil[_0x18f4('0x47')](_0x45b3e0[_0x18f4('0x48')],_0x4e0b89,'\x20'),'description':intUtil[_0x18f4('0x47')](_0x45b3e0['Descriptions'],_0x4e0b89,'\x0a'),'customerid_contact@odata.bind':_0x19956e[_0x18f4('0x31')]?_0x18f4('0x49')+_0x19956e[_0x18f4('0x31')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x19956e[_0x18f4('0x29')]+')','caseorigincode':'1'},getCustomFields(_0x45b3e0[_0x18f4('0x4a')],_0x4e0b89,_0x45b3e0[_0x18f4('0x4b')])),'headers':{'Authorization':_0x18f4('0x1c')+_0x4635a7,'OData-Version':_0x18f4('0x2c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x45b3e0[_0x18f4('0x4b')]===_0x18f4('0x4c')){var _0x52df25=_0x19956e[_0x18f4('0x31')]?[{'partyid_systemuser@odata.bind':_0x18f4('0x4d')+_0x19956e[_0x18f4('0x29')]+')','participationtypemask':_0x19956e['callDirection']===_0x18f4('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x19956e[_0x18f4('0x31')]+')','participationtypemask':_0x19956e[_0x18f4('0x4f')]===_0x18f4('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x19956e[_0x18f4('0x29')]+')','participationtypemask':_0x19956e[_0x18f4('0x4f')]===_0x18f4('0x4e')?0x2:0x1}];_0x12f9e3={'method':_0x18f4('0x11'),'uri':_0x44e914+'phonecalls','body':Object['assign']({},{'subject':intUtil[_0x18f4('0x47')](_0x45b3e0[_0x18f4('0x48')],_0x4e0b89,'\x20'),'phonenumber':String(_0x4e0b89[_0x18f4('0x33')]),'description':intUtil['getString'](_0x45b3e0[_0x18f4('0x50')],_0x4e0b89,'\x0a'),'regardingobjectid_contact@odata.bind':_0x19956e[_0x18f4('0x31')]?_0x18f4('0x49')+_0x19956e[_0x18f4('0x31')]+')':undefined,'ownerid@odata.bind':_0x18f4('0x4d')+_0x19956e[_0x18f4('0x29')]+')','directioncode':_0x19956e['callDirection']===_0x18f4('0x4e')?![]:!![],'phonecall_activity_parties':_0x52df25},getCustomFields(_0x45b3e0['Fields'],_0x4e0b89,_0x45b3e0[_0x18f4('0x4b')])),'headers':{'Authorization':_0x18f4('0x1c')+_0x4635a7,'OData-Version':_0x18f4('0x2c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x12f9e3);})[_0x18f4('0x15')](function(_0x4481ce){var _0x292eff=_0x4481ce['headers'][_0x18f4('0x51')];var _0x4310eb=_0x292eff[_0x18f4('0x2f')](_0x292eff[_0x18f4('0x30')]('(')+0x1,_0x292eff[_0x18f4('0x30')](')'));_0x19956e[_0x18f4('0x52')]=_0x4310eb;_0x31c061(_0x19956e);})['catch'](function(_0x8b38a4){_0x4915a9(_0x8b38a4[_0x18f4('0x19')]);});});}function emit(_0x12f84c,_0x41cbd2,_0x290f9b,_0x2173e0){var _0x1be829={'uri':util['format'](_0x18f4('0x53'),_0x12f84c,_0x290f9b,_0x2173e0)};io['to'](util[_0x18f4('0x54')](_0x18f4('0x55'),_0x41cbd2))['emit'](_0x18f4('0x56'),_0x1be829);}exports['cs']=function(_0x5b7460,_0x59db3c,_0x3cce88,_0xe65379,_0x3528b1,_0x472b93,_0x4eedbb,_0x3e0af5){var _0x10f3ff={};_0x472b93[_0x18f4('0xc')]=_0x472b93['modernAuthentication']?intUtil[_0x18f4('0x57')](_0x472b93[_0x18f4('0xd')]['data7']):intUtil[_0x18f4('0x57')](_0x472b93['remoteUri']);_0x472b93[_0x18f4('0x58')]=intUtil[_0x18f4('0x57')](_0x472b93[_0x18f4('0x58')]);_0x10f3ff['callDirection']=_0x3e0af5==='queue'||_0x3e0af5===_0x18f4('0x59')?'queue':'outbound';var _0x2a2e54=_0x472b93[_0x18f4('0xb')]?util[_0x18f4('0x54')](_0x18f4('0x5a'),_0x472b93[_0x18f4('0xd')][_0x18f4('0xe')]):util[_0x18f4('0x54')]('%s/api/data/v9.0/',_0x472b93['remoteUri']);var _0x2080d3=util['format'](_0x18f4('0x5b'),_0x472b93[_0x18f4('0x5c')]);var _0x1f28f8=util['format'](_0x18f4('0x5d'),_0x472b93[_0x18f4('0x58')],_0x59db3c[_0x18f4('0x5e')],md5(_0x59db3c[_0x18f4('0x5e')]));if(_0x3528b1&&_0x3528b1['monitor_format']){logger[_0x18f4('0x25')](_0x18f4('0x5f'),'Recording\x20is\x20enabled!');_0x59db3c['recordingURL']=_0x1f28f8;}else if(_0x4eedbb&&_0x4eedbb[_0x18f4('0x60')]&&_0x4eedbb[_0x18f4('0x60')]!=='none'){logger[_0x18f4('0x25')]('[OUTBOUND]',_0x18f4('0x61'));_0x59db3c[_0x18f4('0x62')]=_0x1f28f8;}else{_0x59db3c[_0x18f4('0x62')]='';}return getUser(_0x10f3ff,_0x472b93,_0xe65379,_0x2080d3,_0x2a2e54,_0x3e0af5)[_0x18f4('0x15')](function(_0x5e0c21){logger[_0x18f4('0x25')]('['+_0x3e0af5[_0x18f4('0x3b')]()+']\x20The\x20User\x20ID\x20is:',_0x5e0c21[_0x18f4('0x29')]);logger[_0x18f4('0x25')]('['+_0x3e0af5[_0x18f4('0x3b')]()+']\x20The\x20User\x20email\x20is:',_0x5e0c21['userEmail']);return getEndUser(_0x5e0c21,_0x472b93,_0x2080d3,_0x2a2e54,_0x59db3c,_0x3e0af5,_0x3cce88[_0x18f4('0x63')],_0x3cce88['additionalSearchContact']);})[_0x18f4('0x15')](function(_0x289599){logger[_0x18f4('0x25')]('['+_0x3e0af5[_0x18f4('0x3b')]()+_0x18f4('0x64'),_0x289599[_0x18f4('0x31')]);logger['info']('['+_0x3e0af5[_0x18f4('0x3b')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x59db3c[_0x18f4('0x33')]);return getTicket(_0x289599,_0x472b93,_0x2080d3,_0x2a2e54,_0x59db3c,_0x3cce88,_0x3e0af5);})[_0x18f4('0x15')](function(_0x710183){logger[_0x18f4('0x25')](util[_0x18f4('0x54')]('['+_0x3e0af5[_0x18f4('0x3b')]()+_0x18f4('0x65'),_0x3cce88[_0x18f4('0x4b')],_0x710183[_0x18f4('0x52')]));logger['info'](util[_0x18f4('0x54')]('['+_0x3e0af5['toUpperCase']()+_0x18f4('0x66'),_0x3e0af5));if(_0x3e0af5!==_0x18f4('0x59')&&_0x3cce88['openNewTab']){logger['info']('['+_0x3e0af5[_0x18f4('0x3b')]()+']',_0x18f4('0x67'));emit(_0x472b93['remoteUri'],_0xe65379[_0x18f4('0x68')],_0x3cce88[_0x18f4('0x4b')],_0x710183[_0x18f4('0x52')]);}})[_0x18f4('0x17')](function(_0x289de7){logger[_0x18f4('0x69')]('['+_0x3e0af5[_0x18f4('0x3b')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x289de7[_0x18f4('0x19')]);console['error']('Error\x20running\x20Dynamics365\x20integration',_0x289de7);});};
\ No newline at end of file
index 063c3b1..bf6fb04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd24c=['queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','[QUEUE]','stringify','outbound','recordingFormat','destcalleridname','destcalleridnum','[OUTBOUND]','unmanaged','lastevent','error','toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','application/json','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','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','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','defaults','GET','map','includes','picklist','type','nameField','toLowerCase','content','string','idField','push','variable','customField','variableName','customVariable','Variable'];(function(_0x3ff9bd,_0x547b54){var _0x4070c2=function(_0x25fcee){while(--_0x25fcee){_0x3ff9bd['push'](_0x3ff9bd['shift']());}};_0x4070c2(++_0x547b54);}(_0xd24c,0x7d));var _0xcd24=function(_0x45104b,_0x4b4fe9){_0x45104b=_0x45104b-0x0;var _0x55f5ac=_0xd24c[_0x45104b];return _0x55f5ac;};'use strict';var _=require(_0xcd24('0x0'));var rp=require(_0xcd24('0x1'));var md5=require(_0xcd24('0x2'));var util=require(_0xcd24('0x3'));var Redis=require(_0xcd24('0x4'));var intUtil=require('./util');var config=require(_0xcd24('0x5'));var logger=require(_0xcd24('0x6'))(_0xcd24('0x7'));config[_0xcd24('0x8')]=_['defaults'](config[_0xcd24('0x8')],{'host':_0xcd24('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcd24('0x8')]));var headers={'Content-Type':_0xcd24('0xa'),'Accept':_0xcd24('0xa')};function emit(_0x5371f5,_0x5d71dd,_0x2f149b){io['to'](_0x5371f5)['emit'](_0x5d71dd,_0x2f149b);}function getTicket(_0x3c0cc5,_0x10047a,_0x3a955e,_0x42c3bb,_0x5c33a3){logger[_0xcd24('0xb')](_0xcd24('0xc'));var _0x731592=_[_0xcd24('0xd')]({'responder_id':_0x10047a['id'],'requester_id':_0x3a955e['id'],'name':util[_0xcd24('0xe')]('Caller\x20-\x20%s',_0x5c33a3[_0xcd24('0xf')]),'phone':_0x5c33a3[_0xcd24('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x42c3bb['Subjects'],_0x5c33a3,'\x20'),'description':intUtil[_0xcd24('0x11')](_0x42c3bb[_0xcd24('0x12')],_0x5c33a3,_0xcd24('0x13')),'tags':getTags(_0x42c3bb[_0xcd24('0x14')],_0xcd24('0x15'))},getCustomFields(_0x42c3bb['Fields'],_0x5c33a3));_0x731592[_0xcd24('0x16')]=_[_0xcd24('0x17')](_[_0xcd24('0x18')](_0x731592['custom_fields'],'id'),_0xcd24('0x19'));return request({'uri':util[_0xcd24('0xe')](_0xcd24('0x1a'),_0x3c0cc5[_0xcd24('0x1b')]),'method':_0xcd24('0x1c'),'body':_0x731592})[_0xcd24('0x1d')](function(_0x4ee2a0){logger[_0xcd24('0xb')](_0xcd24('0x1e'));return _0x4ee2a0;});}function getUser(_0x17dad3,_0x49c909){if(intUtil[_0xcd24('0x1f')](_0x49c909)){return request({'uri':util['format'](_0xcd24('0x20'),_0x17dad3[_0xcd24('0x1b')]),'qs':{'email':_0x49c909}})[_0xcd24('0x1d')](function(_0x1704e4){if(_0x1704e4[_0xcd24('0x21')]){logger['info'](_0xcd24('0x22'));return _[_0xcd24('0x23')](_0x1704e4,function(_0x4976f8){return _0x4976f8[_0xcd24('0x24')][_0xcd24('0x25')]===_0x49c909;});}else{logger[_0xcd24('0xb')](_0xcd24('0x26'));return request({'uri':util[_0xcd24('0xe')](_0xcd24('0x27'),_0x17dad3['remoteUri'])})['then'](function(_0x292467){logger[_0xcd24('0xb')](_0xcd24('0x28'));return _0x292467;});}});}else{logger['info'](_0xcd24('0x29'));return request({'uri':util[_0xcd24('0xe')]('%s/api/v2/agents/me',_0x17dad3[_0xcd24('0x1b')])})[_0xcd24('0x1d')](function(_0x148ab0){logger[_0xcd24('0xb')]('Admin\x20account\x20selected.');return _0x148ab0;});}}function getEndUser(_0x5350c8,_0xc83b4d,_0x55123a){logger[_0xcd24('0xb')](_0xcd24('0x2a'),_0x55123a);return request({'uri':util['format']('%s/api/v2/contacts',_0x5350c8[_0xcd24('0x1b')]),'qs':{'phone':_0x55123a}})['then'](function(_0x586659){if(_0x586659[_0xcd24('0x21')]){logger[_0xcd24('0xb')](_0xcd24('0x2b'));return _['find'](_0x586659,{'phone':_0x55123a});}else{logger[_0xcd24('0xb')](_0xcd24('0x2c'));return request({'uri':util[_0xcd24('0xe')](_0xcd24('0x2d'),_0x5350c8[_0xcd24('0x1b')]),'method':_0xcd24('0x1c'),'body':{'name':_0xc83b4d,'phone':_0x55123a}})[_0xcd24('0x1d')](function(_0x593fc8){logger['info'](_0xcd24('0x2e'));return _0x593fc8;});}});}function getAuth(_0x541c8c){return util[_0xcd24('0xe')](_0xcd24('0x2f'),new Buffer(_0x541c8c[_0xcd24('0x30')]+':X')[_0xcd24('0x31')]('base64'));}function request(_0x3d6708){logger[_0xcd24('0x32')](_0xcd24('0x33'),JSON['stringify'](_0x3d6708));return rp(_[_0xcd24('0x34')](_0x3d6708,{'method':_0xcd24('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x5e2757,_0x3c8c01){var _0x464303=[];if(_0x5e2757&&_0x5e2757[_0xcd24('0x21')]>0x0){_0x464303=_[_0xcd24('0x36')](_0x5e2757,_0x3c8c01);}return _0x464303;}function getCustomFields(_0x8198fc,_0x4fcb04){var _0x48979d=[];var _0x3fcc11={'custom_fields':[]};if(_0x8198fc['length']>0x0){_['forEach'](_0x8198fc,function(_0x23da70){if(_[_0xcd24('0x37')](['string',_0xcd24('0x38')],_0x23da70[_0xcd24('0x39')])&&_0x23da70[_0xcd24('0x3a')]&&!_0x23da70['customField']){_0x3fcc11[_0x23da70[_0xcd24('0x3a')][_0xcd24('0x3b')]()]=_0x23da70[_0xcd24('0x3c')][_0xcd24('0x31')]();}else if(_['includes']([_0xcd24('0x3d'),_0xcd24('0x38')],_0x23da70['type'])&&_0x23da70[_0xcd24('0x3e')]&&_0x23da70['customField']){_0x3fcc11[_0xcd24('0x16')][_0xcd24('0x3f')]({'id':_0x23da70['idField'],'value':_0x23da70['content'][_0xcd24('0x31')]()});}else if(_0x23da70[_0xcd24('0x39')]===_0xcd24('0x40')&&_0x23da70['variableName']&&_0x23da70[_0xcd24('0x3e')]&&_0x23da70[_0xcd24('0x41')]){_0x4fcb04[_0x23da70[_0xcd24('0x42')]]&&_0x3fcc11[_0xcd24('0x16')][_0xcd24('0x3f')]({'id':_0x23da70[_0xcd24('0x3e')],'value':_0x4fcb04[_0x23da70[_0xcd24('0x42')]][_0xcd24('0x31')]()});}else if(_0x23da70[_0xcd24('0x39')]===_0xcd24('0x43')&&_0x23da70[_0xcd24('0x44')]&&_0x23da70[_0xcd24('0x44')][_0xcd24('0x15')]&&_0x23da70['idField']&&_0x23da70[_0xcd24('0x41')]){_0x4fcb04[_0x23da70[_0xcd24('0x44')][_0xcd24('0x15')][_0xcd24('0x3b')]()]&&_0x3fcc11[_0xcd24('0x16')][_0xcd24('0x3f')]({'id':_0x23da70[_0xcd24('0x3e')],'value':_0x4fcb04[_0x23da70[_0xcd24('0x44')]['name'][_0xcd24('0x3b')]()][_0xcd24('0x31')]()});}});}return _0x3fcc11;}exports[_0xcd24('0x45')]=function(_0x465506,_0x2eb73b,_0x29e239,_0x23becb,_0x4d59a2,_0x4c40ac){var _0x59428c,_0x46b8b3;_0x4c40ac['remoteUri']=intUtil['stripTrailingSlash'](_0x4c40ac['remoteUri']);_0x4c40ac['serverUrl']=intUtil[_0xcd24('0x46')](_0x4c40ac[_0xcd24('0x47')]);if(_0x4d59a2&&_0x4d59a2[_0xcd24('0x48')]){logger[_0xcd24('0xb')]('[QUEUE]',_0xcd24('0x49'));_0x2eb73b[_0xcd24('0x4a')]=util[_0xcd24('0xe')](_0xcd24('0x4b'),_0x4c40ac[_0xcd24('0x47')],_0x2eb73b[_0xcd24('0x4c')],md5(_0x2eb73b[_0xcd24('0x4c')]));}else{_0x2eb73b[_0xcd24('0x4a')]='';}headers[_0xcd24('0x4d')]=getAuth(_0x4c40ac);return getUser(_0x4c40ac,_0x23becb[_0xcd24('0x25')])[_0xcd24('0x1d')](function(_0x327461){_0x59428c=_0x327461;logger[_0xcd24('0xb')](_0xcd24('0x4e'),_0x59428c['id']);return getEndUser(_0x4c40ac,_0x2eb73b[_0xcd24('0xf')],_0x2eb73b[_0xcd24('0x10')]);})[_0xcd24('0x1d')](function(_0x34638a){_0x46b8b3=_0x34638a;logger[_0xcd24('0xb')](_0xcd24('0x4f'),_0x46b8b3['id']);return getTicket(_0x4c40ac,_0x59428c,_0x46b8b3,_0x29e239,_0x2eb73b);})[_0xcd24('0x1d')](function(_0x8fa1cf){if(_0x8fa1cf&&_0x8fa1cf['id']){logger[_0xcd24('0xb')](_0xcd24('0x1e'));logger[_0xcd24('0xb')](_0xcd24('0x50'),_0x8fa1cf['id']);logger[_0xcd24('0xb')]('[QUEUE]',_0xcd24('0x51'));emit(util['format'](_0xcd24('0x52'),_0x23becb[_0xcd24('0x15')]),_0xcd24('0x53'),{'uri':util[_0xcd24('0xe')](_0xcd24('0x54'),_0x4c40ac[_0xcd24('0x1b')],_0x8fa1cf['id'])});}})[_0xcd24('0x55')](function(_0x3936b0){logger['error'](_0xcd24('0x56'),JSON[_0xcd24('0x57')](_0x3936b0));});};exports[_0xcd24('0x58')]=function(_0x4859a8,_0x442d9b,_0x3d604a,_0x4e7891,_0x4107c7,_0x25d0fb,_0x3415ba){var _0x10970d,_0x546375;_0x25d0fb[_0xcd24('0x1b')]=intUtil['stripTrailingSlash'](_0x25d0fb['remoteUri']);_0x25d0fb[_0xcd24('0x47')]=intUtil[_0xcd24('0x46')](_0x25d0fb['serverUrl']);if(_0x3415ba&&_0x3415ba[_0xcd24('0x59')]&&_0x3415ba['recordingFormat']!=='none'){logger['info']('[OUTBOUND]',_0xcd24('0x49'));_0x442d9b['recordingURL']=util['format'](_0xcd24('0x4b'),_0x25d0fb[_0xcd24('0x47')],_0x442d9b[_0xcd24('0x4c')],md5(_0x442d9b[_0xcd24('0x4c')]));}headers[_0xcd24('0x4d')]=getAuth(_0x25d0fb);return getUser(_0x25d0fb,_0x4e7891[_0xcd24('0x25')])[_0xcd24('0x1d')](function(_0x416851){_0x10970d=_0x416851;logger[_0xcd24('0xb')](_0xcd24('0x4e'),_0x10970d['id']);return getEndUser(_0x25d0fb,_0x442d9b[_0xcd24('0x5a')],_0x442d9b[_0xcd24('0x5b')]);})['then'](function(_0x5a6829){_0x546375=_0x5a6829;logger[_0xcd24('0xb')](_0xcd24('0x4f'),_0x546375['id']);return getTicket(_0x25d0fb,_0x10970d,_0x546375,_0x3d604a,_0x442d9b);})[_0xcd24('0x1d')](function(_0x411873){if(_0x411873&&_0x411873['id']){logger[_0xcd24('0xb')](_0xcd24('0x1e'));logger[_0xcd24('0xb')](_0xcd24('0x50'),_0x411873['id']);logger['info'](_0xcd24('0x5c'),_0xcd24('0x51'));emit(util[_0xcd24('0xe')](_0xcd24('0x52'),_0x4e7891[_0xcd24('0x15')]),_0xcd24('0x53'),{'uri':util[_0xcd24('0xe')]('%s/helpdesk/tickets/%d',_0x25d0fb[_0xcd24('0x1b')],_0x411873['id'])});}})[_0xcd24('0x55')](function(_0x188683){logger['error']('[OUTBOUND]',JSON[_0xcd24('0x57')](_0x188683));});};exports[_0xcd24('0x5d')]=function(_0xf6828b,_0x49eb59,_0x403da9,_0x342ab3,_0x478f12,_0x3bcf8e){var _0xd3d1f7,_0x1b4cf7;_0x3bcf8e[_0xcd24('0x1b')]=intUtil['stripTrailingSlash'](_0x3bcf8e[_0xcd24('0x1b')]);_0x3bcf8e[_0xcd24('0x47')]=intUtil['stripTrailingSlash'](_0x3bcf8e[_0xcd24('0x47')]);if(_0x478f12&&_0x478f12[_0xcd24('0x48')]){logger['info']('['+_0x49eb59[_0xcd24('0x5e')]['toUpperCase']()+']',_0xcd24('0x49'));_0x49eb59[_0xcd24('0x4a')]=util[_0xcd24('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3bcf8e[_0xcd24('0x47')],_0x49eb59['uniqueid'],md5(_0x49eb59[_0xcd24('0x4c')]));}else{_0x49eb59[_0xcd24('0x4a')]='';}headers[_0xcd24('0x4d')]=getAuth(_0x3bcf8e);return getUser(_0x3bcf8e,'')[_0xcd24('0x1d')](function(_0x11f4ae){_0xd3d1f7=_0x11f4ae;logger[_0xcd24('0xb')](_0xcd24('0x4e'),_0xd3d1f7['id']);return getEndUser(_0x3bcf8e,_0x49eb59[_0xcd24('0xf')],_0x49eb59[_0xcd24('0x10')]);})[_0xcd24('0x1d')](function(_0x4464a9){_0x1b4cf7=_0x4464a9;logger[_0xcd24('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b4cf7['id']);return getTicket(_0x3bcf8e,_0xd3d1f7,_0x1b4cf7,_0x403da9,_0x49eb59);})[_0xcd24('0x1d')](function(_0x493210){if(_0x493210){logger['info'](_0xcd24('0x1e'));logger[_0xcd24('0xb')](_0xcd24('0x50'),_0x493210['id']);}})[_0xcd24('0x55')](function(_0x525cc0){logger[_0xcd24('0x5f')]('['+_0x49eb59[_0xcd24('0x5e')][_0xcd24('0x60')]()+']',JSON[_0xcd24('0x57')](_0x525cc0));});};
\ No newline at end of file
+var _0xa304=['keyBy','value','remoteUri','then','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','idField','type','variableName','customVariable','Variable','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','serverUrl','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','toUpperCase','calleridname','lastevent','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','<br>','name','Fields','custom_fields','mapValues'];(function(_0x5d1545,_0x313ea0){var _0x1a3cf2=function(_0x21c8b3){while(--_0x21c8b3){_0x5d1545['push'](_0x5d1545['shift']());}};_0x1a3cf2(++_0x313ea0);}(_0xa304,0x1ca));var _0x4a30=function(_0x2dc7c9,_0x3a15f8){_0x2dc7c9=_0x2dc7c9-0x0;var _0x3e6536=_0xa304[_0x2dc7c9];return _0x3e6536;};'use strict';var _=require(_0x4a30('0x0'));var rp=require(_0x4a30('0x1'));var md5=require(_0x4a30('0x2'));var util=require(_0x4a30('0x3'));var Redis=require('ioredis');var intUtil=require(_0x4a30('0x4'));var config=require(_0x4a30('0x5'));var logger=require(_0x4a30('0x6'))(_0x4a30('0x7'));config[_0x4a30('0x8')]=_[_0x4a30('0x9')](config['redis'],{'host':_0x4a30('0xa'),'port':0x18eb});var io=require(_0x4a30('0xb'))(new Redis(config['redis']));var headers={'Content-Type':_0x4a30('0xc'),'Accept':_0x4a30('0xc')};function emit(_0x3fff48,_0x58f359,_0x581f98){io['to'](_0x3fff48)['emit'](_0x58f359,_0x581f98);}function getTicket(_0x3f1062,_0x3554ca,_0x383434,_0x390bd5,_0x13d3bc){logger[_0x4a30('0xd')](_0x4a30('0xe'));var _0x3393e2=_[_0x4a30('0xf')]({'responder_id':_0x3554ca['id'],'requester_id':_0x383434['id'],'name':util[_0x4a30('0x10')](_0x4a30('0x11'),_0x13d3bc['calleridname']),'phone':_0x13d3bc[_0x4a30('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x4a30('0x13')](_0x390bd5[_0x4a30('0x14')],_0x13d3bc,'\x20'),'description':intUtil[_0x4a30('0x13')](_0x390bd5[_0x4a30('0x15')],_0x13d3bc,_0x4a30('0x16')),'tags':getTags(_0x390bd5['Tags'],_0x4a30('0x17'))},getCustomFields(_0x390bd5[_0x4a30('0x18')],_0x13d3bc));_0x3393e2[_0x4a30('0x19')]=_[_0x4a30('0x1a')](_[_0x4a30('0x1b')](_0x3393e2['custom_fields'],'id'),_0x4a30('0x1c'));return request({'uri':util[_0x4a30('0x10')]('%s/api/v2/tickets',_0x3f1062[_0x4a30('0x1d')]),'method':'POST','body':_0x3393e2})[_0x4a30('0x1e')](function(_0x4228ff){logger[_0x4a30('0xd')]('Ticket\x20created!');return _0x4228ff;});}function getUser(_0x498d7c,_0x43858d){if(intUtil[_0x4a30('0x1f')](_0x43858d)){return request({'uri':util[_0x4a30('0x10')](_0x4a30('0x20'),_0x498d7c[_0x4a30('0x1d')]),'qs':{'email':_0x43858d}})[_0x4a30('0x1e')](function(_0x165a06){if(_0x165a06[_0x4a30('0x21')]){logger['info'](_0x4a30('0x22'));return _[_0x4a30('0x23')](_0x165a06,function(_0x1ea4c8){return _0x1ea4c8[_0x4a30('0x24')]['email']===_0x43858d;});}else{logger[_0x4a30('0xd')](_0x4a30('0x25'));return request({'uri':util[_0x4a30('0x10')](_0x4a30('0x26'),_0x498d7c[_0x4a30('0x1d')])})['then'](function(_0x504f79){logger['info'](_0x4a30('0x27'));return _0x504f79;});}});}else{logger[_0x4a30('0xd')](_0x4a30('0x28'));return request({'uri':util[_0x4a30('0x10')](_0x4a30('0x26'),_0x498d7c[_0x4a30('0x1d')])})[_0x4a30('0x1e')](function(_0x32a636){logger['info'](_0x4a30('0x27'));return _0x32a636;});}}function getEndUser(_0x50274d,_0x183840,_0x3fa2f7){logger['info'](_0x4a30('0x29'),_0x3fa2f7);return request({'uri':util['format'](_0x4a30('0x2a'),_0x50274d['remoteUri']),'qs':{'phone':_0x3fa2f7}})['then'](function(_0x14a8fb){if(_0x14a8fb[_0x4a30('0x21')]){logger[_0x4a30('0xd')]('Enduser\x20found!');return _[_0x4a30('0x23')](_0x14a8fb,{'phone':_0x3fa2f7});}else{logger['info'](_0x4a30('0x2b'));return request({'uri':util[_0x4a30('0x10')](_0x4a30('0x2a'),_0x50274d[_0x4a30('0x1d')]),'method':'POST','body':{'name':_0x183840,'phone':_0x3fa2f7}})['then'](function(_0x29a909){logger['info'](_0x4a30('0x2c'));return _0x29a909;});}});}function getAuth(_0x336bc3){return util[_0x4a30('0x10')](_0x4a30('0x2d'),new Buffer(_0x336bc3[_0x4a30('0x2e')]+':X')[_0x4a30('0x2f')](_0x4a30('0x30')));}function request(_0x58b0ae){logger[_0x4a30('0x31')](_0x4a30('0x32'),JSON[_0x4a30('0x33')](_0x58b0ae));return rp(_['defaults'](_0x58b0ae,{'method':_0x4a30('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x30d7b8,_0x4dd325){var _0x3a6bfb=[];if(_0x30d7b8&&_0x30d7b8[_0x4a30('0x21')]>0x0){_0x3a6bfb=_[_0x4a30('0x35')](_0x30d7b8,_0x4dd325);}return _0x3a6bfb;}function getCustomFields(_0xf51f1b,_0x335a81){var _0x23c53b=[];var _0xe1d887={'custom_fields':[]};if(_0xf51f1b[_0x4a30('0x21')]>0x0){_[_0x4a30('0x36')](_0xf51f1b,function(_0x1ced30){if(_[_0x4a30('0x37')]([_0x4a30('0x38'),_0x4a30('0x39')],_0x1ced30['type'])&&_0x1ced30[_0x4a30('0x3a')]&&!_0x1ced30[_0x4a30('0x3b')]){_0xe1d887[_0x1ced30['nameField'][_0x4a30('0x3c')]()]=_0x1ced30[_0x4a30('0x3d')][_0x4a30('0x2f')]();}else if(_['includes']([_0x4a30('0x38'),_0x4a30('0x39')],_0x1ced30['type'])&&_0x1ced30[_0x4a30('0x3e')]&&_0x1ced30[_0x4a30('0x3b')]){_0xe1d887[_0x4a30('0x19')]['push']({'id':_0x1ced30[_0x4a30('0x3e')],'value':_0x1ced30[_0x4a30('0x3d')][_0x4a30('0x2f')]()});}else if(_0x1ced30[_0x4a30('0x3f')]==='variable'&&_0x1ced30[_0x4a30('0x40')]&&_0x1ced30['idField']&&_0x1ced30[_0x4a30('0x3b')]){_0x335a81[_0x1ced30[_0x4a30('0x40')]]&&_0xe1d887[_0x4a30('0x19')]['push']({'id':_0x1ced30['idField'],'value':_0x335a81[_0x1ced30['variableName']][_0x4a30('0x2f')]()});}else if(_0x1ced30['type']===_0x4a30('0x41')&&_0x1ced30['Variable']&&_0x1ced30[_0x4a30('0x42')][_0x4a30('0x17')]&&_0x1ced30['idField']&&_0x1ced30['customField']){_0x335a81[_0x1ced30[_0x4a30('0x42')][_0x4a30('0x17')][_0x4a30('0x3c')]()]&&_0xe1d887[_0x4a30('0x19')]['push']({'id':_0x1ced30['idField'],'value':_0x335a81[_0x1ced30[_0x4a30('0x42')][_0x4a30('0x17')][_0x4a30('0x3c')]()][_0x4a30('0x2f')]()});}});}return _0xe1d887;}exports[_0x4a30('0x43')]=function(_0x521ad9,_0x317afa,_0x4f88e1,_0x5d7b19,_0x24fbe8,_0x20d6dc){var _0x560767,_0x63197b;_0x20d6dc[_0x4a30('0x1d')]=intUtil[_0x4a30('0x44')](_0x20d6dc['remoteUri']);_0x20d6dc['serverUrl']=intUtil[_0x4a30('0x44')](_0x20d6dc['serverUrl']);if(_0x24fbe8&&_0x24fbe8[_0x4a30('0x45')]){logger[_0x4a30('0xd')](_0x4a30('0x46'),_0x4a30('0x47'));_0x317afa[_0x4a30('0x48')]=util[_0x4a30('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x20d6dc['serverUrl'],_0x317afa[_0x4a30('0x49')],md5(_0x317afa['uniqueid']));}else{_0x317afa[_0x4a30('0x48')]='';}headers[_0x4a30('0x4a')]=getAuth(_0x20d6dc);return getUser(_0x20d6dc,_0x5d7b19[_0x4a30('0x4b')])[_0x4a30('0x1e')](function(_0xd76cfe){_0x560767=_0xd76cfe;logger[_0x4a30('0xd')](_0x4a30('0x4c'),_0x560767['id']);return getEndUser(_0x20d6dc,_0x317afa['calleridname'],_0x317afa[_0x4a30('0x12')]);})[_0x4a30('0x1e')](function(_0x179365){_0x63197b=_0x179365;logger['info'](_0x4a30('0x4d'),_0x63197b['id']);return getTicket(_0x20d6dc,_0x560767,_0x63197b,_0x4f88e1,_0x317afa);})['then'](function(_0x3a448){if(_0x3a448&&_0x3a448['id']){logger['info'](_0x4a30('0x4e'));logger['info'](_0x4a30('0x4f'),_0x3a448['id']);logger[_0x4a30('0xd')](_0x4a30('0x46'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x4a30('0x50'),_0x5d7b19[_0x4a30('0x17')]),_0x4a30('0x51'),{'uri':util['format'](_0x4a30('0x52'),_0x20d6dc[_0x4a30('0x1d')],_0x3a448['id'])});}})[_0x4a30('0x53')](function(_0x3673c1){logger[_0x4a30('0x54')](_0x4a30('0x46'),JSON[_0x4a30('0x33')](_0x3673c1));});};exports[_0x4a30('0x55')]=function(_0x244dda,_0x440350,_0x5ae23c,_0x289755,_0xdb4e23,_0x119013,_0x5c6af3){var _0x1714a2,_0x4850fd;_0x119013['remoteUri']=intUtil[_0x4a30('0x44')](_0x119013['remoteUri']);_0x119013[_0x4a30('0x56')]=intUtil[_0x4a30('0x44')](_0x119013['serverUrl']);if(_0x5c6af3&&_0x5c6af3[_0x4a30('0x57')]&&_0x5c6af3['recordingFormat']!==_0x4a30('0x58')){logger[_0x4a30('0xd')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x440350[_0x4a30('0x48')]=util[_0x4a30('0x10')](_0x4a30('0x59'),_0x119013[_0x4a30('0x56')],_0x440350[_0x4a30('0x49')],md5(_0x440350['uniqueid']));}headers[_0x4a30('0x4a')]=getAuth(_0x119013);return getUser(_0x119013,_0x289755['email'])['then'](function(_0x12c325){_0x1714a2=_0x12c325;logger[_0x4a30('0xd')]('The\x20User\x20ID\x20is:',_0x1714a2['id']);return getEndUser(_0x119013,_0x440350['destcalleridname'],_0x440350[_0x4a30('0x5a')]);})[_0x4a30('0x1e')](function(_0x317e2a){_0x4850fd=_0x317e2a;logger[_0x4a30('0xd')]('The\x20Enduser\x20ID\x20is:',_0x4850fd['id']);return getTicket(_0x119013,_0x1714a2,_0x4850fd,_0x5ae23c,_0x440350);})[_0x4a30('0x1e')](function(_0x199d67){if(_0x199d67&&_0x199d67['id']){logger['info'](_0x4a30('0x4e'));logger['info'](_0x4a30('0x4f'),_0x199d67['id']);logger['info'](_0x4a30('0x5b'),_0x4a30('0x5c'));emit(util[_0x4a30('0x10')]('user:%s',_0x289755[_0x4a30('0x17')]),'trigger:browser:url',{'uri':util[_0x4a30('0x10')]('%s/helpdesk/tickets/%d',_0x119013['remoteUri'],_0x199d67['id'])});}})[_0x4a30('0x53')](function(_0x3de0fd){logger[_0x4a30('0x54')]('[OUTBOUND]',JSON['stringify'](_0x3de0fd));});};exports[_0x4a30('0x5d')]=function(_0x1ac494,_0x1e909b,_0x477238,_0x53fa5b,_0x2b2c2f,_0x3fe72d){var _0x1fe840,_0x3df42b;_0x3fe72d[_0x4a30('0x1d')]=intUtil['stripTrailingSlash'](_0x3fe72d['remoteUri']);_0x3fe72d[_0x4a30('0x56')]=intUtil[_0x4a30('0x44')](_0x3fe72d[_0x4a30('0x56')]);if(_0x2b2c2f&&_0x2b2c2f[_0x4a30('0x45')]){logger[_0x4a30('0xd')]('['+_0x1e909b['lastevent'][_0x4a30('0x5e')]()+']','Recording\x20is\x20enabled!');_0x1e909b['recordingURL']=util[_0x4a30('0x10')](_0x4a30('0x59'),_0x3fe72d['serverUrl'],_0x1e909b[_0x4a30('0x49')],md5(_0x1e909b[_0x4a30('0x49')]));}else{_0x1e909b['recordingURL']='';}headers[_0x4a30('0x4a')]=getAuth(_0x3fe72d);return getUser(_0x3fe72d,'')['then'](function(_0x577294){_0x1fe840=_0x577294;logger['info'](_0x4a30('0x4c'),_0x1fe840['id']);return getEndUser(_0x3fe72d,_0x1e909b[_0x4a30('0x5f')],_0x1e909b[_0x4a30('0x12')]);})['then'](function(_0x2e2eb7){_0x3df42b=_0x2e2eb7;logger[_0x4a30('0xd')](_0x4a30('0x4d'),_0x3df42b['id']);return getTicket(_0x3fe72d,_0x1fe840,_0x3df42b,_0x477238,_0x1e909b);})[_0x4a30('0x1e')](function(_0x5a3123){if(_0x5a3123){logger[_0x4a30('0xd')](_0x4a30('0x4e'));logger[_0x4a30('0xd')](_0x4a30('0x4f'),_0x5a3123['id']);}})[_0x4a30('0x53')](function(_0x310d89){logger['error']('['+_0x1e909b[_0x4a30('0x60')][_0x4a30('0x5e')]()+']',JSON['stringify'](_0x310d89));});};
\ No newline at end of file
index 7b34136..00da1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea9f=['headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','catch','/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\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','/contacts/','user:%s','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','util','moment','bluebird','ioredis','./util','../../../../config/environment','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','Getting\x20admin\x20information','then','users','length','email','adminEmail','info','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message'];(function(_0x1211a4,_0x3a8c92){var _0x1a3325=function(_0x507f3b){while(--_0x507f3b){_0x1211a4['push'](_0x1211a4['shift']());}};_0x1a3325(++_0x3a8c92);}(_0xea9f,0x199));var _0xfea9=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xea9f[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xfea9('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xfea9('0x1'));var moment=require(_0xfea9('0x2'));var Promise=require(_0xfea9('0x3'));var Redis=require(_0xfea9('0x4'));var intUtil=require(_0xfea9('0x5'));var config=require(_0xfea9('0x6'));var logger=require('../../../../config/logger')(_0xfea9('0x7'));config[_0xfea9('0x8')]=_['defaults'](config[_0xfea9('0x8')],{'host':_0xfea9('0x9'),'port':0x18eb});var io=require(_0xfea9('0xa'))(new Redis(config[_0xfea9('0x8')]));function getAdminId(_0x1c72ea,_0x20a1d0,_0x168a5a,_0x175fe4){return new Promise(function(_0x24106b,_0x130283){var _0x1243f5=![];var _0x54c896={'method':_0xfea9('0xb'),'uri':_0x175fe4+_0xfea9('0xc'),'json':!![]};_0x54c896['headers']=_0x168a5a;logger['info'](_0xfea9('0xd'));return rp(_0x54c896)[_0xfea9('0xe')](function(_0x8f0618){if(_0x8f0618){var _0x956efb=_0x8f0618[_0xfea9('0xf')];var _0x1f04c7=null;for(_0x1f04c7=0x0;_0x1f04c7<_0x956efb[_0xfea9('0x10')];_0x1f04c7++){if(_0x956efb[_0x1f04c7][_0xfea9('0x11')]===_0x1c72ea[_0xfea9('0x12')]){_0x1c72ea['adminId']=_0x956efb[_0x1f04c7]['id'];_0x1243f5=!![];}}if(_0x1243f5){logger[_0xfea9('0x13')](_0xfea9('0x14'),_0x1c72ea[_0xfea9('0x15')]);_0x24106b(_0x1c72ea);}else{_0x130283({'statusCode':0x194,'message':_0xfea9('0x16')});}}else{_0x130283({'statusCode':0x194,'message':_0xfea9('0x16')});}})['catch'](function(_0x2093f9){logger[_0xfea9('0x17')]('['+[_0x20a1d0[_0xfea9('0x18')]()]+']',_0x2093f9[_0xfea9('0x19')]);_0x130283(_0x2093f9);});});}function getUser(_0x6b6eec,_0x7bd3da,_0x49340c){return function(_0x203c9e){return new Promise(function(_0x239560,_0x413a00){var _0x1a4602={'method':_0xfea9('0xb'),'uri':_0x49340c+'/api/selector/owners','json':!![]};_0x1a4602[_0xfea9('0x1a')]=_0x7bd3da;logger['info'](_0xfea9('0x1b'));return rp(_0x1a4602)[_0xfea9('0xe')](function(_0x410f7d){if(_0x410f7d){var _0x2fb600=_0x410f7d['users'];var _0x373b72=![];var _0x560c4a=null;if(_0x203c9e[_0xfea9('0x1c')]!==null){logger[_0xfea9('0x13')](_0xfea9('0x1d'),_0x203c9e[_0xfea9('0x1c')]);_0x203c9e['userEmail']=_0x203c9e[_0xfea9('0x1c')];for(_0x560c4a=0x0;_0x560c4a<_0x2fb600[_0xfea9('0x10')];_0x560c4a++){if(_0x2fb600[_0x560c4a][_0xfea9('0x11')]===_0x203c9e[_0xfea9('0x1c')]){_0x373b72=!![];_0x203c9e[_0xfea9('0x1e')]=_0x2fb600[_0x560c4a]['id'];logger['info'](_0xfea9('0x1f'),_0x203c9e[_0xfea9('0x1e')]);}}}if(!_0x373b72){logger[_0xfea9('0x13')](_0xfea9('0x20'));_0x203c9e[_0xfea9('0x21')]=_0x203c9e['adminEmail'];_0x203c9e[_0xfea9('0x1e')]=_0x203c9e[_0xfea9('0x15')];_0x373b72=!![];}if(_0x373b72){_0x239560(_0x203c9e);}else{_0x413a00({'statusCode':0x194,'message':_0xfea9('0x16')});}}else{_0x413a00({'statusCode':0x194,'message':_0xfea9('0x16')});}})[_0xfea9('0x22')](function(_0x2472f6){logger[_0xfea9('0x17')]('['+[_0x6b6eec['toUpperCase']()]+']',_0x2472f6['message']);_0x413a00(_0x2472f6);});});};}function searchContact(_0x166067,_0xfcaed1,_0x24b151,_0x2f2ac5){return new Promise(function(_0x29a8cc,_0x3500e4){var _0x3ef13b={'method':_0xfea9('0xb'),'headers':_0xfcaed1,'uri':_0x166067+_0xfea9('0x23')+_0x2f2ac5+_0xfea9('0x24')+_0x24b151+_0xfea9('0x25'),'json':!![]};rp(_0x3ef13b)[_0xfea9('0xe')](function(_0x2494a8){var _0x423a5c=_[_0xfea9('0x26')](_0x2494a8[_0xfea9('0x27')][_0xfea9('0x27')],[_0x24b151,_0x2f2ac5]);_0x29a8cc(_0x423a5c);})[_0xfea9('0x22')](function(_0x3658f8){_0x3500e4(_0x3658f8);});});}function getEndUser(_0x565a95,_0x44f89f,_0x2cf15d){return function(_0x80a53f){return new Promise(function(_0x48bcd2,_0x351b57){logger['info'](util[_0xfea9('0x28')](_0xfea9('0x29'),_0x80a53f[_0xfea9('0x2a')]));searchContact(_0x2cf15d,_0x44f89f,_0xfea9('0x2b'),_0x80a53f[_0xfea9('0x2a')])['then'](function(_0x3fd03d){if(_0x3fd03d){_0x80a53f[_0xfea9('0x2c')]=_0x3fd03d['id'];logger[_0xfea9('0x13')](_0xfea9('0x2d'),_0x80a53f[_0xfea9('0x2c')]);return _0x48bcd2(_0x80a53f);}searchContact(_0x2cf15d,_0x44f89f,_0xfea9('0x2e'),_0x80a53f[_0xfea9('0x2a')])[_0xfea9('0xe')](function(_0x4d9537){if(_0x4d9537){_0x80a53f[_0xfea9('0x2c')]=_0x4d9537['id'];logger[_0xfea9('0x13')](_0xfea9('0x2f'),_0x80a53f[_0xfea9('0x2c')]);return _0x48bcd2(_0x80a53f);}createEndUser(_0x80a53f,_0x565a95,_0x44f89f,_0x2cf15d)['then'](function(_0x341613){logger[_0xfea9('0x13')](_0xfea9('0x30'),_0x341613[_0xfea9('0x2c')]);return _0x48bcd2(_0x341613);});});})[_0xfea9('0x22')](function(_0x1bd79d){_0x351b57(_0x1bd79d);});});};}function createEndUser(_0x13cc7b,_0x2f2ff4,_0x52dfc6,_0xa8bbfc){return new Promise(function(_0x1efacb,_0x2fc3d1){var _0x4134a3=moment();var _0x519aa0={'method':_0xfea9('0x31'),'uri':_0xa8bbfc+_0xfea9('0x32'),'body':{'contact':{'last_name':_0x13cc7b[_0xfea9('0x2a')],'work_number':_0x13cc7b[_0xfea9('0x2a')],'mobile_number':_0x13cc7b[_0xfea9('0x2a')],'owner_id':_0x13cc7b[_0xfea9('0x1e')],'created_at':_0x4134a3[_0xfea9('0x28')](_0xfea9('0x33'))}},'json':!![]};_0x519aa0['headers']=_0x52dfc6;logger[_0xfea9('0x13')](_0xfea9('0x34'));return rp(_0x519aa0)[_0xfea9('0xe')](function(_0x45f48f){_0x13cc7b['endUserId']=_0x45f48f[_0xfea9('0x35')]['id'];_0x1efacb(_0x13cc7b);})[_0xfea9('0x22')](function(_0x5b2c05){logger[_0xfea9('0x17')]('['+[_0x2f2ff4[_0xfea9('0x18')]()]+']',_0x5b2c05[_0xfea9('0x19')]);_0x2fc3d1(_0x5b2c05[_0xfea9('0x19')]);});});}function getTicket(_0x593b16,_0x2a521f,_0x591bfa,_0x8b1e46,_0x2e94b4){return function(_0x22a5eb){logger[_0xfea9('0x13')]('Creating\x20new\x20task');return new Promise(function(_0x4ddb4c,_0x325e20){var _0x436425=moment();var _0x3df937={'method':_0xfea9('0x31'),'uri':_0x591bfa+_0xfea9('0x36'),'body':{'title':intUtil[_0xfea9('0x37')](_0x8b1e46[_0xfea9('0x38')],_0x2e94b4,'\x20'),'description':intUtil[_0xfea9('0x37')](_0x8b1e46[_0xfea9('0x39')],_0x2e94b4,'\x0a'),'owner_id':_0x22a5eb['userId'],'creater_id':_0x22a5eb[_0xfea9('0x15')],'targetable_id':_0x22a5eb[_0xfea9('0x2c')],'targetable_type':_0xfea9('0x3a'),'created_at':_0x436425[_0xfea9('0x28')](_0xfea9('0x33')),'due_date':_0x436425[_0xfea9('0x3b')](0x1e,'m')[_0xfea9('0x28')](_0xfea9('0x33'))},'json':!![]};_0x3df937['headers']=_0x2a521f;return rp(_0x3df937)[_0xfea9('0xe')](function(_0x8d1b91){_0x22a5eb[_0xfea9('0x3c')]=_0x8d1b91['task']['id'];logger['info']('Task\x20created:',_0x22a5eb['ticketId']);_0x4ddb4c(_0x22a5eb);})[_0xfea9('0x22')](function(_0x1b825d){logger[_0xfea9('0x17')]('['+[_0x593b16[_0xfea9('0x18')]()]+']',_0x1b825d['message']);_0x325e20(_0x1b825d[_0xfea9('0x19')]);});});};}function emit(_0x47085d,_0x5ed89e,_0x1e40ae){var _0x28cd03={'uri':_0x47085d+_0xfea9('0x3d')+_0x1e40ae};io['to'](util[_0xfea9('0x28')](_0xfea9('0x3e'),_0x5ed89e))['emit']('trigger:browser:url',_0x28cd03);}exports['cs']=function(_0x127aa6,_0x158f6e,_0x8804d6,_0x1c0887,_0x388da4,_0x2798c9,_0x2d9bc4,_0x5c4ffd){var _0x122ab9={};var _0x1a9fb2={'Authorization':_0xfea9('0x3f')+_0x2798c9[_0xfea9('0x40')]};_0x2798c9[_0xfea9('0x41')]=intUtil[_0xfea9('0x42')](_0x2798c9[_0xfea9('0x41')]);_0x2798c9[_0xfea9('0x43')]=intUtil[_0xfea9('0x42')](_0x2798c9[_0xfea9('0x43')]);var _0x532734=_0x2798c9[_0xfea9('0x41')];_0x122ab9['adminEmail']=_0x2798c9[_0xfea9('0x44')];_0x122ab9[_0xfea9('0x2a')]=_0x5c4ffd[_0xfea9('0x45')]()===_0xfea9('0x46')?_0x158f6e[_0xfea9('0x47')]:_0x158f6e['calleridnum'];_0x122ab9[_0xfea9('0x48')]=_0x5c4ffd===_0xfea9('0x49')||_0x5c4ffd===_0xfea9('0x4a')?_0xfea9('0x49'):'outbound';if(_0x1c0887){_0x122ab9[_0xfea9('0x1c')]=_0x1c0887[_0xfea9('0x11')];}var _0x105647=util[_0xfea9('0x28')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2798c9[_0xfea9('0x43')],_0x158f6e['uniqueid'],md5(_0x158f6e[_0xfea9('0x4b')]));if(_0x388da4&&_0x388da4[_0xfea9('0x4c')]){logger[_0xfea9('0x13')](_0xfea9('0x4d'),_0xfea9('0x4e'));_0x158f6e[_0xfea9('0x4f')]=_0x105647;}else if(_0x2d9bc4&&_0x2d9bc4[_0xfea9('0x50')]&&_0x2d9bc4[_0xfea9('0x50')]!==_0xfea9('0x51')){logger[_0xfea9('0x13')](_0xfea9('0x52'),_0xfea9('0x4e'));_0x158f6e[_0xfea9('0x4f')]=_0x105647;}else{_0x158f6e[_0xfea9('0x4f')]='';}return getAdminId(_0x122ab9,_0x5c4ffd,_0x1a9fb2,_0x532734)[_0xfea9('0xe')](getUser(_0x5c4ffd,_0x1a9fb2,_0x532734))['then'](getEndUser(_0x5c4ffd,_0x1a9fb2,_0x532734))[_0xfea9('0xe')](getTicket(_0x5c4ffd,_0x1a9fb2,_0x532734,_0x8804d6,_0x158f6e))['then'](function(_0x2ccbb5){logger[_0xfea9('0x13')](util['format'](_0xfea9('0x53'),_0x2ccbb5['ticketId']));if(_0x5c4ffd!==_0xfea9('0x4a')){logger[_0xfea9('0x13')]('['+[_0x5c4ffd[_0xfea9('0x18')]()]+']',_0xfea9('0x54'));emit(_0x532734,_0x1c0887['name'],_0x2ccbb5[_0xfea9('0x2c')]);}})['catch'](function(_0xc1c5f1){logger[_0xfea9('0x17')]('['+[_0x5c4ffd[_0xfea9('0x18')]()]+_0xfea9('0x55'),util[_0xfea9('0x56')](_0xc1c5f1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xe6ed=['Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','ticketId','task','/contacts/','trigger:browser:url','Token\x20token=','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment','freshsales','redis','GET','headers','info','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','/api/selector/owners','Getting\x20user\x20list','agentEmail'];(function(_0x5545c9,_0x42fa27){var _0x5848eb=function(_0x68d730){while(--_0x68d730){_0x5545c9['push'](_0x5545c9['shift']());}};_0x5848eb(++_0x42fa27);}(_0xe6ed,0xe1));var _0xde6e=function(_0x17c9df,_0x4a7609){_0x17c9df=_0x17c9df-0x0;var _0x31fa6f=_0xe6ed[_0x17c9df];return _0x31fa6f;};'use strict';var _=require('lodash');var rp=require(_0xde6e('0x0'));var md5=require(_0xde6e('0x1'));var util=require(_0xde6e('0x2'));var moment=require('moment');var Promise=require(_0xde6e('0x3'));var Redis=require(_0xde6e('0x4'));var intUtil=require(_0xde6e('0x5'));var config=require(_0xde6e('0x6'));var logger=require('../../../../config/logger')(_0xde6e('0x7'));config[_0xde6e('0x8')]=_['defaults'](config[_0xde6e('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xde6e('0x8')]));function getAdminId(_0x37ec2e,_0x590a25,_0x29c78e,_0x549e68){return new Promise(function(_0x4a4f18,_0x13f70b){var _0x24918d=![];var _0x4af785={'method':_0xde6e('0x9'),'uri':_0x549e68+'/api/selector/owners','json':!![]};_0x4af785[_0xde6e('0xa')]=_0x29c78e;logger[_0xde6e('0xb')]('Getting\x20admin\x20information');return rp(_0x4af785)[_0xde6e('0xc')](function(_0x515701){if(_0x515701){var _0x5716e5=_0x515701[_0xde6e('0xd')];var _0x5ec920=null;for(_0x5ec920=0x0;_0x5ec920<_0x5716e5[_0xde6e('0xe')];_0x5ec920++){if(_0x5716e5[_0x5ec920][_0xde6e('0xf')]===_0x37ec2e[_0xde6e('0x10')]){_0x37ec2e[_0xde6e('0x11')]=_0x5716e5[_0x5ec920]['id'];_0x24918d=!![];}}if(_0x24918d){logger[_0xde6e('0xb')](_0xde6e('0x12'),_0x37ec2e[_0xde6e('0x11')]);_0x4a4f18(_0x37ec2e);}else{_0x13f70b({'statusCode':0x194,'message':_0xde6e('0x13')});}}else{_0x13f70b({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xde6e('0x14')](function(_0x2d5eb2){logger[_0xde6e('0x15')]('['+[_0x590a25[_0xde6e('0x16')]()]+']',_0x2d5eb2[_0xde6e('0x17')]);_0x13f70b(_0x2d5eb2);});});}function getUser(_0x62a0c0,_0x263832,_0x3a9baf){return function(_0x1fe2cf){return new Promise(function(_0x20f8a4,_0x8c7c1f){var _0x539f68={'method':_0xde6e('0x9'),'uri':_0x3a9baf+_0xde6e('0x18'),'json':!![]};_0x539f68[_0xde6e('0xa')]=_0x263832;logger[_0xde6e('0xb')](_0xde6e('0x19'));return rp(_0x539f68)['then'](function(_0xaffb92){if(_0xaffb92){var _0x472d92=_0xaffb92[_0xde6e('0xd')];var _0x48ac92=![];var _0x51d2d7=null;if(_0x1fe2cf[_0xde6e('0x1a')]!==null){logger['info'](_0xde6e('0x1b'),_0x1fe2cf[_0xde6e('0x1a')]);_0x1fe2cf[_0xde6e('0x1c')]=_0x1fe2cf[_0xde6e('0x1a')];for(_0x51d2d7=0x0;_0x51d2d7<_0x472d92[_0xde6e('0xe')];_0x51d2d7++){if(_0x472d92[_0x51d2d7]['email']===_0x1fe2cf[_0xde6e('0x1a')]){_0x48ac92=!![];_0x1fe2cf[_0xde6e('0x1d')]=_0x472d92[_0x51d2d7]['id'];logger['info'](_0xde6e('0x1e'),_0x1fe2cf[_0xde6e('0x1d')]);}}}if(!_0x48ac92){logger[_0xde6e('0xb')](_0xde6e('0x1f'));_0x1fe2cf[_0xde6e('0x1c')]=_0x1fe2cf[_0xde6e('0x10')];_0x1fe2cf[_0xde6e('0x1d')]=_0x1fe2cf[_0xde6e('0x11')];_0x48ac92=!![];}if(_0x48ac92){_0x20f8a4(_0x1fe2cf);}else{_0x8c7c1f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x8c7c1f({'statusCode':0x194,'message':_0xde6e('0x13')});}})['catch'](function(_0x1c2663){logger[_0xde6e('0x15')]('['+[_0x62a0c0[_0xde6e('0x16')]()]+']',_0x1c2663[_0xde6e('0x17')]);_0x8c7c1f(_0x1c2663);});});};}function searchContact(_0x439d42,_0x15db3b,_0x17d6bd,_0x277a90){return new Promise(function(_0x2f6396,_0x25d0f5){var _0x3196eb={'method':'GET','headers':_0x15db3b,'uri':_0x439d42+'/api/lookup?q='+_0x277a90+'&f='+_0x17d6bd+_0xde6e('0x20'),'json':!![]};rp(_0x3196eb)[_0xde6e('0xc')](function(_0x13743){var _0x34cba7=_[_0xde6e('0x21')](_0x13743[_0xde6e('0x22')][_0xde6e('0x22')],[_0x17d6bd,_0x277a90]);_0x2f6396(_0x34cba7);})[_0xde6e('0x14')](function(_0xdaad95){_0x25d0f5(_0xdaad95);});});}function getEndUser(_0x1c46b5,_0x2fcce4,_0x470665){return function(_0x33fa31){return new Promise(function(_0x5a0061,_0x35dfb5){logger[_0xde6e('0xb')](util[_0xde6e('0x23')](_0xde6e('0x24'),_0x33fa31[_0xde6e('0x25')]));searchContact(_0x470665,_0x2fcce4,_0xde6e('0x26'),_0x33fa31[_0xde6e('0x25')])[_0xde6e('0xc')](function(_0x5094b6){if(_0x5094b6){_0x33fa31[_0xde6e('0x27')]=_0x5094b6['id'];logger[_0xde6e('0xb')](_0xde6e('0x28'),_0x33fa31[_0xde6e('0x27')]);return _0x5a0061(_0x33fa31);}searchContact(_0x470665,_0x2fcce4,_0xde6e('0x29'),_0x33fa31[_0xde6e('0x25')])[_0xde6e('0xc')](function(_0x4a5bfc){if(_0x4a5bfc){_0x33fa31['endUserId']=_0x4a5bfc['id'];logger['info'](_0xde6e('0x2a'),_0x33fa31[_0xde6e('0x27')]);return _0x5a0061(_0x33fa31);}createEndUser(_0x33fa31,_0x1c46b5,_0x2fcce4,_0x470665)[_0xde6e('0xc')](function(_0x470ab2){logger[_0xde6e('0xb')](_0xde6e('0x2b'),_0x470ab2[_0xde6e('0x27')]);return _0x5a0061(_0x470ab2);});});})[_0xde6e('0x14')](function(_0x56d77c){_0x35dfb5(_0x56d77c);});});};}function createEndUser(_0x2cdf65,_0x9fe53c,_0x4bd136,_0x1a5062){return new Promise(function(_0x1c1b57,_0x2d570e){var _0x58cf7c=moment();var _0x1efefe={'method':_0xde6e('0x2c'),'uri':_0x1a5062+_0xde6e('0x2d'),'body':{'contact':{'last_name':_0x2cdf65[_0xde6e('0x25')],'work_number':_0x2cdf65['contactNumber'],'mobile_number':_0x2cdf65[_0xde6e('0x25')],'owner_id':_0x2cdf65[_0xde6e('0x1d')],'created_at':_0x58cf7c[_0xde6e('0x23')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x1efefe['headers']=_0x4bd136;logger[_0xde6e('0xb')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x1efefe)[_0xde6e('0xc')](function(_0x1073c3){_0x2cdf65[_0xde6e('0x27')]=_0x1073c3[_0xde6e('0x2e')]['id'];_0x1c1b57(_0x2cdf65);})[_0xde6e('0x14')](function(_0x14c215){logger[_0xde6e('0x15')]('['+[_0x9fe53c['toUpperCase']()]+']',_0x14c215['message']);_0x2d570e(_0x14c215['message']);});});}function getTicket(_0x18349b,_0x5190ee,_0x109ff2,_0xae4d61,_0x560942){return function(_0x5c879a){logger[_0xde6e('0xb')](_0xde6e('0x2f'));return new Promise(function(_0x5eea31,_0x764095){var _0x54c0ed=moment();var _0x377c06={'method':'POST','uri':_0x109ff2+_0xde6e('0x30'),'body':{'title':intUtil[_0xde6e('0x31')](_0xae4d61[_0xde6e('0x32')],_0x560942,'\x20'),'description':intUtil[_0xde6e('0x31')](_0xae4d61[_0xde6e('0x33')],_0x560942,'\x0a'),'owner_id':_0x5c879a[_0xde6e('0x1d')],'creater_id':_0x5c879a['adminId'],'targetable_id':_0x5c879a[_0xde6e('0x27')],'targetable_type':_0xde6e('0x34'),'created_at':_0x54c0ed[_0xde6e('0x23')](_0xde6e('0x35')),'due_date':_0x54c0ed['add'](0x1e,'m')[_0xde6e('0x23')](_0xde6e('0x35'))},'json':!![]};_0x377c06[_0xde6e('0xa')]=_0x5190ee;return rp(_0x377c06)[_0xde6e('0xc')](function(_0xcf0ad){_0x5c879a[_0xde6e('0x36')]=_0xcf0ad[_0xde6e('0x37')]['id'];logger['info']('Task\x20created:',_0x5c879a['ticketId']);_0x5eea31(_0x5c879a);})[_0xde6e('0x14')](function(_0x5d82b5){logger[_0xde6e('0x15')]('['+[_0x18349b[_0xde6e('0x16')]()]+']',_0x5d82b5[_0xde6e('0x17')]);_0x764095(_0x5d82b5['message']);});});};}function emit(_0x1b1dc0,_0x86b971,_0x9958be){var _0xfb6c12={'uri':_0x1b1dc0+_0xde6e('0x38')+_0x9958be};io['to'](util[_0xde6e('0x23')]('user:%s',_0x86b971))['emit'](_0xde6e('0x39'),_0xfb6c12);}exports['cs']=function(_0x34ddee,_0x20fd44,_0x2424c3,_0x14437b,_0x9609d7,_0x388f7b,_0x2fc788,_0x21e937){var _0x42d332={};var _0x5efea9={'Authorization':_0xde6e('0x3a')+_0x388f7b['apiKey']};_0x388f7b[_0xde6e('0x3b')]=intUtil['stripTrailingSlash'](_0x388f7b['remoteUri']);_0x388f7b[_0xde6e('0x3c')]=intUtil[_0xde6e('0x3d')](_0x388f7b[_0xde6e('0x3c')]);var _0x5c98a5=_0x388f7b[_0xde6e('0x3b')];_0x42d332[_0xde6e('0x10')]=_0x388f7b[_0xde6e('0x3e')];_0x42d332[_0xde6e('0x25')]=_0x21e937[_0xde6e('0x3f')]()===_0xde6e('0x40')?_0x20fd44[_0xde6e('0x41')]:_0x20fd44[_0xde6e('0x42')];_0x42d332[_0xde6e('0x43')]=_0x21e937===_0xde6e('0x44')||_0x21e937===_0xde6e('0x45')?_0xde6e('0x44'):_0xde6e('0x40');if(_0x14437b){_0x42d332[_0xde6e('0x1a')]=_0x14437b['email'];}var _0x1e836a=util[_0xde6e('0x23')](_0xde6e('0x46'),_0x388f7b['serverUrl'],_0x20fd44['uniqueid'],md5(_0x20fd44[_0xde6e('0x47')]));if(_0x9609d7&&_0x9609d7[_0xde6e('0x48')]){logger[_0xde6e('0xb')](_0xde6e('0x49'),'Recording\x20is\x20enabled!');_0x20fd44['recordingURL']=_0x1e836a;}else if(_0x2fc788&&_0x2fc788[_0xde6e('0x4a')]&&_0x2fc788[_0xde6e('0x4a')]!==_0xde6e('0x4b')){logger[_0xde6e('0xb')](_0xde6e('0x4c'),_0xde6e('0x4d'));_0x20fd44[_0xde6e('0x4e')]=_0x1e836a;}else{_0x20fd44[_0xde6e('0x4e')]='';}return getAdminId(_0x42d332,_0x21e937,_0x5efea9,_0x5c98a5)['then'](getUser(_0x21e937,_0x5efea9,_0x5c98a5))[_0xde6e('0xc')](getEndUser(_0x21e937,_0x5efea9,_0x5c98a5))[_0xde6e('0xc')](getTicket(_0x21e937,_0x5efea9,_0x5c98a5,_0x2424c3,_0x20fd44))['then'](function(_0x33528c){logger[_0xde6e('0xb')](util[_0xde6e('0x23')](_0xde6e('0x4f'),_0x33528c[_0xde6e('0x36')]));if(_0x21e937!==_0xde6e('0x45')){logger[_0xde6e('0xb')]('['+[_0x21e937[_0xde6e('0x16')]()]+']',_0xde6e('0x50'));emit(_0x5c98a5,_0x14437b[_0xde6e('0x51')],_0x33528c['endUserId']);}})[_0xde6e('0x14')](function(_0x1ab7e6){logger[_0xde6e('0x15')]('['+[_0x21e937[_0xde6e('0x16')]()]+_0xde6e('0x52'),util[_0xde6e('0x53')](_0x1ab7e6,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 0eed9ad..a5d37c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4421=['./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','dynamics365','freshsales','exec','includes','data1','toLowerCase','data2','Configurations','queue','routeId','outbound','log','EVENT\x20UNKNOWN','vtiger','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce'];(function(_0x4f4ab8,_0x50c1f5){var _0x27a5f3=function(_0x170318){while(--_0x170318){_0x4f4ab8['push'](_0x4f4ab8['shift']());}};_0x27a5f3(++_0x50c1f5);}(_0x4421,0xbb));var _0x1442=function(_0x110ad5,_0x2aed2a){_0x110ad5=_0x110ad5-0x0;var _0x401c36=_0x4421[_0x110ad5];return _0x401c36;};'use strict';var _=require('lodash');var util=require(_0x1442('0x0'));var zendesk=require(_0x1442('0x1'));var salesforce=require(_0x1442('0x2'));var sugarcrm=require(_0x1442('0x3'));var freshdesk=require(_0x1442('0x4'));var zoho=require(_0x1442('0x5'));var desk=require(_0x1442('0x6'));var vtiger=require(_0x1442('0x7'));var servicenow=require(_0x1442('0x8'));var dynamics365=require(_0x1442('0x9'));var freshsales=require('./freshsales');var integrations=[_0x1442('0xa'),_0x1442('0xb'),_0x1442('0xc'),_0x1442('0xd'),_0x1442('0xe'),_0x1442('0xf'),'vtiger',_0x1442('0x10'),_0x1442('0x11'),'servicenow'];exports[_0x1442('0x12')]=function(_0x42460c,_0xe2b55d,_0x55e5d2,_0x3e290a,_0x35c065,_0x3adda9){if(_0x55e5d2){if(_[_0x1442('0x13')](integrations,_0x42460c[_0x1442('0x14')]['toLowerCase']())){try{var _0x123174=null;var _0x5a04ee='';var _0x5bbc41=_0x55e5d2[_0x42460c[_0x1442('0x14')][_0x1442('0x15')]()];if(_0x5bbc41){var _0x4af46b=_0x5bbc41[_0x42460c[_0x1442('0x16')]];if(_0x4af46b){var _0x4f29dd=_['find'](_0x4af46b[_0x1442('0x17')],{'id':parseInt(_0x42460c['data3'],0xa)});if(_0x4f29dd){if(_0x3e290a){if(_0x35c065&&_0xe2b55d[_0x1442('0x18')]){_0x5a04ee=_0x1442('0x18');}else if(_0xe2b55d[_0x1442('0x19')]){_0x5a04ee=_0x1442('0x1a');}else{console[_0x1442('0x1b')](_0x1442('0x1c'),_0xe2b55d);}}else{_0x5a04ee='unmanaged';}switch(_0x42460c[_0x1442('0x14')][_0x1442('0x15')]()){case _0x1442('0xa'):zendesk[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case'salesforce':salesforce[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0xc'):sugarcrm[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case'freshdesk':freshdesk[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0xe'):zoho[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0xf'):desk[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0x1d'):vtiger[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case'freshsales':freshsales['cs'](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9,_0x5a04ee);break;case'servicenow':servicenow['cs'](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9,_0x5a04ee);break;case _0x1442('0x10'):dynamics365['cs'](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9,_0x5a04ee);break;default:console['log'](_0x1442('0x1e'));}}else{_0x123174=require('../../../../config/logger')(_0x42460c[_0x1442('0x14')][_0x1442('0x15')]());_0x123174[_0x1442('0x1f')](_0x1442('0x20'),util[_0x1442('0x21')](_0x1442('0x22'),_0x42460c['data1'][_0x1442('0x15')](),_0x42460c[_0x1442('0x23')]));}}else{_0x123174=require(_0x1442('0x24'))(_0x42460c[_0x1442('0x14')][_0x1442('0x15')]());_0x123174[_0x1442('0x1f')](_0x1442('0x20'),util[_0x1442('0x21')](_0x1442('0x25'),_0x42460c['data1'][_0x1442('0x15')](),_0x42460c[_0x1442('0x16')]));}}else{}}catch(_0x5aeb88){console[_0x1442('0x1f')](_0x5aeb88);}}}};
\ No newline at end of file
+var _0x663a=['./vtiger','./servicenow','./freshsales','zendesk','salesforce','sugarcrm','desk','vtiger','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','outbound','log','EVENT\x20UNKNOWN','unmanaged','freshdesk','zoho','dynamics365','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','./zoho'];(function(_0x4d37f5,_0x42c8c7){var _0x1aeefd=function(_0xbf4648){while(--_0xbf4648){_0x4d37f5['push'](_0x4d37f5['shift']());}};_0x1aeefd(++_0x42c8c7);}(_0x663a,0xf3));var _0xa663=function(_0x10144c,_0x3baa8e){_0x10144c=_0x10144c-0x0;var _0x171652=_0x663a[_0x10144c];return _0x171652;};'use strict';var _=require(_0xa663('0x0'));var util=require('util');var zendesk=require('./zendesk');var salesforce=require('./salesforce');var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require(_0xa663('0x1'));var desk=require('./desk');var vtiger=require(_0xa663('0x2'));var servicenow=require(_0xa663('0x3'));var dynamics365=require('./dynamics365');var freshsales=require(_0xa663('0x4'));var integrations=[_0xa663('0x5'),_0xa663('0x6'),_0xa663('0x7'),'freshdesk','zoho',_0xa663('0x8'),_0xa663('0x9'),'dynamics365',_0xa663('0xa'),_0xa663('0xb')];exports[_0xa663('0xc')]=function(_0x5c14ac,_0x88c925,_0x464dcf,_0x3e891e,_0x5b50bc,_0x23cc04){if(_0x464dcf){if(_[_0xa663('0xd')](integrations,_0x5c14ac[_0xa663('0xe')][_0xa663('0xf')]())){try{var _0x1436d4=null;var _0x29bc16='';var _0x331cd3=_0x464dcf[_0x5c14ac['data1'][_0xa663('0xf')]()];if(_0x331cd3){var _0x5674ac=_0x331cd3[_0x5c14ac[_0xa663('0x10')]];if(_0x5674ac){var _0x1e745d=_[_0xa663('0x11')](_0x5674ac[_0xa663('0x12')],{'id':parseInt(_0x5c14ac[_0xa663('0x13')],0xa)});if(_0x1e745d){if(_0x3e891e){if(_0x5b50bc&&_0x88c925[_0xa663('0x14')]){_0x29bc16='queue';}else if(_0x88c925['routeId']){_0x29bc16=_0xa663('0x15');}else{console[_0xa663('0x16')](_0xa663('0x17'),_0x88c925);}}else{_0x29bc16=_0xa663('0x18');}switch(_0x5c14ac['data1'][_0xa663('0xf')]()){case _0xa663('0x5'):zendesk[_0x29bc16](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04);break;case _0xa663('0x6'):salesforce[_0x29bc16](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04);break;case _0xa663('0x7'):sugarcrm[_0x29bc16](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04);break;case _0xa663('0x19'):freshdesk[_0x29bc16](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04);break;case _0xa663('0x1a'):zoho[_0x29bc16](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04);break;case _0xa663('0x8'):desk[_0x29bc16](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04);break;case _0xa663('0x9'):vtiger[_0x29bc16](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04);break;case _0xa663('0xa'):freshsales['cs'](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04,_0x29bc16);break;case _0xa663('0xb'):servicenow['cs'](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04,_0x29bc16);break;case _0xa663('0x1b'):dynamics365['cs'](_0x5c14ac,_0x88c925,_0x1e745d,_0x3e891e,_0x5b50bc,_0x5674ac,_0x23cc04,_0x29bc16);break;default:console['log'](_0xa663('0x1c'));}}else{_0x1436d4=require(_0xa663('0x1d'))(_0x5c14ac[_0xa663('0xe')]['toLowerCase']());_0x1436d4[_0xa663('0x1e')](_0xa663('0x1f'),util[_0xa663('0x20')](_0xa663('0x21'),_0x5c14ac[_0xa663('0xe')][_0xa663('0xf')](),_0x5c14ac['data3']));}}else{_0x1436d4=require(_0xa663('0x1d'))(_0x5c14ac[_0xa663('0xe')][_0xa663('0xf')]());_0x1436d4[_0xa663('0x1e')](_0xa663('0x1f'),util[_0xa663('0x20')](_0xa663('0x22'),_0x5c14ac[_0xa663('0xe')][_0xa663('0xf')](),_0x5c14ac['data2']));}}else{}}catch(_0x420aca){console['error'](_0x420aca);}}}};
\ No newline at end of file
index a323964..9657ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9166=['type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','format','Caller\x20-\x20%s','<unknown>','Company','No\x20Company','upperFirst','forEach','includes','string','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientSecret','login','username','Connection\x20established.','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','queue','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','monitor_format','lastevent','toUpperCase','Fields',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','Task','ActivityDate','utc','endUserType','WhoId','account','WhatId','ticketType','Case','contact','ContactId','lead','leadId','info','sobject','create','isNil','validateEmail','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','account_contact_lead','additionalSearchAccount','Account','Phone','attributes'];(function(_0x170134,_0x4183fd){var _0x5f7b4e=function(_0x2a42fa){while(--_0x2a42fa){_0x170134['push'](_0x170134['shift']());}};_0x5f7b4e(++_0x4183fd);}(_0x9166,0x1d8));var _0x6916=function(_0x44ca6e,_0x5e2c91){_0x44ca6e=_0x44ca6e-0x0;var _0x2edab2=_0x9166[_0x44ca6e];return _0x2edab2;};'use strict';var _=require(_0x6916('0x0'));var rp=require(_0x6916('0x1'));var moment=require(_0x6916('0x2'));var BPromise=require(_0x6916('0x3'));var md5=require(_0x6916('0x4'));var jsforce=require(_0x6916('0x5'));var util=require(_0x6916('0x6'));var Redis=require(_0x6916('0x7'));var intUtil=require(_0x6916('0x8'));var config=require(_0x6916('0x9'));var logger=require(_0x6916('0xa'))(_0x6916('0xb'));config[_0x6916('0xc')]=_[_0x6916('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x6916('0xe'))(new Redis(config['redis']));function emit(_0x5cfa97,_0x3caccf,_0x3a4ea8){io['to'](_0x5cfa97)[_0x6916('0xf')](_0x3caccf,_0x3a4ea8);}function getTicket(_0xa1d73c,_0x1a1731,_0x2e5dae,_0x578ea4,_0x2917a7,_0x1553ab,_0x3be482,_0x24541e){var _0x19dc89=Object[_0x6916('0x10')]({},{'OwnerId':_0x1a1731['id'],'Subject':intUtil[_0x6916('0x11')](_0x578ea4[_0x6916('0x12')],_0x2917a7,'\x20'),'Description':intUtil[_0x6916('0x11')](_0x578ea4[_0x6916('0x13')],_0x2917a7,'\x0a')},getCustomFields(_0x1553ab,_0x2917a7));if(_0x2e5dae){if(_0x578ea4['ticketType']===_0x6916('0x14')){_0x19dc89[_0x6916('0x15')]=moment[_0x6916('0x16')]();_0x19dc89['IsReminderSet']=![];_0x19dc89['IsRecurrence']=![];if(_0x2e5dae[_0x6916('0x17')]==='contact'||_0x2e5dae[_0x6916('0x17')]==='lead'){_0x19dc89[_0x6916('0x18')]=_0x2e5dae['id'];}else if(_0x2e5dae[_0x6916('0x17')]===_0x6916('0x19')){_0x19dc89[_0x6916('0x1a')]=_0x2e5dae['id'];}}else if(_0x578ea4[_0x6916('0x1b')]===_0x6916('0x1c')){if(_0x2e5dae[_0x6916('0x17')]===_0x6916('0x1d')){_0x19dc89[_0x6916('0x1e')]=_0x2e5dae['id'];}else if(_0x2e5dae[_0x6916('0x17')]==='account'){_0x19dc89['AccountId']=_0x2e5dae['id'];}else if(_0x2e5dae[_0x6916('0x17')]===_0x6916('0x1f')&&_0x578ea4[_0x6916('0x20')]){_0x19dc89[_0x578ea4[_0x6916('0x20')]]=_0x2e5dae['id'];}else{logger[_0x6916('0x21')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x3be482[_0x6916('0x22')](_0x578ea4[_0x6916('0x1b')])[_0x6916('0x23')](_0x19dc89);}function getUser(_0x5a940a,_0xb8a113,_0x4df6dc){if(!_[_0x6916('0x24')](_0xb8a113)&&intUtil[_0x6916('0x25')](_0xb8a113)){var _0xd08012={'Email':_0xb8a113};var _0x95db16={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4df6dc[_0x6916('0x22')](_0x6916('0x26'))[_0x6916('0x27')](_0xd08012,_0x95db16)[_0x6916('0x28')]()[_0x6916('0x29')](function(_0x1cbaec){if(_0x1cbaec[_0x6916('0x2a')]){var _0x46ac89=_[_0x6916('0x27')](_0x1cbaec,function(_0x4b16e2){return _0x4b16e2[_0x6916('0x2b')]===_0xb8a113;});if(_0x46ac89){logger[_0x6916('0x21')](_0x6916('0x2c'),_0xb8a113);return BPromise[_0x6916('0x2d')]({'id':_0x46ac89['Id'],'name':_0x46ac89[_0x6916('0x2e')]});}}else{logger[_0x6916('0x21')](_0x6916('0x2f'),_0xb8a113);return _0x4df6dc[_0x6916('0x30')]()[_0x6916('0x29')](function(_0x3b232e){return BPromise[_0x6916('0x2d')]({'id':_0x3b232e[_0x6916('0x31')],'name':_0x3b232e[_0x6916('0x32')]});});}});}else{logger[_0x6916('0x21')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0xb8a113);return _0x4df6dc[_0x6916('0x30')]()[_0x6916('0x29')](function(_0x355020){return BPromise[_0x6916('0x2d')]({'id':_0x355020[_0x6916('0x31')],'name':_0x355020[_0x6916('0x32')]});});}}function getEndUser(_0x5e6406,_0x5e6cbf,_0x2ca126,_0x1e0b81,_0x2f78bc){var _0x7165f8={'$or':{'Phone':_0x1e0b81}};var _0x3fbb82={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()['then'](function(){logger[_0x6916('0x21')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x1e0b81,_0x5e6cbf[_0x6916('0x33')]);switch(_0x5e6cbf[_0x6916('0x33')]){case _0x6916('0x34'):var _0x3294b3=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x36')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x36')]]=_0x1e0b81;_['merge'](_0x3294b3[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')](_0x6916('0x38'))[_0x6916('0x27')](_0x3294b3,_0x3fbb82)[_0x6916('0x28')]()[_0x6916('0x29')](function(_0x4952d0){if(_0x4952d0&&_0x4952d0[_0x6916('0x2a')]){return _0x4952d0;}else{var _0xb60103=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x39')]){var _0x2b1fc9={};_0x2b1fc9[_0x5e6cbf['additionalSearchLead']]=_0x1e0b81;_[_0x6916('0x3a')](_0xb60103['$or'],_0x2b1fc9);}return _0x2f78bc[_0x6916('0x22')]('Lead')[_0x6916('0x27')](_0xb60103,_0x3fbb82);}});case _0x6916('0x3b'):var _0xeebf50=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x3c')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x3c')]]=_0x1e0b81;_[_0x6916('0x3a')](_0xeebf50[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')](_0x6916('0x3d'))['find'](_0xeebf50,_0x3fbb82)[_0x6916('0x28')]()[_0x6916('0x29')](function(_0x36a915){if(_0x36a915&&_0x36a915[_0x6916('0x2a')]){return _0x36a915;}else{var _0x5f2ad3=_['cloneDeep'](_0x7165f8);if(_0x5e6cbf[_0x6916('0x36')]){var _0x18ddf4={};_0x18ddf4[_0x5e6cbf[_0x6916('0x36')]]=_0x1e0b81;_[_0x6916('0x3a')](_0x5f2ad3[_0x6916('0x37')],_0x18ddf4);}return _0x2f78bc['sobject'](_0x6916('0x38'))['find'](_0x5f2ad3,_0x3fbb82)[_0x6916('0x29')](function(_0x1f5d41){if(_0x1f5d41&&_0x1f5d41[_0x6916('0x2a')]){return _0x1f5d41;}else{var _0x5e753e=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf['additionalSearchLead']){var _0x4cc3f0={};_0x4cc3f0[_0x5e6cbf['additionalSearchLead']]=_0x1e0b81;_[_0x6916('0x3a')](_0x5e753e[_0x6916('0x37')],_0x4cc3f0);}return _0x2f78bc['sobject']('Lead')[_0x6916('0x27')](_0x5e753e,_0x3fbb82);}});}});case _0x6916('0x1d'):var _0x3294b3=_['cloneDeep'](_0x7165f8);if(_0x5e6cbf[_0x6916('0x36')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x36')]]=_0x1e0b81;_[_0x6916('0x3a')](_0x3294b3[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc['sobject'](_0x6916('0x38'))[_0x6916('0x27')](_0x3294b3,_0x3fbb82)[_0x6916('0x28')]();case _0x6916('0x1f'):var _0x322ded=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf['additionalSearchLead']){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x39')]]=_0x1e0b81;_[_0x6916('0x3a')](_0x322ded[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')]('Lead')[_0x6916('0x27')](_0x322ded,_0x3fbb82);case'account':var _0xeebf50=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x3c')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x3c')]]=_0x1e0b81;_['merge'](_0xeebf50[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')](_0x6916('0x3d'))[_0x6916('0x27')](_0xeebf50,_0x3fbb82);default:return null;}})['then'](function(_0x57da10){if(_0x57da10&&_0x57da10[_0x6916('0x2a')]){var _0x3087a4=_['first'](_0x57da10);if(_0x3087a4){return BPromise['resolve']({'id':_0x3087a4['Id'],'name':_0x3087a4[_0x6916('0x2e')],'phone':_0x3087a4[_0x6916('0x3e')],'endUserType':_0x3087a4[_0x6916('0x3f')][_0x6916('0x40')][_0x6916('0x41')]()});}}})['then'](function(_0x44c811){if(_0x44c811){logger['info'](_0x6916('0x42'),_0x44c811['endUserType'],_0x1e0b81);return BPromise[_0x6916('0x2d')](_0x44c811);}else{logger[_0x6916('0x21')](_0x6916('0x43'),_0x1e0b81);var _0x15ea44={'Phone':_0x1e0b81};if(_0x5e6cbf[_0x6916('0x44')]){if(_0x5e6cbf['moduleCreate']==='contact'){logger[_0x6916('0x21')](_0x6916('0x45'),_0x1e0b81,_0x5e6cbf[_0x6916('0x44')]);_0x15ea44[_0x6916('0x46')]=_0x2ca126!=='<unknown>'?_0x2ca126:util[_0x6916('0x47')](_0x6916('0x48'),_0x1e0b81);}else if(_0x5e6cbf[_0x6916('0x44')]===_0x6916('0x1f')){logger[_0x6916('0x21')](_0x6916('0x45'),_0x1e0b81,_0x5e6cbf[_0x6916('0x44')]);_0x15ea44[_0x6916('0x46')]=_0x2ca126!==_0x6916('0x49')?_0x2ca126:util['format']('Caller\x20-\x20%s',_0x1e0b81);_0x15ea44[_0x6916('0x4a')]=_0x6916('0x4b');}else if(_0x5e6cbf[_0x6916('0x44')]===_0x6916('0x19')){logger[_0x6916('0x21')](_0x6916('0x45'),_0x1e0b81,_0x5e6cbf[_0x6916('0x44')]);_0x15ea44[_0x6916('0x2e')]=_0x2ca126!=='<unknown>'?_0x2ca126:util['format'](_0x6916('0x48'),_0x1e0b81);}else{return null;}}return _0x2f78bc[_0x6916('0x22')](_[_0x6916('0x4c')](_0x5e6cbf[_0x6916('0x44')]))[_0x6916('0x23')](_0x15ea44)[_0x6916('0x29')](function(_0xfeae12){return BPromise[_0x6916('0x2d')]({'id':_0xfeae12['id'],'endUserType':_0x5e6cbf[_0x6916('0x44')]});});}});}function getCustomFields(_0x2537d5,_0x30377b){var _0x360e80={};if(_0x2537d5[_0x6916('0x2a')]>0x0){_[_0x6916('0x4d')](_0x2537d5,function(_0x1dbf8f){if(_[_0x6916('0x4e')]([_0x6916('0x4f'),'picklist'],_0x1dbf8f['type'])&&_0x1dbf8f[_0x6916('0x50')]){_0x360e80[_0x1dbf8f[_0x6916('0x50')]]=_0x1dbf8f[_0x6916('0x51')][_0x6916('0x52')]();}else if(_0x1dbf8f[_0x6916('0x40')]===_0x6916('0x53')&&_0x1dbf8f[_0x6916('0x54')]&&_0x1dbf8f[_0x6916('0x50')]){_0x30377b[_0x1dbf8f[_0x6916('0x54')]]&&(_0x360e80[_0x1dbf8f[_0x6916('0x50')]]=_0x30377b[_0x1dbf8f[_0x6916('0x54')]][_0x6916('0x52')]());}else if(_0x1dbf8f[_0x6916('0x40')]===_0x6916('0x55')&&_0x1dbf8f[_0x6916('0x56')]&&_0x1dbf8f[_0x6916('0x56')][_0x6916('0x57')]&&_0x1dbf8f['idField']){_0x30377b[_0x1dbf8f['Variable']['name'][_0x6916('0x41')]()]&&(_0x360e80[_0x1dbf8f[_0x6916('0x50')]]=_0x30377b[_0x1dbf8f[_0x6916('0x56')]['name'][_0x6916('0x41')]()][_0x6916('0x52')]());}});}return _0x360e80;}function getConnection(_0x25035d){var _0x3bbd4e=_0x25035d[_0x6916('0x58')][_0x6916('0x59')](_0x25035d[_0x6916('0x5a')]);var _0x535ca7=new jsforce[(_0x6916('0x5b'))]({'oauth2':{'loginUrl':_0x25035d[_0x6916('0x5c')]||_0x6916('0x5d'),'clientId':_0x25035d['clientId'],'clientSecret':_0x25035d[_0x6916('0x5e')]}});return _0x535ca7[_0x6916('0x5f')](_0x25035d[_0x6916('0x60')],_0x3bbd4e)[_0x6916('0x29')](function(){logger['info'](_0x6916('0x61'));return _0x535ca7;});}exports['queue']=function(_0x274288,_0x536f67,_0x397a7c,_0x5c7534,_0x4fd201,_0x5c2aed){var _0xd27375,_0x12d7ce,_0x31da76,_0x4e5f37;_0x5c2aed[_0x6916('0x62')]=intUtil[_0x6916('0x63')](_0x5c2aed[_0x6916('0x62')]);_0x5c2aed[_0x6916('0x5c')]=intUtil[_0x6916('0x63')](_0x5c2aed[_0x6916('0x5c')]);if(_0x4fd201&&_0x4fd201['monitor_format']){logger[_0x6916('0x21')](_0x6916('0x64'),_0x6916('0x65'));_0x536f67[_0x6916('0x66')]=util[_0x6916('0x47')](_0x6916('0x67'),_0x5c2aed[_0x6916('0x62')],_0x536f67[_0x6916('0x68')],md5(_0x536f67[_0x6916('0x68')]));}else{_0x536f67[_0x6916('0x66')]='';}return getConnection(_0x5c2aed)[_0x6916('0x29')](function(_0xe1dcc){_0x4e5f37=_0xe1dcc;return getUser(_0x5c2aed,_0x5c7534[_0x6916('0x69')],_0x4e5f37);})[_0x6916('0x29')](function(_0x49581d){_0xd27375=_0x49581d;return getEndUser(_0x5c2aed,_0x397a7c,_0x536f67[_0x6916('0x6a')],_0x536f67[_0x6916('0x6b')],_0x4e5f37);})[_0x6916('0x29')](function(_0x373248){_0x12d7ce=_0x373248;return getTicket(_0x5c2aed,_0xd27375,_0x12d7ce,_0x397a7c,_0x536f67,_0x397a7c['Fields'],_0x4e5f37,_0x6916('0x6c'));})[_0x6916('0x29')](function(_0x13bc48){_0x31da76=_0x13bc48;logger['info']('[QUEUE]\x20Ticket\x20%s\x20created',_0x31da76['id']);logger['info'](_0x6916('0x6d'),_0x31da76['id'],_0x5c7534['name'],_0x5c2aed[_0x6916('0x40')]);switch(_0x5c2aed[_0x6916('0x40')]){case'integrationTab':emit(util[_0x6916('0x47')]('user:%s',_0x5c7534['name']),_0x6916('0x6e'),{'recordId':_0x31da76['id']});break;case _0x6916('0x6f'):emit(util[_0x6916('0x47')](_0x6916('0x70'),_0x5c7534[_0x6916('0x57')]),_0x6916('0x71'),{'uri':util['format'](_0x6916('0x72'),_0x4e5f37[_0x6916('0x73')],_0x31da76['id'])});break;default:logger[_0x6916('0x74')](_0x6916('0x75'));}})[_0x6916('0x76')](function(_0x182764){logger['error'](_0x6916('0x64'),_0x182764);});};exports[_0x6916('0x77')]=function(_0x47522c,_0x10840b,_0x4316ec,_0x141d1f,_0x189814,_0x214bb7,_0x4ae1c6){var _0x21592e,_0x12bd2a,_0xa582c6,_0x789fe9;_0x214bb7[_0x6916('0x62')]=intUtil[_0x6916('0x63')](_0x214bb7[_0x6916('0x62')]);_0x214bb7[_0x6916('0x5c')]=intUtil[_0x6916('0x63')](_0x214bb7[_0x6916('0x5c')]);if(_0x4ae1c6&&_0x4ae1c6['recordingFormat']&&_0x4ae1c6[_0x6916('0x78')]!=='none'){logger[_0x6916('0x21')]('[OUTBOUND]',_0x6916('0x65'));_0x10840b[_0x6916('0x66')]=util[_0x6916('0x47')](_0x6916('0x67'),_0x214bb7[_0x6916('0x62')],_0x10840b[_0x6916('0x68')],md5(_0x10840b['uniqueid']));}return getConnection(_0x214bb7)[_0x6916('0x29')](function(_0x5cf41e){_0x789fe9=_0x5cf41e;return getUser(_0x214bb7,_0x141d1f[_0x6916('0x69')],_0x789fe9);})[_0x6916('0x29')](function(_0x382228){_0x21592e=_0x382228;return getEndUser(_0x214bb7,_0x4316ec,_0x10840b['destcalleridname'],_0x10840b[_0x6916('0x79')],_0x789fe9);})[_0x6916('0x29')](function(_0x309af4){_0x12bd2a=_0x309af4;return getTicket(_0x214bb7,_0x21592e,_0x12bd2a,_0x4316ec,_0x10840b,_0x4316ec['Fields'],_0x789fe9,_0x6916('0x77'));})[_0x6916('0x29')](function(_0x2367af){_0xa582c6=_0x2367af;logger['info'](_0x6916('0x7a'),_0xa582c6['id']);logger[_0x6916('0x21')](_0x6916('0x7b'),_0xa582c6['id'],_0x141d1f[_0x6916('0x57')],_0x214bb7['type']);switch(_0x214bb7[_0x6916('0x40')]){case _0x6916('0x7c'):emit(util['format'](_0x6916('0x70'),_0x141d1f[_0x6916('0x57')]),_0x6916('0x6e'),{'recordId':_0xa582c6['id']});break;case _0x6916('0x6f'):emit(util[_0x6916('0x47')](_0x6916('0x70'),_0x141d1f['name']),'trigger:browser:url',{'uri':util[_0x6916('0x47')](_0x6916('0x72'),_0x789fe9[_0x6916('0x73')],_0xa582c6['id'])});break;default:logger[_0x6916('0x74')](_0x6916('0x7d'),_0x6916('0x7e'));}})['catch'](function(_0x4e5c94){logger[_0x6916('0x74')](_0x6916('0x7d'),_0x4e5c94);});};exports[_0x6916('0x7f')]=function(_0x605bd3,_0x12de72,_0x39bcee,_0x457037,_0x34c1ec,_0x390878){var _0x4785f6,_0x1738d7,_0x2c8462,_0xe52126;_0x390878[_0x6916('0x62')]=intUtil[_0x6916('0x63')](_0x390878['serverUrl']);_0x390878['remoteUri']=intUtil[_0x6916('0x63')](_0x390878[_0x6916('0x5c')]);if(_0x34c1ec&&_0x34c1ec[_0x6916('0x80')]){logger[_0x6916('0x21')]('['+_0x12de72[_0x6916('0x81')][_0x6916('0x82')]()+']',_0x6916('0x65'));_0x12de72[_0x6916('0x66')]=util[_0x6916('0x47')](_0x6916('0x67'),_0x390878[_0x6916('0x62')],_0x12de72[_0x6916('0x68')],md5(_0x12de72[_0x6916('0x68')]));}else{_0x12de72[_0x6916('0x66')]='';}return getConnection(_0x390878)[_0x6916('0x29')](function(_0x288201){_0xe52126=_0x288201;if(!_[_0x6916('0x24')](_0x457037)){return getUser(_0x390878,_0x457037['name'],_0xe52126);}else{return getUser(_0x390878,null,_0xe52126);}})['then'](function(_0x1a95db){_0x4785f6=_0x1a95db;return getEndUser(_0x390878,_0x39bcee,_0x12de72[_0x6916('0x6a')],_0x12de72[_0x6916('0x6b')],_0xe52126);})[_0x6916('0x29')](function(_0x534de0){_0x1738d7=_0x534de0;return getTicket(_0x390878,_0x4785f6,_0x1738d7,_0x39bcee,_0x12de72,_0x39bcee[_0x6916('0x83')],_0xe52126);})['then'](function(_0x4abc3c){_0x2c8462=_0x4abc3c;logger[_0x6916('0x21')]('['+_0x12de72[_0x6916('0x81')]['toUpperCase']()+_0x6916('0x84'),_0x2c8462['id']);logger['info']('['+_0x12de72[_0x6916('0x81')]['toUpperCase']()+_0x6916('0x85'),_0x390878[_0x6916('0x40')]);})[_0x6916('0x76')](function(_0x3b426a){logger[_0x6916('0x74')]('['+_0x12de72['lastevent']['toUpperCase']()+']',_0x3b426a);});};
\ No newline at end of file
+var _0xc389=['Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','monitor_format','lastevent','toUpperCase','isNil','lodash','request-promise','moment','bluebird','jsforce','util','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','lead','WhoId','account','WhatId','Case','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','validateEmail','sobject','User','find','execute','then','Agent\x20%s\x20found.','resolve','Name','identity','user_id','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','length','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','first','Phone','type','toLowerCase','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','forEach','string','idField','toString','variable','variableName','Variable','name','password','concat','securityToken','Connection','remoteUri','clientId','clientSecret','login','username','Connection\x20established.','queue','stripTrailingSlash','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','outbound','recordingFormat','none','[OUTBOUND]'];(function(_0x5466ab,_0x227b13){var _0x40751a=function(_0x477f9e){while(--_0x477f9e){_0x5466ab['push'](_0x5466ab['shift']());}};_0x40751a(++_0x227b13);}(_0xc389,0x10c));var _0x9c38=function(_0x3c20c9,_0x49d60c){_0x3c20c9=_0x3c20c9-0x0;var _0x173dc3=_0xc389[_0x3c20c9];return _0x173dc3;};'use strict';var _=require(_0x9c38('0x0'));var rp=require(_0x9c38('0x1'));var moment=require(_0x9c38('0x2'));var BPromise=require(_0x9c38('0x3'));var md5=require('md5');var jsforce=require(_0x9c38('0x4'));var util=require(_0x9c38('0x5'));var Redis=require('ioredis');var intUtil=require(_0x9c38('0x6'));var config=require(_0x9c38('0x7'));var logger=require('../../../../config/logger')(_0x9c38('0x8'));config[_0x9c38('0x9')]=_[_0x9c38('0xa')](config[_0x9c38('0x9')],{'host':_0x9c38('0xb'),'port':0x18eb});var io=require(_0x9c38('0xc'))(new Redis(config[_0x9c38('0x9')]));function emit(_0x70b76a,_0x468afe,_0x3433fd){io['to'](_0x70b76a)['emit'](_0x468afe,_0x3433fd);}function getTicket(_0x1e8d91,_0x5a83ed,_0x5a2b0f,_0x7cd3d,_0x1d7513,_0x1765f7,_0x29f057,_0x5b49d4){var _0x4ff370=Object[_0x9c38('0xd')]({},{'OwnerId':_0x5a83ed['id'],'Subject':intUtil[_0x9c38('0xe')](_0x7cd3d[_0x9c38('0xf')],_0x1d7513,'\x20'),'Description':intUtil[_0x9c38('0xe')](_0x7cd3d[_0x9c38('0x10')],_0x1d7513,'\x0a')},getCustomFields(_0x1765f7,_0x1d7513));if(_0x5a2b0f){if(_0x7cd3d[_0x9c38('0x11')]===_0x9c38('0x12')){_0x4ff370[_0x9c38('0x13')]=moment[_0x9c38('0x14')]();_0x4ff370['IsReminderSet']=![];_0x4ff370[_0x9c38('0x15')]=![];if(_0x5a2b0f[_0x9c38('0x16')]==='contact'||_0x5a2b0f[_0x9c38('0x16')]===_0x9c38('0x17')){_0x4ff370[_0x9c38('0x18')]=_0x5a2b0f['id'];}else if(_0x5a2b0f[_0x9c38('0x16')]===_0x9c38('0x19')){_0x4ff370[_0x9c38('0x1a')]=_0x5a2b0f['id'];}}else if(_0x7cd3d['ticketType']===_0x9c38('0x1b')){if(_0x5a2b0f[_0x9c38('0x16')]===_0x9c38('0x1c')){_0x4ff370[_0x9c38('0x1d')]=_0x5a2b0f['id'];}else if(_0x5a2b0f['endUserType']==='account'){_0x4ff370[_0x9c38('0x1e')]=_0x5a2b0f['id'];}else if(_0x5a2b0f[_0x9c38('0x16')]===_0x9c38('0x17')&&_0x7cd3d[_0x9c38('0x1f')]){_0x4ff370[_0x7cd3d[_0x9c38('0x1f')]]=_0x5a2b0f['id'];}else{logger[_0x9c38('0x20')](_0x9c38('0x21'));}}}return _0x29f057['sobject'](_0x7cd3d[_0x9c38('0x11')])[_0x9c38('0x22')](_0x4ff370);}function getUser(_0x4acb5f,_0x1b5aae,_0x23d927){if(!_['isNil'](_0x1b5aae)&&intUtil[_0x9c38('0x23')](_0x1b5aae)){var _0xddb6c8={'Email':_0x1b5aae};var _0x47055f={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x23d927[_0x9c38('0x24')](_0x9c38('0x25'))[_0x9c38('0x26')](_0xddb6c8,_0x47055f)[_0x9c38('0x27')]()[_0x9c38('0x28')](function(_0x15e473){if(_0x15e473['length']){var _0x123166=_[_0x9c38('0x26')](_0x15e473,function(_0x143159){return _0x143159['Email']===_0x1b5aae;});if(_0x123166){logger['info'](_0x9c38('0x29'),_0x1b5aae);return BPromise[_0x9c38('0x2a')]({'id':_0x123166['Id'],'name':_0x123166[_0x9c38('0x2b')]});}}else{logger[_0x9c38('0x20')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x1b5aae);return _0x23d927[_0x9c38('0x2c')]()[_0x9c38('0x28')](function(_0x37debb){return BPromise[_0x9c38('0x2a')]({'id':_0x37debb[_0x9c38('0x2d')],'name':_0x37debb['display_name']});});}});}else{logger['info'](_0x9c38('0x2e'),_0x1b5aae);return _0x23d927['identity']()[_0x9c38('0x28')](function(_0x4c3fb4){return BPromise['resolve']({'id':_0x4c3fb4[_0x9c38('0x2d')],'name':_0x4c3fb4[_0x9c38('0x2f')]});});}}function getEndUser(_0xdc09b9,_0x439a34,_0xdf716b,_0x47e7f8,_0xbbf8a2){var _0x404b4d={'$or':{'Phone':_0x47e7f8}};var _0x67b4bb={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x9c38('0x2a')]()[_0x9c38('0x28')](function(){logger['info'](_0x9c38('0x30'),_0x47e7f8,_0x439a34[_0x9c38('0x31')]);switch(_0x439a34[_0x9c38('0x31')]){case _0x9c38('0x32'):var _0x4f395e=_[_0x9c38('0x33')](_0x404b4d);if(_0x439a34[_0x9c38('0x34')]){var _0x143a20={};_0x143a20[_0x439a34[_0x9c38('0x34')]]=_0x47e7f8;_[_0x9c38('0x35')](_0x4f395e[_0x9c38('0x36')],_0x143a20);}return _0xbbf8a2[_0x9c38('0x24')](_0x9c38('0x37'))['find'](_0x4f395e,_0x67b4bb)[_0x9c38('0x27')]()[_0x9c38('0x28')](function(_0x267bc8){if(_0x267bc8&&_0x267bc8[_0x9c38('0x38')]){return _0x267bc8;}else{var _0x5bb64d=_[_0x9c38('0x33')](_0x404b4d);if(_0x439a34[_0x9c38('0x39')]){var _0x21f698={};_0x21f698[_0x439a34['additionalSearchLead']]=_0x47e7f8;_[_0x9c38('0x35')](_0x5bb64d[_0x9c38('0x36')],_0x21f698);}return _0xbbf8a2[_0x9c38('0x24')](_0x9c38('0x3a'))[_0x9c38('0x26')](_0x5bb64d,_0x67b4bb);}});case _0x9c38('0x3b'):var _0x5a1cbb=_[_0x9c38('0x33')](_0x404b4d);if(_0x439a34[_0x9c38('0x3c')]){var _0x143a20={};_0x143a20[_0x439a34[_0x9c38('0x3c')]]=_0x47e7f8;_['merge'](_0x5a1cbb[_0x9c38('0x36')],_0x143a20);}return _0xbbf8a2[_0x9c38('0x24')]('Account')[_0x9c38('0x26')](_0x5a1cbb,_0x67b4bb)[_0x9c38('0x27')]()['then'](function(_0x4bf06f){if(_0x4bf06f&&_0x4bf06f[_0x9c38('0x38')]){return _0x4bf06f;}else{var _0x2a5536=_[_0x9c38('0x33')](_0x404b4d);if(_0x439a34['additionalSearchContact']){var _0x1b96bc={};_0x1b96bc[_0x439a34[_0x9c38('0x34')]]=_0x47e7f8;_[_0x9c38('0x35')](_0x2a5536[_0x9c38('0x36')],_0x1b96bc);}return _0xbbf8a2[_0x9c38('0x24')](_0x9c38('0x37'))[_0x9c38('0x26')](_0x2a5536,_0x67b4bb)[_0x9c38('0x28')](function(_0x1c3fd5){if(_0x1c3fd5&&_0x1c3fd5[_0x9c38('0x38')]){return _0x1c3fd5;}else{var _0x5b1b25=_[_0x9c38('0x33')](_0x404b4d);if(_0x439a34[_0x9c38('0x39')]){var _0x5bc0bc={};_0x5bc0bc[_0x439a34['additionalSearchLead']]=_0x47e7f8;_[_0x9c38('0x35')](_0x5b1b25[_0x9c38('0x36')],_0x5bc0bc);}return _0xbbf8a2[_0x9c38('0x24')](_0x9c38('0x3a'))['find'](_0x5b1b25,_0x67b4bb);}});}});case _0x9c38('0x1c'):var _0x4f395e=_[_0x9c38('0x33')](_0x404b4d);if(_0x439a34[_0x9c38('0x34')]){var _0x143a20={};_0x143a20[_0x439a34[_0x9c38('0x34')]]=_0x47e7f8;_[_0x9c38('0x35')](_0x4f395e[_0x9c38('0x36')],_0x143a20);}return _0xbbf8a2[_0x9c38('0x24')](_0x9c38('0x37'))[_0x9c38('0x26')](_0x4f395e,_0x67b4bb)[_0x9c38('0x27')]();case _0x9c38('0x17'):var _0x57cb8b=_['cloneDeep'](_0x404b4d);if(_0x439a34[_0x9c38('0x39')]){var _0x143a20={};_0x143a20[_0x439a34[_0x9c38('0x39')]]=_0x47e7f8;_['merge'](_0x57cb8b[_0x9c38('0x36')],_0x143a20);}return _0xbbf8a2[_0x9c38('0x24')]('Lead')['find'](_0x57cb8b,_0x67b4bb);case _0x9c38('0x19'):var _0x5a1cbb=_['cloneDeep'](_0x404b4d);if(_0x439a34[_0x9c38('0x3c')]){var _0x143a20={};_0x143a20[_0x439a34[_0x9c38('0x3c')]]=_0x47e7f8;_[_0x9c38('0x35')](_0x5a1cbb[_0x9c38('0x36')],_0x143a20);}return _0xbbf8a2['sobject']('Account')[_0x9c38('0x26')](_0x5a1cbb,_0x67b4bb);default:return null;}})[_0x9c38('0x28')](function(_0x11a996){if(_0x11a996&&_0x11a996['length']){var _0x44f555=_[_0x9c38('0x3d')](_0x11a996);if(_0x44f555){return BPromise[_0x9c38('0x2a')]({'id':_0x44f555['Id'],'name':_0x44f555[_0x9c38('0x2b')],'phone':_0x44f555[_0x9c38('0x3e')],'endUserType':_0x44f555['attributes'][_0x9c38('0x3f')][_0x9c38('0x40')]()});}}})[_0x9c38('0x28')](function(_0x479889){if(_0x479889){logger[_0x9c38('0x20')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x479889[_0x9c38('0x16')],_0x47e7f8);return BPromise[_0x9c38('0x2a')](_0x479889);}else{logger[_0x9c38('0x20')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x47e7f8);var _0x6f1b70={'Phone':_0x47e7f8};if(_0x439a34[_0x9c38('0x41')]){if(_0x439a34[_0x9c38('0x41')]===_0x9c38('0x1c')){logger[_0x9c38('0x20')](_0x9c38('0x42'),_0x47e7f8,_0x439a34['moduleCreate']);_0x6f1b70[_0x9c38('0x43')]=_0xdf716b!==_0x9c38('0x44')?_0xdf716b:util[_0x9c38('0x45')]('Caller\x20-\x20%s',_0x47e7f8);}else if(_0x439a34[_0x9c38('0x41')]==='lead'){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x47e7f8,_0x439a34[_0x9c38('0x41')]);_0x6f1b70[_0x9c38('0x43')]=_0xdf716b!==_0x9c38('0x44')?_0xdf716b:util[_0x9c38('0x45')](_0x9c38('0x46'),_0x47e7f8);_0x6f1b70[_0x9c38('0x47')]=_0x9c38('0x48');}else if(_0x439a34[_0x9c38('0x41')]===_0x9c38('0x19')){logger[_0x9c38('0x20')](_0x9c38('0x42'),_0x47e7f8,_0x439a34[_0x9c38('0x41')]);_0x6f1b70[_0x9c38('0x2b')]=_0xdf716b!=='<unknown>'?_0xdf716b:util[_0x9c38('0x45')](_0x9c38('0x46'),_0x47e7f8);}else{return null;}}return _0xbbf8a2[_0x9c38('0x24')](_[_0x9c38('0x49')](_0x439a34['moduleCreate']))['create'](_0x6f1b70)['then'](function(_0x9826db){return BPromise[_0x9c38('0x2a')]({'id':_0x9826db['id'],'endUserType':_0x439a34['moduleCreate']});});}});}function getCustomFields(_0x323e5d,_0x41d1e6){var _0x3216e3={};if(_0x323e5d[_0x9c38('0x38')]>0x0){_[_0x9c38('0x4a')](_0x323e5d,function(_0x609c41){if(_['includes']([_0x9c38('0x4b'),'picklist'],_0x609c41[_0x9c38('0x3f')])&&_0x609c41[_0x9c38('0x4c')]){_0x3216e3[_0x609c41['idField']]=_0x609c41['content'][_0x9c38('0x4d')]();}else if(_0x609c41['type']===_0x9c38('0x4e')&&_0x609c41[_0x9c38('0x4f')]&&_0x609c41[_0x9c38('0x4c')]){_0x41d1e6[_0x609c41['variableName']]&&(_0x3216e3[_0x609c41[_0x9c38('0x4c')]]=_0x41d1e6[_0x609c41[_0x9c38('0x4f')]][_0x9c38('0x4d')]());}else if(_0x609c41[_0x9c38('0x3f')]==='customVariable'&&_0x609c41[_0x9c38('0x50')]&&_0x609c41[_0x9c38('0x50')][_0x9c38('0x51')]&&_0x609c41[_0x9c38('0x4c')]){_0x41d1e6[_0x609c41[_0x9c38('0x50')][_0x9c38('0x51')]['toLowerCase']()]&&(_0x3216e3[_0x609c41['idField']]=_0x41d1e6[_0x609c41[_0x9c38('0x50')][_0x9c38('0x51')][_0x9c38('0x40')]()]['toString']());}});}return _0x3216e3;}function getConnection(_0x47e0f8){var _0x40da18=_0x47e0f8[_0x9c38('0x52')][_0x9c38('0x53')](_0x47e0f8[_0x9c38('0x54')]);var _0x239485=new jsforce[(_0x9c38('0x55'))]({'oauth2':{'loginUrl':_0x47e0f8[_0x9c38('0x56')]||'https://login.salesforce.com','clientId':_0x47e0f8[_0x9c38('0x57')],'clientSecret':_0x47e0f8[_0x9c38('0x58')]}});return _0x239485[_0x9c38('0x59')](_0x47e0f8[_0x9c38('0x5a')],_0x40da18)['then'](function(){logger[_0x9c38('0x20')](_0x9c38('0x5b'));return _0x239485;});}exports[_0x9c38('0x5c')]=function(_0x5d756e,_0x520e0b,_0x33a6e9,_0x29f21f,_0x541b50,_0x23c7f0){var _0x2af053,_0x452acc,_0x243b78,_0x194cba;_0x23c7f0['serverUrl']=intUtil[_0x9c38('0x5d')](_0x23c7f0['serverUrl']);_0x23c7f0[_0x9c38('0x56')]=intUtil[_0x9c38('0x5d')](_0x23c7f0[_0x9c38('0x56')]);if(_0x541b50&&_0x541b50['monitor_format']){logger[_0x9c38('0x20')]('[QUEUE]','Recording\x20is\x20enabled!');_0x520e0b[_0x9c38('0x5e')]=util[_0x9c38('0x45')](_0x9c38('0x5f'),_0x23c7f0[_0x9c38('0x60')],_0x520e0b[_0x9c38('0x61')],md5(_0x520e0b[_0x9c38('0x61')]));}else{_0x520e0b['recordingURL']='';}return getConnection(_0x23c7f0)['then'](function(_0x3d25af){_0x194cba=_0x3d25af;return getUser(_0x23c7f0,_0x29f21f[_0x9c38('0x62')],_0x194cba);})[_0x9c38('0x28')](function(_0x103aae){_0x2af053=_0x103aae;return getEndUser(_0x23c7f0,_0x33a6e9,_0x520e0b[_0x9c38('0x63')],_0x520e0b[_0x9c38('0x64')],_0x194cba);})[_0x9c38('0x28')](function(_0x509f2b){_0x452acc=_0x509f2b;return getTicket(_0x23c7f0,_0x2af053,_0x452acc,_0x33a6e9,_0x520e0b,_0x33a6e9[_0x9c38('0x65')],_0x194cba,_0x9c38('0x5c'));})[_0x9c38('0x28')](function(_0x52314a){_0x243b78=_0x52314a;logger[_0x9c38('0x20')](_0x9c38('0x66'),_0x243b78['id']);logger[_0x9c38('0x20')](_0x9c38('0x67'),_0x243b78['id'],_0x29f21f[_0x9c38('0x51')],_0x23c7f0[_0x9c38('0x3f')]);switch(_0x23c7f0[_0x9c38('0x3f')]){case _0x9c38('0x68'):emit(util[_0x9c38('0x45')](_0x9c38('0x69'),_0x29f21f[_0x9c38('0x51')]),_0x9c38('0x6a'),{'recordId':_0x243b78['id']});break;case _0x9c38('0x6b'):emit(util[_0x9c38('0x45')](_0x9c38('0x69'),_0x29f21f[_0x9c38('0x51')]),_0x9c38('0x6c'),{'uri':util[_0x9c38('0x45')](_0x9c38('0x6d'),_0x194cba[_0x9c38('0x6e')],_0x243b78['id'])});break;default:logger[_0x9c38('0x6f')](_0x9c38('0x70'));}})[_0x9c38('0x71')](function(_0x1a87ed){logger[_0x9c38('0x6f')](_0x9c38('0x72'),_0x1a87ed);});};exports[_0x9c38('0x73')]=function(_0x29c762,_0x3e749d,_0x195a08,_0x27f531,_0x515a6d,_0x1331ff,_0x3dc86b){var _0x341979,_0x57ebcc,_0x41b72f,_0xe01e5e;_0x1331ff['serverUrl']=intUtil[_0x9c38('0x5d')](_0x1331ff[_0x9c38('0x60')]);_0x1331ff[_0x9c38('0x56')]=intUtil['stripTrailingSlash'](_0x1331ff[_0x9c38('0x56')]);if(_0x3dc86b&&_0x3dc86b['recordingFormat']&&_0x3dc86b[_0x9c38('0x74')]!==_0x9c38('0x75')){logger[_0x9c38('0x20')](_0x9c38('0x76'),_0x9c38('0x77'));_0x3e749d[_0x9c38('0x5e')]=util[_0x9c38('0x45')](_0x9c38('0x5f'),_0x1331ff['serverUrl'],_0x3e749d[_0x9c38('0x61')],md5(_0x3e749d['uniqueid']));}return getConnection(_0x1331ff)[_0x9c38('0x28')](function(_0x14a068){_0xe01e5e=_0x14a068;return getUser(_0x1331ff,_0x27f531[_0x9c38('0x62')],_0xe01e5e);})[_0x9c38('0x28')](function(_0x2eb7a7){_0x341979=_0x2eb7a7;return getEndUser(_0x1331ff,_0x195a08,_0x3e749d[_0x9c38('0x78')],_0x3e749d[_0x9c38('0x79')],_0xe01e5e);})['then'](function(_0x41128c){_0x57ebcc=_0x41128c;return getTicket(_0x1331ff,_0x341979,_0x57ebcc,_0x195a08,_0x3e749d,_0x195a08[_0x9c38('0x65')],_0xe01e5e,_0x9c38('0x73'));})[_0x9c38('0x28')](function(_0x33156c){_0x41b72f=_0x33156c;logger['info'](_0x9c38('0x7a'),_0x41b72f['id']);logger[_0x9c38('0x20')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x41b72f['id'],_0x27f531['name'],_0x1331ff[_0x9c38('0x3f')]);switch(_0x1331ff[_0x9c38('0x3f')]){case _0x9c38('0x68'):emit(util['format'](_0x9c38('0x69'),_0x27f531['name']),_0x9c38('0x6a'),{'recordId':_0x41b72f['id']});break;case _0x9c38('0x6b'):emit(util['format'](_0x9c38('0x69'),_0x27f531[_0x9c38('0x51')]),_0x9c38('0x6c'),{'uri':util[_0x9c38('0x45')](_0x9c38('0x6d'),_0xe01e5e[_0x9c38('0x6e')],_0x41b72f['id'])});break;default:logger[_0x9c38('0x6f')](_0x9c38('0x76'),_0x9c38('0x7b'));}})[_0x9c38('0x71')](function(_0x3c35f3){logger['error'](_0x9c38('0x76'),_0x3c35f3);});};exports[_0x9c38('0x7c')]=function(_0xbc7d91,_0x2744c6,_0x35dfa2,_0x18c4bf,_0x5eab54,_0x1bff2c){var _0x1634d0,_0x48c275,_0x27fbae,_0x352357;_0x1bff2c[_0x9c38('0x60')]=intUtil[_0x9c38('0x5d')](_0x1bff2c[_0x9c38('0x60')]);_0x1bff2c[_0x9c38('0x56')]=intUtil[_0x9c38('0x5d')](_0x1bff2c['remoteUri']);if(_0x5eab54&&_0x5eab54[_0x9c38('0x7d')]){logger[_0x9c38('0x20')]('['+_0x2744c6[_0x9c38('0x7e')][_0x9c38('0x7f')]()+']',_0x9c38('0x77'));_0x2744c6[_0x9c38('0x5e')]=util[_0x9c38('0x45')](_0x9c38('0x5f'),_0x1bff2c['serverUrl'],_0x2744c6[_0x9c38('0x61')],md5(_0x2744c6[_0x9c38('0x61')]));}else{_0x2744c6[_0x9c38('0x5e')]='';}return getConnection(_0x1bff2c)[_0x9c38('0x28')](function(_0x2652ed){_0x352357=_0x2652ed;if(!_[_0x9c38('0x80')](_0x18c4bf)){return getUser(_0x1bff2c,_0x18c4bf[_0x9c38('0x51')],_0x352357);}else{return getUser(_0x1bff2c,null,_0x352357);}})[_0x9c38('0x28')](function(_0x50a547){_0x1634d0=_0x50a547;return getEndUser(_0x1bff2c,_0x35dfa2,_0x2744c6[_0x9c38('0x63')],_0x2744c6[_0x9c38('0x64')],_0x352357);})[_0x9c38('0x28')](function(_0x437aa8){_0x48c275=_0x437aa8;return getTicket(_0x1bff2c,_0x1634d0,_0x48c275,_0x35dfa2,_0x2744c6,_0x35dfa2[_0x9c38('0x65')],_0x352357);})[_0x9c38('0x28')](function(_0x196dcf){_0x27fbae=_0x196dcf;logger['info']('['+_0x2744c6[_0x9c38('0x7e')][_0x9c38('0x7f')]()+']\x20Ticket\x20%s\x20created.',_0x27fbae['id']);logger['info']('['+_0x2744c6[_0x9c38('0x7e')][_0x9c38('0x7f')]()+']\x20Integration\x20account\x20type\x20%s.',_0x1bff2c['type']);})[_0x9c38('0x71')](function(_0x28e1fa){logger[_0x9c38('0x6f')]('['+_0x2744c6[_0x9c38('0x7e')][_0x9c38('0x7f')]()+']',_0x28e1fa);});};
\ No newline at end of file
index a5d8899..49760ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cd0=['localhost','socket.io-emitter','GET','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','message','toUpperCase','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','user','endUserNumber','true','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','toLowerCase','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','endUserId','POST','incident','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20','all','push','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','servicenow','redis','defaults'];(function(_0x55af86,_0x5c8ff6){var _0x58df3b=function(_0x2ddd94){while(--_0x2ddd94){_0x55af86['push'](_0x55af86['shift']());}};_0x58df3b(++_0x5c8ff6);}(_0x7cd0,0x1bc));var _0x07cd=function(_0x19e4ce,_0x1a8a80){_0x19e4ce=_0x19e4ce-0x0;var _0x1c9c08=_0x7cd0[_0x19e4ce];return _0x1c9c08;};'use strict';var _=require(_0x07cd('0x0'));var Promise=require(_0x07cd('0x1'));var rp=require(_0x07cd('0x2'));var util=require('util');var md5=require(_0x07cd('0x3'));var Redis=require(_0x07cd('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x07cd('0x5'));config[_0x07cd('0x6')]=_[_0x07cd('0x7')](config[_0x07cd('0x6')],{'host':_0x07cd('0x8'),'port':0x18eb});var io=require(_0x07cd('0x9'))(new Redis(config[_0x07cd('0x6')]));function getAdminUser(_0x367e17,_0xc5d113,_0x16402a,_0x3ac620,_0x56c161,_0x525378){return new Promise(function(_0x401b95,_0x4e5e52){var _0x27e5bc={'method':_0x07cd('0xa'),'uri':_0x3ac620+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x56c161+'&'+_0x525378,'auth':_0xc5d113,'json':!![]};return rp(_0x27e5bc)[_0x07cd('0xb')](function(_0x53d17b){if(_0x53d17b[_0x07cd('0xc')][_0x07cd('0xd')]>0x0){_0x16402a[_0x07cd('0xe')]=_0x53d17b['result'][0x0][_0x07cd('0xf')];}logger[_0x07cd('0x10')]('['+[_0x367e17['toUpperCase']()]+_0x07cd('0x11'),_0x16402a);_0x401b95(_0x16402a);})[_0x07cd('0x12')](function(_0x4e64d9){logger[_0x07cd('0x13')]('['+[_0x367e17['toUpperCase']()]+']',_0x4e64d9[_0x07cd('0x14')]);_0x4e5e52(_0x4e64d9[_0x07cd('0x14')]);});});}function getUser(_0x38a84b,_0x3ed4ad,_0x304830,_0x18b444,_0x835635){return function(_0x56ce4f){logger[_0x07cd('0x10')]('['+[_0x38a84b[_0x07cd('0x15')]()]+'],\x20getUser\x20input\x20crm',_0x56ce4f);return new Promise(function(_0x404613,_0x4ce4bf){if(intUtil[_0x07cd('0x16')](_0x56ce4f[_0x07cd('0x17')])){var _0x5bfc77={'method':_0x07cd('0xa'),'uri':_0x304830+_0x07cd('0x18')+_0x56ce4f[_0x07cd('0x17')]+'&'+_0x18b444+'&'+_0x835635,'auth':_0x3ed4ad,'json':!![]};logger[_0x07cd('0x10')]('['+[_0x38a84b[_0x07cd('0x15')]()]+_0x07cd('0x19'),_0x5bfc77);return rp(_0x5bfc77)[_0x07cd('0xb')](function(_0x2a9a53){logger['info']('['+[_0x38a84b[_0x07cd('0x15')]()]+_0x07cd('0x1a'),_0x2a9a53);if(_0x2a9a53[_0x07cd('0xc')][_0x07cd('0xd')]>0x0&&String(_0x2a9a53[_0x07cd('0xc')][0x0][_0x07cd('0x1b')])==='true'){_0x56ce4f['userId']=_0x2a9a53['result'][0x0]['sys_id'];}else{_0x56ce4f[_0x07cd('0x1c')]=_0x56ce4f[_0x07cd('0xe')];_0x56ce4f[_0x07cd('0x17')]=_0x56ce4f[_0x07cd('0x1d')];}logger[_0x07cd('0x10')]('['+[_0x38a84b['toUpperCase']()]+_0x07cd('0x1e'),_0x56ce4f);_0x404613(_0x56ce4f);})['catch'](function(_0x3c76b3){logger[_0x07cd('0x13')]('['+[_0x38a84b[_0x07cd('0x15')]()]+']',_0x3c76b3[_0x07cd('0x14')]);_0x4ce4bf(_0x3c76b3['message']);});}else{logger[_0x07cd('0x10')]('['+[_0x38a84b[_0x07cd('0x15')]()]+_0x07cd('0x1f'));_0x56ce4f['userId']=_0x56ce4f[_0x07cd('0xe')];_0x56ce4f[_0x07cd('0x17')]=_0x56ce4f[_0x07cd('0x1d')];_0x404613(_0x56ce4f);}});};}function createEndUser(_0x580b84,_0x266d23,_0x1f0ee7,_0x58b9e3,_0x13ebf1){logger['info']('['+[_0x580b84[_0x07cd('0x15')]()]+_0x07cd('0x20'),_0x1f0ee7);return new Promise(function(_0x1a9743,_0x240ca8){var _0x1a04ee={'method':'POST','uri':_0x58b9e3+_0x07cd('0x21')+_0x13ebf1,'body':{'user_name':_0x1f0ee7['endUserNumber'],'roles':_0x07cd('0x22'),'first_name':_0x1f0ee7[_0x07cd('0x23')],'active':_0x07cd('0x24'),'date_format':_0x07cd('0x25'),'phone':_0x1f0ee7[_0x07cd('0x23')]},'auth':_0x266d23,'json':!![]};return rp(_0x1a04ee)['then'](function(_0xb5db5e){logger[_0x07cd('0x10')]('['+[_0x580b84['toUpperCase']()]+_0x07cd('0x26'),_0xb5db5e[_0x07cd('0xc')]);_0x1f0ee7['endUserId']=_0xb5db5e[_0x07cd('0xc')][_0x07cd('0xf')];_0x1a9743(_0x1f0ee7);})[_0x07cd('0x12')](function(_0x3f4675){logger[_0x07cd('0x13')]('['+[_0x580b84[_0x07cd('0x15')]()]+']',_0x3f4675['message']);_0x240ca8(_0x3f4675[_0x07cd('0x14')]);});});}function getEndUser(_0x50e24f,_0x4697f4,_0x59e4f2,_0x57d670,_0xbaba07){return function(_0x2e52cb){logger[_0x07cd('0x10')]('['+[_0x50e24f['toUpperCase']()]+_0x07cd('0x27'),_0x2e52cb);return new Promise(function(_0x3fee61,_0x35fba0){var _0x4382fa={'method':'GET','uri':_0x59e4f2+_0x07cd('0x28')+_0x2e52cb['endUserNumber']+'&'+_0x57d670+'&'+_0xbaba07,'auth':_0x4697f4,'json':!![]};return rp(_0x4382fa)['then'](function(_0x5becec){if(_0x5becec[_0x07cd('0xc')]['length']>0x0){_0x2e52cb['endUserId']=_0x5becec[_0x07cd('0xc')][0x0]['sys_id'];logger[_0x07cd('0x10')]('['+[_0x50e24f[_0x07cd('0x15')]()]+_0x07cd('0x29'),_0x2e52cb);_0x3fee61(_0x2e52cb);}else{return createEndUser(_0x50e24f,_0x4697f4,_0x2e52cb,_0x59e4f2,_0x57d670)[_0x07cd('0xb')](function(_0x47e7e6){logger['info']('['+[_0x50e24f['toUpperCase']()]+_0x07cd('0x2a'),_0x47e7e6);_0x3fee61(_0x47e7e6);});}})['catch'](function(_0x2c207e){logger[_0x07cd('0x13')]('['+[_0x50e24f[_0x07cd('0x15')]()]+']',_0x2c207e[_0x07cd('0x14')]);_0x35fba0(_0x2c207e[_0x07cd('0x14')]);});});};}function getCustomFields(_0x467d1d,_0x1a94cf){var _0x49b8bf={};if(_0x467d1d[_0x07cd('0xd')]>0x0){_[_0x07cd('0x2b')](_0x467d1d,function(_0x1c41f1){if(_[_0x07cd('0x2c')]([_0x07cd('0x2d'),_0x07cd('0x2e')],_0x1c41f1[_0x07cd('0x2f')])&&_0x1c41f1[_0x07cd('0x30')]&&!_0x1c41f1[_0x07cd('0x31')]){_0x49b8bf[_0x1c41f1['nameField']['toLowerCase']()]=_0x1c41f1[_0x07cd('0x32')][_0x07cd('0x33')]();}else if(_[_0x07cd('0x2c')](['string','picklist'],_0x1c41f1[_0x07cd('0x2f')])&&_0x1c41f1[_0x07cd('0x34')]&&_0x1c41f1[_0x07cd('0x31')]){_0x49b8bf[_0x1c41f1[_0x07cd('0x34')][_0x07cd('0x35')]()]=_0x1c41f1[_0x07cd('0x32')][_0x07cd('0x33')]();}else if(_0x1c41f1['type']===_0x07cd('0x36')&&_0x1c41f1[_0x07cd('0x37')]&&_0x1c41f1[_0x07cd('0x34')]&&_0x1c41f1[_0x07cd('0x31')]){_0x49b8bf[_0x1c41f1['idField'][_0x07cd('0x35')]()]=_0x1a94cf[_0x1c41f1[_0x07cd('0x37')]][_0x07cd('0x33')]();}else if(_0x1c41f1['type']===_0x07cd('0x38')&&_0x1c41f1[_0x07cd('0x39')]&&_0x1c41f1[_0x07cd('0x39')][_0x07cd('0x3a')]&&_0x1c41f1[_0x07cd('0x34')]&&_0x1c41f1['customField']){_0x49b8bf[_0x1c41f1['idField'][_0x07cd('0x35')]()]=_0x1a94cf[_0x1c41f1[_0x07cd('0x39')][_0x07cd('0x3a')][_0x07cd('0x35')]()][_0x07cd('0x33')]();}});}return _0x49b8bf;}function getTicket(_0x17fc6b,_0x290a6d,_0x3064f2,_0x492c22,_0x3b5fe6,_0x4cf3b0){return function(_0x183a5a){logger['info']('['+[_0x17fc6b[_0x07cd('0x15')]()]+_0x07cd('0x3b'),_0x183a5a);return new Promise(function(_0x2f41aa,_0x5c61f7){var _0x2ba7b2=_0x17fc6b[_0x07cd('0x35')]()===_0x07cd('0x3c')?_0x183a5a['userId']:_0x183a5a[_0x07cd('0x3d')];var _0x103218={'method':_0x07cd('0x3e'),'uri':_0x3064f2+_0x07cd('0x3f')+'?'+_0x4cf3b0,'body':Object[_0x07cd('0x40')]({},{'active':_0x07cd('0x24'),'caller_id':_0x2ba7b2,'assigned_to':_0x183a5a[_0x07cd('0x1c')],'short_description':intUtil[_0x07cd('0x41')](_0x492c22[_0x07cd('0x42')],_0x3b5fe6,'\x20'),'description':intUtil[_0x07cd('0x41')](_0x492c22[_0x07cd('0x43')],_0x3b5fe6,'\x0a')},getCustomFields(_0x492c22['Fields'],_0x3b5fe6)),'auth':_0x290a6d,'json':!![]};return rp(_0x103218)[_0x07cd('0xb')](function(_0x4a6fae){logger[_0x07cd('0x10')]('['+[_0x17fc6b[_0x07cd('0x15')]()]+_0x07cd('0x44'),_0x4a6fae[_0x07cd('0xc')]);_0x183a5a[_0x07cd('0x45')]=_0x4a6fae[_0x07cd('0xc')][_0x07cd('0xf')];_0x183a5a[_0x07cd('0x46')]=_0x4a6fae[_0x07cd('0xc')][_0x07cd('0x47')];logger[_0x07cd('0x10')]('['+[_0x17fc6b[_0x07cd('0x15')]()]+_0x07cd('0x48'),_0x183a5a);_0x2f41aa(_0x183a5a);})['catch'](function(_0x4b9ef9){logger[_0x07cd('0x13')]('['+[_0x17fc6b[_0x07cd('0x15')]()]+']',_0x4b9ef9[_0x07cd('0x14')]);_0x5c61f7(_0x4b9ef9[_0x07cd('0x14')]);});});};}function createRemoteTag(_0x543678,_0x15df4a,_0x568e0a,_0x4b65b9){return new Promise(function(_0x1f8b35,_0x28632a){var _0x3dfba8={'method':_0x07cd('0x3e'),'uri':_0x568e0a+_0x07cd('0x49')+'?'+_0x4b65b9,'body':{'short_description':_0x543678,'global':!![],'active':!![],'name':_0x543678},'auth':_0x15df4a,'json':!![]};return rp(_0x3dfba8)[_0x07cd('0xb')](function(_0x5736d4){var _0x2f92d4=_0x5736d4[_0x07cd('0xc')]['sys_id'];_0x1f8b35(_0x2f92d4);});});}function getRemoteTag(_0x57e525,_0xa838d,_0x577ca2,_0x1c192f,_0x349ea5){return new Promise(function(_0x2d738c,_0x35b714){var _0x2d36eb={'method':_0x07cd('0xa'),'uri':_0x577ca2+_0x07cd('0x49')+_0x07cd('0x4a')+_0x57e525+'&'+_0x1c192f,'auth':_0xa838d,'json':!![]};return rp(_0x2d36eb)[_0x07cd('0xb')](function(_0x3e707e){if(_0x3e707e[_0x07cd('0xc')]['length']>0x0){var _0x114607=_0x3e707e['result'][0x0][_0x07cd('0xf')];_0x2d738c(_0x114607);}else{return createRemoteTag(_0x57e525,_0xa838d,_0x577ca2,_0x1c192f)['then'](function(_0x23b433){_0x2d738c(_0x23b433);});}});});}function assignTagToIncident(_0x40a591,_0x292c78,_0x3e2423,_0x24ada9,_0x485b38){return new Promise(function(_0x239b20,_0x395dcf){var _0x1ed985={'method':_0x07cd('0x3e'),'uri':_0x3e2423+_0x07cd('0x4b')+'?'+_0x485b38,'body':{'label':_0x40a591,'table':_0x07cd('0x3f'),'id_type':'Incident','table_key':_0x24ada9[_0x07cd('0x45')],'title':_0x07cd('0x4c')+_0x24ada9[_0x07cd('0x46')],'id_display':_0x24ada9[_0x07cd('0x46')]},'auth':_0x292c78,'json':!![]};return rp(_0x1ed985)[_0x07cd('0xb')](function(_0x31f830){_0x239b20();})[_0x07cd('0x12')](function(){_0x239b20();});});}function manageTags(_0x24f0f4,_0x18fc14,_0x4596f6,_0x271629,_0x48f702,_0x3dbcc9,_0xf07142){return new Promise(function(_0x25f988,_0x26e7d3){var _0x351a84=[];_0x18fc14[_0x07cd('0x2b')](function(_0x48e716){_0x351a84['push'](getRemoteTag(_0x48e716,_0x4596f6,_0x271629,_0x3dbcc9,_0xf07142));});return Promise[_0x07cd('0x4d')](_0x351a84)['then'](function(_0x351794){if(_0x351794['length']){logger[_0x07cd('0x10')]('['+[_0x24f0f4[_0x07cd('0x15')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x351794);var _0xb5697=[];_0x351794[_0x07cd('0x2b')](function(_0x50a0d2){_0xb5697[_0x07cd('0x4e')](assignTagToIncident(_0x50a0d2,_0x4596f6,_0x271629,_0x48f702,_0x3dbcc9));});return Promise[_0x07cd('0x4d')](_0xb5697)['then'](function(){_0x25f988();})[_0x07cd('0x12')](function(){_0x25f988();});}else{_0x25f988();}});});}function getTags(_0x4c13ee,_0x564441,_0x68747a,_0x4fc997,_0x8f6b76,_0x4d5b65){return function(_0x1550f0){return new Promise(function(_0x498d98,_0x841a42){var _0x3a5fcd=[];var _0x163f52=_0x4fc997[_0x07cd('0x4f')];if(_0x163f52&&_0x163f52['length']>0x0){_0x3a5fcd=_['map'](_0x163f52,_0x07cd('0x3a'));}if(_0x3a5fcd[_0x07cd('0xd')]>0x0){return manageTags(_0x4c13ee,_0x3a5fcd,_0x564441,_0x68747a,_0x1550f0,_0x8f6b76,_0x4d5b65)[_0x07cd('0xb')](function(){_0x498d98(_0x1550f0);});}else{_0x498d98(_0x1550f0);}});};}function emit(_0x2501d7,_0x1cf0a8,_0x45c286){var _0x1e5771=_0x07cd('0x50')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x07cd('0x51')+_0x07cd('0x52');var _0x21677f={'uri':_0x2501d7+_0x07cd('0x53')+_0x45c286+_0x1e5771};io['to'](util[_0x07cd('0x54')](_0x07cd('0x55'),_0x1cf0a8))[_0x07cd('0x56')](_0x07cd('0x57'),_0x21677f);}exports['cs']=function(_0x28e015,_0x142cdf,_0x1fb884,_0x3edee4,_0x2516f,_0x1de9ff,_0x13f6da,_0x2e7822){var _0x5209a6={};var _0x5bfc15={'user':_0x1de9ff[_0x07cd('0x58')],'pass':_0x1de9ff['password']};var _0x437ae3=_0x07cd('0x59');var _0x1f31ab=_0x07cd('0x5a');_0x1de9ff[_0x07cd('0x5b')]=intUtil[_0x07cd('0x5c')](_0x1de9ff[_0x07cd('0x5b')]);_0x1de9ff['serverUrl']=intUtil[_0x07cd('0x5c')](_0x1de9ff[_0x07cd('0x5d')]);var _0x3be0b0=util['format'](_0x07cd('0x5e'),_0x1de9ff[_0x07cd('0x5b')]);_0x5209a6[_0x07cd('0x17')]=!_[_0x07cd('0x5f')](_0x3edee4)?_0x3edee4[_0x07cd('0x60')]:null;_0x5209a6[_0x07cd('0x1d')]=_0x1de9ff['email'];_0x5209a6[_0x07cd('0x23')]=_0x2e7822['toLowerCase']()===_0x07cd('0x3c')?_0x142cdf['destcalleridnum']:_0x142cdf[_0x07cd('0x61')];_0x5209a6[_0x07cd('0x62')]=_0x2e7822===_0x07cd('0x63')||_0x2e7822===_0x07cd('0x64')?_0x07cd('0x63'):'outbound';var _0x10f719=util[_0x07cd('0x54')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1de9ff[_0x07cd('0x5d')],_0x142cdf[_0x07cd('0x65')],md5(_0x142cdf[_0x07cd('0x65')]));if(_0x2516f&&_0x2516f[_0x07cd('0x66')]){logger['info'](_0x07cd('0x67'),_0x07cd('0x68'));_0x142cdf[_0x07cd('0x69')]=_0x10f719;}else if(_0x13f6da&&_0x13f6da[_0x07cd('0x6a')]&&_0x13f6da[_0x07cd('0x6a')]!=='none'){logger[_0x07cd('0x10')](_0x07cd('0x6b'),_0x07cd('0x68'));_0x142cdf['recordingURL']=_0x10f719;}else{_0x142cdf['recordingURL']='';}return getAdminUser(_0x2e7822,_0x5bfc15,_0x5209a6,_0x3be0b0,_0x1f31ab,_0x437ae3)[_0x07cd('0xb')](getUser(_0x2e7822,_0x5bfc15,_0x3be0b0,_0x1f31ab,_0x437ae3))[_0x07cd('0xb')](getEndUser(_0x2e7822,_0x5bfc15,_0x3be0b0,_0x1f31ab,_0x437ae3))[_0x07cd('0xb')](getTicket(_0x2e7822,_0x5bfc15,_0x3be0b0,_0x1fb884,_0x142cdf,_0x1f31ab))[_0x07cd('0xb')](function(_0x224a07){logger['info'](util['format'](_0x07cd('0x6c'),_0x224a07[_0x07cd('0x45')]));logger['info'](util['format'](_0x07cd('0x6d'),_0x2e7822));if(_0x2e7822!==_0x07cd('0x64')){logger[_0x07cd('0x10')]('['+[_0x2e7822['toUpperCase']()]+']',_0x07cd('0x6e'));emit(_0x1de9ff['remoteUri'],_0x3edee4[_0x07cd('0x3a')],_0x224a07[_0x07cd('0x45')]);}})[_0x07cd('0x12')](function(_0x5b9e2d){logger[_0x07cd('0x13')]('['+[_0x2e7822[_0x07cd('0x15')]()]+_0x07cd('0x6f'),util[_0x07cd('0x70')](_0x5b9e2d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xc7b0=['servicenow','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','],\x20getAdminUser\x20crm','catch','error','message','toUpperCase','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','System','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','picklist','type','nameField','customField','content','toString','string','idField','toLowerCase','variableName','customVariable','Variable','name','incident','assign','true','getString','Subjects','Descriptions','ticketId','ticketNumber',']\x20getTicket\x20crm','label','label_entry','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','outbound','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','bluebird','util','md5','./util','../../../../config/logger'];(function(_0x46e510,_0x5897ad){var _0x5bf74c=function(_0xdb2295){while(--_0xdb2295){_0x46e510['push'](_0x46e510['shift']());}};_0x5bf74c(++_0x5897ad);}(_0xc7b0,0x66));var _0x0c7b=function(_0x2f3ed9,_0xdc39a0){_0x2f3ed9=_0x2f3ed9-0x0;var _0xb374d1=_0xc7b0[_0x2f3ed9];return _0xb374d1;};'use strict';var _=require('lodash');var Promise=require(_0x0c7b('0x0'));var rp=require('request-promise');var util=require(_0x0c7b('0x1'));var md5=require(_0x0c7b('0x2'));var Redis=require('ioredis');var intUtil=require(_0x0c7b('0x3'));var config=require('../../../../config/environment');var logger=require(_0x0c7b('0x4'))(_0x0c7b('0x5'));config[_0x0c7b('0x6')]=_['defaults'](config[_0x0c7b('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x0c7b('0x7'))(new Redis(config['redis']));function getAdminUser(_0x53a0a1,_0x2e2020,_0x2c6c9c,_0x25397c,_0xa0557c,_0x4d2d1c){return new Promise(function(_0x5d3fec,_0x375534){var _0x378767={'method':_0x0c7b('0x8'),'uri':_0x25397c+_0x0c7b('0x9')+'&'+_0xa0557c+'&'+_0x4d2d1c,'auth':_0x2e2020,'json':!![]};return rp(_0x378767)[_0x0c7b('0xa')](function(_0x28cf28){if(_0x28cf28[_0x0c7b('0xb')][_0x0c7b('0xc')]>0x0){_0x2c6c9c['adminId']=_0x28cf28[_0x0c7b('0xb')][0x0][_0x0c7b('0xd')];}logger[_0x0c7b('0xe')]('['+[_0x53a0a1['toUpperCase']()]+_0x0c7b('0xf'),_0x2c6c9c);_0x5d3fec(_0x2c6c9c);})[_0x0c7b('0x10')](function(_0x56cdfd){logger[_0x0c7b('0x11')]('['+[_0x53a0a1['toUpperCase']()]+']',_0x56cdfd[_0x0c7b('0x12')]);_0x375534(_0x56cdfd[_0x0c7b('0x12')]);});});}function getUser(_0x40eedf,_0x592f12,_0x581064,_0x207ff,_0xc295c){return function(_0x1cd6c2){logger['info']('['+[_0x40eedf[_0x0c7b('0x13')]()]+'],\x20getUser\x20input\x20crm',_0x1cd6c2);return new Promise(function(_0xd7757e,_0x51107e){if(intUtil[_0x0c7b('0x14')](_0x1cd6c2[_0x0c7b('0x15')])){var _0x4fd1e3={'method':'GET','uri':_0x581064+_0x0c7b('0x16')+_0x1cd6c2[_0x0c7b('0x15')]+'&'+_0x207ff+'&'+_0xc295c,'auth':_0x592f12,'json':!![]};logger[_0x0c7b('0xe')]('['+[_0x40eedf[_0x0c7b('0x13')]()]+_0x0c7b('0x17'),_0x4fd1e3);return rp(_0x4fd1e3)[_0x0c7b('0xa')](function(_0x74d9f8){logger[_0x0c7b('0xe')]('['+[_0x40eedf[_0x0c7b('0x13')]()]+_0x0c7b('0x18'),_0x74d9f8);if(_0x74d9f8[_0x0c7b('0xb')][_0x0c7b('0xc')]>0x0&&String(_0x74d9f8[_0x0c7b('0xb')][0x0][_0x0c7b('0x19')])==='true'){_0x1cd6c2[_0x0c7b('0x1a')]=_0x74d9f8[_0x0c7b('0xb')][0x0][_0x0c7b('0xd')];}else{_0x1cd6c2['userId']=_0x1cd6c2[_0x0c7b('0x1b')];_0x1cd6c2[_0x0c7b('0x15')]=_0x1cd6c2[_0x0c7b('0x1c')];}logger[_0x0c7b('0xe')]('['+[_0x40eedf[_0x0c7b('0x13')]()]+_0x0c7b('0x1d'),_0x1cd6c2);_0xd7757e(_0x1cd6c2);})[_0x0c7b('0x10')](function(_0x3dbb13){logger['error']('['+[_0x40eedf['toUpperCase']()]+']',_0x3dbb13[_0x0c7b('0x12')]);_0x51107e(_0x3dbb13[_0x0c7b('0x12')]);});}else{logger[_0x0c7b('0xe')]('['+[_0x40eedf[_0x0c7b('0x13')]()]+_0x0c7b('0x1e'));_0x1cd6c2['userId']=_0x1cd6c2['adminId'];_0x1cd6c2[_0x0c7b('0x15')]=_0x1cd6c2['adminEmail'];_0xd7757e(_0x1cd6c2);}});};}function createEndUser(_0x5bf52b,_0x3541e7,_0x56c8e7,_0x1e84b6,_0x22347f){logger[_0x0c7b('0xe')]('['+[_0x5bf52b[_0x0c7b('0x13')]()]+_0x0c7b('0x1f'),_0x56c8e7);return new Promise(function(_0x417126,_0x5392ec){var _0x4cee09={'method':_0x0c7b('0x20'),'uri':_0x1e84b6+_0x0c7b('0x21')+_0x22347f,'body':{'user_name':_0x56c8e7['endUserNumber'],'roles':_0x0c7b('0x22'),'first_name':_0x56c8e7['endUserNumber'],'active':'true','date_format':_0x0c7b('0x23'),'phone':_0x56c8e7[_0x0c7b('0x24')]},'auth':_0x3541e7,'json':!![]};return rp(_0x4cee09)['then'](function(_0x461d7c){logger[_0x0c7b('0xe')]('['+[_0x5bf52b[_0x0c7b('0x13')]()]+_0x0c7b('0x25'),_0x461d7c[_0x0c7b('0xb')]);_0x56c8e7[_0x0c7b('0x26')]=_0x461d7c[_0x0c7b('0xb')]['sys_id'];_0x417126(_0x56c8e7);})['catch'](function(_0x126fc7){logger[_0x0c7b('0x11')]('['+[_0x5bf52b[_0x0c7b('0x13')]()]+']',_0x126fc7[_0x0c7b('0x12')]);_0x5392ec(_0x126fc7[_0x0c7b('0x12')]);});});}function getEndUser(_0x5847c8,_0x41b378,_0x1e532d,_0x5292fe,_0x4b57ed){return function(_0x1c0c86){logger[_0x0c7b('0xe')]('['+[_0x5847c8[_0x0c7b('0x13')]()]+_0x0c7b('0x27'),_0x1c0c86);return new Promise(function(_0x2d77a4,_0x1ff7fe){var _0x23e9a4={'method':_0x0c7b('0x8'),'uri':_0x1e532d+_0x0c7b('0x28')+_0x1c0c86[_0x0c7b('0x24')]+'&'+_0x5292fe+'&'+_0x4b57ed,'auth':_0x41b378,'json':!![]};return rp(_0x23e9a4)['then'](function(_0x30c3aa){if(_0x30c3aa[_0x0c7b('0xb')][_0x0c7b('0xc')]>0x0){_0x1c0c86[_0x0c7b('0x26')]=_0x30c3aa[_0x0c7b('0xb')][0x0][_0x0c7b('0xd')];logger[_0x0c7b('0xe')]('['+[_0x5847c8[_0x0c7b('0x13')]()]+_0x0c7b('0x29'),_0x1c0c86);_0x2d77a4(_0x1c0c86);}else{return createEndUser(_0x5847c8,_0x41b378,_0x1c0c86,_0x1e532d,_0x5292fe)[_0x0c7b('0xa')](function(_0x5e93e4){logger['info']('['+[_0x5847c8[_0x0c7b('0x13')]()]+_0x0c7b('0x2a'),_0x5e93e4);_0x2d77a4(_0x5e93e4);});}})[_0x0c7b('0x10')](function(_0xa72495){logger['error']('['+[_0x5847c8[_0x0c7b('0x13')]()]+']',_0xa72495[_0x0c7b('0x12')]);_0x1ff7fe(_0xa72495[_0x0c7b('0x12')]);});});};}function getCustomFields(_0x50c9c4,_0x384adb){var _0x106167={};if(_0x50c9c4['length']>0x0){_[_0x0c7b('0x2b')](_0x50c9c4,function(_0x5aa7e1){if(_[_0x0c7b('0x2c')](['string',_0x0c7b('0x2d')],_0x5aa7e1[_0x0c7b('0x2e')])&&_0x5aa7e1[_0x0c7b('0x2f')]&&!_0x5aa7e1[_0x0c7b('0x30')]){_0x106167[_0x5aa7e1[_0x0c7b('0x2f')]['toLowerCase']()]=_0x5aa7e1[_0x0c7b('0x31')][_0x0c7b('0x32')]();}else if(_[_0x0c7b('0x2c')]([_0x0c7b('0x33'),_0x0c7b('0x2d')],_0x5aa7e1[_0x0c7b('0x2e')])&&_0x5aa7e1[_0x0c7b('0x34')]&&_0x5aa7e1[_0x0c7b('0x30')]){_0x106167[_0x5aa7e1[_0x0c7b('0x34')][_0x0c7b('0x35')]()]=_0x5aa7e1[_0x0c7b('0x31')][_0x0c7b('0x32')]();}else if(_0x5aa7e1[_0x0c7b('0x2e')]==='variable'&&_0x5aa7e1[_0x0c7b('0x36')]&&_0x5aa7e1[_0x0c7b('0x34')]&&_0x5aa7e1[_0x0c7b('0x30')]){_0x106167[_0x5aa7e1['idField'][_0x0c7b('0x35')]()]=_0x384adb[_0x5aa7e1[_0x0c7b('0x36')]][_0x0c7b('0x32')]();}else if(_0x5aa7e1['type']===_0x0c7b('0x37')&&_0x5aa7e1['Variable']&&_0x5aa7e1[_0x0c7b('0x38')][_0x0c7b('0x39')]&&_0x5aa7e1[_0x0c7b('0x34')]&&_0x5aa7e1['customField']){_0x106167[_0x5aa7e1[_0x0c7b('0x34')]['toLowerCase']()]=_0x384adb[_0x5aa7e1[_0x0c7b('0x38')]['name'][_0x0c7b('0x35')]()][_0x0c7b('0x32')]();}});}return _0x106167;}function getTicket(_0x2940f9,_0x3bc748,_0x52d70e,_0x1afdf4,_0x300166,_0x3577f9){return function(_0x1fa6ba){logger[_0x0c7b('0xe')]('['+[_0x2940f9[_0x0c7b('0x13')]()]+']\x20getTicket\x20input\x20crm',_0x1fa6ba);return new Promise(function(_0x206dad,_0x50ac0c){var _0x3b4e10=_0x2940f9[_0x0c7b('0x35')]()==='outbound'?_0x1fa6ba[_0x0c7b('0x1a')]:_0x1fa6ba[_0x0c7b('0x26')];var _0x282497={'method':_0x0c7b('0x20'),'uri':_0x52d70e+_0x0c7b('0x3a')+'?'+_0x3577f9,'body':Object[_0x0c7b('0x3b')]({},{'active':_0x0c7b('0x3c'),'caller_id':_0x3b4e10,'assigned_to':_0x1fa6ba[_0x0c7b('0x1a')],'short_description':intUtil[_0x0c7b('0x3d')](_0x1afdf4[_0x0c7b('0x3e')],_0x300166,'\x20'),'description':intUtil[_0x0c7b('0x3d')](_0x1afdf4[_0x0c7b('0x3f')],_0x300166,'\x0a')},getCustomFields(_0x1afdf4['Fields'],_0x300166)),'auth':_0x3bc748,'json':!![]};return rp(_0x282497)[_0x0c7b('0xa')](function(_0x32114b){logger[_0x0c7b('0xe')]('['+[_0x2940f9['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x32114b['result']);_0x1fa6ba[_0x0c7b('0x40')]=_0x32114b[_0x0c7b('0xb')][_0x0c7b('0xd')];_0x1fa6ba[_0x0c7b('0x41')]=_0x32114b['result']['number'];logger['info']('['+[_0x2940f9[_0x0c7b('0x13')]()]+_0x0c7b('0x42'),_0x1fa6ba);_0x206dad(_0x1fa6ba);})[_0x0c7b('0x10')](function(_0x2f9db7){logger[_0x0c7b('0x11')]('['+[_0x2940f9[_0x0c7b('0x13')]()]+']',_0x2f9db7[_0x0c7b('0x12')]);_0x50ac0c(_0x2f9db7[_0x0c7b('0x12')]);});});};}function createRemoteTag(_0x5c2292,_0x2586cc,_0x514511,_0x2ee5b1){return new Promise(function(_0x586235,_0x3b50ea){var _0x4cce86={'method':_0x0c7b('0x20'),'uri':_0x514511+_0x0c7b('0x43')+'?'+_0x2ee5b1,'body':{'short_description':_0x5c2292,'global':!![],'active':!![],'name':_0x5c2292},'auth':_0x2586cc,'json':!![]};return rp(_0x4cce86)[_0x0c7b('0xa')](function(_0x2416c2){var _0x3779ac=_0x2416c2[_0x0c7b('0xb')][_0x0c7b('0xd')];_0x586235(_0x3779ac);});});}function getRemoteTag(_0x315813,_0x13d13b,_0x3fb41d,_0x2660c0,_0x4cd185){return new Promise(function(_0x11b5d5,_0x4ac94c){var _0x2b6d4a={'method':'GET','uri':_0x3fb41d+_0x0c7b('0x43')+'?sysparm_query=name%3D'+_0x315813+'&'+_0x2660c0,'auth':_0x13d13b,'json':!![]};return rp(_0x2b6d4a)[_0x0c7b('0xa')](function(_0x47d1b7){if(_0x47d1b7[_0x0c7b('0xb')][_0x0c7b('0xc')]>0x0){var _0x4e45f8=_0x47d1b7['result'][0x0]['sys_id'];_0x11b5d5(_0x4e45f8);}else{return createRemoteTag(_0x315813,_0x13d13b,_0x3fb41d,_0x2660c0)[_0x0c7b('0xa')](function(_0x41e962){_0x11b5d5(_0x41e962);});}});});}function assignTagToIncident(_0x41cc9c,_0x45979b,_0x4b1662,_0x5bf832,_0x236a59){return new Promise(function(_0x250045,_0x6d64a){var _0x27d3e7={'method':_0x0c7b('0x20'),'uri':_0x4b1662+_0x0c7b('0x44')+'?'+_0x236a59,'body':{'label':_0x41cc9c,'table':_0x0c7b('0x3a'),'id_type':_0x0c7b('0x45'),'table_key':_0x5bf832[_0x0c7b('0x40')],'title':_0x0c7b('0x46')+_0x5bf832['ticketNumber'],'id_display':_0x5bf832[_0x0c7b('0x41')]},'auth':_0x45979b,'json':!![]};return rp(_0x27d3e7)[_0x0c7b('0xa')](function(_0x3ef67f){_0x250045();})[_0x0c7b('0x10')](function(){_0x250045();});});}function manageTags(_0x32f876,_0x5bf118,_0x44f7e5,_0x4af0bf,_0x5c8b03,_0x74c848,_0x32e48e){return new Promise(function(_0x5e68a6,_0x16114e){var _0x46f91c=[];_0x5bf118[_0x0c7b('0x2b')](function(_0x274be6){_0x46f91c[_0x0c7b('0x47')](getRemoteTag(_0x274be6,_0x44f7e5,_0x4af0bf,_0x74c848,_0x32e48e));});return Promise[_0x0c7b('0x48')](_0x46f91c)[_0x0c7b('0xa')](function(_0x101bc8){if(_0x101bc8[_0x0c7b('0xc')]){logger[_0x0c7b('0xe')]('['+[_0x32f876[_0x0c7b('0x13')]()]+_0x0c7b('0x49'),_0x101bc8);var _0x1b5d8d=[];_0x101bc8[_0x0c7b('0x2b')](function(_0x2b8dde){_0x1b5d8d['push'](assignTagToIncident(_0x2b8dde,_0x44f7e5,_0x4af0bf,_0x5c8b03,_0x74c848));});return Promise['all'](_0x1b5d8d)[_0x0c7b('0xa')](function(){_0x5e68a6();})['catch'](function(){_0x5e68a6();});}else{_0x5e68a6();}});});}function getTags(_0x196b23,_0x232221,_0x2aed9b,_0x2937c8,_0x2e7dbb,_0x7f46b3){return function(_0x395f39){return new Promise(function(_0xb726c4,_0x526a20){var _0x4282dc=[];var _0x2fc6ec=_0x2937c8[_0x0c7b('0x4a')];if(_0x2fc6ec&&_0x2fc6ec[_0x0c7b('0xc')]>0x0){_0x4282dc=_['map'](_0x2fc6ec,'name');}if(_0x4282dc[_0x0c7b('0xc')]>0x0){return manageTags(_0x196b23,_0x4282dc,_0x232221,_0x2aed9b,_0x395f39,_0x2e7dbb,_0x7f46b3)[_0x0c7b('0xa')](function(){_0xb726c4(_0x395f39);});}else{_0xb726c4(_0x395f39);}});};}function emit(_0x471f71,_0x40fa19,_0x23d06d){var _0xef69e4=_0x0c7b('0x4b')+_0x0c7b('0x4c')+_0x0c7b('0x4d')+_0x0c7b('0x4e');var _0x54ad41={'uri':_0x471f71+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x23d06d+_0xef69e4};io['to'](util[_0x0c7b('0x4f')]('user:%s',_0x40fa19))[_0x0c7b('0x50')](_0x0c7b('0x51'),_0x54ad41);}exports['cs']=function(_0x3c6cc2,_0x3ce462,_0x2975eb,_0x163a8f,_0x3ead55,_0x13d0dc,_0x3a143c,_0x22bc3b){var _0x2175a0={};var _0x3b79e2={'user':_0x13d0dc[_0x0c7b('0x52')],'pass':_0x13d0dc[_0x0c7b('0x53')]};var _0x2fdad7=_0x0c7b('0x54');var _0x4f27c6=_0x0c7b('0x55');_0x13d0dc[_0x0c7b('0x56')]=intUtil[_0x0c7b('0x57')](_0x13d0dc[_0x0c7b('0x56')]);_0x13d0dc[_0x0c7b('0x58')]=intUtil[_0x0c7b('0x57')](_0x13d0dc['serverUrl']);var _0x5bc1cf=util[_0x0c7b('0x4f')](_0x0c7b('0x59'),_0x13d0dc['remoteUri']);_0x2175a0[_0x0c7b('0x15')]=!_['isNil'](_0x163a8f)?_0x163a8f['email']:null;_0x2175a0['adminEmail']=_0x13d0dc[_0x0c7b('0x5a')];_0x2175a0[_0x0c7b('0x24')]=_0x22bc3b[_0x0c7b('0x35')]()===_0x0c7b('0x5b')?_0x3ce462['destcalleridnum']:_0x3ce462['calleridnum'];_0x2175a0['callDirection']=_0x22bc3b===_0x0c7b('0x5c')||_0x22bc3b==='unmanaged'?'queue':_0x0c7b('0x5b');var _0x4de0b6=util[_0x0c7b('0x4f')](_0x0c7b('0x5d'),_0x13d0dc[_0x0c7b('0x58')],_0x3ce462[_0x0c7b('0x5e')],md5(_0x3ce462['uniqueid']));if(_0x3ead55&&_0x3ead55[_0x0c7b('0x5f')]){logger[_0x0c7b('0xe')](_0x0c7b('0x60'),_0x0c7b('0x61'));_0x3ce462[_0x0c7b('0x62')]=_0x4de0b6;}else if(_0x3a143c&&_0x3a143c[_0x0c7b('0x63')]&&_0x3a143c[_0x0c7b('0x63')]!==_0x0c7b('0x64')){logger[_0x0c7b('0xe')](_0x0c7b('0x65'),_0x0c7b('0x61'));_0x3ce462[_0x0c7b('0x62')]=_0x4de0b6;}else{_0x3ce462['recordingURL']='';}return getAdminUser(_0x22bc3b,_0x3b79e2,_0x2175a0,_0x5bc1cf,_0x4f27c6,_0x2fdad7)['then'](getUser(_0x22bc3b,_0x3b79e2,_0x5bc1cf,_0x4f27c6,_0x2fdad7))[_0x0c7b('0xa')](getEndUser(_0x22bc3b,_0x3b79e2,_0x5bc1cf,_0x4f27c6,_0x2fdad7))[_0x0c7b('0xa')](getTicket(_0x22bc3b,_0x3b79e2,_0x5bc1cf,_0x2975eb,_0x3ce462,_0x4f27c6))['then'](function(_0x1d2dee){logger[_0x0c7b('0xe')](util['format'](_0x0c7b('0x66'),_0x1d2dee[_0x0c7b('0x40')]));logger['info'](util['format'](_0x0c7b('0x67'),_0x22bc3b));if(_0x22bc3b!==_0x0c7b('0x68')){logger[_0x0c7b('0xe')]('['+[_0x22bc3b[_0x0c7b('0x13')]()]+']',_0x0c7b('0x69'));emit(_0x13d0dc[_0x0c7b('0x56')],_0x163a8f[_0x0c7b('0x39')],_0x1d2dee[_0x0c7b('0x40')]);}})['catch'](function(_0x5478ef){logger[_0x0c7b('0x11')]('['+[_0x22bc3b['toUpperCase']()]+_0x0c7b('0x6a'),util['inspect'](_0x5478ef,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index e8a613e..45479cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac22=['Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','monitor_format','lastevent','Inbound','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','Descriptions','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','length','forEach','variableName','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','isNil','get_entry_list','Employees','user_name','then','find','entry_list','value','info','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','first_name','<unknown>','Caller\x20-\x20%s','[HTTP]','merge','map','string','nameField','customField','toLowerCase','content','idField','custom_fields','push','type','customVariable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','queue','remoteUri','stripTrailingSlash','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridnum','Outbound','version','charAt'];(function(_0x349b00,_0x5b58c3){var _0x45744f=function(_0x3caf27){while(--_0x3caf27){_0x349b00['push'](_0x349b00['shift']());}};_0x45744f(++_0x5b58c3);}(_0xac22,0xf0));var _0x2ac2=function(_0xe111ba,_0x400a05){_0xe111ba=_0xe111ba-0x0;var _0x2894f3=_0xac22[_0xe111ba];return _0x2894f3;};'use strict';var _=require(_0x2ac2('0x0'));var rp=require(_0x2ac2('0x1'));var BPromise=require(_0x2ac2('0x2'));var md5=require(_0x2ac2('0x3'));var util=require(_0x2ac2('0x4'));var Redis=require(_0x2ac2('0x5'));var intUtil=require(_0x2ac2('0x6'));var config=require(_0x2ac2('0x7'));var logger=require('../../../../config/logger')(_0x2ac2('0x8'));config[_0x2ac2('0x9')]=_[_0x2ac2('0xa')](config[_0x2ac2('0x9')],{'host':_0x2ac2('0xb'),'port':0x18eb});var io=require(_0x2ac2('0xc'))(new Redis(config[_0x2ac2('0x9')]));var def={'method':_0x2ac2('0xd'),'json':!![]};function emit(_0x4b9b99,_0x1a0d60,_0x1e52b4){io['to'](_0x4b9b99)[_0x2ac2('0xe')](_0x1a0d60,_0x1e52b4);}function getTicket(_0x467a92,_0xc55201,_0x28ab76,_0x3eca88,_0x27f73d,_0xd360e5,_0x2a33cf,_0x5698d1){logger['info'](_0x2ac2('0xf'));var _0x231fd1=new Date();var _0x147a61=[{'name':_0x2ac2('0x10'),'value':intUtil[_0x2ac2('0x11')](_0x3eca88[_0x2ac2('0x12')],_0x27f73d,'\x20')},{'name':'assigned_user_id','value':_0xc55201['id']},{'name':_0x2ac2('0x13'),'value':_0xc55201['id']},{'name':_0x2ac2('0x14'),'value':intUtil[_0x2ac2('0x11')](_0x3eca88[_0x2ac2('0x15')],_0x27f73d,'\x0a')},{'name':'date_start','value':_0x231fd1[_0x2ac2('0x16')]()[_0x2ac2('0x17')](0x0,0x13)[_0x2ac2('0x18')]('T','\x20')},{'name':_0x2ac2('0x19'),'value':'0'},{'name':_0x2ac2('0x1a'),'value':'15'},{'name':_0x2ac2('0x1b'),'value':_0x28ab76['id']},{'name':_0x2ac2('0x1c'),'value':_0x2ac2('0x1d')},{'name':'parent_name','value':_0x28ab76[_0x2ac2('0x10')]},{'name':'direction','value':_0x5698d1}];if(_0xd360e5[_0x2ac2('0x1e')]){_[_0x2ac2('0x1f')](_0xd360e5,function(_0x58190a){if(_0x27f73d[_0x58190a['variableName']]){_0x147a61['push']({'name':_0x58190a['idField'],'value':_0x27f73d[_0x58190a[_0x2ac2('0x20')]]});}});}return request({'form':{'method':_0x2ac2('0x21'),'input_type':_0x2ac2('0x22'),'response_type':'JSON','rest_data':JSON[_0x2ac2('0x23')]({'session':_0x2a33cf['id'],'module_name':_0x2ac2('0x24'),'name_value_list':_0x147a61})}});}function getAuth(_0x41b1a6){return util[_0x2ac2('0x25')](_0x2ac2('0x26'),new Buffer(_0x41b1a6[_0x2ac2('0x27')]+':X')[_0x2ac2('0x28')](_0x2ac2('0x29')));}function getServerInfo(_0x13eaee){return request({'form':{'method':'get_server_info','input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON[_0x2ac2('0x23')]({'session':_0x13eaee['id']})}});}function getUser(_0x15ac17,_0x2321ec,_0x14d362){if(!_[_0x2ac2('0x2a')](_0x2321ec)){logger['info']('Getting\x20agent\x20with\x20name',_0x2321ec);return request({'form':{'method':_0x2ac2('0x2b'),'input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON['stringify']({'session':_0x14d362['id'],'module_name':_0x2ac2('0x2c'),'query':util[_0x2ac2('0x25')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x2321ec),'order_by':'','offset':'0','select_fields':['id',_0x2ac2('0x10'),_0x2ac2('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2ac2('0x2e')](function(_0x579f46){if(_0x579f46['entry_list']['length']){var _0x2356ce=_[_0x2ac2('0x2f')](_0x579f46[_0x2ac2('0x30')],function(_0x1abd3a){return _0x1abd3a['name_value_list'][_0x2ac2('0x2d')][_0x2ac2('0x31')]===_0x2321ec;});if(_0x2356ce){logger[_0x2ac2('0x32')](_0x2ac2('0x33'));return BPromise[_0x2ac2('0x34')]({'id':_0x2356ce[_0x2ac2('0x35')]['id']['value'],'name':_0x2356ce['name_value_list'][_0x2ac2('0x10')][_0x2ac2('0x31')]});}}logger[_0x2ac2('0x32')](_0x2ac2('0x36'));return BPromise[_0x2ac2('0x34')]({'id':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x37')][_0x2ac2('0x31')],'name':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x2d')]['value']});});}else{logger[_0x2ac2('0x32')](_0x2ac2('0x38'));return BPromise[_0x2ac2('0x34')]({'id':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x37')][_0x2ac2('0x31')],'name':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x2d')][_0x2ac2('0x31')]});}}function getEndUser(_0x189796,_0x3d8946,_0x1945d7,_0x116e76){logger[_0x2ac2('0x32')]('Searching\x20enduser\x20with\x20phone',_0x1945d7);return request({'form':{'method':_0x2ac2('0x2b'),'input_type':_0x2ac2('0x22'),'response_type':'JSON','rest_data':JSON[_0x2ac2('0x23')]({'session':_0x116e76['id'],'module_name':_0x2ac2('0x1d'),'query':util['format'](_0x2ac2('0x39'),_0x1945d7),'order_by':'','offset':'0','select_fields':['id','name',_0x2ac2('0x3a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2ac2('0x2e')](function(_0x98d55c){if(_0x98d55c[_0x2ac2('0x30')]['length']){var _0x29461b=_[_0x2ac2('0x2f')](_0x98d55c['entry_list'],function(_0x387f2f){return _0x387f2f[_0x2ac2('0x35')]['phone_home'][_0x2ac2('0x31')]===_0x1945d7;});if(_0x29461b){logger['info']('Enduser\x20found!');return BPromise[_0x2ac2('0x34')]({'id':_0x29461b['name_value_list']['id'][_0x2ac2('0x31')],'name':_0x29461b[_0x2ac2('0x35')][_0x2ac2('0x10')][_0x2ac2('0x31')],'phone':_0x29461b[_0x2ac2('0x35')][_0x2ac2('0x3a')][_0x2ac2('0x31')]});}}else{logger[_0x2ac2('0x32')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x2ac2('0x21'),'input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON[_0x2ac2('0x23')]({'session':_0x116e76['id'],'module_name':_0x2ac2('0x1d'),'name_value_list':[{'name':_0x2ac2('0x3b'),'value':_0x3d8946!==_0x2ac2('0x3c')?_0x3d8946:util[_0x2ac2('0x25')](_0x2ac2('0x3d'),_0x1945d7)},{'name':'phone_home','value':_0x1945d7}]})}})[_0x2ac2('0x2e')](function(_0x36ccb7){logger[_0x2ac2('0x32')]('Enduser\x20created.');return BPromise[_0x2ac2('0x34')]({'id':_0x36ccb7['id'],'name':_0x36ccb7[_0x2ac2('0x30')][_0x2ac2('0x3b')][_0x2ac2('0x31')],'phone':_0x36ccb7[_0x2ac2('0x30')][_0x2ac2('0x3a')]['value']});});}});}function request(_0x240d4f){logger['debug'](_0x2ac2('0x3e'),JSON[_0x2ac2('0x23')](_0x240d4f));return rp(_[_0x2ac2('0x3f')](def,_0x240d4f));}function getTags(_0x1f23b4,_0x346b13){var _0x16461a=[];if(_0x1f23b4&&_0x1f23b4['length']>0x0){_0x16461a=_[_0x2ac2('0x40')](_0x1f23b4,_0x346b13);}return _0x16461a;}function getCustomFields(_0x4223bb,_0x153f65){var _0x1e59d6=[];var _0xe0e521={'custom_fields':[]};if(_0x4223bb[_0x2ac2('0x1e')]>0x0){_[_0x2ac2('0x1f')](_0x4223bb,function(_0xfdbf6d){if(_0xfdbf6d['type']===_0x2ac2('0x41')&&_0xfdbf6d[_0x2ac2('0x42')]&&!_0xfdbf6d[_0x2ac2('0x43')]){_0xe0e521[_0xfdbf6d[_0x2ac2('0x42')][_0x2ac2('0x44')]()]=_0xfdbf6d[_0x2ac2('0x45')][_0x2ac2('0x28')]();}else if(_0xfdbf6d['type']===_0x2ac2('0x41')&&_0xfdbf6d[_0x2ac2('0x46')]&&_0xfdbf6d[_0x2ac2('0x43')]){_0xe0e521[_0x2ac2('0x47')][_0x2ac2('0x48')]({'id':_0xfdbf6d[_0x2ac2('0x46')],'value':_0xfdbf6d[_0x2ac2('0x45')]['toString']()});}else if(_0xfdbf6d[_0x2ac2('0x49')]==='variable'&&_0xfdbf6d[_0x2ac2('0x20')]&&_0xfdbf6d[_0x2ac2('0x46')]&&_0xfdbf6d[_0x2ac2('0x43')]){_0x153f65[_0xfdbf6d['variableName']]&&_0xe0e521[_0x2ac2('0x47')][_0x2ac2('0x48')]({'id':_0xfdbf6d[_0x2ac2('0x46')],'value':_0x153f65[_0xfdbf6d[_0x2ac2('0x20')]][_0x2ac2('0x28')]()});}else if(_0xfdbf6d[_0x2ac2('0x49')]===_0x2ac2('0x4a')&&_0xfdbf6d[_0x2ac2('0x4b')]&&_0xfdbf6d[_0x2ac2('0x4b')][_0x2ac2('0x10')]&&_0xfdbf6d[_0x2ac2('0x46')]&&_0xfdbf6d['customField']){_0x153f65[_0xfdbf6d[_0x2ac2('0x4b')][_0x2ac2('0x10')][_0x2ac2('0x44')]()]&&_0xe0e521[_0x2ac2('0x47')][_0x2ac2('0x48')]({'id':_0xfdbf6d[_0x2ac2('0x46')],'value':_0x153f65[_0xfdbf6d[_0x2ac2('0x4b')][_0x2ac2('0x10')][_0x2ac2('0x44')]()][_0x2ac2('0x28')]()});}});}return _0xe0e521;}function getConnection(_0x160a44){return request({'method':_0x2ac2('0xd'),'form':{'method':_0x2ac2('0x4c'),'input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON[_0x2ac2('0x23')]({'user_auth':{'user_name':_0x160a44['username'],'password':_0x160a44[_0x2ac2('0x4d')],'encryption':_0x2ac2('0x4e')},'application':_0x2ac2('0x4f')})}})[_0x2ac2('0x2e')](function(_0x11937d){var _0x324c3f=_0x11937d;if(_0x324c3f['id']){def[_0x2ac2('0x50')]=_0x324c3f['id'];return BPromise[_0x2ac2('0x34')](_0x324c3f);}else{throw new Error(util[_0x2ac2('0x25')]('Account\x20%d\x20is\x20not\x20valid',_0x160a44['id']));}});}function setRelationship(_0x3fca24,_0x3052a3,_0x3410fe,_0x3609a6){return request({'form':{'method':'set_relationship','input_type':_0x2ac2('0x22'),'response_type':'JSON','rest_data':JSON[_0x2ac2('0x23')]({'session':_0x3fca24['id'],'module_name':_0x2ac2('0x24'),'module_id':_0x3410fe['id'],'link_field_name':_0x3609a6,'related_ids':[_0x3052a3['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x2ac2('0x51')]=function(_0x2aa01a,_0x3dea23,_0x2b5ddf,_0x63663c,_0x23c1b1,_0x2b6e0d){var _0x2cee10,_0x273043,_0x422eab,_0x5bc7b1;_0x2b6e0d[_0x2ac2('0x52')]=intUtil[_0x2ac2('0x53')](_0x2b6e0d[_0x2ac2('0x52')]);_0x2b6e0d['serverUrl']=intUtil['stripTrailingSlash'](_0x2b6e0d['serverUrl']);def[_0x2ac2('0x54')]=util[_0x2ac2('0x25')](_0x2ac2('0x55'),_0x2b6e0d[_0x2ac2('0x52')]);if(_0x23c1b1&&_0x23c1b1['monitor_format']){logger[_0x2ac2('0x32')](_0x2ac2('0x56'),_0x2ac2('0x57'));_0x3dea23['recordingURL']=util['format'](_0x2ac2('0x58'),_0x2b6e0d[_0x2ac2('0x59')],_0x3dea23[_0x2ac2('0x5a')],md5(_0x3dea23[_0x2ac2('0x5a')]));}else{_0x3dea23['recordingURL']='';}return getConnection(_0x2b6e0d)[_0x2ac2('0x2e')](function(_0x5edb2f){_0x5bc7b1=_0x5edb2f;return getUser(_0x2b6e0d,_0x63663c[_0x2ac2('0x10')],_0x5bc7b1);})[_0x2ac2('0x2e')](function(_0x26c2c4){_0x2cee10=_0x26c2c4;logger['info'](_0x2ac2('0x5b'),_0x2cee10['id']);return getEndUser(_0x2b6e0d,_0x3dea23[_0x2ac2('0x5c')],_0x3dea23['calleridnum'],_0x5bc7b1);})[_0x2ac2('0x2e')](function(_0x1ddd0b){_0x273043=_0x1ddd0b;logger[_0x2ac2('0x32')](_0x2ac2('0x5d'),_0x273043['id']);return getTicket(_0x2b6e0d,_0x2cee10,_0x273043,_0x2b5ddf,_0x3dea23,_0x2b5ddf[_0x2ac2('0x5e')],_0x5bc7b1,'Inbound');})[_0x2ac2('0x2e')](function(_0x3f62fc){_0x422eab=_0x3f62fc;logger[_0x2ac2('0x32')](_0x2ac2('0x5f'));logger['info'](_0x2ac2('0x60'),_0x422eab['id']);return setRelationship(_0x5bc7b1,_0x2cee10,_0x422eab,_0x2ac2('0x61'));})[_0x2ac2('0x2e')](function(){return setRelationship(_0x5bc7b1,_0x273043,_0x422eab,_0x2ac2('0x62'));})['then'](function(){return getServerInfo(_0x5bc7b1);})[_0x2ac2('0x2e')](function(_0x458aab){var _0x4c245e=parseInt(_0x458aab['version']['charAt'](0x0));var _0x549a6e=util[_0x2ac2('0x25')](_0x2ac2('0x63'),_0x2b6e0d['remoteUri'],_0x422eab['id']);if(_0x4c245e>0x6){_0x549a6e=util[_0x2ac2('0x25')](_0x2ac2('0x64'),_0x2b6e0d['remoteUri'],_0x422eab['id']);}logger['info'](_0x2ac2('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2ac2('0x25')](_0x2ac2('0x65'),_0x63663c[_0x2ac2('0x10')]),_0x2ac2('0x66'),{'uri':_0x549a6e});})[_0x2ac2('0x67')](function(_0x1fdeaa){logger[_0x2ac2('0x68')]('[QUEUE]',JSON['stringify'](_0x1fdeaa));});};exports[_0x2ac2('0x69')]=function(_0x1a8d1c,_0x1863d8,_0x1abb52,_0x256fc9,_0x329805,_0x50a0f3,_0x5d772c){var _0x4f5b90,_0x31170f,_0x4426f5,_0x25eb42;_0x50a0f3[_0x2ac2('0x52')]=intUtil[_0x2ac2('0x53')](_0x50a0f3[_0x2ac2('0x52')]);_0x50a0f3[_0x2ac2('0x59')]=intUtil[_0x2ac2('0x53')](_0x50a0f3[_0x2ac2('0x59')]);def[_0x2ac2('0x54')]=util[_0x2ac2('0x25')](_0x2ac2('0x55'),_0x50a0f3[_0x2ac2('0x52')]);if(_0x5d772c&&_0x5d772c[_0x2ac2('0x6a')]&&_0x5d772c[_0x2ac2('0x6a')]!==_0x2ac2('0x6b')){logger[_0x2ac2('0x32')](_0x2ac2('0x6c'),_0x2ac2('0x57'));_0x1863d8[_0x2ac2('0x6d')]=util['format'](_0x2ac2('0x58'),_0x50a0f3[_0x2ac2('0x59')],_0x1863d8[_0x2ac2('0x5a')],md5(_0x1863d8[_0x2ac2('0x5a')]));}return getConnection(_0x50a0f3)[_0x2ac2('0x2e')](function(_0x1e1d72){_0x25eb42=_0x1e1d72;return getUser(_0x50a0f3,_0x256fc9[_0x2ac2('0x10')],_0x25eb42);})[_0x2ac2('0x2e')](function(_0x48287f){_0x4f5b90=_0x48287f;logger[_0x2ac2('0x32')]('The\x20User\x20ID\x20is:',_0x4f5b90['id']);return getEndUser(_0x50a0f3,_0x1863d8['destcalleridname'],_0x1863d8[_0x2ac2('0x6e')],_0x25eb42);})[_0x2ac2('0x2e')](function(_0x6a85c0){_0x31170f=_0x6a85c0;logger[_0x2ac2('0x32')](_0x2ac2('0x5d'),_0x31170f['id']);return getTicket(_0x50a0f3,_0x4f5b90,_0x31170f,_0x1abb52,_0x1863d8,_0x1abb52[_0x2ac2('0x5e')],_0x25eb42,_0x2ac2('0x6f'));})['then'](function(_0x200e2f){_0x4426f5=_0x200e2f;logger['info'](_0x2ac2('0x5f'));logger[_0x2ac2('0x32')](_0x2ac2('0x60'),_0x4426f5['id']);return setRelationship(_0x25eb42,_0x4f5b90,_0x4426f5,'users');})[_0x2ac2('0x2e')](function(){return setRelationship(_0x25eb42,_0x31170f,_0x4426f5,_0x2ac2('0x62'));})[_0x2ac2('0x2e')](function(){return getServerInfo(_0x25eb42);})[_0x2ac2('0x2e')](function(_0x2a7142){var _0x24d1e5=parseInt(_0x2a7142[_0x2ac2('0x70')][_0x2ac2('0x71')](0x0));var _0x492d78=util[_0x2ac2('0x25')](_0x2ac2('0x63'),_0x50a0f3[_0x2ac2('0x52')],_0x4426f5['id']);if(_0x24d1e5>0x6){_0x492d78=util[_0x2ac2('0x25')](_0x2ac2('0x64'),_0x50a0f3[_0x2ac2('0x52')],_0x4426f5['id']);}logger[_0x2ac2('0x32')]('[OUTBOUND]',_0x2ac2('0x72'));emit(util[_0x2ac2('0x25')](_0x2ac2('0x65'),_0x256fc9[_0x2ac2('0x10')]),_0x2ac2('0x66'),{'uri':_0x492d78});})[_0x2ac2('0x67')](function(_0x4c3022){logger[_0x2ac2('0x68')](_0x2ac2('0x6c'),JSON['stringify'](_0x4c3022));});};exports['unmanaged']=function(_0x35bb6d,_0x5497a4,_0x4ec360,_0x171b83,_0x5c332d,_0x675ae8){var _0x1e735f,_0x47e8a3,_0x3349de,_0x5bccb8;_0x675ae8[_0x2ac2('0x52')]=intUtil['stripTrailingSlash'](_0x675ae8[_0x2ac2('0x52')]);_0x675ae8[_0x2ac2('0x59')]=intUtil['stripTrailingSlash'](_0x675ae8[_0x2ac2('0x59')]);def['uri']=util['format']('%s/service/v4_1/rest.php',_0x675ae8[_0x2ac2('0x52')]);if(_0x5c332d&&_0x5c332d[_0x2ac2('0x73')]){logger[_0x2ac2('0x32')]('['+_0x5497a4[_0x2ac2('0x74')]['toUpperCase']()+']',_0x2ac2('0x57'));_0x5497a4[_0x2ac2('0x6d')]=util['format'](_0x2ac2('0x58'),_0x675ae8[_0x2ac2('0x59')],_0x5497a4[_0x2ac2('0x5a')],md5(_0x5497a4['uniqueid']));}else{_0x5497a4[_0x2ac2('0x6d')]='';}return getConnection(_0x675ae8)['then'](function(_0x41d63e){_0x5bccb8=_0x41d63e;if(!_[_0x2ac2('0x2a')](_0x171b83)){return getUser(_0x675ae8,_0x171b83['name'],_0x5bccb8);}else{return getUser(_0x675ae8,null,_0x5bccb8);}})[_0x2ac2('0x2e')](function(_0x389788){_0x1e735f=_0x389788;logger[_0x2ac2('0x32')]('The\x20User\x20ID\x20is:',_0x1e735f['id']);return getEndUser(_0x675ae8,_0x5497a4[_0x2ac2('0x5c')],_0x5497a4['calleridnum'],_0x5bccb8);})[_0x2ac2('0x2e')](function(_0x425587){_0x47e8a3=_0x425587;logger['info'](_0x2ac2('0x5d'),_0x47e8a3['id']);return getTicket(_0x675ae8,_0x1e735f,_0x47e8a3,_0x4ec360,_0x5497a4,_0x4ec360[_0x2ac2('0x5e')],_0x5bccb8,_0x2ac2('0x75'));})[_0x2ac2('0x2e')](function(_0x30659e){_0x3349de=_0x30659e;logger[_0x2ac2('0x32')]('Ticket\x20created!');logger[_0x2ac2('0x32')](_0x2ac2('0x60'),_0x3349de['id']);return setRelationship(_0x5bccb8,_0x1e735f,_0x3349de,_0x2ac2('0x61'));})['then'](function(){return setRelationship(_0x5bccb8,_0x47e8a3,_0x3349de,_0x2ac2('0x62'));})[_0x2ac2('0x2e')](function(){return getServerInfo(_0x5bccb8);})[_0x2ac2('0x67')](function(_0x6e94b7){logger[_0x2ac2('0x68')]('['+_0x5497a4['lastevent']['toUpperCase']()+']',JSON[_0x2ac2('0x23')](_0x6e94b7));});};
\ No newline at end of file
+var _0xadc5=['format','Basic\x20%s','apiKey','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','name','user_name','then','entry_list','name_value_list','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','phone_home','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','debug','merge','map','nameField','customField','content','type','custom_fields','variable','variableName','customVariable','Variable','toLowerCase','login','username','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','Calls','remoteUri','serverUrl','stripTrailingSlash','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','users','contacts','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Outbound','The\x20Ticket\x20ID\x20is:','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','catch','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','bluebird','md5','util','ioredis','./util','sugarcrm','defaults','redis','localhost','socket.io-emitter','POST','info','Creating\x20new\x20ticket...','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','push','idField','set_entry','JSON','stringify'];(function(_0x1501e2,_0x271210){var _0xfce8c5=function(_0x343f12){while(--_0x343f12){_0x1501e2['push'](_0x1501e2['shift']());}};_0xfce8c5(++_0x271210);}(_0xadc5,0xd6));var _0x5adc=function(_0x256cf1,_0x19ec6e){_0x256cf1=_0x256cf1-0x0;var _0x2f9003=_0xadc5[_0x256cf1];return _0x2f9003;};'use strict';var _=require(_0x5adc('0x0'));var rp=require(_0x5adc('0x1'));var BPromise=require(_0x5adc('0x2'));var md5=require(_0x5adc('0x3'));var util=require(_0x5adc('0x4'));var Redis=require(_0x5adc('0x5'));var intUtil=require(_0x5adc('0x6'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x5adc('0x7'));config['redis']=_[_0x5adc('0x8')](config[_0x5adc('0x9')],{'host':_0x5adc('0xa'),'port':0x18eb});var io=require(_0x5adc('0xb'))(new Redis(config[_0x5adc('0x9')]));var def={'method':_0x5adc('0xc'),'json':!![]};function emit(_0x7955ae,_0x17d2f2,_0x16ead3){io['to'](_0x7955ae)['emit'](_0x17d2f2,_0x16ead3);}function getTicket(_0x88ab03,_0x6dffe4,_0x2a4711,_0x247810,_0xfe7397,_0x25c728,_0x3daf1f,_0x3bc575){logger[_0x5adc('0xd')](_0x5adc('0xe'));var _0x1f6943=new Date();var _0xa276aa=[{'name':'name','value':intUtil[_0x5adc('0xf')](_0x247810[_0x5adc('0x10')],_0xfe7397,'\x20')},{'name':_0x5adc('0x11'),'value':_0x6dffe4['id']},{'name':_0x5adc('0x12'),'value':_0x6dffe4['id']},{'name':_0x5adc('0x13'),'value':intUtil['getString'](_0x247810[_0x5adc('0x14')],_0xfe7397,'\x0a')},{'name':_0x5adc('0x15'),'value':_0x1f6943[_0x5adc('0x16')]()['slice'](0x0,0x13)['replace']('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x5adc('0x17'),'value':'15'},{'name':_0x5adc('0x18'),'value':_0x2a4711['id']},{'name':_0x5adc('0x19'),'value':_0x5adc('0x1a')},{'name':_0x5adc('0x1b'),'value':_0x2a4711['name']},{'name':_0x5adc('0x1c'),'value':_0x3bc575}];if(_0x25c728[_0x5adc('0x1d')]){_[_0x5adc('0x1e')](_0x25c728,function(_0x5c0165){if(_0xfe7397[_0x5c0165['variableName']]){_0xa276aa[_0x5adc('0x1f')]({'name':_0x5c0165[_0x5adc('0x20')],'value':_0xfe7397[_0x5c0165['variableName']]});}});}return request({'form':{'method':_0x5adc('0x21'),'input_type':_0x5adc('0x22'),'response_type':_0x5adc('0x22'),'rest_data':JSON[_0x5adc('0x23')]({'session':_0x3daf1f['id'],'module_name':'Calls','name_value_list':_0xa276aa})}});}function getAuth(_0x1dee96){return util[_0x5adc('0x24')](_0x5adc('0x25'),new Buffer(_0x1dee96[_0x5adc('0x26')]+':X')[_0x5adc('0x27')](_0x5adc('0x28')));}function getServerInfo(_0x1294e4){return request({'form':{'method':_0x5adc('0x29'),'input_type':_0x5adc('0x22'),'response_type':_0x5adc('0x22'),'rest_data':JSON[_0x5adc('0x23')]({'session':_0x1294e4['id']})}});}function getUser(_0x39f8e6,_0x1e905d,_0x2126e2){if(!_[_0x5adc('0x2a')](_0x1e905d)){logger[_0x5adc('0xd')](_0x5adc('0x2b'),_0x1e905d);return request({'form':{'method':_0x5adc('0x2c'),'input_type':_0x5adc('0x22'),'response_type':_0x5adc('0x22'),'rest_data':JSON[_0x5adc('0x23')]({'session':_0x2126e2['id'],'module_name':_0x5adc('0x2d'),'query':util[_0x5adc('0x24')](_0x5adc('0x2e'),_0x1e905d),'order_by':'','offset':'0','select_fields':['id',_0x5adc('0x2f'),_0x5adc('0x30')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5adc('0x31')](function(_0xc22782){if(_0xc22782[_0x5adc('0x32')][_0x5adc('0x1d')]){var _0x2b2a51=_['find'](_0xc22782['entry_list'],function(_0x17eda2){return _0x17eda2[_0x5adc('0x33')][_0x5adc('0x30')][_0x5adc('0x34')]===_0x1e905d;});if(_0x2b2a51){logger[_0x5adc('0xd')](_0x5adc('0x35'));return BPromise[_0x5adc('0x36')]({'id':_0x2b2a51['name_value_list']['id'][_0x5adc('0x34')],'name':_0x2b2a51[_0x5adc('0x33')][_0x5adc('0x2f')][_0x5adc('0x34')]});}}logger[_0x5adc('0xd')](_0x5adc('0x37'));return BPromise[_0x5adc('0x36')]({'id':_0x2126e2['name_value_list'][_0x5adc('0x38')][_0x5adc('0x34')],'name':_0x2126e2['name_value_list']['user_name'][_0x5adc('0x34')]});});}else{logger[_0x5adc('0xd')](_0x5adc('0x39'));return BPromise[_0x5adc('0x36')]({'id':_0x2126e2[_0x5adc('0x33')][_0x5adc('0x38')][_0x5adc('0x34')],'name':_0x2126e2[_0x5adc('0x33')]['user_name'][_0x5adc('0x34')]});}}function getEndUser(_0x15cab0,_0x260a90,_0x41a598,_0x8811a3){logger[_0x5adc('0xd')](_0x5adc('0x3a'),_0x41a598);return request({'form':{'method':_0x5adc('0x2c'),'input_type':_0x5adc('0x22'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x8811a3['id'],'module_name':'Contacts','query':util[_0x5adc('0x24')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x41a598),'order_by':'','offset':'0','select_fields':['id',_0x5adc('0x2f'),_0x5adc('0x3b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5adc('0x31')](function(_0x4860c1){if(_0x4860c1[_0x5adc('0x32')]['length']){var _0x41ef1f=_[_0x5adc('0x3c')](_0x4860c1[_0x5adc('0x32')],function(_0x4c89ff){return _0x4c89ff['name_value_list'][_0x5adc('0x3b')][_0x5adc('0x34')]===_0x41a598;});if(_0x41ef1f){logger[_0x5adc('0xd')]('Enduser\x20found!');return BPromise[_0x5adc('0x36')]({'id':_0x41ef1f[_0x5adc('0x33')]['id'][_0x5adc('0x34')],'name':_0x41ef1f[_0x5adc('0x33')][_0x5adc('0x2f')][_0x5adc('0x34')],'phone':_0x41ef1f[_0x5adc('0x33')][_0x5adc('0x3b')][_0x5adc('0x34')]});}}else{logger['info'](_0x5adc('0x3d'));return request({'form':{'method':'set_entry','input_type':'JSON','response_type':_0x5adc('0x22'),'rest_data':JSON[_0x5adc('0x23')]({'session':_0x8811a3['id'],'module_name':'Contacts','name_value_list':[{'name':_0x5adc('0x3e'),'value':_0x260a90!==_0x5adc('0x3f')?_0x260a90:util[_0x5adc('0x24')](_0x5adc('0x40'),_0x41a598)},{'name':_0x5adc('0x3b'),'value':_0x41a598}]})}})['then'](function(_0xf851b2){logger[_0x5adc('0xd')]('Enduser\x20created.');return BPromise[_0x5adc('0x36')]({'id':_0xf851b2['id'],'name':_0xf851b2[_0x5adc('0x32')][_0x5adc('0x3e')][_0x5adc('0x34')],'phone':_0xf851b2[_0x5adc('0x32')]['phone_home'][_0x5adc('0x34')]});});}});}function request(_0x253811){logger[_0x5adc('0x41')]('[HTTP]',JSON[_0x5adc('0x23')](_0x253811));return rp(_[_0x5adc('0x42')](def,_0x253811));}function getTags(_0x4ea0c3,_0x14c323){var _0x6b3ad0=[];if(_0x4ea0c3&&_0x4ea0c3['length']>0x0){_0x6b3ad0=_[_0x5adc('0x43')](_0x4ea0c3,_0x14c323);}return _0x6b3ad0;}function getCustomFields(_0x294141,_0x60a7ad){var _0x445bab=[];var _0x47d6c0={'custom_fields':[]};if(_0x294141[_0x5adc('0x1d')]>0x0){_[_0x5adc('0x1e')](_0x294141,function(_0x3fb0a7){if(_0x3fb0a7['type']==='string'&&_0x3fb0a7[_0x5adc('0x44')]&&!_0x3fb0a7[_0x5adc('0x45')]){_0x47d6c0[_0x3fb0a7[_0x5adc('0x44')]['toLowerCase']()]=_0x3fb0a7[_0x5adc('0x46')][_0x5adc('0x27')]();}else if(_0x3fb0a7[_0x5adc('0x47')]==='string'&&_0x3fb0a7[_0x5adc('0x20')]&&_0x3fb0a7[_0x5adc('0x45')]){_0x47d6c0[_0x5adc('0x48')]['push']({'id':_0x3fb0a7[_0x5adc('0x20')],'value':_0x3fb0a7['content'][_0x5adc('0x27')]()});}else if(_0x3fb0a7[_0x5adc('0x47')]===_0x5adc('0x49')&&_0x3fb0a7[_0x5adc('0x4a')]&&_0x3fb0a7[_0x5adc('0x20')]&&_0x3fb0a7['customField']){_0x60a7ad[_0x3fb0a7[_0x5adc('0x4a')]]&&_0x47d6c0[_0x5adc('0x48')][_0x5adc('0x1f')]({'id':_0x3fb0a7['idField'],'value':_0x60a7ad[_0x3fb0a7[_0x5adc('0x4a')]][_0x5adc('0x27')]()});}else if(_0x3fb0a7[_0x5adc('0x47')]===_0x5adc('0x4b')&&_0x3fb0a7[_0x5adc('0x4c')]&&_0x3fb0a7[_0x5adc('0x4c')]['name']&&_0x3fb0a7[_0x5adc('0x20')]&&_0x3fb0a7[_0x5adc('0x45')]){_0x60a7ad[_0x3fb0a7[_0x5adc('0x4c')]['name'][_0x5adc('0x4d')]()]&&_0x47d6c0[_0x5adc('0x48')][_0x5adc('0x1f')]({'id':_0x3fb0a7[_0x5adc('0x20')],'value':_0x60a7ad[_0x3fb0a7[_0x5adc('0x4c')]['name']['toLowerCase']()][_0x5adc('0x27')]()});}});}return _0x47d6c0;}function getConnection(_0x1b96e3){return request({'method':_0x5adc('0xc'),'form':{'method':_0x5adc('0x4e'),'input_type':_0x5adc('0x22'),'response_type':_0x5adc('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x1b96e3[_0x5adc('0x4f')],'password':_0x1b96e3['password'],'encryption':_0x5adc('0x50')},'application':_0x5adc('0x51')})}})[_0x5adc('0x31')](function(_0x47eedb){var _0x4af939=_0x47eedb;if(_0x4af939['id']){def[_0x5adc('0x52')]=_0x4af939['id'];return BPromise[_0x5adc('0x36')](_0x4af939);}else{throw new Error(util[_0x5adc('0x24')]('Account\x20%d\x20is\x20not\x20valid',_0x1b96e3['id']));}});}function setRelationship(_0x4cabb9,_0x156651,_0x46d22a,_0x3742a3){return request({'form':{'method':_0x5adc('0x53'),'input_type':_0x5adc('0x22'),'response_type':_0x5adc('0x22'),'rest_data':JSON[_0x5adc('0x23')]({'session':_0x4cabb9['id'],'module_name':_0x5adc('0x54'),'module_id':_0x46d22a['id'],'link_field_name':_0x3742a3,'related_ids':[_0x156651['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x206fb9,_0x52f7b3,_0x5a6c85,_0x267a5a,_0x3ae8ce,_0x124b53){var _0x1345ff,_0x171ab6,_0x3e9188,_0x187ba7;_0x124b53[_0x5adc('0x55')]=intUtil['stripTrailingSlash'](_0x124b53[_0x5adc('0x55')]);_0x124b53[_0x5adc('0x56')]=intUtil[_0x5adc('0x57')](_0x124b53[_0x5adc('0x56')]);def[_0x5adc('0x58')]=util[_0x5adc('0x24')](_0x5adc('0x59'),_0x124b53['remoteUri']);if(_0x3ae8ce&&_0x3ae8ce[_0x5adc('0x5a')]){logger['info'](_0x5adc('0x5b'),'Recording\x20is\x20enabled!');_0x52f7b3[_0x5adc('0x5c')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x124b53[_0x5adc('0x56')],_0x52f7b3['uniqueid'],md5(_0x52f7b3[_0x5adc('0x5d')]));}else{_0x52f7b3[_0x5adc('0x5c')]='';}return getConnection(_0x124b53)['then'](function(_0x7cd065){_0x187ba7=_0x7cd065;return getUser(_0x124b53,_0x267a5a[_0x5adc('0x2f')],_0x187ba7);})[_0x5adc('0x31')](function(_0x6a4e4){_0x1345ff=_0x6a4e4;logger[_0x5adc('0xd')](_0x5adc('0x5e'),_0x1345ff['id']);return getEndUser(_0x124b53,_0x52f7b3[_0x5adc('0x5f')],_0x52f7b3[_0x5adc('0x60')],_0x187ba7);})[_0x5adc('0x31')](function(_0xafc3e2){_0x171ab6=_0xafc3e2;logger[_0x5adc('0xd')](_0x5adc('0x61'),_0x171ab6['id']);return getTicket(_0x124b53,_0x1345ff,_0x171ab6,_0x5a6c85,_0x52f7b3,_0x5a6c85[_0x5adc('0x62')],_0x187ba7,_0x5adc('0x63'));})[_0x5adc('0x31')](function(_0x105a5c){_0x3e9188=_0x105a5c;logger[_0x5adc('0xd')](_0x5adc('0x64'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x3e9188['id']);return setRelationship(_0x187ba7,_0x1345ff,_0x3e9188,_0x5adc('0x65'));})[_0x5adc('0x31')](function(){return setRelationship(_0x187ba7,_0x171ab6,_0x3e9188,_0x5adc('0x66'));})[_0x5adc('0x31')](function(){return getServerInfo(_0x187ba7);})[_0x5adc('0x31')](function(_0x325545){var _0x478e58=parseInt(_0x325545['version'][_0x5adc('0x67')](0x0));var _0x168d98=util[_0x5adc('0x24')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x124b53[_0x5adc('0x55')],_0x3e9188['id']);if(_0x478e58>0x6){_0x168d98=util[_0x5adc('0x24')](_0x5adc('0x68'),_0x124b53['remoteUri'],_0x3e9188['id']);}logger['info'](_0x5adc('0x5b'),_0x5adc('0x69'));emit(util[_0x5adc('0x24')](_0x5adc('0x6a'),_0x267a5a[_0x5adc('0x2f')]),_0x5adc('0x6b'),{'uri':_0x168d98});})['catch'](function(_0x5a9065){logger[_0x5adc('0x6c')](_0x5adc('0x5b'),JSON['stringify'](_0x5a9065));});};exports[_0x5adc('0x6d')]=function(_0x19c3d9,_0x250b3c,_0x422bec,_0x14c4a5,_0x89cf15,_0x126b6d,_0x47be69){var _0x2de7ac,_0x2fdc83,_0x143f56,_0x1e44b9;_0x126b6d[_0x5adc('0x55')]=intUtil[_0x5adc('0x57')](_0x126b6d['remoteUri']);_0x126b6d[_0x5adc('0x56')]=intUtil[_0x5adc('0x57')](_0x126b6d['serverUrl']);def[_0x5adc('0x58')]=util[_0x5adc('0x24')](_0x5adc('0x59'),_0x126b6d[_0x5adc('0x55')]);if(_0x47be69&&_0x47be69[_0x5adc('0x6e')]&&_0x47be69[_0x5adc('0x6e')]!==_0x5adc('0x6f')){logger['info'](_0x5adc('0x70'),'Recording\x20is\x20enabled!');_0x250b3c[_0x5adc('0x5c')]=util[_0x5adc('0x24')](_0x5adc('0x71'),_0x126b6d[_0x5adc('0x56')],_0x250b3c['uniqueid'],md5(_0x250b3c['uniqueid']));}return getConnection(_0x126b6d)[_0x5adc('0x31')](function(_0x2be8d1){_0x1e44b9=_0x2be8d1;return getUser(_0x126b6d,_0x14c4a5[_0x5adc('0x2f')],_0x1e44b9);})[_0x5adc('0x31')](function(_0x3d7765){_0x2de7ac=_0x3d7765;logger['info'](_0x5adc('0x5e'),_0x2de7ac['id']);return getEndUser(_0x126b6d,_0x250b3c[_0x5adc('0x72')],_0x250b3c[_0x5adc('0x73')],_0x1e44b9);})[_0x5adc('0x31')](function(_0x334b19){_0x2fdc83=_0x334b19;logger[_0x5adc('0xd')]('The\x20Enduser\x20ID\x20is:',_0x2fdc83['id']);return getTicket(_0x126b6d,_0x2de7ac,_0x2fdc83,_0x422bec,_0x250b3c,_0x422bec[_0x5adc('0x62')],_0x1e44b9,_0x5adc('0x74'));})[_0x5adc('0x31')](function(_0x4e4d61){_0x143f56=_0x4e4d61;logger[_0x5adc('0xd')](_0x5adc('0x64'));logger[_0x5adc('0xd')](_0x5adc('0x75'),_0x143f56['id']);return setRelationship(_0x1e44b9,_0x2de7ac,_0x143f56,_0x5adc('0x65'));})['then'](function(){return setRelationship(_0x1e44b9,_0x2fdc83,_0x143f56,_0x5adc('0x66'));})[_0x5adc('0x31')](function(){return getServerInfo(_0x1e44b9);})[_0x5adc('0x31')](function(_0x1d6c9f){var _0x58e8ab=parseInt(_0x1d6c9f[_0x5adc('0x76')][_0x5adc('0x67')](0x0));var _0x267a5d=util[_0x5adc('0x24')](_0x5adc('0x77'),_0x126b6d['remoteUri'],_0x143f56['id']);if(_0x58e8ab>0x6){_0x267a5d=util[_0x5adc('0x24')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x126b6d[_0x5adc('0x55')],_0x143f56['id']);}logger[_0x5adc('0xd')](_0x5adc('0x70'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x5adc('0x24')](_0x5adc('0x6a'),_0x14c4a5[_0x5adc('0x2f')]),_0x5adc('0x6b'),{'uri':_0x267a5d});})[_0x5adc('0x78')](function(_0x528fcb){logger['error'](_0x5adc('0x70'),JSON['stringify'](_0x528fcb));});};exports[_0x5adc('0x79')]=function(_0x2c6b35,_0xa12b94,_0x36fac0,_0x4ec0f8,_0x53064b,_0x2f52b1){var _0x2bfe4c,_0x35ba85,_0x30dcb9,_0x3d1ceb;_0x2f52b1[_0x5adc('0x55')]=intUtil[_0x5adc('0x57')](_0x2f52b1[_0x5adc('0x55')]);_0x2f52b1[_0x5adc('0x56')]=intUtil[_0x5adc('0x57')](_0x2f52b1['serverUrl']);def[_0x5adc('0x58')]=util[_0x5adc('0x24')](_0x5adc('0x59'),_0x2f52b1[_0x5adc('0x55')]);if(_0x53064b&&_0x53064b['monitor_format']){logger[_0x5adc('0xd')]('['+_0xa12b94[_0x5adc('0x7a')][_0x5adc('0x7b')]()+']',_0x5adc('0x7c'));_0xa12b94['recordingURL']=util['format'](_0x5adc('0x71'),_0x2f52b1[_0x5adc('0x56')],_0xa12b94[_0x5adc('0x5d')],md5(_0xa12b94['uniqueid']));}else{_0xa12b94[_0x5adc('0x5c')]='';}return getConnection(_0x2f52b1)[_0x5adc('0x31')](function(_0x20fde3){_0x3d1ceb=_0x20fde3;if(!_[_0x5adc('0x2a')](_0x4ec0f8)){return getUser(_0x2f52b1,_0x4ec0f8[_0x5adc('0x2f')],_0x3d1ceb);}else{return getUser(_0x2f52b1,null,_0x3d1ceb);}})[_0x5adc('0x31')](function(_0x4fdd3e){_0x2bfe4c=_0x4fdd3e;logger['info'](_0x5adc('0x5e'),_0x2bfe4c['id']);return getEndUser(_0x2f52b1,_0xa12b94[_0x5adc('0x5f')],_0xa12b94[_0x5adc('0x60')],_0x3d1ceb);})['then'](function(_0x35631d){_0x35ba85=_0x35631d;logger['info'](_0x5adc('0x61'),_0x35ba85['id']);return getTicket(_0x2f52b1,_0x2bfe4c,_0x35ba85,_0x36fac0,_0xa12b94,_0x36fac0[_0x5adc('0x62')],_0x3d1ceb,_0x5adc('0x63'));})['then'](function(_0x4fc443){_0x30dcb9=_0x4fc443;logger[_0x5adc('0xd')](_0x5adc('0x64'));logger[_0x5adc('0xd')]('The\x20Ticket\x20ID\x20is:',_0x30dcb9['id']);return setRelationship(_0x3d1ceb,_0x2bfe4c,_0x30dcb9,'users');})[_0x5adc('0x31')](function(){return setRelationship(_0x3d1ceb,_0x35ba85,_0x30dcb9,_0x5adc('0x66'));})['then'](function(){return getServerInfo(_0x3d1ceb);})[_0x5adc('0x78')](function(_0x2239eb){logger[_0x5adc('0x6c')]('['+_0xa12b94[_0x5adc('0x7a')][_0x5adc('0x7b')]()+']',JSON[_0x5adc('0x23')](_0x2239eb));});};
\ No newline at end of file
index 932f1b0..97c8a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc626=['substring','lastIndexOf','validateEmail','isNil','lodash','util','getString','length','sortBy','type','string','content','variable','variableName','toString','customVariable','name','Variable','toLowerCase','keyValue','keyType','key','push','format','%s:\x20%s','keyContent','join','stripTrailingSlash','slice'];(function(_0x2331ef,_0x2483c1){var _0x2370c3=function(_0x2d5771){while(--_0x2d5771){_0x2331ef['push'](_0x2331ef['shift']());}};_0x2370c3(++_0x2483c1);}(_0xc626,0x1f1));var _0x6c62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc626[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6c62('0x0'));var util=require(_0x6c62('0x1'));exports[_0x6c62('0x2')]=function(_0xe3ee46,_0x4babd7,_0x48ad96){var _0x5a6f6c=[];if(_0xe3ee46[_0x6c62('0x3')]>0x0){var _0x586cdd=_[_0x6c62('0x4')](_0xe3ee46,['id']);for(var _0x242739=0x0;_0x242739<_0x586cdd[_0x6c62('0x3')];_0x242739++){var _0x335c9f=_0x586cdd[_0x242739];if(_0x335c9f[_0x6c62('0x5')]===_0x6c62('0x6')){_0x5a6f6c['push'](_0x335c9f[_0x6c62('0x7')]);}else if(_0x335c9f[_0x6c62('0x5')]===_0x6c62('0x8')&&_0x335c9f['variableName']){_0x4babd7[_0x335c9f[_0x6c62('0x9')]]&&_0x5a6f6c['push'](_0x4babd7[_0x335c9f[_0x6c62('0x9')]][_0x6c62('0xa')]());}else if(_0x335c9f[_0x6c62('0x5')]===_0x6c62('0xb')&&_0x335c9f['Variable']&&_0x335c9f['Variable'][_0x6c62('0xc')]){_0x4babd7[_0x335c9f[_0x6c62('0xd')][_0x6c62('0xc')][_0x6c62('0xe')]()]&&_0x5a6f6c['push'](_0x4babd7[_0x335c9f[_0x6c62('0xd')][_0x6c62('0xc')]['toLowerCase']()][_0x6c62('0xa')]());}else if(_0x335c9f['type']===_0x6c62('0xf')){if(_0x335c9f[_0x6c62('0x10')]===_0x6c62('0x6')&&_0x335c9f[_0x6c62('0x11')]){_0x5a6f6c[_0x6c62('0x12')](util[_0x6c62('0x13')](_0x6c62('0x14'),_0x335c9f[_0x6c62('0x11')],_0x335c9f[_0x6c62('0x15')]));}else if(_0x335c9f[_0x6c62('0x10')]===_0x6c62('0x8')&&_0x335c9f[_0x6c62('0x9')]&&_0x335c9f['key']){_0x4babd7[_0x335c9f[_0x6c62('0x9')]]&&_0x5a6f6c['push'](util[_0x6c62('0x13')](_0x6c62('0x14'),_0x335c9f[_0x6c62('0x11')],_0x4babd7[_0x335c9f[_0x6c62('0x9')]]));}else if(_0x335c9f[_0x6c62('0x10')]==='customVariable'&&_0x335c9f[_0x6c62('0xd')]&&_0x335c9f[_0x6c62('0xd')]['name']&&_0x335c9f['key']){_0x4babd7[_0x335c9f[_0x6c62('0xd')]['name']['toLowerCase']()]&&_0x5a6f6c[_0x6c62('0x12')](util[_0x6c62('0x13')](_0x6c62('0x14'),_0x335c9f[_0x6c62('0x11')],_0x4babd7[_0x335c9f['Variable'][_0x6c62('0xc')][_0x6c62('0xe')]()]));}}}}return _0x5a6f6c[_0x6c62('0x16')](_0x48ad96);};exports[_0x6c62('0x17')]=function(_0x43b21d){var _0x12053e=_0x43b21d[_0x6c62('0x18')](-0x1);if(_0x12053e==='/'){_0x43b21d=_0x43b21d[_0x6c62('0x19')](0x0,_0x43b21d[_0x6c62('0x1a')](_0x12053e));}return _0x43b21d;};exports[_0x6c62('0x1b')]=function(_0x542220){if(!_[_0x6c62('0x1c')](_0x542220)&&_0x542220!==''){var _0x738cfb=/^(([^<>()\[\]\\.,;:\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 _0x738cfb['test'](String(_0x542220)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x277a=['isNil','util','getString','length','sortBy','type','string','push','content','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','key','format','%s:\x20%s','keyContent','keyType','variable','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail'];(function(_0x2c10fb,_0x380e1b){var _0x23e4c0=function(_0x4fdea5){while(--_0x4fdea5){_0x2c10fb['push'](_0x2c10fb['shift']());}};_0x23e4c0(++_0x380e1b);}(_0x277a,0x1c1));var _0xa277=function(_0x2b7fd4,_0x264eb0){_0x2b7fd4=_0x2b7fd4-0x0;var _0x321788=_0x277a[_0x2b7fd4];return _0x321788;};'use strict';var _=require('lodash');var util=require(_0xa277('0x0'));exports[_0xa277('0x1')]=function(_0x2f6601,_0x281866,_0x395736){var _0x1845f1=[];if(_0x2f6601[_0xa277('0x2')]>0x0){var _0x4f5802=_[_0xa277('0x3')](_0x2f6601,['id']);for(var _0x1c4b2b=0x0;_0x1c4b2b<_0x4f5802['length'];_0x1c4b2b++){var _0x44d21f=_0x4f5802[_0x1c4b2b];if(_0x44d21f[_0xa277('0x4')]===_0xa277('0x5')){_0x1845f1[_0xa277('0x6')](_0x44d21f[_0xa277('0x7')]);}else if(_0x44d21f[_0xa277('0x4')]==='variable'&&_0x44d21f['variableName']){_0x281866[_0x44d21f[_0xa277('0x8')]]&&_0x1845f1[_0xa277('0x6')](_0x281866[_0x44d21f[_0xa277('0x8')]][_0xa277('0x9')]());}else if(_0x44d21f[_0xa277('0x4')]===_0xa277('0xa')&&_0x44d21f[_0xa277('0xb')]&&_0x44d21f[_0xa277('0xb')]['name']){_0x281866[_0x44d21f[_0xa277('0xb')][_0xa277('0xc')][_0xa277('0xd')]()]&&_0x1845f1[_0xa277('0x6')](_0x281866[_0x44d21f[_0xa277('0xb')][_0xa277('0xc')][_0xa277('0xd')]()][_0xa277('0x9')]());}else if(_0x44d21f[_0xa277('0x4')]===_0xa277('0xe')){if(_0x44d21f['keyType']===_0xa277('0x5')&&_0x44d21f[_0xa277('0xf')]){_0x1845f1[_0xa277('0x6')](util[_0xa277('0x10')](_0xa277('0x11'),_0x44d21f[_0xa277('0xf')],_0x44d21f[_0xa277('0x12')]));}else if(_0x44d21f[_0xa277('0x13')]===_0xa277('0x14')&&_0x44d21f['variableName']&&_0x44d21f[_0xa277('0xf')]){_0x281866[_0x44d21f[_0xa277('0x8')]]&&_0x1845f1['push'](util['format'](_0xa277('0x11'),_0x44d21f[_0xa277('0xf')],_0x281866[_0x44d21f[_0xa277('0x8')]]));}else if(_0x44d21f['keyType']===_0xa277('0xa')&&_0x44d21f[_0xa277('0xb')]&&_0x44d21f['Variable'][_0xa277('0xc')]&&_0x44d21f[_0xa277('0xf')]){_0x281866[_0x44d21f[_0xa277('0xb')]['name'][_0xa277('0xd')]()]&&_0x1845f1[_0xa277('0x6')](util[_0xa277('0x10')](_0xa277('0x11'),_0x44d21f['key'],_0x281866[_0x44d21f['Variable']['name']['toLowerCase']()]));}}}}return _0x1845f1[_0xa277('0x15')](_0x395736);};exports[_0xa277('0x16')]=function(_0xd92e83){var _0x13e6cb=_0xd92e83[_0xa277('0x17')](-0x1);if(_0x13e6cb==='/'){_0xd92e83=_0xd92e83[_0xa277('0x18')](0x0,_0xd92e83[_0xa277('0x19')](_0x13e6cb));}return _0xd92e83;};exports[_0xa277('0x1a')]=function(_0x5a9768){if(!_[_0xa277('0x1b')](_0x5a9768)&&_0x5a9768!==''){var _0x564791=/^(([^<>()\[\]\\.,;:\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 _0x564791['test'](String(_0x5a9768)[_0xa277('0xd')]());}else{return![];}};
\ No newline at end of file
index 81710c2..af92d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x41c0ad,_0x2a73a1){var _0x115106=function(_0x1f0f60){while(--_0x1f0f60){_0x41c0ad['push'](_0x41c0ad['shift']());}};_0x115106(++_0x2a73a1);}(_0xe706,0xa3));var _0x6e70=function(_0xc54c54,_0x59053b){_0xc54c54=_0xc54c54-0x0;var _0x476786=_0xe706[_0xc54c54];return _0x476786;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
+var _0xd8b0=['info','Creating\x20new\x20ticket...','merge','Normal','Subjects','POST','format','%s/webservice.php','remoteUri','create','username','sessionName','HelpDesk','stringify','success','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','then','Agent\x20found!','resolve','email1','first_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','admin','catch','userId','getUser','Searching\x20end\x20user\x20with\x20phone','GET','query','Enduser\x20found!','firstname','Enduser\x20created.','lastname','phone','accessKey','getchallenge','login','token','getConnection','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','lastevent','toUpperCase','lodash','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','localhost','socket.io-emitter','emit','length','forEach','includes','picklist','idField','content','toString','type','variable','variableName','customVariable','Variable','name','toLowerCase'];(function(_0x1b5a5a,_0x1c3b75){var _0x42b32d=function(_0x3d35ab){while(--_0x3d35ab){_0x1b5a5a['push'](_0x1b5a5a['shift']());}};_0x42b32d(++_0x1c3b75);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var rp=require(_0x0d8b('0x1'));var BPromise=require('bluebird');var md5=require('md5');var util=require('util');var Redis=require(_0x0d8b('0x2'));var intUtil=require(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));config['redis']=_['defaults'](config[_0x0d8b('0x7')],{'host':_0x0d8b('0x8'),'port':0x18eb});var io=require(_0x0d8b('0x9'))(new Redis(config['redis']));function emit(_0x413284,_0x284169,_0x58e4e2){io['to'](_0x413284)[_0x0d8b('0xa')](_0x284169,_0x58e4e2);}function getCustomFields(_0x348e65,_0x3b027f){var _0x1f4800={};if(_0x348e65[_0x0d8b('0xb')]>0x0){_[_0x0d8b('0xc')](_0x348e65,function(_0x2c5e9e){if(_[_0x0d8b('0xd')](['string',_0x0d8b('0xe')],_0x2c5e9e['type'])&&_0x2c5e9e[_0x0d8b('0xf')]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x2c5e9e[_0x0d8b('0x10')][_0x0d8b('0x11')]();}else if(_0x2c5e9e[_0x0d8b('0x12')]===_0x0d8b('0x13')&&_0x2c5e9e[_0x0d8b('0x14')]&&_0x2c5e9e[_0x0d8b('0xf')]&&_0x3b027f[_0x2c5e9e[_0x0d8b('0x14')]]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x3b027f[_0x2c5e9e[_0x0d8b('0x14')]][_0x0d8b('0x11')]();}else if(_0x2c5e9e[_0x0d8b('0x12')]===_0x0d8b('0x15')&&_0x2c5e9e['Variable']&&_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')]&&_0x2c5e9e[_0x0d8b('0xf')]&&_0x3b027f[_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')]['toLowerCase']()]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x3b027f[_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')][_0x0d8b('0x18')]()][_0x0d8b('0x11')]();}});}return _0x1f4800;}function createTicket(_0x18dd2d,_0x264b39,_0xa3612a,_0x4a15bf,_0x27512e,_0x23d58f,_0x196c0a){logger[_0x0d8b('0x19')](_0x0d8b('0x1a'));var _0x5b709c=_[_0x0d8b('0x1b')]({'parent_id':'','assigned_user_id':_0x264b39['id'],'ticketpriorities':_0x0d8b('0x1c'),'ticketstatus':'Open','ticket_title':intUtil['getString'](_0x4a15bf[_0x0d8b('0x1d')],_0x27512e,'\x20'),'description':intUtil['getString'](_0x4a15bf['Descriptions'],_0x27512e,'\x0a'),'contact_id':_0xa3612a['id']},getCustomFields(_0x23d58f,_0x27512e));var _0x5527d8={'method':_0x0d8b('0x1e'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x18dd2d[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x22'),'username':_0x18dd2d[_0x0d8b('0x23')],'sessionName':_0x196c0a[_0x0d8b('0x24')],'elementType':_0x0d8b('0x25'),'element':JSON[_0x0d8b('0x26')](_0x5b709c)},'json':!![]};return request(_0x5527d8)['then'](function(_0xe8bbee){if(_0xe8bbee[_0x0d8b('0x27')]){return BPromise['resolve']({'id':_0xe8bbee[_0x0d8b('0x28')]['id']});}else{throw new Error(util['format'](_0x0d8b('0x29'),JSON[_0x0d8b('0x26')](_0xe8bbee[_0x0d8b('0x2a')])));}})['catch'](function(_0x59a905){var _0x28f639=_0x59a905[_0x0d8b('0x2b')]||0x1f4;logger['error'](_0x0d8b('0x2c'),'createTicket',_0x28f639,JSON[_0x0d8b('0x26')](_0x59a905));});}function getUser(_0x4b59e5,_0x97050a,_0x48f24f){if(intUtil[_0x0d8b('0x2d')](_0x97050a)){logger['info'](_0x0d8b('0x2e'),_0x97050a);return request({'method':'GET','uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x4b59e5[_0x0d8b('0x21')]),'qs':{'operation':'query','username':_0x4b59e5['username'],'sessionName':_0x48f24f['sessionName'],'query':util[_0x0d8b('0x1f')]('SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;',_0x97050a)},'json':!![]})[_0x0d8b('0x2f')](function(_0x54f6f3){if(_0x54f6f3['success']&&_0x54f6f3[_0x0d8b('0x28')][_0x0d8b('0xb')]){logger[_0x0d8b('0x19')](_0x0d8b('0x30'));return BPromise[_0x0d8b('0x31')]({'id':_0x54f6f3[_0x0d8b('0x28')][0x0]['id'],'email':_0x54f6f3[_0x0d8b('0x28')][0x0][_0x0d8b('0x32')],'name':_0x54f6f3['result'][0x0][_0x0d8b('0x33')]+'\x20'+_0x54f6f3[_0x0d8b('0x28')]['last_name']});}else{logger[_0x0d8b('0x19')](_0x0d8b('0x34'));return BPromise[_0x0d8b('0x31')]({'id':_0x48f24f['userId'],'email':_0x4b59e5[_0x0d8b('0x23')],'name':_0x0d8b('0x35')});}})[_0x0d8b('0x36')](function(_0x31ceba){var _0x933e01=_0x31ceba['statusCode']||0x1f4;logger[_0x0d8b('0x2a')](_0x0d8b('0x2c'),'getUser',_0x933e01,JSON[_0x0d8b('0x26')](_0x31ceba));});}else{logger[_0x0d8b('0x19')](_0x0d8b('0x34'));return BPromise[_0x0d8b('0x31')]({'id':_0x48f24f[_0x0d8b('0x37')],'email':_0x4b59e5['username'],'name':'admin'})[_0x0d8b('0x36')](function(_0x5c2c04){var _0x531c55=_0x5c2c04[_0x0d8b('0x2b')]||0x1f4;logger[_0x0d8b('0x2a')](_0x0d8b('0x2c'),_0x0d8b('0x38'),_0x531c55,JSON[_0x0d8b('0x26')](_0x5c2c04));});}}function getEndUser(_0x24c789,_0x579324,_0x6e5bab,_0x6a02ad){logger[_0x0d8b('0x19')](_0x0d8b('0x39'),_0x6e5bab);return request({'method':_0x0d8b('0x3a'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x24c789['remoteUri']),'qs':{'operation':_0x0d8b('0x3b'),'username':_0x24c789[_0x0d8b('0x23')],'sessionName':_0x6a02ad[_0x0d8b('0x24')],'query':util[_0x0d8b('0x1f')]('SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;',_0x6e5bab,_0x6e5bab,_0x6e5bab,_0x6e5bab,_0x6e5bab)},'json':!![]})[_0x0d8b('0x2f')](function(_0x4b4bde){if(_0x4b4bde[_0x0d8b('0x27')]&&_0x4b4bde[_0x0d8b('0x28')][_0x0d8b('0xb')]){logger[_0x0d8b('0x19')](_0x0d8b('0x3c'));return BPromise[_0x0d8b('0x31')]({'id':_0x4b4bde[_0x0d8b('0x28')][0x0]['id'],'name':_0x4b4bde[_0x0d8b('0x28')][0x0][_0x0d8b('0x3d')]+'\x20'+_0x4b4bde[_0x0d8b('0x28')][0x0]['lastname'],'phone':_0x6e5bab});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'method':'POST','uri':util['format'](_0x0d8b('0x20'),_0x24c789[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x22'),'sessionName':_0x6a02ad['sessionName'],'elementType':'Contacts','element':JSON[_0x0d8b('0x26')]({'lastname':_0x579324,'phone':_0x6e5bab,'assigned_user_id':'\x20'})},'json':!![]})[_0x0d8b('0x2f')](function(_0x344278){logger['info'](_0x0d8b('0x3e'));return BPromise[_0x0d8b('0x31')]({'id':_0x344278['result']['id'],'name':_0x344278['result'][_0x0d8b('0x3f')],'phone':_0x344278['result'][_0x0d8b('0x40')]});})['catch'](function(_0x53f643){var _0x30ccee=_0x53f643[_0x0d8b('0x2b')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','getEndUser',_0x30ccee,JSON['stringify'](_0x53f643));});}});}function getConnection(_0x374d40){var _0x1e0498=_0x374d40[_0x0d8b('0x23')];var _0x490eda=_0x374d40[_0x0d8b('0x41')];return request({'method':_0x0d8b('0x3a'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x374d40[_0x0d8b('0x21')]),'qs':{'operation':_0x0d8b('0x42'),'username':_0x1e0498},'json':!![]})[_0x0d8b('0x2f')](function(_0x1d5067){if(_0x1d5067[_0x0d8b('0x27')]){return request({'method':_0x0d8b('0x1e'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x374d40[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x43'),'username':_0x1e0498,'accessKey':md5(_0x1d5067[_0x0d8b('0x28')][_0x0d8b('0x44')]+_0x490eda)},'json':!![]});}})[_0x0d8b('0x2f')](function(_0x1e162c){if(_0x1e162c[_0x0d8b('0x27')]){return BPromise['resolve'](_0x1e162c[_0x0d8b('0x28')]);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x374d40['id']));}})[_0x0d8b('0x36')](function(_0x113fb7){var _0x3f943a=_0x113fb7[_0x0d8b('0x2b')]||0x1f4;logger['error'](_0x0d8b('0x2c'),_0x0d8b('0x45'),_0x3f943a,JSON[_0x0d8b('0x26')](_0x113fb7));});}function request(_0x241587){logger[_0x0d8b('0x19')]('[HTTP]',JSON['stringify'](_0x241587));return rp(_0x241587);}exports['queue']=function(_0x573f4f,_0x368ede,_0xf22c3c,_0x5e3bb4,_0x4950a8,_0x44c5c1){var _0x3d3cb6,_0x5c5bd7,_0x5ef6c3,_0x900906;_0x44c5c1[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x44c5c1[_0x0d8b('0x21')]);if(_0x4950a8&&_0x4950a8[_0x0d8b('0x47')]){logger['info'](_0x0d8b('0x48'),_0x0d8b('0x49'));_0x368ede['recordingURL']=util['format'](_0x0d8b('0x4a'),_0x44c5c1[_0x0d8b('0x4b')],_0x368ede['uniqueid'],md5(_0x368ede['uniqueid']));}else{_0x368ede[_0x0d8b('0x4c')]='';}return getConnection(_0x44c5c1)[_0x0d8b('0x2f')](function(_0x377027){_0x900906=_0x377027;return getUser(_0x44c5c1,_0x5e3bb4[_0x0d8b('0x4d')],_0x900906);})['then'](function(_0x356b3d){_0x3d3cb6=_0x356b3d;logger['info']('The\x20User\x20ID\x20is:',_0x3d3cb6['id']);return getEndUser(_0x44c5c1,_0x368ede[_0x0d8b('0x4e')],_0x368ede[_0x0d8b('0x4f')],_0x900906);})['then'](function(_0x4a8f33){_0x5c5bd7=_0x4a8f33;logger[_0x0d8b('0x19')](_0x0d8b('0x50'),_0x5c5bd7['id']);return createTicket(_0x44c5c1,_0x3d3cb6,_0x5c5bd7,_0xf22c3c,_0x368ede,_0xf22c3c[_0x0d8b('0x51')],_0x900906);})[_0x0d8b('0x2f')](function(_0x3afc3a){_0x5ef6c3=_0x3afc3a;logger[_0x0d8b('0x19')](_0x0d8b('0x52'));logger[_0x0d8b('0x19')]('The\x20Ticket\x20ID\x20is:',_0x5ef6c3['id']);var _0x24a859=util[_0x0d8b('0x1f')](_0x0d8b('0x53'),_0x44c5c1[_0x0d8b('0x21')],_[_0x0d8b('0x54')](_0x5ef6c3['id'],'x')[0x1]);logger[_0x0d8b('0x19')](_0x0d8b('0x48'),_0x0d8b('0x55'));emit(util[_0x0d8b('0x1f')]('user:%s',_0x5e3bb4[_0x0d8b('0x17')]),_0x0d8b('0x56'),{'uri':_0x24a859});})[_0x0d8b('0x36')](function(_0x23de9e){logger[_0x0d8b('0x2a')]('[QUEUE]',JSON[_0x0d8b('0x26')](_0x23de9e));});};exports[_0x0d8b('0x57')]=function(_0x181d49,_0x17a87f,_0x1d6cd4,_0x59ada2,_0x4d0e7c,_0x3b1166,_0x291b83){var _0x3e4a41,_0xbbb520,_0x5a70bd,_0x199122;_0x3b1166[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x3b1166['remoteUri']);_0x3b1166[_0x0d8b('0x4b')]=intUtil['stripTrailingSlash'](_0x3b1166[_0x0d8b('0x4b')]);if(_0x291b83&&_0x291b83[_0x0d8b('0x58')]&&_0x291b83[_0x0d8b('0x58')]!==_0x0d8b('0x59')){logger[_0x0d8b('0x19')](_0x0d8b('0x5a'),'Recording\x20is\x20enabled!');_0x17a87f[_0x0d8b('0x4c')]=util['format'](_0x0d8b('0x4a'),_0x3b1166[_0x0d8b('0x4b')],_0x17a87f[_0x0d8b('0x5b')],md5(_0x17a87f[_0x0d8b('0x5b')]));}return getConnection(_0x3b1166)['then'](function(_0x19e097){_0x199122=_0x19e097;return getUser(_0x3b1166,_0x59ada2[_0x0d8b('0x4d')],_0x199122);})[_0x0d8b('0x2f')](function(_0x2332fc){_0x3e4a41=_0x2332fc;logger[_0x0d8b('0x19')](_0x0d8b('0x5c'),_0x3e4a41['id']);return getEndUser(_0x3b1166,_0x17a87f[_0x0d8b('0x5d')],_0x17a87f[_0x0d8b('0x5e')],_0x199122);})[_0x0d8b('0x2f')](function(_0x34affb){_0xbbb520=_0x34affb;logger['info']('The\x20Enduser\x20ID\x20is:',_0xbbb520['id']);return createTicket(_0x3b1166,_0x3e4a41,_0xbbb520,_0x1d6cd4,_0x17a87f,_0x1d6cd4[_0x0d8b('0x51')],_0x199122);})[_0x0d8b('0x2f')](function(_0x53e399){_0x5a70bd=_0x53e399;logger[_0x0d8b('0x19')]('Ticket\x20created!');logger['info'](_0x0d8b('0x5f'),_0x5a70bd['id']);var _0x1c4e96=util['format']('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x3b1166[_0x0d8b('0x21')],_[_0x0d8b('0x54')](_0x5a70bd['id'],'x')[0x1]);logger[_0x0d8b('0x19')](_0x0d8b('0x5a'),_0x0d8b('0x55'));emit(util[_0x0d8b('0x1f')](_0x0d8b('0x60'),_0x59ada2['name']),_0x0d8b('0x56'),{'uri':_0x1c4e96});})['catch'](function(_0x1a203e){logger[_0x0d8b('0x2a')](_0x0d8b('0x5a'),JSON[_0x0d8b('0x26')](_0x1a203e));});};exports['unmanaged']=function(_0x3fe47d,_0x4a1c4a,_0x3a356b,_0x2c6c5f,_0x1c5fe2,_0x2ebea3){var _0xc5c35f,_0x2b44e5,_0x3e927c,_0x91aa89;_0x2ebea3[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x2ebea3['remoteUri']);_0x2ebea3[_0x0d8b('0x4b')]=intUtil['stripTrailingSlash'](_0x2ebea3[_0x0d8b('0x4b')]);if(_0x1c5fe2&&_0x1c5fe2[_0x0d8b('0x47')]){logger['info']('['+_0x4a1c4a[_0x0d8b('0x61')]['toUpperCase']()+']',_0x0d8b('0x49'));_0x4a1c4a[_0x0d8b('0x4c')]=util[_0x0d8b('0x1f')](_0x0d8b('0x4a'),_0x2ebea3[_0x0d8b('0x4b')],_0x4a1c4a[_0x0d8b('0x5b')],md5(_0x4a1c4a[_0x0d8b('0x5b')]));}else{_0x4a1c4a[_0x0d8b('0x4c')]='';}return getConnection(_0x2ebea3)['then'](function(_0x10eca6){_0x91aa89=_0x10eca6;return getUser(_0x2ebea3,'',_0x91aa89);})[_0x0d8b('0x2f')](function(_0x5b2916){_0xc5c35f=_0x5b2916;logger[_0x0d8b('0x19')](_0x0d8b('0x5c'),_0xc5c35f['id']);return getEndUser(_0x2ebea3,_0x4a1c4a[_0x0d8b('0x4e')],_0x4a1c4a[_0x0d8b('0x4f')],_0x91aa89);})[_0x0d8b('0x2f')](function(_0x9e44b4){_0x2b44e5=_0x9e44b4;logger[_0x0d8b('0x19')](_0x0d8b('0x50'),_0x2b44e5['id']);return createTicket(_0x2ebea3,_0xc5c35f,_0x2b44e5,_0x3a356b,_0x4a1c4a,_0x3a356b[_0x0d8b('0x51')],_0x91aa89);})[_0x0d8b('0x2f')](function(_0xe35028){_0x3e927c=_0xe35028;logger[_0x0d8b('0x19')]('Ticket\x20created!');logger[_0x0d8b('0x19')](_0x0d8b('0x5f'),_0x3e927c['id']);})[_0x0d8b('0x36')](function(_0x58525c){logger['error']('['+_0x4a1c4a[_0x0d8b('0x61')][_0x0d8b('0x62')]()+']',JSON[_0x0d8b('0x26')](_0x58525c));});};
\ No newline at end of file
index bff99f0..655d37a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e67=['token','username','Basic\x20%s','base64','debug','[HTTP]','stringify','map','includes','string','picklist','type','nameField','customField','content','toString','custom_fields','push','idField','variable','variableName','customVariable','Variable','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','destcalleridname','destcalleridnum','integrationTab','[OUTBOUND]','replace','/api/v2','catch','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','Tags','name','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','type:user\x20role:agent\x20email:%s','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','end-user','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s'];(function(_0x2cd944,_0x8ba004){var _0x39e44e=function(_0x3d60da){while(--_0x3d60da){_0x2cd944['push'](_0x2cd944['shift']());}};_0x39e44e(++_0x8ba004);}(_0x7e67,0xa8));var _0x77e6=function(_0x2da7d5,_0x42e03f){_0x2da7d5=_0x2da7d5-0x0;var _0x49f156=_0x7e67[_0x2da7d5];return _0x49f156;};'use strict';var _=require(_0x77e6('0x0'));var rp=require(_0x77e6('0x1'));var md5=require(_0x77e6('0x2'));var util=require(_0x77e6('0x3'));var Redis=require(_0x77e6('0x4'));var intUtil=require(_0x77e6('0x5'));var config=require(_0x77e6('0x6'));var logger=require(_0x77e6('0x7'))('zendesk');config['redis']=_[_0x77e6('0x8')](config['redis'],{'host':_0x77e6('0x9'),'port':0x18eb});var io=require(_0x77e6('0xa'))(new Redis(config['redis']));function emit(_0x116bf5,_0xf02582,_0x3f4a4e){io['to'](_0x116bf5)[_0x77e6('0xb')](_0xf02582,_0x3f4a4e);}var headers={'Content-Type':_0x77e6('0xc'),'Accept':'application/json'};function getTicket(_0x1ef857,_0x200c83,_0x2bbbd5,_0x465a0f,_0x63c29c){logger[_0x77e6('0xd')](_0x77e6('0xe'));return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x10'),_0x1ef857[_0x77e6('0x11')]),'method':_0x77e6('0x12'),'body':{'ticket':_['merge']({'requester_id':_0x2bbbd5['id'],'submitter_id':_0x200c83?_0x200c83['id']:undefined,'assignee_id':_0x200c83?_0x200c83['id']:undefined,'tags':getTags(_0x465a0f[_0x77e6('0x13')],_0x77e6('0x14')),'subject':intUtil[_0x77e6('0x15')](_0x465a0f['Subjects'],_0x63c29c,'\x20'),'description':intUtil[_0x77e6('0x15')](_0x465a0f[_0x77e6('0x16')],_0x63c29c,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x465a0f['Descriptions'],_0x63c29c,'\x0a')}},getCustomFields(_0x465a0f[_0x77e6('0x17')],_0x63c29c))}})[_0x77e6('0x18')](function(_0x12f07e){logger[_0x77e6('0xd')](_0x77e6('0x19'));return _0x12f07e[_0x77e6('0x1a')];});}function getUser(_0x508c6e,_0x1f7222){if(intUtil['validateEmail'](_0x1f7222)){logger[_0x77e6('0xd')]('Getting\x20agent\x20with\x20email',_0x1f7222);return request({'uri':util[_0x77e6('0xf')]('%s/search.json',_0x508c6e[_0x77e6('0x11')]),'qs':{'query':util[_0x77e6('0xf')](_0x77e6('0x1b'),_0x1f7222)}})['then'](function(_0x59c396){if(_0x59c396['count']){logger['info']('Agent\x20found!');return _[_0x77e6('0x1c')](_0x59c396[_0x77e6('0x1d')],{'email':_0x1f7222,'role':'agent'});}else{logger[_0x77e6('0xd')](_0x77e6('0x1e'));return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x1f'),_0x508c6e[_0x77e6('0x11')])})[_0x77e6('0x18')](function(_0x2abb05){logger[_0x77e6('0xd')](_0x77e6('0x20'));return _0x2abb05[_0x77e6('0x21')];});}});}else{logger[_0x77e6('0xd')](_0x77e6('0x1e'));return request({'uri':util['format'](_0x77e6('0x1f'),_0x508c6e[_0x77e6('0x11')])})[_0x77e6('0x18')](function(_0xd2da96){logger[_0x77e6('0xd')](_0x77e6('0x20'));return _0xd2da96[_0x77e6('0x21')];});}}function getEndUser(_0x343beb,_0x42d2ab,_0x439cba){logger[_0x77e6('0xd')](_0x77e6('0x22'),_0x439cba);return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x23'),_0x343beb['remoteUri']),'qs':{'query':util[_0x77e6('0xf')](_0x77e6('0x24'),_0x439cba)}})[_0x77e6('0x18')](function(_0x225057){var _0x1cf986;if(_0x225057[_0x77e6('0x1d')]['length']){_0x225057['results']=_['filter'](_0x225057['results'],{'suspended':![],'role':_0x77e6('0x25')});if(_0x225057[_0x77e6('0x1d')][_0x77e6('0x26')]){_0x1cf986=_[_0x77e6('0x27')](_0x225057[_0x77e6('0x1d')]);}}if(_0x1cf986){logger[_0x77e6('0xd')](_0x77e6('0x28'));return _0x1cf986;}else{logger['info'](_0x77e6('0x29'));return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x2a'),_0x343beb[_0x77e6('0x11')]),'method':'POST','body':{'user':{'role':_0x77e6('0x25'),'name':util['format'](_0x77e6('0x2b'),_0x42d2ab||_0x439cba),'phone':_0x439cba}}})[_0x77e6('0x18')](function(_0xb2e7a0){logger['info'](_0x77e6('0x2c'));return _0xb2e7a0[_0x77e6('0x21')];});}});}function getAuth(_0x3224f0){var _0x2ee56b;if(_0x3224f0[_0x77e6('0x2d')]===_0x77e6('0x2e')){_0x2ee56b=util[_0x77e6('0xf')](_0x77e6('0x2f'),_0x3224f0['username'],_0x3224f0[_0x77e6('0x2e')]);}else if(_0x3224f0['authType']===_0x77e6('0x30')){_0x2ee56b=util['format']('%s/token:%s',_0x3224f0[_0x77e6('0x31')],_0x3224f0[_0x77e6('0x30')]);}return util['format'](_0x77e6('0x32'),new Buffer(_0x2ee56b)['toString'](_0x77e6('0x33')));}function request(_0x18aa62){logger[_0x77e6('0x34')](_0x77e6('0x35'),JSON[_0x77e6('0x36')](_0x18aa62));return rp(_['defaults'](_0x18aa62,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x15e187,_0x3205ae){var _0x436702=[];if(_0x15e187&&_0x15e187['length']>0x0){_0x436702=_[_0x77e6('0x37')](_0x15e187,_0x3205ae);}return _0x436702;}function getCustomFields(_0x1ac522,_0x44c211){var _0x222b8c=[];var _0x2b6d81={'custom_fields':[]};if(_0x1ac522['length']>0x0){_['forEach'](_0x1ac522,function(_0x1309b8){if(_[_0x77e6('0x38')]([_0x77e6('0x39'),_0x77e6('0x3a')],_0x1309b8[_0x77e6('0x3b')])&&_0x1309b8[_0x77e6('0x3c')]&&!_0x1309b8[_0x77e6('0x3d')]){_0x2b6d81[_0x1309b8[_0x77e6('0x3c')]['toLowerCase']()]=_0x1309b8[_0x77e6('0x3e')][_0x77e6('0x3f')]();}else if(_[_0x77e6('0x38')](['string',_0x77e6('0x3a')],_0x1309b8['type'])&&_0x1309b8['idField']&&_0x1309b8[_0x77e6('0x3d')]){_0x2b6d81[_0x77e6('0x40')][_0x77e6('0x41')]({'id':_0x1309b8[_0x77e6('0x42')],'value':_0x1309b8[_0x77e6('0x3e')][_0x77e6('0x3f')]()});}else if(_0x1309b8[_0x77e6('0x3b')]===_0x77e6('0x43')&&_0x1309b8[_0x77e6('0x44')]&&_0x1309b8['idField']&&_0x1309b8['customField']){_0x44c211[_0x1309b8[_0x77e6('0x44')]]&&_0x2b6d81[_0x77e6('0x40')]['push']({'id':_0x1309b8[_0x77e6('0x42')],'value':_0x44c211[_0x1309b8[_0x77e6('0x44')]][_0x77e6('0x3f')]()});}else if(_0x1309b8[_0x77e6('0x3b')]===_0x77e6('0x45')&&_0x1309b8[_0x77e6('0x46')]&&_0x1309b8[_0x77e6('0x46')][_0x77e6('0x14')]&&_0x1309b8[_0x77e6('0x42')]&&_0x1309b8[_0x77e6('0x3d')]){_0x44c211[_0x1309b8[_0x77e6('0x46')][_0x77e6('0x14')]['toLowerCase']()]&&_0x2b6d81[_0x77e6('0x40')]['push']({'id':_0x1309b8['idField'],'value':_0x44c211[_0x1309b8[_0x77e6('0x46')][_0x77e6('0x14')][_0x77e6('0x47')]()]['toString']()});}});}return _0x2b6d81;}exports[_0x77e6('0x48')]=function(_0x38844e,_0xd1a877,_0x6b0c78,_0x2e55ca,_0x5696d4,_0x4b3971){var _0x3c18ae,_0x88ab1e;_0x4b3971[_0x77e6('0x11')]=intUtil['stripTrailingSlash'](_0x4b3971[_0x77e6('0x11')]);_0x4b3971[_0x77e6('0x49')]=intUtil[_0x77e6('0x4a')](_0x4b3971['serverUrl']);if(_0x5696d4&&_0x5696d4[_0x77e6('0x4b')]){logger[_0x77e6('0xd')](_0x77e6('0x4c'),_0x77e6('0x4d'));_0xd1a877[_0x77e6('0x4e')]=util[_0x77e6('0xf')](_0x77e6('0x4f'),_0x4b3971[_0x77e6('0x49')],_0xd1a877[_0x77e6('0x50')],md5(_0xd1a877['uniqueid']));}else{_0xd1a877['recordingURL']='';}headers[_0x77e6('0x51')]=getAuth(_0x4b3971);return getUser(_0x4b3971,_0x2e55ca[_0x77e6('0x52')])['then'](function(_0x4a4bdd){_0x3c18ae=_0x4a4bdd;logger[_0x77e6('0xd')](_0x77e6('0x53'),_0x3c18ae['id']);return getEndUser(_0x4b3971,_0xd1a877[_0x77e6('0x54')],_0xd1a877[_0x77e6('0x55')]);})[_0x77e6('0x18')](function(_0x3e48db){_0x88ab1e=_0x3e48db;logger[_0x77e6('0xd')](_0x77e6('0x56'),_0x88ab1e['id']);return getTicket(_0x4b3971,_0x3c18ae,_0x88ab1e,_0x6b0c78,_0xd1a877);})[_0x77e6('0x18')](function(_0x11a6f2){if(_0x11a6f2){logger[_0x77e6('0xd')]('The\x20Ticket\x20ID\x20is:',_0x11a6f2['id']);switch(_0x4b3971[_0x77e6('0x3b')]){case'integrationTab':logger[_0x77e6('0xd')](_0x77e6('0x4c'),_0x77e6('0x57'));return request({'uri':util['format'](_0x77e6('0x58'),_0x4b3971['remoteUri'],_0x3c18ae['id'],_0x11a6f2['id']),'method':_0x77e6('0x12')});case _0x77e6('0x59'):logger[_0x77e6('0xd')](_0x77e6('0x4c'),_0x77e6('0x5a'));emit(util[_0x77e6('0xf')](_0x77e6('0x5b'),_0x2e55ca[_0x77e6('0x14')]),'trigger:browser:url',{'uri':util[_0x77e6('0xf')](_0x77e6('0x5c'),_0x4b3971[_0x77e6('0x11')]['replace']('/api/v2',''),_0x11a6f2['id'])});break;default:logger[_0x77e6('0x5d')](_0x77e6('0x4c'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x5e4691){logger['error'](_0x77e6('0x5e'),util[_0x77e6('0x5f')](_0x5e4691,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x19f6e4,_0x509081,_0x1bd929,_0x26f38b,_0x3012a3,_0x2603cc,_0x11c2fb){var _0x2a8e1a,_0x4c8ded;_0x2603cc[_0x77e6('0x11')]=intUtil['stripTrailingSlash'](_0x2603cc[_0x77e6('0x11')]);_0x2603cc[_0x77e6('0x49')]=intUtil[_0x77e6('0x4a')](_0x2603cc['serverUrl']);if(_0x11c2fb&&_0x11c2fb[_0x77e6('0x60')]&&_0x11c2fb[_0x77e6('0x60')]!==_0x77e6('0x61')){logger[_0x77e6('0xd')]('[OUTBOUND]',_0x77e6('0x4d'));_0x509081[_0x77e6('0x4e')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2603cc[_0x77e6('0x49')],_0x509081[_0x77e6('0x50')],md5(_0x509081[_0x77e6('0x50')]));}headers[_0x77e6('0x51')]=getAuth(_0x2603cc);return getUser(_0x2603cc,_0x26f38b[_0x77e6('0x52')])[_0x77e6('0x18')](function(_0x160a3e){_0x2a8e1a=_0x160a3e;logger[_0x77e6('0xd')]('The\x20User\x20ID\x20is:',_0x2a8e1a['id']);return getEndUser(_0x2603cc,_0x509081[_0x77e6('0x62')],_0x509081[_0x77e6('0x63')]);})[_0x77e6('0x18')](function(_0x2c16aa){_0x4c8ded=_0x2c16aa;logger[_0x77e6('0xd')](_0x77e6('0x56'),_0x4c8ded['id']);return getTicket(_0x2603cc,_0x2a8e1a,_0x4c8ded,_0x1bd929,_0x509081);})[_0x77e6('0x18')](function(_0x4e30d0){if(_0x4e30d0){logger[_0x77e6('0xd')]('The\x20Ticket\x20ID\x20is:',_0x4e30d0['id']);switch(_0x2603cc[_0x77e6('0x3b')]){case _0x77e6('0x64'):logger[_0x77e6('0xd')]('[OUTBOUND]',_0x77e6('0x57'));return request({'uri':util[_0x77e6('0xf')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x2603cc['remoteUri'],_0x2a8e1a['id'],_0x4e30d0['id']),'method':_0x77e6('0x12')});case _0x77e6('0x59'):logger[_0x77e6('0xd')](_0x77e6('0x65'),_0x77e6('0x5a'));emit(util['format'](_0x77e6('0x5b'),_0x26f38b[_0x77e6('0x14')]),'trigger:browser:url',{'uri':util[_0x77e6('0xf')](_0x77e6('0x5c'),_0x2603cc[_0x77e6('0x11')][_0x77e6('0x66')](_0x77e6('0x67'),''),_0x4e30d0['id'])});break;default:logger[_0x77e6('0x5d')](_0x77e6('0x65'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x77e6('0x68')](function(_0x4ce3b9){logger[_0x77e6('0x5d')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x4ce3b9,{'showHidden':!![],'depth':null}));});};exports[_0x77e6('0x69')]=function(_0x36e74a,_0x1ef905,_0x35d455,_0x256ca5,_0x54e885,_0x8fb3f7){var _0x2a6f44,_0x3c82d0;_0x8fb3f7[_0x77e6('0x11')]=intUtil[_0x77e6('0x4a')](_0x8fb3f7[_0x77e6('0x11')]);_0x8fb3f7[_0x77e6('0x49')]=intUtil[_0x77e6('0x4a')](_0x8fb3f7[_0x77e6('0x49')]);if(_0x54e885&&_0x54e885[_0x77e6('0x4b')]){logger['info']('['+_0x1ef905[_0x77e6('0x6a')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1ef905['recordingURL']=util[_0x77e6('0xf')](_0x77e6('0x4f'),_0x8fb3f7['serverUrl'],_0x1ef905[_0x77e6('0x50')],md5(_0x1ef905['uniqueid']));}else{_0x1ef905[_0x77e6('0x4e')]='';}headers[_0x77e6('0x51')]=getAuth(_0x8fb3f7);return getUser(_0x8fb3f7)[_0x77e6('0x18')](function(_0x3f21f8){_0x2a6f44=_0x3f21f8;logger[_0x77e6('0xd')](_0x77e6('0x53'),_0x2a6f44['id']);return getEndUser(_0x8fb3f7,_0x1ef905[_0x77e6('0x54')],_0x1ef905[_0x77e6('0x55')]);})[_0x77e6('0x18')](function(_0x30acc0){_0x3c82d0=_0x30acc0;logger[_0x77e6('0xd')]('The\x20Enduser\x20ID\x20is:',_0x3c82d0['id']);return getTicket(_0x8fb3f7,_0x2a6f44,_0x3c82d0,_0x35d455,_0x1ef905);})[_0x77e6('0x18')](function(_0x307aaf){if(_0x307aaf){logger[_0x77e6('0xd')]('The\x20Ticket\x20ID\x20is:',_0x307aaf['id']);}})['catch'](function(_0xffbf27){logger[_0x77e6('0x5d')]('['+_0x1ef905[_0x77e6('0x6a')][_0x77e6('0x6b')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x77e6('0x5f')](_0xffbf27,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x660c=['ioredis','./util','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','POST','merge','name','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','count','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','results','filter','end-user','length','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','authType','password','%s:%s','username','%s/token:%s','token','Basic\x20%s','toString','[HTTP]','stringify','GET','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','idField','variable','variableName','custom_fields','push','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','none','[OUTBOUND]','destcalleridname','destcalleridnum','integrationTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x660c,0xd1));var _0xc660=function(_0x59cab9,_0x3812a4){_0x59cab9=_0x59cab9-0x0;var _0x14d49e=_0x660c[_0x59cab9];return _0x14d49e;};'use strict';var _=require(_0xc660('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require('util');var Redis=require(_0xc660('0x1'));var intUtil=require(_0xc660('0x2'));var config=require('../../../../config/environment');var logger=require(_0xc660('0x3'))(_0xc660('0x4'));config[_0xc660('0x5')]=_[_0xc660('0x6')](config[_0xc660('0x5')],{'host':_0xc660('0x7'),'port':0x18eb});var io=require(_0xc660('0x8'))(new Redis(config[_0xc660('0x5')]));function emit(_0x39c551,_0x3d9e45,_0x356464){io['to'](_0x39c551)[_0xc660('0x9')](_0x3d9e45,_0x356464);}var headers={'Content-Type':_0xc660('0xa'),'Accept':_0xc660('0xa')};function getTicket(_0x1d362b,_0x44fcd3,_0x40fa71,_0x52a449,_0x1a55b8){logger[_0xc660('0xb')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xc660('0xc')](_0xc660('0xd'),_0x1d362b['remoteUri']),'method':_0xc660('0xe'),'body':{'ticket':_[_0xc660('0xf')]({'requester_id':_0x40fa71['id'],'submitter_id':_0x44fcd3?_0x44fcd3['id']:undefined,'assignee_id':_0x44fcd3?_0x44fcd3['id']:undefined,'tags':getTags(_0x52a449['Tags'],_0xc660('0x10')),'subject':intUtil[_0xc660('0x11')](_0x52a449['Subjects'],_0x1a55b8,'\x20'),'description':intUtil[_0xc660('0x11')](_0x52a449[_0xc660('0x12')],_0x1a55b8,'\x0a'),'comment':{'public':![],'body':intUtil[_0xc660('0x11')](_0x52a449[_0xc660('0x12')],_0x1a55b8,'\x0a')}},getCustomFields(_0x52a449[_0xc660('0x13')],_0x1a55b8))}})[_0xc660('0x14')](function(_0x30286c){logger[_0xc660('0xb')](_0xc660('0x15'));return _0x30286c[_0xc660('0x16')];});}function getUser(_0x382c43,_0x170ce7){if(intUtil[_0xc660('0x17')](_0x170ce7)){logger[_0xc660('0xb')](_0xc660('0x18'),_0x170ce7);return request({'uri':util[_0xc660('0xc')](_0xc660('0x19'),_0x382c43[_0xc660('0x1a')]),'qs':{'query':util[_0xc660('0xc')]('type:user\x20role:agent\x20email:%s',_0x170ce7)}})[_0xc660('0x14')](function(_0x302db6){if(_0x302db6[_0xc660('0x1b')]){logger['info']('Agent\x20found!');return _[_0xc660('0x1c')](_0x302db6['results'],{'email':_0x170ce7,'role':_0xc660('0x1d')});}else{logger[_0xc660('0xb')](_0xc660('0x1e'));return request({'uri':util['format'](_0xc660('0x1f'),_0x382c43['remoteUri'])})['then'](function(_0x423b4c){logger[_0xc660('0xb')](_0xc660('0x20'));return _0x423b4c[_0xc660('0x21')];});}});}else{logger[_0xc660('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xc660('0x1f'),_0x382c43[_0xc660('0x1a')])})['then'](function(_0x13a579){logger[_0xc660('0xb')](_0xc660('0x20'));return _0x13a579[_0xc660('0x21')];});}}function getEndUser(_0x5bb94e,_0x496680,_0x2b1d97){logger[_0xc660('0xb')]('Searching\x20enduser\x20with\x20phone',_0x2b1d97);return request({'uri':util[_0xc660('0xc')](_0xc660('0x19'),_0x5bb94e['remoteUri']),'qs':{'query':util[_0xc660('0xc')]('type:user\x20role:end-user\x20phone:%s',_0x2b1d97)}})[_0xc660('0x14')](function(_0x46a3be){var _0x5ea815;if(_0x46a3be[_0xc660('0x22')]['length']){_0x46a3be[_0xc660('0x22')]=_[_0xc660('0x23')](_0x46a3be[_0xc660('0x22')],{'suspended':![],'role':_0xc660('0x24')});if(_0x46a3be[_0xc660('0x22')][_0xc660('0x25')]){_0x5ea815=_[_0xc660('0x26')](_0x46a3be['results']);}}if(_0x5ea815){logger[_0xc660('0xb')]('Enduser\x20found!');return _0x5ea815;}else{logger['info'](_0xc660('0x27'));return request({'uri':util[_0xc660('0xc')]('%s/users.json',_0x5bb94e['remoteUri']),'method':_0xc660('0xe'),'body':{'user':{'role':_0xc660('0x24'),'name':util['format']('Caller\x20-\x20%s',_0x496680||_0x2b1d97),'phone':_0x2b1d97}}})[_0xc660('0x14')](function(_0x2094b7){logger['info'](_0xc660('0x28'));return _0x2094b7[_0xc660('0x21')];});}});}function getAuth(_0x1e160e){var _0x37ee76;if(_0x1e160e[_0xc660('0x29')]===_0xc660('0x2a')){_0x37ee76=util[_0xc660('0xc')](_0xc660('0x2b'),_0x1e160e[_0xc660('0x2c')],_0x1e160e[_0xc660('0x2a')]);}else if(_0x1e160e['authType']==='token'){_0x37ee76=util[_0xc660('0xc')](_0xc660('0x2d'),_0x1e160e[_0xc660('0x2c')],_0x1e160e[_0xc660('0x2e')]);}return util[_0xc660('0xc')](_0xc660('0x2f'),new Buffer(_0x37ee76)[_0xc660('0x30')]('base64'));}function request(_0x17173c){logger['debug'](_0xc660('0x31'),JSON[_0xc660('0x32')](_0x17173c));return rp(_[_0xc660('0x6')](_0x17173c,{'method':_0xc660('0x33'),'headers':headers,'json':!![]}));}function getTags(_0x437452,_0x4fde6b){var _0x3c8d0d=[];if(_0x437452&&_0x437452[_0xc660('0x25')]>0x0){_0x3c8d0d=_['map'](_0x437452,_0x4fde6b);}return _0x3c8d0d;}function getCustomFields(_0x2578d4,_0x28307a){var _0x39a25d=[];var _0x451a04={'custom_fields':[]};if(_0x2578d4[_0xc660('0x25')]>0x0){_[_0xc660('0x34')](_0x2578d4,function(_0x37ff9a){if(_[_0xc660('0x35')]([_0xc660('0x36'),_0xc660('0x37')],_0x37ff9a[_0xc660('0x38')])&&_0x37ff9a['nameField']&&!_0x37ff9a[_0xc660('0x39')]){_0x451a04[_0x37ff9a[_0xc660('0x3a')][_0xc660('0x3b')]()]=_0x37ff9a[_0xc660('0x3c')][_0xc660('0x30')]();}else if(_['includes'](['string',_0xc660('0x37')],_0x37ff9a[_0xc660('0x38')])&&_0x37ff9a[_0xc660('0x3d')]&&_0x37ff9a[_0xc660('0x39')]){_0x451a04['custom_fields']['push']({'id':_0x37ff9a[_0xc660('0x3d')],'value':_0x37ff9a[_0xc660('0x3c')][_0xc660('0x30')]()});}else if(_0x37ff9a[_0xc660('0x38')]===_0xc660('0x3e')&&_0x37ff9a['variableName']&&_0x37ff9a[_0xc660('0x3d')]&&_0x37ff9a[_0xc660('0x39')]){_0x28307a[_0x37ff9a[_0xc660('0x3f')]]&&_0x451a04[_0xc660('0x40')][_0xc660('0x41')]({'id':_0x37ff9a[_0xc660('0x3d')],'value':_0x28307a[_0x37ff9a[_0xc660('0x3f')]][_0xc660('0x30')]()});}else if(_0x37ff9a[_0xc660('0x38')]==='customVariable'&&_0x37ff9a[_0xc660('0x42')]&&_0x37ff9a[_0xc660('0x42')]['name']&&_0x37ff9a['idField']&&_0x37ff9a[_0xc660('0x39')]){_0x28307a[_0x37ff9a['Variable'][_0xc660('0x10')]['toLowerCase']()]&&_0x451a04['custom_fields'][_0xc660('0x41')]({'id':_0x37ff9a[_0xc660('0x3d')],'value':_0x28307a[_0x37ff9a[_0xc660('0x42')][_0xc660('0x10')]['toLowerCase']()]['toString']()});}});}return _0x451a04;}exports[_0xc660('0x43')]=function(_0x369e57,_0xb18ad0,_0x1b6448,_0x3c31b3,_0x70a319,_0x4e5326){var _0x5b8cd9,_0x14c142;_0x4e5326[_0xc660('0x1a')]=intUtil[_0xc660('0x44')](_0x4e5326['remoteUri']);_0x4e5326[_0xc660('0x45')]=intUtil['stripTrailingSlash'](_0x4e5326['serverUrl']);if(_0x70a319&&_0x70a319[_0xc660('0x46')]){logger['info'](_0xc660('0x47'),_0xc660('0x48'));_0xb18ad0[_0xc660('0x49')]=util[_0xc660('0xc')](_0xc660('0x4a'),_0x4e5326[_0xc660('0x45')],_0xb18ad0[_0xc660('0x4b')],md5(_0xb18ad0[_0xc660('0x4b')]));}else{_0xb18ad0['recordingURL']='';}headers[_0xc660('0x4c')]=getAuth(_0x4e5326);return getUser(_0x4e5326,_0x3c31b3[_0xc660('0x4d')])[_0xc660('0x14')](function(_0xdf4cc2){_0x5b8cd9=_0xdf4cc2;logger[_0xc660('0xb')](_0xc660('0x4e'),_0x5b8cd9['id']);return getEndUser(_0x4e5326,_0xb18ad0[_0xc660('0x4f')],_0xb18ad0[_0xc660('0x50')]);})[_0xc660('0x14')](function(_0x521313){_0x14c142=_0x521313;logger['info'](_0xc660('0x51'),_0x14c142['id']);return getTicket(_0x4e5326,_0x5b8cd9,_0x14c142,_0x1b6448,_0xb18ad0);})['then'](function(_0x25aae6){if(_0x25aae6){logger[_0xc660('0xb')](_0xc660('0x52'),_0x25aae6['id']);switch(_0x4e5326[_0xc660('0x38')]){case'integrationTab':logger[_0xc660('0xb')](_0xc660('0x47'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xc660('0xc')](_0xc660('0x53'),_0x4e5326[_0xc660('0x1a')],_0x5b8cd9['id'],_0x25aae6['id']),'method':_0xc660('0xe')});case _0xc660('0x54'):logger['info'](_0xc660('0x47'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc660('0xc')](_0xc660('0x55'),_0x3c31b3[_0xc660('0x10')]),_0xc660('0x56'),{'uri':util['format'](_0xc660('0x57'),_0x4e5326['remoteUri'][_0xc660('0x58')]('/api/v2',''),_0x25aae6['id'])});break;default:logger[_0xc660('0x59')]('[QUEUE]',_0xc660('0x5a'));}}})['catch'](function(_0x1bfebc){logger[_0xc660('0x59')](_0xc660('0x5b'),util[_0xc660('0x5c')](_0x1bfebc,{'showHidden':!![],'depth':null}));});};exports[_0xc660('0x5d')]=function(_0x13d3f7,_0xc79379,_0x4ba11d,_0x398bef,_0x856c56,_0x49c678,_0x565106){var _0x5e67e7,_0x528710;_0x49c678[_0xc660('0x1a')]=intUtil[_0xc660('0x44')](_0x49c678[_0xc660('0x1a')]);_0x49c678[_0xc660('0x45')]=intUtil[_0xc660('0x44')](_0x49c678[_0xc660('0x45')]);if(_0x565106&&_0x565106['recordingFormat']&&_0x565106['recordingFormat']!==_0xc660('0x5e')){logger[_0xc660('0xb')](_0xc660('0x5f'),_0xc660('0x48'));_0xc79379[_0xc660('0x49')]=util['format'](_0xc660('0x4a'),_0x49c678[_0xc660('0x45')],_0xc79379['uniqueid'],md5(_0xc79379[_0xc660('0x4b')]));}headers[_0xc660('0x4c')]=getAuth(_0x49c678);return getUser(_0x49c678,_0x398bef[_0xc660('0x4d')])[_0xc660('0x14')](function(_0x2bbfa9){_0x5e67e7=_0x2bbfa9;logger['info'](_0xc660('0x4e'),_0x5e67e7['id']);return getEndUser(_0x49c678,_0xc79379[_0xc660('0x60')],_0xc79379[_0xc660('0x61')]);})[_0xc660('0x14')](function(_0x5014c5){_0x528710=_0x5014c5;logger[_0xc660('0xb')](_0xc660('0x51'),_0x528710['id']);return getTicket(_0x49c678,_0x5e67e7,_0x528710,_0x4ba11d,_0xc79379);})['then'](function(_0x477a4d){if(_0x477a4d){logger[_0xc660('0xb')](_0xc660('0x52'),_0x477a4d['id']);switch(_0x49c678[_0xc660('0x38')]){case _0xc660('0x62'):logger[_0xc660('0xb')](_0xc660('0x5f'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xc660('0xc')](_0xc660('0x53'),_0x49c678[_0xc660('0x1a')],_0x5e67e7['id'],_0x477a4d['id']),'method':_0xc660('0xe')});case _0xc660('0x54'):logger[_0xc660('0xb')]('[OUTBOUND]',_0xc660('0x63'));emit(util['format'](_0xc660('0x55'),_0x398bef[_0xc660('0x10')]),'trigger:browser:url',{'uri':util[_0xc660('0xc')]('%s/agent/tickets/%s',_0x49c678['remoteUri'][_0xc660('0x58')]('/api/v2',''),_0x477a4d['id'])});break;default:logger['error']('[OUTBOUND]',_0xc660('0x5a'));}}})[_0xc660('0x64')](function(_0x108cb4){logger[_0xc660('0x59')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x108cb4,{'showHidden':!![],'depth':null}));});};exports[_0xc660('0x65')]=function(_0xab7267,_0x2128db,_0x33cd82,_0x205b85,_0x5b2e09,_0x51b137){var _0x10da17,_0x19d855;_0x51b137[_0xc660('0x1a')]=intUtil[_0xc660('0x44')](_0x51b137[_0xc660('0x1a')]);_0x51b137[_0xc660('0x45')]=intUtil[_0xc660('0x44')](_0x51b137[_0xc660('0x45')]);if(_0x5b2e09&&_0x5b2e09[_0xc660('0x46')]){logger[_0xc660('0xb')]('['+_0x2128db[_0xc660('0x66')][_0xc660('0x67')]()+']','Recording\x20is\x20enabled!');_0x2128db[_0xc660('0x49')]=util[_0xc660('0xc')](_0xc660('0x4a'),_0x51b137[_0xc660('0x45')],_0x2128db[_0xc660('0x4b')],md5(_0x2128db[_0xc660('0x4b')]));}else{_0x2128db[_0xc660('0x49')]='';}headers[_0xc660('0x4c')]=getAuth(_0x51b137);return getUser(_0x51b137)[_0xc660('0x14')](function(_0x2be4aa){_0x10da17=_0x2be4aa;logger['info'](_0xc660('0x4e'),_0x10da17['id']);return getEndUser(_0x51b137,_0x2128db['calleridname'],_0x2128db['calleridnum']);})[_0xc660('0x14')](function(_0x3f0b4e){_0x19d855=_0x3f0b4e;logger[_0xc660('0xb')](_0xc660('0x51'),_0x19d855['id']);return getTicket(_0x51b137,_0x10da17,_0x19d855,_0x33cd82,_0x2128db);})[_0xc660('0x14')](function(_0x2ebe5a){if(_0x2ebe5a){logger[_0xc660('0xb')](_0xc660('0x52'),_0x2ebe5a['id']);}})[_0xc660('0x64')](function(_0x150797){logger[_0xc660('0x59')]('['+_0x2128db[_0xc660('0x66')]['toUpperCase']()+']'+_0xc660('0x68'),util[_0xc660('0x5c')](_0x150797,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 91a54a4..c8a512c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1acc=['starttime','lastevent','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','timeout','Call_Start_Time','outbound','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','SUCCESS','Call\x20created!','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','[QUEUE]','recordingFormat','none','/downloads?type=uniqueid&token=','com','destcalleridname','Outbound','[OUTBOUND]','unmanaged','toUpperCase','The\x20User\x20ID\x20is:','request-promise','util','./util','ioredis','bluebird','../../../../config/environment','zoho','redis','socket.io-emitter','debug','[HTTP]','stringify','length','forEach','includes','string','picklist','type','idField','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','add','seconds','catch','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','format','https://www.zohoapis.%s/crm/v2/users','users','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','then','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','code','details','log','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','Leads','nothing','contact','lead','/crm/v2/Leads/search?criteria=((Phone:equals:','Owner','administrator','Subjects','Description','getString','Descriptions','Who_Id','Full_Name','Last_Name','First_Name','$se_module','talktime','utc','mm:ss','endtime','YYYY-MM-DDTHH:mm:ss','diff'];(function(_0x5f4f63,_0x5933cc){var _0x3d44ac=function(_0x2e8a6c){while(--_0x2e8a6c){_0x5f4f63['push'](_0x5f4f63['shift']());}};_0x3d44ac(++_0x5933cc);}(_0x1acc,0x15f));var _0xc1ac=function(_0x1c2478,_0x466bf3){_0x1c2478=_0x1c2478-0x0;var _0x36c4af=_0x1acc[_0x1c2478];return _0x36c4af;};'use strict';var _=require('lodash');var rp=require(_0xc1ac('0x0'));var md5=require('md5');var util=require(_0xc1ac('0x1'));var intUtil=require(_0xc1ac('0x2'));var moment=require('moment');var Redis=require(_0xc1ac('0x3'));var BPromise=require(_0xc1ac('0x4'));var config=require(_0xc1ac('0x5'));var logger=require('../../../../config/logger')(_0xc1ac('0x6'));config['redis']=_['defaults'](config[_0xc1ac('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xc1ac('0x8'))(new Redis(config[_0xc1ac('0x7')]));function emit(_0xae3cd4,_0x1070ab,_0x336d32){io['to'](_0xae3cd4)['emit'](_0x1070ab,_0x336d32);}function request(_0x4f660c){logger[_0xc1ac('0x9')](_0xc1ac('0xa'),JSON[_0xc1ac('0xb')](_0x4f660c));return rp(_0x4f660c);}function getCustomFields(_0x543149,_0x39383c){var _0x353cb4={};if(_0x543149[_0xc1ac('0xc')]>0x0){_[_0xc1ac('0xd')](_0x543149,function(_0x14167c){if(_[_0xc1ac('0xe')]([_0xc1ac('0xf'),_0xc1ac('0x10')],_0x14167c[_0xc1ac('0x11')])&&_0x14167c[_0xc1ac('0x12')]){_0x353cb4[_0x14167c[_0xc1ac('0x12')]]=_0x14167c[_0xc1ac('0x13')]['toString']();}else if(_0x14167c[_0xc1ac('0x11')]===_0xc1ac('0x14')&&_0x14167c[_0xc1ac('0x15')]&&_0x14167c[_0xc1ac('0x12')]&&_0x39383c[_0x14167c['variableName']]){_0x353cb4[_0x14167c[_0xc1ac('0x12')]]=_0x39383c[_0x14167c[_0xc1ac('0x15')]][_0xc1ac('0x16')]();}else if(_0x14167c[_0xc1ac('0x11')]===_0xc1ac('0x17')&&_0x14167c['Variable']&&_0x14167c[_0xc1ac('0x18')]['name']&&_0x14167c[_0xc1ac('0x12')]&&_0x39383c[_0x14167c[_0xc1ac('0x18')]['name']['toLowerCase']()]){_0x353cb4[_0x14167c[_0xc1ac('0x12')]]=_0x39383c[_0x14167c['Variable'][_0xc1ac('0x19')][_0xc1ac('0x1a')]()][_0xc1ac('0x16')]();}});}return _0x353cb4;}function getName(_0x27a717){if(_0x27a717[_0xc1ac('0x1b')]('\x20')>0x0){var _0x53a0c7=_0x27a717[_0xc1ac('0x1c')](/ (.+)/);if(_0x53a0c7[0x1]){return _0x53a0c7;}}return[_0x27a717,_0x27a717];}var accountsTokens={};function getAccessToken(_0x13df14){return new Promise(function(_0x15a3d3,_0x287dfc){if(!_[_0xc1ac('0x1d')](accountsTokens[_0x13df14['id']])&&!_[_0xc1ac('0x1d')](accountsTokens[_0x13df14['id']][_0xc1ac('0x1e')])){if(moment()[_0xc1ac('0x1f')](accountsTokens[_0x13df14['id']][_0xc1ac('0x20')])){_0x15a3d3(accountsTokens[_0x13df14['id']][_0xc1ac('0x1e')]);}}var _0x445c73;switch(_0x13df14[_0xc1ac('0x21')]){case'US':_0x445c73='https://accounts.zoho.com';break;case'AU':_0x445c73=_0xc1ac('0x22');break;case'EU':_0x445c73=_0xc1ac('0x23');break;case'IN':_0x445c73='https://accounts.zoho.in';break;case'CN':_0x445c73='https://accounts.zoho.com.cn';break;default:_0x445c73=_0xc1ac('0x23');break;}var _0x238361={'method':_0xc1ac('0x24'),'uri':_0x445c73+_0xc1ac('0x25'),'qs':{'refresh_token':_0x13df14['refreshToken'],'client_id':_0x13df14[_0xc1ac('0x26')],'client_secret':_0x13df14[_0xc1ac('0x27')],'grant_type':_0xc1ac('0x28')},'json':!![]};return rp(_0x238361)['then'](function(_0x3fe6ac){accountsTokens[_0x13df14['id']]={'access_token':_0x3fe6ac[_0xc1ac('0x1e')],'expires_in':moment()[_0xc1ac('0x29')](_0x3fe6ac[_0xc1ac('0x20')],_0xc1ac('0x2a'))};_0x15a3d3(_0x3fe6ac[_0xc1ac('0x1e')]);})[_0xc1ac('0x2b')](function(_0x514837){logger['error'](_0xc1ac('0x2c'),_0x514837[_0xc1ac('0x2d')]);_0x287dfc(_0x514837);});});}function getUser(_0x343c94,_0x39e1ea,_0x2f40ef,_0x23fd2b){logger[_0xc1ac('0x2e')](_0xc1ac('0x2f'));return request({'method':'GET','uri':util[_0xc1ac('0x30')](_0xc1ac('0x31'),_0x39e1ea),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x343c94},'json':!![]})['then'](function(_0x6e23e1){if(_0x6e23e1[_0xc1ac('0x32')]){var _0x3e945d=-0x1;if(_['isArrayLikeObject'](_0x6e23e1['users'])){if(!_['isNil'](_0x23fd2b)){_0x3e945d=_[_0xc1ac('0x33')](_0x6e23e1[_0xc1ac('0x32')],function(_0x5b9cc8){return _0x5b9cc8[_0xc1ac('0x34')]===_0x23fd2b;});}if(_0x3e945d>=0x0){logger['info'](_0xc1ac('0x35'));}else{logger[_0xc1ac('0x2e')](_0xc1ac('0x36'));_0x3e945d=_['findIndex'](_0x6e23e1[_0xc1ac('0x32')],function(_0x26e326){return _0x26e326[_0xc1ac('0x37')][_0xc1ac('0x19')]==='Administrator';});}return _0x6e23e1['users'][_0x3e945d];}else{if(_0x6e23e1['user']['profile'][_0xc1ac('0x19')]===_0xc1ac('0x38')){logger[_0xc1ac('0x2e')]('Using\x20the\x20admin\x20account!');user=_0x6e23e1[_0xc1ac('0x39')];return user;}else{logger[_0xc1ac('0x3a')](_0xc1ac('0x3b'),JSON[_0xc1ac('0xb')](_0x6e23e1));throw new Error(_0xc1ac('0x3c')+JSON['stringify'](_0x6e23e1));}}}else{logger[_0xc1ac('0x3a')]('The\x20failing\x20result\x20is',JSON[_0xc1ac('0xb')](_0x6e23e1));throw new Error(_0xc1ac('0x3c')+JSON[_0xc1ac('0xb')](_0x6e23e1));}})['catch'](function(_0x239f74){console['error'](_0x239f74);});}function getZohoUser(_0x110637,_0x52625b){return new BPromise(function(_0x530d6d,_0x129fef){request(_0x110637)[_0xc1ac('0x3d')](function(_0x336b91){var _0x50aba5=null;if(_0x336b91){_0x50aba5=_0x336b91[_0xc1ac('0x3e')][0x0];_0x50aba5[_0xc1ac('0x3f')]=_0x52625b;}_0x530d6d(_0x50aba5);})[_0xc1ac('0x2b')](function(_0x3ad66b){_0x129fef(_0x3ad66b);});});}function createEndUser(_0x3c8484,_0xe10905,_0x4bbbd3,_0x19a3b6,_0x17842e,_0x37f0f0){var _0x4bbbd3=getName(_0x4bbbd3);return request({'method':_0xc1ac('0x24'),'uri':_0xc1ac('0x40')+_0xe10905+_0xc1ac('0x41')+_[_0xc1ac('0x42')](_0x37f0f0[_0xc1ac('0x43')])+'s','body':{'data':[{'Last_Name':_0x4bbbd3[0x1],'First_Name':_0x4bbbd3[0x0],'Phone':_0x19a3b6,'Owner':{'name':!_[_0xc1ac('0x1d')](_0x17842e['role'][_0xc1ac('0x19')])?_0x17842e[_0xc1ac('0x44')][_0xc1ac('0x19')]:!_['isNil'](_0x17842e[_0xc1ac('0x45')])?_0x17842e['first_name']+'\x20'+_0x17842e[_0xc1ac('0x46')]:_0x17842e[_0xc1ac('0x46')],'id':_0x17842e['id']}}]},'headers':{'Authorization':_0xc1ac('0x47')+_0x3c8484},'json':!![]})[_0xc1ac('0x3d')](function(_0x82ef43){if(_0x82ef43&&_0x82ef43['data'][0x0][_0xc1ac('0x48')]==='SUCCESS'){var _0x570e50=_0x82ef43['data'][0x0][_0xc1ac('0x49')];_0x570e50[_0xc1ac('0x3f')]=_[_0xc1ac('0x42')](_0x37f0f0['moduleCreate'])+'s';return _0x570e50;}logger[_0xc1ac('0x3a')](_0xc1ac('0x3b'),JSON[_0xc1ac('0xb')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})[_0xc1ac('0x2b')](function(_0x34a362){console[_0xc1ac('0x4a')]('CREATE\x20ERROR',_0x34a362);});}function getEndUser(_0x577406,_0x1cdf6a,_0x599521,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02){var _0xdeba63={'method':'GET','uri':'','headers':{'Authorization':_0xc1ac('0x47')+_0x577406},'json':!![]};switch(_0x5cfd02[_0xc1ac('0x4b')]){case _0xc1ac('0x4c'):_0xdeba63[_0xc1ac('0x4d')]='https://www.zohoapis.'+_0x1cdf6a+_0xc1ac('0x4e')+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x4f'))[_0xc1ac('0x3d')](function(_0x32aa10){if(_0x32aa10)return _0x32aa10;_0xdeba63[_0xc1ac('0x4d')]=_0xc1ac('0x40')+_0x1cdf6a+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x50'))[_0xc1ac('0x3d')](function(_0x5e2586){if(_0x5e2586)return _0x5e2586;if(_0x5cfd02['moduleCreate']!=_0xc1ac('0x51')){return createEndUser(_0x577406,_0x1cdf6a,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02);}else{return{};}});});break;case _0xc1ac('0x52'):_0xdeba63[_0xc1ac('0x4d')]=_0xc1ac('0x40')+_0x1cdf6a+_0xc1ac('0x4e')+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x4f'))['then'](function(_0x5ee573){if(_0x5ee573)return _0x5ee573;if(_0x5cfd02[_0xc1ac('0x43')]!=_0xc1ac('0x51')){return createEndUser(_0x577406,_0x1cdf6a,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02);}else{return{};}});break;case _0xc1ac('0x53'):_0xdeba63['uri']=_0xc1ac('0x40')+_0x1cdf6a+_0xc1ac('0x54')+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x50'))[_0xc1ac('0x3d')](function(_0x2c8b6a){if(_0x2c8b6a)return _0x2c8b6a;if(_0x5cfd02['moduleCreate']!=_0xc1ac('0x51')){return createEndUser(_0x577406,_0x1cdf6a,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02);}else{return{};}});break;}}function getCall(_0x44fe27,_0x2a2a64,_0x958078,_0xa56d8c,_0x4700db,_0x3f3d49,_0x3737fa,_0x380375){logger[_0xc1ac('0x2e')]('Creating\x20new\x20call...');var _0xb715f2={};_0xb715f2[_0xc1ac('0x55')]={'name':!_[_0xc1ac('0x1d')](_0xa56d8c['role'][_0xc1ac('0x19')])&&!_[_0xc1ac('0x1d')](_0xa56d8c[_0xc1ac('0x37')][_0xc1ac('0x19')])&&_0xa56d8c[_0xc1ac('0x37')][_0xc1ac('0x19')]===_0xc1ac('0x56')?_0xa56d8c[_0xc1ac('0x44')][_0xc1ac('0x19')]:!_[_0xc1ac('0x1d')](_0xa56d8c['first_name'])?_0xa56d8c[_0xc1ac('0x45')]+'\x20'+_0xa56d8c[_0xc1ac('0x46')]:_0xa56d8c[_0xc1ac('0x46')],'id':_0xa56d8c['id']};_0xb715f2['Subject']=intUtil['getString'](_0x3f3d49[_0xc1ac('0x57')],_0x3737fa,'\x20');_0xb715f2[_0xc1ac('0x58')]=intUtil[_0xc1ac('0x59')](_0x3f3d49[_0xc1ac('0x5a')],_0x3737fa,'\x0a');if(_0x4700db[_0xc1ac('0x3f')]===_0xc1ac('0x4f')){_0xb715f2[_0xc1ac('0x5b')]={'name':!_['isNil'](_0x4700db[_0xc1ac('0x5c')])?_0x4700db[_0xc1ac('0x5c')]:!_[_0xc1ac('0x1d')](_0x4700db['First_Name'])?_0x4700db['First_Name']+'\x20'+_0x4700db[_0xc1ac('0x5d')]:_0x4700db[_0xc1ac('0x5d')],'id':_0x4700db['id']};}if(_0x4700db[_0xc1ac('0x3f')]===_0xc1ac('0x50')){_0xb715f2['What_Id']={'name':!_['isNil'](_0x4700db[_0xc1ac('0x5c')])?_0x4700db[_0xc1ac('0x5c')]:!_['isNil'](_0x4700db[_0xc1ac('0x5e')])?_0x4700db['First_Name']+'\x20'+_0x4700db[_0xc1ac('0x5d')]:_0x4700db['Last_Name'],'id':_0x4700db['id']};_0xb715f2[_0xc1ac('0x5f')]=_[_0xc1ac('0x42')](_0x4700db['enduserType']);}if(_0x3737fa[_0xc1ac('0x60')]){_0xb715f2['Call_Duration']=moment[_0xc1ac('0x61')](parseInt(_0x3737fa[_0xc1ac('0x60')])*0x3e8)[_0xc1ac('0x30')](_0xc1ac('0x62'));}else if(_0x3737fa['answertime']&&_0x3737fa['endtime']){_0xb715f2['Call_Duration']=moment[_0xc1ac('0x61')](moment(_0x3737fa[_0xc1ac('0x63')],_0xc1ac('0x64'))[_0xc1ac('0x65')](moment(_0x3737fa[_0xc1ac('0x66')],_0xc1ac('0x64'))))[_0xc1ac('0x30')](_0xc1ac('0x62'));}switch(_0x3737fa[_0xc1ac('0x67')]){case'called':_0xb715f2[_0xc1ac('0x68')]=_0xc1ac('0x69');break;case _0xc1ac('0x6a'):case _0xc1ac('0x6b'):_0xb715f2[_0xc1ac('0x68')]=_0xc1ac('0x6c');break;case _0xc1ac('0x6d'):_0xb715f2[_0xc1ac('0x68')]=_0xc1ac('0x6e');break;case _0xc1ac('0x6f'):_0xb715f2['Call_Result']='Abandoned';break;case _0xc1ac('0x70'):_0xb715f2[_0xc1ac('0x68')]='Timeout';default:}_0xb715f2[_0xc1ac('0x71')]=(_0x380375===_0xc1ac('0x72')?moment(_0x3737fa[_0xc1ac('0x66')])[_0xc1ac('0x30')](_0xc1ac('0x64')):moment(_0x3737fa['agentcalledAt'])['format'](_0xc1ac('0x64')))||moment()[_0xc1ac('0x30')](_0xc1ac('0x64'));_0xb715f2[_0xc1ac('0x73')]=_0x380375||_0xc1ac('0x74');_0xb715f2=_[_0xc1ac('0x75')](_0xb715f2,getCustomFields(_0x3f3d49[_0xc1ac('0x76')],_0x3737fa));return request({'method':_0xc1ac('0x24'),'uri':_0xc1ac('0x40')+_0x2a2a64+_0xc1ac('0x77'),'headers':{'Authorization':_0xc1ac('0x47')+_0x44fe27},'body':{'data':[_0xb715f2]},'json':!![]})['then'](function(_0x2d66af){if(_0x2d66af&&_0x2d66af[_0xc1ac('0x3e')][0x0]['code']===_0xc1ac('0x78')){logger['info'](_0xc1ac('0x79'));return{'id':_0x2d66af[_0xc1ac('0x3e')][0x0][_0xc1ac('0x49')]['id']};}})['catch'](function(_0x23f7f0){logger[_0xc1ac('0x2e')](_0xc1ac('0x7a'),_0x23f7f0[_0xc1ac('0x2d')]);console[_0xc1ac('0x4a')](_0xc1ac('0x7a'),_0x23f7f0);});}exports[_0xc1ac('0x7b')]=function(_0x352cb0,_0x160a4b,_0x3d456d,_0x5bcdb3,_0x2beaa0,_0xc6e62){var _0x196adb,_0x1027df,_0x384d67;_0xc6e62['host']=intUtil[_0xc1ac('0x7c')](_0xc6e62[_0xc1ac('0x7d')]);_0xc6e62['serverUrl']=intUtil[_0xc1ac('0x7c')](_0xc6e62[_0xc1ac('0x7e')]);if(_0x2beaa0&&_0x2beaa0[_0xc1ac('0x7f')]){logger['info']('[QUEUE]',_0xc1ac('0x80'));_0x160a4b[_0xc1ac('0x81')]=_0xc6e62[_0xc1ac('0x7e')]+_0xc1ac('0x82')+_0x160a4b[_0xc1ac('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x160a4b[_0xc1ac('0x83')]);}else{_0x160a4b[_0xc1ac('0x81')]='';}var _0x54414c=_0xc6e62[_0xc1ac('0x7d')]===_0xc1ac('0x84')?'eu':'com';return getAccessToken(_0xc6e62)[_0xc1ac('0x3d')](function(_0x560817){_0x384d67=_0x560817;return getUser(_0x384d67,_0x54414c,_0xc6e62,_0x5bcdb3[_0xc1ac('0x34')]);})[_0xc1ac('0x3d')](function(_0x105964){_0x196adb=_0x105964;logger['info']('The\x20User\x20ID\x20is:',_0x196adb['id']);return getEndUser(_0x384d67,_0x54414c,_0xc6e62,_0x160a4b[_0xc1ac('0x85')],_0x160a4b[_0xc1ac('0x86')],_0x196adb,_0x3d456d);})[_0xc1ac('0x3d')](function(_0x176a6b){_0x1027df=_0x176a6b;return getCall(_0x384d67,_0x54414c,_0xc6e62,_0x196adb,_0x1027df,_0x3d456d,_0x160a4b,_0xc1ac('0x74'));})['then'](function(_0x532994){if(_0x532994){logger[_0xc1ac('0x2e')](_0xc1ac('0x87'),_0x532994['id']);logger['info']('[QUEUE]',_0xc1ac('0x88'));emit(util['format'](_0xc1ac('0x89'),_0x5bcdb3[_0xc1ac('0x19')]),_0xc1ac('0x8a'),{'uri':'https://crm.'+_0xc6e62[_0xc1ac('0x7d')]+_0xc1ac('0x8b')+_0x532994['id']});}})[_0xc1ac('0x2b')](function(_0x3643b2){logger[_0xc1ac('0x3a')](_0xc1ac('0x8c'),JSON['stringify'](_0x3643b2));});};exports['outbound']=function(_0x2e0294,_0x3ac9f0,_0x26e9a2,_0x49bc3e,_0x466c60,_0x111d19,_0x2e33f4){var _0x585a71,_0x2307c6,_0x58ff67;_0x111d19['host']=intUtil[_0xc1ac('0x7c')](_0x111d19[_0xc1ac('0x7d')]);_0x111d19[_0xc1ac('0x7e')]=intUtil[_0xc1ac('0x7c')](_0x111d19[_0xc1ac('0x7e')]);if(_0x2e33f4&&_0x2e33f4[_0xc1ac('0x8d')]&&_0x2e33f4[_0xc1ac('0x8d')]!==_0xc1ac('0x8e')){logger[_0xc1ac('0x2e')]('[OUTBOUND]',_0xc1ac('0x80'));_0x3ac9f0['recordingURL']=_0x111d19[_0xc1ac('0x7e')]+_0xc1ac('0x82')+_0x3ac9f0[_0xc1ac('0x83')]+_0xc1ac('0x8f')+md5(_0x3ac9f0[_0xc1ac('0x83')]);}var _0x49da76=_0x111d19[_0xc1ac('0x7d')]==='zoho.eu'?'eu':_0xc1ac('0x90');return getAccessToken(_0x111d19)[_0xc1ac('0x3d')](function(_0x37f4fc){_0x58ff67=_0x37f4fc;return getUser(_0x58ff67,_0x49da76,_0x111d19,_0x49bc3e[_0xc1ac('0x34')]);})[_0xc1ac('0x3d')](function(_0x3dd296){_0x585a71=_0x3dd296;logger[_0xc1ac('0x2e')]('The\x20User\x20ID\x20is:',_0x585a71['id']);return getEndUser(_0x58ff67,_0x49da76,_0x111d19,_0x3ac9f0[_0xc1ac('0x91')],_0x3ac9f0['destcalleridnum'],_0x585a71,_0x26e9a2);})[_0xc1ac('0x3d')](function(_0x277faf){_0x2307c6=_0x277faf;return getCall(_0x58ff67,_0x49da76,_0x111d19,_0x585a71,_0x2307c6,_0x26e9a2,_0x3ac9f0,_0xc1ac('0x92'));})['then'](function(_0x5ef5a3){if(_0x5ef5a3){logger['info'](_0xc1ac('0x87'),_0x5ef5a3['id']);logger[_0xc1ac('0x2e')](_0xc1ac('0x93'),_0xc1ac('0x88'));emit(util[_0xc1ac('0x30')](_0xc1ac('0x89'),_0x49bc3e[_0xc1ac('0x19')]),_0xc1ac('0x8a'),{'uri':'https://crm.'+_0x111d19[_0xc1ac('0x7d')]+_0xc1ac('0x8b')+_0x5ef5a3['id']});}})['catch'](function(_0x484cb9){logger['error']('[OUTBOUND]',JSON[_0xc1ac('0xb')](_0x484cb9));});};exports[_0xc1ac('0x94')]=function(_0x39365e,_0x205aae,_0x54087a,_0x1a9e99,_0x33e861,_0x417c96){var _0x583ace,_0x5beede,_0x8fcbbc;_0x417c96['host']=intUtil[_0xc1ac('0x7c')](_0x417c96['host']);_0x417c96['serverUrl']=intUtil[_0xc1ac('0x7c')](_0x417c96['serverUrl']);if(_0x33e861&&_0x33e861[_0xc1ac('0x7f')]){logger['info']('['+_0x205aae['lastevent'][_0xc1ac('0x95')]()+']',_0xc1ac('0x80'));_0x205aae['recordingURL']=_0x417c96[_0xc1ac('0x7e')]+_0xc1ac('0x82')+_0x205aae['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x205aae[_0xc1ac('0x83')]);}else{_0x205aae[_0xc1ac('0x81')]='';}var _0x390b14=_0x417c96[_0xc1ac('0x7d')]===_0xc1ac('0x84')?'eu':_0xc1ac('0x90');return getAccessToken(_0x417c96)[_0xc1ac('0x3d')](function(_0x37cc0d){_0x8fcbbc=_0x37cc0d;return getUser(_0x8fcbbc,_0x390b14,_0x417c96);})[_0xc1ac('0x3d')](function(_0x4cb3d7){_0x583ace=_0x4cb3d7;logger[_0xc1ac('0x2e')](_0xc1ac('0x96'),_0x583ace['id']);return getEndUser(_0x8fcbbc,_0x390b14,_0x417c96,_0x205aae[_0xc1ac('0x85')],_0x205aae[_0xc1ac('0x86')],_0x583ace,_0x54087a);})[_0xc1ac('0x3d')](function(_0x144ab9){_0x5beede=_0x144ab9;return getCall(_0x8fcbbc,_0x390b14,_0x417c96,_0x583ace,_0x5beede,_0x54087a,_0x205aae,'Inbound');})[_0xc1ac('0x3d')](function(_0x7f6706){if(_0x7f6706){logger['info'](_0xc1ac('0x87'),_0x7f6706['id']);}})[_0xc1ac('0x2b')](function(_0x16a73d){logger['error']('['+_0x205aae['lastevent'][_0xc1ac('0x95')]()+']',JSON['stringify'](_0x16a73d));});};
\ No newline at end of file
+var _0x8393=['stack','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','recordingURL','com','calleridname','calleridnum','trigger:browser:url','https://crm.','outbound','recordingFormat','none','The\x20User\x20ID\x20is:','destcalleridname','Outbound','[OUTBOUND]','user:%s','/crm/EntityInfo.do?module=Calls&id=','unmanaged','toUpperCase','zoho.eu','Inbound','The\x20Call\x20ID\x20is:','lodash','request-promise','md5','util','moment','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','emit','debug','[HTTP]','length','forEach','includes','string','picklist','idField','toString','type','variableName','customVariable','Variable','name','toLowerCase','indexOf','isNil','access_token','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refresh_token','then','add','info','Search\x20user','format','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','profile','Administrator','user','error','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','enduserType','POST','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','SUCCESS','details','Error:\x20','log','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Leads','nothing','contact','/crm/v2/Leads/search?criteria=((Phone:equals:','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Description','Descriptions','Contacts','Who_Id','Full_Name','First_Name','Last_Name','What_Id','utc','talktime','endtime','Call_Duration','YYYY-MM-DDTHH:mm:ss','diff','lastevent','called','Called','complete','connect','Call_Result','Answered','rejected','abandoned','Abandoned','timeout','Timeout','starttime','Call_Type','merge','/crm/v2/Calls','code','err'];(function(_0x5834c7,_0x596152){var _0x151d83=function(_0x14ec39){while(--_0x14ec39){_0x5834c7['push'](_0x5834c7['shift']());}};_0x151d83(++_0x596152);}(_0x8393,0x1e1));var _0x3839=function(_0x3de703,_0x4b0e56){_0x3de703=_0x3de703-0x0;var _0x14d5e2=_0x8393[_0x3de703];return _0x14d5e2;};'use strict';var _=require(_0x3839('0x0'));var rp=require(_0x3839('0x1'));var md5=require(_0x3839('0x2'));var util=require(_0x3839('0x3'));var intUtil=require('./util');var moment=require(_0x3839('0x4'));var Redis=require('ioredis');var BPromise=require(_0x3839('0x5'));var config=require(_0x3839('0x6'));var logger=require(_0x3839('0x7'))(_0x3839('0x8'));config[_0x3839('0x9')]=_[_0x3839('0xa')](config[_0x3839('0x9')],{'host':_0x3839('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3839('0x9')]));function emit(_0x36caa8,_0x1ec6b3,_0x1e2796){io['to'](_0x36caa8)[_0x3839('0xc')](_0x1ec6b3,_0x1e2796);}function request(_0x578bed){logger[_0x3839('0xd')](_0x3839('0xe'),JSON['stringify'](_0x578bed));return rp(_0x578bed);}function getCustomFields(_0x1842db,_0x39ec22){var _0x17d13f={};if(_0x1842db[_0x3839('0xf')]>0x0){_[_0x3839('0x10')](_0x1842db,function(_0x4541bf){if(_[_0x3839('0x11')]([_0x3839('0x12'),_0x3839('0x13')],_0x4541bf['type'])&&_0x4541bf[_0x3839('0x14')]){_0x17d13f[_0x4541bf['idField']]=_0x4541bf['content'][_0x3839('0x15')]();}else if(_0x4541bf[_0x3839('0x16')]==='variable'&&_0x4541bf[_0x3839('0x17')]&&_0x4541bf[_0x3839('0x14')]&&_0x39ec22[_0x4541bf[_0x3839('0x17')]]){_0x17d13f[_0x4541bf[_0x3839('0x14')]]=_0x39ec22[_0x4541bf[_0x3839('0x17')]][_0x3839('0x15')]();}else if(_0x4541bf[_0x3839('0x16')]===_0x3839('0x18')&&_0x4541bf[_0x3839('0x19')]&&_0x4541bf[_0x3839('0x19')][_0x3839('0x1a')]&&_0x4541bf['idField']&&_0x39ec22[_0x4541bf['Variable'][_0x3839('0x1a')][_0x3839('0x1b')]()]){_0x17d13f[_0x4541bf['idField']]=_0x39ec22[_0x4541bf[_0x3839('0x19')]['name'][_0x3839('0x1b')]()][_0x3839('0x15')]();}});}return _0x17d13f;}function getName(_0x4c9838){if(_0x4c9838[_0x3839('0x1c')]('\x20')>0x0){var _0x19bb04=_0x4c9838['split'](/ (.+)/);if(_0x19bb04[0x1]){return _0x19bb04;}}return[_0x4c9838,_0x4c9838];}var accountsTokens={};function getAccessToken(_0x1e91b6){return new Promise(function(_0xefc744,_0x43da6b){if(!_[_0x3839('0x1d')](accountsTokens[_0x1e91b6['id']])&&!_[_0x3839('0x1d')](accountsTokens[_0x1e91b6['id']][_0x3839('0x1e')])){if(moment()['isBefore'](accountsTokens[_0x1e91b6['id']][_0x3839('0x1f')])){_0xefc744(accountsTokens[_0x1e91b6['id']][_0x3839('0x1e')]);}}var _0x35dff4;switch(_0x1e91b6[_0x3839('0x20')]){case'US':_0x35dff4='https://accounts.zoho.com';break;case'AU':_0x35dff4=_0x3839('0x21');break;case'EU':_0x35dff4=_0x3839('0x22');break;case'IN':_0x35dff4=_0x3839('0x23');break;case'CN':_0x35dff4=_0x3839('0x24');break;default:_0x35dff4='https://accounts.zoho.eu';break;}var _0x43c32d={'method':'POST','uri':_0x35dff4+_0x3839('0x25'),'qs':{'refresh_token':_0x1e91b6['refreshToken'],'client_id':_0x1e91b6['clientId'],'client_secret':_0x1e91b6['clientSecret'],'grant_type':_0x3839('0x26')},'json':!![]};return rp(_0x43c32d)[_0x3839('0x27')](function(_0xf9c3b4){accountsTokens[_0x1e91b6['id']]={'access_token':_0xf9c3b4[_0x3839('0x1e')],'expires_in':moment()[_0x3839('0x28')](_0xf9c3b4['expires_in'],'seconds')};_0xefc744(_0xf9c3b4[_0x3839('0x1e')]);})['catch'](function(_0x2fa615){logger['error']('Failing\x20creating\x20the\x20access_token',_0x2fa615['stack']);_0x43da6b(_0x2fa615);});});}function getUser(_0x1d197f,_0x2e0de1,_0x19a7d1,_0x22b3a0){logger[_0x3839('0x29')](_0x3839('0x2a'));return request({'method':'GET','uri':util[_0x3839('0x2b')]('https://www.zohoapis.%s/crm/v2/users',_0x2e0de1),'qs':{'type':_0x3839('0x2c')},'headers':{'Authorization':_0x3839('0x2d')+_0x1d197f},'json':!![]})[_0x3839('0x27')](function(_0x588cb9){if(_0x588cb9[_0x3839('0x2e')]){var _0x173d69=-0x1;if(_[_0x3839('0x2f')](_0x588cb9[_0x3839('0x2e')])){if(!_[_0x3839('0x1d')](_0x22b3a0)){_0x173d69=_[_0x3839('0x30')](_0x588cb9[_0x3839('0x2e')],function(_0x654a88){return _0x654a88[_0x3839('0x31')]===_0x22b3a0;});}if(_0x173d69>=0x0){logger['info'](_0x3839('0x32'));}else{logger[_0x3839('0x29')]('Using\x20the\x20admin\x20account!');_0x173d69=_['findIndex'](_0x588cb9['users'],function(_0x58a881){return _0x58a881[_0x3839('0x33')][_0x3839('0x1a')]===_0x3839('0x34');});}return _0x588cb9[_0x3839('0x2e')][_0x173d69];}else{if(_0x588cb9['user']['profile']['name']===_0x3839('0x34')){logger[_0x3839('0x29')]('Using\x20the\x20admin\x20account!');user=_0x588cb9[_0x3839('0x35')];return user;}else{logger[_0x3839('0x36')](_0x3839('0x37'),JSON[_0x3839('0x38')](_0x588cb9));throw new Error(_0x3839('0x39')+JSON[_0x3839('0x38')](_0x588cb9));}}}else{logger[_0x3839('0x36')](_0x3839('0x37'),JSON['stringify'](_0x588cb9));throw new Error(_0x3839('0x39')+JSON[_0x3839('0x38')](_0x588cb9));}})[_0x3839('0x3a')](function(_0xd68b88){console[_0x3839('0x36')](_0xd68b88);});}function getZohoUser(_0x3f237c,_0x509619){return new BPromise(function(_0x2fc5cf,_0x2fb7a4){request(_0x3f237c)['then'](function(_0x22525f){var _0x1e1f56=null;if(_0x22525f){_0x1e1f56=_0x22525f[_0x3839('0x3b')][0x0];_0x1e1f56[_0x3839('0x3c')]=_0x509619;}_0x2fc5cf(_0x1e1f56);})[_0x3839('0x3a')](function(_0x4474a6){_0x2fb7a4(_0x4474a6);});});}function createEndUser(_0x2048f6,_0x1e977f,_0x5eec0f,_0x4e22ec,_0x1bdbba,_0x39dae3){var _0x5eec0f=getName(_0x5eec0f);return request({'method':_0x3839('0x3d'),'uri':_0x3839('0x3e')+_0x1e977f+_0x3839('0x3f')+_[_0x3839('0x40')](_0x39dae3[_0x3839('0x41')])+'s','body':{'data':[{'Last_Name':_0x5eec0f[0x1],'First_Name':_0x5eec0f[0x0],'Phone':_0x4e22ec,'Owner':{'name':!_[_0x3839('0x1d')](_0x1bdbba[_0x3839('0x42')][_0x3839('0x1a')])?_0x1bdbba[_0x3839('0x42')][_0x3839('0x1a')]:!_[_0x3839('0x1d')](_0x1bdbba['first_name'])?_0x1bdbba[_0x3839('0x43')]+'\x20'+_0x1bdbba['last_name']:_0x1bdbba[_0x3839('0x44')],'id':_0x1bdbba['id']}}]},'headers':{'Authorization':_0x3839('0x2d')+_0x2048f6},'json':!![]})[_0x3839('0x27')](function(_0x4df94f){if(_0x4df94f&&_0x4df94f[_0x3839('0x3b')][0x0]['code']===_0x3839('0x45')){var _0x37d0dd=_0x4df94f['data'][0x0][_0x3839('0x46')];_0x37d0dd[_0x3839('0x3c')]=_[_0x3839('0x40')](_0x39dae3[_0x3839('0x41')])+'s';return _0x37d0dd;}logger[_0x3839('0x36')](_0x3839('0x37'),JSON[_0x3839('0x38')](data));throw new Error(_0x3839('0x47')+JSON[_0x3839('0x38')](data));})['catch'](function(_0x5642de){console[_0x3839('0x48')](_0x3839('0x49'),_0x5642de);});}function getEndUser(_0x9a1d6,_0x89c37a,_0x1fd8b0,_0x163235,_0x2559a0,_0x1aee6b,_0x4b5b29){var _0x4e8050={'method':'GET','uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x9a1d6},'json':!![]};switch(_0x4b5b29[_0x3839('0x4a')]){case _0x3839('0x4b'):_0x4e8050[_0x3839('0x4c')]=_0x3839('0x3e')+_0x89c37a+_0x3839('0x4d')+_0x2559a0+'))';return getZohoUser(_0x4e8050,'Contacts')['then'](function(_0x40312d){if(_0x40312d)return _0x40312d;_0x4e8050[_0x3839('0x4c')]='https://www.zohoapis.'+_0x89c37a+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x2559a0+'))';return getZohoUser(_0x4e8050,_0x3839('0x4e'))['then'](function(_0x1b7318){if(_0x1b7318)return _0x1b7318;if(_0x4b5b29[_0x3839('0x41')]!=_0x3839('0x4f')){return createEndUser(_0x9a1d6,_0x89c37a,_0x163235,_0x2559a0,_0x1aee6b,_0x4b5b29);}else{return{};}});});break;case _0x3839('0x50'):_0x4e8050[_0x3839('0x4c')]=_0x3839('0x3e')+_0x89c37a+_0x3839('0x4d')+_0x2559a0+'))';return getZohoUser(_0x4e8050,'Contacts')[_0x3839('0x27')](function(_0x34db24){if(_0x34db24)return _0x34db24;if(_0x4b5b29['moduleCreate']!=_0x3839('0x4f')){return createEndUser(_0x9a1d6,_0x89c37a,_0x163235,_0x2559a0,_0x1aee6b,_0x4b5b29);}else{return{};}});break;case'lead':_0x4e8050[_0x3839('0x4c')]='https://www.zohoapis.'+_0x89c37a+_0x3839('0x51')+_0x2559a0+'))';return getZohoUser(_0x4e8050,_0x3839('0x4e'))[_0x3839('0x27')](function(_0x29bb73){if(_0x29bb73)return _0x29bb73;if(_0x4b5b29[_0x3839('0x41')]!=_0x3839('0x4f')){return createEndUser(_0x9a1d6,_0x89c37a,_0x163235,_0x2559a0,_0x1aee6b,_0x4b5b29);}else{return{};}});break;}}function getCall(_0x54c23c,_0x36bd22,_0x378dd1,_0x2a3b39,_0x532d33,_0x375826,_0x4aa69d,_0x5e55a5){logger[_0x3839('0x29')](_0x3839('0x52'));var _0xcba47d={};_0xcba47d[_0x3839('0x53')]={'name':!_['isNil'](_0x2a3b39[_0x3839('0x42')][_0x3839('0x1a')])&&!_[_0x3839('0x1d')](_0x2a3b39[_0x3839('0x33')][_0x3839('0x1a')])&&_0x2a3b39[_0x3839('0x33')][_0x3839('0x1a')]===_0x3839('0x54')?_0x2a3b39[_0x3839('0x42')]['name']:!_[_0x3839('0x1d')](_0x2a3b39[_0x3839('0x43')])?_0x2a3b39[_0x3839('0x43')]+'\x20'+_0x2a3b39[_0x3839('0x44')]:_0x2a3b39[_0x3839('0x44')],'id':_0x2a3b39['id']};_0xcba47d[_0x3839('0x55')]=intUtil[_0x3839('0x56')](_0x375826['Subjects'],_0x4aa69d,'\x20');_0xcba47d[_0x3839('0x57')]=intUtil[_0x3839('0x56')](_0x375826[_0x3839('0x58')],_0x4aa69d,'\x0a');if(_0x532d33[_0x3839('0x3c')]===_0x3839('0x59')){_0xcba47d[_0x3839('0x5a')]={'name':!_['isNil'](_0x532d33[_0x3839('0x5b')])?_0x532d33[_0x3839('0x5b')]:!_[_0x3839('0x1d')](_0x532d33[_0x3839('0x5c')])?_0x532d33[_0x3839('0x5c')]+'\x20'+_0x532d33[_0x3839('0x5d')]:_0x532d33[_0x3839('0x5d')],'id':_0x532d33['id']};}if(_0x532d33[_0x3839('0x3c')]==='Leads'){_0xcba47d[_0x3839('0x5e')]={'name':!_[_0x3839('0x1d')](_0x532d33[_0x3839('0x5b')])?_0x532d33[_0x3839('0x5b')]:!_[_0x3839('0x1d')](_0x532d33[_0x3839('0x5c')])?_0x532d33['First_Name']+'\x20'+_0x532d33[_0x3839('0x5d')]:_0x532d33[_0x3839('0x5d')],'id':_0x532d33['id']};_0xcba47d['$se_module']=_[_0x3839('0x40')](_0x532d33['enduserType']);}if(_0x4aa69d['talktime']){_0xcba47d['Call_Duration']=moment[_0x3839('0x5f')](parseInt(_0x4aa69d[_0x3839('0x60')])*0x3e8)[_0x3839('0x2b')]('mm:ss');}else if(_0x4aa69d['answertime']&&_0x4aa69d[_0x3839('0x61')]){_0xcba47d[_0x3839('0x62')]=moment[_0x3839('0x5f')](moment(_0x4aa69d[_0x3839('0x61')],_0x3839('0x63'))[_0x3839('0x64')](moment(_0x4aa69d['starttime'],_0x3839('0x63'))))[_0x3839('0x2b')]('mm:ss');}switch(_0x4aa69d[_0x3839('0x65')]){case _0x3839('0x66'):_0xcba47d['Call_Result']=_0x3839('0x67');break;case _0x3839('0x68'):case _0x3839('0x69'):_0xcba47d[_0x3839('0x6a')]=_0x3839('0x6b');break;case _0x3839('0x6c'):_0xcba47d['Call_Result']='Rejected';break;case _0x3839('0x6d'):_0xcba47d[_0x3839('0x6a')]=_0x3839('0x6e');break;case _0x3839('0x6f'):_0xcba47d['Call_Result']=_0x3839('0x70');default:}_0xcba47d['Call_Start_Time']=(_0x5e55a5==='outbound'?moment(_0x4aa69d[_0x3839('0x71')])[_0x3839('0x2b')](_0x3839('0x63')):moment(_0x4aa69d['agentcalledAt'])['format'](_0x3839('0x63')))||moment()[_0x3839('0x2b')](_0x3839('0x63'));_0xcba47d[_0x3839('0x72')]=_0x5e55a5||'Inbound';_0xcba47d=_[_0x3839('0x73')](_0xcba47d,getCustomFields(_0x375826['Fields'],_0x4aa69d));return request({'method':_0x3839('0x3d'),'uri':_0x3839('0x3e')+_0x36bd22+_0x3839('0x74'),'headers':{'Authorization':_0x3839('0x2d')+_0x54c23c},'body':{'data':[_0xcba47d]},'json':!![]})[_0x3839('0x27')](function(_0x1d68c1){if(_0x1d68c1&&_0x1d68c1[_0x3839('0x3b')][0x0][_0x3839('0x75')]===_0x3839('0x45')){logger['info']('Call\x20created!');return{'id':_0x1d68c1[_0x3839('0x3b')][0x0][_0x3839('0x46')]['id']};}})['catch'](function(_0x345050){logger[_0x3839('0x29')](_0x3839('0x76'),_0x345050[_0x3839('0x77')]);console[_0x3839('0x48')](_0x3839('0x76'),_0x345050);});}exports[_0x3839('0x78')]=function(_0x5cbc11,_0x4939bb,_0x417a0a,_0x10e2d2,_0x4f92ac,_0x273a77){var _0x6e4eed,_0x2b5bc4,_0x2e4132;_0x273a77[_0x3839('0x79')]=intUtil[_0x3839('0x7a')](_0x273a77['host']);_0x273a77[_0x3839('0x7b')]=intUtil[_0x3839('0x7a')](_0x273a77[_0x3839('0x7b')]);if(_0x4f92ac&&_0x4f92ac[_0x3839('0x7c')]){logger['info'](_0x3839('0x7d'),_0x3839('0x7e'));_0x4939bb['recordingURL']=_0x273a77[_0x3839('0x7b')]+_0x3839('0x7f')+_0x4939bb[_0x3839('0x80')]+_0x3839('0x81')+md5(_0x4939bb[_0x3839('0x80')]);}else{_0x4939bb[_0x3839('0x82')]='';}var _0x55797b=_0x273a77['host']==='zoho.eu'?'eu':_0x3839('0x83');return getAccessToken(_0x273a77)['then'](function(_0x2ff460){_0x2e4132=_0x2ff460;return getUser(_0x2e4132,_0x55797b,_0x273a77,_0x10e2d2[_0x3839('0x31')]);})[_0x3839('0x27')](function(_0x4f78a1){_0x6e4eed=_0x4f78a1;logger[_0x3839('0x29')]('The\x20User\x20ID\x20is:',_0x6e4eed['id']);return getEndUser(_0x2e4132,_0x55797b,_0x273a77,_0x4939bb[_0x3839('0x84')],_0x4939bb[_0x3839('0x85')],_0x6e4eed,_0x417a0a);})[_0x3839('0x27')](function(_0xaaedba){_0x2b5bc4=_0xaaedba;return getCall(_0x2e4132,_0x55797b,_0x273a77,_0x6e4eed,_0x2b5bc4,_0x417a0a,_0x4939bb,'Inbound');})[_0x3839('0x27')](function(_0x5c8c28){if(_0x5c8c28){logger['info']('The\x20Call\x20ID\x20is:',_0x5c8c28['id']);logger[_0x3839('0x29')](_0x3839('0x7d'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3839('0x2b')]('user:%s',_0x10e2d2[_0x3839('0x1a')]),_0x3839('0x86'),{'uri':_0x3839('0x87')+_0x273a77[_0x3839('0x79')]+'/crm/EntityInfo.do?module=Calls&id='+_0x5c8c28['id']});}})[_0x3839('0x3a')](function(_0x1691e4){logger['error'](_0x3839('0x7d'),JSON[_0x3839('0x38')](_0x1691e4));});};exports[_0x3839('0x88')]=function(_0x412b71,_0x2287ac,_0x15b964,_0x548055,_0x10c195,_0x302fff,_0x125cb6){var _0x5505ac,_0x36a3da,_0x29d0b0;_0x302fff['host']=intUtil[_0x3839('0x7a')](_0x302fff[_0x3839('0x79')]);_0x302fff[_0x3839('0x7b')]=intUtil[_0x3839('0x7a')](_0x302fff[_0x3839('0x7b')]);if(_0x125cb6&&_0x125cb6[_0x3839('0x89')]&&_0x125cb6[_0x3839('0x89')]!==_0x3839('0x8a')){logger[_0x3839('0x29')]('[OUTBOUND]',_0x3839('0x7e'));_0x2287ac[_0x3839('0x82')]=_0x302fff['serverUrl']+_0x3839('0x7f')+_0x2287ac[_0x3839('0x80')]+'/downloads?type=uniqueid&token='+md5(_0x2287ac[_0x3839('0x80')]);}var _0xaed1d5=_0x302fff[_0x3839('0x79')]==='zoho.eu'?'eu':_0x3839('0x83');return getAccessToken(_0x302fff)[_0x3839('0x27')](function(_0x5b39d8){_0x29d0b0=_0x5b39d8;return getUser(_0x29d0b0,_0xaed1d5,_0x302fff,_0x548055['email']);})[_0x3839('0x27')](function(_0x557a63){_0x5505ac=_0x557a63;logger['info'](_0x3839('0x8b'),_0x5505ac['id']);return getEndUser(_0x29d0b0,_0xaed1d5,_0x302fff,_0x2287ac[_0x3839('0x8c')],_0x2287ac['destcalleridnum'],_0x5505ac,_0x15b964);})[_0x3839('0x27')](function(_0xe44cde){_0x36a3da=_0xe44cde;return getCall(_0x29d0b0,_0xaed1d5,_0x302fff,_0x5505ac,_0x36a3da,_0x15b964,_0x2287ac,_0x3839('0x8d'));})[_0x3839('0x27')](function(_0x14a0fc){if(_0x14a0fc){logger[_0x3839('0x29')]('The\x20Call\x20ID\x20is:',_0x14a0fc['id']);logger[_0x3839('0x29')](_0x3839('0x8e'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3839('0x2b')](_0x3839('0x8f'),_0x548055[_0x3839('0x1a')]),_0x3839('0x86'),{'uri':_0x3839('0x87')+_0x302fff[_0x3839('0x79')]+_0x3839('0x90')+_0x14a0fc['id']});}})[_0x3839('0x3a')](function(_0x536752){logger[_0x3839('0x36')](_0x3839('0x8e'),JSON[_0x3839('0x38')](_0x536752));});};exports[_0x3839('0x91')]=function(_0x41b402,_0x4459e8,_0x253337,_0x2a58ac,_0x526c6e,_0x54b3e6){var _0x483781,_0x144129,_0x3f095a;_0x54b3e6[_0x3839('0x79')]=intUtil[_0x3839('0x7a')](_0x54b3e6[_0x3839('0x79')]);_0x54b3e6[_0x3839('0x7b')]=intUtil['stripTrailingSlash'](_0x54b3e6[_0x3839('0x7b')]);if(_0x526c6e&&_0x526c6e[_0x3839('0x7c')]){logger[_0x3839('0x29')]('['+_0x4459e8['lastevent'][_0x3839('0x92')]()+']',_0x3839('0x7e'));_0x4459e8[_0x3839('0x82')]=_0x54b3e6['serverUrl']+'/api/voice/recordings/'+_0x4459e8['uniqueid']+_0x3839('0x81')+md5(_0x4459e8[_0x3839('0x80')]);}else{_0x4459e8[_0x3839('0x82')]='';}var _0x2a4685=_0x54b3e6[_0x3839('0x79')]===_0x3839('0x93')?'eu':_0x3839('0x83');return getAccessToken(_0x54b3e6)[_0x3839('0x27')](function(_0x1c44c4){_0x3f095a=_0x1c44c4;return getUser(_0x3f095a,_0x2a4685,_0x54b3e6);})[_0x3839('0x27')](function(_0x20f86f){_0x483781=_0x20f86f;logger[_0x3839('0x29')](_0x3839('0x8b'),_0x483781['id']);return getEndUser(_0x3f095a,_0x2a4685,_0x54b3e6,_0x4459e8[_0x3839('0x84')],_0x4459e8['calleridnum'],_0x483781,_0x253337);})[_0x3839('0x27')](function(_0x2959d2){_0x144129=_0x2959d2;return getCall(_0x3f095a,_0x2a4685,_0x54b3e6,_0x483781,_0x144129,_0x253337,_0x4459e8,_0x3839('0x94'));})[_0x3839('0x27')](function(_0x138c97){if(_0x138c97){logger[_0x3839('0x29')](_0x3839('0x95'),_0x138c97['id']);}})[_0x3839('0x3a')](function(_0x210bc0){logger[_0x3839('0x36')]('['+_0x4459e8[_0x3839('0x65')][_0x3839('0x92')]()+']',JSON[_0x3839('0x38')](_0x210bc0));});};
\ No newline at end of file
index fe507f8..3fd8a02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecdc=['error','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','trigger','exec','data2','Script','data3','render'];(function(_0x1f181e,_0x3f9573){var _0x4c12de=function(_0x5a5d42){while(--_0x5a5d42){_0x1f181e['push'](_0x1f181e['shift']());}};_0x4c12de(++_0x3f9573);}(_0xecdc,0x88));var _0xcecd=function(_0x3c2b16,_0x4f942d){_0x3c2b16=_0x3c2b16-0x0;var _0x3c25d4=_0xecdc[_0x3c2b16];return _0x3c25d4;};'use strict';var util=require(_0xcecd('0x0'));var sh=require(_0xcecd('0x1'));var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0xcecd('0x2'));exports[_0xcecd('0x3')]=function(_0x4ffed0,_0x536e72){var _0x5e8dd6=_0x4ffed0[_0xcecd('0x4')]?_0x4ffed0['data2']:_0xcecd('0x5');var _0x2843cb=_0x4ffed0[_0xcecd('0x6')]?Mustache[_0xcecd('0x7')](_0x4ffed0[_0xcecd('0x6')],_0x536e72):_0x536e72;sh[_0xcecd('0x3')](_0x2843cb,function(_0x12e209,_0x4a9eb7,_0x3f6940){if(_0x12e209!==0x0){logger[_0xcecd('0x8')](util[_0xcecd('0x9')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x5e8dd6,_0x2843cb,_0x12e209,_0x3f6940));}else{logger[_0xcecd('0xa')](util['format'](_0xcecd('0xb'),_0x5e8dd6,_0x2843cb,_0x4a9eb7));}});};
\ No newline at end of file
+var _0xd09a=['data2','Script','render','data3','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','mustache','exec'];(function(_0x2ed96a,_0x1c3d27){var _0x58efae=function(_0x23ae4c){while(--_0x23ae4c){_0x2ed96a['push'](_0x2ed96a['shift']());}};_0x58efae(++_0x1c3d27);}(_0xd09a,0x128));var _0xad09=function(_0x143cad,_0x1fb6fb){_0x143cad=_0x143cad-0x0;var _0x170e8c=_0xd09a[_0x143cad];return _0x170e8c;};'use strict';var util=require(_0xad09('0x0'));var sh=require(_0xad09('0x1'));var Mustache=require(_0xad09('0x2'));var logger=require('../../../../config/logger')('trigger');exports[_0xad09('0x3')]=function(_0x4d9c53,_0x40b22c){var _0x109b05=_0x4d9c53[_0xad09('0x4')]?_0x4d9c53[_0xad09('0x4')]:_0xad09('0x5');var _0x3f3178=_0x4d9c53['data3']?Mustache[_0xad09('0x6')](_0x4d9c53[_0xad09('0x7')],_0x40b22c):_0x40b22c;sh[_0xad09('0x3')](_0x3f3178,function(_0x30e8c1,_0x5d0dea,_0x4e580c){if(_0x30e8c1!==0x0){logger[_0xad09('0x8')](util[_0xad09('0x9')](_0xad09('0xa'),_0x109b05,_0x3f3178,_0x30e8c1,_0x4e580c));}else{logger[_0xad09('0xb')](util['format']('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x109b05,_0x3f3178,_0x5d0dea));}});};
\ No newline at end of file
index bf7c3c6..af5030d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b16=['%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','request-promise','lodash','mustache','trigger','exec','toUpperCase','render','data2','data5','number','headers','data6','parse','error','GET','DELETE','PUT','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','data1','statusCode','catch'];(function(_0xa9a245,_0x2a0387){var _0x2d0eaa=function(_0x2bba86){while(--_0x2bba86){_0xa9a245['push'](_0xa9a245['shift']());}};_0x2d0eaa(++_0x2a0387);}(_0x6b16,0x19a));var _0x66b1=function(_0x5e42a7,_0x3eba35){_0x5e42a7=_0x5e42a7-0x0;var _0x36d21b=_0x6b16[_0x5e42a7];return _0x36d21b;};'use strict';var rp=require(_0x66b1('0x0'));var util=require('util');var _=require(_0x66b1('0x1'));var Mustache=require(_0x66b1('0x2'));var logger=require('../../../../config/logger')(_0x66b1('0x3'));exports[_0x66b1('0x4')]=function(_0x1bf455,_0xa2d118){var _0x2d5665,_0x4f9233;var _0x1d330b={'method':_0x1bf455['data1'][_0x66b1('0x5')](),'uri':Mustache[_0x66b1('0x6')](_0x1bf455[_0x66b1('0x7')],_0xa2d118),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x1bf455[_0x66b1('0x8')])===_0x66b1('0x9')&&parseInt(_0x1bf455[_0x66b1('0x8')])>=0x1&&parseInt(_0x1bf455[_0x66b1('0x8')])<=0xa?parseInt(_0x1bf455['data5'])*0x3e8:0x5*0x3e8};try{_0x1d330b[_0x66b1('0xa')]=_0x1bf455[_0x66b1('0xb')]?JSON[_0x66b1('0xc')](Mustache['render'](_0x1bf455[_0x66b1('0xb')],_0xa2d118)):{};}catch(_0x314e14){logger[_0x66b1('0xd')](_0x314e14['stack']);}switch(_0x1bf455['data1'][_0x66b1('0x5')]()){case _0x66b1('0xe'):case _0x66b1('0xf'):_0x2d5665=null;_0x1d330b['qs']=_0xa2d118;break;case'POST':case _0x66b1('0x10'):if(_0x1bf455[_0x66b1('0x11')]){try{_0x2d5665=JSON[_0x66b1('0xc')](Mustache['render'](_0x1bf455['data7'],_0xa2d118));_0x1d330b[_0x66b1('0x12')]=_0x2d5665;}catch(_0x350e67){logger[_0x66b1('0xd')](_0x350e67[_0x66b1('0x13')]);logger[_0x66b1('0xd')](_0x66b1('0x14'));}}else{_0x2d5665=_0xa2d118;_0x1d330b[_0x66b1('0x12')]=_0x2d5665;}break;}logger[_0x66b1('0x15')](util[_0x66b1('0x16')](_0x66b1('0x17'),_0x1bf455['data1'],_0x1bf455['data2'],JSON['stringify'](_0x1d330b)));rp(_0x1d330b)['then'](function(_0x5e3fb8){_0x2d5665=!_[_0x66b1('0x18')](_0x2d5665)?_0x66b1('0x19')+_0x2d5665:'';_0x4f9233=typeof _0x5e3fb8[_0x66b1('0x12')]===_0x66b1('0x1a')?JSON[_0x66b1('0x1b')](_0x5e3fb8['body']):_0x5e3fb8['body'];logger[_0x66b1('0x15')](util[_0x66b1('0x16')](_0x66b1('0x1c'),_0x1bf455[_0x66b1('0x1d')],_0x1bf455[_0x66b1('0x7')],_0x5e3fb8[_0x66b1('0x1e')],_0x4f9233));})[_0x66b1('0x1f')](function(_0x2c91ed){logger[_0x66b1('0xd')](util[_0x66b1('0x16')](_0x66b1('0x20'),_0x1bf455[_0x66b1('0x1d')],_0x1bf455[_0x66b1('0x7')],_0x2c91ed[_0x66b1('0x1e')],_0x2c91ed[_0x66b1('0x21')],_0x2c91ed['message']));});};
\ No newline at end of file
+var _0xd9d4=['request-promise','util','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','data2','data5','number','headers','data6','parse','render','error','stack','DELETE','POST','PUT','data7','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','name','message'];(function(_0x21275e,_0xe73261){var _0x1474b0=function(_0x3b8e16){while(--_0x3b8e16){_0x21275e['push'](_0x21275e['shift']());}};_0x1474b0(++_0xe73261);}(_0xd9d4,0x1ef));var _0x4d9d=function(_0x47a12a,_0x70f591){_0x47a12a=_0x47a12a-0x0;var _0x30cd40=_0xd9d4[_0x47a12a];return _0x30cd40;};'use strict';var rp=require(_0x4d9d('0x0'));var util=require(_0x4d9d('0x1'));var _=require(_0x4d9d('0x2'));var Mustache=require(_0x4d9d('0x3'));var logger=require(_0x4d9d('0x4'))('trigger');exports[_0x4d9d('0x5')]=function(_0xe32fb9,_0x36e83f){var _0x2c8314,_0x3fc724;var _0x10cd3a={'method':_0xe32fb9[_0x4d9d('0x6')][_0x4d9d('0x7')](),'uri':Mustache['render'](_0xe32fb9[_0x4d9d('0x8')],_0x36e83f),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0xe32fb9[_0x4d9d('0x9')])===_0x4d9d('0xa')&&parseInt(_0xe32fb9[_0x4d9d('0x9')])>=0x1&&parseInt(_0xe32fb9[_0x4d9d('0x9')])<=0xa?parseInt(_0xe32fb9[_0x4d9d('0x9')])*0x3e8:0x5*0x3e8};try{_0x10cd3a[_0x4d9d('0xb')]=_0xe32fb9[_0x4d9d('0xc')]?JSON[_0x4d9d('0xd')](Mustache[_0x4d9d('0xe')](_0xe32fb9[_0x4d9d('0xc')],_0x36e83f)):{};}catch(_0x2ad4f6){logger[_0x4d9d('0xf')](_0x2ad4f6[_0x4d9d('0x10')]);}switch(_0xe32fb9[_0x4d9d('0x6')][_0x4d9d('0x7')]()){case'GET':case _0x4d9d('0x11'):_0x2c8314=null;_0x10cd3a['qs']=_0x36e83f;break;case _0x4d9d('0x12'):case _0x4d9d('0x13'):if(_0xe32fb9[_0x4d9d('0x14')]){try{_0x2c8314=JSON['parse'](Mustache[_0x4d9d('0xe')](_0xe32fb9[_0x4d9d('0x14')],_0x36e83f));_0x10cd3a[_0x4d9d('0x15')]=_0x2c8314;}catch(_0x368767){logger[_0x4d9d('0xf')](_0x368767[_0x4d9d('0x10')]);logger[_0x4d9d('0xf')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x2c8314=_0x36e83f;_0x10cd3a[_0x4d9d('0x15')]=_0x2c8314;}break;}logger[_0x4d9d('0x16')](util[_0x4d9d('0x17')](_0x4d9d('0x18'),_0xe32fb9[_0x4d9d('0x6')],_0xe32fb9[_0x4d9d('0x8')],JSON[_0x4d9d('0x19')](_0x10cd3a)));rp(_0x10cd3a)[_0x4d9d('0x1a')](function(_0x9752f5){_0x2c8314=!_[_0x4d9d('0x1b')](_0x2c8314)?',\x20request\x20body:\x20'+_0x2c8314:'';_0x3fc724=typeof _0x9752f5[_0x4d9d('0x15')]==='object'?JSON['stringify'](_0x9752f5[_0x4d9d('0x15')]):_0x9752f5['body'];logger[_0x4d9d('0x16')](util[_0x4d9d('0x17')](_0x4d9d('0x1c'),_0xe32fb9['data1'],_0xe32fb9[_0x4d9d('0x8')],_0x9752f5[_0x4d9d('0x1d')],_0x3fc724));})[_0x4d9d('0x1e')](function(_0x23181e){logger[_0x4d9d('0xf')](util[_0x4d9d('0x17')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0xe32fb9[_0x4d9d('0x6')],_0xe32fb9[_0x4d9d('0x8')],_0x23181e[_0x4d9d('0x1d')],_0x23181e[_0x4d9d('0x1f')],_0x23181e[_0x4d9d('0x20')]));});};
\ No newline at end of file
index 96b29ed..644cf07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1eb=['debug','rpc','error','message','result','catch','../../config/logger','routing','client','Request','request','then'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xf1eb,0xde));var _0xbf1e=function(_0x570579,_0x56613d){_0x570579=_0x570579-0x0;var _0x3f2a31=_0xf1eb[_0x570579];return _0x3f2a31;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xbf1e('0x0'))(_0xbf1e('0x1'));var client=jayson[_0xbf1e('0x2')]['http']({'port':0x2329});client[_0xbf1e('0x3')]=function(_0x312987,_0xc0f342){return new BPromise(function(_0x1db08e,_0x597152){return client[_0xbf1e('0x4')](_0x312987,_0xc0f342)[_0xbf1e('0x5')](function(_0x26f431){logger[_0xbf1e('0x6')](_0xbf1e('0x7'),'routing',_0x312987,_0xc0f342,_0x26f431);if(_0x26f431[_0xbf1e('0x8')]){logger['error'](_0xbf1e('0x7'),_0xbf1e('0x1'),_0x312987,_0x26f431[_0xbf1e('0x8')][_0xbf1e('0x9')],_0xc0f342);return _0x597152(_0x26f431[_0xbf1e('0x8')][_0xbf1e('0x9')]);}else{return _0x1db08e(_0x26f431[_0xbf1e('0xa')]);}})[_0xbf1e('0xb')](function(_0x568805){logger[_0xbf1e('0x8')](_0xbf1e('0x7'),_0xbf1e('0x1'),_0x312987,_0x568805,_0xc0f342);return _0x597152(_0x568805);});});};module['exports']=client;
\ No newline at end of file
+var _0x6b79=['message','exports','../../config/logger','routing','http','request','debug','rpc','error'];(function(_0x1bcd55,_0x136bca){var _0x4b8f02=function(_0x3259dc){while(--_0x3259dc){_0x1bcd55['push'](_0x1bcd55['shift']());}};_0x4b8f02(++_0x136bca);}(_0x6b79,0x1a0));var _0x96b7=function(_0x29db16,_0xd811ad){_0x29db16=_0x29db16-0x0;var _0x4b508e=_0x6b79[_0x29db16];return _0x4b508e;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x96b7('0x0'))(_0x96b7('0x1'));var client=jayson['client'][_0x96b7('0x2')]({'port':0x2329});client['Request']=function(_0x4ffc2d,_0x52e447){return new BPromise(function(_0x1f04d7,_0x48c618){return client[_0x96b7('0x3')](_0x4ffc2d,_0x52e447)['then'](function(_0x2bb845){logger[_0x96b7('0x4')](_0x96b7('0x5'),_0x96b7('0x1'),_0x4ffc2d,_0x52e447,_0x2bb845);if(_0x2bb845['error']){logger[_0x96b7('0x6')](_0x96b7('0x5'),_0x96b7('0x1'),_0x4ffc2d,_0x2bb845['error'][_0x96b7('0x7')],_0x52e447);return _0x48c618(_0x2bb845['error'][_0x96b7('0x7')]);}else{return _0x1f04d7(_0x2bb845['result']);}})['catch'](function(_0x55b5f4){logger['error'](_0x96b7('0x5'),_0x96b7('0x1'),_0x4ffc2d,_0x55b5f4,_0x52e447);return _0x48c618(_0x55b5f4);});});};module[_0x96b7('0x8')]=client;
\ No newline at end of file
index d49fc28..794b81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x389b=['mailAccounts','listen','loginMailFrequency','catch','Email\x20service\x20initialization','./realtime','./rpc/mailAccount','./rpc/setting','email','resolve','then','getMailAccounts','refresh'];(function(_0x55a839,_0x1b457c){var _0x275436=function(_0x4d3c10){while(--_0x4d3c10){_0x55a839['push'](_0x55a839['shift']());}};_0x275436(++_0x1b457c);}(_0x389b,0xfc));var _0xb389=function(_0x2ff1f6,_0x1bc588){_0x2ff1f6=_0x2ff1f6-0x0;var _0xbae96d=_0x389b[_0x2ff1f6];return _0xbae96d;};'use strict';var server=require('./server');var Realtime=require(_0xb389('0x0'));var EmailChannel=require('./lib/email');var mailAccount=require(_0xb389('0x1'));var setting=require(_0xb389('0x2'));var logger=require('../../config/logger')(_0xb389('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0xb389('0x4')]()[_0xb389('0x5')](mailAccount[_0xb389('0x6')]())[_0xb389('0x5')](realtime['initMailAccounts']())['then'](function(){email[_0xb389('0x7')](realtime[_0xb389('0x8')]);return realtime;});}function main(){return server[_0xb389('0x9')](realtime,email)[_0xb389('0x5')](function(){return initRealtime();})[_0xb389('0x5')](function(){return setting['getSettings']();})['then'](function(_0x313fc5){return setInterval(initRealtime,_0x313fc5[_0xb389('0xa')]*0x3e8);})[_0xb389('0xb')](function(_0x9167d8){logger['error'](_0xb389('0xc'),_0x9167d8);});}main();
\ No newline at end of file
+var _0x8e57=['then','getMailAccounts','initMailAccounts','error','Email\x20service\x20initialization','./server','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve'];(function(_0x3c7570,_0x4001da){var _0x4e5aab=function(_0x3636e1){while(--_0x3636e1){_0x3c7570['push'](_0x3c7570['shift']());}};_0x4e5aab(++_0x4001da);}(_0x8e57,0xdd));var _0x78e5=function(_0x212188,_0x45caed){_0x212188=_0x212188-0x0;var _0x433b1d=_0x8e57[_0x212188];return _0x433b1d;};'use strict';var server=require(_0x78e5('0x0'));var Realtime=require('./realtime');var EmailChannel=require(_0x78e5('0x1'));var mailAccount=require(_0x78e5('0x2'));var setting=require(_0x78e5('0x3'));var logger=require(_0x78e5('0x4'))(_0x78e5('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x78e5('0x6')]()[_0x78e5('0x7')](mailAccount[_0x78e5('0x8')]())['then'](realtime[_0x78e5('0x9')]())[_0x78e5('0x7')](function(){email['refresh'](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0x78e5('0x7')](function(){return initRealtime();})[_0x78e5('0x7')](function(){return setting['getSettings']();})[_0x78e5('0x7')](function(_0x548f1b){return setInterval(initRealtime,_0x548f1b['loginMailFrequency']*0x3e8);})['catch'](function(_0x592965){logger[_0x78e5('0xa')](_0x78e5('0xb'),_0x592965);});}main();
\ No newline at end of file
index 5e847a3..e24d4c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5872=['connected','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','stringify','lastSync','sendMail','send','verifySmtp','Smtp','verify','verified','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','key','active','Imap','status','messageStatus','total','isNil','mailAccount:update','hasOwnProperty','provider','custom','imapAccounts','bind','end','handleImapEnd','error','handleImapError','disabled'];(function(_0x4d5c21,_0x3c7885){var _0x527626=function(_0x31fe4a){while(--_0x31fe4a){_0x4d5c21['push'](_0x4d5c21['shift']());}};_0x527626(++_0x3c7885);}(_0x5872,0xbf));var _0x2587=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x5872[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0x2587('0x0'));var moment=require(_0x2587('0x1'));var BPromise=require(_0x2587('0x2'));var md5=require(_0x2587('0x3'));var Redis=require(_0x2587('0x4'));var config=require(_0x2587('0x5'));var logger=require(_0x2587('0x6'))(_0x2587('0x7'));config[_0x2587('0x8')]=_[_0x2587('0x9')](config[_0x2587('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x2587('0xa'))(new Redis(config[_0x2587('0x8')]));var EmailImap=require(_0x2587('0xb'));var EmailSmtp=require(_0x2587('0xc'));var mailAccount=require(_0x2587('0xd'));var md5Accounts={};function EmailChannel(_0x15b4a8){logger['info'](_0x2587('0xe'));this[_0x2587('0xf')]=_0x15b4a8[_0x2587('0xf')];this['imapAccounts']={};this[_0x2587('0x10')]=new EmailSmtp();}EmailChannel[_0x2587('0x11')][_0x2587('0x12')]=function(_0x1c006d){var _0x1732ca=this[_0x2587('0xf')][_0x1c006d];var _0x1bad70={'id':_0x1732ca['id'],'name':_0x1732ca['name'],'key':_0x1732ca[_0x2587('0x13')],'active':_0x1732ca[_0x2587('0x14')],'Imap':{'status':_0x1732ca[_0x2587('0x15')][_0x2587('0x16')],'messageStatus':_0x1732ca['Imap'][_0x2587('0x17')],'total':_0x1732ca[_0x2587('0x15')][_0x2587('0x18')]}};if(_[_0x2587('0x19')](md5Accounts[_0x1c006d])){md5Accounts[_0x1c006d]={};}var _0xf8e27f=md5(JSON['stringify'](_0x1bad70));if(md5Accounts[_0x1c006d][_0x2587('0x3')]!==_0xf8e27f){md5Accounts[_0x1c006d][_0x2587('0x3')]=_0xf8e27f;io[_0x2587('0x12')](_0x2587('0x1a'),_0x1bad70);}};EmailChannel[_0x2587('0x11')]['refresh']=function(_0x2f9cc2){for(var _0x51eb28 in _0x2f9cc2){if(_0x2f9cc2[_0x2587('0x1b')](_0x51eb28)){if(_0x2f9cc2[_0x51eb28]['Imap']&&_0x2f9cc2[_0x51eb28][_0x2587('0x14')]){var _0x3a3928=_0x2f9cc2[_0x51eb28][_0x2587('0x15')];if(!_0x3a3928['service']&&_0x2f9cc2[_0x51eb28][_0x2587('0x1c')]!==_0x2587('0x1d'))_0x3a3928['service']=_0x2f9cc2[_0x51eb28][_0x2587('0x1c')];if(!this[_0x2587('0x1e')][_0x2587('0x1b')](_0x3a3928['id'])){this[_0x2587('0x1e')][_0x3a3928['id']]=new EmailImap(_0x3a3928,_0x2f9cc2[_0x51eb28][_0x2587('0x7')]);this[_0x2587('0x1e')][_0x3a3928['id']]['on']('box',this['handleImapBox']['bind'](this,_0x51eb28));this[_0x2587('0x1e')][_0x3a3928['id']]['on'](_0x2587('0x7'),this['handleImapEmail'][_0x2587('0x1f')](this,_0x51eb28));this['imapAccounts'][_0x3a3928['id']]['on'](_0x2587('0x20'),this[_0x2587('0x21')][_0x2587('0x1f')](this,_0x51eb28));this[_0x2587('0x1e')][_0x3a3928['id']]['on'](_0x2587('0x22'),this[_0x2587('0x23')][_0x2587('0x1f')](this,_0x51eb28));}}else{if(_[_0x2587('0x19')](this[_0x2587('0xf')][_0x51eb28][_0x2587('0x15')])){this[_0x2587('0xf')][_0x51eb28][_0x2587('0x15')]={};}this[_0x2587('0xf')][_0x51eb28][_0x2587('0x15')][_0x2587('0x16')]=_0x2587('0x24');this['mailAccounts'][_0x51eb28][_0x2587('0x15')][_0x2587('0x17')]='';this[_0x2587('0x12')](_0x51eb28);}}}};EmailChannel[_0x2587('0x11')]['handleImapBox']=function(_0x3f1f4d,_0x2ff5c5){if(this[_0x2587('0xf')][_0x3f1f4d]){this['mailAccounts'][_0x3f1f4d][_0x2587('0x15')][_0x2587('0x16')]=_0x2587('0x25');this[_0x2587('0xf')][_0x3f1f4d][_0x2587('0x15')][_0x2587('0x17')]=_0x2ff5c5['name'];if(_0x2ff5c5[_0x2587('0x26')]){this[_0x2587('0xf')][_0x3f1f4d]['Imap']['total']=_0x2ff5c5['messages']['total'];}return this['emit'](_0x3f1f4d);}};EmailChannel['prototype']['handleImapEmail']=function(_0x2dd2ec,_0x47e670){logger[_0x2587('0x27')](_0x2587('0x28'),_0x47e670[_0x2587('0x29')],_0x47e670[_0x2587('0x2a')],_0x47e670[_0x2587('0x2b')],_0x2dd2ec);if(this[_0x2587('0xf')][_0x2dd2ec]){return mailAccount[_0x2587('0x2c')](_0x2dd2ec,_0x47e670)[_0x2587('0x2d')](function(_0x479f5d){if(_0x479f5d){logger[_0x2587('0x27')](_0x2587('0x2e'));}})[_0x2587('0x2f')](function(_0x548def){logger[_0x2587('0x22')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x2587('0x30')](_0x548def));});}};EmailChannel['prototype'][_0x2587('0x21')]=function(_0x4ccdb0){if(this['mailAccounts'][_0x4ccdb0]&&this[_0x2587('0xf')][_0x4ccdb0]['Imap']){if(this['imapAccounts'][this[_0x2587('0xf')][_0x4ccdb0]['Imap']['id']]){delete this[_0x2587('0x1e')][this[_0x2587('0xf')][_0x4ccdb0][_0x2587('0x15')]['id']];}this[_0x2587('0xf')][_0x4ccdb0][_0x2587('0x15')][_0x2587('0x31')]=moment();this[_0x2587('0x12')](_0x4ccdb0);}};EmailChannel['prototype'][_0x2587('0x23')]=function(_0x3d63e5,_0x3a8543){if(this[_0x2587('0xf')][_0x3d63e5]){this[_0x2587('0xf')][_0x3d63e5][_0x2587('0x15')]['status']=_0x2587('0x22');this[_0x2587('0xf')][_0x3d63e5][_0x2587('0x15')][_0x2587('0x17')]=_0x3a8543;return this[_0x2587('0x12')](_0x3d63e5);}};EmailChannel[_0x2587('0x11')][_0x2587('0x32')]=function(_0x6755f6,_0x34bb4e){return this[_0x2587('0x10')][_0x2587('0x33')](_0x6755f6,_0x34bb4e);};EmailChannel[_0x2587('0x11')][_0x2587('0x34')]=function(_0x4bff3a){var _0x114b5c=this;if(this[_0x2587('0xf')][_0x4bff3a['id']]){if(_[_0x2587('0x19')](this['mailAccounts'][_0x4bff3a['id']]['Smtp'])){this[_0x2587('0xf')][_0x4bff3a['id']]['Smtp']={};}this[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')]['lastSync']=moment();return new BPromise(function(_0x8a95cf,_0x4d9ddb){return _0x114b5c['smtp'][_0x2587('0x36')](_0x4bff3a)[_0x2587('0x2d')](function(_0x1536a8){_0x114b5c['mailAccounts'][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x16')]=_0x2587('0x37');_0x114b5c[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x17')]='';_0x114b5c[_0x2587('0x12')](_0x4bff3a['id']);_0x8a95cf(_0x1536a8);})[_0x2587('0x2f')](function(_0xccceb5){_0x114b5c[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x16')]=_0x2587('0x22');_0x114b5c[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x17')]=_0xccceb5;_0x114b5c[_0x2587('0x12')](_0x4bff3a['id']);_0x4d9ddb(_0xccceb5);});});}return this[_0x2587('0x10')]['verify'](_0x4bff3a);};module[_0x2587('0x38')]=EmailChannel;
\ No newline at end of file
+var _0xce62=['custom','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','disabled','messageStatus','connected','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','from','notify','then','info','Mail\x20accepted\x20from\x20routing','catch','stringify','lastSync','sendMail','send','verifySmtp','Smtp','verified','exports','moment','bluebird','md5','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','status','total','isNil','mailAccount:update','hasOwnProperty','service','provider'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xce62,0x1e3));var _0x2ce6=function(_0x55412f,_0x46d43c){_0x55412f=_0x55412f-0x0;var _0x522371=_0xce62[_0x55412f];return _0x522371;};'use strict';var _=require('lodash');var moment=require(_0x2ce6('0x0'));var BPromise=require(_0x2ce6('0x1'));var md5=require(_0x2ce6('0x2'));var Redis=require('ioredis');var config=require(_0x2ce6('0x3'));var logger=require(_0x2ce6('0x4'))(_0x2ce6('0x5'));config[_0x2ce6('0x6')]=_[_0x2ce6('0x7')](config['redis'],{'host':_0x2ce6('0x8'),'port':0x18eb});var io=require(_0x2ce6('0x9'))(new Redis(config[_0x2ce6('0x6')]));var EmailImap=require(_0x2ce6('0xa'));var EmailSmtp=require(_0x2ce6('0xb'));var mailAccount=require(_0x2ce6('0xc'));var md5Accounts={};function EmailChannel(_0x33bfff){logger['info'](_0x2ce6('0xd'));this[_0x2ce6('0xe')]=_0x33bfff['mailAccounts'];this[_0x2ce6('0xf')]={};this[_0x2ce6('0x10')]=new EmailSmtp();}EmailChannel[_0x2ce6('0x11')][_0x2ce6('0x12')]=function(_0x364aac){var _0x4df24e=this[_0x2ce6('0xe')][_0x364aac];var _0x2888ef={'id':_0x4df24e['id'],'name':_0x4df24e[_0x2ce6('0x13')],'key':_0x4df24e[_0x2ce6('0x14')],'active':_0x4df24e[_0x2ce6('0x15')],'Imap':{'status':_0x4df24e[_0x2ce6('0x16')][_0x2ce6('0x17')],'messageStatus':_0x4df24e[_0x2ce6('0x16')]['messageStatus'],'total':_0x4df24e[_0x2ce6('0x16')][_0x2ce6('0x18')]}};if(_[_0x2ce6('0x19')](md5Accounts[_0x364aac])){md5Accounts[_0x364aac]={};}var _0x1272ab=md5(JSON['stringify'](_0x2888ef));if(md5Accounts[_0x364aac][_0x2ce6('0x2')]!==_0x1272ab){md5Accounts[_0x364aac][_0x2ce6('0x2')]=_0x1272ab;io['emit'](_0x2ce6('0x1a'),_0x2888ef);}};EmailChannel['prototype']['refresh']=function(_0x59ee99){for(var _0x45b6b2 in _0x59ee99){if(_0x59ee99[_0x2ce6('0x1b')](_0x45b6b2)){if(_0x59ee99[_0x45b6b2]['Imap']&&_0x59ee99[_0x45b6b2][_0x2ce6('0x15')]){var _0x1c3165=_0x59ee99[_0x45b6b2][_0x2ce6('0x16')];if(!_0x1c3165[_0x2ce6('0x1c')]&&_0x59ee99[_0x45b6b2][_0x2ce6('0x1d')]!==_0x2ce6('0x1e'))_0x1c3165[_0x2ce6('0x1c')]=_0x59ee99[_0x45b6b2][_0x2ce6('0x1d')];if(!this['imapAccounts'][_0x2ce6('0x1b')](_0x1c3165['id'])){this[_0x2ce6('0xf')][_0x1c3165['id']]=new EmailImap(_0x1c3165,_0x59ee99[_0x45b6b2][_0x2ce6('0x5')]);this['imapAccounts'][_0x1c3165['id']]['on'](_0x2ce6('0x1f'),this[_0x2ce6('0x20')][_0x2ce6('0x21')](this,_0x45b6b2));this[_0x2ce6('0xf')][_0x1c3165['id']]['on']('email',this[_0x2ce6('0x22')]['bind'](this,_0x45b6b2));this['imapAccounts'][_0x1c3165['id']]['on'](_0x2ce6('0x23'),this[_0x2ce6('0x24')][_0x2ce6('0x21')](this,_0x45b6b2));this[_0x2ce6('0xf')][_0x1c3165['id']]['on'](_0x2ce6('0x25'),this[_0x2ce6('0x26')][_0x2ce6('0x21')](this,_0x45b6b2));}}else{if(_[_0x2ce6('0x19')](this[_0x2ce6('0xe')][_0x45b6b2][_0x2ce6('0x16')])){this[_0x2ce6('0xe')][_0x45b6b2][_0x2ce6('0x16')]={};}this[_0x2ce6('0xe')][_0x45b6b2]['Imap'][_0x2ce6('0x17')]=_0x2ce6('0x27');this['mailAccounts'][_0x45b6b2][_0x2ce6('0x16')][_0x2ce6('0x28')]='';this['emit'](_0x45b6b2);}}}};EmailChannel[_0x2ce6('0x11')][_0x2ce6('0x20')]=function(_0x22df7d,_0x209f9d){if(this[_0x2ce6('0xe')][_0x22df7d]){this['mailAccounts'][_0x22df7d]['Imap'][_0x2ce6('0x17')]=_0x2ce6('0x29');this[_0x2ce6('0xe')][_0x22df7d][_0x2ce6('0x16')][_0x2ce6('0x28')]=_0x209f9d[_0x2ce6('0x13')];if(_0x209f9d['messages']){this[_0x2ce6('0xe')][_0x22df7d][_0x2ce6('0x16')][_0x2ce6('0x18')]=_0x209f9d['messages'][_0x2ce6('0x18')];}return this['emit'](_0x22df7d);}};EmailChannel[_0x2ce6('0x11')][_0x2ce6('0x22')]=function(_0x17eb36,_0x18307b){logger['info'](_0x2ce6('0x2a'),_0x18307b['firstName'],_0x18307b['lastName'],_0x18307b[_0x2ce6('0x2b')],_0x17eb36);if(this[_0x2ce6('0xe')][_0x17eb36]){return mailAccount[_0x2ce6('0x2c')](_0x17eb36,_0x18307b)[_0x2ce6('0x2d')](function(_0x1f0e3d){if(_0x1f0e3d){logger[_0x2ce6('0x2e')](_0x2ce6('0x2f'));}})[_0x2ce6('0x30')](function(_0x4f1e75){logger[_0x2ce6('0x25')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x2ce6('0x31')](_0x4f1e75));});}};EmailChannel[_0x2ce6('0x11')][_0x2ce6('0x24')]=function(_0x1a0db3){if(this['mailAccounts'][_0x1a0db3]&&this[_0x2ce6('0xe')][_0x1a0db3][_0x2ce6('0x16')]){if(this[_0x2ce6('0xf')][this[_0x2ce6('0xe')][_0x1a0db3][_0x2ce6('0x16')]['id']]){delete this[_0x2ce6('0xf')][this[_0x2ce6('0xe')][_0x1a0db3][_0x2ce6('0x16')]['id']];}this[_0x2ce6('0xe')][_0x1a0db3][_0x2ce6('0x16')][_0x2ce6('0x32')]=moment();this[_0x2ce6('0x12')](_0x1a0db3);}};EmailChannel[_0x2ce6('0x11')][_0x2ce6('0x26')]=function(_0x1950ea,_0x36e9f3){if(this[_0x2ce6('0xe')][_0x1950ea]){this[_0x2ce6('0xe')][_0x1950ea][_0x2ce6('0x16')]['status']=_0x2ce6('0x25');this[_0x2ce6('0xe')][_0x1950ea][_0x2ce6('0x16')]['messageStatus']=_0x36e9f3;return this[_0x2ce6('0x12')](_0x1950ea);}};EmailChannel[_0x2ce6('0x11')][_0x2ce6('0x33')]=function(_0x3b0525,_0x5acb37){return this[_0x2ce6('0x10')][_0x2ce6('0x34')](_0x3b0525,_0x5acb37);};EmailChannel[_0x2ce6('0x11')][_0x2ce6('0x35')]=function(_0x584c5c){var _0x270e37=this;if(this[_0x2ce6('0xe')][_0x584c5c['id']]){if(_[_0x2ce6('0x19')](this[_0x2ce6('0xe')][_0x584c5c['id']][_0x2ce6('0x36')])){this[_0x2ce6('0xe')][_0x584c5c['id']]['Smtp']={};}this['mailAccounts'][_0x584c5c['id']][_0x2ce6('0x36')][_0x2ce6('0x32')]=moment();return new BPromise(function(_0x55bb86,_0x6bfce7){return _0x270e37[_0x2ce6('0x10')]['verify'](_0x584c5c)[_0x2ce6('0x2d')](function(_0x9b6a8b){_0x270e37[_0x2ce6('0xe')][_0x584c5c['id']][_0x2ce6('0x36')][_0x2ce6('0x17')]=_0x2ce6('0x37');_0x270e37[_0x2ce6('0xe')][_0x584c5c['id']][_0x2ce6('0x36')][_0x2ce6('0x28')]='';_0x270e37[_0x2ce6('0x12')](_0x584c5c['id']);_0x55bb86(_0x9b6a8b);})['catch'](function(_0x42afe0){_0x270e37[_0x2ce6('0xe')][_0x584c5c['id']]['Smtp'][_0x2ce6('0x17')]=_0x2ce6('0x25');_0x270e37['mailAccounts'][_0x584c5c['id']][_0x2ce6('0x36')][_0x2ce6('0x28')]=_0x42afe0;_0x270e37[_0x2ce6('0x12')](_0x584c5c['id']);_0x6bfce7(_0x42afe0);});});}return this[_0x2ce6('0x10')]['verify'](_0x584c5c);};module[_0x2ce6('0x38')]=EmailChannel;
\ No newline at end of file
index e314595..e88a573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb1=['box','readUnseen','handleCloseBox','UNSEEN','handleReadUnseen','length','fetch','handleFetchMessage','handleFetchError','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','textCode','hasOwnProperty','util','imap','mailparser','simpleParser','iconv','Iconv','events','EventEmitter','../../../config/logger','email','mailbox','account','once','ready','handleReady','bind','end','handleEnd','error','handleError','connect','inherits','prototype','getAccount','connTimeout','authTimeout','user','modernAuthentication','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','emit'];(function(_0x34977a,_0x104e0d){var _0x11dec3=function(_0x55b9d5){while(--_0x55b9d5){_0x34977a['push'](_0x34977a['shift']());}};_0x11dec3(++_0x104e0d);}(_0xadb1,0x182));var _0x1adb=function(_0x267d22,_0x280acd){_0x267d22=_0x267d22-0x0;var _0x3d032b=_0xadb1[_0x267d22];return _0x3d032b;};'use strict';var _=require('lodash');var util=require(_0x1adb('0x0'));var Imap=require(_0x1adb('0x1'));var simpleParser=require(_0x1adb('0x2'))[_0x1adb('0x3')];var Iconv=require(_0x1adb('0x4'))[_0x1adb('0x5')];var EventEmitter=require(_0x1adb('0x6'))[_0x1adb('0x7')];var utils=require('./utils');var logger=require(_0x1adb('0x8'))(_0x1adb('0x9'));function EmailImap(_0x4cea43,_0x3b59db){this['mailbox']=_0x4cea43[_0x1adb('0xa')];this[_0x1adb('0xb')]=this['getAccount'](_0x4cea43,_0x3b59db);this[_0x1adb('0x1')]=new Imap(this[_0x1adb('0xb')]);this[_0x1adb('0x1')][_0x1adb('0xc')](_0x1adb('0xd'),this[_0x1adb('0xe')][_0x1adb('0xf')](this));this[_0x1adb('0x1')][_0x1adb('0xc')](_0x1adb('0x10'),this[_0x1adb('0x11')][_0x1adb('0xf')](this));this[_0x1adb('0x1')]['on'](_0x1adb('0x12'),this[_0x1adb('0x13')][_0x1adb('0xf')](this));this[_0x1adb('0x1')][_0x1adb('0x14')]();}util[_0x1adb('0x15')](EmailImap,EventEmitter);EmailImap[_0x1adb('0x16')][_0x1adb('0x17')]=function(_0x356b33,_0x476fd8){var _0x17f074={'connTimeout':_0x356b33['connTimeout']?_0x356b33[_0x1adb('0x18')]*0x3e8:0x2710,'authTimeout':_0x356b33[_0x1adb('0x19')]?_0x356b33[_0x1adb('0x19')]*0x3e8:0x1388};if(_0x356b33['service']){_0x17f074[_0x1adb('0x1a')]=_0x356b33['user'];if(_0x356b33[_0x1adb('0x1b')]){_0x17f074['xoauth2']=utils['generateXOAuth2Token'](_0x356b33[_0x1adb('0x1c')][_0x1adb('0x1d')],_0x356b33[_0x1adb('0x1a')]);}else{_0x17f074['password']=_0x356b33[_0x1adb('0x1e')];}}else{if(_0x356b33[_0x1adb('0x1f')]){_0x17f074[_0x1adb('0x1a')]=_0x356b33[_0x1adb('0x1a')];_0x17f074[_0x1adb('0x1e')]=_0x356b33['password'];}}_0x17f074[_0x1adb('0x9')]=_0x476fd8||_0x356b33[_0x1adb('0x1a')]||_0x1adb('0x20');_0x17f074['host']=_0x356b33[_0x1adb('0x21')];_0x17f074[_0x1adb('0x22')]=_0x356b33[_0x1adb('0x22')]||0x3e1;if(_0x356b33[_0x1adb('0x23')]){_0x17f074[_0x1adb('0x23')]=!![];}else{_0x17f074['tls']=![];_0x17f074[_0x1adb('0x24')]=_0x1adb('0x25');}return _0x17f074;};EmailImap[_0x1adb('0x16')][_0x1adb('0xe')]=function(){this[_0x1adb('0x1')][_0x1adb('0x26')](this[_0x1adb('0xa')],![],this[_0x1adb('0x27')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')][_0x1adb('0x27')]=function(_0x51c569,_0x5c7848){if(_0x51c569){this['handleError'](_0x51c569,!![]);}else{this[_0x1adb('0x28')](_0x1adb('0x29'),_0x5c7848);this[_0x1adb('0x2a')]();}};EmailImap[_0x1adb('0x16')][_0x1adb('0x2b')]=function(_0x35d982){if(_0x35d982){this['handleError'](_0x35d982,!![]);}else{this[_0x1adb('0x1')][_0x1adb('0x10')]();}};EmailImap[_0x1adb('0x16')][_0x1adb('0x2a')]=function(){this[_0x1adb('0x1')]['search']([_0x1adb('0x2c')],this[_0x1adb('0x2d')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')][_0x1adb('0x2d')]=function(_0x1b95fd,_0x11ba9a){if(_0x1b95fd){this[_0x1adb('0x13')](_0x1b95fd,!![]);}else{if(_0x11ba9a[_0x1adb('0x2e')]){try{var _0x57bee3=this['imap'][_0x1adb('0x2f')](_0x11ba9a,{'bodies':'','markSeen':!![]});_0x57bee3['on']('message',this[_0x1adb('0x30')][_0x1adb('0xf')](this));_0x57bee3['once'](_0x1adb('0x12'),this[_0x1adb('0x31')][_0x1adb('0xf')](this));_0x57bee3[_0x1adb('0xc')](_0x1adb('0x10'),this['handleFetchEnd']['bind'](this));}catch(_0x201317){logger[_0x1adb('0x12')](_0x201317);}}else{this[_0x1adb('0x1')][_0x1adb('0x32')](!![],this[_0x1adb('0x2b')][_0x1adb('0xf')](this));}}};EmailImap[_0x1adb('0x16')][_0x1adb('0x30')]=function(_0x94ce7a){_0x94ce7a['on'](_0x1adb('0x33'),this[_0x1adb('0x34')][_0x1adb('0xf')](this));_0x94ce7a['once'](_0x1adb('0x35'),this[_0x1adb('0x36')][_0x1adb('0xf')](this));_0x94ce7a[_0x1adb('0xc')](_0x1adb('0x10'),this[_0x1adb('0x37')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')]['handleMessageBody']=function(_0x238c7f){simpleParser(_0x238c7f,{'Iconv':Iconv},this[_0x1adb('0x38')][_0x1adb('0xf')](this));};EmailImap['prototype'][_0x1adb('0x36')]=function(){};EmailImap[_0x1adb('0x16')]['handleMessageEnd']=function(){};EmailImap[_0x1adb('0x16')][_0x1adb('0x38')]=function(_0x4f7843,_0x439e1e){if(_0x4f7843){logger[_0x1adb('0x12')](_0x4f7843);}else{var _0x507bd4=this;utils[_0x1adb('0x39')](this[_0x1adb('0xb')],_0x439e1e,function(_0x24812a){_0x507bd4[_0x1adb('0x28')](_0x1adb('0x9'),_0x24812a);});}};EmailImap[_0x1adb('0x16')][_0x1adb('0x3a')]=function(){this[_0x1adb('0x1')][_0x1adb('0x32')](!![],this['handleCloseBox'][_0x1adb('0xf')](this));};EmailImap['prototype'][_0x1adb('0x31')]=function(_0x417003){this[_0x1adb('0x13')](_0x417003);this[_0x1adb('0x1')][_0x1adb('0x32')](!![],this[_0x1adb('0x2b')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')][_0x1adb('0x11')]=function(){this[_0x1adb('0x28')](_0x1adb('0x10'));};EmailImap[_0x1adb('0x16')][_0x1adb('0x13')]=function(_0x3653ac,_0x4f15d8){logger[_0x1adb('0x12')]('handleError',this[_0x1adb('0xb')][_0x1adb('0x9')],JSON['stringify'](_0x3653ac));var _0x4d8088='';if(_0x3653ac){if(_0x3653ac['textCode']){_0x4d8088=_0x3653ac[_0x1adb('0x3b')];}else{for(var _0x3a30d5 in _0x3653ac){if(_0x3653ac[_0x1adb('0x3c')](_0x3a30d5)){_0x4d8088+=_['upperFirst'](_0x3a30d5)+':\x20'+_0x3653ac[_0x3a30d5]+'\x0a';}}}}if(_0x4f15d8){this[_0x1adb('0x1')][_0x1adb('0x10')]();}else{this[_0x1adb('0x28')](_0x1adb('0x12'),_0x4d8088);this['emit'](_0x1adb('0x10'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0xccdf=['upperFirst','lodash','util','mailparser','Iconv','events','./utils','../../../config/logger','email','mailbox','account','imap','once','ready','end','error','handleError','bind','connect','inherits','prototype','getAccount','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','password','authentication','anonymous@xcally.com','host','port','tls','autotls','required','handleReady','handleOpenBox','emit','handleCloseBox','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','handleMessageAttributes','parser','handleEnd','stringify','hasOwnProperty'];(function(_0x5aa871,_0x5b2e71){var _0x415516=function(_0x19217e){while(--_0x19217e){_0x5aa871['push'](_0x5aa871['shift']());}};_0x415516(++_0x5b2e71);}(_0xccdf,0xbe));var _0xfccd=function(_0x320fb5,_0x19a9f7){_0x320fb5=_0x320fb5-0x0;var _0x2591e5=_0xccdf[_0x320fb5];return _0x2591e5;};'use strict';var _=require(_0xfccd('0x0'));var util=require(_0xfccd('0x1'));var Imap=require('imap');var simpleParser=require(_0xfccd('0x2'))['simpleParser'];var Iconv=require('iconv')[_0xfccd('0x3')];var EventEmitter=require(_0xfccd('0x4'))['EventEmitter'];var utils=require(_0xfccd('0x5'));var logger=require(_0xfccd('0x6'))(_0xfccd('0x7'));function EmailImap(_0x9485cf,_0x523c54){this[_0xfccd('0x8')]=_0x9485cf['mailbox'];this[_0xfccd('0x9')]=this['getAccount'](_0x9485cf,_0x523c54);this[_0xfccd('0xa')]=new Imap(this[_0xfccd('0x9')]);this[_0xfccd('0xa')][_0xfccd('0xb')](_0xfccd('0xc'),this['handleReady']['bind'](this));this[_0xfccd('0xa')][_0xfccd('0xb')](_0xfccd('0xd'),this['handleEnd']['bind'](this));this[_0xfccd('0xa')]['on'](_0xfccd('0xe'),this[_0xfccd('0xf')][_0xfccd('0x10')](this));this[_0xfccd('0xa')][_0xfccd('0x11')]();}util[_0xfccd('0x12')](EmailImap,EventEmitter);EmailImap[_0xfccd('0x13')][_0xfccd('0x14')]=function(_0x1497b4,_0x2bd703){var _0x261a8d={'connTimeout':_0x1497b4[_0xfccd('0x15')]?_0x1497b4['connTimeout']*0x3e8:0x2710,'authTimeout':_0x1497b4[_0xfccd('0x16')]?_0x1497b4[_0xfccd('0x16')]*0x3e8:0x1388};if(_0x1497b4[_0xfccd('0x17')]){_0x261a8d[_0xfccd('0x18')]=_0x1497b4[_0xfccd('0x18')];if(_0x1497b4[_0xfccd('0x19')]){_0x261a8d[_0xfccd('0x1a')]=utils[_0xfccd('0x1b')](_0x1497b4[_0xfccd('0x1c')]['data5'],_0x1497b4[_0xfccd('0x18')]);}else{_0x261a8d['password']=_0x1497b4[_0xfccd('0x1d')];}}else{if(_0x1497b4[_0xfccd('0x1e')]){_0x261a8d[_0xfccd('0x18')]=_0x1497b4[_0xfccd('0x18')];_0x261a8d[_0xfccd('0x1d')]=_0x1497b4['password'];}}_0x261a8d[_0xfccd('0x7')]=_0x2bd703||_0x1497b4[_0xfccd('0x18')]||_0xfccd('0x1f');_0x261a8d[_0xfccd('0x20')]=_0x1497b4[_0xfccd('0x20')];_0x261a8d['port']=_0x1497b4[_0xfccd('0x21')]||0x3e1;if(_0x1497b4[_0xfccd('0x22')]){_0x261a8d[_0xfccd('0x22')]=!![];}else{_0x261a8d[_0xfccd('0x22')]=![];_0x261a8d[_0xfccd('0x23')]=_0xfccd('0x24');}return _0x261a8d;};EmailImap[_0xfccd('0x13')][_0xfccd('0x25')]=function(){this[_0xfccd('0xa')]['openBox'](this['mailbox'],![],this['handleOpenBox'][_0xfccd('0x10')](this));};EmailImap['prototype'][_0xfccd('0x26')]=function(_0x5d8bae,_0x2efcf1){if(_0x5d8bae){this['handleError'](_0x5d8bae,!![]);}else{this[_0xfccd('0x27')]('box',_0x2efcf1);this['readUnseen']();}};EmailImap[_0xfccd('0x13')][_0xfccd('0x28')]=function(_0x1aaa30){if(_0x1aaa30){this[_0xfccd('0xf')](_0x1aaa30,!![]);}else{this['imap'][_0xfccd('0xd')]();}};EmailImap[_0xfccd('0x13')][_0xfccd('0x29')]=function(){this[_0xfccd('0xa')][_0xfccd('0x2a')]([_0xfccd('0x2b')],this[_0xfccd('0x2c')]['bind'](this));};EmailImap[_0xfccd('0x13')][_0xfccd('0x2c')]=function(_0xfcb81d,_0x528b6a){if(_0xfcb81d){this[_0xfccd('0xf')](_0xfcb81d,!![]);}else{if(_0x528b6a[_0xfccd('0x2d')]){try{var _0x50c192=this['imap'][_0xfccd('0x2e')](_0x528b6a,{'bodies':'','markSeen':!![]});_0x50c192['on'](_0xfccd('0x2f'),this[_0xfccd('0x30')][_0xfccd('0x10')](this));_0x50c192[_0xfccd('0xb')](_0xfccd('0xe'),this[_0xfccd('0x31')]['bind'](this));_0x50c192['once'](_0xfccd('0xd'),this[_0xfccd('0x32')][_0xfccd('0x10')](this));}catch(_0x10b4b0){logger[_0xfccd('0xe')](_0x10b4b0);}}else{this['imap'][_0xfccd('0x33')](!![],this[_0xfccd('0x28')][_0xfccd('0x10')](this));}}};EmailImap[_0xfccd('0x13')][_0xfccd('0x30')]=function(_0x30d21b){_0x30d21b['on'](_0xfccd('0x34'),this[_0xfccd('0x35')][_0xfccd('0x10')](this));_0x30d21b['once'](_0xfccd('0x36'),this['handleMessageAttributes'][_0xfccd('0x10')](this));_0x30d21b[_0xfccd('0xb')](_0xfccd('0xd'),this[_0xfccd('0x37')][_0xfccd('0x10')](this));};EmailImap[_0xfccd('0x13')][_0xfccd('0x35')]=function(_0xd240b5){simpleParser(_0xd240b5,{'Iconv':Iconv},this[_0xfccd('0x38')][_0xfccd('0x10')](this));};EmailImap[_0xfccd('0x13')][_0xfccd('0x39')]=function(){};EmailImap[_0xfccd('0x13')][_0xfccd('0x37')]=function(){};EmailImap[_0xfccd('0x13')][_0xfccd('0x38')]=function(_0x14a8e0,_0x1fb017){if(_0x14a8e0){logger[_0xfccd('0xe')](_0x14a8e0);}else{var _0x6051b3=this;utils[_0xfccd('0x3a')](this[_0xfccd('0x9')],_0x1fb017,function(_0x30a662){_0x6051b3['emit'](_0xfccd('0x7'),_0x30a662);});}};EmailImap[_0xfccd('0x13')]['handleFetchEnd']=function(){this[_0xfccd('0xa')]['closeBox'](!![],this[_0xfccd('0x28')][_0xfccd('0x10')](this));};EmailImap['prototype']['handleFetchError']=function(_0x43ed26){this[_0xfccd('0xf')](_0x43ed26);this[_0xfccd('0xa')][_0xfccd('0x33')](!![],this['handleCloseBox'][_0xfccd('0x10')](this));};EmailImap[_0xfccd('0x13')][_0xfccd('0x3b')]=function(){this['emit'](_0xfccd('0xd'));};EmailImap[_0xfccd('0x13')]['handleError']=function(_0x4249b9,_0x3fc1df){logger[_0xfccd('0xe')](_0xfccd('0xf'),this[_0xfccd('0x9')][_0xfccd('0x7')],JSON[_0xfccd('0x3c')](_0x4249b9));var _0x5ddbca='';if(_0x4249b9){if(_0x4249b9['textCode']){_0x5ddbca=_0x4249b9['textCode'];}else{for(var _0xf9a5ba in _0x4249b9){if(_0x4249b9[_0xfccd('0x3d')](_0xf9a5ba)){_0x5ddbca+=_[_0xfccd('0x3e')](_0xf9a5ba)+':\x20'+_0x4249b9[_0xf9a5ba]+'\x0a';}}}}if(_0x3fc1df){this[_0xfccd('0xa')][_0xfccd('0xd')]();}else{this[_0xfccd('0x27')](_0xfccd('0xe'),_0x5ddbca);this[_0xfccd('0x27')](_0xfccd('0xd'));}};module['exports']=EmailImap;
\ No newline at end of file
index 8e42ac9..67c7797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9f9=['prototype','send','createTransport','use','compile','sendMail','verify','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64'];(function(_0x3f08b9,_0x2bc1fa){var _0x5890fa=function(_0x24c4b3){while(--_0x24c4b3){_0x3f08b9['push'](_0x3f08b9['shift']());}};_0x5890fa(++_0x2bc1fa);}(_0xd9f9,0x106));var _0x9d9f=function(_0x15f1a0,_0x38ae82){_0x15f1a0=_0x15f1a0-0x0;var _0x5bf1e3=_0xd9f9[_0x15f1a0];return _0x5bf1e3;};'use strict';var nodemailer=require(_0x9d9f('0x0'));var inlineBase64=require(_0x9d9f('0x1'));function EmailSmtp(){}EmailSmtp[_0x9d9f('0x2')][_0x9d9f('0x3')]=function(_0x11ebca,_0x43b09b){return new Promise(function(_0x51d313,_0x1b72d3){var _0x50fdc6=nodemailer[_0x9d9f('0x4')](_0x11ebca);_0x50fdc6[_0x9d9f('0x5')](_0x9d9f('0x6'),inlineBase64());_0x50fdc6[_0x9d9f('0x7')](_0x43b09b,function(_0xafb4fe,_0x2e4685){if(_0xafb4fe){_0x1b72d3(_0xafb4fe['toString']());}else{_0x51d313(_0x2e4685);}});});};EmailSmtp['prototype'][_0x9d9f('0x8')]=function(_0x443d06){return new Promise(function(_0x5f529e,_0x339827){var _0x44a7d5=nodemailer[_0x9d9f('0x4')](_0x443d06);_0x44a7d5[_0x9d9f('0x8')](function(_0x4402aa,_0x49d482){if(_0x4402aa){_0x339827(_0x4402aa['toString']());}else{if(_0x49d482){_0x5f529e(_0x49d482);}else{_0x339827(_0x9d9f('0x9'));}}});});};module[_0x9d9f('0xa')]=EmailSmtp;
\ No newline at end of file
+var _0xf0d4=['verify','Not\x20verifired','exports','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','sendMail','toString'];(function(_0x2ac539,_0x2c1d1e){var _0x1ca090=function(_0x52b5c8){while(--_0x52b5c8){_0x2ac539['push'](_0x2ac539['shift']());}};_0x1ca090(++_0x2c1d1e);}(_0xf0d4,0xd4));var _0x4f0d=function(_0x2a0739,_0x148e11){_0x2a0739=_0x2a0739-0x0;var _0x2c0f19=_0xf0d4[_0x2a0739];return _0x2c0f19;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require(_0x4f0d('0x0'));function EmailSmtp(){}EmailSmtp[_0x4f0d('0x1')][_0x4f0d('0x2')]=function(_0x4c45f4,_0x1c9da1){return new Promise(function(_0x420507,_0x51cc00){var _0x2cccbd=nodemailer[_0x4f0d('0x3')](_0x4c45f4);_0x2cccbd[_0x4f0d('0x4')](_0x4f0d('0x5'),inlineBase64());_0x2cccbd[_0x4f0d('0x6')](_0x1c9da1,function(_0x524981,_0x31eb81){if(_0x524981){_0x51cc00(_0x524981[_0x4f0d('0x7')]());}else{_0x420507(_0x31eb81);}});});};EmailSmtp[_0x4f0d('0x1')][_0x4f0d('0x8')]=function(_0x3d364a){return new Promise(function(_0x2ee3a3,_0x58fb0e){var _0x13b8ed=nodemailer[_0x4f0d('0x3')](_0x3d364a);_0x13b8ed['verify'](function(_0x3ec516,_0x5a0b0f){if(_0x3ec516){_0x58fb0e(_0x3ec516[_0x4f0d('0x7')]());}else{if(_0x5a0b0f){_0x2ee3a3(_0x5a0b0f);}else{_0x58fb0e(_0x4f0d('0x9'));}}});});};module[_0x4f0d('0xa')]=EmailSmtp;
\ No newline at end of file
index dbb8593..39a4549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x121a=['replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','includes','bcc','attachments','attach','type','attachment','filename','attachment-','%s-%s','join','root','server/files/attachments/','writeFileSync','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','isAutoreply','parser','from','subject','messageId','inReplyTo','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','content','BodyHTML','Attachments','Title','<p>Empty\x20message</p>','generateXOAuth2Token','user=','utf-8','toString','base64','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','generate','@xcally.com','name','substring','indexOf','split','slice','Anonymous','value','length','isEmpty','html','test','<img','forEach','push'];(function(_0x2c041f,_0x1c246a){var _0x1ed764=function(_0x462c63){while(--_0x462c63){_0x2c041f['push'](_0x2c041f['shift']());}};_0x1ed764(++_0x1c246a);}(_0x121a,0x11d));var _0xa121=function(_0x5936bd,_0x1008df){_0x5936bd=_0x5936bd-0x0;var _0x1bd18d=_0x121a[_0x5936bd];return _0x1bd18d;};'use strict';var _=require(_0xa121('0x0'));var moment=require(_0xa121('0x1'));var random=require(_0xa121('0x2'));var fs=require('fs');var path=require(_0xa121('0x3'));var util=require(_0xa121('0x4'));var tnef=require(_0xa121('0x5'));var logger=require(_0xa121('0x6'))(_0xa121('0x7'));var config=require(_0xa121('0x8'));function getAddress(_0x4c2f36){var _0xba06fa=_[_0xa121('0x9')](_0x4c2f36['value']);return _0xba06fa&&_0xba06fa['address']?_0xba06fa[_0xa121('0xa')]:'anonymous'+random[_0xa121('0xb')](0x6)+_0xa121('0xc');}function getFirstName(_0x5e3ae2){var _0x11bd50=_['head'](_0x5e3ae2['value']);if(_0x11bd50&&_0x11bd50['name']){if(_0x11bd50[_0xa121('0xd')]==_0x11bd50[_0xa121('0xa')]){return _0x11bd50[_0xa121('0xd')][_0xa121('0xe')](0x0,_0x11bd50[_0xa121('0xd')][_0xa121('0xf')]('@'));}var _0x4efd97=_0x11bd50[_0xa121('0xd')][_0xa121('0x10')](/\s+/);return _0x4efd97['length']>0x1?_0x4efd97[_0xa121('0x11')](0x0,-0x1)['join']('\x20'):_0x11bd50[_0xa121('0xd')];}return _0xa121('0x12');}function getLastName(_0x1f9164){var _0x25087c=_['head'](_0x1f9164[_0xa121('0x13')]);if(_0x25087c&&_0x25087c[_0xa121('0xd')]){var _0x3fb793=_0x25087c['name'][_0xa121('0x10')](/\s+/);return _0x3fb793[_0xa121('0x14')]>0x1?_0x3fb793['pop']():'';}return'';}function getMails(_0x1b44b1,_0x3bc619){var _0x1e810e='';for(var _0x59997f=0x0;_0x59997f<_0x3bc619[_0xa121('0x13')]['length'];_0x59997f+=0x1){if(_0x3bc619[_0xa121('0x13')][_0x59997f]['address']!==_0x1b44b1){if(!_[_0xa121('0x15')](_0x1e810e)){_0x1e810e+=',';}_0x1e810e+=_0x3bc619[_0xa121('0x13')][_0x59997f][_0xa121('0xd')]||_0x3bc619[_0xa121('0x13')][_0x59997f]['address']||'';_0x1e810e+='\x20<';_0x1e810e+=_0x3bc619[_0xa121('0x13')][_0x59997f][_0xa121('0xa')]?_0x3bc619[_0xa121('0x13')][_0x59997f][_0xa121('0xa')]:'anonymous'+random[_0xa121('0xb')](0x6)+_0xa121('0xc');_0x1e810e+='>';}}return _0x1e810e;}function parseEmail(_0x13c65d,_0x258054,_0x18c4af){if(_0x258054[_0xa121('0x16')]){var _0x42d375=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x42d375[_0xa121('0x17')](_0x258054[_0xa121('0x16')])){_0x258054[_0xa121('0x16')]=_0x258054[_0xa121('0x16')]['replace'](_0x42d375,'');}if(_0x258054[_0xa121('0x16')]['includes'](_0xa121('0x18'))){var _0x2f2be8=[];_0x258054['attachments'][_0xa121('0x19')](_0x27d4b5=>{_0x2f2be8[_0xa121('0x1a')](_0x27d4b5['filename']);});var _0x2d7b36=/<img.*? _SRC(.*?)[^>]+>/g;var _0x162e48=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x268474=_0x258054[_0xa121('0x16')][_0xa121('0x1b')](_0x162e48,_0xa121('0x1c'));var _0x5aafa9=_0x268474[_0xa121('0x1b')](_0x2d7b36,_0xa121('0x1d'));for(let _0x4f1c51=0x0;_0x4f1c51<_0x2f2be8[_0xa121('0x14')];_0x4f1c51++){var _0x20dff3=_0x5aafa9[_0xa121('0x1b')](_0xa121('0x1d'),_0xa121('0x1e')+_0x2f2be8[_0x4f1c51]+_0xa121('0x1f'));_0x5aafa9=_0x20dff3;}_0x258054[_0xa121('0x16')]=_0x5aafa9;}_0x18c4af[_0xa121('0x20')]=_0x258054[_0xa121('0x16')];}else{_0x18c4af[_0xa121('0x20')]=_0x258054[_0xa121('0x21')];}if(_0x18c4af[_0xa121('0x20')]){_0x18c4af[_0xa121('0x20')]=_0x18c4af[_0xa121('0x20')][_0xa121('0x1b')](/<a\s+/gi,_0xa121('0x22'));}if(_0x258054['to']){_0x18c4af[_0xa121('0x23')][_0xa121('0x24')]=getMails(null,_0x258054['to']);var _0x5bc241=getMails(_0x13c65d[_0xa121('0x7')],_0x258054['to']);if(!_[_0xa121('0x15')](_0x5bc241)){_0x18c4af[_0xa121('0x23')]['cc']+=_0x5bc241;}}if(_0x258054['cc']){_0x18c4af[_0xa121('0x23')][_0xa121('0x25')]=getMails(null,_0x258054['cc']);var _0x53baae=getMails(_0x13c65d[_0xa121('0x7')],_0x258054['cc']);if(!_['isEmpty'](_0x53baae)){if(!_[_0xa121('0x15')](_0x18c4af[_0xa121('0x23')]['cc'])){_0x18c4af['message']['cc']+=',';}_0x18c4af[_0xa121('0x23')]['cc']+=_0x53baae;}}if(!_[_0xa121('0x26')](_0x18c4af[_0xa121('0x23')][_0xa121('0x24')],_0x13c65d[_0xa121('0x7')])&&!_[_0xa121('0x26')](_0x18c4af[_0xa121('0x23')][_0xa121('0x25')],_0x13c65d[_0xa121('0x7')])){_0x18c4af['message'][_0xa121('0x27')]=_0x13c65d[_0xa121('0x7')];}if(_0x258054[_0xa121('0x28')]&&_0x258054[_0xa121('0x28')][_0xa121('0x14')]){_0x18c4af['message'][_0xa121('0x29')]=_0x258054['attachments'][_0xa121('0x14')];for(var _0x2dc8be=0x0,_0x5b1d72,_0x4c68e4,_0x4a9edf;_0x2dc8be<_0x258054[_0xa121('0x28')][_0xa121('0x14')];_0x2dc8be+=0x1){if(_0x258054['attachments'][_0x2dc8be][_0xa121('0x2a')]===_0xa121('0x2b')){_0x4a9edf=_0x258054[_0xa121('0x28')][_0x2dc8be][_0xa121('0x2c')]||_0xa121('0x2d')+_0x2dc8be;_0x5b1d72=util['format'](_0xa121('0x2e'),Date['now'](),_0x4a9edf);_0x4c68e4=path[_0xa121('0x2f')](config[_0xa121('0x30')],_0xa121('0x31'),_0x5b1d72);fs[_0xa121('0x32')](_0x4c68e4,_0x258054[_0xa121('0x28')][_0x2dc8be]['content']);_0x18c4af['message'][_0xa121('0x28')][_0xa121('0x1a')]({'name':_0x4a9edf,'basename':_0x5b1d72,'type':_0x258054[_0xa121('0x28')][_0x2dc8be]['contentType'],'filepath':_0x4c68e4});}}}if(_0x258054[_0xa121('0x33')]&&_0x258054['headerLines'][_0xa121('0x14')]>0x0){var _0x5777c8=[_0xa121('0x34'),'X-Auto-Response-Suppress:\x20All',_0xa121('0x35')];for(var _0x360b70=0x0;_0x360b70<_0x258054['headerLines'][_0xa121('0x14')];_0x360b70++){var _0x3b7428=_[_0xa121('0xf')](_0x5777c8,_0x258054[_0xa121('0x33')][_0x360b70]['line']);if(_0x3b7428>=0x0){_0x18c4af[_0xa121('0x36')]=!![];}}}return _0x18c4af;}exports[_0xa121('0x37')]=function(_0xc2111d,_0x95d9e9,_0x48194b){var _0x195976={'from':getAddress(_0x95d9e9[_0xa121('0x38')]),'firstName':getFirstName(_0x95d9e9[_0xa121('0x38')]),'lastName':getLastName(_0x95d9e9[_0xa121('0x38')]),'mapKey':_0xa121('0x7'),'message':{'from':getMails(_0xc2111d['email'],_0x95d9e9[_0xa121('0x38')]),'to':_0xc2111d[_0xa121('0x7')],'cc':'','subject':_0x95d9e9[_0xa121('0x39')]||'','messageId':_0x95d9e9[_0xa121('0x3a')],'inReplyTo':_0x95d9e9[_0xa121('0x3b')],'sentAt':moment(_0x95d9e9[_0xa121('0x3c')])[_0xa121('0x3d')](_0xa121('0x3e')),'attach':![],'attachments':[]}};if(!_0x95d9e9['html']&&!_0x95d9e9[_0xa121('0x21')]){var _0x4de648=_[_0xa121('0x3f')](_0x95d9e9['attachments'],{'contentType':'application/ms-tnef'});if(_0x4de648[_0xa121('0x14')]){logger[_0xa121('0x40')](util[_0xa121('0x3d')](_0xa121('0x41'),_0x95d9e9[_0xa121('0x3a')]));tnef[_0xa121('0x42')](_[_0xa121('0x43')](_0x4de648)[_0xa121('0x44')],function(_0x250a81,_0x37ec8d){if(_0x37ec8d){_0x95d9e9[_0xa121('0x16')]=_0x37ec8d[_0xa121('0x45')]||'<p>Empty\x20message</p>';if(_0x37ec8d[_0xa121('0x46')]){for(var _0x5f7c2b=0x0;_0x5f7c2b<_0x37ec8d[_0xa121('0x46')]['length'];_0x5f7c2b++){var _0x2fba23=_0x37ec8d[_0xa121('0x46')][_0x5f7c2b];_0x195976['message']['attachments']['push']({'filename':_0x2fba23[_0xa121('0x47')],'content':Buffer[_0xa121('0x38')](_0x2fba23['Data'])});}}}_0x48194b(parseEmail(_0xc2111d,_0x95d9e9,_0x195976));});}else{_0x95d9e9[_0xa121('0x16')]=_0xa121('0x48');_0x48194b(parseEmail(_0xc2111d,_0x95d9e9,_0x195976));}}else{_0x48194b(parseEmail(_0xc2111d,_0x95d9e9,_0x195976));}};exports[_0xa121('0x49')]=function(_0x1c75f5,_0x1f56a0){var _0x14f2f1=[_0xa121('0x4a')+(_0x1f56a0||''),'auth=Bearer\x20'+_0x1c75f5,'',''];return Buffer[_0xa121('0x38')](_0x14f2f1['join']('\ 1'),_0xa121('0x4b'))[_0xa121('0x4c')](_0xa121('0x4d'));};
\ No newline at end of file
+var _0xe1c1=['generate','name','indexOf','split','length','join','Anonymous','pop','isEmpty','test','html','replace','includes','attachments','push','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','type','attachment','attachment-','format','%s-%s','now','root','server/files/attachments/','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','from','subject','date','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','messageId','parseBuffer','first','Attachments','Title','Data','generateXOAuth2Token','user=','utf-8','toString','base64','lodash','moment','path','util','node-tnef','email','../../../config/environment','head','value','address','anonymous'];(function(_0x936f46,_0x80dcde){var _0x3c2a2c=function(_0x280deb){while(--_0x280deb){_0x936f46['push'](_0x936f46['shift']());}};_0x3c2a2c(++_0x80dcde);}(_0xe1c1,0x1bc));var _0x1e1c=function(_0x12ca5f,_0x223d98){_0x12ca5f=_0x12ca5f-0x0;var _0xfc3ae9=_0xe1c1[_0x12ca5f];return _0xfc3ae9;};'use strict';var _=require(_0x1e1c('0x0'));var moment=require(_0x1e1c('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x1e1c('0x2'));var util=require(_0x1e1c('0x3'));var tnef=require(_0x1e1c('0x4'));var logger=require('../../../config/logger')(_0x1e1c('0x5'));var config=require(_0x1e1c('0x6'));function getAddress(_0x91ddb3){var _0xed44d2=_[_0x1e1c('0x7')](_0x91ddb3[_0x1e1c('0x8')]);return _0xed44d2&&_0xed44d2[_0x1e1c('0x9')]?_0xed44d2[_0x1e1c('0x9')]:_0x1e1c('0xa')+random[_0x1e1c('0xb')](0x6)+'@xcally.com';}function getFirstName(_0x4db95e){var _0x32ec28=_[_0x1e1c('0x7')](_0x4db95e[_0x1e1c('0x8')]);if(_0x32ec28&&_0x32ec28[_0x1e1c('0xc')]){if(_0x32ec28[_0x1e1c('0xc')]==_0x32ec28[_0x1e1c('0x9')]){return _0x32ec28[_0x1e1c('0xc')]['substring'](0x0,_0x32ec28[_0x1e1c('0xc')][_0x1e1c('0xd')]('@'));}var _0x67a7f1=_0x32ec28[_0x1e1c('0xc')][_0x1e1c('0xe')](/\s+/);return _0x67a7f1[_0x1e1c('0xf')]>0x1?_0x67a7f1['slice'](0x0,-0x1)[_0x1e1c('0x10')]('\x20'):_0x32ec28[_0x1e1c('0xc')];}return _0x1e1c('0x11');}function getLastName(_0x2731c2){var _0x5ef931=_[_0x1e1c('0x7')](_0x2731c2[_0x1e1c('0x8')]);if(_0x5ef931&&_0x5ef931[_0x1e1c('0xc')]){var _0x2c54cd=_0x5ef931[_0x1e1c('0xc')][_0x1e1c('0xe')](/\s+/);return _0x2c54cd['length']>0x1?_0x2c54cd[_0x1e1c('0x12')]():'';}return'';}function getMails(_0x547c70,_0x1b627c){var _0x3c617a='';for(var _0x18fe36=0x0;_0x18fe36<_0x1b627c[_0x1e1c('0x8')][_0x1e1c('0xf')];_0x18fe36+=0x1){if(_0x1b627c['value'][_0x18fe36]['address']!==_0x547c70){if(!_[_0x1e1c('0x13')](_0x3c617a)){_0x3c617a+=',';}_0x3c617a+=_0x1b627c[_0x1e1c('0x8')][_0x18fe36][_0x1e1c('0xc')]||_0x1b627c[_0x1e1c('0x8')][_0x18fe36][_0x1e1c('0x9')]||'';_0x3c617a+='\x20<';_0x3c617a+=_0x1b627c[_0x1e1c('0x8')][_0x18fe36][_0x1e1c('0x9')]?_0x1b627c['value'][_0x18fe36][_0x1e1c('0x9')]:_0x1e1c('0xa')+random['generate'](0x6)+'@xcally.com';_0x3c617a+='>';}}return _0x3c617a;}function parseEmail(_0x6e9e1d,_0x441f8a,_0x1b8da4){if(_0x441f8a['html']){var _0x5f5590=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x5f5590[_0x1e1c('0x14')](_0x441f8a[_0x1e1c('0x15')])){_0x441f8a[_0x1e1c('0x15')]=_0x441f8a['html'][_0x1e1c('0x16')](_0x5f5590,'');}if(_0x441f8a['html'][_0x1e1c('0x17')]('<img')){var _0x4eb0f1=[];_0x441f8a[_0x1e1c('0x18')]['forEach'](_0x100321=>{_0x4eb0f1[_0x1e1c('0x19')](_0x100321['filename']);});var _0x18876d=/<img.*? _SRC(.*?)[^>]+>/g;var _0xfbf1f7=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x231795=_0x441f8a[_0x1e1c('0x15')]['replace'](_0xfbf1f7,_0x1e1c('0x1a'));var _0x1710e2=_0x231795[_0x1e1c('0x16')](_0x18876d,_0x1e1c('0x1b'));for(let _0x15e3ac=0x0;_0x15e3ac<_0x4eb0f1['length'];_0x15e3ac++){var _0x4b1193=_0x1710e2['replace']('_IMG',_0x1e1c('0x1c')+_0x4eb0f1[_0x15e3ac]+_0x1e1c('0x1d'));_0x1710e2=_0x4b1193;}_0x441f8a[_0x1e1c('0x15')]=_0x1710e2;}_0x1b8da4[_0x1e1c('0x1e')]=_0x441f8a['html'];}else{_0x1b8da4[_0x1e1c('0x1e')]=_0x441f8a[_0x1e1c('0x1f')];}if(_0x1b8da4[_0x1e1c('0x1e')]){_0x1b8da4[_0x1e1c('0x1e')]=_0x1b8da4[_0x1e1c('0x1e')][_0x1e1c('0x16')](/<a\s+/gi,_0x1e1c('0x20'));}if(_0x441f8a['to']){_0x1b8da4[_0x1e1c('0x21')][_0x1e1c('0x22')]=getMails(null,_0x441f8a['to']);var _0x4c7061=getMails(_0x6e9e1d[_0x1e1c('0x5')],_0x441f8a['to']);if(!_[_0x1e1c('0x13')](_0x4c7061)){_0x1b8da4['message']['cc']+=_0x4c7061;}}if(_0x441f8a['cc']){_0x1b8da4[_0x1e1c('0x21')][_0x1e1c('0x23')]=getMails(null,_0x441f8a['cc']);var _0x30c78f=getMails(_0x6e9e1d[_0x1e1c('0x5')],_0x441f8a['cc']);if(!_['isEmpty'](_0x30c78f)){if(!_[_0x1e1c('0x13')](_0x1b8da4['message']['cc'])){_0x1b8da4[_0x1e1c('0x21')]['cc']+=',';}_0x1b8da4[_0x1e1c('0x21')]['cc']+=_0x30c78f;}}if(!_['includes'](_0x1b8da4[_0x1e1c('0x21')][_0x1e1c('0x22')],_0x6e9e1d[_0x1e1c('0x5')])&&!_[_0x1e1c('0x17')](_0x1b8da4[_0x1e1c('0x21')][_0x1e1c('0x23')],_0x6e9e1d['email'])){_0x1b8da4[_0x1e1c('0x21')][_0x1e1c('0x24')]=_0x6e9e1d[_0x1e1c('0x5')];}if(_0x441f8a[_0x1e1c('0x18')]&&_0x441f8a['attachments'][_0x1e1c('0xf')]){_0x1b8da4[_0x1e1c('0x21')]['attach']=_0x441f8a[_0x1e1c('0x18')][_0x1e1c('0xf')];for(var _0x54ed4b=0x0,_0x102da1,_0x12eac2,_0x3095c0;_0x54ed4b<_0x441f8a[_0x1e1c('0x18')]['length'];_0x54ed4b+=0x1){if(_0x441f8a[_0x1e1c('0x18')][_0x54ed4b][_0x1e1c('0x25')]===_0x1e1c('0x26')){_0x3095c0=_0x441f8a[_0x1e1c('0x18')][_0x54ed4b]['filename']||_0x1e1c('0x27')+_0x54ed4b;_0x102da1=util[_0x1e1c('0x28')](_0x1e1c('0x29'),Date[_0x1e1c('0x2a')](),_0x3095c0);_0x12eac2=path[_0x1e1c('0x10')](config[_0x1e1c('0x2b')],_0x1e1c('0x2c'),_0x102da1);fs['writeFileSync'](_0x12eac2,_0x441f8a[_0x1e1c('0x18')][_0x54ed4b]['content']);_0x1b8da4[_0x1e1c('0x21')][_0x1e1c('0x18')][_0x1e1c('0x19')]({'name':_0x3095c0,'basename':_0x102da1,'type':_0x441f8a[_0x1e1c('0x18')][_0x54ed4b]['contentType'],'filepath':_0x12eac2});}}}if(_0x441f8a[_0x1e1c('0x2d')]&&_0x441f8a['headerLines'][_0x1e1c('0xf')]>0x0){var _0x2b01dc=['Auto-Submitted:\x20auto-replied',_0x1e1c('0x2e'),_0x1e1c('0x2f')];for(var _0x192e37=0x0;_0x192e37<_0x441f8a[_0x1e1c('0x2d')]['length'];_0x192e37++){var _0x30b71f=_['indexOf'](_0x2b01dc,_0x441f8a[_0x1e1c('0x2d')][_0x192e37]['line']);if(_0x30b71f>=0x0){_0x1b8da4['isAutoreply']=!![];}}}return _0x1b8da4;}exports['parser']=function(_0x276a50,_0x454282,_0x3618c5){var _0x1a27dc={'from':getAddress(_0x454282[_0x1e1c('0x30')]),'firstName':getFirstName(_0x454282[_0x1e1c('0x30')]),'lastName':getLastName(_0x454282['from']),'mapKey':_0x1e1c('0x5'),'message':{'from':getMails(_0x276a50[_0x1e1c('0x5')],_0x454282[_0x1e1c('0x30')]),'to':_0x276a50[_0x1e1c('0x5')],'cc':'','subject':_0x454282[_0x1e1c('0x31')]||'','messageId':_0x454282['messageId'],'inReplyTo':_0x454282['inReplyTo'],'sentAt':moment(_0x454282[_0x1e1c('0x32')])[_0x1e1c('0x28')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x454282[_0x1e1c('0x15')]&&!_0x454282[_0x1e1c('0x1f')]){var _0x433ef0=_['filter'](_0x454282[_0x1e1c('0x18')],{'contentType':_0x1e1c('0x33')});if(_0x433ef0[_0x1e1c('0xf')]){logger[_0x1e1c('0x34')](util[_0x1e1c('0x28')](_0x1e1c('0x35'),_0x454282[_0x1e1c('0x36')]));tnef[_0x1e1c('0x37')](_[_0x1e1c('0x38')](_0x433ef0)['content'],function(_0x30db97,_0x3d9f63){if(_0x3d9f63){_0x454282[_0x1e1c('0x15')]=_0x3d9f63['BodyHTML']||'<p>Empty\x20message</p>';if(_0x3d9f63['Attachments']){for(var _0x4562a2=0x0;_0x4562a2<_0x3d9f63['Attachments'][_0x1e1c('0xf')];_0x4562a2++){var _0x430cf5=_0x3d9f63[_0x1e1c('0x39')][_0x4562a2];_0x1a27dc['message'][_0x1e1c('0x18')][_0x1e1c('0x19')]({'filename':_0x430cf5[_0x1e1c('0x3a')],'content':Buffer['from'](_0x430cf5[_0x1e1c('0x3b')])});}}}_0x3618c5(parseEmail(_0x276a50,_0x454282,_0x1a27dc));});}else{_0x454282[_0x1e1c('0x15')]='<p>Empty\x20message</p>';_0x3618c5(parseEmail(_0x276a50,_0x454282,_0x1a27dc));}}else{_0x3618c5(parseEmail(_0x276a50,_0x454282,_0x1a27dc));}};exports[_0x1e1c('0x3c')]=function(_0x39faa2,_0x452b6f){var _0x1b02bc=[_0x1e1c('0x3d')+(_0x452b6f||''),'auth=Bearer\x20'+_0x39faa2,'',''];return Buffer[_0x1e1c('0x30')](_0x1b02bc[_0x1e1c('0x10')]('\ 1'),_0x1e1c('0x3e'))[_0x1e1c('0x3f')](_0x1e1c('0x40'));};
\ No newline at end of file
index 04d78c0..e66b92b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2d=['active','Smtp','exports','lodash','name','Service','SERV'];(function(_0x2dbb68,_0x3b3078){var _0x4ef1c4=function(_0xe5fcd5){while(--_0xe5fcd5){_0x2dbb68['push'](_0x2dbb68['shift']());}};_0x4ef1c4(++_0x3b3078);}(_0xde2d,0x168));var _0xdde2=function(_0x4e7f3f,_0x5c57da){_0x4e7f3f=_0x4e7f3f-0x0;var _0x441fd2=_0xde2d[_0x4e7f3f];return _0x441fd2;};'use strict';var _=require(_0xdde2('0x0'));function MailAccount(_0x4c17b2){this['id']=_0x4c17b2['id']||0x0;this['name']=_0x4c17b2[_0xdde2('0x1')]||_0xdde2('0x2');this['key']=_0x4c17b2['key']||_0xdde2('0x3');this[_0xdde2('0x4')]=_0x4c17b2[_0xdde2('0x4')]||![];this['Imap']=_0x4c17b2['Imap']||[];this[_0xdde2('0x5')]=_0x4c17b2['Smtp']||[];}module[_0xdde2('0x6')]=MailAccount;
\ No newline at end of file
+var _0x2ea4=['Imap','Smtp','name','Service','key','active'];(function(_0x1aa5c8,_0x3ad8d6){var _0x2f9377=function(_0x2403ac){while(--_0x2403ac){_0x1aa5c8['push'](_0x1aa5c8['shift']());}};_0x2f9377(++_0x3ad8d6);}(_0x2ea4,0xc8));var _0x42ea=function(_0x59b141,_0x3c2191){_0x59b141=_0x59b141-0x0;var _0x79450d=_0x2ea4[_0x59b141];return _0x79450d;};'use strict';var _=require('lodash');function MailAccount(_0x235eb5){this['id']=_0x235eb5['id']||0x0;this[_0x42ea('0x0')]=_0x235eb5[_0x42ea('0x0')]||_0x42ea('0x1');this[_0x42ea('0x2')]=_0x235eb5[_0x42ea('0x2')]||'SERV';this[_0x42ea('0x3')]=_0x235eb5[_0x42ea('0x3')]||![];this['Imap']=_0x235eb5[_0x42ea('0x4')]||[];this[_0x42ea('0x5')]=_0x235eb5[_0x42ea('0x5')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 0ae596c..037958d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f6a=['../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','lodash'];(function(_0x145e0d,_0x86e43d){var _0x3bcaea=function(_0x413547){while(--_0x413547){_0x145e0d['push'](_0x145e0d['shift']());}};_0x3bcaea(++_0x86e43d);}(_0x3f6a,0x113));var _0xa3f6=function(_0x4df5d3,_0x522c48){_0x4df5d3=_0x4df5d3-0x0;var _0x34a8d=_0x3f6a[_0x4df5d3];return _0x34a8d;};'use strict';var _=require(_0xa3f6('0x0'));var MailAccount=require(_0xa3f6('0x1'));var Realtime=function(){this[_0xa3f6('0x2')]={};};function freeIsNotKey(_0x410ef4,_0x373592,_0x53ce1e){var _0x441f2c=_[_0xa3f6('0x3')](_0x410ef4,function(_0x3c5863,_0x43b3a3){return _0x3c5863[_0x53ce1e];});for(var _0x199e74 in _0x373592){if(_0x373592[_0xa3f6('0x4')](_0x199e74)){if(!_0x441f2c[_0x199e74]){delete _0x373592[_0x199e74];}}}}Realtime[_0xa3f6('0x5')][_0xa3f6('0x6')]=function(_0x1998de,_0x29ad87){for(var _0x4ec677 in _0x29ad87){if(_0x1998de[_0xa3f6('0x4')](_0x4ec677)){_0x1998de[_0x4ec677]=_0x29ad87[_0x4ec677];}}};Realtime[_0xa3f6('0x5')][_0xa3f6('0x7')]=function(){var _0x436db7=this;return function(_0xddbe3e){if(_0xddbe3e){freeIsNotKey(_0xddbe3e,_0x436db7[_0xa3f6('0x2')],'id');for(var _0x309ceb=0x0,_0x481e87={},_0x19ba58={};_0x309ceb<_0xddbe3e[_0xa3f6('0x8')];_0x309ceb+=0x1){_0x481e87=_0xddbe3e[_0x309ceb];if(_[_0xa3f6('0x9')](_0x436db7[_0xa3f6('0x2')][_0x481e87['id']])){_0x436db7[_0xa3f6('0x2')][_0x481e87['id']]=new MailAccount(_0x481e87);}else{_[_0xa3f6('0xa')](_0x436db7['mailAccounts'][_0x481e87['id']],_0x481e87);}}}return _0x436db7['mailAccounts'];};};module[_0xa3f6('0xb')]=Realtime;
\ No newline at end of file
+var _0xbcfd=['prototype','initMailAccounts','length','isUndefined','merge','exports','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty'];(function(_0x1b0fc4,_0x4fea19){var _0x549d30=function(_0x54114c){while(--_0x54114c){_0x1b0fc4['push'](_0x1b0fc4['shift']());}};_0x549d30(++_0x4fea19);}(_0xbcfd,0x146));var _0xdbcf=function(_0x39cbd2,_0x2ca475){_0x39cbd2=_0x39cbd2-0x0;var _0x2e81c2=_0xbcfd[_0x39cbd2];return _0x2e81c2;};'use strict';var _=require('lodash');var MailAccount=require(_0xdbcf('0x0'));var Realtime=function(){this[_0xdbcf('0x1')]={};};function freeIsNotKey(_0x3c619b,_0xbbdd99,_0xa86d3d){var _0x4ab9ed=_[_0xdbcf('0x2')](_0x3c619b,function(_0x46ea6f,_0x30f57e){return _0x46ea6f[_0xa86d3d];});for(var _0x2f8c7f in _0xbbdd99){if(_0xbbdd99[_0xdbcf('0x3')](_0x2f8c7f)){if(!_0x4ab9ed[_0x2f8c7f]){delete _0xbbdd99[_0x2f8c7f];}}}}Realtime[_0xdbcf('0x4')]['mergeFromDatabase']=function(_0x30e6ef,_0x146b66){for(var _0x5bd398 in _0x146b66){if(_0x30e6ef['hasOwnProperty'](_0x5bd398)){_0x30e6ef[_0x5bd398]=_0x146b66[_0x5bd398];}}};Realtime[_0xdbcf('0x4')][_0xdbcf('0x5')]=function(){var _0x4cff86=this;return function(_0x521bd0){if(_0x521bd0){freeIsNotKey(_0x521bd0,_0x4cff86[_0xdbcf('0x1')],'id');for(var _0x50481d=0x0,_0x4fd2b9={},_0x312af5={};_0x50481d<_0x521bd0[_0xdbcf('0x6')];_0x50481d+=0x1){_0x4fd2b9=_0x521bd0[_0x50481d];if(_[_0xdbcf('0x7')](_0x4cff86[_0xdbcf('0x1')][_0x4fd2b9['id']])){_0x4cff86['mailAccounts'][_0x4fd2b9['id']]=new MailAccount(_0x4fd2b9);}else{_[_0xdbcf('0x8')](_0x4cff86[_0xdbcf('0x1')][_0x4fd2b9['id']],_0x4fd2b9);}}}return _0x4cff86['mailAccounts'];};};module[_0xdbcf('0x9')]=Realtime;
\ No newline at end of file
index 7967231..25ee864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c1=['provider','email','active','key','ListId','TemplateId','MailServerIn','CloudProvider','service','type','data5','MailServerOut','name','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request'];(function(_0x3c0713,_0x118272){var _0xda81d3=function(_0x30d543){while(--_0x30d543){_0x3c0713['push'](_0x3c0713['shift']());}};_0xda81d3(++_0x118272);}(_0xa5c1,0x19f));var _0x1a5c=function(_0x4f0024,_0xbfa03e){_0x4f0024=_0x4f0024-0x0;var _0x7d3c33=_0xa5c1[_0x4f0024];return _0x7d3c33;};'use strict';var client=require(_0x1a5c('0x0'));exports[_0x1a5c('0x1')]=function(){return function(){return client[_0x1a5c('0x2')]('GetMailAccount',{'options':{'attributes':['id','name',_0x1a5c('0x3'),'service',_0x1a5c('0x4'),_0x1a5c('0x5'),_0x1a5c('0x6'),_0x1a5c('0x7'),_0x1a5c('0x8')],'raw':![],'include':[{'model':_0x1a5c('0x9'),'as':'Imap','include':[{'model':_0x1a5c('0xa'),'attributes':['id','name',_0x1a5c('0xb'),_0x1a5c('0xc'),_0x1a5c('0xd')],'as':'CloudProvider'}]},{'model':_0x1a5c('0xe'),'as':'Smtp','include':[{'model':_0x1a5c('0xa'),'attributes':['id',_0x1a5c('0xf'),'service',_0x1a5c('0xc'),_0x1a5c('0xd')],'as':'CloudProvider'}]}]},'log':_0x1a5c('0x10')});};};exports[_0x1a5c('0x11')]=function(_0x591c3d,_0x3f14af){return client[_0x1a5c('0x2')](_0x1a5c('0x12'),{'account':{'id':_0x591c3d},'body':_0x3f14af,'log':_0x1a5c('0x12')});};
\ No newline at end of file
+var _0x7827=['provider','email','active','key','ListId','Imap','CloudProvider','name','service','type','Smtp','notify','NotifyMailAccount','../client','getMailAccounts','Request'];(function(_0x1a9a86,_0xe309e1){var _0x3108a8=function(_0x8e6176){while(--_0x8e6176){_0x1a9a86['push'](_0x1a9a86['shift']());}};_0x3108a8(++_0xe309e1);}(_0x7827,0x19d));var _0x7782=function(_0x351909,_0x1c723b){_0x351909=_0x351909-0x0;var _0xb70af9=_0x7827[_0x351909];return _0xb70af9;};'use strict';var client=require(_0x7782('0x0'));exports[_0x7782('0x1')]=function(){return function(){return client[_0x7782('0x2')]('GetMailAccount',{'options':{'attributes':['id','name',_0x7782('0x3'),'service',_0x7782('0x4'),_0x7782('0x5'),_0x7782('0x6'),_0x7782('0x7'),'TemplateId'],'raw':![],'include':[{'model':'MailServerIn','as':_0x7782('0x8'),'include':[{'model':_0x7782('0x9'),'attributes':['id',_0x7782('0xa'),_0x7782('0xb'),_0x7782('0xc'),'data5'],'as':_0x7782('0x9')}]},{'model':'MailServerOut','as':_0x7782('0xd'),'include':[{'model':_0x7782('0x9'),'attributes':['id',_0x7782('0xa'),_0x7782('0xb'),_0x7782('0xc'),'data5'],'as':'CloudProvider'}]}]},'log':'getMailAccount'});};};exports[_0x7782('0xe')]=function(_0x1a8493,_0x3f288a){return client['Request'](_0x7782('0xf'),{'account':{'id':_0x1a8493},'body':_0x3f288a,'log':'NotifyMailAccount'});};
\ No newline at end of file
index 19c8bb4..3110e16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7582=['getSettings','ShowSetting','loginMailFrequency','../client'];(function(_0x2357fa,_0x31300a){var _0x3c956b=function(_0x36111c){while(--_0x36111c){_0x2357fa['push'](_0x2357fa['shift']());}};_0x3c956b(++_0x31300a);}(_0x7582,0xc7));var _0x2758=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x7582[_0x47b58b];return _0x46bebe;};'use strict';var client=require(_0x2758('0x0'));exports[_0x2758('0x1')]=function(){return client['Request'](_0x2758('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x2758('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x8e7d=['GetSettings','getSettings','Request','loginMailFrequency'];(function(_0x5641ea,_0x1d9615){var _0x4442f5=function(_0x490ca8){while(--_0x490ca8){_0x5641ea['push'](_0x5641ea['shift']());}};_0x4442f5(++_0x1d9615);}(_0x8e7d,0x141));var _0xd8e7=function(_0x2dc069,_0x9fe901){_0x2dc069=_0x2dc069-0x0;var _0x24a59d=_0x8e7d[_0x2dc069];return _0x24a59d;};'use strict';var client=require('../client');exports[_0xd8e7('0x0')]=function(){return client[_0xd8e7('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xd8e7('0x2')]},'log':_0xd8e7('0x3')});};
\ No newline at end of file
index 4fe7b7f..391f036 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(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'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(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 e9ca973..2f8a5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c43=['express','sticky-session','../../config/environment','createServer','timeout','listen','websocket','defaults','localhost','adapter','socket.io-redis','redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','lodash','http'];(function(_0x36e52c,_0x2b2eb4){var _0x3533a6=function(_0x210ccb){while(--_0x210ccb){_0x36e52c['push'](_0x36e52c['shift']());}};_0x3533a6(++_0x2b2eb4);}(_0x3c43,0x167));var _0x33c4=function(_0x318bf1,_0x301a26){_0x318bf1=_0x318bf1-0x0;var _0x4eacf0=_0x3c43[_0x318bf1];return _0x4eacf0;};'use strict';var _=require(_0x33c4('0x0'));var http=require(_0x33c4('0x1'));var express=require(_0x33c4('0x2'));var sticky=require(_0x33c4('0x3'));var Redis=require('ioredis');var config=require(_0x33c4('0x4'));var app=express();var server=http[_0x33c4('0x5')](app);server[_0x33c4('0x6')]=0xdbba0;if(sticky[_0x33c4('0x7')](server,config['port'])){var socketio=require('socket.io')(server,{'transports':[_0x33c4('0x8'),'polling']});config['redis']=_[_0x33c4('0x9')](config['redis'],{'host':_0x33c4('0xa'),'port':0x18eb});socketio[_0x33c4('0xb')](require(_0x33c4('0xc'))({'pubClient':new Redis(config[_0x33c4('0xd')]),'subClient':new Redis(config[_0x33c4('0xd')])}));require(_0x33c4('0xe'))[_0x33c4('0xf')]();require(_0x33c4('0x10'))['default'](socketio);require(_0x33c4('0x11'))[_0x33c4('0xf')](app);require(_0x33c4('0x12'))[_0x33c4('0xf')](app);}else{server['once']('listening',function(){console['log']('Express\x20server\x20listening\x20on\x20port\x20%d!',config['port']);});}exports=module['exports']=app;
\ No newline at end of file
+var _0xc9c0=['lodash','http','express','sticky-session','ioredis','createServer','listen','polling','redis','defaults','localhost','adapter','default','../../config/socketio','../../config/express','../../routes','once','listening','log','port','exports'];(function(_0x437a96,_0x3e3891){var _0x1ad9db=function(_0x5d7937){while(--_0x5d7937){_0x437a96['push'](_0x437a96['shift']());}};_0x1ad9db(++_0x3e3891);}(_0xc9c0,0x1ce));var _0x0c9c=function(_0x411b8a,_0x1330fe){_0x411b8a=_0x411b8a-0x0;var _0x2f6603=_0xc9c0[_0x411b8a];return _0x2f6603;};'use strict';var _=require(_0x0c9c('0x0'));var http=require(_0x0c9c('0x1'));var express=require(_0x0c9c('0x2'));var sticky=require(_0x0c9c('0x3'));var Redis=require(_0x0c9c('0x4'));var config=require('../../config/environment');var app=express();var server=http[_0x0c9c('0x5')](app);server['timeout']=0xdbba0;if(sticky[_0x0c9c('0x6')](server,config['port'])){var socketio=require('socket.io')(server,{'transports':['websocket',_0x0c9c('0x7')]});config[_0x0c9c('0x8')]=_[_0x0c9c('0x9')](config['redis'],{'host':_0x0c9c('0xa'),'port':0x18eb});socketio[_0x0c9c('0xb')](require('socket.io-redis')({'pubClient':new Redis(config[_0x0c9c('0x8')]),'subClient':new Redis(config[_0x0c9c('0x8')])}));require('../../config/triggers')[_0x0c9c('0xc')]();require(_0x0c9c('0xd'))['default'](socketio);require(_0x0c9c('0xe'))[_0x0c9c('0xc')](app);require(_0x0c9c('0xf'))[_0x0c9c('0xc')](app);}else{server[_0x0c9c('0x10')](_0x0c9c('0x11'),function(){console[_0x0c9c('0x12')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x0c9c('0x13')]);});}exports=module[_0x0c9c('0x14')]=app;
\ No newline at end of file
index 2054898..fc2d90d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8126=['exports','jayson/promise','../../config/logger','routing','http','request','then','rpc','error','message','result','catch'];(function(_0x2a5f35,_0x131c8f){var _0x473c33=function(_0x2a493c){while(--_0x2a493c){_0x2a5f35['push'](_0x2a5f35['shift']());}};_0x473c33(++_0x131c8f);}(_0x8126,0x151));var _0x6812=function(_0x5302fb,_0x1a2db3){_0x5302fb=_0x5302fb-0x0;var _0x43e6a4=_0x8126[_0x5302fb];return _0x43e6a4;};'use strict';var jayson=require(_0x6812('0x0'));var BPromise=require('bluebird');var logger=require(_0x6812('0x1'))(_0x6812('0x2'));var client=jayson['client'][_0x6812('0x3')]({'port':0x2329});client['Request']=function(_0x45b491,_0x5838c3){return new BPromise(function(_0x2be0a5,_0x228cdc){return client[_0x6812('0x4')](_0x45b491,_0x5838c3)[_0x6812('0x5')](function(_0x275cf6){logger['debug'](_0x6812('0x6'),_0x6812('0x2'),_0x45b491,_0x5838c3,_0x275cf6);if(_0x275cf6['error']){logger['error'](_0x6812('0x6'),'routing',_0x45b491,_0x275cf6[_0x6812('0x7')][_0x6812('0x8')],_0x5838c3);return _0x228cdc(_0x275cf6['error'][_0x6812('0x8')]);}else{return _0x2be0a5(_0x275cf6[_0x6812('0x9')]);}})[_0x6812('0xa')](function(_0x233b51){logger[_0x6812('0x7')](_0x6812('0x6'),_0x6812('0x2'),_0x45b491,_0x233b51,_0x5838c3);return _0x228cdc(_0x233b51);});});};module[_0x6812('0xb')]=client;
\ No newline at end of file
+var _0xc6d7=['client','http','Request','request','then','debug','rpc','error','catch','exports','../../config/logger','routing'];(function(_0x1c6152,_0x139b26){var _0x570e76=function(_0x2ab33c){while(--_0x2ab33c){_0x1c6152['push'](_0x1c6152['shift']());}};_0x570e76(++_0x139b26);}(_0xc6d7,0x15a));var _0x7c6d=function(_0x4997fa,_0x42b0df){_0x4997fa=_0x4997fa-0x0;var _0x469ec9=_0xc6d7[_0x4997fa];return _0x469ec9;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x7c6d('0x0'))(_0x7c6d('0x1'));var client=jayson[_0x7c6d('0x2')][_0x7c6d('0x3')]({'port':0x2329});client[_0x7c6d('0x4')]=function(_0x4b0749,_0x1e6a38){return new BPromise(function(_0x1d2de6,_0x269502){return client[_0x7c6d('0x5')](_0x4b0749,_0x1e6a38)[_0x7c6d('0x6')](function(_0x2f4e48){logger[_0x7c6d('0x7')](_0x7c6d('0x8'),'routing',_0x4b0749,_0x1e6a38,_0x2f4e48);if(_0x2f4e48[_0x7c6d('0x9')]){logger['error'](_0x7c6d('0x8'),'routing',_0x4b0749,_0x2f4e48[_0x7c6d('0x9')]['message'],_0x1e6a38);return _0x269502(_0x2f4e48['error']['message']);}else{return _0x1d2de6(_0x2f4e48['result']);}})[_0x7c6d('0xa')](function(_0x419139){logger['error'](_0x7c6d('0x8'),_0x7c6d('0x1'),_0x4b0749,_0x419139,_0x1e6a38);return _0x269502(_0x419139);});});};module[_0x7c6d('0xb')]=client;
\ No newline at end of file
index c0db74c..a7334e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb99f=['initIntervals','getOpenchannelQueues','initOpenchannelQueues','getSmsQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','bluebird','./server','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb99f,0x129));var _0xfb99=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xb99f[_0x51020b];return _0x371e47;};'use strict';var BPromise=require(_0xfb99('0x0'));var server=require(_0xfb99('0x1'));var Realtime=require(_0xfb99('0x2'));var user=require('./rpc/user');var interval=require(_0xfb99('0x3'));var openchannelQueue=require(_0xfb99('0x4'));var chatQueue=require(_0xfb99('0x5'));var smsQueue=require(_0xfb99('0x6'));var mailQueue=require(_0xfb99('0x7'));var faxQueue=require(_0xfb99('0x8'));var whatsappQueue=require(_0xfb99('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xfb99('0xa')]()[_0xfb99('0xb')](user[_0xfb99('0xc')]())[_0xfb99('0xb')](realtime[_0xfb99('0xd')]())[_0xfb99('0xb')](interval[_0xfb99('0xe')]())['then'](realtime[_0xfb99('0xf')]())[_0xfb99('0xb')](openchannelQueue[_0xfb99('0x10')]())[_0xfb99('0xb')](realtime[_0xfb99('0x11')]())['then'](chatQueue['getChatQueues']())[_0xfb99('0xb')](realtime['initChatQueues']())['then'](smsQueue[_0xfb99('0x12')]())[_0xfb99('0xb')](realtime[_0xfb99('0x13')]())[_0xfb99('0xb')](mailQueue['getMailQueues']())[_0xfb99('0xb')](realtime[_0xfb99('0x14')]())[_0xfb99('0xb')](faxQueue[_0xfb99('0x15')]())['then'](realtime[_0xfb99('0x16')]())[_0xfb99('0xb')](whatsappQueue[_0xfb99('0x17')]())[_0xfb99('0xb')](realtime[_0xfb99('0x18')]())[_0xfb99('0xb')](function(){return realtime;});}function main(){return server[_0xfb99('0x19')](realtime)[_0xfb99('0xb')](function(_0x100a0e){return initRealtime();})['then'](function(_0x2a23b8){return setInterval(initRealtime,0x1388);})['catch'](function(_0x1f2246){console['log'](_0x1f2246);});}main();
\ No newline at end of file
+var _0xa356=['./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/whatsappQueue','resolve','then','initAgents','getOpenchannelQueues','getChatQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log'];(function(_0x7c7a41,_0x11a170){var _0x5c09d3=function(_0x5dec92){while(--_0x5dec92){_0x7c7a41['push'](_0x7c7a41['shift']());}};_0x5c09d3(++_0x11a170);}(_0xa356,0x134));var _0x6a35=function(_0x15e81a,_0xe8a4f0){_0x15e81a=_0x15e81a-0x0;var _0x512990=_0xa356[_0x15e81a];return _0x512990;};'use strict';var BPromise=require('bluebird');var server=require(_0x6a35('0x0'));var Realtime=require(_0x6a35('0x1'));var user=require(_0x6a35('0x2'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x6a35('0x3'));var chatQueue=require(_0x6a35('0x4'));var smsQueue=require(_0x6a35('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x6a35('0x6'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x6a35('0x7')]()[_0x6a35('0x8')](user['getAgents']())[_0x6a35('0x8')](realtime[_0x6a35('0x9')]())[_0x6a35('0x8')](interval['getIntervals']())[_0x6a35('0x8')](realtime['initIntervals']())[_0x6a35('0x8')](openchannelQueue[_0x6a35('0xa')]())[_0x6a35('0x8')](realtime['initOpenchannelQueues']())[_0x6a35('0x8')](chatQueue[_0x6a35('0xb')]())['then'](realtime['initChatQueues']())[_0x6a35('0x8')](smsQueue['getSmsQueues']())[_0x6a35('0x8')](realtime[_0x6a35('0xc')]())[_0x6a35('0x8')](mailQueue[_0x6a35('0xd')]())[_0x6a35('0x8')](realtime[_0x6a35('0xe')]())[_0x6a35('0x8')](faxQueue[_0x6a35('0xf')]())[_0x6a35('0x8')](realtime[_0x6a35('0x10')]())['then'](whatsappQueue[_0x6a35('0x11')]())[_0x6a35('0x8')](realtime[_0x6a35('0x12')]())[_0x6a35('0x8')](function(){return realtime;});}function main(){return server[_0x6a35('0x13')](realtime)[_0x6a35('0x8')](function(_0x308805){return initRealtime();})['then'](function(_0x38367e){return setInterval(initRealtime,0x1388);})[_0x6a35('0x14')](function(_0x17c316){console[_0x6a35('0x15')](_0x17c316);});}main();
\ No newline at end of file
index e48cbcd..566ab5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['ruleRef','name','nextTick','push','call','next','isEqual','restart','isNil','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','fromJSON','isString','parse','register','exports','lodash','util','events','EventEmitter','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','isObject','sync','filter','orderBy','asc','execute','result','clone','consequence'];(function(_0x230f87,_0x21229b){var _0x403dd4=function(_0xc9ddf1){while(--_0xc9ddf1){_0x230f87['push'](_0x230f87['shift']());}};_0x403dd4(++_0x21229b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xc4aa[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var EventEmitter=require(_0xac4a('0x2'))[_0xac4a('0x3')];function RuleEngine(_0x275161,_0x22469d){this['init']();if(!_['isNil'](_0x275161)){this['register'](_0x275161);}if(_0x22469d){this[_0xac4a('0x4')]=_0x22469d[_0xac4a('0x4')];}return this;}util[_0xac4a('0x5')](RuleEngine,EventEmitter);RuleEngine[_0xac4a('0x6')][_0xac4a('0x7')]=function(_0x15cd34){this[_0xac4a('0x8')]=[];this[_0xac4a('0x9')]=[];};RuleEngine['prototype']['register']=function(_0x1aba6d){if(Array[_0xac4a('0xa')](_0x1aba6d)){this[_0xac4a('0x8')]=this['rules'][_0xac4a('0xb')](_0x1aba6d);}else if(_0x1aba6d!==null&&_[_0xac4a('0xc')](_0x1aba6d)){this[_0xac4a('0x8')]['push'](_0x1aba6d);}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0xd')]=function(){this['activeRules']=this[_0xac4a('0x8')][_0xac4a('0xe')](function(_0x24291d){if(_['isNil'](_0x24291d['on'])){_0x24291d['on']=!![];}if(_0x24291d['on']===!![]){return _0x24291d;}});this[_0xac4a('0x9')]=_[_0xac4a('0xf')](this[_0xac4a('0x9')],['p'],[_0xac4a('0x10')]);};RuleEngine[_0xac4a('0x6')][_0xac4a('0x11')]=function(_0x34bc01,_0x33c287){var _0x190418=![];_0x34bc01[_0xac4a('0x12')]=!![];var _0x11e101=_[_0xac4a('0x13')](_0x34bc01);var _0x4a2119=_[_0xac4a('0x13')](_0x34bc01);var _0x34d797=this[_0xac4a('0x9')];var _0x144553=[];var _0x3e88e3=this[_0xac4a('0x4')];(function FnRuleLoop(_0x28e304){var _0x44ec59={'rules':function(){return _0x34d797;},'rule':function(){return _0x34d797[_0x28e304];},'when':function(_0x546c5d){if(_0x546c5d){var _0x5ac21e=_0x34d797[_0x28e304][_0xac4a('0x14')];_0x5ac21e[_0xac4a('0x15')]=_0x34d797[_0x28e304]['id']||_0x34d797[_0x28e304][_0xac4a('0x16')]||'index_'+_0x28e304;process[_0xac4a('0x17')](function(){_0x144553[_0xac4a('0x18')](_0x5ac21e[_0xac4a('0x15')]);_0x5ac21e[_0xac4a('0x19')](_0x11e101,_0x44ec59);});}else{process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1a')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190418=!![];return FnRuleLoop(0x0);},'next':function(_0xe38996){if(!_0x3e88e3&&!_[_0xac4a('0x1b')](_0x4a2119,_0x11e101)){_0x4a2119=_['clone'](_0x11e101);process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1c')]();});}else{process['nextTick'](function(){if(_[_0xac4a('0x1d')](_0xe38996)){return FnRuleLoop(_0x28e304+0x1);}else{return FnRuleLoop(_0xe38996);}});}}};if(_0x28e304<_0x34d797[_0xac4a('0x1e')]&&_0x190418===![]){var _0x3eacd3=_0x34d797[_0x28e304][_0xac4a('0x1f')];_0x3eacd3['call'](_0x11e101,_0x44ec59);}else{process[_0xac4a('0x17')](function(){_0x11e101[_0xac4a('0x20')]=_0x144553;return _0x33c287?_0x33c287(_0x11e101):_[_0xac4a('0x21')]();});}}(0x0));};RuleEngine[_0xac4a('0x6')][_0xac4a('0x22')]=function(_0x2b0dc2){if(_[_0xac4a('0x1d')](_0x2b0dc2)){return this[_0xac4a('0x8')];}else{var _0x3e2c69=_[_0xac4a('0x23')](_0x2b0dc2);return _[_0xac4a('0xe')](this[_0xac4a('0x8')],_0x3e2c69);}};RuleEngine[_0xac4a('0x6')][_0xac4a('0x24')]=function(_0x1c13dc,_0x20202c){var _0x4e17ce=_0x1c13dc==='on'||_0x1c13dc==='ON'?!![]:![];var _0x23b061=this[_0xac4a('0x22')](_0x20202c);for(var _0x42a33c=0x0,_0x2772fe=_0x23b061[_0xac4a('0x1e')];_0x42a33c<_0x2772fe;_0x42a33c+=0x1){_0x23b061[_0x42a33c]['on']=_0x4e17ce;}this['sync']();};RuleEngine['prototype'][_0xac4a('0x25')]=function(_0x7a948b,_0x1f12d5){_0x7a948b=parseInt(_0x7a948b,0xa);var _0x546b65=this['findRules'](_0x1f12d5);for(var _0x355755=0x0,_0x2896bc=_0x546b65[_0xac4a('0x1e')];_0x355755<_0x2896bc;_0x355755+=0x1){_0x546b65[_0x355755][_0xac4a('0x26')]=_0x7a948b;}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0x27')]=function(){var _0x482afc=this[_0xac4a('0x8')];if(_0x482afc instanceof Array){_0x482afc=_0x482afc['map'](function(_0x17e6de){_0x17e6de[_0xac4a('0x1f')]=_0x17e6de[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x17e6de[_0xac4a('0x14')]=_0x17e6de[_0xac4a('0x14')][_0xac4a('0x28')]();return _0x17e6de;});}else if(!_[_0xac4a('0x1d')](_0x482afc)){_0x482afc[_0xac4a('0x1f')]=_0x482afc[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x482afc[_0xac4a('0x14')]=_0x482afc[_0xac4a('0x14')][_0xac4a('0x28')]();}return _0x482afc;};RuleEngine['prototype'][_0xac4a('0x29')]=function(_0x1c41fb){this['init']();if(_[_0xac4a('0x2a')](_0x1c41fb)){_0x1c41fb=JSON[_0xac4a('0x2b')](_0x1c41fb);}if(_0x1c41fb instanceof Array){_0x1c41fb=_0x1c41fb['map'](function(_0x58804b){_0x58804b[_0xac4a('0x1f')]=eval('('+_0x58804b[_0xac4a('0x1f')]+')');_0x58804b[_0xac4a('0x14')]=eval('('+_0x58804b[_0xac4a('0x14')]+')');return _0x58804b;});}else if(_0x1c41fb!==null&&typeof _0x1c41fb=='object'){_0x1c41fb[_0xac4a('0x1f')]=eval('('+_0x1c41fb[_0xac4a('0x1f')]+')');_0x1c41fb['consequence']=eval('('+_0x1c41fb[_0xac4a('0x14')]+')');}this[_0xac4a('0x2c')](_0x1c41fb);};module[_0xac4a('0x2d')]=RuleEngine;
\ No newline at end of file
+var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x41f96e,_0x333851){var _0x48a4ac=function(_0xdad934){while(--_0xdad934){_0x41f96e['push'](_0x41f96e['shift']());}};_0x48a4ac(++_0x333851);}(_0x326f,0xd1));var _0xf326=function(_0x4f3c5a,_0x46ba10){_0x4f3c5a=_0x4f3c5a-0x0;var _0x17fb31=_0x326f[_0x4f3c5a];return _0x17fb31;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
index f013d08..9dcad09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a29=['error','message','result','catch','sendMailMessage','bluebird','jayson/promise','http','request','then'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1a29,0x73));var _0x91a2=function(_0x1d3577,_0x590775){_0x1d3577=_0x1d3577-0x0;var _0x529883=_0x1a29[_0x1d3577];return _0x529883;};'use strict';var BPromise=require(_0x91a2('0x0'));var jayson=require(_0x91a2('0x1'));var client=jayson['client'][_0x91a2('0x2')]({'port':0x232b});function request(_0x3e61bc,_0x2b5a5c){return new BPromise(function(_0x487c4a,_0x2cf16d){return client[_0x91a2('0x3')](_0x3e61bc,_0x2b5a5c)[_0x91a2('0x4')](function(_0x39a001){if(_0x39a001[_0x91a2('0x5')]){return _0x2cf16d(_0x39a001[_0x91a2('0x5')][_0x91a2('0x6')]);}else{return _0x487c4a(_0x39a001[_0x91a2('0x7')]);}})[_0x91a2('0x8')](function(_0x2ac80c){return _0x2cf16d(_0x2ac80c);});});}exports[_0x91a2('0x9')]=function(_0x4af4f6,_0x2399cd){return request('SendMail',{'account':_0x4af4f6,'message':_0x2399cd});};
\ No newline at end of file
+var _0x0d51=['bluebird','jayson/promise','client','http','then','error','message','result','catch','sendMailMessage','SendMail'];(function(_0x187924,_0x17e8e1){var _0x434cff=function(_0xf187eb){while(--_0xf187eb){_0x187924['push'](_0x187924['shift']());}};_0x434cff(++_0x17e8e1);}(_0x0d51,0x1ef));var _0x10d5=function(_0x1b1a3b,_0x52a88a){_0x1b1a3b=_0x1b1a3b-0x0;var _0x385347=_0x0d51[_0x1b1a3b];return _0x385347;};'use strict';var BPromise=require(_0x10d5('0x0'));var jayson=require(_0x10d5('0x1'));var client=jayson[_0x10d5('0x2')][_0x10d5('0x3')]({'port':0x232b});function request(_0x243ffa,_0x55ed5e){return new BPromise(function(_0x2fe5df,_0x1293da){return client['request'](_0x243ffa,_0x55ed5e)[_0x10d5('0x4')](function(_0xf982bc){if(_0xf982bc[_0x10d5('0x5')]){return _0x1293da(_0xf982bc[_0x10d5('0x5')][_0x10d5('0x6')]);}else{return _0x2fe5df(_0xf982bc[_0x10d5('0x7')]);}})[_0x10d5('0x8')](function(_0x3136fa){return _0x1293da(_0x3136fa);});});}exports[_0x10d5('0x9')]=function(_0x24e08f,_0x5c94d5){return request(_0x10d5('0xa'),{'account':_0x24e08f,'message':_0x5c94d5});};
\ No newline at end of file
index 8452404..87eb211 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9205=['smsWaitingInteractions','whatsappWaitingInteractions','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','updateRealtime','mail','chat','openchannel','fax','sms','Status','StatusTime','toNumber','format','chatStatusTime','smsStatusTime','whatsappCurrentCapacity','openchannelStatus','faxWaitingInteractions','openchannelWaitingInteractions','md5','emit','user:save','exports','ioredis','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','mailWaitingInteractions'];(function(_0x304343,_0x2cc6ca){var _0x549072=function(_0x5f21e8){while(--_0x5f21e8){_0x304343['push'](_0x304343['shift']());}};_0x549072(++_0x2cc6ca);}(_0x9205,0x167));var _0x5920=function(_0x9bc01e,_0x2d95f7){_0x9bc01e=_0x9bc01e-0x0;var _0x4cd61d=_0x9205[_0x9bc01e];return _0x4cd61d;};'use strict';var _=require('lodash');var moment=require('moment');var md5=require('md5');var Redis=require(_0x5920('0x0'));var config=require('../../../config/environment');config[_0x5920('0x1')]=_[_0x5920('0x2')](config[_0x5920('0x1')],{'host':_0x5920('0x3'),'port':0x18eb});var io=require(_0x5920('0x4'))(new Redis(config[_0x5920('0x1')]));function Agent(_0x18353c){this['id']=_0x18353c['id']||0x0;this[_0x5920('0x5')]=_0x18353c['name']||'';this[_0x5920('0x6')]=_0x18353c[_0x5920('0x6')]||!![];this[_0x5920('0x7')]=_0x18353c['voicePause']||![];this[_0x5920('0x8')]=_0x18353c[_0x5920('0x8')]||![];this[_0x5920('0x9')]=_0x18353c[_0x5920('0x9')]||![];this[_0x5920('0xa')]=_0x18353c[_0x5920('0xa')]||![];this['smsPause']=_0x18353c[_0x5920('0xb')]||![];this[_0x5920('0xc')]=_0x18353c['openchannelPause']||![];this['chatStatus']=_0x5920('0xd');this['chatStatusTime']=0x0;this[_0x5920('0xe')]=_0x18353c[_0x5920('0xe')]||0x0;this[_0x5920('0xf')]=0x0;this[_0x5920('0x10')]=_0x5920('0xd');this[_0x5920('0x11')]=0x0;this[_0x5920('0x12')]=_0x18353c['mailCapacity']||0x0;this[_0x5920('0x13')]=0x0;this[_0x5920('0x14')]=_0x5920('0xd');this[_0x5920('0x15')]=0x0;this[_0x5920('0x16')]=_0x18353c[_0x5920('0x16')]||0x0;this[_0x5920('0x17')]=0x0;this[_0x5920('0x18')]=_0x5920('0xd');this['smsStatusTime']=0x0;this[_0x5920('0x19')]=_0x18353c['smsCapacity']||0x0;this[_0x5920('0x1a')]=0x0;this[_0x5920('0x1b')]=_0x5920('0xd');this[_0x5920('0x1c')]=0x0;this[_0x5920('0x1d')]=_0x18353c['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0x5920('0xd');this[_0x5920('0x1e')]=0x0;this[_0x5920('0x1f')]=_0x18353c['openchannelCapacity']||0x0;this[_0x5920('0x20')]=0x0;this[_0x5920('0x21')]=![];this[_0x5920('0x22')]=undefined;this['md5']='';this[_0x5920('0x23')]={};this['faxWaitingInteractions']={};this[_0x5920('0x24')]={};this['openchannelWaitingInteractions']={};this[_0x5920('0x25')]={};this[_0x5920('0x26')]={};this['updateRealtime']();}Agent[_0x5920('0x27')][_0x5920('0x28')]=function(_0x17ba76){if(this[_0x17ba76+_0x5920('0x29')]>0x0){if(this[_0x17ba76+_0x5920('0x2a')]>0x0&&this[_0x17ba76+_0x5920('0x29')]>=this[_0x17ba76+'Capacity']){return _0x5920('0x2b');}else{return _0x5920('0x2c');}}else{return _0x5920('0x2d');}};Agent['prototype'][_0x5920('0x2e')]=function(){var _0xe20dfa=[_0x5920('0x2f'),_0x5920('0x30'),_0x5920('0x31'),_0x5920('0x32'),_0x5920('0x33'),'whatsapp'];for(var _0x177d63=0x0;_0x177d63<_0xe20dfa['length'];_0x177d63+=0x1){var _0x223cdd=this['getChannelStatus'](_0xe20dfa[_0x177d63]);if(this[_0xe20dfa[_0x177d63]+_0x5920('0x34')]!==_0x223cdd){this[_0xe20dfa[_0x177d63]+_0x5920('0x35')]=_[_0x5920('0x36')](moment()[_0x5920('0x37')]('x'));}this[_0xe20dfa[_0x177d63]+_0x5920('0x34')]=_0x223cdd;}var _0x8fe546={'id':this['id'],'name':this[_0x5920('0x5')],'online':this[_0x5920('0x6')],'voicePause':this['voicePause'],'chatPause':this[_0x5920('0x8')],'mailPause':this[_0x5920('0x9')],'smsPause':this[_0x5920('0xb')],'faxPause':this[_0x5920('0xa')],'openchannelPause':this[_0x5920('0xc')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x5920('0x38')],'chatCapacity':this[_0x5920('0xe')],'chatCurrentCapacity':this[_0x5920('0xf')],'mailStatus':this[_0x5920('0x10')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0x5920('0x13')],'faxStatus':this[_0x5920('0x14')],'faxStatusTime':this[_0x5920('0x15')],'faxCapacity':this[_0x5920('0x16')],'faxCurrentCapacity':this[_0x5920('0x17')],'smsStatus':this[_0x5920('0x18')],'smsStatusTime':this[_0x5920('0x39')],'smsCapacity':this[_0x5920('0x19')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x5920('0x1c')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x5920('0x3a')],'openchannelStatus':this[_0x5920('0x3b')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0x5920('0x1f')],'openchannelCurrentCapacity':this[_0x5920('0x20')],'busy':this[_0x5920('0x21')],'busyQueue':this[_0x5920('0x22')],'chatWaitingInteractions':this[_0x5920('0x23')],'faxWaitingInteractions':this[_0x5920('0x3c')],'mailWaitingInteractions':this[_0x5920('0x24')],'openchannelWaitingInteractions':this[_0x5920('0x3d')],'smsWaitingInteractions':this[_0x5920('0x25')],'whatsappWaitingInteractions':this[_0x5920('0x26')]};var _0x3edd96=md5(JSON['stringify'](_0x8fe546));if(this[_0x5920('0x3e')]!==_0x3edd96){this[_0x5920('0x3e')]=_0x3edd96;io[_0x5920('0x3f')](_0x5920('0x40'),_0x8fe546);}};module[_0x5920('0x41')]=Agent;
\ No newline at end of file
+var _0x7f15=['smsPause','openchannelPause','chatStatus','chatCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','whatsappWaitingInteractions','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','sms','whatsapp','length','Status','StatusTime','toNumber','format','chatCurrentCapacity','busy','busyQueue','chatWaitingInteractions','smsWaitingInteractions','emit','user:save','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','online','voicePause','chatPause','faxPause'];(function(_0x12c425,_0x587f49){var _0x4bf48e=function(_0x56352e){while(--_0x56352e){_0x12c425['push'](_0x12c425['shift']());}};_0x4bf48e(++_0x587f49);}(_0x7f15,0xae));var _0x57f1=function(_0x287731,_0x31dbfb){_0x287731=_0x287731-0x0;var _0x2e92d8=_0x7f15[_0x287731];return _0x2e92d8;};'use strict';var _=require(_0x57f1('0x0'));var moment=require('moment');var md5=require(_0x57f1('0x1'));var Redis=require(_0x57f1('0x2'));var config=require(_0x57f1('0x3'));config[_0x57f1('0x4')]=_[_0x57f1('0x5')](config['redis'],{'host':_0x57f1('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x57f1('0x4')]));function Agent(_0x2ffc7f){this['id']=_0x2ffc7f['id']||0x0;this['name']=_0x2ffc7f[_0x57f1('0x7')]||'';this[_0x57f1('0x8')]=_0x2ffc7f['online']||!![];this[_0x57f1('0x9')]=_0x2ffc7f[_0x57f1('0x9')]||![];this[_0x57f1('0xa')]=_0x2ffc7f[_0x57f1('0xa')]||![];this['mailPause']=_0x2ffc7f['mailPause']||![];this[_0x57f1('0xb')]=_0x2ffc7f[_0x57f1('0xb')]||![];this[_0x57f1('0xc')]=_0x2ffc7f[_0x57f1('0xc')]||![];this[_0x57f1('0xd')]=_0x2ffc7f['openchannelPause']||![];this[_0x57f1('0xe')]='unknown';this['chatStatusTime']=0x0;this[_0x57f1('0xf')]=_0x2ffc7f[_0x57f1('0xf')]||0x0;this['chatCurrentCapacity']=0x0;this[_0x57f1('0x10')]=_0x57f1('0x11');this[_0x57f1('0x12')]=0x0;this[_0x57f1('0x13')]=_0x2ffc7f[_0x57f1('0x13')]||0x0;this[_0x57f1('0x14')]=0x0;this[_0x57f1('0x15')]=_0x57f1('0x11');this[_0x57f1('0x16')]=0x0;this[_0x57f1('0x17')]=_0x2ffc7f[_0x57f1('0x17')]||0x0;this[_0x57f1('0x18')]=0x0;this[_0x57f1('0x19')]=_0x57f1('0x11');this[_0x57f1('0x1a')]=0x0;this['smsCapacity']=_0x2ffc7f[_0x57f1('0x1b')]||0x0;this[_0x57f1('0x1c')]=0x0;this[_0x57f1('0x1d')]='unknown';this[_0x57f1('0x1e')]=0x0;this[_0x57f1('0x1f')]=_0x2ffc7f[_0x57f1('0x1f')]||0x0;this[_0x57f1('0x20')]=0x0;this[_0x57f1('0x21')]='unknown';this[_0x57f1('0x22')]=0x0;this[_0x57f1('0x23')]=_0x2ffc7f[_0x57f1('0x23')]||0x0;this[_0x57f1('0x24')]=0x0;this['busy']=![];this['busyQueue']=undefined;this[_0x57f1('0x1')]='';this['chatWaitingInteractions']={};this[_0x57f1('0x25')]={};this[_0x57f1('0x26')]={};this[_0x57f1('0x27')]={};this['smsWaitingInteractions']={};this[_0x57f1('0x28')]={};this['updateRealtime']();}Agent[_0x57f1('0x29')][_0x57f1('0x2a')]=function(_0x3e2994){if(this[_0x3e2994+_0x57f1('0x2b')]>0x0){if(this[_0x3e2994+_0x57f1('0x2c')]>0x0&&this[_0x3e2994+_0x57f1('0x2b')]>=this[_0x3e2994+'Capacity']){return _0x57f1('0x2d');}else{return _0x57f1('0x2e');}}else{return _0x57f1('0x2f');}};Agent['prototype']['updateRealtime']=function(){var _0x20c14c=['mail','chat','openchannel','fax',_0x57f1('0x30'),_0x57f1('0x31')];for(var _0xa69c97=0x0;_0xa69c97<_0x20c14c[_0x57f1('0x32')];_0xa69c97+=0x1){var _0x4aefed=this['getChannelStatus'](_0x20c14c[_0xa69c97]);if(this[_0x20c14c[_0xa69c97]+_0x57f1('0x33')]!==_0x4aefed){this[_0x20c14c[_0xa69c97]+_0x57f1('0x34')]=_[_0x57f1('0x35')](moment()[_0x57f1('0x36')]('x'));}this[_0x20c14c[_0xa69c97]+_0x57f1('0x33')]=_0x4aefed;}var _0xd2e50b={'id':this['id'],'name':this[_0x57f1('0x7')],'online':this['online'],'voicePause':this['voicePause'],'chatPause':this[_0x57f1('0xa')],'mailPause':this['mailPause'],'smsPause':this[_0x57f1('0xc')],'faxPause':this[_0x57f1('0xb')],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0x57f1('0xe')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x57f1('0xf')],'chatCurrentCapacity':this[_0x57f1('0x37')],'mailStatus':this[_0x57f1('0x10')],'mailStatusTime':this[_0x57f1('0x12')],'mailCapacity':this[_0x57f1('0x13')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x57f1('0x15')],'faxStatusTime':this[_0x57f1('0x16')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x57f1('0x18')],'smsStatus':this[_0x57f1('0x19')],'smsStatusTime':this[_0x57f1('0x1a')],'smsCapacity':this[_0x57f1('0x1b')],'smsCurrentCapacity':this[_0x57f1('0x1c')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x57f1('0x1e')],'whatsappCapacity':this[_0x57f1('0x1f')],'whatsappCurrentCapacity':this[_0x57f1('0x20')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x57f1('0x22')],'openchannelCapacity':this[_0x57f1('0x23')],'openchannelCurrentCapacity':this[_0x57f1('0x24')],'busy':this[_0x57f1('0x38')],'busyQueue':this[_0x57f1('0x39')],'chatWaitingInteractions':this[_0x57f1('0x3a')],'faxWaitingInteractions':this[_0x57f1('0x25')],'mailWaitingInteractions':this[_0x57f1('0x26')],'openchannelWaitingInteractions':this[_0x57f1('0x27')],'smsWaitingInteractions':this[_0x57f1('0x3b')],'whatsappWaitingInteractions':this[_0x57f1('0x28')]};var _0x1e374c=md5(JSON['stringify'](_0xd2e50b));if(this[_0x57f1('0x1')]!==_0x1e374c){this[_0x57f1('0x1')]=_0x1e374c;io[_0x57f1('0x3c')](_0x57f1('0x3d'),_0xd2e50b);}};module['exports']=Agent;
\ No newline at end of file
index caa06b1..709bcef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ea=['prototype','map','updateRealtime','paused','length','online','loggedIn','chatPause','available','format','chat:queue:%s','emit','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x55ea,0x11b));var _0xa55e=function(_0x25af79,_0x53635e){_0x25af79=_0x25af79-0x0;var _0x52ee91=_0x55ea[_0x25af79];return _0x52ee91;};'use strict';var _=require(_0xa55e('0x0'));var md5=require('md5');var util=require(_0xa55e('0x1'));var Redis=require(_0xa55e('0x2'));var config=require(_0xa55e('0x3'));config[_0xa55e('0x4')]=_[_0xa55e('0x5')](config[_0xa55e('0x4')],{'host':_0xa55e('0x6'),'port':0x18eb});var io=require(_0xa55e('0x7'))(new Redis(config[_0xa55e('0x4')]));function ChatQueue(_0x27ba2e){this['id']=_0x27ba2e['id']||0x0;this[_0xa55e('0x8')]=_0x27ba2e[_0xa55e('0x8')]||'';this[_0xa55e('0x9')]=_0x27ba2e[_0xa55e('0x9')]||0xa;this[_0xa55e('0xa')]=_0x27ba2e[_0xa55e('0xa')]||_0xa55e('0xb');this[_0xa55e('0xc')]=_0x27ba2e['Agents'];this[_0xa55e('0xd')]={};this[_0xa55e('0xe')]=0x0;this[_0xa55e('0xf')]='';this[_0xa55e('0x10')]();this['updateRealtime']();}ChatQueue[_0xa55e('0x11')][_0xa55e('0x10')]=function(){var _0xa12f3e=this[_0xa55e('0xd')]['_rr'];this[_0xa55e('0xd')]=_[_0xa55e('0x12')](this[_0xa55e('0xc')],'id');this[_0xa55e('0xd')]['_rr']=_0xa12f3e;};ChatQueue[_0xa55e('0x11')][_0xa55e('0x13')]=function(){this['loggedIn']=0x0;this[_0xa55e('0x14')]=0x0;for(var _0x21d504=0x0;_0x21d504<this['Agents'][_0xa55e('0x15')];_0x21d504+=0x1){if(this[_0xa55e('0xc')][_0x21d504][_0xa55e('0x16')]){this[_0xa55e('0x17')]+=0x1;}if(this['Agents'][_0x21d504][_0xa55e('0x18')]){this['paused']+=0x1;}}this['available']=this[_0xa55e('0x17')]-this[_0xa55e('0x14')];this[_0xa55e('0x19')]=this['available']>=0x0?this[_0xa55e('0x19')]:0x0;var _0x393052={'id':this['id'],'available':this[_0xa55e('0x19')],'loggedIn':this[_0xa55e('0x17')],'name':this[_0xa55e('0x8')],'paused':this[_0xa55e('0x14')],'waiting':this[_0xa55e('0xe')]};var _0x1c8975=md5(JSON['stringify'](_0x393052));if(this[_0xa55e('0xf')]!==_0x1c8975){this['md5']=_0x1c8975;io['to'](util[_0xa55e('0x1a')](_0xa55e('0x1b'),_0x393052[_0xa55e('0x8')]))[_0xa55e('0x1c')]('chat_queue:save',_0x393052);}};module[_0xa55e('0x1d')]=ChatQueue;
\ No newline at end of file
+var _0xce96=['emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','paused','length','chatPause','available','format'];(function(_0x193dcf,_0x33a3bc){var _0x58481a=function(_0x1360b6){while(--_0x1360b6){_0x193dcf['push'](_0x193dcf['shift']());}};_0x58481a(++_0x33a3bc);}(_0xce96,0x1ef));var _0x6ce9=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xce96[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x6ce9('0x0'));var md5=require(_0x6ce9('0x1'));var util=require(_0x6ce9('0x2'));var Redis=require(_0x6ce9('0x3'));var config=require(_0x6ce9('0x4'));config[_0x6ce9('0x5')]=_[_0x6ce9('0x6')](config['redis'],{'host':_0x6ce9('0x7'),'port':0x18eb});var io=require(_0x6ce9('0x8'))(new Redis(config[_0x6ce9('0x5')]));function ChatQueue(_0x32ba87){this['id']=_0x32ba87['id']||0x0;this[_0x6ce9('0x9')]=_0x32ba87[_0x6ce9('0x9')]||'';this[_0x6ce9('0xa')]=_0x32ba87[_0x6ce9('0xa')]||0xa;this[_0x6ce9('0xb')]=_0x32ba87[_0x6ce9('0xb')]||_0x6ce9('0xc');this[_0x6ce9('0xd')]=_0x32ba87['Agents'];this[_0x6ce9('0xe')]={};this[_0x6ce9('0xf')]=0x0;this[_0x6ce9('0x1')]='';this['updateRouting']();this[_0x6ce9('0x10')]();}ChatQueue[_0x6ce9('0x11')][_0x6ce9('0x12')]=function(){var _0x5227bc=this[_0x6ce9('0xe')][_0x6ce9('0x13')];this[_0x6ce9('0xe')]=_[_0x6ce9('0x14')](this[_0x6ce9('0xd')],'id');this[_0x6ce9('0xe')][_0x6ce9('0x13')]=_0x5227bc;};ChatQueue[_0x6ce9('0x11')][_0x6ce9('0x10')]=function(){this[_0x6ce9('0x15')]=0x0;this[_0x6ce9('0x16')]=0x0;for(var _0x17f373=0x0;_0x17f373<this[_0x6ce9('0xd')][_0x6ce9('0x17')];_0x17f373+=0x1){if(this[_0x6ce9('0xd')][_0x17f373]['online']){this[_0x6ce9('0x15')]+=0x1;}if(this[_0x6ce9('0xd')][_0x17f373][_0x6ce9('0x18')]){this[_0x6ce9('0x16')]+=0x1;}}this[_0x6ce9('0x19')]=this[_0x6ce9('0x15')]-this[_0x6ce9('0x16')];this['available']=this[_0x6ce9('0x19')]>=0x0?this[_0x6ce9('0x19')]:0x0;var _0x31f270={'id':this['id'],'available':this['available'],'loggedIn':this[_0x6ce9('0x15')],'name':this[_0x6ce9('0x9')],'paused':this[_0x6ce9('0x16')],'waiting':this[_0x6ce9('0xf')]};var _0x430aee=md5(JSON['stringify'](_0x31f270));if(this[_0x6ce9('0x1')]!==_0x430aee){this[_0x6ce9('0x1')]=_0x430aee;io['to'](util[_0x6ce9('0x1a')]('chat:queue:%s',_0x31f270[_0x6ce9('0x9')]))[_0x6ce9('0x1b')]('chat_queue:save',_0x31f270);}};module[_0x6ce9('0x1c')]=ChatQueue;
\ No newline at end of file
index 18ceda8..2b529bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8881=['Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','faxPause','available','waiting','stringify','format','fax_queue:save','exports','md5','util','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x82f48b,_0x580ddb){var _0x565bf0=function(_0x213da7){while(--_0x213da7){_0x82f48b['push'](_0x82f48b['shift']());}};_0x565bf0(++_0x580ddb);}(_0x8881,0xea));var _0x1888=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x8881[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var md5=require(_0x1888('0x0'));var util=require(_0x1888('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x1888('0x2')]=_[_0x1888('0x3')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1888('0x4'))(new Redis(config[_0x1888('0x2')]));function FaxQueue(_0x140570){this['id']=_0x140570['id']||0x0;this[_0x1888('0x5')]=_0x140570[_0x1888('0x5')]||'';this[_0x1888('0x6')]=_0x140570[_0x1888('0x6')]||0xa;this[_0x1888('0x7')]=_0x140570[_0x1888('0x7')]||_0x1888('0x8');this[_0x1888('0x9')]=_0x140570[_0x1888('0x9')];this[_0x1888('0xa')]={};this['waiting']=0x0;this[_0x1888('0x0')]='';this[_0x1888('0xb')]();this[_0x1888('0xc')]();}FaxQueue[_0x1888('0xd')][_0x1888('0xb')]=function(){var _0x484296=this[_0x1888('0xa')][_0x1888('0xe')];this[_0x1888('0xa')]=_[_0x1888('0xf')](this[_0x1888('0x9')],'id');this[_0x1888('0xa')]['_rr']=_0x484296;};FaxQueue[_0x1888('0xd')][_0x1888('0xc')]=function(){this[_0x1888('0x10')]=0x0;this[_0x1888('0x11')]=0x0;for(var _0x92601b=0x0;_0x92601b<this[_0x1888('0x9')][_0x1888('0x12')];_0x92601b+=0x1){if(this[_0x1888('0x9')][_0x92601b][_0x1888('0x13')]){this['loggedIn']+=0x1;}if(this[_0x1888('0x9')][_0x92601b][_0x1888('0x14')]){this[_0x1888('0x11')]+=0x1;}}this[_0x1888('0x15')]=this[_0x1888('0x10')]-this[_0x1888('0x11')];this[_0x1888('0x15')]=this[_0x1888('0x15')]>=0x0?this[_0x1888('0x15')]:0x0;var _0x41bed3={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0x1888('0x5')],'paused':this[_0x1888('0x11')],'waiting':this[_0x1888('0x16')]};var _0x28c25b=md5(JSON[_0x1888('0x17')](_0x41bed3));if(this[_0x1888('0x0')]!==_0x28c25b){this[_0x1888('0x0')]=_0x28c25b;io['to'](util[_0x1888('0x18')]('fax:queue:%s',_0x41bed3[_0x1888('0x5')]))['emit'](_0x1888('0x19'),_0x41bed3);}};module[_0x1888('0x1a')]=FaxQueue;
\ No newline at end of file
+var _0x4bd9=['util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','updateRouting','mapAgentsId','_rr','map','prototype','updateRealtime','loggedIn','paused','faxPause','available','waiting','format','emit','exports','md5'];(function(_0x127d55,_0x90027b){var _0x508ed8=function(_0x252633){while(--_0x252633){_0x127d55['push'](_0x127d55['shift']());}};_0x508ed8(++_0x90027b);}(_0x4bd9,0x103));var _0x94bd=function(_0x30a213,_0x1d5c12){_0x30a213=_0x30a213-0x0;var _0x40eb2d=_0x4bd9[_0x30a213];return _0x40eb2d;};'use strict';var _=require('lodash');var md5=require(_0x94bd('0x0'));var util=require(_0x94bd('0x1'));var Redis=require(_0x94bd('0x2'));var config=require('../../../config/environment');config[_0x94bd('0x3')]=_[_0x94bd('0x4')](config[_0x94bd('0x3')],{'host':_0x94bd('0x5'),'port':0x18eb});var io=require(_0x94bd('0x6'))(new Redis(config[_0x94bd('0x3')]));function FaxQueue(_0x34dfe3){this['id']=_0x34dfe3['id']||0x0;this[_0x94bd('0x7')]=_0x34dfe3[_0x94bd('0x7')]||'';this[_0x94bd('0x8')]=_0x34dfe3[_0x94bd('0x8')]||0xa;this[_0x94bd('0x9')]=_0x34dfe3[_0x94bd('0x9')]||_0x94bd('0xa');this['Agents']=_0x34dfe3[_0x94bd('0xb')];this['mapAgentsId']={};this['waiting']=0x0;this[_0x94bd('0x0')]='';this[_0x94bd('0xc')]();this['updateRealtime']();}FaxQueue['prototype']['updateRouting']=function(){var _0x166a3c=this[_0x94bd('0xd')][_0x94bd('0xe')];this[_0x94bd('0xd')]=_[_0x94bd('0xf')](this['Agents'],'id');this['mapAgentsId'][_0x94bd('0xe')]=_0x166a3c;};FaxQueue[_0x94bd('0x10')][_0x94bd('0x11')]=function(){this[_0x94bd('0x12')]=0x0;this[_0x94bd('0x13')]=0x0;for(var _0x4091a2=0x0;_0x4091a2<this[_0x94bd('0xb')]['length'];_0x4091a2+=0x1){if(this[_0x94bd('0xb')][_0x4091a2]['online']){this['loggedIn']+=0x1;}if(this['Agents'][_0x4091a2][_0x94bd('0x14')]){this['paused']+=0x1;}}this[_0x94bd('0x15')]=this[_0x94bd('0x12')]-this['paused'];this['available']=this['available']>=0x0?this[_0x94bd('0x15')]:0x0;var _0x933430={'id':this['id'],'available':this[_0x94bd('0x15')],'loggedIn':this[_0x94bd('0x12')],'name':this[_0x94bd('0x7')],'paused':this[_0x94bd('0x13')],'waiting':this[_0x94bd('0x16')]};var _0x46b918=md5(JSON['stringify'](_0x933430));if(this[_0x94bd('0x0')]!==_0x46b918){this[_0x94bd('0x0')]=_0x46b918;io['to'](util[_0x94bd('0x17')]('fax:queue:%s',_0x933430['name']))[_0x94bd('0x18')]('fax_queue:save',_0x933430);}};module[_0x94bd('0x19')]=FaxQueue;
\ No newline at end of file
index 08a7f54..897d763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa803=['exports','Intervals'];(function(_0x513a32,_0x1b5293){var _0x4a9cf4=function(_0x4b5770){while(--_0x4b5770){_0x513a32['push'](_0x513a32['shift']());}};_0x4a9cf4(++_0x1b5293);}(_0xa803,0xdd));var _0x3a80=function(_0x4dfec3,_0x4978fe){_0x4dfec3=_0x4dfec3-0x0;var _0x207a76=_0xa803[_0x4dfec3];return _0x207a76;};'use strict';function Interval(_0x582bfd){this['id']=_0x582bfd['id']||0x0;this['name']=_0x582bfd['name']||'';this['Intervals']=_0x582bfd[_0x3a80('0x0')]||{};}module[_0x3a80('0x1')]=Interval;
\ No newline at end of file
+var _0x62a6=['Intervals','exports','name'];(function(_0x27efc5,_0x54963e){var _0x3eaaf5=function(_0x4093ca){while(--_0x4093ca){_0x27efc5['push'](_0x27efc5['shift']());}};_0x3eaaf5(++_0x54963e);}(_0x62a6,0x18b));var _0x662a=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x62a6[_0x1d1779];return _0x2377e9;};'use strict';function Interval(_0x55c5a9){this['id']=_0x55c5a9['id']||0x0;this[_0x662a('0x0')]=_0x55c5a9['name']||'';this[_0x662a('0x1')]=_0x55c5a9['Intervals']||{};}module[_0x662a('0x2')]=Interval;
\ No newline at end of file
index 5493ca5..b00cdfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad47=['Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','_rr','loggedIn','length','online','mailPause','paused','available','stringify','format','emit','mail_queue:save','exports','lodash','ioredis','redis','localhost','socket.io-emitter','name','timeout','strategy'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xad47,0x7f));var _0x7ad4=function(_0x3718b7,_0x2da677){_0x3718b7=_0x3718b7-0x0;var _0xf8c91e=_0xad47[_0x3718b7];return _0xf8c91e;};'use strict';var _=require(_0x7ad4('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0x7ad4('0x1'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0x7ad4('0x2')],{'host':_0x7ad4('0x3'),'port':0x18eb});var io=require(_0x7ad4('0x4'))(new Redis(config['redis']));function MailQueue(_0x25130e){this['id']=_0x25130e['id']||0x0;this['name']=_0x25130e[_0x7ad4('0x5')]||'';this[_0x7ad4('0x6')]=_0x25130e[_0x7ad4('0x6')]||0xa;this[_0x7ad4('0x7')]=_0x25130e[_0x7ad4('0x7')]||'beepall';this['Agents']=_0x25130e[_0x7ad4('0x8')];this[_0x7ad4('0x9')]={};this[_0x7ad4('0xa')]=0x0;this[_0x7ad4('0xb')]='';this[_0x7ad4('0xc')]();this[_0x7ad4('0xd')]();}MailQueue[_0x7ad4('0xe')][_0x7ad4('0xc')]=function(){var _0x3711c9=this[_0x7ad4('0x9')][_0x7ad4('0xf')];this[_0x7ad4('0x9')]=_['map'](this[_0x7ad4('0x8')],'id');this[_0x7ad4('0x9')][_0x7ad4('0xf')]=_0x3711c9;};MailQueue['prototype']['updateRealtime']=function(){this[_0x7ad4('0x10')]=0x0;this['paused']=0x0;for(var _0x1dab69=0x0;_0x1dab69<this['Agents'][_0x7ad4('0x11')];_0x1dab69+=0x1){if(this['Agents'][_0x1dab69][_0x7ad4('0x12')]){this[_0x7ad4('0x10')]+=0x1;}if(this[_0x7ad4('0x8')][_0x1dab69][_0x7ad4('0x13')]){this[_0x7ad4('0x14')]+=0x1;}}this['available']=this[_0x7ad4('0x10')]-this['paused'];this[_0x7ad4('0x15')]=this[_0x7ad4('0x15')]>=0x0?this[_0x7ad4('0x15')]:0x0;var _0x2648c3={'id':this['id'],'available':this['available'],'loggedIn':this[_0x7ad4('0x10')],'name':this[_0x7ad4('0x5')],'paused':this['paused'],'waiting':this['waiting']};var _0x6e9811=md5(JSON[_0x7ad4('0x16')](_0x2648c3));if(this[_0x7ad4('0xb')]!==_0x6e9811){this[_0x7ad4('0xb')]=_0x6e9811;io['to'](util[_0x7ad4('0x17')]('mail:queue:%s',_0x2648c3[_0x7ad4('0x5')]))[_0x7ad4('0x18')](_0x7ad4('0x19'),_0x2648c3);}};module[_0x7ad4('0x1a')]=MailQueue;
\ No newline at end of file
+var _0x8bbc=['map','loggedIn','paused','Agents','length','online','mailPause','available','waiting','stringify','format','mail:queue:%s','mail_queue:save','exports','lodash','md5','util','ioredis','redis','socket.io-emitter','name','timeout','strategy','beepall','mapAgentsId','updateRealtime','prototype','updateRouting','_rr'];(function(_0x526e71,_0x1e50ff){var _0x15ea82=function(_0x1e6eae){while(--_0x1e6eae){_0x526e71['push'](_0x526e71['shift']());}};_0x15ea82(++_0x1e50ff);}(_0x8bbc,0xf6));var _0xc8bb=function(_0x4314d7,_0x355218){_0x4314d7=_0x4314d7-0x0;var _0x5c599b=_0x8bbc[_0x4314d7];return _0x5c599b;};'use strict';var _=require(_0xc8bb('0x0'));var md5=require(_0xc8bb('0x1'));var util=require(_0xc8bb('0x2'));var Redis=require(_0xc8bb('0x3'));var config=require('../../../config/environment');config[_0xc8bb('0x4')]=_['defaults'](config[_0xc8bb('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xc8bb('0x5'))(new Redis(config[_0xc8bb('0x4')]));function MailQueue(_0x38bfa0){this['id']=_0x38bfa0['id']||0x0;this[_0xc8bb('0x6')]=_0x38bfa0[_0xc8bb('0x6')]||'';this[_0xc8bb('0x7')]=_0x38bfa0[_0xc8bb('0x7')]||0xa;this[_0xc8bb('0x8')]=_0x38bfa0['strategy']||_0xc8bb('0x9');this['Agents']=_0x38bfa0['Agents'];this[_0xc8bb('0xa')]={};this['waiting']=0x0;this[_0xc8bb('0x1')]='';this['updateRouting']();this[_0xc8bb('0xb')]();}MailQueue[_0xc8bb('0xc')][_0xc8bb('0xd')]=function(){var _0x1f8d90=this[_0xc8bb('0xa')][_0xc8bb('0xe')];this[_0xc8bb('0xa')]=_[_0xc8bb('0xf')](this['Agents'],'id');this[_0xc8bb('0xa')][_0xc8bb('0xe')]=_0x1f8d90;};MailQueue[_0xc8bb('0xc')][_0xc8bb('0xb')]=function(){this[_0xc8bb('0x10')]=0x0;this[_0xc8bb('0x11')]=0x0;for(var _0x1a3887=0x0;_0x1a3887<this[_0xc8bb('0x12')][_0xc8bb('0x13')];_0x1a3887+=0x1){if(this[_0xc8bb('0x12')][_0x1a3887][_0xc8bb('0x14')]){this[_0xc8bb('0x10')]+=0x1;}if(this[_0xc8bb('0x12')][_0x1a3887][_0xc8bb('0x15')]){this[_0xc8bb('0x11')]+=0x1;}}this[_0xc8bb('0x16')]=this[_0xc8bb('0x10')]-this[_0xc8bb('0x11')];this[_0xc8bb('0x16')]=this[_0xc8bb('0x16')]>=0x0?this[_0xc8bb('0x16')]:0x0;var _0x16378f={'id':this['id'],'available':this[_0xc8bb('0x16')],'loggedIn':this[_0xc8bb('0x10')],'name':this[_0xc8bb('0x6')],'paused':this['paused'],'waiting':this[_0xc8bb('0x17')]};var _0xea4446=md5(JSON[_0xc8bb('0x18')](_0x16378f));if(this[_0xc8bb('0x1')]!==_0xea4446){this['md5']=_0xea4446;io['to'](util[_0xc8bb('0x19')](_0xc8bb('0x1a'),_0x16378f[_0xc8bb('0x6')]))['emit'](_0xc8bb('0x1b'),_0x16378f);}};module[_0xc8bb('0x1c')]=MailQueue;
\ No newline at end of file
index 3c8d8cf..4ea40ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x1e226e,_0x12f949){var _0x5c5db2=function(_0x5f1e07){while(--_0x5f1e07){_0x1e226e['push'](_0x1e226e['shift']());}};_0x5c5db2(++_0x12f949);}(_0x814b,0x1a2));var _0xb814=function(_0x11b4fb,_0x10c784){_0x11b4fb=_0x11b4fb-0x0;var _0x56cbb5=_0x814b[_0x11b4fb];return _0x56cbb5;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _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(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x326f,0xd1));var _0xf326=function(_0x3bf72e,_0x29dffe){_0x3bf72e=_0x3bf72e-0x0;var _0x32636b=_0x326f[_0x3bf72e];return _0x32636b;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
index 5b4313f..9e94712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','paused','length','loggedIn','smsPause','available','name','format','sms:queue:%s','emit','exports','lodash','md5','util','ioredis','defaults','redis','localhost','socket.io-emitter','timeout','strategy','beepall','Agents'];(function(_0x333c10,_0x519ae7){var _0x592378=function(_0x2e1a13){while(--_0x2e1a13){_0x333c10['push'](_0x333c10['shift']());}};_0x592378(++_0x519ae7);}(_0x55e0,0xdc));var _0x055e=function(_0x3a0f56,_0x12643a){_0x3a0f56=_0x3a0f56-0x0;var _0x313fe2=_0x55e0[_0x3a0f56];return _0x313fe2;};'use strict';var _=require(_0x055e('0x0'));var md5=require(_0x055e('0x1'));var util=require(_0x055e('0x2'));var Redis=require(_0x055e('0x3'));var config=require('../../../config/environment');config['redis']=_[_0x055e('0x4')](config[_0x055e('0x5')],{'host':_0x055e('0x6'),'port':0x18eb});var io=require(_0x055e('0x7'))(new Redis(config[_0x055e('0x5')]));function SmsQueue(_0x196394){this['id']=_0x196394['id']||0x0;this['name']=_0x196394['name']||'';this[_0x055e('0x8')]=_0x196394['timeout']||0xa;this[_0x055e('0x9')]=_0x196394[_0x055e('0x9')]||_0x055e('0xa');this[_0x055e('0xb')]=_0x196394[_0x055e('0xb')];this['mapAgentsId']={};this[_0x055e('0xc')]=0x0;this[_0x055e('0x1')]='';this[_0x055e('0xd')]();this[_0x055e('0xe')]();}SmsQueue[_0x055e('0xf')]['updateRouting']=function(){var _0x56c78a=this[_0x055e('0x10')]['_rr'];this[_0x055e('0x10')]=_[_0x055e('0x11')](this[_0x055e('0xb')],'id');this[_0x055e('0x10')][_0x055e('0x12')]=_0x56c78a;};SmsQueue[_0x055e('0xf')][_0x055e('0xe')]=function(){this['loggedIn']=0x0;this[_0x055e('0x13')]=0x0;for(var _0xb80d83=0x0;_0xb80d83<this[_0x055e('0xb')][_0x055e('0x14')];_0xb80d83+=0x1){if(this[_0x055e('0xb')][_0xb80d83]['online']){this[_0x055e('0x15')]+=0x1;}if(this[_0x055e('0xb')][_0xb80d83][_0x055e('0x16')]){this['paused']+=0x1;}}this[_0x055e('0x17')]=this[_0x055e('0x15')]-this[_0x055e('0x13')];this[_0x055e('0x17')]=this[_0x055e('0x17')]>=0x0?this['available']:0x0;var _0x36ef10={'id':this['id'],'available':this[_0x055e('0x17')],'loggedIn':this[_0x055e('0x15')],'name':this[_0x055e('0x18')],'paused':this['paused'],'waiting':this[_0x055e('0xc')]};var _0x3cdd68=md5(JSON['stringify'](_0x36ef10));if(this[_0x055e('0x1')]!==_0x3cdd68){this[_0x055e('0x1')]=_0x3cdd68;io['to'](util[_0x055e('0x19')](_0x055e('0x1a'),_0x36ef10[_0x055e('0x18')]))[_0x055e('0x1b')]('sms_queue:save',_0x36ef10);}};module[_0x055e('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0x207d=['waiting','updateRouting','mapAgentsId','_rr','prototype','updateRealtime','loggedIn','paused','length','online','available','stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','ioredis','redis','localhost','name','timeout','strategy','beepall','Agents'];(function(_0x29ab8e,_0x67c0c1){var _0xc602a3=function(_0x2782b5){while(--_0x2782b5){_0x29ab8e['push'](_0x29ab8e['shift']());}};_0xc602a3(++_0x67c0c1);}(_0x207d,0x10d));var _0xd207=function(_0x19c0f1,_0x5c5d5f){_0x19c0f1=_0x19c0f1-0x0;var _0x13384d=_0x207d[_0x19c0f1];return _0x13384d;};'use strict';var _=require(_0xd207('0x0'));var md5=require(_0xd207('0x1'));var util=require(_0xd207('0x2'));var Redis=require(_0xd207('0x3'));var config=require('../../../config/environment');config[_0xd207('0x4')]=_['defaults'](config[_0xd207('0x4')],{'host':_0xd207('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd207('0x4')]));function SmsQueue(_0x47386f){this['id']=_0x47386f['id']||0x0;this[_0xd207('0x6')]=_0x47386f[_0xd207('0x6')]||'';this[_0xd207('0x7')]=_0x47386f[_0xd207('0x7')]||0xa;this[_0xd207('0x8')]=_0x47386f[_0xd207('0x8')]||_0xd207('0x9');this[_0xd207('0xa')]=_0x47386f[_0xd207('0xa')];this['mapAgentsId']={};this[_0xd207('0xb')]=0x0;this[_0xd207('0x1')]='';this[_0xd207('0xc')]();this['updateRealtime']();}SmsQueue['prototype'][_0xd207('0xc')]=function(){var _0x260dfd=this[_0xd207('0xd')]['_rr'];this[_0xd207('0xd')]=_['map'](this['Agents'],'id');this['mapAgentsId'][_0xd207('0xe')]=_0x260dfd;};SmsQueue[_0xd207('0xf')][_0xd207('0x10')]=function(){this[_0xd207('0x11')]=0x0;this[_0xd207('0x12')]=0x0;for(var _0x450adf=0x0;_0x450adf<this[_0xd207('0xa')][_0xd207('0x13')];_0x450adf+=0x1){if(this[_0xd207('0xa')][_0x450adf][_0xd207('0x14')]){this[_0xd207('0x11')]+=0x1;}if(this['Agents'][_0x450adf]['smsPause']){this[_0xd207('0x12')]+=0x1;}}this[_0xd207('0x15')]=this[_0xd207('0x11')]-this['paused'];this['available']=this[_0xd207('0x15')]>=0x0?this[_0xd207('0x15')]:0x0;var _0x3e7e60={'id':this['id'],'available':this[_0xd207('0x15')],'loggedIn':this['loggedIn'],'name':this[_0xd207('0x6')],'paused':this['paused'],'waiting':this['waiting']};var _0x6b7fbd=md5(JSON[_0xd207('0x16')](_0x3e7e60));if(this[_0xd207('0x1')]!==_0x6b7fbd){this[_0xd207('0x1')]=_0x6b7fbd;io['to'](util[_0xd207('0x17')](_0xd207('0x18'),_0x3e7e60[_0xd207('0x6')]))[_0xd207('0x19')](_0xd207('0x1a'),_0x3e7e60);}};module[_0xd207('0x1b')]=SmsQueue;
\ No newline at end of file
index 4f0e178..932b353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b93=['timeout','strategy','beepall','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','Agents','_rr','loggedIn','length','online','paused','available','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','md5','util','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name'];(function(_0x4d6543,_0x10b1e2){var _0xec5191=function(_0x2fd1e9){while(--_0x2fd1e9){_0x4d6543['push'](_0x4d6543['shift']());}};_0xec5191(++_0x10b1e2);}(_0x8b93,0xa0));var _0x38b9=function(_0x32dd98,_0x2bf6f1){_0x32dd98=_0x32dd98-0x0;var _0x22a2f1=_0x8b93[_0x32dd98];return _0x22a2f1;};'use strict';var _=require('lodash');var md5=require(_0x38b9('0x0'));var util=require(_0x38b9('0x1'));var Redis=require('ioredis');var config=require(_0x38b9('0x2'));config['redis']=_[_0x38b9('0x3')](config[_0x38b9('0x4')],{'host':_0x38b9('0x5'),'port':0x18eb});var io=require(_0x38b9('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x3f4808){this['id']=_0x3f4808['id']||0x0;this[_0x38b9('0x7')]=_0x3f4808['name']||'';this[_0x38b9('0x8')]=_0x3f4808[_0x38b9('0x8')]||0xa;this[_0x38b9('0x9')]=_0x3f4808['strategy']||_0x38b9('0xa');this['Agents']=_0x3f4808['Agents'];this[_0x38b9('0xb')]={};this[_0x38b9('0xc')]=0x0;this[_0x38b9('0x0')]='';this['updateRouting']();this[_0x38b9('0xd')]();}WhatsappQueue[_0x38b9('0xe')][_0x38b9('0xf')]=function(){var _0x37bb83=this[_0x38b9('0xb')]['_rr'];this[_0x38b9('0xb')]=_['map'](this[_0x38b9('0x10')],'id');this[_0x38b9('0xb')][_0x38b9('0x11')]=_0x37bb83;};WhatsappQueue['prototype'][_0x38b9('0xd')]=function(){this[_0x38b9('0x12')]=0x0;this['paused']=0x0;for(var _0x914593=0x0;_0x914593<this[_0x38b9('0x10')][_0x38b9('0x13')];_0x914593+=0x1){if(this['Agents'][_0x914593][_0x38b9('0x14')]){this[_0x38b9('0x12')]+=0x1;}if(this['Agents'][_0x914593]['whatsappPause']){this[_0x38b9('0x15')]+=0x1;}}this[_0x38b9('0x16')]=this[_0x38b9('0x12')]-this['paused'];this[_0x38b9('0x16')]=this['available']>=0x0?this[_0x38b9('0x16')]:0x0;var _0x4ef08={'id':this['id'],'available':this['available'],'loggedIn':this[_0x38b9('0x12')],'name':this[_0x38b9('0x7')],'paused':this[_0x38b9('0x15')],'waiting':this[_0x38b9('0xc')]};var _0x10ceeb=md5(JSON['stringify'](_0x4ef08));if(this[_0x38b9('0x0')]!==_0x10ceeb){this[_0x38b9('0x0')]=_0x10ceeb;io['to'](util[_0x38b9('0x17')](_0x38b9('0x18'),_0x4ef08[_0x38b9('0x7')]))[_0x38b9('0x19')](_0x38b9('0x1a'),_0x4ef08);}};module[_0x38b9('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0xd9f9=['ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','online','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','util'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd9f9,0x1be));var _0x9d9f=function(_0x166a4b,_0x3e0949){_0x166a4b=_0x166a4b-0x0;var _0x4b4e6e=_0xd9f9[_0x166a4b];return _0x4b4e6e;};'use strict';var _=require(_0x9d9f('0x0'));var md5=require('md5');var util=require(_0x9d9f('0x1'));var Redis=require(_0x9d9f('0x2'));var config=require(_0x9d9f('0x3'));config[_0x9d9f('0x4')]=_[_0x9d9f('0x5')](config[_0x9d9f('0x4')],{'host':_0x9d9f('0x6'),'port':0x18eb});var io=require(_0x9d9f('0x7'))(new Redis(config['redis']));function WhatsappQueue(_0x5193b3){this['id']=_0x5193b3['id']||0x0;this[_0x9d9f('0x8')]=_0x5193b3['name']||'';this[_0x9d9f('0x9')]=_0x5193b3[_0x9d9f('0x9')]||0xa;this[_0x9d9f('0xa')]=_0x5193b3['strategy']||'beepall';this['Agents']=_0x5193b3[_0x9d9f('0xb')];this[_0x9d9f('0xc')]={};this[_0x9d9f('0xd')]=0x0;this[_0x9d9f('0xe')]='';this[_0x9d9f('0xf')]();this[_0x9d9f('0x10')]();}WhatsappQueue[_0x9d9f('0x11')][_0x9d9f('0xf')]=function(){var _0x561b37=this[_0x9d9f('0xc')]['_rr'];this[_0x9d9f('0xc')]=_[_0x9d9f('0x12')](this[_0x9d9f('0xb')],'id');this[_0x9d9f('0xc')][_0x9d9f('0x13')]=_0x561b37;};WhatsappQueue[_0x9d9f('0x11')][_0x9d9f('0x10')]=function(){this[_0x9d9f('0x14')]=0x0;this[_0x9d9f('0x15')]=0x0;for(var _0x52e99f=0x0;_0x52e99f<this[_0x9d9f('0xb')][_0x9d9f('0x16')];_0x52e99f+=0x1){if(this[_0x9d9f('0xb')][_0x52e99f][_0x9d9f('0x17')]){this[_0x9d9f('0x14')]+=0x1;}if(this['Agents'][_0x52e99f][_0x9d9f('0x18')]){this['paused']+=0x1;}}this[_0x9d9f('0x19')]=this[_0x9d9f('0x14')]-this['paused'];this['available']=this[_0x9d9f('0x19')]>=0x0?this['available']:0x0;var _0x1206cb={'id':this['id'],'available':this[_0x9d9f('0x19')],'loggedIn':this[_0x9d9f('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x40ee85=md5(JSON[_0x9d9f('0x1a')](_0x1206cb));if(this[_0x9d9f('0xe')]!==_0x40ee85){this[_0x9d9f('0xe')]=_0x40ee85;io['to'](util[_0x9d9f('0x1b')](_0x9d9f('0x1c'),_0x1206cb[_0x9d9f('0x8')]))[_0x9d9f('0x1d')](_0x9d9f('0x1e'),_0x1206cb);}};module[_0x9d9f('0x1f')]=WhatsappQueue;
\ No newline at end of file
index a14a6e5..850a0d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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 442920a..1ea67c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17f2=['Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','../client','update'];(function(_0x231e28,_0x3386a0){var _0x42d5f5=function(_0x13247f){while(--_0x13247f){_0x231e28['push'](_0x231e28['shift']());}};_0x42d5f5(++_0x3386a0);}(_0x17f2,0xf3));var _0x217f=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x17f2[_0x543084];return _0x306a57;};'use strict';var client=require(_0x217f('0x0'));exports[_0x217f('0x1')]=function(_0x10e0d3,_0x43094c){return client[_0x217f('0x2')](_0x217f('0x3'),{'body':_0x43094c,'options':{'where':{'id':_0x10e0d3}},'log':_0x217f('0x4')});};exports[_0x217f('0x5')]=function(_0x5600e9,_0x254c68){return client[_0x217f('0x2')](_0x217f('0x6'),{'body':_0x254c68,'options':{'where':{'id':_0x5600e9}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x82bb=['addTags','AddTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0x1cc72e,_0x1eb4f8){var _0x3bc9ed=function(_0xc58d5e){while(--_0xc58d5e){_0x1cc72e['push'](_0x1cc72e['shift']());}};_0x3bc9ed(++_0x1eb4f8);}(_0x82bb,0xa3));var _0xb82b=function(_0x1445bd,_0x2f9f08){_0x1445bd=_0x1445bd-0x0;var _0x52d18=_0x82bb[_0x1445bd];return _0x52d18;};'use strict';var client=require(_0xb82b('0x0'));exports[_0xb82b('0x1')]=function(_0x44a928,_0x5b05f1){return client[_0xb82b('0x2')](_0xb82b('0x3'),{'body':_0x5b05f1,'options':{'where':{'id':_0x44a928}},'log':_0xb82b('0x4')});};exports[_0xb82b('0x5')]=function(_0x59e5f4,_0xf6f25b){return client[_0xb82b('0x2')](_0xb82b('0x6'),{'body':_0xf6f25b,'options':{'where':{'id':_0x59e5f4}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 10d573c..94a7044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7596=['Request'];(function(_0x3e4285,_0x83a4f0){var _0xce09e7=function(_0x2f13ee){while(--_0x2f13ee){_0x3e4285['push'](_0x3e4285['shift']());}};_0xce09e7(++_0x83a4f0);}(_0x7596,0x7c));var _0x6759=function(_0xe39824,_0xbdf61f){_0xe39824=_0xe39824-0x0;var _0x4bc31e=_0x7596[_0xe39824];return _0x4bc31e;};'use strict';var client=require('../client');exports['create']=function(_0x36f8d6){return client[_0x6759('0x0')]('CreateChatMessage',{'body':_0x36f8d6,'log':'createChatMessage'});};
\ No newline at end of file
+var _0x0f1e=['createChatMessage','../client','Request'];(function(_0x4b8c67,_0x2ca9b0){var _0x1cbf7d=function(_0x4886c0){while(--_0x4886c0){_0x4b8c67['push'](_0x4b8c67['shift']());}};_0x1cbf7d(++_0x2ca9b0);}(_0x0f1e,0x94));var _0xe0f1=function(_0x598e01,_0x59cf6b){_0x598e01=_0x598e01-0x0;var _0x459b94=_0x0f1e[_0x598e01];return _0x459b94;};'use strict';var client=require(_0xe0f1('0x0'));exports['create']=function(_0x208f78){return client[_0xe0f1('0x1')]('CreateChatMessage',{'body':_0x208f78,'log':_0xe0f1('0x2')});};
\ No newline at end of file
index 838abc7..f7143e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d6=['chatPause','../client','getChatQueues','Request','timeout','strategy','User','name','online'];(function(_0x4c2b4e,_0x873045){var _0x4c9344=function(_0x5e30cd){while(--_0x5e30cd){_0x4c2b4e['push'](_0x4c2b4e['shift']());}};_0x4c9344(++_0x873045);}(_0x47d6,0x1de));var _0x647d=function(_0x57200d,_0xeb7dea){_0x57200d=_0x57200d-0x0;var _0x2cfd66=_0x47d6[_0x57200d];return _0x2cfd66;};'use strict';var client=require(_0x647d('0x0'));exports[_0x647d('0x1')]=function(){return function(){return client[_0x647d('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id','name',_0x647d('0x3'),_0x647d('0x4')],'include':[{'model':_0x647d('0x5'),'as':'Agents','attributes':['id',_0x647d('0x6'),_0x647d('0x7'),_0x647d('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0xc949=['User','Agents','online','chatPause','getChatQueues','../client','Request','GetChatQueue','name','timeout'];(function(_0x1eafdd,_0x1aeaab){var _0x10a750=function(_0x3ff329){while(--_0x3ff329){_0x1eafdd['push'](_0x1eafdd['shift']());}};_0x10a750(++_0x1aeaab);}(_0xc949,0x181));var _0x9c94=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xc949[_0x3c2a69];return _0x596bc8;};'use strict';var client=require(_0x9c94('0x0'));exports['getChatQueues']=function(){return function(){return client[_0x9c94('0x1')](_0x9c94('0x2'),{'options':{'raw':![],'attributes':['id',_0x9c94('0x3'),_0x9c94('0x4'),'strategy'],'include':[{'model':_0x9c94('0x5'),'as':_0x9c94('0x6'),'attributes':['id','name',_0x9c94('0x7'),_0x9c94('0x8')]}]},'log':_0x9c94('0x9')});};};
\ No newline at end of file
index 984a399..86c9337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c0=['DESC','UpdateChatQueueReport','../client','create','Request','CreateChatQueueReport','update'];(function(_0x57cbfb,_0x2de760){var _0x4cb933=function(_0x33cf6a){while(--_0x33cf6a){_0x57cbfb['push'](_0x57cbfb['shift']());}};_0x4cb933(++_0x2de760);}(_0x32c0,0x1f3));var _0x032c=function(_0x4cb5a2,_0xf2ea9c){_0x4cb5a2=_0x4cb5a2-0x0;var _0xd91cbf=_0x32c0[_0x4cb5a2];return _0xd91cbf;};'use strict';var client=require(_0x032c('0x0'));exports[_0x032c('0x1')]=function(_0x5d9184){return client[_0x032c('0x2')](_0x032c('0x3'),{'body':_0x5d9184,'log':'CreateChatQueueReport'});};exports[_0x032c('0x4')]=function(_0x2bc539,_0x283b77){return client[_0x032c('0x2')]('UpdateChatQueueReport',{'body':_0x283b77,'options':{'where':{'uniqueid':_0x2bc539},'order':[['id',_0x032c('0x5')]],'limit':0x1},'log':_0x032c('0x6')});};
\ No newline at end of file
+var _0x6308=['update','Request','UpdateChatQueueReport','../client','CreateChatQueueReport'];(function(_0x262b56,_0x489281){var _0x106c6e=function(_0x42dd25){while(--_0x42dd25){_0x262b56['push'](_0x262b56['shift']());}};_0x106c6e(++_0x489281);}(_0x6308,0x1f2));var _0x8630=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0x6308[_0x2283dc];return _0x16db90;};'use strict';var client=require(_0x8630('0x0'));exports['create']=function(_0x1b6f0f){return client['Request']('CreateChatQueueReport',{'body':_0x1b6f0f,'log':_0x8630('0x1')});};exports[_0x8630('0x2')]=function(_0x89e9db,_0x393f45){return client[_0x8630('0x3')]('UpdateChatQueueReport',{'body':_0x393f45,'options':{'where':{'uniqueid':_0x89e9db},'order':[['id','DESC']],'limit':0x1},'log':_0x8630('0x4')});};
\ No newline at end of file
index 2f98b5b..f2be302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x432bd1,_0x11f28f){var _0x31827d=function(_0x43b51d){while(--_0x43b51d){_0x432bd1['push'](_0x432bd1['shift']());}};_0x31827d(++_0x11f28f);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x5f4cd7,_0x459c44){var _0x47c93f=function(_0x11f384){while(--_0x11f384){_0x5f4cd7['push'](_0x5f4cd7['shift']());}};_0x47c93f(++_0x459c44);}(_0x7a54,0x106));var _0x47a5=function(_0x5b11cc,_0x9e5a9f){_0x5b11cc=_0x5b11cc-0x0;var _0x4a84ab=_0x7a54[_0x5b11cc];return _0x4a84ab;};'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 c0998e4..a253c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1139=['../client','create','Request','CreateFaxMessage'];(function(_0x177b28,_0x47c819){var _0x3decf7=function(_0x2e9964){while(--_0x2e9964){_0x177b28['push'](_0x177b28['shift']());}};_0x3decf7(++_0x47c819);}(_0x1139,0xec));var _0x9113=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x1139[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0x9113('0x0'));exports[_0x9113('0x1')]=function(_0x3f0dba){return client[_0x9113('0x2')](_0x9113('0x3'),{'body':_0x3f0dba,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0x080d=['createFaxMessage','../client','create','Request','CreateFaxMessage'];(function(_0x22e9fe,_0x3d019f){var _0x47cd19=function(_0x8fd5fc){while(--_0x8fd5fc){_0x22e9fe['push'](_0x22e9fe['shift']());}};_0x47cd19(++_0x3d019f);}(_0x080d,0x182));var _0xd080=function(_0x4e0359,_0x205155){_0x4e0359=_0x4e0359-0x0;var _0x450f0a=_0x080d[_0x4e0359];return _0x450f0a;};'use strict';var client=require(_0xd080('0x0'));exports[_0xd080('0x1')]=function(_0x44fb67){return client[_0xd080('0x2')](_0xd080('0x3'),{'body':_0x44fb67,'log':_0xd080('0x4')});};
\ No newline at end of file
index 9494943..cc8c44b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0707=['name','timeout','strategy','User','Agents','online','../client','getFaxQueues','Request','GetFaxQueue'];(function(_0x51e347,_0x1b565a){var _0x49ab46=function(_0x5962cf){while(--_0x5962cf){_0x51e347['push'](_0x51e347['shift']());}};_0x49ab46(++_0x1b565a);}(_0x0707,0x10a));var _0x7070=function(_0x901d1f,_0x2d42f6){_0x901d1f=_0x901d1f-0x0;var _0x3c77d1=_0x0707[_0x901d1f];return _0x3c77d1;};'use strict';var client=require(_0x7070('0x0'));exports[_0x7070('0x1')]=function(){return function(){return client[_0x7070('0x2')](_0x7070('0x3'),{'options':{'raw':![],'attributes':['id',_0x7070('0x4'),_0x7070('0x5'),_0x7070('0x6')],'include':[{'model':_0x7070('0x7'),'as':_0x7070('0x8'),'attributes':['id',_0x7070('0x4'),_0x7070('0x9'),'faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0x0861=['strategy','Agents','getFaxQueues','Request','GetFaxQueue','name'];(function(_0x39e283,_0x247e6b){var _0x7de89f=function(_0x2f8c50){while(--_0x2f8c50){_0x39e283['push'](_0x39e283['shift']());}};_0x7de89f(++_0x247e6b);}(_0x0861,0x159));var _0x1086=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x0861[_0x17d9e3];return _0x14192d;};'use strict';var client=require('../client');exports['getFaxQueues']=function(){return function(){return client[_0x1086('0x0')](_0x1086('0x1'),{'options':{'raw':![],'attributes':['id',_0x1086('0x2'),'timeout',_0x1086('0x3')],'include':[{'model':'User','as':_0x1086('0x4'),'attributes':['id',_0x1086('0x2'),'online','faxPause']}]},'log':_0x1086('0x5')});};};
\ No newline at end of file
index 99c8b57..20e41dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a81=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create','Request'];(function(_0x265aa2,_0x220072){var _0x447a3a=function(_0x1512cc){while(--_0x1512cc){_0x265aa2['push'](_0x265aa2['shift']());}};_0x447a3a(++_0x220072);}(_0x2a81,0x169));var _0x12a8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a81[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x12a8('0x0'));exports[_0x12a8('0x1')]=function(_0x3bd1f5){return client[_0x12a8('0x2')](_0x12a8('0x3'),{'body':_0x3bd1f5,'log':_0x12a8('0x3')});};exports[_0x12a8('0x4')]=function(_0x416c3a,_0x43be76){return client[_0x12a8('0x2')](_0x12a8('0x5'),{'body':_0x43be76,'options':{'where':{'uniqueid':_0x416c3a},'order':[['id',_0x12a8('0x6')]],'limit':0x1},'log':_0x12a8('0x5')});};
\ No newline at end of file
+var _0xfd8e=['UpdateFaxQueueReport','../client','create','Request','CreateFaxQueueReport','update','DESC'];(function(_0x51cc1d,_0xaa88ae){var _0x2eb9f2=function(_0x1ca525){while(--_0x1ca525){_0x51cc1d['push'](_0x51cc1d['shift']());}};_0x2eb9f2(++_0xaa88ae);}(_0xfd8e,0x1dd));var _0xefd8=function(_0x1f2f2d,_0x957e0d){_0x1f2f2d=_0x1f2f2d-0x0;var _0x35ec86=_0xfd8e[_0x1f2f2d];return _0x35ec86;};'use strict';var client=require(_0xefd8('0x0'));exports[_0xefd8('0x1')]=function(_0x22ec69){return client[_0xefd8('0x2')](_0xefd8('0x3'),{'body':_0x22ec69,'log':'CreateFaxQueueReport'});};exports[_0xefd8('0x4')]=function(_0x1ff4bc,_0x246a31){return client[_0xefd8('0x2')]('UpdateFaxQueueReport',{'body':_0x246a31,'options':{'where':{'uniqueid':_0x1ff4bc},'order':[['id',_0xefd8('0x5')]],'limit':0x1},'log':_0xefd8('0x6')});};
\ No newline at end of file
index 810f31a..f362f04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec9c=['getIntervals','Request','name','Interval','Intervals','interval','../client'];(function(_0x43e568,_0x4e3bf3){var _0x83a277=function(_0xd77f4){while(--_0xd77f4){_0x43e568['push'](_0x43e568['shift']());}};_0x83a277(++_0x4e3bf3);}(_0xec9c,0x180));var _0xcec9=function(_0x57c794,_0x5b377b){_0x57c794=_0x57c794-0x0;var _0x2eeea3=_0xec9c[_0x57c794];return _0x2eeea3;};'use strict';var client=require(_0xcec9('0x0'));exports[_0xcec9('0x1')]=function(){return function(){return client[_0xcec9('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xcec9('0x3')],'include':[{'model':_0xcec9('0x4'),'as':_0xcec9('0x5'),'attributes':['id',_0xcec9('0x3'),_0xcec9('0x6')]}]},'log':_0xcec9('0x1')});};};
\ No newline at end of file
+var _0x46f5=['../client','Request','GetInterval','Interval','Intervals','interval'];(function(_0x278be9,_0x3e0882){var _0x2a1442=function(_0x46b53d){while(--_0x46b53d){_0x278be9['push'](_0x278be9['shift']());}};_0x2a1442(++_0x3e0882);}(_0x46f5,0x9c));var _0x546f=function(_0x3df8b7,_0x49043d){_0x3df8b7=_0x3df8b7-0x0;var _0x11900e=_0x46f5[_0x3df8b7];return _0x11900e;};'use strict';var client=require(_0x546f('0x0'));exports['getIntervals']=function(){return function(){return client[_0x546f('0x1')](_0x546f('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0x546f('0x3'),'as':_0x546f('0x4'),'attributes':['id','name',_0x546f('0x5')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index e58c2bb..be385d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b17=['addTagsToChatInteraction','../client','Request','UpdateMailInteraction','addTags','AddTagsToMailInteraction'];(function(_0x364efa,_0x200d4f){var _0x2440fc=function(_0x50a844){while(--_0x50a844){_0x364efa['push'](_0x364efa['shift']());}};_0x2440fc(++_0x200d4f);}(_0x4b17,0x10f));var _0x74b1=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x4b17[_0x47aa64];return _0x549c7a;};'use strict';var client=require(_0x74b1('0x0'));exports['update']=function(_0xd6951,_0x5483a2){return client[_0x74b1('0x1')](_0x74b1('0x2'),{'body':_0x5483a2,'options':{'where':{'id':_0xd6951}},'log':'updateMailInteraction'});};exports[_0x74b1('0x3')]=function(_0x4f206f,_0x4fdea2){return client[_0x74b1('0x1')](_0x74b1('0x4'),{'body':_0x4fdea2,'options':{'where':{'id':_0x4f206f}},'log':_0x74b1('0x5')});};
\ No newline at end of file
+var _0x36ee=['updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction','Request','UpdateMailInteraction'];(function(_0x339976,_0x9f0da6){var _0x4101f6=function(_0x4fbc2f){while(--_0x4fbc2f){_0x339976['push'](_0x339976['shift']());}};_0x4101f6(++_0x9f0da6);}(_0x36ee,0xe8));var _0xe36e=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x36ee[_0x3b380d];return _0x54502b;};'use strict';var client=require('../client');exports['update']=function(_0x34e33c,_0x521ff3){return client[_0xe36e('0x0')](_0xe36e('0x1'),{'body':_0x521ff3,'options':{'where':{'id':_0x34e33c}},'log':_0xe36e('0x2')});};exports[_0xe36e('0x3')]=function(_0x567a84,_0x1118af){return client[_0xe36e('0x0')](_0xe36e('0x4'),{'body':_0x1118af,'options':{'where':{'id':_0x567a84}},'log':_0xe36e('0x5')});};
\ No newline at end of file
index 901a5c0..6a3ddfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3542=['CreateMailMessage','Request'];(function(_0x4fb62a,_0x8e4e04){var _0x2d2458=function(_0xeef86a){while(--_0xeef86a){_0x4fb62a['push'](_0x4fb62a['shift']());}};_0x2d2458(++_0x8e4e04);}(_0x3542,0x157));var _0x2354=function(_0x1e5725,_0x3f4e13){_0x1e5725=_0x1e5725-0x0;var _0x4b5cf8=_0x3542[_0x1e5725];return _0x4b5cf8;};'use strict';var client=require('../client');exports['create']=function(_0x2e2c21){return client[_0x2354('0x0')](_0x2354('0x1'),{'body':_0x2e2c21,'log':'createMailMessage'});};
\ No newline at end of file
+var _0x0bd5=['create','Request','createMailMessage','../client'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x0bd5,0x17b));var _0x50bd=function(_0x2aec64,_0x924c87){_0x2aec64=_0x2aec64-0x0;var _0x4a95b2=_0x0bd5[_0x2aec64];return _0x4a95b2;};'use strict';var client=require(_0x50bd('0x0'));exports[_0x50bd('0x1')]=function(_0x14c449){return client[_0x50bd('0x2')]('CreateMailMessage',{'body':_0x14c449,'log':_0x50bd('0x3')});};
\ No newline at end of file
index 94daacf..445d2bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcda8=['User','Agents','online','getMailQueues','Request','name'];(function(_0x2f0a6a,_0xe1e4d7){var _0xbacf5c=function(_0x1bb7e6){while(--_0x1bb7e6){_0x2f0a6a['push'](_0x2f0a6a['shift']());}};_0xbacf5c(++_0xe1e4d7);}(_0xcda8,0xee));var _0x8cda=function(_0x44379c,_0x49549d){_0x44379c=_0x44379c-0x0;var _0x5497ec=_0xcda8[_0x44379c];return _0x5497ec;};'use strict';var client=require('../client');exports['getMailQueues']=function(){return function(){return client[_0x8cda('0x0')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x8cda('0x1'),'timeout','strategy'],'include':[{'model':_0x8cda('0x2'),'as':_0x8cda('0x3'),'attributes':['id',_0x8cda('0x1'),_0x8cda('0x4'),'mailPause']}]},'log':_0x8cda('0x5')});};};
\ No newline at end of file
+var _0xb4b1=['online','mailPause','../client','getMailQueues','GetMailQueue','name','timeout','strategy','Agents'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb4b1,0x13d));var _0x1b4b=function(_0x2dd604,_0x263023){_0x2dd604=_0x2dd604-0x0;var _0x46f8d6=_0xb4b1[_0x2dd604];return _0x46f8d6;};'use strict';var client=require(_0x1b4b('0x0'));exports[_0x1b4b('0x1')]=function(){return function(){return client['Request'](_0x1b4b('0x2'),{'options':{'raw':![],'attributes':['id',_0x1b4b('0x3'),_0x1b4b('0x4'),_0x1b4b('0x5')],'include':[{'model':'User','as':_0x1b4b('0x6'),'attributes':['id',_0x1b4b('0x3'),_0x1b4b('0x7'),_0x1b4b('0x8')]}]},'log':_0x1b4b('0x1')});};};
\ No newline at end of file
index efda394..f824345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53bb=['create','CreateMailQueueReport','Request','UpdateMailQueueReport','DESC'];(function(_0x555b1d,_0x239b1b){var _0x4e97ee=function(_0x119715){while(--_0x119715){_0x555b1d['push'](_0x555b1d['shift']());}};_0x4e97ee(++_0x239b1b);}(_0x53bb,0x1e5));var _0xb53b=function(_0x1b392e,_0x5e81f2){_0x1b392e=_0x1b392e-0x0;var _0x16333c=_0x53bb[_0x1b392e];return _0x16333c;};'use strict';var client=require('../client');exports[_0xb53b('0x0')]=function(_0x107af4){return client['Request'](_0xb53b('0x1'),{'body':_0x107af4,'log':'CreateMailQueueReport'});};exports['update']=function(_0x4e4c30,_0x4a1d3c){return client[_0xb53b('0x2')](_0xb53b('0x3'),{'body':_0x4a1d3c,'options':{'where':{'uniqueid':_0x4e4c30},'order':[['id',_0xb53b('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0xd629=['Request','CreateMailQueueReport','update','DESC','UpdateMailQueueReport','../client','create'];(function(_0x5ee217,_0x4877a4){var _0x19fac0=function(_0x2c9270){while(--_0x2c9270){_0x5ee217['push'](_0x5ee217['shift']());}};_0x19fac0(++_0x4877a4);}(_0xd629,0x116));var _0x9d62=function(_0x486f4a,_0x478dc7){_0x486f4a=_0x486f4a-0x0;var _0x135d99=_0xd629[_0x486f4a];return _0x135d99;};'use strict';var client=require(_0x9d62('0x0'));exports[_0x9d62('0x1')]=function(_0x1c350e){return client[_0x9d62('0x2')](_0x9d62('0x3'),{'body':_0x1c350e,'log':'CreateMailQueueReport'});};exports[_0x9d62('0x4')]=function(_0xf1bc4d,_0x10a140){return client[_0x9d62('0x2')]('UpdateMailQueueReport',{'body':_0x10a140,'options':{'where':{'uniqueid':_0xf1bc4d},'order':[['id',_0x9d62('0x5')]],'limit':0x1},'log':_0x9d62('0x6')});};
\ No newline at end of file
index 0cbcc1a..446aa1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb417=['addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction'];(function(_0x5062dc,_0x4af19b){var _0x1a2945=function(_0x8a49f9){while(--_0x8a49f9){_0x5062dc['push'](_0x5062dc['shift']());}};_0x1a2945(++_0x4af19b);}(_0xb417,0x175));var _0x7b41=function(_0x1273bb,_0x193a23){_0x1273bb=_0x1273bb-0x0;var _0x107662=_0xb417[_0x1273bb];return _0x107662;};'use strict';var client=require('../client');exports[_0x7b41('0x0')]=function(_0xf54022,_0x3f42c7){return client[_0x7b41('0x1')](_0x7b41('0x2'),{'body':_0x3f42c7,'options':{'where':{'id':_0xf54022}},'log':'updateOpenchannelInteraction'});};exports['addTags']=function(_0x691a9d,_0x3a0c1f){return client['Request']('AddTagsToOpenchannelInteraction',{'body':_0x3a0c1f,'options':{'where':{'id':_0x691a9d}},'log':_0x7b41('0x3')});};
\ No newline at end of file
+var _0x442f=['Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0x521da0,_0x4986a4){var _0x159674=function(_0x59ae8a){while(--_0x59ae8a){_0x521da0['push'](_0x521da0['shift']());}};_0x159674(++_0x4986a4);}(_0x442f,0xbe));var _0xf442=function(_0x2b49ae,_0x2da2bb){_0x2b49ae=_0x2b49ae-0x0;var _0x423ce6=_0x442f[_0x2b49ae];return _0x423ce6;};'use strict';var client=require(_0xf442('0x0'));exports[_0xf442('0x1')]=function(_0x4427de,_0x252571){return client[_0xf442('0x2')](_0xf442('0x3'),{'body':_0x252571,'options':{'where':{'id':_0x4427de}},'log':_0xf442('0x4')});};exports[_0xf442('0x5')]=function(_0x4a4b36,_0x2c3f0b){return client[_0xf442('0x2')](_0xf442('0x6'),{'body':_0x2c3f0b,'options':{'where':{'id':_0x4a4b36}},'log':_0xf442('0x7')});};
\ No newline at end of file
index 7508b51..7056089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a31=['createOpenchannelMessage','../client','Request','CreateOpenchannelMessage'];(function(_0x689e16,_0x176daf){var _0xf6f855=function(_0x3c4b0d){while(--_0x3c4b0d){_0x689e16['push'](_0x689e16['shift']());}};_0xf6f855(++_0x176daf);}(_0x8a31,0x1cd));var _0x18a3=function(_0x49aa7d,_0x5d46d8){_0x49aa7d=_0x49aa7d-0x0;var _0xdd0d26=_0x8a31[_0x49aa7d];return _0xdd0d26;};'use strict';var client=require(_0x18a3('0x0'));exports['create']=function(_0x12d408){return client[_0x18a3('0x1')](_0x18a3('0x2'),{'body':_0x12d408,'log':_0x18a3('0x3')});};
\ No newline at end of file
+var _0xd08b=['../client','create','Request'];(function(_0x5d84fb,_0x29ae84){var _0x1c6145=function(_0x15b6a7){while(--_0x15b6a7){_0x5d84fb['push'](_0x5d84fb['shift']());}};_0x1c6145(++_0x29ae84);}(_0xd08b,0xdb));var _0xbd08=function(_0x22b39b,_0x2b7d63){_0x22b39b=_0x22b39b-0x0;var _0x280e1d=_0xd08b[_0x22b39b];return _0x280e1d;};'use strict';var client=require(_0xbd08('0x0'));exports[_0xbd08('0x1')]=function(_0x144836){return client[_0xbd08('0x2')]('CreateOpenchannelMessage',{'body':_0x144836,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index eb611bf..88f0de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25bf=['online','openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','timeout','User','Agents','name'];(function(_0x1a3899,_0x12e3fd){var _0x2b0445=function(_0x39ce9b){while(--_0x39ce9b){_0x1a3899['push'](_0x1a3899['shift']());}};_0x2b0445(++_0x12e3fd);}(_0x25bf,0x12b));var _0xf25b=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x25bf[_0x57b54c];return _0x59cc19;};'use strict';var client=require('../client');exports[_0xf25b('0x0')]=function(){return function(){return client[_0xf25b('0x1')](_0xf25b('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xf25b('0x3'),'strategy'],'include':[{'model':_0xf25b('0x4'),'as':_0xf25b('0x5'),'attributes':['id',_0xf25b('0x6'),_0xf25b('0x7'),_0xf25b('0x8')]}]},'log':_0xf25b('0x0')});};};
\ No newline at end of file
+var _0x07e5=['name','timeout','strategy','User','online','openchannelPause','getOpenchannelQueues','../client','Request','GetOpenchannelQueue'];(function(_0x5608ce,_0x43436d){var _0x2eda3a=function(_0xd2ebfb){while(--_0xd2ebfb){_0x5608ce['push'](_0x5608ce['shift']());}};_0x2eda3a(++_0x43436d);}(_0x07e5,0xc5));var _0x507e=function(_0x248f22,_0xe4bd18){_0x248f22=_0x248f22-0x0;var _0x22af03=_0x07e5[_0x248f22];return _0x22af03;};'use strict';var client=require(_0x507e('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0x507e('0x1')](_0x507e('0x2'),{'options':{'raw':![],'attributes':['id',_0x507e('0x3'),_0x507e('0x4'),_0x507e('0x5')],'include':[{'model':_0x507e('0x6'),'as':'Agents','attributes':['id',_0x507e('0x3'),_0x507e('0x7'),_0x507e('0x8')]}]},'log':_0x507e('0x9')});};};
\ No newline at end of file
index 6b86f3e..f6ed5b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x128f=['Request','CreateOpenchannelQueueReport','update','DESC','UpdateOpenchannelQueueReport'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x128f,0xff));var _0xf128=function(_0x4fa204,_0x849ea3){_0x4fa204=_0x4fa204-0x0;var _0x3ef322=_0x128f[_0x4fa204];return _0x3ef322;};'use strict';var client=require('../client');exports['create']=function(_0x1ff086){return client[_0xf128('0x0')](_0xf128('0x1'),{'body':_0x1ff086,'log':_0xf128('0x1')});};exports[_0xf128('0x2')]=function(_0x30424a,_0x4348cb){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x4348cb,'options':{'where':{'uniqueid':_0x30424a},'order':[['id',_0xf128('0x3')]],'limit':0x1},'log':_0xf128('0x4')});};
\ No newline at end of file
+var _0xa67e=['../client','create','Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa67e,0x19d));var _0xea67=function(_0x274dfe,_0xd2119d){_0x274dfe=_0x274dfe-0x0;var _0x18914d=_0xa67e[_0x274dfe];return _0x18914d;};'use strict';var client=require(_0xea67('0x0'));exports[_0xea67('0x1')]=function(_0xccf73c){return client[_0xea67('0x2')](_0xea67('0x3'),{'body':_0xccf73c,'log':'CreateOpenchannelQueueReport'});};exports[_0xea67('0x4')]=function(_0x10cae3,_0x5e881a){return client[_0xea67('0x2')](_0xea67('0x5'),{'body':_0x5e881a,'options':{'where':{'uniqueid':_0x10cae3},'order':[['id',_0xea67('0x6')]],'limit':0x1},'log':_0xea67('0x5')});};
\ No newline at end of file
index 28a48a9..687af1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1052=['update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','../client'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x1052,0xf4));var _0x2105=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0x1052[_0x369151];return _0x4292d5;};'use strict';var client=require(_0x2105('0x0'));exports[_0x2105('0x1')]=function(_0x2b1ffa,_0xed0bfa){return client[_0x2105('0x2')](_0x2105('0x3'),{'body':_0xed0bfa,'options':{'where':{'id':_0x2b1ffa}},'log':_0x2105('0x4')});};exports[_0x2105('0x5')]=function(_0x1e106c,_0x5c1e84){return client['Request'](_0x2105('0x6'),{'body':_0x5c1e84,'options':{'where':{'id':_0x1e106c}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
+var _0xe94a=['update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client'];(function(_0x364a36,_0x1e2677){var _0x5cd6fa=function(_0x58d692){while(--_0x58d692){_0x364a36['push'](_0x364a36['shift']());}};_0x5cd6fa(++_0x1e2677);}(_0xe94a,0x1c7));var _0xae94=function(_0xfbdff6,_0x2af690){_0xfbdff6=_0xfbdff6-0x0;var _0x4cb9be=_0xe94a[_0xfbdff6];return _0x4cb9be;};'use strict';var client=require(_0xae94('0x0'));exports[_0xae94('0x1')]=function(_0x1735f9,_0x59a458){return client[_0xae94('0x2')](_0xae94('0x3'),{'body':_0x59a458,'options':{'where':{'id':_0x1735f9}},'log':_0xae94('0x4')});};exports[_0xae94('0x5')]=function(_0x3bf666,_0xf48ae1){return client['Request'](_0xae94('0x6'),{'body':_0xf48ae1,'options':{'where':{'id':_0x3bf666}},'log':_0xae94('0x7')});};
\ No newline at end of file
index c1a8399..9926998 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0399=['../client','Request','CreateSmsMessage'];(function(_0x32e542,_0x5a27c4){var _0x5f1a7e=function(_0x20e7a4){while(--_0x20e7a4){_0x32e542['push'](_0x32e542['shift']());}};_0x5f1a7e(++_0x5a27c4);}(_0x0399,0x189));var _0x9039=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0399[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x9039('0x0'));exports['create']=function(_0x527a98){return client[_0x9039('0x1')](_0x9039('0x2'),{'body':_0x527a98,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0xfdb4=['CreateSmsMessage','../client','create'];(function(_0x49a896,_0x27322e){var _0x463840=function(_0x357622){while(--_0x357622){_0x49a896['push'](_0x49a896['shift']());}};_0x463840(++_0x27322e);}(_0xfdb4,0x1db));var _0x4fdb=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0xfdb4[_0x456fb1];return _0x4083d6;};'use strict';var client=require(_0x4fdb('0x0'));exports[_0x4fdb('0x1')]=function(_0x348988){return client['Request'](_0x4fdb('0x2'),{'body':_0x348988,'log':'createSmsMessage'});};
\ No newline at end of file
index 9a6a172..61c951d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x7ff50b,_0x399dc0){var _0x43e570=function(_0x16b092){while(--_0x16b092){_0x7ff50b['push'](_0x7ff50b['shift']());}};_0x43e570(++_0x399dc0);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
+var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x3d1f21,_0x167f7e){var _0x54f931=function(_0x2a4f49){while(--_0x2a4f49){_0x3d1f21['push'](_0x3d1f21['shift']());}};_0x54f931(++_0x167f7e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xcb91[_0x4a747d];return _0x3a5b5c;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index bf451ff..f6df9b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x528cb,_0x106d0d){var _0xb80de3=function(_0x2ab43d){while(--_0x2ab43d){_0x528cb['push'](_0x528cb['shift']());}};_0xb80de3(++_0x106d0d);}(_0x3e74,0x175));var _0x43e7=function(_0x55f139,_0x479a65){_0x55f139=_0x55f139-0x0;var _0x394b3d=_0x3e74[_0x55f139];return _0x394b3d;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
+var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x452f5b,_0x5389d1){var _0x33e5e2=function(_0x34b282){while(--_0x34b282){_0x452f5b['push'](_0x452f5b['shift']());}};_0x33e5e2(++_0x5389d1);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
index b8b1e65..84a71e6 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(_0x5628d6,_0x94bbe9){var _0xba49ba=function(_0x17953c){while(--_0x17953c){_0x5628d6['push'](_0x5628d6['shift']());}};_0xba49ba(++_0x94bbe9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'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(_0x349120,_0x219139){var _0x494325=function(_0x89c697){while(--_0x89c697){_0x349120['push'](_0x349120['shift']());}};_0x494325(++_0x219139);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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 e1015c4..1b28420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c65=['../client','update','Request','UpdateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x380fb3,_0x4fbd8a){var _0x8c3c00=function(_0xad6f6b){while(--_0xad6f6b){_0x380fb3['push'](_0x380fb3['shift']());}};_0x8c3c00(++_0x4fbd8a);}(_0x6c65,0x78));var _0x56c6=function(_0x24ddf6,_0x114e56){_0x24ddf6=_0x24ddf6-0x0;var _0x393d70=_0x6c65[_0x24ddf6];return _0x393d70;};'use strict';var client=require(_0x56c6('0x0'));exports[_0x56c6('0x1')]=function(_0x65c8cb,_0x407bf1){return client[_0x56c6('0x2')](_0x56c6('0x3'),{'body':_0x407bf1,'options':{'where':{'id':_0x65c8cb}},'log':'updateWhatsappInteraction'});};exports[_0x56c6('0x4')]=function(_0x4321ef,_0x3f532d){return client[_0x56c6('0x2')](_0x56c6('0x5'),{'body':_0x3f532d,'options':{'where':{'id':_0x4321ef}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0xd9fb=['UpdateWhatsappInteraction','updateWhatsappInteraction','AddTagsToWhatsappInteraction','../client','update','Request'];(function(_0x5a9141,_0x2ccd7f){var _0x1a18a8=function(_0x3c3815){while(--_0x3c3815){_0x5a9141['push'](_0x5a9141['shift']());}};_0x1a18a8(++_0x2ccd7f);}(_0xd9fb,0x189));var _0xbd9f=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xd9fb[_0x138adb];return _0x1b27f2;};'use strict';var client=require(_0xbd9f('0x0'));exports[_0xbd9f('0x1')]=function(_0x288314,_0x1eeb46){return client[_0xbd9f('0x2')](_0xbd9f('0x3'),{'body':_0x1eeb46,'options':{'where':{'id':_0x288314}},'log':_0xbd9f('0x4')});};exports['addTags']=function(_0x2d4213,_0xf146bc){return client['Request'](_0xbd9f('0x5'),{'body':_0xf146bc,'options':{'where':{'id':_0x2d4213}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 92198b4..c267779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4efd=['CreateWhatsappMessage','createWhatsappMessage','create','Request'];(function(_0x1e035c,_0xf906b){var _0x3a63f0=function(_0x51a230){while(--_0x51a230){_0x1e035c['push'](_0x1e035c['shift']());}};_0x3a63f0(++_0xf906b);}(_0x4efd,0x1ae));var _0xd4ef=function(_0x1fcf1b,_0x214549){_0x1fcf1b=_0x1fcf1b-0x0;var _0x5d2952=_0x4efd[_0x1fcf1b];return _0x5d2952;};'use strict';var client=require('../client');exports[_0xd4ef('0x0')]=function(_0x3f506f){return client[_0xd4ef('0x1')](_0xd4ef('0x2'),{'body':_0x3f506f,'log':_0xd4ef('0x3')});};
\ No newline at end of file
+var _0xbb98=['../client','create','Request','CreateWhatsappMessage','createWhatsappMessage'];(function(_0x1256d5,_0x5862b8){var _0x246866=function(_0x3da346){while(--_0x3da346){_0x1256d5['push'](_0x1256d5['shift']());}};_0x246866(++_0x5862b8);}(_0xbb98,0x140));var _0x8bb9=function(_0x151721,_0x20d5bc){_0x151721=_0x151721-0x0;var _0x2deaa7=_0xbb98[_0x151721];return _0x2deaa7;};'use strict';var client=require(_0x8bb9('0x0'));exports[_0x8bb9('0x1')]=function(_0x19bd08){return client[_0x8bb9('0x2')](_0x8bb9('0x3'),{'body':_0x19bd08,'log':_0x8bb9('0x4')});};
\ No newline at end of file
index 7964d41..589e190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x629d=['Agents','name','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','strategy','User'];(function(_0x25c4a3,_0x5a5502){var _0x355f9d=function(_0xe41e68){while(--_0xe41e68){_0x25c4a3['push'](_0x25c4a3['shift']());}};_0x355f9d(++_0x5a5502);}(_0x629d,0xdf));var _0xd629=function(_0x345a17,_0x3b9d2a){_0x345a17=_0x345a17-0x0;var _0xd0f947=_0x629d[_0x345a17];return _0xd0f947;};'use strict';var client=require(_0xd629('0x0'));exports[_0xd629('0x1')]=function(){return function(){return client[_0xd629('0x2')](_0xd629('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xd629('0x4'),_0xd629('0x5')],'include':[{'model':_0xd629('0x6'),'as':_0xd629('0x7'),'attributes':['id',_0xd629('0x8'),'online',_0xd629('0x9')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
+var _0x3eaa=['whatsappPause','getWhatsappQueues','../client','GetWhatsappQueue','name','strategy','User','online'];(function(_0x5733e1,_0x45d453){var _0x1ec809=function(_0x427a9e){while(--_0x427a9e){_0x5733e1['push'](_0x5733e1['shift']());}};_0x1ec809(++_0x45d453);}(_0x3eaa,0xaa));var _0xa3ea=function(_0x47e5c0,_0xc5fc91){_0x47e5c0=_0x47e5c0-0x0;var _0x2c8206=_0x3eaa[_0x47e5c0];return _0x2c8206;};'use strict';var client=require(_0xa3ea('0x0'));exports['getWhatsappQueues']=function(){return function(){return client['Request'](_0xa3ea('0x1'),{'options':{'raw':![],'attributes':['id',_0xa3ea('0x2'),'timeout',_0xa3ea('0x3')],'include':[{'model':_0xa3ea('0x4'),'as':'Agents','attributes':['id',_0xa3ea('0x2'),_0xa3ea('0x5'),_0xa3ea('0x6')]}]},'log':_0xa3ea('0x7')});};};
\ No newline at end of file
index e87d6d4..0f1325b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11a9=['create','Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','../client'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x11a9,0xc7));var _0x911a=function(_0x21abb1,_0x4be62f){_0x21abb1=_0x21abb1-0x0;var _0x4d0cd7=_0x11a9[_0x21abb1];return _0x4d0cd7;};'use strict';var client=require(_0x911a('0x0'));exports[_0x911a('0x1')]=function(_0x38d1d8){return client[_0x911a('0x2')](_0x911a('0x3'),{'body':_0x38d1d8,'log':_0x911a('0x3')});};exports['update']=function(_0x587c5e,_0x3e74f0){return client['Request']('UpdateWhatsappQueueReport',{'body':_0x3e74f0,'options':{'where':{'uniqueid':_0x587c5e},'order':[['id','DESC']],'limit':0x1},'log':_0x911a('0x4')});};
\ No newline at end of file
+var _0x87dc=['update','UpdateWhatsappQueueReport','../client','create','Request','CreateWhatsappQueueReport'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x87dc,0x11c));var _0xc87d=function(_0x1819d1,_0x6151eb){_0x1819d1=_0x1819d1-0x0;var _0x59f1a9=_0x87dc[_0x1819d1];return _0x59f1a9;};'use strict';var client=require(_0xc87d('0x0'));exports[_0xc87d('0x1')]=function(_0x45146b){return client[_0xc87d('0x2')](_0xc87d('0x3'),{'body':_0x45146b,'log':_0xc87d('0x3')});};exports[_0xc87d('0x4')]=function(_0x4f005b,_0x2b3731){return client[_0xc87d('0x2')]('UpdateWhatsappQueueReport',{'body':_0x2b3731,'options':{'where':{'uniqueid':_0x4f005b},'order':[['id','DESC']],'limit':0x1},'log':_0xc87d('0x5')});};
\ No newline at end of file
index 1a2fa80..c6db771 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2435=['validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','message','join','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','stop','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','log','[%s][QUEUE]\x20%s','stack'];(function(_0x8f1b91,_0x181a12){var _0x5ae8b2=function(_0x2e3f37){while(--_0x2e3f37){_0x8f1b91['push'](_0x8f1b91['shift']());}};_0x5ae8b2(++_0x181a12);}(_0x2435,0x1e1));var _0x5243=function(_0x4ae829,_0x2c842c){_0x4ae829=_0x4ae829-0x0;var _0x256b31=_0x2435[_0x4ae829];return _0x256b31;};'use strict';var schema=require(_0x5243('0x0'));var _=require(_0x5243('0x1'));var util=require(_0x5243('0x2'));var seqqueue=require(_0x5243('0x3'));var logger=require(_0x5243('0x4'))(_0x5243('0x5'));var strategy=require(_0x5243('0x6'));var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x5243('0x7'),'message':_0x5243('0x8')}});function writeLog(_0x1097e3,_0x319d0d,_0x2c78c1){return logger[_0x5243('0x9')](util[_0x5243('0xa')](_0x5243('0xb'),_0x1097e3,_0x319d0d[_0x5243('0xc')],_0x2c78c1));}function handleFindAgent(_0x4a6234){return function(_0x50d9ec){return _0x50d9ec[_0x5243('0xc')][_0x5243('0xd')]()===_0x4a6234[_0x5243('0xd')]();};}exports[_0x5243('0xe')]=function(_0x3dd71d,_0x50caf5,_0x4ac3f1,_0x409fdb){return function(_0x2225bf){try{var _0xfd029c={'name':_0x50caf5[0x0],'timeout':_0x50caf5[0x1]};var _0x17fd54=queue[_0x5243('0x0')](_0xfd029c,{'typecast':!![]});if(_0x17fd54[_0x5243('0xf')]){logger[_0x5243('0x10')](_0x5243('0x11'),_0x3dd71d,_['map'](_0x17fd54,_0x5243('0x12'))[_0x5243('0x13')](',\x20'));_0x2225bf['stop']();}else{var _0x5509af=_['find'](_0x4ac3f1['agents'],handleFindAgent(_0xfd029c['name']));if(_0x5509af){var _0x113d50=(_0xfd029c[_0x5243('0x14')]||0xa)*0x3e8;var _0x49da98,_0x33dc78;var _0x3313ea=seqqueue[_0x5243('0x15')](_0x113d50);_0x3313ea['id']=_0x3dd71d;_0x3313ea[_0x5243('0x16')]=_0x113d50;_0x3313ea[_0x5243('0x17')]=_0x409fdb[_0x5243('0x17')];writeLog(_0x3dd71d,_0x5509af,util[_0x5243('0xa')](_0x5243('0x18'),_0x113d50));_0x4ac3f1[_0x5243('0x19')][_0x3dd71d]['on'](_0x5243('0x1a'),function(){logger['info'](_0x5243('0x1b'),_0x3dd71d);clearTimeout(_0x33dc78);_0x33dc78=undefined;_0x3313ea[_0x5243('0x1c')]();if(_0x4ac3f1[_0x5243('0x19')][_0x3dd71d]){delete _0x4ac3f1[_0x5243('0x19')][_0x3dd71d];}_0x2225bf[_0x5243('0x1d')]();});_0x4ac3f1[_0x5243('0x19')][_0x3dd71d]['on'](_0x5243('0x1e'),function(){if(_0x4ac3f1['rules'][_0x3dd71d]){delete _0x4ac3f1[_0x5243('0x19')][_0x3dd71d];}});_0x33dc78=setTimeout(function(){logger['info'](_0x5243('0x1f'),_0x3dd71d);clearTimeout(_0x33dc78);_0x3313ea[_0x5243('0x1c')]();_0x2225bf[_0x5243('0x20')]();},_0x113d50);strategy[_0x5243('0x21')](_0x3313ea,_0x5509af,_0x4ac3f1,_0x409fdb);}else{logger[_0x5243('0x10')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x3dd71d,_0xfd029c['name']);_0x2225bf[_0x5243('0x1d')]();}}}catch(_0x29c998){console[_0x5243('0x22')](_0x29c998);logger[_0x5243('0x10')](_0x5243('0x23'),_0x3dd71d,_0x29c998[_0x5243('0x24')]);_0x2225bf[_0x5243('0x1d')]();}};};
\ No newline at end of file
+var _0xf879=['next','agent','log','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','join','stop','agents','atimeout','channel','format','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','[%s][AGENT]\x20ROUTING\x20END'];(function(_0x1149e3,_0x1fe79f){var _0x2f8c48=function(_0x2467ff){while(--_0x2467ff){_0x1149e3['push'](_0x1149e3['shift']());}};_0x2f8c48(++_0x1fe79f);}(_0xf879,0xd1));var _0x9f87=function(_0xc813eb,_0x50ed60){_0xc813eb=_0xc813eb-0x0;var _0x3368b5=_0xf879[_0xc813eb];return _0x3368b5;};'use strict';var schema=require(_0x9f87('0x0'));var _=require(_0x9f87('0x1'));var util=require('util');var seqqueue=require(_0x9f87('0x2'));var logger=require('../../../../config/logger')(_0x9f87('0x3'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0x9f87('0x4'),'required':!![],'message':_0x9f87('0x5')},'timeout':{'type':_0x9f87('0x6'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x4b8214,_0xbb0fb2,_0x68c613){return logger[_0x9f87('0x7')](util['format'](_0x9f87('0x8'),_0x4b8214,_0xbb0fb2['name'],_0x68c613));}function handleFindAgent(_0x57e871){return function(_0x2f72c6){return _0x2f72c6[_0x9f87('0x9')][_0x9f87('0xa')]()===_0x57e871[_0x9f87('0xa')]();};}exports[_0x9f87('0xb')]=function(_0x2c4207,_0x387d9c,_0x58ea47,_0x2a1cde){return function(_0x50a331){try{var _0x45aaf2={'name':_0x387d9c[0x0],'timeout':_0x387d9c[0x1]};var _0x10aa20=queue[_0x9f87('0x0')](_0x45aaf2,{'typecast':!![]});if(_0x10aa20[_0x9f87('0xc')]){logger[_0x9f87('0xd')](_0x9f87('0xe'),_0x2c4207,_[_0x9f87('0xf')](_0x10aa20,_0x9f87('0x10'))[_0x9f87('0x11')](',\x20'));_0x50a331[_0x9f87('0x12')]();}else{var _0x191ec4=_['find'](_0x58ea47[_0x9f87('0x13')],handleFindAgent(_0x45aaf2[_0x9f87('0x9')]));if(_0x191ec4){var _0x1b564a=(_0x45aaf2['timeout']||0xa)*0x3e8;var _0x642bc0,_0x217390;var _0x31a16b=seqqueue['createQueue'](_0x1b564a);_0x31a16b['id']=_0x2c4207;_0x31a16b[_0x9f87('0x14')]=_0x1b564a;_0x31a16b[_0x9f87('0x15')]=_0x2a1cde[_0x9f87('0x15')];writeLog(_0x2c4207,_0x191ec4,util[_0x9f87('0x16')](_0x9f87('0x17'),_0x1b564a));_0x58ea47[_0x9f87('0x18')][_0x2c4207]['on'](_0x9f87('0x19'),function(){logger[_0x9f87('0x7')](_0x9f87('0x1a'),_0x2c4207);clearTimeout(_0x217390);_0x217390=undefined;_0x31a16b[_0x9f87('0x1b')]();if(_0x58ea47['rules'][_0x2c4207]){delete _0x58ea47[_0x9f87('0x18')][_0x2c4207];}_0x50a331[_0x9f87('0x12')]();});_0x58ea47[_0x9f87('0x18')][_0x2c4207]['on']('complete',function(){if(_0x58ea47['rules'][_0x2c4207]){delete _0x58ea47['rules'][_0x2c4207];}});_0x217390=setTimeout(function(){logger[_0x9f87('0x7')](_0x9f87('0x1c'),_0x2c4207);clearTimeout(_0x217390);_0x31a16b[_0x9f87('0x1b')]();_0x50a331[_0x9f87('0x1d')]();},_0x1b564a);strategy[_0x9f87('0x1e')](_0x31a16b,_0x191ec4,_0x58ea47,_0x2a1cde);}else{logger[_0x9f87('0xd')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x2c4207,_0x45aaf2[_0x9f87('0x9')]);_0x50a331[_0x9f87('0x12')]();}}}catch(_0x11bf06){console[_0x9f87('0x1f')](_0x11bf06);logger['error'](_0x9f87('0x20'),_0x2c4207,_0x11bf06[_0x9f87('0x21')]);_0x50a331[_0x9f87('0x12')]();}};};
\ No newline at end of file
index eec524b..2030d21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9066=['toString','postText','amazonlex','providerResponse','dialogState','Failed','lodash','moment','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','isNil','UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','Message','create','then','info','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','$LATEST','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9066,0x148));var _0x6906=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9066[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x6906('0x0'));var moment=require(_0x6906('0x1'));var AWS=require('aws-sdk');var utils=require(_0x6906('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x6906('0x3')),'openchannelMessage':require(_0x6906('0x4')),'mailMessage':require(_0x6906('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x259317,_0x5144de){return function(_0x115adb){try{if(!_[_0x6906('0x6')](this['interaction'][_0x6906('0x7')])){logger['info'](_0x6906('0x8'),_0x259317,_0x6906('0x9'));return _0x115adb[_0x6906('0xa')]();}var _0x39e8b4={'ContactId':this['contact']['id'],'sentAt':moment()[_0x6906('0xb')](_0x6906('0xc')),'direction':_0x6906('0xd')};if(this[_0x6906('0xe')]===_0x6906('0xf')||this[_0x6906('0xe')]===_0x6906('0x10')){_0x39e8b4[_0x6906('0x11')]=this[_0x6906('0x12')][_0x6906('0x11')];}var _0x1c9ef8=this[_0x6906('0xe')];if(_0x1c9ef8===_0x6906('0x13')){_0x39e8b4['ChatWebsiteId']=this[_0x6906('0x14')]['id'];}else{_0x39e8b4[_[_0x6906('0x15')](_0x1c9ef8)+_0x6906('0x16')]=this[_0x6906('0x14')]['id'];}_0x39e8b4[_['upperFirst'](_0x1c9ef8)+_0x6906('0x17')]=this[_0x6906('0x12')]['id'];if(this[_0x6906('0x12')][_0x6906('0x18')]){var _0x574351=_0x5144de[0x4];if(!_[_0x6906('0x19')](_0x574351)){_0x39e8b4[_0x6906('0x1a')]=utils['getMustacheRender'](_0x574351,this);return rpc[_0x1c9ef8+_0x6906('0x1b')][_0x6906('0x1c')](_0x39e8b4)[_0x6906('0x1d')](function(_0x19fc98){logger[_0x6906('0x1e')]('[%s][AMAZONLEX]\x20%s',_0x259317,_0x39e8b4['body']);})[_0x6906('0x1f')](function(_0x5eaf68){logger[_0x6906('0x20')](_0x6906('0x8'),_0x259317,JSON[_0x6906('0x21')](_0x5eaf68));})[_0x6906('0x22')](function(){logger[_0x6906('0x1e')](_0x6906('0x23'),_0x259317);_0x115adb['stop']();});}else{logger[_0x6906('0x1e')](_0x6906('0x24'),_0x259317);_0x115adb[_0x6906('0x25')]();}}else{var _0x1f5c8f=this;var _0x512948=new AWS['LexRuntime']({'accessKeyId':_0x5144de[0x0],'secretAccessKey':_0x5144de[0x1],'region':_0x5144de[0x2]});var _0x10aa66={'botAlias':_0x6906('0x26'),'botName':_0x5144de[0x3],'inputText':this[_0x6906('0x27')]['body'],'userId':this[_0x6906('0xe')]+':'+this[_0x6906('0x12')]['id'][_0x6906('0x28')]()};_0x512948[_0x6906('0x29')](_0x10aa66,function(_0x4e9c2c,_0x168967){if(_0x4e9c2c){logger['error'](_0x6906('0x8'),_0x259317,_0x4e9c2c[_0x6906('0x27')]);_0x115adb[_0x6906('0xa')]();}else if(_0x168967&&_0x168967[_0x6906('0x27')]){_0x1f5c8f['body'][_0x6906('0x2a')]=_0x168967;_0x39e8b4[_0x6906('0x1a')]=_0x168967[_0x6906('0x27')];_0x39e8b4['providerName']=_0x6906('0x2a');_0x39e8b4[_0x6906('0x2b')]=JSON['stringify'](_0x168967);return rpc[_0x1c9ef8+'Message'][_0x6906('0x1c')](_0x39e8b4)[_0x6906('0x1d')](function(_0x2ed634){logger['info'](_0x6906('0x8'),_0x259317,_0x39e8b4[_0x6906('0x1a')]);if(_0x168967[_0x6906('0x2c')]==_0x6906('0x2d')){_0x115adb['next']();}else{_0x115adb[_0x6906('0x25')]();}})[_0x6906('0x1f')](function(_0x474ffc){logger['error'](_0x6906('0x8'),_0x259317,JSON[_0x6906('0x21')](_0x474ffc));_0x115adb[_0x6906('0xa')]();});}else{_0x115adb[_0x6906('0xa')]();}});}}catch(_0x16e0e4){logger['error']('[%s][AMAZONLEX]\x20%s',_0x259317,JSON[_0x6906('0x21')](_0x16e0e4));_0x115adb[_0x6906('0x25')]();}};};
\ No newline at end of file
+var _0x8ef2=['providerResponse','stringify','dialogState','Failed','lodash','moment','aws-sdk','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','interaction','ChatWebsiteId','account','upperFirst','InteractionId','isEmpty','body','getMustacheRender','Message','create','then','error','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','toString','postText','message','amazonlex'];(function(_0x588e59,_0x3f5e39){var _0x992ca1=function(_0x323c0f){while(--_0x323c0f){_0x588e59['push'](_0x588e59['shift']());}};_0x992ca1(++_0x3f5e39);}(_0x8ef2,0x1e4));var _0x28ef=function(_0x48845d,_0x4338c2){_0x48845d=_0x48845d-0x0;var _0x5bad7d=_0x8ef2[_0x48845d];return _0x5bad7d;};'use strict';var _=require(_0x28ef('0x0'));var moment=require(_0x28ef('0x1'));var AWS=require(_0x28ef('0x2'));var utils=require('./utils');var logger=require(_0x28ef('0x3'))(_0x28ef('0x4'));var rpc={'chatMessage':require(_0x28ef('0x5')),'openchannelMessage':require(_0x28ef('0x6')),'mailMessage':require(_0x28ef('0x7')),'smsMessage':require(_0x28ef('0x8')),'faxMessage':require(_0x28ef('0x9')),'whatsappMessage':require(_0x28ef('0xa'))};exports[_0x28ef('0xb')]=function(_0x45b5a8,_0x2135e3){return function(_0x3d4aa7){try{if(!_[_0x28ef('0xc')](this['interaction']['UserId'])){logger[_0x28ef('0xd')](_0x28ef('0xe'),_0x45b5a8,_0x28ef('0xf'));return _0x3d4aa7[_0x28ef('0x10')]();}var _0x55c682={'ContactId':this[_0x28ef('0x11')]['id'],'sentAt':moment()[_0x28ef('0x12')](_0x28ef('0x13')),'direction':_0x28ef('0x14')};if(this[_0x28ef('0x15')]===_0x28ef('0x16')||this[_0x28ef('0x15')]==='whatsapp'){_0x55c682[_0x28ef('0x17')]=this[_0x28ef('0x18')][_0x28ef('0x17')];}var _0x360507=this[_0x28ef('0x15')];if(_0x360507==='chat'){_0x55c682[_0x28ef('0x19')]=this['account']['id'];}else{_0x55c682[_['upperFirst'](_0x360507)+'AccountId']=this[_0x28ef('0x1a')]['id'];}_0x55c682[_[_0x28ef('0x1b')](_0x360507)+_0x28ef('0x1c')]=this[_0x28ef('0x18')]['id'];if(this[_0x28ef('0x18')]['created']){var _0x38f03b=_0x2135e3[0x4];if(!_[_0x28ef('0x1d')](_0x38f03b)){_0x55c682[_0x28ef('0x1e')]=utils[_0x28ef('0x1f')](_0x38f03b,this);return rpc[_0x360507+_0x28ef('0x20')][_0x28ef('0x21')](_0x55c682)[_0x28ef('0x22')](function(_0x1ff924){logger[_0x28ef('0xd')](_0x28ef('0xe'),_0x45b5a8,_0x55c682[_0x28ef('0x1e')]);})['catch'](function(_0x5cbb1e){logger[_0x28ef('0x23')](_0x28ef('0xe'),_0x45b5a8,JSON['stringify'](_0x5cbb1e));})[_0x28ef('0x24')](function(){logger[_0x28ef('0xd')](_0x28ef('0x25'),_0x45b5a8);_0x3d4aa7[_0x28ef('0x26')]();});}else{logger[_0x28ef('0xd')](_0x28ef('0x27'),_0x45b5a8);_0x3d4aa7[_0x28ef('0x26')]();}}else{var _0x34d738=this;var _0x1b8378=new AWS['LexRuntime']({'accessKeyId':_0x2135e3[0x0],'secretAccessKey':_0x2135e3[0x1],'region':_0x2135e3[0x2]});var _0x331312={'botAlias':'$LATEST','botName':_0x2135e3[0x3],'inputText':this['message'][_0x28ef('0x1e')],'userId':this[_0x28ef('0x15')]+':'+this[_0x28ef('0x18')]['id'][_0x28ef('0x28')]()};_0x1b8378[_0x28ef('0x29')](_0x331312,function(_0x57c1ae,_0x5b78a9){if(_0x57c1ae){logger['error'](_0x28ef('0xe'),_0x45b5a8,_0x57c1ae[_0x28ef('0x2a')]);_0x3d4aa7[_0x28ef('0x10')]();}else if(_0x5b78a9&&_0x5b78a9[_0x28ef('0x2a')]){_0x34d738['body'][_0x28ef('0x2b')]=_0x5b78a9;_0x55c682['body']=_0x5b78a9[_0x28ef('0x2a')];_0x55c682['providerName']='amazonlex';_0x55c682[_0x28ef('0x2c')]=JSON[_0x28ef('0x2d')](_0x5b78a9);return rpc[_0x360507+_0x28ef('0x20')][_0x28ef('0x21')](_0x55c682)[_0x28ef('0x22')](function(_0x58b8ff){logger[_0x28ef('0xd')](_0x28ef('0xe'),_0x45b5a8,_0x55c682['body']);if(_0x5b78a9[_0x28ef('0x2e')]==_0x28ef('0x2f')){_0x3d4aa7[_0x28ef('0x10')]();}else{_0x3d4aa7['stop']();}})['catch'](function(_0x51b730){logger[_0x28ef('0x23')](_0x28ef('0xe'),_0x45b5a8,JSON[_0x28ef('0x2d')](_0x51b730));_0x3d4aa7['next']();});}else{_0x3d4aa7[_0x28ef('0x10')]();}});}}catch(_0x1c1ed9){logger['error'](_0x28ef('0xe'),_0x45b5a8,JSON['stringify'](_0x1c1ed9));_0x3d4aa7[_0x28ef('0x26')]();}};};
\ No newline at end of file
index 2f197f0..6f59213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ce=['then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','consequence','channel','body','isAutoreply','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','out','mail','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','account','InteractionId','Message','messageId','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','auto_reply','smtpOptions'];(function(_0x2dd36c,_0x5a645b){var _0x2c63ea=function(_0x4d4020){while(--_0x4d4020){_0x2dd36c['push'](_0x2dd36c['shift']());}};_0x2c63ea(++_0x5a645b);}(_0x15ce,0xd5));var _0xe15c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x15ce[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xe15c('0x0'));var moment=require(_0xe15c('0x1'));var utils=require(_0xe15c('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0xe15c('0x3')),'openchannelMessage':require(_0xe15c('0x4')),'mailMessage':require(_0xe15c('0x5')),'smsMessage':require(_0xe15c('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xe15c('0x7')),'chatInteraction':require(_0xe15c('0x8')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xe15c('0x9')),'smsInteraction':require(_0xe15c('0xa')),'faxInteraction':require(_0xe15c('0xb')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0xe15c('0xc'));exports[_0xe15c('0xd')]=function(_0x62ce7d,_0x5c860d,_0x26eeba,_0x8488d4){return function(_0x54adb5){try{var _0x1ec806=this[_0xe15c('0xe')];if(_0x1ec806==='mail'&&_0x8488d4[_0xe15c('0xf')][_0xe15c('0x10')]){logger[_0xe15c('0x11')]('[%s][AUTOREPLY]\x20%s',_0x62ce7d,_0xe15c('0x12'));return _0x54adb5['next']();}if(_0x5c860d[0x0]==='1'&&(_[_0xe15c('0x13')](this[_0xe15c('0x14')]['created'])||!this[_0xe15c('0x14')][_0xe15c('0x15')])){logger[_0xe15c('0x11')](_0xe15c('0x16'),_0x62ce7d,_0xe15c('0x17'));return _0x54adb5[_0xe15c('0x18')]();}if(_0x5c860d[0x0]==='2'&&this[_0xe15c('0x14')][_0xe15c('0x19')]){logger[_0xe15c('0x11')](_0xe15c('0x1a'),_0x62ce7d,_0xe15c('0x1b'));return _0x54adb5[_0xe15c('0x18')]();}var _0x53bb7d={'ContactId':this[_0xe15c('0x1c')]['id'],'sentAt':moment()[_0xe15c('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xe15c('0x1e')};if(this[_0xe15c('0xe')]===_0xe15c('0x1f')){_0x53bb7d[_0xe15c('0xf')]=utils[_0xe15c('0x20')](_0x5c860d[0x2],this);}else{_0x53bb7d[_0xe15c('0xf')]=utils[_0xe15c('0x20')](_0x5c860d[0x1],this);}if(this[_0xe15c('0x21')]){_0x53bb7d['to']=this['message'][_0xe15c('0x22')]||'';if(this['channel']==='mail'&&_0x5c860d[0x1]==='1'){_0x53bb7d['cc']=this[_0xe15c('0x21')]['cc']||'';}_0x53bb7d[_0xe15c('0x22')]=this['message']['to']||'';_0x53bb7d[_0xe15c('0x23')]=this[_0xe15c('0x21')][_0xe15c('0x23')]||'';_0x53bb7d[_0xe15c('0x24')]=!![];if(this['message'][_0xe15c('0x25')]){_0x53bb7d['subject']='';_0x53bb7d['subject']+=_[_0xe15c('0x26')](this[_0xe15c('0x21')][_0xe15c('0x25')],_0xe15c('0x27'))?'':_0xe15c('0x28');_0x53bb7d[_0xe15c('0x25')]+=this['message'][_0xe15c('0x25')];}}if(this['channel']===_0xe15c('0x29')){_0x53bb7d[_0xe15c('0x2a')]=this['account']['id'];}else{_0x53bb7d[_[_0xe15c('0x2b')](this[_0xe15c('0xe')])+'AccountId']=this[_0xe15c('0x2c')]['id'];}_0x53bb7d[_[_0xe15c('0x2b')](this[_0xe15c('0xe')])+_0xe15c('0x2d')]=this[_0xe15c('0x14')]['id'];var _0x46e2fd=this['interaction'];if(rpc[this[_0xe15c('0xe')]+_0xe15c('0x2e')]){if(this[_0xe15c('0xe')]==='mail'){_0x53bb7d['inReplyTo']=this[_0xe15c('0x21')][_0xe15c('0x2f')];_0x53bb7d['html']='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x53bb7d[_0xe15c('0xf')],_0xe15c('0x30'),_0xe15c('0x31'))+_0xe15c('0x32');_0x53bb7d['headers']={'Auto-Submitted':_0xe15c('0x33'),'X-Auto-Response-Suppress':_0xe15c('0x34'),'Precedence':_0xe15c('0x35')};return mailRpc['sendMailMessage'](this['account'][_0xe15c('0x36')],_0x53bb7d)[_0xe15c('0x37')](function(_0x31c119){logger['info'](_0xe15c('0x38'),_0x62ce7d);_0x53bb7d[_0xe15c('0x2f')]=_0x31c119[_0xe15c('0x21')][_0xe15c('0x2f')];return rpc[_0x1ec806+'Message'][_0xe15c('0x39')](_0x53bb7d);})['then'](function(_0x18a6c9){logger[_0xe15c('0x11')](_0xe15c('0x16'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x18a6c9));})[_0xe15c('0x3b')](function(_0x5ee3d3){logger[_0xe15c('0x3c')](_0xe15c('0x3d'),_0x62ce7d,JSON['stringify'](_0x5ee3d3));})[_0xe15c('0x3e')](function(){Promise[_0xe15c('0x3f')]()[_0xe15c('0x37')](function(){if(_0x5c860d[0x0]!=='2'||_0x46e2fd[_0xe15c('0x19')])return;return rpc[_0x1ec806+_0xe15c('0x40')]['update'](_0x46e2fd['id'],{'autoreplyExecuted':!![]})[_0xe15c('0x37')](function(_0x53c914){logger[_0xe15c('0x11')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x62ce7d,JSON['stringify'](_0x53c914));})[_0xe15c('0x3b')](function(_0x473811){logger['error'](_0xe15c('0x41'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x473811));});})[_0xe15c('0x37')](function(){_0x54adb5[_0xe15c('0x18')]();});});}else{return rpc[this[_0xe15c('0xe')]+_0xe15c('0x2e')][_0xe15c('0x39')](_0x53bb7d)[_0xe15c('0x37')](function(){logger[_0xe15c('0x11')](_0xe15c('0x16'),_0x62ce7d,_0x53bb7d[_0xe15c('0xf')]);})['catch'](function(_0x47e9fd){logger[_0xe15c('0x3c')](_0xe15c('0x16'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x47e9fd));})[_0xe15c('0x3e')](function(){Promise[_0xe15c('0x3f')]()[_0xe15c('0x37')](function(){if(_0x5c860d[0x0]!=='2'||_0x46e2fd[_0xe15c('0x19')])return;return rpc[_0x1ec806+_0xe15c('0x40')]['update'](_0x46e2fd['id'],{'autoreplyExecuted':!![]})['then'](function(_0x4ecbca){logger[_0xe15c('0x11')](_0xe15c('0x1a'),_0x62ce7d,JSON['stringify'](_0x4ecbca));})[_0xe15c('0x3b')](function(_0x2cafd1){logger[_0xe15c('0x3c')](_0xe15c('0x41'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x2cafd1));});})['then'](function(){_0x54adb5['next']();});});}}}catch(_0x1a9c93){logger['error']('[%s][AUTOREPLY]\x20%s',_0x62ce7d,JSON[_0xe15c('0x3a')](_0x1a9c93));_0x54adb5[_0xe15c('0x42')]();}};};
\ No newline at end of file
+var _0xee80=['isNil','interaction','next','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','Re:','Re:\x20','chat','upperFirst','InteractionId','Message','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','headers','auto-replied','All','auto_reply','sendMailMessage','account','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','error','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','resolve','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','catch','lodash','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)'];(function(_0x4e4061,_0x26503b){var _0x371dbd=function(_0x31a31f){while(--_0x31a31f){_0x4e4061['push'](_0x4e4061['shift']());}};_0x371dbd(++_0x26503b);}(_0xee80,0xb5));var _0x0ee8=function(_0x47fd36,_0x41535d){_0x47fd36=_0x47fd36-0x0;var _0x21a0fc=_0xee80[_0x47fd36];return _0x21a0fc;};'use strict';var _=require(_0x0ee8('0x0'));var moment=require('moment');var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x0ee8('0x1')),'openchannelMessage':require(_0x0ee8('0x2')),'mailMessage':require(_0x0ee8('0x3')),'smsMessage':require(_0x0ee8('0x4')),'faxMessage':require(_0x0ee8('0x5')),'whatsappMessage':require(_0x0ee8('0x6')),'chatInteraction':require(_0x0ee8('0x7')),'openchannelInteraction':require(_0x0ee8('0x8')),'mailInteraction':require(_0x0ee8('0x9')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0x0ee8('0xa')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x0ee8('0xb'));exports[_0x0ee8('0xc')]=function(_0x2076fb,_0x45afaf,_0x46c331,_0x184394){return function(_0x29bc1f){try{var _0x41ca70=this[_0x0ee8('0xd')];if(_0x41ca70===_0x0ee8('0xe')&&_0x184394[_0x0ee8('0xf')][_0x0ee8('0x10')]){logger[_0x0ee8('0x11')](_0x0ee8('0x12'),_0x2076fb,_0x0ee8('0x13'));return _0x29bc1f['next']();}if(_0x45afaf[0x0]==='1'&&(_[_0x0ee8('0x14')](this[_0x0ee8('0x15')]['created'])||!this['interaction']['created'])){logger[_0x0ee8('0x11')](_0x0ee8('0x12'),_0x2076fb,'Autoreply\x20already\x20sent');return _0x29bc1f[_0x0ee8('0x16')]();}if(_0x45afaf[0x0]==='2'&&this[_0x0ee8('0x15')][_0x0ee8('0x17')]){logger['info'](_0x0ee8('0x18'),_0x2076fb,_0x0ee8('0x19'));return _0x29bc1f[_0x0ee8('0x16')]();}var _0x1987c7={'ContactId':this[_0x0ee8('0x1a')]['id'],'sentAt':moment()[_0x0ee8('0x1b')](_0x0ee8('0x1c')),'direction':_0x0ee8('0x1d')};if(this[_0x0ee8('0xd')]===_0x0ee8('0xe')){_0x1987c7[_0x0ee8('0xf')]=utils[_0x0ee8('0x1e')](_0x45afaf[0x2],this);}else{_0x1987c7['body']=utils[_0x0ee8('0x1e')](_0x45afaf[0x1],this);}if(this[_0x0ee8('0x1f')]){_0x1987c7['to']=this[_0x0ee8('0x1f')][_0x0ee8('0x20')]||'';if(this[_0x0ee8('0xd')]===_0x0ee8('0xe')&&_0x45afaf[0x1]==='1'){_0x1987c7['cc']=this[_0x0ee8('0x1f')]['cc']||'';}_0x1987c7[_0x0ee8('0x20')]=this['message']['to']||'';_0x1987c7[_0x0ee8('0x21')]=this[_0x0ee8('0x1f')][_0x0ee8('0x21')]||'';_0x1987c7[_0x0ee8('0x22')]=!![];if(this[_0x0ee8('0x1f')][_0x0ee8('0x23')]){_0x1987c7[_0x0ee8('0x23')]='';_0x1987c7[_0x0ee8('0x23')]+=_['startsWith'](this[_0x0ee8('0x1f')][_0x0ee8('0x23')],_0x0ee8('0x24'))?'':_0x0ee8('0x25');_0x1987c7[_0x0ee8('0x23')]+=this[_0x0ee8('0x1f')][_0x0ee8('0x23')];}}if(this[_0x0ee8('0xd')]===_0x0ee8('0x26')){_0x1987c7['ChatWebsiteId']=this['account']['id'];}else{_0x1987c7[_[_0x0ee8('0x27')](this[_0x0ee8('0xd')])+'AccountId']=this['account']['id'];}_0x1987c7[_[_0x0ee8('0x27')](this[_0x0ee8('0xd')])+_0x0ee8('0x28')]=this[_0x0ee8('0x15')]['id'];var _0x50a661=this[_0x0ee8('0x15')];if(rpc[this[_0x0ee8('0xd')]+_0x0ee8('0x29')]){if(this['channel']==='mail'){_0x1987c7['inReplyTo']=this[_0x0ee8('0x1f')][_0x0ee8('0x2a')];_0x1987c7[_0x0ee8('0x2b')]=_0x0ee8('0x2c')+_[_0x0ee8('0x2d')](_0x1987c7['body'],_0x0ee8('0x2e'),_0x0ee8('0x2f'))+'</div>';_0x1987c7[_0x0ee8('0x30')]={'Auto-Submitted':_0x0ee8('0x31'),'X-Auto-Response-Suppress':_0x0ee8('0x32'),'Precedence':_0x0ee8('0x33')};return mailRpc[_0x0ee8('0x34')](this[_0x0ee8('0x35')][_0x0ee8('0x36')],_0x1987c7)[_0x0ee8('0x37')](function(_0x2ec5a5){logger[_0x0ee8('0x11')](_0x0ee8('0x38'),_0x2076fb);_0x1987c7[_0x0ee8('0x2a')]=_0x2ec5a5[_0x0ee8('0x1f')][_0x0ee8('0x2a')];return rpc[_0x41ca70+_0x0ee8('0x29')]['create'](_0x1987c7);})[_0x0ee8('0x37')](function(_0x1a3006){logger[_0x0ee8('0x11')](_0x0ee8('0x12'),_0x2076fb,JSON['stringify'](_0x1a3006));})['catch'](function(_0x1f40fb){logger[_0x0ee8('0x39')](_0x0ee8('0x3a'),_0x2076fb,JSON[_0x0ee8('0x3b')](_0x1f40fb));})[_0x0ee8('0x3c')](function(){Promise[_0x0ee8('0x3d')]()[_0x0ee8('0x37')](function(){if(_0x45afaf[0x0]!=='2'||_0x50a661['autoreplyExecuted'])return;return rpc[_0x41ca70+_0x0ee8('0x3e')][_0x0ee8('0x3f')](_0x50a661['id'],{'autoreplyExecuted':!![]})[_0x0ee8('0x37')](function(_0x59db3f){logger[_0x0ee8('0x11')](_0x0ee8('0x18'),_0x2076fb,JSON['stringify'](_0x59db3f));})['catch'](function(_0x320183){logger['error'](_0x0ee8('0x40'),_0x2076fb,JSON[_0x0ee8('0x3b')](_0x320183));});})[_0x0ee8('0x37')](function(){_0x29bc1f[_0x0ee8('0x16')]();});});}else{return rpc[this[_0x0ee8('0xd')]+_0x0ee8('0x29')][_0x0ee8('0x41')](_0x1987c7)[_0x0ee8('0x37')](function(){logger[_0x0ee8('0x11')](_0x0ee8('0x12'),_0x2076fb,_0x1987c7[_0x0ee8('0xf')]);})[_0x0ee8('0x42')](function(_0x1a44ab){logger[_0x0ee8('0x39')](_0x0ee8('0x12'),_0x2076fb,JSON['stringify'](_0x1a44ab));})['finally'](function(){Promise['resolve']()[_0x0ee8('0x37')](function(){if(_0x45afaf[0x0]!=='2'||_0x50a661[_0x0ee8('0x17')])return;return rpc[_0x41ca70+_0x0ee8('0x3e')][_0x0ee8('0x3f')](_0x50a661['id'],{'autoreplyExecuted':!![]})['then'](function(_0x354130){logger['info'](_0x0ee8('0x18'),_0x2076fb,JSON[_0x0ee8('0x3b')](_0x354130));})[_0x0ee8('0x42')](function(_0x420bca){logger[_0x0ee8('0x39')](_0x0ee8('0x40'),_0x2076fb,JSON[_0x0ee8('0x3b')](_0x420bca));});})[_0x0ee8('0x37')](function(){_0x29bc1f[_0x0ee8('0x16')]();});});}}}catch(_0x45851b){logger[_0x0ee8('0x39')](_0x0ee8('0x12'),_0x2076fb,JSON[_0x0ee8('0x3b')](_0x45851b));_0x29bc1f['stop']();}};};
\ No newline at end of file
index ef86521..48085fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde42=['../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','format','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','finally','stop','stringify','moment','../../../../config/logger','routing'];(function(_0x2312a8,_0x3b96b1){var _0x2ab51a=function(_0xc03943){while(--_0xc03943){_0x2312a8['push'](_0x2312a8['shift']());}};_0x2ab51a(++_0x3b96b1);}(_0xde42,0x123));var _0x2de4=function(_0x3ad54a,_0x33f0e2){_0x3ad54a=_0x3ad54a-0x0;var _0x18f50f=_0xde42[_0x3ad54a];return _0x18f50f;};'use strict';var moment=require(_0x2de4('0x0'));var logger=require(_0x2de4('0x1'))(_0x2de4('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x2de4('0x3')),'mailInteraction':require(_0x2de4('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x2de4('0x5'))};exports[_0x2de4('0x6')]=function(_0x58113c,_0x376a28,_0x346278,_0x393a87){return function(_0x32423b){try{logger['info'](_0x2de4('0x7'),_0x58113c,_0x376a28[0x0]);var _0x66cdb3={'closed':0x1,'closedAt':moment()[_0x2de4('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x376a28[0x0]};if(rpc[_0x393a87[_0x2de4('0x9')]+_0x2de4('0xa')]){rpc[_0x393a87[_0x2de4('0x9')]+_0x2de4('0xa')][_0x2de4('0xb')](_0x393a87[_0x2de4('0xc')]['id'],_0x66cdb3)[_0x2de4('0xd')](function(_0x4b974d){logger['info'](_0x2de4('0xe'),_0x58113c,_0x393a87[_0x2de4('0xc')]['id']);})[_0x2de4('0xf')](function(_0x415071){logger[_0x2de4('0x10')](_0x2de4('0x11'),_0x58113c,JSON['stringify'](_0x415071));})[_0x2de4('0x12')](function(){_0x32423b[_0x2de4('0x13')]();});}}catch(_0x42972c){logger[_0x2de4('0x10')](_0x2de4('0x11'),_0x58113c,JSON[_0x2de4('0x14')](_0x42972c));_0x32423b[_0x2de4('0x13')]();}};};
\ No newline at end of file
+var _0x32a6=['stop','moment','../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','consequence','info','system','channel','Interaction','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally'];(function(_0x1ef51d,_0x3b4a48){var _0x993a20=function(_0x4cacc1){while(--_0x4cacc1){_0x1ef51d['push'](_0x1ef51d['shift']());}};_0x993a20(++_0x3b4a48);}(_0x32a6,0x17d));var _0x632a=function(_0x5f28e6,_0x1fda78){_0x5f28e6=_0x5f28e6-0x0;var _0x316c3a=_0x32a6[_0x5f28e6];return _0x316c3a;};'use strict';var moment=require(_0x632a('0x0'));var logger=require(_0x632a('0x1'))(_0x632a('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x632a('0x3')),'smsInteraction':require(_0x632a('0x4')),'mailInteraction':require(_0x632a('0x5')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x632a('0x6'))};exports[_0x632a('0x7')]=function(_0x413b2b,_0x2bf24c,_0x1b4c67,_0x180dc7){return function(_0x50a0e0){try{logger[_0x632a('0x8')]('[%s][CLOSE]\x20reason\x20%s',_0x413b2b,_0x2bf24c[0x0]);var _0x508d22={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x632a('0x9'),'disposition':_0x2bf24c[0x0]};if(rpc[_0x180dc7[_0x632a('0xa')]+'Interaction']){rpc[_0x180dc7[_0x632a('0xa')]+_0x632a('0xb')]['update'](_0x180dc7[_0x632a('0xc')]['id'],_0x508d22)['then'](function(_0x1048d7){logger[_0x632a('0x8')](_0x632a('0xd'),_0x413b2b,_0x180dc7['interaction']['id']);})[_0x632a('0xe')](function(_0x3abd04){logger[_0x632a('0xf')](_0x632a('0x10'),_0x413b2b,JSON[_0x632a('0x11')](_0x3abd04));})[_0x632a('0x12')](function(){_0x50a0e0[_0x632a('0x13')]();});}}catch(_0x453f60){logger[_0x632a('0xf')]('[%s][CLOSE]\x20%s',_0x413b2b,JSON[_0x632a('0x11')](_0x453f60));_0x50a0e0['stop']();}};};
\ No newline at end of file
index f93ef16..23d2be5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x022a=['result','speech','providerResponse','metadata','endConversation','next','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','out','sms','channel','phone','account','AccountId','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','dialogflow'];(function(_0x3dcf6a,_0x3d0984){var _0x1be2f8=function(_0x4ee878){while(--_0x4ee878){_0x3dcf6a['push'](_0x3dcf6a['shift']());}};_0x1be2f8(++_0x3d0984);}(_0x022a,0x1f0));var _0xa022=function(_0x1d6e56,_0x1959b9){_0x1d6e56=_0x1d6e56-0x0;var _0xef8e84=_0x022a[_0x1d6e56];return _0xef8e84;};'use strict';var _=require(_0xa022('0x0'));var moment=require(_0xa022('0x1'));var apiai=require(_0xa022('0x2'));var md5=require(_0xa022('0x3'));var utils=require(_0xa022('0x4'));var logger=require(_0xa022('0x5'))(_0xa022('0x6'));var rpc={'chatMessage':require(_0xa022('0x7')),'openchannelMessage':require(_0xa022('0x8')),'mailMessage':require(_0xa022('0x9')),'smsMessage':require(_0xa022('0xa')),'faxMessage':require(_0xa022('0xb')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xa022('0xc')]=function(_0x580bb3,_0x4d99c5){return function(_0x393854){try{if(!_[_0xa022('0xd')](this[_0xa022('0xe')][_0xa022('0xf')])){logger[_0xa022('0x10')](_0xa022('0x11'),_0x580bb3,_0xa022('0x12'));return _0x393854['next']();}var _0x112ac4={'ContactId':this[_0xa022('0x13')]['id'],'sentAt':moment()[_0xa022('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xa022('0x15')};if(this['channel']===_0xa022('0x16')||this[_0xa022('0x17')]==='whatsapp'){_0x112ac4['phone']=this[_0xa022('0xe')][_0xa022('0x18')];}var _0x45b9e6=this[_0xa022('0x17')];if(_0x45b9e6==='chat'){_0x112ac4['ChatWebsiteId']=this[_0xa022('0x19')]['id'];}else{_0x112ac4[_['upperFirst'](_0x45b9e6)+_0xa022('0x1a')]=this[_0xa022('0x19')]['id'];}_0x112ac4[_[_0xa022('0x1b')](_0x45b9e6)+_0xa022('0x1c')]=this[_0xa022('0xe')]['id'];if(this[_0xa022('0xe')][_0xa022('0x1d')]){var _0x1e27d5=_0x4d99c5[0x2];if(!_[_0xa022('0x1e')](_0x1e27d5)){_0x112ac4[_0xa022('0x1f')]=utils[_0xa022('0x20')](_0x1e27d5,this);return rpc[_0x45b9e6+_0xa022('0x21')][_0xa022('0x22')](_0x112ac4)[_0xa022('0x23')](function(_0x5aafa5){logger[_0xa022('0x10')](_0xa022('0x11'),_0x580bb3,_0x112ac4[_0xa022('0x1f')]);})[_0xa022('0x24')](function(_0x3e4cd3){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,JSON[_0xa022('0x26')](_0x3e4cd3));})['finally'](function(){logger['info'](_0xa022('0x27'),_0x580bb3);_0x393854[_0xa022('0x28')]();});}else{logger['info'](_0xa022('0x29'),_0x580bb3);_0x393854[_0xa022('0x28')]();}}else{var _0x2d0c76=this;var _0x24b800=apiai(_0x4d99c5[0x0],{'language':_0x4d99c5[0x1]||'en'});return _0x24b800['textRequest'](this['message'][_0xa022('0x1f')],{'sessionId':md5(this[_0xa022('0xe')]['id'])})[_0xa022('0x23')](function(_0xf730bd){_0x2d0c76[_0xa022('0x1f')][_0xa022('0x2a')]=_0xf730bd;_0x112ac4['body']=_0xf730bd[_0xa022('0x2b')]['fulfillment'][_0xa022('0x2c')];_0x112ac4['providerName']=_0xa022('0x2a');_0x112ac4[_0xa022('0x2d')]=JSON[_0xa022('0x26')](_0xf730bd);return rpc[_0x45b9e6+'Message'][_0xa022('0x22')](_0x112ac4)[_0xa022('0x23')](function(_0x2fec7c){logger[_0xa022('0x10')](_0xa022('0x11'),_0x580bb3,_0x112ac4[_0xa022('0x1f')]);if(_0xf730bd[_0xa022('0x2b')][_0xa022('0x2e')][_0xa022('0x2f')]){_0x393854['next']();}else{_0x393854[_0xa022('0x28')]();}})[_0xa022('0x24')](function(_0x6fc8a9){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,JSON[_0xa022('0x26')](_0x6fc8a9));_0x393854[_0xa022('0x30')]();});})['catch'](function(_0xf4cce7){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,_0xf4cce7['message']);_0x393854[_0xa022('0x30')]();});}}catch(_0x461bda){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,JSON[_0xa022('0x26')](_0x461bda));_0x393854[_0xa022('0x28')]();}};};
\ No newline at end of file
+var _0x9f7a=['sms','whatsapp','interaction','chat','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','create','then','body','catch','error','stringify','finally','textRequest','dialogflow','result','speech','providerName','metadata','endConversation','stop','message','lodash','moment','apiai-promise','md5','../../../../config/logger','../../rpc/mailMessage','../../rpc/smsMessage','consequence','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel'];(function(_0x2b47b6,_0x2c7d83){var _0x5f5ce3=function(_0x41aabc){while(--_0x41aabc){_0x2b47b6['push'](_0x2b47b6['shift']());}};_0x5f5ce3(++_0x2c7d83);}(_0x9f7a,0xf1));var _0xa9f7=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x9f7a[_0x1203f];return _0x365f0a;};'use strict';var _=require(_0xa9f7('0x0'));var moment=require(_0xa9f7('0x1'));var apiai=require(_0xa9f7('0x2'));var md5=require(_0xa9f7('0x3'));var utils=require('./utils');var logger=require(_0xa9f7('0x4'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xa9f7('0x5')),'smsMessage':require(_0xa9f7('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xa9f7('0x7')]=function(_0x5497c8,_0x48e791){return function(_0x5bf7ca){try{if(!_[_0xa9f7('0x8')](this['interaction'][_0xa9f7('0x9')])){logger[_0xa9f7('0xa')](_0xa9f7('0xb'),_0x5497c8,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x5bf7ca[_0xa9f7('0xc')]();}var _0xdda0e0={'ContactId':this['contact']['id'],'sentAt':moment()[_0xa9f7('0xd')](_0xa9f7('0xe')),'direction':_0xa9f7('0xf')};if(this[_0xa9f7('0x10')]===_0xa9f7('0x11')||this[_0xa9f7('0x10')]===_0xa9f7('0x12')){_0xdda0e0['phone']=this[_0xa9f7('0x13')]['phone'];}var _0x45ffaf=this[_0xa9f7('0x10')];if(_0x45ffaf===_0xa9f7('0x14')){_0xdda0e0['ChatWebsiteId']=this['account']['id'];}else{_0xdda0e0[_[_0xa9f7('0x15')](_0x45ffaf)+'AccountId']=this['account']['id'];}_0xdda0e0[_[_0xa9f7('0x15')](_0x45ffaf)+_0xa9f7('0x16')]=this[_0xa9f7('0x13')]['id'];if(this['interaction'][_0xa9f7('0x17')]){var _0x153493=_0x48e791[0x2];if(!_[_0xa9f7('0x18')](_0x153493)){_0xdda0e0['body']=utils[_0xa9f7('0x19')](_0x153493,this);return rpc[_0x45ffaf+_0xa9f7('0x1a')][_0xa9f7('0x1b')](_0xdda0e0)[_0xa9f7('0x1c')](function(_0x8da225){logger[_0xa9f7('0xa')](_0xa9f7('0xb'),_0x5497c8,_0xdda0e0[_0xa9f7('0x1d')]);})[_0xa9f7('0x1e')](function(_0x4c235e){logger[_0xa9f7('0x1f')](_0xa9f7('0xb'),_0x5497c8,JSON[_0xa9f7('0x20')](_0x4c235e));})[_0xa9f7('0x21')](function(){logger[_0xa9f7('0xa')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x5497c8);_0x5bf7ca['stop']();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x5497c8);_0x5bf7ca['stop']();}}else{var _0x4b7202=this;var _0x5c9e4f=apiai(_0x48e791[0x0],{'language':_0x48e791[0x1]||'en'});return _0x5c9e4f[_0xa9f7('0x22')](this['message']['body'],{'sessionId':md5(this[_0xa9f7('0x13')]['id'])})['then'](function(_0x502562){_0x4b7202['body'][_0xa9f7('0x23')]=_0x502562;_0xdda0e0[_0xa9f7('0x1d')]=_0x502562[_0xa9f7('0x24')]['fulfillment'][_0xa9f7('0x25')];_0xdda0e0[_0xa9f7('0x26')]=_0xa9f7('0x23');_0xdda0e0['providerResponse']=JSON[_0xa9f7('0x20')](_0x502562);return rpc[_0x45ffaf+'Message'][_0xa9f7('0x1b')](_0xdda0e0)['then'](function(_0x1bf651){logger[_0xa9f7('0xa')](_0xa9f7('0xb'),_0x5497c8,_0xdda0e0[_0xa9f7('0x1d')]);if(_0x502562['result'][_0xa9f7('0x27')][_0xa9f7('0x28')]){_0x5bf7ca[_0xa9f7('0xc')]();}else{_0x5bf7ca[_0xa9f7('0x29')]();}})[_0xa9f7('0x1e')](function(_0x471c3c){logger[_0xa9f7('0x1f')](_0xa9f7('0xb'),_0x5497c8,JSON['stringify'](_0x471c3c));_0x5bf7ca['next']();});})['catch'](function(_0x224f2e){logger[_0xa9f7('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x5497c8,_0x224f2e[_0xa9f7('0x2a')]);_0x5bf7ca['next']();});}}catch(_0x49805c){logger['error'](_0xa9f7('0xb'),_0x5497c8,JSON['stringify'](_0x49805c));_0x5bf7ca[_0xa9f7('0x29')]();}};};
\ No newline at end of file
index 23922c9..f499d83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3cb=['moment','bluebird','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','then','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','info','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','dialogflowV2','diagnosticInfo','fields','queryResult','end_conversation','boolValue','action','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','length','fulfillmentText','all','lodash','dialogflow','md5'];(function(_0x1655bb,_0x5a82ae){var _0x5e2020=function(_0x1ccfb4){while(--_0x1ccfb4){_0x1655bb['push'](_0x1655bb['shift']());}};_0x5e2020(++_0x5a82ae);}(_0xe3cb,0xd5));var _0xbe3c=function(_0x18ca0f,_0x436501){_0x18ca0f=_0x18ca0f-0x0;var _0x563a56=_0xe3cb[_0x18ca0f];return _0x563a56;};'use strict';var _=require(_0xbe3c('0x0'));var dialogflow=require(_0xbe3c('0x1'));var md5=require(_0xbe3c('0x2'));var moment=require(_0xbe3c('0x3'));var Promise=require(_0xbe3c('0x4'));var logger=require(_0xbe3c('0x5'))(_0xbe3c('0x6'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xbe3c('0x7')),'smsMessage':require(_0xbe3c('0x8')),'faxMessage':require(_0xbe3c('0x9')),'whatsappMessage':require(_0xbe3c('0xa'))};function createMessage(_0x49037a,_0x468262,_0x3c9da,_0x195b92){return new Promise(function(_0xf94ed5,_0x14612a){var _0xc14413=_[_0xbe3c('0xb')](_0x3c9da);_0xc14413[_0xbe3c('0xc')]=_0x195b92;return rpc[_0x468262+'Message'][_0xbe3c('0xd')](_0xc14413)[_0xbe3c('0xe')](function(){logger['info'](_0xbe3c('0xf'),_0x49037a,_0xc14413[_0xbe3c('0xc')]);_0xf94ed5();})['catch'](function(_0x339f77){logger[_0xbe3c('0x10')](_0xbe3c('0xf'),_0x49037a,JSON[_0xbe3c('0x11')](_0x339f77));_0x14612a(_0x339f77);});});}exports[_0xbe3c('0x12')]=function(_0x532c24,_0x1c1b1c){return function(_0x3375eb){try{if(!_['isNil'](this['interaction']['UserId'])){logger[_0xbe3c('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x532c24,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x3375eb[_0xbe3c('0x14')]();}var _0x21f2b0={'ContactId':this[_0xbe3c('0x15')]['id'],'sentAt':moment()[_0xbe3c('0x16')](_0xbe3c('0x17')),'direction':_0xbe3c('0x18')};if(this[_0xbe3c('0x19')]===_0xbe3c('0x1a')||this[_0xbe3c('0x19')]===_0xbe3c('0x1b')){_0x21f2b0[_0xbe3c('0x1c')]=this[_0xbe3c('0x1d')][_0xbe3c('0x1c')];}var _0x2c53ee=this['channel'];if(_0x2c53ee===_0xbe3c('0x1e')){_0x21f2b0[_0xbe3c('0x1f')]=this[_0xbe3c('0x20')]['id'];}else{_0x21f2b0[_[_0xbe3c('0x21')](_0x2c53ee)+'AccountId']=this[_0xbe3c('0x20')]['id'];}_0x21f2b0[_['upperFirst'](_0x2c53ee)+_0xbe3c('0x22')]=this[_0xbe3c('0x1d')]['id'];if(this[_0xbe3c('0x1d')][_0xbe3c('0x23')]){var _0x6ce5ad=_0x1c1b1c[0x4];if(!_[_0xbe3c('0x24')](_0x6ce5ad)){_0x21f2b0[_0xbe3c('0xc')]=utils[_0xbe3c('0x25')](_0x6ce5ad,this);return rpc[_0x2c53ee+_0xbe3c('0x26')][_0xbe3c('0xd')](_0x21f2b0)['then'](function(_0x557ef5){logger[_0xbe3c('0x13')](_0xbe3c('0xf'),_0x532c24,_0x21f2b0[_0xbe3c('0xc')]);})[_0xbe3c('0x27')](function(_0x36fc1a){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x532c24,JSON[_0xbe3c('0x11')](_0x36fc1a));})[_0xbe3c('0x28')](function(){logger[_0xbe3c('0x13')](_0xbe3c('0x29'),_0x532c24);_0x3375eb['stop']();});}else{logger[_0xbe3c('0x13')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x532c24);_0x3375eb[_0xbe3c('0x2a')]();}}else{var _0x260199=this;var _0x2b9961=_0x1c1b1c[0x2][_0xbe3c('0x2b')](/\\n/g,'\x0a');var _0xb96e38={'credentials':{'private_key':_0x2b9961,'client_email':_0x1c1b1c[0x1]}};var _0x72e9ae=new dialogflow[(_0xbe3c('0x2c'))](_0xb96e38);var _0xaca5f0=_0x72e9ae[_0xbe3c('0x2d')](_0x1c1b1c[0x0],md5(_0x260199[_0xbe3c('0x1d')]['id']));var _0x4f3c04={'session':_0xaca5f0,'queryInput':{'text':{'text':_0x260199[_0xbe3c('0x2e')][_0xbe3c('0xc')],'languageCode':_0x1c1b1c[0x3]||'en'}}};return _0x72e9ae['detectIntent'](_0x4f3c04)[_0xbe3c('0xe')](function(_0xffe02c){if(_0xffe02c&&_0xffe02c['length']){_0x260199[_0xbe3c('0xc')][_0xbe3c('0x2f')]=_0xffe02c;var _0x189e97=_0xffe02c[0x0];var _0x1d0020=_0x189e97['queryResult'][_0xbe3c('0x30')]&&_0x189e97['queryResult']['diagnosticInfo'][_0xbe3c('0x31')]?_0x189e97[_0xbe3c('0x32')]['diagnosticInfo'][_0xbe3c('0x31')][_0xbe3c('0x33')][_0xbe3c('0x34')]:![];_0x260199[_0xbe3c('0xc')]['DIALOGFLOWV2_ACTION']=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x35')];_0x260199[_0xbe3c('0xc')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x36')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x37')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x30')]&&_0x189e97[_0xbe3c('0x32')]['diagnosticInfo'][_0xbe3c('0x31')]?_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x30')][_0xbe3c('0x31')][_0xbe3c('0x33')]['boolValue']:![];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x38')]=_0x189e97[_0xbe3c('0x32')]['intent'][_0xbe3c('0x39')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x3a')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x3b')]['displayName'];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x3c')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x3b')][_0xbe3c('0x3d')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x3e')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x3f')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x40')]=_0x189e97[_0xbe3c('0x32')]['queryText'];_0x260199['body'][_0xbe3c('0x41')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x42')];_0x21f2b0[_0xbe3c('0x43')]=_0xbe3c('0x2f');_0x21f2b0[_0xbe3c('0x44')]=JSON['stringify'](_0xffe02c);var _0x57cdae=[];for(var _0x2c87c7=0x0;_0x2c87c7<_0xffe02c[_0xbe3c('0x45')];_0x2c87c7++){var _0x54c3f7=_0xffe02c[_0x2c87c7];if(_0x54c3f7&&_0x54c3f7[_0xbe3c('0x32')]&&_0x54c3f7['queryResult'][_0xbe3c('0x46')]){_0x57cdae['push'](createMessage(_0x532c24,_0x2c53ee,_0x21f2b0,_0x54c3f7['queryResult'][_0xbe3c('0x46')]));}}return Promise[_0xbe3c('0x47')](_0x57cdae)[_0xbe3c('0xe')](function(){if(_0x1d0020){_0x3375eb['next']();}else{_0x3375eb[_0xbe3c('0x2a')]();}})[_0xbe3c('0x27')](function(_0x203b8c){logger[_0xbe3c('0x10')](_0xbe3c('0xf'),_0x532c24,JSON[_0xbe3c('0x11')](_0x203b8c));_0x3375eb[_0xbe3c('0x14')]();});}})[_0xbe3c('0x27')](function(_0x3a20b4){logger[_0xbe3c('0x10')](_0xbe3c('0xf'),_0x532c24,_0x3a20b4[_0xbe3c('0x2e')]);_0x3375eb[_0xbe3c('0x14')]();});}}catch(_0x5a4929){logger[_0xbe3c('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x532c24,JSON[_0xbe3c('0x11')](_0x5a4929));_0x3375eb['stop']();}};};
\ No newline at end of file
+var _0xde02=['channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','lodash','dialogflow','md5','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','info','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out'];(function(_0x51b661,_0x566ef8){var _0x5d1971=function(_0x5cc6b8){while(--_0x5cc6b8){_0x51b661['push'](_0x51b661['shift']());}};_0x5d1971(++_0x566ef8);}(_0xde02,0xd5));var _0x2de0=function(_0x5f5468,_0x220315){_0x5f5468=_0x5f5468-0x0;var _0x203e0e=_0xde02[_0x5f5468];return _0x203e0e;};'use strict';var _=require(_0x2de0('0x0'));var dialogflow=require(_0x2de0('0x1'));var md5=require(_0x2de0('0x2'));var moment=require('moment');var Promise=require('bluebird');var logger=require(_0x2de0('0x3'))(_0x2de0('0x4'));var utils=require(_0x2de0('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x2de0('0x6')),'mailMessage':require(_0x2de0('0x7')),'smsMessage':require(_0x2de0('0x8')),'faxMessage':require(_0x2de0('0x9')),'whatsappMessage':require(_0x2de0('0xa'))};function createMessage(_0x4a7cc5,_0x1a658f,_0x182b39,_0x15be24){return new Promise(function(_0x3eee21,_0x203095){var _0x405582=_[_0x2de0('0xb')](_0x182b39);_0x405582[_0x2de0('0xc')]=_0x15be24;return rpc[_0x1a658f+_0x2de0('0xd')][_0x2de0('0xe')](_0x405582)[_0x2de0('0xf')](function(){logger['info'](_0x2de0('0x10'),_0x4a7cc5,_0x405582[_0x2de0('0xc')]);_0x3eee21();})[_0x2de0('0x11')](function(_0x2e7928){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x4a7cc5,JSON[_0x2de0('0x13')](_0x2e7928));_0x203095(_0x2e7928);});});}exports[_0x2de0('0x14')]=function(_0x378881,_0x56a504){return function(_0xbbc4bf){try{if(!_[_0x2de0('0x15')](this[_0x2de0('0x16')][_0x2de0('0x17')])){logger[_0x2de0('0x18')](_0x2de0('0x10'),_0x378881,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0xbbc4bf[_0x2de0('0x19')]();}var _0x12f3c1={'ContactId':this[_0x2de0('0x1a')]['id'],'sentAt':moment()[_0x2de0('0x1b')](_0x2de0('0x1c')),'direction':_0x2de0('0x1d')};if(this[_0x2de0('0x1e')]===_0x2de0('0x1f')||this[_0x2de0('0x1e')]==='whatsapp'){_0x12f3c1[_0x2de0('0x20')]=this['interaction'][_0x2de0('0x20')];}var _0x20d3cf=this[_0x2de0('0x1e')];if(_0x20d3cf===_0x2de0('0x21')){_0x12f3c1[_0x2de0('0x22')]=this[_0x2de0('0x23')]['id'];}else{_0x12f3c1[_[_0x2de0('0x24')](_0x20d3cf)+_0x2de0('0x25')]=this['account']['id'];}_0x12f3c1[_[_0x2de0('0x24')](_0x20d3cf)+_0x2de0('0x26')]=this[_0x2de0('0x16')]['id'];if(this[_0x2de0('0x16')][_0x2de0('0x27')]){var _0x28f95c=_0x56a504[0x4];if(!_[_0x2de0('0x28')](_0x28f95c)){_0x12f3c1[_0x2de0('0xc')]=utils[_0x2de0('0x29')](_0x28f95c,this);return rpc[_0x20d3cf+_0x2de0('0xd')][_0x2de0('0xe')](_0x12f3c1)[_0x2de0('0xf')](function(_0x1495b9){logger[_0x2de0('0x18')](_0x2de0('0x10'),_0x378881,_0x12f3c1[_0x2de0('0xc')]);})[_0x2de0('0x11')](function(_0x5b5bd6){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x378881,JSON[_0x2de0('0x13')](_0x5b5bd6));})[_0x2de0('0x2a')](function(){logger[_0x2de0('0x18')](_0x2de0('0x2b'),_0x378881);_0xbbc4bf[_0x2de0('0x2c')]();});}else{logger[_0x2de0('0x18')](_0x2de0('0x2d'),_0x378881);_0xbbc4bf[_0x2de0('0x2c')]();}}else{var _0x5e81ce=this;var _0x105c5b=_0x56a504[0x2][_0x2de0('0x2e')](/\\n/g,'\x0a');var _0x2a0e92={'credentials':{'private_key':_0x105c5b,'client_email':_0x56a504[0x1]}};var _0x448cf7=new dialogflow[(_0x2de0('0x2f'))](_0x2a0e92);var _0xc94f43=_0x448cf7[_0x2de0('0x30')](_0x56a504[0x0],md5(_0x5e81ce['interaction']['id']));var _0x982303={'session':_0xc94f43,'queryInput':{'text':{'text':_0x5e81ce[_0x2de0('0x31')][_0x2de0('0xc')],'languageCode':_0x56a504[0x3]||'en'}}};return _0x448cf7[_0x2de0('0x32')](_0x982303)[_0x2de0('0xf')](function(_0x37224e){if(_0x37224e&&_0x37224e[_0x2de0('0x33')]){_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x34')]=_0x37224e;var _0x53c639=_0x37224e[0x0];var _0x47d35a=_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]&&_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')][_0x2de0('0x37')]?_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]['fields'][_0x2de0('0x38')][_0x2de0('0x39')]:![];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3a')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x3b')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3c')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x3d')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3e')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]&&_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]['fields']?_0x53c639[_0x2de0('0x35')]['diagnosticInfo']['fields'][_0x2de0('0x38')][_0x2de0('0x39')]:![];_0x5e81ce['body'][_0x2de0('0x3f')]=_0x53c639['queryResult'][_0x2de0('0x40')][_0x2de0('0x41')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x42')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x40')][_0x2de0('0x43')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x44')]=_0x53c639['queryResult'][_0x2de0('0x40')][_0x2de0('0x45')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x46')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x47')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x48')]=_0x53c639['queryResult'][_0x2de0('0x49')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x4a')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x4b')];_0x12f3c1[_0x2de0('0x4c')]=_0x2de0('0x34');_0x12f3c1[_0x2de0('0x4d')]=JSON[_0x2de0('0x13')](_0x37224e);var _0x2d95c8=[];for(var _0x3c01c0=0x0;_0x3c01c0<_0x37224e[_0x2de0('0x33')];_0x3c01c0++){var _0x1b5081=_0x37224e[_0x3c01c0];if(_0x1b5081&&_0x1b5081[_0x2de0('0x35')]&&_0x1b5081['queryResult'][_0x2de0('0x4e')]){_0x2d95c8[_0x2de0('0x4f')](createMessage(_0x378881,_0x20d3cf,_0x12f3c1,_0x1b5081['queryResult'][_0x2de0('0x4e')]));}}return Promise[_0x2de0('0x50')](_0x2d95c8)[_0x2de0('0xf')](function(){if(_0x47d35a){_0xbbc4bf['next']();}else{_0xbbc4bf['stop']();}})['catch'](function(_0x8caec7){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x378881,JSON['stringify'](_0x8caec7));_0xbbc4bf[_0x2de0('0x19')]();});}})[_0x2de0('0x11')](function(_0x169e98){logger['error'](_0x2de0('0x10'),_0x378881,_0x169e98[_0x2de0('0x31')]);_0xbbc4bf[_0x2de0('0x19')]();});}}catch(_0x265021){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x378881,JSON[_0x2de0('0x13')](_0x265021));_0xbbc4bf[_0x2de0('0x2c')]();}};};
\ No newline at end of file
index 1ea04dd..c199e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe318=['[%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','./utils','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','error','[%s][GOTOIF]\x20%s','map','join','stop','priorityFalse','condition','next','findIndex','rules','info'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xe318,0xdd));var _0x8e31=function(_0x2a7ccf,_0x2b6f78){_0x2a7ccf=_0x2a7ccf-0x0;var _0x54dbc0=_0xe318[_0x2a7ccf];return _0x54dbc0;};'use strict';var schema=require(_0x8e31('0x0'));var _=require(_0x8e31('0x1'));var htmlToText=require('html-to-text');var utils=require(_0x8e31('0x2'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0x8e31('0x3'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0x8e31('0x4'),'message':_0x8e31('0x5')},'priorityFalse':{'type':'number','message':_0x8e31('0x6')}});exports[_0x8e31('0x7')]=function(_0x2e60cf,_0x1de043){return function(_0x46afd6){try{var _0x1f485d={'condition':htmlToText[_0x8e31('0x8')](utils[_0x8e31('0x9')](_0x1de043[0x0],this),{'wordwrap':![]})[_0x8e31('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1de043[0x1],'priorityFalse':_0x1de043[0x2]};var _0x38be18=gotoif[_0x8e31('0x0')](_0x1f485d,{'typecast':!![]});if(_0x38be18['length']){logger[_0x8e31('0xb')](_0x8e31('0xc'),_0x2e60cf,_[_0x8e31('0xd')](_0x38be18,'message')[_0x8e31('0xe')](',\x20'));_0x46afd6[_0x8e31('0xf')]();}else{try{var _0x18a36b=eval('('+_0x1f485d['condition']+')');var _0x2970f9=_0x18a36b?_0x1f485d['priorityTrue']:_0x1f485d[_0x8e31('0x10')];logger['info']('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x2e60cf,_0x1f485d[_0x8e31('0x11')],_0x18a36b,_0x2970f9||_0x8e31('0x12'));if(_0x2970f9){var _0x4776a9=_[_0x8e31('0x13')](_0x46afd6[_0x8e31('0x14')](),{'p':_0x2970f9});if(_0x4776a9>=0x0){logger[_0x8e31('0x15')](_0x8e31('0x16'),_0x2e60cf,_0x2970f9||_0x8e31('0x12'),_0x4776a9);_0x46afd6[_0x8e31('0x12')](_0x4776a9);}else{logger[_0x8e31('0x15')](_0x8e31('0x17'),_0x2e60cf,_0x2970f9||_0x8e31('0x12'));_0x46afd6[_0x8e31('0xf')]();}}else{_0x46afd6[_0x8e31('0x12')]();}}catch(_0xb4a0d5){logger['error'](_0x8e31('0x18'),_0x2e60cf,_0xb4a0d5[_0x8e31('0x19')]);_0x46afd6['stop']();}}}catch(_0x4b86b3){logger[_0x8e31('0xb')](_0x8e31('0xc'),_0x2e60cf,JSON[_0x8e31('0x1a')](_0x4b86b3));_0x46afd6['stop']();}};};
\ No newline at end of file
+var _0x26ab=['[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','consequence','fromString','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s'];(function(_0x48f23b,_0x511a32){var _0x372647=function(_0x30d159){while(--_0x30d159){_0x48f23b['push'](_0x48f23b['shift']());}};_0x372647(++_0x511a32);}(_0x26ab,0xd6));var _0xb26a=function(_0x562d77,_0x2cfc5e){_0x562d77=_0x562d77-0x0;var _0x4e9aa7=_0x26ab[_0x562d77];return _0x4e9aa7;};'use strict';var schema=require(_0xb26a('0x0'));var _=require(_0xb26a('0x1'));var htmlToText=require(_0xb26a('0x2'));var utils=require('./utils');var logger=require(_0xb26a('0x3'))(_0xb26a('0x4'));var gotoif=schema({'condition':{'type':_0xb26a('0x5'),'required':!![],'message':_0xb26a('0x6')},'priorityTrue':{'type':_0xb26a('0x7'),'message':_0xb26a('0x8')},'priorityFalse':{'type':_0xb26a('0x7'),'message':'priority\x20false\x20is\x20a\x20number'}});exports[_0xb26a('0x9')]=function(_0x4f208f,_0x4b010f){return function(_0x8180f){try{var _0x59675a={'condition':htmlToText[_0xb26a('0xa')](utils['getMustacheRender'](_0x4b010f[0x0],this),{'wordwrap':![]})[_0xb26a('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4b010f[0x1],'priorityFalse':_0x4b010f[0x2]};var _0x51b1ad=gotoif['validate'](_0x59675a,{'typecast':!![]});if(_0x51b1ad[_0xb26a('0xc')]){logger[_0xb26a('0xd')](_0xb26a('0xe'),_0x4f208f,_[_0xb26a('0xf')](_0x51b1ad,_0xb26a('0x10'))[_0xb26a('0x11')](',\x20'));_0x8180f['stop']();}else{try{var _0x343db5=eval('('+_0x59675a[_0xb26a('0x12')]+')');var _0x680b99=_0x343db5?_0x59675a[_0xb26a('0x13')]:_0x59675a[_0xb26a('0x14')];logger[_0xb26a('0x15')](_0xb26a('0x16'),_0x4f208f,_0x59675a[_0xb26a('0x12')],_0x343db5,_0x680b99||_0xb26a('0x17'));if(_0x680b99){var _0x1f5c0f=_['findIndex'](_0x8180f[_0xb26a('0x18')](),{'p':_0x680b99});if(_0x1f5c0f>=0x0){logger[_0xb26a('0x15')](_0xb26a('0x19'),_0x4f208f,_0x680b99||'next',_0x1f5c0f);_0x8180f[_0xb26a('0x17')](_0x1f5c0f);}else{logger['info'](_0xb26a('0x1a'),_0x4f208f,_0x680b99||_0xb26a('0x17'));_0x8180f[_0xb26a('0x1b')]();}}else{_0x8180f[_0xb26a('0x17')]();}}catch(_0x54cf58){logger[_0xb26a('0xd')](_0xb26a('0x1c'),_0x4f208f,_0x54cf58['message']);_0x8180f[_0xb26a('0x1b')]();}}}catch(_0x5023d0){logger[_0xb26a('0xd')](_0xb26a('0xe'),_0x4f208f,JSON[_0xb26a('0x1d')](_0x5023d0));_0x8180f[_0xb26a('0x1b')]();}};};
\ No newline at end of file
index 590fcea..21fe97d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c4=['[%s][GOTOP]\x20priority\x20%s','priority','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','stringify','../../../../config/logger','routing','consequence','validate','error','[%s][GOTOP]\x20%s','message','join','stop','info'];(function(_0x53305c,_0xebb05e){var _0x269b61=function(_0x15ea80){while(--_0x15ea80){_0x53305c['push'](_0x53305c['shift']());}};_0x269b61(++_0xebb05e);}(_0xb0c4,0x186));var _0x4b0c=function(_0x999b85,_0x1edc2b){_0x999b85=_0x999b85-0x0;var _0x1d7124=_0xb0c4[_0x999b85];return _0x1d7124;};'use strict';var schema=require('validate');var _=require('lodash');var logger=require(_0x4b0c('0x0'))(_0x4b0c('0x1'));var gotop=schema({'priority':{'type':'number','required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x4b0c('0x2')]=function(_0x27803d,_0x312819){return function(_0x5bd86d){try{var _0x491464={'priority':_0x312819[0x0]};var _0x2a3924=gotop[_0x4b0c('0x3')](_0x491464,{'typecast':!![]});if(_0x2a3924['length']){logger[_0x4b0c('0x4')](_0x4b0c('0x5'),_0x27803d,_['map'](_0x2a3924,_0x4b0c('0x6'))[_0x4b0c('0x7')](',\x20'));_0x5bd86d[_0x4b0c('0x8')]();}else{logger[_0x4b0c('0x9')](_0x4b0c('0xa'),_0x27803d,_0x491464['priority']);if(_0x491464[_0x4b0c('0xb')]){var _0x3e7a7f=_['findIndex'](_0x5bd86d[_0x4b0c('0xc')](),{'p':_0x491464['priority']});if(_0x3e7a7f>=0x0){logger[_0x4b0c('0x9')](_0x4b0c('0xd'),_0x27803d,_0x491464[_0x4b0c('0xb')]||_0x4b0c('0xe'),_0x3e7a7f);_0x5bd86d['next'](_0x3e7a7f);}else{logger[_0x4b0c('0x9')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x27803d,_0x491464[_0x4b0c('0xb')]||_0x4b0c('0xe'));_0x5bd86d['stop']();}}else{_0x5bd86d[_0x4b0c('0xe')]();}}}catch(_0xce8ad7){logger[_0x4b0c('0x4')](_0x4b0c('0x5'),_0x27803d,JSON[_0x4b0c('0xf')](_0xce8ad7));_0x5bd86d[_0x4b0c('0x8')]();}};};
\ No newline at end of file
+var _0x5305=['validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error','[%s][GOTOP]\x20%s','map','join','info','[%s][GOTOP]\x20priority\x20%s','priority','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify'];(function(_0x232112,_0x3723be){var _0x464032=function(_0x56283d){while(--_0x56283d){_0x232112['push'](_0x232112['shift']());}};_0x464032(++_0x3723be);}(_0x5305,0x154));var _0x5530=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5305[_0x14add3];return _0x4a174f;};'use strict';var schema=require(_0x5530('0x0'));var _=require(_0x5530('0x1'));var logger=require(_0x5530('0x2'))(_0x5530('0x3'));var gotop=schema({'priority':{'type':_0x5530('0x4'),'required':!![],'message':_0x5530('0x5')}});exports[_0x5530('0x6')]=function(_0x50d50c,_0x175aae){return function(_0x3a8ac5){try{var _0x53603d={'priority':_0x175aae[0x0]};var _0xba2418=gotop[_0x5530('0x0')](_0x53603d,{'typecast':!![]});if(_0xba2418['length']){logger[_0x5530('0x7')](_0x5530('0x8'),_0x50d50c,_[_0x5530('0x9')](_0xba2418,'message')[_0x5530('0xa')](',\x20'));_0x3a8ac5['stop']();}else{logger[_0x5530('0xb')](_0x5530('0xc'),_0x50d50c,_0x53603d['priority']);if(_0x53603d[_0x5530('0xd')]){var _0xe6b043=_['findIndex'](_0x3a8ac5[_0x5530('0xe')](),{'p':_0x53603d[_0x5530('0xd')]});if(_0xe6b043>=0x0){logger[_0x5530('0xb')](_0x5530('0xf'),_0x50d50c,_0x53603d['priority']||_0x5530('0x10'),_0xe6b043);_0x3a8ac5['next'](_0xe6b043);}else{logger[_0x5530('0xb')](_0x5530('0x11'),_0x50d50c,_0x53603d[_0x5530('0xd')]||'next');_0x3a8ac5[_0x5530('0x12')]();}}else{_0x3a8ac5['next']();}}}catch(_0x36ed50){logger[_0x5530('0x7')](_0x5530('0x8'),_0x50d50c,JSON[_0x5530('0x13')](_0x36ed50));_0x3a8ac5[_0x5530('0x12')]();}};};
\ No newline at end of file
index c669dbe..ecabfcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49ce=['channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','then','info','body','error','[%s][MESSAGE]\x20%s','stop','stringify','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','contact'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x49ce,0x116));var _0xe49c=function(_0x4737a0,_0x36520e){_0x4737a0=_0x4737a0-0x0;var _0x4d558b=_0x49ce[_0x4737a0];return _0x4d558b;};'use strict';var _=require('lodash');var utils=require(_0xe49c('0x0'));var logger=require(_0xe49c('0x1'))(_0xe49c('0x2'));var rpc={'chatMessage':require(_0xe49c('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe49c('0x4')),'smsMessage':require(_0xe49c('0x5')),'faxMessage':require(_0xe49c('0x6')),'whatsappMessage':require(_0xe49c('0x7'))};exports[_0xe49c('0x8')]=function(_0x44e4ac,_0x1d5d24){return function(_0x192e0e){try{var _0x19bd1e={'body':utils['getMustacheRender'](_0x1d5d24[0x0],this),'ContactId':this[_0xe49c('0x9')]['id']};if(this[_0xe49c('0xa')]==='chat'){_0x19bd1e[_0xe49c('0xb')]=this[_0xe49c('0xc')]['id'];}else{_0x19bd1e[_[_0xe49c('0xd')](this['channel'])+_0xe49c('0xe')]=this[_0xe49c('0xc')]['id'];}_0x19bd1e[_[_0xe49c('0xd')](this[_0xe49c('0xa')])+_0xe49c('0xf')]=this['interaction']['id'];if(rpc[this['channel']+_0xe49c('0x10')]){return rpc[this[_0xe49c('0xa')]+_0xe49c('0x10')]['create'](_0x19bd1e)[_0xe49c('0x11')](function(_0x418209){logger[_0xe49c('0x12')]('[%s][MESSAGE]\x20%s',_0x44e4ac,_0x19bd1e[_0xe49c('0x13')]);_0x192e0e['next']();})['catch'](function(_0x1dc8c3){logger[_0xe49c('0x14')](_0xe49c('0x15'),_0x44e4ac,JSON['stringify'](_0x1dc8c3));_0x192e0e[_0xe49c('0x16')]();});}}catch(_0x397468){logger[_0xe49c('0x14')](_0xe49c('0x15'),_0x44e4ac,JSON[_0xe49c('0x17')](_0x397468));_0x192e0e['stop']();}};};
\ No newline at end of file
+var _0xfe1b=['../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','consequence','contact','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','interaction','channel','Message','create','then','[%s][MESSAGE]\x20%s','body','next','catch','stringify','stop','error'];(function(_0x1b5bc2,_0x453d84){var _0x1a5382=function(_0x4ffafb){while(--_0x4ffafb){_0x1b5bc2['push'](_0x1b5bc2['shift']());}};_0x1a5382(++_0x453d84);}(_0xfe1b,0x15e));var _0xbfe1=function(_0x329e73,_0x1d8488){_0x329e73=_0x329e73-0x0;var _0x373ef6=_0xfe1b[_0x329e73];return _0x373ef6;};'use strict';var _=require('lodash');var utils=require('./utils');var logger=require(_0xbfe1('0x0'))(_0xbfe1('0x1'));var rpc={'chatMessage':require(_0xbfe1('0x2')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xbfe1('0x3')),'smsMessage':require(_0xbfe1('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xbfe1('0x5')]=function(_0x394b9a,_0x58d0c5){return function(_0x4e5069){try{var _0x26db23={'body':utils['getMustacheRender'](_0x58d0c5[0x0],this),'ContactId':this[_0xbfe1('0x6')]['id']};if(this['channel']===_0xbfe1('0x7')){_0x26db23[_0xbfe1('0x8')]=this[_0xbfe1('0x9')]['id'];}else{_0x26db23[_['upperFirst'](this['channel'])+_0xbfe1('0xa')]=this[_0xbfe1('0x9')]['id'];}_0x26db23[_[_0xbfe1('0xb')](this['channel'])+_0xbfe1('0xc')]=this[_0xbfe1('0xd')]['id'];if(rpc[this[_0xbfe1('0xe')]+_0xbfe1('0xf')]){return rpc[this[_0xbfe1('0xe')]+_0xbfe1('0xf')][_0xbfe1('0x10')](_0x26db23)[_0xbfe1('0x11')](function(_0x470f4e){logger['info'](_0xbfe1('0x12'),_0x394b9a,_0x26db23[_0xbfe1('0x13')]);_0x4e5069[_0xbfe1('0x14')]();})[_0xbfe1('0x15')](function(_0x4cf140){logger['error'](_0xbfe1('0x12'),_0x394b9a,JSON[_0xbfe1('0x16')](_0x4cf140));_0x4e5069[_0xbfe1('0x17')]();});}}catch(_0x1e5f89){logger[_0xbfe1('0x18')](_0xbfe1('0x12'),_0x394b9a,JSON[_0xbfe1('0x16')](_0x1e5f89));_0x4e5069[_0xbfe1('0x17')]();}};};
\ No newline at end of file
index 6d583cc..bf43ed5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a3=['./utils','../../../../config/logger','routing','consequence','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop'];(function(_0x6287b6,_0x5682e7){var _0x5d6be4=function(_0x3e3975){while(--_0x3e3975){_0x6287b6['push'](_0x6287b6['shift']());}};_0x5d6be4(++_0x5682e7);}(_0xa0a3,0x154));var _0x3a0a=function(_0x39dbcc,_0x32c8ef){_0x39dbcc=_0x39dbcc-0x0;var _0x17f470=_0xa0a3[_0x39dbcc];return _0x17f470;};'use strict';var utils=require(_0x3a0a('0x0'));var logger=require(_0x3a0a('0x1'))(_0x3a0a('0x2'));exports[_0x3a0a('0x3')]=function(_0x2a961f,_0x381de6){return function(_0x39c865){try{logger['info'](_0x3a0a('0x4'),_0x2a961f,utils[_0x3a0a('0x5')](_0x381de6[0x0],this));_0x39c865[_0x3a0a('0x6')]();}catch(_0x8d5428){logger[_0x3a0a('0x7')](_0x3a0a('0x4'),_0x2a961f,JSON[_0x3a0a('0x8')](_0x8d5428));_0x39c865[_0x3a0a('0x9')]();}};};
\ No newline at end of file
+var _0xad49=['info','[%s][NOOP]\x20%s','getMustacheRender','next','stringify','stop','./utils','routing','consequence'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0xad49,0x141));var _0x9ad4=function(_0x3326f2,_0x30aedb){_0x3326f2=_0x3326f2-0x0;var _0x2385e8=_0xad49[_0x3326f2];return _0x2385e8;};'use strict';var utils=require(_0x9ad4('0x0'));var logger=require('../../../../config/logger')(_0x9ad4('0x1'));exports[_0x9ad4('0x2')]=function(_0x113c54,_0x1b5252){return function(_0x93f237){try{logger[_0x9ad4('0x3')](_0x9ad4('0x4'),_0x113c54,utils[_0x9ad4('0x5')](_0x1b5252[0x0],this));_0x93f237[_0x9ad4('0x6')]();}catch(_0xcf1f37){logger['error'](_0x9ad4('0x4'),_0x113c54,JSON[_0x9ad4('0x7')](_0xcf1f37));_0x93f237[_0x9ad4('0x8')]();}};};
\ No newline at end of file
index 74fb082..6555152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec1=['[%s][QUEUE]\x20%s','stop','find','Queues','timeout','createQueue','atimeout','qtimeout','rules','end','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','./strategy','redis','defaults','socket.io-emitter','queue_id','account','queue','joinAt','emit','clone','push','capitalize','format','pick','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','upperFirst','interaction','chat','AccountId','info','name','message','QueueReport','catch','[%s][END:QUEUE][NAME:%s]','update','error','update\x20queue\x20report','validate','length'];(function(_0x50a89e,_0x599402){var _0x1a4440=function(_0xa209ad){while(--_0xa209ad){_0x50a89e['push'](_0x50a89e['shift']());}};_0x1a4440(++_0x599402);}(_0x3ec1,0xae));var _0x13ec=function(_0x548003,_0x19cd0e){_0x548003=_0x548003-0x0;var _0x459a44=_0x3ec1[_0x548003];return _0x459a44;};'use strict';var schema=require('validate');var _=require(_0x13ec('0x0'));var util=require(_0x13ec('0x1'));var seqqueue=require(_0x13ec('0x2'));var moment=require('moment');var Redis=require(_0x13ec('0x3'));var config=require(_0x13ec('0x4'));var logger=require(_0x13ec('0x5'))('routing');var strategy=require(_0x13ec('0x6'));config[_0x13ec('0x7')]=_[_0x13ec('0x8')](config[_0x13ec('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x13ec('0x9'))(new Redis(config[_0x13ec('0x7')]));var attributes=['id',_0x13ec('0xa'),_0x13ec('0xb'),_0x13ec('0xc'),'from',_0x13ec('0xd')];function emit(_0x1f4236,_0x7a07bc,_0x4d869f){io['to'](_0x1f4236)[_0x13ec('0xe')](_0x7a07bc,_0x4d869f);}function emitChannelQueueInteraction(_0x584272,_0x125588,_0x263024,_0x2bd063,_0x3b5c99,_0x5ebeef,_0x18a4f4,_0x5cdcfe){var _0x4cd8f8=_[_0x13ec('0xf')](_0x263024);_0x4cd8f8[_0x13ec('0xa')]=_0x5cdcfe;_0x4cd8f8['queue']=_0x125588;_0x4cd8f8[_0x13ec('0xb')]=_0x2bd063;_0x4cd8f8['id']=_0x3b5c99;if(_0x5ebeef){attributes[_0x13ec('0x10')](_[_0x13ec('0x11')](_0x584272)+'InteractionId');_0x18a4f4[util[_0x13ec('0x12')]('%sQueuesWaitingInteractions',_0x584272)][_0x3b5c99]=_[_0x13ec('0x13')](_0x4cd8f8,attributes);}else{delete _0x18a4f4[util[_0x13ec('0x12')](_0x13ec('0x14'),_0x584272)][_0x3b5c99];}emit(util['format'](_0x13ec('0x15'),_0x584272,_0x125588),util['format'](_0x13ec('0x16'),_0x584272,_0x5ebeef?_0x13ec('0x17'):_0x13ec('0x18')),_[_0x13ec('0x13')](_0x4cd8f8,attributes));}var rpc={'openchannelQueueReport':require(_0x13ec('0x19')),'mailQueueReport':require(_0x13ec('0x1a')),'chatQueueReport':require(_0x13ec('0x1b')),'smsQueueReport':require(_0x13ec('0x1c')),'faxQueueReport':require(_0x13ec('0x1d')),'whatsappQueueReport':require(_0x13ec('0x1e'))};var queue=schema({'name':{'type':_0x13ec('0x1f'),'required':!![],'message':_0x13ec('0x20')},'timeout':{'type':_0x13ec('0x21'),'message':_0x13ec('0x22')}});function startRouting(_0x279fe9,_0x1f4610,_0x5baa46,_0x5ebd4d){if(_0x279fe9&&_0x1f4610&&_0x5baa46){_0x1f4610[_0x13ec('0x23')]+=0x1;var _0x4eacc0={'uniqueid':_0x279fe9,'from':_0x5baa46[_0x13ec('0x24')]?_0x5baa46[_0x13ec('0x24')]['from']:'','joinAt':moment()[_0x13ec('0x12')](_0x13ec('0x25')),'ContactId':_0x5baa46[_0x13ec('0x26')]?_0x5baa46[_0x13ec('0x26')]['id']:null,'ListId':_0x5baa46[_0x13ec('0x27')]?_0x5baa46[_0x13ec('0x27')]['id']:null};_0x4eacc0[_['upperFirst'](_0x5baa46[_0x13ec('0x28')])+_0x13ec('0x29')]=_0x1f4610['id']||null;_0x4eacc0[_[_0x13ec('0x2a')](_0x5baa46[_0x13ec('0x28')])+'InteractionId']=_0x5baa46[_0x13ec('0x2b')]?_0x5baa46[_0x13ec('0x2b')]['id']:null;_0x4eacc0[_['upperFirst'](_0x5baa46[_0x13ec('0x28')])+'MessageId']=_0x5baa46['message']?_0x5baa46['message']['id']:null;_0x4eacc0[_[_0x13ec('0x2a')](_0x5baa46['channel'])+(_0x5baa46['channel']!==_0x13ec('0x2c')?_0x13ec('0x2d'):'WebsiteId')]=_0x5baa46[_0x13ec('0xb')]?_0x5baa46[_0x13ec('0xb')]['id']:null;logger[_0x13ec('0x2e')](util['format']('[%s][START:QUEUE][NAME:%s]',_0x279fe9,_0x1f4610[_0x13ec('0x2f')]));emitChannelQueueInteraction(_0x5baa46[_0x13ec('0x28')],_0x1f4610[_0x13ec('0x2f')],_0x4eacc0,_0x5baa46[_0x13ec('0xb')][_0x13ec('0x2f')],_0x5baa46[_0x13ec('0x30')]['id'],!![],_0x5ebd4d,_0x1f4610['id']);if(rpc[_0x5baa46[_0x13ec('0x28')]+'QueueReport']){return rpc[_0x5baa46[_0x13ec('0x28')]+_0x13ec('0x31')]['create'](_0x4eacc0)['catch'](function(_0x3c0b04){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x58cb86,_0x5d320d,_0x3769d7,_0xc172e1){if(_0x58cb86&&_0x5d320d){_0x5d320d[_0x13ec('0x23')]-=0x1;var _0x5c9b44={'leaveAt':moment()[_0x13ec('0x12')](_0x13ec('0x25')),'acceptAt':moment()['format'](_0x13ec('0x25')),'reason':'accepted'};logger[_0x13ec('0x2e')](util[_0x13ec('0x12')]('[%s][STOP:QUEUE][NAME:%s]',_0x58cb86,_0x5d320d[_0x13ec('0x2f')]));emitChannelQueueInteraction(_0x3769d7[_0x13ec('0x28')],_0x5d320d[_0x13ec('0x2f')],_0x3769d7[_0x13ec('0x24')],_0x3769d7['account'][_0x13ec('0x2f')],_0x3769d7[_0x13ec('0x30')]['id'],![],_0xc172e1,_0x5d320d['id']);if(rpc[_0x3769d7[_0x13ec('0x28')]+_0x13ec('0x31')]){return rpc[_0x3769d7[_0x13ec('0x28')]+_0x13ec('0x31')]['update'](_0x58cb86,_0x5c9b44)[_0x13ec('0x32')](function(_0x20c6c9){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x351b20,_0x2a6f0b,_0x3b1916,_0x414ea8){if(_0x351b20&&_0x2a6f0b){_0x2a6f0b['waiting']-=0x1;var _0x4155b4={'leaveAt':moment()['format'](_0x13ec('0x25')),'exitAt':moment()['format'](_0x13ec('0x25')),'reason':'timeout'};logger[_0x13ec('0x2e')](util[_0x13ec('0x12')](_0x13ec('0x33'),_0x351b20,_0x2a6f0b[_0x13ec('0x2f')]));emitChannelQueueInteraction(_0x3b1916['channel'],_0x2a6f0b['name'],_0x3b1916[_0x13ec('0x24')],_0x3b1916[_0x13ec('0xb')][_0x13ec('0x2f')],_0x3b1916[_0x13ec('0x30')]['id'],![],_0x414ea8);if(rpc[_0x3b1916[_0x13ec('0x28')]+_0x13ec('0x31')]){return rpc[_0x3b1916[_0x13ec('0x28')]+'QueueReport'][_0x13ec('0x34')](_0x351b20,_0x4155b4)[_0x13ec('0x32')](function(_0x22055e){logger[_0x13ec('0x35')](_0x13ec('0x36'));});}}}function handleFindQueue(_0x442f9f){return function(_0x565ad9){return _0x565ad9['name']['toLowerCase']()===_0x442f9f['toLowerCase']();};}exports['consequence']=function(_0x22dbba,_0x4b2454,_0x268fce,_0x5e8a95){return function(_0x360651){try{var _0x271bfa={'name':_0x4b2454[0x0],'timeout':_0x4b2454[0x1]};var _0x525cb6=queue[_0x13ec('0x37')](_0x271bfa,{'typecast':!![]});if(_0x525cb6[_0x13ec('0x38')]){logger[_0x13ec('0x35')](_0x13ec('0x39'),_0x22dbba,_['map'](_0x525cb6,_0x13ec('0x30'))['join'](',\x20'));_0x360651[_0x13ec('0x3a')]();}else{var _0xd1dc04=_[_0x13ec('0x3b')](_0x268fce[_0x5e8a95[_0x13ec('0x28')]+_0x13ec('0x3c')],handleFindQueue(_0x271bfa[_0x13ec('0x2f')]));if(_0xd1dc04){startRouting(_0x22dbba,_0xd1dc04,_0x5e8a95,_0x268fce);var _0x1f6383=(_0xd1dc04[_0x13ec('0x3d')]||0xa)*0x3e8;var _0x34efb1=(_0x271bfa[_0x13ec('0x3d')]||0x14)*0x3e8;var _0x406d87;if(_0x1f6383>_0x34efb1){_0x34efb1=_0x1f6383;}var _0x4a9fd0=seqqueue[_0x13ec('0x3e')](_0x1f6383);_0x4a9fd0['id']=_0x22dbba;_0x4a9fd0[_0x13ec('0x3f')]=_0x1f6383;_0x4a9fd0[_0x13ec('0x40')]=_0x34efb1;_0x4a9fd0['channel']=_0x5e8a95[_0x13ec('0x28')];_0x268fce[_0x13ec('0x41')][_0x22dbba]['on'](_0x13ec('0x42'),function(){logger[_0x13ec('0x2e')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x22dbba);stopRouting(_0x22dbba,_0xd1dc04,_0x5e8a95,_0x268fce);clearTimeout(_0x406d87);_0x406d87=undefined;_0x4a9fd0[_0x13ec('0x43')](!![]);if(_0x268fce['rules'][_0x22dbba]){delete _0x268fce[_0x13ec('0x41')][_0x22dbba];}_0x360651['stop']();});_0x268fce[_0x13ec('0x41')][_0x22dbba]['on'](_0x13ec('0x44'),function(){if(_0x268fce[_0x13ec('0x41')][_0x22dbba]){delete _0x268fce[_0x13ec('0x41')][_0x22dbba];}});_0x406d87=setTimeout(function(){logger[_0x13ec('0x2e')](_0x13ec('0x45'),_0x22dbba);endRouting(_0x22dbba,_0xd1dc04,_0x5e8a95,_0x268fce);clearTimeout(_0x406d87);_0x4a9fd0['close'](!![]);_0x360651[_0x13ec('0x46')]();},_0x34efb1);switch(_0xd1dc04[_0x13ec('0x47')]){case _0x13ec('0x48'):strategy[_0x13ec('0x48')](_0x4a9fd0,_0xd1dc04,_0x268fce,_0x5e8a95);break;default:strategy[_0x13ec('0x49')](_0x4a9fd0,_0xd1dc04,_0x268fce,_0x5e8a95);}}else{logger[_0x13ec('0x35')](_0x13ec('0x4a'),_0x22dbba,_0x271bfa[_0x13ec('0x2f')]);_0x360651[_0x13ec('0x3a')]();}}}catch(_0x595938){console[_0x13ec('0x4b')](_0x595938);logger[_0x13ec('0x35')](_0x13ec('0x39'),_0x22dbba,_0x595938[_0x13ec('0x4c')]);_0x360651['stop']();}};};
\ No newline at end of file
+var _0x68f1=['capitalize','InteractionId','format','%sQueuesWaitingInteractions','%s:queue:%s','save','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','from','contact','list','upperFirst','channel','QueueId','interaction','MessageId','message','chat','WebsiteId','account','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','timeout','[%s][END:QUEUE][NAME:%s]','update','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','qtimeout','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','localhost','socket.io-emitter','queue_id','queue','joinAt','emit','clone'];(function(_0x4e1bd3,_0xda464d){var _0x234e83=function(_0x144f4d){while(--_0x144f4d){_0x4e1bd3['push'](_0x4e1bd3['shift']());}};_0x234e83(++_0xda464d);}(_0x68f1,0x1d6));var _0x168f=function(_0x3bc828,_0x292b02){_0x3bc828=_0x3bc828-0x0;var _0x47feab=_0x68f1[_0x3bc828];return _0x47feab;};'use strict';var schema=require(_0x168f('0x0'));var _=require(_0x168f('0x1'));var util=require('util');var seqqueue=require(_0x168f('0x2'));var moment=require(_0x168f('0x3'));var Redis=require('ioredis');var config=require(_0x168f('0x4'));var logger=require(_0x168f('0x5'))(_0x168f('0x6'));var strategy=require(_0x168f('0x7'));config[_0x168f('0x8')]=_['defaults'](config[_0x168f('0x8')],{'host':_0x168f('0x9'),'port':0x18eb});var io=require(_0x168f('0xa'))(new Redis(config[_0x168f('0x8')]));var attributes=['id',_0x168f('0xb'),'account',_0x168f('0xc'),'from',_0x168f('0xd')];function emit(_0x7dfe28,_0x23af33,_0x3ec8e8){io['to'](_0x7dfe28)[_0x168f('0xe')](_0x23af33,_0x3ec8e8);}function emitChannelQueueInteraction(_0x54b5d2,_0x94dab2,_0x18d3ae,_0x300623,_0x45b62f,_0x41d9ab,_0x5e1160,_0x3b83b4){var _0x5497a6=_[_0x168f('0xf')](_0x18d3ae);_0x5497a6[_0x168f('0xb')]=_0x3b83b4;_0x5497a6[_0x168f('0xc')]=_0x94dab2;_0x5497a6['account']=_0x300623;_0x5497a6['id']=_0x45b62f;if(_0x41d9ab){attributes['push'](_[_0x168f('0x10')](_0x54b5d2)+_0x168f('0x11'));_0x5e1160[util[_0x168f('0x12')](_0x168f('0x13'),_0x54b5d2)][_0x45b62f]=_['pick'](_0x5497a6,attributes);}else{delete _0x5e1160[util[_0x168f('0x12')]('%sQueuesWaitingInteractions',_0x54b5d2)][_0x45b62f];}emit(util[_0x168f('0x12')](_0x168f('0x14'),_0x54b5d2,_0x94dab2),util[_0x168f('0x12')]('%s_queue_waiting_interaction:%s',_0x54b5d2,_0x41d9ab?_0x168f('0x15'):'remove'),_['pick'](_0x5497a6,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x168f('0x16')),'chatQueueReport':require(_0x168f('0x17')),'smsQueueReport':require(_0x168f('0x18')),'faxQueueReport':require(_0x168f('0x19')),'whatsappQueueReport':require(_0x168f('0x1a'))};var queue=schema({'name':{'type':_0x168f('0x1b'),'required':!![],'message':_0x168f('0x1c')},'timeout':{'type':_0x168f('0x1d'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x592de0,_0x4a1ab4,_0x1e7210,_0x3d90e4){if(_0x592de0&&_0x4a1ab4&&_0x1e7210){_0x4a1ab4[_0x168f('0x1e')]+=0x1;var _0x4ac5f5={'uniqueid':_0x592de0,'from':_0x1e7210[_0x168f('0x1f')]?_0x1e7210[_0x168f('0x1f')][_0x168f('0x20')]:'','joinAt':moment()[_0x168f('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x1e7210[_0x168f('0x21')]?_0x1e7210[_0x168f('0x21')]['id']:null,'ListId':_0x1e7210[_0x168f('0x22')]?_0x1e7210[_0x168f('0x22')]['id']:null};_0x4ac5f5[_[_0x168f('0x23')](_0x1e7210[_0x168f('0x24')])+_0x168f('0x25')]=_0x4a1ab4['id']||null;_0x4ac5f5[_[_0x168f('0x23')](_0x1e7210[_0x168f('0x24')])+_0x168f('0x11')]=_0x1e7210[_0x168f('0x26')]?_0x1e7210[_0x168f('0x26')]['id']:null;_0x4ac5f5[_[_0x168f('0x23')](_0x1e7210['channel'])+_0x168f('0x27')]=_0x1e7210[_0x168f('0x28')]?_0x1e7210[_0x168f('0x28')]['id']:null;_0x4ac5f5[_[_0x168f('0x23')](_0x1e7210[_0x168f('0x24')])+(_0x1e7210['channel']!==_0x168f('0x29')?'AccountId':_0x168f('0x2a'))]=_0x1e7210['account']?_0x1e7210[_0x168f('0x2b')]['id']:null;logger[_0x168f('0x2c')](util[_0x168f('0x12')](_0x168f('0x2d'),_0x592de0,_0x4a1ab4[_0x168f('0x2e')]));emitChannelQueueInteraction(_0x1e7210['channel'],_0x4a1ab4[_0x168f('0x2e')],_0x4ac5f5,_0x1e7210[_0x168f('0x2b')][_0x168f('0x2e')],_0x1e7210[_0x168f('0x28')]['id'],!![],_0x3d90e4,_0x4a1ab4['id']);if(rpc[_0x1e7210['channel']+_0x168f('0x2f')]){return rpc[_0x1e7210[_0x168f('0x24')]+_0x168f('0x2f')][_0x168f('0x30')](_0x4ac5f5)[_0x168f('0x31')](function(_0x1482a7){logger[_0x168f('0x32')](_0x168f('0x33'));});}}}function stopRouting(_0x2f957b,_0x403ebf,_0xf0006c,_0xc620dc){if(_0x2f957b&&_0x403ebf){_0x403ebf[_0x168f('0x1e')]-=0x1;var _0xe2b088={'leaveAt':moment()[_0x168f('0x12')](_0x168f('0x34')),'acceptAt':moment()[_0x168f('0x12')](_0x168f('0x34')),'reason':_0x168f('0x35')};logger[_0x168f('0x2c')](util[_0x168f('0x12')]('[%s][STOP:QUEUE][NAME:%s]',_0x2f957b,_0x403ebf[_0x168f('0x2e')]));emitChannelQueueInteraction(_0xf0006c[_0x168f('0x24')],_0x403ebf['name'],_0xf0006c[_0x168f('0x1f')],_0xf0006c[_0x168f('0x2b')][_0x168f('0x2e')],_0xf0006c['message']['id'],![],_0xc620dc,_0x403ebf['id']);if(rpc[_0xf0006c[_0x168f('0x24')]+_0x168f('0x2f')]){return rpc[_0xf0006c[_0x168f('0x24')]+_0x168f('0x2f')]['update'](_0x2f957b,_0xe2b088)[_0x168f('0x31')](function(_0xd1f770){logger[_0x168f('0x32')]('update\x20queue\x20report');});}}}function endRouting(_0x173e14,_0x98de6b,_0x3be074,_0x55c6b5){if(_0x173e14&&_0x98de6b){_0x98de6b['waiting']-=0x1;var _0x18be29={'leaveAt':moment()[_0x168f('0x12')](_0x168f('0x34')),'exitAt':moment()[_0x168f('0x12')](_0x168f('0x34')),'reason':_0x168f('0x36')};logger[_0x168f('0x2c')](util['format'](_0x168f('0x37'),_0x173e14,_0x98de6b['name']));emitChannelQueueInteraction(_0x3be074[_0x168f('0x24')],_0x98de6b[_0x168f('0x2e')],_0x3be074[_0x168f('0x1f')],_0x3be074[_0x168f('0x2b')][_0x168f('0x2e')],_0x3be074['message']['id'],![],_0x55c6b5);if(rpc[_0x3be074[_0x168f('0x24')]+_0x168f('0x2f')]){return rpc[_0x3be074['channel']+_0x168f('0x2f')][_0x168f('0x38')](_0x173e14,_0x18be29)[_0x168f('0x31')](function(_0x234daa){logger[_0x168f('0x32')](_0x168f('0x39'));});}}}function handleFindQueue(_0x5dec94){return function(_0xb0dfd){return _0xb0dfd[_0x168f('0x2e')][_0x168f('0x3a')]()===_0x5dec94[_0x168f('0x3a')]();};}exports[_0x168f('0x3b')]=function(_0x23c30b,_0x528445,_0xb00030,_0x54444d){return function(_0x310f17){try{var _0x4870ca={'name':_0x528445[0x0],'timeout':_0x528445[0x1]};var _0x53172e=queue[_0x168f('0x0')](_0x4870ca,{'typecast':!![]});if(_0x53172e[_0x168f('0x3c')]){logger[_0x168f('0x32')](_0x168f('0x3d'),_0x23c30b,_[_0x168f('0x3e')](_0x53172e,_0x168f('0x28'))[_0x168f('0x3f')](',\x20'));_0x310f17[_0x168f('0x40')]();}else{var _0x256ac0=_[_0x168f('0x41')](_0xb00030[_0x54444d[_0x168f('0x24')]+_0x168f('0x42')],handleFindQueue(_0x4870ca['name']));if(_0x256ac0){startRouting(_0x23c30b,_0x256ac0,_0x54444d,_0xb00030);var _0x479051=(_0x256ac0[_0x168f('0x36')]||0xa)*0x3e8;var _0x5f2ad5=(_0x4870ca[_0x168f('0x36')]||0x14)*0x3e8;var _0x478dfe;if(_0x479051>_0x5f2ad5){_0x5f2ad5=_0x479051;}var _0x56bb35=seqqueue[_0x168f('0x43')](_0x479051);_0x56bb35['id']=_0x23c30b;_0x56bb35['atimeout']=_0x479051;_0x56bb35[_0x168f('0x44')]=_0x5f2ad5;_0x56bb35[_0x168f('0x24')]=_0x54444d[_0x168f('0x24')];_0xb00030['rules'][_0x23c30b]['on']('end',function(){logger[_0x168f('0x2c')](_0x168f('0x45'),_0x23c30b);stopRouting(_0x23c30b,_0x256ac0,_0x54444d,_0xb00030);clearTimeout(_0x478dfe);_0x478dfe=undefined;_0x56bb35[_0x168f('0x46')](!![]);if(_0xb00030[_0x168f('0x47')][_0x23c30b]){delete _0xb00030[_0x168f('0x47')][_0x23c30b];}_0x310f17['stop']();});_0xb00030['rules'][_0x23c30b]['on'](_0x168f('0x48'),function(){if(_0xb00030['rules'][_0x23c30b]){delete _0xb00030['rules'][_0x23c30b];}});_0x478dfe=setTimeout(function(){logger[_0x168f('0x2c')](_0x168f('0x49'),_0x23c30b);endRouting(_0x23c30b,_0x256ac0,_0x54444d,_0xb00030);clearTimeout(_0x478dfe);_0x56bb35[_0x168f('0x46')](!![]);_0x310f17[_0x168f('0x4a')]();},_0x5f2ad5);switch(_0x256ac0[_0x168f('0x4b')]){case _0x168f('0x4c'):strategy['rrmemory'](_0x56bb35,_0x256ac0,_0xb00030,_0x54444d);break;default:strategy[_0x168f('0x4d')](_0x56bb35,_0x256ac0,_0xb00030,_0x54444d);}}else{logger['error'](_0x168f('0x4e'),_0x23c30b,_0x4870ca['name']);_0x310f17[_0x168f('0x40')]();}}}catch(_0x365be6){console[_0x168f('0x4f')](_0x365be6);logger['error'](_0x168f('0x3d'),_0x23c30b,_0x365be6[_0x168f('0x50')]);_0x310f17[_0x168f('0x40')]();}};};
\ No newline at end of file
index e466d8e..8ff3217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac9d=['[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busyQueue','saveWaitingNotification','forcedOwnership',':FORCED','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busy','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','agent','realtime','squeue','push','handleRun','handleTimeout','timeout','bind','drained','handleDrained','prototype'];(function(_0x1c5917,_0x7ae318){var _0x4cda8a=function(_0x4490ee){while(--_0x4490ee){_0x1c5917['push'](_0x1c5917['shift']());}};_0x4cda8a(++_0x7ae318);}(_0xac9d,0x14d));var _0xdac9=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0xac9d[_0x46a671];return _0x526d75;};'use strict';var _=require(_0xdac9('0x0'));var uuid=require(_0xdac9('0x1'));var util=require(_0xdac9('0x2'));var logger=require(_0xdac9('0x3'))(_0xdac9('0x4'));var Agent=function(_0x27eb7c,_0x25d1b3,_0x1b967e,_0x51a5d7){this[_0xdac9('0x5')]=uuid['v4']();this['squeue']=_0x27eb7c;this[_0xdac9('0x6')]=_0x25d1b3;this[_0xdac9('0x7')]=_0x1b967e;this[_0xdac9('0x4')]=_0x51a5d7;this[_0xdac9('0x8')][_0xdac9('0x9')](this[_0xdac9('0xa')]['bind'](this),this[_0xdac9('0xb')]['bind'](this));this[_0xdac9('0x8')]['on'](_0xdac9('0xc'),this[_0xdac9('0xb')][_0xdac9('0xd')](this));this[_0xdac9('0x8')]['on'](_0xdac9('0xe'),this[_0xdac9('0xf')][_0xdac9('0xd')](this));};Agent[_0xdac9('0x10')]['push']=function(){this[_0xdac9('0x8')][_0xdac9('0x9')](this['handleRun'][_0xdac9('0xd')](this),this[_0xdac9('0xb')][_0xdac9('0xd')](this));};Agent['prototype'][_0xdac9('0xf')]=function(){this[_0xdac9('0xb')](!![]);};Agent[_0xdac9('0x10')]['handleRun']=function(){logger['debug'](_0xdac9('0x11'),this[_0xdac9('0x8')]['id'],this['agent']['id']);if(_[_0xdac9('0x12')](this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']])){logger[_0xdac9('0x14')](_0xdac9('0x15'),this[_0xdac9('0x8')]['id'],this[_0xdac9('0x6')]['id']);setTimeout(this['push'][_0xdac9('0xd')](this),0x3e8);}else{if(this[_0xdac9('0x4')]['forcedOwnership']||util[_0xdac9('0x16')](this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this['agent']['id']],this['squeue'][_0xdac9('0x17')],![])){this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']]['busy']=!![];this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']][_0xdac9('0x18')]=undefined;util[_0xdac9('0x19')](this[_0xdac9('0x7')],this[_0xdac9('0x4')],this[_0xdac9('0x6')],this[_0xdac9('0x8')][_0xdac9('0x17')]);util['showNotification'](this[_0xdac9('0x5')],this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this['agent']['id']],null,this[_0xdac9('0x4')]);util['writeLog'](this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')]['agents'][this[_0xdac9('0x6')]['id']],'RINGING'+(this[_0xdac9('0x4')][_0xdac9('0x1a')]?_0xdac9('0x1b'):''));}else{logger[_0xdac9('0x14')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this['squeue']['id'],this[_0xdac9('0x6')]['id']);setTimeout(this[_0xdac9('0x9')]['bind'](this),0x3e8);}}};Agent['prototype'][_0xdac9('0xb')]=function(_0x3505c5){if(_[_0xdac9('0x12')](this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']])){return logger[_0xdac9('0x14')](_0xdac9('0x15'),this[_0xdac9('0x8')]['id'],this[_0xdac9('0x6')]['id']);}else{logger[_0xdac9('0x14')](_0xdac9('0x1c'),this[_0xdac9('0x8')]['id'],this[_0xdac9('0x6')]['id']);util[_0xdac9('0x1d')](this[_0xdac9('0x5')],this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']],null,this[_0xdac9('0x4')]);this['realtime']['agents'][this[_0xdac9('0x6')]['id']][_0xdac9('0x1e')]=![];this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']]['busyQueue']=undefined;util[_0xdac9('0x1f')](this['realtime'],this[_0xdac9('0x4')],this[_0xdac9('0x6')],this['squeue'][_0xdac9('0x17')]);util['writeLog'](this['squeue']['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']],_0x3505c5?_0xdac9('0x20'):_0xdac9('0x21'));}if(!_0x3505c5){setTimeout(this[_0xdac9('0x9')]['bind'](this),0x3e8);}};function agent(_0x265975,_0x22ca1d,_0x5608c2,_0x244d1f){return new Agent(_0x265975,_0x22ca1d,_0x5608c2,_0x244d1f);}module[_0xdac9('0x22')]=agent;
\ No newline at end of file
+var _0x032e=['hideNotification','removeWaitingNotification','STOP','exports','lodash','./util','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','debug','[%s][AGENT]\x20try\x20with\x20%s','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','busy','busyQueue','saveWaitingNotification','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s'];(function(_0x317e4d,_0x14206e){var _0x34c38f=function(_0x4b12d1){while(--_0x4b12d1){_0x317e4d['push'](_0x317e4d['shift']());}};_0x34c38f(++_0x14206e);}(_0x032e,0x124));var _0xe032=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x032e[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0xe032('0x0'));var uuid=require('uuid');var util=require(_0xe032('0x1'));var logger=require(_0xe032('0x2'))('routing');var Agent=function(_0x4afba2,_0x45ab5b,_0x2ce001,_0x2f44f6){this[_0xe032('0x3')]=uuid['v4']();this[_0xe032('0x4')]=_0x4afba2;this[_0xe032('0x5')]=_0x45ab5b;this[_0xe032('0x6')]=_0x2ce001;this[_0xe032('0x7')]=_0x2f44f6;this[_0xe032('0x4')][_0xe032('0x8')](this[_0xe032('0x9')][_0xe032('0xa')](this),this[_0xe032('0xb')][_0xe032('0xa')](this));this[_0xe032('0x4')]['on'](_0xe032('0xc'),this[_0xe032('0xb')][_0xe032('0xa')](this));this['squeue']['on'](_0xe032('0xd'),this[_0xe032('0xe')][_0xe032('0xa')](this));};Agent[_0xe032('0xf')][_0xe032('0x8')]=function(){this[_0xe032('0x4')][_0xe032('0x8')](this['handleRun'][_0xe032('0xa')](this),this[_0xe032('0xb')][_0xe032('0xa')](this));};Agent[_0xe032('0xf')]['handleDrained']=function(){this[_0xe032('0xb')](!![]);};Agent[_0xe032('0xf')][_0xe032('0x9')]=function(){logger[_0xe032('0x10')](_0xe032('0x11'),this[_0xe032('0x4')]['id'],this[_0xe032('0x5')]['id']);if(_['isNil'](this[_0xe032('0x6')][_0xe032('0x12')][this[_0xe032('0x5')]['id']])){logger[_0xe032('0x10')](_0xe032('0x13'),this[_0xe032('0x4')]['id'],this['agent']['id']);setTimeout(this[_0xe032('0x8')][_0xe032('0xa')](this),0x3e8);}else{if(this[_0xe032('0x7')][_0xe032('0x14')]||util[_0xe032('0x15')](this['squeue']['id'],this['realtime']['agents'][this[_0xe032('0x5')]['id']],this['squeue'][_0xe032('0x16')],![])){this[_0xe032('0x6')][_0xe032('0x12')][this[_0xe032('0x5')]['id']][_0xe032('0x17')]=!![];this[_0xe032('0x6')][_0xe032('0x12')][this['agent']['id']][_0xe032('0x18')]=undefined;util[_0xe032('0x19')](this[_0xe032('0x6')],this[_0xe032('0x7')],this[_0xe032('0x5')],this[_0xe032('0x4')][_0xe032('0x16')]);util[_0xe032('0x1a')](this['notificationId'],this['squeue']['id'],this['realtime'][_0xe032('0x12')][this[_0xe032('0x5')]['id']],null,this[_0xe032('0x7')]);util[_0xe032('0x1b')](this[_0xe032('0x4')]['id'],this[_0xe032('0x6')][_0xe032('0x12')][this[_0xe032('0x5')]['id']],_0xe032('0x1c')+(this[_0xe032('0x7')]['forcedOwnership']?_0xe032('0x1d'):''));}else{logger[_0xe032('0x10')](_0xe032('0x1e'),this[_0xe032('0x4')]['id'],this['agent']['id']);setTimeout(this['push'][_0xe032('0xa')](this),0x3e8);}}};Agent[_0xe032('0xf')][_0xe032('0xb')]=function(_0xae116e){if(_['isNil'](this['realtime']['agents'][this[_0xe032('0x5')]['id']])){return logger[_0xe032('0x10')](_0xe032('0x13'),this[_0xe032('0x4')]['id'],this['agent']['id']);}else{logger[_0xe032('0x10')](_0xe032('0x1f'),this[_0xe032('0x4')]['id'],this[_0xe032('0x5')]['id']);util[_0xe032('0x20')](this['notificationId'],this[_0xe032('0x4')]['id'],this[_0xe032('0x6')][_0xe032('0x12')][this[_0xe032('0x5')]['id']],null,this['routing']);this[_0xe032('0x6')]['agents'][this[_0xe032('0x5')]['id']]['busy']=![];this[_0xe032('0x6')]['agents'][this[_0xe032('0x5')]['id']]['busyQueue']=undefined;util[_0xe032('0x21')](this[_0xe032('0x6')],this['routing'],this[_0xe032('0x5')],this[_0xe032('0x4')][_0xe032('0x16')]);util[_0xe032('0x1b')](this['squeue']['id'],this[_0xe032('0x6')]['agents'][this[_0xe032('0x5')]['id']],_0xae116e?_0xe032('0x22'):'TIMEOUT');}if(!_0xae116e){setTimeout(this[_0xe032('0x8')][_0xe032('0xa')](this),0x3e8);}};function agent(_0x4a4447,_0x3efdef,_0x2cfc49,_0x3cc437){return new Agent(_0x4a4447,_0x3efdef,_0x2cfc49,_0x3cc437);}module[_0xe032('0x23')]=agent;
\ No newline at end of file
index 440e00b..8554f1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ad8=['prototype','push','handleDrained','isNil','Agents','length','agents','channel','busyQueue','name','showNotification','debug','[%s][QUEUE]\x20EMPTY','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','writeLog','TIMEOUT','busy','removeWaitingNotification','exports','lodash','uuid','./util','routing','notificationId','squeue','queue','realtime','handleRun','handleTimeout','bind','timeout','drained'];(function(_0x58d1d6,_0x17ed49){var _0x187afd=function(_0x56af82){while(--_0x56af82){_0x58d1d6['push'](_0x58d1d6['shift']());}};_0x187afd(++_0x17ed49);}(_0x7ad8,0x98));var _0x87ad=function(_0x3747ae,_0x408e61){_0x3747ae=_0x3747ae-0x0;var _0x339035=_0x7ad8[_0x3747ae];return _0x339035;};'use strict';var _=require(_0x87ad('0x0'));var uuid=require(_0x87ad('0x1'));var util=require(_0x87ad('0x2'));var logger=require('../../../../../config/logger')(_0x87ad('0x3'));var Beepall=function(_0x5d8ab1,_0x54a145,_0x44c6a2,_0x204f76){this[_0x87ad('0x4')]=uuid['v4']();this[_0x87ad('0x5')]=_0x5d8ab1;this[_0x87ad('0x6')]=_0x54a145;this[_0x87ad('0x7')]=_0x44c6a2;this[_0x87ad('0x3')]=_0x204f76;this['squeue']['push'](this[_0x87ad('0x8')]['bind'](this),this[_0x87ad('0x9')][_0x87ad('0xa')](this));this[_0x87ad('0x5')]['on'](_0x87ad('0xb'),this[_0x87ad('0x9')][_0x87ad('0xa')](this));this[_0x87ad('0x5')]['on'](_0x87ad('0xc'),this['handleDrained'][_0x87ad('0xa')](this));};Beepall[_0x87ad('0xd')][_0x87ad('0xe')]=function(){this[_0x87ad('0x5')]['push'](this['handleRun'][_0x87ad('0xa')](this),this['handleTimeout'][_0x87ad('0xa')](this));};Beepall[_0x87ad('0xd')][_0x87ad('0xf')]=function(){this[_0x87ad('0x9')](!![]);};Beepall[_0x87ad('0xd')]['handleRun']=function(){var _0x4242ab=!![];if(!_[_0x87ad('0x10')](this[_0x87ad('0x6')])&&!_[_0x87ad('0x10')](this[_0x87ad('0x6')][_0x87ad('0x11')])&&this[_0x87ad('0x6')][_0x87ad('0x11')]['length']>0x0){for(var _0x1da879=0x0,_0xb60591;_0x1da879<this[_0x87ad('0x6')]['Agents'][_0x87ad('0x12')];_0x1da879+=0x1){_0xb60591=this[_0x87ad('0x6')][_0x87ad('0x11')][_0x1da879]['id'];if(_[_0x87ad('0x10')](this['realtime']['agents'][_0xb60591])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x87ad('0x5')]['id'],_0xb60591);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0xb60591],this[_0x87ad('0x5')][_0x87ad('0x14')],!![])){_0x4242ab=![];util['writeLog'](this[_0x87ad('0x5')]['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0xb60591],'RINGING');this['realtime'][_0x87ad('0x13')][_0xb60591]['busy']=!![];this[_0x87ad('0x7')][_0x87ad('0x13')][_0xb60591][_0x87ad('0x15')]=this[_0x87ad('0x6')][_0x87ad('0x16')];util['saveWaitingNotification'](this[_0x87ad('0x7')],this[_0x87ad('0x3')],this['queue'][_0x87ad('0x11')][_0x1da879],this['squeue'][_0x87ad('0x14')]);util[_0x87ad('0x17')](this[_0x87ad('0x4')],this['squeue']['id'],this['realtime']['agents'][_0xb60591],this[_0x87ad('0x6')],this[_0x87ad('0x3')]);}}}if(_0x4242ab){logger[_0x87ad('0x18')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x87ad('0x5')]['id']);setTimeout(this[_0x87ad('0xe')][_0x87ad('0xa')](this),0x3e8);}}else{logger[_0x87ad('0x18')](_0x87ad('0x19'),this['squeue']['id']);setTimeout(this[_0x87ad('0xe')][_0x87ad('0xa')](this),0x3e8);}};Beepall[_0x87ad('0xd')][_0x87ad('0x9')]=function(_0x1959c0){if(!_['isNil'](this[_0x87ad('0x6')])&&!_[_0x87ad('0x10')](this[_0x87ad('0x6')]['Agents'])){for(var _0x345dbd=0x0,_0x1f0635;_0x345dbd<this[_0x87ad('0x6')][_0x87ad('0x11')][_0x87ad('0x12')];_0x345dbd+=0x1){_0x1f0635=this['queue'][_0x87ad('0x11')][_0x345dbd]['id'];if(_[_0x87ad('0x10')](this['realtime'][_0x87ad('0x13')][_0x1f0635])){logger[_0x87ad('0x18')](_0x87ad('0x1a'),this['squeue']['id'],_0x1f0635);}else{util[_0x87ad('0x1b')](this[_0x87ad('0x4')],this[_0x87ad('0x5')]['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635],this[_0x87ad('0x6')],this[_0x87ad('0x3')]);util[_0x87ad('0x1c')](this[_0x87ad('0x5')]['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635],_0x1959c0?'STOP':_0x87ad('0x1d'));this['realtime'][_0x87ad('0x13')][_0x1f0635][_0x87ad('0x1e')]=![];this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635][_0x87ad('0x15')]=undefined;util[_0x87ad('0x1f')](this[_0x87ad('0x7')],this[_0x87ad('0x3')],this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635],this['squeue'][_0x87ad('0x14')]);}}}if(!_0x1959c0){setTimeout(this['push'][_0x87ad('0xa')](this),0x3e8);}};function beepall(_0x231730,_0xff9ae3,_0x6c9514,_0x1d4e2f){return new Beepall(_0x231730,_0xff9ae3,_0x6c9514,_0x1d4e2f);}module[_0x87ad('0x20')]=beepall;
\ No newline at end of file
+var _0x2f7d=['[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','busy','removeWaitingNotification','channel','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil','queue','Agents','length','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','busyQueue','name','saveWaitingNotification','showNotification','routing'];(function(_0x43c5b0,_0x42f837){var _0x4e5e2d=function(_0x1151a5){while(--_0x1151a5){_0x43c5b0['push'](_0x43c5b0['shift']());}};_0x4e5e2d(++_0x42f837);}(_0x2f7d,0x1b8));var _0xd2f7=function(_0x349707,_0x3e468d){_0x349707=_0x349707-0x0;var _0x33b6b7=_0x2f7d[_0x349707];return _0x33b6b7;};'use strict';var _=require(_0xd2f7('0x0'));var uuid=require(_0xd2f7('0x1'));var util=require(_0xd2f7('0x2'));var logger=require(_0xd2f7('0x3'))('routing');var Beepall=function(_0x2dc815,_0xb398b5,_0x2e2335,_0x97545a){this[_0xd2f7('0x4')]=uuid['v4']();this[_0xd2f7('0x5')]=_0x2dc815;this['queue']=_0xb398b5;this[_0xd2f7('0x6')]=_0x2e2335;this['routing']=_0x97545a;this[_0xd2f7('0x5')][_0xd2f7('0x7')](this[_0xd2f7('0x8')][_0xd2f7('0x9')](this),this[_0xd2f7('0xa')]['bind'](this));this[_0xd2f7('0x5')]['on'](_0xd2f7('0xb'),this[_0xd2f7('0xa')][_0xd2f7('0x9')](this));this[_0xd2f7('0x5')]['on'](_0xd2f7('0xc'),this[_0xd2f7('0xd')][_0xd2f7('0x9')](this));};Beepall[_0xd2f7('0xe')]['push']=function(){this[_0xd2f7('0x5')][_0xd2f7('0x7')](this[_0xd2f7('0x8')][_0xd2f7('0x9')](this),this[_0xd2f7('0xa')]['bind'](this));};Beepall[_0xd2f7('0xe')][_0xd2f7('0xd')]=function(){this['handleTimeout'](!![]);};Beepall[_0xd2f7('0xe')][_0xd2f7('0x8')]=function(){var _0x102db7=!![];if(!_[_0xd2f7('0xf')](this['queue'])&&!_[_0xd2f7('0xf')](this[_0xd2f7('0x10')]['Agents'])&&this[_0xd2f7('0x10')][_0xd2f7('0x11')]['length']>0x0){for(var _0x38d85d=0x0,_0x2a803b;_0x38d85d<this[_0xd2f7('0x10')][_0xd2f7('0x11')][_0xd2f7('0x12')];_0x38d85d+=0x1){_0x2a803b=this[_0xd2f7('0x10')]['Agents'][_0x38d85d]['id'];if(_['isNil'](this[_0xd2f7('0x6')][_0xd2f7('0x13')][_0x2a803b])){logger[_0xd2f7('0x14')](_0xd2f7('0x15'),this['squeue']['id'],_0x2a803b);}else{if(util['isAgentAvailable'](this[_0xd2f7('0x5')]['id'],this[_0xd2f7('0x6')][_0xd2f7('0x13')][_0x2a803b],this[_0xd2f7('0x5')]['channel'],!![])){_0x102db7=![];util[_0xd2f7('0x16')](this[_0xd2f7('0x5')]['id'],this[_0xd2f7('0x6')][_0xd2f7('0x13')][_0x2a803b],'RINGING');this[_0xd2f7('0x6')][_0xd2f7('0x13')][_0x2a803b]['busy']=!![];this[_0xd2f7('0x6')]['agents'][_0x2a803b][_0xd2f7('0x17')]=this[_0xd2f7('0x10')][_0xd2f7('0x18')];util[_0xd2f7('0x19')](this[_0xd2f7('0x6')],this['routing'],this[_0xd2f7('0x10')][_0xd2f7('0x11')][_0x38d85d],this[_0xd2f7('0x5')]['channel']);util[_0xd2f7('0x1a')](this[_0xd2f7('0x4')],this[_0xd2f7('0x5')]['id'],this['realtime']['agents'][_0x2a803b],this[_0xd2f7('0x10')],this[_0xd2f7('0x1b')]);}}}if(_0x102db7){logger[_0xd2f7('0x14')](_0xd2f7('0x1c'),this[_0xd2f7('0x5')]['id']);setTimeout(this[_0xd2f7('0x7')][_0xd2f7('0x9')](this),0x3e8);}}else{logger[_0xd2f7('0x14')](_0xd2f7('0x1d'),this[_0xd2f7('0x5')]['id']);setTimeout(this[_0xd2f7('0x7')][_0xd2f7('0x9')](this),0x3e8);}};Beepall[_0xd2f7('0xe')][_0xd2f7('0xa')]=function(_0x1b0c15){if(!_[_0xd2f7('0xf')](this[_0xd2f7('0x10')])&&!_[_0xd2f7('0xf')](this[_0xd2f7('0x10')]['Agents'])){for(var _0x25d9b9=0x0,_0x5e43f7;_0x25d9b9<this[_0xd2f7('0x10')]['Agents']['length'];_0x25d9b9+=0x1){_0x5e43f7=this['queue'][_0xd2f7('0x11')][_0x25d9b9]['id'];if(_[_0xd2f7('0xf')](this[_0xd2f7('0x6')]['agents'][_0x5e43f7])){logger[_0xd2f7('0x14')](_0xd2f7('0x15'),this[_0xd2f7('0x5')]['id'],_0x5e43f7);}else{util[_0xd2f7('0x1e')](this[_0xd2f7('0x4')],this['squeue']['id'],this[_0xd2f7('0x6')][_0xd2f7('0x13')][_0x5e43f7],this['queue'],this[_0xd2f7('0x1b')]);util[_0xd2f7('0x16')](this['squeue']['id'],this['realtime'][_0xd2f7('0x13')][_0x5e43f7],_0x1b0c15?_0xd2f7('0x1f'):'TIMEOUT');this['realtime'][_0xd2f7('0x13')][_0x5e43f7][_0xd2f7('0x20')]=![];this[_0xd2f7('0x6')][_0xd2f7('0x13')][_0x5e43f7]['busyQueue']=undefined;util[_0xd2f7('0x21')](this[_0xd2f7('0x6')],this[_0xd2f7('0x1b')],this[_0xd2f7('0x6')][_0xd2f7('0x13')][_0x5e43f7],this['squeue'][_0xd2f7('0x22')]);}}}if(!_0x1b0c15){setTimeout(this[_0xd2f7('0x7')][_0xd2f7('0x9')](this),0x3e8);}};function beepall(_0x2e95ef,_0x4c67c8,_0x2927ca,_0x378c92){return new Beepall(_0x2e95ef,_0x4c67c8,_0x2927ca,_0x378c92);}module[_0xd2f7('0x23')]=beepall;
\ No newline at end of file
index 5b4664f..c37d5c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb52a=['./beepall','./agent','exports','./rrmemory'];(function(_0x2f6741,_0x34e3a4){var _0x2d17b0=function(_0x228cae){while(--_0x228cae){_0x2f6741['push'](_0x2f6741['shift']());}};_0x2d17b0(++_0x34e3a4);}(_0xb52a,0xa2));var _0xab52=function(_0xabfec4,_0x35076e){_0xabfec4=_0xabfec4-0x0;var _0x7bafa2=_0xb52a[_0xabfec4];return _0x7bafa2;};'use strict';module[_0xab52('0x0')]={'rrmemory':require(_0xab52('0x1')),'beepall':require(_0xab52('0x2')),'agent':require(_0xab52('0x3'))};
\ No newline at end of file
+var _0x3836=['exports','./rrmemory','./beepall'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3836,0x78));var _0x6383=function(_0x41d40f,_0x2b9ac4){_0x41d40f=_0x41d40f-0x0;var _0x3438ad=_0x3836[_0x41d40f];return _0x3438ad;};'use strict';module[_0x6383('0x0')]={'rrmemory':require(_0x6383('0x1')),'beepall':require(_0x6383('0x2')),'agent':require('./agent')};
\ No newline at end of file
index a96ddc3..f7c7c15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x759f=['notificationId','squeue','realtime','intervals','handleRun','bind','module','timeout','handleTimeout','drained','handleDrained','push','prototype','handleCheckReject','isAgentAvailable','agents','debug','agentId','queue','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busy','busyQueue','name','saveWaitingNotification','writeLog','done','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing'];(function(_0x3a00d2,_0x5c0138){var _0x4d7a16=function(_0x2a96f4){while(--_0x2a96f4){_0x3a00d2['push'](_0x3a00d2['shift']());}};_0x4d7a16(++_0x5c0138);}(_0x759f,0x10c));var _0xf759=function(_0x333183,_0x2d198a){_0x333183=_0x333183-0x0;var _0x45ff22=_0x759f[_0x333183];return _0x45ff22;};'use strict';var rr=require('rr');var _=require(_0xf759('0x0'));var uuid=require(_0xf759('0x1'));var util=require(_0xf759('0x2'));var logger=require(_0xf759('0x3'))(_0xf759('0x4'));var RRMemory=function(_0x1a74d5,_0x2dec21,_0x32b1e3,_0x27fbcd){this[_0xf759('0x5')]=uuid['v4']();this[_0xf759('0x6')]=_0x1a74d5;this['queue']=_0x2dec21;this[_0xf759('0x7')]=_0x32b1e3;this['routing']=_0x27fbcd;this[_0xf759('0x8')]={};this[_0xf759('0x6')]['push'](this[_0xf759('0x9')][_0xf759('0xa')](this),this['handleTimeout'][_0xf759('0xa')](this),this[_0xf759('0xb')]);this[_0xf759('0x6')]['on'](_0xf759('0xc'),this[_0xf759('0xd')][_0xf759('0xa')](this));this[_0xf759('0x6')]['on'](_0xf759('0xe'),this[_0xf759('0xf')]['bind'](this));};RRMemory['prototype']['push']=function(){this[_0xf759('0x6')][_0xf759('0x10')](this[_0xf759('0x9')][_0xf759('0xa')](this),this[_0xf759('0xd')][_0xf759('0xa')](this));};RRMemory['prototype'][_0xf759('0xf')]=function(){this['handleTimeout'](!![]);};RRMemory[_0xf759('0x11')][_0xf759('0x12')]=function(_0x4367bd){if(util[_0xf759('0x13')](this[_0xf759('0x6')]['id'],this[_0xf759('0x7')][_0xf759('0x14')][this['agentId']],this[_0xf759('0x6')]['channel'],!![])){logger[_0xf759('0x15')]('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this[_0xf759('0x16')]);clearInterval(this[_0xf759('0x8')][this[_0xf759('0x16')]]);_0x4367bd['done']();setTimeout(this[_0xf759('0x10')][_0xf759('0xa')](this),0x3e8);}};RRMemory[_0xf759('0x11')][_0xf759('0x9')]=function(_0x340fec){this[_0xf759('0x16')]=rr(this[_0xf759('0x17')][_0xf759('0x18')]);logger['debug'](_0xf759('0x19'),this[_0xf759('0x6')]['id'],this[_0xf759('0x16')]);if(_[_0xf759('0x1a')](this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]])){logger[_0xf759('0x15')](_0xf759('0x1b'),this[_0xf759('0x6')]['id'],this['agentId']);_0x340fec['done']();setTimeout(this[_0xf759('0x10')][_0xf759('0xa')](this),0x3e8);}else{if(util[_0xf759('0x13')](this['squeue']['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this['squeue'][_0xf759('0x1c')],!![])){this['realtime']['agents'][this['agentId']][_0xf759('0x1d')]=!![];this['realtime'][_0xf759('0x14')][this[_0xf759('0x16')]][_0xf759('0x1e')]=this[_0xf759('0x17')][_0xf759('0x1f')];util[_0xf759('0x20')](this[_0xf759('0x7')],this[_0xf759('0x4')],this[_0xf759('0x7')][_0xf759('0x14')][this['agentId']],this[_0xf759('0x6')][_0xf759('0x1c')]);util['showNotification'](this[_0xf759('0x5')],this[_0xf759('0x6')]['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this[_0xf759('0x17')],this['routing']);util[_0xf759('0x21')](this['squeue']['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],'RINGING');this[_0xf759('0x8')][this[_0xf759('0x16')]]=setInterval(this[_0xf759('0x12')][_0xf759('0xa')](this,_0x340fec),0x3e8);}else{logger[_0xf759('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xf759('0x6')]['id'],this['agentId']);_0x340fec[_0xf759('0x22')]();setTimeout(this[_0xf759('0x10')][_0xf759('0xa')](this),0x3e8);}}};RRMemory[_0xf759('0x11')][_0xf759('0xd')]=function(_0x444230){logger[_0xf759('0x15')](_0xf759('0x23'),this[_0xf759('0x6')]['id'],this['agentId']);if(_['isNil'](this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]])){logger['debug'](_0xf759('0x1b'),this[_0xf759('0x6')]['id'],this['agentId']);}else{clearInterval(this['intervals'][this[_0xf759('0x16')]]);util[_0xf759('0x24')](this[_0xf759('0x5')],this[_0xf759('0x6')]['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this['queue'],this[_0xf759('0x4')]);util[_0xf759('0x21')](this['squeue']['id'],this[_0xf759('0x7')]['agents'][this[_0xf759('0x16')]],'TIMEOUT');this['realtime'][_0xf759('0x14')][this[_0xf759('0x16')]]['busy']=![];this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]]['busyQueue']=undefined;util[_0xf759('0x25')](this['realtime'],this['routing'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this[_0xf759('0x6')][_0xf759('0x1c')]);}if(!_0x444230){setTimeout(this[_0xf759('0x10')]['bind'](this),0x3e8);}};function rrmemory(_0x3a8bc9,_0x47d81c,_0x2034ab,_0x36c8de){return new RRMemory(_0x3a8bc9,_0x47d81c,_0x2034ab,_0x36c8de);}module[_0xf759('0x26')]=rrmemory;
\ No newline at end of file
+var _0xd86f=['lodash','uuid','./util','routing','notificationId','queue','realtime','intervals','squeue','push','handleRun','handleTimeout','bind','module','timeout','drained','handleDrained','prototype','agents','channel','[%s][QUEUE]\x20available\x20again\x20%s','agentId','mapAgentsId','debug','[%s][QUEUE]\x20try\x20with\x20%s','isNil','done','isAgentAvailable','busy','busyQueue','name','showNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','exports'];(function(_0x53f6ec,_0x279005){var _0x15ee78=function(_0x3f5486){while(--_0x3f5486){_0x53f6ec['push'](_0x53f6ec['shift']());}};_0x15ee78(++_0x279005);}(_0xd86f,0x75));var _0xfd86=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xd86f[_0xa148b7];return _0x51efd3;};'use strict';var rr=require('rr');var _=require(_0xfd86('0x0'));var uuid=require(_0xfd86('0x1'));var util=require(_0xfd86('0x2'));var logger=require('../../../../../config/logger')(_0xfd86('0x3'));var RRMemory=function(_0x40eb7d,_0xf5f958,_0x4d0e19,_0x3318a1){this[_0xfd86('0x4')]=uuid['v4']();this['squeue']=_0x40eb7d;this[_0xfd86('0x5')]=_0xf5f958;this[_0xfd86('0x6')]=_0x4d0e19;this['routing']=_0x3318a1;this[_0xfd86('0x7')]={};this[_0xfd86('0x8')][_0xfd86('0x9')](this[_0xfd86('0xa')]['bind'](this),this[_0xfd86('0xb')][_0xfd86('0xc')](this),this[_0xfd86('0xd')]);this[_0xfd86('0x8')]['on'](_0xfd86('0xe'),this[_0xfd86('0xb')]['bind'](this));this['squeue']['on'](_0xfd86('0xf'),this[_0xfd86('0x10')]['bind'](this));};RRMemory[_0xfd86('0x11')][_0xfd86('0x9')]=function(){this[_0xfd86('0x8')][_0xfd86('0x9')](this['handleRun'][_0xfd86('0xc')](this),this[_0xfd86('0xb')][_0xfd86('0xc')](this));};RRMemory[_0xfd86('0x11')][_0xfd86('0x10')]=function(){this[_0xfd86('0xb')](!![]);};RRMemory[_0xfd86('0x11')]['handleCheckReject']=function(_0x374020){if(util['isAgentAvailable'](this[_0xfd86('0x8')]['id'],this[_0xfd86('0x6')][_0xfd86('0x12')][this['agentId']],this[_0xfd86('0x8')][_0xfd86('0x13')],!![])){logger['debug'](_0xfd86('0x14'),this[_0xfd86('0x8')]['id'],this['agentId']);clearInterval(this[_0xfd86('0x7')][this[_0xfd86('0x15')]]);_0x374020['done']();setTimeout(this['push'][_0xfd86('0xc')](this),0x3e8);}};RRMemory[_0xfd86('0x11')][_0xfd86('0xa')]=function(_0x38b976){this[_0xfd86('0x15')]=rr(this[_0xfd86('0x5')][_0xfd86('0x16')]);logger[_0xfd86('0x17')](_0xfd86('0x18'),this['squeue']['id'],this['agentId']);if(_[_0xfd86('0x19')](this[_0xfd86('0x6')][_0xfd86('0x12')][this[_0xfd86('0x15')]])){logger[_0xfd86('0x17')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this['agentId']);_0x38b976[_0xfd86('0x1a')]();setTimeout(this[_0xfd86('0x9')][_0xfd86('0xc')](this),0x3e8);}else{if(util[_0xfd86('0x1b')](this[_0xfd86('0x8')]['id'],this[_0xfd86('0x6')][_0xfd86('0x12')][this[_0xfd86('0x15')]],this[_0xfd86('0x8')][_0xfd86('0x13')],!![])){this[_0xfd86('0x6')]['agents'][this[_0xfd86('0x15')]][_0xfd86('0x1c')]=!![];this['realtime'][_0xfd86('0x12')][this['agentId']][_0xfd86('0x1d')]=this[_0xfd86('0x5')][_0xfd86('0x1e')];util['saveWaitingNotification'](this['realtime'],this[_0xfd86('0x3')],this[_0xfd86('0x6')][_0xfd86('0x12')][this[_0xfd86('0x15')]],this[_0xfd86('0x8')][_0xfd86('0x13')]);util[_0xfd86('0x1f')](this[_0xfd86('0x4')],this[_0xfd86('0x8')]['id'],this[_0xfd86('0x6')][_0xfd86('0x12')][this['agentId']],this['queue'],this[_0xfd86('0x3')]);util[_0xfd86('0x20')](this['squeue']['id'],this[_0xfd86('0x6')][_0xfd86('0x12')][this['agentId']],'RINGING');this[_0xfd86('0x7')][this['agentId']]=setInterval(this['handleCheckReject'][_0xfd86('0xc')](this,_0x38b976),0x3e8);}else{logger['debug'](_0xfd86('0x21'),this['squeue']['id'],this[_0xfd86('0x15')]);_0x38b976[_0xfd86('0x1a')]();setTimeout(this[_0xfd86('0x9')]['bind'](this),0x3e8);}}};RRMemory['prototype'][_0xfd86('0xb')]=function(_0x3d6b04){logger[_0xfd86('0x17')](_0xfd86('0x22'),this[_0xfd86('0x8')]['id'],this[_0xfd86('0x15')]);if(_[_0xfd86('0x19')](this[_0xfd86('0x6')][_0xfd86('0x12')][this[_0xfd86('0x15')]])){logger[_0xfd86('0x17')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xfd86('0x8')]['id'],this[_0xfd86('0x15')]);}else{clearInterval(this['intervals'][this[_0xfd86('0x15')]]);util[_0xfd86('0x23')](this[_0xfd86('0x4')],this[_0xfd86('0x8')]['id'],this[_0xfd86('0x6')][_0xfd86('0x12')][this['agentId']],this[_0xfd86('0x5')],this[_0xfd86('0x3')]);util[_0xfd86('0x20')](this[_0xfd86('0x8')]['id'],this['realtime'][_0xfd86('0x12')][this[_0xfd86('0x15')]],_0xfd86('0x24'));this[_0xfd86('0x6')]['agents'][this[_0xfd86('0x15')]][_0xfd86('0x1c')]=![];this[_0xfd86('0x6')][_0xfd86('0x12')][this[_0xfd86('0x15')]]['busyQueue']=undefined;util[_0xfd86('0x25')](this[_0xfd86('0x6')],this[_0xfd86('0x3')],this['realtime'][_0xfd86('0x12')][this[_0xfd86('0x15')]],this[_0xfd86('0x8')][_0xfd86('0x13')]);}if(!_0x3d6b04){setTimeout(this['push'][_0xfd86('0xc')](this),0x3e8);}};function rrmemory(_0x433aa8,_0x2dd371,_0x24af7c,_0x2861d2){return new RRMemory(_0x433aa8,_0x2dd371,_0x24af7c,_0x2861d2);}module[_0xfd86('0x26')]=rrmemory;
\ No newline at end of file
index d7c9732..bd4f6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x435f=['I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','checkWaitingNotifications','interaction','UserId','some','QueuesWaitingInteractions','capitalize','channel','InteractionId','agents','saveWaitingNotification','WaitingInteractions','removeWaitingNotification','lodash','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','redis','socket.io-emitter','format','user:%s','emit','user:save','split','\x20interaction','name','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate'];(function(_0x255d77,_0x196a4f){var _0x537e25=function(_0x3652cb){while(--_0x3652cb){_0x255d77['push'](_0x255d77['shift']());}};_0x537e25(++_0x196a4f);}(_0x435f,0x129));var _0xf435=function(_0x2f0c44,_0x30012e){_0x2f0c44=_0x2f0c44-0x0;var _0x51b16b=_0x435f[_0x2f0c44];return _0x51b16b;};'use strict';var _=require(_0xf435('0x0'));var util=require('util');var utils=require(_0xf435('0x1'));var Redis=require(_0xf435('0x2'));var config=require(_0xf435('0x3'));var logger=require(_0xf435('0x4'))('routing');config[_0xf435('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xf435('0x6'))(new Redis(config[_0xf435('0x5')]));function sendNotification(_0x104ac9,_0x2d8e22,_0x18f7c8,_0x39fb19,_0x1e0d5,_0xd4d814){io['to'](util[_0xf435('0x7')](_0xf435('0x8'),_0x39fb19['name']))[_0xf435('0x9')](_0xf435('0xa'),_0x39fb19);var _0x5741c2=_0xd4d814||{};var _0x39aef4=_0x18f7c8[_0xf435('0xb')]('.');var _0x412742={'uniqueid':_0x2d8e22,'channel':_0x39aef4[0x0],'id':_0x39aef4[0x1],'title':_0x39aef4[0x0]+_0xf435('0xc'),'interactionId':_0x39aef4[0x2],'queue':_0x1e0d5?_0x1e0d5[_0xf435('0xd')]:null,'sound':_0x5741c2[_0xf435('0xe')]['notificationSound'],'shake':_0x5741c2[_0xf435('0xe')][_0xf435('0xf')]};try{if(!_0x5741c2['body']){_0x5741c2[_0xf435('0x10')]={};}if(_0x1e0d5){_0x5741c2['body'][_0xf435('0x11')]=_0x1e0d5;}else if(_0x5741c2[_0xf435('0x10')]['queue']){delete _0x5741c2[_0xf435('0x10')]['queue'];}_0x412742[_0xf435('0x12')]=utils[_0xf435('0x13')](_0x5741c2[_0xf435('0xe')][_0xf435('0x14')],_0x5741c2);}catch(_0x62e213){_0x412742[_0xf435('0x12')]=_0xf435('0x15');logger[_0xf435('0x16')](util[_0xf435('0x7')](_0xf435('0x17'),_0x2d8e22,_0x62e213[_0xf435('0x18')]));}io['to'](util['format'](_0xf435('0x8'),_0x39fb19[_0xf435('0xd')]))[_0xf435('0x9')](util[_0xf435('0x7')](_0xf435('0x19'),_0x104ac9?_0xf435('0x1a'):_0xf435('0x1b')),_0x412742);}function writeLog(_0x4b300f,_0x18fd4c,_0xfe64){return logger[_0xf435('0x1c')](util[_0xf435('0x7')](_0xf435('0x1d'),_0x4b300f,_0x18fd4c[_0xf435('0xd')],_0xfe64));}exports[_0xf435('0x1e')]=function(_0xf9ac48,_0xa06b11,_0xc9ace5,_0x550917){if(_0xa06b11[_0xf435('0x1f')]){writeLog(_0xf9ac48,_0xa06b11,_0xf435('0x20'));return![];}if(!_0xa06b11['online']){writeLog(_0xf9ac48,_0xa06b11,_0xf435('0x21'));return![];}if(_0xa06b11[_0xc9ace5+'Pause']){writeLog(_0xf9ac48,_0xa06b11,_0xf435('0x22'));return![];}if(_0x550917&&_0xa06b11[_0xf435('0x23')](_0xc9ace5+_0xf435('0x24'))&&_0xa06b11['hasOwnProperty'](_0xc9ace5+'CurrentCapacity')){if(_0xa06b11[_0xc9ace5+'Capacity']>0x0&&_0xa06b11[_0xc9ace5+_0xf435('0x25')]>=_0xa06b11[_0xc9ace5+_0xf435('0x24')]){writeLog(_0xf9ac48,_0xa06b11,_0xc9ace5[_0xf435('0x26')]()+_0xf435('0x27'));return![];}}return!![];};exports[_0xf435('0x28')]=function(_0x3ff3c6,_0x330b9e,_0x79cc9a,_0x14b013,_0x45247a){return sendNotification(!![],_0x3ff3c6,_0x330b9e,_0x79cc9a,_0x14b013,_0x45247a);};exports['hideNotification']=function(_0x15a6e5,_0x2a400d,_0x4783a2,_0x5c91b0,_0x29fa41){return sendNotification(![],_0x15a6e5,_0x2a400d,_0x4783a2,_0x5c91b0,_0x29fa41);};exports[_0xf435('0x29')]=function(_0x22315d,_0x3bde5f,_0x5f274b){var _0x3c0a4b=_0x3bde5f[_0xf435('0x2a')][_0xf435('0x2b')];if(!_0x3c0a4b&&_0x5f274b){_0x3c0a4b=_0x5f274b['id'];}var _0x477bf9=_[_0xf435('0x2c')](_0x22315d[_0x3bde5f['channel']+_0xf435('0x2d')],function(_0x424861){var _0x1c94a7=_[_0xf435('0x2e')](_0x3bde5f[_0xf435('0x2f')])+_0xf435('0x30');return _0x424861[_0x1c94a7]===_0x3bde5f[_0xf435('0x2a')]['id'];});if(!_0x477bf9&&_0x3c0a4b){_0x477bf9=_['some'](_0x22315d[_0xf435('0x31')][_0x3c0a4b][_0x3bde5f[_0xf435('0x2f')]+'WaitingInteractions'],function(_0x730820){return _0x730820['id']===_0x3bde5f[_0xf435('0x2a')]['id'];});}return _0x477bf9;};exports[_0xf435('0x32')]=function(_0x428054,_0x1ffd93,_0x5edf61,_0x2a4e7b){_0x428054[_0xf435('0x31')][_0x5edf61['id']][_0x2a4e7b+_0xf435('0x33')][_0x1ffd93[_0xf435('0x18')]['id']]={'id':_0x1ffd93[_0xf435('0x2a')]['id']};};exports[_0xf435('0x34')]=function(_0x40b49c,_0x22d229,_0x19f8fb,_0x4d0c12){delete _0x40b49c[_0xf435('0x31')][_0x19f8fb['id']][_0x4d0c12+_0xf435('0x33')][_0x22d229[_0xf435('0x18')]['id']];};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0x78db=['[%s][QUEUE]\x20%s','message','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','PAUSE','Capacity','hasOwnProperty','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','hideNotification','checkWaitingNotifications','interaction','UserId','some','channel','capitalize','InteractionId','agents','WaitingInteractions','saveWaitingNotification','removeWaitingNotification','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','redis','socket.io-emitter','user:%s','name','emit','split','\x20interaction','account','notificationShake','body','queue','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','format'];(function(_0x18a778,_0x1f0dcf){var _0x2f4787=function(_0x562985){while(--_0x562985){_0x18a778['push'](_0x18a778['shift']());}};_0x2f4787(++_0x1f0dcf);}(_0x78db,0x13b));var _0xb78d=function(_0x5a5ffb,_0x3aaf44){_0x5a5ffb=_0x5a5ffb-0x0;var _0x12d821=_0x78db[_0x5a5ffb];return _0x12d821;};'use strict';var _=require('lodash');var util=require(_0xb78d('0x0'));var utils=require(_0xb78d('0x1'));var Redis=require(_0xb78d('0x2'));var config=require(_0xb78d('0x3'));var logger=require(_0xb78d('0x4'))('routing');config[_0xb78d('0x5')]=_['defaults'](config[_0xb78d('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xb78d('0x6'))(new Redis(config[_0xb78d('0x5')]));function sendNotification(_0x1e410e,_0x1a761f,_0x527eab,_0x592888,_0x4db08e,_0x20b02e){io['to'](util['format'](_0xb78d('0x7'),_0x592888[_0xb78d('0x8')]))[_0xb78d('0x9')]('user:save',_0x592888);var _0x2d180d=_0x20b02e||{};var _0x309caa=_0x527eab[_0xb78d('0xa')]('.');var _0x10b5b9={'uniqueid':_0x1a761f,'channel':_0x309caa[0x0],'id':_0x309caa[0x1],'title':_0x309caa[0x0]+_0xb78d('0xb'),'interactionId':_0x309caa[0x2],'queue':_0x4db08e?_0x4db08e[_0xb78d('0x8')]:null,'sound':_0x2d180d[_0xb78d('0xc')]['notificationSound'],'shake':_0x2d180d[_0xb78d('0xc')][_0xb78d('0xd')]};try{if(!_0x2d180d[_0xb78d('0xe')]){_0x2d180d[_0xb78d('0xe')]={};}if(_0x4db08e){_0x2d180d[_0xb78d('0xe')][_0xb78d('0xf')]=_0x4db08e;}else if(_0x2d180d['body'][_0xb78d('0xf')]){delete _0x2d180d[_0xb78d('0xe')][_0xb78d('0xf')];}_0x10b5b9['msg']=utils['getMustacheRender'](_0x2d180d[_0xb78d('0xc')][_0xb78d('0x10')],_0x2d180d);}catch(_0x54fea8){_0x10b5b9[_0xb78d('0x11')]=_0xb78d('0x12');logger[_0xb78d('0x13')](util[_0xb78d('0x14')](_0xb78d('0x15'),_0x1a761f,_0x54fea8[_0xb78d('0x16')]));}io['to'](util[_0xb78d('0x14')](_0xb78d('0x7'),_0x592888[_0xb78d('0x8')]))[_0xb78d('0x9')](util[_0xb78d('0x14')](_0xb78d('0x17'),_0x1e410e?_0xb78d('0x18'):_0xb78d('0x19')),_0x10b5b9);}function writeLog(_0x53e8c2,_0x273603,_0x4122fc){return logger['debug'](util[_0xb78d('0x14')](_0xb78d('0x1a'),_0x53e8c2,_0x273603['name'],_0x4122fc));}exports[_0xb78d('0x1b')]=function(_0x68ff9e,_0x4ac006,_0x2377a9,_0x713cd5){if(_0x4ac006[_0xb78d('0x1c')]){writeLog(_0x68ff9e,_0x4ac006,_0xb78d('0x1d'));return![];}if(!_0x4ac006['online']){writeLog(_0x68ff9e,_0x4ac006,'OFFLINE');return![];}if(_0x4ac006[_0x2377a9+'Pause']){writeLog(_0x68ff9e,_0x4ac006,_0xb78d('0x1e'));return![];}if(_0x713cd5&&_0x4ac006['hasOwnProperty'](_0x2377a9+_0xb78d('0x1f'))&&_0x4ac006[_0xb78d('0x20')](_0x2377a9+_0xb78d('0x21'))){if(_0x4ac006[_0x2377a9+'Capacity']>0x0&&_0x4ac006[_0x2377a9+_0xb78d('0x21')]>=_0x4ac006[_0x2377a9+_0xb78d('0x1f')]){writeLog(_0x68ff9e,_0x4ac006,_0x2377a9[_0xb78d('0x22')]()+_0xb78d('0x23'));return![];}}return!![];};exports['showNotification']=function(_0x6acad0,_0x4343e0,_0x1c4215,_0x4188a9,_0x515b8e){return sendNotification(!![],_0x6acad0,_0x4343e0,_0x1c4215,_0x4188a9,_0x515b8e);};exports[_0xb78d('0x24')]=function(_0x5cfd6b,_0x59c4a2,_0x4212b7,_0x41bd34,_0x4ec655){return sendNotification(![],_0x5cfd6b,_0x59c4a2,_0x4212b7,_0x41bd34,_0x4ec655);};exports[_0xb78d('0x25')]=function(_0x1756f4,_0x1fe6f6,_0x1ae3da){var _0x40174a=_0x1fe6f6[_0xb78d('0x26')][_0xb78d('0x27')];if(!_0x40174a&&_0x1ae3da){_0x40174a=_0x1ae3da['id'];}var _0x1ffc62=_[_0xb78d('0x28')](_0x1756f4[_0x1fe6f6[_0xb78d('0x29')]+'QueuesWaitingInteractions'],function(_0x64d722){var _0x113a74=_[_0xb78d('0x2a')](_0x1fe6f6[_0xb78d('0x29')])+_0xb78d('0x2b');return _0x64d722[_0x113a74]===_0x1fe6f6[_0xb78d('0x26')]['id'];});if(!_0x1ffc62&&_0x40174a){_0x1ffc62=_[_0xb78d('0x28')](_0x1756f4[_0xb78d('0x2c')][_0x40174a][_0x1fe6f6[_0xb78d('0x29')]+_0xb78d('0x2d')],function(_0x250e56){return _0x250e56['id']===_0x1fe6f6[_0xb78d('0x26')]['id'];});}return _0x1ffc62;};exports[_0xb78d('0x2e')]=function(_0x40c2a5,_0x1c0f7e,_0x468c97,_0x1e02ff){_0x40c2a5[_0xb78d('0x2c')][_0x468c97['id']][_0x1e02ff+_0xb78d('0x2d')][_0x1c0f7e[_0xb78d('0x16')]['id']]={'id':_0x1c0f7e[_0xb78d('0x26')]['id']};};exports[_0xb78d('0x2f')]=function(_0x537548,_0x1a5679,_0x3a7dc3,_0x375e71){delete _0x537548['agents'][_0x3a7dc3['id']][_0x375e71+_0xb78d('0x2d')][_0x1a5679[_0xb78d('0x16')]['id']];};exports['writeLog']=writeLog;
\ No newline at end of file
index b7ff045..30bab5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d3c=['[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','validate','shelljs','lodash','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','isNil'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x5d3c,0x159));var _0xc5d3=function(_0x21be3c,_0x5cd3e9){_0x21be3c=_0x21be3c-0x0;var _0x511b10=_0x5d3c[_0x21be3c];return _0x511b10;};'use strict';var schema=require(_0xc5d3('0x0'));var sh=require(_0xc5d3('0x1'));var _=require(_0xc5d3('0x2'));var utils=require('./utils');var logger=require(_0xc5d3('0x3'))('routing');var system=schema({'command':{'type':_0xc5d3('0x4'),'required':!![],'message':_0xc5d3('0x5')}});exports[_0xc5d3('0x6')]=function(_0x2a3a59,_0x19407a){return function(_0x2ca5d4){try{var _0x2f52ee={'command':_0x19407a[0x0]};var _0x5d3cae=system['validate'](_0x2f52ee,{'typecast':!![]});if(_0x5d3cae[_0xc5d3('0x7')]){logger[_0xc5d3('0x8')]('[%s][SYSTEM]\x20%s',_0x2a3a59,_['map'](_0x5d3cae,_0xc5d3('0x9'))[_0xc5d3('0xa')](',\x20'));logger[_0xc5d3('0xb')](_0xc5d3('0xc'),_0x2a3a59);_0x2ca5d4['next']();}else{var _0x22a0c7=this;var _0xc6d012=utils[_0xc5d3('0xd')](_0x19407a[0x0],this);logger['info'](_0xc5d3('0xe'),_0x2a3a59,_0xc6d012);sh['exec'](_['trim'](_0xc6d012),function(_0x3fad3b,_0x1bd03b){logger[_0xc5d3('0xb')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x2a3a59,_0x3fad3b);if(_0x3fad3b==0x0){var _0x47ce0f=_0x1bd03b['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0xc5d3('0xf')](_0x19407a[0x1])||_['isEmpty'](_0x19407a[0x1])){logger[_0xc5d3('0xb')](_0xc5d3('0x10'),_0x2a3a59);_0x22a0c7[_0xc5d3('0x11')][_0x19407a[0x1]]=_0x47ce0f;}else{logger[_0xc5d3('0xb')](_0xc5d3('0x12'),_0x2a3a59,_0x19407a[0x1],_0x47ce0f);_0x22a0c7[_0xc5d3('0x11')][_0x19407a[0x1]]=_0x47ce0f;}}_0x2ca5d4['next']();});}}catch(_0x40e0c1){logger[_0xc5d3('0x8')]('[%s][SYSTEM]\x20%s',_0x2a3a59,_['isObject'](_0x40e0c1)?JSON['stringify'](_0x40e0c1):_0x40e0c1);logger[_0xc5d3('0xb')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2a3a59);_0x2ca5d4['next']();}};};
\ No newline at end of file
+var _0x7b40=['string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isEmpty','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','stringify','validate','shelljs','lodash','./utils','../../../../config/logger','routing'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b40,0x7c));var _0x07b4=function(_0x25e899,_0x568d9b){_0x25e899=_0x25e899-0x0;var _0x2aa16a=_0x7b40[_0x25e899];return _0x2aa16a;};'use strict';var schema=require(_0x07b4('0x0'));var sh=require(_0x07b4('0x1'));var _=require(_0x07b4('0x2'));var utils=require(_0x07b4('0x3'));var logger=require(_0x07b4('0x4'))(_0x07b4('0x5'));var system=schema({'command':{'type':_0x07b4('0x6'),'required':!![],'message':_0x07b4('0x7')}});exports[_0x07b4('0x8')]=function(_0x4ab696,_0x11d8aa){return function(_0x56aa18){try{var _0x2e7f47={'command':_0x11d8aa[0x0]};var _0xd45f4d=system[_0x07b4('0x0')](_0x2e7f47,{'typecast':!![]});if(_0xd45f4d['length']){logger[_0x07b4('0x9')](_0x07b4('0xa'),_0x4ab696,_[_0x07b4('0xb')](_0xd45f4d,_0x07b4('0xc'))[_0x07b4('0xd')](',\x20'));logger[_0x07b4('0xe')](_0x07b4('0xf'),_0x4ab696);_0x56aa18[_0x07b4('0x10')]();}else{var _0x1c9d33=this;var _0x24c379=utils[_0x07b4('0x11')](_0x11d8aa[0x0],this);logger[_0x07b4('0xe')](_0x07b4('0x12'),_0x4ab696,_0x24c379);sh[_0x07b4('0x13')](_['trim'](_0x24c379),function(_0x362848,_0x46897a){logger['info'](_0x07b4('0x14'),_0x4ab696,_0x362848);if(_0x362848==0x0){var _0x39ddaa=_0x46897a[_0x07b4('0x15')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x11d8aa[0x1])||_[_0x07b4('0x16')](_0x11d8aa[0x1])){logger[_0x07b4('0xe')]('[%s][SYSTEM]\x20no\x20variable',_0x4ab696);_0x1c9d33['body'][_0x11d8aa[0x1]]=_0x39ddaa;}else{logger[_0x07b4('0xe')](_0x07b4('0x17'),_0x4ab696,_0x11d8aa[0x1],_0x39ddaa);_0x1c9d33[_0x07b4('0x18')][_0x11d8aa[0x1]]=_0x39ddaa;}}_0x56aa18[_0x07b4('0x10')]();});}}catch(_0x5b3d2d){logger[_0x07b4('0x9')](_0x07b4('0xa'),_0x4ab696,_['isObject'](_0x5b3d2d)?JSON[_0x07b4('0x19')](_0x5b3d2d):_0x5b3d2d);logger[_0x07b4('0xe')](_0x07b4('0xf'),_0x4ab696);_0x56aa18[_0x07b4('0x10')]();}};};
\ No newline at end of file
index 82a2ead..4afa1e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x716e=['../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction'];(function(_0x2cdc6a,_0x34f7fb){var _0x1e0fe6=function(_0x3cac93){while(--_0x3cac93){_0x2cdc6a['push'](_0x2cdc6a['shift']());}};_0x1e0fe6(++_0x34f7fb);}(_0x716e,0x1af));var _0xe716=function(_0x45bdf1,_0xb31ef2){_0x45bdf1=_0x45bdf1-0x0;var _0x125fbd=_0x716e[_0x45bdf1];return _0x125fbd;};'use strict';var schema=require(_0xe716('0x0'));var _=require(_0xe716('0x1'));var rpc={'chatInteraction':require(_0xe716('0x2')),'openchannelInteraction':require(_0xe716('0x3')),'smsInteraction':require(_0xe716('0x4')),'mailInteraction':require(_0xe716('0x5')),'faxInteraction':require(_0xe716('0x6')),'whatsappInteraction':require(_0xe716('0x7'))};var logger=require(_0xe716('0x8'))(_0xe716('0x9'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xe716('0xa')}});exports['consequence']=function(_0x410d0c,_0x2ff3aa,_0x5b260b,_0x27e2df){return function(_0xc6bec3){try{var _0x10212b={'tag':_0x2ff3aa[0x0]};var _0x5cdfc9=tag[_0xe716('0x0')](_0x10212b,{'typecast':!![]});if(_0x5cdfc9[_0xe716('0xb')]){logger[_0xe716('0xc')](_0xe716('0xd'),_0x410d0c,_[_0xe716('0xe')](_0x5cdfc9,_0xe716('0xf'))[_0xe716('0x10')](',\x20'));logger[_0xe716('0x11')](_0xe716('0x12'),_0x410d0c);_0xc6bec3[_0xe716('0x13')]();}else{var _0x289175={'ids':[_0x2ff3aa[0x0]]};if(rpc[_0x27e2df[_0xe716('0x14')]+_0xe716('0x15')]){rpc[_0x27e2df['channel']+'Interaction'][_0xe716('0x16')](_0x27e2df[_0xe716('0x17')]['id'],_0x289175)[_0xe716('0x18')](function(_0x3e6587){logger[_0xe716('0x11')](_0xe716('0x19'),_0x410d0c,_0x2ff3aa[0x1],_0x27e2df[_0xe716('0x14')],_0x27e2df['interaction']['id']);})[_0xe716('0x1a')](function(_0x5a7bf9){logger[_0xe716('0xc')](_0xe716('0xd'),_0x410d0c,JSON[_0xe716('0x1b')](_0x5a7bf9));logger[_0xe716('0x11')](_0xe716('0x12'),_0x410d0c);})['finally'](function(){_0xc6bec3['next']();});}}}catch(_0x4815dd){logger[_0xe716('0xc')](_0xe716('0xd'),_0x410d0c,_[_0xe716('0x1c')](_0x4815dd)?JSON[_0xe716('0x1b')](_0x4815dd):_0x4815dd);logger['info'](_0xe716('0x12'),_0x410d0c);_0xc6bec3[_0xe716('0x13')]();}};};
\ No newline at end of file
+var _0x9a34=['../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][TAG]\x20%s','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','isObject','validate','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction'];(function(_0xfc56ae,_0xe7b760){var _0x5f3273=function(_0x58276e){while(--_0x58276e){_0xfc56ae['push'](_0xfc56ae['shift']());}};_0x5f3273(++_0xe7b760);}(_0x9a34,0x9c));var _0x49a3=function(_0x2cfb21,_0x240c6d){_0x2cfb21=_0x2cfb21-0x0;var _0x50cdf0=_0x9a34[_0x2cfb21];return _0x50cdf0;};'use strict';var schema=require(_0x49a3('0x0'));var _=require(_0x49a3('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x49a3('0x2')),'smsInteraction':require(_0x49a3('0x3')),'mailInteraction':require(_0x49a3('0x4')),'faxInteraction':require(_0x49a3('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require(_0x49a3('0x6'))(_0x49a3('0x7'));var tag=schema({'tag':{'type':_0x49a3('0x8'),'required':!![],'message':_0x49a3('0x9')}});exports[_0x49a3('0xa')]=function(_0x5328fa,_0x42762d,_0x483dfb,_0x793b1d){return function(_0x475a94){try{var _0x513a8a={'tag':_0x42762d[0x0]};var _0x1df9f3=tag[_0x49a3('0x0')](_0x513a8a,{'typecast':!![]});if(_0x1df9f3['length']){logger[_0x49a3('0xb')](_0x49a3('0xc'),_0x5328fa,_[_0x49a3('0xd')](_0x1df9f3,_0x49a3('0xe'))['join'](',\x20'));logger[_0x49a3('0xf')](_0x49a3('0x10'),_0x5328fa);_0x475a94[_0x49a3('0x11')]();}else{var _0x60a24e={'ids':[_0x42762d[0x0]]};if(rpc[_0x793b1d[_0x49a3('0x12')]+_0x49a3('0x13')]){rpc[_0x793b1d[_0x49a3('0x12')]+'Interaction'][_0x49a3('0x14')](_0x793b1d[_0x49a3('0x15')]['id'],_0x60a24e)[_0x49a3('0x16')](function(_0x422a9d){logger[_0x49a3('0xf')](_0x49a3('0x17'),_0x5328fa,_0x42762d[0x1],_0x793b1d[_0x49a3('0x12')],_0x793b1d[_0x49a3('0x15')]['id']);})[_0x49a3('0x18')](function(_0x5df7ea){logger[_0x49a3('0xb')](_0x49a3('0xc'),_0x5328fa,JSON[_0x49a3('0x19')](_0x5df7ea));logger[_0x49a3('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x5328fa);})['finally'](function(){_0x475a94[_0x49a3('0x11')]();});}}}catch(_0x34f239){logger[_0x49a3('0xb')](_0x49a3('0xc'),_0x5328fa,_[_0x49a3('0x1a')](_0x34f239)?JSON['stringify'](_0x34f239):_0x34f239);logger[_0x49a3('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x5328fa);_0x475a94[_0x49a3('0x11')]();}};};
\ No newline at end of file
index ba6ae9b..b3a0753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e45=['[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','lodash','consequence','replace','\x20-\x20','includes','urlOnAnswer','urlOnRing','?params=','title','jsonrpc','2.0','push','params','stringify','utf8','POST','application/json-rpc','then','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&sessionId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','catch','error','[%s][TVOX]\x20%s','stop'];(function(_0x56957c,_0x547595){var _0x55261e=function(_0x451cff){while(--_0x451cff){_0x56957c['push'](_0x56957c['shift']());}};_0x55261e(++_0x547595);}(_0x9e45,0x14c));var _0x59e4=function(_0xb1473e,_0x3ed6d7){_0xb1473e=_0xb1473e-0x0;var _0x9760f4=_0x9e45[_0xb1473e];return _0x9760f4;};'use strict';var rp=require(_0x59e4('0x0'));var logger=require('../../../../config/logger')('routing');var _=require(_0x59e4('0x1'));var arr=[];exports[_0x59e4('0x2')]=function(_0x39aac0,_0x41efbe){return function(_0x316777){var _0x45ba48=_0x41efbe[0xa];var _0x795909=_0x41efbe[0xb];var _0xf23331=_0x41efbe[0xc];var _0x25d816=_0x41efbe[0xd];var _0x49309d=_0x41efbe[0xe];var _0x2dcdd8=_0x41efbe[0xf][_0x59e4('0x3')](/\n/g,_0x59e4('0x4'));var _0x1e96be=_0x41efbe[0x10][_0x59e4('0x3')](/\n/g,'\x20');if(!arr[_0x59e4('0x5')](_0x795909)){arr['push'](_0x795909);var _0x4f0f70=_0x41efbe[0x3];var _0x577c6d=_0x41efbe[0x4];var _0x5d7f5d=_0x41efbe[0x1];var _0x36c598=_0x41efbe[0x0];var _0x1a9744={};_0x1a9744[_0x59e4('0x6')]=_0x41efbe[0x8]+'?params='+_0xf23331+'|'+_0x45ba48+'|'+_0x25d816+'|'+_0x795909+'|'+_0x49309d;_0x1a9744[_0x59e4('0x7')]=_0x41efbe[0x7]+_0x59e4('0x8')+_0xf23331+'|'+_0x45ba48+'|'+_0x25d816+'|'+_0x795909+'|'+_0x49309d+'|'+_0x2dcdd8+'|'+_0x1e96be;_0x1a9744[_0x59e4('0x9')]=_0x41efbe[0x9];var _0x15f11c={};_0x15f11c[_0x59e4('0xa')]=_0x59e4('0xb');_0x15f11c['method']='login';var _0x3db483=[];_0x3db483['push'](_0x41efbe[0x2]);_0x3db483[_0x59e4('0xc')](_0x41efbe[0x5]);_0x3db483[_0x59e4('0xc')](_0x41efbe[0x6]);_0x15f11c[_0x59e4('0xd')]=_0x3db483;_0x15f11c['id']=0x1;var _0x526ad9=JSON[_0x59e4('0xe')](_0x15f11c);var _0x473640={'encoding':_0x59e4('0xf'),'method':_0x59e4('0x10'),'timeout':0x2710,'url':_0x4f0f70,'headers':{'Content-Type':_0x59e4('0x11')},'body':_0x526ad9};return rp(_0x473640)[_0x59e4('0x12')](function(_0x480bdd){const _0x2b67a3=JSON[_0x59e4('0x13')](_0x480bdd);if(!_0x2b67a3['result'][_0x59e4('0x14')]){throw new Error(_0x59e4('0x15'));}var _0xc83c5a=_0x795909;var _0x3b6d2a=_0x59e4('0x16')+_0x5d7f5d+'&serviceId='+_0x36c598+_0x59e4('0x17')+_0xc83c5a+_0x59e4('0x18')+JSON[_0x59e4('0xe')](_0x1a9744);var _0x23ef4b=_0x577c6d+'?'+_0x3b6d2a;return rp(_0x23ef4b);})[_0x59e4('0x12')](function(_0x338241){logger[_0x59e4('0x19')](_0x59e4('0x1a'),_0x39aac0,_0x338241);_0x316777['stop']();})[_0x59e4('0x1b')](function(_0x6a7cf2){logger[_0x59e4('0x1c')](_0x59e4('0x1d'),_0x39aac0,_['isObject'](_0x6a7cf2)?JSON[_0x59e4('0xe')](_0x6a7cf2):_0x6a7cf2);_0x316777[_0x59e4('0x1e')]();});}else{logger['info'](_0x59e4('0x1f'),_0x39aac0);_0x316777[_0x59e4('0x20')]();}};};
\ No newline at end of file
+var _0x70bc=['&sessionId=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger','routing','consequence','\x20-\x20','replace','includes','push','?params=','urlOnRing','title','jsonrpc','method','params','stringify','utf8','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x70bc,0x189));var _0xc70b=function(_0x1336f3,_0x2cf47b){_0x1336f3=_0x1336f3-0x0;var _0x4ec0b4=_0x70bc[_0x1336f3];return _0x4ec0b4;};'use strict';var rp=require(_0xc70b('0x0'));var logger=require(_0xc70b('0x1'))(_0xc70b('0x2'));var _=require('lodash');var arr=[];exports[_0xc70b('0x3')]=function(_0x23b1a0,_0x55344){return function(_0x3b3aee){var _0xbc5fb4=_0x55344[0xa];var _0x3644a4=_0x55344[0xb];var _0x1547fa=_0x55344[0xc];var _0x1295de=_0x55344[0xd];var _0x395384=_0x55344[0xe];var _0x2f5188=_0x55344[0xf]['replace'](/\n/g,_0xc70b('0x4'));var _0x1d9c0a=_0x55344[0x10][_0xc70b('0x5')](/\n/g,'\x20');if(!arr[_0xc70b('0x6')](_0x3644a4)){arr[_0xc70b('0x7')](_0x3644a4);var _0x4319f4=_0x55344[0x3];var _0x172ee8=_0x55344[0x4];var _0x3c38c5=_0x55344[0x1];var _0x46b8cf=_0x55344[0x0];var _0x19b7f2={};_0x19b7f2['urlOnAnswer']=_0x55344[0x8]+_0xc70b('0x8')+_0x1547fa+'|'+_0xbc5fb4+'|'+_0x1295de+'|'+_0x3644a4+'|'+_0x395384;_0x19b7f2[_0xc70b('0x9')]=_0x55344[0x7]+_0xc70b('0x8')+_0x1547fa+'|'+_0xbc5fb4+'|'+_0x1295de+'|'+_0x3644a4+'|'+_0x395384+'|'+_0x2f5188+'|'+_0x1d9c0a;_0x19b7f2[_0xc70b('0xa')]=_0x55344[0x9];var _0x3c6612={};_0x3c6612[_0xc70b('0xb')]='2.0';_0x3c6612[_0xc70b('0xc')]='login';var _0x2391b6=[];_0x2391b6[_0xc70b('0x7')](_0x55344[0x2]);_0x2391b6[_0xc70b('0x7')](_0x55344[0x5]);_0x2391b6['push'](_0x55344[0x6]);_0x3c6612[_0xc70b('0xd')]=_0x2391b6;_0x3c6612['id']=0x1;var _0x385588=JSON[_0xc70b('0xe')](_0x3c6612);var _0x50f7c8={'encoding':_0xc70b('0xf'),'method':_0xc70b('0x10'),'timeout':0x2710,'url':_0x4319f4,'headers':{'Content-Type':_0xc70b('0x11')},'body':_0x385588};return rp(_0x50f7c8)[_0xc70b('0x12')](function(_0x5a59b8){const _0x5594e3=JSON[_0xc70b('0x13')](_0x5a59b8);if(!_0x5594e3[_0xc70b('0x14')][_0xc70b('0x15')]){throw new Error(_0xc70b('0x16'));}var _0x46c516=_0x3644a4;var _0x4a4613='channelId='+_0x3c38c5+'&serviceId='+_0x46b8cf+_0xc70b('0x17')+_0x46c516+'&data='+JSON[_0xc70b('0xe')](_0x19b7f2);var _0x18f703=_0x172ee8+'?'+_0x4a4613;return rp(_0x18f703);})['then'](function(_0x16226e){logger[_0xc70b('0x18')](_0xc70b('0x19'),_0x23b1a0,_0x16226e);_0x3b3aee[_0xc70b('0x1a')]();})[_0xc70b('0x1b')](function(_0x3b610b){logger[_0xc70b('0x1c')]('[%s][TVOX]\x20%s',_0x23b1a0,_[_0xc70b('0x1d')](_0x3b610b)?JSON[_0xc70b('0xe')](_0x3b610b):_0x3b610b);_0x3b3aee[_0xc70b('0x1a')]();});}else{logger[_0xc70b('0x18')](_0xc70b('0x1e'),_0x23b1a0);_0x3b3aee[_0xc70b('0x1f')]();}};};
\ No newline at end of file
index ea6c0b7..07cbea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x51002a,_0x5bccbc){var _0x401736=function(_0x266c25){while(--_0x266c25){_0x51002a['push'](_0x51002a['shift']());}};_0x401736(++_0x5bccbc);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x571811,_0x403952){var _0x1d8781=function(_0x59d9cd){while(--_0x59d9cd){_0x571811['push'](_0x571811['shift']());}};_0x1d8781(++_0x403952);}(_0xe706,0xa3));var _0x6e70=function(_0x503bc0,_0x12aeee){_0x503bc0=_0x503bc0-0x0;var _0x383246=_0xe706[_0x503bc0];return _0x383246;};'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 b38ba77..270568a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c08=['interval','listen','rules','channel','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','join','app','.js','toLowerCase','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','condition','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','emit','complete','No\x20applications\x20to\x20execute','stack','agent','agents','end','QueueReport','update','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','find','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','./applications/utils','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals'];(function(_0x46c5e7,_0x94a67d){var _0x2cbecf=function(_0x43db99){while(--_0x43db99){_0x46c5e7['push'](_0x46c5e7['shift']());}};_0x2cbecf(++_0x94a67d);}(_0x4c08,0x183));var _0x84c0=function(_0x3f88bc,_0xe38cf5){_0x3f88bc=_0x3f88bc-0x0;var _0x4df1c4=_0x4c08[_0x3f88bc];return _0x4df1c4;};'use strict';var _=require(_0x84c0('0x0'));var util=require(_0x84c0('0x1'));var path=require(_0x84c0('0x2'));var fs=require('fs');var jayson=require(_0x84c0('0x3'));var BPromise=require(_0x84c0('0x4'));var utils=require(_0x84c0('0x5'));var sUtils=require('./applications/strategy/util');var logger=require(_0x84c0('0x6'))(_0x84c0('0x7'));var rpc={'openchannelQueueReport':require(_0x84c0('0x8')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x84c0('0x9')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x84c0('0xa'))};var RuleEngine=require(_0x84c0('0xb'));function getId(_0x45d52d,_0x1a5bd0,_0x996e88){return util[_0x84c0('0xc')](_0x84c0('0xd'),_0x45d52d,_0x1a5bd0||0x0,_0x996e88||0x0);}function getIntervals(_0x1583be,_0x49ff83){var _0x2271b4=[];if(!_[_0x84c0('0xe')](_0x49ff83['IntervalId'])&&!_['isNil'](_0x1583be[_0x49ff83[_0x84c0('0xf')]])&&!_[_0x84c0('0xe')](_0x1583be[_0x49ff83[_0x84c0('0xf')]]['Intervals'])){_0x2271b4=_['map'](_0x1583be[_0x49ff83[_0x84c0('0xf')]][_0x84c0('0x10')],_0x84c0('0x11'));}else if(!_[_0x84c0('0xe')](_0x49ff83[_0x84c0('0x11')])){_0x2271b4=[_0x49ff83[_0x84c0('0x11')]];}return _0x2271b4;}exports[_0x84c0('0x12')]=function(_0x3a8e43){_0x3a8e43[_0x84c0('0x13')]={};return new BPromise(function(_0x56085f,_0x35f965){var _0x25fb50={'Start':function(_0x3a613b){var _0xb6f5fc=this;return new Promise(function(_0x43883d,_0x4ffa63){if(_0x3a613b){try{var _0x1d471c=[];var _0x195865=getId(_0x3a613b[_0x84c0('0x14')],_0x3a613b[_0x84c0('0x15')]?_0x3a613b[_0x84c0('0x15')]['id']:0x0,_0x3a613b['interaction']?_0x3a613b[_0x84c0('0x16')]['id']:0x0);var _0x5c44e0=sUtils[_0x84c0('0x17')](_0x3a8e43,_0x3a613b);if(!_0x5c44e0&&_0x3a613b[_0x84c0('0x18')]&&_[_0x84c0('0x19')](_0x3a613b[_0x84c0('0x18')])&&_0x3a613b['applications'][_0x84c0('0x1a')]){for(var _0x495746=0x0;_0x495746<_0x3a613b[_0x84c0('0x18')]['length'];_0x495746+=0x1){var _0x535108=_0x3a613b[_0x84c0('0x18')][_0x495746];if(fs[_0x84c0('0x1b')](path[_0x84c0('0x1c')](__dirname,_0x84c0('0x18'),_0x535108[_0x84c0('0x1d')]+_0x84c0('0x1e')))){var _0x501f44=[];switch(_0x535108[_0x84c0('0x1d')][_0x84c0('0x1f')]()){case'autoreply':var _0x1bd38b=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');if(_0x3a613b[_0x84c0('0x14')]===_0x84c0('0x22')){_0x501f44[_0x84c0('0x23')](_0x1bd38b[0x0]);_0x501f44[_0x84c0('0x23')](_0x1bd38b[0x1]);_0x501f44[_0x84c0('0x23')](_0x1bd38b[_0x84c0('0x24')](0x2,_0x1bd38b[_0x84c0('0x1a')])[_0x84c0('0x1c')](','));}else{_0x501f44[_0x84c0('0x23')](_0x1bd38b[0x0]);_0x501f44[_0x84c0('0x23')](_0x1bd38b[_0x84c0('0x24')](0x1,_0x1bd38b['length'])[_0x84c0('0x1c')](','));}break;case _0x84c0('0x25'):var _0x2c1b45=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x2c1b45[0x0]);_0x501f44[_0x84c0('0x23')](_0x2c1b45[0x1]);_0x501f44[_0x84c0('0x23')](_0x2c1b45[_0x84c0('0x24')](0x2,_0x2c1b45[_0x84c0('0x1a')])['join'](','));break;case _0x84c0('0x26'):var _0x371125=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x371125[0x0]);_0x501f44[_0x84c0('0x23')](_0x371125[0x1]);_0x501f44[_0x84c0('0x23')](_0x371125[0x2]);_0x501f44['push'](_0x371125[0x3]);_0x501f44[_0x84c0('0x23')](_0x371125['slice'](0x4,_0x371125[_0x84c0('0x1a')])[_0x84c0('0x1c')](','));break;case _0x84c0('0x27'):var _0x399402=_0x535108['appdata'][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x399402[0x0]);_0x501f44[_0x84c0('0x23')](_0x399402[0x1]);_0x501f44['push'](_0x399402[0x2]);_0x501f44['push'](_0x399402[0x3]);_0x501f44['push'](_0x399402['slice'](0x4,_0x399402[_0x84c0('0x1a')])[_0x84c0('0x1c')](','));break;case _0x84c0('0x15'):_0x501f44['push'](_0x535108[_0x84c0('0x20')]);break;case _0x84c0('0x28'):_0x501f44[_0x84c0('0x23')](_0x535108[_0x84c0('0x29')]);_0x501f44['push'](_0x535108['appdata']);break;case _0x84c0('0x2a'):var _0x4d74ec=utils[_0x84c0('0x2b')](_0x3a613b[_0x84c0('0x2c')][_0x84c0('0x2d')],_0x3a613b);var _0x3448e8=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x3448e8[0x0]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x1]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x2]);_0x501f44['push'](_0x3448e8[0x3]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x4]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x5]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x6]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x7]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x8]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x9]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0xa]);_0x501f44[_0x84c0('0x23')](_0x3a613b[_0x84c0('0x16')]['id']);_0x501f44[_0x84c0('0x23')](_0x3a613b[_0x84c0('0x15')]['id']);_0x501f44[_0x84c0('0x23')](_0x535108[_0x84c0('0x2e')]);_0x501f44[_0x84c0('0x23')](_0x3a613b['interaction'][_0x84c0('0x2f')]);_0x501f44[_0x84c0('0x23')](_0x3a613b[_0x84c0('0x30')][_0x84c0('0x30')]);_0x501f44['push'](_0x4d74ec);break;default:_0x501f44=_[_0x84c0('0xe')](_0x535108[_0x84c0('0x20')])?[]:_0x535108[_0x84c0('0x20')]['split'](',');}var _0x3caf18={'id':util[_0x84c0('0xc')](_0x84c0('0x31'),_0x195865,_0x535108['id'],_0x535108[_0x84c0('0x1d')]),'condition':require(_0x84c0('0x32'))[_0x84c0('0x33')](_0x195865,getIntervals(_0x3a8e43['intervals'],_0x535108),_0x3a8e43),'consequence':require('./applications/'+_0x535108[_0x84c0('0x1d')])[_0x84c0('0x34')](_0x195865,_0x501f44,_0x3a8e43,_0x3a613b),'p':_0x535108[_0x84c0('0x35')]||0x0};logger[_0x84c0('0x36')](_0x84c0('0x37'),_0x3caf18['id'],_0x84c0('0x38'),getIntervals(_0x3a8e43[_0x84c0('0x39')],_0x535108)[_0x84c0('0x1c')]('\x20|\x20'));_0x1d471c[_0x84c0('0x23')](_0x3caf18);}else{logger[_0x84c0('0x3a')](_0x84c0('0x3b'),path[_0x84c0('0x1c')](__dirname,'applications',_0x535108['app']+_0x84c0('0x1e')));}}_0x3a8e43['rules'][_0x195865]=new RuleEngine(_0x1d471c);_0x3a8e43[_0x84c0('0x13')][_0x195865][_0x84c0('0x3c')](_0x3a613b,function(_0x3cfa1a){logger[_0x84c0('0x36')](_0x84c0('0x3d'),JSON['stringify'](_0x3cfa1a['matchPath']));if(_0x3a8e43[_0x84c0('0x13')][_0x195865]){_0x3a8e43['rules'][_0x195865][_0x84c0('0x3e')](_0x84c0('0x3f'));}});return _0x43883d({'code':0xc8,'message':_0x3a613b});}else{if(_0x5c44e0){logger['info'](util[_0x84c0('0xc')]('Skipped\x20routing\x20for\x20%s',_0x195865));}else{logger[_0x84c0('0x36')](_0x84c0('0x40'));}return _0x43883d({'code':0xc8,'message':_0x3a613b});}}catch(_0x17e589){logger['error'](_0x17e589[_0x84c0('0x41')]);return _0x4ffa63(_0xb6f5fc[_0x84c0('0x3a')](0x1f4,_0x17e589));}}return _0x4ffa63('routing\x20is\x20empty');});},'AcceptMessage':function(_0x2688ce){var _0x2ea9ff=this;return new Promise(function(_0x111738,_0x4ea37a){if(_0x2688ce['agent']&&_0x2688ce[_0x84c0('0x42')]['id']){if(_0x3a8e43[_0x84c0('0x43')][_0x2688ce[_0x84c0('0x42')]['id']]){_0x3a8e43[_0x84c0('0x43')][_0x2688ce[_0x84c0('0x42')]['id']]['busy']=![];_0x3a8e43[_0x84c0('0x43')][_0x2688ce['agent']['id']]['busyQueue']=undefined;}}if(_0x2688ce[_0x84c0('0x15')]&&_0x2688ce[_0x84c0('0x15')]['id']){try{var _0x43dd4b=getId(_0x2688ce['channel'],_0x2688ce[_0x84c0('0x15')]?_0x2688ce['message']['id']:0x0,_0x2688ce[_0x84c0('0x16')]?_0x2688ce['interaction']['id']:0x0);if(_0x3a8e43[_0x84c0('0x13')][_0x43dd4b]){_0x3a8e43['rules'][_0x43dd4b][_0x84c0('0x3e')](_0x84c0('0x44'));if(rpc[_0x2688ce[_0x84c0('0x14')]+_0x84c0('0x45')]){rpc[_0x2688ce['channel']+_0x84c0('0x45')][_0x84c0('0x46')](_0x43dd4b,{'UserId':_0x2688ce[_0x84c0('0x15')]['UserId']})['catch'](function(){logger['error'](_0x84c0('0x47'));});}}return _0x111738({'code':0xc8,'message':_0x2688ce});}catch(_0x3a4ec9){logger['error'](_0x3a4ec9['stack']);return _0x4ea37a(_0x2ea9ff[_0x84c0('0x3a')](0x1f4,_0x3a4ec9));}}logger[_0x84c0('0x3a')](_0x84c0('0x48'));return _0x4ea37a(_0x2ea9ff[_0x84c0('0x3a')](0x1f4,_0x84c0('0x48')));});},'RejectMessage':function(_0x2e91b7){var _0x19232d=this;return new Promise(function(_0x38655,_0x397327){if(_0x2e91b7['agent']&&_0x2e91b7[_0x84c0('0x42')]['id']){try{if(_0x3a8e43[_0x84c0('0x43')][_0x2e91b7[_0x84c0('0x42')]['id']]){_0x3a8e43[_0x84c0('0x43')][_0x2e91b7[_0x84c0('0x42')]['id']][_0x84c0('0x49')]=![];_0x3a8e43[_0x84c0('0x43')][_0x2e91b7[_0x84c0('0x42')]['id']][_0x84c0('0x4a')]=undefined;}return _0x38655({'code':0xc8,'message':_0x2e91b7});}catch(_0x3bdf2a){logger[_0x84c0('0x3a')](_0x3bdf2a[_0x84c0('0x41')]);return _0x397327(_0x19232d[_0x84c0('0x3a')](0x1f4,_0x3bdf2a));}}logger[_0x84c0('0x3a')](_0x84c0('0x48'));return _0x397327(_0x19232d[_0x84c0('0x3a')](0x1f4,_0x84c0('0x48')));});},'AbandonInteraction':function(_0x1c4748){var _0x4334d8=this;return new Promise(function(_0x3a21a4,_0x54282b){if(_0x1c4748[_0x84c0('0x14')]&&_0x1c4748[_0x84c0('0x16')]&&_0x1c4748[_0x84c0('0x16')]['id']){try{var _0x23c218=getId(_0x1c4748[_0x84c0('0x14')],_0x1c4748['message']?_0x1c4748[_0x84c0('0x15')]['id']:0x0,_0x1c4748[_0x84c0('0x16')]?_0x1c4748[_0x84c0('0x16')]['id']:0x0);if(_0x3a8e43['rules'][_0x23c218]){_0x3a8e43[_0x84c0('0x13')][_0x23c218][_0x84c0('0x3e')](_0x84c0('0x44'));}return _0x3a21a4({'code':0xc8,'message':_0x1c4748});}catch(_0x2c264e){logger['error'](_0x2c264e['stack']);return _0x54282b(_0x4334d8[_0x84c0('0x3a')](0x1f4,_0x2c264e));}}logger[_0x84c0('0x3a')](_0x84c0('0x48'));return _0x54282b(_0x4334d8[_0x84c0('0x3a')](0x1f4,_0x84c0('0x48')));});},'AgentCapacity':function(_0x2f9472){var _0x3c6590=this;return new Promise(function(_0x408d06,_0x2c2c9f){if(_0x3a8e43[_0x84c0('0x43')][_0x84c0('0x4b')](_0x2f9472['id'])){for(var _0x35e981 in _0x2f9472[_0x84c0('0x4c')]){if(_0x2f9472[_0x84c0('0x4c')][_0x84c0('0x4b')](_0x35e981)){if(_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']][_0x84c0('0x4b')](_0x35e981+_0x84c0('0x4d'))){_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']][_0x35e981+'CurrentCapacity']=parseInt(_0x2f9472['capacity'][_0x35e981],0xa);}}}_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']]['updateRealtime']();return _0x408d06({'code':0xc8,'message':_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']]});}else{return _0x2c2c9f(_0x3c6590['error'](0x1f4,_0x84c0('0x4e')));}});},'Agents':function(_0x120b33){return new Promise(function(_0x1cb0cc){var _0x5c236a=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x43')]);if(_0x120b33&&_0x120b33['id']){var _0x137a07=_[_0x84c0('0x50')](_0x5c236a,function(_0x39de19){return _0x39de19['id']===_0x120b33['id'];});_0x1cb0cc(_0x137a07);}else{_0x1cb0cc({'count':_0x5c236a[_0x84c0('0x1a')],'rows':_0x5c236a});}});},'ChatQueues':function(){return new Promise(function(_0x2556cd){var _0x47b7be=[];for(var _0xbb9f39 in _0x3a8e43[_0x84c0('0x51')]){if(_0x3a8e43[_0x84c0('0x51')][_0x84c0('0x4b')](_0xbb9f39)){var _0x349c77=_0x3a8e43['chatQueues'][_0xbb9f39];var _0x214c93={'id':_0x349c77['id'],'available':_0x349c77[_0x84c0('0x52')],'loggedIn':_0x349c77[_0x84c0('0x53')],'name':_0x349c77[_0x84c0('0x54')],'paused':_0x349c77[_0x84c0('0x55')],'waiting':_0x349c77[_0x84c0('0x56')]};_0x47b7be['push'](_0x214c93);}}_0x2556cd({'count':_0x47b7be[_0x84c0('0x1a')],'rows':_0x47b7be});});},'MailQueues':function(){return new Promise(function(_0x2082ed){var _0x96579c=[];for(var _0x260e0a in _0x3a8e43[_0x84c0('0x57')]){if(_0x3a8e43['mailQueues'][_0x84c0('0x4b')](_0x260e0a)){var _0x5a9b50=_0x3a8e43[_0x84c0('0x57')][_0x260e0a];var _0x58136f={'id':_0x5a9b50['id'],'available':_0x5a9b50['available'],'loggedIn':_0x5a9b50[_0x84c0('0x53')],'name':_0x5a9b50[_0x84c0('0x54')],'paused':_0x5a9b50[_0x84c0('0x55')],'waiting':_0x5a9b50[_0x84c0('0x56')]};_0x96579c[_0x84c0('0x23')](_0x58136f);}}_0x2082ed({'count':_0x96579c[_0x84c0('0x1a')],'rows':_0x96579c});});},'OpenchannelQueues':function(){return new Promise(function(_0xad4ed7){var _0x2c28d0=[];for(var _0x22af0d in _0x3a8e43[_0x84c0('0x58')]){if(_0x3a8e43[_0x84c0('0x58')][_0x84c0('0x4b')](_0x22af0d)){var _0x31e0cb=_0x3a8e43[_0x84c0('0x58')][_0x22af0d];var _0x5aa09d={'id':_0x31e0cb['id'],'available':_0x31e0cb[_0x84c0('0x52')],'loggedIn':_0x31e0cb['loggedIn'],'name':_0x31e0cb[_0x84c0('0x54')],'paused':_0x31e0cb[_0x84c0('0x55')],'waiting':_0x31e0cb[_0x84c0('0x56')]};_0x2c28d0[_0x84c0('0x23')](_0x5aa09d);}}_0xad4ed7({'count':_0x2c28d0[_0x84c0('0x1a')],'rows':_0x2c28d0});});},'SmsQueues':function(){return new Promise(function(_0x27201c){var _0x4cb56d=[];for(var _0x215625 in _0x3a8e43['smsQueues']){if(_0x3a8e43['smsQueues'][_0x84c0('0x4b')](_0x215625)){var _0x44c190=_0x3a8e43[_0x84c0('0x59')][_0x215625];var _0x318a63={'id':_0x44c190['id'],'available':_0x44c190[_0x84c0('0x52')],'loggedIn':_0x44c190['loggedIn'],'name':_0x44c190[_0x84c0('0x54')],'paused':_0x44c190['paused'],'waiting':_0x44c190[_0x84c0('0x56')]};_0x4cb56d[_0x84c0('0x23')](_0x318a63);}}_0x27201c({'count':_0x4cb56d['length'],'rows':_0x4cb56d});});},'FaxQueues':function(){return new Promise(function(_0x5b75de){var _0x5ae3e4=[];for(var _0x416741 in _0x3a8e43[_0x84c0('0x5a')]){if(_0x3a8e43[_0x84c0('0x5a')][_0x84c0('0x4b')](_0x416741)){var _0x2abc79=_0x3a8e43[_0x84c0('0x5a')][_0x416741];var _0x1490c4={'id':_0x2abc79['id'],'available':_0x2abc79[_0x84c0('0x52')],'loggedIn':_0x2abc79[_0x84c0('0x53')],'name':_0x2abc79[_0x84c0('0x54')],'paused':_0x2abc79[_0x84c0('0x55')],'waiting':_0x2abc79['waiting']};_0x5ae3e4[_0x84c0('0x23')](_0x1490c4);}}_0x5b75de({'count':_0x5ae3e4[_0x84c0('0x1a')],'rows':_0x5ae3e4});});},'WhatsappQueues':function(){return new Promise(function(_0x1a059d){var _0x315b38=[];for(var _0x36dd9c in _0x3a8e43['whatsappQueues']){if(_0x3a8e43['whatsappQueues']['hasOwnProperty'](_0x36dd9c)){var _0x51e192=_0x3a8e43[_0x84c0('0x5b')][_0x36dd9c];var _0x36f42e={'id':_0x51e192['id'],'available':_0x51e192['available'],'loggedIn':_0x51e192[_0x84c0('0x53')],'name':_0x51e192[_0x84c0('0x54')],'paused':_0x51e192[_0x84c0('0x55')],'waiting':_0x51e192['waiting']};_0x315b38['push'](_0x36f42e);}}_0x1a059d({'count':_0x315b38['length'],'rows':_0x315b38});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x4d1e8c){var _0x4c3a7e=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5c')]);_0x4d1e8c({'count':_0x4c3a7e[_0x84c0('0x1a')],'rows':_0x4c3a7e});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x16c67d){var _0x3b02bc=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5d')]);_0x16c67d({'count':_0x3b02bc['length'],'rows':_0x3b02bc});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x23151c){var _0xaa96e5=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5e')]);_0x23151c({'count':_0xaa96e5[_0x84c0('0x1a')],'rows':_0xaa96e5});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0xd6386c){var _0x143561=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5f')]);_0xd6386c({'count':_0x143561[_0x84c0('0x1a')],'rows':_0x143561});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x213900){var _0x47fb03=_['values'](_0x3a8e43['faxQueuesWaitingInteractions']);_0x213900({'count':_0x47fb03[_0x84c0('0x1a')],'rows':_0x47fb03});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x30e0b5){var _0x14f27b=_['values'](_0x3a8e43[_0x84c0('0x60')]);_0x30e0b5({'count':_0x14f27b[_0x84c0('0x1a')],'rows':_0x14f27b});});}};var _0x1d85f5=jayson[_0x84c0('0x61')](_0x25fb50)[_0x84c0('0x62')]();_0x1d85f5['on'](_0x84c0('0x3a'),function(_0x31d5ce){logger['error'](JSON['stringify'](_0x31d5ce));return _0x35f965(_0x31d5ce);});_0x1d85f5[_0x84c0('0x12')](0x232c,_0x84c0('0x63'),function(){console['log']('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x56085f(_0x84c0('0x64')+0x232c);});});};
\ No newline at end of file
+var _0xdbfd=['paused','waiting','mailQueues','available','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','./applications/utils','./applications/strategy/util','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','rules','channel','message','interaction','checkWaitingNotifications','applications','length','join','app','.js','toLowerCase','appdata','push','slice','dialogflow','split','amazonlex','tag','TagId','tvox','getMustacheRender','account','ContactId','./applications/','consequence','priority','info','on\x20interval','intervals','error','Please\x20create\x20a\x20new\x20file\x20under','execute','stringify','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','name'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0xdbfd,0x6b));var _0xddbf=function(_0x55bd0b,_0x711bae){_0x55bd0b=_0x55bd0b-0x0;var _0x5ae09b=_0xdbfd[_0x55bd0b];return _0x5ae09b;};'use strict';var _=require('lodash');var util=require(_0xddbf('0x0'));var path=require(_0xddbf('0x1'));var fs=require('fs');var jayson=require(_0xddbf('0x2'));var BPromise=require('bluebird');var utils=require(_0xddbf('0x3'));var sUtils=require(_0xddbf('0x4'));var logger=require('../../../config/logger')(_0xddbf('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xddbf('0x6')),'chatQueueReport':require(_0xddbf('0x7')),'smsQueueReport':require(_0xddbf('0x8')),'faxQueueReport':require(_0xddbf('0x9')),'whatsappQueueReport':require(_0xddbf('0xa'))};var RuleEngine=require(_0xddbf('0xb'));function getId(_0x88e97c,_0x1b02c5,_0xfaea91){return util[_0xddbf('0xc')](_0xddbf('0xd'),_0x88e97c,_0x1b02c5||0x0,_0xfaea91||0x0);}function getIntervals(_0x3b906e,_0xf9d055){var _0x335714=[];if(!_[_0xddbf('0xe')](_0xf9d055[_0xddbf('0xf')])&&!_[_0xddbf('0xe')](_0x3b906e[_0xf9d055[_0xddbf('0xf')]])&&!_['isNil'](_0x3b906e[_0xf9d055[_0xddbf('0xf')]][_0xddbf('0x10')])){_0x335714=_['map'](_0x3b906e[_0xf9d055['IntervalId']][_0xddbf('0x10')],'interval');}else if(!_['isNil'](_0xf9d055[_0xddbf('0x11')])){_0x335714=[_0xf9d055[_0xddbf('0x11')]];}return _0x335714;}exports['listen']=function(_0x3f84e1){_0x3f84e1[_0xddbf('0x12')]={};return new BPromise(function(_0x5dc304,_0x17b835){var _0x3bf7d0={'Start':function(_0x1ada5c){var _0x192d53=this;return new Promise(function(_0x297af6,_0x430df1){if(_0x1ada5c){try{var _0xdf3470=[];var _0xee2b22=getId(_0x1ada5c[_0xddbf('0x13')],_0x1ada5c[_0xddbf('0x14')]?_0x1ada5c[_0xddbf('0x14')]['id']:0x0,_0x1ada5c[_0xddbf('0x15')]?_0x1ada5c[_0xddbf('0x15')]['id']:0x0);var _0x1aa18e=sUtils[_0xddbf('0x16')](_0x3f84e1,_0x1ada5c);if(!_0x1aa18e&&_0x1ada5c[_0xddbf('0x17')]&&_['isArray'](_0x1ada5c['applications'])&&_0x1ada5c[_0xddbf('0x17')][_0xddbf('0x18')]){for(var _0x25e4d7=0x0;_0x25e4d7<_0x1ada5c[_0xddbf('0x17')]['length'];_0x25e4d7+=0x1){var _0x56a132=_0x1ada5c[_0xddbf('0x17')][_0x25e4d7];if(fs['existsSync'](path[_0xddbf('0x19')](__dirname,'applications',_0x56a132[_0xddbf('0x1a')]+_0xddbf('0x1b')))){var _0x4c378a=[];switch(_0x56a132[_0xddbf('0x1a')][_0xddbf('0x1c')]()){case'autoreply':var _0x1dea61=_0x56a132[_0xddbf('0x1d')]['split'](',');if(_0x1ada5c[_0xddbf('0x13')]==='mail'){_0x4c378a[_0xddbf('0x1e')](_0x1dea61[0x0]);_0x4c378a[_0xddbf('0x1e')](_0x1dea61[0x1]);_0x4c378a[_0xddbf('0x1e')](_0x1dea61[_0xddbf('0x1f')](0x2,_0x1dea61[_0xddbf('0x18')])[_0xddbf('0x19')](','));}else{_0x4c378a[_0xddbf('0x1e')](_0x1dea61[0x0]);_0x4c378a[_0xddbf('0x1e')](_0x1dea61[_0xddbf('0x1f')](0x1,_0x1dea61[_0xddbf('0x18')])[_0xddbf('0x19')](','));}break;case _0xddbf('0x20'):var _0x4dda45=_0x56a132[_0xddbf('0x1d')][_0xddbf('0x21')](',');_0x4c378a[_0xddbf('0x1e')](_0x4dda45[0x0]);_0x4c378a['push'](_0x4dda45[0x1]);_0x4c378a[_0xddbf('0x1e')](_0x4dda45['slice'](0x2,_0x4dda45['length'])[_0xddbf('0x19')](','));break;case'dialogflowv2':var _0x43d0d4=_0x56a132[_0xddbf('0x1d')]['split'](',');_0x4c378a['push'](_0x43d0d4[0x0]);_0x4c378a[_0xddbf('0x1e')](_0x43d0d4[0x1]);_0x4c378a[_0xddbf('0x1e')](_0x43d0d4[0x2]);_0x4c378a[_0xddbf('0x1e')](_0x43d0d4[0x3]);_0x4c378a[_0xddbf('0x1e')](_0x43d0d4[_0xddbf('0x1f')](0x4,_0x43d0d4['length'])[_0xddbf('0x19')](','));break;case _0xddbf('0x22'):var _0x1792e3=_0x56a132['appdata'][_0xddbf('0x21')](',');_0x4c378a[_0xddbf('0x1e')](_0x1792e3[0x0]);_0x4c378a[_0xddbf('0x1e')](_0x1792e3[0x1]);_0x4c378a[_0xddbf('0x1e')](_0x1792e3[0x2]);_0x4c378a[_0xddbf('0x1e')](_0x1792e3[0x3]);_0x4c378a[_0xddbf('0x1e')](_0x1792e3[_0xddbf('0x1f')](0x4,_0x1792e3[_0xddbf('0x18')])[_0xddbf('0x19')](','));break;case'message':_0x4c378a['push'](_0x56a132[_0xddbf('0x1d')]);break;case _0xddbf('0x23'):_0x4c378a[_0xddbf('0x1e')](_0x56a132[_0xddbf('0x24')]);_0x4c378a[_0xddbf('0x1e')](_0x56a132['appdata']);break;case _0xddbf('0x25'):var _0x4ece95=utils[_0xddbf('0x26')](_0x1ada5c[_0xddbf('0x27')]['notificationTemplate'],_0x1ada5c);var _0x1ccf99=_0x56a132['appdata'][_0xddbf('0x21')](',');_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x0]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x1]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x2]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x3]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x4]);_0x4c378a['push'](_0x1ccf99[0x5]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x6]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x7]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x8]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0x9]);_0x4c378a[_0xddbf('0x1e')](_0x1ccf99[0xa]);_0x4c378a['push'](_0x1ada5c[_0xddbf('0x15')]['id']);_0x4c378a[_0xddbf('0x1e')](_0x1ada5c[_0xddbf('0x14')]['id']);_0x4c378a[_0xddbf('0x1e')](_0x56a132['ChatWebsiteId']);_0x4c378a['push'](_0x1ada5c[_0xddbf('0x15')][_0xddbf('0x28')]);_0x4c378a[_0xddbf('0x1e')](_0x1ada5c['body']['body']);_0x4c378a['push'](_0x4ece95);break;default:_0x4c378a=_['isNil'](_0x56a132[_0xddbf('0x1d')])?[]:_0x56a132[_0xddbf('0x1d')]['split'](',');}var _0x32dbf0={'id':util[_0xddbf('0xc')]('%s:%s:%s',_0xee2b22,_0x56a132['id'],_0x56a132[_0xddbf('0x1a')]),'condition':require('./interval')['condition'](_0xee2b22,getIntervals(_0x3f84e1['intervals'],_0x56a132),_0x3f84e1),'consequence':require(_0xddbf('0x29')+_0x56a132[_0xddbf('0x1a')])[_0xddbf('0x2a')](_0xee2b22,_0x4c378a,_0x3f84e1,_0x1ada5c),'p':_0x56a132[_0xddbf('0x2b')]||0x0};logger[_0xddbf('0x2c')]('Push\x20new\x20rule',_0x32dbf0['id'],_0xddbf('0x2d'),getIntervals(_0x3f84e1[_0xddbf('0x2e')],_0x56a132)['join']('\x20|\x20'));_0xdf3470[_0xddbf('0x1e')](_0x32dbf0);}else{logger[_0xddbf('0x2f')](_0xddbf('0x30'),path[_0xddbf('0x19')](__dirname,'applications',_0x56a132[_0xddbf('0x1a')]+_0xddbf('0x1b')));}}_0x3f84e1[_0xddbf('0x12')][_0xee2b22]=new RuleEngine(_0xdf3470);_0x3f84e1[_0xddbf('0x12')][_0xee2b22][_0xddbf('0x31')](_0x1ada5c,function(_0x2d8c4e){logger[_0xddbf('0x2c')]('Applications\x20executed',JSON[_0xddbf('0x32')](_0x2d8c4e['matchPath']));if(_0x3f84e1[_0xddbf('0x12')][_0xee2b22]){_0x3f84e1['rules'][_0xee2b22][_0xddbf('0x33')](_0xddbf('0x34'));}});return _0x297af6({'code':0xc8,'message':_0x1ada5c});}else{if(_0x1aa18e){logger[_0xddbf('0x2c')](util[_0xddbf('0xc')]('Skipped\x20routing\x20for\x20%s',_0xee2b22));}else{logger[_0xddbf('0x2c')](_0xddbf('0x35'));}return _0x297af6({'code':0xc8,'message':_0x1ada5c});}}catch(_0x2661f7){logger['error'](_0x2661f7[_0xddbf('0x36')]);return _0x430df1(_0x192d53[_0xddbf('0x2f')](0x1f4,_0x2661f7));}}return _0x430df1(_0xddbf('0x37'));});},'AcceptMessage':function(_0x566b14){var _0x58d622=this;return new Promise(function(_0x193edb,_0x3a5d99){if(_0x566b14[_0xddbf('0x38')]&&_0x566b14[_0xddbf('0x38')]['id']){if(_0x3f84e1[_0xddbf('0x39')][_0x566b14[_0xddbf('0x38')]['id']]){_0x3f84e1[_0xddbf('0x39')][_0x566b14['agent']['id']][_0xddbf('0x3a')]=![];_0x3f84e1[_0xddbf('0x39')][_0x566b14[_0xddbf('0x38')]['id']][_0xddbf('0x3b')]=undefined;}}if(_0x566b14[_0xddbf('0x14')]&&_0x566b14[_0xddbf('0x14')]['id']){try{var _0x1a1d8e=getId(_0x566b14[_0xddbf('0x13')],_0x566b14[_0xddbf('0x14')]?_0x566b14[_0xddbf('0x14')]['id']:0x0,_0x566b14[_0xddbf('0x15')]?_0x566b14[_0xddbf('0x15')]['id']:0x0);if(_0x3f84e1['rules'][_0x1a1d8e]){_0x3f84e1[_0xddbf('0x12')][_0x1a1d8e][_0xddbf('0x33')](_0xddbf('0x3c'));if(rpc[_0x566b14[_0xddbf('0x13')]+_0xddbf('0x3d')]){rpc[_0x566b14[_0xddbf('0x13')]+_0xddbf('0x3d')][_0xddbf('0x3e')](_0x1a1d8e,{'UserId':_0x566b14[_0xddbf('0x14')]['UserId']})[_0xddbf('0x3f')](function(){logger[_0xddbf('0x2f')](_0xddbf('0x40'));});}}return _0x193edb({'code':0xc8,'message':_0x566b14});}catch(_0x495669){logger[_0xddbf('0x2f')](_0x495669[_0xddbf('0x36')]);return _0x3a5d99(_0x58d622[_0xddbf('0x2f')](0x1f4,_0x495669));}}logger[_0xddbf('0x2f')]('message\x20is\x20empty');return _0x3a5d99(_0x58d622[_0xddbf('0x2f')](0x1f4,_0xddbf('0x41')));});},'RejectMessage':function(_0x31fe1a){var _0x1b8d5a=this;return new Promise(function(_0x3cdd38,_0x1e0144){if(_0x31fe1a[_0xddbf('0x38')]&&_0x31fe1a[_0xddbf('0x38')]['id']){try{if(_0x3f84e1[_0xddbf('0x39')][_0x31fe1a[_0xddbf('0x38')]['id']]){_0x3f84e1[_0xddbf('0x39')][_0x31fe1a['agent']['id']]['busy']=![];_0x3f84e1['agents'][_0x31fe1a[_0xddbf('0x38')]['id']][_0xddbf('0x3b')]=undefined;}return _0x3cdd38({'code':0xc8,'message':_0x31fe1a});}catch(_0x421713){logger[_0xddbf('0x2f')](_0x421713[_0xddbf('0x36')]);return _0x1e0144(_0x1b8d5a[_0xddbf('0x2f')](0x1f4,_0x421713));}}logger['error']('message\x20is\x20empty');return _0x1e0144(_0x1b8d5a[_0xddbf('0x2f')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x629611){var _0x4ec9ce=this;return new Promise(function(_0x8e66f5,_0x44719d){if(_0x629611['channel']&&_0x629611[_0xddbf('0x15')]&&_0x629611[_0xddbf('0x15')]['id']){try{var _0x407f88=getId(_0x629611[_0xddbf('0x13')],_0x629611[_0xddbf('0x14')]?_0x629611['message']['id']:0x0,_0x629611[_0xddbf('0x15')]?_0x629611[_0xddbf('0x15')]['id']:0x0);if(_0x3f84e1['rules'][_0x407f88]){_0x3f84e1[_0xddbf('0x12')][_0x407f88][_0xddbf('0x33')](_0xddbf('0x3c'));}return _0x8e66f5({'code':0xc8,'message':_0x629611});}catch(_0x5ca3e7){logger[_0xddbf('0x2f')](_0x5ca3e7[_0xddbf('0x36')]);return _0x44719d(_0x4ec9ce[_0xddbf('0x2f')](0x1f4,_0x5ca3e7));}}logger[_0xddbf('0x2f')](_0xddbf('0x41'));return _0x44719d(_0x4ec9ce[_0xddbf('0x2f')](0x1f4,_0xddbf('0x41')));});},'AgentCapacity':function(_0x375235){var _0xa58ab5=this;return new Promise(function(_0x44a976,_0x10ff34){if(_0x3f84e1['agents'][_0xddbf('0x42')](_0x375235['id'])){for(var _0x3d2541 in _0x375235[_0xddbf('0x43')]){if(_0x375235[_0xddbf('0x43')]['hasOwnProperty'](_0x3d2541)){if(_0x3f84e1[_0xddbf('0x39')][_0x375235['id']]['hasOwnProperty'](_0x3d2541+'CurrentCapacity')){_0x3f84e1[_0xddbf('0x39')][_0x375235['id']][_0x3d2541+_0xddbf('0x44')]=parseInt(_0x375235['capacity'][_0x3d2541],0xa);}}}_0x3f84e1['agents'][_0x375235['id']][_0xddbf('0x45')]();return _0x44a976({'code':0xc8,'message':_0x3f84e1[_0xddbf('0x39')][_0x375235['id']]});}else{return _0x10ff34(_0xa58ab5[_0xddbf('0x2f')](0x1f4,_0xddbf('0x46')));}});},'Agents':function(_0x5908f3){return new Promise(function(_0x41ccc2){var _0x4258c1=_[_0xddbf('0x47')](_0x3f84e1[_0xddbf('0x39')]);if(_0x5908f3&&_0x5908f3['id']){var _0x80e971=_['find'](_0x4258c1,function(_0x234564){return _0x234564['id']===_0x5908f3['id'];});_0x41ccc2(_0x80e971);}else{_0x41ccc2({'count':_0x4258c1['length'],'rows':_0x4258c1});}});},'ChatQueues':function(){return new Promise(function(_0x10d201){var _0x360498=[];for(var _0x39df91 in _0x3f84e1[_0xddbf('0x48')]){if(_0x3f84e1['chatQueues']['hasOwnProperty'](_0x39df91)){var _0x5e091a=_0x3f84e1['chatQueues'][_0x39df91];var _0x15544d={'id':_0x5e091a['id'],'available':_0x5e091a['available'],'loggedIn':_0x5e091a[_0xddbf('0x49')],'name':_0x5e091a[_0xddbf('0x4a')],'paused':_0x5e091a[_0xddbf('0x4b')],'waiting':_0x5e091a[_0xddbf('0x4c')]};_0x360498[_0xddbf('0x1e')](_0x15544d);}}_0x10d201({'count':_0x360498['length'],'rows':_0x360498});});},'MailQueues':function(){return new Promise(function(_0x334e1e){var _0x333c7b=[];for(var _0x13d1a7 in _0x3f84e1['mailQueues']){if(_0x3f84e1['mailQueues'][_0xddbf('0x42')](_0x13d1a7)){var _0x21851a=_0x3f84e1[_0xddbf('0x4d')][_0x13d1a7];var _0x1f834b={'id':_0x21851a['id'],'available':_0x21851a[_0xddbf('0x4e')],'loggedIn':_0x21851a[_0xddbf('0x49')],'name':_0x21851a[_0xddbf('0x4a')],'paused':_0x21851a[_0xddbf('0x4b')],'waiting':_0x21851a[_0xddbf('0x4c')]};_0x333c7b[_0xddbf('0x1e')](_0x1f834b);}}_0x334e1e({'count':_0x333c7b[_0xddbf('0x18')],'rows':_0x333c7b});});},'OpenchannelQueues':function(){return new Promise(function(_0x230df5){var _0x36f2dc=[];for(var _0x5e8cc7 in _0x3f84e1[_0xddbf('0x4f')]){if(_0x3f84e1[_0xddbf('0x4f')]['hasOwnProperty'](_0x5e8cc7)){var _0x168df5=_0x3f84e1[_0xddbf('0x4f')][_0x5e8cc7];var _0x5859d2={'id':_0x168df5['id'],'available':_0x168df5[_0xddbf('0x4e')],'loggedIn':_0x168df5['loggedIn'],'name':_0x168df5[_0xddbf('0x4a')],'paused':_0x168df5[_0xddbf('0x4b')],'waiting':_0x168df5[_0xddbf('0x4c')]};_0x36f2dc[_0xddbf('0x1e')](_0x5859d2);}}_0x230df5({'count':_0x36f2dc[_0xddbf('0x18')],'rows':_0x36f2dc});});},'SmsQueues':function(){return new Promise(function(_0x22cbcf){var _0x4144f4=[];for(var _0x383343 in _0x3f84e1[_0xddbf('0x50')]){if(_0x3f84e1[_0xddbf('0x50')][_0xddbf('0x42')](_0x383343)){var _0x4db1cb=_0x3f84e1[_0xddbf('0x50')][_0x383343];var _0x335f85={'id':_0x4db1cb['id'],'available':_0x4db1cb[_0xddbf('0x4e')],'loggedIn':_0x4db1cb[_0xddbf('0x49')],'name':_0x4db1cb[_0xddbf('0x4a')],'paused':_0x4db1cb[_0xddbf('0x4b')],'waiting':_0x4db1cb[_0xddbf('0x4c')]};_0x4144f4[_0xddbf('0x1e')](_0x335f85);}}_0x22cbcf({'count':_0x4144f4['length'],'rows':_0x4144f4});});},'FaxQueues':function(){return new Promise(function(_0x1b04c3){var _0x2252a2=[];for(var _0x1f1222 in _0x3f84e1[_0xddbf('0x51')]){if(_0x3f84e1[_0xddbf('0x51')][_0xddbf('0x42')](_0x1f1222)){var _0x5e860b=_0x3f84e1[_0xddbf('0x51')][_0x1f1222];var _0x2514b2={'id':_0x5e860b['id'],'available':_0x5e860b[_0xddbf('0x4e')],'loggedIn':_0x5e860b['loggedIn'],'name':_0x5e860b['name'],'paused':_0x5e860b[_0xddbf('0x4b')],'waiting':_0x5e860b[_0xddbf('0x4c')]};_0x2252a2[_0xddbf('0x1e')](_0x2514b2);}}_0x1b04c3({'count':_0x2252a2['length'],'rows':_0x2252a2});});},'WhatsappQueues':function(){return new Promise(function(_0x23daa8){var _0x342387=[];for(var _0x5c9405 in _0x3f84e1[_0xddbf('0x52')]){if(_0x3f84e1[_0xddbf('0x52')]['hasOwnProperty'](_0x5c9405)){var _0x5e122d=_0x3f84e1['whatsappQueues'][_0x5c9405];var _0xa9be84={'id':_0x5e122d['id'],'available':_0x5e122d[_0xddbf('0x4e')],'loggedIn':_0x5e122d[_0xddbf('0x49')],'name':_0x5e122d[_0xddbf('0x4a')],'paused':_0x5e122d[_0xddbf('0x4b')],'waiting':_0x5e122d[_0xddbf('0x4c')]};_0x342387[_0xddbf('0x1e')](_0xa9be84);}}_0x23daa8({'count':_0x342387[_0xddbf('0x18')],'rows':_0x342387});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x30a2e7){var _0x31a58c=_[_0xddbf('0x47')](_0x3f84e1[_0xddbf('0x53')]);_0x30a2e7({'count':_0x31a58c[_0xddbf('0x18')],'rows':_0x31a58c});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x1eb771){var _0x332aea=_[_0xddbf('0x47')](_0x3f84e1[_0xddbf('0x54')]);_0x1eb771({'count':_0x332aea[_0xddbf('0x18')],'rows':_0x332aea});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x13017a){var _0x348307=_[_0xddbf('0x47')](_0x3f84e1[_0xddbf('0x55')]);_0x13017a({'count':_0x348307[_0xddbf('0x18')],'rows':_0x348307});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x3bb807){var _0x7e3d27=_[_0xddbf('0x47')](_0x3f84e1['smsQueuesWaitingInteractions']);_0x3bb807({'count':_0x7e3d27[_0xddbf('0x18')],'rows':_0x7e3d27});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x3a6031){var _0x1cca20=_[_0xddbf('0x47')](_0x3f84e1['faxQueuesWaitingInteractions']);_0x3a6031({'count':_0x1cca20[_0xddbf('0x18')],'rows':_0x1cca20});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x61f49f){var _0x165d93=_['values'](_0x3f84e1['whatsappQueuesWaitingInteractions']);_0x61f49f({'count':_0x165d93[_0xddbf('0x18')],'rows':_0x165d93});});}};var _0x17a98d=jayson[_0xddbf('0x56')](_0x3bf7d0)[_0xddbf('0x57')]();_0x17a98d['on'](_0xddbf('0x2f'),function(_0x2bd386){logger['error'](JSON[_0xddbf('0x32')](_0x2bd386));return _0x17b835(_0x2bd386);});_0x17a98d['listen'](0x232c,_0xddbf('0x58'),function(){console[_0xddbf('0x59')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x5dc304(_0xddbf('0x5a')+0x232c);});});};
\ No newline at end of file
index c5f8863..9419b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc4=['indexOf','true','error','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stack','stop','util','bluebird','jayson/promise','lodash','../../../config/logger','client','message','result','catch','condition','rules','info','length','push','Command','iftime\x20%s','then'];(function(_0x4af7f9,_0x362c9b){var _0x1ccfa9=function(_0x128289){while(--_0x128289){_0x4af7f9['push'](_0x4af7f9['shift']());}};_0x1ccfa9(++_0x362c9b);}(_0xecc4,0x1cb));var _0x4ecc=function(_0x1199b8,_0x147130){_0x1199b8=_0x1199b8-0x0;var _0x20ca30=_0xecc4[_0x1199b8];return _0x20ca30;};'use strict';var util=require(_0x4ecc('0x0'));var BPromise=require(_0x4ecc('0x1'));var jayson=require(_0x4ecc('0x2'));var _=require(_0x4ecc('0x3'));var logger=require(_0x4ecc('0x4'))('routing');var client=jayson[_0x4ecc('0x5')]['http']({'port':0x232a});function request(_0x423888,_0x5c8922){return new BPromise(function(_0x31727e,_0x5a0425){return client['request'](_0x423888,_0x5c8922)['then'](function(_0x1ee139){if(_0x1ee139['error']){return _0x5a0425(_0x1ee139['error'][_0x4ecc('0x6')]);}else{return _0x31727e(_0x1ee139[_0x4ecc('0x7')]);}})[_0x4ecc('0x8')](function(_0x18d6eb){return _0x5a0425(_0x18d6eb);});});}exports[_0x4ecc('0x9')]=function(_0x3bc183,_0x2cd0b0,_0x4e6f95){return function(_0x506888){if(_0x4e6f95[_0x4ecc('0xa')]&&!_0x4e6f95[_0x4ecc('0xa')][_0x3bc183]){logger[_0x4ecc('0xb')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x3bc183);return _0x506888['stop']();}var _0x5a871f=[];for(var _0x449555=0x0;_0x449555<_0x2cd0b0[_0x4ecc('0xc')];_0x449555+=0x1){_0x5a871f[_0x4ecc('0xd')](request(_0x4ecc('0xe'),{'command':util['format'](_0x4ecc('0xf'),_0x2cd0b0[_0x449555])})[_0x4ecc('0x10')](function(_0x5802da){return _0x5802da&&_0x5802da[_0x4ecc('0x6')]&&_0x5802da[_0x4ecc('0x6')][_0x4ecc('0x11')](_0x4ecc('0x12'))>=0x0?!![]:![];})['catch'](function(_0x28ccab){logger[_0x4ecc('0x13')]('[%s][INTERVAL]\x20%s',_0x3bc183,_0x2cd0b0[_0x449555]);}));}BPromise[_0x4ecc('0x14')](_0x5a871f)[_0x4ecc('0x10')](function(_0x4fc69e){var _0x29e584=_[_0x4ecc('0x15')](_0x4fc69e);logger[_0x4ecc('0xb')](_0x4ecc('0x16'),_0x3bc183,_0x2cd0b0[_0x4ecc('0x17')](_0x4ecc('0x18')),_0x29e584);_0x506888['when'](_0x29e584);})[_0x4ecc('0x8')](function(_0x4b049a){console[_0x4ecc('0x19')](_0x4b049a);logger['error'](_0x4ecc('0x16'),_0x3bc183,_0x2cd0b0['join'](_0x4ecc('0x18')),_0x4b049a[_0x4ecc('0x1a')]);_0x506888[_0x4ecc('0x1b')]();});};};
\ No newline at end of file
+var _0x4308=['log','[%s][INTERVAL]\x20%s\x20%s','stack','bluebird','jayson/promise','lodash','routing','client','http','then','error','message','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','push','Command','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','some','join','\x20|\x20'];(function(_0x207bdf,_0x5b3c13){var _0x1f93f3=function(_0x55dd20){while(--_0x55dd20){_0x207bdf['push'](_0x207bdf['shift']());}};_0x1f93f3(++_0x5b3c13);}(_0x4308,0x85));var _0x8430=function(_0x239aa5,_0x4c68bd){_0x239aa5=_0x239aa5-0x0;var _0x62033=_0x4308[_0x239aa5];return _0x62033;};'use strict';var util=require('util');var BPromise=require(_0x8430('0x0'));var jayson=require(_0x8430('0x1'));var _=require(_0x8430('0x2'));var logger=require('../../../config/logger')(_0x8430('0x3'));var client=jayson[_0x8430('0x4')][_0x8430('0x5')]({'port':0x232a});function request(_0x3db3cf,_0x36f3ca){return new BPromise(function(_0x33ecc5,_0x50d4d3){return client['request'](_0x3db3cf,_0x36f3ca)[_0x8430('0x6')](function(_0x3b9f74){if(_0x3b9f74[_0x8430('0x7')]){return _0x50d4d3(_0x3b9f74[_0x8430('0x7')][_0x8430('0x8')]);}else{return _0x33ecc5(_0x3b9f74['result']);}})[_0x8430('0x9')](function(_0x11c6d1){return _0x50d4d3(_0x11c6d1);});});}exports['condition']=function(_0x12ae43,_0x14e129,_0x36bae8){return function(_0x12d2ee){if(_0x36bae8[_0x8430('0xa')]&&!_0x36bae8[_0x8430('0xa')][_0x12ae43]){logger[_0x8430('0xb')](_0x8430('0xc'),_0x12ae43);return _0x12d2ee[_0x8430('0xd')]();}var _0x3d997d=[];for(var _0x1ba6f8=0x0;_0x1ba6f8<_0x14e129['length'];_0x1ba6f8+=0x1){_0x3d997d[_0x8430('0xe')](request(_0x8430('0xf'),{'command':util['format'](_0x8430('0x10'),_0x14e129[_0x1ba6f8])})[_0x8430('0x6')](function(_0x4db27c){return _0x4db27c&&_0x4db27c['message']&&_0x4db27c[_0x8430('0x8')][_0x8430('0x11')](_0x8430('0x12'))>=0x0?!![]:![];})[_0x8430('0x9')](function(_0xea9987){logger['error'](_0x8430('0x13'),_0x12ae43,_0x14e129[_0x1ba6f8]);}));}BPromise['all'](_0x3d997d)[_0x8430('0x6')](function(_0x1273c3){var _0x3ec7ab=_[_0x8430('0x14')](_0x1273c3);logger[_0x8430('0xb')]('[%s][INTERVAL]\x20%s\x20%s',_0x12ae43,_0x14e129[_0x8430('0x15')](_0x8430('0x16')),_0x3ec7ab);_0x12d2ee['when'](_0x3ec7ab);})[_0x8430('0x9')](function(_0x22640a){console[_0x8430('0x17')](_0x22640a);logger['error'](_0x8430('0x18'),_0x12ae43,_0x14e129['join'](_0x8430('0x16')),_0x22640a[_0x8430('0x19')]);_0x12d2ee[_0x8430('0xd')]();});};};
\ No newline at end of file
index 2623c15..89e2f06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','reason','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','complete','transfereruniqueid','transfertype','blind','transferexten','extension','transferuniqueid','[%s][agents][blindtransfer]','attendedtransfer','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','agentcalledAt','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','[%s][agents][hangup]','cause','rejected','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','connectedlinenum','lastevent','then','type','agentacw','agentcomplete','acwtime','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','holdtime','ringtime','talktime','push','includes','[%s][agents][queuecallerabandon]'];(function(_0xb0fe92,_0x147e42){var _0x41787f=function(_0x42ae35){while(--_0x42ae35){_0xb0fe92['push'](_0xb0fe92['shift']());}};_0x41787f(++_0x147e42);}(_0x878f,0x173));var _0xf878=function(_0x534312,_0x318851){_0x534312=_0x534312-0x0;var _0xd645e9=_0x878f[_0x534312];return _0xd645e9;};'use strict';var _=require('lodash');var util=require(_0xf878('0x0'));var utils=require(_0xf878('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x2e1d23,_0x12df2b){utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x4'),_0x2e1d23[_0xf878('0x5')],_0x2e1d23[_0xf878('0x6')],_0x2e1d23[_0xf878('0x7')],_0x2e1d23[_0xf878('0x8')],_0x2e1d23['interface'],_0x2e1d23['calleridnum'],_0x2e1d23[_0xf878('0x9')],_0x2e1d23[_0xf878('0xa')]));if(_0x2e1d23['queue']){utils['getVoiceQueueByName'](_0x2e1d23['queue'])[_0xf878('0xb')](function(_0x5f2693){if(_0x5f2693){_0x2e1d23['type']=_0x5f2693[_0xf878('0xc')];_0x2e1d23[_0xf878('0xd')]=_0x2e1d23[_0xf878('0xe')]?_0x5f2693['acw']:![];_0x2e1d23[_0xf878('0xf')]=_0x2e1d23[_0xf878('0xd')]?_0x5f2693['acwTimeout']:0x0;}utils[_0xf878('0x10')]('CreateVoiceAgentReport',_0x2e1d23);});}else{utils[_0xf878('0x10')](_0xf878('0x11'),_0x2e1d23);}if(_0x12df2b){delete transfers[_0x2e1d23[_0xf878('0x5')]];}else{delete agents[_0x2e1d23['destuniqueid']];}}exports[_0xf878('0x12')]=function(_0x38eddf){try{utils[_0xf878('0x13')](util['format'](_0xf878('0x14'),_0x38eddf[_0xf878('0x5')]),_0x38eddf);agents[_0x38eddf[_0xf878('0x15')]]=_0x38eddf;agents[_0x38eddf['destuniqueid']]['agentcalledAt']=utils[_0xf878('0x16')]();agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x17');agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x9')]=null;agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x18')]=null;utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x19'),_0x38eddf['uniqueid'],agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x8')],_0x38eddf[_0xf878('0x15')]));}catch(_0x622ea8){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x14'),_0x38eddf['uniqueid']),_0x622ea8);}};exports[_0xf878('0x1b')]=function(_0x140866){try{if(!_[_0xf878('0x1c')](agents[_0x140866['destuniqueid']])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x1d'),_0x140866[_0xf878('0x5')]),_0x140866);utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x1e'),_0x140866[_0xf878('0x5')],agents[_0x140866[_0xf878('0x15')]][_0xf878('0x8')],_0x140866[_0xf878('0x15')]));agents[_0x140866['destuniqueid']][_0xf878('0x1b')]=!![];agents[_0x140866['destuniqueid']][_0xf878('0x1f')]=utils[_0xf878('0x16')]();agents[_0x140866[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x20');agents[_0x140866['destuniqueid']]['reason']='timeout';agents[_0x140866[_0xf878('0x15')]][_0xf878('0x21')]=_0x140866[_0xf878('0x22')]?parseInt(_0x140866['ringtime'])/0x3e8:0x0;agents[_0x140866[_0xf878('0x15')]][_0xf878('0x23')]=0x0;unanswered[_0xf878('0x24')](_0x140866[_0xf878('0x15')]);}}catch(_0x41dd55){utils['error'](util['format'](_0xf878('0x1d'),_0x140866[_0xf878('0x5')]),_0x41dd55);}};exports['queuecallerabandon']=function(_0x31e2e1){try{_['forIn'](agents,function(_0x969ee3,_0x51afaf){if(_0x969ee3[_0xf878('0x5')]==_0x31e2e1['uniqueid']&&!_[_0xf878('0x25')](unanswered,_0x969ee3['destuniqueid'])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x26'),_0x31e2e1[_0xf878('0x5')]),_0x31e2e1);utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x31e2e1[_0xf878('0x5')],_0x969ee3[_0xf878('0x8')],_0x969ee3[_0xf878('0x15')]));_0x969ee3[_0xf878('0x1b')]=!![];_0x969ee3[_0xf878('0x1f')]=utils['now']();_0x969ee3[_0xf878('0xa')]=_0xf878('0x27');_0x969ee3['reason']=_0xf878('0x27');_0x969ee3[_0xf878('0x21')]=_0x31e2e1[_0xf878('0x21')];_0x969ee3[_0xf878('0x23')]=0x0;writeDB(_0x969ee3);}});}catch(_0x1acfb6){utils['error'](util[_0xf878('0x3')](_0xf878('0x26'),_0x31e2e1[_0xf878('0x5')]),_0x1acfb6);}};exports[_0xf878('0x28')]=function(_0x579c91){try{if(agents[_0x579c91[_0xf878('0x15')]]){utils['debug'](util['format'](_0xf878('0x29'),_0x579c91[_0xf878('0x5')]),_0x579c91);utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x2a'),_0x579c91['uniqueid'],agents[_0x579c91[_0xf878('0x15')]]['membername'],_0x579c91[_0xf878('0x15')]));agents[_0x579c91[_0xf878('0x15')]]['agentconnectAt']=utils[_0xf878('0x16')]();agents[_0x579c91[_0xf878('0x15')]]['connectedlinenum']=_0x579c91[_0xf878('0x9')];agents[_0x579c91[_0xf878('0x15')]]['connectedlinename']=_0x579c91[_0xf878('0x18')];agents[_0x579c91[_0xf878('0x15')]][_0xf878('0x21')]=_0x579c91[_0xf878('0x22')];agents[_0x579c91[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x2b');_['forIn'](agents,function(_0x1179fb,_0x14340d){if(_0x1179fb['destuniqueid']!=_0x579c91[_0xf878('0x15')]&&_0x1179fb['uniqueid']==_0x579c91['uniqueid']){_0x1179fb[_0xf878('0x23')]=0x0;_0x1179fb[_0xf878('0x21')]=_0x579c91[_0xf878('0x22')];_0x1179fb[_0xf878('0x1b')]=!![];_0x1179fb[_0xf878('0x1f')]=utils['now']();_0x1179fb[_0xf878('0xa')]='answered_elsewhere';_0x1179fb[_0xf878('0x2c')]=_0xf878('0x2d');_0x1179fb['answeredelsewheredestinationuniqueid']=_0x579c91['destuniqueid'];_0x1179fb[_0xf878('0x2e')]=_0x579c91[_0xf878('0x8')];writeDB(_0x1179fb);}});}}catch(_0x13fcd3){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x29'),_0x579c91[_0xf878('0x5')]),_0x13fcd3);}};exports[_0xf878('0xe')]=function(_0x3b1c67){try{if(!_['isNil'](agents[_0x3b1c67[_0xf878('0x15')]])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x2f'),_0x3b1c67[_0xf878('0x5')]),_0x3b1c67);utils[_0xf878('0x2')](util['format'](_0xf878('0x30'),_0x3b1c67[_0xf878('0x5')],agents[_0x3b1c67[_0xf878('0x15')]][_0xf878('0x8')],_0x3b1c67[_0xf878('0x15')]));agents[_0x3b1c67['destuniqueid']][_0xf878('0xe')]=!![];agents[_0x3b1c67[_0xf878('0x15')]][_0xf878('0x31')]=utils[_0xf878('0x16')]();agents[_0x3b1c67['destuniqueid']][_0xf878('0x23')]=utils[_0xf878('0x32')](agents[_0x3b1c67[_0xf878('0x15')]]['agentcompleteAt'],agents[_0x3b1c67['destuniqueid']][_0xf878('0x33')]);agents[_0x3b1c67['destuniqueid']]['reason']=_0x3b1c67['reason'];agents[_0x3b1c67[_0xf878('0x15')]]['lastevent']=_0xf878('0x34');writeDB(agents[_0x3b1c67[_0xf878('0x15')]]);}}catch(_0x1dcb19){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x2f'),_0x3b1c67[_0xf878('0x5')]),_0x1dcb19);}};exports['blindtransfer']=function(_0xb0bf4c){try{if(!_[_0xf878('0x1c')](agents[_0xb0bf4c[_0xf878('0x35')]])){utils[_0xf878('0x13')](util[_0xf878('0x3')]('[%s][agents][blindtransfer]',_0xb0bf4c['uniqueid']),_0xb0bf4c);utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0xb0bf4c[_0xf878('0x5')],agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x8')],agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x5')]));agents[_0xb0bf4c[_0xf878('0x35')]]['transfer']=!![];agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x36')]=_0xf878('0x37');agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x38')]=_0xb0bf4c[_0xf878('0x39')];agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x3a')]=agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x5')];}}catch(_0x181f09){utils[_0xf878('0x1a')](util['format'](_0xf878('0x3b'),_0xb0bf4c[_0xf878('0x5')]),_0x181f09);}};exports[_0xf878('0x3c')]=function(_0x150f60){try{utils['debug'](util['format']('[%s][agents][attendedtransfer]',_0x150f60[_0xf878('0x3d')]),_0x150f60);if(_0x150f60['origtransfereruniqueid']==_0x150f60['origtransfererlinkedid']){if(!_['isNil'](agents[_0x150f60[_0xf878('0x3e')]])){utils[_0xf878('0x2')](util['format'](_0xf878('0x3f'),_0x150f60[_0xf878('0x3d')],agents[_0x150f60[_0xf878('0x3e')]]['membername']));agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x40')]=!![];agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x36')]=_0xf878('0x41');agents[_0x150f60[_0xf878('0x3e')]][_0xf878('0x38')]=_0x150f60[_0xf878('0x42')];agents[_0x150f60[_0xf878('0x3e')]]['transferuniqueid']=_0x150f60[_0xf878('0x3d')];}if(_0x150f60[_0xf878('0x43')]&&agents[_0x150f60['transfereeuniqueid']]){agents[_0x150f60[_0xf878('0x43')]][_0xf878('0x44')]=0x1;transfers[_0x150f60[_0xf878('0x43')]]=_[_0xf878('0x45')](agents[_0x150f60[_0xf878('0x43')]]);transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x46')]=agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x46')];transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x47')]=agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x47')];transfers[_0x150f60['transfereeuniqueid']][_0xf878('0x48')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x33')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x21')]=0x0;transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x44')]=0x2;}}else if(_0x150f60[_0xf878('0x3e')]==_0x150f60['secondtransfererlinkedid']){if(!_['isNil'](agents[_0x150f60['origtransfereruniqueid']])){utils[_0xf878('0x2')](util['format'](_0xf878('0x3f'),_0x150f60[_0xf878('0x3d')],agents[_0x150f60['origtransfereruniqueid']]['membername']));agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x40')]=!![];agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x36')]=_0xf878('0x41');agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x38')]=_0x150f60[_0xf878('0x49')];agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x3a')]=_0x150f60[_0xf878('0x3e')];}if(_0x150f60[_0xf878('0x4a')]&&agents[_0x150f60[_0xf878('0x4a')]]){agents[_0x150f60[_0xf878('0x4a')]][_0xf878('0x44')]=0x1;transfers[_0x150f60[_0xf878('0x4a')]]=_[_0xf878('0x45')](agents[_0x150f60[_0xf878('0x4a')]]);transfers[_0x150f60['transfertargetuniqueid']][_0xf878('0x46')]=agents[_0x150f60['origtransfereruniqueid']][_0xf878('0x46')];transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x47')]=agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x47')];transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x48')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x4a')]]['agentconnectAt']=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x21')]=0x0;transfers[_0x150f60[_0xf878('0x4a')]]['agententerreason']=0x2;}}}catch(_0xa73ee){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x4b'),_0x150f60[_0xf878('0x3d')]),_0xa73ee);}};exports['hangup']=function(_0x5860f6){try{utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x4c'),_0x5860f6[_0xf878('0x5')]),_0x5860f6);if(agents[_0x5860f6[_0xf878('0x5')]]&&agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]===_0xf878('0x20')){if(_0x5860f6[_0xf878('0x4d')]==='21'){agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]=_0xf878('0x4e');agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]=_0xf878('0x4e');}utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5860f6[_0xf878('0x5')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(agents[_0x5860f6[_0xf878('0x5')]]);var _0x443e69=unanswered['indexOf'](_0x5860f6[_0xf878('0x5')]);if(_0x443e69>-0x1){unanswered[_0xf878('0x4f')](_0x443e69,0x1);}}if(transfers[_0x5860f6[_0xf878('0x5')]]){transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xe')]=!![];transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')]=utils['now']();transfers[_0x5860f6['uniqueid']][_0xf878('0x23')]=utils['diffTime'](transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x33')]);transfers[_0x5860f6['uniqueid']][_0xf878('0x2c')]=_0xf878('0x50');transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]='complete';utils[_0xf878('0x2')](util['format'](_0xf878('0x51'),_0x5860f6[_0xf878('0x5')],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],transfers[_0x5860f6[_0xf878('0x5')]]['reason'],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(transfers[_0x5860f6[_0xf878('0x5')]],!![]);}if(agents[_0x5860f6[_0xf878('0x5')]]&&agents[_0x5860f6['uniqueid']][_0xf878('0x33')]){agents[_0x5860f6['uniqueid']][_0xf878('0xe')]=!![];agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')]=utils[_0xf878('0x16')]();agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x23')]=utils[_0xf878('0x32')](agents[_0x5860f6[_0xf878('0x5')]]['agentcompleteAt'],agents[_0x5860f6['uniqueid']]['agentconnectAt']);agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]=agents[_0x5860f6['uniqueid']]['transfer']?_0xf878('0x40'):'agent';agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]=_0xf878('0x34');utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x51'),_0x5860f6[_0xf878('0x5')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],agents[_0x5860f6['uniqueid']][_0xf878('0x2c')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(agents[_0x5860f6['uniqueid']]);}}catch(_0x15f893){utils[_0xf878('0x1a')](util['format'](_0xf878('0x4c'),_0x5860f6[_0xf878('0x5')]),_0x15f893);}};
\ No newline at end of file
+var _0xf4eb=['request','debug','format','[%s][agents][agentcalled]','destuniqueid','now','lastevent','connectedlinename','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','push','forIn','includes','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentconnect]','agentcompleteAt','diffTime','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfereruniqueid','secondtransfereruniqueid','ATTENDED','origtransfererexten','transfereeuniqueid','clone','calleridname','agentcalledAt','agententerreason','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','lodash','info','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','then','type','agentacw','agentcomplete','acw','acwTimeout','CreateVoiceAgentReport'];(function(_0x5104ec,_0x11722d){var _0x22b805=function(_0x51bf40){while(--_0x51bf40){_0x5104ec['push'](_0x5104ec['shift']());}};_0x22b805(++_0x11722d);}(_0xf4eb,0xec));var _0xbf4e=function(_0xc90086,_0x1c2b69){_0xc90086=_0xc90086-0x0;var _0xb09b30=_0xf4eb[_0xc90086];return _0xb09b30;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x479210,_0x5ed5b9){utils[_0xbf4e('0x1')](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x479210[_0xbf4e('0x2')],_0x479210[_0xbf4e('0x3')],_0x479210[_0xbf4e('0x4')],_0x479210[_0xbf4e('0x5')],_0x479210[_0xbf4e('0x6')],_0x479210[_0xbf4e('0x7')],_0x479210[_0xbf4e('0x8')],_0x479210['lastevent']));if(_0x479210[_0xbf4e('0x4')]){utils['getVoiceQueueByName'](_0x479210['queue'])[_0xbf4e('0x9')](function(_0x3761c1){if(_0x3761c1){_0x479210[_0xbf4e('0xa')]=_0x3761c1[_0xbf4e('0xa')];_0x479210[_0xbf4e('0xb')]=_0x479210[_0xbf4e('0xc')]?_0x3761c1[_0xbf4e('0xd')]:![];_0x479210['acwtime']=_0x479210['agentacw']?_0x3761c1[_0xbf4e('0xe')]:0x0;}utils['request'](_0xbf4e('0xf'),_0x479210);});}else{utils[_0xbf4e('0x10')]('CreateVoiceAgentReport',_0x479210);}if(_0x5ed5b9){delete transfers[_0x479210[_0xbf4e('0x2')]];}else{delete agents[_0x479210['destuniqueid']];}}exports['agentcalled']=function(_0x209b25){try{utils[_0xbf4e('0x11')](util[_0xbf4e('0x12')](_0xbf4e('0x13'),_0x209b25[_0xbf4e('0x2')]),_0x209b25);agents[_0x209b25[_0xbf4e('0x14')]]=_0x209b25;agents[_0x209b25['destuniqueid']]['agentcalledAt']=utils[_0xbf4e('0x15')]();agents[_0x209b25[_0xbf4e('0x14')]][_0xbf4e('0x16')]='called';agents[_0x209b25[_0xbf4e('0x14')]][_0xbf4e('0x8')]=null;agents[_0x209b25[_0xbf4e('0x14')]][_0xbf4e('0x17')]=null;utils['info'](util[_0xbf4e('0x12')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x209b25['uniqueid'],agents[_0x209b25['destuniqueid']]['membername'],_0x209b25[_0xbf4e('0x14')]));}catch(_0x1ca73c){utils[_0xbf4e('0x18')](util['format']('[%s][agents][agentcalled]',_0x209b25[_0xbf4e('0x2')]),_0x1ca73c);}};exports[_0xbf4e('0x19')]=function(_0x3be138){try{if(!_[_0xbf4e('0x1a')](agents[_0x3be138[_0xbf4e('0x14')]])){utils[_0xbf4e('0x11')](util[_0xbf4e('0x12')](_0xbf4e('0x1b'),_0x3be138[_0xbf4e('0x2')]),_0x3be138);utils[_0xbf4e('0x1')](util[_0xbf4e('0x12')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x3be138[_0xbf4e('0x2')],agents[_0x3be138[_0xbf4e('0x14')]]['membername'],_0x3be138[_0xbf4e('0x14')]));agents[_0x3be138[_0xbf4e('0x14')]][_0xbf4e('0x19')]=!![];agents[_0x3be138[_0xbf4e('0x14')]][_0xbf4e('0x1c')]=utils['now']();agents[_0x3be138[_0xbf4e('0x14')]][_0xbf4e('0x16')]=_0xbf4e('0x1d');agents[_0x3be138['destuniqueid']][_0xbf4e('0x1e')]='timeout';agents[_0x3be138['destuniqueid']][_0xbf4e('0x1f')]=_0x3be138['ringtime']?parseInt(_0x3be138[_0xbf4e('0x20')])/0x3e8:0x0;agents[_0x3be138[_0xbf4e('0x14')]][_0xbf4e('0x21')]=0x0;unanswered[_0xbf4e('0x22')](_0x3be138['destuniqueid']);}}catch(_0x2d4686){utils[_0xbf4e('0x18')](util[_0xbf4e('0x12')]('[%s][agents][agentringnoanswer]',_0x3be138[_0xbf4e('0x2')]),_0x2d4686);}};exports['queuecallerabandon']=function(_0x1dfa81){try{_[_0xbf4e('0x23')](agents,function(_0xb8b58e,_0x498dbd){if(_0xb8b58e[_0xbf4e('0x2')]==_0x1dfa81[_0xbf4e('0x2')]&&!_[_0xbf4e('0x24')](unanswered,_0xb8b58e[_0xbf4e('0x14')])){utils[_0xbf4e('0x11')](util[_0xbf4e('0x12')]('[%s][agents][queuecallerabandon]',_0x1dfa81[_0xbf4e('0x2')]),_0x1dfa81);utils[_0xbf4e('0x1')](util['format'](_0xbf4e('0x25'),_0x1dfa81[_0xbf4e('0x2')],_0xb8b58e['membername'],_0xb8b58e[_0xbf4e('0x14')]));_0xb8b58e['agentringnoanswer']=!![];_0xb8b58e[_0xbf4e('0x1c')]=utils['now']();_0xb8b58e[_0xbf4e('0x16')]=_0xbf4e('0x26');_0xb8b58e[_0xbf4e('0x1e')]='abandoned';_0xb8b58e[_0xbf4e('0x1f')]=_0x1dfa81[_0xbf4e('0x1f')];_0xb8b58e[_0xbf4e('0x21')]=0x0;writeDB(_0xb8b58e);}});}catch(_0x29d6aa){utils[_0xbf4e('0x18')](util[_0xbf4e('0x12')]('[%s][agents][queuecallerabandon]',_0x1dfa81[_0xbf4e('0x2')]),_0x29d6aa);}};exports[_0xbf4e('0x27')]=function(_0x25b837){try{if(agents[_0x25b837[_0xbf4e('0x14')]]){utils[_0xbf4e('0x11')](util['format']('[%s][agents][agentconnect]',_0x25b837['uniqueid']),_0x25b837);utils['info'](util[_0xbf4e('0x12')](_0xbf4e('0x28'),_0x25b837[_0xbf4e('0x2')],agents[_0x25b837[_0xbf4e('0x14')]][_0xbf4e('0x5')],_0x25b837[_0xbf4e('0x14')]));agents[_0x25b837[_0xbf4e('0x14')]][_0xbf4e('0x29')]=utils[_0xbf4e('0x15')]();agents[_0x25b837['destuniqueid']]['connectedlinenum']=_0x25b837[_0xbf4e('0x8')];agents[_0x25b837[_0xbf4e('0x14')]][_0xbf4e('0x17')]=_0x25b837['connectedlinename'];agents[_0x25b837[_0xbf4e('0x14')]]['holdtime']=_0x25b837[_0xbf4e('0x20')];agents[_0x25b837[_0xbf4e('0x14')]][_0xbf4e('0x16')]=_0xbf4e('0x2a');_['forIn'](agents,function(_0x31d8dc,_0x78ab2d){if(_0x31d8dc[_0xbf4e('0x14')]!=_0x25b837[_0xbf4e('0x14')]&&_0x31d8dc['uniqueid']==_0x25b837[_0xbf4e('0x2')]){_0x31d8dc[_0xbf4e('0x21')]=0x0;_0x31d8dc[_0xbf4e('0x1f')]=_0x25b837[_0xbf4e('0x20')];_0x31d8dc[_0xbf4e('0x19')]=!![];_0x31d8dc[_0xbf4e('0x1c')]=utils[_0xbf4e('0x15')]();_0x31d8dc['lastevent']=_0xbf4e('0x2b');_0x31d8dc[_0xbf4e('0x1e')]='answered_elsewhere';_0x31d8dc['answeredelsewheredestinationuniqueid']=_0x25b837[_0xbf4e('0x14')];_0x31d8dc[_0xbf4e('0x2c')]=_0x25b837['membername'];writeDB(_0x31d8dc);}});}}catch(_0x5bfc4d){utils[_0xbf4e('0x18')](util[_0xbf4e('0x12')](_0xbf4e('0x2d'),_0x25b837[_0xbf4e('0x2')]),_0x5bfc4d);}};exports[_0xbf4e('0xc')]=function(_0x3ad0a4){try{if(!_['isNil'](agents[_0x3ad0a4[_0xbf4e('0x14')]])){utils[_0xbf4e('0x11')](util['format']('[%s][agents][agentcomplete]',_0x3ad0a4['uniqueid']),_0x3ad0a4);utils['info'](util[_0xbf4e('0x12')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x3ad0a4[_0xbf4e('0x2')],agents[_0x3ad0a4[_0xbf4e('0x14')]]['membername'],_0x3ad0a4['destuniqueid']));agents[_0x3ad0a4[_0xbf4e('0x14')]][_0xbf4e('0xc')]=!![];agents[_0x3ad0a4[_0xbf4e('0x14')]][_0xbf4e('0x2e')]=utils[_0xbf4e('0x15')]();agents[_0x3ad0a4['destuniqueid']][_0xbf4e('0x21')]=utils[_0xbf4e('0x2f')](agents[_0x3ad0a4[_0xbf4e('0x14')]][_0xbf4e('0x2e')],agents[_0x3ad0a4[_0xbf4e('0x14')]][_0xbf4e('0x29')]);agents[_0x3ad0a4[_0xbf4e('0x14')]][_0xbf4e('0x1e')]=_0x3ad0a4['reason'];agents[_0x3ad0a4[_0xbf4e('0x14')]][_0xbf4e('0x16')]=_0xbf4e('0x30');writeDB(agents[_0x3ad0a4[_0xbf4e('0x14')]]);}}catch(_0x9bc1fe){utils[_0xbf4e('0x18')](util[_0xbf4e('0x12')](_0xbf4e('0x31'),_0x3ad0a4[_0xbf4e('0x2')]),_0x9bc1fe);}};exports[_0xbf4e('0x32')]=function(_0x2fdba9){try{if(!_[_0xbf4e('0x1a')](agents[_0x2fdba9[_0xbf4e('0x33')]])){utils[_0xbf4e('0x11')](util[_0xbf4e('0x12')](_0xbf4e('0x34'),_0x2fdba9[_0xbf4e('0x2')]),_0x2fdba9);utils['info'](util[_0xbf4e('0x12')](_0xbf4e('0x35'),_0x2fdba9[_0xbf4e('0x2')],agents[_0x2fdba9['transfereruniqueid']][_0xbf4e('0x5')],agents[_0x2fdba9['transfereruniqueid']]['uniqueid']));agents[_0x2fdba9[_0xbf4e('0x33')]][_0xbf4e('0x36')]=!![];agents[_0x2fdba9['transfereruniqueid']][_0xbf4e('0x37')]=_0xbf4e('0x38');agents[_0x2fdba9[_0xbf4e('0x33')]][_0xbf4e('0x39')]=_0x2fdba9[_0xbf4e('0x3a')];agents[_0x2fdba9[_0xbf4e('0x33')]][_0xbf4e('0x3b')]=agents[_0x2fdba9[_0xbf4e('0x33')]][_0xbf4e('0x2')];}}catch(_0xc058e1){utils[_0xbf4e('0x18')](util['format']('[%s][agents][blindtransfer]',_0x2fdba9[_0xbf4e('0x2')]),_0xc058e1);}};exports[_0xbf4e('0x3c')]=function(_0x3d0b4a){try{utils['debug'](util[_0xbf4e('0x12')](_0xbf4e('0x3d'),_0x3d0b4a['origtransfereruniqueid']),_0x3d0b4a);if(_0x3d0b4a['origtransfereruniqueid']==_0x3d0b4a[_0xbf4e('0x3e')]){if(!_['isNil'](agents[_0x3d0b4a['secondtransfereruniqueid']])){utils[_0xbf4e('0x1')](util[_0xbf4e('0x12')](_0xbf4e('0x3f'),_0x3d0b4a[_0xbf4e('0x40')],agents[_0x3d0b4a[_0xbf4e('0x41')]]['membername']));agents[_0x3d0b4a[_0xbf4e('0x41')]]['transfer']=!![];agents[_0x3d0b4a[_0xbf4e('0x41')]]['transfertype']=_0xbf4e('0x42');agents[_0x3d0b4a['secondtransfereruniqueid']][_0xbf4e('0x39')]=_0x3d0b4a[_0xbf4e('0x43')];agents[_0x3d0b4a[_0xbf4e('0x41')]][_0xbf4e('0x3b')]=_0x3d0b4a[_0xbf4e('0x40')];}if(_0x3d0b4a['transfereeuniqueid']&&agents[_0x3d0b4a['transfereeuniqueid']]){agents[_0x3d0b4a['transfereeuniqueid']]['agententerreason']=0x1;transfers[_0x3d0b4a[_0xbf4e('0x44')]]=_[_0xbf4e('0x45')](agents[_0x3d0b4a['transfereeuniqueid']]);transfers[_0x3d0b4a[_0xbf4e('0x44')]][_0xbf4e('0x7')]=agents[_0x3d0b4a[_0xbf4e('0x41')]][_0xbf4e('0x7')];transfers[_0x3d0b4a[_0xbf4e('0x44')]][_0xbf4e('0x46')]=agents[_0x3d0b4a[_0xbf4e('0x41')]]['calleridname'];transfers[_0x3d0b4a[_0xbf4e('0x44')]][_0xbf4e('0x47')]=utils[_0xbf4e('0x15')]();transfers[_0x3d0b4a['transfereeuniqueid']]['agentconnectAt']=utils[_0xbf4e('0x15')]();transfers[_0x3d0b4a[_0xbf4e('0x44')]][_0xbf4e('0x1f')]=0x0;transfers[_0x3d0b4a['transfereeuniqueid']][_0xbf4e('0x48')]=0x2;}}else if(_0x3d0b4a[_0xbf4e('0x41')]==_0x3d0b4a[_0xbf4e('0x49')]){if(!_[_0xbf4e('0x1a')](agents[_0x3d0b4a[_0xbf4e('0x40')]])){utils[_0xbf4e('0x1')](util[_0xbf4e('0x12')](_0xbf4e('0x3f'),_0x3d0b4a[_0xbf4e('0x40')],agents[_0x3d0b4a[_0xbf4e('0x40')]][_0xbf4e('0x5')]));agents[_0x3d0b4a[_0xbf4e('0x40')]]['transfer']=!![];agents[_0x3d0b4a[_0xbf4e('0x40')]]['transfertype']=_0xbf4e('0x42');agents[_0x3d0b4a[_0xbf4e('0x40')]][_0xbf4e('0x39')]=_0x3d0b4a[_0xbf4e('0x4a')];agents[_0x3d0b4a[_0xbf4e('0x40')]][_0xbf4e('0x3b')]=_0x3d0b4a[_0xbf4e('0x41')];}if(_0x3d0b4a[_0xbf4e('0x4b')]&&agents[_0x3d0b4a['transfertargetuniqueid']]){agents[_0x3d0b4a[_0xbf4e('0x4b')]][_0xbf4e('0x48')]=0x1;transfers[_0x3d0b4a[_0xbf4e('0x4b')]]=_[_0xbf4e('0x45')](agents[_0x3d0b4a[_0xbf4e('0x4b')]]);transfers[_0x3d0b4a['transfertargetuniqueid']][_0xbf4e('0x7')]=agents[_0x3d0b4a[_0xbf4e('0x40')]][_0xbf4e('0x7')];transfers[_0x3d0b4a[_0xbf4e('0x4b')]][_0xbf4e('0x46')]=agents[_0x3d0b4a[_0xbf4e('0x40')]]['calleridname'];transfers[_0x3d0b4a[_0xbf4e('0x4b')]]['agentcalledAt']=utils[_0xbf4e('0x15')]();transfers[_0x3d0b4a[_0xbf4e('0x4b')]][_0xbf4e('0x29')]=utils[_0xbf4e('0x15')]();transfers[_0x3d0b4a['transfertargetuniqueid']][_0xbf4e('0x1f')]=0x0;transfers[_0x3d0b4a['transfertargetuniqueid']]['agententerreason']=0x2;}}}catch(_0x2c0dbd){utils[_0xbf4e('0x18')](util[_0xbf4e('0x12')]('[%s][agents][attendedtransfer]',_0x3d0b4a[_0xbf4e('0x40')]),_0x2c0dbd);}};exports[_0xbf4e('0x4c')]=function(_0x4d7241){try{utils[_0xbf4e('0x11')](util[_0xbf4e('0x12')](_0xbf4e('0x4d'),_0x4d7241[_0xbf4e('0x2')]),_0x4d7241);if(agents[_0x4d7241[_0xbf4e('0x2')]]&&agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x1e')]===_0xbf4e('0x1d')){if(_0x4d7241[_0xbf4e('0x4e')]==='21'){agents[_0x4d7241['uniqueid']][_0xbf4e('0x1e')]=_0xbf4e('0x4f');agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x16')]='rejected';}utils[_0xbf4e('0x1')](util[_0xbf4e('0x12')](_0xbf4e('0x50'),_0x4d7241[_0xbf4e('0x2')],agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x5')],agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x1e')],agents[_0x4d7241[_0xbf4e('0x2')]]['lastevent']));writeDB(agents[_0x4d7241[_0xbf4e('0x2')]]);var _0x47ef56=unanswered[_0xbf4e('0x51')](_0x4d7241[_0xbf4e('0x2')]);if(_0x47ef56>-0x1){unanswered[_0xbf4e('0x52')](_0x47ef56,0x1);}}if(transfers[_0x4d7241[_0xbf4e('0x2')]]){transfers[_0x4d7241[_0xbf4e('0x2')]]['agentcomplete']=!![];transfers[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x2e')]=utils[_0xbf4e('0x15')]();transfers[_0x4d7241['uniqueid']][_0xbf4e('0x21')]=utils[_0xbf4e('0x2f')](transfers[_0x4d7241[_0xbf4e('0x2')]]['agentcompleteAt'],transfers[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x29')]);transfers[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x1e')]=_0xbf4e('0x53');transfers[_0x4d7241['uniqueid']][_0xbf4e('0x16')]='complete';utils[_0xbf4e('0x1')](util['format'](_0xbf4e('0x50'),_0x4d7241['uniqueid'],transfers[_0x4d7241[_0xbf4e('0x2')]]['membername'],transfers[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x1e')],transfers[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x16')]));writeDB(transfers[_0x4d7241[_0xbf4e('0x2')]],!![]);}if(agents[_0x4d7241[_0xbf4e('0x2')]]&&agents[_0x4d7241[_0xbf4e('0x2')]]['agentconnectAt']){agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0xc')]=!![];agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x2e')]=utils[_0xbf4e('0x15')]();agents[_0x4d7241[_0xbf4e('0x2')]]['talktime']=utils[_0xbf4e('0x2f')](agents[_0x4d7241[_0xbf4e('0x2')]]['agentcompleteAt'],agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x29')]);agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x1e')]=agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x36')]?_0xbf4e('0x36'):_0xbf4e('0x53');agents[_0x4d7241[_0xbf4e('0x2')]]['lastevent']=_0xbf4e('0x30');utils[_0xbf4e('0x1')](util[_0xbf4e('0x12')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x4d7241[_0xbf4e('0x2')],agents[_0x4d7241[_0xbf4e('0x2')]]['membername'],agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x1e')],agents[_0x4d7241[_0xbf4e('0x2')]][_0xbf4e('0x16')]));writeDB(agents[_0x4d7241[_0xbf4e('0x2')]]);}}catch(_0x1cc939){utils[_0xbf4e('0x18')](util[_0xbf4e('0x12')](_0xbf4e('0x4d'),_0x4d7241[_0xbf4e('0x2')]),_0x1cc939);}};
\ No newline at end of file
index cb9d8aa..bb260ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','variable','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','Queue','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','split','lastIndexOf','includes','noop','execif','gotoif','lastapplication','lastdata','[%s][calls][newexten]','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','ANSWERED','BUSY','FAILED','blinds','uniqueid','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','debug','[%s][calls][newchannel]','channel','context','exten','calleridnum','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','info','systemanswertime','linkedid','channelstate','transfer','destinationchannel','answertime','disposition','toNumber','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','diffTime','endtime','starttime','billableseconds','[%s][calls][hangup]','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xd8fb,0x99));var _0xbd8f=function(_0x34a04a,_0x46a620){_0x34a04a=_0x34a04a-0x0;var _0xcf8e78=_0xd8fb[_0x34a04a];return _0xcf8e78;};'use strict';var _=require(_0xbd8f('0x0'));var util=require(_0xbd8f('0x1'));var utils=require(_0xbd8f('0x2'));var transfers=require(_0xbd8f('0x3'));var dispositions=['NO\x20ANSWER','FAILED','FAILED',_0xbd8f('0x4'),_0xbd8f('0x4'),'NO\x20ANSWER',_0xbd8f('0x5'),_0xbd8f('0x6'),'FAILED',_0xbd8f('0x7'),'FAILED'];var channels={};function writeDB(_0xf503c4){var _0x578499;if(transfers[_0xbd8f('0x8')][_0xf503c4[_0xbd8f('0x9')]]){_0x578499=_0xf503c4['uniqueid'];_0xf503c4['uniqueid']=transfers[_0xbd8f('0x8')][_0xf503c4[_0xbd8f('0x9')]][_0xbd8f('0xa')];}utils['info'](util[_0xbd8f('0xb')](_0xbd8f('0xc'),_0xf503c4['uniqueid'],_0xf503c4['channel'],_0xf503c4[_0xbd8f('0xd')],_0xf503c4[_0xbd8f('0xe')],_0xf503c4[_0xbd8f('0xf')],_0xf503c4['calleridnum'],_0xf503c4[_0xbd8f('0x10')],_0xf503c4[_0xbd8f('0x11')]));if(_0xf503c4[_0xbd8f('0x12')]){utils[_0xbd8f('0x13')](_0xf503c4[_0xbd8f('0x12')])[_0xbd8f('0x14')](function(_0x37d4d5){if(_0x37d4d5){_0xf503c4[_0xbd8f('0x15')]=_0x37d4d5['id'];}utils[_0xbd8f('0x16')]('CreateVoiceCallReport',_0xf503c4);});}else{utils[_0xbd8f('0x16')](_0xbd8f('0x17'),_0xf503c4);}if(channels[_0xf503c4[_0xbd8f('0x9')]]){delete channels[_0xf503c4[_0xbd8f('0x9')]];}else if(_0x578499&&channels[_0x578499]){if(!transfers['blinds'][_0x578499][_0xbd8f('0x18')])delete transfers[_0xbd8f('0x8')][_0x578499];delete channels[_0x578499];}}exports['newchannel']=function(_0x15be97){try{utils[_0xbd8f('0x19')](util['format'](_0xbd8f('0x1a'),_0x15be97[_0xbd8f('0x9')]),_0x15be97);if(_0x15be97['uniqueid']==_0x15be97['linkedid']&&_0x15be97[_0xbd8f('0x1b')]!='OutgoingSpoolFailed'){utils['info'](util[_0xbd8f('0xb')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x15be97[_0xbd8f('0x9')],_0x15be97[_0xbd8f('0x1c')],_0x15be97[_0xbd8f('0x1d')]));channels[_0x15be97[_0xbd8f('0x9')]]={'uniqueid':_0x15be97[_0xbd8f('0x9')],'accountcode':_0x15be97[_0xbd8f('0x12')],'source':_0x15be97[_0xbd8f('0x1e')],'destination':_0x15be97[_0xbd8f('0x1d')],'destinationcontext':_0x15be97[_0xbd8f('0x1c')],'channel':_0x15be97[_0xbd8f('0x1b')],'starttime':utils[_0xbd8f('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xbd8f('0x4'),'amaflags':_0xbd8f('0x20')};}}catch(_0x15c4a9){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')](_0xbd8f('0x1a'),_0x15be97['uniqueid']),_0x15c4a9);}};exports[_0xbd8f('0x22')]=function(_0x9fa3b1){try{utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x23'),_0x9fa3b1[_0xbd8f('0x9')]),_0x9fa3b1);if(!_[_0xbd8f('0x24')](channels[_0x9fa3b1[_0xbd8f('0x9')]])&&_0x9fa3b1['channelstate']==0x6){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x9fa3b1[_0xbd8f('0x9')],_0x9fa3b1['context'],_0x9fa3b1[_0xbd8f('0x1b')]));if(_[_0xbd8f('0x24')](channels[_0x9fa3b1[_0xbd8f('0x9')]][_0xbd8f('0x26')])){channels[_0x9fa3b1[_0xbd8f('0x9')]][_0xbd8f('0x26')]=utils['now']();}}else if(!_[_0xbd8f('0x24')](channels[_0x9fa3b1[_0xbd8f('0x27')]])&&_0x9fa3b1[_0xbd8f('0x28')]==0x6&&_0x9fa3b1[_0xbd8f('0x1c')]!=_0xbd8f('0x29')){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x9fa3b1[_0xbd8f('0x9')],_0x9fa3b1[_0xbd8f('0x27')],_0x9fa3b1[_0xbd8f('0x1c')],_0x9fa3b1[_0xbd8f('0x1b')]));channels[_0x9fa3b1['linkedid']]['accountcode']=_0x9fa3b1[_0xbd8f('0x12')];channels[_0x9fa3b1[_0xbd8f('0x27')]][_0xbd8f('0x2a')]=_0x9fa3b1[_0xbd8f('0x1b')];if(_['isNil'](channels[_0x9fa3b1[_0xbd8f('0x27')]][_0xbd8f('0x2b')])){channels[_0x9fa3b1[_0xbd8f('0x27')]][_0xbd8f('0x2b')]=utils[_0xbd8f('0x1f')]();}channels[_0x9fa3b1['linkedid']][_0xbd8f('0x2c')]=dispositions[_[_0xbd8f('0x2d')](_0x9fa3b1[_0xbd8f('0x28')])]||_0xbd8f('0x5');}}catch(_0x2df6a6){utils['error'](util[_0xbd8f('0xb')]('[%s][calls][newstate]',_0x9fa3b1[_0xbd8f('0x9')]),_0x2df6a6);}};exports[_0xbd8f('0x2e')]=function(_0x337bc4){try{if(!_[_0xbd8f('0x24')](channels[_0x337bc4[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util['format']('[%s][calls][hangup]',_0x337bc4['uniqueid']),_0x337bc4);if(_[_0xbd8f('0x24')](channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2f')])){channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2f')]=_0x337bc4[_0xbd8f('0x30')]+'\x20<'+_0x337bc4[_0xbd8f('0x1e')]+'>';}utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x31'),_0x337bc4[_0xbd8f('0x9')],channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2f')],_0x337bc4[_0xbd8f('0x32')]));channels[_0x337bc4[_0xbd8f('0x9')]]['endtime']=utils[_0xbd8f('0x1f')]();channels[_0x337bc4[_0xbd8f('0x9')]]['duration']=utils[_0xbd8f('0x33')](channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x34')],channels[_0x337bc4['uniqueid']][_0xbd8f('0x35')]);channels[_0x337bc4['uniqueid']][_0xbd8f('0x36')]=channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2b')]?utils['diffTime'](channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x34')],channels[_0x337bc4[_0xbd8f('0x9')]]['answertime']):0x0;writeDB(channels[_0x337bc4[_0xbd8f('0x9')]]);}}catch(_0x3d82ef){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')](_0xbd8f('0x37'),_0x337bc4[_0xbd8f('0x9')]),_0x3d82ef);}};exports[_0xbd8f('0x38')]=function(_0xb453a8){try{if(!_[_0xbd8f('0x24')](channels[_0xb453a8['localtwolinkedid']])){utils['debug'](util[_0xbd8f('0xb')](_0xbd8f('0x39'),_0xb453a8[_0xbd8f('0x3a')]),_0xb453a8);if(channels[_0xb453a8[_0xbd8f('0x3b')]]['channel']==_0xb453a8[_0xbd8f('0x3c')]){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x3d'),_0xb453a8[_0xbd8f('0x3a')],_0xb453a8['localtwolinkedid'],_0xb453a8['secondtransfererchannel']));channels[_0xb453a8[_0xbd8f('0x3b')]]['destinationchannel']=_0xb453a8[_0xbd8f('0x3e')];channels[_0xb453a8[_0xbd8f('0x3b')]][_0xbd8f('0x3f')]=_0xbd8f('0x40');}else if(channels[_0xb453a8[_0xbd8f('0x3b')]][_0xbd8f('0x1b')]=_0xb453a8[_0xbd8f('0x41')]){utils[_0xbd8f('0x25')](util['format'](_0xbd8f('0x3d'),_0xb453a8[_0xbd8f('0x3a')],_0xb453a8[_0xbd8f('0x3b')],_0xb453a8[_0xbd8f('0x42')]));channels[_0xb453a8[_0xbd8f('0x3b')]][_0xbd8f('0x2a')]=_0xb453a8[_0xbd8f('0x42')];channels[_0xb453a8[_0xbd8f('0x3b')]]['userfield']=_0xbd8f('0x40');}}}catch(_0x18cb6d){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')](_0xbd8f('0x39'),_0xb453a8[_0xbd8f('0x3a')]),_0x18cb6d);}};exports[_0xbd8f('0x43')]=function(_0x439bbd){try{if(!_[_0xbd8f('0x24')](channels[_0x439bbd[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x44'),_0x439bbd[_0xbd8f('0x9')]),_0x439bbd);channels[_0x439bbd[_0xbd8f('0x9')]][_0xbd8f('0x45')]=utils[_0xbd8f('0x1f')]();utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x439bbd[_0xbd8f('0x9')],channels[_0x439bbd[_0xbd8f('0x9')]][_0xbd8f('0x45')]));}}catch(_0x1f6abb){utils['error'](util[_0xbd8f('0xb')]('[%s][calls][musiconholdstart]',_0x439bbd[_0xbd8f('0x9')]),_0x1f6abb);}};exports[_0xbd8f('0x46')]=function(_0x1f99f9){try{if(!_[_0xbd8f('0x24')](channels[_0x1f99f9['uniqueid']])){utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x47'),_0x1f99f9[_0xbd8f('0x9')]),_0x1f99f9);if(!_[_0xbd8f('0x24')](channels[_0x1f99f9[_0xbd8f('0x9')]]['musiconholdstartAt'])){channels[_0x1f99f9[_0xbd8f('0x9')]]['mohtime']+=utils[_0xbd8f('0x33')](utils[_0xbd8f('0x1f')](),channels[_0x1f99f9[_0xbd8f('0x9')]][_0xbd8f('0x45')]);utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x48'),_0x1f99f9[_0xbd8f('0x9')],channels[_0x1f99f9[_0xbd8f('0x9')]]['mohtime']));delete channels[_0x1f99f9[_0xbd8f('0x9')]]['musiconholdstartAt'];}}}catch(_0xd09e5){utils[_0xbd8f('0x21')](util['format'](_0xbd8f('0x47'),_0x1f99f9['uniqueid']),_0xd09e5);}};exports['varset']=function(_0x5e924c){try{if(!_['isNil'](channels[_0x5e924c[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x49'),_0x5e924c[_0xbd8f('0x9')]),_0x5e924c);if(!_['isNil'](_0x5e924c['variable'][_0xbd8f('0x4a')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x4b'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c['value']));channels[_0x5e924c[_0xbd8f('0x9')]]['source']=_0x5e924c[_0xbd8f('0x4c')];}if(!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')]['xmd-phone'])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x4e'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c['value']));channels[_0x5e924c['uniqueid']][_0xbd8f('0x4f')]=_0x5e924c['value'];channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x2f')]='\x22'+_0x5e924c[_0xbd8f('0x4c')]+_0xbd8f('0x50')+_0x5e924c['value']+'>';}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x51')])||!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x52')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x53'),_0x5e924c[_0xbd8f('0x9')],!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')]['xmd-callerid-preview'])?_0xbd8f('0x51'):_0xbd8f('0x52'),_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x2f')]=_0x5e924c[_0xbd8f('0x4c')];}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x54')])||!_['isNil'](_0x5e924c['variable'][_0xbd8f('0x55')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5e924c['uniqueid'],!_[_0xbd8f('0x24')](_0x5e924c['variable']['xmd-queue'])?'xmd-queue':'xmcs-queue',_0x5e924c['value']));channels[_0x5e924c[_0xbd8f('0x9')]]['lastapplication']=_0xbd8f('0x56');channels[_0x5e924c[_0xbd8f('0x9')]]['lastdata']=_0x5e924c[_0xbd8f('0x4c')];channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0xd')]=!![];}if(!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')]['xmd-contactid'])){utils['info'](util[_0xbd8f('0xb')](_0xbd8f('0x57'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x58')]=_0x5e924c['value'];}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x59')])){utils['info'](util[_0xbd8f('0xb')](_0xbd8f('0x5a'),_0x5e924c['uniqueid'],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x5b')]=_0x5e924c['value'];}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x5c')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x5d'),_0x5e924c['uniqueid'],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x5e')]=_0x5e924c[_0xbd8f('0x4c')];}if(!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x5f')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x60'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x5f')]=_0x5e924c[_0xbd8f('0x4c')];}}}catch(_0x4557a9){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')]('[%s][calls][varset]',_0x5e924c[_0xbd8f('0x9')]),_0x4557a9);}};exports[_0xbd8f('0x61')]=function(_0xffcbed){try{if(!_[_0xbd8f('0x24')](channels[_0xffcbed[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util['format']('[%s][calls][newexten]',_0xffcbed[_0xbd8f('0x9')]),_0xffcbed);utils[_0xbd8f('0x25')](util['format'](_0xbd8f('0x62'),_0xffcbed['uniqueid'],_0xffcbed[_0xbd8f('0x63')],_0xffcbed[_0xbd8f('0x64')]));if(_0xffcbed[_0xbd8f('0x63')][_0xbd8f('0x65')]()=='set'&&_[_0xbd8f('0x66')](_0xffcbed[_0xbd8f('0x64')][_0xbd8f('0x65')](),'cdr')){var _0x272262=_0xffcbed[_0xbd8f('0x64')][_0xbd8f('0x67')]('=');var _0x161ec8=_0x272262[0x0]['substring'](_0x272262[0x0][_0xbd8f('0x68')]('(')+0x1,_0x272262[0x0][_0xbd8f('0x68')](')'));var _0x1d4e14=_0x272262[0x1];channels[_0xffcbed[_0xbd8f('0x9')]][_0x161ec8]=_0x1d4e14;}if(!_[_0xbd8f('0x69')]([_0xbd8f('0x2e'),_0xbd8f('0x6a'),_0xbd8f('0x6b'),'set',_0xbd8f('0x6c')],_0xffcbed['application'][_0xbd8f('0x65')]())){channels[_0xffcbed['uniqueid']][_0xbd8f('0x6d')]=_0xffcbed[_0xbd8f('0x63')];channels[_0xffcbed['uniqueid']][_0xbd8f('0x6e')]=_0xffcbed[_0xbd8f('0x64')];}}}catch(_0x60cd2b){utils[_0xbd8f('0x21')](util['format'](_0xbd8f('0x6f'),_0xffcbed[_0xbd8f('0x9')]),_0x60cd2b);}};
\ No newline at end of file
+var _0x5fa9=['application','appdata','toLowerCase','set','cdr','split','substring','lastIndexOf','includes','noop','execif','lastapplication','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','blinds','uniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','CreateVoiceCallReport','request','[%s][calls][newchannel]','linkedid','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','newstate','debug','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','error','[%s][calls][newstate]','hangup','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastdata','queue','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s'];(function(_0xae0ae9,_0x8ca848){var _0x19e4ff=function(_0x4bc818){while(--_0x4bc818){_0xae0ae9['push'](_0xae0ae9['shift']());}};_0x19e4ff(++_0x8ca848);}(_0x5fa9,0x150));var _0x95fa=function(_0x13e4d6,_0x4d647f){_0x13e4d6=_0x13e4d6-0x0;var _0x395c06=_0x5fa9[_0x13e4d6];return _0x395c06;};'use strict';var _=require(_0x95fa('0x0'));var util=require(_0x95fa('0x1'));var utils=require(_0x95fa('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x95fa('0x3'),_0x95fa('0x4'),'FAILED','NO\x20ANSWER',_0x95fa('0x3'),'NO\x20ANSWER',_0x95fa('0x5'),'BUSY','FAILED',_0x95fa('0x4'),'FAILED'];var channels={};function writeDB(_0x3afc2b){var _0x2937cd;if(transfers[_0x95fa('0x6')][_0x3afc2b['uniqueid']]){_0x2937cd=_0x3afc2b[_0x95fa('0x7')];_0x3afc2b[_0x95fa('0x7')]=transfers['blinds'][_0x3afc2b['uniqueid']]['transfereeuniqueid'];}utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0xa'),_0x3afc2b[_0x95fa('0x7')],_0x3afc2b[_0x95fa('0xb')],_0x3afc2b['queue'],_0x3afc2b[_0x95fa('0xc')],_0x3afc2b['interface'],_0x3afc2b[_0x95fa('0xd')],_0x3afc2b[_0x95fa('0xe')],_0x3afc2b[_0x95fa('0xf')]));if(_0x3afc2b[_0x95fa('0x10')]){utils[_0x95fa('0x11')](_0x3afc2b[_0x95fa('0x10')])[_0x95fa('0x12')](function(_0x30e4b7){if(_0x30e4b7){_0x3afc2b[_0x95fa('0x13')]=_0x30e4b7['id'];}utils['request'](_0x95fa('0x14'),_0x3afc2b);});}else{utils[_0x95fa('0x15')](_0x95fa('0x14'),_0x3afc2b);}if(channels[_0x3afc2b[_0x95fa('0x7')]]){delete channels[_0x3afc2b['uniqueid']];}else if(_0x2937cd&&channels[_0x2937cd]){if(!transfers['blinds'][_0x2937cd]['recording'])delete transfers[_0x95fa('0x6')][_0x2937cd];delete channels[_0x2937cd];}}exports['newchannel']=function(_0x1ae342){try{utils['debug'](util[_0x95fa('0x9')](_0x95fa('0x16'),_0x1ae342[_0x95fa('0x7')]),_0x1ae342);if(_0x1ae342[_0x95fa('0x7')]==_0x1ae342[_0x95fa('0x17')]&&_0x1ae342[_0x95fa('0xb')]!='OutgoingSpoolFailed'){utils['info'](util[_0x95fa('0x9')](_0x95fa('0x18'),_0x1ae342[_0x95fa('0x7')],_0x1ae342[_0x95fa('0x19')],_0x1ae342[_0x95fa('0x1a')]));channels[_0x1ae342[_0x95fa('0x7')]]={'uniqueid':_0x1ae342[_0x95fa('0x7')],'accountcode':_0x1ae342[_0x95fa('0x10')],'source':_0x1ae342['calleridnum'],'destination':_0x1ae342[_0x95fa('0x1a')],'destinationcontext':_0x1ae342['context'],'channel':_0x1ae342[_0x95fa('0xb')],'starttime':utils[_0x95fa('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x95fa('0x3'),'amaflags':_0x95fa('0x1c')};}}catch(_0x4071ff){utils['error'](util['format'](_0x95fa('0x16'),_0x1ae342[_0x95fa('0x7')]),_0x4071ff);}};exports[_0x95fa('0x1d')]=function(_0x384ad6){try{utils[_0x95fa('0x1e')](util[_0x95fa('0x9')]('[%s][calls][newstate]',_0x384ad6[_0x95fa('0x7')]),_0x384ad6);if(!_['isNil'](channels[_0x384ad6[_0x95fa('0x7')]])&&_0x384ad6[_0x95fa('0x1f')]==0x6){utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x20'),_0x384ad6[_0x95fa('0x7')],_0x384ad6[_0x95fa('0x19')],_0x384ad6['channel']));if(_[_0x95fa('0x21')](channels[_0x384ad6[_0x95fa('0x7')]]['systemanswertime'])){channels[_0x384ad6[_0x95fa('0x7')]]['systemanswertime']=utils['now']();}}else if(!_['isNil'](channels[_0x384ad6[_0x95fa('0x17')]])&&_0x384ad6[_0x95fa('0x1f')]==0x6&&_0x384ad6[_0x95fa('0x19')]!='transfer'){utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x22'),_0x384ad6[_0x95fa('0x7')],_0x384ad6[_0x95fa('0x17')],_0x384ad6[_0x95fa('0x19')],_0x384ad6[_0x95fa('0xb')]));channels[_0x384ad6[_0x95fa('0x17')]][_0x95fa('0x10')]=_0x384ad6[_0x95fa('0x10')];channels[_0x384ad6['linkedid']][_0x95fa('0x23')]=_0x384ad6[_0x95fa('0xb')];if(_['isNil'](channels[_0x384ad6[_0x95fa('0x17')]][_0x95fa('0x24')])){channels[_0x384ad6[_0x95fa('0x17')]][_0x95fa('0x24')]=utils[_0x95fa('0x1b')]();}channels[_0x384ad6[_0x95fa('0x17')]]['disposition']=dispositions[_[_0x95fa('0x25')](_0x384ad6[_0x95fa('0x1f')])]||_0x95fa('0x5');}}catch(_0xa06af3){utils[_0x95fa('0x26')](util[_0x95fa('0x9')](_0x95fa('0x27'),_0x384ad6[_0x95fa('0x7')]),_0xa06af3);}};exports[_0x95fa('0x28')]=function(_0x4267cb){try{if(!_['isNil'](channels[_0x4267cb[_0x95fa('0x7')]])){utils['debug'](util[_0x95fa('0x9')]('[%s][calls][hangup]',_0x4267cb[_0x95fa('0x7')]),_0x4267cb);if(_['isNil'](channels[_0x4267cb[_0x95fa('0x7')]]['callerid'])){channels[_0x4267cb[_0x95fa('0x7')]][_0x95fa('0x29')]=_0x4267cb['calleridname']+'\x20<'+_0x4267cb['calleridnum']+'>';}utils[_0x95fa('0x8')](util['format'](_0x95fa('0x2a'),_0x4267cb[_0x95fa('0x7')],channels[_0x4267cb[_0x95fa('0x7')]][_0x95fa('0x29')],_0x4267cb['cause-txt']));channels[_0x4267cb[_0x95fa('0x7')]][_0x95fa('0x2b')]=utils[_0x95fa('0x1b')]();channels[_0x4267cb['uniqueid']][_0x95fa('0x2c')]=utils[_0x95fa('0x2d')](channels[_0x4267cb[_0x95fa('0x7')]]['endtime'],channels[_0x4267cb[_0x95fa('0x7')]][_0x95fa('0x2e')]);channels[_0x4267cb[_0x95fa('0x7')]][_0x95fa('0x2f')]=channels[_0x4267cb[_0x95fa('0x7')]]['answertime']?utils[_0x95fa('0x2d')](channels[_0x4267cb[_0x95fa('0x7')]][_0x95fa('0x2b')],channels[_0x4267cb[_0x95fa('0x7')]][_0x95fa('0x24')]):0x0;writeDB(channels[_0x4267cb[_0x95fa('0x7')]]);}}catch(_0x2afc33){utils[_0x95fa('0x26')](util[_0x95fa('0x9')]('[%s][calls][hangup]',_0x4267cb[_0x95fa('0x7')]),_0x2afc33);}};exports[_0x95fa('0x30')]=function(_0x4c90a2){try{if(!_['isNil'](channels[_0x4c90a2[_0x95fa('0x31')]])){utils[_0x95fa('0x1e')](util[_0x95fa('0x9')]('[%s][calls][attendedtransfer]',_0x4c90a2[_0x95fa('0x32')]),_0x4c90a2);if(channels[_0x4c90a2['localtwolinkedid']][_0x95fa('0xb')]==_0x4c90a2[_0x95fa('0x33')]){utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x34'),_0x4c90a2[_0x95fa('0x32')],_0x4c90a2[_0x95fa('0x31')],_0x4c90a2[_0x95fa('0x35')]));channels[_0x4c90a2[_0x95fa('0x31')]][_0x95fa('0x23')]=_0x4c90a2[_0x95fa('0x35')];channels[_0x4c90a2['localtwolinkedid']][_0x95fa('0x36')]=_0x95fa('0x37');}else if(channels[_0x4c90a2[_0x95fa('0x31')]]['channel']=_0x4c90a2[_0x95fa('0x38')]){utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x34'),_0x4c90a2[_0x95fa('0x32')],_0x4c90a2['localtwolinkedid'],_0x4c90a2['origtransfererchannel']));channels[_0x4c90a2['localtwolinkedid']][_0x95fa('0x23')]=_0x4c90a2[_0x95fa('0x39')];channels[_0x4c90a2[_0x95fa('0x31')]]['userfield']=_0x95fa('0x37');}}}catch(_0x4875cb){utils[_0x95fa('0x26')](util[_0x95fa('0x9')]('[%s][calls][attendedtransfer]',_0x4c90a2[_0x95fa('0x32')]),_0x4875cb);}};exports[_0x95fa('0x3a')]=function(_0x3c0db5){try{if(!_[_0x95fa('0x21')](channels[_0x3c0db5['uniqueid']])){utils[_0x95fa('0x1e')](util[_0x95fa('0x9')](_0x95fa('0x3b'),_0x3c0db5[_0x95fa('0x7')]),_0x3c0db5);channels[_0x3c0db5[_0x95fa('0x7')]][_0x95fa('0x3c')]=utils[_0x95fa('0x1b')]();utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x3d'),_0x3c0db5[_0x95fa('0x7')],channels[_0x3c0db5[_0x95fa('0x7')]][_0x95fa('0x3c')]));}}catch(_0x39d742){utils[_0x95fa('0x26')](util['format']('[%s][calls][musiconholdstart]',_0x3c0db5['uniqueid']),_0x39d742);}};exports[_0x95fa('0x3e')]=function(_0x11d555){try{if(!_[_0x95fa('0x21')](channels[_0x11d555[_0x95fa('0x7')]])){utils[_0x95fa('0x1e')](util['format'](_0x95fa('0x3f'),_0x11d555[_0x95fa('0x7')]),_0x11d555);if(!_[_0x95fa('0x21')](channels[_0x11d555['uniqueid']][_0x95fa('0x3c')])){channels[_0x11d555[_0x95fa('0x7')]][_0x95fa('0x40')]+=utils[_0x95fa('0x2d')](utils[_0x95fa('0x1b')](),channels[_0x11d555[_0x95fa('0x7')]]['musiconholdstartAt']);utils['info'](util[_0x95fa('0x9')](_0x95fa('0x41'),_0x11d555[_0x95fa('0x7')],channels[_0x11d555[_0x95fa('0x7')]][_0x95fa('0x40')]));delete channels[_0x11d555[_0x95fa('0x7')]][_0x95fa('0x3c')];}}}catch(_0x16527a){utils[_0x95fa('0x26')](util[_0x95fa('0x9')](_0x95fa('0x3f'),_0x11d555[_0x95fa('0x7')]),_0x16527a);}};exports[_0x95fa('0x42')]=function(_0x5ee544){try{if(!_['isNil'](channels[_0x5ee544[_0x95fa('0x7')]])){utils['debug'](util[_0x95fa('0x9')](_0x95fa('0x43'),_0x5ee544[_0x95fa('0x7')]),_0x5ee544);if(!_['isNil'](_0x5ee544[_0x95fa('0x44')][_0x95fa('0x45')])){utils[_0x95fa('0x8')](util['format'](_0x95fa('0x46'),_0x5ee544[_0x95fa('0x7')],_0x5ee544[_0x95fa('0x47')]));channels[_0x5ee544[_0x95fa('0x7')]][_0x95fa('0x48')]=_0x5ee544['value'];}if(!_[_0x95fa('0x21')](_0x5ee544['variable'][_0x95fa('0x49')])){utils[_0x95fa('0x8')](util['format'](_0x95fa('0x4a'),_0x5ee544[_0x95fa('0x7')],_0x5ee544[_0x95fa('0x47')]));channels[_0x5ee544[_0x95fa('0x7')]][_0x95fa('0x4b')]=_0x5ee544['value'];channels[_0x5ee544[_0x95fa('0x7')]][_0x95fa('0x29')]='\x22'+_0x5ee544[_0x95fa('0x47')]+_0x95fa('0x4c')+_0x5ee544[_0x95fa('0x47')]+'>';}if(!_['isNil'](_0x5ee544[_0x95fa('0x44')][_0x95fa('0x4d')])||!_[_0x95fa('0x21')](_0x5ee544['variable'][_0x95fa('0x4e')])){utils['info'](util['format'](_0x95fa('0x4f'),_0x5ee544[_0x95fa('0x7')],!_[_0x95fa('0x21')](_0x5ee544[_0x95fa('0x44')][_0x95fa('0x4d')])?_0x95fa('0x4d'):_0x95fa('0x4e'),_0x5ee544['value']));channels[_0x5ee544[_0x95fa('0x7')]][_0x95fa('0x29')]=_0x5ee544['value'];}if(!_[_0x95fa('0x21')](_0x5ee544[_0x95fa('0x44')][_0x95fa('0x50')])||!_[_0x95fa('0x21')](_0x5ee544[_0x95fa('0x44')][_0x95fa('0x51')])){utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x4f'),_0x5ee544['uniqueid'],!_['isNil'](_0x5ee544['variable']['xmd-queue'])?_0x95fa('0x50'):'xmcs-queue',_0x5ee544[_0x95fa('0x47')]));channels[_0x5ee544[_0x95fa('0x7')]]['lastapplication']='Queue';channels[_0x5ee544['uniqueid']][_0x95fa('0x52')]=_0x5ee544['value'];channels[_0x5ee544[_0x95fa('0x7')]][_0x95fa('0x53')]=!![];}if(!_[_0x95fa('0x21')](_0x5ee544['variable']['xmd-contactid'])){utils[_0x95fa('0x8')](util['format'](_0x95fa('0x54'),_0x5ee544[_0x95fa('0x7')],_0x5ee544[_0x95fa('0x47')]));channels[_0x5ee544['uniqueid']][_0x95fa('0x55')]=_0x5ee544[_0x95fa('0x47')];}if(!_[_0x95fa('0x21')](_0x5ee544[_0x95fa('0x44')][_0x95fa('0x56')])){utils['info'](util[_0x95fa('0x9')](_0x95fa('0x57'),_0x5ee544[_0x95fa('0x7')],_0x5ee544[_0x95fa('0x47')]));channels[_0x5ee544[_0x95fa('0x7')]][_0x95fa('0x58')]=_0x5ee544[_0x95fa('0x47')];}if(!_[_0x95fa('0x21')](_0x5ee544['variable'][_0x95fa('0x59')])){utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x5a'),_0x5ee544[_0x95fa('0x7')],_0x5ee544[_0x95fa('0x47')]));channels[_0x5ee544['uniqueid']][_0x95fa('0x5b')]=_0x5ee544[_0x95fa('0x47')];}if(!_[_0x95fa('0x21')](_0x5ee544[_0x95fa('0x44')][_0x95fa('0x5c')])){utils['info'](util[_0x95fa('0x9')](_0x95fa('0x5d'),_0x5ee544[_0x95fa('0x7')],_0x5ee544[_0x95fa('0x47')]));channels[_0x5ee544['uniqueid']]['sipcallid']=_0x5ee544['value'];}}}catch(_0x33e806){utils[_0x95fa('0x26')](util[_0x95fa('0x9')](_0x95fa('0x43'),_0x5ee544['uniqueid']),_0x33e806);}};exports['newexten']=function(_0x545de2){try{if(!_[_0x95fa('0x21')](channels[_0x545de2[_0x95fa('0x7')]])){utils['debug'](util['format'](_0x95fa('0x5e'),_0x545de2[_0x95fa('0x7')]),_0x545de2);utils[_0x95fa('0x8')](util[_0x95fa('0x9')](_0x95fa('0x5f'),_0x545de2[_0x95fa('0x7')],_0x545de2[_0x95fa('0x60')],_0x545de2[_0x95fa('0x61')]));if(_0x545de2['application'][_0x95fa('0x62')]()==_0x95fa('0x63')&&_['startsWith'](_0x545de2['appdata'][_0x95fa('0x62')](),_0x95fa('0x64'))){var _0x6f03b3=_0x545de2['appdata'][_0x95fa('0x65')]('=');var _0x44b0c2=_0x6f03b3[0x0][_0x95fa('0x66')](_0x6f03b3[0x0][_0x95fa('0x67')]('(')+0x1,_0x6f03b3[0x0][_0x95fa('0x67')](')'));var _0x4d65c1=_0x6f03b3[0x1];channels[_0x545de2['uniqueid']][_0x44b0c2]=_0x4d65c1;}if(!_[_0x95fa('0x68')]([_0x95fa('0x28'),_0x95fa('0x69'),_0x95fa('0x6a'),_0x95fa('0x63'),'gotoif'],_0x545de2[_0x95fa('0x60')]['toLowerCase']())){channels[_0x545de2[_0x95fa('0x7')]][_0x95fa('0x6b')]=_0x545de2[_0x95fa('0x60')];channels[_0x545de2[_0x95fa('0x7')]]['lastdata']=_0x545de2['appdata'];}}}catch(_0x323ab8){utils[_0x95fa('0x26')](util[_0x95fa('0x9')]('[%s][calls][newexten]',_0x545de2['uniqueid']),_0x323ab8);}};
\ No newline at end of file
index 031f979..ac7e06d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35f9=['connect','info','[core]\x20connected','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','./utils'];(function(_0x1ee62e,_0x159bb2){var _0x27c6c8=function(_0x31a5d4){while(--_0x31a5d4){_0x1ee62e['push'](_0x1ee62e['shift']());}};_0x27c6c8(++_0x159bb2);}(_0x35f9,0x1df));var _0x935f=function(_0x27fcc3,_0x1266cb){_0x27fcc3=_0x27fcc3-0x0;var _0x4307e8=_0x35f9[_0x27fcc3];return _0x4307e8;};'use strict';var utils=require(_0x935f('0x0'));exports[_0x935f('0x1')]=function(){utils[_0x935f('0x2')](_0x935f('0x3'));};exports['shutdown']=function(){utils[_0x935f('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x935f('0x2')](_0x935f('0x4'));};exports['error']=function(_0x5efd7b){utils[_0x935f('0x5')](_0x935f('0x6'),_0x5efd7b);};exports[_0x935f('0x7')]=function(){utils[_0x935f('0x2')](_0x935f('0x8'));};exports[_0x935f('0x9')]=function(_0x4182d5){};
\ No newline at end of file
+var _0x59b2=['[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','error','[core]\x20error','close','[core]\x20close','./utils','connect','info'];(function(_0x16eb11,_0x1a2251){var _0x3ae7ef=function(_0x575a01){while(--_0x575a01){_0x16eb11['push'](_0x16eb11['shift']());}};_0x3ae7ef(++_0x1a2251);}(_0x59b2,0x1e1));var _0x259b=function(_0x258fb5,_0x47c7f5){_0x258fb5=_0x258fb5-0x0;var _0x124437=_0x59b2[_0x258fb5];return _0x124437;};'use strict';var utils=require(_0x259b('0x0'));exports[_0x259b('0x1')]=function(){utils[_0x259b('0x2')](_0x259b('0x3'));};exports[_0x259b('0x4')]=function(){utils[_0x259b('0x2')](_0x259b('0x5'));};exports[_0x259b('0x6')]=function(){utils[_0x259b('0x2')]('[core]\x20fullybooted');};exports[_0x259b('0x7')]=function(_0x209400){utils['error'](_0x259b('0x8'),_0x209400);};exports[_0x259b('0x9')]=function(){utils[_0x259b('0x2')](_0x259b('0xa'));};exports['managerevent']=function(_0x467df6){};
\ No newline at end of file
index 89e0cfc..d90743c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba13=['debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','toLowerCase','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][dialbegin]','assign','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','dialend','[%s][dials][dialend]','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','duration','holdtime','diffTime','billableseconds','endtime','lodash','util','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','uniqueid','newexten'];(function(_0x2a3c4d,_0x9c6b37){var _0x55c390=function(_0x4871cf){while(--_0x4871cf){_0x2a3c4d['push'](_0x2a3c4d['shift']());}};_0x55c390(++_0x9c6b37);}(_0xba13,0x1e7));var _0x3ba1=function(_0x104e21,_0x2ea86f){_0x104e21=_0x104e21-0x0;var _0x605b37=_0xba13[_0x104e21];return _0x605b37;};'use strict';var _=require(_0x3ba1('0x0'));var util=require(_0x3ba1('0x1'));var utils=require('./utils');var dials={};function writeDB(_0x59f721){utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x4'),_0x59f721['uniqueid'],_0x59f721[_0x3ba1('0x5')],_0x59f721['dialstring'],_0x59f721[_0x3ba1('0x6')],_0x59f721[_0x3ba1('0x7')],_0x59f721[_0x3ba1('0x8')]));utils[_0x3ba1('0x9')](_0x3ba1('0xa'),_0x59f721);delete dials[_0x59f721[_0x3ba1('0xb')]];}exports[_0x3ba1('0xc')]=function(_0x5e62f8){try{utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0xe'),_0x5e62f8[_0x3ba1('0xb')]),_0x5e62f8);utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0xf'),_0x5e62f8[_0x3ba1('0xb')],_0x5e62f8[_0x3ba1('0x10')],_0x5e62f8[_0x3ba1('0x11')]));if(_0x5e62f8[_0x3ba1('0x10')]['toLowerCase']()==_0x3ba1('0x12')&&_['startsWith'](_0x5e62f8[_0x3ba1('0x11')][_0x3ba1('0x13')](),_0x3ba1('0x14'))){var _0x4403e5=_0x5e62f8[_0x3ba1('0x11')][_0x3ba1('0x15')]('=');dials[_0x5e62f8['uniqueid']]={'routeId':_0x4403e5[0x1]};}}catch(_0x48e412){utils[_0x3ba1('0x16')](util[_0x3ba1('0x3')](_0x3ba1('0xe'),_0x5e62f8[_0x3ba1('0xb')]),_0x48e412);}};exports[_0x3ba1('0x17')]=function(_0x2ad4f1){try{utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x18'),_0x2ad4f1[_0x3ba1('0xb')]),_0x2ad4f1);if(!_[_0x3ba1('0x19')](_0x2ad4f1[_0x3ba1('0x1a')][_0x3ba1('0x1b')])){utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x2ad4f1['uniqueid'],_0x2ad4f1['value']));dials[_0x2ad4f1[_0x3ba1('0xb')]]={'routeId':_0x2ad4f1['value']};}}catch(_0x4702da){utils['error'](util[_0x3ba1('0x3')](_0x3ba1('0x18'),_0x2ad4f1['uniqueid']),_0x4702da);}};exports['dialbegin']=function(_0x4cf2e7){try{if(!_['isNil'](dials[_0x4cf2e7['uniqueid']])){utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x1c'),_0x4cf2e7[_0x3ba1('0xb')]),_0x4cf2e7);dials[_0x4cf2e7[_0x3ba1('0xb')]]=_[_0x3ba1('0x1d')](dials[_0x4cf2e7[_0x3ba1('0xb')]],_0x4cf2e7);dials[_0x4cf2e7[_0x3ba1('0xb')]]['starttime']=utils[_0x3ba1('0x1e')]();dials[_0x4cf2e7[_0x3ba1('0xb')]][_0x3ba1('0x1f')]=_0x3ba1('0x20');utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x21'),_0x4cf2e7[_0x3ba1('0xb')],dials[_0x4cf2e7[_0x3ba1('0xb')]][_0x3ba1('0x22')]));}}catch(_0x4af45c){utils['error'](util['format'](_0x3ba1('0x1c'),_0x4cf2e7[_0x3ba1('0xb')]),_0x4af45c);}};exports[_0x3ba1('0x23')]=function(_0x61afd9){try{if(!_['isNil'](dials[_0x61afd9['uniqueid']])){utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x24'),_0x61afd9[_0x3ba1('0xb')]),_0x61afd9);dials[_0x61afd9[_0x3ba1('0xb')]]['dialstatus']=_0x61afd9[_0x3ba1('0x8')];if(_0x61afd9[_0x3ba1('0x8')]=='ANSWER'){dials[_0x61afd9[_0x3ba1('0xb')]]=_[_0x3ba1('0x1d')](dials[_0x61afd9[_0x3ba1('0xb')]],_0x61afd9);dials[_0x61afd9[_0x3ba1('0xb')]][_0x3ba1('0x25')]=utils[_0x3ba1('0x1e')]();dials[_0x61afd9['uniqueid']][_0x3ba1('0x1f')]=_0x3ba1('0x26');utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x27'),_0x61afd9[_0x3ba1('0xb')],_0x61afd9[_0x3ba1('0x8')],dials[_0x61afd9[_0x3ba1('0xb')]]['answertime']));}else{utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x28'),_0x61afd9['uniqueid'],_0x61afd9['dialstatus']));}}}catch(_0x2d30db){utils[_0x3ba1('0x16')](util[_0x3ba1('0x3')](_0x3ba1('0x24'),_0x61afd9[_0x3ba1('0xb')]),_0x2d30db);}};exports[_0x3ba1('0x29')]=function(_0x520b98){try{if(!_[_0x3ba1('0x19')](dials[_0x520b98[_0x3ba1('0xb')]])){utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x2a'),_0x520b98[_0x3ba1('0xb')]),_0x520b98);utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x2b'),_0x520b98[_0x3ba1('0xb')],_0x520b98[_0x3ba1('0x6')],_0x520b98[_0x3ba1('0x2c')],_0x520b98['cause-txt']));dials[_0x520b98[_0x3ba1('0xb')]]=_[_0x3ba1('0x1d')](dials[_0x520b98[_0x3ba1('0xb')]],{'endtime':utils[_0x3ba1('0x1e')](),'lastevent':'complete'});dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x2d')]=utils['diffTime'](dials[_0x520b98[_0x3ba1('0xb')]]['endtime'],dials[_0x520b98['uniqueid']]['starttime']);dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x2e')]=utils[_0x3ba1('0x2f')](dials[_0x520b98['uniqueid']][_0x3ba1('0x25')]||dials[_0x520b98[_0x3ba1('0xb')]]['endtime'],dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x22')]);dials[_0x520b98['uniqueid']][_0x3ba1('0x30')]=dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x25')]?utils['diffTime'](dials[_0x520b98['uniqueid']][_0x3ba1('0x31')],dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x25')]):0x0;writeDB(dials[_0x520b98['uniqueid']]);}}catch(_0x3bc314){utils[_0x3ba1('0x16')](util['format'](_0x3ba1('0x2a'),_0x520b98[_0x3ba1('0xb')]),_0x3bc314);}};
\ No newline at end of file
+var _0xf2a2=['util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','newexten','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','cdr(routeid)','split','error','varset','debug','[%s][dials][varset]','isNil','variable','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','hangup','cause-txt','complete','duration','diffTime','endtime','billableseconds','[%s][dials][hangup]'];(function(_0x3054df,_0x6ba564){var _0x5c1334=function(_0x3b7e9d){while(--_0x3b7e9d){_0x3054df['push'](_0x3054df['shift']());}};_0x5c1334(++_0x6ba564);}(_0xf2a2,0x142));var _0x2f2a=function(_0x43694d,_0x2fa5ba){_0x43694d=_0x43694d-0x0;var _0x369db2=_0xf2a2[_0x43694d];return _0x369db2;};'use strict';var _=require('lodash');var util=require(_0x2f2a('0x0'));var utils=require(_0x2f2a('0x1'));var dials={};function writeDB(_0xc75691){utils['info'](util[_0x2f2a('0x2')](_0x2f2a('0x3'),_0xc75691[_0x2f2a('0x4')],_0xc75691[_0x2f2a('0x5')],_0xc75691[_0x2f2a('0x6')],_0xc75691[_0x2f2a('0x7')],_0xc75691[_0x2f2a('0x8')],_0xc75691[_0x2f2a('0x9')]));utils['request']('CreateVoiceDialReport',_0xc75691);delete dials[_0xc75691[_0x2f2a('0x4')]];}exports[_0x2f2a('0xa')]=function(_0x2e88a2){try{utils['debug'](util[_0x2f2a('0x2')](_0x2f2a('0xb'),_0x2e88a2[_0x2f2a('0x4')]),_0x2e88a2);utils[_0x2f2a('0xc')](util['format'](_0x2f2a('0xd'),_0x2e88a2[_0x2f2a('0x4')],_0x2e88a2[_0x2f2a('0xe')],_0x2e88a2['appdata']));if(_0x2e88a2[_0x2f2a('0xe')]['toLowerCase']()=='set'&&_['startsWith'](_0x2e88a2[_0x2f2a('0xf')][_0x2f2a('0x10')](),_0x2f2a('0x11'))){var _0x450389=_0x2e88a2[_0x2f2a('0xf')][_0x2f2a('0x12')]('=');dials[_0x2e88a2[_0x2f2a('0x4')]]={'routeId':_0x450389[0x1]};}}catch(_0x4e72a8){utils[_0x2f2a('0x13')](util[_0x2f2a('0x2')](_0x2f2a('0xb'),_0x2e88a2['uniqueid']),_0x4e72a8);}};exports[_0x2f2a('0x14')]=function(_0x5c8d55){try{utils[_0x2f2a('0x15')](util['format'](_0x2f2a('0x16'),_0x5c8d55[_0x2f2a('0x4')]),_0x5c8d55);if(!_[_0x2f2a('0x17')](_0x5c8d55[_0x2f2a('0x18')]['outboundrouteid'])){utils[_0x2f2a('0xc')](util[_0x2f2a('0x2')](_0x2f2a('0x19'),_0x5c8d55[_0x2f2a('0x4')],_0x5c8d55[_0x2f2a('0x1a')]));dials[_0x5c8d55[_0x2f2a('0x4')]]={'routeId':_0x5c8d55[_0x2f2a('0x1a')]};}}catch(_0x3706bd){utils[_0x2f2a('0x13')](util[_0x2f2a('0x2')](_0x2f2a('0x16'),_0x5c8d55['uniqueid']),_0x3706bd);}};exports[_0x2f2a('0x1b')]=function(_0x2a6447){try{if(!_[_0x2f2a('0x17')](dials[_0x2a6447['uniqueid']])){utils['debug'](util[_0x2f2a('0x2')](_0x2f2a('0x1c'),_0x2a6447[_0x2f2a('0x4')]),_0x2a6447);dials[_0x2a6447[_0x2f2a('0x4')]]=_[_0x2f2a('0x1d')](dials[_0x2a6447['uniqueid']],_0x2a6447);dials[_0x2a6447[_0x2f2a('0x4')]][_0x2f2a('0x1e')]=utils[_0x2f2a('0x1f')]();dials[_0x2a6447[_0x2f2a('0x4')]][_0x2f2a('0x20')]='called';utils[_0x2f2a('0xc')](util[_0x2f2a('0x2')](_0x2f2a('0x21'),_0x2a6447[_0x2f2a('0x4')],dials[_0x2a6447[_0x2f2a('0x4')]]['starttime']));}}catch(_0x399bcd){utils[_0x2f2a('0x13')](util[_0x2f2a('0x2')]('[%s][dials][dialbegin]',_0x2a6447[_0x2f2a('0x4')]),_0x399bcd);}};exports[_0x2f2a('0x22')]=function(_0x132bc7){try{if(!_[_0x2f2a('0x17')](dials[_0x132bc7[_0x2f2a('0x4')]])){utils[_0x2f2a('0x15')](util[_0x2f2a('0x2')](_0x2f2a('0x23'),_0x132bc7['uniqueid']),_0x132bc7);dials[_0x132bc7[_0x2f2a('0x4')]][_0x2f2a('0x9')]=_0x132bc7['dialstatus'];if(_0x132bc7[_0x2f2a('0x9')]==_0x2f2a('0x24')){dials[_0x132bc7[_0x2f2a('0x4')]]=_['assign'](dials[_0x132bc7[_0x2f2a('0x4')]],_0x132bc7);dials[_0x132bc7['uniqueid']][_0x2f2a('0x25')]=utils[_0x2f2a('0x1f')]();dials[_0x132bc7[_0x2f2a('0x4')]]['lastevent']='connect';utils['info'](util[_0x2f2a('0x2')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x132bc7[_0x2f2a('0x4')],_0x132bc7[_0x2f2a('0x9')],dials[_0x132bc7[_0x2f2a('0x4')]][_0x2f2a('0x25')]));}else{utils['info'](util[_0x2f2a('0x2')]('[%s][dials][dialend]\x20dialstatus:%s',_0x132bc7[_0x2f2a('0x4')],_0x132bc7[_0x2f2a('0x9')]));}}}catch(_0x3d094d){utils[_0x2f2a('0x13')](util[_0x2f2a('0x2')](_0x2f2a('0x23'),_0x132bc7['uniqueid']),_0x3d094d);}};exports[_0x2f2a('0x26')]=function(_0x1c850c){try{if(!_[_0x2f2a('0x17')](dials[_0x1c850c[_0x2f2a('0x4')]])){utils[_0x2f2a('0x15')](util[_0x2f2a('0x2')]('[%s][dials][hangup]',_0x1c850c[_0x2f2a('0x4')]),_0x1c850c);utils['info'](util[_0x2f2a('0x2')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x1c850c[_0x2f2a('0x4')],_0x1c850c[_0x2f2a('0x7')],_0x1c850c['calleridname'],_0x1c850c[_0x2f2a('0x27')]));dials[_0x1c850c[_0x2f2a('0x4')]]=_[_0x2f2a('0x1d')](dials[_0x1c850c['uniqueid']],{'endtime':utils[_0x2f2a('0x1f')](),'lastevent':_0x2f2a('0x28')});dials[_0x1c850c['uniqueid']][_0x2f2a('0x29')]=utils[_0x2f2a('0x2a')](dials[_0x1c850c[_0x2f2a('0x4')]][_0x2f2a('0x2b')],dials[_0x1c850c['uniqueid']]['starttime']);dials[_0x1c850c['uniqueid']]['holdtime']=utils[_0x2f2a('0x2a')](dials[_0x1c850c['uniqueid']]['answertime']||dials[_0x1c850c[_0x2f2a('0x4')]][_0x2f2a('0x2b')],dials[_0x1c850c[_0x2f2a('0x4')]][_0x2f2a('0x1e')]);dials[_0x1c850c['uniqueid']][_0x2f2a('0x2c')]=dials[_0x1c850c['uniqueid']]['answertime']?utils[_0x2f2a('0x2a')](dials[_0x1c850c[_0x2f2a('0x4')]][_0x2f2a('0x2b')],dials[_0x1c850c[_0x2f2a('0x4')]]['answertime']):0x0;writeDB(dials[_0x1c850c[_0x2f2a('0x4')]]);}}catch(_0x315e6c){utils[_0x2f2a('0x13')](util[_0x2f2a('0x2')](_0x2f2a('0x2d'),_0x1c850c[_0x2f2a('0x4')]),_0x315e6c);}};
\ No newline at end of file
index d2af9e2..0ecd059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac86=['[%s][index][newexten]','newexten','[%s][index][newchannel]','newchannel','dialbegin','dialend','[%s][index][dialend]','asterisk-manager','./utils','util','xdr','disabled','env','production','asterisk','username','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','device','devicestatechange','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentcomplete]','agentcomplete','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset'];(function(_0x62b5b1,_0x1454c1){var _0x496a4b=function(_0xb95507){while(--_0xb95507){_0x62b5b1['push'](_0x62b5b1['shift']());}};_0x496a4b(++_0x1454c1);}(_0xac86,0x165));var _0x6ac8=function(_0x3dda2c,_0x1eacd9){_0x3dda2c=_0x3dda2c-0x0;var _0x34cef7=_0xac86[_0x3dda2c];return _0x34cef7;};var AsteriskManager=require(_0x6ac8('0x0'));var config=require('../../config/environment');var utils=require(_0x6ac8('0x1'));var util=require(_0x6ac8('0x2'));var isXDREnabled=config['xdr']&&config[_0x6ac8('0x3')][_0x6ac8('0x4')]?!config['xdr']['disabled']:!![];var isProduction=config[_0x6ac8('0x5')]===_0x6ac8('0x6')||![];var isLocalAsterisk=config['xdr']&&config[_0x6ac8('0x3')]['local']===!![]||![];var ami=new AsteriskManager(config[_0x6ac8('0x7')]['port'],config[_0x6ac8('0x7')]['ip'],config[_0x6ac8('0x7')][_0x6ac8('0x8')],config[_0x6ac8('0x7')][_0x6ac8('0x9')],!![]);ami[_0x6ac8('0xa')]();if(!isXDREnabled){utils[_0x6ac8('0xb')](_0x6ac8('0xc'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x6ac8('0xb')](_0x6ac8('0xd'));}else{var agents=require(_0x6ac8('0xe'));var calls=require(_0x6ac8('0xf'));var queues=require(_0x6ac8('0x10'));var recordings=require(_0x6ac8('0x11'));var members=require(_0x6ac8('0x12'));var dials=require(_0x6ac8('0x13'));var transfers=require(_0x6ac8('0x14'));var core=require(_0x6ac8('0x15'));ami['on'](_0x6ac8('0x16'),core[_0x6ac8('0x16')]);ami['on'](_0x6ac8('0x17'),core[_0x6ac8('0x17')]);ami['on'](_0x6ac8('0x18'),core[_0x6ac8('0x18')]);ami['on'](_0x6ac8('0x19'),core[_0x6ac8('0x19')]);ami['on'](_0x6ac8('0x1a'),core[_0x6ac8('0x1a')]);ami['on'](_0x6ac8('0x1b'),core['managerevent']);ami['on']('devicestatechange',function(_0x29ff8f){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x1e'),_0x29ff8f[_0x6ac8('0x1f')]),_0x29ff8f);members[_0x6ac8('0x20')](_0x29ff8f);}catch(_0x497156){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x1e'),_0x29ff8f[_0x6ac8('0x1f')]),_0x497156);}});ami['on'](_0x6ac8('0x21'),function(_0x5c45fa){try{utils[_0x6ac8('0x1c')](util['format'](_0x6ac8('0x22'),_0x5c45fa['uniqueid']),_0x5c45fa);agents[_0x6ac8('0x21')](_0x5c45fa);}catch(_0x42c5a1){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x22'),_0x5c45fa[_0x6ac8('0x23')]),_0x42c5a1);}});ami['on'](_0x6ac8('0x24'),function(_0x3fe6ce){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x25'),_0x3fe6ce['uniqueid']),_0x3fe6ce);agents[_0x6ac8('0x24')](_0x3fe6ce);}catch(_0x5ea94d){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x25'),_0x3fe6ce[_0x6ac8('0x23')]),_0x5ea94d);}});ami['on'](_0x6ac8('0x26'),function(_0x1fba4d){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][agentconnect]',_0x1fba4d[_0x6ac8('0x23')]),_0x1fba4d);agents[_0x6ac8('0x26')](_0x1fba4d);queues[_0x6ac8('0x26')](_0x1fba4d);}catch(_0x189a3a){utils[_0x6ac8('0x19')](util['format']('[%s][index][agentconnect]',_0x1fba4d[_0x6ac8('0x23')]),_0x189a3a);}});ami['on']('agentcomplete',function(_0x2cd268){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x27'),_0x2cd268[_0x6ac8('0x23')]),_0x2cd268);agents[_0x6ac8('0x28')](_0x2cd268);queues['agentcomplete'](_0x2cd268);members[_0x6ac8('0x28')](_0x2cd268);}catch(_0x5ec6c1){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x27'),_0x2cd268['uniqueid']),_0x5ec6c1);}});ami['on']('queuecallerabandon',function(_0x29b8e2){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x29'),_0x29b8e2[_0x6ac8('0x23')]),_0x29b8e2);agents[_0x6ac8('0x2a')](_0x29b8e2);queues['queuecallerabandon'](_0x29b8e2);}catch(_0x542b27){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][queuecallerabandon]',_0x29b8e2[_0x6ac8('0x23')]),_0x542b27);}});ami['on'](_0x6ac8('0x2b'),function(_0x5af7d3){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][queuecallerjoin]',_0x5af7d3[_0x6ac8('0x23')]),_0x5af7d3);queues[_0x6ac8('0x2b')](_0x5af7d3);recordings[_0x6ac8('0x2b')](_0x5af7d3);}catch(_0x3920fb){utils[_0x6ac8('0x19')](util['format'](_0x6ac8('0x2c'),_0x5af7d3[_0x6ac8('0x23')]),_0x3920fb);}});ami['on'](_0x6ac8('0x2d'),function(_0x28c5d1){try{utils['debug'](util[_0x6ac8('0x1d')](_0x6ac8('0x2e'),_0x28c5d1[_0x6ac8('0x23')]),_0x28c5d1);queues[_0x6ac8('0x2d')](_0x28c5d1);}catch(_0x4446a6){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][queuecallerleave]',_0x28c5d1[_0x6ac8('0x23')]),_0x4446a6);}});ami['on'](_0x6ac8('0x2f'),function(_0x3c7f88){try{utils['debug'](util[_0x6ac8('0x1d')](_0x6ac8('0x30'),_0x3c7f88['uniqueid']),_0x3c7f88);queues['musiconholdstart'](_0x3c7f88);calls[_0x6ac8('0x2f')](_0x3c7f88);}catch(_0x5cc34e){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x30'),_0x3c7f88[_0x6ac8('0x23')]),_0x5cc34e);}});ami['on'](_0x6ac8('0x31'),function(_0x33b900){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x32'),_0x33b900[_0x6ac8('0x23')]),_0x33b900);queues[_0x6ac8('0x31')](_0x33b900);calls[_0x6ac8('0x31')](_0x33b900);}catch(_0x4e6329){utils[_0x6ac8('0x19')](util['format'](_0x6ac8('0x32'),_0x33b900[_0x6ac8('0x23')]),_0x4e6329);}});ami['on'](_0x6ac8('0x33'),function(_0x17d7b4){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][newstate]',_0x17d7b4[_0x6ac8('0x23')]),_0x17d7b4);calls['newstate'](_0x17d7b4);recordings[_0x6ac8('0x33')](_0x17d7b4);}catch(_0x56d799){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x34'),_0x17d7b4[_0x6ac8('0x23')]),_0x56d799);}});ami['on'](_0x6ac8('0x35'),function(_0x2e9325){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x36'),_0x2e9325[_0x6ac8('0x23')]),_0x2e9325);calls[_0x6ac8('0x35')](_0x2e9325);recordings[_0x6ac8('0x35')](_0x2e9325);dials['hangup'](_0x2e9325);agents[_0x6ac8('0x35')](_0x2e9325);queues[_0x6ac8('0x35')](_0x2e9325);}catch(_0x22720e){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][hangup]',_0x2e9325['uniqueid']),_0x22720e);}});ami['on'](_0x6ac8('0x37'),function(_0x32387a){try{utils['debug'](util['format']('[%s][index][cdr]',_0x32387a['uniqueid']),_0x32387a);members[_0x6ac8('0x37')](_0x32387a);}catch(_0x5e1056){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x38'),_0x32387a[_0x6ac8('0x23')]),_0x5e1056);}});ami['on'](_0x6ac8('0x39'),function(_0x161ef9){try{utils['debug'](util['format'](_0x6ac8('0x3a'),_0x161ef9[_0x6ac8('0x23')]),_0x161ef9);queues[_0x6ac8('0x39')](_0x161ef9);agents['blindtransfer'](_0x161ef9);transfers[_0x6ac8('0x39')](_0x161ef9);recordings[_0x6ac8('0x39')](_0x161ef9);}catch(_0x2fc685){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x3a'),_0x161ef9['uniqueid']),_0x2fc685);}});ami['on'](_0x6ac8('0x3b'),function(_0x27ced6){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x3c'),_0x27ced6[_0x6ac8('0x3d')]),_0x27ced6);queues[_0x6ac8('0x3b')](_0x27ced6);transfers[_0x6ac8('0x3b')](_0x27ced6);agents[_0x6ac8('0x3b')](_0x27ced6);calls[_0x6ac8('0x3b')](_0x27ced6);}catch(_0xdd9013){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x3c'),_0x27ced6['origtransfereruniqueid']),_0xdd9013);}});ami['on'](_0x6ac8('0x3e'),function(_0x3767ec){try{utils['debug'](util[_0x6ac8('0x1d')]('[%s][index][varset]',_0x3767ec[_0x6ac8('0x23')]),_0x3767ec);queues[_0x6ac8('0x3e')](_0x3767ec);recordings[_0x6ac8('0x3e')](_0x3767ec);calls[_0x6ac8('0x3e')](_0x3767ec);dials['varset'](_0x3767ec);}catch(_0x1cb417){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][varset]',_0x3767ec['uniqueid']),_0x1cb417);}});ami['on']('newexten',function(_0x3b5908){try{utils['debug'](util[_0x6ac8('0x1d')](_0x6ac8('0x3f'),_0x3b5908[_0x6ac8('0x23')]),_0x3b5908);calls[_0x6ac8('0x40')](_0x3b5908);recordings[_0x6ac8('0x40')](_0x3b5908);dials[_0x6ac8('0x40')](_0x3b5908);}catch(_0x34149a){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x3f'),_0x3b5908[_0x6ac8('0x23')]),_0x34149a);}});ami['on']('newchannel',function(_0x569aa3){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x41'),_0x569aa3['uniqueid']),_0x569aa3);calls[_0x6ac8('0x42')](_0x569aa3);recordings[_0x6ac8('0x42')](_0x569aa3);}catch(_0x3830a7){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x41'),_0x569aa3[_0x6ac8('0x23')]),_0x3830a7);}});ami['on'](_0x6ac8('0x43'),function(_0x1d406f){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][dialbegin]',_0x1d406f['uniqueid']),_0x1d406f);dials[_0x6ac8('0x43')](_0x1d406f);}catch(_0x5a262c){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s]dialbegin',_0x1d406f[_0x6ac8('0x23')]),_0x5a262c);}});ami['on'](_0x6ac8('0x44'),function(_0x4a53e2){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x45'),_0x4a53e2[_0x6ac8('0x23')]),_0x4a53e2);dials[_0x6ac8('0x44')](_0x4a53e2);}catch(_0x12062e){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x45'),_0x4a53e2[_0x6ac8('0x23')]),_0x12062e);}});}
\ No newline at end of file
+var _0x1f37=['queuecallerabandon','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','[%s][index][musiconholdstart]','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]','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','../../config/environment','util','xdr','disabled','env','production','local','port','asterisk','username','password','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./calls.controller','./queues.controller','./recordings.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','devicestatechange','device','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]'];(function(_0x4934cc,_0x721dc4){var _0x2e453e=function(_0x4b75f3){while(--_0x4b75f3){_0x4934cc['push'](_0x4934cc['shift']());}};_0x2e453e(++_0x721dc4);}(_0x1f37,0x181));var _0x71f3=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0x1f37[_0x58965a];return _0x254efc;};var AsteriskManager=require('asterisk-manager');var config=require(_0x71f3('0x0'));var utils=require('./utils');var util=require(_0x71f3('0x1'));var isXDREnabled=config['xdr']&&config[_0x71f3('0x2')][_0x71f3('0x3')]?!config[_0x71f3('0x2')][_0x71f3('0x3')]:!![];var isProduction=config[_0x71f3('0x4')]===_0x71f3('0x5')||![];var isLocalAsterisk=config[_0x71f3('0x2')]&&config['xdr'][_0x71f3('0x6')]===!![]||![];var ami=new AsteriskManager(config['asterisk'][_0x71f3('0x7')],config[_0x71f3('0x8')]['ip'],config[_0x71f3('0x8')][_0x71f3('0x9')],config[_0x71f3('0x8')][_0x71f3('0xa')],!![]);ami['keepConnected']();if(!isXDREnabled){utils[_0x71f3('0xb')](_0x71f3('0xc'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x71f3('0xb')](_0x71f3('0xd'));}else{var agents=require('./agents.controller');var calls=require(_0x71f3('0xe'));var queues=require(_0x71f3('0xf'));var recordings=require(_0x71f3('0x10'));var members=require('./members.controller');var dials=require(_0x71f3('0x11'));var transfers=require(_0x71f3('0x12'));var core=require(_0x71f3('0x13'));ami['on'](_0x71f3('0x14'),core[_0x71f3('0x14')]);ami['on'](_0x71f3('0x15'),core['shutdown']);ami['on']('fullybooted',core[_0x71f3('0x16')]);ami['on'](_0x71f3('0x17'),core[_0x71f3('0x17')]);ami['on'](_0x71f3('0x18'),core[_0x71f3('0x18')]);ami['on'](_0x71f3('0x19'),core[_0x71f3('0x19')]);ami['on']('devicestatechange',function(_0x13f1e1){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x1c'),_0x13f1e1['device']),_0x13f1e1);members[_0x71f3('0x1d')](_0x13f1e1);}catch(_0x586baf){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x1c'),_0x13f1e1[_0x71f3('0x1e')]),_0x586baf);}});ami['on']('agentcalled',function(_0x10b745){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x1f'),_0x10b745[_0x71f3('0x20')]),_0x10b745);agents[_0x71f3('0x21')](_0x10b745);}catch(_0x19dff1){utils[_0x71f3('0x17')](util['format'](_0x71f3('0x1f'),_0x10b745[_0x71f3('0x20')]),_0x19dff1);}});ami['on'](_0x71f3('0x22'),function(_0x5afd12){try{utils[_0x71f3('0x1a')](util['format']('[%s][index][agentringnoanswer]',_0x5afd12[_0x71f3('0x20')]),_0x5afd12);agents[_0x71f3('0x22')](_0x5afd12);}catch(_0x25fe0c){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x23'),_0x5afd12[_0x71f3('0x20')]),_0x25fe0c);}});ami['on'](_0x71f3('0x24'),function(_0x1d047b){try{utils['debug'](util[_0x71f3('0x1b')](_0x71f3('0x25'),_0x1d047b[_0x71f3('0x20')]),_0x1d047b);agents['agentconnect'](_0x1d047b);queues[_0x71f3('0x24')](_0x1d047b);}catch(_0xdbf6fa){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')]('[%s][index][agentconnect]',_0x1d047b[_0x71f3('0x20')]),_0xdbf6fa);}});ami['on'](_0x71f3('0x26'),function(_0x1692c9){try{utils['debug'](util[_0x71f3('0x1b')](_0x71f3('0x27'),_0x1692c9[_0x71f3('0x20')]),_0x1692c9);agents['agentcomplete'](_0x1692c9);queues[_0x71f3('0x26')](_0x1692c9);members[_0x71f3('0x26')](_0x1692c9);}catch(_0x3b0647){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x27'),_0x1692c9[_0x71f3('0x20')]),_0x3b0647);}});ami['on']('queuecallerabandon',function(_0x2f7bc2){try{utils[_0x71f3('0x1a')](util['format'](_0x71f3('0x28'),_0x2f7bc2['uniqueid']),_0x2f7bc2);agents[_0x71f3('0x29')](_0x2f7bc2);queues[_0x71f3('0x29')](_0x2f7bc2);}catch(_0x32bc9d){utils['error'](util[_0x71f3('0x1b')](_0x71f3('0x28'),_0x2f7bc2[_0x71f3('0x20')]),_0x32bc9d);}});ami['on']('queuecallerjoin',function(_0x208309){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x2a'),_0x208309['uniqueid']),_0x208309);queues[_0x71f3('0x2b')](_0x208309);recordings['queuecallerjoin'](_0x208309);}catch(_0x28084d){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x2a'),_0x208309[_0x71f3('0x20')]),_0x28084d);}});ami['on'](_0x71f3('0x2c'),function(_0x3ae39f){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x2d'),_0x3ae39f[_0x71f3('0x20')]),_0x3ae39f);queues['queuecallerleave'](_0x3ae39f);}catch(_0x40c5a5){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x2d'),_0x3ae39f[_0x71f3('0x20')]),_0x40c5a5);}});ami['on']('musiconholdstart',function(_0x401568){try{utils[_0x71f3('0x1a')](util['format'](_0x71f3('0x2e'),_0x401568[_0x71f3('0x20')]),_0x401568);queues[_0x71f3('0x2f')](_0x401568);calls[_0x71f3('0x2f')](_0x401568);}catch(_0x46d377){utils['error'](util['format'](_0x71f3('0x2e'),_0x401568['uniqueid']),_0x46d377);}});ami['on'](_0x71f3('0x30'),function(_0x38befd){try{utils['debug'](util['format'](_0x71f3('0x31'),_0x38befd[_0x71f3('0x20')]),_0x38befd);queues[_0x71f3('0x30')](_0x38befd);calls[_0x71f3('0x30')](_0x38befd);}catch(_0x3aa231){utils['error'](util[_0x71f3('0x1b')]('[%s][index][musiconholdstop]',_0x38befd[_0x71f3('0x20')]),_0x3aa231);}});ami['on']('newstate',function(_0x23534c){try{utils[_0x71f3('0x1a')](util['format'](_0x71f3('0x32'),_0x23534c[_0x71f3('0x20')]),_0x23534c);calls[_0x71f3('0x33')](_0x23534c);recordings[_0x71f3('0x33')](_0x23534c);}catch(_0x137b58){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')]('[%s][index][newstate]',_0x23534c[_0x71f3('0x20')]),_0x137b58);}});ami['on'](_0x71f3('0x34'),function(_0x3323ac){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x35'),_0x3323ac['uniqueid']),_0x3323ac);calls[_0x71f3('0x34')](_0x3323ac);recordings['hangup'](_0x3323ac);dials['hangup'](_0x3323ac);agents['hangup'](_0x3323ac);queues[_0x71f3('0x34')](_0x3323ac);}catch(_0x5e7514){utils[_0x71f3('0x17')](util['format']('[%s][index][hangup]',_0x3323ac[_0x71f3('0x20')]),_0x5e7514);}});ami['on'](_0x71f3('0x36'),function(_0x1e4eb6){try{utils['debug'](util[_0x71f3('0x1b')]('[%s][index][cdr]',_0x1e4eb6[_0x71f3('0x20')]),_0x1e4eb6);members['cdr'](_0x1e4eb6);}catch(_0x48146d){utils['error'](util['format'](_0x71f3('0x37'),_0x1e4eb6['uniqueid']),_0x48146d);}});ami['on'](_0x71f3('0x38'),function(_0x31e95b){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x39'),_0x31e95b[_0x71f3('0x20')]),_0x31e95b);queues['blindtransfer'](_0x31e95b);agents[_0x71f3('0x38')](_0x31e95b);transfers[_0x71f3('0x38')](_0x31e95b);recordings[_0x71f3('0x38')](_0x31e95b);}catch(_0x6ddadb){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x39'),_0x31e95b[_0x71f3('0x20')]),_0x6ddadb);}});ami['on'](_0x71f3('0x3a'),function(_0x512870){try{utils['debug'](util['format'](_0x71f3('0x3b'),_0x512870['origtransfereruniqueid']),_0x512870);queues[_0x71f3('0x3a')](_0x512870);transfers['attendedtransfer'](_0x512870);agents[_0x71f3('0x3a')](_0x512870);calls['attendedtransfer'](_0x512870);}catch(_0x1d27a6){utils['error'](util[_0x71f3('0x1b')](_0x71f3('0x3b'),_0x512870['origtransfereruniqueid']),_0x1d27a6);}});ami['on'](_0x71f3('0x3c'),function(_0x39500d){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')]('[%s][index][varset]',_0x39500d['uniqueid']),_0x39500d);queues['varset'](_0x39500d);recordings[_0x71f3('0x3c')](_0x39500d);calls[_0x71f3('0x3c')](_0x39500d);dials[_0x71f3('0x3c')](_0x39500d);}catch(_0x127351){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x3d'),_0x39500d[_0x71f3('0x20')]),_0x127351);}});ami['on'](_0x71f3('0x3e'),function(_0x161279){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x3f'),_0x161279[_0x71f3('0x20')]),_0x161279);calls[_0x71f3('0x3e')](_0x161279);recordings[_0x71f3('0x3e')](_0x161279);dials['newexten'](_0x161279);}catch(_0x3996a3){utils[_0x71f3('0x17')](util['format'](_0x71f3('0x3f'),_0x161279['uniqueid']),_0x3996a3);}});ami['on'](_0x71f3('0x40'),function(_0x534e3e){try{utils['debug'](util['format'](_0x71f3('0x41'),_0x534e3e[_0x71f3('0x20')]),_0x534e3e);calls[_0x71f3('0x40')](_0x534e3e);recordings['newchannel'](_0x534e3e);}catch(_0xf2239d){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x41'),_0x534e3e[_0x71f3('0x20')]),_0xf2239d);}});ami['on'](_0x71f3('0x42'),function(_0x572cab){try{utils[_0x71f3('0x1a')](util[_0x71f3('0x1b')](_0x71f3('0x43'),_0x572cab['uniqueid']),_0x572cab);dials['dialbegin'](_0x572cab);}catch(_0x360ea3){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x44'),_0x572cab[_0x71f3('0x20')]),_0x360ea3);}});ami['on'](_0x71f3('0x45'),function(_0x41ffd5){try{utils[_0x71f3('0x1a')](util['format']('[%s][index][dialend]',_0x41ffd5[_0x71f3('0x20')]),_0x41ffd5);dials[_0x71f3('0x45')](_0x41ffd5);}catch(_0x5b3f52){utils[_0x71f3('0x17')](util[_0x71f3('0x1b')](_0x71f3('0x46'),_0x41ffd5['uniqueid']),_0x5b3f52);}});}
\ No newline at end of file
index f9569d2..1978a75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0aa=['Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','then','internal','request','getUserByName','split','catch','error','[%s][members][writeDB]','some','devicestatechange','debug','[%s][members][devicestatechange]','device','state','voice','TALKING','agent','NOT_INUSE','isNil','exitAt','diffTime','enterAt','queue','assign','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','util','Local/_attended@transfer'];(function(_0x2e5d4f,_0x2c2f38){var _0x59efd9=function(_0x507bbc){while(--_0x507bbc){_0x2e5d4f['push'](_0x2e5d4f['shift']());}};_0x59efd9(++_0x2c2f38);}(_0xa0aa,0x19b));var _0xaa0a=function(_0x227a97,_0x494547){_0x227a97=_0x227a97-0x0;var _0x18c325=_0xa0aa[_0x227a97];return _0x18c325;};'use strict';var _=require(_0xaa0a('0x0'));var util=require(_0xaa0a('0x1'));var utils=require('./utils');var members={};var exclude=[_0xaa0a('0x2'),_0xaa0a('0x3')];function writeDB(_0x76dfdc){utils[_0xaa0a('0x4')](util[_0xaa0a('0x5')](_0xaa0a('0x6'),_0x76dfdc[_0xaa0a('0x7')],_0x76dfdc[_0xaa0a('0x8')],_0x76dfdc[_0xaa0a('0x9')],_0x76dfdc[_0xaa0a('0xa')],_0x76dfdc[_0xaa0a('0xb')],_0x76dfdc[_0xaa0a('0xc')]));if(_0x76dfdc[_0xaa0a('0x8')]){utils['getUserByInterface'](_0x76dfdc[_0xaa0a('0x8')])[_0xaa0a('0xd')](function(_0x361a28){if(_0x361a28){_0x76dfdc[_0xaa0a('0xb')]=_0x361a28['name'];_0x76dfdc[_0xaa0a('0xe')]=_0x361a28[_0xaa0a('0xe')];utils[_0xaa0a('0xf')]('CreateMemberReport',_0x76dfdc);}else{utils[_0xaa0a('0x10')](_0x76dfdc[_0xaa0a('0x8')][_0xaa0a('0x11')]('/')[0x1])[_0xaa0a('0xd')](function(_0x43b90a){if(_0x43b90a){_0x76dfdc[_0xaa0a('0xb')]=_0x43b90a['name'];_0x76dfdc[_0xaa0a('0xe')]=_0x43b90a[_0xaa0a('0xe')];utils['request']('CreateMemberReport',_0x76dfdc);}});}})[_0xaa0a('0x12')](function(_0x51710d){utils[_0xaa0a('0x13')](util[_0xaa0a('0x5')](_0xaa0a('0x14'),_0x76dfdc[_0xaa0a('0x7')]),_0x51710d);});}delete members[_0x76dfdc[_0xaa0a('0x8')]];}function startsWith(_0x58ef83,_0x323b10){return _[_0xaa0a('0x15')](_0x58ef83,function(_0x5b760e){return _['startsWith'](_0x323b10,_0x5b760e);});}exports[_0xaa0a('0x16')]=function(_0x439af3){try{utils[_0xaa0a('0x17')](util[_0xaa0a('0x5')](_0xaa0a('0x18'),members[_0x439af3['device']]?members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]:_0x439af3[_0xaa0a('0x19')]),_0x439af3);utils['info'](util['format']('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x439af3[_0xaa0a('0x19')]]?members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]:_0x439af3[_0xaa0a('0x19')],_0x439af3['state'],_0x439af3[_0xaa0a('0x19')]));switch(_0x439af3[_0xaa0a('0x1a')]){case'INUSE':case'BUSY':if(!startsWith(exclude,_0x439af3['device'])){members[_0x439af3[_0xaa0a('0x19')]]={'channel':_0xaa0a('0x1b'),'interface':_0x439af3['device'],'type':_0xaa0a('0x1c'),'enterAt':utils['now'](),'role':_0xaa0a('0x1d')};}break;case _0xaa0a('0x1e'):if(!_[_0xaa0a('0x1f')](members[_0x439af3[_0xaa0a('0x19')]])){members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x20')]=utils['now']();members[_0x439af3[_0xaa0a('0x19')]]['duration']=utils[_0xaa0a('0x21')](members[_0x439af3[_0xaa0a('0x19')]]['exitAt'],members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x22')]);if(members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]){writeDB(members[_0x439af3['device']]);}}break;default:break;}}catch(_0x104ce1){utils[_0xaa0a('0x13')](util[_0xaa0a('0x5')](_0xaa0a('0x18'),members[_0x439af3[_0xaa0a('0x19')]]?members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]:_0x439af3[_0xaa0a('0x19')]),_0x104ce1);}};exports['agentcomplete']=function(_0x3ea031){try{if(!_[_0xaa0a('0x1f')](members[_0x3ea031[_0xaa0a('0x8')]])){utils[_0xaa0a('0x17')](util[_0xaa0a('0x5')]('[%s][members][agentcomplete]',_0x3ea031[_0xaa0a('0x7')]),_0x3ea031);utils['info'](util[_0xaa0a('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x3ea031[_0xaa0a('0x7')],_0x3ea031[_0xaa0a('0x8')],_0x3ea031[_0xaa0a('0x23')]));members[_0x3ea031[_0xaa0a('0x8')]]=_[_0xaa0a('0x24')](members[_0x3ea031[_0xaa0a('0x8')]],{'data4':_0x3ea031[_0xaa0a('0x23')],'uniqueid':_0x3ea031[_0xaa0a('0x7')]});}}catch(_0x5b43d1){utils[_0xaa0a('0x13')](util['format'](_0xaa0a('0x25'),_0x3ea031[_0xaa0a('0x7')]),_0x5b43d1);}};exports[_0xaa0a('0x26')]=function(_0x2228ed){try{utils[_0xaa0a('0x17')](util[_0xaa0a('0x5')](_0xaa0a('0x27'),_0x2228ed[_0xaa0a('0x7')]),_0x2228ed);if(_0x2228ed[_0xaa0a('0x9')]){var _0x316b85=_0x2228ed[_0xaa0a('0x9')][_0xaa0a('0x11')]('-')[0x0];if(!_[_0xaa0a('0x1f')](members[_0x316b85])){members[_0x316b85]=_[_0xaa0a('0x24')](members[_0x316b85],{'data1':members[_0x316b85][_0xaa0a('0x28')]||_0x2228ed['type'],'data2':members[_0x316b85][_0xaa0a('0xa')]||_0x2228ed[_0xaa0a('0x29')],'data3':members[_0x316b85][_0xaa0a('0x2a')]||_0x2228ed[_0xaa0a('0x2b')],'uniqueid':members[_0x316b85][_0xaa0a('0x7')]||_0x2228ed[_0xaa0a('0x7')]});utils[_0xaa0a('0x4')](util['format'](_0xaa0a('0x2c'),_0x2228ed[_0xaa0a('0x7')],members[_0x316b85][_0xaa0a('0x28')],members[_0x316b85][_0xaa0a('0xa')],members[_0x316b85][_0xaa0a('0x2a')]));if(members[_0x316b85][_0xaa0a('0x20')]){writeDB(members[_0x316b85]);}}}if(_0x2228ed[_0xaa0a('0x2d')]){var _0xd45b23=_0x2228ed[_0xaa0a('0x2d')][_0xaa0a('0x11')]('-')[0x0];if(!_[_0xaa0a('0x1f')](members[_0xd45b23])){members[_0xd45b23]=_[_0xaa0a('0x24')](members[_0xd45b23],{'data1':members[_0xd45b23]['data1']||_0x2228ed['type'],'data2':members[_0xd45b23][_0xaa0a('0xa')]||_0x2228ed[_0xaa0a('0x29')],'data3':members[_0xd45b23][_0xaa0a('0x2a')]||_0x2228ed['destination'],'uniqueid':members[_0xd45b23]['uniqueid']||_0x2228ed[_0xaa0a('0x7')]});utils['info'](util[_0xaa0a('0x5')](_0xaa0a('0x2c'),_0x2228ed['uniqueid'],members[_0xd45b23]['data1'],members[_0xd45b23][_0xaa0a('0xa')],members[_0xd45b23][_0xaa0a('0x2a')]));if(members[_0xd45b23][_0xaa0a('0x20')]){writeDB(members[_0xd45b23]);}}}}catch(_0x415fcc){utils[_0xaa0a('0x13')](util[_0xaa0a('0x5')](_0xaa0a('0x27'),_0x2228ed[_0xaa0a('0x7')]),_0x415fcc);}};
\ No newline at end of file
+var _0xdab2=['[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','isNil','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','destinationchannel','[%s][members][cdr]','lodash','util','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','then','internal','request','CreateMemberReport','getUserByName','split','error','format','[%s][members][writeDB]','devicestatechange','debug','[%s][members][devicestatechange]','device','state','INUSE','BUSY','voice','TALKING','now','NOT_INUSE','exitAt','diffTime','[%s][members][agentcomplete]'];(function(_0xf973b7,_0x46699f){var _0x499087=function(_0x45b42f){while(--_0x45b42f){_0xf973b7['push'](_0xf973b7['shift']());}};_0x499087(++_0x46699f);}(_0xdab2,0x15c));var _0x2dab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdab2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2dab('0x0'));var util=require(_0x2dab('0x1'));var utils=require(_0x2dab('0x2'));var members={};var exclude=[_0x2dab('0x3'),_0x2dab('0x4')];function writeDB(_0xf9b7cc){utils[_0x2dab('0x5')](util['format'](_0x2dab('0x6'),_0xf9b7cc[_0x2dab('0x7')],_0xf9b7cc[_0x2dab('0x8')],_0xf9b7cc[_0x2dab('0x9')],_0xf9b7cc[_0x2dab('0xa')],_0xf9b7cc[_0x2dab('0xb')],_0xf9b7cc[_0x2dab('0xc')]));if(_0xf9b7cc['interface']){utils['getUserByInterface'](_0xf9b7cc['interface'])[_0x2dab('0xd')](function(_0x5be29c){if(_0x5be29c){_0xf9b7cc['membername']=_0x5be29c['name'];_0xf9b7cc['internal']=_0x5be29c[_0x2dab('0xe')];utils[_0x2dab('0xf')](_0x2dab('0x10'),_0xf9b7cc);}else{utils[_0x2dab('0x11')](_0xf9b7cc[_0x2dab('0x8')][_0x2dab('0x12')]('/')[0x1])[_0x2dab('0xd')](function(_0x14a42e){if(_0x14a42e){_0xf9b7cc[_0x2dab('0xb')]=_0x14a42e['name'];_0xf9b7cc[_0x2dab('0xe')]=_0x14a42e['internal'];utils[_0x2dab('0xf')](_0x2dab('0x10'),_0xf9b7cc);}});}})['catch'](function(_0x59b78b){utils[_0x2dab('0x13')](util[_0x2dab('0x14')](_0x2dab('0x15'),_0xf9b7cc['uniqueid']),_0x59b78b);});}delete members[_0xf9b7cc[_0x2dab('0x8')]];}function startsWith(_0x5f5791,_0x5d7f73){return _['some'](_0x5f5791,function(_0x5ea60d){return _['startsWith'](_0x5d7f73,_0x5ea60d);});}exports[_0x2dab('0x16')]=function(_0x3c1512){try{utils[_0x2dab('0x17')](util[_0x2dab('0x14')](_0x2dab('0x18'),members[_0x3c1512['device']]?members[_0x3c1512[_0x2dab('0x19')]][_0x2dab('0x7')]:_0x3c1512['device']),_0x3c1512);utils[_0x2dab('0x5')](util[_0x2dab('0x14')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x3c1512[_0x2dab('0x19')]]?members[_0x3c1512[_0x2dab('0x19')]][_0x2dab('0x7')]:_0x3c1512[_0x2dab('0x19')],_0x3c1512[_0x2dab('0x1a')],_0x3c1512[_0x2dab('0x19')]));switch(_0x3c1512[_0x2dab('0x1a')]){case _0x2dab('0x1b'):case _0x2dab('0x1c'):if(!startsWith(exclude,_0x3c1512[_0x2dab('0x19')])){members[_0x3c1512[_0x2dab('0x19')]]={'channel':_0x2dab('0x1d'),'interface':_0x3c1512[_0x2dab('0x19')],'type':_0x2dab('0x1e'),'enterAt':utils[_0x2dab('0x1f')](),'role':'agent'};}break;case _0x2dab('0x20'):if(!_['isNil'](members[_0x3c1512[_0x2dab('0x19')]])){members[_0x3c1512[_0x2dab('0x19')]][_0x2dab('0x21')]=utils[_0x2dab('0x1f')]();members[_0x3c1512[_0x2dab('0x19')]]['duration']=utils[_0x2dab('0x22')](members[_0x3c1512[_0x2dab('0x19')]][_0x2dab('0x21')],members[_0x3c1512[_0x2dab('0x19')]]['enterAt']);if(members[_0x3c1512[_0x2dab('0x19')]][_0x2dab('0x7')]){writeDB(members[_0x3c1512['device']]);}}break;default:break;}}catch(_0x418061){utils[_0x2dab('0x13')](util[_0x2dab('0x14')]('[%s][members][devicestatechange]',members[_0x3c1512[_0x2dab('0x19')]]?members[_0x3c1512['device']][_0x2dab('0x7')]:_0x3c1512[_0x2dab('0x19')]),_0x418061);}};exports['agentcomplete']=function(_0x3401e8){try{if(!_['isNil'](members[_0x3401e8[_0x2dab('0x8')]])){utils['debug'](util['format'](_0x2dab('0x23'),_0x3401e8['uniqueid']),_0x3401e8);utils[_0x2dab('0x5')](util[_0x2dab('0x14')](_0x2dab('0x24'),_0x3401e8['uniqueid'],_0x3401e8[_0x2dab('0x8')],_0x3401e8[_0x2dab('0x25')]));members[_0x3401e8[_0x2dab('0x8')]]=_[_0x2dab('0x26')](members[_0x3401e8[_0x2dab('0x8')]],{'data4':_0x3401e8[_0x2dab('0x25')],'uniqueid':_0x3401e8[_0x2dab('0x7')]});}}catch(_0x45543a){utils[_0x2dab('0x13')](util[_0x2dab('0x14')](_0x2dab('0x23'),_0x3401e8[_0x2dab('0x7')]),_0x45543a);}};exports[_0x2dab('0x27')]=function(_0x3f063c){try{utils[_0x2dab('0x17')](util['format']('[%s][members][cdr]',_0x3f063c['uniqueid']),_0x3f063c);if(_0x3f063c[_0x2dab('0x9')]){var _0x5b4828=_0x3f063c['channel'][_0x2dab('0x12')]('-')[0x0];if(!_[_0x2dab('0x28')](members[_0x5b4828])){members[_0x5b4828]=_[_0x2dab('0x26')](members[_0x5b4828],{'data1':members[_0x5b4828]['data1']||_0x3f063c[_0x2dab('0xc')],'data2':members[_0x5b4828][_0x2dab('0xa')]||_0x3f063c[_0x2dab('0x29')],'data3':members[_0x5b4828][_0x2dab('0x2a')]||_0x3f063c[_0x2dab('0x2b')],'uniqueid':members[_0x5b4828][_0x2dab('0x7')]||_0x3f063c['uniqueid']});utils[_0x2dab('0x5')](util[_0x2dab('0x14')](_0x2dab('0x2c'),_0x3f063c[_0x2dab('0x7')],members[_0x5b4828][_0x2dab('0x2d')],members[_0x5b4828][_0x2dab('0xa')],members[_0x5b4828][_0x2dab('0x2a')]));if(members[_0x5b4828][_0x2dab('0x21')]){writeDB(members[_0x5b4828]);}}}if(_0x3f063c[_0x2dab('0x2e')]){var _0x4a393d=_0x3f063c[_0x2dab('0x2e')][_0x2dab('0x12')]('-')[0x0];if(!_[_0x2dab('0x28')](members[_0x4a393d])){members[_0x4a393d]=_[_0x2dab('0x26')](members[_0x4a393d],{'data1':members[_0x4a393d][_0x2dab('0x2d')]||_0x3f063c[_0x2dab('0xc')],'data2':members[_0x4a393d][_0x2dab('0xa')]||_0x3f063c[_0x2dab('0x29')],'data3':members[_0x4a393d]['data3']||_0x3f063c[_0x2dab('0x2b')],'uniqueid':members[_0x4a393d][_0x2dab('0x7')]||_0x3f063c[_0x2dab('0x7')]});utils[_0x2dab('0x5')](util[_0x2dab('0x14')](_0x2dab('0x2c'),_0x3f063c[_0x2dab('0x7')],members[_0x4a393d][_0x2dab('0x2d')],members[_0x4a393d][_0x2dab('0xa')],members[_0x4a393d]['data3']));if(members[_0x4a393d][_0x2dab('0x21')]){writeDB(members[_0x4a393d]);}}}}catch(_0x54fd6a){utils['error'](util[_0x2dab('0x14')](_0x2dab('0x2f'),_0x3f063c[_0x2dab('0x7')]),_0x54fd6a);}};
\ No newline at end of file
index 4fe5d8a..929e8c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd40f=['transfereduniqueid','queuecallerjoin','info','assign','position','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','debug','queuecallerabandon','queuecallerexit','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','[%s][queues][hangup]','varset','[%s][queues][varset]','variable','queuestatus','value','queuecallerabandonAt','queuecallerexitAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','queuecallerleaveAt','holdtime','diffTime','queuecallerjoinAt','count','connectedlinename','agentconnect','membername','destaccountcode','assigned','lastAssignedTo','[%s][queues][agentconnect]','agentcomplete','queuecallercomplete','transfer','COMPLETEDBY','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','origtransfererexten','secondtransfererlinkedid','transferexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','ATTENDED','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','util','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport'];(function(_0x116f1c,_0x5be34b){var _0x5be838=function(_0x2ef5b4){while(--_0x2ef5b4){_0x116f1c['push'](_0x116f1c['shift']());}};_0x5be838(++_0x5be34b);}(_0xd40f,0x1e6));var _0xfd40=function(_0x435fed,_0x4009ec){_0x435fed=_0x435fed-0x0;var _0x2c6ab9=_0xd40f[_0x435fed];return _0x2c6ab9;};'use strict';var _=require('lodash');var util=require(_0xfd40('0x0'));var utils=require('./utils');var queues={};function writeDB(_0x223d70){utils['info'](util[_0xfd40('0x1')](_0xfd40('0x2'),_0x223d70[_0xfd40('0x3')],_0x223d70[_0xfd40('0x4')],_0x223d70[_0xfd40('0x5')],_0x223d70['lastAssignedTo'],_0x223d70[_0xfd40('0x6')],_0x223d70[_0xfd40('0x7')],_0x223d70[_0xfd40('0x8')]));if(_0x223d70[_0xfd40('0x5')]){utils[_0xfd40('0x9')](_0x223d70[_0xfd40('0x5')])[_0xfd40('0xa')](function(_0xe81431){if(_0xe81431){_0x223d70[_0xfd40('0xb')]=_0xe81431[_0xfd40('0xb')];}utils[_0xfd40('0xc')](_0xfd40('0xd'),_0x223d70);});}else{utils['request'](_0xfd40('0xd'),_0x223d70);}if(_0x223d70[_0xfd40('0xe')]){delete queues[_0x223d70[_0xfd40('0xe')]];}else{delete queues[_0x223d70[_0xfd40('0x3')]];}}exports[_0xfd40('0xf')]=function(_0x5c9540){try{utils['debug'](util[_0xfd40('0x1')]('[%s][queues][queuecallerjoin]',_0x5c9540[_0xfd40('0x3')]),_0x5c9540);utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x5c9540[_0xfd40('0x3')],_0x5c9540[_0xfd40('0x5')],_0x5c9540['position']));queues[_0x5c9540[_0xfd40('0x3')]]=_[_0xfd40('0x11')](_0x5c9540,{'originalposition':_0x5c9540[_0xfd40('0x12')],'queuecallerjoinAt':utils[_0xfd40('0x13')](),'mohtime':0x0});}catch(_0x210886){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x15'),_0x5c9540[_0xfd40('0x3')]),_0x210886);}};exports[_0xfd40('0x16')]=function(_0xa5d653){try{if(!_[_0xfd40('0x17')](queues[_0xa5d653['uniqueid']])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][hangup]',_0xa5d653[_0xfd40('0x3')]),_0xa5d653);if(queues[_0xa5d653[_0xfd40('0x3')]]['queuecallerleaveAt']){if(!queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x19')]&&!queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x1a')]){queues[_0xa5d653[_0xfd40('0x3')]]['queuecallercomplete']=!![];queues[_0xa5d653['uniqueid']]['queuecallercompleteAt']=utils[_0xfd40('0x13')]();queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x8')]=_0xfd40('0x1b');}utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x1c'),_0xa5d653[_0xfd40('0x3')],queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x1d')],queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x8')]));writeDB(queues[_0xa5d653['uniqueid']]);}else if(queues[_0xa5d653[_0xfd40('0x3')]]['transfereduniqueid']){utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0xa5d653['uniqueid'],queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x1d')],queues[_0xa5d653[_0xfd40('0x3')]]['transfereduniqueid']));queues[queues[_0xa5d653['uniqueid']][_0xfd40('0xe')]]=queues[_0xa5d653[_0xfd40('0x3')]];queues[queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0xe')]][_0xfd40('0x1e')]=0x2;delete queues[_0xa5d653[_0xfd40('0x3')]];}}}catch(_0x2f0391){utils[_0xfd40('0x14')](util['format'](_0xfd40('0x1f'),_0xa5d653[_0xfd40('0x3')]),_0x2f0391);}};exports[_0xfd40('0x20')]=function(_0xef5f9){try{utils[_0xfd40('0x18')](util[_0xfd40('0x1')](_0xfd40('0x21'),_0xef5f9['uniqueid']),_0xef5f9);if(!_[_0xfd40('0x17')](_0xef5f9[_0xfd40('0x22')][_0xfd40('0x23')])&&_0xef5f9[_0xfd40('0x24')]['toUpperCase']()!=='CONTINUE'){if(!_[_0xfd40('0x17')](queues[_0xef5f9[_0xfd40('0x3')]])){queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerabandon']=![];queues[_0xef5f9['uniqueid']][_0xfd40('0x25')]=null;queues[_0xef5f9['uniqueid']]['queuecallerexit']=!![];queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x26')]=utils[_0xfd40('0x13')]();queues[_0xef5f9['uniqueid']][_0xfd40('0x8')]=_0xef5f9[_0xfd40('0x24')][_0xfd40('0x27')]();utils['info'](util['format'](_0xfd40('0x28'),_0xef5f9[_0xfd40('0x3')],queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x1d')],_0xef5f9[_0xfd40('0x24')],queues[_0xef5f9['uniqueid']][_0xfd40('0x8')]));writeDB(queues[_0xef5f9[_0xfd40('0x3')]]);}}else if(!_[_0xfd40('0x17')](_0xef5f9[_0xfd40('0x22')]['queueposition'])){if(!_[_0xfd40('0x17')](queues[_0xef5f9['uniqueid']])&&!queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerabandon']){queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x19')]=![];queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x25')]=null;queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x1a')]=!![];queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerexitAt']=utils[_0xfd40('0x13')]();queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x8')]=_0xfd40('0x29');utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x2a'),_0xef5f9[_0xfd40('0x3')],queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x1d')],_0xef5f9['value'],queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerexitreason']));}}}catch(_0x16f68a){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x21'),_0xef5f9['uniqueid']),_0x16f68a);}};exports[_0xfd40('0x19')]=function(_0x19faec){try{if(!_[_0xfd40('0x17')](queues[_0x19faec[_0xfd40('0x3')]])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')](_0xfd40('0x2b'),_0x19faec[_0xfd40('0x3')]),_0x19faec);queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x1a')]=![];queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x26')]=null;queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x19')]=!![];queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x25')]=utils[_0xfd40('0x13')]();queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x8')]='ABANDONED';utils['info'](util[_0xfd40('0x1')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x19faec[_0xfd40('0x3')],queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x1d')],queues[_0x19faec[_0xfd40('0x3')]]['queuecallerexitreason']));}}catch(_0x6785a3){utils['error'](util[_0xfd40('0x1')](_0xfd40('0x2b'),_0x19faec[_0xfd40('0x3')]),_0x6785a3);}};exports[_0xfd40('0x2c')]=function(_0x5003ee){try{if(!_[_0xfd40('0x17')](queues[_0x5003ee[_0xfd40('0x3')]])){utils['debug'](util[_0xfd40('0x1')]('[%s][queues][queuecallerleave]',_0x5003ee[_0xfd40('0x3')]),_0x5003ee);utils[_0xfd40('0x10')](util['format'](_0xfd40('0x2d'),_0x5003ee['uniqueid'],queues[_0x5003ee['uniqueid']][_0xfd40('0x1d')],_0x5003ee[_0xfd40('0x2e')],_0x5003ee['connectedlinename']));queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x2c')]=!![];queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x2f')]=utils[_0xfd40('0x13')]();queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x30')]=utils[_0xfd40('0x31')](queues[_0x5003ee['uniqueid']]['queuecallerleaveAt'],queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x32')]);queues[_0x5003ee[_0xfd40('0x3')]]['position']=_0x5003ee['position'];queues[_0x5003ee['uniqueid']][_0xfd40('0x33')]=_0x5003ee[_0xfd40('0x33')];queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x2e')]=_0x5003ee[_0xfd40('0x2e')];queues[_0x5003ee['uniqueid']][_0xfd40('0x34')]=_0x5003ee['connectedlinename'];}}catch(_0x2cffdd){utils[_0xfd40('0x14')](util[_0xfd40('0x1')]('[%s][queues][queuecallerleave]',_0x5003ee['uniqueid']),_0x2cffdd);}};exports[_0xfd40('0x35')]=function(_0x261825){try{if(!_[_0xfd40('0x17')](queues[_0x261825[_0xfd40('0x3')]])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][agentconnect]',_0x261825['uniqueid']),_0x261825);utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x261825['uniqueid'],queues[_0x261825['uniqueid']][_0xfd40('0x1d')],_0x261825[_0xfd40('0x36')],_0x261825[_0xfd40('0x37')]));queues[_0x261825[_0xfd40('0x3')]]['queuecallerabandon']=![];queues[_0x261825[_0xfd40('0x3')]]['queuecallerabandon']=![];queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x25')]=null;queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x1a')]=![];queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x8')]=null;queues[_0x261825['uniqueid']][_0xfd40('0x26')]=null;queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x38')]=!![];queues[_0x261825['uniqueid']][_0xfd40('0x7')]=_0x261825[_0xfd40('0x37')];queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x39')]=_0x261825[_0xfd40('0x36')];}}catch(_0x25b38a){utils[_0xfd40('0x14')](util['format'](_0xfd40('0x3a'),_0x261825[_0xfd40('0x3')]),_0x25b38a);}};exports[_0xfd40('0x3b')]=function(_0x1fa3eb){try{if(!_['isNil'](queues[_0x1fa3eb[_0xfd40('0x3')]])){if(queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x2f')]){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][agentcomplete]',_0x1fa3eb[_0xfd40('0x3')]),_0x1fa3eb);queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x19')]=![];queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x19')]=![];queues[_0x1fa3eb[_0xfd40('0x3')]]['queuecallerabandonAt']=null;queues[_0x1fa3eb['uniqueid']][_0xfd40('0x1a')]=![];queues[_0x1fa3eb[_0xfd40('0x3')]]['queuecallerexitAt']=null;queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x38')]=!![];queues[_0x1fa3eb['uniqueid']]['lastAssignedTo']=_0x1fa3eb[_0xfd40('0x36')];queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x3c')]=!![];queues[_0x1fa3eb[_0xfd40('0x3')]]['queuecallercompleteAt']=utils['now']();if(_0x1fa3eb['reason']=='transfer'){if(!queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x3d')]){queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x8')]='TRANSFER';}}else{queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x8')]=_0xfd40('0x3e')+_0x1fa3eb[_0xfd40('0x3f')][_0xfd40('0x27')]();}utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x40'),_0x1fa3eb['uniqueid'],queues[_0x1fa3eb[_0xfd40('0x3')]]['name'],_0x1fa3eb[_0xfd40('0x36')],queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x8')]));writeDB(queues[_0x1fa3eb[_0xfd40('0x3')]]);}}}catch(_0x3892cd){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x41'),_0x1fa3eb[_0xfd40('0x3')]),_0x3892cd);}};exports[_0xfd40('0x42')]=function(_0x38d4bf){try{if(!_[_0xfd40('0x17')](queues[_0x38d4bf[_0xfd40('0x43')]])){utils[_0xfd40('0x18')](util['format'](_0xfd40('0x44'),_0x38d4bf[_0xfd40('0x3')]),_0x38d4bf);queues[_0x38d4bf['transfereeuniqueid']]['transfer']=!![];queues[_0x38d4bf[_0xfd40('0x43')]][_0xfd40('0x45')]=_0xfd40('0x46');queues[_0x38d4bf[_0xfd40('0x43')]]['transferexten']=_0x38d4bf['extension'];queues[_0x38d4bf[_0xfd40('0x43')]][_0xfd40('0x47')]=_0x38d4bf['transfereeuniqueid'];queues[_0x38d4bf[_0xfd40('0x43')]][_0xfd40('0x8')]=_0xfd40('0x48');utils['info'](util[_0xfd40('0x1')](_0xfd40('0x49'),_0x38d4bf[_0xfd40('0x3')],queues[_0x38d4bf[_0xfd40('0x43')]]['name'],_0x38d4bf[_0xfd40('0x43')],_0x38d4bf[_0xfd40('0x4a')]));}}catch(_0x29fc11){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x44'),_0x38d4bf[_0xfd40('0x3')]),_0x29fc11);}};exports[_0xfd40('0x4b')]=function(_0x42c682){try{utils['debug'](util[_0xfd40('0x1')](_0xfd40('0x4c'),_0x42c682[_0xfd40('0x4d')]),_0x42c682);if(_0x42c682['origtransfereruniqueid']==_0x42c682[_0xfd40('0x4e')]){if(!_[_0xfd40('0x17')](queues[_0x42c682['secondtransfererlinkedid']])){utils[_0xfd40('0x10')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682['secondtransfererlinkedid']][_0xfd40('0x1d')],_0x42c682[_0xfd40('0x4f')]));queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x3d')]=!![];queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x45')]='ATTENDED';queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x51')]=_0x42c682['origtransfererexten'];queues[_0x42c682['secondtransfererlinkedid']]['transferuniqueid']=_0x42c682[_0xfd40('0x4d')];queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x8')]=_0xfd40('0x52');}if(!_['isNil'](queues[_0x42c682[_0xfd40('0x4e')]])){if(_0x42c682['transfereelinkedid']&&queues[_0x42c682[_0xfd40('0x53')]]){queues[_0x42c682[_0xfd40('0x53')]][_0xfd40('0x1e')]=0x1;queues[_0x42c682['transfereeuniqueid']]=_[_0xfd40('0x54')](queues[_0x42c682['transfereelinkedid']]);queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0xe')]=_0x42c682[_0xfd40('0x55')];queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x1e')]=0x2;queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x6')]=queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x6')];queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x56')]=queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x56')];queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x32')]=utils['now']();queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x2f')]=utils[_0xfd40('0x13')]();queues[_0x42c682[_0xfd40('0x43')]]['holdtime']=0x0;queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x57')]=0x0;utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x1d')],queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x6')],queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x56')]));}else{utils[_0xfd40('0x10')](util['format'](_0xfd40('0x58'),_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x4e')]]['name'],_0x42c682[_0xfd40('0x50')]));queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0xe')]=_0x42c682[_0xfd40('0x50')];}}}else if(_0x42c682[_0xfd40('0x59')]==_0x42c682[_0xfd40('0x50')]){if(!_[_0xfd40('0x17')](queues[_0x42c682[_0xfd40('0x4e')]])){utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682['origtransfererlinkedid']]['name'],_0x42c682[_0xfd40('0x59')],_0x42c682[_0xfd40('0x5a')]));queues[_0x42c682['origtransfererlinkedid']][_0xfd40('0x3d')]=!![];queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0x45')]=_0xfd40('0x5b');queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0x51')]=_0x42c682[_0xfd40('0x5a')];queues[_0x42c682['origtransfererlinkedid']][_0xfd40('0x47')]=_0x42c682[_0xfd40('0x59')];queues[_0x42c682[_0xfd40('0x4e')]]['queuecallerexitreason']=_0xfd40('0x52');}if(!_[_0xfd40('0x17')](queues[_0x42c682[_0xfd40('0x50')]])){if(_0x42c682[_0xfd40('0x5c')]&&queues[_0x42c682['transfertargetlinkedid']]){queues[_0x42c682['transfertargetlinkedid']][_0xfd40('0x1e')]=0x1;queues[_0x42c682[_0xfd40('0x55')]]=_['clone'](queues[_0x42c682[_0xfd40('0x5c')]]);queues[_0x42c682['transfertargetuniqueid']][_0xfd40('0xe')]=_0x42c682['transfertargetuniqueid'];queues[_0x42c682[_0xfd40('0x55')]]['queuecallerenterreason']=0x2;queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x6')]=queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0x6')];queues[_0x42c682['transfertargetuniqueid']][_0xfd40('0x56')]=queues[_0x42c682[_0xfd40('0x4e')]]['calleridname'];queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x32')]=utils[_0xfd40('0x13')]();queues[_0x42c682[_0xfd40('0x55')]]['queuecallerleaveAt']=utils[_0xfd40('0x13')]();queues[_0x42c682['transfertargetuniqueid']]['holdtime']=0x0;queues[_0x42c682['transfertargetuniqueid']][_0xfd40('0x57')]=0x0;utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x5d'),_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x1d')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0xe')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x6')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x56')]));}else{utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x1d')],_0x42c682[_0xfd40('0x4e')]));queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0xe')]=_0x42c682[_0xfd40('0x4e')];}}}}catch(_0xc5970d){utils[_0xfd40('0x14')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]',_0x42c682[_0xfd40('0x4d')]),_0xc5970d);}};exports['musiconholdstart']=function(_0x152774){try{if(!_[_0xfd40('0x17')](queues[_0x152774[_0xfd40('0x3')]])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')](_0xfd40('0x5e'),_0x152774['uniqueid']),_0x152774);queues[_0x152774[_0xfd40('0x3')]][_0xfd40('0x5f')]=utils[_0xfd40('0x13')]();utils['info'](util[_0xfd40('0x1')](_0xfd40('0x60'),_0x152774[_0xfd40('0x3')],queues[_0x152774['uniqueid']][_0xfd40('0x1d')],queues[_0x152774[_0xfd40('0x3')]][_0xfd40('0x5f')]));}}catch(_0x535fe0){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x5e'),_0x152774[_0xfd40('0x3')]),_0x535fe0);}};exports[_0xfd40('0x61')]=function(_0x270fe0){try{if(!_['isNil'](queues[_0x270fe0[_0xfd40('0x3')]])){if(!_[_0xfd40('0x17')](queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x5f')])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][musiconholdstop]',_0x270fe0[_0xfd40('0x3')]),_0x270fe0);queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x57')]+=utils[_0xfd40('0x31')](utils[_0xfd40('0x13')](),queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x5f')]);utils[_0xfd40('0x10')](util['format'](_0xfd40('0x62'),_0x270fe0['uniqueid'],queues[_0x270fe0[_0xfd40('0x3')]]['name'],queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x57')]));delete queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x5f')];}}}catch(_0x190ee1){utils['error'](util['format'](_0xfd40('0x63'),_0x270fe0[_0xfd40('0x3')]),_0x190ee1);}};
\ No newline at end of file
+var _0xe669=['variable','queuestatus','value','CONTINUE','queuecallerabandonAt','queuecallerexitAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','EXITWITHKEY','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','count','connectedlinename','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','destaccountcode','assigned','accountcode','[%s][queues][agentcomplete]','membername','reason','transfer','TRANSFER','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','calleridname','queuecallerjoinAt','holdtime','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','clone','transfertargetuniqueid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','lastAssignedTo','calleridnum','queuecallerexitreason','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','uniqueid','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','[%s][queues][queuecallerjoin]','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','now','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','error'];(function(_0x737a1f,_0x235fef){var _0x16eba1=function(_0x292aa8){while(--_0x292aa8){_0x737a1f['push'](_0x737a1f['shift']());}};_0x16eba1(++_0x235fef);}(_0xe669,0x1df));var _0x9e66=function(_0x320b8e,_0x1da3fe){_0x320b8e=_0x320b8e-0x0;var _0x55a10a=_0xe669[_0x320b8e];return _0x55a10a;};'use strict';var _=require(_0x9e66('0x0'));var util=require('util');var utils=require(_0x9e66('0x1'));var queues={};function writeDB(_0x42cda4){utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x4'),_0x42cda4['uniqueid'],_0x42cda4['channel'],_0x42cda4['queue'],_0x42cda4[_0x9e66('0x5')],_0x42cda4[_0x9e66('0x6')],_0x42cda4['accountcode'],_0x42cda4[_0x9e66('0x7')]));if(_0x42cda4[_0x9e66('0x8')]){utils[_0x9e66('0x9')](_0x42cda4[_0x9e66('0x8')])[_0x9e66('0xa')](function(_0x2d4ac0){if(_0x2d4ac0){_0x42cda4[_0x9e66('0xb')]=_0x2d4ac0['type'];}utils[_0x9e66('0xc')]('CreateVoiceQueueReport',_0x42cda4);});}else{utils[_0x9e66('0xc')](_0x9e66('0xd'),_0x42cda4);}if(_0x42cda4[_0x9e66('0xe')]){delete queues[_0x42cda4[_0x9e66('0xe')]];}else{delete queues[_0x42cda4['uniqueid']];}}exports[_0x9e66('0xf')]=function(_0x2841c3){try{utils[_0x9e66('0x10')](util['format']('[%s][queues][queuecallerjoin]',_0x2841c3[_0x9e66('0x11')]),_0x2841c3);utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x12'),_0x2841c3[_0x9e66('0x11')],_0x2841c3['queue'],_0x2841c3[_0x9e66('0x13')]));queues[_0x2841c3[_0x9e66('0x11')]]=_[_0x9e66('0x14')](_0x2841c3,{'originalposition':_0x2841c3[_0x9e66('0x13')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x5d7202){utils['error'](util[_0x9e66('0x3')](_0x9e66('0x15'),_0x2841c3[_0x9e66('0x11')]),_0x5d7202);}};exports[_0x9e66('0x16')]=function(_0x139078){try{if(!_[_0x9e66('0x17')](queues[_0x139078[_0x9e66('0x11')]])){utils[_0x9e66('0x10')](util[_0x9e66('0x3')](_0x9e66('0x18'),_0x139078['uniqueid']),_0x139078);if(queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0x19')]){if(!queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0x1a')]&&!queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0x1b')]){queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0x1c')]=!![];queues[_0x139078['uniqueid']][_0x9e66('0x1d')]=utils[_0x9e66('0x1e')]();queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0x7')]=_0x9e66('0x1f');}utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x20'),_0x139078['uniqueid'],queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0x21')],queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0x7')]));writeDB(queues[_0x139078[_0x9e66('0x11')]]);}else if(queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0xe')]){utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x22'),_0x139078[_0x9e66('0x11')],queues[_0x139078['uniqueid']][_0x9e66('0x21')],queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0xe')]));queues[queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0xe')]]=queues[_0x139078[_0x9e66('0x11')]];queues[queues[_0x139078[_0x9e66('0x11')]][_0x9e66('0xe')]]['queuecallerenterreason']=0x2;delete queues[_0x139078[_0x9e66('0x11')]];}}}catch(_0x51e997){utils[_0x9e66('0x23')](util[_0x9e66('0x3')](_0x9e66('0x18'),_0x139078['uniqueid']),_0x51e997);}};exports['varset']=function(_0x2fdb2){try{utils['debug'](util['format']('[%s][queues][varset]',_0x2fdb2[_0x9e66('0x11')]),_0x2fdb2);if(!_[_0x9e66('0x17')](_0x2fdb2[_0x9e66('0x24')][_0x9e66('0x25')])&&_0x2fdb2[_0x9e66('0x26')]['toUpperCase']()!==_0x9e66('0x27')){if(!_[_0x9e66('0x17')](queues[_0x2fdb2[_0x9e66('0x11')]])){queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x1a')]=![];queues[_0x2fdb2['uniqueid']][_0x9e66('0x28')]=null;queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x1b')]=!![];queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x29')]=utils[_0x9e66('0x1e')]();queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x7')]=_0x2fdb2['value'][_0x9e66('0x2a')]();utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x2b'),_0x2fdb2['uniqueid'],queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x21')],_0x2fdb2[_0x9e66('0x26')],queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x7')]));writeDB(queues[_0x2fdb2[_0x9e66('0x11')]]);}}else if(!_[_0x9e66('0x17')](_0x2fdb2['variable'][_0x9e66('0x2c')])){if(!_[_0x9e66('0x17')](queues[_0x2fdb2[_0x9e66('0x11')]])&&!queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x1a')]){queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x1a')]=![];queues[_0x2fdb2[_0x9e66('0x11')]]['queuecallerabandonAt']=null;queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x1b')]=!![];queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x29')]=utils[_0x9e66('0x1e')]();queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x7')]=_0x9e66('0x2d');utils['info'](util[_0x9e66('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x2fdb2[_0x9e66('0x11')],queues[_0x2fdb2[_0x9e66('0x11')]]['name'],_0x2fdb2[_0x9e66('0x26')],queues[_0x2fdb2[_0x9e66('0x11')]][_0x9e66('0x7')]));}}}catch(_0x4a57e7){utils[_0x9e66('0x23')](util['format']('[%s][queues][varset]',_0x2fdb2['uniqueid']),_0x4a57e7);}};exports[_0x9e66('0x1a')]=function(_0xbb12d9){try{if(!_[_0x9e66('0x17')](queues[_0xbb12d9[_0x9e66('0x11')]])){utils[_0x9e66('0x10')](util[_0x9e66('0x3')](_0x9e66('0x2e'),_0xbb12d9[_0x9e66('0x11')]),_0xbb12d9);queues[_0xbb12d9[_0x9e66('0x11')]][_0x9e66('0x1b')]=![];queues[_0xbb12d9['uniqueid']]['queuecallerexitAt']=null;queues[_0xbb12d9[_0x9e66('0x11')]][_0x9e66('0x1a')]=!![];queues[_0xbb12d9[_0x9e66('0x11')]][_0x9e66('0x28')]=utils[_0x9e66('0x1e')]();queues[_0xbb12d9[_0x9e66('0x11')]][_0x9e66('0x7')]=_0x9e66('0x2f');utils[_0x9e66('0x2')](util['format'](_0x9e66('0x30'),_0xbb12d9[_0x9e66('0x11')],queues[_0xbb12d9[_0x9e66('0x11')]]['name'],queues[_0xbb12d9[_0x9e66('0x11')]]['queuecallerexitreason']));}}catch(_0x1f051c){utils[_0x9e66('0x23')](util[_0x9e66('0x3')](_0x9e66('0x2e'),_0xbb12d9[_0x9e66('0x11')]),_0x1f051c);}};exports[_0x9e66('0x31')]=function(_0x3df685){try{if(!_['isNil'](queues[_0x3df685['uniqueid']])){utils[_0x9e66('0x10')](util[_0x9e66('0x3')](_0x9e66('0x32'),_0x3df685['uniqueid']),_0x3df685);utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x33'),_0x3df685['uniqueid'],queues[_0x3df685[_0x9e66('0x11')]][_0x9e66('0x21')],_0x3df685[_0x9e66('0x34')],_0x3df685['connectedlinename']));queues[_0x3df685['uniqueid']][_0x9e66('0x31')]=!![];queues[_0x3df685['uniqueid']]['queuecallerleaveAt']=utils[_0x9e66('0x1e')]();queues[_0x3df685[_0x9e66('0x11')]]['holdtime']=utils['diffTime'](queues[_0x3df685[_0x9e66('0x11')]][_0x9e66('0x19')],queues[_0x3df685[_0x9e66('0x11')]]['queuecallerjoinAt']);queues[_0x3df685[_0x9e66('0x11')]]['position']=_0x3df685[_0x9e66('0x13')];queues[_0x3df685[_0x9e66('0x11')]]['count']=_0x3df685[_0x9e66('0x35')];queues[_0x3df685['uniqueid']][_0x9e66('0x34')]=_0x3df685[_0x9e66('0x34')];queues[_0x3df685[_0x9e66('0x11')]][_0x9e66('0x36')]=_0x3df685[_0x9e66('0x36')];}}catch(_0x586fa5){utils[_0x9e66('0x23')](util[_0x9e66('0x3')]('[%s][queues][queuecallerleave]',_0x3df685[_0x9e66('0x11')]),_0x586fa5);}};exports['agentconnect']=function(_0x43cacf){try{if(!_[_0x9e66('0x17')](queues[_0x43cacf[_0x9e66('0x11')]])){utils[_0x9e66('0x10')](util[_0x9e66('0x3')](_0x9e66('0x37'),_0x43cacf[_0x9e66('0x11')]),_0x43cacf);utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x38'),_0x43cacf['uniqueid'],queues[_0x43cacf[_0x9e66('0x11')]][_0x9e66('0x21')],_0x43cacf['membername'],_0x43cacf[_0x9e66('0x39')]));queues[_0x43cacf[_0x9e66('0x11')]][_0x9e66('0x1a')]=![];queues[_0x43cacf[_0x9e66('0x11')]]['queuecallerabandon']=![];queues[_0x43cacf['uniqueid']][_0x9e66('0x28')]=null;queues[_0x43cacf[_0x9e66('0x11')]][_0x9e66('0x1b')]=![];queues[_0x43cacf[_0x9e66('0x11')]]['queuecallerexitreason']=null;queues[_0x43cacf[_0x9e66('0x11')]][_0x9e66('0x29')]=null;queues[_0x43cacf['uniqueid']][_0x9e66('0x3a')]=!![];queues[_0x43cacf[_0x9e66('0x11')]][_0x9e66('0x3b')]=_0x43cacf['destaccountcode'];queues[_0x43cacf['uniqueid']]['lastAssignedTo']=_0x43cacf['membername'];}}catch(_0x45cdda){utils['error'](util['format'](_0x9e66('0x37'),_0x43cacf[_0x9e66('0x11')]),_0x45cdda);}};exports['agentcomplete']=function(_0x5110ef){try{if(!_[_0x9e66('0x17')](queues[_0x5110ef[_0x9e66('0x11')]])){if(queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x19')]){utils[_0x9e66('0x10')](util['format'](_0x9e66('0x3c'),_0x5110ef['uniqueid']),_0x5110ef);queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x1a')]=![];queues[_0x5110ef['uniqueid']]['queuecallerabandon']=![];queues[_0x5110ef[_0x9e66('0x11')]]['queuecallerabandonAt']=null;queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x1b')]=![];queues[_0x5110ef['uniqueid']][_0x9e66('0x29')]=null;queues[_0x5110ef[_0x9e66('0x11')]]['assigned']=!![];queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x5')]=_0x5110ef[_0x9e66('0x3d')];queues[_0x5110ef['uniqueid']]['queuecallercomplete']=!![];queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x1d')]=utils[_0x9e66('0x1e')]();if(_0x5110ef[_0x9e66('0x3e')]==_0x9e66('0x3f')){if(!queues[_0x5110ef['uniqueid']][_0x9e66('0x3f')]){queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x7')]=_0x9e66('0x40');}}else{queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x7')]='COMPLETEDBY'+_0x5110ef[_0x9e66('0x3e')][_0x9e66('0x2a')]();}utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x41'),_0x5110ef[_0x9e66('0x11')],queues[_0x5110ef['uniqueid']][_0x9e66('0x21')],_0x5110ef['membername'],queues[_0x5110ef[_0x9e66('0x11')]][_0x9e66('0x7')]));writeDB(queues[_0x5110ef[_0x9e66('0x11')]]);}}}catch(_0x5ebf56){utils[_0x9e66('0x23')](util[_0x9e66('0x3')](_0x9e66('0x3c'),_0x5110ef[_0x9e66('0x11')]),_0x5ebf56);}};exports['blindtransfer']=function(_0x5a1e10){try{if(!_[_0x9e66('0x17')](queues[_0x5a1e10[_0x9e66('0x42')]])){utils[_0x9e66('0x10')](util[_0x9e66('0x3')](_0x9e66('0x43'),_0x5a1e10[_0x9e66('0x11')]),_0x5a1e10);queues[_0x5a1e10['transfereeuniqueid']]['transfer']=!![];queues[_0x5a1e10[_0x9e66('0x42')]][_0x9e66('0x44')]=_0x9e66('0x45');queues[_0x5a1e10[_0x9e66('0x42')]]['transferexten']=_0x5a1e10[_0x9e66('0x46')];queues[_0x5a1e10['transfereeuniqueid']][_0x9e66('0x47')]=_0x5a1e10[_0x9e66('0x42')];queues[_0x5a1e10[_0x9e66('0x42')]][_0x9e66('0x7')]=_0x9e66('0x48');utils['info'](util[_0x9e66('0x3')](_0x9e66('0x49'),_0x5a1e10['uniqueid'],queues[_0x5a1e10['transfereeuniqueid']][_0x9e66('0x21')],_0x5a1e10[_0x9e66('0x42')],_0x5a1e10[_0x9e66('0x46')]));}}catch(_0x30fca6){utils[_0x9e66('0x23')](util[_0x9e66('0x3')](_0x9e66('0x43'),_0x5a1e10[_0x9e66('0x11')]),_0x30fca6);}};exports[_0x9e66('0x4a')]=function(_0x59e4bb){try{utils[_0x9e66('0x10')](util['format'](_0x9e66('0x4b'),_0x59e4bb[_0x9e66('0x4c')]),_0x59e4bb);if(_0x59e4bb['origtransfereruniqueid']==_0x59e4bb[_0x9e66('0x4d')]){if(!_[_0x9e66('0x17')](queues[_0x59e4bb[_0x9e66('0x4e')]])){utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x4f'),_0x59e4bb['origtransfereruniqueid'],queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x21')],_0x59e4bb[_0x9e66('0x50')]));queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x3f')]=!![];queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x44')]=_0x9e66('0x51');queues[_0x59e4bb[_0x9e66('0x4e')]]['transferexten']=_0x59e4bb['origtransfererexten'];queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x47')]=_0x59e4bb['origtransfereruniqueid'];queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x7')]=_0x9e66('0x52');}if(!_[_0x9e66('0x17')](queues[_0x59e4bb['origtransfererlinkedid']])){if(_0x59e4bb['transfereelinkedid']&&queues[_0x59e4bb['transfereelinkedid']]){queues[_0x59e4bb[_0x9e66('0x53')]]['queuecallerenterreason']=0x1;queues[_0x59e4bb[_0x9e66('0x42')]]=_['clone'](queues[_0x59e4bb[_0x9e66('0x53')]]);queues[_0x59e4bb[_0x9e66('0x42')]]['transfereduniqueid']=_0x59e4bb['transfertargetuniqueid'];queues[_0x59e4bb[_0x9e66('0x42')]][_0x9e66('0x54')]=0x2;queues[_0x59e4bb['transfereeuniqueid']]['calleridnum']=queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x6')];queues[_0x59e4bb[_0x9e66('0x42')]]['calleridname']=queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x55')];queues[_0x59e4bb['transfereeuniqueid']][_0x9e66('0x56')]=utils[_0x9e66('0x1e')]();queues[_0x59e4bb[_0x9e66('0x42')]][_0x9e66('0x19')]=utils[_0x9e66('0x1e')]();queues[_0x59e4bb[_0x9e66('0x42')]][_0x9e66('0x57')]=0x0;queues[_0x59e4bb[_0x9e66('0x42')]]['mohtime']=0x0;utils[_0x9e66('0x2')](util[_0x9e66('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x59e4bb['origtransfereruniqueid'],queues[_0x59e4bb[_0x9e66('0x42')]][_0x9e66('0x21')],queues[_0x59e4bb[_0x9e66('0x42')]][_0x9e66('0x6')],queues[_0x59e4bb[_0x9e66('0x42')]][_0x9e66('0x55')]));}else{utils[_0x9e66('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x59e4bb['origtransfereruniqueid'],queues[_0x59e4bb['origtransfererlinkedid']][_0x9e66('0x21')],_0x59e4bb[_0x9e66('0x4e')]));queues[_0x59e4bb[_0x9e66('0x4d')]][_0x9e66('0xe')]=_0x59e4bb['secondtransfererlinkedid'];}}}else if(_0x59e4bb[_0x9e66('0x58')]==_0x59e4bb[_0x9e66('0x4e')]){if(!_[_0x9e66('0x17')](queues[_0x59e4bb[_0x9e66('0x4d')]])){utils['info'](util[_0x9e66('0x3')](_0x9e66('0x59'),_0x59e4bb[_0x9e66('0x4c')],queues[_0x59e4bb[_0x9e66('0x4d')]][_0x9e66('0x21')],_0x59e4bb[_0x9e66('0x58')],_0x59e4bb[_0x9e66('0x5a')]));queues[_0x59e4bb[_0x9e66('0x4d')]][_0x9e66('0x3f')]=!![];queues[_0x59e4bb[_0x9e66('0x4d')]][_0x9e66('0x44')]='ATTENDED';queues[_0x59e4bb[_0x9e66('0x4d')]]['transferexten']=_0x59e4bb[_0x9e66('0x5a')];queues[_0x59e4bb['origtransfererlinkedid']]['transferuniqueid']=_0x59e4bb[_0x9e66('0x58')];queues[_0x59e4bb[_0x9e66('0x4d')]][_0x9e66('0x7')]=_0x9e66('0x52');}if(!_[_0x9e66('0x17')](queues[_0x59e4bb['secondtransfererlinkedid']])){if(_0x59e4bb['transfertargetlinkedid']&&queues[_0x59e4bb[_0x9e66('0x5b')]]){queues[_0x59e4bb[_0x9e66('0x5b')]][_0x9e66('0x54')]=0x1;queues[_0x59e4bb['transfertargetuniqueid']]=_[_0x9e66('0x5c')](queues[_0x59e4bb['transfertargetlinkedid']]);queues[_0x59e4bb[_0x9e66('0x5d')]]['transfereduniqueid']=_0x59e4bb[_0x9e66('0x5d')];queues[_0x59e4bb['transfertargetuniqueid']][_0x9e66('0x54')]=0x2;queues[_0x59e4bb[_0x9e66('0x5d')]][_0x9e66('0x6')]=queues[_0x59e4bb[_0x9e66('0x4d')]][_0x9e66('0x6')];queues[_0x59e4bb[_0x9e66('0x5d')]]['calleridname']=queues[_0x59e4bb[_0x9e66('0x4d')]][_0x9e66('0x55')];queues[_0x59e4bb[_0x9e66('0x5d')]][_0x9e66('0x56')]=utils[_0x9e66('0x1e')]();queues[_0x59e4bb[_0x9e66('0x5d')]]['queuecallerleaveAt']=utils[_0x9e66('0x1e')]();queues[_0x59e4bb[_0x9e66('0x5d')]]['holdtime']=0x0;queues[_0x59e4bb[_0x9e66('0x5d')]][_0x9e66('0x5e')]=0x0;utils[_0x9e66('0x2')](util['format'](_0x9e66('0x5f'),_0x59e4bb[_0x9e66('0x4c')],queues[_0x59e4bb[_0x9e66('0x5d')]][_0x9e66('0x21')],queues[_0x59e4bb[_0x9e66('0x5d')]][_0x9e66('0xe')],queues[_0x59e4bb[_0x9e66('0x5d')]][_0x9e66('0x6')],queues[_0x59e4bb[_0x9e66('0x5d')]]['calleridname']));}else{utils[_0x9e66('0x2')](util[_0x9e66('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x59e4bb['origtransfereruniqueid'],queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0x21')],_0x59e4bb[_0x9e66('0x4d')]));queues[_0x59e4bb[_0x9e66('0x4e')]][_0x9e66('0xe')]=_0x59e4bb[_0x9e66('0x4d')];}}}}catch(_0x5a9123){utils[_0x9e66('0x23')](util[_0x9e66('0x3')](_0x9e66('0x4b'),_0x59e4bb[_0x9e66('0x4c')]),_0x5a9123);}};exports[_0x9e66('0x60')]=function(_0x212577){try{if(!_['isNil'](queues[_0x212577[_0x9e66('0x11')]])){utils['debug'](util[_0x9e66('0x3')](_0x9e66('0x61'),_0x212577[_0x9e66('0x11')]),_0x212577);queues[_0x212577[_0x9e66('0x11')]][_0x9e66('0x62')]=utils[_0x9e66('0x1e')]();utils['info'](util[_0x9e66('0x3')](_0x9e66('0x63'),_0x212577[_0x9e66('0x11')],queues[_0x212577[_0x9e66('0x11')]][_0x9e66('0x21')],queues[_0x212577['uniqueid']]['musiconholdstartAt']));}}catch(_0x37894b){utils['error'](util[_0x9e66('0x3')](_0x9e66('0x61'),_0x212577[_0x9e66('0x11')]),_0x37894b);}};exports[_0x9e66('0x64')]=function(_0x994829){try{if(!_[_0x9e66('0x17')](queues[_0x994829['uniqueid']])){if(!_[_0x9e66('0x17')](queues[_0x994829[_0x9e66('0x11')]]['musiconholdstartAt'])){utils['debug'](util[_0x9e66('0x3')](_0x9e66('0x65'),_0x994829[_0x9e66('0x11')]),_0x994829);queues[_0x994829[_0x9e66('0x11')]][_0x9e66('0x5e')]+=utils['diffTime'](utils['now'](),queues[_0x994829['uniqueid']]['musiconholdstartAt']);utils[_0x9e66('0x2')](util[_0x9e66('0x3')](_0x9e66('0x66'),_0x994829[_0x9e66('0x11')],queues[_0x994829[_0x9e66('0x11')]][_0x9e66('0x21')],queues[_0x994829[_0x9e66('0x11')]]['mohtime']));delete queues[_0x994829[_0x9e66('0x11')]][_0x9e66('0x62')];}}}catch(_0x23de9c){utils[_0x9e66('0x23')](util['format'](_0x9e66('0x65'),_0x994829['uniqueid']),_0x23de9c);}};
\ No newline at end of file
index ace92d5..307c71c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8441=['toLowerCase','set','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','blindtransfer','transferercalleridnum','transfereecalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','lodash','./transfers.controller','info','[%s][recordings][writeDB]','blinds','uniqueid','accountcode','getUserByInternal','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','format','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','find','monitors','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application'];(function(_0x14437d,_0x28a300){var _0x5a31d3=function(_0x17ba77){while(--_0x17ba77){_0x14437d['push'](_0x14437d['shift']());}};_0x5a31d3(++_0x28a300);}(_0x8441,0x96));var _0x1844=function(_0x3bb831,_0x2d7780){_0x3bb831=_0x3bb831-0x0;var _0x403b42=_0x8441[_0x3bb831];return _0x403b42;};'use strict';var _=require(_0x1844('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0x1844('0x1'));var recordings={};function writeDB(_0xfdc215){var _0xc843ed;utils[_0x1844('0x2')](util['format'](_0x1844('0x3'),_0xfdc215['uniqueid']));if(transfers[_0x1844('0x4')][_0xfdc215[_0x1844('0x5')]]){_0xc843ed=_0xfdc215[_0x1844('0x5')];_0xfdc215[_0x1844('0x5')]=transfers[_0x1844('0x4')][_0xfdc215['uniqueid']]['transfereeuniqueid'];}if(_0xfdc215[_0x1844('0x6')]){utils[_0x1844('0x7')](_0xfdc215[_0x1844('0x6')])['then'](function(_0x3a879e){if(_0x3a879e){_0xfdc215[_0x1844('0x8')]=_0x3a879e[_0x1844('0x9')];_0xfdc215[_0x1844('0xa')]=_0x3a879e['id'];}utils[_0x1844('0xb')](_0x1844('0xc'),_0xfdc215);});}else{utils['request']('CreateVoiceRecording',_0xfdc215);}if(_0xc843ed)delete transfers['blinds'][_0xc843ed];}exports[_0x1844('0xd')]=function(_0x57dc0a){try{utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x10'),_0x57dc0a[_0x1844('0x5')]),_0x57dc0a);if(_0x57dc0a['uniqueid']==_0x57dc0a[_0x1844('0x11')]){utils[_0x1844('0x2')](util['format'](_0x1844('0x12'),_0x57dc0a[_0x1844('0x5')],_0x57dc0a[_0x1844('0x13')],_0x57dc0a[_0x1844('0x14')]));recordings[_0x57dc0a[_0x1844('0x5')]]={'uniqueid':_0x57dc0a[_0x1844('0x5')],'accountcode':_0x57dc0a['accountcode'],'exten':_0x57dc0a[_0x1844('0x14')],'context':_0x57dc0a[_0x1844('0x13')],'channel':_0x57dc0a[_0x1844('0x15')],'monitors':[]};}}catch(_0x4f727d){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x10'),_0x57dc0a[_0x1844('0x5')]),_0x4f727d);}};exports['newstate']=function(_0x3086af){try{utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x17'),_0x3086af[_0x1844('0x5')]),_0x3086af);if(!_[_0x1844('0x18')](recordings[_0x3086af['uniqueid']])&&_0x3086af[_0x1844('0x19')]==0x6){utils[_0x1844('0x2')](util['format'](_0x1844('0x1a'),_0x3086af[_0x1844('0x5')],_0x3086af['context'],_0x3086af[_0x1844('0x15')]));}else if(!_['isNil'](recordings[_0x3086af['linkedid']])&&_0x3086af[_0x1844('0x19')]==0x6&&_0x3086af[_0x1844('0x13')]!=_0x1844('0x1b')){utils[_0x1844('0x2')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x3086af['uniqueid'],_0x3086af[_0x1844('0x11')],_0x3086af[_0x1844('0x13')],_0x3086af[_0x1844('0x15')]));recordings[_0x3086af['linkedid']]['accountcode']=_0x3086af['accountcode'];}}catch(_0x238a0c){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x17'),_0x3086af[_0x1844('0x5')]),_0x238a0c);}};exports['varset']=function(_0xab2205){try{if(!_[_0x1844('0x18')](_0xab2205[_0x1844('0x1c')])&&!_['isNil'](_0xab2205['variable']['mixmonitor_filename'])){utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x1d'),_0xab2205['uniqueid']),_0xab2205);utils[_0x1844('0x2')](util[_0x1844('0xf')](_0x1844('0x1e'),_0xab2205[_0x1844('0x5')],_0xab2205['variable'],_0xab2205[_0x1844('0x1f')]));if(_[_0x1844('0x20')](_0xab2205[_0x1844('0x1f')],_0x1844('0x21'))){_0xab2205[_0x1844('0x1f')]=_0xab2205[_0x1844('0x1f')][_0x1844('0x22')](_0x1844('0x21'),'.WAV');}if(recordings[_0xab2205[_0x1844('0x11')]]){var _0x1bae70=_[_0x1844('0x23')](recordings[_0xab2205[_0x1844('0x11')]][_0x1844('0x24')],{'value':_0xab2205[_0x1844('0x1f')]});if(_[_0x1844('0x18')](_0x1bae70)){recordings[_0xab2205['linkedid']][_0x1844('0x24')][_0x1844('0x25')]({'value':_0xab2205[_0x1844('0x1f')]});}}}}catch(_0x1e87df){utils[_0x1844('0x16')](util['format']('[%s][recordings][varset]',_0xab2205[_0x1844('0x5')]),_0x1e87df);}};exports[_0x1844('0x26')]=function(_0x3d2808){try{if(!_[_0x1844('0x18')](recordings[_0x3d2808['uniqueid']])){utils[_0x1844('0xe')](util[_0x1844('0xf')]('[%s][recordings][hangup]',_0x3d2808[_0x1844('0x5')]),_0x3d2808);utils['info'](util['format'](_0x1844('0x27'),_0x3d2808[_0x1844('0x5')],_0x3d2808[_0x1844('0x28')],_0x3d2808[_0x1844('0x29')],_0x3d2808['cause-txt']));recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x28')]=_0x3d2808[_0x1844('0x28')];recordings[_0x3d2808[_0x1844('0x5')]]['calleridname']=_0x3d2808[_0x1844('0x29')];recordings[_0x3d2808['uniqueid']][_0x1844('0x2a')]=_0x3d2808[_0x1844('0x2a')];recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2b')]=_0x3d2808[_0x1844('0x2b')];if(recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2c')]==_0x1844('0x2d')&&recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x6')]){recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2a')]=recordings[_0x3d2808['uniqueid']][_0x1844('0x6')];recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2b')]='';}recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x24')]['forEach'](function(_0x2cba29){var _0x20a046=_['clone'](recordings[_0x3d2808['uniqueid']]);_0x20a046[_0x1844('0x1f')]=_0x2cba29[_0x1844('0x1f')];writeDB(_0x20a046);});delete recordings[_0x3d2808[_0x1844('0x5')]];}}catch(_0xb5ea75){utils[_0x1844('0x16')](util['format']('[%s][recordings][hangup]',_0x3d2808[_0x1844('0x5')]),_0xb5ea75);}};exports[_0x1844('0x2e')]=function(_0x15fb8d){try{if(!_[_0x1844('0x18')](recordings[_0x15fb8d[_0x1844('0x5')]])){utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x2f'),_0x15fb8d[_0x1844('0x5')]),_0x15fb8d);utils['info'](util['format'](_0x1844('0x30'),_0x15fb8d['uniqueid'],_0x15fb8d['application'],_0x15fb8d[_0x1844('0x31')]));if(_0x15fb8d[_0x1844('0x32')][_0x1844('0x33')]()==_0x1844('0x34')&&_['startsWith'](_0x15fb8d['appdata'][_0x1844('0x33')](),_0x1844('0x35'))){var _0x1c504f=_0x15fb8d[_0x1844('0x31')][_0x1844('0x36')]('=');var _0x569244=_0x1c504f[0x0][_0x1844('0x37')](_0x1c504f[0x0][_0x1844('0x38')]('(')+0x1,_0x1c504f[0x0][_0x1844('0x38')](')'));var _0x25a020=_0x1c504f[0x1];recordings[_0x15fb8d[_0x1844('0x5')]][_0x569244]=_0x25a020;}}}catch(_0x546fe0){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x2f'),_0x15fb8d['uniqueid']),_0x546fe0);}};exports[_0x1844('0x39')]=function(_0x4c2bd0){try{if(!_[_0x1844('0x18')](recordings[_0x4c2bd0['uniqueid']])){utils[_0x1844('0xe')](util['format']('[%s][recordings][queuecallerjoin]',_0x4c2bd0['uniqueid']),_0x4c2bd0);utils[_0x1844('0x2')](util['format'](_0x1844('0x3a'),_0x4c2bd0[_0x1844('0x5')],_0x4c2bd0[_0x1844('0x3b')]));recordings[_0x4c2bd0[_0x1844('0x5')]][_0x1844('0x3b')]=_0x4c2bd0['queue'];}}catch(_0x4ee84e){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x3c'),_0x4c2bd0[_0x1844('0x5')]),_0x4ee84e);}};exports[_0x1844('0x3d')]=function(_0x14d20b){try{utils[_0x1844('0xe')](util[_0x1844('0xf')]('[%s][recordings][blindtransfer]',_0x14d20b[_0x1844('0x5')]),_0x14d20b);utils[_0x1844('0x2')](util['format']('[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x14d20b[_0x1844('0x5')],_0x14d20b[_0x1844('0x3e')],_0x14d20b['transferercalleridname'],_0x14d20b['transfereecalleridnum'],_0x14d20b[_0x1844('0x3f')]));if(recordings[_0x14d20b[_0x1844('0x40')]]&&transfers[_0x1844('0x4')][_0x14d20b[_0x1844('0x40')]]){transfers[_0x1844('0x4')][_0x14d20b['transfereruniqueid']][_0x1844('0x41')]=!![];}}catch(_0x3d3586){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x42'),_0x14d20b[_0x1844('0x5')]),_0x3d3586);}};
\ No newline at end of file
+var _0x479e=['type','clone','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','set','startsWith','appdata','toLowerCase','cdr','split','substring','lastIndexOf','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','transfereruniqueid','recording','lodash','./transfers.controller','info','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','membername','UserId','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','format','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','hangup','debug','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename'];(function(_0x147bb9,_0x4c0ff4){var _0x24043b=function(_0x91aa7d){while(--_0x91aa7d){_0x147bb9['push'](_0x147bb9['shift']());}};_0x24043b(++_0x4c0ff4);}(_0x479e,0x12f));var _0xe479=function(_0x1b40a4,_0x1ddcf7){_0x1b40a4=_0x1b40a4-0x0;var _0x8c4a88=_0x479e[_0x1b40a4];return _0x8c4a88;};'use strict';var _=require(_0xe479('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0xe479('0x1'));var recordings={};function writeDB(_0x2388d2){var _0x182165;utils[_0xe479('0x2')](util['format'](_0xe479('0x3'),_0x2388d2[_0xe479('0x4')]));if(transfers[_0xe479('0x5')][_0x2388d2['uniqueid']]){_0x182165=_0x2388d2[_0xe479('0x4')];_0x2388d2[_0xe479('0x4')]=transfers[_0xe479('0x5')][_0x2388d2['uniqueid']][_0xe479('0x6')];}if(_0x2388d2[_0xe479('0x7')]){utils[_0xe479('0x8')](_0x2388d2['accountcode'])['then'](function(_0x4c9db3){if(_0x4c9db3){_0x2388d2[_0xe479('0x9')]=_0x4c9db3['name'];_0x2388d2[_0xe479('0xa')]=_0x4c9db3['id'];}utils['request']('CreateVoiceRecording',_0x2388d2);});}else{utils[_0xe479('0xb')](_0xe479('0xc'),_0x2388d2);}if(_0x182165)delete transfers[_0xe479('0x5')][_0x182165];}exports[_0xe479('0xd')]=function(_0x468ac4){try{utils['debug'](util['format'](_0xe479('0xe'),_0x468ac4[_0xe479('0x4')]),_0x468ac4);if(_0x468ac4[_0xe479('0x4')]==_0x468ac4[_0xe479('0xf')]){utils[_0xe479('0x2')](util['format'](_0xe479('0x10'),_0x468ac4[_0xe479('0x4')],_0x468ac4[_0xe479('0x11')],_0x468ac4['exten']));recordings[_0x468ac4['uniqueid']]={'uniqueid':_0x468ac4[_0xe479('0x4')],'accountcode':_0x468ac4[_0xe479('0x7')],'exten':_0x468ac4[_0xe479('0x12')],'context':_0x468ac4[_0xe479('0x11')],'channel':_0x468ac4[_0xe479('0x13')],'monitors':[]};}}catch(_0x284d45){utils[_0xe479('0x14')](util[_0xe479('0x15')](_0xe479('0xe'),_0x468ac4[_0xe479('0x4')]),_0x284d45);}};exports['newstate']=function(_0x3a996d){try{utils['debug'](util[_0xe479('0x15')](_0xe479('0x16'),_0x3a996d['uniqueid']),_0x3a996d);if(!_[_0xe479('0x17')](recordings[_0x3a996d['uniqueid']])&&_0x3a996d['channelstate']==0x6){utils[_0xe479('0x2')](util[_0xe479('0x15')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x3a996d[_0xe479('0x4')],_0x3a996d[_0xe479('0x11')],_0x3a996d[_0xe479('0x13')]));}else if(!_[_0xe479('0x17')](recordings[_0x3a996d[_0xe479('0xf')]])&&_0x3a996d[_0xe479('0x18')]==0x6&&_0x3a996d['context']!='transfer'){utils[_0xe479('0x2')](util[_0xe479('0x15')](_0xe479('0x19'),_0x3a996d[_0xe479('0x4')],_0x3a996d['linkedid'],_0x3a996d[_0xe479('0x11')],_0x3a996d[_0xe479('0x13')]));recordings[_0x3a996d[_0xe479('0xf')]][_0xe479('0x7')]=_0x3a996d[_0xe479('0x7')];}}catch(_0x95a0f5){utils[_0xe479('0x14')](util[_0xe479('0x15')](_0xe479('0x16'),_0x3a996d[_0xe479('0x4')]),_0x95a0f5);}};exports[_0xe479('0x1a')]=function(_0x5d8457){try{if(!_[_0xe479('0x17')](_0x5d8457[_0xe479('0x1b')])&&!_[_0xe479('0x17')](_0x5d8457['variable'][_0xe479('0x1c')])){utils['debug'](util[_0xe479('0x15')](_0xe479('0x1d'),_0x5d8457[_0xe479('0x4')]),_0x5d8457);utils['info'](util[_0xe479('0x15')](_0xe479('0x1e'),_0x5d8457[_0xe479('0x4')],_0x5d8457[_0xe479('0x1b')],_0x5d8457[_0xe479('0x1f')]));if(_[_0xe479('0x20')](_0x5d8457[_0xe479('0x1f')],_0xe479('0x21'))){_0x5d8457[_0xe479('0x1f')]=_0x5d8457[_0xe479('0x1f')][_0xe479('0x22')](_0xe479('0x21'),_0xe479('0x23'));}if(recordings[_0x5d8457[_0xe479('0xf')]]){var _0x2231aa=_[_0xe479('0x24')](recordings[_0x5d8457[_0xe479('0xf')]][_0xe479('0x25')],{'value':_0x5d8457[_0xe479('0x1f')]});if(_[_0xe479('0x17')](_0x2231aa)){recordings[_0x5d8457[_0xe479('0xf')]][_0xe479('0x25')][_0xe479('0x26')]({'value':_0x5d8457[_0xe479('0x1f')]});}}}}catch(_0x39515d){utils[_0xe479('0x14')](util[_0xe479('0x15')](_0xe479('0x1d'),_0x5d8457[_0xe479('0x4')]),_0x39515d);}};exports[_0xe479('0x27')]=function(_0x1b66d5){try{if(!_[_0xe479('0x17')](recordings[_0x1b66d5['uniqueid']])){utils[_0xe479('0x28')](util[_0xe479('0x15')]('[%s][recordings][hangup]',_0x1b66d5[_0xe479('0x4')]),_0x1b66d5);utils['info'](util[_0xe479('0x15')](_0xe479('0x29'),_0x1b66d5[_0xe479('0x4')],_0x1b66d5[_0xe479('0x2a')],_0x1b66d5[_0xe479('0x2b')],_0x1b66d5[_0xe479('0x2c')]));recordings[_0x1b66d5[_0xe479('0x4')]][_0xe479('0x2a')]=_0x1b66d5['calleridnum'];recordings[_0x1b66d5[_0xe479('0x4')]]['calleridname']=_0x1b66d5[_0xe479('0x2b')];recordings[_0x1b66d5[_0xe479('0x4')]]['connectedlinenum']=_0x1b66d5[_0xe479('0x2d')];recordings[_0x1b66d5[_0xe479('0x4')]][_0xe479('0x2e')]=_0x1b66d5[_0xe479('0x2e')];if(recordings[_0x1b66d5[_0xe479('0x4')]][_0xe479('0x2f')]=='outbound'&&recordings[_0x1b66d5[_0xe479('0x4')]][_0xe479('0x7')]){recordings[_0x1b66d5['uniqueid']]['connectedlinenum']=recordings[_0x1b66d5[_0xe479('0x4')]][_0xe479('0x7')];recordings[_0x1b66d5[_0xe479('0x4')]][_0xe479('0x2e')]='';}recordings[_0x1b66d5[_0xe479('0x4')]][_0xe479('0x25')]['forEach'](function(_0x372cdf){var _0x10c145=_[_0xe479('0x30')](recordings[_0x1b66d5[_0xe479('0x4')]]);_0x10c145[_0xe479('0x1f')]=_0x372cdf[_0xe479('0x1f')];writeDB(_0x10c145);});delete recordings[_0x1b66d5[_0xe479('0x4')]];}}catch(_0x43905c){utils['error'](util[_0xe479('0x15')]('[%s][recordings][hangup]',_0x1b66d5[_0xe479('0x4')]),_0x43905c);}};exports['newexten']=function(_0x1190a9){try{if(!_[_0xe479('0x17')](recordings[_0x1190a9[_0xe479('0x4')]])){utils[_0xe479('0x28')](util[_0xe479('0x15')](_0xe479('0x31'),_0x1190a9['uniqueid']),_0x1190a9);utils['info'](util[_0xe479('0x15')](_0xe479('0x32'),_0x1190a9[_0xe479('0x4')],_0x1190a9[_0xe479('0x33')],_0x1190a9['appdata']));if(_0x1190a9['application']['toLowerCase']()==_0xe479('0x34')&&_[_0xe479('0x35')](_0x1190a9[_0xe479('0x36')][_0xe479('0x37')](),_0xe479('0x38'))){var _0x55c581=_0x1190a9['appdata'][_0xe479('0x39')]('=');var _0x23f4f0=_0x55c581[0x0][_0xe479('0x3a')](_0x55c581[0x0][_0xe479('0x3b')]('(')+0x1,_0x55c581[0x0][_0xe479('0x3b')](')'));var _0xb6287c=_0x55c581[0x1];recordings[_0x1190a9['uniqueid']][_0x23f4f0]=_0xb6287c;}}}catch(_0x560e08){utils['error'](util['format']('[%s][recordings][newexten]',_0x1190a9[_0xe479('0x4')]),_0x560e08);}};exports[_0xe479('0x3c')]=function(_0x3a2ae1){try{if(!_[_0xe479('0x17')](recordings[_0x3a2ae1['uniqueid']])){utils['debug'](util[_0xe479('0x15')]('[%s][recordings][queuecallerjoin]',_0x3a2ae1[_0xe479('0x4')]),_0x3a2ae1);utils['info'](util['format'](_0xe479('0x3d'),_0x3a2ae1[_0xe479('0x4')],_0x3a2ae1[_0xe479('0x3e')]));recordings[_0x3a2ae1[_0xe479('0x4')]]['queue']=_0x3a2ae1[_0xe479('0x3e')];}}catch(_0x11f250){utils[_0xe479('0x14')](util[_0xe479('0x15')](_0xe479('0x3f'),_0x3a2ae1[_0xe479('0x4')]),_0x11f250);}};exports[_0xe479('0x40')]=function(_0x346ff5){try{utils[_0xe479('0x28')](util[_0xe479('0x15')](_0xe479('0x41'),_0x346ff5[_0xe479('0x4')]),_0x346ff5);utils[_0xe479('0x2')](util['format'](_0xe479('0x42'),_0x346ff5[_0xe479('0x4')],_0x346ff5[_0xe479('0x43')],_0x346ff5['transferercalleridname'],_0x346ff5['transfereecalleridnum'],_0x346ff5['transfereecalleridname']));if(recordings[_0x346ff5[_0xe479('0x44')]]&&transfers[_0xe479('0x5')][_0x346ff5[_0xe479('0x44')]]){transfers['blinds'][_0x346ff5[_0xe479('0x44')]][_0xe479('0x45')]=!![];}}catch(_0x3ab364){utils[_0xe479('0x14')](util[_0xe479('0x15')](_0xe479('0x41'),_0x346ff5[_0xe479('0x4')]),_0x3ab364);}};
\ No newline at end of file
index 3874b39..bd52c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8872=['origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','uniqueid','request','CreateVoiceTransferReport','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','blind','blinds','error','[%s][transfers][blindtransfer]','[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransfereraccountcode','secondtransferercontext','secondtransfererexten'];(function(_0x352dc1,_0x18af1e){var _0x581c3f=function(_0x5d0804){while(--_0x5d0804){_0x352dc1['push'](_0x352dc1['shift']());}};_0x581c3f(++_0x18af1e);}(_0x8872,0x17c));var _0x2887=function(_0xcc45c,_0x61821f){_0xcc45c=_0xcc45c-0x0;var _0x29ec5f=_0x8872[_0xcc45c];return _0x29ec5f;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x2887('0x0'));function writeDB(_0x33db92){utils[_0x2887('0x1')](util[_0x2887('0x2')](_0x2887('0x3'),_0x33db92[_0x2887('0x4')]==='attended'?_0x33db92['origtransfereruniqueid']:_0x33db92[_0x2887('0x5')],_0x33db92[_0x2887('0x4')]));utils[_0x2887('0x6')](_0x2887('0x7'),_0x33db92);}exports['blinds']={};exports[_0x2887('0x8')]=function(_0x5b59ef){try{utils[_0x2887('0x9')](util[_0x2887('0x2')]('[%s][transfers][blindtransfer]',_0x5b59ef[_0x2887('0x5')]),_0x5b59ef);utils[_0x2887('0x1')](util[_0x2887('0x2')](_0x2887('0xa'),_0x5b59ef[_0x2887('0x5')],_0x5b59ef[_0x2887('0xb')],_0x5b59ef[_0x2887('0xc')],_0x5b59ef[_0x2887('0xd')],_0x5b59ef['transfereecalleridname']));_0x5b59ef[_0x2887('0x4')]=_0x2887('0xe');exports[_0x2887('0xf')][_0x5b59ef['transfereruniqueid']]=_0x5b59ef;writeDB(_0x5b59ef);}catch(_0x34fc8d){utils[_0x2887('0x10')](util[_0x2887('0x2')](_0x2887('0x11'),_0x5b59ef['uniqueid']),_0x34fc8d);}};exports['attendedtransfer']=function(_0x56af34){try{utils[_0x2887('0x9')](util[_0x2887('0x2')](_0x2887('0x12'),_0x56af34[_0x2887('0x13')]),_0x56af34);utils[_0x2887('0x1')](util[_0x2887('0x2')](_0x2887('0x14'),_0x56af34[_0x2887('0x13')],_0x56af34[_0x2887('0x15')],_0x56af34[_0x2887('0x16')],_0x56af34[_0x2887('0x17')],_0x56af34[_0x2887('0x18')]));_0x56af34=_[_0x2887('0x19')](_0x56af34,{'transfererchannel':_0x56af34[_0x2887('0x1a')],'transferercalleridnum':_0x56af34[_0x2887('0x15')],'transferercalleridname':_0x56af34[_0x2887('0x16')],'transfererconnectedlinenum':_0x56af34['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x56af34['secondtransfererconnectedlinename'],'transfereraccountcode':_0x56af34[_0x2887('0x1b')],'transferercontext':_0x56af34[_0x2887('0x1c')],'transfererexten':_0x56af34[_0x2887('0x1d')],'transfererlinkedid':_0x56af34['origtransfererlinkedid'],'context':_0x56af34[_0x2887('0x1e')],'extension':_0x56af34[_0x2887('0x1f')],'type':'attended'});if(_[_0x2887('0x20')](_0x56af34[_0x2887('0x21')])){_0x56af34=_[_0x2887('0x19')](_0x56af34,{'transfereechannel':_0x56af34[_0x2887('0x22')],'transfereecalleridnum':_0x56af34[_0x2887('0x17')],'transfereecalleridname':_0x56af34['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x56af34[_0x2887('0x23')],'transfereeconnectedlinename':_0x56af34[_0x2887('0x24')],'transfereeaccountcode':_0x56af34[_0x2887('0x25')],'transfereecontext':_0x56af34[_0x2887('0x26')],'transfereeexten':_0x56af34[_0x2887('0x27')],'transfereelinkedid':_0x56af34[_0x2887('0x28')]});}writeDB(_0x56af34);}catch(_0x376f2a){utils[_0x2887('0x10')](util['format'](_0x2887('0x12'),_0x56af34[_0x2887('0x13')]),_0x376f2a);}};
\ No newline at end of file
+var _0x589e=['util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','CreateVoiceTransferReport','blinds','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','attendedtransfer','debug','[%s][transfers][attendedtransfer]','origtransfereruniqueid','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','error','lodash'];(function(_0xfa300f,_0x3203ee){var _0x442911=function(_0x277318){while(--_0x277318){_0xfa300f['push'](_0xfa300f['shift']());}};_0x442911(++_0x3203ee);}(_0x589e,0x133));var _0xe589=function(_0x1ea5a9,_0x6d489){_0x1ea5a9=_0x1ea5a9-0x0;var _0x494cda=_0x589e[_0x1ea5a9];return _0x494cda;};'use strict';var _=require(_0xe589('0x0'));var util=require(_0xe589('0x1'));var utils=require(_0xe589('0x2'));function writeDB(_0x221f91){utils[_0xe589('0x3')](util[_0xe589('0x4')](_0xe589('0x5'),_0x221f91[_0xe589('0x6')]===_0xe589('0x7')?_0x221f91['origtransfereruniqueid']:_0x221f91['uniqueid'],_0x221f91[_0xe589('0x6')]));utils['request'](_0xe589('0x8'),_0x221f91);}exports[_0xe589('0x9')]={};exports['blindtransfer']=function(_0x5de651){try{utils['debug'](util[_0xe589('0x4')](_0xe589('0xa'),_0x5de651[_0xe589('0xb')]),_0x5de651);utils['info'](util[_0xe589('0x4')](_0xe589('0xc'),_0x5de651[_0xe589('0xb')],_0x5de651[_0xe589('0xd')],_0x5de651[_0xe589('0xe')],_0x5de651[_0xe589('0xf')],_0x5de651[_0xe589('0x10')]));_0x5de651['type']=_0xe589('0x11');exports[_0xe589('0x9')][_0x5de651[_0xe589('0x12')]]=_0x5de651;writeDB(_0x5de651);}catch(_0x301d09){utils['error'](util[_0xe589('0x4')](_0xe589('0xa'),_0x5de651[_0xe589('0xb')]),_0x301d09);}};exports[_0xe589('0x13')]=function(_0x234ec8){try{utils[_0xe589('0x14')](util[_0xe589('0x4')](_0xe589('0x15'),_0x234ec8[_0xe589('0x16')]),_0x234ec8);utils[_0xe589('0x3')](util[_0xe589('0x4')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x234ec8[_0xe589('0x16')],_0x234ec8['origtransferercalleridnum'],_0x234ec8['origtransferercalleridname'],_0x234ec8[_0xe589('0x17')],_0x234ec8[_0xe589('0x18')]));_0x234ec8=_[_0xe589('0x19')](_0x234ec8,{'transfererchannel':_0x234ec8[_0xe589('0x1a')],'transferercalleridnum':_0x234ec8[_0xe589('0x1b')],'transferercalleridname':_0x234ec8[_0xe589('0x1c')],'transfererconnectedlinenum':_0x234ec8[_0xe589('0x1d')],'transfererconnectedlinename':_0x234ec8[_0xe589('0x1e')],'transfereraccountcode':_0x234ec8[_0xe589('0x1f')],'transferercontext':_0x234ec8['secondtransferercontext'],'transfererexten':_0x234ec8['secondtransfererexten'],'transfererlinkedid':_0x234ec8['origtransfererlinkedid'],'context':_0x234ec8[_0xe589('0x20')],'extension':_0x234ec8[_0xe589('0x21')],'type':_0xe589('0x7')});if(_[_0xe589('0x22')](_0x234ec8[_0xe589('0x23')])){_0x234ec8=_[_0xe589('0x19')](_0x234ec8,{'transfereechannel':_0x234ec8[_0xe589('0x24')],'transfereecalleridnum':_0x234ec8[_0xe589('0x17')],'transfereecalleridname':_0x234ec8['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x234ec8[_0xe589('0x25')],'transfereeconnectedlinename':_0x234ec8[_0xe589('0x26')],'transfereeaccountcode':_0x234ec8[_0xe589('0x27')],'transfereecontext':_0x234ec8[_0xe589('0x28')],'transfereeexten':_0x234ec8[_0xe589('0x29')],'transfereelinkedid':_0x234ec8[_0xe589('0x2a')]});}writeDB(_0x234ec8);}catch(_0xcfd2ab){utils[_0xe589('0x2b')](util[_0xe589('0x4')]('[%s][transfers][attendedtransfer]',_0x234ec8[_0xe589('0x16')]),_0xcfd2ab);}};
\ No newline at end of file
index 81f52de..c82f2de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6578=['seconds','diffTime','sumTime','isAfter','isBefore','jayson/promise','moment','util','client','http','../../config/logger','xdr','debug','error','inspect','request','then','[utils][request]\x20name:%s','catch','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','found','notfound','[utils][getUserByInternal]','getUserByInterface','info','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','acwTimeout','[utils][getVoiceQueueByName]','addTime','add','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime'];(function(_0xa6849c,_0x5797aa){var _0x31a68f=function(_0x3f771d){while(--_0x3f771d){_0xa6849c['push'](_0xa6849c['shift']());}};_0x31a68f(++_0x5797aa);}(_0x6578,0xdc));var _0x8657=function(_0x1f0f9e,_0x5bfd35){_0x1f0f9e=_0x1f0f9e-0x0;var _0x4335fb=_0x6578[_0x1f0f9e];return _0x4335fb;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x8657('0x0'));var moment=require(_0x8657('0x1'));var util=require(_0x8657('0x2'));var client=jayson[_0x8657('0x3')][_0x8657('0x4')]({'port':0x2329});var logger=require(_0x8657('0x5'))(_0x8657('0x6'));exports['info']=function(_0x48e76b,_0x105a7c){logger['info'](_0x48e76b,_0x105a7c?util['inspect'](_0x105a7c,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x557927,_0x4f6b7a){logger[_0x8657('0x7')](_0x557927,_0x4f6b7a?util['inspect'](_0x4f6b7a,{'showHidden':![],'depth':null}):'');};exports[_0x8657('0x8')]=function(_0x204597,_0xb3c9f2){logger[_0x8657('0x8')](_0x204597,_0xb3c9f2?util[_0x8657('0x9')](_0xb3c9f2,{'showHidden':![],'depth':null}):'');};exports[_0x8657('0xa')]=function(_0x32f1db,_0x308086){return client[_0x8657('0xa')](_0x32f1db,{'body':_0x308086})[_0x8657('0xb')](function(_0x70ef81){logger['debug'](_0x8657('0xc'),_0x32f1db,_0x70ef81?util['inspect'](_0x70ef81,{'showHidden':![],'depth':null}):'');})[_0x8657('0xd')](function(_0x32a9d5){logger[_0x8657('0x8')](_0x8657('0xc'),_0x32f1db,_0x32a9d5?util[_0x8657('0x9')](_0x32a9d5,{'showHidden':![],'depth':null}):'');});};function getUser(_0x22a427){return client[_0x8657('0xa')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x8657('0xe'),_0x8657('0xf'),_0x8657('0x10')],'where':_0x22a427,'limit':0x1}})[_0x8657('0xb')](function(_0x238386){logger[_0x8657('0x7')](_0x8657('0x11'),JSON[_0x8657('0x12')](_0x22a427),_0x238386?util['inspect'](_0x238386,{'showHidden':![],'depth':null}):'');return _0x238386[_0x8657('0x13')][_0x8657('0x14')]?_0x238386['result'][0x0]:null;});}exports['getUserByInternal']=function(_0x38ca69){return new BPromise(function(_0x40ea64,_0x389e1e){if(_0x38ca69){return getUser({'internal':_0x38ca69})[_0x8657('0xb')](function(_0x277951){logger['info']('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x38ca69,_0x277951?_0x8657('0x15'):_0x8657('0x16'));return _0x40ea64(_0x277951);})[_0x8657('0xd')](function(_0x277042){logger[_0x8657('0x8')](_0x8657('0x17'),_0x277042?util[_0x8657('0x9')](_0x277042,{'showHidden':![],'depth':null}):'');return _0x40ea64(null);});}return _0x40ea64(null);});};exports[_0x8657('0x18')]=function(_0x252e94){return new BPromise(function(_0x177357,_0x440233){if(_0x252e94){return getUser({'interface':_0x252e94})[_0x8657('0xb')](function(_0x10d934){logger[_0x8657('0x19')](_0x8657('0x1a'),_0x252e94,_0x10d934?'found':_0x8657('0x16'));return _0x177357(_0x10d934);})['catch'](function(_0x87b2c5){logger[_0x8657('0x8')]('[utils][getUserByInterface]',_0x87b2c5?util[_0x8657('0x9')](_0x87b2c5,{'showHidden':![],'depth':null}):'');return _0x177357(null);});}return _0x177357(null);});};exports['getUserByName']=function(_0x581ade){return new BPromise(function(_0xdf07e2,_0x222e52){if(_0x581ade){return getUser({'name':_0x581ade})['then'](function(_0x1e229b){logger[_0x8657('0x19')](_0x8657('0x1b'),_0x581ade,_0x1e229b?_0x8657('0x15'):_0x8657('0x16'));return _0xdf07e2(_0x1e229b);})[_0x8657('0xd')](function(_0x5ecf4c){logger[_0x8657('0x8')](_0x8657('0x1c'),_0x5ecf4c?util[_0x8657('0x9')](_0x5ecf4c,{'showHidden':![],'depth':null}):'');return _0xdf07e2(null);});}return _0xdf07e2(null);});};exports[_0x8657('0x1d')]=function(_0x8af289){return new BPromise(function(_0x2f66f8,_0x20cb01){if(_0x8af289){return client[_0x8657('0xa')](_0x8657('0x1e'),{'options':{'raw':!![],'attributes':['id',_0x8657('0xf'),'type','acw',_0x8657('0x1f')],'where':{'name':_0x8af289},'limit':0x1}})[_0x8657('0xb')](function(_0x450bdf){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0x8af289,_0x450bdf?util[_0x8657('0x9')](_0x450bdf,{'showHidden':![],'depth':null}):'');logger[_0x8657('0x19')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x8af289,_0x450bdf?_0x8657('0x15'):_0x8657('0x16'));return _0x2f66f8(_0x450bdf[_0x8657('0x13')][_0x8657('0x14')]?_0x450bdf[_0x8657('0x13')][0x0]:null);})['catch'](function(_0x13cb7d){logger[_0x8657('0x8')](_0x8657('0x20'),_0x13cb7d?util[_0x8657('0x9')](_0x13cb7d,{'showHidden':![],'depth':null}):'');return _0x2f66f8(null);});}return _0x2f66f8(null);});};exports[_0x8657('0x21')]=function(_0x49bba2,_0x41eff7){return moment(_0x49bba2)[_0x8657('0x22')](_0x41eff7,'seconds')[_0x8657('0x23')](_0x8657('0x24'));};exports[_0x8657('0x25')]=function(_0x5c163b,_0x4f6d12){return moment(_0x5c163b)['subtract'](_0x4f6d12,_0x8657('0x26'))[_0x8657('0x23')](_0x8657('0x24'));};exports[_0x8657('0x27')]=function(_0x1feda4,_0x53565d){return moment(_0x1feda4)['diff'](moment(_0x53565d),'seconds');};exports[_0x8657('0x28')]=function(_0x2c9ce1,_0x15e63f){return parseInt(_0x2c9ce1,0xa)+parseInt(_0x15e63f,0xa);};exports['now']=function(){return moment()[_0x8657('0x23')](_0x8657('0x24'));};exports['isAfter']=function(_0x1d72bf,_0x2b951d){if(_0x2b951d){return moment(_0x1d72bf)[_0x8657('0x29')](_0x2b951d);}return!![];};exports[_0x8657('0x2a')]=function(_0x12a6e8,_0x10d6ac){if(_0x10d6ac){return moment(_0x12a6e8)[_0x8657('0x2a')](_0x10d6ac);}else if(_0x12a6e8){return!![];}return![];};
\ No newline at end of file
+var _0xea78=['info','[utils][getUserByInterface]\x20interface:%s\x20%s','found','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','name','type','acw','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtract','diffTime','diff','now','isAfter','isBefore','bluebird','jayson/promise','moment','http','../../config/logger','xdr','inspect','debug','error','then','[utils][request]\x20name:%s','request','GetUser','internal','interface','[utils][getUser]\x20where:%s','stringify','result','[utils][getUserByInternal]\x20internal:%s\x20%s','notfound','catch','getUserByInterface'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xea78,0x162));var _0x8ea7=function(_0x53c256,_0x382a24){_0x53c256=_0x53c256-0x0;var _0x25feb6=_0xea78[_0x53c256];return _0x25feb6;};'use strict';var BPromise=require(_0x8ea7('0x0'));var jayson=require(_0x8ea7('0x1'));var moment=require(_0x8ea7('0x2'));var util=require('util');var client=jayson['client'][_0x8ea7('0x3')]({'port':0x2329});var logger=require(_0x8ea7('0x4'))(_0x8ea7('0x5'));exports['info']=function(_0x18aabf,_0x2eaa9f){logger['info'](_0x18aabf,_0x2eaa9f?util[_0x8ea7('0x6')](_0x2eaa9f,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x19d0b2,_0x22f7bb){logger[_0x8ea7('0x7')](_0x19d0b2,_0x22f7bb?util[_0x8ea7('0x6')](_0x22f7bb,{'showHidden':![],'depth':null}):'');};exports[_0x8ea7('0x8')]=function(_0x401fba,_0x2e8c38){logger[_0x8ea7('0x8')](_0x401fba,_0x2e8c38?util[_0x8ea7('0x6')](_0x2e8c38,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x5a05b9,_0x346342){return client['request'](_0x5a05b9,{'body':_0x346342})[_0x8ea7('0x9')](function(_0x281373){logger[_0x8ea7('0x7')]('[utils][request]\x20name:%s',_0x5a05b9,_0x281373?util[_0x8ea7('0x6')](_0x281373,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x388cf1){logger[_0x8ea7('0x8')](_0x8ea7('0xa'),_0x5a05b9,_0x388cf1?util['inspect'](_0x388cf1,{'showHidden':![],'depth':null}):'');});};function getUser(_0x1be2fa){return client[_0x8ea7('0xb')](_0x8ea7('0xc'),{'options':{'raw':!![],'attributes':['id',_0x8ea7('0xd'),'name',_0x8ea7('0xe')],'where':_0x1be2fa,'limit':0x1}})[_0x8ea7('0x9')](function(_0x12061e){logger['debug'](_0x8ea7('0xf'),JSON[_0x8ea7('0x10')](_0x1be2fa),_0x12061e?util[_0x8ea7('0x6')](_0x12061e,{'showHidden':![],'depth':null}):'');return _0x12061e['result']['length']?_0x12061e[_0x8ea7('0x11')][0x0]:null;});}exports['getUserByInternal']=function(_0x554afa){return new BPromise(function(_0x1de6ae,_0x5c9b61){if(_0x554afa){return getUser({'internal':_0x554afa})[_0x8ea7('0x9')](function(_0x2598f7){logger['info'](_0x8ea7('0x12'),_0x554afa,_0x2598f7?'found':_0x8ea7('0x13'));return _0x1de6ae(_0x2598f7);})[_0x8ea7('0x14')](function(_0x46f4e0){logger[_0x8ea7('0x8')]('[utils][getUserByInternal]',_0x46f4e0?util[_0x8ea7('0x6')](_0x46f4e0,{'showHidden':![],'depth':null}):'');return _0x1de6ae(null);});}return _0x1de6ae(null);});};exports[_0x8ea7('0x15')]=function(_0x19309a){return new BPromise(function(_0x339a88,_0x13407d){if(_0x19309a){return getUser({'interface':_0x19309a})[_0x8ea7('0x9')](function(_0x4573fe){logger[_0x8ea7('0x16')](_0x8ea7('0x17'),_0x19309a,_0x4573fe?_0x8ea7('0x18'):_0x8ea7('0x13'));return _0x339a88(_0x4573fe);})[_0x8ea7('0x14')](function(_0xed2989){logger[_0x8ea7('0x8')](_0x8ea7('0x19'),_0xed2989?util[_0x8ea7('0x6')](_0xed2989,{'showHidden':![],'depth':null}):'');return _0x339a88(null);});}return _0x339a88(null);});};exports['getUserByName']=function(_0x29e0df){return new BPromise(function(_0xc46a70,_0x4cdfe8){if(_0x29e0df){return getUser({'name':_0x29e0df})[_0x8ea7('0x9')](function(_0x3c85a5){logger[_0x8ea7('0x16')](_0x8ea7('0x1a'),_0x29e0df,_0x3c85a5?_0x8ea7('0x18'):_0x8ea7('0x13'));return _0xc46a70(_0x3c85a5);})[_0x8ea7('0x14')](function(_0x3c7db3){logger['error'](_0x8ea7('0x1b'),_0x3c7db3?util[_0x8ea7('0x6')](_0x3c7db3,{'showHidden':![],'depth':null}):'');return _0xc46a70(null);});}return _0xc46a70(null);});};exports[_0x8ea7('0x1c')]=function(_0x1f583d){return new BPromise(function(_0x1fd2b3,_0x106a2d){if(_0x1f583d){return client[_0x8ea7('0xb')](_0x8ea7('0x1d'),{'options':{'raw':!![],'attributes':['id',_0x8ea7('0x1e'),_0x8ea7('0x1f'),_0x8ea7('0x20'),'acwTimeout'],'where':{'name':_0x1f583d},'limit':0x1}})[_0x8ea7('0x9')](function(_0x538b08){logger[_0x8ea7('0x7')](_0x8ea7('0x21'),_0x1f583d,_0x538b08?util['inspect'](_0x538b08,{'showHidden':![],'depth':null}):'');logger[_0x8ea7('0x16')](_0x8ea7('0x22'),_0x1f583d,_0x538b08?_0x8ea7('0x18'):'notfound');return _0x1fd2b3(_0x538b08[_0x8ea7('0x11')][_0x8ea7('0x23')]?_0x538b08[_0x8ea7('0x11')][0x0]:null);})[_0x8ea7('0x14')](function(_0x4c9ed3){logger[_0x8ea7('0x8')](_0x8ea7('0x24'),_0x4c9ed3?util[_0x8ea7('0x6')](_0x4c9ed3,{'showHidden':![],'depth':null}):'');return _0x1fd2b3(null);});}return _0x1fd2b3(null);});};exports['addTime']=function(_0x222134,_0x3f3278){return moment(_0x222134)[_0x8ea7('0x25')](_0x3f3278,_0x8ea7('0x26'))[_0x8ea7('0x27')](_0x8ea7('0x28'));};exports['subtractTime']=function(_0x4daa16,_0x39b716){return moment(_0x4daa16)[_0x8ea7('0x29')](_0x39b716,_0x8ea7('0x26'))['format'](_0x8ea7('0x28'));};exports[_0x8ea7('0x2a')]=function(_0x294d65,_0x539d9f){return moment(_0x294d65)[_0x8ea7('0x2b')](moment(_0x539d9f),'seconds');};exports['sumTime']=function(_0x23ad87,_0x134b9e){return parseInt(_0x23ad87,0xa)+parseInt(_0x134b9e,0xa);};exports[_0x8ea7('0x2c')]=function(){return moment()['format'](_0x8ea7('0x28'));};exports[_0x8ea7('0x2d')]=function(_0x48bc4c,_0x41a4ae){if(_0x41a4ae){return moment(_0x48bc4c)[_0x8ea7('0x2d')](_0x41a4ae);}return!![];};exports['isBefore']=function(_0x5723cc,_0x8216c4){if(_0x8216c4){return moment(_0x5723cc)[_0x8ea7('0x2e')](_0x8216c4);}else if(_0x5723cc){return!![];}return![];};
\ No newline at end of file
index b96aa29..58282e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x122f=['x-forwarded-for','remoteAddress','url','responseTime','name','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','statusCode','other','agent_id','agent_name','test','setupLoggers','fs-extra','lodash','express-winston','path','util','./loggers','safeTemplate','maskSensitiveData','join','/var','client','role','then','user','no-user','data','timestamp','catch','error','api','auth','set','use','logger','body','\x20body=%s','method','headers'];(function(_0xb23a26,_0x221553){var _0x4169de=function(_0x2a192d){while(--_0x2a192d){_0xb23a26['push'](_0xb23a26['shift']());}};_0x4169de(++_0x221553);}(_0x122f,0x144));var _0xf122=function(_0x386c00,_0x1ba086){_0x386c00=_0x386c00-0x0;var _0x373a15=_0x122f[_0x386c00];return _0x373a15;};var fs=require(_0xf122('0x0'));var _=require(_0xf122('0x1'));var ewinston=require(_0xf122('0x2'));var path=require(_0xf122('0x3'));var util=require(_0xf122('0x4'));var fileLogger=require(_0xf122('0x5'))['fileLogger'];var safeTemplate=require('./safe-template')[_0xf122('0x6')];var maskSensitiveData=require('./mask-sensitive-data')[_0xf122('0x7')];function ClientSideLogger(){function _0x4f08b8(_0x12e3ac){var _0x2b8e6e=path[_0xf122('0x8')](_0xf122('0x9'),'log','xcally');var _0x2c59ec=path[_0xf122('0x8')](_0xf122('0xa'),_0x12e3ac[_0xf122('0xb')]+'-'+_0x12e3ac['name']);return fs['ensureDir'](path[_0xf122('0x8')](_0x2b8e6e,_0x2c59ec))[_0xf122('0xc')](function(){var _0x4b0a69=fileLogger(_0xf122('0xa'),path[_0xf122('0x8')](_0x2b8e6e,_0x2c59ec));return _0x4b0a69;})['catch'](function(_0x518471){throw _0x518471;});}this['log']=function(_0x48f5ec,_0x2fe97b,_0xac9ca9,_0x1a5805){return _0x4f08b8(_0x48f5ec[_0xf122('0xd')])[_0xf122('0xc')](function(_0x2f78f8){var _0x1876e2=_0x2f78f8[_0x2fe97b];return _0x1876e2;})[_0xf122('0xc')](function(_0x3d1ada){var _0x35b3c4=_0x48f5ec[_0xf122('0xd')]?_0x48f5ec[_0xf122('0xd')]['id']:_0xf122('0xe');var _0x1410f3=_0x1a5805[_0xf122('0xf')];var _0x31d879=_0x1a5805[_0xf122('0x10')];var _0x4fb811=new Date(Number(_0x31d879));return _0x3d1ada(_0x35b3c4,_0x4fb811,_0xac9ca9,_0x1410f3);})[_0xf122('0x11')](function(_0x5c83b4){fileLogger(_0xf122('0xa'))[_0xf122('0x12')](_0x5c83b4);});};}function setupLoggers(_0x1250d6){return new Promise(function(_0x2160b0){var _0x3b1c3b=new ClientSideLogger();var _0x8b8e01=fileLogger(_0xf122('0x13'));var _0xa115f5=fileLogger(_0xf122('0x14'));_0x1250d6[_0xf122('0x15')]('client-side-logger',_0x3b1c3b);_0x1250d6[_0xf122('0x16')](ewinston[_0xf122('0x17')]({'winstonInstance':_0x8b8e01,'meta':![],'statusLevels':!![],'msg':function(_0x151dde,_0x474fd0){var _0x50be0a='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x151dde[_0xf122('0x18')])){_0x50be0a+=_0xf122('0x19');var _0x526da3=_0x151dde[_0xf122('0x18')];maskSensitiveData(_0x526da3);}return safeTemplate(util['format'](_0x50be0a,_0x151dde[_0xf122('0x1a')],_0x151dde[_0xf122('0x1b')]['x-forwarded-for']?_0x151dde[_0xf122('0x1b')][_0xf122('0x1c')]:_0x151dde['connection'][_0xf122('0x1d')]||_0x151dde['ip'],_0x151dde[_0xf122('0x1e')],_0x474fd0['statusCode'],_0x474fd0[_0xf122('0x1f')],_0x151dde[_0xf122('0xd')]?_0x151dde['user']['id']:null,_0x151dde['user']?_0x151dde[_0xf122('0xd')][_0xf122('0x20')]:null,_0x151dde['user']?_0x151dde[_0xf122('0xd')][_0xf122('0xb')]:null,_0x526da3?util[_0xf122('0x21')](_0x526da3,![],null):''));}}));_0x1250d6[_0xf122('0x16')](ewinston['logger']({'winstonInstance':_0xa115f5,'meta':![],'statusLevels':!![],'msg':function(_0x2e0913,_0x3b4215){var _0x5cdf64=_0xf122('0x22');if(_0x2e0913[_0xf122('0x18')]&&_0x2e0913[_0xf122('0x18')][_0xf122('0x23')]&&_0x2e0913['body']['agent_id']){_0x5cdf64=_0xf122('0x24');}return util[_0xf122('0x25')](_0x5cdf64,_0x2e0913[_0xf122('0x1a')],_0x2e0913[_0xf122('0x1b')][_0xf122('0x1c')]?_0x2e0913[_0xf122('0x1b')][_0xf122('0x1c')]:_0x2e0913['connection']['remoteAddress']||_0x2e0913['ip'],_0x2e0913['url'],_0x3b4215[_0xf122('0x26')],_0x3b4215['responseTime'],_0x2e0913[_0xf122('0xd')]?_0x2e0913[_0xf122('0xd')]['id']:null,_0x2e0913[_0xf122('0xd')]?_0x2e0913['user'][_0xf122('0x20')]:null,_0x2e0913['user']?_0x2e0913['user'][_0xf122('0xb')]:null,_0x2e0913[_0xf122('0x18')]&&_0x2e0913[_0xf122('0x18')][_0xf122('0x23')]?_0x2e0913[_0xf122('0x18')][_0xf122('0x23')]:_0xf122('0x27'),_0x2e0913[_0xf122('0x18')]&&_0x2e0913[_0xf122('0x18')][_0xf122('0x28')]?_0x2e0913[_0xf122('0x18')][_0xf122('0x28')]:'',_0x2e0913['body']&&_0x2e0913['body'][_0xf122('0x29')]?_0x2e0913['body'][_0xf122('0x29')]:'');},'ignoreRoute':function(_0x49e062){var _0x1d51d9=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1d51d9[_0xf122('0x2a')](_0x49e062[_0xf122('0x1e')]);}}));return _0x2160b0();});}exports[_0xf122('0x2b')]=setupLoggers;
\ No newline at end of file
+var _0x69c5=['x-forwarded-for','url','statusCode','user','name','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)','connection','remoteAddress','other','agent_name','setupLoggers','fs-extra','lodash','./loggers','fileLogger','./safe-template','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','ensureDir','then','no-user','timestamp','catch','use','logger','isEmpty','body','format','method','headers'];(function(_0x50f393,_0x2fd1f0){var _0x17d340=function(_0x3350ab){while(--_0x3350ab){_0x50f393['push'](_0x50f393['shift']());}};_0x17d340(++_0x2fd1f0);}(_0x69c5,0x1c8));var _0x569c=function(_0x864075,_0x2095fa){_0x864075=_0x864075-0x0;var _0x25900b=_0x69c5[_0x864075];return _0x25900b;};var fs=require(_0x569c('0x0'));var _=require(_0x569c('0x1'));var ewinston=require('express-winston');var path=require('path');var util=require('util');var fileLogger=require(_0x569c('0x2'))[_0x569c('0x3')];var safeTemplate=require(_0x569c('0x4'))['safeTemplate'];var maskSensitiveData=require(_0x569c('0x5'))[_0x569c('0x6')];function ClientSideLogger(){function _0x3ce2dc(_0x4a76e3){var _0x591b7b=path[_0x569c('0x7')](_0x569c('0x8'),_0x569c('0x9'),_0x569c('0xa'));var _0x4f6400=path['join'](_0x569c('0xb'),_0x4a76e3['role']+'-'+_0x4a76e3['name']);return fs[_0x569c('0xc')](path['join'](_0x591b7b,_0x4f6400))[_0x569c('0xd')](function(){var _0x4265f8=fileLogger('client',path[_0x569c('0x7')](_0x591b7b,_0x4f6400));return _0x4265f8;})['catch'](function(_0x2ba776){throw _0x2ba776;});}this['log']=function(_0x52aae9,_0x2e3429,_0x301db5,_0x2c1256){return _0x3ce2dc(_0x52aae9['user'])[_0x569c('0xd')](function(_0x181dfc){var _0x16b35e=_0x181dfc[_0x2e3429];return _0x16b35e;})[_0x569c('0xd')](function(_0x53730a){var _0x591676=_0x52aae9['user']?_0x52aae9['user']['id']:_0x569c('0xe');var _0x17de8a=_0x2c1256['data'];var _0x467cd7=_0x2c1256[_0x569c('0xf')];var _0x511d25=new Date(Number(_0x467cd7));return _0x53730a(_0x591676,_0x511d25,_0x301db5,_0x17de8a);})[_0x569c('0x10')](function(_0x134d5c){fileLogger('client')['error'](_0x134d5c);});};}function setupLoggers(_0x24f14d){return new Promise(function(_0x4582f4){var _0x2951d9=new ClientSideLogger();var _0x3e93af=fileLogger('api');var _0x5c6d84=fileLogger('auth');_0x24f14d['set']('client-side-logger',_0x2951d9);_0x24f14d[_0x569c('0x11')](ewinston[_0x569c('0x12')]({'winstonInstance':_0x3e93af,'meta':![],'statusLevels':!![],'msg':function(_0x21dee9,_0x38af7c){var _0xab026d='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x569c('0x13')](_0x21dee9[_0x569c('0x14')])){_0xab026d+='\x20body=%s';var _0x3bcf60=_0x21dee9[_0x569c('0x14')];maskSensitiveData(_0x3bcf60);}return safeTemplate(util[_0x569c('0x15')](_0xab026d,_0x21dee9[_0x569c('0x16')],_0x21dee9[_0x569c('0x17')]['x-forwarded-for']?_0x21dee9[_0x569c('0x17')][_0x569c('0x18')]:_0x21dee9['connection']['remoteAddress']||_0x21dee9['ip'],_0x21dee9[_0x569c('0x19')],_0x38af7c[_0x569c('0x1a')],_0x38af7c['responseTime'],_0x21dee9[_0x569c('0x1b')]?_0x21dee9[_0x569c('0x1b')]['id']:null,_0x21dee9[_0x569c('0x1b')]?_0x21dee9[_0x569c('0x1b')][_0x569c('0x1c')]:null,_0x21dee9['user']?_0x21dee9['user'][_0x569c('0x1d')]:null,_0x3bcf60?util[_0x569c('0x1e')](_0x3bcf60,![],null):''));}}));_0x24f14d[_0x569c('0x11')](ewinston['logger']({'winstonInstance':_0x5c6d84,'meta':![],'statusLevels':!![],'msg':function(_0x3b4e95,_0x306396){var _0x370095=_0x569c('0x1f');if(_0x3b4e95[_0x569c('0x14')]&&_0x3b4e95['body'][_0x569c('0x20')]&&_0x3b4e95['body'][_0x569c('0x21')]){_0x370095=_0x569c('0x22');}return util[_0x569c('0x15')](_0x370095,_0x3b4e95[_0x569c('0x16')],_0x3b4e95['headers'][_0x569c('0x18')]?_0x3b4e95['headers']['x-forwarded-for']:_0x3b4e95[_0x569c('0x23')][_0x569c('0x24')]||_0x3b4e95['ip'],_0x3b4e95[_0x569c('0x19')],_0x306396[_0x569c('0x1a')],_0x306396['responseTime'],_0x3b4e95['user']?_0x3b4e95[_0x569c('0x1b')]['id']:null,_0x3b4e95['user']?_0x3b4e95['user'][_0x569c('0x1c')]:null,_0x3b4e95[_0x569c('0x1b')]?_0x3b4e95[_0x569c('0x1b')][_0x569c('0x1d')]:null,_0x3b4e95[_0x569c('0x14')]&&_0x3b4e95[_0x569c('0x14')][_0x569c('0x20')]?_0x3b4e95[_0x569c('0x14')]['device']:_0x569c('0x25'),_0x3b4e95[_0x569c('0x14')]&&_0x3b4e95['body'][_0x569c('0x21')]?_0x3b4e95[_0x569c('0x14')][_0x569c('0x21')]:'',_0x3b4e95[_0x569c('0x14')]&&_0x3b4e95['body'][_0x569c('0x26')]?_0x3b4e95['body'][_0x569c('0x26')]:'');},'ignoreRoute':function(_0x2b3dea){var _0x117ba2=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x117ba2['test'](_0x2b3dea['url']);}}));return _0x4582f4();});}exports[_0x569c('0x27')]=setupLoggers;
\ No newline at end of file
index 4b783ac..3fcc893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6543=['replace','level','stringify','meta','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','Logger','Console','warn','transports','%s-%s','error','File','consoleLogger','fileLogger','path','moment','winston','debugLevel','redBG\x20white','red','bold\x20yellow','white','gray','bold\x20magenta','bold\x20blue','addColors','/var/log/xcally','join','format','%s-%s.log','message','{{{','}}}'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6543,0xbf));var _0x3654=function(_0x1e888a,_0x4ae459){_0x1e888a=_0x1e888a-0x0;var _0x2c0410=_0x6543[_0x1e888a];return _0x2c0410;};'use strict';var path=require(_0x3654('0x0'));var util=require('util');var moment=require(_0x3654('0x1'));var winston=require(_0x3654('0x2'));var config=require('../config/environment');var debugLevel=config[_0x3654('0x3')]?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':_0x3654('0x4'),'error':_0x3654('0x5'),'warn':_0x3654('0x6'),'info':_0x3654('0x7'),'print':'bold\x20white','success':'bold\x20green','http':_0x3654('0x8'),'verbose':_0x3654('0x9'),'debug':_0x3654('0xa'),'silly':'bold\x20cyan'};winston[_0x3654('0xb')](XC_LOG_COLORS);function getLogFileName(_0x335e12,_0x5c8ae5,_0x18b875){var _0x542efd=_0x335e12||_0x3654('0xc');return path[_0x3654('0xd')](_0x542efd,util[_0x3654('0xe')](_0x3654('0xf'),_0x5c8ae5,_0x18b875));}function formatter(_0x15a298,_0x2cc74d){_0x2cc74d[_0x3654('0x10')]=_0x2cc74d[_0x3654('0x10')]['replace'](/@@{/g,_0x3654('0x11'))['replace'](/}@@/g,_0x3654('0x12'))['replace'](/@{/g,'{{')[_0x3654('0x13')](/}@/g,'}}');return util[_0x3654('0xe')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x3654('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),_0x2cc74d[_0x3654('0x14')]['toUpperCase'](),_0x15a298,_0x2cc74d[_0x3654('0x10')]);}function fileFormat(_0x1c4a11,_0x4f7658){_0x4f7658['message']=_0x4f7658['message']['replace'](/@@{/g,_0x3654('0x11'))[_0x3654('0x13')](/}@@/g,_0x3654('0x12'))[_0x3654('0x13')](/@{/g,'{{')[_0x3654('0x13')](/}@/g,'}}');var _0x5a772b=_0x4f7658['meta']&&Object['keys'](_0x4f7658['meta'])['length']?'\x0a\x09'+JSON[_0x3654('0x15')](_0x4f7658[_0x3654('0x16')]):'';return util[_0x3654('0xe')](_0x3654('0x17'),moment()[_0x3654('0xe')](_0x3654('0x18')),_0x4f7658[_0x3654('0x14')][_0x3654('0x19')](),_0x1c4a11,_0x4f7658[_0x3654('0x10')],_0x5a772b);}function consoleLogger(){var _0x456a1f=new winston[(_0x3654('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x3654('0x1b'))]({'level':_0x3654('0x1c'),'json':![],'formatter':function(_0x2faa62){return formatter('',_0x2faa62);}})]});return _0x456a1f;}function fileLogger(_0x38c759,_0x55847f){var _0x4ea725=new winston[(_0x3654('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x3654('0x1d'))]['File']({'name':util[_0x3654('0xe')](_0x3654('0x1e'),_0x38c759,_0x3654('0x1f')),'filename':getLogFileName(_0x55847f,_0x38c759,_0x3654('0x1f')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x213dac){return fileFormat(_0x38c759,_0x213dac);}}),new winston['transports'][(_0x3654('0x20'))]({'name':util[_0x3654('0xe')](_0x3654('0x1e'),_0x38c759,debugLevel),'filename':getLogFileName(_0x55847f,_0x38c759,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x29faf1){return fileFormat(_0x38c759,_0x29faf1);}}),new winston[(_0x3654('0x1d'))][(_0x3654('0x1b'))]({'level':_0x3654('0x1c'),'json':![],'formatter':function(_0x10131b){return fileFormat(_0x38c759,_0x10131b);}})]});return _0x4ea725;}exports[_0x3654('0x21')]=consoleLogger;exports[_0x3654('0x22')]=fileLogger;
\ No newline at end of file
+var _0x01f7=['warn','%s-%s','error','File','consoleLogger','path','util','moment','winston','../config/environment','debugLevel','toLowerCase','info','redBG\x20white','red','bold\x20yellow','white','bold\x20white','bold\x20green','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','%s-%s.log','message','replace','{{{','}}}','format','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','meta','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','Console'];(function(_0x30b212,_0x754f88){var _0x40f19b=function(_0x26cdbe){while(--_0x26cdbe){_0x30b212['push'](_0x30b212['shift']());}};_0x40f19b(++_0x754f88);}(_0x01f7,0x107));var _0x701f=function(_0x7d9c0d,_0x165295){_0x7d9c0d=_0x7d9c0d-0x0;var _0x26a3c7=_0x01f7[_0x7d9c0d];return _0x26a3c7;};'use strict';var path=require(_0x701f('0x0'));var util=require(_0x701f('0x1'));var moment=require(_0x701f('0x2'));var winston=require(_0x701f('0x3'));var config=require(_0x701f('0x4'));var debugLevel=config['debugLevel']?config[_0x701f('0x5')][_0x701f('0x6')]():_0x701f('0x7');var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0x701f('0x8'),'error':_0x701f('0x9'),'warn':_0x701f('0xa'),'info':_0x701f('0xb'),'print':_0x701f('0xc'),'success':_0x701f('0xd'),'http':_0x701f('0xe'),'verbose':_0x701f('0xf'),'debug':_0x701f('0x10'),'silly':_0x701f('0x11')};winston[_0x701f('0x12')](XC_LOG_COLORS);function getLogFileName(_0x5379d5,_0x4858c0,_0x2ede1a){var _0x290ec3=_0x5379d5||_0x701f('0x13');return path[_0x701f('0x14')](_0x290ec3,util['format'](_0x701f('0x15'),_0x4858c0,_0x2ede1a));}function formatter(_0x47ffcd,_0x295499){_0x295499['message']=_0x295499[_0x701f('0x16')][_0x701f('0x17')](/@@{/g,_0x701f('0x18'))[_0x701f('0x17')](/}@@/g,_0x701f('0x19'))[_0x701f('0x17')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x701f('0x1a')](_0x701f('0x1b'),moment()[_0x701f('0x1a')](_0x701f('0x1c')),_0x295499[_0x701f('0x1d')][_0x701f('0x1e')](),_0x47ffcd,_0x295499[_0x701f('0x16')]);}function fileFormat(_0x15d51c,_0x8a2e72){_0x8a2e72['message']=_0x8a2e72[_0x701f('0x16')][_0x701f('0x17')](/@@{/g,_0x701f('0x18'))[_0x701f('0x17')](/}@@/g,_0x701f('0x19'))[_0x701f('0x17')](/@{/g,'{{')[_0x701f('0x17')](/}@/g,'}}');var _0x397a75=_0x8a2e72[_0x701f('0x1f')]&&Object['keys'](_0x8a2e72[_0x701f('0x1f')])[_0x701f('0x20')]?'\x0a\x09'+JSON[_0x701f('0x21')](_0x8a2e72[_0x701f('0x1f')]):'';return util[_0x701f('0x1a')](_0x701f('0x22'),moment()[_0x701f('0x1a')](_0x701f('0x1c')),_0x8a2e72[_0x701f('0x1d')]['toUpperCase'](),_0x15d51c,_0x8a2e72[_0x701f('0x16')],_0x397a75);}function consoleLogger(){var _0x5ad546=new winston[(_0x701f('0x23'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x701f('0x24'))][(_0x701f('0x25'))]({'level':_0x701f('0x26'),'json':![],'formatter':function(_0x41c748){return formatter('',_0x41c748);}})]});return _0x5ad546;}function fileLogger(_0x5df3c7,_0x420f82){var _0x264bc7=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x701f('0x24'))]['File']({'name':util[_0x701f('0x1a')](_0x701f('0x27'),_0x5df3c7,_0x701f('0x28')),'filename':getLogFileName(_0x420f82,_0x5df3c7,_0x701f('0x28')),'level':_0x701f('0x28'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1e3f02){return fileFormat(_0x5df3c7,_0x1e3f02);}}),new winston[(_0x701f('0x24'))][(_0x701f('0x29'))]({'name':util[_0x701f('0x1a')](_0x701f('0x27'),_0x5df3c7,debugLevel),'filename':getLogFileName(_0x420f82,_0x5df3c7,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3aff77){return fileFormat(_0x5df3c7,_0x3aff77);}}),new winston[(_0x701f('0x24'))][(_0x701f('0x25'))]({'level':_0x701f('0x26'),'json':![],'formatter':function(_0xe69a30){return fileFormat(_0x5df3c7,_0xe69a30);}})]});return _0x264bc7;}exports[_0x701f('0x2a')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
index 855623c..13aa4c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['replace','}@@','includes','exports','maskSensitiveData','lodash','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientSecret','code','accessKey','tenantId','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','accesskeyid','secretaccesskey','key','user','pass','accountSid','localstationid','dsn','secret','registry','isPlainObject','isArray','length','isString'];(function(_0x21f3bf,_0xfb0f59){var _0x249d08=function(_0x37e6c2){while(--_0x37e6c2){_0x21f3bf['push'](_0x21f3bf['shift']());}};_0x249d08(++_0xfb0f59);}(_0x4975,0x86));var _0x5497=function(_0xa9e4d0,_0x4520cc){_0xa9e4d0=_0xa9e4d0-0x0;var _0x399e45=_0x4975[_0xa9e4d0];return _0x399e45;};var _=require(_0x5497('0x0'));var sensitiveFields=['username',_0x5497('0x1'),_0x5497('0x2'),_0x5497('0x3'),_0x5497('0x4'),_0x5497('0x5'),_0x5497('0x6'),_0x5497('0x7'),_0x5497('0x8'),_0x5497('0x9'),_0x5497('0xa'),'clientId',_0x5497('0xb'),'securityToken',_0x5497('0xc'),_0x5497('0xd'),_0x5497('0xe'),'token',_0x5497('0xf'),'accessToken',_0x5497('0x10'),_0x5497('0x11'),_0x5497('0x12'),_0x5497('0x13'),_0x5497('0x14'),_0x5497('0x15'),_0x5497('0x16'),_0x5497('0x17'),'vidaooApiKey','clientEmail','privateKey',_0x5497('0x18'),_0x5497('0x19'),_0x5497('0x1a'),_0x5497('0x1b'),_0x5497('0x1c'),_0x5497('0x1d'),_0x5497('0x1e'),_0x5497('0x1f'),_0x5497('0x20'),_0x5497('0x21'),'oldPassword'];function maskSensitiveData(_0x11b0a9){const _0x4fb8e9=/(?!^)[\s\S](?!$)/g;if(_[_0x5497('0x22')](_0x11b0a9)){for(const _0x2bfd8a in _0x11b0a9){if(_[_0x5497('0x23')](_0x11b0a9[_0x2bfd8a])){for(let _0x3ce50b=0x0;_0x3ce50b<_0x11b0a9[_0x2bfd8a][_0x5497('0x24')];_0x3ce50b++){maskSensitiveData(_0x11b0a9[_0x2bfd8a][_0x3ce50b]);}}else if(_[_0x5497('0x22')](_0x11b0a9[_0x2bfd8a])){maskSensitiveData(_0x11b0a9[_0x2bfd8a]);}else if(_[_0x5497('0x25')](_0x11b0a9[_0x2bfd8a])){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a]['replace'](/{{{/g,'@@{')[_0x5497('0x26')](/}}}/g,_0x5497('0x27'))[_0x5497('0x26')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x5497('0x28')](sensitiveFields,_0x2bfd8a)){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a][_0x5497('0x26')](_0x4fb8e9,'*');}}}}}module[_0x5497('0x29')][_0x5497('0x2a')]=maskSensitiveData;
\ No newline at end of file
+var _0x5f2f=['tenantId','token','channelSecret','accessTokenSecret','authToken','consumerKey','membername','exten','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','key','user','pass','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','length','isString','replace','@@{','}@@','includes','exports','lodash','username','password','newPassword','apiKey','firstName','lastName','street','fax','email','clientId','clientSecret','securityToken','code'];(function(_0x11f4c7,_0x233ca6){var _0x246c92=function(_0x398c64){while(--_0x398c64){_0x11f4c7['push'](_0x11f4c7['shift']());}};_0x246c92(++_0x233ca6);}(_0x5f2f,0x73));var _0xf5f2=function(_0x38e346,_0x42d04d){_0x38e346=_0x38e346-0x0;var _0x57246a=_0x5f2f[_0x38e346];return _0x57246a;};var _=require(_0xf5f2('0x0'));var sensitiveFields=[_0xf5f2('0x1'),_0xf5f2('0x2'),_0xf5f2('0x3'),_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),_0xf5f2('0x7'),'phone','mobile',_0xf5f2('0x8'),_0xf5f2('0x9'),_0xf5f2('0xa'),_0xf5f2('0xb'),_0xf5f2('0xc'),_0xf5f2('0xd'),'accessKey',_0xf5f2('0xe'),_0xf5f2('0xf'),_0xf5f2('0x10'),'accessToken',_0xf5f2('0x11'),_0xf5f2('0x12'),_0xf5f2('0x13'),'consumerSecret',_0xf5f2('0x14'),'calleridname','calleridnum',_0xf5f2('0x15'),_0xf5f2('0x16'),'clientEmail',_0xf5f2('0x17'),_0xf5f2('0x18'),_0xf5f2('0x19'),_0xf5f2('0x1a'),_0xf5f2('0x1b'),_0xf5f2('0x1c'),'accountSid',_0xf5f2('0x1d'),_0xf5f2('0x1e'),_0xf5f2('0x1f'),_0xf5f2('0x20'),_0xf5f2('0x21')];function maskSensitiveData(_0x4d97fc){const _0xafe430=/(?!^)[\s\S](?!$)/g;if(_[_0xf5f2('0x22')](_0x4d97fc)){for(const _0x17d656 in _0x4d97fc){if(_[_0xf5f2('0x23')](_0x4d97fc[_0x17d656])){for(let _0x23e23a=0x0;_0x23e23a<_0x4d97fc[_0x17d656][_0xf5f2('0x24')];_0x23e23a++){maskSensitiveData(_0x4d97fc[_0x17d656][_0x23e23a]);}}else if(_[_0xf5f2('0x22')](_0x4d97fc[_0x17d656])){maskSensitiveData(_0x4d97fc[_0x17d656]);}else if(_[_0xf5f2('0x25')](_0x4d97fc[_0x17d656])){_0x4d97fc[_0x17d656]=_0x4d97fc[_0x17d656][_0xf5f2('0x26')](/{{{/g,_0xf5f2('0x27'))[_0xf5f2('0x26')](/}}}/g,_0xf5f2('0x28'))[_0xf5f2('0x26')](/{{/g,'@{')[_0xf5f2('0x26')](/}}/g,'}@');if(_[_0xf5f2('0x29')](sensitiveFields,_0x17d656)){_0x4d97fc[_0x17d656]=_0x4d97fc[_0x17d656][_0xf5f2('0x26')](_0xafe430,'*');}}}}}module[_0xf5f2('0x2a')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
index cd2debf..1e86538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4213=['{\x20{\x20','\x20}\x20}','string','isArray','isPlainObject','keys','reduce','exports','safeTemplate','lodash'];(function(_0x2f4a11,_0x212125){var _0x1cb388=function(_0x135967){while(--_0x135967){_0x2f4a11['push'](_0x2f4a11['shift']());}};_0x1cb388(++_0x212125);}(_0x4213,0x77));var _0x3421=function(_0x5f5085,_0x3b2cb8){_0x5f5085=_0x5f5085-0x0;var _0x246c4a=_0x4213[_0x5f5085];return _0x246c4a;};var _=require(_0x3421('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x445ef6){return _0x445ef6==='{{'?_0x3421('0x1'):_0x3421('0x2');}function safeTemplate(_0x2613b6){var _0x153f3a=_0x2613b6;if(typeof _0x2613b6===_0x3421('0x3')){_0x153f3a=_0x2613b6['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x3421('0x4')](_0x2613b6)){_0x153f3a=_0x2613b6['map'](function(_0x459c5e){return safeTemplate(_0x459c5e);});}else if(_[_0x3421('0x5')](_0x2613b6)){_0x153f3a=Object[_0x3421('0x6')](_0x2613b6)[_0x3421('0x7')](function(_0x5469d8,_0x50e464){_0x5469d8[_0x50e464]=safeTemplate(_0x2613b6[_0x50e464]);return _0x5469d8;},{});}return _0x153f3a;}module[_0x3421('0x8')][_0x3421('0x9')]=safeTemplate;
\ No newline at end of file
+var _0xb7e7=['reduce','safeTemplate','lodash','{\x20{\x20','string','isArray','map'];(function(_0x43e792,_0xa8168a){var _0x1f750e=function(_0x46ccf8){while(--_0x46ccf8){_0x43e792['push'](_0x43e792['shift']());}};_0x1f750e(++_0xa8168a);}(_0xb7e7,0x121));var _0x7b7e=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0xb7e7[_0xac151d];return _0x111dba;};var _=require(_0x7b7e('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x545d7d){return _0x545d7d==='{{'?_0x7b7e('0x1'):'\x20}\x20}';}function safeTemplate(_0x1b7cc7){var _0x54a37f=_0x1b7cc7;if(typeof _0x1b7cc7===_0x7b7e('0x2')){_0x54a37f=_0x1b7cc7['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x7b7e('0x3')](_0x1b7cc7)){_0x54a37f=_0x1b7cc7[_0x7b7e('0x4')](function(_0x1d9384){return safeTemplate(_0x1d9384);});}else if(_['isPlainObject'](_0x1b7cc7)){_0x54a37f=Object['keys'](_0x1b7cc7)[_0x7b7e('0x5')](function(_0x372bde,_0x7f87e0){_0x372bde[_0x7f87e0]=safeTemplate(_0x1b7cc7[_0x7f87e0]);return _0x372bde;},{});}return _0x54a37f;}module['exports'][_0x7b7e('0x6')]=safeTemplate;
\ No newline at end of file